omake-0.9.8.5/0000775000152300015230000000000010660137256011141 5ustar jyhjyhomake-0.9.8.5/LICENSE.OMake0000664000152300015230000000273010464477526013154 0ustar jyhjyh OMake terms and conditions. July 15, 2006 The OMake program is distributed under licensing terms described in each source file. Generally speaking, this means that one of three licenses are used. The libmojave library is distributed under the terms if the GNU Lesser General Public License (LGPL). See the file LICENSE.libmojave for more details. The OMake scripts are distributed under the terms of the MIT license. The MIT license applies only to the portion of OMake where the MIT license is specifically indicated in the source code. The OMake program is distributed under terms of the GNU General Public License as published by the Free Software Foundation, version 2 of the License. The license is distributed in the file LICENSE. In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the Objective Caml runtime, under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than Objective Caml. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. omake-0.9.8.5/Makefile0000664000152300015230000000203010624346500012566 0ustar jyhjyh# # For bootstrapping # .PHONY: all bootstrap install default # # Bootstrap program is omake-boot # default: @echo "If you have already built omake, you should use it instead of make." @echo "If you need to bootstrap, use " @echo " - 'make bootstrap'," @echo " to build the bootstrapping (feature-limited) OMake binary './omake-boot'." @echo " - 'make all'," @echo " to bootstrap and then build everything" @echo " - 'make install'," @echo " to bootstrap, build, and install everything" @exit 1 bootstrap: boot/Makefile @cd boot; $(MAKE) Makefile.dep; $(MAKE) omake @ln -sf boot/omake omake-boot boot/Makefile: src/Makefile mkdir -p boot @touch boot/Makefile.dep @sleep 1 ln -sf ../src/Makefile boot/Makefile all: bootstrap touch .config OMAKEFLAGS= OMAKEPATH=lib ./omake-boot --dotomake .omake --force-dotomake -j2 main OMAKEFLAGS= OMAKEPATH=lib src/main/omake --dotomake .omake --force-dotomake -j2 all install: all OMAKEFLAGS= OMAKEPATH=lib src/main/omake --dotomake .omake --force-dotomake -j2 install omake-0.9.8.5/mk/0000775000152300015230000000000010660137256011550 5ustar jyhjyhomake-0.9.8.5/mk/defaults0000664000152300015230000000711510607475266013315 0ustar jyhjyh# # Default values for the configuration variables # # # Name of the config file # public.CONFIG_FILE = $(file $(ROOT)/.config) # # Figure it out where ocaml is installed # public.CAMLLIB_DEFAULT = $(shell ocamlc -where) # # Default installation path: check the environment (and the registry on Windows). # On Unix, use /usr/local by default. # public.PREFIX = getenv(PREFIX) get-registry(HKEY_CURRENT_USER, Software\MetaPRL\OMake, OMAKEDIR) get-registry(HKEY_LOCAL_MACHINE, Software\MetaPRL\OMake, OMAKEDIR) private.PREFIX = $(get-registry HKEY_LOCAL_MACHINE, Software\Microsoft\Windows\CurrentVersion, ProgramFilesDir, false) if $(PREFIX) value $(PREFIX)\OMake else value $(if $(equal $(OSTYPE), Win32), C:\OMake, /usr/local) PREFIX = $(dir $"$(PREFIX)") public.BINDIR = $(dir $"$(getenv BINDIR, $(PREFIX)/bin)") public.LIBDIR = $(dir $"$(getenv LIBDIR, $(PREFIX)/lib)") public.DEFAULT_SAVE_INTERVAL = $(if $(equal $(OSTYPE), Win32), 15, 60) # # Profiling is disabled by default # public.NATIVE_PROFILE = false # # C compiler and flags - check the environment # CC = $(getenv CC, $(CC)) CFLAGS = $(getenv CFLAGS, $(EMPTY)) if $(file-exists $(CONFIG_FILE)) include $(CONFIG_FILE) export if $(file-exists $(CONFIG_FILE).local) include $(CONFIG_FILE).local export # # Configure # open configure/fam open configure/readline open configure/ncurses public.FAM_ENABLED = $(FAM_AVAILABLE) public.READLINE_ENABLED = $(READLINE_AVAILABLE) public.NCURSES_ENABLED = $(NCURSES_AVAILABLE) # # ocamldep -modules is enabled by default. # OCAMLDEP_MODULES_ENABLED = $(OCAMLDEP_MODULES_AVAILABLE) include mk/make_config if $(file-exists $(CONFIG_FILE)) include $(CONFIG_FILE) export PREFIX = $(dir $"$(PREFIX)") BINDIR = $(dir $"$(BINDIR)") LIBDIR = $(dir $"$(LIBDIR)") # # XXX This is a big hack. # section PREFIX = $(dir $(PREFIX)) INSTALL_ROOT = $(getenv INSTALL_ROOT, $(EMPTY)) INSTALL_PREFIX = $(dir $(getenv PREFIX, $(PREFIX))) if $(INSTALL_ROOT) INSTALL_BINDIR=$(dir $(INSTALL_ROOT)$(absname $(BINDIR))) INSTALL_LIBDIR=$(dir $(INSTALL_ROOT)$(absname $(LIBDIR))) export elseif $(not $(equal $(INSTALL_PREFIX), $(PREFIX))) eprintln($""" !!! WARNING !!! Your environment variable "PREFIX" points to $(absname $(INSTALL_PREFIX)) but the PREFIX variable in .config points to $(absname $(PREFIX)). I am guessing you are using a packaging system (like GODI) that means the two to be different, want the installation to happen in $(absname $(INSTALL_PREFIX)) and will then relocate files to $(absname $(PREFIX)). If this is wrong, please make sure your PREFIX variables agree or remove the PREFIX variable from your environment. """) INSTALL_BINDIR=$(dir $(getenv BINDIR, $(INSTALL_PREFIX)/bin)) INSTALL_LIBDIR=$(dir $(getenv LIBDIR, $(INSTALL_PREFIX)/lib)) export else INSTALL_BINDIR=$(dir $(getenv BINDIR, $(BINDIR))) INSTALL_LIBDIR=$(dir $(getenv LIBDIR, $(LIBDIR))) export export INSTALL_BINDIR INSTALL_LIBDIR if $(not $(file-exists $(CONFIG_FILE))) eprintln($(CONFIG_FILE) does not exist) MakeConfig($(CONFIG_FILE)) eprintln($"""!!!!! A new config file '$(CONFIG_FILE)' was created for you. !!!!! In that file, we filled in a number of default values for you. !!!!! You may want to edit the '$(CONFIG_FILE)' file before continuing. !!!!! !!!!! After you are done, run omake again to continue the build process.""") exit(0) .INCLUDE: $(CONFIG_FILE): mk/make_config MakeConfig($(CONFIG_FILE)) omake-0.9.8.5/mk/make_gen0000664000152300015230000002050110615245377013243 0ustar jyhjyh# # Wrap the standard commands so that we can # produce a standard Makefile for bootstrapping. # BOOT = $(dir $(ROOT)/boot) MAKEFILE_TEXT = MAKEFILE_LINK = MAKEFILE_DONT_LINK = MAKEFILE_EXPLICIT_LINK = private.slash = $'$(slash)' private.ext_obj = $'$(EXT_OBJ)' private.ext_lib = $'$(EXT_LIB)' ######################################################################## # Linking # # # Specify explicit linking. # MakeDontLink(files) = MAKEFILE_DONT_LINK += $(files) export MakeLinkFile(dst, src) = private.cwd = $(in $(BOOT), $(CWD)) private.cwd = $(split \/, $(private.cwd)) private.cwd = $(concat $(slash), $(private.cwd)) private.src = $(split \/, $(private.src)) private.src = $(concat $(slash), $(private.src)) private.srcfile = $"$(cwd)$(slash)$(private.src)" MAKEFILE_TEXT += $""" $(dst): $(srcfile) $$(LN) $(srcfile) $(dst) """ MAKEFILE_EXPLICIT_LINK += $(dst) export MakeLinkExternalFile(dst, src) = # Record the link MakeLinkFile($(dst), $(src)) # Perform the link $(dst): $(src) ln-or-cp $< $@ export MakeLinkFiles(files) = foreach(name, $(files)) MakeLinkFile($(name), $(name)) export export MakeLinkExternal(srcdir, files) = foreach(name, $(files)) # Record the link MakeLinkFile($(name), $(srcdir)/$(name)) # Perform the link $(name): $(srcdir)/$(name) ln-or-cp $< $@ export export ######################################################################## # C # MakeStaticCLibrary(name, files) = StaticCLibrary($(name), $(files)) private.cfiles = $(addsuffix .c, $(files)) private.hfiles = $(filter-exists $(addsuffix .h, $(files))) private.ofiles = $(addsuffix $(ext_obj), $(files)) MAKEFILE_LINK += $(cfiles) $(hfiles) MAKEFILE_TEXT += $""" OFILES_$(name) = $(ofiles) $(name)$$(EXT_LIB): $$(OFILES_$(name)) -$$(RM) $$@ $$(AR) $$(AROUT)$$@ $$(OFILES_$(name)) """ export ######################################################################## # OCaml # # # Generate a program. # MakeOCamlProgram(name, files) = OCamlProgram($(name), $(files)) private.mlfiles = $(addsuffix .ml, $(files)) private.mlifiles = $(filter-exists $(addsuffix .mli, $(files))) private.cmofiles = $(addsuffix .cmo, $(files)) private.ocaml_libs = $(addsuffix .cma, $(basename $(OCAML_LIBS))) private.ocaml_other_libs = $(addsuffix .cma, $(OCAML_OTHER_LIBS)) private.ocaml_other_libs = $(set-diff $(ocaml_other_libs), threads.cma) private.ocaml_clibs = $(addsuffix $(ext_lib), $(basename $(OCAML_CLIBS))) private.ocaml_cclibs = $(mapprefix -cclib, $(ocaml_clibs)) MAKEFILE_LINK += $(mlfiles) $(mlifiles) MAKEFILE_TEXT += $""" CMOFILES_$(name) = $(cmofiles) OCAML_LIBS_$(name) = $(ocaml_libs) OCAML_OTHER_LIBS_$(name) = $(ocaml_other_libs) OCAML_CLIBS_$(name) = $(ocaml_clibs) OCAML_CCLIBS_$(name) = $(ocaml_cclibs) $(name)$$(EXE): $$(CMOFILES_$(name)) $$(OCAML_LIBS_$(name)) $$(OCAML_CLIBS_$(name)) $$(OCAMLC) $$(OCAMLFLAGS) -custom -o $$@ $$(OCAML_CCLIBS_$(name)) $$(OCAML_OTHER_LIBS_$(name)) $$(THREADSLIB) $$(OCAML_LIBS_$(name)) $$(CMOFILES_$(name)) """ export # # Generate a library. # MakeOCamlLibrary(name, files) = OCamlLibrary($(name), $(files)) private.mlfiles = $(addsuffix .ml, $(files)) private.mlifiles = $(filter-exists $(addsuffix .mli, $(files))) private.cmofiles = $(addsuffix .cmo, $(files)) MAKEFILE_LINK += $(mlfiles) $(mlifiles) MAKEFILE_TEXT += $""" CMOFILES_$(name) = $(cmofiles) OCAML_LIB_FLAGS_$(name) = $(OCAML_LIB_FLAGS) $(name).cma: $$(CMOFILES_$(name)) $$(OCAMLC) $$(OCAMLFLAGS) $$(OCAML_LIB_FLAGS_$(name)) -a -o $$@ $$(CMOFILES_$(name)) """ export # # Add some dependencies (the make version of depend is rough) # MakeOCamlDepend(files, deps) = private.mlifiles = $(filter-exists $(addsuffix .mli, $(files))) private.cmofiles = $(addsuffix .cmo, $(files)) private.cmifiles = $(addsuffix .cmi, $(removesuffix $(mlifiles))) MAKEFILE_TEXT += $""" $(cmofiles) $(cmifiles): $(deps) """ export # # Finish generating the Makefile text. # MakeText() = private.cwd = $(in $(BOOT), $(CWD)) private.base = $(basename $(cwd)) private.cwd = $(split \/, $(cwd)) private.cwd = $(concat $(slash), $(cwd)) private.links = $(set $(MAKEFILE_LINK)) private.implicit-links = $(set-diff $(links), $(MAKEFILE_DONT_LINK) $(MAKEFILE_EXPLICIT_LINK)) private.makefiledep_deps = $(set-diff $(MAKEFILE_DONT_LINK), omake_magic.ml) if $(makefiledep_deps) MAKEFILE_TEXT += $""" Makefile.dep: $(makefiledep_deps) """ export MAKEFILE_TEXT += $""" SRC_$(base) = $(cwd) """ # # Link all the files # foreach(name, $(implicit-links)) srcfile = $"$$(SRC_$(base))$$(slash)$(name)" MAKEFILE_TEXT += $""" $(name): $(srcfile) $$(LN) $(srcfile) $(name) """ export # # Save the link listing # MAKEFILE_TEXT += $""" ALLFILES_$(base) = $(implicit-links) $(MAKEFILE_EXPLICIT_LINK) """ return $(MAKEFILE_TEXT) # # Write to the Makefile # MakeMakefile() = private.text = $(MakeText) Makefile.tmp: :value: $(text) @echo $(text) > $@ ######################################################################## # Global Makefile generation # # # Header file for Unix # private.MAKEFILE_HEAD_UNIX = $'''# # !!!THIS IS A GENERATED FILE!!! # !!!DO NOT MAKE CHANGES HERE, THEY WILL BE LOST!!! # .PHONY: depend clean # # System config # LN = ln -sf RM = rm -f DOT = ./ slash = / win32 = unix system = null # # C configuration # CC = cc CFLAGS = AR = ar cq AROUT = EXT_OBJ = .o EXT_LIB = .a EXE = OCAMLFLAGS = THREADSLIB = .SUFFIXES: .mll .mly .mli .ml .c .cmi .cmo .cma .o .c.o: $(CC) $(CFLAGS) -I"`ocamlc -where`" -c $*.c ''' private.MAKEFILE_HEAD_NT = $'''# # !!!THIS IS A GENERATED FILE!!! # !!!DO NOT MAKE CHANGES HERE, THEY WILL BE LOST!!! # # # Generic "nmake" configuration for bootstrapping. # LN = copy /Y RM = del /F DOT = slash = \\ win32 = win32 system = system # # C configuration # CC = cl CFLAGS = /nologo /MT -I"$(OCAMLLIB)" /DWIN32 /DFAM_ENABLED /DFAM_PSEUDO AR = lib /nologo /debugtype:CV AROUT = /out: EXT_OBJ = .obj EXT_LIB = .lib EXE = .exe OCAMLFLAGS = -thread THREADSLIB = threads.cma .SUFFIXES: .mll .mly .mli .ml .cmi .cmo .c.obj: $(CC) $(CFLAGS) -c $*.c ''' private.MAKEFILE_HEAD_COMMON = $''' # # OCaml configuration # OCAMLC = ocamlc OCAMLYACC = ocamlyacc OCAMLLEX = ocamllex OCAMLDEP = ocamldep .mly.ml: $(OCAMLYACC) $*.mly .mly.mli: $(OCAMLYACC) $*.mly .mll.ml: $(OCAMLLEX) $*.mll .mli.cmi: $(OCAMLC) $(OCAMLFLAGS) -c $*.mli .ml.cmo: $(OCAMLC) $(OCAMLFLAGS) -c $*.ml # # The version.txt file # version.txt: @echo 0.0.boot > $@ ''' private.MAKEFILE_TAIL_COMMON = $''' # # Create a dependency file # Makefile.dep: $(ALLFILES) $(OCAMLDEP) $(OCAMLINCLUDES) *.ml *.mli > Makefile.dep # # Clean up # clean: $(RM) *.cmo *.cmx *.cma *.cmxa *.o *.obj *.a *.lib *.exe $(RM) $(ALLFILES) $(RM) omake ''' private.MAKEFILE_TAIL_UNIX = $''' include Makefile.dep ''' private.MAKEFILE_TAIL_NT = $''' !INCLUDE Makefile.dep ''' MakeRootMakefiles(dirs) = MAKEFILES = $(addsuffix /Makefile.tmp, $(dirs)) ALLFILES_names = $(add-wrapper $'$(ALLFILES_', $')', $(dirs)) ALLFILES = $"ALLFILES = $(ALLFILES_names)" # # Fix up output from latex2man so that it does # not have trailing whitespace. # remove-trailing-whitespace(src, dst) = stdout = $(fopen $(dst), wb) fsubst($(src)) case $'[ \t]+$' value close($(stdout)) tmp1 = Makefile.tmp1 tmp2 = Makefile.tmp2 tmp3 = Makefile.tmp3 tmp4 = Makefile.tmp4 Makefile: $(MAKEFILES) @echo $(MAKEFILE_HEAD_UNIX) > $(tmp1) @echo $(MAKEFILE_HEAD_COMMON) >> $(tmp1) @cat $(MAKEFILES) >> $(tmp1) @echo $(ALLFILES) >> $(tmp1) @echo $(MAKEFILE_TAIL_COMMON) >> $(tmp1) @echo $(MAKEFILE_TAIL_UNIX) >> $(tmp1) remove-trailing-whitespace($(tmp1), $(tmp2)) @mv -f $(tmp2) $@ @chmod 444 $@ Makefile.nt: $(MAKEFILES) @echo $(MAKEFILE_HEAD_NT) > $(tmp3) @echo $(MAKEFILE_HEAD_COMMON) >> $(tmp3) @cat $(MAKEFILES) >> $(tmp3) @echo $(ALLFILES) >> $(tmp3) @echo $(MAKEFILE_TAIL_COMMON) >> $(tmp3) @echo $(MAKEFILE_TAIL_NT) >> $(tmp3) remove-trailing-whitespace($(tmp3), $(tmp4)) @mv -f $(tmp4) $@ @chmod 444 $@ .DEFAULT: Makefile Makefile.nt omake-0.9.8.5/mk/make_config0000664000152300015230000000730110627633711013736 0ustar jyhjyh# # If you add a new variable to this file (mk/make_config), # make sure to also add a default value to mk/defaults. # # # Function to generate the config file # MakeConfig(CONFIG_FILE) = # # If possible, express PREFIX subdirs via $(PREFIX)/... # if $(equal $(BINDIR), $(dir $(PREFIX)/bin)) BINDIR = $'$(PREFIX)/bin' export if $(equal $(LIBDIR), $(dir $(PREFIX)/lib)) LIBDIR = $'$(PREFIX)/lib' export CONFIG = $"""\ # Main OMake configuration file. # # This file ($(CONFIG_FILE)) is generated by omake using mk/make_config. # If you want to change anything except for the variable values, # put it into $(CONFIG_FILE).local. # # # Where is the install location? OMake installs files into the # following directories. # BINDIR: program executables # LIBDIR: omake standard library # PREFIX = $$(dir $$'$(PREFIX)') BINDIR = $$(dir $$"$(BINDIR)") LIBDIR = $$(dir $$"$(LIBDIR)") # # What C compiler do you want to use? # By default, the C compiler is "cc", unless "gcc" is found on your system. # CC = $(CC) CFLAGS = $(CFLAGS) # # Do you want native and/or byte code? # By default, we make native code. If you want # byte code, set it to true. # NATIVE_ENABLED = $(NATIVE_ENABLED) BYTE_ENABLED = $(BYTE_ENABLED) """$(if $(READLINE_AVAILABLE), $""" # # Do you want to include readline for the interactive shell? # Your system appears to support readline, so this is enabled by default. # READLINE_ENABLED = $(READLINE_ENABLED) """, $""" # # Your system does not appear to have the readline library development files # installed, readline support in the interactive shell will not be available. # """)$(if $(NCURSES_AVAILABLE), $""" # # Do you want to include terminal information (terminfo) capabilities? # Your system appears to support ncurses, so this is enabled by default. # NCURSES_ENABLED = $(NCURSES_ENABLED) """, $""" # # Your system does not appear to have the ncurses library development files # installed, terminal information (terminfo) capabilities will not be available. # """)$(if $(FAM_AVAILABLE), $""" # # Do you want to include filesystem monitoring? This will enable the # omake -P and -p options, which are quite useful. # Your system appears to support this functionality (via FAM, Gamin, kqueue, or Win32). # FAM_ENABLED = $(FAM_ENABLED) """, $""" # # Your system does not appear to support filesystem monitoring (either FAM library, # or Gamin library, or Kqueue event interface). Omake's -P and -p options will not # be available. # """)$""" # # By default, how often should the .omakedb database be saved (in seconds, can be # a floating point number). # DEFAULT_SAVE_INTERVAL = $(DEFAULT_SAVE_INTERVAL) """$(if $(OCAMLDEP_MODULES_AVAILABLE), $""" # # The OCAMLDEP_MODULES_ENABLED variable specifies whether to use the -modules # option to ocamldep. Dependency analysis is much better with this option, # but it is also a little slower. Also, the -modules option is only # available with the standard OCaml distribution starting with the 3.10 release. # OMake includes a patched ocamldep, in case you want to use it with an older release # of OCaml. # OCAMLDEP_MODULES_ENABLED = $(OCAMLDEP_MODULES_ENABLED) """, $""" # # Your system does not seem to have a version of the ocamldep that supports the # new -modules option. Will use the traditional (potentially less precise) # dependency analysis. # # OCAMLDEP_MODULES_ENABLED is false """)$""" # # Do you want to enable native-code profiling? # Unless you really care, you should leave this disabled. # NATIVE_PROFILE = $(NATIVE_PROFILE) """ # Save the text in the output file exists = $(file-exists $(CONFIG_FILE)) if $(exists) eprintln(Updating the $(CONFIG_FILE) file.) fprint($(CONFIG_FILE), $(CONFIG)) omake-0.9.8.5/INSTALL0000664000152300015230000001035310624346500012166 0ustar jyhjyh-*- Mode: text; fill-column: 70 -*- omake is designed to build itself. Of course you must be wondering how we build in the first place! If you already have a working copy of omake (for instance, by downloading and installing it from somewhere else like omake.metaprl.org), then you should use your working copy to do the bootstrap. Otherwise, let's assume you do don't have omake already installed and you want to build it. -- Bootstrapping -- Bootstrapping is setup to use "make" or "nmake". By using one of these other tools, you can build a limited byte-code version of omake that you can then use to complete the install. NOTE: The bootstrap uses the file src/Makefile and src/Makefile.nt with default options, like CC=cc. If something goes wrong, you can edit these files by hand to suit your taste. However, the src/Makefiles are generated, and they will be clobbered when you run omake for the first time. To be safe, if you decide to modify them, save your changes in some safe place, not /tmp. -- Unix, MacOS X, Cygwin bootstrap -- You can use "make" to build a bootstrap version of omake. Run % make bootstrap to build the omake-boot executable. This should work with classic make; there should be no need to use GNU make. If you have it, GNU make will work fine. If you are going to compile OMake with the default options, you can use make to both bootstrap and build omake: % make all or even bootstrap, build, and install it: % make install Environment variables: - PREFIX (make all, make install) specifies the prefix for OMake installation (defaults to /usr/local) - INSTALL_ROOT (make install) specifies a "packaging root" for the installation. Namely, omake will be installed under $INSTALL_ROOT$PREFIX, but the omake binary will be compiled to look for its files under $PREFIX. -- Win32 bootstrap -- The native Win32 build is faster than a Cygwin executable; it is recommended. However, no matter what you do, execution times on Win32 will be substantially longer than on Unix (I'm not sure why; I'm guessing that Win32 is a pig). NOTE: Note that if you call any native executable from a Cygwin shell, and you signal it (for example, with control-C), Cygwin immediately terminates the process. This is a well-known problem with Cygwin. It also means that when you abort omake from a Cygwin shell, it will not have a chance to save its work. Next time you run omake, it will have forgotten everything it did before you aborted it. Please complain to the Cygwin people at www.cygwin.com if you would like this to change. Please be nice. They already know about this issue. One way to avoid this problem is to run omake from a dos-prompt. You can also run osh in a console window if you want a usable shell. For a native Win32 build, you will need the native Win32 version of OCaml, Visual C++, and the Microsoft macro assembler. See www.ocaml.org if you want to know where to get the macro assembler "ml". It once came with Visual C++, but as far as I know, this is no longer true. "nmake" is Microsoft's attempt at a build tool. It is part of Visual C++. To run it, use the following command from a dos prompt. dos> nmake -f Makefile.nt bootstrap This will build the omake-boot executable, which you can use to finish the installation. -- Finishing the install -- Let's assume that you have successfully created the omake-boot executable. To complete the install, run % ./omake-boot or dos> omake-boot After some configuration message, you should now get a message telling you that a .config file was just created, and you should edit it. You should either edit the .config, or leave it like it is. The defaults should be pretty reasonable for your machine, but take a look if you are curious. When you are ready, run omake-boot again to build the real version of omake. If you like, you can run % ./omake-boot install or dos> omake-boot install to install it. At this point, you are done. NOTE: You can continue to use omake-boot for building omake, but you are probably better off using an installed version, or src/main/omake. This is mainly for Win32, where the byte-code omake-boot is not nearly as fast as the native-code src/main/omake. omake-0.9.8.5/lib/0000775000152300015230000000000010660137255011706 5ustar jyhjyhomake-0.9.8.5/lib/parse/0000775000152300015230000000000010660137255013020 5ustar jyhjyhomake-0.9.8.5/lib/parse/C/0000775000152300015230000000000010660137256013203 5ustar jyhjyhomake-0.9.8.5/lib/parse/C/Parse.om0000664000152300015230000023103510615701364014613 0ustar jyhjyh# # Lexer for C code # open parse/C/Lex private. = semi = $";" space = $" " tab = $" " tnl = $(nl)$(tab) comma = $", " eof = $"\\'" empty[] = ######################################################################## # This is all the info we collect on the side. # protected. = TypeTable. = extends $(Map) protected. = name = type protected. = to-string() = s = this.foreach(v, ty) s = $(s)$"/* $(name) $(v) = $(ty.to-string); */$(nl)" export value $(s) # For constructing type names name-index = 0 # For prettier printing of struct names PRINT_NAME = false # Used to decide when removal of type qualifiers is allowed IS_POINTER = false IS_EXTERN = false public. = # # Are we parsing C++? # NOTE: only the C fragment of C++ and references are currently supported. # Cxx = false # # The public types and parser # public. = Base. = class Base protected.loc = protected. = make-loc() = protected.loc = $(loc) return $(this) array-to-string(l) = s = foreach(x, $(l)) s = $(s)$(x.to-string) export value $(s) array-to-string-pre(l, pre) = s = foreach(x, $(l)) s = $(s)$(pre)$(x.to-string) export value $(s) array-to-string-wrap(l, pre, post) = s = foreach(x, $(l)) s = $(s)$(pre)$(x.to-string)$(post) export value $(s) array-to-string-term(l, term) = s = foreach(x, $(l)) s = $(s)$(x.to-string)$(term) export value $(s) array-to-string-sep(l, sep) = s = sepx = foreach(x, $(l)) s = $(s)$(sepx)$(x.to-string) sepx = $(sep) export value $(s) array-to-identifier-term(l, term) = s = foreach(x, $(l)) s = $(s)$(x.to-identifier)$(term) export value $(s) array-to-identifier-sep(l, sep) = s = sepx = foreach(x, $(l)) s = $(s)$(sepx)$(x.to-identifier) sepx = $(sep) export value $(s) ######################################################################## # A complete program # Prog. = class Prog extends $(Base) protected. = defs = $(empty) typedefs. = extends $(TypeTable) name = typedef structs. = extends $(TypeTable) name = struct tagged-unions. = extends $(TypeTable) name = __tagged_union enums. = extends $(TypeTable) name = enum # # Info about the anonymous types # type-names. = extends $(Map) anon-struct-types = $(empty) anon-enum-types = $(empty) protected. = # # Adding to the tables # add-defs(defs) = this.defs = $(defs) return $(this) add-struct(name, info) = structs = $(structs.add $(name), $(info)) return $(this) add-tagged-union(name, info) = tagged-unions = $(tagged-unions.add $(name), $(info)) return $(this) add-enum(name, info) = enums = $(enums.add $(name), $(info)) return $(this) add-typedef(name, def) = typedefs = $(typedefs.add $(name), $(def)) return $(this) add-type-name(name, def) = type-names = $(type-names.add $(name), $(def)) return $(this) add-anon-struct-type(info) = anon-struct-types[] += $(info) return $(this) add-anon-enum-type(info) = anon-enum-types[] += $(info) return $(this) # # Print it out # to-string() = value $(array-to-string-term $(defs), $(nl))$(typedefs.to-string)$(structs.to-string)$(enums.to-string) # # This is the actual program # public.prog = $(Prog) public. = ######################################################################## # Operators # Op. = class Op extends $(Base) protected.op = protected. = make(op) = this = $(make-loc) this.op = $(op) return $(this) to-string() = value $(op) Unop. = class Unop extends $(Op) Binop. = class Binop extends $(Op) Ternop. = class Ternop extends $(Op) ######################################################################## # Expressions # Exp. = class Exp extends $(Base) protected. = make-exp() = value $(make-loc) NoneExp. = class NoneExp extends $(Exp) protected. = make() = make-exp() to-string() = LiteralExp. = class LiteralExp extends $(Exp) protected. = val = protected. = make(val) = this = $(make-exp) this.val = $(val) return $(this) to-string() = value $(val) CharExp. = class CharExp extends $(LiteralExp) IntExp. = class IntExp extends $(LiteralExp) FloatExp. = class FloatExp extends $(LiteralExp) StringExp. = class StringExp extends $(LiteralExp) IdExp. = class IdExp extends $(LiteralExp) # # Objects in the AST. # Exp1. = class Exp1 extends $(Exp) protected. = op = arg = protected. = make(op, arg) = this = $(make-exp) this.op = $(Unop.make $(op)) this.arg = $(arg) return $(this) to-string() = value $"$(op.to-string)$(arg.to-string)" PreExp1. = class PreExp1 extends $(Exp1) PostExp1. = class PostExp1 extends $(Exp1) protected. = to-string() = return $"$(arg.to-string)$(op.to-string)" Exp2. = class Exp2 extends $(Exp) protected. = op = arg1 = arg2 = protected. = make(op, arg1, arg2) = this = $(make-exp) this.op = $(Binop.make $(op)) this.arg1 = $(arg1) this.arg2 = $(arg2) return $(this) to-string() = value $"$(arg1.to-string) $(op.to-string) $(arg2.to-string)" AssignExp. = class AssignExp extends $(Exp2) Exp3. = class Exp3 extends $(Exp) protected. = op1 = op2 = arg1 = arg2 = arg3 = protected. = make(arg1, op1, arg2, op2, arg3) = this = $(make-exp) this.op1 = $(Ternop.make op1) this.op2 = $(Ternop.make op2) this.arg1 = $(arg1) this.arg2 = $(arg2) this.arg3 = $(arg3) return $(this) to-string() = value $"$(arg1.to-string) $(op1.to-string) $(arg2.to-string) $(op2.to-string) $(arg3.to-string)" # # Other expressions # ParensExp. = class ParensExp extends $(Exp) protected. = exp = protected. = make(exp) = this = $(make-exp) this.exp = $(exp) return $(this) to-string() = return $"($(exp.to-string))" SubscriptExp. = class SubscriptExp extends $(Exp) protected. = arg1 = arg2 = protected. = make(arg1, arg2) = this = $(make-exp) this.arg1 = $(arg1) this.arg2 = $(arg2) return $(this) to-string() = value $"$(arg1.to-string)[$(arg2.to-string)]" ApplyExp. = class ApplyExp extends $(Exp) protected. = var = args = protected. = make(var, args) = this = $(make-exp) this.var = $(var) this.args = $(args) return $(this) to-string() = value $"$(var)($(array-to-string-sep $(args), $(comma)))" CastExp. = class CastExp extends $(Exp) protected. = type = exp = protected. = make(type, exp) = this = $(make-exp) this.type = $(type) this.exp = $(exp) return $(this) to-string() = value $"($(type.to-string)) $(exp.to-string)" SizeofExp. = class CastExp extends $(Exp) protected. = val = protected. = make(val) = this = $(make-exp) this.val = $(val) return $(this) to-string() = value $"sizeof($(val.to-string))" ######################################################################## # Initializers # Initializer. = class Initializer extends $(Base) protected. = make-init() = make-loc() to-string() = value Initializer InitExp. = class InitExp extends $(Initializer) protected.exp = protected. = make(exp) = this = $(make-init) this.exp = $(exp) return $(this) to-string() = value $"/*InitExp*/ $(exp.to-string)" InitArray. = class InitArray extends $(Initializer) protected.exp_list = protected. = make(exp_list) = this = $(make-init) this.exp_list = $(exp_list) return $(this) to-string() = value $"/*InitArray*/{ ... }" InitField. = class InitField extends $(Initializer) protected. = name = exp = protected. = make(name, exp) = this = $(make-init) this.name = $(name) this.exp = $(exp) return $(this) to-string() = value $"/*InitField*/ $(name): $(exp.to-string)" ######################################################################## # Statements # Stmt. = class Stmt extends $(Base) protected. = make-stmt() = make-loc() EmptyStmt. = class EmptyStmt extends $(Stmt) protected. = make() = make-stmt() to-string() = return $";" ExpStmt. = class ExpStmt extends $(Stmt) protected. = exp = protected. = make(exp) = this = $(make-stmt) this.exp = $(exp) return $(this) to-string() = return $"$(exp.to-string);" DefaultStmt. = class DefaultStmt extends $(Stmt) protected. = make() = make-stmt() to-string() = value $"default:" CaseStmt. = class CaseStmt extends $(Stmt) protected.exp = protected. = make(exp) = this = $(make-stmt) this.exp = $(exp) return $(this) to-string() = value $"case $(exp.to-string):" LabelStmt. = class LabelStmt extends $(Stmt) protected.name = protected. = make(name) = this = $(make-stmt) this.name = $(name) return $(this) to-string() = value "$(name):" GotoStmt. = class GotoStmt extends $(Stmt) protected.name = protected. = make(name) = this = $(make-stmt) this.name = $(name) return $(this) to-string() = value $"goto $(name);" ContinueStmt. = class ContinueStmt extends $(Stmt) protected. = make() = make-stmt() to-string() = value $"continue;" BreakStmt. = class BreakStmt extends $(Stmt) protected. = make() = make-stmt() to-string() = value $"break;" ReturnStmt. = class ReturnStmt extends $(Stmt) protected.exp = protected. = make(exp) = this = $(make-stmt) this.exp = $(exp) return $(this) to-string() = value $"return $(exp.to-string);" BlockStmt. = class BlockStmt extends $(Stmt) protected.stmts = $(empty) protected. = make(stmts) = this = $(make-stmt) this.stmts = $(stmts) return $(this) empty() = make-stmt() to-string() = value $"{$(nl)$(array-to-string-term $(stmts), $(nl))}" WhileStmt. = class WhileStmt extends $(Stmt) protected. = test = body = protected. = make(test, body) = this = $(make-stmt) this.test = $(test) this.body = $(body) return $(this) to-string() = value $"while($(test.to-string)) $(body.to-string)" DoStmt. = class DoStmt extends $(Stmt) protected. = body = exp = protected. = make(body, exp) = this = $(make-stmt) this.body = $(body) this.exp = $(exp) return $(this) to-string() = value $"do $(body.to-string)$(nl)while($(exp.to-string));" ForStmt. = class ForStmt extends $(Stmt) protected. = init = test = post = body = protected. = make(init, test, post, body) = this = $(make-stmt) this.init = $(init) this.test = $(test) this.post = $(post) this.body = $(body) return $(this) to-string() = value $"for($(init.to-string); $(test.to-string); $(post.to-string)) $(body.to-string)" IfStmt. = class IfStmt extends $(Stmt) protected. = test = stmt1 = declare stmt2 protected. = make1(test, stmt1) = this = $(make-stmt) this.test = $(test) this.stmt1 = $(stmt1) return $(this) make2(test, stmt1, stmt2) = this = $(make-stmt) this.test = $(test) this.stmt1 = $(stmt1) this.stmt2 = $(stmt2) return $(this) to-string() = s = $"if($(test.to-string)) $(stmt1.to-string)" if $(defined stmt2) s += $"$(nl)else $(stmt2.to-string)" export return $(s) SwitchStmt. = class SwitchStmt extends $(Stmt) protected. = exp = body = protected. = make(exp, body) = this = $(make-stmt) this.exp = $(exp) this.body = $(body) return $(this) to-string() = value $"switch($(exp.to-string))$(body.to-string)" ######################################################################## # Type modifiers # TypeModBase. = class TypeModBase extends $(Base) protected. = make-mod() = make-loc() is-named(quals) = return false # # gcc __attribute__ extension # TypeModAttribute. = class TypeModAttribute extends $(TypeModBase) protected.exp = protected. = make(exp) = this = $(make-mod) this.exp = $(exp) return $(this) to-string() = value $"__attribute__ ($(exp.to-string))" # # Name modifiers # TypeModNamed. = class TypeModNamed extends $(TypeModBase) protected.name = protected. = make(name) = this = $(make-mod) this.name = $(name) return $(this) to-string() = value $(name) is-named(quals) = mem($(name), $(quals)) TypeClass. = class TypeClass extends $(TypeModNamed) TypeMod. = class TypeMod extends $(TypeModNamed) TypeQual. = class TypeQual extends $(TypeModNamed) ######################################################################## # Variable declarations. These also serve as types. # # replace-var : replace the variable part of the declaration # with another declaration # replace-fun : replace the function part of the declaration # with another declaration # is-core : the decl is just an identifier and nothing else # is-none : the decl is nothing, not even an identifier # is-scalar : can the data be represented in a machine word # even if the type is not a scalar # to-fun : get the function part of the declaration. # to-type : produce a type from the decl # Var. = class Var extends $(Base) protected. = make-var() = make-loc() is-core() = return false is-none() = return false to-fun() = return $(this) # # The identifier is not named # VarNone. = class VarNone extends $(Var) protected. = make() = make-var() to-string() = return $(EMPTY) to-identifier() = return $(EMPTY) to-id() = return $(EMPTY) to-var() = return $(this) is-core() = return true is-none() = return true replace-var(v) = return $(v) replace-fun(v) = return $(v) to-type(ty) = return $(ty) # # Identifier # VarId. = class VarId extends $(Var) protected. = id = protected. = make(id) = this = $(make-var) this.id = $(id) return $(this) to-string() = value $(id) to-identifier() = value $(id) to-id() = return $(id) to-var() = return $(this) is-core() = return true replace-var(v) = return $(v) replace-fun(v) = return $(v) to-type(ty) = return $(ty) # # A vararation with an initializer # declare TypeInit VarInit. = class VarInit extends $(Var) protected. = var = exp = protected. = make(var, exp) = this = $(make-var) this.var = $(var) this.exp = $(exp) return $(this) to-string() = value $"$(var.to-string) = $(exp.to-string)" to-identifier() = var.to-identifier() to-var() = var.to-var() is-core() = var.is-core() replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = var = $(var.replace-fun $(v)) return $(this) to-fun() = var.to-fun() to-type(ty) = var.to-type($(TypeInit.make $(ty), $(exp))) # # A qualified variation, like "const int* const unsigned int x; # declare TypeQualified VarQualified. = class VarQualified extends $(Var) protected. = var = qualifiers = protected. = make(var, qualifiers) = if $(qualifiers) this = $(make-var) this.qualifiers = $(qualifiers) this.var = $(var) return $(this) else return $(var) to-string() = return $"$(array-to-string-term $(qualifiers), $(space))$(var.to-string)" to-identifier() = return $"$(array-to-string-term $(qualifiers), _)$(var.to-identifier)" to-var() = var.to-var() to-fun() = var.to-fun() is-core() = var.is-core() replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = var = $(var.replace-fun $(v)) return $(this) to-type(ty) = var.to-type($(TypeQualified.make $(ty), $(qualifiers))) # # Gcc __attribute__ extension # declare TypeAttribute VarAttribute. = class VarAttribute extends $(Var) protected. = var = attribute = protected. = make(var, attribute) = this = $(make-var) this.var = $(var) this.attribute = $(attribute) return $(this) to-string() = value $"$(var.to-string) $(attribute.to-string)" to-identifier() = var.to-identifier() to-var() = var.to-var() to-fun() = var.to-fun() is-core() = var.is-core() replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = var = $(var.replace-fun $(v)) return $(this) to-type(ty) = var.to-type($(TypeAttribute.make $(ty), $(attribute))) # # Various kinds of pointers. # declare TypePointer VarPointer. = class VarPointer extends $(Var) protected. = var = protected. = make(var) = this = $(make-var) this.var = $(var) return $(this) to-string() = return $"*$(var.to-string)" to-identifier() = return $"P$(var.to-identifier)" to-var() = var.to-var() to-fun() = var.to-fun() replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = var = $(var.replace-fun $(v)) return $(this) to-type(ty) = var.to-type($(TypePointer.make $(ty))) # # References are like pointers. This is a C++ thing. # declare TypeRef VarRef. = class VarRef extends $(Var) protected. = var = protected. = make(var) = this = $(make-var) this.var = $(var) return $(this) to-string() = value $"&$(var.to-string)" to-identifier() = value $"R$(var.to-identifier)" to-var() = var.to-var() to-fun() = var.to-fun() replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = var = $(var.replace-fun $(v)) return $(this) to-type(ty) = var.to-type($(TypeRef.make $(ty))) # # Arrays have possible dimensions. # declare TypeArray VarArray. = class VarArray extends $(Var) protected. = var = exp = $(NoneExp.make) protected. = make(var, exp) = this = $(make-var) this.var = $(var) this.exp = $(exp) return $(this) make-empty(var) = this = $(make-var) this.var = $(var) return $(this) to-string() = value $"$(var.to-string)[$(exp.to-string)]" to-identifier() = value $"$(var.to-identifier)_array" to-var() = var.to-var() to-fun() = var.to-fun() replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = var = $(var.replace-fun $(v)) return $(this) to-type(ty) = var.to-type($(TypeArray.make $(ty), $(exp))) # # A function (not a function pointer) # declare TypeFun VarFun. = class VarFun extends $(Var) protected. = var = params = protected. = make(var, params) = this = $(make-var) this.var = $(var) this.params = $(params) return $(this) to-string() = value $"($(var.to-string))($(array-to-string-sep $(params), $(comma)))" to-identifier() = value $"$(var.to-identifier)_fun_$(array-to-identifier-sep $(params), _X_)" to-var() = var.to-var() to-fun() = return $(this) replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = return $(v) to-type(ty) = var.to-type($(TypeFun.make $(ty), $(params))) # # Fields are really only valid in structs and unions. # However, we allow them on any vararation. # declare TypeField VarField. = class VarField extends $(Var) protected. = var = bits = protected. = make(var, bits) = this = $(make-var) this.var = $(var) this.bits = $(bits) return $(this) to-var() = var.to-var() to-string() = value $"$(var.to-string) : $(bits.to-string)" to-identifier() = value $"$(var.to-identifier)_field" is-core() = var.is-core() replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = var = $(var.replace-fun $(v)) return $(this) to-fun(v) = var.to-fun() to-type(ty) = var.to-type($(TypeField.make $(ty), $(bits))) ######################################################################## # Declarations with type information # # is-elide : is the decl an elision # Decl. = class Decl extends $(Base) protected. = make-decl() = make-loc() is-elide() = return false # # An elision has no information # declare TypeElide ElideDecl. = class ElideDecl extends $(Decl) protected. = make() = make-decl() is-elide() = return true to-string() = return ... to-type() = return $(TypeElide.make) # # This is info about a variable, including the type info. # VarDecl. = class VarDecl extends $(Decl) protected. = type = var = protected. = make(type, var) = this = $(make-decl) this.type = $(type) this.var = $(var) return $(this) to-string() = if $(var.is-none) type.to-string() else value $"$(type.to-string) $(var.to-string)" to-identifier() = if $(var.is-none) type.to-identifier() else value $"$(type.to-identifier)_$(var.to-identifier)" to-var() = var.to-var() to-fun() = var.to-fun() replace-var(v) = var = $(var.replace-var $(v)) return $(this) replace-fun(v) = var = $(var.replace-fun $(v)) return $(this) to-type() = var.to-type($(type)) ######################################################################## # Named types # # Methods: # to-string : produce a string representation of the type # this is defined only for the core types # resolve : resolve all typedefs # simplify : like resolve, but also eliminate fields, remove # const and extern, and turn outermost array into # a pointer. # no-fields : remove any field definitions from struct/union/enum. # is-void : is this the void type? # is-scalar : can the data be represented in a single machine word? # is-struct-or-enum : is the data a struct, union, or enum type? # to-decl : produce a variable declaration from the type # unqualified : remove as many qualifiers (like extern, const, short, etc.) # as possible. # # storage-info : What kind of item is this? The result is one of the following. # false : a scalar # nonscalar : a nonscalar # pointer : a pointer # ref : a reference # Type. = class Type extends $(Base) protected. = make-type() = make-loc() is-void() = return false is-scalar() = return false is-struct-or-enum() = return false storage-info() = if $(is-scalar) return false else return nonscalar no-fields() = return $(this) unqualified() = return $(this) to-extern() = IS_EXTERN = true unqualified() to-extern-field() = IS_EXTERN = true unqualified() to-pointer() = return $(this) dereference() = return $(this) reference() = return $(TypePointer.make $(this)) resolve() = return $(this) resolve-and-prune() = return $(this) simplify() = this = $(resolve-and-prune) this = $(to-pointer) return $(this) # # By default, turn the type back into a decl before printing # declare to-decl to-string() = decl = $(to-decl $(VarNone.make)) decl.to-string() to-identifier() = decl = $(to-decl $(VarNone.make)) decl.to-identifier() to-name() = PRINT_NAME = true to-string() to-ml-string() = to-identifier() # # Named type # TypeId. = class TypeId extends $(Type) protected. = id = protected. = make(id) = this = $(make-type) this.id = $(id) return $(this) to-string() = value $(id) to-identifier() = value $(id) to-ml-string() = value t_$(id) resolve() = if $(prog.typedefs.mem $(id)) ty = $(prog.typedefs.find $(id)) ty = $(ty.resolve) return $(ty) else return $(this) resolve-and-prune() = if $(prog.typedefs.mem $(id)) ty = $(prog.typedefs.find $(id)) ty = $(ty.resolve-and-prune) return $(ty) else return $(this) is-void() = equal($(id), void) is-scalar() = mem($(id), void __bool char int float double) to-decl(var) = VarDecl.make($(this), $(var)) # # A fake type for elisions # TypeElide. = class TypeElide extends $(Type) protected. = make() = make-type() to-decl(var) = ElideDecl.make() # # struct definition # TypeStruct. = class TypeStruct extends $(Type) protected. = kind = name = false fields = false protected. = make(kind, name, fields) = this = $(make-type) this.kind = $(kind) this.name = $(name) this.fields = $(fields) return $(this) undefined(kind, name) = this = $(make-type) this.kind = $(kind) this.name = $(name) return $(this) is-struct-or-enum() = return true no-fields() = fields = false return $(this) no-subfields() = if $(not $(equal $(fields), false)) fields = $(fields.map field, $(field.no-fields)) return $(this) else return $(this) to-name() = if $(prog.type-names.mem $(name)) prog.type-names.find($(name)) else value $"$(kind) $(name)" to-identifier() = if $(prog.type-names.mem $(name)) prog.type-names.find($(name)) else value $(name) to-ml-string() = value $(kind)_$(name) to-string() = if $(PRINT_NAME) to-name() elseif $(equal $(fields), false) value $"$(kind) $(name)" else value $"$(kind) $(name) {$(array-to-string-wrap $(fields), $(nl)$(tab), $(semi))$(nl)}" resolve() = if $(not $(equal $(fields), false)) protected.fields = $(fields.map field, $(field.resolve)) value $(this) else value $(this) resolve-and-prune() = fields = false return $(this) find-fields(prog) = if $(not $(equal $(fields), false)) value $(fields) else ty = $(prog.structs.find $(name)) ty.find-fields($(prog)) to-decl(var) = VarDecl.make($(this), $(var)) # # A field in a tagged union. # TypeTaggedUnionField. = class TypeTaggedUnionField extends $(Base) protected. = tag = decl = protected. = make(tag, decl) = this = $(make-loc) this.tag = $(tag) this.decl = $(decl) return $(this) to-string() = if $(tag) text[] = $"case $(tag.to-string):" export else text[] = $"default:" export text[] += $(decl.to-string) return $(text) # # struct definition # TypeTaggedUnion. = class TypeTaggedUnion extends $(Type) # # The union has a name, # a field that holds the tag, # and a list of cases. # protected. = name = tag = fields[] = protected. = # # Compile the fields into their individual cases # make(name, cases) = this = $(make-type) this.name = $(name) tags[] = defcase = false foreach(case, $(cases)) if $(case.instanceof DefaultStmt) defcase = true tags[] += false export elseif $(case.instanceof CaseStmt) tags[] += $(case.exp) export else fields[] += $(tags.map tag, $(TypeTaggedUnionField.make $(tag), $(case))) if $(defcase) tag = $(case) export defcase = false tags[] = export export return $(this) is-struct-or-enum() = return true no-fields() = fields = false return $(this) no-subfields() = if $(not $(equal $(fields), false)) fields = $(fields.map field, $(field.no-fields)) return $(this) else return $(this) to-name() = if $(prog.type-names.mem $(name)) prog.type-names.find($(name)) else value $"__tagged_union $(name)" to-identifier() = if $(prog.type-names.mem $(name)) prog.type-names.find($(name)) else value $(name) to-ml-string() = value tagged_union_$(name) to-string() = if $(PRINT_NAME) to-name() elseif $(equal $(fields), false) value $"__tagged_union $(name)" else value $"""__tagged_union $(name) {$(array-to-string-wrap $(fields), $(tnl), $(semi))$(nl)};""" resolve() = if $(not $(equal $(fields), false)) fields = $(fields.map field, $(field.resolve)) value $(this) else value $(this) resolve-and-prune() = fields = false return $(this) find-fields(prog) = if $(not $(equal $(fields), false)) value $(fields) else ty = $(prog.tagged-unions.find $(name)) ty.find-fields($(prog)) to-decl(var) = VarDecl.make($(this), $(var)) # # Enum fields are a special case # EnumFieldDecl. = class EnumFieldDecl extends $(Base) protected. = name = val = false protected. = make(name) = this = $(make-loc) this.name = $(name) return $(this) make-value(name, val) = this = $(make-loc) this.name = $(name) this.val = $(val) return $(this) to-string() = s = $"$(name)" if $(not $(equal $(val), false)) s += $" = $(val.to-string)" export return $(s) # # Enum definition # TypeEnum. = class TypeEnum extends $(Type) protected. = name = false fields = false protected. = make(name, fields) = this = $(make-type) this.name = $(name) this.fields = $(fields) return $(this) undefined(name) = this = $(make-type) this.name = $(name) return $(this) no-fields() = fields = false return $(this) is-struct-or-enum() = return true no-subfields() = return $(this) resolve-and-prune() = fields = false return $(this) to-name() = if $(prog.type-names.mem $(name)) prog.type-names.find($(name)) else value $"enum $(name)" to-identifier() = if $(prog.type-names.mem $(name)) prog.type-names.find($(name)) else value $(name) to-ml-string() = value enum_$(name) to-string() = if $(PRINT_NAME) to-name() elseif $(equal $(fields), false) value $"enum $(name)" else value $"enum $(name) {$(array-to-string-wrap $(fields), $(nl)$(tab), $(comma))$(nl)}" find-fields(prog) = if $(not $(equal $(fields), false)) value $(fields) else ty = $(prog.enums.find $(name)) ty.find-fields($(prog)) is-scalar() = return true to-decl(var) = VarDecl.make($(this), $(var)) ################################################ # Types with a single sub element # Type1. = class Type1 extends $(Type) protected. = ty = protected. = no-fields() = ty = $(ty.no-fields) return $(this) resolve() = ty = $(ty.resolve) return $(this) resolve-and-prune() = ty = $(ty.resolve-and-prune) return $(this) ################################################ # Pointer types # TypePtr. = class TypePtr extends $(Type1) protected. = is-scalar() = return true storage-info() = return pointer dereference() = return $(ty) unqualified() = IS_POINTER = true ty = $(ty.unqualified) return $(this) to-ml-string() = value $"($(ty.to-ml-string)) dll_pointer" # # Pointer # TypePointer. = class TypePointer extends $(TypePtr) protected. = make(ty) = this = $(make-type) this.ty = $(ty) return $(this) to-decl(var) = ty.to-decl($(VarPointer.make $(var))) # # Reference # TypeRef. = class TypeRef extends $(TypePtr) protected. = make(ty) = this = $(make-type) this.ty = $(ty) return $(this) storage-info() = return ref to-decl(var) = ty.to-decl($(VarRef.make $(var))) to-ml-string() = value $"($(ty.to-ml-string)) ref" # # Array # TypeArray. = class TypeArray extends $(TypePtr) protected. = exp = protected. = make(ty, exp) = this = $(make-type) this.ty = $(ty) this.exp = $(exp) return $(this) to-pointer() = TypePointer.make($(ty)) to-decl(var) = ty.to-decl($(VarArray.make $(var), $(exp))) ################################################ # Attribute types. These modify a type, but any methods # just examine the inner type. # TypeAttr. = class TypeAttr extends $(Type1) protected. = to-pointer() = ty = $(ty.to-pointer) return $(this) is-void() = ty.is-void() is-scalar() = ty.is-scalar() storage-info() = ty.storage-info() unqualified() = ty.unqualified() dereference() = ty = $(ty.dereference) return $(this) to-ml-string() = ty.to-ml-string() # # A variable definition with the given type # TypeVar. = class TypeVar extends $(TypeAttr) protected. = var = protected. = make(ty, var) = this = $(make-type) this.var = $(var) this.ty = $(ty) return $(this) to-id() = var.to-id() to-type() = return $(ty) replace-var(v) = var = $(v) return $(this) unqualified() = ty = $(ty.unqualified) if $(IS_EXTERN) return $(ty) else return $(this) to-extern-field() = ty = $(ty.to-extern) return $(this) to-decl(var) = ty.to-decl($(var)) reference() = ty = $(ty.reference) return $(this) # # Qualified type # TypeQualified. = class TypeQualified extends $(TypeAttr) protected. = qualifiers = protected. = make(ty, qualifiers) = if $(qualifiers) this = $(make-type) this.qualifiers = $(qualifiers) this.ty = $(ty) return $(this) else return $(ty) unqualified() = if $(IS_POINTER) ty = $(ty.unqualified) tymods[] = tyquals[] = foreach(qual, $(qualifiers)) if $(qual.instanceof TypeMod) tymods[] += $(qual) export elseif $(qual.instanceof TypeQual) tyquals[] += $(qual.name) export export tyquals = $(set $(tyquals)) tyquals = $(tyquals.map name, $(TypeQual.make $(name))) qualifiers[] = $(if $(IS_EXTERN), $(tymods), $(array $(tyquals), $(tymods))) if $(qualifiers) return $(this) else return $(ty) else ty.unqualified() # During simplification, remove class modifiers resolve-and-prune() = ty = $(ty.resolve-and-prune) quals[] = foreach(qual, $(qualifiers)) if $(not $(qual.instanceof TypeClass)) quals[] += $(qual) export export qualifiers = $(quals) if $(qualifiers) return $(this) else return $(ty) # Remove any const qualifier during pointer conversion to-pointer() = ty = $(ty.to-pointer) quals[] = foreach(qual, $(qualifiers)) if $(not $(qual.is-named const __const)) quals[] += $(qual) export export qualifiers = $(quals) if $(qualifiers) return $(this) else return $(ty) to-decl(var) = ty.to-decl($(VarQualified.make $(var), $(qualifiers))) # # Qualified type # TypeCore. = class TypeCore extends $(TypeQualified) protected. = to-decl(var) = VarDecl.make($(this), $(var)) to-string() = return $"$(array-to-string-term $(qualifiers), $(space))$(ty.to-string)" to-identifier() = return $"$(array-to-string-term $(qualifiers), _)$(ty.to-identifier)" # # GCC attributes # TypeAttribute. = class TypeAttribute extends $(TypeAttr) protected. = attribute = protected. = make(ty, attribute) = this = $(make-type) this.ty = $(ty) this.attribute = $(attribute) return $(this) unqualified() = ty.unqualified() to-decl(var) = ty.to-decl($(VarAttribute.make $(var), $(attribute))) resolve-and-prune() = ty.resolve-and-prune() # # Field # TypeField. = class TypeField extends $(TypeAttr) protected. = bits = protected. = make(ty, bits) = this = $(make-type) this.ty = $(ty) this.bits = $(bits) return $(this) resolve-and-prune() = ty.resolve-and-prune() to-decl(var) = ty.to-decl($(VarField.make $(var), $(bits))) unqualified() = ty.unqualified() # # Initializer (to go with VarInit) # TypeInit. = class TypeInit extends $(TypeAttr) protected. = exp = protected. = make(ty, exp) = this = $(make-type) this.ty = $(ty) this.exp = $(exp) return $(this) unqualified() = ty.unqualified() to-decl(var) = ty.to-decl($(VarInit.make $(var), $(exp))) ################################################ # Function (not a pointer). # TypeFun. = class TypeFun extends $(Type) protected. = ty = params = protected. = make(ty, params) = this = $(make-type) this.ty = $(ty) this.params = $(params) return $(this) unqualified() = ty = $(ty.unqualified) IS_POINTER = false params = $(params.map param, $(param.unqualified)) return $(this) resolve() = ty = $(ty.resolve) params = $(params.map param, $(param.resolve)) return $(this) resolve-and-prune() = ty = $(ty.resolve-and-prune) params = $(params.map param, $(param.resolve-and-prune)) return $(this) to-decl(var) = ty.to-decl($(VarFun.make $(var), $(params))) real-params() = if $(params) param = $(params.nth 0) if $(param.is-void) return $(empty) else return $(params) else return $(params) to-ml-string() = sep = ty-params[] = foreach(param, $(params)) ty-params = $"$(ty-params)$(sep)($(param.to-ml-string))" sep = $" * " export if $(not $(sep)) ty-params = unit export ty-result = $(ty.to-ml-string) return $"""($(ty-params), $(ty-result)) dll_function""" ######################################################################## # Definitions # Definition. = class Definition extends $(Base) protected. = make-def() = make-loc() # # Just a type, no identifiers # VarNoneDef. = class VarNoneDef extends $(Definition) protected. = type = protected. = make(type) = this = $(make-loc) this.type = $(type) return $(this) to-string() = decl = $(type.to-decl $(VarNone.make)) return $"$(decl.to-string);" ElideDef. = class ElideDef extends $(Definition) extends $(ElideDecl) # # The variable definition uses the internal form # VarDefCore. = class TypeVar extends $(Definition) extends $(TypeVar) protected. = make(ty, decl) = this = $(make-type) this.var = $(decl.to-var) this.ty = $(decl.to-type $(ty)) return $(this) make-var(ty, var) = this = $(make-type) this.var = $(var) this.ty = $(ty) return $(this) is-elide() = return false ParamDef. = class ParamDef extends $(VarDefCore) protected. = to-string() = decl = $(ty.to-decl $(var)) decl.to-string() VarDef. = class VarDef extends $(VarDefCore) protected. = to-string() = decl = $(ty.to-decl $(var)) return $"$(decl.to-string);" TypeDef. = class TypeDef extends $(VarDefCore) protected. = to-string() = decl = $(ty.to-decl $(var)) return $"typedef $(decl.to-string);" # # Callbacks are wrappers around other definitions. # CallbackDef. = class CallbackDef extends $(Base) protected.def = protected. = make(def) = this = $(make-loc) this.def = $(def) return $(this) to-string() = value $"CALLBACK $(def.to-string);" # # Function definitions # FunDef. = class FunDef extends $(Definition) protected. = def = body = protected. = make(type, decl, body) = this = $(make-def) def = $(ParamDef.make $(type), $(decl)) this.body = $(body) return $(this) to-string() = value $"$(def.to-string)$(nl){$(nl)$(array-to-string-term $(body), $(nl))}" # # Fake the preprocessor directives # CppItem. = class CppItem extends $(Definition) protected. = line = protected. = make(line) = this = $(make-def) this.line = $(line) return $(this) to-string() = value $"$(line)" ######################################################################## # The actual parser # parser. = extends $(Parser) # # Use the main lexer # lexer = $(lexer) # # Precedences, in ascending order # left(comma) left(eqop13) right(ternop12) left(binop11) left(binop10) left(binop9) left(binop8) left(binop7) left(binop6) left(binop5) left(binop4) left(binop3) left(binop2) left(binop1) right(unop1 incop1 cast sizeof) left(binop0) left(apply lparen) nonassoc(ifthen) nonassoc(else ifthenelse) # # A program # start(prog) prog: all_defs eof prog.add-defs($1) ######################################################################## # Declarations and definitions # all_defs: array() all_defs: all_defs all_def array($1 $2) all_def: var_defs value $1 all_def: fun_def value $1 all_def: type_defs value $1 all_def: callback_defs value $1 all_def: cpp CppItem.make($1) ######################################################################## # Type specifiers # # This is annoying. After any "tymod" or "type", then type identifiers # act like normal identifiers. # decl_spec: decl_spec_id value $1 decl_spec: decl_spec_any value $1 decl_spec_id: decl_specifiers_id TypeCore.make($(TypeId.make int), $1) decl_spec_any: decl_specifiers_mod TypeCore.make($(TypeId.make int), $1) decl_spec_any: decl_specifiers_id_opt type_id decl_specifiers_any_opt TypeCore.make($(TypeId.make $2), $(array $1 $3)) decl_spec_any: decl_specifiers_id_opt type_struct decl_specifiers_any_opt TypeCore.make($2, $(array $1 $3)) decl_spec_any: decl_specifiers_mod type_builtin decl_specifiers_any_opt TypeCore.make($(TypeId.make $2), $(array $1 $3)) # # Specifiers that may-or-may-not contain type modifiers. # decl_specifiers_any_opt: array() decl_specifiers_any_opt: decl_specifiers_any_opt decl_specifier_id array($1 $2) decl_specifiers_any_opt: decl_specifiers_any_opt type_mod array($1 $2) # # Specifiers that contain a type modifier. # decl_specifiers_mod: type_mod array($1) decl_specifiers_mod: decl_specifiers_id type_mod array($1 $2) decl_specifiers_mod: decl_specifiers_mod decl_specifier_id array($1 $2) decl_specifiers_mod: decl_specifiers_mod type_mod array($1 $2) # # Must not be followed by a type name # decl_specifiers_id_opt: array() decl_specifiers_id_opt: decl_specifiers_id value $1 decl_specifiers_id: decl_specifier_id array($1) decl_specifiers_id: decl_specifiers_id decl_specifier_id array($1 $2) decl_specifier_id: type_class value $1 decl_specifier_id: type_qual value $1 decl_specifier_id: attribute value $1 # # Non-top-level modifiers # type_qualifiers_opt: array() type_qualifiers_opt: type_qualifiers value $1 type_qualifiers: type_qualifier array($1) type_qualifiers: type_qualifiers type_qualifier array($1 $2) type_qualifier: type_qual value $1 type_qualifier: attribute value $1 # # Type specification # type_id: type value $1 type_id: type_builtin value $1 type_struct: struct_spec value $1 type_struct: tagged_union_spec value $1 type_struct: enum_spec value $1 # # Generic qualifier # type_class: tyclass TypeClass.make($1) type_qual: tyqual TypeQual.make($1) type_mod: tymod TypeMod.make($1) attribute: __attribute__ lparen exp rparen TypeModAttribute.make($3) # # Struct # struct_spec: struct struct_declaration_list private.name = $"$1$(name-index)" name-index = $(add $(name-index), 1) protected.val = $(TypeStruct.make $1, $(name), $2) prog = $(prog.add-struct $(name), $(val)) prog = $(prog.add-anon-struct-type $(val)) export struct_spec: struct type_or_id struct_declaration_list protected.val = $(TypeStruct.make $1, $2, $3) prog = $(prog.add-struct $2, $(val)) export struct_spec: struct type_or_id protected.val = $(TypeStruct.undefined $1, $2) prog = $(prog.add-struct $2, $(val)) export struct_declaration_list: lbrace struct_declaration_fields rbrace value $2 struct_declaration_fields: array() struct_declaration_fields: struct_declaration_fields var_defs array($1 $2) # # Tagged union # tagged_union_spec: __tagged_union type_or_id tagged_union_declaration_list protected.val = $(TypeTaggedUnion.make $2, $3) prog = $(prog.add-tagged-union $2, $(val)) export tagged_union_declaration_list: lbrace tagged_union_declaration_fields rbrace value $2 tagged_union_declaration_fields: array() tagged_union_declaration_fields: tagged_union_declaration_fields tagged_union_field array($1 $2) tagged_union_field: case exp colon CaseStmt.make($2) tagged_union_field: default colon DefaultStmt.make() tagged_union_field: var_defs value $1 # # Enum # enum_spec: enum enum_declaration_list private.name = $"$1$(name-index)" name-index = $(add $(name-index), 1) protected.val = $(TypeEnum.make $(name), $2) prog = $(prog.add-enum $(name), $(val)) prog = $(prog.add-anon-enum-type $(val)) export enum_spec: enum type_or_id enum_declaration_list protected.val = $(TypeEnum.make $2, $3) prog = $(prog.add-enum $2, $(val)) export enum_spec: enum type_or_id TypeEnum.undefined($2) enum_declaration_list: lbrace rbrace array() enum_declaration_list: lbrace enum_decl_list opt_comma rbrace value $2 enum_decl_list: enum_decl array($1) enum_decl_list: enum_decl_list comma enum_decl array($1 $3) enum_decl: id :prec: apply EnumFieldDecl.make($1) enum_decl: id eq exp :prec: apply EnumFieldDecl.make-value($1, $3) ######################################################################## # Variable definitions # # # Strict identifiers # id_init_decl_list_opt: array() id_init_decl_list_opt: id_init_decl_list value $1 id_init_decl_list: id_init_decl array($1) id_init_decl_list: id_init_decl_list comma any_init_decl array($1 $3) id_init_decl: id_decl value $1 id_init_decl: id_decl colon exp VarField.make($1, $3) id_init_decl: colon exp VarField.make($(VarNone.make), $2) id_init_decl: id_decl eq init VarInit.make($1, $3) id_decl: direct_decl_id value $1 id_decl: star type_qualifiers_opt id_decl VarPointer.make($(VarQualified.make $3, $2)) id_decl: amp type_qualifiers_opt id_decl VarRef.make($(VarQualified.make $3, $2)) direct_decl_id: id VarId.make($1) direct_decl_id: lparen id_decl rparen value $2 direct_decl_id: direct_decl_id lbrack rbrack VarArray.make-empty($1) direct_decl_id: direct_decl_id lbrack exp rbrack VarArray.make($1, $3) direct_decl_id: direct_decl_id lparen opt_param_list rparen :prec: apply VarFun.make($1, $3) direct_decl_id: direct_decl_id attribute VarAttribute.make($1, $2) # # Any identifiers (type identifiers are treated as normal identifiers) # any_init_decl_list_opt: array() any_init_decl_list_opt: any_init_decl_list value $1 any_init_decl_list: any_init_decl array($1) any_init_decl_list: any_init_decl_list comma any_init_decl array($1 $3) any_init_decl: any_decl value $1 any_init_decl: any_decl colon exp VarField.make($1, $3) any_init_decl: colon exp VarField.make($(VarNone.make), $2) any_init_decl: any_decl eq init VarInit.make($1, $3) any_decl: direct_decl_any value $1 any_decl: star type_qualifiers_opt any_decl VarPointer.make($(VarQualified.make $3, $2)) any_decl: amp type_qualifiers_opt any_decl VarRef.make($(VarQualified.make $3, $2)) direct_decl_any: id VarId.make($1) direct_decl_any: type VarId.make($1) direct_decl_any: lparen any_decl rparen value $2 direct_decl_any: direct_decl_any lbrack rbrack VarArray.make-empty($1) direct_decl_any: direct_decl_any lbrack exp rbrack VarArray.make($1, $3) direct_decl_any: direct_decl_any lparen opt_param_list rparen :prec: apply VarFun.make($1, $3) direct_decl_any: direct_decl_any attribute VarAttribute.make($1, $2) ######################################################################## # Function parameters. # # These are similar to a var_def, but only one variable at a time is # allowed, and the variable name need not be mentioned. # opt_param_list: array() opt_param_list: param_list value $1 param_list: param_decl array($1) param_list: param_list comma param_decl array($1 $3) param_decl: decl_spec_id id_decl ParamDef.make($1, $2) param_decl: decl_spec_any any_decl ParamDef.make($1, $2) param_decl: decl_spec_id abstract_decl ParamDef.make($1, $2) param_decl: decl_spec_any abstract_decl ParamDef.make($1, $2) param_decl: decl_spec ParamDef.make($1, $(VarNone.make)) param_decl: elide ElideDef.make() fun_param_list: lparen opt_param_list rparen value $2 abstract_decl: direct_abstract_decl value $1 abstract_decl: star type_qualifiers_opt VarPointer.make($(VarQualified.make $(VarNone.make), $2)) abstract_decl: star type_qualifiers_opt abstract_decl VarPointer.make($(VarQualified.make $3, $2)) abstract_decl: amp type_qualifiers_opt VarRef.make($(VarQualified.make $(VarNone.make), $2)) abstract_decl: amp type_qualifiers_opt abstract_decl VarRef.make($(VarQualified.make $3, $2)) direct_abstract_decl: lparen abstract_decl rparen value $2 direct_abstract_decl: direct_abstract_decl lbrack rbrack VarArray.make-empty($1) direct_abstract_decl: direct_abstract_decl lbrack exp rbrack VarArray.make($1, $3) direct_abstract_decl: direct_abstract_decl fun_param_list VarFun.make($1, $2) direct_abstract_decl: direct_abstract_decl attribute VarAttribute($1, $2) # # Variable definitions # var_defs: decl_spec_id id_init_decl_list_opt semi if $2 foreach(name, $2) VarDef.make($1, $(name)) else array($(VarNoneDef.make $1)) var_defs: decl_spec_any any_init_decl_list_opt semi if $2 foreach(name, $2) VarDef.make($1, $(name)) else array($(VarNoneDef.make $1)) callback_defs: callback var_defs foreach(def, $2) CallbackDef.make($(def)) # # Type definitions # type_var_defs: decl_spec_id id_init_decl_list_opt foreach(name, $2) TypeDef.make($1, $(name)) type_var_defs: decl_spec_any any_init_decl_list_opt foreach(name, $2) TypeDef.make($1, $(name)) type_defs: decl_specifiers_id_opt typedef type_var_defs semi protected.val = $3 private.hidden-flag = $(1.exists spec, $(spec.is-named __dll_hidden)) foreach(def, $3) private.v = $(def.to-id) private.ty = $(def.ty) types = $(types.add $(v), type) # Add the typedef if it is not internal if $(not $(hidden-flag)) prog = $(prog.add-typedef $(v), $(ty)) export # Add the type name translation if this is an struct or enum if $(ty.is-struct-or-enum) private.name = $(ty.name) if $(not $(prog.type-names.mem $(name))) prog = $(prog.add-type-name $(name), $(v)) export export export export # # Function definition # fun_def: decl_spec_id id_decl lbrace stmt_list rbrace FunDef.make($1, $2, $4) fun_def: decl_spec_any any_decl lbrace stmt_list rbrace FunDef.make($1, $2, $4) ######################################################################## # Expressions # # # Initializers # init: exp InitExp.make($1) init: lbrace init_list_opt opt_comma rbrace InitArray.make($2) init_list_opt: array() init_list_opt: init_list value $1 init_list: init_field array($1) init_list: init_list comma init_field array($1 $3) init_field: init value $1 init_field: id colon init InitField.make($1, $3) init_field: type colon init InitField.make($1, $3) # # Constant expressions # exp: int IntExp.make($1) exp: float FloatExp.make($1) exp: char CharExp.make($1) exp: string StringExp.make($1) exp: id IdExp.make($1) # # Unary expressions # exp: unop1 exp Exp1.make($1, $2) exp: incop1 exp PreExp1.make($1, $2) exp: exp incop1 PostExp1.make($2, $1) exp: minus exp :prec: unop1 Exp1.make($1, $2) exp: plus exp :prec: unop1 Exp1.make($1, $2) exp: star exp :prec: unop1 Exp1.make($1, $2) exp: amp exp :prec: unop1 Exp1.make($1, $2) # # Binary expressions # exp: exp binop0 exp Exp2.make($2, $1, $3) exp: exp binop2 exp Exp2.make($2, $1, $3) exp: exp star exp :prec: binop2 Exp2.make($2, $1, $3) exp: exp minus exp :prec: binop3 Exp2.make($2, $1, $3) exp: exp plus exp :prec: binop3 Exp2.make($2, $1, $3) exp: exp binop4 exp Exp2.make($2, $1, $3) exp: exp binop5 exp Exp2.make($2, $1, $3) exp: exp binop6 exp Exp2.make($2, $1, $3) exp: exp binop7 exp Exp2.make($2, $1, $3) exp: exp amp exp :prec: binop7 Exp2.make($2, $1, $3) exp: exp binop8 exp Exp2.make($2, $1, $3) exp: exp binop9 exp Exp2.make($2, $1, $3) exp: exp binop10 exp Exp2.make($2, $1, $3) exp: exp binop11 exp Exp2.make($2, $1, $3) exp: exp quest exp colon exp :prec: ternop12 Exp3.make($1, $2, $3, $4, $5) exp: exp eqop13 exp AssignExp.make($2, $1, $3) exp: exp eq exp :prec: eqop13 AssignExp.make($2, $1, $3) exp: exp comma exp Exp2.make($2, $1, $3) # # Special expressions # exp: lparen exp rparen ParensExp.make($2) exp: exp lbrack exp rbrack :prec: unop1 SubscriptExp.make($1, $3) exp: id lparen args_opt rparen :prec: apply ApplyExp.make($1, $3) exp: lparen cast_type rparen exp :prec: cast CastExp.make($2, $4) exp: sizeof lparen cast_type rparen :prec: sizeof SizeofExp.make($3) exp: sizeof lparen exp rparen :prec: sizeof SizeofExp.make($3) cast_type: decl_spec ParamDef.make($1, $(VarNone.make)) cast_type: decl_spec abstract_decl ParamDef.make($1, $2) cast_type: lparen cast_type rparen value $2 # # Optional # opt_exp: NoneExp.make() opt_exp: exp value $1 ######################################################################## # Statements # stmt: semi EmptyStmt.make() stmt: exp semi ExpStmt.make($1) stmt: if lparen exp rparen stmt :prec: ifthen IfStmt.make1($3, $5) stmt: if lparen exp rparen stmt else stmt :prec: ifthenelse IfStmt.make2($3, $5, $7) stmt: switch lparen exp rparen stmt SwitchStmt.make($3, $5) stmt: for lparen opt_exp semi opt_exp semi opt_exp rparen stmt ForStmt.make($3, $5, $7, $9) stmt: while lparen exp rparen stmt WhileStmt.make($3, $5) stmt: do stmt while lparen exp rparen semi DoStmt.make($2, $5) stmt: return semi ReturnStmt.make($(NoneExp.make)) stmt: return exp semi ReturnStmt.make($2) stmt: break semi BreakStmt.make() stmt: continue semi ContinueStmt.make() stmt: goto id semi GotoStmt.make($2) stmt: lbrace stmt_list rbrace BlockStmt.make($2) stmt: all_def value $1 stmt: id colon LabelStmt.make($1) stmt: case exp colon CaseStmt.make($2) stmt: default colon DefaultStmt.make() stmt_list: array() stmt_list: stmt_list stmt array($1 $2) # # Arguments # args_opt: array() args_opt: args value $1 args: exp :prec: apply array($1) args: args comma exp :prec: apply array($1 $3) # # Helpers # opt_comma: opt_comma: comma type_or_id: id value $1 type_or_id: type value $1 # # Debug it # build(false) omake-0.9.8.5/lib/parse/C/Lex.om0000664000152300015230000001025010615701364014263 0ustar jyhjyh# # Lexer for C code # # # The types value keeps track of type definitions # public.types. = extends $(Map) # Initial base types $|void| = type_builtin $|char| = type_builtin $|int| = type_builtin $|float| = type_builtin $|double| = type_builtin # # GCC extensions # $|__builtin_va_list| = type public.add-type-name(v) = types = $(types.add $(v), type) export # # Keywords # public.keywords. = extends $(Map) $|auto| = tyclass $|break| = break $|case| = case $|const| = tyqual $|continue| = break $|default| = default $|do| = do $|else| = else $|enum| = enum $|extern| = tyclass $|for| = for $|goto| = goto $|if| = if $|inline| = tyclass $|long| = tymod $|register| = tyclass $|return| = return $|short| = tymod $|signed| = tyqual $|sizeof| = sizeof $|static| = tyclass $|struct| = struct $|switch| = switch $|typedef| = typedef $|union| = struct $|unsigned| = tyqual $|volatile| = tyclass $|while| = while # # GCC extensions # $|__attribute__| = __attribute__ $|__const| = tyqual $|__extension__| = tyclass $|__inline| = tyclass $|__restrict| = tyqual # # Our extensions # $|__dll_callback| = callback $|__dll_hidden| = tyclass $|__tagged_union| = __tagged_union # # Operators # public.operators. = extends $(Map) $|(| = lparen $|)| = rparen $|[| = lbrack $|]| = rbrack $|{| = lbrace $|}| = rbrace $|->| = binop0 $|.| = binop0 $|!| = unop1 $|~| = unop1 $|++| = incop1 $|--| = incop1 $|*| = star $|&| = amp $|-| = minus $|+| = plus # |*| = binop2 $|/| = binop2 $|%| = binop2 # |+| = binop3 # |-| = binop3 $|<<| = binop4 $|>>| = binop4 $|<| = binop5 $|<=| = binop5 $|>=| = binop5 $|>| = binop5 $|==| = binop6 $|!=| = binop6 # |&| = binop7 $|^| = binop8 $|&&| = binop10 $|?| = quest $|:| = colon $|+=| = eqop13 $|-=| = eqop13 $|*=| = eqop13 $|/=| = eqop13 $|&=| = eqop13 $|^=| = eqop13 $|%=| = eqop13 $|<<=| = eqop13 $|>>=| = eqop13 $|=| = eq $|,| = comma $|;| = semi $|...| = elide operators = $(operators.add |, binop9) operators = $(operators.add ||, binop11) operators = $(operators.add $'|=', eqop13) ######################################################################## # The lexer # public.lexer. = extends $(Lexer) # # If all else fails, it is a syntax error # other: . eprintln(Illegal character: $0) lex() # # Numbers # int: $'([[:digit:]]+|0x[[:xdigit:]]*)[UL]?[UL]?' Token.pair($(loc), int, $0) float: $'([[:digit:]]+[.][[:digit:]]*([eE][+-]?[[:digit:]]*)?|[.][[:digit:]]+([eE][+-]?[[:digit:]]*)?)L?' Token.pair($(loc), float, $0) # # Strings and chars # string: $'"(\\.|[^"])*"' Token.pair($(loc), string, $0) char: $''['](\\.|[^'])*[']'' Token.pair($(loc), char, $0) # # Names # id: $'[[:alpha:]_][[:alnum:]_]*' id = $0 if $(keywords.mem $(id)) Token.pair($(loc), $(keywords.find $(id)), $(id)) elseif $(types.mem $(id)) Token.pair($(loc), $(types.find $(id)), $(id)) else Token.pair($(loc), id, $(id)) # # Operators # op: $'[-+*/%^|&!~)(}{.<>?:=,;]|\[|\]|[|][|]|&&|<<|>>|->|++|--|[-+*/&^%<>=!|]=|<<=|>>=|[.][.][.]' Token.pair($(loc), $(operators.find $0), $0) # # CPP directive # cpp: $'#[[:space:]]*[[:alpha:]](\\\n|[^\n])*' lex() line: $'#[[:space:]]*\([[:digit:]]+\)[[:space:]]*"\((\\.|[^"\n])*\)"(\\\n|[^\n])*' set-line($2, $1) lex() # # Ignore comments and whitespace # white: $'[[:space:]]+' lex() normal-comment: $'/[*]([*][^/]|[^*])*[*]/' lex() line-comment: $'//[^\n]*\n' lex() # # End of file # eof: $"\'" Token.unit($(loc), eof) omake-0.9.8.5/lib/OMakeroot.om0000664000152300015230000000253610615701364014147 0ustar jyhjyh######################################################################## # General configuration. # # Copyright (C) 2003-2004 Jason Hickey and Mojave Group # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the File # is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the File. # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # FILE OR THE USE OR OTHER DEALINGS IN THE FILE. # # By default, include all the preconfigured build projects. # open build/C open build/OCaml open build/LaTeX ######################################################################## # Define the command-line variables. # DefineCommandVars() omake-0.9.8.5/lib/boot/0000775000152300015230000000000010660137255012651 5ustar jyhjyhomake-0.9.8.5/lib/boot/Default0000664000152300015230000001005310446616614014162 0ustar jyhjyhOMakeroot = $(License)$''' ######################################################################## # The standard OMakeroot file. # You will not normally need to modify this file. # By default, your changes should be placed in the # OMakefile in this directory. # # If you decide to modify this file, note that it uses exactly # the same syntax as the OMakefile. # # # Include the standard installed configuration files. # Any of these can be deleted if you are not using them, # but you probably want to keep the Common file. # open build/C open build/OCaml open build/LaTeX # # The command-line variables are defined *after* the # standard configuration has been loaded. # DefineCommandVars() # # Include the OMakefile in this directory. # .SUBDIRS: . ''' ######################################################################## ######################################################################## ######################################################################## OMakefile = $(License)$""" ######################################################################## # The standard OMakefile. # You will usually need to modify this file for your project. # Delete this line once you have configured this file eprintln($$(CWD)/OMakefile is not configured) ######################################################################## # Phony targets are scoped, so you probably want to declare them first. # # .PHONY: all install clean ######################################################################## # Subdirectories. # You may want to include some subdirectories in this project. # If so, define the subdirectory targets and uncomment this section. # # .SUBDIRS: ######################################################################## # C configuration. # Delete this section if you are not building C files. # ################################################ # Configuration. You might want to modify any of these # configuration variables. # # CFLAGS += # ASFLAGS += # LDFLAGS += # INCLUDES += ################################################ # Uncomment the following section if you want # to build a C program in the current directory. # # CFILES[] = # file1 # main # # MAIN = main # # .DEFAULT: $$(CProgram $$(MAIN), $$(CFILES)) ################################################ # Uncomment the following section if you want to build a C library # in the current directory. # # LIBFILES[] = # file1 # file2 # # LIB = libxxx # # .DEFAULT: $$(StaticCLibrary $$(LIB), $$(LIBFILES)) ######################################################################## # OCaml configuration. # Delete this section if you are not building OCaml files. # ################################################ # Configuration. You may want to modify any of these configuration # variables. # # # This project requires ocamlfind (default - false). # # USE_OCAMLFIND = true # # OCAMLPACKS[] = # pack1 # pack2 # # if $$(not $$(OCAMLFIND_EXISTS)) # eprintln(This project requires ocamlfind, but is was not found.) # eprintln(You need to install ocamlfind and run "omake --configure".) # exit 1 # # Include path # # OCAMLINCLUDES += # # Compile native or byte code? # # The default values are defined as follows: # # NATIVE_ENABLED = $$(OCAMLOPT_EXISTS) # BYTE_ENABLED = $$(not $$(OCAMLOPT_EXISTS)) # # Various options # # OCAMLFLAGS += # OCAMLCFLAGS += # OCAMLOPTFLAGS += # OCAML_LINK_FLAGS += # OCAML_BYTE_LINK_FLAGS += # OCAML_NATIVE_LINK_FLAGS += ################################################ # Generated files # # Workaround for the fact that ocamldep does not pay attention to .mll # and .mly files. # # OCamlGeneratedFiles(parser.ml lexer.ml) ################################################ # Build an OCaml library # # FILES[] = # file1 # file2 # # LIB = main # # .DEFAULT: $$(OCamlLibrary $$(LIB), $$(FILES)) ################################################ # Build an OCaml program # # FILES[] = # file1 # file2 # # PROGRAM = # OCAML_LIBS += # OCAML_CLIBS += # OCAML_OTHER_LIBS += # OCAML_LIB_FLAGS += # # .DEFAULT: $$(OCamlProgram $$(PROGRAM), $$(FILES)) """ omake-0.9.8.5/lib/boot/License0000664000152300015230000000164410274750515014164 0ustar jyhjyhLicense = $"""######################################################################## # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the # File is furnished to do so, subject to the following condition: # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE FILE OR # THE USE OR OTHER DEALINGS IN THE FILE. """ omake-0.9.8.5/lib/configure/0000775000152300015230000000000010660137255013667 5ustar jyhjyhomake-0.9.8.5/lib/configure/snprintf.om0000664000152300015230000000101510615733327016066 0ustar jyhjyhopen configure/Configure # \begin{doc} # \subsection{Snprintf configuration} # Add \verb+open configure/snprintf+ line to your \verb+OMakefile+ to get access to the following # autoconfiguration variables. # \varlabel{SNPRINTF_AVAILABLE}{SNPRINTF\_AVAILABLE} A boolean flag telling whether the snprintf # function is available in the standard C library. # # \end{doc} # .STATIC: SNPRINTF_AVAILABLE = false section SNPRINTF_AVAILABLE = $(VerboseCheckLib $(EMPTY), snprintf) export SNPRINTF_AVAILABLE omake-0.9.8.5/lib/configure/readline.om0000664000152300015230000000370010622110172015772 0ustar jyhjyh# # Readline configuration # # \begin{doc} # \subsection{ReadLine library configuration} # Add \verb+open configure/readline+ line to your \verb+OMakefile+ to get access to the following # autoconfiguration variables. # \varlabel{READLINE_AVAILABLE}{READLINE\_AVAILABLE} A boolean flag that would be set when both # the \verb+readline/readline.h+ header, the \verb+readline/history.h+ header, and the \verb+readline+ # library very found. # # \varlabel{READLINE_GNU}{READLINE\_GNU} A boolean flag that would be set # when the GNU version of the readline library is found (as opposed to the BSD one). # # \varlabel{READLINE_CFLAGS}{READLINE\_CFLAGS} The \verb+CFLAGS+ to use when compiling readline code. # Will include \verb+-DREADLINE_ENABLED+ and \verb+-DREADLINE_GNU+, respectively # when \verb+READLINE_AVAILABLE+ and \verb+READLINE_GNU+ are true. # # \varlabel{READLINE_CLIBS}{READLINE\_CLIBS} The \verb+LDFLAGS+ to use when linking readline code. # Will normally contain \verb+-lncurses -lreadline+ when readline is found and remain empty otherwise. # \end{doc} # # open configure/Configure open configure/ncurses .STATIC: READLINE_AVAILABLE = false READLINE_CLIBS = READLINE_CFLAGS = READLINE_GNU = false if $(and $(NCURSES_AVAILABLE), $(not $(equal $(OSTYPE), Win32))) ConfMsgChecking(for readline) # Test that readline exists if $(and $(CheckHeader readline/readline.h readline/history.h), $(CheckLib ncurses readline, tgetent tgetstr readline)) READLINE_AVAILABLE = true READLINE_CLIBS = -lncurses -lreadline READLINE_CFLAGS += -DREADLINE_ENABLED # Test for GNU if $(CheckLib ncurses readline, rl_on_new_line) READLINE_GNU = true READLINE_CFLAGS += -DREADLINE_GNU export export ConfMsgResult($(if $(READLINE_AVAILABLE), $"found, $(if $(not $(READLINE_GNU)), non-)GNU", NOT found)) export omake-0.9.8.5/lib/configure/fam.om0000664000152300015230000000252610615701364014772 0ustar jyhjyhopen configure/Configure # # Figure out if FAM is installed # .STATIC: FAM_AVAILABLE = false FAM_CFLAGS = FAM_CLIBS = if $(equal $(OSTYPE), Win32) FAM_AVAILABLE = true FAM_CFLAGS = /DFAM_ENABLED /DFAM_PSEUDO export else # Unix ConfMsgChecking(for FAM) # See if the FamOpen function exists FAM_AVAILABLE = $(and $(CheckHeader fam.h), $(CheckLib fam, FAMOpen)) # If native FAM doesn't exist, try using kqueue if $(FAM_AVAILABLE) FAM_CLIBS = -lfam FAM_CFLAGS = -DFAM_ENABLED ConfMsgResult(found) ConfMsgChecking($"whether FAM supports Gamin's extensions") if $(ConfMsgYesNo $(CheckLib fam, FAMNoExists)) FAM_CFLAGS += -DHAVE_FAMNOEXISTS export export elseif $(CheckHeader sys/event.h) ConfMsgResult(using kqueue) FAM_AVAILABLE = true FAM_CFLAGS = -DFAM_ENABLED -DFAM_PSEUDO -DFAM_KQUEUE FAM_CLIBS = if $(VerboseCheckHeader string.h) FAM_CFLAGS += -DHAVE_STRING_H export if $(VerboseCheckHeader strings.h) FAM_CFLAGS += -DHAVE_STRINGS_H export export else ConfMsgResult(NOT found) export omake-0.9.8.5/lib/configure/ncurses.om0000664000152300015230000000331610615701364015707 0ustar jyhjyhopen configure/Configure # # ncurses configuration # # \begin{doc} # \subsection{NCurses library configuration} # Add \verb+open configure/ncurses+ line to your \verb+OMakefile+ to get access to the following # autoconfiguration variables. # \varlabel{NCURSES_AVAILABLE}{NCURSES\_AVAILABLE} A boolean flag that would be set when both # the \verb+curses.h+ header, the \verb+term.h+ header, and the \verb+ncurses+ library very found. # # \varlabel{NCURSES_TERMH_IN_NCURSES}{NCURSES\_TERMH\_IN\_NCURSES} A boolean flag that would be set # when \verb+term.h+ has to be included as \verb++ instead of \verb++. # # \varlabel{NCURSES_CFLAGS}{NCURSES\_CFLAGS} The \verb+CFLAGS+ to use when compiling ncurses code. # Will include \verb+-DNCURSES+ and \verb+-DTERMH_IN_NCURSES+, respectively # when \verb+NCURSES_AVAILABLE+ and \verb+NCURSES_TERMH_IN_NCURSES+ are true. # # \varlabel{NCURSES_CLIBS}{NCURSES\_CLIBS} The \verb+LDFLAGS+ to use when linking ncurses code. # Will normally contain \verb+-lncurses+ when ncurses is found and remain empty otherwise. # \end{doc} # # \end{doc} # .STATIC: NCURSES_AVAILABLE = false NCURSES_TERMH_IN_NCURSES = false if $(not $(equal $(OSTYPE), Win32)) ConfMsgChecking(for ncurses) NCURSES_TERMH_IN_NCURSES = $(CheckHeader ncurses/term.h) NCURSES_AVAILABLE = $(ConfMsgFound $(and $(CheckHeader ncurses.h), $(or $(NCURSES_TERMH_IN_NCURSES), $(CheckHeader term.h)), $(CheckLib ncurses, initscr setupterm tigetstr))) export NCURSES_CFLAGS[] = $(if $(NCURSES_AVAILABLE), -DNCURSES, $(EMPTY_ARRAY)) $(if $(NCURSES_TERMH_IN_NCURSES), -DTERMH_IN_NCURSES, $(EMPTY_ARRAY)) NCURSES_CLIBS = $(if $(NCURSES_AVAILABLE), -lncurses) omake-0.9.8.5/lib/configure/Configure.om0000664000152300015230000002714710640577000016152 0ustar jyhjyh# # Configuration utilities # # \begin{doc} # \chapter{Autoconfiguration functions and variables} # \label{chapter:autoconf} # \cutname{omake-autoconf.html} # \OMake{} standard library provides a number of functions and variables intended to help one write # build specifications that need to be capable of autoconfiguring itself to adjust to different # build environments. # # \section{General-purpose autoconfiguration functions} # The following general-purpose functions can be used to discover the properties of your build # environment in a fashion similar to the one used by GNU autoconf tool you may be familiar with. # It is recommended that these function be used from an appropriate \verb+static.+ block (see # Section~\ref{section:static.} for more information). # # In order to use the following general-purpose functions, you need to have the line # \begin{verbatim} # open configure/Configure # \end{verbatim} # included in your \verb+OMakefile+ or \verb+OMakeroot+. # \end{doc} open build/Common # # As of 0.9.9, all external variables mut be declared. # Since this module uses the C compiler, we must open build/C. # However, build/C also uses configuration, so we have a # circular dependency. The solution is to "autoload" C, # which means we load it on demand, breaking the cycle. # # In 0.9.8 this is a no-op. # autoload build/C # # A number of helper functions, using the autoconf names, when appropriate. # # \begin{doc} # \twofuns{ConfMsgChecking}{ConfMsgResult} # \begin{verbatim} # ConfMsgChecking() # ... # ConfMsgResult() # \end{verbatim} # The \verb+ConfMsgChecking+ function output message of the form \verb+--- Checking ... + # \emph{without} any trailing newline. After the test advertized by \verb+ConfMsgChecking+ is # performed, the \verb+ConfMsgResult+ function should be used to output the result. # # In certain cases users may want to redefine these function --- for example, to use a different # output formatting and/or to copy the messages to a log file. # # Example: # \begin{verbatim} # static. = # ConfMsgChecking(which foo to use) # foo = ... # ConfMsgResult($(foo)) # \end{verbatim} # \end{doc} # ConfMsgChecking(msg) = print($"--- Checking $(msg)... ") ConfMsgResult(msg) = println($"($(msg))") # \begin{doc} # \twofuns{ConfMsgWarn}{ConfMsgError} # \begin{verbatim} # ConfMsgWarn() # ConfMsgError() # \end{verbatim} # # Print a warning or an error message respectively. \verb+ConfMsgError+ would then abort \OMake. # \end{doc} ConfMsgWarn(msg) = msg[] = $(split $(nl), $(msg)) print($(concat $(EMPTY), $(add-wrapper $'--- *** ', $(nl), $(msg)))) ConfMsgError(msg) = msg[] = $(split $(nl), $(msg)) eprintln($"""*** ERROR: $(concat '$(nl)--- ', $(msg))""") exit(1) # # \begin{doc} # \twofuns{ConfMsgYesNo}{ConfMsgFound} # \begin{verbatim} # flag = $(ConfMsgYesNo # flag = $(ConfMsgFound # \end{verbatim} # # The \verb+ConfMsgFound+ function expects to receive a boolean flag describing whether a test # previously announced using the \hyperfun{ConfMsgChecking} found what it # was looking for. \verb+ConfMsgFound+ will output the appropriate result (``found'' or ``NOT found'') # using the \hyperfun{ConfMsgResult} and return its argument back. # # The \verb+ConfMsgYesNo+ function is similar, outputting a simple (``yes'' or ``NO''). # \end{doc} # ConfMsgYesNo(found) = ConfMsgResult($(if $(found), yes, NO)) return $(found) ConfMsgFound(found) = ConfMsgResult($(if $(found), found, NOT found)) return $(found) # \begin{doc} # \threefuns{TryCompileC}{TryLinkC}{TryRunC} # \begin{verbatim} # success = $(TryCompileC ) # success = $(TryLinkC ) # success = $(TryRunC ) # \end{verbatim} # # Given the \emph{text} of a C program, the \verb+TryCompileC+, \verb+TryLinkC+, and \verb+TryRunC+ # functions would try to compile / compile and link / compile, link, and run, the given program and return a boolean flag # indicating whether the attempt was successful. # # \verb+TryCompileC+ will use the \hypervarn{CC}, \hypervarn{CFLAGS} and \hypervarn{INCLUDES} variables # to run the C compiler. \verb+TryLinkC+ and \verb+TryRunC+ will also use the \hypervar{LDFLAGS} # to run the C compiler and linker. However, the flags like \verb+/WX+, \verb+-Werror+ and \verb+-warn-error+ # will be not be passed to the compiler, even if they occur in \verb+CFLAGS+. # # These functions are silent and should normally be used with an appropriate # \hyperfunn{ConfMsgChecking} $\ldots$ \hyperfunn{ConfMsgResult}. # \end{doc} ConfCleanCFLAGS(cflags) = value $(filter-out /WX -Werror --warn-error, $(cflags)) TryCompilingC(command, command_suffix, ext, prog, extra) = # The command line tmp_c = $(file $(tmpfile omake, .c)) tmp = $(file $(replacesuffixes .c, $"$(EMPTY)", $(tmp_c))) if $(and $(not $(equal $(CCOUT), $(LDOUT))), $(equal $(ext), $(EXE))) command[] += $(CCOUT)$(file $(tmp)$(EXT_OBJ)) $(LDOUT)$(file $(tmp)$(ext)) export else command[] += $(CCOUT)$(file $(tmp)$(ext)) export command[] += $(file $(tmp_c)) $(command_suffix) # The program program = $"""/* Configuration file; you can remove this. */ /* Command line: $(command) */ $(prog) """ # Compile it fprint($(tmp_c), $(program)) protected.result = $(shell-success-null $(command)) if $(result) switch $(extra) case Runs result = $(shell-success-null $(file $(tmp)$(EXE))) export case Output result = try value $(shell $(file $(tmp)$(EXE))) default value $(not true) export export # Remove temporaries rm -f $(tmp_c) $(tmp)$(EXT_OBJ) $(tmp)$(EXE) return $(result) TryCompileC(prog) = return $(TryCompilingC $(CC) $(ConfCleanCFLAGS $(CFLAGS)) $(PREFIXED_INCLUDES) -c, $(EMPTY), $(EXT_OBJ), $(prog), None) TryLinkC(prog) = return $(TryCompilingC $(CC) $(ConfCleanCFLAGS $(CFLAGS)) $(PREFIXED_INCLUDES), $(LDFLAGS), $(EXE), $(prog), None) TryRunC(prog) = return $(TryCompilingC $(CC) $(ConfCleanCFLAGS $(CFLAGS)) $(PREFIXED_INCLUDES), $(LDFLAGS), $(EXE), $(prog), Runs) # \begin{doc} # \fun{RunCProg} # \begin{verbatim} # output = $(RunCProg ) # \end{verbatim} # # \verb+RunCProg+ is similar to the \hyperfun{RunCProg}, except that it # returns the output of the function (will return \verb+false+ if the program fails to compile # or run). # \end{doc} RunCProg(prog) = return $(TryCompilingC $(CC) $(ConfCleanCFLAGS $(CFLAGS)) $(PREFIXED_INCLUDES), $(LDFLAGS), $(EXE), $(prog), Output) # # Check whether a header file exists. # We call the C compiler. # # \begin{doc} # \twofuns{CheckCHeader}{VerboseCheckCHeader} # \begin{verbatim} # success = $(CheckCHeader ) # success = $(VerboseCheckCHeader ) # \end{verbatim} # # Use the \hyperfun{TryCompileC} to check whether your C compiler can locate # and process the specified headers files. # Will incude \verb++ before including the header files. # # Both functions return a boolean value. The \verb+CheckCHeader+ function is silent; the # \verb+VerboseCheckCHeader+ function will use the \hyperfunn{ConfMsgChecking} and # \hyperfunn{ConfMsgResult} functions to describe the test and the outcome. # # Example: # \begin{verbatim} # static. = # NCURSES_H_AVAILABLE = $(VerboseCheckCHeader ncurses.h) # \end{verbatim} # \end{doc} # public.CheckCHeader(files) = return $(TryCompileC $""" #ifdef __cplusplus extern "C" #endif #pragma warning( disable : 4100 ) #include $(add-wrapper $(nl)$'#include <', >, $(files)) int main(int argc, char **argv) { return 0; } """) public.VerboseCheckCHeader(files) = ConfMsgChecking(for $(files)) return $(ConfMsgFound $(CheckCHeader $(files))) # # Check whether the libraries have the given functions # # \begin{doc} # \twofuns{CheckCLib}{VerboseCheckCLib} # \begin{verbatim} # success = $(CheckCLib , ) # success = $(VerboseCheckCLib , ) # \end{verbatim} # # Use the \hyperfun{TryLinkC} to check whether your C compiler and linker can # find the named functions when linking with the named libraries. Will pass the \verb++ to # the compiler using the \verb+-l+ flag. # # Both functions return a boolean value. The \verb+CheckCLib+ function is silent; the # \verb+VerboseCheckCHeader+ function will use the \hyperfunn{ConfMsgChecking} and # \hyperfunn{ConfMsgResult} functions to describe the test and the outcome. # # Example: # \begin{verbatim} # static. = # NCURSES_LIB_AVAILABLE = $(VerboseCheckCLib ncurses, initscr setupterm tigetstr) # \end{verbatim} # \end{doc} # public.CheckCLib(libs, funs) = CFLAGS += $(addprefix -l, $(libs)) return $(TryLinkC $""" #ifdef __cplusplus extern "C" #endif #pragma warning( disable : 4100 ) /* Override any gcc2 internal prototype to avoid an error. */ $(add-wrapper $(nl)extern char , $'();', $(funs)) int main(int argc, char **argv) { /* Usage */ $(add-wrapper $(nl) , $'();', $(funs)) return 0; } """) public.VerboseCheckCLib(libs, funs) = msg1 = $(if $(funs), $"""function$(if $(gt $(length $(funs)), 1), s) $(concat $", ", $(funs))""") msg2 = $(if $(libs), $"""librar$(if $(gt $(length $(libs)), 1), ies, y) $(concat $", ", $(libs))""") ConfMsgChecking($"""for $(msg1)$(if $(not $(or $(not $(funs)), $(not $(libs)))), $' in ')$(msg2)""") return $(ConfMsgFound $(CheckCLib $(libs), $(funs))) # # Backwards compatibility # # XXX: Once we decide how we are going to provide the multi-language support, # we should either update these or have them produce an "obsolete" warning. # public.CheckLib = $(CheckCLib) public.VerboseCheckLib = $(VerboseCheckCLib) public.CheckHeader = $(CheckCHeader) public.VerboseCheckHeader = $(VerboseCheckCHeader) # # Check whether a program exists in the PATH # # \begin{doc} # \fun{CheckProg} # \verb+success = $(CheckProg )+ # # Checks whether the program \verb++ exists in your path. Will use the # \hyperfunn{ConfMsgChecking} and # \hyperfunn{ConfMsgResult} functions to describe the test and the outcome. # # \end{doc} # public.CheckProg(prog) = ConfMsgChecking(for $(prog)) WHERE = $(where $(prog)) if $(WHERE) ConfMsgResult(found $(nth 0, $(WHERE))) return true else ConfMsgResult(FAILED - no $(prog) found) return false # # \begin{doc} # \section{Translating \code{autoconf} scripts} # Some of the functions described above are very similar to the ones present in \verb+autoconf+. # Below is a brief translation table for such functions. # \begin{description} # \itemidx{AC\_MSG\_CHECKING} is very similar to \hyperfun{ConfMsgChecking}. # \itemidx{AC\_MSG\_RESULT} is very similar to \hyperfun{ConfMsgResult}. # \itemidx{AC\_MSG\_WARN} is very similar to \hyperfun{ConfMsgWarn}. # \itemidx{AC\_MSG\_ERROR} is very similar to \hyperfun{ConfMsgError}. # \itemidx{AC\_TRY\_COMPILE} is somewhat similar to \hyperfun{TryCompileC}, # except the \hyperfun{TryCompileC} returns a boolean value and only works for \verb+C+. Similarly, # \itemidx{AC\_TRY\_LINK} is approximated by \hyperfun{TryLinkC}, and # \itemidx{AC\_TRY\_RUN} is approximated by \hyperfun{TryRunC}. # \end{description} # # \section{Predefined configuration tests} # A number of configuration tests are already included in the standard library. # In order to use them in your project, simply \verb+open+ (see Section~\ref{section:include}) the # corresponding build file in your \verb+OMakefile+ and the tests will run the first time \OMake{} # is executed. Note that it is not a problem to \verb+open+ these files from more than one place in # your project --- if you do that, the test will still run only once. # \end{doc} # omake-0.9.8.5/lib/configure/fs_case_sensitive.om0000664000152300015230000000254410615701364017723 0ustar jyhjyhopen configure/Configure .STATIC: DETECT_FS_CASE_SENSITIVE = false DETECT_FS_CASE_SENSITIVE_CFLAGS = if $(equal $(OSTYPE), Win32) DETECT_FS_CASE_SENSITIVE = false export else ConfMsgChecking(for optimal filesystem case-sensitivity test) if $(TryLinkC $""" /* For statfs */ #include #include /* For getattrlist */ #include #include typedef struct vol_caps_buf { unsigned long size; vol_capabilities_attr_t caps; } vol_caps_buf_t; /* This is nonsense, but it includes every identifier we care about */ int main(int argc, char *argv[]) { struct statfs stat; statfs(".", &stat); struct attrlist alist; alist.bitmapcount = ATTR_BIT_MAP_COUNT; alist.volattr = ATTR_VOL_CAPABILITIES; vol_caps_buf_t buffer; getattrlist(stat.f_mntonname, &alist, &buffer, sizeof(buffer), 0); /* Check for the capabilities we need */ int foo = ATTR_VOL_CAPABILITIES + VOL_CAPABILITIES_FORMAT + VOL_CAP_FMT_CASE_SENSITIVE; return 0; } """) ConfMsgResult($"Mac OS X implementation, using getattrlist") DETECT_FS_CASE_SENSITIVE = true DETECT_FS_CASE_SENSITIVE_CFLAGS = -DDETECT_FS_CASE_SENSITIVE_GETATTRLIST export else ConfMsgResult(Generic) export omake-0.9.8.5/lib/configure/X.om0000664000152300015230000000221110615701364014425 0ustar jyhjyh# # Some basic test for X. # static. = X_LDFLAGS = X_INCLUDES = if $(CheckProg xmkmf) FOUND_INCLUDES = false FOUND_LIB = false ConfMsgChecking(for X library and header location") mkdir .conftest.dir CWD = $(dir .) cd .conftest.dir fprintln(Imakefile, $(EMPTY)) if $(and $(shell-success-null xmkmf), $(test -r Makefile)) awk(Makefile) case $'^[[:space:]]*INCROOT[[:space:]]*=[[:space:]]*\(.*\)$' FOUND_INCLUDES = true if $(not $(equal $1, /usr/include)) X_INCLUDES = $(dir $"$1") export export case $'^[[:space:]]*(USR)?LIBDIR[[:space:]]*=[[:space:]]*\(.*\)$' if $(glob iF, $1/libX11.*) FOUND_LIB = true if $(not $(mem $1, /usr/lib /lib)) X_LDFLAGS = $"-L$1" export export export ConfMsgFound($(and $(FOUND_INCLUDES), $(FOUND_LIB))) cd $(CWD) rm -rf .conftest.dir export X_LDFLAGS X_INCLUDES omake-0.9.8.5/lib/Pervasives.om0000664000152300015230000011040110655724732014375 0ustar jyhjyh######################################################################## # Copyright (C) 2003-2007 Jason Hickey and Mojave Group # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the File # is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the File. # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # FILE OR THE USE OR OTHER DEALINGS IN THE FILE. ######################################################################## # This file defines the Pervasives module--the standard module # open to every program. This is a bootstrap file. The syntax # here is mainly normal, but it is assumed that the basic classes # are empty at this point. You never need to assume this again. # class Pervasives ######################################################################## # Common variables and utilities # public. = declare BUILD_SUMMARY declare CWD declare FS declare GLOB_ALLOW declare GLOB_IGNORE declare GLOB_OPTIONS declare NF declare OMAKEPATH declare PATH declare RS declare STDLIB declare STDROOT declare TARGETS declare prompt declare EMPTY declare EMPTY_ARRAY EMPTY = EMPTY_ARRAY[] = TAB = $' ' shell-success(argv) = try value $(equal $(shell-code $(argv)), 0) default value $(not true) shell-success-null(argv) = # XXX: HACK: Is there a portable /dev/null? # Perhaps we should fix http://bugzilla.metaprl.org/show_bug.cgi?id=619 # and use a string out channel? tmp = $(tmpfile omake.shell-success-null) stdout = $(fopen $(tmp), w) stderr = $(stdout) res = $(shell-success $(argv)) close($(stdout)) rm(-f $(tmp)) return $(res) last(array) = return $(nth $(sub $(length $(array)), 1), $(array)) Bool(v) = value $(not $(not $v)) nonempty(l) = gt($(length $l), 0) # GNU Make - like join function join(l1, l2) = result[] = while $(and $(nonempty $(l1)), $(nonempty $(l2))) x = $(nth 0, $(l1)) y = $(nth 0, $(l2)) l1 = $(nth-tl 1, $(l1)) l2 = $(nth-tl 1, $(l2)) result[] += $x$y # From GNU Make docs: If one argument has more words that the other, # the extra words are copied unchanged into the result result[] += $(l1) result[] += $(l2) value $(result) # Documented in src/builtin/omake_builtin_sys.ml xterm-escape(s) = if $(xterm-escape-begin) value $(xterm-escape-begin)$s$(xterm-escape-end) else value $(EMPTY) prompt-invisible(s) = value $(prompt-invisible-begin)$s$(prompt-invisible-end) ######################################################################## # \begin{doc} # # \chapter{The standard objects} # \label{chapter:pervasives} # \cutname{omake-pervasives.html} # # \verb+Pervasives+ defines the objects that are defined in all # programs. The following objects are defined. # # \section{Pervasives objects} # # \obj{Object} # # Parent objects: none. # # The \verb+Object+ object is the root object. # Every class is a subclass of \verb+Object+. # # It provides the following fields: # # \begin{itemize} # \item \verb+$(o.object-length)+: the number of fields and methods in the object. # \item \verb+$(o.object-mem )+: returns \verb+true+ iff the \verb++ is a field # or method of the object. # \item \verb+$(o.object-add , )+: adds the field to the object, # returning a new object. # \item \verb+$(o.object-find )+: fetches the field or method from the object; # it is equivalent to \verb+$(o.)+, but the variable can be non-constant. # \item \verb+$(o.object-map )+: maps a function over the object. The function # should take two arguments; the first is a field name, the second is the # value of that field. The result is a new object constructed from the # values returned by the function. # \item \verb+o.object-foreach+: the \verb+object-foreach+ form is equivalent to \verb+object-map+, # but with altered syntax. # # \begin{verbatim} # o.object-foreach(, ) # # \end{verbatim} # # For example, the following function prints all the fields of an # object \verb+o+. # # \begin{verbatim} # PrintObject(o) = # o.object-foreach(v, x) # println($(v) = $(x)) # \end{verbatim} # # The \verb+export+ form is valid in a \verb+object-foreach+ body. The following # function collects just the field names of an object. # # \begin{verbatim} # FieldNames(o) = # names[] = # o.object-foreach(v, x) # names[] += $(v) # export # return $(names) # \end{verbatim} # \end{itemize} # # \end{doc} # Object. += class Object object-length() = return $(obj-length $(this)) object-mem(v) = return $(obj-mem $(this), $(v)) object-add(v, x) = return $(obj-add $(this), $(v), $(x)) object-find(v) = return $(obj-find $(this), $(v)) object-map(f) = return $(obj-map $(this), $(f)) object-foreach(body, v, x) = export obj-map($(this), $(v), $(x), $(body)) instanceof(v) = return $(obj-instanceof $(this), $(v)) public.Object = $(this.Object) # # The runtime doesn't know to include the Object module, so do it now. # extends $(Object) # # \begin{doc} # \obj{Map} # # Parent objects: \verb+Object+. # # A \verb+Map+ object is a dictionary from values to values. The \verb++ # values are restricted to simple values: integers, floating-point numbers, # strings, files, directories, and arrays of simple values. # # The Map object provides the following methods. # # \begin{itemize} # \item \verb+$(o.length)+: the number of items in the map. # \item \verb+$(o.mem )+: returns \verb+true+ iff the \verb++ is defined # in the map. # \item \verb+$(o.add , )+: adds the field to the map, # returning a new map. # \item \verb+$(o.find )+: fetches the field from the map. # \item \verb+$(o.keys)+: fetches an array of all the keys in the map, in alphabetical order. # \item \verb+$(o.values)+: fetches an array of all the values in the map, # in the alphabetical order of the corresponding keys. # \item \verb+$(o.map )+: maps a function over the map. The function # should take two arguments; the first is a field name, the second is the # value of that field. The result is a new object constructed from the # values returned by the function. # \item \verb+o.foreach+: the \verb+foreach+ form is equivalent to \verb+map+, # but with altered syntax. # # \begin{verbatim} # o.foreach(, ) # # \end{verbatim} # # For example, the following function prints all the fields of an # object \verb+o+. # # \begin{verbatim} # PrintObject(o) = # o.foreach(v, x) # println($(v) = $(x)) # \end{verbatim} # # The \verb+export+ form is valid in a \verb+foreach+ body. The following # function collects just the field names of the map. # # \begin{verbatim} # FieldNames(o) = # names = # o.foreach(v, x) # names += $(v) # export # return $(names) # \end{verbatim} # \end{itemize} # # There is also simpler syntax when the key is a string. The table can be # defined using definitions with the form \verb+$|key|+ # (the number of pipe symbols \verb+|+ is allowed to vary). # # \begin{verbatim} # $|key 1| = value1 # $||key1|key2|| = value2 # The key is key1|key2 # X = $|key 1| # Define X to be the value of field $|key 1| # \end{verbatim} # # The usual modifiers are also allowed. The expression \verb+$`|key|+ represents # lazy evaluation of the key, and \verb+$,|key|+ is normal evaluation. # # \end{doc} # Map. += class Map extends $(Object) mem(v) = return $(map-mem $(this), $(v)) add(v, x) = return $(map-add $(this), $(v), $(x)) remove(v) = return $(map-remove $(this), $(v)) find(v) = return $(map-find $(this), $(v)) map(f) = return $(map-map $(this), $(f)) foreach(body, v, x) = export map-map($(this), $(v), $(x), $(body)) length() = return $(map-length $(this)) keys() = return $(map-keys $(this)) values() = return $(map-values $(this)) ######################################################################## # \begin{doc} # \obj{Number} # # Parent objects: \verb+Object+. # # The \verb+Number+ object is the parent object for integers # and floating-point numbers. # \end{doc} # Number. += class Number extends $(Object) public.Number = $(Number) # # \begin{doc} # \obj{Int} # # Parent objects: \verb+Number+. # # The \verb+Int+ object represents integer values. # \end{doc} # Int. += class Int extends $(Number) # # \begin{doc} # \obj{Float} # # Parent objects: \verb+Number+. # # The \verb+Float+ object represents floating-point numbers. # \end{doc} # Float. += class Float extends $(Number) ######################################################################## # \begin{doc} # \obj{Sequence} # # Parent objects: \verb+Object+. # # The \verb+Sequence+ object represents a generic object containing # sequential elements. It provides the following methods. # # \begin{itemize} # \item \verb+$(s.length)+: the number of elements in the sequence. # \item \verb+$(s.map )+: maps a function over the fields in the sequence. # The function should take one argument. The result is a new sequence # constructed from the values returned by the function. # \item \verb+s.foreach+: the \verb+foreach+ form is equivalent to \verb+map+, # but with altered syntax. # # \begin{verbatim} # s.foreach() # # \end{verbatim} # # For example, the following function prints all the elements of the sequence. # # \begin{verbatim} # PrintSequence(s) = # s.foreach(x) # println(Elem = $(x)) # \end{verbatim} # # The \verb+export+ form is valid in a \verb+foreach+ body. The following # function counts the number of zeros in the sequence. # # \begin{verbatim} # Zeros(s) = # count = $(int 0) # s.foreach(v) # if $(equal $(v), 0) # count = $(add $(count), 1) # export # export # return $(count) # \end{verbatim} # # \item \verb+$(s.forall )+: tests whether each element of the sequence # satifies a predicate. # \item \verb+$(s.exists )+: tests whether the sequence contains an element # that satisfies a predicate. # \item \verb+$(s.sort )+: sorts a sequence. The \verb++ is a comparison # function. It takes two elements \verb+(x, y)+ of the sequence, compares them, and returns # a negative number if $x < y$, a positive number if $x > y$, and zero if the two elements # are equal. # # \begin{verbatim} # osh> items = $(int 0 3 -2) # osh> items.forall(x => $(gt $x, 0)) # - : bool = false # osh> items.exists(x => $(gt $x, 0)) # - : bool = true # osh> items.sort($(compare)) # - : Array = -2 3 0 # \end{verbatim} # # \end{itemize} # \end{doc} # Sequence. += class Sequence extends $(Object) length() = sequence-length($(this)) nth(i) = sequence-nth($(this), $(i)) sub(off, len) = sequence-sub($(this), $(off), $(len)) rev() = sequence-rev($(this)) map(f) = sequence-map($(f), $(this)) foreach(body, v) = export sequence-map($(body), $(v), $(this)) forall(f) = sequence-forall($f, $(this)) exists(f) = sequence-exists($f, $(this)) sort(f) = sequence-sort($f, $(this)) public.Sequence = $(Sequence) # # \begin{doc} # \obj{Array} # # Parent objects: \verb+Sequence+. # # The \verb+Array+ is a random-access sequence. # It provides the following additional methods. # # \begin{itemize} # \item \verb+$(s.nth )+: returns element \verb+i+ of the sequence. # \item \verb+$(s.rev )+: returns the reversed sequence. # \end{itemize} # # \end{doc} # Array. += class Array extends $(Sequence) public.Array = $(Array) # # \begin{doc} # \obj{String} # # Parent objects: \verb+Array+. # \end{doc} # String. += class String extends $(Array) ######################################################################## # \begin{doc} # \obj{Fun} # # Parent objects: \verb+Object+. # # The \verb+Fun+ object provides the following methods. # \begin{itemize} # \item \verb+$(f.arity)+: the arity if the function. # \end{itemize} # \end{doc} # Fun. += class Fun extends $(Object) arity() = return $(sequence-length $(this)) ######################################################################## # \begin{doc} # \obj{Rule} # # Parent objects: \verb+Object+. # # The \verb+Rule+ object represents a build rule. # It does not currently have any methods. # \end{doc} # Rule. += class Rule extends $(Object) # # \begin{doc} # \obj{Target} # # Parent object: \verb+Object+. # # The \verb+Target+ object contains information collected for # a specific target file. # # \begin{itemize} # \item \verb+target+: the target file. # \item \verb+effects+: the files that may be modified by a # side-effect when this target is built. # \item \verb+scanner_deps+: static dependencies that must be built # before this target can be scanned. # \item \verb+static-deps+: statically-defined build dependencies # of this target. # \item \verb+build-deps+: all the build dependencies for the target, # including static and scanned dependencies. # \item \verb+build-values+: all the value dependencies associated # with the build. # \item \verb+build-commands+: the commands to build the target. # \item \verb+output-file+: if output was diverted to a file, # with one of the \verb+--output-*+ options~\ref{chapter:options}, # this field names that file. Otherwise it is \verb+false+. # \end{itemize} # # The object supports the following methods. # # \begin{itemize} # \item \verb+find(file)+: returns a Target object for the given file. # Raises a \verb+RuntimeException+ if the specified target is # not part of the project. # \item \verb+find-optional(file)+: returns a \verb+Target+ object # for the given file, or \verb+false+ if the file is not # part of the project. # \end{itemize} # # NOTE: the information for a target is constructed dynamically, # so it is possible that the \verb+Target+ object for a node will # contain different values in different contexts. The easiest way # to make sure that the \verb+Target+ information is complete is # to compute it within a rule body, where the rule depends on # the target file, or the dependencies of the target file. # \end{doc} # Target. += class Target extends $(Object) target = effects = scanner-deps = static-deps = build-deps = build-values = build-commands = output-file = false find(file) = return $(target $(file)) find-optional(file) = return $(target-optional $(file)) ######################################################################## # \begin{doc} # \obj{Node} # # Parent objects: \verb+Object+. # # The \verb+Node+ object is the parent object for files and directories. # It supports the following operations. # \begin{itemize} # \end{doc} # Node. += class Node extends $(Object) # # \begin{doc} # \item \verb+$(node.stat)+: returns a \verb+stat+ object for the file. If the # file is a symbolic link, the \verb+stat+ information is for the destination of # the link, not the link itself. # # # \item \verb+$(node.lstat)+: returns a \verb+stat+ object for the file or symbolic link. # \end{doc} # stat() = return $(public.stat $(this)) lstat() = return $(public.lstat $(this)) # # \begin{doc} # \item \verb+$(node.unlink)+: removes the file. # \item \verb+$(node.rename )+: renames the file. # \item \verb+$(node.link )+: creates a hard link \verb++ to this file. # \item \verb+$(node.symlink )+: create a symbolic link \verb++ to this file. # \end{doc} # unlink() = return $(public.unlink $(this)) rename(file) = return $(public.rename $(this), $(file)) link(file) = return $(public.link $(this), $(file)) symlink(file) = return $(public.symlink $(this), $(file)) # # \begin{doc} # \item \verb+$(node.chmod )+: change the permission of this file. # \item \verb+$(node.chown , )+: change the owner and group id of this file. # \end{doc} # chmod(perm) = return $(public.chmod $(this), $(perm)) chown(uid, gid) = return $(public.chown $(this), $(uid), $(gid)) public.Node = $(Node) # # \begin{doc} # \end{itemize} # \end{doc} # # # \begin{doc} # \obj{File} # # Parent objects: \verb+Node+. # # The file object represents the name of a file. # \end{doc} # File. += class File extends $(Node) # # \begin{doc} # \obj{Dir} # # Parent objects: \verb+Node+. # # The \verb+Dir+ object represents the name of a directory. # \end{doc} # Dir. += class Dir extends $(Node) ######################################################################## # \begin{doc} # \obj{Channel} # # Parent objects: \verb+Object+. # # A \verb+Channel+ is a generic IO channel. # It provides the following methods. # \begin{itemize} # \end{doc} Channel. += class Channel extends $(Object) # # \begin{doc} # \item \verb+$(o.close)+: close the channel. # \end{doc} # close() = public.close($(this)) # # \begin{doc} # \item \verb+$(o.name)+: returns the file name associated with the channel. # \end{doc} # name() = return $(public.channel-name $(this)) public.Channel = $(this.Channel) # # \begin{doc} # \end{itemize} # \end{doc} # ######################################################################## # \begin{doc} # \obj{InChannel} # # Parent objects: \verb+Channel+. # # A \verb+InChannel+ is an input channel. The variable \verb+stdin+ is the # standard input channel. # # It provides the following methods. # \begin{itemize} # \end{doc} # InChannel. += class InChannel extends $(Channel) # # \begin{doc} # \item \verb+$(InChannel.fopen )+: open a new input channel. # \end{doc} # fopen(file) = return $(public.fopen $(file), r) # # \begin{doc} # \item \verb+$(InChannel.of-string )+: open a new input channel, # using a string as input. # \end{doc} of-string = $(open-in-string) # # \begin{doc} # \item \verb+$(o.read )+: reads the given number of characters from the channel # \end{doc} read(amount) = return $(public.read $(this), $(amount)) # # \begin{doc} # \item \verb+$(o.readln)+: reads a line from the channel # \end{doc} readln() = return $(public.input-line $(this)) # # \begin{doc} # \end{itemize} # \end{doc} # ######################################################################## # \begin{doc} # \obj{OutChannel} # # Parent object: \verb+Channel+. # # A \verb+OutChannel+ is an output channel. The variables \verb+stdout+ # and \verb+stderr+ are the standard output and error channels. # # It provides the following methods. # \begin{itemize} # \end{doc} # OutChannel. += class OutChannel extends $(Channel) # # \begin{doc} # \item \verb+$(OutChannel.fopen )+: open a new output channel. # \end{doc} # fopen(file) = return $(public.fopen $(file), w) # # \begin{doc} # \item \verb+$(OutChannel.string)+: open a new output channel, # writing to a string. # \end{doc} # to-string() = return $(public.open-out-string) # # \begin{doc} # \item \verb+$(OutChannel.to-string)+: get the current string of # output, for an output channel created as \verb+OutChannel.open-string+. # \end{doc} # contents() = return $(public.out-contents $(this)) # # \begin{doc} # \item \verb+$(OutChannel.append )+: opens a new output channel, # appending to the file. # \end{doc} # append(file) = return $(public.fopen $(file), a) # # \begin{doc} # \item \verb+$(c.flush)+: flush the output channel. # \end{doc} # flush() = return $(public.flush $(this)) # # \begin{doc} # \item \verb+$(c.print )+: print a string to the channel. # \end{doc} # print(s) = return $(public.fprint $(this), $(s)) # # \begin{doc} # \item \verb+$(c.println )+: print a string to the channel, # followed by a line terminator. # \end{doc} # println(s) = return $(public.fprintln $(this), $(s)) # # \begin{doc} # \end{itemize} # \end{doc} # ######################################################################## # \begin{doc} # \obj{Location} # # Parent objects: \verb+Location+. # # The \verb+Location+ object represents a location in a file. # \end{doc} # Location. += class Location extends $(Object) ######################################################################## # \begin{doc} # \obj{Exception} # # Parent objects: \verb+Object+. # # The \verb+Exception+ object is used as the base object for exceptions. # It has no fields. # \end{doc} # Exception. += class Exception extends $(Object) public.Exception = $(Exception) # # \begin{doc} # \obj{RuntimeException} # # Parent objects: \verb+Exception+. # # The \verb+RuntimeException+ object represents an exception from the # runtime system. It has the following fields. # # \begin{itemize} # \item \verb+position+: a string representing the location where the # exception was raised. # \item \verb+message+: a string containing the exception message. # \end{itemize} # \end{doc} # RuntimeException. += class RuntimeException extends $(Exception) position = no position message = no message # # \begin{doc} # \obj{UnbuildableException} # # Parent objects: \verb+Exception+. # # The \verb+UnbuildableException+ object should be used to signal that a target # is not buildable. It will be caught by functions such as # \hyperfunn{target-exists}. # This exception has the following fields: # # \begin{itemize} # \item \verb+target+: indicates which target is not buildable. # \item \verb+message+: a string containing the exception message. # \end{itemize} # \end{doc} # UnbuildableException. += class UnbuildableException extends $(Exception) message = no message target = no target ######################################################################## # System objects. # Select. += class Select extends $(Object) Pipe. += class Pipe extends $(Object) Stat. += class Stat extends $(Object) Passwd. += class Passwd extends $(Object) Group. += class Group extends $(Object) ######################################################################## # The shell object. # # \begin{doc} # \obj{Shell} # # Parent objects: \verb+Object+. # # The \verb+Shell+ object contains the collection of builtin functions # available as shell commands. # # You can define aliases by extending this object with additional methods. # All methods in this class are called with one argument: a single array # containing an argument list. # # \begin{itemize} # \end{doc} # Shell. += class Shell extends $(Object) # # \begin{doc} # \item \verb+echo+ # # The \verb+echo+ function prints its arguments to the standard output channel. # \end{doc} # echo = $(echo) # # \begin{doc} # \item \verb+jobs+ # # The \verb+jobs+ method prints the status of currently running commands. # \end{doc} # jobs = $(jobs) getpwnam = $(getpwnam) getpwuid = $(getpwuid) getgrnam = $(getgrnam) getgrgid = $(getgrgid) # # \begin{doc} # \item \verb+cd+ # # The \verb+cd+ function changes the current directory. # Note that the current directory follows the usual scoping # rules. For example, the following program lists the # files in the \verb+foo+ directory, but the current # directory is not changed. # # \begin{verbatim} # section # echo Listing files in the foo directory... # cd foo # ls # # echo Listing files in the current directory... # ls # \end{verbatim} # \end{doc} # cd = $(cd) # # \begin{doc} # \item \verb+bg+ # # The \verb+bg+ method places a job in the background. # The job is resumed if it has been suspended. # \end{doc} # bg = $(bg) # # \begin{doc} # \item \verb+fg+ # # The \verb+fg+ method brings a job to the foreground. # The job is resumed if it has been suspended. # \end{doc} # fg = $(fg) # # \begin{doc} # \item \verb+stop+ # # The \verb+stop+ method suspends a running job. # \end{doc} # stop = $(stop) # # \begin{doc} # \item \verb+wait+ # # The \verb+wait+ function waits for a running job to terminate. # It is not possible to wait for a suspended job. # # The job is not brought to the foreground. If the \verb+wait+ # is interrupted, the job continues to run in the background. # \end{doc} # wait = $(wait) # # \begin{doc} # \item \verb+kill+ # # The \verb+kill+ function signal a job. # # \verb+kill [signal] +. # # The signals are either numeric, or symbolic. # The symbolic signals are named as follows. # # ABRT, ALRM, HUP, ILL, KILL, QUIT, SEGV, TERM, USR1, # USR2, CHLD, STOP, TSTP, TTIN, TTOU, VTALRM, PROF. # \end{doc} # kill = $(kill) # # \begin{doc} # \item \verb+exit+ # # The \verb+exit+ function terminates the current session. # \end{doc} # exit = $(exit-parent) # # \begin{doc} # \item \verb+which+, \verb+where+ # # See the documentation for the corresponding functions. # \end{doc} which(argv) = println($(which $(argv))) where(argv) = res[] = $(where $(argv)) res.map($(println)) return $(int 0) # # \begin{doc} # \item \verb+rehash+ # # Reset the search path. # \end{doc} # rehash(argv) = rehash() # # \begin{doc} # \item \verb+ln-or-cp+ \em{src} \em{dst} # # Links or copies \em{src} to \em{dst}, overwriting \em{dst}. Namely, \verb+ln-or-cp+ would first # delete the \em{dst} file (unless it is a directory), if it exists. Next it would try to create # a symbolic link \em{dst} poiting to \em{src} (it will make all the necessary adjustmnents of # relative paths). If symbolic link can not be created (\emph{e.g.} the OS or the filesystem does # not support symbolic links), it will try to create a hard link. If that fails too, it will try # to forcibly copy \em{src} to \em{dst}. # \end{doc} # ln-or-cp(argv) = if $(not $(eq $(length $(argv)), 2)) eprintln($"Shell.ln-or-cp: expected 2 arguments, received $(length $(argv)) arguments") exit(1) src = $(file $"$(nth 0, $(argv))") dst = $(file $"$(nth 1, $(argv))") if $(and $(test -e $(dst)), $(not $(test -d $(dst)))) rm($(array -f, $(dst))) if $(test -e $(dst)) # The dst might be read-only; on Windows this will prevent deletion. # Will try to fix the permissions and rm again. # If dst and src are already hardliked, this will break # the permissions on src, so we will try to restore them. src_was_ro = $(not $(test -w $(src))) chmod -f -m u+w $(dst) rm($(array -f, $(dst))) if $(and $(src_was_ro), $(test -w $(src))) chmod -f -m u-w $(src) try symlink($(src), $(dst)) default try link($(src), $(dst)) default if $(and $(test -e $(dst)), $(not $(test -d $(dst)))) # NB: $(dst) might already be a hardlink and we failed to delete it # Trying to cp in that case might cause both $(src) and $(dst) to # get truncated! eprintln($"ln-or-cp: failed to remove the destination file $(dst) before overwriting; giving up.") exit(1) return $(cp $(array -f, $(src), $(dst))) # # \begin{doc} # \item \verb+history+ # # Print the current command-line history. # \end{doc} # history(argv) = lines = $(public.history) lines.map($(println)) return $(int 0) # # \begin{doc} # \item \verb+digest+ # # Print the digests of the given files. # \end{doc} # digest(argv) = foreach(n, $(argv)) println($"$n: $(digest $n)") value # # \begin{doc} # \item Win32 functions. # # Win32 doesn't provide very many programs for scripting, except # for the functions that are builtin to the DOS \verb+cmd.exe+. # The following functions are defined on Win32 and only on Win32. # On other systems, it is expected that these programs already # exist. # # \begin{itemize} # \end{doc} # if $(equal $(OSTYPE), Win32) # # \begin{doc} # \item \verb+grep+ # # \begin{verbatim} # grep [-q] [-n] pattern files... # \end{verbatim} # # The \verb+grep+ function calls the \Prog{omake} # \verb+grep+ function. # \end{doc} # grep = $(builtin-grep) export # # \begin{doc} # \end{itemize} # \end{doc} # # # \begin{doc} # \item Internal versions of standard system commands. # # By default, \Prog{omake} uses internal versions of the following commands: # \verb+cp+, \verb+mv+, \verb+cat+, \verb+rm+, \verb+mkdir+, \verb+chmod+, # \verb+test+, \verb+find+. # If you really want to use the standard system versions of these # commands, set the \verb+USE_SYSTEM_COMMANDS+ as one of the first # definitions in your \verb+OMakeroot+ file. # # \begin{itemize} # \end{doc} # declare [ declare true if $(not $(defined USE_SYSTEM_COMMANDS)) # # \begin{doc} # \item \verb+pwd+ # # \begin{verbatim} # pwd # \end{verbatim} # # The \verb+pwd+ alias would print the absolute path to current directory. # \end{doc} # pwd(argv) = println($(absname .)) # # \begin{doc} # \item \verb+mkdir+ # # \begin{verbatim} # mkdir [-m ] [-p] files # \end{verbatim} # # The \verb+mkdir+ function is used to create directories. # The -verb+-m+ option can be used to specify the permission # mode of the created directory. If the \verb+-p+ option # is specified, the full path is created. # \end{doc} # mkdir = $(mkdir) # # \begin{doc} # \item \verb+cp+ # \item \verb+mv+ # # \begin{verbatim} # cp [-f] [-i] [-v] src dst # cp [-f] [-i] [-v] files dst # mv [-f] [-i] [-v] src dst # mv [-f] [-i] [-v] files dst # \end{verbatim} # # The \verb+cp+ function copies a \verb+src+ file to # a \verb+dst+ file, overwriting it if it already exists. # If more than one source file is specified, the final file # must be a directory, and the source files are copied # into the directory. # # \begin{description} # \item[-f] Copy files forcibly, do not prompt. # \item[-i] Prompt before removing destination files. # \item[-v] Explain what is happening. # \end{description} # \end{doc} # cp = $(cp) mv = $(mv) # # \begin{doc} # \item \verb+rm+ # # \begin{verbatim} # rm [-f] [-i] [-v] [-r] files # rmdir [-f] [-i] [-v] [-r] dirs # \end{verbatim} # # The \verb+rm+ function removes a set of files. # No warnings are issued if the files do not exist, or if # they cannot be removed. # # Options: # \begin{description} # \item[-f] Forcibly remove files, do not prompt. # \item[-i] Prompt before removal. # \item[-v] Explain what is happening. # \item[-r] Remove contents of directories recursively. # \end{description} # \end{doc} # rm = $(rm) rmdir = $(rmdir) # # \begin{doc} # \item \verb+chmod+ # # \begin{verbatim} # chmod [-r] [-v] [-f] mode files # \end{verbatim} # # The \verb+chmod+ function changes the permissions on a set of # files or directories. This function does nothing on Win32. # The \verb+mode+ may be specified as an octal number, # or in symbolic form \verb+[ugoa]*[+-=][rwxXstugo]+. # See the man page for \verb+chmod+ for details. # # Options: # \begin{description} # \item[-r] Change permissions of all files in a directory recursively. # \item[-v] Explain what is happening. # \item[-f] Continue on errors. # \end{description} # \end{doc} # chmod = $(chmod) # # \begin{doc} # \item \verb+cat+ # # \begin{verbatim} # cat files... # \end{verbatim} # # The \verb+cat+ function prints the contents of the files to stdout # \end{doc} # cat(argv)= print($(cat $(argv))) # # \begin{doc} # \item \verb+test+ # # \verb+test+ \emph{expression}\\ # \verb+[+ \emph{expression} +]+\\ # \verb+[ --help+\\ # \verb+[ --version+\\ # # See the documentation for the \hyperfun{test}. # # \end{doc} # test = $(builtin-test) [ = $(builtin-test-brack) # # \begin{doc} # \item \verb+find+ # # \verb+find+ \emph{expression} # # See the documentation for the \hyperfun{find}. # # \end{doc} # find = $(builtin-find) true(argv) = return true export # # \begin{doc} # \end{itemize} # \end{doc} # # # \begin{doc} # \end{itemize} # \end{doc} # # # These are all documented in Omake_builtin_io_fun. # declare parse-loc Token. = class Token loc = name = val = unit(name) = this.loc = $(parse-loc) this.name = $(name) return $(this) pair(name, val) = this.loc = $(parse-loc) this.name = $(name) this.val = $(val) return $(this) rename(name) = this.name = $(name) return $(this) Lexer. += class Lexer extends $(Object) declare channel # # For interpreting the rules # rule = $(lex-rule) # # To use a lexer, you would normally hand it a channel # from-channel(channel) = this.channel = $(channel) return $(this) lex() = return $(lex-engine $(this.channel)) lex-channel(channel) = this.channel = $(channel) return $(lex-engine $(channel)) Parser. += class Parser extends $(Object) # # For interpreting the rules # rule = $(parse-rule) # # You must set the lexer # lexer = # # Start symbols # start = $(parse-start) # # Precedence operations # left = $(parse-left) right = $(parse-right) nonassoc = $(parse-nonassoc) # # Manipulating the current precedence level # prec-min = .min prec-max = .max current-prec = .min # # Build the parser # build = $(parse-build) # # Main parsing function # parse(sym) = return $(parse-engine $(sym)) parse-channel(sym, channel) = lexer = $(lexer.from-channel $(channel)) return $(parse-engine $(sym)) parse-file(sym, file) = channel = $(fopen $(file), r) lexer = $(lexer.from-channel $(channel)) result = $(parse-engine $(sym)) close($(channel)) return $(result) omake-0.9.8.5/lib/build/0000775000152300015230000000000010660137255013005 5ustar jyhjyhomake-0.9.8.5/lib/build/C.om0000664000152300015230000005411010655664265013537 0ustar jyhjyh######################################################################## # Building C files. # # Copyright (C) 2003-2007 Jason Hickey and Mojave Group # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the File # is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the File. # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # FILE OR THE USE OR OTHER DEALINGS IN THE FILE. open build/Common open configure/Configure # # \begin{doc} # \section{Building C and C++ code} # # \OMake{} provides extensive support for building C and C++ programs. In order to use the functions # defined in this section, you need to make sure the line # \begin{verbatim} # open build/C # \end{verbatim} # is present in your \verb+OMakeroot+ file. # # \subsection{Autoconfiguration variables} # These variables will get defined based on the ``autoconf-style'' \verb+static.+ tests executed # when you run \OMake{} for the first time. You can use them to configure your project accordingly, # and you should not redefine them. # # You can use the \verb+--configure+ command line option (Section~\ref{option:--configure}) to force # re-execution of all the tests. # # A different set of autoconfiguration tests is performed depending on the build environment # involved --- one set of tests would be performed in a \verb+Win32+ environment, and another --- # in a Unix-like environment (including Linux, OS X and Cygwin). # # \subsubsection{Unix-like systems} # \varlabel{GCC_FOUND}{GCC\_FOUND} A boolean flag specifying whether the \verb+gcc+ binary was found in your path. # \varlabel{GXX_FOUND}{GXX\_FOUND} A boolean flag specifying whether the \verb.g++. binary was found in your path. # # \subsubsection{Win32} # \varlabel{CL_FOUND}{CL\_FOUND} A boolean flag specifying whether the \verb+cl+ binary was found in your path. # \varlabel{LIB_FOUND}{LIB\_FOUND} A boolean flag specifying whether the \verb+lib+ binary was found in your path. # # \subsection{C and C++ configuration variables} # # The following variables can be redefined in your project. # # \var{CC} The name of the C compiler (on \verb+Unix+ it defaults to \verb+gcc+ when \verb+gcc+ is present and # to \verb+cc+ otherwise; on \verb+Win32+ defaults to \verb+cl /nologo+). # \var{CXX} The name of the C++ compiler (on \verb+Unix+ it defaults to \verb+gcc+ when \verb+gcc+ is present # and to \verb+c+++ otherwise; on \verb+Win32+ defaults to \verb+cl /nologo+). # \var{CPP} The name of the C preprocessor (defaults to \verb+cpp+ on \verb+Unix+, and \verb+cl /E+ on \verb+Win32+). # \var{CFLAGS} Compilation flags to pass to the C compiler (default empty on \verb+Unix+, and \verb+/DWIN32+ # on \verb+Win32+). # \var{CXXFLAGS} Compilation flags to pass to the C++ compiler (default empty on \verb+Unix+, and \verb+/DWIN32+ # on \verb+Win32+). # \var{INCLUDES} Additional directories that specify the search path to the C and C++ compilers (default is \verb+.+). # The directories are passed to the C and C++ compilers with the \verb+-I+ option. # The include path with \verb+-I+ prefixes is defined in the \verb+PREFIXED_INCLUDES+ variable. # \var{LIBS} Additional libraries needed when building a program (default is empty). # \var{CCOUT} The option to use for specifying the output file in C and C++ compilers # (defaults to \verb+-o+ on \verb+Unix+ and \verb+/Fo+ on \verb+Win32+). # \var{AS} The name of the assembler (defaults to \verb+as+ on \verb+Unix+, and \verb+ml+ on \verb+Win32+). # \var{ASFLAGS} Flags to pass to the assembler (default is empty on \verb+Unix+, and \verb+/c /coff+ # on \verb+Win32+). # \var{ASOUT} The option string that specifies the output file for \verb+AS+ (defaults to \verb+-o+ # on \verb+Unix+ and \verb+/Fo+ on \verb+Win32+). # \var{AR} The name of the program to create static libraries (defaults to \verb+ar cq+ on \verb+Unix+, # and \verb+lib+ on \verb+Win32+). # \var{LD} The name of the linker (defaults to \verb+ld+ on \verb+Unix+, and \verb+cl+ on \verb+Win32+). # \var{LDFLAGS} Options to pass to the linker (default is empty). # \varlabel{LDFLAGS_DLL}{LDFLAGS\_DLL} Options to pass to the linker when compiling a shared library (defaults to \verb+-shared+ on \verb+Unix+ and \verb+/DLL+ on \verb+Win32+). # \var{LDOUT} The option to use for specifying the output file in C and C++ linkers # (defaults to \verb+-o+ on \verb+Unix+ and \verb+/Fe+ on \verb+Win32+). # \var{YACC} The name of the \verb+yacc+ parser generator (default is \verb+yacc+ on \verb+Unix+, empty on \verb+Win32+). # \var{LEX} The name of the \verb+lex+ lexer generator (default is \verb+lex+ on \verb+Unix+, empty on \verb+Win32+). # \end{doc} # if $(equal $(OSTYPE), Win32) public.CC = cl /nologo public.CXX = cl /nologo public.CPP = cl /nologo /E public.CFLAGS = /DWIN32 public.CXXFLAGS = /DWIN32 public.AR(name) = return(lib /nologo /debugtype:CV /out:$(name)) public.RANLIB = echo ranlib public.INCLUDES[] = . public.INCLUDES_OPT = /I public.CCOUT = /Fo public.LD = cl /nologo public.YACC = echo yacc public.LEX = echo lex public.LIBS = public.LDFLAGS = public.LDFLAGS_DLL = /DLL public.CDLL_IMPLIES_STATIC = true public.LDOUT = /Fe public.AS = ml /nologo public.ASOUT = /Fo public.ASFLAGS = /c /coff .STATIC: CL_FOUND = $(CheckProg cl) LIB_FOUND = $(CheckProg lib) export else .STATIC: GCC_FOUND = $(CheckProg gcc) GXX_FOUND = $(and $(GCC_FOUND), $(CheckProg g++)) CC = $(if $(GCC_FOUND), gcc, cc) CXX = $(if $(GXX_FOUND), g++, c++) public.CPP = cpp public.CFLAGS = public.CXXFLAGS = public.AR(name) = return(ar cq $(name)) public.RANLIB = ranlib public.LD = ld public.INCLUDES[] = . public.INCLUDES_OPT = -I public.CCOUT = $(array -o) public.YACC = yacc public.LEX = lex public.LIBS = public.LDFLAGS = public.CDLL_IMPLIES_STATIC = false public.LDOUT = $(array -o) # MacOS X specific config if $(equal $(SYSNAME), Darwin) public.LDFLAGS_DLL = -dynamiclib export else public.LDFLAGS_DLL = -shared export public.AS = as public.ASOUT = $(array -o) public.ASFLAGS = export # # Add the -I option to the includes lazily. # Don't redefine this variable unless you know what you are doing. # public.PREFIXED_INCLUDES = $`(addprefix $(INCLUDES_OPT), $(INCLUDES)) # # Special flags for compiling C files for use in OCaml # public.BYTE_CFLAGS = public.NATIVE_CFLAGS = # # Generic build rules # # public.CXX_EXTS[] = .cpp .cc .c++ %$(EXT_OBJ): %.c :scanner: scan-c-%.c $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) -c $(CCOUT)$@ $< foreach(CXX_EXT, $(CXX_EXTS)) %$(EXT_OBJ): %$(CXX_EXT) :scanner: scan-cxx-%$(CXX_EXT) $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) -c $(CCOUT)$@ $< export %$(EXT_OBJ): %$(EXT_ASM) $(AS) $(ASFLAGS) $(PREFIXED_INCLUDES) $(ASOUT)$@ $< %.c: %.y $(YACC) $< %.c: %.l $(LEX) $< # # Default C scanner # # # Make sure generated files are built before scanning # # \begin{doc} # \subsection{Generated C files} # Because the C scanners do not normally know anything about generated source files (such as # generated header files), these files may need to be created before running the scanner. # \twofuns{CGeneratedFiles}{LocalCGeneratedFiles} # \begin{verbatim} # CGeneratedFiles(files) # LocalCGeneratedFiles(files) # \end{verbatim} # # The \verb+CGeneratedFiles+ and \verb+LocalCGeneratedFiles+ functions specify files # that need to be generated before any C files are scanned for dependencies. For example, # if \verb+config.h+ and \verb+inputs.h+ are both generated files, specify: # \begin{verbatim} # CGeneratedFiles(config.h inputs.h) # \end{verbatim} # # The \verb+CGeneratedFiles+ function is \emph{global} --- its arguments will be generated # before any C files anywhere in the project are scanned for dependencies. The # \verb+LocalCGeneratedFiles+ function follows the normal scoping rules of OMake. # # \end{doc} # .PHONY: CGeneratedFilesTarget public.CGeneratedFiles(files) = CGeneratedFilesTarget: $(files) public.LocalCGeneratedFiles(files) = .SCANNER: scan-c-%: $(files) .SCANNER: scan-cxx-%: $(files) .SCANNER: %$(EXT_OBJ): $(files) export # # We use digest-path-exists value dependency to make sure the SCANNER is re-run # whenever the scanned dependencies change. # if $(equal $(OSTYPE), Win32) Shell. += builtin-cc-depend(argv) = filename = $(nth 0, $(argv)) depends[] = awk(b, $(stdin)) case $'Note:.*including file: *\(.*\)$' depends[] += $(file $"$1") export case $'.[(][0-9][0-9]*[)] : (warning|(fatal |)error) [A-Z][0-9]*: ' eprintln($0) depends = $(string-escaped $(set $(depends))) objname = $(string-escaped $(rootname $(filename))$(EXT_OBJ)) println($"$(objname): $(depends)") .SCANNER: scan-c-%.c: %.c /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&) $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) /Zs /showIncludes $< |& builtin-cc-depend $< # Include default rule for backwards-compatibility .SCANNER: %$(EXT_OBJ): %.c /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&) $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) /Zs /showIncludes $< |& builtin-cc-depend $< foreach(CXX_EXT, $(CXX_EXTS)) .SCANNER: scan-cxx-%$(CXX_EXT): %$(CXX_EXT) /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&) $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) /Zs /showIncludes $< |& builtin-cc-depend $< # Include default rule for backwards-compatibility .SCANNER: %$(EXT_OBJ): %$(CXX_EXT) /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&) $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) /Zs /showIncludes $< |& builtin-cc-depend $< export export else .SCANNER: scan-c-%.c: %.c /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&) $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) -MM $< # Include default rule for backwards-compatibility .SCANNER: %$(EXT_OBJ): %.c /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&) $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) -MM $< foreach(CXX_EXT, $(CXX_EXTS)) .SCANNER: scan-cxx-%$(CXX_EXT): %$(CXX_EXT) /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&) $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) -MM $< # Include default rule for backwards-compatibility .SCANNER: %$(EXT_OBJ): %$(CXX_EXT) /.PHONY/CGeneratedFilesTarget :value: $(digest-in-path-optional $(INCLUDES), $&) $(CXX) $(CXXFLAGS) $(PREFIXED_INCLUDES) -MM $< export export # Define a function to build a C-library # # \begin{doc} # \subsection{Building C programs and Libraries} # \twofuns{StaticCLibrary}{DynamicCLibrary} # # The \verb+StaticCLibrary+ builds a static library and the \verb+DynamicCLibrary+ # function builds a shared library (DLL). # # \begin{verbatim} # StaticCLibrary(, ) # DynamicCLibrary(, ) # \end{verbatim} # # The \verb++ does \emph{not} include the library suffix, and # The \verb++ list does not include the object suffix. These # are obtained from the \hypervarxn{EXT_LIB}{EXT\_LIB} (\hypervarxn{EXT_DLL}{EXT\_DLL}) # and \hypervarxn{EXT_OBJ}{EXT\_OBJ} variables. # # This function returns the library filename. # # The following command builds the library \verb+libfoo.a+ from the # files \verb+a.o b.o c.o+ on \verb+Unix+, or the library # \verb+libfoo.lib+ from the files \verb+a.obj b.obj c.obj+ # on \verb+Win32+. # # \begin{verbatim} # StaticCLibrary(libfoo, a b c) # .DEFAULT: $(StaticCLibrary libbar, a b c d) # \end{verbatim} # # \varlabel{CDLL_IMPLIES_STATIC}{CDLL\_IMPLIES\_STATIC} If the \verb+CDLL_IMPLIES_STATIC+ # variable is enabled (this is default on \verb+Win32+), all the \verb+DynamicC+ functions # would assume that creating a shared library automatically created a static one. # \end{doc} # public.StaticCLibrary(name, files) = private.OFILES = $(addsuffix $(EXT_OBJ), $(files)) private.NORMALLIB = $(file $(name)$(EXT_LIB)) if $(equal $(OSTYPE), Win32) $(NORMALLIB): $(OFILES) echo $(OFILES) > $@.tmp $(AR $@) @$@.tmp rm -f $@.tmp else $(NORMALLIB): $(OFILES) rm -f $@ $(AR $@) $(OFILES) $(RANLIB) $@ return $(NORMALLIB) public.DynamicCLibrary(name, files) = private.OFILES = $(addsuffix $(EXT_OBJ), $(files)) private.LFILES = $(addsuffix $(EXT_LIB), $(LIBS)) private.LIB = $(file $(name)$(EXT_DLL)) private.TARGETS = $(LIB) if $(CDLL_IMPLIES_STATIC) TARGETS[] += $(file $(name)$(EXT_LIB)) export $(TARGETS): $(OFILES) $(LFILES) $(CC) $(CFLAGS) $(LDOUT)$(LIB) $(OFILES) $(LFILES) $(LDFLAGS) $(LDFLAGS_DLL) return $(TARGETS) # # Copy to an install directory # # \begin{doc} # \twofuns{StaticCLibraryCopy}{DynamicCLibraryCopy} # # The \verb+StaticCLibraryCopy+ and \verb+DynamicCLibraryCopy+ functions copy a library # to an install location. # # \begin{verbatim} # StaticCLibraryCopy(, , ) # DynamicCLibraryCopy(, , ) # \end{verbatim} # # The \verb++ is the name of a target (typically a \verb+.PHONY+ target); # the \verb++ is the installation directory, and \verb++ is # the library to be copied (without the library suffix). # # This function returns the filename of the library in the target directory. # # For example, the following code copies the library # \verb+libfoo.a+ to the \verb+/usr/lib+ directory. # # \begin{verbatim} # .PHONY: install # # StaticCLibraryCopy(install, /usr/lib, libfoo) # \end{verbatim} # \end{doc} # public.StaticCLibraryCopy(tag, lib, name) = # # Names of libs # private.NORMALLIB = $(file $(name)$(EXT_LIB)) private.LIBNORMAL = $(file $(lib)/$(basename $(name))$(EXT_LIB)) # # Linking the library into the root lib dir # $(LIBNORMAL): $(NORMALLIB) $(lib) :scanner: $(NOSCANNER) ln-or-cp $< $@ # # Add dependency to the tag # $(tag): $(LIBNORMAL) return $(LIBNORMAL) public.DynamicCLibraryCopy(tag, lib, name) = TARGETS = EXT_LIB = $(EXT_DLL) value $(StaticCLibraryCopy tag, lib, name) if $(CDLL_IMPLIES_STATIC) TARGETS[] += $(StaticCLibraryCopy tag, lib, name) export return $(TARGETS) # # We often use them together # # \begin{doc} # \twofuns{StaticCLibraryInstall}{DynamicCLibraryInstall} # # The \verb+StaticCLibraryInstall+ and \verb+DynamicCLibraryInstall+ functions build a library, and # set the install location in one step. Return the filename of the library # in the target directory. # # \begin{verbatim} # StaticCLibraryInstall(, , , ) # DynamicCLibraryInstall(, , , ) # \end{verbatim} # # \begin{verbatim} # StaticCLibraryInstall(install, /usr/lib, libfoo, a b c) # \end{verbatim} # \end{doc} # public.StaticCLibraryInstall(tag, lib, name, files) = StaticCLibrary($(name), $(files)) return $(StaticCLibraryCopy $(tag), $(lib), $(name)) public.DynamicCLibraryInstall(tag, lib, name, files) = DynamicCLibrary($(name), $(files)) return $(DynamicCLibraryCopy $(tag), $(lib), $(name)) # # Build a .o file. This is like a library, # but use the linker instead. # # \begin{doc} # \threefuns{StaticCObject}{StaticCObjectCopy}{StaticCObjectInstall} # # These functions mirror the \verb+StaticCLibrary+, \verb+StaticCLibraryCopy+, # and \verb+StaticCLibraryInstall+ functions, but they build an \emph{object} # file (a \verb+.o+ file on \verb+Unix+, and a \verb+.obj+ file on \verb+Win32+). # \end{doc} # public.StaticCObject(name, files) = # # Generic library that can be used on byte and native-code # private.OFILES = $(addsuffix $(EXT_OBJ), $(files)) # # Names of libs # private.NORMALLIB = $(file $(name)$(EXT_OBJ)) $(NORMALLIB): $(OFILES) $(LD) $(LDFLAGS) -r $(LDOUT)$@ $(OFILES) return $(NORMALLIB) # # Copy to an install directory # public.StaticCObjectCopy(tag, lib, name) = # # Names of libs # private.NORMALLIB = $(file $(name)$(EXT_OBJ)) private.LIBNORMAL = $(file $(lib)/$(basename $(name))$(EXT_OBJ)) # # Linking the library into the root lib dir # $(LIBNORMAL): $(NORMALLIB) $(lib) :scanner: $(NOSCANNER) ln-or-cp $< $@ # # Add dependency to the tag # $(tag): $(LIBNORMAL) return $(LIBNORMAL) # # We often use them together # public.StaticCObjectInstall(tag, lib, name, files) = StaticCObject($(name), $(files)) return $(StaticCObjectCopy $(tag), $(lib), $(name)) # # Define a function to build a C-program # # \begin{doc} # \fun{CProgram} # # The \verb+CProgram+ function builds a C program from a set # of object files and libraries. # # \verb+CProgram(, )+ # # The \verb++ argument specifies the name of the program to be built; # the \verb++ argument specifies the files to be linked. The function # returns the filename of the executable. # # Additional options can be passed through the following variables. # \begin{description} # \item[CFLAGS] Flags used by the C compiler during the link step. # \item[LDFLAGS] Flags to pass to the loader. # \item[LIBS] Additional libraries to be linked. # \end{description} # # For example, the following code specifies that the program # \verb+foo+ is to be produced by linking the files \verb+bar.o+ # and \verb+baz.o+ and libraries \verb+libfoo.a+. # # \begin{verbatim} # section # LIBS = libfoo # LDFLAGS += -lbar # CProgram(foo, bar baz) # \end{verbatim} # \end{doc} # public.CProgram(name, files) = # # Generic program # private.OFILES = $(addsuffix $(EXT_OBJ), $(files)) private.NAME = $(file $(name)$(EXE)) # # XXX: Backward compatibility: We used to confuse LIBS and LDFLAGS, so need to split things out. # private.FLAGS = $(filter -%, $(LIBS)) if $(FLAGS) eprintln($""!!! WARNING: the LIBS variable should not include link flags "$(FLAGS)";"") eprintln($""!!! those should go into LDFLAGS"") LDFLAGS += $(FLAGS) LIBS = $(filter-out -%, $(LIBS)) export if $(filter %$(EXT_LIB), $(LIBS)) eprintln($""!!! WARNING: the LIBS variable should contain libraries _without_ extensions."") LIBS = $(replacesuffixes $(EXT_LIB), $"$(EMPTY)", $(LIBS)) export private.LFILES = $(addsuffix $(EXT_LIB), $(LIBS)) $(NAME): $(OFILES) $(LFILES) $(CC) $(CFLAGS) $(LDOUT)$@ $,(OFILES) $(LFILES) $(LDFLAGS) return $(NAME) # # Copy to a bin directory # # \begin{doc} # \fun{CProgramCopy} # # The \verb+CProgramCopy+ function copies a file to an install location. # # \verb+CProgramCopy(, , )+ # # \begin{verbatim} # CProgramCopy(install, /usr/bin, foo) # \end{verbatim} # \end{doc} # public.CProgramCopy(tag, bin, name) = # # Name of the program # private.NAME = $(file $(name)$(EXE)) private.BINNAME = $(file $(bin)/$(basename $(name))$(EXE)) # # Linking the program into the root bin dir # $(BINNAME): $(NAME) $(bin) :scanner: $(NOSCANNER) ln-or-cp $< $@ # # Add the dependency to the tag # $(tag): $(BINNAME) return $(BINNAME) # # We often use them together # # \begin{doc} # \fun{CProgramInstall} # # The \verb+CProgramInstall+ function specifies a program to build, # and a location to install, simultaneously. # # \verb+CProgramInstall(, , , )+ # # \begin{verbatim} # section # LIBS = libfoo # LDFLAGS += -lbar # CProgramInstall(install, /usr/bin, foo, bar baz) # \end{verbatim} # \end{doc} # public.CProgramInstall(tag, bin, name, files) = CProgram($(name), $(files)) return $(CProgramCopy $(tag), $(bin), $(name)) # # The C++ versions. # # \begin{doc} # \twofuns{CXXProgram}{CXXProgramInstall} # # The \verb+CXXProgram+ and \verb+CXXProgramInstall+ functions are # equivalent to their C counterparts, except that would use \verb+$(CXX)+ and \verb+$(CXXFLAGS)+ # for linking instead of \verb+$(CC)+ and \verb+$(CFLAGS)+. # \end{doc} # public.CXXProgram(name, files) = CC = $(CXX) CFLAGS = $(CXXFLAGS) return $(CProgram $(name), $(files)) public.CXXProgramInstall(tag, bin, name, files) = CXXProgram($(name), $(files)) return $(CProgramCopy $(tag), $(bin), $(name)) # \begin{doc} # \sixfuns{StaticCXXLibrary}{StaticCXXLibraryCopy}{StaticCXXLibraryInstall}{DynamicCXXLibrary}{DynamicCXXLibraryCopy}{DynamicCXXLibraryInstall} # # Similarly, the six \verb+CXXLibrary+ functions the C++ equivalents of the corresponding # \verb+CLibrary+ functions. # \end{doc} # public.StaticCXXLibrary(name, files) = CC = $(CXX) CFLAGS = $(CXXFLAGS) return $(StaticCLibrary $(name), $(files)) public.StaticCXXLibraryCopy(tag, lib, name) = CC = $(CXX) CFLAGS = $(CXXFLAGS) return $(StaticCLibraryCopy tag, lib, name) public.StaticCXXLibraryInstall(tag, lib, name, files) = CC = $(CXX) CFLAGS = $(CXXFLAGS) return $(StaticCLibraryInstall tag, lib, name, files) public.DynamicCXXLibrary(name, files) = CC = $(CXX) CFLAGS = $(CXXFLAGS) return $(DynamicCLibrary $(name), $(files)) public.DynamicCXXLibraryCopy(tag, lib, name) = CC = $(CXX) CFLAGS = $(CXXFLAGS) return $(DynamicCLibraryCopy tag, lib, name) public.DynamicCXXLibraryInstall(tag, lib, name, files) = CC = $(CXX) CFLAGS = $(CXXFLAGS) return $(DynamicCLibraryInstall tag, lib, name, files) omake-0.9.8.5/lib/build/LaTeX.om0000664000152300015230000003627410652227052014327 0ustar jyhjyh######################################################################## # Building LaTeX documents. # # Copyright (C) 2003-2007 Jason Hickey and Mojave Group # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the File # is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the File. # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # FILE OR THE USE OR OTHER DEALINGS IN THE FILE. open build/Common ######################################################################## # LaTeX Section # # # LaTeX config # # \begin{doc} # \section{Building \LaTeX\ files} # # \OMake{} provides support for building \LaTeX\ documents, including support for automatically # running BiBTex and for producing PostScript and PDF files. In order to use the functions # defined in this section, you need to make sure the line # \begin{verbatim} # open build/LaTeX # \end{verbatim} # is present in your \verb+OMakeroot+ file. # # \subsection{Configuration variables} # # The following variables can be modified in your project. # \var{LATEX} The \LaTeX\ command (default \verb+latex+). # \varlabel{TETEX2_ENABLED}{TETEX2\_ENABLED} Flag indicating whether to use advanced \LaTeX\ options # present in TeTeX v.2 (default value is determined the first time omake reads \verb+LaTeX.src+ # and depends on the version of \LaTeX\ you have installed). # \var{LATEXFLAGS} The \LaTeX\ flags (defaults depend on the \verb+TETEX2_ENABLED+ variable) # \var{BIBTEX} The BibTeX command (default \verb+bibtex+). # \var{MAKEINDEX} The command to build an index (default \verb+makeindex+). # \var{DVIPS} The \verb+.dvi+ to PostScript converter (default \verb+dvips+). # \var{DVIPSFLAGS} Flags to pass to \verb+dvips+ (default \verb+-t letter+). # \var{DVIPDFM} The \verb+.dvi+ to \verb+.pdf+ converter (default \verb+dvipdfm+). # \var{DVIPDFMFLAGS} Flags to pass to \verb+dvipdfm+ (default \verb+-p letter+). # \var{PDFLATEX} The \verb+.latex+ to \verb+.pdf+ converter (default \verb+pdflatex+). # \var{PDFLATEXFLAGS} Flags to pass to pdflatex (default is \verb+$`(LATEXFLAGS)+). # \var{USEPDFLATEX} Flag indicating whether to use pdflatex instead of dvipdfm # to generate the \verb+.pdf+ document (default \verb+false+). # \end{doc} # declare public.LATEXFLAGS public.BIBTEX = bibtex public.MAKEINDEX = makeindex public.DVIPS = dvips public.DVIPSFLAGS = -t letter $`(if $(VERBOSE), $(EMPTY), -q) public.DVIPDFM = dvipdfm public.DVIPDFMFLAGS = -p letter public.PDFLATEX = pdflatex public.PDFLATEXFLAGS = $`(LATEXFLAGS) public.USEPDFLATEX = false public.LATEX = latex # # Configure LaTeX by checking whether some LaTeX options exist. # public. = declare FORCE_WIN32_LATEX if $(not $(defined FORCE_WIN32_LATEX)) FORCE_WIN32_LATEX = false export .STATIC: open configure/Configure # # XXX: JYH: when Cygwin latex is called from Win32, # it often segfaults, and pops up an annoying # ignore/abort window. Try to detect this case # and disable LaTeX. # # XXX: We should move the uname test into configure/uname. # OUTPUT_COMMENT_SUPPORTED = false TETEX2_ENABLED = false FILE_LINE_ERROR = LATEX_USABLE = $(CheckProg latex) if $(and $(LATEX_USABLE), $(not $(FORCE_WIN32_LATEX)), $(equal $(OSTYPE), Win32), $(CheckProg uname)) match($(shell uname)) case CYGWIN ConfMsgWarn($""" You seem to be trying to use Cygwin LaTeX on a Win32 machine. This usually doesn't work, but if you really want to use it, add the following definition to your OMakeroot. FORCE_WIN32_LATEX = true (latex disabled)""") LATEX_USABLE = false export export if $(and $(LATEX_USABLE), $(shell-success-null latex -help)) ConfMsgChecking(LaTeX capabilities) # # Various versions of LaTeX use different options # Look through the -help info for tetex2 options # RECORDER_ENABLED = false ERROR_ENABLED = false BROKEN_MIKTEX = false TETEX_CONFIG_TMP = $(tmpfile tetex) latex -help > $(TETEX_CONFIG_TMP) awk($(TETEX_CONFIG_TMP)) case ^-recorder RECORDER_ENABLED = true export case $'.*-recorder.*Record file names\.' # MikTeX 2.4 had a bug, where -recorder would swap inputs with outputs - # http://bugzilla.metaprl.org/show_bug.cgi?id=632 BROKEN_MIKTEX = true export case $'^ *-output-comment=' OUTPUT_COMMENT_SUPPORTED = true export case $'^ *-recorder' RECORDER_ENABLED = true export case ^-file-line-error-style FILE_LINE_ERROR = -file-line-error-style ERROR_ENABLED = true export case $'^\[-no\]-file-line-error' FILE_LINE_ERROR = -file-line-error ERROR_ENABLED = true export case $'^ *-c-style-errors' FILE_LINE_ERROR = -c-style-errors ERROR_ENABLED = true export # # TeTeX2 if both the -recorder and -file-line-error options exist # RECORDER_ENABLED = $(and $(RECORDER_ENABLED), $(not $(BROKEN_MIKTEX))) TETEX2_ENABLED = $(and $(RECORDER_ENABLED), $(ERROR_ENABLED)) ConfMsgResult(tetex2 mode $(if $(TETEX2_ENABLED), enabled, disabled)) rm $(TETEX_CONFIG_TMP) export FILE_LINE_ERROR TETEX2_ENABLED OUTPUT_COMMENT_SUPPORTED # # Compute the default flags # LATEXFLAGS_BASE = $(if $(OUTPUT_COMMENT_SUPPORTED), $'-output-comment=LaTeX Output (built with OMake)') export TETEX2_ENABLED FILE_LINE_ERROR LATEX_USABLE OUTPUT_COMMENT_SUPPORTED LATEXFLAGS_BASE LATEXFLAGS() = if $(TETEX2_ENABLED) value $(FILE_LINE_ERROR) $(LATEXFLAGS_BASE) else value $'-interaction=errorstopmode' $(LATEXFLAGS_BASE) # # Dynamically defined list of files that the TeX source depends on. # public.TEXDEPS = # # Directories in the search path. # Split them at colons to get a directory list. # public.TEXINPUTS = $(split $(PATHSEP), $(getenv TEXINPUTS, .)) # # TeX can log its inputs and outputs into an .fls file. We use the internal awk # to turn an .fls file into in appropriate dependency file format. # Shell. += protected.builtin-tex-deps(argv) = private. = dep = $(nth 0, $(argv)) f = $(nth 1, $(argv)) public. = DEPS[] = WRITES[] = $(file $f.bbl $f.ind) DEPDIR = $(dir .) awk($f.fls) case $'^PWD \(.*\)$' DEPDIR = $(dir $1) export case $'^INPUT \(.*\)$' DEPS += $(cd $(DEPDIR), $(file $1)) export case $'^OUTPUT \(.*\)$' WRITES += $(cd $(DEPDIR), $(file $1)) export if $(file-exists $f.aux) FS=$'[{}]' awk($f.aux) case $'\\bibdata\{.*\}' BIBS = $(split \,, $2) BIBS[] = $(BIBS) $(addsuffix .bib, $(BIBS)) DEPS += $(find-in-path-optional $(split \:, $(getenv BIBINPUTS)), $(BIBS)) export DEPS case $'\\bibstyle\{.*\}' BSTS = $(split \,, $2) BSTS[] = $(BSTS) $(addsuffix .bst, $(BSTS)) DEPS += $(find-in-path-optional $(split \:, $(getenv BSTINPUTS)), $(BSTS)) export DEPS export DEPS DEPS = $(set-diff $(DEPS), $(WRITES)) println($"$(string-escaped $(dep)): $(string-escaped $(DEPS))") eprintln($"$(string-escaped $(dep)): $(string-escaped $(DEPS))") protected.stdout-to-stderr(argv) = stdout = $(stderr) $(argv) protected.run-latex(argv) = if $(TETEX2_ENABLED) if $(not $(shell-success $(argv))) private.f = $(replacesuffixes .tex, $(string $(EMPTY)), $(last $(argv))) eprintln(*** Errors detected while running LaTeX on $(private.f).tex:) stdout-to-stderr grep ':[1-9][0-9]*: ' $(private.f).log exit 1 else $(argv) # # Rules for building TeX documents. # # name: the name of the document # texfiles: the TeX source files, without suffix # # Dynamic variables: # TEXINPUTS: extra directories to include in the search path # TEXDEPS: files that are implicitly included, including suffixes # # \begin{doc} # \subsection{Building \LaTeX\ documents} # \fun{LaTeXDocument} # # The \verb+LaTeXDocument+ produces a \LaTeX\ document. # # \verb+LaTeXDocument(, )+ # # The document \verb++ and \verb++ are listed without suffixes. This function # returns the filenames for the generated \verb+.ps+ and \verb+.pdf+ files. # # Additional variables used: # \var{TEXINPUTS} # The \LaTeX\ search path (an array of directories, default is # taken from the \verb+TEXINPUTS+ environment variable). # \var{TEXDEPS} Additional files this document depends on. # \var{TEXVARS} An array of names of the environment variables # that are to be updated based on the value of \OMake's \verb+TEXINPUTS+ variable. # Defaults to \verb+TEXINPUTS+ \verb+BIBINPUTS+ \verb+BSTINPUTS+. # \end{doc} # # Make sure generated files are built before scanning # # \begin{doc} # \twofuns{TeXGeneratedFiles}{LocalTeXGeneratedFiles} # \begin{verbatim} # TeXGeneratedFiles(files) # LocalTeXGeneratedFiles(files) # \end{verbatim} # # The \verb+TeXGeneratedFiles+ and \verb+LocalTeXGeneratedFiles+ functions specify files # that need to be generated before any \LaTeX files are scanned for dependencies. For example, # if \verb+config.tex+ and \verb+inputs.tex+ are both generated files, specify: # \begin{verbatim} # TeXGeneratedFiles(config.tex inputs.tex) # \end{verbatim} # # The \verb+TeXGeneratedFiles+ function is \emph{global} --- its arguments will be generated # before any TeX files anywhere in the project are scanned for dependencies. The # \verb+LocalTeXGeneratedFiles+ function follows the normal scoping rules of \OMake. # # \end{doc} public.TEXVARS[] = TEXINPUTS BIBINPUTS BSTINPUTS .PHONY: TeXGeneratedFilesTarget public.TeXGeneratedFiles(files) = TeXGeneratedFilesTarget: $(files) public.LocalTeXGeneratedFiles(files) = .SCANNER: scan-tex-%: $(files) export Shell. += protected.drop-dvips-junk(argv) = private.print = true awk() case $'dvips: Could not find figure file pdf:[a-z]*; continuing': print = false export case $'dvips: Unknown keyword [(].*[)] in \\special will be ignored': print = false export case $"dvips: more errors in special, being ignored": print = false export case $"dvips: [(]perhaps dvips doesn't support your macro package[?][)]": print = false export default if $(print) println($0) print = true export return true public.LaTeXDocument(name, texfiles) = name = $(file $(name)) # # TeX files all have the .tex suffix # protected.TEXFILES[] = $(name).tex $(addsuffix .tex, $(texfiles)) # # Setting the proper TEXINPUTS environment # private.INPUTS = $(concat $(PATHSEP), $(TEXINPUTS))$(PATHSEP) foreach(var, $(TEXVARS)) setenv($(var), $(private.INPUTS)) export Rule(use_pdflatex) = private.prog = $(if $(use_pdflatex), $(PDFLATEX), $(LATEX)) private.flags = $(if $(use_pdflatex), $(PDFLATEXFLAGS), $(LATEXFLAGS)) private.ext = $(if $(use_pdflatex), .pdf, .dvi) $(name)$(ext): $(TEXDEPS) $(TEXFILES) :effects: $(name).aux $(name).log $(name).ind $(name).out if $(gt $(length $(TEXVARS)), 0) echo "Enviroment variables $(concat $', ', $(TEXVARS)) set to $(getenv $(nth 0, $(TEXVARS)))" run-latex $(prog) $(flags) $(name) if $(and $(file-exists $(name).aux), $(grep q, $'\\citation', $(name).aux), $(grep q, $'\\bibdata', $(name).aux)) $(BIBTEX) $(name) run-latex $(prog) $(flags) $(name) if $(and $(file-exists $(name).idx), $(grep q, $'\\indexentry', $(name).idx)) $(MAKEINDEX) $(name) run-latex $(prog) $(flags) $(name) if $(grep q, $'Rerun to get', $(name).log) run-latex $(prog) $(flags) $(name) if $(grep q, $'Rerun to get', $(name).log) run-latex $(prog) $(flags) $(name) if $(grep q, $'Rerun to get', $(name).log) run-latex $(prog) $(flags) $(name) # # TeTeX2 has the ability to compute dependencies for us # if $(TETEX2_ENABLED) protected.SCANNER = scan-$(if $(use_pdflatex), pdflatex, latex)-$(name).tex .SCANNER: $(SCANNER): $(name).tex $(TEXDEPS) $(TEXFILES) /.PHONY/TeXGeneratedFilesTarget\ :value: $(USEPDFLATEX) $(find-in-path-optional $(INPUTS), $&)\ :effects: $(name).aux $(name).log $(name).ind $(name).out $(name).dvi $(name).fls echo | run-latex stdout-to-stderr $(prog) $(flags) -recorder $< builtin-tex-deps $(name)$(ext) $(name) $(name)$(ext): :scanner: $(SCANNER) Rule(false) if $(USEPDFLATEX) Rule(true) else $(name).pdf: $(name).dvi $(DVIPDFM) $(DVIPDFMFLAGS) -o $@ $(name).dvi if $(VERBOSE) $(name).ps: $(name).dvi $(DVIPS) $(DVIPSFLAGS) -o $@ $(name).dvi else $(name).ps: $(name).dvi $(DVIPS) $(DVIPSFLAGS) -o $@ $(name).dvi |& drop-dvips-junk return $(file $(name).ps $(name).pdf) # # Copy the document to a library directory # # \begin{doc} # \fun{LaTeXDocumentCopy} # # The \verb+LaTeXDocumentCopy+ copies the document to an install location. # # \verb+LaTeXDocumentCopy(, , , )+ # # This function copies just the \verb+.pdf+ and \verb+.ps+ files. # \end{doc} # public.LaTeXDocumentCopy(tag, lib, dst, src) = $(lib)/$(dst).pdf: $(src).pdf $(lib) :scanner: $(NOSCANNER) cp $< $@ $(lib)/$(dst).ps: $(src).ps $(lib) :scanner: $(NOSCANNER) cp $< $@ $(tag): $(lib)/$(dst).pdf $(lib)/$(dst).ps return $(file $(lib)/$(dst).pdf $(lib)/$(dst).ps) # # Build the document and copy it # # \begin{doc} # \fun{LaTeXDocumentInstall} # # The \verb+LaTeXDocumentInstall+ builds a document and copies it to an # install location in one step. # # \verb+LaTeXDocumentInstall(, , , , )+ # \end{doc} # public.LaTeXDocumentInstall(tag, lib, dst, src, texfiles) = LaTeXDocument($(src), $(texfiles)) return $(LaTeXDocumentCopy $(tag), $(lib), $(dst), $(src)) omake-0.9.8.5/lib/build/svn_realclean.om0000664000152300015230000000762010640570457016166 0ustar jyhjyh######################################################################## # Copyright (C) 2006 Aleksey Nogin # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the File # is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the File. # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # FILE OR THE USE OR OTHER DEALINGS IN THE FILE. ######################################################################## # This file defines an svn_realclean utility. The svn_realclean utility removes # all unversioned files in a subversion wc. # # Usage: svn_realclean [options] [dir1 [dir2 ...]] # Options are: # -f Do not ask whether to remove files # -i Ignore the file # -help Display this list of options # --help Display this list of options # If no directories are given, . is used. open configure/Configure .STATIC: SVN_AVAILABLE = $(CheckProg svn) Shell. += do_clean(IGNORES) = awk() case $'^[I?] ' f = $(file $2) if $(not $(mem $f, $(IGNORES))) println($"Removing $f...") rm -rf $f svn_realclean(argv) = if $(SVN_AVAILABLE) usage(msg,err) = println($"""$(msg) Usage: svn_realclean [options] [dir1 [dir2 ...]] Options are: -f Do not ask whether to remove files -i Ignore the file -help Display this list of options --help Display this list of options If no directories are given, . is used. """) exit($(err)) FORCE=false IGNORES[]= DIRS[] = $(dir .) while $(gt $(length $(argv)), 0) match $(nth 0, $(argv)) case $'^-f$' FORCE=true argv = $(nth-tl 1, $(argv)) export case $'^-i$' if $(gt $(length $(argv)), 1) IGNORES[] += $(file $(nth 1, $(argv))) argv = $(nth-tl 2, $(argv)) export else usage($"The -i option requires an argument", 1) export case $'^--?help$' usage($"The svn_realclean utility removes all unversioned files in a subversion wc.", 0) case $'^-' usage($"Unknown option: $(nth 0, $(argv))", 1) default DIRS[] = $(dir $(argv)) export if $(FORCE) svn st --no-ignore $(DIRS) | do_clean $(IGNORES) else # rm -ri will require a real stdin, so we can not use the same # "svn ... | do_clean" pipeline here. tmp = $(tmpfile svn_realclean) svn st --no-ignore $(DIRS) > $(tmp) awk($(tmp)) case $'^[I?] ' f = $(file $2) if $(not $(mem $f, $(IGNORES))) # println($"Removing $f...") rm -ri $f rm -f $(tmp) else eprintln($"svn_realclean requires the svn binary, but svn is missing") exit(1) # vim:tw=80:ts=4:et omake-0.9.8.5/lib/build/OCaml.om0000664000152300015230000012506210657143063014343 0ustar jyhjyh######################################################################## # Building OCaml programs. # # Copyright (C) 2003-2007 Jason Hickey and Mojave Group # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the File # is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the File. # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # FILE OR THE USE OR OTHER DEALINGS IN THE FILE. open build/Common open configure/Configure ######################################################################## # OCaml section # # \begin{doc} # \section{Building OCaml code} # # \OMake{} provides extensive support for building OCaml code, including support for tools like # \verb+ocamlfind+, \verb+ocamlyacc+ and \verb+menhir+. In order to use the functions # defined in this section, you need to make sure the line # \begin{verbatim} # open build/OCaml # \end{verbatim} # is present in your \verb+OMakeroot+ file. # # \subsection{Autoconfiguration variables for OCaml compilation} # These variables will get defined based on the ``autoconf-style'' tests executed when you # run \OMake{} for the first time. You can use them to configure your project accordingly, # and you should not redefine them. # # You can use the \verb+--configure+ command line option (Section~\ref{option:--configure}) to force # re-execution of all the tests. # # \varlabel{OCAMLOPT_EXISTS}{OCAMLOPT\_EXISTS} True when \verb+ocamlopt+ (or \verb+ocamlopt.opt+) is # available on your machine. # \varlabel{OCAMLFIND_EXISTS}{OCAMLFIND\_EXISTS} True when the ocamlfind is available on your # machines. # \varlabel{OCAMLDEP_MODULES_AVAILABLE}{OCAMLDEP\_MODULES\_AVAILABLE} True when a version of # \verb+ocamldep+ that understands the \verb+-modules+ option is available on your machine. # \varlabel{MENHIR_AVAILABLE}{MENHIR\_AVAILABLE} True when the Menhir parser-generator is available # on your machine. # # \subsection{Configuration variables for OCaml compilation} # # The following variables can be redefined in your project. # \varlabel{USE_OCAMLFIND}{USE\_OCAMLFIND} Whether to use the \verb+ocamlfind+ utility (default \verb+false+) # \var{OCAMLC} The OCaml bytecode compiler (default \verb+ocamlc.opt+ if it exists # and \verb+USE_OCAMLFIND+ is not set, otherwise \verb+ocamlc+). # \var{OCAMLOPT} The OCaml native-code compiler (default \verb+ocamlopt.opt+ if it # exists and \verb+USE_OCAMLFIND+ is not set, otherwise \verb+ocamlopt+). # \var{CAMLP4} The \verb+camlp4+ preprocessor (default \verb+camlp4+). # \var{OCAMLLEX} The OCaml lexer generator (default \verb+ocamllex+). # \var{OCAMLLEXFLAGS} The flags to pass to \verb+ocamllex+ (default \verb+-q+). # \var{OCAMLYACC} The OCaml parser generator (default \verb+ocamlyacc+). # \var{OCAMLYACCFLAGS} Additional options to pass to \verb+$(OCAMLYACC)+. # \var{OCAMLDEP} The OCaml dependency analyzer (default \verb+ocamldep+). # \varlabel{OCAMLDEP_MODULES}{OCAMLDEP\_MODULES} The OCaml dependency analyzer that understands the # \verb+-module+ option (default \verb+ocamldep+, if \verb+ocamldep -modules+ works, or # \verb+ocamlrun ocamldep-omake+, if \verb+ocamlrun ocamldep-omake -modules+ works, and empty # when neither works). # \varlabel{OCAMLDEP_MODULES_ENABLED}{OCAMLDEP\_MODULES\_ENABLED} Instead of using \verb+OCAMLDEP+ # in a traditional \verb+make+-style fashion, run \verb+$(OCAMLDEP_MODULES) -modules+ and then # postprocess the output internally to discover all the relevant generated \verb+.ml+ and # \verb+.mli+ files. See Section~\ref{section:ocaml-generated-files} for more information on # interactions between \OMake, \verb+OCAMLDEP+ and generated files. Set to # \verb+$(OCAMLDEP_MODULES_AVAILABLE)+ by default. # \var{OCAMLMKTOP} The OCaml toploop compiler (default \verb+ocamlmktop+). # \var{OCAMLLINK} The OCaml bytecode linker (default \verb+$(OCAMLC)+). # \var{OCAMLOPTLINK} The OCaml native-code linker (default \verb+$(OCAMLOPT)+). # \var{OCAMLINCLUDES} Search path to pass to the OCaml compilers (default \verb+.+). # The search path with the \verb+-I+ prefix is defined by the \verb+PREFIXED_OCAMLINCLUDES+ # variable. # \var{OCAMLFIND} The \verb+ocamlfind+ utility (default \verb+ocamlfind+ if # \verb+USE_OCAMLFIND+ is set, otherwise empty). # \var{OCAMLFINDFLAGS} The flags to pass to \verb+ocamlfind+ (default empty, \verb+USE_OCAMLFIND+ must be set). # \var{OCAMLPACKS} Package names to pass to \verb+ocamlfind+ (\verb+USE_OCAMLFIND+ must be set). # \varlabel{BYTE_ENABLED}{BYTE\_ENABLED} Flag indicating whether to use the bytecode compiler (default \verb+true+, when no \verb+ocamlopt+ found, \verb+false+ otherwise). # \varlabel{NATIVE_ENABLED}{NATIVE\_ENABLED} Flag indicating whether to use the native-code compiler (default \verb+true+, when ocamlopt is found, \verb+false+ otherwise). # Both \verb+BYTE_ENABLED+ and \verb+NATIVE_ENABLED+ can be set to true; # at least one should be set to true. # \varlabel{MENHIR_ENABLED}{MENHIR\_ENABLED} Define this as \verb+true+ if you wish to use # \verb+menhir+ instead of \verb+ocamlyacc+ (default \verb+false+). # \end{doc} # public.USE_OCAMLFIND = false .STATIC: OCAMLFIND_EXISTS = $(CheckProg ocamlfind) OCAMLC_OPT_EXISTS = $(CheckProg ocamlc.opt) OCAMLC_EXISTS = $(or $(OCAMLC_OPT_EXISTS), $(CheckProg ocamlc)) OCAMLOPT_OPT_EXISTS = $(CheckProg ocamlopt.opt) OCAMLOPT_EXISTS = $(or $(OCAMLOPT_OPT_EXISTS), $(CheckProg ocamlopt)) ConfMsgChecking(whether ocamlc understands the "z" warnings) OCAML_ACCEPTS_Z_WARNING = if $(OCAMLC_EXISTS) value $(ConfMsgYesNo $(shell-success-null ocamlc$(if $(OCAMLC_OPT_EXISTS), .opt) -w Az)) else ConfMsgResult($"FAILED - ocamlc not found") value false OCAMLC = $(if $(OCAMLC_OPT_EXISTS), $`(if $(USE_OCAMLFIND), ocamlc, ocamlc.opt), ocamlc) OCAMLOPT = $(if $(OCAMLOPT_OPT_EXISTS), $`(if $(USE_OCAMLFIND), ocamlopt, ocamlopt.opt), ocamlopt) # # Compile native or byte code? # NATIVE_ENABLED = $(OCAMLOPT_EXISTS) BYTE_ENABLED = $(not $(OCAMLOPT_EXISTS)) public.OCAMLFIND = $`(if $(USE_OCAMLFIND), ocamlfind) public.OCAMLFINDFLAGS = public.LAZY_OCAMLFINDFLAGS = $`(if $(USE_OCAMLFIND), $(OCAMLFINDFLAGS)) public.OCAMLDEP = ocamldep public.CAMLP4 = camlp4 public.OCAMLLEX = ocamllex public.OCAMLLEXFLAGS = -q public.OCAMLYACC = ocamlyacc public.OCAMLYACCFLAGS = public.OCAMLMKTOP = ocamlmktop public.OCAMLLINK = $`(OCAMLC) public.OCAMLOPTLINK = $`(OCAMLOPT) # # Include path # public.OCAMLINCLUDES[] = . public.PREFIXED_OCAMLINCLUDES = $`(mapprefix -I, $(OCAMLINCLUDES)) # # Packages # public.OCAMLPACKS[] = public.PREFIXED_OCAMLPACKS =\ $`(if $(and $(USE_OCAMLFIND) $(gt $(length $(OCAMLPACKS)), 0)),\ -package $(string $(concat \,, $(OCAMLPACKS))),\ $(EMPTY)) # # Various options # # \begin{doc} # \subsection{OCaml command flags} # # The following variables specify \emph{additional} options to be passed to # the OCaml tools. # \var{OCAMLDEPFLAGS} Flags to pass to \verb+OCAMLDEP+ and \verb+OCAMLDEP_MODULES+. # \var{OCAMLPPFLAGS} Flags to pass to \verb+CAMLP4+. # \var{OCAMLCFLAGS} Flags to pass to the byte-code compiler (default \verb+-g+). # \var{OCAMLOPTFLAGS} Flags to pass to the native-code compiler (default empty). # \var{OCAMLFLAGS} Flags to pass to either compiler (default \verb+-warn-error A+). # \varlabel{OCAML_BYTE_LINK_FLAGS}{OCAML\_BYTE\_LINK\_FLAGS} Flags to pass to the byte-code linker (default empty). # \varlabel{OCAML_NATIVE_LINK_FLAGS}{OCAML\_NATIVE\_LINK\_FLAGS} Flags to pass to the native-code linker (default empty). # \varlabel{OCAML_LINK_FLAGS}{OCAML\_LINK\_FLAGS} Flags to pass to either linker. # \varlabel{MENHIR_FLAGS}{MENHIR\_FLAGS} Additional flags to pass to \verb+menhir+. # \end{doc} # declare OCAMLDEPFLAGS public.OCAMLPPFLAGS = public.OCAMLFLAGS = -warn-error A public.OCAMLCFLAGS = -g public.OCAMLOPTFLAGS = public.OCAMLCPPFLAGS = public.OCAML_LINK_FLAGS = $`(if $(and $(USE_OCAMLFIND) $(gt $(length $(OCAMLPACKS)), 0)), -linkpkg, $(EMPTY)) public.OCAML_BYTE_LINK_FLAGS = -custom public.OCAML_NATIVE_LINK_FLAGS = # # OCAML_LIBS contains libraries that are used as dependencies # OCAML_OTHER_LIBS contains other libraries (like unix.cma) # The lists do not include suffixes. # # OCAML_LINK_FLAGS contains extra linking information # # \begin{doc} # \subsection{Library variables} # # The following variables are used during linking. # # \varlabel{OCAML_LIBS}{OCAML\_LIBS} Libraries to pass to the linker. These libraries become dependencies # of the link step. # \varlabel{OCAML_OTHER_LIBS}{OCAML\_OTHER\_LIBS} Additional libraries to pass to the linker. These libraries are # \emph{not} included as dependencies to the link step. Typical use is for the OCaml # standard libraries like \verb+unix+ or \verb+str+. # \varlabel{OCAML_CLIBS}{OCAML\_CLIBS} C libraries to pass to the linker. # \varlabel{OCAML_LIB_FLAGS}{OCAML\_LIB\_FLAGS} Extra flags for the library linker. # \varlabel{ABORT_ON_DEPENDENCY_ERRORS}{ABORT\_ON\_DEPENDENCY\_ERRORS} # OCaml linker requires the OCaml files to be # listed in dependency order. Normally, all the functions presented in this section will automatically sort # the list of OCaml modules passed in as the \verb++ argument. However, this variable is # set to \verb+true+, the order of the files passed into these function will be left as is, but \OMake{} will # abort with an error message if the order is illegal. # # \end{doc} # public.OCAML_LIBS = public.OCAML_CLIBS = public.OCAML_OTHER_LIBS = public.OCAML_LIB_FLAGS = ######################################################################## # \begin{doc} # \subsection{Generated OCaml Files} # \label{section:ocaml-generated-files} # As of OCaml version 3.09.2, the standard \verb+ocamldep+ scanner is ``broken''. The main issue is # that it finds only those dependencies that already exist. If \verb+foo.ml+ contains a dependency # on \verb+Bar+, # \begin{verbatim} # foo.ml: # open Bar # \end{verbatim} # then the default \verb+ocamldep+ will only find the dependency if a file \verb+bar.ml+ or # \verb+bar.ml+ exists in the include path. It will not find (or print) the dependency if, for # example, only \verb+bar.mly+ exists at the time \verb+ocamldep+ is run, even though \verb+bar.ml+ # and \verb+bar.mli+ can be generated from \verb+bar.mly+. # # \OMake{} currently provides two methods for addressing this problem --- one that requires manually # specifying the generated files, and an experimental method for discovering such ``hidden'' # dependencies automatically. The # \hypervarx{OCAMLDEP_MODULES_ENABLED}{OCAMLDEP\_MODULES\_ENABLED} controls which method is # going to be used. When this variable is false, the manual specifications are expected and when it # is true, the automated discovery will be attempted. # # \twofuns{OCamlGeneratedFiles}{LocalOCamlGeneratedFiles} # \begin{verbatim} # OCamlGeneratedFiles(files) # LocalOCamlGeneratedFiles(files) # \end{verbatim} # # When the \hypervarx{OCAMLDEP_MODULES_ENABLED}{OCAMLDEP\_MODULES\_ENABLED} variable is set # to \verb+false+, the \verb+OCamlGeneratedFiles+ and \verb+LocalOCamlGeneratedFiles+ functions specify files # that need to be generated before any OCaml files are scanned for dependencies. For example, # if \verb+parser.ml+ and \verb+lexer.ml+ are both generated files, specify: # \begin{verbatim} # OCamlGeneratedFiles(parser.ml lexer.ml) # \end{verbatim} # # The \verb+OCamlGeneratedFiles+ function is \emph{global} --- its arguments will be generated # before any OCaml files anywhere in the project are scanned for dependencies. The # \verb+LocalOCamlGeneratedFiles+ function follows the normal scoping rules of OMake. # # These functions have no effect when the # \hypervarx{OCAMLDEP_MODULES_ENABLED}{OCAMLDEP\_MODULES\_ENABLED} is true. # # \subsubsection{Automatic discovery of generated files during dependency analysis} # Having to specify the generated files manualy when \OMake{} could discover them automatically is # obviously suboptimal. To address this, we tell \verb+ocamldep+ to \emph{only} # find the free module names in a file and then post-process the results internally. # # This automated functionality is enabled when the # \hypervarx{OCAMLDEP_MODULES_ENABLED}{OCAMLDEP\_MODULES\_ENABLED} is set to \verb+true+. # By default, \hypervarx{OCAMLDEP_MODULES_ENABLED}{OCAMLDEP\_MODULES\_ENABLED} will be set to # \verb+$(OCAMLDEP_MODULES_AVAILABLE)+. # # Note that the \verb+ocamldep+ functionality this relies upon is only included in # the OCaml version 3.10 and higher. Temporarily, we # distribute a bytecode version \index{ocamldep-omake}\verb+ocamldep-omake+ of the appropriately # modified \verb+ocamldep+. The appropriate \verb+ocamldep+ will be discovered automatically --- see # and the \hypervarxn{OCAMLDEP_MODULES_AVAILABLE}{OCAMLDEP\_MODULES\_AVAILABLE} and # \hypervarxn{OCAMLDEP_MODULES}{OCAMLDEP\_MODULES} variables will be set accordingly. # # \end{doc} # .STATIC: OCAMLDEP_MODULES = OCAMLDEP_MODULES_USE_OCAMLFIND = true ConfMsgChecking(if ocamldep understands -modules) OCAMLDEP_MODULES_AVAILABLE = $(ConfMsgYesNo $(shell-success-null ocamldep -modules)) if $(OCAMLDEP_MODULES_AVAILABLE) OCAMLDEP_MODULES = ocamldep export else ConfMsgChecking(for ocamldep-omake bytecode file) OCAMLDEP_OMAKE = $(find-in-path-optional $(PATH), ocamldep-omake) if $(OCAMLDEP_OMAKE) OCAMLDEP_OMAKE = $(file $(OCAMLDEP_OMAKE)) ConfMsgResult(found $(absname $(OCAMLDEP_OMAKE))) ConfMsgChecking(if ocamldep-omake runs) OCAMLDEP_MODULES_AVAILABLE = $(ConfMsgYesNo $(shell-success-null ocamlrun $(OCAMLDEP_OMAKE) -modules)) OCAMLDEP_MODULES = $(if $(OCAMLDEP_MODULES_AVAILABLE), ocamlrun $(OCAMLDEP_OMAKE)) OCAMLDEP_MODULES_USE_OCAMLFIND = false export else ConfMsgResult(NOT FOUND) export OCAMLDEP_MODULES_AVAILABLE OCAMLDEP_MODULES OCAMLDEP_MODULES_USE_OCAMLFIND OCAMLDEP_MODULES_ENABLED = $(OCAMLDEP_MODULES_AVAILABLE) public.OCAMLDEPFLAGS = $`(if $(and $(NATIVE_ENABLED), $(not $(OCAMLDEP_MODULES_ENABLED))), -native, $(EMPTY)) .PHONY: OCamlGeneratedFilesTarget public.OCamlGeneratedFiles(files) = if $(OCAMLDEP_MODULES_ENABLED) # For now, we want to allow ``backwards-compatible'' projects. # eprintln($"WARNING: OCamlGeneratedFiles should not be used when OCAMLDEP_MODULES_ENABLED") # eprintln($" is set") else OCamlGeneratedFilesTarget: $(files) public.LocalOCamlGeneratedFiles(files) = if $(OCAMLDEP_MODULES_ENABLED) # For now, we want to allow ``backwards-compatible'' projects. # eprintln($"WARNING: OCamlGeneratedFiles should not be used when OCAMLDEP_MODULES_ENABLED") # eprintln($" is set") else .SCANNER: scan-ocaml-%: $(files) .SCANNER: %.cmi: $(files) .SCANNER: %.cmx %.cmo: $(files) export export # # The ocamldep -modules output has the following # form, where the indented lines are the free module names in foo.ml. # # foo.ml: # Bar # ... # # From this, we generate proper dependencies by finding the files # that can be built, using the find-targets-in-path-optional # function. # # # Print the dependencies for a ML file, based on the # .cmi files. # # If OCAMLDEP_PRESERVE_TARGETS is true, then the # ocamldep entries are taken literally (the suffix # is not replaced with .cmo/.cmx). # public.OCAMLDEP_PRESERVE_TARGETS = false public.PrintMLIDependencies(filename, cmideps) = if $(cmideps) private.base = $(string-escaped $(removesuffix $(filename))) println($"""$(base).cmi: $(string-escaped $(cmideps))""") public.PrintMLDependencies(filename, cmideps, cmxdeps) = private.base = $(string-escaped $(removesuffix $(filename))) private.esc = $' \' private.text = if $(cmideps) cmideps = $(string-escaped $(cmideps)) private.text = $""" $(base).cmo: $(cmideps) $(base).cmx $(base)$(EXT_OBJ):$(esc) $(cmideps)""" export text if $(cmxdeps) private.odeps = $(string-escaped $(addsuffix $(EXT_OBJ), $(removesuffix $(cmxdeps)))) if $(not $(text)) text = $"""$(base).cmx $(base)$(EXT_OBJ):""" export text += $"""$(esc) $(string-escaped $(cmxdeps))$(esc) $(odeps)""" export text # eprintln($(text)) println($(text)) public.PrintFileDependencies(filename, cmideps) = if $(cmideps) private.text = $"""$(string-escaped $(filename)): $(string-escaped $(cmideps))""" # eprintln($(text)) println($(text)) # # Given a set of literal dependencies, compute # the actual dependencies by finding the filenames # associated with each module. # public.PrintDependencies(filename, modules) = if $(filename) # # Find the .cmi files that can be built # private.cmideps = $(find-ocaml-targets-in-path-optional $(OCAMLINCLUDES), $(addsuffix .cmi, $(modules))) # Now produce the dependencies if $(OCAMLDEP_PRESERVE_TARGETS) PrintFileDependencies($(filename), $(cmideps)) else switch($(suffix $(filename))) case .ml protected.cmxdeps[] = if $(NATIVE_ENABLED) cmxdeps = $(find-ocaml-targets-in-path-optional $(OCAMLINCLUDES), $(addsuffix .cmx, $(modules))) export PrintMLDependencies($(filename), $(cmideps), $(cmxdeps)) case .mli PrintMLIDependencies($(filename), $(cmideps)) default eprintln($"ocaml scanner: illegal filename $(filename)") exit(1) # # Post-process the output of ocamldep. # Use awk to process the input, find the targets that # exist, and then print the dependencies. # public.OCamlScannerPostproc() = # # Read the module names from the standard input # protected.filename = protected.modules[] = awk(b, $(stdin)) case $'^\(.*\):[[:space:]]*\(.*\)$' PrintDependencies($(filename), $(modules)) filename = $1 modules[] = $(split $' ', $2) export case $'^ \(.*\)' # Add the dependency modules[] += $1 export default eprintln(Unrecognized ocamldep output: $0) PrintDependencies($(filename), $(modules)) Shell. += ocamldep-postproc(argv) = if $(mem -preserve-targets, $(argv)) OCAMLDEP_PRESERVE_TARGETS = true export OCamlScannerPostproc() public.OCamlScanner(src_file) = if $(OCAMLDEP_MODULES_ENABLED) if $(OCAMLDEP_MODULES_USE_OCAMLFIND) value $(OCAMLFIND) $(OCAMLDEP_MODULES) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLDEPFLAGS) -modules $(src_file) | ocamldep-postproc else value $(OCAMLDEP_MODULES) $(OCAMLDEPFLAGS) -modules $(src_file) | ocamldep-postproc else value $(OCAMLFIND) $(OCAMLDEP) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLDEPFLAGS) $(PREFIXED_OCAMLINCLUDES) $(src_file) ######################################################################## # Generic build rules. # # The order of the %.cmi rules is important. # The most recent definition is used first, if it applies. # 1. The .cmi is generated from the .mli, if it exists # 2. Otherwise it is generated from the .ml # # In case 2, make sure to use the same command text that is used for # generating the .cmo or .cmx file. This will prevent the compiler # from being called twice: once to generate the .cmi file, and again # for the .cmo or .cmx file. # public.OCamlC() = value $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS)\ $(OCAMLCFLAGS) $(OCAMLPPFLAGS) $(PREFIXED_OCAMLINCLUDES) public.OCamlOpt() = value $(OCAMLFIND) $(OCAMLOPT) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS)\ $(OCAMLOPTFLAGS) $(OCAMLPPFLAGS) $(PREFIXED_OCAMLINCLUDES) %.cmx: %.ml section rule if $(not $(NATIVE_ENABLED)) err. = extends $(UnbuildableException) message = $(string $"You are trying to build OCaml native code file: "%.cmx$" However, the NATIVE_ENABLED flag is not set. Include the following definition in your OMakefile if you really want to build this file. NATIVE_ENABLED = true") target = $(file %.cmx) raise $(err) elseif $(target-exists %.mli) %.cmx %$(EXT_OBJ): %.ml %.cmi :scanner: scan-ocaml-%.ml $(OCamlOpt) -c $< elseif $(BYTE_ENABLED) %.cmx %.cmi %$(EXT_OBJ) %.cmo: %.ml :scanner: scan-ocaml-%.ml $(OCamlC) -c $< $(OCamlOpt) -c $< else %.cmx %.cmi %$(EXT_OBJ): %.ml :scanner: scan-ocaml-%.ml $(OCamlOpt) -c $< %$(EXT_OBJ): %.ml section rule if $(not $(NATIVE_ENABLED)) err. = extends $(UnbuildableException) message = $(string $"You are trying to build OCaml native code file: "%$(EXT_OBJ)$" However, the NATIVE_ENABLED flag is not set. Include the following definition in your OMakefile if you really want to build this file. NATIVE_ENABLED = true") target = $(file %.cmx) raise $(err) elseif $(target-exists %.mli) %$(EXT_OBJ) %.cmx: %.ml %.cmi :scanner: scan-ocaml-%.ml $(OCamlOpt) -c $< elseif $(BYTE_ENABLED) %$(EXT_OBJ) %.cmi %.cmx %.cmo: %.ml :scanner: scan-ocaml-%.ml $(OCamlC) -c $< $(OCamlOpt) -c $< else %$(EXT_OBJ) %.cmi %.cmx: %.ml :scanner: scan-ocaml-%.ml $(OCamlOpt) -c $< %.cmo: %.ml section rule if $(not $(BYTE_ENABLED)) err. = extends $(UnbuildableException) message = $(string $"You are trying to build OCaml native code file: "%.cmo$" However, the BYTE_ENABLED flag is not set. Include the following definition in your OMakefile if you really want to build this file. BYTE_ENABLED = true") target = $(file %.cmx) raise $(err) elseif $(target-exists %.mli) %.cmo: %.ml %.cmi :scanner: scan-ocaml-%.ml $(OCamlC) -c $< elseif $(NATIVE_ENABLED) %.cmo %.cmi %.cmx %$(EXT_OBJ): %.ml :scanner: scan-ocaml-%.ml $(OCamlC) -c $< $(OCamlOpt) -c $< else %.cmo %.cmi: %.ml :scanner: scan-ocaml-%.ml $(OCamlC) -c $< %.cmi: %.ml section rule if $(BYTE_ENABLED) if $(NATIVE_ENABLED) %.cmi %.cmo %.cmx %$(EXT_OBJ): %.ml :scanner: scan-ocaml-%.ml $(OCamlC) -c $< $(OCamlOpt) -c $< else %.cmi %.cmo: %.ml :scanner: scan-ocaml-%.ml $(OCamlC) -c $< else %.cmi %.cmx %$(EXT_OBJ): %.ml :scanner: scan-ocaml-%.ml $(OCamlOpt) -c $< %.cmi: %.mli :scanner: scan-ocaml-%.mli $(OCamlC) -c $< ######################################################################## # Parser generators # # # You can choose to use ocamlyacc or menhir for a parser # generator. The default is ocamlyacc. Define the # MENHIR_ENABLED as true if you would rather use menhir. # # Variables: # MENHIR : the name of the menhir executable # MENHIR_FLAGS : any additional options to pass to Menhir # MENHIR_AVAILABLE : the menhir executable is installed # MENHIR_RAW_DEPEND : menhir supports the --raw-depend option # public.MENHIR = menhir public.MENHIR_FLAGS = public.MENHIR_ENABLED = false .STATIC: MENHIR_AVAILABLE = $(CheckProg $(MENHIR)) MENHIR_RAW_DEPEND = false if $(MENHIR_AVAILABLE) ConfMsgChecking(if $(MENHIR) supports the --raw-depend option) MENHIR_RAW_DEPEND = $(ConfMsgYesNo $(shell-success-null $(MENHIR) -help | grep $'^ *--raw-depend')) export # Menhir is being requested. Check that it is installed. public.MenhirCheck() = if $(not $(MENHIR_AVAILABLE)) eprintln($"""!!! You are asking to use Menhir, but it is not installed.""") eprintln($"""!!! See the Menhir home page for instructions on downloading.""") eprintln($"""!!! http://cristal.inria.fr/~fpottier/menhir/""") exit(1) # Compute the correct ocamlc and ocamldep options for Menhir. public.MenhirOCamlcCommand() = MenhirCheck() private.ocamlc[] =\ $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS)\ $(OCAMLCFLAGS) $(OCAMLPPFLAGS) $(PREFIXED_OCAMLINCLUDES) value --ocamlc $(quote-argv $(ocamlc)) public.MenhirOCamldepCommand(raw) = ocamldep = if $(raw) value $(OCAMLDEP_MODULES) -modules $(OCAMLDEPFLAGS) else value $(OCAMLDEP) $(PREFIXED_OCAMLINCLUDES) $(OCAMLDEPFLAGS) value --ocamldep $(quote-argv $(ocamldep)) # Compute the Mendir dependency scanner command public.MenhirScannerCommand(base, src) = if $(MENHIR_ENABLED) if $(and $(MENHIR_RAW_DEPEND), $(OCAMLDEP_MODULES_ENABLED)) value $(MENHIR) $(MENHIR_FLAGS) $(MenhirOCamldepCommand true) $(base) --raw-depend $(src) | ocamldep-postproc -preserve-targets else value $(MENHIR) $(MENHIR_FLAGS) $(MenhirOCamldepCommand false) $(base) --depend $(src) # Use Menhir if MENHIR_ENABLED, ocamlyacc otherwise public.OCamlYaccCommand(src) = if $(MENHIR_ENABLED) value $(MENHIR) $(MENHIR_FLAGS) $(MenhirOCamlcCommand) $(src) else value $(OCAMLYACC) $(OCAMLYACCFLAGS) $(src) .SCANNER: scan-ocamlyacc-%.mly: %.mly :value: $(MENHIR_ENABLED) $(OCamlScannerTargets $&) $(MenhirScannerCommand $(EMPTY), $<) %.ml %.mli: %.mly :scanner: scan-ocamlyacc-%.mly $(OCamlYaccCommand $<) # # \begin{doc} # \subsection{Using the Menhir parser generator} # # Menhir is a parser generator that is mostly compatible with # \verb+ocamlyacc+, but with many improvements. A few of these # are listed here (excerpted from the Menhir home page # \url{http://cristal.inria.fr/~fpottier/menhir/}). # # \begin{itemize} # \item Menhir's explanations are believed to be understandable by mere humans. # \item Menhir allows grammar specifications to be split over multiple files. # It also allows several grammars to share a single set of tokens. # \item Menhir is able to produce parsers that are parameterized by Objective Caml modules. # \item [Added by jyh] With the \verb+--infer+ option, Menhir can typecheck the semantic actions # in your grammar at \emph{generation} time. # \end{itemize} # # What do you need to do to use Menhir instead of \verb+ocamlyacc+? # \begin{enumerate} # \item Place the following definition before the relevant section of your project # (or at the top of your project \verb+OMakefile+ if you want to use Menhir everywhere). # # \begin{verbatim} # MENHIR_ENABLED = true # \end{verbatim} # # \item Optionally, add any desired Menhir options to the \verb+MENHIR_FLAGS+ variable. # # \begin{verbatim} # MENHIR_FLAGS += --infer # \end{verbatim} # \end{enumerate} # # With this setup, any file with a \verb+.mly+ suffix will be compiled with Menhir. # # If your grammar is split across several files, you need to specify it explicitly, # using the \verb+MenhirMulti+ function. # # \begin{verbatim} # MenhirMulti(target, sources) # target : filename, without suffix # sources : the files that define the grammar, without suffixes # \end{verbatim} # # For example, if you want to generate the parser files \verb+parse.ml+ and \verb+parse.mli+, # from the grammar specified in files \verb+a.mly+ and \verb+b.mly+, you would use # the following. # # \begin{verbatim} # MenhirMulti(parse, a b) # \end{verbatim} # \end{doc} # public.MenhirMulti(target, sources) = MenhirCheck() sources = $(addsuffix .mly, $(sources)) # Menhir needs all the files for dependency analysis .SCANNER: scan-menhir-$(target).multi: $(sources) :value: $(OCamlScannerTargets $&) $(MenhirScannerCommand --base $(target), $+) # Set up the actual rule $(target).ml $(target).mli: $(sources) :scanner: scan-menhir-$(target).multi $(MENHIR) $(MENHIR_FLAGS) $(MenhirOCamlcCommand) --base $(target) $+ ######################################################################## # Other common generated files # %.ml %.mli: %.mlz ln-or-cp $< $*.ml ln-or-cp $< $*.mli %.ml: %.mll $(OCAMLLEX) $(OCAMLLEXFLAGS) $< %.ml: %.mlp %.h @rm -f $@ @echo "(* CAUTION: this is a generated file. If you edit it, all changes will be lost! *)" > $@ $(CPP) $(OCAMLCPPFLAGS) -imacros $*.h $*.mlp >> $@ @chmod 444 $@ # # Generic scanners # OCamlScannerTargets(files) = files[] = $(basename $(files)) files[] = $(if $(NATIVE_ENABLED), $(files), $(filter-out %.cmx, $(files))) files[] = $(if $(BYTE_ENABLED), $(files), $(filter-out %.cmo, $(files))) value $(find-targets-in-path-optional $(OCAMLINCLUDES), $(files)) $(NATIVE_ENABLED) $(BYTE_ENABLED) .SCANNER: scan-ocaml-%.mli: %.mli /.PHONY/OCamlGeneratedFilesTarget :value: $(OCamlScannerTargets $&) $(OCamlScanner $<) .SCANNER: scan-ocaml-%.ml: %.ml /.PHONY/OCamlGeneratedFilesTarget :exists: %.mli :value: $(OCamlScannerTargets $&) $(OCamlScanner $<) # # Default .SCANNER rules for backwards-compatibility. # .SCANNER: %.cmi: %.mli /.PHONY/OCamlGeneratedFilesTarget :value: $(OCamlScannerTargets $&) $(OCamlScanner $<) .SCANNER: %.cmx %.cmo %$(EXT_OBJ): %.ml /.PHONY/OCamlGeneratedFilesTarget :exists: %.mli :value: $(OCamlScannerTargets $&) $(OCamlScanner $<) # # Define a link order for OCaml files. # If a file depends on a %.cmi, it also depends on %.cmo # .ORDER: .OCAMLLINK .OCAMLLINK: %.cmi: %.cmo .OCAMLLINK: %.cmx: %.cmo public.ABORT_ON_DEPENDENCY_ERRORS = false OCamlLinkSort(nodes) = if $(ABORT_ON_DEPENDENCY_ERRORS) value $(file-check-sort .OCAMLLINK, $(nodes)) else value $(file-sort .OCAMLLINK, $(nodes)) # # Generic rule to build an ML library # # \begin{doc} # \fun{OCamlLibrary} # # The \verb+OCamlLibrary+ function builds an OCaml library. # # \verb+OCamlLibrary(, )+ # # The \verb++ and \verb++ are listed \emph{without} suffixes. # # This function returns the list of all the targets that it defines the rules # for (including the \verb+$(name)$(EXT_LIB)+ file when \verb+NATIVE_ENABLED+ is set). # # The following code builds the \verb+libfoo.cmxa+ library from the files \verb+foo.cmx+ # and \verb+bar.cmx+ (if \verb+NATIVE_ENABLED+ is set), and \verb+libfoo.cma+ from # \verb+foo.cmo+ and \verb+bar.cmo+ (if \verb+BYTE_ENABLED+ is set). # # \begin{verbatim} # OCamlLibrary(libfoo, foo bar) # \end{verbatim} # \end{doc} # public.OCamlLibrary(name, files) = # XXX: JYH: these variables should be marked private in 0.9.9 protected.name = $(file $(name)) protected.OFILES = $(addsuffix $(EXT_OBJ), $(files)) protected.CMOFILES = $(addsuffix .cmo, $(files)) protected.CMXFILES = $(addsuffix .cmx, $(files)) protected.CLIB = $(file $(name)$(EXT_LIB)) protected.BYTELIB = $(file $(name).cma) protected.NATIVELIB = $(file $(name).cmxa) # # Link commands # $(BYTELIB): $(CMOFILES) $(OCAMLFIND) $(OCAMLLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLCFLAGS) \ $(OCAML_LIB_FLAGS) -a -o $@ $(OCamlLinkSort $(CMOFILES)) $(NATIVELIB) $(CLIB): $(CMXFILES) $(OFILES) $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLOPTFLAGS) \ $(OCAML_LIB_FLAGS) -a -o $(NATIVELIB) $(OCamlLinkSort $(CMXFILES)) return $(array $(if $(NATIVE_ENABLED), $(NATIVELIB)), $(if $(NATIVE_ENABLED), $(CLIB)), $(if $(BYTE_ENABLED), $(BYTELIB))) # # Generic rule to build an ML library # # \begin{doc} # \fun{OCamlPackage} # # The \verb+OCamlPackage+ function builds an OCaml package. # # \verb+OCamlPackage(, )+ # # The \verb++ and \verb++ are listed \emph{without} suffixes. # The \verb++ must have been compiled with the \verb+-for-pack + # flag to the OCaml compiler. # # This function returns the list of all the targets that it defines the rules # for (including the \verb+$(name)$(EXT_LIB)+ file when \verb+NATIVE_ENABLED+ is set). # # The following code builds the \verb+libfoo.cmx+ package from the files \verb+package.cmx+ # and \verb+bar.cmx+ (if \verb+NATIVE_ENABLED+ is set), and \verb+package.cmo+ from # \verb+foo.cmo+ and \verb+bar.cmo+ (if \verb+BYTE_ENABLED+ is set). # # \begin{verbatim} # OCamlPackage(package, foo bar) # \end{verbatim} # \end{doc} # public.OCamlPackage(name, files) = # XXX: JYH: these variables should be marked private in 0.9.9 protected.OFILES = $(addsuffix $(EXT_OBJ), $(files)) protected.CMOFILES = $(addsuffix .cmo, $(files)) protected.CMXFILES = $(addsuffix .cmx, $(files)) protected.OBJ = $(file $(name)$(EXT_OBJ)) protected.CMO = $(file $(name).cmo) protected.CMX = $(file $(name).cmx) protected.CMI = $(file $(name).cmi) protected.MLI = $(file $(name).mli) protected.BYTE_TARGETS = $(CMO) protected.NATIVE_TARGETS = $(CMX) $(OBJ) protected.TARGETS = $(CMI) if $(NATIVE_ENABLED) TARGETS += $(NATIVE_TARGETS) export if $(BYTE_ENABLED) TARGETS += $(BYTE_TARGETS) export # # Link commands # protected.BYTE_DEPS = $(CMOFILES) $(BYTE_TARGETS): $(CMOFILES) section rule if $(or $(NATIVE_ENABLED), $(target-exists $(MLI))) BYTE_DEPS += $(CMI) export else BYTE_TARGETS += $(CMI) export $(BYTE_TARGETS): $(BYTE_DEPS) $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \ $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMO) $(OCamlLinkSort $(CMOFILES)) protected.NATIVE_DEPS = $(CMXFILES) $(OFILES) $(NATIVE_TARGETS): $(NATIVE_DEPS) section rule if $(target-exists $(MLI)) NATIVE_DEPS += $(CMI) export else NATIVE_TARGETS += $(CMI) export $(NATIVE_TARGETS): $(NATIVE_DEPS) $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \ $(OCAMLOPTFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMX) $(OCamlLinkSort $(CMXFILES)) $(CMI): section rule if $(target-exists $(MLI)) $(CMI): $(MLI) :scanner: scan-ocaml-$(name).mli $(OCamlC) -c $< elseif $(NATIVE_ENABLED) $(NATIVE_TARGETS) $(CMI): $(NATIVE_DEPS) $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \ $(OCAMLOPTFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMX) $(OCamlLinkSort $(CMXFILES)) else $(BYTE_TARGETS) $(CMI): $(BYTE_DEPS) $(OCAMLFIND) $(OCAMLC) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) \ $(OCAMLCFLAGS) $(OCAML_LIB_FLAGS) -pack -o $(CMO) $(OCamlLinkSort $(CMOFILES)) return $(TARGETS) # # If the interfaces are to be installed, # define this variable to be true. # public.INSTALL_INTERFACES = false # # Install the library # # \begin{doc} # \fun{OCamlLibraryCopy} # # The \verb+OCamlLibraryCopy+ function copies a library to an install location. # # \verb+OCamlLibraryCopy(, , , )+ # # The \verb++ specify additional interface files # to be copied if the \verb+INSTALL_INTERFACES+ variable is true. # \end{doc} # public.OCamlLibraryCopy(tag, lib, name, ifiles) = # # Copy interfaces # if $(INSTALL_INTERFACES) private.MLIFILES = $(filter-targets $(addsuffix .mli, $(ifiles))) private.CMIFILES = $(addsuffix .cmi, $(ifiles)) foreach(src, $(MLIFILES) $(CMIFILES)) $(lib)/$(basename $(src)): $(src) $(lib) :scanner: $(NOSCANNER) ln-or-cp $< $@ # Add to the install tag $(tag): $(file $(addprefix $(lib)/, $(basename $(MLIFILES) $(CMIFILES)))) # # Also install libraries # private.CLIB = $(file $(name)$(EXT_LIB)) private.BYTELIB = $(file $(name).cma) private.NATIVELIB = $(file $(name).cmxa) private.LIBCLIB = $(file $(lib)/$(name)$(EXT_LIB)) private.LIBBYTE = $(file $(lib)/$(name).cma) private.LIBNATIVE = $(file $(lib)/$(name).cmxa) # # Link libraries into lib directory # $(LIBBYTE): $(BYTELIB) ln-or-cp $< $@ $(LIBNATIVE): $(NATIVELIB) ln-or-cp $< $@ $(LIBCLIB): $(CLIB) ln-or-cp $< $@ # # Add dependencies to the target tag # public.FILES[] = if $(BYTE_ENABLED) FILES[] += $(LIBBYTE) export if $(NATIVE_ENABLED) FILES[] += $(LIBNATIVE) $(LIBCLIB) export $(tag): $(FILES) return $(FILES) # # We often use them together # # \begin{doc} # \fun{OCamlLibraryInstall} # # The \verb+OCamlLibraryInstall+ function builds a library # and copies it to an install location in one step. # # \verb+OCamlLibraryInstall(, , , )+ # \end{doc} # public.OCamlLibraryInstall(tag, lib, name, files) = OCamlLibrary($(name), $(files)) return $(OCamlLibraryCopy $(tag), $(lib), $(name), $(files)) # # Generic rule to build an OCaml program # name: the name of the target, without a suffix # files: names of the object files, without suffixes # # Other variables: # OCAML_LIBS: OCaml libraries target depends on, without suffix # OCAML_CLIBS: C libraries we depend on, without suffix # OCAML_OTHER_LIBS: OCaml libraries, without dependencies, without suffix # OCAML_BYTE_LINK_FLAGS: additional flags for byte compiler # OCAML_NATIVE_LINK_FLAGS: additional flags for native-code compiler # OCAML_LINK_FLAGS: general additional options (usually the -cclib options) # # \begin{doc} # \fun{OCamlProgram} # # The \verb+OCamlProgram+ function builds an OCaml program. It returns the array with all # the targets for which it has defined the rules (\verb+$(name)$(EXE)+ and \verb+$(name).run+ # and/or \verb+$(name).opt+, depending on the \verb+NATIVE_ENABLED+ and \verb+BYTE_ENABLED+ # variables). # # \verb+OCamlProgram(, )+ # # Additional variables used: # \begin{description} # \item[\hypervarxn{OCAML_LIBS}{OCAML\_LIBS}] Additional libraries passed to the linker, without suffix. These files # become dependencies of the target program. # \item[\hypervarxn{OCAML_OTHER_LIBS}{OCAML\_OTHER\_LIBS}] Additional libraries passed to the linker, without suffix. These # files do \emph{not} become dependencies of the target program. # \item[\hypervarxn{OCAML_CLIBS}{OCAML\_CLIBS}] C libraries to pass to the linker. # \item[\hypervarxn{OCAML_BYTE_LINK_FLAGS}{OCAML\_BYTE\_LINK\_FLAGS}] Flags to pass to the bytecode linker. # \item[\hypervarxn{OCAML_NATIVE_LINK_FLAGS}{OCAML\_NATIVE\_LINK\_FLAGS}] Flags to pass to the native code linker. # \item[\hypervarxn{OCAML_LINK_FLAGS}{OCAML\_LINK\_FLAGS}] Flags to pass to both linkers. # \end{description} # \end{doc} # public.OCamlProgram(name, files) = # XXX: JYH: these variables should be marked private in 0.9.9 protected.CMOFILES = $(addsuffix .cmo, $(files)) protected.CMXFILES = $(addsuffix .cmx, $(files)) protected.OFILES = $(addsuffix $(EXT_OBJ), $(files)) protected.CMAFILES = $(addsuffix .cma, $(OCAML_LIBS)) protected.CMXAFILES = $(addsuffix .cmxa, $(OCAML_LIBS)) protected.ARFILES = $(addsuffix $(EXT_LIB), $(OCAML_LIBS)) protected.CMA_OTHER_FILES = $(addsuffix .cma, $(OCAML_OTHER_LIBS)) protected.CMXA_OTHER_FILES = $(addsuffix .cmxa, $(OCAML_OTHER_LIBS)) protected.CLIBS = $(addsuffix $(EXT_LIB), $(OCAML_CLIBS)) protected.name = $(file $(name)) protected.PROG = $(file $(name)$(EXE)) protected.BYTEPROG = $(file $(name).run) protected.OPTPROG = $(file $(name).opt) # # Rules to build byte-code and native targets # $(BYTEPROG): $(CMAFILES) $(CMOFILES) $(CLIBS) $(OCAMLFIND) $(OCAMLLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLCFLAGS)\ $(PREFIXED_OCAMLINCLUDES) $(OCAML_BYTE_LINK_FLAGS)\ -o $@ $(CMA_OTHER_FILES) $(CMAFILES) $(OCamlLinkSort $(CMOFILES))\ $(CLIBS) $(OCAML_LINK_FLAGS) $(OPTPROG): $(CMXAFILES) $(ARFILES) $(CMXFILES) $(OFILES) $(CLIBS) $(OCAMLFIND) $(OCAMLOPTLINK) $(LAZY_OCAMLFINDFLAGS) $(PREFIXED_OCAMLPACKS) $(OCAMLFLAGS) $(OCAMLOPTFLAGS)\ $(PREFIXED_OCAMLINCLUDES) $(OCAML_NATIVE_LINK_FLAGS)\ -o $@ $(CMXA_OTHER_FILES) $(CMXAFILES) $(OCamlLinkSort $(CMXFILES))\ $(CLIBS) $(OCAML_LINK_FLAGS) # # Link the actual executables. # Always prefer native executables. # if $(NATIVE_ENABLED) $(PROG): $(OPTPROG) ln-or-cp $< $@ else $(PROG): $(BYTEPROG) ln-or-cp $< $@ return $(array $(PROG), $(if $(NATIVE_ENABLED), $(OPTPROG)), $(if $(BYTE_ENABLED), $(BYTEPROG))) # # Copy to $(BIN) directory # # \begin{doc} # \fun{OCamlProgramCopy} # # The \verb+OCamlProgramCopy+ function copies an OCaml program to an install location. # # \verb+OCamlProgramCopy(, , )+ # # Additional variables used: # \begin{description} # \item[NATIVE\_ENABLED] If the \hypervarx{NATIVE_ENABLED}{NATIVE\_ENABLED} is set, the native-code executable # is copied; otherwise the byte-code executable is copied. # \end{description} # \end{doc} # public.OCamlProgramCopy(tag, bin, name) = private.name = $(file $(name)) private.BYTEPROG = $(file $(name).run) private.OPTPROG = $(file $(name).opt) private.SRCNAME = $(if $(NATIVE_ENABLED), $(OPTPROG), $(BYTEPROG)) private.BINNAME = $(file $(bin)/$(basename $(name))$(EXE)) # # Link the actual executables. # Always prefer native executables. # $(BINNAME): $(SRCNAME) $(bin) ln-or-cp $< $@ # Add to phony tag. $(tag): $(BINNAME) return $(BINNAME) # # We often use them together # # \begin{doc} # \fun{OCamlProgramInstall} # # The \verb+OCamlProgramInstall+ function builds a programs and copies it to # an install location in one step. # # \verb+OCamlProgramInstall(, , , )+ # \end{doc} # public.OCamlProgramInstall(tag, bin, name, files) = OCamlProgram($(name), $(files)) return $(OCamlProgramCopy $(tag), $(bin), $(name)) # vim:tw=100:fo=tcq: omake-0.9.8.5/lib/build/Common.om0000664000152300015230000001220010652232246014562 0ustar jyhjyh######################################################################## # General configuration. # # Copyright (C) 2003-2005 Jason Hickey and Mojave Group # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the File # is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the File. # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # FILE OR THE USE OR OTHER DEALINGS IN THE FILE. ######################################################################## # Mention a few of the other standard variables here. # # \begin{doc} # \section{The OMakeroot file} # \index{OMakeroot} # # The standard \File{OMakeroot} file defines the functions are rules # for building standard projects. # # \subsection{Variables} # \var{ROOT} The root directory of the current project. # \var{CWD} The current working directory (the directory is set for each \File{OMakefile} in the project). # \var{EMPTY} The empty string. # \var{STDROOT} The name of the standard installed \File{OMakeroot} file. # \end{doc} # ROOT = $(dir .) LIB = $(dir lib) BIN = $(dir bin) # # A default sort rule # .ORDER: .BUILDORDER # # \begin{doc} # \varlabel{ABORT_ON_COMMAND_ERROR}{ABORT\_ON\_COMMAND\_ERROR} If set to true, the construction of a target should # be aborted whenever one of the commands to build it fail. This defaults to true, # and should normally be left that way. # # \varlabel{SCANNER_MODE}{SCANNER\_MODE} This variable should be defined as one of four values # (defaults to \verb+enabled+). # \begin{description} # \item[enabled] Allow the use of default \verb+.SCANNER+ rules. Whenever a rule does # not specify a \verb+:scanner:+ dependency explicitly, try to find a # \verb+.SCANNER+ with the same target name. # \item[disabled] Never use default \verb+.SCANNER+ rules. # \item[warning] Allow the use of default \verb+.SCANNER+ rules, but print a warning # whenever one is selected. # \item[error] Do not allow the use of default \verb+.SCANNER+ rules. If a rule # does not specify a \verb+:scanner:+ dependency, and there is a default # \verb+.SCANNER+ rule, the build will terminate abnormally. # \end{description} # \end{doc} # # These are defined in Omake_builtin_base # ABORT_ON_COMMAND_ERROR = true # SCANNER_MODE = enabled ######################################################################## # Generic Unix section # # # \begin{doc} # \subsection{System variables} # # \var{INSTALL} The command to install a program (\verb+install+ on \verb+Unix+, \verb+cp+ on \verb+Win32+). # \var{PATHSEP} The normal path separator (\verb+:+ on \verb+Unix+, \verb+;+ on \verb+Win32+). # \var{DIRSEP} The normal directory separator (\verb+/+ on \verb+Unix+, \verb+\+ on \verb+Win32+). # \varlabel{EXT_OBJ}{EXT\_OBJ} File suffix for an object file (default is \verb+.o+ on \verb+Unix+, and \verb+.obj+ on \verb+Win32+). # \varlabel{EXT_LIB}{EXT\_LIB} File suffix for a static library (default is \verb+.a+ on \verb+Unix+, and \verb+.lib+ on \verb+Win32+). # \varlabel{EXT_DLL}{EXT\_DLL} File suffix for a shared library (default is \verb+.so+ on \verb+Unix+, and \verb+.dll+ on \verb+Win32+). # \varlabel{EXT_ASM}{EXT\_ASM} File suffix for an assembly file (default is \verb+.s+ on \verb+Unix+, and \verb+.asm+ on \verb+Win32+). # \var{EXE} File suffix for executables (default is empty for \verb+Unix+, and \verb+.exe+ on \verb+Win32+ and \verb+Cygwin+). # \end{doc} # # # These commands are builtin, and they are the same on all platforms. # The uppercase variables are defined for backwards compatibility only, # their usage is deprecated. # CP = cp MV = mv RM = rm -f MKDIR = mkdir RMDIR = rmdir CHMOD = chmod if $(equal $(OSTYPE), Win32) # # Command names # INSTALL = cp PATHSEP = ; DIRSEP = \\ # # Common suffixes for files # EXT_LIB = .lib EXT_DLL = .dll EXT_OBJ = .obj EXT_ASM = .asm EXE = .exe export else # # Command names # INSTALL = install PATHSEP = : DIRSEP = / # # Common suffixes for files # EXT_LIB = .a EXT_DLL = .so EXT_OBJ = .o EXT_ASM = .s EXE = export if $(equal $(OSTYPE), Cygwin) EXE = .exe export declare LN if $(not $(defined USE_SYSTEM_COMMANDS)) if $(not $(equal $(OSTYPE), Win32)) LN = ln -sf export export else LN = ln-or-cp export # XXX: JYH: this is a total hack. # It should be the case the :scanner: $(EMPTY) turns off scanners. # NOSCANNER = /scan-dummy .SCANNER: $(NOSCANNER) @ omake-0.9.8.5/CHANGELOG.txt0000664000152300015230000001570210655737107013203 0ustar jyhjyhFor a more verbose changelog, see http://omake.metaprl.org/changelog.html OMake 0.9.8.5 [08/07/2007] - Fixed Ctrl-C handling on Windows (with now correctly interrupt OMake) - Added .STATIC and .MEMO rules, allowing defining lazy computations and lazy memoization maps - Added export sections, making it much easier to manage variable scoping - Fields in sub-objects can now be referenced directly - Many new built-in and library functions - Significant bug-fixes OMake 0.9.8.4 [06/04/2007] - Fixed a file descriptor leak - A few other minor bug fixes OMake 0.9.8.3 [06/01/2007] OMake 0.9.8.2 [skipped] - Made it easy to define default ("implicit") rules for phony targets. - Detect case-insensitive filesystems on Unix-like operating systems (especially important under Mac OS X). - A number of performance improvements. - Documentation improvements. OMake 0.9.8.1 [03/16/2007] - Added a large number of new built-in and standard library functions - Extented the autocomfiguration section of the standard library - A number of improvements in the interactive osh shell. - A number of improvements in the library of standard build recipes - Documentation improvements. - A number of other improvements and bugfixes. OMake 0.9.8 [12/11/2006] - The conversion from OMake expressions to shell command lines went through a major redesign to make it more consistent and less ad-hoc. - OMake documentation was significantly reorganized. - OCaml build rules: Added experimental improved dependency scanner using the upcoming "ocamldep -modules" feature; added support for the Menhir parser-generator. - Added a number of new options to control OMake's output and verbosity; OMake is now more silent by default. - Many more improvements and bug fixes. OMake 0.9.6.9 [04/11/2006] - Significantly improved C++ support; minor improvements in OCaml support. - Significantly updated the default (sample) OMakefile. - Significantly improved the performance of the built-in find command. - Several other bug fixes and improvements. - A number of documentation fixes and improvements. OMake 0.9.6.8 [01/23/2006] - Fixed a bug in PATH-expansion for pipelines. - Improved the handling of the ".PHONY" nodes. - Added a remove-project-directories function. - Documentation fixes. - A few other bugfixes and improvements. OMake 0.9.6.7 [12/28/2005] - Added basic support for C++. - Portability improvements. - OCaml.om improvements. - Minor documentation fixes. - A few other bugfixes and improvements. OMake 0.9.6.6 [11/05/2005] - Made sure OMake compiles fine with both OCaml 3.08 and 3.09. - A few minor bugfixes and improvements. OMake 0.9.6.5 [09/14/2005] - Improved support for configure-style scripts. - LaTeX rules improvements. - Fixed the "which" function and ocamlfind support under Cygwin. - New built-in functions: get-registry (Windows-only), removeprefix, html-string. - Improved processing of complex shell pipelines. - A number of documentation fixes. - Numerous other bug fixes and improvements. OMake 0.9.6 [07/17/2005] - Added "static" sections that are evaluated once. - Added :value: dependencies, where a target depends on a computed value, rather than a file. - Changed the meaning of the .SCANNER rules. .SCANNER rules are now much more similar to normal rules. - Added file locking for the .omakedb and .omc files. - Fixed issues where files were being expanded during the string->array conversion. - Rule execution now fails when any shell command fails, even those in nested sections. - Regular expressions now handle \(...\) arguments correctly. Also, the lexer has better performance, searching is now roughly linear time. - Added .SUBDIRS bodies, which can be used instead of the OMakefile in a subdirectory. - Added the vmount function to define a "virtual mount" of one directory over another. - Better accessibility of the build rules and dependencies from OMake scripts. - Improved the latex-related rules. - The Map object is completely changed. - Other bug fixes and improvements. OMake 0.9.5 [skipped] OMake 0.9.4 [01/04/2005] - Portability improvements. OMake should now compile and work under Windows 2000, Windows NT and FreeBSD. A number of Windows-specific bugs are fixed. A Windows installer is added. - OMake now uses the built-in versions of the following commands: cp, mv, mkdir, rm, rmdir, chmod - Improvements to the filesystem watch functionality. In particular, the build will now restart if a change to one of the OMakefiles is detected. - Added a USE_OCAMLFIND variable that can be used to force or prohibit the usage of ocamlfind in a project (by default USE_OCAMLFIND is set to true iff the ocamlfind executable is found in path). - Added a "--force-dotomake" option to create all .omc and .omo files under $HOME/.omake/cache and a "--dotomake" option to specify an alternative to $HOME/.omake - Added :squash: dependencies (that specify that the dependency must be built, but when the dependency changes, it does not cause the target to be rebuilt). - OMake will now read ~/.omakeinit and ~/.omakerc files on startup. - Improved the latex-related rules. - Documentation improvements. - Bugs fixed: 142, 153, 311, 313, 314, 316, 332, 333, 339, 350, 360, 361, 366, 367, 368, 374, 375. See http://bugzilla.metaprl.org/buglist.cgi?bug_id=142,153,311,313,314,316,332,333,339,350,360,361,366,367,368,374,375 for details. OMake 0.9.3 [10/18/2004] - OMake now supports ocamlfind in its default configuration file (thanks to Bardur Arantsson for the initial patch). - OMake should now also work with OCaml 3.07 (in addition to 3.08). - A large number of bug fixes, including: o OMake should now compile correctly under Cygwin (thanks to Peter Jolly who provided the patch), o "double-colon" rules (that allow specifying multiple rules for the same target) should now work correctly, o kqueue-based file system monitoring (Mac OS X, FreeBSD) should now work correctly o array definitions should now work better. - Added a work around for the command line length limitation of lib.exe on Windows - Filesystem monitoring functionality now provides a choice whether to continue monitoring once the project is built successfully. OMake 0.9.2 [09/08/2004] - Bugs fixed: o "make install" will no longer create $HOME/.omake as root; o the -custom option is now a part of OCAML_BYTE_LINK_FLAGS and can be easily disabled; o omake should now allow specifying dependencies for the same file more than once. - The OMakeroot.src, OMakeroot.default and OMakefile.default are now under MIT license to allow users to freely borrow from them into their own omake build files. (The rest of OMake is still under GPL). - Fixed a number of typos and formatting errors in documentation. omake-0.9.8.5/doc/0000775000152300015230000000000010660137255011705 5ustar jyhjyhomake-0.9.8.5/doc/OMakefile0000664000152300015230000001550410635275366013501 0ustar jyhjyhBUILTIN = $(dir $(ROOT)/src/builtin) # # Documentation files # MAN_BASE_FILES[] = $(BUILTIN)/omake_builtin_base.ml $(BUILTIN)/omake_builtin_arith.ml $(BUILTIN)/omake_builtin_fun.ml $(BUILTIN)/omake_builtin_object.ml $(BUILTIN)/omake_builtin_file.ml $(BUILTIN)/omake_builtin_test.ml MAN_SYSTEM_FILES[] = $(BUILTIN)/omake_builtin_io.ml $(BUILTIN)/omake_builtin_io_fun.ml $(BUILTIN)/omake_builtin_sys.ml $(BUILTIN)/omake_builtin_shell.ml MAN_PERVASIVES_FILES[] = $(LIB)/Pervasives.om $(BUILTIN)/omake_builtin_rule.ml $(BUILTIN)/omake_builtin_target.ml MAN_ROOT_FILES[] = $(LIB)/build/Common.om $(LIB)/build/C.om $(LIB)/build/OCaml.om $(LIB)/build/LaTeX.om MAN_CONFIGURE_FILES[] = $(LIB)/configure/Configure.om $(LIB)/configure/ncurses.om $(LIB)/configure/readline.om $(LIB)/configure/snprintf.om MAN_BASE_FILES = $(file $(MAN_BASE_FILES)) MAN_SYSTEM_FILES = $(file $(MAN_SYSTEM_FILES)) MAN_PERVASIVES_FILES = $(file $(MAN_PERVASIVES_FILES)) MAN_ROOT_FILES = $(file $(MAN_ROOT_FILES)) MAN_CONFIGURE_FILES = $(file $(MAN_CONFIGURE_FILES)) MAN_ALL_FILES[] = $(MAN_BASE_FILES) $(MAN_SYSTEM_FILES) $(MAN_PERVASIVES_FILES) $(MAN_ROOT_FILES) $(MAN_CONFIGURE_FILES) ######################################################################## # Documentation # Shell. += # # Extract the text between the following delimiters. # # \begin{doc} # ... # \end{doc} # extract-doc-text(argv) = print = false awk(b, $(argv)) case $'\\end\{doc\}' print = false export case $'\\begin\{doc\}' print = true export default if $(print) println($0) remove-leading-comment-text(argv) = fsubst() case $'^[ \t]*[*#] ?' value extract-docs(argv) = extract-doc-text $(argv) | remove-leading-comment-text # # Extract the documentation from the src files. # ExtractManDocument(dst, files) = tex/$(dst).tex: $(files) extract-docs $(files) > $@ ExtractManDocument(omake-base, $(MAN_BASE_FILES)) ExtractManDocument(omake-system, $(MAN_SYSTEM_FILES)) ExtractManDocument(omake-pervasives, $(MAN_PERVASIVES_FILES)) ExtractManDocument(omake-root, $(MAN_ROOT_FILES)) ExtractManDocument(omake-autoconf, $(MAN_CONFIGURE_FILES)) # # All the TeX files - both generated and the source ones. # TEX_FILES[] = src/omake-doc src/omake-index src/omake-examples src/omake-detail src/omake-build-examples src/omake-detail src/omake-language-naming src/omake-language-examples src/omake-options src/omake-language src/omake-detail src/omake-rules tex/omake-base tex/omake-system tex/omake-pervasives tex/omake-root tex/omake-autoconf src/osh src/omake-grammar TEX_FILES = $(file $(addsuffix .tex, $(TEX_FILES))) # # HTML files that will be generated out of the ocaml-doc one # HTML_FILES[] = omake-doc.css omake-contents.html omake.html omake-quickstart.html omake-build-examples.html omake-language.html omake-detail.html omake-language-naming.html omake-language-examples.html omake-rules.html omake-base.html omake-system.html omake-shell.html omake-pervasives.html omake-build.html osh.html omake-options.html omake-grammar.html omake-all-index.html omake-var-index.html omake-fun-index.html omake-obj-index.html omake-target-index.html omake-references.html omake-toc.html omake-autoconf.html previous_motif.gif next_motif.gif contents_motif.gif HTML_FILES = $(file $(addprefix html/, $(HTML_FILES))) # # Generated info files. # # XXX: HACK: we do not know how many pieces we'd have. For now we hardcode the number. # NUM_INFOS = 10 INFO_BASE = $(file info/omake-doc.info) INFO_FILES[] = $(INFO_BASE) section i = 1 while $(le $i, $(NUM_INFOS)) INFO_FILES[] += $(file $(INFO_BASE)-$(i)) i = $(add $i, 1) export INFO_FILES # # At least 1.09 is needed, future versions may work as well. # Please do not add old versions here, as they will produce very different output. :-( # ALLOWED_HEVEA_VERSIONS[] = 1.09 public.HEVEA = hevea public.HACHA = hacha .STATIC: HEVEA_DIR = HEVEA_OK = $(and $(CheckProg $(HEVEA)), $(CheckProg $(HACHA))) if $(HEVEA_OK) ConfMsgChecking(for $(HEVEA) configs and version) HEVEA_VERSION = $(shell $(HEVEA) -version) HEVEA_DIR = $(dir $(last $(HEVEA_VERSION))) HEVEA_VERSION = $(nth 1, $(HEVEA_VERSION)) ConfMsgResult($(HEVEA_VERSION) in $(HEVEA_DIR)) if $(mem $(HEVEA_VERSION), $(ALLOWED_HEVEA_VERSIONS)) ConfMsgChecking(if $(HEVEA_DIR) exists) HEVEA_OK = $(ConfMsgYesNo $(test -d $(HEVEA_DIR))) export else HEVEA_OK = false ConfMsgWarn($"""Hevea version $(HEVEA_VERSION) is not allowed; allowed versions: $(concat $', ', $(ALLOWED_HEVEA_VERSIONS)). If you think this is a mistake, edit the ALLOWED_HEVEA_VERSIONS variable in $(in $(ROOT), $(file OMakefile)) (HEVEA DISABLED)""") export export HEVEA_DIR HEVEA_OK HEVEA_OPTIONS = -fix -I $(dir src) -I $(dir tex) -pedantic -O -exec xxdate.exe HACHA_OPTIONS = -tocter -nolinks HEVEA_DEPS[] = $(glob src/*hva) if $(not $(VERBOSE)) HEVEA_OPTIONS += -s export if $(HEVEA_OK) .SUBDIRS: html omake-doc.html: $(TEX_FILES) $(HEVEA_DEPS) $(HEVEA) $(HEVEA_OPTIONS) omake-doc $(HTML_FILES): omake-doc.html $(HACHA) $(HACHA_OPTIONS) -o omake-toc.html $< .SUBDIRS: txt omake-doc.txt: $(TEX_FILES) $(HEVEA) $(HEVEA_OPTIONS) -text omake-doc .SUBDIRS: info $(INFO_FILES): $(TEX_FILES) rm -f omake-doc.info* $(HEVEA) $(HEVEA_OPTIONS) -info omake-doc if $(test -e $(INFO_BASE)-$(add $(NUM_INFOS), 1)) eprintln($"!!! Wrong number of info files! Increase the NUM_INFOS variable in doc/OMakefile and make sure to add new info file(s) to svn") exit 1 if $(not $(test -e $(INFO_BASE)-$(NUM_INFOS))) eprintln($"!!! Wrong number of info files! Decrease the NUM_INFOS variable in doc/OMakefile and make sure to remove old info file(s) from svn") exit 1 .SUBDIRS: ps TEXINPUTS[] += $(dir ../src ../tex $(HEVEA_DIR)) omake-doc.tex: ../src/omake-doc.tex ln-or-cp $< $@ TEXDEPS[] += $(TEX_FILES) LaTeXDocument(omake-doc, omake-doc) html: html/omake-doc.html $(HTML_FILES) tex: ps/omake-doc.ps ps/omake-doc.pdf txt: txt/omake-doc.txt info: $(INFO_FILES) clean: rm -f {txt,html,info}/*.{hind,h{t,o,f,v,opt}ind,htoc,haux} *.omc rm -f ps/*.{aux,fls,log,out,{t,o,v,f,opt}ids,ind,toc,ilg,{,v}idx,opts} ps/omake-doc.tex tex/*.tex omake-0.9.8.5/doc/info/0000775000152300015230000000000010660137255012640 5ustar jyhjyhomake-0.9.8.5/doc/info/omake-doc.info-80000664000152300015230000014162110655737107015534 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Subsection 13-6-2, Next: Subsection 13-6-3, Prev: Subsection 13-6-1, Up: Section 13-6 13.6.2 Configuration variables for OCaml compilation ====================================================== The following variables can be redefined in your project. USE_OCAMLFIND Whether to use the `ocamlfind' utility (default `false') OCAMLC The OCaml bytecode compiler (default `ocamlc.opt' if it exists and `USE_OCAMLFIND' is not set, otherwise `ocamlc'). OCAMLOPT The OCaml native-code compiler (default `ocamlopt.opt' if it exists and `USE_OCAMLFIND' is not set, otherwise `ocamlopt'). CAMLP4 The `camlp4' preprocessor (default `camlp4'). OCAMLLEX The OCaml lexer generator (default `ocamllex'). OCAMLLEXFLAGS The flags to pass to `ocamllex' (default `-q'). OCAMLYACC The OCaml parser generator (default `ocamlyacc'). OCAMLYACCFLAGS Additional options to pass to `$(OCAMLYACC)'. OCAMLDEP The OCaml dependency analyzer (default `ocamldep'). OCAMLDEP_MODULES The OCaml dependency analyzer that understands the `-module' option (default `ocamldep', if `ocamldep -modules' works, or `ocamlrun ocamldep-omake', if `ocamlrun ocamldep-omake -modules' works, and empty when neither works). OCAMLDEP_MODULES_ENABLED Instead of using `OCAMLDEP' in a traditional `make'-style fashion, run `$(OCAMLDEP_MODULES) -modules' and then postprocess the output internally to discover all the relevant generated `.ml' and `.mli' files. See Section 13.6.5*Note Subsection 13-6-5:: for more information on interactions between OMake, `OCAMLDEP' and generated files. Set to `$(OCAMLDEP_MODULES_AVAILABLE)' by default. OCAMLMKTOP The OCaml toploop compiler (default `ocamlmktop'). OCAMLLINK The OCaml bytecode linker (default `$(OCAMLC)'). OCAMLOPTLINK The OCaml native-code linker (default `$(OCAMLOPT)'). OCAMLINCLUDES Search path to pass to the OCaml compilers (default `.'). The search path with the `-I' prefix is defined by the `PREFIXED_OCAMLINCLUDES' variable. OCAMLFIND The `ocamlfind' utility (default `ocamlfind' if `USE_OCAMLFIND' is set, otherwise empty). OCAMLFINDFLAGS The flags to pass to `ocamlfind' (default empty, `USE_OCAMLFIND' must be set). OCAMLPACKS Package names to pass to `ocamlfind' (`USE_OCAMLFIND' must be set). BYTE_ENABLED Flag indicating whether to use the bytecode compiler (default `true', when no `ocamlopt' found, `false' otherwise). NATIVE_ENABLED Flag indicating whether to use the native-code compiler (default `true', when ocamlopt is found, `false' otherwise). Both `BYTE_ENABLED' and `NATIVE_ENABLED' can be set to true; at least one should be set to true. MENHIR_ENABLED Define this as `true' if you wish to use `menhir' instead of `ocamlyacc' (default `false').  Node: Subsection 13-6-3, Next: Subsection 13-6-4, Prev: Subsection 13-6-2, Up: Section 13-6 13.6.3 OCaml command flags ============================ The following variables specify additional options to be passed to the OCaml tools. OCAMLDEPFLAGS Flags to pass to `OCAMLDEP' and `OCAMLDEP_MODULES'. OCAMLPPFLAGS Flags to pass to `CAMLP4'. OCAMLCFLAGS Flags to pass to the byte-code compiler (default `-g'). OCAMLOPTFLAGS Flags to pass to the native-code compiler (default empty). OCAMLFLAGS Flags to pass to either compiler (default `-warn-error A'). OCAML_BYTE_LINK_FLAGS Flags to pass to the byte-code linker (default empty). OCAML_NATIVE_LINK_FLAGS Flags to pass to the native-code linker (default empty). OCAML_LINK_FLAGS Flags to pass to either linker. MENHIR_FLAGS Additional flags to pass to `menhir'.  Node: Subsection 13-6-4, Next: Subsection 13-6-5, Prev: Subsection 13-6-3, Up: Section 13-6 13.6.4 Library variables ========================== The following variables are used during linking. OCAML_LIBS Libraries to pass to the linker. These libraries become dependencies of the link step. OCAML_OTHER_LIBS Additional libraries to pass to the linker. These libraries are not included as dependencies to the link step. Typical use is for the OCaml standard libraries like `unix' or `str'. OCAML_CLIBS C libraries to pass to the linker. OCAML_LIB_FLAGS Extra flags for the library linker. ABORT_ON_DEPENDENCY_ERRORS OCaml linker requires the OCaml files to be listed in dependency order. Normally, all the functions presented in this section will automatically sort the list of OCaml modules passed in as the `' argument. However, this variable is set to `true', the order of the files passed into these function will be left as is, but OMake will abort with an error message if the order is illegal.  Node: Subsection 13-6-5, Next: Subsection 13-6-6, Prev: Subsection 13-6-4, Up: Section 13-6 13.6.5 Generated OCaml Files ============================== As of OCaml version 3.09.2, the standard `ocamldep' scanner is "broken". The main issue is that it finds only those dependencies that already exist. If `foo.ml' contains a dependency on `Bar', <> then the default `ocamldep' will only find the dependency if a file `bar.ml' or `bar.ml' exists in the include path. It will not find (or print) the dependency if, for example, only `bar.mly' exists at the time `ocamldep' is run, even though `bar.ml' and `bar.mli' can be generated from `bar.mly'. OMake currently provides two methods for addressing this problem --- one that requires manually specifying the generated files, and an experimental method for discovering such "hidden" dependencies automatically. The 'OCAMLDEP_MODULES_ENABLED' variable controls which method is going to be used. When this variable is false, the manual specifications are expected and when it is true, the automated discovery will be attempted. 13.6.5.1 OCamlGeneratedFiles, LocalOCamlGeneratedFiles -------------------------------------------------------- \@ name{function:LocalOCamlGeneratedFiles} <> When the 'OCAMLDEP_MODULES_ENABLED' variable variable is set to `false', the `OCamlGeneratedFiles' and `LocalOCamlGeneratedFiles' functions specify files that need to be generated before any OCaml files are scanned for dependencies. For example, if `parser.ml' and `lexer.ml' are both generated files, specify: <> The `OCamlGeneratedFiles' function is global --- its arguments will be generated before any OCaml files anywhere in the project are scanned for dependencies. The `LocalOCamlGeneratedFiles' function follows the normal scoping rules of OMake. These functions have no effect when the 'OCAMLDEP_MODULES_ENABLED' variable is true. 13.6.5.2 Automatic discovery of generated files during dependency ------------------------------------------------------------------- analysis -------- Having to specify the generated files manualy when OMake could discover them automatically is obviously suboptimal. To address this, we tell `ocamldep' to only find the free module names in a file and then post-process the results internally. This automated functionality is enabled when the 'OCAMLDEP_MODULES_ENABLED' variable is set to `true'. By default, 'OCAMLDEP_MODULES_ENABLED' variable will be set to `$(OCAMLDEP_MODULES_AVAILABLE)'. Note that the `ocamldep' functionality this relies upon is only included in the OCaml version 3.10 and higher. Temporarily, we distribute a bytecode version `ocamldep-omake' of the appropriately modified `ocamldep'. The appropriate `ocamldep' will be discovered automatically --- see and the 'OCAMLDEP_MODULES_AVAILABLE' and 'OCAMLDEP_MODULES' variables will be set accordingly.  Node: Subsection 13-6-6, Next: Section 13-7, Prev: Subsection 13-6-5, Up: Section 13-6 13.6.6 Using the Menhir parser generator ========================================== Menhir is a parser generator that is mostly compatible with `ocamlyacc', but with many improvements. A few of these are listed here (excerpted from the Menhir home page http://cristal.inria.fr/~fpottier/menhir/). - Menhir's explanations are believed to be understandable by mere humans. - Menhir allows grammar specifications to be split over multiple files. It also allows several grammars to share a single set of tokens. - Menhir is able to produce parsers that are parameterized by Objective Caml modules. - Added by jyh With the `--infer' option, Menhir can typecheck the semantic actions in your grammar at generation time. What do you need to do to use Menhir instead of `ocamlyacc'? 1. Place the following definition before the relevant section of your project (or at the top of your project `OMakefile' if you want to use Menhir everywhere). << MENHIR_ENABLED = true >> 2. Optionally, add any desired Menhir options to the `MENHIR_FLAGS' variable. << MENHIR_FLAGS += --infer >> With this setup, any file with a `.mly' suffix will be compiled with Menhir. If your grammar is split across several files, you need to specify it explicitly, using the `MenhirMulti' function. << MenhirMulti(target, sources) target : filename, without suffix sources : the files that define the grammar, without suffixes >> For example, if you want to generate the parser files `parse.ml' and `parse.mli', from the grammar specified in files `a.mly' and `b.mly', you would use the following. << MenhirMulti(parse, a b) >> 13.6.6.1 OCamlLibrary ----------------------- The `OCamlLibrary' function builds an OCaml library. `OCamlLibrary(, )' The `' and `' are listed without suffixes. This function returns the list of all the targets that it defines the rules for (including the `$(name)$(EXT_LIB)' file when `NATIVE_ENABLED' is set). The following code builds the `libfoo.cmxa' library from the files `foo.cmx' and `bar.cmx' (if `NATIVE_ENABLED' is set), and `libfoo.cma' from `foo.cmo' and `bar.cmo' (if `BYTE_ENABLED' is set). <> 13.6.6.2 OCamlPackage ----------------------- The `OCamlPackage' function builds an OCaml package. `OCamlPackage(, )' The `' and `' are listed without suffixes. The `' must have been compiled with the `-for-pack ' flag to the OCaml compiler. This function returns the list of all the targets that it defines the rules for (including the `$(name)$(EXT_LIB)' file when `NATIVE_ENABLED' is set). The following code builds the `libfoo.cmx' package from the files `package.cmx' and `bar.cmx' (if `NATIVE_ENABLED' is set), and `package.cmo' from `foo.cmo' and `bar.cmo' (if `BYTE_ENABLED' is set). <> 13.6.6.3 OCamlLibraryCopy --------------------------- The `OCamlLibraryCopy' function copies a library to an install location. `OCamlLibraryCopy(, , , )' The `' specify additional interface files to be copied if the `INSTALL_INTERFACES' variable is true. 13.6.6.4 OCamlLibraryInstall ------------------------------ The `OCamlLibraryInstall' function builds a library and copies it to an install location in one step. `OCamlLibraryInstall(, , , )' 13.6.6.5 OCamlProgram ----------------------- The `OCamlProgram' function builds an OCaml program. It returns the array with all the targets for which it has defined the rules (`$(name)$(EXE)' and `$(name).run' and/or `$(name).opt', depending on the `NATIVE_ENABLED' and `BYTE_ENABLED' variables). `OCamlProgram(, )' Additional variables used: 'OCAML_LIBS' Additional libraries passed to the linker, without suffix. These files become dependencies of the target program. 'OCAML_OTHER_LIBS' Additional libraries passed to the linker, without suffix. These files do not become dependencies of the target program. 'OCAML_CLIBS' C libraries to pass to the linker. 'OCAML_BYTE_LINK_FLAGS' Flags to pass to the bytecode linker. 'OCAML_NATIVE_LINK_FLAGS' Flags to pass to the native code linker. 'OCAML_LINK_FLAGS' Flags to pass to both linkers. 13.6.6.6 OCamlProgramCopy --------------------------- The `OCamlProgramCopy' function copies an OCaml program to an install location. `OCamlProgramCopy(, , )' Additional variables used: NATIVE_ENABLED If the 'NATIVE_ENABLED' variable is set, the native-code executable is copied; otherwise the byte-code executable is copied. 13.6.6.7 OCamlProgramInstall ------------------------------ The `OCamlProgramInstall' function builds a programs and copies it to an install location in one step. `OCamlProgramInstall(, , , )'  Node: Section 13-7, Next: Subsection 13-7-1, Prev: Section 13-6, Up: Chapter 13 13.7 Building LaTeX files *=*=*=*=*=*=*=*=*=*=*=*=*=* OMake provides support for building LaTeX documents, including support for automatically running BiBTex and for producing PostScript and PDF files. In order to use the functions defined in this section, you need to make sure the line <> is present in your `OMakeroot' file. * Menu: * Subsection 13-7-1:: Configuration variables * Subsection 13-7-2:: Building LaTeX documents  Node: Subsection 13-7-1, Next: Subsection 13-7-2, Prev: Section 13-7, Up: Section 13-7 13.7.1 Configuration variables ================================ The following variables can be modified in your project. LATEX The LaTeX command (default `latex'). TETEX2_ENABLED Flag indicating whether to use advanced LaTeX options present in TeTeX v.2 (default value is determined the first time omake reads `LaTeX.src' and depends on the version of LaTeX you have installed). LATEXFLAGS The LaTeX flags (defaults depend on the `TETEX2_ENABLED' variable) BIBTEX The BibTeX command (default `bibtex'). MAKEINDEX The command to build an index (default `makeindex'). DVIPS The `.dvi' to PostScript converter (default `dvips'). DVIPSFLAGS Flags to pass to `dvips' (default `-t letter'). DVIPDFM The `.dvi' to `.pdf' converter (default `dvipdfm'). DVIPDFMFLAGS Flags to pass to `dvipdfm' (default `-p letter'). PDFLATEX The `.latex' to `.pdf' converter (default `pdflatex'). PDFLATEXFLAGS Flags to pass to pdflatex (default is `$`(LATEXFLAGS)'). USEPDFLATEX Flag indicating whether to use pdflatex instead of dvipdfm to generate the `.pdf' document (default `false').  Node: Subsection 13-7-2, Next: Chapter 14, Prev: Subsection 13-7-1, Up: Section 13-7 13.7.2 Building LaTeX documents ================================= 13.7.2.1 LaTeXDocument ------------------------ The `LaTeXDocument' produces a LaTeX document. `LaTeXDocument(, )' The document `' and `' are listed without suffixes. This function returns the filenames for the generated `.ps' and `.pdf' files. Additional variables used: TEXINPUTS The LaTeX search path (an array of directories, default is taken from the `TEXINPUTS' environment variable). TEXDEPS Additional files this document depends on. TEXVARS An array of names of the environment variables that are to be updated based on the value of OMake's `TEXINPUTS' variable. Defaults to `TEXINPUTS' `BIBINPUTS' `BSTINPUTS'. 13.7.2.2 TeXGeneratedFiles, LocalTeXGeneratedFiles ---------------------------------------------------- \@na me{function:LocalTeXGeneratedFiles} <> The `TeXGeneratedFiles' and `LocalTeXGeneratedFiles' functions specify files that need to be generated before any LaTeXfiles are scanned for dependencies. For example, if `config.tex' and `inputs.tex' are both generated files, specify: << TeXGeneratedFiles(config.tex inputs.tex) >> The `TeXGeneratedFiles' function is global --- its arguments will be generated before any TeX files anywhere in the project are scanned for dependencies. The `LocalTeXGeneratedFiles' function follows the normal scoping rules of OMake. 13.7.2.3 LaTeXDocumentCopy ---------------------------- The `LaTeXDocumentCopy' copies the document to an install location. `LaTeXDocumentCopy(, , , )' This function copies just the `.pdf' and `.ps' files. 13.7.2.4 LaTeXDocumentInstall ------------------------------- The `LaTeXDocumentInstall' builds a document and copies it to an install location in one step. `LaTeXDocumentInstall(, , , , )'  Node: Chapter 14, Next: Section 14-1, Prev: Section 13-7, Up: Top Chapter 14 Autoconfiguration functions and variables ******************************************************** OMake standard library provides a number of functions and variables intended to help one write build specifications that need to be capable of autoconfiguring itself to adjust to different build environments. * Menu: * Section 14-1:: General-purpose autoconfiguration functions * Section 14-2:: Translating 'autoconf' scripts * Section 14-3:: Predefined configuration tests  Node: Section 14-1, Next: Subsection 14-1-1, Prev: Chapter 14, Up: Chapter 14 14.1 General-purpose autoconfiguration functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= The following general-purpose functions can be used to discover the properties of your build environment in a fashion similar to the one used by GNU autoconf tool you may be familiar with. It is recommended that these function be used from an appropriate `static.' block (see Section 4.14*Note Section 4-14:: for more information). In order to use the following general-purpose functions, you need to have the line <> included in your `OMakefile' or `OMakeroot'. * Menu: * Subsection 14-1-1:: ConfMsgChecking, ConfMsgResult * Subsection 14-1-2:: ConfMsgWarn, ConfMsgError * Subsection 14-1-3:: ConfMsgYesNo, ConfMsgFound * Subsection 14-1-4:: TryCompileC, TryLinkC, TryRunC * Subsection 14-1-5:: RunCProg * Subsection 14-1-6:: CheckCHeader, VerboseCheckCHeader * Subsection 14-1-7:: CheckCLib, VerboseCheckCLib * Subsection 14-1-8:: CheckProg  Node: Subsection 14-1-1, Next: Subsection 14-1-2, Prev: Section 14-1, Up: Section 14-1 14.1.1 ConfMsgChecking, ConfMsgResult ======================================= \@name {function:ConfMsgResult} <) ... ConfMsgResult() >> The `ConfMsgChecking' function output message of the form `--- Checking ... ' without any trailing newline. After the test advertized by `ConfMsgChecking' is performed, the `ConfMsgResult' function should be used to output the result. In certain cases users may want to redefine these function --- for example, to use a different output formatting and/or to copy the messages to a log file. Example: <>  Node: Subsection 14-1-2, Next: Subsection 14-1-3, Prev: Subsection 14-1-1, Up: Section 14-1 14.1.2 ConfMsgWarn, ConfMsgError ================================== <) ConfMsgError() >> Print a warning or an error message respectively. `ConfMsgError' would then abort OMake.  Node: Subsection 14-1-3, Next: Subsection 14-1-4, Prev: Subsection 14-1-2, Up: Section 14-1 14.1.3 ConfMsgYesNo, ConfMsgFound =================================== < flag = $(ConfMsgFound >> The `ConfMsgFound' function expects to receive a boolean flag describing whether a test previously announced using the 'ConfMsgChecking' function found what it was looking for. `ConfMsgFound' will output the appropriate result ("found" or "NOT found") using the 'ConfMsgResult' function and return its argument back. The `ConfMsgYesNo' function is similar, outputting a simple ("yes" or "NO").  Node: Subsection 14-1-4, Next: Subsection 14-1-5, Prev: Subsection 14-1-3, Up: Section 14-1 14.1.4 TryCompileC, TryLinkC, TryRunC ======================================= <) success = $(TryLinkC ) success = $(TryRunC ) >> Given the text of a C program, the `TryCompileC', `TryLinkC', and `TryRunC' functions would try to compile / compile and link / compile, link, and run, the given program and return a boolean flag indicating whether the attempt was successful. `TryCompileC' will use the 'CC', 'CFLAGS' and 'INCLUDES' variables to run the C compiler. `TryLinkC' and `TryRunC' will also use the 'LDFLAGS' variable to run the C compiler and linker. However, the flags like `/WX', `-Werror' and `-warn-error' will be not be passed to the compiler, even if they occur in `CFLAGS'. These functions are silent and should normally be used with an appropriate 'ConfMsgChecking' ... 'ConfMsgResult'.  Node: Subsection 14-1-5, Next: Subsection 14-1-6, Prev: Subsection 14-1-4, Up: Section 14-1 14.1.5 RunCProg ================= <) >> `RunCProg' is similar to the 'RunCProg' function, except that it returns the output of the function (will return `false' if the program fails to compile or run).  Node: Subsection 14-1-6, Next: Subsection 14-1-7, Prev: Subsection 14-1-5, Up: Section 14-1 14.1.6 CheckCHeader, VerboseCheckCHeader ========================================== <) success = $(VerboseCheckCHeader ) >> Use the 'TryCompileC' function to check whether your C compiler can locate and process the specified headers files. Will incude `' before including the header files. Both functions return a boolean value. The `CheckCHeader' function is silent; the `VerboseCheckCHeader' function will use the 'ConfMsgChecking' and 'ConfMsgResult' functions to describe the test and the outcome. Example: <>  Node: Subsection 14-1-7, Next: Subsection 14-1-8, Prev: Subsection 14-1-6, Up: Section 14-1 14.1.7 CheckCLib, VerboseCheckCLib ==================================== <, ) success = $(VerboseCheckCLib , ) >> Use the 'TryLinkC' function to check whether your C compiler and linker can find the named functions when linking with the named libraries. Will pass the `' to the compiler using the `-l' flag. Both functions return a boolean value. The `CheckCLib' function is silent; the `VerboseCheckCHeader' function will use the 'ConfMsgChecking' and 'ConfMsgResult' functions to describe the test and the outcome. Example: <>  Node: Subsection 14-1-8, Next: Section 14-2, Prev: Subsection 14-1-7, Up: Section 14-1 14.1.8 CheckProg ================== `success = $(CheckProg )' Checks whether the program `' exists in your path. Will use the 'ConfMsgChecking' and 'ConfMsgResult' functions to describe the test and the outcome.  Node: Section 14-2, Next: Section 14-3, Prev: Section 14-1, Up: Chapter 14 14.2 Translating 'autoconf' scripts *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Some of the functions described above are very similar to the ones present in `autoconf'. Below is a brief translation table for such functions. 'AC_MSG_CHECKING' is very similar to 'ConfMsgChecking' function. 'AC_MSG_RESULT' is very similar to 'ConfMsgResult' function. 'AC_MSG_WARN' is very similar to 'ConfMsgWarn' function. 'AC_MSG_ERROR' is very similar to 'ConfMsgError' function. 'AC_TRY_COMPILE' is somewhat similar to 'TryCompileC' function, except the 'TryCompileC' function returns a boolean value and only works for `C'. Similarly, 'AC_TRY_LINK' is approximated by 'TryLinkC' function, and 'AC_TRY_RUN' is approximated by 'TryRunC' function.  Node: Section 14-3, Next: Subsection 14-3-1, Prev: Section 14-2, Up: Chapter 14 14.3 Predefined configuration tests *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* A number of configuration tests are already included in the standard library. In order to use them in your project, simply `open' (see Section 4.7*Note Section 4-7::) the corresponding build file in your `OMakefile' and the tests will run the first time OMake is executed. Note that it is not a problem to `open' these files from more than one place in your project --- if you do that, the test will still run only once. * Menu: * Subsection 14-3-1:: NCurses library configuration * Subsection 14-3-2:: ReadLine library configuration * Subsection 14-3-3:: Snprintf configuration  Node: Subsection 14-3-1, Next: Subsection 14-3-2, Prev: Section 14-3, Up: Section 14-3 14.3.1 NCurses library configuration ====================================== Add `open configure/ncurses' line to your `OMakefile' to get access to the following autoconfiguration variables. NCURSES_AVAILABLE A boolean flag that would be set when both the `curses.h' header, the `term.h' header, and the `ncurses' library very found. NCURSES_TERMH_IN_NCURSES A boolean flag that would be set when `term.h' has to be included as `' instead of `'. NCURSES_CFLAGS The `CFLAGS' to use when compiling ncurses code. Will include `-DNCURSES' and `-DTERMH_IN_NCURSES', respectively when `NCURSES_AVAILABLE' and `NCURSES_TERMH_IN_NCURSES' are true. NCURSES_CLIBS The `LDFLAGS' to use when linking ncurses code. Will normally contain `-lncurses' when ncurses is found and remain empty otherwise.  Node: Subsection 14-3-2, Next: Subsection 14-3-3, Prev: Subsection 14-3-1, Up: Section 14-3 14.3.2 ReadLine library configuration ======================================= Add `open configure/readline' line to your `OMakefile' to get access to the following autoconfiguration variables. READLINE_AVAILABLE A boolean flag that would be set when both the `readline/readline.h' header, the `readline/history.h' header, and the `readline' library very found. READLINE_GNU A boolean flag that would be set when the GNU version of the readline library is found (as opposed to the BSD one). READLINE_CFLAGS The `CFLAGS' to use when compiling readline code. Will include `-DREADLINE_ENABLED' and `-DREADLINE_GNU', respectively when `READLINE_AVAILABLE' and `READLINE_GNU' are true. READLINE_CLIBS The `LDFLAGS' to use when linking readline code. Will normally contain `-lncurses -lreadline' when readline is found and remain empty otherwise.  Node: Subsection 14-3-3, Next: Chapter 15, Prev: Subsection 14-3-2, Up: Section 14-3 14.3.3 Snprintf configuration =============================== Add `open configure/snprintf' line to your `OMakefile' to get access to the following autoconfiguration variables. SNPRINTF_AVAILABLE A boolean flag telling whether the snprintf function is available in the standard C library.  Node: Chapter 15, Next: Section 15-1, Prev: Section 14-3, Up: Top Chapter 15 The OSH shell **************************** OMake also includes a standalone command-line interpreter osh that can be used as an interactive shell. The shell uses the same syntax, and provides the same features on all platforms omake supports, including Win32. * Menu: * Section 15-1:: Startup * Section 15-2:: Aliases * Section 15-3:: Interactive syntax  Node: Section 15-1, Next: Section 15-2, Prev: Chapter 15, Up: Chapter 15 15.1 Startup *=*=*=*=*=*=*= On startup, osh reads the file `~/.oshrc' if it exists. The syntax of this file is the same as an OMakefile. The following additional variables are significant. prompt The `prompt' variable specifies the command-line prompt. It can be a simple string. << prompt = osh> >> Or you may choose to define it as a function of no arguments. << prompt() = return $"<$(USER):$(HOST) $(homename $(CWD))>" >> An example of the latter prompt is as follows. << cd links/omake >> If you include any "invisible" text in the prompt (such as various terminal escape sequences), they must be wrapped using the 'prompt-invisible' function. For example, to create a bold prompt on terminals that support it, you can use the following. << prompt = bold-begin = $(prompt-invisible $(tgetstr bold)) bold-end = $(prompt-invisible $(tgetstr sgr0)) value $(bold-begin)$"osh>"$(bold-end) >> ignoreeof If the `ignoreeof' is `true', then `osh' will not exit on a terminal end-of-file (usually `^D' on Unix systems).  Node: Section 15-2, Next: Section 15-3, Prev: Section 15-1, Up: Chapter 15 15.2 Aliases *=*=*=*=*=*=*= Command aliases are defined by adding functions to the `Shell.' object. The following alias adds the `-AF' option to the `ls' command. << Shell. += ls(argv) = "ls" -AF $(argv) >> Quoted commands do not undergo alias expansion. The quotation `"ls"' prevents the alias from being recursive.  Node: Section 15-3, Next: Appendix A, Prev: Section 15-2, Up: Chapter 15 15.3 Interactive syntax *=*=*=*=*=*=*=*=*=*=*=*=* The interactive syntax in `osh' is the same as the syntax of an `OMakefile', with one exception in regard to indentation. The line before an indented block must have a colon at the end of the line. A block is terminated with a `.' on a line by itself, or `^D'. In the following example, the first line `if true' has no body, because there is no colon. << # The following if has no body osh>if true # The following if has a body osh>if true: if> if true: if> println(Hello world) if> . Hello world >> Note that `osh' makes some effort to modify the prompt while in an indented body, and it auto-indents the text. The colon signifier is also allowed in files, although it is not required.  Node: Appendix A, Next: Section A-1, Prev: Chapter 15, Up: Top Appendix A Synopsis *********************** omake [-j ] [-k] [-p] [-P] [-n] [-s] [-S] [-w] [-t] [-u] [-U] [-R] [--verbose] [--project] [--depend] [--progress] [--print-status] [--print-exit] [--print-dependencies] [--show-dependencies ] [--all-dependencies] [--verbose-dependencies] [--force-dotomake] [--dotomake ] [--flush-includes] [--configure] [--save-interval ] [--install] [--install-all] [--install-force] [--version] [--absname] [--output-normal] [--output-postpone] [--output-only-errors] [--output-at-end] filename... [var-definition...] * Menu: * Section A-1:: General usage * Section A-2:: Output control * Section A-3:: Build options * Section A-4:: Additional options * Section A-5:: Environment variables * Section A-6:: Functions * Section A-7:: Option processing * Section A-8:: .omakerc  Node: Section A-1, Next: Section A-2, Prev: Appendix A, Up: Appendix A A.1 General usage *=*=*=*=*=*=*=*=*=* For Boolean options (for example, `-s', `--progress', etc.) the option can include a prefix `--no', which inverts the usual sense of the option. For example, the option `--progress' means "print a progress bar," while the option `--no--progress' means "do not print a progress bar." If multiple instances of an option are specified, the final option determines the behavior of OMake. In the following command line, the final `--no-S' cancels the earlier `-S'. << % omake -S --progress --no-S >>  Node: Section A-2, Next: Subsection A-2-1, Prev: Section A-1, Up: Appendix A A.2 Output control *=*=*=*=*=*=*=*=*=*= * Menu: * Subsection A-2-1:: -s * Subsection A-2-2:: -S * Subsection A-2-3:: -w * Subsection A-2-4:: --progress * Subsection A-2-5:: --print-status * Subsection A-2-6:: --print-exit * Subsection A-2-7:: --verbose * Subsection A-2-8:: --output-normal * Subsection A-2-9:: --output-postpone * Subsection A-2-10:: --output-only-errors * Subsection A-2-11:: --output-at-end * Subsection A-2-12:: -o  Node: Subsection A-2-1, Next: Subsection A-2-2, Prev: Section A-2, Up: Section A-2 A.2.1 -s ========== `-s' Never not print commands as they are executed (be "silent").  Node: Subsection A-2-2, Next: Subsection A-2-3, Prev: Subsection A-2-1, Up: Section A-2 A.2.2 -S ========== `-S' Do not print commands as they are executed unless they produce output and/or fail. This is the default.  Node: Subsection A-2-3, Next: Subsection A-2-4, Prev: Subsection A-2-2, Up: Section A-2 A.2.3 -w ========== `-w' Print directory information in make format as commands are executed. This is mainly useful for editors that expect make-style directory information for determining the location of errors.  Node: Subsection A-2-4, Next: Subsection A-2-5, Prev: Subsection A-2-3, Up: Section A-2 A.2.4 --progress ================== `--progress' Print a progress indicator. This option is enabled by default when the OMake's output (`stdout') is on a terminal and disabled by default (except on Windows) when the OMake's output is redirected.  Node: Subsection A-2-5, Next: Subsection A-2-6, Prev: Subsection A-2-4, Up: Section A-2 A.2.5 --print-status ====================== `--print-status' Print status lines (the `+' and `-' lines).  Node: Subsection A-2-6, Next: Subsection A-2-7, Prev: Subsection A-2-5, Up: Section A-2 A.2.6 --print-exit ==================== `--print-exit' Print termination codes when commands complete.  Node: Subsection A-2-7, Next: Subsection A-2-8, Prev: Subsection A-2-6, Up: Section A-2 A.2.7 --verbose ================= `--verbose' Make OMake very verbose. This option is equivalent to `--no-S --print-status --print-exit VERBOSE=true'  Node: Subsection A-2-8, Next: Subsection A-2-9, Prev: Subsection A-2-7, Up: Section A-2 A.2.8 --output-normal ======================= `--output-normal' As rule commands are executed, relay their output to the OMake output right away. This is enabled by default, unless `--output-postpone' or `--output-only-errors' is enabled.  Node: Subsection A-2-9, Next: Subsection A-2-10, Prev: Subsection A-2-8, Up: Section A-2 A.2.9 --output-postpone ========================= `--output-postpone' When a rule finishes, print the output as a single block. This is useful in combination `-j' option (see Section A.3.12*Note Subsection A-3-12::), where the output of multiple subprocesses can be garbled. The diversion is printed as a single coherent unit. Note that enabling `--output-postpone' will by default disable the `--output-normal' option. This might be problematic if you have a command that decides to ask for interactive input. If the `--output-postpone' is enabled, but the `--output-normal' is not, the prompt of such a command will not be visible and it may be hard to figure out why the build appears "stuck". You might also consider using the `--progress' flag (see Section A.2.4*Note Subsection A-2-4::) so that you can see when the build is active.  Node: Subsection A-2-10, Next: Subsection A-2-11, Prev: Subsection A-2-9, Up: Section A-2 A.2.10 --output-only-errors ============================= `--output-only-errors' Similar to `--output-postpone', except that the postponed output from commands that were successful will be discarded. This can be useful in reducing unwanted output so that you can concentrate on any errors.  Node: Subsection A-2-11, Next: Subsection A-2-12, Prev: Subsection A-2-10, Up: Section A-2 A.2.11 --output-at-end ======================== `--output-at-end' If any rules/commands fail, re-print the output of the failed commands when OMake finishes the build. This is especially useful when any of the `-k', `-p', or `-P' options are enabled. This option is off by default. However, when `-k' is enabled --- either explicitly or via one of the `-p'/`-P' options --- `--output-at-end' will be enabled by default.  Node: Subsection A-2-12, Next: Section A-3, Prev: Subsection A-2-11, Up: Section A-2 A.2.12 -o =========== `-o [01jwWpPxXsS]' For brevity, the `-o' option is also provided to duplicate the above output options. The `-o' option takes a argument consisting of a sequence of characters. The characters are read from left-to-right; each specifies a set of output options. In general, an uppercase character turns the option on; a lowercase character turns the option off. 0 Equivalent to `-s --output-only-errors --no-progress' This option specifies that `omake' should be as quiet as possible. If any errors occur during the build, the output is delayed until the build terminates. Output from successful commands is discarded. 1 Equivalent to `-S --progress --output-only-errors' This is a slightly more relaxed version of "quiet" output. The output from successful commands is discarded. The output from failed commands is printed immediately after the command complete. The output from failed commands is displayed twice: once immediately after the command completes, and again when the build completes. A progress bar is displayed so that you know when the build is active. Include the ``p'' option if you want to turn off the progress bar (for example `omake -o 1p'). 2 Equivalent to `--progress --output-postpone' The is even more relaxed, output from successful commands is printed. This is often useful for deinterleaving the output when using `-j'. W Equivalent to `-w' w Equivalent to `--no-w' P Equivalent to `--progress' p Equivalent to `--no--progress' X Equivalent to `--print-exit' x Equivalent to `--no-print-exit' S Equivalent to `-S' s Equivalent to `--no-S'  Node: Section A-3, Next: Subsection A-3-1, Prev: Section A-2, Up: Appendix A A.3 Build options *=*=*=*=*=*=*=*=*=* * Menu: * Subsection A-3-1:: -k * Subsection A-3-2:: -n * Subsection A-3-3:: -p * Subsection A-3-4:: -P * Subsection A-3-5:: -R * Subsection A-3-6:: -t * Subsection A-3-7:: -U * Subsection A-3-8:: --depend * Subsection A-3-9:: --configure * Subsection A-3-10:: --force-dotomake * Subsection A-3-11:: --dotomake * Subsection A-3-12:: -j * Subsection A-3-13:: --print-dependencies * Subsection A-3-14:: --show-dependencies * Subsection A-3-15:: --all-dependencies * Subsection A-3-16:: --verbose-dependencies * Subsection A-3-17:: --install * Subsection A-3-18:: --install-all * Subsection A-3-19:: --install-force * Subsection A-3-20:: --absname * Subsection A-3-21:: variable definition  Node: Subsection A-3-1, Next: Subsection A-3-2, Prev: Section A-3, Up: Section A-3 A.3.1 -k ========== `-k' Do not abort when a build command fails; continue to build as much of the project as possible. This option is implied by both `-p' and `-P' options. In turn, this option would imply the `--output-at-end' option.  Node: Subsection A-3-2, Next: Subsection A-3-3, Prev: Subsection A-3-1, Up: Section A-3 A.3.2 -n ========== `-n' This can be used to see what would happen if the project were to be built.  Node: Subsection A-3-3, Next: Subsection A-3-4, Prev: Subsection A-3-2, Up: Section A-3 A.3.3 -p ========== `-p' Watch the filesystem for changes, and continue the build until it succeeds. If this option is specified, omake will restart the build whenever source files are modified. Implies -k.  Node: Subsection A-3-4, Next: Subsection A-3-5, Prev: Subsection A-3-3, Up: Section A-3 A.3.4 -P ========== `-P' Watch the filesystem for changes forever. If this option is specified, omake will restart the build whenever source files are modified. Implies -k.  Node: Subsection A-3-5, Next: Subsection A-3-6, Prev: Subsection A-3-4, Up: Section A-3 A.3.5 -R ========== `-R' Ignore the current directory and build the project from its root directory. When omake is run in a subdirectory of a project and no explicit targets are given on the command line, it would normally only build files within the current directory and its subdirectories (more precisely, it builds all the `.DEFAULT' targets in the current directory and its subdirectories). If the -R option is specified, the build is performed as if omake were run in the project root. In other words, with the `-R' option, all the relative targets specified on the command line will be taken relative to the project root (instead of relative to the current directory). When no targets are given on the command line, all the `.DEFAULT' targets in the project will be built (regardless of the current directory).  Node: Subsection A-3-6, Next: Subsection A-3-7, Prev: Subsection A-3-5, Up: Section A-3 A.3.6 -t ========== `-t' Update the omake database to force the project to be considered up-to-date.  Node: Subsection A-3-7, Next: Subsection A-3-8, Prev: Subsection A-3-6, Up: Section A-3 A.3.7 -U ========== `-U' Do not trust cached build information. This will force the entire project to be rebuilt.  Node: Subsection A-3-8, Next: Subsection A-3-9, Prev: Subsection A-3-7, Up: Section A-3 A.3.8 --depend ================ `--depend' Do not trust cached dependency information. This will force files to be rescanned for dependency information.  Node: Subsection A-3-9, Next: Subsection A-3-10, Prev: Subsection A-3-8, Up: Section A-3 A.3.9 --configure =================== `--configure' Re-run `static.' sections of the included omake files, instead of trusting the cached results.  Node: Subsection A-3-10, Next: Subsection A-3-11, Prev: Subsection A-3-9, Up: Section A-3 A.3.10 --force-dotomake ========================= `--force-dotomake' Always use the `$HOME/.omake' for the `.omc' cache files.  Node: Subsection A-3-11, Next: Subsection A-3-12, Prev: Subsection A-3-10, Up: Section A-3 A.3.11 --dotomake =================== `--dotomake ' Use the specified directory instead of the `$HOME/.omake' for the placement of the `.omc' cache files.  Node: Subsection A-3-12, Next: Subsection A-3-13, Prev: Subsection A-3-11, Up: Section A-3 A.3.12 -j =========== `-j ' Run multiple build commands in parallel. The count specifies a bound on the number of commands to run simultaneously. In addition, the count may specify servers for remote execution of commands in the form `server=count'. For example, the option `-j 2:small.host.org=1:large.host.org=4' would specify that up to 2 jobs can be executed locally, 1 on the server `small.host.org' and 4 on `large.host.org'. Each remote server must use the same filesystem location for the project. Remote execution is currently an experimental feature. Remote filesystems like NFS do not provide adequate file consistency for this to work.  Node: Subsection A-3-13, Next: Subsection A-3-14, Prev: Subsection A-3-12, Up: Section A-3 A.3.13 --print-dependencies ============================= `--print-dependencies' Print dependency information for the targets on the command line.  Node: Subsection A-3-14, Next: Subsection A-3-15, Prev: Subsection A-3-13, Up: Section A-3 A.3.14 --show-dependencies ============================ `--show-dependencies ' Print dependency information if the `target' is built.  Node: Subsection A-3-15, Next: Subsection A-3-16, Prev: Subsection A-3-14, Up: Section A-3 A.3.15 --all-dependencies =========================== `--all-dependencies' If either of the options --print-dependencies or --show-dependencies is in effect, print transitive dependencies. That is, print all dependencies recursively. If neither option --print-dependencies, --show-dependencies is specified, this option has no effect.  Node: Subsection A-3-16, Next: Subsection A-3-17, Prev: Subsection A-3-15, Up: Section A-3 A.3.16 --verbose-dependencies =============================== `--verbose-dependencies' If either of the options --print-dependencies or --show-dependencies is in effect, also print listings for each dependency. The output is very verbose, consider redirecting to a file. If neither option --print-dependencies, --show-dependencies is specified, this option has no effect.  Node: Subsection A-3-17, Next: Subsection A-3-18, Prev: Subsection A-3-16, Up: Section A-3 A.3.17 --install ================== `--install' Install default files OMakefile and OMakeroot into the current directory. You would typically do this to start a project in the current directory.  Node: Subsection A-3-18, Next: Subsection A-3-19, Prev: Subsection A-3-17, Up: Section A-3 A.3.18 --install-all ====================== `--install-all' In addition to installing files OMakefile and OMakeroot, install default OMakefiles into each subdirectory of the current directory. cvs(1) rules are used for filtering the subdirectory list. For example, OMakefiles are not copied into directories called `CVS', `RCCS', etc.  Node: Subsection A-3-19, Next: Subsection A-3-20, Prev: Subsection A-3-18, Up: Section A-3 A.3.19 --install-force ======================== `--install-force' Normally, omake will prompt before it overwrites any existing OMakefile. If this option is given, all files are forcibly overwritten without prompting.  Node: Subsection A-3-20, Next: Subsection A-3-21, Prev: Subsection A-3-19, Up: Section A-3 A.3.20 --absname ================== `--absname' Filenames should expand to absolute pathnames. N.B. This is an experimental option. It may become deprecated.  Node: Subsection A-3-21, Next: Section A-4, Prev: Subsection A-3-20, Up: Section A-3 A.3.21 variable definition ============================ `name=[value]' omake variables can also be defined on the command line in the form `name=value'. For example, the `CFLAGS' variable might be defined on the command line with the argument `CFLAGS="-Wall -g"'.  Node: Section A-4, Next: Section A-5, Prev: Section A-3, Up: Appendix A A.4 Additional options *=*=*=*=*=*=*=*=*=*=*=*= In addition, omake supports a number of debugging flags on the command line. Run `omake --help' to get a summary of these flags.  Node: Section A-5, Next: Subsection A-5-1, Prev: Section A-4, Up: Appendix A A.5 Environment variables *=*=*=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection A-5-1:: OMAKEFLAGS * Subsection A-5-2:: OMAKELIB  Node: Subsection A-5-1, Next: Subsection A-5-2, Prev: Section A-5, Up: Section A-5 A.5.1 OMAKEFLAGS ================== If defines, the `OMAKEFLAGS' should specify a set of options exactly as they are specified on the command line.  Node: Subsection A-5-2, Next: Section A-6, Prev: Subsection A-5-1, Up: Section A-5 A.5.2 OMAKELIB ================ If defined, the `OMAKELIB' environment variable should refer to the installed location of the OMake standard library. This is the directory that contains `Pervasives.om' etc. On a Unix system, this is often `/usr/lib/omake' or `/usr/local/lib/omake', and on Win32 systems it is often `c:\Program Files\OMake\lib'. If not defined, `omake' uses the default configured location. You should normally leave this unset.  Node: Section A-6, Next: Subsection A-6-1, Prev: Section A-5, Up: Appendix A A.6 Functions *=*=*=*=*=*=*=* * Menu: * Subsection A-6-1:: OMakeFlags  Node: Subsection A-6-1, Next: Section A-7, Prev: Section A-6, Up: Section A-6 A.6.1 OMakeFlags ================== The `OMakeFlags' function can be used within an `OMakefile' to modify the set of options. The options should be specified exactly as they are on the command line. For example, if you want some specific project to be silent and display a progress bar, you can add the following line to your `OMakefile'. << OMakeFlags(-S --progress) >> For options where it makes sense, the options are scoped like variables. For example, if you want OMake to be silent for a single rule (instead of for the entire project), you can use scoping the restrict the range of the option. << section # Do not display command output when foo is constructed OMakeFlags(-S) foo: fee echo "This is a generated file" > foo cat fee >> foo chmod 555 foo >>  Node: Section A-7, Next: Section A-8, Prev: Section A-6, Up: Appendix A A.7 Option processing *=*=*=*=*=*=*=*=*=*=*=* When `omake' is invoked, the options are processed in the following order. 1. All options specified by the `OMAKEFLAGS' environment variable are defined globally. 2. All options from the command line are defined globally. 3. Any individual calls the the `OMakeFlags' function modify the options locally.  Node: Section A-8, Next: Appendix B, Prev: Section A-7, Up: Appendix A A.8 .omakerc *=*=*=*=*=*=*= If the `$(HOME)/.omakerc' exists, it is read before any of the `OMakefiles' in your project. The `.omakerc' file is frequently used for user-specific customization. For example, instead of defining the `OMAKEFLAGS' environment variable, you could add a line to your `.omakerc'. << $(HOME)/.omakerc: # My private options OMakeFlags(-S --progress) >>  Node: Appendix B, Next: Section B-1, Prev: Appendix A, Up: Top Appendix B OMake grammar **************************** * Menu: * Section B-1:: OMake lexical conventions * Section B-2:: The OMake grammar * Section B-3:: Dollar modifiers  Node: Section B-1, Next: Subsection B-1-1, Prev: Appendix B, Up: Appendix B B.1 OMake lexical conventions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* The OMake language is based on the language for GNU/BSD make, where there are few lexical conventions. Strictly speaking, there are no keywords, and few special symbols. * Menu: * Subsection B-1-1:: Comments * Subsection B-1-2:: Special characters * Subsection B-1-3:: Identifiers * Subsection B-1-4:: Command identifiers * Subsection B-1-5:: Variable references * Subsection B-1-6:: String constants omake-0.9.8.5/doc/info/omake-doc.info-70000664000152300015230000014330010655737107015527 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Section 11-7, Next: Section 11-8, Prev: Section 11-6, Up: Chapter 11 11.7 Grouping *=*=*=*=*=*=*=* Parenthesis are used for grouping in a pipeline or conditional command. In the following expression, the `test' function is used to test whether the `foo.exe' file is executable. If it is, the `foo.exe' file is executed. If the file is not executable (or if the `foo.exe' command fails), the message `"foo.exe is not executable"' is printed. << # Run foo.exe, or print an error message (test -x foo.exe && foo.exe) || echo "foo.exe is not executable" >>  Node: Section 11-8, Next: Section 11-9, Prev: Section 11-7, Up: Chapter 11 11.8 What is a shell command? *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Syntactially, shell commands are any line that is not one of the following: - A variable definition of the form `VAR=string' - A function call `f(...)' or method call `o.f(...)' - A rule definition containing a colon `string: ...' - A special command, including the following: - `if ...' - `switch ...' - `match ...' - `section ...' - `return ...' Commands may also be builtin (aliases). See the documentation for the 'Shell' object for more information.  Node: Section 11-9, Next: Subsection 11-9-1, Prev: Section 11-8, Up: Chapter 11 11.9 Basic builtin functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*= * Menu: * Subsection 11-9-1:: echo * Subsection 11-9-2:: cd  Node: Subsection 11-9-1, Next: Subsection 11-9-2, Prev: Section 11-9, Up: Section 11-9 11.9.1 echo ============= The `echo' function prints a string. <<$(echo ) echo >>  Node: Subsection 11-9-2, Next: Section 11-10, Prev: Subsection 11-9-1, Up: Section 11-9 11.9.2 cd =========== The `cd' function changes the current directory. << cd(dir) dir : Dir >> The `cd' function also supports a 2-argument form: << $(cd dir, e) dir : Dir e : expression >> In the two-argument form, expression `e' is evaluated in the directory `dir'. The current directory is not changed otherwise. The behavior of the `cd' function can be changed with the `CDPATH' variable, which specifies a search path for directories. This is normally useful only in the osh command interpreter. << CDPATH : Dir Sequence >> For example, the following will change directory to the first directory `./foo', `~/dir1/foo', `~/dir2/foo'. << CDPATH[] = . $(HOME)/dir1 $(HOME)/dir2 cd foo >>  Node: Section 11-10, Next: Subsection 11-10-1, Prev: Section 11-9, Up: Chapter 11 11.10 Job control builtin functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection 11-10-1:: jobs * Subsection 11-10-2:: bg * Subsection 11-10-3:: fg * Subsection 11-10-4:: stop * Subsection 11-10-5:: wait * Subsection 11-10-6:: kill  Node: Subsection 11-10-1, Next: Subsection 11-10-2, Prev: Section 11-10, Up: Section 11-10 11.10.1 jobs ============== The `jobs' function prints a list of jobs. `jobs'  Node: Subsection 11-10-2, Next: Subsection 11-10-3, Prev: Subsection 11-10-1, Up: Section 11-10 11.10.2 bg ============ The `bg' function places a job in the background. `bg '  Node: Subsection 11-10-3, Next: Subsection 11-10-4, Prev: Subsection 11-10-2, Up: Section 11-10 11.10.3 fg ============ The `fg' function brings a job to the foreground. `fg '  Node: Subsection 11-10-4, Next: Subsection 11-10-5, Prev: Subsection 11-10-3, Up: Section 11-10 11.10.4 stop ============== The `stop' function suspends a job. `stop '  Node: Subsection 11-10-5, Next: Subsection 11-10-6, Prev: Subsection 11-10-4, Up: Section 11-10 11.10.5 wait ============== The `wait' function waits for a job to finish. If no process identifiers are given, the shell waits for all jobs to complete. `wait '  Node: Subsection 11-10-6, Next: Section 11-11, Prev: Subsection 11-10-5, Up: Section 11-10 11.10.6 kill ============== The `kill' function signals a job. `kill [signal] '  Node: Section 11-11, Next: Subsection 11-11-1, Prev: Section 11-10, Up: Chapter 11 11.11 Command history *=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection 11-11-1:: history  Node: Subsection 11-11-1, Next: Chapter 12, Prev: Section 11-11, Up: Section 11-11 11.11.1 history ================= << $(history-index) : Int $(history) : String Sequence history-file : File history-length : Int >> The history variables manage the command-line history in osh. They have no effect in omake. The `history-index' variable is the current index into the command-line history. The `history' variable is the current command-line history. The `history-file' variable can be redefined if you want the command-line history to be saved. The default value is `~/.omake/osh_history'. The `history-length' variable can be redefined to specify the maximum number of lines in the history that you want saved. The default value is `100'.  Node: Chapter 12, Next: Section 12-1, Prev: Section 11-11, Up: Top Chapter 12 The standard objects *********************************** `Pervasives' defines the objects that are defined in all programs. The following objects are defined. * Menu: * Section 12-1:: Pervasives objects  Node: Section 12-1, Next: Subsection 12-1-1, Prev: Chapter 12, Up: Chapter 12 12.1 Pervasives objects *=*=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection 12-1-1:: Object * Subsection 12-1-2:: Map * Subsection 12-1-3:: Number * Subsection 12-1-4:: Int * Subsection 12-1-5:: Float * Subsection 12-1-6:: Sequence * Subsection 12-1-7:: Array * Subsection 12-1-8:: String * Subsection 12-1-9:: Fun * Subsection 12-1-10:: Rule * Subsection 12-1-11:: Target * Subsection 12-1-12:: Node * Subsection 12-1-13:: File * Subsection 12-1-14:: Dir * Subsection 12-1-15:: Channel * Subsection 12-1-16:: InChannel * Subsection 12-1-17:: OutChannel * Subsection 12-1-18:: Location * Subsection 12-1-19:: Exception * Subsection 12-1-20:: RuntimeException * Subsection 12-1-21:: UnbuildableException * Subsection 12-1-22:: Shell  Node: Subsection 12-1-1, Next: Subsection 12-1-2, Prev: Section 12-1, Up: Section 12-1 12.1.1 Object =============== Parent objects: none. The `Object' object is the root object. Every class is a subclass of `Object'. It provides the following fields: - `$(o.object-length)': the number of fields and methods in the object. - `$(o.object-mem )': returns `true' iff the `' is a field or method of the object. - `$(o.object-add , )': adds the field to the object, returning a new object. - `$(o.object-find )': fetches the field or method from the object; it is equivalent to `$(o.)', but the variable can be non-constant. - `$(o.object-map )': maps a function over the object. The function should take two arguments; the first is a field name, the second is the value of that field. The result is a new object constructed from the values returned by the function. - `o.object-foreach': the `object-foreach' form is equivalent to `object-map', but with altered syntax. << o.object-foreach(, ) >> For example, the following function prints all the fields of an object `o'. << PrintObject(o) = o.object-foreach(v, x) println($(v) = $(x)) >> The `export' form is valid in a `object-foreach' body. The following function collects just the field names of an object. << FieldNames(o) = names[] = o.object-foreach(v, x) names[] += $(v) export return $(names) >>  Node: Subsection 12-1-2, Next: Subsection 12-1-3, Prev: Subsection 12-1-1, Up: Section 12-1 12.1.2 Map ============ Parent objects: `Object'. A `Map' object is a dictionary from values to values. The `' values are restricted to simple values: integers, floating-point numbers, strings, files, directories, and arrays of simple values. The Map object provides the following methods. - `$(o.length)': the number of items in the map. - `$(o.mem )': returns `true' iff the `' is defined in the map. - `$(o.add , )': adds the field to the map, returning a new map. - `$(o.find )': fetches the field from the map. - `$(o.keys)': fetches an array of all the keys in the map, in alphabetical order. - `$(o.values)': fetches an array of all the values in the map, in the alphabetical order of the corresponding keys. - `$(o.map )': maps a function over the map. The function should take two arguments; the first is a field name, the second is the value of that field. The result is a new object constructed from the values returned by the function. - `o.foreach': the `foreach' form is equivalent to `map', but with altered syntax. << o.foreach(, ) >> For example, the following function prints all the fields of an object `o'. << PrintObject(o) = o.foreach(v, x) println($(v) = $(x)) >> The `export' form is valid in a `foreach' body. The following function collects just the field names of the map. << FieldNames(o) = names = o.foreach(v, x) names += $(v) export return $(names) >> There is also simpler syntax when the key is a string. The table can be defined using definitions with the form `$|key|' (the number of pipe symbols `|' is allowed to vary). << $|key 1| = value1 $||key1|key2|| = value2 # The key is key1|key2 X = $|key 1| # Define X to be the value of field $|key 1| >> The usual modifiers are also allowed. The expression `$`|key|' represents lazy evaluation of the key, and `$,|key|' is normal evaluation.  Node: Subsection 12-1-3, Next: Subsection 12-1-4, Prev: Subsection 12-1-2, Up: Section 12-1 12.1.3 Number =============== Parent objects: `Object'. The `Number' object is the parent object for integers and floating-point numbers.  Node: Subsection 12-1-4, Next: Subsection 12-1-5, Prev: Subsection 12-1-3, Up: Section 12-1 12.1.4 Int ============ Parent objects: `Number'. The `Int' object represents integer values.  Node: Subsection 12-1-5, Next: Subsection 12-1-6, Prev: Subsection 12-1-4, Up: Section 12-1 12.1.5 Float ============== Parent objects: `Number'. The `Float' object represents floating-point numbers.  Node: Subsection 12-1-6, Next: Subsection 12-1-7, Prev: Subsection 12-1-5, Up: Section 12-1 12.1.6 Sequence ================= Parent objects: `Object'. The `Sequence' object represents a generic object containing sequential elements. It provides the following methods. - `$(s.length)': the number of elements in the sequence. - `$(s.map )': maps a function over the fields in the sequence. The function should take one argument. The result is a new sequence constructed from the values returned by the function. - `s.foreach': the `foreach' form is equivalent to `map', but with altered syntax. << s.foreach() >> For example, the following function prints all the elements of the sequence. << PrintSequence(s) = s.foreach(x) println(Elem = $(x)) >> The `export' form is valid in a `foreach' body. The following function counts the number of zeros in the sequence. << Zeros(s) = count = $(int 0) s.foreach(v) if $(equal $(v), 0) count = $(add $(count), 1) export export return $(count) >> - `$(s.forall )': tests whether each element of the sequence satifies a predicate. - `$(s.exists )': tests whether the sequence contains an element that satisfies a predicate. - `$(s.sort )': sorts a sequence. The `' is a comparison function. It takes two elements `(x, y)' of the sequence, compares them, and returns a negative number if x < y, a positive number if x > y, and zero if the two elements are equal. << osh> items = $(int 0 3 -2) osh> items.forall(x => $(gt $x, 0)) - : bool = false osh> items.exists(x => $(gt $x, 0)) - : bool = true osh> items.sort($(compare)) - : Array = -2 3 0 >>  Node: Subsection 12-1-7, Next: Subsection 12-1-8, Prev: Subsection 12-1-6, Up: Section 12-1 12.1.7 Array ============== Parent objects: `Sequence'. The `Array' is a random-access sequence. It provides the following additional methods. - `$(s.nth )': returns element `i' of the sequence. - `$(s.rev )': returns the reversed sequence.  Node: Subsection 12-1-8, Next: Subsection 12-1-9, Prev: Subsection 12-1-7, Up: Section 12-1 12.1.8 String =============== Parent objects: `Array'.  Node: Subsection 12-1-9, Next: Subsection 12-1-10, Prev: Subsection 12-1-8, Up: Section 12-1 12.1.9 Fun ============ Parent objects: `Object'. The `Fun' object provides the following methods. - `$(f.arity)': the arity if the function.  Node: Subsection 12-1-10, Next: Subsection 12-1-11, Prev: Subsection 12-1-9, Up: Section 12-1 12.1.10 Rule ============== Parent objects: `Object'. The `Rule' object represents a build rule. It does not currently have any methods.  Node: Subsection 12-1-11, Next: Subsection 12-1-12, Prev: Subsection 12-1-10, Up: Section 12-1 12.1.11 Target ================ Parent object: `Object'. The `Target' object contains information collected for a specific target file. - `target': the target file. - `effects': the files that may be modified by a side-effect when this target is built. - `scanner_deps': static dependencies that must be built before this target can be scanned. - `static-deps': statically-defined build dependencies of this target. - `build-deps': all the build dependencies for the target, including static and scanned dependencies. - `build-values': all the value dependencies associated with the build. - `build-commands': the commands to build the target. - `output-file': if output was diverted to a file, with one of the `--output-*' options A*Note Appendix A::, this field names that file. Otherwise it is `false'. The object supports the following methods. - `find(file)': returns a Target object for the given file. Raises a `RuntimeException' if the specified target is not part of the project. - `find-optional(file)': returns a `Target' object for the given file, or `false' if the file is not part of the project. NOTE: the information for a target is constructed dynamically, so it is possible that the `Target' object for a node will contain different values in different contexts. The easiest way to make sure that the `Target' information is complete is to compute it within a rule body, where the rule depends on the target file, or the dependencies of the target file.  Node: Subsection 12-1-12, Next: Subsection 12-1-13, Prev: Subsection 12-1-11, Up: Section 12-1 12.1.12 Node ============== Parent objects: `Object'. The `Node' object is the parent object for files and directories. It supports the following operations. - `$(node.stat)': returns a `stat' object for the file. If the file is a symbolic link, the `stat' information is for the destination of the link, not the link itself. - `$(node.lstat)': returns a `stat' object for the file or symbolic link. - `$(node.unlink)': removes the file. - `$(node.rename )': renames the file. - `$(node.link )': creates a hard link `' to this file. - `$(node.symlink )': create a symbolic link `' to this file. - `$(node.chmod )': change the permission of this file. - `$(node.chown , )': change the owner and group id of this file.  Node: Subsection 12-1-13, Next: Subsection 12-1-14, Prev: Subsection 12-1-12, Up: Section 12-1 12.1.13 File ============== Parent objects: `Node'. The file object represents the name of a file.  Node: Subsection 12-1-14, Next: Subsection 12-1-15, Prev: Subsection 12-1-13, Up: Section 12-1 12.1.14 Dir ============= Parent objects: `Node'. The `Dir' object represents the name of a directory.  Node: Subsection 12-1-15, Next: Subsection 12-1-16, Prev: Subsection 12-1-14, Up: Section 12-1 12.1.15 Channel ================= Parent objects: `Object'. A `Channel' is a generic IO channel. It provides the following methods. - `$(o.close)': close the channel. - `$(o.name)': returns the file name associated with the channel.  Node: Subsection 12-1-16, Next: Subsection 12-1-17, Prev: Subsection 12-1-15, Up: Section 12-1 12.1.16 InChannel =================== Parent objects: `Channel'. A `InChannel' is an input channel. The variable `stdin' is the standard input channel. It provides the following methods. - `$(InChannel.fopen )': open a new input channel. - `$(InChannel.of-string )': open a new input channel, using a string as input. - `$(o.read )': reads the given number of characters from the channel - `$(o.readln)': reads a line from the channel  Node: Subsection 12-1-17, Next: Subsection 12-1-18, Prev: Subsection 12-1-16, Up: Section 12-1 12.1.17 OutChannel ==================== Parent object: `Channel'. A `OutChannel' is an output channel. The variables `stdout' and `stderr' are the standard output and error channels. It provides the following methods. - `$(OutChannel.fopen )': open a new output channel. - `$(OutChannel.string)': open a new output channel, writing to a string. - `$(OutChannel.to-string)': get the current string of output, for an output channel created as `OutChannel.open-string'. - `$(OutChannel.append )': opens a new output channel, appending to the file. - `$(c.flush)': flush the output channel. - `$(c.print )': print a string to the channel. - `$(c.println )': print a string to the channel, followed by a line terminator.  Node: Subsection 12-1-18, Next: Subsection 12-1-19, Prev: Subsection 12-1-17, Up: Section 12-1 12.1.18 Location ================== Parent objects: `Location'. The `Location' object represents a location in a file.  Node: Subsection 12-1-19, Next: Subsection 12-1-20, Prev: Subsection 12-1-18, Up: Section 12-1 12.1.19 Exception =================== Parent objects: `Object'. The `Exception' object is used as the base object for exceptions. It has no fields.  Node: Subsection 12-1-20, Next: Subsection 12-1-21, Prev: Subsection 12-1-19, Up: Section 12-1 12.1.20 RuntimeException ========================== Parent objects: `Exception'. The `RuntimeException' object represents an exception from the runtime system. It has the following fields. - `position': a string representing the location where the exception was raised. - `message': a string containing the exception message.  Node: Subsection 12-1-21, Next: Subsection 12-1-22, Prev: Subsection 12-1-20, Up: Section 12-1 12.1.21 UnbuildableException ============================== Parent objects: `Exception'. The `UnbuildableException' object should be used to signal that a target is not buildable. It will be caught by functions such as 'target-exists'. This exception has the following fields: - `target': indicates which target is not buildable. - `message': a string containing the exception message.  Node: Subsection 12-1-22, Next: Chapter 13, Prev: Subsection 12-1-21, Up: Section 12-1 12.1.22 Shell =============== Parent objects: `Object'. The `Shell' object contains the collection of builtin functions available as shell commands. You can define aliases by extending this object with additional methods. All methods in this class are called with one argument: a single array containing an argument list. - `echo' The `echo' function prints its arguments to the standard output channel. - `jobs' The `jobs' method prints the status of currently running commands. - `cd' The `cd' function changes the current directory. Note that the current directory follows the usual scoping rules. For example, the following program lists the files in the `foo' directory, but the current directory is not changed. << section echo Listing files in the foo directory... cd foo ls echo Listing files in the current directory... ls >> - `bg' The `bg' method places a job in the background. The job is resumed if it has been suspended. - `fg' The `fg' method brings a job to the foreground. The job is resumed if it has been suspended. - `stop' The `stop' method suspends a running job. - `wait' The `wait' function waits for a running job to terminate. It is not possible to wait for a suspended job. The job is not brought to the foreground. If the `wait' is interrupted, the job continues to run in the background. - `kill' The `kill' function signal a job. `kill [signal] '. The signals are either numeric, or symbolic. The symbolic signals are named as follows. ABRT, ALRM, HUP, ILL, KILL, QUIT, SEGV, TERM, USR1, USR2, CHLD, STOP, TSTP, TTIN, TTOU, VTALRM, PROF. - `exit' The `exit' function terminates the current session. - `which', `where' See the documentation for the corresponding functions. - `rehash' Reset the search path. - `ln-or-cp' src dst Links or copies src to dst, overwriting dst. Namely, `ln-or-cp' would first delete the dst file (unless it is a directory), if it exists. Next it would try to create a symbolic link dst poiting to src (it will make all the necessary adjustmnents of relative paths). If symbolic link can not be created (e.g. the OS or the filesystem does not support symbolic links), it will try to create a hard link. If that fails too, it will try to forcibly copy src to dst. - `history' Print the current command-line history. - `digest' Print the digests of the given files. - Win32 functions. Win32 doesn't provide very many programs for scripting, except for the functions that are builtin to the DOS `cmd.exe'. The following functions are defined on Win32 and only on Win32. On other systems, it is expected that these programs already exist. - `grep' << grep [-q] [-n] pattern files... >> The `grep' function calls the omake `grep' function. - Internal versions of standard system commands. By default, omake uses internal versions of the following commands: `cp', `mv', `cat', `rm', `mkdir', `chmod', `test', `find'. If you really want to use the standard system versions of these commands, set the `USE_SYSTEM_COMMANDS' as one of the first definitions in your `OMakeroot' file. - `pwd' << pwd >> The `pwd' alias would print the absolute path to current directory. - `mkdir' << mkdir [-m ] [-p] files >> The `mkdir' function is used to create directories. The -verb+-m+ option can be used to specify the permission mode of the created directory. If the `-p' option is specified, the full path is created. - `cp' - `mv' << cp [-f] [-i] [-v] src dst cp [-f] [-i] [-v] files dst mv [-f] [-i] [-v] src dst mv [-f] [-i] [-v] files dst >> The `cp' function copies a `src' file to a `dst' file, overwriting it if it already exists. If more than one source file is specified, the final file must be a directory, and the source files are copied into the directory. -f Copy files forcibly, do not prompt. -i Prompt before removing destination files. -v Explain what is happening. - `rm' << rm [-f] [-i] [-v] [-r] files rmdir [-f] [-i] [-v] [-r] dirs >> The `rm' function removes a set of files. No warnings are issued if the files do not exist, or if they cannot be removed. Options: -f Forcibly remove files, do not prompt. -i Prompt before removal. -v Explain what is happening. -r Remove contents of directories recursively. - `chmod' << chmod [-r] [-v] [-f] mode files >> The `chmod' function changes the permissions on a set of files or directories. This function does nothing on Win32. The `mode' may be specified as an octal number, or in symbolic form `[ugoa]*['-=][rwxXstugo]+. See the man page for `chmod' for details. Options: -r Change permissions of all files in a directory recursively. -v Explain what is happening. -f Continue on errors. - `cat' << cat files... >> The `cat' function prints the contents of the files to stdout - `test' `test' expression `[' expression +]+ `[ --help' `[ --version' See the documentation for the 'test' function. - `find' `find' expression See the documentation for the 'find' function.  Node: Chapter 13, Next: Section 13-1, Prev: Section 12-1, Up: Top Chapter 13 Build functions and utilities ******************************************** * Menu: * Section 13-1:: Builtin .PHONY targets * Section 13-2:: Options and versioning * Section 13-3:: Examining the dependency graph * Section 13-4:: The OMakeroot file * Section 13-5:: Building C and C++ code * Section 13-6:: Building OCaml code * Section 13-7:: Building LaTeX files  Node: Section 13-1, Next: Section 13-2, Prev: Chapter 13, Up: Chapter 13 13.1 Builtin .PHONY targets *=*=*=*=*=*=*=*=*=*=*=*=*=*=* The complete set of builtin `.PHONY' targets include the following. .PHONY Declares new phony targets (Section 8.10*Note Section 8-10::). .DEFAULT Declare the default build targets (Section 8.7*Note Section 8-7::). .SUBDIRS Include a directory as part of the project (Section 8.8*Note Section 8-8::). .SCANNER Define a dependency scanner (Section 8.8*Note Section 8-8::). .INCLUDE Include a file (Section 8.9*Note Section 8-9::). .ORDER Define a file-dependency ordering rule (Section 10.3.6*Note Subsection 10-3-6::). .BUILD_BEGIN Commands to be executed at the beginning of a build. .BUILD_SUCCESS Commands to be executed if the build is successful. .BUILD_FAILURE Commands to be executed if the build fails. The `.BUILD' targets can be used to specify commands to be executed at the beginning and end of the build. The `.BUILD_BEGIN' target is built at the beginning of a project build, and one of `.BUILD_FAILURE' or `.BUILD_SUCCESS' is executed when the build terminates. For example, the following set of rules simply print additional messages about the status of the build. << .BUILD_BEGIN: echo Build starting .BUILD_SUCCESS: echo The build was successful .BUILD_FAILURE: println($"The build failed: $(length $(find-build-targets Failed)) targets could not be built") >> Another common use is to define notifications to be performed when the build completes. For example, the following rule will create a new X terminal displaying the summary of the build (using the 'BUILD_SUMMARY' variable). << .BUILD_FAILURE: xterm -e vi $(BUILD_SUMMARY) >> If you do not wish to add these rules directly to your project (which is probably a good idea if you work with others), you can define them in your `.omakerc' (see Section A.8*Note Section A-8::). The 'find-build-targets' function is useful for obtaining a firther summary of the build. Note that when output diversions are in effect (with the `--output-*' options --- see Chapter A*Note Appendix A::), any output produced by the commands is copied to a file. The name of the file is specified by the `output-file' field of the 'Target' object. You may find this useful in defining custom build summaries.  Node: Section 13-2, Next: Subsection 13-2-1, Prev: Section 13-1, Up: Chapter 13 13.2 Options and versioning *=*=*=*=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection 13-2-1:: OMakeFlags * Subsection 13-2-2:: OMakeVersion * Subsection 13-2-3:: cmp-versions * Subsection 13-2-4:: DefineCommandVars  Node: Subsection 13-2-1, Next: Subsection 13-2-2, Prev: Section 13-2, Up: Section 13-2 13.2.1 OMakeFlags =================== << OMakeFlags(options) options : String >> The `OMakeFlags' function is used to set `omake' options from within OMakefiles. The options have exactly the same format as options on the command line. For example, the following code displays the progress bar unless the `VERBOSE' environment variable is defined. << if $(not $(defined-env VERBOSE)) OMakeFlags(-S --progress) export >>  Node: Subsection 13-2-2, Next: Subsection 13-2-3, Prev: Subsection 13-2-1, Up: Section 13-2 13.2.2 OMakeVersion ===================== << OMakeVersion(version1) OMakeVersion(version1, version2) version1, version2 : String >> The `OMakeVersion' function is used for version checking in OMakefiles. It takes one or two arguments. In the one argument form, if the omake version number is less than `', then an exception is raised. In the two argument form, the version must lie between `version1' and `version2'.  Node: Subsection 13-2-3, Next: Subsection 13-2-4, Prev: Subsection 13-2-2, Up: Section 13-2 13.2.3 cmp-versions ===================== << $(cmp-versions version1, version2) version1, version2 : String >> The `cmp-versions\' functions can be used to compare arbitrary version strings. It returns 0 when the two version strings are equal, a negative number when the first string represents an earlier version, and a positive number otherwise.  Node: Subsection 13-2-4, Next: Section 13-3, Prev: Subsection 13-2-3, Up: Section 13-2 13.2.4 DefineCommandVars ========================== << DefineCommandVars() >> The `DefineCommandVars' function redefines the variables passed on the commandline. Variables definitions are passed on the command line in the form `name=value'. This function is primarily for internal use by omake to define these variables for the first time.  Node: Section 13-3, Next: Subsection 13-3-1, Prev: Section 13-2, Up: Chapter 13 13.3 Examining the dependency graph *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection 13-3-1:: dependencies, dependencies-all, dependencies-proper * Subsection 13-3-2:: target * Subsection 13-3-3:: find-build-targets * Subsection 13-3-4:: project-directories * Subsection 13-3-5:: rule * Subsection 13-3-6:: build  Node: Subsection 13-3-1, Next: Subsection 13-3-2, Prev: Section 13-3, Up: Section 13-3 13.3.1 dependencies, dependencies-all, dependencies-proper ============================================================ << $(dependencies targets) : File Array $(dependencies-all targets) : File Array $(dependencies-proper targets) : File Array targets : File Array raises RuntimeException >> The `dependencies' function returns the set of immediate dependencies of the given targets. This function can only be used within a rule body and all the arguments to the `dependency' function must also be dependencies of this rule. This restriction ensures that all the dependencies are known when this function is executed. The `dependencies-all' function is similar, but it expands the dependencies recursively, returning all of the dependencies of a target, not just the immediate ones. The `dependencies-proper' function returns all recursive dependencies, except the dependencies that are leaf targets. A leaf target is a target that has no dependencies and no build commands; a leaf target corresponds to a source file in the current project. In all three functions, files that are not part of the current project are silently discarded. All three functions will return phony and scanner targets along with the "real" ones. One purpose of the `dependencies-proper' function is for "clean" targets. For example, one way to delete all intermediate files in a build is with a rule that uses the `dependencies-proper'. Note however, that the rule requires building the project before it can be deleted. << .PHONY: clean APP = ... # the name of the target application clean: $(APP) rm -f $(dependencies-proper $(APP)) >> Also note that the `dependencies-proper' function will return the phony and scanner targets in addition to real one. For other (possibly better) alternatives, see Section 10.3.3*Note Subsection 10-3-3:: and 'filter-proper-targets' function.  Node: Subsection 13-3-2, Next: Subsection 13-3-3, Prev: Subsection 13-3-1, Up: Section 13-3 13.3.2 target =============== << $(target targets) : Target Array targets : File Sequence raises RuntimeException >> The `target' function returns the Target object associated with each of the targets. See the `Target' object for more information.  Node: Subsection 13-3-3, Next: Subsection 13-3-4, Prev: Subsection 13-3-2, Up: Section 13-3 13.3.3 find-build-targets =========================== << $(find-build-targets tag) : Target Array tag : Succeeded | Failed >> The `find-build-targets' allow the results of the build to be examined. The `tag' must specifies which targets are to be returned; the comparison is case-insensitive. Succeeded The list of targets that were built successfully. Failed The list of targets that could not be built. These are used mainly in conjuction with the `.BUILD_SUCCESS' (Section 13.1*Note Section 13-1::) and `.BUILD_FAILURE' (Section 13.1*Note Section 13-1::) phony targets. For example, adding the following to your project `OMakefile' will print the number of targets that failed (if the build failed). << .BUILD_FAILURE: echo "Failed target count: $(length $(find-build-targets Failed))" >>  Node: Subsection 13-3-4, Next: Subsection 13-3-5, Prev: Subsection 13-3-3, Up: Section 13-3 13.3.4 project-directories ============================ << $(project-directories) : Dir Array >> The `project-directories' function returns the list of all directories that are considered to be part of the project. To get the complete directory list, this function should be called from within a rule body.  Node: Subsection 13-3-5, Next: Subsection 13-3-6, Prev: Subsection 13-3-4, Up: Section 13-3 13.3.5 rule ============= The `rule' function is called whenever a build rule is defined. It is unlikely that you will need to redefine this function, except in very exceptional cases. << rule(multiple, target, pattern, sources, options, body) : Rule multiple : String target : Sequence pattern : Sequence sources : Sequence options : Array body : Body >> The `rule' function is called when a rule is evaluated. multiple A Boolean value indicating whether the rule was defined with a double colon `::'. target The sequence of target names. pattern The sequence of patterns. This sequence will be empty for two-part rules. sources The sequence of dependencies. options An array of options. Each option is represented as a 'Map' object associating each specified option with a value. body The body expression of the rule. Consider the following rule. << target: pattern: sources :name1: option1 :name2: option2 expr1 expr2 >> This expression represents the following function call, where square brackets are used to indicate arrays, and the curly brackets represent a 'Map' object. << rule(false, target, pattern, sources, { $|:name1:| = option1; $|:name2:| = option2 } [expr1; expr2]) >>  Node: Subsection 13-3-6, Next: Section 13-4, Prev: Subsection 13-3-5, Up: Section 13-3 13.3.6 build ============== << build(targets : File Array) : bool >> Build the given targets. The value is true iff the build was successful. This function can be used only in `osh'.  Node: Section 13-4, Next: Subsection 13-4-1, Prev: Section 13-3, Up: Chapter 13 13.4 The OMakeroot file *=*=*=*=*=*=*=*=*=*=*=*=* The standard OMakeroot file defines the functions are rules for building standard projects. * Menu: * Subsection 13-4-1:: Variables * Subsection 13-4-2:: System variables  Node: Subsection 13-4-1, Next: Subsection 13-4-2, Prev: Section 13-4, Up: Section 13-4 13.4.1 Variables ================== ROOT The root directory of the current project. CWD The current working directory (the directory is set for each OMakefile in the project). EMPTY The empty string. STDROOT The name of the standard installed OMakeroot file. ABORT_ON_COMMAND_ERROR If set to true, the construction of a target should be aborted whenever one of the commands to build it fail. This defaults to true, and should normally be left that way. SCANNER_MODE This variable should be defined as one of four values (defaults to `enabled'). enabled Allow the use of default `.SCANNER' rules. Whenever a rule does not specify a `:scanner:' dependency explicitly, try to find a `.SCANNER' with the same target name. disabled Never use default `.SCANNER' rules. warning Allow the use of default `.SCANNER' rules, but print a warning whenever one is selected. error Do not allow the use of default `.SCANNER' rules. If a rule does not specify a `:scanner:' dependency, and there is a default `.SCANNER' rule, the build will terminate abnormally.  Node: Subsection 13-4-2, Next: Section 13-5, Prev: Subsection 13-4-1, Up: Section 13-4 13.4.2 System variables ========================= INSTALL The command to install a program (`install' on `Unix', `cp' on `Win32'). PATHSEP The normal path separator (`:' on `Unix', `;' on `Win32'). DIRSEP The normal directory separator (`/' on `Unix', `\' on `Win32'). EXT_OBJ File suffix for an object file (default is `.o' on `Unix', and `.obj' on `Win32'). EXT_LIB File suffix for a static library (default is `.a' on `Unix', and `.lib' on `Win32'). EXT_DLL File suffix for a shared library (default is `.so' on `Unix', and `.dll' on `Win32'). EXT_ASM File suffix for an assembly file (default is `.s' on `Unix', and `.asm' on `Win32'). EXE File suffix for executables (default is empty for `Unix', and `.exe' on `Win32' and `Cygwin').  Node: Section 13-5, Next: Subsection 13-5-1, Prev: Section 13-4, Up: Chapter 13 13.5 Building C and C++ code *=*=*=*=*=*=*=*=*=*=*=*=*=*=*= OMake provides extensive support for building C and C++ programs. In order to use the functions defined in this section, you need to make sure the line <> is present in your `OMakeroot' file. * Menu: * Subsection 13-5-1:: Autoconfiguration variables * Subsection 13-5-2:: C and C++ configuration variables * Subsection 13-5-3:: Generated C files * Subsection 13-5-4:: Building C programs and Libraries  Node: Subsection 13-5-1, Next: Subsection 13-5-2, Prev: Section 13-5, Up: Section 13-5 13.5.1 Autoconfiguration variables ==================================== These variables will get defined based on the "autoconf-style" `static.' tests executed when you run OMake for the first time. You can use them to configure your project accordingly, and you should not redefine them. You can use the `--configure' command line option (Section A.3.9*Note Subsection A-3-9::) to force re-execution of all the tests. A different set of autoconfiguration tests is performed depending on the build environment involved --- one set of tests would be performed in a `Win32' environment, and another --- in a Unix-like environment (including Linux, OS X and Cygwin). 13.5.1.1 Unix-like systems ---------------------------- GCC_FOUND A boolean flag specifying whether the `gcc' binary was found in your path. GXX_FOUND A boolean flag specifying whether the `g++' binary was found in your path. 13.5.1.2 Win32 ---------------- CL_FOUND A boolean flag specifying whether the `cl' binary was found in your path. LIB_FOUND A boolean flag specifying whether the `lib' binary was found in your path.  Node: Subsection 13-5-2, Next: Subsection 13-5-3, Prev: Subsection 13-5-1, Up: Section 13-5 13.5.2 C and C++ configuration variables ========================================== The following variables can be redefined in your project. CC The name of the C compiler (on `Unix' it defaults to `gcc' when `gcc' is present and to `cc' otherwise; on `Win32' defaults to `cl /nologo'). CXX The name of the C++ compiler (on `Unix' it defaults to `gcc' when `gcc' is present and to `c'++ otherwise; on `Win32' defaults to `cl /nologo'). CPP The name of the C preprocessor (defaults to `cpp' on `Unix', and `cl /E' on `Win32'). CFLAGS Compilation flags to pass to the C compiler (default empty on `Unix', and `/DWIN32' on `Win32'). CXXFLAGS Compilation flags to pass to the C++ compiler (default empty on `Unix', and `/DWIN32' on `Win32'). INCLUDES Additional directories that specify the search path to the C and C++ compilers (default is `.'). The directories are passed to the C and C++ compilers with the `-I' option. The include path with `-I' prefixes is defined in the `PREFIXED_INCLUDES' variable. LIBS Additional libraries needed when building a program (default is empty). CCOUT The option to use for specifying the output file in C and C++ compilers (defaults to `-o' on `Unix' and `/Fo' on `Win32'). AS The name of the assembler (defaults to `as' on `Unix', and `ml' on `Win32'). ASFLAGS Flags to pass to the assembler (default is empty on `Unix', and `/c /coff' on `Win32'). ASOUT The option string that specifies the output file for `AS' (defaults to `-o' on `Unix' and `/Fo' on `Win32'). AR The name of the program to create static libraries (defaults to `ar cq' on `Unix', and `lib' on `Win32'). LD The name of the linker (defaults to `ld' on `Unix', and `cl' on `Win32'). LDFLAGS Options to pass to the linker (default is empty). LDFLAGS_DLL Options to pass to the linker when compiling a shared library (defaults to `-shared' on `Unix' and `/DLL' on `Win32'). LDOUT The option to use for specifying the output file in C and C++ linkers (defaults to `-o' on `Unix' and `/Fe' on `Win32'). YACC The name of the `yacc' parser generator (default is `yacc' on `Unix', empty on `Win32'). LEX The name of the `lex' lexer generator (default is `lex' on `Unix', empty on `Win32').  Node: Subsection 13-5-3, Next: Subsection 13-5-4, Prev: Subsection 13-5-2, Up: Section 13-5 13.5.3 Generated C files ========================== Because the C scanners do not normally know anything about generated source files (such as generated header files), these files may need to be created before running the scanner. 13.5.3.1 CGeneratedFiles, LocalCGeneratedFiles ------------------------------------------------ \@name {function:LocalCGeneratedFiles} <> The `CGeneratedFiles' and `LocalCGeneratedFiles' functions specify files that need to be generated before any C files are scanned for dependencies. For example, if `config.h' and `inputs.h' are both generated files, specify: <> The `CGeneratedFiles' function is global --- its arguments will be generated before any C files anywhere in the project are scanned for dependencies. The `LocalCGeneratedFiles' function follows the normal scoping rules of OMake.  Node: Subsection 13-5-4, Next: Section 13-6, Prev: Subsection 13-5-3, Up: Section 13-5 13.5.4 Building C programs and Libraries ========================================== 13.5.4.1 StaticCLibrary, DynamicCLibrary ------------------------------------------ The `StaticCLibrary' builds a static library and the `DynamicCLibrary' function builds a shared library (DLL). <, ) DynamicCLibrary(, ) >> The `' does not include the library suffix, and The `' list does not include the object suffix. These are obtained from the 'EXT_LIB' ('EXT_DLL') and 'EXT_OBJ' variables. This function returns the library filename. The following command builds the library `libfoo.a' from the files `a.o b.o c.o' on `Unix', or the library `libfoo.lib' from the files `a.obj b.obj c.obj' on `Win32'. <> CDLL_IMPLIES_STATIC If the `CDLL_IMPLIES_STATIC' variable is enabled (this is default on `Win32'), all the `DynamicC' functions would assume that creating a shared library automatically created a static one. 13.5.4.2 StaticCLibraryCopy, DynamicCLibraryCopy -------------------------------------------------- \@n ame{function:DynamicCLibraryCopy} The `StaticCLibraryCopy' and `DynamicCLibraryCopy' functions copy a library to an install location. <, , ) DynamicCLibraryCopy(, , ) >> The `' is the name of a target (typically a `.PHONY' target); the `' is the installation directory, and `' is the library to be copied (without the library suffix). This function returns the filename of the library in the target directory. For example, the following code copies the library `libfoo.a' to the `/usr/lib' directory. <<.PHONY: install StaticCLibraryCopy(install, /usr/lib, libfoo) >> 13.5.4.3 StaticCLibraryInstall, DynamicCLibraryInstall -------------------------------------------------------- The `StaticCLibraryInstall' and `DynamicCLibraryInstall' functions build a library, and set the install location in one step. Return the filename of the library in the target directory. <, , , ) DynamicCLibraryInstall(, , , ) >> <> 13.5.4.4 StaticCObject, StaticCObjectCopy, StaticCObjectInstall ----------------------------------------------------------------- These functions mirror the `StaticCLibrary', `StaticCLibraryCopy', and `StaticCLibraryInstall' functions, but they build an object file (a `.o' file on `Unix', and a `.obj' file on `Win32'). 13.5.4.5 CProgram ------------------- The `CProgram' function builds a C program from a set of object files and libraries. `CProgram(, )' The `' argument specifies the name of the program to be built; the `' argument specifies the files to be linked. The function returns the filename of the executable. Additional options can be passed through the following variables. CFLAGS Flags used by the C compiler during the link step. LDFLAGS Flags to pass to the loader. LIBS Additional libraries to be linked. For example, the following code specifies that the program `foo' is to be produced by linking the files `bar.o' and `baz.o' and libraries `libfoo.a'. <
> 13.5.4.6 CProgramCopy ----------------------- The `CProgramCopy' function copies a file to an install location. `CProgramCopy(, , )' <> 13.5.4.7 CProgramInstall -------------------------- The `CProgramInstall' function specifies a program to build, and a location to install, simultaneously. `CProgramInstall(, , , )' <
> 13.5.4.8 CXXProgram, CXXProgramInstall ---------------------------------------- The `CXXProgram' and `CXXProgramInstall' functions are equivalent to their C counterparts, except that would use `$(CXX)' and `$(CXXFLAGS)' for linking instead of `$(CC)' and `$(CFLAGS)'. 13.5.4.9 StaticCXXLibrary, StaticCXXLibraryCopy, -------------------------------------------------- StaticCXXLibraryInstall, DynamicCXXLibrary, DynamicCXXLibraryCopy, ------------------------------------------------------------------ DynamicCXXLibraryInstall ------------------------ \@nam e{function:StaticCXXLibraryCopy}\@name {function:StaticCXXLibraryInstall}\@na me{function:DynamicCXXLibrary} Similarly, the six `CXXLibrary' functions the C++ equivalents of the corresponding `CLibrary' functions.  Node: Section 13-6, Next: Subsection 13-6-1, Prev: Section 13-5, Up: Chapter 13 13.6 Building OCaml code *=*=*=*=*=*=*=*=*=*=*=*=*= OMake provides extensive support for building OCaml code, including support for tools like `ocamlfind', `ocamlyacc' and `menhir'. In order to use the functions defined in this section, you need to make sure the line <> is present in your `OMakeroot' file. * Menu: * Subsection 13-6-1:: Autoconfiguration variables for OCaml compilation * Subsection 13-6-2:: Configuration variables for OCaml compilation * Subsection 13-6-3:: OCaml command flags * Subsection 13-6-4:: Library variables * Subsection 13-6-5:: Generated OCaml Files * Subsection 13-6-6:: Using the Menhir parser generator  Node: Subsection 13-6-1, Next: Subsection 13-6-2, Prev: Section 13-6, Up: Section 13-6 13.6.1 Autoconfiguration variables for OCaml compilation ========================================================== These variables will get defined based on the "autoconf-style" tests executed when you run OMake for the first time. You can use them to configure your project accordingly, and you should not redefine them. You can use the `--configure' command line option (Section A.3.9*Note Subsection A-3-9::) to force re-execution of all the tests. OCAMLOPT_EXISTS True when `ocamlopt' (or `ocamlopt.opt') is available on your machine. OCAMLFIND_EXISTS True when the ocamlfind is available on your machines. OCAMLDEP_MODULES_AVAILABLE True when a version of `ocamldep' that understands the `-modules' option is available on your machine. MENHIR_AVAILABLE True when the Menhir parser-generator is available on your machine. omake-0.9.8.5/doc/info/omake-doc.info-60000664000152300015230000014275010652152751015527 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Subsection 10-8-8, Next: Subsection 10-8-9, Prev: Subsection 10-8-7, Up: Section 10-8 10.8.8 lseek ============== << $(lseek channel, offset, whence) : Int channel : Channel offset : Int whence : String raises RuntimeException >> The `lseek' function repositions the offset of the channel `channel' according to the `whence' directive, as follows: SEEK_SET The offset is set to `offset'. SEEK_CUR The offset is set to its current position plus `offset' bytes. SEEK_END The offset is set to the size of the file plus `offset' bytes. The `lseek' function returns the new position in the file.  Node: Subsection 10-8-9, Next: Subsection 10-8-10, Prev: Subsection 10-8-8, Up: Section 10-8 10.8.9 rewind =============== << rewind(channel...) channel : Channel >> The `rewind' function set the current file position to the beginning of the file.  Node: Subsection 10-8-10, Next: Subsection 10-8-11, Prev: Subsection 10-8-9, Up: Section 10-8 10.8.10 tell ============== << $(tell channel...) : Int... channel : Channel raises RuntimeException >> The `tell' function returns the current position of the `channel'.  Node: Subsection 10-8-11, Next: Subsection 10-8-12, Prev: Subsection 10-8-10, Up: Section 10-8 10.8.11 flush =============== << $(flush channel...) channel : OutChannel >> The `flush' function can be used only on files that are open for writing. It flushes all pending data to the file.  Node: Subsection 10-8-12, Next: Subsection 10-8-13, Prev: Subsection 10-8-11, Up: Section 10-8 10.8.12 channel-name ====================== << $(channel-name channel...) : String channel : Channel >> The `channel-name' function returns the name that is associated with the channel.  Node: Subsection 10-8-13, Next: Subsection 10-8-14, Prev: Subsection 10-8-12, Up: Section 10-8 10.8.13 dup ============= << $(dup channel) : Channel channel : Channel raises RuntimeException >> The `dup' function returns a new channel referencing the same file as the argument.  Node: Subsection 10-8-14, Next: Subsection 10-8-15, Prev: Subsection 10-8-13, Up: Section 10-8 10.8.14 dup2 ============== << dup2(channel1, channel2) channel1 : Channel channel2 : Channel raises RuntimeException >> The `dup2' function causes `channel2' to refer to the same file as `channel1'.  Node: Subsection 10-8-15, Next: Subsection 10-8-16, Prev: Subsection 10-8-14, Up: Section 10-8 10.8.15 set-nonblock ====================== << set-nonblock-mode(mode, channel...) channel : Channel mode : String >> The `set-nonblock-mode' function sets the nonblocking flag on the given channel. When IO is performed on the channel, and the operation cannot be completed immediately, the operations raises a `RuntimeException'.  Node: Subsection 10-8-16, Next: Subsection 10-8-17, Prev: Subsection 10-8-15, Up: Section 10-8 10.8.16 set-close-on-exec-mode ================================ << set-close-on-exec-mode(mode, channel...) channel : Channel mode : String raises RuntimeException >> The `set-close-on-exec-mode' function sets the close-on-exec flags for the given channels. If the close-on-exec flag is set, the channel is not inherited by child processes. Otherwise it is.  Node: Subsection 10-8-17, Next: Subsection 10-8-18, Prev: Subsection 10-8-16, Up: Section 10-8 10.8.17 pipe ============== << $(pipe) : Pipe raises RuntimeException >> The `pipe' function creates a `Pipe' object, which has two fields. The `read' field is a channel that is opened for reading, and the `write' field is a channel that is opened for writing.  Node: Subsection 10-8-18, Next: Subsection 10-8-19, Prev: Subsection 10-8-17, Up: Section 10-8 10.8.18 mkfifo ================ << mkfifo(mode, node...) mode : Int node : Node >> The `mkfifo' function creates a named pipe.  Node: Subsection 10-8-19, Next: Subsection 10-8-20, Prev: Subsection 10-8-18, Up: Section 10-8 10.8.19 select ================ << $(select rfd..., wfd..., wfd..., timeout) : Select rfd : InChannel wfd : OutChannel efd : Channel timeout : float raises RuntimeException >> The `select' function polls for possible IO on a set of channels. The `rfd' are a sequence of channels for reading, `wfd' are a sequence of channels for writing, and `efd' are a sequence of channels to poll for error conditions. The `timeout' specifies the maximum amount of time to wait for events. On successful return, `select' returns a `Select' object, which has the following fields: read An array of channels available for reading. write An array of channels available for writing. error An array of channels on which an error has occurred.  Node: Subsection 10-8-20, Next: Subsection 10-8-21, Prev: Subsection 10-8-19, Up: Section 10-8 10.8.20 lockf =============== << lockf(channel, command, len) channel : Channel command : String len : Int raises RuntimeException >> The `lockf' function places a lock on a region of the channel. The region starts at the current position and extends for `len' bytes. The possible values for `command' are the following. F_ULOCK Unlock a region. F_LOCK Lock a region for writing; block if already locked. F_TLOCK Lock a region for writing; fail if already locked. F_TEST Test a region for other locks. F_RLOCK Lock a region for reading; block if already locked. F_TRLOCK Lock a region for reading; fail is already locked.  Node: Subsection 10-8-21, Next: Subsection 10-8-22, Prev: Subsection 10-8-20, Up: Section 10-8 10.8.21 InetAddr ================== The `InetAddr' object describes an Internet address. It contains the following fields. addr `String': the Internet address. port `Int': the port number.  Node: Subsection 10-8-22, Next: Subsection 10-8-23, Prev: Subsection 10-8-21, Up: Section 10-8 10.8.22 Host ============== A `Host' object contains the following fields. name `String': the name of the host. aliases `String Array': other names by which the host is known. addrtype `String': the preferred socket domain. addrs `InetAddr Array': an array of Internet addresses belonging to the host.  Node: Subsection 10-8-23, Next: Subsection 10-8-24, Prev: Subsection 10-8-22, Up: Section 10-8 10.8.23 gethostbyname ======================= << $(gethostbyname host...) : Host... host : String raises RuntimeException >> The `gethostbyname' function returns a `Host' object for the specified host. The `host' may specify a domain name or an Internet address.  Node: Subsection 10-8-24, Next: Subsection 10-8-25, Prev: Subsection 10-8-23, Up: Section 10-8 10.8.24 Protocol ================== The `Protocol' object represents a protocol entry. It has the following fields. name `String': the canonical name of the protocol. aliases `String Array': aliases for the protocol. proto `Int': the protocol number.  Node: Subsection 10-8-25, Next: Subsection 10-8-26, Prev: Subsection 10-8-24, Up: Section 10-8 10.8.25 getprotobyname ======================== << $(getprotobyname name...) : Protocol... name : Int or String raises RuntimeException >> The `getprotobyname' function returns a `Protocol' object for the specified protocol. The `name' may be a protocol name, or a protocol number.  Node: Subsection 10-8-26, Next: Subsection 10-8-27, Prev: Subsection 10-8-25, Up: Section 10-8 10.8.26 Service ================= The `Service' object represents a network service. It has the following fields. name `String': the name of the service. aliases `String Array': aliases for the service. port `Int': the port number of the service. proto `Protocol': the protocol for the service.  Node: Subsection 10-8-27, Next: Subsection 10-8-28, Prev: Subsection 10-8-26, Up: Section 10-8 10.8.27 getservbyname ======================= << $(getservbyname service...) : Service... service : String or Int raises RuntimeException >> The `getservbyname' function gets the information for a network service. The `service' may be specified as a service name or number.  Node: Subsection 10-8-28, Next: Subsection 10-8-29, Prev: Subsection 10-8-27, Up: Section 10-8 10.8.28 socket ================ << $(socket domain, type, protocol) : Channel domain : String type : String protocol : String raises RuntimeException >> The `socket' function creates an unbound socket. The possible values for the arguments are as follows. The `domain' may have the following values. PF_UNIX or unix Unix domain, available only on Unix systems. PF_INET or inet Internet domain, IPv4. PF_INET6 or inet6 Internet domain, IPv6. The `type' may have the following values. SOCK_STREAM or stream Stream socket. SOCK_DGRAM or dgram Datagram socket. SOCK_RAW or raw Raw socket. SOCK_SEQPACKET or seqpacket Sequenced packets socket The `protocol' is an `Int' or `String' that specifies a protocol in the protocols database.  Node: Subsection 10-8-29, Next: Subsection 10-8-30, Prev: Subsection 10-8-28, Up: Section 10-8 10.8.29 bind ============== << bind(socket, host, port) socket : InOutChannel host : String port : Int bind(socket, file) socket : InOutChannel file : File raise RuntimeException >> The `bind' function binds a socket to an address. The 3-argument form specifies an Internet connection, the `host' specifies a host name or IP address, and the `port' is a port number. The 2-argument form is for `Unix' sockets. The `file' specifies the filename for the address.  Node: Subsection 10-8-30, Next: Subsection 10-8-31, Prev: Subsection 10-8-29, Up: Section 10-8 10.8.30 listen ================ << listen(socket, requests) socket : InOutChannel requests : Int raises RuntimeException >> The `listen' function sets up the socket for receiving up to `requests' number of pending connection requests.  Node: Subsection 10-8-31, Next: Subsection 10-8-32, Prev: Subsection 10-8-30, Up: Section 10-8 10.8.31 accept ================ << $(accept socket) : InOutChannel socket : InOutChannel raises RuntimeException >> The `accept' function accepts a connection on a socket.  Node: Subsection 10-8-32, Next: Subsection 10-8-33, Prev: Subsection 10-8-31, Up: Section 10-8 10.8.32 connect ================= << connect(socket, addr, port) socket : InOutChannel addr : String port : int connect(socket, name) socket : InOutChannel name : File raise RuntimeException >> The `connect' function connects a socket to a remote address. The 3-argument form specifies an Internet connection. The `addr' argument is the Internet address of the remote host, specified as a domain name or IP address. The `port' argument is the port number. The 2-argument form is for Unix sockets. The `name' argument is the filename of the socket.  Node: Subsection 10-8-33, Next: Subsection 10-8-34, Prev: Subsection 10-8-32, Up: Section 10-8 10.8.33 getchar ================= << $(getc) : String $(getc file) : String file : InChannel or File raises RuntimeException >> The `getc' function returns the next character of a file. If the argument is not specified, `stdin' is used as input. If the end of file has been reached, the function returns `false'.  Node: Subsection 10-8-34, Next: Subsection 10-8-35, Prev: Subsection 10-8-33, Up: Section 10-8 10.8.34 gets ============== << $(gets) : String $(gets channel) : String channel : InChannel or File raises RuntimeException >> The `gets' function returns the next line from a file. The function returns the empty string if the end of file has been reached. The line terminator is removed.  Node: Subsection 10-8-35, Next: Section 10-9, Prev: Subsection 10-8-34, Up: Section 10-8 10.8.35 fgets =============== << $(fgets) : String $(fgets channel) : String channel : InChannel or File raises RuntimeException >> The `fgets' function returns the next line from a file that has been opened for reading with `fopen'. The function returns the empty string if the end of file has been reached. The returned string is returned as literal data. The line terminator is not removed.  Node: Section 10-9, Next: Section 10-10, Prev: Section 10-8, Up: Chapter 10 10.9 Printing functions *=*=*=*=*=*=*=*=*=*=*=*=* Output is printed with the `print' and `println' functions. The `println' function adds a terminating newline to the value being printed, the `print' function does not. << fprint(, ) print() eprint() fprintln(, ) println() eprintln() >> The `fprint' functions print to a file that has been previously opened with `fopen'. The `print' functions print to the standard output channel, and the `eprint' functions print to the standard error channel.  Node: Section 10-10, Next: Subsection 10-10-1, Prev: Section 10-9, Up: Chapter 10 10.10 Value printing functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Values can be printed with the `printv' and `printvln' functions. The `printvln' function adds a terminating newline to the value being printed, the `printv' function does not. << fprintv(, ) printv() eprintv() fprintvln(, ) printvln() eprintvln() >> The `fprintv' functions print to a file that has been previously opened with `fopen'. The `printv' functions print to the standard output channel, and the `eprintv' functions print to the standard error channel. * Menu: * Subsection 10-10-1:: Miscellaneous functions  Node: Subsection 10-10-1, Next: Section 10-11, Prev: Section 10-10, Up: Section 10-10 10.10.1 Miscellaneous functions ================================= 10.10.1.1 set-channel-line ---------------------------- << set-channel-line(channel, filename, line) channel : Channel filename : File line : int >> Set the line number information for the channel.  Node: Section 10-11, Next: Subsection 10-11-1, Prev: Section 10-10, Up: Chapter 10 10.11 Higher-level IO functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection 10-11-1:: Regular expressions * Subsection 10-11-2:: cat * Subsection 10-11-3:: grep * Subsection 10-11-4:: scan * Subsection 10-11-5:: awk * Subsection 10-11-6:: fsubst * Subsection 10-11-7:: lex * Subsection 10-11-8:: lex-search * Subsection 10-11-9:: Lexer * Subsection 10-11-10:: Lexer matching * Subsection 10-11-11:: Extending lexer definitions * Subsection 10-11-12:: Threading the lexer object * Subsection 10-11-13:: Parser * Subsection 10-11-14:: Calling the parser * Subsection 10-11-15:: Parsing control * Subsection 10-11-16:: Extending parsers * Subsection 10-11-17:: Passwd * Subsection 10-11-18:: getpwnam, getpwuid * Subsection 10-11-19:: getpwents * Subsection 10-11-20:: Group * Subsection 10-11-21:: getgrnam, getgrgid * Subsection 10-11-22:: tgetstr * Subsection 10-11-23:: xterm-escape-begin, xterm-escape-end * Subsection 10-11-24:: xterm-escape * Subsection 10-11-25:: prompt-invisible-begin, prompt-invisible-end * Subsection 10-11-26:: prompt-invisible * Subsection 10-11-27:: gettimeofday  Node: Subsection 10-11-1, Next: Subsection 10-11-2, Prev: Section 10-11, Up: Section 10-11 10.11.1 Regular expressions ============================= Many of the higher-level functions use regular expressions. Regular expressions are defined by strings with syntax nearly identical to awk(1). Strings may contain the following character constants. - `\\' : a literal backslash. - `\a' : the alert character `^G'. - `\b' : the backspace character `^H'. - `\f' : the formfeed character `^L'. - `\n' : the newline character `^J'. - `\r' : the carriage return character `^M'. - `\t' : the tab character `^I'. - `\v' : the vertical tab character. - `\xhh...' : the character represented by the string of hexadecimal digits `h'. All valid hexadecimal digits following the sequence are considered to be part of the sequence. - `\ddd' : the character represented by 1, 2, or 3 octal digits. Regular expressions are defined using the special characters `.\^$[(){}*?'+. - `c' : matches the literal character `c' if `c' is not a special character. - `\c' : matches the literal character `c', even if `c' is a special character. - `.' : matches any character, including newline. - `^' : matches the beginning of a line. - `$' : matches the end of line. - `[abc...]' : matches any of the characters `abc...' - `[^abc...]' : matches any character except `abc...' - `r1|r2' : matches either `r1' or `r2'. - `r1r2' : matches `r1' and then `r2'. - `r'+ : matches one or more occurrences of `r'. - `r*' : matches zero or more occurrences of `r'. - `r?' : matches zero or one occurrence of `r'. - `(r)' : parentheses are used for grouping; matches `r'. - `\(r\)' : also defines grouping, but the expression matched within the parentheses is available to the output processor through one of the variables `$1', `$2', ... - `r{n}' : matches exactly `n' occurrences of `r'. - `r{n,}' : matches `n' or more occurrences of `r'. - `r{n,m}' : matches at least `n' occurrences of `r', and no more than `m' occurrences. - `\y': matches the empty string at either the beginning or end of a word. - `\B': matches the empty string within a word. - `\<': matches the empty string at the beginning of a word. - `\>': matches the empty string at the end of a word. - `\w': matches any character in a word. - `\W': matches any character that does not occur within a word. - `\`': matches the empty string at the beginning of a file. - `\'': matches the empty string at the end of a file. Character classes can be used to specify character sequences abstractly. Some of these sequences can change depending on your LOCALE. - `[:alnum:]' Alphanumeric characters. - `[:alpha:]' Alphabetic characters. - `[:lower:]' Lowercase alphabetic characters. - `[:upper:]' Uppercase alphabetic characters. - `[:cntrl:]' Control characters. - `[:digit:]' Numeric characters. - `[:xdigit:]' Numeric and hexadecimal characters. - `[:graph:]' Characters that are printable and visible. - `[:print:]' Characters that are printable, whether they are visible or not. - `[:punct:]' Punctuation characters. - `[:blank:]' Space or tab characters. - `[:space:]' Whitespace characters.  Node: Subsection 10-11-2, Next: Subsection 10-11-3, Prev: Subsection 10-11-1, Up: Section 10-11 10.11.2 cat ============= << cat(files) : Sequence files : File or InChannel Sequence >> The `cat' function concatenates the output from multiple files and returns it as a string.  Node: Subsection 10-11-3, Next: Subsection 10-11-4, Prev: Subsection 10-11-2, Up: Section 10-11 10.11.3 grep ============== << grep(pattern) : String # input from stdin, default options pattern : String grep(pattern, files) : String # default options pattern : String files : File Sequence grep(options, pattern, files) : String options : String pattern : String files : File Sequence >> The `grep' function searches for occurrences of a regular expression `pattern' in a set of files, and prints lines that match. This is like a highly-simplified version of grep(1). The options are: q If specified, the output from `grep' is not displayed. h If specified, output lines will not include the filename (default, when only one input file is given). n If specified, output lines include the filename (default, when more than one input file is given). v If specified, search for lines without a match instead of lines with a match, The `pattern' is a regular expression. If successful (`grep' found a match), the function returns `true'. Otherwise, it returns `false'.  Node: Subsection 10-11-4, Next: Subsection 10-11-5, Prev: Subsection 10-11-3, Up: Section 10-11 10.11.4 scan ============== << scan(input-files) case string1 body1 case string2 body2 ... default bodyd >> The `scan' function provides input processing in command-line form. The function takes file/filename arguments. If called with no arguments, the input is taken from `stdin'. If arguments are provided, each specifies an `InChannel', or the name of a file for input. Output is always to `stdout'. The `scan' function operates by reading the input one line at a time, and processing it according to the following algorithm. For each line, the record is first split into fields, and the fields are bound to the variables `$1, $2, ...'. The variable `$0' is defined to be the entire line, and `$*' is an array of all the field values. The `$(NF)' variable is defined to be the number of fields. Next, a case expression is selected. If `string_i' matches the token `$1', then `body_i' is evaluated. If the body ends in an `export', the state is passed to the next clause. Otherwise the value is discarded. For example, here is an `scan' function that acts as a simple command processor. << calc() = i = 0 scan(script.in) case print println($i) case inc i = $(add $i, 1) export case dec i = $(sub $i, 1) export case addconst i = $(add $i, $2) export default eprintln($"Unknown command: $1") >> The `scan' function also supports several options. << scan(options, files) ... >> A Parse each line as an argument list, where arguments may be quoted. For example, the following line has three words, "`ls'", "`-l'", "`Program Files'". << ls -l "Program Files" >> O Parse each line using white space as the separator, using the usual OMake algorithm for string parsing. This is the default. x Once each line is split, reduce each word using the hex representation. This is the usual hex representation used in URL specifiers, so the string "Program Files" may be alternately represented in the form ProgramProgram+Files. Note, if you want to redirect the output to a file, the easiest way is to redefine the `stdout' variable. The `stdout' variable is scoped the same way as other variables, so this definition does not affect the meaning of `stdout' outside the `calc' function. << calc() = stdout = $(fopen script.out, w) scan(script.in) ... close(stdout) >>  Node: Subsection 10-11-5, Next: Subsection 10-11-6, Prev: Subsection 10-11-4, Up: Section 10-11 10.11.5 awk ============= << awk(input-files) case pattern1: body1 case pattern2: body2 ... default: bodyd >> or << awk(options, input-files) case pattern1: body1 case pattern2: body2 ... default: bodyd >> The `awk' function provides input processing similar to awk(1), but more limited. The `input-files' argument is a sequence of values, each specifies an `InChannel', or the name of a file for input. If called with no options and no file arguments, the input is taken from `stdin'. Output is always to `stdout'. The variables `RS' and `FS' define record and field separators as regular expressions. The default value of `RS' is the regular expression `\r|\n|\r\n'. The default value of `FS' is the regular expression `[ \t]'+. The `awk' function operates by reading the input one record at a time, and processing it according to the following algorithm. For each line, the record is first split into fields using the field separator `FS', and the fields are bound to the variables `$1, $2, ...'. The variable `$0' is defined to be the entire line, and `$*' is an array of all the field values. The `$(NF)' variable is defined to be the number of fields. Next, the cases are evaluated in order. For each case, if the regular expression `pattern_i' matches the record `$0', then `body_i' is evaluated. If the body ends in an `export', the state is passed to the next clause. Otherwise the value is discarded. If the regular expression contains `\(r\)' expression, those expression override the fields `$1, $2, ...'. For example, here is an `awk' function to print the text between two delimiters `\begin{}' and `\end{}', where the `' must belong to a set passed as an argument to the `filter' function. << filter(names) = print = false awk(Awk.in) case $"^\\end\{\([:alpha:]+\)\}" if $(mem $1, $(names)) print = false export export default if $(print) println($0) case $"^\\begin\{\([:alpha:]+\)\}" print = $(mem $1, $(names)) export >> Note, if you want to redirect the output to a file, the easiest way is to redefine the `stdout' variable. The `stdout' variable is scoped the same way as other variables, so this definition does not affect the meaning of `stdout' outside the `filter' function. << filter(names) = stdout = $(fopen file.out, w) awk(Awk.in) ... close(stdout) >> Options. b "Break" when evaluating cases. Only the first case that matches will be selected. The 'break' function can be used to abort the loop, exiting the `awk' function immediately.  Node: Subsection 10-11-6, Next: Subsection 10-11-7, Prev: Subsection 10-11-5, Up: Section 10-11 10.11.6 fsubst ================ << fsubst(files) case pattern1 [options] body1 case pattern2 [options] body2 ... default bodyd >> The `fsubst' function provides a sed(1)-like substitution function. Similar to `awk', if `fsubst' is called with no arguments, the input is taken from `stdin'. If arguments are provided, each specifies an `InChannel', or the name of a file for input. The `RS' variable defines a regular expression that determines a record separator, The default value of `RS' is the regular expression `\r|\n|\r\n'. The `fsubst' function reads the file one record at a time. For each record, the cases are evaluated in order. Each case defines a substitution from a substring matching the `pattern' to replacement text defined by the body. Currently, there is only one option: `g'. If specified, each clause specifies a global replacement, and all instances of the pattern define a substitution. Otherwise, the substitution is applied only once. Output can be redirected by redefining the `stdout' variable. For example, the following program replaces all occurrences of an expression `word.' with its capitalized form. << section stdout = $(fopen Subst.out, w) fsubst(Subst.in) case $"\<\([[:alnum:]]+\)\." g value $(capitalize $1). close(stdout) >>  Node: Subsection 10-11-7, Next: Subsection 10-11-8, Prev: Subsection 10-11-6, Up: Section 10-11 10.11.7 lex ============= << lex(files) case pattern1 body1 case pattern2 body2 ... default bodyd >> The `lex' function provides a simple lexical-style scanner function. The input is a sequence of files or channels. The cases specify regular expressions. Each time the input is read, the regular expression that matches the longest prefix of the input is selected, and the body is evaluated. If two clauses both match the same input, the last one is selected for execution. The `default' case matches the regular expression `.'; you probably want to place it first in the pattern list. If the body end with an `export' directive, the state is passed to the next clause. For example, the following program collects all occurrences of alphanumeric words in an input file. << collect-words($(files)) = words[] = lex($(files)) default # empty case $"[[:alnum:]]+" g words[] += $0 export >> The `default' case, if one exists, matches single characters. Since It is an error if the input does not match any of the regular expressions. The 'break' function can be used to abort the loop.  Node: Subsection 10-11-8, Next: Subsection 10-11-9, Prev: Subsection 10-11-7, Up: Section 10-11 10.11.8 lex-search ==================== << lex-search(files) case pattern1 body1 case pattern2 body2 ... default bodyd >> The `lex-search' function is like the `lex' function, but input that does not match any of the regular expressions is skipped. If the clauses include a `default' case, then the `default' matches any skipped text. For example, the following program collects all occurrences of alphanumeric words in an input file, skipping any other text. << collect-words($(files)) = words[] = lex-search($(files)) default eprintln(Skipped $0) case $"[[:alnum:]]+" g words[] += $0 export >> The `default' case, if one exists, matches single characters. Since It is an error if the input does not match any of the regular expressions. The 'break' function can be used to abort the loop.  Node: Subsection 10-11-9, Next: Subsection 10-11-10, Prev: Subsection 10-11-8, Up: Section 10-11 10.11.9 Lexer =============== The `Lexer' object defines a facility for lexical analysis, similar to the lex(1) and flex(1) programs. In omake, lexical analyzers can be constructed dynamically by extending the `Lexer' class. A lexer definition consists of a set of directives specified with method calls, and set of clauses specified as rules. For example, consider the following lexer definition, which is intended for lexical analysis of simple arithmetic expressions for a desktop calculator. << lexer1. = extends $(Lexer) other: . eprintln(Illegal character: $* ) lex() white: $"[[:space:]]+" lex() op: $"[-+*/()]" switch $* case + Token.unit($(loc), plus) case - Token.unit($(loc), minus) case * Token.unit($(loc), mul) case / Token.unit($(loc), div) case $"(" Token.unit($(loc), lparen) case $")" Token.unit($(loc), rparen) number: $"[[:digit:]]+" Token.pair($(loc), exp, $(int $* )) eof: $"\'" Token.unit($(loc), eof) >> This program defines an object `lexer1' the extends the `Lexer' object, which defines lexing environment. The remainder of the definition consists of a set of clauses, each with a method name before the colon; a regular expression after the colon; and in this case, a body. The body is optional, if it is not specified, the method with the given name should already exist in the lexer definition. NB The clause that matches the longest prefix of the input is selected. If two clauses match the same input prefix, then the last one is selected. This is unlike most standard lexers, but makes more sense for extensible grammars. The first clause matches any input that is not matched by the other clauses. In this case, an error message is printed for any unknown character, and the input is skipped. Note that this clause is selected only if no other clause matches. The second clause is responsible for ignoring white space. If whitespace is found, it is ignored, and the lexer is called recursively. The third clause is responsible for the arithmetic operators. It makes use of the `Token' object, which defines three fields: a `loc' field that represents the source location; a `name'; and a `value'. The lexer defines the `loc' variable to be the location of the current lexeme in each of the method bodies, so we can use that value to create the tokens. The `Token.unit($(loc), name)' method constructs a new `Token' object with the given name, and a default value. The `number' clause matches nonnegative integer constants. The `Token.pair($(loc), name, value)' constructs a token with the given name and value. Lexer object operate on `InChannel' objects. The method `lexer1.lex-channel(channel)' reads the next token from the channel argument.  Node: Subsection 10-11-10, Next: Subsection 10-11-11, Prev: Subsection 10-11-9, Up: Section 10-11 10.11.10 Lexer matching ========================= During lexical analysis, clauses are selected by longest match. That is, the clause that matches the longest sequence of input characters is chosen for evaluation. If no clause matches, the lexer raises a `RuntimeException'. If more than one clause matches the same amount of input, the first one is chosen for evaluation.  Node: Subsection 10-11-11, Next: Subsection 10-11-12, Prev: Subsection 10-11-10, Up: Section 10-11 10.11.11 Extending lexer definitions ====================================== Suppose we wish to augment the lexer example so that it ignores comments. We will define comments as any text that begins with the string `(*', ends with `*)', and comments may be nested. One convenient way to do this is to define a separate lexer just to skip comments. << lex-comment. = extends $(Lexer) level = 0 other: . lex() term: $"[*][)]" if $(not $(eq $(level), 0)) level = $(sub $(level), 1) lex() next: $"[(][*]" level = $(add $(level), 1) lex() eof: $"\'" eprintln(Unterminated comment) >> This lexer contains a field `level' that keeps track of the nesting level. On encountering a `(*' string, it increments the level, and for `*)', it decrements the level if nonzero, and continues. Next, we need to modify our previous lexer to skip comments. We can do this by extending the lexer object `lexer1' that we just created. << lexer1. += comment: $"[(][*]" lex-comment.lex-channel($(channel)) lex() >> The body for the comment clause calls the `lex-comment' lexer when a comment is encountered, and continues lexing when that lexer returns.  Node: Subsection 10-11-12, Next: Subsection 10-11-13, Prev: Subsection 10-11-11, Up: Section 10-11 10.11.12 Threading the lexer object ===================================== Clause bodies may also end with an `export' directive. In this case the lexer object itself is used as the returned token. If used with the `Parser' object below, the lexer should define the `loc', `name' and `value' fields in each `export' clause. Each time the `Parser' calls the lexer, it calls it with the lexer returned from the previous lex invocation.  Node: Subsection 10-11-13, Next: Subsection 10-11-14, Prev: Subsection 10-11-12, Up: Section 10-11 10.11.13 Parser ================= The `Parser' object provides a facility for syntactic analysis based on context-free grammars. `Parser' objects are specified as a sequence of directives, specified with method calls; and productions, specified as rules. For example, let's finish building the desktop calculator started in the `Lexer' example. << parser1. = extends $(Parser) # # Use the main lexer # lexer = $(lexer1) # # Precedences, in ascending order # left(plus minus) left(mul div) right(uminus) # # A program # start(prog) prog: exp eof return $1 # # Simple arithmetic expressions # exp: minus exp :prec: uminus neg($2) exp: exp plus exp add($1, $3) exp: exp minus exp sub($1, $3) exp: exp mul exp mul($1, $3) exp: exp div exp div($1, $3) exp: lparen exp rparen return $2 >> Parsers are defined as extensions of the `Parser' class. A `Parser' object must have a `lexer' field. The `lexer' is not required to be a `Lexer' object, but it must provide a `lexer.lex()' method that returns a token object with `name' and `value' fields. For this example, we use the `lexer1' object that we defined previously. The next step is to define precedences for the terminal symbols. The precedences are defined with the `left', `right', and `nonassoc' methods in order of increasing precedence. The grammar must have at least one start symbol, declared with the `start' method. Next, the productions in the grammar are listed as rules. The name of the production is listed before the colon, and a sequence of variables is listed to the right of the colon. The body is a semantic action to be evaluated when the production is recognized as part of the input. In this example, these are the productions for the arithmetic expressions recognized by the desktop calculator. The semantic action performs the calculation. The variables `$1, $2, ...' correspond to the values associated with each of the variables on the right-hand-side of the production.  Node: Subsection 10-11-14, Next: Subsection 10-11-15, Prev: Subsection 10-11-13, Up: Section 10-11 10.11.14 Calling the parser ============================= The parser is called with the `$(parser1.parse-channel start, channel)' or `$(parser1.parse-file start, file)' functions. The `start' argument is the start symbol, and the `channel' or `file' is the input to the parser.  Node: Subsection 10-11-15, Next: Subsection 10-11-16, Prev: Subsection 10-11-14, Up: Section 10-11 10.11.15 Parsing control ========================== The parser generator generates a pushdown automation based on LALR(1) tables. As usual, if the grammar is ambiguous, this may generate shift/reduce or reduce/reduce conflicts. These conflicts are printed to standard output when the automaton is generated. By default, the automaton is not constructed until the parser is first used. The `build(debug)' method forces the construction of the automaton. While not required, it is wise to finish each complete parser with a call to the `build(debug)' method. If the `debug' variable is set, this also prints with parser table together with any conflicts. The `loc' variable is defined within action bodies, and represents the input range for all tokens on the right-hand-side of the production.  Node: Subsection 10-11-16, Next: Subsection 10-11-17, Prev: Subsection 10-11-15, Up: Section 10-11 10.11.16 Extending parsers ============================ Parsers may also be extended by inheritance. For example, let's extend the grammar so that it also recognizes the `<<' and `>>' shift operations. First, we extend the lexer so that it recognizes these tokens. This time, we choose to leave `lexer1' intact, instead of using the += operator. << lexer2. = extends $(lexer1) lsl: $"<<" Token.unit($(loc), lsl) asr: $">>" Token.unit($(loc), asr) >> Next, we extend the parser to handle these new operators. We intend that the bitwise operators have lower precedence than the other arithmetic operators. The two-argument form of the `left' method accomplishes this. << parser2. = extends $(parser1) left(plus, lsl lsr asr) lexer = $(lexer2) exp: exp lsl exp lsl($1, $3) exp: exp asr exp asr($1, $3) >> In this case, we use the new lexer `lexer2', and we add productions for the new shift operations.  Node: Subsection 10-11-17, Next: Subsection 10-11-18, Prev: Subsection 10-11-16, Up: Section 10-11 10.11.17 Passwd ================= The `Passwd' object represents an entry in the system's user database. It contains the following fields. 'pw_name': the login name. 'pw_passwd': the encrypted password. 'pw_uid': user id of the user. 'pw_gid': group id of the user. 'pw_gecos': the user name or comment field. 'pw_dir': the user's home directory. 'pw_shell': the user's default shell. Not all the fields will have meaning on all operating systems.  Node: Subsection 10-11-18, Next: Subsection 10-11-19, Prev: Subsection 10-11-17, Up: Section 10-11 10.11.18 getpwnam, getpwuid ============================= << $(getpwnam name...) : Passwd name : String $(getpwuid uid...) : Passwd uid : Int raises RuntimeException >> The `getpwnam' function looks up an entry by the user's login and the `getpwuid' function looks up an entry by user's numerical id (uid). If no entry is found, an exception will be raised.  Node: Subsection 10-11-19, Next: Subsection 10-11-20, Prev: Subsection 10-11-18, Up: Section 10-11 10.11.19 getpwents ==================== << $(getpwents) : Array >> The `getpwents' function returns an array of `Passwd' objects, one for every user fund in the system user database. Note that depending on the operating system and on the setup of the user database, the returned array may be incomplete or even empty.  Node: Subsection 10-11-20, Next: Subsection 10-11-21, Prev: Subsection 10-11-19, Up: Section 10-11 10.11.20 Group ================ The `Group' object represents an entry in the system's user group database. It contains the following fields. 'gr_name': the group name. 'gr_group': the encrypted password. 'gr_gid': group id of the group. 'gr_mem': the group member's user names. Not all the fields will have meaning on all operating systems.  Node: Subsection 10-11-21, Next: Subsection 10-11-22, Prev: Subsection 10-11-20, Up: Section 10-11 10.11.21 getgrnam, getgrgid ============================= << $(getgrnam name...) : Group name : String $(getgrgid gid...) : Group gid : Int raises RuntimeException >> The `getgrnam' function looks up a group entry by the group's name and the `getgrgid' function looks up an entry by groups's numerical id (gid). If no entry is found, an exception will be raised.  Node: Subsection 10-11-22, Next: Subsection 10-11-23, Prev: Subsection 10-11-21, Up: Section 10-11 10.11.22 tgetstr ================== << $(tgetstr id) : String id : String >> The `tgetstr' function looks up the terminal capability with the indicated `id'. This assumes the terminfo to lookup is given in the `TERM' environment variable. This function returns an empty value if the given terminal capability is not defined. Note: if you intend to use the value returned by `tgetstr' inside the shell 'prompt', you need to wrap it using the 'prompt-invisible' function.  Node: Subsection 10-11-23, Next: Subsection 10-11-24, Prev: Subsection 10-11-22, Up: Section 10-11 10.11.23 xterm-escape-begin, xterm-escape-end =============================================== \@n ame{function:xterm-escape-end} << $(xterm-escape-begin) : String $(xterm-escape-end) : String >> The `xterm-escape-begin' and `xterm-escape-end' functions return the escape sequences that can be used to set the XTerm window title. Will return empty values if this capability is not available. Note: if you intend to use these strings inside the shell 'prompt', you need to use `$(prompt_invisible_begin)$(xterm-escape-begin)' and `$(xterm-escape-end)$(prompt_invisible_end)'.  Node: Subsection 10-11-24, Next: Subsection 10-11-25, Prev: Subsection 10-11-23, Up: Section 10-11 10.11.24 xterm-escape ======================= << $(xterm-escape s) : Sequence >> When the `TERM' environment variable indicates that the XTerm title setting capability is available, `$(xterm-escape s)' is equivalent to `$(xterm-escape-begin)s$(xterm-escape-end)'. Otherwise, it returns an empty value. Note: if you intend to use the value returned by `xterm-escape' inside the shell 'prompt', you need to wrap it using the 'prompt-invisible' function.  Node: Subsection 10-11-25, Next: Subsection 10-11-26, Prev: Subsection 10-11-24, Up: Section 10-11 10.11.25 prompt-invisible-begin, prompt-invisible-end ======================================================= << $(prompt-invisible-begin) : String $(prompt-invisible-end) : String >> The `prompt-invisible-begin' and `prompt-invisible-end' functions return the escape sequences that must used to mark the "invisible" sections of the shell 'prompt' (such as various escape sequences).  Node: Subsection 10-11-26, Next: Subsection 10-11-27, Prev: Subsection 10-11-25, Up: Section 10-11 10.11.26 prompt-invisible =========================== << $(prompt-invisible s) : Sequence >> The `prompt-invisible' will wrap its argument with `$(prompt-invisible-begin)' and `$(prompt-invisible-end)'. All the `invisible" sections of the shell 'prompt' (such as various escape sequences) must be wrapped this way.  Node: Subsection 10-11-27, Next: Chapter 11, Prev: Subsection 10-11-26, Up: Section 10-11 10.11.27 gettimeofday ======================= << $(gettimeofday) : Float >> The `gettimeofday' function returns the time of day in seconds since January 1, 1970.  Node: Chapter 11, Next: Section 11-1, Prev: Section 10-11, Up: Top Chapter 11 Shell commands ***************************** Shell commands (commands to be executed by the operating system) can be freely mixed with other code. NOTE: the syntax and shell usage is identical on all platforms, including Win32. To avoid portability problems on Win32, it is recommended that you avoid the use of the native shell interpreter `cmd'. << LIB = $(dir lib) println(The contents of the $(LIB) directory is:) ls $(LIB) >> * Menu: * Section 11-1:: Simple commands * Section 11-2:: Globbing * Section 11-3:: Background jobs * Section 11-4:: File redirection * Section 11-5:: Pipelines * Section 11-6:: Conditional execution * Section 11-7:: Grouping * Section 11-8:: What is a shell command? * Section 11-9:: Basic builtin functions * Section 11-10:: Job control builtin functions * Section 11-11:: Command history  Node: Section 11-1, Next: Section 11-2, Prev: Chapter 11, Up: Chapter 11 11.1 Simple commands *=*=*=*=*=*=*=*=*=*=*= The syntax of shell commands is similar to the syntax used by the Unix shell `bash'. In general, a command is a pipeline. A basic command is part of a pipeline. It is specified with the name of an executable and some arguments. Here are some examples. << ls ls -AF . echo Hello world >> The command is found using the current search path in the variable `PATH[]', which should define an array of directories containing executables. A command may also be prefixed by environment variable definitions. << # Prints "Hello world" env X="Hello world" Y=2 printenv X # Pass the include path to the Visual C++ env include="c:\Program Files\Microsoft SDK\include" cl foo.cpp >>  Node: Section 11-2, Next: Section 11-3, Prev: Section 11-1, Up: Chapter 11 11.2 Globbing *=*=*=*=*=*=*=* Commands may contain wildcard patterns. A pattern specifies a set of files through a limited kind of regular expression. Patterns are expanded before the function is executed. << # List all files with a .c suffix ls *.c # List all files with a single character prefix, and .c suffix ls ?.c # Rename the file hello.ml to foo.ml mv {hello,foo}.ml >> A comprehensive description of OMake glob patterns is given in Section 10.4*Note Section 10-4::.  Node: Section 11-3, Next: Section 11-4, Prev: Section 11-2, Up: Chapter 11 11.3 Background jobs *=*=*=*=*=*=*=*=*=*=*= The command may also be placed in the background by placing an ampersand after the command. Control returns to the shell without waiting for the job to complete. The job continues to run in the background. << gcc -o hugeprogram *.c & >>  Node: Section 11-4, Next: Section 11-5, Prev: Section 11-3, Up: Chapter 11 11.4 File redirection *=*=*=*=*=*=*=*=*=*=*=* Input and output can be redirected to files by using the `<', `>', and `>&' directives after the command. << # Write to the "foo" file echo Hello world > foo # Redirect input from the foo file cat < foo # Redirect standard output and errors to the foo file gcc -o boo *.c >& foo >>  Node: Section 11-5, Next: Section 11-6, Prev: Section 11-4, Up: Chapter 11 11.5 Pipelines *=*=*=*=*=*=*=*= Pipelines are sequences of commands, where the output from each command is sent to the next. Pipelines are defined with the `|' and `|&' syntax. With `|' the output is redirected, but errors are not. With `|&' both output and errors are redirected. << # Send the output of the ls command to the printer ls *.c | lpr # Send output and errors to jyh as email gcc -o hugefile *.c |& mail jyh >>  Node: Section 11-6, Next: Section 11-7, Prev: Section 11-5, Up: Chapter 11 11.6 Conditional execution *=*=*=*=*=*=*=*=*=*=*=*=*=*= Commands may also be composed though conditional evaluation using the `||' and `&&' syntax. Every command has an integer exit code, which may be zero or some other integer. A command is said to succeed if its exit code is zero. The expression `command1 && command2' executes `command2' only if `command1' succeeds. The expression `command1 || command2' executes `command2' only if `command1' fails. << # Display the x/y file if possible cd x && cat y # Run foo.exe, or print an error message (test -x foo.exe && foo.exe) || echo "foo.exe is not executable" >> omake-0.9.8.5/doc/info/omake-doc.info-50000664000152300015230000014171710655737107015537 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Subsection 9-5-4, Next: Section 9-6, Prev: Subsection 9-5-3, Up: Section 9-5 9.5.4 create-map, create-lazy-map =================================== The `create-map' is a simplified form for creating `Map' objects. The `create-map' function takes an even number of arguments that specify key/value pairs. For example, the following values are equivalent. << X = $(create-map name1, xxx, name2, yyy) X. = extends $(Map) $|name1| = xxx $|name2| = yyy >> The `create-lazy-map' function is similar, but the values are computed lazily. The following two definitions are equivalent. << Y = $(create-lazy-map name1, $(xxx), name2, $(yyy)) Y. = extends $(Map) $|name1| = $`(xxx) $|name2| = $`(yyy) >> The 'create-lazy-map' function is used in rule construction.  Node: Section 9-6, Next: Subsection 9-6-1, Prev: Section 9-5, Up: Chapter 9 9.6 Iteration and mapping *=*=*=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection 9-6-1:: foreach  Node: Subsection 9-6-1, Next: Section 9-7, Prev: Section 9-6, Up: Section 9-6 9.6.1 foreach =============== The `foreach' function maps a function over a sequence. << $(foreach , ) foreach(, ) >> For example, the following program defines the variable `X' as an array `a.c b.c c.c'. << X = foreach(x, a b c) value $(x).c # Equivalent expression X = $(foreach $(fun x, $(x).c), abc) >> There is also an abbreviated syntax. The `export' form can also be used in a `foreach' body. The final value of `X' is `a.c b.c c.c'. << X = foreach(x, a b c) X += $(x).c export >> The 'break' function can be used to break out of the loop early.  Node: Section 9-7, Next: Subsection 9-7-1, Prev: Section 9-6, Up: Chapter 9 9.7 Boolean tests *=*=*=*=*=*=*=*=*=* * Menu: * Subsection 9-7-1:: sequence-forall * Subsection 9-7-2:: sequence-exists * Subsection 9-7-3:: sequence-sort * Subsection 9-7-4:: compare  Node: Subsection 9-7-1, Next: Subsection 9-7-2, Prev: Section 9-7, Up: Section 9-7 9.7.1 sequence-forall ======================= The `forall' function tests whether a predicate halds for each element of a sequence. << $(sequence-forall , ) sequence-forall( => ..., ) >>  Node: Subsection 9-7-2, Next: Subsection 9-7-3, Prev: Subsection 9-7-1, Up: Section 9-7 9.7.2 sequence-exists ======================= The `exists' function tests whether a predicate holds for some element of a sequence. << $(sequence-exists , ) sequence-exists( => ..., ) >>  Node: Subsection 9-7-3, Next: Subsection 9-7-4, Prev: Subsection 9-7-2, Up: Section 9-7 9.7.3 sequence-sort ===================== The `sort' function sorts the elements in an array, given a comparison function. Given two elements (x, y), the comparison should return a negative number if x < y; a positive number if x > y; and 0 if x = y. << $(sequence-sort , ) sort(, => ..., ) >>  Node: Subsection 9-7-4, Next: Chapter 10, Prev: Subsection 9-7-3, Up: Section 9-7 9.7.4 compare =============== The `compare' function compares two values (x, y) generically returning a negative number if x < y; a positive number if x > y; and 0 if x = y. << $(compare x, y) : Int >>  Node: Chapter 10, Next: Section 10-1, Prev: Section 9-7, Up: Top Chapter 10 File, I/O and system operations ********************************************** * Menu: * Section 10-1:: File names * Section 10-2:: Path search * Section 10-3:: File stats * Section 10-4:: Globbing and file listings * Section 10-5:: Filesystem operations * Section 10-6:: vmount * Section 10-7:: File predicates * Section 10-8:: IO functions * Section 10-9:: Printing functions * Section 10-10:: Value printing functions * Section 10-11:: Higher-level IO functions  Node: Section 10-1, Next: Subsection 10-1-1, Prev: Chapter 10, Up: Chapter 10 10.1 File names *=*=*=*=*=*=*=*=* * Menu: * Subsection 10-1-1:: file, dir * Subsection 10-1-2:: tmpfile * Subsection 10-1-3:: in * Subsection 10-1-4:: basename * Subsection 10-1-5:: dirname * Subsection 10-1-6:: rootname * Subsection 10-1-7:: dirof * Subsection 10-1-8:: fullname * Subsection 10-1-9:: absname * Subsection 10-1-10:: homename * Subsection 10-1-11:: suffix  Node: Subsection 10-1-1, Next: Subsection 10-1-2, Prev: Section 10-1, Up: Section 10-1 10.1.1 file, dir ================== << $(file sequence) : File Sequence sequence : Sequence $(dir sequence) : Dir Sequence sequence : Sequence >> The `file' and `dir' functions define location-independent references to files and directories. In omake, the commands to build a target are executed in the target's directory. Since there may be many directories in an omake project, the build system provides a way to construct a reference to a file in one directory, and use it in another without explicitly modifying the file name. The functions have the following syntax, where the name should refer to a file or directory. For example, we can construct a reference to a file `foo' in the current directory. << FOO = $(file foo) .SUBDIRS: bar >> If the `FOO' variable is expanded in the `bar' subdirectory, it will expand to `../foo'. These commands are often used in the top-level OMakefile to provide location-independent references to top-level directories, so that build commands may refer to these directories as if they were absolute. << ROOT = $(dir .) LIB = $(dir lib) BIN = $(dir bin) >> Once these variables are defined, they can be used in build commands in subdirectories as follows, where `$(BIN)' will expand to the location of the `bin' directory relative to the command being executed. << install: hello cp hello $(BIN) >>  Node: Subsection 10-1-2, Next: Subsection 10-1-3, Prev: Subsection 10-1-1, Up: Section 10-1 10.1.2 tmpfile ================ << $(tmpfile prefix) : File $(tmpfile prefix, suffix) : File prefix : String suffix : String >> The `tmpfile' function returns the name of a fresh temporary file in the temporary directory.  Node: Subsection 10-1-3, Next: Subsection 10-1-4, Prev: Subsection 10-1-2, Up: Section 10-1 10.1.3 in =========== << $(in dir, exp) : String Array dir : Dir exp : expression >> The `in' function is closely related to the `dir' and `file' functions. It takes a directory and an expression, and evaluates the expression in that effective directory. For example, one common way to install a file is to define a symbol link, where the value of the link is relative to the directory where the link is created. The following commands create links in the `$(LIB)' directory. << FOO = $(file foo) install: ln -s $(in $(LIB), $(FOO)) $(LIB)/foo >> Note that the `in' function only affects the expansion of `Node' (`File' and `Dir') values.  Node: Subsection 10-1-4, Next: Subsection 10-1-5, Prev: Subsection 10-1-3, Up: Section 10-1 10.1.4 basename ================= << $(basename files) : String Sequence files : String Sequence >> The `basename' function returns the base names for a list of files. The basename is the filename with any leading directory components removed. For example, the expression `$(basename dir1/dir2/a.out /etc/modules.conf /foo.ml)' evaluates to `a.out modules.conf foo.ml'.  Node: Subsection 10-1-5, Next: Subsection 10-1-6, Prev: Subsection 10-1-4, Up: Section 10-1 10.1.5 dirname ================ << $(dirname files) : String Sequence files : String Sequence >> The `dirname' function returns the directory name for a list of files. The directory name is the filename with the basename removed. If a name does not have a directory part, the directory is "." For example, the expression `$(dirname dir1\dir2\a.out /etc/modules.conf /foo.ml bar.ml)' evaluates to `dir1/dir2 /etc / .'. Note: this function is different from the `dirof' function. The function `dirname' is simple a function over strings, while `dirof' is a function on filenames.  Node: Subsection 10-1-6, Next: Subsection 10-1-7, Prev: Subsection 10-1-5, Up: Section 10-1 10.1.6 rootname ================= << $(rootname files) : String Sequence files : String Sequence >> The `rootname' function returns the root name for a list of files. The rootname is the filename with the final suffix removed. For example, the expression `$(rootname dir1/dir2/a.out /etc/a.b.c /foo.ml)' evaluates to `dir1/dir2/a /etc/a.b /foo'.  Node: Subsection 10-1-7, Next: Subsection 10-1-8, Prev: Subsection 10-1-6, Up: Section 10-1 10.1.7 dirof ============== << $(dirof files) : Dir Sequence files : File Sequence >> The `dirof' function returns the directory for each of the listed files. For example, the expression `$(dirof dir/dir2/a.out /etc/modules.conf /foo.ml)' evaluates to the directories `dir1/dir2 /etc /'.  Node: Subsection 10-1-8, Next: Subsection 10-1-9, Prev: Subsection 10-1-7, Up: Section 10-1 10.1.8 fullname ================= << $(fullname files) : String Sequence files : File Sequence >> The `fullname' function returns the pathname relative to the project root for each of the files or directories.  Node: Subsection 10-1-9, Next: Subsection 10-1-10, Prev: Subsection 10-1-8, Up: Section 10-1 10.1.9 absname ================ << $(absname files) : String Sequence files : File Sequence >> The `absname' function returns the absolute pathname for each of the files or directories.  Node: Subsection 10-1-10, Next: Subsection 10-1-11, Prev: Subsection 10-1-9, Up: Section 10-1 10.1.10 homename ================== << $(homename files) : String Sequence files : File Sequence >> The `homename' function returns the name of a file in tilde form, if possible. The unexpanded forms are computed lazily: the `homename' function will usually evaluate to an absolute pathname until the first tilde-expansion for the same directory.  Node: Subsection 10-1-11, Next: Section 10-2, Prev: Subsection 10-1-10, Up: Section 10-1 10.1.11 suffix ================ << $(suffix files) : String Sequence files : StringSequence >> The `suffix' function returns the suffixes for a list of files. If a file has no suffix, the function returns the empty string. For example, the expression `$(suffix dir1/dir2/a.out /etc/a /foo.ml)' evaluates to `.out .ml'.  Node: Section 10-2, Next: Subsection 10-2-1, Prev: Section 10-1, Up: Chapter 10 10.2 Path search *=*=*=*=*=*=*=*=*= * Menu: * Subsection 10-2-1:: which * Subsection 10-2-2:: where * Subsection 10-2-3:: rehash * Subsection 10-2-4:: exists-in-path * Subsection 10-2-5:: digest, digest-optional * Subsection 10-2-6:: find-in-path, find-in-path-optional * Subsection 10-2-7:: digest-in-path, digest-in-path-optional  Node: Subsection 10-2-1, Next: Subsection 10-2-2, Prev: Section 10-2, Up: Section 10-2 10.2.1 which ============== << $(which files) : File Sequence files : String Sequence >> The `which' function searches for executables in the current command search path, and returns `file' values for each of the commands. It is an error if a command is not found.  Node: Subsection 10-2-2, Next: Subsection 10-2-3, Prev: Subsection 10-2-1, Up: Section 10-2 10.2.2 where ============== The `where' function is similar to which, except it returns the list of all the locations of the given executable (in the order in which the corresponding directories appear in `$PATH'). In case a command is handled internally by the `Shell' object, the first string in the output will describe the command as a built-in function. << % where echo echo is a Shell object method (a built-in function) /bin/echo >>  Node: Subsection 10-2-3, Next: Subsection 10-2-4, Prev: Subsection 10-2-2, Up: Section 10-2 10.2.3 rehash =============== << rehash() >> The `rehash' function resets all search paths.  Node: Subsection 10-2-4, Next: Subsection 10-2-5, Prev: Subsection 10-2-3, Up: Section 10-2 10.2.4 exists-in-path ======================= << $(exists-in-path files) : String files : String Sequence >> The `exists-in-path' function tests whether all executables are present in the current search path.  Node: Subsection 10-2-5, Next: Subsection 10-2-6, Prev: Subsection 10-2-4, Up: Section 10-2 10.2.5 digest, digest-optional ================================ << $(digest files) : String Array file : File Array raises RuntimeException $(digest-optional files) : String Array file : File Array >> The `digest' and `digest-optional' functions compute MD5 digests of files. The `digest' function raises an exception if a file does no exist. The `digest-optional' returns `false' if a file does no exist. MD5 digests are cached.  Node: Subsection 10-2-6, Next: Subsection 10-2-7, Prev: Subsection 10-2-5, Up: Section 10-2 10.2.6 find-in-path, find-in-path-optional ============================================ << $(find-in-path path, files) : File Array path : Dir Array files : String Array raises RuntimeException $(find-in-path-optional path, files) : File Array >> The `find-in-path' function searches for the files in a search path. Only the tail of the filename is significant. The `find-in-path' function raises an exception if the file can't be found. The `find-in-path-optional' function silently removes files that can't be found.  Node: Subsection 10-2-7, Next: Section 10-3, Prev: Subsection 10-2-6, Up: Section 10-2 10.2.7 digest-in-path, digest-in-path-optional ================================================ << $(digest-in-path path, files) : String/File Array path : Dir Array files : String Array raises RuntimeException $(digest-in-path-optional path, files) : String/File Array >> The `digest-in-path' function searches for the files in a search path and returns the file and digest for each file. Only the tail of the filename is significant. The `digest-in-path' function raises an exception if the file can't be found. The `digest-in-path-optional' function silently removes elements that can't be found.  Node: Section 10-3, Next: Subsection 10-3-1, Prev: Section 10-2, Up: Chapter 10 10.3 File stats *=*=*=*=*=*=*=*=* * Menu: * Subsection 10-3-1:: file-exists, target-exists, target-is-proper * Subsection 10-3-2:: stat-reset * Subsection 10-3-3:: filter-exists, filter-targets, filter-proper-targets * Subsection 10-3-4:: find-targets-in-path, find-targets-in-path-optional * Subsection 10-3-5:: find-ocaml-targets-in-path-optional * Subsection 10-3-6:: file-sort * Subsection 10-3-7:: file-check-sort  Node: Subsection 10-3-1, Next: Subsection 10-3-2, Prev: Section 10-3, Up: Section 10-3 10.3.1 file-exists, target-exists, target-is-proper ===================================================== << $(file-exists files) : String $(target-exists files) : String $(target-is-proper files) : String files : File Sequence >> The `file-exists' function checks whether the files listed exist. The `target-exists' function is similar to the `file-exists' function. However, it returns true if the file exists or if it can be built by the current project. The `target-is-proper' returns true only if the file can be generated in the current project.  Node: Subsection 10-3-2, Next: Subsection 10-3-3, Prev: Subsection 10-3-1, Up: Section 10-3 10.3.2 stat-reset =================== << $(stat-reset files) : String files : File Sequence >> OMake uses a stat-cache. The `stat-reset' function reset the `stat' information for the given files, forcing the `stat' information to be recomputed the next time it is requested.  Node: Subsection 10-3-3, Next: Subsection 10-3-4, Prev: Subsection 10-3-2, Up: Section 10-3 10.3.3 filter-exists, filter-targets, filter-proper-targets ============================================================= << $(filter-exists files) : File Sequence $(filter-targets files) : File Sequence $(filter-proper-targets) : File Sequence files : File Sequence >> The `filter-exists', `filter-targets', and `filter-proper-targets' functions remove files from a list of files. - `filter-exists': the result is the list of files that exist. - `filter-targets': the result is the list of files either exist, or can be built by the current project. - `filter-proper-targets': the result is the list of files that can be built in the current project. Creating a "distclean" target One way to create a simple "`distclean'" rule that removes generated files from the project is by removing all files that can be built in the current project. CAUTION: you should be careful before you do this. The rule removes any file that can potentially be reconstructed. There is no check to make sure that the commands to rebuild the file would actually succeed. Also, note that no file outside the current project will be deleted. << .PHONY: distclean distclean: rm $(filter-proper-targets $(ls R, .)) >> If you use CVS, you may wish to utilize the `cvs_realclean' program that is distributed with OMake in order to create a "`distclean'" rule that would delete all the files thare are not known to CVS. For example, if you already have a more traditional "`clean'" target defined in your project, and if you want the "`distclean'" rule to be interactive by default, you can write the following: << if $(not $(defined FORCE_REALCLEAN)) FORCE_REALCLEAN = false export distclean: clean cvs_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock >> You can add more files that you want to always keep (such as configuration files) with the -i option. Similarly, if you use Subversion, you utilize the `build/svn_realclean.om' script that comes with OMake: << if $(not $(defined FORCE_REALCLEAN)) FORCE_REALCLEAN = false export open build/svn_realclean distclean: clean svn_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock >> See also the 'dependencies-proper' function for an alternate method for removing intermediate files.  Node: Subsection 10-3-4, Next: Subsection 10-3-5, Prev: Subsection 10-3-3, Up: Section 10-3 10.3.4 find-targets-in-path, find-targets-in-path-optional ============================================================ \ @name{function:find-targets-in-path-optional} << $(find-targets-in-path path files) : File Array $(find-targets-in-path-optional path, files) : File Array path : Dir Array files : File Sequence >> The `find-target-in-path' function searches for targets in the search path. For each file `file' in the file list, the path is searched sequentially for a directory `dir' such that the target `dir/file' exists. If so, the file `dir/file' is returned. For example, suppose you are building a C project, and project contains a subdirectory `src/' containing only the files `fee.c' and `foo.c'. The following expression evaluates to the files `src/fee.o' `src/foo.o' even if the files have not already been built. << $(find-targets-in-path lib src, fee.o foo.o) # Evaluates to src/fee.o src/foo.o >> The `find-targets-in-path' function raises an exception if the file can't be found. The `find-targets-in-path-optional' function silently removes targets that can't be found. << $(find-targets-in-path-optional lib src, fee.o foo.o fum.o) # Evaluates to src/fee.o src/foo.o >>  Node: Subsection 10-3-5, Next: Subsection 10-3-6, Prev: Subsection 10-3-4, Up: Section 10-3 10.3.5 find-ocaml-targets-in-path-optional ============================================ \ @name{@fun140} The `find-ocaml-targets-in-path-optional' function is very similar to the 'find-targets-in-path-optional' one, except an OCaml-style search is used, where for every element of the search path and for every name being searched for, first the uncapitalized version is tried and if it is not buildable, then the capitalized version is tried next.  Node: Subsection 10-3-6, Next: Subsection 10-3-7, Prev: Subsection 10-3-5, Up: Section 10-3 10.3.6 file-sort ================== << $(file-sort order, files) : File Sequence order : String files : File Sequence >> The `file-sort' function sorts a list of filenames by build order augmented by a set of sort rules. Sort rules are declared using the `.ORDER' target. The `.BUILDORDER' defines the default order. `$(file-sort , )' For example, suppose we have the following set of rules. << a: b c b: d c: d .DEFAULT: a b c d echo $(file-sort .BUILDORDER, a b c d) >> In the case, the sorter produces the result `d b c a'. That is, a target is sorted after its dependencies. The sorter is frequently used to sort files that are to be linked by their dependencies (for languages where this matters). There are three important restrictions to the sorter: - The sorter can be used only within a rule body. The reason for this is that all dependencies must be known before the sort is performed. - The sorter can only sort files that are buildable in the current project. - The sorter will fail if the dependencies are cyclic. 10.3.6.1 sort rule -------------------- It is possible to further constrain the sorter through the use of sort rules. A sort rule is declared in two steps. The target must be listed as an `.ORDER' target; and then a set of sort rules must be given. A sort rule defines a pattern constraint. << .ORDER: .MYORDER .MYORDER: %.foo: %.bar .MYORDER: %.bar: %.baz .DEFAULT: a.foo b.bar c.baz d.baz echo $(sort .MYORDER, a.foo b.bar c.baz d.baz) >> In this example, the `.MYORDER' sort rule specifies that any file with a suffix `.foo' should be placed after any file with suffix `.bar', and any file with suffix `.bar' should be placed after a file with suffix `.baz'. In this example, the result of the sort is `d.baz c.baz b.bar a.foo'.  Node: Subsection 10-3-7, Next: Section 10-4, Prev: Subsection 10-3-6, Up: Section 10-3 10.3.7 file-check-sort ======================== << file-check-sort(files) files : File Sequence raises RuntimeException >> The `file-check-sort' function checks whether a list of files is in sort order. If so, the list is returned unchanged. If not, the function raises an exception. `$(file-check-sort , )'  Node: Section 10-4, Next: Subsection 10-4-1, Prev: Section 10-3, Up: Chapter 10 10.4 Globbing and file listings *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* OMake commands are "glob-expanded" before being executed. That is, names may contain patterns that are expanded to sequences of file and directory names. The syntax follows the standard bash(1), csh(1), syntax, with the following rules. - A pathname is a sequence of directory and file names separated by one of the `/' or `\' characters. For example, the following pathnames refer to the same file: `/home/jyh/OMakefile' and `/home\jyh/OMakefile'. - Glob-expansion is performed on the components of a path. If a path contains occurrences of special characters (listed below), the path is viewed as a pattern to be matched against the actual files in the system. The expansion produces a sequence of all file/directory names that match. For the following examples, suppose that a directory `/dir' contains files named `a', `-a', `a.b', and `b.c'. * Matches any sequence of zero-or-more characters. For example, the pattern `/dir/a*' expands to `/dir/a /dir/aa /dir/a.b'. ? Matches exactly one character. The pattern `/dir/?a' expands the filename `/dir/-a'. [...] Square brackets denote character sets and ranges in the ASCII character set. The pattern may contain individual characters c or character ranges c_1-c_2. The pattern matches any of the individual characters specified, or any characters in the range. A leading "hat" inverts the send of the pattern. To specify a pattern that contains the literal characters `-', the `-' should occur as the first character in the range. Pattern Expansion --------------------------------------------------- `/dir/[a-b]*' `/dir/a /dir/a.b /dir/b.c' `/dir/[-a-b]*' `/dir/a /dir/-a /dir/a.b /dir/b.c' `/dir/[-a]*' `/dir/a /dir/-a /dir/a.b' {s1,...,sN} Braces indicate brace-expansion. The braces delimit a sequence of strings separated by commas. Given N strings, the result produces N copies of the pattern, one for each of the strings s_i. Pattern Expansion ------------------------------------ `a{b,c,d}' `ab ac ad' `a{b{c,d},e}' `abc abd ae' `a{?{[A-Z],d},*}' `a?[A-Z] a?d a*' The tilde is used to specify home directories. Depending on your system, these might be possible expansions. Pattern Expansion -------------------------------------------------- `~jyh' `/home/jyh' `~bob/*.c' `c:\Documents and Settings\users\bob' The `\' character is both a pathname separator and an escape character. If followed by a special glob character, the `\' changes the sense of the following character to non-special status. Otherwise, `\' is viewed as a pathname separator. Pattern Expansion ------------------------------------------------------------------ --------- `~jyh/\*' `~jyh/*' (`*' is literal) `/dir/\[a-z?' `/dir/[a-z?' (`[' is literal, `?' is a pattern). `c:\Program Files\[A-z]' `c:\Program Files[A-z]*' Note that the final case might be considered to be ambiguous (where `\' should be viewed as a pathname separator, not as an escape for the subsequent `[' character. If you want to avoid this ambiguity on Win32, you should use the forward slash `/' even for Win32 pathnames (the `/' is translated to `\' in the output). Pattern Expansion ---------------------------------------------------------------- `c:/Program Files/[A-z]*' `c:\Program Files\WindowsUpdate ...' * Menu: * Subsection 10-4-1:: glob * Subsection 10-4-2:: ls * Subsection 10-4-3:: subdirs  Node: Subsection 10-4-1, Next: Subsection 10-4-2, Prev: Section 10-4, Up: Section 10-4 10.4.1 glob ============= << $(glob strings) : Node Array strings : String Sequence $(glob options, strings) : Node Array options : String strings : String Sequence >> The `glob' function performs glob-expansion. The . and .. entries are always ignored. The options are: b Do not perform csh(1)-style brace expansion. e The `\' character does not escape special characters. n If an expansion fails, return the expansion literally instead of aborting. i If an expansion fails, it expands to nothing. . Allow wildcard patterns to match files beginning with a . A Return all files, including files that begin with a . F Match only normal files (any file that is not a directory). D Match only directory files. C Ignore files according to cvs(1) rules. P Include only proper subdirectories. In addition, the following variables may be defined that affect the behavior of `glob'. GLOB_OPTIONS A string containing default options. GLOB_IGNORE A list of shell patterns for filenames that `glob' should ignore. GLOB_ALLOW A list of shell patterns. If a file does not match a pattern in `GLOB_ALLOW', it is ignored. The returned files are sorted by name.  Node: Subsection 10-4-2, Next: Subsection 10-4-3, Prev: Subsection 10-4-1, Up: Section 10-4 10.4.2 ls =========== << $(ls files) : Node Array files : String Sequence $(ls options, files) : Node Array files : String Sequence >> The `ls' function returns the filenames in a directory. The . and .. entries are always ignored. The patterns are shell-style patterns, and are glob-expanded. The options include all of the options to the `glob' function, plus the following. R Perform a recursive listing. The `GLOB_ALLOW' and `GLOB_IGNORE' variables can be defined to control the globbing behavior. The returned files are sorted by name.  Node: Subsection 10-4-3, Next: Section 10-5, Prev: Subsection 10-4-2, Up: Section 10-4 10.4.3 subdirs ================ << $(subdirs dirs) : Dir Array dirs : String Sequence $(subdirs options, dirs) : Dir Array options : String dirs : String Sequence >> The `subdirs' function returns all the subdirectories of a list of directories, recursively. The possible options are the following: A Return directories that begin with a . C Ignore files according to .cvsignore rules. P Include only proper subdirectories.  Node: Section 10-5, Next: Subsection 10-5-1, Prev: Section 10-4, Up: Chapter 10 10.5 Filesystem operations *=*=*=*=*=*=*=*=*=*=*=*=*=*= * Menu: * Subsection 10-5-1:: mkdir * Subsection 10-5-2:: Stat * Subsection 10-5-3:: stat, lstat * Subsection 10-5-4:: unlink * Subsection 10-5-5:: rename * Subsection 10-5-6:: link * Subsection 10-5-7:: symlink * Subsection 10-5-8:: readlink * Subsection 10-5-9:: chmod * Subsection 10-5-10:: chown * Subsection 10-5-11:: truncate * Subsection 10-5-12:: umask  Node: Subsection 10-5-1, Next: Subsection 10-5-2, Prev: Section 10-5, Up: Section 10-5 10.5.1 mkdir ============== << mkdir(mode, node...) mode : Int node : Node raises RuntimeException mkdir(node...) node : Node raises RuntimeException >> The `mkdir' function creates a directory, or a set of directories. The following options are supported. -m mode Specify the permissions of the created directory. -p Create parent directories if they do not exist. -- Interpret the remaining names literally.  Node: Subsection 10-5-2, Next: Subsection 10-5-3, Prev: Subsection 10-5-1, Up: Section 10-5 10.5.2 Stat ============= The `Stat' object represents an information about a filesystem node, as returned by the `stat' and `lstat' functions. It contains the following fields. dev : the device number. ino : the inode number. kind : the kind of the file, one of the following: `REG' (regular file), `DIR' (directory), `CHR' (character device), `BLK' (block device), `LNK' (symbolic link), `FIFO' (named pipe), `SOCK' (socket). perm : access rights, represented as an integer. nlink : number of links. uid : user id of the owner. gid : group id of the file's group. rdev : device minor number. size : size in bytes. atime : last access time, as a floating point number. mtime : last modification time, as a floating point number. ctime : last status change time, as a floating point number. Not all of the fields will have meaning on all operating systems.  Node: Subsection 10-5-3, Next: Subsection 10-5-4, Prev: Subsection 10-5-2, Up: Section 10-5 10.5.3 stat, lstat ==================== << $(stat node...) : Stat node : Node or Channel $(lstat node...) : Stat node : Node or Channel raises RuntimeException >> The `stat' functions return file information. If the file is a symbolic link, the `stat' function refers to the destination of the link; the `lstat' function refers to the link itself.  Node: Subsection 10-5-4, Next: Subsection 10-5-5, Prev: Subsection 10-5-3, Up: Section 10-5 10.5.4 unlink =============== << $(unlink file...) file : File #(rm file...) file : File $(rmdir dir...) dir : Dir raises RuntimeException >> The `unlink' and `rm' functions remove a file. The `rmdir' function removes a directory. The following options are supported for `rm' and `rmdir'. -f ignore nonexistent files, never prompt. -i prompt before removal. -r remove the contents of directories recursively. -v explain what is going on. -- the rest of the values are interpreted literally.  Node: Subsection 10-5-5, Next: Subsection 10-5-6, Prev: Subsection 10-5-4, Up: Section 10-5 10.5.5 rename =============== << rename(old, new) old : Node new : Node mv(nodes... dir) nodes : Node Sequence dir : Dir cp(nodes... dir) nodes : Node Sequence dir : Dir raises RuntimeException >> The `rename' function changes the name of a file or directory named `old' to `new'. The `mv' function is similar, but if `new' is a directory, and it exists, then the files specified by the sequence are moved into the directory. If not, the behavior of `mv' is identical to `rename'. The `cp' function is similar, but the original file is not removed. The `mv' and `cp' functions take the following options. -f Do not prompt before overwriting. -i Prompt before overwriting. -v Explain what it happening. -r Copy the contents of directories recursively. -- Interpret the remaining arguments literally.  Node: Subsection 10-5-6, Next: Subsection 10-5-7, Prev: Subsection 10-5-5, Up: Section 10-5 10.5.6 link ============= << link(src, dst) src : Node dst : Node raises RuntimeException >> The `link' function creates a hard link named `dst' to the file or directory `src'. Hard links may work under Win32 when NTFS is used. Normally, only the superuser can create hard links to directories.  Node: Subsection 10-5-7, Next: Subsection 10-5-8, Prev: Subsection 10-5-6, Up: Section 10-5 10.5.7 symlink ================ << symlink(src, dst) src : Node dst : Node raises RuntimeException >> The `symlink' function creates a symbolic link `dst' that points to the `src' file. The link name is computed relative to the target directory. For example, the expression `$(symlink a/b, c/d)' creates a link named `c/d -> ../a/b'. Symbolic links are not supported in Win32. Consider using the `ln-or-cp' `Shell' alias for cross-platform portable linking/copying.  Node: Subsection 10-5-8, Next: Subsection 10-5-9, Prev: Subsection 10-5-7, Up: Section 10-5 10.5.8 readlink ================= << $(readlink node...) : Node node : Node >> The `readlink' function reads the value of a symbolic link.  Node: Subsection 10-5-9, Next: Subsection 10-5-10, Prev: Subsection 10-5-8, Up: Section 10-5 10.5.9 chmod ============== << chmod(mode, dst...) mode : Int dst : Node or Channel chmod(mode dst...) mode : String dst : Node Sequence raises RuntimeException >> The `chmod' function changes the permissions of the targets. Options: -v Explain what is happening. -r Change files and directories recursively. -f Continue on errors. -- Interpret the remaining argument literally.  Node: Subsection 10-5-10, Next: Subsection 10-5-11, Prev: Subsection 10-5-9, Up: Section 10-5 10.5.10 chown =============== << chown(uid, gid, node...) uid : Int gid : Int node : Node or Channel chown(uid, node...) uid : Int node : Node or Channel raises RuntimeException >> The `chown' function changes the user and group id of the file. If the `gid' is not specified, it is not changed. If either id is -1, that id is not changed.  Node: Subsection 10-5-11, Next: Subsection 10-5-12, Prev: Subsection 10-5-10, Up: Section 10-5 10.5.11 truncate ================== << truncate(length, node...) length : Int node : Node or Channel raises RuntimeException >> The `truncate' function truncates a file to the given length.  Node: Subsection 10-5-12, Next: Section 10-6, Prev: Subsection 10-5-11, Up: Section 10-5 10.5.12 umask =============== << $(umask mode) : Int mode : Int raises RuntimeException >> Sets the file mode creation mask. The previous mask is returned. This value is not scoped, changes have global effect.  Node: Section 10-6, Next: Subsection 10-6-1, Prev: Section 10-5, Up: Chapter 10 10.6 vmount *=*=*=*=*=*=* * Menu: * Subsection 10-6-1:: vmount * Subsection 10-6-2:: add-project-directories * Subsection 10-6-3:: remove-project-directories  Node: Subsection 10-6-1, Next: Subsection 10-6-2, Prev: Section 10-6, Up: Section 10-6 10.6.1 vmount =============== << vmount(src, dst) src, dst : Dir vmount(flags, src, dst) flags : String src, dst : Dir >> "Mount" the `src' directory on the `dst' directory. This is a virtual mount, changing the behavior of the `$(file ...)' function. When the `$(file str)' function is used, the resulting file is taken relative to the `src' directory if the file exists. Otherwise, the file is relative to the current directory. The main purpose of the `vmount' function is to support multiple builds with separate configurations or architectures. The options are as follows. l Create symbolic links to files in the `src' directory. c Copy files from the `src' directory. Mount operations are scoped.  Node: Subsection 10-6-2, Next: Subsection 10-6-3, Prev: Subsection 10-6-1, Up: Section 10-6 10.6.2 add-project-directories ================================ << add-project-directories(dirs) dirs : Dir Array >> Add the directories to the set of directories that omake considers to be part of the project. This is mainly used to avoid omake complaining that the current directory is not part of the project.  Node: Subsection 10-6-3, Next: Section 10-7, Prev: Subsection 10-6-2, Up: Section 10-6 10.6.3 remove-project-directories =================================== << remove-project-directories(dirs) dirs : Dir Array >> Removed the directories from the set of directories that omake considers to be part of the project. This is mainly used to cancel a `.SUBDIRS' from including a directory if it is determined that the directory does not need to be compiled.  Node: Section 10-7, Next: Subsection 10-7-1, Prev: Section 10-6, Up: Chapter 10 10.7 File predicates *=*=*=*=*=*=*=*=*=*=*= * Menu: * Subsection 10-7-1:: test * Subsection 10-7-2:: find  Node: Subsection 10-7-1, Next: Subsection 10-7-2, Prev: Section 10-7, Up: Section 10-7 10.7.1 test ============= << test(exp) : Bool exp : String Sequence >> The expression grammar is as follows: - `!' expression : expression is not true - expression1 `-a' expression2 : both expressions are true - expression1 `-o' expression2 : at least one expression is true - `(' expression `)' : expression is true The base expressions are: - `-n' string : The string has nonzero length - `-z' string : The string has zero length - string `=' string : The strings are equal - string `!=' string : The strings are not equal - int1 `-eq' int2 : The integers are equal - int1 `-ne' int2 : The integers are not equal - int1 `-gt' int2 : int1 is larger than int2 - int1 `-ge' int2 : int2 is not larger than int1 - int1 `-lt' int2 : int1 is smaller than int2 - int1 `-le' int2 : int1 is not larger than int2 - file1 `-ef' file2 : On Unix, file1 and file2 have the same device and inode number. On Win32, file1 and file2 have the same name. - file1 `-nt' file2 : file1 is newer than file2 - file1 `-ot' file2 : file1 is older than file2 - `-b' file : The file is a block special file - `-c' file : The file is a character special file - `-d' file : The file is a directory - `-e' file : The file exists - `-f' file : The file is a normal file - `-g' file : The set`-group'`-id' bit is set on the file - `-G' file : The file's group is the current effective group - `-h' file : The file is a symbolic link (also `-L') - `-k' file : The file's sticky bit is set - `-L' file : The file is a symbolic link (also `-h') - `-O' file : The file's owner is the current effective user - `-p' file : The file is a named pipe - `-r' file : The file is readable - `-s' file : The file is empty - `-S' file : The file is a socket - `-u' file : The set`-user'`-id' bit is set on the file - `-w' file : The file is writable - `-x' file : The file is executable A string is any sequence of characters; leading `-' characters are allowed. An int is a string that can be interpreted as an integer. Unlike traditional versions of the test program, the leading characters may specify an arity. The prefix `0b' means the numbers is in binary; the prefix `0o' means the number is in octal; the prefix `0x' means the number is in hexadecimal. An int can also be specified as `-l' string, which evaluates to the length of the string. A file is a string that represents the name of a file. The syntax mirrors that of the test(1) program. If you are on a Unix system, the man page explains more. Here are some examples. << # Create an empty file osh> touch foo # Is the file empty? osh> test(-e foo) - : true osh> test(! -e foo) - : false # Create another file osh> touch boo # Is the newer file newer? osh> test(boo -nt foo) - : true # A more complex query # boo is newer than foo, and foo is empty osh> test(\( boo -nt foo \) -a -e foo) - : true >>  Node: Subsection 10-7-2, Next: Section 10-8, Prev: Subsection 10-7-1, Up: Section 10-7 10.7.2 find ============= << find(exp) : Node Array exp : String Sequence >> The `find' function searches a directory recursively, returning the files for which the expression evaluates to true. The expression argument uses the same syntax as the `test' function, with the following exceptions. 1. The expression may begin with a directory. If not specified, the current directory is searched. 2. The `{}' string expands to the current file being examined. The syntax of the expression is the same as `test', with the following additions. - `-name' string : The current file matches the glob expression (see Section 10.4*Note Section 10-4::). - `-regex' string : The current file matches the regular expression The `find' function performs a recursive scan of all subdirectories. The following call is being run from the root of the `omake' source directory. << osh> find(. -name fo* ) - : >> Another example, listing only those files that are normal files or symbolic links. << osh> find(. -name fo* -a \( -f {} -o -L {} \)) - : >>  Node: Section 10-8, Next: Subsection 10-8-1, Prev: Section 10-7, Up: Chapter 10 10.8 IO functions *=*=*=*=*=*=*=*=*=* * Menu: * Subsection 10-8-1:: Standard channels * Subsection 10-8-2:: open-in-string * Subsection 10-8-3:: open-out-string, out-contents * Subsection 10-8-4:: fopen * Subsection 10-8-5:: close * Subsection 10-8-6:: read, input-line * Subsection 10-8-7:: write * Subsection 10-8-8:: lseek * Subsection 10-8-9:: rewind * Subsection 10-8-10:: tell * Subsection 10-8-11:: flush * Subsection 10-8-12:: channel-name * Subsection 10-8-13:: dup * Subsection 10-8-14:: dup2 * Subsection 10-8-15:: set-nonblock * Subsection 10-8-16:: set-close-on-exec-mode * Subsection 10-8-17:: pipe * Subsection 10-8-18:: mkfifo * Subsection 10-8-19:: select * Subsection 10-8-20:: lockf * Subsection 10-8-21:: InetAddr * Subsection 10-8-22:: Host * Subsection 10-8-23:: gethostbyname * Subsection 10-8-24:: Protocol * Subsection 10-8-25:: getprotobyname * Subsection 10-8-26:: Service * Subsection 10-8-27:: getservbyname * Subsection 10-8-28:: socket * Subsection 10-8-29:: bind * Subsection 10-8-30:: listen * Subsection 10-8-31:: accept * Subsection 10-8-32:: connect * Subsection 10-8-33:: getchar * Subsection 10-8-34:: gets * Subsection 10-8-35:: fgets  Node: Subsection 10-8-1, Next: Subsection 10-8-2, Prev: Section 10-8, Up: Section 10-8 10.8.1 Standard channels ========================== The following variables define the standard channels. stdin <> The standard input channel, open for reading. stdout <> The standard output channel, open for writing. stderr <> The standard error channel, open for writing.  Node: Subsection 10-8-2, Next: Subsection 10-8-3, Prev: Subsection 10-8-1, Up: Section 10-8 10.8.2 open-in-string ======================= The `open-in-string' treats a string as if it were a file and returns a channel for reading. << $(open-in-string s) : Channel s : String >>  Node: Subsection 10-8-3, Next: Subsection 10-8-4, Prev: Subsection 10-8-2, Up: Section 10-8 10.8.3 open-out-string, out-contents ====================================== \@name {function:out-contents} The `open-out-string' creates a channel that writes to a string instead of a file. The string may be retrieved with the `out-contents' function. << $(open-out-string) : Channel $(out-contents chan) : String chan : OutChannel >>  Node: Subsection 10-8-4, Next: Subsection 10-8-5, Prev: Subsection 10-8-3, Up: Section 10-8 10.8.4 fopen ============== The `fopen' function opens a file for reading or writing. << $(fopen file, mode) : Channel file : File mode : String >> The `file' is the name of the file to be opened. The `mode' is a combination of the following characters. r Open the file for reading; it is an error if the file does not exist. w Open the file for writing; the file is created if it does not exist. a Open the file in append mode; the file is created if it does not exist. + Open the file for both reading and writing. t Open the file in text mode (default). b Open the file in binary mode. n Open the file in nonblocking mode. x Fail if the file already exists. Binary mode is not significant on Unix systems, where text and binary modes are equivalent.  Node: Subsection 10-8-5, Next: Subsection 10-8-6, Prev: Subsection 10-8-4, Up: Section 10-8 10.8.5 close ============== << $(close channel...) channel : Channel >> The `close' function closes a file that was previously opened with `fopen'.  Node: Subsection 10-8-6, Next: Subsection 10-8-7, Prev: Subsection 10-8-5, Up: Section 10-8 10.8.6 read, input-line ========================= << $(read channel, amount) : String $(input-line channel) : String channel : InChannel amount : Int raises RuntimeException >> The `read' function reads up to `amount' bytes from an input channel, and returns the data that was read. The `input-line' function reads a line from the file and returns the line read, without the line terminator. If an end-of-file condition is reached, both functions raise a `RuntimeException' exception.  Node: Subsection 10-8-7, Next: Subsection 10-8-8, Prev: Subsection 10-8-6, Up: Section 10-8 10.8.7 write ============== << $(write channel, buffer, offset, amount) : String channel : OutChannel buffer : String offset : Int amount : Int $(write channel, buffer) : String channel : OutChannel buffer : String raises RuntimeException >> In the 4-argument form, the `write' function writes bytes to the output channel `channel' from the `buffer', starting at position `offset'. Up to `amount' bytes are written. The function returns the number of bytes that were written. The 3-argument form is similar, but the `offset' is 0. In the 2-argument form, the `offset' is 0, and the `amount' if the length of the `buffer'. If an end-of-file condition is reached, the function raises a `RuntimeException' exception. omake-0.9.8.5/doc/info/omake-doc.info-40000664000152300015230000014223510652152751015523 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Section 8-12, Next: Subsection 8-12-1, Prev: Section 8-11, Up: Chapter 8 8.12 Running OMake from a subdirectory *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Running `omake foo' asks OMake to build the file `foo' in context of the whole project, even when running from a subdirectory of the project. Therefore, if `bar/baz' is a regular target (not a `.PHONY' one), then running `omake bar/baz' and running `(cd bar; omake baz)' are usually equivalent. There are two noteworthy exceptions to the above rule: - If the subdirectory is not a part of the project (there is no `.SUBDIRS') for it, then OMake will complain if you try to run it in that directory. - If a subdirectory contains an `OMakeroot' of its own, this would designate the subdirectory as a separate project (which is usually a bad idea and is not recommended). * Menu: * Subsection 8-12-1:: Phony targets in a subdirectory * Subsection 8-12-2:: Hierarchy of '.PHONY' targets  Node: Subsection 8-12-1, Next: Subsection 8-12-2, Prev: Section 8-12, Up: Section 8-12 8.12.1 Phony targets in a subdirectory ======================================== \@n ame{@default64} Suppose you have a `.PHONY: clean' declared in your root `OMakefile' and both the root `OMakefile' and the `OMakefile' in some of the subdirectories contain `clean:' rules. In this case - Running `omake clean' in the root directory will execute all the rules (each in the appropriate directory); - Running `omake clean' in the subdirectory will execute just its local one, as well as the ones from the subdirectories of the current directory. The above equally applies to the built-in `.PHONY' targets, including '.DEFAULT'. Namely, if OMake is executed (without argument) in the root directory of a project, all the `.DEFAULT' targets in the project will be built. On the other hand, when OMake is executed (without argument) in a subdirectory, only the `.DEFAULT' targets defined in and under that subdirectory will be built. The following Section explains the underlying semantics that gives rise to the above behavior.  Node: Subsection 8-12-2, Next: Section 8-13, Prev: Subsection 8-12-1, Up: Section 8-12 8.12.2 Hierarchy of '.PHONY' targets ====================================== When the the root `OMakefile' contains a `.PHONY: clean' directive, it creates: - A "global" phony target `/.PHONY/clean' (note the leading "`/'"); - A "relative" phony target attached to the current directory --- `.PHONY/clean' (note the lack of the leading "`/'"); - A dependency `/.PHONY/clean: .PHONY/clean'. All the `clean: ...' rules in the root `OMakefile' following this `.PHONY: clean' declaration would be interpreted as rules for the `.PHONY/clean' target. Now when OMake then comes across a `.SUBDIRS: foo' directive (when it is in scope of the above `.PHONY: clean' declaration), it does the following: - Creates a new `.PHONY/foo/clean' "relative" phony target; - Creates the dependency `.PHONY/clean: .PHONY/foo/clean'; - Processes the body of the `.SUBDIRS: foo' directive, or reads the `foo/OMakefile' file, if the body is empty. While doing that, it interprets its instructions relative to the `foo' directory. In particular, all the `clean: ...' rules will be taken to apply to `.PHONY/foo/clean'. Now when you run `omake clean' in the root directory of the project, it is interpreted as `omake .PHONY/clean' (similar to how it happens with the normal targets), so both the rules for `.PHONY/clean' are executed and the rules for its dependency `.PHONY/foo/clean'. Running `(cd foo; omake clean)' is, as for normal targets, equivalent to running `omake .PHONY/foo/clean' and only those rules that apply to `.PHONY/foo/clean' will be executed.  Node: Section 8-13, Next: Chapter 9, Prev: Section 8-12, Up: Chapter 8 8.13 Pathnames in rules *=*=*=*=*=*=*=*=*=*=*=*=* In rules, the targets and dependencies are first translated to file values (as in the 'file' function). They are then translated to strings for the command line. This can cause some unexpected behavior. In the following example, the 'absname' function is the absolute pathname for the file `a', but the rule still prints the relative pathname. << .PHONY: demo demo: $(absname a) echo $< # omake demo a >> There is arguably a good reason for this. On Win32 systems, the `/' character is viewed as an "option specifier." The pathname separator is the `\' character. OMake translates the filenames automatically so that things work as expected on both systems. << demo: a/b echo $< # omake demo (on a Unix system) a/b # omake demo (on a Win32 system) a\b >> Sometimes you may wish that target strings to be passed literally to the commands in the rule. One way to do this is to specify them literally. << SRC = a/b $(absname c/d) demo: $(SRC) echo $(SRC) # omake demo (on a Win32 system) a/b c:\...\c\d >> Alternately, you might wish that filenames be automatically expanded to absolute pathnames. For example, this might be useful when parsing the OMake output to look for errors. For this, you can use the `--absname' option (Section A.3.20*Note Subsection A-3-20::). If you call `omake' with the `--absname' option, all filenames will be expanded to absolute names. << # omake --absname demo (on a Unix system) /home/.../a/b /home/.../c/d >> Alternately, the `--absname' option is scoped. If you want to use it for only a few rules, you can use the 'OMakeFlags' function to control how it is applied. << section OMakeFlags(--absname) demo: a echo $< # omake demo /home/.../a >> N.B. The `--absname' option is currently an experimental feature.  Node: Chapter 9, Next: Section 9-1, Prev: Chapter 8, Up: Top Chapter 9 Base library ************************** * Menu: * Section 9-1:: Builtin variables * Section 9-2:: Logic, Boolean functions, and control flow * Section 9-3:: Arrays and sequences * Section 9-4:: Arithmetic * Section 9-5:: First-class functions * Section 9-6:: Iteration and mapping * Section 9-7:: Boolean tests  Node: Section 9-1, Next: Section 9-2, Prev: Chapter 9, Up: Chapter 9 9.1 Builtin variables *=*=*=*=*=*=*=*=*=*=*=* OMAKE_VERSION Version of OMake. STDLIB The directory where the OMake standard library files reside. At startup, the default value is determined as follows. - The value of the `OMAKELIB' environment variable, if set (must contain an absolute path, if set), otherwise - On Windows, the registry keys `HKEY_CURRENT_USER\SOFTWARE\MetaPRL\OMake\OMAKELIB' and `HKEY_LOCAL_MACHINE\SOFTWARE\MetaPRL\OMake\OMAKELIB' are looked up and the value is used, if exist. - Otherwise a compile-time default it used. The current default value may be accessed by running `omake --version' OMAKEPATH An array of directories specifying the lookup path for the `include' and `open' directives (see Section 4.7*Note Section 4-7::). The default value is an array of two elements --- `.' and `$(STDLIB)'. OSTYPE Set to the machine architecture omake is running on. Possible values are `Unix' (for all Unix versions, including Linux and Mac OS X), `Win32' (for MS-Windows, OMake compiled with MSVC++ or Mingw), and `Cygwin' (for MS-Windows, OMake compiled with Cygwin). SYSNAME The name of the operating system for the current machine. NODENAME The hostname of the current machine. OS_VERSION The operating system release. MACHINE The machine architecture, e.g. `i386', `sparc', etc. HOST Same as `NODENAME'. USER The login name of the user executing the process. HOME The home directory of the user executing the process. PID The OMake process id. TARGETS The command-line target strings. For example, if OMake is invoked with the following command line, << omake CFLAGS=1 foo bar.c >> then `TARGETS' is defined as `foo bar.c'. BUILD_SUMMARY The `BUILD_SUMMARY' variable refers to the file that `omake' uses to summarize a build (the message that is printed at the very end of a build). The file is empty when the build starts. If you wish to add additional messages to the build summary, you can edit/modify this file during the build. For example, if you want to point out that some action was taken, you can append a message to the build summary. << foo: boo echo "The file foo was built" >> $(BUILD_SUMMARY) ...build foo... >> VERBOSE Whether certain commands should be verbose. A boolean flag that is `false' by default and is set to `true' when OMake is invoked with the `--verbose' option.  Node: Section 9-2, Next: Subsection 9-2-1, Prev: Section 9-1, Up: Chapter 9 9.2 Logic, Boolean functions, and control flow *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Boolean values in omake are represented by case-insensitive strings. The false value can be represented by the strings `false', `no', `nil', `undefined' or `0', and everything else is true. * Menu: * Subsection 9-2-1:: not * Subsection 9-2-2:: equal * Subsection 9-2-3:: and * Subsection 9-2-4:: or * Subsection 9-2-5:: if * Subsection 9-2-6:: switch, match * Subsection 9-2-7:: try * Subsection 9-2-8:: raise * Subsection 9-2-9:: exit * Subsection 9-2-10:: defined * Subsection 9-2-11:: defined-env * Subsection 9-2-12:: getenv * Subsection 9-2-13:: setenv * Subsection 9-2-14:: unsetenv * Subsection 9-2-15:: get-registry * Subsection 9-2-16:: getvar * Subsection 9-2-17:: setvar  Node: Subsection 9-2-1, Next: Subsection 9-2-2, Prev: Section 9-2, Up: Section 9-2 9.2.1 not =========== << $(not e) : String e : String >> The `not' function negates a Boolean value. For example, `$(not false)' expands to the string `true', and `$(not hello world)' expands to `false'.  Node: Subsection 9-2-2, Next: Subsection 9-2-3, Prev: Subsection 9-2-1, Up: Section 9-2 9.2.2 equal ============= << $(equal e1, e2) : String e1 : String e2 : String >> The `equal' function tests for equality of two values. For example `$(equal a, b)' expands to `false', and `$(equal hello world, hello world)' expands to `true'.  Node: Subsection 9-2-3, Next: Subsection 9-2-4, Prev: Subsection 9-2-2, Up: Section 9-2 9.2.3 and =========== << $(and e1, ..., en) : String e1, ..., en: Sequence >> The `and' function evaluates to the conjunction of its arguments. For example, in the following code, `X' is true, and `Y' is false. << A = a B = b X = $(and $(equal $(A), a) true $(equal $(B), b)) Y = $(and $(equal $(A), a) true $(equal $(A), $(B))) >>  Node: Subsection 9-2-4, Next: Subsection 9-2-5, Prev: Subsection 9-2-3, Up: Section 9-2 9.2.4 or ========== << $(or e1, ..., en) : String e1, ..., en: String Sequence >> The `or' function evaluates to the disjunction of its arguments. For example, in the following code, `X' is true, and `Y' is false. << A = a B = b X = $(or $(equal $(A), a) false $(equal $(A), $(B))) Y = $(or $(equal $(A), $(B)) $(equal $(A), b)) >>  Node: Subsection 9-2-5, Next: Subsection 9-2-6, Prev: Subsection 9-2-4, Up: Section 9-2 9.2.5 if ========== \@na me{@default87} << $(if e1, e2[, e3]) : value e1 : String e2, e3 : value >> The `if' function represents a conditional based on a Boolean value. For example `$(if $(equal a, b), c, d)' evaluates to `d'. Conditionals may also be declared with an alternate syntax. << if e1 body1 elseif e2 body2 ... else bodyn >> If the expression `e1' is not false, then the expressions in `body1' are evaluated and the result is returned as the value of the conditional. Otherwise, if `e1' evaluates to false, the evaluation continues with the `e2' expression. If none of the conditional expressions is true, then the expressions in `bodyn' are evaluated and the result is returned as the value of the conditional. There can be any number of `elseif' clauses; the `else' clause is optional. Note that each branch of the conditional defines its own scope, so variables defined in the branches are normally not visible outside the conditional. The `export' command may be used to export the variables defined in a scope. For example, the following expression represents a common idiom for defining the C compiler configuration. << if $(equal $(OSTYPE), Win32) CC = cl CFLAGS += /DWIN32 export else CC = gcc CFLAGS += -g -O2 export >>  Node: Subsection 9-2-6, Next: Subsection 9-2-7, Prev: Subsection 9-2-5, Up: Section 9-2 9.2.6 switch, match ===================== The `switch' and `match' functions perform pattern matching. `$(switch , , , ..., , )' `$(match , , , ..., , )' The number of `/' pairs is arbitrary. They strictly alternate; the total number of arguments to `' must be odd. The `' is evaluated to a string, and compared with `'. If it matches, the result of the expression is `'. Otherwise evaluation continues with the remaining patterns until a match is found. If no pattern matches, the value is the empty string. The `switch' function uses string comparison to compare the argument with the patterns. For example, the following expression defines the `FILE' variable to be either `foo', `bar', or the empty string, depending on the value of the `OSTYPE' variable. << FILE = $(switch $(OSTYPE), Win32, foo, Unix, bar) >> The `match' function uses regular expression patterns (see the `grep' function). If a match is found, the variables `$1, $2, ...' are bound to the substrings matched between `\(' and `\)' delimiters. The `$0' variable contains the entire match, and `$*' is an array of the matched substrings. to the matched substrings. << FILE = $(match foo_xyz/bar.a, foo_\\\(.*\\\)/\\\(.*\\\)\.a, foo_$2/$1.o) >> The `switch' and `match' functions also have an alternate (more usable) form. << match e case pattern1 body1 case pattern2 body2 ... default bodyd >> If the value of expression `e' matches `pattern_i' and no previous pattern, then `body_i' is evaluated and returned as the result of the `match'. The `switch' function uses string comparison; the `match' function uses regular expression matching. << match $(FILE) case $".*\(\.[^\/.]*\)" println(The string $(FILE) has suffix $1) default println(The string $(FILE) has no suffix) >>  Node: Subsection 9-2-7, Next: Subsection 9-2-8, Prev: Subsection 9-2-6, Up: Section 9-2 9.2.7 try =========== << try try-body catch class1(v1) catch-body when expr when-body ... finally finally-body >> The `try' form is used for exception handling. First, the expressions in the `try-body' are evaluated. If evaluation results in a value `v' without raising an exception, then the expressions in the `finally-body' are evaluated and the value `v' is returned as the result. If evaluation of the `try-body' results in a exception object `obj', the `catch' clauses are examined in order. When examining `catch' clause `catch class(v)', if the exception object `obj' is an instance of the class name `class', the variable `v' is bound to the exception object, and the expressions in the `catch-body' are evaluated. If a `when' clause is encountered while a `catch' body is being evaluated, the predicate `expr' is evaluated. If the result is true, evaluation continues with the expressions in the `when-body'. Otherwise, the next `catch' clause is considered for evaluation. If evaluation of a `catch-body' or `when-body' completes successfully, returning a value `v', without encountering another `when' clause, then the expressions in the `finally-body' are evaluated and the value `v' is returned as the result. There can be any number of `catch' clauses; the `finally' clause is optional.  Node: Subsection 9-2-8, Next: Subsection 9-2-9, Prev: Subsection 9-2-7, Up: Section 9-2 9.2.8 raise ============= << raise exn exn : Exception >> The `raise' function raises an exception. The `exn' object can be any object. However, the normal convention is to raise an 'Exception' object. If the exception is never caught, the whole object will be verbosely printed in the error message. However, if the object is an `Exception' one and contains a `message' field, only that field will be included in the error message.  Node: Subsection 9-2-9, Next: Subsection 9-2-10, Prev: Subsection 9-2-8, Up: Section 9-2 9.2.9 exit ============ << exit(code) code : Int >> The `exit' function terminates omake abnormally. `$(exit )' The `exit' function takes one integer argument, which is exit code. Non-zero values indicate abnormal termination.  Node: Subsection 9-2-10, Next: Subsection 9-2-11, Prev: Subsection 9-2-9, Up: Section 9-2 9.2.10 defined ================ << $(defined sequence) : String sequence : Sequence >> The `defined' function test whether all the variables in the sequence are currently defined. For example, the following code defines the `X' variable if it is not already defined. << if $(not $(defined X)) X = a b c export >> It is acceptable to use qualified names. << $(defined X.a.b) $(defined public.X) >>  Node: Subsection 9-2-11, Next: Subsection 9-2-12, Prev: Subsection 9-2-10, Up: Section 9-2 9.2.11 defined-env ==================== << $(defined-env sequence) : String sequence : String >> The `defined-env' function tests whether a variable is defined as part of the process environment. For example, the following code adds the `-g' compile option if the environment variable `DEBUG' is defined. <>  Node: Subsection 9-2-12, Next: Subsection 9-2-13, Prev: Subsection 9-2-11, Up: Section 9-2 9.2.12 getenv =============== << $(getenv name) : String $(getenv name, default) : String >> The `getenv' function gets the value of a variable from the process environment. The function takes one or two arguments. In the single argument form, an exception is raised if the variable variable is not defined in the environment. In the two-argument form, the second argument is returned as the result if the value is not defined. For example, the following code defines the variable `X' to be a space-separated list of elements of the `PATH' environment variable if it is defined, and to `/bin /usr/bin' otherwise. << X = $(split $(PATHSEP), $(getenv PATH, /bin:/usr/bin)) >> You may also use the alternate form. << getenv(NAME) default >>  Node: Subsection 9-2-13, Next: Subsection 9-2-14, Prev: Subsection 9-2-12, Up: Section 9-2 9.2.13 setenv =============== << setenv(name, value) name : String value : String >> The `setenv' function sets the value of a variable in the process environment. Environment variables are scoped like normal variables.  Node: Subsection 9-2-14, Next: Subsection 9-2-15, Prev: Subsection 9-2-13, Up: Section 9-2 9.2.14 unsetenv ================= << unsetenv(names) names : String Array >> The `unsetenv' function removes some variable definitions from the process environment. Environment variables are scoped like normal variables.  Node: Subsection 9-2-15, Next: Subsection 9-2-16, Prev: Subsection 9-2-14, Up: Section 9-2 9.2.15 get-registry ===================== << get-registry(hkey, key, field) : String get-registry(hkey, key, field, default) : String hkey : String key : String field : String >> The `get-registry' function retrieves a string value from the system registry on Win32. On other architectures, there is no registry. The `hive' (I think that is the right word), indicates which part of the registry to use. It should be one of the following values. - `HKEY_CLASSES_ROOT' - `HKEY_CURRENT_CONFIG' - `HKEY_CURRENT_USER' - `HKEY_LOCAL_MACHINE' - `HKEY_USERS' Refer to the Microsoft documentation if you want to know what these mean. The `key' is the field you want to get from the registry. It should have a form like `A\B\C' (if you use forward slashes, they will be converted to backslashes). The field is the sub-field of the key. In the 4-argument form, the `default' is returned on failure. You may also use the alternate form. << get-registry(hkey, key, field) default >>  Node: Subsection 9-2-16, Next: Subsection 9-2-17, Prev: Subsection 9-2-15, Up: Section 9-2 9.2.16 getvar =============== << $(getvar name) : String >> The `getvar' function gets the value of a variable. An exception is raised if the variable variable is not defined. For example, the following code defines X to be the string abc. << NAME = foo foo_1 = abc X = $(getvar $(NAME)_1) >> It is acceptable to use qualified names. << $(getvar X.a.b) >>  Node: Subsection 9-2-17, Next: Section 9-3, Prev: Subsection 9-2-16, Up: Section 9-2 9.2.17 setvar =============== << setvar(name, value) name : String value : String >> The `setvar' function defines a new variable. For example, the following code defines the variable `X' to be the string `abc'. << NAME = X setvar($(NAME), abc) >> It is acceptable to use qualified names. << setvar(public.X, abc) >>  Node: Section 9-3, Next: Subsection 9-3-1, Prev: Section 9-2, Up: Chapter 9 9.3 Arrays and sequences *=*=*=*=*=*=*=*=*=*=*=*=*= * Menu: * Subsection 9-3-1:: array * Subsection 9-3-2:: split * Subsection 9-3-3:: concat * Subsection 9-3-4:: length * Subsection 9-3-5:: nth * Subsection 9-3-6:: replace-nth * Subsection 9-3-7:: nth-hd * Subsection 9-3-8:: nth-tl * Subsection 9-3-9:: subrange * Subsection 9-3-10:: rev * Subsection 9-3-11:: join * Subsection 9-3-12:: string * Subsection 9-3-13:: string-length * Subsection 9-3-14:: string-escaped, ocaml-escaped, html-escaped, html-pre-escaped, c-escaped, id-escaped * Subsection 9-3-15:: decode-uri, encode-uri * Subsection 9-3-16:: quote * Subsection 9-3-17:: quote-argv * Subsection 9-3-18:: html-string * Subsection 9-3-19:: addsuffix * Subsection 9-3-20:: mapsuffix * Subsection 9-3-21:: addsuffixes * Subsection 9-3-22:: removeprefix * Subsection 9-3-23:: removesuffix * Subsection 9-3-24:: replacesuffixes * Subsection 9-3-25:: addprefix * Subsection 9-3-26:: mapprefix * Subsection 9-3-27:: add-wrapper * Subsection 9-3-28:: set * Subsection 9-3-29:: mem * Subsection 9-3-30:: intersection * Subsection 9-3-31:: intersects * Subsection 9-3-32:: set-diff * Subsection 9-3-33:: filter * Subsection 9-3-34:: filter-out * Subsection 9-3-35:: capitalize * Subsection 9-3-36:: uncapitalize * Subsection 9-3-37:: uppercase * Subsection 9-3-38:: lowercase * Subsection 9-3-39:: system * Subsection 9-3-40:: shell * Subsection 9-3-41:: export * Subsection 9-3-42:: while * Subsection 9-3-43:: break * Subsection 9-3-44:: random, random-init  Node: Subsection 9-3-1, Next: Subsection 9-3-2, Prev: Section 9-3, Up: Section 9-3 9.3.1 array ============= << $(array elements) : Array elements : Sequence >> The `array' function creates an array from a sequence. If the `' is a string, the elements of the array are the whitespace-separated elements of the string, respecting quotes. In addition, array variables can be declared as follows. << A[] = ... >> In this case, the elements of the array are exactly `', ..., `', and whitespace is preserved literally.  Node: Subsection 9-3-2, Next: Subsection 9-3-3, Prev: Subsection 9-3-1, Up: Section 9-3 9.3.2 split ============= << $(split sep, elements) : Array sep : String elements : Sequence >> The `split' function takes two arguments, a string of separators, and a string argument. The result is an array of elements determined by splitting the elements by all occurrence of the separator in the `elements' sequence. For example, in the following code, the `X' variable is defined to be the array `/bin /usr/bin /usr/local/bin'. << PATH = /bin:/usr/bin:/usr/local/bin X = $(split :, $(PATH)) >> The `sep' argument may be omitted. In this case `split' breaks its arguments along the white space. Quotations are not split.  Node: Subsection 9-3-3, Next: Subsection 9-3-4, Prev: Subsection 9-3-2, Up: Section 9-3 9.3.3 concat ============== << $(concat sep, elements) : String sep : String elements : Sequence >> The `concat' function takes two arguments, a separator string, and a sequence of elements. The result is a string formed by concatenating the elements, placing the separator between adjacent elements. For example, in the following code, the `X' variable is defined to be the string `foo_x_bar_x_baz'. << X = foo bar baz Y = $(concat _x_, $(X)) >>  Node: Subsection 9-3-4, Next: Subsection 9-3-5, Prev: Subsection 9-3-3, Up: Section 9-3 9.3.4 length ============== << $(length sequence) : Int sequence : Sequence >> The `length' function returns the number of elements in its argument. For example, the expression `$(length a b "c d")' evaluates to 3.  Node: Subsection 9-3-5, Next: Subsection 9-3-6, Prev: Subsection 9-3-4, Up: Section 9-3 9.3.5 nth =========== << $(nth i, sequence) : value i : Int sequence : Sequence raises RuntimeException >> The `nth' function returns the nth element of its argument, treated as a list. Counting starts at 0. An exception is raised if the index is not in bounds. For example, the expression `$(nth 1, a "b c" d)' evaluates to `"b c"'.  Node: Subsection 9-3-6, Next: Subsection 9-3-7, Prev: Subsection 9-3-5, Up: Section 9-3 9.3.6 replace-nth =================== << $(replace-nth i, sequence, x) : value i : Int sequence : Sequence x : value raises RuntimeException >> The `replace-nth' function replaces the nth element of its argument with a new value `x'. Counting starts at 0. An exception is raised if the index is not in bounds. For example, the expression `$(replace-nth 1, a "b c" d, x)' evaluates to `a x d'.  Node: Subsection 9-3-7, Next: Subsection 9-3-8, Prev: Subsection 9-3-6, Up: Section 9-3 9.3.7 nth-hd ============== << $(nth-hd i, sequence) : value i : Int sequence : Sequence raises RuntimeException >> The `nth-hd' function returns the first `i' elements of the sequence. An exception is raised if the sequence is not at least `i' elements long. For example, the expression `$(nth-hd 2, a "b c" d)' evaluates to `a "b c"'.  Node: Subsection 9-3-8, Next: Subsection 9-3-9, Prev: Subsection 9-3-7, Up: Section 9-3 9.3.8 nth-tl ============== << $(nth-tl i, sequence) : value i : Int sequence : Sequence raises RuntimeException >> The `nth-tl' function skips `i' elements of the sequence and returns the rest. An exception is raised if the sequence is not at least `i' elements long. For example, the expression `$(nth-tl 1, a "b c" d)' evaluates to `"b c" d'.  Node: Subsection 9-3-9, Next: Subsection 9-3-10, Prev: Subsection 9-3-8, Up: Section 9-3 9.3.9 subrange ================ << $(subrange off, len, sequent) : value off : Int len : Int sequence : Sequence raises RuntimeException >> The `subrange' function returns a subrange of the sequence. Counting starts at 0. An exception is raised if the specified range is not in bounds. For example, the expression `$(subrange 1, 2, a "b c" d e)' evaluates to `"b c" d'.  Node: Subsection 9-3-10, Next: Subsection 9-3-11, Prev: Subsection 9-3-9, Up: Section 9-3 9.3.10 rev ============ << $(rev sequence) : Sequence sequence : Sequence >> The `rev' function returns the elements of a sequence in reverse order. For example, the expression `$(rev a "b c" d)' evaluates to `d "b c" a'.  Node: Subsection 9-3-11, Next: Subsection 9-3-12, Prev: Subsection 9-3-10, Up: Section 9-3 9.3.11 join ============= << $(join sequence1, sequence2) : Sequence sequence1 : Sequence sequence2 : Sequence >> The `join' function joins together the elements of the two sequences. For example, `$(join a b c, .c .cpp .h)' evaluates to `a.c b.cpp c.h'. If the two input sequences have different lengths, the remainder of the longer sequence is copied at the end of the output unmodified.  Node: Subsection 9-3-12, Next: Subsection 9-3-13, Prev: Subsection 9-3-11, Up: Section 9-3 9.3.12 string =============== << $(string sequence) : String sequence : Sequence >> The `string' function flattens a sequence into a single string. This is similar to the `concat' function, but the elements are separated by whitespace. The result is treated as a unit; whitespace is significant.  Node: Subsection 9-3-13, Next: Subsection 9-3-14, Prev: Subsection 9-3-12, Up: Section 9-3 9.3.13 string-length ====================== << $(string-length sequence) : Int sequence : Sequence >> The `string-lenght' returns a length (number of characters) in its argument. If the argument is a sequence, it flattens it, so `$(string-length sequence)' is equivalent to `$(string-length $(string sequence))'.  Node: Subsection 9-3-14, Next: Subsection 9-3-15, Prev: Subsection 9-3-13, Up: Section 9-3 9.3.14 string-escaped, ocaml-escaped, html-escaped, html-pre-escaped, ======================================================================= c-escaped, id-escaped ===================== << $(string-escaped sequence) : String Array $(ocaml-escaped sequence) : String Array $(html-escaped sequence) : String Array $(html-pre-escaped sequence) : String Array $(c-escaped sequence) : String Array $(hex-escaped sequence) : StringArray sequence : Array >> The `string-escaped' function converts each element of its argument to a string, escaping it, if it contains symbols that are special to OMake. The special characters include `:()\,$'"#' and whitespace. This function can be used in scanner rules to escape file names before printing then to `stdout'. The `ocaml-escaped' function converts each element of its argument to a string, escaping characters that are special to OCaml. The `c-escaped' function converts a string to a form that can be used as a string constant in C. The `id-escaped' function turns a string into an identifier that may be used in OMake. The `html-escaped' function turns a literal string into a form acceptable as HTML. The `html-pre-escaped' function is similar, but it does not translate newlines into `
'. << println($(string $(string-escaped $"a b" $"y:z"))) a\ b y\:z >>  Node: Subsection 9-3-15, Next: Subsection 9-3-16, Prev: Subsection 9-3-14, Up: Section 9-3 9.3.15 decode-uri, encode-uri =============================== << $(decode-uri sequence) : sequence sequence : Sequence >> These two functions perform URI encoding, where special characters are represented by hexadecimal characters. << osh> s = $(encode-uri $'a b~c') "a+b%7ec" osh> decode-uri($s) "a b~c" >>  Node: Subsection 9-3-16, Next: Subsection 9-3-17, Prev: Subsection 9-3-15, Up: Section 9-3 9.3.16 quote ============== << $(quote sequence) : String sequence : Sequence >> The `quote' function flattens a sequence into a single string and adds quotes around the string. Inner quotation symbols are escaped. For example, the expression `$(quote a "b c" d)' evaluates to `"a \"b c\" d"', and `$(quote abc)' evaluates to `"abc"'.  Node: Subsection 9-3-17, Next: Subsection 9-3-18, Prev: Subsection 9-3-16, Up: Section 9-3 9.3.17 quote-argv =================== << $(quote-argv sequence) : String sequence : Sequence >> The `quote-argv' function flattens a sequence into a single string, and adds quotes around the string. The quotation is formed so that a command-line parse can separate the string back into its components.  Node: Subsection 9-3-18, Next: Subsection 9-3-19, Prev: Subsection 9-3-17, Up: Section 9-3 9.3.18 html-string ==================== << $(html-string sequence) : String sequence : Sequence >> The `html-string' function flattens a sequence into a single string, and escaped special HTML characters. This is similar to the `concat' function, but the elements are separated by whitespace. The result is treated as a unit; whitespace is significant.  Node: Subsection 9-3-19, Next: Subsection 9-3-20, Prev: Subsection 9-3-18, Up: Section 9-3 9.3.19 addsuffix ================== << $(addsuffix suffix, sequence) : Array suffix : String sequence : Sequence >> The `addsuffix' function adds a suffix to each component of sequence. The number of elements in the array is exactly the same as the number of elements in the sequence. For example, `$(addsuffix .c, a b "c d")' evaluates to `a.c b.c "c d".c'.  Node: Subsection 9-3-20, Next: Subsection 9-3-21, Prev: Subsection 9-3-19, Up: Section 9-3 9.3.20 mapsuffix ================== << $(mapsuffix suffix, sequence) : Array suffix : value sequence : Sequence >> The `mapsuffix' function adds a suffix to each component of sequence. It is similar to `addsuffix', but uses array concatenation instead of string concatenation. The number of elements in the array is twice the number of elements in the sequence. For example, `$(mapsuffix .c, a b "c d")' evaluates to `a .c b .c "c d" .c'.  Node: Subsection 9-3-21, Next: Subsection 9-3-22, Prev: Subsection 9-3-20, Up: Section 9-3 9.3.21 addsuffixes ==================== << $(addsuffixes suffixes, sequence) : Array suffixes : Sequence sequence : Sequence >> The `addsuffixes' function adds all suffixes in its first argument to each component of a sequence. If `suffixes' has `n' elements, and `sequence' has `m' elements, the the result has `n * m' elements. For example, the `$(addsuffixes .c .o, a b c)' expressions evaluates to `a.c a.o b.c b.o c.o c.a'.  Node: Subsection 9-3-22, Next: Subsection 9-3-23, Prev: Subsection 9-3-21, Up: Section 9-3 9.3.22 removeprefix ===================== << $(removeprefix prefix, sequence) : Array prefix : String sequence : Array >> The `removeprefix' function removes a prefix from each component of a sequence.  Node: Subsection 9-3-23, Next: Subsection 9-3-24, Prev: Subsection 9-3-22, Up: Section 9-3 9.3.23 removesuffix ===================== << $(removesuffix sequence) : Array sequence : String >> The `removesuffix' function removes the suffixes from each component of a sequence. For example, `$(removesuffix a.c b.foo "c d")' expands to `a b "c d"'.  Node: Subsection 9-3-24, Next: Subsection 9-3-25, Prev: Subsection 9-3-23, Up: Section 9-3 9.3.24 replacesuffixes ======================== << $(replacesuffixes old-suffixes, new-suffixes, sequence) : Array old-suffixes : Sequence new-suffixes : Sequence sequence : Sequence >> The `replacesuffixes' function modifies the suffix of each component in sequence. The `old-suffixes' and `new-suffixes' sequences should have the same length. For example, `$(replacesuffixes .h .c, .o .o, a.c b.h c.z)' expands to `a.o b.o c.z'.  Node: Subsection 9-3-25, Next: Subsection 9-3-26, Prev: Subsection 9-3-24, Up: Section 9-3 9.3.25 addprefix ================== << $(addprefix prefix, sequence) : Array prefix : String sequence : Sequence >> The `addprefix' function adds a prefix to each component of a sequence. The number of element in the result array is exactly the same as the number of elements in the argument sequence. For example, `$(addprefix foo/, a b "c d")' evaluates to `foo/a foo/b foo/"c d"'.  Node: Subsection 9-3-26, Next: Subsection 9-3-27, Prev: Subsection 9-3-25, Up: Section 9-3 9.3.26 mapprefix ================== << $(mapprefix prefix, sequence) : Array prefix : String sequence : Sequence >> The `mapprefix' function adds a prefix to each component of a sequence. It is similar to `addprefix', but array concatenation is used instead of string concatenation. The result array contains twice as many elements as the argument sequence. For example, `$(mapprefix foo, a b "c d")' expands to `foo a foo b foo "c d"'.  Node: Subsection 9-3-27, Next: Subsection 9-3-28, Prev: Subsection 9-3-26, Up: Section 9-3 9.3.27 add-wrapper ==================== << $(add-wrapper prefix, suffix, sequence) : Array prefix : String suffix : String sequence : Sequence >> The `add-wrapper' functions adds both a prefix and a suffix to each component of a sequence. For example, the expression `$(add-wrapper dir/, .c, a b)' evaluates to `dir/a.c dir/b.c'. String concatenation is used. The array result has the same number of elements as the argument sequence.  Node: Subsection 9-3-28, Next: Subsection 9-3-29, Prev: Subsection 9-3-27, Up: Section 9-3 9.3.28 set ============ << $(set sequence) : Array sequence : Sequence >> The `set' function sorts a set of string components, eliminating duplicates. For example, `$(set z y z "m n" w a)' expands to `"m n" a w y z'.  Node: Subsection 9-3-29, Next: Subsection 9-3-30, Prev: Subsection 9-3-28, Up: Section 9-3 9.3.29 mem ============ << $(mem elem, sequence) : Boolean elem : String sequence : Sequence >> The `mem' function tests for membership in a sequence. For example, `$(mem "m n", y z "m n" w a)' evaluates to `true', while `$(mem m n, y z "m n" w a)' evaluates to `false'.  Node: Subsection 9-3-30, Next: Subsection 9-3-31, Prev: Subsection 9-3-29, Up: Section 9-3 9.3.30 intersection ===================== << $(intersection sequence1, sequence2) : Array sequence1 : Sequence sequence2 : Sequence >> The `intersection' function takes two arguments, treats them as sets of strings, and computes their intersection. The order of the result is undefined, and it may contain duplicates. Use the `set' function to sort the result and eliminate duplicates in the result if desired. For example, the expression `$(intersection c a b a, b a)' evaluates to `a b a'.  Node: Subsection 9-3-31, Next: Subsection 9-3-32, Prev: Subsection 9-3-30, Up: Section 9-3 9.3.31 intersects =================== << $(intersects sequence1, sequence2) : Boolean sequence1 : Sequence sequence2 : Sequence >> The `intersects' function tests whether two sets have a non-empty intersection. This is slightly more efficient than computing the intersection and testing whether it is empty. For example, the expression `$(intersects a b c, d c e)' evaluates to `true', and `$(intersects a b c a, d e f)' evaluates to `false'.  Node: Subsection 9-3-32, Next: Subsection 9-3-33, Prev: Subsection 9-3-31, Up: Section 9-3 9.3.32 set-diff ================= << $(set-diff sequence1, sequence2) : Array sequence1 : Sequence sequence2 : Sequence >> The `set-diff' function takes two arguments, treats them as sets of strings, and computes their difference (all the elements of the first set that are not present in the second one). The order of the result is undefined and it may contain duplicates. Use the `set' function to sort the result and eliminate duplicates in the result if desired. For example, the expression `$(set-diff c a b a e, b a)' evaluates to `c e'.  Node: Subsection 9-3-33, Next: Subsection 9-3-34, Prev: Subsection 9-3-32, Up: Section 9-3 9.3.33 filter =============== << $(filter patterns, sequence) : Array patterns : Sequence sequence : Sequence >> The `filter' function picks elements from a sequence. The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard `%' character. For example `$(filter %.h %.o, a.c x.o b.h y.o "hello world".c)' evaluates to `x.o b.h y.o'.  Node: Subsection 9-3-34, Next: Subsection 9-3-35, Prev: Subsection 9-3-33, Up: Section 9-3 9.3.34 filter-out =================== << $(filter-out patterns, sequence) : Array patterns : Sequence sequence : Sequence >> The `filter-out' function removes elements from a sequence. The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard `%' character. For example `$(filter-out %.c %.h, a.c x.o b.h y.o "hello world".c)' evaluates to `x.o y.o'.  Node: Subsection 9-3-35, Next: Subsection 9-3-36, Prev: Subsection 9-3-34, Up: Section 9-3 9.3.35 capitalize =================== << $(capitalize sequence) : Array sequence : Sequence >> The `capitalize' function capitalizes each word in a sequence. For example, `$(capitalize through the looking Glass)' evaluates to `Through The Looking Glass'.  Node: Subsection 9-3-36, Next: Subsection 9-3-37, Prev: Subsection 9-3-35, Up: Section 9-3 9.3.36 uncapitalize ===================== << $(uncapitalize sequence) : Array sequence : Sequence >> The `uncapitalize' function uncapitalizes each word in its argument. For example, `$(uncapitalize through the looking Glass)' evaluates to `through the looking glass'.  Node: Subsection 9-3-37, Next: Subsection 9-3-38, Prev: Subsection 9-3-36, Up: Section 9-3 9.3.37 uppercase ================== << $(uppercase sequence) : Array sequence : Sequence >> The `uppercase' function converts each word in a sequence to uppercase. For example, `$(uppercase through the looking Glass)' evaluates to `THROUGH THE LOOKING GLASS'.  Node: Subsection 9-3-38, Next: Subsection 9-3-39, Prev: Subsection 9-3-37, Up: Section 9-3 9.3.38 lowercase ================== << $(lowercase sequence) : Array sequence : Sequence >> The `lowercase' function reduces each word in its argument to lowercase. For example, `$(lowercase through tHe looking Glass)' evaluates to `through the looking glass'.  Node: Subsection 9-3-39, Next: Subsection 9-3-40, Prev: Subsection 9-3-38, Up: Section 9-3 9.3.39 system =============== << system(s) s : Sequence >> The `system' function is used to evaluate a shell expression. This function is used internally by omake to evaluate shell commands. For example, the following program is equivalent to the expression `system(ls foo)'. << ls foo >>  Node: Subsection 9-3-40, Next: Subsection 9-3-41, Prev: Subsection 9-3-39, Up: Section 9-3 9.3.40 shell ============== << $(shell command) : Array $(shella command) : Array $(shell-code command) : Int command : Sequence >> The `shell' function evaluates a command using the command shell, and returns the whitespace-separated words of the standard output as the result. The `shella' function acts similarly, but it returns the lines as separate items in the array. The `shell-code' function returns the exit code. The output is not diverted. For example, if the current directory contains the files `OMakeroot', `OMakefile', and `hello.c', then `$(shell ls)' evaluates to `hello.c OMakefile OMakeroot' (on a Unix system).  Node: Subsection 9-3-41, Next: Subsection 9-3-42, Prev: Subsection 9-3-40, Up: Section 9-3 9.3.41 export =============== The `export' function allows one to capture the current environment in a variable. For example, the following code: <> will print `1 1 2'. The arguments to this function are interpreted the exact same way as the arguments to the `export' special form (see Section 6.3*Note Section 6-3::).  Node: Subsection 9-3-42, Next: Subsection 9-3-43, Prev: Subsection 9-3-41, Up: Section 9-3 9.3.42 while ============== << while >> --or-- << while case ... case default >> The loop is executed while the test is true. In the first form, the `' is executed on every loop iteration. In the second form, the body `' is selected, as the first case where the test `' is true. If none apply, the optional default case is evaluated. If no cases are true, the loop exits. The environment is automatically exported. Examples. Iterate for `i' from `0' to `9'. << i = 0 while $(lt $i, 10) echo $i i = $(add $i, 1) >> The following example is equivalent. << i = 0 while true case $(lt $i, 10) echo $i i = $(add $i, 1) >> The following example is similar, but some special cases are printed. value is printed. << i = 0 while $(lt $i, 10) case $(equal $i, 0) echo zero case $(equal $i, 1) echo one default echo $i >> The 'break' function can be used to break out of the `while' loop early.  Node: Subsection 9-3-43, Next: Subsection 9-3-44, Prev: Subsection 9-3-42, Up: Section 9-3 9.3.43 break ============== << break >> Terminate execution of the innermost loop, returning the current state.  Node: Subsection 9-3-44, Next: Section 9-4, Prev: Subsection 9-3-43, Up: Section 9-3 9.3.44 random, random-init ============================ << random-init(i) i : Int random() : Int >> Produce a random number. The numbers are pseudo-random, and are not cryptographically secure. The generator is initialized form semi-random system data. Subsequent runs should produce different results. The `rando-init' function can be used to return the generator to a known state.  Node: Section 9-4, Next: Subsection 9-4-1, Prev: Section 9-3, Up: Chapter 9 9.4 Arithmetic *=*=*=*=*=*=*=*= * Menu: * Subsection 9-4-1:: int * Subsection 9-4-2:: float * Subsection 9-4-3:: Basic arithmetic * Subsection 9-4-4:: Comparisons  Node: Subsection 9-4-1, Next: Subsection 9-4-2, Prev: Section 9-4, Up: Section 9-4 9.4.1 int =========== The `int' function can be used to create integers. It returns an `Int' object. `$(int 17)'.  Node: Subsection 9-4-2, Next: Subsection 9-4-3, Prev: Subsection 9-4-1, Up: Section 9-4 9.4.2 float ============= The `float' function can be used to create floating-point numbers. It returns a `Float' object. `$(float 3.1415926)'.  Node: Subsection 9-4-3, Next: Subsection 9-4-4, Prev: Subsection 9-4-2, Up: Section 9-4 9.4.3 Basic arithmetic ======================== The following functions can be used to perform basic arithmetic. - `$(neg )': arithmetic inverse - `$(add )': addition. - `$(sub )': subtraction. - `$(mul )': multiplication. - `$(div )': division. - `$(mod )': remainder. - `$(lnot )': bitwise inverse. - `$(land )': bitwise and. - `$(lor )': bitwise or. - `$(lxor )': bitwise exclusive-or. - `$(lsl )': logical shift left. - `$(lsr )': logical shift right. - `$(asr )': arithmetic shift right. - `$(min )': smallest element. - `$(max )': largest element.  Node: Subsection 9-4-4, Next: Section 9-5, Prev: Subsection 9-4-3, Up: Section 9-4 9.4.4 Comparisons =================== The following functions can be used to perform numerical comparisons. - `$(lt )': less then. - `$(le )': no more than. - `$(eq )': equal. - `$(ge )': no less than. - `$(gt )': greater than. - `$(ult )': unsigned less than. - `$(ule )': unsigned greater than. - `$(uge )': unsigned greater than or equal. - `$(ugt )': unsigned greater than.  Node: Section 9-5, Next: Subsection 9-5-1, Prev: Section 9-4, Up: Chapter 9 9.5 First-class functions *=*=*=*=*=*=*=*=*=*=*=*=*=* * Menu: * Subsection 9-5-1:: fun * Subsection 9-5-2:: apply * Subsection 9-5-3:: applya * Subsection 9-5-4:: create-map, create-lazy-map  Node: Subsection 9-5-1, Next: Subsection 9-5-2, Prev: Section 9-5, Up: Section 9-5 9.5.1 fun =========== The `fun' form introduces anonymous functions. `$(fun , ..., , )' The last argument is the body of the function. The other arguments are the parameter names. The three following definitions are equivalent. << F(X, Y) = return($(addsuffix $(Y), $(X))) F = $(fun X, Y, $(addsuffix $(Y), $(X))) F = fun(X, Y) value $(addsuffix $(Y), $(X)) >>  Node: Subsection 9-5-2, Next: Subsection 9-5-3, Prev: Subsection 9-5-1, Up: Section 9-5 9.5.2 apply ============= The `apply' operator is used to apply a function. `$(apply , )' Suppose we have the following function definition. << F(X, Y) = return($(addsuffix $(Y), $(X))) >> The the two expressions below are equivalent. << X = F(a b c, .c) X = $(apply $(F), a b c, .c) >>  Node: Subsection 9-5-3, Next: Subsection 9-5-4, Prev: Subsection 9-5-2, Up: Section 9-5 9.5.3 applya ============== The `applya' operator is used to apply a function to an array of arguments. `$(applya , )' For example, in the following program, the value of `Z' is `file.c'. << F(X, Y) = return($(addsuffix $(Y), $(X))) args[] = file .c Z = $(applya $(F), $(args)) >> omake-0.9.8.5/doc/info/omake-doc.info-30000664000152300015230000014202210655737107015523 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Subsection 6-3-1, Next: Subsection 6-3-2, Prev: Section 6-3, Up: Section 6-3 6.3.1 Export regions ====================== This feature was introduced in version 0.9.8.5. The `export' directive does not need to occur at the end of a block. An export is valid from the point where it is specified to the end of the block in which it is contained. In other words, the export is used in the program that follows it. This can be especially useful for reducing the amount of code you have to write. In the following example, the variable `CFLAGS' is exported from the both branches of the conditional. << export CFLAGS if $(equal $(OSTYPE), Win32) CFLAGS += /DWIN32 else CFLAGS += -UWIN32 >>  Node: Subsection 6-3-2, Next: Section 6-4, Prev: Subsection 6-3-1, Up: Section 6-3 6.3.2 Returning values from exported regions ============================================== This feature was introduced in version 0.9.8.5. The use of export does not affect the value returned by a block. The value is computed as usual, as the value of the last statement in the block, ignoring the export. For example, suppose we wish to implement a table that maps strings to unique integers. Consider the following program. << # Empty map table = $(Map) # Add an entry to the table intern(s) = export if $(table.mem $s) table.find($s) else private.i = $(table.length) table = $(table.add $s, $i) value $i intern(foo) intern(boo) intern(moo) # Prints "boo = 1" println($"boo = $(intern boo)") >> Given a string `s', the function `intern' returns either the value already associated with `s', or assigns a new value. In the latter case, the table is updated with the new value. The `export' at the beginning of the function means that the variable `table' is to be exported. The bindings for `s' and `i' are not exported, because they are private. Evaluation in omake is eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined. << osh> A = 1 - : "1" osh> A = $(A)$(A) - : "11" >> In the second definition, `A = $(A)$(A)', the right-hand-side is evaluated first, producing the sequence `11'. Then the variable `A' is redefined as the new value. When combined with dynamic scoping, this has many of the same properties as conventional imperative programming. << osh> A = 1 - : "1" osh> printA() = println($"A = $A") osh> A = $(A)$(A) - : "11" osh> printA() 11 >> In this example, the print function is defined in the scope of `A'. When it is called on the last line, the dynamic value of `A' is `11', which is what is printed. However, dynamic scoping and imperative programming should not be confused. The following example illustrates a difference. The second `printA' is not in the scope of the definition `A = x$(A)$(A)x', so it prints the original value, `1'. << osh> A = 1 - : "1" osh> printA() = println($"A = $A") osh> section A = x$(A)$(A)x printA() x11x osh> printA() 1 >> See also Section 7.5*Note Section 7-5:: for further ways to control the evaluation order through the use of "lazy" expressions.  Node: Section 6-4, Next: Section 6-5, Prev: Section 6-3, Up: Chapter 6 6.4 Objects *=*=*=*=*=*=* omake is an object-oriented language. Everything is an object, including base values like numbers and strings. In many projects, this may not be so apparent because most evaluation occurs in the default toplevel object, the `Pervasives' object, and few other objects are ever defined. However, objects provide additional means for data structuring, and in some cases judicious use of objects may simplify your project. Objects are defined with the following syntax. This defines `name' to be an object with several methods an values. << name. = # += may be used as well extends parent-object # optional class class-name # optional # Fields X = value Y = value # Methods f(args) = body g(arg) = body >> An `extends' directive specifies that this object inherits from the specified `parent-object'. The object may have any number of `extends' directives. If there is more than on `extends' directive, then fields and methods are inherited from all parent objects. If there are name conflicts, the later definitions override the earlier definitions. The `class' directive is optional. If specified, it defines a name for the object that can be used in `instanceof' operations, as well as `::' scoping directives discussed below. The body of the object is actually an arbitrary program. The variables defined in the body of the object become its fields, and the functions defined in the body become its methods.  Node: Section 6-5, Next: Section 6-6, Prev: Section 6-4, Up: Chapter 6 6.5 Field and method calls *=*=*=*=*=*=*=*=*=*=*=*=*=*= The fields and methods of an object are named using `object.name' notation. For example, let's define a one-dimensional point value. << Point. = class Point # Default value x = $(int 0) # Create a new point new(x) = x = $(int $(x)) return $(this) # Move by one move() = x = $(add $(x), 1) return $(this) osh> p1 = $(Point.new 15) osh> value $(p1.x) - : 15 : Int osh> p2 = $(p1.move) osh> value $(p2.x) - : 16 : Int >> The `$(this)' variable always represents the current object. The expression `$(p1.x)' fetches the value of the `x' field in the `p1' object. The expression `$(Point.new 15)' represents a method call to the `new' method of the `Point' object, which returns a new object with 15 as its initial value. The expression `$(p1.move)' is also a method call, which returns a new object at position 16. Note that objects are functional --- it is not possible to modify the fields or methods of an existing object in place. Thus, the `new' and `move' methods return new objects.  Node: Section 6-6, Next: Section 6-7, Prev: Section 6-5, Up: Chapter 6 6.6 Method override *=*=*=*=*=*=*=*=*=*=* Suppose we wish to create a new object that moves by 2 units, instead of just 1. We can do it by overriding the `move' method. << Point2. = extends $(Point) # Override the move method move() = x = $(add $(x), 2) return $(this) osh> p2 = $(Point2.new 15) osh> p3 = $(p2.move) osh> value $(p3.x) - : 17 : Int >> However, by doing this, we have completely replaced the old `move' method.  Node: Section 6-7, Next: Chapter 7, Prev: Section 6-6, Up: Chapter 6 6.7 Super calls *=*=*=*=*=*=*=*=* Suppose we wish to define a new `move' method that just calls the old one twice. We can refer to the old definition of move using a super call, which uses the notation `$(classname::name )'. The `classname' should be the name of the superclass, and `name' the field or method to be referenced. An alternative way of defining the `Point2' object is then as follows. << Point2. = extends $(Point) # Call the old method twice move() = this = $(Point::move) return $(Point::move) >> Note that the first call to `$(Point::move)' redefines the current object (the `this' variable). This is because the method returns a new object, which is re-used for the second call.  Node: Chapter 7, Next: Section 7-1, Prev: Chapter 6, Up: Top Chapter 7 Additional language examples ****************************************** In this section, we'll explore the core language through a series of examples (examples of the build system are the topic of the Chapter 3*Note Chapter 3::). For most of these examples, we'll use the `osh' command interpreter. For simplicity, the values printed by `osh' have been abbreviated. * Menu: * Section 7-1:: Strings and arrays * Section 7-2:: Quoted strings * Section 7-3:: Files and directories * Section 7-4:: Iteration, mapping, and foreach * Section 7-5:: Lazy expressions * Section 7-6:: Scoping and exports * Section 7-7:: Shell aliases * Section 7-8:: Input/output redirection on the cheap  Node: Section 7-1, Next: Section 7-2, Prev: Chapter 7, Up: Chapter 7 7.1 Strings and arrays *=*=*=*=*=*=*=*=*=*=*=*= The basic OMake values are strings, sequences, and arrays of values. Sequences are like arrays of values separated by whitespace; the sequences are split on demand by functions that expect arrays. << osh> X = 1 2 - : "1 2" : Sequence osh> addsuffix(.c, $X) - : : Array >> Sometimes you want to define an array explicitly. For this, use the `[]' brackets after the variable name, and list each array entry on a single indented line. << osh> A[] = Hello world $(getenv HOME) - : : Array >> One central property of arrays is that whitespace in the elements is significant. This can be useful, especially for filenames that contain whitespace. << # List the current files in the directory osh> ls -Q "fee" "fi" "foo" "fum" osh> NAME[] = Hello world - : : Array osh> touch $(NAME) osh> ls -Q "fee" "fi" "foo" "fum" "Hello world" >>  Node: Section 7-2, Next: Section 7-3, Prev: Section 7-1, Up: Chapter 7 7.2 Quoted strings *=*=*=*=*=*=*=*=*=*= A `String' is a single value; whitespace is significant in a string. Strings are introduced with quotes. There are four kinds of quoted elements; the kind is determined by the opening quote. The symbols `'' (single-quote) and `"' (double-quote) introduce the normal shell-style quoted elements. The quotation symbols are included in the result string. Variables are always expanded within a quote of this kind. Note that the osh(1) (Chapter 15*Note Chapter 15::) printer escapes double-quotes within the string; these are only for printing, they are not part of the string itself. << osh> A = 'Hello "world"' - : "'Hello \"world\"'" : String osh> B = "$(A)" - : "\"'Hello \"world\"'\"" : String osh> C = 'Hello \'world\'' - : "'Hello 'world''" : String >> A second kind of quote is introduced with the `$'' and `$"' quotes. The number of opening and closing quote symbols is arbitrary. These quotations have several properties: - The quote delimiters are not part of the string. - Backslash `\' symbols within the string are treated as normal characters. - The strings may span several lines. - Variables are expanded within `$"' sequences, but not within `$'' sequences. << osh> A = $'''Here $(IS) an '''' \(example\) string[''' - : "Here $(IS) an '''' \\(example\\) string[" : String osh> B = $""""A is "$(A)" """" - : "A is \"Here $(IS) an '''' \\(example\\) string[\" " : String osh> value $(A.length) - : 38 : Int osh> value $(A.nth 5) - : "$" : String osh> value $(A.rev) - : "[gnirts )\\elpmaxe(\\ '''' na )SI($ ereH" : String >> Strings and sequences both have the property that they can be merged with adjacent non-whitespace text. << osh> A = a b c - : "a b c" : Sequence osh> B = $(A).c - : : Sequence osh> value $(nth 2, $(B)) - : "c.c" : String osh> value $(length $(B)) - : 3 : Int >> Arrays are different. The elements of an array are never merged with adjacent text of any kind. Arrays are defined by adding square brackets `[]' after a variable name and defining the elements with an indented body. The elements may include whitespace. << osh> A[] = a b foo bar - : : Array osh> echo $(A).c a b foo bar .c osh> value $(A.length) - : 2 : Int osh> value $(A.nth 1) - : "foo bar" : Sequence >> Arrays are quite helpful on systems where filenames often contain whitespace. << osh> FILES[] = c:\Documents and Settings\jyh\one file c:\Program Files\omake\second file osh> CFILES = $(addsuffix .c, $(FILES)) osh> echo $(CFILES) c:\Documents and Settings\jyh\one file.c c:\Program Files\omake\second file.c >>  Node: Section 7-3, Next: Section 7-4, Prev: Section 7-2, Up: Chapter 7 7.3 Files and directories *=*=*=*=*=*=*=*=*=*=*=*=*=* OMake projects usually span multiple directories, and different parts of the project execute commands in different directories. There is a need to define a location-independent name for a file or directory. This is done with the `$(file )' and `$(dir )' functions. << osh> mkdir tmp osh> F = $(file fee) osh> section: cd tmp echo $F ../fee osh> echo $F fee >> Note the use of a `section:' to limit the scope of the `cd' command. The section temporarily changes to the `tmp' directory where the name of the file is `../fee'. Once the section completes, we are still in the current directory, where the name of the file is `fee'. One common way to use the file functions is to define proper file names in your project `OMakefile', so that references within the various parts of the project will refer to the same file. << osh> cat OMakefile ROOT = $(dir .) TMP = $(dir tmp) BIN = $(dir bin) ... >>  Node: Section 7-4, Next: Section 7-5, Prev: Section 7-3, Up: Chapter 7 7.4 Iteration, mapping, and foreach *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Most builtin functions operate transparently on arrays. << osh> addprefix(-D, DEBUG WIN32) - : -DDEBUG -DWIN32 : Array osh> mapprefix(-I, /etc /tmp) - : -I /etc -I /tmp : Array osh> uppercase(fee fi foo fum) - : FEE FI FOO FUM : Array >> The `mapprefix' and `addprefix' functions are slightly different (the `addsuffix' and `mapsuffix' functions are similar). The `addprefix' adds the prefex to each array element. The `mapprefix' doubles the length of the array, adding the prefix as a new array element before each of the original elements. Even though most functions work on arrays, there are times when you will want to do it yourself. The `foreach' function is the way to go. The `foreach' function has two forms, but the form with a body is most useful. In this form, the function takes two arguments and a body. The second argument is an array, and the first is a variable. The body is evaluated once for each element of the array, where the variable is bound to the element. Let's define a function to add 1 to each element of an array of numbers. << osh> add1(l) = foreach(i, $l): add($i, 1) osh> add1(7 21 75) - : 8 22 76 : Array >> Sometimes you have an array of filenames, and you want to define a rule for each of them. Rules are not special, you can define them anywhere a statement is expected. Say we want to write a function that describes how to process each file, placing the result in the `tmp/' directory. << TMP = $(dir tmp) my-special-rule(files) = foreach(name, $(files)) $(TMP)/$(name): $(name) process $< > $@ >> Later, in some other part of the project, we may decide that we want to use this function to process some files. << # These are the files to process in src/lib MY_SPECIAL_FILES[] = fee.src fi.src file with spaces in its name.src my-special-rule($(MY_SPECIAL_FILES)) >> The result of calling `my-special-rule' is exactly the same as if we had written the following three rules explicitly. << $(TMP)/fee.src: fee.src process fee > $@ $(TMP)/fi.src: fi.src process fi.src > $@ $(TMP)/$"file with spaces in its name.src": $"file with spaces in its name.src" process $< > $@ >> Of course, writing these rules is not nearly as pleasant as calling the function. The usual properties of function abstraction give us the usual benefits. The code is less redundant, and there is a single location (the `my-special-rule' function) that defines the build rule. Later, if we want to modify/update the rule, we need do so in only one location.  Node: Section 7-5, Next: Subsection 7-5-1, Prev: Section 7-4, Up: Chapter 7 7.5 Lazy expressions *=*=*=*=*=*=*=*=*=*=*= Evaluation in omake is normally eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined. There are two ways to control this behavior. The `$`(v)' form introduces lazy behavior, and the `$,(v)' form restores eager behavior. Consider the following sequence. << osh> A = 1 - : "1" : Sequence osh> B = 2 - : "2" : Sequence osh> C = $`(add $(A), $,(B)) - : $(apply add $(apply A) "2" : Sequence) osh> println(C = $(C)) C = 3 osh> A = 5 - : "5" : Sequence osh> B = 6 - : "6" : Sequence osh> println(C = $(C)) C = 7 >> The definition `C = $`(add $(A), $,(B))' defines a lazy application. The `add' function is not applied in this case until its value is needed. Within this expression, the value `$,(B)' specifies that `B' is to be evaluated immediately, even though it is defined in a lazy expression. The first time that we print the value of `C', it evaluates to 3 since `A' is 1 and `B' is 2. The second time we evaluate `C', it evaluates to 7 because `A' has been redefined to `5'. The second definition of `B' has no effect, since it was evaluated at definition time. * Menu: * Subsection 7-5-1:: A larger example of lazy expressions  Node: Subsection 7-5-1, Next: Section 7-6, Prev: Section 7-5, Up: Section 7-5 7.5.1 A larger example of lazy expressions ============================================ Lazy expressions are not evaluated until their result is needed. Some people, including this author, frown on overuse of lazy expressions, mainly because it is difficult to know when evaluation actually happens. However, there are cases where they pay off. One example comes from option processing. Consider the specification of "include" directories on the command line for a C compiler. If we want to include files from /home/jyh/include and ../foo, we specify it on the command line with the options `-I/home/jyh/include -I../foo'. Suppose we want to define a generic rule for building C files. We could define a `INCLUDES' array to specify the directories to be included, and then define a generic implicit rule in our root OMakefile. << # Generic way to compile C files. CFLAGS = -g INCLUDES[] = %.o: %.c $(CC) $(CFLAGS) $(INCLUDES) -c $< # The src directory builds my_widget+ from 4 source files. # It reads include files from the include directory. .SUBDIRS: src FILES = fee fi foo fum OFILES = $(addsuffix .o, $(FILES)) INCLUDES[] += -I../include my_widget: $(OFILES) $(CC) $(CFLAGS) -o $@ $(OFILES) >> But this is not quite right. The problem is that INCLUDES is an array of options, not directories. If we later wanted to recover the directories, we would have to strip the leading `-I' prefix, which is a hassle. Furthermore, we aren't using proper names for the directories. The solution here is to use a lazy expression. We'll define INCLUDES as a directory array, and a new variable `PREFIXED_INCLUDES' that adds the -I prefix. The `PREFIXED_INCLUDES' is computed lazily, ensuring that the value uses the most recent value of the INCLUDES variable. << # Generic way to compile C files. CFLAGS = -g INCLUDES[] = PREFIXED_INCLUDES[] = $`(addprefix -I, $(INCLUDES)) %.o: %.c $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) -c $< # For this example, we define a proper name for the include directory STDINCLUDE = $(dir include) # The src directory builds my_widget+ from 4 source files. # It reads include files from the include directory. .SUBDIRS: src FILES = fee fi foo fum OFILES = $(addsuffix .o, $(FILES)) INCLUDES[] += $(STDINCLUDE) my_widget: $(OFILES) $(CC) $(CFLAGS) -o $@ $(OFILES) >> Note that there is a close connection between lazy values and functions. In the example above, we could equivalently define `PREFIXED_INCLUDES' as a function with zero arguments. << PREFIXED_INCLUDES() = addprefix(-I, $(INCLUDES)) >>  Node: Section 7-6, Next: Section 7-7, Prev: Section 7-5, Up: Chapter 7 7.6 Scoping and exports *=*=*=*=*=*=*=*=*=*=*=*=* The OMake language is functional (apart from IO and shell commands). This comes in two parts: functions are first-class, and variables are immutable (there is no assignment operator). The latter property may seem strange to users used to GNU make, but it is actually a central point of OMake. Since variables can't be modified, it is impossible (or at least hard) for one part of the project to interfere with another. To be sure, pure functional programming can be awkward. In OMake, each new indentation level introduces a new scope, and new definitions in that scope are lost when the scope ends. If OMake were overly strict about scoping, we would wind up with a lot of convoluted code. << osh> X = 1 osh> setenv(BOO, 12) osh> if $(equal $(OSTYPE), Win32) setenv(BOO, 17) X = 2 osh> println($X $(getenv BOO)) 1 12 >> The `export' command presents a way out. It takes care of "exporting" a value (or the entire variable environment) from an inner scope to an outer one. << osh> X = 1 osh> setenv(BOO, 12) osh> if $(equal $(OSTYPE), Win32) setenv(BOO, 17) X = 2 export osh> println($X $(getenv BOO)) 2 17 >> Exports are especially useful in loop to export values from one iteration of a loop to the next. << # Ok, let's try to add up the elements of the array osh>sum(l) = total = 0 foreach(i, $l) total = $(add $(total), $i) value $(total) osh>sum(1 2 3) - : 0 : Int # Oops, that didn't work! osh>sum(l) = total = 0 foreach(i, $l) total = $(add $(total), $i) export value $(total) osh>sum(1 2 3) - : 6 : Int >> A `while' loop is another form of loop, with an auto-export. << osh>i = 0 osh>total = 0 osh>while $(lt $i, 10) total = $(add $(total), $i) i = $(add $i, 1) osh>println($(total)) 45 >>  Node: Section 7-7, Next: Section 7-8, Prev: Section 7-6, Up: Chapter 7 7.7 Shell aliases *=*=*=*=*=*=*=*=*=* Sometimes you may want to define an alias, an OMake command that masquerades as a real shell command. You can do this by adding your function as a method to the `Shell' object. For an example, suppose we use the `awk' function to print out all the comments in a file. << osh>cat comment.om # Comment function comments(filename) = awk($(filename)) case $'^#' println($0) # File finished osh>include comment osh>comments(comment.om) # Comment function # File finished >> To add it as an alias, add the method (using += to preserve the existing entries in the Shell). << osh>Shell. += printcom(argv) = comments($(nth 0, $(argv))) osh>printcom comment.om > output.txt osh>cat output.txt # Comment function # File finished >> A shell command is passed an array of arguments `argv'. This does not include the name of the alias.  Node: Section 7-8, Next: Chapter 8, Prev: Section 7-7, Up: Chapter 7 7.8 Input/output redirection on the cheap *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* As it turns out, scoping also provides a nice alternate way to perform redirection. Suppose you have already written a lot of code that prints to the standard output channel, but now you decide you want to redirect it. One way to do it is using the technique in the previous example: define your function as an alias, and then use shell redirection to place the output where you want. There is an alternate method that is easier in some cases. The variables `stdin', `stdout', and `stderr' define the standard I/O channels. To redirect output, redefine these variables as you see fit. Of course, you would normally do this in a nested scope, so that the outer channels are not affected. << osh>f() = println(Hello world) osh>f() Hello world osh>section: stdout = $(fopen output.txt, w) f() close($(stdout)) osh>cat output.txt Hello world >> This also works for shell commands. If you like to gamble, you can try the following example. << osh>f() = println(Hello world) osh>f() Hello world osh>section: stdout = $(fopen output.txt, w) f() cat output.txt close($(stdout)) osh>cat output.txt Hello world Hello world >>  Node: Chapter 8, Next: Section 8-1, Prev: Chapter 7, Up: Top Chapter 8 Rules ******************* Rules are used by OMake to specify how to build files. At its simplest, a rule has the following form. << : >> The `' is the name of a file to be built. The `' are a list of files that are needed before the `' can be built. The `' are a list of indented lines specifying commands to build the target. For example, the following rule specifies how to compile a file `hello.c'. << hello.o: hello.c $(CC) $(CFLAGS) -c -o hello.o hello.c >> This rule states that the hello.o file depends on the hello.c file. If the hello.c file has changed, the command `$(CC) $(CFLAGS) -c -o hello.o hello.c' is to be executed to update the target file `hello.o'. A rule can have an arbitrary number of commands. The individual command lines are executed independently by the command shell. The commands do not have to begin with a tab, but they must be indented from the dependency line. In addition to normal variables, the following special variables may be used in the body of a rule. - `$*': the target name, without a suffix. - `$@': the target name. - `$^': a list of the sources, in alphabetical order, with duplicates removed. - `$+': all the sources, in the original order. - `$<': the first source. For example, the above `hello.c' rule may be simplified as follows. << hello.o: hello.c $(CC) $(CFLAGS) -c -o $@ $< >> Unlike normal values, the variables in a rule body are expanded lazily, and binding is dynamic. The following function definition illustrates some of the issues. << CLibrary(name, files) = OFILES = $(addsuffix .o, $(files)) $(name).a: $(OFILES) $(AR) cq $@ $(OFILES) >> This function defines a rule to build a program called `$(name)' from a list of `.o' files. The files in the argument are specified without a suffix, so the first line of the function definition defines a variable `OFILES' that adds the `.o' suffix to each of the file names. The next step defines a rule to build a target library `$(name).a' from the `$(OFILES)' files. The expression `$(AR)' is evaluated when the function is called, and the value of the variable `AR' is taken from the caller's scope (see also the section on Scoping). * Menu: * Section 8-1:: Implicit rules * Section 8-2:: Bounded implicit rules * Section 8-3:: section * Section 8-4:: section rule * Section 8-5:: Special dependencies * Section 8-6:: '.SCANNER' rules * Section 8-7:: .DEFAULT * Section 8-8:: .SUBDIRS * Section 8-9:: .INCLUDE * Section 8-10:: .PHONY * Section 8-11:: Rule scoping * Section 8-12:: Running OMake from a subdirectory * Section 8-13:: Pathnames in rules  Node: Section 8-1, Next: Section 8-2, Prev: Chapter 8, Up: Chapter 8 8.1 Implicit rules *=*=*=*=*=*=*=*=*=*= Rules may also be implicit. That is, the files may be specified by wildcard patterns. The wildcard character is `%'. For example, the following rule specifies a default rule for building `.o' files. << %.o: %.c $(CC) $(CFLAGS) -c -o $@ $*.c >> This rule is a template for building an arbitrary `.o' file from a `.c' file. By default, implicit rules are only used for the targets in the current directory. However subdirectories included via the `.SUBDIRS' rules inherit all the implicit rules that are in scope (see also the section on Scoping).  Node: Section 8-2, Next: Section 8-3, Prev: Section 8-1, Up: Chapter 8 8.2 Bounded implicit rules *=*=*=*=*=*=*=*=*=*=*=*=*=*= Implicit rules may specify the set of files they apply to. The following syntax is used. << : : >> For example, the following rule applies only to the files `a.o' and `b.o'. << a.o b.o: %.o: %.c $(CC) $(CFLAGS) -DSPECIAL -c $*.c >>  Node: Section 8-3, Next: Section 8-4, Prev: Section 8-2, Up: Chapter 8 8.3 section *=*=*=*=*=*=* Frequently, the commands in a rule body are expressions to be evaluated by the shell. omake also allows expressions to be evaluated by omake itself. The syntax of these "computed rules" uses the `section' expression. The following rule uses the omake IO functions to produce the target `hello.c'. << hello.c: section FP = fopen(hello.c, w) fprintln($(FP), $""#include int main() { printf("Hello world\n"); }"") close($(FP)) >> This example uses the quotation `$""...""' (see also Section B.1.6*Note Subsection B-1-6::) to quote the text being printed. These quotes are not included in the output file. The `fopen', `fprintln', and `close' functions perform file IO as discussed in the IO section. In addition, commands that are function calls, or special expressions, are interpreted correctly. Since the `fprintln' function can take a file directly, the above rule can be abbreviated as follows. << hello.c: fprintln($@, $""#include int main() { printf("Hello world\n"); }"") >>  Node: Section 8-4, Next: Section 8-5, Prev: Section 8-3, Up: Chapter 8 8.4 section rule *=*=*=*=*=*=*=*=*= Rules can also be computed using the `section rule' form, where a rule body is expected instead of an expression. In the following rule, the file `a.c' is copied onto the `hello.c' file if it exists, otherwise `hello.c' is created from the file `default.c'. << hello.c: section rule if $(target-exists a.c) hello.c: a.c cat a.c > hello.c else hello.c: default.c cp default.c hello.c >>  Node: Section 8-5, Next: Subsection 8-5-1, Prev: Section 8-4, Up: Chapter 8 8.5 Special dependencies *=*=*=*=*=*=*=*=*=*=*=*=*= * Menu: * Subsection 8-5-1:: :exists: * Subsection 8-5-2:: :effects: * Subsection 8-5-3:: :value:  Node: Subsection 8-5-1, Next: Subsection 8-5-2, Prev: Section 8-5, Up: Section 8-5 8.5.1 :exists: ================ In some cases, the contents of a dependency do not matter, only whether the file exists or not. In this case, the `:exists:' qualifier can be used for the dependency. << foo.c: a.c :exists: .flag if $(test -e .flag) $(CP) a.c $@ >>  Node: Subsection 8-5-2, Next: Subsection 8-5-3, Prev: Subsection 8-5-1, Up: Section 8-5 8.5.2 :effects: ================= Some commands produce files by side-effect. For example, the latex(1) command produces a `.aux' file as a side-effect of producing a `.dvi' file. In this case, the `:effects:' qualifier can be used to list the side-effect explicitly. omake is careful to avoid simultaneously running programs that have overlapping side-effects. << paper.dvi: paper.tex :effects: paper.aux latex paper >>  Node: Subsection 8-5-3, Next: Section 8-6, Prev: Subsection 8-5-2, Up: Section 8-5 8.5.3 :value: =============== The `:value:' dependency is used to specify that the rule execution depends on the value of an expression. For example, the following rule << a: b c :value: $(X) ... >> specifies that "a" should be recompiled if the value of `$(X)' changes (X does not have to be a filename). This is intended to allow greater control over dependencies. In addition, it can be used instead of other kinds of dependencies. For example, the following rule: << a: b :exists: c commands >> is the same as << a: b :value: $(target-exists c) commands >> Notes: - The values are arbitrary (they are not limited to variables) - The values are evaluated at rule expansion time, so expressions containing variables like `$@', `$^', etc are legal.  Node: Section 8-6, Next: Subsection 8-6-1, Prev: Section 8-5, Up: Chapter 8 8.6 '.SCANNER' rules *=*=*=*=*=*=*=*=*=*=*= Scanner rules define a way to specify automatic dependency scanning. A `.SCANNER' rule has the following form. << .SCANNER: target: dependencies commands >> The rule is used to compute additional dependencies that might be defined in the source files for the specified target. The result of executing the scanner commands must be a sequence of dependencies in OMake format, printed to the standard output. For example, on GNU systems the `gcc -MM foo.c' produces dependencies for the file `foo.c' (based on `#include' information). We can use this to specify a scanner for C files that adds the scanned dependencies for the `.o' file. The following scanner specifies that dependencies for a file, say `foo.o' can be computed by running `gcc -MM foo.c'. Furthermore, `foo.c' is a dependency, so the scanner should be recomputed whenever the `foo.c' file changes. << .SCANNER: %.o: %.c gcc -MM $< >> Let's suppose that the command `gcc -MM foo.c' prints the following line. << foo.o: foo.h /usr/include/stdio.h >> The result is that the files `foo.h' and `/usr/include/stdio.h' are considered to be dependencies of `foo.o'---that is, `foo.o' should be rebuilt if either of these files changes. This works, to an extent. One nice feature is that the scanner will be re-run whenever the `foo.c' file changes. However, one problem is that dependencies in C are recursive. That is, if the file `foo.h' is modified, it might include other files, establishing further dependencies. What we need is to re-run the scanner if `foo.h' changes too. We can do this with a value dependency. The variable `$&' is defined as the dependency results from any previous scan. We can add these as dependencies using the `digest' function, which computes an MD5 digest of the files. << .SCANNER: %.o: %.c :value: $(digest $&) gcc -MM $< >> Now, when the file `foo.h' changes, its digest will also change, and the scanner will be re-run because of the value dependency (since `$&' will include `foo.h'). This still is not quite right. The problem is that the C compiler uses a search-path for include files. There may be several versions of the file `foo.h', and the one that is chosen depends on the include path. What we need is to base the dependencies on the search path. The `$(digest-in-path-optional ...)' function computes the digest based on a search path, giving us a solution that works. << .SCANNER: %.o: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $< >> The standard output of the scanner rules will be captured by OMake and is not allowed to contain any content that OMake will not be able to parse as a dependency. The output is allowed to contain dependency specifications for unrelated targets, however such dependencies will be ignored. The scanner rules are allowed to produce arbitrary output on the standard error channel --- such output will be handled in the same way as the output of the ordinary rules (in other words, it will be presented to the user, when dictated by the `--output-'... options enabled). Additional examples of the `.SCANNER' rules can be found in Section 3.4.3*Note Subsection 3-4-3::. * Menu: * Subsection 8-6-1:: Named scanners, and the ':scanner:' dependencies * Subsection 8-6-2:: Notes  Node: Subsection 8-6-1, Next: Subsection 8-6-2, Prev: Section 8-6, Up: Section 8-6 8.6.1 Named scanners, and the ':scanner:' dependencies ======================================================== Sometimes it may be useful to specify explicitly which scanner should be used in a rule. For example, we might compile `.c' files with different options, or (heaven help us) we may be using both `gcc' and the Microsoft Visual C++ compiler `cl'. In general, the target of a `.SCANNER' is not tied to a particular target, and we may name it as we like. << .SCANNER: scan-gcc-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $< .SCANNER: scan-cl-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) cl --scan-dependencies-or-something $(addprefix /I, $(INCLUDES)) $< >> The next step is to define explicit scanner dependencies. The `:scanner:' dependency is used for this. In this case, the scanner dependencies are specified explicitly. << $(GCC_FILES): %.o: %.c :scanner: scan-gcc-%c gcc ... $(CL_FILES): %.obj: %.c :scanner: scan-cl-%c cl ... >> Explicit `:scanner:' scanner specification may also be used to state that a single `.SCANNER' rule should be used to generate dependencies for more than one target. For example, << .SCANNER: scan-all-c: $(GCC_FILES) :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $(GCC_FILES) $(GCC_FILES): %.o: %.c :scanner: scan-all-c ... >> The above has the advantage of only running gcc once and a disadvantage that when a single source file changes, all the files will end up being re-scanned.  Node: Subsection 8-6-2, Next: Section 8-7, Prev: Subsection 8-6-1, Up: Section 8-6 8.6.2 Notes ============= In most cases, you won't need to define scanners of your own. The standard installation includes default scanners (both explicitly and implicitly named ones) for C, OCaml, and LaTeX files. The 'SCANNER_MODE' variable controls the usage of implicit scanner dependencies. The explicit `:scanner:' dependencies reduce the chances of scanner mis-specifications. In large complicated projects it might be a good idea to set `SCANNER_MODE' to `error' and use only the named `.SCANNER' rules and explicit `:scanner:' specifications.  Node: Section 8-7, Next: Section 8-8, Prev: Section 8-6, Up: Chapter 8 8.7 .DEFAULT *=*=*=*=*=*=*= The `.DEFAULT' target specifies a target to be built by default if omake is run without explicit targets. The following rule instructs omake to build the program `hello' by default << .DEFAULT: hello >>  Node: Section 8-8, Next: Section 8-9, Prev: Section 8-7, Up: Chapter 8 8.8 .SUBDIRS *=*=*=*=*=*=*= The `.SUBDIRS' target is used to specify a set of subdirectories that are part of the project. Each subdirectory should have its own OMakefile, which is evaluated in the context of the current environment. << .SUBDIRS: src doc tests >> This rule specifies that the `OMakefile's in each of the `src', `doc', and `tests' directories should be read. In some cases, especially when the `OMakefile's are very similar in a large number of subdirectories, it is inconvenient to have a separate `OMakefile' for each directory. If the `.SUBDIRS' rule has a body, the body is used instead of the `OMakefile'. << .SUBDIRS: src1 src2 src3 println(Subdirectory $(CWD)) .DEFAULT: lib.a >> In this case, the `src1', `src2', and `src3' files do not need `OMakefile's. Furthermore, if one exists, it is ignored. The following includes the file if it exists. << .SUBDIRS: src1 src2 src3 if $(file-exists OMakefile) include OMakefile .DEFAULT: lib.a >>  Node: Section 8-9, Next: Section 8-10, Prev: Section 8-8, Up: Chapter 8 8.9 .INCLUDE *=*=*=*=*=*=*= The `.INCLUDE' target is like the `include' directive, but it specifies a rule to build the file if it does not exist. << .INCLUDE: config echo "CONFIG_READ = true" > config echo CONFIG_READ is $(CONFIG_READ) >> You may also specify dependencies to an `.INCLUDE' rule. << .INCLUDE: config: config.defaults cp config.defaults config >> A word of caution is in order here. The usual policy is used for determining when the rule is out-of-date. The rule is executed if any of the following hold. - the target does not exist, - the rule has never been executed before, - any of the following have changed since the last time the rule was executed, - the target, - the dependencies, - the commands-text. In some of the cases, this will mean that the rule is executed even if the target file already exists. If the target is a file that you expect to edit by hand (and therefore you don't want to overwrite it), you should make the rule evaluation conditional on whether the target already exists. << .INCLUDE: config: config.defaults # Don't overwrite my carefully hand-edited file if $(not $(file-exists config)) cp config.defaults config >>  Node: Section 8-10, Next: Section 8-11, Prev: Section 8-9, Up: Chapter 8 8.10 .PHONY *=*=*=*=*=*=* A "phony" target is a target that is not a real file, but exists to collect a set of dependencies. Phony targets are specified with the `.PHONY' rule. In the following example, the `install' target does not correspond to a file, but it corresponds to some commands that should be run whenever the `install' target is built (for example, by running `omake install'). << .PHONY: install install: myprogram.exe cp myprogram.exe /usr/bin >>  Node: Section 8-11, Next: Subsection 8-11-1, Prev: Section 8-10, Up: Chapter 8 8.11 Rule scoping *=*=*=*=*=*=*=*=*=* As we have mentioned before, omake is a scoped language. This provides great flexibility---different parts of the project can define different configurations without interfering with one another (for example, one part of the project might be compiled with `CFLAGS=-O3' and another with `CFLAGS=-g'). But how is the scope for a target file selected? Suppose we are building a file `dir/foo.o'. omake uses the following rules to determine the scope. - First, if there is an explicit rule for building `dir/foo.o' (a rule with no wildcards), the context for that rule determines the scope for building the target. - Otherwise, the directory `dir/' must be part of the project. This normally means that a configuration file `dir/OMakefile' exists (although, see the `.SUBDIRS' section for another way to specify the `OMakefile'). In this case, the scope of the target is the scope at the end of the `dir/OMakefile'. To illustrate rule scoping, let's go back to the example of a "Hello world" program with two files. Here is an example `OMakefile' (the two definitions of `CFLAGS' are for illustration). << # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Redefine CFLAGS CFLAGS += -O3 >> In this project, the target `hello' is explicit. The scope of the `hello' target is the line beginning with `hello:', where the value of `CFLAGS' is `-g'. The other two targets, `hello_code.o' and `hello_lib.o' do not appear as explicit targets, so their scope is at the end of the `OMakefile', where the `CFLAGS' variable is defined to be `-g -O3'. That is, `hello' will be linked with `CFLAGS=-g' and the `.o' files will be compiled with `CFLAGS=-g -O3'. We can change this behavior for any of the targets by specifying them as explicit targets. For example, suppose we wish to compile `hello_lib.o' with a preprocessor variable `LIBRARY'. << # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section CFLAGS += -DLIBRARY hello_lib.o: # Redefine CFLAGS CFLAGS += -O3 >> In this case, `hello_lib.o' is also mentioned as an explicit target, in a scope where `CFLAGS=-g -DLIBRARY'. Since no rule body is specified, it is compiled using the usual implicit rule for building `.o' files (in a context where `CFLAGS=-g -DLIBRARY'). * Menu: * Subsection 8-11-1:: Scoping of implicit rules * Subsection 8-11-2:: Scoping of '.SCANNER' rules * Subsection 8-11-3:: Scoping for '.PHONY' targets  Node: Subsection 8-11-1, Next: Subsection 8-11-2, Prev: Section 8-11, Up: Section 8-11 8.11.1 Scoping of implicit rules ================================== Implicit rules (rules containing wildcard patterns) are not global, they follow the normal scoping convention. This allows different parts of a project to have different sets of implicit rules. If we like, we can modify the example above to provide a new implicit rule for building `hello_lib.o'. << # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section %.o: %.c $(CC) $(CFLAGS) -DLIBRARY -c $< hello_lib.o: # Redefine CFLAGS CFLAGS += -O3 >> In this case, the target `hello_lib.o' is built in a scope with a new implicit rule for building `%.o' files. The implicit rule adds the `-DLIBRARY' option. This implicit rule is defined only for the target `hello_lib.o'; the target `hello_code.o' is built as normal.  Node: Subsection 8-11-2, Next: Subsection 8-11-3, Prev: Subsection 8-11-1, Up: Section 8-11 8.11.2 Scoping of '.SCANNER' rules ==================================== Scanner rules are scoped the same way as normal rules. If the `.SCANNER' rule is explicit (containing no wildcard patterns), then the scope of the scan target is the same as the the rule. If the `.SCANNER' rule is implicit, then the environment is taken from the `:scanner:' dependency. << # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # scanner for .c files .SCANNER: scan-c-%.c: %.c $(CC) $(CFLAGS) -MM $< # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section CFLAGS += -DLIBRARY hello_lib.o: hello_lib.c :scanner: scan-c-hello_lib.c $(CC) $(CFLAGS) -c $< # Compile hello_code.c with CFLAGS = -g -O3 section CFLAGS += -O3 hello_code.o: hello_code.c :scanner: scan-c-hello_code.c $(CC) $(CFLAGS) -c $< >> Again, this is for illustration---it is unlikely you would need to write a complicated configuration like this! In this case, the `.SCANNER' rule specifies that the C-compiler should be called with the `-MM' flag to compute dependencies. For the target `hello_lib.o', the scanner is called with `CFLAGS=-g -DLIBRARY', and for `hello_code.o' it is called with `CFLAGS=-g -O3'.  Node: Subsection 8-11-3, Next: Section 8-12, Prev: Subsection 8-11-2, Up: Section 8-11 8.11.3 Scoping for '.PHONY' targets ===================================== Phony targets (targets that do not correspond to files) are defined with a `.PHONY:' rule. Phony targets are scoped as usual. The following illustrates a common mistake, where the `.PHONY' target is declared after it is used. << # !!This example is broken!! all: hello hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ .PHONY: all >> This doesn't work as expected because the `.PHONY' declaration occurs too late. The proper way to write this example is to place the `.PHONY' declaration first. << # Phony targets must be declared before being used .PHONY: all all: hello hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ >> Phony targets are passed to subdirectories. As a practical matter, it is wise to declare all `.PHONY' targets in your root `OMakefile', before any `.SUBDIRS'. This will ensure that 1) they are considered as phony targets in each of the subdirectories, and 2) you can build them from the project root. << .PHONY: all install clean .SUBDIRS: src lib clib >> Note that when a `.PHONY' target is inherited by a subdirectory via a `.SUBDIRS', a whole hierarchy of `.PHONY' targets (that are a part of the global one) is created, as described in Section 8.12.2*Note Subsection 8-12-2:: below. omake-0.9.8.5/doc/info/omake-doc.info0000664000152300015230000003306210655737107015366 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Indirect: omake-doc.info-1: 51 omake-doc.info-2: 50182 omake-doc.info-3: 100652 omake-doc.info-4: 150795 omake-doc.info-5: 201077 omake-doc.info-6: 251153 omake-doc.info-7: 301766 omake-doc.info-8: 352595 omake-doc.info-9: 402609 omake-doc.info-10: 457713  Tag table: (Indirect) Node: Subsection 9-2-3161127 Node: Subsection 9-2-4161596 Node: Subsection 9-2-5162063 Node: Subsection 6-3-1100652 Node: Subsection 9-2-6163532 Node: Subsection 6-3-2101396 Node: Section 4-1068448 Node: Subsection 9-2-7165620 Node: Section 4-1170120 Node: Subsection 9-2-8167089 Node: Section 4-1270906 Node: Subsection 9-2-9167637 Node: Section 4-1372218 Node: Subsection 9-6-1202122 Node: Section 4-1472944 Node: Subsection 3-4-138992 Node: Section 4-1580213 Node: Subsection 3-4-240250 Node: Subsection 3-4-341827 Node: Subsection 3-4-445454 Node: Subsection 3-4-549253 Node: Subsection 13-2-1330582 Node: Subsection 13-2-2331137 Node: Subsection 13-2-3331687 Node: Subsection 13-2-4332153 Node: Section 11-1298218 Node: Section 11-2299065 Node: Subsection 10-3-1216236 Node: Section 11-3299667 Node: Subsection 10-3-2216911 Node: Section 11-4300043 Node: Subsection 10-3-3217304 Node: Section 5-186123 Node: Section 11-5300502 Node: Subsection 10-3-4219834 Node: Section 5-287707 Node: Subsection 13-6-1351657 Node: Section 11-6301038 Node: Subsection 10-3-5221206 Node: Section 5-388687 Node: Subsection 13-6-2352595 Node: Section 11-7301766 Node: Subsection 10-3-6221756 Node: Section 5-489507 Node: Subsection 13-6-3355352 Node: Section 11-8302349 Node: Subsection 10-3-7223761 Node: Section 5-589956 Node: Subsection 13-6-4356201 Node: Section 11-9303008 Node: Section 5-690379 Node: Section 15-1380079 Node: Subsection 13-6-5357235 Node: Subsection 11-11-1306067 Node: Section 5-791146 Node: Subsection 10-8-10252102 Node: Section 15-2381320 Node: Subsection 13-6-6360259 Node: Subsection 10-7-1241234 Node: Subsection 10-8-11252400 Node: Section 15-3381756 Node: Subsection 10-7-2244361 Node: Subsection 10-8-12252712 Node: Section 9-1157073 Node: Subsection 10-8-13253018 Node: Section 9-2159576 Node: Subsection 10-8-14253329 Node: Section 9-3172662 Node: Subsection 10-8-15253662 Node: Subsection 9-3-10178982 Node: Section 9-4197260 Node: Subsection 10-8-16254121 Node: Subsection 9-3-11179321 Node: Section 9-5199405 Node: Subsection 10-8-17254612 Node: Subsection 9-3-12179835 Node: Section 9-6201941 Node: Subsection 10-8-18254990 Node: Subsection 9-3-13180247 Node: Section 9-7202898 Node: Subsection 10-8-19255245 Node: Subsection 9-3-14180677 Node: Subsection 9-3-15182140 Node: Subsection 9-3-16182587 Node: Subsection 9-3-17183040 Node: Subsection 9-3-18183458 Node: Subsection 9-3-19183927 Node: Subsection 2-1-15829 Node: Subsection 2-1-26431 Node: Subsection 10-8-20256136 Node: Subsection 10-8-21256931 Node: Section A-1383569 Node: Subsection 10-8-22257241 Node: Section A-2384195 Node: Subsection 10-8-23257673 Node: Section A-3390400 Node: Subsection 10-8-24258060 Node: Section A-4398484 Node: Subsection 10-8-25258435 Node: Section A-5398747 Node: Subsection 9-3-20184412 Node: Subsection 10-8-26258842 Node: Section A-6399752 Node: Subsection 9-3-21184977 Node: Subsection 10-8-27259264 Node: Section A-7400852 Node: Subsection 10-8-28259663 Node: Subsection 9-3-22185532 Node: Section A-8401309 Node: Subsection 10-8-29260577 Node: Section 2-1024140 Node: Subsection 9-3-23185858 Node: Subsection 9-3-24186229 Node: Subsection 9-3-25186794 Node: Subsection 9-3-26187304 Node: Subsection 9-3-27187867 Node: Subsection 9-3-28188434 Node: Subsection 9-3-29188769 Node: Subsection 9-2-10167988 Node: Subsection 9-2-11168534 Node: Subsection 9-2-12169017 Node: Subsection 9-2-13169895 Node: Subsection 10-8-30261204 Node: Subsection 9-3-1174264 Node: Section I-1482589 Node: Subsection 9-2-14170238 Node: Subsection 10-8-31261572 Node: Subsection 9-3-2174873 Node: Section I-2482788 Node: Subsection 9-2-15170574 Node: Subsection 10-8-32261869 Node: Subsection 9-3-3175634 Node: Section I-3482938 Node: Subsection 9-2-16171723 Node: Subsection 10-8-33262591 Node: Subsection 9-3-4176217 Node: Section I-4483732 Node: Subsection 9-2-17172213 Node: Subsection 10-8-34263038 Node: Subsection 9-3-5176548 Node: Subsection 10-8-35263458 Node: Subsection 9-3-6177009 Node: Subsection 9-3-7177538 Node: Subsection 4-14-174445 Node: Subsection 9-3-30189166 Node: Subsection 9-3-8178002 Node: Subsection 9-3-31189784 Node: Subsection 9-3-9178475 Node: Subsection 9-3-32190353 Node: Subsection 9-7-1203172 Node: Subsection 9-3-33191023 Node: Subsection 9-7-2203503 Node: Subsection 3-5-151882 Node: Subsection 9-3-34191522 Node: Subsection 9-7-3203841 Node: Subsection 3-5-252570 Node: Subsection 9-3-35192039 Node: Subsection 9-7-4204290 Node: Subsection 3-5-353596 Node: Subsection 9-3-36192410 Node: Subsection 3-5-456189 Node: Subsection 9-3-37192797 Node: Subsection 9-3-38193173 Node: Subsection 9-3-39193552 Node: Subsection A-3-10394155 Node: Subsection A-3-11394383 Node: Section 2-15049 Node: Subsection A-3-12394645 Node: Section 2-27103 Node: Subsection A-3-13395404 Node: Subsection 13-3-1333015 Node: Section 2-38053 Node: Subsection A-3-14395653 Node: Subsection 13-3-2335045 Node: Section 2-411308 Node: Subsection A-3-15395897 Node: Subsection 13-3-3335416 Node: Section 2-511992 Node: Subsection 10-10-1265451 Node: Chapter 10204588 Node: Subsection 9-3-40193960 Node: Subsection A-3-16396334 Node: Subsection 13-3-4336356 Node: Chapter 11297279 Node: Section 2-617919 Node: Subsection 9-3-41194723 Node: Subsection A-3-17396808 Node: Subsection 13-3-5336774 Node: Section 12-1307150 Node: Chapter 12306850 Node: Section 2-718320 Node: Subsection 9-3-42195267 Node: Subsection A-3-18397105 Node: Subsection 13-3-6338211 Node: Chapter 13327387 Node: Section 2-820292 Node: Subsection 9-3-43196536 Node: Subsection 10-4-1229150 Node: Subsection A-3-19397542 Node: Chapter 14369198 Node: Section 2-922087 Node: Subsection 9-3-44196756 Node: Subsection 10-4-2230501 Node: Chapter 15379629 Node: Section 6-194105 Node: Subsection 10-4-3231190 Node: Section 6-296861 Node: Subsection 13-7-1365923 Node: Section 6-398019 Node: Appendix A382652 Node: Subsection 13-7-2367125 Node: Section 6-4104167 Node: Appendix B401803 Node: Section 6-5105835 Node: Appendix C430269 Node: Section 6-6107116 Node: Appendix D457713 Node: Section 6-7107707 Node: Appendix E463886 Node: Subsection 10-8-1247241 Node: Appendix F478221 Node: Subsection 10-8-2247703 Node: Appendix G479826 Node: Subsection A-3-20397862 Node: Subsection 10-8-3248001 Node: Appendix H480655 Node: Subsection A-3-21398124 Node: Subsection 10-8-4248452 Node: Appendix I482343 Node: Subsection 10-8-5249374 Node: Top55 Node: Subsection 10-8-6249641 Node: Section 11-10304299 Node: Subsection 10-8-7250262 Node: Section 11-11305884 Node: Subsection 10-8-8251153 Node: Subsection A-5-1398962 Node: Subsection 10-8-9251829 Node: Subsection A-5-2399207 Node: Subsection 14-3-1377367 Node: Subsection 14-3-2378284 Node: Subsection 14-3-3379237 Node: Subsection A-2-10387721 Node: Subsection 10-5-10237852 Node: Subsection A-2-11388113 Node: Subsection 10-5-11238352 Node: Subsection A-2-12388637 Node: Subsection 10-5-12238677 Node: Section B-1402054 Node: Section B-2408309 Node: Section B-3427727 Node: Subsection B-1-1402609 Node: Subsection B-1-2402940 Node: Subsection B-1-3404246 Node: Subsection B-1-4404980 Node: Subsection B-1-5405506 Node: Subsection B-1-6406789 Node: Notes 01518 Node: Notes 14342 Node: Section 10-10264666 Node: Section 10-11265855 Node: Subsection 9-4-1197514 Node: Subsection 9-4-2197724 Node: Subsection 9-4-3197968 Node: Subsection 9-4-4198813 Node: Subsection 10-1-1205612 Node: Subsection 10-1-2207115 Node: Subsection 10-1-3207473 Node: Section 3-130595 Node: Subsection 10-1-4208262 Node: Section 3-231430 Node: Subsection 13-4-1338818 Node: Subsection 10-1-5208751 Node: Section 3-334219 Node: Subsection 8-11-1146725 Node: Subsection 13-4-2340014 Node: Subsection 10-1-6209450 Node: Section 3-436956 Node: Subsection 8-11-2147814 Node: Subsection 10-1-7209915 Node: Section 3-550182 Node: Subsection 10-11-1267055 Node: Subsection 8-11-3149293 Node: Subsection 10-1-8210322 Node: Subsection 10-11-2270348 Node: Section 13-1327845 Node: Subsection 10-1-9210649 Node: Subsection 10-11-3270651 Node: Section 13-2330278 Node: Subsection 7-5-1119080 Node: Subsection 10-5-1232277 Node: Subsection 10-11-4271828 Node: Section 13-3332597 Node: Subsection 10-5-2232849 Node: Subsection 10-11-5274529 Node: Section 8-10143314 Node: Section 13-4338500 Node: Subsection 10-5-3233853 Node: Section 7-1109324 Node: Subsection 10-11-6277459 Node: Section 8-11143886 Node: Section 13-5340875 Node: Subsection 10-5-4234341 Node: Section 7-2110484 Node: Subsection 10-11-7278943 Node: Section 8-12150795 Node: Section 13-6350901 Node: Subsection 10-5-5235004 Node: Section 7-3113567 Node: Subsection 10-11-8280271 Node: Section 8-13154611 Node: Section 13-7365376 Node: Subsection 10-5-6236015 Node: Section 7-4114712 Node: Subsection 10-11-9281305 Node: Subsection 10-5-7236444 Node: Section 7-5117571 Node: Subsection 10-5-8237044 Node: Section 7-6121947 Node: Subsection A-2-1384721 Node: Subsection 10-5-9237300 Node: Section 7-7124138 Node: Subsection A-2-2384901 Node: Section 7-8125226 Node: Subsection A-2-3385129 Node: Subsection A-2-4385441 Node: Subsection A-2-5385786 Node: Subsection A-2-6385990 Node: Subsection A-2-7386192 Node: Subsection A-2-8386441 Node: Subsection A-2-9386779 Node: Subsection A-6-1399913 Node: Subsection 8-5-1132775 Node: Subsection 8-5-2133164 Node: Subsection 8-5-3133703 Node: Subsection B-2-1408882 Node: Subsection B-2-2411583 Node: Subsection 11-9-1303223 Node: Subsection 11-9-2303418 Node: Subsection 12-1-1307969 Node: Subsection 12-1-2309588 Node: Subsection 12-1-3311810 Node: Subsection 12-1-4312054 Node: Subsection 12-1-5312254 Node: Subsection 12-1-6312468 Node: Subsection 12-1-7314390 Node: Subsection 12-1-8314755 Node: Subsection 12-1-9314914 Node: Subsection 9-5-1199687 Node: Subsection 9-5-2200213 Node: Subsection 9-5-3200640 Node: Subsection 9-5-4201077 Node: Subsection 10-11-10284400 Node: Subsection 10-11-11284884 Node: Subsection 10-11-12286318 Node: Subsection 10-11-13286864 Node: Subsection 10-11-14289244 Node: Subsection 10-11-15289634 Node: Subsection 10-11-16290545 Node: Subsection 10-11-17291700 Node: Subsection 10-1-10210953 Node: Subsection 10-11-18292290 Node: Subsection 10-1-11211419 Node: Section 10-1205147 Node: Subsection 10-11-19292794 Node: Section 10-2211854 Node: Subsection 10-2-1212281 Node: Section 10-3215722 Node: Subsection 10-2-2212658 Node: Section 4-158435 Node: Section 10-4224202 Node: Subsection 10-2-3213216 Node: Section 4-259630 Node: Section 10-5231765 Node: Subsection 10-2-4213418 Node: Subsection 13-5-1341451 Node: Section 4-360092 Node: Subsection 8-12-1151777 Node: Section 10-6239009 Node: Subsection 10-2-5213744 Node: Subsection 13-5-2342673 Node: Section 4-460517 Node: Subsection 8-12-2152924 Node: Section 10-7241033 Node: Subsection 10-2-6214322 Node: Subsection 13-5-3345019 Node: Section 4-561530 Node: Section 10-8245972 Node: Subsection 10-2-7214984 Node: Subsection 13-5-4346055 Node: Section 4-663834 Node: Section 10-9263976 Node: Section 14-1369765 Node: Subsection 11-10-1304642 Node: Section 4-764022 Node: Section 14-2375752 Node: Subsection 11-10-2304825 Node: Section 4-864787 Node: Subsection 10-6-1239262 Node: Section 14-3376619 Node: Subsection 11-10-3305023 Node: Subsection 10-11-20293229 Node: Section 4-966937 Node: Subsection 10-6-2240122 Node: Subsection 12-1-10315172 Node: Subsection 11-10-4305221 Node: Subsection 10-11-21293704 Node: Subsection 10-6-3240554 Node: Section 8-1129582 Node: Subsection 12-1-11315417 Node: Subsection 11-10-5305411 Node: Subsection 10-11-22294213 Node: Section 8-2130272 Node: Subsection 12-1-12317067 Node: Subsection 11-10-6305691 Node: Subsection 10-11-23294809 Node: Section 8-3130723 Node: Subsection 12-1-13317976 Node: Subsection 10-11-24295505 Node: Section 8-4131914 Node: Subsection 12-1-14318184 Node: Subsection 10-11-25296075 Node: Section 8-5132534 Node: Subsection 12-1-15318396 Node: Subsection 10-11-26296580 Node: Section 8-6134620 Node: Subsection A-3-1391216 Node: Subsection 12-1-16318749 Node: Subsection 10-11-27297011 Node: Section 8-7140505 Node: Subsection A-3-2391547 Node: Subsection 14-1-1370833 Node: Subsection 12-1-17319338 Node: Section 8-8140827 Node: Subsection A-3-3391746 Node: Subsection 14-1-2371604 Node: Subsection 12-1-18320226 Node: Section 8-9141942 Node: Subsection A-3-4392052 Node: Subsection 14-1-3371915 Node: Subsection 12-1-19320454 Node: Subsection A-3-5392324 Node: Subsection 14-1-4372564 Node: Subsection A-3-6393243 Node: Subsection 14-1-5373541 Node: Subsection A-3-7393443 Node: Subsection 14-1-6373878 Node: Subsection A-3-8393656 Node: Subsection 14-1-7374627 Node: Subsection A-3-9393908 Node: Subsection 14-1-8375430 Node: Chapter 12154 Node: Chapter 24511 Node: Chapter 324878 Node: Chapter 457591 Node: Subsection 12-1-20320711 Node: Chapter 585262 Node: Subsection 12-1-21321162 Node: Chapter 692627 Node: Subsection 12-1-22321670 Node: Subsection 8-6-1138108 Node: Chapter 7108553 Node: Subsection 8-6-2139853 Node: Chapter 8126723 Node: Chapter 9156673 Node: Subsection 9-2-1160447 Node: Subsection 9-2-2160761  End tag table omake-0.9.8.5/doc/info/omake-doc.info-20000664000152300015230000014253110655737107015527 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Section 3-5, Next: Subsection 3-5-1, Prev: Section 3-4, Up: Chapter 3 3.5 Collapsing the hierarchy, .SUBDIRS bodies *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Some projects have many subdirectories that all have the same configuration. For instance, suppose you have a project with many subdirectories, each containing a set of images that are to be composed into a web page. Apart from the specific images, the configuration of each file is the same. To make this more concrete, suppose the project has four subdirectories `page1', `page2', `page3', and `page4'. Each contains two files `image1.jpg' and `image2.jpg' that are part of a web page generated by a program `genhtml'. Instead of of defining a `OMakefile' in each directory, we can define it as a body to the `.SUBDIRS' command. << .SUBDIRS: page1 page2 page3 page4 index.html: image1.jpg image2jpg genhtml $+ > $@ >> The body of the `.SUBDIRS' is interpreted exactly as if it were the `OMakefile', and it can contain any of the normal statements. The body is evaluated in the subdirectory for each of the subdirectories. We can see this if we add a statement that prints the current directory (`$(CWD)'). << .SUBDIRS: page1 page2 page3 page4 println($(absname $(CWD))) index.html: image1.jpg image2jpg genhtml $+ > $@ # prints /home/jyh/.../page1 /home/jyh/.../page2 /home/jyh/.../page3 /home/jyh/.../page4 >> * Menu: * Subsection 3-5-1:: Using glob patterns * Subsection 3-5-2:: Simplified sub-configurations * Subsection 3-5-3:: Computing the subdirectory list * Subsection 3-5-4:: Temporary directories  Node: Subsection 3-5-1, Next: Subsection 3-5-2, Prev: Section 3-5, Up: Section 3-5 3.5.1 Using glob patterns =========================== Of course, this specification is quite rigid. In practice, it is likely that each subdirectory will have a different set of images, and all should be included in the web page. One of the easier solutions is to use one of the directory-listing functions, like 'glob' or 'ls'. The `glob' function takes a shell pattern, and returns an array of file with matching filenames in the current directory. << .SUBDIRS: page1 page2 page3 page4 IMAGES = $(glob *.jpg) index.html: $(IMAGES) genhtml $+ > $@ >>  Node: Subsection 3-5-2, Next: Subsection 3-5-3, Prev: Subsection 3-5-1, Up: Section 3-5 3.5.2 Simplified sub-configurations ===================================== Another option is to add a configuration file in each of the subdirectories that defines directory-specific information. For this example, we might define a file `BuildInfo.om' in each of the subdirectories that defines a list of images in that directory. The `.SUBDIRS' line is similar, but we include the BuildInfo file. << .SUBDIRS: page1 page2 page3 page4 include BuildInfo # Defines the IMAGES variable index.html: $(IMAGES) genhtml $+ > $@ >> Where we might have the following configurations. << page1/BuildInfo.om: IMAGES[] = image.jpg page2/BuildInfo.om: IMAGES[] = ../common/header.jpg winlogo.jpg page3/BuildInfo.om: IMAGES[] = ../common/header.jpg unixlogo.jpg daemon.jpg page4/BuildInfo.om: IMAGES[] = fee.jpg fi.jpg foo.jpg fum.jpg >>  Node: Subsection 3-5-3, Next: Subsection 3-5-4, Prev: Subsection 3-5-2, Up: Section 3-5 3.5.3 Computing the subdirectory list ======================================= The other hardcoded specification is the list of subdirectories `page1', ..., `page4'. Rather than editing the project `OMakefile' each time a directory is added, we could compute it (again with `glob'). << .SUBDIRS: $(glob page*) index.html: $(glob *.jpg) genhtml $+ > $@ >> Alternately, the directory structure may be hierarchical. Instead of using `glob', we could use the `subdirs' function, returns each of the directories in a hierarchy. For example, this is the result of evaluating the `subdirs' function in the omake project root. The `P' option, passed as the first argument, specifies that the listing is "proper," it should not include the `omake' directory itself. << osh> subdirs(P, .) - : >> Using `subdirs', our example is now as follows. << .SUBDIRS: $(subdirs P, .) index.html: $(glob *.jpg) genhtml $+ > $@ >> In this case, every subdirectory will be included in the project. If we are using the `BuildInfo.om' option. Instead of including every subdirectory, we could include only those that contain a `BuildInfo.om' file. For this purpose, we can use the `find' function, which traverses the directory hierarchy looking for files that match a test expression. In our case, we want to search for files with the name `BuildInfo.om'. Here is an example call. << osh> FILES = $(find . -name BuildInfo.om) - : osh> DIRS = $(dirof $(FILES)) - : >> In this example, there are three `BuildInfo.om' files, in the `doc/html', `src', and `tests/simple' directories. The `dirof' function returns the directories for each of the files. Returning to our original example, we modify it as follows. << .SUBDIRS: $(dirof $(find . -name BuildInfo.om)) include BuildInfo # Defines the IMAGES variable index.html: $(IMAGES) genhtml $+ > $@ >>  Node: Subsection 3-5-4, Next: Chapter 4, Prev: Subsection 3-5-3, Up: Section 3-5 3.5.4 Temporary directories ============================= Sometimes, your project may include temporary directories--directories where you place intermediate results. these directories are deleted whenever the project is cleanup up. This means, in particular, that you can't place an `OMakefile' in a temporary directory, because it will be removed when the directory is removed. Instead, if you need to define a configuration for any of these directories, you will need to define it using a `.SUBDIRS' body. << section CREATE_SUBDIRS = true .SUBDIRS: tmp # Compute an MD5 digest %.digest: %.comments echo $(digest $<) > $@ # Extract comments from the source files %.comments: ../src/%.src grep '^#' $< > $@ .DEFAULT: foo.digest .PHONY: clean clean: rm -rf tmp >> In this example, we define the `CREATE_SUBDIRS' variable as true, so that the `tmp' directory will be created if it does not exist. The `.SUBDIRS' body in this example is a bit contrived, but it illustrates the kind of specification you might expect. The `clean' phony-target indicates that the `tmp' directory should be removed when the project is cleaned up.  Node: Chapter 4, Next: Section 4-1, Prev: Section 3-5, Up: Top Chapter 4 OMake concepts and syntax *************************************** Projects are specified to omake with OMakefiles. The OMakefile has a format similar to a Makefile. An OMakefile has three main kinds of syntactic objects: variable definitions, function definitions, and rule definitions. * Menu: * Section 4-1:: Variables * Section 4-2:: Adding to a variable definition * Section 4-3:: Arrays * Section 4-4:: Special characters and quoting * Section 4-5:: Function definitions * Section 4-6:: Comments * Section 4-7:: File inclusion * Section 4-8:: Scoping, sections * Section 4-9:: Conditionals * Section 4-10:: Matching * Section 4-11:: Objects * Section 4-12:: Classes * Section 4-13:: Inheritance * Section 4-14:: static. * Section 4-15:: Constants  Node: Section 4-1, Next: Section 4-2, Prev: Chapter 4, Up: Chapter 4 4.1 Variables *=*=*=*=*=*=*=* Variables are defined with the following syntax. The name is any sequence of alphanumeric characters, underscore `_', and hyphen `-'. << = >> Values are defined as a sequence of literal characters and variable expansions. A variable expansion has the form `$()', which represents the value of the `' variable in the current environment. Some examples are shown below. << CC = gcc CFLAGS = -Wall -g COMMAND = $(CC) $(CFLAGS) -O2 >> In this example, the value of the `COMMAND' variable is the string `gcc -Wall -g -O2'. Unlike make(1), variable expansion is eager and pure (see also the section on Scoping). That is, variable values are expanded immediately and new variable definitions do not affect old ones. For example, suppose we extend the previous example with following variable definitions. << X = $(COMMAND) COMMAND = $(COMMAND) -O3 Y = $(COMMAND) >> In this example, the value of the `X' variable is the string `gcc -Wall -g -O2' as before, and the value of the `Y' variable is `gcc -Wall -g -O2 -O3'.  Node: Section 4-2, Next: Section 4-3, Prev: Section 4-1, Up: Chapter 4 4.2 Adding to a variable definition *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Variables definitions may also use the += operator, which adds the new text to an existing definition. The following two definitions are equivalent. << # Add options to the CFLAGS variable CFLAGS = $(CFLAGS) -Wall -g # The following definition is equivalent CFLAGS += -Wall -g >>  Node: Section 4-3, Next: Section 4-4, Prev: Section 4-2, Up: Chapter 4 4.3 Arrays *=*=*=*=*=*= Arrays can be defined by appending the `[]' sequence to the variable name and defining initial values for the elements as separate lines. Whitespace is significant on each line. The following code sequence prints `c d e'. << X[] = a b c d e f println($(nth 2, $(X))) >>  Node: Section 4-4, Next: Section 4-5, Prev: Section 4-3, Up: Chapter 4 4.4 Special characters and quoting *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= The following characters are special to omake: `$():,=#\'. To treat any of these characters as normal text, they should be escaped with the backslash character `\'. << DOLLAR = \$ >> Newlines may also be escaped with a backslash to concatenate several lines. << FILES = a.c\ b.c\ c.c >> Note that the backslash is not an escape for any other character, so the following works as expected (that is, it preserves the backslashes in the string). << DOSTARGET = C:\WINDOWS\control.ini >> An alternative mechanism for quoting special text is the use `$"..."' escapes. The number of double-quotations is arbitrary. The outermost quotations are not included in the text. << A = $""String containing "quoted text" "" B = $"""Multi-line text. The # character is not special""" >>  Node: Section 4-5, Next: Section 4-6, Prev: Section 4-4, Up: Chapter 4 4.5 Function definitions *=*=*=*=*=*=*=*=*=*=*=*=*= Functions are defined using the following syntax. << () = >> The parameters are a comma-separated list of identifiers, and the body must be placed on a separate set of lines that are indented from the function definition itself. For example, the following text defines a function that concatenates its arguments, separating them with a colon. << ColonFun(a, b) = return($(a):$(b)) >> The `return' expression can be used to return a value from the function. A `return' statement is not required; if it is omitted, the returned value is the value of the last expression in the body to be evaluated. NOTE: as of version `0.9.6', `return' is a control operation, causing the function to immediately return. In the following example, when the argument `a' is true, the function `f' immediately returns the value 1 without evaluating the print statement. << f(a) = if $(a) return 1 println(The argument is false) return 0 >> In many cases, you may wish to return a value from a section or code block without returning from the function. In this case, you would use the `value' operator. In fact, the `value' operator is not limited to functions, it can be used any place where a value is required. In the following definition, the variable `X' is defined as 1 or 2, depending on the value of a, then result is printed, and returned from the function. << f_value(a) = X = if $(a) value 1 else value 2 println(The value of X is $(X)) value $(X) >> Functions are called using the GNU-make syntax, `$( ' is a comma-separated list of values. For example, in the following program, the variable `X' contains the value `foo:bar'. << X = $(ColonFun foo, bar) >> If the value of a function is not needed, the function may also be called using standard function call notation. For example, the following program prints the string "She says: Hello world". << Printer(name) = println($(name) says: Hello world) Printer(She) >>  Node: Section 4-6, Next: Section 4-7, Prev: Section 4-5, Up: Chapter 4 4.6 Comments *=*=*=*=*=*=*= Comments begin with the `#' character and continue to the end of the line.  Node: Section 4-7, Next: Section 4-8, Prev: Section 4-6, Up: Chapter 4 4.7 File inclusion *=*=*=*=*=*=*=*=*=*= Files may be included with the `include' or `open' form. The included file must use the same syntax as an OMakefile. << include $(Config_file) >> The `open' operation is similar to an `include', but the file is included at most once. << open Config # Repeated opens are ignored, so this # line has no effect. open Config >> If the file specified is not an absolute filenmame, both `include' and `open' operations search for the file based on the 'OMAKEPATH' variable. In case of the `open' directive, the search is performed at parse time, and the argument to `open' may not contain any expressions.  Node: Section 4-8, Next: Section 4-9, Prev: Section 4-7, Up: Chapter 4 4.8 Scoping, sections *=*=*=*=*=*=*=*=*=*=*=* Scopes in omake are defined by indentation level. When indentation is increased, such as in the body of a function, a new scope is introduced. The `section' form can also be used to define a new scope. For example, the following code prints the line `X = 2', followed by the line `X = 1'. << X = 1 section X = 2 println(X = $(X)) println(X = $(X)) >> This result may seem surprising--the variable definition within the `section' is not visible outside the scope of the `section'. The `export' form, which will be described in detail in Section 6.3*Note Section 6-3::, can be used to circumvent this restriction by exporting variable values from an inner scope. For example, if we modify the previous example by adding an `export' expression, the new value for the `X' variable is retained, and the code prints the line `X = 2' twice. << X = 1 section X = 2 println(X = $(X)) export println(X = $(X)) >> There are also cases where separate scoping is quite important. For example, each OMakefile is evaluated in its own scope. Since each part of a project may have its own configuration, it is important that variable definitions in one OMakefile do not affect the definitions in another. To give another example, in some cases it is convenient to specify a separate set of variables for different build targets. A frequent idiom in this case is to use the `section' command to define a separate scope. << section CFLAGS += -g %.c: %.y $(YACC) $< .SUBDIRS: foo .SUBDIRS: bar baz >> In this example, the `-g' option is added to the `CFLAGS' variable by the `foo' subdirectory, but not by the `bar' and `baz' directories. The implicit rules are scoped as well and in this example, the newly added yacc rule will be inherited by the `foo' subdirectory, but not by the `bar' and `baz' ones; furthermore this implicit rule will not be in scope in the current directory.  Node: Section 4-9, Next: Section 4-10, Prev: Section 4-8, Up: Chapter 4 4.9 Conditionals *=*=*=*=*=*=*=*=*= Top level conditionals have the following form. << if elseif else >> The `' expression is evaluated, and if it evaluates to a true value (see Section 9.2*Note Section 9-2:: for more information on logical values, and Boolean functions), the code for the `' is evaluated; otherwise the remaining clauses are evaluated. There may be multiple `elseif' clauses; both the `elseif' and `else' clauses are optional. Note that the clauses are indented, so they introduce new scopes. When viewed as a predicate, a value corresponds to the Boolean false, if its string representation is the empty string, or one of the strings `false', `no', `nil', `undefined', or `0'. All other values are true. The following example illustrates a typical use of a conditional. The `OSTYPE' variable is the current machine architecture. << # Common suffixes for files if $(equal $(OSTYPE), Win32) EXT_LIB = .lib EXT_OBJ = .obj EXT_ASM = .asm EXE = .exe export elseif $(mem $(OSTYPE), Unix Cygwin) EXT_LIB = .a EXT_OBJ = .o EXT_ASM = .s EXE = export else # Abort on other architectures eprintln(OS type $(OSTYPE) is not recognized) exit(1) >>  Node: Section 4-10, Next: Section 4-11, Prev: Section 4-9, Up: Chapter 4 4.10 Matching *=*=*=*=*=*=*=* Pattern matching is performed with the `switch' and `match' forms. << switch case case ... default >> The number of cases is arbitrary. The `default' clause is optional; however, if it is used it should be the last clause in the pattern match. For `switch', the string is compared with the patterns literally. << switch $(HOST) case mymachine println(Building on mymachine) default println(Building on some other machine) >> Patterns need not be constant strings. The following function tests for a literal match against `pattern1', and a match against `pattern2' with `##' delimiters. << Switch2(s, pattern1, pattern2) = switch $(s) case $(pattern1) println(Pattern1) case $"##$(pattern2)##" println(Pattern2) default println(Neither pattern matched) >> For `match' the patterns are egrep(1)-style regular expressions. The numeric variables `$1, $2, ...' can be used to retrieve values that are matched by `\(...\)' expressions. << match $(NODENAME)@$(SYSNAME)@$(RELEASE) case $"mymachine.*@\(.*\)@\(.*\)" println(Compiling on mymachine; sysname $1 and release $2 are ignored) case $".*@Linux@.*2\.4\.\(.*\)" println(Compiling on a Linux 2.4 system; subrelease is $1) default eprintln(Machine configuration not implemented) exit(1) >>  Node: Section 4-11, Next: Section 4-12, Prev: Section 4-10, Up: Chapter 4 4.11 Objects *=*=*=*=*=*=*= OMake is an object-oriented language. Generally speaking, an object is a value that contains fields and methods. An object is defined with a `.' suffix for a variable. For example, the following object might be used to specify a point (1, 5) on the two-dimensional plane. << Coord. = x = 1 y = 5 print(message) = println($"$(message): the point is ($(x), $(y)") # Define X to be 5 X = $(Coord.x) # This prints the string, "Hi: the point is (1, 5)" Coord.print(Hi) >> The fields `x' and `y' represent the coordinates of the point. The method `print' prints out the position of the point.  Node: Section 4-12, Next: Section 4-13, Prev: Section 4-11, Up: Chapter 4 4.12 Classes *=*=*=*=*=*=*= We can also define classes. For example, suppose we wish to define a generic `Point' class with some methods to create, move, and print a point. A class is really just an object with a name, defined with the `class' directive. << Point. = class Point # Default values for the fields x = 0 y = 0 # Create a new point from the coordinates new(x, y) = this.x = $(x) this.y = $(y) return $(this) # Move the point to the right move-right() = x = $(add $(x), 1) return $(this) # Print the point print() = println($"The point is ($(x), $(y)") p1 = $(Point.new 1, 5) p2 = $(p1.move-right) # Prints "The point is (1, 5)" p1.print() # Prints "The point is (2, 5)" p2.print() >> Note that the variable `$(this)' is used to refer to the current object. Also, classes and objects are functional---the `new' and `move-right' methods return new objects. In this example, the object `p2' is a different object from `p1', which retains the original (1, 5) coordinates.  Node: Section 4-13, Next: Section 4-14, Prev: Section 4-12, Up: Chapter 4 4.13 Inheritance *=*=*=*=*=*=*=*=*= Classes and objects support inheritance (including multiple inheritance) with the `extends' directive. The following definition of `Point3D' defines a point with `x', `y', and `z' fields. The new object inherits all of the methods and fields of the parent classes/objects. << Z. = z = 0 Point3D. = extends $(Point) extends $(Z) class Point3D print() = println($"The 3D point is ($(x), $(y), $(z))") # The "new" method was not redefined, so this # defines a new point (1, 5, 0). p = $(Point3D.new 1, 5) >>  Node: Section 4-14, Next: Subsection 4-14-1, Prev: Section 4-13, Up: Chapter 4 4.14 static. *=*=*=*=*=*=*= The `static.' object is used to specify values that are persistent across runs of OMake. They are frequently used for configuring a project. Configuring a project can be expensive, so the `static.' object ensure that the configuration is performed just once. In the following (somewhat trivial) example, a `static' section is used to determine if the LaTeX command is available. The `$(where latex)' function returns the full pathname for `latex', or `false' if the command is not found. << static. = LATEX_ENABLED = false print(--- Determining if LaTeX is installed ) if $(where latex) LATEX_ENABLED = true export if $(LATEX_ENABLED) println($'(enabled)') else println($'(disabled)') >> The OMake standard library provides a number of useful functions for programming the `static.' tests, as described in Chapter 14*Note Chapter 14::. Using the standard library, the above can be rewritten as << open configure/Configure static. = LATEX_ENABLED = $(CheckProg latex) >> As a matter of style, a `static.' section that is used for configuration should print what it is doing using the 'ConfMsgChecking' and 'ConfMsgResult' functions (of course, most of helper functions in the standard library would do that automatically). * Menu: * Subsection 4-14-1:: .STATIC  Node: Subsection 4-14-1, Next: Section 4-15, Prev: Section 4-14, Up: Section 4-14 4.14.1 .STATIC ================ This feature was introduced in version 0.9.8.5. There is also a rule form of static section. The syntax can be any of the following three forms. << # Export all variables defined by the body .STATIC: # Specify file-dependencies .STATIC: # Specify which variables to export, as well as file dependencies .STATIC: : >> The `' are the variable names to be defined, the `' are file dependencies---the rule is re-evaluated if one of the dependencies is changed. The `' and `' can be omitted; if so, all variables defined in the `' are exported. For example, the final example of the previous section can also be implemented as follows. << open configure/Configure .STATIC: LATEX_ENABLED = $(CheckProg latex) >> The effect is much the same as using `static.' (instead of `.STATIC'). However, in most cases `.STATIC' is preferred, for two reasons. First, a `.STATIC' section is lazy, meaning that it is not evaluated until one of its variables is resolved. In this example, if `$(LATEX_ENABLED)' is never evaluated, the section need never be evaluated either. This is in contrast to the `static.' section, which always evaluates its body at least once. A second reason is that a `.STATIC' section allows for file dependencies, which are useful when the `.STATIC' section is used for memoization. For example, suppose we wish to create a dictionary from a table that has key-value pairs. By using a `.STATIC' section, we can perform this computation only when the input file changes (not on every fun of `omake'). In the following example the 'awk' function is used to parse the file `table-file'. When a line is encountered with the form key` = 'value, the key/value pair is added the the `TABLE'. << .STATIC: table-file TABLE = $(Map) awk(table-file) case $'^\([[:alnum:]]+\) *= *\(.*\)' TABLE = $(TABLE.add $1, $2) export >> It is appropriate to think of a `.STATIC' section as a rule that must be recomputed whenever the dependencies of the rule change. The targets of the rule are the variables it exports (in this case, the `TABLE' variable). 4.14.1.1 .MEMO ---------------- A `.MEMO' rule is just like a `.STATIC' rule, except that the results are not saved between independent runs of `omake'. 4.14.1.2 :key: ---------------- The `.STATIC' and `.MEMO' rules also accept a `:key:' value, which specifies a "key" associated with the values being computed. It is useful to think of a `.STATIC' rule as a dictionary that associates keys with their values. When a `.STATIC' rule is evaluated, the result is saved in the table with the `:key:' defined by the rule (if a `:key:' is not specified, a default key is used instead). In other words, a rule is like a function. The `:key:' specifies the function "argument", and the rule body computes the result. To illustrate, let's use a `.MEMO' rule to implement a Fibonacci function. << fib(i) = i = $(int $i) .MEMO: :key: $i println($"Computing fib($i)...") result = if $(or $(eq $i, 0), $(eq $i, 1)) value $i else add($(fib $(sub $i, 1)), $(fib $(sub $i, 2))) value $(result) println($"fib(10) = $(fib 10)") println($"fib(12) = $(fib 12)") >> When this script is run, it produces the following output. << Computing fib(10)... Computing fib(9)... Computing fib(8)... Computing fib(7)... Computing fib(6)... Computing fib(5)... Computing fib(4)... Computing fib(3)... Computing fib(2)... Computing fib(1)... Computing fib(0)... fib(10) = 55 Computing fib(12)... Computing fib(11)... fib(12) = 144 >> Note that the Fibonacci computation is performed just once for each value of the argument, rather than an exponential number of times. In other words, the `.MEMO' rule has performed a memoization, hence the name. Note that if `.STATIC' were used instead, the values would be saved across runs of `omake'. As a general guideline, whenever you use a `.STATIC' or `.MEMO' rule within a function body, you will usually want to use a `:key:' value to index the rule by the function argument. However, this is not required. In the following, the `.STATIC' rule is used to perform some expensive computation once. << f(x) = .STATIC: y = $(expensive-computation) add($x, $y) >> Additonal care should be taken for recursive functions, like the Fibonacci function. If the `:key:' is omitted, then the rule would be defined in terms of itself, resulting in a cyclic dependency. Here is the output of the Fibonacci program with an omitted `:key:'. << Computing fib(10)... Computing fib(8)... Computing fib(6)... Computing fib(4)... Computing fib(2)... Computing fib(0)... fib(10) = 0 fib(12) = 0 >> The reason for this behavior is that the `result' value is not saved until the base case `i = 0 || i = 1' is reached, so `fib' calls itself recursively until reaching `fib(0)', whereupon the `result' value is fixed at 0. In any case, recursive definitions are perfectly acceptable, but you will usually want a `:key:' argument so that each recursive call has a different `:key:'. In most cases, this means that the `:key:' should include all arguments to the function.  Node: Section 4-15, Next: Chapter 5, Prev: Section 4-14, Up: Chapter 4 4.15 Constants *=*=*=*=*=*=*=*= Internally, OMake represents values in several forms, which we list here. - int - Constructor: `$(int )' 9.4.1*Note Subsection 9-4-1::. - Object: `Int' 12.1.4*Note Subsection 12-1-4::. - An integer is a represented with finite precision using the OCaml representation (31 bits on a 32 platform, and 63 bits on a 64 bit platform). - See also: arithmetic 9.4.3*Note Subsection 9-4-3::. - float - Constructor: `$(float )' 9.4.2*Note Subsection 9-4-2::. - Object: `Float' 12.1.5*Note Subsection 12-1-5::. - A float is a floating-point value, represented in IEEE 64-bit format. - See also: arithmetic 9.4.3*Note Subsection 9-4-3::. - array - Constructor: `$(array , ..., )' 9.3.1*Note Subsection 9-3-1::. - Object: `Array' 12.1.7*Note Subsection 12-1-7::. - An array is a finite list of values. Arrays are also defined with an array definition << X[] = ... >> - See also: `nth' 9.3.5*Note Subsection 9-3-5::, `nth-tl' 9.3.8*Note Subsection 9-3-8::, `length' 9.3.4*Note Subsection 9-3-4::, ... - string - Object: `String' 12.1.8*Note Subsection 12-1-8::. - By default, all constant character sequences represent strings, so the simple way to construct a string is to write it down. Internally, the string may be parsed as several pieces. A string often represents an array of values separated by whitespace. << osh>S = This is a string - : : Sequence osh>length($S) - : 4 : Int >> - A data string is a string where whitespace is significant. It represents a single value, not an array. The constructors are the quotations `$"..."' and `$'...''. << osh>S = $'''This is a string''' - : : String >> - See also: Quoted strings 7.2*Note Section 7-2::. - file - Constructor: `$(file )' 10.1.1*Note Subsection 10-1-1::. - Object: `File' 12.1.13*Note Subsection 12-1-13::. - A file object represents the abstract name for a file. The file object can be viewed as an absolute name; the string representation depends on the current directory. << osh>name = $(file foo) - : /Users/jyh/projects/omake/0.9.8.x/foo : File osh>echo $(name) foo osh>cd .. - : /Users/jyh/projects/omake : Dir osh>echo $(name) 0.9.8.x/foo >> - See also: `vmount' 10.6.1*Note Subsection 10-6-1::. - directory - Constructor: `$(dir )' 10.1.1*Note Subsection 10-1-1::. - Object: `Dir' 12.1.14*Note Subsection 12-1-14::. - A directory object is like a file object, but it represents a directory. - map (dictionary) - Object: `Map' 12.1.2*Note Subsection 12-1-2::. - A map/dictionary is a table that maps values to values. The `Map' object is the empty map. The data structure is persistent, and all operations are pure and functional. The special syntax `$|key|' can be used for keys that are strings. << osh>table = $(Map) osh>table = $(table.add x, int) osh>table. += $|y| = int osh>table.find(y) - : "int" : Sequence >> - channel - Constructor: `$(fopen , )' 10.8.4*Note Subsection 10-8-4::. - Objects: `InChannel' 12.1.16*Note Subsection 12-1-16::, `OutChannel' 12.1.17*Note Subsection 12-1-17::. - Channels are used for buffered input/output. - function - Constructor: `$(fun , )' 9.5.1*Note Subsection 9-5-1::. - Object: `Fun' 12.1.9*Note Subsection 12-1-9::. - Functions can be defined in several ways. - As an anonymous function, << $(fun i, j, $(add $i, $j)) >> - As a named function, << f(i, j) = add($i, $j) >> - This feature will be introduced in version 0.9.9.0.As an anonymous function argument. << osh>foreach(i => $(add $i, 1), 1 2 3) - : : Array >> - lexer - Object: `Lexer' 10.11.9*Note Subsection 10-11-9::. - This object represents a lexer. - parser - Object: `Parser' 10.11.13*Note Subsection 10-11-13::. - This object represents a parser.  Node: Chapter 5, Next: Section 5-1, Prev: Chapter 4, Up: Top Chapter 5 Variables and Naming ********************************** During evaluation, there are three different kinds of namespaces. Variables can be private, or they may refer to fields in the current this object, or they can be part of the global namespace. The namespace can be specified directly by including an explicit qualifier before the variable name. The three namespaces are separate; a variable can be bound in one or more simultaneously. << # private namespace private.X = 1 # current object this.X = 2 # public, globally defined global.X = 3 >> * Menu: * Section 5-1:: private. * Section 5-2:: this. * Section 5-3:: global. * Section 5-4:: protected. * Section 5-5:: public. * Section 5-6:: Qualified blocks * Section 5-7:: declare  Node: Section 5-1, Next: Section 5-2, Prev: Chapter 5, Up: Chapter 5 5.1 private. *=*=*=*=*=*=*= The `private.' qualifier is used to define variables that are private to the current file/scope. The values are not accessible outside the scope. Private variables are statically (lexically) scoped. << Obj. = private.X = 1 print() = println(The value of X is: $X) # Prints: # The private value of X is: 1 Obj.print() # This is an error--X is private in Obj y = $(Obj.X) >> In addition, private definitions do not affect the global value of a variable. << # The public value of x is 1 x = 1 # This object uses a private value of x Obj. = private.x = 2 print() = x = 3 println(The private value of x is: $x) println(The public value of x is: $(public.x)) f() # Prints: # The private value of x is: 3 # The public value of x is: 1 Obj.print() >> Private variables have two additional properties. 1. Private variables are local to the file in which they are defined. 2. Private variables are not exported by the `export' directive, unless they are mentioned explicitly. << private. = FLAG = true section FLAG = false export # FLAG is still true section FLAG = false export FLAG # FLAG is now false >>  Node: Section 5-2, Next: Section 5-3, Prev: Section 5-1, Up: Chapter 5 5.2 this. *=*=*=*=*=* The `this.' qualifier is used to define fields that are local to an object. Object variables are dynamically scoped. << X = 1 f() = println(The public value of X is: $(X)) # Prints: # The public value of X is: 2 section X = 2 f() # X is a protected field in the object Obj. = this.X = 3 print() = println(The value of this.X is: $(X)) f() # Prints: # The value of this.X is: 3 # The public value of X is: 1 Obj.print() # This is legal, it defines Y as 3 Y = $(Obj.X) >> In general, it is a good idea to define object variables as protected. The resulting code is more modular because variables in your object will not produce unexpected clashes with variables defined in other parts of the project.  Node: Section 5-3, Next: Section 5-4, Prev: Section 5-2, Up: Chapter 5 5.3 global. *=*=*=*=*=*=* The `global.' qualifier is used to specify global dynamically-scoped variables. In the following example, the `global.' definition specifies that the binding `X = 4' is to be dynamically scoped. Global variables are not defined as fields of an object. << X = 1 f() = println(The global value of X is: $(X)) # Prints: # The global value of X is: 2 section X = 2 f() Obj. = protected.X = 3 print() = println(The protected value of X is: $(X)) global.X = 4 f() # Prints: # The protected value of X is: 3 # The global value of X is: 4 Obj.print() >>  Node: Section 5-4, Next: Section 5-5, Prev: Section 5-3, Up: Chapter 5 5.4 protected. *=*=*=*=*=*=*=*= In OMake 0.9.8, `protected' is a synonym for `this'. << osh>protected.x = 1 - : "1" : Sequence osh>value $(this.x) - : "1" : Sequence >> In 0.9.9, this will change, so that the qualifier `protected' means (in 0.9.9) that a variable is local to the current object or file, and may not be accessed outside it.  Node: Section 5-5, Next: Section 5-6, Prev: Section 5-4, Up: Chapter 5 5.5 public. *=*=*=*=*=*=* In OMake 0.9.8, `public' is a synonym for `global'. << osh>public.x = 1 - : "1" : Sequence osh>value $(global.x) - : "1" : Sequence >> In 0.9.9, this will change, so that the qualifier `public' means (in 0.9.9) that a variable is to be accessible from outside the current file or object.  Node: Section 5-6, Next: Section 5-7, Prev: Section 5-5, Up: Chapter 5 5.6 Qualified blocks *=*=*=*=*=*=*=*=*=*=*= If several qualified variables are defined simultaneously, a block form of qualifier can be defined. The syntax is similar to an object definition, where the name of the object is the qualifier itself. For example, the following program defines two private variables `X' and `Y'. << private. = X = 1 Y = 2 >> The qualifier specifies a default namespace for new definitions in the block. The contents of the block is otherwise completely general. << private. = X = 1 Y = 2 public.Z = $(add $X, $Y) # Prints "The value of Z is 3" echo The value of Z is $Z >>  Node: Section 5-7, Next: Chapter 6, Prev: Section 5-6, Up: Chapter 5 5.7 declare *=*=*=*=*=*=* When a variable name is unqualified, its namespace is determined by the most recent definition or declaration that is in scope for that variable. We have already seen this in the examples, where a variable definition is qualified, but the subsequent uses are not qualified explicitly. In the following example, the first occurrence of `$X' refers to the private definition, because that is the most recent. The public definition of `X' is still `0', but the variable must be qualified explicitly. << public.X = 0 private.X = 1 public.print() = println(The value of private.X is: $X) println(The value of public.X is: $(public.X)) >> Sometimes it can be useful to declare a variable without defining it. For example, we might have a function that uses a variable `X' that is to be defined later in the program. The `declare' directive can be used for this. << declare public.X public.print() = println(The value of X is $X) # Prints "The value of X is 2" X = 2 print() >> Finally, what about variables that are used but not explicitly qualified? In this case, the following rules are used. - If the variable is a function parameter, it is private. - If the variable is defined in an object, it is qualified with `this.'. - Otherwise, the variable is public.  Node: Chapter 6, Next: Section 6-1, Prev: Chapter 5, Up: Top Chapter 6 Expressions and values ************************************ omake provides a full programming-language including many system and IO functions. The language is object-oriented -- everything is an object, including the base values like numbers and strings. However, the omake language differs from other scripting languages in three main respects. - Scoping is dynamic. - Apart from IO, the language is entirely functional -- there is no assignment operator in the language. - Evaluation is normally eager -- that is, expressions are evaluated as soon as they are encountered. To illustrate these features, we will use the osh(1) omake program shell. The osh(1) program provides a toploop, where expressions can be entered and the result printed. osh(1) normally interprets input as command text to be executed by the shell, so in many cases we will use the `value' form to evaluate an expression directly. << osh> 1 *** omake error: File -: line 1, characters 0-1 command not found: 1 osh> value 1 - : "1" : Sequence osh> ls -l omake -rwxrwxr-x 1 jyh jyh 1662189 Aug 25 10:24 omake* >> * Menu: * Section 6-1:: Dynamic scoping * Section 6-2:: Functional evaluation * Section 6-3:: Exporting the environment * Section 6-4:: Objects * Section 6-5:: Field and method calls * Section 6-6:: Method override * Section 6-7:: Super calls  Node: Section 6-1, Next: Section 6-2, Prev: Chapter 6, Up: Chapter 6 6.1 Dynamic scoping *=*=*=*=*=*=*=*=*=*=* Dynamic scoping means that the value of a variable is determined by the most recent binding of the variable in scope at runtime. Consider the following program. << OPTIONS = a b c f() = println(OPTIONS = $(OPTIONS)) g() = OPTIONS = d e f f() >> If `f()' is called without redefining the `OPTIONS' variable, the function should print the string `OPTIONS = a b c'. In contrast, the function `g()' redefines the `OPTIONS' variable and evaluates `f()' in that scope, which now prints the string `OPTIONS = d e f'. The body of `g' defines a local scope -- the redefinition of the `OPTIONS' variable is local to `g' and does not persist after the function terminates. << osh> g() OPTIONS = d e f osh> f() OPTIONS = a b c >> Dynamic scoping can be tremendously helpful for simplifying the code in a project. For example, the OMakeroot file defines a set of functions and rules for building projects using such variables as `CC', `CFLAGS', etc. However, different parts of a project may need different values for these variables. For example, we may have a subdirectory called `opt' where we want to use the `-03' option, and a subdirectory called `debug' where we want to use the `-g' option. Dynamic scoping allows us to redefine these variables in the parts of the project without having to redefine the functions that use them. << section CFLAGS = -O3 .SUBDIRS: opt section CFLAGS = -g .SUBDIRS: debug >> However, dynamic scoping also has drawbacks. First, it can become confusing: you might have a variable that is intended to be private, but it is accidentally redefined elsewhere. For example, you might have the following code to construct search paths. << PATHSEP = : make-path(dirs) = return $(concat $(PATHSEP), $(dirs)) make-path(/bin /usr/bin /usr/X11R6/bin) - : "/bin:/usr/bin:/usr/X11R6/bin" : String >> However, elsewhere in the project, the `PATHSEP' variable is redefined as a directory separator `/', and your function suddenly returns the string `/bin//usr/bin//usr/X11R6/bin', obviously not what you want. The `private' block is used to solve this problem. Variables that are defined in a `private' block use static scoping -- that is, the value of the variable is determined by the most recent definition in scope in the source text. << private PATHSEP = : make-path(dirs) = return $(concat $(PATHSEP), $(dirs)) PATHSEP = / make-path(/bin /usr/bin /usr/X11R6/bin) - : "/bin:/usr/bin:/usr/X11R6/bin" : String >>  Node: Section 6-2, Next: Section 6-3, Prev: Section 6-1, Up: Chapter 6 6.2 Functional evaluation *=*=*=*=*=*=*=*=*=*=*=*=*=* Apart from I/O, omake programs are entirely functional. This has two parts: - There is no assignment operator. - Functions are values, and may be passed as arguments, and returned from functions just like any other value. The second item is straightforward. For example, the following program defines an increment function by returning a function value. << incby(n) = g(i) = return $(add $(i), $(n)) return $(g) f = $(incby 5) value $(f 3) - : 8 : Int >> The first item may be the most confusing initially. Without assignment, how is it possible for a subproject to modify the global behavior of the project? In fact, the omission is intentional. Build scripts are much easier to write when there is a guarantee that subprojects do not interfere with one another. However, there are times when a subproject needs to propagate information back to its parent object, or when an inner scope needs to propagate information back to the outer scope.  Node: Section 6-3, Next: Subsection 6-3-1, Prev: Section 6-2, Up: Chapter 6 6.3 Exporting the environment *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* The `export' directive can be used to propagate all or part of an inner scope back to its parent. If used without arguments, the entire scope is propagated back to the parent; otherwise the arguments specify which part of the environment to propagate. The most common usage is to export some or all of the definitions in a conditional block. In the following example, the variable `B' is bound to 2 after the conditional. The `A' variable is not redefined. << if $(test) A = 1 B = $(add $(A), 1) export B else B = 2 export >> If the `export' directive is used without an argument, all of the following is exported: - The values of all the dynamically scoped variables (as described in Section 5.5*Note Section 5-5::). - The current working directory. - The current Unix environment. - The current implicit rules and implicit dependencies (see also Section 8.11.1*Note Subsection 8-11-1::). - The current set of "phony" target declarations (see Sections 8.10*Note Section 8-10:: and 8.11.3*Note Subsection 8-11-3::). If the `export' directive is used with an argument, the argument expression is evaluated and the resulting value is interpreted as follows: - If the value is empty, everything is exported, as described above. - If the value represents a environment (or a partial environment) captured using the 'export' function, then the corresponding environment or partial environment is exported. - Otherwise, the value must be a sequence of strings specifying which items are to be propagated back. The following strings have special meaning: - `.RULE' --- implicit rules and implicit dependencies. - `.PHONY' --- the set of "phony" target declarations. All other strings are interpreted as names of the variables that need to be propagated back. For example, in the following (somewhat artificial) example, the variables `A' and `B' will be exported, and the implicit rule will remain in the environment after the section ends, but the variable `TMP' and the target `tmp_phony' will remain unchanged. <
> * Menu: * Subsection 6-3-1:: Export regions * Subsection 6-3-2:: Returning values from exported regions omake-0.9.8.5/doc/info/omake-doc.info-100000664000152300015230000006335610656155147015614 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Appendix D, Next: Appendix E, Prev: Appendix C, Up: Top Appendix D Index of variables ********************************* - &, B.2.2.5*Note Subsection B-2-2:: - *, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - +, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - <, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - >, B.2.2.5*Note Subsection B-2-2:: - @, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - ^, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - ABORT_ON_COMMAND_ERROR, 13.4.1*Note Subsection 13-4-1:: - ABORT_ON_DEPENDENCY_ERRORS, 13.6.4*Note Subsection 13-6-4:: - AR, 13.5.2*Note Subsection 13-5-2:: - AS, 13.5.2*Note Subsection 13-5-2:: - ASFLAGS, 13.5.2*Note Subsection 13-5-2:: - ASOUT, 13.5.2*Note Subsection 13-5-2:: - BIBTEX, 13.7.1*Note Subsection 13-7-1:: - BUILD_SUMMARY, 9.1*Note Section 9-1:: - BYTE_ENABLED, 13.6.2*Note Subsection 13-6-2:: - CAMLP4, 13.6.2*Note Subsection 13-6-2:: - CC, 13.5.2*Note Subsection 13-5-2:: - CCOUT, 13.5.2*Note Subsection 13-5-2:: - CDLL_IMPLIES_STATIC, 13.5.4.1*Note Subsection 13-5-4:: - CFLAGS, 13.5.2*Note Subsection 13-5-2:: - CL_FOUND, 13.5.1.2*Note Subsection 13-5-1:: - CPP, 13.5.2*Note Subsection 13-5-2:: - CWD, 13.4.1*Note Subsection 13-4-1:: - CXX, 13.5.2*Note Subsection 13-5-2:: - CXXFLAGS, 13.5.2*Note Subsection 13-5-2:: - DIRSEP, 13.4.2*Note Subsection 13-4-2:: - DVIPDFM, 13.7.1*Note Subsection 13-7-1:: - DVIPDFMFLAGS, 13.7.1*Note Subsection 13-7-1:: - DVIPS, 13.7.1*Note Subsection 13-7-1:: - DVIPSFLAGS, 13.7.1*Note Subsection 13-7-1:: - EMPTY, 13.4.1*Note Subsection 13-4-1:: - EXE, 13.4.2*Note Subsection 13-4-2:: - EXT_ASM, 13.4.2*Note Subsection 13-4-2:: - EXT_DLL, 13.4.2*Note Subsection 13-4-2:: - EXT_LIB, 13.4.2*Note Subsection 13-4-2:: - EXT_OBJ, 13.4.2*Note Subsection 13-4-2:: - GCC_FOUND, 13.5.1.1*Note Subsection 13-5-1:: - GXX_FOUND, 13.5.1.1*Note Subsection 13-5-1:: - HOME, 9.1*Note Section 9-1:: - HOST, 9.1*Note Section 9-1:: - INCLUDES, 13.5.2*Note Subsection 13-5-2:: - INSTALL, 13.4.2*Note Subsection 13-4-2:: - ignoreeof, 15.1*Note Section 15-1:: - LATEX, 13.7.1*Note Subsection 13-7-1:: - LATEXFLAGS, 13.7.1*Note Subsection 13-7-1:: - LD, 13.5.2*Note Subsection 13-5-2:: - LDFLAGS, 13.5.2*Note Subsection 13-5-2:: - LDFLAGS_DLL, 13.5.2*Note Subsection 13-5-2:: - LDOUT, 13.5.2*Note Subsection 13-5-2:: - LEX, 13.5.2*Note Subsection 13-5-2:: - LIB_FOUND, 13.5.1.2*Note Subsection 13-5-1:: - LIBS, 13.5.2*Note Subsection 13-5-2:: - MACHINE, 9.1*Note Section 9-1:: - MAKEINDEX, 13.7.1*Note Subsection 13-7-1:: - MENHIR_AVAILABLE, 13.6.1*Note Subsection 13-6-1:: - MENHIR_ENABLED, 13.6.2*Note Subsection 13-6-2:: - MENHIR_FLAGS, 13.6.3*Note Subsection 13-6-3:: - NATIVE_ENABLED, 13.6.2*Note Subsection 13-6-2:: - NCURSES_AVAILABLE, 14.3.1*Note Subsection 14-3-1:: - NCURSES_CFLAGS, 14.3.1*Note Subsection 14-3-1:: - NCURSES_CLIBS, 14.3.1*Note Subsection 14-3-1:: - NCURSES_TERMH_IN_NCURSES, 14.3.1*Note Subsection 14-3-1:: - NODENAME, 9.1*Note Section 9-1:: - OCAML_BYTE_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAML_CLIBS, 13.6.4*Note Subsection 13-6-4:: - OCAML_LIB_FLAGS, 13.6.4*Note Subsection 13-6-4:: - OCAML_LIBS, 13.6.4*Note Subsection 13-6-4:: - OCAML_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAML_NATIVE_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAML_OTHER_LIBS, 13.6.4*Note Subsection 13-6-4:: - OCAMLC, 13.6.2*Note Subsection 13-6-2:: - OCAMLCFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLDEP, 13.6.2*Note Subsection 13-6-2:: - OCAMLDEP_MODULES, 13.6.2*Note Subsection 13-6-2:: - OCAMLDEP_MODULES_AVAILABLE, 13.6.1*Note Subsection 13-6-1:: - OCAMLDEP_MODULES_ENABLED, 13.6.2*Note Subsection 13-6-2:: - OCAMLDEPFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLFIND, 13.6.2*Note Subsection 13-6-2:: - OCAMLFIND_EXISTS, 13.6.1*Note Subsection 13-6-1:: - OCAMLFINDFLAGS, 13.6.2*Note Subsection 13-6-2:: - OCAMLFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLINCLUDES, 13.6.2*Note Subsection 13-6-2:: - OCAMLLEX, 13.6.2*Note Subsection 13-6-2:: - OCAMLLEXFLAGS, 13.6.2*Note Subsection 13-6-2:: - OCAMLLINK, 13.6.2*Note Subsection 13-6-2:: - OCAMLMKTOP, 13.6.2*Note Subsection 13-6-2:: - OCAMLOPT, 13.6.2*Note Subsection 13-6-2:: - OCAMLOPT_EXISTS, 13.6.1*Note Subsection 13-6-1:: - OCAMLOPTFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLOPTLINK, 13.6.2*Note Subsection 13-6-2:: - OCAMLPACKS, 13.6.2*Note Subsection 13-6-2:: - OCAMLPPFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLYACC, 13.6.2*Note Subsection 13-6-2:: - OCAMLYACCFLAGS, 13.6.2*Note Subsection 13-6-2:: - OMAKE_VERSION, 9.1*Note Section 9-1:: - OMAKEPATH, 9.1*Note Section 9-1:: - OS_VERSION, 9.1*Note Section 9-1:: - OSTYPE, 9.1*Note Section 9-1:: - PATHSEP, 13.4.2*Note Subsection 13-4-2:: - PDFLATEX, 13.7.1*Note Subsection 13-7-1:: - PDFLATEXFLAGS, 13.7.1*Note Subsection 13-7-1:: - PID, 9.1*Note Section 9-1:: - prompt, 15.1*Note Section 15-1:: - READLINE_AVAILABLE, 14.3.2*Note Subsection 14-3-2:: - READLINE_CFLAGS, 14.3.2*Note Subsection 14-3-2:: - READLINE_CLIBS, 14.3.2*Note Subsection 14-3-2:: - READLINE_GNU, 14.3.2*Note Subsection 14-3-2:: - ROOT, 13.4.1*Note Subsection 13-4-1:: - SCANNER_MODE, 13.4.1*Note Subsection 13-4-1:: - SNPRINTF_AVAILABLE, 14.3.3*Note Subsection 14-3-3:: - STDLIB, 9.1*Note Section 9-1:: - STDROOT, 13.4.1*Note Subsection 13-4-1:: - SYSNAME, 9.1*Note Section 9-1:: - stderr, 10.8.1*Note Subsection 10-8-1:: - stdin, 10.8.1*Note Subsection 10-8-1:: - stdout, 10.8.1*Note Subsection 10-8-1:: - TARGETS, 9.1*Note Section 9-1:: - TETEX2_ENABLED, 13.7.1*Note Subsection 13-7-1:: - TEXDEPS, 13.7.2.1*Note Subsection 13-7-2:: - TEXINPUTS, 13.7.2.1*Note Subsection 13-7-2:: - TEXVARS, 13.7.2.1*Note Subsection 13-7-2:: - USE_OCAMLFIND, 13.6.2*Note Subsection 13-6-2:: - USEPDFLATEX, 13.7.1*Note Subsection 13-7-1:: - USER, 9.1*Note Section 9-1:: - VERBOSE, 9.1*Note Section 9-1:: - YACC, 13.5.2*Note Subsection 13-5-2::  Node: Appendix E, Next: Appendix F, Prev: Appendix D, Up: Top Appendix E Index of functions and special forms *************************************************** - absname, 10.1.9*Note Subsection 10-1-9:: - accept, 10.8.31*Note Subsection 10-8-31:: - add, 9.4.3*Note Subsection 9-4-3:: - add-project-directories, 10.6.2*Note Subsection 10-6-2:: - add-wrapper, 9.3.27*Note Subsection 9-3-27:: - addprefix, 9.3.25*Note Subsection 9-3-25:: - addsuffix, 9.3.19*Note Subsection 9-3-19:: - addsuffixes, 9.3.21*Note Subsection 9-3-21:: - and, 9.2.3*Note Subsection 9-2-3:: - apply, 9.5.2*Note Subsection 9-5-2:: - applya, 9.5.3*Note Subsection 9-5-3:: - array, 9.3.1*Note Subsection 9-3-1:: - asr, 9.4.3*Note Subsection 9-4-3:: - awk, 10.11.5*Note Subsection 10-11-5:: - basename, 10.1.4*Note Subsection 10-1-4:: - bg, 11.10.2*Note Subsection 11-10-2:: - bind, 10.8.29*Note Subsection 10-8-29:: - break, 9.3.43*Note Subsection 9-3-43:: - build, 13.3.6*Note Subsection 13-3-6:: - CGeneratedFiles, 13.5.3.1*Note Subsection 13-5-3:: - CheckCHeader, 14.1.6*Note Subsection 14-1-6:: - CheckCLib, 14.1.7*Note Subsection 14-1-7:: - CheckProg, 14.1.8*Note Subsection 14-1-8:: - ConfMsgChecking, 14.1.1*Note Subsection 14-1-1:: - ConfMsgError, 14.1.2*Note Subsection 14-1-2:: - ConfMsgFound, 14.1.3*Note Subsection 14-1-3:: - ConfMsgResult, 14.1.1*Note Subsection 14-1-1:: - ConfMsgWarn, 14.1.2*Note Subsection 14-1-2:: - ConfMsgYesNo, 14.1.3*Note Subsection 14-1-3:: - CProgram, 13.5.4.5*Note Subsection 13-5-4:: - CProgramCopy, 13.5.4.6*Note Subsection 13-5-4:: - CProgramInstall, 13.5.4.7*Note Subsection 13-5-4:: - CXXProgram, 13.5.4.8*Note Subsection 13-5-4:: - CXXProgramInstall, 13.5.4.8*Note Subsection 13-5-4:: - c-escaped, 9.3.14*Note Subsection 9-3-14:: - capitalize, 9.3.35*Note Subsection 9-3-35:: - cat, 10.11.2*Note Subsection 10-11-2:: - cd, 11.9.2*Note Subsection 11-9-2:: - channel-name, 10.8.12*Note Subsection 10-8-12:: - chmod, 10.5.9*Note Subsection 10-5-9:: - chown, 10.5.10*Note Subsection 10-5-10:: - close, 10.8.5*Note Subsection 10-8-5:: - cmp-versions, 13.2.3*Note Subsection 13-2-3:: - compare, 9.7.4*Note Subsection 9-7-4:: - concat, 9.3.3*Note Subsection 9-3-3:: - connect, 10.8.32*Note Subsection 10-8-32:: - create-lazy-map, 9.5.4*Note Subsection 9-5-4:: - create-map, 9.5.4*Note Subsection 9-5-4:: - DefineCommandVars, 13.2.4*Note Subsection 13-2-4:: - DynamicCLibrary, 13.5.4.1*Note Subsection 13-5-4:: - DynamicCLibraryCopy, 13.5.4.2*Note Subsection 13-5-4:: - DynamicCLibraryInstall, 13.5.4.3*Note Subsection 13-5-4:: - DynamicCXXLibrary, 13.5.4.9*Note Subsection 13-5-4:: - DynamicCXXLibraryCopy, 13.5.4.9*Note Subsection 13-5-4:: - DynamicCXXLibraryInstall, 13.5.4.9*Note Subsection 13-5-4:: - decode-uri, 9.3.15*Note Subsection 9-3-15:: - defined, 9.2.10*Note Subsection 9-2-10:: - defined-env, 9.2.11*Note Subsection 9-2-11:: - dependencies, 13.3.1*Note Subsection 13-3-1:: - dependencies-all, 13.3.1*Note Subsection 13-3-1:: - dependencies-proper, 13.3.1*Note Subsection 13-3-1:: - digest, 10.2.5*Note Subsection 10-2-5:: - digest-in-path, 10.2.7*Note Subsection 10-2-7:: - digest-in-path-optional, 10.2.7*Note Subsection 10-2-7:: - digest-optional, 10.2.5*Note Subsection 10-2-5:: - dir, 10.1.1*Note Subsection 10-1-1:: - dirname, 10.1.5*Note Subsection 10-1-5:: - dirof, 10.1.7*Note Subsection 10-1-7:: - div, 9.4.3*Note Subsection 9-4-3:: - dup, 10.8.13*Note Subsection 10-8-13:: - dup2, 10.8.14*Note Subsection 10-8-14:: - echo, 11.9.1*Note Subsection 11-9-1:: - encode-uri, 9.3.15*Note Subsection 9-3-15:: - eprint, 10.9*Note Section 10-9:: - eprintln, 10.9*Note Section 10-9:: - eprintv, 10.10*Note Section 10-10:: - eprintvln, 10.10*Note Section 10-10:: - eq, 9.4.4*Note Subsection 9-4-4:: - equal, 9.2.2*Note Subsection 9-2-2:: - exists-in-path, 10.2.4*Note Subsection 10-2-4:: - exit, 9.2.9*Note Subsection 9-2-9:: - export, 9.3.41*Note Subsection 9-3-41:: - fg, 11.10.3*Note Subsection 11-10-3:: - fgets, 10.8.35*Note Subsection 10-8-35:: - file, 10.1.1*Note Subsection 10-1-1:: - file-check-sort, 10.3.7*Note Subsection 10-3-7:: - file-exists, 10.3.1*Note Subsection 10-3-1:: - file-sort, 10.3.6*Note Subsection 10-3-6:: - filter, 9.3.33*Note Subsection 9-3-33:: - filter-exists, 10.3.3*Note Subsection 10-3-3:: - filter-out, 9.3.34*Note Subsection 9-3-34:: - filter-proper-targets, 10.3.3*Note Subsection 10-3-3:: - filter-targets, 10.3.3*Note Subsection 10-3-3:: - find, 10.7.2*Note Subsection 10-7-2:: - find-build-targets, 13.3.3*Note Subsection 13-3-3:: - find-in-path, 10.2.6*Note Subsection 10-2-6:: - find-in-path-optional, 10.2.6*Note Subsection 10-2-6:: - find-ocaml-targets-in-path-optional, 10.3.5*Note Subsection 10-3-5:: - find-targets-in-path, 10.3.4*Note Subsection 10-3-4:: - find-targets-in-path-optional, 10.3.4*Note Subsection 10-3-4:: - float, 9.4.2*Note Subsection 9-4-2:: - flush, 10.8.11*Note Subsection 10-8-11:: - fopen, 10.8.4*Note Subsection 10-8-4:: - foreach, 9.6.1*Note Subsection 9-6-1:: - fprint, 10.9*Note Section 10-9:: - fprintln, 10.9*Note Section 10-9:: - fprintv, 10.10*Note Section 10-10:: - fprintvln, 10.10*Note Section 10-10:: - fsubst, 10.11.6*Note Subsection 10-11-6:: - fullname, 10.1.8*Note Subsection 10-1-8:: - fun, 9.5.1*Note Subsection 9-5-1:: - ge, 9.4.4*Note Subsection 9-4-4:: - get-registry, 9.2.15*Note Subsection 9-2-15:: - getchar, 10.8.33*Note Subsection 10-8-33:: - getenv, 9.2.12*Note Subsection 9-2-12:: - getgrgid, 10.11.21*Note Subsection 10-11-21:: - getgrnam, 10.11.21*Note Subsection 10-11-21:: - gethostbyname, 10.8.23*Note Subsection 10-8-23:: - getprotobyname, 10.8.25*Note Subsection 10-8-25:: - getpwents, 10.11.19*Note Subsection 10-11-19:: - getpwnam, 10.11.18*Note Subsection 10-11-18:: - getpwuid, 10.11.18*Note Subsection 10-11-18:: - gets, 10.8.34*Note Subsection 10-8-34:: - getservbyname, 10.8.27*Note Subsection 10-8-27:: - gettimeofday, 10.11.27*Note Subsection 10-11-27:: - getvar, 9.2.16*Note Subsection 9-2-16:: - glob, 10.4.1*Note Subsection 10-4-1:: - grep, 10.11.3*Note Subsection 10-11-3:: - gt, 9.4.4*Note Subsection 9-4-4:: - history, 11.11.1*Note Subsection 11-11-1:: - homename, 10.1.10*Note Subsection 10-1-10:: - html-escaped, 9.3.14*Note Subsection 9-3-14:: - html-pre-escaped, 9.3.14*Note Subsection 9-3-14:: - html-string, 9.3.18*Note Subsection 9-3-18:: - id-escaped, 9.3.14*Note Subsection 9-3-14:: - if, 9.2.5*Note Subsection 9-2-5:: - in, 10.1.3*Note Subsection 10-1-3:: - include, 4.7*Note Section 4-7:: - input-line, 10.8.6*Note Subsection 10-8-6:: - int, 9.4.1*Note Subsection 9-4-1:: - intersection, 9.3.30*Note Subsection 9-3-30:: - intersects, 9.3.31*Note Subsection 9-3-31:: - jobs, 11.10.1*Note Subsection 11-10-1:: - join, 9.3.11*Note Subsection 9-3-11:: - kill, 11.10.6*Note Subsection 11-10-6:: - LaTeXDocument, 13.7.2.1*Note Subsection 13-7-2:: - LaTeXDocumentCopy, 13.7.2.3*Note Subsection 13-7-2:: - LaTeXDocumentInstall, 13.7.2.4*Note Subsection 13-7-2:: - LocalCGeneratedFiles, 13.5.3.1*Note Subsection 13-5-3:: - LocalOCamlGeneratedFiles, 13.6.5.1*Note Subsection 13-6-5:: - LocalTeXGeneratedFiles, 13.7.2.2*Note Subsection 13-7-2:: - land, 9.4.3*Note Subsection 9-4-3:: - le, 9.4.4*Note Subsection 9-4-4:: - length, 9.3.4*Note Subsection 9-3-4:: - lex, 10.11.7*Note Subsection 10-11-7:: - lex-search, 10.11.8*Note Subsection 10-11-8:: - link, 10.5.6*Note Subsection 10-5-6:: - listen, 10.8.30*Note Subsection 10-8-30:: - lnot, 9.4.3*Note Subsection 9-4-3:: - lockf, 10.8.20*Note Subsection 10-8-20:: - lor, 9.4.3*Note Subsection 9-4-3:: - lowercase, 9.3.38*Note Subsection 9-3-38:: - ls, 10.4.2*Note Subsection 10-4-2:: - lseek, 10.8.8*Note Subsection 10-8-8:: - lsl, 9.4.3*Note Subsection 9-4-3:: - lsr, 9.4.3*Note Subsection 9-4-3:: - lstat, 10.5.3*Note Subsection 10-5-3:: - lt, 9.4.4*Note Subsection 9-4-4:: - lxor, 9.4.3*Note Subsection 9-4-3:: - mapprefix, 9.3.26*Note Subsection 9-3-26:: - mapsuffix, 9.3.20*Note Subsection 9-3-20:: - match, 4.10*Note Section 4-10::, 9.2.6*Note Subsection 9-2-6:: - max, 9.4.3*Note Subsection 9-4-3:: - mem, 9.3.29*Note Subsection 9-3-29:: - min, 9.4.3*Note Subsection 9-4-3:: - mkdir, 10.5.1*Note Subsection 10-5-1:: - mkfifo, 10.8.18*Note Subsection 10-8-18:: - mod, 9.4.3*Note Subsection 9-4-3:: - mul, 9.4.3*Note Subsection 9-4-3:: - neg, 9.4.3*Note Subsection 9-4-3:: - not, 9.2.1*Note Subsection 9-2-1:: - nth, 9.3.5*Note Subsection 9-3-5:: - nth-hd, 9.3.7*Note Subsection 9-3-7:: - nth-tl, 9.3.8*Note Subsection 9-3-8:: - OCamlGeneratedFiles, 13.6.5.1*Note Subsection 13-6-5:: - OCamlLibrary, 13.6.6.1*Note Subsection 13-6-6:: - OCamlLibraryCopy, 13.6.6.3*Note Subsection 13-6-6:: - OCamlLibraryInstall, 13.6.6.4*Note Subsection 13-6-6:: - OCamlPackage, 13.6.6.2*Note Subsection 13-6-6:: - OCamlProgram, 13.6.6.5*Note Subsection 13-6-6:: - OCamlProgramCopy, 13.6.6.6*Note Subsection 13-6-6:: - OCamlProgramInstall, 13.6.6.7*Note Subsection 13-6-6:: - OMakeFlags, 13.2.1*Note Subsection 13-2-1:: - OMakeVersion, 13.2.2*Note Subsection 13-2-2:: - ocaml-escaped, 9.3.14*Note Subsection 9-3-14:: - open-in-string, 10.8.2*Note Subsection 10-8-2:: - open-out-string, 10.8.3*Note Subsection 10-8-3:: - or, 9.2.4*Note Subsection 9-2-4:: - out-contents, 10.8.3*Note Subsection 10-8-3:: - pipe, 10.8.17*Note Subsection 10-8-17:: - print, 10.9*Note Section 10-9:: - println, 10.9*Note Section 10-9:: - printv, 10.10*Note Section 10-10:: - printvln, 10.10*Note Section 10-10:: - project-directories, 13.3.4*Note Subsection 13-3-4:: - prompt-invisible, 10.11.26*Note Subsection 10-11-26:: - prompt-invisible-begin, 10.11.25*Note Subsection 10-11-25:: - prompt-invisible-end, 10.11.25*Note Subsection 10-11-25:: - quote, 9.3.16*Note Subsection 9-3-16:: - quote-argv, 9.3.17*Note Subsection 9-3-17:: - RunCProg, 14.1.5*Note Subsection 14-1-5:: - raise, 9.2.8*Note Subsection 9-2-8:: - random, 9.3.44*Note Subsection 9-3-44:: - random-init, 9.3.44*Note Subsection 9-3-44:: - read, 10.8.6*Note Subsection 10-8-6:: - readlink, 10.5.8*Note Subsection 10-5-8:: - rehash, 10.2.3*Note Subsection 10-2-3:: - remove-project-directories, 10.6.3*Note Subsection 10-6-3:: - removeprefix, 9.3.22*Note Subsection 9-3-22:: - removesuffix, 9.3.23*Note Subsection 9-3-23:: - rename, 10.5.5*Note Subsection 10-5-5:: - replace-nth, 9.3.6*Note Subsection 9-3-6:: - replacesuffixes, 9.3.24*Note Subsection 9-3-24:: - rev, 9.3.10*Note Subsection 9-3-10:: - rewind, 10.8.9*Note Subsection 10-8-9:: - rootname, 10.1.6*Note Subsection 10-1-6:: - rule, 13.3.5*Note Subsection 13-3-5:: - StaticCLibrary, 13.5.4.1*Note Subsection 13-5-4:: - StaticCLibraryCopy, 13.5.4.2*Note Subsection 13-5-4:: - StaticCLibraryInstall, 13.5.4.3*Note Subsection 13-5-4:: - StaticCObject, 13.5.4.4*Note Subsection 13-5-4:: - StaticCObjectCopy, 13.5.4.4*Note Subsection 13-5-4:: - StaticCObjectInstall, 13.5.4.4*Note Subsection 13-5-4:: - StaticCXXLibrary, 13.5.4.9*Note Subsection 13-5-4:: - StaticCXXLibraryCopy, 13.5.4.9*Note Subsection 13-5-4:: - StaticCXXLibraryInstall, 13.5.4.9*Note Subsection 13-5-4:: - scan, 10.11.4*Note Subsection 10-11-4:: - section, 8.3*Note Section 8-3:: - section rule, 8.4*Note Section 8-4:: - select, 10.8.19*Note Subsection 10-8-19:: - sequence-forall, 9.7.1*Note Subsection 9-7-1:: - sequence-sort, 9.7.3*Note Subsection 9-7-3:: - set, 9.3.28*Note Subsection 9-3-28:: - set-close-on-exec-mode, 10.8.16*Note Subsection 10-8-16:: - set-diff, 9.3.32*Note Subsection 9-3-32:: - set-nonblock, 10.8.15*Note Subsection 10-8-15:: - setenv, 9.2.13*Note Subsection 9-2-13:: - setvar, 9.2.17*Note Subsection 9-2-17:: - shell, 9.3.40*Note Subsection 9-3-40:: - socket, 10.8.28*Note Subsection 10-8-28:: - split, 9.3.2*Note Subsection 9-3-2:: - stat, 10.5.3*Note Subsection 10-5-3:: - stat-reset, 10.3.2*Note Subsection 10-3-2:: - stop, 11.10.4*Note Subsection 11-10-4:: - string, 9.3.12*Note Subsection 9-3-12:: - string-escaped, 9.3.14*Note Subsection 9-3-14:: - string-length, 9.3.13*Note Subsection 9-3-13:: - sub, 9.4.3*Note Subsection 9-4-3:: - subdirs, 10.4.3*Note Subsection 10-4-3:: - subrange, 9.3.9*Note Subsection 9-3-9:: - suffix, 10.1.11*Note Subsection 10-1-11:: - switch, 4.10*Note Section 4-10::, 9.2.6*Note Subsection 9-2-6:: - symlink, 10.5.7*Note Subsection 10-5-7:: - system, 9.3.39*Note Subsection 9-3-39:: - TeXGeneratedFiles, 13.7.2.2*Note Subsection 13-7-2:: - TryCompileC, 14.1.4*Note Subsection 14-1-4:: - TryLinkC, 14.1.4*Note Subsection 14-1-4:: - TryRunC, 14.1.4*Note Subsection 14-1-4:: - target, 13.3.2*Note Subsection 13-3-2:: - target-exists, 10.3.1*Note Subsection 10-3-1:: - target-is-proper, 10.3.1*Note Subsection 10-3-1:: - tell, 10.8.10*Note Subsection 10-8-10:: - test, 10.7.1*Note Subsection 10-7-1:: - tgetstr, 10.11.22*Note Subsection 10-11-22:: - tmpfile, 10.1.2*Note Subsection 10-1-2:: - truncate, 10.5.11*Note Subsection 10-5-11:: - try, 9.2.7*Note Subsection 9-2-7:: - uge, 9.4.4*Note Subsection 9-4-4:: - ugt, 9.4.4*Note Subsection 9-4-4:: - ule, 9.4.4*Note Subsection 9-4-4:: - ult, 9.4.4*Note Subsection 9-4-4:: - umask, 10.5.12*Note Subsection 10-5-12:: - uncapitalize, 9.3.36*Note Subsection 9-3-36:: - unlink, 10.5.4*Note Subsection 10-5-4:: - unsetenv, 9.2.14*Note Subsection 9-2-14:: - uppercase, 9.3.37*Note Subsection 9-3-37:: - VerboseCheckCHeader, 14.1.6*Note Subsection 14-1-6:: - VerboseCheckCLib, 14.1.7*Note Subsection 14-1-7:: - vmount, 10.6.1*Note Subsection 10-6-1:: - wait, 11.10.5*Note Subsection 11-10-5:: - where, 10.2.2*Note Subsection 10-2-2:: - which, 10.2.1*Note Subsection 10-2-1:: - while, 9.3.42*Note Subsection 9-3-42:: - write, 10.8.7*Note Subsection 10-8-7:: - xterm-escape, 10.11.24*Note Subsection 10-11-24:: - xterm-escape-begin, 10.11.23*Note Subsection 10-11-23:: - xterm-escape-end, 10.11.23*Note Subsection 10-11-23::  Node: Appendix F, Next: Appendix G, Prev: Appendix E, Up: Top Appendix F Index of objects ******************************* - Array, 12.1.7*Note Subsection 12-1-7:: - Channel, 12.1.15*Note Subsection 12-1-15:: - Dir, 12.1.14*Note Subsection 12-1-14:: - Exception, 12.1.19*Note Subsection 12-1-19:: - File, 12.1.13*Note Subsection 12-1-13:: - Float, 12.1.5*Note Subsection 12-1-5:: - Fun, 12.1.9*Note Subsection 12-1-9:: - Group, 10.11.20*Note Subsection 10-11-20:: - Host, 10.8.22*Note Subsection 10-8-22:: - InChannel, 12.1.16*Note Subsection 12-1-16:: - InetAddr, 10.8.21*Note Subsection 10-8-21:: - Int, 12.1.4*Note Subsection 12-1-4:: - Lexer, 10.11.9*Note Subsection 10-11-9:: - Location, 12.1.18*Note Subsection 12-1-18:: - Map, 12.1.2*Note Subsection 12-1-2:: - Node, 12.1.12*Note Subsection 12-1-12:: - Number, 12.1.3*Note Subsection 12-1-3:: - Object, 12.1.1*Note Subsection 12-1-1:: - OutChannel, 12.1.17*Note Subsection 12-1-17:: - Parser, 10.11.13*Note Subsection 10-11-13:: - Passwd, 10.11.17*Note Subsection 10-11-17:: - Protocol, 10.8.24*Note Subsection 10-8-24:: - Rule, 12.1.10*Note Subsection 12-1-10:: - RuntimeException, 12.1.20*Note Subsection 12-1-20:: - Sequence, 12.1.6*Note Subsection 12-1-6:: - Service, 10.8.26*Note Subsection 10-8-26:: - Shell, 12.1.22*Note Subsection 12-1-22:: - Stat, 10.5.2*Note Subsection 10-5-2:: - String, 12.1.8*Note Subsection 12-1-8:: - Target, 12.1.11*Note Subsection 12-1-11:: - UnbuildableException, 12.1.21*Note Subsection 12-1-21::  Node: Appendix G, Next: Appendix H, Prev: Appendix F, Up: Top Appendix G Index of special targets *************************************** - .BUILD_BEGIN, 13.1*Note Section 13-1:: - .BUILD_FAILURE, 13.1*Note Section 13-1:: - .BUILD_SUCCESS, 13.1*Note Section 13-1:: - .BUILDORDER, 10.3.6*Note Subsection 10-3-6:: - .DEFAULT, 8.7*Note Section 8-7::, 8.12.1*Note Subsection 8-12-1:: - .INCLUDE, 8.9*Note Section 8-9:: - .MEMO, 4.14.1.1*Note Subsection 4-14-1:: - .ORDER, 10.3.6*Note Subsection 10-3-6:: - .PHONY, 8.10*Note Section 8-10::, 8.11.3*Note Subsection 8-11-3::, 8.12.1*Note Subsection 8-12-1::, 8.12.2*Note Subsection 8-12-2:: - .SCANNER, 8.6*Note Section 8-6::, 8.11.2*Note Subsection 8-11-2:: - .STATIC, 4.14.1*Note Subsection 4-14-1:: - .SUBDIRS, 8.8*Note Section 8-8::  Node: Appendix H, Next: Appendix I, Prev: Appendix G, Up: Top Appendix H Index of options ******************************* - --absname, A.3.20*Note Subsection A-3-20:: - --all-dependencies, A.3.15*Note Subsection A-3-15:: - --configure, A.3.9*Note Subsection A-3-9:: - --depend, A.3.8*Note Subsection A-3-8:: - --dotomake, A.3.11*Note Subsection A-3-11:: - --force-dotomake, A.3.10*Note Subsection A-3-10:: - --install, A.3.17*Note Subsection A-3-17:: - --install-all, A.3.18*Note Subsection A-3-18:: - --install-force, A.3.19*Note Subsection A-3-19:: - --output-at-end, A.2.11*Note Subsection A-2-11:: - --output-normal, A.2.8*Note Subsection A-2-8:: - --output-only-errors, A.2.10*Note Subsection A-2-10:: - --output-postpone, A.2.9*Note Subsection A-2-9:: - --print-dependencies, A.3.13*Note Subsection A-3-13:: - --print-exit, A.2.6*Note Subsection A-2-6:: - --print-status, A.2.5*Note Subsection A-2-5:: - --progress, A.2.4*Note Subsection A-2-4:: - --show-dependencies, A.3.14*Note Subsection A-3-14:: - --verbose, A.2.7*Note Subsection A-2-7:: - --verbose-dependencies, A.3.16*Note Subsection A-3-16:: - -j, A.3.12*Note Subsection A-3-12:: - -k, A.3.1*Note Subsection A-3-1:: - -n, A.3.2*Note Subsection A-3-2:: - -o, A.2.12*Note Subsection A-2-12:: - -P, A.3.4*Note Subsection A-3-4:: - -p, A.3.3*Note Subsection A-3-3:: - -R, A.3.5*Note Subsection A-3-5:: - -S, A.2.2*Note Subsection A-2-2:: - -s, A.2.1*Note Subsection A-2-1:: - -t, A.3.6*Note Subsection A-3-6:: - -U, A.3.7*Note Subsection A-3-7:: - -w, A.2.3*Note Subsection A-2-3:: - variable definition, A.3.21*Note Subsection A-3-21::  Node: Appendix I, Next: Section I-1, Prev: Appendix H, Up: Top Appendix I References ************************* * Menu: * Section I-1:: See Also * Section I-2:: Version * Section I-3:: License and Copyright * Section I-4:: Author  Node: Section I-1, Next: Section I-2, Prev: Appendix I, Up: Appendix I I.1 See Also *=*=*=*=*=*=*= omake(1) (Chapter 1*Note Chapter 1::), osh(1) (Chapter 15*Note Chapter 15::), make(1)  Node: Section I-2, Next: Section I-3, Prev: Section I-1, Up: Appendix I I.2 Version *=*=*=*=*=*=* Version: 0.9.8.5 of 7^thAugust, 2007.  Node: Section I-3, Next: Section I-4, Prev: Section I-2, Up: Appendix I I.3 License and Copyright *=*=*=*=*=*=*=*=*=*=*=*=*=* (c) 2003-2006, Mojave Group, Caltech This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  Node: Section I-4, Prev: Section I-3, Up: Appendix I I.4 Author *=*=*=*=*=*= Jason Hickey, Aleksey Nogin, et. al. Caltech 256-80 Pasadena, CA 91125, USA Email: omake-devel@metaprl.org WWW: http://www.cs.caltech.edu/~jyh and http://nogin.org/ omake-0.9.8.5/doc/info/omake-doc.info-10000664000152300015230000014200610656155147015522 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Top, Next: Chapter 1, Up: (dir) OMake manual: The OMake user guide and reference manual ***************************************** Jason Hickey, Aleksey Nogin, et. al. ==================================== 7^thAugust, 2007 ================ All the documentation on a single page (23*Note Notes 0::) OMake table of contents Contents ******** * Menu: * Chapter 1:: Guide * Chapter 2:: OMake quickstart guide * Chapter 3:: Additional build examples * Chapter 4:: OMake concepts and syntax * Chapter 5:: Variables and Naming * Chapter 6:: Expressions and values * Chapter 7:: Additional language examples * Chapter 8:: Rules * Chapter 9:: Base library * Chapter 10:: File, I/O and system operations * Chapter 11:: Shell commands * Chapter 12:: The standard objects * Chapter 13:: Build functions and utilities * Chapter 14:: Autoconfiguration functions and variables * Chapter 15:: The OSH shell * Appendix A:: Synopsis * Appendix B:: OMake grammar * Appendix C:: Index * Appendix D:: Index of variables * Appendix E:: Index of functions and special forms * Appendix F:: Index of objects * Appendix G:: Index of special targets * Appendix H:: Index of options * Appendix I:: References ------------------------------------- This file has been translated from LaTeX by HeVeA.  Node: Notes 0 ----------------------------------- (1) http://omake.metaprl.org/ (2) omake.html (3) omake-doc.html (4) omake-toc.html (5) omake-contents.html (6) omake-all-index.html (7) omake-var-index.html (8) omake-fun-index.html (9) omake-obj-index.html (10) omake-target-index.html (11) omake-option-index.html (12) http://omake.metaprl.org/ (13) omake.html (14) omake-doc.html (15) omake-toc.html (16) omake-contents.html (17) omake-all-index.html (18) omake-var-index.html (19) omake-fun-index.html (20) omake-obj-index.html (21) omake-target-index.html (22) omake-option-index.html (23) omake-doc.html  Node: Chapter 1, Next: Chapter 2, Prev: Top, Up: Top Chapter 1 Guide ******************* If you are new to OMake, you the omake-quickstart (1*Note Notes 1::) presents a short introduction that describes how to set up a project. The omake-build-examples (2*Note Notes 1::) gives larger examples of build projects, and omake-language-examples (3*Note Notes 1::) presents programming examples. Quickstart 2*Note Chapter 2:: A quickstart guide to using omake. Build examples 3*Note Chapter 3:: Advanced build examples. The OMake language 4*Note Chapter 4:: The omake language, including a description of objects, expressions, and values. Variables and naming 5*Note Chapter 5:: Variables, names, and environments. Language discussion 6*Note Chapter 6:: Further discussion on the language, including scoping, evaluation, and objects. Language examples 7*Note Chapter 7:: Additional language examples. Build rules 8*Note Chapter 8:: Defining and using rules to build programs. Base builtin functions 9*Note Chapter 9:: Functions and variables in the core standard library. System functions 10*Note Chapter 10:: Functions on files, input/output, and system commands. Shell commands 11*Note Chapter 11:: Using the omake shell for command-line interpretation. The standard objects 12*Note Chapter 12:: Pervasives defines the built-in objects. Standard build definitions 13*Note Chapter 13:: The build specifications for programming languages in the OMake standard library. Standard autoconfiguration functions and variables 14*Note Chapter 14:: The utilities provoded by the OMake standard library to simplify programming of autoconfiguration tests. The interactive command interpreter 15*Note Chapter 15:: The osh command-line interpreter. Appendices OMake command-line options A*Note Appendix A:: Command-line options for omake. The OMake language grammar B*Note Appendix B:: A more precise specification of the OMake language. All the documentation on a single page (4*Note Notes 1::) All the OMake documentation in a single page.  Node: Notes 1 ----------------------------------- (1) omake-quickstart.html (2) omake-build-examples.html (3) omake-language-examples.html (4) omake-doc.html  Node: Chapter 2, Next: Section 2-1, Prev: Chapter 1, Up: Top Chapter 2 OMake quickstart guide ************************************ * Menu: * Section 2-1:: Description * Section 2-2:: For users already familiar with make * Section 2-3:: Building a small C program * Section 2-4:: Larger projects * Section 2-5:: Subdirectories * Section 2-6:: Other things to consider * Section 2-7:: Building OCaml programs * Section 2-8:: The OMakefile and OMakeroot files * Section 2-9:: Multiple version support * Section 2-10:: Notes  Node: Section 2-1, Next: Subsection 2-1-1, Prev: Chapter 2, Up: Chapter 2 2.1 Description *=*=*=*=*=*=*=*=* omake is designed for building projects that might have source files in several directories. Projects are normally specified using an OMakefile in each of the project directories, and an OMakeroot file in the root directory of the project. The OMakeroot file specifies general build rules, and the OMakefiles specify the build parameters specific to each of the subdirectories. When omake runs, it walks the configuration tree, evaluating rules from all of the OMakefiles. The project is then built from the entire collection of build rules. * Menu: * Subsection 2-1-1:: Automatic dependency analysis * Subsection 2-1-2:: Content-based dependency analysis  Node: Subsection 2-1-1, Next: Subsection 2-1-2, Prev: Section 2-1, Up: Section 2-1 2.1.1 Automatic dependency analysis ===================================== Dependency analysis has always been problematic with the make(1) program. omake addresses this by adding the `.SCANNER' target, which specifies a command to produce dependencies. For example, the following rule << .SCANNER: %.o: %.c $(CC) $(INCLUDE) -MM $< >> is the standard way to generate dependencies for `.c' files. omake will automatically run the scanner when it needs to determine dependencies for a file.  Node: Subsection 2-1-2, Next: Section 2-2, Prev: Subsection 2-1-1, Up: Section 2-1 2.1.2 Content-based dependency analysis ========================================= Dependency analysis in omake uses MD5 digests to determine whether files have changed. After each run, omake stores the dependency information in a file called .omakedb in the project root directory. When a rule is considered for execution, the command is not executed if the target, dependencies, and command sequence are unchanged since the last run of omake. As an optimization, omake does not recompute the digest for a file that has an unchanged modification time, size, and inode number.  Node: Section 2-2, Next: Section 2-3, Prev: Section 2-1, Up: Chapter 2 2.2 For users already familiar with make *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= For users already familiar with the make(1) command, here is a list of differences to keep in mind when using omake. - In omake, you are much less likely to define build rules of your own. The system provides many standard functions (like 'StaticCLibrary' and 'CProgram'), described in Chapter 13*Note Chapter 13::, to specify these builds more simply. - Implicit rules using `.SUFFIXES' and the `.suf1.suf2:' are not supported. You should use wildcard patterns instead `%.suf2: %.suf1'. - Scoping is significant: you should define variables and `.PHONY' targets (see Section 8.10*Note Section 8-10::) before they are used. - Subdirectories are incorporated into a project using the `.SUBDIRS:' target (see Section 8.8*Note Section 8-8::).  Node: Section 2-3, Next: Section 2-4, Prev: Section 2-2, Up: Chapter 2 2.3 Building a small C program *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= To start a new project, the easiest method is to change directories to the project root and use the command `omake --install' to install default OMakefiles. << $ cd ~/newproject $ omake --install *** omake: creating OMakeroot *** omake: creating OMakefile *** omake: project files OMakefile and OMakeroot have been installed *** omake: you should edit these files before continuing >> The default OMakefile contains sections for building C and OCaml programs. For now, we'll build a simple C project. Suppose we have a C file called `hello_code.c' containing the following code: << #include int main(int argc, char **argv) { printf("Hello world\n"); return 0; } >> To build the program a program `hello' from this file, we can use the 'CProgram' function. The OMakefile contains just one line that specifies that the program `hello' is to be built from the source code in the `hello_code.c' file (note that file suffixes are not passed to these functions). << CProgram(hello, hello_code) >> Now we can run omake to build the project. Note that the first time we run omake, it both scans the `hello_code.c' file for dependencies, and compiles it using the `cc' compiler. The status line printed at the end indicates how many files were scanned, how many were built, and how many MD5 digests were computed. << $ omake hello *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.0 sec) - scan . hello_code.o + cc -I. -MM hello_code.c - build . hello_code.o + cc -I. -c -o hello_code.o hello_code.c - build . hello + cc -o hello hello_code.o *** omake: done (0.5 sec, 1/6 scans, 2/6 rules, 5/22 digests) $ omake *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.1 sec) *** omake: done (0.1 sec, 0/4 scans, 0/4 rules, 0/9 digests) >> If we want to change the compile options, we can redefine the `CC' and `CFLAGS' variables before the `CProgram' line. In this example, we will use the `gcc' compiler with the `-g' option. In addition, we will specify a `.DEFAULT' target to be built by default. The `EXE' variable is defined to be `.exe' on `Win32' systems; it is empty otherwise. << CC = gcc CFLAGS += -g CProgram(hello, hello_code) .DEFAULT: hello$(EXE) >> Here is the corresponding run for omake. << $ omake *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.0 sec) - scan . hello_code.o + gcc -g -I. -MM hello_code.c - build . hello_code.o + gcc -g -I. -c -o hello_code.o hello_code.c - build . hello + gcc -g -o hello hello_code.o *** omake: done (0.4 sec, 1/7 scans, 2/7 rules, 3/22 digests) >> We can, of course, include multiple files in the program. Suppose we write a new file `hello_helper.c'. We would include this in the project as follows. << CC = gcc CFLAGS += -g CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >>  Node: Section 2-4, Next: Section 2-5, Prev: Section 2-3, Up: Chapter 2 2.4 Larger projects *=*=*=*=*=*=*=*=*=*=* As the project grows it is likely that we will want to build libraries of code. Libraries can be built using the `StaticCLibrary' function. Here is an example of an OMakefile with two libraries. << CC = gcc CFLAGS += -g FOO_FILES = foo_a foo_b BAR_FILES = bar_a bar_b bar_c StaticCLibrary(libfoo, $(FOO_FILES)) StaticCLibrary(libbar, $(BAR_FILES)) # The hello program is linked with both libraries LIBS = libfoo libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >>  Node: Section 2-5, Next: Section 2-6, Prev: Section 2-4, Up: Chapter 2 2.5 Subdirectories *=*=*=*=*=*=*=*=*=*= As the project grows even further, it is a good idea to split it into several directories. Suppose we place the `libfoo' and `libbar' into subdirectories. In each subdirectory, we define an OMakefile for that directory. For example, here is an example OMakefile for the `foo' subdirectory. << INCLUDES += .. ../bar FOO_FILES = foo_a foo_b StaticCLibrary(libfoo, $(FOO_FILES)) >> Note the the `INCLUDES' variable is defined to include the other directories in the project. Now, the next step is to link the subdirectories into the main project. The project OMakefile should be modified to include a `.SUBDIRS:' target. << # Project configuration CC = gcc CFLAGS += -g # Subdirectories .SUBDIRS: foo bar # The libraries are now in subdirectories LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> Note that the variables `CC' and `CFLAGS' are defined before the `.SUBDIRS' target. These variables remain defined in the subdirectories, so that `libfoo' and `libbar' use `gcc -g'. If the two directories are to be configured differently, we have two choices. The OMakefile in each subdirectory can be modified with its configuration (this is how it would normally be done). Alternatively, we can also place the change in the root OMakefile. << # Default project configuration CC = gcc CFLAGS += -g # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler CFLAGS += -O3 .SUBDIRS: bar # Main program LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> Note that the way we have specified it, the `CFLAGS' variable also contains the `-O3' option for the `CProgram', and `hello_code.c' and `hello_helper.c' file will both be compiled with the `-O3' option. If we want to make the change truly local to `libbar', we can put the `bar' subdirectory in its own scope using the `section' form. << # Default project configuration CC = gcc CFLAGS += -g # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += -O3 .SUBDIRS: bar # Main program does not use the optimizing compiler LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> Later, suppose we decide to port this project to `Win32', and we discover that we need different compiler flags and an additional library. << # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3) .SUBDIRS: bar # Default libraries LIBS = foo/libfoo bar/libbar # We need libwin32 only on Win32 if $(equal $(OSTYPE), Win32) LIBS += win32/libwin32 .SUBDIRS: win32 export # Main program does not use the optimizing compiler CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> Note the use of the `export' directives to export the variable definitions from the if-statements. Variables in omake are scoped---variables in nested blocks (blocks with greater indentation), are not normally defined in outer blocks. The `export' directive specifies that the variable definitions in the nested blocks should be exported to their parent block. Finally, for this example, we decide to copy all libraries into a common `lib' directory. We first define a directory variable, and replace occurrences of the `lib' string with the variable. << # The common lib directory LIB = $(dir lib) # phony target to build just the libraries .PHONY: makelibs # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3) .SUBDIRS: bar # Default libraries LIBS = $(LIB)/libfoo $(LIB)/libbar # We need libwin32 only on Win32 if $(equal $(OSTYPE), Win32) LIBS += $(LIB)/libwin32 .SUBDIRS: win32 export # Main program does not use the optimizing compiler CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> In each subdirectory, we modify the OMakefiles in the library directories to install them into the `$(LIB)' directory. Here is the relevant change to foo/OMakefile. << INCLUDES += .. ../bar FOO_FILES = foo_a foo_b StaticCLibraryInstall(makelib, $(LIB), libfoo, $(FOO_FILES)) >> Directory (and file names) evaluate to relative pathnames. Within the `foo' directory, the `$(LIB)' variable evaluates to `../lib'. As another example, instead of defining the `INCLUDES' variable separately in each subdirectory, we can define it in the toplevel as follows. << INCLUDES = $(ROOT) $(dir foo bar win32) >> In the `foo' directory, the `INCLUDES' variable will evaluate to the string `.. . ../bar ../win32'. In the `bar' directory, it would be `.. ../foo . ../win32'. In the root directory it would be `. foo bar win32'.  Node: Section 2-6, Next: Section 2-7, Prev: Section 2-5, Up: Chapter 2 2.6 Other things to consider *=*=*=*=*=*=*=*=*=*=*=*=*=*=*= omake also handles recursive subdirectories. For example, suppose the `foo' directory itself contains several subdirectories. The foo/OMakefile would then contain its own `.SUBDIRS' target, and each of its subdirectories would contain its own `OMakefile'.  Node: Section 2-7, Next: Section 2-8, Prev: Section 2-6, Up: Chapter 2 2.7 Building OCaml programs *=*=*=*=*=*=*=*=*=*=*=*=*=*=* By default, omake is also configured with functions for building OCaml programs. The functions for OCaml program use the `OCaml' prefix. For example, suppose we reconstruct the previous example in OCaml, and we have a file called `hello_code.ml' that contains the following code. << open Printf let () = printf "Hello world\n" >> An example OMakefile for this simple project would contain the following. << # Use the byte-code compiler BYTE_ENABLED = true NATIVE_ENABLED = false OCAMLCFLAGS += -g # Build the program OCamlProgram(hello, hello_code) .DEFAULT: hello.run >> Next, suppose the we have two library subdirectories: the `foo' subdirectory is written in C, the `bar' directory is written in OCaml, and we need to use the standard OCaml `Unix' module. << # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # Use the byte-code compiler BYTE_ENABLED = true NATIVE_ENABLED = false OCAMLCFLAGS += -g # library subdirectories INCLUDES += $(dir foo bar) OCAMLINCLUDES += $(dir foo bar) .SUBDIRS: foo bar # C libraries LIBS = foo/libfoo # OCaml libraries OCAML_LIBS = bar/libbar # Also use the Unix module OCAML_OTHER_LIBS = unix # The main program OCamlProgram(hello, hello_code hello_helper) .DEFAULT: hello >> The foo/OMakefile would be configured as a C library. << FOO_FILES = foo_a foo_b StaticCLibrary(libfoo, $(FOO_FILES)) >> The bar/OMakefile would build an ML library. << BAR_FILES = bar_a bar_b bar_c OCamlLibrary(libbar, $(BAR_FILES)) >>  Node: Section 2-8, Next: Section 2-9, Prev: Section 2-7, Up: Chapter 2 2.8 The OMakefile and OMakeroot files *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* OMake uses the OMakefile and OMakeroot files for configuring a project. The syntax of these files is the same, but their role is slightly different. For one thing, every project must have exactly one OMakeroot file in the project root directory. This file serves to identify the project root, and it contains code that sets up the project. In contrast, a multi-directory project will often have an OMakefile in each of the project subdirectories, specifying how to build the files in that subdirectory. Normally, the OMakeroot file is boilerplate. The following listing is a typical example. << include $(STDLIB)/build/Common include $(STDLIB)/build/C include $(STDLIB)/build/OCaml include $(STDLIB)/build/LaTeX # Redefine the command-line variables DefineCommandVars(.) # The current directory is part of the project .SUBDIRS: . >> The `include' lines include the standard configuration files needed for the project. The `$(STDLIB)' represents the omake library directory. The only required configuration file is `Common'. The others are optional; for example, the `$(STDLIB)/build/OCaml' file is needed only when the project contains programs written in OCaml. The `DefineCommandVars' function defines any variables specified on the command line (as arguments of the form `VAR='). The `.SUBDIRS' line specifies that the current directory is part of the project (so the `OMakefile' should be read). Normally, the `OMakeroot' file should be small and project-independent. Any project-specific configuration should be placed in the `OMakefiles' of the project.  Node: Section 2-9, Next: Section 2-10, Prev: Section 2-8, Up: Chapter 2 2.9 Multiple version support *=*=*=*=*=*=*=*=*=*=*=*=*=*=*= OMake version `0.9.6' introduced preliminary support for multiple, simultaneous versions of a project. Versioning uses the `vmount(dir1, dir2)' function, which defines a "virtual mount" of directory `dir1' over directory `dir2'. A "virtual mount" is like a transparent mount in Unix, where the files from `dir1' appear in the `dir2' namespace, but new files are created in `dir2'. More precisely, the filename `dir2/foo' refers to: a) the file `dir1/foo' if it exists, or b) `dir2/foo' otherwise. The `vmount' function makes it easy to specify multiple versions of a project. Suppose we have a project where the source files are in the directory `src/', and we want to compile two versions, one with debugging support and one optimized. We create two directories, debug and opt, and mount the src directory over them. << section CFLAGS += -g vmount(-l, src, debug) .SUBDIRS: debug section CFLAGS += -O3 vmount(-l, src, opt) .SUBDIRS: opt >> Here, we are using `section' blocks to define the scope of the `vmount'---you may not need them in your project. The `-l' option is optional. It specifies that files form the `src' directory should be linked into the target directories (or copied, if the system is Win32). The links are added as files are referenced. If no options are given, then files are not copied or linked, but filenames are translated to refer directly to the `src/' files. Now, when a file is referenced in the `debug' directory, it is linked from the `src' directory if it exists. For example, when the file `debug/OMakefile' is read, the `src/OMakefile' is linked into the `debug/' directory. The `vmount' model is fairly transparent. The `OMakefile's can be written as if referring to files in the `src/' directory---they need not be aware of mounting. However, there are a few points to keep in mind.  Node: Section 2-10, Next: Chapter 3, Prev: Section 2-9, Up: Chapter 2 2.10 Notes *=*=*=*=*=*= - When using the `vmount' function for versioning, it wise to keep the source files distinct from the compiled versions. For example, suppose the source directory contained a file `src/foo.o'. When mounted, the `foo.o' file will be the same in all versions, which is probably not what you want. It is better to keep the `src/' directory pristine, containing no compiled code. - When using the `vmount -l' option, files are linked into the version directory only if they are referenced in the project. Functions that examine the filesystem (like `$(ls ...)') may produce unexpected results.  Node: Chapter 3, Next: Section 3-1, Prev: Chapter 2, Up: Top Chapter 3 Additional build examples *************************************** Let's explain the OMake build model a bit more. One issue that dominates this discussion is that OMake is based on global project analysis. That means you define a configuration for the entire project, and you run one instance of omake. For single-directory projects this doesn't mean much. For multi-directory projects it means a lot. With GNU make, you would usually invoke the `make' program recursively for each directory in the project. For example, suppose you had a project with some project root directory, containing a directory of sources `src', which in turn contains subdirectories `lib' and `main'. So your project looks like this nice piece of ASCII art. << my_project/ |--> Makefile `--> src/ |---> Makefile |---> lib/ | |---> Makefile | `---> source files... `---> main/ |---> Makefile `---> source files... >> Typically, with GNU make, you would start an instance of `make' in `my_project/'; this would in term start an instance of `make' in the `src/' directory; and this would start new instances in `lib/' and `main/'. Basically, you count up the number of `Makefile's in the project, and that is the number of instances of `make' processes that will be created. The number of processes is no big deal with today's machines (sometimes contrary the the author's opinion, we no longer live in the 1970s). The problem with the scheme was that each `make' process had a separate configuration, and it took a lot of work to make sure that everything was consistent. Furthermore, suppose the programmer runs `make' in the `main/' directory, but the `lib/' is out-of-date. In this case, `make' would happily crank away, perhaps trying to rebuild files in `lib/', perhaps just giving up. With OMake this changes entirely. Well, not entirely. The source structure is quite similar, we merely add some Os to the ASCII art. << my_project/ |--> OMakeroot (or Root.om) |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | `---> source files... `---> main/ |---> OMakefile `---> source files... >> The role of each `/OMakefile' plays the same role as each `/Makefile': it describes how to build the source files in `'. The OMakefile retains much of syntax and structure of the Makefile, but in most cases it is much simpler. One minor difference is the presence of the OMakeroot in the project root. The main purpose of this file is to indicate where the project root is in the first place (in case `omake' is invoked from a subdirectory). The `OMakeroot' serves as the bootstrap file; omake starts by reading this file first. Otherwise, the syntax and evaluation of `OMakeroot' is no different from any other `OMakefile'. The big difference is that OMake performs a global analysis. Here is what happens when `omake' starts. 1. omake locates that OMakeroot file, and reads it. 2. Each OMakefile points to its subdirectory OMakefiles using the .SUBDIRS target. For example, `my_project/OMakefile' has a rule, << .SUBDIRS: src >> and the `my_project/src/OMakefile' has a rule, << .SUBDIRS: lib main >> `omake' uses these rules to read and evaluate every `OMakefile' in the project. Reading and evaluation is fast. This part of the process is cheap. 3. Now that the entire configuration is read, `omake' determines which files are out-of-date (using a global analysis), and starts the build process. This may take a while, depending on what exactly needs to be done. There are several advantages to this model. First, since analysis is global, it is much easier to ensure that the build configuration is consistent--after all, there is only one configuration. Another benefit is that the build configuration is inherited, and can be re-used, down the hierarchy. Typically, the root `OMakefile' defines some standard boilerplate and configuration, and this is inherited by subdirectories that tweak and modify it (but do not need to restate it entirely). The disadvantage of course is space, since this is global analysis after all. In practice rarely seems to be a concern; omake takes up much less space than your web browser even on large projects. Some notes to the GNU/BSD make user. - OMakefiles are a lot like Makefiles. The syntax is similar, and there many of the builtin functions are similar. However, the two build systems are not the same. Some evil features (in the authors' opinions) have been dropped in OMake, and some new features have been added. - OMake works the same way on all platforms, including Win32. The standard configuration does the right thing, but if you care about porting your code to multiple platforms, and you use some tricky features, you may need to condition parts of your build config on the `$(OSTYPE)' variable. - A minor issue is that OMake dependency analysis is based on MD5 file digests. That is, dependencies are based on file contents, not file modification times. Say goodbye to false rebuilds based on spurious timestamp changes and mismatches between local time and fileserver time. * Menu: * Section 3-1:: OMakeroot vs. OMakefile * Section 3-2:: An example C project * Section 3-3:: An example OCaml project * Section 3-4:: Handling new languages * Section 3-5:: Collapsing the hierarchy, .SUBDIRS bodies  Node: Section 3-1, Next: Section 3-2, Prev: Chapter 3, Up: Chapter 3 3.1 OMakeroot vs. OMakefile *=*=*=*=*=*=*=*=*=*=*=*=*=*=* Before we begin with examples, let's ask the first question, "What is the difference between the project root OMakeroot and OMakefile?" A short answer is, there is no difference, but you must have an OMakeroot file (or Root.om file). However, the normal style is that OMakeroot is boilerplate and is more-or-less the same for all projects. The OMakefile is where you put all your project-specific stuff. To get started, you don't have to do this yourself. In most cases you just perform the following step in your project root directory. - Run `omake --install' in your project root. This will create the initial OMakeroot and OMakefile files that you can edit to get started.  Node: Section 3-2, Next: Section 3-3, Prev: Section 3-1, Up: Chapter 3 3.2 An example C project *=*=*=*=*=*=*=*=*=*=*=*=*= To begin, let's start with a simple example. Let's say that we have a full directory tree, containing the following files. << my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> ouch.c | |---> ouch.h | `---> bandaid.c `---> main/ |---> OMakefile |---> horsefly.c |---> horsefly.h `---> main.c >> Here is an example listing. <> Most of the configuration here is defined in the file `build/C.om' (which is part of the OMake distribution). This file takes care of a lot of work, including: - Defining the `StaticCLibrary' and `CProgram' functions, which describe the canonical way to build C libraries and programs. - Defining a mechanism for scanning each of the source programs to discover dependencies. That is, it defines .SCANNER rules for C source files. Variables are inherited down the hierarchy, so for example, the value of CFLAGS in src/main/OMakefile is "`-g -O2'".  Node: Section 3-3, Next: Section 3-4, Prev: Section 3-2, Up: Chapter 3 3.3 An example OCaml project *=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Let's repeat the example, assuming we are using OCaml instead of C. This time, the directory tree looks like this. << my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> ouch.ml | |---> ouch.mli | `---> bandaid.ml `---> main/ |---> OMakefile |---> horsefly.ml |---> horsefly.mli `---> main.ml >> The listing is only a bit different. <> In this case, most of the configuration here is defined in the file `build/OCaml.om'. In this particular configuration, files in `my_project/src/lib' are compiled aggressively with the option `-inline 10', but files in `my_project/src/lib' are compiled normally.  Node: Section 3-4, Next: Subsection 3-4-1, Prev: Section 3-3, Up: Chapter 3 3.4 Handling new languages *=*=*=*=*=*=*=*=*=*=*=*=*=*= The previous two examples seem to be easy enough, but they rely on the OMake standard library (the files `build/C' and `build/OCaml') to do all the work. What happens if we want to write a build configuration for a language that is not already supported in the OMake standard library? For this example, let's suppose we are adopting a new language. The language uses the standard compile/link model, but is not in the OMake standard library. Specifically, let's say we have the following setup. - Source files are defined in files with a `.cat' suffix (for Categorical Abstract Terminology). - `.cat' files are compiled with the `catc' compiler to produce `.woof' files (Wicked Object-Oriented Format). - `.woof' files are linked by the `catc' compiler with the `-c' option to produce a `.dog' executable (Digital Object Group). The `catc' also defines a `-a' option to combine several `.woof' files into a library. - Each `.cat' can refer to other source files. If a source file `a.cat' contains a line `open b', then `a.cat' depends on the file `b.woof', and `a.cat' must be recompiled if `b.woof' changes. The `catc' function takes a `-I' option to define a search path for dependencies. To define a build configuration, we have to do three things. 1. Define a `.SCANNER' rule for discovering dependency information for the source files. 2. Define a generic rule for compiling a `.cat' file to a `.woof' file. 3. Define a rule (as a function) for linking `.woof' files to produce a `.dog' executable. Initially, these definitions will be placed in the project root `OMakefile'. * Menu: * Subsection 3-4-1:: Defining a default compilation rule * Subsection 3-4-2:: Defining a rule for linking * Subsection 3-4-3:: Dependency scanning * Subsection 3-4-4:: Pulling it all together * Subsection 3-4-5:: Finishing up  Node: Subsection 3-4-1, Next: Subsection 3-4-2, Prev: Section 3-4, Up: Section 3-4 3.4.1 Defining a default compilation rule =========================================== Let's start with part 2, defining a generic compilation rule. We'll define the build rule as an implicit rule. To handle the include path, we'll define a variable `CAT_INCLUDES' that specifies the include path. This will be an array of directories. To define the options, we'll use a lazy variable (Section 7.5*Note Section 7-5::). In case there are any other standard flags, we'll define a `CAT_FLAGS' variable. << # Define the catc command, in case we ever want to override it CATC = catc # The default flags are empty CAT_FLAGS = # The directories in the include path (empty by default) INCLUDES[] = # Compute the include options from the include path PREFIXED_INCLUDES[] = $`(mapprefix -I, $(INCLUDES)) # The default way to build a .woof file %.woof: %.cat $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) -c $< >> The final part is the build rule itself, where we call the `catc' compiler with the include path, and the `CAT_FLAGS' that have been defined. The `$<' variable represents the source file.  Node: Subsection 3-4-2, Next: Subsection 3-4-3, Prev: Subsection 3-4-1, Up: Section 3-4 3.4.2 Defining a rule for linking =================================== For linking, we'll define another rule describing how to perform linking. Instead of defining an implicit rule, we'll define a function that describes the linking step. The function will take two arguments; the first is the name of the executable (without suffix), and the second is the files to link (also without suffixes). Here is the code fragment. << # Optional link options CAT_LINK_FLAGS = # The function that defines how to build a .dog program CatProgram(program, files) = # Add the suffixes file_names = $(addsuffix .woof, $(files)) prog_name = $(addsuffix .dog, $(files)) # The build rule $(prog_name): $(file_names) $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -o $@ $+ # Return the program name value $(prog_name) >> The `CAT_LINK_FLAGS' variable is defined just in case we want to pass additional flags specific to the link step. Now that this function is defined, whenever we want to define a rule for building a program, we simply call the rule. The previous implicit rule specifies how to compile each source file, and the `CatProgram' function specifies how to build the executable. << # Build a rover.dog program from the source # files neko.cat and chat.cat. # Compile it by default. .DEFAULT: $(CatProgram rover, neko chat) >>  Node: Subsection 3-4-3, Next: Subsection 3-4-4, Prev: Subsection 3-4-2, Up: Section 3-4 3.4.3 Dependency scanning =========================== That's it, almost. The part we left out was automated dependency scanning. This is one of the nicer features of OMake, and one that makes build specifications easier to write and more robust. Strictly speaking, it isn't required, but you definitely want to do it. The mechanism is to define a `.SCANNER' rule, which is like a normal rule, but it specifies how to compute dependencies, not the target itself. In this case, we want to define a `.SCANNER' rule of the following form. << .SCANNER: %.woof: %.cat >> This rule specifies that a `.woof' file may have additional dependencies that can be extracted from the corresponding `.cat' file by executing the `'. The result of executing the `' should be a sequence of dependencies in OMake format, printed to the standard output. As we mentioned, each `.cat' file specifies dependencies on `.woof' files with an `open' directive. For example, if the `neko.cat' file contains a line `open chat', then `neko.woof' depends on `chat.woof'. In this case, the `' should print the following line. << neko.woof: chat.woof >> For an analogy that might make this clearer, consider the C programming language, where a `.o' file is produced by compiling a `.c' file. If a file `foo.c' contains a line like `#include "fum.h"', then `foo.c' should be recompiled whenever `fum.h' changes. That is, the file `foo.o' depends on the file `fum.h'. In the OMake parlance, this is called an implicit dependency, and the `.SCANNER' `' would print a line like the following. << foo.o: fum.h >> Now, returning to the animal world, to compute the dependencies of `neko.woof', we should scan `neko.cat', line-by-line, looking for lines of the form `open '. We could do this by writing a program, but it is easy enough to do it in `omake' itself. We can use the builtin 'awk' function to scan the source file. One slight complication is that the dependencies depend on the `INCLUDE' path. We'll use the 'find-in-path' function to find them. Here we go. << .SCANNER: %.woof: %.cat section # Scan the file deps[] = awk($<) case $'^open' deps[] += $2 export # Remove duplicates, and find the files in the include path deps = $(find-in-path $(INCLUDES), $(set $(deps))) # Print the dependencies println($"$@: $(deps)") >> Let's look at the parts. First, the entire body is defined in a `section' because we are computing it internally, not as a sequence of shell commands. We use the `deps' variable to collect all the dependencies. The `awk' function scans the source file (`$<') line-by-line. For lines that match the regular expression `^open' (meaning that the line begins with the word `open'), we add the second word on the line to the `deps' variable. For example, if the input line is `open chat', then we would add the `chat' string to the `deps' array. All other lines in the source file are ignored. Next, the `$(set $(deps))' expression removes any duplicate values in the `deps' array (sorting the array alphabetically in the process). The `find-in-path' function then finds the actual location of each file in the include path. The final step is print the result as the string `$"$@: $(deps)"' The quotations are added to flatten the `deps' array to a simple string.  Node: Subsection 3-4-4, Next: Subsection 3-4-5, Prev: Subsection 3-4-3, Up: Section 3-4 3.4.4 Pulling it all together =============================== To complete the example, let's pull it all together into a single project, much like our previous example. << my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> neko.cat | `---> chat.cat `---> main/ |---> OMakefile `---> main.cat >> The listing for the entire project is as follows. Here, we also include a function `CatLibrary' to link several `.woof' files into a library. <> Some notes. The configuration in the project `OMakeroot' defines the standard configuration, including the dependency scanner, the default rule for compiling source files, and functions for building libraries and programs. These rules and functions are inherited by subdirectories, so the `.SCANNER' and build rules are used automatically in each subdirectory, so you don't need to repeat them.  Node: Subsection 3-4-5, Next: Section 3-5, Prev: Subsection 3-4-4, Up: Section 3-4 3.4.5 Finishing up ==================== At this point we are done, but there are a few things we can consider. First, the rules for building cat programs is defined in the project `OMakefile'. If you had another cat project somewhere, you would need to copy the `OMakeroot' (and modify it as needed). Instead of that, you should consider moving the configuration to a shared library directory, in a file like `Cat.om'. That way, instead of copying the code, you could include the shared copy with an OMake command `open Cat'. The share directory should be added to your `OMAKEPATH' environment variable to ensure that `omake' knows how to find it. Better yet, if you are happy with your work, consider submitting it as a standard configuration (by sending a request to `omake@metaprl.org') so that others can make use of it too. omake-0.9.8.5/doc/info/omake-doc.info-90000664000152300015230000015356310655737107015545 0ustar jyhjyhThis file has been translated from LaTeX by HeVeA.  Node: Subsection B-1-1, Next: Subsection B-1-2, Prev: Section B-1, Up: Section B-1 B.1.1 Comments ================ Comments begin with the `#' character and continue to the end-of-line. Text within a comment is unrestricted. Examples. << # This is a comment # This $comment contains a quote " character >>  Node: Subsection B-1-2, Next: Subsection B-1-3, Prev: Subsection B-1-1, Up: Section B-1 B.1.2 Special characters ========================== The following characters are special in some contexts. << $ ( ) , . = : " ' ` \ # >> - `$' is used to denote a variable reference, or function application. - Parentheses `)', `(' are argument deliminters. - The command `,' is an argument separator. - The period symbol `.' is a name separator. - The equality symbol `=' denotes a definition. - The colon symbol `:' is used to denote rules, and (optionally) to indicate that an expression is followed by an indented body. - The quotation symbols `"' and `'' delimit character strings. - The symbol `#' is the first character of a constant. - The escape symbol `\' is special only when followed by another special character. In this case, the special status of the second character is removed, and the sequence denotes the second character. Otherwise, the `\' is not special. Examples: - `\$': the `$' character (as a normal character). - `\#': the `#' character (as a normal character). - `\\': the `\' character (as a normal character). - `c\:\Windows\moo\#boo': the string `c:\Windows\moo#boo'.  Node: Subsection B-1-3, Next: Subsection B-1-4, Prev: Subsection B-1-2, Up: Section B-1 B.1.3 Identifiers =================== Identifiers (variable names) are drawn from the ASCII alphanumeric characters as well as `_', `-', `~', `@'. Case is significant; the following identifiers are distinct: `FOO', `Foo', `foo'. The identifier may begin with any of the valid characters, including digits. Using `egrep' notation, the regular expression for identifiers is defined as follows. << identifier ::= [-@~_A-Za-z0-9]+ >> The following are legal identifiers. << Xyz hello_world seventy@nine 79-32 Gnus~Gnats CFLAGS >> The following are not legal identifiers. << x+y hello&world >>  Node: Subsection B-1-4, Next: Subsection B-1-5, Prev: Subsection B-1-3, Up: Section B-1 B.1.4 Command identifiers =========================== The following words have special significance when they occur as the first word of a program line. They are not otherwise special. << case catch class declare default do else elseif export extends finally if import include match open raise return section switch try value when while >>  Node: Subsection B-1-5, Next: Subsection B-1-6, Prev: Subsection B-1-4, Up: Section B-1 B.1.5 Variable references =========================== A variable reference is denoted with the `$' special character followed by an identifier. If the identifier name has more than one character, it must be enclosed in parentheses. The parenthesized version is most common. The following are legal variable references. << $(Xyz) $(hello_world) $(seventy@nine) $(79-32) $(Gnus~Gnats) $(CFLAGS) >> Single-character references also include several additional identifiers, including `&*<^?]['. The following are legal single-character references. << $@ $& $* $< $^ $+ $? $[ $] $A $_ $a $b $x $1 $2 $3 >> Note that a non-parenthesized variable reference is limited to a single character, even if it is followed by additional legal identifier charqcters. Suppose the value of the `$x' variable is 17. The following examples illustrate evaluation. << $x evaluates to 17 foo$xbar evaluates to foo17bar foo$(x)bar evaluates to foo17bar >> The special sequence `$$' represents the character literal `$'. That is, the two-character sequences `\$' and `$$' are normally equalivalent.  Node: Subsection B-1-6, Next: Section B-2, Prev: Subsection B-1-5, Up: Section B-1 B.1.6 String constants ======================== Literal strings are defined with matching string delimiters. A left string delimiter begins with the dollar-sign `$', and a non-zero number of single-quote or double-quote characters. The string is terminated with a matching sequence of quotation symbols. The delimiter quotation may not be mixed; it must contain only single-quote characters, or double-quote characters. The following are legal strings. << $'Hello world' $"""printf("Hello world\n")""" $'''' Large "block" of text # spanning ''multiple'' lines'''' >> The string delimiters are not included in the string constant. In the single-quote form, the contents of the string are interpreted verbatim--there are no special characters. The double-quote form permits expression evaluation within the string, denoted with the `$' symbol. The following are some examples. << X = Hello Y = $""$X world"" # Hello world Z = $'''$X world''' # $X world I = 3 W = $"6 > $(add $I, 2)" # 6 > 5 >> Note that quotation symbols without a leading `$' are not treated specially by OMake. The quotation symbols is included in the sequence. << osh>println('Hello world') 'Hello world' osh>println($'Hello world') Hello world osh>X = Hello - : "Hello" : Sequence osh>println('$X world') Hello world >>  Node: Section B-2, Next: Subsection B-2-1, Prev: Section B-1, Up: Appendix B B.2 The OMake grammar *=*=*=*=*=*=*=*=*=*=*=* OMake programs are constructed from expressions and statements. Generally, an input program consists of a sequence of statements, each of which consists of one or more lines. Indentation is significant--if a statement consists of more than one line, the second and remaining lines (called the body) are usually indented relative to the first line. * Menu: * Subsection B-2-1:: Expressions * Subsection B-2-2:: Statements and programs  Node: Subsection B-2-1, Next: Subsection B-2-2, Prev: Section B-2, Up: Section B-2 B.2.1 Expressions =================== The following table lists the syntax for expressions. expr ::= (empty) -- Text (see note) | text | string-literal -- Applications | dollar `' | dollar `(' pathid args `)' -- Concatenation | expr expr dollar ::= `$' | `$`' | `$,' pathid ::= id | pathid `.' id arg ::= expr -- excluding special characters `)(,') args ::= (empty) | arg, ..., arg An expression is a sequence composed of text, string-literals, variables references and function applications. Text is any sequence of non-special characters. B.2.1.1 Inline applications ----------------------------- An application is the application of a function to zero-or-more arguments. Inline applications begin with one of the "dollar" sequences `$', `$`', or `$,'. The application itself is specified as a single character (in which case it is a variable reference), or it is a parenthesized list including a function identifier pathid, and zero-or-more comma-separated arguments args. The arguments are themselves a variant of the expressions where the special character `)(,' are not allowed (though any of these may be made non-special with the `\' escape character). The following are some examples of valid expressions. - `xyz abc' The text sequence "`xyz abc'" - `xyz$wabc' A text sequence containing a reference to the variable `w'. - `$(addsuffix .c, $(FILES))' An application of the function `addsuffix', with first argument `.c', and second argument `$(FILES)'. - `$(a.b.c 12)' This is a method call. The variable `a' must evaluate to an object with a field `b', which must be an object with a method `c'. This method is called with argument `12'. The additional dollar sequences specify evaluation order, `$`' (lazy) and `$,' (eager), as discussed in the section on dollar modifiers (Section B.3*Note Section B-3::).  Node: Subsection B-2-2, Next: Section B-3, Prev: Subsection B-2-1, Up: Section B-2 B.2.2 Statements and programs =============================== The following table lists the syntax of statements and programs. params ::= (empty) | id, ..., id target ::= expr -- excluding special character `:' program ::= stmt `' ... `' stmt stmt ::= -- Special forms | command expr optcolon-body | command ( args ) optcolon-body | catch id ( id ) optcolon-body | class id ... id -- Variable definitions | pathid {+}= expr | pathid {+}= `' indented-body | pathid`[]' {+}= expr | pathid`[]' {+}= `' indented-exprs -- Functions | pathid(args) optcolon-body | pathid(params) = `' indented-body -- Objects | pathid `.' {+}= `' indented-body -- Rules | target : target rule-options `' indented-body | target :: target rule-options `' indented-body | target : target : target rule-options `' indented-body | target :: target : target rule-options `' indented-body -- Shell commands | expr indented-body ::= (empty) | indented-stmt `' ... `' indented-stmt indented-exprs ::= (empty) | indented-expr `' ... `' indented-expr optcolon-body ::= (empty) | `' indented-body | : `' indented-body rule-option ::= :id: target rule-options ::= (empty) | rule-options rule-option B.2.2.1 Special forms ----------------------- The special forms include the following. Conditionals (see the section on conditionals --- Section 4.9*Note Section 4-9::). The `if' command should be followed by an expression that represents the condition, and an indented body. The conditional may be followed by `elseif' and `else' blocks. << if expr indented-body elseif expr indented-body ... else indented-body >> matching (see the section on matching --- Section 4.10*Note Section 4-10::). The `switch' and `match' commands perform pattern-matching. All cases are optional. Each case may include `when' clauses that specify additional matching conditions. << match(expr) case expr indented-body when expr indented-body ... case expr indented-body default indented-body >> Exceptions (see also the 'try' function documentation). The `try' command introduces an exception handler. Each `name' is the name of a class. All cases, including `catch', `default', and `finally' are optional. The `catch' and `default' clauses contain optional `when' clauses. << try indented-body catch name1(id1) indented-body when expr indented-body ... catch nameN(idN) indented-body default indented-body finally indented-body >> The `raise' command is used to raise an exception. << raise expr >> section (see the `section' description in Section 4.8*Note Section 4-8::). The `section' command introduces a new scope. << section indented-body >> include, open (see also Section 4.7*Note Section 4-7::). The `include' command performs file inclusion. The expression should evaluate to a file name. The `open' form is like include, but it performs the inclusion only if the inclusion has not already been performed. The `open' form is usually used to include library files. [jyh-- this behavior will change in subsequent revisions.] << include expr open expr >> return (see the description of functions in Section 4.5*Note Section 4-5::). The `return' command terminates execution and returns a value from a function. << return expr >> value (see the description of functions in Section 4.5*Note Section 4-5::). The `value' command is an identity. Syntactically, it is used to coerce a n expression to a statement. << value expr >> export (see the section on scoping --- Section 6.3*Note Section 6-3::). The `export' command exports a environment from a nested block. If no arguments are given, the entire environment is exported. Otherwise, the export is limited to the specified identifiers. << export expr >> while (see also the 'while' function description). The `while' command introduces a `while' loop. << while expr indented-body >> class, extends (see the section on objects --- Section 4.11*Note Section 4-11::). The `class' command specifies an identifier for an object. The `extends' command specifies a parent object. << class id extends expr >> B.2.2.2 Variable definitions ------------------------------ See the section on variables (Section 4.1*Note Section 4-1::). The simplest variable definition has the following syntax. The `=' form is a new definition. The += form appends the value to an existing definition. << id = expr id += expr osh> X = 1 - : "1" : Sequence osh> X += 7 - : "1" " " "7" : Sequence >> A multi-line form is allowed, where the value is computed by an indented body. << id {+}= indented-body osh> X = Y = HOME println(Y is $Y) getenv($Y) Y is HOME - : "/home/jyh" : Sequence >> The name may be qualified qith one of the `public', `prtected', or `private' modifiers. Public variables are dynamically scoped. Protected variables are fields in the current object. Private variables are statically scoped. [jyh: revision 0.9.9 introduces modular namespaces; the meaning of these qualifiers is slightly changed.] << public.X = $(addsuffix .c, 1 2 3) protected.Y = $(getenv HOME) private.Z = $"Hello world" >> B.2.2.3 Applications and function definitions ----------------------------------------------- See the section on functions (Section 4.5*Note Section 4-5::). A function-application statement is specified as a function name, followed a parenthesized list of comma-separated arguments. << osh> println($"Hello world") osh> FILES = 1 2 3 - : 1 2 3 osh> addsuffix(.c, $(FILES)) - : 1.c 2.c 3.c # The following forms are equivalent osh> value $(println $"Hello world") osh> value $(addsuffix .c, $(FILES)) - : 1.c 2.c 3.c >> If the function application has a body, the body is passed (lazily) to the function as its first argument. [jyh: in revision 0.9.8 support is incomplete.] When using `osh', the application must be followed by a colon `:' to indicate that the application has a body. << # In its 3-argument form, the foreach function takes # a body, a variable, and an array. The body is evaluated # for each element of the array, with the variable bound to # the element value. # # The colon is required only for interactive sessions. osh> foreach(x, 1 2 3): add($x, 1) - : 2 3 4 >> Functions are defined in a similar form, where the parameter list is specified as a comma-separated list of identifiers, and the body of the function is indented. << osh> f(i, j) = add($i, $j) - : osh> f(3, 7) - : 10 : Int >> B.2.2.4 Objects ----------------- See the section on objects (Section 4.11*Note Section 4-11::). Objects are defined as an identifier with a terminal period. The body of the object is indented. << Obj. = class Obj X = 1 Y = $(sub $X, 12) new(i, j) = X = $i Y = $j value $(this) F() = add($X, $Y) println($Y) >> The body of the object has the usual form of an indented body, but new variable definitions are added to the object, not the global environment. The object definition above defines an object with (at least) the fields `X' and `Y', and methods `new' and `F'. The name of the object is defined with the `class' command as `Obj'. The `Obj' itself has fields `X = 1' and `Y = -11'. The `new' method has the typical form of a constructor-style method, where the fields of the object are initialized to new values, and the new object returned (`$(this)' refers to the current object). The `F' method returns the sum of the two fields `X' and `Y'. When used in an object definition, the += form adds the new definitions to an existing object. << pair. = x = 1 y = 2 pair. += y = $(add $y, 3) # pair now has fields (x = 1, and y = 5) >> The `extends' form specifies inheritance. Multiple inheritance is allowed. At evaluation time, the `extends' directive performs inclusion of the entire parent object. << pair. = x = 1 y = 2 depth. = z = 3 zoom(dz) = z = $(add $z, $(dz)) return $(this) triple. = extends $(pair) extends $(depth) crazy() = zoom($(mul $x, $y)) >> In this example, the `triple' object has three fields x, y, and z; and two methods `zoom' and `crazy'. B.2.2.5 Rules --------------- See the chapter on rules (Chapter 8*Note Chapter 8::). A rule has the following parts. 1. A sequence of targets; 2. one or two colons; 3. a sequence of dependencies and rule options; 4. and an indented body. The targets are the files to be built, and the dependencies are the files it depends on. If two colons are specified, it indicates that there may be multiple rules to build the given targets; otherwise only one rule is allowed. If the target contains a `%' character, the rule is called implicit, and is considered whenever a file matching that pattern is to be built. For example, the following rule specifies a default rule for compiling OCaml files. << %.cmo: %.ml %.mli $(OCAMLC) -c $< >> This rule would be consulted as a default way of building any file with a `.cmo' suffix. The dependencies list is also constructed based on the pattern match. For example, if this rule were used to build a file `foo.cmo', then the dependency list would be `foo.ml foo.mli'. There is also a three-part version of a rule, where the rule specification has three parts. << targets : patterns : dependencies rule-options indented-body >> In this case, the patterns must contain a single `%' character. Three-part rules are also considered implicit. For example, the following defines a default rule for the `clean' target. << .PHONY: clean clean: %: rm -f *$(EXT_OBJ) *$(EXT_LIB) >> Three-part implicit rules are inherited by the subdirectories in the exact same way as with the usual two-part implicit rules. There are several special targets, including the following. - `.PHONY' : declare a "phony" target. That is, the target does not correspond to a file. - `.ORDER' : declare a rule for dependency ordering. - `.INCLUDE' : define a rule to generate a file for textual inclusion. - `.SUBDIRS' : specify subdirectories that are part of the project. - `.SCANNER' : define a rule for dependency scanning. There are several rule options. - `:optional: dependencies' the subsequent dependencies are optional, it is acceptable if they do not exist. - `:exists: dependencies' the subsequent dependencies must exist, but changes to not affect whether this rule is considered out-of-date. - `:effects: targets' the subsequent files are side-effects of the rule. That is, they may be created and/or modified while the rule is executing. Rules with overlapping side-effects are never executed in parallel. - `:scanner: name' the subsequent name is the name of the `.SCANNER' rule for the target to be built. - `:value: expr' the `expr' is a "value" dependency. The rule is considered out-of-date whenever the value of the `expr' changes. Several variables are defined during rule evaluation. - `$*' : the name of the target with the outermost suffix removed. - `$>' : the name of the target with all suffixes removed. - `$@' : the name of the target. - `$^' : the explicit file dependencies, sorted alphabetically, with duplicates removed. - `$+' : all explicit file dependencies, with order preserved. - `$<' : the first explicit file dependency. - `$&' : the free values of the rule (often used in `:value:' dependencies). B.2.2.6 Shell commands ------------------------ See the chapter on shell commands (Chapter 11*Note Chapter 11::). While it is possible to give a precise specification of shell commands, the informal description is simpler. Any non-empty statement where each prefix is not one of the other statements, is considered to be a shell command. Here are some examples. << ls -- shell command echo Hello world > /dev/null -- shell command echo(Hello world) -- function application echo(Hello world) > /dev/null -- syntax error echo Hello: world -- rule X=1 getenv X -- variable definition env X=1 getenv X -- shell command if true -- special form \if true -- shell command "if" true -- shell command >>  Node: Section B-3, Next: Appendix C, Prev: Section B-2, Up: Appendix B B.3 Dollar modifiers *=*=*=*=*=*=*=*=*=*=*= Inline applications have a function and zero-or-more arguments. Evaluation is normally strict: when an application is evaluated, the function identifier is evaluated to a function, the arguments are then evaluated and the function is called with the evaluated arguments. The additional "dollar" sequences specify additional control over evaluation. The token `$`' defines a "lazy" application, where evaluation is delayed until a value is required. The `$,' sequence performs an "eager" application within a lazy context. To illustrate, consider the expression `$(addsuffix .c, $(FILES))'. The `addsuffix' function appends its first argument to each value in its second argument. The following `osh' interaction demonstrates the normal bahavior. < FILES[] = a b c - : osh> X = $(addsuffix .c, $(FILES)) - : osh> FILES[] = 1 2 3 # redefine FILES - : osh> println($"$X") # force the evaluation and print a.c b.c c.c >> When the lazy operator `$`' is used instead, evaluation is delayed until it is printed. In the following sample, the value for `X' has changed to the `$(apply ..)' form, but otherwise the result is unchanged because it it printed immediately. < FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> println($"$X") # force the evaluation and print a.c b.c c.c >> However, consider what happens if we redefine the `FILES' variable after the definition for `X'. In the following sample, the result changes because evaluation occurs after the values for `FILES' has been redefined. < FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> SUF = .x osh> FILES[] = 1 2 3 osh> println($"$X") # force the evaluation and print 1.x 2.x 3.x >> In some cases, more explicit control is desired over evaluation. For example, we may wish to evaluate `SUF' early, but allow for changes to the `FILES' variable. The `$,(SUF)' expression forces early evaluation. < FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $,(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> SUF = .x osh> FILES[] = 1 2 3 osh> println($"$X") # force the evaluation and print 1.c 2.c 3.c >>  Node: Appendix C, Next: Appendix D, Prev: Appendix B, Up: Top Appendix C Index ******************** - --absname, A.3.20*Note Subsection A-3-20:: - --all-dependencies, A.3.15*Note Subsection A-3-15:: - --configure, A.3.9*Note Subsection A-3-9:: - --depend, A.3.8*Note Subsection A-3-8:: - --dotomake, A.3.11*Note Subsection A-3-11:: - --force-dotomake, A.3.10*Note Subsection A-3-10:: - --install, A.3.17*Note Subsection A-3-17:: - --install-all, A.3.18*Note Subsection A-3-18:: - --install-force, A.3.19*Note Subsection A-3-19:: - --output-at-end, A.2.11*Note Subsection A-2-11:: - --output-normal, A.2.8*Note Subsection A-2-8:: - --output-only-errors, A.2.10*Note Subsection A-2-10:: - --output-postpone, A.2.9*Note Subsection A-2-9:: - --print-dependencies, A.3.13*Note Subsection A-3-13:: - --print-exit, A.2.6*Note Subsection A-2-6:: - --print-status, A.2.5*Note Subsection A-2-5:: - --progress, A.2.4*Note Subsection A-2-4:: - --show-dependencies, A.3.14*Note Subsection A-3-14:: - --verbose, A.2.7*Note Subsection A-2-7:: - --verbose-dependencies, A.3.16*Note Subsection A-3-16:: - -j, A.3.12*Note Subsection A-3-12:: - -k, A.3.1*Note Subsection A-3-1:: - -n, A.3.2*Note Subsection A-3-2:: - -o, A.2.12*Note Subsection A-2-12:: - -P, A.3.4*Note Subsection A-3-4:: - -p, A.3.3*Note Subsection A-3-3:: - -R, A.3.5*Note Subsection A-3-5:: - -S, A.2.2*Note Subsection A-2-2:: - -s, A.2.1*Note Subsection A-2-1:: - -t, A.3.6*Note Subsection A-3-6:: - -U, A.3.7*Note Subsection A-3-7:: - -w, A.2.3*Note Subsection A-2-3:: - .BUILD_BEGIN, 13.1*Note Section 13-1:: - .BUILD_FAILURE, 13.1*Note Section 13-1:: - .BUILD_SUCCESS, 13.1*Note Section 13-1:: - .BUILDORDER, 10.3.6*Note Subsection 10-3-6:: - .DEFAULT, 8.7*Note Section 8-7::, 8.12.1*Note Subsection 8-12-1:: - .INCLUDE, 8.9*Note Section 8-9:: - .MEMO, 4.14.1.1*Note Subsection 4-14-1:: - .ORDER, 10.3.6*Note Subsection 10-3-6:: - .omakerc, A.8*Note Section A-8:: - .PHONY, 6.3*Note Section 6-3::, 8.10*Note Section 8-10::, 8.11.3*Note Subsection 8-11-3::, 8.12.1*Note Subsection 8-12-1::, 8.12.2*Note Subsection 8-12-2:: - .RULE, 6.3*Note Section 6-3:: - .SCANNER, 3.4.3*Note Subsection 3-4-3::, 8.6*Note Section 8-6::, 8.11.2*Note Subsection 8-11-2:: - .STATIC, 4.14.1*Note Subsection 4-14-1:: - .SUBDIRS, 3*Note Chapter 3::, 8.8*Note Section 8-8:: - .SUBDIRS bodies, 3.5*Note Section 3-5:: - :effects:, 8.5.2*Note Subsection 8-5-2:: - :exists:, 8.5.1*Note Subsection 8-5-1:: - :key:, 4.14.1.2*Note Subsection 4-14-1:: - :scanner:, 8.6.1*Note Subsection 8-6-1:: - :value:, 8.5.3*Note Subsection 8-5-3:: - $&, B.2.2.5*Note Subsection B-2-2:: - $*, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - $+, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - $<, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - $>, B.2.2.5*Note Subsection B-2-2:: - $@, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - $^, 8*Note Chapter 8::, B.2.2.5*Note Subsection B-2-2:: - ABORT_ON_COMMAND_ERROR, 13.4.1*Note Subsection 13-4-1:: - ABORT_ON_DEPENDENCY_ERRORS, 13.6.4*Note Subsection 13-6-4:: - AC_MSG_CHECKING, 14.2*Note Section 14-2:: - AC_MSG_ERROR, 14.2*Note Section 14-2:: - AC_MSG_RESULT, 14.2*Note Section 14-2:: - AC_MSG_WARN, 14.2*Note Section 14-2:: - AC_TRY_COMPILE, 14.2*Note Section 14-2:: - AC_TRY_LINK, 14.2*Note Section 14-2:: - AC_TRY_RUN, 14.2*Note Section 14-2:: - AR, 13.5.2*Note Subsection 13-5-2:: - Array, 12.1.7*Note Subsection 12-1-7:: - AS, 13.5.2*Note Subsection 13-5-2:: - ASFLAGS, 13.5.2*Note Subsection 13-5-2:: - ASOUT, 13.5.2*Note Subsection 13-5-2:: - absname, 10.1.9*Note Subsection 10-1-9:: - accept, 10.8.31*Note Subsection 10-8-31:: - add, 9.4.3*Note Subsection 9-4-3:: - add-project-directories, 10.6.2*Note Subsection 10-6-2:: - add-wrapper, 9.3.27*Note Subsection 9-3-27:: - addprefix, 9.3.25*Note Subsection 9-3-25:: - addsuffix, 9.3.19*Note Subsection 9-3-19:: - addsuffixes, 9.3.21*Note Subsection 9-3-21:: - aliases, 15.2*Note Section 15-2:: - and, 9.2.3*Note Subsection 9-2-3:: - apply, 9.5.2*Note Subsection 9-5-2:: - applya, 9.5.3*Note Subsection 9-5-3:: - array, 9.3.1*Note Subsection 9-3-1:: - arrays, 4.3*Note Section 4-3:: - asr, 9.4.3*Note Subsection 9-4-3:: - awk, 3.4.3*Note Subsection 3-4-3::, 10.11.5*Note Subsection 10-11-5:: - BIBTEX, 13.7.1*Note Subsection 13-7-1:: - BUILD_SUMMARY, 9.1*Note Section 9-1:: - BYTE_ENABLED, 13.6.2*Note Subsection 13-6-2:: - basename, 10.1.4*Note Subsection 10-1-4:: - bg, 11.10.2*Note Subsection 11-10-2:: - bind, 10.8.29*Note Subsection 10-8-29:: - break, 9.3.43*Note Subsection 9-3-43:: - build, 13.3.6*Note Subsection 13-3-6:: - build model, 3*Note Chapter 3:: - CAMLP4, 13.6.2*Note Subsection 13-6-2:: - CC, 13.5.2*Note Subsection 13-5-2:: - CCOUT, 13.5.2*Note Subsection 13-5-2:: - CDLL_IMPLIES_STATIC, 13.5.4.1*Note Subsection 13-5-4:: - CFLAGS, 13.5.2*Note Subsection 13-5-2:: - CGeneratedFiles, 13.5.3.1*Note Subsection 13-5-3:: - Channel, 12.1.15*Note Subsection 12-1-15:: - CheckCHeader, 14.1.6*Note Subsection 14-1-6:: - CheckCLib, 14.1.7*Note Subsection 14-1-7:: - CheckProg, 14.1.8*Note Subsection 14-1-8:: - CL_FOUND, 13.5.1.2*Note Subsection 13-5-1:: - ConfMsgChecking, 14.1.1*Note Subsection 14-1-1:: - ConfMsgError, 14.1.2*Note Subsection 14-1-2:: - ConfMsgFound, 14.1.3*Note Subsection 14-1-3:: - ConfMsgResult, 14.1.1*Note Subsection 14-1-1:: - ConfMsgWarn, 14.1.2*Note Subsection 14-1-2:: - ConfMsgYesNo, 14.1.3*Note Subsection 14-1-3:: - CPP, 13.5.2*Note Subsection 13-5-2:: - CProgram, 13.5.4.5*Note Subsection 13-5-4:: - CProgramCopy, 13.5.4.6*Note Subsection 13-5-4:: - CProgramInstall, 13.5.4.7*Note Subsection 13-5-4:: - CWD, 13.4.1*Note Subsection 13-4-1:: - CXX, 13.5.2*Note Subsection 13-5-2:: - CXXFLAGS, 13.5.2*Note Subsection 13-5-2:: - CXXProgram, 13.5.4.8*Note Subsection 13-5-4:: - CXXProgramInstall, 13.5.4.8*Note Subsection 13-5-4:: - c-escaped, 9.3.14*Note Subsection 9-3-14:: - capitalize, 9.3.35*Note Subsection 9-3-35:: - case, 9.2.6*Note Subsection 9-2-6:: - cat, 10.11.2*Note Subsection 10-11-2:: - cats and dogs, 3.4*Note Section 3-4:: - cd, 11.9.2*Note Subsection 11-9-2:: - channel-name, 10.8.12*Note Subsection 10-8-12:: - chmod, 10.5.9*Note Subsection 10-5-9:: - chown, 10.5.10*Note Subsection 10-5-10:: - class, B.2.2.1*Note Subsection B-2-2:: - classes, 4.12*Note Section 4-12:: - close, 10.8.5*Note Subsection 10-8-5:: - cmp-versions, 13.2.3*Note Subsection 13-2-3:: - compare, 9.7.4*Note Subsection 9-7-4:: - concat, 9.3.3*Note Subsection 9-3-3:: - conditionals, 4.9*Note Section 4-9:: - connect, 10.8.32*Note Subsection 10-8-32:: - constants, 4.15*Note Section 4-15:: - create-lazy-map, 9.5.4*Note Subsection 9-5-4:: - create-map, 9.5.4*Note Subsection 9-5-4:: - DefineCommandVars, 13.2.4*Note Subsection 13-2-4:: - DIRSEP, 13.4.2*Note Subsection 13-4-2:: - Dir, 12.1.14*Note Subsection 12-1-14:: - DVIPDFM, 13.7.1*Note Subsection 13-7-1:: - DVIPDFMFLAGS, 13.7.1*Note Subsection 13-7-1:: - DVIPS, 13.7.1*Note Subsection 13-7-1:: - DVIPSFLAGS, 13.7.1*Note Subsection 13-7-1:: - DynamicCLibrary, 13.5.4.1*Note Subsection 13-5-4:: - DynamicCLibraryCopy, 13.5.4.2*Note Subsection 13-5-4:: - DynamicCLibraryInstall, 13.5.4.3*Note Subsection 13-5-4:: - DynamicCXXLibrary, 13.5.4.9*Note Subsection 13-5-4:: - DynamicCXXLibraryCopy, 13.5.4.9*Note Subsection 13-5-4:: - DynamicCXXLibraryInstall, 13.5.4.9*Note Subsection 13-5-4:: - declare, 5.7*Note Section 5-7:: - decode-uri, 9.3.15*Note Subsection 9-3-15:: - default, 9.2.6*Note Subsection 9-2-6:: - defined, 9.2.10*Note Subsection 9-2-10:: - defined-env, 9.2.11*Note Subsection 9-2-11:: - dependencies, 13.3.1*Note Subsection 13-3-1:: - dependencies-all, 13.3.1*Note Subsection 13-3-1:: - dependencies-proper, 13.3.1*Note Subsection 13-3-1:: - digest, 10.2.5*Note Subsection 10-2-5:: - digest-in-path, 10.2.7*Note Subsection 10-2-7:: - digest-in-path-optional, 10.2.7*Note Subsection 10-2-7:: - digest-optional, 10.2.5*Note Subsection 10-2-5:: - dir, 10.1.1*Note Subsection 10-1-1:: - dirname, 10.1.5*Note Subsection 10-1-5:: - dirof, 10.1.7*Note Subsection 10-1-7:: - div, 9.4.3*Note Subsection 9-4-3:: - dup, 10.8.13*Note Subsection 10-8-13:: - dup2, 10.8.14*Note Subsection 10-8-14:: - EMPTY, 13.4.1*Note Subsection 13-4-1:: - EXE, 13.4.2*Note Subsection 13-4-2:: - EXT_ASM, 13.4.2*Note Subsection 13-4-2:: - EXT_DLL, 13.4.2*Note Subsection 13-4-2:: - EXT_LIB, 13.4.2*Note Subsection 13-4-2:: - EXT_OBJ, 13.4.2*Note Subsection 13-4-2:: - Exception, 12.1.19*Note Subsection 12-1-19:: - echo, 11.9.1*Note Subsection 11-9-1:: - else, 9.2.5*Note Subsection 9-2-5::, B.2.2.1*Note Subsection B-2-2:: - elseif, 9.2.5*Note Subsection 9-2-5::, B.2.2.1*Note Subsection B-2-2:: - encode-uri, 9.3.15*Note Subsection 9-3-15:: - eprint, 10.9*Note Section 10-9:: - eprintln, 10.9*Note Section 10-9:: - eprintv, 10.10*Note Section 10-10:: - eprintvln, 10.10*Note Section 10-10:: - eq, 9.4.4*Note Subsection 9-4-4:: - equal, 9.2.2*Note Subsection 9-2-2:: - exists-in-path, 10.2.4*Note Subsection 10-2-4:: - exit, 9.2.9*Note Subsection 9-2-9:: - export, 6.3*Note Section 6-3::, 9.3.41*Note Subsection 9-3-41::, B.2.2.1*Note Subsection B-2-2:: - extends, B.2.2.1*Note Subsection B-2-2:: - File, 12.1.13*Note Subsection 12-1-13:: - Float, 12.1.5*Note Subsection 12-1-5:: - Fun, 12.1.9*Note Subsection 12-1-9:: - fg, 11.10.3*Note Subsection 11-10-3:: - fgets, 10.8.35*Note Subsection 10-8-35:: - file, 10.1.1*Note Subsection 10-1-1:: - file-check-sort, 10.3.7*Note Subsection 10-3-7:: - file-exists, 10.3.1*Note Subsection 10-3-1:: - file-sort, 10.3.6*Note Subsection 10-3-6:: - filter, 9.3.33*Note Subsection 9-3-33:: - filter-exists, 10.3.3*Note Subsection 10-3-3:: - filter-out, 9.3.34*Note Subsection 9-3-34:: - filter-proper-targets, 10.3.3*Note Subsection 10-3-3:: - filter-targets, 10.3.3*Note Subsection 10-3-3:: - find, 10.7.2*Note Subsection 10-7-2:: - find-build-targets, 13.3.3*Note Subsection 13-3-3:: - find-in-path, 10.2.6*Note Subsection 10-2-6:: - find-in-path-optional, 10.2.6*Note Subsection 10-2-6:: - find-ocaml-targets-in-path-optional, 10.3.5*Note Subsection 10-3-5:: - find-targets-in-path, 10.3.4*Note Subsection 10-3-4:: - find-targets-in-path-optional, 10.3.4*Note Subsection 10-3-4:: - float, 9.4.2*Note Subsection 9-4-2:: - flush, 10.8.11*Note Subsection 10-8-11:: - fopen, 10.8.4*Note Subsection 10-8-4:: - foreach, 9.6.1*Note Subsection 9-6-1:: - fprint, 10.9*Note Section 10-9:: - fprintln, 10.9*Note Section 10-9:: - fprintv, 10.10*Note Section 10-10:: - fprintvln, 10.10*Note Section 10-10:: - fsubst, 10.11.6*Note Subsection 10-11-6:: - fullname, 10.1.8*Note Subsection 10-1-8:: - fun, 9.5.1*Note Subsection 9-5-1:: - functions, 4.5*Note Section 4-5:: - GCC_FOUND, 13.5.1.1*Note Subsection 13-5-1:: - Group, 10.11.20*Note Subsection 10-11-20:: - GXX_FOUND, 13.5.1.1*Note Subsection 13-5-1:: - ge, 9.4.4*Note Subsection 9-4-4:: - get-registry, 9.2.15*Note Subsection 9-2-15:: - getchar, 10.8.33*Note Subsection 10-8-33:: - getenv, 9.2.12*Note Subsection 9-2-12:: - getgrgid, 10.11.21*Note Subsection 10-11-21:: - getgrnam, 10.11.21*Note Subsection 10-11-21:: - gethostbyname, 10.8.23*Note Subsection 10-8-23:: - getprotobyname, 10.8.25*Note Subsection 10-8-25:: - getpwents, 10.11.19*Note Subsection 10-11-19:: - getpwnam, 10.11.18*Note Subsection 10-11-18:: - getpwuid, 10.11.18*Note Subsection 10-11-18:: - gets, 10.8.34*Note Subsection 10-8-34:: - getservbyname, 10.8.27*Note Subsection 10-8-27:: - gettimeofday, 10.11.27*Note Subsection 10-11-27:: - getvar, 9.2.16*Note Subsection 9-2-16:: - glob, 10.4.1*Note Subsection 10-4-1:: - global., 5.3*Note Section 5-3:: - gr_gid, 10.11.20*Note Subsection 10-11-20:: - gr_group, 10.11.20*Note Subsection 10-11-20:: - gr_mem, 10.11.20*Note Subsection 10-11-20:: - gr_name, 10.11.20*Note Subsection 10-11-20:: - grep, 10.11.3*Note Subsection 10-11-3:: - gt, 9.4.4*Note Subsection 9-4-4:: - HOME, 9.1*Note Section 9-1:: - HOST, 9.1*Note Section 9-1:: - Host, 10.8.22*Note Subsection 10-8-22:: - history, 11.11.1*Note Subsection 11-11-1:: - homename, 10.1.10*Note Subsection 10-1-10:: - html-escaped, 9.3.14*Note Subsection 9-3-14:: - html-pre-escaped, 9.3.14*Note Subsection 9-3-14:: - html-string, 9.3.18*Note Subsection 9-3-18:: - INCLUDES, 13.5.2*Note Subsection 13-5-2:: - INSTALL, 13.4.2*Note Subsection 13-4-2:: - InChannel, 12.1.16*Note Subsection 12-1-16:: - InetAddr, 10.8.21*Note Subsection 10-8-21:: - Int, 12.1.4*Note Subsection 12-1-4:: - id-escaped, 9.3.14*Note Subsection 9-3-14:: - if, 4.9*Note Section 4-9::, 9.2.5*Note Subsection 9-2-5::, B.2.2.1*Note Subsection B-2-2:: - ignoreeof, 15.1*Note Section 15-1:: - in, 10.1.3*Note Subsection 10-1-3:: - include, 4.7*Note Section 4-7::, B.2.2.1*Note Subsection B-2-2:: - inheritance, 4.13*Note Section 4-13:: - input-line, 10.8.6*Note Subsection 10-8-6:: - int, 9.4.1*Note Subsection 9-4-1:: - intersection, 9.3.30*Note Subsection 9-3-30:: - intersects, 9.3.31*Note Subsection 9-3-31:: - jobs, 11.10.1*Note Subsection 11-10-1:: - join, 9.3.11*Note Subsection 9-3-11:: - kill, 11.10.6*Note Subsection 11-10-6:: - LATEX, 13.7.1*Note Subsection 13-7-1:: - LATEXFLAGS, 13.7.1*Note Subsection 13-7-1:: - LaTeXDocument, 13.7.2.1*Note Subsection 13-7-2:: - LaTeXDocumentCopy, 13.7.2.3*Note Subsection 13-7-2:: - LaTeXDocumentInstall, 13.7.2.4*Note Subsection 13-7-2:: - LD, 13.5.2*Note Subsection 13-5-2:: - LDFLAGS, 13.5.2*Note Subsection 13-5-2:: - LDFLAGS_DLL, 13.5.2*Note Subsection 13-5-2:: - LDOUT, 13.5.2*Note Subsection 13-5-2:: - LEX, 13.5.2*Note Subsection 13-5-2:: - Lexer, 10.11.9*Note Subsection 10-11-9:: - LIB_FOUND, 13.5.1.2*Note Subsection 13-5-1:: - LIBS, 13.5.2*Note Subsection 13-5-2:: - LocalCGeneratedFiles, 13.5.3.1*Note Subsection 13-5-3:: - LocalOCamlGeneratedFiles, 13.6.5.1*Note Subsection 13-6-5:: - LocalTeXGeneratedFiles, 13.7.2.2*Note Subsection 13-7-2:: - Location, 12.1.18*Note Subsection 12-1-18:: - land, 9.4.3*Note Subsection 9-4-3:: - le, 9.4.4*Note Subsection 9-4-4:: - length, 9.3.4*Note Subsection 9-3-4:: - lex, 10.11.7*Note Subsection 10-11-7:: - lex-search, 10.11.8*Note Subsection 10-11-8:: - link, 10.5.6*Note Subsection 10-5-6:: - link-order sorting, 10.3.6*Note Subsection 10-3-6:: - listen, 10.8.30*Note Subsection 10-8-30:: - lnot, 9.4.3*Note Subsection 9-4-3:: - lockf, 10.8.20*Note Subsection 10-8-20:: - lor, 9.4.3*Note Subsection 9-4-3:: - lowercase, 9.3.38*Note Subsection 9-3-38:: - ls, 10.4.2*Note Subsection 10-4-2:: - lseek, 10.8.8*Note Subsection 10-8-8:: - lsl, 9.4.3*Note Subsection 9-4-3:: - lsr, 9.4.3*Note Subsection 9-4-3:: - lstat, 10.5.3*Note Subsection 10-5-3:: - lt, 9.4.4*Note Subsection 9-4-4:: - lxor, 9.4.3*Note Subsection 9-4-3:: - MACHINE, 9.1*Note Section 9-1:: - MAKEINDEX, 13.7.1*Note Subsection 13-7-1:: - Map, 12.1.2*Note Subsection 12-1-2:: - MENHIR_AVAILABLE, 13.6.1*Note Subsection 13-6-1:: - MENHIR_ENABLED, 13.6.2*Note Subsection 13-6-2:: - MENHIR_FLAGS, 13.6.3*Note Subsection 13-6-3:: - mapprefix, 9.3.26*Note Subsection 9-3-26:: - mapsuffix, 9.3.20*Note Subsection 9-3-20:: - match, 4.10*Note Section 4-10::, 9.2.6*Note Subsection 9-2-6::, B.2.2.1*Note Subsection B-2-2:: - max, 9.4.3*Note Subsection 9-4-3:: - mem, 9.3.29*Note Subsection 9-3-29:: - min, 9.4.3*Note Subsection 9-4-3:: - mkdir, 10.5.1*Note Subsection 10-5-1:: - mkfifo, 10.8.18*Note Subsection 10-8-18:: - mod, 9.4.3*Note Subsection 9-4-3:: - mul, 9.4.3*Note Subsection 9-4-3:: - NATIVE_ENABLED, 13.6.2*Note Subsection 13-6-2:: - NCURSES_AVAILABLE, 14.3.1*Note Subsection 14-3-1:: - NCURSES_CFLAGS, 14.3.1*Note Subsection 14-3-1:: - NCURSES_CLIBS, 14.3.1*Note Subsection 14-3-1:: - NCURSES_TERMH_IN_NCURSES, 14.3.1*Note Subsection 14-3-1:: - NODENAME, 9.1*Note Section 9-1:: - Node, 12.1.12*Note Subsection 12-1-12:: - Number, 12.1.3*Note Subsection 12-1-3:: - neg, 9.4.3*Note Subsection 9-4-3:: - not, 9.2.1*Note Subsection 9-2-1:: - nth, 9.3.5*Note Subsection 9-3-5:: - nth-hd, 9.3.7*Note Subsection 9-3-7:: - nth-tl, 9.3.8*Note Subsection 9-3-8:: - Object, 12.1.1*Note Subsection 12-1-1:: - OCAML_BYTE_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAML_CLIBS, 13.6.4*Note Subsection 13-6-4:: - OCAML_LIB_FLAGS, 13.6.4*Note Subsection 13-6-4:: - OCAML_LIBS, 13.6.4*Note Subsection 13-6-4:: - OCAML_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAML_NATIVE_LINK_FLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAML_OTHER_LIBS, 13.6.4*Note Subsection 13-6-4:: - OCAMLC, 13.6.2*Note Subsection 13-6-2:: - OCAMLCFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLDEP, 13.6.2*Note Subsection 13-6-2:: - OCAMLDEP_MODULES, 13.6.2*Note Subsection 13-6-2:: - OCAMLDEP_MODULES_AVAILABLE, 13.6.1*Note Subsection 13-6-1:: - OCAMLDEP_MODULES_ENABLED, 13.6.2*Note Subsection 13-6-2:: - OCAMLDEPFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLFIND, 13.6.2*Note Subsection 13-6-2:: - OCAMLFIND_EXISTS, 13.6.1*Note Subsection 13-6-1:: - OCAMLFINDFLAGS, 13.6.2*Note Subsection 13-6-2:: - OCAMLFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLINCLUDES, 13.6.2*Note Subsection 13-6-2:: - OCAMLLEX, 13.6.2*Note Subsection 13-6-2:: - OCAMLLEXFLAGS, 13.6.2*Note Subsection 13-6-2:: - OCAMLLINK, 13.6.2*Note Subsection 13-6-2:: - OCAMLMKTOP, 13.6.2*Note Subsection 13-6-2:: - OCAMLOPT, 13.6.2*Note Subsection 13-6-2:: - OCAMLOPT_EXISTS, 13.6.1*Note Subsection 13-6-1:: - OCAMLOPTFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLOPTLINK, 13.6.2*Note Subsection 13-6-2:: - OCAMLPACKS, 13.6.2*Note Subsection 13-6-2:: - OCAMLPPFLAGS, 13.6.3*Note Subsection 13-6-3:: - OCAMLYACC, 13.6.2*Note Subsection 13-6-2:: - OCAMLYACCFLAGS, 13.6.2*Note Subsection 13-6-2:: - OCamlGeneratedFiles, 13.6.5.1*Note Subsection 13-6-5:: - OCamlLibrary, 13.6.6.1*Note Subsection 13-6-6:: - OCamlLibraryCopy, 13.6.6.3*Note Subsection 13-6-6:: - OCamlLibraryInstall, 13.6.6.4*Note Subsection 13-6-6:: - OCamlPackage, 13.6.6.2*Note Subsection 13-6-6:: - OCamlProgram, 13.6.6.5*Note Subsection 13-6-6:: - OCamlProgramCopy, 13.6.6.6*Note Subsection 13-6-6:: - OCamlProgramInstall, 13.6.6.7*Note Subsection 13-6-6:: - OMAKE_VERSION, 9.1*Note Section 9-1:: - OMAKEFLAGS, A.5.1*Note Subsection A-5-1:: - OMAKELIB, A.5.2*Note Subsection A-5-2:: - OMAKEPATH, 9.1*Note Section 9-1:: - OMakeFlags, 13.2.1*Note Subsection 13-2-1:: - OMakefile, 2.8*Note Section 2-8::, 3*Note Chapter 3:: - OMakeroot, 2.8*Note Section 2-8::, 3*Note Chapter 3::, 13.4*Note Section 13-4:: - OMakeVersion, 13.2.2*Note Subsection 13-2-2:: - OS_VERSION, 9.1*Note Section 9-1:: - OSTYPE, 9.1*Note Section 9-1:: - OutChannel, 12.1.17*Note Subsection 12-1-17:: - objects, 4.11*Note Section 4-11:: - ocaml-escaped, 9.3.14*Note Subsection 9-3-14:: - ocamldep-omake, 13.6.5.2*Note Subsection 13-6-5:: - open, 4.7*Note Section 4-7::, B.2.2.1*Note Subsection B-2-2:: - open-in-string, 10.8.2*Note Subsection 10-8-2:: - open-out-string, 10.8.3*Note Subsection 10-8-3:: - or, 9.2.4*Note Subsection 9-2-4:: - out-contents, 10.8.3*Note Subsection 10-8-3:: - PATHSEP, 13.4.2*Note Subsection 13-4-2:: - Parser, 10.11.13*Note Subsection 10-11-13:: - Passwd, 10.11.17*Note Subsection 10-11-17:: - PDFLATEX, 13.7.1*Note Subsection 13-7-1:: - PDFLATEXFLAGS, 13.7.1*Note Subsection 13-7-1:: - PID, 9.1*Note Section 9-1:: - Protocol, 10.8.24*Note Subsection 10-8-24:: - pipe, 10.8.17*Note Subsection 10-8-17:: - print, 10.9*Note Section 10-9:: - println, 10.9*Note Section 10-9:: - printv, 10.10*Note Section 10-10:: - printvln, 10.10*Note Section 10-10:: - private., 5.1*Note Section 5-1:: - project-directories, 13.3.4*Note Subsection 13-3-4:: - prompt, 15.1*Note Section 15-1:: - prompt-invisible, 10.11.26*Note Subsection 10-11-26:: - prompt-invisible-begin, 10.11.25*Note Subsection 10-11-25:: - prompt-invisible-end, 10.11.25*Note Subsection 10-11-25:: - protected., 5.4*Note Section 5-4:: - public., 5.5*Note Section 5-5:: - pw_dir, 10.11.17*Note Subsection 10-11-17:: - pw_gecos, 10.11.17*Note Subsection 10-11-17:: - pw_gid, 10.11.17*Note Subsection 10-11-17:: - pw_name, 10.11.17*Note Subsection 10-11-17:: - pw_passwd, 10.11.17*Note Subsection 10-11-17:: - pw_shell, 10.11.17*Note Subsection 10-11-17:: - pw_uid, 10.11.17*Note Subsection 10-11-17:: - quotations, 4.4*Note Section 4-4:: - quote, 9.3.16*Note Subsection 9-3-16:: - quote-argv, 9.3.17*Note Subsection 9-3-17:: - quoted strings, 7.2*Note Section 7-2:: - READLINE_AVAILABLE, 14.3.2*Note Subsection 14-3-2:: - READLINE_CFLAGS, 14.3.2*Note Subsection 14-3-2:: - READLINE_CLIBS, 14.3.2*Note Subsection 14-3-2:: - READLINE_GNU, 14.3.2*Note Subsection 14-3-2:: - ROOT, 13.4.1*Note Subsection 13-4-1:: - Rule, 12.1.10*Note Subsection 12-1-10:: - RunCProg, 14.1.5*Note Subsection 14-1-5:: - RuntimeException, 12.1.20*Note Subsection 12-1-20:: - raise, 9.2.8*Note Subsection 9-2-8:: - random, 9.3.44*Note Subsection 9-3-44:: - random-init, 9.3.44*Note Subsection 9-3-44:: - read, 10.8.6*Note Subsection 10-8-6:: - readlink, 10.5.8*Note Subsection 10-5-8:: - regular expressions, 10.11.1*Note Subsection 10-11-1:: - rehash, 10.2.3*Note Subsection 10-2-3:: - remove-project-directories, 10.6.3*Note Subsection 10-6-3:: - removeprefix, 9.3.22*Note Subsection 9-3-22:: - removesuffix, 9.3.23*Note Subsection 9-3-23:: - rename, 10.5.5*Note Subsection 10-5-5:: - replace-nth, 9.3.6*Note Subsection 9-3-6:: - replacesuffixes, 9.3.24*Note Subsection 9-3-24:: - return, 4.5*Note Section 4-5::, B.2.2.1*Note Subsection B-2-2:: - rev, 9.3.10*Note Subsection 9-3-10:: - rewind, 10.8.9*Note Subsection 10-8-9:: - rootname, 10.1.6*Note Subsection 10-1-6:: - rule, 13.3.5*Note Subsection 13-3-5:: - rule, options, 8.5*Note Section 8-5:: - rule, scoping, 8.11*Note Section 8-11:: - rules, bounded implicit, 8.2*Note Section 8-2:: - rules, implicit, 8.1*Note Section 8-1:: - SCANNER_MODE, 13.4.1*Note Subsection 13-4-1:: - Sequence, 12.1.6*Note Subsection 12-1-6:: - Service, 10.8.26*Note Subsection 10-8-26:: - Shell, 12.1.22*Note Subsection 12-1-22:: - SNPRINTF_AVAILABLE, 14.3.3*Note Subsection 14-3-3:: - STDLIB, 9.1*Note Section 9-1:: - STDROOT, 13.4.1*Note Subsection 13-4-1:: - Stat, 10.5.2*Note Subsection 10-5-2:: - StaticCLibrary, 13.5.4.1*Note Subsection 13-5-4:: - StaticCLibraryCopy, 13.5.4.2*Note Subsection 13-5-4:: - StaticCLibraryInstall, 13.5.4.3*Note Subsection 13-5-4:: - StaticCObject, 13.5.4.4*Note Subsection 13-5-4:: - StaticCObjectCopy, 13.5.4.4*Note Subsection 13-5-4:: - StaticCObjectInstall, 13.5.4.4*Note Subsection 13-5-4:: - StaticCXXLibrary, 13.5.4.9*Note Subsection 13-5-4:: - StaticCXXLibraryCopy, 13.5.4.9*Note Subsection 13-5-4:: - StaticCXXLibraryInstall, 13.5.4.9*Note Subsection 13-5-4:: - String, 12.1.8*Note Subsection 12-1-8:: - SYSNAME, 9.1*Note Section 9-1:: - scan, 10.11.4*Note Subsection 10-11-4:: - section, 4.8*Note Section 4-8::, 8.3*Note Section 8-3::, B.2.2.1*Note Subsection B-2-2:: - section rule, 8.4*Note Section 8-4:: - select, 10.8.19*Note Subsection 10-8-19:: - sequence-forall, 9.7.1*Note Subsection 9-7-1:: - sequence-sort, 9.7.3*Note Subsection 9-7-3:: - set, 9.3.28*Note Subsection 9-3-28:: - set-close-on-exec-mode, 10.8.16*Note Subsection 10-8-16:: - set-diff, 9.3.32*Note Subsection 9-3-32:: - set-nonblock, 10.8.15*Note Subsection 10-8-15:: - setenv, 9.2.13*Note Subsection 9-2-13:: - setvar, 9.2.17*Note Subsection 9-2-17:: - shell, 9.3.40*Note Subsection 9-3-40:: - socket, 10.8.28*Note Subsection 10-8-28:: - sorting (link-order), 10.3.6*Note Subsection 10-3-6:: - split, 9.3.2*Note Subsection 9-3-2:: - stat, 10.5.3*Note Subsection 10-5-3:: - stat-reset, 10.3.2*Note Subsection 10-3-2:: - static., 4.14*Note Section 4-14:: - stderr, 10.8.1*Note Subsection 10-8-1:: - stdin, 10.8.1*Note Subsection 10-8-1:: - stdout, 10.8.1*Note Subsection 10-8-1:: - stop, 11.10.4*Note Subsection 11-10-4:: - string, 9.3.12*Note Subsection 9-3-12:: - string-escaped, 9.3.14*Note Subsection 9-3-14:: - string-length, 9.3.13*Note Subsection 9-3-13:: - sub, 9.4.3*Note Subsection 9-4-3:: - subdirs, 10.4.3*Note Subsection 10-4-3:: - subrange, 9.3.9*Note Subsection 9-3-9:: - suffix, 10.1.11*Note Subsection 10-1-11:: - switch, 4.10*Note Section 4-10::, 9.2.6*Note Subsection 9-2-6:: - symlink, 10.5.7*Note Subsection 10-5-7:: - system, 9.3.39*Note Subsection 9-3-39:: - TARGETS, 9.1*Note Section 9-1:: - Target, 12.1.11*Note Subsection 12-1-11:: - TETEX2_ENABLED, 13.7.1*Note Subsection 13-7-1:: - TEXDEPS, 13.7.2.1*Note Subsection 13-7-2:: - TEXINPUTS, 13.7.2.1*Note Subsection 13-7-2:: - TEXVARS, 13.7.2.1*Note Subsection 13-7-2:: - TeXGeneratedFiles, 13.7.2.2*Note Subsection 13-7-2:: - TryCompileC, 14.1.4*Note Subsection 14-1-4:: - TryLinkC, 14.1.4*Note Subsection 14-1-4:: - TryRunC, 14.1.4*Note Subsection 14-1-4:: - target, 13.3.2*Note Subsection 13-3-2:: - target-exists, 10.3.1*Note Subsection 10-3-1:: - target-is-proper, 10.3.1*Note Subsection 10-3-1:: - tell, 10.8.10*Note Subsection 10-8-10:: - test, 10.7.1*Note Subsection 10-7-1:: - tgetstr, 10.11.22*Note Subsection 10-11-22:: - this., 5.2*Note Section 5-2:: - tmpfile, 10.1.2*Note Subsection 10-1-2:: - truncate, 10.5.11*Note Subsection 10-5-11:: - try, 9.2.7*Note Subsection 9-2-7::, B.2.2.1*Note Subsection B-2-2:: - UnbuildableException, 12.1.21*Note Subsection 12-1-21:: - USE_OCAMLFIND, 13.6.2*Note Subsection 13-6-2:: - USEPDFLATEX, 13.7.1*Note Subsection 13-7-1:: - USER, 9.1*Note Section 9-1:: - uge, 9.4.4*Note Subsection 9-4-4:: - ugt, 9.4.4*Note Subsection 9-4-4:: - ule, 9.4.4*Note Subsection 9-4-4:: - ult, 9.4.4*Note Subsection 9-4-4:: - umask, 10.5.12*Note Subsection 10-5-12:: - uncapitalize, 9.3.36*Note Subsection 9-3-36:: - unlink, 10.5.4*Note Subsection 10-5-4:: - unsetenv, 9.2.14*Note Subsection 9-2-14:: - uppercase, 9.3.37*Note Subsection 9-3-37:: - VERBOSE, 9.1*Note Section 9-1:: - VerboseCheckCHeader, 14.1.6*Note Subsection 14-1-6:: - VerboseCheckCLib, 14.1.7*Note Subsection 14-1-7:: - value, 4.5*Note Section 4-5::, B.2.2.1*Note Subsection B-2-2:: - variable definition, A.3.21*Note Subsection A-3-21:: - vmount, 2.9*Note Section 2-9::, 10.6.1*Note Subsection 10-6-1:: - wait, 11.10.5*Note Subsection 11-10-5:: - where, 10.2.2*Note Subsection 10-2-2:: - which, 10.2.1*Note Subsection 10-2-1:: - while, 9.3.42*Note Subsection 9-3-42::, B.2.2.1*Note Subsection B-2-2:: - write, 10.8.7*Note Subsection 10-8-7:: - xterm-escape, 10.11.24*Note Subsection 10-11-24:: - xterm-escape-begin, 10.11.23*Note Subsection 10-11-23:: - xterm-escape-end, 10.11.23*Note Subsection 10-11-23:: - YACC, 13.5.2*Note Subsection 13-5-2:: omake-0.9.8.5/doc/src/0000775000152300015230000000000010660137253012472 5ustar jyhjyhomake-0.9.8.5/doc/src/omake-language.tex0000664000152300015230000006600710646471724016112 0ustar jyhjyh%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Description % \chapter{\OMake{} concepts and syntax} \label{chapter:language} \cutname{omake-language.html} Projects are specified to \Prog{omake} with \File{OMakefile}s. The \File{OMakefile} has a format similar to a \File{Makefile}. An \File{OMakefile} has three main kinds of syntactic objects: variable definitions, function definitions, and rule definitions. \section{Variables} \label{section:variables} Variables are defined with the following syntax. The name is any sequence of alphanumeric characters, underscore \verb+_+, and hyphen \verb+-+. \begin{verbatim} = \end{verbatim} Values are defined as a sequence of literal characters and variable expansions. A variable expansion has the form \verb+$()+, which represents the value of the \verb++ variable in the current environment. Some examples are shown below. \begin{verbatim} CC = gcc CFLAGS = -Wall -g COMMAND = $(CC) $(CFLAGS) -O2 \end{verbatim} In this example, the value of the \verb+COMMAND+ variable is the string \verb+gcc -Wall -g -O2+. Unlike \Cmd{make}{1}, variable expansion is \emph{eager} and \emph{pure} (see also the section on Scoping). That is, variable values are expanded immediately and new variable definitions do not affect old ones. For example, suppose we extend the previous example with following variable definitions. \begin{verbatim} X = $(COMMAND) COMMAND = $(COMMAND) -O3 Y = $(COMMAND) \end{verbatim} In this example, the value of the \verb+X+ variable is the string \verb+gcc -Wall -g -O2+ as before, and the value of the \verb+Y+ variable is \verb+gcc -Wall -g -O2 -O3+. \section{Adding to a variable definition} Variables definitions may also use the += operator, which adds the new text to an existing definition. The following two definitions are equivalent. \begin{verbatim} # Add options to the CFLAGS variable CFLAGS = $(CFLAGS) -Wall -g # The following definition is equivalent CFLAGS += -Wall -g \end{verbatim} \section{Arrays} \index{arrays} Arrays can be defined by appending the \verb+[]+ sequence to the variable name and defining initial values for the elements as separate lines. Whitespace is significant on each line. The following code sequence prints \verb+c d e+. \begin{verbatim} X[] = a b c d e f println($(nth 2, $(X))) \end{verbatim} \section{Special characters and quoting} \index{quotations} The following characters are special to \Prog{omake}: \verb+$():,=#\+. To treat any of these characters as normal text, they should be escaped with the backslash character \verb+\+. \begin{verbatim} DOLLAR = \$ \end{verbatim} Newlines may also be escaped with a backslash to concatenate several lines. \begin{verbatim} FILES = a.c\ b.c\ c.c \end{verbatim} Note that the backslash is \emph{not} an escape for any other character, so the following works as expected (that is, it preserves the backslashes in the string). \begin{verbatim} DOSTARGET = C:\WINDOWS\control.ini \end{verbatim} An alternative mechanism for quoting special text is the use \verb+$"..."+ escapes. The number of double-quotations is arbitrary. The outermost quotations are not included in the text. \begin{verbatim} A = $""String containing "quoted text" "" B = $"""Multi-line text. The # character is not special""" \end{verbatim} \section{Function definitions} \label{section:functions} \index{functions} Functions are defined using the following syntax. \begin{verbatim} () = \end{verbatim} The parameters are a comma-separated list of identifiers, and the body must be placed on a separate set of lines that are indented from the function definition itself. For example, the following text defines a function that concatenates its arguments, separating them with a colon. \begin{verbatim} ColonFun(a, b) = return($(a):$(b)) \end{verbatim} \index{return}% The \verb+return+ expression can be used to return a value from the function. A \verb+return+ statement is not required; if it is omitted, the returned value is the value of the last expression in the body to be evaluated. NOTE: as of version \verb+0.9.6+, \verb+return+ is a control operation, causing the function to immediately return. In the following example, when the argument \verb+a+ is true, the function \verb+f+ immediately returns the value 1 without evaluating the print statement. \begin{verbatim} f(a) = if $(a) return 1 println(The argument is false) return 0 \end{verbatim} \index{value}% In many cases, you may wish to return a value from a section or code block without returning from the function. In this case, you would use the \verb+value+ operator. In fact, the \verb+value+ operator is not limited to functions, it can be used any place where a value is required. In the following definition, the variable \verb+X+ is defined as $1$ or $2$, depending on the value of $a$, then result is printed, and returned from the function. \begin{verbatim} f_value(a) = X = if $(a) value 1 else value 2 println(The value of X is $(X)) value $(X) \end{verbatim} Functions are called using the GNU-make syntax, \verb+$( + is a comma-separated list of values. For example, in the following program, the variable \verb+X+ contains the value \verb+foo:bar+. \begin{verbatim} X = $(ColonFun foo, bar) \end{verbatim} If the value of a function is not needed, the function may also be called using standard function call notation. For example, the following program prints the string ``She says: Hello world''. \begin{verbatim} Printer(name) = println($(name) says: Hello world) Printer(She) \end{verbatim} \section{Comments} Comments begin with the \verb+#+ character and continue to the end of the line. \section{File inclusion} \label{section:include} \index{include}\index[fun]{include}\index{open} Files may be included with the \verb+include+ or \verb+open+ form. The included file must use the same syntax as an \File{OMakefile}. \begin{verbatim} include $(Config_file) \end{verbatim} The \verb+open+ operation is similar to an \verb+include+, but the file is included at most once. \begin{verbatim} open Config # Repeated opens are ignored, so this # line has no effect. open Config \end{verbatim} If the file specified is not an absolute filenmame, both \verb+include+ and \verb+open+ operations search for the file based on the \hypervar{OMAKEPATH}. In case of the \verb+open+ directive, the search is performed at \emph{parse} time, and the argument to \verb+open+ may not contain any expressions. \section{Scoping, sections} \label{section:section} \index{section} Scopes in \Prog{omake} are defined by indentation level. When indentation is increased, such as in the body of a function, a new scope is introduced. The \verb+section+ form can also be used to define a new scope. For example, the following code prints the line \verb+X = 2+, followed by the line \verb+X = 1+. \begin{verbatim} X = 1 section X = 2 println(X = $(X)) println(X = $(X)) \end{verbatim} This result may seem surprising--the variable definition within the \verb+section+ is not visible outside the scope of the \verb+section+. The \verb+export+ form, which will be described in detail in Section~\ref{section:export}, can be used to circumvent this restriction by exporting variable values from an inner scope. For example, if we modify the previous example by adding an \verb+export+ expression, the new value for the \verb+X+ variable is retained, and the code prints the line \verb+X = 2+ twice. \begin{verbatim} X = 1 section X = 2 println(X = $(X)) export println(X = $(X)) \end{verbatim} There are also cases where separate scoping is quite important. For example, each \File{OMakefile} is evaluated in its own scope. Since each part of a project may have its own configuration, it is important that variable definitions in one \File{OMakefile} do not affect the definitions in another. To give another example, in some cases it is convenient to specify a separate set of variables for different build targets. A frequent idiom in this case is to use the \verb+section+ command to define a separate scope. \begin{verbatim} section CFLAGS += -g %.c: %.y $(YACC) $< .SUBDIRS: foo .SUBDIRS: bar baz \end{verbatim} In this example, the \verb+-g+ option is added to the \verb+CFLAGS+ variable by the \verb+foo+ subdirectory, but not by the \verb+bar+ and \verb+baz+ directories. The implicit rules are scoped as well and in this example, the newly added yacc rule will be inherited by the \verb+foo+ subdirectory, but not by the \verb+bar+ and \verb+baz+ ones; furthermore this implicit rule will not be in scope in the current directory. \section{Conditionals} \label{section:conditionals} \index{conditionals} \index{if} Top level conditionals have the following form. \begin{verbatim} if elseif else \end{verbatim} The \verb++ expression is evaluated, and if it evaluates to a \emph{true} value (see Section~\ref{section:logic} for more information on logical values, and Boolean functions), the code for the \verb++ is evaluated; otherwise the remaining clauses are evaluated. There may be multiple \verb+elseif+ clauses; both the \verb+elseif+ and \verb+else+ clauses are optional. Note that the clauses are indented, so they introduce new scopes. When viewed as a predicate, a value corresponds to the Boolean \emph{false}, if its string representation is the empty string, or one of the strings \verb+false+, \verb+no+, \verb+nil+, \verb+undefined+, or \verb+0+. All other values are \emph{true}. The following example illustrates a typical use of a conditional. The \verb+OSTYPE+ variable is the current machine architecture. \begin{verbatim} # Common suffixes for files if $(equal $(OSTYPE), Win32) EXT_LIB = .lib EXT_OBJ = .obj EXT_ASM = .asm EXE = .exe export elseif $(mem $(OSTYPE), Unix Cygwin) EXT_LIB = .a EXT_OBJ = .o EXT_ASM = .s EXE = export else # Abort on other architectures eprintln(OS type $(OSTYPE) is not recognized) exit(1) \end{verbatim} \section{Matching} \label{section:match} \index{match}\index[fun]{match} \index{switch}\index[fun]{switch} Pattern matching is performed with the \verb+switch+ and \verb+match+ forms. \begin{verbatim} switch case case ... default \end{verbatim} The number of cases is arbitrary. The \verb+default+ clause is optional; however, if it is used it should be the last clause in the pattern match. For \verb+switch+, the string is compared with the patterns literally. \begin{verbatim} switch $(HOST) case mymachine println(Building on mymachine) default println(Building on some other machine) \end{verbatim} Patterns need not be constant strings. The following function tests for a literal match against \verb+pattern1+, and a match against \verb+pattern2+ with \verb+##+ delimiters. \begin{verbatim} Switch2(s, pattern1, pattern2) = switch $(s) case $(pattern1) println(Pattern1) case $"##$(pattern2)##" println(Pattern2) default println(Neither pattern matched) \end{verbatim} For \verb+match+ the patterns are \Cmd{egrep}{1}-style regular expressions. The numeric variables \verb+$1, $2, ...+ can be used to retrieve values that are matched by \verb+\(...\)+ expressions. \begin{verbatim} match $(NODENAME)@$(SYSNAME)@$(RELEASE) case $"mymachine.*@\(.*\)@\(.*\)" println(Compiling on mymachine; sysname $1 and release $2 are ignored) case $".*@Linux@.*2\.4\.\(.*\)" println(Compiling on a Linux 2.4 system; subrelease is $1) default eprintln(Machine configuration not implemented) exit(1) \end{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Objects % \section{Objects} \label{section:objects} \index{objects} \OMake{} is an object-oriented language. Generally speaking, an object is a value that contains fields and methods. An object is defined with a \verb+.+ suffix for a variable. For example, the following object might be used to specify a point $(1, 5)$ on the two-dimensional plane. \begin{verbatim} Coord. = x = 1 y = 5 print(message) = println($"$(message): the point is ($(x), $(y)") # Define X to be 5 X = $(Coord.x) # This prints the string, "Hi: the point is (1, 5)" Coord.print(Hi) \end{verbatim} The fields \verb+x+ and \verb+y+ represent the coordinates of the point. The method \verb+print+ prints out the position of the point. \section{Classes} \index{classes} We can also define \emph{classes}. For example, suppose we wish to define a generic \verb+Point+ class with some methods to create, move, and print a point. A class is really just an object with a name, defined with the \verb+class+ directive. \begin{verbatim} Point. = class Point # Default values for the fields x = 0 y = 0 # Create a new point from the coordinates new(x, y) = this.x = $(x) this.y = $(y) return $(this) # Move the point to the right move-right() = x = $(add $(x), 1) return $(this) # Print the point print() = println($"The point is ($(x), $(y)") p1 = $(Point.new 1, 5) p2 = $(p1.move-right) # Prints "The point is (1, 5)" p1.print() # Prints "The point is (2, 5)" p2.print() \end{verbatim} Note that the variable \verb+$(this)+ is used to refer to the current object. Also, classes and objects are \emph{functional}---the \verb+new+ and \verb+move-right+ methods return new objects. In this example, the object \verb+p2+ is a different object from \verb+p1+, which retains the original $(1, 5)$ coordinates. \section{Inheritance} \index{inheritance} Classes and objects support inheritance (including multiple inheritance) with the \verb+extends+ directive. The following definition of \verb+Point3D+ defines a point with \verb+x+, \verb+y+, and \verb+z+ fields. The new object inherits all of the methods and fields of the parent classes/objects. \begin{verbatim} Z. = z = 0 Point3D. = extends $(Point) extends $(Z) class Point3D print() = println($"The 3D point is ($(x), $(y), $(z))") # The "new" method was not redefined, so this # defines a new point (1, 5, 0). p = $(Point3D.new 1, 5) \end{verbatim} \section{static.} \label{section:static.} \index{static.} The \verb+static.+ object is used to specify values that are persistent across runs of \OMake{}. They are frequently used for configuring a project. Configuring a project can be expensive, so the \verb+static.+ object ensure that the configuration is performed just once. In the following (somewhat trivial) example, a \verb+static+ section is used to determine if the \LaTeX\ command is available. The \verb+$(where latex)+ function returns the full pathname for \verb+latex+, or \verb+false+ if the command is not found. \begin{verbatim} static. = LATEX_ENABLED = false print(--- Determining if LaTeX is installed ) if $(where latex) LATEX_ENABLED = true export if $(LATEX_ENABLED) println($'(enabled)') else println($'(disabled)') \end{verbatim} The \OMake standard library provides a number of useful functions for programming the \verb+static.+ tests, as described in Chapter~\ref{chapter:autoconf}. Using the standard library, the above can be rewritten as \begin{verbatim} open configure/Configure static. = LATEX_ENABLED = $(CheckProg latex) \end{verbatim} As a matter of style, a \verb+static.+ section that is used for configuration should print what it is doing using the \hyperfunn{ConfMsgChecking} and \hyperfunn{ConfMsgResult} functions (of course, most of helper functions in the standard library would do that automatically). \subsection{.STATIC} \label{section:.STATIC} \index{.STATIC} \index[target]{.STATIC} \newinreorg There is also a rule form of static section. The syntax can be any of the following three forms. \begin{verbatim} # Export all variables defined by the body .STATIC: # Specify file-dependencies .STATIC: # Specify which variables to export, as well as file dependencies .STATIC: : \end{verbatim} The \verb++ are the variable names to be defined, the \verb++ are file dependencies---the rule is re-evaluated if one of the dependencies is changed. The \verb++ and \verb++ can be omitted; if so, all variables defined in the \verb++ are exported. For example, the final example of the previous section can also be implemented as follows. \begin{verbatim} open configure/Configure .STATIC: LATEX_ENABLED = $(CheckProg latex) \end{verbatim} % The effect is much the same as using \verb+static.+ (instead of \verb+.STATIC+). However, in most cases \verb+.STATIC+ is preferred, for two reasons. First, a \verb+.STATIC+ section is lazy, meaning that it is not evaluated until one of its variables is resolved. In this example, if \verb+$(LATEX_ENABLED)+ is never evaluated, the section need never be evaluated either. This is in contrast to the \verb+static.+ section, which always evaluates its body at least once. A second reason is that a \verb+.STATIC+ section allows for file dependencies, which are useful when the \verb+.STATIC+ section is used for memoization. For example, suppose we wish to create a dictionary from a table that has key-value pairs. By using a \verb+.STATIC+ section, we can perform this computation only when the input file changes (not on every fun of \verb+omake+). In the following example the \hyperfun{awk} is used to parse the file \verb+table-file+. When a line is encountered with the form \textit{key}\verb+ = +\textit{value}, the key/value pair is added the the \verb+TABLE+. \begin{verbatim} .STATIC: table-file TABLE = $(Map) awk(table-file) case $'^\([[:alnum:]]+\) *= *\(.*\)' TABLE = $(TABLE.add $1, $2) export \end{verbatim} It is appropriate to think of a \verb+.STATIC+ section as a rule that must be recomputed whenever the dependencies of the rule change. The targets of the rule are the variables it exports (in this case, the \verb+TABLE+ variable). \subsubsection{.MEMO} \label{section:.MEMO} \index{.MEMO} \index[target]{.MEMO} A \verb+.MEMO+ rule is just like a \verb+.STATIC+ rule, except that the results are not saved between independent runs of \verb+omake+. \subsubsection{:key:} \index{:key:} The \verb+.STATIC+ and \verb+.MEMO+ rules also accept a \verb+:key:+ value, which specifies a ``key'' associated with the values being computed. It is useful to think of a \verb+.STATIC+ rule as a dictionary that associates keys with their values. When a \verb+.STATIC+ rule is evaluated, the result is saved in the table with the \verb+:key:+ defined by the rule (if a \verb+:key:+ is not specified, a default key is used instead). In other words, a rule is like a function. The \verb+:key:+ specifies the function ``argument'', and the rule body computes the result. To illustrate, let's use a \verb+.MEMO+ rule to implement a Fibonacci function. \begin{verbatim} fib(i) = i = $(int $i) .MEMO: :key: $i println($"Computing fib($i)...") result = if $(or $(eq $i, 0), $(eq $i, 1)) value $i else add($(fib $(sub $i, 1)), $(fib $(sub $i, 2))) value $(result) println($"fib(10) = $(fib 10)") println($"fib(12) = $(fib 12)") \end{verbatim} % When this script is run, it produces the following output. \begin{verbatim} Computing fib(10)... Computing fib(9)... Computing fib(8)... Computing fib(7)... Computing fib(6)... Computing fib(5)... Computing fib(4)... Computing fib(3)... Computing fib(2)... Computing fib(1)... Computing fib(0)... fib(10) = 55 Computing fib(12)... Computing fib(11)... fib(12) = 144 \end{verbatim} % Note that the Fibonacci computation is performed just once for each value of the argument, rather than an exponential number of times. In other words, the \verb+.MEMO+ rule has performed a memoization, hence the name. Note that if \verb+.STATIC+ were used instead, the values would be saved across runs of \verb+omake+. As a general guideline, whenever you use a \verb+.STATIC+ or \verb+.MEMO+ rule within a function body, you will usually want to use a \verb+:key:+ value to index the rule by the function argument. However, this is not required. In the following, the \verb+.STATIC+ rule is used to perform some expensive computation once. \begin{verbatim} f(x) = .STATIC: y = $(expensive-computation) add($x, $y) \end{verbatim} Additonal care should be taken for recursive functions, like the Fibonacci function. If the \verb+:key:+ is omitted, then the rule would be defined in terms of itself, resulting in a cyclic dependency. Here is the output of the Fibonacci program with an omitted \verb+:key:+. \begin{verbatim} Computing fib(10)... Computing fib(8)... Computing fib(6)... Computing fib(4)... Computing fib(2)... Computing fib(0)... fib(10) = 0 fib(12) = 0 \end{verbatim} % The reason for this behavior is that the \verb+result+ value is not saved until the base case \verb+i = 0 || i = 1+ is reached, so \verb+fib+ calls itself recursively until reaching \verb+fib(0)+, whereupon the \verb+result+ value is fixed at 0. In any case, recursive definitions are perfectly acceptable, but you will usually want a \verb+:key:+ argument so that each recursive call has a different \verb+:key:+. In most cases, this means that the \verb+:key:+ should include all arguments to the function. \section{Constants} \index{constants} Internally, OMake represents values in several forms, which we list here. \begin{itemize} \item int \begin{itemize} \item Constructor: \verb+$(int )+~\ref{function:int}. \item Object: \verb+Int+~\ref{object:Int}. \item An integer is a represented with finite precision using the OCaml representation (31 bits on a 32 platform, and 63 bits on a 64 bit platform). \item See also: arithmetic~\ref{function:add}. \end{itemize} \item float \begin{itemize} \item Constructor: \verb+$(float )+~\ref{function:float}. \item Object: \verb+Float+~\ref{object:Float}. \item A float is a floating-point value, represented in IEEE 64-bit format. \item See also: arithmetic~\ref{function:add}. \end{itemize} \item array \begin{itemize} \item Constructor: \verb+$(array , ..., )+~\ref{function:array}. \item Object: \verb+Array+~\ref{object:Array}. \item An array is a finite list of values. Arrays are also defined with an array definition \begin{verbatim} X[] = ... \end{verbatim} \item See also: \verb+nth+~\ref{function:nth}, \verb+nth-tl+~\ref{function:nth-tl}, \verb+length+~\ref{function:length}, $\ldots$ \end{itemize} \item string \begin{itemize} \item Object: \verb+String+~\ref{object:String}. \item By default, all constant character sequences represent strings, so the simple way to construct a string is to write it down. Internally, the string may be parsed as several pieces. A string often represents an array of values separated by whitespace. \begin{verbatim} osh>S = This is a string - : : Sequence osh>length($S) - : 4 : Int \end{verbatim} \item A \emph{data} string is a string where whitespace is significant. It represents a single value, not an array. The constructors are the quotations \verb+$"..."+ and \verb+$'...'+. \begin{verbatim} osh>S = $'''This is a string''' - : : String \end{verbatim} \item See also: Quoted strings~\ref{section:quoted-strings}. \end{itemize} \item file \begin{itemize} \item Constructor: \verb+$(file )+~\ref{function:file}. \item Object: \verb+File+~\ref{object:File}. \item A file object represents the abstract name for a file. The file object can be viewed as an absolute name; the string representation depends on the current directory. \begin{verbatim} osh>name = $(file foo) - : /Users/jyh/projects/omake/0.9.8.x/foo : File osh>echo $(name) foo osh>cd .. - : /Users/jyh/projects/omake : Dir osh>echo $(name) 0.9.8.x/foo \end{verbatim} \item See also: \verb+vmount+~\ref{function:vmount}. \end{itemize} \item directory \begin{itemize} \item Constructor: \verb+$(dir )+~\ref{function:dir}. \item Object: \verb+Dir+~\ref{object:Dir}. \item A directory object is like a file object, but it represents a directory. \end{itemize} \item map (dictionary) \begin{itemize} \item Object: \verb+Map+~\ref{object:Map}. \item A map/dictionary is a table that maps values to values. The \verb+Map+ object is the empty map. The data structure is persistent, and all operations are pure and functional. The special syntax \verb+$|key|+ can be used for keys that are strings. \begin{verbatim} osh>table = $(Map) osh>table = $(table.add x, int) osh>table. += $|y| = int osh>table.find(y) - : "int" : Sequence \end{verbatim} \end{itemize} \item channel \begin{itemize} \item Constructor: \verb+$(fopen , )+~\ref{function:fopen}. \item Objects: \verb+InChannel+~\ref{object:InChannel}, \verb+OutChannel+~\ref{object:OutChannel}. \item Channels are used for buffered input/output. \end{itemize} \item function \begin{itemize} \item Constructor: \verb+$(fun , )+~\ref{function:fun}. \item Object: \verb+Fun+~\ref{object:Fun}. \item Functions can be defined in several ways. \begin{itemize} \item As an anonymous function, \begin{verbatim} $(fun i, j, $(add $i, $j)) \end{verbatim} \item As a named function, \begin{verbatim} f(i, j) = add($i, $j) \end{verbatim} \item \newinkeyword As an anonymous function argument. \begin{verbatim} osh>foreach(i => $(add $i, 1), 1 2 3) - : : Array \end{verbatim} \end{itemize} \end{itemize} \item lexer \begin{itemize} \item Object: \verb+Lexer+~\ref{object:Lexer}. \item This object represents a lexer. \end{itemize} \item parser \begin{itemize} \item Object: \verb+Parser+~\ref{object:Parser}. \item This object represents a parser. \end{itemize} \end{itemize} % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/omake-examples.tex0000664000152300015230000004660510564662701016143 0ustar jyhjyh% % Soem examples. % \chapter{\OMake{} quickstart guide} \label{chapter:quickstart} \cutname{omake-quickstart.html} \section{Description} \Prog{omake} is designed for building projects that might have source files in several directories. Projects are normally specified using an \File{OMakefile} in each of the project directories, and an \File{OMakeroot} file in the root directory of the project. The \File{OMakeroot} file specifies general build rules, and the \File{OMakefile}s specify the build parameters specific to each of the subdirectories. When \Prog{omake} runs, it walks the configuration tree, evaluating rules from all of the \File{OMakefile}s. The project is then built from the entire collection of build rules. \subsection{Automatic dependency analysis} Dependency analysis has always been problematic with the \Cmd{make}{1} program. \Prog{omake} addresses this by adding the \verb+.SCANNER+ target, which specifies a command to produce dependencies. For example, the following rule \begin{verbatim} .SCANNER: %.o: %.c $(CC) $(INCLUDE) -MM $< \end{verbatim} is the standard way to generate dependencies for \verb+.c+ files. \Prog{omake} will automatically run the scanner when it needs to determine dependencies for a file. \subsection{Content-based dependency analysis} Dependency analysis in omake uses MD5 digests to determine whether files have changed. After each run, \Prog{omake} stores the dependency information in a file called \File{.omakedb} in the project root directory. When a rule is considered for execution, the command is not executed if the target, dependencies, and command sequence are unchanged since the last run of \Prog{omake}. As an optimization, \Prog{omake} does not recompute the digest for a file that has an unchanged modification time, size, and inode number. \section{For users already familiar with make} For users already familiar with the \Cmd{make}{1} command, here is a list of differences to keep in mind when using \Prog{omake}. \begin{itemize} \item In \Prog{omake}, you are much less likely to define build rules of your own. The system provides many standard functions (like \hyperfunn{StaticCLibrary} and \hyperfunn{CProgram}), described in Chapter~\ref{chapter:build}, to specify these builds more simply. \item Implicit rules using \verb+.SUFFIXES+ and the \verb+.suf1.suf2:+ are not supported. You should use wildcard patterns instead \verb+%.suf2: %.suf1+. \item Scoping is significant: you should define variables and \verb+.PHONY+ targets (see Section~\ref{target:.PHONY}) before they are used. \item Subdirectories are incorporated into a project using the \verb+.SUBDIRS:+ target (see Section~\ref{target:.SUBDIRS}). \end{itemize} \section{Building a small C program} To start a new project, the easiest method is to change directories to the project root and use the command \verb+omake --install+ to install default \File{OMakefile}s. \begin{verbatim} $ cd ~/newproject $ omake --install *** omake: creating OMakeroot *** omake: creating OMakefile *** omake: project files OMakefile and OMakeroot have been installed *** omake: you should edit these files before continuing \end{verbatim} The default \File{OMakefile} contains sections for building C and OCaml programs. For now, we'll build a simple C project. Suppose we have a C file called \verb+hello_code.c+ containing the following code: \begin{verbatim} #include int main(int argc, char **argv) { printf("Hello world\n"); return 0; } \end{verbatim} To build the program a program \verb+hello+ from this file, we can use the \hyperfun{CProgram}. The \File{OMakefile} contains just one line that specifies that the program \verb+hello+ is to be built from the source code in the \verb+hello_code.c+ file (note that file suffixes are not passed to these functions). \begin{verbatim} CProgram(hello, hello_code) \end{verbatim} Now we can run \Prog{omake} to build the project. Note that the first time we run \Prog{omake}, it both scans the \verb+hello_code.c+ file for dependencies, and compiles it using the \verb+cc+ compiler. The status line printed at the end indicates how many files were scanned, how many were built, and how many MD5 digests were computed. \begin{verbatim} $ omake hello *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.0 sec) - scan . hello_code.o + cc -I. -MM hello_code.c - build . hello_code.o + cc -I. -c -o hello_code.o hello_code.c - build . hello + cc -o hello hello_code.o *** omake: done (0.5 sec, 1/6 scans, 2/6 rules, 5/22 digests) $ omake *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.1 sec) *** omake: done (0.1 sec, 0/4 scans, 0/4 rules, 0/9 digests) \end{verbatim} If we want to change the compile options, we can redefine the \verb+CC+ and \verb+CFLAGS+ variables \emph{before} the \verb+CProgram+ line. In this example, we will use the \verb+gcc+ compiler with the \verb+-g+ option. In addition, we will specify a \verb+.DEFAULT+ target to be built by default. The \verb+EXE+ variable is defined to be \verb+.exe+ on \verb+Win32+ systems; it is empty otherwise. \begin{verbatim} CC = gcc CFLAGS += -g CProgram(hello, hello_code) .DEFAULT: hello$(EXE) \end{verbatim} Here is the corresponding run for \Prog{omake}. \begin{verbatim} $ omake *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.0 sec) - scan . hello_code.o + gcc -g -I. -MM hello_code.c - build . hello_code.o + gcc -g -I. -c -o hello_code.o hello_code.c - build . hello + gcc -g -o hello hello_code.o *** omake: done (0.4 sec, 1/7 scans, 2/7 rules, 3/22 digests) \end{verbatim} We can, of course, include multiple files in the program. Suppose we write a new file \verb+hello_helper.c+. We would include this in the project as follows. \begin{verbatim} CC = gcc CFLAGS += -g CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) \end{verbatim} \section{Larger projects} As the project grows it is likely that we will want to build libraries of code. Libraries can be built using the \verb+StaticCLibrary+ function. Here is an example of an \File{OMakefile} with two libraries. \begin{verbatim} CC = gcc CFLAGS += -g FOO_FILES = foo_a foo_b BAR_FILES = bar_a bar_b bar_c StaticCLibrary(libfoo, $(FOO_FILES)) StaticCLibrary(libbar, $(BAR_FILES)) # The hello program is linked with both libraries LIBS = libfoo libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) \end{verbatim} \section{Subdirectories} As the project grows even further, it is a good idea to split it into several directories. Suppose we place the \verb+libfoo+ and \verb+libbar+ into subdirectories. In each subdirectory, we define an \File{OMakefile} for that directory. For example, here is an example \File{OMakefile} for the \verb+foo+ subdirectory. \begin{verbatim} INCLUDES += .. ../bar FOO_FILES = foo_a foo_b StaticCLibrary(libfoo, $(FOO_FILES)) \end{verbatim} Note the the \verb+INCLUDES+ variable is defined to include the other directories in the project. Now, the next step is to link the subdirectories into the main project. The project \File{OMakefile} should be modified to include a \verb+.SUBDIRS:+ target. \begin{verbatim} # Project configuration CC = gcc CFLAGS += -g # Subdirectories .SUBDIRS: foo bar # The libraries are now in subdirectories LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) \end{verbatim} Note that the variables \verb+CC+ and \verb+CFLAGS+ are defined \emph{before} the \verb+.SUBDIRS+ target. These variables remain defined in the subdirectories, so that \verb+libfoo+ and \verb+libbar+ use \verb+gcc -g+. If the two directories are to be configured differently, we have two choices. The \File{OMakefile} in each subdirectory can be modified with its configuration (this is how it would normally be done). Alternatively, we can also place the change in the root \File{OMakefile}. \begin{verbatim} # Default project configuration CC = gcc CFLAGS += -g # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler CFLAGS += -O3 .SUBDIRS: bar # Main program LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) \end{verbatim} Note that the way we have specified it, the \verb+CFLAGS+ variable also contains the \verb+-O3+ option for the \verb+CProgram+, and \verb+hello_code.c+ and \verb+hello_helper.c+ file will both be compiled with the \verb+-O3+ option. If we want to make the change truly local to \verb+libbar+, we can put the \verb+bar+ subdirectory in its own scope using the \verb+section+ form. \begin{verbatim} # Default project configuration CC = gcc CFLAGS += -g # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += -O3 .SUBDIRS: bar # Main program does not use the optimizing compiler LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) \end{verbatim} Later, suppose we decide to port this project to \verb+Win32+, and we discover that we need different compiler flags and an additional library. \begin{verbatim} # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3) .SUBDIRS: bar # Default libraries LIBS = foo/libfoo bar/libbar # We need libwin32 only on Win32 if $(equal $(OSTYPE), Win32) LIBS += win32/libwin32 .SUBDIRS: win32 export # Main program does not use the optimizing compiler CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) \end{verbatim} Note the use of the \verb+export+ directives to export the variable definitions from the if-statements. Variables in \Prog{omake} are \emph{scoped}---variables in nested blocks (blocks with greater indentation), are not normally defined in outer blocks. The \verb+export+ directive specifies that the variable definitions in the nested blocks should be exported to their parent block. Finally, for this example, we decide to copy all libraries into a common \verb+lib+ directory. We first define a directory variable, and replace occurrences of the \verb+lib+ string with the variable. \begin{verbatim} # The common lib directory LIB = $(dir lib) # phony target to build just the libraries .PHONY: makelibs # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3) .SUBDIRS: bar # Default libraries LIBS = $(LIB)/libfoo $(LIB)/libbar # We need libwin32 only on Win32 if $(equal $(OSTYPE), Win32) LIBS += $(LIB)/libwin32 .SUBDIRS: win32 export # Main program does not use the optimizing compiler CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) \end{verbatim} In each subdirectory, we modify the \File{OMakefile}s in the library directories to install them into the \verb+$(LIB)+ directory. Here is the relevant change to \File{foo/OMakefile}. \begin{verbatim} INCLUDES += .. ../bar FOO_FILES = foo_a foo_b StaticCLibraryInstall(makelib, $(LIB), libfoo, $(FOO_FILES)) \end{verbatim} Directory (and file names) evaluate to relative pathnames. Within the \verb+foo+ directory, the \verb+$(LIB)+ variable evaluates to \verb+../lib+. As another example, instead of defining the \verb+INCLUDES+ variable separately in each subdirectory, we can define it in the toplevel as follows. \begin{verbatim} INCLUDES = $(ROOT) $(dir foo bar win32) \end{verbatim} In the \verb+foo+ directory, the \verb+INCLUDES+ variable will evaluate to the string \verb+.. . ../bar ../win32+. In the \verb+bar+ directory, it would be \verb+.. ../foo . ../win32+. In the root directory it would be \verb+. foo bar win32+. \section{Other things to consider} \Prog{omake} also handles recursive subdirectories. For example, suppose the \verb+foo+ directory itself contains several subdirectories. The \File{foo/OMakefile} would then contain its own \verb+.SUBDIRS+ target, and each of its subdirectories would contain its own \verb+OMakefile+. \section{Building OCaml programs} By default, \Prog{omake} is also configured with functions for building OCaml programs. The functions for OCaml program use the \verb+OCaml+ prefix. For example, suppose we reconstruct the previous example in OCaml, and we have a file called \verb+hello_code.ml+ that contains the following code. \begin{verbatim} open Printf let () = printf "Hello world\n" \end{verbatim} An example \File{OMakefile} for this simple project would contain the following. \begin{verbatim} # Use the byte-code compiler BYTE_ENABLED = true NATIVE_ENABLED = false OCAMLCFLAGS += -g # Build the program OCamlProgram(hello, hello_code) .DEFAULT: hello.run \end{verbatim} Next, suppose the we have two library subdirectories: the \verb+foo+ subdirectory is written in C, the \verb+bar+ directory is written in OCaml, and we need to use the standard OCaml \verb+Unix+ module. \begin{verbatim} # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # Use the byte-code compiler BYTE_ENABLED = true NATIVE_ENABLED = false OCAMLCFLAGS += -g # library subdirectories INCLUDES += $(dir foo bar) OCAMLINCLUDES += $(dir foo bar) .SUBDIRS: foo bar # C libraries LIBS = foo/libfoo # OCaml libraries OCAML_LIBS = bar/libbar # Also use the Unix module OCAML_OTHER_LIBS = unix # The main program OCamlProgram(hello, hello_code hello_helper) .DEFAULT: hello \end{verbatim} The \File{foo/OMakefile} would be configured as a C library. \begin{verbatim} FOO_FILES = foo_a foo_b StaticCLibrary(libfoo, $(FOO_FILES)) \end{verbatim} The \File{bar/OMakefile} would build an ML library. \begin{verbatim} BAR_FILES = bar_a bar_b bar_c OCamlLibrary(libbar, $(BAR_FILES)) \end{verbatim} \section{The OMakefile and OMakeroot files} \label{section:omakeroot} \index{OMakefile} \index{OMakeroot} \Prog{\OMake} uses the \File{OMakefile} and \File{OMakeroot} files for configuring a project. The syntax of these files is the same, but their role is slightly different. For one thing, every project must have exactly one \File{OMakeroot} file in the project root directory. This file serves to identify the project root, and it contains code that sets up the project. In contrast, a multi-directory project will often have an \File{OMakefile} in each of the project subdirectories, specifying how to build the files in that subdirectory. Normally, the \File{OMakeroot} file is boilerplate. The following listing is a typical example. \begin{verbatim} include $(STDLIB)/build/Common include $(STDLIB)/build/C include $(STDLIB)/build/OCaml include $(STDLIB)/build/LaTeX # Redefine the command-line variables DefineCommandVars(.) # The current directory is part of the project .SUBDIRS: . \end{verbatim} The \verb+include+ lines include the standard configuration files needed for the project. The \verb+$(STDLIB)+ represents the \Prog{omake} library directory. The only required configuration file is \verb+Common+. The others are optional; for example, the \verb+$(STDLIB)/build/OCaml+ file is needed only when the project contains programs written in OCaml. The \verb+DefineCommandVars+ function defines any variables specified on the command line (as arguments of the form \verb+VAR=+). The \verb+.SUBDIRS+ line specifies that the current directory is part of the project (so the \verb+OMakefile+ should be read). Normally, the \verb+OMakeroot+ file should be small and project-independent. Any project-specific configuration should be placed in the \verb+OMakefiles+ of the project. \section{Multiple version support} \index{vmount} \OMake{} version \verb+0.9.6+ introduced preliminary support for multiple, simultaneous versions of a project. Versioning uses the \verb+vmount(dir1, dir2)+ function, which defines a ``virtual mount'' of directory \verb+dir1+ over directory \verb+dir2+. A ``virtual mount'' is like a transparent mount in Unix, where the files from \verb+dir1+ appear in the \verb+dir2+ namespace, but new files are created in \verb+dir2+. More precisely, the filename \verb+dir2/foo+ refers to: a) the file \verb+dir1/foo+ if it exists, or b) \verb+dir2/foo+ otherwise. The \verb+vmount+ function makes it easy to specify multiple versions of a project. Suppose we have a project where the source files are in the directory \verb+src/+, and we want to compile two versions, one with debugging support and one optimized. We create two directories, \File{debug} and \File{opt}, and mount the \File{src} directory over them. \begin{verbatim} section CFLAGS += -g vmount(-l, src, debug) .SUBDIRS: debug section CFLAGS += -O3 vmount(-l, src, opt) .SUBDIRS: opt \end{verbatim} Here, we are using \verb+section+ blocks to define the scope of the \verb+vmount+---you may not need them in your project. The \verb+-l+ option is optional. It specifies that files form the \verb+src+ directory should be linked into the target directories (or copied, if the system is Win32). The links are added as files are referenced. If no options are given, then files are not copied or linked, but filenames are translated to refer directly to the \verb+src/+ files. Now, when a file is referenced in the \verb+debug+ directory, it is linked from the \verb+src+ directory if it exists. For example, when the file \verb+debug/OMakefile+ is read, the \verb+src/OMakefile+ is linked into the \verb+debug/+ directory. The \verb+vmount+ model is fairly transparent. The \verb+OMakefile+s can be written \emph{as if} referring to files in the \verb+src/+ directory---they need not be aware of mounting. However, there are a few points to keep in mind. \section{Notes} \begin{itemize} \item When using the \verb+vmount+ function for versioning, it wise to keep the source files distinct from the compiled versions. For example, suppose the source directory contained a file \verb+src/foo.o+. When mounted, the \verb+foo.o+ file will be the same in all versions, which is probably not what you want. It is better to keep the \verb+src/+ directory pristine, containing no compiled code. \item When using the \verb+vmount -l+ option, files are linked into the version directory only if they are referenced in the project. Functions that examine the filesystem (like \verb+$(ls ...)+) may produce unexpected results. \end{itemize} % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/omake-build-examples.tex0000664000152300015230000007606610606474235017244 0ustar jyhjyh% % % \chapter{Additional build examples} \label{chapter:build-examples} \index{build model} \cutname{omake-build-examples.html} Let's explain the \OMake{} build model a bit more. One issue that dominates this discussion is that \OMake{} is based on global project analysis. That means you define a configuration for the \emph{entire} project, and you run \emph{one} instance of omake. For single-directory projects this doesn't mean much. For multi-directory projects it means a lot. With GNU make, you would usually invoke the \verb+make+ program recursively for each directory in the project. For example, suppose you had a project with some project root directory, containing a directory of sources \verb+src+, which in turn contains subdirectories \verb+lib+ and \verb+main+. So your project looks like this nice piece of ASCII art. \begin{verbatim} my_project/ |--> Makefile `--> src/ |---> Makefile |---> lib/ | |---> Makefile | `---> source files... `---> main/ |---> Makefile `---> source files... \end{verbatim} Typically, with GNU make, you would start an instance of \verb+make+ in \verb+my_project/+; this would in term start an instance of \verb+make+ in the \verb+src/+ directory; and this would start new instances in \verb+lib/+ and \verb+main/+. Basically, you count up the number of \verb+Makefile+s in the project, and that is the number of instances of \verb+make+ processes that will be created. The number of processes is no big deal with today's machines (sometimes contrary the the author's opinion, we no longer live in the 1970s). The problem with the scheme was that each \verb+make+ process had a separate configuration, and it took a lot of work to make sure that everything was consistent. Furthermore, suppose the programmer runs \verb+make+ in the \verb+main/+ directory, but the \verb+lib/+ is out-of-date. In this case, \verb+make+ would happily crank away, perhaps trying to rebuild files in \verb+lib/+, perhaps just giving up. With \OMake{} this changes entirely. Well, not entirely. The source structure is quite similar, we merely add some Os to the ASCII art. \begin{verbatim} my_project/ |--> OMakeroot (or Root.om) |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | `---> source files... `---> main/ |---> OMakefile `---> source files... \end{verbatim} \index{OMakefile} \index{OMakeroot} The role of each \verb+/OMakefile+ plays the same role as each \verb+/Makefile+: it describes how to build the source files in \verb++. The OMakefile retains much of syntax and structure of the Makefile, but in most cases it is much simpler. One minor difference is the presence of the OMakeroot in the project root. The main purpose of this file is to indicate where the project root \emph{is} in the first place (in case \verb+omake+ is invoked from a subdirectory). The \verb+OMakeroot+ serves as the bootstrap file; omake starts by reading this file first. Otherwise, the syntax and evaluation of \verb+OMakeroot+ is no different from any other \verb+OMakefile+. The \emph{big} difference is that \OMake{} performs a \emph{global} analysis. Here is what happens when \verb+omake+ starts. \index{.SUBDIRS} \begin{enumerate} \item omake locates that OMakeroot file, and reads it. \item Each OMakefile points to its subdirectory OMakefiles using the .SUBDIRS target. For example, \verb+my_project/OMakefile+ has a rule, \begin{verbatim} .SUBDIRS: src \end{verbatim} and the \verb+my_project/src/OMakefile+ has a rule, \begin{verbatim} .SUBDIRS: lib main \end{verbatim} \verb+omake+ uses these rules to read and evaluate every \verb+OMakefile+ in the project. Reading and evaluation is fast. This part of the process is cheap. \item Now that the entire configuration is read, \verb+omake+ determines which files are out-of-date (using a global analysis), and starts the build process. This may take a while, depending on what exactly needs to be done. \end{enumerate} There are several advantages to this model. First, since analysis is global, it is much easier to ensure that the build configuration is consistent--after all, there is only one configuration. Another benefit is that the build configuration is inherited, and can be re-used, down the hierarchy. Typically, the root \verb+OMakefile+ defines some standard boilerplate and configuration, and this is inherited by subdirectories that tweak and modify it (but do not need to restate it entirely). The disadvantage of course is space, since this is global analysis after all. In practice rarely seems to be a concern; omake takes up much less space than your web browser even on large projects. Some notes to the GNU/BSD make user. \begin{itemize} \item OMakefiles are a lot like Makefiles. The syntax is similar, and there many of the builtin functions are similar. However, the two build systems are not the same. Some evil features (in the authors' opinions) have been dropped in \OMake{}, and some new features have been added. \item \OMake{} works the same way on all platforms, including Win32. The standard configuration does the right thing, but if you care about porting your code to multiple platforms, and you use some tricky features, you may need to condition parts of your build config on the \verb+$(OSTYPE)+ variable. \item A minor issue is that \OMake{} dependency analysis is based on MD5 file digests. That is, dependencies are based on file \emph{contents}, not file \emph{modification times}. Say goodbye to false rebuilds based on spurious timestamp changes and mismatches between local time and fileserver time. \end{itemize} \section{OMakeroot vs. OMakefile} Before we begin with examples, let's ask the first question, ``What is the difference between the project root OMakeroot and OMakefile?'' A short answer is, there is no difference, but you must have an OMakeroot file (or Root.om file). However, the normal style is that OMakeroot is boilerplate and is more-or-less the same for all projects. The OMakefile is where you put all your project-specific stuff. To get started, you don't have to do this yourself. In most cases you just perform the following step in your project root directory. \begin{itemize} \item Run \verb+omake --install+ in your project root. \end{itemize} This will create the initial OMakeroot and OMakefile files that you can edit to get started. \section{An example C project} To begin, let's start with a simple example. Let's say that we have a full directory tree, containing the following files. \begin{verbatim} my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> ouch.c | |---> ouch.h | `---> bandaid.c `---> main/ |---> OMakefile |---> horsefly.c |---> horsefly.h `---> main.c \end{verbatim} Here is an example listing. \begin{verbatim} my_project/OMakeroot: # Include the standard configuration for C applications open build/C # Process the command-line vars DefineCommandVars() # Include the OMakefile in this directory. .SUBDIRS: . my_project/OMakefile: # Set up the standard configuration CFLAGS += -g # Include the src subdirectory .SUBDIRS: src my_project/src/OMakefile: # Add any extra options you like CFLAGS += -O2 # Include the subdirectories .SUBDIRS: lib main my_project/src/lib/OMakefile: # Build the library as a static library. # This builds libbug.a on Unix/OSX, or libbug.lib on Win32. # Note that the source files are listed _without_ suffix. StaticCLibrary(libbug, ouch bandaid) my_project/src/main/OMakefile: # Some files include the .h files in ../lib INCLUDES += ../lib # Indicate which libraries we want to link against. LIBS[] += ../lib/libbug # Build the program. # Builds horsefly.exe on Win32, and horsefly on Unix. # The first argument is the name of the executable. # The second argument is an array of object files (without suffix) # that are part of the program. CProgram(horsefly, horsefly main) # Build the program by default (in case omake is called # without any arguments). EXE is defined as .exe on Win32, # otherwise it is empty. .DEFAULT: horsefly$(EXE) \end{verbatim} Most of the configuration here is defined in the file \verb+build/C.om+ (which is part of the \OMake{} distribution). This file takes care of a lot of work, including: \begin{itemize} \item Defining the \verb+StaticCLibrary+ and \verb+CProgram+ functions, which describe the canonical way to build C libraries and programs. \item Defining a mechanism for \emph{scanning} each of the source programs to discover dependencies. That is, it defines .SCANNER rules for C source files. \end{itemize} Variables are inherited down the hierarchy, so for example, the value of CFLAGS in src/main/OMakefile is ``\verb+-g -O2+''. \section{An example OCaml project} Let's repeat the example, assuming we are using OCaml instead of C. This time, the directory tree looks like this. \begin{verbatim} my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> ouch.ml | |---> ouch.mli | `---> bandaid.ml `---> main/ |---> OMakefile |---> horsefly.ml |---> horsefly.mli `---> main.ml \end{verbatim} The listing is only a bit different. \begin{verbatim} my_project/OMakeroot: # Include the standard configuration for OCaml applications open build/OCaml # Process the command-line vars DefineCommandVars() # Include the OMakefile in this directory. .SUBDIRS: . my_project/OMakefile: # Set up the standard configuration OCAMLFLAGS += -Wa # Do we want to use the bytecode compiler, # or the native-code one? Let's use both for # this example. NATIVE_ENABLED = true BYTE_ENABLED = true # Include the src subdirectory .SUBDIRS: src my_project/src/OMakefile: # Include the subdirectories .SUBDIRS: lib main my_project/src/lib/OMakefile: # Let's do aggressive inlining on native code OCAMLOPTFLAGS += -inline 10 # Build the library as a static library. # This builds libbug.a on Unix/OSX, or libbug.lib on Win32. # Note that the source files are listed _without_ suffix. OCamlLibrary(libbug, ouch bandaid) my_project/src/main/OMakefile: # These files depend on the interfaces in ../lib OCAMLINCLUDES += ../lib # Indicate which libraries we want to link against. OCAML_LIBS[] += ../lib/libbug # Build the program. # Builds horsefly.exe on Win32, and horsefly on Unix. # The first argument is the name of the executable. # The second argument is an array of object files (without suffix) # that are part of the program. OCamlProgram(horsefly, horsefly main) # Build the program by default (in case omake is called # without any arguments). EXE is defined as .exe on Win32, # otherwise it is empty. .DEFAULT: horsefly$(EXE) \end{verbatim} In this case, most of the configuration here is defined in the file \verb+build/OCaml.om+. In this particular configuration, files in \verb+my_project/src/lib+ are compiled aggressively with the option \verb+-inline 10+, but files in \verb+my_project/src/lib+ are compiled normally. \section{Handling new languages} \index{cats and dogs} The previous two examples seem to be easy enough, but they rely on the \OMake{} standard library (the files \verb+build/C+ and \verb+build/OCaml+) to do all the work. What happens if we want to write a build configuration for a language that is not already supported in the \OMake{} standard library? For this example, let's suppose we are adopting a new language. The language uses the standard compile/link model, but is not in the \OMake{} standard library. Specifically, let's say we have the following setup. \begin{itemize} \item Source files are defined in files with a \verb+.cat+ suffix (for Categorical Abstract Terminology). \item \verb+.cat+ files are compiled with the \verb+catc+ compiler to produce \verb+.woof+ files (Wicked Object-Oriented Format). \item \verb+.woof+ files are linked by the \verb+catc+ compiler with the \verb+-c+ option to produce a \verb+.dog+ executable (Digital Object Group). The \verb+catc+ also defines a \verb+-a+ option to combine several \verb+.woof+ files into a library. \item Each \verb+.cat+ can refer to other source files. If a source file \verb+a.cat+ contains a line \verb+open b+, then \verb+a.cat+ depends on the file \verb+b.woof+, and \verb+a.cat+ must be recompiled if \verb+b.woof+ changes. The \verb+catc+ function takes a \verb+-I+ option to define a search path for dependencies. \end{itemize} To define a build configuration, we have to do three things. \begin{enumerate} \item Define a \verb+.SCANNER+ rule for discovering dependency information for the source files. \item Define a generic rule for compiling a \verb+.cat+ file to a \verb+.woof+ file. \item Define a rule (as a function) for linking \verb+.woof+ files to produce a \verb+.dog+ executable. \end{enumerate} Initially, these definitions will be placed in the project root \verb+OMakefile+. \subsection{Defining a default compilation rule} Let's start with part 2, defining a generic compilation rule. We'll define the build rule as an \emph{implicit} rule. To handle the include path, we'll define a variable \verb+CAT_INCLUDES+ that specifies the include path. This will be an array of directories. To define the options, we'll use a lazy variable (Section~\ref{section:lazy}). In case there are any other standard flags, we'll define a \verb+CAT_FLAGS+ variable. \begin{verbatim} # Define the catc command, in case we ever want to override it CATC = catc # The default flags are empty CAT_FLAGS = # The directories in the include path (empty by default) INCLUDES[] = # Compute the include options from the include path PREFIXED_INCLUDES[] = $`(mapprefix -I, $(INCLUDES)) # The default way to build a .woof file %.woof: %.cat $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) -c $< \end{verbatim} The final part is the build rule itself, where we call the \verb+catc+ compiler with the include path, and the \verb+CAT_FLAGS+ that have been defined. The \verb+$<+ variable represents the source file. \subsection{Defining a rule for linking} For linking, we'll define another rule describing how to perform linking. Instead of defining an implicit rule, we'll define a function that describes the linking step. The function will take two arguments; the first is the name of the executable (without suffix), and the second is the files to link (also without suffixes). Here is the code fragment. \begin{verbatim} # Optional link options CAT_LINK_FLAGS = # The function that defines how to build a .dog program CatProgram(program, files) = # Add the suffixes file_names = $(addsuffix .woof, $(files)) prog_name = $(addsuffix .dog, $(files)) # The build rule $(prog_name): $(file_names) $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -o $@ $+ # Return the program name value $(prog_name) \end{verbatim} The \verb+CAT_LINK_FLAGS+ variable is defined just in case we want to pass additional flags specific to the link step. Now that this function is defined, whenever we want to define a rule for building a program, we simply call the rule. The previous implicit rule specifies how to compile each source file, and the \verb+CatProgram+ function specifies how to build the executable. \begin{verbatim} # Build a rover.dog program from the source # files neko.cat and chat.cat. # Compile it by default. .DEFAULT: $(CatProgram rover, neko chat) \end{verbatim} \subsection{Dependency scanning} \label{section:scanner-exm}\index{.SCANNER} That's it, almost. The part we left out was automated dependency scanning. This is one of the nicer features of \OMake{}, and one that makes build specifications easier to write and more robust. Strictly speaking, it isn't required, but you definitely want to do it. The mechanism is to define a \verb+.SCANNER+ rule, which is like a normal rule, but it specifies how to compute dependencies, not the target itself. In this case, we want to define a \verb+.SCANNER+ rule of the following form. \begin{verbatim} .SCANNER: %.woof: %.cat \end{verbatim} This rule specifies that a \verb+.woof+ file may have additional dependencies that can be extracted from the corresponding \verb+.cat+ file by executing the \verb++. The \emph{result} of executing the \verb++ should be a sequence of dependencies in \OMake{} format, printed to the standard output. As we mentioned, each \verb+.cat+ file specifies dependencies on \verb+.woof+ files with an \verb+open+ directive. For example, if the \verb+neko.cat+ file contains a line \verb+open chat+, then \verb+neko.woof+ depends on \verb+chat.woof+. In this case, the \verb++ should print the following line. \begin{verbatim} neko.woof: chat.woof \end{verbatim} For an analogy that might make this clearer, consider the C programming language, where a \verb+.o+ file is produced by compiling a \verb+.c+ file. If a file \verb+foo.c+ contains a line like \verb+#include "fum.h"+, then \verb+foo.c+ should be recompiled whenever \verb+fum.h+ changes. That is, the file \verb+foo.o+ \emph{depends} on the file \verb+fum.h+. In the \OMake{} parlance, this is called an \emph{implicit} dependency, and the \verb+.SCANNER+ \verb++ would print a line like the following. \begin{verbatim} foo.o: fum.h \end{verbatim} \index{awk} Now, returning to the animal world, to compute the dependencies of \verb+neko.woof+, we should scan \verb+neko.cat+, line-by-line, looking for lines of the form \verb+open +. We could do this by writing a program, but it is easy enough to do it in \verb+omake+ itself. We can use the builtin \hyperfun{awk} to scan the source file. One slight complication is that the dependencies depend on the \verb+INCLUDE+ path. We'll use the \hyperfun{find-in-path} to find them. Here we go. \begin{verbatim} .SCANNER: %.woof: %.cat section # Scan the file deps[] = awk($<) case $'^open' deps[] += $2 export # Remove duplicates, and find the files in the include path deps = $(find-in-path $(INCLUDES), $(set $(deps))) # Print the dependencies println($"$@: $(deps)") \end{verbatim} Let's look at the parts. First, the entire body is defined in a \verb+section+ because we are computing it internally, not as a sequence of shell commands. We use the \verb+deps+ variable to collect all the dependencies. The \verb+awk+ function scans the source file (\verb+$<+) line-by-line. For lines that match the regular expression \verb+^open+ (meaning that the line begins with the word \verb+open+), we add the second word on the line to the \verb+deps+ variable. For example, if the input line is \verb+open chat+, then we would add the \verb+chat+ string to the \verb+deps+ array. All other lines in the source file are ignored. Next, the \verb+$(set $(deps))+ expression removes any duplicate values in the \verb+deps+ array (sorting the array alphabetically in the process). The \verb+find-in-path+ function then finds the actual location of each file in the include path. The final step is print the result as the string \verb+$"$@: $(deps)"+ The quotations are added to flatten the \verb+deps+ array to a simple string. \subsection{Pulling it all together} To complete the example, let's pull it all together into a single project, much like our previous example. \begin{verbatim} my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> neko.cat | `---> chat.cat `---> main/ |---> OMakefile `---> main.cat \end{verbatim} The listing for the entire project is as follows. Here, we also include a function \verb+CatLibrary+ to link several \verb+.woof+ files into a library. \begin{verbatim} my_project/OMakeroot: # Process the command-line vars DefineCommandVars() # Include the OMakefile in this directory. .SUBDIRS: . my_project/OMakefile: ######################################################################## # Standard config for compiling .cat files # # Define the catc command, in case we ever want to override it CATC = catc # The default flags are empty CAT_FLAGS = # The directories in the include path (empty by default) INCLUDES[] = # Compute the include options from the include path PREFIXED_INCLUDES[] = $`(mapprefix -I, $(INCLUDES)) # Dependency scanner for .cat files .SCANNER: %.woof: %.cat section # Scan the file deps[] = awk($<) case $'^open' deps[] += $2 export # Remove duplicates, and find the files in the include path deps = $(find-in-path $(INCLUDES), $(set $(deps))) # Print the dependencies println($"$@: $(deps)") # The default way to compile a .cat file %.woof: %.cat $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) -c $< # Optional link options CAT_LINK_FLAGS = # Build a library for several .woof files CatLibrary(lib, files) = # Add the suffixes file_names = $(addsuffix .woof, $(files)) lib_name = $(addsuffix .woof, $(lib)) # The build rule $(lib_name): $(file_names) $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -a $@ $+ # Return the program name value $(lib_name) # The function that defines how to build a .dog program CatProgram(program, files) = # Add the suffixes file_names = $(addsuffix .woof, $(files)) prog_name = $(addsuffix .dog, $(program)) # The build rule $(prog_name): $(file_names) $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -o $@ $+ # Return the program name value $(prog_name) ######################################################################## # Now the program proper # # Include the src subdirectory .SUBDIRS: src my_project/src/OMakefile: .SUBDIRS: lib main my_project/src/lib/OMakefile: CatLibrary(cats, neko chat) my_project/src/main/OMakefile: # Allow includes from the ../lib directory INCLUDES[] += ../lib # Build the program .DEFAULT: $(CatProgram main, main ../cats) \end{verbatim} Some notes. The configuration in the project \verb+OMakeroot+ defines the standard configuration, including the dependency scanner, the default rule for compiling source files, and functions for building libraries and programs. These rules and functions are inherited by subdirectories, so the \verb+.SCANNER+ and build rules are used automatically in each subdirectory, so you don't need to repeat them. \subsection{Finishing up} At this point we are done, but there are a few things we can consider. First, the rules for building cat programs is defined in the project \verb+OMakefile+. If you had another cat project somewhere, you would need to copy the \verb+OMakeroot+ (and modify it as needed). Instead of that, you should consider moving the configuration to a shared library directory, in a file like \verb+Cat.om+. That way, instead of copying the code, you could include the shared copy with an \OMake{} command \verb+open Cat+. The share directory should be added to your \verb+OMAKEPATH+ environment variable to ensure that \verb+omake+ knows how to find it. Better yet, if you are happy with your work, consider submitting it as a standard configuration (by sending a request to \verb+omake@metaprl.org+) so that others can make use of it too. \section{Collapsing the hierarchy, .SUBDIRS bodies} \index{.SUBDIRS bodies} Some projects have many subdirectories that all have the same configuration. For instance, suppose you have a project with many subdirectories, each containing a set of images that are to be composed into a web page. Apart from the specific images, the configuration of each file is the same. To make this more concrete, suppose the project has four subdirectories \verb+page1+, \verb+page2+, \verb+page3+, and \verb+page4+. Each contains two files \verb+image1.jpg+ and \verb+image2.jpg+ that are part of a web page generated by a program \verb+genhtml+. Instead of of defining a \verb+OMakefile+ in each directory, we can define it as a body to the \verb+.SUBDIRS+ command. \begin{verbatim} .SUBDIRS: page1 page2 page3 page4 index.html: image1.jpg image2jpg genhtml $+ > $@ \end{verbatim} The body of the \verb+.SUBDIRS+ is interpreted exactly as if it were the \verb+OMakefile+, and it can contain any of the normal statements. The body is evaluated \emph{in the subdirectory} for each of the subdirectories. We can see this if we add a statement that prints the current directory (\verb+$(CWD)+). \begin{verbatim} .SUBDIRS: page1 page2 page3 page4 println($(absname $(CWD))) index.html: image1.jpg image2jpg genhtml $+ > $@ # prints /home/jyh/.../page1 /home/jyh/.../page2 /home/jyh/.../page3 /home/jyh/.../page4 \end{verbatim} \subsection{Using glob patterns} Of course, this specification is quite rigid. In practice, it is likely that each subdirectory will have a different set of images, and all should be included in the web page. One of the easier solutions is to use one of the directory-listing functions, like \hyperfunn{glob} or \hyperfunn{ls}. The \verb+glob+ function takes a shell pattern, and returns an array of file with matching filenames in the current directory. \begin{verbatim} .SUBDIRS: page1 page2 page3 page4 IMAGES = $(glob *.jpg) index.html: $(IMAGES) genhtml $+ > $@ \end{verbatim} \subsection{Simplified sub-configurations} Another option is to add a configuration file in each of the subdirectories that defines directory-specific information. For this example, we might define a file \verb+BuildInfo.om+ in each of the subdirectories that defines a list of images in that directory. The \verb+.SUBDIRS+ line is similar, but we include the BuildInfo file. \begin{verbatim} .SUBDIRS: page1 page2 page3 page4 include BuildInfo # Defines the IMAGES variable index.html: $(IMAGES) genhtml $+ > $@ \end{verbatim} Where we might have the following configurations. \begin{verbatim} page1/BuildInfo.om: IMAGES[] = image.jpg page2/BuildInfo.om: IMAGES[] = ../common/header.jpg winlogo.jpg page3/BuildInfo.om: IMAGES[] = ../common/header.jpg unixlogo.jpg daemon.jpg page4/BuildInfo.om: IMAGES[] = fee.jpg fi.jpg foo.jpg fum.jpg \end{verbatim} \subsection{Computing the subdirectory list} The other hardcoded specification is the list of subdirectories \verb+page1+, ..., \verb+page4+. Rather than editing the project \verb+OMakefile+ each time a directory is added, we could compute it (again with \verb+glob+). \begin{verbatim} .SUBDIRS: $(glob page*) index.html: $(glob *.jpg) genhtml $+ > $@ \end{verbatim} Alternately, the directory structure may be hierarchical. Instead of using \verb+glob+, we could use the \verb+subdirs+ function, returns each of the directories in a hierarchy. For example, this is the result of evaluating the \verb+subdirs+ function in the omake project root. The \verb+P+ option, passed as the first argument, specifies that the listing is ``proper,'' it should not include the \verb+omake+ directory itself. \begin{verbatim} osh> subdirs(P, .) - : \end{verbatim} Using \verb+subdirs+, our example is now as follows. \begin{verbatim} .SUBDIRS: $(subdirs P, .) index.html: $(glob *.jpg) genhtml $+ > $@ \end{verbatim} In this case, \emph{every} subdirectory will be included in the project. If we are using the \verb+BuildInfo.om+ option. Instead of including every subdirectory, we could include only those that contain a \verb+BuildInfo.om+ file. For this purpose, we can use the \verb+find+ function, which traverses the directory hierarchy looking for files that match a test expression. In our case, we want to search for files with the name \verb+BuildInfo.om+. Here is an example call. \begin{verbatim} osh> FILES = $(find . -name BuildInfo.om) - : osh> DIRS = $(dirof $(FILES)) - : \end{verbatim} In this example, there are three \verb+BuildInfo.om+ files, in the \verb+doc/html+, \verb+src+, and \verb+tests/simple+ directories. The \verb+dirof+ function returns the directories for each of the files. Returning to our original example, we modify it as follows. \begin{verbatim} .SUBDIRS: $(dirof $(find . -name BuildInfo.om)) include BuildInfo # Defines the IMAGES variable index.html: $(IMAGES) genhtml $+ > $@ \end{verbatim} \subsection{Temporary directories} Sometimes, your project may include temporary directories--directories where you place intermediate results. these directories are deleted whenever the project is cleanup up. This means, in particular, that you can't place an \verb+OMakefile+ in a temporary directory, because it will be removed when the directory is removed. Instead, if you need to define a configuration for any of these directories, you will need to define it using a \verb+.SUBDIRS+ body. \begin{verbatim} section CREATE_SUBDIRS = true .SUBDIRS: tmp # Compute an MD5 digest %.digest: %.comments echo $(digest $<) > $@ # Extract comments from the source files %.comments: ../src/%.src grep '^#' $< > $@ .DEFAULT: foo.digest .PHONY: clean clean: rm -rf tmp \end{verbatim} In this example, we define the \verb+CREATE_SUBDIRS+ variable as true, so that the \verb+tmp+ directory will be created if it does not exist. The \verb+.SUBDIRS+ body in this example is a bit contrived, but it illustrates the kind of specification you might expect. The \verb+clean+ phony-target indicates that the \verb+tmp+ directory should be removed when the project is cleaned up. % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/omake-index.tex0000664000152300015230000000522410631140317015411 0ustar jyhjyh%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Short description % \chapter{Guide} \label{chapter:omake} \label{section:guide} \cutname{omake.html} If you are new to \OMake{}, you the \href{omake-quickstart.html}{omake-quickstart} presents a short introduction that describes how to set up a project. The \href{omake-build-examples.html}{omake-build-examples} gives larger examples of build projects, and \href{omake-language-examples.html}{omake-language-examples} presents programming examples. \begin{description} \item[Quickstart~\ref{chapter:quickstart}] % A quickstart guide to using \Prog{omake}. \item[Build examples~\ref{chapter:build-examples}] % Advanced build examples. \item[The \OMake{} language~\ref{chapter:language}] % The \Prog{omake} language, including a description of objects, expressions, and values. \item[Variables and naming~\ref{chapter:naming}] % Variables, names, and environments. \item[Language discussion~\ref{chapter:extra}] % Further discussion on the language, including scoping, evaluation, and objects. \item[Language examples~\ref{chapter:language-examples}] % Additional language examples. \item[Build rules~\ref{chapter:rules}] % Defining and using rules to build programs. \item[Base builtin functions~\ref{chapter:base}] % Functions and variables in the core standard library. \item[System functions~\ref{chapter:system}] % Functions on files, input/output, and system commands. \item[Shell commands~\ref{chapter:shell}] % Using the \Prog{omake} shell for command-line interpretation. \item[The standard objects~\ref{chapter:pervasives}] % Pervasives defines the built-in objects. \item[Standard build definitions~\ref{chapter:build}] % The build specifications for programming languages in the \OMake{} standard library. \item[Standard autoconfiguration functions and variables~\ref{chapter:autoconf}] % The utilities provoded by the \OMake{} standard library to simplify programming of autoconfiguration tests. \item[The interactive command interpreter~\ref{chapter:osh}] % The \Prog{osh} command-line interpreter. \item[\textbf{Appendices}] \begin{description} \item[\OMake{} command-line options~\ref{chapter:options}] % Command-line options for \Prog{omake}. % \item[The \OMake{} language grammar~\ref{chapter:grammar}] % A more precise specification of the \OMake{} language. \end{description} \item[\href{omake-doc.html}{All the documentation on a single page}] % All the \OMake{} documentation in a single page. \end{description} % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/omake-shell.tex0000664000152300015230000001173210564662701015425 0ustar jyhjyh%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Shell commands % \chapter{Shell commands} \label{chapter:shell} \cutname{omake-shell.html} Shell commands (commands to be executed by the operating system) can be freely mixed with other code. \textbf{NOTE}: the syntax and shell usage is identical on all platforms, including Win32. To avoid portability problems on Win32, it is recommended that you avoid the use of the native shell interpreter \verb+cmd+. \begin{verbatim} LIB = $(dir lib) println(The contents of the $(LIB) directory is:) ls $(LIB) \end{verbatim} \section{Simple commands} The syntax of shell commands is similar to the syntax used by the Unix shell \verb+bash+. In general, a command is a \emph{pipeline}. A basic command is part of a pipeline. It is specified with the name of an executable and some arguments. Here are some examples. \begin{verbatim} ls ls -AF . echo Hello world \end{verbatim} The command is found using the current search path in the variable \verb+PATH[]+, which should define an array of directories containing executables. A command may also be prefixed by environment variable definitions. \begin{verbatim} # Prints "Hello world" env X="Hello world" Y=2 printenv X # Pass the include path to the Visual C++ env include="c:\Program Files\Microsoft SDK\include" cl foo.cpp \end{verbatim} \section{Globbing} Commands may contain wildcard patterns. A pattern specifies a set of files through a limited kind of regular expression. Patterns are expanded before the function is executed. \begin{verbatim} # List all files with a .c suffix ls *.c # List all files with a single character prefix, and .c suffix ls ?.c # Rename the file hello.ml to foo.ml mv {hello,foo}.ml \end{verbatim} A comprehensive description of \OMake{} glob patterns is given in Section~\ref{section:globbing}. \section{Background jobs} The command may also be placed in the background by placing an ampersand after the command. Control returns to the shell without waiting for the job to complete. The job continues to run in the background. \begin{verbatim} gcc -o hugeprogram *.c & \end{verbatim} \section{File redirection} Input and output can be redirected to files by using the \verb+<+, \verb+>+, and \verb+>&+ directives after the command. \begin{verbatim} # Write to the "foo" file echo Hello world > foo # Redirect input from the foo file cat < foo # Redirect standard output and errors to the foo file gcc -o boo *.c >& foo \end{verbatim} \section{Pipelines} Pipelines are sequences of commands, where the output from each command is sent to the next. Pipelines are defined with the \verb+|+ and \verb+|&+ syntax. With \verb+|+ the output is redirected, but errors are not. With \verb+|&+ both output and errors are redirected. \begin{verbatim} # Send the output of the ls command to the printer ls *.c | lpr # Send output and errors to jyh as email gcc -o hugefile *.c |& mail jyh \end{verbatim} \section{Conditional execution} Commands may also be composed though conditional evaluation using the \verb+||+ and \verb+&&+ syntax. Every command has an integer exit code, which may be zero or some other integer. A command is said to \emph{succeed} if its exit code is zero. The expression \verb+command1 && command2+ executes \verb+command2+ only if \verb+command1+ succeeds. The expression \verb+command1 || command2+ executes \verb+command2+ only if \verb+command1+ fails. \begin{verbatim} # Display the x/y file if possible cd x && cat y # Run foo.exe, or print an error message (test -x foo.exe && foo.exe) || echo "foo.exe is not executable" \end{verbatim} \section{Grouping} Parenthesis are used for grouping in a pipeline or conditional command. In the following expression, the \verb+test+ function is used to test whether the \verb+foo.exe+ file is executable. If it is, the \verb+foo.exe+ file is executed. If the file is not executable (or if the \verb+foo.exe+ command fails), the message \verb+"foo.exe is not executable"+ is printed. \begin{verbatim} # Run foo.exe, or print an error message (test -x foo.exe && foo.exe) || echo "foo.exe is not executable" \end{verbatim} \section{What is a shell command?} Syntactially, shell commands are any line that is not one of the following: \begin{itemize} \item A variable definition of the form \verb+VAR=string+ \item A function call \verb+f(...)+ or method call \verb+o.f(...)+ \item A rule definition containing a colon \verb+string: ...+ \item A special command, including the following: \begin{itemize} \item \verb+if ...+ \item \verb+switch ...+ \item \verb+match ...+ \item \verb+section ...+ \item \verb+return ...+ \end{itemize} \end{itemize} Commands may also be builtin (aliases). See the documentation for the \hyperobj{Shell} for more information. % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/omake-doc.tex0000664000152300015230000001542110655737107015066 0ustar jyhjyh\batchmode \documentclass[dvipdfm]{book} \usepackage{hevea} \usepackage{code} \usepackage{xspace} %\usepackage[latin1]{inputenc} \usepackage[english]{babel} \usepackage{url} \usepackage{index} \usepackage{hyperref} \addtocounter{tocdepth}{1} \addtocounter{secnumdepth}{1} \newcommand{\OMake}{OMake\xspace} \newcommand{\authors}{Jason Hickey, Aleksey Nogin, \emph{et. al.}} \title{The \OMake{} user guide and reference manual} \author{\authors} % % Backwards-compatibility with the LaTeX2Man package % \newcommand{\Prog}[1]{\texttt{#1}} \newcommand{\File}[1]{\texttt{#1}} \newcommand{\Cmd}[2]{\texttt{#1}(#2)} \newcommand{\Arg}[1]{\texttt{#1}} \newcommand{\Opt}[1]{\texttt{#1}} \newcommand{\OptArg}[2]{\texttt{#1 <#2>}} \newcommand{\oOpt}[1]{[\texttt{#1}]} \newcommand{\oArg}[1]{\texttt{#1}} \newcommand{\oOptArg}[2]{[\texttt{#1 <#2>}]} \newcommand\Version{0.9.8.5} \newcommand\Date{\today} \date{\Date} % % Versions % \newcommand\newinreorg{\textit{This feature was introduced in version 0.9.8.5.}} \newcommand\newinkeyword{\textit{This feature will be introduced in version 0.9.9.0.}} % % Identifiers. % \newcommand\idsection[1]{\subsection{#1}} \newcommand\varlabel[2]{\paragraph{#2}\hypertarget{var:#1}{}\index{#2}\index[var]{#2}} \newcommand\var[1]{\varlabel{#1}{#1}} \newcommand\funref[1]{\hypertarget{fun:#1}{}\label{function:#1}\index{#1}\index[fun]{#1}} \newcommand\fun[1]{\idsection{#1}\funref{#1}} \newcommand\funlabel[2]{\idsection{#2}\hypertarget{fun:#1}{}\index{#2}\index[fun]{#2}} \newcommand\twofuns[2]{\idsection{{#1}, {#2}}\funref{#1}\funref{#2}} \newcommand\twofunslabel[4]{\idsection{{#2}, {#4}}\hypertarget{fun:#1}{}\index{#2}\index[fun]{#2}\hypertarget{fun:#3}{}\index{#4}\index[fun]{#4}} \newcommand\threefuns[3]{\idsection{{#1}, {#2}, {#3}}\funref{#1}\funref{#2}\funref{#3}} \newcommand\threefunslabel[6]{\idsection{{#2}, {#4}, {#6}}\hypertarget{fun:#1}{}\index{#2}\index[fun]{#2}\hypertarget{fun:#3}{}\index{#4}\index[fun]{#4}\hypertarget{fun:#5}{}\index{#6}\index[fun]{#6}} \newcommand\sixfuns[6]{\idsection{{#1}, {#2}, {#3}, {#4}, {#5}, {#6}}\funref{#1}\funref{#2}\funref{#3}\funref{#4}\funref{#5}\funref{#6}} \newcommand\formref[1]{\funref{#1}} \newcommand\form[1]{\idsection{#1}\funref{#1}} \newcommand\objref[1]{\hypertarget{obj:#1}{}\label{object:#1}\index{#1}\index[obj]{#1}} \newcommand\obj[1]{\idsection{#1}\objref{#1}} \newcommand\targetlabelref[2]{\index{#2}\index[target]{#2}\label{target:#1}} \newcommand\targetref[1]{\index{#1}\index[target]{#1}\label{target:#1}} \newcommand\target[1]{\idsection{#1}\targetref{#1}} \newcommand\optionref[1]{\index{#1}\index[opt]{#1}\label{option:#1}} \newcommand\option[1]{\idsection{\texttt{#1}}\optionref{#1}} \newstyle{.verbatim}{margin-left:3ex; background:\#ddeeff;} \newstyle{CODE}{padding-left:0.2ex; padding-right:0.2ex; background:\#eef7ff;} \newcommand\hyperfun[1]{\hyperlink{fun:#1}{\code{#1} function}} \newcommand\hyperfunn[1]{\hyperlink{fun:#1}{\code{#1}}} \newcommand\hyperfunx[2]{\hyperlink{fun:#1}{\code{#2} function}} \newcommand\hyperfunxn[2]{\hyperlink{fun:#1}{\code{#2}}} \newcommand\hypervar[1]{\hyperlink{var:#1}{\code{#1} variable}} \newcommand\hypervarn[1]{\hyperlink{var:#1}{\code{#1}}} \newcommand\hypervarx[2]{\hyperlink{var:#1}{\code{#2} variable}} \newcommand\hypervarxn[2]{\hyperlink{var:#1}{\code{#2}}} \newcommand\hyperobj[1]{\hyperlink{obj:#1}{\code{#1} object}} \newcommand\hypertargn[1]{\hyperlink{target:#1}{\code{#1}}} \newindex{default}{idx}{ind}{Index} \newindex{var}{vidx}{vind}{Index of variables} \newindex{fun}{fids}{find}{Index of functions and special forms} \newindex{obj}{oids}{oind}{Index of objects} \newindex{opt}{opts}{optind}{Index of options} \newindex{target}{tids}{tind}{Index of special targets} \newcommand{\itemidx}[1]{\item{\code{#1}}\index{#1}} \newcommand\bul{\begin{rawhtml}• \end{rawhtml}} \newcommand\heading{% \begin{htmlonly} \begin{tabular}{@{}l@{~~}l@{}} Jump to:&\ahref{http://omake.metaprl.org/}{\OMake{} Home} \bul\ahref{omake.html}{Guide Home} \bul\ahref{omake-doc.html}{Guide (single-page)} \bul\ahref{omake-toc.html}{Contents (short)} \bul\ahref{omake-contents.html}{Contents (long)}\\ Index:&\ahref{omake-all-index.html}{All} \bul\ahref{omake-var-index.html}{Variables} \bul\ahref{omake-fun-index.html}{Functions} \bul\ahref{omake-obj-index.html}{Objects} \bul\ahref{omake-target-index.html}{Targets} \bul\ahref{omake-option-index.html}{Options} \end{tabular} \end{htmlonly}% } \htmlhead{% \begin{rawhtml}
\end{rawhtml} \heading} \htmlfoot{\heading} \begin{document} \htmlprefix{\OMake{} manual: } \maketitle \begin{htmlonly} \ahref{omake-doc.html}{All the documentation on a single page} \textbf{\OMake{} table of contents} \end{htmlonly} \tableofcontents \label{chapter:contents} \cutname{omake-contents.html} \input{omake-index} \input{omake-examples} \input{omake-build-examples} \input{omake-language} \input{omake-language-naming} \input{omake-detail} \input{omake-language-examples} \input{omake-rules} \input{../tex/omake-base} \input{../tex/omake-system} \input{../tex/omake-pervasives} {\renewcommand\idsection[1]{\subsubsection{#1}}\input{../tex/omake-root}} \input{../tex/omake-autoconf} \input{osh} \appendix \input{omake-options} \input{omake-grammar} \printindex[default] \cutname{omake-all-index.html} \printindex[var] \cutname{omake-var-index.html} \printindex[fun] \cutname{omake-fun-index.html} \printindex[obj] \cutname{omake-obj-index.html} \printindex[target] \cutname{omake-target-index.html} \printindex[opt] \cutname{omake-option-index.html} \chapter{References} \label{chapter:references} \cutname{omake-references.html} \section{See Also} omake(1) (Chapter~\ref{chapter:omake}), osh(1) (Chapter~\ref{chapter:osh}), make(1) \section{Version} Version: \Version\ of \Date. \section{License and Copyright} \copyright\ 2003-2006, Mojave Group, Caltech This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. \section{Author} \noindent \authors \\ Caltech 256-80 \\ Pasadena, CA 91125, USA \\ Email: \texttt{omake-devel@metaprl.org} \\ WWW: \url{http://www.cs.caltech.edu/~jyh} and \url{http://nogin.org/} \end{document} %% \IfFileExists{rcsinfo.sty}{ %% \setDate{\rcsInfoLongDate} %% }{ %% \setDate{April 11, 2006} %%%% must be manually set, if rcsinfo is not present %% } omake-0.9.8.5/doc/src/omake-detail.tex0000664000152300015230000003620410632105755015556 0ustar jyhjyh% % Extra detail. % \chapter{Expressions and values} \label{chapter:extra} \cutname{omake-detail.html} \Prog{omake} provides a full programming-language including many system and IO functions. The language is object-oriented -- everything is an object, including the base values like numbers and strings. However, the \Prog{omake} language differs from other scripting languages in three main respects. \begin{itemize} \item Scoping is dynamic. \item Apart from IO, the language is entirely functional -- there is no assignment operator in the language. \item Evaluation is normally eager -- that is, expressions are evaluated as soon as they are encountered. \end{itemize} To illustrate these features, we will use the \Cmd{osh}{1} omake program shell. The \Cmd{osh}{1} program provides a toploop, where expressions can be entered and the result printed. \Cmd{osh}{1} normally interprets input as command text to be executed by the shell, so in many cases we will use the \verb+value+ form to evaluate an expression directly. \begin{verbatim} osh> 1 *** omake error: File -: line 1, characters 0-1 command not found: 1 osh> value 1 - : "1" : Sequence osh> ls -l omake -rwxrwxr-x 1 jyh jyh 1662189 Aug 25 10:24 omake* \end{verbatim} \section{Dynamic scoping} Dynamic scoping means that the value of a variable is determined by the most recent binding of the variable in scope at runtime. Consider the following program. \begin{verbatim} OPTIONS = a b c f() = println(OPTIONS = $(OPTIONS)) g() = OPTIONS = d e f f() \end{verbatim} If \verb+f()+ is called without redefining the \verb+OPTIONS+ variable, the function should print the string \verb+OPTIONS = a b c+. In contrast, the function \verb+g()+ redefines the \verb+OPTIONS+ variable and evaluates \verb+f()+ in that scope, which now prints the string \verb+OPTIONS = d e f+. The body of \verb+g+ defines a local scope -- the redefinition of the \verb+OPTIONS+ variable is local to \verb+g+ and does not persist after the function terminates. \begin{verbatim} osh> g() OPTIONS = d e f osh> f() OPTIONS = a b c \end{verbatim} Dynamic scoping can be tremendously helpful for simplifying the code in a project. For example, the \File{OMakeroot} file defines a set of functions and rules for building projects using such variables as \verb+CC+, \verb+CFLAGS+, etc. However, different parts of a project may need different values for these variables. For example, we may have a subdirectory called \verb+opt+ where we want to use the \verb+-03+ option, and a subdirectory called \verb+debug+ where we want to use the \verb+-g+ option. Dynamic scoping allows us to redefine these variables in the parts of the project without having to redefine the functions that use them. \begin{verbatim} section CFLAGS = -O3 .SUBDIRS: opt section CFLAGS = -g .SUBDIRS: debug \end{verbatim} However, dynamic scoping also has drawbacks. First, it can become confusing: you might have a variable that is intended to be private, but it is accidentally redefined elsewhere. For example, you might have the following code to construct search paths. \begin{verbatim} PATHSEP = : make-path(dirs) = return $(concat $(PATHSEP), $(dirs)) make-path(/bin /usr/bin /usr/X11R6/bin) - : "/bin:/usr/bin:/usr/X11R6/bin" : String \end{verbatim} However, elsewhere in the project, the \verb+PATHSEP+ variable is redefined as a directory separator \verb+/+, and your function suddenly returns the string \verb+/bin//usr/bin//usr/X11R6/bin+, obviously not what you want. The \verb+private+ block is used to solve this problem. Variables that are defined in a \verb+private+ block use static scoping -- that is, the value of the variable is determined by the most recent definition in scope in the source text. \begin{verbatim} private PATHSEP = : make-path(dirs) = return $(concat $(PATHSEP), $(dirs)) PATHSEP = / make-path(/bin /usr/bin /usr/X11R6/bin) - : "/bin:/usr/bin:/usr/X11R6/bin" : String \end{verbatim} \section{Functional evaluation} Apart from I/O, \Prog{omake} programs are entirely functional. This has two parts: \begin{itemize} \item There is no assignment operator. \item Functions are values, and may be passed as arguments, and returned from functions just like any other value. \end{itemize} The second item is straightforward. For example, the following program defines an increment function by returning a function value. \begin{verbatim} incby(n) = g(i) = return $(add $(i), $(n)) return $(g) f = $(incby 5) value $(f 3) - : 8 : Int \end{verbatim} The first item may be the most confusing initially. Without assignment, how is it possible for a subproject to modify the global behavior of the project? In fact, the omission is intentional. Build scripts are much easier to write when there is a guarantee that subprojects do not interfere with one another. However, there are times when a subproject needs to propagate information back to its parent object, or when an inner scope needs to propagate information back to the outer scope. \section{Exporting the environment} \label{section:export}\index{export} The \verb+export+ directive can be used to propagate all or part of an inner scope back to its parent. If used without arguments, the entire scope is propagated back to the parent; otherwise the arguments specify which part of the environment to propagate. The most common usage is to export some or all of the definitions in a conditional block. In the following example, the variable \verb+B+ is bound to 2 after the conditional. The \verb+A+ variable is not redefined. \begin{verbatim} if $(test) A = 1 B = $(add $(A), 1) export B else B = 2 export \end{verbatim} If the \verb+export+ directive is used without an argument, all of the following is exported: \begin{itemize} \item The values of all the dynamically scoped variables (as described in Section~\ref{section:public}). \item The current working directory. \item The current Unix environment. \item The current implicit rules and implicit dependencies (see also Section~\ref{section:implicit-scoping}). \item The current set of ``phony'' target declarations (see Sections~\ref{target:.PHONY} and~\ref{section:PHONY-scoping}). \end{itemize} If the \verb+export+ directive is used with an argument, the argument expression is evaluated and the resulting value is interpreted as follows: \begin{itemize} \item If the value is empty, everything is exported, as described above. \item If the value represents a environment (or a partial environment) captured using the \hyperfun{export}, then the corresponding environment or partial environment is exported. \item Otherwise, the value must be a sequence of strings specifying which items are to be propagated back. The following strings have special meaning: \begin{itemize} \item \index{.RULE}\verb+.RULE+ --- implicit rules and implicit dependencies. \item \index{.PHONY}\verb+.PHONY+ --- the set of ``phony'' target declarations. \end{itemize} All other strings are interpreted as names of the variables that need to be propagated back. \end{itemize} For example, in the following (somewhat artificial) example, the variables \verb+A+ and \verb+B+ will be exported, and the implicit rule will remain in the environment after the section ends, but the variable \verb+TMP+ and the target \verb+tmp_phony+ will remain unchanged. \begin{verbatim} section A = 1 B = 2 TMP = $(add $(A), $(B)) .PHONY: tmp_phony tmp_phony: prepare_foo %.foo: %.bar tmp_phony compute_foo $(TMP) $< $@ export A B .RULE \end{verbatim} \subsection{Export regions} \newinreorg The \verb+export+ directive does not need to occur at the end of a block. An export is valid from the point where it is specified to the end of the block in which it is contained. In other words, the export is used in the program that follows it. This can be especially useful for reducing the amount of code you have to write. In the following example, the variable \verb+CFLAGS+ is exported from the both branches of the conditional. \begin{verbatim} export CFLAGS if $(equal $(OSTYPE), Win32) CFLAGS += /DWIN32 else CFLAGS += -UWIN32 \end{verbatim} \subsection{Returning values from exported regions} \newinreorg The use of export does not affect the value returned by a block. The value is computed as usual, as the value of the last statement in the block, ignoring the export. For example, suppose we wish to implement a table that maps strings to unique integers. Consider the following program. \begin{verbatim} # Empty map table = $(Map) # Add an entry to the table intern(s) = export if $(table.mem $s) table.find($s) else private.i = $(table.length) table = $(table.add $s, $i) value $i intern(foo) intern(boo) intern(moo) # Prints "boo = 1" println($"boo = $(intern boo)") \end{verbatim} % Given a string \verb+s+, the function \verb+intern+ returns either the value already associated with \verb+s+, or assigns a new value. In the latter case, the table is updated with the new value. The \verb+export+ at the beginning of the function means that the variable \verb+table+ is to be exported. The bindings for \verb+s+ and \verb+i+ are not exported, because they are private. \label{section:eager} Evaluation in \Prog{omake} is eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined. \begin{verbatim} osh> A = 1 - : "1" osh> A = $(A)$(A) - : "11" \end{verbatim} In the second definition, \verb+A = $(A)$(A)+, the right-hand-side is evaluated first, producing the sequence \verb+11+. Then the variable \verb+A+ is \emph{redefined} as the new value. When combined with dynamic scoping, this has many of the same properties as conventional imperative programming. \begin{verbatim} osh> A = 1 - : "1" osh> printA() = println($"A = $A") osh> A = $(A)$(A) - : "11" osh> printA() 11 \end{verbatim} In this example, the print function is defined in the scope of \verb+A+. When it is called on the last line, the dynamic value of \verb+A+ is \verb+11+, which is what is printed. However, dynamic scoping and imperative programming should not be confused. The following example illustrates a difference. The second \verb+printA+ is not in the scope of the definition \verb+A = x$(A)$(A)x+, so it prints the original value, \verb+1+. \begin{verbatim} osh> A = 1 - : "1" osh> printA() = println($"A = $A") osh> section A = x$(A)$(A)x printA() x11x osh> printA() 1 \end{verbatim} See also Section~\ref{section:lazy} for further ways to control the evaluation order through the use of ``lazy'' expressions. \section{Objects} \Prog{omake} is an object-oriented language. Everything is an object, including base values like numbers and strings. In many projects, this may not be so apparent because most evaluation occurs in the default toplevel object, the \verb+Pervasives+ object, and few other objects are ever defined. However, objects provide additional means for data structuring, and in some cases judicious use of objects may simplify your project. Objects are defined with the following syntax. This defines \verb+name+ to be an object with several methods an values. \begin{verbatim} name. = # += may be used as well extends parent-object # optional class class-name # optional # Fields X = value Y = value # Methods f(args) = body g(arg) = body \end{verbatim} An \verb+extends+ directive specifies that this object inherits from the specified \verb+parent-object+. The object may have any number of \verb+extends+ directives. If there is more than on \verb+extends+ directive, then fields and methods are inherited from all parent objects. If there are name conflicts, the later definitions override the earlier definitions. The \verb+class+ directive is optional. If specified, it defines a name for the object that can be used in \verb+instanceof+ operations, as well as \verb+::+ scoping directives discussed below. The body of the object is actually an arbitrary program. The variables defined in the body of the object become its fields, and the functions defined in the body become its methods. \section{Field and method calls} The fields and methods of an object are named using \verb+object.name+ notation. For example, let's define a one-dimensional point value. \begin{verbatim} Point. = class Point # Default value x = $(int 0) # Create a new point new(x) = x = $(int $(x)) return $(this) # Move by one move() = x = $(add $(x), 1) return $(this) osh> p1 = $(Point.new 15) osh> value $(p1.x) - : 15 : Int osh> p2 = $(p1.move) osh> value $(p2.x) - : 16 : Int \end{verbatim} The \verb+$(this)+ variable always represents the current object. The expression \verb+$(p1.x)+ fetches the value of the \verb+x+ field in the \verb+p1+ object. The expression \verb+$(Point.new 15)+ represents a method call to the \verb+new+ method of the \verb+Point+ object, which returns a new object with 15 as its initial value. The expression \verb+$(p1.move)+ is also a method call, which returns a new object at position 16. Note that objects are functional --- it is not possible to modify the fields or methods of an existing object in place. Thus, the \verb+new+ and \verb+move+ methods return new objects. \section{Method override} Suppose we wish to create a new object that moves by 2 units, instead of just 1. We can do it by overriding the \verb+move+ method. \begin{verbatim} Point2. = extends $(Point) # Override the move method move() = x = $(add $(x), 2) return $(this) osh> p2 = $(Point2.new 15) osh> p3 = $(p2.move) osh> value $(p3.x) - : 17 : Int \end{verbatim} However, by doing this, we have completely replaced the old \verb+move+ method. \section{Super calls} Suppose we wish to define a new \verb+move+ method that just calls the old one twice. We can refer to the old definition of move using a super call, which uses the notation \verb+$(classname::name )+. The \verb+classname+ should be the name of the superclass, and \verb+name+ the field or method to be referenced. An alternative way of defining the \verb+Point2+ object is then as follows. \begin{verbatim} Point2. = extends $(Point) # Call the old method twice move() = this = $(Point::move) return $(Point::move) \end{verbatim} Note that the first call to \verb+$(Point::move)+ redefines the current object (the \verb+this+ variable). This is because the method returns a new object, which is re-used for the second call. % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- % vim:tw=100:fo=tcq: omake-0.9.8.5/doc/src/code.sty0000664000152300015230000000004510565125736014153 0ustar jyhjyh\newcommand{\code}[1]{\texttt{{#1}}} omake-0.9.8.5/doc/src/omake-language-examples.tex0000664000152300015230000004242410634546046017720 0ustar jyhjyh% % Some examples. % \chapter{Additional language examples} \label{chapter:language-examples} \cutname{omake-language-examples.html} In this section, we'll explore the core language through a series of examples (examples of the build system are the topic of the Chapter~\ref{chapter:build-examples}). For most of these examples, we'll use the \verb+osh+ command interpreter. For simplicity, the values printed by \verb+osh+ have been abbreviated. \section{Strings and arrays} The basic \OMake{} values are strings, sequences, and arrays of values. Sequences are like arrays of values separated by whitespace; the sequences are split on demand by functions that expect arrays. \begin{verbatim} osh> X = 1 2 - : "1 2" : Sequence osh> addsuffix(.c, $X) - : : Array \end{verbatim} Sometimes you want to define an array explicitly. For this, use the \verb+[]+ brackets after the variable name, and list each array entry on a single indented line. \begin{verbatim} osh> A[] = Hello world $(getenv HOME) - : : Array \end{verbatim} One central property of arrays is that whitespace in the elements is significant. This can be useful, especially for filenames that contain whitespace. \begin{verbatim} # List the current files in the directory osh> ls -Q "fee" "fi" "foo" "fum" osh> NAME[] = Hello world - : : Array osh> touch $(NAME) osh> ls -Q "fee" "fi" "foo" "fum" "Hello world" \end{verbatim} \section{Quoted strings} \label{section:quoted-strings} \index{quoted strings} A \verb+String+ is a single value; whitespace is significant in a string. Strings are introduced with quotes. There are four kinds of quoted elements; the kind is determined by the opening quote. The symbols \verb+'+ (single-quote) and \verb+"+ (double-quote) introduce the normal shell-style quoted elements. The quotation symbols are \emph{included} in the result string. Variables are always expanded within a quote of this kind. Note that the \Cmd{osh}{1} (Chapter~\ref{chapter:osh}) printer escapes double-quotes within the string; these are only for printing, they are not part of the string itself. \begin{verbatim} osh> A = 'Hello "world"' - : "'Hello \"world\"'" : String osh> B = "$(A)" - : "\"'Hello \"world\"'\"" : String osh> C = 'Hello \'world\'' - : "'Hello 'world''" : String \end{verbatim} A second kind of quote is introduced with the \verb+$'+ and \verb+$"+ quotes. The number of opening and closing quote symbols is arbitrary. These quotations have several properties: \begin{itemize} \item The quote delimiters are not part of the string. \item Backslash \verb+\+ symbols within the string are treated as normal characters. \item The strings may span several lines. \item Variables are expanded within \verb+$"+ sequences, but not within \verb+$'+ sequences. \end{itemize} \begin{verbatim} osh> A = $'''Here $(IS) an '''' \(example\) string[''' - : "Here $(IS) an '''' \\(example\\) string[" : String osh> B = $""""A is "$(A)" """" - : "A is \"Here $(IS) an '''' \\(example\\) string[\" " : String osh> value $(A.length) - : 38 : Int osh> value $(A.nth 5) - : "$" : String osh> value $(A.rev) - : "[gnirts )\\elpmaxe(\\ '''' na )SI($ ereH" : String \end{verbatim} Strings and sequences both have the property that they can be merged with adjacent non-whitespace text. \begin{verbatim} osh> A = a b c - : "a b c" : Sequence osh> B = $(A).c - : : Sequence osh> value $(nth 2, $(B)) - : "c.c" : String osh> value $(length $(B)) - : 3 : Int \end{verbatim} Arrays are different. The elements of an array are never merged with adjacent text of any kind. Arrays are defined by adding square brackets \verb+[]+ after a variable name and defining the elements with an indented body. The elements may include whitespace. \begin{verbatim} osh> A[] = a b foo bar - : : Array osh> echo $(A).c a b foo bar .c osh> value $(A.length) - : 2 : Int osh> value $(A.nth 1) - : "foo bar" : Sequence \end{verbatim} Arrays are quite helpful on systems where filenames often contain whitespace. \begin{verbatim} osh> FILES[] = c:\Documents and Settings\jyh\one file c:\Program Files\omake\second file osh> CFILES = $(addsuffix .c, $(FILES)) osh> echo $(CFILES) c:\Documents and Settings\jyh\one file.c c:\Program Files\omake\second file.c \end{verbatim} \section{Files and directories} \OMake{} projects usually span multiple directories, and different parts of the project execute commands in different directories. There is a need to define a location-independent name for a file or directory. This is done with the \verb+$(file )+ and \verb+$(dir )+ functions. \begin{verbatim} osh> mkdir tmp osh> F = $(file fee) osh> section: cd tmp echo $F ../fee osh> echo $F fee \end{verbatim} Note the use of a \verb+section:+ to limit the scope of the \verb+cd+ command. The section temporarily changes to the \verb+tmp+ directory where the name of the file is \verb+../fee+. Once the section completes, we are still in the current directory, where the name of the file is \verb+fee+. One common way to use the file functions is to define proper file names in your project \verb+OMakefile+, so that references within the various parts of the project will refer to the same file. \begin{verbatim} osh> cat OMakefile ROOT = $(dir .) TMP = $(dir tmp) BIN = $(dir bin) ... \end{verbatim} \section{Iteration, mapping, and foreach} Most builtin functions operate transparently on arrays. \begin{verbatim} osh> addprefix(-D, DEBUG WIN32) - : -DDEBUG -DWIN32 : Array osh> mapprefix(-I, /etc /tmp) - : -I /etc -I /tmp : Array osh> uppercase(fee fi foo fum) - : FEE FI FOO FUM : Array \end{verbatim} The \verb+mapprefix+ and \verb+addprefix+ functions are slightly different (the \verb+addsuffix+ and \verb+mapsuffix+ functions are similar). The \verb+addprefix+ adds the prefex to each array element. The \verb+mapprefix+ doubles the length of the array, adding the prefix as a new array element before each of the original elements. Even though most functions work on arrays, there are times when you will want to do it yourself. The \verb+foreach+ function is the way to go. The \verb+foreach+ function has two forms, but the form with a body is most useful. In this form, the function takes two arguments and a body. The second argument is an array, and the first is a variable. The body is evaluated once for each element of the array, where the variable is bound to the element. Let's define a function to add 1 to each element of an array of numbers. \begin{verbatim} osh> add1(l) = foreach(i, $l): add($i, 1) osh> add1(7 21 75) - : 8 22 76 : Array \end{verbatim} Sometimes you have an array of filenames, and you want to define a rule for each of them. Rules are not special, you can define them anywhere a statement is expected. Say we want to write a function that describes how to process each file, placing the result in the \verb+tmp/+ directory. \begin{verbatim} TMP = $(dir tmp) my-special-rule(files) = foreach(name, $(files)) $(TMP)/$(name): $(name) process $< > $@ \end{verbatim} Later, in some other part of the project, we may decide that we want to use this function to process some files. \begin{verbatim} # These are the files to process in src/lib MY_SPECIAL_FILES[] = fee.src fi.src file with spaces in its name.src my-special-rule($(MY_SPECIAL_FILES)) \end{verbatim} The result of calling \verb+my-special-rule+ is exactly the same as if we had written the following three rules explicitly. \begin{verbatim} $(TMP)/fee.src: fee.src process fee > $@ $(TMP)/fi.src: fi.src process fi.src > $@ $(TMP)/$"file with spaces in its name.src": $"file with spaces in its name.src" process $< > $@ \end{verbatim} Of course, writing these rules is not nearly as pleasant as calling the function. The usual properties of function abstraction give us the usual benefits. The code is less redundant, and there is a single location (the \verb+my-special-rule+ function) that defines the build rule. Later, if we want to modify/update the rule, we need do so in only one location. \section{Lazy expressions} \label{section:lazy} Evaluation in \Prog{omake} is normally eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined. There are two ways to control this behavior. The \verb+$`(v)+ form introduces lazy behavior, and the \verb+$,(v)+ form restores eager behavior. Consider the following sequence. \begin{verbatim} osh> A = 1 - : "1" : Sequence osh> B = 2 - : "2" : Sequence osh> C = $`(add $(A), $,(B)) - : $(apply add $(apply A) "2" : Sequence) osh> println(C = $(C)) C = 3 osh> A = 5 - : "5" : Sequence osh> B = 6 - : "6" : Sequence osh> println(C = $(C)) C = 7 \end{verbatim} The definition \verb+C = $`(add $(A), $,(B))+ defines a lazy application. The \verb+add+ function is not applied in this case until its value is needed. Within this expression, the value \verb+$,(B)+ specifies that \verb+B+ is to be evaluated immediately, even though it is defined in a lazy expression. The first time that we print the value of \verb+C+, it evaluates to 3 since \verb+A+ is 1 and \verb+B+ is 2. The second time we evaluate \verb+C+, it evaluates to 7 because \verb+A+ has been redefined to \verb+5+. The second definition of \verb+B+ has no effect, since it was evaluated at definition time. \subsection{A larger example of lazy expressions} Lazy expressions are not evaluated until their result is needed. Some people, including this author, frown on overuse of lazy expressions, mainly because it is difficult to know when evaluation actually happens. However, there are cases where they pay off. One example comes from option processing. Consider the specification of ``include'' directories on the command line for a C compiler. If we want to include files from /home/jyh/include and ../foo, we specify it on the command line with the options \verb+-I/home/jyh/include -I../foo+. Suppose we want to define a generic rule for building C files. We could define a \verb+INCLUDES+ array to specify the directories to be included, and then define a generic implicit rule in our root OMakefile. \begin{verbatim} # Generic way to compile C files. CFLAGS = -g INCLUDES[] = %.o: %.c $(CC) $(CFLAGS) $(INCLUDES) -c $< # The src directory builds my_widget+ from 4 source files. # It reads include files from the include directory. .SUBDIRS: src FILES = fee fi foo fum OFILES = $(addsuffix .o, $(FILES)) INCLUDES[] += -I../include my_widget: $(OFILES) $(CC) $(CFLAGS) -o $@ $(OFILES) \end{verbatim} But this is not quite right. The problem is that INCLUDES is an array of options, not directories. If we later wanted to recover the directories, we would have to strip the leading \verb+-I+ prefix, which is a hassle. Furthermore, we aren't using proper names for the directories. The solution here is to use a lazy expression. We'll define INCLUDES as a directory array, and a new variable \verb+PREFIXED_INCLUDES+ that adds the -I prefix. The \verb+PREFIXED_INCLUDES+ is computed lazily, ensuring that the value uses the most recent value of the INCLUDES variable. \begin{verbatim} # Generic way to compile C files. CFLAGS = -g INCLUDES[] = PREFIXED_INCLUDES[] = $`(addprefix -I, $(INCLUDES)) %.o: %.c $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) -c $< # For this example, we define a proper name for the include directory STDINCLUDE = $(dir include) # The src directory builds my_widget+ from 4 source files. # It reads include files from the include directory. .SUBDIRS: src FILES = fee fi foo fum OFILES = $(addsuffix .o, $(FILES)) INCLUDES[] += $(STDINCLUDE) my_widget: $(OFILES) $(CC) $(CFLAGS) -o $@ $(OFILES) \end{verbatim} Note that there is a close connection between lazy values and functions. In the example above, we could equivalently define \verb+PREFIXED_INCLUDES+ as a function with zero arguments. \begin{verbatim} PREFIXED_INCLUDES() = addprefix(-I, $(INCLUDES)) \end{verbatim} \section{Scoping and exports} The \OMake{} language is functional (apart from IO and shell commands). This comes in two parts: functions are first-class, and variables are immutable (there is no assignment operator). The latter property may seem strange to users used to GNU make, but it is actually a central point of \OMake{}. Since variables can't be modified, it is impossible (or at least hard) for one part of the project to interfere with another. To be sure, pure functional programming can be awkward. In \OMake{}, each new indentation level introduces a new scope, and new definitions in that scope are lost when the scope ends. If \OMake{} were overly strict about scoping, we would wind up with a lot of convoluted code. \begin{verbatim} osh> X = 1 osh> setenv(BOO, 12) osh> if $(equal $(OSTYPE), Win32) setenv(BOO, 17) X = 2 osh> println($X $(getenv BOO)) 1 12 \end{verbatim} The \verb+export+ command presents a way out. It takes care of ``exporting'' a value (or the entire variable environment) from an inner scope to an outer one. \begin{verbatim} osh> X = 1 osh> setenv(BOO, 12) osh> if $(equal $(OSTYPE), Win32) setenv(BOO, 17) X = 2 export osh> println($X $(getenv BOO)) 2 17 \end{verbatim} Exports are especially useful in loop to export values from one iteration of a loop to the next. \begin{verbatim} # Ok, let's try to add up the elements of the array osh>sum(l) = total = 0 foreach(i, $l) total = $(add $(total), $i) value $(total) osh>sum(1 2 3) - : 0 : Int # Oops, that didn't work! osh>sum(l) = total = 0 foreach(i, $l) total = $(add $(total), $i) export value $(total) osh>sum(1 2 3) - : 6 : Int \end{verbatim} A \verb+while+ loop is another form of loop, with an auto-export. \begin{verbatim} osh>i = 0 osh>total = 0 osh>while $(lt $i, 10) total = $(add $(total), $i) i = $(add $i, 1) osh>println($(total)) 45 \end{verbatim} \section{Shell aliases} Sometimes you may want to define an \emph{alias}, an \OMake{} command that masquerades as a real shell command. You can do this by adding your function as a method to the \verb+Shell+ object. For an example, suppose we use the \verb+awk+ function to print out all the comments in a file. \begin{verbatim} osh>cat comment.om # Comment function comments(filename) = awk($(filename)) case $'^#' println($0) # File finished osh>include comment osh>comments(comment.om) # Comment function # File finished \end{verbatim} To add it as an alias, add the method (using += to preserve the existing entries in the Shell). \begin{verbatim} osh>Shell. += printcom(argv) = comments($(nth 0, $(argv))) osh>printcom comment.om > output.txt osh>cat output.txt # Comment function # File finished \end{verbatim} A shell command is passed an array of arguments \verb+argv+. This does \emph{not} include the name of the alias. \section{Input/output redirection on the cheap} As it turns out, scoping also provides a nice alternate way to perform redirection. Suppose you have already written a lot of code that prints to the standard output channel, but now you decide you want to redirect it. One way to do it is using the technique in the previous example: define your function as an alias, and then use shell redirection to place the output where you want. There is an alternate method that is easier in some cases. The variables \verb+stdin+, \verb+stdout+, and \verb+stderr+ define the standard I/O channels. To redirect output, redefine these variables as you see fit. Of course, you would normally do this in a nested scope, so that the outer channels are not affected. \begin{verbatim} osh>f() = println(Hello world) osh>f() Hello world osh>section: stdout = $(fopen output.txt, w) f() close($(stdout)) osh>cat output.txt Hello world \end{verbatim} This also works for shell commands. If you like to gamble, you can try the following example. \begin{verbatim} osh>f() = println(Hello world) osh>f() Hello world osh>section: stdout = $(fopen output.txt, w) f() cat output.txt close($(stdout)) osh>cat output.txt Hello world Hello world \end{verbatim} % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/osh.tex0000664000152300015230000000562610576045436014025 0ustar jyhjyh% % % \chapter{The OSH shell} \label{chapter:osh} \cutname{osh.html} \OMake{} also includes a standalone command-line interpreter \Prog{osh} that can be used as an interactive shell. The shell uses the same syntax, and provides the same features on all platforms \Prog{omake} supports, including Win32. \section{Startup} On startup, \Prog{osh} reads the file \verb+~/.oshrc+ if it exists. The syntax of this file is the same as an \Prog{OMakefile}. The following additional variables are significant. \var{prompt} The \verb+prompt+ variable specifies the command-line prompt. It can be a simple string. \begin{verbatim} prompt = osh> \end{verbatim} Or you may choose to define it as a function of no arguments. \begin{verbatim} prompt() = return $"<$(USER):$(HOST) $(homename $(CWD))>" \end{verbatim} An example of the latter prompt is as follows. \begin{verbatim} cd links/omake \end{verbatim} If you include any "invisible" text in the prompt (such as various terminal escape sequences), they must be wrapped using the \hyperfun{prompt-invisible}. For example, to create a bold prompt on terminals that support it, you can use the following. \begin{verbatim} prompt = bold-begin = $(prompt-invisible $(tgetstr bold)) bold-end = $(prompt-invisible $(tgetstr sgr0)) value $(bold-begin)$"osh>"$(bold-end) \end{verbatim} \var{ignoreeof} If the \verb+ignoreeof+ is \verb+true+, then \verb+osh+ will not exit on a terminal end-of-file (usually \verb+^D+ on Unix systems). \section{Aliases} \index{aliases} Command aliases are defined by adding functions to the \verb+Shell.+ object. The following alias adds the \verb+-AF+ option to the \verb+ls+ command. \begin{verbatim} Shell. += ls(argv) = "ls" -AF $(argv) \end{verbatim} Quoted commands do not undergo alias expansion. The quotation \verb+"ls"+ prevents the alias from being recursive. \section{Interactive syntax} The interactive syntax in \verb+osh+ is the same as the syntax of an \verb+OMakefile+, with one exception in regard to indentation. The line before an indented block must have a colon at the end of the line. A block is terminated with a \verb+.+ on a line by itself, or \verb+^D+. In the following example, the first line \verb+if true+ has no body, because there is no colon. \begin{verbatim} # The following if has no body osh>if true # The following if has a body osh>if true: if> if true: if> println(Hello world) if> . Hello world \end{verbatim} Note that \verb+osh+ makes some effort to modify the prompt while in an indented body, and it auto-indents the text. The colon signifier is also allowed in files, although it is not required. % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/code.hva0000664000152300015230000000014310565125736014111 0ustar jyhjyh\ifhtml \newcommand{\code}[1]{{\@style{CODE}#1\@clearstyle}} \else \newcommand{\code}[1]{'#1'} \fi omake-0.9.8.5/doc/src/omake-options.tex0000664000152300015230000003445610614542012016005 0ustar jyhjyh%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Usage % \chapter{Synopsis} \label{chapter:options} \cutname{omake-options.html} \Prog{omake} \oOptArg{-j}{count} \oOpt{-k} \oOpt{-p} \oOpt{-P} \oOpt{-n} \oOpt{-s} \oOpt{-S} \oOpt{-w} \oOpt{-t} \oOpt{-u} \oOpt{-U} \oOpt{-R} \oOpt{-{}-verbose} \oOpt{-{}-project} \oOpt{-{}-depend} \oOpt{-{}-progress} \oOpt{-{}-print-status} \oOpt{-{}-print-exit} \oOpt{-{}-print-dependencies} \oOptArg{-{}-show-dependencies}{target} \oOpt{-{}-all-dependencies} \oOpt{-{}-verbose-dependencies} \oOpt{-{}-force-dotomake} \oOptArg{-{}-dotomake}{dir} \oOpt{-{}-flush-includes} \oOpt{-{}-configure} \oOptArg{-{}-save-interval}{seconds} \oOpt{-{}-install} \oOpt{-{}-install-all} \oOpt{-{}-install-force} \oOpt{-{}-version} \oOpt{-{}-absname} \oOpt{-{}-output-normal} \oOpt{-{}-output-postpone} \oOpt{-{}-output-only-errors} \oOpt{-{}-output-at-end} \oArg{filename...} \oOpt{var-definition...} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Options % \section{General usage} For Boolean options (for example, \verb+-s+, \verb+--progress+, etc.) the option can include a prefix \verb+--no+, which inverts the usual sense of the option. For example, the option \verb+--progress+ means ``print a progress bar,'' while the option \verb+--no--progress+ means ``do not print a progress bar.'' If multiple instances of an option are specified, the final option determines the behavior of \OMake{}. In the following command line, the final \verb+--no-S+ cancels the earlier \verb+-S+. \begin{verbatim} % omake -S --progress --no-S \end{verbatim} \section{Output control} \option{-s} \verb+-s+ Never not print commands as they are executed (be ``silent''). \option{-S} \verb+-S+ Do not print commands as they are executed \emph{unless} they produce output and/or fail. This is the default. \option{-w} \verb+-w+ Print directory information in \Prog{make} format as commands are executed. This is mainly useful for editors that expect \Prog{make}-style directory information for determining the location of errors. \option{--progress} \verb+--progress+ Print a progress indicator. This option is enabled by default when the \OMake's output (\verb+stdout+) is on a terminal and disabled by default (except on Windows) when the \OMake's output is redirected. \option{--print-status} \verb+--print-status+ Print status lines (the \verb/+/ and \verb/-/ lines). \option{--print-exit} \verb+--print-exit+ Print termination codes when commands complete. \option{--verbose} \verb+--verbose+ Make \OMake{} very verbose. This option is equivalent to \verb+--no-S --print-status --print-exit VERBOSE=true+ \option{--output-normal} \verb+--output-normal+ As rule commands are executed, relay their output to the \OMake{} output right away. This is enabled by default, unless \verb+--output-postpone+ or \verb+--output-only-errors+ is enabled. \option{--output-postpone} \verb+--output-postpone+ When a rule finishes, print the output as a single block. This is useful in combination \verb+-j+ option (see Section~\ref{option:-j}), where the output of multiple subprocesses can be garbled. The diversion is printed as a single coherent unit. Note that enabling \verb+--output-postpone+ will by default disable the \verb+--output-normal+ option. This might be problematic if you have a command that decides to ask for interactive input. If the \verb+--output-postpone+ is enabled, but the \verb+--output-normal+ is not, the prompt of such a command will not be visible and it may be hard to figure out why the build appears ``stuck''. You might also consider using the \verb+--progress+ flag (see Section~\ref{option:--progress}) so that you can see when the build is active. \option{--output-only-errors} \verb+--output-only-errors+ Similar to \verb+--output-postpone+, except that the postponed output from commands that were successful will be discarded. This can be useful in reducing unwanted output so that you can concentrate on any errors. \option{--output-at-end} \verb+--output-at-end+ If any rules/commands fail, re-print the output of the failed commands when \OMake{} finishes the build. This is especially useful when any of the \verb+-k+, \verb+-p+, or \verb+-P+ options are enabled. This option is off by default. However, when \verb+-k+ is enabled --- either explicitly or via one of the \verb+-p+/\verb+-P+ options --- \verb+--output-at-end+ will be enabled by default. \option{-o} \verb+-o [01jwWpPxXsS]+ For brevity, the \verb+-o+ option is also provided to duplicate the above output options. The \verb+-o+ option takes a argument consisting of a sequence of characters. The characters are read from left-to-right; each specifies a set of output options. In general, an uppercase character turns the option \emph{on}; a lowercase character turns the option \emph{off}. \begin{description} \item[0] Equivalent to \verb+-s --output-only-errors --no-progress+ This option specifies that \verb+omake+ should be as quiet as possible. If any errors occur during the build, the output is delayed until the build terminates. Output from successful commands is discarded. \item[1] Equivalent to \verb+-S --progress --output-only-errors+ This is a slightly more relaxed version of ``quiet'' output. The output from successful commands is discarded. The output from failed commands is printed immediately after the command complete. The output from failed commands is displayed twice: once immediately after the command completes, and again when the build completes. A progress bar is displayed so that you know when the build is active. Include the `\verb+p+' option if you want to turn off the progress bar (for example \verb+omake -o 1p+). \item[2] Equivalent to \verb+--progress --output-postpone+ The is even more relaxed, output from successful commands is printed. This is often useful for deinterleaving the output when using \verb+-j+. \item[W] Equivalent to \verb+-w+ \item[w] Equivalent to \verb+--no-w+ \item[P] Equivalent to \verb+--progress+ \item[p] Equivalent to \verb+--no--progress+ \item[X] Equivalent to \verb+--print-exit+ \item[x] Equivalent to \verb+--no-print-exit+ \item[S] Equivalent to \verb+-S+ \item[s] Equivalent to \verb+--no-S+ \end{description} \section{Build options} \option{-k} \verb+-k+ Do not abort when a build command fails; continue to build as much of the project as possible. This option is implied by both \verb+-p+ and \verb+-P+ options. In turn, this option would imply the \verb+--output-at-end+ option. \option{-n} \verb+-n+ This can be used to see what would happen if the project were to be built. \option{-p} \verb+-p+ Watch the filesystem for changes, and continue the build until it succeeds. If this option is specified, \Prog{omake} will restart the build whenever source files are modified. Implies \texttt{-k}. \option{-P} \verb+-P+ Watch the filesystem for changes forever. If this option is specified, \Prog{omake} will restart the build whenever source files are modified. Implies \texttt{-k}. \option{-R} \verb+-R+ Ignore the current directory and build the project from its root directory. When \Prog{omake} is run in a subdirectory of a project and no explicit targets are given on the command line, it would normally only build files within the current directory and its subdirectories (more precisely, it builds all the \verb+.DEFAULT+ targets in the current directory and its subdirectories). If the \Opt{-R} option is specified, the build is performed as if \Prog{omake} were run in the project root. In other words, with the \verb+-R+ option, all the relative targets specified on the command line will be taken relative to the project root (instead of relative to the current directory). When no targets are given on the command line, all the \verb+.DEFAULT+ targets in the project will be built (regardless of the current directory). \option{-t} \verb+-t+ Update the \Prog{omake} database to force the project to be considered up-to-date. \option{-U} \verb+-U+ Do not trust cached build information. This will force the entire project to be rebuilt. \option{--depend} \verb+--depend+ Do not trust cached dependency information. This will force files to be rescanned for dependency information. \option{--configure} \verb+--configure+ Re-run \verb+static.+ sections of the included omake files, instead of trusting the cached results. \option{--force-dotomake} \verb+--force-dotomake+ Always use the \verb+$HOME/.omake+ for the \verb+.omc+ cache files. \option{--dotomake} \verb+--dotomake
+ Use the specified directory instead of the \verb+$HOME/.omake+ for the placement of the \verb+.omc+ cache files. \option{-j} \verb+-j + Run multiple build commands in parallel. The \Arg{count} specifies a bound on the number of commands to run simultaneously. In addition, the count may specify servers for remote execution of commands in the form \verb+server=count+. For example, the option \verb+-j 2:small.host.org=1:large.host.org=4+ would specify that up to 2 jobs can be executed locally, 1 on the server \verb+small.host.org+ and 4 on \verb+large.host.org+. Each remote server must use the same filesystem location for the project. Remote execution is currently an experimental feature. Remote filesystems like NFS do not provide adequate file consistency for this to work. \option{--print-dependencies} \verb+--print-dependencies+ Print dependency information for the targets on the command line. \option{--show-dependencies} \verb+--show-dependencies + Print dependency information \emph{if} the \verb+target+ is built. \option{--all-dependencies} \verb+--all-dependencies+ If either of the options \texttt{-{}-print-dependencies} or \texttt{-{}-show-dependencies} is in effect, print transitive dependencies. That is, print all dependencies recursively. If neither option \texttt{-{}-print-dependencies}, \texttt{-{}-show-dependencies} is specified, this option has no effect. \option{--verbose-dependencies} \verb+--verbose-dependencies+ If either of the options \texttt{-{}-print-dependencies} or \texttt{-{}-show-dependencies} is in effect, also print listings for each dependency. The output is very verbose, consider redirecting to a file. If neither option \texttt{-{}-print-dependencies}, \texttt{-{}-show-dependencies} is specified, this option has no effect. \option{--install} \verb+--install+ Install default files \File{OMakefile} and \File{OMakeroot} into the current directory. You would typically do this to start a project in the current directory. \option{--install-all} \verb+--install-all+ In addition to installing files \File{OMakefile} and \File{OMakeroot}, install default \File{OMakefile}s into each subdirectory of the current directory. \Cmd{cvs}{1} rules are used for filtering the subdirectory list. For example, \File{OMakefile}s are not copied into directories called \verb+CVS+, \verb+RCCS+, etc. \option{--install-force} \verb+--install-force+ Normally, \Prog{omake} will prompt before it overwrites any existing \File{OMakefile}. If this option is given, all files are forcibly overwritten without prompting. \option{--absname} \verb+--absname+ Filenames should expand to absolute pathnames. \textbf{N.B.} This is an experimental option. It may become deprecated. \option{variable definition} \verb+name=[value]+ \Prog{omake} variables can also be defined on the command line in the form \verb+name=value+. For example, the \verb+CFLAGS+ variable might be defined on the command line with the argument \verb+CFLAGS="-Wall -g"+. \section{Additional options} In addition, \Prog{omake} supports a number of debugging flags on the command line. Run \verb+omake --help+ to get a summary of these flags. \section{Environment variables} \subsection{\texttt{OMAKEFLAGS}} \index{OMAKEFLAGS} If defines, the \verb+OMAKEFLAGS+ should specify a set of options exactly as they are specified on the command line. \subsection{\texttt{OMAKELIB}} \index{OMAKELIB} If defined, the \verb+OMAKELIB+ environment variable should refer to the installed location of the \OMake{} standard library. This is the directory that contains \verb+Pervasives.om+ etc. On a Unix system, this is often \verb+/usr/lib/omake+ or \verb+/usr/local/lib/omake+, and on Win32 systems it is often \verb+c:\Program Files\OMake\lib+. If not defined, \verb+omake+ uses the default configured location. You should normally leave this unset. \section{Functions} \subsection{\texttt{OMakeFlags}} The \verb+OMakeFlags+ function can be used within an \verb+OMakefile+ to modify the set of options. The options should be specified exactly as they are on the command line. For example, if you want some specific project to be silent and display a progress bar, you can add the following line to your \verb+OMakefile+. \begin{verbatim} OMakeFlags(-S --progress) \end{verbatim} For options where it makes sense, the options are scoped like variables. For example, if you want \OMake{} to be silent for a single rule (instead of for the entire project), you can use scoping the restrict the range of the option. \begin{verbatim} section # Do not display command output when foo is constructed OMakeFlags(-S) foo: fee echo "This is a generated file" > foo cat fee >> foo chmod 555 foo \end{verbatim} \section{Option processing} When \verb+omake+ is invoked, the options are processed in the following order. \begin{enumerate} \item All options specified by the \verb+OMAKEFLAGS+ environment variable are defined globally. \item All options from the command line are defined globally. \item Any individual calls the the \verb+OMakeFlags+ function modify the options locally. \end{enumerate} \section{.omakerc} \label{section:.omakerc} \index{.omakerc} If the \verb+$(HOME)/.omakerc+ exists, it is read before any of the \verb+OMakefiles+ in your project. The \verb+.omakerc+ file is frequently used for user-specific customization. For example, instead of defining the \verb+OMAKEFLAGS+ environment variable, you could add a line to your \verb+.omakerc+. \begin{verbatim} $(HOME)/.omakerc: # My private options OMakeFlags(-S --progress) \end{verbatim} % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % vim:tw=100:fo=tcq: % -*- omake-0.9.8.5/doc/src/omake-language-naming.tex0000664000152300015230000001576610642270375017362 0ustar jyhjyh%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Description % \chapter{Variables and Naming} \label{chapter:naming} \cutname{omake-language-naming.html} During evaluation, there are three different kinds of namespaces. Variables can be \emph{private}, or they may refer to fields in the current \emph{this} object, or they can be part of the \emph{global} namespace. The namespace can be specified directly by including an explicit qualifier before the variable name. The three namespaces are separate; a variable can be bound in one or more simultaneously. \begin{verbatim} # private namespace private.X = 1 # current object this.X = 2 # public, globally defined global.X = 3 \end{verbatim} \section{private.} \label{section:private}\index{private.} The \verb+private.+ qualifier is used to define variables that are private to the current file/scope. The values are not accessible outside the scope. Private variables are statically (lexically) scoped. \begin{verbatim} Obj. = private.X = 1 print() = println(The value of X is: $X) # Prints: # The private value of X is: 1 Obj.print() # This is an error--X is private in Obj y = $(Obj.X) \end{verbatim} In addition, private definitions do not affect the global value of a variable. \begin{verbatim} # The public value of x is 1 x = 1 # This object uses a private value of x Obj. = private.x = 2 print() = x = 3 println(The private value of x is: $x) println(The public value of x is: $(public.x)) f() # Prints: # The private value of x is: 3 # The public value of x is: 1 Obj.print() \end{verbatim} Private variables have two additional properties. \begin{enumerate} \item Private variables are local to the file in which they are defined. \item Private variables are not exported by the \verb+export+ directive, unless they are mentioned explicitly. \begin{verbatim} private. = FLAG = true section FLAG = false export # FLAG is still true section FLAG = false export FLAG # FLAG is now false \end{verbatim} \end{enumerate} \section{this.} \index{this.} The \verb+this.+ qualifier is used to define fields that are local to an object. Object variables are dynamically scoped. \begin{verbatim} X = 1 f() = println(The public value of X is: $(X)) # Prints: # The public value of X is: 2 section X = 2 f() # X is a protected field in the object Obj. = this.X = 3 print() = println(The value of this.X is: $(X)) f() # Prints: # The value of this.X is: 3 # The public value of X is: 1 Obj.print() # This is legal, it defines Y as 3 Y = $(Obj.X) \end{verbatim} In general, it is a good idea to define object variables as protected. The resulting code is more modular because variables in your object will not produce unexpected clashes with variables defined in other parts of the project. \section{global.} \label{section:global}\index{global.} The \verb+global.+ qualifier is used to specify global dynamically-scoped variables. In the following example, the \verb+global.+ definition specifies that the binding \verb+X = 4+ is to be dynamically scoped. Global variables \emph{are not} defined as fields of an object. \begin{verbatim} X = 1 f() = println(The global value of X is: $(X)) # Prints: # The global value of X is: 2 section X = 2 f() Obj. = protected.X = 3 print() = println(The protected value of X is: $(X)) global.X = 4 f() # Prints: # The protected value of X is: 3 # The global value of X is: 4 Obj.print() \end{verbatim} \section{protected.} \label{section:protected}\index{protected.} In OMake 0.9.8, \verb+protected+ is a synonym for \verb+this+. \begin{verbatim} osh>protected.x = 1 - : "1" : Sequence osh>value $(this.x) - : "1" : Sequence \end{verbatim} % In 0.9.9, this will change, so that the qualifier \verb+protected+ means (in 0.9.9) that a variable is local to the current object or file, and may not be accessed outside it. \section{public.} \label{section:public}\index{public.} In OMake 0.9.8, \verb+public+ is a synonym for \verb+global+. \begin{verbatim} osh>public.x = 1 - : "1" : Sequence osh>value $(global.x) - : "1" : Sequence \end{verbatim} % In 0.9.9, this will change, so that the qualifier \verb+public+ means (in 0.9.9) that a variable is to be accessible from outside the current file or object. \section{Qualified blocks} If several qualified variables are defined simultaneously, a block form of qualifier can be defined. The syntax is similar to an object definition, where the name of the object is the qualifier itself. For example, the following program defines two private variables \verb+X+ and \verb+Y+. \begin{verbatim} private. = X = 1 Y = 2 \end{verbatim} % The qualifier specifies a default namespace for new definitions in the block. The contents of the block is otherwise completely general. \begin{verbatim} private. = X = 1 Y = 2 public.Z = $(add $X, $Y) # Prints "The value of Z is 3" echo The value of Z is $Z \end{verbatim} \section{declare} \label{section:declare}\index{declare} When a variable name is unqualified, its namespace is determined by the most recent definition or declaration that is in scope for that variable. We have already seen this in the examples, where a variable definition is qualified, but the subsequent uses are not qualified explicitly. In the following example, the first occurrence of \verb+$X+ refers to the \emph{private} definition, because that is the most recent. The public definition of \verb+X+ is still \verb+0+, but the variable must be qualified explicitly. \begin{verbatim} public.X = 0 private.X = 1 public.print() = println(The value of private.X is: $X) println(The value of public.X is: $(public.X)) \end{verbatim} % Sometimes it can be useful to declare a variable without defining it. For example, we might have a function that uses a variable \verb+X+ that is to be defined later in the program. The \verb+declare+ directive can be used for this. \begin{verbatim} declare public.X public.print() = println(The value of X is $X) # Prints "The value of X is 2" X = 2 print() \end{verbatim} Finally, what about variables that are used but not explicitly qualified? In this case, the following rules are used. \begin{itemize} \item If the variable is a function parameter, it is private. \item If the variable is defined in an object, it is qualified with \verb+this.+. \item Otherwise, the variable is public. \end{itemize} % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/omake-rules.tex0000664000152300015230000007225510642271501015446 0ustar jyhjyh% % % \chapter{Rules} \label{chapter:rules} \cutname{omake-rules.html} Rules are used by \OMake{} to specify how to build files. At its simplest, a rule has the following form. \begin{verbatim} : \end{verbatim} The \verb++ is the name of a file to be built. The \verb++ are a list of files that are needed before the \verb++ can be built. The \verb++ are a list of indented lines specifying commands to build the target. For example, the following rule specifies how to compile a file \verb+hello.c+. \begin{verbatim} hello.o: hello.c $(CC) $(CFLAGS) -c -o hello.o hello.c \end{verbatim} This rule states that the \File{hello.o} file depends on the \File{hello.c} file. If the \File{hello.c} file has changed, the command \verb+$(CC) $(CFLAGS) -c -o hello.o hello.c+ is to be executed to update the target file \verb+hello.o+. A rule can have an arbitrary number of commands. The individual command lines are executed independently by the command shell. The commands do not have to begin with a tab, but they must be indented from the dependency line. In addition to normal variables, the following special variables may be used in the body of a rule. % We use \char* even for printable chars for consistency. \begin{itemize} \item \verb+$*+\index{\char36\char42}\index[var]{\char42}: the target name, without a suffix. \item \verb+$@+\index{\char36\char64}\index[var]{\char64}: the target name. \item \verb+$^+\index{\char36\char94}\index[var]{\char94}: a list of the sources, in alphabetical order, with duplicates removed. \item \verb.$+.\index{\char36\char43}\index[var]{\char43}: all the sources, in the original order. \item \verb+$<+\index{\char36\char60}\index[var]{\char60}: the first source. \end{itemize} For example, the above \verb+hello.c+ rule may be simplified as follows. \begin{verbatim} hello.o: hello.c $(CC) $(CFLAGS) -c -o $@ $< \end{verbatim} Unlike normal values, the variables in a rule body are expanded lazily, and binding is dynamic. The following function definition illustrates some of the issues. \begin{verbatim} CLibrary(name, files) = OFILES = $(addsuffix .o, $(files)) $(name).a: $(OFILES) $(AR) cq $@ $(OFILES) \end{verbatim} This function defines a rule to build a program called \verb+$(name)+ from a list of \verb+.o+ files. The files in the argument are specified without a suffix, so the first line of the function definition defines a variable \verb+OFILES+ that adds the \verb+.o+ suffix to each of the file names. The next step defines a rule to build a target library \verb+$(name).a+ from the \verb+$(OFILES)+ files. The expression \verb+$(AR)+ is evaluated when the function is called, and the value of the variable \verb+AR+ is taken from the caller's scope (see also the section on Scoping). \section{Implicit rules} \index{rules, implicit} Rules may also be implicit. That is, the files may be specified by wildcard patterns. The wildcard character is \verb+%+. For example, the following rule specifies a default rule for building \verb+.o+ files. \begin{verbatim} %.o: %.c $(CC) $(CFLAGS) -c -o $@ $*.c \end{verbatim} This rule is a template for building an arbitrary \verb+.o+ file from a \verb+.c+ file. By default, implicit rules are only used for the targets in the current directory. However subdirectories included via the \verb+.SUBDIRS+ rules inherit all the implicit rules that are in scope (see also the section on Scoping). \section{Bounded implicit rules} \index{rules, bounded implicit} Implicit rules may specify the set of files they apply to. The following syntax is used. \begin{verbatim} : : \end{verbatim} For example, the following rule applies only to the files \verb+a.o+ and \verb+b.o+. \begin{verbatim} a.o b.o: %.o: %.c $(CC) $(CFLAGS) -DSPECIAL -c $*.c \end{verbatim} \section{section} \formref{section} Frequently, the commands in a rule body are expressions to be evaluated by the shell. \Prog{omake} also allows expressions to be evaluated by \Prog{omake} itself. The syntax of these ``computed rules'' uses the \verb+section+ expression. The following rule uses the \Prog{omake} IO functions to produce the target \verb+hello.c+. \begin{verbatim} hello.c: section FP = fopen(hello.c, w) fprintln($(FP), $""#include int main() { printf("Hello world\n"); }"") close($(FP)) \end{verbatim} This example uses the quotation \verb+$""...""+ (see also Section~\ref{section:quotes}) to quote the text being printed. These quotes are not included in the output file. The \verb+fopen+, \verb+fprintln+, and \verb+close+ functions perform file IO as discussed in the IO section. In addition, commands that are function calls, or special expressions, are interpreted correctly. Since the \verb+fprintln+ function can take a file directly, the above rule can be abbreviated as follows. \begin{verbatim} hello.c: fprintln($@, $""#include int main() { printf("Hello world\n"); }"") \end{verbatim} \section{section rule} \formref{section rule} Rules can also be computed using the \verb+section rule+ form, where a rule body is expected instead of an expression. In the following rule, the file \verb+a.c+ is copied onto the \verb+hello.c+ file if it exists, otherwise \verb+hello.c+ is created from the file \verb+default.c+. \begin{verbatim} hello.c: section rule if $(target-exists a.c) hello.c: a.c cat a.c > hello.c else hello.c: default.c cp default.c hello.c \end{verbatim} \section{Special dependencies} \index{rule, options} \subsection{:exists:} \index{:exists:} In some cases, the contents of a dependency do not matter, only whether the file exists or not. In this case, the \verb+:exists:+ qualifier can be used for the dependency. \begin{verbatim} foo.c: a.c :exists: .flag if $(test -e .flag) $(CP) a.c $@ \end{verbatim} \subsection{:effects:} \index{:effects:} Some commands produce files by side-effect. For example, the \Cmd{latex}{1} command produces a \verb+.aux+ file as a side-effect of producing a \verb+.dvi+ file. In this case, the \verb+:effects:+ qualifier can be used to list the side-effect explicitly. \Prog{omake} is careful to avoid simultaneously running programs that have overlapping side-effects. \begin{verbatim} paper.dvi: paper.tex :effects: paper.aux latex paper \end{verbatim} \subsection{:value:} \index{:value:} The \verb+:value:+ dependency is used to specify that the rule execution depends on the value of an expression. For example, the following rule \begin{verbatim} a: b c :value: $(X) ... \end{verbatim} specifies that ``a'' should be recompiled if the value of \verb+$(X)+ changes (X does not have to be a filename). This is intended to allow greater control over dependencies. In addition, it can be used instead of other kinds of dependencies. For example, the following rule: \begin{verbatim} a: b :exists: c commands \end{verbatim} is the same as \begin{verbatim} a: b :value: $(target-exists c) commands \end{verbatim} Notes: \begin{itemize} \item The values are arbitrary (they are not limited to variables) \item The values are evaluated at rule expansion time, so expressions containing variables like \verb+$@+, \verb+$^+, etc are legal. \end{itemize} \section{\code{.SCANNER} rules} \targetref{.SCANNER} Scanner rules define a way to specify automatic dependency scanning. A \verb+.SCANNER+ rule has the following form. \begin{verbatim} .SCANNER: target: dependencies commands \end{verbatim} The rule is used to compute additional dependencies that might be defined in the source files for the specified target. The result of executing the scanner commands \emph{must} be a sequence of dependencies in OMake format, printed to the standard output. For example, on GNU systems the \verb+gcc -MM foo.c+ produces dependencies for the file \verb+foo.c+ (based on \verb+#include+ information). We can use this to specify a scanner for C files that adds the scanned dependencies for the \verb+.o+ file. The following scanner specifies that dependencies for a file, say \verb+foo.o+ can be computed by running \verb+gcc -MM foo.c+. Furthermore, \verb+foo.c+ is a dependency, so the scanner should be recomputed whenever the \verb+foo.c+ file changes. \begin{verbatim} .SCANNER: %.o: %.c gcc -MM $< \end{verbatim} Let's suppose that the command \verb+gcc -MM foo.c+ prints the following line. \begin{verbatim} foo.o: foo.h /usr/include/stdio.h \end{verbatim} The result is that the files \verb+foo.h+ and \verb+/usr/include/stdio.h+ are considered to be dependencies of \verb+foo.o+---that is, \verb+foo.o+ should be rebuilt if either of these files changes. This works, to an extent. One nice feature is that the scanner will be re-run whenever the \verb+foo.c+ file changes. However, one problem is that dependencies in C are \emph{recursive}. That is, if the file \verb+foo.h+ is modified, it might include other files, establishing further dependencies. What we need is to re-run the scanner if \verb+foo.h+ changes too. We can do this with a \emph{value} dependency. The variable \verb+$&+ is defined as the dependency results from any previous scan. We can add these as dependencies using the \verb+digest+ function, which computes an MD5 digest of the files. \begin{verbatim} .SCANNER: %.o: %.c :value: $(digest $&) gcc -MM $< \end{verbatim} Now, when the file \verb+foo.h+ changes, its digest will also change, and the scanner will be re-run because of the value dependency (since \verb+$&+ will include \verb+foo.h+). This still is not quite right. The problem is that the C compiler uses a \emph{search-path} for include files. There may be several versions of the file \verb+foo.h+, and the one that is chosen depends on the include path. What we need is to base the dependencies on the search path. The \verb+$(digest-in-path-optional ...)+ function computes the digest based on a search path, giving us a solution that works. \begin{verbatim} .SCANNER: %.o: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $< \end{verbatim} The standard output of the scanner rules will be captured by OMake and is not allowed to contain any content that OMake will not be able to parse as a dependency. The output is allowed to contain dependency specifications for unrelated targets, however such dependencies will be ignored. The scanner rules are allowed to produce arbitrary output on the standard error channel --- such output will be handled in the same way as the output of the ordinary rules (in other words, it will be presented to the user, when dictated by the \verb+--output-+$\ldots$ options enabled). Additional examples of the \verb+.SCANNER+ rules can be found in Section~\ref{section:scanner-exm}. \subsection{Named scanners, and the \code{:scanner:} dependencies} \index{:scanner:} Sometimes it may be useful to specify explicitly which scanner should be used in a rule. For example, we might compile \verb+.c+ files with different options, or (heaven help us) we may be using both \verb+gcc+ and the Microsoft Visual C++ compiler \verb+cl+. In general, the target of a \verb+.SCANNER+ is not tied to a particular target, and we may name it as we like. \begin{verbatim} .SCANNER: scan-gcc-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $< .SCANNER: scan-cl-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) cl --scan-dependencies-or-something $(addprefix /I, $(INCLUDES)) $< \end{verbatim} The next step is to define explicit scanner dependencies. The \verb+:scanner:+ dependency is used for this. In this case, the scanner dependencies are specified explicitly. \begin{verbatim} $(GCC_FILES): %.o: %.c :scanner: scan-gcc-%c gcc ... $(CL_FILES): %.obj: %.c :scanner: scan-cl-%c cl ... \end{verbatim} Explicit \verb+:scanner:+ scanner specification may also be used to state that a single \verb+.SCANNER+ rule should be used to generate dependencies for more than one target. For example, \begin{verbatim} .SCANNER: scan-all-c: $(GCC_FILES) :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $(GCC_FILES) $(GCC_FILES): %.o: %.c :scanner: scan-all-c ... \end{verbatim} The above has the advantage of only running \Prog{gcc} once and a disadvantage that when a single source file changes, all the files will end up being re-scanned. \subsection{Notes} In most cases, you won't need to define scanners of your own. The standard installation includes default scanners (both explicitly and implicitly named ones) for C, OCaml, and \LaTeX{} files. The \hypervarx{SCANNER_MODE}{SCANNER\_MODE} controls the usage of implicit scanner dependencies. The explicit \verb+:scanner:+ dependencies reduce the chances of scanner mis-specifications. In large complicated projects it might be a good idea to set \verb+SCANNER_MODE+ to \verb+error+ and use only the named \verb+.SCANNER+ rules and explicit \verb+:scanner:+ specifications. \section{.DEFAULT} \targetref{.DEFAULT} The \verb+.DEFAULT+ target specifies a target to be built by default if \Prog{omake} is run without explicit targets. The following rule instructs \Prog{omake} to build the program \verb+hello+ by default \begin{verbatim} .DEFAULT: hello \end{verbatim} \section{.SUBDIRS} \targetref{.SUBDIRS} The \verb+.SUBDIRS+ target is used to specify a set of subdirectories that are part of the project. Each subdirectory should have its own \File{OMakefile}, which is evaluated in the context of the current environment. \begin{verbatim} .SUBDIRS: src doc tests \end{verbatim} This rule specifies that the \verb+OMakefile+s in each of the \verb+src+, \verb+doc+, and \verb+tests+ directories should be read. In some cases, especially when the \verb+OMakefile+s are very similar in a large number of subdirectories, it is inconvenient to have a separate \verb+OMakefile+ for each directory. If the \verb+.SUBDIRS+ rule has a body, the body is used instead of the \verb+OMakefile+. \begin{verbatim} .SUBDIRS: src1 src2 src3 println(Subdirectory $(CWD)) .DEFAULT: lib.a \end{verbatim} In this case, the \verb+src1+, \verb+src2+, and \verb+src3+ files do not need \verb+OMakefile+s. Furthermore, if one exists, it is ignored. The following includes the file if it exists. \begin{verbatim} .SUBDIRS: src1 src2 src3 if $(file-exists OMakefile) include OMakefile .DEFAULT: lib.a \end{verbatim} \section{.INCLUDE} \targetref{.INCLUDE} The \verb+.INCLUDE+ target is like the \verb+include+ directive, but it specifies a rule to build the file if it does not exist. \begin{verbatim} .INCLUDE: config echo "CONFIG_READ = true" > config echo CONFIG_READ is $(CONFIG_READ) \end{verbatim} You may also specify dependencies to an \verb+.INCLUDE+ rule. \begin{verbatim} .INCLUDE: config: config.defaults cp config.defaults config \end{verbatim} A word of caution is in order here. The usual policy is used for determining when the rule is out-of-date. The rule is executed if any of the following hold. \begin{itemize} \item the target does not exist, \item the rule has never been executed before, \item any of the following have changed since the last time the rule was executed, \begin{itemize} \item the target, \item the dependencies, \item the commands-text. \end{itemize} \end{itemize} In some of the cases, this will mean that the rule is executed even if the target file already exists. If the target is a file that you expect to edit by hand (and therefore you don't want to overwrite it), you should make the rule evaluation conditional on whether the target already exists. \begin{verbatim} .INCLUDE: config: config.defaults # Don't overwrite my carefully hand-edited file if $(not $(file-exists config)) cp config.defaults config \end{verbatim} \section{.PHONY} \targetref{.PHONY} A ``phony'' target is a target that is not a real file, but exists to collect a set of dependencies. Phony targets are specified with the \verb+.PHONY+ rule. In the following example, the \verb+install+ target does not correspond to a file, but it corresponds to some commands that should be run whenever the \verb+install+ target is built (for example, by running \verb+omake install+). \begin{verbatim} .PHONY: install install: myprogram.exe cp myprogram.exe /usr/bin \end{verbatim} \section{Rule scoping} \index{rule, scoping} As we have mentioned before, \Prog{omake} is a \emph{scoped} language. This provides great flexibility---different parts of the project can define different configurations without interfering with one another (for example, one part of the project might be compiled with \verb+CFLAGS=-O3+ and another with \verb+CFLAGS=-g+). But how is the scope for a target file selected? Suppose we are building a file \verb+dir/foo.o+. \Prog{omake} uses the following rules to determine the scope. \begin{itemize} \item First, if there is an \emph{explicit} rule for building \verb+dir/foo.o+ (a rule with no wildcards), the context for that rule determines the scope for building the target. \item Otherwise, the directory \verb+dir/+ must be part of the project. This normally means that a configuration file \verb+dir/OMakefile+ exists (although, see the \verb+.SUBDIRS+ section for another way to specify the \verb+OMakefile+). In this case, the scope of the target is the scope at the end of the \verb+dir/OMakefile+. \end{itemize} To illustrate rule scoping, let's go back to the example of a ``Hello world'' program with two files. Here is an example \verb+OMakefile+ (the two definitions of \verb+CFLAGS+ are for illustration). \begin{verbatim} # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Redefine CFLAGS CFLAGS += -O3 \end{verbatim} In this project, the target \verb+hello+ is \emph{explicit}. The scope of the \verb+hello+ target is the line beginning with \verb+hello:+, where the value of \verb+CFLAGS+ is \verb+-g+. The other two targets, \verb+hello_code.o+ and \verb+hello_lib.o+ do not appear as explicit targets, so their scope is at the end of the \verb+OMakefile+, where the \verb+CFLAGS+ variable is defined to be \verb+-g -O3+. That is, \verb+hello+ will be linked with \verb+CFLAGS=-g+ and the \verb+.o+ files will be compiled with \verb+CFLAGS=-g -O3+. We can change this behavior for any of the targets by specifying them as explicit targets. For example, suppose we wish to compile \verb+hello_lib.o+ with a preprocessor variable \verb+LIBRARY+. \begin{verbatim} # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section CFLAGS += -DLIBRARY hello_lib.o: # Redefine CFLAGS CFLAGS += -O3 \end{verbatim} In this case, \verb+hello_lib.o+ is also mentioned as an explicit target, in a scope where \verb+CFLAGS=-g -DLIBRARY+. Since no rule body is specified, it is compiled using the usual implicit rule for building \verb+.o+ files (in a context where \verb+CFLAGS=-g -DLIBRARY+). \subsection{Scoping of implicit rules} \label{section:implicit-scoping} Implicit rules (rules containing wildcard patterns) are \emph{not} global, they follow the normal scoping convention. This allows different parts of a project to have different sets of implicit rules. If we like, we can modify the example above to provide a new implicit rule for building \verb+hello_lib.o+. \begin{verbatim} # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section %.o: %.c $(CC) $(CFLAGS) -DLIBRARY -c $< hello_lib.o: # Redefine CFLAGS CFLAGS += -O3 \end{verbatim} In this case, the target \verb+hello_lib.o+ is built in a scope with a new implicit rule for building \verb+%.o+ files. The implicit rule adds the \verb+-DLIBRARY+ option. This implicit rule is defined only for the target \verb+hello_lib.o+; the target \verb+hello_code.o+ is built as normal. \subsection{Scoping of \code{.SCANNER} rules} \index{.SCANNER}\index[target]{.SCANNER} Scanner rules are scoped the same way as normal rules. If the \verb+.SCANNER+ rule is explicit (containing no wildcard patterns), then the scope of the scan target is the same as the the rule. If the \verb+.SCANNER+ rule is implicit, then the environment is taken from the \verb+:scanner:+ dependency. \begin{verbatim} # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # scanner for .c files .SCANNER: scan-c-%.c: %.c $(CC) $(CFLAGS) -MM $< # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section CFLAGS += -DLIBRARY hello_lib.o: hello_lib.c :scanner: scan-c-hello_lib.c $(CC) $(CFLAGS) -c $< # Compile hello_code.c with CFLAGS = -g -O3 section CFLAGS += -O3 hello_code.o: hello_code.c :scanner: scan-c-hello_code.c $(CC) $(CFLAGS) -c $< \end{verbatim} Again, this is for illustration---it is unlikely you would need to write a complicated configuration like this! In this case, the \verb+.SCANNER+ rule specifies that the C-compiler should be called with the \verb+-MM+ flag to compute dependencies. For the target \verb+hello_lib.o+, the scanner is called with \verb+CFLAGS=-g -DLIBRARY+, and for \verb+hello_code.o+ it is called with \verb+CFLAGS=-g -O3+. \subsection{Scoping for \code{.PHONY} targets} \label{section:PHONY-scoping}\index{.PHONY}\index[target]{.PHONY} Phony targets (targets that do not correspond to files) are defined with a \verb+.PHONY:+ rule. Phony targets are scoped as usual. The following illustrates a common mistake, where the \verb+.PHONY+ target is declared \emph{after} it is used. \begin{verbatim} # !!This example is broken!! all: hello hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ .PHONY: all \end{verbatim} This doesn't work as expected because the \verb+.PHONY+ declaration occurs too late. The proper way to write this example is to place the \verb+.PHONY+ declaration first. \begin{verbatim} # Phony targets must be declared before being used .PHONY: all all: hello hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ \end{verbatim} Phony targets are passed to subdirectories. As a practical matter, it is wise to declare all \verb+.PHONY+ targets in your root \verb+OMakefile+, before any \verb+.SUBDIRS+. This will ensure that 1) they are considered as phony targets in each of the subdirectories, and 2) you can build them from the project root. \begin{verbatim} .PHONY: all install clean .SUBDIRS: src lib clib \end{verbatim} Note that when a \verb+.PHONY+ target is inherited by a subdirectory via a \verb+.SUBDIRS+, a whole hierarchy of \verb+.PHONY+ targets (that are a part of the global one) is created, as described in Section~\ref{section:PHONY-hierarchy} below. \section{Running \OMake{} from a subdirectory} \label{section:running-from-subdir} Running \verb+omake foo+ asks \OMake{} to build the file \verb+foo+ in context of the \emph{whole} project, even when running from a subdirectory of the project. Therefore, if \verb+bar/baz+ is a regular target (not a \verb+.PHONY+ one), then running \verb+omake bar/baz+ and running \verb+(cd bar; omake baz)+ are usually equivalent. There are two noteworthy exceptions to the above rule: \begin{itemize} \item If the subdirectory is not a part of the project (there is no \verb+.SUBDIRS+) for it, then \OMake{} will complain if you try to run it in that directory. \item If a subdirectory contains an \verb+OMakeroot+ of its own, this would designate the subdirectory as a separate project (which is usually a bad idea and is not recommended). \end{itemize} \subsection{Phony targets in a subdirectory} \label{section:PHONY-in-subdirs}\index{.PHONY}\index[target]{.PHONY}\index{.DEFAULT}\index[target]{.DEFAULT} Suppose you have a \verb+.PHONY: clean+ declared in your root \verb+OMakefile+ and both the root \verb+OMakefile+ and the \verb+OMakefile+ in some of the subdirectories contain \verb+clean:+ rules. In this case \begin{itemize} \item Running \verb+omake clean+ in the root directory will execute all the rules (each in the appropriate directory); \item Running \verb+omake clean+ in the subdirectory will execute just its local one, as well as the ones from the subdirectories of the current directory. \end{itemize} The above equally applies to the built-in \verb+.PHONY+ targets, including \hypertargn{.DEFAULT}. Namely, if \OMake{} is executed (without argument) in the root directory of a project, all the \verb+.DEFAULT+ targets in the project will be built. On the other hand, when \OMake{} is executed (without argument) in a subdirectory, only the \verb+.DEFAULT+ targets defined in and under that subdirectory will be built. The following Section explains the underlying semantics that gives rise to the above behavior. \subsection{Hierarchy of \code{.PHONY} targets} \label{section:PHONY-hierarchy}\index{.PHONY}\index[target]{.PHONY} When the the root \verb+OMakefile+ contains a \verb+.PHONY: clean+ directive, it creates: \begin{itemize} \item A ``global'' phony target \verb+/.PHONY/clean+ (note the leading ``\verb+/+''); \item A ``relative'' phony target attached to the current directory --- \verb+.PHONY/clean+ (note the lack of the leading ``\verb+/+''); \item A dependency \verb+/.PHONY/clean: .PHONY/clean+. \end{itemize} All the \verb+clean: ...+ rules in the root \verb+OMakefile+ following this \verb+.PHONY: clean+ declaration would be interpreted as rules for the \verb+.PHONY/clean+ target. Now when \OMake{} then comes across a \verb+.SUBDIRS: foo+ directive (when it is in scope of the above \verb+.PHONY: clean+ declaration), it does the following: \begin{itemize} \item Creates a new \verb+.PHONY/foo/clean+ ``relative'' phony target; \item Creates the dependency \verb+.PHONY/clean: .PHONY/foo/clean+; \item Processes the body of the \verb+.SUBDIRS: foo+ directive, or reads the \verb+foo/OMakefile+ file, if the body is empty. While doing that, it interprets its instructions relative to the \verb+foo+ directory. In particular, all the \verb+clean: ...+ rules will be taken to apply to \verb+.PHONY/foo/clean+. \end{itemize} Now when you run \verb+omake clean+ in the root directory of the project, it is interpreted as \verb+omake .PHONY/clean+ (similar to how it happens with the normal targets), so both the rules for \verb+.PHONY/clean+ are executed and the rules for its dependency \verb+.PHONY/foo/clean+. Running \verb+(cd foo; omake clean)+ is, as for normal targets, equivalent to running \verb+omake .PHONY/foo/clean+ and only those rules that apply to \verb+.PHONY/foo/clean+ will be executed. \section{Pathnames in rules} In rules, the targets and dependencies are first translated to \emph{file} values (as in the \hyperfun{file}). They are then translated to strings for the command line. This can cause some unexpected behavior. In the following example, the \hyperfun{absname} is the absolute pathname for the file \verb+a+, but the rule still prints the relative pathname. \begin{verbatim} .PHONY: demo demo: $(absname a) echo $< # omake demo a \end{verbatim} There is arguably a good reason for this. On Win32 systems, the \verb+/+ character is viewed as an ``option specifier.'' The pathname separator is the \verb+\+ character. \OMake{} translates the filenames automatically so that things work as expected on both systems. \begin{verbatim} demo: a/b echo $< # omake demo (on a Unix system) a/b # omake demo (on a Win32 system) a\b \end{verbatim} Sometimes you may wish that target strings to be passed literally to the commands in the rule. One way to do this is to specify them literally. \begin{verbatim} SRC = a/b $(absname c/d) demo: $(SRC) echo $(SRC) # omake demo (on a Win32 system) a/b c:\...\c\d \end{verbatim} Alternately, you might wish that filenames be automatically expanded to absolute pathnames. For example, this might be useful when parsing the \OMake{} output to look for errors. For this, you can use the \verb+--absname+ option (Section~\ref{option:--absname}). If you call \verb+omake+ with the \verb+--absname+ option, all filenames will be expanded to absolute names. \begin{verbatim} # omake --absname demo (on a Unix system) /home/.../a/b /home/.../c/d \end{verbatim} Alternately, the \verb+--absname+ option is scoped. If you want to use it for only a few rules, you can use the \hyperfun{OMakeFlags} to control how it is applied. \begin{verbatim} section OMakeFlags(--absname) demo: a echo $< # omake demo /home/.../a \end{verbatim} \textbf{N.B.} The \verb+--absname+ option is currently an experimental feature. % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % vim:tw=100:fo=tcq: % -*- omake-0.9.8.5/doc/src/osh-prologue.tex0000664000152300015230000000045310365116220015632 0ustar jyhjyh% % % \begin{Name}{1}{osh}{\authors}{Build Tools}{The OSH shell} \Prog{osh} is command interpreter based on the \Cmd{omake}{1} build system. \end{Name} % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- omake-0.9.8.5/doc/src/omake-grammar.tex0000664000152300015230000006476210604532757015761 0ustar jyhjyh% % A more formal description of the grammar. % \chapter{\OMake{} grammar} \label{chapter:grammar} \cutname{omake-grammar.html} \section{\OMake{} lexical conventions} The \OMake{} language is based on the language for GNU/BSD make, where there are few lexical conventions. Strictly speaking, there are no keywords, and few special symbols. \subsection{Comments} Comments begin with the \verb+#+ character and continue to the end-of-line. Text within a comment is unrestricted. Examples. \begin{verbatim} # This is a comment # This $comment contains a quote " character \end{verbatim} \subsection{Special characters} The following characters are special in some contexts. \begin{verbatim} $ ( ) , . = : " ' ` \ # \end{verbatim} \begin{itemize} \item \verb+$+ is used to denote a variable reference, or function application. \item Parentheses \verb+)+, \verb+(+ are argument deliminters. \item The command \verb+,+ is an argument separator. \item The period symbol \verb+.+ is a name separator. \item The equality symbol \verb+=+ denotes a definition. \item The colon symbol \verb+:+ is used to denote rules, and (optionally) to indicate that an expression is followed by an indented body. \item The quotation symbols \verb+"+ and \verb+'+ delimit character strings. \item The symbol \verb+#+ is the first character of a constant. \item The escape symbol \verb+\+ is special \emph{only when} followed by another special character. In this case, the special status of the second character is removed, and the sequence denotes the second character. Otherwise, the \verb+\+ is not special. Examples: \begin{itemize} \item \verb+\$+: the \verb+$+ character (as a normal character). \item \verb+\#+: the \verb+#+ character (as a normal character). \item \verb+\\+: the \verb+\+ character (as a normal character). \item \verb+c\:\Windows\moo\#boo+: the string \verb+c:\Windows\moo#boo+. \end{itemize} \end{itemize} \subsection{Identifiers} Identifiers (variable names) are drawn from the ASCII alphanumeric characters as well as \verb+_+, \verb+-+, \verb+~+, \verb+@+. Case is significant; the following identifiers are distinct: \verb+FOO+, \verb+Foo+, \verb+foo+. The identifier may begin with any of the valid characters, including digits. Using \verb+egrep+ notation, the regular expression for identifiers is defined as follows. \begin{verbatim} identifier ::= [-@~_A-Za-z0-9]+ \end{verbatim} The following are legal identifiers. \begin{verbatim} Xyz hello_world seventy@nine 79-32 Gnus~Gnats CFLAGS \end{verbatim} The following are not legal identifiers. \begin{verbatim} x+y hello&world \end{verbatim} \subsection{Command identifiers} The following words have special significance when they occur as the \emph{first} word of a program line. They are not otherwise special. \begin{verbatim} case catch class declare default do else elseif export extends finally if import include match open raise return section switch try value when while \end{verbatim} \subsection{Variable references} A variable reference is denoted with the \verb+$+ special character followed by an identifier. If the identifier name has more than one character, it must be enclosed in parentheses. The parenthesized version is most common. The following are legal variable references. \begin{verbatim} $(Xyz) $(hello_world) $(seventy@nine) $(79-32) $(Gnus~Gnats) $(CFLAGS) \end{verbatim} Single-character references also include several additional identifiers, including \verb+&*<^?][+. The following are legal single-character references. \begin{verbatim} $@ $& $* $< $^ $+ $? $[ $] $A $_ $a $b $x $1 $2 $3 \end{verbatim} Note that a non-parenthesized variable reference is limited to a single character, even if it is followed by additional legal identifier charqcters. Suppose the value of the \verb+$x+ variable is 17. The following examples illustrate evaluation. \begin{verbatim} $x evaluates to 17 foo$xbar evaluates to foo17bar foo$(x)bar evaluates to foo17bar \end{verbatim} The special sequence \verb+$$+ represents the character literal \verb+$+. That is, the two-character sequences \verb+\$+ and \verb+$$+ are normally equalivalent. \subsection{String constants} \label{section:quotes} Literal strings are defined with matching string delimiters. A left string delimiter begins with the dollar-sign \verb+$+, and a non-zero number of single-quote or double-quote characters. The string is terminated with a matching sequence of quotation symbols. The delimiter quotation may not be mixed; it must contain only single-quote characters, or double-quote characters. The following are legal strings. \begin{verbatim} $'Hello world' $"""printf("Hello world\n")""" $'''' Large "block" of text # spanning ''multiple'' lines'''' \end{verbatim} The string delimiters are \emph{not} included in the string constant. In the single-quote form, the contents of the string are interpreted verbatim--there are no special characters. The double-quote form permits expression evaluation within the string, denoted with the \verb+$+ symbol. The following are some examples. \begin{verbatim} X = Hello Y = $""$X world"" # Hello world Z = $'''$X world''' # $X world I = 3 W = $"6 > $(add $I, 2)" # 6 > 5 \end{verbatim} Note that quotation symbols without a leading \verb+$+ are not treated specially by \OMake{}. The quotation symbols is included in the sequence. \begin{verbatim} osh>println('Hello world') 'Hello world' osh>println($'Hello world') Hello world osh>X = Hello - : "Hello" : Sequence osh>println('$X world') Hello world \end{verbatim} \section{The \OMake{} grammar} \OMake{} programs are constructed from expressions and statements. Generally, an input program consists of a sequence of statements, each of which consists of one or more lines. Indentation is significant--if a statement consists of more than one line, the second and remaining lines (called the \emph{body}) are usually indented relative to the first line. \subsection{Expressions} The following table lists the syntax for expressions. \begin{tabular}{rcl} \emph{expr} & ::= &\\ & & \emph{(empty)}\\ & & -- Text (see note)\\ & | & \emph{text}\\ & | & \emph{string-literal}\\ & & -- Applications\\ & | & \emph{dollar} \verb++\\ & | & \emph{dollar} \verb+(+ \emph{pathid} \emph{args} \verb+)+\\ & & -- Concatenation\\ & | & \emph{expr} \emph{expr}\\ \\ \emph{dollar} & ::= & \verb+$+ | \verb+$`+ | \verb+$,+ \\ \emph{pathid} & ::= &\\ & & \emph{id}\\ & | & \emph{pathid} \verb+.+ \emph{id}\\ \\ \emph{arg} & ::= & \emph{expr} -- excluding special characters \verb+)(,+)\\ \emph{args} & ::= & \emph{(empty)} | \emph{arg}, ..., \emph{arg} \end{tabular} An \emph{expression} is a sequence composed of text, string-literals, variables references and function applications. Text is any sequence of non-special characters. \subsubsection{Inline applications} An \emph{application} is the application of a function to zero-or-more arguments. Inline applications begin with one of the ``dollar'' sequences \verb+$+, \verb+$`+, or \verb+$,+. The application itself is specified as a single character (in which case it is a variable reference), or it is a parenthesized list including a function identifier \emph{pathid}, and zero-or-more comma-separated arguments \emph{args}. The arguments are themselves a variant of the expressions where the special character \verb+)(,+ are not allowed (though any of these may be made non-special with the \verb+\+ escape character). The following are some examples of valid expressions. \begin{itemize} \item \verb+xyz abc+ The text sequence ``\verb+xyz abc+'' \item \verb+xyz$wabc+ A text sequence containing a reference to the variable \verb+w+. \item \verb+$(addsuffix .c, $(FILES))+ An application of the function \verb+addsuffix+, with first argument \verb+.c+, and second argument \verb+$(FILES)+. \item \verb+$(a.b.c 12)+ This is a method call. The variable \verb+a+ must evaluate to an object with a field \verb+b+, which must be an object with a method \verb+c+. This method is called with argument \verb+12+. \end{itemize} The additional dollar sequences specify evaluation order, \verb+$`+ (lazy) and \verb+$,+ (eager), as discussed in the section on dollar modifiers (Section~\ref{section:dollar}). \subsection{Statements and programs} The following table lists the syntax of statements and programs. \begin{tabular}{rcl} \emph{params} & ::= & \emph{(empty)} | \emph{id}, ..., \emph{id}\\ \\ \emph{target} & ::= & \emph{expr} -- excluding special character \verb+:+\\ \\ \emph{program} & ::= & \emph{stmt} \verb++ ... \verb++ \emph{stmt}\\ \\ \emph{stmt} & ::= &\\ & & -- Special forms\\ & | & \texttt{command} \emph{expr} \emph{optcolon-body}\\ & | & \texttt{command} ( \emph{args} ) \emph{optcolon-body}\\ & | & \texttt{catch} \emph{id} ( \emph{id} ) \emph{optcolon-body}\\ & | & \texttt{class} \emph{id} ... \emph{id}\\ \\ & & -- Variable definitions\\ & | & \emph{pathid} \{+\}= \emph{expr}\\ & | & \emph{pathid} \{+\}= \verb++ \emph{indented-body}\\ & | & \emph{pathid}\verb+[]+ \{+\}= \emph{expr}\\ & | & \emph{pathid}\verb+[]+ \{+\}= \verb++ \emph{indented-exprs}\\ \\ & & -- Functions\\ & | & \emph{pathid}(\emph{args}) \emph{optcolon-body}\\ & | & \emph{pathid}(\emph{params}) = \verb++ \emph{indented-body}\\ \\ & & -- Objects\\ & | & \emph{pathid} \verb+.+ \{+\}= \verb++ \emph{indented-body}\\ \\ & & -- Rules\\ & | & \emph{target} \texttt{:} \emph{target} \emph{rule-options} \verb++ \emph{indented-body}\\ & | & \emph{target} \texttt{::} \emph{target} \emph{rule-options} \verb++ \emph{indented-body}\\ & | & \emph{target} \texttt{:} \emph{target} \texttt{:} \emph{target} \emph{rule-options} \verb++ \emph{indented-body}\\ & | & \emph{target} \texttt{::} \emph{target} \texttt{:} \emph{target} \emph{rule-options} \verb++ \emph{indented-body}\\ \\ & & -- Shell commands\\ & | & \emph{expr}\\ \\ \emph{indented-body} & ::= & \emph{(empty)}\\ & | & \emph{indented-stmt} \verb++ ... \verb++ \emph{indented-stmt}\\ \\ \emph{indented-exprs} & ::= & \emph{(empty)}\\ & | & \emph{indented-expr} \verb++ ... \verb++ \emph{indented-expr}\\ \\ \emph{optcolon-body} & ::= & \emph{(empty)}\\ & | & \verb++ \emph{indented-body}\\ & | & \texttt{:} \verb++ \emph{indented-body}\\ \\ \emph{rule-option} & ::= & \emph{:id:} \emph{target}\\ \emph{rule-options} & ::= & \emph{(empty)}\\ & | & \emph{rule-options} \emph{rule-option} \end{tabular} \subsubsection{Special forms} The special forms include the following. \index{if}\index{elseif}\index{else}% \textbf{Conditionals} (see the section on conditionals --- Section~\ref{section:conditionals}). The \verb+if+ command should be followed by an expression that represents the condition, and an indented body. The conditional may be followed by \verb+elseif+ and \verb+else+ blocks. \begin{verbatim} if expr indented-body elseif expr indented-body ... else indented-body \end{verbatim} \index{match}% \textbf{matching} (see the section on matching --- Section~\ref{section:match}). The \verb+switch+ and \verb+match+ commands perform pattern-matching. All cases are optional. Each case may include \verb+when+ clauses that specify additional matching conditions. \begin{verbatim} match(expr) case expr indented-body when expr indented-body ... case expr indented-body default indented-body \end{verbatim} \index{try}% \textbf{Exceptions} (see also the \hyperfun{try} documentation). The \verb+try+ command introduces an exception handler. Each \verb+name+ is the name of a class. All cases, including \verb+catch+, \verb+default+, and \verb+finally+ are optional. The \verb+catch+ and \verb+default+ clauses contain optional \verb+when+ clauses. \begin{verbatim} try indented-body catch name1(id1) indented-body when expr indented-body ... catch nameN(idN) indented-body default indented-body finally indented-body \end{verbatim} The \verb+raise+ command is used to raise an exception. \begin{verbatim} raise expr \end{verbatim} \index{section}% \textbf{section} (see the \verb+section+ description in Section~\ref{section:section}). The \verb+section+ command introduces a new scope. \begin{verbatim} section indented-body \end{verbatim} \index{include}\index{open}% \textbf{include, open} (see also Section~\ref{section:include}). The \verb+include+ command performs file inclusion. The expression should evaluate to a file name. The \verb+open+ form is like include, but it performs the inclusion only if the inclusion has not already been performed. The \verb+open+ form is usually used to include library files. [jyh-- this behavior will change in subsequent revisions.] \begin{verbatim} include expr open expr \end{verbatim} \index{return}% \textbf{return} (see the description of functions in Section~\ref{section:functions}). The \verb+return+ command terminates execution and returns a value from a function. \begin{verbatim} return expr \end{verbatim} \index{value}% \textbf{value} (see the description of functions in Section~\ref{section:functions}). The \verb+value+ command is an identity. Syntactically, it is used to coerce a n expression to a statement. \begin{verbatim} value expr \end{verbatim} \index{export}% \textbf{export} (see the section on scoping --- Section~\ref{section:export}). The \verb+export+ command exports a environment from a nested block. If no arguments are given, the entire environment is exported. Otherwise, the export is limited to the specified identifiers. \begin{verbatim} export expr \end{verbatim} \index{while}% \textbf{while} (see also the \hyperfun{while} description). The \verb+while+ command introduces a \verb+while+ loop. \begin{verbatim} while expr indented-body \end{verbatim} \index{class}\index{extends}% \textbf{class, extends} (see the section on objects --- Section~\ref{section:objects}). The \verb+class+ command specifies an identifier for an object. The \verb+extends+ command specifies a parent object. \begin{verbatim} class id extends expr \end{verbatim} \subsubsection{Variable definitions} See the section on variables (Section~\ref{section:variables}). The simplest variable definition has the following syntax. The \verb+=+ form is a new definition. The += form appends the value to an existing definition. \begin{verbatim} id = expr id += expr osh> X = 1 - : "1" : Sequence osh> X += 7 - : "1" " " "7" : Sequence \end{verbatim} A multi-line form is allowed, where the value is computed by an indented body. \begin{verbatim} id {+}= indented-body osh> X = Y = HOME println(Y is $Y) getenv($Y) Y is HOME - : "/home/jyh" : Sequence \end{verbatim} The name may be qualified qith one of the \verb+public+, \verb+prtected+, or \verb+private+ modifiers. Public variables are dynamically scoped. Protected variables are fields in the current object. Private variables are statically scoped. [jyh: revision 0.9.9 introduces modular namespaces; the meaning of these qualifiers is slightly changed.] \begin{verbatim} public.X = $(addsuffix .c, 1 2 3) protected.Y = $(getenv HOME) private.Z = $"Hello world" \end{verbatim} \subsubsection{Applications and function definitions} See the section on functions (Section~\ref{section:functions}). A function-application statement is specified as a function name, followed a parenthesized list of comma-separated arguments. \begin{verbatim} osh> println($"Hello world") osh> FILES = 1 2 3 - : 1 2 3 osh> addsuffix(.c, $(FILES)) - : 1.c 2.c 3.c # The following forms are equivalent osh> value $(println $"Hello world") osh> value $(addsuffix .c, $(FILES)) - : 1.c 2.c 3.c \end{verbatim} If the function application has a body, the body is passed (lazily) to the function as its first argument. [jyh: in revision 0.9.8 support is incomplete.] When using \verb+osh+, the application must be followed by a colon \verb+:+ to indicate that the application has a body. \begin{verbatim} # In its 3-argument form, the foreach function takes # a body, a variable, and an array. The body is evaluated # for each element of the array, with the variable bound to # the element value. # # The colon is required only for interactive sessions. osh> foreach(x, 1 2 3): add($x, 1) - : 2 3 4 \end{verbatim} Functions are defined in a similar form, where the parameter list is specified as a comma-separated list of identifiers, and the body of the function is indented. \begin{verbatim} osh> f(i, j) = add($i, $j) - : osh> f(3, 7) - : 10 : Int \end{verbatim} \subsubsection{Objects} See the section on objects (Section~\ref{section:objects}). Objects are defined as an identifier with a terminal period. The body of the object is indented. \begin{verbatim} Obj. = class Obj X = 1 Y = $(sub $X, 12) new(i, j) = X = $i Y = $j value $(this) F() = add($X, $Y) println($Y) \end{verbatim} The body of the object has the usual form of an indented body, but new variable definitions are added to the object, not the global environment. The object definition above defines an object with (at least) the fields \verb+X+ and \verb+Y+, and methods \verb+new+ and \verb+F+. The name of the object is defined with the \verb+class+ command as \verb+Obj+. The \verb+Obj+ itself has fields \verb+X = 1+ and \verb+Y = -11+. The \verb+new+ method has the typical form of a constructor-style method, where the fields of the object are initialized to new values, and the new object returned (\verb+$(this)+ refers to the current object). The \verb+F+ method returns the sum of the two fields \verb+X+ and \verb+Y+. When used in an object definition, the += form adds the new definitions to an existing object. \begin{verbatim} pair. = x = 1 y = 2 pair. += y = $(add $y, 3) # pair now has fields (x = 1, and y = 5) \end{verbatim} The \verb+extends+ form specifies inheritance. Multiple inheritance is allowed. At evaluation time, the \verb+extends+ directive performs inclusion of the entire parent object. \begin{verbatim} pair. = x = 1 y = 2 depth. = z = 3 zoom(dz) = z = $(add $z, $(dz)) return $(this) triple. = extends $(pair) extends $(depth) crazy() = zoom($(mul $x, $y)) \end{verbatim} In this example, the \verb+triple+ object has three fields x, y, and z; and two methods \verb+zoom+ and \verb+crazy+. \subsubsection{Rules} See the chapter on rules (Chapter~\ref{chapter:rules}). A rule has the following parts. \begin{enumerate} \item A sequence of targets; \item one or two colons; \item a sequence of \emph{dependencies} and \emph{rule options}; \item and an indented body. \end{enumerate} The targets are the files to be built, and the dependencies are the files it depends on. If two colons are specified, it indicates that there may be multiple rules to build the given targets; otherwise only one rule is allowed. If the target contains a \verb+%+ character, the rule is called \emph{implicit}, and is considered whenever a file matching that pattern is to be built. For example, the following rule specifies a default rule for compiling OCaml files. \begin{verbatim} %.cmo: %.ml %.mli $(OCAMLC) -c $< \end{verbatim} This rule would be consulted as a default way of building any file with a \verb+.cmo+ suffix. The dependencies list is also constructed based on the pattern match. For example, if this rule were used to build a file \verb+foo.cmo+, then the dependency list would be \verb+foo.ml foo.mli+. There is also a three-part version of a rule, where the rule specification has three parts. \begin{verbatim} targets : patterns : dependencies rule-options indented-body \end{verbatim} In this case, the patterns \emph{must} contain a single \verb+%+ character. Three-part rules are also considered \emph{implicit}. For example, the following defines a default rule for the \verb+clean+ target. \begin{verbatim} .PHONY: clean clean: %: rm -f *$(EXT_OBJ) *$(EXT_LIB) \end{verbatim} Three-part implicit rules are inherited by the subdirectories in the exact same way as with the usual two-part implicit rules. There are several special targets, including the following. \begin{itemize} \item \verb+.PHONY+ : declare a ``phony'' target. That is, the target does not correspond to a file. \item \verb+.ORDER+ : declare a rule for dependency ordering. \item \verb+.INCLUDE+ : define a rule to generate a file for textual inclusion. \item \verb+.SUBDIRS+ : specify subdirectories that are part of the project. \item \verb+.SCANNER+ : define a rule for dependency scanning. \end{itemize} There are several rule options. \begin{itemize} \item \verb+:optional: dependencies+ the subsequent dependencies are optional, it is acceptable if they do not exist. \item \verb+:exists: dependencies+ the subsequent dependencies must exist, but changes to not affect whether this rule is considered out-of-date. \item \verb+:effects: targets+ the subsequent files are side-effects of the rule. That is, they may be created and/or modified while the rule is executing. Rules with overlapping side-effects are never executed in parallel. \item \verb+:scanner: name+ the subsequent name is the name of the \verb+.SCANNER+ rule for the target to be built. \item \verb+:value: expr+ the \verb+expr+ is a ``value'' dependency. The rule is considered out-of-date whenever the value of the \verb+expr+ changes. \end{itemize} Several variables are defined during rule evaluation. % We use \char* even for printable chars for consistency. \begin{itemize} \item \verb+$*+\index{\char36\char42}\index[var]{\char42} : the name of the target with the outermost suffix removed. \item \verb+$>+\index{\char36\char62}\index[var]{\char62} : the name of the target with all suffixes removed. \item \verb+$@+\index{\char36\char64}\index[var]{\char64} : the name of the target. \item \verb+$^+\index{\char36\char94}\index[var]{\char94} : the explicit file dependencies, sorted alphabetically, with duplicates removed. \item \verb.$+.\index{\char36\char43}\index[var]{\char43} : all explicit file dependencies, with order preserved. \item \verb+$<+\index{\char36\char60}\index[var]{\char60} : the first explicit file dependency. \item \verb+$&+\index{\char36\char38}\index[var]{\char38} : the free values of the rule (often used in \verb+:value:+ dependencies). \end{itemize} \subsubsection{Shell commands} See the chapter on shell commands (Chapter~\ref{chapter:shell}). While it is possible to give a precise specification of shell commands, the informal description is simpler. Any non-empty statement where each prefix is \emph{not} one of the other statements, is considered to be a shell command. Here are some examples. \begin{verbatim} ls -- shell command echo Hello world > /dev/null -- shell command echo(Hello world) -- function application echo(Hello world) > /dev/null -- syntax error echo Hello: world -- rule X=1 getenv X -- variable definition env X=1 getenv X -- shell command if true -- special form \if true -- shell command "if" true -- shell command \end{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Evaluation % \section{Dollar modifiers} \label{section:dollar} Inline applications have a function and zero-or-more arguments. Evaluation is normally strict: when an application is evaluated, the function identifier is evaluated to a function, the arguments are then evaluated and the function is called with the evaluated arguments. The additional ``dollar'' sequences specify additional control over evaluation. The token \verb+$`+ defines a ``lazy'' application, where evaluation is delayed until a value is required. The \verb+$,+ sequence performs an ``eager'' application within a lazy context. To illustrate, consider the expression \verb+$(addsuffix .c, $(FILES))+. The \verb+addsuffix+ function appends its first argument to each value in its second argument. The following \verb+osh+ interaction demonstrates the normal bahavior. \begin{verbatim} osh> FILES[] = a b c - : osh> X = $(addsuffix .c, $(FILES)) - : osh> FILES[] = 1 2 3 # redefine FILES - : osh> println($"$X") # force the evaluation and print a.c b.c c.c \end{verbatim} When the lazy operator \verb+$`+ is used instead, evaluation is delayed until it is printed. In the following sample, the value for \verb+X+ has changed to the \verb+$(apply ..)+ form, but otherwise the result is unchanged because it it printed immediately. \begin{verbatim} osh> FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> println($"$X") # force the evaluation and print a.c b.c c.c \end{verbatim} However, consider what happens if we redefine the \verb+FILES+ variable after the definition for \verb+X+. In the following sample, the result changes because evaluation occurs \emph{after} the values for \verb+FILES+ has been redefined. \begin{verbatim} osh> FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> SUF = .x osh> FILES[] = 1 2 3 osh> println($"$X") # force the evaluation and print 1.x 2.x 3.x \end{verbatim} In some cases, more explicit control is desired over evaluation. For example, we may wish to evaluate \verb+SUF+ early, but allow for changes to the \verb+FILES+ variable. The \verb+$,(SUF)+ expression forces early evaluation. \begin{verbatim} osh> FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $,(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> SUF = .x osh> FILES[] = 1 2 3 osh> println($"$X") # force the evaluation and print 1.c 2.c 3.c \end{verbatim} % -*- % Local Variables: % Mode: LaTeX % fill-column: 100 % TeX-master: "paper" % TeX-command-default: "LaTeX/dvips Interactive" % End: % -*- % vim:tw=100:fo=tcq: omake-0.9.8.5/doc/html/0000775000152300015230000000000010660137253012647 5ustar jyhjyhomake-0.9.8.5/doc/html/previous_motif.gif0000664000152300015230000000047510524166566016426 0ustar jyhjyhGIF89añp€ÿÿp€!þ# Imported from XPM image: prev.xpm!ù,@çÜ63333Æ# „B Ã0 AÀ0 Ã0 Ã0 À0 ƒÁ`0 ƒÁ`0 ƒA  ƒ €Á`0 ƒ`00000000000000000000000000000000000000000000  000 0000000000000000000000000000000`À€ ;omake-0.9.8.5/doc/html/omake_lists.html0000664000152300015230000000566010573065440016057 0ustar jyhjyh The OMake build system: Mailing Lists
OMake Home
Documentation
Download
Publications
Mailing lists
Users and projects
Bugzilla
Browse sources
Changelog summary, verbose

OMake Mailing Lists

We mailtain several mailing lists related to OMake.
omake-0.9.8.5/doc/html/index.html0000664000152300015230000001074410655737107014662 0ustar jyhjyh The OMake build system
OMake Home
Documentation
Download
Publications
Mailing lists
Users and projects
Bugzilla
Browse sources
Changelog summary, verbose

News

Overview

OMake is a build system designed for scalability and portability. It uses a syntax similar to make utilities you may have used, but it features many additional enhancements, including the following.

  • Support for projects spanning several directories or directory hierarchies.
  • Fast, reliable, automated, scriptable dependency analysis using MD5 digests, with full support for incremental builds.
  • Dependency analysis takes the command lines into account — whenever the command line used to build a target changes, the target is considered out-of-date.
  • Fully scriptable, includes a library that providing support for standard tasks in C, C++, OCaml, and LaTeX projects, or a mixture thereof.

    Often, a configuration file is as simple as a single line

    .DEFAULT: $(CProgram prog, foo bar baz)
    which states that the program "prog" is built from the files foo.c, bar.c, and baz.c. This one line will also invoke the default standard library scripts for discovering implicit dependencies in C files (such as dependencies on included header files).
  • Full native support for rules that build several files at once.
  • Portability: omake provides a uniform interface on Linux/Unix (including 64-bit architectures), Win32, Cygwin, Mac OS X, and other platforms that are supported by OCaml.
  • Built-in functions that provide the most common features of programs like grep, sed, and awk. These are especially useful on Win32.
  • Active filesystem monitoring, where the build automatically restarts whenever you modify a source file. This can be very useful during the edit/compile cycle.
  • A built-in command-interpreter osh that can be used interactively.

OMake preserves the style of syntax and rule definitions used in Makefiles, making it easy to port your project to OMake. There is no need to code in Perl (cons), or Python (scons). However, there are a few things to keep in mind:

  1. Indentation is significant, but tabs are not required.
  2. The OMake language is functional: functions are first-class and there are no side-effects apart from I/O.
  3. Scoping is dynamic.

OMake is licensed under a mixture of the GNU GPL license (OMake engine itself) and the MIT-like license (default configuration files).

OMake is part of the Mojave and MetaPRL projects.

omake-0.9.8.5/doc/html/omake-option-index.html0000664000152300015230000001251110564740521017245 0ustar jyhjyh Index of options
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Index of options

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake_papers.html0000664000152300015230000001055210573065440016207 0ustar jyhjyh The OMake build system: Publications
OMake Home
Documentation
Download
Publications
Mailing lists
Users and projects
Bugzilla
Browse sources
Changelog summary, verbose

OMake Publications

OMake: Designing a scalable build process.

Jason Hickey and Aleksey Nogin.
OMake: Designing a scalable build process.
In Luciano Baresi and Reiko Heckel, editors, Fundamental Approaches to Software Engineering, 9th International Conference, FASE 2006, volume 3922 of Lecture Notes in Computer Science, pages 63–78. Springer, 2006.
An extended version is available as California Institute of Technology technical report CaltechCSTR:2006.001.

Refereed version: PDF, PostScript, Electronic Edition
Technical report version: PDF, PostScript, CaltechCSTR Entry

Abstract

Modern software codebases are frequently large, heterogeneous, and constantly evolving. The languages and tools for software construction, including code builds and configuration management, have not been well-studied. Developers are often faced with using 1) older tools (like make) that do not scale well, 2) custom build scripts that tend to be fragile, or 3) proprietary tools that are not portable.

In this paper, we study the build issue as a domain-specific programming problem. There are a number of challenges that are unique to the domain of build systems. We argue that a central goal is compositionality—that is, it should be possible to specify a software component in isolation and add it to a project with an assurance that the global specification will not be compromised. The next important goal is to cover the full range of complexity—from allowing very concise specifications for the most common cases to providing the flexibility to encompass projects with unusual needs. Dependency analysis, which is a prerequisite for incremental builds, must be automated in order to achieve compositionality an reliability; it also spans the full range of complexity.

We develop a language for describing software builds and configuration. We also develop an implementation (called OMake), that addresses all the above challenges efficiently and portably. It also provides a number of features that help streamline the edit/compile development cycle.

OMake is freely available under the GNU General Public License, and is actively being used in several large projects.

omake-0.9.8.5/doc/html/omake-build-examples.html0000664000152300015230000011063110632105027017535 0ustar jyhjyh Additional build examples
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 3  Additional build examples

Let's explain the OMake build model a bit more. One issue that dominates this discussion is that OMake is based on global project analysis. That means you define a configuration for the entire project, and you run one instance of omake.

For single-directory projects this doesn't mean much. For multi-directory projects it means a lot. With GNU make, you would usually invoke the make program recursively for each directory in the project. For example, suppose you had a project with some project root directory, containing a directory of sources src, which in turn contains subdirectories lib and main. So your project looks like this nice piece of ASCII art.

    my_project/
    |--> Makefile
    `--> src/
         |---> Makefile
         |---> lib/
         |     |---> Makefile
         |     `---> source files...
         `---> main/
               |---> Makefile
               `---> source files...

Typically, with GNU make, you would start an instance of make in my_project/; this would in term start an instance of make in the src/ directory; and this would start new instances in lib/ and main/. Basically, you count up the number of Makefiles in the project, and that is the number of instances of make processes that will be created.

The number of processes is no big deal with today's machines (sometimes contrary the the author's opinion, we no longer live in the 1970s). The problem with the scheme was that each make process had a separate configuration, and it took a lot of work to make sure that everything was consistent. Furthermore, suppose the programmer runs make in the main/ directory, but the lib/ is out-of-date. In this case, make would happily crank away, perhaps trying to rebuild files in lib/, perhaps just giving up.

With OMake this changes entirely. Well, not entirely. The source structure is quite similar, we merely add some Os to the ASCII art.

    my_project/
    |--> OMakeroot   (or Root.om)
    |--> OMakefile
    `--> src/
         |---> OMakefile
         |---> lib/
         |     |---> OMakefile
         |     `---> source files...
         `---> main/
               |---> OMakefile
               `---> source files...

The role of each <dir>/OMakefile plays the same role as each <dir>/Makefile: it describes how to build the source files in <dir>. The OMakefile retains much of syntax and structure of the Makefile, but in most cases it is much simpler.

One minor difference is the presence of the OMakeroot in the project root. The main purpose of this file is to indicate where the project root is in the first place (in case omake is invoked from a subdirectory). The OMakeroot serves as the bootstrap file; omake starts by reading this file first. Otherwise, the syntax and evaluation of OMakeroot is no different from any other OMakefile.

The big difference is that OMake performs a global analysis. Here is what happens when omake starts.

  1. omake locates that OMakeroot file, and reads it.
  2. Each OMakefile points to its subdirectory OMakefiles using the .SUBDIRS target. For example, my_project/OMakefile has a rule,
        .SUBDIRS: src
    

    and the my_project/src/OMakefile has a rule,

        .SUBDIRS: lib main
    

    omake uses these rules to read and evaluate every OMakefile in the project. Reading and evaluation is fast. This part of the process is cheap.

  3. Now that the entire configuration is read, omake determines which files are out-of-date (using a global analysis), and starts the build process. This may take a while, depending on what exactly needs to be done.

There are several advantages to this model. First, since analysis is global, it is much easier to ensure that the build configuration is consistent–after all, there is only one configuration. Another benefit is that the build configuration is inherited, and can be re-used, down the hierarchy. Typically, the root OMakefile defines some standard boilerplate and configuration, and this is inherited by subdirectories that tweak and modify it (but do not need to restate it entirely). The disadvantage of course is space, since this is global analysis after all. In practice rarely seems to be a concern; omake takes up much less space than your web browser even on large projects.

Some notes to the GNU/BSD make user.

  • OMakefiles are a lot like Makefiles. The syntax is similar, and there many of the builtin functions are similar. However, the two build systems are not the same. Some evil features (in the authors' opinions) have been dropped in OMake, and some new features have been added.
  • OMake works the same way on all platforms, including Win32. The standard configuration does the right thing, but if you care about porting your code to multiple platforms, and you use some tricky features, you may need to condition parts of your build config on the $(OSTYPE) variable.
  • A minor issue is that OMake dependency analysis is based on MD5 file digests. That is, dependencies are based on file contents, not file modification times. Say goodbye to false rebuilds based on spurious timestamp changes and mismatches between local time and fileserver time.

3.1  OMakeroot vs. OMakefile

Before we begin with examples, let's ask the first question, “What is the difference between the project root OMakeroot and OMakefile?” A short answer is, there is no difference, but you must have an OMakeroot file (or Root.om file).

However, the normal style is that OMakeroot is boilerplate and is more-or-less the same for all projects. The OMakefile is where you put all your project-specific stuff.

To get started, you don't have to do this yourself. In most cases you just perform the following step in your project root directory.

  • Run omake --install in your project root.

This will create the initial OMakeroot and OMakefile files that you can edit to get started.

3.2  An example C project

To begin, let's start with a simple example. Let's say that we have a full directory tree, containing the following files.

    my_project/
    |--> OMakeroot
    |--> OMakefile
    `--> src/
         |---> OMakefile
         |---> lib/
         |     |---> OMakefile
         |     |---> ouch.c
         |     |---> ouch.h
         |     `---> bandaid.c
         `---> main/
               |---> OMakefile
               |---> horsefly.c
               |---> horsefly.h
               `---> main.c

Here is an example listing.

my_project/OMakeroot:
    # Include the standard configuration for C applications
    open build/C
    
    # Process the command-line vars
    DefineCommandVars()
    
    # Include the OMakefile in this directory.
    .SUBDIRS: .

my_project/OMakefile:
    # Set up the standard configuration
    CFLAGS += -g

    # Include the src subdirectory
    .SUBDIRS: src

my_project/src/OMakefile:
    # Add any extra options you like
    CFLAGS += -O2

    # Include the subdirectories
    .SUBDIRS: lib main

my_project/src/lib/OMakefile:
    # Build the library as a static library.
    # This builds libbug.a on Unix/OSX, or libbug.lib on Win32.
    # Note that the source files are listed _without_ suffix.
    StaticCLibrary(libbug, ouch bandaid)

my_project/src/main/OMakefile:
    # Some files include the .h files in ../lib
    INCLUDES += ../lib

    # Indicate which libraries we want to link against.
    LIBS[] +=
        ../lib/libbug

    # Build the program.
    # Builds horsefly.exe on Win32, and horsefly on Unix.
    # The first argument is the name of the executable.
    # The second argument is an array of object files (without suffix)
    # that are part of the program.
    CProgram(horsefly, horsefly main)

    # Build the program by default (in case omake is called
    # without any arguments).  EXE is defined as .exe on Win32,
    # otherwise it is empty.
    .DEFAULT: horsefly$(EXE)

Most of the configuration here is defined in the file build/C.om (which is part of the OMake distribution). This file takes care of a lot of work, including:

  • Defining the StaticCLibrary and CProgram functions, which describe the canonical way to build C libraries and programs.
  • Defining a mechanism for scanning each of the source programs to discover dependencies. That is, it defines .SCANNER rules for C source files.

Variables are inherited down the hierarchy, so for example, the value of CFLAGS in src/main/OMakefile is “-g -O2”.

3.3  An example OCaml project

Let's repeat the example, assuming we are using OCaml instead of C. This time, the directory tree looks like this.

    my_project/
    |--> OMakeroot
    |--> OMakefile
    `--> src/
         |---> OMakefile
         |---> lib/
         |     |---> OMakefile
         |     |---> ouch.ml
         |     |---> ouch.mli
         |     `---> bandaid.ml
         `---> main/
               |---> OMakefile
               |---> horsefly.ml
               |---> horsefly.mli
               `---> main.ml

The listing is only a bit different.

my_project/OMakeroot:
    # Include the standard configuration for OCaml applications
    open build/OCaml
    
    # Process the command-line vars
    DefineCommandVars()
    
    # Include the OMakefile in this directory.
    .SUBDIRS: .

my_project/OMakefile:
    # Set up the standard configuration
    OCAMLFLAGS += -Wa

    # Do we want to use the bytecode compiler,
    # or the native-code one?  Let's use both for
    # this example.
    NATIVE_ENABLED = true
    BYTE_ENABLED = true

    # Include the src subdirectory
    .SUBDIRS: src

my_project/src/OMakefile:
    # Include the subdirectories
    .SUBDIRS: lib main

my_project/src/lib/OMakefile:
    # Let's do aggressive inlining on native code
    OCAMLOPTFLAGS += -inline 10

    # Build the library as a static library.
    # This builds libbug.a on Unix/OSX, or libbug.lib on Win32.
    # Note that the source files are listed _without_ suffix.
    OCamlLibrary(libbug, ouch bandaid)

my_project/src/main/OMakefile:
    # These files depend on the interfaces in ../lib
    OCAMLINCLUDES += ../lib

    # Indicate which libraries we want to link against.
    OCAML_LIBS[] +=
        ../lib/libbug

    # Build the program.
    # Builds horsefly.exe on Win32, and horsefly on Unix.
    # The first argument is the name of the executable.
    # The second argument is an array of object files (without suffix)
    # that are part of the program.
    OCamlProgram(horsefly, horsefly main)

    # Build the program by default (in case omake is called
    # without any arguments).  EXE is defined as .exe on Win32,
    # otherwise it is empty.
    .DEFAULT: horsefly$(EXE)

In this case, most of the configuration here is defined in the file build/OCaml.om. In this particular configuration, files in my_project/src/lib are compiled aggressively with the option -inline 10, but files in my_project/src/lib are compiled normally.

3.4  Handling new languages

The previous two examples seem to be easy enough, but they rely on the OMake standard library (the files build/C and build/OCaml) to do all the work. What happens if we want to write a build configuration for a language that is not already supported in the OMake standard library?

For this example, let's suppose we are adopting a new language. The language uses the standard compile/link model, but is not in the OMake standard library. Specifically, let's say we have the following setup.

  • Source files are defined in files with a .cat suffix (for Categorical Abstract Terminology).
  • .cat files are compiled with the catc compiler to produce .woof files (Wicked Object-Oriented Format).
  • .woof files are linked by the catc compiler with the -c option to produce a .dog executable (Digital Object Group). The catc also defines a -a option to combine several .woof files into a library.
  • Each .cat can refer to other source files. If a source file a.cat contains a line open b, then a.cat depends on the file b.woof, and a.cat must be recompiled if b.woof changes. The catc function takes a -I option to define a search path for dependencies.

To define a build configuration, we have to do three things.

  1. Define a .SCANNER rule for discovering dependency information for the source files.
  2. Define a generic rule for compiling a .cat file to a .woof file.
  3. Define a rule (as a function) for linking .woof files to produce a .dog executable.

Initially, these definitions will be placed in the project root OMakefile.

3.4.1  Defining a default compilation rule

Let's start with part 2, defining a generic compilation rule. We'll define the build rule as an implicit rule. To handle the include path, we'll define a variable CAT_INCLUDES that specifies the include path. This will be an array of directories. To define the options, we'll use a lazy variable (Section 7.5). In case there are any other standard flags, we'll define a CAT_FLAGS variable.

   # Define the catc command, in case we ever want to override it
   CATC = catc

   # The default flags are empty
   CAT_FLAGS =
   
   # The directories in the include path (empty by default)
   INCLUDES[] =

   # Compute the include options from the include path
   PREFIXED_INCLUDES[] = $`(mapprefix -I, $(INCLUDES))

   # The default way to build a .woof file
   %.woof: %.cat
       $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) -c $<

The final part is the build rule itself, where we call the catc compiler with the include path, and the CAT_FLAGS that have been defined. The $< variable represents the source file.

3.4.2  Defining a rule for linking

For linking, we'll define another rule describing how to perform linking. Instead of defining an implicit rule, we'll define a function that describes the linking step. The function will take two arguments; the first is the name of the executable (without suffix), and the second is the files to link (also without suffixes). Here is the code fragment.

    # Optional link options
    CAT_LINK_FLAGS =

    # The function that defines how to build a .dog program
    CatProgram(program, files) =
        # Add the suffixes
        file_names = $(addsuffix .woof, $(files))
        prog_name = $(addsuffix .dog, $(files))

        # The build rule
        $(prog_name): $(file_names)
            $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -o $@ $+

        # Return the program name
        value $(prog_name)

The CAT_LINK_FLAGS variable is defined just in case we want to pass additional flags specific to the link step. Now that this function is defined, whenever we want to define a rule for building a program, we simply call the rule. The previous implicit rule specifies how to compile each source file, and the CatProgram function specifies how to build the executable.

    # Build a rover.dog program from the source
    # files neko.cat and chat.cat.
    # Compile it by default.
    .DEFAULT: $(CatProgram rover, neko chat)

3.4.3  Dependency scanning

That's it, almost. The part we left out was automated dependency scanning. This is one of the nicer features of OMake, and one that makes build specifications easier to write and more robust. Strictly speaking, it isn't required, but you definitely want to do it.

The mechanism is to define a .SCANNER rule, which is like a normal rule, but it specifies how to compute dependencies, not the target itself. In this case, we want to define a .SCANNER rule of the following form.

    .SCANNER: %.woof: %.cat
        <commands>

This rule specifies that a .woof file may have additional dependencies that can be extracted from the corresponding .cat file by executing the <commands>. The result of executing the <commands> should be a sequence of dependencies in OMake format, printed to the standard output.

As we mentioned, each .cat file specifies dependencies on .woof files with an open directive. For example, if the neko.cat file contains a line open chat, then neko.woof depends on chat.woof. In this case, the <commands> should print the following line.

    neko.woof: chat.woof

For an analogy that might make this clearer, consider the C programming language, where a .o file is produced by compiling a .c file. If a file foo.c contains a line like #include "fum.h", then foo.c should be recompiled whenever fum.h changes. That is, the file foo.o depends on the file fum.h. In the OMake parlance, this is called an implicit dependency, and the .SCANNER <commands> would print a line like the following.

    foo.o: fum.h

Now, returning to the animal world, to compute the dependencies of neko.woof, we should scan neko.cat, line-by-line, looking for lines of the form open <name>. We could do this by writing a program, but it is easy enough to do it in omake itself. We can use the builtin awk function to scan the source file. One slight complication is that the dependencies depend on the INCLUDE path. We'll use the find-in-path function to find them. Here we go.

    .SCANNER: %.woof: %.cat
        section
            # Scan the file
            deps[] =
            awk($<)
            case $'^open'
                deps[] += $2
                export

            # Remove duplicates, and find the files in the include path
            deps = $(find-in-path $(INCLUDES), $(set $(deps)))

            # Print the dependencies
            println($"$@: $(deps)")

Let's look at the parts. First, the entire body is defined in a section because we are computing it internally, not as a sequence of shell commands.

We use the deps variable to collect all the dependencies. The awk function scans the source file ($<) line-by-line. For lines that match the regular expression ^open (meaning that the line begins with the word open), we add the second word on the line to the deps variable. For example, if the input line is open chat, then we would add the chat string to the deps array. All other lines in the source file are ignored.

Next, the $(set $(deps)) expression removes any duplicate values in the deps array (sorting the array alphabetically in the process). The find-in-path function then finds the actual location of each file in the include path.

The final step is print the result as the string $"$@: $(deps)" The quotations are added to flatten the deps array to a simple string.

3.4.4  Pulling it all together

To complete the example, let's pull it all together into a single project, much like our previous example.

    my_project/
    |--> OMakeroot
    |--> OMakefile
    `--> src/
         |---> OMakefile
         |---> lib/
         |     |---> OMakefile
         |     |---> neko.cat
         |     `---> chat.cat
         `---> main/
               |---> OMakefile
               `---> main.cat

The listing for the entire project is as follows. Here, we also include a function CatLibrary to link several .woof files into a library.

my_project/OMakeroot:
    # Process the command-line vars
    DefineCommandVars()
    
    # Include the OMakefile in this directory.
    .SUBDIRS: .

my_project/OMakefile:
   ########################################################################
   # Standard config for compiling .cat files
   #

   # Define the catc command, in case we ever want to override it
   CATC = catc

   # The default flags are empty
   CAT_FLAGS =
   
   # The directories in the include path (empty by default)
   INCLUDES[] =

   # Compute the include options from the include path
   PREFIXED_INCLUDES[] = $`(mapprefix -I, $(INCLUDES))

   # Dependency scanner for .cat files
   .SCANNER: %.woof: %.cat
        section
            # Scan the file
            deps[] =
            awk($<)
            case $'^open'
                deps[] += $2
                export

            # Remove duplicates, and find the files in the include path
            deps = $(find-in-path $(INCLUDES), $(set $(deps)))

            # Print the dependencies
            println($"$@: $(deps)")

   # The default way to compile a .cat file
   %.woof: %.cat
       $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) -c $<

   # Optional link options
   CAT_LINK_FLAGS =

   # Build a library for several .woof files
   CatLibrary(lib, files) =
       # Add the suffixes
       file_names = $(addsuffix .woof, $(files))
       lib_name = $(addsuffix .woof, $(lib))

       # The build rule
       $(lib_name): $(file_names)
           $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -a $@ $+

       # Return the program name
       value $(lib_name)

   # The function that defines how to build a .dog program
   CatProgram(program, files) =
       # Add the suffixes
       file_names = $(addsuffix .woof, $(files))
       prog_name = $(addsuffix .dog, $(program))

       # The build rule
       $(prog_name): $(file_names)
           $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -o $@ $+

       # Return the program name
       value $(prog_name)

   ########################################################################
   # Now the program proper
   #

   # Include the src subdirectory
   .SUBDIRS: src

my_project/src/OMakefile:
   .SUBDIRS: lib main

my_project/src/lib/OMakefile:
   CatLibrary(cats, neko chat)

my_project/src/main/OMakefile:
   # Allow includes from the ../lib directory
   INCLUDES[] += ../lib

   # Build the program
   .DEFAULT: $(CatProgram main, main ../cats)

Some notes. The configuration in the project OMakeroot defines the standard configuration, including the dependency scanner, the default rule for compiling source files, and functions for building libraries and programs.

These rules and functions are inherited by subdirectories, so the .SCANNER and build rules are used automatically in each subdirectory, so you don't need to repeat them.

3.4.5  Finishing up

At this point we are done, but there are a few things we can consider.

First, the rules for building cat programs is defined in the project OMakefile. If you had another cat project somewhere, you would need to copy the OMakeroot (and modify it as needed). Instead of that, you should consider moving the configuration to a shared library directory, in a file like Cat.om. That way, instead of copying the code, you could include the shared copy with an OMake command open Cat. The share directory should be added to your OMAKEPATH environment variable to ensure that omake knows how to find it.

Better yet, if you are happy with your work, consider submitting it as a standard configuration (by sending a request to omake@metaprl.org) so that others can make use of it too.

3.5  Collapsing the hierarchy, .SUBDIRS bodies

Some projects have many subdirectories that all have the same configuration. For instance, suppose you have a project with many subdirectories, each containing a set of images that are to be composed into a web page. Apart from the specific images, the configuration of each file is the same.

To make this more concrete, suppose the project has four subdirectories page1, page2, page3, and page4. Each contains two files image1.jpg and image2.jpg that are part of a web page generated by a program genhtml.

Instead of of defining a OMakefile in each directory, we can define it as a body to the .SUBDIRS command.

    .SUBDIRS: page1 page2 page3 page4
        index.html: image1.jpg image2jpg
            genhtml $+ > $@

The body of the .SUBDIRS is interpreted exactly as if it were the OMakefile, and it can contain any of the normal statements. The body is evaluated in the subdirectory for each of the subdirectories. We can see this if we add a statement that prints the current directory ($(CWD)).

    .SUBDIRS: page1 page2 page3 page4
        println($(absname $(CWD)))
        index.html: image1.jpg image2jpg
            genhtml $+ > $@
  # prints
    /home/jyh/.../page1
    /home/jyh/.../page2
    /home/jyh/.../page3
    /home/jyh/.../page4

3.5.1  Using glob patterns

Of course, this specification is quite rigid. In practice, it is likely that each subdirectory will have a different set of images, and all should be included in the web page. One of the easier solutions is to use one of the directory-listing functions, like glob or ls. The glob function takes a shell pattern, and returns an array of file with matching filenames in the current directory.

    .SUBDIRS: page1 page2 page3 page4
        IMAGES = $(glob *.jpg)
        index.html: $(IMAGES)
            genhtml $+ > $@

3.5.2  Simplified sub-configurations

Another option is to add a configuration file in each of the subdirectories that defines directory-specific information. For this example, we might define a file BuildInfo.om in each of the subdirectories that defines a list of images in that directory. The .SUBDIRS line is similar, but we include the BuildInfo file.

    .SUBDIRS: page1 page2 page3 page4
        include BuildInfo   # Defines the IMAGES variable

        index.html: $(IMAGES)
            genhtml $+ > $@

Where we might have the following configurations.

   page1/BuildInfo.om:
       IMAGES[] = image.jpg
   page2/BuildInfo.om:
       IMAGES[] = ../common/header.jpg winlogo.jpg
   page3/BuildInfo.om:
       IMAGES[] = ../common/header.jpg unixlogo.jpg daemon.jpg
   page4/BuildInfo.om:
       IMAGES[] = fee.jpg fi.jpg foo.jpg fum.jpg

3.5.3  Computing the subdirectory list

The other hardcoded specification is the list of subdirectories page1, ..., page4. Rather than editing the project OMakefile each time a directory is added, we could compute it (again with glob).

    .SUBDIRS: $(glob page*)
        index.html: $(glob *.jpg)
            genhtml $+ > $@

Alternately, the directory structure may be hierarchical. Instead of using glob, we could use the subdirs function, returns each of the directories in a hierarchy. For example, this is the result of evaluating the subdirs function in the omake project root. The P option, passed as the first argument, specifies that the listing is “proper,” it should not include the omake directory itself.

    osh> subdirs(P, .)
    - : <array
            /home/jyh/.../omake/mk : Dir
            /home/jyh/.../omake/RPM : Dir
            ...
            /home/jyh/.../omake/osx_resources : Dir>

Using subdirs, our example is now as follows.

    .SUBDIRS: $(subdirs P, .)
        index.html: $(glob *.jpg)
            genhtml $+ > $@

In this case, every subdirectory will be included in the project.

If we are using the BuildInfo.om option. Instead of including every subdirectory, we could include only those that contain a BuildInfo.om file. For this purpose, we can use the find function, which traverses the directory hierarchy looking for files that match a test expression. In our case, we want to search for files with the name BuildInfo.om. Here is an example call.

    osh> FILES = $(find . -name BuildInfo.om)
    - : <array
            /home/jyh/.../omake/doc/html/BuildInfo.om : File
            /home/jyh/.../omake/src/BuildInfo.om : File
            /home/jyh/.../omake/tests/simple/BuildInfo.om : File>
    osh> DIRS = $(dirof $(FILES))
    - : <array
            /home/jyh/.../omake/doc/html : Dir
            /home/jyh/.../omake/src : Dir
            /home/jyh/.../omake/tests/simple : Dir>

In this example, there are three BuildInfo.om files, in the doc/html, src, and tests/simple directories. The dirof function returns the directories for each of the files.

Returning to our original example, we modify it as follows.

    .SUBDIRS: $(dirof $(find . -name BuildInfo.om))
        include BuildInfo   # Defines the IMAGES variable

        index.html: $(IMAGES)
            genhtml $+ > $@

3.5.4  Temporary directories

Sometimes, your project may include temporary directories–directories where you place intermediate results. these directories are deleted whenever the project is cleanup up. This means, in particular, that you can't place an OMakefile in a temporary directory, because it will be removed when the directory is removed.

Instead, if you need to define a configuration for any of these directories, you will need to define it using a .SUBDIRS body.

    section
        CREATE_SUBDIRS = true

        .SUBDIRS: tmp
            # Compute an MD5 digest
            %.digest: %.comments
               echo $(digest $<) > $@

            # Extract comments from the source files
            %.comments: ../src/%.src
               grep '^#' $< > $@

            .DEFAULT: foo.digest

    .PHONY: clean

    clean:
        rm -rf tmp        

In this example, we define the CREATE_SUBDIRS variable as true, so that the tmp directory will be created if it does not exist. The .SUBDIRS body in this example is a bit contrived, but it illustrates the kind of specification you might expect. The clean phony-target indicates that the tmp directory should be removed when the project is cleaned up.

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-base.html0000664000152300015230000017547710646471724015576 0ustar jyhjyh Base library
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 9  Base library

9.1  Builtin variables

OMAKE_VERSION

Version of OMake.

STDLIB

The directory where the OMake standard library files reside. At startup, the default value is determined as follows.

  • The value of the OMAKELIB environment variable, if set (must contain an absolute path, if set), otherwise
  • On Windows, the registry keys HKEY_CURRENT_USER\SOFTWARE\MetaPRL\OMake\OMAKELIB and HKEY_LOCAL_MACHINE\SOFTWARE\MetaPRL\OMake\OMAKELIB are looked up and the value is used, if exist.
  • Otherwise a compile-time default it used.

The current default value may be accessed by running omake --version

OMAKEPATH

An array of directories specifying the lookup path for the include and open directives (see Section 4.7). The default value is an array of two elements — . and $(STDLIB).

OSTYPE

Set to the machine architecture omake is running on. Possible values are Unix (for all Unix versions, including Linux and Mac OS X), Win32 (for MS-Windows, OMake compiled with MSVC++ or Mingw), and Cygwin (for MS-Windows, OMake compiled with Cygwin).

SYSNAME

The name of the operating system for the current machine.

NODENAME

The hostname of the current machine.

OS_VERSION

The operating system release.

MACHINE

The machine architecture, e.g. i386, sparc, etc.

HOST

Same as NODENAME.

USER

The login name of the user executing the process.

HOME

The home directory of the user executing the process.

PID

The OMake process id.

TARGETS

The command-line target strings. For example, if OMake is invoked with the following command line,

      omake CFLAGS=1 foo bar.c

then TARGETS is defined as foo bar.c.

BUILD_SUMMARY

The BUILD_SUMMARY variable refers to the file that omake uses to summarize a build (the message that is printed at the very end of a build). The file is empty when the build starts. If you wish to add additional messages to the build summary, you can edit/modify this file during the build.

For example, if you want to point out that some action was taken, you can append a message to the build summary.

   foo: boo
       echo "The file foo was built" >> $(BUILD_SUMMARY)
       ...build foo...
VERBOSE

Whether certain commands should be verbose. A boolean flag that is false by default and is set to true when OMake is invoked with the --verbose option.

9.2  Logic, Boolean functions, and control flow

Boolean values in omake are represented by case-insensitive strings. The false value can be represented by the strings false, no, nil, undefined or 0, and everything else is true.

9.2.1  not

   $(not e) : String
      e : String

The not function negates a Boolean value.

For example, $(not false) expands to the string true, and $(not hello world) expands to false.

9.2.2  equal

   $(equal e1, e2) : String
      e1 : String
      e2 : String

The equal function tests for equality of two values.

For example $(equal a, b) expands to false, and $(equal hello world, hello world) expands to true.

9.2.3  and

    $(and e1, ..., en) : String
       e1, ..., en: Sequence

The and function evaluates to the conjunction of its arguments.

For example, in the following code, X is true, and Y is false.

    A = a
    B = b
    X = $(and $(equal $(A), a) true $(equal $(B), b))
    Y = $(and $(equal $(A), a) true $(equal $(A), $(B)))

9.2.4  or

   $(or e1, ..., en) : String
      e1, ..., en: String Sequence

The or function evaluates to the disjunction of its arguments.

For example, in the following code, X is true, and Y is false.

    A = a
    B = b
    X = $(or $(equal $(A), a) false $(equal $(A), $(B)))
    Y = $(or $(equal $(A), $(B)) $(equal $(A), b))

9.2.5  if

    $(if e1, e2[, e3]) : value
       e1 : String
       e2, e3 : value

The if function represents a conditional based on a Boolean value. For example $(if $(equal a, b), c, d) evaluates to d.

Conditionals may also be declared with an alternate syntax.

   if e1
      body1
   elseif e2
      body2
   ...
   else
      bodyn

If the expression e1 is not false, then the expressions in body1 are evaluated and the result is returned as the value of the conditional. Otherwise, if e1 evaluates to false, the evaluation continues with the e2 expression. If none of the conditional expressions is true, then the expressions in bodyn are evaluated and the result is returned as the value of the conditional.

There can be any number of elseif clauses; the else clause is optional.

Note that each branch of the conditional defines its own scope, so variables defined in the branches are normally not visible outside the conditional. The export command may be used to export the variables defined in a scope. For example, the following expression represents a common idiom for defining the C compiler configuration.

   if $(equal $(OSTYPE), Win32)
      CC = cl
      CFLAGS += /DWIN32
      export
   else
      CC = gcc
      CFLAGS += -g -O2
      export

9.2.6  switch, match

The switch and match functions perform pattern matching.

$(switch <arg>, <pattern_1>, <value_1>, ..., <pattern_n>, <value_n>) $(match <arg>, <pattern_1>, <value_1>, ..., <pattern_n>, <value_n>)

The number of <pattern>/<value> pairs is arbitrary. They strictly alternate; the total number of arguments to <match> must be odd.

The <arg> is evaluated to a string, and compared with <pattern_1>. If it matches, the result of the expression is <value_1>. Otherwise evaluation continues with the remaining patterns until a match is found. If no pattern matches, the value is the empty string.

The switch function uses string comparison to compare the argument with the patterns. For example, the following expression defines the FILE variable to be either foo, bar, or the empty string, depending on the value of the OSTYPE variable.

    FILE = $(switch $(OSTYPE), Win32, foo, Unix, bar)

The match function uses regular expression patterns (see the grep function). If a match is found, the variables $1, $2, ... are bound to the substrings matched between \( and \) delimiters. The $0 variable contains the entire match, and $* is an array of the matched substrings. to the matched substrings.

    FILE = $(match foo_xyz/bar.a, foo_\\\(.*\\\)/\\\(.*\\\)\.a, foo_$2/$1.o)

The switch and match functions also have an alternate (more usable) form.

   match e
   case pattern1
      body1
   case pattern2
      body2
   ...
   default
      bodyd

If the value of expression e matches pattern_i and no previous pattern, then body_i is evaluated and returned as the result of the match. The switch function uses string comparison; the match function uses regular expression matching.

   match $(FILE)
   case $".*\(\.[^\/.]*\)"
      println(The string $(FILE) has suffix $1)
   default
      println(The string $(FILE) has no suffix)

9.2.7  try

   try
      try-body
   catch class1(v1)
      catch-body
   when expr
      when-body
   ...
   finally
      finally-body

The try form is used for exception handling. First, the expressions in the try-body are evaluated.

If evaluation results in a value v without raising an exception, then the expressions in the finally-body are evaluated and the value v is returned as the result.

If evaluation of the try-body results in a exception object obj, the catch clauses are examined in order. When examining catch clause catch class(v), if the exception object obj is an instance of the class name class, the variable v is bound to the exception object, and the expressions in the catch-body are evaluated.

If a when clause is encountered while a catch body is being evaluated, the predicate expr is evaluated. If the result is true, evaluation continues with the expressions in the when-body. Otherwise, the next catch clause is considered for evaluation.

If evaluation of a catch-body or when-body completes successfully, returning a value v, without encountering another when clause, then the expressions in the finally-body are evaluated and the value v is returned as the result.

There can be any number of catch clauses; the finally clause is optional.

9.2.8  raise

   raise exn
      exn : Exception

The raise function raises an exception. The exn object can be any object. However, the normal convention is to raise an Exception object.

If the exception is never caught, the whole object will be verbosely printed in the error message. However, if the object is an Exception one and contains a message field, only that field will be included in the error message.

9.2.9  exit

   exit(code)
      code : Int

The exit function terminates omake abnormally.

$(exit <code>)

The exit function takes one integer argument, which is exit code. Non-zero values indicate abnormal termination.

9.2.10  defined

   $(defined sequence) : String
      sequence : Sequence

The defined function test whether all the variables in the sequence are currently defined. For example, the following code defines the X variable if it is not already defined.

    if $(not $(defined X))
       X = a b c
       export

It is acceptable to use qualified names.

    $(defined X.a.b)
    $(defined public.X)

9.2.11  defined-env

   $(defined-env sequence) : String
      sequence : String

The defined-env function tests whether a variable is defined as part of the process environment.

For example, the following code adds the -g compile option if the environment variable DEBUG is defined.

if $(defined-env DEBUG)
    CFLAGS += -g
    export

9.2.12  getenv

   $(getenv name) : String
   $(getenv name, default) : String

The getenv function gets the value of a variable from the process environment. The function takes one or two arguments.

In the single argument form, an exception is raised if the variable variable is not defined in the environment. In the two-argument form, the second argument is returned as the result if the value is not defined.

For example, the following code defines the variable X to be a space-separated list of elements of the PATH environment variable if it is defined, and to /bin /usr/bin otherwise.

    X = $(split $(PATHSEP), $(getenv PATH, /bin:/usr/bin))

You may also use the alternate form.

     getenv(NAME)
         default

9.2.13  setenv

   setenv(name, value)
      name : String
      value : String

The setenv function sets the value of a variable in the process environment. Environment variables are scoped like normal variables.

9.2.14  unsetenv

   unsetenv(names)
      names : String Array

The unsetenv function removes some variable definitions from the process environment. Environment variables are scoped like normal variables.

9.2.15  get-registry

   get-registry(hkey, key, field) : String
   get-registry(hkey, key, field, default) : String
       hkey : String
       key : String
       field : String

The get-registry function retrieves a string value from the system registry on Win32. On other architectures, there is no registry.

The hive (I think that is the right word), indicates which part of the registry to use. It should be one of the following values.

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_CONFIG
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS

Refer to the Microsoft documentation if you want to know what these mean.

The key is the field you want to get from the registry. It should have a form like A\B\C (if you use forward slashes, they will be converted to backslashes). The field is the sub-field of the key.

In the 4-argument form, the default is returned on failure. You may also use the alternate form.

    get-registry(hkey, key, field)
       default

9.2.16  getvar

   $(getvar name) : String

The getvar function gets the value of a variable.

An exception is raised if the variable variable is not defined.

For example, the following code defines X to be the string abc.

    NAME = foo
    foo_1 = abc
    X = $(getvar $(NAME)_1)

It is acceptable to use qualified names.

    $(getvar X.a.b)

9.2.17  setvar

   setvar(name, value)
      name : String
      value : String

The setvar function defines a new variable. For example, the following code defines the variable X to be the string abc.

   NAME = X
   setvar($(NAME), abc)

It is acceptable to use qualified names.

    setvar(public.X, abc)

9.3  Arrays and sequences

9.3.1  array

    $(array elements) : Array
       elements : Sequence

The array function creates an array from a sequence. If the <arg> is a string, the elements of the array are the whitespace-separated elements of the string, respecting quotes.

In addition, array variables can be declared as follows.

    A[] =
       <val1>
       ...
       <valn>

In this case, the elements of the array are exactly <val1>, ..., <valn>, and whitespace is preserved literally.

9.3.2  split

   $(split sep, elements) : Array
      sep : String
      elements : Sequence

The split function takes two arguments, a string of separators, and a string argument. The result is an array of elements determined by splitting the elements by all occurrence of the separator in the elements sequence.

For example, in the following code, the X variable is defined to be the array /bin /usr/bin /usr/local/bin.

    PATH = /bin:/usr/bin:/usr/local/bin
    X = $(split :, $(PATH))

The sep argument may be omitted. In this case split breaks its arguments along the white space. Quotations are not split.

9.3.3  concat

   $(concat sep, elements) : String
      sep : String
      elements : Sequence

The concat function takes two arguments, a separator string, and a sequence of elements. The result is a string formed by concatenating the elements, placing the separator between adjacent elements.

For example, in the following code, the X variable is defined to be the string foo_x_bar_x_baz.

    X = foo  bar     baz
    Y = $(concat _x_, $(X))

9.3.4  length

   $(length sequence) : Int
      sequence : Sequence

The length function returns the number of elements in its argument.

For example, the expression $(length a b "c d") evaluates to 3.

9.3.5  nth

   $(nth i, sequence) : value
      i : Int
      sequence : Sequence
   raises RuntimeException

The nth function returns the nth element of its argument, treated as a list. Counting starts at 0. An exception is raised if the index is not in bounds.

For example, the expression $(nth 1, a "b c" d) evaluates to "b c".

9.3.6  replace-nth

   $(replace-nth i, sequence, x) : value
      i : Int
      sequence : Sequence
      x : value
   raises RuntimeException

The replace-nth function replaces the nth element of its argument with a new value x. Counting starts at 0. An exception is raised if the index is not in bounds.

For example, the expression $(replace-nth 1, a "b c" d, x) evaluates to a x d.

9.3.7  nth-hd

   $(nth-hd i, sequence) : value
      i : Int
      sequence : Sequence
   raises RuntimeException

The nth-hd function returns the first i elements of the sequence. An exception is raised if the sequence is not at least i elements long.

For example, the expression $(nth-hd 2, a "b c" d) evaluates to a "b c".

9.3.8  nth-tl

   $(nth-tl i, sequence) : value
      i : Int
      sequence : Sequence
   raises RuntimeException

The nth-tl function skips i elements of the sequence and returns the rest. An exception is raised if the sequence is not at least i elements long.

For example, the expression $(nth-tl 1, a "b c" d) evaluates to "b c" d.

9.3.9  subrange

   $(subrange off, len, sequent) : value
      off : Int
      len : Int
      sequence : Sequence
   raises RuntimeException

The subrange function returns a subrange of the sequence. Counting starts at 0. An exception is raised if the specified range is not in bounds.

For example, the expression $(subrange 1, 2, a "b c" d e) evaluates to "b c" d.

9.3.10  rev

    $(rev sequence) : Sequence
       sequence : Sequence

The rev function returns the elements of a sequence in reverse order. For example, the expression $(rev a "b c" d) evaluates to d "b c" a.

9.3.11  join

   $(join sequence1, sequence2) : Sequence
      sequence1 : Sequence
      sequence2 : Sequence

The join function joins together the elements of the two sequences. For example, $(join a b c, .c .cpp .h) evaluates to a.c b.cpp c.h. If the two input sequences have different lengths, the remainder of the longer sequence is copied at the end of the output unmodified.

9.3.12  string

   $(string sequence) : String
      sequence : Sequence

The string function flattens a sequence into a single string. This is similar to the concat function, but the elements are separated by whitespace. The result is treated as a unit; whitespace is significant.

9.3.13  string-length

   $(string-length sequence) : Int
      sequence : Sequence

The string-lenght returns a length (number of characters) in its argument. If the argument is a sequence, it flattens it, so $(string-length sequence) is equivalent to $(string-length $(string sequence)).

9.3.14  string-escaped, ocaml-escaped, html-escaped, html-pre-escaped, c-escaped, id-escaped

   $(string-escaped sequence) : String Array
   $(ocaml-escaped sequence) : String Array
   $(html-escaped sequence) : String Array
   $(html-pre-escaped sequence) : String Array
   $(c-escaped sequence) : String Array
   $(hex-escaped sequence) : StringArray
      sequence : Array

The string-escaped function converts each element of its argument to a string, escaping it, if it contains symbols that are special to OMake. The special characters include :()\,$'"# and whitespace. This function can be used in scanner rules to escape file names before printing then to stdout.

The ocaml-escaped function converts each element of its argument to a string, escaping characters that are special to OCaml.

The c-escaped function converts a string to a form that can be used as a string constant in C.

The id-escaped function turns a string into an identifier that may be used in OMake.

The html-escaped function turns a literal string into a form acceptable as HTML. The html-pre-escaped function is similar, but it does not translate newlines into <br>.

    println($(string $(string-escaped $"a b" $"y:z")))
    a\ b y\:z

9.3.15  decode-uri, encode-uri

    $(decode-uri sequence) : sequence
        sequence : Sequence

These two functions perform URI encoding, where special characters are represented by hexadecimal characters.

    osh> s = $(encode-uri $'a b~c')
    "a+b%7ec"
    osh> decode-uri($s)
    "a b~c"

9.3.16  quote

   $(quote sequence) : String
      sequence : Sequence

The quote function flattens a sequence into a single string and adds quotes around the string. Inner quotation symbols are escaped.

For example, the expression $(quote a "b c" d) evaluates to "a \"b c\" d", and $(quote abc) evaluates to "abc".

9.3.17  quote-argv

   $(quote-argv sequence) : String
      sequence : Sequence

The quote-argv function flattens a sequence into a single string, and adds quotes around the string. The quotation is formed so that a command-line parse can separate the string back into its components.

9.3.18  html-string

   $(html-string sequence) : String
      sequence : Sequence

The html-string function flattens a sequence into a single string, and escaped special HTML characters. This is similar to the concat function, but the elements are separated by whitespace. The result is treated as a unit; whitespace is significant.

9.3.19  addsuffix

   $(addsuffix suffix, sequence) : Array
      suffix : String
      sequence : Sequence

The addsuffix function adds a suffix to each component of sequence. The number of elements in the array is exactly the same as the number of elements in the sequence.

For example, $(addsuffix .c, a b "c d") evaluates to a.c b.c "c d".c.

9.3.20  mapsuffix

   $(mapsuffix suffix, sequence) : Array
      suffix : value
      sequence : Sequence

The mapsuffix function adds a suffix to each component of sequence. It is similar to addsuffix, but uses array concatenation instead of string concatenation. The number of elements in the array is twice the number of elements in the sequence.

For example, $(mapsuffix .c, a b "c d") evaluates to a .c b .c "c d" .c.

9.3.21  addsuffixes

   $(addsuffixes suffixes, sequence) : Array
      suffixes : Sequence
      sequence : Sequence

The addsuffixes function adds all suffixes in its first argument to each component of a sequence. If suffixes has n elements, and sequence has m elements, the the result has n * m elements.

For example, the $(addsuffixes .c .o, a b c) expressions evaluates to a.c a.o b.c b.o c.o c.a.

9.3.22  removeprefix

   $(removeprefix prefix, sequence) : Array
      prefix : String
      sequence : Array

The removeprefix function removes a prefix from each component of a sequence.

9.3.23  removesuffix

   $(removesuffix sequence) : Array
      sequence : String

The removesuffix function removes the suffixes from each component of a sequence.

For example, $(removesuffix a.c b.foo "c d") expands to a b "c d".

9.3.24  replacesuffixes

   $(replacesuffixes old-suffixes, new-suffixes, sequence) : Array
      old-suffixes : Sequence
      new-suffixes : Sequence
      sequence : Sequence

The replacesuffixes function modifies the suffix of each component in sequence. The old-suffixes and new-suffixes sequences should have the same length.

For example, $(replacesuffixes .h .c, .o .o, a.c b.h c.z) expands to a.o b.o c.z.

9.3.25  addprefix

   $(addprefix prefix, sequence) : Array
      prefix : String
      sequence : Sequence

The addprefix function adds a prefix to each component of a sequence. The number of element in the result array is exactly the same as the number of elements in the argument sequence.

For example, $(addprefix foo/, a b "c d") evaluates to foo/a foo/b foo/"c d".

9.3.26  mapprefix

   $(mapprefix prefix, sequence) : Array
      prefix : String
      sequence : Sequence

The mapprefix function adds a prefix to each component of a sequence. It is similar to addprefix, but array concatenation is used instead of string concatenation. The result array contains twice as many elements as the argument sequence.

For example, $(mapprefix foo, a b "c d") expands to foo a foo b foo "c d".

9.3.27  add-wrapper

   $(add-wrapper prefix, suffix, sequence) : Array
      prefix : String
      suffix : String
      sequence : Sequence

The add-wrapper functions adds both a prefix and a suffix to each component of a sequence. For example, the expression $(add-wrapper dir/, .c, a b) evaluates to dir/a.c dir/b.c. String concatenation is used. The array result has the same number of elements as the argument sequence.

9.3.28  set

   $(set sequence) : Array
      sequence : Sequence

The set function sorts a set of string components, eliminating duplicates.

For example, $(set z y z "m n" w a) expands to "m n" a w y z.

9.3.29  mem

   $(mem elem, sequence) : Boolean
      elem : String
      sequence : Sequence

The mem function tests for membership in a sequence.

For example, $(mem "m n", y z "m n" w a) evaluates to true, while $(mem m n, y z "m n" w a) evaluates to false.

9.3.30  intersection

   $(intersection sequence1, sequence2) : Array
      sequence1 : Sequence
      sequence2 : Sequence

The intersection function takes two arguments, treats them as sets of strings, and computes their intersection. The order of the result is undefined, and it may contain duplicates. Use the set function to sort the result and eliminate duplicates in the result if desired.

For example, the expression $(intersection c a b a, b a) evaluates to a b a.

9.3.31  intersects

   $(intersects sequence1, sequence2) : Boolean
      sequence1 : Sequence
      sequence2 : Sequence

The intersects function tests whether two sets have a non-empty intersection. This is slightly more efficient than computing the intersection and testing whether it is empty.

For example, the expression $(intersects a b c, d c e) evaluates to true, and $(intersects a b c a, d e f) evaluates to false.

9.3.32  set-diff

   $(set-diff sequence1, sequence2) : Array
      sequence1 : Sequence
      sequence2 : Sequence

The set-diff function takes two arguments, treats them as sets of strings, and computes their difference (all the elements of the first set that are not present in the second one). The order of the result is undefined and it may contain duplicates. Use the set function to sort the result and eliminate duplicates in the result if desired.

For example, the expression $(set-diff c a b a e, b a) evaluates to c e.

9.3.33  filter

   $(filter patterns, sequence) : Array
      patterns : Sequence
      sequence : Sequence

The filter function picks elements from a sequence. The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard % character.

For example $(filter %.h %.o, a.c x.o b.h y.o "hello world".c) evaluates to x.o b.h y.o.

9.3.34  filter-out

   $(filter-out patterns, sequence) : Array
      patterns : Sequence
      sequence : Sequence

The filter-out function removes elements from a sequence. The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard % character.

For example $(filter-out %.c %.h, a.c x.o b.h y.o "hello world".c) evaluates to x.o y.o.

9.3.35  capitalize

   $(capitalize sequence) : Array
      sequence : Sequence

The capitalize function capitalizes each word in a sequence. For example, $(capitalize through the looking Glass) evaluates to Through The Looking Glass.

9.3.36  uncapitalize

   $(uncapitalize sequence) : Array
      sequence : Sequence

The uncapitalize function uncapitalizes each word in its argument.

For example, $(uncapitalize through the looking Glass) evaluates to through the looking glass.

9.3.37  uppercase

   $(uppercase sequence) : Array
      sequence : Sequence

The uppercase function converts each word in a sequence to uppercase. For example, $(uppercase through the looking Glass) evaluates to THROUGH THE LOOKING GLASS.

9.3.38  lowercase

   $(lowercase sequence) : Array
      sequence : Sequence

The lowercase function reduces each word in its argument to lowercase.

For example, $(lowercase through tHe looking Glass) evaluates to through the looking glass.

9.3.39  system

   system(s)
      s : Sequence

The system function is used to evaluate a shell expression. This function is used internally by omake to evaluate shell commands.

For example, the following program is equivalent to the expression system(ls foo).

   ls foo

9.3.40  shell

   $(shell command) : Array
   $(shella command) : Array
   $(shell-code command) : Int
      command : Sequence

The shell function evaluates a command using the command shell, and returns the whitespace-separated words of the standard output as the result.

The shella function acts similarly, but it returns the lines as separate items in the array.

The shell-code function returns the exit code. The output is not diverted.

For example, if the current directory contains the files OMakeroot, OMakefile, and hello.c, then $(shell ls) evaluates to hello.c OMakefile OMakeroot (on a Unix system).

9.3.41  export

The export function allows one to capture the current environment in a variable.

For example, the following code:

A = 1
B = 1
C = 1
SAVE_ENV = $(export A B)
A = 2
B = 2
C = 2
export $(SAVE_ENV)
println($A $B $C)

will print 1 1 2.

The arguments to this function are interpreted the exact same way as the arguments to the export special form (see Section 6.3).

9.3.42  while

   while <test>
      <body>

–or–

    while <test>
    case <test1>
       <body1>
    ...
    case <testn>
       <bodyn>
    default
       <bodyd>

The loop is executed while the test is true. In the first form, the <body> is executed on every loop iteration. In the second form, the body <bodyI> is selected, as the first case where the test <testI> is true. If none apply, the optional default case is evaluated. If no cases are true, the loop exits. The environment is automatically exported.

Examples.

Iterate for i from 0 to 9.

    i = 0
    while $(lt $i, 10)
       echo $i
       i = $(add $i, 1)

The following example is equivalent.

   i = 0
   while true
   case $(lt $i, 10)
      echo $i
      i = $(add $i, 1)

The following example is similar, but some special cases are printed. value is printed.

    i = 0
    while $(lt $i, 10)
    case $(equal $i, 0)
       echo zero
    case $(equal $i, 1)
       echo one
    default
       echo $i

The break function can be used to break out of the while loop early.

9.3.43  break

   break

Terminate execution of the innermost loop, returning the current state.

9.3.44  random, random-init

    random-init(i)
        i : Int
    random() : Int

Produce a random number. The numbers are pseudo-random, and are not cryptographically secure.

The generator is initialized form semi-random system data. Subsequent runs should produce different results. The rando-init function can be used to return the generator to a known state.

9.4  Arithmetic

9.4.1  int

The int function can be used to create integers. It returns an Int object.

$(int 17).

9.4.2  float

The float function can be used to create floating-point numbers. It returns a Float object.

$(float 3.1415926).

9.4.3  Basic arithmetic

The following functions can be used to perform basic arithmetic.

  • $(neg <numbers>): arithmetic inverse
  • $(add <numbers>): addition.
  • $(sub <numbers>): subtraction.
  • $(mul <numbers>): multiplication.
  • $(div <numbers>): division.
  • $(mod <numbers>): remainder.
  • $(lnot <numbers>): bitwise inverse.
  • $(land <numbers>): bitwise and.
  • $(lor <numbers>): bitwise or.
  • $(lxor <numbers>): bitwise exclusive-or.
  • $(lsl <numbers>): logical shift left.
  • $(lsr <numbers>): logical shift right.
  • $(asr <numbers>): arithmetic shift right.
  • $(min <numbers>): smallest element.
  • $(max <numbers>): largest element.

9.4.4  Comparisons

The following functions can be used to perform numerical comparisons.

  • $(lt <numbers>): less then.
  • $(le <numbers>): no more than.
  • $(eq <numbers>): equal.
  • $(ge <numbers>): no less than.
  • $(gt <numbers>): greater than.
  • $(ult <numbers>): unsigned less than.
  • $(ule <numbers>): unsigned greater than.
  • $(uge <numbers>): unsigned greater than or equal.
  • $(ugt <numbers>): unsigned greater than.

9.5  First-class functions

9.5.1  fun

The fun form introduces anonymous functions.

$(fun <v1>, ..., <vn>, <body>)

The last argument is the body of the function. The other arguments are the parameter names.

The three following definitions are equivalent.

    F(X, Y) =
       return($(addsuffix $(Y), $(X)))

    F = $(fun X, Y, $(addsuffix $(Y), $(X)))

    F =
       fun(X, Y)
          value $(addsuffix $(Y), $(X))

9.5.2  apply

The apply operator is used to apply a function.

$(apply <fun>, <args>)

Suppose we have the following function definition.

    F(X, Y) =
       return($(addsuffix $(Y), $(X)))

The the two expressions below are equivalent.

    X = F(a b c, .c)
    X = $(apply $(F), a b c, .c)

9.5.3  applya

The applya operator is used to apply a function to an array of arguments.

$(applya <fun>, <args>)

For example, in the following program, the value of Z is file.c.

    F(X, Y) =
       return($(addsuffix $(Y), $(X)))
    args[] =
       file
       .c
    Z = $(applya $(F), $(args))

9.5.4  create-map, create-lazy-map

The create-map is a simplified form for creating Map objects. The create-map function takes an even number of arguments that specify key/value pairs. For example, the following values are equivalent.

    X = $(create-map name1, xxx, name2, yyy)

    X. =
        extends $(Map)
        $|name1| = xxx
        $|name2| = yyy

The create-lazy-map function is similar, but the values are computed lazily. The following two definitions are equivalent.

    Y = $(create-lazy-map name1, $(xxx), name2, $(yyy))

    Y. =
        extends $(Map)
        $|name1| = $`(xxx)
        $|name2| = $`(yyy)

The create-lazy-map function is used in rule construction.

9.6  Iteration and mapping

9.6.1  foreach

The foreach function maps a function over a sequence.

    $(foreach <fun>, <args>)

    foreach(<var>, <args>)
       <body>

For example, the following program defines the variable X as an array a.c b.c c.c.

    X =
       foreach(x, a b c)
          value $(x).c

    # Equivalent expression
    X = $(foreach $(fun x, $(x).c), abc)

There is also an abbreviated syntax.

The export form can also be used in a foreach body. The final value of X is a.c b.c c.c.

    X =
    foreach(x, a b c)
       X += $(x).c
       export

The break function can be used to break out of the loop early.

9.7  Boolean tests

9.7.1  sequence-forall

The forall function tests whether a predicate halds for each element of a sequence.

    $(sequence-forall <fun>, <args>)

    sequence-forall(<var> => ..., <args>)
       <body>

9.7.2  sequence-exists

The exists function tests whether a predicate holds for some element of a sequence.

    $(sequence-exists <fun>, <args>)

    sequence-exists(<var> => ..., <args>)
       <body>

9.7.3  sequence-sort

The sort function sorts the elements in an array, given a comparison function. Given two elements (x, y), the comparison should return a negative number if x < y; a positive number if x > y; and 0 if x = y.

    $(sequence-sort <fun>, <args>)

    sort(<var>, <var> => ..., <args>)
       <body>

9.7.4  compare

The compare function compares two values (x, y) generically returning a negative number if x < y; a positive number if x > y; and 0 if x = y.

    $(compare x, y) : Int
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-shell.html0000664000152300015230000003213610652152751015744 0ustar jyhjyh Shell commands
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 11  Shell commands

Shell commands (commands to be executed by the operating system) can be freely mixed with other code.

NOTE: the syntax and shell usage is identical on all platforms, including Win32. To avoid portability problems on Win32, it is recommended that you avoid the use of the native shell interpreter cmd.

    LIB = $(dir lib)
    println(The contents of the $(LIB) directory is:)
    ls $(LIB)

11.1  Simple commands

The syntax of shell commands is similar to the syntax used by the Unix shell bash. In general, a command is a pipeline. A basic command is part of a pipeline. It is specified with the name of an executable and some arguments. Here are some examples.

    ls
    ls -AF .
    echo Hello world

The command is found using the current search path in the variable PATH[], which should define an array of directories containing executables.

A command may also be prefixed by environment variable definitions.

    # Prints "Hello world"
    env X="Hello world" Y=2 printenv X
    # Pass the include path to the Visual C++
    env include="c:\Program Files\Microsoft SDK\include" cl foo.cpp

11.2  Globbing

Commands may contain wildcard patterns. A pattern specifies a set of files through a limited kind of regular expression. Patterns are expanded before the function is executed.

   # List all files with a .c suffix
   ls *.c

   # List all files with a single character prefix, and .c suffix
   ls ?.c

   # Rename the file hello.ml to foo.ml
   mv {hello,foo}.ml

A comprehensive description of OMake glob patterns is given in Section 10.4.

11.3  Background jobs

The command may also be placed in the background by placing an ampersand after the command. Control returns to the shell without waiting for the job to complete. The job continues to run in the background.

    gcc -o hugeprogram *.c &

11.4  File redirection

Input and output can be redirected to files by using the <, >, and >& directives after the command.

    # Write to the "foo" file
    echo Hello world > foo

    # Redirect input from the foo file
    cat < foo

    # Redirect standard output and errors to the foo file
    gcc -o boo *.c >& foo

11.5  Pipelines

Pipelines are sequences of commands, where the output from each command is sent to the next. Pipelines are defined with the | and |& syntax. With | the output is redirected, but errors are not. With |& both output and errors are redirected.

   # Send the output of the ls command to the printer
   ls *.c | lpr

   # Send output and errors to jyh as email
   gcc -o hugefile *.c |& mail jyh

11.6  Conditional execution

Commands may also be composed though conditional evaluation using the || and && syntax. Every command has an integer exit code, which may be zero or some other integer. A command is said to succeed if its exit code is zero. The expression command1 && command2 executes command2 only if command1 succeeds. The expression command1 || command2 executes command2 only if command1 fails.

   # Display the x/y file if possible
   cd x && cat y

   # Run foo.exe, or print an error message
   (test -x foo.exe && foo.exe) || echo "foo.exe is not executable"

11.7  Grouping

Parenthesis are used for grouping in a pipeline or conditional command. In the following expression, the test function is used to test whether the foo.exe file is executable. If it is, the foo.exe file is executed. If the file is not executable (or if the foo.exe command fails), the message "foo.exe is not executable" is printed.

   # Run foo.exe, or print an error message
   (test -x foo.exe && foo.exe) || echo "foo.exe is not executable"

11.8  What is a shell command?

Syntactially, shell commands are any line that is not one of the following:

  • A variable definition of the form VAR=string
  • A function call f(...) or method call o.f(...)
  • A rule definition containing a colon string: ...
  • A special command, including the following:
    • if ...
    • switch ...
    • match ...
    • section ...
    • return ...

Commands may also be builtin (aliases). See the documentation for the Shell object for more information.

11.9  Basic builtin functions

11.9.1  echo

The echo function prints a string.

$(echo <args>)
echo <args>

11.9.2  cd

The cd function changes the current directory.

    cd(dir)
       dir : Dir

The cd function also supports a 2-argument form:

    $(cd dir, e)
       dir : Dir
       e : expression

In the two-argument form, expression e is evaluated in the directory dir. The current directory is not changed otherwise.

The behavior of the cd function can be changed with the CDPATH variable, which specifies a search path for directories. This is normally useful only in the osh command interpreter.

    CDPATH : Dir Sequence

For example, the following will change directory to the first directory ./foo, ~/dir1/foo, ~/dir2/foo.

    CDPATH[] =
       .
       $(HOME)/dir1
       $(HOME)/dir2
    cd foo

11.10  Job control builtin functions

11.10.1  jobs

The jobs function prints a list of jobs.

jobs

11.10.2  bg

The bg function places a job in the background.

bg <pid...>

11.10.3  fg

The fg function brings a job to the foreground.

fg <pid...>

11.10.4  stop

The stop function suspends a job.

stop <pid...>

11.10.5  wait

The wait function waits for a job to finish. If no process identifiers are given, the shell waits for all jobs to complete.

wait <pid...>

11.10.6  kill

The kill function signals a job.

kill [signal] <pid...>

11.11  Command history

11.11.1  history

    $(history-index) : Int
    $(history) : String Sequence
    history-file : File
    history-length : Int

The history variables manage the command-line history in osh. They have no effect in omake.

The history-index variable is the current index into the command-line history. The history variable is the current command-line history.

The history-file variable can be redefined if you want the command-line history to be saved. The default value is ~/.omake/osh_history.

The history-length variable can be redefined to specify the maximum number of lines in the history that you want saved. The default value is 100.

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-doc.html0000664000152300015230000252550510656155147015421 0ustar jyhjyh The OMake user guide and reference manual
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

The OMake user guide and reference manual

Jason Hickey, Aleksey Nogin, et. al.

7thAugust, 2007

All the documentation on a single page

OMake table of contents

Contents

Chapter 1  Guide

If you are new to OMake, you the omake-quickstart presents a short introduction that describes how to set up a project. The omake-build-examples gives larger examples of build projects, and omake-language-examples presents programming examples.

Quickstart 2
A quickstart guide to using omake.
Build examples 3
Advanced build examples.
The OMake language 4
The omake language, including a description of objects, expressions, and values.
Variables and naming 5
Variables, names, and environments.
Language discussion 6
Further discussion on the language, including scoping, evaluation, and objects.
Language examples 7
Additional language examples.
Build rules 8
Defining and using rules to build programs.
Base builtin functions 9
Functions and variables in the core standard library.
System functions 10
Functions on files, input/output, and system commands.
Shell commands 11
Using the omake shell for command-line interpretation.
The standard objects 12
Pervasives defines the built-in objects.
Standard build definitions 13
The build specifications for programming languages in the OMake standard library.
Standard autoconfiguration functions and variables 14
The utilities provoded by the OMake standard library to simplify programming of autoconfiguration tests.
The interactive command interpreter 15
The osh command-line interpreter.
Appendices
OMake command-line options A
Command-line options for omake.
The OMake language grammar B
A more precise specification of the OMake language.
All the documentation on a single page
All the OMake documentation in a single page.

Chapter 2  OMake quickstart guide

2.1  Description

omake is designed for building projects that might have source files in several directories. Projects are normally specified using an OMakefile in each of the project directories, and an OMakeroot file in the root directory of the project. The OMakeroot file specifies general build rules, and the OMakefiles specify the build parameters specific to each of the subdirectories. When omake runs, it walks the configuration tree, evaluating rules from all of the OMakefiles. The project is then built from the entire collection of build rules.

2.1.1  Automatic dependency analysis

Dependency analysis has always been problematic with the make(1) program. omake addresses this by adding the .SCANNER target, which specifies a command to produce dependencies. For example, the following rule

    .SCANNER: %.o: %.c
        $(CC) $(INCLUDE) -MM $<

is the standard way to generate dependencies for .c files. omake will automatically run the scanner when it needs to determine dependencies for a file.

2.1.2  Content-based dependency analysis

Dependency analysis in omake uses MD5 digests to determine whether files have changed. After each run, omake stores the dependency information in a file called .omakedb in the project root directory. When a rule is considered for execution, the command is not executed if the target, dependencies, and command sequence are unchanged since the last run of omake. As an optimization, omake does not recompute the digest for a file that has an unchanged modification time, size, and inode number.

2.2  For users already familiar with make

For users already familiar with the make(1) command, here is a list of differences to keep in mind when using omake.

  • In omake, you are much less likely to define build rules of your own. The system provides many standard functions (like StaticCLibrary and CProgram), described in Chapter 13, to specify these builds more simply.
  • Implicit rules using .SUFFIXES and the .suf1.suf2: are not supported. You should use wildcard patterns instead %.suf2: %.suf1.
  • Scoping is significant: you should define variables and .PHONY targets (see Section 8.10) before they are used.
  • Subdirectories are incorporated into a project using the .SUBDIRS: target (see Section 8.8).

2.3  Building a small C program

To start a new project, the easiest method is to change directories to the project root and use the command omake --install to install default OMakefiles.

    $ cd ~/newproject
    $ omake --install
    *** omake: creating OMakeroot
    *** omake: creating OMakefile
    *** omake: project files OMakefile and OMakeroot have been installed
    *** omake: you should edit these files before continuing

The default OMakefile contains sections for building C and OCaml programs. For now, we'll build a simple C project.

Suppose we have a C file called hello_code.c containing the following code:

    #include <stdio.h>

    int main(int argc, char **argv)
    {
        printf("Hello world\n");
        return 0;
    }

To build the program a program hello from this file, we can use the CProgram function. The OMakefile contains just one line that specifies that the program hello is to be built from the source code in the hello_code.c file (note that file suffixes are not passed to these functions).

    CProgram(hello, hello_code)

Now we can run omake to build the project. Note that the first time we run omake, it both scans the hello_code.c file for dependencies, and compiles it using the cc compiler. The status line printed at the end indicates how many files were scanned, how many were built, and how many MD5 digests were computed.

    $ omake hello
    *** omake: reading OMakefiles
    *** omake: finished reading OMakefiles (0.0 sec)
    - scan . hello_code.o
    + cc -I. -MM hello_code.c
    - build . hello_code.o
    + cc -I. -c -o hello_code.o hello_code.c
    - build . hello
    + cc -o hello hello_code.o
    *** omake: done (0.5 sec, 1/6 scans, 2/6 rules, 5/22 digests)
    $ omake
    *** omake: reading OMakefiles
    *** omake: finished reading OMakefiles (0.1 sec)
    *** omake: done (0.1 sec, 0/4 scans, 0/4 rules, 0/9 digests)

If we want to change the compile options, we can redefine the CC and CFLAGS variables before the CProgram line. In this example, we will use the gcc compiler with the -g option. In addition, we will specify a .DEFAULT target to be built by default. The EXE variable is defined to be .exe on Win32 systems; it is empty otherwise.

    CC = gcc
    CFLAGS += -g
    CProgram(hello, hello_code)
    .DEFAULT: hello$(EXE)

Here is the corresponding run for omake.

    $ omake
    *** omake: reading OMakefiles
    *** omake: finished reading OMakefiles (0.0 sec)
    - scan . hello_code.o
    + gcc -g -I. -MM hello_code.c
    - build . hello_code.o
    + gcc -g -I. -c -o hello_code.o hello_code.c
    - build . hello
    + gcc -g -o hello hello_code.o
    *** omake: done (0.4 sec, 1/7 scans, 2/7 rules, 3/22 digests)

We can, of course, include multiple files in the program. Suppose we write a new file hello_helper.c. We would include this in the project as follows.

    CC = gcc
    CFLAGS += -g
    CProgram(hello, hello_code hello_helper)
    .DEFAULT: hello$(EXE)

2.4  Larger projects

As the project grows it is likely that we will want to build libraries of code. Libraries can be built using the StaticCLibrary function. Here is an example of an OMakefile with two libraries.

    CC = gcc
    CFLAGS += -g

    FOO_FILES = foo_a foo_b
    BAR_FILES = bar_a bar_b bar_c

    StaticCLibrary(libfoo, $(FOO_FILES))
    StaticCLibrary(libbar, $(BAR_FILES))

    # The hello program is linked with both libraries
    LIBS = libfoo libbar
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

2.5  Subdirectories

As the project grows even further, it is a good idea to split it into several directories. Suppose we place the libfoo and libbar into subdirectories.

In each subdirectory, we define an OMakefile for that directory. For example, here is an example OMakefile for the foo subdirectory.

    INCLUDES += .. ../bar

    FOO_FILES = foo_a foo_b
    StaticCLibrary(libfoo, $(FOO_FILES))

Note the the INCLUDES variable is defined to include the other directories in the project.

Now, the next step is to link the subdirectories into the main project. The project OMakefile should be modified to include a .SUBDIRS: target.

    # Project configuration
    CC = gcc
    CFLAGS += -g

    # Subdirectories
    .SUBDIRS: foo bar

    # The libraries are now in subdirectories
    LIBS = foo/libfoo bar/libbar

    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

Note that the variables CC and CFLAGS are defined before the .SUBDIRS target. These variables remain defined in the subdirectories, so that libfoo and libbar use gcc -g.

If the two directories are to be configured differently, we have two choices. The OMakefile in each subdirectory can be modified with its configuration (this is how it would normally be done). Alternatively, we can also place the change in the root OMakefile.

    # Default project configuration
    CC = gcc
    CFLAGS += -g

    # libfoo uses the default configuration
    .SUBDIRS: foo

    # libbar uses the optimizing compiler
    CFLAGS += -O3
    .SUBDIRS: bar

    # Main program
    LIBS = foo/libfoo bar/libbar
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

Note that the way we have specified it, the CFLAGS variable also contains the -O3 option for the CProgram, and hello_code.c and hello_helper.c file will both be compiled with the -O3 option. If we want to make the change truly local to libbar, we can put the bar subdirectory in its own scope using the section form.

    # Default project configuration
    CC = gcc
    CFLAGS += -g

    # libfoo uses the default configuration
    .SUBDIRS: foo

    # libbar uses the optimizing compiler
    section
        CFLAGS += -O3
        .SUBDIRS: bar

    # Main program does not use the optimizing compiler
    LIBS = foo/libfoo bar/libbar
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

Later, suppose we decide to port this project to Win32, and we discover that we need different compiler flags and an additional library.

    # Default project configuration
    if $(equal $(OSTYPE), Win32)
        CC = cl /nologo
        CFLAGS += /DWIN32 /MT
        export
    else
        CC = gcc
        CFLAGS += -g
        export

    # libfoo uses the default configuration
    .SUBDIRS: foo

    # libbar uses the optimizing compiler
    section
        CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3)
        .SUBDIRS: bar

    # Default libraries
    LIBS = foo/libfoo bar/libbar

    # We need libwin32 only on Win32
    if $(equal $(OSTYPE), Win32)
       LIBS += win32/libwin32

       .SUBDIRS: win32
       export

    # Main program does not use the optimizing compiler
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

Note the use of the export directives to export the variable definitions from the if-statements. Variables in omake are scoped—variables in nested blocks (blocks with greater indentation), are not normally defined in outer blocks. The export directive specifies that the variable definitions in the nested blocks should be exported to their parent block.

Finally, for this example, we decide to copy all libraries into a common lib directory. We first define a directory variable, and replace occurrences of the lib string with the variable.

    # The common lib directory
    LIB = $(dir lib)

    # phony target to build just the libraries
    .PHONY: makelibs

    # Default project configuration
    if $(equal $(OSTYPE), Win32)
        CC = cl /nologo
        CFLAGS += /DWIN32 /MT
        export
    else
        CC = gcc
        CFLAGS += -g
        export

    # libfoo uses the default configuration
    .SUBDIRS: foo

    # libbar uses the optimizing compiler
    section
        CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3)
        .SUBDIRS: bar

    # Default libraries
    LIBS = $(LIB)/libfoo $(LIB)/libbar

    # We need libwin32 only on Win32
    if $(equal $(OSTYPE), Win32)
       LIBS += $(LIB)/libwin32

       .SUBDIRS: win32
       export

    # Main program does not use the optimizing compiler
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

In each subdirectory, we modify the OMakefiles in the library directories to install them into the $(LIB) directory. Here is the relevant change to foo/OMakefile.

    INCLUDES += .. ../bar

    FOO_FILES = foo_a foo_b
    StaticCLibraryInstall(makelib, $(LIB), libfoo, $(FOO_FILES))

Directory (and file names) evaluate to relative pathnames. Within the foo directory, the $(LIB) variable evaluates to ../lib.

As another example, instead of defining the INCLUDES variable separately in each subdirectory, we can define it in the toplevel as follows.

    INCLUDES = $(ROOT) $(dir foo bar win32)

In the foo directory, the INCLUDES variable will evaluate to the string .. . ../bar ../win32. In the bar directory, it would be .. ../foo . ../win32. In the root directory it would be . foo bar win32.

2.6  Other things to consider

omake also handles recursive subdirectories. For example, suppose the foo directory itself contains several subdirectories. The foo/OMakefile would then contain its own .SUBDIRS target, and each of its subdirectories would contain its own OMakefile.

2.7  Building OCaml programs

By default, omake is also configured with functions for building OCaml programs. The functions for OCaml program use the OCaml prefix. For example, suppose we reconstruct the previous example in OCaml, and we have a file called hello_code.ml that contains the following code.

   open Printf

   let () = printf "Hello world\n"

An example OMakefile for this simple project would contain the following.

    # Use the byte-code compiler
    BYTE_ENABLED = true
    NATIVE_ENABLED = false
    OCAMLCFLAGS += -g

    # Build the program
    OCamlProgram(hello, hello_code)
    .DEFAULT: hello.run

Next, suppose the we have two library subdirectories: the foo subdirectory is written in C, the bar directory is written in OCaml, and we need to use the standard OCaml Unix module.

    # Default project configuration
    if $(equal $(OSTYPE), Win32)
        CC = cl /nologo
        CFLAGS += /DWIN32 /MT
        export
    else
        CC = gcc
        CFLAGS += -g
        export

    # Use the byte-code compiler
    BYTE_ENABLED = true
    NATIVE_ENABLED = false
    OCAMLCFLAGS += -g

    # library subdirectories
    INCLUDES += $(dir foo bar)
    OCAMLINCLUDES += $(dir foo bar)
    .SUBDIRS: foo bar

    # C libraries
    LIBS = foo/libfoo

    # OCaml libraries
    OCAML_LIBS = bar/libbar

    # Also use the Unix module
    OCAML_OTHER_LIBS = unix

    # The main program
    OCamlProgram(hello, hello_code hello_helper)

    .DEFAULT: hello

The foo/OMakefile would be configured as a C library.

    FOO_FILES = foo_a foo_b
    StaticCLibrary(libfoo, $(FOO_FILES))

The bar/OMakefile would build an ML library.

   BAR_FILES = bar_a bar_b bar_c
   OCamlLibrary(libbar, $(BAR_FILES))

2.8  The OMakefile and OMakeroot files

OMake uses the OMakefile and OMakeroot files for configuring a project. The syntax of these files is the same, but their role is slightly different. For one thing, every project must have exactly one OMakeroot file in the project root directory. This file serves to identify the project root, and it contains code that sets up the project. In contrast, a multi-directory project will often have an OMakefile in each of the project subdirectories, specifying how to build the files in that subdirectory.

Normally, the OMakeroot file is boilerplate. The following listing is a typical example.

    include $(STDLIB)/build/Common
    include $(STDLIB)/build/C
    include $(STDLIB)/build/OCaml
    include $(STDLIB)/build/LaTeX

    # Redefine the command-line variables
    DefineCommandVars(.)

    # The current directory is part of the project
    .SUBDIRS: .

The include lines include the standard configuration files needed for the project. The $(STDLIB) represents the omake library directory. The only required configuration file is Common. The others are optional; for example, the $(STDLIB)/build/OCaml file is needed only when the project contains programs written in OCaml.

The DefineCommandVars function defines any variables specified on the command line (as arguments of the form VAR=<value>). The .SUBDIRS line specifies that the current directory is part of the project (so the OMakefile should be read).

Normally, the OMakeroot file should be small and project-independent. Any project-specific configuration should be placed in the OMakefiles of the project.

2.9  Multiple version support

OMake version 0.9.6 introduced preliminary support for multiple, simultaneous versions of a project. Versioning uses the vmount(dir1, dir2) function, which defines a “virtual mount” of directory dir1 over directory dir2. A “virtual mount” is like a transparent mount in Unix, where the files from dir1 appear in the dir2 namespace, but new files are created in dir2. More precisely, the filename dir2/foo refers to: a) the file dir1/foo if it exists, or b) dir2/foo otherwise.

The vmount function makes it easy to specify multiple versions of a project. Suppose we have a project where the source files are in the directory src/, and we want to compile two versions, one with debugging support and one optimized. We create two directories, debug and opt, and mount the src directory over them.

    section
        CFLAGS += -g
        vmount(-l, src, debug)
        .SUBDIRS: debug

    section
        CFLAGS += -O3
        vmount(-l, src, opt)
        .SUBDIRS: opt

Here, we are using section blocks to define the scope of the vmount—you may not need them in your project.

The -l option is optional. It specifies that files form the src directory should be linked into the target directories (or copied, if the system is Win32). The links are added as files are referenced. If no options are given, then files are not copied or linked, but filenames are translated to refer directly to the src/ files.

Now, when a file is referenced in the debug directory, it is linked from the src directory if it exists. For example, when the file debug/OMakefile is read, the src/OMakefile is linked into the debug/ directory.

The vmount model is fairly transparent. The OMakefiles can be written as if referring to files in the src/ directory—they need not be aware of mounting. However, there are a few points to keep in mind.

2.10  Notes

  • When using the vmount function for versioning, it wise to keep the source files distinct from the compiled versions. For example, suppose the source directory contained a file src/foo.o. When mounted, the foo.o file will be the same in all versions, which is probably not what you want. It is better to keep the src/ directory pristine, containing no compiled code.
  • When using the vmount -l option, files are linked into the version directory only if they are referenced in the project. Functions that examine the filesystem (like $(ls ...)) may produce unexpected results.

Chapter 3  Additional build examples

Let's explain the OMake build model a bit more. One issue that dominates this discussion is that OMake is based on global project analysis. That means you define a configuration for the entire project, and you run one instance of omake.

For single-directory projects this doesn't mean much. For multi-directory projects it means a lot. With GNU make, you would usually invoke the make program recursively for each directory in the project. For example, suppose you had a project with some project root directory, containing a directory of sources src, which in turn contains subdirectories lib and main. So your project looks like this nice piece of ASCII art.

    my_project/
    |--> Makefile
    `--> src/
         |---> Makefile
         |---> lib/
         |     |---> Makefile
         |     `---> source files...
         `---> main/
               |---> Makefile
               `---> source files...

Typically, with GNU make, you would start an instance of make in my_project/; this would in term start an instance of make in the src/ directory; and this would start new instances in lib/ and main/. Basically, you count up the number of Makefiles in the project, and that is the number of instances of make processes that will be created.

The number of processes is no big deal with today's machines (sometimes contrary the the author's opinion, we no longer live in the 1970s). The problem with the scheme was that each make process had a separate configuration, and it took a lot of work to make sure that everything was consistent. Furthermore, suppose the programmer runs make in the main/ directory, but the lib/ is out-of-date. In this case, make would happily crank away, perhaps trying to rebuild files in lib/, perhaps just giving up.

With OMake this changes entirely. Well, not entirely. The source structure is quite similar, we merely add some Os to the ASCII art.

    my_project/
    |--> OMakeroot   (or Root.om)
    |--> OMakefile
    `--> src/
         |---> OMakefile
         |---> lib/
         |     |---> OMakefile
         |     `---> source files...
         `---> main/
               |---> OMakefile
               `---> source files...

The role of each <dir>/OMakefile plays the same role as each <dir>/Makefile: it describes how to build the source files in <dir>. The OMakefile retains much of syntax and structure of the Makefile, but in most cases it is much simpler.

One minor difference is the presence of the OMakeroot in the project root. The main purpose of this file is to indicate where the project root is in the first place (in case omake is invoked from a subdirectory). The OMakeroot serves as the bootstrap file; omake starts by reading this file first. Otherwise, the syntax and evaluation of OMakeroot is no different from any other OMakefile.

The big difference is that OMake performs a global analysis. Here is what happens when omake starts.

  1. omake locates that OMakeroot file, and reads it.
  2. Each OMakefile points to its subdirectory OMakefiles using the .SUBDIRS target. For example, my_project/OMakefile has a rule,
        .SUBDIRS: src
    

    and the my_project/src/OMakefile has a rule,

        .SUBDIRS: lib main
    

    omake uses these rules to read and evaluate every OMakefile in the project. Reading and evaluation is fast. This part of the process is cheap.

  3. Now that the entire configuration is read, omake determines which files are out-of-date (using a global analysis), and starts the build process. This may take a while, depending on what exactly needs to be done.

There are several advantages to this model. First, since analysis is global, it is much easier to ensure that the build configuration is consistent–after all, there is only one configuration. Another benefit is that the build configuration is inherited, and can be re-used, down the hierarchy. Typically, the root OMakefile defines some standard boilerplate and configuration, and this is inherited by subdirectories that tweak and modify it (but do not need to restate it entirely). The disadvantage of course is space, since this is global analysis after all. In practice rarely seems to be a concern; omake takes up much less space than your web browser even on large projects.

Some notes to the GNU/BSD make user.

  • OMakefiles are a lot like Makefiles. The syntax is similar, and there many of the builtin functions are similar. However, the two build systems are not the same. Some evil features (in the authors' opinions) have been dropped in OMake, and some new features have been added.
  • OMake works the same way on all platforms, including Win32. The standard configuration does the right thing, but if you care about porting your code to multiple platforms, and you use some tricky features, you may need to condition parts of your build config on the $(OSTYPE) variable.
  • A minor issue is that OMake dependency analysis is based on MD5 file digests. That is, dependencies are based on file contents, not file modification times. Say goodbye to false rebuilds based on spurious timestamp changes and mismatches between local time and fileserver time.

3.1  OMakeroot vs. OMakefile

Before we begin with examples, let's ask the first question, “What is the difference between the project root OMakeroot and OMakefile?” A short answer is, there is no difference, but you must have an OMakeroot file (or Root.om file).

However, the normal style is that OMakeroot is boilerplate and is more-or-less the same for all projects. The OMakefile is where you put all your project-specific stuff.

To get started, you don't have to do this yourself. In most cases you just perform the following step in your project root directory.

  • Run omake --install in your project root.

This will create the initial OMakeroot and OMakefile files that you can edit to get started.

3.2  An example C project

To begin, let's start with a simple example. Let's say that we have a full directory tree, containing the following files.

    my_project/
    |--> OMakeroot
    |--> OMakefile
    `--> src/
         |---> OMakefile
         |---> lib/
         |     |---> OMakefile
         |     |---> ouch.c
         |     |---> ouch.h
         |     `---> bandaid.c
         `---> main/
               |---> OMakefile
               |---> horsefly.c
               |---> horsefly.h
               `---> main.c

Here is an example listing.

my_project/OMakeroot:
    # Include the standard configuration for C applications
    open build/C
    
    # Process the command-line vars
    DefineCommandVars()
    
    # Include the OMakefile in this directory.
    .SUBDIRS: .

my_project/OMakefile:
    # Set up the standard configuration
    CFLAGS += -g

    # Include the src subdirectory
    .SUBDIRS: src

my_project/src/OMakefile:
    # Add any extra options you like
    CFLAGS += -O2

    # Include the subdirectories
    .SUBDIRS: lib main

my_project/src/lib/OMakefile:
    # Build the library as a static library.
    # This builds libbug.a on Unix/OSX, or libbug.lib on Win32.
    # Note that the source files are listed _without_ suffix.
    StaticCLibrary(libbug, ouch bandaid)

my_project/src/main/OMakefile:
    # Some files include the .h files in ../lib
    INCLUDES += ../lib

    # Indicate which libraries we want to link against.
    LIBS[] +=
        ../lib/libbug

    # Build the program.
    # Builds horsefly.exe on Win32, and horsefly on Unix.
    # The first argument is the name of the executable.
    # The second argument is an array of object files (without suffix)
    # that are part of the program.
    CProgram(horsefly, horsefly main)

    # Build the program by default (in case omake is called
    # without any arguments).  EXE is defined as .exe on Win32,
    # otherwise it is empty.
    .DEFAULT: horsefly$(EXE)

Most of the configuration here is defined in the file build/C.om (which is part of the OMake distribution). This file takes care of a lot of work, including:

  • Defining the StaticCLibrary and CProgram functions, which describe the canonical way to build C libraries and programs.
  • Defining a mechanism for scanning each of the source programs to discover dependencies. That is, it defines .SCANNER rules for C source files.

Variables are inherited down the hierarchy, so for example, the value of CFLAGS in src/main/OMakefile is “-g -O2”.

3.3  An example OCaml project

Let's repeat the example, assuming we are using OCaml instead of C. This time, the directory tree looks like this.

    my_project/
    |--> OMakeroot
    |--> OMakefile
    `--> src/
         |---> OMakefile
         |---> lib/
         |     |---> OMakefile
         |     |---> ouch.ml
         |     |---> ouch.mli
         |     `---> bandaid.ml
         `---> main/
               |---> OMakefile
               |---> horsefly.ml
               |---> horsefly.mli
               `---> main.ml

The listing is only a bit different.

my_project/OMakeroot:
    # Include the standard configuration for OCaml applications
    open build/OCaml
    
    # Process the command-line vars
    DefineCommandVars()
    
    # Include the OMakefile in this directory.
    .SUBDIRS: .

my_project/OMakefile:
    # Set up the standard configuration
    OCAMLFLAGS += -Wa

    # Do we want to use the bytecode compiler,
    # or the native-code one?  Let's use both for
    # this example.
    NATIVE_ENABLED = true
    BYTE_ENABLED = true

    # Include the src subdirectory
    .SUBDIRS: src

my_project/src/OMakefile:
    # Include the subdirectories
    .SUBDIRS: lib main

my_project/src/lib/OMakefile:
    # Let's do aggressive inlining on native code
    OCAMLOPTFLAGS += -inline 10

    # Build the library as a static library.
    # This builds libbug.a on Unix/OSX, or libbug.lib on Win32.
    # Note that the source files are listed _without_ suffix.
    OCamlLibrary(libbug, ouch bandaid)

my_project/src/main/OMakefile:
    # These files depend on the interfaces in ../lib
    OCAMLINCLUDES += ../lib

    # Indicate which libraries we want to link against.
    OCAML_LIBS[] +=
        ../lib/libbug

    # Build the program.
    # Builds horsefly.exe on Win32, and horsefly on Unix.
    # The first argument is the name of the executable.
    # The second argument is an array of object files (without suffix)
    # that are part of the program.
    OCamlProgram(horsefly, horsefly main)

    # Build the program by default (in case omake is called
    # without any arguments).  EXE is defined as .exe on Win32,
    # otherwise it is empty.
    .DEFAULT: horsefly$(EXE)

In this case, most of the configuration here is defined in the file build/OCaml.om. In this particular configuration, files in my_project/src/lib are compiled aggressively with the option -inline 10, but files in my_project/src/lib are compiled normally.

3.4  Handling new languages

The previous two examples seem to be easy enough, but they rely on the OMake standard library (the files build/C and build/OCaml) to do all the work. What happens if we want to write a build configuration for a language that is not already supported in the OMake standard library?

For this example, let's suppose we are adopting a new language. The language uses the standard compile/link model, but is not in the OMake standard library. Specifically, let's say we have the following setup.

  • Source files are defined in files with a .cat suffix (for Categorical Abstract Terminology).
  • .cat files are compiled with the catc compiler to produce .woof files (Wicked Object-Oriented Format).
  • .woof files are linked by the catc compiler with the -c option to produce a .dog executable (Digital Object Group). The catc also defines a -a option to combine several .woof files into a library.
  • Each .cat can refer to other source files. If a source file a.cat contains a line open b, then a.cat depends on the file b.woof, and a.cat must be recompiled if b.woof changes. The catc function takes a -I option to define a search path for dependencies.

To define a build configuration, we have to do three things.

  1. Define a .SCANNER rule for discovering dependency information for the source files.
  2. Define a generic rule for compiling a .cat file to a .woof file.
  3. Define a rule (as a function) for linking .woof files to produce a .dog executable.

Initially, these definitions will be placed in the project root OMakefile.

3.4.1  Defining a default compilation rule

Let's start with part 2, defining a generic compilation rule. We'll define the build rule as an implicit rule. To handle the include path, we'll define a variable CAT_INCLUDES that specifies the include path. This will be an array of directories. To define the options, we'll use a lazy variable (Section 7.5). In case there are any other standard flags, we'll define a CAT_FLAGS variable.

   # Define the catc command, in case we ever want to override it
   CATC = catc

   # The default flags are empty
   CAT_FLAGS =
   
   # The directories in the include path (empty by default)
   INCLUDES[] =

   # Compute the include options from the include path
   PREFIXED_INCLUDES[] = $`(mapprefix -I, $(INCLUDES))

   # The default way to build a .woof file
   %.woof: %.cat
       $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) -c $<

The final part is the build rule itself, where we call the catc compiler with the include path, and the CAT_FLAGS that have been defined. The $< variable represents the source file.

3.4.2  Defining a rule for linking

For linking, we'll define another rule describing how to perform linking. Instead of defining an implicit rule, we'll define a function that describes the linking step. The function will take two arguments; the first is the name of the executable (without suffix), and the second is the files to link (also without suffixes). Here is the code fragment.

    # Optional link options
    CAT_LINK_FLAGS =

    # The function that defines how to build a .dog program
    CatProgram(program, files) =
        # Add the suffixes
        file_names = $(addsuffix .woof, $(files))
        prog_name = $(addsuffix .dog, $(files))

        # The build rule
        $(prog_name): $(file_names)
            $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -o $@ $+

        # Return the program name
        value $(prog_name)

The CAT_LINK_FLAGS variable is defined just in case we want to pass additional flags specific to the link step. Now that this function is defined, whenever we want to define a rule for building a program, we simply call the rule. The previous implicit rule specifies how to compile each source file, and the CatProgram function specifies how to build the executable.

    # Build a rover.dog program from the source
    # files neko.cat and chat.cat.
    # Compile it by default.
    .DEFAULT: $(CatProgram rover, neko chat)

3.4.3  Dependency scanning

That's it, almost. The part we left out was automated dependency scanning. This is one of the nicer features of OMake, and one that makes build specifications easier to write and more robust. Strictly speaking, it isn't required, but you definitely want to do it.

The mechanism is to define a .SCANNER rule, which is like a normal rule, but it specifies how to compute dependencies, not the target itself. In this case, we want to define a .SCANNER rule of the following form.

    .SCANNER: %.woof: %.cat
        <commands>

This rule specifies that a .woof file may have additional dependencies that can be extracted from the corresponding .cat file by executing the <commands>. The result of executing the <commands> should be a sequence of dependencies in OMake format, printed to the standard output.

As we mentioned, each .cat file specifies dependencies on .woof files with an open directive. For example, if the neko.cat file contains a line open chat, then neko.woof depends on chat.woof. In this case, the <commands> should print the following line.

    neko.woof: chat.woof

For an analogy that might make this clearer, consider the C programming language, where a .o file is produced by compiling a .c file. If a file foo.c contains a line like #include "fum.h", then foo.c should be recompiled whenever fum.h changes. That is, the file foo.o depends on the file fum.h. In the OMake parlance, this is called an implicit dependency, and the .SCANNER <commands> would print a line like the following.

    foo.o: fum.h

Now, returning to the animal world, to compute the dependencies of neko.woof, we should scan neko.cat, line-by-line, looking for lines of the form open <name>. We could do this by writing a program, but it is easy enough to do it in omake itself. We can use the builtin awk function to scan the source file. One slight complication is that the dependencies depend on the INCLUDE path. We'll use the find-in-path function to find them. Here we go.

    .SCANNER: %.woof: %.cat
        section
            # Scan the file
            deps[] =
            awk($<)
            case $'^open'
                deps[] += $2
                export

            # Remove duplicates, and find the files in the include path
            deps = $(find-in-path $(INCLUDES), $(set $(deps)))

            # Print the dependencies
            println($"$@: $(deps)")

Let's look at the parts. First, the entire body is defined in a section because we are computing it internally, not as a sequence of shell commands.

We use the deps variable to collect all the dependencies. The awk function scans the source file ($<) line-by-line. For lines that match the regular expression ^open (meaning that the line begins with the word open), we add the second word on the line to the deps variable. For example, if the input line is open chat, then we would add the chat string to the deps array. All other lines in the source file are ignored.

Next, the $(set $(deps)) expression removes any duplicate values in the deps array (sorting the array alphabetically in the process). The find-in-path function then finds the actual location of each file in the include path.

The final step is print the result as the string $"$@: $(deps)" The quotations are added to flatten the deps array to a simple string.

3.4.4  Pulling it all together

To complete the example, let's pull it all together into a single project, much like our previous example.

    my_project/
    |--> OMakeroot
    |--> OMakefile
    `--> src/
         |---> OMakefile
         |---> lib/
         |     |---> OMakefile
         |     |---> neko.cat
         |     `---> chat.cat
         `---> main/
               |---> OMakefile
               `---> main.cat

The listing for the entire project is as follows. Here, we also include a function CatLibrary to link several .woof files into a library.

my_project/OMakeroot:
    # Process the command-line vars
    DefineCommandVars()
    
    # Include the OMakefile in this directory.
    .SUBDIRS: .

my_project/OMakefile:
   ########################################################################
   # Standard config for compiling .cat files
   #

   # Define the catc command, in case we ever want to override it
   CATC = catc

   # The default flags are empty
   CAT_FLAGS =
   
   # The directories in the include path (empty by default)
   INCLUDES[] =

   # Compute the include options from the include path
   PREFIXED_INCLUDES[] = $`(mapprefix -I, $(INCLUDES))

   # Dependency scanner for .cat files
   .SCANNER: %.woof: %.cat
        section
            # Scan the file
            deps[] =
            awk($<)
            case $'^open'
                deps[] += $2
                export

            # Remove duplicates, and find the files in the include path
            deps = $(find-in-path $(INCLUDES), $(set $(deps)))

            # Print the dependencies
            println($"$@: $(deps)")

   # The default way to compile a .cat file
   %.woof: %.cat
       $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) -c $<

   # Optional link options
   CAT_LINK_FLAGS =

   # Build a library for several .woof files
   CatLibrary(lib, files) =
       # Add the suffixes
       file_names = $(addsuffix .woof, $(files))
       lib_name = $(addsuffix .woof, $(lib))

       # The build rule
       $(lib_name): $(file_names)
           $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -a $@ $+

       # Return the program name
       value $(lib_name)

   # The function that defines how to build a .dog program
   CatProgram(program, files) =
       # Add the suffixes
       file_names = $(addsuffix .woof, $(files))
       prog_name = $(addsuffix .dog, $(program))

       # The build rule
       $(prog_name): $(file_names)
           $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -o $@ $+

       # Return the program name
       value $(prog_name)

   ########################################################################
   # Now the program proper
   #

   # Include the src subdirectory
   .SUBDIRS: src

my_project/src/OMakefile:
   .SUBDIRS: lib main

my_project/src/lib/OMakefile:
   CatLibrary(cats, neko chat)

my_project/src/main/OMakefile:
   # Allow includes from the ../lib directory
   INCLUDES[] += ../lib

   # Build the program
   .DEFAULT: $(CatProgram main, main ../cats)

Some notes. The configuration in the project OMakeroot defines the standard configuration, including the dependency scanner, the default rule for compiling source files, and functions for building libraries and programs.

These rules and functions are inherited by subdirectories, so the .SCANNER and build rules are used automatically in each subdirectory, so you don't need to repeat them.

3.4.5  Finishing up

At this point we are done, but there are a few things we can consider.

First, the rules for building cat programs is defined in the project OMakefile. If you had another cat project somewhere, you would need to copy the OMakeroot (and modify it as needed). Instead of that, you should consider moving the configuration to a shared library directory, in a file like Cat.om. That way, instead of copying the code, you could include the shared copy with an OMake command open Cat. The share directory should be added to your OMAKEPATH environment variable to ensure that omake knows how to find it.

Better yet, if you are happy with your work, consider submitting it as a standard configuration (by sending a request to omake@metaprl.org) so that others can make use of it too.

3.5  Collapsing the hierarchy, .SUBDIRS bodies

Some projects have many subdirectories that all have the same configuration. For instance, suppose you have a project with many subdirectories, each containing a set of images that are to be composed into a web page. Apart from the specific images, the configuration of each file is the same.

To make this more concrete, suppose the project has four subdirectories page1, page2, page3, and page4. Each contains two files image1.jpg and image2.jpg that are part of a web page generated by a program genhtml.

Instead of of defining a OMakefile in each directory, we can define it as a body to the .SUBDIRS command.

    .SUBDIRS: page1 page2 page3 page4
        index.html: image1.jpg image2jpg
            genhtml $+ > $@

The body of the .SUBDIRS is interpreted exactly as if it were the OMakefile, and it can contain any of the normal statements. The body is evaluated in the subdirectory for each of the subdirectories. We can see this if we add a statement that prints the current directory ($(CWD)).

    .SUBDIRS: page1 page2 page3 page4
        println($(absname $(CWD)))
        index.html: image1.jpg image2jpg
            genhtml $+ > $@
  # prints
    /home/jyh/.../page1
    /home/jyh/.../page2
    /home/jyh/.../page3
    /home/jyh/.../page4

3.5.1  Using glob patterns

Of course, this specification is quite rigid. In practice, it is likely that each subdirectory will have a different set of images, and all should be included in the web page. One of the easier solutions is to use one of the directory-listing functions, like glob or ls. The glob function takes a shell pattern, and returns an array of file with matching filenames in the current directory.

    .SUBDIRS: page1 page2 page3 page4
        IMAGES = $(glob *.jpg)
        index.html: $(IMAGES)
            genhtml $+ > $@

3.5.2  Simplified sub-configurations

Another option is to add a configuration file in each of the subdirectories that defines directory-specific information. For this example, we might define a file BuildInfo.om in each of the subdirectories that defines a list of images in that directory. The .SUBDIRS line is similar, but we include the BuildInfo file.

    .SUBDIRS: page1 page2 page3 page4
        include BuildInfo   # Defines the IMAGES variable

        index.html: $(IMAGES)
            genhtml $+ > $@

Where we might have the following configurations.

   page1/BuildInfo.om:
       IMAGES[] = image.jpg
   page2/BuildInfo.om:
       IMAGES[] = ../common/header.jpg winlogo.jpg
   page3/BuildInfo.om:
       IMAGES[] = ../common/header.jpg unixlogo.jpg daemon.jpg
   page4/BuildInfo.om:
       IMAGES[] = fee.jpg fi.jpg foo.jpg fum.jpg

3.5.3  Computing the subdirectory list

The other hardcoded specification is the list of subdirectories page1, ..., page4. Rather than editing the project OMakefile each time a directory is added, we could compute it (again with glob).

    .SUBDIRS: $(glob page*)
        index.html: $(glob *.jpg)
            genhtml $+ > $@

Alternately, the directory structure may be hierarchical. Instead of using glob, we could use the subdirs function, returns each of the directories in a hierarchy. For example, this is the result of evaluating the subdirs function in the omake project root. The P option, passed as the first argument, specifies that the listing is “proper,” it should not include the omake directory itself.

    osh> subdirs(P, .)
    - : <array
            /home/jyh/.../omake/mk : Dir
            /home/jyh/.../omake/RPM : Dir
            ...
            /home/jyh/.../omake/osx_resources : Dir>

Using subdirs, our example is now as follows.

    .SUBDIRS: $(subdirs P, .)
        index.html: $(glob *.jpg)
            genhtml $+ > $@

In this case, every subdirectory will be included in the project.

If we are using the BuildInfo.om option. Instead of including every subdirectory, we could include only those that contain a BuildInfo.om file. For this purpose, we can use the find function, which traverses the directory hierarchy looking for files that match a test expression. In our case, we want to search for files with the name BuildInfo.om. Here is an example call.

    osh> FILES = $(find . -name BuildInfo.om)
    - : <array
            /home/jyh/.../omake/doc/html/BuildInfo.om : File
            /home/jyh/.../omake/src/BuildInfo.om : File
            /home/jyh/.../omake/tests/simple/BuildInfo.om : File>
    osh> DIRS = $(dirof $(FILES))
    - : <array
            /home/jyh/.../omake/doc/html : Dir
            /home/jyh/.../omake/src : Dir
            /home/jyh/.../omake/tests/simple : Dir>

In this example, there are three BuildInfo.om files, in the doc/html, src, and tests/simple directories. The dirof function returns the directories for each of the files.

Returning to our original example, we modify it as follows.

    .SUBDIRS: $(dirof $(find . -name BuildInfo.om))
        include BuildInfo   # Defines the IMAGES variable

        index.html: $(IMAGES)
            genhtml $+ > $@

3.5.4  Temporary directories

Sometimes, your project may include temporary directories–directories where you place intermediate results. these directories are deleted whenever the project is cleanup up. This means, in particular, that you can't place an OMakefile in a temporary directory, because it will be removed when the directory is removed.

Instead, if you need to define a configuration for any of these directories, you will need to define it using a .SUBDIRS body.

    section
        CREATE_SUBDIRS = true

        .SUBDIRS: tmp
            # Compute an MD5 digest
            %.digest: %.comments
               echo $(digest $<) > $@

            # Extract comments from the source files
            %.comments: ../src/%.src
               grep '^#' $< > $@

            .DEFAULT: foo.digest

    .PHONY: clean

    clean:
        rm -rf tmp        

In this example, we define the CREATE_SUBDIRS variable as true, so that the tmp directory will be created if it does not exist. The .SUBDIRS body in this example is a bit contrived, but it illustrates the kind of specification you might expect. The clean phony-target indicates that the tmp directory should be removed when the project is cleaned up.

Chapter 4  OMake concepts and syntax

Projects are specified to omake with OMakefiles. The OMakefile has a format similar to a Makefile. An OMakefile has three main kinds of syntactic objects: variable definitions, function definitions, and rule definitions.

4.1  Variables

Variables are defined with the following syntax. The name is any sequence of alphanumeric characters, underscore _, and hyphen -.

   <name> = <value>

Values are defined as a sequence of literal characters and variable expansions. A variable expansion has the form $(<name>), which represents the value of the <name> variable in the current environment. Some examples are shown below.

   CC = gcc
   CFLAGS = -Wall -g
   COMMAND = $(CC) $(CFLAGS) -O2

In this example, the value of the COMMAND variable is the string gcc -Wall -g -O2.

Unlike make(1), variable expansion is eager and pure (see also the section on Scoping). That is, variable values are expanded immediately and new variable definitions do not affect old ones. For example, suppose we extend the previous example with following variable definitions.

   X = $(COMMAND)
   COMMAND = $(COMMAND) -O3
   Y = $(COMMAND)

In this example, the value of the X variable is the string gcc -Wall -g -O2 as before, and the value of the Y variable is gcc -Wall -g -O2 -O3.

4.2  Adding to a variable definition

Variables definitions may also use the += operator, which adds the new text to an existing definition. The following two definitions are equivalent.

   # Add options to the CFLAGS variable
   CFLAGS = $(CFLAGS) -Wall -g

   # The following definition is equivalent
   CFLAGS += -Wall -g

4.3  Arrays

Arrays can be defined by appending the [] sequence to the variable name and defining initial values for the elements as separate lines. Whitespace is significant on each line. The following code sequence prints c d e.

    X[] =
        a b
        c d e
        f

    println($(nth 2, $(X)))

4.4  Special characters and quoting

The following characters are special to omake: $():,=#\. To treat any of these characters as normal text, they should be escaped with the backslash character \.

    DOLLAR = \$

Newlines may also be escaped with a backslash to concatenate several lines.

    FILES = a.c\
            b.c\
            c.c

Note that the backslash is not an escape for any other character, so the following works as expected (that is, it preserves the backslashes in the string).

    DOSTARGET = C:\WINDOWS\control.ini

An alternative mechanism for quoting special text is the use $"..." escapes. The number of double-quotations is arbitrary. The outermost quotations are not included in the text.

    A = $""String containing "quoted text" ""
    B = $"""Multi-line
        text.
        The # character is not special"""

4.5  Function definitions

Functions are defined using the following syntax.

   <name>(<params>) =
      <indented-body>

The parameters are a comma-separated list of identifiers, and the body must be placed on a separate set of lines that are indented from the function definition itself. For example, the following text defines a function that concatenates its arguments, separating them with a colon.

    ColonFun(a, b) =
        return($(a):$(b))

The return expression can be used to return a value from the function. A return statement is not required; if it is omitted, the returned value is the value of the last expression in the body to be evaluated. NOTE: as of version 0.9.6, return is a control operation, causing the function to immediately return. In the following example, when the argument a is true, the function f immediately returns the value 1 without evaluating the print statement.

    f(a) =
       if $(a)
          return 1
       println(The argument is false)
       return 0

In many cases, you may wish to return a value from a section or code block without returning from the function. In this case, you would use the value operator. In fact, the value operator is not limited to functions, it can be used any place where a value is required. In the following definition, the variable X is defined as 1 or 2, depending on the value of a, then result is printed, and returned from the function.

    f_value(a) =
       X =
          if $(a)
             value 1
          else
             value 2
       println(The value of X is $(X))
       value $(X)

Functions are called using the GNU-make syntax, $(<name> <args)), where <args> is a comma-separated list of values. For example, in the following program, the variable X contains the value foo:bar.

   X = $(ColonFun foo, bar)

If the value of a function is not needed, the function may also be called using standard function call notation. For example, the following program prints the string “She says: Hello world”.

    Printer(name) =
        println($(name) says: Hello world)

    Printer(She)

4.6  Comments

Comments begin with the # character and continue to the end of the line.

4.7  File inclusion

Files may be included with the include or open form. The included file must use the same syntax as an OMakefile.

    include $(Config_file)

The open operation is similar to an include, but the file is included at most once.

    open Config

    # Repeated opens are ignored, so this
    # line has no effect.
    open Config

If the file specified is not an absolute filenmame, both include and open operations search for the file based on the OMAKEPATH variable. In case of the open directive, the search is performed at parse time, and the argument to open may not contain any expressions.

4.8  Scoping, sections

Scopes in omake are defined by indentation level. When indentation is increased, such as in the body of a function, a new scope is introduced.

The section form can also be used to define a new scope. For example, the following code prints the line X = 2, followed by the line X = 1.

    X = 1
    section
        X = 2
        println(X = $(X))

    println(X = $(X))

This result may seem surprising–the variable definition within the section is not visible outside the scope of the section.

The export form, which will be described in detail in Section 6.3, can be used to circumvent this restriction by exporting variable values from an inner scope. For example, if we modify the previous example by adding an export expression, the new value for the X variable is retained, and the code prints the line X = 2 twice.

    X = 1
    section
        X = 2
        println(X = $(X))
        export

    println(X = $(X))

There are also cases where separate scoping is quite important. For example, each OMakefile is evaluated in its own scope. Since each part of a project may have its own configuration, it is important that variable definitions in one OMakefile do not affect the definitions in another.

To give another example, in some cases it is convenient to specify a separate set of variables for different build targets. A frequent idiom in this case is to use the section command to define a separate scope.

   section
      CFLAGS += -g
      %.c: %.y
          $(YACC) $<
      .SUBDIRS: foo

   .SUBDIRS: bar baz

In this example, the -g option is added to the CFLAGS variable by the foo subdirectory, but not by the bar and baz directories. The implicit rules are scoped as well and in this example, the newly added yacc rule will be inherited by the foo subdirectory, but not by the bar and baz ones; furthermore this implicit rule will not be in scope in the current directory.

4.9  Conditionals

Top level conditionals have the following form.

    if <test>
       <true-clause>
    elseif <text>
       <elseif-clause>
    else
       <else-clause>

The <test> expression is evaluated, and if it evaluates to a true value (see Section 9.2 for more information on logical values, and Boolean functions), the code for the <true-clause> is evaluated; otherwise the remaining clauses are evaluated. There may be multiple elseif clauses; both the elseif and else clauses are optional. Note that the clauses are indented, so they introduce new scopes.

When viewed as a predicate, a value corresponds to the Boolean false, if its string representation is the empty string, or one of the strings false, no, nil, undefined, or 0. All other values are true.

The following example illustrates a typical use of a conditional. The OSTYPE variable is the current machine architecture.

    # Common suffixes for files
    if $(equal $(OSTYPE), Win32)
       EXT_LIB = .lib
       EXT_OBJ = .obj
       EXT_ASM = .asm
       EXE = .exe
       export
    elseif $(mem $(OSTYPE), Unix Cygwin)
       EXT_LIB = .a
       EXT_OBJ = .o
       EXT_ASM = .s
       EXE =
       export
    else
       # Abort on other architectures
       eprintln(OS type $(OSTYPE) is not recognized)
       exit(1)

4.10  Matching

Pattern matching is performed with the switch and match forms.

    switch <string>
    case <pattern1>
        <clause1>
    case <pattern2>
        <clause2>
    ...
    default
       <default-clause>

The number of cases is arbitrary. The default clause is optional; however, if it is used it should be the last clause in the pattern match.

For switch, the string is compared with the patterns literally.

    switch $(HOST)
    case mymachine
        println(Building on mymachine)
    default
        println(Building on some other machine)

Patterns need not be constant strings. The following function tests for a literal match against pattern1, and a match against pattern2 with ## delimiters.

   Switch2(s, pattern1, pattern2) =
      switch $(s)
      case $(pattern1)
          println(Pattern1)
      case $"##$(pattern2)##"
          println(Pattern2)
      default
          println(Neither pattern matched)

For match the patterns are egrep(1)-style regular expressions. The numeric variables $1, $2, ... can be used to retrieve values that are matched by \(...\) expressions.

    match $(NODENAME)@$(SYSNAME)@$(RELEASE)
    case $"mymachine.*@\(.*\)@\(.*\)"
        println(Compiling on mymachine; sysname $1 and release $2 are ignored)

    case $".*@Linux@.*2\.4\.\(.*\)"
        println(Compiling on a Linux 2.4 system; subrelease is $1)

    default
        eprintln(Machine configuration not implemented)
        exit(1)

4.11  Objects

OMake is an object-oriented language. Generally speaking, an object is a value that contains fields and methods. An object is defined with a . suffix for a variable. For example, the following object might be used to specify a point (1, 5) on the two-dimensional plane.

    Coord. =
        x = 1
        y = 5
        print(message) =
           println($"$(message): the point is ($(x), $(y)")

    # Define X to be 5
    X = $(Coord.x)

    # This prints the string, "Hi: the point is (1, 5)"
    Coord.print(Hi)

The fields x and y represent the coordinates of the point. The method print prints out the position of the point.

4.12  Classes

We can also define classes. For example, suppose we wish to define a generic Point class with some methods to create, move, and print a point. A class is really just an object with a name, defined with the class directive.

    Point. =
        class Point

        # Default values for the fields
        x = 0
        y = 0

        # Create a new point from the coordinates
        new(x, y) =
           this.x = $(x)
           this.y = $(y)
           return $(this)

        # Move the point to the right
        move-right() =
           x = $(add $(x), 1)
           return $(this)

        # Print the point
        print() =
           println($"The point is ($(x), $(y)")

    p1 = $(Point.new 1, 5)
    p2 = $(p1.move-right)

    # Prints "The point is (1, 5)"
    p1.print()

    # Prints "The point is (2, 5)"
    p2.print()

Note that the variable $(this) is used to refer to the current object. Also, classes and objects are functional—the new and move-right methods return new objects. In this example, the object p2 is a different object from p1, which retains the original (1, 5) coordinates.

4.13  Inheritance

Classes and objects support inheritance (including multiple inheritance) with the extends directive. The following definition of Point3D defines a point with x, y, and z fields. The new object inherits all of the methods and fields of the parent classes/objects.

    Z. =
       z = 0

    Point3D. =
       extends $(Point)
       extends $(Z)
       class Point3D

       print() =
          println($"The 3D point is ($(x), $(y), $(z))")

    # The "new" method was not redefined, so this
    # defines a new point (1, 5, 0).
    p = $(Point3D.new 1, 5)

4.14  static.

The static. object is used to specify values that are persistent across runs of OMake. They are frequently used for configuring a project. Configuring a project can be expensive, so the static. object ensure that the configuration is performed just once. In the following (somewhat trivial) example, a static section is used to determine if the LATEX command is available. The $(where latex) function returns the full pathname for latex, or false if the command is not found.

   static. =
      LATEX_ENABLED = false
      print(--- Determining if LaTeX is installed )
      if $(where latex)
          LATEX_ENABLED = true
          export

      if $(LATEX_ENABLED)
         println($'(enabled)')
      else
         println($'(disabled)')

The OMake standard library provides a number of useful functions for programming the static. tests, as described in Chapter 14. Using the standard library, the above can be rewritten as

   open configure/Configure
   static. =
      LATEX_ENABLED = $(CheckProg latex)

As a matter of style, a static. section that is used for configuration should print what it is doing using the ConfMsgChecking and ConfMsgResult functions (of course, most of helper functions in the standard library would do that automatically).

4.14.1  .STATIC

This feature was introduced in version 0.9.8.5.

There is also a rule form of static section. The syntax can be any of the following three forms.

    # Export all variables defined by the body
    .STATIC:
        <body>

    # Specify file-dependencies
    .STATIC: <dependencies>
        <body>

    # Specify which variables to export, as well as file dependencies
    .STATIC: <vars>: <dependencies>
        <body>

The <vars> are the variable names to be defined, the <dependencies> are file dependencies—the rule is re-evaluated if one of the dependencies is changed. The <vars> and <dependencies> can be omitted; if so, all variables defined in the <body> are exported.

For example, the final example of the previous section can also be implemented as follows.

    open configure/Configure
    .STATIC:
        LATEX_ENABLED = $(CheckProg latex)

The effect is much the same as using static. (instead of .STATIC). However, in most cases .STATIC is preferred, for two reasons.

First, a .STATIC section is lazy, meaning that it is not evaluated until one of its variables is resolved. In this example, if $(LATEX_ENABLED) is never evaluated, the section need never be evaluated either. This is in contrast to the static. section, which always evaluates its body at least once.

A second reason is that a .STATIC section allows for file dependencies, which are useful when the .STATIC section is used for memoization. For example, suppose we wish to create a dictionary from a table that has key-value pairs. By using a .STATIC section, we can perform this computation only when the input file changes (not on every fun of omake). In the following example the awk function is used to parse the file table-file. When a line is encountered with the form key = value, the key/value pair is added the the TABLE.

    .STATIC: table-file
        TABLE = $(Map)
        awk(table-file)
        case $'^\([[:alnum:]]+\) *= *\(.*\)'
            TABLE = $(TABLE.add $1, $2)
            export

It is appropriate to think of a .STATIC section as a rule that must be recomputed whenever the dependencies of the rule change. The targets of the rule are the variables it exports (in this case, the TABLE variable).

4.14.1.1  .MEMO

A .MEMO rule is just like a .STATIC rule, except that the results are not saved between independent runs of omake.

4.14.1.2  :key:

The .STATIC and .MEMO rules also accept a :key: value, which specifies a “key” associated with the values being computed. It is useful to think of a .STATIC rule as a dictionary that associates keys with their values. When a .STATIC rule is evaluated, the result is saved in the table with the :key: defined by the rule (if a :key: is not specified, a default key is used instead). In other words, a rule is like a function. The :key: specifies the function “argument”, and the rule body computes the result.

To illustrate, let's use a .MEMO rule to implement a Fibonacci function.

    fib(i) =
        i = $(int $i)
        .MEMO: :key: $i
            println($"Computing fib($i)...")
            result =
                if $(or $(eq $i, 0), $(eq $i, 1))
                    value $i
                else
                    add($(fib $(sub $i, 1)), $(fib $(sub $i, 2)))
        value $(result)

    println($"fib(10) = $(fib 10)")
    println($"fib(12) = $(fib 12)")

When this script is run, it produces the following output.

    Computing fib(10)...
    Computing fib(9)...
    Computing fib(8)...
    Computing fib(7)...
    Computing fib(6)...
    Computing fib(5)...
    Computing fib(4)...
    Computing fib(3)...
    Computing fib(2)...
    Computing fib(1)...
    Computing fib(0)...
    fib(10) = 55
    Computing fib(12)...
    Computing fib(11)...
    fib(12) = 144

Note that the Fibonacci computation is performed just once for each value of the argument, rather than an exponential number of times. In other words, the .MEMO rule has performed a memoization, hence the name. Note that if .STATIC were used instead, the values would be saved across runs of omake.

As a general guideline, whenever you use a .STATIC or .MEMO rule within a function body, you will usually want to use a :key: value to index the rule by the function argument. However, this is not required. In the following, the .STATIC rule is used to perform some expensive computation once.

    f(x) =
        .STATIC:
            y = $(expensive-computation)
        add($x, $y)

Additonal care should be taken for recursive functions, like the Fibonacci function. If the :key: is omitted, then the rule would be defined in terms of itself, resulting in a cyclic dependency. Here is the output of the Fibonacci program with an omitted :key:.

    Computing fib(10)...
    Computing fib(8)...
    Computing fib(6)...
    Computing fib(4)...
    Computing fib(2)...
    Computing fib(0)...
    fib(10) = 0
    fib(12) = 0

The reason for this behavior is that the result value is not saved until the base case i = 0 || i = 1 is reached, so fib calls itself recursively until reaching fib(0), whereupon the result value is fixed at 0.

In any case, recursive definitions are perfectly acceptable, but you will usually want a :key: argument so that each recursive call has a different :key:. In most cases, this means that the :key: should include all arguments to the function.

4.15  Constants

Internally, OMake represents values in several forms, which we list here.

  • int
    • Constructor: $(int <i>) 9.4.1.
    • Object: Int 12.1.4.
    • An integer is a represented with finite precision using the OCaml representation (31 bits on a 32 platform, and 63 bits on a 64 bit platform).
    • See also: arithmetic 9.4.3.
  • float
    • Constructor: $(float <x>) 9.4.2.
    • Object: Float 12.1.5.
    • A float is a floating-point value, represented in IEEE 64-bit format.
    • See also: arithmetic 9.4.3.
  • array
    • Constructor: $(array <v1>, ..., <vn>) 9.3.1.
    • Object: Array 12.1.7.
    • An array is a finite list of values. Arrays are also defined with an array definition
          X[] =
              <v1>
              ...
              <vn>
      
    • See also: nth 9.3.5, nth-tl 9.3.8, length 9.3.4, …
  • string
    • Object: String 12.1.8.
    • By default, all constant character sequences represent strings, so the simple way to construct a string is to write it down. Internally, the string may be parsed as several pieces. A string often represents an array of values separated by whitespace.
          osh>S = This is a string
          - : <sequence
             "This" : Sequence
             ' ' : White
             "is" : Sequence
             ' ' : White
             "a" : Sequence
             ' ' : White
             "string" : Sequence>
             : Sequence
          osh>length($S)
          - : 4 : Int
      
    • A data string is a string where whitespace is significant. It represents a single value, not an array. The constructors are the quotations $"..." and $'...'.
          osh>S = $'''This is a string'''
          - : <data "This is a string"> : String
      
    • See also: Quoted strings 7.2.
  • file
    • Constructor: $(file <names>) 10.1.1.
    • Object: File 12.1.13.
    • A file object represents the abstract name for a file. The file object can be viewed as an absolute name; the string representation depends on the current directory.
          osh>name = $(file foo)
          - : /Users/jyh/projects/omake/0.9.8.x/foo : File
          osh>echo $(name)
          foo
          osh>cd ..
          - : /Users/jyh/projects/omake : Dir
          osh>echo $(name)
          0.9.8.x/foo
      
    • See also: vmount 10.6.1.
  • directory
    • Constructor: $(dir <names>) 10.1.1.
    • Object: Dir 12.1.14.
    • A directory object is like a file object, but it represents a directory.
  • map (dictionary)
    • Object: Map 12.1.2.
    • A map/dictionary is a table that maps values to values. The Map object is the empty map. The data structure is persistent, and all operations are pure and functional. The special syntax $|key| can be used for keys that are strings.
          osh>table = $(Map)
          osh>table = $(table.add x, int)
          osh>table. +=
                  $|y| = int
          osh>table.find(y)
          - : "int" : Sequence
      
  • channel
    • Constructor: $(fopen <filename>, <mode>) 10.8.4.
    • Objects: InChannel 12.1.16, OutChannel 12.1.17.
    • Channels are used for buffered input/output.
  • function
    • Constructor: $(fun <params>, <body>) 9.5.1.
    • Object: Fun 12.1.9.
    • Functions can be defined in several ways.
      • As an anonymous function,
            $(fun i, j, $(add $i, $j))
        
      • As a named function,
            f(i, j) =
                add($i, $j)
        
      • This feature will be introduced in version 0.9.9.0.As an anonymous function argument.
            osh>foreach(i => $(add $i, 1), 1 2 3)
            - : <array 2 3 4> : Array
        
  • lexer
    • Object: Lexer 10.11.9.
    • This object represents a lexer.
  • parser
    • Object: Parser 10.11.13.
    • This object represents a parser.

Chapter 5  Variables and Naming

During evaluation, there are three different kinds of namespaces. Variables can be private, or they may refer to fields in the current this object, or they can be part of the global namespace. The namespace can be specified directly by including an explicit qualifier before the variable name. The three namespaces are separate; a variable can be bound in one or more simultaneously.

    # private namespace
    private.X = 1
    # current object
    this.X = 2
    # public, globally defined
    global.X = 3

5.1  private.

The private. qualifier is used to define variables that are private to the current file/scope. The values are not accessible outside the scope. Private variables are statically (lexically) scoped.

    Obj. =
       private.X = 1

       print() =
          println(The value of X is: $X)

    # Prints:
    #    The private value of X is: 1
    Obj.print()

    # This is an error--X is private in Obj
    y = $(Obj.X)

In addition, private definitions do not affect the global value of a variable.

   # The public value of x is 1
   x = 1

   # This object uses a private value of x
   Obj. =
       private.x = 2

       print() =
          x = 3
          println(The private value of x is: $x)
          println(The public value of x is: $(public.x))
          f()

   # Prints:
   #    The private value of x is: 3
   #    The public value of x is: 1
   Obj.print()

Private variables have two additional properties.

  1. Private variables are local to the file in which they are defined.
  2. Private variables are not exported by the export directive, unless they are mentioned explicitly.
           private. =
              FLAG = true
    
           section
              FLAG = false
              export
    
           # FLAG is still true
           section
              FLAG = false
              export FLAG
    
           # FLAG is now false
      

5.2  this.

The this. qualifier is used to define fields that are local to an object. Object variables are dynamically scoped.

    X = 1
    f() =
       println(The public value of X is: $(X))

    # Prints:
    #    The public value of X is: 2
    section
       X = 2
       f()

    # X is a protected field in the object
    Obj. =
       this.X = 3

       print() =
          println(The value of this.X is: $(X))
          f()

    # Prints:
    #    The value of this.X is: 3
    #    The public value of X is: 1
    Obj.print()

    # This is legal, it defines Y as 3
    Y = $(Obj.X)

In general, it is a good idea to define object variables as protected. The resulting code is more modular because variables in your object will not produce unexpected clashes with variables defined in other parts of the project.

5.3  global.

The global. qualifier is used to specify global dynamically-scoped variables. In the following example, the global. definition specifies that the binding X = 4 is to be dynamically scoped. Global variables are not defined as fields of an object.

    X = 1
    f() =
       println(The global value of X is: $(X))

    # Prints:
    #    The global value of X is: 2
    section
       X = 2
       f()

    Obj. =
       protected.X = 3

       print() =
          println(The protected value of X is: $(X))
          global.X = 4
          f()

    # Prints:
    #    The protected value of X is: 3
    #    The global value of X is: 4
    Obj.print()

5.4  protected.

In OMake 0.9.8, protected is a synonym for this.

    osh>protected.x = 1
    - : "1" : Sequence
    osh>value $(this.x)
    - : "1" : Sequence

In 0.9.9, this will change, so that the qualifier protected means (in 0.9.9) that a variable is local to the current object or file, and may not be accessed outside it.

5.5  public.

In OMake 0.9.8, public is a synonym for global.

    osh>public.x = 1
    - : "1" : Sequence
    osh>value $(global.x)
    - : "1" : Sequence

In 0.9.9, this will change, so that the qualifier public means (in 0.9.9) that a variable is to be accessible from outside the current file or object.

5.6  Qualified blocks

If several qualified variables are defined simultaneously, a block form of qualifier can be defined. The syntax is similar to an object definition, where the name of the object is the qualifier itself. For example, the following program defines two private variables X and Y.

    private. =
        X = 1
        Y = 2

The qualifier specifies a default namespace for new definitions in the block. The contents of the block is otherwise completely general.

    private. =
        X = 1
        Y = 2
        public.Z = $(add $X, $Y)
        # Prints "The value of Z is 3"
        echo The value of Z is $Z

5.7  declare

When a variable name is unqualified, its namespace is determined by the most recent definition or declaration that is in scope for that variable. We have already seen this in the examples, where a variable definition is qualified, but the subsequent uses are not qualified explicitly. In the following example, the first occurrence of $X refers to the private definition, because that is the most recent. The public definition of X is still 0, but the variable must be qualified explicitly.

    public.X = 0
    private.X = 1
    
    public.print() =
        println(The value of private.X is: $X)
        println(The value of public.X is: $(public.X))

Sometimes it can be useful to declare a variable without defining it. For example, we might have a function that uses a variable X that is to be defined later in the program. The declare directive can be used for this.

    declare public.X

    public.print() =
        println(The value of X is $X)

    # Prints "The value of X is 2"
    X = 2
    print()

Finally, what about variables that are used but not explicitly qualified? In this case, the following rules are used.

  • If the variable is a function parameter, it is private.
  • If the variable is defined in an object, it is qualified with this..
  • Otherwise, the variable is public.

Chapter 6  Expressions and values

omake provides a full programming-language including many system and IO functions. The language is object-oriented – everything is an object, including the base values like numbers and strings. However, the omake language differs from other scripting languages in three main respects.

  • Scoping is dynamic.
  • Apart from IO, the language is entirely functional – there is no assignment operator in the language.
  • Evaluation is normally eager – that is, expressions are evaluated as soon as they are encountered.

To illustrate these features, we will use the osh(1) omake program shell. The osh(1) program provides a toploop, where expressions can be entered and the result printed. osh(1) normally interprets input as command text to be executed by the shell, so in many cases we will use the value form to evaluate an expression directly.

    osh> 1
    *** omake error: File -: line 1, characters 0-1 command not found: 1
    osh> value 1
    - : "1" : Sequence
    osh> ls -l omake
    -rwxrwxr-x  1 jyh jyh 1662189 Aug 25 10:24 omake*

6.1  Dynamic scoping

Dynamic scoping means that the value of a variable is determined by the most recent binding of the variable in scope at runtime. Consider the following program.

    OPTIONS = a b c
    f() =
       println(OPTIONS = $(OPTIONS))
    g() =
       OPTIONS = d e f
       f()

If f() is called without redefining the OPTIONS variable, the function should print the string OPTIONS = a b c.

In contrast, the function g() redefines the OPTIONS variable and evaluates f() in that scope, which now prints the string OPTIONS = d e f.

The body of g defines a local scope – the redefinition of the OPTIONS variable is local to g and does not persist after the function terminates.

    osh> g()
    OPTIONS = d e f
    osh> f()
    OPTIONS = a b c

Dynamic scoping can be tremendously helpful for simplifying the code in a project. For example, the OMakeroot file defines a set of functions and rules for building projects using such variables as CC, CFLAGS, etc. However, different parts of a project may need different values for these variables. For example, we may have a subdirectory called opt where we want to use the -03 option, and a subdirectory called debug where we want to use the -g option. Dynamic scoping allows us to redefine these variables in the parts of the project without having to redefine the functions that use them.

    section
       CFLAGS = -O3
       .SUBDIRS: opt
    section
       CFLAGS = -g
       .SUBDIRS: debug

However, dynamic scoping also has drawbacks. First, it can become confusing: you might have a variable that is intended to be private, but it is accidentally redefined elsewhere. For example, you might have the following code to construct search paths.

   PATHSEP = :
   make-path(dirs) =
      return $(concat $(PATHSEP), $(dirs))

   make-path(/bin /usr/bin /usr/X11R6/bin)
   - : "/bin:/usr/bin:/usr/X11R6/bin" : String

However, elsewhere in the project, the PATHSEP variable is redefined as a directory separator /, and your function suddenly returns the string /bin//usr/bin//usr/X11R6/bin, obviously not what you want.

The private block is used to solve this problem. Variables that are defined in a private block use static scoping – that is, the value of the variable is determined by the most recent definition in scope in the source text.

   private
      PATHSEP = :
   make-path(dirs) =
      return $(concat $(PATHSEP), $(dirs))

   PATHSEP = /
   make-path(/bin /usr/bin /usr/X11R6/bin)
   - : "/bin:/usr/bin:/usr/X11R6/bin" : String

6.2  Functional evaluation

Apart from I/O, omake programs are entirely functional. This has two parts:

  • There is no assignment operator.
  • Functions are values, and may be passed as arguments, and returned from functions just like any other value.

The second item is straightforward. For example, the following program defines an increment function by returning a function value.

   incby(n) =
      g(i) =
         return $(add $(i), $(n))
      return $(g)

   f = $(incby 5)

   value $(f 3)
   - : 8 : Int

The first item may be the most confusing initially. Without assignment, how is it possible for a subproject to modify the global behavior of the project? In fact, the omission is intentional. Build scripts are much easier to write when there is a guarantee that subprojects do not interfere with one another.

However, there are times when a subproject needs to propagate information back to its parent object, or when an inner scope needs to propagate information back to the outer scope.

6.3  Exporting the environment

The export directive can be used to propagate all or part of an inner scope back to its parent. If used without arguments, the entire scope is propagated back to the parent; otherwise the arguments specify which part of the environment to propagate. The most common usage is to export some or all of the definitions in a conditional block. In the following example, the variable B is bound to 2 after the conditional. The A variable is not redefined.

    if $(test)
       A = 1
       B = $(add $(A), 1)
       export B
    else
       B = 2
       export

If the export directive is used without an argument, all of the following is exported:

  • The values of all the dynamically scoped variables (as described in Section 5.5).
  • The current working directory.
  • The current Unix environment.
  • The current implicit rules and implicit dependencies (see also Section 8.11.1).
  • The current set of “phony” target declarations (see Sections 8.10 and 8.11.3).

If the export directive is used with an argument, the argument expression is evaluated and the resulting value is interpreted as follows:

  • If the value is empty, everything is exported, as described above.
  • If the value represents a environment (or a partial environment) captured using the export function, then the corresponding environment or partial environment is exported.
  • Otherwise, the value must be a sequence of strings specifying which items are to be propagated back. The following strings have special meaning:
    • .RULE — implicit rules and implicit dependencies.
    • .PHONY — the set of “phony” target declarations.
    All other strings are interpreted as names of the variables that need to be propagated back.

For example, in the following (somewhat artificial) example, the variables A and B will be exported, and the implicit rule will remain in the environment after the section ends, but the variable TMP and the target tmp_phony will remain unchanged.

section
   A = 1
   B = 2
   TMP = $(add $(A), $(B))

   .PHONY: tmp_phony

   tmp_phony:
      prepare_foo

   %.foo: %.bar tmp_phony
      compute_foo $(TMP) $< $@
   export A B .RULE

6.3.1  Export regions

This feature was introduced in version 0.9.8.5.

The export directive does not need to occur at the end of a block. An export is valid from the point where it is specified to the end of the block in which it is contained. In other words, the export is used in the program that follows it. This can be especially useful for reducing the amount of code you have to write. In the following example, the variable CFLAGS is exported from the both branches of the conditional.

    export CFLAGS
    if $(equal $(OSTYPE), Win32)
        CFLAGS += /DWIN32
    else
        CFLAGS += -UWIN32

6.3.2  Returning values from exported regions

This feature was introduced in version 0.9.8.5.

The use of export does not affect the value returned by a block. The value is computed as usual, as the value of the last statement in the block, ignoring the export. For example, suppose we wish to implement a table that maps strings to unique integers. Consider the following program.

    # Empty map
    table = $(Map)

    # Add an entry to the table
    intern(s) =
        export
        if $(table.mem $s)
            table.find($s)
        else
            private.i = $(table.length)
            table = $(table.add $s, $i)
            value $i

    intern(foo)
    intern(boo)
    intern(moo)
    # Prints "boo = 1"
    println($"boo = $(intern boo)")

Given a string s, the function intern returns either the value already associated with s, or assigns a new value. In the latter case, the table is updated with the new value. The export at the beginning of the function means that the variable table is to be exported. The bindings for s and i are not exported, because they are private.

Evaluation in omake is eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined.

    osh> A = 1
    - : "1"
    osh> A = $(A)$(A)
    - : "11"

In the second definition, A = $(A)$(A), the right-hand-side is evaluated first, producing the sequence 11. Then the variable A is redefined as the new value. When combined with dynamic scoping, this has many of the same properties as conventional imperative programming.

    osh> A = 1
    - : "1"
    osh> printA() =
        println($"A = $A")
    osh> A = $(A)$(A)
    - : "11"
    osh> printA()
    11

In this example, the print function is defined in the scope of A. When it is called on the last line, the dynamic value of A is 11, which is what is printed.

However, dynamic scoping and imperative programming should not be confused. The following example illustrates a difference. The second printA is not in the scope of the definition A = x$(A)$(A)x, so it prints the original value, 1.

    osh> A = 1
    - : "1"
    osh> printA() =
        println($"A = $A")
    osh> section
             A = x$(A)$(A)x
             printA()
    x11x
    osh> printA()
    1

See also Section 7.5 for further ways to control the evaluation order through the use of “lazy” expressions.

6.4  Objects

omake is an object-oriented language. Everything is an object, including base values like numbers and strings. In many projects, this may not be so apparent because most evaluation occurs in the default toplevel object, the Pervasives object, and few other objects are ever defined.

However, objects provide additional means for data structuring, and in some cases judicious use of objects may simplify your project.

Objects are defined with the following syntax. This defines name to be an object with several methods an values.

    name. =                     # += may be used as well
       extends parent-object    # optional
       class class-name         # optional

       # Fields
       X = value
       Y = value

       # Methods
       f(args) =
          body
       g(arg) =
          body

An extends directive specifies that this object inherits from the specified parent-object. The object may have any number of extends directives. If there is more than on extends directive, then fields and methods are inherited from all parent objects. If there are name conflicts, the later definitions override the earlier definitions.

The class directive is optional. If specified, it defines a name for the object that can be used in instanceof operations, as well as :: scoping directives discussed below.

The body of the object is actually an arbitrary program. The variables defined in the body of the object become its fields, and the functions defined in the body become its methods.

6.5  Field and method calls

The fields and methods of an object are named using object.name notation. For example, let's define a one-dimensional point value.

   Point. =
      class Point

      # Default value
      x = $(int 0)

      # Create a new point
      new(x) =
         x = $(int $(x))
         return $(this)

      # Move by one
      move() =
         x = $(add $(x), 1)
         return $(this)

   osh> p1 = $(Point.new 15)
   osh> value $(p1.x)
   - : 15 : Int

   osh> p2 = $(p1.move)
   osh> value $(p2.x)
   - : 16 : Int

The $(this) variable always represents the current object. The expression $(p1.x) fetches the value of the x field in the p1 object. The expression $(Point.new 15) represents a method call to the new method of the Point object, which returns a new object with 15 as its initial value. The expression $(p1.move) is also a method call, which returns a new object at position 16.

Note that objects are functional — it is not possible to modify the fields or methods of an existing object in place. Thus, the new and move methods return new objects.

6.6  Method override

Suppose we wish to create a new object that moves by 2 units, instead of just 1. We can do it by overriding the move method.

   Point2. =
      extends $(Point)

      # Override the move method
      move() =
         x = $(add $(x), 2)
         return $(this)

   osh> p2 = $(Point2.new 15)
   osh> p3 = $(p2.move)
   osh> value $(p3.x)
   - : 17 : Int

However, by doing this, we have completely replaced the old move method.

6.7  Super calls

Suppose we wish to define a new move method that just calls the old one twice. We can refer to the old definition of move using a super call, which uses the notation $(classname::name <args>). The classname should be the name of the superclass, and name the field or method to be referenced. An alternative way of defining the Point2 object is then as follows.

   Point2. =
      extends $(Point)

      # Call the old method twice
      move() =
         this = $(Point::move)
         return $(Point::move)

Note that the first call to $(Point::move) redefines the current object (the this variable). This is because the method returns a new object, which is re-used for the second call.

Chapter 7  Additional language examples

In this section, we'll explore the core language through a series of examples (examples of the build system are the topic of the Chapter 3).

For most of these examples, we'll use the osh command interpreter. For simplicity, the values printed by osh have been abbreviated.

7.1  Strings and arrays

The basic OMake values are strings, sequences, and arrays of values. Sequences are like arrays of values separated by whitespace; the sequences are split on demand by functions that expect arrays.

   osh> X = 1 2
   - : "1 2" : Sequence
   osh> addsuffix(.c, $X)
   - : <array 1.c 2.c> : Array

Sometimes you want to define an array explicitly. For this, use the [] brackets after the variable name, and list each array entry on a single indented line.

   osh> A[] =
           Hello world
           $(getenv HOME)
   - : <array "Hello world" "/home/jyh"> : Array

One central property of arrays is that whitespace in the elements is significant. This can be useful, especially for filenames that contain whitespace.

   # List the current files in the directory
    osh> ls -Q
    "fee"  "fi"  "foo"  "fum"
    osh> NAME[] = 
            Hello world
    - : <array "Hello world"> : Array
    osh> touch $(NAME)
    osh> ls -Q
    "fee"  "fi"  "foo"  "fum"  "Hello world"

7.2  Quoted strings

A String is a single value; whitespace is significant in a string. Strings are introduced with quotes. There are four kinds of quoted elements; the kind is determined by the opening quote. The symbols ' (single-quote) and " (double-quote) introduce the normal shell-style quoted elements. The quotation symbols are included in the result string. Variables are always expanded within a quote of this kind. Note that the osh(1) (Chapter 15) printer escapes double-quotes within the string; these are only for printing, they are not part of the string itself.

    osh> A = 'Hello "world"'
    - : "'Hello \"world\"'" : String
    osh> B = "$(A)"
    - : "\"'Hello \"world\"'\"" : String
    osh> C = 'Hello \'world\''
    - : "'Hello 'world''" : String

A second kind of quote is introduced with the $' and $" quotes. The number of opening and closing quote symbols is arbitrary. These quotations have several properties:

  • The quote delimiters are not part of the string.
  • Backslash \ symbols within the string are treated as normal characters.
  • The strings may span several lines.
  • Variables are expanded within $" sequences, but not within $' sequences.
    osh> A = $'''Here $(IS) an '''' \(example\) string['''
    - : "Here $(IS) an '''' \\(example\\) string[" : String
    osh> B = $""""A is "$(A)" """"
    - : "A is \"Here $(IS) an '''' \\(example\\) string[\" " : String
    osh> value $(A.length)
    - : 38 : Int
    osh> value $(A.nth 5)
    - : "$" : String
    osh> value $(A.rev)
    - : "[gnirts )\\elpmaxe(\\ '''' na )SI($ ereH" : String

Strings and sequences both have the property that they can be merged with adjacent non-whitespace text.

    osh> A = a b c
    - : "a b c" : Sequence
    osh> B = $(A).c
    - : <sequence "a b c" : Sequence ".c" : Sequence> : Sequence
    osh> value $(nth 2, $(B))
    - : "c.c" : String
    osh> value $(length $(B))
    - : 3 : Int

Arrays are different. The elements of an array are never merged with adjacent text of any kind. Arrays are defined by adding square brackets [] after a variable name and defining the elements with an indented body. The elements may include whitespace.

    osh> A[] =
            a b
            foo bar
    - : <array
           "a b" : Sequence
           "foo bar" : Sequence>
           : Array
    osh> echo $(A).c
    a b foo bar .c
    osh> value $(A.length)
    - : 2 : Int
    osh> value $(A.nth 1)
    - : "foo bar" : Sequence

Arrays are quite helpful on systems where filenames often contain whitespace.

    osh> FILES[] =
             c:\Documents and Settings\jyh\one file
             c:\Program Files\omake\second file

    osh> CFILES = $(addsuffix .c, $(FILES))
    osh> echo $(CFILES)
    c:\Documents and Settings\jyh\one file.c c:\Program Files\omake\second file.c

7.3  Files and directories

OMake projects usually span multiple directories, and different parts of the project execute commands in different directories. There is a need to define a location-independent name for a file or directory.

This is done with the $(file <names>) and $(dir <names>) functions.

   osh> mkdir tmp
   osh> F = $(file fee)
   osh> section:
            cd tmp
            echo $F
   ../fee
   osh> echo $F
   fee

Note the use of a section: to limit the scope of the cd command. The section temporarily changes to the tmp directory where the name of the file is ../fee. Once the section completes, we are still in the current directory, where the name of the file is fee.

One common way to use the file functions is to define proper file names in your project OMakefile, so that references within the various parts of the project will refer to the same file.

    osh> cat OMakefile
    ROOT = $(dir .)
    TMP  = $(dir tmp)
    BIN  = $(dir bin)
    ...

7.4  Iteration, mapping, and foreach

Most builtin functions operate transparently on arrays.

    osh> addprefix(-D, DEBUG WIN32)
    - : -DDEBUG -DWIN32 : Array
    osh> mapprefix(-I, /etc /tmp)
    - : -I /etc -I /tmp : Array
    osh> uppercase(fee fi foo fum)
    - : FEE FI FOO FUM : Array

The mapprefix and addprefix functions are slightly different (the addsuffix and mapsuffix functions are similar). The addprefix adds the prefex to each array element. The mapprefix doubles the length of the array, adding the prefix as a new array element before each of the original elements.

Even though most functions work on arrays, there are times when you will want to do it yourself. The foreach function is the way to go. The foreach function has two forms, but the form with a body is most useful. In this form, the function takes two arguments and a body. The second argument is an array, and the first is a variable. The body is evaluated once for each element of the array, where the variable is bound to the element. Let's define a function to add 1 to each element of an array of numbers.

   osh> add1(l) =
            foreach(i, $l):
                add($i, 1)
   osh> add1(7 21 75)
   - : 8 22 76 : Array

Sometimes you have an array of filenames, and you want to define a rule for each of them. Rules are not special, you can define them anywhere a statement is expected. Say we want to write a function that describes how to process each file, placing the result in the tmp/ directory.

   TMP = $(dir tmp)

   my-special-rule(files) =
      foreach(name, $(files))
         $(TMP)/$(name): $(name)
            process $< > $@

Later, in some other part of the project, we may decide that we want to use this function to process some files.

   # These are the files to process in src/lib
   MY_SPECIAL_FILES[] =
       fee.src
       fi.src
       file with spaces in its name.src
   my-special-rule($(MY_SPECIAL_FILES))

The result of calling my-special-rule is exactly the same as if we had written the following three rules explicitly.

    $(TMP)/fee.src: fee.src
        process fee > $@
    $(TMP)/fi.src: fi.src
        process fi.src > $@
    $(TMP)/$"file with spaces in its name.src": $"file with spaces in its name.src"
        process $< > $@

Of course, writing these rules is not nearly as pleasant as calling the function. The usual properties of function abstraction give us the usual benefits. The code is less redundant, and there is a single location (the my-special-rule function) that defines the build rule. Later, if we want to modify/update the rule, we need do so in only one location.

7.5  Lazy expressions

Evaluation in omake is normally eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined.

There are two ways to control this behavior. The $`(v) form introduces lazy behavior, and the $,(v) form restores eager behavior. Consider the following sequence.

    osh> A = 1
    - : "1" : Sequence
    osh> B = 2
    - : "2" : Sequence
    osh> C = $`(add $(A), $,(B))
    - : $(apply add $(apply A) "2" : Sequence)
    osh> println(C = $(C))
    C = 3
    osh> A = 5
    - : "5" : Sequence
    osh> B = 6
    - : "6" : Sequence
    osh> println(C = $(C))
    C = 7

The definition C = $`(add $(A), $,(B)) defines a lazy application. The add function is not applied in this case until its value is needed. Within this expression, the value $,(B) specifies that B is to be evaluated immediately, even though it is defined in a lazy expression.

The first time that we print the value of C, it evaluates to 3 since A is 1 and B is 2. The second time we evaluate C, it evaluates to 7 because A has been redefined to 5. The second definition of B has no effect, since it was evaluated at definition time.

7.5.1  A larger example of lazy expressions

Lazy expressions are not evaluated until their result is needed. Some people, including this author, frown on overuse of lazy expressions, mainly because it is difficult to know when evaluation actually happens. However, there are cases where they pay off.

One example comes from option processing. Consider the specification of “include” directories on the command line for a C compiler. If we want to include files from /home/jyh/include and ../foo, we specify it on the command line with the options -I/home/jyh/include -I../foo.

Suppose we want to define a generic rule for building C files. We could define a INCLUDES array to specify the directories to be included, and then define a generic implicit rule in our root OMakefile.

    # Generic way to compile C files.
    CFLAGS = -g
    INCLUDES[] =
    %.o: %.c
       $(CC) $(CFLAGS) $(INCLUDES) -c $<

    # The src directory builds my_widget+ from 4 source files.
    # It reads include files from the include directory.
    .SUBDIRS: src
        FILES = fee fi foo fum
        OFILES = $(addsuffix .o, $(FILES))
        INCLUDES[] += -I../include
        my_widget: $(OFILES)
           $(CC) $(CFLAGS) -o $@ $(OFILES)

But this is not quite right. The problem is that INCLUDES is an array of options, not directories. If we later wanted to recover the directories, we would have to strip the leading -I prefix, which is a hassle. Furthermore, we aren't using proper names for the directories. The solution here is to use a lazy expression. We'll define INCLUDES as a directory array, and a new variable PREFIXED_INCLUDES that adds the -I prefix. The PREFIXED_INCLUDES is computed lazily, ensuring that the value uses the most recent value of the INCLUDES variable.

    # Generic way to compile C files.
    CFLAGS = -g
    INCLUDES[] =
    PREFIXED_INCLUDES[] = $`(addprefix -I, $(INCLUDES))
    %.o: %.c
       $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) -c $<

    # For this example, we define a proper name for the include directory
    STDINCLUDE = $(dir include)

    # The src directory builds my_widget+ from 4 source files.
    # It reads include files from the include directory.
    .SUBDIRS: src
        FILES = fee fi foo fum
        OFILES = $(addsuffix .o, $(FILES))
        INCLUDES[] += $(STDINCLUDE)
        my_widget: $(OFILES)
           $(CC) $(CFLAGS) -o $@ $(OFILES)

Note that there is a close connection between lazy values and functions. In the example above, we could equivalently define PREFIXED_INCLUDES as a function with zero arguments.

    PREFIXED_INCLUDES() =
        addprefix(-I, $(INCLUDES))

7.6  Scoping and exports

The OMake language is functional (apart from IO and shell commands). This comes in two parts: functions are first-class, and variables are immutable (there is no assignment operator). The latter property may seem strange to users used to GNU make, but it is actually a central point of OMake. Since variables can't be modified, it is impossible (or at least hard) for one part of the project to interfere with another.

To be sure, pure functional programming can be awkward. In OMake, each new indentation level introduces a new scope, and new definitions in that scope are lost when the scope ends. If OMake were overly strict about scoping, we would wind up with a lot of convoluted code.

   osh> X = 1
   osh> setenv(BOO, 12)
   osh> if $(equal $(OSTYPE), Win32)
            setenv(BOO, 17)
            X = 2
   osh> println($X $(getenv BOO))
   1 12

The export command presents a way out. It takes care of “exporting” a value (or the entire variable environment) from an inner scope to an outer one.

   osh> X = 1
   osh> setenv(BOO, 12)
   osh> if $(equal $(OSTYPE), Win32)
            setenv(BOO, 17)
            X = 2
            export
   osh> println($X $(getenv BOO))
   2 17

Exports are especially useful in loop to export values from one iteration of a loop to the next.

   # Ok, let's try to add up the elements of the array
   osh>sum(l) =
           total = 0
           foreach(i, $l)
               total = $(add $(total), $i)
           value $(total)
   osh>sum(1 2 3)
   - : 0 : Int

   # Oops, that didn't work!
   osh>sum(l) =
           total = 0
           foreach(i, $l)
               total = $(add $(total), $i)
               export
           value $(total)
   osh>sum(1 2 3)
   - : 6 : Int

A while loop is another form of loop, with an auto-export.

    osh>i = 0
    osh>total = 0
    osh>while $(lt $i, 10)
            total = $(add $(total), $i)
            i = $(add $i, 1)
    osh>println($(total))
    45

7.7  Shell aliases

Sometimes you may want to define an alias, an OMake command that masquerades as a real shell command. You can do this by adding your function as a method to the Shell object.

For an example, suppose we use the awk function to print out all the comments in a file.

    osh>cat comment.om
    # Comment function
    comments(filename) =
        awk($(filename))
        case $'^#'
            println($0)
    # File finished
    osh>include comment
    osh>comments(comment.om)
    # Comment function
    # File finished

To add it as an alias, add the method (using += to preserve the existing entries in the Shell).

   osh>Shell. +=
           printcom(argv) =
               comments($(nth 0, $(argv)))
   osh>printcom comment.om > output.txt
   osh>cat output.txt
   # Comment function
   # File finished

A shell command is passed an array of arguments argv. This does not include the name of the alias.

7.8  Input/output redirection on the cheap

As it turns out, scoping also provides a nice alternate way to perform redirection. Suppose you have already written a lot of code that prints to the standard output channel, but now you decide you want to redirect it. One way to do it is using the technique in the previous example: define your function as an alias, and then use shell redirection to place the output where you want.

There is an alternate method that is easier in some cases. The variables stdin, stdout, and stderr define the standard I/O channels. To redirect output, redefine these variables as you see fit. Of course, you would normally do this in a nested scope, so that the outer channels are not affected.

    osh>f() =
            println(Hello world)
    osh>f()
    Hello world
    osh>section:
            stdout = $(fopen output.txt, w)
            f()
            close($(stdout))
    osh>cat output.txt
    Hello world

This also works for shell commands. If you like to gamble, you can try the following example.

    osh>f() =
            println(Hello world)
    osh>f()
    Hello world
    osh>section:
            stdout = $(fopen output.txt, w)
            f()
            cat output.txt
            close($(stdout))
    osh>cat output.txt
    Hello world
    Hello world

Chapter 8  Rules

Rules are used by OMake to specify how to build files. At its simplest, a rule has the following form.

    <target>: <dependencies>
        <commands>

The <target> is the name of a file to be built. The <dependencies> are a list of files that are needed before the <target> can be built. The <commands> are a list of indented lines specifying commands to build the target. For example, the following rule specifies how to compile a file hello.c.

    hello.o: hello.c
        $(CC) $(CFLAGS) -c -o hello.o hello.c

This rule states that the hello.o file depends on the hello.c file. If the hello.c file has changed, the command $(CC) $(CFLAGS) -c -o hello.o hello.c is to be executed to update the target file hello.o.

A rule can have an arbitrary number of commands. The individual command lines are executed independently by the command shell. The commands do not have to begin with a tab, but they must be indented from the dependency line.

In addition to normal variables, the following special variables may be used in the body of a rule.

  • $*: the target name, without a suffix.
  • $@: the target name.
  • $^: a list of the sources, in alphabetical order, with duplicates removed.
  • $+: all the sources, in the original order.
  • $<: the first source.

For example, the above hello.c rule may be simplified as follows.

    hello.o: hello.c
        $(CC) $(CFLAGS) -c -o $@ $<

Unlike normal values, the variables in a rule body are expanded lazily, and binding is dynamic. The following function definition illustrates some of the issues.

    CLibrary(name, files) =
        OFILES = $(addsuffix .o, $(files))

        $(name).a: $(OFILES)
            $(AR) cq $@ $(OFILES)

This function defines a rule to build a program called $(name) from a list of .o files. The files in the argument are specified without a suffix, so the first line of the function definition defines a variable OFILES that adds the .o suffix to each of the file names. The next step defines a rule to build a target library $(name).a from the $(OFILES) files. The expression $(AR) is evaluated when the function is called, and the value of the variable AR is taken from the caller's scope (see also the section on Scoping).

8.1  Implicit rules

Rules may also be implicit. That is, the files may be specified by wildcard patterns. The wildcard character is %. For example, the following rule specifies a default rule for building .o files.

    %.o: %.c
        $(CC) $(CFLAGS) -c -o $@ $*.c

This rule is a template for building an arbitrary .o file from a .c file.

By default, implicit rules are only used for the targets in the current directory. However subdirectories included via the .SUBDIRS rules inherit all the implicit rules that are in scope (see also the section on Scoping).

8.2  Bounded implicit rules

Implicit rules may specify the set of files they apply to. The following syntax is used.

    <targets>: <pattern>: <dependencies>
        <commands>

For example, the following rule applies only to the files a.o and b.o.

   a.o b.o: %.o: %.c
        $(CC) $(CFLAGS) -DSPECIAL -c $*.c

8.3  section

Frequently, the commands in a rule body are expressions to be evaluated by the shell. omake also allows expressions to be evaluated by omake itself.

The syntax of these “computed rules” uses the section expression. The following rule uses the omake IO functions to produce the target hello.c.

    hello.c:
        section
            FP = fopen(hello.c, w)
            fprintln($(FP), $""#include <stdio.h> int main() { printf("Hello world\n"); }"")
            close($(FP))

This example uses the quotation $""..."" (see also Section B.1.6) to quote the text being printed. These quotes are not included in the output file. The fopen, fprintln, and close functions perform file IO as discussed in the IO section.

In addition, commands that are function calls, or special expressions, are interpreted correctly. Since the fprintln function can take a file directly, the above rule can be abbreviated as follows.

    hello.c:
       fprintln($@, $""#include <stdio.h> int main() { printf("Hello world\n"); }"")

8.4  section rule

Rules can also be computed using the section rule form, where a rule body is expected instead of an expression. In the following rule, the file a.c is copied onto the hello.c file if it exists, otherwise hello.c is created from the file default.c.

    hello.c:
        section rule
           if $(target-exists a.c)
              hello.c: a.c
                 cat a.c > hello.c
           else
              hello.c: default.c
                 cp default.c hello.c

8.5  Special dependencies

8.5.1  :exists:

In some cases, the contents of a dependency do not matter, only whether the file exists or not. In this case, the :exists: qualifier can be used for the dependency.

    foo.c: a.c :exists: .flag
       if $(test -e .flag)
           $(CP) a.c $@

8.5.2  :effects:

Some commands produce files by side-effect. For example, the latex(1) command produces a .aux file as a side-effect of producing a .dvi file. In this case, the :effects: qualifier can be used to list the side-effect explicitly. omake is careful to avoid simultaneously running programs that have overlapping side-effects.

    paper.dvi: paper.tex :effects: paper.aux
        latex paper

8.5.3  :value:

The :value: dependency is used to specify that the rule execution depends on the value of an expression. For example, the following rule

    a: b c :value: $(X)
        ...

specifies that “a” should be recompiled if the value of $(X) changes (X does not have to be a filename). This is intended to allow greater control over dependencies.

In addition, it can be used instead of other kinds of dependencies. For example, the following rule:

    a: b :exists: c
        commands

is the same as

    a: b :value: $(target-exists c)
        commands

Notes:

  • The values are arbitrary (they are not limited to variables)
  • The values are evaluated at rule expansion time, so expressions containing variables like $@, $^, etc are legal.

8.6  .SCANNER rules

Scanner rules define a way to specify automatic dependency scanning. A .SCANNER rule has the following form.

    .SCANNER: target: dependencies
        commands

The rule is used to compute additional dependencies that might be defined in the source files for the specified target. The result of executing the scanner commands must be a sequence of dependencies in OMake format, printed to the standard output. For example, on GNU systems the gcc -MM foo.c produces dependencies for the file foo.c (based on #include information).

We can use this to specify a scanner for C files that adds the scanned dependencies for the .o file. The following scanner specifies that dependencies for a file, say foo.o can be computed by running gcc -MM foo.c. Furthermore, foo.c is a dependency, so the scanner should be recomputed whenever the foo.c file changes.

    .SCANNER: %.o: %.c
        gcc -MM $<

Let's suppose that the command gcc -MM foo.c prints the following line.

    foo.o: foo.h /usr/include/stdio.h

The result is that the files foo.h and /usr/include/stdio.h are considered to be dependencies of foo.o—that is, foo.o should be rebuilt if either of these files changes.

This works, to an extent. One nice feature is that the scanner will be re-run whenever the foo.c file changes. However, one problem is that dependencies in C are recursive. That is, if the file foo.h is modified, it might include other files, establishing further dependencies. What we need is to re-run the scanner if foo.h changes too.

We can do this with a value dependency. The variable $& is defined as the dependency results from any previous scan. We can add these as dependencies using the digest function, which computes an MD5 digest of the files.

    .SCANNER: %.o: %.c :value: $(digest $&)
        gcc -MM $<

Now, when the file foo.h changes, its digest will also change, and the scanner will be re-run because of the value dependency (since $& will include foo.h).

This still is not quite right. The problem is that the C compiler uses a search-path for include files. There may be several versions of the file foo.h, and the one that is chosen depends on the include path. What we need is to base the dependencies on the search path.

The $(digest-in-path-optional ...) function computes the digest based on a search path, giving us a solution that works.

    .SCANNER: %.o: %.c :value: $(digest-in-path-optional $(INCLUDES), $&)
       gcc -MM $(addprefix -I, $(INCLUDES)) $<

The standard output of the scanner rules will be captured by OMake and is not allowed to contain any content that OMake will not be able to parse as a dependency. The output is allowed to contain dependency specifications for unrelated targets, however such dependencies will be ignored. The scanner rules are allowed to produce arbitrary output on the standard error channel — such output will be handled in the same way as the output of the ordinary rules (in other words, it will be presented to the user, when dictated by the --output-… options enabled).

Additional examples of the .SCANNER rules can be found in Section 3.4.3.

8.6.1  Named scanners, and the :scanner: dependencies

Sometimes it may be useful to specify explicitly which scanner should be used in a rule. For example, we might compile .c files with different options, or (heaven help us) we may be using both gcc and the Microsoft Visual C++ compiler cl. In general, the target of a .SCANNER is not tied to a particular target, and we may name it as we like.

    .SCANNER: scan-gcc-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&)
        gcc -MM $(addprefix -I, $(INCLUDES)) $<

    .SCANNER: scan-cl-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&)
        cl --scan-dependencies-or-something $(addprefix /I, $(INCLUDES)) $<

The next step is to define explicit scanner dependencies. The :scanner: dependency is used for this. In this case, the scanner dependencies are specified explicitly.

    $(GCC_FILES): %.o: %.c :scanner: scan-gcc-%c
        gcc ...

    $(CL_FILES): %.obj: %.c :scanner: scan-cl-%c
        cl ...

Explicit :scanner: scanner specification may also be used to state that a single .SCANNER rule should be used to generate dependencies for more than one target. For example,

    .SCANNER: scan-all-c: $(GCC_FILES) :value: $(digest-in-path-optional $(INCLUDES), $&)
        gcc -MM $(addprefix -I, $(INCLUDES)) $(GCC_FILES)

    $(GCC_FILES): %.o: %.c :scanner: scan-all-c
        ...

The above has the advantage of only running gcc once and a disadvantage that when a single source file changes, all the files will end up being re-scanned.

8.6.2  Notes

In most cases, you won't need to define scanners of your own. The standard installation includes default scanners (both explicitly and implicitly named ones) for C, OCaml, and LATEX files.

The SCANNER_MODE variable controls the usage of implicit scanner dependencies.

The explicit :scanner: dependencies reduce the chances of scanner mis-specifications. In large complicated projects it might be a good idea to set SCANNER_MODE to error and use only the named .SCANNER rules and explicit :scanner: specifications.

8.7  .DEFAULT

The .DEFAULT target specifies a target to be built by default if omake is run without explicit targets. The following rule instructs omake to build the program hello by default

   .DEFAULT: hello

8.8  .SUBDIRS

The .SUBDIRS target is used to specify a set of subdirectories that are part of the project. Each subdirectory should have its own OMakefile, which is evaluated in the context of the current environment.

   .SUBDIRS: src doc tests

This rule specifies that the OMakefiles in each of the src, doc, and tests directories should be read.

In some cases, especially when the OMakefiles are very similar in a large number of subdirectories, it is inconvenient to have a separate OMakefile for each directory. If the .SUBDIRS rule has a body, the body is used instead of the OMakefile.

   .SUBDIRS: src1 src2 src3
      println(Subdirectory $(CWD))
      .DEFAULT: lib.a

In this case, the src1, src2, and src3 files do not need OMakefiles. Furthermore, if one exists, it is ignored. The following includes the file if it exists.

   .SUBDIRS: src1 src2 src3
       if $(file-exists OMakefile)
          include OMakefile
       .DEFAULT: lib.a

8.9  .INCLUDE

The .INCLUDE target is like the include directive, but it specifies a rule to build the file if it does not exist.

   .INCLUDE: config
       echo "CONFIG_READ = true" > config

    echo CONFIG_READ is $(CONFIG_READ)

You may also specify dependencies to an .INCLUDE rule.

   .INCLUDE: config: config.defaults
      cp config.defaults config

A word of caution is in order here. The usual policy is used for determining when the rule is out-of-date. The rule is executed if any of the following hold.

  • the target does not exist,
  • the rule has never been executed before,
  • any of the following have changed since the last time the rule was executed,
    • the target,
    • the dependencies,
    • the commands-text.

In some of the cases, this will mean that the rule is executed even if the target file already exists. If the target is a file that you expect to edit by hand (and therefore you don't want to overwrite it), you should make the rule evaluation conditional on whether the target already exists.

   .INCLUDE: config: config.defaults
       # Don't overwrite my carefully hand-edited file
       if $(not $(file-exists config))
          cp config.defaults config

8.10  .PHONY

A “phony” target is a target that is not a real file, but exists to collect a set of dependencies. Phony targets are specified with the .PHONY rule. In the following example, the install target does not correspond to a file, but it corresponds to some commands that should be run whenever the install target is built (for example, by running omake install).

   .PHONY: install

   install: myprogram.exe
      cp myprogram.exe /usr/bin

8.11  Rule scoping

As we have mentioned before, omake is a scoped language. This provides great flexibility—different parts of the project can define different configurations without interfering with one another (for example, one part of the project might be compiled with CFLAGS=-O3 and another with CFLAGS=-g).

But how is the scope for a target file selected? Suppose we are building a file dir/foo.o. omake uses the following rules to determine the scope.

  • First, if there is an explicit rule for building dir/foo.o (a rule with no wildcards), the context for that rule determines the scope for building the target.
  • Otherwise, the directory dir/ must be part of the project. This normally means that a configuration file dir/OMakefile exists (although, see the .SUBDIRS section for another way to specify the OMakefile). In this case, the scope of the target is the scope at the end of the dir/OMakefile.

To illustrate rule scoping, let's go back to the example of a “Hello world” program with two files. Here is an example OMakefile (the two definitions of CFLAGS are for illustration).

    # The executable is compiled with debugging
    CFLAGS = -g
    hello: hello_code.o hello_lib.o
       $(CC) $(CFLAGS) -o $@ $+

    # Redefine CFLAGS
    CFLAGS += -O3

In this project, the target hello is explicit. The scope of the hello target is the line beginning with hello:, where the value of CFLAGS is -g. The other two targets, hello_code.o and hello_lib.o do not appear as explicit targets, so their scope is at the end of the OMakefile, where the CFLAGS variable is defined to be -g -O3. That is, hello will be linked with CFLAGS=-g and the .o files will be compiled with CFLAGS=-g -O3.

We can change this behavior for any of the targets by specifying them as explicit targets. For example, suppose we wish to compile hello_lib.o with a preprocessor variable LIBRARY.

    # The executable is compiled with debugging
    CFLAGS = -g
    hello: hello_code.o hello_lib.o
       $(CC) $(CFLAGS) -o $@ $+

    # Compile hello_lib.o with CFLAGS = -g -DLIBRARY
    section
        CFLAGS += -DLIBRARY
        hello_lib.o:

    # Redefine CFLAGS
    CFLAGS += -O3

In this case, hello_lib.o is also mentioned as an explicit target, in a scope where CFLAGS=-g -DLIBRARY. Since no rule body is specified, it is compiled using the usual implicit rule for building .o files (in a context where CFLAGS=-g -DLIBRARY).

8.11.1  Scoping of implicit rules

Implicit rules (rules containing wildcard patterns) are not global, they follow the normal scoping convention. This allows different parts of a project to have different sets of implicit rules. If we like, we can modify the example above to provide a new implicit rule for building hello_lib.o.

    # The executable is compiled with debugging
    CFLAGS = -g
    hello: hello_code.o hello_lib.o
       $(CC) $(CFLAGS) -o $@ $+

    # Compile hello_lib.o with CFLAGS = -g -DLIBRARY
    section
        %.o: %.c
            $(CC) $(CFLAGS) -DLIBRARY -c $<
        hello_lib.o:

    # Redefine CFLAGS
    CFLAGS += -O3

In this case, the target hello_lib.o is built in a scope with a new implicit rule for building %.o files. The implicit rule adds the -DLIBRARY option. This implicit rule is defined only for the target hello_lib.o; the target hello_code.o is built as normal.

8.11.2  Scoping of .SCANNER rules

Scanner rules are scoped the same way as normal rules. If the .SCANNER rule is explicit (containing no wildcard patterns), then the scope of the scan target is the same as the the rule. If the .SCANNER rule is implicit, then the environment is taken from the :scanner: dependency.

    # The executable is compiled with debugging
    CFLAGS = -g
    hello: hello_code.o hello_lib.o
       $(CC) $(CFLAGS) -o $@ $+

    # scanner for .c files
    .SCANNER: scan-c-%.c: %.c
       $(CC) $(CFLAGS) -MM $<

    # Compile hello_lib.o with CFLAGS = -g -DLIBRARY
    section
        CFLAGS += -DLIBRARY
        hello_lib.o: hello_lib.c :scanner: scan-c-hello_lib.c
           $(CC) $(CFLAGS) -c $<

    # Compile hello_code.c with CFLAGS = -g -O3
    section
        CFLAGS += -O3
        hello_code.o: hello_code.c :scanner: scan-c-hello_code.c
           $(CC) $(CFLAGS) -c $<

Again, this is for illustration—it is unlikely you would need to write a complicated configuration like this! In this case, the .SCANNER rule specifies that the C-compiler should be called with the -MM flag to compute dependencies. For the target hello_lib.o, the scanner is called with CFLAGS=-g -DLIBRARY, and for hello_code.o it is called with CFLAGS=-g -O3.

8.11.3  Scoping for .PHONY targets

Phony targets (targets that do not correspond to files) are defined with a .PHONY: rule. Phony targets are scoped as usual. The following illustrates a common mistake, where the .PHONY target is declared after it is used.

    # !!This example is broken!!
    all: hello

    hello: hello_code.o hello_lib.o
        $(CC) $(CFLAGS) -o $@ $+

    .PHONY: all

This doesn't work as expected because the .PHONY declaration occurs too late. The proper way to write this example is to place the .PHONY declaration first.

    # Phony targets must be declared before being used
    .PHONY: all

    all: hello

    hello: hello_code.o hello_lib.o
        $(CC) $(CFLAGS) -o $@ $+

Phony targets are passed to subdirectories. As a practical matter, it is wise to declare all .PHONY targets in your root OMakefile, before any .SUBDIRS. This will ensure that 1) they are considered as phony targets in each of the subdirectories, and 2) you can build them from the project root.

    .PHONY: all install clean

    .SUBDIRS: src lib clib

Note that when a .PHONY target is inherited by a subdirectory via a .SUBDIRS, a whole hierarchy of .PHONY targets (that are a part of the global one) is created, as described in Section 8.12.2 below.

8.12  Running OMake from a subdirectory

Running omake foo asks OMake to build the file foo in context of the whole project, even when running from a subdirectory of the project. Therefore, if bar/baz is a regular target (not a .PHONY one), then running omake bar/baz and running (cd bar; omake baz) are usually equivalent.

There are two noteworthy exceptions to the above rule:

  • If the subdirectory is not a part of the project (there is no .SUBDIRS) for it, then OMake will complain if you try to run it in that directory.
  • If a subdirectory contains an OMakeroot of its own, this would designate the subdirectory as a separate project (which is usually a bad idea and is not recommended).

8.12.1  Phony targets in a subdirectory

Suppose you have a .PHONY: clean declared in your root OMakefile and both the root OMakefile and the OMakefile in some of the subdirectories contain clean: rules. In this case

  • Running omake clean in the root directory will execute all the rules (each in the appropriate directory);
  • Running omake clean in the subdirectory will execute just its local one, as well as the ones from the subdirectories of the current directory.

The above equally applies to the built-in .PHONY targets, including .DEFAULT. Namely, if OMake is executed (without argument) in the root directory of a project, all the .DEFAULT targets in the project will be built. On the other hand, when OMake is executed (without argument) in a subdirectory, only the .DEFAULT targets defined in and under that subdirectory will be built.

The following Section explains the underlying semantics that gives rise to the above behavior.

8.12.2  Hierarchy of .PHONY targets

When the the root OMakefile contains a .PHONY: clean directive, it creates:

  • A “global” phony target /.PHONY/clean (note the leading “/”);
  • A “relative” phony target attached to the current directory — .PHONY/clean (note the lack of the leading “/”);
  • A dependency /.PHONY/clean: .PHONY/clean.

All the clean: ... rules in the root OMakefile following this .PHONY: clean declaration would be interpreted as rules for the .PHONY/clean target.

Now when OMake then comes across a .SUBDIRS: foo directive (when it is in scope of the above .PHONY: clean declaration), it does the following:

  • Creates a new .PHONY/foo/clean “relative” phony target;
  • Creates the dependency .PHONY/clean: .PHONY/foo/clean;
  • Processes the body of the .SUBDIRS: foo directive, or reads the foo/OMakefile file, if the body is empty. While doing that, it interprets its instructions relative to the foo directory. In particular, all the clean: ... rules will be taken to apply to .PHONY/foo/clean.

Now when you run omake clean in the root directory of the project, it is interpreted as omake .PHONY/clean (similar to how it happens with the normal targets), so both the rules for .PHONY/clean are executed and the rules for its dependency .PHONY/foo/clean. Running (cd foo; omake clean) is, as for normal targets, equivalent to running omake .PHONY/foo/clean and only those rules that apply to .PHONY/foo/clean will be executed.

8.13  Pathnames in rules

In rules, the targets and dependencies are first translated to file values (as in the file function). They are then translated to strings for the command line. This can cause some unexpected behavior. In the following example, the absname function is the absolute pathname for the file a, but the rule still prints the relative pathname.

    .PHONY: demo
    demo: $(absname a)
        echo $<

    # omake demo
    a

There is arguably a good reason for this. On Win32 systems, the / character is viewed as an “option specifier.” The pathname separator is the \ character. OMake translates the filenames automatically so that things work as expected on both systems.

   demo: a/b
       echo $<

   # omake demo (on a Unix system)
   a/b
   # omake demo (on a Win32 system)
   a\b

Sometimes you may wish that target strings to be passed literally to the commands in the rule. One way to do this is to specify them literally.

    SRC = a/b $(absname c/d)
    demo: $(SRC)
        echo $(SRC)

    # omake demo (on a Win32 system)
    a/b c:\...\c\d

Alternately, you might wish that filenames be automatically expanded to absolute pathnames. For example, this might be useful when parsing the OMake output to look for errors. For this, you can use the --absname option (Section A.3.20). If you call omake with the --absname option, all filenames will be expanded to absolute names.

    # omake --absname demo (on a Unix system)
    /home/.../a/b /home/.../c/d

Alternately, the --absname option is scoped. If you want to use it for only a few rules, you can use the OMakeFlags function to control how it is applied.

   section
      OMakeFlags(--absname)
      demo: a
          echo $<

   # omake demo
   /home/.../a

N.B. The --absname option is currently an experimental feature.

Chapter 9  Base library

9.1  Builtin variables

OMAKE_VERSION

Version of OMake.

STDLIB

The directory where the OMake standard library files reside. At startup, the default value is determined as follows.

  • The value of the OMAKELIB environment variable, if set (must contain an absolute path, if set), otherwise
  • On Windows, the registry keys HKEY_CURRENT_USER\SOFTWARE\MetaPRL\OMake\OMAKELIB and HKEY_LOCAL_MACHINE\SOFTWARE\MetaPRL\OMake\OMAKELIB are looked up and the value is used, if exist.
  • Otherwise a compile-time default it used.

The current default value may be accessed by running omake --version

OMAKEPATH

An array of directories specifying the lookup path for the include and open directives (see Section 4.7). The default value is an array of two elements — . and $(STDLIB).

OSTYPE

Set to the machine architecture omake is running on. Possible values are Unix (for all Unix versions, including Linux and Mac OS X), Win32 (for MS-Windows, OMake compiled with MSVC++ or Mingw), and Cygwin (for MS-Windows, OMake compiled with Cygwin).

SYSNAME

The name of the operating system for the current machine.

NODENAME

The hostname of the current machine.

OS_VERSION

The operating system release.

MACHINE

The machine architecture, e.g. i386, sparc, etc.

HOST

Same as NODENAME.

USER

The login name of the user executing the process.

HOME

The home directory of the user executing the process.

PID

The OMake process id.

TARGETS

The command-line target strings. For example, if OMake is invoked with the following command line,

      omake CFLAGS=1 foo bar.c

then TARGETS is defined as foo bar.c.

BUILD_SUMMARY

The BUILD_SUMMARY variable refers to the file that omake uses to summarize a build (the message that is printed at the very end of a build). The file is empty when the build starts. If you wish to add additional messages to the build summary, you can edit/modify this file during the build.

For example, if you want to point out that some action was taken, you can append a message to the build summary.

   foo: boo
       echo "The file foo was built" >> $(BUILD_SUMMARY)
       ...build foo...
VERBOSE

Whether certain commands should be verbose. A boolean flag that is false by default and is set to true when OMake is invoked with the --verbose option.

9.2  Logic, Boolean functions, and control flow

Boolean values in omake are represented by case-insensitive strings. The false value can be represented by the strings false, no, nil, undefined or 0, and everything else is true.

9.2.1  not

   $(not e) : String
      e : String

The not function negates a Boolean value.

For example, $(not false) expands to the string true, and $(not hello world) expands to false.

9.2.2  equal

   $(equal e1, e2) : String
      e1 : String
      e2 : String

The equal function tests for equality of two values.

For example $(equal a, b) expands to false, and $(equal hello world, hello world) expands to true.

9.2.3  and

    $(and e1, ..., en) : String
       e1, ..., en: Sequence

The and function evaluates to the conjunction of its arguments.

For example, in the following code, X is true, and Y is false.

    A = a
    B = b
    X = $(and $(equal $(A), a) true $(equal $(B), b))
    Y = $(and $(equal $(A), a) true $(equal $(A), $(B)))

9.2.4  or

   $(or e1, ..., en) : String
      e1, ..., en: String Sequence

The or function evaluates to the disjunction of its arguments.

For example, in the following code, X is true, and Y is false.

    A = a
    B = b
    X = $(or $(equal $(A), a) false $(equal $(A), $(B)))
    Y = $(or $(equal $(A), $(B)) $(equal $(A), b))

9.2.5  if

    $(if e1, e2[, e3]) : value
       e1 : String
       e2, e3 : value

The if function represents a conditional based on a Boolean value. For example $(if $(equal a, b), c, d) evaluates to d.

Conditionals may also be declared with an alternate syntax.

   if e1
      body1
   elseif e2
      body2
   ...
   else
      bodyn

If the expression e1 is not false, then the expressions in body1 are evaluated and the result is returned as the value of the conditional. Otherwise, if e1 evaluates to false, the evaluation continues with the e2 expression. If none of the conditional expressions is true, then the expressions in bodyn are evaluated and the result is returned as the value of the conditional.

There can be any number of elseif clauses; the else clause is optional.

Note that each branch of the conditional defines its own scope, so variables defined in the branches are normally not visible outside the conditional. The export command may be used to export the variables defined in a scope. For example, the following expression represents a common idiom for defining the C compiler configuration.

   if $(equal $(OSTYPE), Win32)
      CC = cl
      CFLAGS += /DWIN32
      export
   else
      CC = gcc
      CFLAGS += -g -O2
      export

9.2.6  switch, match

The switch and match functions perform pattern matching.

$(switch <arg>, <pattern_1>, <value_1>, ..., <pattern_n>, <value_n>) $(match <arg>, <pattern_1>, <value_1>, ..., <pattern_n>, <value_n>)

The number of <pattern>/<value> pairs is arbitrary. They strictly alternate; the total number of arguments to <match> must be odd.

The <arg> is evaluated to a string, and compared with <pattern_1>. If it matches, the result of the expression is <value_1>. Otherwise evaluation continues with the remaining patterns until a match is found. If no pattern matches, the value is the empty string.

The switch function uses string comparison to compare the argument with the patterns. For example, the following expression defines the FILE variable to be either foo, bar, or the empty string, depending on the value of the OSTYPE variable.

    FILE = $(switch $(OSTYPE), Win32, foo, Unix, bar)

The match function uses regular expression patterns (see the grep function). If a match is found, the variables $1, $2, ... are bound to the substrings matched between \( and \) delimiters. The $0 variable contains the entire match, and $* is an array of the matched substrings. to the matched substrings.

    FILE = $(match foo_xyz/bar.a, foo_\\\(.*\\\)/\\\(.*\\\)\.a, foo_$2/$1.o)

The switch and match functions also have an alternate (more usable) form.

   match e
   case pattern1
      body1
   case pattern2
      body2
   ...
   default
      bodyd

If the value of expression e matches pattern_i and no previous pattern, then body_i is evaluated and returned as the result of the match. The switch function uses string comparison; the match function uses regular expression matching.

   match $(FILE)
   case $".*\(\.[^\/.]*\)"
      println(The string $(FILE) has suffix $1)
   default
      println(The string $(FILE) has no suffix)

9.2.7  try

   try
      try-body
   catch class1(v1)
      catch-body
   when expr
      when-body
   ...
   finally
      finally-body

The try form is used for exception handling. First, the expressions in the try-body are evaluated.

If evaluation results in a value v without raising an exception, then the expressions in the finally-body are evaluated and the value v is returned as the result.

If evaluation of the try-body results in a exception object obj, the catch clauses are examined in order. When examining catch clause catch class(v), if the exception object obj is an instance of the class name class, the variable v is bound to the exception object, and the expressions in the catch-body are evaluated.

If a when clause is encountered while a catch body is being evaluated, the predicate expr is evaluated. If the result is true, evaluation continues with the expressions in the when-body. Otherwise, the next catch clause is considered for evaluation.

If evaluation of a catch-body or when-body completes successfully, returning a value v, without encountering another when clause, then the expressions in the finally-body are evaluated and the value v is returned as the result.

There can be any number of catch clauses; the finally clause is optional.

9.2.8  raise

   raise exn
      exn : Exception

The raise function raises an exception. The exn object can be any object. However, the normal convention is to raise an Exception object.

If the exception is never caught, the whole object will be verbosely printed in the error message. However, if the object is an Exception one and contains a message field, only that field will be included in the error message.

9.2.9  exit

   exit(code)
      code : Int

The exit function terminates omake abnormally.

$(exit <code>)

The exit function takes one integer argument, which is exit code. Non-zero values indicate abnormal termination.

9.2.10  defined

   $(defined sequence) : String
      sequence : Sequence

The defined function test whether all the variables in the sequence are currently defined. For example, the following code defines the X variable if it is not already defined.

    if $(not $(defined X))
       X = a b c
       export

It is acceptable to use qualified names.

    $(defined X.a.b)
    $(defined public.X)

9.2.11  defined-env

   $(defined-env sequence) : String
      sequence : String

The defined-env function tests whether a variable is defined as part of the process environment.

For example, the following code adds the -g compile option if the environment variable DEBUG is defined.

if $(defined-env DEBUG)
    CFLAGS += -g
    export

9.2.12  getenv

   $(getenv name) : String
   $(getenv name, default) : String

The getenv function gets the value of a variable from the process environment. The function takes one or two arguments.

In the single argument form, an exception is raised if the variable variable is not defined in the environment. In the two-argument form, the second argument is returned as the result if the value is not defined.

For example, the following code defines the variable X to be a space-separated list of elements of the PATH environment variable if it is defined, and to /bin /usr/bin otherwise.

    X = $(split $(PATHSEP), $(getenv PATH, /bin:/usr/bin))

You may also use the alternate form.

     getenv(NAME)
         default

9.2.13  setenv

   setenv(name, value)
      name : String
      value : String

The setenv function sets the value of a variable in the process environment. Environment variables are scoped like normal variables.

9.2.14  unsetenv

   unsetenv(names)
      names : String Array

The unsetenv function removes some variable definitions from the process environment. Environment variables are scoped like normal variables.

9.2.15  get-registry

   get-registry(hkey, key, field) : String
   get-registry(hkey, key, field, default) : String
       hkey : String
       key : String
       field : String

The get-registry function retrieves a string value from the system registry on Win32. On other architectures, there is no registry.

The hive (I think that is the right word), indicates which part of the registry to use. It should be one of the following values.

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_CONFIG
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS

Refer to the Microsoft documentation if you want to know what these mean.

The key is the field you want to get from the registry. It should have a form like A\B\C (if you use forward slashes, they will be converted to backslashes). The field is the sub-field of the key.

In the 4-argument form, the default is returned on failure. You may also use the alternate form.

    get-registry(hkey, key, field)
       default

9.2.16  getvar

   $(getvar name) : String

The getvar function gets the value of a variable.

An exception is raised if the variable variable is not defined.

For example, the following code defines X to be the string abc.

    NAME = foo
    foo_1 = abc
    X = $(getvar $(NAME)_1)

It is acceptable to use qualified names.

    $(getvar X.a.b)

9.2.17  setvar

   setvar(name, value)
      name : String
      value : String

The setvar function defines a new variable. For example, the following code defines the variable X to be the string abc.

   NAME = X
   setvar($(NAME), abc)

It is acceptable to use qualified names.

    setvar(public.X, abc)

9.3  Arrays and sequences

9.3.1  array

    $(array elements) : Array
       elements : Sequence

The array function creates an array from a sequence. If the <arg> is a string, the elements of the array are the whitespace-separated elements of the string, respecting quotes.

In addition, array variables can be declared as follows.

    A[] =
       <val1>
       ...
       <valn>

In this case, the elements of the array are exactly <val1>, ..., <valn>, and whitespace is preserved literally.

9.3.2  split

   $(split sep, elements) : Array
      sep : String
      elements : Sequence

The split function takes two arguments, a string of separators, and a string argument. The result is an array of elements determined by splitting the elements by all occurrence of the separator in the elements sequence.

For example, in the following code, the X variable is defined to be the array /bin /usr/bin /usr/local/bin.

    PATH = /bin:/usr/bin:/usr/local/bin
    X = $(split :, $(PATH))

The sep argument may be omitted. In this case split breaks its arguments along the white space. Quotations are not split.

9.3.3  concat

   $(concat sep, elements) : String
      sep : String
      elements : Sequence

The concat function takes two arguments, a separator string, and a sequence of elements. The result is a string formed by concatenating the elements, placing the separator between adjacent elements.

For example, in the following code, the X variable is defined to be the string foo_x_bar_x_baz.

    X = foo  bar     baz
    Y = $(concat _x_, $(X))

9.3.4  length

   $(length sequence) : Int
      sequence : Sequence

The length function returns the number of elements in its argument.

For example, the expression $(length a b "c d") evaluates to 3.

9.3.5  nth

   $(nth i, sequence) : value
      i : Int
      sequence : Sequence
   raises RuntimeException

The nth function returns the nth element of its argument, treated as a list. Counting starts at 0. An exception is raised if the index is not in bounds.

For example, the expression $(nth 1, a "b c" d) evaluates to "b c".

9.3.6  replace-nth

   $(replace-nth i, sequence, x) : value
      i : Int
      sequence : Sequence
      x : value
   raises RuntimeException

The replace-nth function replaces the nth element of its argument with a new value x. Counting starts at 0. An exception is raised if the index is not in bounds.

For example, the expression $(replace-nth 1, a "b c" d, x) evaluates to a x d.

9.3.7  nth-hd

   $(nth-hd i, sequence) : value
      i : Int
      sequence : Sequence
   raises RuntimeException

The nth-hd function returns the first i elements of the sequence. An exception is raised if the sequence is not at least i elements long.

For example, the expression $(nth-hd 2, a "b c" d) evaluates to a "b c".

9.3.8  nth-tl

   $(nth-tl i, sequence) : value
      i : Int
      sequence : Sequence
   raises RuntimeException

The nth-tl function skips i elements of the sequence and returns the rest. An exception is raised if the sequence is not at least i elements long.

For example, the expression $(nth-tl 1, a "b c" d) evaluates to "b c" d.

9.3.9  subrange

   $(subrange off, len, sequent) : value
      off : Int
      len : Int
      sequence : Sequence
   raises RuntimeException

The subrange function returns a subrange of the sequence. Counting starts at 0. An exception is raised if the specified range is not in bounds.

For example, the expression $(subrange 1, 2, a "b c" d e) evaluates to "b c" d.

9.3.10  rev

    $(rev sequence) : Sequence
       sequence : Sequence

The rev function returns the elements of a sequence in reverse order. For example, the expression $(rev a "b c" d) evaluates to d "b c" a.

9.3.11  join

   $(join sequence1, sequence2) : Sequence
      sequence1 : Sequence
      sequence2 : Sequence

The join function joins together the elements of the two sequences. For example, $(join a b c, .c .cpp .h) evaluates to a.c b.cpp c.h. If the two input sequences have different lengths, the remainder of the longer sequence is copied at the end of the output unmodified.

9.3.12  string

   $(string sequence) : String
      sequence : Sequence

The string function flattens a sequence into a single string. This is similar to the concat function, but the elements are separated by whitespace. The result is treated as a unit; whitespace is significant.

9.3.13  string-length

   $(string-length sequence) : Int
      sequence : Sequence

The string-lenght returns a length (number of characters) in its argument. If the argument is a sequence, it flattens it, so $(string-length sequence) is equivalent to $(string-length $(string sequence)).

9.3.14  string-escaped, ocaml-escaped, html-escaped, html-pre-escaped, c-escaped, id-escaped

   $(string-escaped sequence) : String Array
   $(ocaml-escaped sequence) : String Array
   $(html-escaped sequence) : String Array
   $(html-pre-escaped sequence) : String Array
   $(c-escaped sequence) : String Array
   $(hex-escaped sequence) : StringArray
      sequence : Array

The string-escaped function converts each element of its argument to a string, escaping it, if it contains symbols that are special to OMake. The special characters include :()\,$'"# and whitespace. This function can be used in scanner rules to escape file names before printing then to stdout.

The ocaml-escaped function converts each element of its argument to a string, escaping characters that are special to OCaml.

The c-escaped function converts a string to a form that can be used as a string constant in C.

The id-escaped function turns a string into an identifier that may be used in OMake.

The html-escaped function turns a literal string into a form acceptable as HTML. The html-pre-escaped function is similar, but it does not translate newlines into <br>.

    println($(string $(string-escaped $"a b" $"y:z")))
    a\ b y\:z

9.3.15  decode-uri, encode-uri

    $(decode-uri sequence) : sequence
        sequence : Sequence

These two functions perform URI encoding, where special characters are represented by hexadecimal characters.

    osh> s = $(encode-uri $'a b~c')
    "a+b%7ec"
    osh> decode-uri($s)
    "a b~c"

9.3.16  quote

   $(quote sequence) : String
      sequence : Sequence

The quote function flattens a sequence into a single string and adds quotes around the string. Inner quotation symbols are escaped.

For example, the expression $(quote a "b c" d) evaluates to "a \"b c\" d", and $(quote abc) evaluates to "abc".

9.3.17  quote-argv

   $(quote-argv sequence) : String
      sequence : Sequence

The quote-argv function flattens a sequence into a single string, and adds quotes around the string. The quotation is formed so that a command-line parse can separate the string back into its components.

9.3.18  html-string

   $(html-string sequence) : String
      sequence : Sequence

The html-string function flattens a sequence into a single string, and escaped special HTML characters. This is similar to the concat function, but the elements are separated by whitespace. The result is treated as a unit; whitespace is significant.

9.3.19  addsuffix

   $(addsuffix suffix, sequence) : Array
      suffix : String
      sequence : Sequence

The addsuffix function adds a suffix to each component of sequence. The number of elements in the array is exactly the same as the number of elements in the sequence.

For example, $(addsuffix .c, a b "c d") evaluates to a.c b.c "c d".c.

9.3.20  mapsuffix

   $(mapsuffix suffix, sequence) : Array
      suffix : value
      sequence : Sequence

The mapsuffix function adds a suffix to each component of sequence. It is similar to addsuffix, but uses array concatenation instead of string concatenation. The number of elements in the array is twice the number of elements in the sequence.

For example, $(mapsuffix .c, a b "c d") evaluates to a .c b .c "c d" .c.

9.3.21  addsuffixes

   $(addsuffixes suffixes, sequence) : Array
      suffixes : Sequence
      sequence : Sequence

The addsuffixes function adds all suffixes in its first argument to each component of a sequence. If suffixes has n elements, and sequence has m elements, the the result has n * m elements.

For example, the $(addsuffixes .c .o, a b c) expressions evaluates to a.c a.o b.c b.o c.o c.a.

9.3.22  removeprefix

   $(removeprefix prefix, sequence) : Array
      prefix : String
      sequence : Array

The removeprefix function removes a prefix from each component of a sequence.

9.3.23  removesuffix

   $(removesuffix sequence) : Array
      sequence : String

The removesuffix function removes the suffixes from each component of a sequence.

For example, $(removesuffix a.c b.foo "c d") expands to a b "c d".

9.3.24  replacesuffixes

   $(replacesuffixes old-suffixes, new-suffixes, sequence) : Array
      old-suffixes : Sequence
      new-suffixes : Sequence
      sequence : Sequence

The replacesuffixes function modifies the suffix of each component in sequence. The old-suffixes and new-suffixes sequences should have the same length.

For example, $(replacesuffixes .h .c, .o .o, a.c b.h c.z) expands to a.o b.o c.z.

9.3.25  addprefix

   $(addprefix prefix, sequence) : Array
      prefix : String
      sequence : Sequence

The addprefix function adds a prefix to each component of a sequence. The number of element in the result array is exactly the same as the number of elements in the argument sequence.

For example, $(addprefix foo/, a b "c d") evaluates to foo/a foo/b foo/"c d".

9.3.26  mapprefix

   $(mapprefix prefix, sequence) : Array
      prefix : String
      sequence : Sequence

The mapprefix function adds a prefix to each component of a sequence. It is similar to addprefix, but array concatenation is used instead of string concatenation. The result array contains twice as many elements as the argument sequence.

For example, $(mapprefix foo, a b "c d") expands to foo a foo b foo "c d".

9.3.27  add-wrapper

   $(add-wrapper prefix, suffix, sequence) : Array
      prefix : String
      suffix : String
      sequence : Sequence

The add-wrapper functions adds both a prefix and a suffix to each component of a sequence. For example, the expression $(add-wrapper dir/, .c, a b) evaluates to dir/a.c dir/b.c. String concatenation is used. The array result has the same number of elements as the argument sequence.

9.3.28  set

   $(set sequence) : Array
      sequence : Sequence

The set function sorts a set of string components, eliminating duplicates.

For example, $(set z y z "m n" w a) expands to "m n" a w y z.

9.3.29  mem

   $(mem elem, sequence) : Boolean
      elem : String
      sequence : Sequence

The mem function tests for membership in a sequence.

For example, $(mem "m n", y z "m n" w a) evaluates to true, while $(mem m n, y z "m n" w a) evaluates to false.

9.3.30  intersection

   $(intersection sequence1, sequence2) : Array
      sequence1 : Sequence
      sequence2 : Sequence

The intersection function takes two arguments, treats them as sets of strings, and computes their intersection. The order of the result is undefined, and it may contain duplicates. Use the set function to sort the result and eliminate duplicates in the result if desired.

For example, the expression $(intersection c a b a, b a) evaluates to a b a.

9.3.31  intersects

   $(intersects sequence1, sequence2) : Boolean
      sequence1 : Sequence
      sequence2 : Sequence

The intersects function tests whether two sets have a non-empty intersection. This is slightly more efficient than computing the intersection and testing whether it is empty.

For example, the expression $(intersects a b c, d c e) evaluates to true, and $(intersects a b c a, d e f) evaluates to false.

9.3.32  set-diff

   $(set-diff sequence1, sequence2) : Array
      sequence1 : Sequence
      sequence2 : Sequence

The set-diff function takes two arguments, treats them as sets of strings, and computes their difference (all the elements of the first set that are not present in the second one). The order of the result is undefined and it may contain duplicates. Use the set function to sort the result and eliminate duplicates in the result if desired.

For example, the expression $(set-diff c a b a e, b a) evaluates to c e.

9.3.33  filter

   $(filter patterns, sequence) : Array
      patterns : Sequence
      sequence : Sequence

The filter function picks elements from a sequence. The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard % character.

For example $(filter %.h %.o, a.c x.o b.h y.o "hello world".c) evaluates to x.o b.h y.o.

9.3.34  filter-out

   $(filter-out patterns, sequence) : Array
      patterns : Sequence
      sequence : Sequence

The filter-out function removes elements from a sequence. The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard % character.

For example $(filter-out %.c %.h, a.c x.o b.h y.o "hello world".c) evaluates to x.o y.o.

9.3.35  capitalize

   $(capitalize sequence) : Array
      sequence : Sequence

The capitalize function capitalizes each word in a sequence. For example, $(capitalize through the looking Glass) evaluates to Through The Looking Glass.

9.3.36  uncapitalize

   $(uncapitalize sequence) : Array
      sequence : Sequence

The uncapitalize function uncapitalizes each word in its argument.

For example, $(uncapitalize through the looking Glass) evaluates to through the looking glass.

9.3.37  uppercase

   $(uppercase sequence) : Array
      sequence : Sequence

The uppercase function converts each word in a sequence to uppercase. For example, $(uppercase through the looking Glass) evaluates to THROUGH THE LOOKING GLASS.

9.3.38  lowercase

   $(lowercase sequence) : Array
      sequence : Sequence

The lowercase function reduces each word in its argument to lowercase.

For example, $(lowercase through tHe looking Glass) evaluates to through the looking glass.

9.3.39  system

   system(s)
      s : Sequence

The system function is used to evaluate a shell expression. This function is used internally by omake to evaluate shell commands.

For example, the following program is equivalent to the expression system(ls foo).

   ls foo

9.3.40  shell

   $(shell command) : Array
   $(shella command) : Array
   $(shell-code command) : Int
      command : Sequence

The shell function evaluates a command using the command shell, and returns the whitespace-separated words of the standard output as the result.

The shella function acts similarly, but it returns the lines as separate items in the array.

The shell-code function returns the exit code. The output is not diverted.

For example, if the current directory contains the files OMakeroot, OMakefile, and hello.c, then $(shell ls) evaluates to hello.c OMakefile OMakeroot (on a Unix system).

9.3.41  export

The export function allows one to capture the current environment in a variable.

For example, the following code:

A = 1
B = 1
C = 1
SAVE_ENV = $(export A B)
A = 2
B = 2
C = 2
export $(SAVE_ENV)
println($A $B $C)

will print 1 1 2.

The arguments to this function are interpreted the exact same way as the arguments to the export special form (see Section 6.3).

9.3.42  while

   while <test>
      <body>

–or–

    while <test>
    case <test1>
       <body1>
    ...
    case <testn>
       <bodyn>
    default
       <bodyd>

The loop is executed while the test is true. In the first form, the <body> is executed on every loop iteration. In the second form, the body <bodyI> is selected, as the first case where the test <testI> is true. If none apply, the optional default case is evaluated. If no cases are true, the loop exits. The environment is automatically exported.

Examples.

Iterate for i from 0 to 9.

    i = 0
    while $(lt $i, 10)
       echo $i
       i = $(add $i, 1)

The following example is equivalent.

   i = 0
   while true
   case $(lt $i, 10)
      echo $i
      i = $(add $i, 1)

The following example is similar, but some special cases are printed. value is printed.

    i = 0
    while $(lt $i, 10)
    case $(equal $i, 0)
       echo zero
    case $(equal $i, 1)
       echo one
    default
       echo $i

The break function can be used to break out of the while loop early.

9.3.43  break

   break

Terminate execution of the innermost loop, returning the current state.

9.3.44  random, random-init

    random-init(i)
        i : Int
    random() : Int

Produce a random number. The numbers are pseudo-random, and are not cryptographically secure.

The generator is initialized form semi-random system data. Subsequent runs should produce different results. The rando-init function can be used to return the generator to a known state.

9.4  Arithmetic

9.4.1  int

The int function can be used to create integers. It returns an Int object.

$(int 17).

9.4.2  float

The float function can be used to create floating-point numbers. It returns a Float object.

$(float 3.1415926).

9.4.3  Basic arithmetic

The following functions can be used to perform basic arithmetic.

  • $(neg <numbers>): arithmetic inverse
  • $(add <numbers>): addition.
  • $(sub <numbers>): subtraction.
  • $(mul <numbers>): multiplication.
  • $(div <numbers>): division.
  • $(mod <numbers>): remainder.
  • $(lnot <numbers>): bitwise inverse.
  • $(land <numbers>): bitwise and.
  • $(lor <numbers>): bitwise or.
  • $(lxor <numbers>): bitwise exclusive-or.
  • $(lsl <numbers>): logical shift left.
  • $(lsr <numbers>): logical shift right.
  • $(asr <numbers>): arithmetic shift right.
  • $(min <numbers>): smallest element.
  • $(max <numbers>): largest element.

9.4.4  Comparisons

The following functions can be used to perform numerical comparisons.

  • $(lt <numbers>): less then.
  • $(le <numbers>): no more than.
  • $(eq <numbers>): equal.
  • $(ge <numbers>): no less than.
  • $(gt <numbers>): greater than.
  • $(ult <numbers>): unsigned less than.
  • $(ule <numbers>): unsigned greater than.
  • $(uge <numbers>): unsigned greater than or equal.
  • $(ugt <numbers>): unsigned greater than.

9.5  First-class functions

9.5.1  fun

The fun form introduces anonymous functions.

$(fun <v1>, ..., <vn>, <body>)

The last argument is the body of the function. The other arguments are the parameter names.

The three following definitions are equivalent.

    F(X, Y) =
       return($(addsuffix $(Y), $(X)))

    F = $(fun X, Y, $(addsuffix $(Y), $(X)))

    F =
       fun(X, Y)
          value $(addsuffix $(Y), $(X))

9.5.2  apply

The apply operator is used to apply a function.

$(apply <fun>, <args>)

Suppose we have the following function definition.

    F(X, Y) =
       return($(addsuffix $(Y), $(X)))

The the two expressions below are equivalent.

    X = F(a b c, .c)
    X = $(apply $(F), a b c, .c)

9.5.3  applya

The applya operator is used to apply a function to an array of arguments.

$(applya <fun>, <args>)

For example, in the following program, the value of Z is file.c.

    F(X, Y) =
       return($(addsuffix $(Y), $(X)))
    args[] =
       file
       .c
    Z = $(applya $(F), $(args))

9.5.4  create-map, create-lazy-map

The create-map is a simplified form for creating Map objects. The create-map function takes an even number of arguments that specify key/value pairs. For example, the following values are equivalent.

    X = $(create-map name1, xxx, name2, yyy)

    X. =
        extends $(Map)
        $|name1| = xxx
        $|name2| = yyy

The create-lazy-map function is similar, but the values are computed lazily. The following two definitions are equivalent.

    Y = $(create-lazy-map name1, $(xxx), name2, $(yyy))

    Y. =
        extends $(Map)
        $|name1| = $`(xxx)
        $|name2| = $`(yyy)

The create-lazy-map function is used in rule construction.

9.6  Iteration and mapping

9.6.1  foreach

The foreach function maps a function over a sequence.

    $(foreach <fun>, <args>)

    foreach(<var>, <args>)
       <body>

For example, the following program defines the variable X as an array a.c b.c c.c.

    X =
       foreach(x, a b c)
          value $(x).c

    # Equivalent expression
    X = $(foreach $(fun x, $(x).c), abc)

There is also an abbreviated syntax.

The export form can also be used in a foreach body. The final value of X is a.c b.c c.c.

    X =
    foreach(x, a b c)
       X += $(x).c
       export

The break function can be used to break out of the loop early.

9.7  Boolean tests

9.7.1  sequence-forall

The forall function tests whether a predicate halds for each element of a sequence.

    $(sequence-forall <fun>, <args>)

    sequence-forall(<var> => ..., <args>)
       <body>

9.7.2  sequence-exists

The exists function tests whether a predicate holds for some element of a sequence.

    $(sequence-exists <fun>, <args>)

    sequence-exists(<var> => ..., <args>)
       <body>

9.7.3  sequence-sort

The sort function sorts the elements in an array, given a comparison function. Given two elements (x, y), the comparison should return a negative number if x < y; a positive number if x > y; and 0 if x = y.

    $(sequence-sort <fun>, <args>)

    sort(<var>, <var> => ..., <args>)
       <body>

9.7.4  compare

The compare function compares two values (x, y) generically returning a negative number if x < y; a positive number if x > y; and 0 if x = y.

    $(compare x, y) : Int

Chapter 10  File, I/O and system operations

10.1  File names

10.1.1  file, dir

   $(file sequence) : File Sequence
      sequence : Sequence
   $(dir sequence) : Dir Sequence
      sequence : Sequence

The file and dir functions define location-independent references to files and directories. In omake, the commands to build a target are executed in the target's directory. Since there may be many directories in an omake project, the build system provides a way to construct a reference to a file in one directory, and use it in another without explicitly modifying the file name. The functions have the following syntax, where the name should refer to a file or directory.

For example, we can construct a reference to a file foo in the current directory.

   FOO = $(file foo)
   .SUBDIRS: bar

If the FOO variable is expanded in the bar subdirectory, it will expand to ../foo.

These commands are often used in the top-level OMakefile to provide location-independent references to top-level directories, so that build commands may refer to these directories as if they were absolute.

   ROOT = $(dir .)
   LIB  = $(dir lib)
   BIN  = $(dir bin)

Once these variables are defined, they can be used in build commands in subdirectories as follows, where $(BIN) will expand to the location of the bin directory relative to the command being executed.

   install: hello
 cp hello $(BIN)

10.1.2  tmpfile

    $(tmpfile prefix) : File
    $(tmpfile prefix, suffix) : File
        prefix : String
        suffix : String

The tmpfile function returns the name of a fresh temporary file in the temporary directory.

10.1.3  in

   $(in dir, exp) : String Array
      dir : Dir
      exp : expression

The in function is closely related to the dir and file functions. It takes a directory and an expression, and evaluates the expression in that effective directory. For example, one common way to install a file is to define a symbol link, where the value of the link is relative to the directory where the link is created.

The following commands create links in the $(LIB) directory.

    FOO = $(file foo)
    install:
       ln -s $(in $(LIB), $(FOO)) $(LIB)/foo

Note that the in function only affects the expansion of Node (File and Dir) values.

10.1.4  basename

   $(basename files) : String Sequence
      files : String Sequence

The basename function returns the base names for a list of files. The basename is the filename with any leading directory components removed.

For example, the expression $(basename dir1/dir2/a.out /etc/modules.conf /foo.ml) evaluates to a.out modules.conf foo.ml.

10.1.5  dirname

   $(dirname files) : String Sequence
      files : String Sequence

The dirname function returns the directory name for a list of files. The directory name is the filename with the basename removed. If a name does not have a directory part, the directory is “.”

For example, the expression $(dirname dir1\dir2\a.out /etc/modules.conf /foo.ml bar.ml) evaluates to dir1/dir2 /etc / ..

Note: this function is different from the dirof function. The function dirname is simple a function over strings, while dirof is a function on filenames.

10.1.6  rootname

   $(rootname files) : String Sequence
      files : String Sequence

The rootname function returns the root name for a list of files. The rootname is the filename with the final suffix removed.

For example, the expression $(rootname dir1/dir2/a.out /etc/a.b.c /foo.ml) evaluates to dir1/dir2/a /etc/a.b /foo.

10.1.7  dirof

   $(dirof files) : Dir Sequence
      files : File Sequence

The dirof function returns the directory for each of the listed files.

For example, the expression $(dirof dir/dir2/a.out /etc/modules.conf /foo.ml) evaluates to the directories dir1/dir2 /etc /.

10.1.8  fullname

   $(fullname files) : String Sequence
      files : File Sequence

The fullname function returns the pathname relative to the project root for each of the files or directories.

10.1.9  absname

   $(absname files) : String Sequence
      files : File Sequence

The absname function returns the absolute pathname for each of the files or directories.

10.1.10  homename

   $(homename files) : String Sequence
      files : File Sequence

The homename function returns the name of a file in tilde form, if possible. The unexpanded forms are computed lazily: the homename function will usually evaluate to an absolute pathname until the first tilde-expansion for the same directory.

10.1.11  suffix

   $(suffix files) : String Sequence
      files : StringSequence

The suffix function returns the suffixes for a list of files. If a file has no suffix, the function returns the empty string.

For example, the expression $(suffix dir1/dir2/a.out /etc/a /foo.ml) evaluates to .out .ml.

10.2  Path search

10.2.1  which

   $(which files) : File Sequence
      files : String Sequence

The which function searches for executables in the current command search path, and returns file values for each of the commands. It is an error if a command is not found.

10.2.2  where

The where function is similar to which, except it returns the list of all the locations of the given executable (in the order in which the corresponding directories appear in $PATH). In case a command is handled internally by the Shell object, the first string in the output will describe the command as a built-in function.

    % where echo
    echo is a Shell object method (a built-in function)
    /bin/echo

10.2.3  rehash

    rehash()

The rehash function resets all search paths.

10.2.4  exists-in-path

   $(exists-in-path files) : String
      files : String Sequence

The exists-in-path function tests whether all executables are present in the current search path.

10.2.5  digest, digest-optional

     $(digest files) : String Array
        file : File Array
     raises RuntimeException

     $(digest-optional files) : String Array
        file : File Array

The digest and digest-optional functions compute MD5 digests of files. The digest function raises an exception if a file does no exist. The digest-optional returns false if a file does no exist. MD5 digests are cached.

10.2.6  find-in-path, find-in-path-optional

    $(find-in-path path, files) : File Array
       path : Dir Array
       files : String Array
    raises RuntimeException

    $(find-in-path-optional path, files) : File Array

The find-in-path function searches for the files in a search path. Only the tail of the filename is significant. The find-in-path function raises an exception if the file can't be found. The find-in-path-optional function silently removes files that can't be found.

10.2.7  digest-in-path, digest-in-path-optional

    $(digest-in-path path, files) : String/File Array
       path : Dir Array
       files : String Array
    raises RuntimeException

    $(digest-in-path-optional path, files) : String/File Array

The digest-in-path function searches for the files in a search path and returns the file and digest for each file. Only the tail of the filename is significant. The digest-in-path function raises an exception if the file can't be found. The digest-in-path-optional function silently removes elements that can't be found.

10.3  File stats

10.3.1  file-exists, target-exists, target-is-proper

   $(file-exists files) : String
   $(target-exists files) : String
   $(target-is-proper files) : String
       files : File Sequence

The file-exists function checks whether the files listed exist. The target-exists function is similar to the file-exists function. However, it returns true if the file exists or if it can be built by the current project. The target-is-proper returns true only if the file can be generated in the current project.

10.3.2  stat-reset

   $(stat-reset files) : String
       files : File Sequence

OMake uses a stat-cache. The stat-reset function reset the stat information for the given files, forcing the stat information to be recomputed the next time it is requested.

10.3.3  filter-exists, filter-targets, filter-proper-targets

   $(filter-exists files) : File Sequence
   $(filter-targets files) : File Sequence
   $(filter-proper-targets) : File Sequence
      files : File Sequence

The filter-exists, filter-targets, and filter-proper-targets functions remove files from a list of files.

  • filter-exists: the result is the list of files that exist.
  • filter-targets: the result is the list of files either exist, or can be built by the current project.
  • filter-proper-targets: the result is the list of files that can be built in the current project.
Creating a “distclean” target

One way to create a simple “distclean” rule that removes generated files from the project is by removing all files that can be built in the current project.

CAUTION: you should be careful before you do this. The rule removes any file that can potentially be reconstructed. There is no check to make sure that the commands to rebuild the file would actually succeed. Also, note that no file outside the current project will be deleted.

    .PHONY: distclean

    distclean:
        rm $(filter-proper-targets $(ls R, .))

If you use CVS, you may wish to utilize the cvs_realclean program that is distributed with OMake in order to create a “distclean” rule that would delete all the files thare are not known to CVS. For example, if you already have a more traditional “clean” target defined in your project, and if you want the “distclean” rule to be interactive by default, you can write the following:

    if $(not $(defined FORCE_REALCLEAN))
        FORCE_REALCLEAN = false
        export

    distclean: clean
        cvs_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock

You can add more files that you want to always keep (such as configuration files) with the -i option.

Similarly, if you use Subversion, you utilize the build/svn_realclean.om script that comes with OMake:

    if $(not $(defined FORCE_REALCLEAN))
        FORCE_REALCLEAN = false
        export

    open build/svn_realclean

    distclean: clean
        svn_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock

See also the dependencies-proper function for an alternate method for removing intermediate files.

10.3.4  find-targets-in-path, find-targets-in-path-optional

    $(find-targets-in-path path files) : File Array
    $(find-targets-in-path-optional path, files) : File Array
        path : Dir Array
        files : File Sequence

The find-target-in-path function searches for targets in the search path. For each file file in the file list, the path is searched sequentially for a directory dir such that the target dir/file exists. If so, the file dir/file is returned.

For example, suppose you are building a C project, and project contains a subdirectory src/ containing only the files fee.c and foo.c. The following expression evaluates to the files src/fee.o src/foo.o even if the files have not already been built.

    $(find-targets-in-path lib src, fee.o foo.o)

    # Evaluates to
    src/fee.o src/foo.o

The find-targets-in-path function raises an exception if the file can't be found. The find-targets-in-path-optional function silently removes targets that can't be found.

    $(find-targets-in-path-optional lib src, fee.o foo.o fum.o)

    # Evaluates to
    src/fee.o src/foo.o

10.3.5  find-ocaml-targets-in-path-optional

The find-ocaml-targets-in-path-optional function is very similar to the find-targets-in-path-optional one, except an OCaml-style search is used, where for every element of the search path and for every name being searched for, first the uncapitalized version is tried and if it is not buildable, then the capitalized version is tried next.

10.3.6  file-sort

   $(file-sort order, files) : File Sequence
      order : String
      files : File Sequence

The file-sort function sorts a list of filenames by build order augmented by a set of sort rules. Sort rules are declared using the .ORDER target. The .BUILDORDER defines the default order.

$(file-sort <order>, <files>)

For example, suppose we have the following set of rules.

   a: b c
   b: d
   c: d

   .DEFAULT: a b c d
      echo $(file-sort .BUILDORDER, a b c d)

In the case, the sorter produces the result d b c a. That is, a target is sorted after its dependencies. The sorter is frequently used to sort files that are to be linked by their dependencies (for languages where this matters).

There are three important restrictions to the sorter:

  • The sorter can be used only within a rule body. The reason for this is that all dependencies must be known before the sort is performed.
  • The sorter can only sort files that are buildable in the current project.
  • The sorter will fail if the dependencies are cyclic.

10.3.6.1  sort rule

It is possible to further constrain the sorter through the use of sort rules. A sort rule is declared in two steps. The target must be listed as an .ORDER target; and then a set of sort rules must be given. A sort rule defines a pattern constraint.

   .ORDER: .MYORDER

   .MYORDER: %.foo: %.bar
   .MYORDER: %.bar: %.baz

   .DEFAULT: a.foo b.bar c.baz d.baz
      echo $(sort .MYORDER, a.foo b.bar c.baz d.baz)

In this example, the .MYORDER sort rule specifies that any file with a suffix .foo should be placed after any file with suffix .bar, and any file with suffix .bar should be placed after a file with suffix .baz.

In this example, the result of the sort is d.baz c.baz b.bar a.foo.

10.3.7  file-check-sort

   file-check-sort(files)
      files : File Sequence
   raises RuntimeException

The file-check-sort function checks whether a list of files is in sort order. If so, the list is returned unchanged. If not, the function raises an exception.

$(file-check-sort <order>, <files>)

10.4  Globbing and file listings

OMake commands are “glob-expanded” before being executed. That is, names may contain patterns that are expanded to sequences of file and directory names. The syntax follows the standard bash(1), csh(1), syntax, with the following rules.

  • A pathname is a sequence of directory and file names separated by one of the / or \ characters. For example, the following pathnames refer to the same file: /home/jyh/OMakefile and /home\jyh/OMakefile.
  • Glob-expansion is performed on the components of a path. If a path contains occurrences of special characters (listed below), the path is viewed as a pattern to be matched against the actual files in the system. The expansion produces a sequence of all file/directory names that match.

    For the following examples, suppose that a directory /dir contains files named a, -a, a.b, and b.c.

    *
    Matches any sequence of zero-or-more characters. For example, the pattern /dir/a* expands to /dir/a /dir/aa /dir/a.b.
    ?
    Matches exactly one character. The pattern /dir/?a expands the filename /dir/-a.
    [...]
    Square brackets denote character sets and ranges in the ASCII character set. The pattern may contain individual characters c or character ranges c1-c2. The pattern matches any of the individual characters specified, or any characters in the range. A leading “hat” inverts the send of the pattern. To specify a pattern that contains the literal characters -, the - should occur as the first character in the range.
    PatternExpansion
    /dir/[a-b]*/dir/a /dir/a.b /dir/b.c
    /dir/[-a-b]*/dir/a /dir/-a /dir/a.b /dir/b.c
    /dir/[-a]*/dir/a /dir/-a /dir/a.b
    {s1,...,sN}
    Braces indicate brace-expansion. The braces delimit a sequence of strings separated by commas. Given N strings, the result produces N copies of the pattern, one for each of the strings si.
    PatternExpansion
    a{b,c,d}ab ac ad
    a{b{c,d},e}abc abd ae
    a{?{[A-Z],d},*}a?[A-Z] a?d a*
     
    The tilde is used to specify home directories. Depending on your system, these might be possible expansions.
    PatternExpansion
    ~jyh/home/jyh
    ~bob/*.cc:\Documents and Settings\users\bob

    The \ character is both a pathname separator and an escape character. If followed by a special glob character, the \ changes the sense of the following character to non-special status. Otherwise, \ is viewed as a pathname separator.
    PatternExpansion
    ~jyh/\*~jyh/* (* is literal)
    /dir/\[a-z?/dir/[a-z? ([ is literal, ? is a pattern).
    c:\Program Files\[A-z]c:\Program Files[A-z]*

    Note that the final case might be considered to be ambiguous (where \ should be viewed as a pathname separator, not as an escape for the subsequent [ character. If you want to avoid this ambiguity on Win32, you should use the forward slash / even for Win32 pathnames (the / is translated to \ in the output).

    PatternExpansion
    c:/Program Files/[A-z]*c:\Program Files\WindowsUpdate ...

10.4.1  glob

   $(glob strings) : Node Array
      strings : String Sequence
   $(glob options, strings) : Node Array
      options : String
      strings : String Sequence

The glob function performs glob-expansion.

The . and .. entries are always ignored.

The options are:

b
Do not perform csh(1)-style brace expansion.
e
The \ character does not escape special characters.
n
If an expansion fails, return the expansion literally instead of aborting.
i
If an expansion fails, it expands to nothing.
.
Allow wildcard patterns to match files beginning with a .
A
Return all files, including files that begin with a .
F
Match only normal files (any file that is not a directory).
D
Match only directory files.
C
Ignore files according to cvs(1) rules.
P
Include only proper subdirectories.

In addition, the following variables may be defined that affect the behavior of glob.

GLOB_OPTIONS
A string containing default options.
GLOB_IGNORE
A list of shell patterns for filenames that glob should ignore.
GLOB_ALLOW
A list of shell patterns. If a file does not match a pattern in GLOB_ALLOW, it is ignored.

The returned files are sorted by name.

10.4.2  ls

   $(ls files) : Node Array
      files : String Sequence
   $(ls options, files) : Node Array
      files : String Sequence

The ls function returns the filenames in a directory.

The . and .. entries are always ignored. The patterns are shell-style patterns, and are glob-expanded.

The options include all of the options to the glob function, plus the following.

R
Perform a recursive listing.

The GLOB_ALLOW and GLOB_IGNORE variables can be defined to control the globbing behavior. The returned files are sorted by name.

10.4.3  subdirs

   $(subdirs dirs) : Dir Array
      dirs : String Sequence
   $(subdirs options, dirs) : Dir Array
      options : String
      dirs : String Sequence

The subdirs function returns all the subdirectories of a list of directories, recursively.

The possible options are the following:

A
Return directories that begin with a .
C
Ignore files according to .cvsignore rules.
P
Include only proper subdirectories.

10.5  Filesystem operations

10.5.1  mkdir

   mkdir(mode, node...)
      mode : Int
      node : Node
   raises RuntimeException

   mkdir(node...)
      node : Node
   raises RuntimeException

The mkdir function creates a directory, or a set of directories. The following options are supported.

-m mode
Specify the permissions of the created directory.
-p
Create parent directories if they do not exist.
Interpret the remaining names literally.

10.5.2  Stat

The Stat object represents an information about a filesystem node, as returned by the stat and lstat functions. It contains the following fields.

dev
: the device number.
ino
: the inode number.
kind
: the kind of the file, one of the following: REG (regular file), DIR (directory), CHR (character device), BLK (block device), LNK (symbolic link), FIFO (named pipe), SOCK (socket).
perm
: access rights, represented as an integer.
nlink
: number of links.
uid
: user id of the owner.
gid
: group id of the file's group.
rdev
: device minor number.
size
: size in bytes.
atime
: last access time, as a floating point number.
mtime
: last modification time, as a floating point number.
ctime
: last status change time, as a floating point number.

Not all of the fields will have meaning on all operating systems.

10.5.3  stat, lstat

    $(stat node...) : Stat
       node : Node or Channel
    $(lstat node...) : Stat
       node : Node or Channel
    raises RuntimeException

The stat functions return file information. If the file is a symbolic link, the stat function refers to the destination of the link; the lstat function refers to the link itself.

10.5.4  unlink

   $(unlink file...)
      file : File
   #(rm file...)
      file : File
   $(rmdir dir...)
      dir : Dir
   raises RuntimeException

The unlink and rm functions remove a file. The rmdir function removes a directory.

The following options are supported for rm and rmdir.

-f
ignore nonexistent files, never prompt.
-i
prompt before removal.
-r
remove the contents of directories recursively.
-v
explain what is going on.
the rest of the values are interpreted literally.

10.5.5  rename

    rename(old, new)
       old : Node
       new : Node
    mv(nodes... dir)
       nodes : Node Sequence
       dir   : Dir
    cp(nodes... dir)
       nodes : Node Sequence
       dir   : Dir
    raises RuntimeException

The rename function changes the name of a file or directory named old to new.

The mv function is similar, but if new is a directory, and it exists, then the files specified by the sequence are moved into the directory. If not, the behavior of mv is identical to rename. The cp function is similar, but the original file is not removed.

The mv and cp functions take the following options.

-f
Do not prompt before overwriting.
-i
Prompt before overwriting.
-v
Explain what it happening.
-r
Copy the contents of directories recursively.
Interpret the remaining arguments literally.

10.5.6  link

   link(src, dst)
      src : Node
      dst : Node
   raises RuntimeException

The link function creates a hard link named dst to the file or directory src.

Hard links may work under Win32 when NTFS is used.

Normally, only the superuser can create hard links to directories.

10.5.7  symlink

   symlink(src, dst)
      src : Node
      dst : Node
   raises RuntimeException

The symlink function creates a symbolic link dst that points to the src file.

The link name is computed relative to the target directory. For example, the expression $(symlink a/b, c/d) creates a link named c/d -> ../a/b.

Symbolic links are not supported in Win32. Consider using the ln-or-cp Shell alias for cross-platform portable linking/copying.

10.5.8  readlink

   $(readlink node...) : Node
      node : Node

The readlink function reads the value of a symbolic link.

10.5.9  chmod

   chmod(mode, dst...)
      mode : Int
      dst : Node or Channel
   chmod(mode dst...)
      mode : String
      dst : Node Sequence
   raises RuntimeException

The chmod function changes the permissions of the targets.

Options:

-v
Explain what is happening.
-r
Change files and directories recursively.
-f
Continue on errors.
Interpret the remaining argument literally.

10.5.10  chown

   chown(uid, gid, node...)
      uid : Int
      gid : Int
      node : Node or Channel
   chown(uid, node...)
      uid : Int
      node : Node or Channel
   raises RuntimeException

The chown function changes the user and group id of the file. If the gid is not specified, it is not changed. If either id is -1, that id is not changed.

10.5.11  truncate

   truncate(length, node...)
       length : Int
       node : Node or Channel
   raises RuntimeException

The truncate function truncates a file to the given length.

10.5.12  umask

    $(umask mode) : Int
       mode : Int
    raises RuntimeException

Sets the file mode creation mask. The previous mask is returned. This value is not scoped, changes have global effect.

10.6  vmount

10.6.1  vmount

    vmount(src, dst)
       src, dst : Dir
    vmount(flags, src, dst)
       flags : String
       src, dst : Dir

“Mount” the src directory on the dst directory. This is a virtual mount, changing the behavior of the $(file ...) function. When the $(file str) function is used, the resulting file is taken relative to the src directory if the file exists. Otherwise, the file is relative to the current directory.

The main purpose of the vmount function is to support multiple builds with separate configurations or architectures.

The options are as follows.

l
Create symbolic links to files in the src directory.
c
Copy files from the src directory.

Mount operations are scoped.

10.6.2  add-project-directories

    add-project-directories(dirs)
       dirs : Dir Array

Add the directories to the set of directories that omake considers to be part of the project. This is mainly used to avoid omake complaining that the current directory is not part of the project.

10.6.3  remove-project-directories

    remove-project-directories(dirs)
       dirs : Dir Array

Removed the directories from the set of directories that omake considers to be part of the project. This is mainly used to cancel a .SUBDIRS from including a directory if it is determined that the directory does not need to be compiled.

10.7  File predicates

10.7.1  test

   test(exp) : Bool
      exp : String Sequence

The expression grammar is as follows:

  • ! expression : expression is not true
  • expression1 -a expression2 : both expressions are true
  • expression1 -o expression2 : at least one expression is true
  • ( expression ) : expression is true

The base expressions are:

  • -n string : The string has nonzero length
  • -z string : The string has zero length
  • string = string : The strings are equal
  • string != string : The strings are not equal
  • int1 -eq int2 : The integers are equal
  • int1 -ne int2 : The integers are not equal
  • int1 -gt int2 : int1 is larger than int2
  • int1 -ge int2 : int2 is not larger than int1
  • int1 -lt int2 : int1 is smaller than int2
  • int1 -le int2 : int1 is not larger than int2
  • file1 -ef file2 : On Unix, file1 and file2 have the same device and inode number. On Win32, file1 and file2 have the same name.
  • file1 -nt file2 : file1 is newer than file2
  • file1 -ot file2 : file1 is older than file2
  • -b file : The file is a block special file
  • -c file : The file is a character special file
  • -d file : The file is a directory
  • -e file : The file exists
  • -f file : The file is a normal file
  • -g file : The set-group-id bit is set on the file
  • -G file : The file's group is the current effective group
  • -h file : The file is a symbolic link (also -L)
  • -k file : The file's sticky bit is set
  • -L file : The file is a symbolic link (also -h)
  • -O file : The file's owner is the current effective user
  • -p file : The file is a named pipe
  • -r file : The file is readable
  • -s file : The file is empty
  • -S file : The file is a socket
  • -u file : The set-user-id bit is set on the file
  • -w file : The file is writable
  • -x file : The file is executable

A string is any sequence of characters; leading - characters are allowed.

An int is a string that can be interpreted as an integer. Unlike traditional versions of the test program, the leading characters may specify an arity. The prefix 0b means the numbers is in binary; the prefix 0o means the number is in octal; the prefix 0x means the number is in hexadecimal. An int can also be specified as -l string, which evaluates to the length of the string.

A file is a string that represents the name of a file.

The syntax mirrors that of the test(1) program. If you are on a Unix system, the man page explains more. Here are some examples.

    # Create an empty file
    osh> touch foo
    # Is the file empty?
    osh> test(-e foo)
    - : true
    osh> test(! -e foo)
    - : false
    # Create another file
    osh> touch boo
    # Is the newer file newer?
    osh> test(boo -nt foo)
    - : true
    # A more complex query
    # boo is newer than foo, and foo is empty
    osh> test(\( boo -nt foo \) -a -e foo)
    - : true

10.7.2  find

   find(exp) : Node Array
      exp : String Sequence

The find function searches a directory recursively, returning the files for which the expression evaluates to true.

The expression argument uses the same syntax as the test function, with the following exceptions.

  1. The expression may begin with a directory. If not specified, the current directory is searched.
  2. The {} string expands to the current file being examined.

The syntax of the expression is the same as test, with the following additions.

  • -name string : The current file matches the glob expression (see Section 10.4).
  • -regex string : The current file matches the regular expression

The find function performs a recursive scan of all subdirectories. The following call is being run from the root of the omake source directory.

    osh> find(. -name fo* )
    - : <array
            /home/jyh/.../omake/mk/.svn/format
            /home/jyh/.../omake/RPM/.svn/format
            ...
            /home/jyh/.../omake/osx_resources/installer_files/.svn/format>

Another example, listing only those files that are normal files or symbolic links.

    osh> find(. -name fo* -a \( -f {} -o -L {} \))
    - : <array
            /home/jyh/.../omake/mk/.svn/format
            /home/jyh/.../omake/RPM/.svn/format
            ...
            /home/jyh/.../omake/osx_resources/installer_files/.svn/format>

10.8  IO functions

10.8.1  Standard channels

The following variables define the standard channels.

stdin

stdin : InChannel

The standard input channel, open for reading.

stdout

stdout : OutChannel

The standard output channel, open for writing.

stderr

stderr : OutChannel

The standard error channel, open for writing.

10.8.2  open-in-string

The open-in-string treats a string as if it were a file and returns a channel for reading.

   $(open-in-string s) : Channel
       s : String

10.8.3  open-out-string, out-contents

The open-out-string creates a channel that writes to a string instead of a file. The string may be retrieved with the out-contents function.

   $(open-out-string) : Channel
   $(out-contents chan) : String
       chan : OutChannel

10.8.4  fopen

The fopen function opens a file for reading or writing.

   $(fopen file, mode) : Channel
      file : File
      mode : String

The file is the name of the file to be opened. The mode is a combination of the following characters.

r
Open the file for reading; it is an error if the file does not exist.
w
Open the file for writing; the file is created if it does not exist.
a
Open the file in append mode; the file is created if it does not exist.
+
Open the file for both reading and writing.
t
Open the file in text mode (default).
b
Open the file in binary mode.
n
Open the file in nonblocking mode.
x
Fail if the file already exists.

Binary mode is not significant on Unix systems, where text and binary modes are equivalent.

10.8.5  close

    $(close channel...)
       channel : Channel

The close function closes a file that was previously opened with fopen.

10.8.6  read, input-line

   $(read channel, amount) : String
   $(input-line channel) : String
      channel : InChannel
      amount  : Int
   raises RuntimeException

The read function reads up to amount bytes from an input channel, and returns the data that was read. The input-line function reads a line from the file and returns the line read, without the line terminator. If an end-of-file condition is reached, both functions raise a RuntimeException exception.

10.8.7  write

   $(write channel, buffer, offset, amount) : String
      channel : OutChannel
      buffer  : String
      offset  : Int
      amount  : Int
   $(write channel, buffer) : String
      channel : OutChannel
      buffer  : String
   raises RuntimeException

In the 4-argument form, the write function writes bytes to the output channel channel from the buffer, starting at position offset. Up to amount bytes are written. The function returns the number of bytes that were written.

The 3-argument form is similar, but the offset is 0.

In the 2-argument form, the offset is 0, and the amount if the length of the buffer.

If an end-of-file condition is reached, the function raises a RuntimeException exception.

10.8.8  lseek

    $(lseek channel, offset, whence) : Int
       channel : Channel
       offset  : Int
       whence  : String
    raises RuntimeException

The lseek function repositions the offset of the channel channel according to the whence directive, as follows:

SEEK_SET
The offset is set to offset.
SEEK_CUR
The offset is set to its current position plus offset bytes.
SEEK_END
The offset is set to the size of the file plus offset bytes.

The lseek function returns the new position in the file.

10.8.9  rewind

   rewind(channel...)
      channel : Channel

The rewind function set the current file position to the beginning of the file.

10.8.10  tell

    $(tell channel...) : Int...
       channel : Channel
    raises RuntimeException

The tell function returns the current position of the channel.

10.8.11  flush

   $(flush channel...)
      channel : OutChannel

The flush function can be used only on files that are open for writing. It flushes all pending data to the file.

10.8.12  channel-name

   $(channel-name channel...) : String
      channel : Channel

The channel-name function returns the name that is associated with the channel.

10.8.13  dup

    $(dup channel) : Channel
       channel : Channel
    raises RuntimeException

The dup function returns a new channel referencing the same file as the argument.

10.8.14  dup2

   dup2(channel1, channel2)
      channel1 : Channel
      channel2 : Channel
   raises RuntimeException

The dup2 function causes channel2 to refer to the same file as channel1.

10.8.15  set-nonblock

   set-nonblock-mode(mode, channel...)
      channel : Channel
      mode : String

The set-nonblock-mode function sets the nonblocking flag on the given channel. When IO is performed on the channel, and the operation cannot be completed immediately, the operations raises a RuntimeException.

10.8.16  set-close-on-exec-mode

   set-close-on-exec-mode(mode, channel...)
      channel : Channel
      mode : String
   raises RuntimeException

The set-close-on-exec-mode function sets the close-on-exec flags for the given channels. If the close-on-exec flag is set, the channel is not inherited by child processes. Otherwise it is.

10.8.17  pipe

   $(pipe) : Pipe
   raises RuntimeException

The pipe function creates a Pipe object, which has two fields. The read field is a channel that is opened for reading, and the write field is a channel that is opened for writing.

10.8.18  mkfifo

   mkfifo(mode, node...)
      mode : Int
      node : Node

The mkfifo function creates a named pipe.

10.8.19  select

   $(select rfd..., wfd..., wfd..., timeout) : Select
      rfd : InChannel
      wfd : OutChannel
      efd : Channel
      timeout : float
   raises RuntimeException

The select function polls for possible IO on a set of channels. The rfd are a sequence of channels for reading, wfd are a sequence of channels for writing, and efd are a sequence of channels to poll for error conditions. The timeout specifies the maximum amount of time to wait for events.

On successful return, select returns a Select object, which has the following fields:

read
An array of channels available for reading.
write
An array of channels available for writing.
error
An array of channels on which an error has occurred.

10.8.20  lockf

    lockf(channel, command, len)
       channel : Channel
       command : String
       len : Int
    raises RuntimeException

The lockf function places a lock on a region of the channel. The region starts at the current position and extends for len bytes.

The possible values for command are the following.

F_ULOCK
Unlock a region.
F_LOCK
Lock a region for writing; block if already locked.
F_TLOCK
Lock a region for writing; fail if already locked.
F_TEST
Test a region for other locks.
F_RLOCK
Lock a region for reading; block if already locked.
F_TRLOCK
Lock a region for reading; fail is already locked.

10.8.21  InetAddr

The InetAddr object describes an Internet address. It contains the following fields.

addr
String: the Internet address.
port
Int: the port number.

10.8.22  Host

A Host object contains the following fields.

name
String: the name of the host.
aliases
String Array: other names by which the host is known.
addrtype
String: the preferred socket domain.
addrs
InetAddr Array: an array of Internet addresses belonging to the host.

10.8.23  gethostbyname

   $(gethostbyname host...) : Host...
      host : String
   raises RuntimeException

The gethostbyname function returns a Host object for the specified host. The host may specify a domain name or an Internet address.

10.8.24  Protocol

The Protocol object represents a protocol entry. It has the following fields.

name
String: the canonical name of the protocol.
aliases
String Array: aliases for the protocol.
proto
Int: the protocol number.

10.8.25  getprotobyname

   $(getprotobyname name...) : Protocol...
      name : Int or String
   raises RuntimeException

The getprotobyname function returns a Protocol object for the specified protocol. The name may be a protocol name, or a protocol number.

10.8.26  Service

The Service object represents a network service. It has the following fields.

name
String: the name of the service.
aliases
String Array: aliases for the service.
port
Int: the port number of the service.
proto
Protocol: the protocol for the service.

10.8.27  getservbyname

   $(getservbyname service...) : Service...
      service : String or Int
   raises RuntimeException

The getservbyname function gets the information for a network service. The service may be specified as a service name or number.

10.8.28  socket

   $(socket domain, type, protocol) : Channel
      domain : String
      type : String
      protocol : String
   raises RuntimeException

The socket function creates an unbound socket.

The possible values for the arguments are as follows.

The domain may have the following values.

PF_UNIX or unix
Unix domain, available only on Unix systems.
PF_INET or inet
Internet domain, IPv4.
PF_INET6 or inet6
Internet domain, IPv6.

The type may have the following values.

SOCK_STREAM or stream
Stream socket.
SOCK_DGRAM or dgram
Datagram socket.
SOCK_RAW or raw
Raw socket.
SOCK_SEQPACKET or seqpacket
Sequenced packets socket

The protocol is an Int or String that specifies a protocol in the protocols database.

10.8.29  bind

   bind(socket, host, port)
      socket : InOutChannel
      host : String
      port : Int
   bind(socket, file)
      socket : InOutChannel
      file : File
   raise RuntimeException

The bind function binds a socket to an address.

The 3-argument form specifies an Internet connection, the host specifies a host name or IP address, and the port is a port number.

The 2-argument form is for Unix sockets. The file specifies the filename for the address.

10.8.30  listen

   listen(socket, requests)
      socket : InOutChannel
      requests : Int
   raises RuntimeException

The listen function sets up the socket for receiving up to requests number of pending connection requests.

10.8.31  accept

   $(accept socket) : InOutChannel
      socket : InOutChannel
   raises RuntimeException

The accept function accepts a connection on a socket.

10.8.32  connect

    connect(socket, addr, port)
       socket : InOutChannel
       addr : String
       port : int
    connect(socket, name)
       socket : InOutChannel
       name : File
    raise RuntimeException

The connect function connects a socket to a remote address.

The 3-argument form specifies an Internet connection. The addr argument is the Internet address of the remote host, specified as a domain name or IP address. The port argument is the port number.

The 2-argument form is for Unix sockets. The name argument is the filename of the socket.

10.8.33  getchar

    $(getc) : String
    $(getc file) : String
       file : InChannel or File
    raises RuntimeException

The getc function returns the next character of a file. If the argument is not specified, stdin is used as input. If the end of file has been reached, the function returns false.

10.8.34  gets

   $(gets) : String
   $(gets channel) : String
      channel : InChannel or File
   raises RuntimeException

The gets function returns the next line from a file. The function returns the empty string if the end of file has been reached. The line terminator is removed.

10.8.35  fgets

   $(fgets) : String
   $(fgets channel) : String
      channel : InChannel or File
   raises RuntimeException

The fgets function returns the next line from a file that has been opened for reading with fopen. The function returns the empty string if the end of file has been reached. The returned string is returned as literal data. The line terminator is not removed.

10.9  Printing functions

Output is printed with the print and println functions. The println function adds a terminating newline to the value being printed, the print function does not.

    fprint(<file>, <string>)
    print(<string>)
    eprint(<string>)
    fprintln(<file>, <string>)
    println(<string>)
    eprintln(<string>)

The fprint functions print to a file that has been previously opened with fopen. The print functions print to the standard output channel, and the eprint functions print to the standard error channel.

10.10  Value printing functions

Values can be printed with the printv and printvln functions. The printvln function adds a terminating newline to the value being printed, the printv function does not.

    fprintv(<file>, <string>)
    printv(<string>)
    eprintv(<string>)
    fprintvln(<file>, <string>)
    printvln(<string>)
    eprintvln(<string>)

The fprintv functions print to a file that has been previously opened with fopen. The printv functions print to the standard output channel, and the eprintv functions print to the standard error channel.

10.10.1  Miscellaneous functions

10.10.1.1  set-channel-line

    set-channel-line(channel, filename, line)
        channel : Channel
        filename : File
        line : int

Set the line number information for the channel.

10.11  Higher-level IO functions

10.11.1  Regular expressions

Many of the higher-level functions use regular expressions. Regular expressions are defined by strings with syntax nearly identical to awk(1).

Strings may contain the following character constants.

  • \\ : a literal backslash.
  • \a : the alert character ^G.
  • \b : the backspace character ^H.
  • \f : the formfeed character ^L.
  • \n : the newline character ^J.
  • \r : the carriage return character ^M.
  • \t : the tab character ^I.
  • \v : the vertical tab character.
  • \xhh... : the character represented by the string of hexadecimal digits h. All valid hexadecimal digits following the sequence are considered to be part of the sequence.
  • \ddd : the character represented by 1, 2, or 3 octal digits.

Regular expressions are defined using the special characters .\^$[(){}*?+.

  • c : matches the literal character c if c is not a special character.
  • \c : matches the literal character c, even if c is a special character.
  • . : matches any character, including newline.
  • ^ : matches the beginning of a line.
  • $ : matches the end of line.
  • [abc...] : matches any of the characters abc...
  • [^abc...] : matches any character except abc...
  • r1|r2 : matches either r1 or r2.
  • r1r2 : matches r1 and then r2.
  • r+ : matches one or more occurrences of r.
  • r* : matches zero or more occurrences of r.
  • r? : matches zero or one occurrence of r.
  • (r) : parentheses are used for grouping; matches r.
  • \(r\) : also defines grouping, but the expression matched within the parentheses is available to the output processor through one of the variables $1, $2, ...
  • r{n} : matches exactly n occurrences of r.
  • r{n,} : matches n or more occurrences of r.
  • r{n,m} : matches at least n occurrences of r, and no more than m occurrences.
  • \y: matches the empty string at either the beginning or end of a word.
  • \B: matches the empty string within a word.
  • \<: matches the empty string at the beginning of a word.
  • \>: matches the empty string at the end of a word.
  • \w: matches any character in a word.
  • \W: matches any character that does not occur within a word.
  • \`: matches the empty string at the beginning of a file.
  • \': matches the empty string at the end of a file.

Character classes can be used to specify character sequences abstractly. Some of these sequences can change depending on your LOCALE.

  • [:alnum:] Alphanumeric characters.
  • [:alpha:] Alphabetic characters.
  • [:lower:] Lowercase alphabetic characters.
  • [:upper:] Uppercase alphabetic characters.
  • [:cntrl:] Control characters.
  • [:digit:] Numeric characters.
  • [:xdigit:] Numeric and hexadecimal characters.
  • [:graph:] Characters that are printable and visible.
  • [:print:] Characters that are printable, whether they are visible or not.
  • [:punct:] Punctuation characters.
  • [:blank:] Space or tab characters.
  • [:space:] Whitespace characters.

10.11.2  cat

    cat(files) : Sequence
       files : File or InChannel Sequence

The cat function concatenates the output from multiple files and returns it as a string.

10.11.3  grep

   grep(pattern) : String  # input from stdin, default options
      pattern : String
   grep(pattern, files) : String  # default options
      pattern : String
      files   : File Sequence
   grep(options, pattern, files) : String
     options : String
     pattern : String
     files   : File Sequence

The grep function searches for occurrences of a regular expression pattern in a set of files, and prints lines that match. This is like a highly-simplified version of grep(1).

The options are:

q
If specified, the output from grep is not displayed.
h
If specified, output lines will not include the filename (default, when only one input file is given).
n
If specified, output lines include the filename (default, when more than one input file is given).
v
If specified, search for lines without a match instead of lines with a match,

The pattern is a regular expression.

If successful (grep found a match), the function returns true. Otherwise, it returns false.

10.11.4  scan

   scan(input-files)
   case string1
      body1
   case string2
      body2
   ...
   default
      bodyd

The scan function provides input processing in command-line form. The function takes file/filename arguments. If called with no arguments, the input is taken from stdin. If arguments are provided, each specifies an InChannel, or the name of a file for input. Output is always to stdout.

The scan function operates by reading the input one line at a time, and processing it according to the following algorithm.

For each line, the record is first split into fields, and the fields are bound to the variables $1, $2, .... The variable $0 is defined to be the entire line, and $* is an array of all the field values. The $(NF) variable is defined to be the number of fields.

Next, a case expression is selected. If string_i matches the token $1, then body_i is evaluated. If the body ends in an export, the state is passed to the next clause. Otherwise the value is discarded.

For example, here is an scan function that acts as a simple command processor.

    calc() =
       i = 0
       scan(script.in)
       case print
          println($i)
       case inc
          i = $(add $i, 1)
          export
       case dec
          i = $(sub $i, 1)
          export
       case addconst
          i = $(add $i, $2)
          export
       default
          eprintln($"Unknown command: $1")

The scan function also supports several options.

    scan(options, files)
    ...
A
Parse each line as an argument list, where arguments may be quoted. For example, the following line has three words, “ls”, “-l”, “Program Files”.
       ls -l "Program Files"
   
O
Parse each line using white space as the separator, using the usual OMake algorithm for string parsing. This is the default.
x
Once each line is split, reduce each word using the hex representation. This is the usual hex representation used in URL specifiers, so the string “Program Files” may be alternately represented in the form ProgramProgram+Files.

Note, if you want to redirect the output to a file, the easiest way is to redefine the stdout variable. The stdout variable is scoped the same way as other variables, so this definition does not affect the meaning of stdout outside the calc function.

    calc() =
        stdout = $(fopen script.out, w)
        scan(script.in)
           ...
        close(stdout)

10.11.5  awk

   awk(input-files)
   case pattern1:
      body1
   case pattern2:
      body2
   ...
   default:
      bodyd

or

   awk(options, input-files)
   case pattern1:
      body1
   case pattern2:
      body2
   ...
   default:
      bodyd

The awk function provides input processing similar to awk(1), but more limited. The input-files argument is a sequence of values, each specifies an InChannel, or the name of a file for input. If called with no options and no file arguments, the input is taken from stdin. Output is always to stdout.

The variables RS and FS define record and field separators as regular expressions. The default value of RS is the regular expression \r|\n|\r\n. The default value of FS is the regular expression [ \t]+.

The awk function operates by reading the input one record at a time, and processing it according to the following algorithm.

For each line, the record is first split into fields using the field separator FS, and the fields are bound to the variables $1, $2, .... The variable $0 is defined to be the entire line, and $* is an array of all the field values. The $(NF) variable is defined to be the number of fields.

Next, the cases are evaluated in order. For each case, if the regular expression pattern_i matches the record $0, then body_i is evaluated. If the body ends in an export, the state is passed to the next clause. Otherwise the value is discarded. If the regular expression contains \(r\) expression, those expression override the fields $1, $2, ....

For example, here is an awk function to print the text between two delimiters \begin{<name>} and \end{<name>}, where the <name> must belong to a set passed as an argument to the filter function.

    filter(names) =
       print = false

       awk(Awk.in)
       case $"^\\end\{\([:alpha:]+\)\}"
          if $(mem $1, $(names))
             print = false
             export
          export
       default
          if $(print)
             println($0)
       case $"^\\begin\{\([:alpha:]+\)\}"
          print = $(mem $1, $(names))
          export

Note, if you want to redirect the output to a file, the easiest way is to redefine the stdout variable. The stdout variable is scoped the same way as other variables, so this definition does not affect the meaning of stdout outside the filter function.

    filter(names) =
        stdout = $(fopen file.out, w)
        awk(Awk.in)
           ...
        close(stdout)

Options.

b
“Break” when evaluating cases. Only the first case that matches will be selected.

The break function can be used to abort the loop, exiting the awk function immediately.

10.11.6  fsubst

   fsubst(files)
   case pattern1 [options]
      body1
   case pattern2 [options]
      body2
   ...
   default
      bodyd

The fsubst function provides a sed(1)-like substitution function. Similar to awk, if fsubst is called with no arguments, the input is taken from stdin. If arguments are provided, each specifies an InChannel, or the name of a file for input.

The RS variable defines a regular expression that determines a record separator, The default value of RS is the regular expression \r|\n|\r\n.

The fsubst function reads the file one record at a time.

For each record, the cases are evaluated in order. Each case defines a substitution from a substring matching the pattern to replacement text defined by the body.

Currently, there is only one option: g. If specified, each clause specifies a global replacement, and all instances of the pattern define a substitution. Otherwise, the substitution is applied only once.

Output can be redirected by redefining the stdout variable.

For example, the following program replaces all occurrences of an expression word. with its capitalized form.

    section
       stdout = $(fopen Subst.out, w)
       fsubst(Subst.in)
       case $"\<\([[:alnum:]]+\)\." g
          value $(capitalize $1).
       close(stdout)

10.11.7  lex

   lex(files)
   case pattern1
      body1
   case pattern2
      body2
   ...
   default
      bodyd

The lex function provides a simple lexical-style scanner function. The input is a sequence of files or channels. The cases specify regular expressions. Each time the input is read, the regular expression that matches the longest prefix of the input is selected, and the body is evaluated.

If two clauses both match the same input, the last one is selected for execution. The default case matches the regular expression .; you probably want to place it first in the pattern list.

If the body end with an export directive, the state is passed to the next clause.

For example, the following program collects all occurrences of alphanumeric words in an input file.

    collect-words($(files)) =
       words[] =
       lex($(files))
       default
          # empty
       case $"[[:alnum:]]+" g
          words[] += $0
          export

The default case, if one exists, matches single characters. Since

It is an error if the input does not match any of the regular expressions.

The break function can be used to abort the loop.

10.11.8  lex-search

   lex-search(files)
   case pattern1
      body1
   case pattern2
      body2
   ...
   default
      bodyd

The lex-search function is like the lex function, but input that does not match any of the regular expressions is skipped. If the clauses include a default case, then the default matches any skipped text.

For example, the following program collects all occurrences of alphanumeric words in an input file, skipping any other text.

    collect-words($(files)) =
       words[] =
       lex-search($(files))
       default
          eprintln(Skipped $0)
       case $"[[:alnum:]]+" g
          words[] += $0
          export

The default case, if one exists, matches single characters. Since

It is an error if the input does not match any of the regular expressions.

The break function can be used to abort the loop.

10.11.9  Lexer

The Lexer object defines a facility for lexical analysis, similar to the lex(1) and flex(1) programs.

In omake, lexical analyzers can be constructed dynamically by extending the Lexer class. A lexer definition consists of a set of directives specified with method calls, and set of clauses specified as rules.

For example, consider the following lexer definition, which is intended for lexical analysis of simple arithmetic expressions for a desktop calculator.

   lexer1. =
      extends $(Lexer)

      other: .
         eprintln(Illegal character: $* )
         lex()

      white: $"[[:space:]]+"
         lex()

      op: $"[-+*/()]"
         switch $*
         case +
            Token.unit($(loc), plus)
         case -
            Token.unit($(loc), minus)
         case *
            Token.unit($(loc), mul)
         case /
            Token.unit($(loc), div)
         case $"("
            Token.unit($(loc), lparen)
         case $")"
            Token.unit($(loc), rparen)

      number: $"[[:digit:]]+"
         Token.pair($(loc), exp, $(int $* ))

      eof: $"\'"
         Token.unit($(loc), eof)

This program defines an object lexer1 the extends the Lexer object, which defines lexing environment.

The remainder of the definition consists of a set of clauses, each with a method name before the colon; a regular expression after the colon; and in this case, a body. The body is optional, if it is not specified, the method with the given name should already exist in the lexer definition.

NB The clause that matches the longest prefix of the input is selected. If two clauses match the same input prefix, then the last one is selected. This is unlike most standard lexers, but makes more sense for extensible grammars.

The first clause matches any input that is not matched by the other clauses. In this case, an error message is printed for any unknown character, and the input is skipped. Note that this clause is selected only if no other clause matches.

The second clause is responsible for ignoring white space. If whitespace is found, it is ignored, and the lexer is called recursively.

The third clause is responsible for the arithmetic operators. It makes use of the Token object, which defines three fields: a loc field that represents the source location; a name; and a value.

The lexer defines the loc variable to be the location of the current lexeme in each of the method bodies, so we can use that value to create the tokens.

The Token.unit($(loc), name) method constructs a new Token object with the given name, and a default value.

The number clause matches nonnegative integer constants. The Token.pair($(loc), name, value) constructs a token with the given name and value.

Lexer object operate on InChannel objects. The method lexer1.lex-channel(channel) reads the next token from the channel argument.

10.11.10  Lexer matching

During lexical analysis, clauses are selected by longest match. That is, the clause that matches the longest sequence of input characters is chosen for evaluation. If no clause matches, the lexer raises a RuntimeException. If more than one clause matches the same amount of input, the first one is chosen for evaluation.

10.11.11  Extending lexer definitions

Suppose we wish to augment the lexer example so that it ignores comments. We will define comments as any text that begins with the string (*, ends with *), and comments may be nested.

One convenient way to do this is to define a separate lexer just to skip comments.

   lex-comment. =
      extends $(Lexer)

      level = 0

      other: .
         lex()

      term: $"[*][)]"
         if $(not $(eq $(level), 0))
            level = $(sub $(level), 1)
            lex()

      next: $"[(][*]"
         level = $(add $(level), 1)
         lex()

      eof: $"\'"
         eprintln(Unterminated comment)

This lexer contains a field level that keeps track of the nesting level. On encountering a (* string, it increments the level, and for *), it decrements the level if nonzero, and continues.

Next, we need to modify our previous lexer to skip comments. We can do this by extending the lexer object lexer1 that we just created.

   lexer1. +=
      comment: $"[(][*]"
         lex-comment.lex-channel($(channel))
         lex()

The body for the comment clause calls the lex-comment lexer when a comment is encountered, and continues lexing when that lexer returns.

10.11.12  Threading the lexer object

Clause bodies may also end with an export directive. In this case the lexer object itself is used as the returned token. If used with the Parser object below, the lexer should define the loc, name and value fields in each export clause. Each time the Parser calls the lexer, it calls it with the lexer returned from the previous lex invocation.

10.11.13  Parser

The Parser object provides a facility for syntactic analysis based on context-free grammars.

Parser objects are specified as a sequence of directives, specified with method calls; and productions, specified as rules.

For example, let's finish building the desktop calculator started in the Lexer example.

   parser1. =
      extends $(Parser)

      #
      # Use the main lexer
      #
      lexer = $(lexer1)

      #
      # Precedences, in ascending order
      #
      left(plus minus)
      left(mul div)
      right(uminus)

      #
      # A program
      #
      start(prog)

      prog: exp eof
         return $1

      #
      # Simple arithmetic expressions
      #
      exp: minus exp :prec: uminus
         neg($2)

      exp: exp plus exp
         add($1, $3)

      exp: exp minus exp
         sub($1, $3)

      exp: exp mul exp
         mul($1, $3)

      exp: exp div exp
         div($1, $3)

      exp: lparen exp rparen
         return $2

Parsers are defined as extensions of the Parser class. A Parser object must have a lexer field. The lexer is not required to be a Lexer object, but it must provide a lexer.lex() method that returns a token object with name and value fields. For this example, we use the lexer1 object that we defined previously.

The next step is to define precedences for the terminal symbols. The precedences are defined with the left, right, and nonassoc methods in order of increasing precedence.

The grammar must have at least one start symbol, declared with the start method.

Next, the productions in the grammar are listed as rules. The name of the production is listed before the colon, and a sequence of variables is listed to the right of the colon. The body is a semantic action to be evaluated when the production is recognized as part of the input.

In this example, these are the productions for the arithmetic expressions recognized by the desktop calculator. The semantic action performs the calculation. The variables $1, $2, ... correspond to the values associated with each of the variables on the right-hand-side of the production.

10.11.14  Calling the parser

The parser is called with the $(parser1.parse-channel start, channel) or $(parser1.parse-file start, file) functions. The start argument is the start symbol, and the channel or file is the input to the parser.

10.11.15  Parsing control

The parser generator generates a pushdown automation based on LALR(1) tables. As usual, if the grammar is ambiguous, this may generate shift/reduce or reduce/reduce conflicts. These conflicts are printed to standard output when the automaton is generated.

By default, the automaton is not constructed until the parser is first used.

The build(debug) method forces the construction of the automaton. While not required, it is wise to finish each complete parser with a call to the build(debug) method. If the debug variable is set, this also prints with parser table together with any conflicts.

The loc variable is defined within action bodies, and represents the input range for all tokens on the right-hand-side of the production.

10.11.16  Extending parsers

Parsers may also be extended by inheritance. For example, let's extend the grammar so that it also recognizes the << and >> shift operations.

First, we extend the lexer so that it recognizes these tokens. This time, we choose to leave lexer1 intact, instead of using the += operator.

   lexer2. =
      extends $(lexer1)

      lsl: $"<<"
         Token.unit($(loc), lsl)

      asr: $">>"
         Token.unit($(loc), asr)

Next, we extend the parser to handle these new operators. We intend that the bitwise operators have lower precedence than the other arithmetic operators. The two-argument form of the left method accomplishes this.

   parser2. =
      extends $(parser1)

      left(plus, lsl lsr asr)

      lexer = $(lexer2)

      exp: exp lsl exp
         lsl($1, $3)

      exp: exp asr exp
         asr($1, $3)

In this case, we use the new lexer lexer2, and we add productions for the new shift operations.

10.11.17  Passwd

The Passwd object represents an entry in the system's user database. It contains the following fields.

pw_name: the login name.
pw_passwd: the encrypted password.
pw_uid: user id of the user.
pw_gid: group id of the user.
pw_gecos: the user name or comment field.
pw_dir: the user's home directory.
pw_shell: the user's default shell.

Not all the fields will have meaning on all operating systems.

10.11.18  getpwnam, getpwuid

    $(getpwnam name...) : Passwd
       name : String
    $(getpwuid uid...) : Passwd
       uid : Int
    raises RuntimeException

The getpwnam function looks up an entry by the user's login and the getpwuid function looks up an entry by user's numerical id (uid). If no entry is found, an exception will be raised.

10.11.19  getpwents

    $(getpwents) : Array

The getpwents function returns an array of Passwd objects, one for every user fund in the system user database. Note that depending on the operating system and on the setup of the user database, the returned array may be incomplete or even empty.

10.11.20  Group

The Group object represents an entry in the system's user group database. It contains the following fields.

gr_name: the group name.
gr_group: the encrypted password.
gr_gid: group id of the group.
gr_mem: the group member's user names.

Not all the fields will have meaning on all operating systems.

10.11.21  getgrnam, getgrgid

    $(getgrnam name...) : Group
       name : String
    $(getgrgid gid...) : Group
       gid : Int
    raises RuntimeException

The getgrnam function looks up a group entry by the group's name and the getgrgid function looks up an entry by groups's numerical id (gid). If no entry is found, an exception will be raised.

10.11.22  tgetstr

   $(tgetstr id) : String
      id : String

The tgetstr function looks up the terminal capability with the indicated id. This assumes the terminfo to lookup is given in the TERM environment variable. This function returns an empty value if the given terminal capability is not defined.

Note: if you intend to use the value returned by tgetstr inside the shell prompt, you need to wrap it using the prompt-invisible function.

10.11.23  xterm-escape-begin, xterm-escape-end

   $(xterm-escape-begin) : String
   $(xterm-escape-end) : String

The xterm-escape-begin and xterm-escape-end functions return the escape sequences that can be used to set the XTerm window title. Will return empty values if this capability is not available.

Note: if you intend to use these strings inside the shell prompt, you need to use $(prompt_invisible_begin)$(xterm-escape-begin) and $(xterm-escape-end)$(prompt_invisible_end).

10.11.24  xterm-escape

   $(xterm-escape s) : Sequence

When the TERM environment variable indicates that the XTerm title setting capability is available, $(xterm-escape s) is equivalent to $(xterm-escape-begin)s$(xterm-escape-end). Otherwise, it returns an empty value.

Note: if you intend to use the value returned by xterm-escape inside the shell prompt, you need to wrap it using the prompt-invisible function.

10.11.25  prompt-invisible-begin, prompt-invisible-end

   $(prompt-invisible-begin) : String
   $(prompt-invisible-end) : String

The prompt-invisible-begin and prompt-invisible-end functions return the escape sequences that must used to mark the “invisible” sections of the shell prompt (such as various escape sequences).

10.11.26  prompt-invisible

   $(prompt-invisible s) : Sequence

The prompt-invisible will wrap its argument with $(prompt-invisible-begin) and $(prompt-invisible-end). All the `invisible” sections of the shell prompt (such as various escape sequences) must be wrapped this way.

10.11.27  gettimeofday

   $(gettimeofday) : Float

The gettimeofday function returns the time of day in seconds since January 1, 1970.

Chapter 11  Shell commands

Shell commands (commands to be executed by the operating system) can be freely mixed with other code.

NOTE: the syntax and shell usage is identical on all platforms, including Win32. To avoid portability problems on Win32, it is recommended that you avoid the use of the native shell interpreter cmd.

    LIB = $(dir lib)
    println(The contents of the $(LIB) directory is:)
    ls $(LIB)

11.1  Simple commands

The syntax of shell commands is similar to the syntax used by the Unix shell bash. In general, a command is a pipeline. A basic command is part of a pipeline. It is specified with the name of an executable and some arguments. Here are some examples.

    ls
    ls -AF .
    echo Hello world

The command is found using the current search path in the variable PATH[], which should define an array of directories containing executables.

A command may also be prefixed by environment variable definitions.

    # Prints "Hello world"
    env X="Hello world" Y=2 printenv X
    # Pass the include path to the Visual C++
    env include="c:\Program Files\Microsoft SDK\include" cl foo.cpp

11.2  Globbing

Commands may contain wildcard patterns. A pattern specifies a set of files through a limited kind of regular expression. Patterns are expanded before the function is executed.

   # List all files with a .c suffix
   ls *.c

   # List all files with a single character prefix, and .c suffix
   ls ?.c

   # Rename the file hello.ml to foo.ml
   mv {hello,foo}.ml

A comprehensive description of OMake glob patterns is given in Section 10.4.

11.3  Background jobs

The command may also be placed in the background by placing an ampersand after the command. Control returns to the shell without waiting for the job to complete. The job continues to run in the background.

    gcc -o hugeprogram *.c &

11.4  File redirection

Input and output can be redirected to files by using the <, >, and >& directives after the command.

    # Write to the "foo" file
    echo Hello world > foo

    # Redirect input from the foo file
    cat < foo

    # Redirect standard output and errors to the foo file
    gcc -o boo *.c >& foo

11.5  Pipelines

Pipelines are sequences of commands, where the output from each command is sent to the next. Pipelines are defined with the | and |& syntax. With | the output is redirected, but errors are not. With |& both output and errors are redirected.

   # Send the output of the ls command to the printer
   ls *.c | lpr

   # Send output and errors to jyh as email
   gcc -o hugefile *.c |& mail jyh

11.6  Conditional execution

Commands may also be composed though conditional evaluation using the || and && syntax. Every command has an integer exit code, which may be zero or some other integer. A command is said to succeed if its exit code is zero. The expression command1 && command2 executes command2 only if command1 succeeds. The expression command1 || command2 executes command2 only if command1 fails.

   # Display the x/y file if possible
   cd x && cat y

   # Run foo.exe, or print an error message
   (test -x foo.exe && foo.exe) || echo "foo.exe is not executable"

11.7  Grouping

Parenthesis are used for grouping in a pipeline or conditional command. In the following expression, the test function is used to test whether the foo.exe file is executable. If it is, the foo.exe file is executed. If the file is not executable (or if the foo.exe command fails), the message "foo.exe is not executable" is printed.

   # Run foo.exe, or print an error message
   (test -x foo.exe && foo.exe) || echo "foo.exe is not executable"

11.8  What is a shell command?

Syntactially, shell commands are any line that is not one of the following:

  • A variable definition of the form VAR=string
  • A function call f(...) or method call o.f(...)
  • A rule definition containing a colon string: ...
  • A special command, including the following:
    • if ...
    • switch ...
    • match ...
    • section ...
    • return ...

Commands may also be builtin (aliases). See the documentation for the Shell object for more information.

11.9  Basic builtin functions

11.9.1  echo

The echo function prints a string.

$(echo <args>)
echo <args>

11.9.2  cd

The cd function changes the current directory.

    cd(dir)
       dir : Dir

The cd function also supports a 2-argument form:

    $(cd dir, e)
       dir : Dir
       e : expression

In the two-argument form, expression e is evaluated in the directory dir. The current directory is not changed otherwise.

The behavior of the cd function can be changed with the CDPATH variable, which specifies a search path for directories. This is normally useful only in the osh command interpreter.

    CDPATH : Dir Sequence

For example, the following will change directory to the first directory ./foo, ~/dir1/foo, ~/dir2/foo.

    CDPATH[] =
       .
       $(HOME)/dir1
       $(HOME)/dir2
    cd foo

11.10  Job control builtin functions

11.10.1  jobs

The jobs function prints a list of jobs.

jobs

11.10.2  bg

The bg function places a job in the background.

bg <pid...>

11.10.3  fg

The fg function brings a job to the foreground.

fg <pid...>

11.10.4  stop

The stop function suspends a job.

stop <pid...>

11.10.5  wait

The wait function waits for a job to finish. If no process identifiers are given, the shell waits for all jobs to complete.

wait <pid...>

11.10.6  kill

The kill function signals a job.

kill [signal] <pid...>

11.11  Command history

11.11.1  history

    $(history-index) : Int
    $(history) : String Sequence
    history-file : File
    history-length : Int

The history variables manage the command-line history in osh. They have no effect in omake.

The history-index variable is the current index into the command-line history. The history variable is the current command-line history.

The history-file variable can be redefined if you want the command-line history to be saved. The default value is ~/.omake/osh_history.

The history-length variable can be redefined to specify the maximum number of lines in the history that you want saved. The default value is 100.

Chapter 12  The standard objects

Pervasives defines the objects that are defined in all programs. The following objects are defined.

12.1  Pervasives objects

12.1.1  Object

Parent objects: none.

The Object object is the root object. Every class is a subclass of Object.

It provides the following fields:

  • $(o.object-length): the number of fields and methods in the object.
  • $(o.object-mem <var>): returns true iff the <var> is a field or method of the object.
  • $(o.object-add <var>, <value>): adds the field to the object, returning a new object.
  • $(o.object-find <var>): fetches the field or method from the object; it is equivalent to $(o.<var>), but the variable can be non-constant.
  • $(o.object-map <fun>): maps a function over the object. The function should take two arguments; the first is a field name, the second is the value of that field. The result is a new object constructed from the values returned by the function.
  • o.object-foreach: the object-foreach form is equivalent to object-map, but with altered syntax.
       o.object-foreach(<var1>, <var2>)
          <body>
       

    For example, the following function prints all the fields of an object o.

       PrintObject(o) =
          o.object-foreach(v, x)
             println($(v) = $(x))
       

    The export form is valid in a object-foreach body. The following function collects just the field names of an object.

       FieldNames(o) =
          names[] =
          o.object-foreach(v, x)
             names[] += $(v)
             export
          return $(names)
       

12.1.2  Map

Parent objects: Object.

A Map object is a dictionary from values to values. The <key> values are restricted to simple values: integers, floating-point numbers, strings, files, directories, and arrays of simple values.

The Map object provides the following methods.

  • $(o.length): the number of items in the map.
  • $(o.mem <key>): returns true iff the <key> is defined in the map.
  • $(o.add <key>, <value>): adds the field to the map, returning a new map.
  • $(o.find <key>): fetches the field from the map.
  • $(o.keys): fetches an array of all the keys in the map, in alphabetical order.
  • $(o.values): fetches an array of all the values in the map, in the alphabetical order of the corresponding keys.
  • $(o.map <fun>): maps a function over the map. The function should take two arguments; the first is a field name, the second is the value of that field. The result is a new object constructed from the values returned by the function.
  • o.foreach: the foreach form is equivalent to map, but with altered syntax.
       o.foreach(<var1>, <var2>)
          <body>
       

    For example, the following function prints all the fields of an object o.

       PrintObject(o) =
          o.foreach(v, x)
             println($(v) = $(x))
       

    The export form is valid in a foreach body. The following function collects just the field names of the map.

       FieldNames(o) =
          names =
          o.foreach(v, x)
             names += $(v)
             export
          return $(names)
       

There is also simpler syntax when the key is a string. The table can be defined using definitions with the form $|key| (the number of pipe symbols | is allowed to vary).

    $|key 1| = value1
    $||key1|key2|| = value2    # The key is key1|key2
    X = $|key 1|               # Define X to be the value of field $|key 1|

The usual modifiers are also allowed. The expression $`|key| represents lazy evaluation of the key, and $,|key| is normal evaluation.

12.1.3  Number

Parent objects: Object.

The Number object is the parent object for integers and floating-point numbers.

12.1.4  Int

Parent objects: Number.

The Int object represents integer values.

12.1.5  Float

Parent objects: Number.

The Float object represents floating-point numbers.

12.1.6  Sequence

Parent objects: Object.

The Sequence object represents a generic object containing sequential elements. It provides the following methods.

  • $(s.length): the number of elements in the sequence.
  • $(s.map <fun>): maps a function over the fields in the sequence. The function should take one argument. The result is a new sequence constructed from the values returned by the function.
  • s.foreach: the foreach form is equivalent to map, but with altered syntax.
       s.foreach(<var>)
          <body>
       

    For example, the following function prints all the elements of the sequence.

       PrintSequence(s) =
          s.foreach(x)
             println(Elem = $(x))
       

    The export form is valid in a foreach body. The following function counts the number of zeros in the sequence.

       Zeros(s) =
          count = $(int 0)
          s.foreach(v)
             if $(equal $(v), 0)
                count = $(add $(count), 1)
                export
             export
          return $(count)
       
  • $(s.forall <fun>): tests whether each element of the sequence satifies a predicate.
  • $(s.exists <fun>): tests whether the sequence contains an element that satisfies a predicate.
  • $(s.sort <fun>): sorts a sequence. The <fun> is a comparison function. It takes two elements (x, y) of the sequence, compares them, and returns a negative number if x < y, a positive number if x > y, and zero if the two elements are equal.
      osh> items = $(int 0 3 -2)
      osh> items.forall(x => $(gt $x, 0))
      - : bool = false
      osh> items.exists(x => $(gt $x, 0))
      - : bool = true
      osh> items.sort($(compare))
      - : Array = -2 3 0
      

12.1.7  Array

Parent objects: Sequence.

The Array is a random-access sequence. It provides the following additional methods.

  • $(s.nth <i>): returns element i of the sequence.
  • $(s.rev <i>): returns the reversed sequence.

12.1.8  String

Parent objects: Array.

12.1.9  Fun

Parent objects: Object.

The Fun object provides the following methods.

  • $(f.arity): the arity if the function.

12.1.10  Rule

Parent objects: Object.

The Rule object represents a build rule. It does not currently have any methods.

12.1.11  Target

Parent object: Object.

The Target object contains information collected for a specific target file.

  • target: the target file.
  • effects: the files that may be modified by a side-effect when this target is built.
  • scanner_deps: static dependencies that must be built before this target can be scanned.
  • static-deps: statically-defined build dependencies of this target.
  • build-deps: all the build dependencies for the target, including static and scanned dependencies.
  • build-values: all the value dependencies associated with the build.
  • build-commands: the commands to build the target.
  • output-file: if output was diverted to a file, with one of the --output-* options A, this field names that file. Otherwise it is false.

The object supports the following methods.

  • find(file): returns a Target object for the given file. Raises a RuntimeException if the specified target is not part of the project.
  • find-optional(file): returns a Target object for the given file, or false if the file is not part of the project.

NOTE: the information for a target is constructed dynamically, so it is possible that the Target object for a node will contain different values in different contexts. The easiest way to make sure that the Target information is complete is to compute it within a rule body, where the rule depends on the target file, or the dependencies of the target file.

12.1.12  Node

Parent objects: Object.

The Node object is the parent object for files and directories. It supports the following operations.

  • $(node.stat): returns a stat object for the file. If the file is a symbolic link, the stat information is for the destination of the link, not the link itself.
  • $(node.lstat): returns a stat object for the file or symbolic link.
  • $(node.unlink): removes the file.
  • $(node.rename <file>): renames the file.
  • $(node.link <file>): creates a hard link <dst> to this file.
  • $(node.symlink <file>): create a symbolic link <dst> to this file.
  • $(node.chmod <perm>): change the permission of this file.
  • $(node.chown <uid>, <gid>): change the owner and group id of this file.

12.1.13  File

Parent objects: Node.

The file object represents the name of a file.

12.1.14  Dir

Parent objects: Node.

The Dir object represents the name of a directory.

12.1.15  Channel

Parent objects: Object.

A Channel is a generic IO channel. It provides the following methods.

  • $(o.close): close the channel.
  • $(o.name): returns the file name associated with the channel.

12.1.16  InChannel

Parent objects: Channel.

A InChannel is an input channel. The variable stdin is the standard input channel.

It provides the following methods.

  • $(InChannel.fopen <file>): open a new input channel.
  • $(InChannel.of-string <string>): open a new input channel, using a string as input.
  • $(o.read <number>): reads the given number of characters from the channel
  • $(o.readln): reads a line from the channel

12.1.17  OutChannel

Parent object: Channel.

A OutChannel is an output channel. The variables stdout and stderr are the standard output and error channels.

It provides the following methods.

  • $(OutChannel.fopen <file>): open a new output channel.
  • $(OutChannel.string): open a new output channel, writing to a string.
  • $(OutChannel.to-string): get the current string of output, for an output channel created as OutChannel.open-string.
  • $(OutChannel.append <file>): opens a new output channel, appending to the file.
  • $(c.flush): flush the output channel.
  • $(c.print <string>): print a string to the channel.
  • $(c.println <string>): print a string to the channel, followed by a line terminator.

12.1.18  Location

Parent objects: Location.

The Location object represents a location in a file.

12.1.19  Exception

Parent objects: Object.

The Exception object is used as the base object for exceptions. It has no fields.

12.1.20  RuntimeException

Parent objects: Exception.

The RuntimeException object represents an exception from the runtime system. It has the following fields.

  • position: a string representing the location where the exception was raised.
  • message: a string containing the exception message.

12.1.21  UnbuildableException

Parent objects: Exception.

The UnbuildableException object should be used to signal that a target is not buildable. It will be caught by functions such as target-exists. This exception has the following fields:

  • target: indicates which target is not buildable.
  • message: a string containing the exception message.

12.1.22  Shell

Parent objects: Object.

The Shell object contains the collection of builtin functions available as shell commands.

You can define aliases by extending this object with additional methods. All methods in this class are called with one argument: a single array containing an argument list.

  • echo

    The echo function prints its arguments to the standard output channel.

  • jobs

    The jobs method prints the status of currently running commands.

  • cd

    The cd function changes the current directory. Note that the current directory follows the usual scoping rules. For example, the following program lists the files in the foo directory, but the current directory is not changed.

       section
          echo Listing files in the foo directory...
          cd foo
          ls
    
       echo Listing files in the current directory...
       ls
    
  • bg

    The bg method places a job in the background. The job is resumed if it has been suspended.

  • fg

    The fg method brings a job to the foreground. The job is resumed if it has been suspended.

  • stop

    The stop method suspends a running job.

  • wait

    The wait function waits for a running job to terminate. It is not possible to wait for a suspended job.

    The job is not brought to the foreground. If the wait is interrupted, the job continues to run in the background.

  • kill

    The kill function signal a job.

    kill [signal] <pid...>.

    The signals are either numeric, or symbolic. The symbolic signals are named as follows.

    ABRT, ALRM, HUP, ILL, KILL, QUIT, SEGV, TERM, USR1, USR2, CHLD, STOP, TSTP, TTIN, TTOU, VTALRM, PROF.

  • exit

    The exit function terminates the current session.

  • which, where

    See the documentation for the corresponding functions.

  • rehash

    Reset the search path.

  • ln-or-cp src dst

    Links or copies src to dst, overwriting dst. Namely, ln-or-cp would first delete the dst file (unless it is a directory), if it exists. Next it would try to create a symbolic link dst poiting to src (it will make all the necessary adjustmnents of relative paths). If symbolic link can not be created (e.g. the OS or the filesystem does not support symbolic links), it will try to create a hard link. If that fails too, it will try to forcibly copy src to dst.

  • history

    Print the current command-line history.

  • digest

    Print the digests of the given files.

  • Win32 functions.

    Win32 doesn't provide very many programs for scripting, except for the functions that are builtin to the DOS cmd.exe. The following functions are defined on Win32 and only on Win32. On other systems, it is expected that these programs already exist.

    • grep
         grep [-q] [-n] pattern files...
      

      The grep function calls the omake grep function.

  • Internal versions of standard system commands.

    By default, omake uses internal versions of the following commands: cp, mv, cat, rm, mkdir, chmod, test, find. If you really want to use the standard system versions of these commands, set the USE_SYSTEM_COMMANDS as one of the first definitions in your OMakeroot file.

    • pwd
          pwd
      

      The pwd alias would print the absolute path to current directory.

    • mkdir
          mkdir [-m <mode>] [-p] files
      

      The mkdir function is used to create directories. The -verb+-m+ option can be used to specify the permission mode of the created directory. If the -p option is specified, the full path is created.

    • cp
    • mv
          cp [-f] [-i] [-v] src dst
          cp [-f] [-i] [-v] files dst
          mv [-f] [-i] [-v] src dst
          mv [-f] [-i] [-v] files dst
      

      The cp function copies a src file to a dst file, overwriting it if it already exists. If more than one source file is specified, the final file must be a directory, and the source files are copied into the directory.

      -f
      Copy files forcibly, do not prompt.
      -i
      Prompt before removing destination files.
      -v
      Explain what is happening.
    • rm
         rm [-f] [-i] [-v] [-r] files
         rmdir [-f] [-i] [-v] [-r] dirs
      

      The rm function removes a set of files. No warnings are issued if the files do not exist, or if they cannot be removed.

      Options:

      -f
      Forcibly remove files, do not prompt.
      -i
      Prompt before removal.
      -v
      Explain what is happening.
      -r
      Remove contents of directories recursively.
    • chmod
          chmod [-r] [-v] [-f] mode files
      

      The chmod function changes the permissions on a set of files or directories. This function does nothing on Win32. The mode may be specified as an octal number, or in symbolic form [ugoa]*[-=][rwxXstugo]+. See the man page for chmod for details.

      Options:

      -r
      Change permissions of all files in a directory recursively.
      -v
      Explain what is happening.
      -f
      Continue on errors.
    • cat
         cat files...
      

      The cat function prints the contents of the files to stdout

    • test

      test expression
      [ expression +]+
      [ --help
      [ --version
      See the documentation for the test function.

    • find

      find expression

      See the documentation for the find function.

Chapter 13  Build functions and utilities

13.1  Builtin .PHONY targets

The complete set of builtin .PHONY targets include the following.

.PHONY
Declares new phony targets (Section 8.10).
.DEFAULT
Declare the default build targets (Section 8.7).
.SUBDIRS
Include a directory as part of the project (Section 8.8).
.SCANNER
Define a dependency scanner (Section 8.8).
.INCLUDE
Include a file (Section 8.9).
.ORDER
Define a file-dependency ordering rule (Section 10.3.6).
.BUILD_BEGIN
Commands to be executed at the beginning of a build.
.BUILD_SUCCESS
Commands to be executed if the build is successful.
.BUILD_FAILURE
Commands to be executed if the build fails.

The .BUILD targets can be used to specify commands to be executed at the beginning and end of the build. The .BUILD_BEGIN target is built at the beginning of a project build, and one of .BUILD_FAILURE or .BUILD_SUCCESS is executed when the build terminates.

For example, the following set of rules simply print additional messages about the status of the build.

   .BUILD_BEGIN:
       echo Build starting

   .BUILD_SUCCESS:
       echo The build was successful

   .BUILD_FAILURE:
       println($"The build failed: $(length $(find-build-targets Failed)) targets could not be built")

Another common use is to define notifications to be performed when the build completes. For example, the following rule will create a new X terminal displaying the summary of the build (using the BUILD_SUMMARY variable).

    .BUILD_FAILURE:
        xterm -e vi $(BUILD_SUMMARY)

If you do not wish to add these rules directly to your project (which is probably a good idea if you work with others), you can define them in your .omakerc (see Section A.8).

The find-build-targets function is useful for obtaining a firther summary of the build. Note that when output diversions are in effect (with the --output-* options — see Chapter A), any output produced by the commands is copied to a file. The name of the file is specified by the output-file field of the Target object. You may find this useful in defining custom build summaries.

13.2  Options and versioning

13.2.1  OMakeFlags

   OMakeFlags(options)
      options : String

The OMakeFlags function is used to set omake options from within OMakefiles. The options have exactly the same format as options on the command line.

For example, the following code displays the progress bar unless the VERBOSE environment variable is defined.

    if $(not $(defined-env VERBOSE))
        OMakeFlags(-S --progress)
        export

13.2.2  OMakeVersion

   OMakeVersion(version1)
   OMakeVersion(version1, version2)
      version1, version2 : String

The OMakeVersion function is used for version checking in OMakefiles. It takes one or two arguments.

In the one argument form, if the omake version number is less than <version1>, then an exception is raised. In the two argument form, the version must lie between version1 and version2.

13.2.3  cmp-versions

   $(cmp-versions version1, version2)
      version1, version2 : String

The cmp-versions\ functions can be used to compare arbitrary version strings. It returns 0 when the two version strings are equal, a negative number when the first string represents an earlier version, and a positive number otherwise.

13.2.4  DefineCommandVars

   DefineCommandVars()

The DefineCommandVars function redefines the variables passed on the commandline. Variables definitions are passed on the command line in the form name=value. This function is primarily for internal use by omake to define these variables for the first time.

13.3  Examining the dependency graph

13.3.1  dependencies, dependencies-all, dependencies-proper

   $(dependencies targets) : File Array
   $(dependencies-all targets) : File Array
   $(dependencies-proper targets) : File Array
      targets : File Array
   raises RuntimeException

The dependencies function returns the set of immediate dependencies of the given targets. This function can only be used within a rule body and all the arguments to the dependency function must also be dependencies of this rule. This restriction ensures that all the dependencies are known when this function is executed.

The dependencies-all function is similar, but it expands the dependencies recursively, returning all of the dependencies of a target, not just the immediate ones.

The dependencies-proper function returns all recursive dependencies, except the dependencies that are leaf targets. A leaf target is a target that has no dependencies and no build commands; a leaf target corresponds to a source file in the current project.

In all three functions, files that are not part of the current project are silently discarded. All three functions will return phony and scanner targets along with the “real” ones.

One purpose of the dependencies-proper function is for “clean” targets. For example, one way to delete all intermediate files in a build is with a rule that uses the dependencies-proper. Note however, that the rule requires building the project before it can be deleted.

    .PHONY: clean

    APP = ...     # the name of the target application
    clean: $(APP)
       rm -f $(dependencies-proper $(APP))

Also note that the dependencies-proper function will return the phony and scanner targets in addition to real one.

For other (possibly better) alternatives, see Section 10.3.3 and filter-proper-targets function.

13.3.2  target

   $(target targets) : Target Array
      targets : File Sequence
   raises RuntimeException

The target function returns the Target object associated with each of the targets. See the Target object for more information.

13.3.3  find-build-targets

    $(find-build-targets tag) : Target Array
       tag : Succeeded | Failed

The find-build-targets allow the results of the build to be examined. The tag must specifies which targets are to be returned; the comparison is case-insensitive.

Succeeded
The list of targets that were built successfully.
Failed
The list of targets that could not be built.

These are used mainly in conjuction with the .BUILD_SUCCESS (Section 13.1) and .BUILD_FAILURE (Section 13.1) phony targets. For example, adding the following to your project OMakefile will print the number of targets that failed (if the build failed).

    .BUILD_FAILURE:
        echo "Failed target count: $(length $(find-build-targets Failed))"

13.3.4  project-directories

   $(project-directories) : Dir Array

The project-directories function returns the list of all directories that are considered to be part of the project.

To get the complete directory list, this function should be called from within a rule body.

13.3.5  rule

The rule function is called whenever a build rule is defined. It is unlikely that you will need to redefine this function, except in very exceptional cases.

   rule(multiple, target, pattern, sources, options, body) : Rule
      multiple : String
      target   : Sequence
      pattern  : Sequence
      sources  : Sequence
      options  : Array
      body     : Body

The rule function is called when a rule is evaluated.

multiple
A Boolean value indicating whether the rule was defined with a double colon ::.
target
The sequence of target names.
pattern
The sequence of patterns. This sequence will be empty for two-part rules.
sources
The sequence of dependencies.
options
An array of options. Each option is represented as a Map object associating each specified option with a value.
body
The body expression of the rule.

Consider the following rule.

   target: pattern: sources :name1: option1 :name2: option2
      expr1
      expr2

This expression represents the following function call, where square brackets are used to indicate arrays, and the curly brackets represent a Map object.

   rule(false, target, pattern, sources,
        { $|:name1:| = option1; $|:name2:| = option2 }
        [expr1; expr2])

13.3.6  build

    build(targets : File Array) : bool

Build the given targets. The value is true iff the build was successful. This function can be used only in osh.

13.4  The OMakeroot file

The standard OMakeroot file defines the functions are rules for building standard projects.

13.4.1  Variables

ROOT

The root directory of the current project.

CWD

The current working directory (the directory is set for each OMakefile in the project).

EMPTY

The empty string.

STDROOT

The name of the standard installed OMakeroot file.

ABORT_ON_COMMAND_ERROR

If set to true, the construction of a target should be aborted whenever one of the commands to build it fail. This defaults to true, and should normally be left that way.

SCANNER_MODE

This variable should be defined as one of four values (defaults to enabled).

enabled
Allow the use of default .SCANNER rules. Whenever a rule does not specify a :scanner: dependency explicitly, try to find a .SCANNER with the same target name.
disabled
Never use default .SCANNER rules.
warning
Allow the use of default .SCANNER rules, but print a warning whenever one is selected.
error
Do not allow the use of default .SCANNER rules. If a rule does not specify a :scanner: dependency, and there is a default .SCANNER rule, the build will terminate abnormally.

13.4.2  System variables

INSTALL

The command to install a program (install on Unix, cp on Win32).

PATHSEP

The normal path separator (: on Unix, ; on Win32).

DIRSEP

The normal directory separator (/ on Unix, \ on Win32).

EXT_OBJ

File suffix for an object file (default is .o on Unix, and .obj on Win32).

EXT_LIB

File suffix for a static library (default is .a on Unix, and .lib on Win32).

EXT_DLL

File suffix for a shared library (default is .so on Unix, and .dll on Win32).

EXT_ASM

File suffix for an assembly file (default is .s on Unix, and .asm on Win32).

EXE

File suffix for executables (default is empty for Unix, and .exe on Win32 and Cygwin).

13.5  Building C and C++ code

OMake provides extensive support for building C and C++ programs. In order to use the functions defined in this section, you need to make sure the line

open build/C

is present in your OMakeroot file.

13.5.1  Autoconfiguration variables

These variables will get defined based on the “autoconf-style” static. tests executed when you run OMake for the first time. You can use them to configure your project accordingly, and you should not redefine them.

You can use the --configure command line option (Section A.3.9) to force re-execution of all the tests.

A different set of autoconfiguration tests is performed depending on the build environment involved — one set of tests would be performed in a Win32 environment, and another — in a Unix-like environment (including Linux, OS X and Cygwin).

13.5.1.1  Unix-like systems

GCC_FOUND

A boolean flag specifying whether the gcc binary was found in your path.

GXX_FOUND

A boolean flag specifying whether the g++ binary was found in your path.

13.5.1.2  Win32

CL_FOUND

A boolean flag specifying whether the cl binary was found in your path.

LIB_FOUND

A boolean flag specifying whether the lib binary was found in your path.

13.5.2  C and C++ configuration variables

The following variables can be redefined in your project.

CC

The name of the C compiler (on Unix it defaults to gcc when gcc is present and to cc otherwise; on Win32 defaults to cl /nologo).

CXX

The name of the C++ compiler (on Unix it defaults to gcc when gcc is present and to c++ otherwise; on Win32 defaults to cl /nologo).

CPP

The name of the C preprocessor (defaults to cpp on Unix, and cl /E on Win32).

CFLAGS

Compilation flags to pass to the C compiler (default empty on Unix, and /DWIN32 on Win32).

CXXFLAGS

Compilation flags to pass to the C++ compiler (default empty on Unix, and /DWIN32 on Win32).

INCLUDES

Additional directories that specify the search path to the C and C++ compilers (default is .). The directories are passed to the C and C++ compilers with the -I option. The include path with -I prefixes is defined in the PREFIXED_INCLUDES variable.

LIBS

Additional libraries needed when building a program (default is empty).

CCOUT

The option to use for specifying the output file in C and C++ compilers (defaults to -o on Unix and /Fo on Win32).

AS

The name of the assembler (defaults to as on Unix, and ml on Win32).

ASFLAGS

Flags to pass to the assembler (default is empty on Unix, and /c /coff on Win32).

ASOUT

The option string that specifies the output file for AS (defaults to -o on Unix and /Fo on Win32).

AR

The name of the program to create static libraries (defaults to ar cq on Unix, and lib on Win32).

LD

The name of the linker (defaults to ld on Unix, and cl on Win32).

LDFLAGS

Options to pass to the linker (default is empty).

LDFLAGS_DLL

Options to pass to the linker when compiling a shared library (defaults to -shared on Unix and /DLL on Win32).

LDOUT

The option to use for specifying the output file in C and C++ linkers (defaults to -o on Unix and /Fe on Win32).

YACC

The name of the yacc parser generator (default is yacc on Unix, empty on Win32).

LEX

The name of the lex lexer generator (default is lex on Unix, empty on Win32).

13.5.3  Generated C files

Because the C scanners do not normally know anything about generated source files (such as generated header files), these files may need to be created before running the scanner.

13.5.3.1  CGeneratedFiles, LocalCGeneratedFiles

CGeneratedFiles(files)
LocalCGeneratedFiles(files)

The CGeneratedFiles and LocalCGeneratedFiles functions specify files that need to be generated before any C files are scanned for dependencies. For example, if config.h and inputs.h are both generated files, specify:

CGeneratedFiles(config.h inputs.h)

The CGeneratedFiles function is global — its arguments will be generated before any C files anywhere in the project are scanned for dependencies. The LocalCGeneratedFiles function follows the normal scoping rules of OMake.

13.5.4  Building C programs and Libraries

13.5.4.1  StaticCLibrary, DynamicCLibrary

The StaticCLibrary builds a static library and the DynamicCLibrary function builds a shared library (DLL).

StaticCLibrary(<target>, <files>)
DynamicCLibrary(<target>, <files>)

The <target> does not include the library suffix, and The <files> list does not include the object suffix. These are obtained from the EXT_LIB (EXT_DLL) and EXT_OBJ variables.

This function returns the library filename.

The following command builds the library libfoo.a from the files a.o b.o c.o on Unix, or the library libfoo.lib from the files a.obj b.obj c.obj on Win32.

StaticCLibrary(libfoo, a b c)
.DEFAULT: $(StaticCLibrary libbar, a b c d)
CDLL_IMPLIES_STATIC

If the CDLL_IMPLIES_STATIC variable is enabled (this is default on Win32), all the DynamicC functions would assume that creating a shared library automatically created a static one.

13.5.4.2  StaticCLibraryCopy, DynamicCLibraryCopy

The StaticCLibraryCopy and DynamicCLibraryCopy functions copy a library to an install location.

StaticCLibraryCopy(<tag>, <dir>, <lib>)
DynamicCLibraryCopy(<tag>, <dir>, <lib>)

The <tag> is the name of a target (typically a .PHONY target); the <dir> is the installation directory, and <lib> is the library to be copied (without the library suffix).

This function returns the filename of the library in the target directory.

For example, the following code copies the library libfoo.a to the /usr/lib directory.

.PHONY: install

StaticCLibraryCopy(install, /usr/lib, libfoo)

13.5.4.3  StaticCLibraryInstall, DynamicCLibraryInstall

The StaticCLibraryInstall and DynamicCLibraryInstall functions build a library, and set the install location in one step. Return the filename of the library in the target directory.

StaticCLibraryInstall(<tag>, <dir>, <libname>, <files>)
DynamicCLibraryInstall(<tag>, <dir>, <libname>, <files>)
StaticCLibraryInstall(install, /usr/lib, libfoo, a b c)

13.5.4.4  StaticCObject, StaticCObjectCopy, StaticCObjectInstall

These functions mirror the StaticCLibrary, StaticCLibraryCopy, and StaticCLibraryInstall functions, but they build an object file (a .o file on Unix, and a .obj file on Win32).

13.5.4.5  CProgram

The CProgram function builds a C program from a set of object files and libraries.

CProgram(<name>, <files>)

The <name> argument specifies the name of the program to be built; the <files> argument specifies the files to be linked. The function returns the filename of the executable.

Additional options can be passed through the following variables.

CFLAGS
Flags used by the C compiler during the link step.
LDFLAGS
Flags to pass to the loader.
LIBS
Additional libraries to be linked.

For example, the following code specifies that the program foo is to be produced by linking the files bar.o and baz.o and libraries libfoo.a.

section
   LIBS = libfoo
   LDFLAGS += -lbar
   CProgram(foo, bar baz)

13.5.4.6  CProgramCopy

The CProgramCopy function copies a file to an install location.

CProgramCopy(<tag>, <dir>, <program>)

CProgramCopy(install, /usr/bin, foo)

13.5.4.7  CProgramInstall

The CProgramInstall function specifies a program to build, and a location to install, simultaneously.

CProgramInstall(<tag>, <dir>, <name>, <files>)

section
   LIBS = libfoo
   LDFLAGS += -lbar
   CProgramInstall(install, /usr/bin, foo, bar baz)

13.5.4.8  CXXProgram, CXXProgramInstall

The CXXProgram and CXXProgramInstall functions are equivalent to their C counterparts, except that would use $(CXX) and $(CXXFLAGS) for linking instead of $(CC) and $(CFLAGS).

13.5.4.9  StaticCXXLibrary, StaticCXXLibraryCopy, StaticCXXLibraryInstall, DynamicCXXLibrary, DynamicCXXLibraryCopy, DynamicCXXLibraryInstall

Similarly, the six CXXLibrary functions the C++ equivalents of the corresponding CLibrary functions.

13.6  Building OCaml code

OMake provides extensive support for building OCaml code, including support for tools like ocamlfind, ocamlyacc and menhir. In order to use the functions defined in this section, you need to make sure the line

open build/OCaml

is present in your OMakeroot file.

13.6.1  Autoconfiguration variables for OCaml compilation

These variables will get defined based on the “autoconf-style” tests executed when you run OMake for the first time. You can use them to configure your project accordingly, and you should not redefine them.

You can use the --configure command line option (Section A.3.9) to force re-execution of all the tests.

OCAMLOPT_EXISTS

True when ocamlopt (or ocamlopt.opt) is available on your machine.

OCAMLFIND_EXISTS

True when the ocamlfind is available on your machines.

OCAMLDEP_MODULES_AVAILABLE

True when a version of ocamldep that understands the -modules option is available on your machine.

MENHIR_AVAILABLE

True when the Menhir parser-generator is available on your machine.

13.6.2  Configuration variables for OCaml compilation

The following variables can be redefined in your project.

USE_OCAMLFIND

Whether to use the ocamlfind utility (default false)

OCAMLC

The OCaml bytecode compiler (default ocamlc.opt if it exists and USE_OCAMLFIND is not set, otherwise ocamlc).

OCAMLOPT

The OCaml native-code compiler (default ocamlopt.opt if it exists and USE_OCAMLFIND is not set, otherwise ocamlopt).

CAMLP4

The camlp4 preprocessor (default camlp4).

OCAMLLEX

The OCaml lexer generator (default ocamllex).

OCAMLLEXFLAGS

The flags to pass to ocamllex (default -q).

OCAMLYACC

The OCaml parser generator (default ocamlyacc).

OCAMLYACCFLAGS

Additional options to pass to $(OCAMLYACC).

OCAMLDEP

The OCaml dependency analyzer (default ocamldep).

OCAMLDEP_MODULES

The OCaml dependency analyzer that understands the -module option (default ocamldep, if ocamldep -modules works, or ocamlrun ocamldep-omake, if ocamlrun ocamldep-omake -modules works, and empty when neither works).

OCAMLDEP_MODULES_ENABLED

Instead of using OCAMLDEP in a traditional make-style fashion, run $(OCAMLDEP_MODULES) -modules and then postprocess the output internally to discover all the relevant generated .ml and .mli files. See Section 13.6.5 for more information on interactions between OMake, OCAMLDEP and generated files. Set to $(OCAMLDEP_MODULES_AVAILABLE) by default.

OCAMLMKTOP

The OCaml toploop compiler (default ocamlmktop).

OCAMLLINK

The OCaml bytecode linker (default $(OCAMLC)).

OCAMLOPTLINK

The OCaml native-code linker (default $(OCAMLOPT)).

OCAMLINCLUDES

Search path to pass to the OCaml compilers (default .). The search path with the -I prefix is defined by the PREFIXED_OCAMLINCLUDES variable.

OCAMLFIND

The ocamlfind utility (default ocamlfind if USE_OCAMLFIND is set, otherwise empty).

OCAMLFINDFLAGS

The flags to pass to ocamlfind (default empty, USE_OCAMLFIND must be set).

OCAMLPACKS

Package names to pass to ocamlfind (USE_OCAMLFIND must be set).

BYTE_ENABLED

Flag indicating whether to use the bytecode compiler (default true, when no ocamlopt found, false otherwise).

NATIVE_ENABLED

Flag indicating whether to use the native-code compiler (default true, when ocamlopt is found, false otherwise). Both BYTE_ENABLED and NATIVE_ENABLED can be set to true; at least one should be set to true.

MENHIR_ENABLED

Define this as true if you wish to use menhir instead of ocamlyacc (default false).

13.6.3  OCaml command flags

The following variables specify additional options to be passed to the OCaml tools.

OCAMLDEPFLAGS

Flags to pass to OCAMLDEP and OCAMLDEP_MODULES.

OCAMLPPFLAGS

Flags to pass to CAMLP4.

OCAMLCFLAGS

Flags to pass to the byte-code compiler (default -g).

OCAMLOPTFLAGS

Flags to pass to the native-code compiler (default empty).

OCAMLFLAGS

Flags to pass to either compiler (default -warn-error A).

OCAML_BYTE_LINK_FLAGS

Flags to pass to the byte-code linker (default empty).

OCAML_NATIVE_LINK_FLAGS

Flags to pass to the native-code linker (default empty).

OCAML_LINK_FLAGS

Flags to pass to either linker.

MENHIR_FLAGS

Additional flags to pass to menhir.

13.6.4  Library variables

The following variables are used during linking.

OCAML_LIBS

Libraries to pass to the linker. These libraries become dependencies of the link step.

OCAML_OTHER_LIBS

Additional libraries to pass to the linker. These libraries are not included as dependencies to the link step. Typical use is for the OCaml standard libraries like unix or str.

OCAML_CLIBS

C libraries to pass to the linker.

OCAML_LIB_FLAGS

Extra flags for the library linker.

ABORT_ON_DEPENDENCY_ERRORS

OCaml linker requires the OCaml files to be listed in dependency order. Normally, all the functions presented in this section will automatically sort the list of OCaml modules passed in as the <files> argument. However, this variable is set to true, the order of the files passed into these function will be left as is, but OMake will abort with an error message if the order is illegal.

13.6.5  Generated OCaml Files

As of OCaml version 3.09.2, the standard ocamldep scanner is “broken”. The main issue is that it finds only those dependencies that already exist. If foo.ml contains a dependency on Bar,

foo.ml:
   open Bar

then the default ocamldep will only find the dependency if a file bar.ml or bar.ml exists in the include path. It will not find (or print) the dependency if, for example, only bar.mly exists at the time ocamldep is run, even though bar.ml and bar.mli can be generated from bar.mly.

OMake currently provides two methods for addressing this problem — one that requires manually specifying the generated files, and an experimental method for discovering such “hidden” dependencies automatically. The OCAMLDEP_MODULES_ENABLED variable controls which method is going to be used. When this variable is false, the manual specifications are expected and when it is true, the automated discovery will be attempted.

13.6.5.1  OCamlGeneratedFiles, LocalOCamlGeneratedFiles

OCamlGeneratedFiles(files)
LocalOCamlGeneratedFiles(files)

When the OCAMLDEP_MODULES_ENABLED variable variable is set to false, the OCamlGeneratedFiles and LocalOCamlGeneratedFiles functions specify files that need to be generated before any OCaml files are scanned for dependencies. For example, if parser.ml and lexer.ml are both generated files, specify:

OCamlGeneratedFiles(parser.ml lexer.ml)

The OCamlGeneratedFiles function is global — its arguments will be generated before any OCaml files anywhere in the project are scanned for dependencies. The LocalOCamlGeneratedFiles function follows the normal scoping rules of OMake.

These functions have no effect when the OCAMLDEP_MODULES_ENABLED variable is true.

13.6.5.2  Automatic discovery of generated files during dependency analysis

Having to specify the generated files manualy when OMake could discover them automatically is obviously suboptimal. To address this, we tell ocamldep to only find the free module names in a file and then post-process the results internally.

This automated functionality is enabled when the OCAMLDEP_MODULES_ENABLED variable is set to true. By default, OCAMLDEP_MODULES_ENABLED variable will be set to $(OCAMLDEP_MODULES_AVAILABLE).

Note that the ocamldep functionality this relies upon is only included in the OCaml version 3.10 and higher. Temporarily, we distribute a bytecode version ocamldep-omake of the appropriately modified ocamldep. The appropriate ocamldep will be discovered automatically — see and the OCAMLDEP_MODULES_AVAILABLE and OCAMLDEP_MODULES variables will be set accordingly.

13.6.6  Using the Menhir parser generator

Menhir is a parser generator that is mostly compatible with ocamlyacc, but with many improvements. A few of these are listed here (excerpted from the Menhir home page http://cristal.inria.fr/~fpottier/menhir/).

  • Menhir's explanations are believed to be understandable by mere humans.
  • Menhir allows grammar specifications to be split over multiple files. It also allows several grammars to share a single set of tokens.
  • Menhir is able to produce parsers that are parameterized by Objective Caml modules.
  • Added by jyh With the --infer option, Menhir can typecheck the semantic actions in your grammar at generation time.

What do you need to do to use Menhir instead of ocamlyacc?

  1. Place the following definition before the relevant section of your project (or at the top of your project OMakefile if you want to use Menhir everywhere).
       MENHIR_ENABLED = true
    
  2. Optionally, add any desired Menhir options to the MENHIR_FLAGS variable.
       MENHIR_FLAGS += --infer
    

With this setup, any file with a .mly suffix will be compiled with Menhir.

If your grammar is split across several files, you need to specify it explicitly, using the MenhirMulti function.

    MenhirMulti(target, sources)
        target : filename, without suffix
        sources : the files that define the grammar, without suffixes

For example, if you want to generate the parser files parse.ml and parse.mli, from the grammar specified in files a.mly and b.mly, you would use the following.

    MenhirMulti(parse, a b)

13.6.6.1  OCamlLibrary

The OCamlLibrary function builds an OCaml library.

OCamlLibrary(<libname>, <files>)

The <libname> and <files> are listed without suffixes.

This function returns the list of all the targets that it defines the rules for (including the $(name)$(EXT_LIB) file when NATIVE_ENABLED is set).

The following code builds the libfoo.cmxa library from the files foo.cmx and bar.cmx (if NATIVE_ENABLED is set), and libfoo.cma from foo.cmo and bar.cmo (if BYTE_ENABLED is set).

OCamlLibrary(libfoo, foo bar)

13.6.6.2  OCamlPackage

The OCamlPackage function builds an OCaml package.

OCamlPackage(<name>, <files>)

The <name> and <files> are listed without suffixes. The <files> must have been compiled with the -for-pack <ident> flag to the OCaml compiler.

This function returns the list of all the targets that it defines the rules for (including the $(name)$(EXT_LIB) file when NATIVE_ENABLED is set).

The following code builds the libfoo.cmx package from the files package.cmx and bar.cmx (if NATIVE_ENABLED is set), and package.cmo from foo.cmo and bar.cmo (if BYTE_ENABLED is set).

OCamlPackage(package, foo bar)

13.6.6.3  OCamlLibraryCopy

The OCamlLibraryCopy function copies a library to an install location.

OCamlLibraryCopy(<tag>, <libdir>, <libname>, <interface-files>)

The <interface-files> specify additional interface files to be copied if the INSTALL_INTERFACES variable is true.

13.6.6.4  OCamlLibraryInstall

The OCamlLibraryInstall function builds a library and copies it to an install location in one step.

OCamlLibraryInstall(<tag>, <libdir>, <libname>, <files>)

13.6.6.5  OCamlProgram

The OCamlProgram function builds an OCaml program. It returns the array with all the targets for which it has defined the rules ($(name)$(EXE) and $(name).run and/or $(name).opt, depending on the NATIVE_ENABLED and BYTE_ENABLED variables).

OCamlProgram(<name>, <files>)

Additional variables used:

OCAML_LIBS
Additional libraries passed to the linker, without suffix. These files become dependencies of the target program.
OCAML_OTHER_LIBS
Additional libraries passed to the linker, without suffix. These files do not become dependencies of the target program.
OCAML_CLIBS
C libraries to pass to the linker.
OCAML_BYTE_LINK_FLAGS
Flags to pass to the bytecode linker.
OCAML_NATIVE_LINK_FLAGS
Flags to pass to the native code linker.
OCAML_LINK_FLAGS
Flags to pass to both linkers.

13.6.6.6  OCamlProgramCopy

The OCamlProgramCopy function copies an OCaml program to an install location.

OCamlProgramCopy(<tag>, <bindir>, <name>)

Additional variables used:

NATIVE_ENABLED
If the NATIVE_ENABLED variable is set, the native-code executable is copied; otherwise the byte-code executable is copied.

13.6.6.7  OCamlProgramInstall

The OCamlProgramInstall function builds a programs and copies it to an install location in one step.

OCamlProgramInstall(<tag>, <bindir>, <name>, <files>)

13.7  Building LATEX files

OMake provides support for building LATEX documents, including support for automatically running BiBTex and for producing PostScript and PDF files. In order to use the functions defined in this section, you need to make sure the line

open build/LaTeX

is present in your OMakeroot file.

13.7.1  Configuration variables

The following variables can be modified in your project.

LATEX

The LATEX command (default latex).

TETEX2_ENABLED

Flag indicating whether to use advanced LATEX options present in TeTeX v.2 (default value is determined the first time omake reads LaTeX.src and depends on the version of LATEX you have installed).

LATEXFLAGS

The LATEX flags (defaults depend on the TETEX2_ENABLED variable)

BIBTEX

The BibTeX command (default bibtex).

MAKEINDEX

The command to build an index (default makeindex).

DVIPS

The .dvi to PostScript converter (default dvips).

DVIPSFLAGS

Flags to pass to dvips (default -t letter).

DVIPDFM

The .dvi to .pdf converter (default dvipdfm).

DVIPDFMFLAGS

Flags to pass to dvipdfm (default -p letter).

PDFLATEX

The .latex to .pdf converter (default pdflatex).

PDFLATEXFLAGS

Flags to pass to pdflatex (default is $`(LATEXFLAGS)).

USEPDFLATEX

Flag indicating whether to use pdflatex instead of dvipdfm to generate the .pdf document (default false).

13.7.2  Building LATEX documents

13.7.2.1  LaTeXDocument

The LaTeXDocument produces a LATEX document.

LaTeXDocument(<name>, <texfiles>)

The document <name> and <texfiles> are listed without suffixes. This function returns the filenames for the generated .ps and .pdf files.

Additional variables used:

TEXINPUTS

The LATEX search path (an array of directories, default is taken from the TEXINPUTS environment variable).

TEXDEPS

Additional files this document depends on.

TEXVARS

An array of names of the environment variables that are to be updated based on the value of OMake's TEXINPUTS variable. Defaults to TEXINPUTS BIBINPUTS BSTINPUTS.

13.7.2.2  TeXGeneratedFiles, LocalTeXGeneratedFiles

TeXGeneratedFiles(files)
LocalTeXGeneratedFiles(files)

The TeXGeneratedFiles and LocalTeXGeneratedFiles functions specify files that need to be generated before any LATEXfiles are scanned for dependencies. For example, if config.tex and inputs.tex are both generated files, specify:

    TeXGeneratedFiles(config.tex inputs.tex)

The TeXGeneratedFiles function is global — its arguments will be generated before any TeX files anywhere in the project are scanned for dependencies. The LocalTeXGeneratedFiles function follows the normal scoping rules of OMake.

13.7.2.3  LaTeXDocumentCopy

The LaTeXDocumentCopy copies the document to an install location.

LaTeXDocumentCopy(<tag>, <libdir>, <installname>, <docname>)

This function copies just the .pdf and .ps files.

13.7.2.4  LaTeXDocumentInstall

The LaTeXDocumentInstall builds a document and copies it to an install location in one step.

LaTeXDocumentInstall(<tag>, <libdir>, <installname>, <docname>, <files>)

Chapter 14  Autoconfiguration functions and variables

OMake standard library provides a number of functions and variables intended to help one write build specifications that need to be capable of autoconfiguring itself to adjust to different build environments.

14.1  General-purpose autoconfiguration functions

The following general-purpose functions can be used to discover the properties of your build environment in a fashion similar to the one used by GNU autoconf tool you may be familiar with. It is recommended that these function be used from an appropriate static. block (see Section 4.14 for more information).

In order to use the following general-purpose functions, you need to have the line

open configure/Configure

included in your OMakefile or OMakeroot.

14.1.1  ConfMsgChecking, ConfMsgResult

ConfMsgChecking(<msg>)
...
ConfMsgResult(<msg>)

The ConfMsgChecking function output message of the form --- Checking <msg>... without any trailing newline. After the test advertized by ConfMsgChecking is performed, the ConfMsgResult function should be used to output the result.

In certain cases users may want to redefine these function — for example, to use a different output formatting and/or to copy the messages to a log file.

Example:

static. =
   ConfMsgChecking(which foo to use)
   foo = ...
   ConfMsgResult($(foo))

14.1.2  ConfMsgWarn, ConfMsgError

ConfMsgWarn(<msg>)
ConfMsgError(<msg>)

Print a warning or an error message respectively. ConfMsgError would then abort OMake.

14.1.3  ConfMsgYesNo, ConfMsgFound

flag = $(ConfMsgYesNo <bool expr>
flag = $(ConfMsgFound <bool expr>

The ConfMsgFound function expects to receive a boolean flag describing whether a test previously announced using the ConfMsgChecking function found what it was looking for. ConfMsgFound will output the appropriate result (“found” or “NOT found”) using the ConfMsgResult function and return its argument back.

The ConfMsgYesNo function is similar, outputting a simple (“yes” or “NO”).

14.1.4  TryCompileC, TryLinkC, TryRunC

success = $(TryCompileC <prog_text>)
success = $(TryLinkC <prog_text>)
success = $(TryRunC <prog_text>)

Given the text of a C program, the TryCompileC, TryLinkC, and TryRunC functions would try to compile / compile and link / compile, link, and run, the given program and return a boolean flag indicating whether the attempt was successful.

TryCompileC will use the CC, CFLAGS and INCLUDES variables to run the C compiler. TryLinkC and TryRunC will also use the LDFLAGS variable to run the C compiler and linker. However, the flags like /WX, -Werror and -warn-error will be not be passed to the compiler, even if they occur in CFLAGS.

These functions are silent and should normally be used with an appropriate ConfMsgCheckingConfMsgResult.

14.1.5  RunCProg

output = $(RunCProg <prog>)

RunCProg is similar to the RunCProg function, except that it returns the output of the function (will return false if the program fails to compile or run).

14.1.6  CheckCHeader, VerboseCheckCHeader

success = $(CheckCHeader <files>)
success = $(VerboseCheckCHeader <files>)

Use the TryCompileC function to check whether your C compiler can locate and process the specified headers files. Will incude <stdio.h> before including the header files.

Both functions return a boolean value. The CheckCHeader function is silent; the VerboseCheckCHeader function will use the ConfMsgChecking and ConfMsgResult functions to describe the test and the outcome.

Example:

static. =
   NCURSES_H_AVAILABLE = $(VerboseCheckCHeader ncurses.h)

14.1.7  CheckCLib, VerboseCheckCLib

success = $(CheckCLib <libs>, <functions>)
success = $(VerboseCheckCLib <libs>, <functions>)

Use the TryLinkC function to check whether your C compiler and linker can find the named functions when linking with the named libraries. Will pass the <libs> to the compiler using the -l flag.

Both functions return a boolean value. The CheckCLib function is silent; the VerboseCheckCHeader function will use the ConfMsgChecking and ConfMsgResult functions to describe the test and the outcome.

Example:

static. =
    NCURSES_LIB_AVAILABLE = $(VerboseCheckCLib ncurses, initscr setupterm tigetstr)

14.1.8  CheckProg

success = $(CheckProg <prog>)

Checks whether the program <prog> exists in your path. Will use the ConfMsgChecking and ConfMsgResult functions to describe the test and the outcome.

14.2  Translating autoconf scripts

Some of the functions described above are very similar to the ones present in autoconf. Below is a brief translation table for such functions.

AC_MSG_CHECKING is very similar to ConfMsgChecking function.
AC_MSG_RESULT is very similar to ConfMsgResult function.
AC_MSG_WARN is very similar to ConfMsgWarn function.
AC_MSG_ERROR is very similar to ConfMsgError function.
AC_TRY_COMPILE is somewhat similar to TryCompileC function, except the TryCompileC function returns a boolean value and only works for C. Similarly,
AC_TRY_LINK is approximated by TryLinkC function, and
AC_TRY_RUN is approximated by TryRunC function.

14.3  Predefined configuration tests

A number of configuration tests are already included in the standard library. In order to use them in your project, simply open (see Section 4.7) the corresponding build file in your OMakefile and the tests will run the first time OMake is executed. Note that it is not a problem to open these files from more than one place in your project — if you do that, the test will still run only once.

14.3.1  NCurses library configuration

Add open configure/ncurses line to your OMakefile to get access to the following autoconfiguration variables.

NCURSES_AVAILABLE

A boolean flag that would be set when both the curses.h header, the term.h header, and the ncurses library very found.

NCURSES_TERMH_IN_NCURSES

A boolean flag that would be set when term.h has to be included as <ncurses/term.h> instead of <term.h>.

NCURSES_CFLAGS

The CFLAGS to use when compiling ncurses code. Will include -DNCURSES and -DTERMH_IN_NCURSES, respectively when NCURSES_AVAILABLE and NCURSES_TERMH_IN_NCURSES are true.

NCURSES_CLIBS

The LDFLAGS to use when linking ncurses code. Will normally contain -lncurses when ncurses is found and remain empty otherwise.

14.3.2  ReadLine library configuration

Add open configure/readline line to your OMakefile to get access to the following autoconfiguration variables.

READLINE_AVAILABLE

A boolean flag that would be set when both the readline/readline.h header, the readline/history.h header, and the readline library very found.

READLINE_GNU

A boolean flag that would be set when the GNU version of the readline library is found (as opposed to the BSD one).

READLINE_CFLAGS

The CFLAGS to use when compiling readline code. Will include -DREADLINE_ENABLED and -DREADLINE_GNU, respectively when READLINE_AVAILABLE and READLINE_GNU are true.

READLINE_CLIBS

The LDFLAGS to use when linking readline code. Will normally contain -lncurses -lreadline when readline is found and remain empty otherwise.

14.3.3  Snprintf configuration

Add open configure/snprintf line to your OMakefile to get access to the following autoconfiguration variables.

SNPRINTF_AVAILABLE

A boolean flag telling whether the snprintf function is available in the standard C library.

Chapter 15  The OSH shell

OMake also includes a standalone command-line interpreter osh that can be used as an interactive shell. The shell uses the same syntax, and provides the same features on all platforms omake supports, including Win32.

15.1  Startup

On startup, osh reads the file ~/.oshrc if it exists. The syntax of this file is the same as an OMakefile. The following additional variables are significant.

prompt

The prompt variable specifies the command-line prompt. It can be a simple string.

    prompt = osh>

Or you may choose to define it as a function of no arguments.

    prompt() =
        return $"<$(USER):$(HOST) $(homename $(CWD))>"

An example of the latter prompt is as follows.

    <jyh:kenai.yapper.org ~>cd links/omake
    <jyh:kenai.yapper.org ~/links/omake>

If you include any "invisible" text in the prompt (such as various terminal escape sequences), they must be wrapped using the prompt-invisible function. For example, to create a bold prompt on terminals that support it, you can use the following.

    prompt =
       bold-begin = $(prompt-invisible $(tgetstr bold))
       bold-end = $(prompt-invisible $(tgetstr sgr0))
       value $(bold-begin)$"osh>"$(bold-end)
ignoreeof

If the ignoreeof is true, then osh will not exit on a terminal end-of-file (usually ^D on Unix systems).

15.2  Aliases

Command aliases are defined by adding functions to the Shell. object. The following alias adds the -AF option to the ls command.

    Shell. +=
       ls(argv) =
          "ls" -AF $(argv)

Quoted commands do not undergo alias expansion. The quotation "ls" prevents the alias from being recursive.

15.3  Interactive syntax

The interactive syntax in osh is the same as the syntax of an OMakefile, with one exception in regard to indentation. The line before an indented block must have a colon at the end of the line. A block is terminated with a . on a line by itself, or ^D. In the following example, the first line if true has no body, because there is no colon.

   # The following if has no body
   osh>if true
   # The following if has a body
   osh>if true:
   if>       if true:
   if>          println(Hello world)
   if>          .
   Hello world

Note that osh makes some effort to modify the prompt while in an indented body, and it auto-indents the text.

The colon signifier is also allowed in files, although it is not required.

Appendix A  Synopsis

omake [-j <count>] [-k] [-p] [-P] [-n] [-s] [-S] [-w] [-t] [-u] [-U] [-R] [--verbose] [--project] [--depend] [--progress] [--print-status] [--print-exit] [--print-dependencies] [--show-dependencies <target>] [--all-dependencies] [--verbose-dependencies] [--force-dotomake] [--dotomake <dir>] [--flush-includes] [--configure] [--save-interval <seconds>] [--install] [--install-all] [--install-force] [--version] [--absname] [--output-normal] [--output-postpone] [--output-only-errors] [--output-at-end] filename... [var-definition...]

A.1  General usage

For Boolean options (for example, -s, --progress, etc.) the option can include a prefix --no, which inverts the usual sense of the option. For example, the option --progress means “print a progress bar,” while the option --no--progress means “do not print a progress bar.”

If multiple instances of an option are specified, the final option determines the behavior of OMake. In the following command line, the final --no-S cancels the earlier -S.

    % omake -S --progress --no-S

A.2  Output control

A.2.1  -s

-s

Never not print commands as they are executed (be “silent”).

A.2.2  -S

-S

Do not print commands as they are executed unless they produce output and/or fail. This is the default.

A.2.3  -w

-w

Print directory information in make format as commands are executed. This is mainly useful for editors that expect make-style directory information for determining the location of errors.

A.2.4  –progress

--progress

Print a progress indicator. This option is enabled by default when the OMake's output (stdout) is on a terminal and disabled by default (except on Windows) when the OMake's output is redirected.

A.2.5  –print-status

--print-status

Print status lines (the + and - lines).

A.2.6  –print-exit

--print-exit

Print termination codes when commands complete.

A.2.7  –verbose

--verbose

Make OMake very verbose. This option is equivalent to --no-S --print-status --print-exit VERBOSE=true

A.2.8  –output-normal

--output-normal

As rule commands are executed, relay their output to the OMake output right away. This is enabled by default, unless --output-postpone or --output-only-errors is enabled.

A.2.9  –output-postpone

--output-postpone

When a rule finishes, print the output as a single block. This is useful in combination -j option (see Section A.3.12), where the output of multiple subprocesses can be garbled. The diversion is printed as a single coherent unit.

Note that enabling --output-postpone will by default disable the --output-normal option. This might be problematic if you have a command that decides to ask for interactive input. If the --output-postpone is enabled, but the --output-normal is not, the prompt of such a command will not be visible and it may be hard to figure out why the build appears “stuck”. You might also consider using the --progress flag (see Section A.2.4) so that you can see when the build is active.

A.2.10  –output-only-errors

--output-only-errors

Similar to --output-postpone, except that the postponed output from commands that were successful will be discarded. This can be useful in reducing unwanted output so that you can concentrate on any errors.

A.2.11  –output-at-end

--output-at-end

If any rules/commands fail, re-print the output of the failed commands when OMake finishes the build. This is especially useful when any of the -k, -p, or -P options are enabled.

This option is off by default. However, when -k is enabled — either explicitly or via one of the -p/-P options — --output-at-end will be enabled by default.

A.2.12  -o

-o [01jwWpPxXsS]

For brevity, the -o option is also provided to duplicate the above output options. The -o option takes a argument consisting of a sequence of characters. The characters are read from left-to-right; each specifies a set of output options. In general, an uppercase character turns the option on; a lowercase character turns the option off.

0
Equivalent to -s --output-only-errors --no-progress

This option specifies that omake should be as quiet as possible. If any errors occur during the build, the output is delayed until the build terminates. Output from successful commands is discarded.

1
Equivalent to -S --progress --output-only-errors

This is a slightly more relaxed version of “quiet” output. The output from successful commands is discarded. The output from failed commands is printed immediately after the command complete. The output from failed commands is displayed twice: once immediately after the command completes, and again when the build completes. A progress bar is displayed so that you know when the build is active. Include the `p' option if you want to turn off the progress bar (for example omake -o 1p).

2
Equivalent to --progress --output-postpone

The is even more relaxed, output from successful commands is printed. This is often useful for deinterleaving the output when using -j.

W
Equivalent to -w
w
Equivalent to --no-w
P
Equivalent to --progress
p
Equivalent to --no--progress
X
Equivalent to --print-exit
x
Equivalent to --no-print-exit
S
Equivalent to -S
s
Equivalent to --no-S

A.3  Build options

A.3.1  -k

-k

Do not abort when a build command fails; continue to build as much of the project as possible. This option is implied by both -p and -P options. In turn, this option would imply the --output-at-end option.

A.3.2  -n

-n

This can be used to see what would happen if the project were to be built.

A.3.3  -p

-p

Watch the filesystem for changes, and continue the build until it succeeds. If this option is specified, omake will restart the build whenever source files are modified. Implies -k.

A.3.4  -P

-P

Watch the filesystem for changes forever. If this option is specified, omake will restart the build whenever source files are modified. Implies -k.

A.3.5  -R

-R

Ignore the current directory and build the project from its root directory. When omake is run in a subdirectory of a project and no explicit targets are given on the command line, it would normally only build files within the current directory and its subdirectories (more precisely, it builds all the .DEFAULT targets in the current directory and its subdirectories). If the -R option is specified, the build is performed as if omake were run in the project root.

In other words, with the -R option, all the relative targets specified on the command line will be taken relative to the project root (instead of relative to the current directory). When no targets are given on the command line, all the .DEFAULT targets in the project will be built (regardless of the current directory).

A.3.6  -t

-t

Update the omake database to force the project to be considered up-to-date.

A.3.7  -U

-U

Do not trust cached build information. This will force the entire project to be rebuilt.

A.3.8  –depend

--depend

Do not trust cached dependency information. This will force files to be rescanned for dependency information.

A.3.9  –configure

--configure

Re-run static. sections of the included omake files, instead of trusting the cached results.

A.3.10  –force-dotomake

--force-dotomake

Always use the $HOME/.omake for the .omc cache files.

A.3.11  –dotomake

--dotomake <dir>

Use the specified directory instead of the $HOME/.omake for the placement of the .omc cache files.

A.3.12  -j

-j <count>

Run multiple build commands in parallel. The count specifies a bound on the number of commands to run simultaneously. In addition, the count may specify servers for remote execution of commands in the form server=count. For example, the option -j 2:small.host.org=1:large.host.org=4 would specify that up to 2 jobs can be executed locally, 1 on the server small.host.org and 4 on large.host.org. Each remote server must use the same filesystem location for the project.

Remote execution is currently an experimental feature. Remote filesystems like NFS do not provide adequate file consistency for this to work.

A.3.13  –print-dependencies

--print-dependencies

Print dependency information for the targets on the command line.

A.3.14  –show-dependencies

--show-dependencies <target>

Print dependency information if the target is built.

A.3.15  –all-dependencies

--all-dependencies

If either of the options --print-dependencies or --show-dependencies is in effect, print transitive dependencies. That is, print all dependencies recursively. If neither option --print-dependencies, --show-dependencies is specified, this option has no effect.

A.3.16  –verbose-dependencies

--verbose-dependencies

If either of the options --print-dependencies or --show-dependencies is in effect, also print listings for each dependency. The output is very verbose, consider redirecting to a file. If neither option --print-dependencies, --show-dependencies is specified, this option has no effect.

A.3.17  –install

--install

Install default files OMakefile and OMakeroot into the current directory. You would typically do this to start a project in the current directory.

A.3.18  –install-all

--install-all

In addition to installing files OMakefile and OMakeroot, install default OMakefiles into each subdirectory of the current directory. cvs(1) rules are used for filtering the subdirectory list. For example, OMakefiles are not copied into directories called CVS, RCCS, etc.

A.3.19  –install-force

--install-force

Normally, omake will prompt before it overwrites any existing OMakefile. If this option is given, all files are forcibly overwritten without prompting.

A.3.20  –absname

--absname

Filenames should expand to absolute pathnames.

N.B. This is an experimental option. It may become deprecated.

A.3.21  variable definition

name=[value]

omake variables can also be defined on the command line in the form name=value. For example, the CFLAGS variable might be defined on the command line with the argument CFLAGS="-Wall -g".

A.4  Additional options

In addition, omake supports a number of debugging flags on the command line. Run omake --help to get a summary of these flags.

A.5  Environment variables

A.5.1  OMAKEFLAGS

If defines, the OMAKEFLAGS should specify a set of options exactly as they are specified on the command line.

A.5.2  OMAKELIB

If defined, the OMAKELIB environment variable should refer to the installed location of the OMake standard library. This is the directory that contains Pervasives.om etc. On a Unix system, this is often /usr/lib/omake or /usr/local/lib/omake, and on Win32 systems it is often c:\Program Files\OMake\lib.

If not defined, omake uses the default configured location. You should normally leave this unset.

A.6  Functions

A.6.1  OMakeFlags

The OMakeFlags function can be used within an OMakefile to modify the set of options. The options should be specified exactly as they are on the command line. For example, if you want some specific project to be silent and display a progress bar, you can add the following line to your OMakefile.

    OMakeFlags(-S --progress)

For options where it makes sense, the options are scoped like variables. For example, if you want OMake to be silent for a single rule (instead of for the entire project), you can use scoping the restrict the range of the option.

    section
        # Do not display command output when foo is constructed
        OMakeFlags(-S)

        foo: fee
           echo "This is a generated file" > foo
           cat fee >> foo
           chmod 555 foo

A.7  Option processing

When omake is invoked, the options are processed in the following order.

  1. All options specified by the OMAKEFLAGS environment variable are defined globally.
  2. All options from the command line are defined globally.
  3. Any individual calls the the OMakeFlags function modify the options locally.

A.8  .omakerc

If the $(HOME)/.omakerc exists, it is read before any of the OMakefiles in your project. The .omakerc file is frequently used for user-specific customization. For example, instead of defining the OMAKEFLAGS environment variable, you could add a line to your .omakerc.

    $(HOME)/.omakerc:
        # My private options
        OMakeFlags(-S --progress)

Appendix B  OMake grammar

B.1  OMake lexical conventions

The OMake language is based on the language for GNU/BSD make, where there are few lexical conventions. Strictly speaking, there are no keywords, and few special symbols.

B.1.1  Comments

Comments begin with the # character and continue to the end-of-line. Text within a comment is unrestricted.

Examples.

   # This is a comment
   # This $comment contains a quote " character

B.1.2  Special characters

The following characters are special in some contexts.

   $    (    )    ,    .   =    :    "    '    `    \    #
  • $ is used to denote a variable reference, or function application.
  • Parentheses ), ( are argument deliminters.
  • The command , is an argument separator.
  • The period symbol . is a name separator.
  • The equality symbol = denotes a definition.
  • The colon symbol : is used to denote rules, and (optionally) to indicate that an expression is followed by an indented body.
  • The quotation symbols " and ' delimit character strings.
  • The symbol # is the first character of a constant.
  • The escape symbol \ is special only when followed by another special character. In this case, the special status of the second character is removed, and the sequence denotes the second character. Otherwise, the \ is not special.

    Examples:

    • \$: the $ character (as a normal character).
    • \#: the # character (as a normal character).
    • \\: the \ character (as a normal character).
    • c\:\Windows\moo\#boo: the string c:\Windows\moo#boo.

B.1.3  Identifiers

Identifiers (variable names) are drawn from the ASCII alphanumeric characters as well as _, -, ~, @. Case is significant; the following identifiers are distinct: FOO, Foo, foo. The identifier may begin with any of the valid characters, including digits.

Using egrep notation, the regular expression for identifiers is defined as follows.

    identifier ::= [-@~_A-Za-z0-9]+

The following are legal identifiers.

    Xyz    hello_world    seventy@nine
    79-32  Gnus~Gnats     CFLAGS

The following are not legal identifiers.

    x+y    hello&world

B.1.4  Command identifiers

The following words have special significance when they occur as the first word of a program line. They are not otherwise special.

    case     catch  class    declare    default
    do       else   elseif   export     extends
    finally  if     import   include    match
    open     raise  return   section    switch
    try      value  when     while

B.1.5  Variable references

A variable reference is denoted with the $ special character followed by an identifier. If the identifier name has more than one character, it must be enclosed in parentheses. The parenthesized version is most common. The following are legal variable references.

    $(Xyz)    $(hello_world)   $(seventy@nine)
    $(79-32)  $(Gnus~Gnats)    $(CFLAGS)

Single-character references also include several additional identifiers, including &*<^?][. The following are legal single-character references.

   $@   $&   $*   $<   $^   $+   $?   $[   $]
   $A   $_   $a   $b   $x   $1   $2   $3

Note that a non-parenthesized variable reference is limited to a single character, even if it is followed by additional legal identifier charqcters. Suppose the value of the $x variable is 17. The following examples illustrate evaluation.

    $x           evaluates to    17
    foo$xbar     evaluates to    foo17bar
    foo$(x)bar   evaluates to    foo17bar

The special sequence $$ represents the character literal $. That is, the two-character sequences \$ and $$ are normally equalivalent.

B.1.6  String constants

Literal strings are defined with matching string delimiters. A left string delimiter begins with the dollar-sign $, and a non-zero number of single-quote or double-quote characters. The string is terminated with a matching sequence of quotation symbols. The delimiter quotation may not be mixed; it must contain only single-quote characters, or double-quote characters. The following are legal strings.

    $'Hello world'
    $"""printf("Hello world\n")"""
    $''''
Large "block" of
text # spanning ''multiple'' lines''''

The string delimiters are not included in the string constant. In the single-quote form, the contents of the string are interpreted verbatim–there are no special characters.

The double-quote form permits expression evaluation within the string, denoted with the $ symbol. The following are some examples.

    X = Hello
    Y = $""$X world""             # Hello world
    Z = $'''$X world'''           # $X world
    I = 3
    W = $"6 > $(add $I, 2)"       # 6 > 5

Note that quotation symbols without a leading $ are not treated specially by OMake. The quotation symbols is included in the sequence.

    osh>println('Hello world')
    'Hello world'
    osh>println($'Hello world')
    Hello world
    osh>X = Hello
    - : "Hello" : Sequence
    osh>println('$X world')
    Hello world

B.2  The OMake grammar

OMake programs are constructed from expressions and statements. Generally, an input program consists of a sequence of statements, each of which consists of one or more lines. Indentation is significant–if a statement consists of more than one line, the second and remaining lines (called the body) are usually indented relative to the first line.

B.2.1  Expressions

The following table lists the syntax for expressions.

expr::= 
  (empty)
  – Text (see note)
 |text
 |string-literal
  – Applications
 |dollar <char>
 |dollar ( pathid args )
  – Concatenation
 |expr expr
 
dollar::=$ | $` | $,
pathid::= 
  id
 |pathid . id
 
arg::=expr – excluding special characters )(,)
args::=(empty) | arg, ..., arg

An expression is a sequence composed of text, string-literals, variables references and function applications. Text is any sequence of non-special characters.

B.2.1.1  Inline applications

An application is the application of a function to zero-or-more arguments. Inline applications begin with one of the “dollar” sequences $, $`, or $,. The application itself is specified as a single character (in which case it is a variable reference), or it is a parenthesized list including a function identifier pathid, and zero-or-more comma-separated arguments args. The arguments are themselves a variant of the expressions where the special character )(, are not allowed (though any of these may be made non-special with the \ escape character). The following are some examples of valid expressions.

  • xyz abc

    The text sequence “xyz abc

  • xyz$wabc

    A text sequence containing a reference to the variable w.

  • $(addsuffix .c, $(FILES))

    An application of the function addsuffix, with first argument .c, and second argument $(FILES).

  • $(a.b.c 12)

    This is a method call. The variable a must evaluate to an object with a field b, which must be an object with a method c. This method is called with argument 12.

The additional dollar sequences specify evaluation order, $` (lazy) and $, (eager), as discussed in the section on dollar modifiers (Section B.3).

B.2.2  Statements and programs

The following table lists the syntax of statements and programs.

params::=(empty) | id, ..., id
 
target::=expr – excluding special character :
 
program::=stmt <eol> ... <eol> stmt
 
stmt::= 
  – Special forms
 |command expr optcolon-body
 |command ( args ) optcolon-body
 |catch id ( id ) optcolon-body
 |class id ... id
 
  – Variable definitions
 |pathid {+}= expr
 |pathid {+}= <eol> indented-body
 |pathid[] {+}= expr
 |pathid[] {+}= <eol> indented-exprs
 
  – Functions
 |pathid(args) optcolon-body
 |pathid(params) = <eol> indented-body
 
  – Objects
 |pathid . {+}= <eol> indented-body
 
  – Rules
 |target : target rule-options <eol> indented-body
 |target :: target rule-options <eol> indented-body
 |target : target : target rule-options <eol> indented-body
 |target :: target : target rule-options <eol> indented-body
 
  – Shell commands
 |expr
 
indented-body::=(empty)
 |indented-stmt <eol> ... <eol> indented-stmt
 
indented-exprs::=(empty)
 |indented-expr <eol> ... <eol> indented-expr
 
optcolon-body::=(empty)
 |<eol> indented-body
 |: <eol> indented-body
 
rule-option::=:id: target
rule-options::=(empty)
 |rule-options rule-option

B.2.2.1  Special forms

The special forms include the following.

Conditionals (see the section on conditionals — Section 4.9). The if command should be followed by an expression that represents the condition, and an indented body. The conditional may be followed by elseif and else blocks.

    if expr
        indented-body
    elseif expr
        indented-body
    ...
    else
        indented-body

matching (see the section on matching — Section 4.10). The switch and match commands perform pattern-matching. All cases are optional. Each case may include when clauses that specify additional matching conditions.

    match(expr)
    case expr
       indented-body
    when expr
       indented-body
    ...
    case expr
       indented-body
    default
       indented-body

Exceptions (see also the try function documentation). The try command introduces an exception handler. Each name is the name of a class. All cases, including catch, default, and finally are optional. The catch and default clauses contain optional when clauses.

    try
        indented-body
    catch name1(id1)
        indented-body
    when expr
        indented-body
    ...
    catch nameN(idN)
        indented-body
    default
        indented-body
    finally
        indented-body

The raise command is used to raise an exception.

    raise expr

section (see the section description in Section 4.8). The section command introduces a new scope.

    section
        indented-body

include, open (see also Section 4.7). The include command performs file inclusion. The expression should evaluate to a file name.

The open form is like include, but it performs the inclusion only if the inclusion has not already been performed. The open form is usually used to include library files. [jyh– this behavior will change in subsequent revisions.]

    include expr
    open expr

return (see the description of functions in Section 4.5). The return command terminates execution and returns a value from a function.

    return expr

value (see the description of functions in Section 4.5). The value command is an identity. Syntactically, it is used to coerce a n expression to a statement.

    value expr

export (see the section on scoping — Section 6.3). The export command exports a environment from a nested block. If no arguments are given, the entire environment is exported. Otherwise, the export is limited to the specified identifiers.

    export expr

while (see also the while function description). The while command introduces a while loop.

    while expr
        indented-body

class, extends (see the section on objects — Section 4.11). The class command specifies an identifier for an object. The extends command specifies a parent object.

    class id
    extends expr

B.2.2.2  Variable definitions

See the section on variables (Section 4.1). The simplest variable definition has the following syntax. The = form is a new definition. The += form appends the value to an existing definition.

    id = expr
    id += expr

    osh> X = 1
    - : "1" : Sequence
    osh> X += 7
    - : "1" " " "7" : Sequence

A multi-line form is allowed, where the value is computed by an indented body.

    id {+}=
        indented-body

    osh> X =
             Y = HOME
             println(Y is $Y)
             getenv($Y)
    Y is HOME
    - : "/home/jyh" : Sequence

The name may be qualified qith one of the public, prtected, or private modifiers. Public variables are dynamically scoped. Protected variables are fields in the current object. Private variables are statically scoped.

[jyh: revision 0.9.9 introduces modular namespaces; the meaning of these qualifiers is slightly changed.]

    public.X = $(addsuffix .c, 1 2 3)
    protected.Y = $(getenv HOME)
    private.Z = $"Hello world"

B.2.2.3  Applications and function definitions

See the section on functions (Section 4.5). A function-application statement is specified as a function name, followed a parenthesized list of comma-separated arguments.

    osh> println($"Hello world")

    osh> FILES = 1 2 3
    - : 1 2 3
    osh> addsuffix(.c, $(FILES))
    - : 1.c 2.c 3.c

    # The following forms are equivalent
    osh> value $(println $"Hello world")
    osh> value $(addsuffix .c, $(FILES))
    - : 1.c 2.c 3.c

If the function application has a body, the body is passed (lazily) to the function as its first argument. [jyh: in revision 0.9.8 support is incomplete.] When using osh, the application must be followed by a colon : to indicate that the application has a body.

    # In its 3-argument form, the foreach function takes
    # a body, a variable, and an array.  The body is evaluated
    # for each element of the array, with the variable bound to
    # the element value.
    #
    # The colon is required only for interactive sessions.
    osh> foreach(x, 1 2 3):
            add($x, 1)
    - : 2 3 4

Functions are defined in a similar form, where the parameter list is specified as a comma-separated list of identifiers, and the body of the function is indented.

    osh> f(i, j) =
            add($i, $j)
    - : <fun 2>
    osh> f(3, 7)
    - : 10 : Int

B.2.2.4  Objects

See the section on objects (Section 4.11). Objects are defined as an identifier with a terminal period. The body of the object is indented.

    Obj. =
        class Obj

        X = 1
        Y = $(sub $X, 12)
        new(i, j) =
           X = $i
           Y = $j
           value $(this)
        F() =
           add($X, $Y)
        println($Y)

The body of the object has the usual form of an indented body, but new variable definitions are added to the object, not the global environment. The object definition above defines an object with (at least) the fields X and Y, and methods new and F. The name of the object is defined with the class command as Obj.

The Obj itself has fields X = 1 and Y = -11. The new method has the typical form of a constructor-style method, where the fields of the object are initialized to new values, and the new object returned ($(this) refers to the current object).

The F method returns the sum of the two fields X and Y.

When used in an object definition, the += form adds the new definitions to an existing object.

   pair. =
      x = 1
      y = 2

   pair. +=
      y = $(add $y, 3)
   # pair now has fields (x = 1, and y = 5)

The extends form specifies inheritance. Multiple inheritance is allowed. At evaluation time, the extends directive performs inclusion of the entire parent object.

   pair. =
      x = 1
      y = 2

   depth. =
      z = 3
      zoom(dz) =
         z = $(add $z, $(dz))
         return $(this)

   triple. =
      extends $(pair)
      extends $(depth)

      crazy() =
         zoom($(mul $x, $y))

In this example, the triple object has three fields x, y, and z; and two methods zoom and crazy.

B.2.2.5  Rules

See the chapter on rules (Chapter 8). A rule has the following parts.

  1. A sequence of targets;
  2. one or two colons;
  3. a sequence of dependencies and rule options;
  4. and an indented body.

The targets are the files to be built, and the dependencies are the files it depends on. If two colons are specified, it indicates that there may be multiple rules to build the given targets; otherwise only one rule is allowed.

If the target contains a % character, the rule is called implicit, and is considered whenever a file matching that pattern is to be built. For example, the following rule specifies a default rule for compiling OCaml files.

    %.cmo: %.ml %.mli
       $(OCAMLC) -c $<

This rule would be consulted as a default way of building any file with a .cmo suffix. The dependencies list is also constructed based on the pattern match. For example, if this rule were used to build a file foo.cmo, then the dependency list would be foo.ml foo.mli.

There is also a three-part version of a rule, where the rule specification has three parts.

    targets : patterns : dependencies rule-options
       indented-body

In this case, the patterns must contain a single % character. Three-part rules are also considered implicit. For example, the following defines a default rule for the clean target.

    .PHONY: clean
    
    clean: %:
        rm -f *$(EXT_OBJ) *$(EXT_LIB)

Three-part implicit rules are inherited by the subdirectories in the exact same way as with the usual two-part implicit rules.

There are several special targets, including the following.

  • .PHONY : declare a “phony” target. That is, the target does not correspond to a file.
  • .ORDER : declare a rule for dependency ordering.
  • .INCLUDE : define a rule to generate a file for textual inclusion.
  • .SUBDIRS : specify subdirectories that are part of the project.
  • .SCANNER : define a rule for dependency scanning.

There are several rule options.

  • :optional: dependencies the subsequent dependencies are optional, it is acceptable if they do not exist.
  • :exists: dependencies the subsequent dependencies must exist, but changes to not affect whether this rule is considered out-of-date.
  • :effects: targets the subsequent files are side-effects of the rule. That is, they may be created and/or modified while the rule is executing. Rules with overlapping side-effects are never executed in parallel.
  • :scanner: name the subsequent name is the name of the .SCANNER rule for the target to be built.
  • :value: expr the expr is a “value” dependency. The rule is considered out-of-date whenever the value of the expr changes.

Several variables are defined during rule evaluation.

  • $* : the name of the target with the outermost suffix removed.
  • $> : the name of the target with all suffixes removed.
  • $@ : the name of the target.
  • $^ : the explicit file dependencies, sorted alphabetically, with duplicates removed.
  • $+ : all explicit file dependencies, with order preserved.
  • $< : the first explicit file dependency.
  • $& : the free values of the rule (often used in :value: dependencies).

B.2.2.6  Shell commands

See the chapter on shell commands (Chapter 11).

While it is possible to give a precise specification of shell commands, the informal description is simpler. Any non-empty statement where each prefix is not one of the other statements, is considered to be a shell command. Here are some examples.

    ls                                 -- shell command
    echo Hello world > /dev/null       -- shell command
    echo(Hello world)                  -- function application
    echo(Hello world) > /dev/null      -- syntax error
    echo Hello: world                  -- rule
    X=1 getenv X                       -- variable definition
    env X=1 getenv X                   -- shell command
    if true                            -- special form
    \if true                           -- shell command
    "if" true                          -- shell command

B.3  Dollar modifiers

Inline applications have a function and zero-or-more arguments. Evaluation is normally strict: when an application is evaluated, the function identifier is evaluated to a function, the arguments are then evaluated and the function is called with the evaluated arguments.

The additional “dollar” sequences specify additional control over evaluation. The token $` defines a “lazy” application, where evaluation is delayed until a value is required. The $, sequence performs an “eager” application within a lazy context.

To illustrate, consider the expression $(addsuffix .c, $(FILES)). The addsuffix function appends its first argument to each value in its second argument. The following osh interaction demonstrates the normal bahavior.

osh> FILES[] = a b c
- : <array a b c>
osh> X = $(addsuffix .c, $(FILES))
- : <array ...>
osh> FILES[] = 1 2 3 # redefine FILES
- : <array 1 2 3>
osh> println($"$X")  # force the evaluation and print
a.c b.c c.c

When the lazy operator $` is used instead, evaluation is delayed until it is printed. In the following sample, the value for X has changed to the $(apply ..) form, but otherwise the result is unchanged because it it printed immediately.

osh> FILES[] = a b c
- : <array a b c>
osh> SUF = .c
- : ".c"
osh> X = $`(addsuffix $(SUF), $(FILES))
- : $(apply global.addsuffix ...)
osh> println($"$X")  # force the evaluation and print
a.c b.c c.c

However, consider what happens if we redefine the FILES variable after the definition for X. In the following sample, the result changes because evaluation occurs after the values for FILES has been redefined.

osh> FILES[] = a b c
- : <array a b c>
osh> SUF = .c
- : ".c"
osh> X = $`(addsuffix $(SUF), $(FILES))
- : $(apply global.addsuffix ...)
osh> SUF = .x
osh> FILES[] = 1 2 3
osh> println($"$X")  # force the evaluation and print
1.x 2.x 3.x

In some cases, more explicit control is desired over evaluation. For example, we may wish to evaluate SUF early, but allow for changes to the FILES variable. The $,(SUF) expression forces early evaluation.

osh> FILES[] = a b c
- : <array a b c>
osh> SUF = .c
- : ".c"
osh> X = $`(addsuffix $,(SUF), $(FILES))
- : $(apply global.addsuffix ...)
osh> SUF = .x
osh> FILES[] = 1 2 3
osh> println($"$X")  # force the evaluation and print
1.c 2.c 3.c

Index

Index of variables

Index of functions and special forms

Index of objects

Index of special targets

Index of options

Appendix C  References

C.1  See Also

omake(1) (Chapter 1), osh(1) (Chapter 15), make(1)

C.2  Version

Version: 0.9.8.5 of 7thAugust, 2007.

C.3  License and Copyright

© 2003-2006, Mojave Group, Caltech

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

C.4  Author

Jason Hickey, Aleksey Nogin, et. al.
Caltech 256-80
Pasadena, CA 91125, USA
Email: omake-devel@metaprl.org
WWW: http://www.cs.caltech.edu/~jyh and http://nogin.org/

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

This document was translated from LATEX by HEVEA.
omake-0.9.8.5/doc/html/omake.html0000664000152300015230000001433510632105027014630 0ustar jyhjyh Guide
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 1  Guide

If you are new to OMake, you the omake-quickstart presents a short introduction that describes how to set up a project. The omake-build-examples gives larger examples of build projects, and omake-language-examples presents programming examples.

Quickstart 2
A quickstart guide to using omake.
Build examples 3
Advanced build examples.
The OMake language 4
The omake language, including a description of objects, expressions, and values.
Variables and naming 5
Variables, names, and environments.
Language discussion 6
Further discussion on the language, including scoping, evaluation, and objects.
Language examples 7
Additional language examples.
Build rules 8
Defining and using rules to build programs.
Base builtin functions 9
Functions and variables in the core standard library.
System functions 10
Functions on files, input/output, and system commands.
Shell commands 11
Using the omake shell for command-line interpretation.
The standard objects 12
Pervasives defines the built-in objects.
Standard build definitions 13
The build specifications for programming languages in the OMake standard library.
Standard autoconfiguration functions and variables 14
The utilities provoded by the OMake standard library to simplify programming of autoconfiguration tests.
The interactive command interpreter 15
The osh command-line interpreter.
Appendices
OMake command-line options A
Command-line options for omake.
The OMake language grammar B
A more precise specification of the OMake language.
All the documentation on a single page
All the OMake documentation in a single page.
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/osh.html0000664000152300015230000001343210655737107014341 0ustar jyhjyh The OSH shell
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 15  The OSH shell

OMake also includes a standalone command-line interpreter osh that can be used as an interactive shell. The shell uses the same syntax, and provides the same features on all platforms omake supports, including Win32.

15.1  Startup

On startup, osh reads the file ~/.oshrc if it exists. The syntax of this file is the same as an OMakefile. The following additional variables are significant.

prompt

The prompt variable specifies the command-line prompt. It can be a simple string.

    prompt = osh>

Or you may choose to define it as a function of no arguments.

    prompt() =
        return $"<$(USER):$(HOST) $(homename $(CWD))>"

An example of the latter prompt is as follows.

    <jyh:kenai.yapper.org ~>cd links/omake
    <jyh:kenai.yapper.org ~/links/omake>

If you include any "invisible" text in the prompt (such as various terminal escape sequences), they must be wrapped using the prompt-invisible function. For example, to create a bold prompt on terminals that support it, you can use the following.

    prompt =
       bold-begin = $(prompt-invisible $(tgetstr bold))
       bold-end = $(prompt-invisible $(tgetstr sgr0))
       value $(bold-begin)$"osh>"$(bold-end)
ignoreeof

If the ignoreeof is true, then osh will not exit on a terminal end-of-file (usually ^D on Unix systems).

15.2  Aliases

Command aliases are defined by adding functions to the Shell. object. The following alias adds the -AF option to the ls command.

    Shell. +=
       ls(argv) =
          "ls" -AF $(argv)

Quoted commands do not undergo alias expansion. The quotation "ls" prevents the alias from being recursive.

15.3  Interactive syntax

The interactive syntax in osh is the same as the syntax of an OMakefile, with one exception in regard to indentation. The line before an indented block must have a colon at the end of the line. A block is terminated with a . on a line by itself, or ^D. In the following example, the first line if true has no body, because there is no colon.

   # The following if has no body
   osh>if true
   # The following if has a body
   osh>if true:
   if>       if true:
   if>          println(Hello world)
   if>          .
   Hello world

Note that osh makes some effort to modify the prompt while in an indented body, and it auto-indents the text.

The colon signifier is also allowed in files, although it is not required.

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/changelog.html0000664000152300015230000010105610655737107015477 0ustar jyhjyh The OMake CHANGELOG
OMake Home
Documentation
Download
Publications
Mailing lists
Users and projects
Bugzilla
Browse sources
Changelog summary, verbose

OMake Change Log

Jump to version 0.9.8.5, 0.9.8.4, 0.9.8.3, 0.9.8.1, 0.9.8, 0.9.6.9, 0.9.6.8, 0.9.6.7, 0.9.6.6, 0.9.6.5, 0.9.6, 0.9.4, 0.9.3, 0.9.2.

See also the brief summary change log.

Version 0.9.8.5 (August 7, 2007)

This is a somehat major feature enhancement release
  • Made sure that Ctrl-C would correctly stop OMake on Windows, making it much easier to use -p and -P on Windows.
  • Added export sections.
    • Exports take effect for all sections within their static scope. For example,
         section
            export
            section
               public.X = 1
      
         println($X)  # Prints 1
      
    • In addition, exports augment any existing exports. For example,
         section
            public.X = 1
            public.Y = 2
      
            export X
            section
               X = 3
               Y = 4
            export Y
         # X is 3
         # Y is 2
      
    • Variable definitions also allow exports. For example,
         public.X = 1
         public.f() =
            X = 2
            export
      
         public.Y = $f
         # X is 2
         # Y is 2
      
      Note: this is, of course, not the same as imperative programming, because functions can always choose not to export. In particular, the string "functions" do not export.
         public.X = 1
         export X
         public.f() =
            X = 2
         Y = $"$f"
         # X = 1
         # Y = 2
      
  • Added .STATIC and .MEMO rules - an enhanced, yet lazy (delayed) version of the static. sections.
    • Basic usage:
         .STATIC:
             println(foo)
             X = 1
         Y = $X
      
      The variable X is exported, with a "delayed" value. The rule is only evaluated if the value for $X is needed, but it is lazy. The definition of Y does not force evaluation.
    • .STATIC rules allow dependencies, for example:
         .STATIC: x.input
             X = $(expensive-function x.input)
      
      This is be evaluated if x.input changes and X is forced.
    • .STATIC rules also allow explicitly specifying which variables are exported, for example:
         .STATIC: X: x.input
             Y = 1
             X = $Y
      
      Here, Y is not exported from the section.
    • By default, if a .STATIC rule is evaluated several times (for example, if the .STATIC rule is present inside a body of a function that is called several times), the result is the same set of delayed variables.
    • .STATIC rules can have :key: dependency that specify whether we are getting the same set of delayed variables or not, when re-executing the same .STATIC rule. For example,
          g(x) =
              eprintln($"g($x)")
              add($x, 1)
      
          f(x) =
              .STATIC: :key: $x
                  y = $(g $x)
              value $y
      
          println($(f 1))
          println($(f 2))
          println($(f 1))
      
      will call function g twice - only once for each argument, printing:
          g(1)
          2
          g(2)
          3
          2
    • .STATIC rules have their values are stored in .omakedb, not in .omc, so they are distinct between different projects (while the static. sections in common library files are shared between projects).
    • The .MEMO rules are very similar to the .STATIC, except the .MEMO values are not preserved across runs of OMake. They are, however, preserved for the duration of OMake session.
  • Fields in sub-objects can now be referenced directly using the $(X.Y.Z) form (bug 580). For example,
       X. =
          Y. =
             Z. =
                x = 1
       X.Y.Z.y = 2
       X.Y.Z.f() =
           value $(add $x, $y)
       echo $(X.Y.Z.f)
       # prints "3"
  • Allow functions to take their bodies as array arguments (bug 645). The [...] argument to a function call stands for an array body and ... stands for a normal body argument. For example,
       X =
          file([...])
             a
             b
             c
       - : 
           : Array
    
  • Corrected several cases where the exit shell alias would not do the right thing. For example, pipelines like false || exit 5 will now return the correct exit code.
  • Added a build function, so that builds can be performed from osh scripts (the function may be called only from osh).
  • build/C.om: new functions for building DLLs: DynamicCLibrary, DynamicCLibraryCopy, DynamicCLibraryInstall, DynamicCXXLibrary, DynamicCXXLibraryCXXopy, DynamicCXXLibraryInstall.
  • New built-in functions: sort (AKA Sequence.sort), replace-nth, input-line (AKA InChannel.readln), channel-name (AKA Channel.name), sequence-sub (AKA Sequence.sub).
  • New Shell alias: Shell.pwd
  • The defined, getvar, setvar now allow qualified names (e.g public.x or private.y).
  • Built-in awk will now set the FILENAME and FNR ("line number") variables when evaluating its body.
  • The run-time is now included in - exit messages (e.g. when --print-exit is enabled) - bug 680. Note that this only indicates when OMake have noticed that the command have finished, which may be quite inaccurate in parallel builds (where OMake may be busy setting up parallel jobs and not paying attention).
  • Significant code reorganization in preparation for OMake 0.9.9, should be largely transparent to the end-users

Version 0.9.8.4 (June 4, 2007)

  • Fixed a file descriptor leak
  • Fixed: $(OCAMLDEPFLAGS) should be passed to "ocamldep -modules"
  • Other minor bug fixes

Version 0.9.8.3 (June 1, 2007)

  • The 3-place rules are now considered implicit and will be inherited by subdirectories. This makes it easier to declare default rules for common targets, such as
      clean: %:
         rm -f ...
    
  • Allow .PHONY sections to have a body. A .PHONY declaration with a body would create a default (implicit) rule for the newly created phony target(s).
  • Detect case-insensitive filesystems on Unix-like operating systems (especially common under Mac OS X). This should make it possible to use OCAMLDEP_MODULES_ENABLED=true under Unix-like operating systems with case-insensitive filesystems.
  • Changed the default value for the OCAMLDEP_MODULES_ENABLED to $(OCAMLDEP_MODULES_AVAILABLE). In other words, ocamldep -modules will be used whenever it is available (e.g. under OCaml 3.10 or if the bytecode executable distributed with OMake can be used).
  • A number of performance improvements. In particular, the size of the .omakedb should now be significantly smaller.
  • Documentation improvements

Version 0.9.8.2

The version number 0.9.8.2 was skipped.

Version 0.9.8.1 (March 16, 2007)

  • Additional “autoconfiguration” functionality:
    • New functions in configure/Configure.om, including ConfMsgChecking, ConfMsgResult, ConfMsgYesNo, ConfMsgWarn, ConfMsgError, ConfMsgFound, TryCompileC, TryLinkC, TryRunC, RunCProg.
    • Added configure/X.om with some basic tests for X (experimental, not very well tested).
  • A number of new built-in and standard library functions: join, min, max, Map.keys, Map.values, getpwnam, getpwuid, getpwents, getgrnam, getgrgid, tgetstr, xterm-escape, prompt-invisible
  • Improvements in -p/-P (“poll”) mode:
    • Various errors in OMakefiles will now cause OMake to poll for OMakefile changes after reporting the error, instead of aborting.
    • Will watch “:optional:” and “:exists:” dependencies (but will still ignore “Delete” events for them).
  • In implicit rules, allow the source files to contain more than one instance of the % “wildcard” character.
  • Significant improvements in the command line completion in the interactive osh shell.
  • build/C.om:
    • Added StaticCXXLibrary function;
    • Use /Fo and /Fe flags in place of -o on Windows.
  • build/LaTeX.om: added some support for MikTeX.
  • A number of documentation improvements.
  • A number of other improvements and bugfixes.

Version 0.9.8 (December 11, 2006)

  • The main change in this release is that the OMake values will now be converted into the shell command lines directly (all the previous versions of OMake should first "flatten" the value into a string and then perform sh-like parsing of the resulting string). In particular, this means that:
    • All the special symbols in files and directory values will be preserved.
    • All the spaces inside the array elements will be preserved.
    • All the special symbols in OMake-quoted values ($"..." and $'...') will be preserved.
    • If the first element of the command line is a file value, neither PATH- nor alias-expansion will be performed. Note - there will also be no alias-expansion if the executable value contains quoted parts or starts with a \.
    • The Shell. aliases will now receive the values passed on the shell command line as is, not the string-expanded version. Also, if some of the arguments are the result of a glob-expansion, the alias function will receive the appropriate file values, not the strings.
    • OMake 0.9.8 will not be fully backwards-compatible with the earlier releases.
  • Major redesign of the OMake documentation (using HEVEA).
    • The documentation is significantly expanded, examples added, bugs fixed.
    • There are now a number of indices, including a index of variables, an index of functions, and an overall index.
  • OCaml.om improvements:
    • Implemented a new approach to computing the dependencies in OCaml projects in OMake. In this approach a special version of ocamldep is used to only extract the list of the external modules a file depends on and then OMake is used to map those modules to files in the include path. This eliminates the "standard" deficiency of having to generate all the relevant OCaml source files before ocamldep is called. This feature is considered highly experimental and is disabled by default. Use the OCAMLDEP_MODULES_ENABLED variable to enable.
    • Added support for the Menhir parser-generator (experimental).
  • C.om improvements:
    • Changed the CProgram function to consider LIBS to be the actual library files (_without_ the extension) that need to be linked in.
    • Improved the C scanner rule on Windows.
  • LaTeX.om improvements:
    • BSTINPUTS environment variable joins TEXINPUTS and BIBINPUTS in the list of variables initialized from the OMake's TEXINPUTS variable.
    • The list of such variables is now configurable (TEXVARS variable contains an array of names).
  • More control over the OMake output and verbosity.
    • By default, OMake is now much more silent ("-S --progress" is enabled by default when it outputs to a terminal, and "-S" is enabled in all other cases).
    • Added a --verbose option that would make OMake very verbose, when needed.
    • Added an ability to postpone and/or repeat the rule execution output (so that, for example, only the output of the rules that fail is printed, or the output of the rules that failed is repeated at the end of the omake -k execution). This feature is somewhat experimental and might change in the future versions of OMake.
    • Added the -o option for better control of OMake verbosity.
  • Added three special .PHONY targets: .BUILD_BEGIN, .BUILD_SUCCESS, and .BUILD_FAILURE. .BUILD_BEGIN is built before anything else in your project. One of .BUILD_SUCCESS or .BUILD_FAILURE is built when the build for your project terminates.
    Note:
    • This feature is experimental and is likely to change in the future versions of OMake.
    • If you want to use these targets, you should probably add them to your ~/.omakerc, rather than adding them directly to each of the projects you work on.
  • OMake will now save the .omakedb periodically, preventing the state loss in case the OMake process dies unexpectedly (for example, when Cygwin kills OMake after user presses Ctrl-C). The checkpointing interval may be configured both at compile time and via the command line.
  • The variables such as $< and $@ in rules and % in implicit rules will no longer be expanded to strings; instead they will be passed as Node ("file") values.
  • Much better handling of the exit function, a number of bugs fixed.
  • Implicit rules can no longer have target patterns referring to another directories. See bug #456 for detail.
  • New functions: Shell.ln-or-cp, html-escaped, string-escaped, encode-uri, decode-uri, random, find-targets-in-path.
  • Added an ability to turn a string into an input channel. This allows, for example, to use an OMake variable as an input to built-in awk without having to write it to a temporary file first.
  • New flags added to built-in awk and grep.
  • A large number of other bug fixes and improvements.

Version 0.9.6.9 (April 11, 2006)

  • Standard library improvements:
    • Implemented Erick Tryzelaar's idea of having *Program and *Library functions return the array with all the targets that it have defined the rules for.
    • Improved C++ support:
      • Use g++ (when present) instead of gcc as CXX.
      • Allow .cc and .c++ extensions in addition to .cpp
      • Added CXXProgram and CXXProgramInstall functions.
    • Improved OCaml support:
      • Changed USE_OCAMLFIND to be always false by default.
      • Added OCAMLC_EXISTS variable.
    • Pervasives.om: use the built-in cat by default.
    • Added a PID built-in variable.
  • Bug fixes and improvements:
    • Fixed problems with :value: dependencies in .INCLUDE rules and :squash: dependencies in implicit rules.
    • Added auto-rehashing on relative names in the PATH. In addition, you can define AUTO_REHASH = true if you want to auto-rehash on all directories in the path.
    • Comments in OMakefiles are now parsed more consistently.
    • Significantly improved the performance of the built-in find command.
  • Updated the default (sample) OMakefile.
  • A number of documentation fixes and improvements.

Version 0.9.6.8 (January 23, 2006)

  • Improved the handling of the ".PHONY" nodes, fixing a few bugs where a ".PHONY" node was used in place of a file with the same name.
  • Fixed a bug with PATH-expansion for pipelines being performed too early.
  • Added a remove-project-directories function, which will prevent the directories from being included even if there is a .SUBDIRS command for any of them.
  • OCaml.om: fixed the installation of .mli, .cmi files (which is performed by the OCamlLibraryCopy function when INSTALL_INTERFACES is enabled).
  • A number of documentation fixes and other improvements.

Version 0.9.6.7 (December 28, 2005)

  • Added basic support for C++ (Issue 389)
  • Portability improvements:
    • More portable bootstrapping Makefile
    • When lockf is not supported and we fail to lock the project because of that, print a warning message and keep going (this is fairly safe). We used to go into an infinite loop before.
  • OCaml.om improvements:
    • Added an OCAMLOPT_FOUND variable that can be used to tell whether OCAMLOPT exists.
    • Now by default, NATIVE_ENABLED and BYTE_ENABLED variables will be set to enable the "best available" compilation mode:
      • When OCAMLOPT is fould, the defaults are
        NATIVE_ENABLED=true
        BYTE_ENABLED=false

        as before.
      • Otherwise, the values are swapped.
    • Allow the usage of OCamlLibraryInstall and OCamlLibraryCopy when the destination directory is the same as the source one.
  • Fixed a (somewhat recently introduced) problem with OMake failing to properly restart when the "-p"/"-P" filesystem watch is used and OMake detects that one of the relevant OMake file have changed.
  • Couple of "-w" option improvements.
  • A number of minor documentation fixes.

Version 0.9.6.6 (November 5, 2005)

  • Made sure OMake compiles fine with both OCaml 3.08 and 3.09.
  • A few minor bugfixes and improvements:
    • Avoid giving bogus "These file are targeted separately, but appear as effects of a single rule." warnings (thanks to Florian Hars for reporting the problem).
    • LaTeX rules: do not assume that .aux will always be created (based on a patch by Cristian Tapus).
    • Fixed ocamlfind support (based on a patch by Peter Jolly).

Version 0.9.6.5 (September 14, 2005)

  • Improved support for configure-style scripts in OMake (using the run-once static. sections). OMake installation now includes a small library of useful helpful configure functions and a number of examples (ncurses, readline, fam).
  • LaTeX rules improvements, including support for TeTeX v.3 and better pdflatex support.
  • The which function should now work correctly in Cygwin. Fixed a number of issues related to using ocamlfind under Cygwin and Windows.
  • Fixed a number of bugs related to execution of complex shell pipelines.
  • New built-in functions: get-registry (Windows-only), removeprefix, html-string.
  • Fixed a problem with interactive osh sessions not handling the return operator correctly.
  • Improved handling of implicit :value: dependencies (implicit value dependencies are added for all the “free”variables in section eval). The free variable computation is more precise, and the implicit dependencies are now allowed to contain undefined variables.
  • The include foo directive will now try opening foo.om before trying to open foo. Same is true for the .INCLUDE rules.
  • A number of documentation fixes.
  • Significant changes in the setup for compiling OMake. No more autoconf, bootstapping uses make to build a feature-limited bootstrapping binary and the normal version of OMake is compiled using OMake itself. Makefiles are now generated by OMake.
  • Significant reorganization of the source three. Now the source three has a reasonable directory structure, instead of a single flat directory with all the files.
  • A number of other improvements and bug fixes.

Version 0.9.6 (July 17, 2005)

  • Added "static" sections that are evaluated once. Values defined in static sections are persistent across runs of omake. This is convenient for implementing configure-style tests in omake files.
  • Added :value: dependencies.

    Value dependencies are specified using the :value: option in rules.

              a: b c :value: $(X)
                  ...

    This rule specifies that "a" should be recompiled if the value of $(X) changes (X does not have to be a filename). This is intended to allow greater control over dependencies. In addition, it can be used in place of other kinds of dependencies. For example, the following rule:

              a: b :exists: c
                  commands
    is the same as
              a: b :value: $(target-exists c)
                  commands

    Notes:

    • The values are arbitrary (they are not limited to variables)
    • The values are evaluated at rule expansion time, so variables like $@, $^, etc are legal.

    One other significant difference is that the rule cache now uses a digest of the rule commands text, not the text itself. This has an impact on initial omake speed (I am not sure how significant it is) but the cache is smaller. Also, "section eval" should now be handled correctly.

  • Significantly changed the meaning of the .SCANNER rules. Now the .SCANNER rules are treated much more like normal rules.

    Externally, a .SCANNER rule has the usual rule form:

           .SCANNER: target: dependencies...
              ...scanner commands...

    However, the scanner target is now decoupled from the build target, allowing a scanner result to be used for multiple build targets. For example, ocamldep produces dependencies for .cmo and .cmx files simultaneously. They can share the scanner rule by specifying an explicit :scanner: dependency.

            .SCANNER: scan-ocaml-%.ml: %.ml
                ocamldep $lt;
    
            %.cmo: %.ml :scanner: scan-ocaml-%.ml
                $(OCAMLC) ...
    
            %.cmx %.o: %.ml :scanner: scan-ocaml-%.ml
                $(OCAMLOPT) ...

    The current convention is that scanner targets should be named scan-<language>-<source-file>.

    • If a rule has multiple :scanner: dependencies, the actual dependencies will be the union of the scanner results.
    • The .SCANNER targets use a different namespace than normal targets, so it is valid to have overlapping rules.
                    .SCANNER: foo:
                        echo "foo: boo"
      
                    foo: :scanner: foo
                        ...
    • For backwards compatibility, if a rule has no :scanner: dependencies, then omake will try to find a scanner with the same name as the target. So in the example above, the :scanner: foo is actually unnecessary.
  • Added file locking for the .omakedb and .omc files, so that multiple processes can be run simultaneously.
  • Fixed issues where files were being expanded during the string to array conversion.
  • Better accessibility of the build rules and dependencies from OMake scripts.

    See documentation for the Target object and the "Examining the dependency graph" Section of the OMake Documentation for more information.

  • Improved the latex-related rules.
  • Rule execution now fails when any shell command fails, even those in nested sections.
  • Regular expressions now handle \(...\) arguments correctly. Also, the lexer has better performance, searching is now roughly linear time.
  • Added .SUBDIRS bodies. If you don't want to write an OMakefile for each subdirectory, you can define a .SUBDIRS body that defines the it instead.
            .SUBDIRS: foo boo
                println(Current directory is $(CWD))
                ...normal configuration...
  • Added the vmount function to define a "virtual mount" of one directory over another. This adds a fairly simple way to define multiple versions of a project. Suppose your source files are in a directory src/. Then one easy way to compile a version of the project is the following.
            vmount(-l, src, x86)
            .SUBDIRS: x86

    Files from the src directory are now automatically linked into the x86 directory as needed. If you want to have multiple versions, you can use multiple directories (and multiple vmounts).

  • The Map object is now completely changed.

    The keys are now "simple" values, not just strings. Simple values include integers, floats, strings, arrays of simple values, files, and directories.

    Only the Map class has the map functions defined. If you want to have, say, a File that also includes a Map, create a subclass that extends both File and Map.

    Literal string keys can be written in the form $|key...|. This works both for definitions and uses. The usual modifiers are allowed $,|key| and $`|key|.

          X. =
             extends $(Map)
             $|key 1| = 1
             $|key 2| = $|key 1| boo
             $|key 2| += foo
  • Bugs fixed: 158, 299, 315, 335, 338, 359, 376, 377, 379, 387, 393, 394, 397, 402, 403, 423, 425, 427, 428, 431, 441, 443, 445, 446, 447, 449, 452, 453, 454, 459, 462, 463, 464, 465, 466, 470, 471, 472, 473, 476, 477, 478, 480, 481, 482, 483, 487, 488, 489, 493
  • Numerous other improvements.

OMake 0.9.5

The version number 0.9.5 was skipped.

OMake 0.9.4 (January 4, 2005)

  • Portability improvements. OMake should now compile and work under Windows 2000, Windows NT and FreeBSD. A number of Windows-specific bugs are fixed. A Windows installer is added.
  • OMake now uses the built-in versions of the following commands: cp, mv, mkdir, rm, rmdir, chmod
  • Improvements to the filesystem watch functionality. In particular, the build will now restart if a change to one of the OMakefiles is detected.
  • Added a USE_OCAMLFIND variable that can be used to force or prohibit the usage of ocamlfind in a project (by default USE_OCAMLFIND is set to true iff the ocamlfind executable is found in path).
  • Added a --force-dotomake option to create all .omc and .omo files under $HOME/.omake/cache and a --dotomake option to specify an alternative to $HOME/.omake
  • Added :squash: dependencies (that specify that the dependency must be built, but when the dependency changes, it does not cause the target to be rebuilt).
  • OMake will now read ~/.omakeinit and ~/.omakerc files on startup.
  • Improved the latex-related rules.
  • Documentation improvements.
  • Bugs fixed: 142, 153, 311, 313, 314, 316, 332, 333, 339, 350, 360, 361, 366, 367, 368, 374, 375.

OMake 0.9.3 (October 18, 2004)

  • OMake now supports ocamlfind in its default configuration file (thanks to Bardur Arantsson for the initial patch).
  • OMake should now also work with OCaml 3.07 (in addition to 3.08).
  • A large number of bug fixes, including:
    • OMake should now compile correctly under Cygwin (thanks to Peter Jolly who provided the patch),
    • "double-colon" rules (that allow specifying multiple rules for the same target) should now work correctly,
    • kqueue-based file system monitoring (Mac OS X, FreeBSD) should now work correctly
    • array definitions should now work better.
  • Added a work around for the command line length limitation of lib.exe on Windows
  • Filesystem monitoring functionality now provides a choice whether to continue monitoring once the project is built successfully.

OMake 0.9.2 (September 8, 2004)

  • Bugs fixed:
    • "make install" will no longer create $HOME/.omake as root;
    • the -custom option is now a part of OCAML_BYTE_LINK_FLAGS and can be easily disabled;
    • omake should now allow specifying dependencies for the same file more than once.
  • The OMakeroot.src, OMakeroot.default and OMakefile.default are now under MIT license to allow users to freely borrow from them into their own omake build files. (The rest of OMake is still under GPL).
  • Fixed a number of typos and formatting errors in documentation.
omake-0.9.8.5/doc/html/omake-quickstart.html0000664000152300015230000006024610632105027017022 0ustar jyhjyh OMake quickstart guide
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 2  OMake quickstart guide

2.1  Description

omake is designed for building projects that might have source files in several directories. Projects are normally specified using an OMakefile in each of the project directories, and an OMakeroot file in the root directory of the project. The OMakeroot file specifies general build rules, and the OMakefiles specify the build parameters specific to each of the subdirectories. When omake runs, it walks the configuration tree, evaluating rules from all of the OMakefiles. The project is then built from the entire collection of build rules.

2.1.1  Automatic dependency analysis

Dependency analysis has always been problematic with the make(1) program. omake addresses this by adding the .SCANNER target, which specifies a command to produce dependencies. For example, the following rule

    .SCANNER: %.o: %.c
        $(CC) $(INCLUDE) -MM $<

is the standard way to generate dependencies for .c files. omake will automatically run the scanner when it needs to determine dependencies for a file.

2.1.2  Content-based dependency analysis

Dependency analysis in omake uses MD5 digests to determine whether files have changed. After each run, omake stores the dependency information in a file called .omakedb in the project root directory. When a rule is considered for execution, the command is not executed if the target, dependencies, and command sequence are unchanged since the last run of omake. As an optimization, omake does not recompute the digest for a file that has an unchanged modification time, size, and inode number.

2.2  For users already familiar with make

For users already familiar with the make(1) command, here is a list of differences to keep in mind when using omake.

  • In omake, you are much less likely to define build rules of your own. The system provides many standard functions (like StaticCLibrary and CProgram), described in Chapter 13, to specify these builds more simply.
  • Implicit rules using .SUFFIXES and the .suf1.suf2: are not supported. You should use wildcard patterns instead %.suf2: %.suf1.
  • Scoping is significant: you should define variables and .PHONY targets (see Section 8.10) before they are used.
  • Subdirectories are incorporated into a project using the .SUBDIRS: target (see Section 8.8).

2.3  Building a small C program

To start a new project, the easiest method is to change directories to the project root and use the command omake --install to install default OMakefiles.

    $ cd ~/newproject
    $ omake --install
    *** omake: creating OMakeroot
    *** omake: creating OMakefile
    *** omake: project files OMakefile and OMakeroot have been installed
    *** omake: you should edit these files before continuing

The default OMakefile contains sections for building C and OCaml programs. For now, we'll build a simple C project.

Suppose we have a C file called hello_code.c containing the following code:

    #include <stdio.h>

    int main(int argc, char **argv)
    {
        printf("Hello world\n");
        return 0;
    }

To build the program a program hello from this file, we can use the CProgram function. The OMakefile contains just one line that specifies that the program hello is to be built from the source code in the hello_code.c file (note that file suffixes are not passed to these functions).

    CProgram(hello, hello_code)

Now we can run omake to build the project. Note that the first time we run omake, it both scans the hello_code.c file for dependencies, and compiles it using the cc compiler. The status line printed at the end indicates how many files were scanned, how many were built, and how many MD5 digests were computed.

    $ omake hello
    *** omake: reading OMakefiles
    *** omake: finished reading OMakefiles (0.0 sec)
    - scan . hello_code.o
    + cc -I. -MM hello_code.c
    - build . hello_code.o
    + cc -I. -c -o hello_code.o hello_code.c
    - build . hello
    + cc -o hello hello_code.o
    *** omake: done (0.5 sec, 1/6 scans, 2/6 rules, 5/22 digests)
    $ omake
    *** omake: reading OMakefiles
    *** omake: finished reading OMakefiles (0.1 sec)
    *** omake: done (0.1 sec, 0/4 scans, 0/4 rules, 0/9 digests)

If we want to change the compile options, we can redefine the CC and CFLAGS variables before the CProgram line. In this example, we will use the gcc compiler with the -g option. In addition, we will specify a .DEFAULT target to be built by default. The EXE variable is defined to be .exe on Win32 systems; it is empty otherwise.

    CC = gcc
    CFLAGS += -g
    CProgram(hello, hello_code)
    .DEFAULT: hello$(EXE)

Here is the corresponding run for omake.

    $ omake
    *** omake: reading OMakefiles
    *** omake: finished reading OMakefiles (0.0 sec)
    - scan . hello_code.o
    + gcc -g -I. -MM hello_code.c
    - build . hello_code.o
    + gcc -g -I. -c -o hello_code.o hello_code.c
    - build . hello
    + gcc -g -o hello hello_code.o
    *** omake: done (0.4 sec, 1/7 scans, 2/7 rules, 3/22 digests)

We can, of course, include multiple files in the program. Suppose we write a new file hello_helper.c. We would include this in the project as follows.

    CC = gcc
    CFLAGS += -g
    CProgram(hello, hello_code hello_helper)
    .DEFAULT: hello$(EXE)

2.4  Larger projects

As the project grows it is likely that we will want to build libraries of code. Libraries can be built using the StaticCLibrary function. Here is an example of an OMakefile with two libraries.

    CC = gcc
    CFLAGS += -g

    FOO_FILES = foo_a foo_b
    BAR_FILES = bar_a bar_b bar_c

    StaticCLibrary(libfoo, $(FOO_FILES))
    StaticCLibrary(libbar, $(BAR_FILES))

    # The hello program is linked with both libraries
    LIBS = libfoo libbar
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

2.5  Subdirectories

As the project grows even further, it is a good idea to split it into several directories. Suppose we place the libfoo and libbar into subdirectories.

In each subdirectory, we define an OMakefile for that directory. For example, here is an example OMakefile for the foo subdirectory.

    INCLUDES += .. ../bar

    FOO_FILES = foo_a foo_b
    StaticCLibrary(libfoo, $(FOO_FILES))

Note the the INCLUDES variable is defined to include the other directories in the project.

Now, the next step is to link the subdirectories into the main project. The project OMakefile should be modified to include a .SUBDIRS: target.

    # Project configuration
    CC = gcc
    CFLAGS += -g

    # Subdirectories
    .SUBDIRS: foo bar

    # The libraries are now in subdirectories
    LIBS = foo/libfoo bar/libbar

    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

Note that the variables CC and CFLAGS are defined before the .SUBDIRS target. These variables remain defined in the subdirectories, so that libfoo and libbar use gcc -g.

If the two directories are to be configured differently, we have two choices. The OMakefile in each subdirectory can be modified with its configuration (this is how it would normally be done). Alternatively, we can also place the change in the root OMakefile.

    # Default project configuration
    CC = gcc
    CFLAGS += -g

    # libfoo uses the default configuration
    .SUBDIRS: foo

    # libbar uses the optimizing compiler
    CFLAGS += -O3
    .SUBDIRS: bar

    # Main program
    LIBS = foo/libfoo bar/libbar
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

Note that the way we have specified it, the CFLAGS variable also contains the -O3 option for the CProgram, and hello_code.c and hello_helper.c file will both be compiled with the -O3 option. If we want to make the change truly local to libbar, we can put the bar subdirectory in its own scope using the section form.

    # Default project configuration
    CC = gcc
    CFLAGS += -g

    # libfoo uses the default configuration
    .SUBDIRS: foo

    # libbar uses the optimizing compiler
    section
        CFLAGS += -O3
        .SUBDIRS: bar

    # Main program does not use the optimizing compiler
    LIBS = foo/libfoo bar/libbar
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

Later, suppose we decide to port this project to Win32, and we discover that we need different compiler flags and an additional library.

    # Default project configuration
    if $(equal $(OSTYPE), Win32)
        CC = cl /nologo
        CFLAGS += /DWIN32 /MT
        export
    else
        CC = gcc
        CFLAGS += -g
        export

    # libfoo uses the default configuration
    .SUBDIRS: foo

    # libbar uses the optimizing compiler
    section
        CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3)
        .SUBDIRS: bar

    # Default libraries
    LIBS = foo/libfoo bar/libbar

    # We need libwin32 only on Win32
    if $(equal $(OSTYPE), Win32)
       LIBS += win32/libwin32

       .SUBDIRS: win32
       export

    # Main program does not use the optimizing compiler
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

Note the use of the export directives to export the variable definitions from the if-statements. Variables in omake are scoped—variables in nested blocks (blocks with greater indentation), are not normally defined in outer blocks. The export directive specifies that the variable definitions in the nested blocks should be exported to their parent block.

Finally, for this example, we decide to copy all libraries into a common lib directory. We first define a directory variable, and replace occurrences of the lib string with the variable.

    # The common lib directory
    LIB = $(dir lib)

    # phony target to build just the libraries
    .PHONY: makelibs

    # Default project configuration
    if $(equal $(OSTYPE), Win32)
        CC = cl /nologo
        CFLAGS += /DWIN32 /MT
        export
    else
        CC = gcc
        CFLAGS += -g
        export

    # libfoo uses the default configuration
    .SUBDIRS: foo

    # libbar uses the optimizing compiler
    section
        CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3)
        .SUBDIRS: bar

    # Default libraries
    LIBS = $(LIB)/libfoo $(LIB)/libbar

    # We need libwin32 only on Win32
    if $(equal $(OSTYPE), Win32)
       LIBS += $(LIB)/libwin32

       .SUBDIRS: win32
       export

    # Main program does not use the optimizing compiler
    CProgram(hello, hello_code hello_helper)

    .DEFAULT: hello$(EXE)

In each subdirectory, we modify the OMakefiles in the library directories to install them into the $(LIB) directory. Here is the relevant change to foo/OMakefile.

    INCLUDES += .. ../bar

    FOO_FILES = foo_a foo_b
    StaticCLibraryInstall(makelib, $(LIB), libfoo, $(FOO_FILES))

Directory (and file names) evaluate to relative pathnames. Within the foo directory, the $(LIB) variable evaluates to ../lib.

As another example, instead of defining the INCLUDES variable separately in each subdirectory, we can define it in the toplevel as follows.

    INCLUDES = $(ROOT) $(dir foo bar win32)

In the foo directory, the INCLUDES variable will evaluate to the string .. . ../bar ../win32. In the bar directory, it would be .. ../foo . ../win32. In the root directory it would be . foo bar win32.

2.6  Other things to consider

omake also handles recursive subdirectories. For example, suppose the foo directory itself contains several subdirectories. The foo/OMakefile would then contain its own .SUBDIRS target, and each of its subdirectories would contain its own OMakefile.

2.7  Building OCaml programs

By default, omake is also configured with functions for building OCaml programs. The functions for OCaml program use the OCaml prefix. For example, suppose we reconstruct the previous example in OCaml, and we have a file called hello_code.ml that contains the following code.

   open Printf

   let () = printf "Hello world\n"

An example OMakefile for this simple project would contain the following.

    # Use the byte-code compiler
    BYTE_ENABLED = true
    NATIVE_ENABLED = false
    OCAMLCFLAGS += -g

    # Build the program
    OCamlProgram(hello, hello_code)
    .DEFAULT: hello.run

Next, suppose the we have two library subdirectories: the foo subdirectory is written in C, the bar directory is written in OCaml, and we need to use the standard OCaml Unix module.

    # Default project configuration
    if $(equal $(OSTYPE), Win32)
        CC = cl /nologo
        CFLAGS += /DWIN32 /MT
        export
    else
        CC = gcc
        CFLAGS += -g
        export

    # Use the byte-code compiler
    BYTE_ENABLED = true
    NATIVE_ENABLED = false
    OCAMLCFLAGS += -g

    # library subdirectories
    INCLUDES += $(dir foo bar)
    OCAMLINCLUDES += $(dir foo bar)
    .SUBDIRS: foo bar

    # C libraries
    LIBS = foo/libfoo

    # OCaml libraries
    OCAML_LIBS = bar/libbar

    # Also use the Unix module
    OCAML_OTHER_LIBS = unix

    # The main program
    OCamlProgram(hello, hello_code hello_helper)

    .DEFAULT: hello

The foo/OMakefile would be configured as a C library.

    FOO_FILES = foo_a foo_b
    StaticCLibrary(libfoo, $(FOO_FILES))

The bar/OMakefile would build an ML library.

   BAR_FILES = bar_a bar_b bar_c
   OCamlLibrary(libbar, $(BAR_FILES))

2.8  The OMakefile and OMakeroot files

OMake uses the OMakefile and OMakeroot files for configuring a project. The syntax of these files is the same, but their role is slightly different. For one thing, every project must have exactly one OMakeroot file in the project root directory. This file serves to identify the project root, and it contains code that sets up the project. In contrast, a multi-directory project will often have an OMakefile in each of the project subdirectories, specifying how to build the files in that subdirectory.

Normally, the OMakeroot file is boilerplate. The following listing is a typical example.

    include $(STDLIB)/build/Common
    include $(STDLIB)/build/C
    include $(STDLIB)/build/OCaml
    include $(STDLIB)/build/LaTeX

    # Redefine the command-line variables
    DefineCommandVars(.)

    # The current directory is part of the project
    .SUBDIRS: .

The include lines include the standard configuration files needed for the project. The $(STDLIB) represents the omake library directory. The only required configuration file is Common. The others are optional; for example, the $(STDLIB)/build/OCaml file is needed only when the project contains programs written in OCaml.

The DefineCommandVars function defines any variables specified on the command line (as arguments of the form VAR=<value>). The .SUBDIRS line specifies that the current directory is part of the project (so the OMakefile should be read).

Normally, the OMakeroot file should be small and project-independent. Any project-specific configuration should be placed in the OMakefiles of the project.

2.9  Multiple version support

OMake version 0.9.6 introduced preliminary support for multiple, simultaneous versions of a project. Versioning uses the vmount(dir1, dir2) function, which defines a “virtual mount” of directory dir1 over directory dir2. A “virtual mount” is like a transparent mount in Unix, where the files from dir1 appear in the dir2 namespace, but new files are created in dir2. More precisely, the filename dir2/foo refers to: a) the file dir1/foo if it exists, or b) dir2/foo otherwise.

The vmount function makes it easy to specify multiple versions of a project. Suppose we have a project where the source files are in the directory src/, and we want to compile two versions, one with debugging support and one optimized. We create two directories, debug and opt, and mount the src directory over them.

    section
        CFLAGS += -g
        vmount(-l, src, debug)
        .SUBDIRS: debug

    section
        CFLAGS += -O3
        vmount(-l, src, opt)
        .SUBDIRS: opt

Here, we are using section blocks to define the scope of the vmount—you may not need them in your project.

The -l option is optional. It specifies that files form the src directory should be linked into the target directories (or copied, if the system is Win32). The links are added as files are referenced. If no options are given, then files are not copied or linked, but filenames are translated to refer directly to the src/ files.

Now, when a file is referenced in the debug directory, it is linked from the src directory if it exists. For example, when the file debug/OMakefile is read, the src/OMakefile is linked into the debug/ directory.

The vmount model is fairly transparent. The OMakefiles can be written as if referring to files in the src/ directory—they need not be aware of mounting. However, there are a few points to keep in mind.

2.10  Notes

  • When using the vmount function for versioning, it wise to keep the source files distinct from the compiled versions. For example, suppose the source directory contained a file src/foo.o. When mounted, the foo.o file will be the same in all versions, which is probably not what you want. It is better to keep the src/ directory pristine, containing no compiled code.
  • When using the vmount -l option, files are linked into the version directory only if they are referenced in the project. Functions that examine the filesystem (like $(ls ...)) may produce unexpected results.
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-rules.html0000664000152300015230000011131710646471724015775 0ustar jyhjyh Rules
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 8  Rules

Rules are used by OMake to specify how to build files. At its simplest, a rule has the following form.

    <target>: <dependencies>
        <commands>

The <target> is the name of a file to be built. The <dependencies> are a list of files that are needed before the <target> can be built. The <commands> are a list of indented lines specifying commands to build the target. For example, the following rule specifies how to compile a file hello.c.

    hello.o: hello.c
        $(CC) $(CFLAGS) -c -o hello.o hello.c

This rule states that the hello.o file depends on the hello.c file. If the hello.c file has changed, the command $(CC) $(CFLAGS) -c -o hello.o hello.c is to be executed to update the target file hello.o.

A rule can have an arbitrary number of commands. The individual command lines are executed independently by the command shell. The commands do not have to begin with a tab, but they must be indented from the dependency line.

In addition to normal variables, the following special variables may be used in the body of a rule.

  • $*: the target name, without a suffix.
  • $@: the target name.
  • $^: a list of the sources, in alphabetical order, with duplicates removed.
  • $+: all the sources, in the original order.
  • $<: the first source.

For example, the above hello.c rule may be simplified as follows.

    hello.o: hello.c
        $(CC) $(CFLAGS) -c -o $@ $<

Unlike normal values, the variables in a rule body are expanded lazily, and binding is dynamic. The following function definition illustrates some of the issues.

    CLibrary(name, files) =
        OFILES = $(addsuffix .o, $(files))

        $(name).a: $(OFILES)
            $(AR) cq $@ $(OFILES)

This function defines a rule to build a program called $(name) from a list of .o files. The files in the argument are specified without a suffix, so the first line of the function definition defines a variable OFILES that adds the .o suffix to each of the file names. The next step defines a rule to build a target library $(name).a from the $(OFILES) files. The expression $(AR) is evaluated when the function is called, and the value of the variable AR is taken from the caller's scope (see also the section on Scoping).

8.1  Implicit rules

Rules may also be implicit. That is, the files may be specified by wildcard patterns. The wildcard character is %. For example, the following rule specifies a default rule for building .o files.

    %.o: %.c
        $(CC) $(CFLAGS) -c -o $@ $*.c

This rule is a template for building an arbitrary .o file from a .c file.

By default, implicit rules are only used for the targets in the current directory. However subdirectories included via the .SUBDIRS rules inherit all the implicit rules that are in scope (see also the section on Scoping).

8.2  Bounded implicit rules

Implicit rules may specify the set of files they apply to. The following syntax is used.

    <targets>: <pattern>: <dependencies>
        <commands>

For example, the following rule applies only to the files a.o and b.o.

   a.o b.o: %.o: %.c
        $(CC) $(CFLAGS) -DSPECIAL -c $*.c

8.3  section

Frequently, the commands in a rule body are expressions to be evaluated by the shell. omake also allows expressions to be evaluated by omake itself.

The syntax of these “computed rules” uses the section expression. The following rule uses the omake IO functions to produce the target hello.c.

    hello.c:
        section
            FP = fopen(hello.c, w)
            fprintln($(FP), $""#include <stdio.h> int main() { printf("Hello world\n"); }"")
            close($(FP))

This example uses the quotation $""..."" (see also Section B.1.6) to quote the text being printed. These quotes are not included in the output file. The fopen, fprintln, and close functions perform file IO as discussed in the IO section.

In addition, commands that are function calls, or special expressions, are interpreted correctly. Since the fprintln function can take a file directly, the above rule can be abbreviated as follows.

    hello.c:
       fprintln($@, $""#include <stdio.h> int main() { printf("Hello world\n"); }"")

8.4  section rule

Rules can also be computed using the section rule form, where a rule body is expected instead of an expression. In the following rule, the file a.c is copied onto the hello.c file if it exists, otherwise hello.c is created from the file default.c.

    hello.c:
        section rule
           if $(target-exists a.c)
              hello.c: a.c
                 cat a.c > hello.c
           else
              hello.c: default.c
                 cp default.c hello.c

8.5  Special dependencies

8.5.1  :exists:

In some cases, the contents of a dependency do not matter, only whether the file exists or not. In this case, the :exists: qualifier can be used for the dependency.

    foo.c: a.c :exists: .flag
       if $(test -e .flag)
           $(CP) a.c $@

8.5.2  :effects:

Some commands produce files by side-effect. For example, the latex(1) command produces a .aux file as a side-effect of producing a .dvi file. In this case, the :effects: qualifier can be used to list the side-effect explicitly. omake is careful to avoid simultaneously running programs that have overlapping side-effects.

    paper.dvi: paper.tex :effects: paper.aux
        latex paper

8.5.3  :value:

The :value: dependency is used to specify that the rule execution depends on the value of an expression. For example, the following rule

    a: b c :value: $(X)
        ...

specifies that “a” should be recompiled if the value of $(X) changes (X does not have to be a filename). This is intended to allow greater control over dependencies.

In addition, it can be used instead of other kinds of dependencies. For example, the following rule:

    a: b :exists: c
        commands

is the same as

    a: b :value: $(target-exists c)
        commands

Notes:

  • The values are arbitrary (they are not limited to variables)
  • The values are evaluated at rule expansion time, so expressions containing variables like $@, $^, etc are legal.

8.6  .SCANNER rules

Scanner rules define a way to specify automatic dependency scanning. A .SCANNER rule has the following form.

    .SCANNER: target: dependencies
        commands

The rule is used to compute additional dependencies that might be defined in the source files for the specified target. The result of executing the scanner commands must be a sequence of dependencies in OMake format, printed to the standard output. For example, on GNU systems the gcc -MM foo.c produces dependencies for the file foo.c (based on #include information).

We can use this to specify a scanner for C files that adds the scanned dependencies for the .o file. The following scanner specifies that dependencies for a file, say foo.o can be computed by running gcc -MM foo.c. Furthermore, foo.c is a dependency, so the scanner should be recomputed whenever the foo.c file changes.

    .SCANNER: %.o: %.c
        gcc -MM $<

Let's suppose that the command gcc -MM foo.c prints the following line.

    foo.o: foo.h /usr/include/stdio.h

The result is that the files foo.h and /usr/include/stdio.h are considered to be dependencies of foo.o—that is, foo.o should be rebuilt if either of these files changes.

This works, to an extent. One nice feature is that the scanner will be re-run whenever the foo.c file changes. However, one problem is that dependencies in C are recursive. That is, if the file foo.h is modified, it might include other files, establishing further dependencies. What we need is to re-run the scanner if foo.h changes too.

We can do this with a value dependency. The variable $& is defined as the dependency results from any previous scan. We can add these as dependencies using the digest function, which computes an MD5 digest of the files.

    .SCANNER: %.o: %.c :value: $(digest $&)
        gcc -MM $<

Now, when the file foo.h changes, its digest will also change, and the scanner will be re-run because of the value dependency (since $& will include foo.h).

This still is not quite right. The problem is that the C compiler uses a search-path for include files. There may be several versions of the file foo.h, and the one that is chosen depends on the include path. What we need is to base the dependencies on the search path.

The $(digest-in-path-optional ...) function computes the digest based on a search path, giving us a solution that works.

    .SCANNER: %.o: %.c :value: $(digest-in-path-optional $(INCLUDES), $&)
       gcc -MM $(addprefix -I, $(INCLUDES)) $<

The standard output of the scanner rules will be captured by OMake and is not allowed to contain any content that OMake will not be able to parse as a dependency. The output is allowed to contain dependency specifications for unrelated targets, however such dependencies will be ignored. The scanner rules are allowed to produce arbitrary output on the standard error channel — such output will be handled in the same way as the output of the ordinary rules (in other words, it will be presented to the user, when dictated by the --output-… options enabled).

Additional examples of the .SCANNER rules can be found in Section 3.4.3.

8.6.1  Named scanners, and the :scanner: dependencies

Sometimes it may be useful to specify explicitly which scanner should be used in a rule. For example, we might compile .c files with different options, or (heaven help us) we may be using both gcc and the Microsoft Visual C++ compiler cl. In general, the target of a .SCANNER is not tied to a particular target, and we may name it as we like.

    .SCANNER: scan-gcc-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&)
        gcc -MM $(addprefix -I, $(INCLUDES)) $<

    .SCANNER: scan-cl-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&)
        cl --scan-dependencies-or-something $(addprefix /I, $(INCLUDES)) $<

The next step is to define explicit scanner dependencies. The :scanner: dependency is used for this. In this case, the scanner dependencies are specified explicitly.

    $(GCC_FILES): %.o: %.c :scanner: scan-gcc-%c
        gcc ...

    $(CL_FILES): %.obj: %.c :scanner: scan-cl-%c
        cl ...

Explicit :scanner: scanner specification may also be used to state that a single .SCANNER rule should be used to generate dependencies for more than one target. For example,

    .SCANNER: scan-all-c: $(GCC_FILES) :value: $(digest-in-path-optional $(INCLUDES), $&)
        gcc -MM $(addprefix -I, $(INCLUDES)) $(GCC_FILES)

    $(GCC_FILES): %.o: %.c :scanner: scan-all-c
        ...

The above has the advantage of only running gcc once and a disadvantage that when a single source file changes, all the files will end up being re-scanned.

8.6.2  Notes

In most cases, you won't need to define scanners of your own. The standard installation includes default scanners (both explicitly and implicitly named ones) for C, OCaml, and LATEX files.

The SCANNER_MODE variable controls the usage of implicit scanner dependencies.

The explicit :scanner: dependencies reduce the chances of scanner mis-specifications. In large complicated projects it might be a good idea to set SCANNER_MODE to error and use only the named .SCANNER rules and explicit :scanner: specifications.

8.7  .DEFAULT

The .DEFAULT target specifies a target to be built by default if omake is run without explicit targets. The following rule instructs omake to build the program hello by default

   .DEFAULT: hello

8.8  .SUBDIRS

The .SUBDIRS target is used to specify a set of subdirectories that are part of the project. Each subdirectory should have its own OMakefile, which is evaluated in the context of the current environment.

   .SUBDIRS: src doc tests

This rule specifies that the OMakefiles in each of the src, doc, and tests directories should be read.

In some cases, especially when the OMakefiles are very similar in a large number of subdirectories, it is inconvenient to have a separate OMakefile for each directory. If the .SUBDIRS rule has a body, the body is used instead of the OMakefile.

   .SUBDIRS: src1 src2 src3
      println(Subdirectory $(CWD))
      .DEFAULT: lib.a

In this case, the src1, src2, and src3 files do not need OMakefiles. Furthermore, if one exists, it is ignored. The following includes the file if it exists.

   .SUBDIRS: src1 src2 src3
       if $(file-exists OMakefile)
          include OMakefile
       .DEFAULT: lib.a

8.9  .INCLUDE

The .INCLUDE target is like the include directive, but it specifies a rule to build the file if it does not exist.

   .INCLUDE: config
       echo "CONFIG_READ = true" > config

    echo CONFIG_READ is $(CONFIG_READ)

You may also specify dependencies to an .INCLUDE rule.

   .INCLUDE: config: config.defaults
      cp config.defaults config

A word of caution is in order here. The usual policy is used for determining when the rule is out-of-date. The rule is executed if any of the following hold.

  • the target does not exist,
  • the rule has never been executed before,
  • any of the following have changed since the last time the rule was executed,
    • the target,
    • the dependencies,
    • the commands-text.

In some of the cases, this will mean that the rule is executed even if the target file already exists. If the target is a file that you expect to edit by hand (and therefore you don't want to overwrite it), you should make the rule evaluation conditional on whether the target already exists.

   .INCLUDE: config: config.defaults
       # Don't overwrite my carefully hand-edited file
       if $(not $(file-exists config))
          cp config.defaults config

8.10  .PHONY

A “phony” target is a target that is not a real file, but exists to collect a set of dependencies. Phony targets are specified with the .PHONY rule. In the following example, the install target does not correspond to a file, but it corresponds to some commands that should be run whenever the install target is built (for example, by running omake install).

   .PHONY: install

   install: myprogram.exe
      cp myprogram.exe /usr/bin

8.11  Rule scoping

As we have mentioned before, omake is a scoped language. This provides great flexibility—different parts of the project can define different configurations without interfering with one another (for example, one part of the project might be compiled with CFLAGS=-O3 and another with CFLAGS=-g).

But how is the scope for a target file selected? Suppose we are building a file dir/foo.o. omake uses the following rules to determine the scope.

  • First, if there is an explicit rule for building dir/foo.o (a rule with no wildcards), the context for that rule determines the scope for building the target.
  • Otherwise, the directory dir/ must be part of the project. This normally means that a configuration file dir/OMakefile exists (although, see the .SUBDIRS section for another way to specify the OMakefile). In this case, the scope of the target is the scope at the end of the dir/OMakefile.

To illustrate rule scoping, let's go back to the example of a “Hello world” program with two files. Here is an example OMakefile (the two definitions of CFLAGS are for illustration).

    # The executable is compiled with debugging
    CFLAGS = -g
    hello: hello_code.o hello_lib.o
       $(CC) $(CFLAGS) -o $@ $+

    # Redefine CFLAGS
    CFLAGS += -O3

In this project, the target hello is explicit. The scope of the hello target is the line beginning with hello:, where the value of CFLAGS is -g. The other two targets, hello_code.o and hello_lib.o do not appear as explicit targets, so their scope is at the end of the OMakefile, where the CFLAGS variable is defined to be -g -O3. That is, hello will be linked with CFLAGS=-g and the .o files will be compiled with CFLAGS=-g -O3.

We can change this behavior for any of the targets by specifying them as explicit targets. For example, suppose we wish to compile hello_lib.o with a preprocessor variable LIBRARY.

    # The executable is compiled with debugging
    CFLAGS = -g
    hello: hello_code.o hello_lib.o
       $(CC) $(CFLAGS) -o $@ $+

    # Compile hello_lib.o with CFLAGS = -g -DLIBRARY
    section
        CFLAGS += -DLIBRARY
        hello_lib.o:

    # Redefine CFLAGS
    CFLAGS += -O3

In this case, hello_lib.o is also mentioned as an explicit target, in a scope where CFLAGS=-g -DLIBRARY. Since no rule body is specified, it is compiled using the usual implicit rule for building .o files (in a context where CFLAGS=-g -DLIBRARY).

8.11.1  Scoping of implicit rules

Implicit rules (rules containing wildcard patterns) are not global, they follow the normal scoping convention. This allows different parts of a project to have different sets of implicit rules. If we like, we can modify the example above to provide a new implicit rule for building hello_lib.o.

    # The executable is compiled with debugging
    CFLAGS = -g
    hello: hello_code.o hello_lib.o
       $(CC) $(CFLAGS) -o $@ $+

    # Compile hello_lib.o with CFLAGS = -g -DLIBRARY
    section
        %.o: %.c
            $(CC) $(CFLAGS) -DLIBRARY -c $<
        hello_lib.o:

    # Redefine CFLAGS
    CFLAGS += -O3

In this case, the target hello_lib.o is built in a scope with a new implicit rule for building %.o files. The implicit rule adds the -DLIBRARY option. This implicit rule is defined only for the target hello_lib.o; the target hello_code.o is built as normal.

8.11.2  Scoping of .SCANNER rules

Scanner rules are scoped the same way as normal rules. If the .SCANNER rule is explicit (containing no wildcard patterns), then the scope of the scan target is the same as the the rule. If the .SCANNER rule is implicit, then the environment is taken from the :scanner: dependency.

    # The executable is compiled with debugging
    CFLAGS = -g
    hello: hello_code.o hello_lib.o
       $(CC) $(CFLAGS) -o $@ $+

    # scanner for .c files
    .SCANNER: scan-c-%.c: %.c
       $(CC) $(CFLAGS) -MM $<

    # Compile hello_lib.o with CFLAGS = -g -DLIBRARY
    section
        CFLAGS += -DLIBRARY
        hello_lib.o: hello_lib.c :scanner: scan-c-hello_lib.c
           $(CC) $(CFLAGS) -c $<

    # Compile hello_code.c with CFLAGS = -g -O3
    section
        CFLAGS += -O3
        hello_code.o: hello_code.c :scanner: scan-c-hello_code.c
           $(CC) $(CFLAGS) -c $<

Again, this is for illustration—it is unlikely you would need to write a complicated configuration like this! In this case, the .SCANNER rule specifies that the C-compiler should be called with the -MM flag to compute dependencies. For the target hello_lib.o, the scanner is called with CFLAGS=-g -DLIBRARY, and for hello_code.o it is called with CFLAGS=-g -O3.

8.11.3  Scoping for .PHONY targets

Phony targets (targets that do not correspond to files) are defined with a .PHONY: rule. Phony targets are scoped as usual. The following illustrates a common mistake, where the .PHONY target is declared after it is used.

    # !!This example is broken!!
    all: hello

    hello: hello_code.o hello_lib.o
        $(CC) $(CFLAGS) -o $@ $+

    .PHONY: all

This doesn't work as expected because the .PHONY declaration occurs too late. The proper way to write this example is to place the .PHONY declaration first.

    # Phony targets must be declared before being used
    .PHONY: all

    all: hello

    hello: hello_code.o hello_lib.o
        $(CC) $(CFLAGS) -o $@ $+

Phony targets are passed to subdirectories. As a practical matter, it is wise to declare all .PHONY targets in your root OMakefile, before any .SUBDIRS. This will ensure that 1) they are considered as phony targets in each of the subdirectories, and 2) you can build them from the project root.

    .PHONY: all install clean

    .SUBDIRS: src lib clib

Note that when a .PHONY target is inherited by a subdirectory via a .SUBDIRS, a whole hierarchy of .PHONY targets (that are a part of the global one) is created, as described in Section 8.12.2 below.

8.12  Running OMake from a subdirectory

Running omake foo asks OMake to build the file foo in context of the whole project, even when running from a subdirectory of the project. Therefore, if bar/baz is a regular target (not a .PHONY one), then running omake bar/baz and running (cd bar; omake baz) are usually equivalent.

There are two noteworthy exceptions to the above rule:

  • If the subdirectory is not a part of the project (there is no .SUBDIRS) for it, then OMake will complain if you try to run it in that directory.
  • If a subdirectory contains an OMakeroot of its own, this would designate the subdirectory as a separate project (which is usually a bad idea and is not recommended).

8.12.1  Phony targets in a subdirectory

Suppose you have a .PHONY: clean declared in your root OMakefile and both the root OMakefile and the OMakefile in some of the subdirectories contain clean: rules. In this case

  • Running omake clean in the root directory will execute all the rules (each in the appropriate directory);
  • Running omake clean in the subdirectory will execute just its local one, as well as the ones from the subdirectories of the current directory.

The above equally applies to the built-in .PHONY targets, including .DEFAULT. Namely, if OMake is executed (without argument) in the root directory of a project, all the .DEFAULT targets in the project will be built. On the other hand, when OMake is executed (without argument) in a subdirectory, only the .DEFAULT targets defined in and under that subdirectory will be built.

The following Section explains the underlying semantics that gives rise to the above behavior.

8.12.2  Hierarchy of .PHONY targets

When the the root OMakefile contains a .PHONY: clean directive, it creates:

  • A “global” phony target /.PHONY/clean (note the leading “/”);
  • A “relative” phony target attached to the current directory — .PHONY/clean (note the lack of the leading “/”);
  • A dependency /.PHONY/clean: .PHONY/clean.

All the clean: ... rules in the root OMakefile following this .PHONY: clean declaration would be interpreted as rules for the .PHONY/clean target.

Now when OMake then comes across a .SUBDIRS: foo directive (when it is in scope of the above .PHONY: clean declaration), it does the following:

  • Creates a new .PHONY/foo/clean “relative” phony target;
  • Creates the dependency .PHONY/clean: .PHONY/foo/clean;
  • Processes the body of the .SUBDIRS: foo directive, or reads the foo/OMakefile file, if the body is empty. While doing that, it interprets its instructions relative to the foo directory. In particular, all the clean: ... rules will be taken to apply to .PHONY/foo/clean.

Now when you run omake clean in the root directory of the project, it is interpreted as omake .PHONY/clean (similar to how it happens with the normal targets), so both the rules for .PHONY/clean are executed and the rules for its dependency .PHONY/foo/clean. Running (cd foo; omake clean) is, as for normal targets, equivalent to running omake .PHONY/foo/clean and only those rules that apply to .PHONY/foo/clean will be executed.

8.13  Pathnames in rules

In rules, the targets and dependencies are first translated to file values (as in the file function). They are then translated to strings for the command line. This can cause some unexpected behavior. In the following example, the absname function is the absolute pathname for the file a, but the rule still prints the relative pathname.

    .PHONY: demo
    demo: $(absname a)
        echo $<

    # omake demo
    a

There is arguably a good reason for this. On Win32 systems, the / character is viewed as an “option specifier.” The pathname separator is the \ character. OMake translates the filenames automatically so that things work as expected on both systems.

   demo: a/b
       echo $<

   # omake demo (on a Unix system)
   a/b
   # omake demo (on a Win32 system)
   a\b

Sometimes you may wish that target strings to be passed literally to the commands in the rule. One way to do this is to specify them literally.

    SRC = a/b $(absname c/d)
    demo: $(SRC)
        echo $(SRC)

    # omake demo (on a Win32 system)
    a/b c:\...\c\d

Alternately, you might wish that filenames be automatically expanded to absolute pathnames. For example, this might be useful when parsing the OMake output to look for errors. For this, you can use the --absname option (Section A.3.20). If you call omake with the --absname option, all filenames will be expanded to absolute names.

    # omake --absname demo (on a Unix system)
    /home/.../a/b /home/.../c/d

Alternately, the --absname option is scoped. If you want to use it for only a few rules, you can use the OMakeFlags function to control how it is applied.

   section
      OMakeFlags(--absname)
      demo: a
          echo $<

   # omake demo
   /home/.../a

N.B. The --absname option is currently an experimental feature.

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-grammar.html0000664000152300015230000011403010655737107016264 0ustar jyhjyh OMake grammar
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Appendix B  OMake grammar

B.1  OMake lexical conventions

The OMake language is based on the language for GNU/BSD make, where there are few lexical conventions. Strictly speaking, there are no keywords, and few special symbols.

B.1.1  Comments

Comments begin with the # character and continue to the end-of-line. Text within a comment is unrestricted.

Examples.

   # This is a comment
   # This $comment contains a quote " character

B.1.2  Special characters

The following characters are special in some contexts.

   $    (    )    ,    .   =    :    "    '    `    \    #
  • $ is used to denote a variable reference, or function application.
  • Parentheses ), ( are argument deliminters.
  • The command , is an argument separator.
  • The period symbol . is a name separator.
  • The equality symbol = denotes a definition.
  • The colon symbol : is used to denote rules, and (optionally) to indicate that an expression is followed by an indented body.
  • The quotation symbols " and ' delimit character strings.
  • The symbol # is the first character of a constant.
  • The escape symbol \ is special only when followed by another special character. In this case, the special status of the second character is removed, and the sequence denotes the second character. Otherwise, the \ is not special.

    Examples:

    • \$: the $ character (as a normal character).
    • \#: the # character (as a normal character).
    • \\: the \ character (as a normal character).
    • c\:\Windows\moo\#boo: the string c:\Windows\moo#boo.

B.1.3  Identifiers

Identifiers (variable names) are drawn from the ASCII alphanumeric characters as well as _, -, ~, @. Case is significant; the following identifiers are distinct: FOO, Foo, foo. The identifier may begin with any of the valid characters, including digits.

Using egrep notation, the regular expression for identifiers is defined as follows.

    identifier ::= [-@~_A-Za-z0-9]+

The following are legal identifiers.

    Xyz    hello_world    seventy@nine
    79-32  Gnus~Gnats     CFLAGS

The following are not legal identifiers.

    x+y    hello&world

B.1.4  Command identifiers

The following words have special significance when they occur as the first word of a program line. They are not otherwise special.

    case     catch  class    declare    default
    do       else   elseif   export     extends
    finally  if     import   include    match
    open     raise  return   section    switch
    try      value  when     while

B.1.5  Variable references

A variable reference is denoted with the $ special character followed by an identifier. If the identifier name has more than one character, it must be enclosed in parentheses. The parenthesized version is most common. The following are legal variable references.

    $(Xyz)    $(hello_world)   $(seventy@nine)
    $(79-32)  $(Gnus~Gnats)    $(CFLAGS)

Single-character references also include several additional identifiers, including &*<^?][. The following are legal single-character references.

   $@   $&   $*   $<   $^   $+   $?   $[   $]
   $A   $_   $a   $b   $x   $1   $2   $3

Note that a non-parenthesized variable reference is limited to a single character, even if it is followed by additional legal identifier charqcters. Suppose the value of the $x variable is 17. The following examples illustrate evaluation.

    $x           evaluates to    17
    foo$xbar     evaluates to    foo17bar
    foo$(x)bar   evaluates to    foo17bar

The special sequence $$ represents the character literal $. That is, the two-character sequences \$ and $$ are normally equalivalent.

B.1.6  String constants

Literal strings are defined with matching string delimiters. A left string delimiter begins with the dollar-sign $, and a non-zero number of single-quote or double-quote characters. The string is terminated with a matching sequence of quotation symbols. The delimiter quotation may not be mixed; it must contain only single-quote characters, or double-quote characters. The following are legal strings.

    $'Hello world'
    $"""printf("Hello world\n")"""
    $''''
Large "block" of
text # spanning ''multiple'' lines''''

The string delimiters are not included in the string constant. In the single-quote form, the contents of the string are interpreted verbatim–there are no special characters.

The double-quote form permits expression evaluation within the string, denoted with the $ symbol. The following are some examples.

    X = Hello
    Y = $""$X world""             # Hello world
    Z = $'''$X world'''           # $X world
    I = 3
    W = $"6 > $(add $I, 2)"       # 6 > 5

Note that quotation symbols without a leading $ are not treated specially by OMake. The quotation symbols is included in the sequence.

    osh>println('Hello world')
    'Hello world'
    osh>println($'Hello world')
    Hello world
    osh>X = Hello
    - : "Hello" : Sequence
    osh>println('$X world')
    Hello world

B.2  The OMake grammar

OMake programs are constructed from expressions and statements. Generally, an input program consists of a sequence of statements, each of which consists of one or more lines. Indentation is significant–if a statement consists of more than one line, the second and remaining lines (called the body) are usually indented relative to the first line.

B.2.1  Expressions

The following table lists the syntax for expressions.

expr::= 
  (empty)
  – Text (see note)
 |text
 |string-literal
  – Applications
 |dollar <char>
 |dollar ( pathid args )
  – Concatenation
 |expr expr
 
dollar::=$ | $` | $,
pathid::= 
  id
 |pathid . id
 
arg::=expr – excluding special characters )(,)
args::=(empty) | arg, ..., arg

An expression is a sequence composed of text, string-literals, variables references and function applications. Text is any sequence of non-special characters.

B.2.1.1  Inline applications

An application is the application of a function to zero-or-more arguments. Inline applications begin with one of the “dollar” sequences $, $`, or $,. The application itself is specified as a single character (in which case it is a variable reference), or it is a parenthesized list including a function identifier pathid, and zero-or-more comma-separated arguments args. The arguments are themselves a variant of the expressions where the special character )(, are not allowed (though any of these may be made non-special with the \ escape character). The following are some examples of valid expressions.

  • xyz abc

    The text sequence “xyz abc

  • xyz$wabc

    A text sequence containing a reference to the variable w.

  • $(addsuffix .c, $(FILES))

    An application of the function addsuffix, with first argument .c, and second argument $(FILES).

  • $(a.b.c 12)

    This is a method call. The variable a must evaluate to an object with a field b, which must be an object with a method c. This method is called with argument 12.

The additional dollar sequences specify evaluation order, $` (lazy) and $, (eager), as discussed in the section on dollar modifiers (Section B.3).

B.2.2  Statements and programs

The following table lists the syntax of statements and programs.

params::=(empty) | id, ..., id
 
target::=expr – excluding special character :
 
program::=stmt <eol> ... <eol> stmt
 
stmt::= 
  – Special forms
 |command expr optcolon-body
 |command ( args ) optcolon-body
 |catch id ( id ) optcolon-body
 |class id ... id
 
  – Variable definitions
 |pathid {+}= expr
 |pathid {+}= <eol> indented-body
 |pathid[] {+}= expr
 |pathid[] {+}= <eol> indented-exprs
 
  – Functions
 |pathid(args) optcolon-body
 |pathid(params) = <eol> indented-body
 
  – Objects
 |pathid . {+}= <eol> indented-body
 
  – Rules
 |target : target rule-options <eol> indented-body
 |target :: target rule-options <eol> indented-body
 |target : target : target rule-options <eol> indented-body
 |target :: target : target rule-options <eol> indented-body
 
  – Shell commands
 |expr
 
indented-body::=(empty)
 |indented-stmt <eol> ... <eol> indented-stmt
 
indented-exprs::=(empty)
 |indented-expr <eol> ... <eol> indented-expr
 
optcolon-body::=(empty)
 |<eol> indented-body
 |: <eol> indented-body
 
rule-option::=:id: target
rule-options::=(empty)
 |rule-options rule-option

B.2.2.1  Special forms

The special forms include the following.

Conditionals (see the section on conditionals — Section 4.9). The if command should be followed by an expression that represents the condition, and an indented body. The conditional may be followed by elseif and else blocks.

    if expr
        indented-body
    elseif expr
        indented-body
    ...
    else
        indented-body

matching (see the section on matching — Section 4.10). The switch and match commands perform pattern-matching. All cases are optional. Each case may include when clauses that specify additional matching conditions.

    match(expr)
    case expr
       indented-body
    when expr
       indented-body
    ...
    case expr
       indented-body
    default
       indented-body

Exceptions (see also the try function documentation). The try command introduces an exception handler. Each name is the name of a class. All cases, including catch, default, and finally are optional. The catch and default clauses contain optional when clauses.

    try
        indented-body
    catch name1(id1)
        indented-body
    when expr
        indented-body
    ...
    catch nameN(idN)
        indented-body
    default
        indented-body
    finally
        indented-body

The raise command is used to raise an exception.

    raise expr

section (see the section description in Section 4.8). The section command introduces a new scope.

    section
        indented-body

include, open (see also Section 4.7). The include command performs file inclusion. The expression should evaluate to a file name.

The open form is like include, but it performs the inclusion only if the inclusion has not already been performed. The open form is usually used to include library files. [jyh– this behavior will change in subsequent revisions.]

    include expr
    open expr

return (see the description of functions in Section 4.5). The return command terminates execution and returns a value from a function.

    return expr

value (see the description of functions in Section 4.5). The value command is an identity. Syntactically, it is used to coerce a n expression to a statement.

    value expr

export (see the section on scoping — Section 6.3). The export command exports a environment from a nested block. If no arguments are given, the entire environment is exported. Otherwise, the export is limited to the specified identifiers.

    export expr

while (see also the while function description). The while command introduces a while loop.

    while expr
        indented-body

class, extends (see the section on objects — Section 4.11). The class command specifies an identifier for an object. The extends command specifies a parent object.

    class id
    extends expr

B.2.2.2  Variable definitions

See the section on variables (Section 4.1). The simplest variable definition has the following syntax. The = form is a new definition. The += form appends the value to an existing definition.

    id = expr
    id += expr

    osh> X = 1
    - : "1" : Sequence
    osh> X += 7
    - : "1" " " "7" : Sequence

A multi-line form is allowed, where the value is computed by an indented body.

    id {+}=
        indented-body

    osh> X =
             Y = HOME
             println(Y is $Y)
             getenv($Y)
    Y is HOME
    - : "/home/jyh" : Sequence

The name may be qualified qith one of the public, prtected, or private modifiers. Public variables are dynamically scoped. Protected variables are fields in the current object. Private variables are statically scoped.

[jyh: revision 0.9.9 introduces modular namespaces; the meaning of these qualifiers is slightly changed.]

    public.X = $(addsuffix .c, 1 2 3)
    protected.Y = $(getenv HOME)
    private.Z = $"Hello world"

B.2.2.3  Applications and function definitions

See the section on functions (Section 4.5). A function-application statement is specified as a function name, followed a parenthesized list of comma-separated arguments.

    osh> println($"Hello world")

    osh> FILES = 1 2 3
    - : 1 2 3
    osh> addsuffix(.c, $(FILES))
    - : 1.c 2.c 3.c

    # The following forms are equivalent
    osh> value $(println $"Hello world")
    osh> value $(addsuffix .c, $(FILES))
    - : 1.c 2.c 3.c

If the function application has a body, the body is passed (lazily) to the function as its first argument. [jyh: in revision 0.9.8 support is incomplete.] When using osh, the application must be followed by a colon : to indicate that the application has a body.

    # In its 3-argument form, the foreach function takes
    # a body, a variable, and an array.  The body is evaluated
    # for each element of the array, with the variable bound to
    # the element value.
    #
    # The colon is required only for interactive sessions.
    osh> foreach(x, 1 2 3):
            add($x, 1)
    - : 2 3 4

Functions are defined in a similar form, where the parameter list is specified as a comma-separated list of identifiers, and the body of the function is indented.

    osh> f(i, j) =
            add($i, $j)
    - : <fun 2>
    osh> f(3, 7)
    - : 10 : Int

B.2.2.4  Objects

See the section on objects (Section 4.11). Objects are defined as an identifier with a terminal period. The body of the object is indented.

    Obj. =
        class Obj

        X = 1
        Y = $(sub $X, 12)
        new(i, j) =
           X = $i
           Y = $j
           value $(this)
        F() =
           add($X, $Y)
        println($Y)

The body of the object has the usual form of an indented body, but new variable definitions are added to the object, not the global environment. The object definition above defines an object with (at least) the fields X and Y, and methods new and F. The name of the object is defined with the class command as Obj.

The Obj itself has fields X = 1 and Y = -11. The new method has the typical form of a constructor-style method, where the fields of the object are initialized to new values, and the new object returned ($(this) refers to the current object).

The F method returns the sum of the two fields X and Y.

When used in an object definition, the += form adds the new definitions to an existing object.

   pair. =
      x = 1
      y = 2

   pair. +=
      y = $(add $y, 3)
   # pair now has fields (x = 1, and y = 5)

The extends form specifies inheritance. Multiple inheritance is allowed. At evaluation time, the extends directive performs inclusion of the entire parent object.

   pair. =
      x = 1
      y = 2

   depth. =
      z = 3
      zoom(dz) =
         z = $(add $z, $(dz))
         return $(this)

   triple. =
      extends $(pair)
      extends $(depth)

      crazy() =
         zoom($(mul $x, $y))

In this example, the triple object has three fields x, y, and z; and two methods zoom and crazy.

B.2.2.5  Rules

See the chapter on rules (Chapter 8). A rule has the following parts.

  1. A sequence of targets;
  2. one or two colons;
  3. a sequence of dependencies and rule options;
  4. and an indented body.

The targets are the files to be built, and the dependencies are the files it depends on. If two colons are specified, it indicates that there may be multiple rules to build the given targets; otherwise only one rule is allowed.

If the target contains a % character, the rule is called implicit, and is considered whenever a file matching that pattern is to be built. For example, the following rule specifies a default rule for compiling OCaml files.

    %.cmo: %.ml %.mli
       $(OCAMLC) -c $<

This rule would be consulted as a default way of building any file with a .cmo suffix. The dependencies list is also constructed based on the pattern match. For example, if this rule were used to build a file foo.cmo, then the dependency list would be foo.ml foo.mli.

There is also a three-part version of a rule, where the rule specification has three parts.

    targets : patterns : dependencies rule-options
       indented-body

In this case, the patterns must contain a single % character. Three-part rules are also considered implicit. For example, the following defines a default rule for the clean target.

    .PHONY: clean
    
    clean: %:
        rm -f *$(EXT_OBJ) *$(EXT_LIB)

Three-part implicit rules are inherited by the subdirectories in the exact same way as with the usual two-part implicit rules.

There are several special targets, including the following.

  • .PHONY : declare a “phony” target. That is, the target does not correspond to a file.
  • .ORDER : declare a rule for dependency ordering.
  • .INCLUDE : define a rule to generate a file for textual inclusion.
  • .SUBDIRS : specify subdirectories that are part of the project.
  • .SCANNER : define a rule for dependency scanning.

There are several rule options.

  • :optional: dependencies the subsequent dependencies are optional, it is acceptable if they do not exist.
  • :exists: dependencies the subsequent dependencies must exist, but changes to not affect whether this rule is considered out-of-date.
  • :effects: targets the subsequent files are side-effects of the rule. That is, they may be created and/or modified while the rule is executing. Rules with overlapping side-effects are never executed in parallel.
  • :scanner: name the subsequent name is the name of the .SCANNER rule for the target to be built.
  • :value: expr the expr is a “value” dependency. The rule is considered out-of-date whenever the value of the expr changes.

Several variables are defined during rule evaluation.

  • $* : the name of the target with the outermost suffix removed.
  • $> : the name of the target with all suffixes removed.
  • $@ : the name of the target.
  • $^ : the explicit file dependencies, sorted alphabetically, with duplicates removed.
  • $+ : all explicit file dependencies, with order preserved.
  • $< : the first explicit file dependency.
  • $& : the free values of the rule (often used in :value: dependencies).

B.2.2.6  Shell commands

See the chapter on shell commands (Chapter 11).

While it is possible to give a precise specification of shell commands, the informal description is simpler. Any non-empty statement where each prefix is not one of the other statements, is considered to be a shell command. Here are some examples.

    ls                                 -- shell command
    echo Hello world > /dev/null       -- shell command
    echo(Hello world)                  -- function application
    echo(Hello world) > /dev/null      -- syntax error
    echo Hello: world                  -- rule
    X=1 getenv X                       -- variable definition
    env X=1 getenv X                   -- shell command
    if true                            -- special form
    \if true                           -- shell command
    "if" true                          -- shell command

B.3  Dollar modifiers

Inline applications have a function and zero-or-more arguments. Evaluation is normally strict: when an application is evaluated, the function identifier is evaluated to a function, the arguments are then evaluated and the function is called with the evaluated arguments.

The additional “dollar” sequences specify additional control over evaluation. The token $` defines a “lazy” application, where evaluation is delayed until a value is required. The $, sequence performs an “eager” application within a lazy context.

To illustrate, consider the expression $(addsuffix .c, $(FILES)). The addsuffix function appends its first argument to each value in its second argument. The following osh interaction demonstrates the normal bahavior.

osh> FILES[] = a b c
- : <array a b c>
osh> X = $(addsuffix .c, $(FILES))
- : <array ...>
osh> FILES[] = 1 2 3 # redefine FILES
- : <array 1 2 3>
osh> println($"$X")  # force the evaluation and print
a.c b.c c.c

When the lazy operator $` is used instead, evaluation is delayed until it is printed. In the following sample, the value for X has changed to the $(apply ..) form, but otherwise the result is unchanged because it it printed immediately.

osh> FILES[] = a b c
- : <array a b c>
osh> SUF = .c
- : ".c"
osh> X = $`(addsuffix $(SUF), $(FILES))
- : $(apply global.addsuffix ...)
osh> println($"$X")  # force the evaluation and print
a.c b.c c.c

However, consider what happens if we redefine the FILES variable after the definition for X. In the following sample, the result changes because evaluation occurs after the values for FILES has been redefined.

osh> FILES[] = a b c
- : <array a b c>
osh> SUF = .c
- : ".c"
osh> X = $`(addsuffix $(SUF), $(FILES))
- : $(apply global.addsuffix ...)
osh> SUF = .x
osh> FILES[] = 1 2 3
osh> println($"$X")  # force the evaluation and print
1.x 2.x 3.x

In some cases, more explicit control is desired over evaluation. For example, we may wish to evaluate SUF early, but allow for changes to the FILES variable. The $,(SUF) expression forces early evaluation.

osh> FILES[] = a b c
- : <array a b c>
osh> SUF = .c
- : ".c"
osh> X = $`(addsuffix $,(SUF), $(FILES))
- : $(apply global.addsuffix ...)
osh> SUF = .x
osh> FILES[] = 1 2 3
osh> println($"$X")  # force the evaluation and print
1.c 2.c 3.c
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake_users.html0000664000152300015230000001265610607016633016063 0ustar jyhjyh The OMake build system: users and projects
OMake Home
Documentation
Download
Publications
Mailing lists
Users and projects
Bugzilla
Browse sources
Changelog summary, verbose

OMake Users and Projects (partial list)

The following companies, groups and projects that are known to use OMake. We have just started collecting the information about OMake users; the list is likely to contain only a small portion of all the OMake users and projects.

To update the information in this list, contact the OMake mailing list or Aleksey Nogin.

The above KLoc (thousands of lines of code) estimates are computed using David A. Wheeler's 'SLOCCount' utility. omake-0.9.8.5/doc/html/next_motif.gif0000664000152300015230000000047510524166566015530 0ustar jyhjyhGIF89añp€ÿÿp€!þ# Imported from XPM image: next.xpm!ù,@çÜ63333ÆB! Ã0 A0 Ã0 Ã0  0 ƒÁ`0 ƒÁ`0 ƒA @ ƒÁ`0 ƒÁ`00000000000000000000000000000000000000000000  000000 0000000000000000000000000000`À€ ;omake-0.9.8.5/doc/html/omake-language.html0000664000152300015230000010635110655737107016430 0ustar jyhjyh OMake concepts and syntax
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 4  OMake concepts and syntax

Projects are specified to omake with OMakefiles. The OMakefile has a format similar to a Makefile. An OMakefile has three main kinds of syntactic objects: variable definitions, function definitions, and rule definitions.

4.1  Variables

Variables are defined with the following syntax. The name is any sequence of alphanumeric characters, underscore _, and hyphen -.

   <name> = <value>

Values are defined as a sequence of literal characters and variable expansions. A variable expansion has the form $(<name>), which represents the value of the <name> variable in the current environment. Some examples are shown below.

   CC = gcc
   CFLAGS = -Wall -g
   COMMAND = $(CC) $(CFLAGS) -O2

In this example, the value of the COMMAND variable is the string gcc -Wall -g -O2.

Unlike make(1), variable expansion is eager and pure (see also the section on Scoping). That is, variable values are expanded immediately and new variable definitions do not affect old ones. For example, suppose we extend the previous example with following variable definitions.

   X = $(COMMAND)
   COMMAND = $(COMMAND) -O3
   Y = $(COMMAND)

In this example, the value of the X variable is the string gcc -Wall -g -O2 as before, and the value of the Y variable is gcc -Wall -g -O2 -O3.

4.2  Adding to a variable definition

Variables definitions may also use the += operator, which adds the new text to an existing definition. The following two definitions are equivalent.

   # Add options to the CFLAGS variable
   CFLAGS = $(CFLAGS) -Wall -g

   # The following definition is equivalent
   CFLAGS += -Wall -g

4.3  Arrays

Arrays can be defined by appending the [] sequence to the variable name and defining initial values for the elements as separate lines. Whitespace is significant on each line. The following code sequence prints c d e.

    X[] =
        a b
        c d e
        f

    println($(nth 2, $(X)))

4.4  Special characters and quoting

The following characters are special to omake: $():,=#\. To treat any of these characters as normal text, they should be escaped with the backslash character \.

    DOLLAR = \$

Newlines may also be escaped with a backslash to concatenate several lines.

    FILES = a.c\
            b.c\
            c.c

Note that the backslash is not an escape for any other character, so the following works as expected (that is, it preserves the backslashes in the string).

    DOSTARGET = C:\WINDOWS\control.ini

An alternative mechanism for quoting special text is the use $"..." escapes. The number of double-quotations is arbitrary. The outermost quotations are not included in the text.

    A = $""String containing "quoted text" ""
    B = $"""Multi-line
        text.
        The # character is not special"""

4.5  Function definitions

Functions are defined using the following syntax.

   <name>(<params>) =
      <indented-body>

The parameters are a comma-separated list of identifiers, and the body must be placed on a separate set of lines that are indented from the function definition itself. For example, the following text defines a function that concatenates its arguments, separating them with a colon.

    ColonFun(a, b) =
        return($(a):$(b))

The return expression can be used to return a value from the function. A return statement is not required; if it is omitted, the returned value is the value of the last expression in the body to be evaluated. NOTE: as of version 0.9.6, return is a control operation, causing the function to immediately return. In the following example, when the argument a is true, the function f immediately returns the value 1 without evaluating the print statement.

    f(a) =
       if $(a)
          return 1
       println(The argument is false)
       return 0

In many cases, you may wish to return a value from a section or code block without returning from the function. In this case, you would use the value operator. In fact, the value operator is not limited to functions, it can be used any place where a value is required. In the following definition, the variable X is defined as 1 or 2, depending on the value of a, then result is printed, and returned from the function.

    f_value(a) =
       X =
          if $(a)
             value 1
          else
             value 2
       println(The value of X is $(X))
       value $(X)

Functions are called using the GNU-make syntax, $(<name> <args)), where <args> is a comma-separated list of values. For example, in the following program, the variable X contains the value foo:bar.

   X = $(ColonFun foo, bar)

If the value of a function is not needed, the function may also be called using standard function call notation. For example, the following program prints the string “She says: Hello world”.

    Printer(name) =
        println($(name) says: Hello world)

    Printer(She)

4.6  Comments

Comments begin with the # character and continue to the end of the line.

4.7  File inclusion

Files may be included with the include or open form. The included file must use the same syntax as an OMakefile.

    include $(Config_file)

The open operation is similar to an include, but the file is included at most once.

    open Config

    # Repeated opens are ignored, so this
    # line has no effect.
    open Config

If the file specified is not an absolute filenmame, both include and open operations search for the file based on the OMAKEPATH variable. In case of the open directive, the search is performed at parse time, and the argument to open may not contain any expressions.

4.8  Scoping, sections

Scopes in omake are defined by indentation level. When indentation is increased, such as in the body of a function, a new scope is introduced.

The section form can also be used to define a new scope. For example, the following code prints the line X = 2, followed by the line X = 1.

    X = 1
    section
        X = 2
        println(X = $(X))

    println(X = $(X))

This result may seem surprising–the variable definition within the section is not visible outside the scope of the section.

The export form, which will be described in detail in Section 6.3, can be used to circumvent this restriction by exporting variable values from an inner scope. For example, if we modify the previous example by adding an export expression, the new value for the X variable is retained, and the code prints the line X = 2 twice.

    X = 1
    section
        X = 2
        println(X = $(X))
        export

    println(X = $(X))

There are also cases where separate scoping is quite important. For example, each OMakefile is evaluated in its own scope. Since each part of a project may have its own configuration, it is important that variable definitions in one OMakefile do not affect the definitions in another.

To give another example, in some cases it is convenient to specify a separate set of variables for different build targets. A frequent idiom in this case is to use the section command to define a separate scope.

   section
      CFLAGS += -g
      %.c: %.y
          $(YACC) $<
      .SUBDIRS: foo

   .SUBDIRS: bar baz

In this example, the -g option is added to the CFLAGS variable by the foo subdirectory, but not by the bar and baz directories. The implicit rules are scoped as well and in this example, the newly added yacc rule will be inherited by the foo subdirectory, but not by the bar and baz ones; furthermore this implicit rule will not be in scope in the current directory.

4.9  Conditionals

Top level conditionals have the following form.

    if <test>
       <true-clause>
    elseif <text>
       <elseif-clause>
    else
       <else-clause>

The <test> expression is evaluated, and if it evaluates to a true value (see Section 9.2 for more information on logical values, and Boolean functions), the code for the <true-clause> is evaluated; otherwise the remaining clauses are evaluated. There may be multiple elseif clauses; both the elseif and else clauses are optional. Note that the clauses are indented, so they introduce new scopes.

When viewed as a predicate, a value corresponds to the Boolean false, if its string representation is the empty string, or one of the strings false, no, nil, undefined, or 0. All other values are true.

The following example illustrates a typical use of a conditional. The OSTYPE variable is the current machine architecture.

    # Common suffixes for files
    if $(equal $(OSTYPE), Win32)
       EXT_LIB = .lib
       EXT_OBJ = .obj
       EXT_ASM = .asm
       EXE = .exe
       export
    elseif $(mem $(OSTYPE), Unix Cygwin)
       EXT_LIB = .a
       EXT_OBJ = .o
       EXT_ASM = .s
       EXE =
       export
    else
       # Abort on other architectures
       eprintln(OS type $(OSTYPE) is not recognized)
       exit(1)

4.10  Matching

Pattern matching is performed with the switch and match forms.

    switch <string>
    case <pattern1>
        <clause1>
    case <pattern2>
        <clause2>
    ...
    default
       <default-clause>

The number of cases is arbitrary. The default clause is optional; however, if it is used it should be the last clause in the pattern match.

For switch, the string is compared with the patterns literally.

    switch $(HOST)
    case mymachine
        println(Building on mymachine)
    default
        println(Building on some other machine)

Patterns need not be constant strings. The following function tests for a literal match against pattern1, and a match against pattern2 with ## delimiters.

   Switch2(s, pattern1, pattern2) =
      switch $(s)
      case $(pattern1)
          println(Pattern1)
      case $"##$(pattern2)##"
          println(Pattern2)
      default
          println(Neither pattern matched)

For match the patterns are egrep(1)-style regular expressions. The numeric variables $1, $2, ... can be used to retrieve values that are matched by \(...\) expressions.

    match $(NODENAME)@$(SYSNAME)@$(RELEASE)
    case $"mymachine.*@\(.*\)@\(.*\)"
        println(Compiling on mymachine; sysname $1 and release $2 are ignored)

    case $".*@Linux@.*2\.4\.\(.*\)"
        println(Compiling on a Linux 2.4 system; subrelease is $1)

    default
        eprintln(Machine configuration not implemented)
        exit(1)

4.11  Objects

OMake is an object-oriented language. Generally speaking, an object is a value that contains fields and methods. An object is defined with a . suffix for a variable. For example, the following object might be used to specify a point (1, 5) on the two-dimensional plane.

    Coord. =
        x = 1
        y = 5
        print(message) =
           println($"$(message): the point is ($(x), $(y)")

    # Define X to be 5
    X = $(Coord.x)

    # This prints the string, "Hi: the point is (1, 5)"
    Coord.print(Hi)

The fields x and y represent the coordinates of the point. The method print prints out the position of the point.

4.12  Classes

We can also define classes. For example, suppose we wish to define a generic Point class with some methods to create, move, and print a point. A class is really just an object with a name, defined with the class directive.

    Point. =
        class Point

        # Default values for the fields
        x = 0
        y = 0

        # Create a new point from the coordinates
        new(x, y) =
           this.x = $(x)
           this.y = $(y)
           return $(this)

        # Move the point to the right
        move-right() =
           x = $(add $(x), 1)
           return $(this)

        # Print the point
        print() =
           println($"The point is ($(x), $(y)")

    p1 = $(Point.new 1, 5)
    p2 = $(p1.move-right)

    # Prints "The point is (1, 5)"
    p1.print()

    # Prints "The point is (2, 5)"
    p2.print()

Note that the variable $(this) is used to refer to the current object. Also, classes and objects are functional—the new and move-right methods return new objects. In this example, the object p2 is a different object from p1, which retains the original (1, 5) coordinates.

4.13  Inheritance

Classes and objects support inheritance (including multiple inheritance) with the extends directive. The following definition of Point3D defines a point with x, y, and z fields. The new object inherits all of the methods and fields of the parent classes/objects.

    Z. =
       z = 0

    Point3D. =
       extends $(Point)
       extends $(Z)
       class Point3D

       print() =
          println($"The 3D point is ($(x), $(y), $(z))")

    # The "new" method was not redefined, so this
    # defines a new point (1, 5, 0).
    p = $(Point3D.new 1, 5)

4.14  static.

The static. object is used to specify values that are persistent across runs of OMake. They are frequently used for configuring a project. Configuring a project can be expensive, so the static. object ensure that the configuration is performed just once. In the following (somewhat trivial) example, a static section is used to determine if the LATEX command is available. The $(where latex) function returns the full pathname for latex, or false if the command is not found.

   static. =
      LATEX_ENABLED = false
      print(--- Determining if LaTeX is installed )
      if $(where latex)
          LATEX_ENABLED = true
          export

      if $(LATEX_ENABLED)
         println($'(enabled)')
      else
         println($'(disabled)')

The OMake standard library provides a number of useful functions for programming the static. tests, as described in Chapter 14. Using the standard library, the above can be rewritten as

   open configure/Configure
   static. =
      LATEX_ENABLED = $(CheckProg latex)

As a matter of style, a static. section that is used for configuration should print what it is doing using the ConfMsgChecking and ConfMsgResult functions (of course, most of helper functions in the standard library would do that automatically).

4.14.1  .STATIC

This feature was introduced in version 0.9.8.5.

There is also a rule form of static section. The syntax can be any of the following three forms.

    # Export all variables defined by the body
    .STATIC:
        <body>

    # Specify file-dependencies
    .STATIC: <dependencies>
        <body>

    # Specify which variables to export, as well as file dependencies
    .STATIC: <vars>: <dependencies>
        <body>

The <vars> are the variable names to be defined, the <dependencies> are file dependencies—the rule is re-evaluated if one of the dependencies is changed. The <vars> and <dependencies> can be omitted; if so, all variables defined in the <body> are exported.

For example, the final example of the previous section can also be implemented as follows.

    open configure/Configure
    .STATIC:
        LATEX_ENABLED = $(CheckProg latex)

The effect is much the same as using static. (instead of .STATIC). However, in most cases .STATIC is preferred, for two reasons.

First, a .STATIC section is lazy, meaning that it is not evaluated until one of its variables is resolved. In this example, if $(LATEX_ENABLED) is never evaluated, the section need never be evaluated either. This is in contrast to the static. section, which always evaluates its body at least once.

A second reason is that a .STATIC section allows for file dependencies, which are useful when the .STATIC section is used for memoization. For example, suppose we wish to create a dictionary from a table that has key-value pairs. By using a .STATIC section, we can perform this computation only when the input file changes (not on every fun of omake). In the following example the awk function is used to parse the file table-file. When a line is encountered with the form key = value, the key/value pair is added the the TABLE.

    .STATIC: table-file
        TABLE = $(Map)
        awk(table-file)
        case $'^\([[:alnum:]]+\) *= *\(.*\)'
            TABLE = $(TABLE.add $1, $2)
            export

It is appropriate to think of a .STATIC section as a rule that must be recomputed whenever the dependencies of the rule change. The targets of the rule are the variables it exports (in this case, the TABLE variable).

4.14.1.1  .MEMO

A .MEMO rule is just like a .STATIC rule, except that the results are not saved between independent runs of omake.

4.14.1.2  :key:

The .STATIC and .MEMO rules also accept a :key: value, which specifies a “key” associated with the values being computed. It is useful to think of a .STATIC rule as a dictionary that associates keys with their values. When a .STATIC rule is evaluated, the result is saved in the table with the :key: defined by the rule (if a :key: is not specified, a default key is used instead). In other words, a rule is like a function. The :key: specifies the function “argument”, and the rule body computes the result.

To illustrate, let's use a .MEMO rule to implement a Fibonacci function.

    fib(i) =
        i = $(int $i)
        .MEMO: :key: $i
            println($"Computing fib($i)...")
            result =
                if $(or $(eq $i, 0), $(eq $i, 1))
                    value $i
                else
                    add($(fib $(sub $i, 1)), $(fib $(sub $i, 2)))
        value $(result)

    println($"fib(10) = $(fib 10)")
    println($"fib(12) = $(fib 12)")

When this script is run, it produces the following output.

    Computing fib(10)...
    Computing fib(9)...
    Computing fib(8)...
    Computing fib(7)...
    Computing fib(6)...
    Computing fib(5)...
    Computing fib(4)...
    Computing fib(3)...
    Computing fib(2)...
    Computing fib(1)...
    Computing fib(0)...
    fib(10) = 55
    Computing fib(12)...
    Computing fib(11)...
    fib(12) = 144

Note that the Fibonacci computation is performed just once for each value of the argument, rather than an exponential number of times. In other words, the .MEMO rule has performed a memoization, hence the name. Note that if .STATIC were used instead, the values would be saved across runs of omake.

As a general guideline, whenever you use a .STATIC or .MEMO rule within a function body, you will usually want to use a :key: value to index the rule by the function argument. However, this is not required. In the following, the .STATIC rule is used to perform some expensive computation once.

    f(x) =
        .STATIC:
            y = $(expensive-computation)
        add($x, $y)

Additonal care should be taken for recursive functions, like the Fibonacci function. If the :key: is omitted, then the rule would be defined in terms of itself, resulting in a cyclic dependency. Here is the output of the Fibonacci program with an omitted :key:.

    Computing fib(10)...
    Computing fib(8)...
    Computing fib(6)...
    Computing fib(4)...
    Computing fib(2)...
    Computing fib(0)...
    fib(10) = 0
    fib(12) = 0

The reason for this behavior is that the result value is not saved until the base case i = 0 || i = 1 is reached, so fib calls itself recursively until reaching fib(0), whereupon the result value is fixed at 0.

In any case, recursive definitions are perfectly acceptable, but you will usually want a :key: argument so that each recursive call has a different :key:. In most cases, this means that the :key: should include all arguments to the function.

4.15  Constants

Internally, OMake represents values in several forms, which we list here.

  • int
    • Constructor: $(int <i>) 9.4.1.
    • Object: Int 12.1.4.
    • An integer is a represented with finite precision using the OCaml representation (31 bits on a 32 platform, and 63 bits on a 64 bit platform).
    • See also: arithmetic 9.4.3.
  • float
    • Constructor: $(float <x>) 9.4.2.
    • Object: Float 12.1.5.
    • A float is a floating-point value, represented in IEEE 64-bit format.
    • See also: arithmetic 9.4.3.
  • array
    • Constructor: $(array <v1>, ..., <vn>) 9.3.1.
    • Object: Array 12.1.7.
    • An array is a finite list of values. Arrays are also defined with an array definition
          X[] =
              <v1>
              ...
              <vn>
      
    • See also: nth 9.3.5, nth-tl 9.3.8, length 9.3.4, …
  • string
    • Object: String 12.1.8.
    • By default, all constant character sequences represent strings, so the simple way to construct a string is to write it down. Internally, the string may be parsed as several pieces. A string often represents an array of values separated by whitespace.
          osh>S = This is a string
          - : <sequence
             "This" : Sequence
             ' ' : White
             "is" : Sequence
             ' ' : White
             "a" : Sequence
             ' ' : White
             "string" : Sequence>
             : Sequence
          osh>length($S)
          - : 4 : Int
      
    • A data string is a string where whitespace is significant. It represents a single value, not an array. The constructors are the quotations $"..." and $'...'.
          osh>S = $'''This is a string'''
          - : <data "This is a string"> : String
      
    • See also: Quoted strings 7.2.
  • file
    • Constructor: $(file <names>) 10.1.1.
    • Object: File 12.1.13.
    • A file object represents the abstract name for a file. The file object can be viewed as an absolute name; the string representation depends on the current directory.
          osh>name = $(file foo)
          - : /Users/jyh/projects/omake/0.9.8.x/foo : File
          osh>echo $(name)
          foo
          osh>cd ..
          - : /Users/jyh/projects/omake : Dir
          osh>echo $(name)
          0.9.8.x/foo
      
    • See also: vmount 10.6.1.
  • directory
    • Constructor: $(dir <names>) 10.1.1.
    • Object: Dir 12.1.14.
    • A directory object is like a file object, but it represents a directory.
  • map (dictionary)
    • Object: Map 12.1.2.
    • A map/dictionary is a table that maps values to values. The Map object is the empty map. The data structure is persistent, and all operations are pure and functional. The special syntax $|key| can be used for keys that are strings.
          osh>table = $(Map)
          osh>table = $(table.add x, int)
          osh>table. +=
                  $|y| = int
          osh>table.find(y)
          - : "int" : Sequence
      
  • channel
    • Constructor: $(fopen <filename>, <mode>) 10.8.4.
    • Objects: InChannel 12.1.16, OutChannel 12.1.17.
    • Channels are used for buffered input/output.
  • function
    • Constructor: $(fun <params>, <body>) 9.5.1.
    • Object: Fun 12.1.9.
    • Functions can be defined in several ways.
      • As an anonymous function,
            $(fun i, j, $(add $i, $j))
        
      • As a named function,
            f(i, j) =
                add($i, $j)
        
      • This feature will be introduced in version 0.9.9.0.As an anonymous function argument.
            osh>foreach(i => $(add $i, 1), 1 2 3)
            - : <array 2 3 4> : Array
        
  • lexer
    • Object: Lexer 10.11.9.
    • This object represents a lexer.
  • parser
    • Object: Parser 10.11.13.
    • This object represents a parser.
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-references.html0000664000152300015230000001010610656155147016755 0ustar jyhjyh References
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Appendix C  References

C.1  See Also

omake(1) (Chapter 1), osh(1) (Chapter 15), make(1)

C.2  Version

Version: 0.9.8.5 of 7thAugust, 2007.

C.3  License and Copyright

© 2003-2006, Mojave Group, Caltech

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

C.4  Author

Jason Hickey, Aleksey Nogin, et. al.
Caltech 256-80
Pasadena, CA 91125, USA
Email: omake-devel@metaprl.org
WWW: http://www.cs.caltech.edu/~jyh and http://nogin.org/

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-obj-index.html0000664000152300015230000001225210652152751016511 0ustar jyhjyh Index of objects
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Index of objects

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-autoconf.html0000664000152300015230000004143210655737107016461 0ustar jyhjyh Autoconfiguration functions and variables
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 14  Autoconfiguration functions and variables

OMake standard library provides a number of functions and variables intended to help one write build specifications that need to be capable of autoconfiguring itself to adjust to different build environments.

14.1  General-purpose autoconfiguration functions

The following general-purpose functions can be used to discover the properties of your build environment in a fashion similar to the one used by GNU autoconf tool you may be familiar with. It is recommended that these function be used from an appropriate static. block (see Section 4.14 for more information).

In order to use the following general-purpose functions, you need to have the line

open configure/Configure

included in your OMakefile or OMakeroot.

14.1.1  ConfMsgChecking, ConfMsgResult

ConfMsgChecking(<msg>)
...
ConfMsgResult(<msg>)

The ConfMsgChecking function output message of the form --- Checking <msg>... without any trailing newline. After the test advertized by ConfMsgChecking is performed, the ConfMsgResult function should be used to output the result.

In certain cases users may want to redefine these function — for example, to use a different output formatting and/or to copy the messages to a log file.

Example:

static. =
   ConfMsgChecking(which foo to use)
   foo = ...
   ConfMsgResult($(foo))

14.1.2  ConfMsgWarn, ConfMsgError

ConfMsgWarn(<msg>)
ConfMsgError(<msg>)

Print a warning or an error message respectively. ConfMsgError would then abort OMake.

14.1.3  ConfMsgYesNo, ConfMsgFound

flag = $(ConfMsgYesNo <bool expr>
flag = $(ConfMsgFound <bool expr>

The ConfMsgFound function expects to receive a boolean flag describing whether a test previously announced using the ConfMsgChecking function found what it was looking for. ConfMsgFound will output the appropriate result (“found” or “NOT found”) using the ConfMsgResult function and return its argument back.

The ConfMsgYesNo function is similar, outputting a simple (“yes” or “NO”).

14.1.4  TryCompileC, TryLinkC, TryRunC

success = $(TryCompileC <prog_text>)
success = $(TryLinkC <prog_text>)
success = $(TryRunC <prog_text>)

Given the text of a C program, the TryCompileC, TryLinkC, and TryRunC functions would try to compile / compile and link / compile, link, and run, the given program and return a boolean flag indicating whether the attempt was successful.

TryCompileC will use the CC, CFLAGS and INCLUDES variables to run the C compiler. TryLinkC and TryRunC will also use the LDFLAGS variable to run the C compiler and linker. However, the flags like /WX, -Werror and -warn-error will be not be passed to the compiler, even if they occur in CFLAGS.

These functions are silent and should normally be used with an appropriate ConfMsgCheckingConfMsgResult.

14.1.5  RunCProg

output = $(RunCProg <prog>)

RunCProg is similar to the RunCProg function, except that it returns the output of the function (will return false if the program fails to compile or run).

14.1.6  CheckCHeader, VerboseCheckCHeader

success = $(CheckCHeader <files>)
success = $(VerboseCheckCHeader <files>)

Use the TryCompileC function to check whether your C compiler can locate and process the specified headers files. Will incude <stdio.h> before including the header files.

Both functions return a boolean value. The CheckCHeader function is silent; the VerboseCheckCHeader function will use the ConfMsgChecking and ConfMsgResult functions to describe the test and the outcome.

Example:

static. =
   NCURSES_H_AVAILABLE = $(VerboseCheckCHeader ncurses.h)

14.1.7  CheckCLib, VerboseCheckCLib

success = $(CheckCLib <libs>, <functions>)
success = $(VerboseCheckCLib <libs>, <functions>)

Use the TryLinkC function to check whether your C compiler and linker can find the named functions when linking with the named libraries. Will pass the <libs> to the compiler using the -l flag.

Both functions return a boolean value. The CheckCLib function is silent; the VerboseCheckCHeader function will use the ConfMsgChecking and ConfMsgResult functions to describe the test and the outcome.

Example:

static. =
    NCURSES_LIB_AVAILABLE = $(VerboseCheckCLib ncurses, initscr setupterm tigetstr)

14.1.8  CheckProg

success = $(CheckProg <prog>)

Checks whether the program <prog> exists in your path. Will use the ConfMsgChecking and ConfMsgResult functions to describe the test and the outcome.

14.2  Translating autoconf scripts

Some of the functions described above are very similar to the ones present in autoconf. Below is a brief translation table for such functions.

AC_MSG_CHECKING is very similar to ConfMsgChecking function.
AC_MSG_RESULT is very similar to ConfMsgResult function.
AC_MSG_WARN is very similar to ConfMsgWarn function.
AC_MSG_ERROR is very similar to ConfMsgError function.
AC_TRY_COMPILE is somewhat similar to TryCompileC function, except the TryCompileC function returns a boolean value and only works for C. Similarly,
AC_TRY_LINK is approximated by TryLinkC function, and
AC_TRY_RUN is approximated by TryRunC function.

14.3  Predefined configuration tests

A number of configuration tests are already included in the standard library. In order to use them in your project, simply open (see Section 4.7) the corresponding build file in your OMakefile and the tests will run the first time OMake is executed. Note that it is not a problem to open these files from more than one place in your project — if you do that, the test will still run only once.

14.3.1  NCurses library configuration

Add open configure/ncurses line to your OMakefile to get access to the following autoconfiguration variables.

NCURSES_AVAILABLE

A boolean flag that would be set when both the curses.h header, the term.h header, and the ncurses library very found.

NCURSES_TERMH_IN_NCURSES

A boolean flag that would be set when term.h has to be included as <ncurses/term.h> instead of <term.h>.

NCURSES_CFLAGS

The CFLAGS to use when compiling ncurses code. Will include -DNCURSES and -DTERMH_IN_NCURSES, respectively when NCURSES_AVAILABLE and NCURSES_TERMH_IN_NCURSES are true.

NCURSES_CLIBS

The LDFLAGS to use when linking ncurses code. Will normally contain -lncurses when ncurses is found and remain empty otherwise.

14.3.2  ReadLine library configuration

Add open configure/readline line to your OMakefile to get access to the following autoconfiguration variables.

READLINE_AVAILABLE

A boolean flag that would be set when both the readline/readline.h header, the readline/history.h header, and the readline library very found.

READLINE_GNU

A boolean flag that would be set when the GNU version of the readline library is found (as opposed to the BSD one).

READLINE_CFLAGS

The CFLAGS to use when compiling readline code. Will include -DREADLINE_ENABLED and -DREADLINE_GNU, respectively when READLINE_AVAILABLE and READLINE_GNU are true.

READLINE_CLIBS

The LDFLAGS to use when linking readline code. Will normally contain -lncurses -lreadline when readline is found and remain empty otherwise.

14.3.3  Snprintf configuration

Add open configure/snprintf line to your OMakefile to get access to the following autoconfiguration variables.

SNPRINTF_AVAILABLE

A boolean flag telling whether the snprintf function is available in the standard C library.

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-all-index.html0000664000152300015230000015530010655737107016520 0ustar jyhjyh Index
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Index

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/download.html0000664000152300015230000003127710660133627015357 0ustar jyhjyh Download OMake
OMake Home
Documentation
Download
Publications
Mailing lists
Users and projects
Bugzilla
Browse sources
Changelog summary, verbose

Download OMake

The latest release of OMake is OMake 0.9.8.5 (released on August 7th, 2007).

omake-0.9.8.5/doc/html/images/0000775000152300015230000000000010660137250014111 5ustar jyhjyhomake-0.9.8.5/doc/html/images/grid.ai0000664000152300015230000001745610124060307015357 0ustar jyhjyh%PDF-1.4 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ -114.5 99.5 725.5 693.5 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 6 0 R >> /LastModified (D:20010930140606-07'00') /ArtBox [ -114.5 99.5 725.5 693.5 ] /Group 18 0 R /Contents 19 0 R /Resources << /ExtGState << /R1 4 0 R >> /Properties << /R2 << /AIType /HiddenLayer /Contents 16 0 R /Resources << /ExtGState << /R1 17 0 R >> >> >> >> /ColorSpace << /DefaultRGB 23 0 R >> >> >> endobj 4 0 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 5 0 obj << /CreationDate (D:20010930140606-07'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (grid.ai) >> endobj 6 0 obj << /Private 7 0 R /LastModified (D:20010930140606-07'00') >> endobj 7 0 obj << /CreatorVersion 9 /ContainerVersion 9 /RoundtripVersion 9 /Options 8 0 R /AIMetaData 9 0 R /AIPrivateData1 10 0 R /AIPrivateData2 11 0 R /NumBlock 2 >> endobj 8 0 obj << /OptionSet 1 >> endobj 9 0 obj << /Length 1806 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Jason Hickey) (Caltech) %%Title: (Y:\\classes\\cs134\\cs134a\\slides\\arch_1\\grid.ai) %%CreationDate: 9/30/2001 2:06 PM %%BoundingBox: 0 0 0 0 %%HiResBoundingBox: 0 0 0 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBCustomColor: 0.1059 0.3059 0.851 (Back blue) %%+ 0.1529 0.1451 0.1451 (Black) %%+ 0.79 0.6958 0.4661 (Bright Yellow) %%+ 0.2078 0.3569 0.651 (Buff Blue) %%+ 0.9098 0.5922 0 (Burnt Orange) %%+ 0 0.5882 0.4706 (Forest Green) %%+ 0.3 0.5756 0.75 (Light Blue) %%+ 0.0448 0.64 0.5833 (Light Green) %%+ 0.54 0.3348 0.4208 (Light Magenta) %%+ 1 0.9608 0.6588 (Light Yellow) %%+ 0.502 0.3843 0.7412 (Tool Purple) %%+ 1 1 1 (White) %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306 396 306 396 %AI3_TileBox: -106.5 109.5 685.5 685.5 %AI3_DocumentPreview: None %AI5_ArtSize: 840 594 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 1 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 3 %AI9_OpenToView: -130.5 718.5 1.47 1276 982 27 0 1 6 44 0 0 1 1 1 0 %AI5_OpenViewLayers: 775 %%PageOrigin:-106.5 109.5 %%AI3_PaperRect:-8 587 834 -8 %%AI3_Margin:8 -9 -40 8 %AI7_GridSettings: 12 1 12 1 0 0 0.8333 0.8333 0.8333 0.8333 0.8333 0.8333 %AI9_Flatten: 0 %%EndComments endstream endobj 10 0 obj << /Length 69 >> stream %%BoundingBox: 8497 24970 -24268 -7795 %%HiResBoundingBox: 0 0 0 0 endstream endobj 11 0 obj << /Filter [ /FlateDecode ] /Length 12 0 R >> stream H‰¤WQsÛ6~ÏŒÿî!3ÒÝÉ& $Õ'ÛiR·v¬³“6¸ã¡%ÄfC‘’JêüúÛH. È‘ï:NDp÷ÃâÃâ[|ùÅõìxUÞ©?ôØÁ‹—/O+•6e5gÚÌÎò|[7š&WS–z:>‹o[௪ª³²˜w®×ØwòsZ—û)[~VS69MóF-¦x—5¹Èïó››ežÖµª¡QûÁª †K¼A" `=P »¬Òâ¾Ç ;Ž-iM +ªnØ›J©¢Ã ‰ü›œkB£‘¼0Ä‘d¨ãqÞÆqº9×Ð0ðâÕ*¯ÅajééxÀ­Y ’æqˆä¢ÐØä]Yæl±­6¹êCáßä·‡¬1&X·¡ô»Ú˜|¼R÷™VÝSSþÒHâZmRãÌMDTï+õ)ÝæÑ #4›)3.7h©u/Hέ%Õ=á/î*´ÿ›ùðÏDX,^aïÀ×é±P°þÌ»ïtÕÓÑã¦ß©õ&‡=Dï˜'²{v¨ížùž<„Zóø•±è~[mêK¦¾ÎÙÛ²Pm=WÍuö ê&=&’°5_msU½/²h[bRzQ®TÓ¢î¯óô^§‰få3*Øwiu¯Ü{òm£wâØë|o·ëóôQá>ÆÛA.7ªxWþªiÎ|ja‘ãä@æÌ"É}éa$ ÃvD½2m\ ‚!ºàQ„©x¹±^BMfÅ|˜1#~»H7ªºRËf>‹™ˆ#óÍâÎ}ž1›%lšm 7™7°ùÓããúúÝ"ÃvÂ9Æ£=ä²iTÑnU?«Ór+Wëc„^@ äå=¾žË|»RÝ®þœM}O—§öø=ÝžÜò÷ô³N€=è]fˆ¢ó+±Ý´2І[û¢Ê \Ÿƒo;ôzf³½}ãÂisKrôKQ~-ô›¼˜|l÷•?¦ìèmºVì߀¹Î ŽUòØ%þxÕ~HÑr?°ê3!ŠCýð¤> ‚þáÝÆñáß~†ÖŸ`ûÊBvÁ>þá±Õø š½‹fÂ~8xÁŽ€ 6ôl ƒ¹ìOÊ"ÍAåʰ_Üí§koÍz¾a¢,Çb‰Ñ†<ñä€#Öç‘® §0ð/84b0<ˆ¼ ÂpBÙރΎÕZ 3.c3¼>²Cã£=¡÷ŒvÜÞn"û±‡‚(D®RS~Æ]‚¢Zö~òšœÔ¿ž¾p|÷º@ñÆfC2Á3Ú‰öÝ{Ì€ Ùt4B'0ä~h‹ï\ìü 'êéÉ@ætI|÷Î4ä34·ÊƒbÖ[Éí»‚‘ÍD<â]ªLοÙ¡P#« f.¥Œ´n#ÍÑ ðôut@μ·™l8í­Ší;"'´ôÿ¿íŒçPÚ£ÝÐÝp äÿ܈ãÛE¾盪ÜnΊO% f¾ióZSŪ†¯:c3¯Ìt™¢º¾tFødÛL÷„„OÃ<»¯ÒÍC¶d'Õ¶~`¸R}øþ~¨'ú>gØÞªâ²0SrÇmö`Óç9ƒôà]€óo¿^j†»B]}x·ó”NZéu7ÜWi‡éËۣ΀G.¾fK–VÍ]™V+¶Ô_>«ÔjŠÇ÷3 ÷f«|Øì+‚0ˆŸÆ{¡C{Áþ“¸ p^5|*©bù#f+V×C ôØÑ î`¹Á›4x×Û\ñ-†{€ºRi‹ºÜ6›mîÒV=ûf¾ÀèC¡£(F.hcO—!éöF ŠaÿÙ¦yÖ<²s¼Û´?Ÿ-à+p­ pýãúN­Žóüu Wï_Ô#ekøz{·T =Qúl2`šìSð+äOáQ<²¥îÒ{î'øÞ#x° ;ùòÁþ€L–eµR+c\VËfì­fQ²ò‹ª6Xy,+@ëMY룋î\2­ÚÄ;»sI×júæÒ_o}P*\ƒ!ðïZÏïÚS÷6œêã¼Ðó­É®ñì躩P0!€âå|JDoñ€„»õö`{ð7/âÞŽ‹øÌ‡Ëk ®ë¶ Ÿ1Ëa"×SöO´ÁGlãçù¡íøüÐvüðÚû¡mû¢—¸ìb"»Ü"¢¹Ì$“.¯h….+N¬¸Ë* VÁŽŒ æ°ê99Œ¨›Û‹tÇãâ0IѺW EÓugK‰róD)v3óÑÈÝ«…¢v×w ŽÚHk‡²|î†ïßm |‡¾å±£:|Iü¤Ë/JÆ ºw—ÐÒ&îÚz´¸žÃ/ð{~Ø´½A4bп;úñH@N&Ñóæí•ÄOºü¢±üúw÷™Ä¦­a¯ç‡MÛK¥ÁÝÚàT|GuP%s·’9•wë‚Sap·28•wkƒÓÎÅÝ‹SQp·*BªŠÐ­Šª"t«"¤í:twëj!tk!¤ZÝZ©B·˜XÅ.+ª€Ð­A Ü T­ô¬°i{I÷ÂÕ½ Ý W÷‚t/\Ý‹ˆXE.+R»pÕ.IíÒU»$µKWí’Ô.]µKR»tÕ.IírÇ)08\µKR»tÕ.IíÒU»$µKWí©=rÕ‘Ú#Wí©=rÕ‘Ú#Wí©=rÕ‘Ú#Wí©=rÕ‘Ú#Wí1©=vÕ“ÚcWí1©=vÕþþ a“)ûðÞ&ÐþhU·ÞCÏó„6X(‹>´-/”Ô8,üïÎT|ið’^H<›¦w $îIê¶å•±@Ú$Q}aóCa„INIÄ¶å ¬$¢Á‚x”ÄÈÑ–Ô(,HLIĶå¬$¢Á‚HJ"¶-oh% „S±my+‰h° >%ۖ׳’ˆ†1öaãê¢ô YéNá*ݶ¼ÂJ§p Î"‹Kg°p•Xá” ÒmËëY‰N Áy<æÒ,\l¥8tŠ)¤bÒmË+¬Ä†N1ÁÄâÒ,·R:eRYé¶åõ¬Ä†NYÁ½lÌ¥7X¸ØJ1w ŒSé¶å•Vb¹S`œ L·-/·ËãT`ºmy}+Ü)0N¦Ûc/ÞèGÐ`AGQàTTð_Ò«ï5a¿ ýò"LXfSqÓí©n ² æ»D=j¡¶#Íœþ÷»h]Û»Ù‡–Ò»|M>îG¾”JQÀÚ ÿLpHU“”6AQI ˜$5I X?T’ÖTø—ÖdRÚM”¢Ò¤˜4©š4)ÖMŠJ“b-uª˜œm‚¢¥˜D©šD)ÖKŠJ”b …‘&“Òn¢¨R1¡ªéë"ªR\¤ü…Ò¤»ÝÄX7VuÎO‹”…±Y¢ê· %¡¤”5“¬ %¥ 9ÞŒÇãj’Ò&(É"!kš/Ù–$i:$ˇ šLJ› hQHVÇcn”KgÞÚëlâuºa4\L³õLÀHY:&'ÙÑåu”8]>^îy7Æ”¹Æ¥EùÎ=[âJ“|EOÌ2œcÑ}JV6É3mâÞùΈþ»5I‹«0BÔ‹ÞBO\;Àƒ{x_„㦎¤Þ jsØÛVf'À?ˆußt s£“ÔÑŠ ½¡³,·Ú‰Ø@as¢Øä_Îã>úù \çKXDiúYX£·ÀDß‚Ù&N!b°ö°:C‹^#U„Ú`yš›h‹Ë!ò¶ ¹r¼Ú)ì .óêv§¯Ï^ç[€Ž{Ÿ endstream endobj 12 0 obj 3128 endobj 15 0 obj 0 endobj 16 0 obj << /Length 15 0 R >> stream endstream endobj 17 0 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 18 0 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceRGB >> endobj 19 0 obj << /Filter /FlateDecode /Length 20 0 R >> stream H‰¬ÁjÂ@†ŸÀw˜c{°›¬&UA‡BKƒ ½ˆ‡m2†¡›]Ùì¶úöÝ&…ÖBK;ìÿÿÃðͰDç®BeŸÐºÝdÂRQ⣡’¬ûaßDc_7lå$š. á7ûã&šN!I{ì^ÐøY‰p5ùki´SÅ5{¦š^¼iC`©Á7ÂwØ Y{¹,ÈŠó””Å¢Kªª“Zh© ¬yÀùâ(DÐþ7l+…mºÞÌUï„A•Žž''‹›I;»[ñF/Ú÷e½Çú}«.À·êö¿GÇ ~Åþg†{ûߘçÇýÉ?1?¸SÁ^ endstream endobj 20 0 obj 252 endobj 21 0 obj << /N 3 /Filter [ /FlateDecode ] /Length 22 0 R >> stream H‰b``òptqre``ÈÍ+) rwRˆˆŒR`?ÏÀÆÀ̉ÉžÁn! v^~^*øvD_Ö™…)p%•é?@ì“’ZœÌÀÀèdg——Å·Ù"IÙ`ö »($ÈȾdó¥CØo@ì$d_Ð L< õé¶ØÛÄ.I­ÙËàœ_PY”™žQ¢ ‘¬©`hii©à˜’Ÿ”ª\Y\’š[¬à™—œ_T_”X’š¢§à˜“£R^¬”ZœZTd€¸ !šA!©4ÌB“Äð @ña}‡;£Ø„$—•A™ŒLÆ„ù3æH00ø/e``ùƒ3ée`X ÃÀÀ?!¦fÈÀ  ÏÀ°o@€×\Xo endstream endobj 22 0 obj 304 endobj 23 0 obj [ /ICCBased 21 0 R ] endobj xref 0 24 0000000013 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000575 00000 n 0000000684 00000 n 0000000833 00000 n 0000000912 00000 n 0000001092 00000 n 0000001129 00000 n 0000002988 00000 n 0000003109 00000 n 0000006319 00000 n 0000000014 00001 f 0000000000 00001 f 0000006341 00000 n 0000006360 00000 n 0000006416 00000 n 0000006526 00000 n 0000006618 00000 n 0000006948 00000 n 0000006969 00000 n 0000007360 00000 n 0000007381 00000 n trailer << /Size 24 /Info 5 0 R /Root 1 0 R >> startxref 7420 %%EOF omake-0.9.8.5/doc/html/images/omake-manual.gif0000664000152300015230000001157110524166566017167 0ustar jyhjyhGIF89as3÷ñ# Ô79å£2|+-ÇšK¨13雜e()ÿÿÿ‘æææÈÇÇZWX¤“O%&ñññ1-.µ‚.ãããÖÕÕ?;<¬««vst‡-.LIJfffhefº¹¹„a)„‚p*+žž{@Ó˜™’.0L>+³34Þ™šECC412”t>T@%QPPIGG8.%µ´µ0,-MKL-'#'#$856kU3YYYd8B6(VE-<::½’HaM0Šl;³‹F¨ƒCUTUªš…ƒƒ ¯¡bbb¿èä@»®/+,ÎÍÍ@>?i*ÚÚÚ`ƼxY(ÑÉHDE)%&+()‹x\ôÍΛœljj€ÒÉœr+ß¡7Ì›FßßßÁŠ/0µ§Í“0pÌÂÙ›1ïïïçççxvwÙŸ<ßôñ;88ÁÁÁ^]]ŸÝÖßôò©¨¨lQ'200*'(RPQ2/0§Žcꛜ¯âÝ`]^ÞÊÊšŠmFDD÷÷÷XVWÒAjY=@>>¹”U„rVÐÐÐqbMïùø0..PÁµTkcuuu!§~7.,,ùææ×ÐxgK544³’Z¨z,¯†@Ê•9{dA;89644jnf×××éÌÌTQR\Z[ŸÝ×}}}%""³²²{a7978¨~7­^²””^\]NLMVTU~~{Z'(QPQŽvKÇÇÇÆ˜K°°°YXY‹qGpppUE2VI4œœœgggQMF‡††|XIHI" YUN9"#iS0´¶²-,,Ž…w~mQ Œhˆq&$$GFGc2jiiNLLôÍÍp\c_X512Šy]cP5¸¸¸ÀÀÀbN3xeJ‘l,¼Š6ž†[|C€vhxn`½•–ÏÏÏe]OÈÇȘ˜˜ihh±ŒM‚{uƒ‚ƒ766PÀµ`H&{zz™™™iW;z_5rhZqpp-)*ooo422òññ(e]HFF‘‘‘…kALJJÏîëÿÿÿ!ùñ,s3ÿã H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cšœÐ 0è°A¦ÏŸ@ƒ e¹ΣHPHð`¨Ó§P£j\@µªU«MV âIÃ…ÐSªÙ³hÍv˃ ñÀ€8áf[±ÒêÝË·¥…»l!<Ѐní€Ùví˸±c³]gÙ… w0,áƒ]¤ ‹MZᇣ`Z¨^ÍZueœ 6Àf(á3ÒY >0Š”BéßÀEPDñãȑ݌SCÞH!THøÀ6ÃÁ³k7{4NòïÇ›àÿd'†…§“BÀŽp-ÒÅ??0˜ï|»}à™aƒO '„x¼)T]X—%”ßQä)$Á| &XЂ :8‘\n…$Ab8Adˆá÷…hÑk±ßw@ÏpìDâr Ɇ”„!†T‹ñü•”Eï…ôbNQ8žˆDJ$Wq'&'ÅQ”Y–IùÖÐ4¤#h†UåC µáGЩXÐGYPä™ =pÔI&×ÂQÈ_A‘%õåBa`¦BP&AWUßD2’ša$älh6ŠP¡R´‰\G%Pç ¥7–C]&bB*uÔ¡öÉUE/†T(RD&œŽJÿ4AU82æFHŠ\Í•Àyý¸'CâÔjB6wê@:êtÔ§"Ò­þ)\@gm£5Eè-}ÐmÙoèÚÂ$Ñ_…éiC¯V¨Ð•šÂj¦n;Myî„ÝgyiÕ ÇÆ#A¦b0'BБhí6ÎuXÐ``w¡†ZYÌStzXpFÌ¢g!+¤ñ¯º“H*š`iÊA‡„^F(C (8â—‹fYW;ÖFdCxpƒ"NaŽÿrÀ5a`ÒŠÏØ5,ÇZUdÅTÙ‚æìu<{Øm2T—¸^CÚ^é¸ÙxL‰e’"R²’´'"v Ý,$¬¬çNÌžYè¦(±ôÍÇ:€uHÀZŒv¡¢øÍoEËÊ]TB cXÃèðA¸! ­ÂêÄ€«8xà\™ÜªÑéu²Ù®h¯ÅªáRPÛ<(y¥ûrrXÄ‘«@Èd´v8Äôð…8)ìy˜Ÿú\ü,‰\® ¶!ª˜ƒ)Š< eÍB~!Ñ&K”¾bµÂÁ+±¢zÈhB3Ò¶PàÑÔ Ø[°+9ˆg‹a/Uè¾[’ÿ¦•å­MÒ4¬aÏÝðÑ$Kã„«Æèå^ÏVìÇÍ)P^TÈÚšˆÈôJ˯ãàD*…²VÁɘn2”7z‡Zä'1ÀÁ L0jàÄ •(…}»Â›#Ê‚<½Æ²é®O¦*KŸg}bÿ0È(^ÌgcœÎA Ä6Ómø¶KÎM Ûo‰ýª‚IÍdêˆ-Ÿ’)C0 E¢±ÚKgúܵB/μÀG µ N€Pd¹˜Ç}uG|»m¥ä3ðßmª¥aœ÷Å‚ B’Fy3ÏôpRZHçF÷û2D$Ÿ£³€ 5s ççAºLrºUäKÿX­’õËòürTï@ To™Ÿ æ0à„W4BP˜,o?bafX­Ú\§uò"ì=+… æ³*åž^£¢Ö«±Æ¹Õ¼GGè`jŠ#[œ ;³ZM+²ÊtœÜ` ˆ»ÜçN÷ºÛýî5¸N`0‰MºÒe]B OøÂɽÂ,p¢‚À>È€ä…`ÇãÀÔ´8†æeTÑ÷B«"7±Ít{ÍбhÇ1{è‰ø€”qo CÛý°F™ …ôJ€Kd´ÝI> )…àfTœðïû:£Caƒ€@XÌ Ø¿ÿøÇOþò‡¿3à¾÷Q@ø]"å`íÊ[ÞòºáÓ8 · $ŸAò4àx/àxèÐOu+޲{1b*oQ(RRhå×'~è§~:À~æ·ä§}mgß'~îGrõu‚ 8ñ2'Bð þWÀ‚OpÍ `¾RJ øƒ g-Ð''%OQäÇ5`˜H~9°7ð5Àå7‚ñÄ„‚^(w ·sGÐû'y+p†Ž·0¼=qLtX‡uh`%Pyè‡{؇¨‡|臂ˆ†ˆ…8ˆˆÈˆ‹ÿxˆ¨ˆ‚8‰~˜ˆƒh‰H‰„¨‰˜‰–؉’ø‰‘¸‰¢È‰£(ˆ!0 v¸Š¬H‡ê` ¡1Eis„QÈTèv;…¨„zo§‹æ§…Ñ_ø…WÀ ôyü׌’GolsÐ]Á"ÑŠtP0ÛŽÝøáÈÞŽä8Žè(ŽçXŽêèŽí˜ŽñÈŽäXฎåˆòhæÈï¸øøôóØéIŽðØØuØyG‹Qˆ}SX…`WhKØ„O8‘í÷~\²iÅ·€ ãàWPŒå js8yàŒ2°@o&€xÿ _Ö'BÓÚ$@ ÛH”A9”E ”BI”Hy”Li”K™”N)•QÙ”U •H™•Dù”IÉ•V©•J –Sù•\9–XY–W–h)–i‰”"ÀÙûbW´Hè‘Øç9é×}3 xù‘[Ø…`ˆÀ .`Gàk  *™QW`ÉHo*€ÍHƒ5 lès )€[ )p00¦9š¥yš©Iš©Ùš«‰š§éš¬Y›¯i›¶™š¹9›± ›·©š¿I›² œ¶)œ¾Yœ½É›¿©›ÃÉœ¿¹›Ä9œ¤9 q)—<˜ã‡Lx#˜Ø)ŒAŒÿ…˜ 8à'@jƒ )a ‡ƒ8Ð1À&P™B°‚ÐÏà™FH>iðˆzúxå¨ Š : ê  :š Ê Ú ò—ÕÉŠq—Y‘VÈ=°‘NˆÀ8‘àÉ)›vk@sþ—>ž€`Y N*€4À'°*У;w;Ç„ ؃׈¢é@š¥IšN ¥ª9¥®)¥OzVº¥YªšZÚ¥Pj¥^*¦Rª¥W: O ¦fª¦iz¥_J¥X §oê¦\§s:¦jz§aʦf¥fê ÚŠꑼˆ‹)Š}…ꋹ¨¢ ÿYR„ 7¨+à> êy¤Ù t—'s=šeðp“0€ µU¡!‡ñ ÊŠ¡*¡´:«¶* à¸z«ùªø«±Ú«ÂZê¡â( –pj‡ƒº‹&Ú‘Q(¢™‘Áب ±K€_­p'•é­>`O  ôW®ùÅ ¹°‚5‡”ê/@o¥Jo¾° Å mqsȤ¨éœ¸Ùœ§ Æ©œÈœÉljš¶`°+˯à [°«°;±» ðJ@T@?@Dð Kð0ʪ¬C°²b0b- ³åQ~è—Þÿ‰z ‚à7~+Ê)U' ƒ&Ð4`©à –´– ’ï*N»sE° F@Á¥ Àz¡[k¬»úµÅú µ ¶ É ¿Êµ¶ª¶ ð¶p·r ·?f0p AÀL@rû±A ·C0³á§}ê‚ع5»~á׳ Nðû¤eà/0Xp×Ð 8q*`j8qƒïÆsÞ¹ Ñ“PЫ«º®ûº«Ûº² »¬[p´{»¹‹»³«»½Ë»µë»Á ¼®+¼ÅK¼³;»®«¼±[»Ç»»Ðû»Ñ;¼®s{½Ø›½ÚÛƒ SÈvÓÿŠ…‰‹—%Ê„'ŠÖ u° 2ðn&`.°.€ áí ™8!齃O€Æp |ð¨ÛÆ»ºl»È‹ÀÓû¼ÒÛÀÔ˼´»¼ÎkÀ |À\Á¼À¬Á Á`½ÛÂ"·fðG8Á#Â*¼Â,ÜÂ.üÂ)Ì}’U¦P?º8üÂà¡ ‰°©aQ¡° _®Ê¶¼J¬JìµHì«N<¶MÅK,¶I,«ßè¶#œÅÛ‡ã!^üÅ`Æb<ÆñæðmÐ <¼^ B@ l lð ¿  ‰‡yØÇ~üǀȂ<È„\Ȇ|ȈœÈŠV¼ÈŒ ȸÀ}f «‡°²‡`A°·ZÐ{Ë”L€ð ÉJ |«Aà±ËÅ¥ñ’ u_€Ô€X0Ë@¸Ë&á~ÀËÀÌ!;omake-0.9.8.5/doc/html/images/announce.ps0000664000152300015230000064021610524166566016307 0ustar jyhjyh%!PS-Adobe-3.0 %%Title: announce.dvi %%Creator: PScript5.dll Version 5.2.2 %%CreationDate: 9/20/2004 11:16:42 %%For: jyh %%BoundingBox: (atend) %%Pages: (atend) %%Orientation: Portrait %%PageOrder: Special %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: (atend) %%DocumentData: Clean7Bit %%TargetDevice: (Generic PostScript Printer) (2010.0) 2 %%LanguageLevel: 2 %%EndComments %%BeginDefaults %%PageBoundingBox: 18 8 593 784 %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 /currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def /nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def /integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype {cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop (-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def /filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck {dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier /Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin $error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 ne{grestoreall}if errorname(VMerror)ne{showpage}if initgraphics courier setfont lmargin 720 moveto errorname(VMerror)eq{userdict/ehsave known{clear userdict /ehsave get restore 2 vmreclaim}if vmstatus exch pop exch pop PrtVMMsg}{ (ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt $error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} repeat}if}ifelse systemdict/showpage get exec(%%[ Error: )print errorname =print(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end}dup 0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where{pop/setpacking where{pop oldpack setpacking}if}if %%EndResource userdict /Pscript_WinNT_Incr 230 dict dup begin put %%BeginResource: file Pscript_FatalError 5.0 0 userdict begin/FatalErrorIf{{initgraphics findfont 1 index 0 eq{exch pop}{dup length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding {ISOLatin1Encoding}stopped{StandardEncoding}if def currentdict end /ErrFont-Latin1 exch definefont}ifelse exch scalefont setfont counttomark 3 div cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def end %%EndResource userdict begin/PrtVMMsg{vmstatus exch sub exch pop gt{[ (This job requires more memory than is available in this printer.)100 500 (Try one or more of the following, and then print again:)100 485 (For the output format, choose Optimize For Portability.)115 470 (In the Device Settings page, make sure the Available PostScript Memory is accurate.) 115 455(Reduce the number of fonts in the document.)115 440 (Print the document in parts.)115 425 12/Times-Roman showpage (%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def end version cvi 2016 ge{/VM?{pop}bind def}{/VM? userdict/PrtVMMsg get def}ifelse 105000 VM? %%BeginResource: file Pscript_Win_Basic 5.0 0 /d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ /index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- /rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C /closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M /rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d /Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage , d/K/stroke , d/W/widthshow , d/R/rotate , d/L2? false/languagelevel where{pop languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d/yS/yshow , d/zS/xyshow , d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, d}bd/bn/bind ld/lw/Lw ld /lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx matrix currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit/UtilsInit counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;}b /initialize{`{/Pscript_Win_Data where{!}{U/Pscript_Win_Data & put}?/ADO_mxRot ~ d/TextInitialised? F d reinitialize E}{U/Pscript_Win_Data 230 dict @ ` put /ADO_mxRot ~ d/TextInitialised? F d reinitialize}?}b/terminate{!{& self eq {exit}{E}?}loop E}b/suspend/terminate , d/resume{` Pscript_Win_Data `}b U ` /lucas 21690 d/featurebegin{countdictstack lucas[}b/featurecleanup{stopped {cleartomark @ lucas eq{! exit}if}loop countdictstack ~ sub @ 0 gt{{E}repeat} {!}?}b E/snap{transform 0.25 sub round 0.25 add ~ 0.25 sub round 0.25 add ~ itransform}b/dsnap{dtransform round ~ round ~ idtransform}b/nonzero_round{@ 0.5 ge{round}{@ -0.5 lt{round}{0 ge{1}{-1}?}?}?}b/nonzero_dsnap{dtransform nonzero_round ~ nonzero_round ~ idtransform}b U<04>cvn{}put/rr{1 ^ 0 - 0 ~ - neg 0 - C}b/irp{4 -2 $ + +S fx 4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e {DefIf_El !}b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b /freeVM{/Courier findfont[40 0 0 -40 0 0]makefont Ji 2 vmreclaim}b/hfRedefFont {findfont @ length dict `{1 ^/FID ne{d}{! !}?}forall & E @ ` ~{/CharStrings 1 dict `/.notdef 0 d & E d}if/Encoding 256 array 0 1 255{1 ^ ~/.notdef put}for d E definefont !}bind d/hfMkCIDFont{/CIDFont findresource @ length 2 add dict `{1 ^ @/FID eq ~ @/XUID eq ~/UIDBase eq or or{! !}{d}?}forall/CDevProc ~ d/Metrics2 16 dict d/CIDFontName 1 ^ d & E 1 ^ ~/CIDFont defineresource ![~]composefont !} bind d %%EndResource %%BeginResource: file Pscript_Win_Utils_L2 5.0 0 /rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge {1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d /colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b /resourcestatus where{!/ColorRendering/ProcSet resourcestatus{! ! T}{F}?}{F}? not{/ColorRendering<>/defineresource where{!/ProcSet defineresource !}{! !}?}if/buildcrdname{/ColorRendering/ProcSet findresource ` mark GetHalftoneName @ type @/nametype ne ~/stringtype ne and{!/none}if(.) GetPageDeviceName @ type @/nametype ne ~/stringtype ne and{!/none}if(.)5 ^ 0 5 -1 1{^ length add}for string 6 1 $ 5 ^ 5{~ 1 ^ cvs length 1 ^ length 1 ^ sub getinterval}repeat ! cvn 3 1 $ ! ! E}b/definecolorrendering{~ buildcrdname ~ /ColorRendering defineresource !}b/findcolorrendering where{!}{ /findcolorrendering{buildcrdname @/ColorRendering resourcestatus{! ! T}{ /ColorRendering/ProcSet findresource ` GetSubstituteCRD E F}?}b}? /selectcolorrendering{findcolorrendering !/ColorRendering findresource setcolorrendering}b/G2UBegin{findresource/FontInfo get/GlyphNames2Unicode get `}bind d/G2CCBegin{findresource/FontInfo get/GlyphNames2HostCode get `}bind d /G2UEnd{E}bind d/AddFontInfoBegin{/FontInfo 8 dict @ `}bind d/AddFontInfo{ /GlyphNames2Unicode 16 dict d/GlyphNames2HostCode 16 dict d}bind d /AddFontInfoEnd{E d}bind d/T0AddCFFMtx2{/CIDFont findresource/Metrics2 get ` d E}bind d %%EndResource end %%EndProlog %%BeginSetup statusdict begin (%%[ ProductName: ) print product print ( ]%%)= flush end [ 1 0 0 1 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec featurebegin{ %%BeginNonPPDFeature: JobTimeout 0 0 /languagelevel where{pop languagelevel}{1}ifelse 2 ge{1 dict dup/JobTimeout 4 -1 roll put setuserparams}{statusdict/setjobtimeout get exec}ifelse %%EndNonPPDFeature }featurecleanup featurebegin{ %%BeginNonPPDFeature: WaitTimeout 300 300 /languagelevel where{pop languagelevel}{1}ifelse 2 ge{1 dict dup/WaitTimeout 4 -1 roll put setuserparams}{statusdict/waittimeout 3 -1 roll put}ifelse %%EndNonPPDFeature }featurecleanup featurebegin{ %%BeginFeature: *PageSize Letter <> setpagedevice %%EndFeature }featurecleanup featurebegin{ %%BeginFeature: *Resolution 300dpi %%EndFeature }featurecleanup 1 setlinecap 1 setlinejoin /mysetup [ 72 300 V 0 0 -72 300 V 18 784.00067 ] def %%EndSetup userdict begin /ehsave save def end %%Page: 1 1 %%PageBoundingBox: 18 8 593 784 %%EndPageComments %%BeginPageSetup /DeviceRGB dup setcolorspace /colspABC exch def mysetup concat colspRefresh %%EndPageSetup Pscript_WinNT_Incr begin %%BeginResource: file Pscript_Win_GdiObject 5.0 0 /SavedCTM null d/CTMsave{/SavedCTM SavedCTM currentmatrix d}b/CTMrestore {SavedCTM setmatrix}b/mp null d/ADO_mxRot null d/GDIHMatrix null d /GDIHPatternDict 22 dict d GDIHPatternDict `/PatternType 1 d/PaintType 2 d/Reps L2?{1}{5}? d/XStep 8 Reps mul d/YStep XStep d/BBox[0 0 XStep YStep]d/TilingType 1 d/PaintProc{` 1 Lw[]0 sd PaintData , exec E}b/FGnd null d/BGnd null d /HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b/HS_BDiagonal {biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep gt{XStep}{YStep}? d/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b /vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag{Reps{0 0 M MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 +}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E/makehatch{4 -2 $/yOrg ~ d /xOrg ~ d GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix GDIHPatternDict matrix xOrg yOrg + mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0 /HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal makehatch}b/h3{/h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5 /HS_DiagCross makehatch}b/GDIBWPatternMx null d/pfprep{save 8 1 $ /PatternOfTheDay 8 1 $ GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d/yExt ~ d/Width ~ d/BGnd ~ d/FGnd ~ d/Height yExt RepsV mul d/mx[Width 0 0 Height 0 0]d E build_pattern ~ !}b/pfbf{/fEOFill ~ d pfprep hbf fEOFill{O}{L}? restore}b /GraphInit{GDIHMatrix null eq{/SavedCTM matrix d : ADO_mxRot concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ nonzero_dsnap YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly d ; : 0.24 -0.24 +S GDIBWPatternDict ` Width Height E nonzero_dsnap +S/GDIBWPatternMx matrix currentmatrix readonly d ; ;}if}b %%EndResource %%BeginResource: file Pscript_Win_GdiObject_L2 5.0 0 /GDIBWPatternDict 25 dict @ `/PatternType 1 d/PaintType 1 d/RepsV 1 d/RepsH 1 d /BBox[0 0 RepsH 1]d/TilingType 1 d/XStep 1 d/YStep 1 d/Height 8 RepsV mul d /Width 8 d/mx[Width 0 0 Height neg 0 Height]d/FGnd null d/BGnd null d /SetBGndFGnd{BGnd null ne{BGnd aload ! scol BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if FGnd null ne{FGnd aload ! scol}if}b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx PaintData imagemask Width 0 +}repeat E}b E d/mp/makepattern , d /build_pattern{CTMsave GDIBWPatternMx setmatrix/nupangle where{! nupangle -90 eq{nupangle R}if}if GDIBWPatternDict @ ` Width Height ne{Width Height gt{Width Height V 1}{1 Height Width V}? +S}if xOrg yOrg E matrix + mp CTMrestore}b/hbf {setpattern}b/hf{:/fEOFill ~ d ~ ! setpattern fEOFill{O}{L}? ;}b/pbf{: ! /fEOFill ~ d GDIBWPatternDict `/yOrg ~ d/xOrg ~ d/PaintData ~ d/OutputBPP ~ d /Height ~ d/Width ~ d/PaintType 1 d/PatternType 1 d/TilingType 1 d/BBox[0 0 Width Height]d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d 20 dict @ ` /ImageType 1 d/Width Width d/Height Height d/ImageMatrix[1 0 0 1 0 0]d /BitsPerComponent 8 d OutputBPP 24 eq{/Decode[0 1 0 1 0 1]d}{OutputBPP 8 eq{ /Decode[0 1]d}{/Decode[0 1 0 1 0 1 0 1]d}?}?/DataSource{PaintData}d E/ImageDict ~ d/PaintProc{` ImageDict image E}b & mx makepattern setpattern E fEOFill{O}{L} ? ;}b/mask_pbf{:/fEOFill ~ d 20 dict `/yOrg ~ d/xOrg ~ d/PaintData ~ d/Height ~ d/Width ~ d/PatternType 1 d/PaintType 2 d/TilingType 1 d/BBox[0 0 Width Height] d/XStep Width d/YStep Height d/mx xOrg yOrg matrix + d/PaintProc{` Width Height T 1 1 dtransform abs ~ abs ~ 0 0 3 -1 $ 0 0 6 array astore{PaintData}imagemask E}b & mx makepattern setpattern E fEOFill{O}{L}? ;}b %%EndResource end reinitialize /DeviceGray dup setcolorspace /colspABC exch def 0 0 scol N 0 0 M 0 0 I K 30000 VM? Pscript_WinNT_Incr begin %%BeginResource: file Pscript_WinNT_Compat 5.0 0 userdict/Pscript_WinNT_Compat 19 dict dup begin/bd{bind def}bind def/ld{load def}bd/$x matrix def/ANSIVec[16#0/grave 16#1/acute 16#2/circumflex 16#3/tilde 16#4/macron 16#5/breve 16#6/dotaccent 16#7/dieresis 16#8/ring 16#9/cedilla 16#A /hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle 16#60 /grave 16#7C/bar 16#82/quotesinglbase 16#83/florin 16#84/quotedblbase 16#85 /ellipsis 16#86/dagger 16#87/daggerdbl 16#88/circumflex 16#89/perthousand 16#8A /Scaron 16#8B/guilsinglleft 16#8C/OE 16#91/quoteleft 16#92/quoteright 16#93 /quotedblleft 16#94/quotedblright 16#95/bullet 16#96/endash 16#97/emdash 16#98 /tilde 16#99/trademark 16#9A/scaron 16#9B/guilsinglright 16#9C/oe 16#9F /Ydieresis 16#A0/space 16#A1/exclamdown 16#A4/currency 16#A5/yen 16#A6 /brokenbar 16#A7/section 16#A8/dieresis 16#A9/copyright 16#AA/ordfeminine 16#AB /guillemotleft 16#AC/logicalnot 16#AD/hyphen 16#AE/registered 16#AF/macron 16#B0/degree 16#B1/plusminus 16#B2/twosuperior 16#B3/threesuperior 16#B4/acute 16#B5/mu 16#B6/paragraph 16#B7/periodcentered 16#B8/cedilla 16#B9/onesuperior 16#BA/ordmasculine 16#BB/guillemotright 16#BC/onequarter 16#BD/onehalf 16#BE /threequarters 16#BF/questiondown 16#C0/Agrave 16#C1/Aacute 16#C2/Acircumflex 16#C3/Atilde 16#C4/Adieresis 16#C5/Aring 16#C6/AE 16#C7/Ccedilla 16#C8/Egrave 16#C9/Eacute 16#CA/Ecircumflex 16#CB/Edieresis 16#CC/Igrave 16#CD/Iacute 16#CE /Icircumflex 16#CF/Idieresis 16#D0/Eth 16#D1/Ntilde 16#D2/Ograve 16#D3/Oacute 16#D4/Ocircumflex 16#D5/Otilde 16#D6/Odieresis 16#D7/multiply 16#D8/Oslash 16#D9/Ugrave 16#DA/Uacute 16#DB/Ucircumflex 16#DC/Udieresis 16#DD/Yacute 16#DE /Thorn 16#DF/germandbls 16#E0/agrave 16#E1/aacute 16#E2/acircumflex 16#E3 /atilde 16#E4/adieresis 16#E5/aring 16#E6/ae 16#E7/ccedilla 16#E8/egrave 16#E9 /eacute 16#EA/ecircumflex 16#EB/edieresis 16#EC/igrave 16#ED/iacute 16#EE /icircumflex 16#EF/idieresis 16#F0/eth 16#F1/ntilde 16#F2/ograve 16#F3/oacute 16#F4/ocircumflex 16#F5/otilde 16#F6/odieresis 16#F7/divide 16#F8/oslash 16#F9 /ugrave 16#FA/uacute 16#FB/ucircumflex 16#FC/udieresis 16#FD/yacute 16#FE/thorn 16#FF/ydieresis]def currentdict{dup type/operatortype eq{[exch]cvx def}{pop pop}ifelse}forall/initialize{currentdict exch begin begin}bind def/terminate{ /@FL where not{pop end end}{pop}ifelse}bind def/suspend/terminate load def /resume/initialize load def/RS{/pagesave where{pop pagesave restore}{$x matrix invertmatrix concat}ifelse}def/SS{/pagesave save def}def/CB{pop pop pop pop}def /B{pop pop pop pop}def/:/gsave load def/;/grestore load def/N/newpath load def end put %%EndResource end reinitialize Pscript_WinNT_Compat begin /$x mysetup def end Pscript_WinNT_Incr dup /suspend get exec Pscript_WinNT_Compat dup /initialize get exec %%BeginDocument: Pscript_Win_PassThrough /dvistate save def count array astore /dvistack exch def countdictstack /dvidictcount exch def count /dvicount exch def userdict begin /showpage{}def/erasepage{}def/copypage{}def /initgraphics{}def/initmatrix{}def/setpagedevice{pop}def /letter{}def/legal{}def/a4{}def/b5{}def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash newpath 148 390 translate 2195 148 sub 578 0 sub div 121 390 sub 76 0 sub div scale %%BeginDocument: omake.eps %!PS-Adobe-3.1 EPSF-3.0 %%Title: omake.eps %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %AI9_PrintingDataBegin %%For: Jason Hickey %%CreationDate: 9/20/2004 %%CropBox: 0.000000 0.000000 577.359375 75.553711 %%BoundingBox: 0 0 578 76 %%HiResBoundingBox: 0.000000 0.000000 577.359375 75.553711 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_CoolType_Core 1.1 0 %%+ procset Adobe_AGM_Core 2.0 0 %%DocumentFonts: %%DocumentSuppliedFonts: %%PageOrder: Ascend %%DocumentProcessColors: Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %%EndComments %%BeginDefaults %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-1999 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 233 dict dup begin put /nd{ null def }bind def /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_src256 256 string def /AGMCORE_dst64 64 string def /AGMCORE_srcLen nd /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_imagestring0 nd /AGMCORE_imagestring1 nd /AGMCORE_imagestring2 nd /AGMCORE_imagestring3 nd /AGMCORE_imagestring4 nd /AGMCORE_imagestring5 nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_mbuf () def /AGMCORE_ybuf () def /AGMCORE_kbuf () def /AGMCORE_gbuf () def /AGMCORE_bbuf () def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_arg1 nd /AGMCORE_arg2 nd /AGMCORE_&setgray nd /AGMCORE_&image nd /AGMCORE_&colorimage nd /AGMCORE_&imagemask nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&&setcolorspace nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_in_rip_sep nd /AGMCORE_host_sep nd /AGMCORE_will_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ccimage_exists nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSA_cache 0 dict def /AGMCORE_CSD_cache 0 dict def /AGMCORE_pattern_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_ndx nd /AGMCORE_err_strings nd /AGMCORE_cur_err nd /AGMCORE_ovp nd /AGMCORE_CRD_cache where{ pop }{ /AGMCORE_CRD_cache 0 dict def }ifelse /bdf { bind def } bind def /xdf { exch def } def /ldf { load def } def /ddf { put } def /xddf { 3 -1 roll put } def /xpt { exch put } def /bdict { mark } def /edict { counttomark 2 idiv dup dict begin {def} repeat pop currentdict end }def /ps_level /languagelevel where{ pop languagelevel }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /ndf { 1 index where{ pop pop pop }{ dup xcheck {bind}if def }ifelse } def /skip_image { has_color ne{ dup 256 idiv {currentfile AGMCORE_str256 readstring pop pop}repeat currentfile AGMCORE_str256 0 4 -1 roll 256 mod getinterval readstring pop pop }{ pop }ifelse } def /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx } def /colorbuf { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /makereadonlyarray { /packedarray where {pop packedarray} {array astore readonly} ifelse } def /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq { dup /HalftoneType get 1 eq { /SpotFunction get } { dup /HalftoneType get 2 eq { /GraySpotFunction get } { pop {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub} {dup mul exch dup mul add 1 exch sub}ifelse}bind } ifelse } ifelse } if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /stkpath_clp_npth { strokepath clip newpath } def /stk_n_clp_npth { gsave stroke grestore clip newpath } def /npth_clp { newpath clip } def /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust userdict begin /showpage {} def mark } def /graphic_cleanup { cleartomark end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def /AGMCORE_arg2 xdf /AGMCORE_arg1 xdf clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval dup (.) ne AGMCORE_arg1 0 lt and { pop } { stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show } ifelse 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { dup 94 eq { pop AGMCORE_arg1 0 ge { AGMCORE_arg1 AGMCORE_str256 cvs dup /AGMCORE_tmp exch length def AGMCORE_str256 exch 0 exch putinterval AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show } { /AGMCORE_arg1 0 def } ifelse 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def AGMCORE_arg1 0 ne { /AGMCORE_arg1 AGMCORE_arg2 def } if } { AGMCORE_str256 exch AGMCORE_tmp exch put /AGMCORE_tmp AGMCORE_tmp 1 add def }ifelse } ifelse } forall } bdf level2{ /AGMCORE_map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup /Cyan eq{ pop (_Cyan_) }{ dup /Magenta eq{ pop (_Magenta_) }{ dup /Yellow eq{ pop (_Yellow_) }{ dup /Black eq{ pop (_Black_) }{ dup / eq{ pop (Process) }if }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse }if }def }if /doc_setup{ Adobe_AGM_Core begin /AGMCORE_will_host_separate xdf /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not { errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and { $error /newerror false put AGMCORE_cur_err /AGMCORE_bad_environ eq { /AGMCORE_bad_environ AGMCORE_ps_level AGMCORE_ps_version } { AGMCORE_cur_err 0 0 } ifelse compose_error_msg } if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def /AGMCORE_&&setcolorspace /setcolorspace ldf }if /AGMCORE_&image systemdict/image get def /AGMCORE_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMCORE_&colorimage /colorimage ldf }if /AGMCORE_in_rip_sep level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse def level2 not{ /xput{ dup load dup length exch maxlength eq{ dup dup load dup length dup 0 eq {pop 1} if 2 mul dict copy def }if load begin def end }def }{ /xput{ load 3 1 roll put }def }ifelse /AGMCORE_gstate_known{ where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /AGMCORE_GSTATE AGMCORE_gstate_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 7 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core exch /AGMCORE_gstackptr exch put AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if Adobe_AGM_Core exch /AGMCORE_gstackptr exch put }def /grestoreall { AGMCORE_&grestoreall Adobe_AGM_Core /AGMCORE_gstackptr AGMCORE_gstacksaveptr put }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core begin /AGMCORE_gstackptr exch def /AGMCORE_gstacksaveptr AGMCORE_gstackptr def end AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput end }def /page_setup { Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /AGMCORE_ccimage_exists /customcolorimage where {pop true}{false} ifelse def /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and AGMCORE_producing_seps or }ifelse def AGMCORE_host_sep AGMCORE_will_host_separate not and { /AGMCORE_cur_err /AGMCORE_color_space_onhost_seps def AGMCORE_color_space_onhost_seps }if /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots }ifelse { /setcmykcolor[ {4 copy add add add 0 eq currentoverprint and{pop 0.0005}if}/exec cvx /setcmykcolor load dup type/operatortype ne{/exec cvx}if ]cvx def }if AGMCORE_host_sep{ /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall }def level2{ /mo /moveto ldf /ln /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def /invert_image_samples { Adobe_AGM_Core/AGMCORE_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def /get_gstate { AGMCORE_GSTATE begin /AGMCORE_GSTATE_ctm AGMCORE_tmpmatrix currentmatrix def /AGMCORE_GSTATE_clr_spc currentcolorspace def /AGMCORE_GSTATE_clr_indx 0 def /AGMCORE_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMCORE_GSTATE_clr_comps AGMCORE_GSTATE_clr_indx 3 -1 roll put /AGMCORE_GSTATE_clr_indx AGMCORE_GSTATE_clr_indx 1 add def} repeat pop /AGMCORE_GSTATE_fnt rootfont def /AGMCORE_GSTATE_lw currentlinewidth def /AGMCORE_GSTATE_lc currentlinecap def /AGMCORE_GSTATE_lj currentlinejoin def /AGMCORE_GSTATE_ml currentmiterlimit def currentdash /AGMCORE_GSTATE_do xdf /AGMCORE_GSTATE_da xdf /AGMCORE_GSTATE_sa currentstrokeadjust def /AGMCORE_GSTATE_clr_rnd currentcolorrendering def /AGMCORE_GSTATE_op currentoverprint def /AGMCORE_GSTATE_bg currentblackgeneration cvlit def /AGMCORE_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMCORE_GSTATE_gy_xfer xdf cvlit /AGMCORE_GSTATE_b_xfer xdf cvlit /AGMCORE_GSTATE_g_xfer xdf cvlit /AGMCORE_GSTATE_r_xfer xdf /AGMCORE_GSTATE_ht currenthalftone def /AGMCORE_GSTATE_flt currentflat def end }ndf /set_gstate { AGMCORE_GSTATE begin AGMCORE_GSTATE_ctm setmatrix AGMCORE_GSTATE_clr_spc setcolorspace AGMCORE_GSTATE_clr_indx {AGMCORE_GSTATE_clr_comps AGMCORE_GSTATE_clr_indx 1 sub get /AGMCORE_GSTATE_clr_indx AGMCORE_GSTATE_clr_indx 1 sub def} repeat setcolor AGMCORE_GSTATE_fnt setfont AGMCORE_GSTATE_lw setlinewidth AGMCORE_GSTATE_lc setlinecap AGMCORE_GSTATE_lj setlinejoin AGMCORE_GSTATE_ml setmiterlimit AGMCORE_GSTATE_da AGMCORE_GSTATE_do setdash AGMCORE_GSTATE_sa setstrokeadjust AGMCORE_GSTATE_clr_rnd setcolorrendering AGMCORE_GSTATE_op setoverprint AGMCORE_GSTATE_bg cvx setblackgeneration AGMCORE_GSTATE_ucr cvx setundercolorremoval AGMCORE_GSTATE_r_xfer cvx AGMCORE_GSTATE_g_xfer cvx AGMCORE_GSTATE_b_xfer cvx AGMCORE_GSTATE_gy_xfer cvx setcolortransfer AGMCORE_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMCORE_GSTATE_ht /HalftoneType get ne { mark AGMCORE_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMCORE_GSTATE_ht sethalftone } ifelse AGMCORE_GSTATE_flt setflat end }ndf AGMCORE_producing_seps not{ /setcolorspace where{ /Adobe_AGM_Core_Id known not }{ true }ifelse { /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or{ dup 0 get dup /Separation eq{ pop [ exch {} forall ] dup dup 1 get AGMCORE_map_reserved_ink_name 1 exch put }{ /DeviceN eq { [ exch {} forall ] dup dup 1 get [ exch {AGMCORE_map_reserved_ink_name} forall ] 1 exch put }if }ifelse }if AGMCORE_&&setcolorspace }def }if }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /ln{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /currentScreenFreq{ currentscreen pop pop }def /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /n_color_components { dup type /arraytype eq{ 0 get }if dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse } def /setcolor_devicecolor { dup type /arraytype eq{ 0 get }if dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /op /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /spclp /stkpath_clp_npth ldf /f /fill ldf /ef /eofill ldf /s /stroke ldf /sclp /stk_n_clp_npth ldf /nclp /npth_clp ldf /img /imageormask ldf /sepimg /sep_imageormask ldf /idximg /indexed_imageormask ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall }def /page_trailer { end }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/Adobe_AGM_Core 2 copy known{ undef }{ pop pop }ifelse }if }if }def /doc_trailer{ }def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { Adobe_AGM_Core/AGMCORE_name xddf false currentpagedevice/SeparationColorNames get{ AGMCORE_name eq or }forall }def /current_ink { dup length 0 eq{ pop true }{ Adobe_AGM_Core/ink_result false put { dup /ProcessCyan eq{ AGMCORE_cyan_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessMagenta eq{ AGMCORE_magenta_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessYellow eq{ AGMCORE_yellow_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessBlack eq{ AGMCORE_black_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /sep_colorspace_dict AGMCORE_gget dup null eq{ pop false ink_result or Adobe_AGM_Core/ink_result xddf }{ /Name get eq{ 1 setsepcolor currentgray 1 ne ink_result or Adobe_AGM_Core/ink_result xddf }{ false ink_result or Adobe_AGM_Core/ink_result xddf }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse pop } forall ink_result }ifelse }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA map_csa setcolorspace_opt set_crd end } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /sep_colorspace_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { dup /sep_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def Adobe_AGM_Core/AGMCORE_sep_special Name dup () eq exch (All) eq or ddf AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep }{ Name inRip_spot_has_ink not }ifelse { /pop cvx 1 }if /setcustomcolor cvx ] cvx bdf }{ /TintProc /setcolor ldf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd 1 setsepcolor end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse end }def /setindexedcolor { AGMCORE_host_sep{ /indexed_colorspace_dict AGMCORE_gget/Lookup get 4 3 -1 roll map_index setcmykcolor }{ setcolor }ifelse } def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMCORE_&imagemask }{ AGMCORE_&image }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMCORE_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMCORE_&image }ifelse }ifelse cleartomark restore end }def /overprint_plate { currentoverprint{ 0 get dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false }ifelse }def /rdline { currentfile AGMCORE_str256 readline pop } def /rdcmntline { currentfile AGMCORE_str256 readline pop (%) anchorsearch {pop} if } def /filter_cmyk { dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch { AGMCORE_src256 readstring pop dup length /AGMCORE_srcLen exch def /AGMCORE_ndx 0 def AGMCORE_plate_ndx 4 AGMCORE_srcLen 1 sub{ 1 index exch get AGMCORE_dst64 AGMCORE_ndx 3 -1 roll put /AGMCORE_ndx AGMCORE_ndx 1 add def }for pop AGMCORE_dst64 0 AGMCORE_ndx getinterval } bind /exec cvx ] cvx } def /imageormask { begin SkipImageProc not{ save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq{ imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if image }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMCORE_host_sep{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray knockout_image_samples currentdict imageormask_sys }{ nulldevice currentdict imageormask_sys }ifelse }ifelse }{ imagemask }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ MultipleDataSources{ 4 {pop} repeat /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def AGMCORE_is_cmyk_sep{ currentoverprint InksUsed current_ink not and{ nulldevice }{ invert_image_samples }ifelse }{ currentoverprint not{ knockout_image_samples }{ nulldevice }ifelse }ifelse 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll setcolortransfer MultipleDataSources NComponents AGMCORE_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not{ currentoverprint not{ knockout_image_samples }{ nulldevice }ifelse }if }ifelse 1 AGMCORE_&setgray currentdict imageormask_sys }{ image }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentoverprint InksUsed current_ink not and{ }{ currentcolorspace overprint_plate not{ knockout_unitsq }if }ifelse }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }if end }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Core begin /AGMCORE_mbuf 0 string def /AGMCORE_ybuf 0 string def /AGMCORE_kbuf 0 string def { colorbuf dup length AGMCORE_mbuf length ne { dup length dup dup /AGMCORE_mbuf exch string def /AGMCORE_ybuf exch string def /AGMCORE_kbuf exch string def } if dup AGMCORE_mbuf copy AGMCORE_ybuf copy AGMCORE_kbuf copy pop } addprocs {AGMCORE_mbuf}{AGMCORE_ybuf}{AGMCORE_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Core/AGMCORE_k xddf Adobe_AGM_Core/AGMCORE_y xddf Adobe_AGM_Core/AGMCORE_m xddf Adobe_AGM_Core/AGMCORE_c xddf AGMCORE_y 0.0 eq AGMCORE_m 0.0 eq and AGMCORE_c 0.0 eq and{ {AGMCORE_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMCORE_k mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_y mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_m mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Core/AGMCORE_k xddf Adobe_AGM_Core/AGMCORE_y xddf Adobe_AGM_Core/AGMCORE_m xddf Adobe_AGM_Core/AGMCORE_c xddf {AGMCORE_c mul 1 exch sub} {AGMCORE_m mul 1 exch sub} {AGMCORE_y mul 1 exch sub} {AGMCORE_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def begin SkipImageProc not{ save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMCORE_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentoverprint InksUsed current_ink not and{ }{ currentdict/ImageMatrix get concat knockout_unitsq }ifelse }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or{ knockout_image_samples }{ nulldevice }ifelse currentdict imageormask_sys }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }if end end }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /read_image_file { AGMCORE_imagefile 0 setfileposition dup /DataSource {AGMCORE_imagefile AGMCORE_imbuf readstring pop} put exch load exec }def /write_image_file { { (AGMCORE_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Core/AGMCORE_imagefile xddf Adobe_AGM_Core/AGMCORE_imbuf Width BitsPerComponent mul 7 add 8 idiv string ddf 1 1 Height { pop DataSource dup type /filetype eq{ AGMCORE_imbuf readstring pop }{ exec } ifelse AGMCORE_imagefile exch writestring }for true }ifelse }def /imageormask_l2_overprint { write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if AGMCORE_imagefile closefile (AGMCORE_imagefile) deletefile }{ currentdict imageormask }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget /CSA get map_csa overprint_plate not{ knockout_unitsq }if }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_image_samples imageormask_sys }{ nulldevice currentdict imageormask_sys }ifelse }ifelse }ifelse }{ level2{ imageormask }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin currentcolorspace dup 1 /DeviceGray put dup 3 [ currentcolorspace 3 get { exch 4 mul 4 getinterval {} forall AGMCORE_get_ink_data 255 div 1 exch sub } /exec cvx ] cvx put setcolorspace currentdict Operator /imagemask eq{ AGMCORE_&imagemask }{ AGMCORE_&image }ifelse end end }def /add_csa { Adobe_AGM_Core begin /AGMCORE_CSA_cache xput end }def /map_csa { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSA_cache get exch get }if }def /add_csd { Adobe_AGM_Core begin /AGMCORE_CSD_cache xput end }def /get_csd { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSD_cache get exch get }if }def /add_pattern { Adobe_AGM_Core begin /AGMCORE_pattern_cache xput end }def /get_pattern { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_pattern_cache get exch get }if }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ false op [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/Intent known{ currentcolorrendering/Intent get }{ null }ifelse Intent ne{ false Intent AGMCORE_CRD_cache { exch pop begin dup Intent eq{ currentdict setcolorrendering_opt end exch pop true exch exit }if end } forall pop not{ systemdict /findcolorrendering known{ Intent findcolorrendering pop /ColorRendering findresource dup length dict copy setcolorrendering_opt }if }if }if } def /add_crd { AGMCORE_CRD_cache 3 1 roll put }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/CRD known{ AGMCORE_CRD_cache CRD get dup null ne{ setcolorrendering_opt }{ pop }ifelse }{ currentdict/Intent known{ updatecolorrendering }if }ifelse }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def /NComponents 1 def /ImageType 1 def /Decode [0 1 def] /SkipImageProc {false} def currentdict end }if dup begin /HostSepColorImage false def currentdict/Decode known not{ /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] def }if currentdict/Operator known not{ /Operator /image def }if end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cpaint_gcomp { AGM_preserve_spots{ gsave nulldevice }if }def /cpaint_gsep { AGM_preserve_spots{ grestore currentoverprint Adobe_AGM_Core/AGMCORE_ovp xddf }{ gsave nulldevice }ifelse }def /cpaint_gend { AGM_preserve_spots{ Adobe_AGM_Core/AGMCORE_ovp get setoverprint }{ grestore }ifelse newpath }def /AGMCORE_ctm_stack bdict /push_ctm { stack length size le{ stack dup length 2 mul array dup /stack exch def copy pop }if stack size 3 -1 roll put /size size 1 add def } /pop_ctm { /size size 1 sub def size 0 lt{ /size 0 def }if stack size get } /stack 1 array /size 0 edict def /save_ctm { matrix currentmatrix AGMCORE_ctm_stack begin push_ctm end }def /restore_ctm { AGMCORE_ctm_stack begin pop_ctm end setmatrix }def /path_rez { dup 0 ne{ AGMCORE_deviceDPI exch div dup 1 lt{ pop 1 }if setflat }{ pop }ifelse }def end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 1.1 0 %%Copyright: Copyright 1997-1999 Adobe Systems Incorporated. All Rights Reserved. %%Version: 1.1 0 userdict/Adobe_CoolType_Core 40 dict dup begin put/Level2? systemdict /languagelevel known dup{pop systemdict/languagelevel get 2 ge}if def Level2? not{/currentglobal false def/setglobal/pop load def/gcheck{pop false}bind def /currentpacking false def/setpacking/pop load def}if currentpacking true setpacking/bdf{bind def}bind def/ldf{load def}bind def/doc_setup{ Adobe_CoolType_Core begin/mov/moveto ldf/nfnt/newencodedfont ldf/mfnt/makefont ldf/sfnt/setfont ldf/ufnt/undefinefont ldf/chp/charpath ldf/awsh/awidthshow ldf/wsh/widthshow ldf/ash/ashow ldf/sh/show ldf end userdict /Adobe_CoolType_Data 2 dict dup begin/WidthShowArray 256 array def /GenFauxMMInst{}bind def end put}bind def/doc_trailer{currentdict Adobe_CoolType_Core eq{end}if Adobe_CoolType_Core/unload get exec systemdict /undef known{userdict/Adobe_CoolType_Data undef}if}bind def/page_setup{ Adobe_CoolType_Core begin}bind def/page_trailer{end}bind def/unload{systemdict /languagelevel known{systemdict/languagelevel get 2 ge{userdict /Adobe_CoolType_Core 2 copy known{undef}{pop pop}ifelse}if}if}bind def/ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}def/findfont dup systemdict begin userdict begin/globaldict where{/globaldict get begin}if dup where pop exch get/globaldict where{pop end}if end end def/systemfindfont /findfont load def/undefinefont{pop}ndf/copyfont{currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch{1 index/FID eq{pop pop}{def}ifelse}forall dup null eq{pop} {{def}forall}ifelse currentdict end exch setglobal}bdf/newencodedfont{findfont dup length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding exch def currentdict end definefont pop}bdf/scff{$SubstituteFont begin dup type /stringtype eq{dup length exch}{null}ifelse/$sname exch def/$slen exch def /$fontname 1 index dup type/stringtype eq{cvn}if def/$used false def end findfont $SubstituteFont begin $used{currentglobal exch dup gcheck setglobal null copyfont begin/FontName $fontname def/currentdistillerparams where{pop}{ /FontInfo currentdict/FontInfo known{FontInfo null copyfont}{2 dict}ifelse dup begin/ItalicAngle $italicangle def/FontMatrix FontMatrix[1 0 ItalicAngle dup sin exch cos div 1 0 0]matrix concatmatrix readonly end 4 2 roll def def} ifelse FontName currentdict end definefont exch setglobal}if/$sname null def /$slen 0 def end}bdf/ConcatStrings{dup 0 exch{length add}forall string exch 0 exch{3 copy putinterval length add}forall pop}bind def/BeginFauxMMFont{1 index findfont pop 2 array astore ConcatStrings 3 1 roll($)exch 3 array astore ConcatStrings exch findfont currentglobal exch dup gcheck setglobal null copyfont/tempfontname exch definefont pop exch 12 dict begin/FontName exch def /FontType 0 def/FMapType 6 def/FontMatrix matrix def/PaintType 0 def}bind def /EndFauxMMFont{currentdict end dup/FontName get exch definefont exch setglobal exch mfnt sfnt}bind def/GenFauxMMInst{Adobe_CoolType_Data/GenFauxMMInst get exec}bind def/DefFauxMMInst{Adobe_CoolType_Data exch/GenFauxMMInst exch bind put}bind def/WSALoop{4 copy 1 index add 1 sub 1 exch{3 copy put pop 1 add}for pop pop 3 2 roll add exch 256 add}bind def/BuildWidthShowArray{currentfont begin FontType 0 eq dup{pop FMapType 6 eq}if{SubsVector dup length 1 sub 1 exch getinterval}{()}ifelse end Adobe_CoolType_Data/WidthShowArray get 0 0 4 3 roll{WSALoop}forall 256 2 index sub WSALoop pop pop pop}bind def/wsa{ Adobe_CoolType_Data/WidthShowArray get}bind def/?set{$SubstituteFont begin /$used false def/$fontname 4 index def end 3 index findfont $SubstituteFont begin $used{false}{dup/FontName known{dup/FontName get $fontname eq 1 index /DistillerFauxFont known not and}{false}ifelse}ifelse exch pop end{exch pop exch pop exch 2 dict dup/Found 3 index put exch findfont exch}{exch exec exch findfont 2 dict dup/Downloaded 6 5 roll put}ifelse dup/FontName 4 index put copyfont definefont pop}bind def/?str1 256 string def/?str2 256 string def /?add{1 index type/integertype eq{exch true 4 2}{false 3 1}ifelse roll 1 index findfont/Downloaded known{exec exch{exch ?str2 cvs exch findfont/Downloaded get 1 dict begin/Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index(*)putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index(+)putinterval 2 dict dup/FontName ?str1 0 6 index getinterval cvn put dup/Downloaded Downloaded put end copyfont dup/FontName get exch definefont pop pop pop}{pop}ifelse}{pop exch{findfont dup/Found get dup length exch ?str1 cvs pop ?str1 1 index(+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch/FontName exch put copyfont dup/FontName get exch definefont pop}{pop} ifelse}ifelse}bind def/?sh{currentfont/Downloaded known{exch}if pop}bind def /?chp{currentfont/Downloaded known{pop}{false chp}ifelse}bind def/?mv{ currentfont/Downloaded known{moveto pop pop}{pop pop moveto}ifelse}bind def setpacking end userdict/$SubstituteFont 20 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known{get}{pop pop{pop/Courier}bind} ifelse def/currentdistillerparams where dup{pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known{get/Error eq}{pop pop false}ifelse}if not{ countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin/$str 128 string def/$fontpat 128 string def/$slen 0 def/$sname null def /$match false def/$fontname null def/$used false def/$fontname null def /$italicangle 26.5 def/$findfontByEnum{dup/$fontname exch def $sname null eq{ $str cvs dup length $slen sub $slen getinterval}{pop $sname}ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval/$match false def mark{ $fontpat 0 $slen 7 add getinterval{/$match exch def exit}$str filenameforall} stopped cleartomark/$slen 0 def $match false ne{$match(fonts/)anchorsearch pop pop cvn}{/Courier}ifelse}bind def/$ROS 1 dict dup begin/Adobe 4 dict dup begin /Japan1[/Ryumin-Light/HeiseiMin-W3/GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def/Korea1[/HYSMyeongJo-Medium/HYGoThic-Medium] def/GB1[/STSong-Light/STHeiti-Regular]def/CNS1[/MKai-Medium/MHei-Medium]def end def end def/$cmapname null def/$buildfontname{length $str 1 index(-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn}bind def/$findfontByROS{/$fontname exch def $ROS Registry 2 copy known{get Ordering 2 copy known{get}{pop pop[]} ifelse}{pop pop[]}ifelse false exch{dup/CIDFont resourcestatus{pop pop save 1 index/CIDFont findresource dup/WidthsOnly known{dup/WidthsOnly get}{false} ifelse exch pop exch restore{pop}{exch pop true exit}ifelse}{pop}ifelse}forall {$str cvs $buildfontname}{false(*){save exch dup/CIDFont findresource dup /WidthsOnly known{dup/WidthsOnly get not}{true}ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and{exch restore exch pop true exit}{pop restore}ifelse}$str/CIDFont resourceforall{ $buildfontname}{$fontname $findfontByEnum}ifelse}ifelse}bind def end end currentdict/$error known currentdict/languagelevel known and dup{pop $error /SubstituteFont known}if dup{$error}{Adobe_CoolType_Core}ifelse begin{ /SubstituteFont/CMap/Category resourcestatus{pop pop{$SubstituteFont begin /$used true def dup length $slen gt $sname null ne or $slen 0 gt and{$sname null eq{dup $str cvs dup length $slen sub $slen getinterval cvn}{$sname}ifelse dup/CMap resourcestatus{pop pop dup/$cmapname exch def/CMap findresource /CIDSystemInfo get{def}forall $findfontByROS}{pop $findfontByEnum}ifelse}{ //SubstituteFont exec}ifelse/$slen 0 def end}}{{$SubstituteFont begin/$used true def dup length $slen gt $sname null ne or $slen 0 gt and{$findfontByEnum} {//SubstituteFont exec}ifelse end}}ifelse bind readonly def}{/findfont{ $SubstituteFont begin dup systemfindfont dup/FontName known{dup/FontName get 2 index ne}{true}ifelse dup{/$used true def}if{$slen 0 gt $sname null ne 3 index length $slen gt or and{pop dup $findfontByEnum findfont dup maxlength 1 add dict begin{1 index/FID eq{pop pop}{def}ifelse}forall currentdict end definefont}{exch pop}ifelse}{exch pop}ifelse end}bind def}ifelse end end}if end %%EndResource %%EndProlog %%BeginSetup Adobe_AGM_Core/AGMCORE_err_strings 3 dict dup begin /AGMCORE_bad_environ (Environment not satisfactory for this job, which requests at least PostScript Level ^ and at least PostScript version ^. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end put 2 2010 true Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec %%EndSetup %%Page: name:1 1 %%EndPageComments %%BeginPageSetup Adobe_AGM_Core/page_setup get exec Adobe_CoolType_Core/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf mark /0 [/DeviceGray] add_csa /CSA /0 /1 [/DeviceCMYK] add_csa /CSA /1 /2 [/DeviceRGB] add_csa /CSA /2 cleartomark 800 path_rez 1 -1 scale 0 -75.5537 translate gsave [1 0 0 1 0 0 ] concat gsave 0 0 mo 0 75.5537 ln 577.359 75.5537 ln 577.359 0 ln clp save_ctm restore_ctm false op 0 0 0 1 cmyk %ADOBeginSubsetFont: Myriad-BoldItalic Initial %!FontType1 16 dict begin /FontInfo 15 dict dup begin /Notice (Copyright (c) 1992, 1994 Adobe Systems Incorporated. All Rights Reserved.Myriad is a trademark of Adobe Systems Incorporated may be registered in certain jurisdictions.) def /version (001.000) def /FullName (Myriad Bold Italic) def /FamilyName (Myriad) def /Weight (Bold) def /ItalicAngle -11 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end def /FontName /Myriad-BoldItalic def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ] def /FontBBox { -95 -250 1225 852 } def /XUID [6 41990 ] def /StrokeWidth 0 def currentdict end currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3FFCA5020F48 69FCFE28B419AB05B54FAF315083D4CBAA039F6F2C78222B96DD9B7A2B2F6540 7F5FFD4B7AE09E3DF001E6A0F2542E98BD69945379CF84C778513B8588DAF05E 67085515BA36EA9B34646C07D9C61EECD29635C96DF5F1F26A0230A15283634F BA71ADA274F27504B683553F2DD088CDDE2EA465132F905B99F8D1C11C8851B6 609F206AEC988C888AD44C86CDB7DDB7E67FA4A6E40DC7C05D7C101DAE9FD0AC ADF6FB741A3D54B1442F27F850B87ADCED6DC9D4AEE70CE831E749EEE69CB73A EA8E974ED57E35AFABDC3439FFDB9A95CA80D95A6D8D1428F718831E92D6131D 1997C43F71A1BD983B26715ABA1CAB592746998C7BAB3CCF80D2DD0D4263A8BA 9AC2BF52C87B758AA8CDD24E2B71175BFD1902A80C2C99F90919CE8DEE7C895E 3B7185226126CD294BC556A1232ECA9F5FF7B8CAABE412FD207562AFEED7B1D5 B8977DD49020C3C79C468F322F682E8499FD65EC9BF68112EF408AF9E7DFE3F5 35721207058403C8FA350F051727230C6B74D4567099493E6576D5F612AA0C1C F3F90D7C0361831B74BF7E91050FCA572D1736C71E7C38610F22D1B3C8CE788F B05E0E92FF145C0F6D3F756DE6C31D51F8C57048A56E42F46CF7239D10ABE06A 845F52389BDA9795D76A413060304968875FA4A64D1F697EED37DAF8039F212E BEC34B6CE9038457D7E28AC4D882E10FAE59BB3DA9B9CBA1EE49FCBD18D48572 DA44980446FDCD8163A6ADA603C5866712A6D700AA820FB160DD6CC0BC7EACC0 439E7AAD5BCA1AFAA8EEFBCAEF0931537714EBAFD180DB32EA76ABB3BC411A9C A8D106441B07649B6D47046D752566AF411B85B1FCAD37FB770C10B5F3090AFA D039800C2AB3CBD8DA19B175148205C43B33EC4B05CB0943BD7202300B291CF9 6C2264B6F6516ADC3C1B4FE5768A37F872BC01068D8297C81AA0FBCB902E65B0 B994B9BBDB2C89A1D154C1335ADCDDB953C03A8464587B34AA705DD835694568 CADE9BAE6FCB1C99462577A15146FD4E9041930B3BFEBE1F1608AEEE98B74028 68C81E2D376DF7437C9910CF9ACFF916F5207A0A1310645DDFD98C0ED3601BFB 8F70D15D7FB44F4B519D2BB0CA5E9DAF5AB12C04CDD48C8D3029BCEFEA5812D4 6FFCE0A13BBC2528C9B8407E9F818955C8A5313BE958F63EF4DAD785A6616384 9A7D020B4FE972E802A6DCCEF19BDC7846892D7F0C7FBFF197011FFB739AE22F 91402682BC01161682266AB37C35CBB09DADA3B01DF7C0D5C4FF0E9A7E78D508 5C0155C24A976A9B2EB90D168E09404F7E23F656AC91BCD90F596CD9121469F9 547F96467BFAAF334680F1DE3074D83859AEB047D6A05009C69F5DD09B9AA021 7334D57763217883307F7D1E9596FE3D43290573FAD87D8B56CD989A94080C66 CBA94F9467BD89A3F992143CE920878A3D4BCDC6F77EC7804997047E7B0C1C80 0DEAA3A7F26E9F40E2D9033509C6CA970CA0B1BCC2FB8AB48BE9FEFDDDF50C01 15EA4890B78B8F2DF586943A73A8093FF53C8108F9E34D15E79F8F89E20F8B8E B37B89D6DE1BC6295EAB9A6860725A2AC1083E3322D662A612AE32300B359099 31B926AD26EBF2221ACEDE72564C20B5790D655E4AA270DD6069227CC35EF690 8F24BB271E9D140D6FC8D14E541FDA2C15B0C1DB492BFC59E34B31F2EA80DF28 E35FF2288DC84F93DF60E872F8098FF9A0433054AFB861D072F7DAEA373E885B BCD23BEA2ED84AC02E7CEDC4AE11B95C446BBA0727FDD137442B80374B8E6B8F A53519444A5E8113DA2E70F5AC55418FF24DE8CF956176B1AD07108E54C066EE DBCF88ADA16E2E2C095F8E0F53D7461C2AB867C826535AD8866932664DA86B76 30A72B2B2E50E2A4D8041A238EAA002A497DA83D9E5EB8ED74A69CD7CFCCC87E 36E9DAC6725F190139AEB46EA280D9B6624B25D6E6A497630CC9AC6F0244A502 6F23E8A22A792593E3FF296E8F20ED1B2BDB53A7D2CC2225D8A44AD300A41276 8947386DA54B55146F9693DFF4C3F783C274D1974AE06D3B5F3468388EA65C9B EB1E47A663CA017E2E4A4E91D4E986F2576F40212BEBE1D8659DAEB36FD8DD55 8725D693CFCFE5D642812B80726A382ED800E480DF10D6C8B8B6019AA676C824 384435FDF9716638BCC393EBFC100334BB670FB0D31DC5E91C68D467F825B339 419CE70F00A3F43D8D9B8FB99CCB5CC2D69DC783057057036EF1D53FF353D66C 923F86D4D7736CDE2FA8BABA4EC6850D6016EAD8CE6AB782D1A3C77B27AC5E17 31DE412320711561B8BB18EA341F922C9E288406E37F0B50D5029540CBA4CCBF 559301CEAE82E7D897C1D4E00102B1C5CC804AD24018FDAA0273A708A7800729 E5ADB799B6D37DE82501E56C33451CD2152BD4505A32DF365556571ED4D11909 436A557B54C7A79199A4C076DF0B375651710079199F58C504FF0A6B0D52F08A 1C5C725B1D4A1FEC9DCC2527EA7D2A1C6311D441DAE520EAF256856BEEB026DF 7E08CE18E469FC0BE840C49BAB2D6CC4A736907BCA9DF079EB7A4418F8DC1709 518FCCAC7D81CF284F000B6804611700117615E597DF70E401DCE620575B910F 958CF01D4AC4212C64DD7CB50A35C0FB7E57B5FCB93B8B4D02F2F76706126377 D90803FBBA732C5629CDE228E724E19BBAED79CC7BE058303892FF25CCC755B2 95F722DA7A1D7CD92D32CFEC0450C9AAACE3B6E5D5EEC48E3A6C9EF87D022E59 525FC7C2FDD52D30DACD450EBBBAEFC4E498B2B595BE26EC663BDF468C4A129A C37B58D75B1561700BABB34FF0E4D84634EAAB312882B01A9B0BA0085FA2CFD5 85DCE72091D48C744A0F23D7DC9E82125382A244C7A50498555B46 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark /Myriad-BoldItalic findfont /Encoding get dup 77 /M put dup 79 /O put dup 97 /a put dup 101 /e put dup 107 /k put pop %ADOEndSubsetFont /Myriad-BoldItalic*1 [ 77{/.notdef}repeat /M /.notdef /O 17{/.notdef}repeat /a 3{/.notdef}repeat /e 5{/.notdef}repeat /k 148{/.notdef}repeat ] /Myriad-BoldItalic nfnt /Myriad-BoldItalic*1 findfont [41.7899 -4.20808 -4.20807 -41.7899 0 0 ]mfnt sfnt BuildWidthShowArray 35.7437 65.1064 mov 0.0416718 -0.00465393 wsa 77 get (OMak) wsh 143.853 54.2194 mov (e) sh 0.6 lw 0 lc 0 lj 4 ml [] 0 dsh true sadj 21.3438 72.5469 mo 21.3438 14.9473 ln s 28.5439 14.9473 mo 28.5439 72.5469 ln s 21.3438 22.7476 mo 28.5439 29.9478 ln s 21.3438 15.1479 mo 28.5439 22.3477 ln s 21.3438 29.9478 mo 28.5439 37.1475 ln s 21.3438 36.7476 mo 28.5439 43.9478 ln s 21.3438 43.9478 mo 28.5439 51.1479 ln s 21.3438 51.5415 mo 28.5439 58.7417 ln s 21.3438 58.7417 mo 28.5439 65.9414 ln s 21.3438 65.5415 mo 28.5439 72.7417 ln s 28.5439 22.7476 mo 21.3438 29.9478 ln s 28.5439 15.1479 mo 21.3438 22.3477 ln s 28.5439 29.9478 mo 21.3438 37.1475 ln s 28.5439 36.7476 mo 21.3438 43.9478 ln s 28.5439 43.9478 mo 21.3438 51.1479 ln s 28.5439 51.5415 mo 21.3438 58.7417 ln s 28.5439 58.7417 mo 21.3438 65.9414 ln s 28.5439 65.5415 mo 21.3438 72.7417 ln s 57.6001 14.9639 mo 0 14.9639 ln s 28.3999 14.9639 mo 35.6001 10.5581 ln 58.2437 10.5581 ln s 35.9937 14.9639 mo 43.1938 10.5581 ln s 43.1938 14.9639 mo 50.3936 10.5581 ln s 49.9937 14.9639 mo 57.1938 10.5581 ln s 35.9937 10.5581 mo 43.1938 14.9639 ln s 43.1938 10.5581 mo 50.3936 14.9639 ln s 49.9937 10.5581 mo 57.1938 14.9639 ln s 1 lc 115.24 14.9639 mo 58 14.9639 ln s 50.2939 10.5093 mo 107.894 10.5093 ln s 0 lc 65.2002 14.9639 mo 72.3999 10.5581 ln s 57.6001 14.9639 mo 64.8003 10.5581 ln s 72.3999 14.9639 mo 79.6001 10.5581 ln s 79.2002 14.9639 mo 86.4004 10.5581 ln s 86.4004 14.9639 mo 93.6001 10.5581 ln s 93.9941 14.9639 mo 101.194 10.5581 ln s 65.2002 10.5581 mo 72.3999 14.9639 ln s 57.6001 10.5581 mo 64.8003 14.9639 ln s 72.3999 10.5581 mo 79.6001 14.9639 ln s 79.2002 10.5581 mo 86.4004 14.9639 ln s 86.4004 10.5581 mo 93.6001 14.9639 ln s 93.9941 10.5581 mo 101.194 14.9639 ln s 1 lc 158.183 14.9473 mo 100.944 14.9473 ln s 93.2378 10.4927 mo 150.838 10.4927 ln s 0 lc 108.144 14.9473 mo 115.343 10.541 ln s 100.544 14.9473 mo 107.744 10.541 ln s 115.343 14.9473 mo 122.543 10.541 ln s 122.144 14.9473 mo 129.344 10.541 ln s 129.344 14.9473 mo 136.544 10.541 ln s 136.938 14.9473 mo 144.138 10.541 ln s 1 lc 144.138 14.9473 mo 150.737 10.541 ln s 0 lc 108.144 10.541 mo 115.343 14.9473 ln s 100.544 10.541 mo 107.744 14.9473 ln s 115.343 10.541 mo 122.543 14.9473 ln s 122.144 10.541 mo 129.344 14.9473 ln s 129.344 10.541 mo 136.544 14.9473 ln s 136.938 10.541 mo 144.138 14.9473 ln s 144.138 10.541 mo 151.337 14.9473 ln s 1 lc 150.938 10.541 mo 158.137 14.9473 ln s 21.3599 22.4043 mo 21.2397 14.9639 ln 24.6646 13.0273 ln 28.4399 14.9639 ln 28.4399 22.1641 ln 24.7847 18.6743 ln 21.3599 22.4043 ln f 0 lc 21.2397 14.9639 mo 24.8374 0.306641 ln 28.4399 14.9639 ln s 23.3438 6.70654 mo 27.5439 11.4463 ln s 22.1685 11.3101 mo 26.3438 6.60693 ln s 27.9937 12.9722 mo 0.666504 13.1221 ln 0.0214844 14.6851 ln 28.144 14.9639 ln 27.9937 12.9722 ln f 1.74414 13.9067 mo 24.8374 0.306641 ln 150.489 10.4238 ln s 5.62158 18.2822 mo 5.62158 18.6123 5.35156 18.8823 5.02148 18.8823 cv 1.92725 18.8823 ln 1.59717 18.8823 1.32715 18.6123 1.32715 18.2822 cv 1.32715 15.0884 ln 1.32715 14.7583 1.59717 14.4883 1.92725 14.4883 cv 5.02148 14.4883 ln 5.35156 14.4883 5.62158 14.7583 5.62158 15.0884 cv 5.62158 18.2822 ln f 154.583 34.6426 mo 157.897 14.9473 ln s save_ctm restore_ctm %ADOBeginSubsetFont: Myriad-BoldItalic AddGlyphs currentfile eexec A0B00ED553D63FAFE824A74A3F3FA84B66B7248DF34D3C 9010736788964A42E74DD8B04832519298987A1CD0A52704C2D003878381FFAB C4066991771726937D4EBE7946F59EA60ED62E7FD3DCFD78AA1FCEFA75A40901 57808E56BB02C55265444047A49ED58E89FB75ED8B8C35B5E77558FBB8DA5165 9683A5758D0F07A3CA605D65081E76A80C5CD3EE8BBC6CB09A37DAAD17CED5E6 0C5DB56CCCA8E7C544E42A379B6E89A04FC2574B682407845F09292044C2D68E AABC91166008560CCEBE79C29E0F431C6556D3EEC9C5C6B17DC22CB58BC7FF8E A3EC327EBF2F5D4DBD877074F56C7B9FDE83EDA3BE61CFDDCB0FD7CF96A01963 952E083A1F126971FCCA0B5D576848F678A6BA3B604A437FB00627D5F57F0CEF F999F31449E3FC5D8E9D47D4241BFB126D8284AF111A614E25263AF428FDDA77 30FE8A367F1A5C0768E1414608BCE5D9853748A6080CCD101FC4D3C5187D1530 285B930CFD4F47A3BC1C7DCB6A4D58BB639F9A446C7E1623782E731A252BD423 50CC35188B7096C67C6F5E2B7C09F76F8FA3EE728576A21BE451FBFE741A5BB2 6925D939B17F65F219A8EB2F36D0CDCB05682D48D6FB5278A1E39BBA134779BA 87B4164DB07C565ED341BF0D42E1A72BA26533FB9733967EBEEB73E6279E2A01 C039BA3FA905FB343AC8DB0FFBED45DF9D7DF842A3E6BEB470CAAD8ABFA8E59A 7DD134C2FC3941ADE56A2A43C11DC7A3A1AEAD78F21C67B3B0B6B31EA0F88C34 566440B626F0953E550A25F4AB493CF41D7C006E00CB2A623E993D18D7FE8DB4 41F564D393ABEAC6263A2634A2CB8C60CE23F500D5C85E2F84FDE421E7B59456 CC279CC10CB793ED0733CF124C013022E92288D01033B34B99939F5354BF45A3 A6B32CBFDB734F3498A8066E078399E4C19C29C2578B23656D22ACFC4026D6C9 265FF0672C46F904FEE4D6B3D368B9384C7960B114649F333CD7327EC53B5451 984C043B804E7F5C7C4D7DDAB1637DCA9CD912E8314486DBE00D4A14B550B294 8C06AB0C58180CBD8CFEE9F696AED7A79D7CDE7BAEF76C6CE46D4394A18C834B 58F4A146934D371FC3712BE9C5DCC97478CBE74FE14F09D3B42212C7C625179A 19AA0F10A39A65A26F56E65E4E3138DCA3BB3CB36BFD7F8F1E2FF2A7965DA8D8 5D11FC2E37B79171808C5C23B6C9410C2D47614CB73EF580F1F9839A5AF8F954 81B7DE169E15484A94C55B2363522FE8014BFF99DA6D3CA74EDAE819BFBAB383 3D8F0DFDEABF04CC523E17B03225B95D7979A395BAE268D429290A0D8B19059E 2C2B086E8ADC8B4A6D2ACD67780EF342188B82B694DF7C5A9A8D5CB826F88815 0B6F05A8B0A1C790ED01938B8F963C36FAA7293E466B585B92CBBC3A2310F3B4 4CA90B60C9213D9C1B0664DBBA4FF337E171088830BBD761C6C1008413A9B8F9 BBE07A872D837FA900CF17B7F1D681B735A7198CB3D6F829E891AA0F9F469497 B334F9D7A21FC0C759CB2D83824D37919BC9EB8261B3BFB1732EDEA46D5E03A6 6B1FADE31E308B43F280743517DA540F31836E239B3F03C9730370D1A8091A4B 27FAAAFD97AE6197AD098EABB0925FD5B34EC75B0A5068163DBA70AA8AEB91BE 98A73A08726BB04808CF5A3BE7E3C11E7BBF4C397786CFEE2AD791C9C1825835 179DC20D0100D4AB7BFDFDE40D422F2E361ED1329DC5199EC5A3832B381F02ED 67E71BDDD064D275895FAE2B0C04A6364600B63953DBA69E7CCAAE2A2FEB6EC9 4F9C2718E7F939D64B1E2BC6078103BD8409FFE17D4C51CF40A2667FF6E01EC8 E0C114EE96E6695701FAEFC3D5B716494DABFCA1C80FFB7EF79C130EBFE65C34 1576E5D84616F587E00ABC2B8420D0814C20081F515F01C7993F881BD3E31543 A084EBB6F2851D0B032D1E4A882266EDC7197D5C211F30E39856E5A94FC44F5B 46ED6C14FF135AD30C3CBBCA9271229140B478E6D7EB26DF8EC131BC3C3B711E B1AA5B846F0EAAEBBF90FC12556207D2543CF70201E3728475C90C332140D43F 07D20E14A3C4E43EB709BD2F10669869FFE00517835D7BD0F0923F62E31B5278 6C6E3446AC0E20EA74DC79511AEFDD018C7B3ED0072BB5B7B4416F1CCA554944 5566D1F18A72D5B9CDC96D71F3CD4E9C040F810292C19C3E924CDD4886771306 F4CA2116ED15F5FC0D611DA10ED8A4E5D18E18809E988C7C73FF8FB6B0DD2119 5452636843CDFDE40B43B1BA38B263DA5253D6A19A6B48E297B67723906BC843 3E300CF224D6D8F0BA5FEA523BC1D7329E8F8831035F9E54D226C55A7FCD27C4 A2029999A0B7763C36 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark /Myriad-BoldItalic findfont /Encoding get dup 32 /space put dup 84 /T put dup 98 /b put dup 100 /d put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 115 /s put dup 116 /t put dup 117 /u put dup 121 /y put pop %ADOEndSubsetFont /Myriad-BoldItalic*2 [ 32{/.notdef}repeat /space 51{/.notdef}repeat /T 13{/.notdef}repeat /b /.notdef /d 3{/.notdef}repeat /h /i 2{/.notdef}repeat /l /m 5{/.notdef}repeat /s /t /u 3{/.notdef}repeat /y 134{/.notdef}repeat ] /Myriad-BoldItalic nfnt /Myriad-BoldItalic*2 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 201.344 48.0171 mov -0.0357056 0 (Th) ash /Myriad-BoldItalic*1 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 240.547 48.0171 mov (e) sh /Myriad-BoldItalic*2 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 258.583 48.0171 mov ( ) sh /Myriad-BoldItalic*1 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 265.207 48.0171 mov 0.0357056 0 wsa 77 get (OMak) wsh 358.338 48.0171 mov (e) sh /Myriad-BoldItalic*2 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 376.374 48.0171 mov -0.0357056 0 wsa 121 get ( build syst) wsh /Myriad-BoldItalic*1 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 529.408 48.0171 mov (e) sh /Myriad-BoldItalic*2 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 547.443 48.0171 mov (m) sh grestore grestore Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec %%Trailer Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF gsave userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse grestore showpage %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Jason Hickey) (Caltech) %%Title: (omake.eps) %%CreationDate: 9/20/2004 10:59 AM %AI9_DataStream %GatkK?*@kPFes<^!r`]l(C"Cq;Nm$296Z]XmO2eW"j>^fUX:d*(.l'bV5f_?Fkg#Lr:`>"g*KBm4$`qda#^,5n+VHmS9)n/a>kXJ %oM9u1q1hc;_l$lAm.3I@oIZs^Ad]HkBhXW %rEjsOq"`,-5CNF^a)V-G5Q(IeIK&l(TE!o[?TsGEj.Cc!3.LpMI/Is`iG3o8_ft!dr35>`Qe+"ZcTcg9X+1!>*CKUNI=;"aq>"3D %pMp/LqKVqoTDuR:`Le,g_)MDgJ+T25^]!TlYJ6%brr0Ca?5MJX^\#,#WIFi9na"0[.^)MFo&ouLj2W7Us8$;SrVYd3#QEVnnG`FU %5QB=oB(<#'9>CK*mt^5EBCoh5IKlG=GCT;Ej8,h&?[afF^6P>'s"M+smb`N?i-tOrr;#*nJ,\^3pqp@OA0ofS#64YnS+_'P?[fDs %IcWYY\*&nRiYVXbJ,Tf[s7nV"BDhBRr8\9!k2OgXq_qm5qXdReO3[n_ %e:7@SoUgR+o=O2ChgYIKhYL#drq=NB0U89ENo,oqr@,M[-Tr^Sh/!%(6HZe5I7EP'rq>sHO)Mf2iQHEehac^qr1RK&<8[]Nd=;"^ %p$3-LWI=R>ks%D9`\QFgiE,?WnbrpIq#*??dVSr(mIA*7YO=sOpA7q]a01!dp-,Lkrm%-`s1GBfVYL'BrkX*[Vgk2LhuE<.aT'#) %_CpE7QbN?AT;^No/:jNlFn["#]:oA.IWFZg;#6@DL>rS;sQpCa"S*MJM&`YX<;f#kJZr>psL5C?T5oqua.iu2ue %q;skjroNIL55alZ8bK4Kna4AHo>AWAjkkRa+Qg?:m!PGH?[SI2j6qHj]`##tNlPZ/i)uY$Is]/lN\A.R?\P;:5<+]gII#j9^\`4> %r8umshl\Wi*6p55lgNE&^]"'PSq6l#k4k.Wlg%?RFo4EC9HU/%9K*X]QG^0bI$WgIa8-[&_XB\#\I-*i./t25r:&sK53]\%Uqcfg %phkNURrs5Zl&Yd_&'sV4kMNu2(QACm4[8r>^Nb.DN.:H\_u'VXE'<7M(006el2S_P^-+E]q"n$M,/Wt1CX-o %f(K%6q87EkqqXJE5GGuT^-1JJ %nL\7"rq,`iDfb;1q,dUao@FNIHMc)sI/`QCmff!kBrrGQ"(Ie2OYDu]=WJ,G3(A\HE@+7dIeqsaPkIJCi?J,/'hrV(5WI/JH,s8;i-rqt6K5;'T!^Am][J&6RtIe^:! %q>'mu%j(a1ig0WBGCTMa+7B1"M*UQ2hLDpsbs*7)C\nP8?i@H7qn1io1QTtA[pOP(TB>o(s60d7YCFY&If8$YI^e1Nmm$=;Hi3j" %IkeZdq='G`s2jL$46QY;VuQZbirN$W[ia2Is7.aO*ImR@56JRuNut"UmDfIX&e@+%QfJ,DB5de3bE%MNUqcg(#5[6.qT!aYaiIu! %H]8`fSTeqWestK[bIPKYrOD99_HsFZ`c:[`KUPC@qcq2*A+k#_YflCrfoMQd\Qalj[!X6Qc.o/SX-6=].Ga0leneDYl+F3eg\fV2`uL,NmTAe#a,t^$mC^p3I-'%ahSX?AK6O3'f=k/(WKg_LEKsMkj)-`?3NmGqdec_K4*"&I2jK5?%P;1nW%7!A[QuqGjR;aq`*oCjmH3ppKhF6l\P)@8tPD[/Y=Ts>"=XI %QZ/"nM/&H8@.mMmn]lgpXIW`VG@hn"\G2"`cZI]VnGONuZ^/O.LRLOiB$^A>23iF2H^pemaKp*)Rk^G*q>;)l&n%KtQ!./KC-bWc>*PmX8(p0@,gT'sf'YM$09`-!iMHQW%9N<+brn@>J4f`_8GG$QNQ0pX-/-@tAM6EtNK52ZT,qR"c9Y`Tp\YG<1`g9_1!Z:'pN1kB/Sh=[8@^)s]QQ]2'KDZDt\EQoX;bC!Ff3 %Nf-2\fCS,JdboO5fq$"DfJi;Z\K;R!k)nC-oE<0SnOO&G*%+R1QI(YR=XeeRO.60>Xkm7>kUZ@$m,G^^Rol#;T'pXf?%Ir&1\(hp&pjW1[I8e:(r.O(^3D$h\S$`3@*eT,C%tc2pL)Egp9V&(/U!ioNYqkb %49?\k]'Bi3$U'>mQ0$/5#d2?#&lAjK*qgE&0fC,,LYW7V\;7NE@KZM1('_qc %e=RVkNou?7""+fN2?5Hq#fg\LfK[s"cT=o2o#BX(XglFrr%\=CF0>W^p,t+IEA*p^bWq_WYSkop?jDg="Bsj'-h)aYjEY#]K1`i:dkC$ulPW;d3]ka=bMdMEbRY=2h:m3L7pJG-MDS]A[i %0aAiu_IiDLa/u6?m2.oUG;0Q.n%";$7j?B6P^1iuDu2PO$"D3p@>PgYYKVdG"l2_:4=6:HM,(k"i!&V-$Tu,jA$T.sSlj0F[W(_X %KD!keNtJ<-%DI#*`[kDu%h!i=1(e;[T]u[$@rC=gnc\pn"%[C+o3?_2F#'DO?ha\%@c.;=l)XpZ-!jtJ)5h"*>.a(EHFN=sk.MCi %U!u5$E#ODK]qfM3W/Yle[1.\Kg+FfH+^NFr@Q/pI^:Ng&s:>ciQ0cld#J-$`mMZ*ATD/.!:$B)s)f %?kh(#O0(@XmhNl?DVj:A\0B4JQ,1)m"ul*L;?:BWiOk!2jVm;tc#ZY8G2.TMOcs0N:ZRH'.,"0YB1=%;m,FH!Uq-Y=<^1j6d$J\-4@pSF'm!l3qQ<^>g.Tk]+DbTfF[?j;]!BG^N= %Pd+:O?AStYF$eG\F]SKp0e.b)F(d^'LKWZ_GX;`:Sa6Nji %=IBPC8o-WJm2%khWc/#_i#H6"bQSPD]LU83)p@0/$-P;<>=?nb5X$]qa]]=j'>,q%@`LkFY)V6[/5hQJ&"AXUM6I:79*\J8]$Vh@/-K,i6`^H&;U!UY_Q)Ve#JbqFWr4"R<+bolZ'WVK!h#Kp] %+:lP<-?-4TpQARa$2VGLYY-o?cmN*9@gF#*KhK7+M:N"qU(M,_'(C5/Y=ug9.N&'cP"s6T4s$.)?p;q9.5*\F.\;1m;lR9)W%I!? %i>\VNEtlt7\IEpJHK&PnR5I@2Jc>EPj:to(G`e^g7RV+uRPg.[SO0nj9R%Q#!?EVW.E*?R0-:m8NFbK(n=:4*G%Md.jjEN*AnD#R %c3$mnj@JVq"P?u[APc*d`eUpX-,L+IjE%gYEa[u7FB/`o8(?co?Yh;H8DCi`!PW`n#GW1E\Rub=lkm`.ui_+@\YTF%:"V %_%;_G@%0R5$<;Uth3(^(8\%a`J-,9$Qjq_4n0tU8b\fEX:Z50T2!AS2h45<06,XK/rIR2_M;Os[5tSpQi=S!o*4>4C_(?OXmCM+o %6X4WQGU#*hRLFe@JV`:f %Fn!ub#\o#6J;b@5(j,sf^2JN9JI\qsiim,V]S$q^`\Og%#WpB:452XE=(fM!l3'RrX_V>T*MW %[<93N&+9uPS8s(HR1+/7IEr9XK=XE/`9Y@1&pt\TGp-oae/V,(B+?=U\[)"5@<_cG$q=hdi^$=SXTZM7!Y7UpFZYSU-XCd`U0g%$ %I;D#AhN(R;7n.9FnN[-!E<'&gT+B/^=MXNf[:(5[$pTL*3e9s,T7t-sCQ9-7XAI`18jLXH,bc$L$u,m&5W)'u!dbD.[`XhKk@8LL %@PYsU4\>onYl:-L]"81"4S!lj%<*0f9Fs1fhuTC$9hFK&*1tR8fo_qH71(:X4HP]H\+uqrS<^`[CoA?e\KHBGE"?JD>LKA*k_B5X&DHt:2?Zg.r+bFDd"q98cNb\s %G\(JUd:L#)OB@o@05(g/;f4@ahTdKaFqD))p':sApar,EW/Q5t$;(E[(,tHJupM^9]L+@NP(+gfGSE,h5tI=p@M>#2gnJ2fo@`p]tkO8W%+'4Fo*r>:%9gNP1X) %CH'E*\0-"`7%VDn*MC1K4;b"De,[;+eF3`/c@%ijcCKj>@>r&26k+@on,j)U^dL/u/.c5,(G)C=eqj%>i\6E1iKeG:CI[ASL]8n& %@gKEl#6/_=(#g7\42dP=pr?;GZDp54(Ta2'$&]NeQH8JmCQ>V2kF$?!4ULG69JrZ`21./QeEt0>"Rk=,`<-ggJDaR5C_43"QY.6NH#^\a_4A#[@"ps(iO^#H %YsE+Sj:jb2n4u_+8;c=d4liUNjgp,cJ==HZU77'nKif]b[&hk>$8sgYp;1p1@sS9c*G5m4G'#$+Yf\]hF1D%5:p;(2'EQs2/MBk#PDW5>XILCNs`i5jlFNkF>DkbGhR&Dl?/i&2Y[9A)jc %e8&Is+LV=>\rl)P,G\W7"FujFPVtr[Y]*7M?c8LfcNfi6O3!SRSdm(r?6W!f-A4Ns@_97Fau=TH*l[@"UcL1Var?)*EKE&UZN4"1>0< %Pc0fr5Q^`T"00b/N-mm+nSgY*mbN,Po3%+W+ueEbK3N5tcU1dG4Hs"Cn5,AU%Aej@&YN;0N\te89ESb[^4\/sr;/bGV%T#I"'Ar? %O=CX#>Wn&!`&!>`XqYpG!0M8maOS23"Yp'RquTO%127Ylbi3uhj]k0O$HBD[3H]IS/Fme?9@hBTTMGj)b^Mp=V#qpV&DRHg*E[BW %#e4i_kO=4_XlG-2hDr)M7iW#JGQ\\IS'\rs4st1M)*fH,#LaoR]`mNIT;*]C0cD$$lp2@qEC89gHSrlCcN*Bbp.-UU\H[UYZ)_5+ %pU))&\f+G*8Pe"'/JdoEc+WJ&bcIH]]XtbS[C9el8[$:E,gMp%*VT\#$$5R4/`=g[-"BfXuMS+8UBC4MWo=`B)ug]92ja33M< %k&thI7#Bi5T./s]Fu\\G11D0.`um20Q;?EF?N[.UNW4OqHnUVj'G^3d?o!p+"q25'OC^0Z\2f39BG,_ecjHj<>)&BiqaQ>3:?E*h %QtS&."(*GFnX@uLjVqWr0qn7`*9[dK#qO^>\Enp(JO^uH?f7U@+,4`\5+dXiDL=uR@HN::_suQHf%s??JH)'EHOMfVnYg'b!kCk`lYUK,R %jH-GST3sB"9=`C$1Bu"?CdSk(eig43,fUApm0&-1gbhOq:#Uds=+P14&75QJHYBMa/fBt0l#fMt.Zc;PpGL8g1#%(7Zj/=?8b<]. %ISY>k!lLFeit0H&;^j2""l=dtn,48%0H!Hra)5iO7Wh7R:ZO=uKogGjgrI)k32s-F"$m_!\1m;m\OXbH!Njb/Bd-Nr3o#Mm\(t,q %YO!m)knQ"6M6(1'>j$h[7^XY)steoT#3!]LSV^DQu%iEB(d>kVatVLR]h5H1\lT0R[0S! %S3:7D0FlahePNJP[qG%XJlaBe&b'H>^^=LL?Hsgfk31msJrH;7iaf0,hrmjf`mSB!C`_fX/=2htVHgnDpfoXCAeKrp8m;^58_Ggb %0FJ)Rp8FE,*g*gJZWAc?qE3+pHK=1=l#O*F;8iAD_$Otk&ml]A[,dg7kC)#0__F42(srA7_u#uU:F/[7n[.B0Sh:'CHX6%G'm"ha %"Kjp+8cBd_WMaC[KRX%OUcOH>@)M[!DKRWbB,SmKQDo*qNX;@NG>"=tk&H5NTmMMhJA=5(TGr;\DMSb_P449:N#V\P[G4WY"F5]s %n2>e8TL5jo!0.+p+\(H-N,!n4Tm7WP,D.S %K;T=8$#*&9LUdD""E[\F@PKBV/Q&na1RPs;,)9R?#X)UJ:rKdfZR^X>LRZK-bRc%Pga2?CL-6e[R#$\ZZ4Dmj\@)PTUS@KhB2MD%]:P'5F:RG\b)1EK\5qnhPh9c^^?rT*=d;O.$A)ud"JienQS\b)' %>\5-HX*AbTgcS*GKR]'3;W#G(6:gj7fKt&4Tk`fJ!492NEToSNa/:q7< %e`?J1-gn<"R``PVK!lHI+GPJOXF%=Er.97Gt*id8IHPI>^[P3\!EH3A7S&>gIA%iVW*Es,p2r?/^ %Ec3YCWE2BJ)cu;UQY@iJ)5^*3/hhPj(g9qpXlL?lCG@$[`E%_2k24en#Nt_:#Y.r3-+L3b2 %aBR+%:O&1Q"ID1U+%MfEkV+i@/KV-KiMr?)iB_+K&E`T+%U=ZHF&qBgHj+#q_VD!?R5NN#='&Wl/7f5N4j&Td^tb$3j1\=K:jQnC,N'F@/<(??g8k@9kdQGA(R4a;0B:gr?449f/(0u3'AEH?BcL[,*SLUs-O]E(BndNb+^OA0!73oSj& %a0"-I/7O>s#6Q63@Vu>.l%4L6%oF3*S/t#?dLtYLXr6G6610Fa6_iST&0'*^:,?caS>aW62F$$4$uS`t*WlfR@"A7BI)8'6nX-Ph %CfGco^'Uo3O7PCUC#-HVG7#[752b2?_h2g+#IBqV$\s7/*m?d715JZR$s3e*"UaHiK#PW%=;nYMnWl&VC,FCT!^BnU %her$$cQNgh4>.,aXX?]1a%\[NBAYLLDW\Bq8[7akpjbB\^5sKS\9qL-YX!&L,Z$dL^hiA:D;_^)""S@%ps=-/g<;m5&`gEj63ZXp %@t/cnieo,`%^s"$nBD0Gleg&?_C]:D*i:a$VRgt!Ys<3p?A9E6%9a8fJk-#Ip`cY9JI7c?L2nE)-@^]T(0)MW\7#/X-B)JZ9\3g8 %l]E38!:c`VE,ROkbXDk:\`jDdG-BM.[cWFU>Hne9#d&iG:E2.TFDe6RchWeE7qVma?:RHh1Q?Oed1*+tWD,\gL_SES5[MhU_//.L %I_*1,c8%\"0H262!#GSQ5bj)N@@>bqh/:S-&%&#s8H<4/9b(n9JCiaDk*7&gOMBpRG1k:Mo<3&QR%l@ZBk:PR%Gn^J_b;=d')aQC %!CS,:Gs^;Xke)/G4/0EX%)=I=>Hsdkk3:VSI7=$`,lua6]rMe`p\DmbG9X"mNUMDZ,0a.n*\&pG@XU^hG7E`/LM97&_0rQi5S*Ao %S&,!MT$%gE!J/jp:g-1Skdacb=Y?6LYfcfaaDp=L=$`87_j<\&ERW0EkWD[6-R7nQZ_0fgtr6+f(tiZTGb=`N@dS7$S4ak*HaRR1-R(Y`2cgi_SXhC %VX<6uGVmPSc;J&<9JYQ9LjQTg^kICIj8EQm&G2^-p`5mB,Vnqc]9P\/>U+b\*hq_r"4h],3.e*up`8e=jI7dM9/Ete&@e@4&Jb

-DRg:4aO[\&NE(%[i;g0R[SNe %:aMtG=k=3JG%P2jd6gY#s"7)uKGt@ObWNdp_4/3q9Nd+C'.,gS*g!UD0Ok"]?+cbJMaf`&IUrZ"-"J!T`OS-3KL-ZF8X=WAjr_Hj %GU@:mngl@24k`!:%3X)4RZn+4aiV)G=e'AGPXm'P.:TpFj'/<>Yfnd4Jjdk92*?r9XPZjq'2=C!+_HRH'fuNE/;BQ6liO,@1S&m( %?\#=MqsAoL>cjJ7I6KY,Ln$hj1Ip_^(4sU"1(3+29\!C\ZW4=tEN'i]/1,kh(F`]\TRf&n^cHcHZ1l901G! %4LF@4n+!Y+T95fX09IhB/8B_MsqPgFo<<:C#kOsgk:X7rq@3:GU7]n#u\&Qu3_ %r@e>[9N`lAT<>_dTqDP[K!$Wi3(tdl36;&I'+aN`IGf\I`F:Mj"F11i4bVg7+g_>[4s1UA*&!+,H1rWo\>bJn)43*+Ju4fXVrW>7 %/7#2B/)mg+CRm3_."HqaQ^'P/?W7S+%k(rNB)\7PqhcH*F;'`tO\)D\UF;)4Ql!_0'#0lLE5\c*2,g=Gr8[;10g[[!;4\_9Nd%`S`ZjN8.[aK&;1YW>`B255igX\iL+]G(<5a0Pj&[2Dp))g-d[PIe3`4?p2hB']6_n_63/:1WV40fTeJT_m3XTQ)n'm3 %!pQ6u4\S[Jc@jp\:st7ESs_:Z18e3mn.Ggf#i9/$6!fe[4D1oW"qbjBHANEqBbHkj)$."OW#Xf7UFR'QRti`ca8j(CQ"d<\e$kUT783/Sf[CtBTcAX3&qG2NMpGd:urlIg&LO5?.F]]#N)LEtY[O2(%FV^EkLPpGJmZ,I/k!g*<^m0hC %#G$[cpQN9%"A]EF9FTiFbs%?Ti5TP8:;V(?2Zko?f%k[5=sKn_9CXQo4.s#3\R9\"X:A\(J\C5XV@4,&n^Q0QGnYK5.VRB_BO["c %AKBrS#mh043%NfI9e,gpF>2;]Tne8/K@r$,"f6s5/0NR9O43)+O+"A3ccHl6LcV=>VON[;DQeaASS7Ws54*sk2E.>AYIVr,]>8A* %0'o1M3-RfKM#G[DYT@Fp=HOJjh4HJ"bCoYa(koE/.6nFNpdXhqB6_?g>WgD&ecE?tC3do/Xb`D+$a]R%:PFU95aKcTmehhZ:^+i# %i:jXh+,BhUdA%8qbMqu4_)_o'*o*t\iA6R5pSna?K->->RJ[SF6K/,e_t)*0)`Lb[1mpme4MPWo,/RuOZ+sCYDH9mQB?@-1GqumT %h4rS8eLaS<3o=SYCbd4#<@b"e^c`4+QZZ$,?ZWf@,1'tgap_l_6kF/(`H7K$KoI"@Ic7Ym(dr0\1ld:W[IBMIpC>!8IRMm\*/mAdOhM["roAZCIMW %A6pg<7<1_K:CF5J4O*c1hDVZA8$`7%=@Ztmh0HF%]!1[^GUmXInPX5'Sp*(q-PKaKdPP?9$kV-E>pRIp&!dnbdg"]j@_\%t7W:<0 %$ib4M5FQQ<1eJ[F=B1(YiD]\!bfg97j5]AbY*TiRHuW/d:9bij9jHd&I,9"c#?=1YMV:GQb%Vr %Qr*GE#uhZ*GdS3,^oDVn@^kOt%6f)&)6]oP^8Glsccl8tU/J9`W``Md-X"O,.R_qh"F[I]g"Q<0*"cpL\L\QTLO!]FqHCetEekA9 %fX&uF0^idA3Jk0j\6A+C7lU#mhWh@,pcGZ)L$$]&E[DQILM;KP,(PYVSrAI$<8WP)a#PaO,WK4!kOu9^=+M7aBA)@2`RVFA"k/sf %eWCE_U;4sSF,Ro9ksSRjib@-UQ/jj6fu,Fm_In.\fT@F$9A"'VQj?j5\@ %f,7aDQ;6M850T=/?M,66!.bIPGQ`rO!C@1\nF%=?3DJC*),V('CuD-\X8>:<&],)=.1p*HW6!e'H:pS/jI.Z:]m%NKXfK<\M09Z? %n`SXorf#8l&QRM?7HFW7"SUhN*J\h0J!VZlQ__LJr)jHH0L8OuYl*]AS!i/\ei\+SdM%Ye#OTrZ>!<:]8QKYM^'tEqSGo$)ROH^` %"2H?$=;F$6D\gRu4=RlYVKRQ/nA->Q#gMg``XKVflI5kIPDEXs=9i0:/BT-US0lYq,+C[D&XP+<0ajOTQh3&lAHUiRj;cEgLBYK% %VV_pjC8ef20V@nmF!X&=_iR1V!0f+UgS1iV5qA\OTt'3J?p84eGZH4\4PW72DJQaHD5AOhh46nhD2=/GqM5p,/iVAJG(=462PHQ! %#]QB]Xp4e>\cBIPdgc^5h/s6LZo0-gSeDX5T_8RY3tLOt+KC!bW,f9J5&qJkYI^j@oL*`==7Kf3@)aQtid3?)7'D3$SJIT[U?eKX %J^Bo=YRu7jR5+DM!=h>(Ceto=CUQ["k4.80`apGi.A"e7bm6)OjrW2DB/hX:G"3gk"kHI8D6Z!_#r0]bY\jNI$FdS%(I[cr!Y5D[ %T!g[?J;sFi:_FXFl"5W@Q#!TE6L`>0o:0FN>aE)_eBG-s`DIjQI4b(;m+iulYN)o$-V^ON47*T02mVuSmZRfk5Y#,6K>B/bfQ#RF %QjTaFjrStIHO&IpLhZXA7hii]eq2g<'oJsK&rfdc&h*7u*Sb'U`][`6VGZO",fP)s*BSGeN,A>SOr>O=4YlTXRi@,RAIfV2o+16X %&6Ots3l3"amV\bECi6IH?f""4[I9qajm4.[0to-QGD=/SkDoY+rM#%u2@A<9og=WL%5>J?-to %ZuTt]i'B02f%_$'8%0B;_5,MNeNY&Al>4(N5Ss$/1*AATh"(n]W9)a\ZfqHm`WM$=39P.d(K-Df*qPiOM7t(nNPe^gaG7mt3.QAS %k2/=E!4,)#-5!^/VT^6/cuYdG_2L"7qhY,l\6XZ0!4^Q;#64n3d"Ial&ps"lE9jnYl7@I!$i5/QINgp*N'I2`TceRK#gj?l6.m0.p1/B,>$_b"%Wp>0Urt1Yl:R`"b!ib.qjNg'\;UqMj@r=d0YP]^lC&IJ?_&` %4FdI;MLpV[C*Qj&od%F&$(M;=Lb"NBA+=APo?84m^CQ9D7fNFn7_hq5Zu7Bh=_7/+YSFK94PVGmr6[13s;^J\q+_]@f %!%"_"(^+JRQ=#!-$\nnLm?2"oL\:>&.)]@YHS=$Lj6=&bS>p+gTT%Sen\8h$oD(t_2eCBYrgD:\+e(I8(uQ4GqM=RVfX[c$e(C[UJq\nh;%>DYq!jd;L-4=[kcfU@\jaaAiY81V7+#P^ %/"d<*20`'/)pqe?C\"tQ!?dZ.*Z/Ii5b2n^HY2jLSn2"01Vg&&`oJE)ir(bj\D"'t)YWh@C6@o?Xn;k[WY8ppX-tq:e.+22e#c?R %1eu+/qS8MPDcDp6!C%MeKLCW&WA`!fqb-Tl69#DsO6n,Ocf^0u9 %opR`NY&kgc.^kE1K=E=@CWB@J7KH[2'0acjUK`3iO)"9^nhbSXi^3LZ6L:@bNaugBP@6WOd^`O+Cq=piM]C8.hEZV"_A7:^q5/Fk %)[h=Ua#,EU]*b0RHZim[A;I`]4meBkDCuS)l%f\E@7$,i1%533@'Jm_D.$On8Pd\HK_51"@R'hYrFKM5P#*oPe7$25mhBcS,gUR8N7)?nq4!@^8i %4D-nGIE$,;4.jMRYd,:pNV`l@2+5I88@/\9_mWc7'@q6p'[KP:?G)SL:[n$l*RP%&S9 %48=1)&83>ZSBqWh/X*j\I.,(,9nn)e*]q\[62QAhHd9`'5URAtZonTJiBg!OO.RDR>Q4l>QjmR?_dko5-[ljQJ\"rs<:04G.I@4, %f;%N*\,1U"&MFnk*&Wn%q^K=*J-VkeO2#5SVtE*ehCTLlK328G*SkRfCY=C)nDI`%gk%G1G2(iu^c8NM8[p?T_\''Nm#5@%i@p#f %VA42W7!$W9UJ=OaNSPXZ8pIGO]58^L@uu@o<6S07jtE?ZpT4l3B9+H<.5hT%7>!1=J4[5[$OLYC#/P?j.27`;@h.1TOi$bHi0Blr %bCZ*#BNRT^'h3OME=/.#"PIB7,BlHleR^qDPs!%PXF<]KJV'h-5>@Jb1QD9,g"Q5BA)4q\p!Qum[O#-B$.m4ZC*:OTUqC^Z %k*lNm(c%P"!hCA]Rph&I`umJfSfVc^^'j9N66=]n*-PK<.Cjjg9_r&#&>D:k%M=N %b5++8ZK%9#<9n6cf"d!Lgd.@:%>i@@-I(%Gqs*SO'i5UrPO"6Bd?4io(u(2c9K[+YDq=8#>m:TTaYoC7O^TgG1X$P'IPtN[.fF`7^NfUaD]>tn1'm&Fj0Gr.2C1)9<6;gtA>!d&TIsl&=b_;sM3'1SG;@Fo\b9m'ls6q'cL\Hg@X4"(uEsi?T(aLmK0+=s!Wm#3^##UZ^&2[i9BR/W:Zc^L++t@US-l[Ls2S]-L?6#<3Qa7A6S]?!n*t&t->43;/%&0S:6q_3((L620L'()4E-OBa>:G$AOHkL"VkK!IkgonbB#=#IGUPaKsFlM::oH*a&8g_.WmlfjuBO,72MCsg^a1LVQ#(jYV29u-=cI64`gkYEZ9'LnsA %&4aaEJBdFoGTFetMno@nBDieBlDN[RUrkfr/Y2%:j](p39f:fRD2iN!'RESjO/.A.n9]QUl,*'^c!$ %qoT&Hpj25PO!DD)R*/bAe,V&.QiSE3S`VOATX)1qBHP)GSC+>a,5J!US%>NO;^bd`As+Y9LEMdCal](Il07j^->G7,A6+ROZ(@gs %kCLrg"a,1-cL:7EoD]YDWs$.;+5hq96+>f($.4e.5[-IB/KT5.*j&S='VpR'PHf?P]tf7e"aI@^d2`<7drO>\%iAFf/)oYeTC]Im %d*B1h2d1YJ5gZ#W?!&l/RuM4)jr6QNf#(3SG?\$ %<0nOM->@CDTo]Zo?02\a-m4k7Q^_W..B\fu6j$gB\5.:A,@\+?9qBZPe8eXm6!tZgfaHI"/OG=4N5n(u7(8'81jG`8nZ:G///_QV %X)rZ,fkRmNLSYIR_\etAWmb?V_a-Z\%ZdR%]F&F>H8Ksj\Ttj.I4T`/fm+7,[`+L0$BRd4m_)C6[XC+FPW&t3,]hEe*V2;$LdS4Rr57;%$g.ffApjc^ %E6"UW3Jj!FlE))/n];n(T!]s2_@C+m6SblWfJL$'Hp$DDgmBYlYif(Dq(`@*\a_qa>-qOm3KThqgWe_3IrO&c"=GZW60uG=23Y8! %'2J:7Ci5](0m3X!_@[s4`;DHQ.'`V_A_m&c9C6F&$1oV?8@R>0o($2F%@>]h0MZ.tIf^*_m!E0-`QUtD'dMU$\D,aLMo#FjdLVko %Sg+k^gsq+i\QN!qPn6@]oYN%Ip.1_t>"I*"gaA6T`SAa$SFH8T:A]r(4kN<2Oq@&P#UJlLkeJO>1&!&HfjkpMLoUpA_*2;kZ3\EtiFrfs">uCK&Hq[gIUDECNk2:WVF>K;!u>aC#:iSE6-2$;/l6[0 %gW'4L$Al=-Cs%-:$h9Q:#7_j:Y[*@@4f3JL@,<.OES).[T4PJ7,bdi8*V/-Yf]b::aC$CH\s`=dY96!hc.6+g'ma'ANm+&@-_1o3f\b2q.ZZ8?I&%]afk)fr=-\oGlGa&QG,H4/@0dQ#+XrV:#5u %Bfqb9DN`'5Cd6Gtj#6P-%*MO4\)mr,`1OZ7(tQ9(Pc#>&9pGu\=m^U'SmSpf$0aV9-!8W//i6=7`WfA6c`21ZgH\!*be%L#o-k^j %eu#(+V`0RXF'fU'Tsr3Ol[0n:r$5u!euG:#Z/0QC_JpbfV$C>8n$\?38uul*?Tifu4KDlO9!lNt^h41tHU>k,2C7QC(crA]A-Tt\ %VTkseEoCL2]kj;\XgU:7e?*m2Nj_j[#Rm[$,gWW'o6BdFdC]hXT0Qn*RXfLKE6i=D=19=/4S,[rgh%=_CcPL?A0>eA"Fh*-QAK:6 %eN@0fB(.Vu"p56A\ntZA^ma=!=8-Rn\ZKpK!^Y$[MYM9HZs=T9!a5&4[nJlX-[YYj:POTM&p>e;q*p/diEDr)VDgLt>8!j5[RKqt %4.SHNf4fGSU56A(-:Pf)H:[W%\FL%)/&:Klb<5,3`#:o4>BCMoXiG+L8`Qmc^pjo%$$riXb2i3Q.)p,i:?aCK4A8dWTmPj3Eis[, %8aa&^hCtqo('[n1bCU;hlKKb+4ak[UR!t'iK]U^LNJqb)__jU=EJN@"BI<^8:[bOF;92"S'rJgROkRe@:1OE[U;_%HXsSXX35Bpa %btt=B:B'];al$`W?Mc2dMmX,(2H\Zke*:iI#4m$^>TP^%r2(t;F_2/n/O@24:om@AeXu\DH`j&;&Gbp^9XToAb'cAuL!5H65ZA[' %L;L-O1/DQm:JEWU)U;k<>G?Z(NHqU9)cb(FT*e1Lkfr"N'jSm5:^E$`qZ;l-djVN@VeI>bCJRg"S\,7k&9p:Y\+;$_RV"a7J)c![ %C9M%BF"-jp?$ks(^2-*l(\AS9QfJk#(^P29@!1QtkE]"B_cHK`m(X!j1>s1*91.rbpf:L[lb4s6Ne_'Mm.KiJBfsk^40b[Mf`^Ye %HAr-7H.k2Z7[".fRS;kQ3g>%gdZX"(dsa.^'uT>HV113>UG/,8XYaTb0$c0Lses,X\X"4J0&/9 %bfg')m65&5Q$7u88DnU/ge9q$487=!ffH$2C3nuQR1#N6S]_'K.k/`F)gIV#04r;,MNm^GY&1f.>).`g+6R-D<[b3]a`QcNeFbW%nd.Y/+>[X#q6fOY2RWCRp'<k;Z>e3#Cg39o`YL0,;FXF#F*b20:-6ntgs^Wcn9BYm.iGQj6^fqiuK %,Tk6Jp@pI:V./DE]ks?m!6ZS%H4]l)+[BhqTlNI04O:7#@KcF`NgG0:]Xd(%4@'+ACR-S_+'*X@TRdV:X3H,DbIMY-pDl::8aoJF %^J+./"4KRn17na>8Ad@EW>#//[9ds*a5FHS]YIe=$dg?WkM5fJ`WD+Q<&#?5LVRF4ZFr4%gbd.)2W4(-bL,h:ME\I*RKls:G4,I= %!`?!MmS4hqO`kV(D;/s)bJr;ql-7uM"#mkhApF!iJaYN:"Q-WgZ+[Hp"n=5>>cWk`/@huh#7S>W#qH'Sdc %fZKuBles\Vc)gWn!h0IH\bK!S9!XrNYW)B.j* %;8]\\O0-?&(^Qba%)q$T=P+Ld2^aP*m!^Iu)%TfEY*Ef]7kUk']BM9R%N>oQGTK$5RI(F%dj7L,`u'l]qB30^rd8&Q[seJ8Hn %ZJ@%(iJ_/H6:I-k079>RLV.l$%q*]r1RUFpRA_1DokB%el_h16Vj87S.#qlAR^YGHkEA'RW3$*b[jRWjr;b^,JTlE,:BW[ppi7o" %UoM`J0u>IdA)[-FHPeVR;r$='clhco&_iq9H;MAb1qg@EG!HDM$;]]1h4/8-,2-3,eW'W`lRetSs"qj[O?;..T'cbd:]m;Yg9u::]l?Hf+2s?)A=h6O[(;(CKXY7PfBt\)QA!g^F=nZ1'OhS;r@](G%$@]e.2],fA2Tp3#9Xnb?WB %!00-*D1f.d`liXDT2iA>Vq(e"=Nn2mY$4<]3Cbb2`uP0Gl>35Kj11KuDG/ffbW!e\jqXQ4St>YIG[afE3rsfTAe9p9ob.^6j?Rao-`+<(+"at.ODZuKYSd%e'"7JM!j9GH%:]%>!C/fC>2lb(?%Dj[ %Kl`bb-83X?ElSB91@6@K;*QR>-;H2+#HcXl=j5T8Gf4R5`blFQH.-$cG9M@$OcSot0-U]R34IF7`C+S9ZXA76p22RS[FuPJKFoKe %1ilt$L2Wbd[[f`J&OSi5p"YAWReK,dk39$2i=(W]e#F^FOU&6I$*I/4Ho@ou#Gdne177C7:Ks);1kcBP!P<%rKu7<`Bo@\dhHT"d %;l52a^MIH]8>Zh1enTp,eXp__DCKkq6+5MQJ_&76#Y0CO'ouZRdm'&`qM;Euea*1b,S2&S7+P80-\Djbmj?pKT.Mkph+%.&XaN9PE>0m7K8L7iIg>[S8GlhDPSjTR)4/jO8^rM+HG+ %"kmhGT8'E.k)dQ89bD-$5;POLn??-DZomHQE'&<'.>=EP.p`\CV'bXNnMUMDXP-X$07KAG7j,mB\(ol%NU4Z,4O.Z%(Z63Gle/Dl %m2QZIpKjl%NMZgPHj#mLk>5!k*a^Qk0u53jgF-9OQ=5k60Tn#N[>"6if@2TZrM=n#%kClX[l`DdG,l/&5dWH/O67ruV?>4+XgUJq %'jr&,a"-4IDM3WnKN\$mLrAnlRNPrr:Q!Z2,)<^aVr/4hi\6;"$HT&=QK6fJgk,mBcLVlT(_rf`N%kgY);VBu-G,h$mek@r4 %YrYDH+YBHuc6.0)"^/S7N7)PSD4bgWR'K46EsXL?Y,??OfBl,\^H[C:O*VpV(XG"cT#2*lV]hTO$1>(G!]%bme%cfe!a).UD3 %HP1KVVihqdp29=Gb*j4LWC%qu!%^t@-`tk`/[4Pd2`(-4*DYU=0"^X3P`2no,!&b5F-^F5aDOD#F:?K`M^L'Ims$fGD':Jhc[8DC %e*F<+*?&?iI8BV?57em/#7,;EMY9eRn@6ZJ&pXtK!4R>Z>7_]9'<>jf\rB6g$^kBR2lG_@oO][N,g5 %KQUH_DPpj3K*=NR>Q*=D!OJh.)-.D94nQ9T)]3pMFs7M>p1sT.M5jk:bo/np.6lSkIX:X4f9n_U"I\Wt %-?a7GdrCRhVa81YJJVtf`>eX@A3!#aE)0B[/`@NtR8k8p5k_WF)m3U(mRb0L6rHr'n@mh#`9V6=%`@&tnSH+0nD_LYL9YQ(PD9aoT=[4aqC'g0@2M)_8ZTCE4`Ln#,d'4`'#>DU0!D`MaUa;ji)Ff4n+) %P4Q+;R%QA6n>N,:0TB3VSgYj;'OH3gKe.l=MUoh).>qrjVWa,_Uph %MEL(]DL/g^c$E*fE!6L3D:_9_)9[a.`UbtC]lU6K5$'HgFPO`Z120FoK&a!/S=$]3YK-?ph1.&8Dko3sB!7Sg!TmGL-n0Of5mPVA\[0_D7)bp;!7ICeWlc=7qV9h?BRG1"CaO'iRjH< %7W=1!1tQO*=M8s=ki7)u?E>8N3m:!rB:UIniOSR#b@WQR0hq)88%>3??M3;hZc*cB#@BI_@K19$d6 %At8el\@pl&?^8\DOh1k$E-,1Pnt$\a^kt-#M7#)n*k-uT*pYX*e[pjCVI<*QO[Z_Oi8HY5e%Hm&DB!278M!P\V+1c\h?Q-GQTb;m %lT#9U'tI%KGp5%kCuXXnHLUm#D87:@nSW#lWVBOP<6Y)q`RCkfrV#F,<_*-%GR3$RUD4Q\L#^h';9Adp/KLU][P&V0uW;+CW09?oi`E*Nr$-&37H@/ShF4. %+59]s=rRj5T.6If>nK@\bh'klXBm_\3njCC9I5Kp(MYUuRn6sQJ2Ic!X1$lIp(M+f"\"e8';=_LU)s`;[?>I\-fq&LH%i0RL\8b])m+.\PSBr&ngEq#T1^+Fq %k93WB2nbFqOL5u+;]cpkhTVHu9Gi%mS;".@88j8VK?b=%c)cfc/jp5Vm%3Ml[\,Ku_g\`7[-b2Z&s4;6!?cM#,WbQa4_!kYko<7ulUA0Qr6bg"@$5&@FdE(>k[G@PSfMNAh%;B4$%R1]FOq]bls#ZmKRR-$>'K@f1C %^ut&P@F\UkPW`1f;[H+0o/0c1K#$mFpfYo,-,b2IZY@h'#-SH&6keJ(NjJsP?64*CQ6pHpIr_loC+&2*=l$neQ\qpC@AkJq^Zr0\+eg#/@MssUEt-ssCl3r2B%D%&n46UGPiiD9+c3[0 %]*/kF;k\Dj8kE7S;gL8XBWGGUa/P'ehNP$Lm7&-2\Y#c7hc=t=9i8\Xi]jnC&+74QGWA.MTr+,8;o`hI_R4QOso23ma">0ge$+I"\V.:l5*5mcJ#o#)3dgk-`P$I^R4@XZM4g)3pH8VnJCA$ii_*]I&ogDs.6)_W];@2n2Zeg-Ni0ZX&YWt*\Sib$5ck_.N<54HV:Ct]F)Lp %,GBbr0MAJ3AX<7A<$RHo/4?gcAU9@G]l7lDXMUKVS3,ArZT`S;_fdeTFBV"[RlG(cC[\4&-XZpPHdIQF+]+'je07oS(>d'm(/A6- %gBerqfo,Xl`TpNJp,DDOUHOB3E3N;8QnaId02%H+9lk,f:$P3N(J'8C%Y2a?#i9"EU=$+F@<5cjZm1*ik@=R@^O40V!E\q`huF`8 %LWqE*FlF]$<.pkOQIB-8/maHAjdR&QYJeo%`%te,M='RVeDY8&SF1*[9Zt>e',@sWHLBq!g)Zd,["V4GeW"I9lCX@RH=_H0bXm.> %`T?Sa`*s3AZ8V$W7u2AH=;)Kgqc-qJD>i?DT@n:et@OjBnb[t\]HE:]^gQ?R[WQ[)uC)`3(8 %aPj[*cE:*^As])+2_0^>1]d&era*90B3_%`]"_\egbBuJI'WWLX@Ee71^cHjb0LZUI@6"Y'/jub?Y0PiT+4*DNYg&B]Ba%9+/!YA %1CmE'j,jMh6ngh(\OdY^lZLk9S;/%=bY/51/\\lV=r!'r69ElF2L&5EZ7e0Zo\B>.m*bcqA307Y3VkUZ-1In3?HGr?jat3//ReJ? %6Z_eO5;/:6n^KkZo--t$mGL@5NS^jFm,*P&0K?F+r9(]MTd[6e5B!8Ztpl(la)hQL9 %13DS6duLB]p'[eSm_#E2bGI_\op!6e*YrgcM*`V.p[MKODq@D0Rm'*X]3H,Ouki+0&Tm!";P]o.G< %q!qnXAFEXL$*8?V^nt(%umcJrOkI,UG!^`OJ#7.&XHBJAXeajm+p_Y8=)h-t*f)jCHBKp;Y%DV@<*sP`U\,G[K %g@!^!@=0MN7mM=1@sc&#I=Z97hCecf0EVV&ALl@*>U><3CkJ_sE:,)nX'4k&p!e%E_i2bX>22EO)hkK(cl$32jS.t\,Iosk\b6qO %iNN/H'.PhVa+]*t,Xn,A?A:_?U=rrubC6/;icgKl%3@_0fdb]Gkh'Q%?),?jRL^YhgpbFLNo06H)]R0nZ?#*m(ibtM0IN=-n& %!:#n6H@k702Is4BrfcfZ!:,*g!mCHU,(>S-'4DI,@hW,]Xu`!Qa>P;>;?8:FD_GP]Ym\4R=A:edBO:@t,8=$h4$?d=@(1E(>Oi38 %&1QtH_chV=i'6gP&C64SS1KI1(9D0(bs]m$inuCP]7?$2g+;AND3J0TAml:[G8e5fqG&[H[-"(8WQ;O+]RNR(&a@9O)LF>gZ*>=Z %f5hh6qtXjd`#7>C/IIgs%'r,)bk1om8XA)=@!H]m/qqPF$XMf]KG\Mo/Aed5t(JGq!R=7>]"7]'!p\n>sGV %-1F?A/4U8Ee"T6@G`AU!CV3ojm4D*Mqi_VuM1l^n&Kjd@-;+!lA]A#dChgb=RWnkZ.NVM/Lp,qU"Eml=6BYgJQ7]52,*pECDu;25 %du7puVsS958]$dqk4]LbS(3Ojm]L/MR^^Xg2];ap,IgJf)$>Yu$Ek/Nja==VdgPDWX9V^T.h.Wd".10HRF %qaIYuUCUkM)2OYL-89:4Y@oX(e-nVi#Lt[(^B(Zh5t-W==J=7dV@iRc3`;/uE*00B[N2m@F!(mi66D&lbKXP_Mg69M/VaAKX6n4h %A%p]HGgd-9OR$<;/'RlNOaq^%b7D48fZ=4\l+/7h"4O\M?%#VM&88OQ4^c*R:>Te4*mGZh;(U,?p4RD7"+ES0ZN2Eh3P9$N[Q^c( %(%Rd"jos!VU7!/b05rl(m%A[Bn[W!L^)Yf1gdi0,-$_7Sg5n69=tbJ0E.c_WfD_uIcE'U#j3#[9C"E;-?XO)Ze5a503;M(^?teJK %"9r[W85WkNO0-%4lDgFZ8G;t-S^/N2[qI=W:jS4;3+Q[@lJ]qBr8)MQbp9(e:UsFJffBc#,6`=fJf0`%26#5Db,!jTc(Z'fEIa1? %^qPhLNF^YI,[j'eUa[Fl8=sX;kT%tG,B^MlLfWZG6tT4K6<R[;S;"tKHh=oX>/-,:\WiF5J[\FhF=CI&D)E*Rqc"G%RO>7X,O %#+AW1:9KR%q`q^(L(h(n&WB65*e@dH&h1ZfEl8Us:D+q>#4+qE;Z@GZ7u,fiM&.,Q:,&UN!:N/i!oe"`2l&rq785$s4Y>CpLr(u9 %cj-X.oQC4MJ6#%-EPNcNA"$kVkYX2:.M]FF$rf-o_%Lo(iSYn-.1.p](lDI.*)p&'*?8i0:`7pfneV[)S-I7=p'E$$E.Fn>*(YVa %g]4ba$!=lhD#B4uDW.j6*WUL4Im\Z)jT4R%7n#Ym5bcLR@N7YY;lpTY^\I+SU"AGQE,_R,<'nM$KP'2-YF$^Co]@B %.!cc88hs4#k+:RuM=G4$?fH+R_%LjhFD,DE?1\;93]OFI&NJufNaqA8lc2m:*XKIZB,a6SAmjY"B5_'nbhC=R7OP?W)%kn_O?,h!Sq=A,6Be.5D%YYjL>R%>]43PW.qmHg-X2+$0XW9X'4-^%h"g%KR(AK%7T+OWjN %bLIX:E`k_/CQhS3T`Eb=>>VHK^M`'^t+"G;dUedVHojQ\R<$m9b_H959M#Yam*)$JH0d0'1UC#[pSJ[*s(C[p&h#-8u!i1K4=N %hT%]ofolLTnKS#_"Xm4!#^/c9-6aj`0/H*KN2R">4^O$cBKGLO9$lI1WaR>Fb-.dFPeF]6NN^KfE=XCdS2f_0 %4?+[nWaPqW\6;T]paTM=^*XtjHs-lGb>Po?WkUFtl4-L)#MkD^V8bn]8g0%:%L;A;@adG:T8o@O^&.G'(?b[8)mWU>R/Vf$Q38q&V?)4KW?57;Bg& %`R^]J?64Wg11=<)o!G5+_;::tbhA7m2pb.;]^XG!OT/JFMIXUjGjQeD,5<-6oN=FpG7_kT8OY.[R`AIWHErnYT'@p$i+Jh4Tu%]4 %5N8OqAjM[(PT+:`7Q=#nIK8oYA,f,SpDF/QG)_Kto:I.XhDG+5;\-U(!MJjS[V#_Q>p<#7$@>F#)d>O:BeZWR*'=[lQ@"Q9;EZfdueCk#&>g*;9fBKC=ajTAZHWoYtZOh\cbiSLgJ8"PW&a1 %,oHh@[NUNiQ)`uj1W@ebZ:j<`r.&r;OVGFG;W5>(N%p@LgY"$dV2WUX>iL@'`ofeco10+^t-T2 %LRFC.oS+s$V$d?P1Y?KraF&fZhoM2'if\-#UfQ'4kA:DQeN1#%3jt:n%/4($C\/m\`.fNs!6pA,8"caDSnuikW9Zd^jHqa)2Y=[;&]BBn8u6L5G!M?Z`^k@q+;_9QH-^B%&7Aqp/VK87W_ %JebkV%,HsB=L-_hEobPhi5YJdOEC=;3MR0gAf!fW-a2u)S<6MgjZJ+'@.<'p6YAjZW>BYaPo0+_U8e"&a7)3HW$FIkl,fsj4C!!9)<&\F10]&qbKPq/%3`i'`R)c`57FZ?$l %)T'1=obKN"Z==-gGR,bPP3keo6>4L8nGhUTmBC=06de?i$OOn2Q8[#\H.nQhXhHW\-ZU#^b8^Bfau(-*JDSBKS.k/R%]UR(_2OR" %W2:rH-Sq_D'$V"H-K8$-3s"tbEp]MMT"p`75^3Nakbr%<`jRj\VD*.U0Ya(h#V#lt7+_L&6NWD#2j,]s^IO@"=P*Y?j!T=pK[Z0C %r7kAhjN')p.I8dNn0,WsBV/gbJt4JF+:0I6,(cOPYfR6E<#V\K*Cs?7BtA1#!>d&VZMVI)OtE!PVB?t]'$Q]/m!BUF!uO+19i?Wk %WTZK5B+rL\&p1ffODU0#C/)i%oe;RU$=mR':jX@s*WcHsecSobV7L(M`4(o`n"]qQg^s,s7ZKkaWAD7d-jqZ.K=SM4)Ba,WJt"E? %3ZCo(jJ#@VAjj;@JR,WtTYYYZg>MB1@fh:@e6@`X#KX$tQHdpRfj.4c'9K[hfSM_:!;Cf0UFn3U\Eno`Kp14:faSCO-U"PT*VnKY %'r$Y!A<#hps%+A!"\i4RNr5\9H< %(:)UeqB=cZe7qO@2b6nm`T1?,.UO>r/K6[S-g;(TD@Esshbi#KZOEHrMb2KYMbF+,;?pF\"qlhV8?p;J+SqbaX^8/p`8N+ALAhfd=N!Hj;eC**69Lafl9tmu&W$-4h"(g0SRe7G8,Vt:WqM_\C@%lF[7akTc@Q/+Q %YXomMY'^oH80[P#d_MNLO_3e8/T;/NP!(lW8KhdSqn#gj-'_(%JO3".0XL3l-`LR2K05kdO/*)FQ8(?\,4gV47#34eDR7PoLI]ET %-DfO<+MC'aM;1$$;o,%SA2TJR#VLT7ccL^!GjFHB^`>nX-?L=bTr4=Wr7K@r6+\GT7TRKO0*L)aBcn=)/L>#;^=Ur;Ea)d!+%[L&4t$Ugc*CE`_$hC"1?](2,52SI-mBYOua5V)u\)V %3`p=",CtYH95*au=F`RQ5TQANF3f<>&66n_PB\f9#p<%rR$DF$N,9dCCXNL[9MaRgQ71t-W!8ETnX<7h2k&*$+=K44j/`th!K:WX %^8K&J:S`Wr)'W2pO-#ufZ7X`L5S$C=bNREQ[4nC$0@,U;!83hm"opu*Cp'UGf.a\VFt%eVp`T3RA.?MGnGe'k=(QCJ$9f4A^/ %pS7)p=P/J'q#oH6%foJQ!%U#6!;?L$U`\X2[tSS0sWY@?r=k4C]!4q*1P`%d^mas %eV`u4eST_m'2@P2:qhHTQ+;X9l74t&Yi8K`!R:t8Z81/j"f"p(:Xigr;9<*2GcP$F*a(V3HU`.oLfY*mT8XCZ_OqR.q3MbN"]iX< %#FJI3[t@7;?TWP5V+)m9#aleeNUg'r:gd\r$&DOfo]=+aj['t9_mW>MAKo;-T:t9^jL@sm'bZS`88q.D5dHDR!QT;Ua9[Y)12/Q7 %Y67uj)sTRg;o'8'6^'MTM3WesjG!kf-L7`T.Dl7f:ap>oDVPVbbE`*RN>f<>!7A[h`EgDdgc+?:'a=&UFl`%Tm4W,hj %b">Wn2G=c>h%(3&a]7\j(Aoa(XT5i5$4K7(P/eOD_n%tk*/#Xn8Sp<:@pN9n\i7p:\lGfkN4!G(qTPsM6t %5"ZlNCj7'1Z#D.1%g*$HI%WMYW5Um769/`SB2;].Knn.!$HS\d\&)$%+PEc$PCI==Q@LnNJ[Rn*W15+^8dQS^4P97*9-?"MPLcqu %6jH1YK*BkkUis-j/LHE%:k8;7.720#9,04gSt-/*r'9aV""Pg\jcmdK@.]^3!CT[i@&9A4qlc(IS>ab!$^5d/5a2nhg/EE"WAnW8 %6Z***40'1fnd!nT"_CE;P2I`A>"2:?guJk4#TN(sOpO(Upc_MNEl$g,&)a&bQ;ZjPMSi[#CeZLT@M$&goO(*e+:`,?8[$aA4+8N-<6%*7GE9'29T%eDJE)fs!gT5@>/'UP;7M0`W$=\.fN" %Y`e2&D:H.rK$lK]-?`"&dm+'T(GZ5-QEL[Ma?f6X[Oc4HRpNg@p.il %0cA*`,i_[4WRNc7ij)OVVimYs=TKR\@)'bqTBdG2U9%`ncG;<`.;/oO.gJWVKLS6",S1%ML*V`""h(KcBd6cL;?5/+jNRKq)2bLU %FVKZ$(-JN"7VB:>FI6=A;=5[VlUq+C#U9%GaBJYLLQ'=aK'D2Dn.qSgn%Dlll^-&':EB'pQ![$q&o`e^f3QnJDQfqraqL( %5*H5$M_M1g!$i7J\gfS/0-b7C,4&#"REUc$%0fC*RXquP;CN'&"m1S2q?Nt[8Z'fB-s4O4?0q'R7qJ(W8-4lolLC7LQm]ELBm(3= %^f(S'2Xq*2n42tm4dGPWBTUXWY+RZr7`rJNT.R9iZ^_+X:D9Q,Q:tVB=l>9ohZi!Z9B_'t6Lp>:!b(f$^mA3fOYogSQ&OQjEd_fa %#Zq7N7[T^-&PKeb:ec[hW\fc(92/,if-/!/%K@jhGplT:$*"c#eo0dlgkH%F %M/3D(k5fjYk6\@4fcf9lJ\i`oL)*[V>>P!h/d4gqn?j7tMa9.VNp*T=K1r^[K$h5oM%*8c]Xl&Y@7>k@M%i-ZQSZ$25t6=>dV&H\ %^bT;;J`18bX"_C`ioUSeNJF><6sMhi_JV,VW4lXma&!"%%g1cLRBsTV73J`6p_/K0'@7aTf]@fRi6ePmY_-Iqa=-8JEX"K2&rG\t %>[!DWbWsh3_*BBCUM)P";C;hd_].jbL9N'DJS-Ll,u4W3$\4@qK>E/jcQFOTT9+=.^HJ!UUSid.]fllhq`utV.=@6)"q3-7oF>nZ %WV7imKJR.(H%7]7iaOiF_[2us_\nYn;L?NMD0a!%%c8!fid#$%P;_0HLo&:R9-( %O:Z!f!:i\cKO_&Q3c:^F"h(fEZ#OKZ+,88MB.;r.JPkS7c0T"jbmi/O=.#m36Qf,-*#U\6cF7&E;#FPq\d %LBcT6mj %U-&tgmiV_.QU@ZB"!0W0EO*RF7OIiKN2AiBog(]^l6KLfY[oemfdSD$nV)4AF;3Dr#,kD-DHU,8A%&0>&F+>%lN.dgfP^s)R965(faian,aWcCXV"& %h+KW27E3=o=J-fB8noC%@?;uS;o+M6e6,&oOC&$CKOcd0l0sI9"3H7VJ* %5c(I3j;%c_,0L7VFXg)7?oM[a4+.5I#=;i1gSL]8IB+A,KW;[tiq%49N^m5QFeh^+c2c8s/%?aa.2=QqA-)8NA0,O:Zb3TdEMbs+UelHMN)HOO=14fYlm*&d6KO3lE!N&XLs8rcN"Mo;80&JQE^WH%\DO-:VuVFnloo@'F+7i %V/qgfZUKG=QXo4'EC/cJ'JEMpJ1q@=b7-]J9&:!)+$fjB.cq.C1Gji2D`W]:)Q\@>B9CSMWV7e,WTc\d/1_2CmYRgOX=uZ_8_+n5 %R++PqqfN&X\$ELkf5*/_kRh"^2?t[N:WrEYj8e<1jD3WO8]E#$nD+WrV&htdhE/QQ\qF6W\J^eB, %4*CaO+*sE@oW2UVnH[MRa:s".q>,Z(^[+%Mi^AUli*_m*WRoBNFg9H_)ZliK;3p;HFrBC.7(!ED1U:;W"<<818VRQ`_Gl!e=$;WL %etTJ`3/Jc=Pah$B_3*0I8X@I_Eq!'emqG,di_H?t8:."'*Dp-`%Y/j+hP'E-J@177@E/!G`c[q4[D]*8P)^"a=Eu?-rL_<0OlSo5 %]PV;Sa7D!bQ:rV?clICtasp5._8.pe1=9Tt*!':Sf`s!toKWYPMd]\XZk@QRLbt4UT8hEMj %R$Jnt73/YqUci;_GHr<5N1N"K*dHm<: %K<.0E@:bXteN-:b?n;tY-clo(@A?%P,coM[#D2;"Y6l->BE,iYdd0\&L:1BP#XB; %n[X3N9'f05&Y3,=4s&Gef<3]'%oE\bCW4*9(1>ahL^Rr$MB6AKF[KP_q,^bf,YW0Z!d%8L=F#*3*;kJHPF:l,njqkUKk?HP2g(X\_Y9F2U(`P[s,j(XF[IN+f3'+]u<0]kZU %1$j]UC]rM"XGBW:QJU#>RXg,9],:Gi&h(/$AScOCZY(KlT>4`u35LD)WF:&Qju4-S6m@OddQ>:tQJbesp*[ZG##0m8(tfqW@os4[ %Uln2aL5p;4^=C*mcl==AE)S"eBqVU8>0o#95O09c;.;`j2YbN*3%UHDdT?9C3PGC0Al(^9&;*d*&pg:9Z:!]GC3\93,g"6F?nXm9 %[tb-#-3U8/5%BU6%AuDl<[[LmG%7LDEgpAjG%26Ho.PJ9_C6%XHd6gi++O+d#kt:^tVFFMT-5ALU6M %"c3DNV.@/0-F(lF`?^9S%$MFN."e74,S/JLIB$=Q_=Y^@b %+Q969Z:+s?@h;%nZ6)U02jm2l^YrSMN8=P<9/m:`Z>!_,!IE]7/kp"\.#ae=El$DR?iiOm;mS&ZDN:'hp*XX3%"^u0apDi %FKeML>RCP\9[1G:o$ncm7r#H1/n8fjZd3rW$oGEsgp;h_8CK';7rZ>]U4H+mKDE8-FHTj)JFp>;E-nHtYU,N!$8d@Bc4@04^i9C5Cnah91^l=/UiR5'.>bKr,<=sVP)qF?Hh(=T%Q"gGXn#TB=$iWh@E1E(OG6S.7sZfKZg`Y0#hEL9Tm&2$ %;NGf&`g5QVdQ!;T%!YkC*_J4Rbmkq%,FupjZo6:.=IeNg>WD'Zp>Z^nD8Tr7"K[`E9\]p]g,lg>2!uF]OVots(sUNa@Rs:N(S#lc %q^SL5rPU=i7N&)!!LU(mM#d557/\sH):SZefX7N*ICBJQ#rFlaLf$\e/8U0,SusH^+@FnGkVotS+clHS:mTTTXb[>HIO=?Z`lJb[ %^dt??WDuXsdL>E.C(!bi+J$uo>S-R?WTKMRBBN<9@>H=0XYN/%##Yklp^Eb,Mc<:$%,%p[P-E=q+N9n'%*4:,8uVm?B]X_U+L+(6 %TG-T5Ri.STOB#nrfd8o`A-)M6o'eo+V6h=02A4/g\N:Z=%`QXe!/2ahp6)7eNT)YE"XISJ&dG;GQ#$\'!r>Qk8aO?n`<>0_Ba1eH %aH)KSfr0A7,E:+tisac%JI/G-YBVLjQ#Z'hEgAQat]RTm3hj==(a/"\_[?,WDb=s@7H)^mD#,XDKV3jO<"agIlj@@ZE4AIrQdE6ds;NV&Ie3gE\lnKC7: %%PgViffIni%jD"*94GHQTr`(V"k^RIIjj!9S&m.u0U9,p!K&I+.h?ThasNhV1]+^dq*D/(.#J^S;:#W+T]DCI.g#83mg"#GNLAaE %Pfs/#CX>sne>bD0@\17l@!p/LQ16tuKg@DmB&]YU_G)EZgob4Ya:"XT8aAh:+AZ0L!*iPV%_:Ug)MO?A"M6Gq0U/ce?qnHKdM%tn %TP)/H`9(<5n!lf;*m^i@1O*RM3\idmN!=RH3lP_f*^SHB/>M$'=DgiT4Dob %?M[pt&4$Pa^Wteq1`-JMOl0PTJ!a1das,Sp!\Vhj;>*BbMj,fD(judW<68Nk[Ccp*Aq=*QP3O(9&!9$V6LWe&UF+=7Qu %Kh3[jo/fO0\4F/BUcrE6A=_[R,Y>Yi-Bb1\N.l!]9dZ#+#f_ssi`ktosqk5KeNe.hcWj@&kuMte6IWm-ts"PRV.*M@hN&8=UJJe!$0tj %C1Sn0OsjrfoeaKu0`YtVA@ubiD9BPLUeAU"XeF*`TLr(),sM)L$X#M(.$UQ-bY(JCqVAr.@L\UA!)HE41X8ZPaX3F:L2@Q$UVNsi %[Gb=O(rRkSF)9<9[aeu7kbPI&_4/#$F*r'BCD,c5:#M*OgN@6nj@,4Gh<;G\&[G$U?l9[bD\h8#g"ToTOEF,T)aF]bM90QPW*_>k %kNJq.dU[K\X;0Fd"*O3KBhP"[Rn0n',V`iY_OH7nP$+:T'W!?Rb>AIJ"DCr,0p;1)m0^V)-U&B*:Q=2W:6,HPR4.(.?o-iq9D/#jW2//7.V(+AY[aA6Ql,bmD?NfJNPXEP]qp?'?ENZMCdH^=E/bj %g^Ck7g&1=3>m\CKBR,b-)iR/i&ZH#Q7LnU70aC2M@0$g+K.#3^khsB5^ecANIV2\YNA(iE&:QM%,U\Zn#'Ym1RrjQh(q,6r,7M$1 %CR9KXf7+pQU4:QBSKn*'/[8IP[YMVXPT.d&AjFJ_fYcDca'9_9;/Jd/9scK(5EXG`>mZ2)A7+Amj(hghY7(4:nfc2dM4$[d[cRRE %"%o`^$0RK`VEU06,88gA705ILh3'r'2"V-n6C*RlG6)8PKtIpke(DXgGb9gdXtgW[72;DnNQ6>K&cq8S]$EXrK>8YPsDl-q60mTG?!XK9_fH101;W!86UD+ %m>5IN0J.$kaIecR$\)W9"f:b:%(:osAor$/.+-[m-0HIZj5k32g %XeReKq@+^jE_>RrO85lhHXQ!B-&;a,,O^uj5_]ZZ53`iqKoDc2,oKl-COkDKqDhEt5W#-%c(+q'D->;iH;/1u!(0XU]bLs=F"@Vc"'?J(:bZ*qiuET32K<6"][arX!*.1'!MHg#SLdESACVi2#!l!2"V/:91;LM7&(R*nTFTiueKt;8?!0bE %8@ZdG"GK5'$60D"\QFa&e6]1%CNs4k1;cf=<66_9gL/ETLc?d;9iq#4#ZXcpl:_7D7]C4b&uYlN(]nnTMq!ltX?Pm')4Ei%[8^Q: %6/Le[!-TV[_>fTCAtYB(`2-XY)bgtY8:(ZcZ'@%'C/OVuMiBMaLBBf-V;gV=2`:au3K:kE#&Y<1L.DZ\PAN7BZ'4j?(,Vm;cn$&1 %HA@\(08XA>6)>'s%c]N>p^RB+M+#G#<#?&d:B?&NYGp!n7m//f<0'YsUP=@./S0P7VT_GCd6Z'T8ss.l55F?TOQ@(R]:m0FPB*HO %e,.#QA4%+$pC/B)=Kehe#O]A3sOQq1!+UH)P9pg6HOk%+>*jX^Ls[4\Y4oEXJFP%GX^`@9)Q^A`#qF75q]sKd:IZ>U/5;Q/7%#H);/Tj8EG4< %B/ZMtQO=.r&/kZZ4-g!'LXKtd;&t4H;IKOp@.RlckaOk?:R%rDJuU[/#Wc2HTH+VgJ_i/A^gg;e15oOHN!8%C>"^/').3Oqoe$=U %";?c\L&@941IYdaTTQ#W\Io2S`dna7\a`k3lMO3"2*cp&C+",p1E5`PLSQk$m7?Lh"]n(Ai;D:+UZ_pMBME%C9n9*Ffi0scZCFN8 %%J,6\4cCQt:PA0tq3k9!!4^&*N,r\9s*Kua,Y,ugFX'B`L6O;BXR7jtJ^lV5\Z"&FS#iB@2L-_oWi.G]d>X4(2Zc3t/L7%=Wb4n: %Jm2mgiRUm\-]oq4/se<$)LV^IQPsFc3L[cQdpkpN!1$l!dJ&KdL'0-(!J!H3@qlMtT=/5;_SI`PFqe#4SQ5aa&k1^!m'Z7JVg2M9go5(q";Y3DT9+R%Unr%dp&bqha./"8+59d*Cl %`fZKWEkS/^*%8rIW8R`\Kn-q%Poc%mKMjK@`XXEV)'XB&:&0mj7_Y]j$,T,=-UfB8`^6]gkUoFcH"IF\rT3^:Z*R$VUPh]!,e],pO7M/df0/$C(Z81Kd#VEPTg'P.gQ2l\&RoCm"O2VSUs7%$eS:>_:+ta>AP3$8N8`C'FboE8W^HX %/P["/7U83XSC7h1)lP5a<=U^/&;-\HQ(]SmRq)\81Nr=j@Gm55.KrHfCQb_/jD][*^6)uM %Od%F76i]ELZ:/05`/u+W;XnF-.iSloH`ZBN3O"p2dPD/3]96*jL=M[o;2o4rlj^Xtg^VWB7 %R^m3)acWmGKLM_LGJJ*0XOpZ!W#P*#Z=TtPXbj'[&`UVE&%T6A#!fAdc=t)AM6bqY[h$,-=FL[[FdQ$I+@eI[PACfT9X[ohJNPjI %AW>p30]"1*8]Cj.7CFNSWP3@+aNN'g![Ep9)uueY]eig2%\C&7;nl''.9-W7/N_b9=.]8X#_\B?BX,m7D%2[)8B#%:9%KmE&]WZY %9.Ia[kBJ;0qU57/f`KAq"r;1R5:+*Kh30IZ5r+nfUm:,B2io(CFl4[io97iAJa$h%Prqk+TdB1`l(aAH<3i?T"LJ7PFKgFN1k?XY %So!70.kc0;.;3m>26p_k#AE'$G';BqP0!-)@r#;iZWIqpJ0q".Zu!p93SLpTjcOX+VE;>Z&rKkUEaaf!9-\SJc@?pJWJ_?$E9\P! %PhHPJZoEY%@bA]hV:-&rrtOB1nmEDp+ZS%nj5G:dCjjm7L<@CHN7P3j(AL/32mpa^N%IK;;B[=Cg-W/#_b/W?nEHaT;Xo4)3`hbm %%'q,rRBh;TQ%2<>=4DnSo-m[?rL@%N!f;_`K-,u%a^?P,A?lo*`J?n2L+(!K3-.>+S7KqK%Y%8dR637L#O3epL6O;NVc90qF&FY4 %UTA&#AYbMNd&RGuC5;sWQI:1"QXS7Sd\F*ik=P_Fk+T_",qCgN2bbNtQ['-?,DV_lkG0dgX(EK%e?@Br8_?@h1/-aaA1D8i-R6Z/ %0j7+l:Bo1/dOjZkq?k>kXBfs$,T"#qW!h4cTqkIs!rrPUlB1"Xm,U0M%>InQ123JIReL.;4e&`#!JP@]_#Xr`aUh;;W%5P4?-+0: %GfZM>+E?LF8(WT7A3R9oSek_i+E %^edP,WSpSA5Zj*[`KhT`FTR8(p-Hm7G/S-7q1-4RA-U.9bbPe^e)P4c10c=<:gFpd-Kl3*>gI[D"$Cl\Fou*>K9I)[[N7mJH$_rLr99J3Ycbpk]7@k23%ZO2AT\NZ.YT!mc9C1l3 %>L'78U$"L>nj]fP'HB`$qc^-R-u1D=%/+-1#:'t;B&"'nQ4G*4%3M3i$^hqG4Oq<5LjWok1aPq$(l;c9:K.uW56H[e,ns&D#s]a) %nA0$)(M^2U/L[9joXK*?$7#`[B3O0L8?u?s<$l8[<_QRMDM)KP$ra+K9f8t%\B$RPD%Nu`7J>*(<=MF.$piRBncgAO60.Fd[;sO. %[r=2-6DKtN(etWaP6%^uUgYVY29CfG81=ba9)`GY=JD2Z@a_#_!KF$caXYPAf`h`a(ZnN:Lm2O<;)p78(I4,1FE<;`:]i=*AKL+k %,`DX(G^j1?_BmFX63,=^fO0k%nYGMBO\k($[R+\#)K;%B:%T\WJW#U\8MaOO/\2'i')QtDaG(!d4tYR:8],0P!_A4n!DKOZn!6Fs %!(l=WPRK7^ZA\Tb8Ad<*816EdJM$sH5b5QbLW"eU]EMHSqih7M %(*:[N8/=iQf^*5g4(->n2C!%5\^4e_b7+&(_*P](d;)]=;uI&X((#IR-k%f9)?=?JRj3PPY+KM65TeuNUo0unLA1H8#,]X3& %YlML5/8T&ib`]UX:B@!P/m1n?VF2Pt;@CUgDQ*//^bI8`3Ho-YZC\$F#NoVaTo>!0'uur*&[m`&HhJ'Q[T3=N1uEuk,n>Y5g\X5d %!:R)ZKjP#K#C.V]==hGt.HLU*EFbF6@[L`BX-8PEhe4>CL8TV(j %ne)KGR41_Z5n=6Y&l;B/9F]>P1b,I:b\>-X%Fcr5af9oJ3b!nqN50)V8p>X/`@10AZR7k %7TBEs7?/2d8-lL++hiX<#\m&D!DF(*Wb"!hV^4>9WPc"+sQ,M-F7'AS25GPmmod\em7O.IJ8:CuTU@W7C96hR!;qF)@^P51iEr.GDl$\?UI`VY=A\ %a!4*)d[#Un+WFD3V,Uru>ShtY)J5+G`AR]qYS0I"O=%pGg&Jb\rt"mSiW6si<::lGhpo?R]\%W&aVQnr5Mt<[]\)"8&+AiRQ`HT7 %3rJ89s..G_HSnQB0/eMa/81gX7u?ipFeFk@t!r\]%d1Yo9[AF %h=12W^7P=Qq0oo%G^K=4?Z3s-h[fDJp?(qjj4/:!p@U7,>^lXjeqU[sRfdtCqgE\]k3^(cQ0m"t5F,7HUQ.NC:,c[rIsX2hC]?M% %?'!Ir_d+:\V)prVb8I7cNO%`iJ?!?[TW%]N:`)(K.a_*q/NoS)K#!8=0;2m9c`[^8ge#HS1qn^Dq.KJ(QpU %::foMe]lX(DU7bAqY&1a:p4eT+"lH"GlMru\\+Eg>i"_pVXa4_*GF#0)k>+Gf8o[;oC;hNiGZ4"O6X*QgUkXa[s-<.s/QWj&(BXP %a0!;EANMd[e'7G?$(7j[l`)>ghAkr[KAP/UiUOLeW9ZG=+-2j?)D(i7>Hd5O*P6su>?fnEX#:FZW)q.]?QG-gX/1;QmD&W8+)q&@ %Mp#JpRW/'k]D_;YG-de2`R4'[m-jgl\a%B"'ji"foB#t?0-8tVriWq2O84+4iToT[YE*SrH>1j[qto55?9_].^]&3Jp&-ahiX\g, %oS;Pj59/MWL](M.>#)e\H[D[D1>TXmN:!h;0C/2gqXcrDkjH$p]'^Y<>BeT]Ed6l0Bt8XqSj"04et],@I94Tl=3FTF8$BGV?SeZC %DO)*q/skHZ[H[DKL>1N1qtnC6^Ktnfl&<[Ef#QlHO!j=?gu%^33W7;cj29@)(Rs#`1eA>?Dn^RHs7gL.`V+ME83?),\RtT\(H6tQ %IIlS;g[BTlF]$2GTANt9?U!!*X'rV$,!g=]^@$#iVpU"\p@WobnKc/HhQqVfhY,Fa&+>ic`2+4+WEJ+l/0T(]#8DgBe)oXl<7KcbAFk-qo]cp4^G@gh>*2Zr;D9?cTh2m^OJMsrpWXbrGhf/ht&j5HeB9it!&*JpdKuWST8c3ki2f_<$.D/+3/Nl(@1Gk:ce5j_u_UGh2*-A'6)> %51<4LGCb+9D,86DRdiA`-[g)Y@+Y>]Ypml,r\Mog'6f7/f#muQ4N %33_0NGIOrnig/2PM/OI(hI#_i3]XPdgaHhFVTm[MN5Z["cJs"W(&Q)@[XW]dfTc)j4RuQRhNoe(pMXU^I=Cp8s)q&mmN;IkoD;U;cb2R)[JCLBk*rPmQ;:]!GB^n! %/(MJZ4[8$Sqhm]4!hK6RHFR3V>55?mT:Xb$IXT8q4l81oG#Rk%DIm$F/H&LqODFR3GF))1:^[,GU>.s.%a]g;^&1bEI&_s<1VF-?AdJf(o]>^0,!o:V1jSa6hTH[.O=K\t_1]kbZ=:psG"\g0h\i]%mPXkQ:"C)nG@ZQrTDXnp=9RP^9@*c %F]SKM;d[.P]J32//m!K"q!e:Q@Jao\;8;tRG3/GPl2LDQn`V;=:N$$rUq-"?[i@@'ToG0O>PjdWm:=['fc>Uh0d]Nnh>93O(*hMp!o*&q(0 %18Sk1:=#PkjN[)cp92s$HWJs'Iaio2ESn.Be'hA/3&6WAeg1@'hbOcD:L7L7]3j)!`6"V;+g\L5F4jaAj$b3AR:c=r^Jfo+mdPZh %gO=:o5"K_YI"@npL53VKckkqECraj3/c?18q!,i\n\sOHT4T^EO-khYD+r\:VsV+Pn!@&^r>I'LZgE8$=9s]RqRnrYh;Q"qYKf4N %33V5?oD3NX?GFh4QUCAe\oli&ES\3Cq9ZL]DHT"W/?RYA%a>@H.*R5g\S(j$eOk=nY26\T.YBb %oB`KpkH;Sncr'+X3cso'LHC"Vk,1GiXu[!\H@1c#a%,:3dFA$6bd-)s]RKnTq/qH!rfR#)ZogOX3c$ja0B]]!uZ#5L7ZQ6i5T%:52*G0Zp %L__sJ"7+X3%^S=#B6u\`p9^FYkqLl@HFE"SCsVG#Se&.jY@i2GbkA]@mJ/Hjo6Rk._edZbfq&_\4g/LF50W`5T'c>-g[fa"GDFl. %X_3!)R-i^U[WdM[hQ:Gf+'t3!Vk7i+phq"/8!iX\^p=8[Ua3&$W*(RW*M% %3H$"qHh%.HS6aS1)qf\4SP@qn"4DH>R2l)/`:N[WYtcAP8aR?IAk,]4VE-dB%n8dgY.Jj3[fB'@,N2qXG%h#<65!'_0\hgK)Nc`ZO>Fl=p?0BKo %2Qi?B4=m3"qs:CEle&^N6INoPD:p!j]<46]iilT[iNS^'n$B@jXCK._1!(b&CWk1XZg7Nl(PgPH$AW3CI\3/gB,qplb=Zs2Bj:99 %cE?KY]%F2%Qp3.+pA=2m3pTn_>%%?6^tS7`Zi7%9rG$oZ_ZFVgcd(7Nme!O`jpqj$rBjAsGrSr$4q %_aATsT3ZTBP2&YU\KdC#I+/'oI>3jRdi_dDcl)G[uVl9RH$pEq!o8\3DUuu'eQJp$Y-G3TkiT1[P3]psI %pXrR0*V"1#'/,Dgrl^QtH?h[o03@3(EX+?/P`9&.jYs&"3kA!Y2?GGK+!l86O8,]FcmscQcFj3'?QEJABYqLrp"@(Yp!\-!^1r_-99e,o5AL#KG3hGZ %nBpP\bI+OWgX3Hdqtb4LP-9B4g%P*rFk98DN"+V>Qe_[:dro-QrG@ibs2U]0rhD[i %I*(5:LWOKN4MOE*`F]tJEY5Tk1V"B"5$s[VgALgG$_.'JA'4-KF4o$YrOpC^h!N7<9-p07(7jJlIrq)S(L8Nam':Yo;@1B>gYI*p %R17r@N\7[.,;2L^T"aj]aQ[8JC!"b6UasB*qP?VFE]e*krlE2m>"L']Hutd:XIlA=4*oV##OK4cq")geii)HlI=B[aX'U:em'PX[ %h&0!qHJ3;*jF_)S")=0eJ9sXeH %%hIb'i.krk\@q*t(AP&9Ib'9Q8,YP%f8-Saq&)6l=e6ZZ]cNd0kuoO:[\MGMVWd\.D*)kq-HK/=^4Ne]<''/89HNE[W %D`l\\Z.n0KE128^8S9g&4f>idO"Sg21HptLq[WYJ?,UFSiS`&X8tup)V6%)-1\l.c4c`lnd^KBG(n]oLLX/![7N5C>s6"a(ocNEu %3SA.:HCd(`++Ee#mMWc:%o;O'S@m7iB@QPM\U'>Fl`kkU+6G7WTAtp3V0=[pTB2(0\U*nfeSKQ'\U+1nmQ&%%5?Ep&\=]eI139%O %aLU^:o6jPVX)E;*L$3K4HjM0o/\2J@Pd<'rcSf/d3m.#1d4JQ8:.>KX7YcU\[kaaPF*TNVSj#!to(6*Mk@B)!%okQk_M5G8msWQT %rK[6j3dtYa(\#d7djsN2X?6,Ik5=Ra94q0\gKbmcbM2[]=T$j]j\?oaT4nFtE7r"bppF9L^3KN;Y0!:J9bO %?Fa82-VNN'?FaDea0.UsaZoY83I]A)M*/u9p.OK-Q0/hUkC)If!o,Ag;Z&>1?sAnB_tm"6CW8Tfni5=D4>5ao%9:4tg2uDSE]X=8uGW(iqmgQM']7uHhLg*ZNUk]t98CNb&0 %mR_L;](Kd@:2T9$aR-2mHb%Y7>D(c#dVW@)s7i04=MKH>pn=qeS^-gk@MMU[IUAp9qXutR_Ck.qS]S'?rOX`>*MGSs9nak^E:A06kb8U.pM+ts %]-GMjO,pY[$qj+Z%]50D\n.$G%V@l4j50b+ZcpDEO^0bd8(uG7@>Nnq($XqoT'eahqpY-I7s<,ocFTr3\BX_3]NFPWJ+DF;[<@nE %V8L@2g^\gVG'MW7YKe3[4bo(?EhadB!0A`Uj83JVlcOpF3O+QEZT![7,g9_&aj;>hii2@*S2+?5T:RD"Z.'%Tp=KQ0gtS0lj[8fb %PbIU2lWnhP/q)[F[/C:["l'%Hl?_7BIlP.;raGPFgg0[B#BC>UKDF%p\To\.Cj!F`HrJorYOCc,23i`2mK(M22`F:tl+Khhms>"Q %HT,g1hqn?l,M]Z@TiDt[pZ;)@A&D*P^&(QCfNpa8GOM\PoSDn(l!Z[PI2\\0]mj6P\C"mD%pelZ$=ghuVq:1UoKu\DI!C.q$GSh' %fW,7ki.iqpVHVMus'n7gjGU5Aq8MKG!@],B=9~> %AI9_PrivateDataEnd %%EndDocument end count dvicount sub {pop} repeat countdictstack dvidictcount sub {end} repeat dvistack aload pop dvistate restore %%EndDocument Pscript_WinNT_Compat dup /suspend get exec Pscript_WinNT_Incr dup /resume get exec /DeviceGray dup setcolorspace /colspABC exch def 0 0 scol Pscript_WinNT_Incr begin %%BeginResource: file Pscript_Text 5.0 0 /TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d /fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets {{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& /CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ {ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ ! ! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ length array copy put pd_CoverFCRange}if}{!}? 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M currentpoint snap M 0 - 0 Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d/ySP null d/sW null d/sSU{N /uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ d/ySP ~ d/xSP ~ d}b/sT {xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix astore concat 0 0 M}b/eR/; , d /AddOrigFP{{&/FontInfo known{&/FontInfo get length 6 add}{6}? dict ` /WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d/OrigFontStyle ~ d /OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS{makefont Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 copy ~ sub 1 add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for & E /CharStrings ~ d ! ! & @ E/FontName get ~ definefont}b/mF42{15 dict ` @ 4 1 $ FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 add 255 idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for/FDepVector Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 Encoding length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName length 2 add string}{FontName length 3 add string}?}? @ 0 FontName @ length string cvs putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ putinterval cvn 1 ^ 256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 $ put}for & @ E /FontName get ~ definefont ! ! ! mF}b/mF_OTF_V{~ ! ~ ! 4 -1 $ ! findfont 2 ^ ~ definefont fM @ @ 4 6 -1 $ neg put 5 0 put 90 matrix R matrix concatmatrix makefont Pscript_Windows_Font 3 1 $ put}b/mF_TTF_V{3{~ !}repeat 3 -1 $ ! findfont 1 ^ ~ definefont Pscript_Windows_Font 3 1 $ put}b/UmF{L2? {Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName get undefinefont}forall undefinefont}b %%EndResource end reinitialize Pscript_WinNT_Incr begin %%BeginResource: file Pscript_Encoding256 5.0 0 /CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction /hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign /dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma /hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon /semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S /T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave /a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright /asciitilde/.notdef/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef /.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet /endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef /Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis /Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve /oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put %%EndResource end reinitialize %%IncludeResource: font Times-Roman Pscript_WinNT_Incr begin %%BeginResource: file Pscript_Win_Euro_L2 5.0 0 /UseT3EuroFont{/currentdistillerparams where{pop currentdistillerparams /CoreDistVersion get 4000 le}{false}ifelse}bind def/NewEuroT3Font?{dup/FontType get 3 eq{dup/EuroFont known exch/BaseFont known and}{pop false}ifelse}bind def /T1FontHasEuro{dup/CharStrings known not{dup NewEuroT3Font?{dup/EuroGlyphName get exch/EuroFont get/CharStrings get exch known{true}{false}ifelse}{pop false} ifelse}{dup/FontType get 1 eq{/CharStrings get/Euro known}{dup/InfoDict known{ /InfoDict get/Euro known}{/CharStrings get/Euro known}ifelse}ifelse}ifelse}bind def/FontHasEuro{findfont dup/Blend known{pop true}{T1FontHasEuro}ifelse}bind def/EuroEncodingIdx 1 def/EuroFontHdr{12 dict begin/FontInfo 10 dict dup begin /version(001.000)readonly def/Notice(Copyright (c)1999 Adobe Systems Incorporated. All Rights Reserved.)readonly def/FullName(Euro)readonly def /FamilyName(Euro)readonly def/Weight(Regular)readonly def/isFixedPitch false def/ItalicAngle 0 def/UnderlinePosition -100 def/UnderlineThickness 50 def end readonly def/FontName/Euro def/Encoding 256 array 0 1 255{1 index exch/.notdef put}for def/PaintType 0 def/FontType 1 def/FontMatrix[0.001 0 0 0.001 0 0]def /FontBBox{-25 -23 1500 804}readonly def currentdict end dup/Private 20 dict dup begin/ND{def}def/NP{put}def/lenIV -1 def/RD{string currentfile exch readhexstring pop}def/-|{string currentfile exch readstring pop}executeonly def /|-{def}executeonly def/|{put}executeonly def/BlueValues[-20 0 706 736 547 572] |-/OtherBlues[-211 -203]|-/BlueScale 0.0312917 def/MinFeature{16 16}|-/StdHW [60]|-/StdVW[71]|-/ForceBold false def/password 5839 def/Erode{8.5 dup 3 -1 roll 0.1 mul exch 0.5 sub mul cvi sub dup mul 71 0 dtransform dup mul exch dup mul add le{pop pop 1.0 1.0}{pop pop 0.0 1.5}ifelse}def/OtherSubrs[{}{}{} {systemdict/internaldict known not{pop 3}{1183615869 systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]|-/Subrs 5 array dup 0 <8E8B0C100C110C110C210B>put dup 1<8B8C0C100B>put dup 2<8B8D0C100B>put dup 3<0B> put dup 4<8E8C8E0C100C110A0B>put |- 2 index/CharStrings 256 dict dup begin /.notdef<8b8b0d0e>def end end put put dup/FontName get exch definefont pop}bind def/AddEuroGlyph{2 index exch EuroEncodingIdx 1 eq{EuroFontHdr}if systemdict begin/Euro findfont dup dup/Encoding get 5 1 roll/Private get begin/CharStrings get dup 3 index known{pop pop pop pop end end}{begin 1 index exch def end end end EuroEncodingIdx dup 1 add/EuroEncodingIdx exch def exch put}ifelse}bind def /GetNewXUID{currentdict/XUID known{[7 XUID aload pop]true}{currentdict/UniqueID known{[7 UniqueID]true}{false}ifelse}ifelse}bind def/BuildT3EuroFont{exch 16 dict begin dup/FontName exch def findfont dup/Encoding get/Encoding exch def dup length 1 add dict copy dup/FID undef begin dup dup/FontName exch def /Encoding 256 array 0 1 255{1 index exch/.notdef put}for def GetNewXUID{/XUID exch def}if currentdict end definefont pop/BaseFont exch findfont 1000 scalefont def/EuroFont exch findfont 1000 scalefont def pop/EuroGlyphName exch def/FontType 3 def/FontMatrix[.001 0 0 .001 0 0]def/FontBBox BaseFont/FontBBox get def/Char 1 string def/BuildChar{exch dup begin/Encoding get 1 index get /Euro eq{BaseFont T1FontHasEuro{false}{true}ifelse}{false}ifelse{EuroFont setfont pop userdict/Idx 0 put EuroFont/Encoding get{EuroGlyphName eq{exit} {userdict/Idx Idx 1 add put}ifelse}forall userdict/Idx get}{dup dup Encoding exch get BaseFont/Encoding get 3 1 roll put BaseFont setfont}ifelse Char 0 3 -1 roll put Char stringwidth newpath 0 0 moveto Char true charpath flattenpath pathbbox setcachedevice 0 0 moveto Char show end}bind def currentdict end dup /FontName get exch definefont pop}bind def/AddEuroToT1Font{dup findfont dup length 10 add dict copy dup/FID undef begin/EuroFont 3 -1 roll findfont 1000 scalefont def CharStrings dup length 1 add dict copy begin/Euro{EuroFont setfont pop EuroGBBox aload pop setcachedevice 0 0 moveto EuroGName glyphshow} bind def currentdict end/CharStrings exch def GetNewXUID{/XUID exch def}if 3 1 roll/EuroGBBox exch def/EuroGName exch def currentdict end definefont pop}bind def/BuildNewFont{UseT3EuroFont{BuildT3EuroFont}{pop AddEuroToT1Font}ifelse}bind def/UseObliqueEuro{findfont/FontMatrix get dup 2 get 0 eq exch dup 0 get exch 3 get eq and UseT3EuroFont or}bind def %%EndResource end reinitialize 7500 VM? /Times-Roman FontHasEuro not { /Euro.Times-Roman [500 0 24 -14 493 676 ] AddEuroGlyph /Euro /Times-Roman /Times-Roman-Copy BuildNewFont } if F /F0 0 /256 T /Times-Roman mF /F0S31 F0 [49.785 0 0 -49.785 0 0 ] mFS F0S31 Ji 148 450 M (OMak)[36 44 22 0]xS 275 450 M (e)S 308 450 M (is)[12 0]xS 352 450 M (a)S 385 450 M (b)S 409 450 M (uild)[25 12 12 0]xS 497 450 M (system,)[19 23 19 15 22 37 0]xS 659 450 M (similar)[19 12 37 12 12 22 0]xS 808 450 M (to)[15 0]xS 858 450 M (GNU)[36 36 0]xS 976 450 M (mak)[37 22 0]xS 1062 450 M (e,)[22 0]xS 1107 450 M (b)S 1131 450 M (ut)[25 0]xS 1181 450 M (it)[12 0]xS 1219 450 M (support)[19 25 25 25 26 17 0]xS 1380 450 M (hierarch)[24 12 22 17 22 17 22 0]xS 1543 450 M (ical)[12 22 22 0]xS 1625 450 M (projects)[25 17 26 12 22 22 15 0]xS 1794 450 M (with)[36 12 15 0]xS 1893 450 M (automate)[22 25 15 26 37 22 15 0]xS 2076 450 M (d)S 2112 450 M (de-)[25 22 0]xS 75 510 M (pendenc)[25 22 24 25 22 24 0]xS 240 510 M (y)S 272 510 M (analysis)[22 24 22 12 23 19 12 0]xS 433 510 M (,)S 453 510 M (and)[22 24 0]xS 532 510 M (the)[15 24 0]xS 600 510 M (language)[12 22 24 25 25 22 25 0]xS 787 510 M (is)[12 0]xS %%IncludeResource: font Times-Bold 7500 VM? /Times-Bold FontHasEuro not { /Euro.Times-Bold [500 0 19 -13 492 688 ] <9EF8880DF84CA6037EA701F791C801F7FFC801F928A7018F0AC3F73203F852A6037EA701 F791C801F7FFC801F928A701F86DF89C15F73A0770068875877D778B08858B749A799308 7E916E946B8B08358BFB144773FB58086506774E05C1065A076706774E05C7069DFB27E1 FB0BF7188B088F0AC3F73203F84CA6037EA701F791C801F7FFC801F928A701B88BAA9F91 8E089C939892908B089F8B8F7D8E7508A606F7450772067A3F5240538B084F8B68EC89F7 2108F72F06A0C805FB4506BC07F75506A0C805FB690690F71CA9EFC88B088F0AF852A603 7EA701F791C801F7FFC801F928A701D58BB93A9C5008090E> AddEuroGlyph /Euro /Times-Bold /Times-Bold-Copy BuildNewFont } if F /F1 0 /256 T /Times-Bold mF /F1S31 F1 [49.785 0 0 -49.785 0 0 ] mFS F1S31 Ji 827 510 M (function)[16 28 28 22 17 14 25 0]xS 1004 510 M (al)[25 0]xS F0S31 Ji 1043 510 M (.)S 1071 510 M (The)[31 24 0]xS 1156 510 M (home)[24 26 37 0]xS 1273 510 M (site)[19 12 15 0]xS 1350 510 M (for)[15 26 0]xS 1415 510 M (OMak)[36 44 22 0]xS 1542 510 M (e)S 1571 510 M (is)[12 0]xS %%IncludeResource: font Helvetica 7500 VM? /Helvetica FontHasEuro not { /Euro.Helvetica [556 0 24 -19 541 703 ] AddEuroGlyph /Euro /Helvetica /Helvetica-Copy BuildNewFont } if F /F2 0 /256 T /Helvetica mF /F2S31 F2 [49.785 0 0 -49.785 0 0 ] mFS F2S31 Ji 1611 510 M (http://o)[28 14 14 28 14 14 14 0]xS 1763 510 M (mak)[42 28 0]xS 1856 510 M (e)S 1883 510 M (.metapr)[14 42 28 14 28 28 0]xS 2053 510 M (l.org/)[11 14 28 17 28 0]xS F0S31 Ji 2164 510 M (.)S 148 570 M (Features)[27 22 22 15 25 17 22 0]xS 329 570 M (include:)[12 24 22 12 25 25 22 0]xS 32318 VM? %%BeginResource: font MTSYN %!PS-AdobeFont-1.1: MTSYN 1.000 %%CreationDate: 1996 Aug 26 20:27:17 % MathTime fonts were designed by Michael Spivak. % Copyright (c) 1996 Publish or Perish, Inc. % Hinting Copyright (c) 1996 Y&Y, Inc. % MathTime is a registered trademark of Publish or Perish, Inc. 11 dict begin /FontInfo 9 dict dup begin /version (1.000) readonly def /Notice (Copyright (c) 1992-1996 Publish or Perish and Y&Y, Inc.) readonly def /FullName (MTSYN) readonly def /FamilyName (MathTime) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /MTSYN def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 161 /minus put dup 162 /periodcentered put dup 163 /multiply put dup 164 /asteriskmath put dup 165 /divide put dup 166 /diamondmath put dup 167 /plusminus put dup 168 /minusplus put dup 169 /circleplus put dup 170 /circleminus put dup 173 /circlemultiply put dup 174 /circledivide put dup 175 /circledot put dup 176 /circlecopyrt put dup 177 /openbullet put dup 178 /bullet put dup 179 /equivasymptotic put dup 180 /equivalence put dup 181 /reflexsubset put dup 182 /reflexsuperset put dup 183 /lessequal put dup 184 /greaterequal put dup 185 /precedesequal put dup 186 /followsequal put dup 187 /similar put dup 188 /approxequal put dup 189 /propersubset put dup 190 /propersuperset put dup 191 /lessmuch put dup 192 /greatermuch put dup 193 /precedes put dup 194 /follows put dup 195 /arrowleft put dup 196 /spade put dup 128 /arrowleft put dup 0 /minus put dup 1 /periodcentered put dup 2 /multiply put dup 3 /asteriskmath put dup 4 /divide put dup 5 /diamondmath put dup 6 /plusminus put dup 7 /minusplus put dup 8 /circleplus put dup 9 /circleminus put dup 10 /circlemultiply put dup 11 /circledivide put dup 12 /circledot put dup 13 /circlecopyrt put dup 14 /openbullet put dup 15 /bullet put dup 16 /equivasymptotic put dup 17 /equivalence put dup 18 /reflexsubset put dup 19 /reflexsuperset put dup 20 /lessequal put dup 21 /greaterequal put dup 22 /precedesequal put dup 23 /followsequal put dup 24 /similar put dup 25 /approxequal put dup 26 /propersubset put dup 27 /propersuperset put dup 28 /lessmuch put dup 29 /greatermuch put dup 30 /precedes put dup 31 /follows put dup 32 /arrowleft put dup 33 /arrowright put dup 34 /arrowup put dup 35 /arrowdown put dup 36 /arrowboth put dup 37 /arrownortheast put dup 38 /arrowsoutheast put dup 39 /similarequal put dup 40 /arrowdblleft put dup 41 /arrowdblright put dup 42 /arrowdblup put dup 43 /arrowdbldown put dup 44 /arrowdblboth put dup 45 /arrownorthwest put dup 46 /arrowsouthwest put dup 47 /proportional put dup 48 /prime put dup 49 /infinity put dup 50 /element put dup 51 /owner put dup 52 /triangle put dup 53 /triangleinv put dup 54 /negationslash put dup 55 /mapsto put dup 56 /universal put dup 57 /existential put dup 58 /logicalnot put dup 59 /emptyset put dup 60 /Rfractur put dup 61 /Ifractur put dup 62 /latticetop put dup 63 /perpendicular put dup 64 /aleph put dup 65 /tie put dup 66 /openbullet1 put dup 67 /plus put dup 68 /equal put dup 69 /vector put dup 70 /triangleright put dup 71 /triangleleft put dup 72 /equal1 put dup 73 /semicolon put dup 74 /grave put dup 75 /acute put dup 76 /caron put dup 77 /breve put dup 78 /macron put dup 79 /circumflex put dup 80 /dotaccent put dup 81 /tilde put dup 82 /dieresis put dup 83 /overbar put dup 84 /bracketleft put dup 85 /bracketright put dup 86 /colon put dup 87 /exclam put dup 88 /setminus put dup 89 /cupproduct put dup 90 /capproduct put dup 91 /union put dup 92 /intersection put dup 93 /unionmulti put dup 94 /logicaland put dup 95 /logicalor put dup 96 /turnstileleft put dup 97 /turnstileright put dup 98 /floorleft put dup 99 /floorright put dup 100 /ceilingleft put dup 101 /ceilingright put dup 102 /braceleft put dup 103 /braceright put dup 104 /angbracketleft put dup 105 /angbracketright put dup 106 /bar put dup 107 /bardbl put dup 108 /arrowbothv put dup 109 /arrowdblbothv put dup 110 /backslash put dup 111 /wreathproduct put dup 112 /radical put dup 113 /coproduct put dup 114 /nabla put dup 115 /integral put dup 116 /unionsq put dup 117 /intersectionsq put dup 118 /subsetsqequal put dup 119 /supersetsqequal put dup 120 /club1 put dup 121 /club2 put dup 122 /spade1 put dup 123 /spade2 put dup 124 /club put dup 125 /diamond put dup 126 /heart put dup 127 /spade put dup 132 /radical1 put dup 160 /space put readonly def /FontBBox{0 -954 1043 900}readonly def /UniqueID 5087393 def currentdict end currentfile eexec 80347982AB3942D930E069A70D0D48311E252234D51741E18DB3A68E8AD10242 29E5817A10E796A78D2C7F7C1F50961B9A57AA604C9F821DBF5A9295197BC666 31678D7D2C7E1F8F2151CE0C29EFCE46270570F4301C5DAD1B38884732E53DAD 05DFC36B020E726CA575F71F04ABF2B49E1F1D6D2A08A477658CA9A48F1C8CCE 14382F0A42201DE56E2821EE2B0E91A818B1B753D810EC2428DAE5153B66AF66 A6CBCBA4DB2BF926E909644DB41326E327493B2750168D128A100FE56C76B17C 16F9CE939588D19C6E9CDA7CB062196E66E38E537670953934FFC63663C7146A 12277D8F7C13B563981D696E0ABE4478EABEBA753024EBDF3EE17F2613DF08C9 228159906A48DDEED6212332EF96023E5C73EA55AAC6A2B938138EC26B4732C1 1E8FED889257E9D4F2002935585D9AA2265929948E37BAB7ADF12F1A22B3C68D 09A6B6C4E14B1470ECF0874D92D964CFBB8E2A0E4CBD1A114CC05BBDEE4699A5 76AB8C0BD8499B166E9E60B21F45561279F6474BB497E3D55DD09A26264FFA6E 8D9F228E894C456756D321BB5D5932C5BBCD39EB95F5B7D4DC2DA25D6773EA6B F8B758972BEF890ED520777E90B017BB4F0F1A7076DA33C972773E8ECFDF76B3 47FE529109A1EA0D91B80161C32E4DFB08EF07F23680182631BAF1BEA4A5B9E5 05311402D9263290E3CF4409B44EDFE28038A0F2101424A9AA4CE83A902FAAA4 EE6DA88833898CD9EFB74A321458332CC9A62C93501CD1EB799C6DA44F94C61A DA58024D0CED31CD07BA36A70D986AAAD1D3B9C04D6ACBA7ECAE982A8712BA24 B26BC4BF9B042C6FCC9BF7D3404804E72D2B93FD4F56771495070AA0FD181C35 CC11CF251BE8DEA12600643F2B79D09AA1BCF2636F70EDF1F7E0E434DF83B888 598ECE0100492A48645305B4BB8BF16CC994ABDAF88EE7CA62FA459E42158053 1F5BDFD3BD83467260F184AFA17ABFF39208581863ACD6632867C05EC9C11A91 0E396F09359713C5B37AE855D3A2FF8657FB89CAD579EB1BAA0979EB227202E4 4306B7C89D6B32C41795F994B293A6BAF7DF640C3F68CBA7674E695121892C8D F86D2C12158D6628BA8643AF6C51D4241FE528EEAC4653FE8A99CC319F7B1351 325AA04461810D536E61F220D309E0BF6A55EBEB2D1605B65B5550F6DF814FC3 E80ADD43E595DFD4C947C4126521D740199C6F98826DE413EDA30F7D91CAF649 87B9519B8329E91644DB1EABD71A9BFF215C4691D38024D081D4F769B5CD39EC A167E006B69D797D17D6B9623B7A86AFE5C6E7528FD6D2338146CFA3F34D31A5 26CA389AC1AF9D7283931EA406E45980A3A56107885A74F2FFC195F0A44AA374 7B7A4F2B35E7ABE1C949ABEC591E5850B654494A5081D0752358A7D90814CE95 31D9857C3B127EDD77C3ED727BD0BE7A8143701624ADDF7C7D84D37CDC05E3E9 7357D51E3CA329EC76C1924D84091FD864C03D6681136DBC5A81B93FC581BCB2 AE6BC9EAAF56BD9A4B7EBFC9A87B6828856BF2A0FD3D744755C02404518AA492 077EDF1527A71C3A07A751EA11D80E1CA421EAC1F10E29DC40327C0E0F1F6E17 1E2CBCA87CEE30BA6977351361E221A57879D8E1AA7A59F69714389D2C861DF3 7439BC8713D1771269DA938C8712BB8D868FD89084A7A8D843AA906C85D1F7EA FEC4DCCE5A8AB542C082B6DCD262C4CA3DA711CA55F28FFEA848E8CCF3BB482C E7ED0D0F1476DBC00704E58207E89AFF346B09DA6000AEA0E6DF562AEC72B822 6F1C0A9FD7D2378B0CDB7B9A6D51CD54E90051D47F382449D5D23CF6D176913E 82474C08F6E4E34577374CE08643CC099DB37FAF73F9D768C3AD7FB7E632FB2E BC0DDDFE6233B00AB0B3E17E0C816093F5D0BCD6A575E587A677670BF7D72506 89C7BCDEC50559B82AC0B3B0633638EC5D98AD125DA00409EEF477825168094F 02D3898DCF2C2EC2BBBD4E1BA25E5A4B8E15A6DEDE6005EB2B36EC465B2FEF95 32ADF7D35CA2EAEB5F8780AE3D7C09AF01A444FC709E3B2954D504F53D52050F 17CAFC9F57E64535C8FE2213E72DF4A9E8A38F4D4AABAC1FFD1145F5AE667C8A 01CFD78DC45DDACB09F27BBD5D23201AC648891138787900E880D512875E6CA5 8CC884933B164B53B4D288FF85B9B94B03EDD9D577670F4842870603BD0F6DA5 C01613B9A8D43CD874D4FC67DA17BD49320FED903E5B57879FC5795689C812D7 4BAE79B680544E8C6482BA00FD3581A366F61345B6936493B2BC8450AFB3633F D514D71ED865B791F73CE883AA7A86368EBDC60FE713081D2C0AB4057260AF00 2E5D298EE0671F04C33B7BA068B476BAE2DA48C383663A4921C02FFABFD59151 25BAF1CBA2E26014CB589D6710A4E722B2C642786DD2B783A4347FC66E0158F6 99BDB8BD2D037FDBBC89580597C87EDC84C9412F6BB07FF97A9EAE3DA693BB8E 576D3849D244FF89F24A9A5809120A76037A6085BBCC89D096EF93DDF6B33D39 69A28A0E33777774499D00595B4C4FB6BEB5DB1CB20AC0628CE23BD021170880 112942830CC65438739442C1101F09EA0FBF2686B6317CF0269278B451B03090 E9604503A6B9D3798C5F1C925BFBFCEB527C1262B8CD9C0F18A4A254171BB0BF 44FA6BF978DE049096B8B39670EF6AE5790F6435F0C5509E1FF24334085429E3 B64B48F3F91077F8CA3C21B0877ABE2EA0779736ABB492D050CD016D127FA3ED D0FC7413E7E4439A122C37E009B8EC4F958921F0D8501F6AFBA85A2FD614F9FF 40AE81D821AAF6208C1CAD31ACE6EF57F7BB10F21D81BE5C2EC55730425770C3 5DE27F6630641AF6D39FE9B2610C965C867C001ABEF1AD4D4C7D262D602719E5 DBBC327E609FF1F4982006B7C45681AE3EBAFE8AA4EF1DCCA0F37D3FF2CD55B1 609B5A654B6A2890A53A9CE022BF99657209590D14EB79D6E380ED246B1A632D 8FA7795D22184917B063B58E9E2D87DE7655EFDC207DBAA36A2BFF92BA88C591 9FF06D085FB9FD0AB19F01F4C3181D9D82B88344C63A75401862F92282E49241 CACC5C0AC86C72A5D75BE7D819940F21C8F6477BA35C5EB5DE7E244CB12C25AD E420823E8933FCB2407AAB99AD7A7B56DE0A21A3D7FBBD04C90C58A3504A9B5E CEAD94043A16EE8E766E550F6D094730699B58FF84366C47BC2D2A99AEE14499 E86A236A2344DAD2263C09C6F982AA252A4180880D9FD7E90C16FFAA55A36EBE D8A1E23E4792B3C7EB8EA63F60A08075F0E4BFB0379CE0DC4B7FB5C113CBD837 F25C0B6F2CD5FE795E300F1245C99C842EE44DE3B8A352841DFA72B9CD6BECDB B51E7A956470E5F081105AB88CC28DFFB66A85D0C75D86F3D7F34C6AA8B0DFFC 8B9FC516602116FDD4858E7DE3AC948F05877B83B7ED7FFDB0B69DE973127B62 6973AF1CAB5DB213AAFD9C6CA273D5485DC390225252E0DA375406D26011CAC7 1A7B0C6B3372D2F1C9DABAA5A31C7F8D040B2E099FD742982436C64D34E053C3 DAE86B94E16EDCA81ECA39395F8BB552CB2DB50C7F2A9ABD3710C87017248D6A 1EB7416CE5EDAE99EC4270FEFF0DF173A7C18C13A75BE389A4A5412F69C4EE52 E411CFE3716425DEAF057C40E0F9B2008E69BED121CC9EC4471A210D71823E8E BA1FAF6D88C1F8B2DB2375FF469BE556CC6208EDF9AF791AC411E80D74BC6F39 5AD859BE71805E908A0047A12F958A4022FD1EBD4837087F283BA1F1B623A584 A390663DA5548E43C314D2486E3831F8494C789AB4C636B78482E830662A15FC 0CA3030C25A481740DB53C4200EF8206F0E097740F3D031544530FA10558CDAB EADA046EB00F7C807C73AAD1E3C60D9057A03CD8DC22946E637BB60A776A6516 4D24BF91A0C9FBC19DBFBF3B8A0FFA91F438F3422595161200360D3321892D01 92AC05BC7A74E52506A620A810AC0C7A5AC13FE0BBB2A4B2090D1778595191FE 755C48148BAEA2AB58DD6CA75F6E4028C9C836E6216C90903ED51C1C33F7B5C8 FFFE3E2DE23B0B25AB93FD935C408C678BDA7D623B1861B230BC8F5D21B8EBAF 6A2DC806FDFB21D662993F4DE3A85284BDE964FE7899B541BB17F4C4808BCFAB C3A746A2F33077AEC41DB37637F4B5105EF1D58C64AC52CC86BF963F875919B3 FD33F12A7147B3437B6894CF916D6D3972830B4F849DC2E06CA9444D0EAC059C 3B20705B77810C916554C94C7BB36070783A37574CC482215D03C436D2AB7A1B 705BC5C2939172839973E4D89D5F57D71A5D1297EBCA20A2947B1590907D172F CC7BB1488B1C663A06B91C139DA00AB40B16D933172C3EA66601AA0CA05828B3 5FF25326184555BE5D36956F04A1BCE10F90D2DF77263E1AA8D79859BEE17780 C64187224E1739FA8A4AC464D07EF68101480E0925E7EE98FD8C0CF5AAF30F77 1383366BAEBC03D5636C1A1A81D9292105B67FDC74576EF3C2D4089BC68657B1 5733898A0B26B54D9BE19CB9990CB054E9BBB5BCD4BE87ADD1629A0D436884CB 3E5CAF84C55093278393568251B4450EA719A857379E027FD259028CA68D313F 997616D51FA918B91DBCE6213FC3ECACD4585BAD71068F27243CDF7708F46EAE 16A7F67913D201387A98776EA8B0C5E459E52B13754C191E27B3BBF8CED1D54A 72DFC6D7EB1578AE9826441CB476E54856E2F9BAC9F10E0B5FACEFBD3250F232 F611666F5212CBA21862BA9060523BB0B44002F2FB29B038332C893EE3313C62 AAEB1FF0DADC860AD1F179489C06C9BB96D843CEABF5196E7C1A57DFF4502BA7 1B2B711653BE32A7003D6EE97209B2FB6C4F22B8DB8094166A28B993B6246B79 2ED65DD84000F0D4A547B134E46BD4E495B2763C48E93BB7008EA14C2FC7C346 1460711572C7069903BF49F11F3CE4556FCE122A015D54BD188BF6FDE4889DDF 7A92CA1FD50E6604D11DE3B3380ECE1987E9A446BF220E0C93230AB2A7C6084D D955C3ECC1CDCE0187A0E564CBCF68F6133C0F2613208179CABDE9FC93685DBF 8B845C25B7249F11EE48DD48504759C765D17D387E0CF0B20C70B57377AD90EE B2793FC47ECFF08645BC4F47A702EA24FD69001CE5283266B371DD80882C9886 F231E2F9838D9E765093B77E19247365F559B075CE1AFF75671E60152047D44B D0B69B168B39582210A09D224F5226715581F43A9A6BA2D46968227D071CBF3E E13801CDD7F823F3141BBDB8EBEA60B48B267898D5E27D431BBF528A5EF830E2 6E880734F6E1375ADDF92739347E128551D7E126ACC2A82FB7C57336E5653BF9 7A69027C90DC7179E65F76A7C43598F000A723A7EBB299E5B2EC549859FFED96 28198C2C02A4FF2A58C0EAC12497B16A06F67CEE100BCF8AB48BA229F930C3D8 0752D05EE821A0C226AB62858FDBC6CF53E9B225456FD4F8ADC62B582CE58305 4547E14D0EC426E1B00B5A8E342141C52E36C05FF715953F1BEF7AD3A36C9220 5198A2EE73144D89ECDE4E5B760BF5E64D09858B8ADEA9C12FF4BE89B345F203 2B7D40F1F94832BBF21E7B6FDF42A7602688D0545E1AEF166B8F78DABA20110D 765981BCD22C6560B769B52A4B5B7A14A329BBF34E5395F218EDCA121500E3D6 98A705B524A3A448C2EED6E5F17FABDC7ACC3182959C7D969A5E37E9C39C1ECF E85DC9154C84301DCFC58337ED83103EB593D165CF7F5339D748662AFDD55060 BF1E33A0D73DCCEFAB95EBC614E23E5B0BF9B900E92FE25E6AD98692A39B164E A46B88368F9AB8DE07953B3A9F0D889EB2B9BD06CD6FB26515699BFDE76CADE3 A9ADF56CCD694408A776682CABD4CFB8D3CA37FE900B46F4D153CC3C58C36AD7 9C692B71B36FF152CF92FD8898D193D3053A16067EC47FB0A5EF1BB806C5BBD5 D75B613667A85D1E73D8B72BA47ECD1702B524B9DDACE9ECFF9B10FB9C83E12D 7C9D7220EB8C74759FB0C45F6892E5C6B3A502F06F45608DDEDAE2D178344D93 8CB36B6EE82D7321106D2C948201B3D7A95DFCC7BD3A1086A584718E3E62962E 613E380CD99EFDA0DC033EB33E316BC8E9363B67EE5E04119EA06BEFAC94C4C4 4448812B1A7F7FCDD0824783FFCD97707304D8275AD1746A6990C3C2D5607C72 F7754F150A3B5F6175F453EAE89CF9E3A53BADF80115B7858E113DEBD4ADC291 8F3BB2454C35C3F1077C2D97E067C98B0205613B145F340A37FD60F7176D265B F6451256269CAA16A48D998D80581F48CBED667D690E855E235B4266E8F34619 33D9645CC35214AF73C4FC5A42B978A54BAFC561FAEF93BE0316B2E4B9927C10 0CEA3016DC42B8EDC939AC6AD5DA1B6FC86F21D92A5B9841B214126074027559 CC1C3DA05536033F2A0AE7F10F8A064AA145DD79DECBE6FCEEAB4C91DB9DFAC1 73AD124DFF0BBA9097A84E8D351780382F7713E15F73C5CFD3C5BB48726C45D3 83FC2BE2732C8FFED42C87666E0AAC7BF6AECC01E98A701526D642B90ADEFF9C 48D5B70728EB378E93267E1ADFB7444BFEAF4725FB5CE72D8EE7DDCD03D3165C C32429D87565E7DCEC9E21FB34C1099E4AFA0D1993D4EA3B2AD68D2796A5FD2C B2000DF2D8C730C7426854554D5D2D42041BE13AC3731860774B540D88806493 CCE8188C2F8BEB189A484D9F639E3D350A6776B56C2E51A56BC96E2773BDDA33 9098928E095207B8B485BD0652F107B8E5ECAEB68B7136F12AE4630EC2D9BD45 2283C4F5499BDC4A20073E37CF77F868A417708EA7DEA3E7915AF3D4B3F1EBDA BB60E37C3CA374D96B31BA0031D53DE839CCE388FE553C073C1BE5CAE06DCE80 12B1A91942068BF1EC74EC261F28EC5DEE7953DFE6C4C346F5E44EC312761038 9D265A7530E18EBA2D3BEB6D0FC64F32DD4D288DE6FCED7086A0FBFC506F7362 79F97F052E4CEADA7AA92A5F23EE5120FD2DFC954E5C8DA037E52D63C723C55D BF0CCFDDEB20741D16F5DF0C2A5A0D1275BF9D3F37B6086429FEF89F59A970D4 4581BA0B66213F51C4CE33F104AE08A3201706E285C69151968DA35B2A78082E 587028B405806CDF366C5D4C6E04A6F39D49C0BC23A36A4BF7681A3BC69E93FC 3063F81F277400D2B45B931BEC7D087F31BD3B47B3F17AE6A6E4B49EC5A44234 E55193D981033EEE43B79ABAD0752ED28F01BF12051B4511A43C2E8ED484D9D3 63FDE0129A311FA62E3D2BCA70577AF1179DEE5137D50C011F74EEEC1230651E 071BA0CC9DD9D7D4FDFD21F190A425E8988DD779AF006009435AABA80EA233B9 A68823DAB1580742CD026EE9EE874723BE5AD6BABCFD9DAE0CC9A3E4567E1BAB 53A5774550768EB4344062525D0836827569EF9A9BD2CE53CF85D7B914C8AB0B F01A9743B86EDD1764BE91F100CDC9270C813D8B3895A55B46528B0B90CA2820 0343958C566F25ECAB193C2C126E594A38EC6548BD47CECBF94550CC9DDA5DA4 AACBA2AFD4CA539709357FF3E4BA59BBCBAFAE3086F4D45C02B8592ABF94200C B8BB560645794014B384A5AB8C34478222BB942AFF1C95477C997B0FDEE302F0 1F7A52E461D10B0241737574BE4545889FB58642A3672A63CA19E8357396D54E 18B6054BC91278159C22B391134A997007B04E98B8B036D8CBFCC457959A9885 8B734485736A5D1C932BCE464BDC7CFFA86FF1A7DABF37959D23C9E436FF6DF6 65E147EFFB5F7CC0794B01F3B87CB74020A272A798697D12B88BE43BB192BF8A B33B474AF17AA13C3CA3190C10F6AB16C589D121738CD71EC64A610E73A21112 20C2804D3C602CBD9047DDBEAEC51296203F4DDD130D6748C819305196501904 A00E0A52DC656A463DA07805852235ADD5BCD6953F07C700000DF1FFB52C5EBE 6373747117DF5587D35BE15B4854054B0CB08AB96D07FA4355E038ED868841A3 B4A1FA58FCA715CBD29D4D34FF42DAFB7F65A3990B974AF26D1BE701AE5E696E ABDC7A997C4288C4C8CF6C10028C49E763DA39F26AA17F7BE65AA155D49B7594 D702AEEDDA87891CD3D32D198F0CB2335369EBCB171287550EBC0394DBBAE9A6 37A789D052C7C51BC9FF6ED08791005BC6C0D730A49016AEDDD6563730AB510E C2BFBB8890D289DFF714DD074848DB372B453844EAB8396536AA5B93B6C29516 218F50622EA5B44B15066AC27026C40224FAE3C0A0A7B26E7271251E2CE70EFD A448B8366529B147BE0C81E4FA0A67D40D440CD80A0D5649D4EA919FDB09D20E 4FD7AF7A8BE41680450979317EDD65B6F16012995935C27F7318CAFE60494B2D E7B81D6B3813CD0075B5C93A3E4C907F27734732B553689DD7E1BD92033FECD1 425DEE94E68DDB2983555FABBEFC10B3EE02D5836DB9632FA5E06E3D18335BD9 99F4F2AF2222997392B905A262E87D379F3828E4225082DBD1F805FACFF2B6EB 2DA85C06DC8BC7A1B6D7FB7E33F30E57E75133246946D05A16A6D5F2BB73F46B 1AAC466005BC64A70C4ED52EE20E31DC101B1053FAB7D4D8CD2159CB260421B3 261D18AAF221A0E17DF1B84035F57383D3FBBB1509D7744BEDDC79A21FC6E4E2 CCF6EE21F7C1AA792823C4813A812A903402D36EC76AB3840BB45D31277811B0 CAFE17A7909B39B8B139A6AF831D928F751539625CF88E56353E2559B1E8BF89 9677561617726941B20A123D6EE3C6EA8F5FDFCE7EDB24C47FDF560127E219C7 B70E359A2F8BF5ED5696C589BC3DC55B8067609C69022CEAACA887F4D42F5ACD CB1B7A20730739D9F64A359D76372939492FD3054DCD0543D608401A557058DA 16E13041135E9E7A6A0DACCF3E4050E01E4AF27531777C2EFA12F82281B7CED3 A3B49FDBD0FD218CFB3407858EA0CB5401769E5583CAA61ABE0351F66424144E C51F4C969C160FF37477F887139BFDFEE290FE77F0BE527103A6A30DE6C3494D 269386B8525B30CBEDF4D6C2BA04B5C843F76B07A11935954F48C55B9BA63F2B 1DC3231B5FF9F875D2DD2A071B63DFA057CF9988A8646035F625F63E892C449C E2A90A2324FC7474B53ADF072F5F6B389DE6D4243B13DEA6D5DEEBC9EA428FD3 5B13B3648B8084AD3034C40E683FA6AB99B322DC91A946911A63B70B0B0A604E CE8F5E74DDE98261781218DF73B6666ED2C2E5F4E317BB6CEB2555CD82A6A1DC CA0564AE1C7111BBEFA789880448DF720129F80F856439F261172671801EE0A6 90C2ADB81434FF0A56F008A6B35CE08C8832EC2393DC62578CBA2EA45C07E61F DB658B31E80EF9EEF1F71C776ABD17A17EDCF9E852386C0698A55F384F434254 7CB07C038CC38426457C67C1E8FEE0D42433B7FB9E68DD533550F1E321E0221B B47658C784E1F2D81E40205F919590B71658F02DAA29CE3EDD19A2AE8191CAB3 430F61D4899DC44E7B8883A3E6384B63180F500891BF54C75A7E0B679C6CFE9C 71DCB785404DE3279F228B9389953BE4330497B00D90E0D164433FD693B3AFDD 4639A669CDBFF930558CD2A9C54031FF23EAC02FA2FC878FD29894FC2A3C181B E30D7C80FD5026B0E933B1875AEC4A1C3B09F0AB78B686FDBC60C7CE7998EC2A 610DD543C70D1E7000F3C4BA6EF15C0A0CD618FD08A0646D582003E1BB8C4C28 CDB11FFB0B764023F023C1BB8486BDBC341D865E04839820CEE2B8F0FE22513A 8AD2DFACDE078504648010888BAB29011996575E1869D1F8CA4784B848851108 0E983EDA926D56FF4ECA3BC6A6B16B0D0C720A62F363CE48E83AB5FD243121F0 8AD6B47E326BDBD5D5FFC684307F3C40BADACDCC8049118E49EFAF4F9570823A 9EDBF3FE8121C94CCEEB2600347CBCDBC08FBCA3A972B4411F7A5EA4E8F1D890 779AC095FAF29103242B8C090F645AD8CBABB555D50B2969019113712C6F0584 08F1080BC71302C2B9B79647FCB1CF9DBD9ABA4C5D6AD2FFB010E8C734BE14E6 18AD1B735B099F0FB59B084C11CCD5579071E8655430474F7306CA9F49C46DC0 BB548E5A8F0D608E85881BD83A1EB98B4E92FE12B39E9C7ED86C46627B6CD527 C4D3D92894835F47A80F1F4DB0C73387E31A429002C4045AE770576E543B63B2 A1EE2DD7F4EF11A1223E9514C9D75141101170F2774E52201AD076FF942ED6C9 7FB6D1D15E7D7C8391C3D25A0A08422202F93B33F38E58F8AC975A41B2549E95 C5268D79208143E420DDD94B97EF2ADF9E7C77A2F38BA50E03B6BF43972FC9B1 9C22D071CD79F26BC6A2AE9442E57A3E0DC49F30B1A3F9A30D8985900DEB6CA9 090B90656EE40CD44F483415C71D4BF140E3D9A1617CE38320955680F74E120F 40503C712E4438EED9354969E3217C2F297BD277D1B0C120A8DA45E2BCD0DDBC E00EE2A5553AB493918AD82EAA20AA736DC5B93BD0E8094BEAFE5E3181D39028 C1A2E30CD6B2816150A81BC3DC69C9A3B732600C45FCC2F0B485FC9B69233384 58A054C570AB6F8E3B284E07F223B843BF38122A2E816A458D6A062E2E0E1B76 060082D2DF3B4A5FF911C089698FBDA697CF2A3FA47C17A734FDBB33EE87A5AA 068D21745CC4661C19AA1AE05A8C6030739EB01685E839793CD5BD5663534363 80622A0D597517B684C04965DC1F13B5C6116C549DBDB42AFA964789A223EDEF D10C57EE4B1BB1B06B6942B64EE66E1D67E82D4CEADFE47ACC35080AFE3657BB E687E353F4C94A3788A260436FA1C114B9003DF5DA81A3A471624D73472D61E9 A616FDAB3ABABC225C845FD8F12103B8F67474D7414833074E47222BC00E86AB EB6D8630DF3A9D84E981EFD99C9FAB64494894F6BF88045FFCE054C50945B75D 2A00BBFF2F68EEEA5FA19D5F863E128CF160182CA8B38EB1560F07F4DDB97E0E 759077E70BC4C2B309020840C288951B56803394D1D57B46DF96DDC9777224BC E81E9797549F18CCC16CA7C25202C4569EECCA6E48EC9C0D911C7D9DA2FD8316 35D913E54A181E56F8808E9A8D27BCA1C4DF10CC927794F64018A4B14E003B88 5F0C18DE9DB23401ED18890021623ACF1AB9C9DE1FDD33D4F6903E4CA4C66853 4F99F05CDE08647B3FA1A8DE467C565D9BA0F6E1D09595B886353C8C67E5095B E53F1A841E258BF2B8FBCDBA798CE77B7D20D39940E6F6C8DD9A004778BFDB57 BCB735DB413236F0A7B864CB6CC3BBFB1B33A23EDC484920E5582F8248933D9E EEFC1E5E5386567B576D0362FD750EA3FC631B31E61EE1C5D3D6A0AF9F4E8A43 6212D359F7BBC9C69DCF4169EE4A5DB65A990AE63E4773607DE4A7DBB85CDDDE E4FA65018C230900CB9F868885CF80AE58907134616D78B7179130F76557557B EA8F19B62EF87F9F8AA93A5F0BDD78C6CEB352ED458806DCE1DF7DF2E2CC34B7 24C61364D707EFC4EAD4A8E3DB732E8FD1B5DFCF8C3C46D531D266113B63B7D0 1FA053EC28347FD23A35CF986F5C73378C8ABD12D1A02B98EA98B40F4ADD4F42 26D773BE1ADC9841082A9C9E7A5F99534FD6846127054B2437D220A04BF83D16 EEFA7BDB4799DFDBD2DADB1276FFC40C6C24F2253245F21E230C822E323CAC69 4FC0B7903574CE517594F6C22557E231C26768C5DA5572F3D473712C85225BFB DA924766D9544ADFC177ACF94798AB07985FBBB8A9F230702F3302B1511665B8 1E33EC69A61F6EE5AF160A034784C83D0BC0039E04AF3DC8EBDE4DC0EEED8F1F A37D462EE55E63A3526E8278AF663BF5BA1902CA695E8AA7C4EE020FCA14BA93 AB5A0DEFF681E7602135A13DE7567192764DD5D26B1B5862238FF3ACF20711FE 0C24DA756AE629E477DDABF428FE4E10AF898CBB8606BAF96D29627E68A78A48 3D47DB135DE7FC53ECD46A129D64D17C3FB16BC53CEF1F1581976BEE603964EC 3CFB28EC4DCABD6DAFE9FC854C69341DBCD4AA1CBEB29789AAAE56A5C411437A CE39B035C26F77ABAAB2524B7EA71BB664815BBA7F1BD857BC69281071E74CDD B91C28E59C3007EB2280BEE16E14110AE00324B0A72C65547E3A0509B769608F F74073E2BE295BB71ADAFF01E81EC86561C7095A2E5840F54C3030A83045593C 43216B8B53269CF3BFA5A16BC7F258B34F46B5B505BCA9B5349F181D9DAB8437 2994660A77742AEC03AB32A3A952537782C7F489219B19393A0C1A5D9EEAEE30 5A1BED8376E534163B3303AE930E816F818AC3C5314A5E23460D8E6B08DEEF8F CCEB7F89E83A8805708CF5A6B2961455693109059C09182B7E08AA1C3261863F 6F546CBAB64E249BA5ECD7AC030973CA1C69E3A37FD5474594181F5352830007 0F404F5D4C2B9D43AD4445A7CA703F67B46B2735F7EC1D01B3A2D023B11AED08 91AC2BDE28F32ED40DA3420B6F94EE07E269F4A8D07E29F13DCA62E59E14F3C8 4FB1836073DD34E29BAE513F9888BBBAE7FD0F0EE251534E4D7FA6F27C64992A 134E8ED6910B29FCE7AA2DA8A58113422E4798DEEEAA323035170A1D20F6A4BD 68C5F495F42648210BB8F056F5DE8420240651AEB4B03A43D18589E2F8CA7380 3864002F2709D60BC735C6CD5692DAA22D8BAD66144ECA52DB3F0910680EF137 6CDD3886A37579A1AC30E349F9EC89AC8F5D7BB880D459BDD538FD516E9780B0 9A907E1C047F2D5EA6D385CA7B1132BB7FF7E81539D4D7EBD5C59C32DC82B44B C5DD698048789CD16C51B072F73E5A6E68546BDC32306E7D197E6D4288D715C1 902E58B6E93CA321D45F7E82E379D569D040BC64352060E138CA449461CF8E51 BEA1CC4A9ADB6B5C26A72E6EE8C089E5198615A621323FC9620FA12770C36A22 AF2277823090F7D058D3434A894FFCCCE04022686AB11670DBB6E68FB6E2336D 6C18569675D219E7B6F9FCD6866FF8AD749B6CDC7EBFB573757AF230A1E9BA4F 2F53E8F0F20660E105F5733B3553DC17B0580317BF4B87376B53D6C668F16972 3EEDDDD1776DE62B7E0E0E966C5F2F43DAE61339596C436C64A2369EDED778D9 8A65B3222148921E381BB46FC0BA1DC3DDCAC224D0B9F0816C00BE91C503769D 969FE0BA42B89452E84B4F794B7D9688B66030C7734F63FCBDAE262E6B4FFC1A C235BA67E0E51331118FC59B325B630E6E22CB55321928B7D153759A11A47DF9 D679CB9D10714C5FBDADDFA76560CBE22A4D25943AA856B0B0E190FF91198091 4072C697C556A91B894D3B1A096E0AE9A74D26105CDD88630F89A00EE9BD92BD E8B806A2D1D4AF265C796D1EE519D25CF196BFAE5CD837A0BD2F76A76B4EE224 1B2CF9D89810807AC10B3BBE67179F216FC44920E28F1FEBD64C2750E1FDAABD F1AC1DEC065CD4AC4239B3DD6A93CAEBC22BB7097FBB4122ED104DF6A7D1F4C7 6A1C8132FF188B243867B38708F8CF59563E72D5F82B302F2B0FA4EF4D877138 C14E250D36032E9D53B48F6906D73DF3A682439B8AFC64FBFA324C56D825315C 8F3FEC5FB3D8F73F6292D617D29F427FE5DFC85C3F2DB0882BEBBBB704102B3A 53918441A507F6F468E4EA1B8C46A4E2DFFC654107FAF494C035C0A033591B83 E8BF142162C7530A1BE5618206B97EC7E92B1B80EAB0061746AB3717ED65EC0E D719F2A1C73F105D88687FC5B00617CC7CD288CE7A938C9F9C4522B7B43ECCF6 7EC5F342B62085938BA3C1D60255A9DFFAF237D6CF752A52B252BB6C5AE4D6EC 39F7DA8427D6BC715D7ADA63743E813AFCFFE0A07F8229FE2074A82E315EB7DA 0448BBFD41D06C4CBDAB1DC014A259CCE764AE969B1C6322A1BFCB703816FABA 522713B50878897A91870943B20869D52A01DD76695BFC30C39595409EB8F2FD 6997D7A3820E2DA1BB4F7555EAB7422CC31783E2A20F54D9B8759CE29F0461DD 43885545FAB24357C1013C1FF6D778A01853AD30356382830F7653BAF57E2F6C 3AD79CDDB2BD9376EB94616F975D83D85214593FF76FEB63297FA6F9A2566A1C E29811D81A03FF5C5493686DE4C5AFAB19283ED36241BBD6BAF5573CB6EBBF8D F5EDCAD5F69E8B65580AD4D6A4FF6C02D73BD52D21B73A6E69D4857E99BBD2AE 2714A953DEA568878E338166311B45CD51A8FE1E0B6E6CF1A03193F82A8E428D 9C3D2BB51D26E0AF099F2464E235DCA9899BB75FD54C37AC15098E1AC9F33E49 FB89E0F106FE9BE1F152E4E33DC4050C3517B5EF7BA154F0B267A7C35115F6EB 6BFA3D061831BE470F5478A664DFC4E0AEE11300B30526F50AB8274F3D56BABF B9623B0C7D7030C67EA7088E4B1C767F8A00A01EDAE880EB13D2E57C909556D6 AF8E067AD42A1250E61D50ECCC72F67B50BEE2302AD6E670E0C940C6D3FCFD8F 426FC6B8EC86DD4461545742E2C1952AE52EBEB78FE286B72B75A3D7C0F0FB97 876A85421BC38CCAB03A436E42A09835569D741679103A52ECBE764C4E1B6FFC 50738E98C154CA75C51925C5744EA5299C85331D7BA5DFBB67E8AA8DB9C4EA55 9C4F6404D760EC9FCFC572B691E747FB7D6BC47D9A43DF3F8B6873E929058A30 D37087CCD0A7A7C2593E219B19B2095EE0542FC49E7B7EBC8FA6208B96E89101 4B4BE49BA7510784271E2E8B4D2E4F6520BCC4EE5C7633B79150CAB9807A1B01 B50E81BFC2B7B190A3A848B3DFC15E8B47AFBBAD5C7497A564D927B680B0976C 5DA2693C87F18356931D8CF9AC134A4A496FE850E6A5091956B89776BE6D8939 81E0279F5D01E605CCA08F6B4C32A6D01F1FD9E2B243EC60D5781F4B2D6FCA13 CFFDAC188F4F39A155B0F64E1BAD587E8C1953723C6C59D47321289D9A086DC5 7FC08F7F2DA512C57A3B9CE4461D711F25E495C5E50740A364798E6B5B732D6F 17EAEA63ED222DEAF39D2E813601F3B2F416465776CE7154242C5CEB14F6CCBF 23EEE181EB1F92DC7C580610902C6CDA5FD15E096317549184CCD14F1AE54CD5 688D5FC329114DD48AF6DB7524414DEE65B3528674768F9DA68CA2552A770E11 1D3327943CEC52A7B23DC55A98CBF2C0D3A6E2ECF15A1F093E391AC11CAA0922 696275B87137473FF0EA59A1ADAD12C529D76568DF36713DC914D57DD5E298A6 034F6D918DB3BEDAF88E74907F4B03C41B5ECB0773FEF89237C9C611F0DB6F3B F1A31EB60AF8343680184FBBC3136257D2777802039F57F2BCA2B1515742C640 26848B669F8D0DF5A6871858230EA9A9DBA628CD40269F33D9B8AF5DBA58D4BC A52F8A7A2A38E817B7039D6C4B40DA09B4F2DAF8CC12E14D96BFF75D61B41661 21E56DC3D0B2D89E31BABC8E1308A86D0F6E3F28B4E87328CC47BBFA115500E2 2416BC153A68AC0299BD50C833E3C1AEE97EEF711449DCB33B20763E2E651D42 9B9D3EBC3429E942429A00641715E268F9E226C0FCDA7A2193C42FDBC3F6A6E6 68F27DA5AFD2539C04D7CE3DC030880DB21B7958F625ABC5E6DC94FAF9B84697 90DBFDE65C89955F83CA117F8E43D8AB9E5D8664F08A7CBBDAF4C86D786F4F0F F19D9947D08317BB5E184346EA5A164D9A558CEE77581AA92DAC056584ED3666 3EB708D1114D73A00A001D440C8C338E7CC7710DFFAC6E93696CFD245663F457 C5BC29B9029BF91566E8B147016F0B3104BD8863F104A6F0E431CD33BEC307FD A817BC5571D98C3DD1AC57A899787F2903D410941CFC818BB56C19DDEDC91295 ACAC20931525182C091AF85AC3E161FEA22F8E65B44E746F8FD40754226439FD 9A660E2D02E1AEC9D9BC214F5F16A4D5BA4E1364D8E8C80A8E57096B510B5A8F BA5FE6715046BFC52EAC796F23B4CF996F8CA9ECD2361AF5D627A4076F02BBF6 15556801BC06D014A020C7A4D7BF87CDAB9EECFB90B4C8F6438E28EF599C08E1 646D023449FE2563F481B23C5765CE24ECBFC6EDFD5E69294E7910313DA056CD 9C75DCD4722371BCF97AC6DD6D2DF99B35BC98C05932BAD200E1F5CE5F1A39BF 2F14AE9BCE79157ACBDF8AE4193C18FBA2271AAE398BB618DACE59C98424D17B 4A9F152912B5AC21345C1E0C94631CAF2B511DCAB35876A204F0BDE78BDB5F82 148131DAD9C0BA3D98EA870BDFD86DFB920006DBA5B4037B831255A44112C3C0 4BA51E3EE35B72E271640F37E6D1929615D75B8574BA58A2CF22264E1EBE3AE4 74C0CC9EF06F251D9A702469CC838F7DA8EE2FFC1EB92368E839D658DA04AD3F D83325A439043E6489945004F7383B5B77F9D799F3CB07D8E4446A00A8C1DE81 D01F48AE998A898785609A498CE2FB0526FA2485F06F4F17E54141455D0C6E1D 8D337BCE938A70FA1F9EA9B2C1FBF1166E26A0512DE4C347254DF67369F91B82 A1743F1F26794DC06C7DABA10079FAD6FD2B559DACC704EAFC12C204CB0A6BF8 C97971D1094F307953947B309DA4823059A83AFA23ECDA8FCA4870E5949DE858 F036E50D3F193A705537E7A131256E72FC4F4949C49FB40C470480464629F987 D6E4058A70D28ED1FAF482C3E8E402BA5D2E9A8ED50177C356160F2D38A5D187 75E2F204D9767953F3FA4C0A0F05EAFA33AA5788CEC8E64948D6DEFEC409901F 7C2611110827B401F3A7A309DE2311FE4A27BC9ADEFD3B297E86C696C57C2C70 066438FA37876F8C0275458F82E6FC15D6B55DE4CBB8646452A26FC3D8248BCA DE704766582D20946FB5EAC8739837DCFF5A1E84EEA8D9C21D137CB93DB74925 250A0336839D32C115A5FEF9ED71D4E5A505230F6AC17AD3773A5E5A094BB390 0FA0BF3055897966A0BD052AD21E5CB6F327300D77CCD2A0283B5868023E86E5 0E064E850E45DFB3278799854C055CF83FE98AEF8A5ED9059EA6C1EA5B4916F4 673782335EAC2836507A3A2AB61917E24140454924863F30E5C7ED786B537922 7D4BF411FF8FFDD037FC30522BC8CBB887E860D871F59628E1FFA0BFD7FF2DC2 57008E5DF7FDE2F02DCA442646EE35238075CAFB8ED068E50EB4D6B82EA5F7EB 3DEC3C9132A8ED6F1559F530A04A4550E83A87A09CE39F699CE8B42D17EBC0EB AA6B916CD36C766160357404B227FC431E1AA8E34B68864C18BE49995C92581A AA084D6FC95599770D84E567C3A45745D84A9DDCC9ED179582B3F4BD021A28E9 913D8BC40FF6178C7D0233BB2D876F91B3DB7F9B74A6EEDB70D2C363E8BAD3D6 9B1C028752D95086EDC8CFCDB2DAD247ECDF88A28F245BCE710B796C554914CE 83E4D967AFC305D6BC70A004ADCAF4D354BDA1427DD0CCFFDCA32D9E5E8EAA67 A37E145252D468ECED627F2038BB4533B00475AE81BAD8A49B9C8031E3AFE5AA E493E4864D5B9AFEF5331E4AA436BD6B6FAFE43073C9DEDA76821B787C8C4CDD 42F14DC97383648AFAC72F50E40671ABEC730DC100D4E442B76242726C8E569A ACF6E43ECF9E5376F0BF839E7EE78689EA1DFFF44E97F93D0A98D19520DAE6F4 D88A6159B19FD2897878C26B816FA99DF3C99A5DD18A702A0E285B0256326636 259700ADB9D79608F0341F6753120DCD82D4D80DB3F3AFC0A84BECE5C6AD87F7 E0BF915ABE08E7F39D92A58894AE7C3753A68CAEB56529E899D29EFCA137553D E0CEC1E27FE7D09198237B25B33EE059424E032BFAB5E8AE55336A9A22BD84B2 67B8141EEA7A0660C75C32CC9040C91694DE84E975BC52797CC4983A44044E9E C79183C985AA9994A8547A9AD5FD9BA515A79671B7E912974B4BFB58F3C1F421 8987DEF25753839C5A335C4EF125596A19DE6D28C10D648FFABE683D55957737 AAF73E85593F5173E70A8F9136943175FC0A1CBA166FAD4857AB9405F3CB1C96 A824EE045D579436967ED9295FDD3C7D931D9A77539F886F768FAB2D8EF6A987 BC0452AE7DFC2BFB25620EC056246B7DDCD11E68BB3A2D055DF0714AAEC08E88 067B6C4DB719E49F1C310BC367B67AAC68CB72588D9A11E22DDD65215EEDB812 78813D9C09A97E219CB5E968A8882C79EC2BF4A0B55761384D585A7E48981FE6 24117FA09AC46D5B6E538609292D9C63874A192C1CD25FD5EB5BF30E1602213C CC5708AA7A28775AB1D669EED45B8AD5BB8AE72CF4C827F34228BE33A0CD40DD 3C1FA757DE434485E36D09800F1C2D28323B4E7E73C8F5F79346D87C617C5BFB F6E908322FAA26ED50BC66CBF71E0C026705E162A370822AEF8AA022860164E7 FD1E7FB81C5E14DB0A81659DA7BCFA650B72112994922D416E98D30E3169F696 E843B7B34C554DBCF8029FF5910539A66F55B7666B861BD7E2BE7A9B00D44CE2 EAF55A98AAD03319380A8F8378EBAD79823A27057276F9FE454C119C03E20241 674F5896B67AD005130498711BCC8CADD0265157093D22A1F7CBDBF2A3381AE5 A4BC07F316872418AB2F6588BA21DB31D7B0CC304CC2E23D0F810DBC488F9195 4F5F28A82D3D53782F399113460B0DFDEF872FA825C94262A70B1FE72933BF40 FD4BECB14BC70B3F43911BC04948231139FC4D86B2F0854F782AE4B9CE7AC33E F50275AFB769C73435800D212094117D0DA5B694819DDA8600BBB6A098091C88 8E32CE9F8B3BC4E67757719B13420F989143F2E0B85B2DA6A695AA91DCB5B691 86A59CC232F2F434F2D3FC1657DE90D3698230FBD39C19B3B62F18ED9258D1D7 CC8CBD1CBF58592BDBCCDD164C8A483AB70127F4C9E660BBC673C63EED28CE58 22C2BF20A785C0D2AEABA3F4061A585F5F48270A36F11B6C5077310BD00FA214 75A4E2E60D99C8A1DD5D74B74CA470D964157C7D4D4992566D36558E58B7E07D 091D7F9AA07CABF586F248D120917AADEFCFA4F689636185D53AE061401AEF4A 3A19F8E0D9CB30B54979525D47AC3ACDE79FE768CBB1AE7B0A2BF509D102CF92 4D0D859F89CD39BB99E2883C30A4E148D1918F1EDEA095149B37774ADCB4B3FD 6C0345EA23F0213DB4F29A8F167324C2A1E8CD9BEE21AE8CA621BAF731451AA5 82E9FD1EB460899A8C38B08ED183929A81ED396448BDF527F409644D17B4A005 B9862F5F7FB95F2155BB93063FDB7E545886477B5B710CD2BAE103A9CE1DEAD4 F15F63F41C892CA84C62680DD511324931D4E51831C25CB2C119DEF8E5D75A9A 585B0E4C89FBF74B21A1A8E2206E6EBECB7304CB1DAFB7D0C4000DCE1A244A29 525B3872B14F29CA1C9BC17CCE10B135E0C3F530F77AC7AA7C0B059D07AD74EA 9A7C55E9FA75B381CA902F13846C90A2F7C48383D1BEFC94BBD0103B991B79C1 F4DB3EA8B83CAAE65FFF6B077ED2471AA551BAC92FFBD6100210C1CEB5722569 7BFDCC5C414B8EC759A4C3AFE8034A9EEDA112D991D078CE7522CF3990462CA3 5F03CC7509BA2E30F7B5BE75F0352D6F96D914A53F9AF8975DCBF3688201102A 3162F68E4EA8E249B94D0781011FD9E0CEFF944455DB2F6517FF96E2958EA69B 86D96F267251044AE073089373B7822513E0FB589769391BCF2DB62ACADF995F 020A2BAB02E0C972BC4A7F6B5F7410CAA369022F2D1B5F861C5C5276FCF4EFC6 5449DCBE10E069725ADFA61DB972476EC495B544A174ADB5177C080C5EAE6B44 E6E044DF660C748A935F0E7AD665C390C73CB698B1FD187F9085F58AA14BFEBD A9BB1730B2BA5907CE8C790438D4EB02280BB2B611BEEF36F75B636177E6096C 0E1E31F8240B38318DEA7626688B8A0CA5817D8F281AA804EF2B41A8CD7605F0 2D032498D51FE3368A00336084D38B29372931C2CCF738731F9EC569E3B2D54B 24411425B6D39C891393D00FAD30A4939848B4B1D5BB9FF68B345D5901CFC4DF 9DEFE9B522C000086469D59A6BF467840C9EB5C491FE50ADFC769535E452878A 8CF06968FA0E8B9DD30F35BBE61B4C548344379489E5DC966E09588FE4F269DF 0409713211C7299327BB0294D45FBA35EC304B7B07F5A67D46A786C824780706 7086142816F3ACF77F03D5EE6FF5F8A2B8369C0F1CC922B59FA315643271CFD5 50D6927E21CCE4E8FB93F7A920339D721CB2EF9F4848AE3D96F85BCEA64B4AE9 3F5254D9D4B18991CD8C5BD76871B9EBC855663EF043A8230B344539D2EC6906 F58372B1DDAC014C189FE9E3F73E25790CF11DB0ACB93A64D3ED9A57E1182682 5926629F23F332CDEF103DB74634DDBB3E444BF96DBE0898E440587D86F5EE18 C01CA829E5D1E30D1A06F1E42CCDE92ED96A1B5AD7362F36F0A3E12A98CC4A9E 450AB2909475814D5CD4E06C6EC137D49B31716BD1CF579B668C189A49E9A0CD 2DD4224388F1457FD508DF001BF9F1F7DBF9251589282F55EFEC08995A305605 AFDB7A611212B8602A817B2B5A632888886921BC94BBF3BFB1C25A518741C847 7C3E445485BE65BB0C90CEC0F4148734EBCE7E096314163C57F1F72E083253BC F06B45580086BBD0F3A3C6626708CA8E11D9C4E528B6FF99B7C5FB64060C4B7C 2AE76AE9C98E5A5071688AC1010FB0A81669E63745A26E027D6A21505594325E DECABEAB4CE8C6DCB221AC9789676F23B2B05EDDDD215539604BF3F82880F505 D282F824C853442E8E39FB9C71BC55E793118BA5BC398F476930AAA980CCF7DC 12D24B41D2E75893818405E76FA5AE74586DD032C5C8540223BD218D5622DC8A 6B0587D133D0FE9F31A636C07913C27F20BE650D79B35F1616A6846B573B0D4B 6BD560B50028C02390BB52ED835984B8F6630BB7C1967FDFD2DC734068516352 AF4B0F207E0143B24B22530EA7F058FA80487D7C1DAA8E6E049CE8F5E0BEE2BD 29DB095A48DD4242EF9B7388FC24EF655A2184965166E569C4D0F1DEDDD3B6B1 4D1E92D4008F8911D54E60822F4679AEA8F739E22BB7B03A5B04ECBD75A95DF1 5AD365068B7883264C139C4B4BB9D7D65CB95D2D69008696443D3EA461E1543A CBDC42BF7CB9E3AE13D5EAA317F90414A3BB1B94AF1A419845A8DD13E392F435 9B4D145DE20BDC83B9559FE0A9FFAFFD71079A6F7FCE6F825085CC3577AE98BB DDDF39BB10C19541B2D65F230CC807B71D7EE35C35250775F8FC255FFF201D68 1ECF7184D3551DAF6632374E2C0066B90B3F2FBA38DEBEC7E1AAFB9E75C25E16 90EF1FB008BE082738C42606443B9072A0C2EF27BCDCC51CC63B751D40EB50C8 138680C07F213AE287E902E8E86DCDFF44CDEA064F4F6DFE1E619165EF8CF429 22A25A4716A110B92A83B4D2C439485893541FDAD9E5638BF0578FA0497F5E7D 3C666B1183B830AC1925C267C1B4FFC87469A522BBC2E07D8270FEF5BDA7C028 46F5DF4216083CB0D110809A8BD08E3BD01F3E19C096D692E481ED952D8AF687 0C1FBEAB011BF3604A950871ABB2B3489EC07CB79102C15CFAAFAEB098D0B340 40CC4D3FFC34CDAB240A40C26AA74C22C90B58B90AEDF1A4291C84B5E3AB0EF1 D41EF30AF5E760518786C347B4AF86FBB861EF38C8ECAC757E2495F358E9B71C 8BFC4A5F0604CADB5689F17993523FFFA64B39E9685AC9D5039224FCDB0EDEC2 4655E97530C827A587D375C9A40685CCFB532F9BC01F27B26553D8656DC07B53 6AF6690434FF8F5BFEAE26460BEF05D4CC0358102FCE94223C048C96E004CC08 6D440D88799A4772C20DF93B83052131CD455A5498716EC46119EAD40F30FC1A E46019531490B4EB0919D54BDE0A1D65304A9D9DDC4684E2E0AE546F9E54AA49 8403FD978D029CFA934D5D4C021C97C995A43179E960255181BCA8860670A701 939C0B2EFF33788ED38760D6DE2B19161AC68EACC2E9EE06E8147F169E17F384 9F9A8459439E4CE00D9FFBA40B01D0C92C5C5CC805BB825D9D03C4E8A299AAC9 122E040A234B4F973E00A1B2524E0278A04EA00D5F7AB15347B967DC5A8226E5 7577761ED08EC081DDD9E1BA28FE92A9520A9E86C14B7C40C9DD49EE603EBDA3 59F2C39F1E399949353FBA12E1EA1A0316E56D615C4F6C5A481D161EA6E22599 4FF7419E4408C7A0778CED1FB84090BF6F774E26E2264BD8E55CDFC33D0F970A 992F683F0272ABE717F98F46AB271E68117E6339BC0AECB9E45F230FF57742D4 CA51C9D0E3EF7CC82A7FD880C3EB4A24BADDA4EA12C1B7DD77E002EF91AEF220 38DC0EFEAE71D7B86B32ABC84A6983C613EC3A5C40F180FD5E68F1CE8E6AAC0E 880B35DB366408237ADE529FE2C497CA863B61955815B9E4438087605B952CC6 B2AC37F2DA0FF60B8C208DCC873ABED2E02B65D1F107102BD0D8459A5AE4B239 50A0796B610B3EA310B25709922C0537C88CB2F4770224A3A17F35F48BA498AA B10F423B9958EB9025D5F041F31A312B32A264B07067B8D27EB167056E9CA674 62B331AF4B55ECFE51D794493A508C09BC244B700380C01AFEC1F340149AE654 4437EEE9C1222861AA17B647D700CD75D95A51827226B1FA55D0BD6A780F3182 8580EB192E2E9072AD88E9A4D9C5075211583ED95AA662D563744CC8831F92D7 2A72EC2CB7FC7CFB76C89119810345026F15B4E5B9FE0B09C83EA32147D38FB5 0D003E8897CE50A77AAB784700F3892A399EDC3CB5F5A95ABE85617C2983DBA0 2690B3789BCEAC789247547C3A39BE33AE871FF808D70B3D6D12BD51E1030A23 C8356BBC76C901868694896882C90E40C1C1940BEAFF8BFEAEC1D426A1C44B63 08EF4ADAF38D88766D6FE1DEA163B9203E33E2807AB582AC0763BFB7E730CEE1 2F374108C84DF65966DCF77953C2793552E7EC526C553B2B66348888BE30DF7D CAA1F4EB4BFC852C231358ABC89A3630D794D7B7B5581041050D093998A61446 FC8651C83C36986197AEA67C8F85EFCBA6A2E90249F15974598D11461012B204 4B0C730E6525C37D1196214394EC7A6D2A92F00F9DBCF62FDB8C1D41E70C1C65 5A4A25D30BD009A3FCAAE8DE1574E5359936E6680A3081D2C1648D1A5853D8EE B72E63DDE6885578D8DFBF7E90C5EEA7D6F9F6CCED6C22C72177D58B8E05BCE2 AB63D353D1C7DDB9AEC88E5E709CD645EC956CD1AF5434007DA54B7B0590AB50 13E50758AA9D3AA1486DF2B7A368070DAE49C9C83C5FF98F33012DA73CE02827 F8209AE8182282EE67E936BF65B137D85F9458DF930E668FCC2CE7B1BC157223 372A425AE92B16556CEC07891AF58192EBF36340CA66D275D26AB19F5EB2A503 1040D9A2472A0D1547FE42C302E23127C9BF7080B718192A4611888E1431B79C 19BD95E8A0D1134E115D60F5CED1064D2B1959C21A9645673653752B0CFBEB90 97F7747E6D45AF059338649875C5167BC91600250A8067F8AA9652FA4CA4F08A 42B95C6279A6A5BAF6320C3FF1AB33C6D7BEDB602AA4C81E4D53C2662D9A220A CED6982B2F6F4D14C552248185D61D07E2A585CB87A93E38870F1C1F4D007A99 4126B4B6D371105122A8C99FCDF07E4E05938EF82644DFEC40525F01BB06B958 F787B3F94B4467EDC4F0515C9D69896A442EF69E9123012121EEE3B9CB2CA3F1 AD1D07AA0E45 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndResource Pscript_WinNT_Incr begin %%BeginResource: file Pscript_Encoding0 5.0 0 /ANSIEncoding[/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis /ring/cedilla/hungarumlaut/ogonek/caron/dotlessi 18 bullets StandardEncoding 32 95 getinterval aload !/bullet/Euro/bullet/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE /bullet/Zcaron 2 bullets/quoteleft/quoteright/quotedblleft/quotedblright/bullet /endash/emdash/tilde/trademark/scaron/guilsinglright/oe/bullet/zcaron/Ydieresis {ISOLatin1Encoding}stopped{96 bullets}{160 96 getinterval aload !}?]d ANSIEncoding @ 39/quotesingle put 96/grave put/ANSIEncodingOld ANSIEncoding 256 array copy d ANSIEncodingOld @[138 153 154 169 172 174 177 178 179 181 185 188 189 190 208 215 221 222 240 247 253 254]{/bullet put @}forall 166/bar put 176 /ring put EncodeDict/0 ANSIEncoding put EncodeDict/ANSIEncodingOld ANSIEncodingOld put %%EndResource end reinitialize F /F3 0 /0 T /MTSYN mF /F3S31 F3 [49.785 0 0 -49.785 0 0 ] mFS F3S31 Ji 148 672 M S F0S31 Ji 197 672 M (Support)[28 25 25 25 26 17 0]xS 367 672 M (for)[15 26 0]xS 438 672 M (lar)[12 22 0]xS 489 672 M (ge)[25 0]xS 549 672 M (projects)[25 17 26 12 22 22 15 0]xS 719 672 M (spanning)[19 25 22 24 24 12 24 0]xS 911 672 M (se)[19 0]xS 952 672 M (v)S 976 672 M (eral)[22 17 22 0]xS 1063 672 M (director)[25 12 17 22 22 15 26 0]xS 1218 672 M (ies)[12 22 0]xS 1286 672 M (or)[26 0]xS 1340 672 M (director)[25 12 17 22 22 15 26 0]xS 1495 672 M (y)S 1532 672 M (hierarch)[24 12 22 17 22 17 22 0]xS 1695 672 M (ies.)[12 22 19 0]xS F3S31 Ji 148 773 M S F0S31 Ji 197 773 M (Comes)[33 26 37 22 0]xS 350 773 M (with)[36 12 15 0]xS 454 773 M (a)S 491 773 M (def)[25 22 0]xS 554 773 M (ault)[22 25 12 0]xS 644 773 M (conf)[22 26 24 0]xS 731 773 M (iguratio)[12 25 25 17 22 15 12 0]xS 886 773 M (n)S 926 773 M (f)S 942 773 M (ile)[12 12 0]xS 1006 773 M (pro)[25 17 0]xS 1072 773 M (viding)[24 12 25 12 24 0]xS 1214 773 M (support)[19 25 25 25 26 17 0]xS 1378 773 M (for)[15 26 0]xS 1452 773 M (OCaml,)[36 33 22 37 12 0]xS 1623 773 M (C)S 1672 773 M (and)[22 24 0]xS 1758 773 M (LaT)[30 22 0]xS 1838 773 M (eX)[22 0]xS 1911 773 M (projects)[25 17 26 12 22 22 15 0]xS 2069 773 M (,)S 2097 773 M (or)[26 0]xS 2153 773 M (a)S 197 833 M (mixture)[37 12 24 15 25 17 0]xS 364 833 M (thereof.)[15 24 22 17 22 26 15 0]xS 536 833 M (Often,)[36 15 15 22 24 0]xS 674 833 M (a)S 709 833 M (conf)[22 26 24 0]xS 796 833 M (iguratio)[12 25 25 17 22 15 12 0]xS 951 833 M (n)S 989 833 M (f)S 1004 833 M (ile)[12 12 0]xS 1067 833 M (is)[12 0]xS 1112 833 M (as)[22 0]xS 1166 833 M (simple)[19 12 37 25 12 0]xS 1312 833 M (as)[22 0]xS 1365 833 M (a)S 1400 833 M (single)[19 12 24 25 12 0]xS 1531 833 M (line)[12 12 24 0]xS %%IncludeResource: font Courier 7500 VM? /Courier FontHasEuro not { /Euro.Courier [600 0 17 -12 578 584 ] <9CF8EC0DD1C303F88DC1037FC201F760C201F7CEC201F8A5C201F76004DB06A8FB0FE32E F7278B08DA8BD8A8C8B80873BA0556644870478B08278B39C56DF208F776069FC205FB94 068B968A968B96088B928B938C9208F7A6069FC205FBB106A3EAD3CCEB8B08D18BD071B1 63084307C106F75507550656075AAE569D438B08FB188B2D2D70FB0D085106775405D106 7A078B7E8C7F8C7E085706090E> AddEuroGlyph /Euro /Courier /Courier-Copy BuildNewFont } if F /F4 0 /256 T /Courier mF /F4S31 F4 [49.785 0 0 -49.785 0 0 ] mFS F4S31 Ji 436 968 M (OCamlPro)[30 30 30 30 30 30 30 0]xS 675 968 M (gram\(pro)[30 30 30 30 30 30 30 0]xS 914 968 M (g,)[30 0]xS 1004 968 M (foo)[30 30 0]xS 1124 968 M (bar)[30 30 0]xS 1243 968 M (baz\))[30 30 30 0]xS F0S31 Ji 197 1102 M (which)[36 24 12 22 0]xS 331 1102 M (states)[19 15 22 15 22 0]xS 454 1102 M (that)[15 24 22 0]xS 542 1102 M (the)[15 24 0]xS 615 1102 M (program)[25 17 26 25 17 22 0]xS F4S31 Ji 796 1102 M (prog)[30 30 30 0]xS F0S31 Ji 928 1102 M (is)[12 0]xS 974 1102 M (b)S 998 1102 M (uilt)[25 12 12 0]xS 1077 1102 M (from)[15 17 26 0]xS 1186 1102 M (the)[15 24 0]xS 1259 1102 M (f)S 1275 1102 M (iles)[12 12 22 0]xS F4S31 Ji 1356 1102 M (foo.ml)[30 30 30 30 30 0]xS F0S31 Ji 1536 1102 M (,)S F4S31 Ji 1561 1102 M (bar.ml)[30 30 30 30 30 0]xS F0S31 Ji 1740 1102 M (,)S 1765 1102 M (and)[22 24 0]xS F4S31 Ji 1849 1102 M (baz.ml)[30 30 30 30 30 0]xS F0S31 Ji 2029 1102 M (.)S F3S31 Ji 148 1203 M S F0S31 Ji 197 1203 M (F)S 224 1203 M (ast,)[22 19 15 0]xS 304 1203 M (reliable)[17 22 12 12 22 24 12 0]xS 454 1203 M (,)S 478 1203 M (automate)[22 25 15 26 37 22 15 0]xS 661 1203 M (d)S 698 1203 M (dependen)[25 22 25 22 24 25 22 0]xS 889 1203 M (c)S 911 1203 M (y)S 948 1203 M (analysis)[22 24 22 12 23 19 12 0]xS 1121 1203 M (using)[25 19 12 24 0]xS 1242 1203 M (MD5)[44 36 0]xS 1359 1203 M (digests.)[25 12 25 22 19 15 19 0]xS F3S31 Ji 148 1305 M S F0S31 Ji 197 1305 M (Portabil)[28 26 17 15 22 24 12 0]xS 355 1305 M (ity:)[12 15 23 0]xS 438 1305 M (omak)[26 37 22 0]xS 548 1305 M (e)S 581 1305 M (pro)[25 17 0]xS 647 1305 M (vides)[24 12 25 22 0]xS 762 1305 M (a)S 795 1305 M (uniform)[25 24 12 15 26 17 0]xS 966 1305 M (interf)[12 24 15 22 17 0]xS 1073 1305 M (ace)[22 22 0]xS 1150 1305 M (on)[26 0]xS 1210 1305 M (W)S 1255 1305 M (in32)[12 24 25 0]xS 1354 1305 M (and)[22 24 0]xS 1437 1305 M (on)[26 0]xS 1497 1305 M (Unix)[36 24 12 0]xS 1607 1305 M (systems)[19 23 19 15 22 37 0]xS 1775 1305 M (includin)[12 24 22 12 25 25 12 0]xS 1938 1305 M (g)S 1974 1305 M (Linux)[30 12 24 25 0]xS 2103 1305 M (and)[22 24 0]xS 197 1365 M (OSX.)[36 28 36 0]xS F3S31 Ji 148 1467 M S F0S31 Ji 197 1467 M (Builtin)[33 25 12 12 15 12 0]xS 352 1467 M (function)[15 25 24 22 15 12 26 0]xS 518 1467 M (s)S 553 1467 M (that)[15 24 22 0]xS 644 1467 M (pro)[25 17 0]xS 709 1467 M (vide)[24 12 25 0]xS 811 1467 M (the)[15 24 0]xS 888 1467 M (most)[37 26 19 0]xS 1001 1467 M (common)[22 26 37 37 26 0]xS 1191 1467 M (features)[15 22 22 15 25 17 22 0]xS 1365 1467 M (of)[26 0]xS 1423 1467 M (programs)[25 17 26 25 17 22 37 0]xS 1627 1467 M (lik)[12 12 0]xS 1679 1467 M (e)S F4S31 Ji 1717 1467 M (grep)[30 30 30 0]xS F0S31 Ji 1837 1467 M (,)S F4S31 Ji 1866 1467 M (sed)[30 30 0]xS F0S31 Ji 1956 1467 M (,)S 1985 1467 M (and)[22 24 0]xS F4S31 Ji 2073 1467 M (awk)[30 30 0]xS F0S31 Ji 2163 1467 M (.)S 197 1527 M (These)[31 24 22 19 0]xS 328 1527 M (are)[22 17 0]xS 402 1527 M (especial)[22 19 25 22 22 12 22 0]xS 562 1527 M (ly)[12 0]xS 613 1527 M (useful)[25 19 22 15 25 0]xS 748 1527 M (on)[26 0]xS 810 1527 M (W)S 855 1527 M (in32.)[12 24 25 25 0]xS F3S31 Ji 148 1628 M S F0S31 Ji 197 1628 M (Full)[27 25 12 0]xS 290 1628 M (nati)[24 22 15 0]xS 363 1628 M (v)S 387 1628 M (e)S 422 1628 M (support)[19 25 25 25 26 17 0]xS 584 1628 M (for)[15 26 0]xS 654 1628 M (rules)[17 25 12 22 0]xS 764 1628 M (that)[15 24 22 0]xS 851 1628 M (b)S 875 1628 M (uild)[25 12 12 0]xS 965 1628 M (se)[19 0]xS 1005 1628 M (v)S 1029 1628 M (eral)[22 17 22 0]xS 1116 1628 M (things)[15 24 12 24 25 0]xS 1251 1628 M (at)[22 0]xS 1299 1628 M (once.)[26 24 22 22 0]xS F3S31 Ji 148 1730 M S F0S31 Ji 197 1730 M (Acti)[35 22 15 0]xS 282 1730 M (v)S 306 1730 M (e)S 340 1730 M (f)S 356 1730 M (ilesyste)[12 12 22 19 23 19 15 0]xS 505 1730 M (m)S 556 1730 M (monitori)[37 26 24 12 15 26 17 0]xS 728 1730 M (ng,)[24 25 0]xS 803 1730 M (where)[36 24 22 17 0]xS 937 1730 M (the)[15 24 0]xS 1010 1730 M (b)S 1034 1730 M (uild)[25 12 12 0]xS 1124 1730 M (automati)[22 25 15 26 37 22 15 0]xS 1298 1730 M (cally)[22 22 12 12 0]xS 1407 1730 M (restarts)[17 22 19 15 22 17 15 0]xS 1563 1730 M (whene)[36 24 22 24 0]xS 1692 1730 M (v)S 1716 1730 M (er)[22 0]xS 1767 1730 M (you)[23 26 0]xS 1854 1730 M (modify)[37 26 25 12 15 0]xS 2011 1730 M (a)S 2045 1730 M (source)[19 26 25 17 22 0]xS 197 1790 M (f)S 213 1790 M (ile.)[12 12 22 0]xS 293 1790 M (This)[31 24 12 0]xS 394 1790 M (can)[22 22 0]xS 475 1790 M (be)[24 0]xS 535 1790 M (v)S 559 1790 M (ery)[22 17 0]xS 635 1790 M (useful)[25 19 22 15 25 0]xS 769 1790 M (during)[25 25 17 12 24 0]xS 912 1790 M (the)[15 24 0]xS 985 1790 M (edit/com)[22 25 12 15 14 22 26 0]xS 1159 1790 M (pile)[25 12 12 0]xS 1247 1790 M (c)S 1268 1790 M (ycle.)[23 22 12 22 0]xS F3S31 Ji 148 1892 M S F0S31 Ji 197 1892 M (A)S 245 1892 M (companio)[22 26 37 25 22 24 12 0]xS 442 1892 M (n)S 479 1892 M (command)[22 26 37 37 22 24 0]xS 688 1892 M (interpre)[12 24 15 22 17 25 17 0]xS 843 1892 M (ter)[15 22 0]xS 894 1892 M (,)S F4S31 Ji 919 1892 M (osh)[30 30 0]xS F0S31 Ji 1008 1892 M (,)S 1033 1892 M (that)[15 24 22 0]xS 1120 1892 M (can)[22 22 0]xS 1202 1892 M (be)[24 0]xS 1261 1892 M (used)[25 19 22 0]xS 1365 1892 M (interact)[12 24 15 22 17 22 22 0]xS 1515 1892 M (i)S 1527 1892 M (v)S 1551 1892 M (ely)[22 12 0]xS 1609 1892 M (.)S 148 1993 M (In)[17 0]xS 203 1993 M (the)[15 24 0]xS 276 1993 M (MetaPRL)[44 22 15 22 28 33 0]xS 483 1993 M (\()S F2S31 Ji 499 1993 M (http://w)[28 14 14 28 14 14 14 0]xS 660 1993 M (ww)[36 0]xS 729 1993 M (.metapr)[14 42 28 14 28 28 0]xS 899 1993 M (l.org)[11 14 28 17 0]xS F0S31 Ji 996 1993 M (\))S 1025 1993 M (and)[22 24 0]xS 1110 1993 M (Moja)[44 26 12 0]xS 1214 1993 M (v)S 1238 1993 M (e)S 1273 1993 M (\()S F2S31 Ji 1290 1993 M (http://m)[28 14 14 28 14 14 14 0]xS 1456 1993 M (oja)[28 11 0]xS 1521 1993 M (v)S 1545 1993 M (e)S 1572 1993 M (.caltech)[14 25 28 11 14 28 25 0]xS 1744 1993 M (.edu)[14 28 28 0]xS F0S31 Ji 1841 1993 M (\))S 1870 1993 M (projects)[25 17 26 12 22 22 15 0]xS 2041 1993 M (we)[36 0]xS 2112 1993 M (de-)[25 22 0]xS 75 2053 M (v)S 99 2053 M (elop)[22 12 26 0]xS 200 2053 M (and)[22 24 0]xS 287 2053 M (maintain)[37 22 12 24 15 22 12 0]xS 476 2053 M (se)[19 0]xS 516 2053 M (v)S 540 2053 M (eral)[22 17 22 0]xS 630 2053 M (moderate)[37 26 25 22 17 22 15 0]xS 816 2053 M (ly)[12 0]xS 869 2053 M (lar)[12 22 0]xS 921 2053 M (ge)[25 0]xS 983 2053 M (systems)[19 23 19 15 22 37 0]xS 1156 2053 M (consisti)[22 26 24 19 12 19 15 0]xS 1308 2053 M (ng)[24 0]xS 1373 2053 M (of)[26 0]xS 1429 2053 M (a)S 1466 2053 M (mixture)[37 12 24 15 25 17 0]xS 1636 2053 M (of)[26 0]xS 1692 2053 M (OCaml,)[36 33 22 37 12 0]xS 1864 2053 M (C,)[33 0]xS 1925 2053 M (and)[22 24 0]xS 2012 2053 M (theorem)[15 24 22 26 17 22 0]xS 75 2113 M (pro)[25 17 0]xS 141 2113 M (ving)[24 12 24 0]xS 247 2113 M (code.)[22 26 25 22 0]xS 385 2113 M (W)S 428 2113 M (e)S 468 2113 M (de)[25 0]xS 513 2113 M (v)S 537 2113 M (eloped)[22 12 26 25 22 0]xS 687 2113 M (OMak)[36 44 22 0]xS 814 2113 M (e)S 853 2113 M (out)[26 25 0]xS 934 2113 M (of)[26 0]xS 993 2113 M (the)[15 24 0]xS 1071 2113 M (need)[24 22 22 0]xS 1182 2113 M (for)[15 26 0]xS 1258 2113 M (a)S 1297 2113 M (b)S 1321 2113 M (uild)[25 12 12 0]xS 1416 2113 M (system)[19 23 19 15 22 0]xS 1571 2113 M (that)[15 24 22 0]xS 1663 2113 M (w)S 1698 2113 M (as)[22 0]xS 1757 2113 M (simple,)[19 12 37 25 12 22 0]xS 1921 2113 M (fle)[15 12 0]xS 1973 2113 M (xible,)[24 12 24 12 22 0]xS 2103 2113 M (and)[22 24 0]xS 75 2174 M (reliable)[17 22 12 12 22 24 12 0]xS 224 2174 M (,)S 249 2174 M (especial)[22 19 25 22 22 12 22 0]xS 410 2174 M (ly)[12 0]xS 461 2174 M (for)[15 26 0]xS 532 2174 M (lar)[12 22 0]xS 583 2174 M (ge)[25 0]xS 643 2174 M (projects)[25 17 26 12 22 22 15 0]xS 801 2174 M (.)S 148 2234 M (OMak)[36 44 22 0]xS 275 2234 M (e)S 309 2234 M (preserv)[25 17 22 19 22 17 0]xS 454 2234 M (es)[22 0]xS 507 2234 M (the)[15 24 0]xS 580 2234 M (syntax)[19 23 24 15 22 0]xS 721 2234 M (and)[22 24 0]xS 805 2234 M (rule)[17 25 12 0]xS 894 2234 M (def)[25 22 0]xS 956 2234 M (initions)[12 24 12 15 12 26 24 0]xS 1117 2234 M (used)[25 19 22 0]xS 1220 2234 M (in)[12 0]xS 1270 2234 M (Mak)[44 22 0]xS 1361 2234 M (ef)[22 0]xS 1399 2234 M (iles,)[12 12 22 19 0]xS 1492 2234 M (making)[37 22 25 12 24 0]xS 1653 2234 M (it)[12 0]xS 1692 2234 M (easy)[22 22 19 0]xS 1792 2234 M (to)[15 0]xS 1842 2234 M (port)[25 26 17 0]xS 1934 2234 M (your)[23 26 25 0]xS 2037 2234 M (project)[25 17 26 12 22 22 0]xS 75 2294 M (to)[15 0]xS 128 2294 M (omak)[26 37 22 0]xS 238 2294 M (e.)[22 0]xS 294 2294 M (There)[31 24 22 17 0]xS 424 2294 M (is)[12 0]xS 471 2294 M (no)[24 0]xS 535 2294 M (need)[24 22 22 0]xS 643 2294 M (to)[15 0]xS 695 2294 M (code)[22 26 25 0]xS 803 2294 M (in)[12 0]xS 855 2294 M (perl)[25 22 17 0]xS 947 2294 M (\(cons\),)[17 22 26 24 19 17 0]xS 1098 2294 M (or)[26 0]xS 1153 2294 M (Python)[28 23 15 24 26 0]xS 1308 2294 M (\(scons\).)[17 19 22 26 24 19 17 0]xS 1486 2294 M (Ho)[36 0]xS 1546 2294 M (we)[36 0]xS 1602 2294 M (v)S 1627 2294 M (er)[22 0]xS 1663 2294 M (,)S 1690 2294 M (there)[15 24 22 17 0]xS 1803 2294 M (are)[22 17 0]xS 1878 2294 M (a)S 1914 2294 M (fe)[15 0]xS 1951 2294 M (w)S 2001 2294 M (things)[15 24 12 24 25 0]xS 2136 2294 M (to)[15 0]xS 75 2354 M (k)S 99 2354 M (eep)[22 22 0]xS 181 2354 M (in)[12 0]xS 232 2354 M (mind:)[37 12 24 25 0]xS 135 2468 M (1.)[25 0]xS 197 2468 M (Indentat)[17 24 25 22 24 15 22 0]xS 360 2468 M (ion)[12 26 0]xS 436 2468 M (is)[12 0]xS 482 2468 M (signif)[19 12 25 24 12 0]xS 594 2468 M (icant,)[12 22 22 24 15 0]xS 716 2468 M (b)S 740 2468 M (ut)[25 0]xS 791 2468 M (tabs)[15 22 24 0]xS 884 2468 M (are)[22 17 0]xS 957 2468 M (not)[24 26 0]xS 1033 2468 M (required)[17 22 25 25 12 17 22 0]xS 1199 2468 M (.)S 135 2569 M (2.)[25 0]xS 197 2569 M (The)[31 24 0]xS 287 2569 M (omak)[26 37 22 0]xS 397 2569 M (e)S 432 2569 M (language)[12 22 24 25 25 22 25 0]xS 624 2569 M (is)[12 0]xS F1S31 Ji 670 2569 M (function)[16 28 28 22 17 14 25 0]xS 847 2569 M (al)[25 0]xS F0S31 Ji 886 2569 M (:)S 917 2569 M (function)[15 25 24 22 15 12 26 0]xS 1083 2569 M (s)S 1115 2569 M (are)[22 17 0]xS 1188 2569 M (f)S 1204 2569 M (irst-cla)[12 17 19 15 17 22 12 0]xS 1342 2569 M (ss)[19 0]xS 1393 2569 M (and)[22 24 0]xS 1478 2569 M (there)[15 24 22 17 0]xS 1590 2569 M (are)[22 17 0]xS 1663 2569 M (no)[24 0]xS 1726 2569 M (side-ef)[19 12 25 22 17 22 0]xS 1860 2569 M (fects)[15 22 22 15 0]xS 1966 2569 M (apart)[22 25 22 17 0]xS 2078 2569 M (from)[15 17 26 0]xS 197 2630 M (I/O.)[17 14 36 0]xS 135 2731 M (3.)[25 0]xS 197 2731 M (Scoping)[28 22 26 25 12 24 0]xS 373 2731 M (is)[12 0]xS 418 2731 M (dynamic.)[25 23 24 22 37 12 22 0]xS 75 2845 M (OMak)[36 44 22 0]xS 202 2845 M (e)S 236 2845 M (0.9.2)[25 13 25 13 0]xS 348 2845 M (is)[12 0]xS 394 2845 M (an)[22 0]xS 454 2845 M (alpha)[22 12 25 24 0]xS 574 2845 M (release.)[17 22 12 22 22 19 22 0]xS 75 2905 M (Please)[28 12 22 22 19 0]xS 215 2905 M (report)[17 22 25 26 17 0]xS 346 2905 M (an)[22 0]xS 393 2905 M (y)S 430 2905 M (comments)[22 26 37 37 22 24 15 0]xS 647 2905 M (and/or)[22 24 25 14 26 0]xS 787 2905 M (b)S 811 2905 M (ugs)[25 25 0]xS 892 2905 M (to)[15 0]xS 944 2905 M (the)[15 24 0]xS 1017 2905 M (mailing)[37 22 12 12 12 24 0]xS 1182 2905 M (list)[12 12 19 0]xS F2S31 Ji 1255 2905 M (omak)[28 42 28 0]xS 1376 2905 M (e@metapr)[28 51 42 28 14 28 28 0]xS 1610 2905 M (l.org)[11 14 28 17 0]xS F0S31 Ji 1707 2905 M (.)S /F0S18 F0 [24.996 0 0 -24.996 0 0 ] mFS F0S18 Ji 75 2965 M (Jason)[10 11 10 13 0]xS 137 2965 M (Hick)[18 6 11 0]xS 185 2965 M (e)S 195 2965 M (y)S 206 2965 M (,)S /F2S18 F2 [24.996 0 0 -24.996 0 0 ] mFS F2S18 Ji 219 2965 M (jyh@cs)[6 13 14 25 13 0]xS 300 2965 M (.caltech)[7 13 14 6 7 14 13 0]xS 386 2965 M (.edu)[7 14 14 0]xS LH (%%[Page: 1]%%) = %%PageTrailer %%Trailer %%BoundingBox: 18 8 593 784 %%DocumentNeededResources: %%+ font Times-Roman %%+ font Times-Bold %%+ font Helvetica %%+ font Courier %%DocumentSuppliedResources: %%+ procset Pscript_WinNT_ErrorHandler 5.0 0 %%+ procset Pscript_FatalError 5.0 0 %%+ procset Pscript_Win_Basic 5.0 0 %%+ procset Pscript_Win_Utils_L2 5.0 0 %%+ procset Pscript_Win_GdiObject 5.0 0 %%+ procset Pscript_Win_GdiObject_L2 5.0 0 %%+ procset Pscript_WinNT_Compat 5.0 0 %%+ procset Pscript_Text 5.0 0 %%+ procset Pscript_Encoding256 5.0 0 %%+ procset Pscript_Win_Euro_L2 5.0 0 %%+ font MTSYN %%+ procset Pscript_Encoding0 5.0 0 Pscript_WinNT_Incr dup /terminate get exec ehsave restore %%Pages: 1 (%%[LastPage]%%) = %%EOF omake-0.9.8.5/doc/html/images/announce.tex0000664000152300015230000000545410124060307016442 0ustar jyhjyh\documentclass[12pt]{article} % % Make a bigger page, but leave room for marginal notes. % \setlength{\topmargin}{-1.0 in} \setlength{\oddsidemargin}{-0.5 in} \setlength{\evensidemargin}{-0.5 in} \setlength{\textwidth}{7.0 in} \setlength{\textheight}{9.5 in} \pagestyle{empty} \usepackage{times} \usepackage{mathtime} \usepackage{graphicx} \begin{document} \includegraphics[scale=0.85]{omake} OMake is a build system, similar to GNU make, but it support hierarchical projects with automated dependency analysis, and the language is {\bf functional}. The home site for OMake is {\sf http://omake.metaprl.org/}. Features include: \begin{itemize} \item Support for large projects spanning several directories or directory hierarchies. \item Comes with a default configuration file providing support for OCaml, C and LaTeX projects, or a mixture thereof. Often, a configuration file is as simple as a single line \begin{verbatim} OCamlProgram(prog, foo bar baz) \end{verbatim} which states that the program \verb+prog+ is built from the files \verb+foo.ml+, \verb+bar.ml+, and \verb+baz.ml+. \item Fast, reliable, automated dependency analysis using MD5 digests. \item Portability: omake provides a uniform interface on Win32 and on Unix systems including Linux and OSX. \item Builtin functions that provide the most common features of programs like \verb+grep+, \verb+sed+, and \verb+awk+. These are especially useful on Win32. \item Full native support for rules that build several things at once. \item Active filesystem monitoring, where the build automatically restarts whenever you modify a source file. This can be very useful during the edit/compile cycle. \item A companion command interpreter, \verb+osh+, that can be used interactively. \end{itemize} In the MetaPRL ({\sf http://www.metaprl.org}) and Mojave ({\sf http://mojave.caltech.edu}) projects we develop and maintain several moderately large systems consisting of a mixture of OCaml, C, and theorem proving code. We developed OMake out of the need for a build system that was simple, flexible, and reliable, especially for large projects. OMake preserves the syntax and rule definitions used in Makefiles, making it easy to port your project to omake. There is no need to code in perl (cons), or Python (scons). However, there are a few things to keep in mind: \begin{enumerate} \item Indentation is significant, but tabs are not required. \item The omake language is {\bf functional}: functions are first-class and there are no side-effects apart from I/O. \item Scoping is dynamic. \end{enumerate} \noindent OMake 0.9.2 is an alpha release.\\ Please report any comments and/or bugs to the mailing list {\sf omake@metaprl.org}. \vfill \noindent {\tiny Jason Hickey, {\sf jyh@cs.caltech.edu}} \end{document}omake-0.9.8.5/doc/html/images/omake.ai0000664000152300015230000005440010116240506015516 0ustar jyhjyh%PDF-1.4 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 6 0 R >> /LastModified (D:20040903201635-07'00') /ArtBox [ 120.42676 474.58838 396.82275 600.51123 ] /Group 15 0 R /Thumb 18 0 R /Contents 20 0 R /Resources << /ExtGState << /R1 4 0 R >> /Font << /F1 13 0 R >> /ProcSet [ /PDF /Text ] >> >> endobj 4 0 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 5 0 obj << /CreationDate (D:20040903201635-07'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (omake.ai) >> endobj 6 0 obj << /Private 7 0 R /LastModified (D:20040903201635-07'00') >> endobj 7 0 obj << /CreatorVersion 9 /ContainerVersion 9 /RoundtripVersion 9 /Options 8 0 R /AIMetaData 9 0 R /AIPrivateData1 10 0 R /AIPrivateData2 11 0 R /NumBlock 2 >> endobj 8 0 obj << /OptionSet 3 /Compatibility 4 /EmbedFonts true /SubsetFontsBelow true /SubsetFontsRatio 100 /Thumbnail false /EmbedICCProfile true /cCompression true /cCompKind 3 /cCompQuality 2 /cResolution false /cRes 300 /gCompression true /gCompKind 3 /gCompQuality 2 /gResolution false /gRes 300 /mCompression true /mCompKind 3 /mResolution false /mRes 1200 /CompressArt true >> endobj 9 0 obj << /Length 1767 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Jason Hickey) (Caltech) %%Title: (C:\\home\\jyh\\projects\\omake\\html\\grid.ai) %%CreationDate: 9/3/2004 8:16 PM %%BoundingBox: 120 474 397 601 %%HiResBoundingBox: 120.4268 474.5884 396.8228 600.5112 %%DocumentProcessColors: Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKCustomColor: 0.9098 0.5608 0 0 (Back blue) %%+ 0.0549 0.0118 0.6314 0 (Bright Yellow) %%+ 0.8353 0.4784 0.051 0.0078 (Buff Blue) %%+ 0.0824 0.3804 0.9255 0.0078 (Burnt Orange) %%+ 0.9529 0.0392 0.5373 0.0039 (Forest Green) %%+ 0.1 0 0 0 (Light Blue) %%+ 0.1 0 0.1 0 (Light Green) %%+ 0 0.1 0 0 (Light Magenta) %%+ 0.0353 0.0353 0.3255 0 (Light Yellow) %%+ 0.5098 0.5373 0 0 (Tool Purple) %%CMYKProcessColor: 1 1 1 1 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306 396 306 396 %AI3_TileBox: 8 35 600 779 %AI3_DocumentPreview: None %AI5_ArtSize: 612 792 %AI5_RulerUnits: 2 %AI9_ColorModel: 2 %AI5_ArtFlags: 1 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: 47.9326 663.2935 3.4683 1596 1114 18 0 1 2 52 0 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:8 35 %%AI3_PaperRect:-8 784 604 -8 %%AI3_Margin:8 -40 -9 8 %AI7_GridSettings: 12 1 12 1 0 0 0.8333 0.8333 0.8333 0.8333 0.8333 0.8333 %AI9_Flatten: 0 %%EndComments endstream endobj 10 0 obj << /Length 7340 >> stream %%BoundingBox: 120 474 397 601 %%HiResBoundingBox: 120.4268 474.5884 396.8228 600.5112 %AI7_Thumbnail: 128 60 8 %%BeginData: 6840 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD12FF7D52FD05A87DA8A8FD74FFFD047DFD08FFA8A87D7D7DA87D %A87DA87DA87DFD65FFA87DFFFFA87DFD15FF7DA8A8A87DA87DA87DFD04A8 %FD56FFA87DA8FFFFFF7DA8A8FD20FFA87DA87DA87DA87DA87DA87DA8FD49 %FF7DA8FD05FFA8FFA8FD2DFFA8A8A87DFD05A87DA8A8FD3BFFA87DFD06FF %A87DA87DFD39FFA8A87D7D7DA87DA87DA87DA8A8FD2CFFA87DA8FD07FF7D %A852A8FD46FF7DA87DA87DA8A8A87DFD04A8FD1EFF7DA8FD09FF7D7DA852 %FD52FFA87DA87DA87DA87DA87DA87DA8FD10FFA87DFD0BFF52FFFFA87DFD %04FFFD047DA87D7D527DA8A87D52527D7D7D275252A8A8A8527D7DA8A87D %527D7DA8A87D527DA8A87D5252A8A8A85252527D7D7D2752527D5252527D %A8A87D7D527DA8A852527DA8A87D527D7DA87D7D527D7DA87D7D527DA8A8 %527D7DFD0CFFA87DA8FD0BFF7DFD04FFA8FFFF7D7DA8FFFF7D527DFFFFA8 %7D52A8FFFF7D7D7DFFFFFF7D7D7DFFFFA8527DA8FFFFA8527DA8FFA87D52 %FFFFFF7D7D7DFFFFFF7D527DFFFF7D52A8FFFFA87D52A8FFFF7D7D7DFFFF %A8527DA8FFFFA8527DFFFFFF7D527DFFFFA87D52FFFFFF7DA8FD08FF27FD %14F827FF7DA8FD04FF7DA87DA8FFA87DA87DFFA87DA87DFFFF7D7DA87DA8 %FFFD047DFFFF7DA87DA8FF7DA87D7DFFA87DA87DA8FF7D7DA87DA8A87DA8 %7DFFFFA87DA87DFFA87DA87D7DFF7DA87D7DFFFF7DA87DA8FFA87DA87DFF %FF7D7DA87DFFFFFFA87DA8FD06FF27F8F8F8275227522752275227522752 %FD06F827A87DA87D7D52A87DA852527DA87DA8277D7DA87D7D527D7DA87D %5252A87DA87D5252A87DA87D527DA87DA8527D7DA87D7D527D7DA87D5227 %7D527D5252527D527D27527DA87D7D27A87DA87D5252A87DA87D7D52A87D %A852527DA87DA852A87DA87D52A8FD06FFF8F8F87DFD0BFF27FD05F8A8FD %62FF7DFD07FFF8F8F852FD0BFF27FD05F87DFD62FF7DFD07FF272727A8FD %0BFF27FD05F8A8FD62FFA8FD16FFF8F852A8F8F87DFD62FFA8FD16FF2752 %FFFFFFF8A8FD62FFA8FD16FF27FD04FFA87DFD61FF7DFD17FFA87DFFFFA8 %7DA8FD61FFA8FD17FF7DFF52A87DFF7DFD4AFFA8527D2727FD12FF7DFD17 %FFA8FFA852FFFFA8FD4AFF52FD04F8FD12FFA8FD17FF7DA87DFF7DFF7DFD %4AFF27F8F8F827FD12FF7DFD17FF7D7DFFFFFF7DA8FD4AFF27F8F8F827FD %11FFA8A8FD17FF52A8FFFFFF7D7DFD30FFA87DA8A8FD16FF27F8F8F827FD %11FFA8FD18FFA87DA8FF7DFFA8FD2CFF7D52FD05F8FD17FFFD04F852FD11 %FF7DA8FD17FF7DFF7D52A8FF7DFD1EFFA8527D52522752FD07FF52FD06F8 %FD17FFFD04F87DFD04FFA8A87D7D52A8FD04FF7D52FD04F827A8FD14FFA8 %FF7D7DA8FFA8FD0EFFA8A87D7D52A8FD0AFF27FD05F827FD07FFFD07F8FD %17FFFD04F852FFFFFF27FD04F87DFD04FF27FD08F87DFD13FF7D7DA8FF7D %A87DFD0BFFA87D27FD07F852FD08FFFD07F8FD06FF52FD07F8FD0CFF7DA8 %527D52A8A8FFFFFF7DFD04F87DFFFF7DFD04F852FD04FFFD0BF8FD13FF52 %A8FFFFFF52A8FD0AFF7D27FD0BF8A8FD06FFFD07F8A8FD05FF27FD06F827 %FD09FF7D52FD07F852FFFFFFA8FD04F87DFFFF27F8F8F827FD04FF27FD04 %F87DA852FD04F87DFD12FF7D7DA8FF7DA87DFD09FF7DFD0EF8FD05FF7DFD %07F87DFD04FFA8F8F8F852F8F8F827FD07FFA827FD09F852FFFFFF52FD04 %F8A8FF52F8F8F827A8FFFFFF52FD04F8FD04FFFD04F87DFD12FFA8FF7D7D %A8FFA8FD08FF7DFD06F87D527D27FD05F852FD04FFA8F8F8F852F8F8F87D %FD04FF52F8F8F87DF8F8F827FD06FF7DFD0BF87DFFFFFF7DFD04F8FFA8F8 %F8F827A8FD04FF27F8F8F8A8FFFFFFA8FD04F87DFD12FF7DFF7D52A8FF7D %FD07FFA8FD05F852FD05FF52FD05F8A8FFFFFF52F8F8F852F8F8F827FD04 %FF27F8F8277DF8F8F827FD05FFA8FD05F8527D7DFD04F852FFFFFF52FD04 %F8FFFD04F87DFD04FF7DFD04F8A8A85252FD05F8FD13FFA87DA8FF7DFFA8 %FD07FF52FD04F827FD07FFFD05F87DFFFFFF52F8F8F8A8FD04F8FFFFFFA8 %F8F8F87D7DF8F8F827FD05FFFD05F8A8FFFF7DFD04F87DFFFFFF52F8F8F8 %2752F8F8F852FD05FF52FD0CF87DFD13FF52A8FFFFFF7D7DFD06FFA8FD05 %F8FD08FF7DFD04F827FFFFFF27F8F8F8A852F8F8F8FFFFFF52F8F8F8A87D %F8F8F852FD04FF52FD04F87DFFFFFFA8FD04F87DFFFFFF27FD08F827A8FD %04FF27FD0BF8A8FD14FF7D7DFFFFFF7DA8FD06FF52FD04F87DFD08FFA8FD %04F827FFFFFF27F8F8F8FF52F8F8F87DFFFFF8F8F852FF27F8F8F827FFFF %FFA827F8F8F827FD04FF7DFD04F8A8FFFFFF52FD09F87DFD04FF27FD07F8 %277D7DFD16FF7DA87DFF52FF7DFD06FF27FD04F8A8FD09FFFD05F8FFFFFF %FD04F8FF7DF8F8F87DFF7DF8F8F87DFF27F8F8F852FFFFFF7DFD04F852FD %04FF7DFD04F8A8FFFFFFFD0BF8A8FFFFFF27F8F8F8277DA8FD1AFFA8FFA8 %52FFFFA8FD06FFFD05F8FD0AFFFD05F8FFFFA8F8F8F827FF7DF8F8F852FF %52F8F827FFFF27F8F8F87DFFFFFF7DFD04F8A8FD04FF52FD04F8FD04FFFD %05F8A87DFD04F827FFFFFF52FD04F8FD07FF7DFD14FF7DFF52A87DFF7DFD %05FF7DFD04F852FD0AFFFD05F8FFFF7DF8F8F852FFA8F8F8F827FF27F8F8 %52FFFF27F8F8F87DFFFFFF27FD04F8FD05FF27FD04F8FD04FFFD04F852FF %FF27FD04F87DFFFFA8FD05F87DA8A87D52F8F8A8FD13FFA87DFFFFA87DA8 %FD05FF7DFD04F87DFD09FFA8FD04F827FFFF52F8F8F852FFFFFD04F8A8F8 %F8F8A8FFFF27F8F8F87DFFFFFF27FD04F8FD04FFA8FD05F8FFFFFF7DFD04 %F87DFFFF7DFD04F827FFFFFF27FD0BF8A8FD13FF52FD04FFA87DFD05FF52 %FD04F87DFD09FF7DFD04F827FFFF52F8F8F87DFFFF27F8F8F852F8F827FF %FFFFFD04F87DFFFFFF27FD04F87DFFFFFF27FD05F8FFFFFFA8FD04F87DFF %FFFF27FD04F852FFFF7DFD0BF852FD13FF7D7DFFFFFF7DA8FD05FFA8FD04 %F87DFD09FF52FD04F87DFFFF27F8F8F87DFFFF7DFD06F87DFFFFFFFD04F8 %7DFFFFFF7DFD04F8277DA827FD06F8FFFFFF7DFD04F8A8FFFFFFA8FD05F8 %A8FFFF7D27FD07F8527DFD14FF7DA87DFF52FF7DFD05FF7DFD04F852FD08 %FFA8FD05F8A8FFFFFD04F8A8FFFF7DFD06F8FD04FFFD04F87DFFFFFFA8FD %09F87DFD04F8FFFFFF7DFD04F8A8FD04FF522727277D7DFD04FF7D525252 %7D7DFD17FFA8FFA852FFFFA8FD06FFFD05F8FD08FF7DFD04F827FFFFFFFD %04F8FFFFFFA8FD05F852FD04FFFD04F852FD04FF27FD07F852A8FD04F8FF %FFFF7D2727527DFD2CFF7DFF52A87DFF7DFD06FF27FD04F852FD06FFA8FD %05F87DFFFF7DFD04F8FD04FFFD05F87DFFFFFFA8FD04F8A8FD04FFA827FD %05F852FFA82727277DFD34FFA87DFFFFA87DA8FD06FF7DFD05F87DFD04FF %A8FD05F852FFFFFF7DF8F8F852FD04FF27F8F8F827FD04FFA8FD04F87DFD %06FF7D275252A8FD3BFF52FD04FF7D7DFD07FFFD07F8525227FD06F8A8FF %FFFF52F8F8F852FD04FF52F8F8F87DFD04FF7DF8F85227A8FD46FFA87DFF %FFA8A8A8FD07FFA8FD0DF827A8FD04FF52F8F8F87DFD04FFFD047DA8FD50 %FF7DFF527DA8FF7DFD08FFA8FD0BF852A8FD05FF272727527DFD59FFA8FF %A852FFFFA8FD0AFF5227FD05F82752FD66FF7DA8A8FF52FF7DFD0CFFA87D %A87DA8FD68FF52A8FFFFFF52A8FD79FF7D7DFFFFA87D7DFD79FFA8FF7DA8 %A8FFA8FD79FF7DFF7D52FFFF7DFD79FFFD04A87DFFA8FD79FF7DA8FFFFA8 %7D7DFDFCFFFDFCFFFD70FFFF %%EndData endstream endobj 11 0 obj << /Filter [ /FlateDecode ] /Length 12 0 R >> stream H‰¤WÛrÛ8}w•ÿû*¹f-ð"R¤ò$ÙNFI©|™ÝlœRÁ$,aB´£ùúíHŠ’íØÙ-Ù¢Ø8§oº7ÿ˜_SuËý¾CÞ¼9)8Óª#&Ó,«J] ¨wqD⾃ ñ4ZÔÀ?xQ %GÍÐ;äö>°RIò»H¾óÍé°Lódu„€+¡3“ÑÍÍJ­ùÍÍŸ›ÕÍM^¨?y¢Ë›µfßAºÒëìæfYˆ´ÏÄQëØ:eÄÔ§žã H4rC2?GÄDU2r9Q?FÄõ2ˆIè¸8þ»¸àå>¨?ð‘ý Šö#Ï‹€ãô×õxª’jÍ¥ž*áey¢2U”#2ÉXò½;þNI òóM!Xz\/¹Ö  ²cü89ÿòñ\Tkƒi?vâAèÀ>½ ̹Í*~d]súN0ˆñẈ }w`p…X®4ù³L=´ØÈ æþ`‹™.~;ÃðÕݬ‰®ÞÈC9øˆ½ è€ ©É¬`r¹ÅÇgüðc=ö‡¾Áû1éAVx©Éû‚sÙâ]¸úÉxºcÛŒ™ïzt‡Ú’ëÁsH¥Ôlë¹²~øÆó»— Î¯ñQWJed^yf½Á9éîØvõ§÷õ‚/…YP°±¿ÙâÚ¿ä9³0Ç–ÓÃÅyÊïX•i»È?õ±^Ír””†‚O®ùw;OøDuö¶Ÿcþ¬†ùüÙžÍRµ$ |ì»ûˆj"7æqÉ^ñužA2EÆwB,+ͳÀR7Ãñ¬6d8Œë±m½á÷‚?ŒÈg%y½EÆ…¾ÃV] c¯_T/®¥Àªbe±Mã¹JyÖÈ ý]Æ–&5ÛHÌw¸bÅ’k,;Y¥MmœfìsµþÄ6‹Ÿ[™å\^©?Œ›ƒa?ö½„¡ß÷bËïÂÈ'ná».l+“tH+ ¼Ú°™”Z=êBM!ÎÅ–æ ¶¢#L•]#þbÎr^\@ÏG7c›ì8j†Ï! Ã8À¼Æ¦ aÑxe[3\œP·™UÜܾÿŠG:$Rk.ëÒs&ÓµÆi+M3‚•-aÙgj‰¯S™dUÊ›jþšbþå¹Úþí¹RÿíÙÊÿo¯¼€~ª/`b·y4i… ¬òï‡~Lÿª”æ%°2NâBJî9q}§3pËJNï n!­4½µ2¨d"/LMÙrÉ‹úã4컌ÿ °ÒôJU%“)½LX¡$]V"3º3~§é쌸ƒÀêFè3¿MiMhób‡n+jÊeÊÊåkóÐ"K9…d§|Í 8aÐrϨ%+NSÇ©²¸Åè—Tpè¢$´ÌYY4©Š‚Ëd/!½-Ôw.o´P7Œhƒ§‰Ê7µÎ"½ãk!…úУv‘°L*MW›|Å%-LÉbJ×,A· ­074‡̪¤úA•$M¨‚êôö%•æt]A!ð©‘¥ ì£-á©È2š Úµ phÍʤʌGQ„ƒU¬þ\±ìÎÚ¨…%qcŽÍ2UckqܙͱÍï¸~ŒÐñ=©] g†NÏ ´œuèg-ojQSkbÚÁL[Ì™^ÑÏÆ ¨™YÂÌfÂÌú4kykhq"Ï6tVf¸&®›€®-ùºC¾nY_ìàÕJ°Z8¤$,µ’2k˜5ñ°›YÓ¬UÂL:§I“néÜjç[2¨â-OX”°(Ñ1!Z ‡tHkPY¸j|R‚ª!-/÷6•¥VÖRµãOÕr6vX›dlñáÁÕ™m7Á‡ÅU }¶Ó^ý…©/g2QX‡Fdñè„þÔ™ý+}Œ£™¶á]ýçÐX‚²ÖرÕïj“7MÞx±·æ0Úl¯Ïy=¼îÈññ‹œØŽáÉAo \@–>Jõ ÍôÆRÉ#B?³5'ÿÄ]“hqÏÛq -Ç{œÏa‹ÊÉŠ 8sˆ™iA5VŠ¤Ã±—Ê ÔÇ·BÂn=2½·Cêí Ãå/ÇæYàí q±·§…š‹¥±z*<·°bƒF]B/8ËHÊ©¨ ·Ä€ÈÛÃÐ eÃðžòRã]áׂ¼ÔXdNòÌK6+jðc·©©§ säü÷æðÀ!àן { rN¾~sHzc8Ïõñ;ò¤¤×Qõ“ð÷ã8Q2­„~.„Ÿ“1ºò¶/2¶ÑÎl öwüùúèÝýè[Å&vða‚÷“ÞuÉÏ¥éó9ùyŒ“ Úö¯i(¿>§h¶~ê6ö¬<1x;hT<Þù_ëëÔ·îö¿p}ÙnÿÎt8v:.¶ÓóñW¦Çm¦gÅCï8fêÔ¶N•z¹ÜÍœž°{ ñù­5ðÔÍ}+1Ü=ñª·Óoܯ/¸“¬âÈ€v²#é€Íw=ør_‹ 4úë±s8zKÍv ­ÐÚp‚A <ÇÅûR?ôáæü‰9¢‘/pjU Ohùqà¾Ã]¢øC¼¹8ð ÛAAÜszWfUD~€¤^­Ð!×hFàFuw·“£Ž vßrë‡ïÁ6ü]ï?=á¼yhÒ|Ćݚ.`ÙÌ &—ë]Y¿câ‚Љlê'XÇo»>o–Ô“+¤\a™˜WEžµ¤Q=¹M‚ *­Ø%Ð|{ÿZ ]ãæ“íjn×ì¯uíO°lwöëã-c!ÿã!!ZØ&û¾PU>•wªí×s¦WÄÔ螵̾K9¹½o„¦e¿ ò„ÁÅË\^áX4)ªrE0·­ú'Æ[SÏp_c"Â,gÒ†ôØn Ø7 ¶œ×iÁO€ÁÿK9Ü>ÑçTïµê3¶vž['õÒ;Up¬†²tÊ4ÜÊÞ,h#À¦€¯;ÍíÍ" ? t €(!ÐŽn+R’¨L°Mà–gºÖ+ K[‹^¶ûØ`oàEÏc½Ž/B»>¼îøà>‹«^½H–9+¸L6`Q¤¤7šÚÓ "s–Ã<–®†¦}Õßqš#.¢f•Î+M.X ³þ_ê«î·‰¿Ðÿ°/âÃIá7¹í“Ók‹4Î%MÜ;p€¡ØLj,¹²”Ôýëo†»Ë]GI¼#ŠøÓ3Ãá|ñæÏȬÞ6÷›Õ~´IÚlÓ«bã[ÆFÿ´Â ZãÓå×=¼mvÕió¹Y hÍþtò†+@ðý·ï›«“Õê§Ízwÿ²yø*ùÝþý}³‹ÔçMl-y8ì!ú[´/:³KSÞl7àEñ *TñËõ{´âr³½j®Z K¥6»ü÷ì&×›jó¹ÙÞaÖUðŠºÄ—Ç}ì½ôBÀhD"yù wÍnß?cîž.ší0‰nÚôu%!ŽÛŽŒÎÕéû®^oñõs\®ã .ÑÏhøBÁ€gÇãÁÒ ì'³£ýl?ûkã¢`ÆÅ¹´:¿PUð®ºs ­}…Ï­ãêoøƒ1@²‹º†6~ÛI$iFˆDIbSPfíri°¦”`’˜PÚëU.À—:œÈé×”gB. Ö”¢]’¢KKñ¯bÜ«ˆckKîãÂÁ2 ÅVbDiƒŽ?Ú^B¿$,âŒÒNô\a¹”òN‚Îlè—„E‚£Œ \õŽ……4T™H•Zf†¤5å‘Ôa2Ò.I±¥¥.÷'®)Å×¹-ýšòêÜ»¸¦1 RÎàWú«ÌýŠkJQ>³%­‹`$Ú +›‚¿Ò_ WWšëó€MkÊ ¹‹qMC_¤ Å¯ôW™;V—É¥U¸iMy:w±.«…6)vu™]ÚåŽÕe’iŸÇnZS^È]¬Ë*ªë»ºÌ2#H-(SÍÈšti¦”®Ué®G”.Þ =‘í²î¤Ob{òû$Ò­ÒvçKéØnóËXaìbs#gD€¤“ÎæF@«oÁIT&é#•øÔ™N¥zá‰B(|~ªN•©LSkä”1/ix?n¾2måÿ¥ÆsÕàñ¤ûI«p*"#Ï”i>M©ŠÈ$DWDÆ »"2…ºÑ#m?“Õ/3-áȵV¤Œù…¨õTC8TYѺ¶ñÐZ>¦J'Uª&‡Â“Ù“tˆ8zâ\:p•é@c•VOyJ«˜S:3å)“ô±Jï¦Té!'‚&ý>Ô8‰Ê±ãêP\ð4;V™"v•E f;‰Ê±c•ELM±c•žÖ‡i"v¬2Eì$ ´ï(ÒO3`›ˆÂ§˜–²æ¨ƒYgëöuÝy/,œëg÷Âì"(ìÅ¢_é:6F/ øØ}š ÕÂ-¶ zÚ¨ÇU ~̵ 1¢ácmÊLx6žkÓn"E(x¬È„‰ˆzët®Í‰œBe,$IÃX-¤ƒ³v"µy:ôn¹8zôtkÃt˜BQ™ÕY:L¢Óa¬mµžcE&L¤(¥ÃX[¬ª²H¶˜ jB•1!ÙêPû\-ô¡œBí¨‹ê5~àŸ¬>µÉ)­ƒ&è ¤œ^H/¢EÒbßtù%¨ÖÍ _×è‘é ³Aæx»×Ú¿«:xÁB;€f¢z;ú’³ç¶`’®$÷!SÞÁAŽC[÷%îu=(FÙsýB{ÓÂÎIÙrÍ ÀvÄêä®ô'Z£`tP¨»Ý ½æ]ðAºœÂQί‹ ìnõôöŸ2"O[ÿ´ê‰—”îøÑIs/aªvàÃ=´Ú:¼˜|‡6±¦;RÁMšZª m¬²¤ ËÖ<§k•°U‹‰P›ÑF5:Ù=ÒYE%Ì.´3m€AeQX/Üiƒ =¥õÆöàª=d{¤aorE’?BiÄc1¢›¡KϯfG®ÏÆ'™#;ç"ªr?æhoÏi.â<–±†K~z²Æ Ñ–.Š4DŒéà4£2¶/Q¶õä¸D>±'/ìÅë«ÓåC³ÏxòfyÝœm—7«f;;º¾_~nªåzÕ©¹ƒŸªëms¿Ûl›êþãæ "¸)m8¹Ú¼o.^¬VûûÝv ¼ ÐP=Û5ÛÛ›5ˆ¨®›]ÕüÑ\öÔûË+¨ƒ@ _£ý°Ym¶/nA0Ýט»‡»Íõvy÷ñá[ª/ñ_#¬šÏÍJýo¸QUuõwãåZ— · endstream endobj 12 0 obj 5268 endobj 13 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VNRSSU+Myriad-BoldItalic /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 14 0 R /Widths [ 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 269 387 541 541 869 666 198 314 314 452 596 260 322 260 326 541 541 541 541 541 541 541 541 541 541 260 260 596 596 596 437 749 618 582 583 681 517 511 673 666 274 399 590 487 821 666 705 559 705 583 510 527 655 611 864 569 570 553 314 337 314 596 500 395 554 562 433 560 501 329 558 563 265 275 530 265 831 563 559 565 560 370 416 348 560 512 733 498 497 450 314 240 314 596 184 184 184 255 541 448 1000 519 519 395 1260 510 268 909 184 553 184 184 255 255 448 448 336 500 1000 395 859 416 267 826 184 450 570 184 269 541 541 541 541 240 556 395 673 400 461 596 322 506 395 356 596 365 362 395 559 538 260 395 356 383 460 826 826 826 437 618 618 618 618 618 624 845 584 517 517 517 517 274 274 274 274 693 666 705 705 705 705 705 596 702 655 655 655 655 570 558 580 554 554 554 554 554 554 763 434 501 501 501 501 265 265 265 265 558 563 559 559 559 559 559 596 560 560 560 560 560 497 564 497 ] >> endobj 14 0 obj << /Type /FontDescriptor /FontName /VNRSSU+Myriad-BoldItalic /FontBBox [ -95 -250 1225 852 ] /Flags 32 /CapHeight 674 /Ascent 852 /Descent -250 /StemV 152 /ItalicAngle 0 /XHeight 489 /FontFile3 22 0 R >> endobj 15 0 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceCMYK >> endobj 17 0 obj /DeviceRGB endobj 18 0 obj << /Filter /FlateDecode /Length 19 0 R /Height 60 /Width 128 /BitsPerComponent 8 /ColorSpace 17 0 R >> stream H‰ìW1kMM¯ØÙYØha‘ð!|½*‹`Ô Š ä¡‰"Â# $•Ex…MÀ`“"`“"ðê€ø$ùæ'ìw؃—“;;óæíîK^òí)»ófgî=÷Þ3wŠbl}ùòåñãÇ{%¶··ÝÃÏŸ?Ç_µC@òׯ_·KÄæÄBcâxrvŸ}€10OÒÒüç/82LecÃÏ<À9˜WU?x=r°KN)MÚŒSÕÆ Òåæ%Ð ç²”TpÜ8Î_ü®­­†]5‘SJSÒ9 UÖ××c k·¶¶–——§$ÿ[D¢sÐçÉu”ú´¢nllPÿ‘ÿg®¨[AŽÜÕ(% ÎÈi/_¾´ùN‚ð9¢óæÍ›ü‹_±D"-¶ Æñ/æ˜ÙnSÛÅÖt¯ÜTGð0È-B`0m0BO{½>á #õäæÍ›3 pýúõ°;e4ýúeã¼µY}ñ0vrdïøC?á.ÃáÐܱDldk2"ü—Ÿ°GªœÀJØš¶õ„6¨_œnÊ¿œ’Ø!ÿóóó.\ ™(ÒùQ¸té’òñâEÔéžµl5hâÀ"eB:¬Ì$ Ù´…IýÑOP˘fð9Ñ ZøÜtuuUwÄ=}útý/ $÷ï߇ÙÄ £^ÌÍÍ9t ,³Óžš¾Xáðð0 ‘ ½Š•‰áÆ®öÎõõ§EÄÚűøõªã?1þoß¾ýO‰œ–Éø7ÕêøÏD+D‘´ 8t®\¹ÒñŸV®«×®]³þ§ BÐñŸtG5nd!Ð6èë?¶¶¶š/{îÑV–¢­B£Åg”íq++Ÿo´">EGÜ#’_´Ù©Åîîîj‰KÔ[¤Eþñ‹K%®]:rŽk”öÛõi‹%¬ÃÌg´¸òÔ9oä_½zµÞ"måÿ`0°¥‚ÿÿõô§­æXZZÒ¥úýþö?¿ÿÞ-ñçÏŸæ«!çòßbŠb)ä?C€äG LIþÿþ]µ‰V;è‚8 j¬ðùóg$C+Æm„ ×ëübÂú¿¿¿ÏÞcqq‘íǽ{÷*gb|&@+6è‚°DÿB}±Ðh$êNÿEJ8«fgg‚l#ó777Ycñ aÕê_Œ”ˆ0¥áBå²!ù­ðïVVþ·Zp*´Ü°±±QÛ°MÙ)Ê*@rø‡=ØÔUÚËcQ¸|ùr« ¥6ÿšÀL Mc¼ê‚HŽãAÇQžêl¥Ùü[û`š››;<<´×ååå‘ç/\Ð#¬˜© ¿­œ–°EV7ª¬ò¡R²f޲ŽníÆFʧ¦¦1¦n/‹ã¸7ÿáfšy Ë õ]ýuõ‹ÀÙ_zWŠõ*˜«DB“ÙUùW2]2ë|ç‘®ãΑ|Œ¥ÿ!ù°awü†E¡ŽÇk\åÔ5!ʹº_ÉN>(9ŽgÜqe«y¢uêôªößÿ@E ‚^—áq¾«öªï bm¤eš'&4‰ý@&ÿNy.4¼†`'>Mô?¿ÿw @¬otU ¾ktu•.ƒÿŽ:M]·¸²ª^àe2¼ h%&ФÿYZZ"ùD¿ß¯<U“Ów‚ ¤©ïXP_­L4FØ"¡ÿ®Öô¬iØÿä?Ÿ‘ü(Êüw™¸6º‘²¿4]‹ Š2¥m„õ¥ (ÿaÇ¢6T²DšRwŒÆ&c;0P»çQ€mä?B@ò‹ˆþ;UqCg-•[ºã 8^;ôNPÅsÇŸã-ù˜mbÂ5ÝW݆Ù‚l‡Ã……Q¸”†Áé5+ùWM`ºê;%Sc«e qŒº¦ÅISÂ6|˜LWõ•Y×Dü‹’mf>« ¨âßÉiìäùhv:5¬1I1}‹ñï”ÁàRÚÆ] Ú.n¾ ‹«2˜/öK€k¹k7?ÀÎÎe`Bþ]†¤ï±bÑŒ5Çu¦FÙòY™I你Miì/K]dzÄá¥&DQZYYÑWQØÿ$Úé±rÖNÏVp·0>èaÛ×ñ¯G!>Ïä?q.[†¸ÐT"MH9ýOú°spÚ[Iµ9^Ù`ëú±q—ÈR‰e¹‹»'ÚW.7”ÿ°j¬±²[Ѐ¤jx"çô?ζðjp«^T:î!bíŠòŸNKûÊ»ó~¡vð V1Óµ—x]-o¾«%ðÚDö 9ýOÈjlkç )IØ|îZ7ó·2Äø/ªtÆVp £æ)õk9ýO8[i|H¦pJˆÞÈŠ YÒ¬sQs•ŽíBY`ø0sÚxŽ!§ÿ)‚ÄCФÊTØ|4²îf‘8. fü[‚i_ŸˆSdùo¯kkkaÿC„Fà5ÎÐP  Õ( ŸS=¯­ë Œ2ì.YçÈvä?C€äG Tæ©÷J Ž«Ø5ª(Kƒ'Z9ÑÎÈ6B°¹¹ ò‹ˆþ9!@>‡4Ζ  ŸE•˜È62¿×ë± ü¥ä‚á0 Á¸ëè:Œئìe iþ »‚s©Ì'œ¿$Ÿ@ÄÎß“@fÿÙaBȼu˜Èöp8„éH‡“Øfæ³ ŠŽÿ“Å`0 ì AÇÿIâàà@_JœŽ):tèСþ`>sû endstream endobj 19 0 obj 2166 endobj 20 0 obj << /Filter /FlateDecode /Length 21 0 R >> stream H‰tWÉnÜ8ýýÉ!jî À8v3cĈ¹9(mÙQÜ‹!«ãd¾~Š«X’r°Ý|õªXïqizsyÚÝq¼íÆóÓÛ·››ö¡û8ôý‘|iˆPäëæÓyß £„’¯ïÞ‘Ë›jóoû» gÛû޼ºhwÃé|¼{½ùÜ?÷߇sG67C÷³ï^âèê®Û2ØÇî.Ž.ûÃ÷íþFïOûÓ@¾pʹ$‚Ý­”ïê~ߎ¾ÄÝíñù©ºãîwÄ Ï‹Ë÷ÕææSl»_#4{ÝŽCÿ „ÔÖ*ò†ÖŒRNò2cá/|–×”R7Ýçnû]»ŸW~¸'×áÇÓphÝíû‡£3•0­zÿ½rü¶ÿ¯#†¦Ø¶ý6¥žÇÓeÿ<¶Ç]G„vœ¡%›ÛñôôL¾Dï/¶•[ 3<§žT›O8Òÿì¼gý¡™;2ô`äá™l>0 oï!g»s¿^ܯTÚÖZMLM™’äMü›à¥ÛCõêãëíŠÖ†På®zu€†ó´PP* :®¶Õøç~’ *F^ˆ$×0ú?ƒjJîHÅ”&ÚQÖjrðCeTî«ÛŠÁöÈÀÁ3ÝÇ]‚æ4)® Ç|®Kq-Â0ÇSBŒ‹f–/,Êçf–Ÿ€gjg²Ö´±)Nyæx¢>Kq\ZVs¦Oúý0ûSè/å”þ¥þ¼]¥þÒ°Gú½!å#ý¥!1Žô{C&ý¥Ü/ô{¹ÇKýq»dýœéZò´I ŽÄé Ã̆זI'êK¹† ¾¨êPVMÅŒËlD7×E¨Rk\m¨;¢x®=(0µ*Hm@*Ó ¥Â¡bftbr*W˜œŠÚ`¬¨™×[˜Ãv²5Ùl.1X´\Ð?.ÓŠq·…uÍNM–ž`§&æäÚRÑ©‚Bõà¶«ƒ¢Vpl+ÜËVÌ÷)LÅe­re¥3Ì1Ý5ZqngE °dCëê€Á-ð&bˆ™ó ¦k5_ÖÔr­fF ¦ÑkL¶4ïÀÆF 1³öb½cí3kGÌ…w¥vÄÌÚ æB%Ö^0Í|5°ö‚™µ¯ï*fðNw›ÅƒåQ¬©V¶ü2åMSk6uúF…«¾òÝNm@5îZ†Í°¼ÿÜl¸ÈÁ·0ׂäÓ!¥8>e$.W*ŠHð¨Âq¡Q\6³¸áð5ˆHšF¬d—s¨ ƒ#îÙŠé3GRè°¢-;Rœ#e|écéb:G ’˜=£EÑÏŽ¤…lÏ\øäÌà+Ìàødk6QÀ.~ 'Å¿O˜¡á9àö¢F‡„iV+!]vSkfÏ`^ ^‘k„„SOaÑã°Å¼ûê{uÖrÙÀÁ71üÛëµ>·Sã—¨Æj)dz!šZP­YxFÊ)[Ň¿¼êÆwNí1-™«çß>š»s²„Ö±ÃP »ƒÊÑŒ‹D5SÛH¯[Qîð L íÁUl¬¿_hMeh/A`6¼á8qˆÊxÄ‘o&Šv¾-,ÏÐÞCð”EŸ8±rBâô®P†T-´ôªK îFW*Õ¿> stream H‰|‘mHSaÇïÝËÍô:Ë9ÙœmDÑl-² ‹|É0TB³"J¼mW½¦»v7mŠÑ¢×™Y‚naEe)AE/Ša¥AA‘½àSDŠ  8wœ¢î¾ö|8üþœÿyþÏ¡)Š¢iÚ´£¨¸¤¤tya£$p®Ùb+ßËÕΈ¸TŽ£d3-'«äEj9AãgUvlKÖŒ†gµÐ÷¾wÇSjšîzœ#Ö)•U^²Ìi#i«ì‘ºšd¹Ä}<)iôxùZÉw;E©N”8/ïr’USCŠ#]RÌ{x©A¡so!‚‡pÄ+q.¾–“ö±â?N¤–k$Š&ñ•‚¢J ÜÄÉK^N¹«ë%Áãœ^At{þÙG¢’¹¬s„RŽƒJ¥²©<ª€b”ï¡4”›zA§Òíô[(Ð…G/5ÈwÀD·…‡ÕáŠÄ™pºw2¸;ÜE•™6™N2-ãÇÞk€N#–2¸áwºŒÌKè¿ðæâ÷žiÓælÚ9G{Ö¼f ¸qûíýÙÛŸLmŒ/¥ÙáÏÞ‡ýF]¸Ô¬¼Xzì0 5Œû ß&oŽZß?tI°f°˜g[]QT`Ù¸± c06 Ó¾âȱôkH)ý>B:Äþì[¿õ™¸£¬:yØQkd3Ðñ× ÖC¼Þ'W%žw~ A‡±ËYÜfÆc¨Â\̰ê–<Û2õt¬wâ¡å £÷ªN -bTôôÈÖoß]nvúnμfö|(*C~ÐLýøöƒ¾®„Ü fµœ FƒÏUvx‡™«îºê³é>q¹; v€ØX4“ûdnF W¢ ÞdyÝyã©% >ÊJšQÓjè¼óä¥ùæÅ&2 WYÆ¡ƒpü Ý%?PCjb¤<šD^ kL†»à‚2-æEöc;ÔÔìkö™Ì„¼A‹‹4ÿÞ­Õùƒáô î -4d ûÜ/1X|zÞÞGp(Áíuó-—Ê7ýÃη4YÙhPEƒ=T], v6¶•Õý`%ÏwR endstream endobj 23 0 obj 796 endobj xref 0 24 0000000016 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000492 00000 n 0000000601 00000 n 0000000751 00000 n 0000000830 00000 n 0000001010 00000 n 0000001420 00000 n 0000003240 00000 n 0000010634 00000 n 0000015984 00000 n 0000016006 00000 n 0000017233 00000 n 0000017466 00000 n 0000000000 00001 f 0000017559 00000 n 0000017587 00000 n 0000019893 00000 n 0000019915 00000 n 0000021274 00000 n 0000021296 00000 n 0000022200 00000 n trailer << /Size 24 /Info 5 0 R /Root 1 0 R >> startxref 22221 %%EOF omake-0.9.8.5/doc/html/images/omake.eps0000664000152300015230000036775710524166566015762 0ustar jyhjyh%!PS-Adobe-3.1 EPSF-3.0 %%Title: omake.eps %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %AI9_PrintingDataBegin %%For: Jason Hickey %%CreationDate: 9/20/2004 %%CropBox: 0.000000 0.000000 577.359375 75.553711 %%BoundingBox: 0 0 578 76 %%HiResBoundingBox: 0.000000 0.000000 577.359375 75.553711 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_CoolType_Core 1.1 0 %%+ procset Adobe_AGM_Core 2.0 0 %%DocumentFonts: %%DocumentSuppliedFonts: %%PageOrder: Ascend %%DocumentProcessColors: Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %%EndComments %%BeginDefaults %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-1999 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 233 dict dup begin put /nd{ null def }bind def /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_src256 256 string def /AGMCORE_dst64 64 string def /AGMCORE_srcLen nd /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_imagestring0 nd /AGMCORE_imagestring1 nd /AGMCORE_imagestring2 nd /AGMCORE_imagestring3 nd /AGMCORE_imagestring4 nd /AGMCORE_imagestring5 nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_mbuf () def /AGMCORE_ybuf () def /AGMCORE_kbuf () def /AGMCORE_gbuf () def /AGMCORE_bbuf () def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_arg1 nd /AGMCORE_arg2 nd /AGMCORE_&setgray nd /AGMCORE_&image nd /AGMCORE_&colorimage nd /AGMCORE_&imagemask nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&&setcolorspace nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_in_rip_sep nd /AGMCORE_host_sep nd /AGMCORE_will_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ccimage_exists nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSA_cache 0 dict def /AGMCORE_CSD_cache 0 dict def /AGMCORE_pattern_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_ndx nd /AGMCORE_err_strings nd /AGMCORE_cur_err nd /AGMCORE_ovp nd /AGMCORE_CRD_cache where{ pop }{ /AGMCORE_CRD_cache 0 dict def }ifelse /bdf { bind def } bind def /xdf { exch def } def /ldf { load def } def /ddf { put } def /xddf { 3 -1 roll put } def /xpt { exch put } def /bdict { mark } def /edict { counttomark 2 idiv dup dict begin {def} repeat pop currentdict end }def /ps_level /languagelevel where{ pop languagelevel }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /ndf { 1 index where{ pop pop pop }{ dup xcheck {bind}if def }ifelse } def /skip_image { has_color ne{ dup 256 idiv {currentfile AGMCORE_str256 readstring pop pop}repeat currentfile AGMCORE_str256 0 4 -1 roll 256 mod getinterval readstring pop pop }{ pop }ifelse } def /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx } def /colorbuf { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /makereadonlyarray { /packedarray where {pop packedarray} {array astore readonly} ifelse } def /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq { dup /HalftoneType get 1 eq { /SpotFunction get } { dup /HalftoneType get 2 eq { /GraySpotFunction get } { pop {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub} {dup mul exch dup mul add 1 exch sub}ifelse}bind } ifelse } ifelse } if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /stkpath_clp_npth { strokepath clip newpath } def /stk_n_clp_npth { gsave stroke grestore clip newpath } def /npth_clp { newpath clip } def /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust userdict begin /showpage {} def mark } def /graphic_cleanup { cleartomark end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def /AGMCORE_arg2 xdf /AGMCORE_arg1 xdf clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval dup (.) ne AGMCORE_arg1 0 lt and { pop } { stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show } ifelse 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { dup 94 eq { pop AGMCORE_arg1 0 ge { AGMCORE_arg1 AGMCORE_str256 cvs dup /AGMCORE_tmp exch length def AGMCORE_str256 exch 0 exch putinterval AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show } { /AGMCORE_arg1 0 def } ifelse 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def AGMCORE_arg1 0 ne { /AGMCORE_arg1 AGMCORE_arg2 def } if } { AGMCORE_str256 exch AGMCORE_tmp exch put /AGMCORE_tmp AGMCORE_tmp 1 add def }ifelse } ifelse } forall } bdf level2{ /AGMCORE_map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup /Cyan eq{ pop (_Cyan_) }{ dup /Magenta eq{ pop (_Magenta_) }{ dup /Yellow eq{ pop (_Yellow_) }{ dup /Black eq{ pop (_Black_) }{ dup / eq{ pop (Process) }if }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse }if }def }if /doc_setup{ Adobe_AGM_Core begin /AGMCORE_will_host_separate xdf /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not { errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and { $error /newerror false put AGMCORE_cur_err /AGMCORE_bad_environ eq { /AGMCORE_bad_environ AGMCORE_ps_level AGMCORE_ps_version } { AGMCORE_cur_err 0 0 } ifelse compose_error_msg } if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def /AGMCORE_&&setcolorspace /setcolorspace ldf }if /AGMCORE_&image systemdict/image get def /AGMCORE_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMCORE_&colorimage /colorimage ldf }if /AGMCORE_in_rip_sep level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse def level2 not{ /xput{ dup load dup length exch maxlength eq{ dup dup load dup length dup 0 eq {pop 1} if 2 mul dict copy def }if load begin def end }def }{ /xput{ load 3 1 roll put }def }ifelse /AGMCORE_gstate_known{ where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /AGMCORE_GSTATE AGMCORE_gstate_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 7 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core exch /AGMCORE_gstackptr exch put AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if Adobe_AGM_Core exch /AGMCORE_gstackptr exch put }def /grestoreall { AGMCORE_&grestoreall Adobe_AGM_Core /AGMCORE_gstackptr AGMCORE_gstacksaveptr put }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core begin /AGMCORE_gstackptr exch def /AGMCORE_gstacksaveptr AGMCORE_gstackptr def end AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput end }def /page_setup { Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /AGMCORE_ccimage_exists /customcolorimage where {pop true}{false} ifelse def /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and AGMCORE_producing_seps or }ifelse def AGMCORE_host_sep AGMCORE_will_host_separate not and { /AGMCORE_cur_err /AGMCORE_color_space_onhost_seps def AGMCORE_color_space_onhost_seps }if /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots }ifelse { /setcmykcolor[ {4 copy add add add 0 eq currentoverprint and{pop 0.0005}if}/exec cvx /setcmykcolor load dup type/operatortype ne{/exec cvx}if ]cvx def }if AGMCORE_host_sep{ /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall }def level2{ /mo /moveto ldf /ln /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def /invert_image_samples { Adobe_AGM_Core/AGMCORE_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def /get_gstate { AGMCORE_GSTATE begin /AGMCORE_GSTATE_ctm AGMCORE_tmpmatrix currentmatrix def /AGMCORE_GSTATE_clr_spc currentcolorspace def /AGMCORE_GSTATE_clr_indx 0 def /AGMCORE_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMCORE_GSTATE_clr_comps AGMCORE_GSTATE_clr_indx 3 -1 roll put /AGMCORE_GSTATE_clr_indx AGMCORE_GSTATE_clr_indx 1 add def} repeat pop /AGMCORE_GSTATE_fnt rootfont def /AGMCORE_GSTATE_lw currentlinewidth def /AGMCORE_GSTATE_lc currentlinecap def /AGMCORE_GSTATE_lj currentlinejoin def /AGMCORE_GSTATE_ml currentmiterlimit def currentdash /AGMCORE_GSTATE_do xdf /AGMCORE_GSTATE_da xdf /AGMCORE_GSTATE_sa currentstrokeadjust def /AGMCORE_GSTATE_clr_rnd currentcolorrendering def /AGMCORE_GSTATE_op currentoverprint def /AGMCORE_GSTATE_bg currentblackgeneration cvlit def /AGMCORE_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMCORE_GSTATE_gy_xfer xdf cvlit /AGMCORE_GSTATE_b_xfer xdf cvlit /AGMCORE_GSTATE_g_xfer xdf cvlit /AGMCORE_GSTATE_r_xfer xdf /AGMCORE_GSTATE_ht currenthalftone def /AGMCORE_GSTATE_flt currentflat def end }ndf /set_gstate { AGMCORE_GSTATE begin AGMCORE_GSTATE_ctm setmatrix AGMCORE_GSTATE_clr_spc setcolorspace AGMCORE_GSTATE_clr_indx {AGMCORE_GSTATE_clr_comps AGMCORE_GSTATE_clr_indx 1 sub get /AGMCORE_GSTATE_clr_indx AGMCORE_GSTATE_clr_indx 1 sub def} repeat setcolor AGMCORE_GSTATE_fnt setfont AGMCORE_GSTATE_lw setlinewidth AGMCORE_GSTATE_lc setlinecap AGMCORE_GSTATE_lj setlinejoin AGMCORE_GSTATE_ml setmiterlimit AGMCORE_GSTATE_da AGMCORE_GSTATE_do setdash AGMCORE_GSTATE_sa setstrokeadjust AGMCORE_GSTATE_clr_rnd setcolorrendering AGMCORE_GSTATE_op setoverprint AGMCORE_GSTATE_bg cvx setblackgeneration AGMCORE_GSTATE_ucr cvx setundercolorremoval AGMCORE_GSTATE_r_xfer cvx AGMCORE_GSTATE_g_xfer cvx AGMCORE_GSTATE_b_xfer cvx AGMCORE_GSTATE_gy_xfer cvx setcolortransfer AGMCORE_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMCORE_GSTATE_ht /HalftoneType get ne { mark AGMCORE_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMCORE_GSTATE_ht sethalftone } ifelse AGMCORE_GSTATE_flt setflat end }ndf AGMCORE_producing_seps not{ /setcolorspace where{ /Adobe_AGM_Core_Id known not }{ true }ifelse { /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or{ dup 0 get dup /Separation eq{ pop [ exch {} forall ] dup dup 1 get AGMCORE_map_reserved_ink_name 1 exch put }{ /DeviceN eq { [ exch {} forall ] dup dup 1 get [ exch {AGMCORE_map_reserved_ink_name} forall ] 1 exch put }if }ifelse }if AGMCORE_&&setcolorspace }def }if }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /ln{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /currentScreenFreq{ currentscreen pop pop }def /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /n_color_components { dup type /arraytype eq{ 0 get }if dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse } def /setcolor_devicecolor { dup type /arraytype eq{ 0 get }if dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /op /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /spclp /stkpath_clp_npth ldf /f /fill ldf /ef /eofill ldf /s /stroke ldf /sclp /stk_n_clp_npth ldf /nclp /npth_clp ldf /img /imageormask ldf /sepimg /sep_imageormask ldf /idximg /indexed_imageormask ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall }def /page_trailer { end }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/Adobe_AGM_Core 2 copy known{ undef }{ pop pop }ifelse }if }if }def /doc_trailer{ }def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { Adobe_AGM_Core/AGMCORE_name xddf false currentpagedevice/SeparationColorNames get{ AGMCORE_name eq or }forall }def /current_ink { dup length 0 eq{ pop true }{ Adobe_AGM_Core/ink_result false put { dup /ProcessCyan eq{ AGMCORE_cyan_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessMagenta eq{ AGMCORE_magenta_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessYellow eq{ AGMCORE_yellow_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessBlack eq{ AGMCORE_black_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /sep_colorspace_dict AGMCORE_gget dup null eq{ pop false ink_result or Adobe_AGM_Core/ink_result xddf }{ /Name get eq{ 1 setsepcolor currentgray 1 ne ink_result or Adobe_AGM_Core/ink_result xddf }{ false ink_result or Adobe_AGM_Core/ink_result xddf }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse pop } forall ink_result }ifelse }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA map_csa setcolorspace_opt set_crd end } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /sep_colorspace_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { dup /sep_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def Adobe_AGM_Core/AGMCORE_sep_special Name dup () eq exch (All) eq or ddf AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep }{ Name inRip_spot_has_ink not }ifelse { /pop cvx 1 }if /setcustomcolor cvx ] cvx bdf }{ /TintProc /setcolor ldf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd 1 setsepcolor end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse end }def /setindexedcolor { AGMCORE_host_sep{ /indexed_colorspace_dict AGMCORE_gget/Lookup get 4 3 -1 roll map_index setcmykcolor }{ setcolor }ifelse } def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMCORE_&imagemask }{ AGMCORE_&image }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMCORE_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMCORE_&image }ifelse }ifelse cleartomark restore end }def /overprint_plate { currentoverprint{ 0 get dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false }ifelse }def /rdline { currentfile AGMCORE_str256 readline pop } def /rdcmntline { currentfile AGMCORE_str256 readline pop (%) anchorsearch {pop} if } def /filter_cmyk { dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch { AGMCORE_src256 readstring pop dup length /AGMCORE_srcLen exch def /AGMCORE_ndx 0 def AGMCORE_plate_ndx 4 AGMCORE_srcLen 1 sub{ 1 index exch get AGMCORE_dst64 AGMCORE_ndx 3 -1 roll put /AGMCORE_ndx AGMCORE_ndx 1 add def }for pop AGMCORE_dst64 0 AGMCORE_ndx getinterval } bind /exec cvx ] cvx } def /imageormask { begin SkipImageProc not{ save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq{ imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if image }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMCORE_host_sep{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray knockout_image_samples currentdict imageormask_sys }{ nulldevice currentdict imageormask_sys }ifelse }ifelse }{ imagemask }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ MultipleDataSources{ 4 {pop} repeat /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def AGMCORE_is_cmyk_sep{ currentoverprint InksUsed current_ink not and{ nulldevice }{ invert_image_samples }ifelse }{ currentoverprint not{ knockout_image_samples }{ nulldevice }ifelse }ifelse 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll setcolortransfer MultipleDataSources NComponents AGMCORE_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not{ currentoverprint not{ knockout_image_samples }{ nulldevice }ifelse }if }ifelse 1 AGMCORE_&setgray currentdict imageormask_sys }{ image }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentoverprint InksUsed current_ink not and{ }{ currentcolorspace overprint_plate not{ knockout_unitsq }if }ifelse }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }if end }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Core begin /AGMCORE_mbuf 0 string def /AGMCORE_ybuf 0 string def /AGMCORE_kbuf 0 string def { colorbuf dup length AGMCORE_mbuf length ne { dup length dup dup /AGMCORE_mbuf exch string def /AGMCORE_ybuf exch string def /AGMCORE_kbuf exch string def } if dup AGMCORE_mbuf copy AGMCORE_ybuf copy AGMCORE_kbuf copy pop } addprocs {AGMCORE_mbuf}{AGMCORE_ybuf}{AGMCORE_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Core/AGMCORE_k xddf Adobe_AGM_Core/AGMCORE_y xddf Adobe_AGM_Core/AGMCORE_m xddf Adobe_AGM_Core/AGMCORE_c xddf AGMCORE_y 0.0 eq AGMCORE_m 0.0 eq and AGMCORE_c 0.0 eq and{ {AGMCORE_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMCORE_k mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_y mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_m mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Core/AGMCORE_k xddf Adobe_AGM_Core/AGMCORE_y xddf Adobe_AGM_Core/AGMCORE_m xddf Adobe_AGM_Core/AGMCORE_c xddf {AGMCORE_c mul 1 exch sub} {AGMCORE_m mul 1 exch sub} {AGMCORE_y mul 1 exch sub} {AGMCORE_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def begin SkipImageProc not{ save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMCORE_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentoverprint InksUsed current_ink not and{ }{ currentdict/ImageMatrix get concat knockout_unitsq }ifelse }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or{ knockout_image_samples }{ nulldevice }ifelse currentdict imageormask_sys }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }if end end }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /read_image_file { AGMCORE_imagefile 0 setfileposition dup /DataSource {AGMCORE_imagefile AGMCORE_imbuf readstring pop} put exch load exec }def /write_image_file { { (AGMCORE_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Core/AGMCORE_imagefile xddf Adobe_AGM_Core/AGMCORE_imbuf Width BitsPerComponent mul 7 add 8 idiv string ddf 1 1 Height { pop DataSource dup type /filetype eq{ AGMCORE_imbuf readstring pop }{ exec } ifelse AGMCORE_imagefile exch writestring }for true }ifelse }def /imageormask_l2_overprint { write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if AGMCORE_imagefile closefile (AGMCORE_imagefile) deletefile }{ currentdict imageormask }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget /CSA get map_csa overprint_plate not{ knockout_unitsq }if }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_image_samples imageormask_sys }{ nulldevice currentdict imageormask_sys }ifelse }ifelse }ifelse }{ level2{ imageormask }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin currentcolorspace dup 1 /DeviceGray put dup 3 [ currentcolorspace 3 get { exch 4 mul 4 getinterval {} forall AGMCORE_get_ink_data 255 div 1 exch sub } /exec cvx ] cvx put setcolorspace currentdict Operator /imagemask eq{ AGMCORE_&imagemask }{ AGMCORE_&image }ifelse end end }def /add_csa { Adobe_AGM_Core begin /AGMCORE_CSA_cache xput end }def /map_csa { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSA_cache get exch get }if }def /add_csd { Adobe_AGM_Core begin /AGMCORE_CSD_cache xput end }def /get_csd { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSD_cache get exch get }if }def /add_pattern { Adobe_AGM_Core begin /AGMCORE_pattern_cache xput end }def /get_pattern { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_pattern_cache get exch get }if }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ false op [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/Intent known{ currentcolorrendering/Intent get }{ null }ifelse Intent ne{ false Intent AGMCORE_CRD_cache { exch pop begin dup Intent eq{ currentdict setcolorrendering_opt end exch pop true exch exit }if end } forall pop not{ systemdict /findcolorrendering known{ Intent findcolorrendering pop /ColorRendering findresource dup length dict copy setcolorrendering_opt }if }if }if } def /add_crd { AGMCORE_CRD_cache 3 1 roll put }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/CRD known{ AGMCORE_CRD_cache CRD get dup null ne{ setcolorrendering_opt }{ pop }ifelse }{ currentdict/Intent known{ updatecolorrendering }if }ifelse }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def /NComponents 1 def /ImageType 1 def /Decode [0 1 def] /SkipImageProc {false} def currentdict end }if dup begin /HostSepColorImage false def currentdict/Decode known not{ /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] def }if currentdict/Operator known not{ /Operator /image def }if end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cpaint_gcomp { AGM_preserve_spots{ gsave nulldevice }if }def /cpaint_gsep { AGM_preserve_spots{ grestore currentoverprint Adobe_AGM_Core/AGMCORE_ovp xddf }{ gsave nulldevice }ifelse }def /cpaint_gend { AGM_preserve_spots{ Adobe_AGM_Core/AGMCORE_ovp get setoverprint }{ grestore }ifelse newpath }def /AGMCORE_ctm_stack bdict /push_ctm { stack length size le{ stack dup length 2 mul array dup /stack exch def copy pop }if stack size 3 -1 roll put /size size 1 add def } /pop_ctm { /size size 1 sub def size 0 lt{ /size 0 def }if stack size get } /stack 1 array /size 0 edict def /save_ctm { matrix currentmatrix AGMCORE_ctm_stack begin push_ctm end }def /restore_ctm { AGMCORE_ctm_stack begin pop_ctm end setmatrix }def /path_rez { dup 0 ne{ AGMCORE_deviceDPI exch div dup 1 lt{ pop 1 }if setflat }{ pop }ifelse }def end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 1.1 0 %%Copyright: Copyright 1997-1999 Adobe Systems Incorporated. All Rights Reserved. %%Version: 1.1 0 userdict/Adobe_CoolType_Core 40 dict dup begin put/Level2? systemdict /languagelevel known dup{pop systemdict/languagelevel get 2 ge}if def Level2? not{/currentglobal false def/setglobal/pop load def/gcheck{pop false}bind def /currentpacking false def/setpacking/pop load def}if currentpacking true setpacking/bdf{bind def}bind def/ldf{load def}bind def/doc_setup{ Adobe_CoolType_Core begin/mov/moveto ldf/nfnt/newencodedfont ldf/mfnt/makefont ldf/sfnt/setfont ldf/ufnt/undefinefont ldf/chp/charpath ldf/awsh/awidthshow ldf/wsh/widthshow ldf/ash/ashow ldf/sh/show ldf end userdict /Adobe_CoolType_Data 2 dict dup begin/WidthShowArray 256 array def /GenFauxMMInst{}bind def end put}bind def/doc_trailer{currentdict Adobe_CoolType_Core eq{end}if Adobe_CoolType_Core/unload get exec systemdict /undef known{userdict/Adobe_CoolType_Data undef}if}bind def/page_setup{ Adobe_CoolType_Core begin}bind def/page_trailer{end}bind def/unload{systemdict /languagelevel known{systemdict/languagelevel get 2 ge{userdict /Adobe_CoolType_Core 2 copy known{undef}{pop pop}ifelse}if}if}bind def/ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}def/findfont dup systemdict begin userdict begin/globaldict where{/globaldict get begin}if dup where pop exch get/globaldict where{pop end}if end end def/systemfindfont /findfont load def/undefinefont{pop}ndf/copyfont{currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch{1 index/FID eq{pop pop}{def}ifelse}forall dup null eq{pop} {{def}forall}ifelse currentdict end exch setglobal}bdf/newencodedfont{findfont dup length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding exch def currentdict end definefont pop}bdf/scff{$SubstituteFont begin dup type /stringtype eq{dup length exch}{null}ifelse/$sname exch def/$slen exch def /$fontname 1 index dup type/stringtype eq{cvn}if def/$used false def end findfont $SubstituteFont begin $used{currentglobal exch dup gcheck setglobal null copyfont begin/FontName $fontname def/currentdistillerparams where{pop}{ /FontInfo currentdict/FontInfo known{FontInfo null copyfont}{2 dict}ifelse dup begin/ItalicAngle $italicangle def/FontMatrix FontMatrix[1 0 ItalicAngle dup sin exch cos div 1 0 0]matrix concatmatrix readonly end 4 2 roll def def} ifelse FontName currentdict end definefont exch setglobal}if/$sname null def /$slen 0 def end}bdf/ConcatStrings{dup 0 exch{length add}forall string exch 0 exch{3 copy putinterval length add}forall pop}bind def/BeginFauxMMFont{1 index findfont pop 2 array astore ConcatStrings 3 1 roll($)exch 3 array astore ConcatStrings exch findfont currentglobal exch dup gcheck setglobal null copyfont/tempfontname exch definefont pop exch 12 dict begin/FontName exch def /FontType 0 def/FMapType 6 def/FontMatrix matrix def/PaintType 0 def}bind def /EndFauxMMFont{currentdict end dup/FontName get exch definefont exch setglobal exch mfnt sfnt}bind def/GenFauxMMInst{Adobe_CoolType_Data/GenFauxMMInst get exec}bind def/DefFauxMMInst{Adobe_CoolType_Data exch/GenFauxMMInst exch bind put}bind def/WSALoop{4 copy 1 index add 1 sub 1 exch{3 copy put pop 1 add}for pop pop 3 2 roll add exch 256 add}bind def/BuildWidthShowArray{currentfont begin FontType 0 eq dup{pop FMapType 6 eq}if{SubsVector dup length 1 sub 1 exch getinterval}{()}ifelse end Adobe_CoolType_Data/WidthShowArray get 0 0 4 3 roll{WSALoop}forall 256 2 index sub WSALoop pop pop pop}bind def/wsa{ Adobe_CoolType_Data/WidthShowArray get}bind def/?set{$SubstituteFont begin /$used false def/$fontname 4 index def end 3 index findfont $SubstituteFont begin $used{false}{dup/FontName known{dup/FontName get $fontname eq 1 index /DistillerFauxFont known not and}{false}ifelse}ifelse exch pop end{exch pop exch pop exch 2 dict dup/Found 3 index put exch findfont exch}{exch exec exch findfont 2 dict dup/Downloaded 6 5 roll put}ifelse dup/FontName 4 index put copyfont definefont pop}bind def/?str1 256 string def/?str2 256 string def /?add{1 index type/integertype eq{exch true 4 2}{false 3 1}ifelse roll 1 index findfont/Downloaded known{exec exch{exch ?str2 cvs exch findfont/Downloaded get 1 dict begin/Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index(*)putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index(+)putinterval 2 dict dup/FontName ?str1 0 6 index getinterval cvn put dup/Downloaded Downloaded put end copyfont dup/FontName get exch definefont pop pop pop}{pop}ifelse}{pop exch{findfont dup/Found get dup length exch ?str1 cvs pop ?str1 1 index(+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch/FontName exch put copyfont dup/FontName get exch definefont pop}{pop} ifelse}ifelse}bind def/?sh{currentfont/Downloaded known{exch}if pop}bind def /?chp{currentfont/Downloaded known{pop}{false chp}ifelse}bind def/?mv{ currentfont/Downloaded known{moveto pop pop}{pop pop moveto}ifelse}bind def setpacking end userdict/$SubstituteFont 20 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known{get}{pop pop{pop/Courier}bind} ifelse def/currentdistillerparams where dup{pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known{get/Error eq}{pop pop false}ifelse}if not{ countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin/$str 128 string def/$fontpat 128 string def/$slen 0 def/$sname null def /$match false def/$fontname null def/$used false def/$fontname null def /$italicangle 26.5 def/$findfontByEnum{dup/$fontname exch def $sname null eq{ $str cvs dup length $slen sub $slen getinterval}{pop $sname}ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval/$match false def mark{ $fontpat 0 $slen 7 add getinterval{/$match exch def exit}$str filenameforall} stopped cleartomark/$slen 0 def $match false ne{$match(fonts/)anchorsearch pop pop cvn}{/Courier}ifelse}bind def/$ROS 1 dict dup begin/Adobe 4 dict dup begin /Japan1[/Ryumin-Light/HeiseiMin-W3/GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def/Korea1[/HYSMyeongJo-Medium/HYGoThic-Medium] def/GB1[/STSong-Light/STHeiti-Regular]def/CNS1[/MKai-Medium/MHei-Medium]def end def end def/$cmapname null def/$buildfontname{length $str 1 index(-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn}bind def/$findfontByROS{/$fontname exch def $ROS Registry 2 copy known{get Ordering 2 copy known{get}{pop pop[]} ifelse}{pop pop[]}ifelse false exch{dup/CIDFont resourcestatus{pop pop save 1 index/CIDFont findresource dup/WidthsOnly known{dup/WidthsOnly get}{false} ifelse exch pop exch restore{pop}{exch pop true exit}ifelse}{pop}ifelse}forall {$str cvs $buildfontname}{false(*){save exch dup/CIDFont findresource dup /WidthsOnly known{dup/WidthsOnly get not}{true}ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and{exch restore exch pop true exit}{pop restore}ifelse}$str/CIDFont resourceforall{ $buildfontname}{$fontname $findfontByEnum}ifelse}ifelse}bind def end end currentdict/$error known currentdict/languagelevel known and dup{pop $error /SubstituteFont known}if dup{$error}{Adobe_CoolType_Core}ifelse begin{ /SubstituteFont/CMap/Category resourcestatus{pop pop{$SubstituteFont begin /$used true def dup length $slen gt $sname null ne or $slen 0 gt and{$sname null eq{dup $str cvs dup length $slen sub $slen getinterval cvn}{$sname}ifelse dup/CMap resourcestatus{pop pop dup/$cmapname exch def/CMap findresource /CIDSystemInfo get{def}forall $findfontByROS}{pop $findfontByEnum}ifelse}{ //SubstituteFont exec}ifelse/$slen 0 def end}}{{$SubstituteFont begin/$used true def dup length $slen gt $sname null ne or $slen 0 gt and{$findfontByEnum} {//SubstituteFont exec}ifelse end}}ifelse bind readonly def}{/findfont{ $SubstituteFont begin dup systemfindfont dup/FontName known{dup/FontName get 2 index ne}{true}ifelse dup{/$used true def}if{$slen 0 gt $sname null ne 3 index length $slen gt or and{pop dup $findfontByEnum findfont dup maxlength 1 add dict begin{1 index/FID eq{pop pop}{def}ifelse}forall currentdict end definefont}{exch pop}ifelse}{exch pop}ifelse end}bind def}ifelse end end}if end %%EndResource %%EndProlog %%BeginSetup Adobe_AGM_Core/AGMCORE_err_strings 3 dict dup begin /AGMCORE_bad_environ (Environment not satisfactory for this job, which requests at least PostScript Level ^ and at least PostScript version ^. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end put 2 2010 true Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec %%EndSetup %%Page: name:1 1 %%EndPageComments %%BeginPageSetup Adobe_AGM_Core/page_setup get exec Adobe_CoolType_Core/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf mark /0 [/DeviceGray] add_csa /CSA /0 /1 [/DeviceCMYK] add_csa /CSA /1 /2 [/DeviceRGB] add_csa /CSA /2 cleartomark 800 path_rez 1 -1 scale 0 -75.5537 translate gsave [1 0 0 1 0 0 ] concat gsave 0 0 mo 0 75.5537 ln 577.359 75.5537 ln 577.359 0 ln clp save_ctm restore_ctm false op 0 0 0 1 cmyk %ADOBeginSubsetFont: Myriad-BoldItalic Initial %!FontType1 16 dict begin /FontInfo 15 dict dup begin /Notice (Copyright (c) 1992, 1994 Adobe Systems Incorporated. All Rights Reserved.Myriad is a trademark of Adobe Systems Incorporated may be registered in certain jurisdictions.) def /version (001.000) def /FullName (Myriad Bold Italic) def /FamilyName (Myriad) def /Weight (Bold) def /ItalicAngle -11 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end def /FontName /Myriad-BoldItalic def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /.notdef put def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ] def /FontBBox { -95 -250 1225 852 } def /XUID [6 41990 ] def /StrokeWidth 0 def currentdict end currentfile eexec A0B00ED5187D9C0F1ECDF51878C3AA5CAA3FFCA5020F48 69FCFE28B419AB05B54FAF315083D4CBAA039F6F2C78222B96DD9B7A2B2F6540 7F5FFD4B7AE09E3DF001E6A0F2542E98BD69945379CF84C778513B8588DAF05E 67085515BA36EA9B34646C07D9C61EECD29635C96DF5F1F26A0230A15283634F BA71ADA274F27504B683553F2DD088CDDE2EA465132F905B99F8D1C11C8851B6 609F206AEC988C888AD44C86CDB7DDB7E67FA4A6E40DC7C05D7C101DAE9FD0AC ADF6FB741A3D54B1442F27F850B87ADCED6DC9D4AEE70CE831E749EEE69CB73A EA8E974ED57E35AFABDC3439FFDB9A95CA80D95A6D8D1428F718831E92D6131D 1997C43F71A1BD983B26715ABA1CAB592746998C7BAB3CCF80D2DD0D4263A8BA 9AC2BF52C87B758AA8CDD24E2B71175BFD1902A80C2C99F90919CE8DEE7C895E 3B7185226126CD294BC556A1232ECA9F5FF7B8CAABE412FD207562AFEED7B1D5 B8977DD49020C3C79C468F322F682E8499FD65EC9BF68112EF408AF9E7DFE3F5 35721207058403C8FA350F051727230C6B74D4567099493E6576D5F612AA0C1C F3F90D7C0361831B74BF7E91050FCA572D1736C71E7C38610F22D1B3C8CE788F B05E0E92FF145C0F6D3F756DE6C31D51F8C57048A56E42F46CF7239D10ABE06A 845F52389BDA9795D76A413060304968875FA4A64D1F697EED37DAF8039F212E BEC34B6CE9038457D7E28AC4D882E10FAE59BB3DA9B9CBA1EE49FCBD18D48572 DA44980446FDCD8163A6ADA603C5866712A6D700AA820FB160DD6CC0BC7EACC0 439E7AAD5BCA1AFAA8EEFBCAEF0931537714EBAFD180DB32EA76ABB3BC411A9C A8D106441B07649B6D47046D752566AF411B85B1FCAD37FB770C10B5F3090AFA D039800C2AB3CBD8DA19B175148205C43B33EC4B05CB0943BD7202300B291CF9 6C2264B6F6516ADC3C1B4FE5768A37F872BC01068D8297C81AA0FBCB902E65B0 B994B9BBDB2C89A1D154C1335ADCDDB953C03A8464587B34AA705DD835694568 CADE9BAE6FCB1C99462577A15146FD4E9041930B3BFEBE1F1608AEEE98B74028 68C81E2D376DF7437C9910CF9ACFF916F5207A0A1310645DDFD98C0ED3601BFB 8F70D15D7FB44F4B519D2BB0CA5E9DAF5AB12C04CDD48C8D3029BCEFEA5812D4 6FFCE0A13BBC2528C9B8407E9F818955C8A5313BE958F63EF4DAD785A6616384 9A7D020B4FE972E802A6DCCEF19BDC7846892D7F0C7FBFF197011FFB739AE22F 91402682BC01161682266AB37C35CBB09DADA3B01DF7C0D5C4FF0E9A7E78D508 5C0155C24A976A9B2EB90D168E09404F7E23F656AC91BCD90F596CD9121469F9 547F96467BFAAF334680F1DE3074D83859AEB047D6A05009C69F5DD09B9AA021 7334D57763217883307F7D1E9596FE3D43290573FAD87D8B56CD989A94080C66 CBA94F9467BD89A3F992143CE920878A3D4BCDC6F77EC7804997047E7B0C1C80 0DEAA3A7F26E9F40E2D9033509C6CA970CA0B1BCC2FB8AB48BE9FEFDDDF50C01 15EA4890B78B8F2DF586943A73A8093FF53C8108F9E34D15E79F8F89E20F8B8E B37B89D6DE1BC6295EAB9A6860725A2AC1083E3322D662A612AE32300B359099 31B926AD26EBF2221ACEDE72564C20B5790D655E4AA270DD6069227CC35EF690 8F24BB271E9D140D6FC8D14E541FDA2C15B0C1DB492BFC59E34B31F2EA80DF28 E35FF2288DC84F93DF60E872F8098FF9A0433054AFB861D072F7DAEA373E885B BCD23BEA2ED84AC02E7CEDC4AE11B95C446BBA0727FDD137442B80374B8E6B8F A53519444A5E8113DA2E70F5AC55418FF24DE8CF956176B1AD07108E54C066EE DBCF88ADA16E2E2C095F8E0F53D7461C2AB867C826535AD8866932664DA86B76 30A72B2B2E50E2A4D8041A238EAA002A497DA83D9E5EB8ED74A69CD7CFCCC87E 36E9DAC6725F190139AEB46EA280D9B6624B25D6E6A497630CC9AC6F0244A502 6F23E8A22A792593E3FF296E8F20ED1B2BDB53A7D2CC2225D8A44AD300A41276 8947386DA54B55146F9693DFF4C3F783C274D1974AE06D3B5F3468388EA65C9B EB1E47A663CA017E2E4A4E91D4E986F2576F40212BEBE1D8659DAEB36FD8DD55 8725D693CFCFE5D642812B80726A382ED800E480DF10D6C8B8B6019AA676C824 384435FDF9716638BCC393EBFC100334BB670FB0D31DC5E91C68D467F825B339 419CE70F00A3F43D8D9B8FB99CCB5CC2D69DC783057057036EF1D53FF353D66C 923F86D4D7736CDE2FA8BABA4EC6850D6016EAD8CE6AB782D1A3C77B27AC5E17 31DE412320711561B8BB18EA341F922C9E288406E37F0B50D5029540CBA4CCBF 559301CEAE82E7D897C1D4E00102B1C5CC804AD24018FDAA0273A708A7800729 E5ADB799B6D37DE82501E56C33451CD2152BD4505A32DF365556571ED4D11909 436A557B54C7A79199A4C076DF0B375651710079199F58C504FF0A6B0D52F08A 1C5C725B1D4A1FEC9DCC2527EA7D2A1C6311D441DAE520EAF256856BEEB026DF 7E08CE18E469FC0BE840C49BAB2D6CC4A736907BCA9DF079EB7A4418F8DC1709 518FCCAC7D81CF284F000B6804611700117615E597DF70E401DCE620575B910F 958CF01D4AC4212C64DD7CB50A35C0FB7E57B5FCB93B8B4D02F2F76706126377 D90803FBBA732C5629CDE228E724E19BBAED79CC7BE058303892FF25CCC755B2 95F722DA7A1D7CD92D32CFEC0450C9AAACE3B6E5D5EEC48E3A6C9EF87D022E59 525FC7C2FDD52D30DACD450EBBBAEFC4E498B2B595BE26EC663BDF468C4A129A C37B58D75B1561700BABB34FF0E4D84634EAAB312882B01A9B0BA0085FA2CFD5 85DCE72091D48C744A0F23D7DC9E82125382A244C7A50498555B46 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark /Myriad-BoldItalic findfont /Encoding get dup 77 /M put dup 79 /O put dup 97 /a put dup 101 /e put dup 107 /k put pop %ADOEndSubsetFont /Myriad-BoldItalic*1 [ 77{/.notdef}repeat /M /.notdef /O 17{/.notdef}repeat /a 3{/.notdef}repeat /e 5{/.notdef}repeat /k 148{/.notdef}repeat ] /Myriad-BoldItalic nfnt /Myriad-BoldItalic*1 findfont [41.7899 -4.20808 -4.20807 -41.7899 0 0 ]mfnt sfnt BuildWidthShowArray 35.7437 65.1064 mov 0.0416718 -0.00465393 wsa 77 get (OMak) wsh 143.853 54.2194 mov (e) sh 0.6 lw 0 lc 0 lj 4 ml [] 0 dsh true sadj 21.3438 72.5469 mo 21.3438 14.9473 ln s 28.5439 14.9473 mo 28.5439 72.5469 ln s 21.3438 22.7476 mo 28.5439 29.9478 ln s 21.3438 15.1479 mo 28.5439 22.3477 ln s 21.3438 29.9478 mo 28.5439 37.1475 ln s 21.3438 36.7476 mo 28.5439 43.9478 ln s 21.3438 43.9478 mo 28.5439 51.1479 ln s 21.3438 51.5415 mo 28.5439 58.7417 ln s 21.3438 58.7417 mo 28.5439 65.9414 ln s 21.3438 65.5415 mo 28.5439 72.7417 ln s 28.5439 22.7476 mo 21.3438 29.9478 ln s 28.5439 15.1479 mo 21.3438 22.3477 ln s 28.5439 29.9478 mo 21.3438 37.1475 ln s 28.5439 36.7476 mo 21.3438 43.9478 ln s 28.5439 43.9478 mo 21.3438 51.1479 ln s 28.5439 51.5415 mo 21.3438 58.7417 ln s 28.5439 58.7417 mo 21.3438 65.9414 ln s 28.5439 65.5415 mo 21.3438 72.7417 ln s 57.6001 14.9639 mo 0 14.9639 ln s 28.3999 14.9639 mo 35.6001 10.5581 ln 58.2437 10.5581 ln s 35.9937 14.9639 mo 43.1938 10.5581 ln s 43.1938 14.9639 mo 50.3936 10.5581 ln s 49.9937 14.9639 mo 57.1938 10.5581 ln s 35.9937 10.5581 mo 43.1938 14.9639 ln s 43.1938 10.5581 mo 50.3936 14.9639 ln s 49.9937 10.5581 mo 57.1938 14.9639 ln s 1 lc 115.24 14.9639 mo 58 14.9639 ln s 50.2939 10.5093 mo 107.894 10.5093 ln s 0 lc 65.2002 14.9639 mo 72.3999 10.5581 ln s 57.6001 14.9639 mo 64.8003 10.5581 ln s 72.3999 14.9639 mo 79.6001 10.5581 ln s 79.2002 14.9639 mo 86.4004 10.5581 ln s 86.4004 14.9639 mo 93.6001 10.5581 ln s 93.9941 14.9639 mo 101.194 10.5581 ln s 65.2002 10.5581 mo 72.3999 14.9639 ln s 57.6001 10.5581 mo 64.8003 14.9639 ln s 72.3999 10.5581 mo 79.6001 14.9639 ln s 79.2002 10.5581 mo 86.4004 14.9639 ln s 86.4004 10.5581 mo 93.6001 14.9639 ln s 93.9941 10.5581 mo 101.194 14.9639 ln s 1 lc 158.183 14.9473 mo 100.944 14.9473 ln s 93.2378 10.4927 mo 150.838 10.4927 ln s 0 lc 108.144 14.9473 mo 115.343 10.541 ln s 100.544 14.9473 mo 107.744 10.541 ln s 115.343 14.9473 mo 122.543 10.541 ln s 122.144 14.9473 mo 129.344 10.541 ln s 129.344 14.9473 mo 136.544 10.541 ln s 136.938 14.9473 mo 144.138 10.541 ln s 1 lc 144.138 14.9473 mo 150.737 10.541 ln s 0 lc 108.144 10.541 mo 115.343 14.9473 ln s 100.544 10.541 mo 107.744 14.9473 ln s 115.343 10.541 mo 122.543 14.9473 ln s 122.144 10.541 mo 129.344 14.9473 ln s 129.344 10.541 mo 136.544 14.9473 ln s 136.938 10.541 mo 144.138 14.9473 ln s 144.138 10.541 mo 151.337 14.9473 ln s 1 lc 150.938 10.541 mo 158.137 14.9473 ln s 21.3599 22.4043 mo 21.2397 14.9639 ln 24.6646 13.0273 ln 28.4399 14.9639 ln 28.4399 22.1641 ln 24.7847 18.6743 ln 21.3599 22.4043 ln f 0 lc 21.2397 14.9639 mo 24.8374 0.306641 ln 28.4399 14.9639 ln s 23.3438 6.70654 mo 27.5439 11.4463 ln s 22.1685 11.3101 mo 26.3438 6.60693 ln s 27.9937 12.9722 mo 0.666504 13.1221 ln 0.0214844 14.6851 ln 28.144 14.9639 ln 27.9937 12.9722 ln f 1.74414 13.9067 mo 24.8374 0.306641 ln 150.489 10.4238 ln s 5.62158 18.2822 mo 5.62158 18.6123 5.35156 18.8823 5.02148 18.8823 cv 1.92725 18.8823 ln 1.59717 18.8823 1.32715 18.6123 1.32715 18.2822 cv 1.32715 15.0884 ln 1.32715 14.7583 1.59717 14.4883 1.92725 14.4883 cv 5.02148 14.4883 ln 5.35156 14.4883 5.62158 14.7583 5.62158 15.0884 cv 5.62158 18.2822 ln f 154.583 34.6426 mo 157.897 14.9473 ln s save_ctm restore_ctm %ADOBeginSubsetFont: Myriad-BoldItalic AddGlyphs currentfile eexec A0B00ED553D63FAFE824A74A3F3FA84B66B7248DF34D3C 9010736788964A42E74DD8B04832519298987A1CD0A52704C2D003878381FFAB C4066991771726937D4EBE7946F59EA60ED62E7FD3DCFD78AA1FCEFA75A40901 57808E56BB02C55265444047A49ED58E89FB75ED8B8C35B5E77558FBB8DA5165 9683A5758D0F07A3CA605D65081E76A80C5CD3EE8BBC6CB09A37DAAD17CED5E6 0C5DB56CCCA8E7C544E42A379B6E89A04FC2574B682407845F09292044C2D68E AABC91166008560CCEBE79C29E0F431C6556D3EEC9C5C6B17DC22CB58BC7FF8E A3EC327EBF2F5D4DBD877074F56C7B9FDE83EDA3BE61CFDDCB0FD7CF96A01963 952E083A1F126971FCCA0B5D576848F678A6BA3B604A437FB00627D5F57F0CEF F999F31449E3FC5D8E9D47D4241BFB126D8284AF111A614E25263AF428FDDA77 30FE8A367F1A5C0768E1414608BCE5D9853748A6080CCD101FC4D3C5187D1530 285B930CFD4F47A3BC1C7DCB6A4D58BB639F9A446C7E1623782E731A252BD423 50CC35188B7096C67C6F5E2B7C09F76F8FA3EE728576A21BE451FBFE741A5BB2 6925D939B17F65F219A8EB2F36D0CDCB05682D48D6FB5278A1E39BBA134779BA 87B4164DB07C565ED341BF0D42E1A72BA26533FB9733967EBEEB73E6279E2A01 C039BA3FA905FB343AC8DB0FFBED45DF9D7DF842A3E6BEB470CAAD8ABFA8E59A 7DD134C2FC3941ADE56A2A43C11DC7A3A1AEAD78F21C67B3B0B6B31EA0F88C34 566440B626F0953E550A25F4AB493CF41D7C006E00CB2A623E993D18D7FE8DB4 41F564D393ABEAC6263A2634A2CB8C60CE23F500D5C85E2F84FDE421E7B59456 CC279CC10CB793ED0733CF124C013022E92288D01033B34B99939F5354BF45A3 A6B32CBFDB734F3498A8066E078399E4C19C29C2578B23656D22ACFC4026D6C9 265FF0672C46F904FEE4D6B3D368B9384C7960B114649F333CD7327EC53B5451 984C043B804E7F5C7C4D7DDAB1637DCA9CD912E8314486DBE00D4A14B550B294 8C06AB0C58180CBD8CFEE9F696AED7A79D7CDE7BAEF76C6CE46D4394A18C834B 58F4A146934D371FC3712BE9C5DCC97478CBE74FE14F09D3B42212C7C625179A 19AA0F10A39A65A26F56E65E4E3138DCA3BB3CB36BFD7F8F1E2FF2A7965DA8D8 5D11FC2E37B79171808C5C23B6C9410C2D47614CB73EF580F1F9839A5AF8F954 81B7DE169E15484A94C55B2363522FE8014BFF99DA6D3CA74EDAE819BFBAB383 3D8F0DFDEABF04CC523E17B03225B95D7979A395BAE268D429290A0D8B19059E 2C2B086E8ADC8B4A6D2ACD67780EF342188B82B694DF7C5A9A8D5CB826F88815 0B6F05A8B0A1C790ED01938B8F963C36FAA7293E466B585B92CBBC3A2310F3B4 4CA90B60C9213D9C1B0664DBBA4FF337E171088830BBD761C6C1008413A9B8F9 BBE07A872D837FA900CF17B7F1D681B735A7198CB3D6F829E891AA0F9F469497 B334F9D7A21FC0C759CB2D83824D37919BC9EB8261B3BFB1732EDEA46D5E03A6 6B1FADE31E308B43F280743517DA540F31836E239B3F03C9730370D1A8091A4B 27FAAAFD97AE6197AD098EABB0925FD5B34EC75B0A5068163DBA70AA8AEB91BE 98A73A08726BB04808CF5A3BE7E3C11E7BBF4C397786CFEE2AD791C9C1825835 179DC20D0100D4AB7BFDFDE40D422F2E361ED1329DC5199EC5A3832B381F02ED 67E71BDDD064D275895FAE2B0C04A6364600B63953DBA69E7CCAAE2A2FEB6EC9 4F9C2718E7F939D64B1E2BC6078103BD8409FFE17D4C51CF40A2667FF6E01EC8 E0C114EE96E6695701FAEFC3D5B716494DABFCA1C80FFB7EF79C130EBFE65C34 1576E5D84616F587E00ABC2B8420D0814C20081F515F01C7993F881BD3E31543 A084EBB6F2851D0B032D1E4A882266EDC7197D5C211F30E39856E5A94FC44F5B 46ED6C14FF135AD30C3CBBCA9271229140B478E6D7EB26DF8EC131BC3C3B711E B1AA5B846F0EAAEBBF90FC12556207D2543CF70201E3728475C90C332140D43F 07D20E14A3C4E43EB709BD2F10669869FFE00517835D7BD0F0923F62E31B5278 6C6E3446AC0E20EA74DC79511AEFDD018C7B3ED0072BB5B7B4416F1CCA554944 5566D1F18A72D5B9CDC96D71F3CD4E9C040F810292C19C3E924CDD4886771306 F4CA2116ED15F5FC0D611DA10ED8A4E5D18E18809E988C7C73FF8FB6B0DD2119 5452636843CDFDE40B43B1BA38B263DA5253D6A19A6B48E297B67723906BC843 3E300CF224D6D8F0BA5FEA523BC1D7329E8F8831035F9E54D226C55A7FCD27C4 A2029999A0B7763C36 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark /Myriad-BoldItalic findfont /Encoding get dup 32 /space put dup 84 /T put dup 98 /b put dup 100 /d put dup 104 /h put dup 105 /i put dup 108 /l put dup 109 /m put dup 115 /s put dup 116 /t put dup 117 /u put dup 121 /y put pop %ADOEndSubsetFont /Myriad-BoldItalic*2 [ 32{/.notdef}repeat /space 51{/.notdef}repeat /T 13{/.notdef}repeat /b /.notdef /d 3{/.notdef}repeat /h /i 2{/.notdef}repeat /l /m 5{/.notdef}repeat /s /t /u 3{/.notdef}repeat /y 134{/.notdef}repeat ] /Myriad-BoldItalic nfnt /Myriad-BoldItalic*2 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 201.344 48.0171 mov -0.0357056 0 (Th) ash /Myriad-BoldItalic*1 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 240.547 48.0171 mov (e) sh /Myriad-BoldItalic*2 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 258.583 48.0171 mov ( ) sh /Myriad-BoldItalic*1 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 265.207 48.0171 mov 0.0357056 0 wsa 77 get (OMak) wsh 358.338 48.0171 mov (e) sh /Myriad-BoldItalic*2 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 376.374 48.0171 mov -0.0357056 0 wsa 121 get ( build syst) wsh /Myriad-BoldItalic*1 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 529.408 48.0171 mov (e) sh /Myriad-BoldItalic*2 findfont [36 0 0 -36 0 0 ]mfnt sfnt BuildWidthShowArray 547.443 48.0171 mov (m) sh grestore grestore Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec %%Trailer Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF gsave userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse grestore showpage %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Jason Hickey) (Caltech) %%Title: (omake.eps) %%CreationDate: 9/20/2004 10:59 AM %AI9_DataStream %GatkK?*@kPFes<^!r`]l(C"Cq;Nm$296Z]XmO2eW"j>^fUX:d*(.l'bV5f_?Fkg#Lr:`>"g*KBm4$`qda#^,5n+VHmS9)n/a>kXJ %oM9u1q1hc;_l$lAm.3I@oIZs^Ad]HkBhXW %rEjsOq"`,-5CNF^a)V-G5Q(IeIK&l(TE!o[?TsGEj.Cc!3.LpMI/Is`iG3o8_ft!dr35>`Qe+"ZcTcg9X+1!>*CKUNI=;"aq>"3D %pMp/LqKVqoTDuR:`Le,g_)MDgJ+T25^]!TlYJ6%brr0Ca?5MJX^\#,#WIFi9na"0[.^)MFo&ouLj2W7Us8$;SrVYd3#QEVnnG`FU %5QB=oB(<#'9>CK*mt^5EBCoh5IKlG=GCT;Ej8,h&?[afF^6P>'s"M+smb`N?i-tOrr;#*nJ,\^3pqp@OA0ofS#64YnS+_'P?[fDs %IcWYY\*&nRiYVXbJ,Tf[s7nV"BDhBRr8\9!k2OgXq_qm5qXdReO3[n_ %e:7@SoUgR+o=O2ChgYIKhYL#drq=NB0U89ENo,oqr@,M[-Tr^Sh/!%(6HZe5I7EP'rq>sHO)Mf2iQHEehac^qr1RK&<8[]Nd=;"^ %p$3-LWI=R>ks%D9`\QFgiE,?WnbrpIq#*??dVSr(mIA*7YO=sOpA7q]a01!dp-,Lkrm%-`s1GBfVYL'BrkX*[Vgk2LhuE<.aT'#) %_CpE7QbN?AT;^No/:jNlFn["#]:oA.IWFZg;#6@DL>rS;sQpCa"S*MJM&`YX<;f#kJZr>psL5C?T5oqua.iu2ue %q;skjroNIL55alZ8bK4Kna4AHo>AWAjkkRa+Qg?:m!PGH?[SI2j6qHj]`##tNlPZ/i)uY$Is]/lN\A.R?\P;:5<+]gII#j9^\`4> %r8umshl\Wi*6p55lgNE&^]"'PSq6l#k4k.Wlg%?RFo4EC9HU/%9K*X]QG^0bI$WgIa8-[&_XB\#\I-*i./t25r:&sK53]\%Uqcfg %phkNURrs5Zl&Yd_&'sV4kMNu2(QACm4[8r>^Nb.DN.:H\_u'VXE'<7M(006el2S_P^-+E]q"n$M,/Wt1CX-o %f(K%6q87EkqqXJE5GGuT^-1JJ %nL\7"rq,`iDfb;1q,dUao@FNIHMc)sI/`QCmff!kBrrGQ"(Ie2OYDu]=WJ,G3(A\HE@+7dIeqsaPkIJCi?J,/'hrV(5WI/JH,s8;i-rqt6K5;'T!^Am][J&6RtIe^:! %q>'mu%j(a1ig0WBGCTMa+7B1"M*UQ2hLDpsbs*7)C\nP8?i@H7qn1io1QTtA[pOP(TB>o(s60d7YCFY&If8$YI^e1Nmm$=;Hi3j" %IkeZdq='G`s2jL$46QY;VuQZbirN$W[ia2Is7.aO*ImR@56JRuNut"UmDfIX&e@+%QfJ,DB5de3bE%MNUqcg(#5[6.qT!aYaiIu! %H]8`fSTeqWestK[bIPKYrOD99_HsFZ`c:[`KUPC@qcq2*A+k#_YflCrfoMQd\Qalj[!X6Qc.o/SX-6=].Ga0leneDYl+F3eg\fV2`uL,NmTAe#a,t^$mC^p3I-'%ahSX?AK6O3'f=k/(WKg_LEKsMkj)-`?3NmGqdec_K4*"&I2jK5?%P;1nW%7!A[QuqGjR;aq`*oCjmH3ppKhF6l\P)@8tPD[/Y=Ts>"=XI %QZ/"nM/&H8@.mMmn]lgpXIW`VG@hn"\G2"`cZI]VnGONuZ^/O.LRLOiB$^A>23iF2H^pemaKp*)Rk^G*q>;)l&n%KtQ!./KC-bWc>*PmX8(p0@,gT'sf'YM$09`-!iMHQW%9N<+brn@>J4f`_8GG$QNQ0pX-/-@tAM6EtNK52ZT,qR"c9Y`Tp\YG<1`g9_1!Z:'pN1kB/Sh=[8@^)s]QQ]2'KDZDt\EQoX;bC!Ff3 %Nf-2\fCS,JdboO5fq$"DfJi;Z\K;R!k)nC-oE<0SnOO&G*%+R1QI(YR=XeeRO.60>Xkm7>kUZ@$m,G^^Rol#;T'pXf?%Ir&1\(hp&pjW1[I8e:(r.O(^3D$h\S$`3@*eT,C%tc2pL)Egp9V&(/U!ioNYqkb %49?\k]'Bi3$U'>mQ0$/5#d2?#&lAjK*qgE&0fC,,LYW7V\;7NE@KZM1('_qc %e=RVkNou?7""+fN2?5Hq#fg\LfK[s"cT=o2o#BX(XglFrr%\=CF0>W^p,t+IEA*p^bWq_WYSkop?jDg="Bsj'-h)aYjEY#]K1`i:dkC$ulPW;d3]ka=bMdMEbRY=2h:m3L7pJG-MDS]A[i %0aAiu_IiDLa/u6?m2.oUG;0Q.n%";$7j?B6P^1iuDu2PO$"D3p@>PgYYKVdG"l2_:4=6:HM,(k"i!&V-$Tu,jA$T.sSlj0F[W(_X %KD!keNtJ<-%DI#*`[kDu%h!i=1(e;[T]u[$@rC=gnc\pn"%[C+o3?_2F#'DO?ha\%@c.;=l)XpZ-!jtJ)5h"*>.a(EHFN=sk.MCi %U!u5$E#ODK]qfM3W/Yle[1.\Kg+FfH+^NFr@Q/pI^:Ng&s:>ciQ0cld#J-$`mMZ*ATD/.!:$B)s)f %?kh(#O0(@XmhNl?DVj:A\0B4JQ,1)m"ul*L;?:BWiOk!2jVm;tc#ZY8G2.TMOcs0N:ZRH'.,"0YB1=%;m,FH!Uq-Y=<^1j6d$J\-4@pSF'm!l3qQ<^>g.Tk]+DbTfF[?j;]!BG^N= %Pd+:O?AStYF$eG\F]SKp0e.b)F(d^'LKWZ_GX;`:Sa6Nji %=IBPC8o-WJm2%khWc/#_i#H6"bQSPD]LU83)p@0/$-P;<>=?nb5X$]qa]]=j'>,q%@`LkFY)V6[/5hQJ&"AXUM6I:79*\J8]$Vh@/-K,i6`^H&;U!UY_Q)Ve#JbqFWr4"R<+bolZ'WVK!h#Kp] %+:lP<-?-4TpQARa$2VGLYY-o?cmN*9@gF#*KhK7+M:N"qU(M,_'(C5/Y=ug9.N&'cP"s6T4s$.)?p;q9.5*\F.\;1m;lR9)W%I!? %i>\VNEtlt7\IEpJHK&PnR5I@2Jc>EPj:to(G`e^g7RV+uRPg.[SO0nj9R%Q#!?EVW.E*?R0-:m8NFbK(n=:4*G%Md.jjEN*AnD#R %c3$mnj@JVq"P?u[APc*d`eUpX-,L+IjE%gYEa[u7FB/`o8(?co?Yh;H8DCi`!PW`n#GW1E\Rub=lkm`.ui_+@\YTF%:"V %_%;_G@%0R5$<;Uth3(^(8\%a`J-,9$Qjq_4n0tU8b\fEX:Z50T2!AS2h45<06,XK/rIR2_M;Os[5tSpQi=S!o*4>4C_(?OXmCM+o %6X4WQGU#*hRLFe@JV`:f %Fn!ub#\o#6J;b@5(j,sf^2JN9JI\qsiim,V]S$q^`\Og%#WpB:452XE=(fM!l3'RrX_V>T*MW %[<93N&+9uPS8s(HR1+/7IEr9XK=XE/`9Y@1&pt\TGp-oae/V,(B+?=U\[)"5@<_cG$q=hdi^$=SXTZM7!Y7UpFZYSU-XCd`U0g%$ %I;D#AhN(R;7n.9FnN[-!E<'&gT+B/^=MXNf[:(5[$pTL*3e9s,T7t-sCQ9-7XAI`18jLXH,bc$L$u,m&5W)'u!dbD.[`XhKk@8LL %@PYsU4\>onYl:-L]"81"4S!lj%<*0f9Fs1fhuTC$9hFK&*1tR8fo_qH71(:X4HP]H\+uqrS<^`[CoA?e\KHBGE"?JD>LKA*k_B5X&DHt:2?Zg.r+bFDd"q98cNb\s %G\(JUd:L#)OB@o@05(g/;f4@ahTdKaFqD))p':sApar,EW/Q5t$;(E[(,tHJupM^9]L+@NP(+gfGSE,h5tI=p@M>#2gnJ2fo@`p]tkO8W%+'4Fo*r>:%9gNP1X) %CH'E*\0-"`7%VDn*MC1K4;b"De,[;+eF3`/c@%ijcCKj>@>r&26k+@on,j)U^dL/u/.c5,(G)C=eqj%>i\6E1iKeG:CI[ASL]8n& %@gKEl#6/_=(#g7\42dP=pr?;GZDp54(Ta2'$&]NeQH8JmCQ>V2kF$?!4ULG69JrZ`21./QeEt0>"Rk=,`<-ggJDaR5C_43"QY.6NH#^\a_4A#[@"ps(iO^#H %YsE+Sj:jb2n4u_+8;c=d4liUNjgp,cJ==HZU77'nKif]b[&hk>$8sgYp;1p1@sS9c*G5m4G'#$+Yf\]hF1D%5:p;(2'EQs2/MBk#PDW5>XILCNs`i5jlFNkF>DkbGhR&Dl?/i&2Y[9A)jc %e8&Is+LV=>\rl)P,G\W7"FujFPVtr[Y]*7M?c8LfcNfi6O3!SRSdm(r?6W!f-A4Ns@_97Fau=TH*l[@"UcL1Var?)*EKE&UZN4"1>0< %Pc0fr5Q^`T"00b/N-mm+nSgY*mbN,Po3%+W+ueEbK3N5tcU1dG4Hs"Cn5,AU%Aej@&YN;0N\te89ESb[^4\/sr;/bGV%T#I"'Ar? %O=CX#>Wn&!`&!>`XqYpG!0M8maOS23"Yp'RquTO%127Ylbi3uhj]k0O$HBD[3H]IS/Fme?9@hBTTMGj)b^Mp=V#qpV&DRHg*E[BW %#e4i_kO=4_XlG-2hDr)M7iW#JGQ\\IS'\rs4st1M)*fH,#LaoR]`mNIT;*]C0cD$$lp2@qEC89gHSrlCcN*Bbp.-UU\H[UYZ)_5+ %pU))&\f+G*8Pe"'/JdoEc+WJ&bcIH]]XtbS[C9el8[$:E,gMp%*VT\#$$5R4/`=g[-"BfXuMS+8UBC4MWo=`B)ug]92ja33M< %k&thI7#Bi5T./s]Fu\\G11D0.`um20Q;?EF?N[.UNW4OqHnUVj'G^3d?o!p+"q25'OC^0Z\2f39BG,_ecjHj<>)&BiqaQ>3:?E*h %QtS&."(*GFnX@uLjVqWr0qn7`*9[dK#qO^>\Enp(JO^uH?f7U@+,4`\5+dXiDL=uR@HN::_suQHf%s??JH)'EHOMfVnYg'b!kCk`lYUK,R %jH-GST3sB"9=`C$1Bu"?CdSk(eig43,fUApm0&-1gbhOq:#Uds=+P14&75QJHYBMa/fBt0l#fMt.Zc;PpGL8g1#%(7Zj/=?8b<]. %ISY>k!lLFeit0H&;^j2""l=dtn,48%0H!Hra)5iO7Wh7R:ZO=uKogGjgrI)k32s-F"$m_!\1m;m\OXbH!Njb/Bd-Nr3o#Mm\(t,q %YO!m)knQ"6M6(1'>j$h[7^XY)steoT#3!]LSV^DQu%iEB(d>kVatVLR]h5H1\lT0R[0S! %S3:7D0FlahePNJP[qG%XJlaBe&b'H>^^=LL?Hsgfk31msJrH;7iaf0,hrmjf`mSB!C`_fX/=2htVHgnDpfoXCAeKrp8m;^58_Ggb %0FJ)Rp8FE,*g*gJZWAc?qE3+pHK=1=l#O*F;8iAD_$Otk&ml]A[,dg7kC)#0__F42(srA7_u#uU:F/[7n[.B0Sh:'CHX6%G'm"ha %"Kjp+8cBd_WMaC[KRX%OUcOH>@)M[!DKRWbB,SmKQDo*qNX;@NG>"=tk&H5NTmMMhJA=5(TGr;\DMSb_P449:N#V\P[G4WY"F5]s %n2>e8TL5jo!0.+p+\(H-N,!n4Tm7WP,D.S %K;T=8$#*&9LUdD""E[\F@PKBV/Q&na1RPs;,)9R?#X)UJ:rKdfZR^X>LRZK-bRc%Pga2?CL-6e[R#$\ZZ4Dmj\@)PTUS@KhB2MD%]:P'5F:RG\b)1EK\5qnhPh9c^^?rT*=d;O.$A)ud"JienQS\b)' %>\5-HX*AbTgcS*GKR]'3;W#G(6:gj7fKt&4Tk`fJ!492NEToSNa/:q7< %e`?J1-gn<"R``PVK!lHI+GPJOXF%=Er.97Gt*id8IHPI>^[P3\!EH3A7S&>gIA%iVW*Es,p2r?/^ %Ec3YCWE2BJ)cu;UQY@iJ)5^*3/hhPj(g9qpXlL?lCG@$[`E%_2k24en#Nt_:#Y.r3-+L3b2 %aBR+%:O&1Q"ID1U+%MfEkV+i@/KV-KiMr?)iB_+K&E`T+%U=ZHF&qBgHj+#q_VD!?R5NN#='&Wl/7f5N4j&Td^tb$3j1\=K:jQnC,N'F@/<(??g8k@9kdQGA(R4a;0B:gr?449f/(0u3'AEH?BcL[,*SLUs-O]E(BndNb+^OA0!73oSj& %a0"-I/7O>s#6Q63@Vu>.l%4L6%oF3*S/t#?dLtYLXr6G6610Fa6_iST&0'*^:,?caS>aW62F$$4$uS`t*WlfR@"A7BI)8'6nX-Ph %CfGco^'Uo3O7PCUC#-HVG7#[752b2?_h2g+#IBqV$\s7/*m?d715JZR$s3e*"UaHiK#PW%=;nYMnWl&VC,FCT!^BnU %her$$cQNgh4>.,aXX?]1a%\[NBAYLLDW\Bq8[7akpjbB\^5sKS\9qL-YX!&L,Z$dL^hiA:D;_^)""S@%ps=-/g<;m5&`gEj63ZXp %@t/cnieo,`%^s"$nBD0Gleg&?_C]:D*i:a$VRgt!Ys<3p?A9E6%9a8fJk-#Ip`cY9JI7c?L2nE)-@^]T(0)MW\7#/X-B)JZ9\3g8 %l]E38!:c`VE,ROkbXDk:\`jDdG-BM.[cWFU>Hne9#d&iG:E2.TFDe6RchWeE7qVma?:RHh1Q?Oed1*+tWD,\gL_SES5[MhU_//.L %I_*1,c8%\"0H262!#GSQ5bj)N@@>bqh/:S-&%&#s8H<4/9b(n9JCiaDk*7&gOMBpRG1k:Mo<3&QR%l@ZBk:PR%Gn^J_b;=d')aQC %!CS,:Gs^;Xke)/G4/0EX%)=I=>Hsdkk3:VSI7=$`,lua6]rMe`p\DmbG9X"mNUMDZ,0a.n*\&pG@XU^hG7E`/LM97&_0rQi5S*Ao %S&,!MT$%gE!J/jp:g-1Skdacb=Y?6LYfcfaaDp=L=$`87_j<\&ERW0EkWD[6-R7nQZ_0fgtr6+f(tiZTGb=`N@dS7$S4ak*HaRR1-R(Y`2cgi_SXhC %VX<6uGVmPSc;J&<9JYQ9LjQTg^kICIj8EQm&G2^-p`5mB,Vnqc]9P\/>U+b\*hq_r"4h],3.e*up`8e=jI7dM9/Ete&@e@4&Jb

-DRg:4aO[\&NE(%[i;g0R[SNe %:aMtG=k=3JG%P2jd6gY#s"7)uKGt@ObWNdp_4/3q9Nd+C'.,gS*g!UD0Ok"]?+cbJMaf`&IUrZ"-"J!T`OS-3KL-ZF8X=WAjr_Hj %GU@:mngl@24k`!:%3X)4RZn+4aiV)G=e'AGPXm'P.:TpFj'/<>Yfnd4Jjdk92*?r9XPZjq'2=C!+_HRH'fuNE/;BQ6liO,@1S&m( %?\#=MqsAoL>cjJ7I6KY,Ln$hj1Ip_^(4sU"1(3+29\!C\ZW4=tEN'i]/1,kh(F`]\TRf&n^cHcHZ1l901G! %4LF@4n+!Y+T95fX09IhB/8B_MsqPgFo<<:C#kOsgk:X7rq@3:GU7]n#u\&Qu3_ %r@e>[9N`lAT<>_dTqDP[K!$Wi3(tdl36;&I'+aN`IGf\I`F:Mj"F11i4bVg7+g_>[4s1UA*&!+,H1rWo\>bJn)43*+Ju4fXVrW>7 %/7#2B/)mg+CRm3_."HqaQ^'P/?W7S+%k(rNB)\7PqhcH*F;'`tO\)D\UF;)4Ql!_0'#0lLE5\c*2,g=Gr8[;10g[[!;4\_9Nd%`S`ZjN8.[aK&;1YW>`B255igX\iL+]G(<5a0Pj&[2Dp))g-d[PIe3`4?p2hB']6_n_63/:1WV40fTeJT_m3XTQ)n'm3 %!pQ6u4\S[Jc@jp\:st7ESs_:Z18e3mn.Ggf#i9/$6!fe[4D1oW"qbjBHANEqBbHkj)$."OW#Xf7UFR'QRti`ca8j(CQ"d<\e$kUT783/Sf[CtBTcAX3&qG2NMpGd:urlIg&LO5?.F]]#N)LEtY[O2(%FV^EkLPpGJmZ,I/k!g*<^m0hC %#G$[cpQN9%"A]EF9FTiFbs%?Ti5TP8:;V(?2Zko?f%k[5=sKn_9CXQo4.s#3\R9\"X:A\(J\C5XV@4,&n^Q0QGnYK5.VRB_BO["c %AKBrS#mh043%NfI9e,gpF>2;]Tne8/K@r$,"f6s5/0NR9O43)+O+"A3ccHl6LcV=>VON[;DQeaASS7Ws54*sk2E.>AYIVr,]>8A* %0'o1M3-RfKM#G[DYT@Fp=HOJjh4HJ"bCoYa(koE/.6nFNpdXhqB6_?g>WgD&ecE?tC3do/Xb`D+$a]R%:PFU95aKcTmehhZ:^+i# %i:jXh+,BhUdA%8qbMqu4_)_o'*o*t\iA6R5pSna?K->->RJ[SF6K/,e_t)*0)`Lb[1mpme4MPWo,/RuOZ+sCYDH9mQB?@-1GqumT %h4rS8eLaS<3o=SYCbd4#<@b"e^c`4+QZZ$,?ZWf@,1'tgap_l_6kF/(`H7K$KoI"@Ic7Ym(dr0\1ld:W[IBMIpC>!8IRMm\*/mAdOhM["roAZCIMW %A6pg<7<1_K:CF5J4O*c1hDVZA8$`7%=@Ztmh0HF%]!1[^GUmXInPX5'Sp*(q-PKaKdPP?9$kV-E>pRIp&!dnbdg"]j@_\%t7W:<0 %$ib4M5FQQ<1eJ[F=B1(YiD]\!bfg97j5]AbY*TiRHuW/d:9bij9jHd&I,9"c#?=1YMV:GQb%Vr %Qr*GE#uhZ*GdS3,^oDVn@^kOt%6f)&)6]oP^8Glsccl8tU/J9`W``Md-X"O,.R_qh"F[I]g"Q<0*"cpL\L\QTLO!]FqHCetEekA9 %fX&uF0^idA3Jk0j\6A+C7lU#mhWh@,pcGZ)L$$]&E[DQILM;KP,(PYVSrAI$<8WP)a#PaO,WK4!kOu9^=+M7aBA)@2`RVFA"k/sf %eWCE_U;4sSF,Ro9ksSRjib@-UQ/jj6fu,Fm_In.\fT@F$9A"'VQj?j5\@ %f,7aDQ;6M850T=/?M,66!.bIPGQ`rO!C@1\nF%=?3DJC*),V('CuD-\X8>:<&],)=.1p*HW6!e'H:pS/jI.Z:]m%NKXfK<\M09Z? %n`SXorf#8l&QRM?7HFW7"SUhN*J\h0J!VZlQ__LJr)jHH0L8OuYl*]AS!i/\ei\+SdM%Ye#OTrZ>!<:]8QKYM^'tEqSGo$)ROH^` %"2H?$=;F$6D\gRu4=RlYVKRQ/nA->Q#gMg``XKVflI5kIPDEXs=9i0:/BT-US0lYq,+C[D&XP+<0ajOTQh3&lAHUiRj;cEgLBYK% %VV_pjC8ef20V@nmF!X&=_iR1V!0f+UgS1iV5qA\OTt'3J?p84eGZH4\4PW72DJQaHD5AOhh46nhD2=/GqM5p,/iVAJG(=462PHQ! %#]QB]Xp4e>\cBIPdgc^5h/s6LZo0-gSeDX5T_8RY3tLOt+KC!bW,f9J5&qJkYI^j@oL*`==7Kf3@)aQtid3?)7'D3$SJIT[U?eKX %J^Bo=YRu7jR5+DM!=h>(Ceto=CUQ["k4.80`apGi.A"e7bm6)OjrW2DB/hX:G"3gk"kHI8D6Z!_#r0]bY\jNI$FdS%(I[cr!Y5D[ %T!g[?J;sFi:_FXFl"5W@Q#!TE6L`>0o:0FN>aE)_eBG-s`DIjQI4b(;m+iulYN)o$-V^ON47*T02mVuSmZRfk5Y#,6K>B/bfQ#RF %QjTaFjrStIHO&IpLhZXA7hii]eq2g<'oJsK&rfdc&h*7u*Sb'U`][`6VGZO",fP)s*BSGeN,A>SOr>O=4YlTXRi@,RAIfV2o+16X %&6Ots3l3"amV\bECi6IH?f""4[I9qajm4.[0to-QGD=/SkDoY+rM#%u2@A<9og=WL%5>J?-to %ZuTt]i'B02f%_$'8%0B;_5,MNeNY&Al>4(N5Ss$/1*AATh"(n]W9)a\ZfqHm`WM$=39P.d(K-Df*qPiOM7t(nNPe^gaG7mt3.QAS %k2/=E!4,)#-5!^/VT^6/cuYdG_2L"7qhY,l\6XZ0!4^Q;#64n3d"Ial&ps"lE9jnYl7@I!$i5/QINgp*N'I2`TceRK#gj?l6.m0.p1/B,>$_b"%Wp>0Urt1Yl:R`"b!ib.qjNg'\;UqMj@r=d0YP]^lC&IJ?_&` %4FdI;MLpV[C*Qj&od%F&$(M;=Lb"NBA+=APo?84m^CQ9D7fNFn7_hq5Zu7Bh=_7/+YSFK94PVGmr6[13s;^J\q+_]@f %!%"_"(^+JRQ=#!-$\nnLm?2"oL\:>&.)]@YHS=$Lj6=&bS>p+gTT%Sen\8h$oD(t_2eCBYrgD:\+e(I8(uQ4GqM=RVfX[c$e(C[UJq\nh;%>DYq!jd;L-4=[kcfU@\jaaAiY81V7+#P^ %/"d<*20`'/)pqe?C\"tQ!?dZ.*Z/Ii5b2n^HY2jLSn2"01Vg&&`oJE)ir(bj\D"'t)YWh@C6@o?Xn;k[WY8ppX-tq:e.+22e#c?R %1eu+/qS8MPDcDp6!C%MeKLCW&WA`!fqb-Tl69#DsO6n,Ocf^0u9 %opR`NY&kgc.^kE1K=E=@CWB@J7KH[2'0acjUK`3iO)"9^nhbSXi^3LZ6L:@bNaugBP@6WOd^`O+Cq=piM]C8.hEZV"_A7:^q5/Fk %)[h=Ua#,EU]*b0RHZim[A;I`]4meBkDCuS)l%f\E@7$,i1%533@'Jm_D.$On8Pd\HK_51"@R'hYrFKM5P#*oPe7$25mhBcS,gUR8N7)?nq4!@^8i %4D-nGIE$,;4.jMRYd,:pNV`l@2+5I88@/\9_mWc7'@q6p'[KP:?G)SL:[n$l*RP%&S9 %48=1)&83>ZSBqWh/X*j\I.,(,9nn)e*]q\[62QAhHd9`'5URAtZonTJiBg!OO.RDR>Q4l>QjmR?_dko5-[ljQJ\"rs<:04G.I@4, %f;%N*\,1U"&MFnk*&Wn%q^K=*J-VkeO2#5SVtE*ehCTLlK328G*SkRfCY=C)nDI`%gk%G1G2(iu^c8NM8[p?T_\''Nm#5@%i@p#f %VA42W7!$W9UJ=OaNSPXZ8pIGO]58^L@uu@o<6S07jtE?ZpT4l3B9+H<.5hT%7>!1=J4[5[$OLYC#/P?j.27`;@h.1TOi$bHi0Blr %bCZ*#BNRT^'h3OME=/.#"PIB7,BlHleR^qDPs!%PXF<]KJV'h-5>@Jb1QD9,g"Q5BA)4q\p!Qum[O#-B$.m4ZC*:OTUqC^Z %k*lNm(c%P"!hCA]Rph&I`umJfSfVc^^'j9N66=]n*-PK<.Cjjg9_r&#&>D:k%M=N %b5++8ZK%9#<9n6cf"d!Lgd.@:%>i@@-I(%Gqs*SO'i5UrPO"6Bd?4io(u(2c9K[+YDq=8#>m:TTaYoC7O^TgG1X$P'IPtN[.fF`7^NfUaD]>tn1'm&Fj0Gr.2C1)9<6;gtA>!d&TIsl&=b_;sM3'1SG;@Fo\b9m'ls6q'cL\Hg@X4"(uEsi?T(aLmK0+=s!Wm#3^##UZ^&2[i9BR/W:Zc^L++t@US-l[Ls2S]-L?6#<3Qa7A6S]?!n*t&t->43;/%&0S:6q_3((L620L'()4E-OBa>:G$AOHkL"VkK!IkgonbB#=#IGUPaKsFlM::oH*a&8g_.WmlfjuBO,72MCsg^a1LVQ#(jYV29u-=cI64`gkYEZ9'LnsA %&4aaEJBdFoGTFetMno@nBDieBlDN[RUrkfr/Y2%:j](p39f:fRD2iN!'RESjO/.A.n9]QUl,*'^c!$ %qoT&Hpj25PO!DD)R*/bAe,V&.QiSE3S`VOATX)1qBHP)GSC+>a,5J!US%>NO;^bd`As+Y9LEMdCal](Il07j^->G7,A6+ROZ(@gs %kCLrg"a,1-cL:7EoD]YDWs$.;+5hq96+>f($.4e.5[-IB/KT5.*j&S='VpR'PHf?P]tf7e"aI@^d2`<7drO>\%iAFf/)oYeTC]Im %d*B1h2d1YJ5gZ#W?!&l/RuM4)jr6QNf#(3SG?\$ %<0nOM->@CDTo]Zo?02\a-m4k7Q^_W..B\fu6j$gB\5.:A,@\+?9qBZPe8eXm6!tZgfaHI"/OG=4N5n(u7(8'81jG`8nZ:G///_QV %X)rZ,fkRmNLSYIR_\etAWmb?V_a-Z\%ZdR%]F&F>H8Ksj\Ttj.I4T`/fm+7,[`+L0$BRd4m_)C6[XC+FPW&t3,]hEe*V2;$LdS4Rr57;%$g.ffApjc^ %E6"UW3Jj!FlE))/n];n(T!]s2_@C+m6SblWfJL$'Hp$DDgmBYlYif(Dq(`@*\a_qa>-qOm3KThqgWe_3IrO&c"=GZW60uG=23Y8! %'2J:7Ci5](0m3X!_@[s4`;DHQ.'`V_A_m&c9C6F&$1oV?8@R>0o($2F%@>]h0MZ.tIf^*_m!E0-`QUtD'dMU$\D,aLMo#FjdLVko %Sg+k^gsq+i\QN!qPn6@]oYN%Ip.1_t>"I*"gaA6T`SAa$SFH8T:A]r(4kN<2Oq@&P#UJlLkeJO>1&!&HfjkpMLoUpA_*2;kZ3\EtiFrfs">uCK&Hq[gIUDECNk2:WVF>K;!u>aC#:iSE6-2$;/l6[0 %gW'4L$Al=-Cs%-:$h9Q:#7_j:Y[*@@4f3JL@,<.OES).[T4PJ7,bdi8*V/-Yf]b::aC$CH\s`=dY96!hc.6+g'ma'ANm+&@-_1o3f\b2q.ZZ8?I&%]afk)fr=-\oGlGa&QG,H4/@0dQ#+XrV:#5u %Bfqb9DN`'5Cd6Gtj#6P-%*MO4\)mr,`1OZ7(tQ9(Pc#>&9pGu\=m^U'SmSpf$0aV9-!8W//i6=7`WfA6c`21ZgH\!*be%L#o-k^j %eu#(+V`0RXF'fU'Tsr3Ol[0n:r$5u!euG:#Z/0QC_JpbfV$C>8n$\?38uul*?Tifu4KDlO9!lNt^h41tHU>k,2C7QC(crA]A-Tt\ %VTkseEoCL2]kj;\XgU:7e?*m2Nj_j[#Rm[$,gWW'o6BdFdC]hXT0Qn*RXfLKE6i=D=19=/4S,[rgh%=_CcPL?A0>eA"Fh*-QAK:6 %eN@0fB(.Vu"p56A\ntZA^ma=!=8-Rn\ZKpK!^Y$[MYM9HZs=T9!a5&4[nJlX-[YYj:POTM&p>e;q*p/diEDr)VDgLt>8!j5[RKqt %4.SHNf4fGSU56A(-:Pf)H:[W%\FL%)/&:Klb<5,3`#:o4>BCMoXiG+L8`Qmc^pjo%$$riXb2i3Q.)p,i:?aCK4A8dWTmPj3Eis[, %8aa&^hCtqo('[n1bCU;hlKKb+4ak[UR!t'iK]U^LNJqb)__jU=EJN@"BI<^8:[bOF;92"S'rJgROkRe@:1OE[U;_%HXsSXX35Bpa %btt=B:B'];al$`W?Mc2dMmX,(2H\Zke*:iI#4m$^>TP^%r2(t;F_2/n/O@24:om@AeXu\DH`j&;&Gbp^9XToAb'cAuL!5H65ZA[' %L;L-O1/DQm:JEWU)U;k<>G?Z(NHqU9)cb(FT*e1Lkfr"N'jSm5:^E$`qZ;l-djVN@VeI>bCJRg"S\,7k&9p:Y\+;$_RV"a7J)c![ %C9M%BF"-jp?$ks(^2-*l(\AS9QfJk#(^P29@!1QtkE]"B_cHK`m(X!j1>s1*91.rbpf:L[lb4s6Ne_'Mm.KiJBfsk^40b[Mf`^Ye %HAr-7H.k2Z7[".fRS;kQ3g>%gdZX"(dsa.^'uT>HV113>UG/,8XYaTb0$c0Lses,X\X"4J0&/9 %bfg')m65&5Q$7u88DnU/ge9q$487=!ffH$2C3nuQR1#N6S]_'K.k/`F)gIV#04r;,MNm^GY&1f.>).`g+6R-D<[b3]a`QcNeFbW%nd.Y/+>[X#q6fOY2RWCRp'<k;Z>e3#Cg39o`YL0,;FXF#F*b20:-6ntgs^Wcn9BYm.iGQj6^fqiuK %,Tk6Jp@pI:V./DE]ks?m!6ZS%H4]l)+[BhqTlNI04O:7#@KcF`NgG0:]Xd(%4@'+ACR-S_+'*X@TRdV:X3H,DbIMY-pDl::8aoJF %^J+./"4KRn17na>8Ad@EW>#//[9ds*a5FHS]YIe=$dg?WkM5fJ`WD+Q<&#?5LVRF4ZFr4%gbd.)2W4(-bL,h:ME\I*RKls:G4,I= %!`?!MmS4hqO`kV(D;/s)bJr;ql-7uM"#mkhApF!iJaYN:"Q-WgZ+[Hp"n=5>>cWk`/@huh#7S>W#qH'Sdc %fZKuBles\Vc)gWn!h0IH\bK!S9!XrNYW)B.j* %;8]\\O0-?&(^Qba%)q$T=P+Ld2^aP*m!^Iu)%TfEY*Ef]7kUk']BM9R%N>oQGTK$5RI(F%dj7L,`u'l]qB30^rd8&Q[seJ8Hn %ZJ@%(iJ_/H6:I-k079>RLV.l$%q*]r1RUFpRA_1DokB%el_h16Vj87S.#qlAR^YGHkEA'RW3$*b[jRWjr;b^,JTlE,:BW[ppi7o" %UoM`J0u>IdA)[-FHPeVR;r$='clhco&_iq9H;MAb1qg@EG!HDM$;]]1h4/8-,2-3,eW'W`lRetSs"qj[O?;..T'cbd:]m;Yg9u::]l?Hf+2s?)A=h6O[(;(CKXY7PfBt\)QA!g^F=nZ1'OhS;r@](G%$@]e.2],fA2Tp3#9Xnb?WB %!00-*D1f.d`liXDT2iA>Vq(e"=Nn2mY$4<]3Cbb2`uP0Gl>35Kj11KuDG/ffbW!e\jqXQ4St>YIG[afE3rsfTAe9p9ob.^6j?Rao-`+<(+"at.ODZuKYSd%e'"7JM!j9GH%:]%>!C/fC>2lb(?%Dj[ %Kl`bb-83X?ElSB91@6@K;*QR>-;H2+#HcXl=j5T8Gf4R5`blFQH.-$cG9M@$OcSot0-U]R34IF7`C+S9ZXA76p22RS[FuPJKFoKe %1ilt$L2Wbd[[f`J&OSi5p"YAWReK,dk39$2i=(W]e#F^FOU&6I$*I/4Ho@ou#Gdne177C7:Ks);1kcBP!P<%rKu7<`Bo@\dhHT"d %;l52a^MIH]8>Zh1enTp,eXp__DCKkq6+5MQJ_&76#Y0CO'ouZRdm'&`qM;Euea*1b,S2&S7+P80-\Djbmj?pKT.Mkph+%.&XaN9PE>0m7K8L7iIg>[S8GlhDPSjTR)4/jO8^rM+HG+ %"kmhGT8'E.k)dQ89bD-$5;POLn??-DZomHQE'&<'.>=EP.p`\CV'bXNnMUMDXP-X$07KAG7j,mB\(ol%NU4Z,4O.Z%(Z63Gle/Dl %m2QZIpKjl%NMZgPHj#mLk>5!k*a^Qk0u53jgF-9OQ=5k60Tn#N[>"6if@2TZrM=n#%kClX[l`DdG,l/&5dWH/O67ruV?>4+XgUJq %'jr&,a"-4IDM3WnKN\$mLrAnlRNPrr:Q!Z2,)<^aVr/4hi\6;"$HT&=QK6fJgk,mBcLVlT(_rf`N%kgY);VBu-G,h$mek@r4 %YrYDH+YBHuc6.0)"^/S7N7)PSD4bgWR'K46EsXL?Y,??OfBl,\^H[C:O*VpV(XG"cT#2*lV]hTO$1>(G!]%bme%cfe!a).UD3 %HP1KVVihqdp29=Gb*j4LWC%qu!%^t@-`tk`/[4Pd2`(-4*DYU=0"^X3P`2no,!&b5F-^F5aDOD#F:?K`M^L'Ims$fGD':Jhc[8DC %e*F<+*?&?iI8BV?57em/#7,;EMY9eRn@6ZJ&pXtK!4R>Z>7_]9'<>jf\rB6g$^kBR2lG_@oO][N,g5 %KQUH_DPpj3K*=NR>Q*=D!OJh.)-.D94nQ9T)]3pMFs7M>p1sT.M5jk:bo/np.6lSkIX:X4f9n_U"I\Wt %-?a7GdrCRhVa81YJJVtf`>eX@A3!#aE)0B[/`@NtR8k8p5k_WF)m3U(mRb0L6rHr'n@mh#`9V6=%`@&tnSH+0nD_LYL9YQ(PD9aoT=[4aqC'g0@2M)_8ZTCE4`Ln#,d'4`'#>DU0!D`MaUa;ji)Ff4n+) %P4Q+;R%QA6n>N,:0TB3VSgYj;'OH3gKe.l=MUoh).>qrjVWa,_Uph %MEL(]DL/g^c$E*fE!6L3D:_9_)9[a.`UbtC]lU6K5$'HgFPO`Z120FoK&a!/S=$]3YK-?ph1.&8Dko3sB!7Sg!TmGL-n0Of5mPVA\[0_D7)bp;!7ICeWlc=7qV9h?BRG1"CaO'iRjH< %7W=1!1tQO*=M8s=ki7)u?E>8N3m:!rB:UIniOSR#b@WQR0hq)88%>3??M3;hZc*cB#@BI_@K19$d6 %At8el\@pl&?^8\DOh1k$E-,1Pnt$\a^kt-#M7#)n*k-uT*pYX*e[pjCVI<*QO[Z_Oi8HY5e%Hm&DB!278M!P\V+1c\h?Q-GQTb;m %lT#9U'tI%KGp5%kCuXXnHLUm#D87:@nSW#lWVBOP<6Y)q`RCkfrV#F,<_*-%GR3$RUD4Q\L#^h';9Adp/KLU][P&V0uW;+CW09?oi`E*Nr$-&37H@/ShF4. %+59]s=rRj5T.6If>nK@\bh'klXBm_\3njCC9I5Kp(MYUuRn6sQJ2Ic!X1$lIp(M+f"\"e8';=_LU)s`;[?>I\-fq&LH%i0RL\8b])m+.\PSBr&ngEq#T1^+Fq %k93WB2nbFqOL5u+;]cpkhTVHu9Gi%mS;".@88j8VK?b=%c)cfc/jp5Vm%3Ml[\,Ku_g\`7[-b2Z&s4;6!?cM#,WbQa4_!kYko<7ulUA0Qr6bg"@$5&@FdE(>k[G@PSfMNAh%;B4$%R1]FOq]bls#ZmKRR-$>'K@f1C %^ut&P@F\UkPW`1f;[H+0o/0c1K#$mFpfYo,-,b2IZY@h'#-SH&6keJ(NjJsP?64*CQ6pHpIr_loC+&2*=l$neQ\qpC@AkJq^Zr0\+eg#/@MssUEt-ssCl3r2B%D%&n46UGPiiD9+c3[0 %]*/kF;k\Dj8kE7S;gL8XBWGGUa/P'ehNP$Lm7&-2\Y#c7hc=t=9i8\Xi]jnC&+74QGWA.MTr+,8;o`hI_R4QOso23ma">0ge$+I"\V.:l5*5mcJ#o#)3dgk-`P$I^R4@XZM4g)3pH8VnJCA$ii_*]I&ogDs.6)_W];@2n2Zeg-Ni0ZX&YWt*\Sib$5ck_.N<54HV:Ct]F)Lp %,GBbr0MAJ3AX<7A<$RHo/4?gcAU9@G]l7lDXMUKVS3,ArZT`S;_fdeTFBV"[RlG(cC[\4&-XZpPHdIQF+]+'je07oS(>d'm(/A6- %gBerqfo,Xl`TpNJp,DDOUHOB3E3N;8QnaId02%H+9lk,f:$P3N(J'8C%Y2a?#i9"EU=$+F@<5cjZm1*ik@=R@^O40V!E\q`huF`8 %LWqE*FlF]$<.pkOQIB-8/maHAjdR&QYJeo%`%te,M='RVeDY8&SF1*[9Zt>e',@sWHLBq!g)Zd,["V4GeW"I9lCX@RH=_H0bXm.> %`T?Sa`*s3AZ8V$W7u2AH=;)Kgqc-qJD>i?DT@n:et@OjBnb[t\]HE:]^gQ?R[WQ[)uC)`3(8 %aPj[*cE:*^As])+2_0^>1]d&era*90B3_%`]"_\egbBuJI'WWLX@Ee71^cHjb0LZUI@6"Y'/jub?Y0PiT+4*DNYg&B]Ba%9+/!YA %1CmE'j,jMh6ngh(\OdY^lZLk9S;/%=bY/51/\\lV=r!'r69ElF2L&5EZ7e0Zo\B>.m*bcqA307Y3VkUZ-1In3?HGr?jat3//ReJ? %6Z_eO5;/:6n^KkZo--t$mGL@5NS^jFm,*P&0K?F+r9(]MTd[6e5B!8Ztpl(la)hQL9 %13DS6duLB]p'[eSm_#E2bGI_\op!6e*YrgcM*`V.p[MKODq@D0Rm'*X]3H,Ouki+0&Tm!";P]o.G< %q!qnXAFEXL$*8?V^nt(%umcJrOkI,UG!^`OJ#7.&XHBJAXeajm+p_Y8=)h-t*f)jCHBKp;Y%DV@<*sP`U\,G[K %g@!^!@=0MN7mM=1@sc&#I=Z97hCecf0EVV&ALl@*>U><3CkJ_sE:,)nX'4k&p!e%E_i2bX>22EO)hkK(cl$32jS.t\,Iosk\b6qO %iNN/H'.PhVa+]*t,Xn,A?A:_?U=rrubC6/;icgKl%3@_0fdb]Gkh'Q%?),?jRL^YhgpbFLNo06H)]R0nZ?#*m(ibtM0IN=-n& %!:#n6H@k702Is4BrfcfZ!:,*g!mCHU,(>S-'4DI,@hW,]Xu`!Qa>P;>;?8:FD_GP]Ym\4R=A:edBO:@t,8=$h4$?d=@(1E(>Oi38 %&1QtH_chV=i'6gP&C64SS1KI1(9D0(bs]m$inuCP]7?$2g+;AND3J0TAml:[G8e5fqG&[H[-"(8WQ;O+]RNR(&a@9O)LF>gZ*>=Z %f5hh6qtXjd`#7>C/IIgs%'r,)bk1om8XA)=@!H]m/qqPF$XMf]KG\Mo/Aed5t(JGq!R=7>]"7]'!p\n>sGV %-1F?A/4U8Ee"T6@G`AU!CV3ojm4D*Mqi_VuM1l^n&Kjd@-;+!lA]A#dChgb=RWnkZ.NVM/Lp,qU"Eml=6BYgJQ7]52,*pECDu;25 %du7puVsS958]$dqk4]LbS(3Ojm]L/MR^^Xg2];ap,IgJf)$>Yu$Ek/Nja==VdgPDWX9V^T.h.Wd".10HRF %qaIYuUCUkM)2OYL-89:4Y@oX(e-nVi#Lt[(^B(Zh5t-W==J=7dV@iRc3`;/uE*00B[N2m@F!(mi66D&lbKXP_Mg69M/VaAKX6n4h %A%p]HGgd-9OR$<;/'RlNOaq^%b7D48fZ=4\l+/7h"4O\M?%#VM&88OQ4^c*R:>Te4*mGZh;(U,?p4RD7"+ES0ZN2Eh3P9$N[Q^c( %(%Rd"jos!VU7!/b05rl(m%A[Bn[W!L^)Yf1gdi0,-$_7Sg5n69=tbJ0E.c_WfD_uIcE'U#j3#[9C"E;-?XO)Ze5a503;M(^?teJK %"9r[W85WkNO0-%4lDgFZ8G;t-S^/N2[qI=W:jS4;3+Q[@lJ]qBr8)MQbp9(e:UsFJffBc#,6`=fJf0`%26#5Db,!jTc(Z'fEIa1? %^qPhLNF^YI,[j'eUa[Fl8=sX;kT%tG,B^MlLfWZG6tT4K6<R[;S;"tKHh=oX>/-,:\WiF5J[\FhF=CI&D)E*Rqc"G%RO>7X,O %#+AW1:9KR%q`q^(L(h(n&WB65*e@dH&h1ZfEl8Us:D+q>#4+qE;Z@GZ7u,fiM&.,Q:,&UN!:N/i!oe"`2l&rq785$s4Y>CpLr(u9 %cj-X.oQC4MJ6#%-EPNcNA"$kVkYX2:.M]FF$rf-o_%Lo(iSYn-.1.p](lDI.*)p&'*?8i0:`7pfneV[)S-I7=p'E$$E.Fn>*(YVa %g]4ba$!=lhD#B4uDW.j6*WUL4Im\Z)jT4R%7n#Ym5bcLR@N7YY;lpTY^\I+SU"AGQE,_R,<'nM$KP'2-YF$^Co]@B %.!cc88hs4#k+:RuM=G4$?fH+R_%LjhFD,DE?1\;93]OFI&NJufNaqA8lc2m:*XKIZB,a6SAmjY"B5_'nbhC=R7OP?W)%kn_O?,h!Sq=A,6Be.5D%YYjL>R%>]43PW.qmHg-X2+$0XW9X'4-^%h"g%KR(AK%7T+OWjN %bLIX:E`k_/CQhS3T`Eb=>>VHK^M`'^t+"G;dUedVHojQ\R<$m9b_H959M#Yam*)$JH0d0'1UC#[pSJ[*s(C[p&h#-8u!i1K4=N %hT%]ofolLTnKS#_"Xm4!#^/c9-6aj`0/H*KN2R">4^O$cBKGLO9$lI1WaR>Fb-.dFPeF]6NN^KfE=XCdS2f_0 %4?+[nWaPqW\6;T]paTM=^*XtjHs-lGb>Po?WkUFtl4-L)#MkD^V8bn]8g0%:%L;A;@adG:T8o@O^&.G'(?b[8)mWU>R/Vf$Q38q&V?)4KW?57;Bg& %`R^]J?64Wg11=<)o!G5+_;::tbhA7m2pb.;]^XG!OT/JFMIXUjGjQeD,5<-6oN=FpG7_kT8OY.[R`AIWHErnYT'@p$i+Jh4Tu%]4 %5N8OqAjM[(PT+:`7Q=#nIK8oYA,f,SpDF/QG)_Kto:I.XhDG+5;\-U(!MJjS[V#_Q>p<#7$@>F#)d>O:BeZWR*'=[lQ@"Q9;EZfdueCk#&>g*;9fBKC=ajTAZHWoYtZOh\cbiSLgJ8"PW&a1 %,oHh@[NUNiQ)`uj1W@ebZ:j<`r.&r;OVGFG;W5>(N%p@LgY"$dV2WUX>iL@'`ofeco10+^t-T2 %LRFC.oS+s$V$d?P1Y?KraF&fZhoM2'if\-#UfQ'4kA:DQeN1#%3jt:n%/4($C\/m\`.fNs!6pA,8"caDSnuikW9Zd^jHqa)2Y=[;&]BBn8u6L5G!M?Z`^k@q+;_9QH-^B%&7Aqp/VK87W_ %JebkV%,HsB=L-_hEobPhi5YJdOEC=;3MR0gAf!fW-a2u)S<6MgjZJ+'@.<'p6YAjZW>BYaPo0+_U8e"&a7)3HW$FIkl,fsj4C!!9)<&\F10]&qbKPq/%3`i'`R)c`57FZ?$l %)T'1=obKN"Z==-gGR,bPP3keo6>4L8nGhUTmBC=06de?i$OOn2Q8[#\H.nQhXhHW\-ZU#^b8^Bfau(-*JDSBKS.k/R%]UR(_2OR" %W2:rH-Sq_D'$V"H-K8$-3s"tbEp]MMT"p`75^3Nakbr%<`jRj\VD*.U0Ya(h#V#lt7+_L&6NWD#2j,]s^IO@"=P*Y?j!T=pK[Z0C %r7kAhjN')p.I8dNn0,WsBV/gbJt4JF+:0I6,(cOPYfR6E<#V\K*Cs?7BtA1#!>d&VZMVI)OtE!PVB?t]'$Q]/m!BUF!uO+19i?Wk %WTZK5B+rL\&p1ffODU0#C/)i%oe;RU$=mR':jX@s*WcHsecSobV7L(M`4(o`n"]qQg^s,s7ZKkaWAD7d-jqZ.K=SM4)Ba,WJt"E? %3ZCo(jJ#@VAjj;@JR,WtTYYYZg>MB1@fh:@e6@`X#KX$tQHdpRfj.4c'9K[hfSM_:!;Cf0UFn3U\Eno`Kp14:faSCO-U"PT*VnKY %'r$Y!A<#hps%+A!"\i4RNr5\9H< %(:)UeqB=cZe7qO@2b6nm`T1?,.UO>r/K6[S-g;(TD@Esshbi#KZOEHrMb2KYMbF+,;?pF\"qlhV8?p;J+SqbaX^8/p`8N+ALAhfd=N!Hj;eC**69Lafl9tmu&W$-4h"(g0SRe7G8,Vt:WqM_\C@%lF[7akTc@Q/+Q %YXomMY'^oH80[P#d_MNLO_3e8/T;/NP!(lW8KhdSqn#gj-'_(%JO3".0XL3l-`LR2K05kdO/*)FQ8(?\,4gV47#34eDR7PoLI]ET %-DfO<+MC'aM;1$$;o,%SA2TJR#VLT7ccL^!GjFHB^`>nX-?L=bTr4=Wr7K@r6+\GT7TRKO0*L)aBcn=)/L>#;^=Ur;Ea)d!+%[L&4t$Ugc*CE`_$hC"1?](2,52SI-mBYOua5V)u\)V %3`p=",CtYH95*au=F`RQ5TQANF3f<>&66n_PB\f9#p<%rR$DF$N,9dCCXNL[9MaRgQ71t-W!8ETnX<7h2k&*$+=K44j/`th!K:WX %^8K&J:S`Wr)'W2pO-#ufZ7X`L5S$C=bNREQ[4nC$0@,U;!83hm"opu*Cp'UGf.a\VFt%eVp`T3RA.?MGnGe'k=(QCJ$9f4A^/ %pS7)p=P/J'q#oH6%foJQ!%U#6!;?L$U`\X2[tSS0sWY@?r=k4C]!4q*1P`%d^mas %eV`u4eST_m'2@P2:qhHTQ+;X9l74t&Yi8K`!R:t8Z81/j"f"p(:Xigr;9<*2GcP$F*a(V3HU`.oLfY*mT8XCZ_OqR.q3MbN"]iX< %#FJI3[t@7;?TWP5V+)m9#aleeNUg'r:gd\r$&DOfo]=+aj['t9_mW>MAKo;-T:t9^jL@sm'bZS`88q.D5dHDR!QT;Ua9[Y)12/Q7 %Y67uj)sTRg;o'8'6^'MTM3WesjG!kf-L7`T.Dl7f:ap>oDVPVbbE`*RN>f<>!7A[h`EgDdgc+?:'a=&UFl`%Tm4W,hj %b">Wn2G=c>h%(3&a]7\j(Aoa(XT5i5$4K7(P/eOD_n%tk*/#Xn8Sp<:@pN9n\i7p:\lGfkN4!G(qTPsM6t %5"ZlNCj7'1Z#D.1%g*$HI%WMYW5Um769/`SB2;].Knn.!$HS\d\&)$%+PEc$PCI==Q@LnNJ[Rn*W15+^8dQS^4P97*9-?"MPLcqu %6jH1YK*BkkUis-j/LHE%:k8;7.720#9,04gSt-/*r'9aV""Pg\jcmdK@.]^3!CT[i@&9A4qlc(IS>ab!$^5d/5a2nhg/EE"WAnW8 %6Z***40'1fnd!nT"_CE;P2I`A>"2:?guJk4#TN(sOpO(Upc_MNEl$g,&)a&bQ;ZjPMSi[#CeZLT@M$&goO(*e+:`,?8[$aA4+8N-<6%*7GE9'29T%eDJE)fs!gT5@>/'UP;7M0`W$=\.fN" %Y`e2&D:H.rK$lK]-?`"&dm+'T(GZ5-QEL[Ma?f6X[Oc4HRpNg@p.il %0cA*`,i_[4WRNc7ij)OVVimYs=TKR\@)'bqTBdG2U9%`ncG;<`.;/oO.gJWVKLS6",S1%ML*V`""h(KcBd6cL;?5/+jNRKq)2bLU %FVKZ$(-JN"7VB:>FI6=A;=5[VlUq+C#U9%GaBJYLLQ'=aK'D2Dn.qSgn%Dlll^-&':EB'pQ![$q&o`e^f3QnJDQfqraqL( %5*H5$M_M1g!$i7J\gfS/0-b7C,4&#"REUc$%0fC*RXquP;CN'&"m1S2q?Nt[8Z'fB-s4O4?0q'R7qJ(W8-4lolLC7LQm]ELBm(3= %^f(S'2Xq*2n42tm4dGPWBTUXWY+RZr7`rJNT.R9iZ^_+X:D9Q,Q:tVB=l>9ohZi!Z9B_'t6Lp>:!b(f$^mA3fOYogSQ&OQjEd_fa %#Zq7N7[T^-&PKeb:ec[hW\fc(92/,if-/!/%K@jhGplT:$*"c#eo0dlgkH%F %M/3D(k5fjYk6\@4fcf9lJ\i`oL)*[V>>P!h/d4gqn?j7tMa9.VNp*T=K1r^[K$h5oM%*8c]Xl&Y@7>k@M%i-ZQSZ$25t6=>dV&H\ %^bT;;J`18bX"_C`ioUSeNJF><6sMhi_JV,VW4lXma&!"%%g1cLRBsTV73J`6p_/K0'@7aTf]@fRi6ePmY_-Iqa=-8JEX"K2&rG\t %>[!DWbWsh3_*BBCUM)P";C;hd_].jbL9N'DJS-Ll,u4W3$\4@qK>E/jcQFOTT9+=.^HJ!UUSid.]fllhq`utV.=@6)"q3-7oF>nZ %WV7imKJR.(H%7]7iaOiF_[2us_\nYn;L?NMD0a!%%c8!fid#$%P;_0HLo&:R9-( %O:Z!f!:i\cKO_&Q3c:^F"h(fEZ#OKZ+,88MB.;r.JPkS7c0T"jbmi/O=.#m36Qf,-*#U\6cF7&E;#FPq\d %LBcT6mj %U-&tgmiV_.QU@ZB"!0W0EO*RF7OIiKN2AiBog(]^l6KLfY[oemfdSD$nV)4AF;3Dr#,kD-DHU,8A%&0>&F+>%lN.dgfP^s)R965(faian,aWcCXV"& %h+KW27E3=o=J-fB8noC%@?;uS;o+M6e6,&oOC&$CKOcd0l0sI9"3H7VJ* %5c(I3j;%c_,0L7VFXg)7?oM[a4+.5I#=;i1gSL]8IB+A,KW;[tiq%49N^m5QFeh^+c2c8s/%?aa.2=QqA-)8NA0,O:Zb3TdEMbs+UelHMN)HOO=14fYlm*&d6KO3lE!N&XLs8rcN"Mo;80&JQE^WH%\DO-:VuVFnloo@'F+7i %V/qgfZUKG=QXo4'EC/cJ'JEMpJ1q@=b7-]J9&:!)+$fjB.cq.C1Gji2D`W]:)Q\@>B9CSMWV7e,WTc\d/1_2CmYRgOX=uZ_8_+n5 %R++PqqfN&X\$ELkf5*/_kRh"^2?t[N:WrEYj8e<1jD3WO8]E#$nD+WrV&htdhE/QQ\qF6W\J^eB, %4*CaO+*sE@oW2UVnH[MRa:s".q>,Z(^[+%Mi^AUli*_m*WRoBNFg9H_)ZliK;3p;HFrBC.7(!ED1U:;W"<<818VRQ`_Gl!e=$;WL %etTJ`3/Jc=Pah$B_3*0I8X@I_Eq!'emqG,di_H?t8:."'*Dp-`%Y/j+hP'E-J@177@E/!G`c[q4[D]*8P)^"a=Eu?-rL_<0OlSo5 %]PV;Sa7D!bQ:rV?clICtasp5._8.pe1=9Tt*!':Sf`s!toKWYPMd]\XZk@QRLbt4UT8hEMj %R$Jnt73/YqUci;_GHr<5N1N"K*dHm<: %K<.0E@:bXteN-:b?n;tY-clo(@A?%P,coM[#D2;"Y6l->BE,iYdd0\&L:1BP#XB; %n[X3N9'f05&Y3,=4s&Gef<3]'%oE\bCW4*9(1>ahL^Rr$MB6AKF[KP_q,^bf,YW0Z!d%8L=F#*3*;kJHPF:l,njqkUKk?HP2g(X\_Y9F2U(`P[s,j(XF[IN+f3'+]u<0]kZU %1$j]UC]rM"XGBW:QJU#>RXg,9],:Gi&h(/$AScOCZY(KlT>4`u35LD)WF:&Qju4-S6m@OddQ>:tQJbesp*[ZG##0m8(tfqW@os4[ %Uln2aL5p;4^=C*mcl==AE)S"eBqVU8>0o#95O09c;.;`j2YbN*3%UHDdT?9C3PGC0Al(^9&;*d*&pg:9Z:!]GC3\93,g"6F?nXm9 %[tb-#-3U8/5%BU6%AuDl<[[LmG%7LDEgpAjG%26Ho.PJ9_C6%XHd6gi++O+d#kt:^tVFFMT-5ALU6M %"c3DNV.@/0-F(lF`?^9S%$MFN."e74,S/JLIB$=Q_=Y^@b %+Q969Z:+s?@h;%nZ6)U02jm2l^YrSMN8=P<9/m:`Z>!_,!IE]7/kp"\.#ae=El$DR?iiOm;mS&ZDN:'hp*XX3%"^u0apDi %FKeML>RCP\9[1G:o$ncm7r#H1/n8fjZd3rW$oGEsgp;h_8CK';7rZ>]U4H+mKDE8-FHTj)JFp>;E-nHtYU,N!$8d@Bc4@04^i9C5Cnah91^l=/UiR5'.>bKr,<=sVP)qF?Hh(=T%Q"gGXn#TB=$iWh@E1E(OG6S.7sZfKZg`Y0#hEL9Tm&2$ %;NGf&`g5QVdQ!;T%!YkC*_J4Rbmkq%,FupjZo6:.=IeNg>WD'Zp>Z^nD8Tr7"K[`E9\]p]g,lg>2!uF]OVots(sUNa@Rs:N(S#lc %q^SL5rPU=i7N&)!!LU(mM#d557/\sH):SZefX7N*ICBJQ#rFlaLf$\e/8U0,SusH^+@FnGkVotS+clHS:mTTTXb[>HIO=?Z`lJb[ %^dt??WDuXsdL>E.C(!bi+J$uo>S-R?WTKMRBBN<9@>H=0XYN/%##Yklp^Eb,Mc<:$%,%p[P-E=q+N9n'%*4:,8uVm?B]X_U+L+(6 %TG-T5Ri.STOB#nrfd8o`A-)M6o'eo+V6h=02A4/g\N:Z=%`QXe!/2ahp6)7eNT)YE"XISJ&dG;GQ#$\'!r>Qk8aO?n`<>0_Ba1eH %aH)KSfr0A7,E:+tisac%JI/G-YBVLjQ#Z'hEgAQat]RTm3hj==(a/"\_[?,WDb=s@7H)^mD#,XDKV3jO<"agIlj@@ZE4AIrQdE6ds;NV&Ie3gE\lnKC7: %%PgViffIni%jD"*94GHQTr`(V"k^RIIjj!9S&m.u0U9,p!K&I+.h?ThasNhV1]+^dq*D/(.#J^S;:#W+T]DCI.g#83mg"#GNLAaE %Pfs/#CX>sne>bD0@\17l@!p/LQ16tuKg@DmB&]YU_G)EZgob4Ya:"XT8aAh:+AZ0L!*iPV%_:Ug)MO?A"M6Gq0U/ce?qnHKdM%tn %TP)/H`9(<5n!lf;*m^i@1O*RM3\idmN!=RH3lP_f*^SHB/>M$'=DgiT4Dob %?M[pt&4$Pa^Wteq1`-JMOl0PTJ!a1das,Sp!\Vhj;>*BbMj,fD(judW<68Nk[Ccp*Aq=*QP3O(9&!9$V6LWe&UF+=7Qu %Kh3[jo/fO0\4F/BUcrE6A=_[R,Y>Yi-Bb1\N.l!]9dZ#+#f_ssi`ktosqk5KeNe.hcWj@&kuMte6IWm-ts"PRV.*M@hN&8=UJJe!$0tj %C1Sn0OsjrfoeaKu0`YtVA@ubiD9BPLUeAU"XeF*`TLr(),sM)L$X#M(.$UQ-bY(JCqVAr.@L\UA!)HE41X8ZPaX3F:L2@Q$UVNsi %[Gb=O(rRkSF)9<9[aeu7kbPI&_4/#$F*r'BCD,c5:#M*OgN@6nj@,4Gh<;G\&[G$U?l9[bD\h8#g"ToTOEF,T)aF]bM90QPW*_>k %kNJq.dU[K\X;0Fd"*O3KBhP"[Rn0n',V`iY_OH7nP$+:T'W!?Rb>AIJ"DCr,0p;1)m0^V)-U&B*:Q=2W:6,HPR4.(.?o-iq9D/#jW2//7.V(+AY[aA6Ql,bmD?NfJNPXEP]qp?'?ENZMCdH^=E/bj %g^Ck7g&1=3>m\CKBR,b-)iR/i&ZH#Q7LnU70aC2M@0$g+K.#3^khsB5^ecANIV2\YNA(iE&:QM%,U\Zn#'Ym1RrjQh(q,6r,7M$1 %CR9KXf7+pQU4:QBSKn*'/[8IP[YMVXPT.d&AjFJ_fYcDca'9_9;/Jd/9scK(5EXG`>mZ2)A7+Amj(hghY7(4:nfc2dM4$[d[cRRE %"%o`^$0RK`VEU06,88gA705ILh3'r'2"V-n6C*RlG6)8PKtIpke(DXgGb9gdXtgW[72;DnNQ6>K&cq8S]$EXrK>8YPsDl-q60mTG?!XK9_fH101;W!86UD+ %m>5IN0J.$kaIecR$\)W9"f:b:%(:osAor$/.+-[m-0HIZj5k32g %XeReKq@+^jE_>RrO85lhHXQ!B-&;a,,O^uj5_]ZZ53`iqKoDc2,oKl-COkDKqDhEt5W#-%c(+q'D->;iH;/1u!(0XU]bLs=F"@Vc"'?J(:bZ*qiuET32K<6"][arX!*.1'!MHg#SLdESACVi2#!l!2"V/:91;LM7&(R*nTFTiueKt;8?!0bE %8@ZdG"GK5'$60D"\QFa&e6]1%CNs4k1;cf=<66_9gL/ETLc?d;9iq#4#ZXcpl:_7D7]C4b&uYlN(]nnTMq!ltX?Pm')4Ei%[8^Q: %6/Le[!-TV[_>fTCAtYB(`2-XY)bgtY8:(ZcZ'@%'C/OVuMiBMaLBBf-V;gV=2`:au3K:kE#&Y<1L.DZ\PAN7BZ'4j?(,Vm;cn$&1 %HA@\(08XA>6)>'s%c]N>p^RB+M+#G#<#?&d:B?&NYGp!n7m//f<0'YsUP=@./S0P7VT_GCd6Z'T8ss.l55F?TOQ@(R]:m0FPB*HO %e,.#QA4%+$pC/B)=Kehe#O]A3sOQq1!+UH)P9pg6HOk%+>*jX^Ls[4\Y4oEXJFP%GX^`@9)Q^A`#qF75q]sKd:IZ>U/5;Q/7%#H);/Tj8EG4< %B/ZMtQO=.r&/kZZ4-g!'LXKtd;&t4H;IKOp@.RlckaOk?:R%rDJuU[/#Wc2HTH+VgJ_i/A^gg;e15oOHN!8%C>"^/').3Oqoe$=U %";?c\L&@941IYdaTTQ#W\Io2S`dna7\a`k3lMO3"2*cp&C+",p1E5`PLSQk$m7?Lh"]n(Ai;D:+UZ_pMBME%C9n9*Ffi0scZCFN8 %%J,6\4cCQt:PA0tq3k9!!4^&*N,r\9s*Kua,Y,ugFX'B`L6O;BXR7jtJ^lV5\Z"&FS#iB@2L-_oWi.G]d>X4(2Zc3t/L7%=Wb4n: %Jm2mgiRUm\-]oq4/se<$)LV^IQPsFc3L[cQdpkpN!1$l!dJ&KdL'0-(!J!H3@qlMtT=/5;_SI`PFqe#4SQ5aa&k1^!m'Z7JVg2M9go5(q";Y3DT9+R%Unr%dp&bqha./"8+59d*Cl %`fZKWEkS/^*%8rIW8R`\Kn-q%Poc%mKMjK@`XXEV)'XB&:&0mj7_Y]j$,T,=-UfB8`^6]gkUoFcH"IF\rT3^:Z*R$VUPh]!,e],pO7M/df0/$C(Z81Kd#VEPTg'P.gQ2l\&RoCm"O2VSUs7%$eS:>_:+ta>AP3$8N8`C'FboE8W^HX %/P["/7U83XSC7h1)lP5a<=U^/&;-\HQ(]SmRq)\81Nr=j@Gm55.KrHfCQb_/jD][*^6)uM %Od%F76i]ELZ:/05`/u+W;XnF-.iSloH`ZBN3O"p2dPD/3]96*jL=M[o;2o4rlj^Xtg^VWB7 %R^m3)acWmGKLM_LGJJ*0XOpZ!W#P*#Z=TtPXbj'[&`UVE&%T6A#!fAdc=t)AM6bqY[h$,-=FL[[FdQ$I+@eI[PACfT9X[ohJNPjI %AW>p30]"1*8]Cj.7CFNSWP3@+aNN'g![Ep9)uueY]eig2%\C&7;nl''.9-W7/N_b9=.]8X#_\B?BX,m7D%2[)8B#%:9%KmE&]WZY %9.Ia[kBJ;0qU57/f`KAq"r;1R5:+*Kh30IZ5r+nfUm:,B2io(CFl4[io97iAJa$h%Prqk+TdB1`l(aAH<3i?T"LJ7PFKgFN1k?XY %So!70.kc0;.;3m>26p_k#AE'$G';BqP0!-)@r#;iZWIqpJ0q".Zu!p93SLpTjcOX+VE;>Z&rKkUEaaf!9-\SJc@?pJWJ_?$E9\P! %PhHPJZoEY%@bA]hV:-&rrtOB1nmEDp+ZS%nj5G:dCjjm7L<@CHN7P3j(AL/32mpa^N%IK;;B[=Cg-W/#_b/W?nEHaT;Xo4)3`hbm %%'q,rRBh;TQ%2<>=4DnSo-m[?rL@%N!f;_`K-,u%a^?P,A?lo*`J?n2L+(!K3-.>+S7KqK%Y%8dR637L#O3epL6O;NVc90qF&FY4 %UTA&#AYbMNd&RGuC5;sWQI:1"QXS7Sd\F*ik=P_Fk+T_",qCgN2bbNtQ['-?,DV_lkG0dgX(EK%e?@Br8_?@h1/-aaA1D8i-R6Z/ %0j7+l:Bo1/dOjZkq?k>kXBfs$,T"#qW!h4cTqkIs!rrPUlB1"Xm,U0M%>InQ123JIReL.;4e&`#!JP@]_#Xr`aUh;;W%5P4?-+0: %GfZM>+E?LF8(WT7A3R9oSek_i+E %^edP,WSpSA5Zj*[`KhT`FTR8(p-Hm7G/S-7q1-4RA-U.9bbPe^e)P4c10c=<:gFpd-Kl3*>gI[D"$Cl\Fou*>K9I)[[N7mJH$_rLr99J3Ycbpk]7@k23%ZO2AT\NZ.YT!mc9C1l3 %>L'78U$"L>nj]fP'HB`$qc^-R-u1D=%/+-1#:'t;B&"'nQ4G*4%3M3i$^hqG4Oq<5LjWok1aPq$(l;c9:K.uW56H[e,ns&D#s]a) %nA0$)(M^2U/L[9joXK*?$7#`[B3O0L8?u?s<$l8[<_QRMDM)KP$ra+K9f8t%\B$RPD%Nu`7J>*(<=MF.$piRBncgAO60.Fd[;sO. %[r=2-6DKtN(etWaP6%^uUgYVY29CfG81=ba9)`GY=JD2Z@a_#_!KF$caXYPAf`h`a(ZnN:Lm2O<;)p78(I4,1FE<;`:]i=*AKL+k %,`DX(G^j1?_BmFX63,=^fO0k%nYGMBO\k($[R+\#)K;%B:%T\WJW#U\8MaOO/\2'i')QtDaG(!d4tYR:8],0P!_A4n!DKOZn!6Fs %!(l=WPRK7^ZA\Tb8Ad<*816EdJM$sH5b5QbLW"eU]EMHSqih7M %(*:[N8/=iQf^*5g4(->n2C!%5\^4e_b7+&(_*P](d;)]=;uI&X((#IR-k%f9)?=?JRj3PPY+KM65TeuNUo0unLA1H8#,]X3& %YlML5/8T&ib`]UX:B@!P/m1n?VF2Pt;@CUgDQ*//^bI8`3Ho-YZC\$F#NoVaTo>!0'uur*&[m`&HhJ'Q[T3=N1uEuk,n>Y5g\X5d %!:R)ZKjP#K#C.V]==hGt.HLU*EFbF6@[L`BX-8PEhe4>CL8TV(j %ne)KGR41_Z5n=6Y&l;B/9F]>P1b,I:b\>-X%Fcr5af9oJ3b!nqN50)V8p>X/`@10AZR7k %7TBEs7?/2d8-lL++hiX<#\m&D!DF(*Wb"!hV^4>9WPc"+sQ,M-F7'AS25GPmmod\em7O.IJ8:CuTU@W7C96hR!;qF)@^P51iEr.GDl$\?UI`VY=A\ %a!4*)d[#Un+WFD3V,Uru>ShtY)J5+G`AR]qYS0I"O=%pGg&Jb\rt"mSiW6si<::lGhpo?R]\%W&aVQnr5Mt<[]\)"8&+AiRQ`HT7 %3rJ89s..G_HSnQB0/eMa/81gX7u?ipFeFk@t!r\]%d1Yo9[AF %h=12W^7P=Qq0oo%G^K=4?Z3s-h[fDJp?(qjj4/:!p@U7,>^lXjeqU[sRfdtCqgE\]k3^(cQ0m"t5F,7HUQ.NC:,c[rIsX2hC]?M% %?'!Ir_d+:\V)prVb8I7cNO%`iJ?!?[TW%]N:`)(K.a_*q/NoS)K#!8=0;2m9c`[^8ge#HS1qn^Dq.KJ(QpU %::foMe]lX(DU7bAqY&1a:p4eT+"lH"GlMru\\+Eg>i"_pVXa4_*GF#0)k>+Gf8o[;oC;hNiGZ4"O6X*QgUkXa[s-<.s/QWj&(BXP %a0!;EANMd[e'7G?$(7j[l`)>ghAkr[KAP/UiUOLeW9ZG=+-2j?)D(i7>Hd5O*P6su>?fnEX#:FZW)q.]?QG-gX/1;QmD&W8+)q&@ %Mp#JpRW/'k]D_;YG-de2`R4'[m-jgl\a%B"'ji"foB#t?0-8tVriWq2O84+4iToT[YE*SrH>1j[qto55?9_].^]&3Jp&-ahiX\g, %oS;Pj59/MWL](M.>#)e\H[D[D1>TXmN:!h;0C/2gqXcrDkjH$p]'^Y<>BeT]Ed6l0Bt8XqSj"04et],@I94Tl=3FTF8$BGV?SeZC %DO)*q/skHZ[H[DKL>1N1qtnC6^Ktnfl&<[Ef#QlHO!j=?gu%^33W7;cj29@)(Rs#`1eA>?Dn^RHs7gL.`V+ME83?),\RtT\(H6tQ %IIlS;g[BTlF]$2GTANt9?U!!*X'rV$,!g=]^@$#iVpU"\p@WobnKc/HhQqVfhY,Fa&+>ic`2+4+WEJ+l/0T(]#8DgBe)oXl<7KcbAFk-qo]cp4^G@gh>*2Zr;D9?cTh2m^OJMsrpWXbrGhf/ht&j5HeB9it!&*JpdKuWST8c3ki2f_<$.D/+3/Nl(@1Gk:ce5j_u_UGh2*-A'6)> %51<4LGCb+9D,86DRdiA`-[g)Y@+Y>]Ypml,r\Mog'6f7/f#muQ4N %33_0NGIOrnig/2PM/OI(hI#_i3]XPdgaHhFVTm[MN5Z["cJs"W(&Q)@[XW]dfTc)j4RuQRhNoe(pMXU^I=Cp8s)q&mmN;IkoD;U;cb2R)[JCLBk*rPmQ;:]!GB^n! %/(MJZ4[8$Sqhm]4!hK6RHFR3V>55?mT:Xb$IXT8q4l81oG#Rk%DIm$F/H&LqODFR3GF))1:^[,GU>.s.%a]g;^&1bEI&_s<1VF-?AdJf(o]>^0,!o:V1jSa6hTH[.O=K\t_1]kbZ=:psG"\g0h\i]%mPXkQ:"C)nG@ZQrTDXnp=9RP^9@*c %F]SKM;d[.P]J32//m!K"q!e:Q@Jao\;8;tRG3/GPl2LDQn`V;=:N$$rUq-"?[i@@'ToG0O>PjdWm:=['fc>Uh0d]Nnh>93O(*hMp!o*&q(0 %18Sk1:=#PkjN[)cp92s$HWJs'Iaio2ESn.Be'hA/3&6WAeg1@'hbOcD:L7L7]3j)!`6"V;+g\L5F4jaAj$b3AR:c=r^Jfo+mdPZh %gO=:o5"K_YI"@npL53VKckkqECraj3/c?18q!,i\n\sOHT4T^EO-khYD+r\:VsV+Pn!@&^r>I'LZgE8$=9s]RqRnrYh;Q"qYKf4N %33V5?oD3NX?GFh4QUCAe\oli&ES\3Cq9ZL]DHT"W/?RYA%a>@H.*R5g\S(j$eOk=nY26\T.YBb %oB`KpkH;Sncr'+X3cso'LHC"Vk,1GiXu[!\H@1c#a%,:3dFA$6bd-)s]RKnTq/qH!rfR#)ZogOX3c$ja0B]]!uZ#5L7ZQ6i5T%:52*G0Zp %L__sJ"7+X3%^S=#B6u\`p9^FYkqLl@HFE"SCsVG#Se&.jY@i2GbkA]@mJ/Hjo6Rk._edZbfq&_\4g/LF50W`5T'c>-g[fa"GDFl. %X_3!)R-i^U[WdM[hQ:Gf+'t3!Vk7i+phq"/8!iX\^p=8[Ua3&$W*(RW*M% %3H$"qHh%.HS6aS1)qf\4SP@qn"4DH>R2l)/`:N[WYtcAP8aR?IAk,]4VE-dB%n8dgY.Jj3[fB'@,N2qXG%h#<65!'_0\hgK)Nc`ZO>Fl=p?0BKo %2Qi?B4=m3"qs:CEle&^N6INoPD:p!j]<46]iilT[iNS^'n$B@jXCK._1!(b&CWk1XZg7Nl(PgPH$AW3CI\3/gB,qplb=Zs2Bj:99 %cE?KY]%F2%Qp3.+pA=2m3pTn_>%%?6^tS7`Zi7%9rG$oZ_ZFVgcd(7Nme!O`jpqj$rBjAsGrSr$4q %_aATsT3ZTBP2&YU\KdC#I+/'oI>3jRdi_dDcl)G[uVl9RH$pEq!o8\3DUuu'eQJp$Y-G3TkiT1[P3]psI %pXrR0*V"1#'/,Dgrl^QtH?h[o03@3(EX+?/P`9&.jYs&"3kA!Y2?GGK+!l86O8,]FcmscQcFj3'?QEJABYqLrp"@(Yp!\-!^1r_-99e,o5AL#KG3hGZ %nBpP\bI+OWgX3Hdqtb4LP-9B4g%P*rFk98DN"+V>Qe_[:dro-QrG@ibs2U]0rhD[i %I*(5:LWOKN4MOE*`F]tJEY5Tk1V"B"5$s[VgALgG$_.'JA'4-KF4o$YrOpC^h!N7<9-p07(7jJlIrq)S(L8Nam':Yo;@1B>gYI*p %R17r@N\7[.,;2L^T"aj]aQ[8JC!"b6UasB*qP?VFE]e*krlE2m>"L']Hutd:XIlA=4*oV##OK4cq")geii)HlI=B[aX'U:em'PX[ %h&0!qHJ3;*jF_)S")=0eJ9sXeH %%hIb'i.krk\@q*t(AP&9Ib'9Q8,YP%f8-Saq&)6l=e6ZZ]cNd0kuoO:[\MGMVWd\.D*)kq-HK/=^4Ne]<''/89HNE[W %D`l\\Z.n0KE128^8S9g&4f>idO"Sg21HptLq[WYJ?,UFSiS`&X8tup)V6%)-1\l.c4c`lnd^KBG(n]oLLX/![7N5C>s6"a(ocNEu %3SA.:HCd(`++Ee#mMWc:%o;O'S@m7iB@QPM\U'>Fl`kkU+6G7WTAtp3V0=[pTB2(0\U*nfeSKQ'\U+1nmQ&%%5?Ep&\=]eI139%O %aLU^:o6jPVX)E;*L$3K4HjM0o/\2J@Pd<'rcSf/d3m.#1d4JQ8:.>KX7YcU\[kaaPF*TNVSj#!to(6*Mk@B)!%okQk_M5G8msWQT %rK[6j3dtYa(\#d7djsN2X?6,Ik5=Ra94q0\gKbmcbM2[]=T$j]j\?oaT4nFtE7r"bppF9L^3KN;Y0!:J9bO %?Fa82-VNN'?FaDea0.UsaZoY83I]A)M*/u9p.OK-Q0/hUkC)If!o,Ag;Z&>1?sAnB_tm"6CW8Tfni5=D4>5ao%9:4tg2uDSE]X=8uGW(iqmgQM']7uHhLg*ZNUk]t98CNb&0 %mR_L;](Kd@:2T9$aR-2mHb%Y7>D(c#dVW@)s7i04=MKH>pn=qeS^-gk@MMU[IUAp9qXutR_Ck.qS]S'?rOX`>*MGSs9nak^E:A06kb8U.pM+ts %]-GMjO,pY[$qj+Z%]50D\n.$G%V@l4j50b+ZcpDEO^0bd8(uG7@>Nnq($XqoT'eahqpY-I7s<,ocFTr3\BX_3]NFPWJ+DF;[<@nE %V8L@2g^\gVG'MW7YKe3[4bo(?EhadB!0A`Uj83JVlcOpF3O+QEZT![7,g9_&aj;>hii2@*S2+?5T:RD"Z.'%Tp=KQ0gtS0lj[8fb %PbIU2lWnhP/q)[F[/C:["l'%Hl?_7BIlP.;raGPFgg0[B#BC>UKDF%p\To\.Cj!F`HrJorYOCc,23i`2mK(M22`F:tl+Khhms>"Q %HT,g1hqn?l,M]Z@TiDt[pZ;)@A&D*P^&(QCfNpa8GOM\PoSDn(l!Z[PI2\\0]mj6P\C"mD%pelZ$=ghuVq:1UoKu\DI!C.q$GSh' %fW,7ki.iqpVHVMus'n7gjGU5Aq8MKG!@],B=9~> %AI9_PrivateDataEnd omake-0.9.8.5/doc/html/images/omake.psd0000664000152300015230000063761610116240506015733 0ustar jyhjyh8BPS €8BIMí,,ŸíŸåÿÿ €ÿÿ¹)))k:8BIMnormÿ<(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Background##"$*475<:=9ACBA>DD@E?FBD@@EBA@@EAFAE@DEADDEEBGAFDNQPTRNMLNKOPTVTVQTMOMA377Eoy|yww{wIÛÞÆÞâ6YkffefcY6ø&&&&&$&$&&&$&$&&&$&$&(('*$ %'')')))')')))')')))')'&))')')1337688868688>GDA=75575:<@@@@@>>@@@>==;911/-11//1<HEJJJDFDJPNMXZWWROIGTXWZ`[Wboi_bbad_^hpnqhilhimtssxxyzw|z~}€yzzŠ|†€‚…‰—’†‡ˆ‡‰††‰‡‡…}ƒvuojhkpmks{€}€„…~z{x|{ƒ€„ƒ‡‡„€ŠŒŽ‘Ž…{‚‚„‡‚‚€€suvqvvxwrntkgxx{y‚„Œ~|…xttovxukj^c^cjmtuuacfjnmja^\^]QW\FGKPUHGPKFLOPJA=??@@?BDD?7.00179:;:;<<>@<//.,*( !!!)+-/00000000000/-'''&'',.00000000000/.,*!!!!$ × ?ÏÿÿÏ¿¿_??¹ÙŸñÿß¿¿¯oþ?ÅÚïãÿþ¿þO??ÒÜ?ßÕÿ ß¿¿Ÿo??/ÞÞ¯÷ÿŸþ¿Öÿïþ¿þþ?ëàõÿúþ?o¯¿¿ßÖÿ Ï¿¿Ÿ_??÷áOßûÿïûÿ¿î ??_¿¿ÏÖÿï¿¿¯þ?ÿ?ƒã/¿úÿúÿáþ?þ¯¿¿ïÛÿüÿþ¿O??åúÿ¿/Oúÿ?Ö /??_Ÿ¿¿Ïçÿðÿ ß¿¿¯o??/œæ_ïûÿß_þúÿÊ??Oþþ¿óÿãÿþ¿þO??©è?¿úÿýÏúÿ¿½ /??oŸ¿¿ßÿ×ÿ ß¿¿Ÿ_??/µêŸúÿ¿ûýÿÏýÿ²??Oþ¿Öÿïþ¿þþ?Áëoïûÿß?ú?ýÿOýÿ?³óþ?o¯¿¿ïÖÿ Ï¿¿_??Îí?ßûÿïøþÿïïþÿ³ç ??_¿¿ÏÖÿï¿¿¯oþ?Úï¯úÿŸ÷¿þÿ¯¯þÿ¿³Ûþ?þþ¿ïÖÿþ¿O??çñïûÿÏ?õýÿooýÿ³Î /??_Ÿ¿¿ßÖÿ ß¿¿Ÿo??/óòOßûÿïoô?ýÿ//ýÿ?´Â??Oþþ¿Õÿþ¿þþ?ô¿úÿŸóþÿïþïþÿ´µþ?o¯¿¿ß×ÿ ÿÏ¿¿Ÿ_??/Œöúÿ¿/ñ¿þÿ¯þ¯þÿ¿´© ??O¿¿Ïãÿôÿï¿¿¯þþ?˜÷_ïûÿï_ïýÿoþoýÿ´œþ?þ¯¿¿ïðÿçÿ Ï¿¿O??¥ù/¿úÿï?ýÿ/þ?ýÿ/µ ??_Ÿ¿¿ÏüÿÛÿß¿¿¯oþ?±ûŸúÿ¿íþÿïüýÿoµ„???þþ¿Õÿþ¿þO??¾üoïûÿßOë¿þÿ¯ü¿þÿ¯µ÷ /??oŸ¿¿ßÖÿ ß¿¿Ÿo??/Êþ?Ïûÿïéýÿoüþÿïµë??Oþ¿Öÿïþ¿þþ?ׯúÿ¯é?ýÿ/ü?ýÿ/¶Þþ?o¯¿¿ßÖÿ Ï¿¿_??ãïûÿÏ?çþÿïúýÿo¶Ò ??_¿¿ÏÖÿï¿¿¯þþ?ïƒOßûÿïoå¯þÿ¯ú¿þÿ¯¶Åþ?þþ¿ïÖÿþ¿O??ü…¿ÿÿüÿŸäïþÿúþÿï¶¹ /??_Ÿ¿¿ÏÖÿß¿¿Ÿo??/ˆ‡ýÿþÿ¿/ã/ýÿ?ú?ýÿ/·­??Oþþ¿ßÿ÷ÿþ¿þO??•ˆ_ïüÿÿï_áoýÿøýÿo·  /??o¯¿¿ßìÿëÿ Ï¿¿Ÿ_??/¡Š/¿úÿà¯þÿ¿ø¿þÿ¯·”??Oþ¿øÿßÿïþ¿þþ?­ŒŸúÿ¿Þïþÿøþÿï·‡þ?þ¯¿¿ïÖÿ Ï¿¿_??ºoïûÿßOß/ýÿ?ø?ýÿ/¸û ??_¿¿ÏÖÿß¿¿¯oþ?Æ?Ïûÿïþßoýÿöýÿo¸ïþ?þþ¿ïÖÿþ¿O??Ó‘Ÿúÿ¯ü߯þÿ¿ö¿þÿŸ¸â /??oŸ¿¿ßÖÿ ß¿¿Ÿo??/ß’ïûÿß?úßïþÿöþÿ߸Ö??Oþþ¿Õÿþ¿þþ?ì”?ßûÿïoøà/ýÿ?öOýÿ¹Éþ?o¯¿¿ßÖÿ Ï¿¿Ÿ_??ø–¿úÿŸ÷àoýÿõýÿ_¹½ ??O¿¿ÏÖÿï¿¿¯þþ?„˜úÿ¿?õà¯þÿ¿ôÏþÿŸ¹°þ?þ¯¿¿ïÜÿûÿ Ï¿¿O??‘™_ßûÿï_óàßþÿôþÿß¹¤ /??_Ÿ¿¿Ïèÿïÿß¿¿¯oþ?›/¿úÿòáýÿ?ôOýÿº˜þ?þþ¿ôÿâÿþ¿þO??ªúÿ¿ðá_ýÿôýÿ_º‹ /??oŸ¿¿ßÖÿ ß¿¿Ÿ_??/¶žoïûÿßOîáŸþÿÏòÏþÿŸºÿ??Oþ¿Öÿïþ¿þþ?à?Ïúÿíáßþÿòþÿߺòþ?o¯¿¿ïÖÿ Ï¿¿_??Ï¢Ÿúÿ¯ëâýÿOòOýÿ»æ ??_¿¿ÏÖÿï¿¿¯oþ?Û£ïûÿß?éâ_ýÿ?òŸýÿ_»Ùþ?þþ¿ïÖÿþ¿O??è¥?ßûÿïçâŸýÿÏôüÿŸ»Í /??_Ÿ¿¿ßÖÿ ß¿¿Ÿo??/ô§¯úÿŸæâßüÿÏö_ûÿß»Á??Oþþ¿Õÿþ¿þO??©úÿÏ?äãúÿ¯÷Oùÿ¼´ /??o¯¿¿ßØÿÿÿ Ï¿¿Ÿ_??/ªOßûÿï_âã_ùÿŸù/ïùÿO¼¨??Oþ¿äÿóÿï¿¿¯þþ?™¬/¿úÿáãŸþÿïüÿû/ïýÿ¿ßþÿ¼›þ?þ¯¿¿ïñÿæÿ Ï¿¿_??¦®úÿ¿/ßãßþÿ_üÿ_ýÏýÿÏŸþÿϼ ??_Ÿ¿¿ÏýÿÚÿß¿¿¯oþ?²¯_ïûÿßOÝäýÿOŸüÿOÏýÿß_ýÿ½ƒ?ÿ?þþ¿ïÖÿþ¿O??¿±?ÏúÿÜäOýÿŸýÿï/¯ýÿï/ýÿO½ö /??oŸ¿¿ßÖÿ ß¿¿Ÿo??/˳Ÿúÿ¯ÚäþÿÏýÏýÿï¯ýÿï/ýßþÿ½ê??Oþ¿Öÿïþ¿þþ?Ø´ïûÿß?ØäÏþÿŸýÏøÿ_üŸþÿϽÝþ?o¯¿¿ßÖÿ Ï¿¿Ÿ_??ä¶?ßûÿïÖåýÿ_üïúÿ_û_ýÿ¾Ñ ??_¿¿ÏÖÿï¿¿¯þþ?ð¸¯úÿŸÕåOýÿû/ïüÿúýÿO¾Äþ?þ¯¿¿ïÖÿþ¿O??ýºúÿÏ?Óåþÿßú/ïüÿŸùßþÿ¾¸ /??_Ÿ¿¿ÏÖÿß¿¿¯o??/‰»OßûÿïoÑåÏþÿŸû/ïúÿoúŸþÿϾ¬??Oþþ¿àÿöÿþ¿þO??–½¿úÿÐæýÿ_üÏøÿ_û_ýÿ¿Ÿ /??oŸ¿¿ßíÿêÿ ß¿¿Ÿ_??/¢¿úÿ¿/ÎæOýÿýÏýÿïŸüÿ?üýÿO¿“??Oþ¿ùÿÞÿïþ¿þþ?®À_ïûÿß_Ìæþÿßü¯ýÿï/Ÿýÿï/üßþÿ¿†þ?o¯¿¿ïÖÿ Ï¿¿_??»Â?¿úÿËæÏþÿŸýŸüÿ/ÏýÿïýŸþÿ¿¿ú ??_¿¿ÏÖÿï¿¿¯oþ?ÇÄŸúÿ¿Éçýÿ_þüÿ_ýÏýÿÏþ_ýÿ¿îþ?þþ¿ïÖÿþ¿O??ÔÅoïûÿß?ÇçOýÿ_üÿ_ûïýÿÏþ/ýÿ?Àá /??_Ÿ¿¿ßÖÿ ß¿¿Ÿo??/àÇ?ßûÿïÅçþÿßOüÿŸù/ïýÿŸþïþÿÀÕ??Oþþ¿Õÿþ¿þþ?íɯúÿŸÄç¿þÿŸ/ïýÿŸ÷?üÿŸ¯þÿ¿ÀÈ /??o¯¿¿ßÖÿ Ï¿¿Ÿ_??/ùËïûÿÏ?Âçýÿo/ïýÿÏõ_üÿ_oýÿÀ¼ ??O¿¿ÏÖÿï¿¿¯þ?…ÌOßûÿïoÀè?ýÿ?ÏýÿÏôoüÿ_/ýÿ?Á¯þ?þ¯¿¿ïÝÿúÿ Ï¿¿O??’οúÿŸ¿èýÿÏýÿïòŸüÿ/ïþÿÁ¥Þ?????£?_Ÿ¿¿ßæÿîÿß¿_??šÐúÿ¿/½è¿ùÿï/ð¯ýÿïßþÿ¿Ì/¯ø¿¥¿ïÞÿÿÿÿÿÿéÿïœÑ_ïûÿï_»èøÿ/ïÏøÿÎöÿÿÿÿÿÿÿçÿßOÓ/¿úÿºé?ùÿ_íÏùÿ?ÐOßõÿÿÿÿÿÿÿåÿ¯ŸÕŸúÿ¿¸éúÿ_ë/ïúÿÒ¿óÿÿÿÿÿÿÿäÿï ÖoïûÿßO¶é¿ûÿŸé/ïûÿ¿Óúÿ¯ŸûÿÿÿáŸñÿáŸôÿŸåýïúÿ¯ŸúÿŸáŸúÿ/¯úÿà/¿óÿá/¿öÿŸáŸóÿŸâŸúÿ/¿ûÿïà/¿øÿß?áŸúÿoïûÿ¿ùé¿ûÿÿïûÿ¿á¿öÿß?áŸüÿÿÿßûÿß?áŸúÿïûÿ¿á/¿ûÿÿïûÿ¿óóûÿïßûÿß?¢Ø?Ïûÿï´éûÿŸçOúÿÕ?ßûÿßOþ/Ïýÿÿÿï_ãoïûÿ¿//Ïûÿï_ãoïûÿßúÿçþOßûÿß?þ/¿ûÿïoãoïûÿ¿/þOßûÿß?äúÿ¯Oßûÿß?äúÿßûÿïoãoïûÿ¿//¿ûÿïoãoïûÿ¿/þOßûÿß?äôÿ¯ä_ïûÿÏ/þ¯úÿûëúÿ¯¯úÿåúÿ¿úÿ¯ä_ïûÿÏ/úÿ¯ä_ïûÿÏ/þ¯úÿäúÿŸ¯úÿôô?ßûÿ¯úÿŸ¤Ú¯úÿ¯³ê?üÿÏå_ûÿ?دúÿûoïÿÿýÿ¿/ç?Ïûÿï_ýoïûÿ¿/ç?Ïûÿï_?ßûÿßOè¯úÿú_ïûÿÏ/ç/Ïûÿïoûúÿ¯çOßûÿß?þûÿÿ¯çOßûÿß?_ïûÿÏ/ç/Ïûÿïoý_ïûÿÏ/ç/ÏûÿïoûúÿŸçOïûÿÏO¿ûÿïoç/¿ûÿïoú?ßûÿßOüìOßûÿß?ý?ßûÿßOçOßûÿß?¿ûÿïoç/¿ûÿïoý¿ûÿïoç/¿ûÿïoúOßûÿß?çOßûÿß?ýOßûÿß?ööûÿïOü/¿ûÿïo¥ÛïûÿÏ?±êýÿÏäüÿÙoïûÿ¿ø¯ÿûÿëúÿûŸúÿëúÿþúÿ¯êïûÿ¿øŸúÿëúÿŸø¿ûÿïoê¿ûÿïú¿ýÿÿÿïoê¿ûÿïýŸúÿëúÿŸûŸúÿëÿÿüÿŸø/¿ûÿïoê¿ûÿïþ_ïûÿÏ?ëúÿŸ÷úÿ¯þî¯úÿùúÿ¯ë¯úÿü_ïûÿÏ?ëúÿŸû_ïûÿÏ?ëúÿŸøúÿ¯ë¿ûÿïúúÿ¯ø÷?ßûÿ¯ù_ïûÿÏ/§ÝOßûÿïo¯ê¿þÿïâŸýÿ¯Û?Ïûÿï_ô?ßûÿßOí_ïûÿÏ?÷?ßûÿßOí_ïûÿÏ?ú¿ûÿïí?ßûÿïOô?Ïûÿï_íOïûÿÏ?ô_ïûÿÏ?íïûÿ¿÷_ïÿÿýÿÏ?íïûÿ¿ú?Ïûÿï_íOïûÿÏ?÷?Ïûÿï_íOïþÿþÿÏ?ô_ïûÿÏ/îúÿ¯üúÿŸîOßûÿß?ô¿ûÿïïïûÿ¿÷¿ûÿïíïûÿ¿úúÿŸîOßûÿß?þúúÿŸîOßûÿß?ô¿ûÿïoíúÿ¯÷¿ûÿïoùøûÿïOöŸúÿ©ß¿úÿŸ®êýÿoà¯þÿïÝŸúÿòïûÿ¿ñ/¿ûÿïoóïûÿ¿ñ/¿ûÿïoöOïûÿÏ?ñŸÿÿüÿñïûÿ¿ñ¿ûÿïñúÿŸñ?ßûÿßOôÿûÿŸñ?ßûÿßOöïûÿ¿ñ¿ûÿïóïûÿ¿ñ¿üÿÿïñŸúÿñ?ßûÿß?ø/Ïûÿï_ñ¿ûÿïðOßûÿß?ñ?ßûÿßOóOßûÿß?ñ?ßûÿßOö/Ïûÿï_ñ¿ûÿïüø/Ïûÿï_ñ¿ûÿïð_ïûÿÏ?ñ?ßûÿßOó_ïûÿÏ?ûú/Ïûÿ¯ó?Ïûÿï_ªáúÿ¿/¬ë/ýÿ/à?ýÿ/ß_ïûÿÏ?ðÿ¿ûÿïôúÿ¯ñ¿ûÿïôúÿ¯ôúÿŸôoïþÿþÿ¿/î¯úÿõúÿ¯î?Ïûÿï_ô¯úÿñ?Ïûÿï_ô¯úÿô¯úÿõúÿ¯ñ¯úÿõúÿ¯î?Ïûÿï_ô¯úÿõoïûÿ¿/ôúÿ¯îúÿŸõŸúÿñúÿŸõŸúÿóoïûÿ¿/ôúÿ¯ûöoïûÿ¿/ôúÿ¯îúÿŸõ¯úÿñúÿŸýûûÿïOïoïûÿ¿¬â_ïûÿï_ªëoýÿÞýÿoá/¿ûÿïoîýOßûÿß?÷Oßûÿß?íOßûÿß?÷Oßûÿß?ð/¿ûÿïo÷/¿üÿÿïoê?ßûÿß?÷?ßûÿß?êoïûÿ¿/÷oïûÿ¿/îoïûÿ¿/÷oïûÿ¿/ð?ßûÿß?÷?ßûÿß?í?ßûÿß?÷?ßûÿß?êïûÿ¿÷ïûÿ¿ò¯úÿø?ßûÿßOê/¿üÿÿïo÷oïûÿ¿/í/¿ûÿïo÷oïûÿ¿/ð¯úÿø?ßûÿßOùõ¯úÿø?ßûÿßOê/Ïûÿï_÷oïûÿ¿/í/Ïûÿï_þý/Ïûÿ¯í¯úÿ®ä/¿úÿ©ë¯þÿ¿Þ¿þÿ¯ãúÿ¯íüúÿ¯û¿ûÿïêúÿ¯û¿ûÿïìoïûÿ¿/ûúÿŸèúÿ¯û¯úÿè¯úÿû?Ïûÿï_ìÿ¯úÿû?Ïûÿï_íúÿ¯û¯úÿëúÿ¯û¯úÿé¯úÿû?ÏûÿïOî?ßûÿßOû¯úÿçoïþÿþÿÏ/û/ÏûÿïoéoïûÿÏ/û/Ïûÿïoì?ßûÿßOû¯úÿøó?ßûÿßOû¯úÿçoïûÿ¿/û?Ïûÿï_éoïûÿ¿/þûÿïOé?ßûÿß?¯æŸúÿ¿§ëïþÿÞþÿïäOßûÿß?ëú/¿ûÿïoýïûÿ¿ç/¿ûÿïoýïûÿ¿êŸúÿþOïûÿÏ?ä¿ûÿïýïûÿ¿ä?ßûÿßOþúÿëý?ßûÿßOþúÿê¿ûÿïýïûÿ¿ç¿ûÿïýïûÿ¿þç?ßûÿß?þŸúÿëïûÿ¿þoïûÿ¿äŸÿÿüÿúÿŸçŸúÿúÿŸéïûÿ¿þoïûÿ¿öñïûÿ¿þoïûÿ¿/ä¯úÿúÿç¯úÿ/Ïûÿ¯çúÿ¯±çoïûÿßO¥ì/ýÿ?Þ?ýÿ/ç¿ûÿïéø_ïûÿÏ??ßûÿßOã_ïûÿÏ??ßûÿßOæ?ÏûÿïO¿ûÿïâOïûÿÏ??ÏûÿïOàïûÿ¿_ïûÿÏ?éûïûÿ¿_ïûÿÏ?æOïûÿÏ??ÏûÿïOãOïûÿÏ??ÏûÿïOüæúÿ¯_ïûÿÏ/è¿ûÿï?Ïûÿï_à?ÏûÿïOOïûÿÏ?ã?ÏûÿïOOïûÿÏ?æ¿ûÿï?Ïûÿï_ôð¿ûÿï?Ïûÿï_à?ßûÿßO_ïûÿÏ?ã?ßûÿßûÿïOã¿ûÿï²é?Ïûÿï¤ìoýÿÜýÿoèïûÿ¿è÷óÿáóÿãïôÿ¯þáóÿÞ¿ôÿïoçú¿ôÿïoãóÿáóÿûä¿ôÿïoäOßôÿÝïõÿïßïõÿïâOßôÿóîOßôÿÝïõÿïoßïýÿûÿ¯àOïûÿÏ?´ëŸúÿ¯¢ì¯þÿ¿Ü¿þÿ¯ê?ßûÿßOæõ?Ï÷ÿ¿/Ý?Ï÷ÿ¿/à¯÷ÿß?üß/¿÷ÿÏ/ÚOß÷ÿ¯æøOß÷ÿ¯à/¿÷ÿÏ/Ý/¿÷ÿÏ/ùâOï÷ÿŸâ÷ÿÏ?Û¯÷ÿ¯Ý¯÷ÿ¯à÷ÿÏ?ñí÷ÿÏ?Ú¿÷ÿ¯Ý¿þÿüÿOÝúÿŸ¶ìïûÿß? ìïþÿÜþÿïì¯úÿåóùÿÙùÿÜoùÿ¯ûÝùÿ׿ùÿOä÷¿ùÿOÜùÿÙùÿ÷á¿ùÿOÞ_ùÿ¿ÙþùÿÙùÿÜ_ùÿ¿ïë_ùÿ¿ÖŸùÿÛ/Ïþÿüÿß?Ü/¿ûÿïo·î?ßûÿïoží/ýÿ?Ü?ýÿ/îoïûÿ¿/ãõ÷ÿÝ÷ÿßïøÿ¯üß÷ÿÚ¯øÿïoåø¯øÿïoß÷ÿÝ÷ÿùâ¿øÿïoá÷ÿÏ?Û¯÷ÿ¯Ý¯÷ÿ¯à÷ÿÏ?ñí÷ÿÏ?Ú¿÷ÿ¯Þüÿúÿ¯Üoïûÿ¿/¹ð¿úÿŸ/Ô?ÔŸø¿í¿Ïýÿö¿áÿoð?Ïûÿï_áö_ïõÿßOß_ïõÿßOâ?ÏõÿïoýàOßõÿïOÜïõÿÏ?çùïõÿÏ?âOßõÿïOßOßõÿïOúãôÿ¿/äOßôÿÝïõÿïßïõÿïâOßôÿóîOßôÿÝïõÿïoá/Ïûÿ¯¿ûÿïoÜŸúÿ»ý¯†ÿ½ÿ¯òúÿŸàø¿ûÿïoúÿ¯ã¿ûÿïoúÿ¯æŸúÿ_ïûÿÏ?â¿ûÿïïûÿ¿à?ßûÿß_Ÿúÿéû?ßûÿß_Ÿúÿæ¿ûÿïïûÿ¿ã¿ûÿïïûÿ¿üå?ßûÿß_Ÿúÿè¿ûÿï?Ïûÿï_à?ÏûÿïOOïûÿÏ?ã?ÏûÿïOOïûÿÏ?æ¿ûÿï?Ïûÿï_ôð¿ûÿï?Ïûÿï_à?ßûÿßO_ïûÿÏ?äûÿïOÿ_ïûÿÏ?Ü?ÏûÿïO¼þ…ÿ½ÿïó_ïûÿÏ?Þúúÿ¯¿ûÿïæúÿ¯¿ûÿïè_ïûÿÏ/úÿŸãúÿ¯¯úÿãŸúÿ?Ïûÿï_êýŸúÿ?Ïûÿï_èúÿ¯¯úÿåúÿ¯¯úÿýç¯úÿ?ßûÿïOêïûÿ¿þoïûÿ¿äŸÿÿüÿúÿŸçŸúÿúÿŸéïûÿ¿þoïûÿ¿öñïûÿ¿þoïûÿ¿ä¯úÿúÿè/Ïûÿ¯þúÿÜïûÿ¿¾þ…ÿ¼ÿö¿ûÿïoÜûOßûÿß?ûOßûÿß?éOßûÿß?ûOßûÿß?ì/¿ûÿïoû/Ïûÿï_æ?ßûÿßOûOßûÿß?æoïûÿ¿/ûoïûÿ¿ìþoïûÿ¿/ûoïûÿ¿ì?ßûÿßOûOßûÿß?é?ßûÿßOûOßûÿß?èoïûÿ¿ûïûÿ¿î?ßûÿßOû¯úÿçoïþÿþÿÏ/û/ÏûÿïoéoïûÿÏ/û/Ïûÿïoì?ßûÿßOû¯úÿøó?ßûÿßOû¯úÿçoïûÿ¿/û?Ïûÿï_êûÿïOþü?Ïûÿï_ܯúÿ¿þï…ÿ¼ÿ_øúÿ¯Ûý¯úÿøúÿŸí¯úÿøúÿŸðúÿŸøoïüÿÿ¿/ê¯úÿùúÿ¯ê/Ïûÿï_ø¯úÿî/Ïûÿï_ø¯úÿð¯úÿùúÿ¯í¯úÿùúÿ¯ê?Ïûÿï_ø¯úÿñ¯úÿø?ßûÿßOê/¿üÿÿïo÷oïûÿ¿/í/¿ûÿïo÷oïûÿ¿/ð¯úÿø?ßûÿßOùõ¯úÿø?ßûÿßOê/Ïûÿï_÷oïûÿ¿/î/Ïûÿ¯ýúoïûÿ¿/ÜOßûÿß?Áÿ_„ÿ¼ÿŸùOßûÿß?Ùþïûÿ¿õ/¿ûÿïoïïûÿ¿õ/¿ûÿïoòOßûÿß?õŸýÿþÿíoïûÿ¿õ¿ûÿïoíúÿŸõ?ßûÿßOðúÿŸõ?ßûÿßOòoïûÿ¿õ¿ûÿïoïoïûÿ¿õ¿ûÿïoíúÿõOßûÿß?ôoïûÿ¿/ôúÿ¯îúÿŸõŸúÿñúÿŸõŸúÿóoïûÿ¿/ôúÿ¯ûöoïûÿ¿/ôúÿ¯îúÿŸõ¯úÿñûÿïOûù¯úÿÝúÿ¯Ãÿ¿„ÿ¼ÿßû¯úÿ×?ßûÿïOñ_ïûÿÏ/ó?ßûÿïOñ_ïûÿÏ/ö¿ûÿïñ?ßÿÿýÿßOð?Ïûÿï_ñ_ïûÿÏ?ðOïûÿÏ?ñúÿ¯óOïûÿÏ?ñúÿ¯ö?Ïûÿï_ñ_ïûÿÏ?ó?Ïûÿï_ñ_ïüÿÿÏ?ð_ïûÿÏ?òúÿ¯ø/Ïûÿï_ñ¿ûÿïðOßûÿß?ñ?ßûÿßOóOßûÿß?ñ?ßûÿßOö/Ïûÿï_ñ¿ûÿïüø/Ïûÿï_ñ¿ûÿïð_ïûÿÏ?ñ?ßûÿßOô/Ïûÿ¯ú÷?ßûÿßOÜ¿ûÿïoÄ/ƒÿ»ÿýïûÿ¿×ŸúÿïŸúÿ÷ŸúÿïŸúÿùúÿ¯îïûÿ¿ôŸúÿïúÿŸô¿ûÿïî¿ûÿïö¿ÿÿýÿïî¿ûÿïùŸúÿïúÿŸ÷ŸúÿïýÿþÿŸô/¿ûÿïoî¿ûÿïoûúÿŸîOßûÿß?ô¿ûÿïïïûÿ¿÷¿ûÿïíïûÿ¿úúÿŸîOßûÿß?þúúÿŸîOßûÿß?ô¿ûÿïoíúÿ¯÷ûÿïOøõúÿ¯Ü_ïûÿÏ?ÆŸƒÿ»ÿ_?ßûÿßOÖoïûÿ¿/ë?Ïûÿï_ùoïûÿ¿/ë?Ïûÿï_ü?ßûÿßOë¿úÿö_ïûÿÏ?ë/Ïûÿï_÷úÿ¯ëOßûÿß?úýÿþÿ¯ëOßûÿß?ü_ïûÿÏ?ë/Ïûÿï_ù_ïûÿÏ?ë/Ïÿÿýÿï_÷úÿ¯ë_ïûÿÏ?þ_ïûÿÏ?ëúÿŸ÷úÿ¯þî¯úÿùúÿ¯ë¯úÿü_ïûÿÏ?ëúÿŸû_ïûÿÏ?ëúÿŸøúÿ¯ë¿ûÿïú/Ïûÿ¯÷ô¿ûÿïÜúÿŸÈïƒÿ»ÿŸŸúÿ×/¿ÿÿýÿïoçïûÿ¿ý/¿ûÿïoçïûÿ¿¯úÿéOßûÿß?ú/¿ûÿïoçoïûÿ¿/ú?ßûÿß?èúÿŸý?ßüÿÿß?èúÿŸ/¿ûÿïoçoïûÿ¿/ý/¿ûÿïoçoïûÿ¿/úOßûÿß?èúÿŸ/¿ûÿïoç/¿ûÿïoú?ßûÿßOüìOßûÿß?ý?ßûÿßOçOßûÿß?¿ûÿïoç/¿ûÿïoý¿ûÿïoç/¿ûÿïoúOßûÿß?çOßûÿß?ýûÿïOõòOßûÿß?Ü/Ïûÿï_É_‚ÿ»ÿÿïûÿ¿/×ýÿþÿŸå¯úÿúÿŸå¯úÿŸïûÿ¿/çÿúÿ¯þúÿ¯å¯úÿþ¯úÿå/¿ûÿïo¯úÿå/¿ûÿïŸúÿ¯å¯úÿúÿ¯å¯úÿþ¿ûÿïä/Ïôÿ¯ä_ïûÿÏ/þ¯úÿûëúÿ¯¯úÿåúÿ¿úÿ¯ä_ïûÿÏ/úÿ¯ä_ïûÿÏ/þ¯úÿäúÿŸ/Ïûÿ¿ôñúÿŸÜoïûÿ¿/Ëß‚ÿ´ÿ¯Ö?_ïüÿÿïá?úÿßïûÿïá?ôÿŸå?ý?oïûÿïo?_ßúÿá?úÿß_?ïûÿï_á?¯úÿßïûÿï_á?¯ôÿá?úÿÿßúÿâ??úÿß_?ïûÿï_á?¯öÿá?Oßúÿ?oïûÿï_ù?é?_ïûÿÿïûÿï_á?_ïõÿá?Oßüÿÿÿßúÿá?Oßúÿ?ïûÿï_á?oïûÿïúÿ¯ò?ï?oïûÿïoÜ?OßúÿÍÿÿÿÿÿÿÿÿµÿ?ÎÿÿÿÿÿÿÿÿµÿÎÿÿÿñÿï’ÿÿÿÿÿµÿÎÿÿÿñÿ¿“ÿÿÿÿÿ¶ÿ¯Îøãÿ?©ïËÿ?ʼýÿ?Ìøãÿ?©ïËÿ?ʼ?ýÿÌøãÿ?©ïËÿ?ʼþÿßËøãÿ?©ïËÿ?ʼŸþÿ¿Ëøãÿ?©ïËÿ?ʼ¿þÿËøãÿ?©ïËÿ?ʼýÿ_Ëøãÿ?©ïËÿ?ʽýÿ?Ëøãÿ?©ïËÿ?ʽ?ýÿÊøãÿ?©ïËÿ?ʽþÿßÊøãÿ?©ïËÿ?ʽŸþÿ¿Êøãÿ?©ïËÿ?ʽ¿þÿÊøãÿ?©ïËÿ?ʽýÿ_Êøãÿ?©ïËÿ?ʾýÿ?Êøãÿ?©ïËÿ?ʾ?ýÿÉøãÿ?©ïËÿ?ʾþÿßÉøãÿ?©ïËÿ?ʾŸþÿ¿Éøãÿ?©ïËÿ?ʾ¿þÿÉøãÿ?©ïËÿ?ʾýÿ_Éøãÿ?©ïËÿ?Ê¿ýÿ?Éøãÿ?©ïËÿ?Ê¿OýÿÈøãÿ?©ïËÿ?Ê¿þÿßÈøßäÿ/©ïËÿ?Ê¿¯þÿ¿ÈøŸåÿߨïËÿ?Ê¿ÏþÿÈøïæÿO¨ïËÿ?Ê¿ýÿ_È÷/ßéÿï_§ïËÿ?ÊÀ/ýÿ?Èõ/ê?¥ïËÿ?ÊÀOýÿÇïËÿ?ÊÀþÿßÇïçÿÏŸçÿ?ÊÀ¯þÿ¿ÇïèÿÏŸèÿ?ÊÀÏþÿÇïéÿÏþŸéÿ?ÊÀýÿOÇïêÿÏüŸêÿ?ÊÁ/ýÿ/ÇïëÿÏúŸëÿ?ÊÁOýÿÆïìÿÏøŸìÿ?ÊÁþÿÏÆïíÿÏöŸíÿ?ÊÁ¯þÿ¯ÆïîÿÏôŸîÿ?ÊÁÏþÿÆïïÿÏòŸïÿ?ÊÁýÿOÆïðÿÏðŸðÿ?ÊÂ/ýÿ/ÆïñÿÏîŸñÿ?ÊÂOýÿÅïòÿÏìŸòÿ?ÊÂþÿÏÅïóÿÏêŸóÿ?ʯþÿ¯ÅïôÿÏèŸôÿ?ÊÂÏþÿÅïõÿÏæŸõÿ?ÊÂýÿOÅïöÿÏäŸöÿ?ÊÃ/ýÿ/Åï÷ÿÏâŸ÷ÿ?ÊÃOýÿÄïøÿÏàŸøÿ?ÊÃþÿÏÄïùÿÏÞŸùÿ?Êÿþÿ¯ÄïúÿÏÜŸúÿ?ÊÃßþÿÄïûÿÏÚŸûÿ?ÊÃýÿOÄïüÿÏØŸüÿ?ÊÄ?ýÿ/ÄïýÿÏÖŸýÿ?ÊÄ_ýÿÃïýÿ?Ôýÿ?ÊÄþÿÏÃïýÿÏÖ_ýÿ?ÊÄ¿þÿ¯ÃïüÿÏØ_üÿ?ÊÄßþÿÃïûÿÏÚ_ûÿ?ÊÄýÿOÃïúÿÏÜ_úÿ?ÊÅ?ýÿÃïùÿÏÞ_ùÿ?ÊÅ_ýÿÂïøÿÏà_øÿ?ÊÅþÿ¿ÂïýÿŸüÿÏâ_üÿÏýÿ?ÊÅ¿þÿŸÂïýÿ?_üÿÏä_üÿÏýÿ?ÊÅßþÿÂïýÿ?_üÿÏæ_üÿÏýÿ?ÊÅýÿ?Âïýÿ?_üÿÏè_üÿÏýÿ?ÊÆ?ýÿÂïýÿ?þ_üÿÏê_üÿÏþýÿ?ÊÆ_ýÿÁïýÿ?ý_üÿÏì_üÿÏýýÿ?ÊÆþÿ¿Áïýÿ?ü_üÿÏî_üÿÏüýÿ?ÊÆ¿þÿŸÁïýÿ?û_üÿÏð_üÿÏûýÿ?ÊÆßþÿÁïýÿ?ú_üÿÏò_üÿÏúýÿ?ÊÆýÿ?Áïýÿ?ù_üÿÏô_üÿÏùýÿ?ÊÇ?ýÿÁïýÿ?ø_üÿÏö_üÿÏøýÿ?ÊÇ_ýÿÀïýÿ?÷_üÿÏø_üÿÏ÷ýÿ?ÊÇþÿ¿Àïýÿ?ö_üÿÏú_üÿÏöýÿ?ÊÇ¿þÿŸÀïýÿ?õ_üÿÏü_üÿÏõýÿ?Êð/??•ÇßþÿÀïýÿ?ô_üÿÏþ_üÿÏôýÿ?Êú/?O¯¿Ïýÿß•Èýÿ?Àïýÿ?ó_üÿÏ_üÿÏóýÿ?Ê„?Oÿ¯¿Ïóÿ¿•È?ýÿÀïýÿ?ò_üÿÏoüÿÏòýÿ?ÊŽ??Ÿ¿¿üÿîÿ¿•Èoýÿ¿ïýÿ?ñ_÷ÿÏñýÿ?Ê—/?Ÿ¿¿òÿîÿ•Èþÿ¿¿ïýÿ?ð_ùÿÏðýÿ?Ê—ßìÿîÿ•È¿þÿŸ¿ïýÿ?ï_ûÿÏïýÿ?Ê—ëÿîÿ•Èïþÿ¿ïýÿ?ï_ûÿÏïýÿ?Ê—ëÿîÿO•Éýÿ?¿ïýÿ?ð_ùÿÏðýÿ?ʘ/ëÿîÿ?•É?ýÿ¿ïýÿ?ñ_÷ÿÏñýÿ?ʘ?ëÿîÿ?•Éoýÿ¾ïýÿ?ò_üÿÏoüÿÏòýÿ?ʘ?ëÿîÿ”Éþÿ¿¾ïýÿ?ó_üÿÏ_üÿÏóýÿ?ʘoëÿîÿ”É¿þÿ¾ïýÿ?ô_üÿÏþ_üÿÏôýÿ?ʘëÿïÿï”Éïþÿo¾ïýÿ?õ_üÿÏü_üÿÏõýÿ?ʘëÿïÿ¿”Êýÿ?¾ïýÿ?ö_üÿÏú_üÿÏöýÿ?ʘ¿ëÿïÿ¿”Ê?ýÿ¾ïýÿ?÷_üÿÏø_üÿÏ÷ýÿ?ʘ¿ëÿïÿ¯”Êoþÿï½ïýÿ?ø_üÿÏö_üÿÏøýÿ?ʘÏëÿïÿ”Êþÿ¿½ïýÿ?ù_üÿÏô_üÿÏùýÿ?ʘêÿïÿ”Ê¿þÿ½ïýÿ?ú_üÿÏò_üÿÏúýÿ?ʘêÿïÿ_”Êïþÿo½ïýÿ?û_üÿÏð_üÿÏûýÿ?Ê™êÿïÿ?”Ëýÿ?½ïýÿ?ü_üÿÏî_üÿÏüýÿ?Ê™?êÿïÿ?”Ë?ýÿ½ïýÿ?ý_üÿÏì_üÿÏýýÿ?Ê™?êÿïÿ”Ëoþÿï¼ïýÿ?þ_üÿÏê_üÿÏþýÿ?Ê™_êÿïÿ“Ëþÿ¿¼ïýÿ?_üÿÏè_üÿÏýÿ?Ê™êÿïÿ“Ë¿þÿ¼ïýÿ?_üÿÏæ_üÿÏýÿ?Ê™êÿðÿÏ“Ëïþÿo¼ïýÿ?_üÿÏä_üÿÏýÿ?Ê™Ÿêÿðÿ¿“Ìýÿ?¼ïýÿŸüÿÏâ_üÿÏýÿ?Ê™¿êÿðÿ¿“Ì?ýÿ¼ïøÿÏà_øÿ?Ê™¿êÿðÿ“Ìþÿï»ïùÿÏÞ_ùÿ?Ê™ïêÿðÿ“ÌŸþÿ¿»ïúÿÏÜ_úÿ?Ê™éÿðÿo“Ì¿þÿ»ïûÿÏÚ_ûÿ?Ê™éÿðÿ?“Ìýÿo»ïüÿÏØ_üÿ?Êš?éÿðÿ?“Íýÿ?»ïüÿÏØ_üÿ?Êš?éÿðÿ/“Í?ýÿ»ïûÿÏÚ_ûÿ?Êš?éÿðÿ’ÍþÿïºïúÿÏÜ_úÿ?Êšéÿðÿ’ÍŸþÿ¿ºïùÿÏÞ_ùÿ?Êšéÿñÿß’Í¿þÿºïøÿÏà_øÿ?Êí ??Ÿ¿¿ÿ?Ÿšéÿñÿ¿’Íýÿ_ºïýÿŸüÿÏâ_üÿÏýÿ?Ê÷??o¿¿öÿŸš¿éÿñÿ¿’Îýÿ?ºïýÿ?_üÿÏä_üÿÏýÿ?Ê??o¿¿ïíÿžš¿éÿñÿŸ’Î?ýÿ¹ïýÿ?_üÿÏæ_üÿÏýÿ?Ê‹ ??o¿¿ïÿäÿžšÏéÿñÿ’Îþÿß¹ïýÿ?_üÿÏè_üÿÏýÿ?Ê”ÿ?_¿¿ïöÿäÿžšèÿñÿ’Οþÿ¿¹ïýÿ?þ_üÿÏê_üÿÏþýÿ?Ê/_¿¿ßìÿäÿžšèÿñÿO’οþÿ¹ïýÿ?ý_üÿÏì_üÿÏýýÿ?Êïæÿäÿž›èÿñÿ?’Îýÿ_¹ïýÿ?ü_üÿÏî_üÿÏüýÿ?Êž_åÿäÿž›?èÿñÿ?’Ïýÿ?¹ïýÿ?û_üÿÏð_üÿÏûýÿ?Êž¯åÿåÿïž›?èÿñÿ‘Ï?ýÿ¸ïýÿ?ú_üÿÏò_üÿÏúýÿ?ÊŸäÿåÿ¿ž›oèÿñÿ‘Ïþÿïú?Àïýÿ?ù_üÿÏô_üÿÏùýÿ?ÊŸoäÿåÿ¿ž›èÿñÿ‘Ô?¿ßóÿß¿Ÿ?Èïýÿ?ø_üÿÏö_üÿÏøýÿ?ÊŸÏäÿåÿ¿ž›èÿòÿ¿‘Ù_¿æÿ߯oÌïýÿ?÷_üÿÏø_üÿÏ÷ýÿ?Ê /ãÿåÿ¿ž›¯èÿòÿ¿‘Ý_ŸßÞÿß/Ïïýÿ?ö_üÿÏú_üÿÏöýÿ?Êî??Ÿ¿¿/¼ãÿåÿ¿ž›¿èÿòÿ¯‘à/Ï×ÿßoÒïýÿ?õ_üÿÏü_üÿÏõýÿ?Êø??Ÿ¿¿÷ÿo¼ßãÿåÿ¿ž›¿èÿòÿ‘ãßÑÿŸÔïýÿ?ô_üÿÏþ_üÿÏôýÿ?Ê‚ÿ?o¿¿ïîÿ½Oâÿåÿ¿ž›çÿòÿ‘å_¿ÌÿŸÖïýÿ?ó_üÿÏ_üÿÏóýÿ?ÊŒ ??o¿¿ïÿÿæÿ¿½Ÿâÿåÿž›çÿòÿ_‘èïÈÿØïýÿ?ò_üÿÏoüÿÏòýÿ?Ê–??o¿¿ïõÿåÿ¾áÿåÿž›çÿòÿ?‘êŸÄÿß?Ùïýÿ?ñ_÷ÿÏñýÿ?Êž?_¿¿ïëÿåÿ¿_áÿåÿžœ?çÿòÿ?‘ìŸÀÿÛïýÿ?ð_ùÿÏðýÿ?ÊŸ?äÿåÿO¿¿áÿåÿžœ?çÿòÿ‘î½ÿÏÜïýÿ?ï_ûÿÏïýÿ?ÊŸ_äÿåÿÀàÿåÿžœOçÿòÿïoï»ÿï/Ýïýÿ?ï_ûÿÏïýÿ?ÊŸäÿåÿ¯Ààÿåÿžœçÿòÿ² ??Ÿ¿¿ÿÏêñ?Ï·ÿ_Þïýÿ?ð_ùÿÏðýÿ?ÊŸ¯äÿåÿßÀßàÿåÿžœçÿóÿϼ??Ÿ¿¿÷ÿïéó´ÿ_ßïýÿ?ñ_÷ÿÏñýÿ?ÊŸ¿äÿäÿÂ?ßÿåÿ_žœŸçÿóÿ¿Æ??o¿¿íÿ/èô?ß²ÿ_àïýÿ?ò_üÿÏoüÿÏòýÿ?ÊŸãÿäÿ?Ÿßÿåÿ?žœ¿çÿóÿ¿Ð??o¿¿ïåÿ_çõ¯ÿ?áïýÿ?ó_üÿÏ_üÿÏóýÿ?Ê ãÿäÿoÂïßÿåÿ?žœ¿çÿóÿÚ??o¿¿ïÜÿæ÷Ï®ÿï/âïýÿ?ô_üÿÏþ_üÿÏôýÿ?Ê ?ãÿäÿŸÃ_Þÿåÿ?žœßçÿóÿÝïÓÿŸåø?ï¬ÿÏãïýÿ?õ_üÿÏü_üÿÏõýÿ?Ê _ãÿäÿ¿Ã¯Þÿåÿ?žœæÿóÿݯÓÿÏåùo©ÿãïýÿ?ö_üÿÏú_üÿÏöýÿ?Ê£þ?õO??ó ãÿãÿÄÝÿåÿ?žœæÿóÿ?ÞOÓÿïäúŸ§ÿ?äïýÿ?÷_üÿÏø_üÿÏ÷ýÿ?Ê«?o¿¿ïëÿ￟Oú ¯ãÿãÿ/ÅoÝÿåÿ?ž/æÿóÿ?ßïÔÿï/ãü¿¦ÿßåïýÿ?ø_üÿÏö_üÿÏøýÿ?ʰ/_¿ïÞÿï¿O ÏãÿãÿOÅÏÝÿåÿ?ž?æÿóÿ/ß¿Óÿ_âýϤÿåïýÿ?ù_üÿÏô_üÿÏùýÿ?Ê´?¿ïÔÿÏ/¡âÿãÿÆ/Üÿåÿ?æÿóÿßoÓÿoáþÏ¢ÿæïýÿ?ú_üÿÏò_üÿÏúýÿ?ʸo¯ïÎÿÿïŸO¥âÿãÿ¿ÆÜÿåÿoæÿóÿàïÔÿŸàÿÏ¡ÿŸæïýÿ?û_üÿÏð_üÿÏûýÿ?Ê»/ßÊÿýÿߨ?âÿãÿ߯ïÜÿåÿæÿôÿßà¿ÔÿÏßÏŸÿçïýÿ?ü_üÿÏî_üÿÏüýÿ?ʾ/ßÇÿúÿ¿_ªoâÿâÿÈOÛÿåÿæÿôÿ¿áoÔÿßßÏžÿçïýÿ?ý_üÿÏì_üÿÏýýÿ?ÊÁoÏÄÿøÿßo­âÿâÿ?ȯÛÿåÿ¿æÿôÿ¿âïÕÿï/ßÏÿïçïýÿ?þ_üÿÏê_üÿÏþýÿ?ÊÃ?ŸÁÿöÿﯿâÿâÿÉÚÿåÿ¿æÿôÿŸâÏÔÿ?ÞÏ›ÿ_èïýÿ?_üÿÏè_üÿÏýÿ?ÊÅ_ß¿ÿôÿï_°ÏâÿâÿŸÉ_ÚÿåÿÏæÿôÿãÔÿ_ÞŸÿ›ÿ¯èïýÿ?_üÿÏæ_üÿÏýÿ?ÊÈï½ÿòÿß?²áÿâÿÏÉÏÚÿæÿÏëý?_õü?Êåÿôÿä/ÔÿŸÞÿÿšÿéïýÿ?_üÿÏä_üÿÏýÿ?ÊÊï»ÿðÿ¯µáÿáÿÊÙÿæÿ¿õ?_¿¿ïåÿß¿¿_?ÕåÿôÿOäÏÕÿ¿ÞOþÿšÿOéïýÿŸüÿÏâ_üÿÏýÿ?ÊÌï¹ÿïÿïO¶?áÿáÿ/ËÙÿæÿ¿û?Ÿ¿Óÿß¿o?Üåÿôÿ?åÕÿÏßïþÿšÿŸéïøÿÏà_øÿ?ÊÍ_ï·ÿíÿ¯¸áÿáÿ_ËßÙÿæÿ¿O¿ïÈÿ߯?à?åÿôÿ?æ/Õÿï/ßÏýÿÔÿï¿Oþ?OŸßÓÿßéïùÿÏÞ_ùÿ?ÊÏ?ßµÿìÿß/¹áÿáÿÌ?Øÿæÿ¿ _ŸßÁÿ?à?åÿôÿæßÕÿ/Þüÿ×ÿ¿o/õïÕÿêïúÿÏÜ_úÿ?Êѯ³ÿêÿoº¿áÿáÿ¿ÌŸâÿoøÿæÿ¿£?ÏþÿÀÿ?à_åÿôÿæÕÿ_ÞOûÿÚÿßoðÖÿ?êïûÿïÚûÿ?ÊÒï²ÿéÿŸ¼ßáÿáÿïÍïãÿ¯øÿæÿ¿¦OŸïûÿÀÿ/àåÿôÿç?ÕÿÞïûÿÜÿß_ëOïØÿêïúÿŸÛ/ïûÿ?ÊÔ/ϰÿèÿϽàÿàÿÎ_âÿ_øÿæÿ¯©OŸïøÿÀÿßåÿõÿ¿èßÖÿ¯Ý¯úÿÞÿï_è/ØÿŸêïùÿŸÝ/ïúÿ?ÊÕ®ÿçÿÏ/¿/àÿàÿ?ίâÿŸøÿæÿ¬ïõÿÀÿߟåÿõÿ¿èÖÿÏÞOùÿßÿ¯æoÙÿ¿êïøÿŸß/ïùÿ?Ê×/Ï­ÿæÿï/À?àÿàÿÏâÿ¿¿øÿæÿ®_¿òÿÁÿßß¿åÿõÿ¯é?ÖÿïÞïùÿáÿï_ã¿ÚÿïêïýÿÏüÿŸá/ïýÿÏýÿ?ÊØ_ï¬ÿåÿï/Áàÿàÿ¯Ïoâÿo¿øÿæÿ±ïðÿÁÿ¿ß¿åÿõÿêï×ÿï/Ýøÿâÿß/â_Ùÿêïýÿ?ŸüÿŸã/ïýÿÏýÿ?ÊÚŸªÿäÿï/ÂàÿàÿÏÏßâÿßøÿæÿ³ŸíÿÁÿ¿ßïåÿõÿê¯Öÿ_Ý?÷ÿãÿÏàïÚÿêïýÿ?ŸüÿŸå/ïýÿÏýÿ?ÊÛ/Ï©ÿãÿï/ÿàÿßÿÐ/âÿÏ÷ÿæÿµŸëÿÁÿŸßäÿõÿ_ëOÖÿÜ¿÷ÿäÿÏß¿Úÿëïýÿ?ŸüÿŸç/ïýÿÏýÿ?ÊÜOï¨ÿâÿßÄïàÿßÿ?ÑŸâÿ÷ÿæÿ·ŸéÿÁÿßäÿõÿ?ìï×ÿŸÜ_öÿåÿÏÞÚÿ?ëïýÿ?þŸüÿŸé/ïýÿÏþýÿ?ÊÝo¦ÿáÿÏÅßÿßÿ_Ñïâÿ//÷ÿæÿ¹ïèÿÁÿà?äÿõÿ?ì¯×ÿÏÛßöÿæÿïÝÚÿ?ëïýÿ?ýŸüÿŸë/ïýÿÏýýÿ?ÊÞŸ¥ÿàÿ¯Æ?ßÿßÿÒOâÿß?÷ÿæÿ?º_ïæÿÁÿOà?äÿõÿí_×ÿßÜoõÿæÿ/ÜÚÿ?ëïýÿ?üŸüÿŸí/ïýÿÏüýÿ?Ê࿤ÿßÿÇOßÿßÿ¿Ò¯âÿ?÷ÿæÿ?¼/¿äÿÁÿ?à?äÿõÿíïØÿï/ÜïõÿçÿoÛÚÿ?ëïýÿ?ûŸüÿŸï/ïýÿÏûýÿ?ÊáÏ£ÿÞÿOÈßÿŸßÿÓáÿ/o÷ÿæÿ?¾âÿÁÿ?àäÿõÿí¿×ÿOÛôÿèÿ¿ÚŸÚÿ/ëïýÿ?úŸüÿŸñ/ïýÿÏúýÿ?ÊâÏ¢ÿÞÿïÉŸàÿ¿ßÿÔoâÿßþ÷ÿæÿ?¿?ßáÿÁÿßäÿöÿÏîo×ÿ_ÚïôÿéÿïÚßÚÿêïýÿ?ùŸüÿŸó/ïýÿÏùýÿ?Êã/ï¡ÿÝÿÏÉ¿àÿ¿OßÿOÔÏâÿþ÷ÿæÿ?ÀßÿÁÿßäÿöÿ¿ïïØÿŸÚ_óÿéÿoÚ/Ùÿêïýÿ?øŸüÿŸõ/ïýÿÏøýÿ?Êä/ï ÿÜÿÊïàÿŸ/ßÿÕáÿOþ¿÷ÿæÿ?Â/ÏÞÿÂÿïß¿äÿöÿ¿ï¿Øÿ¿ÙßóÿêÿßÙŸÚÿßêïýÿ?÷ŸüÿŸ÷/ïýÿÏ÷ýÿ?Êå/ïŸÿÛÿ?Ëßÿßÿ¯Õâÿïý¿÷ÿæÿ?Ã_ïÝÿÂÿ¿ß¿äÿöÿðoØÿÏÚOòÿêÿ?Ú/Ùÿ¿êïýÿ?öŸüÿŸù/ïýÿÏöýÿ?ÊæßžÿÛÿÏÌ?ßÿoßàÿßÕßâÿŸý¿÷ÿæÿÄŸÛÿÂÿ¿ßÏäÿöÿñ/Øÿï/Ù¿òÿëÿ¿ÚÏÙÿêïýÿ?õŸüÿŸû/ïýÿÏõýÿ?ÊçÏÿÚÿÍ_ßÿ?¿ßÿÖOáÿOýï÷ÿæÿÅÏÚÿÂÿ¯ßãÿöÿñÏØÿ/ÙñÿëÿOÚ¯Øÿoêïýÿ?ôŸüÿŸý/ïýÿÏôýÿ?ÊèÏœÿÙÿÎßÿ?ßÿ?ןâÿïüöÿæÿÆ/ïÙÿÂÿßãÿöÿ?òØÿ_ØñÿìÿßÛ¯×ÿ/êïýÿ?óŸüÿŸ/ïýÿÏóýÿ?Ê诛ÿÙÿ¿Î¯ßÿßÿoØáÿŸüöÿæÿÇOïØÿÂÿàãÿöÿ?ó/Øÿ×ïñÿìÿoÜ/Ï×ÿïéïýÿ?òŸüÿŸ/ïýÿÏòýÿ?ÊéŸÁÿ￯þý?_Ÿ¿ïêÿØÿ?Ï¿ßÿ?ßÿØ_áÿOýöÿæÿÈ_ÖÿÂÿ_à?ãÿöÿ/óÏÙÿ¯×OðÿìÿÝoïÖÿ¯éïýÿ?ñŸ÷ÿÏñýÿ?Êê_ÄÿÏOñOÏîÿØÿßÏßÿßßÿ¿Ø¿âÿïü?öÿæÿÉoÕÿÂÿ?à?ãÿöÿóÙÿÏׯðÿíÿ¯Þ?ßÔÿ_éïýÿ?ðŸùÿÏðýÿ?Êë/Æÿ¿_éoßñÿ×ÿ_Ñßÿ¿ÿÞÿÙáÿ¯ü?öÿæÿÊŸÔÿÂÿ?àoãÿöÿô?Ùÿï×ïÿíÿ_à_ÏÒÿéïýÿ?ïŸûÿÏïýÿ?ÊìßÉÿïã?¿óÿ×ÿßÑ?ßÿ¯ÿÏßÿ/Úáÿ_ü_öÿçÿïËŸÓÿÂÿàãÿ÷ÿßõßÚÿï/Ö_ïÿíÿãïÑÿ¯èïýÿ?ï/ûÿŸîýÿ?Êì¯Êÿïß?¿õÿÖÿ_Ò_ßÿÿ¿ßÿOÚßáÿüöÿçÿ¿ÌŸÒÿÂÿßãÿ÷ÿ¿õÙÿ_Õ¯ïÿîÿÏå/ÏÎÿOèïýÿ?ð/ïúÿŸïýÿ?ÊíoËÿïÛOï÷ÿÖÿßÒßÿÿßÿÛ/áÿ¯ûöÿçÿ¿ÍÑÿÂÿ߯ãÿ÷ÿ¿ö?ÙÿÕîÿîÿé_ŸßÌÿßçïýÿ?ñ/ïøÿŸðýÿ?Êî/ïÌÿ¯Ø¯øÿÕÿ_Ó¯ßÿ?ÿoßÿ¿ÛŸáÿ_ûöÿçÿ¿Î_ÐÿÃÿ¿ß¿ãÿ÷ÿŸ÷ßÚÿŸÔOîÿîÿOí?oŸßÈÿ_çïýÿ?ò/ïýÿÏŸüÿŸñýÿ?ÊîÏÍÿïOÔoùÿÕÿÏÓÏßÿ?ÿ?ßÿßÛïáÿû¿öÿçÿ¿Ï_ÏÿÃÿ¿ß¿ãÿ÷ÿ÷ŸÚÿÏÔŸîÿîÿó?ŸÏÄÿßæïýÿ?ó/ïýÿÏŸüÿŸòýÿ?ÊïÍÿ¿Ò?ïûÿÔÿ?ÔÞÿÿÞÿÝ_áÿ¯ú¿öÿçÿ¿Ð/ÎÿûÿÏŸO??ü/??oØÿ¿ßâÿ÷ÿøOÚÿßÓßîÿîÿù/?o¿Ï¾ÿOæïýÿ?ô/ïýÿÏþŸüÿŸóýÿ?Êð/ÍÿÏ/ïüÿÔÿŸÕÞÿÿþÞÿ?ݯáÿ_ú¿öÿçÿ¿Ñ/ïÎÿÿÿßOò_Øÿßâÿ÷ÿOùïÛÿï/ÓíÿïÿÏ?o¿¿·ÿ¿åïýÿ?õ/ïýÿÏüŸüÿŸôýÿ?ÊðÏÎÿ_Í/ïýÿÓÿÖ?Þÿÿþ¿ßÿoÞàÿúïöÿçÿ¿ÒÏÍÿŸ?ïØÿßâÿ÷ÿ?ù¯ÚÿOÒ_íÿŸÿïåïýÿ?ö/ïýÿÏúŸüÿŸõýÿ?ÊñÏÿï/Ë/ýÿÓÿoÖoßÿ¿þŸßÿŸÞoáÿ¯ùõÿçÿÒ¯ÏÿïíØÿoà?âÿ÷ÿ?úOÚÿoÑŸíÿŸÿoäïýÿ?÷/ïýÿÏøŸüÿŸöýÿ?ÊòïÐÿï/É_þÿÓÿßÖßÿ¿þßÿÏÞÏáÿ_ùõÿçÿÓÏÿŸíØÿ?à?âÿ÷ÿúïÛÿŸÐßíÿ ÿ¯ãïýÿ?ø/ïýÿÏöŸüÿŸ÷ýÿ?Êò¯Ðÿï/ÇŸÿÿÒÿ/׿ßÿþOÞÿß/àÿúõÿçÿÔ?Ðÿ¿/ýí¿Øÿ?àOâÿ÷ÿúÛÿ¿Ðìÿ¡ÿÏãïýÿ?ù/ïýÿÏôŸüÿŸøýÿ?Êó?Ðÿï/ÅÏÿÒÿ×Ïßÿþ?Þÿ/àáÿ¯ù?õÿçÿÕïÑÿûí¿Øÿàâÿ÷ÿû?ÛÿÏÐOìÿ¢ÿï/âïýÿ?ú/ïýÿÏòŸüÿŸùýÿ?ÊóÏÑÿï/Ä/ÿÒÿï×ÞÿoýÞÿ_àïáÿ_ù?õÿçÿÕ¯Òÿß/úí¿Øÿßâÿøÿ¿üßÜÿï/Ïìÿ£ÿï/áïýÿ?û/ïýÿÏðŸüÿŸúýÿ?Êô_Ðÿ?ÂÑÿ?ÙÞÿ?ýßßÿáOàÿù?õÿçÿÖ_Òÿ¿ùíïØÿߟâÿøÿ¿üÛÿ?ίìÿ¤ÿï/àïýÿ?ü/ïýÿÏîŸüÿŸûýÿ?ÊõßÑÿ_ÁßÒÿÙ?Þÿ?ý¿ßÿ¿áŸáÿ¯ø_õÿçÿ×ïÓÿŸ÷íØÿÏß¿âÿøÿ¯ý?Ûÿ_Íßìÿ¥ÿï/ßïýÿ?ý/ïýÿÏìŸüÿŸüýÿ?ÊõÑÿŸ¿_ÒÿßÙÞÿþýßÿïâàÿ_øõÿçÿo׿ÓÿöíØÿ¿ß¿âÿøÿýÏÜÿÌëÿ¦ÿï/Þïýÿ?þ/ïýÿÏêŸüÿŸýýÿ?ÊöïÒÿϾÏÒÿ/ÚÞÿþýoÞÿã_àÿøõÿçÿ?ØOÓÿ_õîØÿ¿ßßâÿøÿþÜÿ¯Ì?ëÿ§ÿÏÝïýÿ?/ïýÿÏèŸüÿŸþýÿ?ÊöÒÿï¾OÒÿoÚ¿ßÿßþý?Þÿ?ãÏáÿ¯÷õÿçÿ?ÙïÔÿoôî?Øÿßáÿøÿ_ÜÿÏÌOëÿ¨ÿ¯Üïýÿ?/ïýÿÏæŸüÿŸýÿ?Ê÷ïÒÿO½ÿßÓÿ¯Úßßÿ¿þýÞÿäàÿO÷¯õÿçÿ?ÙÔÿŸóî?Øÿßáÿøÿ?¿ÝÿïËëÿ©ÿoÚïýÿ?/ïýÿÏäŸüÿŸýÿ?Ê÷Òÿ¯¼ÿ_ÒÿÚÞÿ¯þüÞÿŸäoáÿïö¿õÿçÿ?ÚÔÿŸòî?Øÿà/áÿøÿ?oÛÿ?Ëëÿ«ÿÏ/ÙïýÿoïýÿÏâŸüÿŸýÿ?ÊøïÓÿß¼þïÓÿ?Ü/Þÿþü¿ßÿÏäÏáÿŸö¿õÿçÿ?Ú¿ÕÿÏòîØÿ?à?áÿøÿÿïÛÿÏË¿ëÿ¬ÿ×ïøÿÏàŸøÿ?ÊøoÒÿO»þÓÿoÜ?ÞÿþüŸÞÿå/àÿOö¿õÿçÿ?Û?ÕÿïñîØÿ?à?áÿøÿ¯ÙÿoÌ¿ëÿ®ÿ¿ÖïùÿÏÞŸùÿ?ÊøßÓÿ¯ºþ/Óÿ¯ÜÞÿOþüÞÿ/æáÿïõôÿçÿ?ÛÏÕÿOðîØÿ/àoáÿøÿOØÿïÍïëÿ°ÿßOÔïúÿÏÜŸúÿ?Êù_ÓÿïºýÏÔÿïÜÞÿ?þüOÞÿOæßáÿŸõôÿçÿÛ_Õÿïî¯Øÿßáÿøÿï×ÿŸÍêÿ²ÿß_ÒïûÿÏÚŸûÿ?Êù¿Óÿ¹ýoÓÿÝ¿Þÿ/þü/Þÿç/àÿOõôÿçÿÛßÖÿÏîî¿ØÿßáÿÌÿ?Îêÿ´ÿß_ÐïüÿÏØŸüÿ?Êú/Óÿ߸ý/ÓÿOÝïÞÿýûÞÿ¯çŸáÿïôôÿçÿÜ_Õÿ/îî¿Ùÿßß¿áÿÌÿßÎêÿ¶ÿß_ÎïüÿŸ×/üÿ?ÊúŸÓÿ_¸üßÔÿÝÝÿýûßßÿÏçïáÿõ?ôÿçÿÜßÖÿíîßÙÿ¿ß¿áÿËÿÐ?êÿ¸ÿ¯?ÌïûÿŸÙ/ïüÿ?ÊûïÔÿÏ·üÔÿ¯Þ?Þÿ¿ýû¿ÞÿèOàÿ/õ?ôÿçÿÝ?ÖÿïíîØÿ¿ßÏáÿËÿïÑ?êÿ»ÿßÊïúÿŸÛ/ïûÿ?Êû_Óÿ?·üOÔÿÏÞOÞÿ¿ýûÞÿ/éŸáÿßô?ôÿçÿÝ¿Öÿ_ìîØÿŸßàÿÊÿ¯Ñ?êÿ¾ÿïŸ/ÇïùÿŸÝ/ïúÿ?ÊûÏÔÿ¿¶üÓÿÞÞÿŸýû_Þÿ_éïáÿô?ôÿçÿÞÖÿ¿ëîØÿßàÿÉÿ?Ò?êÿÁÿïŸOÄïøÿŸß/ïùÿ?ÊüÓÿO¶ûÏÔÿ/ߟÞÿýû?ÞÿêOàÿ/ôôÿèÿßÞŸÖÿ?ëï?ØÿààÿÉÿßÒ?êÿÄÿÏ/ÁïýÿÏüÿŸá/ïýÿÏýÿ?ÊüÔÿßµûŸÔÿ?ß¿ÞÿoýúÞÿ¿êŸáÿÏóôÿèÿ¿ßï×ÿ¿êï?ØÿOà?àÿÈÿÓ?êÿÈÿïŸ_¾ïýÿ?ŸüÿŸã/ïýÿÏýÿ?ÊüßÔÿ_µû_ÔÿoßïÞÿ?ýúßßÿßëïáÿoóôÿèÿ¿ß_Öÿ?êï?Øÿ?à?àÿÈÿïÔ?êÿÌÿߟ_/ºïýÿ?ŸüÿŸå/ïýÿÏýÿ?Êý/Ôÿï´û?ÔÿßÝÿ?ýú¿Þÿë_àÿóôÿèÿ¿ßÏ×ÿ¿éïoØÿ?à_àÿÇÿ¯Ô?êÿÑÿï¿O¶ïýÿ?ŸüÿŸç/ïýÿÏýÿ?ÊýÔÿ´úÔÿ¯à?ÝÿýúÞÿ?ì¯áÿÏò¯ôÿèÿ¿àÖÿOéïØÿßàÿÆÿ?Õ?êÿÖÿ߯O±ïýÿ?þŸüÿŸé/ïýÿÏþýÿ?ÊýßÔÿ´úÏÕÿ¿à_ÝÿüúoÞÿ_íàÿ_ò¿ôÿèÿ¿à×ÿßèïØÿßàÿÆÿßÕêÿÜÿ¿¯_?«ïýÿ?ýŸüÿŸë/ïýÿÏýýÿ?Êþ/Ôÿ¯³ú¿ÕÿÏàÞÿßüú?Þÿí_àÿò¿ôÿèÿ¿àß×ÿoèïŸÙÿïߟàÿÅÿÕêÿäÿÏ¿O?¥ïýÿ?üŸüÿŸí/ïýÿÏüýÿ?ÊþÔÿO³úÔÿà¯Þÿ¿üúÞÿ¿í¯áÿ¯ñ¿ôÿèÿ¯á/Öÿèï¿Ùÿ¿ß¿àÿÅÿïÖêÿïÿß¿¿ŸO?/œïýÿ?ûŸüÿŸï/ïýÿÏûýÿ?ÊþÏÕÿï²úoÔÿà¿Þÿ¯üùïßÿïîàÿ_ñÏôÿèÿá×ÿŸçï¿Ùÿ¿ß¿àÿÄÿ¯ÖïëÿðÿÏ“ïýÿ?úŸüÿŸñ/ïýÿÏúýÿ?ÊÿÔÿ²ú?ÔÿáÝÿüù¿Þÿï_áÿïðóÿèÿáÏ×ÿ?çïÏÙÿ¯ßïàÿÃÿO׿ëÿïÿ“ïýÿ?ùŸüÿŸó/ïýÿÏùýÿ?Êÿ_Ôÿ/²ú/Ôÿ?âÝÿüùÞÿ?ï¯áÿŸðóÿèÿâ×ÿßæïØÿßßÿÃÿߨ¿ëÿïÿ?”ïýÿ?øŸüÿŸõ/ïýÿÏøýÿ?ÊÿŸÕÿß±ùÔÿ?â?Ýÿ?üùoÞÿoðàÿ?ðóÿèÿâo×ÿæïØÿßßÿÂÿØëÿïÿo”ïýÿ?÷ŸüÿŸ÷/ïýÿÏ÷ýÿ?ÊÿïÕÿ±ùÔÿ?â_Ýÿ?üù?ÞÿŸðOáÿßïóÿèÿâ¯×ÿ/æð/Øÿ_à?ßÿÁÿÙëÿïÿ¿”ïýÿ?öŸüÿŸù/ïýÿÏöýÿ?Ê/Ôÿ/±ùßÕÿOâÝÿüùÞÿ¿ðŸáÿð/óÿèÿâïØÿïåð?Øÿ?à?ßÿÁÿ¿ÙOëÿîÿ•ïýÿ?õŸüÿŸû/ïýÿÏõýÿ?ÊoÕÿß°ù¿Õÿâ¯ÝÿûøïÞÿðïáÿð?óÿèÿã?×ÿŸåð_Øÿ?à?ßÿÀÿOÚ?ëÿîÿo•ïýÿ?ôŸüÿŸý/ïýÿÏôýÿ?ʯÕÿ°ù¿Õÿâ¿Þÿïûø¿ÞÿòOáÿÏï?óÿèÿOã×ÿ_åðØÿàßÿïÿïOÔÿßÚëÿîÿÏ•ïýÿ?óŸüÿŸ/ïýÿÏóýÿ?ÊïÕÿO°ù¿ÕÿâÝÿ¿ûøÞÿ?òŸáÿ_ï?óÿèÿ?ã¯×ÿåð¯ØÿßßÿïÿOÔÿÚßìÿíÿ?–ïýÿ?òŸüÿŸ/ïýÿÏòýÿ?ÊÔÿ¯ù¿ÕÿãÝÿ¯ûøoÞÿòïáÿï?óÿèÿ?ãïØÿÏäð¿ØÿßßÿðÿoïÔÿÛ¿ìÿíÿ¿½O¿Üïýÿ?ñŸ÷ÿÏñýÿ?Ê_Õÿ¿¯ùÕÿã?Ýÿûø?ÞÿŸóOáÿŸîóÿèÿ?ä/×ÿŸäðØÿ¿ß¿ßÿñÿŸýÔÿ¿Ûìÿìÿ?À/¿ÿÿÝïýÿ?ðŸùÿÏðýÿ?ÊÕÿ¯ùÕÿãoÝÿûøÞÿ¿óáÿOîóÿèÿ?ä_×ÿ_äñØÿ¿ß¿ßÿòÿ¿üßÔÿOÜOìÿìÿߟýÿ?Ýïýÿ?ïŸûÿÏïýÿ?Ê¿Õÿ?¯ùÕÿãÝÿ?û÷ßÞÿóßâÿßíóÿèÿ?ä×ÿ/äñ?Øÿ¯ßÏßÿóÿÏû_ÔÿßÝìÿëÿÅïüÿÝïýÿ?ï/ûÿŸîýÿ?ÊÔÿ®ùÕÿã¿Ýÿ?û÷¿Þÿõ/áÿíóÿèÿ?ä¿×ÿãñØÿßÞÿôÿïùßÔÿÜßíÿêÿ_Èïúÿ¯Ýïýÿ?ð/ïúÿŸïýÿ?Ë/Õÿ¿®ùÕÿãÏÝÿû÷Þÿ?õáÿíóÿèÿäïØÿ¿ãñ¯ØÿßÞÿôÿ/ø_ÓÿÝŸíÿéÿ_ËŸ÷ÿßÝïýÿ?ñ/ïøÿŸðýÿ?ËOÕÿ®ùÕÿãÜÿú÷_ÞÿõÏâÿÏì¿óÿèÿä×ÿŸãñߨÿàÞÿõÿ_ö¿Ôÿ¿Ý_íÿèÿ_ÎO¿ôÿÞïýÿ?ò/ïýÿÏŸüÿŸñýÿ?ËÕÿO®ù¯ÕÿäÝÿßú÷?ÞÿŸöáÿ_ì¿óÿèÿä?×ÿãò×ÿ?à?Þÿöÿõ?Óÿ_ÞíÿçÿÒßòÿ?Þïýÿ?ó/ïýÿÏŸüÿŸòýÿ?Ë¿Õÿ®ù¿Õÿä?Ýÿ¿úöÞÿ¿öoáÿì¿óÿèÿä_×ÿOãòO×ÿ?à?Þÿ÷ÿŸó¿ÔÿïÞÏîÿæÿÏ/×oÏïÿÞïýÿ?ô/ïýÿÏþŸüÿŸóýÿ?ËÏÖÿï­ù¿ÕÿäoÝÿŸúöÏÞÿö¯âÿŸë¿óÿèÿä×ÿ?ãò×ÿ?àoÞÿøÿÏó?ÓÿÞoîÿäÿŸÜ/oÏìÿ¯Þïýÿ?õ/ïýÿÏüŸüÿŸôýÿ?ËÿÖÿ¿­ù¿ÕÿäÝÿúö¯ÞÿøáÿOë¿óÿèÿä¯×ÿãòÏ×ÿ/àÞÿùÿßñŸÓÿ/ßîÿâÿŸâ_ŸßéÿßÞïýÿ?ö/ïýÿÏúŸüÿŸõýÿ?Ì/ÿÖÿ­ù¿Õÿ?ä¿Ýÿ_úöÞÿ?øOâÿßêïóÿèÿä¿×ÿâóÖÿßÞÿúÿï/ðÓÿ¿ÞÏïÿàÿÏoê?¯ßäÿßïýÿ?÷/ïýÿÏøŸüÿŸöýÿ?Ì?ÿÖÿ_­ùÔÿ?äßÝÿ?úö?ÞÿoøŸâÿêòÿèÿäß×ÿâóOÖÿ߯Þÿúÿ?îŸÓÿ_ßoïÿÝÿߟo?õ/?o¿ßßÿ?ßïýÿ?ø/ïýÿÏöŸüÿŸ÷ýÿ?ÌÿÖÿ?­ùÔÿ?äÜÿúöÞÿøïâÿêòÿéÿ¿äÖÿâóŸÖÿß¿Þÿûÿ_íïÔÿïàïÿ×ÿÏú¿Ï×ÿßïýÿ?ù/ïýÿÏôŸüÿŸøýÿ?ÌÿÖÿ­ùÔÿ?å/ÜÿùõÞÿ¿ù/âÿ¿éòÿéÿ¿ä×ÿÏâóßÖÿß¿Þÿüÿ¯ëÓÿ߯ðÿ¤ÿ¯ßïýÿ?ú/ïýÿÏòŸüÿŸùýÿ?̯ÿÖÿ¬ú?Ôÿå?Ýÿßùõ¿ßÿßùâÿ_éòÿéÿ¿å×ÿ¿âô/ÖÿßßÝÿüÿëïÓÿ/àOðÿ¤ÿßßïýÿ?û/ïýÿÏðŸüÿŸúýÿ?Ì¿ÿ×ÿ¿¬ú?ÔÿäÝÿ¿ùõÞÿùÏãÿïêòÿéÿ¿å?×ÿ¿âôÖÿ¿ßÝÿüÿêÓÿ¿ßßñÿ£ÿàïýÿ?ü/ïýÿÏîŸüÿŸûýÿ?Ìßÿ×ÿ¿¬úoÔÿäÝÿŸùõ_Þÿ?ûâÿŸé?òÿéÿ¿å?×ÿ¿âôßÖÿ¿ßÝÿüÿOêßÓÿ_à_ñÿ£ÿ?àïýÿ?ý/ïýÿÏìŸüÿŸüýÿ?Ìÿÿ×ÿ¬úÕÿÏä¿Ýÿùõ/ÞÿOû_âÿ/é?òÿéÿ¿å?×ÿ¿âõ/Õÿ¿à?Ýÿüÿ?é_Óÿïàßòÿ£ÿàïýÿ?þ/ïýÿÏêŸüÿŸýýÿ?Ìÿÿ×ÿ¬ú¯Õÿ¿äßÝÿ_ùôÞÿûŸãÿßè?òÿéÿ¿å?ÖÿâõŸÕÿ¿à?Ýÿüÿ?èßÓÿà_òÿ£ÿ¯àïýÿ?/ïýÿÏèŸüÿŸþýÿ?Í/ÿÿ×ÿO¬ú¿Õÿ¯äÜÿ?ùôÏßÿŸûïãÿoè?òÿéÿŸåÖÿâöïÕÿ¿àOÝÿüÿçOÒÿ/àßóÿ£ÿßàïýÿ?/ïýÿÏæŸüÿŸýÿ?Í?ÿÿ×ÿ?¬úÔÿå?ÜÿùôŸßÿ¿ü/âÿè?òÿéÿåÖÿâö_Ôÿ¿àÝÿüÿæ¿ÓÿÏàOóÿ¢ÿáïýÿ?/ïýÿÏäŸüÿŸýÿ?Í?ÿÿ×ÿ?¬ûÔÿoåOÜÿøôoßÿïüoãÿ¯çoòÿéÿåÖÿãöÏÔÿàÝÿüÿæ?Òÿoà¿ôÿ¢ÿ?áïýÿoïýÿÏâŸüÿŸýÿ?Í?ÿÿ×ÿ¬û?Ôÿ?åÝÿ¿øô?Þÿü¿ãÿOçòÿéÿåÖÿ?ã÷?ÓÿàŸÝÿýÿ¿å¿Óÿïá/ôÿ¢ÿoáïøÿÏàŸøÿ?Íÿÿ×ÿ«ûÔÿ/åŸÝÿ¿øóÞÿ?ýãÿïæòÿéÿåÖÿ_ã÷¿Óÿà¿Ýÿýÿ¿å/ÒÿŸàõÿ¢ÿŸáïùÿÏÞŸùÿ?Íÿÿ×ÿ«ûŸÔÿä¿ÝÿøóßßÿOþ?ãÿæòÿéÿåÖÿãø?Òÿà¿Ýÿýÿ¯äŸÒÿ?àÏöÿ¢ÿÏáïúÿÏÜŸúÿ?Íÿÿ×ÿ«ûÏÕÿßäïÝÿoøó¯ßÿþãÿ/æòÿéÿåÖÿ¿ãø¿ÒÿàßÝÿýÿäÒÿÏà/ï÷ÿ¡ÿáïûÿÏÚŸûÿ?Íÿÿ×ÿ«ûÔÿ¿äÜÿ?øóßÿþÏäÿÏåòÿéÿoåOÖÿïãù?ÑÿàÜÿýÿãŸÒÿoà_÷ÿ¡ÿ?âïüÿÏØŸüÿ?Íÿÿ×ÿ«ü?Ôÿå?Üÿøó?ßÿ¿ãÿoå¿òÿéÿ?å?Õÿ/äùÏÑÿàÜÿýÿ_ãïÓÿïàŸøÿ¡ÿoâïýÿÏÖŸýÿ?ÍÿÿØÿÏ«üÔÿ_åOÜÿ÷óßÿÏOãÿå¿òÿéÿ?å?ÕÿoäúoÐÿá/Üÿýÿ?âÒÿŸß¿ùÿ¡ÿŸâïýÿ?Ôýÿ?ÍÿÿØÿ¿«ü¯Ôÿ?åÝÿß÷òïßÿÿäÿŸä¿òÿéÿ?å?Õÿ¯äûïÐÿá?Üÿýÿ?âïÒÿ?àÏúÿ¢ÿßOâïýÿÏÖ_ýÿ?ÍÿÿØÿ¿«üïÔÿä¯Ýÿ¿÷ò¿ßÿÏäÿOä¿òÿéÿ?å?Ôÿåû¿Ïÿá?ÜÿýÿáÒÿÏßÏûÿ£ÿáïüÿÏØ_üÿ?Íÿÿ×ÿ«ý/ÔÿÏä¿Ýÿ÷òßÿ?äÿßã¿òÿéÿ?äÔÿ_åüoÎÿáoÜÿýÿßßÒÿoßÏüÿ¥ÿ¿ßïûÿÏÚ_ûÿ?Íÿÿ×ÿ«ýoÔÿŸäÜÿ÷òOßÿÿOäÿãñÿéÿ?äÔÿßåý/ÍÿáÜÿýÿß_ÒÿïßÏýÿ§ÿ¿?ÝïúÿÏÜ_úÿ?Íÿÿ×ÿ«ý¯ÔÿoåÜÿ?÷òßÿÿŸäÿãñÿéÿ?äïÔÿ?æþßÍÿáÜÿþÿÏÞßÒÿŸÞ¿þÿ©ÿß?ÛïùÿÏÞ_ùÿ?Íÿÿ×ÿ«ýÓÿ/å?Üÿ/÷ñÁÿ¿âñÿéÿä¿Ôÿ¿æÿÏÌÿá¿Üÿþÿ¿Þ?Ñÿ?ÝŸÿÿ«ÿ¿?ÙïøÿÏà_øÿ?Íÿÿ×ÿ«þOÓÿä_Üÿöñ¿Âÿ_âñÿéÿã¿Óÿ_çÿÏËÿá¿Üÿþÿ¿Ý¿ÒÿÏÜ_ï­ÿ¯?×ïýÿŸüÿÏâ_üÿŸýÿ?Íÿÿ×ÿ¬þÔÿ¿äÝÿïöñÃÿïâñÿéÿãÓÿïè¿ÊÿáÏÜÿþÿÝ?ÑÿÜ/ϱÿïÕïýÿ?_üÿÏä_üÿŸýÿ?Íÿÿ×ÿ?¬þßÔÿä¯Ýÿ¿öñ_ÃÿŸâñÿéÿãoÒÿÏéÏÉÿáÛÿþÿÜ¿ÒÿïÜ´ÿ¿_Òïýÿ?_üÿÏæ_üÿŸýÿ?Íÿÿ×ÿ?¬ÿ/Óÿ?ä¿ÝÿŸöñ/Ãÿ?â?ñÿéÿã?ÑÿŸë/ßÈÿáÛÿþÿoÜÑÿ¯Üÿ¿¹ÿßÐïýÿ?_üÿÏè_üÿŸþýÿ?Í?ÿÿ×ÿO¬ÿÓÿãÜÿöðÄÿßá?ñÿéÿãÐÿŸíÿÿÈÿâÛÿþÿ?ÛŸÑÿ?Ýý?ß¾ÿß/Íïýÿ?þ_üÿÏê_üÿŸýýÿ?Í?ÿÿ×ÿ¬ÿßÔÿ¿äÜÿOöðÏÅÿá?ñÿéÿâßÐÿÏ/ñ?ÏþÿÈÿâ?Ûÿþÿ?ÛÑÿßÝû_ÏÃÿÏ/Êïýÿ?ý_üÿÏì_üÿŸüýÿ?Í?ÿÿ×ÿ¬/Óÿä?Üÿ?öðŸÅÿá?ñÿêÿßâ¯ÎÿõO¿üÿÈÿâ?Ûÿþÿ/ÚÑÿÞù?¯ÉÿïŸ_Çïýÿ?ü_üÿÏî_üÿŸûýÿ?Í/ÿÿ×ÿ¿¬ŸÓÿ/äoÜÿöðoÆÿ¯à?ñÿêÿ¿âoÌÿ¯_/üOŸßúÿîÿ¿Üÿâ_ÛÿþÿÙïÒÿïß÷oÏÐÿ߯o/Ãïýÿ?û_üÿÏð_üÿŸúýÿ?Ìÿÿ×ÿ߬ïÔÿïãÜÿõð?Æÿ_àñÿêÿ¿â/Çÿßôÿïÿß?ÜÿâÛÿþÿØÑÿ¯ßôoÏ×ÿ¿_¿ïýÿ?ú_üÿÏò_üÿŸùýÿ?ÌÿÿÖÿ¬_ÓÿŸã¿Ýÿ¿õïÇÿïßñÿêÿ¿áïºÿïÿ_?Üÿ¿âÛÿÿÿߨïÑÿ?àñO¿áÿϯO/ºïýÿ?ù_üÿÏô_üÿŸøýÿ?ÌßÿÖÿ/­¿ÓÿOãÏÝÿ¯õïßÈÿŸßñÿêÿ¿á¯ºÿðÿß?Üÿ¿âŸÛÿÿÿ¿×oÑÿßàì/OŸ¿ßðÿÏ¿¯o?/´ïýÿ?ø_üÿÏö_üÿŸ÷ýÿ?Ì¿ÿÖÿ_®ÒÿãÜÿõï¯Èÿ/ßñÿêÿ¿á_ºÿðÿ_?Üÿ¿â¿Ûÿÿÿ¿ÖßÑÿáä/ö?«ïýÿ?÷_üÿÏø_üÿŸöýÿ?̯ÿÖÿ®Óÿ¯ãÜÿoõïÉÿÏÞñÿêÿ¿áºÿñÿß?Üÿ¿â¿ÛÿÿÿÖ_Ñÿïâïýÿ?ö_üÿÏú_üÿŸõýÿ?ÌÿÖÿ¿¯ïÓÿ_ã?Üÿ?õï?ÉÿoÞ¯ñÿêÿ¿à¯»ÿñÿ_/Üÿ¿âïÛÿÿÿÕßÑÿ¯âïýÿ?õ_üÿÏü_üÿŸôýÿ?Ì_ÿÕÿ¯oÿÓÿãoÜÿõïÉÿÞ¿ñÿêÿà_»ÿòÿßýÜÿ¿âÚÿÿÿÕ?Ðÿ?ãïýÿ?ô_üÿÏþ_üÿŸóýÿ?Ì?ÿÕÿ?°ßÿÔÿ¯âÜÿôîïËÿ¯Ý¿ñÿêÿà»ÿòÿ?ýÜÿïâÚÿÿÿ?Ô¿Øÿï¿¿o?ãïýÿ?ó_üÿÏ_üÿŸòýÿ?ÌÿÕÿ±_ÿÿÔÿOâ¿ÝÿÏôî¿ËÿOÝ¿ñÿêÿߟ¼ÿóÿ¯üÛÿã?Úÿÿÿ?Ô?âÿï¿¿o??Úïýÿ?ò_üÿÏoüÿŸñýÿ?ËïÕÿ¿±ßÿÿÕÿïáßÝÿ¿ôîÌÿïÜ¿ñÿêÿß/¼ÿôÿïüÛÿã?Úÿÿÿ?Ó¯ìÿÿ¿Ÿo??Ðïýÿ?ñ_÷ÿŸðýÿ?Ë¿Ôÿ³_þÿÕÿáÜÿôîOÌÿÜÏñÿêÿÞ¿½ÿôÿoûÛÿã?ÚÿÿÿÒöÿÿ¿Ÿ??Æïýÿ?ð_ùÿŸïýÿ?ËÔÿ_³ßþÿÕÿ/â/ÜÿôîÌÿÜðÿêÿÞO½ÿõÿÏúÛÿäÚÿÿÿÑŸ¿¿Ÿ??¼ïýÿ?ï_ûÿŸîýÿ?Ë_Ôÿ¯´oýÿÖÿÏá?Üÿ?ôíÍÿÏÛðÿêÿÝß¾ÿöÿïúÛÿ?äÚÿÿïƒïýÿ?ï_ûÿÏïýÿ?Ë/Óÿ¶ïýÿÖÿ_áÜÿ/ôí¿Îÿ_ÛðÿêÿOÝ?¾ÿöÿoùïÜÿ?äÚÿÿ¿ƒïýÿ?ð_ùÿÏðýÿ?ÊÓÿ_¶üÿ×ÿïàÜÿóíÎÿÛðÿêÿ?Ü¿¿ÿ÷ÿ¯ø¿Üÿ?ä¿Úÿÿ¿ƒïýÿ?ñ_÷ÿÏñýÿ?Ê¿Ôÿ¿·ûÿ×ÿà¿Ýÿßóí_ÏÿŸÚðÿêÿ?Ü/¿ÿøÿÏø¿Üÿä¿ÚÿÿŸƒïýÿ?ò_üÿŸ_üÿÏòýÿ?ÊÓÿ¸¿ûÿ×ÿàßÝÿ¿óí/Ïÿ?Û/ðÿêÿ?ÛÀÿùÿï/÷¿ÜÿäÏÚÿÿƒïýÿ?ó_üÿŸ_üÿÏóýÿ?Ê?ÓÿŸ¹oúÿØÿŸßÜÿŸóìÐÿßÚ?ðÿêÿ?ÛßÁÿùÿOö¿Üÿäâÿß¿¿_??ïýÿ?ô_üÿŸý_üÿÏôýÿ?ÊÓÿï»ïúÿØÿà?ÜÿóìÏÑÿÚ?ðÿêÿ?Ú?Áÿúÿ_õ¿Üÿ¿äìÿß¿¿_??öïýÿ?õ_üÿŸû_üÿÏõýÿ?ʯÓÿ»¿ùÿÙÿ¿ßOÜÿOóìŸÑÿÚ?ðÿêÿ?ÙÂÿûÿô¿Üÿ¿åöÿï¿¿_??ìïýÿ?ö_üÿŸù_üÿÏöýÿ?ÊoÓÿï½oøÿÙÿ?ßÜÿ?óìoÒÿ¿Ù?ðÿêÿ/Ø¿ÃÿüÿŸó¯Üÿïå ?ÿï¿¿o??ãïýÿ?÷_üÿŸ÷_üÿÏ÷ýÿ?ÊÒÿ¾/÷ÿÚÿ¿ÞŸÜÿòì?Òÿ_Ù_ðÿêÿ×ßÄÿýÿŸòÛÿ¼ïýÿ?ø_üÿŸõ_üÿÏøýÿ?ÊÿßÒÿÀß÷ÿÚÿ?Þ¿ÜÿòëÓÿïØðÿêÿÖ/ïÅÿþÿñÛÿ½ïýÿ?ù_üÿŸó_üÿÏùýÿ?ÊÿÒÿ¿À¯öÿÛÿ¯ÝïÝÿ¿òëßÔÿŸØðÿêÿÕ/ïÆÿÿÿ_ðÛÿ?½ïýÿ?ú_üÿŸñ_üÿÏúýÿ?Êÿ/ÑÿoÂõÿÛÿÝÜÿ¯òë¯Ôÿ/ØðÿêÿÔ/ïÇÿï?ïäÿÿ¿Ÿ??»ïýÿ?û_üÿŸï_üÿÏûýÿ?ÊþßÒÿïÄ_ôÿÜÿŸÝ?ÜÿòëÕÿß×ðÿêÿÓ/ïÉÿÏ/îîÿÿ¿Ÿ??±ïýÿ?ü_üÿŸí_üÿÏüýÿ?ÊþÑÿÏÅ_óÿÝÿïÝOÜÿ_òë?Õÿo×ðÿêÿÒ/ßËÿí?øÿÏ¿Ÿ??§ïýÿ?ý_üÿŸë_üÿÏýýÿ?ÊþÐÿŸÇ/òÿÝÿoÜÜÿ?òëÕÿ׿ðÿêÿÑ¿ÎÿïOí/¿¯O?/ïýÿ?þ_üÿŸé_üÿÏþýÿ?Êý¿Ðÿ_É/ïòÿÞÿÏÛ¯Üÿòêï×ÿ¯Ö¿ðÿëÿÏÏÐÿþïýÿ?_üÿŸç_üÿÏýÿ?Êý_Ïÿ_Ë_ðÿÞÿ?Û¿Üÿñê¿×ÿOÖ¿ðÿëÿ¿Î/ÏÔÿ¿?üïýÿ?_üÿŸå_üÿÏýÿ?ÊüïÏÿ_Í_ïÿßÿÚÜÿÏñêØÿïÕ¿ðÿëÿ¿ÌïØÿß?úïýÿ?_üÿŸã_üÿÏýÿ?ÊüÎÿ_ÏîÿàÿïÛÜÿ¿ñêOØÿÕ¿ðÿëÿ¿ËïÜÿ¿?øïýÿŸüÿŸá_üÿÏýÿ?ÊüÍÿoÒ¿íÿàÿOÚ?ÜÿñêØÿ/Õßðÿëÿ¿ÉïáÿïŸ/öïøÿŸß_øÿ?ÊûŸÍÿŸÕ?ïìÿáÿ¯Ù_ÜÿoñéÙÿÏÔïÿëÿ¿Æ_¯æÿïŸOóïùÿŸÝ_ùÿ?ÊûÌÿÏ/ØêÿâÿßÙÜÿ?ñé¿Úÿ_Ôïÿëÿ¿Ä_Ÿßîÿï¿/ðïúÿŸÛ_úÿ?ÊúŸËÿÛ_ïéÿâÿ?دÜÿ/ñéÚÿÔïÿëÿŸÀ?¿¿ïüÿß¿¿?ìïûÿŸÙ_ûÿ?ÊúÊÿï_Þ?Ïçÿãÿ׿Üÿðé_ÛÿŸÓïÿëÿ˜ïüÿŸ×_üÿ?ÊùŸÉÿßoã_Ïåÿäÿ¿ÖÜÿßðé/ÛÿOÓïÿëÿ˜ïüÿÏØ_üÿ?ÊùÆÿŸOè/ïãÿåÿß×Üÿ¿ðèÜÿßÓ?ïÿëÿ˜ïûÿÏÚ_ûÿ?ÊøÅÿï¯o/ð/_Ÿïàÿæÿï/Ö?ÜÿðèÏÝÿÓ?ïÿëÿ˜ïúÿÏÜ_úÿ?ÊøßÁÿÏ¿oü?o¯¿Ûÿæÿ_ÕoÜÿðèŸÝÿÓ?ïÿîÿÏ¿Ÿ?˜ïùÿÏÞ_ùÿ?Ê÷OŒÿçÿÔÜÿOðèoÞÿ¿Ò?ïÿøÿÏ¿¯O?/’ïøÿÏà_øÿ?Êö¿ÿèÿŸÓ¿Üÿ?ðè?Þÿ_Ò?ðÿÏ¿¯O?/ˆïýÿŸüÿÏâ_üÿŸýÿ?ÊöïŽÿéÿÏÒÏÜÿïèßÿïÒoúÿÏ¿¯O?/þïýÿ?_üÿÏä_üÿŸýÿ?ÊõoŽÿêÿÏÒÜÿïïçßàÿŸÑ__??ôïýÿ?_üÿÏæ_üÿŸýÿ?Êô¿ÿëÿÏÒÜÿ¿ïç¯àÿ?¾ïýÿ?_üÿÏè_üÿŸþýÿ?ÊôïÿìÿÏÑ?Üÿ¯ïçåÿß¿¿½ïýÿ?þ_üÿÏê_üÿŸýýÿ?ÊóOÿíÿÏÐoÜÿïç?ïÿï¿¿_??¶ïýÿ?ý_üÿÏì_üÿŸüýÿ?Êò‘ÿîÿÏÏÜÿ_ïçùÿï¿¿o??­ïýÿ?ü_üÿÏî_üÿŸûýÿ?Êñ¿’ÿïÿÏοÜÿ?ïæ¿o??£ïýÿ?û_üÿÏð_üÿŸúýÿ?Êñß“ÿðÿÏÍßÜÿïïýÿ?ú_üÿÏò_üÿŸùýÿ?Êð/ï”ÿñÿŸÌÛÿîïýÿ?ù_üÿÏô_üÿŸøýÿ?Êï?”ÿòÿË/Üÿ¿îïýÿ?ø_üÿÏö_üÿŸ÷ýÿ?Êî_•ÿóÿ_Ê?Üÿ¿îïýÿ?÷_üÿÏø_üÿŸöýÿ?Êí_–ÿõÿï/ÉÜÿîïýÿ?ö_üÿÏú_üÿŸõýÿ?Êì_—ÿöÿ¿ÈÜÿoîïýÿ?õ_üÿÏü_üÿŸôýÿ?Êë_˜ÿ÷ÿÆ¿Üÿ?îïýÿ?ô_üÿÏþ_üÿŸóýÿ?Êê_™ÿùÿß?ÅßÞÿÏ¿îïýÿ?ó_üÿÏ_üÿŸòýÿ?Êé?ï›ÿúÿ¯Äçÿß¿¿_??éïýÿ?ò_üÿÏoüÿŸñýÿ?Êè/ïœÿüÿïOÃ?ñÿß¿¿_??ßïýÿ?ñ_÷ÿŸðýÿ?ÊçÏÿýÿÂOûÿß¿¿_??Õïýÿ?ð_ùÿŸïýÿ?ÊåžÿÿÿÏ?À?_??Ëïýÿ?ï_ûÿŸîýÿ?ÊäOï ÿïoƒïýÿ?ï_ûÿÏïýÿ?Êã¿¢ÿ‚ïýÿ?ð_ùÿÏðýÿ?Êáoï¦ÿŸïýÿ?ñ_÷ÿÏñýÿ?Ê௩ÿŸþïýÿ?ò_üÿŸ_üÿÏòýÿ?ÊÞ?ß®ÿïŸüïýÿ?ó_üÿŸ_üÿÏóýÿ?ÊÜoï²ÿßúïýÿ?ô_üÿŸý_üÿÏôýÿ?ÊÛï¶ÿ¿O÷ïýÿ?õ_üÿŸû_üÿÏõýÿ?ÊÙß»ÿßõïýÿ?ö_üÿŸù_üÿÏöýÿ?ÊÖ_¿Àÿß/òïýÿ?÷_üÿŸ÷_üÿÏ÷ýÿ?ÊÔ/ïÆÿß/ïïýÿ?ø_üÿŸõ_üÿÏøýÿ?ÊÑOŸïÍÿï¯oìïýÿ?ù_üÿŸó_üÿÏùýÿ?ÊÎ?ÏÔÿï¯o/èïýÿ?ú_üÿŸñ_üÿÏúýÿ?ÊËO¿Ýÿß¿Oäïýÿ?û_üÿŸï_üÿÏûýÿ?ÊÆ/O¯¿êÿß¿¯_?Þïýÿ?ü_üÿŸí_üÿÏüýÿ?Ê¿/??oõþ?×ïýÿ?ý_üÿŸë_üÿÏýýÿ?Êïýÿ?þ_üÿŸé_üÿÏþýÿ?Êïýÿ?_üÿŸç_üÿÏýÿ?Êïýÿ?_üÿŸå_üÿÏýÿ?Êïýÿ?_üÿŸã_üÿÏýÿ?ÊïýÿŸüÿŸá_üÿÏýÿ?ÊïøÿŸß_øÿ?ÊïùÿŸÝ_ùÿ?ÊïúÿŸÛ_úÿ?ÊïûÿßÙûÿ?ÊïúÿŸÛ/ïûÿ?ÊïùÿŸÝ/ïúÿ?ÊïøÿŸß/ïùÿ?ÊïýÿÏüÿŸá/ïýÿÏýÿ?Êïýÿ?ŸüÿŸã/ïýÿÏýÿ?Êïýÿ?ŸüÿŸå/ïýÿÏýÿ?Êïýÿ?ŸüÿŸç/ïýÿÏýÿ?Êïýÿ?þŸüÿŸé/ïýÿÏþýÿ?Êïýÿ?ýŸüÿŸë/ïýÿÏýýÿ?Êïýÿ?üŸüÿŸí/ïýÿÏüýÿ?Êïýÿ?ûŸüÿŸï/ïýÿÏûýÿ?Êïýÿ?úŸüÿŸñ/ïýÿÏúýÿ?Êïýÿ?ùŸüÿŸó/ïýÿÏùýÿ?Êïýÿ?øŸüÿŸõ/ïýÿÏøýÿ?Êïýÿ?÷ŸüÿŸ÷/ïýÿÏ÷ýÿ?Êïýÿ?öŸüÿŸù/ïýÿÏöýÿ?Êïýÿ?õŸüÿŸû/ïýÿÏõýÿ?Êïýÿ?ôŸüÿŸý/ïýÿÏôýÿ?Êïýÿ?óŸüÿŸ/ïýÿÏóýÿ?Êïýÿ?òŸüÿŸ/ïýÿÏòýÿ?Êïýÿ?ñŸ÷ÿÏñýÿ?Êïýÿ?ðŸùÿÏðýÿ?Êïýÿ?ïŸûÿÏïýÿ?Êïýÿ?ï/ûÿŸîýÿ?Êïýÿ?ð/ïúÿŸïýÿ?Êïýÿ?ñ/ïøÿŸðýÿ?Êïýÿ?ò/ïýÿÏŸüÿŸñýÿ?Êïýÿ?ó/ïýÿÏŸüÿŸòýÿ?Êïýÿ?ô/ïýÿÏþŸüÿŸóýÿ?Êïýÿ?õ/ïýÿÏüŸüÿŸôýÿ?Êïýÿ?ö/ïýÿÏúŸüÿŸõýÿ?Êïýÿ?÷/ïýÿÏøŸüÿŸöýÿ?Êïýÿ?ø/ïýÿÏöŸüÿŸ÷ýÿ?Êïýÿ?ù/ïýÿÏôŸüÿŸøýÿ?Êïýÿ?ú/ïýÿÏòŸüÿŸùýÿ?Êïýÿ?û/ïýÿÏðŸüÿŸúýÿ?Êïýÿ?ü/ïýÿÏîŸüÿŸûýÿ?Êïýÿ?ý/ïýÿÏìŸüÿŸüýÿ?Êïýÿ?þ/ïýÿÏêŸüÿŸýýÿ?Êïýÿ?/ïýÿÏèŸüÿŸþýÿ?Êïýÿ?/ïýÿÏæŸüÿŸýÿ?Êïýÿ?/ïýÿÏäŸüÿŸýÿ?ÊïýÿoïýÿÏâŸüÿŸýÿ?ÊïøÿÏàŸøÿ?ÊïùÿÏÞŸùÿ?ÊïúÿÏÜŸúÿ?ÊïûÿÏÚŸûÿ?ÊîŸþÿÏØŸþÿï/ÉíŸÿÏÖŸÿï/ÈìÔ/Çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"""""""""""" """"" """"""""""""""" """"**&&&&&&&&******&""""""V| ¤¦¤¦¤¦ fdfff\`œžœžœžž’t&&&&&&&&&&&***&&&&&&&&**************"""""""""""&&$..........2222....2222666::::::8:::>666:::::>>>FFFFFFFFFHHHHJFJJJJJJJRNNLNNNNNNLNNNJBFBBBBBBBBBBBJJJJJJJJJJJJJNLLLLLNNNRRRRRNNNNNNNNNJFFFFFFFFFBBBBB@FJJJJJFDHJFFFFFBBB>><<<@BBB>>>>><>:::22222....****......*********&&&"""""&&&&&&&&&&""""""""""""""""""""""""""""""""ÿ×ÿó¹ÿÿÿÿÿÿÿÿÿÙÿåÅÿÿÿÿÿÿÿÿÿÚÿ×ÒÿÿÿÿÿÿÿÿÿÜÿÉÞÿÿÿÿÿÿÿÿÿÞÿºëÿÿÿÿÿÿÿÿÿàÿòúÿÂ÷ÿÿÿÿÿÿÿÿÿáÿñîÿÄÿƒÿÿÿÿÿÿÿÿãÿïáÿÑòÿÿÿÿÿÿÿÿåÿöÿøÖÿÝæœÿÿÿÿÿÿÿÿæÿ÷þÿøÊÿéÙ©ÿÿÿÿÿÿÿÿèÿöýÿø½ÿö͵ÿÿÿÿÿÿÿÿêÿöûÿø²ÿÿÂÁÿÿÿÿÿÿÿÿëÿ÷úÿö³ÿóÿÂÎÿÿÿÿÿÿÿÿíÿ÷øÿüÿü³ÿçÿÂÚÿÿÿÿÿÿÿÿïÿö÷ÿüÿü³ÿÛÿÁçÿÿÿÿÿÿÿÿñÿöõÿüÿü³ÿÎÿÂóÿÿÿÿÿÿÿÿòÿ÷ôÿûÿû´ÿÂÿÁÿÿÿÿÿÿÿÿôÿöóÿüþÿü´ÿµÿÍöŒÿÿÿÿÿÿÿöÿöñÿüþÿü´ÿ©ÿÙê˜ÿÿÿÿÿÿÿ÷ÿ÷ïÿüþÿü´ÿœÿæÝ¥ÿÿÿÿÿÿÿùÿöïÿûþÿûµÿÿòѱÿÿÿÿÿÿÿûÿöíÿüüÿüµÿ„ÿþľÿÿÿÿÿÿÿüÿ÷ëÿüüÿüµÿÿ÷ÿÂÊÿÿÿÿÿÿÿþÿ÷éÿüüÿüµÿÿëÿÁ×ÿÿÿÿÿÿÿÿöéÿûüÿû¶ÿÿÞÿÂãÿÿÿÿÿÿÿ÷çÿüúÿü¶ÿÿÒÿÂïÿÿÿÿÿÿƒÿÿùåÿüúÿü¶ÿÿÅÿÂüÿÿÿÿÿÿ…ÿýúäÿüúÿü¶ÿÿ¹ÿÉúˆÿÿÿÿÿ‡ÿûüãÿûúÿû·ÿÿ­ÿÕí•ÿÿÿÿÿˆÿúþáÿüøÿü·ÿÿ ÿâá¡ÿÿÿÿÿŠÿøÿàÿüøÿü·ÿÿ”ÿîÕ­ÿÿÿÿÿŒÿöÞÿüøÿü·ÿÿ‡ÿûȺÿÿÿÿÿÿ÷ÿÿßÿûøÿû¸ÿÿÿûÿÂÆÿÿÿÿÿÿöþÿßÿüöÿü¸ÿÿÿïÿÁÓÿÿÿÿÿ‘ÿöüÿßÿüöÿü¸ÿÿÿâÿÂßÿÿÿÿÿ’ÿ÷úÿßÿüöÿü¸ÿÿÿÖÿÁìÿÿÿÿÿ”ÿ÷øÿàÿûöÿû¹ÿÿÿÉÿÂøÿÿÿÿÿ–ÿö÷ÿàÿüõÿû¹ÿÿÿ½ÿÅþ„ÿÿÿÿ˜ÿöõÿàÿüôÿü¹ÿÿÿ°ÿÒñ‘ÿÿÿÿ™ÿ÷óÿàÿüôÿü¹ÿÿÿ¤ÿÞåÿÿÿÿ›ÿöòÿáÿûôÿûºÿÿÿ˜ÿêØªÿÿÿÿÿöðÿáÿûôÿûºÿÿÿ‹ÿ÷̶ÿÿÿÿžÿ÷îÿáÿüòÿüºÿÿÿÿÿÿÁÃÿÿÿÿ ÿöíÿáÿüòÿüºÿÿÿÿòÿÂÏÿÿÿÿ¢ÿöëÿâÿûòÿû»ÿÿÿÿæÿÂÛÿÿÿÿ£ÿ÷éÿâÿûòÿû»ÿÿÿÿÙÿÂèÿÿÿÿ¥ÿ÷çÿâÿúôÿú»ÿÿÿÿÍÿÂôÿÿÿÿ§ÿöæÿâÿùöÿù»ÿÿÿÿÁÿÁÿÿÿ©ÿöäÿãÿø÷ÿ÷¼ÿÿÿÿ´ÿÎõÿÿÿªÿ÷âÿãÿ÷ùÿö¼ÿÿÿÿ¨ÿÚé™ÿÿÿ¬ÿöáÿãÿöûÿõ¼ÿÿÿÿ›ÿçܦÿÿÿ®ÿößÿãÿõýÿô¼ÿÿÿÿÿóвÿÿÿ¯ÿ÷Ýÿäÿûÿúÿÿùÿû½ÿÿÿÿƒÿÿÿÿÿÿ±ÿöÜÿäÿûÿÿúÿúÿÿû½ÿÿÿÿÿöÿÂËÿÿÿ³ÿöÚÿäÿüýÿôýÿü½ÿÿÿÿÿêÿÁØÿÿÿ´ÿ÷Øÿäÿüýÿõüÿü½ÿÿÿÿÿÝÿÂäÿÿÿ¶ÿ÷Öÿåÿûüÿ÷ûÿû¾ÿÿÿÿÿÑÿÂðÿÿÿ¸ÿöÕÿåÿûûÿùúÿû¾ÿÿÿÿÿÄÿÂýÿÿÿºÿöÓÿåÿüúÿùùÿü¾ÿÿÿÿÿ¸ÿÊù‰ÿÿ»ÿ÷Ñÿåÿüûÿ÷úÿü¾ÿÿÿÿÿ¬ÿÖì–ÿÿ½ÿöÐÿæÿûüÿõûÿû¿ÿÿÿÿÿŸÿãà¢ÿÿ¿ÿöÎÿæÿûýÿóüÿû¿ÿÿÿÿÿ“ÿïÔ®ÿÿÀÿ÷Ìÿæÿüüÿúÿúüÿü¿ÿÿÿÿÿ†ÿüÇ»ÿÿÂÿöËÿæÿüýÿúÿÿùýÿü¿ÿÿÿÿÿÿúÿÂÇÿÿÄÿöÉÿçÿûþÿúýÿùþÿü¿ÿÿÿÿÿÿîÿÁÔÿÿÅÿ÷ÇÿçÿûÿÿúûÿúþÿûÀÿÿÿÿÿÿáÿÂàÿÿÇÿ÷ÅÿçÿüÿÿúùÿúþÿüÀÿÿÿÿÿÿÕÿÁíÿÿÉÿöÄÿçÿüÿú÷ÿúÿÿüÀÿÿÿÿÿÿÈÿÂùÿÿËÿöÂÿçÿõõÿúÿüÀÿÿÿÿÿÿ¼ÿÆý…ÿÌÿ÷ÀÿèÿôôÿôÁÿÿÿÿÿÿ¯ÿÓð’ÿÎÿö¿ÿèÿõòÿõÁÿ¥ÿÝèšÿÐÿö½ÿèÿöðÿöÌÿöæœÿÑÿ÷»ÿèÿ÷ïÿöÎÿôåÿÓÿöºÿéÿ÷íÿöÐÿóãŸÿÕÿö¸ÿéÿøëÿ÷Òÿñâ ÿÖÿ÷¶ÿéÿùéÿøÓÿðèáÿíàÿðÿáÿòáÿïâÿÿíàÿôáÿìùÿéÿïáÿòáÿúöáÿìáÿïóÿóÿî¢ÿØÿ÷´ÿéÿúçÿùÕÿ÷þÿûýãÿíãÿïçÿþÿ÷þÿ÷ãÿ÷þÿ÷äÿíäÿïãÿíãÿ÷þÿ÷äÿðäÿ÷þÿöûÿëÿëåÿîäÿùôäÿ÷þÿ÷äÿìôÿôÿ÷ÿö¤ÿÚÿö³ÿêÿúåÿùØÿöûÿýûçÿ÷ýÿ÷çÿ÷ÿ÷èÿÿ÷úÿ÷çÿ÷ûÿöçÿ÷þÿùþçÿ÷ÿ÷çÿ÷ýÿ÷çÿÿùûÿöçÿîçÿ÷úÿ÷üÿìÿ÷ýÿ÷çÿ÷ÿ÷çÿ÷ýÿ÷çÿ÷úÿ÷çÿ÷ýÿ÷öÿöÿ÷üÿ÷¥ÿÛÿ÷±ÿêÿúäÿúÙÿ÷øÿþùëÿöûÿöëÿöþÿöêÿ÷øÿöëÿöøÿ÷êÿ÷úÿûýêÿ÷ýÿöëÿöûÿöëÿýúøÿ÷êÿ÷þÿ÷ëÿö÷ÿ÷þÿîÿ÷ùÿ÷ëÿ÷üÿ÷ëÿöÿûÿ÷ëÿöøÿöëÿ÷úÿöøÿ÷ÿ÷ùÿ÷§ÿÝÿ÷¯ÿêÿûâÿûÛÿ÷ôÿøíÿ÷÷ÿ÷íÿ÷úÿ÷íÿÿùôÿ÷íÿ÷ôÿ÷íÿ÷÷ÿýûíÿ÷úÿ÷íÿ÷÷ÿ÷íÿüüôÿ÷îÿöüÿöîÿ÷ôÿ÷ÿÿïÿ÷÷ÿ÷íÿ÷úÿöîÿ÷þÿúÿöîÿ÷ôÿ÷íÿ÷÷ÿ÷ùÿøÿøöÿö©ÿßÿö®ÿêÿüàÿüÝÿöòÿÿ÷ñÿ÷óÿ÷ñÿ÷öÿ÷ñÿýúñÿ÷ñÿ÷ñÿöñÿ÷ôÿþùñÿ÷öÿ÷ñÿ÷óÿ÷ñÿúþñÿöñÿ÷øÿ÷ñÿ÷ðÿ÷ñÿ÷óÿ÷ñÿ÷öÿ÷ñÿ÷üÿøÿ÷ñÿ÷ðÿ÷ñÿ÷óÿ÷ûÿúÿ÷óÿ÷ªÿáÿö¬ÿëÿûàÿûßÿ÷ðÿÿÿ÷ôÿöñÿ÷ôÿöôÿöôÿüüîÿöõÿöîÿ÷ôÿöñÿøôÿöôÿöõÿöñÿöõÿøÿîÿ÷ôÿöõÿ÷ôÿ÷îÿøÿõÿöñÿöõÿöóÿ÷ôÿ÷ûÿöÿ÷ôÿ÷îÿöõÿöñÿöýÿûÿøïÿ÷¬ÿâÿ÷ªÿëÿüÞÿüáÿ÷îÿýÿ÷÷ÿ÷íÿ÷÷ÿ÷ðÿ÷÷ÿúþêÿ÷÷ÿ÷êÿ÷÷ÿ÷îÿÿ÷÷ÿ÷ðÿ÷÷ÿ÷íÿ÷÷ÿ÷êÿ÷÷ÿ÷òÿöøÿ÷êÿúþ÷ÿ÷íÿ÷÷ÿ÷ðÿöøÿ÷ùÿõÿöøÿ÷êÿ÷÷ÿ÷íÿ÷þÿýÿ÷íÿö®ÿäÿö©ÿëÿüÞÿüãÿöíÿüÿöûÿ÷êÿöûÿ÷ìÿ÷ûÿøÿèÿöûÿöèÿöûÿ÷ìÿÿÿöûÿ÷íÿöûÿöëÿöûÿöÿéÿöûÿ÷îÿ÷ûÿöçÿüüûÿ÷éÿ÷ûÿ÷ìÿ÷ûÿöøÿóÿ÷ûÿöçÿ÷ûÿ÷éÿ÷ÿþÿøéÿ÷¯ÿæÿö§ÿëÿüÞÿüäÿ÷ëÿúÿ÷ýÿ÷çÿ÷ýÿ÷êÿöþÿ÷äÿ÷ýÿ÷äÿ÷þÿöëÿýÿ÷þÿöêÿ÷ýÿ÷çÿ÷ýÿ÷þÿçÿ÷þÿöëÿ÷þÿ÷äÿýúÿÿöçÿöÿÿöéÿ÷þÿ÷öÿñÿ÷þÿ÷äÿöÿÿöçÿ÷öçÿö±ÿçÿ÷¥ÿìÿûÞÿûçÿ÷éÿøÿíãÿíæÿíÿÿâÿíàÿíéÿûÿíæÿíãÿíüÿæÿìèÿíàÿÿïãÿíæÿíôÿðÿíàÿíãÿùøãÿ÷²ÿéÿö¤ÿìÿüÜÿüèÿ÷èÿ÷ÿïáÿïãÿðþÿáÿïÞÿðçÿúÿðãÿïáÿïûÿäÿðäÿðÝÿñßÿñâÿðóÿîÿðÝÿñßÿûùàÿ÷´ÿëÿö¢ÿìÿüÜÿüêÿ÷æÿõÿóÝÿóàÿóüÿßÿóÚÿóæÿøÿóàÿóÝÿóùÿâÿóâÿóÛÿÿóÝÿóàÿóñÿíÿóÚÿóÝÿüûÝÿö¶ÿìÿ÷ ÿìÿüÜÿüìÿöåÿóÿ÷Ùÿ÷ÜÿöûÿÝÿ÷×ÿöäÿ÷ÿöÜÿ÷Ùÿ÷÷ÿáÿöÞÿ÷Ùÿþÿ÷Ùÿ÷Üÿ÷ïÿëÿ÷Öÿ÷ÛÿüúÜÿ÷·ÿîÿ÷žÿíÿûÜÿûîÿ÷ãÿõÿóÝÿóßÿôüÿßÿóÚÿôåÿøÿôßÿóÝÿóùÿâÿôáÿóÛÿÿóÝÿóàÿóñÿíÿóÚÿóÞÿûøÜÿ÷¹ÿðÿ’¼ðÿ÷áÿöÿñßÿñâÿñýÿàÿñÜÿñçÿùÿñâÿñßÿñúÿãÿñäÿðÝÿñßÿñâÿðóÿîÿðÝÿñáÿù÷Üÿö»ÿýÿ…¼òÿöàÿøÿíãÿíæÿíÿÿâÿíàÿíéÿûÿíæÿíãÿíüÿåÿíèÿíàÿÿïãÿíæÿíôÿðÿíàÿíäÿøÿÿ÷Üÿ÷¼ÿþÿ„¼óÿ÷Þÿúÿöÿÿ÷æÿöÿÿ÷èÿ÷ÿÿöãÿ÷ÿÿ÷ãÿöÿÿ÷êÿýÿöÿÿ÷èÿ÷ÿÿ÷åÿ÷ÿÿ÷ýÿçÿöÿÿ÷êÿ÷þÿ÷äÿýúÿÿöçÿöÿÿöéÿ÷þÿ÷öÿñÿ÷þÿ÷äÿöÿÿöèÿ÷ÿþÿöÜÿ÷¾ÿþÿ„»öÿ÷Üÿûÿ÷ûÿ÷éÿ÷ûÿ÷ìÿ÷ûÿøæÿ÷ûÿ÷æÿ÷ûÿ÷ìÿþÿ÷ûÿ÷ìÿ÷ûÿ÷éÿ÷ûÿ÷ÿÿèÿ÷ûÿ÷îÿ÷ûÿöçÿüüûÿ÷éÿ÷ûÿ÷ìÿ÷ûÿöøÿóÿ÷ûÿöçÿ÷ûÿ÷êÿøþÿüÿ÷Üÿ÷¿ÿþÿ„»øÿöÛÿýÿ÷øÿöíÿ÷øÿöðÿöøÿúþêÿöùÿöêÿ÷øÿöîÿÿ÷øÿöðÿöùÿöíÿöùÿöêÿ÷øÿ÷ñÿöøÿ÷êÿúþ÷ÿ÷íÿ÷÷ÿ÷ðÿöøÿ÷ùÿõÿöøÿ÷êÿ÷÷ÿ÷îÿ÷ýÿúÿ÷Üÿ÷Áÿÿÿƒ»ùÿ÷Ùÿþÿ÷õÿ÷ïÿ÷õÿ÷òÿ÷õÿûüíÿ÷õÿ÷íÿöõÿ÷ðÿ÷õÿ÷òÿ÷õÿ÷ïÿ÷õÿøíÿöõÿ÷ôÿ÷ôÿ÷îÿøÿõÿöñÿöõÿöóÿ÷ôÿ÷ûÿöÿ÷ôÿ÷îÿöõÿöñÿøûÿùÿöÝÿöÃÿÿÿƒ»ûÿ÷×ÿÿ÷ñÿ÷óÿ÷ñÿ÷öÿ÷ñÿýûðÿ÷ñÿ÷ðÿ÷ñÿ÷óÿÿùñÿ÷öÿ÷ñÿ÷óÿ÷ñÿúþðÿ÷òÿöøÿ÷ñÿ÷ðÿ÷ñÿ÷óÿ÷ñÿ÷öÿ÷ñÿ÷üÿøÿ÷ñÿ÷ðÿ÷ñÿ÷ôÿ÷úÿ÷ÿ÷Üÿ÷Äÿÿ‚ºýÿ÷×ÿ÷ïÿö÷ÿöïÿöùÿ÷îÿÿùôÿöïÿöôÿ÷îÿ÷öÿýûîÿ÷ùÿöïÿö÷ÿöïÿûüôÿ÷îÿ÷ûÿöîÿ÷ôÿ÷ÿÿïÿ÷÷ÿ÷íÿ÷úÿöîÿ÷þÿúÿöîÿ÷ôÿ÷íÿ÷÷ÿøøÿõÿ÷Üÿ÷Æÿÿ‚ºÿÿ÷Öÿÿùëÿ÷ùÿ÷ëÿ÷üÿ÷ëÿøöÿ÷ëÿ÷÷ÿöëÿ÷úÿûüëÿ÷üÿ÷ëÿ÷ùÿ÷ëÿýû÷ÿöëÿ÷þÿ÷ëÿö÷ÿ÷þÿîÿ÷ùÿ÷ëÿ÷üÿ÷ëÿöÿûÿ÷ëÿöøÿöëÿ÷úÿ÷÷ÿôÿ÷ÜÿöÈÿ¯×ÿýûçÿ÷ýÿ÷çÿ÷ÿöéÿÿ÷úÿ÷çÿ÷úÿ÷èÿöýÿúþèÿöÿ÷çÿ÷ýÿ÷çÿÿùúÿ÷èÿíçÿ÷úÿ÷üÿìÿ÷ýÿ÷çÿ÷ÿ÷çÿ÷ýÿ÷çÿ÷úÿ÷çÿ÷ýÿøõÿòÿ÷Üÿ÷Éÿ±×ÿûüåÿëåÿîçÿÿÿöþÿöåÿöþÿöåÿ÷ÿøÿåÿîåÿëåÿ÷þÿ÷äÿðäÿ÷þÿöûÿëÿëåÿîäÿùôäÿ÷þÿ÷äÿìôÿñÿöÜÿ÷ËÿµÍÿ´Îÿ´Îÿ´Îÿ´Îÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿûÌÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿûÌÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿüËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿüËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿüËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿüËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿûËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿûÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿûÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿøÿã¨ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿøÿã¨ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿ÷ÿå§ÿïÿÊÊÿÿÿÿÿÿÿÀÿûÈÿõÿé¥ÿïÿÊÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿÊÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿÊÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿæÿæÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿçþÿçÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿèüÿèÊÿÿÿÿÿÿÿÁÿûÇÿÿïÿéúÿéÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿêøÿêÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿëöÿëÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿìôÿìÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿíòÿíÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿîðÿîÊÿÿÿÿÿÿÿÂÿûÆÿÿïÿïîÿïÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿðìÿðÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿñêÿñÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿòèÿòÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿóæÿóÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿôäÿôÊÿÿÿÿÿÿÿÃÿûÅÿÿïÿõâÿõÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿöàÿöÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿ÷Þÿ÷ÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿøÜÿøÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿùÚÿùÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿúØÿúÊÿÿÿÿÿÿÿÄÿûÄÿÿïÿûÖÿûÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿüÔÿüÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿûÖÿûÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿúØÿúÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿùÚÿùÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿøÜÿøÊÿÿÿÿÿÿÿÅÿûÃÿÿïÿ÷Þÿ÷ÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿöàÿöÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿõâÿõÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿôäÿôÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿüÿùæÿùÿüÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿüÿÿùèÿùÿÿüÊÿÿÿÿÿÿÿÆÿûÂÿÿïÿüþÿùêÿùþÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüýÿùìÿùýÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüüÿùîÿùüÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüûÿùðÿùûÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüúÿùòÿùúÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüùÿùôÿùùÿüÊÿÿÿÿÿÿÿÇÿûÁÿÿïÿüøÿùöÿùøÿüÊÿÿÿÿÿÿÿÇÿüÀÿÿïÿü÷ÿùøÿù÷ÿüÊÿÿÿÿÿÿÿÇÿüÀÿÿïÿüöÿùúÿùöÿüÊÿÿÿÿÿÿÿÇÿüÀÿÿïÿüõÿùüÿùõÿüÊÿÿÿÿÿÿðÿþ•ÿÇÿüÀÿÿïÿüôÿùþÿùôÿüÊÿÿÿÿÿÿúÿô•ÿÈÿûÀÿÿïÿüóÿùÿùóÿüÊÿÿÿÿÿ„ÿþí•ÿÈÿûÀÿÿïÿüòÿòòÿüÊÿÿÿÿÿŽÿôí•ÿÈÿü¿ÿÿïÿüñÿôñÿüÊÿÿÿÿÿ—ÿëí•ÿÈÿü¿ÿÿïÿüðÿöðÿüÊÿÿÿÿÿ—ÿëí•ÿÈÿü¿ÿÿïÿüïÿøïÿüÊÿÿÿÿÿ—ÿëí•ÿÈÿü¿ÿÿïÿüïÿøïÿüÊÿÿÿÿÿ—ÿëí•ÿÉÿû¿ÿÿïÿüðÿöðÿüÊÿÿÿÿÿ˜ÿêí•ÿÉÿû¿ÿÿïÿüñÿôñÿüÊÿÿÿÿÿ˜ÿêí•ÿÉÿü¾ÿÿïÿüòÿòòÿüÊÿÿÿÿÿ˜ÿêî”ÿÉÿü¾ÿÿïÿüóÿùÿùóÿüÊÿÿÿÿÿ˜ÿêî”ÿÉÿü¾ÿÿïÿüôÿùþÿùôÿüÊÿÿÿÿÿ˜ÿêî”ÿÉÿü¾ÿÿïÿüõÿùüÿùõÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿû¾ÿÿïÿüöÿùúÿùöÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿû¾ÿÿïÿü÷ÿùøÿù÷ÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿü½ÿÿïÿüøÿùöÿùøÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿü½ÿÿïÿüùÿùôÿùùÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿü½ÿÿïÿüúÿùòÿùúÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿü½ÿÿïÿüûÿùðÿùûÿüÊÿÿÿÿÿ™ÿéî”ÿËÿû½ÿÿïÿüüÿùîÿùüÿüÊÿÿÿÿÿ™ÿéî”ÿËÿû½ÿÿïÿüýÿùìÿùýÿüÊÿÿÿÿÿ™ÿéî”ÿËÿü¼ÿÿïÿüþÿùêÿùþÿüÊÿÿÿÿÿ™ÿéï“ÿËÿü¼ÿÿïÿüÿÿùèÿùÿÿüÊÿÿÿÿÿ™ÿéï“ÿËÿü¼ÿÿïÿüÿùæÿùÿüÊÿÿÿÿÿ™ÿéï“ÿËÿü¼ÿÿïÿôäÿôÊÿÿÿÿÿ™ÿéï“ÿÌÿû¼ÿÿïÿõâÿõÊÿÿÿÿÿ™ÿéï“ÿÌÿû¼ÿÿïÿöàÿöÊÿÿÿÿÿ™ÿéï“ÿÌÿü»ÿÿïÿ÷Þÿ÷Êÿÿÿÿÿ™ÿéï“ÿÌÿü»ÿÿïÿøÜÿøÊÿÿÿÿÿ™ÿéï“ÿÌÿü»ÿÿïÿùÚÿùÊÿÿÿÿÿ™ÿéï“ÿÌÿü»ÿÿïÿúØÿúÊÿÿÿÿÿšÿèï“ÿÍÿû»ÿÿïÿúØÿúÊÿÿÿÿÿšÿèï“ÿÍÿû»ÿÿïÿùÚÿùÊÿÿÿÿÿšÿèð’ÿÍÿüºÿÿïÿøÜÿøÊÿÿÿÿÿšÿèð’ÿÍÿüºÿÿïÿ÷Þÿ÷Êÿÿÿÿÿšÿèð’ÿÍÿüºÿÿïÿöàÿöÊÿÿÿÿíÿ÷Ÿÿšÿèð’ÿÍÿüºÿÿïÿõâÿõÊÿÿÿÿ÷ÿíŸÿšÿèð’ÿÎÿûºÿÿïÿôäÿôÊÿÿÿÿäžÿšÿèð’ÿÎÿü¹ÿÿïÿüÿùæÿùÿüÊÿÿÿ‹ÿ÷äžÿšÿèð’ÿÎÿü¹ÿÿïÿüÿÿùèÿùÿÿüÊÿÿÿ”ÿîäžÿšÿèð’ÿÎÿü¹ÿÿïÿüþÿùêÿùþÿüÊÿÿÿÿåäžÿšÿèð’ÿÎÿü¹ÿÿïÿüýÿùìÿùýÿüÊÿÿÿÿåäžÿ›ÿçð’ÿÎÿü¹ÿÿïÿüüÿùîÿùüÿüÊÿÿÿžÿääžÿ›ÿçð’ÿÏÿû¹ÿÿïÿüûÿùðÿùûÿüÊÿÿÿžÿääžÿ›ÿçñ‘ÿÏÿü¸ÿÿïÿüúÿùòÿùúÿüÊÿÿÿŸÿãäžÿ›ÿçñ‘ÿÏÿôÀÿÿïÿüùÿùôÿùùÿüÊÿÿÿŸÿãäžÿ›ÿçñ‘ÿÔÿçÈÿÿïÿüøÿùöÿùøÿüÊÿÿÿŸÿãäžÿ›ÿçñ‘ÿÙÿÞÌÿÿïÿü÷ÿùøÿù÷ÿüÊÿÿÿ ÿâäžÿ›ÿçñ‘ÿÝÿ×ÏÿÿïÿüöÿùúÿùöÿüÊÿÿÿîÿø¼ÿâäžÿ›ÿçñ‘ÿàÿÑÒÿÿïÿüõÿùüÿùõÿüÊÿÿÿøÿî¼ÿâäžÿ›ÿçñ‘ÿãÿÌÔÿÿïÿüôÿùþÿùôÿüÊÿÿ‚ÿå½ÿáäžÿ›ÿçñ‘ÿåÿÈÖÿÿïÿüóÿùÿùóÿüÊÿÿŒÿöå½ÿáäžÿ›ÿçñ‘ÿèÿÃØÿÿïÿüòÿòòÿüÊÿÿ–ÿìå¾ÿàäžÿ›ÿçñ‘ÿêÿÀÙÿÿïÿüñÿôñÿüÊÿÿžÿää¿ÿàäžÿœÿæñ‘ÿìÿ¼ÛÿÿïÿüðÿöðÿüÊÿÿŸÿãä¿ÿàäžÿœÿæñ‘ÿîÿ¹ÜÿÿïÿüïÿøïÿüÊÿÿŸÿãäÀÿßäžÿœÿæòÿïÿ·ÝÿÿïÿüïÿøïÿüÊÿÿŸÿãäÀÿßäžÿœÿæò²ÿöêÿñÿ´ÞÿÿïÿüðÿöðÿüÊÿÿŸÿãäÀÿßäžÿœÿæò¼ÿíéÿóÿ±ßÿÿïÿüñÿôñÿüÊÿÿŸÿããÂÿÞäžÿœÿæòÆÿäèÿôÿ¯àÿÿïÿüòÿòòÿüÊÿÿŸÿããÂÿÞäžÿœÿæòÐÿÛçÿõÿ­áÿÿïÿüóÿùÿùóÿüÊÿÿ ÿâãÂÿÞäžÿœÿæòÚÿÒæÿ÷ÿªâÿÿïÿüôÿùþÿùôÿüÊÿÿ ÿâãÃÿÝäžÿœÿæòÝÿÐåÿøÿ¨ãÿÿïÿüõÿùüÿùõÿüÊÿÿ ÿâãÃÿÝäžÿœÿæòÝÿÐåÿùÿ§ãÿÿïÿüöÿùúÿùöÿüÊÿ£ÿíóÿ ÿâãÄÿÜäžÿœÿæòÞÿÐäÿúÿ¥äÿÿïÿü÷ÿùøÿù÷ÿüÊÿ«ÿÞúÿ ÿââÅÿÜäžÿÿåòßÿÐãÿüÿ¢åÿÿïÿüøÿùöÿùøÿüÊÿ°ÿÔÿÿ ÿââÅÿÜäžÿÿåòßÿÑâÿýÿ¡åÿÿïÿüùÿùôÿùùÿüÊÿ´ÿΡÿââÆÿÛåÿÿåóßÿÑáÿþÿŸæÿÿïÿüúÿùòÿùúÿüÊÿ¸ÿÊý¥ÿáâÆÿÛåÿÿåóàÿÑàÿÿÿžæÿÿïÿüûÿùðÿùûÿüÊÿ»ÿÇú¨ÿáâÆÿÛåÿÿåóàÿÒßÿÿœçÿÿïÿüüÿùîÿùüÿüÊÿ¾ÿÄøªÿááÈÿÚåÿÿåóáÿÑßÿ›çÿÿïÿüýÿùìÿùýÿüÊÿÁÿÁõ­ÿááÈÿÚåÿÿåóâÿÑßÿ›çÿÿïÿüþÿùêÿùþÿüÊÿÃÿ¿ó¯ÿááÉÿÙåÿÿåóâÿÒÞÿšèÿÿïÿüÿÿùèÿùÿÿüÊÿÅÿ½ò°ÿááÉÿÙåÿÿåóãÿÒÞÿÿšèÿÿïÿüÿùæÿùÿüÊÿÈÿºð²ÿááÉÿÙåÿëÿêÊÿåóäÿÒÞÿþ™éÿÿïÿôäÿôÊÿÊÿ¸îµÿàáÊÿØåÿõÿÕÕÿåóäÿÓÞÿý™éÿÿïÿõâÿõÊÿÌÿ¶í¶ÿààËÿØåÿûÿÉÜÿäóåÿÒßÿü™éÿÿïÿöàÿöÊÿÍÿµë¸ÿààËÿØåÿÿÀàÿäóæÿÒßÿû™éÿÿïÿ÷Þÿ÷ÊÿÏÿ³ê¹ÿààÌÿ×å ÿþ¿àÿäôæÿÒÞÿûÔõÿÑêÿÿïÿøÜÿøÊÿÑÿ±éºÿààÌÿ×å£ÿû¿àÿäôæÿÓÞÿú×ðÿÓêÿÿïÿùÚÿùÊÿÒÿ°ç¼ÿààÍÿÖå¦ÿø¿àÿäôçÿÓÞÿùÚëÿÕêÿÿïÿùÛÿøÊÿÔÿ®æ½ÿàßÎÿÖå©ÿõÀßÿäôèÿÓÝÿùÜèÿÖêÿÿïÿøÝÿ÷ÊÿÕÿ­å¿ÿßßÎÿÖå¬ÿòÀßÿäôèÿÓÞÿøÝæÿ×êÿÿïÿ÷ßÿöÊÿ×ÿ«äÀÿßßÏÿàÿ÷å®ÿðÀßÿäôéÿÓÞÿ÷ßãÿØêÿÿïÿöáÿõÊÿØÿªãÁÿßßÏÿàÿ÷å±ÿíÀßÿäôêÿÓÝÿ÷àâÿØêÿÿïÿõãÿôÊÿÚÿ¨âÂÿßßÏÿàÿ÷å³ÿëÀßÿäôêÿÔÝÿöáàÿÙêÿÿïÿüÿúåÿùÿüÊÿÛÿ§áÃÿßßÐÿàÿÿ÷åµÿéÀßÿäôëÿÔÜÿöâßÿØëÿÿïÿüÿÿúçÿùÿÿüÊÿÜÿ¦àÄÿßÞÑÿàÿÿ÷å·ÿçÀßÿäôìÿÔÜÿõãÞÿØëÿÿïÿüþÿúéÿùþÿüÊÿÝÿ¥ßÅÿßÞÑÿàÿöå¹ÿåÀàÿãôìÿÕÛÿõäÝÿØëÿÿïÿüýÿúëÿùýÿüÊÿÞÿ¤ßÆÿÞÞÒÿàÿÿöåºÿäÀàÿãôíÿÔÜÿôåÜÿØëÿÿïÿüüÿúíÿùüÿüÊÿàÿ¢ÞÇÿÞÞÒÿàÿÿöå¼ÿâÀàÿãõíÿÔÜÿóæÛÿØëÿÿïÿüûÿúïÿùûÿüÊÿáÿ¡ÝÈÿÞÞÓÿßÿÿöå¾ÿàÀàÿãõíÿÕÛÿóçÚÿØëÿÿïÿüúÿúñÿùúÿüÊÿâÿ ÜÉÿÞÝÔÿàþÿöå¿ÿßÁßÿãõîÿÕÚÿóçÚÿÙêÿÿïÿüùÿúóÿùùÿüÊÿãÿŸÜÉÿÞÝÔÿàþÿöåÀÿÞÁßÿãõïÿÕÚÿòèÚÿØêÿÿïÿüøÿúõÿùøÿüÊÿäÿžÛÊÿÞÝÕÿßþÿöåÂÿÜÁßÿãõïÿÖÙÿòéÙÿØêÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿåÿÚËÿÞÿÞÕÿàýÿöåÃÿÛÁßÿãõðÿÕÚÿñéÚÿ×êÿÿïÿüöÿúùÿùöÿüÊÿæÿœÚÌÿÝÿÞÕÿàýÿöåÄÿÚÁßÿãõñÿÕÙÿñêÚÿÖêÿÿïÿüõÿúûÿùõÿüÊÿçÿ›ÙÍÿÝÿÞÖÿßýÿöæÅÿØÁßÿãõñÿÖÙÿðêÚÿÖêÿÿïÿüôÿúýÿùôÿüÊÿèÿšØÎÿÝÿÝ×ÿàüÿöæÆÿ×ÁßÿãõòÿÖØÿðëÛÿÔêÿÿïÿüóÿúÿÿùóÿüÊÿèÿšØÎÿÞÿÿÝØÿßüÿöæÇÿÖÁàÿâõóÿÖ×ÿðëÜÿÔéÿÿïÿüòÿòòÿüÊÿéÿ™×ÏÿÞÿÿÝØÿßýÿõæÈÿÕÁàÿâõóÿ××ÿïëÝÿÓéÿÿïÿüñÿôñÿüÊÿêÿ¿ñÿê×ÏÿÞÿÿÝØÿàüÿõæÉÿÔÁàÿâöóÿÖ×ÿïìÞÿÑéÿÿïÿüðÿöðÿüÊÿëÿÂéÿîÖÑÿÝÿÿÿÞÙÿßüÿõæÊÿÓÁàÿâöôÿÖ×ÿîìàÿÏéÿÿïÿüïÿøïÿüÊÿìÿÄãÿñÖÑÿÝÿÿÿÝÚÿßüÿõæËÿÒÁàÿâöõÿÖÖÿîìãÿÍèÿÿïÿüïÿùîÿüÊÿìÿÆßÿóÕÒÿÝÿÿÿÝÚÿßüÿõæÌÿÑÂßÿâöõÿ×ÕÿîíåÿÊèÿÿïÿüðÿ÷ïÿüÊÿíÿÇÛÿõÕÒÿÝÿÿÿÝÛÿßûÿõæÍÿÐÂßÿâööÿ×ÕÿííéÿÇçÿÿïÿüñÿõðÿüÊÿîÿÈØÿöÔÓÿÝÿÿÿÝÛÿßûÿõæÎÿÏÂßÿâö÷ÿ×ÔÿíííÿÃçÿÿïÿüòÿóñÿüÊÿîÿÊÔÿøÔÓÿÝÿÿÿÝÛÿßûÿõæÏÿÎÂßÿâö÷ÿ×Ôÿííóÿ¾æÿÿïÿüóÿùÿúòÿüÊÿïÿÊÒÿùÓÔÿÝÿÿÿÜÝÿßúÿõæÐÿÍõüÿÓßÿâöøÿ×Óÿíîùÿ·æÿÿïÿüôÿùþÿúóÿüÊÿðÿËÏÿúÓÕÿÝÿÿþÿÝÝÿßúÿõæÑÿÌüòÿÖßÿâöùÿ×ÓÿìåÿÿïÿüõÿùüÿúôÿüÊÿðÿÌÍÿûÒÖÿÝÿÿþÿÝÞÿÞúÿõæÒÿËÿïÿÖßÿâöùÿØÒÿìåÿÿïÿüöÿùúÿúõÿüÊÿñÿÌËÿüÒÖÿÝÿÿþÿÝÞÿßùÿõæÒÿËíÿÖàÿáöúÿØÑÿìžäÿÿïÿü÷ÿùøÿúöÿüÊÿòÿÌÉÿýÒÖÿÝÿÿþÿÝÞÿßùÿõæÓÿÌÿÿíÿÖàÿá÷úÿØÐÿìŸãÿÿïÿüøÿùöÿú÷ÿüÊÿòÿÍÇÿþÑ×ÿÝÿÿþÿÝßÿÞúÿôæÔÿÍýÿíÿÖàÿá÷úÿÙÐÿëŸãÿÿïÿüùÿùôÿúøÿüÊÿóÿÍÅÿÿÑ×ÿÝÿÿþÿÜàÿßùÿôæÕÿÎûÿíÿÖàÿá÷ûÿØÐÿë âÿÿïÿüúÿùòÿúùÿüÊÿóÿÎÄÿÿÑ×ÿÝÿÿýÿÝàÿßùÿôæÕÿÏúÿíÿ×ßÿá÷üÿØÏÿë¡áÿÿïÿüûÿùðÿúúÿüÊÿôÿÎÂÿÐÙÿÜÿÿýÿÝáÿÞùÿôæÖÿÏùÿíÿ×ßÿá÷üÿÙÎÿë¢àÿÿïÿüüÿùîÿúûÿüÊÿõÿÎÁÿÐÙÿÜÿÿýÿÝáÿßøÿôæ×ÿÐ÷ÿíÿ×ßÿá÷ýÿÙÍÿë£ßÿÿïÿüýÿùìÿúüÿüÊÿõÿÏ¿ÿÐÙÿÝþÿýÿÝâÿÞøÿôæ×ÿÑöÿíÿ×ßÿá÷ýÿÚÌÿë¤ÞÿÿïÿüþÿùêÿúýÿüÊÿöÿϾÿÿÐÚÿÝþÿýÿÜãÿÞøÿôæØÿÑõÿîÿÖßÿá÷þÿÚÌÿê¥ÝÿÿïÿüÿÿùèÿúþÿüÊÿöÿϾÿÿÐÚÿÝþÿýÿÜãÿß÷ÿôæÙÿÑôÿîÿÖßÿá÷ÿÿÙÌÿê¦ÜÿÿïÿüÿùæÿúÿÿüÊÿ÷ÿϽÿÿÿÑÚÿÝþÿýÿÜäÿÞ÷ÿôæÙÿÒóÿîÿÖßÿá÷ÿÿÚËÿê¨ÚÿÿïÿôäÿúÿüÊÿ÷ÿмÿÿÿÑÚÿÝþÿüÿÝäÿßöÿôæÚÿÒòÿîÿÖàÿà÷ÿÙËÿê©ÙÿÿïÿõâÿõÊÿøÿϼÿþÿÑÜÿÜþÿüÿÝäÿßöÿôæÚÿÒòÿîÿÖàÿàÎËÿê«×ÿÿïÿöàÿöÊÿøÿлÿþÿÑÜÿÜþÿüÿÝåÿÞöÿôæÛÿÒñÿîÿÖàÿàøÿ×Ìÿê¬Öÿÿïÿ÷Þÿ÷ÊÿøÿѺÿþÿÑÜÿÜþÿüÿÜæÿßõÿôæÛÿÓðÿîÿÖàÿàÌÍÿê®ÔÿÿïÿøÜÿøÊÿùÿкÿýÿÒÜÿÜþÿüÿÜæÿßõÿôçÛÿÓïÿîÿ×ßÿàÌÍÿê°ÒÿÿïÿùÚÿùÊÿùÿѹÿýÿÑÝÿÜþÿüÿÜçÿÞõÿôçÛÿÔîÿîÿ×ßÿàËÎÿê²ÐÿÿïÿúØÿúÊÿúÿѸÿýÿÑÝÿÝýÿûÿÝçÿßôÿôçÜÿÓîÿîÿ×ßÿàËÎÿê´Îÿÿïÿû×ÿúÊÿúÿѸÿüÿÒÝÿÝýÿûÿÝçÿßõÿóçÜÿÔíÿîÿ×ßÿàÊÐÿé¶ÌÿÿïÿúÙÿùÊÿûÿÑ·ÿüÿÒÞÿÜýÿûÿÝèÿÞõÿóçÝÿÓíÿîÿ×ßÿàÉÑÿé¸ÊÿÿïÿùÛÿøÊÿûÿÑ·ÿüÿÒÞÿÜýÿûÿÜéÿßôÿóçÝÿÔìÿîÿ×ßÿàÉÑÿé»ÇÿÿïÿøÝÿ÷ÊÿûÿÒ¶ÿüÿÒÞÿÜýÿûÿÜéÿßôÿóçÞÿÔëÿîÿ×ßÿàÈÒÿé¾Äÿÿïÿ÷ßÿöÊÿüÿѶÿûÿÒßÿÜýÿûÿÜêÿÞôÿóçÞÿÔëÿïÿÖàÿßÈÒÿéÁÁÿÿïÿöáÿõÊÿüÿÒµÿûÿÒßÿÜýÿúÿÝêÿßóÿóçßÿÔêÿïÿÖàÿßÇÓÿéľÿÿïÿõãÿôÊÿüÿÒµÿûÿÒßÿÜýÿúÿÝëÿÞóÿóçßÿÔêÿïÿÖàÿ߯ÔÿéȺÿÿïÿüÿúåÿùÿüÊÿýÿÒ´ÿûÿÒßÿÜýÿúÿÝëÿÞóÿóçßÿÕéÿïÿÖàÿ߯Ôÿé̶ÿÿïÿüÿÿúçÿùÿÿüÊÿýÿÒ´ÿúÿÓàÿÛýÿúÿÜìÿßòÿóçàÿÔéÿïÿ×ßÿßÅÕÿéѱÿÿïÿüþÿúéÿùþÿüÊÿýÿÒ´ÿúÿÓàÿÜüÿúÿÜíÿÞòÿóçàÿÕèÿïÿ×ßÿßÅÕÿé׫ÿÿïÿüýÿúëÿùýÿüÊÿþÿÒ³ÿúÿÓàÿÜüÿúÿÜíÿÞòÿóçàÿÕèÿïÿ×ßÿßÄÕÿêÝ¥ÿÿïÿüüÿúíÿùüÿüÊÿþÿÒ³ÿúÿÓàÿÜüÿúÿÜíÿßñÿóçáÿÔèÿïÿ×ßÿßÃÖÿêæœÿÿïÿüûÿúïÿùûÿüÊÿþÿÓ²ÿúÿÓàÿÜüÿùÿÝîÿÞñÿóçáÿÕçÿïÿ×ßÿßÃÖÿêï“ÿÿïÿüúÿúñÿùúÿüÊÿÿÿÒ²ÿúÿÒáÿÜüÿùÿÜïÿßðÿóçáÿÕçÿïÿ×ßÿßÂ×ÿêï“ÿÿïÿüùÿúóÿùùÿüÊÿÿÿÒ²ÿúÿÒâÿÛüÿùÿÜïÿßðÿóçâÿÕæÿïÿ×ßÿßÁØÿêî”ÿÿïÿüøÿúõÿùøÿüÊÿÿÿÓ±ÿùÿÓâÿÛüÿùÿÜðÿÞðÿóçâÿÕæÿïÿ×ßÿßÁØÿêî”ÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿÿÿÓ±ÿùÿÓâÿÛüÿùÿÜðÿßïÿóçâÿÕæÿðÿÖàÿÞÀÙÿêî”ÿÿïÿüöÿúùÿùöÿüÊÿÿÒ±ÿùÿÓâÿÛüÿùÿÜðÿßðÿòçâÿÖåÿðÿÖàÿÞÀÙÿêí•ÿÿïÿüõÿúûÿùõÿüÊÿÿÓ°ÿùÿÓâÿÜûÿøÿÝðÿßðÿòçãÿÕåÿðÿÖàÿÞ¿Úÿêí•ÿÿïÿüôÿúýÿùôÿüÊÿÿÓ°ÿùÿÓâÿÜûÿøÿÜòÿßïÿòçãÿÕåÿðÿÖàÿÞ¾Úÿëí•ÿÿïÿüóÿúÿÿùóÿüÊÿÿÓ°ÿùÿÓâÿÜûÿøÿÜòÿßïÿòçãÿÕåÿðÿ×ßÿÞîÿÒÚÿëì–ÿÿïÿüòÿòòÿüÊÿÓ¯ÿùÿÓãÿÛûÿøÿÜòÿßïÿòçãÿÖäÿðÿ×ßÿÞïÿÿÑÛÿëì½ÿÿÜÿÿïÿüñÿôñÿüÊÿÓ¯ÿùÿÓãÿÛûÿøÿÜóÿßîÿòçäÿÕäÿðÿ×ßÿÞðýÿÒÛÿëëÀÿüÝÿÿïÿüðÿöðÿüÊÿÓ¯ÿùÿÓãÿÛûÿøÿÜóÿßîÿòçäÿÕäÿñÿÖßÿÞñüÿÑÜÿëëÂÿúÝÿÿïÿüïÿøïÿüÊÿÓ¯ÿùÿÓãÿÛûÿ÷ÿÝóÿàíÿòçäÿÕäÿñÿÖßÿÞñûÿÑÝÿëêÅÿøÝÿÿïÿüïÿùîÿüÊÿÔ®ÿùÿÓãÿÛûÿ÷ÿÜõÿßíÿòçäÿÖãÿñÿÖßÿÞòùÿÒÜÿìéÈÿöÝÿÿïÿüðÿ÷ïÿüËÿÔ®ÿùÿÓãÿÛûÿ÷ÿÜõÿßíÿòçäÿÖãÿñÿÖßÿÞóøÿÑÝÿìèËÿôÝÿÿïÿüñÿõðÿüËÿÔ®ÿùÿÓãÿÜúÿ÷ÿÜõÿàìÿòèäÿÕãÿñÿÖàÿÝôöÿÒÝÿìçÎÿñÞÿÿïÿüòÿóñÿüËÿÔ®ÿùÿÓäÿÛúÿ÷ÿÜöÿßìÿòèäÿÕãÿòÿÕàÿÝõõÿÑÞÿìæÒÿîÞÿÿïÿüóÿùÿúòÿüËÿÔ®ÿùÿÓäÿÛúÿöÿÝöÿßìÿòèäÿÕãÿòÿÕàÿÝöóÿÑÞÿíä×ÿëÞÿÿïÿüôÿùþÿúóÿüËÿÕ­ÿùÿÓäÿÛúÿöÿÝöÿàëÿòèäÿÕãÿòÿÕàÿÝöóÿÑÞÿíâÜÿèÞÿÿïÿüõÿùüÿúôÿüËÿÕ­ÿùÿÓäÿÛúÿöÿÜøÿßëÿòèäÿÕãÿòÿÕàÿÝ÷ñÿÑßÿíàâÿäÞÿÿïÿüöÿùúÿúõÿüÌÿÿÕ­ÿùÿÓäÿÛúÿöÿÜøÿàêÿòèäÿÖâÿóÿÕßÿÝøðÿÑÞÿîÝêÿÞßÿÿïÿü÷ÿùøÿúöÿüÌÿÿÕ­ÿùÿÓäÿÛúÿöÿÜøÿàêÿòèäÿÖâÿóÿÕßÿÝùîÿÑßÿîØõÿØßÿÿïÿüøÿùöÿú÷ÿüÌÿÿÕ­ÿùÿÓäÿÛúÿöÿÜøÿàêÿòèäÿÖâÿóÿÕßÿÝúíÿÐàÿî£ßÿÿïÿüùÿùôÿúøÿüÌÿÿÕ­ÿùÿÓåÿÛùÿõÿÝùÿàéÿòèäÿÖâÿóÿÕßÿÝûëÿÑßÿï£ßÿÿïÿüúÿùòÿúùÿüÌÿÿÖ¬ÿúÿÒåÿÛùÿõÿÝùÿàéÿòèåÿÕâÿôÿÔßÿÝûëÿÐàÿï£ßÿÿïÿüûÿùðÿúúÿüÌÿÿÖ¬ÿúÿÓäÿÛùÿõÿÝùÿàêÿñèåÿÕâÿôÿÔßÿÝûêÿÑßÿð¢àÿÿïÿüüÿùîÿúûÿüÌÿÿÖ¬ÿúÿÓäÿÛùÿõÿÜûÿàéÿñèåÿÕâÿôÿÔßÿÝûêÿÐàÿð¢àÿÿïÿüýÿùìÿúüÿüÌÿÿÖ¬ÿúÿÓäÿÛùÿõÿÜûÿàéÿñèåÿÕâÿõÿÓàÿÜûéÿÐàÿñ¢àÿÿïÿüþÿùêÿúýÿüÌÿÿÖ¬ÿúÿÓäÿÛùÿôÿÝûÿáèÿñèåÿÕâÿõÿÓàÿÜûèÿÑàÿñ¢àÿÿïÿüÿÿùèÿúþÿüÍÿþÖ¬ÿúÿÓäÿÛùÿôÿÝûÿáèÿñèåÿÕâÿöÿÒàÿÜüçÿÐàÿò¢àÿÿïÿüÿùæÿúÿÿüÍÿþÖ¬ÿúÿÓåÿÚùÿôÿÝüÿàèÿñèåÿÕâÿöÿÒàÿÜüæÿÑàÿò¡áÿÿïÿôäÿúÿüÍÿþÖ¬ÿûÿÒåÿÛøÿôÿÝüÿáçÿñèåÿÔãÿöÿÒàÿÜüæÿÐàÿó¡áÿÿïÿõâÿõÍÿþÖ¬ÿûÿÒåÿÛøÿôÿÝüÿáçÿñèåÿÔãÿ÷ÿÑàÿÜüåÿÐáÿó¡áÿÿïÿöàÿöÍÿþ׫ÿûÿÒåÿÛøÿóÿÝýÿâæÿñèåÿÔãÿ÷ÿÑàÿÜüåÿÐàÿô¡áÿÿïÿ÷Þÿ÷Íÿþ׫ÿûÿÓäÿÛøÿóÿÝþÿáæÿñèåÿÔãÿøÿÐàÿÜüäÿÐàÿõ¡áÿÿïÿøÜÿøÍÿþ׫ÿûÿÓäÿÛøÿóÿÝþÿáæÿñèåÿÔãÿøÿÐàÿÜüäÿÐàÿõ¡áÿÿïÿùÚÿùÍÿþ׫ÿûÿÓäÿÛøÿóÿÝþÿâåÿñèåÿÔãÿùÿÏàÿÜüãÿÐàÿö âÿÿïÿúØÿúÍÿþ׫ÿüÿÒåÿÚøÿóÿÝÿÿáåÿñèåÿÓäÿùÿÏàÿÜüãÿÏàÿ÷ âÿÿïÿûÖÿûÍÿþ׫ÿüÿÒåÿÛ÷ÿóÿÝÿÿáåÿñèåÿÓäÿúÿÎáÿÛüâÿÐßÿø âÿÿïÿüÔÿüÍÿþ׫ÿüÿÒåÿÛ÷ÿòÿÞÿÿâäÿñèåÿÓäÿûÿÍáÿÛüâÿÏàÿø âÿÿïÿûÖÿûÍÿþ׫ÿüÿÓäÿÛ÷ÿòÿÝÿâäÿñèåÿÒåÿûÿÍáÿÛüáÿÐßÿù¡áÿÿïÿúØÿúÍÿþ׫ÿýÿÒäÿÛ÷ÿòÿ¾ãÿñèäÿÓåÿüÿÌáÿÛýßÿÐßÿú£ßÿÿïÿùÚÿùÍÿþ׫ÿýÿÒäÿÛ÷ÿòÿ¾ãÿñèäÿÓåÿýÿËáÿÛýßÿÏßÿû¥ÝÿÿïÿøÜÿøÍÿþ׫ÿýÿÒåÿÚ÷ÿòÿ¾ãÿñèäÿÒæÿþÿÊáÿÛýÞÿÐÞÿü§Ûÿÿïÿ÷Þÿ÷Íÿþ׫ÿýÿÒåÿÚ÷ÿñÿÀâÿñèäÿÒæÿÿÿÉáÿÛýÞÿÏÝÿþ©ÙÿÿïÿöàÿöÍÿþ׫ÿþÿÒäÿÛöÿñÿÀâÿñéãÿÑçÿÿÿÉáÿÛýÝÿÐÜÿÿ«×ÿÿïÿõâÿõÍÿþÖ¬ÿþÿÒäÿÛöÿñÿÀâÿñéãÿÐèÿÇáÿÛýÝÿÏÜÿ­ÕÿÿïÿôäÿúÿüÍÿþÖ¬ÿþÿÒäÿÛöÿñÿÁâÿðéãÿÐéÿÇáÿÛýÜÿÏÜÿÿ±ÒÿÿïÿüÿùæÿúÿÿüÍÿþÖ¬ÿÿÿÑäÿÛöÿñÿÁâÿðéãÿÏëÿÿÇáÿÛýÜÿÏÜÿÿÿ´ÐÿÿïÿüÿÿùèÿúþÿüÍÿþÖ¬ÿÿÿÒãÿÛöÿðÿÃáÿðéãÿÎíÿþÇâÿÚýÛÿÏÝÿýÿ¹ÍÿÿïÿüþÿùêÿúýÿüÍÿþÖ¬ÿÿÿÒäÿÚöÿðÿÃáÿðéâÿÍñÿüÇâÿÚýÛÿÏÝÿûÿ¾ÊÿÿïÿüýÿùìÿúüÿüÍÿþÖ¬ÿÿÑäÿÚöÿðÿÃáÿðéâÿËõÿúÇâÿÚýÚÿÏÞÿùÿÃÇÿÿïÿüüÿùîÿúûÿüÍÿþÖ¬ÿÿÑäÿÚöÿðÿÄàÿðéâÿÈüÿöÇâÿÚþÙÿÎßÿ÷ÿÉÃÿÿïÿüûÿùðÿúúÿüÌÿÿÖ¬ÿÿÒãÿÛõÿðÿÄàÿðéâÿ¸ÇâÿÚþØÿÏßÿôÿпÿÿïÿüúÿùòÿúùÿüÌÿÿÖ¬ÿÑãÿÛõÿïÿÆßÿðéáÿ¹ÇâÿÚþØÿÎàÿñÿغÿÿïÿüùÿùôÿúøÿüÌÿÿÕ­ÿÑãÿÛõÿïÿÆßÿðéáÿ¹ïÿÚâÿÚþ×ÿÏàÿìÿã´ÿÿïÿüøÿùöÿú÷ÿüÌÿÿÕ®ÿÑãÿÛõÿïÿÆßÿðéáÿ¹ïÿÚâÿÚþÖÿÏáÿäÿô«ÿÿïÿü÷ÿùøÿúöÿüÌÿÿÕ®ÿÒãÿÚõÿïÿÇÞÿðéáÿ¹ðÿÿÚâÿÚþÖÿÎâÿÿÿïÿüöÿùúÿúõÿüÌÿÿÕ¯ÿÿÒãÿÚõÿïÿÇÞÿðéàÿºðÿÿÚâÿÚþÕÿÏâÿÿÿïÿüõÿùüÿúôÿüÌÿÿÕ¯ÿÿÒãÿÚõÿïÿÇÞÿðéàÿºñýÿÛâÿÚþÕÿÎãÿÿÿïÿüôÿùþÿúóÿüÌÿÿÔ°ÿÿÓâÿÛôÿîÿÉÝÿðéàÿºñýÿÛâÿÚþÔÿÏãÿÿÿïÿüóÿùÿúòÿüÌÿÿÔ±ÿþÓâÿÛôÿîÿÉÝÿðéßÿ»òüÿÛãÿÙþÔÿØÚÿÿÿïÿüòÿóñÿüËÿÔ±ÿþÔáÿÛôÿîÿÊÜÿðéßÿ»òüÿÛãÿÙþÓÿãÐÿÿÿïÿüñÿõðÿüËÿÓ³ÿýÔáÿÛôÿîÿÊÜÿðéÞÿ¼óûÿÛãÿÙÿÒÿíÆÿÿÿïÿüðÿ÷ïÿüËÿÓ³ÿýÔâÿÚôÿîÿÊÜÿðéÞÿ¼ôúÿÚäÿÙÿÑÿø¼ÿÿÿïÿüïÿùîÿüËÿÓ´ÿüÕáÿÚôÿíÿÌÛÿðéÝÿ½ôúÿÚäÿÙÿƒÿÿÿïÿüïÿøïÿüËÿÒ¶ÿûÕáÿÚôÿíÿÌÛÿðéÝÿ½õùÿÚäÿÙÿƒÿÿÿïÿüðÿöðÿüÊÿÒ¶ÿûÖàÿÛóÿíÿÌÛÿðéÜÿ¾öøÿÚäÿÙÿƒÿÿÿïÿüñÿôñÿüÊÿÒ·ÿúÖàÿÛóÿíÿÍÚÿðéÜÿ¾öøÿÚäÿÙÿƒÿÿÿïÿüòÿòòÿüÊÿѸÿúÖàÿÛóÿíÿÍÛÿïéÛÿ¿÷÷ÿÚäÿÙÿƒÿÿÿïÿüóÿúÿÿùóÿüÊÿѹÿù×ßÿÛóÿìÿÏÚÿïéÛÿ¿øöÿÚäÿÚÿÿÿÿïÿüôÿúýÿùôÿüÊÿÿÑ»ÿø×àÿÚóÿìÿÏÚÿïéÚÿÀùõÿÚäÿäöÿÿÿÿïÿüõÿúûÿùõÿüÊÿÿÑ»ÿøØßÿÚóÿìÿÏÚÿïéÙÿÁúôÿÚåÿíìÿÿÿÿïÿüöÿúùÿùöÿüÊÿÿнÿ÷ØßÿÚóÿìÿÐÙÿïéØÿÂûóÿÚåÿöãÿÿÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿÿоÿöÙÞÿÛòÿìÿÐÙÿïê×ÿÂüòÿÚ¼ÿÿÿÿïÿüøÿúõÿùøÿüÊÿÿÿÐÀÿõÙÞÿÛòÿëÿÒØÿïêÖÿÃýñÿÙ½ÿÿÿÿïÿüùÿúóÿùùÿüÊÿÿÿÐÀÿõÚÝÿÛòÿëÿÒØÿïêÕÿÄþðÿÙ½ÿÿÿÿïÿüúÿúñÿùúÿüÊÿÿÿÏÂÿôÚÝÿÛòÿëÿÒØÿïêÔÿÅÿïÿÛ»ÿÿÿÿïÿüûÿúïÿùûÿüÊÿþÿÏÄÿóÛÝÿÚòÿëÿÓ×ÿïêÓÿÆîÿå±ÿÿÿÿïÿüüÿúíÿùüÿüÊÿþÿÏÅÿòÛÝÿÚòÿëÿÓ×ÿïêÒÿÇíÿï§ÿÿÿÿïÿüýÿúëÿùýÿüÊÿþÿÎÇÿñÜÜÿÚòÿëÿÓ×ÿïêÑÿÊÿÿíÿùÿÿÿÿïÿüþÿúéÿùþÿüÊÿýÿÎÉÿðÝÛÿÚòÿêÿÕÖÿïêÏÿÍþÿÿÿÿÿïÿüÿÿúçÿùÿÿüÊÿýÿÍËÿïÝÛÿÛñÿêÿÕÖÿïêÎÿÐüÿÿÿÿÿïÿüÿúåÿùÿüÊÿüÿÍÍÿîÞÚÿÛñÿêÿÖÕÿïêÌÿÔúÿÿÿÿÿïÿõãÿôÊÿüÿÌÏÿíÞÛÿÚñÿêÿÖÕÿïêËÿ×øÿÿÿÿÿïÿöáÿõÊÿüÿËÒÿëßÚÿÚñÿêÿÖÕÿïêÉÿÛöÿÿÿÿÿïÿ÷ßÿöÊÿûÿÊÕÿêàÙÿÚñÿéÿØÔÿïêÆÿáóÿÿÿÿÿïÿøÝÿ÷ÊÿûÿÉØÿèàÙÿÚñÿéÿØÔÿïêÄÿæðÿÿÿÿÿïÿùÛÿøÊÿúÿÈÛÿçáØÿÚñÿéÿØÔÿïêÀÿîìÿÿÿÿÿïÿúÙÿùÊÿúÿÇÞÿåâ×ÿÛðÿéÿÙÓÿïê˜ÿÿÿÿÿïÿû×ÿúÊÿùÿÅãÿããÖÿÛðÿéÿÙÓÿïê˜ÿÿÿÿÿïÿúØÿúÊÿùÿÃèÿàã×ÿÚðÿèÿÛÓÿîê˜ÿÿÿÿÿïÿùÚÿùÊÿøÿÀðÿÜäÖÿÚðÿèÿÛÓÿîê˜ÿÿÿÿÿïÿøÜÿøÊÿøÿŠåÕÿÚðÿèÿÛÓÿîê˜ÿÿÿÿÿïÿ÷Þÿ÷Êÿ÷ÿ‹æÔÿÚðÿèÿÜÒÿîð’ÿÿÿÿÿïÿöàÿöÊÿöÿŒçÓÿÚðÿèÿÜÒÿîúˆÿÿÿÿÿïÿõâÿõÊÿöÿŒèÒÿÛïÿèÿÜÒÿñþÿÿÿÿÿÿïÿôäÿúÿüÊÿõÿèÒÿÛïÿçÿÞÑÿûôÿÿÿÿÿÿïÿüÿùæÿúÿÿüÊÿôÿŽéÒÿÚïÿçÿÞ¾ÿÿÿÿÿÿïÿüÿÿùèÿúþÿüÊÿôÿŽêÑÿÚïÿçÿß½ÿÿÿÿÿÿïÿüþÿùêÿúýÿüÊÿóÿëÐÿÚïÿçÿæ¶ÿÿÿÿÿÿïÿüýÿùìÿúüÿüÊÿòÿìÏÿÚïÿçÿï­ÿÿÿÿÿÿïÿüüÿùîÿúûÿüÊÿñÿ‘íÎÿÚïÿæÿú£ÿÿÿÿÿÿïÿüûÿùðÿúúÿüÊÿñÿ‘îÍÿÚïÿÿÿÿÿÿÿïÿüúÿùòÿúùÿüÊÿðÿ’ïÌÿÛîÿÿÿÿÿÿÿïÿüùÿùôÿúøÿüÊÿïÿ“ñËÿÚîÿÿÿÿÿÿÿïÿüøÿùöÿú÷ÿüÊÿîÿ”òÊÿÚîÿÿÿÿÿÿÿïÿü÷ÿùøÿúöÿüÊÿíÿ•óÉÿÚîÿÿÿÿÿÿÿïÿüöÿùúÿúõÿüÊÿìÿ–ôÈÿÚîÿÿÿÿÿÿÿïÿüõÿùüÿúôÿüÊÿëÿ—öÆÿÚîÿÿÿÿÿÿÿïÿüôÿùþÿúóÿüÊÿêÿ˜÷ÅÿÚîÿÿÿÿÿÿÿïÿüóÿùÿúòÿüÊÿéÿ™øÄÿßéÿÿÿÿÿÿÿïÿüòÿóñÿüÊÿèÿšúÃÿèßÿÿÿÿÿÿÿïÿüñÿõðÿüÊÿçÿ›ûÂÿòÕÿÿÿÿÿÿÿïÿüðÿ÷ïÿüÊÿåÿýÀÿüËÿÿÿÿÿÿÿïÿüïÿùîÿüÊÿäÿžÿƒÿÿÿÿÿÿÿïÿüïÿøïÿüÊÿãÿŸ‚ÿÿÿÿÿÿÿïÿüðÿöðÿüÊÿáÿ¢ÿÿÿÿÿÿÿÿïÿüñÿôñÿüÊÿàÿ¥þÿÿÿÿÿÿÿÿïÿüòÿòòÿüÊÿÞÿ©üÿÿÿÿÿÿÿÿïÿüóÿúÿÿùóÿüÊÿÜÿ­úÿÿÿÿÿÿÿÿïÿüôÿúýÿùôÿüÊÿÛÿ±÷ÿÿÿÿÿÿÿÿïÿüõÿúûÿùõÿüÊÿÙÿµõÿÿÿÿÿÿÿÿïÿüöÿúùÿùöÿüÊÿÖÿ»òÿÿÿÿÿÿÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿÔÿÀïÿÿÿÿÿÿÿÿïÿüøÿúõÿùøÿüÊÿÑÿÆìÿÿÿÿÿÿÿÿïÿüùÿúóÿùùÿüÊÿÎÿÍèÿÿÿÿÿÿÿÿïÿüúÿúñÿùúÿüÊÿËÿÔäÿÿÿÿÿÿÿÿïÿüûÿúïÿùûÿüÊÿÆÿßÞÿÿÿÿÿÿÿÿïÿüüÿúíÿùüÿüÊÿ¿ÿí×ÿÿÿÿÿÿÿÿïÿüýÿúëÿùýÿüÊÿÿÿÿÿÿÿÿÿïÿüþÿúéÿùþÿüÊÿÿÿÿÿÿÿÿÿïÿüÿÿúçÿùÿÿüÊÿÿÿÿÿÿÿÿÿïÿüÿúåÿùÿüÊÿÿÿÿÿÿÿÿÿïÿõãÿôÊÿÿÿÿÿÿÿÿÿïÿöáÿõÊÿÿÿÿÿÿÿÿÿïÿ÷ßÿöÊÿÿÿÿÿÿÿÿÿïÿøÝÿ÷ÊÿÿÿÿÿÿÿÿÿïÿùÛÿøÊÿÿÿÿÿÿÿÿÿïÿúÙÿùÊÿÿÿÿÿÿÿÿÿïÿùÛÿøÊÿÿÿÿÿÿÿÿÿïÿøÝÿ÷Êÿÿÿÿÿÿÿÿÿïÿ÷ßÿöÊÿÿÿÿÿÿÿÿÿïÿöáÿõÊÿÿÿÿÿÿÿÿÿïÿõãÿôÊÿÿÿÿÿÿÿÿÿïÿüÿúåÿùÿüÊÿÿÿÿÿÿÿÿÿïÿüÿÿúçÿùÿÿüÊÿÿÿÿÿÿÿÿÿïÿüþÿúéÿùþÿüÊÿÿÿÿÿÿÿÿÿïÿüýÿúëÿùýÿüÊÿÿÿÿÿÿÿÿÿïÿüüÿúíÿùüÿüÊÿÿÿÿÿÿÿÿÿïÿüûÿúïÿùûÿüÊÿÿÿÿÿÿÿÿÿïÿüúÿúñÿùúÿüÊÿÿÿÿÿÿÿÿÿïÿüùÿúóÿùùÿüÊÿÿÿÿÿÿÿÿÿïÿüøÿúõÿùøÿüÊÿÿÿÿÿÿÿÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿÿÿÿÿÿÿÿÿïÿüöÿúùÿùöÿüÊÿÿÿÿÿÿÿÿÿïÿüõÿúûÿùõÿüÊÿÿÿÿÿÿÿÿÿïÿüôÿúýÿùôÿüÊÿÿÿÿÿÿÿÿÿïÿüóÿúÿÿùóÿüÊÿÿÿÿÿÿÿÿÿïÿüòÿòòÿüÊÿÿÿÿÿÿÿÿÿïÿüñÿôñÿüÊÿÿÿÿÿÿÿÿÿïÿüðÿöðÿüÊÿÿÿÿÿÿÿÿÿïÿüïÿøïÿüÊÿÿÿÿÿÿÿÿÿïÿüïÿùîÿüÊÿÿÿÿÿÿÿÿÿïÿüðÿ÷ïÿüÊÿÿÿÿÿÿÿÿÿïÿüñÿõðÿüÊÿÿÿÿÿÿÿÿÿïÿüòÿóñÿüÊÿÿÿÿÿÿÿÿÿïÿüóÿùÿúòÿüÊÿÿÿÿÿÿÿÿÿïÿüôÿùþÿúóÿüÊÿÿÿÿÿÿÿÿÿïÿüõÿùüÿúôÿüÊÿÿÿÿÿÿÿÿÿïÿüöÿùúÿúõÿüÊÿÿÿÿÿÿÿÿÿïÿü÷ÿùøÿúöÿüÊÿÿÿÿÿÿÿÿÿïÿüøÿùöÿú÷ÿüÊÿÿÿÿÿÿÿÿÿïÿüùÿùôÿúøÿüÊÿÿÿÿÿÿÿÿÿïÿüúÿùòÿúùÿüÊÿÿÿÿÿÿÿÿÿïÿüûÿùðÿúúÿüÊÿÿÿÿÿÿÿÿÿïÿüüÿùîÿúûÿüÊÿÿÿÿÿÿÿÿÿïÿüýÿùìÿúüÿüÊÿÿÿÿÿÿÿÿÿïÿüþÿùêÿúýÿüÊÿÿÿÿÿÿÿÿÿïÿüÿÿùèÿúþÿüÊÿÿÿÿÿÿÿÿÿïÿüÿùæÿúÿÿüÊÿÿÿÿÿÿÿÿÿïÿôäÿúÿüÊÿÿÿÿÿÿÿÿÿïÿõâÿõÊÿÿÿÿÿÿÿÿÿïÿöàÿöÊÿÿÿÿÿÿÿÿÿïÿ÷Þÿ÷ÊÿÿÿÿÿÿÿÿÿïÿøÜÿøÊÿÿÿÿÿÿÿÿÿïÿùÚÿùÊÿÿÿÿÿÿÿÿÿîÿûØÿûÉÿÿÿÿÿÿÿÿÿíÿýÖÿýÈÿÿÿÿÿÿÿÿÿìÿÿÔÿÿÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"""""""""""" """"" """"""""""""""" """"**&&&&&&&&******&""""""V| ¤¦¤¦¤¦ fdfff\`œžœžœžž’t&&&&&&&&&&&***&&&&&&&&**************"""""""""""&&$..........2222....2222666::::::8:::>666:::::>>>FFFFFFFFFHHHHJFJJJJJJJRNNLNNNNNNLNNNJBFBBBBBBBBBBBJJJJJJJJJJJJJNLLLLLNNNRRRRRNNNNNNNNNJFFFFFFFFFBBBBB@FJJJJJFDHJFFFFFBBB>><<<@BBB>>>>><>:::22222....****......*********&&&"""""&&&&&&&&&&""""""""""""""""""""""""""""""""##"$*475<:=9ACBA>DD@E?FBD@@EBA@@EAFAE@DEADDEEBGAFDNQPTRNMLNKOPTVTVQTMOMA377Eoy|yww{wIÛÞÆÞâ6YkffefcY6ø&&&&&$&$&&&$&$&&&$&$&(('*$ %'')')))')')))')')))')'&))')')1337688868688>GDA=75575:<@@@@@>>@@@>==;911/-11//1<HEJJJDFDJPNMXZWWROIGTXWZ`[Wboi_bbad_^hpnqhilhimtssxxyzw|z~}€yzzŠ|†€‚…‰—’†‡ˆ‡‰††‰‡‡…}ƒvuojhkpmks{€}€„…~z{x|{ƒ€„ƒ‡‡„€ŠŒŽ‘Ž…{‚‚„‡‚‚€€suvqvvxwrntkgxx{y‚„Œ~|…xttovxukj^c^cjmtuuacfjnmja^\^]QW\FGKPUHGPKFLOPJA=??@@?BDD?7.00179:;:;<<>@<//.,*( !!!)+-/00000000000/-'''&'',.00000000000/.,*!!!!$ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×ÿó¹ÿÿÿÿÿÿÿÿÿÙÿåÅÿÿÿÿÿÿÿÿÿÚÿ×ÒÿÿÿÿÿÿÿÿÿÜÿÉÞÿÿÿÿÿÿÿÿÿÞÿºëÿÿÿÿÿÿÿÿÿàÿòúÿÂ÷ÿÿÿÿÿÿÿÿÿáÿñîÿÄÿƒÿÿÿÿÿÿÿÿãÿïáÿÑòÿÿÿÿÿÿÿÿåÿöÿøÖÿÝæœÿÿÿÿÿÿÿÿæÿ÷þÿøÊÿéÙ©ÿÿÿÿÿÿÿÿèÿöýÿø½ÿö͵ÿÿÿÿÿÿÿÿêÿöûÿø²ÿÿÂÁÿÿÿÿÿÿÿÿëÿ÷úÿö³ÿóÿÂÎÿÿÿÿÿÿÿÿíÿ÷øÿüÿü³ÿçÿÂÚÿÿÿÿÿÿÿÿïÿö÷ÿüÿü³ÿÛÿÁçÿÿÿÿÿÿÿÿñÿöõÿüÿü³ÿÎÿÂóÿÿÿÿÿÿÿÿòÿ÷ôÿûÿû´ÿÂÿÁÿÿÿÿÿÿÿÿôÿöóÿüþÿü´ÿµÿÍöŒÿÿÿÿÿÿÿöÿöñÿüþÿü´ÿ©ÿÙê˜ÿÿÿÿÿÿÿ÷ÿ÷ïÿüþÿü´ÿœÿæÝ¥ÿÿÿÿÿÿÿùÿöïÿûþÿûµÿÿòѱÿÿÿÿÿÿÿûÿöíÿüüÿüµÿ„ÿþľÿÿÿÿÿÿÿüÿ÷ëÿüüÿüµÿÿ÷ÿÂÊÿÿÿÿÿÿÿþÿ÷éÿüüÿüµÿÿëÿÁ×ÿÿÿÿÿÿÿÿöéÿûüÿû¶ÿÿÞÿÂãÿÿÿÿÿÿÿ÷çÿüúÿü¶ÿÿÒÿÂïÿÿÿÿÿÿƒÿÿùåÿüúÿü¶ÿÿÅÿÂüÿÿÿÿÿÿ…ÿýúäÿüúÿü¶ÿÿ¹ÿÉúˆÿÿÿÿÿ‡ÿûüãÿûúÿû·ÿÿ­ÿÕí•ÿÿÿÿÿˆÿúþáÿüøÿü·ÿÿ ÿâá¡ÿÿÿÿÿŠÿøÿàÿüøÿü·ÿÿ”ÿîÕ­ÿÿÿÿÿŒÿöÞÿüøÿü·ÿÿ‡ÿûȺÿÿÿÿÿÿ÷ÿÿßÿûøÿû¸ÿÿÿûÿÂÆÿÿÿÿÿÿöþÿßÿüöÿü¸ÿÿÿïÿÁÓÿÿÿÿÿ‘ÿöüÿßÿüöÿü¸ÿÿÿâÿÂßÿÿÿÿÿ’ÿ÷úÿßÿüöÿü¸ÿÿÿÖÿÁìÿÿÿÿÿ”ÿ÷øÿàÿûöÿû¹ÿÿÿÉÿÂøÿÿÿÿÿ–ÿö÷ÿàÿüõÿû¹ÿÿÿ½ÿÅþ„ÿÿÿÿ˜ÿöõÿàÿüôÿü¹ÿÿÿ°ÿÒñ‘ÿÿÿÿ™ÿ÷óÿàÿüôÿü¹ÿÿÿ¤ÿÞåÿÿÿÿ›ÿöòÿáÿûôÿûºÿÿÿ˜ÿêØªÿÿÿÿÿöðÿáÿûôÿûºÿÿÿ‹ÿ÷̶ÿÿÿÿžÿ÷îÿáÿüòÿüºÿÿÿÿÿÿÁÃÿÿÿÿ ÿöíÿáÿüòÿüºÿÿÿÿòÿÂÏÿÿÿÿ¢ÿöëÿâÿûòÿû»ÿÿÿÿæÿÂÛÿÿÿÿ£ÿ÷éÿâÿûòÿû»ÿÿÿÿÙÿÂèÿÿÿÿ¥ÿ÷çÿâÿúôÿú»ÿÿÿÿÍÿÂôÿÿÿÿ§ÿöæÿâÿùöÿù»ÿÿÿÿÁÿÁÿÿÿ©ÿöäÿãÿø÷ÿ÷¼ÿÿÿÿ´ÿÎõÿÿÿªÿ÷âÿãÿ÷ùÿö¼ÿÿÿÿ¨ÿÚé™ÿÿÿ¬ÿöáÿãÿöûÿõ¼ÿÿÿÿ›ÿçܦÿÿÿ®ÿößÿãÿõýÿô¼ÿÿÿÿÿóвÿÿÿ¯ÿ÷Ýÿäÿûÿúÿÿùÿû½ÿÿÿÿƒÿÿÿÿÿÿ±ÿöÜÿäÿûÿÿúÿúÿÿû½ÿÿÿÿÿöÿÂËÿÿÿ³ÿöÚÿäÿüýÿôýÿü½ÿÿÿÿÿêÿÁØÿÿÿ´ÿ÷Øÿäÿüýÿõüÿü½ÿÿÿÿÿÝÿÂäÿÿÿ¶ÿ÷Öÿåÿûüÿ÷ûÿû¾ÿÿÿÿÿÑÿÂðÿÿÿ¸ÿöÕÿåÿûûÿùúÿû¾ÿÿÿÿÿÄÿÂýÿÿÿºÿöÓÿåÿüúÿùùÿü¾ÿÿÿÿÿ¸ÿÊù‰ÿÿ»ÿ÷Ñÿåÿüûÿ÷úÿü¾ÿÿÿÿÿ¬ÿÖì–ÿÿ½ÿöÐÿæÿûüÿõûÿû¿ÿÿÿÿÿŸÿãà¢ÿÿ¿ÿöÎÿæÿûýÿóüÿû¿ÿÿÿÿÿ“ÿïÔ®ÿÿÀÿ÷Ìÿæÿüüÿúÿúüÿü¿ÿÿÿÿÿ†ÿüÇ»ÿÿÂÿöËÿæÿüýÿúÿÿùýÿü¿ÿÿÿÿÿÿúÿÂÇÿÿÄÿöÉÿçÿûþÿúýÿùþÿü¿ÿÿÿÿÿÿîÿÁÔÿÿÅÿ÷ÇÿçÿûÿÿúûÿúþÿûÀÿÿÿÿÿÿáÿÂàÿÿÇÿ÷ÅÿçÿüÿÿúùÿúþÿüÀÿÿÿÿÿÿÕÿÁíÿÿÉÿöÄÿçÿüÿú÷ÿúÿÿüÀÿÿÿÿÿÿÈÿÂùÿÿËÿöÂÿçÿõõÿúÿüÀÿÿÿÿÿÿ¼ÿÆý…ÿÌÿ÷ÀÿèÿôôÿôÁÿÿÿÿÿÿ¯ÿÓð’ÿÎÿö¿ÿèÿõòÿõÁÿ¥ÿÝèšÿÐÿö½ÿèÿöðÿöÌÿöæœÿÑÿ÷»ÿèÿ÷ïÿöÎÿôåÿÓÿöºÿéÿ÷íÿöÐÿóãŸÿÕÿö¸ÿéÿøëÿ÷Òÿñâ ÿÖÿ÷¶ÿéÿùéÿøÓÿðèáÿíàÿðÿáÿòáÿïâÿÿíàÿôáÿìùÿéÿïáÿòáÿúöáÿìáÿïóÿóÿî¢ÿØÿ÷´ÿéÿúçÿùÕÿ÷þÿûýãÿíãÿïçÿþÿ÷þÿ÷ãÿ÷þÿ÷äÿíäÿïãÿíãÿ÷þÿ÷äÿðäÿ÷þÿöûÿëÿëåÿîäÿùôäÿ÷þÿ÷äÿìôÿôÿ÷ÿö¤ÿÚÿö³ÿêÿúåÿùØÿöûÿýûçÿ÷ýÿ÷çÿ÷ÿ÷èÿÿ÷úÿ÷çÿ÷ûÿöçÿ÷þÿùþçÿ÷ÿ÷çÿ÷ýÿ÷çÿÿùûÿöçÿîçÿ÷úÿ÷üÿìÿ÷ýÿ÷çÿ÷ÿ÷çÿ÷ýÿ÷çÿ÷úÿ÷çÿ÷ýÿ÷öÿöÿ÷üÿ÷¥ÿÛÿ÷±ÿêÿúäÿúÙÿ÷øÿþùëÿöûÿöëÿöþÿöêÿ÷øÿöëÿöøÿ÷êÿ÷úÿûýêÿ÷ýÿöëÿöûÿöëÿýúøÿ÷êÿ÷þÿ÷ëÿö÷ÿ÷þÿîÿ÷ùÿ÷ëÿ÷üÿ÷ëÿöÿûÿ÷ëÿöøÿöëÿ÷úÿöøÿ÷ÿ÷ùÿ÷§ÿÝÿ÷¯ÿêÿûâÿûÛÿ÷ôÿøíÿ÷÷ÿ÷íÿ÷úÿ÷íÿÿùôÿ÷íÿ÷ôÿ÷íÿ÷÷ÿýûíÿ÷úÿ÷íÿ÷÷ÿ÷íÿüüôÿ÷îÿöüÿöîÿ÷ôÿ÷ÿÿïÿ÷÷ÿ÷íÿ÷úÿöîÿ÷þÿúÿöîÿ÷ôÿ÷íÿ÷÷ÿ÷ùÿøÿøöÿö©ÿßÿö®ÿêÿüàÿüÝÿöòÿÿ÷ñÿ÷óÿ÷ñÿ÷öÿ÷ñÿýúñÿ÷ñÿ÷ñÿöñÿ÷ôÿþùñÿ÷öÿ÷ñÿ÷óÿ÷ñÿúþñÿöñÿ÷øÿ÷ñÿ÷ðÿ÷ñÿ÷óÿ÷ñÿ÷öÿ÷ñÿ÷üÿøÿ÷ñÿ÷ðÿ÷ñÿ÷óÿ÷ûÿúÿ÷óÿ÷ªÿáÿö¬ÿëÿûàÿûßÿ÷ðÿÿÿ÷ôÿöñÿ÷ôÿöôÿöôÿüüîÿöõÿöîÿ÷ôÿöñÿøôÿöôÿöõÿöñÿöõÿøÿîÿ÷ôÿöõÿ÷ôÿ÷îÿøÿõÿöñÿöõÿöóÿ÷ôÿ÷ûÿöÿ÷ôÿ÷îÿöõÿöñÿöýÿûÿøïÿ÷¬ÿâÿ÷ªÿëÿüÞÿüáÿ÷îÿýÿ÷÷ÿ÷íÿ÷÷ÿ÷ðÿ÷÷ÿúþêÿ÷÷ÿ÷êÿ÷÷ÿ÷îÿÿ÷÷ÿ÷ðÿ÷÷ÿ÷íÿ÷÷ÿ÷êÿ÷÷ÿ÷òÿöøÿ÷êÿúþ÷ÿ÷íÿ÷÷ÿ÷ðÿöøÿ÷ùÿõÿöøÿ÷êÿ÷÷ÿ÷íÿ÷þÿýÿ÷íÿö®ÿäÿö©ÿëÿüÞÿüãÿöíÿüÿöûÿ÷êÿöûÿ÷ìÿ÷ûÿøÿèÿöûÿöèÿöûÿ÷ìÿÿÿöûÿ÷íÿöûÿöëÿöûÿöÿéÿöûÿ÷îÿ÷ûÿöçÿüüûÿ÷éÿ÷ûÿ÷ìÿ÷ûÿöøÿóÿ÷ûÿöçÿ÷ûÿ÷éÿ÷ÿþÿøéÿ÷¯ÿæÿö§ÿëÿüÞÿüäÿ÷ëÿúÿ÷ýÿ÷çÿ÷ýÿ÷êÿöþÿ÷äÿ÷ýÿ÷äÿ÷þÿöëÿýÿ÷þÿöêÿ÷ýÿ÷çÿ÷ýÿ÷þÿçÿ÷þÿöëÿ÷þÿ÷äÿýúÿÿöçÿöÿÿöéÿ÷þÿ÷öÿñÿ÷þÿ÷äÿöÿÿöçÿ÷öçÿö±ÿçÿ÷¥ÿìÿûÞÿûçÿ÷éÿøÿíãÿíæÿíÿÿâÿíàÿíéÿûÿíæÿíãÿíüÿæÿìèÿíàÿÿïãÿíæÿíôÿðÿíàÿíãÿùøãÿ÷²ÿéÿö¤ÿìÿüÜÿüèÿ÷èÿ÷ÿïáÿïãÿðþÿáÿïÞÿðçÿúÿðãÿïáÿïûÿäÿðäÿðÝÿñßÿñâÿðóÿîÿðÝÿñßÿûùàÿ÷´ÿëÿö¢ÿìÿüÜÿüêÿ÷æÿõÿóÝÿóàÿóüÿßÿóÚÿóæÿøÿóàÿóÝÿóùÿâÿóâÿóÛÿÿóÝÿóàÿóñÿíÿóÚÿóÝÿüûÝÿö¶ÿìÿ÷ ÿìÿüÜÿüìÿöåÿóÿ÷Ùÿ÷ÜÿöûÿÝÿ÷×ÿöäÿ÷ÿöÜÿ÷Ùÿ÷÷ÿáÿöÞÿ÷Ùÿþÿ÷Ùÿ÷Üÿ÷ïÿëÿ÷Öÿ÷ÛÿüúÜÿ÷·ÿîÿ÷žÿíÿûÜÿûîÿ÷ãÿõÿóÝÿóßÿôüÿßÿóÚÿôåÿøÿôßÿóÝÿóùÿâÿôáÿóÛÿÿóÝÿóàÿóñÿíÿóÚÿóÞÿûøÜÿ÷¹ÿðÿ’¼ðÿ÷áÿöÿñßÿñâÿñýÿàÿñÜÿñçÿùÿñâÿñßÿñúÿãÿñäÿðÝÿñßÿñâÿðóÿîÿðÝÿñáÿù÷Üÿö»ÿýÿ…¼òÿöàÿøÿíãÿíæÿíÿÿâÿíàÿíéÿûÿíæÿíãÿíüÿåÿíèÿíàÿÿïãÿíæÿíôÿðÿíàÿíäÿøÿÿ÷Üÿ÷¼ÿþÿ„¼óÿ÷Þÿúÿöÿÿ÷æÿöÿÿ÷èÿ÷ÿÿöãÿ÷ÿÿ÷ãÿöÿÿ÷êÿýÿöÿÿ÷èÿ÷ÿÿ÷åÿ÷ÿÿ÷ýÿçÿöÿÿ÷êÿ÷þÿ÷äÿýúÿÿöçÿöÿÿöéÿ÷þÿ÷öÿñÿ÷þÿ÷äÿöÿÿöèÿ÷ÿþÿöÜÿ÷¾ÿþÿ„»öÿ÷Üÿûÿ÷ûÿ÷éÿ÷ûÿ÷ìÿ÷ûÿøæÿ÷ûÿ÷æÿ÷ûÿ÷ìÿþÿ÷ûÿ÷ìÿ÷ûÿ÷éÿ÷ûÿ÷ÿÿèÿ÷ûÿ÷îÿ÷ûÿöçÿüüûÿ÷éÿ÷ûÿ÷ìÿ÷ûÿöøÿóÿ÷ûÿöçÿ÷ûÿ÷êÿøþÿüÿ÷Üÿ÷¿ÿþÿ„»øÿöÛÿýÿ÷øÿöíÿ÷øÿöðÿöøÿúþêÿöùÿöêÿ÷øÿöîÿÿ÷øÿöðÿöùÿöíÿöùÿöêÿ÷øÿ÷ñÿöøÿ÷êÿúþ÷ÿ÷íÿ÷÷ÿ÷ðÿöøÿ÷ùÿõÿöøÿ÷êÿ÷÷ÿ÷îÿ÷ýÿúÿ÷Üÿ÷Áÿÿÿƒ»ùÿ÷Ùÿþÿ÷õÿ÷ïÿ÷õÿ÷òÿ÷õÿûüíÿ÷õÿ÷íÿöõÿ÷ðÿ÷õÿ÷òÿ÷õÿ÷ïÿ÷õÿøíÿöõÿ÷ôÿ÷ôÿ÷îÿøÿõÿöñÿöõÿöóÿ÷ôÿ÷ûÿöÿ÷ôÿ÷îÿöõÿöñÿøûÿùÿöÝÿöÃÿÿÿƒ»ûÿ÷×ÿÿ÷ñÿ÷óÿ÷ñÿ÷öÿ÷ñÿýûðÿ÷ñÿ÷ðÿ÷ñÿ÷óÿÿùñÿ÷öÿ÷ñÿ÷óÿ÷ñÿúþðÿ÷òÿöøÿ÷ñÿ÷ðÿ÷ñÿ÷óÿ÷ñÿ÷öÿ÷ñÿ÷üÿøÿ÷ñÿ÷ðÿ÷ñÿ÷ôÿ÷úÿ÷ÿ÷Üÿ÷Äÿÿ‚ºýÿ÷×ÿ÷ïÿö÷ÿöïÿöùÿ÷îÿÿùôÿöïÿöôÿ÷îÿ÷öÿýûîÿ÷ùÿöïÿö÷ÿöïÿûüôÿ÷îÿ÷ûÿöîÿ÷ôÿ÷ÿÿïÿ÷÷ÿ÷íÿ÷úÿöîÿ÷þÿúÿöîÿ÷ôÿ÷íÿ÷÷ÿøøÿõÿ÷Üÿ÷Æÿÿ‚ºÿÿ÷Öÿÿùëÿ÷ùÿ÷ëÿ÷üÿ÷ëÿøöÿ÷ëÿ÷÷ÿöëÿ÷úÿûüëÿ÷üÿ÷ëÿ÷ùÿ÷ëÿýû÷ÿöëÿ÷þÿ÷ëÿö÷ÿ÷þÿîÿ÷ùÿ÷ëÿ÷üÿ÷ëÿöÿûÿ÷ëÿöøÿöëÿ÷úÿ÷÷ÿôÿ÷ÜÿöÈÿ¯×ÿýûçÿ÷ýÿ÷çÿ÷ÿöéÿÿ÷úÿ÷çÿ÷úÿ÷èÿöýÿúþèÿöÿ÷çÿ÷ýÿ÷çÿÿùúÿ÷èÿíçÿ÷úÿ÷üÿìÿ÷ýÿ÷çÿ÷ÿ÷çÿ÷ýÿ÷çÿ÷úÿ÷çÿ÷ýÿøõÿòÿ÷Üÿ÷Éÿ±×ÿûüåÿëåÿîçÿÿÿöþÿöåÿöþÿöåÿ÷ÿøÿåÿîåÿëåÿ÷þÿ÷äÿðäÿ÷þÿöûÿëÿëåÿîäÿùôäÿ÷þÿ÷äÿìôÿñÿöÜÿ÷ËÿµÍÿ´Îÿ´Îÿ´Îÿ´Îÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿûÌÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿûÌÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿüËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿüËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿüËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¼ÿüËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿûËÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ½ÿüÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿûÊÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¾ÿüÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿûÉÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿøÿâ©ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿøÿã¨ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿøÿã¨ÿïÿÊÊÿÿÿÿÿÿÿ¿ÿüÈÿ÷ÿå§ÿïÿÊÊÿÿÿÿÿÿÿÀÿûÈÿõÿé¥ÿïÿÊÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿÊÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿÊÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿæÿæÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿçþÿçÊÿÿÿÿÿÿÿÀÿüÇÿÿïÿèüÿèÊÿÿÿÿÿÿÿÁÿûÇÿÿïÿéúÿéÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿêøÿêÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿëöÿëÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿìôÿìÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿíòÿíÊÿÿÿÿÿÿÿÁÿüÆÿÿïÿîðÿîÊÿÿÿÿÿÿÿÂÿûÆÿÿïÿïîÿïÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿðìÿðÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿñêÿñÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿòèÿòÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿóæÿóÊÿÿÿÿÿÿÿÂÿüÅÿÿïÿôäÿôÊÿÿÿÿÿÿÿÃÿûÅÿÿïÿõâÿõÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿöàÿöÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿ÷Þÿ÷ÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿøÜÿøÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿùÚÿùÊÿÿÿÿÿÿÿÃÿüÄÿÿïÿúØÿúÊÿÿÿÿÿÿÿÄÿûÄÿÿïÿûÖÿûÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿüÔÿüÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿûÖÿûÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿúØÿúÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿùÚÿùÊÿÿÿÿÿÿÿÄÿüÃÿÿïÿøÜÿøÊÿÿÿÿÿÿÿÅÿûÃÿÿïÿ÷Þÿ÷ÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿöàÿöÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿõâÿõÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿôäÿôÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿüÿùæÿùÿüÊÿÿÿÿÿÿÿÅÿüÂÿÿïÿüÿÿùèÿùÿÿüÊÿÿÿÿÿÿÿÆÿûÂÿÿïÿüþÿùêÿùþÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüýÿùìÿùýÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüüÿùîÿùüÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüûÿùðÿùûÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüúÿùòÿùúÿüÊÿÿÿÿÿÿÿÆÿüÁÿÿïÿüùÿùôÿùùÿüÊÿÿÿÿÿÿÿÇÿûÁÿÿïÿüøÿùöÿùøÿüÊÿÿÿÿÿÿÿÇÿüÀÿÿïÿü÷ÿùøÿù÷ÿüÊÿÿÿÿÿÿÿÇÿüÀÿÿïÿüöÿùúÿùöÿüÊÿÿÿÿÿÿÿÇÿüÀÿÿïÿüõÿùüÿùõÿüÊÿÿÿÿÿÿðÿþ•ÿÇÿüÀÿÿïÿüôÿùþÿùôÿüÊÿÿÿÿÿÿúÿô•ÿÈÿûÀÿÿïÿüóÿùÿùóÿüÊÿÿÿÿÿ„ÿþí•ÿÈÿûÀÿÿïÿüòÿòòÿüÊÿÿÿÿÿŽÿôí•ÿÈÿü¿ÿÿïÿüñÿôñÿüÊÿÿÿÿÿ—ÿëí•ÿÈÿü¿ÿÿïÿüðÿöðÿüÊÿÿÿÿÿ—ÿëí•ÿÈÿü¿ÿÿïÿüïÿøïÿüÊÿÿÿÿÿ—ÿëí•ÿÈÿü¿ÿÿïÿüïÿøïÿüÊÿÿÿÿÿ—ÿëí•ÿÉÿû¿ÿÿïÿüðÿöðÿüÊÿÿÿÿÿ˜ÿêí•ÿÉÿû¿ÿÿïÿüñÿôñÿüÊÿÿÿÿÿ˜ÿêí•ÿÉÿü¾ÿÿïÿüòÿòòÿüÊÿÿÿÿÿ˜ÿêî”ÿÉÿü¾ÿÿïÿüóÿùÿùóÿüÊÿÿÿÿÿ˜ÿêî”ÿÉÿü¾ÿÿïÿüôÿùþÿùôÿüÊÿÿÿÿÿ˜ÿêî”ÿÉÿü¾ÿÿïÿüõÿùüÿùõÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿû¾ÿÿïÿüöÿùúÿùöÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿû¾ÿÿïÿü÷ÿùøÿù÷ÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿü½ÿÿïÿüøÿùöÿùøÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿü½ÿÿïÿüùÿùôÿùùÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿü½ÿÿïÿüúÿùòÿùúÿüÊÿÿÿÿÿ˜ÿêî”ÿÊÿü½ÿÿïÿüûÿùðÿùûÿüÊÿÿÿÿÿ™ÿéî”ÿËÿû½ÿÿïÿüüÿùîÿùüÿüÊÿÿÿÿÿ™ÿéî”ÿËÿû½ÿÿïÿüýÿùìÿùýÿüÊÿÿÿÿÿ™ÿéî”ÿËÿü¼ÿÿïÿüþÿùêÿùþÿüÊÿÿÿÿÿ™ÿéï“ÿËÿü¼ÿÿïÿüÿÿùèÿùÿÿüÊÿÿÿÿÿ™ÿéï“ÿËÿü¼ÿÿïÿüÿùæÿùÿüÊÿÿÿÿÿ™ÿéï“ÿËÿü¼ÿÿïÿôäÿôÊÿÿÿÿÿ™ÿéï“ÿÌÿû¼ÿÿïÿõâÿõÊÿÿÿÿÿ™ÿéï“ÿÌÿû¼ÿÿïÿöàÿöÊÿÿÿÿÿ™ÿéï“ÿÌÿü»ÿÿïÿ÷Þÿ÷Êÿÿÿÿÿ™ÿéï“ÿÌÿü»ÿÿïÿøÜÿøÊÿÿÿÿÿ™ÿéï“ÿÌÿü»ÿÿïÿùÚÿùÊÿÿÿÿÿ™ÿéï“ÿÌÿü»ÿÿïÿúØÿúÊÿÿÿÿÿšÿèï“ÿÍÿû»ÿÿïÿúØÿúÊÿÿÿÿÿšÿèï“ÿÍÿû»ÿÿïÿùÚÿùÊÿÿÿÿÿšÿèð’ÿÍÿüºÿÿïÿøÜÿøÊÿÿÿÿÿšÿèð’ÿÍÿüºÿÿïÿ÷Þÿ÷Êÿÿÿÿÿšÿèð’ÿÍÿüºÿÿïÿöàÿöÊÿÿÿÿíÿ÷Ÿÿšÿèð’ÿÍÿüºÿÿïÿõâÿõÊÿÿÿÿ÷ÿíŸÿšÿèð’ÿÎÿûºÿÿïÿôäÿôÊÿÿÿÿäžÿšÿèð’ÿÎÿü¹ÿÿïÿüÿùæÿùÿüÊÿÿÿ‹ÿ÷äžÿšÿèð’ÿÎÿü¹ÿÿïÿüÿÿùèÿùÿÿüÊÿÿÿ”ÿîäžÿšÿèð’ÿÎÿü¹ÿÿïÿüþÿùêÿùþÿüÊÿÿÿÿåäžÿšÿèð’ÿÎÿü¹ÿÿïÿüýÿùìÿùýÿüÊÿÿÿÿåäžÿ›ÿçð’ÿÎÿü¹ÿÿïÿüüÿùîÿùüÿüÊÿÿÿžÿääžÿ›ÿçð’ÿÏÿû¹ÿÿïÿüûÿùðÿùûÿüÊÿÿÿžÿääžÿ›ÿçñ‘ÿÏÿü¸ÿÿïÿüúÿùòÿùúÿüÊÿÿÿŸÿãäžÿ›ÿçñ‘ÿÏÿôÀÿÿïÿüùÿùôÿùùÿüÊÿÿÿŸÿãäžÿ›ÿçñ‘ÿÔÿçÈÿÿïÿüøÿùöÿùøÿüÊÿÿÿŸÿãäžÿ›ÿçñ‘ÿÙÿÞÌÿÿïÿü÷ÿùøÿù÷ÿüÊÿÿÿ ÿâäžÿ›ÿçñ‘ÿÝÿ×ÏÿÿïÿüöÿùúÿùöÿüÊÿÿÿîÿø¼ÿâäžÿ›ÿçñ‘ÿàÿÑÒÿÿïÿüõÿùüÿùõÿüÊÿÿÿøÿî¼ÿâäžÿ›ÿçñ‘ÿãÿÌÔÿÿïÿüôÿùþÿùôÿüÊÿÿ‚ÿå½ÿáäžÿ›ÿçñ‘ÿåÿÈÖÿÿïÿüóÿùÿùóÿüÊÿÿŒÿöå½ÿáäžÿ›ÿçñ‘ÿèÿÃØÿÿïÿüòÿòòÿüÊÿÿ–ÿìå¾ÿàäžÿ›ÿçñ‘ÿêÿÀÙÿÿïÿüñÿôñÿüÊÿÿžÿää¿ÿàäžÿœÿæñ‘ÿìÿ¼ÛÿÿïÿüðÿöðÿüÊÿÿŸÿãä¿ÿàäžÿœÿæñ‘ÿîÿ¹ÜÿÿïÿüïÿøïÿüÊÿÿŸÿãäÀÿßäžÿœÿæòÿïÿ·ÝÿÿïÿüïÿøïÿüÊÿÿŸÿãäÀÿßäžÿœÿæò²ÿöêÿñÿ´ÞÿÿïÿüðÿöðÿüÊÿÿŸÿãäÀÿßäžÿœÿæò¼ÿíéÿóÿ±ßÿÿïÿüñÿôñÿüÊÿÿŸÿããÂÿÞäžÿœÿæòÆÿäèÿôÿ¯àÿÿïÿüòÿòòÿüÊÿÿŸÿããÂÿÞäžÿœÿæòÐÿÛçÿõÿ­áÿÿïÿüóÿùÿùóÿüÊÿÿ ÿâãÂÿÞäžÿœÿæòÚÿÒæÿ÷ÿªâÿÿïÿüôÿùþÿùôÿüÊÿÿ ÿâãÃÿÝäžÿœÿæòÝÿÐåÿøÿ¨ãÿÿïÿüõÿùüÿùõÿüÊÿÿ ÿâãÃÿÝäžÿœÿæòÝÿÐåÿùÿ§ãÿÿïÿüöÿùúÿùöÿüÊÿ£ÿíóÿ ÿâãÄÿÜäžÿœÿæòÞÿÐäÿúÿ¥äÿÿïÿü÷ÿùøÿù÷ÿüÊÿ«ÿÞúÿ ÿââÅÿÜäžÿÿåòßÿÐãÿüÿ¢åÿÿïÿüøÿùöÿùøÿüÊÿ°ÿÔÿÿ ÿââÅÿÜäžÿÿåòßÿÑâÿýÿ¡åÿÿïÿüùÿùôÿùùÿüÊÿ´ÿΡÿââÆÿÛåÿÿåóßÿÑáÿþÿŸæÿÿïÿüúÿùòÿùúÿüÊÿ¸ÿÊý¥ÿáâÆÿÛåÿÿåóàÿÑàÿÿÿžæÿÿïÿüûÿùðÿùûÿüÊÿ»ÿÇú¨ÿáâÆÿÛåÿÿåóàÿÒßÿÿœçÿÿïÿüüÿùîÿùüÿüÊÿ¾ÿÄøªÿááÈÿÚåÿÿåóáÿÑßÿ›çÿÿïÿüýÿùìÿùýÿüÊÿÁÿÁõ­ÿááÈÿÚåÿÿåóâÿÑßÿ›çÿÿïÿüþÿùêÿùþÿüÊÿÃÿ¿ó¯ÿááÉÿÙåÿÿåóâÿÒÞÿšèÿÿïÿüÿÿùèÿùÿÿüÊÿÅÿ½ò°ÿááÉÿÙåÿÿåóãÿÒÞÿÿšèÿÿïÿüÿùæÿùÿüÊÿÈÿºð²ÿááÉÿÙåÿëÿêÊÿåóäÿÒÞÿþ™éÿÿïÿôäÿôÊÿÊÿ¸îµÿàáÊÿØåÿõÿÕÕÿåóäÿÓÞÿý™éÿÿïÿõâÿõÊÿÌÿ¶í¶ÿààËÿØåÿûÿÉÜÿäóåÿÒßÿü™éÿÿïÿöàÿöÊÿÍÿµë¸ÿààËÿØåÿÿÀàÿäóæÿÒßÿû™éÿÿïÿ÷Þÿ÷ÊÿÏÿ³ê¹ÿààÌÿ×å ÿþ¿àÿäôæÿÒÞÿûÔõÿÑêÿÿïÿøÜÿøÊÿÑÿ±éºÿààÌÿ×å£ÿû¿àÿäôæÿÓÞÿú×ðÿÓêÿÿïÿùÚÿùÊÿÒÿ°ç¼ÿààÍÿÖå¦ÿø¿àÿäôçÿÓÞÿùÚëÿÕêÿÿïÿùÛÿøÊÿÔÿ®æ½ÿàßÎÿÖå©ÿõÀßÿäôèÿÓÝÿùÜèÿÖêÿÿïÿøÝÿ÷ÊÿÕÿ­å¿ÿßßÎÿÖå¬ÿòÀßÿäôèÿÓÞÿøÝæÿ×êÿÿïÿ÷ßÿöÊÿ×ÿ«äÀÿßßÏÿàÿ÷å®ÿðÀßÿäôéÿÓÞÿ÷ßãÿØêÿÿïÿöáÿõÊÿØÿªãÁÿßßÏÿàÿ÷å±ÿíÀßÿäôêÿÓÝÿ÷àâÿØêÿÿïÿõãÿôÊÿÚÿ¨âÂÿßßÏÿàÿ÷å³ÿëÀßÿäôêÿÔÝÿöáàÿÙêÿÿïÿüÿúåÿùÿüÊÿÛÿ§áÃÿßßÐÿàÿÿ÷åµÿéÀßÿäôëÿÔÜÿöâßÿØëÿÿïÿüÿÿúçÿùÿÿüÊÿÜÿ¦àÄÿßÞÑÿàÿÿ÷å·ÿçÀßÿäôìÿÔÜÿõãÞÿØëÿÿïÿüþÿúéÿùþÿüÊÿÝÿ¥ßÅÿßÞÑÿàÿöå¹ÿåÀàÿãôìÿÕÛÿõäÝÿØëÿÿïÿüýÿúëÿùýÿüÊÿÞÿ¤ßÆÿÞÞÒÿàÿÿöåºÿäÀàÿãôíÿÔÜÿôåÜÿØëÿÿïÿüüÿúíÿùüÿüÊÿàÿ¢ÞÇÿÞÞÒÿàÿÿöå¼ÿâÀàÿãõíÿÔÜÿóæÛÿØëÿÿïÿüûÿúïÿùûÿüÊÿáÿ¡ÝÈÿÞÞÓÿßÿÿöå¾ÿàÀàÿãõíÿÕÛÿóçÚÿØëÿÿïÿüúÿúñÿùúÿüÊÿâÿ ÜÉÿÞÝÔÿàþÿöå¿ÿßÁßÿãõîÿÕÚÿóçÚÿÙêÿÿïÿüùÿúóÿùùÿüÊÿãÿŸÜÉÿÞÝÔÿàþÿöåÀÿÞÁßÿãõïÿÕÚÿòèÚÿØêÿÿïÿüøÿúõÿùøÿüÊÿäÿžÛÊÿÞÝÕÿßþÿöåÂÿÜÁßÿãõïÿÖÙÿòéÙÿØêÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿåÿÚËÿÞÿÞÕÿàýÿöåÃÿÛÁßÿãõðÿÕÚÿñéÚÿ×êÿÿïÿüöÿúùÿùöÿüÊÿæÿœÚÌÿÝÿÞÕÿàýÿöåÄÿÚÁßÿãõñÿÕÙÿñêÚÿÖêÿÿïÿüõÿúûÿùõÿüÊÿçÿ›ÙÍÿÝÿÞÖÿßýÿöæÅÿØÁßÿãõñÿÖÙÿðêÚÿÖêÿÿïÿüôÿúýÿùôÿüÊÿèÿšØÎÿÝÿÝ×ÿàüÿöæÆÿ×ÁßÿãõòÿÖØÿðëÛÿÔêÿÿïÿüóÿúÿÿùóÿüÊÿèÿšØÎÿÞÿÿÝØÿßüÿöæÇÿÖÁàÿâõóÿÖ×ÿðëÜÿÔéÿÿïÿüòÿòòÿüÊÿéÿ™×ÏÿÞÿÿÝØÿßýÿõæÈÿÕÁàÿâõóÿ××ÿïëÝÿÓéÿÿïÿüñÿôñÿüÊÿêÿ¿ñÿê×ÏÿÞÿÿÝØÿàüÿõæÉÿÔÁàÿâöóÿÖ×ÿïìÞÿÑéÿÿïÿüðÿöðÿüÊÿëÿÂéÿîÖÑÿÝÿÿÿÞÙÿßüÿõæÊÿÓÁàÿâöôÿÖ×ÿîìàÿÏéÿÿïÿüïÿøïÿüÊÿìÿÄãÿñÖÑÿÝÿÿÿÝÚÿßüÿõæËÿÒÁàÿâöõÿÖÖÿîìãÿÍèÿÿïÿüïÿùîÿüÊÿìÿÆßÿóÕÒÿÝÿÿÿÝÚÿßüÿõæÌÿÑÂßÿâöõÿ×ÕÿîíåÿÊèÿÿïÿüðÿ÷ïÿüÊÿíÿÇÛÿõÕÒÿÝÿÿÿÝÛÿßûÿõæÍÿÐÂßÿâööÿ×ÕÿííéÿÇçÿÿïÿüñÿõðÿüÊÿîÿÈØÿöÔÓÿÝÿÿÿÝÛÿßûÿõæÎÿÏÂßÿâö÷ÿ×ÔÿíííÿÃçÿÿïÿüòÿóñÿüÊÿîÿÊÔÿøÔÓÿÝÿÿÿÝÛÿßûÿõæÏÿÎÂßÿâö÷ÿ×Ôÿííóÿ¾æÿÿïÿüóÿùÿúòÿüÊÿïÿÊÒÿùÓÔÿÝÿÿÿÜÝÿßúÿõæÐÿÍõüÿÓßÿâöøÿ×Óÿíîùÿ·æÿÿïÿüôÿùþÿúóÿüÊÿðÿËÏÿúÓÕÿÝÿÿþÿÝÝÿßúÿõæÑÿÌüòÿÖßÿâöùÿ×ÓÿìåÿÿïÿüõÿùüÿúôÿüÊÿðÿÌÍÿûÒÖÿÝÿÿþÿÝÞÿÞúÿõæÒÿËÿïÿÖßÿâöùÿØÒÿìåÿÿïÿüöÿùúÿúõÿüÊÿñÿÌËÿüÒÖÿÝÿÿþÿÝÞÿßùÿõæÒÿËíÿÖàÿáöúÿØÑÿìžäÿÿïÿü÷ÿùøÿúöÿüÊÿòÿÌÉÿýÒÖÿÝÿÿþÿÝÞÿßùÿõæÓÿÌÿÿíÿÖàÿá÷úÿØÐÿìŸãÿÿïÿüøÿùöÿú÷ÿüÊÿòÿÍÇÿþÑ×ÿÝÿÿþÿÝßÿÞúÿôæÔÿÍýÿíÿÖàÿá÷úÿÙÐÿëŸãÿÿïÿüùÿùôÿúøÿüÊÿóÿÍÅÿÿÑ×ÿÝÿÿþÿÜàÿßùÿôæÕÿÎûÿíÿÖàÿá÷ûÿØÐÿë âÿÿïÿüúÿùòÿúùÿüÊÿóÿÎÄÿÿÑ×ÿÝÿÿýÿÝàÿßùÿôæÕÿÏúÿíÿ×ßÿá÷üÿØÏÿë¡áÿÿïÿüûÿùðÿúúÿüÊÿôÿÎÂÿÐÙÿÜÿÿýÿÝáÿÞùÿôæÖÿÏùÿíÿ×ßÿá÷üÿÙÎÿë¢àÿÿïÿüüÿùîÿúûÿüÊÿõÿÎÁÿÐÙÿÜÿÿýÿÝáÿßøÿôæ×ÿÐ÷ÿíÿ×ßÿá÷ýÿÙÍÿë£ßÿÿïÿüýÿùìÿúüÿüÊÿõÿÏ¿ÿÐÙÿÝþÿýÿÝâÿÞøÿôæ×ÿÑöÿíÿ×ßÿá÷ýÿÚÌÿë¤ÞÿÿïÿüþÿùêÿúýÿüÊÿöÿϾÿÿÐÚÿÝþÿýÿÜãÿÞøÿôæØÿÑõÿîÿÖßÿá÷þÿÚÌÿê¥ÝÿÿïÿüÿÿùèÿúþÿüÊÿöÿϾÿÿÐÚÿÝþÿýÿÜãÿß÷ÿôæÙÿÑôÿîÿÖßÿá÷ÿÿÙÌÿê¦ÜÿÿïÿüÿùæÿúÿÿüÊÿ÷ÿϽÿÿÿÑÚÿÝþÿýÿÜäÿÞ÷ÿôæÙÿÒóÿîÿÖßÿá÷ÿÿÚËÿê¨ÚÿÿïÿôäÿúÿüÊÿ÷ÿмÿÿÿÑÚÿÝþÿüÿÝäÿßöÿôæÚÿÒòÿîÿÖàÿà÷ÿÙËÿê©ÙÿÿïÿõâÿõÊÿøÿϼÿþÿÑÜÿÜþÿüÿÝäÿßöÿôæÚÿÒòÿîÿÖàÿàÎËÿê«×ÿÿïÿöàÿöÊÿøÿлÿþÿÑÜÿÜþÿüÿÝåÿÞöÿôæÛÿÒñÿîÿÖàÿàøÿ×Ìÿê¬Öÿÿïÿ÷Þÿ÷ÊÿøÿѺÿþÿÑÜÿÜþÿüÿÜæÿßõÿôæÛÿÓðÿîÿÖàÿàÌÍÿê®ÔÿÿïÿøÜÿøÊÿùÿкÿýÿÒÜÿÜþÿüÿÜæÿßõÿôçÛÿÓïÿîÿ×ßÿàÌÍÿê°ÒÿÿïÿùÚÿùÊÿùÿѹÿýÿÑÝÿÜþÿüÿÜçÿÞõÿôçÛÿÔîÿîÿ×ßÿàËÎÿê²ÐÿÿïÿúØÿúÊÿúÿѸÿýÿÑÝÿÝýÿûÿÝçÿßôÿôçÜÿÓîÿîÿ×ßÿàËÎÿê´Îÿÿïÿû×ÿúÊÿúÿѸÿüÿÒÝÿÝýÿûÿÝçÿßõÿóçÜÿÔíÿîÿ×ßÿàÊÐÿé¶ÌÿÿïÿúÙÿùÊÿûÿÑ·ÿüÿÒÞÿÜýÿûÿÝèÿÞõÿóçÝÿÓíÿîÿ×ßÿàÉÑÿé¸ÊÿÿïÿùÛÿøÊÿûÿÑ·ÿüÿÒÞÿÜýÿûÿÜéÿßôÿóçÝÿÔìÿîÿ×ßÿàÉÑÿé»ÇÿÿïÿøÝÿ÷ÊÿûÿÒ¶ÿüÿÒÞÿÜýÿûÿÜéÿßôÿóçÞÿÔëÿîÿ×ßÿàÈÒÿé¾Äÿÿïÿ÷ßÿöÊÿüÿѶÿûÿÒßÿÜýÿûÿÜêÿÞôÿóçÞÿÔëÿïÿÖàÿßÈÒÿéÁÁÿÿïÿöáÿõÊÿüÿÒµÿûÿÒßÿÜýÿúÿÝêÿßóÿóçßÿÔêÿïÿÖàÿßÇÓÿéľÿÿïÿõãÿôÊÿüÿÒµÿûÿÒßÿÜýÿúÿÝëÿÞóÿóçßÿÔêÿïÿÖàÿ߯ÔÿéȺÿÿïÿüÿúåÿùÿüÊÿýÿÒ´ÿûÿÒßÿÜýÿúÿÝëÿÞóÿóçßÿÕéÿïÿÖàÿ߯Ôÿé̶ÿÿïÿüÿÿúçÿùÿÿüÊÿýÿÒ´ÿúÿÓàÿÛýÿúÿÜìÿßòÿóçàÿÔéÿïÿ×ßÿßÅÕÿéѱÿÿïÿüþÿúéÿùþÿüÊÿýÿÒ´ÿúÿÓàÿÜüÿúÿÜíÿÞòÿóçàÿÕèÿïÿ×ßÿßÅÕÿé׫ÿÿïÿüýÿúëÿùýÿüÊÿþÿÒ³ÿúÿÓàÿÜüÿúÿÜíÿÞòÿóçàÿÕèÿïÿ×ßÿßÄÕÿêÝ¥ÿÿïÿüüÿúíÿùüÿüÊÿþÿÒ³ÿúÿÓàÿÜüÿúÿÜíÿßñÿóçáÿÔèÿïÿ×ßÿßÃÖÿêæœÿÿïÿüûÿúïÿùûÿüÊÿþÿÓ²ÿúÿÓàÿÜüÿùÿÝîÿÞñÿóçáÿÕçÿïÿ×ßÿßÃÖÿêï“ÿÿïÿüúÿúñÿùúÿüÊÿÿÿÒ²ÿúÿÒáÿÜüÿùÿÜïÿßðÿóçáÿÕçÿïÿ×ßÿßÂ×ÿêï“ÿÿïÿüùÿúóÿùùÿüÊÿÿÿÒ²ÿúÿÒâÿÛüÿùÿÜïÿßðÿóçâÿÕæÿïÿ×ßÿßÁØÿêî”ÿÿïÿüøÿúõÿùøÿüÊÿÿÿÓ±ÿùÿÓâÿÛüÿùÿÜðÿÞðÿóçâÿÕæÿïÿ×ßÿßÁØÿêî”ÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿÿÿÓ±ÿùÿÓâÿÛüÿùÿÜðÿßïÿóçâÿÕæÿðÿÖàÿÞÀÙÿêî”ÿÿïÿüöÿúùÿùöÿüÊÿÿÒ±ÿùÿÓâÿÛüÿùÿÜðÿßðÿòçâÿÖåÿðÿÖàÿÞÀÙÿêí•ÿÿïÿüõÿúûÿùõÿüÊÿÿÓ°ÿùÿÓâÿÜûÿøÿÝðÿßðÿòçãÿÕåÿðÿÖàÿÞ¿Úÿêí•ÿÿïÿüôÿúýÿùôÿüÊÿÿÓ°ÿùÿÓâÿÜûÿøÿÜòÿßïÿòçãÿÕåÿðÿÖàÿÞ¾Úÿëí•ÿÿïÿüóÿúÿÿùóÿüÊÿÿÓ°ÿùÿÓâÿÜûÿøÿÜòÿßïÿòçãÿÕåÿðÿ×ßÿÞîÿÒÚÿëì–ÿÿïÿüòÿòòÿüÊÿÓ¯ÿùÿÓãÿÛûÿøÿÜòÿßïÿòçãÿÖäÿðÿ×ßÿÞïÿÿÑÛÿëì½ÿÿÜÿÿïÿüñÿôñÿüÊÿÓ¯ÿùÿÓãÿÛûÿøÿÜóÿßîÿòçäÿÕäÿðÿ×ßÿÞðýÿÒÛÿëëÀÿüÝÿÿïÿüðÿöðÿüÊÿÓ¯ÿùÿÓãÿÛûÿøÿÜóÿßîÿòçäÿÕäÿñÿÖßÿÞñüÿÑÜÿëëÂÿúÝÿÿïÿüïÿøïÿüÊÿÓ¯ÿùÿÓãÿÛûÿ÷ÿÝóÿàíÿòçäÿÕäÿñÿÖßÿÞñûÿÑÝÿëêÅÿøÝÿÿïÿüïÿùîÿüÊÿÔ®ÿùÿÓãÿÛûÿ÷ÿÜõÿßíÿòçäÿÖãÿñÿÖßÿÞòùÿÒÜÿìéÈÿöÝÿÿïÿüðÿ÷ïÿüËÿÔ®ÿùÿÓãÿÛûÿ÷ÿÜõÿßíÿòçäÿÖãÿñÿÖßÿÞóøÿÑÝÿìèËÿôÝÿÿïÿüñÿõðÿüËÿÔ®ÿùÿÓãÿÜúÿ÷ÿÜõÿàìÿòèäÿÕãÿñÿÖàÿÝôöÿÒÝÿìçÎÿñÞÿÿïÿüòÿóñÿüËÿÔ®ÿùÿÓäÿÛúÿ÷ÿÜöÿßìÿòèäÿÕãÿòÿÕàÿÝõõÿÑÞÿìæÒÿîÞÿÿïÿüóÿùÿúòÿüËÿÔ®ÿùÿÓäÿÛúÿöÿÝöÿßìÿòèäÿÕãÿòÿÕàÿÝöóÿÑÞÿíä×ÿëÞÿÿïÿüôÿùþÿúóÿüËÿÕ­ÿùÿÓäÿÛúÿöÿÝöÿàëÿòèäÿÕãÿòÿÕàÿÝöóÿÑÞÿíâÜÿèÞÿÿïÿüõÿùüÿúôÿüËÿÕ­ÿùÿÓäÿÛúÿöÿÜøÿßëÿòèäÿÕãÿòÿÕàÿÝ÷ñÿÑßÿíàâÿäÞÿÿïÿüöÿùúÿúõÿüÌÿÿÕ­ÿùÿÓäÿÛúÿöÿÜøÿàêÿòèäÿÖâÿóÿÕßÿÝøðÿÑÞÿîÝêÿÞßÿÿïÿü÷ÿùøÿúöÿüÌÿÿÕ­ÿùÿÓäÿÛúÿöÿÜøÿàêÿòèäÿÖâÿóÿÕßÿÝùîÿÑßÿîØõÿØßÿÿïÿüøÿùöÿú÷ÿüÌÿÿÕ­ÿùÿÓäÿÛúÿöÿÜøÿàêÿòèäÿÖâÿóÿÕßÿÝúíÿÐàÿî£ßÿÿïÿüùÿùôÿúøÿüÌÿÿÕ­ÿùÿÓåÿÛùÿõÿÝùÿàéÿòèäÿÖâÿóÿÕßÿÝûëÿÑßÿï£ßÿÿïÿüúÿùòÿúùÿüÌÿÿÖ¬ÿúÿÒåÿÛùÿõÿÝùÿàéÿòèåÿÕâÿôÿÔßÿÝûëÿÐàÿï£ßÿÿïÿüûÿùðÿúúÿüÌÿÿÖ¬ÿúÿÓäÿÛùÿõÿÝùÿàêÿñèåÿÕâÿôÿÔßÿÝûêÿÑßÿð¢àÿÿïÿüüÿùîÿúûÿüÌÿÿÖ¬ÿúÿÓäÿÛùÿõÿÜûÿàéÿñèåÿÕâÿôÿÔßÿÝûêÿÐàÿð¢àÿÿïÿüýÿùìÿúüÿüÌÿÿÖ¬ÿúÿÓäÿÛùÿõÿÜûÿàéÿñèåÿÕâÿõÿÓàÿÜûéÿÐàÿñ¢àÿÿïÿüþÿùêÿúýÿüÌÿÿÖ¬ÿúÿÓäÿÛùÿôÿÝûÿáèÿñèåÿÕâÿõÿÓàÿÜûèÿÑàÿñ¢àÿÿïÿüÿÿùèÿúþÿüÍÿþÖ¬ÿúÿÓäÿÛùÿôÿÝûÿáèÿñèåÿÕâÿöÿÒàÿÜüçÿÐàÿò¢àÿÿïÿüÿùæÿúÿÿüÍÿþÖ¬ÿúÿÓåÿÚùÿôÿÝüÿàèÿñèåÿÕâÿöÿÒàÿÜüæÿÑàÿò¡áÿÿïÿôäÿúÿüÍÿþÖ¬ÿûÿÒåÿÛøÿôÿÝüÿáçÿñèåÿÔãÿöÿÒàÿÜüæÿÐàÿó¡áÿÿïÿõâÿõÍÿþÖ¬ÿûÿÒåÿÛøÿôÿÝüÿáçÿñèåÿÔãÿ÷ÿÑàÿÜüåÿÐáÿó¡áÿÿïÿöàÿöÍÿþ׫ÿûÿÒåÿÛøÿóÿÝýÿâæÿñèåÿÔãÿ÷ÿÑàÿÜüåÿÐàÿô¡áÿÿïÿ÷Þÿ÷Íÿþ׫ÿûÿÓäÿÛøÿóÿÝþÿáæÿñèåÿÔãÿøÿÐàÿÜüäÿÐàÿõ¡áÿÿïÿøÜÿøÍÿþ׫ÿûÿÓäÿÛøÿóÿÝþÿáæÿñèåÿÔãÿøÿÐàÿÜüäÿÐàÿõ¡áÿÿïÿùÚÿùÍÿþ׫ÿûÿÓäÿÛøÿóÿÝþÿâåÿñèåÿÔãÿùÿÏàÿÜüãÿÐàÿö âÿÿïÿúØÿúÍÿþ׫ÿüÿÒåÿÚøÿóÿÝÿÿáåÿñèåÿÓäÿùÿÏàÿÜüãÿÏàÿ÷ âÿÿïÿûÖÿûÍÿþ׫ÿüÿÒåÿÛ÷ÿóÿÝÿÿáåÿñèåÿÓäÿúÿÎáÿÛüâÿÐßÿø âÿÿïÿüÔÿüÍÿþ׫ÿüÿÒåÿÛ÷ÿòÿÞÿÿâäÿñèåÿÓäÿûÿÍáÿÛüâÿÏàÿø âÿÿïÿûÖÿûÍÿþ׫ÿüÿÓäÿÛ÷ÿòÿÝÿâäÿñèåÿÒåÿûÿÍáÿÛüáÿÐßÿù¡áÿÿïÿúØÿúÍÿþ׫ÿýÿÒäÿÛ÷ÿòÿ¾ãÿñèäÿÓåÿüÿÌáÿÛýßÿÐßÿú£ßÿÿïÿùÚÿùÍÿþ׫ÿýÿÒäÿÛ÷ÿòÿ¾ãÿñèäÿÓåÿýÿËáÿÛýßÿÏßÿû¥ÝÿÿïÿøÜÿøÍÿþ׫ÿýÿÒåÿÚ÷ÿòÿ¾ãÿñèäÿÒæÿþÿÊáÿÛýÞÿÐÞÿü§Ûÿÿïÿ÷Þÿ÷Íÿþ׫ÿýÿÒåÿÚ÷ÿñÿÀâÿñèäÿÒæÿÿÿÉáÿÛýÞÿÏÝÿþ©ÙÿÿïÿöàÿöÍÿþ׫ÿþÿÒäÿÛöÿñÿÀâÿñéãÿÑçÿÿÿÉáÿÛýÝÿÐÜÿÿ«×ÿÿïÿõâÿõÍÿþÖ¬ÿþÿÒäÿÛöÿñÿÀâÿñéãÿÐèÿÇáÿÛýÝÿÏÜÿ­ÕÿÿïÿôäÿúÿüÍÿþÖ¬ÿþÿÒäÿÛöÿñÿÁâÿðéãÿÐéÿÇáÿÛýÜÿÏÜÿÿ±ÒÿÿïÿüÿùæÿúÿÿüÍÿþÖ¬ÿÿÿÑäÿÛöÿñÿÁâÿðéãÿÏëÿÿÇáÿÛýÜÿÏÜÿÿÿ´ÐÿÿïÿüÿÿùèÿúþÿüÍÿþÖ¬ÿÿÿÒãÿÛöÿðÿÃáÿðéãÿÎíÿþÇâÿÚýÛÿÏÝÿýÿ¹ÍÿÿïÿüþÿùêÿúýÿüÍÿþÖ¬ÿÿÿÒäÿÚöÿðÿÃáÿðéâÿÍñÿüÇâÿÚýÛÿÏÝÿûÿ¾ÊÿÿïÿüýÿùìÿúüÿüÍÿþÖ¬ÿÿÑäÿÚöÿðÿÃáÿðéâÿËõÿúÇâÿÚýÚÿÏÞÿùÿÃÇÿÿïÿüüÿùîÿúûÿüÍÿþÖ¬ÿÿÑäÿÚöÿðÿÄàÿðéâÿÈüÿöÇâÿÚþÙÿÎßÿ÷ÿÉÃÿÿïÿüûÿùðÿúúÿüÌÿÿÖ¬ÿÿÒãÿÛõÿðÿÄàÿðéâÿ¸ÇâÿÚþØÿÏßÿôÿпÿÿïÿüúÿùòÿúùÿüÌÿÿÖ¬ÿÑãÿÛõÿïÿÆßÿðéáÿ¹ÇâÿÚþØÿÎàÿñÿغÿÿïÿüùÿùôÿúøÿüÌÿÿÕ­ÿÑãÿÛõÿïÿÆßÿðéáÿ¹ïÿÚâÿÚþ×ÿÏàÿìÿã´ÿÿïÿüøÿùöÿú÷ÿüÌÿÿÕ®ÿÑãÿÛõÿïÿÆßÿðéáÿ¹ïÿÚâÿÚþÖÿÏáÿäÿô«ÿÿïÿü÷ÿùøÿúöÿüÌÿÿÕ®ÿÒãÿÚõÿïÿÇÞÿðéáÿ¹ðÿÿÚâÿÚþÖÿÎâÿÿÿïÿüöÿùúÿúõÿüÌÿÿÕ¯ÿÿÒãÿÚõÿïÿÇÞÿðéàÿºðÿÿÚâÿÚþÕÿÏâÿÿÿïÿüõÿùüÿúôÿüÌÿÿÕ¯ÿÿÒãÿÚõÿïÿÇÞÿðéàÿºñýÿÛâÿÚþÕÿÎãÿÿÿïÿüôÿùþÿúóÿüÌÿÿÔ°ÿÿÓâÿÛôÿîÿÉÝÿðéàÿºñýÿÛâÿÚþÔÿÏãÿÿÿïÿüóÿùÿúòÿüÌÿÿÔ±ÿþÓâÿÛôÿîÿÉÝÿðéßÿ»òüÿÛãÿÙþÔÿØÚÿÿÿïÿüòÿóñÿüËÿÔ±ÿþÔáÿÛôÿîÿÊÜÿðéßÿ»òüÿÛãÿÙþÓÿãÐÿÿÿïÿüñÿõðÿüËÿÓ³ÿýÔáÿÛôÿîÿÊÜÿðéÞÿ¼óûÿÛãÿÙÿÒÿíÆÿÿÿïÿüðÿ÷ïÿüËÿÓ³ÿýÔâÿÚôÿîÿÊÜÿðéÞÿ¼ôúÿÚäÿÙÿÑÿø¼ÿÿÿïÿüïÿùîÿüËÿÓ´ÿüÕáÿÚôÿíÿÌÛÿðéÝÿ½ôúÿÚäÿÙÿƒÿÿÿïÿüïÿøïÿüËÿÒ¶ÿûÕáÿÚôÿíÿÌÛÿðéÝÿ½õùÿÚäÿÙÿƒÿÿÿïÿüðÿöðÿüÊÿÒ¶ÿûÖàÿÛóÿíÿÌÛÿðéÜÿ¾öøÿÚäÿÙÿƒÿÿÿïÿüñÿôñÿüÊÿÒ·ÿúÖàÿÛóÿíÿÍÚÿðéÜÿ¾öøÿÚäÿÙÿƒÿÿÿïÿüòÿòòÿüÊÿѸÿúÖàÿÛóÿíÿÍÛÿïéÛÿ¿÷÷ÿÚäÿÙÿƒÿÿÿïÿüóÿúÿÿùóÿüÊÿѹÿù×ßÿÛóÿìÿÏÚÿïéÛÿ¿øöÿÚäÿÚÿÿÿÿïÿüôÿúýÿùôÿüÊÿÿÑ»ÿø×àÿÚóÿìÿÏÚÿïéÚÿÀùõÿÚäÿäöÿÿÿÿïÿüõÿúûÿùõÿüÊÿÿÑ»ÿøØßÿÚóÿìÿÏÚÿïéÙÿÁúôÿÚåÿíìÿÿÿÿïÿüöÿúùÿùöÿüÊÿÿнÿ÷ØßÿÚóÿìÿÐÙÿïéØÿÂûóÿÚåÿöãÿÿÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿÿоÿöÙÞÿÛòÿìÿÐÙÿïê×ÿÂüòÿÚ¼ÿÿÿÿïÿüøÿúõÿùøÿüÊÿÿÿÐÀÿõÙÞÿÛòÿëÿÒØÿïêÖÿÃýñÿÙ½ÿÿÿÿïÿüùÿúóÿùùÿüÊÿÿÿÐÀÿõÚÝÿÛòÿëÿÒØÿïêÕÿÄþðÿÙ½ÿÿÿÿïÿüúÿúñÿùúÿüÊÿÿÿÏÂÿôÚÝÿÛòÿëÿÒØÿïêÔÿÅÿïÿÛ»ÿÿÿÿïÿüûÿúïÿùûÿüÊÿþÿÏÄÿóÛÝÿÚòÿëÿÓ×ÿïêÓÿÆîÿå±ÿÿÿÿïÿüüÿúíÿùüÿüÊÿþÿÏÅÿòÛÝÿÚòÿëÿÓ×ÿïêÒÿÇíÿï§ÿÿÿÿïÿüýÿúëÿùýÿüÊÿþÿÎÇÿñÜÜÿÚòÿëÿÓ×ÿïêÑÿÊÿÿíÿùÿÿÿÿïÿüþÿúéÿùþÿüÊÿýÿÎÉÿðÝÛÿÚòÿêÿÕÖÿïêÏÿÍþÿÿÿÿÿïÿüÿÿúçÿùÿÿüÊÿýÿÍËÿïÝÛÿÛñÿêÿÕÖÿïêÎÿÐüÿÿÿÿÿïÿüÿúåÿùÿüÊÿüÿÍÍÿîÞÚÿÛñÿêÿÖÕÿïêÌÿÔúÿÿÿÿÿïÿõãÿôÊÿüÿÌÏÿíÞÛÿÚñÿêÿÖÕÿïêËÿ×øÿÿÿÿÿïÿöáÿõÊÿüÿËÒÿëßÚÿÚñÿêÿÖÕÿïêÉÿÛöÿÿÿÿÿïÿ÷ßÿöÊÿûÿÊÕÿêàÙÿÚñÿéÿØÔÿïêÆÿáóÿÿÿÿÿïÿøÝÿ÷ÊÿûÿÉØÿèàÙÿÚñÿéÿØÔÿïêÄÿæðÿÿÿÿÿïÿùÛÿøÊÿúÿÈÛÿçáØÿÚñÿéÿØÔÿïêÀÿîìÿÿÿÿÿïÿúÙÿùÊÿúÿÇÞÿåâ×ÿÛðÿéÿÙÓÿïê˜ÿÿÿÿÿïÿû×ÿúÊÿùÿÅãÿããÖÿÛðÿéÿÙÓÿïê˜ÿÿÿÿÿïÿúØÿúÊÿùÿÃèÿàã×ÿÚðÿèÿÛÓÿîê˜ÿÿÿÿÿïÿùÚÿùÊÿøÿÀðÿÜäÖÿÚðÿèÿÛÓÿîê˜ÿÿÿÿÿïÿøÜÿøÊÿøÿŠåÕÿÚðÿèÿÛÓÿîê˜ÿÿÿÿÿïÿ÷Þÿ÷Êÿ÷ÿ‹æÔÿÚðÿèÿÜÒÿîð’ÿÿÿÿÿïÿöàÿöÊÿöÿŒçÓÿÚðÿèÿÜÒÿîúˆÿÿÿÿÿïÿõâÿõÊÿöÿŒèÒÿÛïÿèÿÜÒÿñþÿÿÿÿÿÿïÿôäÿúÿüÊÿõÿèÒÿÛïÿçÿÞÑÿûôÿÿÿÿÿÿïÿüÿùæÿúÿÿüÊÿôÿŽéÒÿÚïÿçÿÞ¾ÿÿÿÿÿÿïÿüÿÿùèÿúþÿüÊÿôÿŽêÑÿÚïÿçÿß½ÿÿÿÿÿÿïÿüþÿùêÿúýÿüÊÿóÿëÐÿÚïÿçÿæ¶ÿÿÿÿÿÿïÿüýÿùìÿúüÿüÊÿòÿìÏÿÚïÿçÿï­ÿÿÿÿÿÿïÿüüÿùîÿúûÿüÊÿñÿ‘íÎÿÚïÿæÿú£ÿÿÿÿÿÿïÿüûÿùðÿúúÿüÊÿñÿ‘îÍÿÚïÿÿÿÿÿÿÿïÿüúÿùòÿúùÿüÊÿðÿ’ïÌÿÛîÿÿÿÿÿÿÿïÿüùÿùôÿúøÿüÊÿïÿ“ñËÿÚîÿÿÿÿÿÿÿïÿüøÿùöÿú÷ÿüÊÿîÿ”òÊÿÚîÿÿÿÿÿÿÿïÿü÷ÿùøÿúöÿüÊÿíÿ•óÉÿÚîÿÿÿÿÿÿÿïÿüöÿùúÿúõÿüÊÿìÿ–ôÈÿÚîÿÿÿÿÿÿÿïÿüõÿùüÿúôÿüÊÿëÿ—öÆÿÚîÿÿÿÿÿÿÿïÿüôÿùþÿúóÿüÊÿêÿ˜÷ÅÿÚîÿÿÿÿÿÿÿïÿüóÿùÿúòÿüÊÿéÿ™øÄÿßéÿÿÿÿÿÿÿïÿüòÿóñÿüÊÿèÿšúÃÿèßÿÿÿÿÿÿÿïÿüñÿõðÿüÊÿçÿ›ûÂÿòÕÿÿÿÿÿÿÿïÿüðÿ÷ïÿüÊÿåÿýÀÿüËÿÿÿÿÿÿÿïÿüïÿùîÿüÊÿäÿžÿƒÿÿÿÿÿÿÿïÿüïÿøïÿüÊÿãÿŸ‚ÿÿÿÿÿÿÿïÿüðÿöðÿüÊÿáÿ¢ÿÿÿÿÿÿÿÿïÿüñÿôñÿüÊÿàÿ¥þÿÿÿÿÿÿÿÿïÿüòÿòòÿüÊÿÞÿ©üÿÿÿÿÿÿÿÿïÿüóÿúÿÿùóÿüÊÿÜÿ­úÿÿÿÿÿÿÿÿïÿüôÿúýÿùôÿüÊÿÛÿ±÷ÿÿÿÿÿÿÿÿïÿüõÿúûÿùõÿüÊÿÙÿµõÿÿÿÿÿÿÿÿïÿüöÿúùÿùöÿüÊÿÖÿ»òÿÿÿÿÿÿÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿÔÿÀïÿÿÿÿÿÿÿÿïÿüøÿúõÿùøÿüÊÿÑÿÆìÿÿÿÿÿÿÿÿïÿüùÿúóÿùùÿüÊÿÎÿÍèÿÿÿÿÿÿÿÿïÿüúÿúñÿùúÿüÊÿËÿÔäÿÿÿÿÿÿÿÿïÿüûÿúïÿùûÿüÊÿÆÿßÞÿÿÿÿÿÿÿÿïÿüüÿúíÿùüÿüÊÿ¿ÿí×ÿÿÿÿÿÿÿÿïÿüýÿúëÿùýÿüÊÿÿÿÿÿÿÿÿÿïÿüþÿúéÿùþÿüÊÿÿÿÿÿÿÿÿÿïÿüÿÿúçÿùÿÿüÊÿÿÿÿÿÿÿÿÿïÿüÿúåÿùÿüÊÿÿÿÿÿÿÿÿÿïÿõãÿôÊÿÿÿÿÿÿÿÿÿïÿöáÿõÊÿÿÿÿÿÿÿÿÿïÿ÷ßÿöÊÿÿÿÿÿÿÿÿÿïÿøÝÿ÷ÊÿÿÿÿÿÿÿÿÿïÿùÛÿøÊÿÿÿÿÿÿÿÿÿïÿúÙÿùÊÿÿÿÿÿÿÿÿÿïÿùÛÿøÊÿÿÿÿÿÿÿÿÿïÿøÝÿ÷Êÿÿÿÿÿÿÿÿÿïÿ÷ßÿöÊÿÿÿÿÿÿÿÿÿïÿöáÿõÊÿÿÿÿÿÿÿÿÿïÿõãÿôÊÿÿÿÿÿÿÿÿÿïÿüÿúåÿùÿüÊÿÿÿÿÿÿÿÿÿïÿüÿÿúçÿùÿÿüÊÿÿÿÿÿÿÿÿÿïÿüþÿúéÿùþÿüÊÿÿÿÿÿÿÿÿÿïÿüýÿúëÿùýÿüÊÿÿÿÿÿÿÿÿÿïÿüüÿúíÿùüÿüÊÿÿÿÿÿÿÿÿÿïÿüûÿúïÿùûÿüÊÿÿÿÿÿÿÿÿÿïÿüúÿúñÿùúÿüÊÿÿÿÿÿÿÿÿÿïÿüùÿúóÿùùÿüÊÿÿÿÿÿÿÿÿÿïÿüøÿúõÿùøÿüÊÿÿÿÿÿÿÿÿÿïÿü÷ÿú÷ÿù÷ÿüÊÿÿÿÿÿÿÿÿÿïÿüöÿúùÿùöÿüÊÿÿÿÿÿÿÿÿÿïÿüõÿúûÿùõÿüÊÿÿÿÿÿÿÿÿÿïÿüôÿúýÿùôÿüÊÿÿÿÿÿÿÿÿÿïÿüóÿúÿÿùóÿüÊÿÿÿÿÿÿÿÿÿïÿüòÿòòÿüÊÿÿÿÿÿÿÿÿÿïÿüñÿôñÿüÊÿÿÿÿÿÿÿÿÿïÿüðÿöðÿüÊÿÿÿÿÿÿÿÿÿïÿüïÿøïÿüÊÿÿÿÿÿÿÿÿÿïÿüïÿùîÿüÊÿÿÿÿÿÿÿÿÿïÿüðÿ÷ïÿüÊÿÿÿÿÿÿÿÿÿïÿüñÿõðÿüÊÿÿÿÿÿÿÿÿÿïÿüòÿóñÿüÊÿÿÿÿÿÿÿÿÿïÿüóÿùÿúòÿüÊÿÿÿÿÿÿÿÿÿïÿüôÿùþÿúóÿüÊÿÿÿÿÿÿÿÿÿïÿüõÿùüÿúôÿüÊÿÿÿÿÿÿÿÿÿïÿüöÿùúÿúõÿüÊÿÿÿÿÿÿÿÿÿïÿü÷ÿùøÿúöÿüÊÿÿÿÿÿÿÿÿÿïÿüøÿùöÿú÷ÿüÊÿÿÿÿÿÿÿÿÿïÿüùÿùôÿúøÿüÊÿÿÿÿÿÿÿÿÿïÿüúÿùòÿúùÿüÊÿÿÿÿÿÿÿÿÿïÿüûÿùðÿúúÿüÊÿÿÿÿÿÿÿÿÿïÿüüÿùîÿúûÿüÊÿÿÿÿÿÿÿÿÿïÿüýÿùìÿúüÿüÊÿÿÿÿÿÿÿÿÿïÿüþÿùêÿúýÿüÊÿÿÿÿÿÿÿÿÿïÿüÿÿùèÿúþÿüÊÿÿÿÿÿÿÿÿÿïÿüÿùæÿúÿÿüÊÿÿÿÿÿÿÿÿÿïÿôäÿúÿüÊÿÿÿÿÿÿÿÿÿïÿõâÿõÊÿÿÿÿÿÿÿÿÿïÿöàÿöÊÿÿÿÿÿÿÿÿÿïÿ÷Þÿ÷ÊÿÿÿÿÿÿÿÿÿïÿøÜÿøÊÿÿÿÿÿÿÿÿÿïÿùÚÿùÊÿÿÿÿÿÿÿÿÿîÿûØÿûÉÿÿÿÿÿÿÿÿÿíÿýÖÿýÈÿÿÿÿÿÿÿÿÿìÿÿÔÿÿÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ× ?ÏÿÿÏ¿¿_??¹ÙŸñÿß¿¿¯oþ?ÅÚïãÿþ¿þO??ÒÜ?ßÕÿ ß¿¿Ÿo??/ÞÞ¯÷ÿŸþ¿Öÿïþ¿þþ?ëàõÿúþ?o¯¿¿ßÖÿ Ï¿¿Ÿ_??÷áOßûÿïûÿ¿î ??_¿¿ÏÖÿï¿¿¯þ?ÿ?ƒã/¿úÿúÿáþ?þ¯¿¿ïÛÿüÿþ¿O??åúÿ¿/Oúÿ?Ö /??_Ÿ¿¿Ïçÿðÿ ß¿¿¯o??/œæ_ïûÿß_þúÿÊ??Oþþ¿óÿãÿþ¿þO??©è?¿úÿýÏúÿ¿½ /??oŸ¿¿ßÿ×ÿ ß¿¿Ÿ_??/µêŸúÿ¿ûýÿÏýÿ²??Oþ¿Öÿïþ¿þþ?Áëoïûÿß?ú?ýÿOýÿ?³óþ?o¯¿¿ïÖÿ Ï¿¿_??Îí?ßûÿïøþÿïïþÿ³ç ??_¿¿ÏÖÿï¿¿¯oþ?Úï¯úÿŸ÷¿þÿ¯¯þÿ¿³Ûþ?þþ¿ïÖÿþ¿O??çñïûÿÏ?õýÿooýÿ³Î /??_Ÿ¿¿ßÖÿ ß¿¿Ÿo??/óòOßûÿïoô?ýÿ//ýÿ?´Â??Oþþ¿Õÿþ¿þþ?ô¿úÿŸóþÿïþïþÿ´µþ?o¯¿¿ß×ÿ ÿÏ¿¿Ÿ_??/Œöúÿ¿/ñ¿þÿ¯þ¯þÿ¿´© ??O¿¿Ïãÿôÿï¿¿¯þþ?˜÷_ïûÿï_ïýÿoþoýÿ´œþ?þ¯¿¿ïðÿçÿ Ï¿¿O??¥ù/¿úÿï?ýÿ/þ?ýÿ/µ ??_Ÿ¿¿ÏüÿÛÿß¿¿¯oþ?±ûŸúÿ¿íþÿïüýÿoµ„???þþ¿Õÿþ¿þO??¾üoïûÿßOë¿þÿ¯ü¿þÿ¯µ÷ /??oŸ¿¿ßÖÿ ß¿¿Ÿo??/Êþ?Ïûÿïéýÿoüþÿïµë??Oþ¿Öÿïþ¿þþ?ׯúÿ¯é?ýÿ/ü?ýÿ/¶Þþ?o¯¿¿ßÖÿ Ï¿¿_??ãïûÿÏ?çþÿïúýÿo¶Ò ??_¿¿ÏÖÿï¿¿¯þþ?ïƒOßûÿïoå¯þÿ¯ú¿þÿ¯¶Åþ?þþ¿ïÖÿþ¿O??ü…¿ÿÿüÿŸäïþÿúþÿï¶¹ /??_Ÿ¿¿ÏÖÿß¿¿Ÿo??/ˆ‡ýÿþÿ¿/ã/ýÿ?ú?ýÿ/·­??Oþþ¿ßÿ÷ÿþ¿þO??•ˆ_ïüÿÿï_áoýÿøýÿo·  /??o¯¿¿ßìÿëÿ Ï¿¿Ÿ_??/¡Š/¿úÿà¯þÿ¿ø¿þÿ¯·”??Oþ¿øÿßÿïþ¿þþ?­ŒŸúÿ¿Þïþÿøþÿï·‡þ?þ¯¿¿ïÖÿ Ï¿¿_??ºoïûÿßOß/ýÿ?ø?ýÿ/¸û ??_¿¿ÏÖÿß¿¿¯oþ?Æ?Ïûÿïþßoýÿöýÿo¸ïþ?þþ¿ïÖÿþ¿O??Ó‘Ÿúÿ¯ü߯þÿ¿ö¿þÿŸ¸â /??oŸ¿¿ßÖÿ ß¿¿Ÿo??/ß’ïûÿß?úßïþÿöþÿ߸Ö??Oþþ¿Õÿþ¿þþ?ì”?ßûÿïoøà/ýÿ?öOýÿ¹Éþ?o¯¿¿ßÖÿ Ï¿¿Ÿ_??ø–¿úÿŸ÷àoýÿõýÿ_¹½ ??O¿¿ÏÖÿï¿¿¯þþ?„˜úÿ¿?õà¯þÿ¿ôÏþÿŸ¹°þ?þ¯¿¿ïÜÿûÿ Ï¿¿O??‘™_ßûÿï_óàßþÿôþÿß¹¤ /??_Ÿ¿¿Ïèÿïÿß¿¿¯oþ?›/¿úÿòáýÿ?ôOýÿº˜þ?þþ¿ôÿâÿþ¿þO??ªúÿ¿ðá_ýÿôýÿ_º‹ /??oŸ¿¿ßÖÿ ß¿¿Ÿ_??/¶žoïûÿßOîáŸþÿÏòÏþÿŸºÿ??Oþ¿Öÿïþ¿þþ?à?Ïúÿíáßþÿòþÿߺòþ?o¯¿¿ïÖÿ Ï¿¿_??Ï¢Ÿúÿ¯ëâýÿOòOýÿ»æ ??_¿¿ÏÖÿï¿¿¯oþ?Û£ïûÿß?éâ_ýÿ?òŸýÿ_»Ùþ?þþ¿ïÖÿþ¿O??è¥?ßûÿïçâŸýÿÏôüÿŸ»Í /??_Ÿ¿¿ßÖÿ ß¿¿Ÿo??/ô§¯úÿŸæâßüÿÏö_ûÿß»Á??Oþþ¿Õÿþ¿þO??©úÿÏ?äãúÿ¯÷Oùÿ¼´ /??o¯¿¿ßØÿÿÿ Ï¿¿Ÿ_??/ªOßûÿï_âã_ùÿŸù/ïùÿO¼¨??Oþ¿äÿóÿï¿¿¯þþ?™¬/¿úÿáãŸþÿïüÿû/ïýÿ¿ßþÿ¼›þ?þ¯¿¿ïñÿæÿ Ï¿¿_??¦®úÿ¿/ßãßþÿ_üÿ_ýÏýÿÏŸþÿϼ ??_Ÿ¿¿ÏýÿÚÿß¿¿¯oþ?²¯_ïûÿßOÝäýÿOŸüÿOÏýÿß_ýÿ½ƒ?ÿ?þþ¿ïÖÿþ¿O??¿±?ÏúÿÜäOýÿŸýÿï/¯ýÿï/ýÿO½ö /??oŸ¿¿ßÖÿ ß¿¿Ÿo??/˳Ÿúÿ¯ÚäþÿÏýÏýÿï¯ýÿï/ýßþÿ½ê??Oþ¿Öÿïþ¿þþ?Ø´ïûÿß?ØäÏþÿŸýÏøÿ_üŸþÿϽÝþ?o¯¿¿ßÖÿ Ï¿¿Ÿ_??ä¶?ßûÿïÖåýÿ_üïúÿ_û_ýÿ¾Ñ ??_¿¿ÏÖÿï¿¿¯þþ?ð¸¯úÿŸÕåOýÿû/ïüÿúýÿO¾Äþ?þ¯¿¿ïÖÿþ¿O??ýºúÿÏ?Óåþÿßú/ïüÿŸùßþÿ¾¸ /??_Ÿ¿¿ÏÖÿß¿¿¯o??/‰»OßûÿïoÑåÏþÿŸû/ïúÿoúŸþÿϾ¬??Oþþ¿àÿöÿþ¿þO??–½¿úÿÐæýÿ_üÏøÿ_û_ýÿ¿Ÿ /??oŸ¿¿ßíÿêÿ ß¿¿Ÿ_??/¢¿úÿ¿/ÎæOýÿýÏýÿïŸüÿ?üýÿO¿“??Oþ¿ùÿÞÿïþ¿þþ?®À_ïûÿß_Ìæþÿßü¯ýÿï/Ÿýÿï/üßþÿ¿†þ?o¯¿¿ïÖÿ Ï¿¿_??»Â?¿úÿËæÏþÿŸýŸüÿ/ÏýÿïýŸþÿ¿¿ú ??_¿¿ÏÖÿï¿¿¯oþ?ÇÄŸúÿ¿Éçýÿ_þüÿ_ýÏýÿÏþ_ýÿ¿îþ?þþ¿ïÖÿþ¿O??ÔÅoïûÿß?ÇçOýÿ_üÿ_ûïýÿÏþ/ýÿ?Àá /??_Ÿ¿¿ßÖÿ ß¿¿Ÿo??/àÇ?ßûÿïÅçþÿßOüÿŸù/ïýÿŸþïþÿÀÕ??Oþþ¿Õÿþ¿þþ?íɯúÿŸÄç¿þÿŸ/ïýÿŸ÷?üÿŸ¯þÿ¿ÀÈ /??o¯¿¿ßÖÿ Ï¿¿Ÿ_??/ùËïûÿÏ?Âçýÿo/ïýÿÏõ_üÿ_oýÿÀ¼ ??O¿¿ÏÖÿï¿¿¯þ?…ÌOßûÿïoÀè?ýÿ?ÏýÿÏôoüÿ_/ýÿ?Á¯þ?þ¯¿¿ïÝÿúÿ Ï¿¿O??’οúÿŸ¿èýÿÏýÿïòŸüÿ/ïþÿÁ¥Þ?????£?_Ÿ¿¿ßæÿîÿß¿_??šÐúÿ¿/½è¿ùÿï/ð¯ýÿïßþÿ¿Ì/¯ø¿¥¿ïÞÿÿÿÿÿÿéÿïœÑ_ïûÿï_»èøÿ/ïÏøÿÎöÿÿÿÿÿÿÿçÿßOÓ/¿úÿºé?ùÿ_íÏùÿ?ÐOßõÿÿÿÿÿÿÿåÿ¯ŸÕŸúÿ¿¸éúÿ_ë/ïúÿÒ¿óÿÿÿÿÿÿÿäÿï ÖoïûÿßO¶é¿ûÿŸé/ïûÿ¿Óúÿ¯ŸûÿÿÿáŸñÿáŸôÿŸåýïúÿ¯ŸúÿŸáŸúÿ/¯úÿà/¿óÿá/¿öÿŸáŸóÿŸâŸúÿ/¿ûÿïà/¿øÿß?áŸúÿoïûÿ¿ùé¿ûÿÿïûÿ¿á¿öÿß?áŸüÿÿÿßûÿß?áŸúÿïûÿ¿á/¿ûÿÿïûÿ¿óóûÿïßûÿß?¢Ø?Ïûÿï´éûÿŸçOúÿÕ?ßûÿßOþ/Ïýÿÿÿï_ãoïûÿ¿//Ïûÿï_ãoïûÿßúÿçþOßûÿß?þ/¿ûÿïoãoïûÿ¿/þOßûÿß?äúÿ¯Oßûÿß?äúÿßûÿïoãoïûÿ¿//¿ûÿïoãoïûÿ¿/þOßûÿß?äôÿ¯ä_ïûÿÏ/þ¯úÿûëúÿ¯¯úÿåúÿ¿úÿ¯ä_ïûÿÏ/úÿ¯ä_ïûÿÏ/þ¯úÿäúÿŸ¯úÿôô?ßûÿ¯úÿŸ¤Ú¯úÿ¯³ê?üÿÏå_ûÿ?دúÿûoïÿÿýÿ¿/ç?Ïûÿï_ýoïûÿ¿/ç?Ïûÿï_?ßûÿßOè¯úÿú_ïûÿÏ/ç/Ïûÿïoûúÿ¯çOßûÿß?þûÿÿ¯çOßûÿß?_ïûÿÏ/ç/Ïûÿïoý_ïûÿÏ/ç/ÏûÿïoûúÿŸçOïûÿÏO¿ûÿïoç/¿ûÿïoú?ßûÿßOüìOßûÿß?ý?ßûÿßOçOßûÿß?¿ûÿïoç/¿ûÿïoý¿ûÿïoç/¿ûÿïoúOßûÿß?çOßûÿß?ýOßûÿß?ööûÿïOü/¿ûÿïo¥ÛïûÿÏ?±êýÿÏäüÿÙoïûÿ¿ø¯ÿûÿëúÿûŸúÿëúÿþúÿ¯êïûÿ¿øŸúÿëúÿŸø¿ûÿïoê¿ûÿïú¿ýÿÿÿïoê¿ûÿïýŸúÿëúÿŸûŸúÿëÿÿüÿŸø/¿ûÿïoê¿ûÿïþ_ïûÿÏ?ëúÿŸ÷úÿ¯þî¯úÿùúÿ¯ë¯úÿü_ïûÿÏ?ëúÿŸû_ïûÿÏ?ëúÿŸøúÿ¯ë¿ûÿïúúÿ¯ø÷?ßûÿ¯ù_ïûÿÏ/§ÝOßûÿïo¯ê¿þÿïâŸýÿ¯Û?Ïûÿï_ô?ßûÿßOí_ïûÿÏ?÷?ßûÿßOí_ïûÿÏ?ú¿ûÿïí?ßûÿïOô?Ïûÿï_íOïûÿÏ?ô_ïûÿÏ?íïûÿ¿÷_ïÿÿýÿÏ?íïûÿ¿ú?Ïûÿï_íOïûÿÏ?÷?Ïûÿï_íOïþÿþÿÏ?ô_ïûÿÏ/îúÿ¯üúÿŸîOßûÿß?ô¿ûÿïïïûÿ¿÷¿ûÿïíïûÿ¿úúÿŸîOßûÿß?þúúÿŸîOßûÿß?ô¿ûÿïoíúÿ¯÷¿ûÿïoùøûÿïOöŸúÿ©ß¿úÿŸ®êýÿoà¯þÿïÝŸúÿòïûÿ¿ñ/¿ûÿïoóïûÿ¿ñ/¿ûÿïoöOïûÿÏ?ñŸÿÿüÿñïûÿ¿ñ¿ûÿïñúÿŸñ?ßûÿßOôÿûÿŸñ?ßûÿßOöïûÿ¿ñ¿ûÿïóïûÿ¿ñ¿üÿÿïñŸúÿñ?ßûÿß?ø/Ïûÿï_ñ¿ûÿïðOßûÿß?ñ?ßûÿßOóOßûÿß?ñ?ßûÿßOö/Ïûÿï_ñ¿ûÿïüø/Ïûÿï_ñ¿ûÿïð_ïûÿÏ?ñ?ßûÿßOó_ïûÿÏ?ûú/Ïûÿ¯ó?Ïûÿï_ªáúÿ¿/¬ë/ýÿ/à?ýÿ/ß_ïûÿÏ?ðÿ¿ûÿïôúÿ¯ñ¿ûÿïôúÿ¯ôúÿŸôoïþÿþÿ¿/î¯úÿõúÿ¯î?Ïûÿï_ô¯úÿñ?Ïûÿï_ô¯úÿô¯úÿõúÿ¯ñ¯úÿõúÿ¯î?Ïûÿï_ô¯úÿõoïûÿ¿/ôúÿ¯îúÿŸõŸúÿñúÿŸõŸúÿóoïûÿ¿/ôúÿ¯ûöoïûÿ¿/ôúÿ¯îúÿŸõ¯úÿñúÿŸýûûÿïOïoïûÿ¿¬â_ïûÿï_ªëoýÿÞýÿoá/¿ûÿïoîýOßûÿß?÷Oßûÿß?íOßûÿß?÷Oßûÿß?ð/¿ûÿïo÷/¿üÿÿïoê?ßûÿß?÷?ßûÿß?êoïûÿ¿/÷oïûÿ¿/îoïûÿ¿/÷oïûÿ¿/ð?ßûÿß?÷?ßûÿß?í?ßûÿß?÷?ßûÿß?êïûÿ¿÷ïûÿ¿ò¯úÿø?ßûÿßOê/¿üÿÿïo÷oïûÿ¿/í/¿ûÿïo÷oïûÿ¿/ð¯úÿø?ßûÿßOùõ¯úÿø?ßûÿßOê/Ïûÿï_÷oïûÿ¿/í/Ïûÿï_þý/Ïûÿ¯í¯úÿ®ä/¿úÿ©ë¯þÿ¿Þ¿þÿ¯ãúÿ¯íüúÿ¯û¿ûÿïêúÿ¯û¿ûÿïìoïûÿ¿/ûúÿŸèúÿ¯û¯úÿè¯úÿû?Ïûÿï_ìÿ¯úÿû?Ïûÿï_íúÿ¯û¯úÿëúÿ¯û¯úÿé¯úÿû?ÏûÿïOî?ßûÿßOû¯úÿçoïþÿþÿÏ/û/ÏûÿïoéoïûÿÏ/û/Ïûÿïoì?ßûÿßOû¯úÿøó?ßûÿßOû¯úÿçoïûÿ¿/û?Ïûÿï_éoïûÿ¿/þûÿïOé?ßûÿß?¯æŸúÿ¿§ëïþÿÞþÿïäOßûÿß?ëú/¿ûÿïoýïûÿ¿ç/¿ûÿïoýïûÿ¿êŸúÿþOïûÿÏ?ä¿ûÿïýïûÿ¿ä?ßûÿßOþúÿëý?ßûÿßOþúÿê¿ûÿïýïûÿ¿ç¿ûÿïýïûÿ¿þç?ßûÿß?þŸúÿëïûÿ¿þoïûÿ¿äŸÿÿüÿúÿŸçŸúÿúÿŸéïûÿ¿þoïûÿ¿öñïûÿ¿þoïûÿ¿/ä¯úÿúÿç¯úÿ/Ïûÿ¯çúÿ¯±çoïûÿßO¥ì/ýÿ?Þ?ýÿ/ç¿ûÿïéø_ïûÿÏ??ßûÿßOã_ïûÿÏ??ßûÿßOæ?ÏûÿïO¿ûÿïâOïûÿÏ??ÏûÿïOàïûÿ¿_ïûÿÏ?éûïûÿ¿_ïûÿÏ?æOïûÿÏ??ÏûÿïOãOïûÿÏ??ÏûÿïOüæúÿ¯_ïûÿÏ/è¿ûÿï?Ïûÿï_à?ÏûÿïOOïûÿÏ?ã?ÏûÿïOOïûÿÏ?æ¿ûÿï?Ïûÿï_ôð¿ûÿï?Ïûÿï_à?ßûÿßO_ïûÿÏ?ã?ßûÿßûÿïOã¿ûÿï²é?Ïûÿï¤ìoýÿÜýÿoèïûÿ¿è÷óÿáóÿãïôÿ¯þáóÿÞ¿ôÿïoçú¿ôÿïoãóÿáóÿûä¿ôÿïoäOßôÿÝïõÿïßïõÿïâOßôÿóîOßôÿÝïõÿïoßïýÿûÿ¯àOïûÿÏ?´ëŸúÿ¯¢ì¯þÿ¿Ü¿þÿ¯ê?ßûÿßOæõ?Ï÷ÿ¿/Ý?Ï÷ÿ¿/à¯÷ÿß?üß/¿÷ÿÏ/ÚOß÷ÿ¯æøOß÷ÿ¯à/¿÷ÿÏ/Ý/¿÷ÿÏ/ùâOï÷ÿŸâ÷ÿÏ?Û¯÷ÿ¯Ý¯÷ÿ¯à÷ÿÏ?ñí÷ÿÏ?Ú¿÷ÿ¯Ý¿þÿüÿOÝúÿŸ¶ìïûÿß? ìïþÿÜþÿïì¯úÿåóùÿÙùÿÜoùÿ¯ûÝùÿ׿ùÿOä÷¿ùÿOÜùÿÙùÿ÷á¿ùÿOÞ_ùÿ¿ÙþùÿÙùÿÜ_ùÿ¿ïë_ùÿ¿ÖŸùÿÛ/Ïþÿüÿß?Ü/¿ûÿïo·î?ßûÿïoží/ýÿ?Ü?ýÿ/îoïûÿ¿/ãõ÷ÿÝ÷ÿßïøÿ¯üß÷ÿÚ¯øÿïoåø¯øÿïoß÷ÿÝ÷ÿùâ¿øÿïoá÷ÿÏ?Û¯÷ÿ¯Ý¯÷ÿ¯à÷ÿÏ?ñí÷ÿÏ?Ú¿÷ÿ¯Þüÿúÿ¯Üoïûÿ¿/¹ð¿úÿŸ/Ô?ÔŸø¿í¿Ïýÿö¿áÿoð?Ïûÿï_áö_ïõÿßOß_ïõÿßOâ?ÏõÿïoýàOßõÿïOÜïõÿÏ?çùïõÿÏ?âOßõÿïOßOßõÿïOúãôÿ¿/äOßôÿÝïõÿïßïõÿïâOßôÿóîOßôÿÝïõÿïoá/Ïûÿ¯¿ûÿïoÜŸúÿ»ý¯†ÿ½ÿ¯òúÿŸàø¿ûÿïoúÿ¯ã¿ûÿïoúÿ¯æŸúÿ_ïûÿÏ?â¿ûÿïïûÿ¿à?ßûÿß_Ÿúÿéû?ßûÿß_Ÿúÿæ¿ûÿïïûÿ¿ã¿ûÿïïûÿ¿üå?ßûÿß_Ÿúÿè¿ûÿï?Ïûÿï_à?ÏûÿïOOïûÿÏ?ã?ÏûÿïOOïûÿÏ?æ¿ûÿï?Ïûÿï_ôð¿ûÿï?Ïûÿï_à?ßûÿßO_ïûÿÏ?äûÿïOÿ_ïûÿÏ?Ü?ÏûÿïO¼þ…ÿ½ÿïó_ïûÿÏ?Þúúÿ¯¿ûÿïæúÿ¯¿ûÿïè_ïûÿÏ/úÿŸãúÿ¯¯úÿãŸúÿ?Ïûÿï_êýŸúÿ?Ïûÿï_èúÿ¯¯úÿåúÿ¯¯úÿýç¯úÿ?ßûÿïOêïûÿ¿þoïûÿ¿äŸÿÿüÿúÿŸçŸúÿúÿŸéïûÿ¿þoïûÿ¿öñïûÿ¿þoïûÿ¿ä¯úÿúÿè/Ïûÿ¯þúÿÜïûÿ¿¾þ…ÿ¼ÿö¿ûÿïoÜûOßûÿß?ûOßûÿß?éOßûÿß?ûOßûÿß?ì/¿ûÿïoû/Ïûÿï_æ?ßûÿßOûOßûÿß?æoïûÿ¿/ûoïûÿ¿ìþoïûÿ¿/ûoïûÿ¿ì?ßûÿßOûOßûÿß?é?ßûÿßOûOßûÿß?èoïûÿ¿ûïûÿ¿î?ßûÿßOû¯úÿçoïþÿþÿÏ/û/ÏûÿïoéoïûÿÏ/û/Ïûÿïoì?ßûÿßOû¯úÿøó?ßûÿßOû¯úÿçoïûÿ¿/û?Ïûÿï_êûÿïOþü?Ïûÿï_ܯúÿ¿þï…ÿ¼ÿ_øúÿ¯Ûý¯úÿøúÿŸí¯úÿøúÿŸðúÿŸøoïüÿÿ¿/ê¯úÿùúÿ¯ê/Ïûÿï_ø¯úÿî/Ïûÿï_ø¯úÿð¯úÿùúÿ¯í¯úÿùúÿ¯ê?Ïûÿï_ø¯úÿñ¯úÿø?ßûÿßOê/¿üÿÿïo÷oïûÿ¿/í/¿ûÿïo÷oïûÿ¿/ð¯úÿø?ßûÿßOùõ¯úÿø?ßûÿßOê/Ïûÿï_÷oïûÿ¿/î/Ïûÿ¯ýúoïûÿ¿/ÜOßûÿß?Áÿ_„ÿ¼ÿŸùOßûÿß?Ùþïûÿ¿õ/¿ûÿïoïïûÿ¿õ/¿ûÿïoòOßûÿß?õŸýÿþÿíoïûÿ¿õ¿ûÿïoíúÿŸõ?ßûÿßOðúÿŸõ?ßûÿßOòoïûÿ¿õ¿ûÿïoïoïûÿ¿õ¿ûÿïoíúÿõOßûÿß?ôoïûÿ¿/ôúÿ¯îúÿŸõŸúÿñúÿŸõŸúÿóoïûÿ¿/ôúÿ¯ûöoïûÿ¿/ôúÿ¯îúÿŸõ¯úÿñûÿïOûù¯úÿÝúÿ¯Ãÿ¿„ÿ¼ÿßû¯úÿ×?ßûÿïOñ_ïûÿÏ/ó?ßûÿïOñ_ïûÿÏ/ö¿ûÿïñ?ßÿÿýÿßOð?Ïûÿï_ñ_ïûÿÏ?ðOïûÿÏ?ñúÿ¯óOïûÿÏ?ñúÿ¯ö?Ïûÿï_ñ_ïûÿÏ?ó?Ïûÿï_ñ_ïüÿÿÏ?ð_ïûÿÏ?òúÿ¯ø/Ïûÿï_ñ¿ûÿïðOßûÿß?ñ?ßûÿßOóOßûÿß?ñ?ßûÿßOö/Ïûÿï_ñ¿ûÿïüø/Ïûÿï_ñ¿ûÿïð_ïûÿÏ?ñ?ßûÿßOô/Ïûÿ¯ú÷?ßûÿßOÜ¿ûÿïoÄ/ƒÿ»ÿýïûÿ¿×ŸúÿïŸúÿ÷ŸúÿïŸúÿùúÿ¯îïûÿ¿ôŸúÿïúÿŸô¿ûÿïî¿ûÿïö¿ÿÿýÿïî¿ûÿïùŸúÿïúÿŸ÷ŸúÿïýÿþÿŸô/¿ûÿïoî¿ûÿïoûúÿŸîOßûÿß?ô¿ûÿïïïûÿ¿÷¿ûÿïíïûÿ¿úúÿŸîOßûÿß?þúúÿŸîOßûÿß?ô¿ûÿïoíúÿ¯÷ûÿïOøõúÿ¯Ü_ïûÿÏ?ÆŸƒÿ»ÿ_?ßûÿßOÖoïûÿ¿/ë?Ïûÿï_ùoïûÿ¿/ë?Ïûÿï_ü?ßûÿßOë¿úÿö_ïûÿÏ?ë/Ïûÿï_÷úÿ¯ëOßûÿß?úýÿþÿ¯ëOßûÿß?ü_ïûÿÏ?ë/Ïûÿï_ù_ïûÿÏ?ë/Ïÿÿýÿï_÷úÿ¯ë_ïûÿÏ?þ_ïûÿÏ?ëúÿŸ÷úÿ¯þî¯úÿùúÿ¯ë¯úÿü_ïûÿÏ?ëúÿŸû_ïûÿÏ?ëúÿŸøúÿ¯ë¿ûÿïú/Ïûÿ¯÷ô¿ûÿïÜúÿŸÈïƒÿ»ÿŸŸúÿ×/¿ÿÿýÿïoçïûÿ¿ý/¿ûÿïoçïûÿ¿¯úÿéOßûÿß?ú/¿ûÿïoçoïûÿ¿/ú?ßûÿß?èúÿŸý?ßüÿÿß?èúÿŸ/¿ûÿïoçoïûÿ¿/ý/¿ûÿïoçoïûÿ¿/úOßûÿß?èúÿŸ/¿ûÿïoç/¿ûÿïoú?ßûÿßOüìOßûÿß?ý?ßûÿßOçOßûÿß?¿ûÿïoç/¿ûÿïoý¿ûÿïoç/¿ûÿïoúOßûÿß?çOßûÿß?ýûÿïOõòOßûÿß?Ü/Ïûÿï_É_‚ÿ»ÿÿïûÿ¿/×ýÿþÿŸå¯úÿúÿŸå¯úÿŸïûÿ¿/çÿúÿ¯þúÿ¯å¯úÿþ¯úÿå/¿ûÿïo¯úÿå/¿ûÿïŸúÿ¯å¯úÿúÿ¯å¯úÿþ¿ûÿïä/Ïôÿ¯ä_ïûÿÏ/þ¯úÿûëúÿ¯¯úÿåúÿ¿úÿ¯ä_ïûÿÏ/úÿ¯ä_ïûÿÏ/þ¯úÿäúÿŸ/Ïûÿ¿ôñúÿŸÜoïûÿ¿/Ëß‚ÿ´ÿ¯Ö?_ïüÿÿïá?úÿßïûÿïá?ôÿŸå?ý?oïûÿïo?_ßúÿá?úÿß_?ïûÿï_á?¯úÿßïûÿï_á?¯ôÿá?úÿÿßúÿâ??úÿß_?ïûÿï_á?¯öÿá?Oßúÿ?oïûÿï_ù?é?_ïûÿÿïûÿï_á?_ïõÿá?Oßüÿÿÿßúÿá?Oßúÿ?ïûÿï_á?oïûÿïúÿ¯ò?ï?oïûÿïoÜ?OßúÿÍÿÿÿÿÿÿÿÿµÿ?ÎÿÿÿÿÿÿÿÿµÿÎÿÿÿñÿï’ÿÿÿÿÿµÿÎÿÿÿñÿ¿“ÿÿÿÿÿ¶ÿ¯Îøãÿ?©ïËÿ?ʼýÿ?Ìøãÿ?©ïËÿ?ʼ?ýÿÌøãÿ?©ïËÿ?ʼþÿßËøãÿ?©ïËÿ?ʼŸþÿ¿Ëøãÿ?©ïËÿ?ʼ¿þÿËøãÿ?©ïËÿ?ʼýÿ_Ëøãÿ?©ïËÿ?ʽýÿ?Ëøãÿ?©ïËÿ?ʽ?ýÿÊøãÿ?©ïËÿ?ʽþÿßÊøãÿ?©ïËÿ?ʽŸþÿ¿Êøãÿ?©ïËÿ?ʽ¿þÿÊøãÿ?©ïËÿ?ʽýÿ_Êøãÿ?©ïËÿ?ʾýÿ?Êøãÿ?©ïËÿ?ʾ?ýÿÉøãÿ?©ïËÿ?ʾþÿßÉøãÿ?©ïËÿ?ʾŸþÿ¿Éøãÿ?©ïËÿ?ʾ¿þÿÉøãÿ?©ïËÿ?ʾýÿ_Éøãÿ?©ïËÿ?Ê¿ýÿ?Éøãÿ?©ïËÿ?Ê¿OýÿÈøãÿ?©ïËÿ?Ê¿þÿßÈøßäÿ/©ïËÿ?Ê¿¯þÿ¿ÈøŸåÿߨïËÿ?Ê¿ÏþÿÈøïæÿO¨ïËÿ?Ê¿ýÿ_È÷/ßéÿï_§ïËÿ?ÊÀ/ýÿ?Èõ/ê?¥ïËÿ?ÊÀOýÿÇïËÿ?ÊÀþÿßÇïçÿÏŸçÿ?ÊÀ¯þÿ¿ÇïèÿÏŸèÿ?ÊÀÏþÿÇïéÿÏþŸéÿ?ÊÀýÿOÇïêÿÏüŸêÿ?ÊÁ/ýÿ/ÇïëÿÏúŸëÿ?ÊÁOýÿÆïìÿÏøŸìÿ?ÊÁþÿÏÆïíÿÏöŸíÿ?ÊÁ¯þÿ¯ÆïîÿÏôŸîÿ?ÊÁÏþÿÆïïÿÏòŸïÿ?ÊÁýÿOÆïðÿÏðŸðÿ?ÊÂ/ýÿ/ÆïñÿÏîŸñÿ?ÊÂOýÿÅïòÿÏìŸòÿ?ÊÂþÿÏÅïóÿÏêŸóÿ?ʯþÿ¯ÅïôÿÏèŸôÿ?ÊÂÏþÿÅïõÿÏæŸõÿ?ÊÂýÿOÅïöÿÏäŸöÿ?ÊÃ/ýÿ/Åï÷ÿÏâŸ÷ÿ?ÊÃOýÿÄïøÿÏàŸøÿ?ÊÃþÿÏÄïùÿÏÞŸùÿ?Êÿþÿ¯ÄïúÿÏÜŸúÿ?ÊÃßþÿÄïûÿÏÚŸûÿ?ÊÃýÿOÄïüÿÏØŸüÿ?ÊÄ?ýÿ/ÄïýÿÏÖŸýÿ?ÊÄ_ýÿÃïýÿ?Ôýÿ?ÊÄþÿÏÃïýÿÏÖ_ýÿ?ÊÄ¿þÿ¯ÃïüÿÏØ_üÿ?ÊÄßþÿÃïûÿÏÚ_ûÿ?ÊÄýÿOÃïúÿÏÜ_úÿ?ÊÅ?ýÿÃïùÿÏÞ_ùÿ?ÊÅ_ýÿÂïøÿÏà_øÿ?ÊÅþÿ¿ÂïýÿŸüÿÏâ_üÿÏýÿ?ÊÅ¿þÿŸÂïýÿ?_üÿÏä_üÿÏýÿ?ÊÅßþÿÂïýÿ?_üÿÏæ_üÿÏýÿ?ÊÅýÿ?Âïýÿ?_üÿÏè_üÿÏýÿ?ÊÆ?ýÿÂïýÿ?þ_üÿÏê_üÿÏþýÿ?ÊÆ_ýÿÁïýÿ?ý_üÿÏì_üÿÏýýÿ?ÊÆþÿ¿Áïýÿ?ü_üÿÏî_üÿÏüýÿ?ÊÆ¿þÿŸÁïýÿ?û_üÿÏð_üÿÏûýÿ?ÊÆßþÿÁïýÿ?ú_üÿÏò_üÿÏúýÿ?ÊÆýÿ?Áïýÿ?ù_üÿÏô_üÿÏùýÿ?ÊÇ?ýÿÁïýÿ?ø_üÿÏö_üÿÏøýÿ?ÊÇ_ýÿÀïýÿ?÷_üÿÏø_üÿÏ÷ýÿ?ÊÇþÿ¿Àïýÿ?ö_üÿÏú_üÿÏöýÿ?ÊÇ¿þÿŸÀïýÿ?õ_üÿÏü_üÿÏõýÿ?Êð/??•ÇßþÿÀïýÿ?ô_üÿÏþ_üÿÏôýÿ?Êú/?O¯¿Ïýÿß•Èýÿ?Àïýÿ?ó_üÿÏ_üÿÏóýÿ?Ê„?Oÿ¯¿Ïóÿ¿•È?ýÿÀïýÿ?ò_üÿÏoüÿÏòýÿ?ÊŽ??Ÿ¿¿üÿîÿ¿•Èoýÿ¿ïýÿ?ñ_÷ÿÏñýÿ?Ê—/?Ÿ¿¿òÿîÿ•Èþÿ¿¿ïýÿ?ð_ùÿÏðýÿ?Ê—ßìÿîÿ•È¿þÿŸ¿ïýÿ?ï_ûÿÏïýÿ?Ê—ëÿîÿ•Èïþÿ¿ïýÿ?ï_ûÿÏïýÿ?Ê—ëÿîÿO•Éýÿ?¿ïýÿ?ð_ùÿÏðýÿ?ʘ/ëÿîÿ?•É?ýÿ¿ïýÿ?ñ_÷ÿÏñýÿ?ʘ?ëÿîÿ?•Éoýÿ¾ïýÿ?ò_üÿÏoüÿÏòýÿ?ʘ?ëÿîÿ”Éþÿ¿¾ïýÿ?ó_üÿÏ_üÿÏóýÿ?ʘoëÿîÿ”É¿þÿ¾ïýÿ?ô_üÿÏþ_üÿÏôýÿ?ʘëÿïÿï”Éïþÿo¾ïýÿ?õ_üÿÏü_üÿÏõýÿ?ʘëÿïÿ¿”Êýÿ?¾ïýÿ?ö_üÿÏú_üÿÏöýÿ?ʘ¿ëÿïÿ¿”Ê?ýÿ¾ïýÿ?÷_üÿÏø_üÿÏ÷ýÿ?ʘ¿ëÿïÿ¯”Êoþÿï½ïýÿ?ø_üÿÏö_üÿÏøýÿ?ʘÏëÿïÿ”Êþÿ¿½ïýÿ?ù_üÿÏô_üÿÏùýÿ?ʘêÿïÿ”Ê¿þÿ½ïýÿ?ú_üÿÏò_üÿÏúýÿ?ʘêÿïÿ_”Êïþÿo½ïýÿ?û_üÿÏð_üÿÏûýÿ?Ê™êÿïÿ?”Ëýÿ?½ïýÿ?ü_üÿÏî_üÿÏüýÿ?Ê™?êÿïÿ?”Ë?ýÿ½ïýÿ?ý_üÿÏì_üÿÏýýÿ?Ê™?êÿïÿ”Ëoþÿï¼ïýÿ?þ_üÿÏê_üÿÏþýÿ?Ê™_êÿïÿ“Ëþÿ¿¼ïýÿ?_üÿÏè_üÿÏýÿ?Ê™êÿïÿ“Ë¿þÿ¼ïýÿ?_üÿÏæ_üÿÏýÿ?Ê™êÿðÿÏ“Ëïþÿo¼ïýÿ?_üÿÏä_üÿÏýÿ?Ê™Ÿêÿðÿ¿“Ìýÿ?¼ïýÿŸüÿÏâ_üÿÏýÿ?Ê™¿êÿðÿ¿“Ì?ýÿ¼ïøÿÏà_øÿ?Ê™¿êÿðÿ“Ìþÿï»ïùÿÏÞ_ùÿ?Ê™ïêÿðÿ“ÌŸþÿ¿»ïúÿÏÜ_úÿ?Ê™éÿðÿo“Ì¿þÿ»ïûÿÏÚ_ûÿ?Ê™éÿðÿ?“Ìýÿo»ïüÿÏØ_üÿ?Êš?éÿðÿ?“Íýÿ?»ïüÿÏØ_üÿ?Êš?éÿðÿ/“Í?ýÿ»ïûÿÏÚ_ûÿ?Êš?éÿðÿ’ÍþÿïºïúÿÏÜ_úÿ?Êšéÿðÿ’ÍŸþÿ¿ºïùÿÏÞ_ùÿ?Êšéÿñÿß’Í¿þÿºïøÿÏà_øÿ?Êí ??Ÿ¿¿ÿ?Ÿšéÿñÿ¿’Íýÿ_ºïýÿŸüÿÏâ_üÿÏýÿ?Ê÷??o¿¿öÿŸš¿éÿñÿ¿’Îýÿ?ºïýÿ?_üÿÏä_üÿÏýÿ?Ê??o¿¿ïíÿžš¿éÿñÿŸ’Î?ýÿ¹ïýÿ?_üÿÏæ_üÿÏýÿ?Ê‹ ??o¿¿ïÿäÿžšÏéÿñÿ’Îþÿß¹ïýÿ?_üÿÏè_üÿÏýÿ?Ê”ÿ?_¿¿ïöÿäÿžšèÿñÿ’Οþÿ¿¹ïýÿ?þ_üÿÏê_üÿÏþýÿ?Ê/_¿¿ßìÿäÿžšèÿñÿO’οþÿ¹ïýÿ?ý_üÿÏì_üÿÏýýÿ?Êïæÿäÿž›èÿñÿ?’Îýÿ_¹ïýÿ?ü_üÿÏî_üÿÏüýÿ?Êž_åÿäÿž›?èÿñÿ?’Ïýÿ?¹ïýÿ?û_üÿÏð_üÿÏûýÿ?Êž¯åÿåÿïž›?èÿñÿ‘Ï?ýÿ¸ïýÿ?ú_üÿÏò_üÿÏúýÿ?ÊŸäÿåÿ¿ž›oèÿñÿ‘Ïþÿïú?Àïýÿ?ù_üÿÏô_üÿÏùýÿ?ÊŸoäÿåÿ¿ž›èÿñÿ‘Ô?¿ßóÿß¿Ÿ?Èïýÿ?ø_üÿÏö_üÿÏøýÿ?ÊŸÏäÿåÿ¿ž›èÿòÿ¿‘Ù_¿æÿ߯oÌïýÿ?÷_üÿÏø_üÿÏ÷ýÿ?Ê /ãÿåÿ¿ž›¯èÿòÿ¿‘Ý_ŸßÞÿß/Ïïýÿ?ö_üÿÏú_üÿÏöýÿ?Êî??Ÿ¿¿/¼ãÿåÿ¿ž›¿èÿòÿ¯‘à/Ï×ÿßoÒïýÿ?õ_üÿÏü_üÿÏõýÿ?Êø??Ÿ¿¿÷ÿo¼ßãÿåÿ¿ž›¿èÿòÿ‘ãßÑÿŸÔïýÿ?ô_üÿÏþ_üÿÏôýÿ?Ê‚ÿ?o¿¿ïîÿ½Oâÿåÿ¿ž›çÿòÿ‘å_¿ÌÿŸÖïýÿ?ó_üÿÏ_üÿÏóýÿ?ÊŒ ??o¿¿ïÿÿæÿ¿½Ÿâÿåÿž›çÿòÿ_‘èïÈÿØïýÿ?ò_üÿÏoüÿÏòýÿ?Ê–??o¿¿ïõÿåÿ¾áÿåÿž›çÿòÿ?‘êŸÄÿß?Ùïýÿ?ñ_÷ÿÏñýÿ?Êž?_¿¿ïëÿåÿ¿_áÿåÿžœ?çÿòÿ?‘ìŸÀÿÛïýÿ?ð_ùÿÏðýÿ?ÊŸ?äÿåÿO¿¿áÿåÿžœ?çÿòÿ‘î½ÿÏÜïýÿ?ï_ûÿÏïýÿ?ÊŸ_äÿåÿÀàÿåÿžœOçÿòÿïoï»ÿï/Ýïýÿ?ï_ûÿÏïýÿ?ÊŸäÿåÿ¯Ààÿåÿžœçÿòÿ² ??Ÿ¿¿ÿÏêñ?Ï·ÿ_Þïýÿ?ð_ùÿÏðýÿ?ÊŸ¯äÿåÿßÀßàÿåÿžœçÿóÿϼ??Ÿ¿¿÷ÿïéó´ÿ_ßïýÿ?ñ_÷ÿÏñýÿ?ÊŸ¿äÿäÿÂ?ßÿåÿ_žœŸçÿóÿ¿Æ??o¿¿íÿ/èô?ß²ÿ_àïýÿ?ò_üÿÏoüÿÏòýÿ?ÊŸãÿäÿ?Ÿßÿåÿ?žœ¿çÿóÿ¿Ð??o¿¿ïåÿ_çõ¯ÿ?áïýÿ?ó_üÿÏ_üÿÏóýÿ?Ê ãÿäÿoÂïßÿåÿ?žœ¿çÿóÿÚ??o¿¿ïÜÿæ÷Ï®ÿï/âïýÿ?ô_üÿÏþ_üÿÏôýÿ?Ê ?ãÿäÿŸÃ_Þÿåÿ?žœßçÿóÿÝïÓÿŸåø?ï¬ÿÏãïýÿ?õ_üÿÏü_üÿÏõýÿ?Ê _ãÿäÿ¿Ã¯Þÿåÿ?žœæÿóÿݯÓÿÏåùo©ÿãïýÿ?ö_üÿÏú_üÿÏöýÿ?Ê£þ?õO??ó ãÿãÿÄÝÿåÿ?žœæÿóÿ?ÞOÓÿïäúŸ§ÿ?äïýÿ?÷_üÿÏø_üÿÏ÷ýÿ?Ê«?o¿¿ïëÿ￟Oú ¯ãÿãÿ/ÅoÝÿåÿ?ž/æÿóÿ?ßïÔÿï/ãü¿¦ÿßåïýÿ?ø_üÿÏö_üÿÏøýÿ?ʰ/_¿ïÞÿï¿O ÏãÿãÿOÅÏÝÿåÿ?ž?æÿóÿ/ß¿Óÿ_âýϤÿåïýÿ?ù_üÿÏô_üÿÏùýÿ?Ê´?¿ïÔÿÏ/¡âÿãÿÆ/Üÿåÿ?æÿóÿßoÓÿoáþÏ¢ÿæïýÿ?ú_üÿÏò_üÿÏúýÿ?ʸo¯ïÎÿÿïŸO¥âÿãÿ¿ÆÜÿåÿoæÿóÿàïÔÿŸàÿÏ¡ÿŸæïýÿ?û_üÿÏð_üÿÏûýÿ?Ê»/ßÊÿýÿߨ?âÿãÿ߯ïÜÿåÿæÿôÿßà¿ÔÿÏßÏŸÿçïýÿ?ü_üÿÏî_üÿÏüýÿ?ʾ/ßÇÿúÿ¿_ªoâÿâÿÈOÛÿåÿæÿôÿ¿áoÔÿßßÏžÿçïýÿ?ý_üÿÏì_üÿÏýýÿ?ÊÁoÏÄÿøÿßo­âÿâÿ?ȯÛÿåÿ¿æÿôÿ¿âïÕÿï/ßÏÿïçïýÿ?þ_üÿÏê_üÿÏþýÿ?ÊÃ?ŸÁÿöÿﯿâÿâÿÉÚÿåÿ¿æÿôÿŸâÏÔÿ?ÞÏ›ÿ_èïýÿ?_üÿÏè_üÿÏýÿ?ÊÅ_ß¿ÿôÿï_°ÏâÿâÿŸÉ_ÚÿåÿÏæÿôÿãÔÿ_ÞŸÿ›ÿ¯èïýÿ?_üÿÏæ_üÿÏýÿ?ÊÈï½ÿòÿß?²áÿâÿÏÉÏÚÿæÿÏëý?_õü?Êåÿôÿä/ÔÿŸÞÿÿšÿéïýÿ?_üÿÏä_üÿÏýÿ?ÊÊï»ÿðÿ¯µáÿáÿÊÙÿæÿ¿õ?_¿¿ïåÿß¿¿_?ÕåÿôÿOäÏÕÿ¿ÞOþÿšÿOéïýÿŸüÿÏâ_üÿÏýÿ?ÊÌï¹ÿïÿïO¶?áÿáÿ/ËÙÿæÿ¿û?Ÿ¿Óÿß¿o?Üåÿôÿ?åÕÿÏßïþÿšÿŸéïøÿÏà_øÿ?ÊÍ_ï·ÿíÿ¯¸áÿáÿ_ËßÙÿæÿ¿O¿ïÈÿ߯?à?åÿôÿ?æ/Õÿï/ßÏýÿÔÿï¿Oþ?OŸßÓÿßéïùÿÏÞ_ùÿ?ÊÏ?ßµÿìÿß/¹áÿáÿÌ?Øÿæÿ¿ _ŸßÁÿ?à?åÿôÿæßÕÿ/Þüÿ×ÿ¿o/õïÕÿêïúÿÏÜ_úÿ?Êѯ³ÿêÿoº¿áÿáÿ¿ÌŸâÿoøÿæÿ¿£?ÏþÿÀÿ?à_åÿôÿæÕÿ_ÞOûÿÚÿßoðÖÿ?êïûÿïÚûÿ?ÊÒï²ÿéÿŸ¼ßáÿáÿïÍïãÿ¯øÿæÿ¿¦OŸïûÿÀÿ/àåÿôÿç?ÕÿÞïûÿÜÿß_ëOïØÿêïúÿŸÛ/ïûÿ?ÊÔ/ϰÿèÿϽàÿàÿÎ_âÿ_øÿæÿ¯©OŸïøÿÀÿßåÿõÿ¿èßÖÿ¯Ý¯úÿÞÿï_è/ØÿŸêïùÿŸÝ/ïúÿ?ÊÕ®ÿçÿÏ/¿/àÿàÿ?ίâÿŸøÿæÿ¬ïõÿÀÿߟåÿõÿ¿èÖÿÏÞOùÿßÿ¯æoÙÿ¿êïøÿŸß/ïùÿ?Ê×/Ï­ÿæÿï/À?àÿàÿÏâÿ¿¿øÿæÿ®_¿òÿÁÿßß¿åÿõÿ¯é?ÖÿïÞïùÿáÿï_ã¿ÚÿïêïýÿÏüÿŸá/ïýÿÏýÿ?ÊØ_ï¬ÿåÿï/Áàÿàÿ¯Ïoâÿo¿øÿæÿ±ïðÿÁÿ¿ß¿åÿõÿêï×ÿï/Ýøÿâÿß/â_Ùÿêïýÿ?ŸüÿŸã/ïýÿÏýÿ?ÊÚŸªÿäÿï/ÂàÿàÿÏÏßâÿßøÿæÿ³ŸíÿÁÿ¿ßïåÿõÿê¯Öÿ_Ý?÷ÿãÿÏàïÚÿêïýÿ?ŸüÿŸå/ïýÿÏýÿ?ÊÛ/Ï©ÿãÿï/ÿàÿßÿÐ/âÿÏ÷ÿæÿµŸëÿÁÿŸßäÿõÿ_ëOÖÿÜ¿÷ÿäÿÏß¿Úÿëïýÿ?ŸüÿŸç/ïýÿÏýÿ?ÊÜOï¨ÿâÿßÄïàÿßÿ?ÑŸâÿ÷ÿæÿ·ŸéÿÁÿßäÿõÿ?ìï×ÿŸÜ_öÿåÿÏÞÚÿ?ëïýÿ?þŸüÿŸé/ïýÿÏþýÿ?ÊÝo¦ÿáÿÏÅßÿßÿ_Ñïâÿ//÷ÿæÿ¹ïèÿÁÿà?äÿõÿ?ì¯×ÿÏÛßöÿæÿïÝÚÿ?ëïýÿ?ýŸüÿŸë/ïýÿÏýýÿ?ÊÞŸ¥ÿàÿ¯Æ?ßÿßÿÒOâÿß?÷ÿæÿ?º_ïæÿÁÿOà?äÿõÿí_×ÿßÜoõÿæÿ/ÜÚÿ?ëïýÿ?üŸüÿŸí/ïýÿÏüýÿ?Ê࿤ÿßÿÇOßÿßÿ¿Ò¯âÿ?÷ÿæÿ?¼/¿äÿÁÿ?à?äÿõÿíïØÿï/ÜïõÿçÿoÛÚÿ?ëïýÿ?ûŸüÿŸï/ïýÿÏûýÿ?ÊáÏ£ÿÞÿOÈßÿŸßÿÓáÿ/o÷ÿæÿ?¾âÿÁÿ?àäÿõÿí¿×ÿOÛôÿèÿ¿ÚŸÚÿ/ëïýÿ?úŸüÿŸñ/ïýÿÏúýÿ?ÊâÏ¢ÿÞÿïÉŸàÿ¿ßÿÔoâÿßþ÷ÿæÿ?¿?ßáÿÁÿßäÿöÿÏîo×ÿ_ÚïôÿéÿïÚßÚÿêïýÿ?ùŸüÿŸó/ïýÿÏùýÿ?Êã/ï¡ÿÝÿÏÉ¿àÿ¿OßÿOÔÏâÿþ÷ÿæÿ?ÀßÿÁÿßäÿöÿ¿ïïØÿŸÚ_óÿéÿoÚ/Ùÿêïýÿ?øŸüÿŸõ/ïýÿÏøýÿ?Êä/ï ÿÜÿÊïàÿŸ/ßÿÕáÿOþ¿÷ÿæÿ?Â/ÏÞÿÂÿïß¿äÿöÿ¿ï¿Øÿ¿ÙßóÿêÿßÙŸÚÿßêïýÿ?÷ŸüÿŸ÷/ïýÿÏ÷ýÿ?Êå/ïŸÿÛÿ?Ëßÿßÿ¯Õâÿïý¿÷ÿæÿ?Ã_ïÝÿÂÿ¿ß¿äÿöÿðoØÿÏÚOòÿêÿ?Ú/Ùÿ¿êïýÿ?öŸüÿŸù/ïýÿÏöýÿ?ÊæßžÿÛÿÏÌ?ßÿoßàÿßÕßâÿŸý¿÷ÿæÿÄŸÛÿÂÿ¿ßÏäÿöÿñ/Øÿï/Ù¿òÿëÿ¿ÚÏÙÿêïýÿ?õŸüÿŸû/ïýÿÏõýÿ?ÊçÏÿÚÿÍ_ßÿ?¿ßÿÖOáÿOýï÷ÿæÿÅÏÚÿÂÿ¯ßãÿöÿñÏØÿ/ÙñÿëÿOÚ¯Øÿoêïýÿ?ôŸüÿŸý/ïýÿÏôýÿ?ÊèÏœÿÙÿÎßÿ?ßÿ?ןâÿïüöÿæÿÆ/ïÙÿÂÿßãÿöÿ?òØÿ_ØñÿìÿßÛ¯×ÿ/êïýÿ?óŸüÿŸ/ïýÿÏóýÿ?Ê诛ÿÙÿ¿Î¯ßÿßÿoØáÿŸüöÿæÿÇOïØÿÂÿàãÿöÿ?ó/Øÿ×ïñÿìÿoÜ/Ï×ÿïéïýÿ?òŸüÿŸ/ïýÿÏòýÿ?ÊéŸÁÿ￯þý?_Ÿ¿ïêÿØÿ?Ï¿ßÿ?ßÿØ_áÿOýöÿæÿÈ_ÖÿÂÿ_à?ãÿöÿ/óÏÙÿ¯×OðÿìÿÝoïÖÿ¯éïýÿ?ñŸ÷ÿÏñýÿ?Êê_ÄÿÏOñOÏîÿØÿßÏßÿßßÿ¿Ø¿âÿïü?öÿæÿÉoÕÿÂÿ?à?ãÿöÿóÙÿÏׯðÿíÿ¯Þ?ßÔÿ_éïýÿ?ðŸùÿÏðýÿ?Êë/Æÿ¿_éoßñÿ×ÿ_Ñßÿ¿ÿÞÿÙáÿ¯ü?öÿæÿÊŸÔÿÂÿ?àoãÿöÿô?Ùÿï×ïÿíÿ_à_ÏÒÿéïýÿ?ïŸûÿÏïýÿ?ÊìßÉÿïã?¿óÿ×ÿßÑ?ßÿ¯ÿÏßÿ/Úáÿ_ü_öÿçÿïËŸÓÿÂÿàãÿ÷ÿßõßÚÿï/Ö_ïÿíÿãïÑÿ¯èïýÿ?ï/ûÿŸîýÿ?Êì¯Êÿïß?¿õÿÖÿ_Ò_ßÿÿ¿ßÿOÚßáÿüöÿçÿ¿ÌŸÒÿÂÿßãÿ÷ÿ¿õÙÿ_Õ¯ïÿîÿÏå/ÏÎÿOèïýÿ?ð/ïúÿŸïýÿ?ÊíoËÿïÛOï÷ÿÖÿßÒßÿÿßÿÛ/áÿ¯ûöÿçÿ¿ÍÑÿÂÿ߯ãÿ÷ÿ¿ö?ÙÿÕîÿîÿé_ŸßÌÿßçïýÿ?ñ/ïøÿŸðýÿ?Êî/ïÌÿ¯Ø¯øÿÕÿ_Ó¯ßÿ?ÿoßÿ¿ÛŸáÿ_ûöÿçÿ¿Î_ÐÿÃÿ¿ß¿ãÿ÷ÿŸ÷ßÚÿŸÔOîÿîÿOí?oŸßÈÿ_çïýÿ?ò/ïýÿÏŸüÿŸñýÿ?ÊîÏÍÿïOÔoùÿÕÿÏÓÏßÿ?ÿ?ßÿßÛïáÿû¿öÿçÿ¿Ï_ÏÿÃÿ¿ß¿ãÿ÷ÿ÷ŸÚÿÏÔŸîÿîÿó?ŸÏÄÿßæïýÿ?ó/ïýÿÏŸüÿŸòýÿ?ÊïÍÿ¿Ò?ïûÿÔÿ?ÔÞÿÿÞÿÝ_áÿ¯ú¿öÿçÿ¿Ð/ÎÿûÿÏŸO??ü/??oØÿ¿ßâÿ÷ÿøOÚÿßÓßîÿîÿù/?o¿Ï¾ÿOæïýÿ?ô/ïýÿÏþŸüÿŸóýÿ?Êð/ÍÿÏ/ïüÿÔÿŸÕÞÿÿþÞÿ?ݯáÿ_ú¿öÿçÿ¿Ñ/ïÎÿÿÿßOò_Øÿßâÿ÷ÿOùïÛÿï/ÓíÿïÿÏ?o¿¿·ÿ¿åïýÿ?õ/ïýÿÏüŸüÿŸôýÿ?ÊðÏÎÿ_Í/ïýÿÓÿÖ?Þÿÿþ¿ßÿoÞàÿúïöÿçÿ¿ÒÏÍÿŸ?ïØÿßâÿ÷ÿ?ù¯ÚÿOÒ_íÿŸÿïåïýÿ?ö/ïýÿÏúŸüÿŸõýÿ?ÊñÏÿï/Ë/ýÿÓÿoÖoßÿ¿þŸßÿŸÞoáÿ¯ùõÿçÿÒ¯ÏÿïíØÿoà?âÿ÷ÿ?úOÚÿoÑŸíÿŸÿoäïýÿ?÷/ïýÿÏøŸüÿŸöýÿ?ÊòïÐÿï/É_þÿÓÿßÖßÿ¿þßÿÏÞÏáÿ_ùõÿçÿÓÏÿŸíØÿ?à?âÿ÷ÿúïÛÿŸÐßíÿ ÿ¯ãïýÿ?ø/ïýÿÏöŸüÿŸ÷ýÿ?Êò¯Ðÿï/ÇŸÿÿÒÿ/׿ßÿþOÞÿß/àÿúõÿçÿÔ?Ðÿ¿/ýí¿Øÿ?àOâÿ÷ÿúÛÿ¿Ðìÿ¡ÿÏãïýÿ?ù/ïýÿÏôŸüÿŸøýÿ?Êó?Ðÿï/ÅÏÿÒÿ×Ïßÿþ?Þÿ/àáÿ¯ù?õÿçÿÕïÑÿûí¿Øÿàâÿ÷ÿû?ÛÿÏÐOìÿ¢ÿï/âïýÿ?ú/ïýÿÏòŸüÿŸùýÿ?ÊóÏÑÿï/Ä/ÿÒÿï×ÞÿoýÞÿ_àïáÿ_ù?õÿçÿÕ¯Òÿß/úí¿Øÿßâÿøÿ¿üßÜÿï/Ïìÿ£ÿï/áïýÿ?û/ïýÿÏðŸüÿŸúýÿ?Êô_Ðÿ?ÂÑÿ?ÙÞÿ?ýßßÿáOàÿù?õÿçÿÖ_Òÿ¿ùíïØÿߟâÿøÿ¿üÛÿ?ίìÿ¤ÿï/àïýÿ?ü/ïýÿÏîŸüÿŸûýÿ?ÊõßÑÿ_ÁßÒÿÙ?Þÿ?ý¿ßÿ¿áŸáÿ¯ø_õÿçÿ×ïÓÿŸ÷íØÿÏß¿âÿøÿ¯ý?Ûÿ_Íßìÿ¥ÿï/ßïýÿ?ý/ïýÿÏìŸüÿŸüýÿ?ÊõÑÿŸ¿_ÒÿßÙÞÿþýßÿïâàÿ_øõÿçÿo׿ÓÿöíØÿ¿ß¿âÿøÿýÏÜÿÌëÿ¦ÿï/Þïýÿ?þ/ïýÿÏêŸüÿŸýýÿ?ÊöïÒÿϾÏÒÿ/ÚÞÿþýoÞÿã_àÿøõÿçÿ?ØOÓÿ_õîØÿ¿ßßâÿøÿþÜÿ¯Ì?ëÿ§ÿÏÝïýÿ?/ïýÿÏèŸüÿŸþýÿ?ÊöÒÿï¾OÒÿoÚ¿ßÿßþý?Þÿ?ãÏáÿ¯÷õÿçÿ?ÙïÔÿoôî?Øÿßáÿøÿ_ÜÿÏÌOëÿ¨ÿ¯Üïýÿ?/ïýÿÏæŸüÿŸýÿ?Ê÷ïÒÿO½ÿßÓÿ¯Úßßÿ¿þýÞÿäàÿO÷¯õÿçÿ?ÙÔÿŸóî?Øÿßáÿøÿ?¿ÝÿïËëÿ©ÿoÚïýÿ?/ïýÿÏäŸüÿŸýÿ?Ê÷Òÿ¯¼ÿ_ÒÿÚÞÿ¯þüÞÿŸäoáÿïö¿õÿçÿ?ÚÔÿŸòî?Øÿà/áÿøÿ?oÛÿ?Ëëÿ«ÿÏ/ÙïýÿoïýÿÏâŸüÿŸýÿ?ÊøïÓÿß¼þïÓÿ?Ü/Þÿþü¿ßÿÏäÏáÿŸö¿õÿçÿ?Ú¿ÕÿÏòîØÿ?à?áÿøÿÿïÛÿÏË¿ëÿ¬ÿ×ïøÿÏàŸøÿ?ÊøoÒÿO»þÓÿoÜ?ÞÿþüŸÞÿå/àÿOö¿õÿçÿ?Û?ÕÿïñîØÿ?à?áÿøÿ¯ÙÿoÌ¿ëÿ®ÿ¿ÖïùÿÏÞŸùÿ?ÊøßÓÿ¯ºþ/Óÿ¯ÜÞÿOþüÞÿ/æáÿïõôÿçÿ?ÛÏÕÿOðîØÿ/àoáÿøÿOØÿïÍïëÿ°ÿßOÔïúÿÏÜŸúÿ?Êù_ÓÿïºýÏÔÿïÜÞÿ?þüOÞÿOæßáÿŸõôÿçÿÛ_Õÿïî¯Øÿßáÿøÿï×ÿŸÍêÿ²ÿß_ÒïûÿÏÚŸûÿ?Êù¿Óÿ¹ýoÓÿÝ¿Þÿ/þü/Þÿç/àÿOõôÿçÿÛßÖÿÏîî¿ØÿßáÿÌÿ?Îêÿ´ÿß_ÐïüÿÏØŸüÿ?Êú/Óÿ߸ý/ÓÿOÝïÞÿýûÞÿ¯çŸáÿïôôÿçÿÜ_Õÿ/îî¿Ùÿßß¿áÿÌÿßÎêÿ¶ÿß_ÎïüÿŸ×/üÿ?ÊúŸÓÿ_¸üßÔÿÝÝÿýûßßÿÏçïáÿõ?ôÿçÿÜßÖÿíîßÙÿ¿ß¿áÿËÿÐ?êÿ¸ÿ¯?ÌïûÿŸÙ/ïüÿ?ÊûïÔÿÏ·üÔÿ¯Þ?Þÿ¿ýû¿ÞÿèOàÿ/õ?ôÿçÿÝ?ÖÿïíîØÿ¿ßÏáÿËÿïÑ?êÿ»ÿßÊïúÿŸÛ/ïûÿ?Êû_Óÿ?·üOÔÿÏÞOÞÿ¿ýûÞÿ/éŸáÿßô?ôÿçÿÝ¿Öÿ_ìîØÿŸßàÿÊÿ¯Ñ?êÿ¾ÿïŸ/ÇïùÿŸÝ/ïúÿ?ÊûÏÔÿ¿¶üÓÿÞÞÿŸýû_Þÿ_éïáÿô?ôÿçÿÞÖÿ¿ëîØÿßàÿÉÿ?Ò?êÿÁÿïŸOÄïøÿŸß/ïùÿ?ÊüÓÿO¶ûÏÔÿ/ߟÞÿýû?ÞÿêOàÿ/ôôÿèÿßÞŸÖÿ?ëï?ØÿààÿÉÿßÒ?êÿÄÿÏ/ÁïýÿÏüÿŸá/ïýÿÏýÿ?ÊüÔÿßµûŸÔÿ?ß¿ÞÿoýúÞÿ¿êŸáÿÏóôÿèÿ¿ßï×ÿ¿êï?ØÿOà?àÿÈÿÓ?êÿÈÿïŸ_¾ïýÿ?ŸüÿŸã/ïýÿÏýÿ?ÊüßÔÿ_µû_ÔÿoßïÞÿ?ýúßßÿßëïáÿoóôÿèÿ¿ß_Öÿ?êï?Øÿ?à?àÿÈÿïÔ?êÿÌÿߟ_/ºïýÿ?ŸüÿŸå/ïýÿÏýÿ?Êý/Ôÿï´û?ÔÿßÝÿ?ýú¿Þÿë_àÿóôÿèÿ¿ßÏ×ÿ¿éïoØÿ?à_àÿÇÿ¯Ô?êÿÑÿï¿O¶ïýÿ?ŸüÿŸç/ïýÿÏýÿ?ÊýÔÿ´úÔÿ¯à?ÝÿýúÞÿ?ì¯áÿÏò¯ôÿèÿ¿àÖÿOéïØÿßàÿÆÿ?Õ?êÿÖÿ߯O±ïýÿ?þŸüÿŸé/ïýÿÏþýÿ?ÊýßÔÿ´úÏÕÿ¿à_ÝÿüúoÞÿ_íàÿ_ò¿ôÿèÿ¿à×ÿßèïØÿßàÿÆÿßÕêÿÜÿ¿¯_?«ïýÿ?ýŸüÿŸë/ïýÿÏýýÿ?Êþ/Ôÿ¯³ú¿ÕÿÏàÞÿßüú?Þÿí_àÿò¿ôÿèÿ¿àß×ÿoèïŸÙÿïߟàÿÅÿÕêÿäÿÏ¿O?¥ïýÿ?üŸüÿŸí/ïýÿÏüýÿ?ÊþÔÿO³úÔÿà¯Þÿ¿üúÞÿ¿í¯áÿ¯ñ¿ôÿèÿ¯á/Öÿèï¿Ùÿ¿ß¿àÿÅÿïÖêÿïÿß¿¿ŸO?/œïýÿ?ûŸüÿŸï/ïýÿÏûýÿ?ÊþÏÕÿï²úoÔÿà¿Þÿ¯üùïßÿïîàÿ_ñÏôÿèÿá×ÿŸçï¿Ùÿ¿ß¿àÿÄÿ¯ÖïëÿðÿÏ“ïýÿ?úŸüÿŸñ/ïýÿÏúýÿ?ÊÿÔÿ²ú?ÔÿáÝÿüù¿Þÿï_áÿïðóÿèÿáÏ×ÿ?çïÏÙÿ¯ßïàÿÃÿO׿ëÿïÿ“ïýÿ?ùŸüÿŸó/ïýÿÏùýÿ?Êÿ_Ôÿ/²ú/Ôÿ?âÝÿüùÞÿ?ï¯áÿŸðóÿèÿâ×ÿßæïØÿßßÿÃÿߨ¿ëÿïÿ?”ïýÿ?øŸüÿŸõ/ïýÿÏøýÿ?ÊÿŸÕÿß±ùÔÿ?â?Ýÿ?üùoÞÿoðàÿ?ðóÿèÿâo×ÿæïØÿßßÿÂÿØëÿïÿo”ïýÿ?÷ŸüÿŸ÷/ïýÿÏ÷ýÿ?ÊÿïÕÿ±ùÔÿ?â_Ýÿ?üù?ÞÿŸðOáÿßïóÿèÿâ¯×ÿ/æð/Øÿ_à?ßÿÁÿÙëÿïÿ¿”ïýÿ?öŸüÿŸù/ïýÿÏöýÿ?Ê/Ôÿ/±ùßÕÿOâÝÿüùÞÿ¿ðŸáÿð/óÿèÿâïØÿïåð?Øÿ?à?ßÿÁÿ¿ÙOëÿîÿ•ïýÿ?õŸüÿŸû/ïýÿÏõýÿ?ÊoÕÿß°ù¿Õÿâ¯ÝÿûøïÞÿðïáÿð?óÿèÿã?×ÿŸåð_Øÿ?à?ßÿÀÿOÚ?ëÿîÿo•ïýÿ?ôŸüÿŸý/ïýÿÏôýÿ?ʯÕÿ°ù¿Õÿâ¿Þÿïûø¿ÞÿòOáÿÏï?óÿèÿOã×ÿ_åðØÿàßÿïÿïOÔÿßÚëÿîÿÏ•ïýÿ?óŸüÿŸ/ïýÿÏóýÿ?ÊïÕÿO°ù¿ÕÿâÝÿ¿ûøÞÿ?òŸáÿ_ï?óÿèÿ?ã¯×ÿåð¯ØÿßßÿïÿOÔÿÚßìÿíÿ?–ïýÿ?òŸüÿŸ/ïýÿÏòýÿ?ÊÔÿ¯ù¿ÕÿãÝÿ¯ûøoÞÿòïáÿï?óÿèÿ?ãïØÿÏäð¿ØÿßßÿðÿoïÔÿÛ¿ìÿíÿ¿½O¿Üïýÿ?ñŸ÷ÿÏñýÿ?Ê_Õÿ¿¯ùÕÿã?Ýÿûø?ÞÿŸóOáÿŸîóÿèÿ?ä/×ÿŸäðØÿ¿ß¿ßÿñÿŸýÔÿ¿Ûìÿìÿ?À/¿ÿÿÝïýÿ?ðŸùÿÏðýÿ?ÊÕÿ¯ùÕÿãoÝÿûøÞÿ¿óáÿOîóÿèÿ?ä_×ÿ_äñØÿ¿ß¿ßÿòÿ¿üßÔÿOÜOìÿìÿߟýÿ?Ýïýÿ?ïŸûÿÏïýÿ?Ê¿Õÿ?¯ùÕÿãÝÿ?û÷ßÞÿóßâÿßíóÿèÿ?ä×ÿ/äñ?Øÿ¯ßÏßÿóÿÏû_ÔÿßÝìÿëÿÅïüÿÝïýÿ?ï/ûÿŸîýÿ?ÊÔÿ®ùÕÿã¿Ýÿ?û÷¿Þÿõ/áÿíóÿèÿ?ä¿×ÿãñØÿßÞÿôÿïùßÔÿÜßíÿêÿ_Èïúÿ¯Ýïýÿ?ð/ïúÿŸïýÿ?Ë/Õÿ¿®ùÕÿãÏÝÿû÷Þÿ?õáÿíóÿèÿäïØÿ¿ãñ¯ØÿßÞÿôÿ/ø_ÓÿÝŸíÿéÿ_ËŸ÷ÿßÝïýÿ?ñ/ïøÿŸðýÿ?ËOÕÿ®ùÕÿãÜÿú÷_ÞÿõÏâÿÏì¿óÿèÿä×ÿŸãñߨÿàÞÿõÿ_ö¿Ôÿ¿Ý_íÿèÿ_ÎO¿ôÿÞïýÿ?ò/ïýÿÏŸüÿŸñýÿ?ËÕÿO®ù¯ÕÿäÝÿßú÷?ÞÿŸöáÿ_ì¿óÿèÿä?×ÿãò×ÿ?à?Þÿöÿõ?Óÿ_ÞíÿçÿÒßòÿ?Þïýÿ?ó/ïýÿÏŸüÿŸòýÿ?Ë¿Õÿ®ù¿Õÿä?Ýÿ¿úöÞÿ¿öoáÿì¿óÿèÿä_×ÿOãòO×ÿ?à?Þÿ÷ÿŸó¿ÔÿïÞÏîÿæÿÏ/×oÏïÿÞïýÿ?ô/ïýÿÏþŸüÿŸóýÿ?ËÏÖÿï­ù¿ÕÿäoÝÿŸúöÏÞÿö¯âÿŸë¿óÿèÿä×ÿ?ãò×ÿ?àoÞÿøÿÏó?ÓÿÞoîÿäÿŸÜ/oÏìÿ¯Þïýÿ?õ/ïýÿÏüŸüÿŸôýÿ?ËÿÖÿ¿­ù¿ÕÿäÝÿúö¯ÞÿøáÿOë¿óÿèÿä¯×ÿãòÏ×ÿ/àÞÿùÿßñŸÓÿ/ßîÿâÿŸâ_ŸßéÿßÞïýÿ?ö/ïýÿÏúŸüÿŸõýÿ?Ì/ÿÖÿ­ù¿Õÿ?ä¿Ýÿ_úöÞÿ?øOâÿßêïóÿèÿä¿×ÿâóÖÿßÞÿúÿï/ðÓÿ¿ÞÏïÿàÿÏoê?¯ßäÿßïýÿ?÷/ïýÿÏøŸüÿŸöýÿ?Ì?ÿÖÿ_­ùÔÿ?äßÝÿ?úö?ÞÿoøŸâÿêòÿèÿäß×ÿâóOÖÿ߯Þÿúÿ?îŸÓÿ_ßoïÿÝÿߟo?õ/?o¿ßßÿ?ßïýÿ?ø/ïýÿÏöŸüÿŸ÷ýÿ?ÌÿÖÿ?­ùÔÿ?äÜÿúöÞÿøïâÿêòÿéÿ¿äÖÿâóŸÖÿß¿Þÿûÿ_íïÔÿïàïÿ×ÿÏú¿Ï×ÿßïýÿ?ù/ïýÿÏôŸüÿŸøýÿ?ÌÿÖÿ­ùÔÿ?å/ÜÿùõÞÿ¿ù/âÿ¿éòÿéÿ¿ä×ÿÏâóßÖÿß¿Þÿüÿ¯ëÓÿ߯ðÿ¤ÿ¯ßïýÿ?ú/ïýÿÏòŸüÿŸùýÿ?̯ÿÖÿ¬ú?Ôÿå?Ýÿßùõ¿ßÿßùâÿ_éòÿéÿ¿å×ÿ¿âô/ÖÿßßÝÿüÿëïÓÿ/àOðÿ¤ÿßßïýÿ?û/ïýÿÏðŸüÿŸúýÿ?Ì¿ÿ×ÿ¿¬ú?ÔÿäÝÿ¿ùõÞÿùÏãÿïêòÿéÿ¿å?×ÿ¿âôÖÿ¿ßÝÿüÿêÓÿ¿ßßñÿ£ÿàïýÿ?ü/ïýÿÏîŸüÿŸûýÿ?Ìßÿ×ÿ¿¬úoÔÿäÝÿŸùõ_Þÿ?ûâÿŸé?òÿéÿ¿å?×ÿ¿âôßÖÿ¿ßÝÿüÿOêßÓÿ_à_ñÿ£ÿ?àïýÿ?ý/ïýÿÏìŸüÿŸüýÿ?Ìÿÿ×ÿ¬úÕÿÏä¿Ýÿùõ/ÞÿOû_âÿ/é?òÿéÿ¿å?×ÿ¿âõ/Õÿ¿à?Ýÿüÿ?é_Óÿïàßòÿ£ÿàïýÿ?þ/ïýÿÏêŸüÿŸýýÿ?Ìÿÿ×ÿ¬ú¯Õÿ¿äßÝÿ_ùôÞÿûŸãÿßè?òÿéÿ¿å?ÖÿâõŸÕÿ¿à?Ýÿüÿ?èßÓÿà_òÿ£ÿ¯àïýÿ?/ïýÿÏèŸüÿŸþýÿ?Í/ÿÿ×ÿO¬ú¿Õÿ¯äÜÿ?ùôÏßÿŸûïãÿoè?òÿéÿŸåÖÿâöïÕÿ¿àOÝÿüÿçOÒÿ/àßóÿ£ÿßàïýÿ?/ïýÿÏæŸüÿŸýÿ?Í?ÿÿ×ÿ?¬úÔÿå?ÜÿùôŸßÿ¿ü/âÿè?òÿéÿåÖÿâö_Ôÿ¿àÝÿüÿæ¿ÓÿÏàOóÿ¢ÿáïýÿ?/ïýÿÏäŸüÿŸýÿ?Í?ÿÿ×ÿ?¬ûÔÿoåOÜÿøôoßÿïüoãÿ¯çoòÿéÿåÖÿãöÏÔÿàÝÿüÿæ?Òÿoà¿ôÿ¢ÿ?áïýÿoïýÿÏâŸüÿŸýÿ?Í?ÿÿ×ÿ¬û?Ôÿ?åÝÿ¿øô?Þÿü¿ãÿOçòÿéÿåÖÿ?ã÷?ÓÿàŸÝÿýÿ¿å¿Óÿïá/ôÿ¢ÿoáïøÿÏàŸøÿ?Íÿÿ×ÿ«ûÔÿ/åŸÝÿ¿øóÞÿ?ýãÿïæòÿéÿåÖÿ_ã÷¿Óÿà¿Ýÿýÿ¿å/ÒÿŸàõÿ¢ÿŸáïùÿÏÞŸùÿ?Íÿÿ×ÿ«ûŸÔÿä¿ÝÿøóßßÿOþ?ãÿæòÿéÿåÖÿãø?Òÿà¿Ýÿýÿ¯äŸÒÿ?àÏöÿ¢ÿÏáïúÿÏÜŸúÿ?Íÿÿ×ÿ«ûÏÕÿßäïÝÿoøó¯ßÿþãÿ/æòÿéÿåÖÿ¿ãø¿ÒÿàßÝÿýÿäÒÿÏà/ï÷ÿ¡ÿáïûÿÏÚŸûÿ?Íÿÿ×ÿ«ûÔÿ¿äÜÿ?øóßÿþÏäÿÏåòÿéÿoåOÖÿïãù?ÑÿàÜÿýÿãŸÒÿoà_÷ÿ¡ÿ?âïüÿÏØŸüÿ?Íÿÿ×ÿ«ü?Ôÿå?Üÿøó?ßÿ¿ãÿoå¿òÿéÿ?å?Õÿ/äùÏÑÿàÜÿýÿ_ãïÓÿïàŸøÿ¡ÿoâïýÿÏÖŸýÿ?ÍÿÿØÿÏ«üÔÿ_åOÜÿ÷óßÿÏOãÿå¿òÿéÿ?å?ÕÿoäúoÐÿá/Üÿýÿ?âÒÿŸß¿ùÿ¡ÿŸâïýÿ?Ôýÿ?ÍÿÿØÿ¿«ü¯Ôÿ?åÝÿß÷òïßÿÿäÿŸä¿òÿéÿ?å?Õÿ¯äûïÐÿá?Üÿýÿ?âïÒÿ?àÏúÿ¢ÿßOâïýÿÏÖ_ýÿ?ÍÿÿØÿ¿«üïÔÿä¯Ýÿ¿÷ò¿ßÿÏäÿOä¿òÿéÿ?å?Ôÿåû¿Ïÿá?ÜÿýÿáÒÿÏßÏûÿ£ÿáïüÿÏØ_üÿ?Íÿÿ×ÿ«ý/ÔÿÏä¿Ýÿ÷òßÿ?äÿßã¿òÿéÿ?äÔÿ_åüoÎÿáoÜÿýÿßßÒÿoßÏüÿ¥ÿ¿ßïûÿÏÚ_ûÿ?Íÿÿ×ÿ«ýoÔÿŸäÜÿ÷òOßÿÿOäÿãñÿéÿ?äÔÿßåý/ÍÿáÜÿýÿß_ÒÿïßÏýÿ§ÿ¿?ÝïúÿÏÜ_úÿ?Íÿÿ×ÿ«ý¯ÔÿoåÜÿ?÷òßÿÿŸäÿãñÿéÿ?äïÔÿ?æþßÍÿáÜÿþÿÏÞßÒÿŸÞ¿þÿ©ÿß?ÛïùÿÏÞ_ùÿ?Íÿÿ×ÿ«ýÓÿ/å?Üÿ/÷ñÁÿ¿âñÿéÿä¿Ôÿ¿æÿÏÌÿá¿Üÿþÿ¿Þ?Ñÿ?ÝŸÿÿ«ÿ¿?ÙïøÿÏà_øÿ?Íÿÿ×ÿ«þOÓÿä_Üÿöñ¿Âÿ_âñÿéÿã¿Óÿ_çÿÏËÿá¿Üÿþÿ¿Ý¿ÒÿÏÜ_ï­ÿ¯?×ïýÿŸüÿÏâ_üÿŸýÿ?Íÿÿ×ÿ¬þÔÿ¿äÝÿïöñÃÿïâñÿéÿãÓÿïè¿ÊÿáÏÜÿþÿÝ?ÑÿÜ/ϱÿïÕïýÿ?_üÿÏä_üÿŸýÿ?Íÿÿ×ÿ?¬þßÔÿä¯Ýÿ¿öñ_ÃÿŸâñÿéÿãoÒÿÏéÏÉÿáÛÿþÿÜ¿ÒÿïÜ´ÿ¿_Òïýÿ?_üÿÏæ_üÿŸýÿ?Íÿÿ×ÿ?¬ÿ/Óÿ?ä¿ÝÿŸöñ/Ãÿ?â?ñÿéÿã?ÑÿŸë/ßÈÿáÛÿþÿoÜÑÿ¯Üÿ¿¹ÿßÐïýÿ?_üÿÏè_üÿŸþýÿ?Í?ÿÿ×ÿO¬ÿÓÿãÜÿöðÄÿßá?ñÿéÿãÐÿŸíÿÿÈÿâÛÿþÿ?ÛŸÑÿ?Ýý?ß¾ÿß/Íïýÿ?þ_üÿÏê_üÿŸýýÿ?Í?ÿÿ×ÿ¬ÿßÔÿ¿äÜÿOöðÏÅÿá?ñÿéÿâßÐÿÏ/ñ?ÏþÿÈÿâ?Ûÿþÿ?ÛÑÿßÝû_ÏÃÿÏ/Êïýÿ?ý_üÿÏì_üÿŸüýÿ?Í?ÿÿ×ÿ¬/Óÿä?Üÿ?öðŸÅÿá?ñÿêÿßâ¯ÎÿõO¿üÿÈÿâ?Ûÿþÿ/ÚÑÿÞù?¯ÉÿïŸ_Çïýÿ?ü_üÿÏî_üÿŸûýÿ?Í/ÿÿ×ÿ¿¬ŸÓÿ/äoÜÿöðoÆÿ¯à?ñÿêÿ¿âoÌÿ¯_/üOŸßúÿîÿ¿Üÿâ_ÛÿþÿÙïÒÿïß÷oÏÐÿ߯o/Ãïýÿ?û_üÿÏð_üÿŸúýÿ?Ìÿÿ×ÿ߬ïÔÿïãÜÿõð?Æÿ_àñÿêÿ¿â/Çÿßôÿïÿß?ÜÿâÛÿþÿØÑÿ¯ßôoÏ×ÿ¿_¿ïýÿ?ú_üÿÏò_üÿŸùýÿ?ÌÿÿÖÿ¬_ÓÿŸã¿Ýÿ¿õïÇÿïßñÿêÿ¿áïºÿïÿ_?Üÿ¿âÛÿÿÿߨïÑÿ?àñO¿áÿϯO/ºïýÿ?ù_üÿÏô_üÿŸøýÿ?ÌßÿÖÿ/­¿ÓÿOãÏÝÿ¯õïßÈÿŸßñÿêÿ¿á¯ºÿðÿß?Üÿ¿âŸÛÿÿÿ¿×oÑÿßàì/OŸ¿ßðÿÏ¿¯o?/´ïýÿ?ø_üÿÏö_üÿŸ÷ýÿ?Ì¿ÿÖÿ_®ÒÿãÜÿõï¯Èÿ/ßñÿêÿ¿á_ºÿðÿ_?Üÿ¿â¿Ûÿÿÿ¿ÖßÑÿáä/ö?«ïýÿ?÷_üÿÏø_üÿŸöýÿ?̯ÿÖÿ®Óÿ¯ãÜÿoõïÉÿÏÞñÿêÿ¿áºÿñÿß?Üÿ¿â¿ÛÿÿÿÖ_Ñÿïâïýÿ?ö_üÿÏú_üÿŸõýÿ?ÌÿÖÿ¿¯ïÓÿ_ã?Üÿ?õï?ÉÿoÞ¯ñÿêÿ¿à¯»ÿñÿ_/Üÿ¿âïÛÿÿÿÕßÑÿ¯âïýÿ?õ_üÿÏü_üÿŸôýÿ?Ì_ÿÕÿ¯oÿÓÿãoÜÿõïÉÿÞ¿ñÿêÿà_»ÿòÿßýÜÿ¿âÚÿÿÿÕ?Ðÿ?ãïýÿ?ô_üÿÏþ_üÿŸóýÿ?Ì?ÿÕÿ?°ßÿÔÿ¯âÜÿôîïËÿ¯Ý¿ñÿêÿà»ÿòÿ?ýÜÿïâÚÿÿÿ?Ô¿Øÿï¿¿o?ãïýÿ?ó_üÿÏ_üÿŸòýÿ?ÌÿÕÿ±_ÿÿÔÿOâ¿ÝÿÏôî¿ËÿOÝ¿ñÿêÿߟ¼ÿóÿ¯üÛÿã?Úÿÿÿ?Ô?âÿï¿¿o??Úïýÿ?ò_üÿÏoüÿŸñýÿ?ËïÕÿ¿±ßÿÿÕÿïáßÝÿ¿ôîÌÿïÜ¿ñÿêÿß/¼ÿôÿïüÛÿã?Úÿÿÿ?Ó¯ìÿÿ¿Ÿo??Ðïýÿ?ñ_÷ÿŸðýÿ?Ë¿Ôÿ³_þÿÕÿáÜÿôîOÌÿÜÏñÿêÿÞ¿½ÿôÿoûÛÿã?ÚÿÿÿÒöÿÿ¿Ÿ??Æïýÿ?ð_ùÿŸïýÿ?ËÔÿ_³ßþÿÕÿ/â/ÜÿôîÌÿÜðÿêÿÞO½ÿõÿÏúÛÿäÚÿÿÿÑŸ¿¿Ÿ??¼ïýÿ?ï_ûÿŸîýÿ?Ë_Ôÿ¯´oýÿÖÿÏá?Üÿ?ôíÍÿÏÛðÿêÿÝß¾ÿöÿïúÛÿ?äÚÿÿïƒïýÿ?ï_ûÿÏïýÿ?Ë/Óÿ¶ïýÿÖÿ_áÜÿ/ôí¿Îÿ_ÛðÿêÿOÝ?¾ÿöÿoùïÜÿ?äÚÿÿ¿ƒïýÿ?ð_ùÿÏðýÿ?ÊÓÿ_¶üÿ×ÿïàÜÿóíÎÿÛðÿêÿ?Ü¿¿ÿ÷ÿ¯ø¿Üÿ?ä¿Úÿÿ¿ƒïýÿ?ñ_÷ÿÏñýÿ?Ê¿Ôÿ¿·ûÿ×ÿà¿Ýÿßóí_ÏÿŸÚðÿêÿ?Ü/¿ÿøÿÏø¿Üÿä¿ÚÿÿŸƒïýÿ?ò_üÿŸ_üÿÏòýÿ?ÊÓÿ¸¿ûÿ×ÿàßÝÿ¿óí/Ïÿ?Û/ðÿêÿ?ÛÀÿùÿï/÷¿ÜÿäÏÚÿÿƒïýÿ?ó_üÿŸ_üÿÏóýÿ?Ê?ÓÿŸ¹oúÿØÿŸßÜÿŸóìÐÿßÚ?ðÿêÿ?ÛßÁÿùÿOö¿Üÿäâÿß¿¿_??ïýÿ?ô_üÿŸý_üÿÏôýÿ?ÊÓÿï»ïúÿØÿà?ÜÿóìÏÑÿÚ?ðÿêÿ?Ú?Áÿúÿ_õ¿Üÿ¿äìÿß¿¿_??öïýÿ?õ_üÿŸû_üÿÏõýÿ?ʯÓÿ»¿ùÿÙÿ¿ßOÜÿOóìŸÑÿÚ?ðÿêÿ?ÙÂÿûÿô¿Üÿ¿åöÿï¿¿_??ìïýÿ?ö_üÿŸù_üÿÏöýÿ?ÊoÓÿï½oøÿÙÿ?ßÜÿ?óìoÒÿ¿Ù?ðÿêÿ/Ø¿ÃÿüÿŸó¯Üÿïå ?ÿï¿¿o??ãïýÿ?÷_üÿŸ÷_üÿÏ÷ýÿ?ÊÒÿ¾/÷ÿÚÿ¿ÞŸÜÿòì?Òÿ_Ù_ðÿêÿ×ßÄÿýÿŸòÛÿ¼ïýÿ?ø_üÿŸõ_üÿÏøýÿ?ÊÿßÒÿÀß÷ÿÚÿ?Þ¿ÜÿòëÓÿïØðÿêÿÖ/ïÅÿþÿñÛÿ½ïýÿ?ù_üÿŸó_üÿÏùýÿ?ÊÿÒÿ¿À¯öÿÛÿ¯ÝïÝÿ¿òëßÔÿŸØðÿêÿÕ/ïÆÿÿÿ_ðÛÿ?½ïýÿ?ú_üÿŸñ_üÿÏúýÿ?Êÿ/ÑÿoÂõÿÛÿÝÜÿ¯òë¯Ôÿ/ØðÿêÿÔ/ïÇÿï?ïäÿÿ¿Ÿ??»ïýÿ?û_üÿŸï_üÿÏûýÿ?ÊþßÒÿïÄ_ôÿÜÿŸÝ?ÜÿòëÕÿß×ðÿêÿÓ/ïÉÿÏ/îîÿÿ¿Ÿ??±ïýÿ?ü_üÿŸí_üÿÏüýÿ?ÊþÑÿÏÅ_óÿÝÿïÝOÜÿ_òë?Õÿo×ðÿêÿÒ/ßËÿí?øÿÏ¿Ÿ??§ïýÿ?ý_üÿŸë_üÿÏýýÿ?ÊþÐÿŸÇ/òÿÝÿoÜÜÿ?òëÕÿ׿ðÿêÿÑ¿ÎÿïOí/¿¯O?/ïýÿ?þ_üÿŸé_üÿÏþýÿ?Êý¿Ðÿ_É/ïòÿÞÿÏÛ¯Üÿòêï×ÿ¯Ö¿ðÿëÿÏÏÐÿþïýÿ?_üÿŸç_üÿÏýÿ?Êý_Ïÿ_Ë_ðÿÞÿ?Û¿Üÿñê¿×ÿOÖ¿ðÿëÿ¿Î/ÏÔÿ¿?üïýÿ?_üÿŸå_üÿÏýÿ?ÊüïÏÿ_Í_ïÿßÿÚÜÿÏñêØÿïÕ¿ðÿëÿ¿ÌïØÿß?úïýÿ?_üÿŸã_üÿÏýÿ?ÊüÎÿ_ÏîÿàÿïÛÜÿ¿ñêOØÿÕ¿ðÿëÿ¿ËïÜÿ¿?øïýÿŸüÿŸá_üÿÏýÿ?ÊüÍÿoÒ¿íÿàÿOÚ?ÜÿñêØÿ/Õßðÿëÿ¿ÉïáÿïŸ/öïøÿŸß_øÿ?ÊûŸÍÿŸÕ?ïìÿáÿ¯Ù_ÜÿoñéÙÿÏÔïÿëÿ¿Æ_¯æÿïŸOóïùÿŸÝ_ùÿ?ÊûÌÿÏ/ØêÿâÿßÙÜÿ?ñé¿Úÿ_Ôïÿëÿ¿Ä_Ÿßîÿï¿/ðïúÿŸÛ_úÿ?ÊúŸËÿÛ_ïéÿâÿ?دÜÿ/ñéÚÿÔïÿëÿŸÀ?¿¿ïüÿß¿¿?ìïûÿŸÙ_ûÿ?ÊúÊÿï_Þ?Ïçÿãÿ׿Üÿðé_ÛÿŸÓïÿëÿ˜ïüÿŸ×_üÿ?ÊùŸÉÿßoã_Ïåÿäÿ¿ÖÜÿßðé/ÛÿOÓïÿëÿ˜ïüÿÏØ_üÿ?ÊùÆÿŸOè/ïãÿåÿß×Üÿ¿ðèÜÿßÓ?ïÿëÿ˜ïûÿÏÚ_ûÿ?ÊøÅÿï¯o/ð/_Ÿïàÿæÿï/Ö?ÜÿðèÏÝÿÓ?ïÿëÿ˜ïúÿÏÜ_úÿ?ÊøßÁÿÏ¿oü?o¯¿Ûÿæÿ_ÕoÜÿðèŸÝÿÓ?ïÿîÿÏ¿Ÿ?˜ïùÿÏÞ_ùÿ?Ê÷OŒÿçÿÔÜÿOðèoÞÿ¿Ò?ïÿøÿÏ¿¯O?/’ïøÿÏà_øÿ?Êö¿ÿèÿŸÓ¿Üÿ?ðè?Þÿ_Ò?ðÿÏ¿¯O?/ˆïýÿŸüÿÏâ_üÿŸýÿ?ÊöïŽÿéÿÏÒÏÜÿïèßÿïÒoúÿÏ¿¯O?/þïýÿ?_üÿÏä_üÿŸýÿ?ÊõoŽÿêÿÏÒÜÿïïçßàÿŸÑ__??ôïýÿ?_üÿÏæ_üÿŸýÿ?Êô¿ÿëÿÏÒÜÿ¿ïç¯àÿ?¾ïýÿ?_üÿÏè_üÿŸþýÿ?ÊôïÿìÿÏÑ?Üÿ¯ïçåÿß¿¿½ïýÿ?þ_üÿÏê_üÿŸýýÿ?ÊóOÿíÿÏÐoÜÿïç?ïÿï¿¿_??¶ïýÿ?ý_üÿÏì_üÿŸüýÿ?Êò‘ÿîÿÏÏÜÿ_ïçùÿï¿¿o??­ïýÿ?ü_üÿÏî_üÿŸûýÿ?Êñ¿’ÿïÿÏοÜÿ?ïæ¿o??£ïýÿ?û_üÿÏð_üÿŸúýÿ?Êñß“ÿðÿÏÍßÜÿïïýÿ?ú_üÿÏò_üÿŸùýÿ?Êð/ï”ÿñÿŸÌÛÿîïýÿ?ù_üÿÏô_üÿŸøýÿ?Êï?”ÿòÿË/Üÿ¿îïýÿ?ø_üÿÏö_üÿŸ÷ýÿ?Êî_•ÿóÿ_Ê?Üÿ¿îïýÿ?÷_üÿÏø_üÿŸöýÿ?Êí_–ÿõÿï/ÉÜÿîïýÿ?ö_üÿÏú_üÿŸõýÿ?Êì_—ÿöÿ¿ÈÜÿoîïýÿ?õ_üÿÏü_üÿŸôýÿ?Êë_˜ÿ÷ÿÆ¿Üÿ?îïýÿ?ô_üÿÏþ_üÿŸóýÿ?Êê_™ÿùÿß?ÅßÞÿÏ¿îïýÿ?ó_üÿÏ_üÿŸòýÿ?Êé?ï›ÿúÿ¯Äçÿß¿¿_??éïýÿ?ò_üÿÏoüÿŸñýÿ?Êè/ïœÿüÿïOÃ?ñÿß¿¿_??ßïýÿ?ñ_÷ÿŸðýÿ?ÊçÏÿýÿÂOûÿß¿¿_??Õïýÿ?ð_ùÿŸïýÿ?ÊåžÿÿÿÏ?À?_??Ëïýÿ?ï_ûÿŸîýÿ?ÊäOï ÿïoƒïýÿ?ï_ûÿÏïýÿ?Êã¿¢ÿ‚ïýÿ?ð_ùÿÏðýÿ?Êáoï¦ÿŸïýÿ?ñ_÷ÿÏñýÿ?Ê௩ÿŸþïýÿ?ò_üÿŸ_üÿÏòýÿ?ÊÞ?ß®ÿïŸüïýÿ?ó_üÿŸ_üÿÏóýÿ?ÊÜoï²ÿßúïýÿ?ô_üÿŸý_üÿÏôýÿ?ÊÛï¶ÿ¿O÷ïýÿ?õ_üÿŸû_üÿÏõýÿ?ÊÙß»ÿßõïýÿ?ö_üÿŸù_üÿÏöýÿ?ÊÖ_¿Àÿß/òïýÿ?÷_üÿŸ÷_üÿÏ÷ýÿ?ÊÔ/ïÆÿß/ïïýÿ?ø_üÿŸõ_üÿÏøýÿ?ÊÑOŸïÍÿï¯oìïýÿ?ù_üÿŸó_üÿÏùýÿ?ÊÎ?ÏÔÿï¯o/èïýÿ?ú_üÿŸñ_üÿÏúýÿ?ÊËO¿Ýÿß¿Oäïýÿ?û_üÿŸï_üÿÏûýÿ?ÊÆ/O¯¿êÿß¿¯_?Þïýÿ?ü_üÿŸí_üÿÏüýÿ?Ê¿/??oõþ?×ïýÿ?ý_üÿŸë_üÿÏýýÿ?Êïýÿ?þ_üÿŸé_üÿÏþýÿ?Êïýÿ?_üÿŸç_üÿÏýÿ?Êïýÿ?_üÿŸå_üÿÏýÿ?Êïýÿ?_üÿŸã_üÿÏýÿ?ÊïýÿŸüÿŸá_üÿÏýÿ?ÊïøÿŸß_øÿ?ÊïùÿŸÝ_ùÿ?ÊïúÿŸÛ_úÿ?ÊïûÿßÙûÿ?ÊïúÿŸÛ/ïûÿ?ÊïùÿŸÝ/ïúÿ?ÊïøÿŸß/ïùÿ?ÊïýÿÏüÿŸá/ïýÿÏýÿ?Êïýÿ?ŸüÿŸã/ïýÿÏýÿ?Êïýÿ?ŸüÿŸå/ïýÿÏýÿ?Êïýÿ?ŸüÿŸç/ïýÿÏýÿ?Êïýÿ?þŸüÿŸé/ïýÿÏþýÿ?Êïýÿ?ýŸüÿŸë/ïýÿÏýýÿ?Êïýÿ?üŸüÿŸí/ïýÿÏüýÿ?Êïýÿ?ûŸüÿŸï/ïýÿÏûýÿ?Êïýÿ?úŸüÿŸñ/ïýÿÏúýÿ?Êïýÿ?ùŸüÿŸó/ïýÿÏùýÿ?Êïýÿ?øŸüÿŸõ/ïýÿÏøýÿ?Êïýÿ?÷ŸüÿŸ÷/ïýÿÏ÷ýÿ?Êïýÿ?öŸüÿŸù/ïýÿÏöýÿ?Êïýÿ?õŸüÿŸû/ïýÿÏõýÿ?Êïýÿ?ôŸüÿŸý/ïýÿÏôýÿ?Êïýÿ?óŸüÿŸ/ïýÿÏóýÿ?Êïýÿ?òŸüÿŸ/ïýÿÏòýÿ?Êïýÿ?ñŸ÷ÿÏñýÿ?Êïýÿ?ðŸùÿÏðýÿ?Êïýÿ?ïŸûÿÏïýÿ?Êïýÿ?ï/ûÿŸîýÿ?Êïýÿ?ð/ïúÿŸïýÿ?Êïýÿ?ñ/ïøÿŸðýÿ?Êïýÿ?ò/ïýÿÏŸüÿŸñýÿ?Êïýÿ?ó/ïýÿÏŸüÿŸòýÿ?Êïýÿ?ô/ïýÿÏþŸüÿŸóýÿ?Êïýÿ?õ/ïýÿÏüŸüÿŸôýÿ?Êïýÿ?ö/ïýÿÏúŸüÿŸõýÿ?Êïýÿ?÷/ïýÿÏøŸüÿŸöýÿ?Êïýÿ?ø/ïýÿÏöŸüÿŸ÷ýÿ?Êïýÿ?ù/ïýÿÏôŸüÿŸøýÿ?Êïýÿ?ú/ïýÿÏòŸüÿŸùýÿ?Êïýÿ?û/ïýÿÏðŸüÿŸúýÿ?Êïýÿ?ü/ïýÿÏîŸüÿŸûýÿ?Êïýÿ?ý/ïýÿÏìŸüÿŸüýÿ?Êïýÿ?þ/ïýÿÏêŸüÿŸýýÿ?Êïýÿ?/ïýÿÏèŸüÿŸþýÿ?Êïýÿ?/ïýÿÏæŸüÿŸýÿ?Êïýÿ?/ïýÿÏäŸüÿŸýÿ?ÊïýÿoïýÿÏâŸüÿŸýÿ?ÊïøÿÏàŸøÿ?ÊïùÿÏÞŸùÿ?ÊïúÿÏÜŸúÿ?ÊïûÿÏÚŸûÿ?ÊîŸþÿÏØŸþÿï/ÉíŸÿÏÖŸÿï/ÈìÔ/Çomake-0.9.8.5/doc/html/images/omake.gif0000664000152300015230000002442510524166566015716 0ustar jyhjyhGIF89a,‰÷Ù­­­ïïï]]]:::òòò999üüü...@@@ööö^^^ñññ(((µµµQQQðððbbb¶¶¶///÷÷÷ÙÙÙ222---ýýýWWW444ÚÚÚ×××)))???cccKKK''',,,ŒŒŒEEE¯¯¯ùùù666+++àààôôôøøø<<<²²²ÍÍÍ;;;ÖÖÖ»»»ßßßÇÇÇAAAaaa000åååfffûûûÐÐÐêêꪪª†††iii>>>BBB111´´´CCC333îî˜žžžzzzóóóÞÞÞõõõ®®®ÓÓÓúúússsHHH555‹‹‹ÁÁÁÎÎΰ°°±±±ÉÉÉ···\\\uuu***===wwwdddeee¨¨¨çççÝÝÝ„„„€€€oooXXXÛÛÛ777[[[ÃÃÃDDD¥¥¥```æææZZZØØØ………MMMYYY¬¬¬GGG888áááÒÒÒUUUƒƒƒjjj___”””FFFÔÔÔmmmyyyÀÀÀÜÜÜIII¦¦¦hhh¹¹¹ééé½½½³³³ëëëNNNOOOèèèJJJÈÈȸ¸¸RRRtttííí’’’•••¼¼¼‡‡‡‘‘‘xxxSSS{{{PPPLLLâââgggˆˆˆ‰‰‰VVVšššvvvnnn¾¾¾}}}ìììäääppp¤¤¤©©©ŠŠŠkkkÄÄħ§§¡¡¡~~~   ŸŸŸ–––ãã㺺º«««›››ÌÌÌ¿¿¿lllqqqÕÕÕ|||ËËËœœœÅÅÅÆÆÆ¢¢¢™™™TTT£££“““———ÏÏÏÑÑÑ‚‚‚rrrÊÊÊŽŽŽ&&&%%%ÿÿÿ!ùÙ,,‰ÿ³ H° Áƒ.ØäÂÁ >™j]©&GÌ‚jÜȱ£Ç CŠI²¤É“(IR¹ƒ-Ã\ú¼Ù# Á 0Ð胊‡®X”ŽÉY´`BÆ”H“*]Ê´©Ó§aâl"q$X°Hα°^fé¡ÀT(.fÐÁð¦EbEAAŒPóêÝË·oÞ 7¶lr¤cÅŒ^!µ.óbMƒC™øX"‹áƒÍ9ßÌTªH˜+V48" â‚ßÓ¨S«^š" ”A6ÖòÂÊS ÀF+B›L¬œ zcªf3>¨T¦‹±%ŒZ$Ñ‘`µõëØO¿ð4„Á#d5ÿK­õA!F¶xX‚à`Ä ,àâ *FÀhƒHŠÒÙ(à€%‘Êk± tÁ$,R@â¶€+L¬qEœ$bÆTòÄ+ÜI¼²J¾ÀH4(€Æ(c^HpR€0z´ˆ (dóƒ3&TB  ,äÒÅ-f ‚E%#¬°Â `ñ…0‰D¡ ÀH“G+H”ä˜djtA’8B”|€C6\€R¦HC^’‡„Pa„ļríI9‚XÜð 1øQAÈ-¦ æœZŒäÒDBÁ Ô‹­DŠÔ% €(9¨B‚2Qhø…ÜáCˆ„~ÿñÊ-n´A zˆò^žöšR f\³I$aáŒ@p°†¯z] ‘F2b‡]pÇß d!E!»¾É칩B‡$špDÀL 4‚.è®–€#1Dcª2"0‰ 0†˜âGN”ñ , Ј ™[o-ã‚.Õq4Å5aDˆ}L,£ ´RˆŠ„ )ƒBá°q“$¦(€ˆÓüÑÆk G¹"£†‚PPÓ£GE L@qÃJí)nè Á$”ÔR)ÈtÆ#?¸€SÍ=XBF&ÎAË ‘D,uJ 03@0€¤Â¸ðâ Êÿ Ä/o¿mÀ è@ ”ìP¨ôÌ3ÜôA3gAÊO0„fצŽO¤ÁˆHL0M6&`ƒD6~œâùëIØÕ$)ë2Ç ¤_¶@¬ðD=¬EVDB€QA‹Á³Ä0R,@$PqÜ`@¯À®=H)D²â;0³ 7xHÀñÈs„,¾Ä¢H1c´rüQ36‘Kj¨RRÀl@€¼•¸Ôöx< -  ŒÁ'jÈÄ’Ä#0àAt‚™hCÖ«(A©ƒ Ñ“à>@’‡8`ÎãdЂ_LB@”Áÿ'Ñ‚)£‡AœÄØ‚(¢, H@)’ WhD"„%à‹` P…-² Œ`\B(¢ñ‹KhÄ»øFP‹l$A·Øˆ1ÒñrŒ@#긄 D  ,¸ÂßH‚56â„\cáE@F W¸B¨PCF€00 È‚X¬@Ñ\׈å5!T‚N˜4‚ð½èáàÄêL’0@ ¹Ä#°á$a¯j @A‡P„‚p€°áÊ œÖ¤*aŠ!`–x Ö9‚'Ü'ÈÀ5ààž Á(V€ÿÈ£x>à„à•Ø( pO‚z¡±¤§=ÀP ‚²´À8ÄPøa¡À†Lp |U¾PXšà4 (E!à`Ã@À†!F¡†2ô 8A,u:œžR´ !8§ ê‰O¼!0×à6@/tÔ©P-@®±…>ÜÀ £@D„a† `ã +@DLÕ‡8`ÁœC¸Cž¢ƒAÔ IH‰ 0º‚ˆÂŸHˆN'ì"·‚0¸ d# }8˜Å. pl,Q9Øb7(F6J`%Ôb `Â"X1'À %À„ ÊàWÿ|ÂÌÀ_6DŒ D!Ä0Á)t»‹,˜ F5DÛX À9€Ô0…‚T¡Ø€ÜP€#\‚ J… æ ‰„%   G ¡>@ A¬€„!}XÆ’A¸  n0ÆÛ?@¡ àn@à”ÀÀeXD+æ.dŒ†‚0 ± Xñ™À4$À b£hSŠñƒ )Ÿ@BÚà‰Îˆ°À2b‡ x!A9`ê+;A 9ÊF·ÐÌ@â;ˆúpDH¬løÁ ³á A¾Åú°TÃOˆW˜@ƒa˜Ùÿha6¦À† °@ pðÈ0)4ãÍŒDÀç$£x@P‡ ÈxØCƒs !¨x "à\!0h¡Š2B€æf#xB ÷ÐB 9¨Ã—¢:àÕÙÈ3ì@ AG³šÕœ dÀ*n  Ð1d}ะñIİ X#jI9C3 "†”™ (žP·‚Œ!Bè‚,~…Ëd N‚¢0ƒ(€ )ƒ!R‘‹ô  ·¢ !˜!¯¡@F€‰9ü€ØRÁN8œèÈþ0'cß§#ˆzqK¢2ÿ0H+X!LœYØAàp„ü! l(…» ò Ü‚øÀ¶Kü\’ðE À[!”çN@ø@&ÐôD`â©h0Aòà„lb-¸@DA !dá–HÐÔí0‚8l™N € 8¨‚:€ƒ ö¾w½A€§€à50x ä ‰S@ ` t“ ‹Mø„> S˜ Ò pÀ°p ¡ ¡PÉti¡E0~`¾à°[$`0 §°d0UÀtÔGrˆ$@  ˆÿÑO€Oô °j&[f° ÀXðbklà ÆÉpNCÕ€§hŠ ˆPªxN­˜Š®‹¬K^Ï€Gà ! Y€¶0бQ\3p îe0`*À ð¡– µ g`a"€eÐK 3€ 2— 1ð ?P áG€˜|åøF€mê8«@·Èh0¶XP] 3àI(” ý(@ ØfEЉ 6À S·›Ð)Ù`gP þ#1Ðà«Ã‘lp·Ð]6Ð Pî7°0³6ÿÐî— `“fðÍ– 0@ ÌjÐ ¢%À.àGc@{°,¡®8‹å•]ÙŠ²ø•²Ä€ ÈŠ50ØPc€ðp—P ià0€°€I  דx@yyà–{9;°. ×À oI(Ð~€ Q`x€ F„ ™0°i°3@1@/P˜E€ )š„ —h0m`>ð 1à˜/™Å€ ð  À² º ™-€P+`‡¯ùAÔ¹¼€pš€;P.€ ¥p oÿxyš‡ ' –€ ¥iž(Ðà+°mù–´p5ð .™é–»‰û)Æpð„Pž°Ài€ à Òr I  ‡q¹›17€ e0L1pPªøJ0PCà¢1ú¢/ê¢5J£4j£À§Ø£¯ôJ30P¤Çq¤-Ðc¤Èa°¤Dz6ûg3àDZ¥[€5`iPZÚ¥Fʤó‘-.ÐGZ¤¥ótS¥È‘¤!`Ó¦à>  &À\ê¤[Чóax§t0óÿ10fzPñ5Ð[ §é“!•ʤUz3€ñ‘ªU+p 0Ryê¤6±ó!6nÚ¥3Q*[°Ÿ ©.ШFê¦p®ÔWwQ`–°´q—¬Êº¬ÌÚ¬ ðЍ8TK°P­Öz­ð@­ØZ­ °­ðÝZ­Úº­ãš­ÛŠæ:®ÚúÚÊ­Ýú­ß*®ãú­ëÚ­ïz¯Øú®ïz®åJ¯ñ®óz®ò®w»¯à ¯ ë®[¯Éš°×:°þš u€Bñby Š‹g¹ŠË@$ë)s c ¸²ð•«h–-[²4[&_ÿP¡²+z 3›– û£=[³DK Mà¼ðnÀŠC%g>;T0;‹WP´T; Ðð© µçtƒ>+–cɳU;¶Ø¡à}!]Àl˶E v'ñ³ ­CK¶v뀸r»€4ó‡Pu{·„›¤=Ò·×PXqf劃[¸’˳€ Ò·+`jÙ`ŠS;¹ Ë€C‡r‹~(0Ÿº®›HðÒp¹Ø9TpP­ûº¼K°=™XÞx¼PлÊ;Aà {»uà+pˆË{½á=@ ?+ ñ#ÿ€ ‘‹½äK~âf£G@ TP¾ôpf"Š CÐ î»J—à¼V¿œ z l ~…Ð(›bˆ~\¿Tpß5  ’;IlÐ X‘ \Ás‚J  € ]P•}?𼫱À‘ Y 14LÂA²Â@°5 U®˜º|Ñ##œ °×ð‹±Ä<#{°³ xãØð‰ Äü¾u°CоR<ÅÒËD–®h&Ê€Â* ÀkïûßÅà¿"LÁf< Jà+ŠŠ#b}ñ°s¢ÿ Ó”ÁØÊG|ÜÇâ5²Cu2ìU ·1âÖ`žÂDG‡°”< pA‹P£€] 2òØp£Øg!Àã›Ê©ñ Ðʯ”¨ñ › #X€¨Øà´¼|Œ¶®8~~qqP”Bè‡* ËL¸A¦Y|ÖaL ²ôâ) DF _ &оSà¥ëºÐ=L U°'ðž0@pI, §ð£+‹P(écàÅ«ÁŠ ð 66 <À¼«¦ðZ– 8Ð" å\–”p0à02 4Œ0z p Á“ìº;ÿ0‹@kв, Ÿà•_™r{¡É@ •Pp7P„°…«1ÂÀ±0jVÆAƒ0Vmð ‰P ›ü}°·²céŠf0 ‚@–¬¨%ø –ð{Np Y¼Ô| >à¶Å3}.kÀ/GÐS‘¢¿ŒP'@ÊÁ 0k¬ª¨|‚,KðZ%±ÉPlP–к€& _Rì×`‘|-2%ð¨8·?  ̯p–}ÐØXRpÓ°”É,XJÐ c0 ° ]pŸ€Ø°OàÑ«ÈµØ „Œ;œÆ CÕO%P›:ÿ0‘m–QæbP²¨Ú²$ÍÙ¡j­õ»gÀ äC)a:‹Ö[y𬩠µ=³×° 3LÁ³°ßØP ÝI1Å Yà   X PŸÍ9 U#]Îeð;€É²µÅ ßµ¦ˆâÌeæȪø‘! ¨mŠšmÅ7­•ÐÝÀ@l¹Û1~Ð×ÞM0 ðßP+{ÐY[” â‹ KOðÜ ç]Î]É 2û£±ýñ b=· ~Dp6^â]Û‹} ¯œ4p©oÇjÐ^@ä•-«ÐÞ6>Ö±h¯@l!aoÿ¾æ®ÈÈ6Sm×°ôK) »@x`­ÝmÕPØc²¡ ¶%{› `ÓYÎØ­åv_€q uÁs…0 æ­<ÖÌ=OÏÐÆQÁŽãÌœ¶pÞÐŒPF€  K@ = PÐ'p@0ðd Qz7`:0¸KžÐб ¸½€Ðdp °Çܱí¨|؈\€ »[( ‹>ZæètçáèÝæÅåqu´Zà<ªÚÇB ÀÄÀîìî ê]½PâQ‹³‘Zþ£>p»a Æÿ æ{°ŽÜ”`ÞeÉŠ¤î7`? ãabó|&Ñ.ÛÑ ãóKiÐÚQ†ŠRÞ€© C§>‹>Q+Kã®À ·=ÒfÉ´¯DÚÁ ‰K_/½Çæ¦(ÿnV@öç´ ·,¤0·®H©ñ$ ðäAËÜ|þ§PذXö1»Übùˆ¬`NU²ðÕ©yÞ ®~N¨AÐÞ*þø~N]Qàêµ» ²Š”Ž=PæåÉAþ‹¦Àp@ø„± ;<À `Î÷’žÚq- !Û$Û[pP^™Æ]ÿ }¯X¥ ìbû!iÐhéo~ ^[ÄpÐe >-2þç$J-|ú¯T³Ù4‚ Ûµk ^Ã2ÐáCˆ%NÌ&€@>xädó¢–@‹E3Xr¡É„ M*T¹aÂ"Â@x¡5O2hAQƒ•ØèÉ’RaI2^qÔe˃: ò”8+ªK-Úá µå'ŠŽ–Lˆl"‘G¡RSÚÖmŋɒաÁÀoŠ`™²¥JBzÜâJž…P¯ Cf.²GE¼‰¬0æÄM ÒÁñƨßk`ÚžR©tiÓ×B$‰x!Îɱ Ü ìÿç7&.Rš,­=Bé›/½É%æøš…Cæo#¼\,UÂ= : 3Â(l²"dòÑlpÇ'§ØxLLð£2¶(ÙH- ŠÌV­yZíµ ˆHI\Rh%²)ð¢z±‰ÂhР Ò`5®ú ¡4PîC‡ˆ+0Ò¥8ðÑ­FˆjÃ’¶m¢]è@ ¼kx@¤` J dÒëa¢b>[HŠlØèo§žDꢺ ¯a ƒ: 𨧰é@;ˆp>…ž(!;XJ fœˆ ÿ *E…K˜ DN0ÓÀkhqO¸:¦†À…úÔ+Š%Q;ÿÈBd#§ o"*1„aÂØCÆŒ¨(ÅHa("«‰&Dj„QB“h¸  N!:šˆ¨•Š+ ƒltðá6–Š© Iúû«@€àÀ¦;ÏAT€„l©áRàb uK•Æz1!H"ië…À4ɇ%Z Oc;²À•ˆrp—‹l‘@'£Nðp¢B2 N­ƒ²˜Í¡)€22!$ªu±“†ä‚?•À)†rq4îÅÿ‚â¶Úh  >rhš6¸aE™@€a‚Ÿˆá-X%x15!’ba…*H †®úBhˆ23—l4°ÓL}Q ÿÔ¥A{&"U”…Í ‰¬Á]õÖ ®?¦QA&M”5-=s ²àd”•óƒŒFxÎ-\L 4’ÃÀmߺ˜È ØRÁ€Hψ.…À±$²‰8R R”ˆ hQ"ãó÷T*C"ESì4Té„BEræÌÛ¾›ð$S&©ÛÚr˜¨ l"p ‡ܶiëä?û3&rBiƒ€Í¦Õk:ý!~NÀ¨¬& Œ¨ C~>ʵ#ZÆG“ܨœ£ª}• pF¸†ËDÔddq%%4Þ(•¿=ÄŠBŠ@\“[ 7ºØö‚§k|ÀSABSÒs `PäuØŸòЦ’Œ}ÓÐ#:úÐ5ô(6O \ÈWe‚ƒ.$»ØSààvË.‚¤µƒòx[ð© R=S`‚5NšÀ¼AÜ5ž «l@ <–x5B—=A¤DÈ Db6ÈÄ„ˆ¬+²Ì¥Sˆ*!rɲ&CH`DpÀ`QòI^þ‹¨\úUŠ*÷"XðÉÿ;K2Ë!.WÙÉruE¾"¦CJ`l4"f`²BªÃ(½¤b¡€Òz4$p '~Ê‘?ò;ˆ¨€DâK˜C%ž¥1óx9ƒÚÐ-T  QÑ™Hèw$>‰À‡ïÑÄy@°”|¨ôŠ‘ Ä ¥r±!ˆˆÀvdAE­…ŒB"“`ÕRëX£Ì*q""5 *íi@Àj06ˆnA»Š /Z€ Rkƒœ piDâbt‚Œ ÙaëVÝ9­+Ï5ö¤E¢1K¥¤!'¼´%¡Dlëƒ 8ñ÷þí+„$eã¡ $ÜZx2I®^RÒ‚(8ê5L°ˆ¦Ø°ÃC âÝklbnFÉl¢CÀÍcg$Î’LBa‰L xGÈ,7ƒŒ"*€DõÎvtˆ£oóáwš>ö`ÀÞQN>câqQ•õj’=L7«ªÿîï¹]·øž±~3•bcÁ·þŽ2‚¡>Dšy£å#¢NPcãKt%޼¤"H€Öõ¼ÎkõQ€ ô0hp Æ°­J2`^å¢U-ñ0DZí 𭀃O;“™s9€§zˆ€‚M¹†lƒˆ/¨Ò@ˆ˜‚-³¨°¾‡¸H>lÀƒûy± š¢k¨Ý€ˆ&H9©"½ ¨¨õËD@€ ¸ˆÀ˜Î¢?(9ˆh…=q‚¢S \ ¬;p;l(€kˆ&x_³‰š5ˆ€-KNˆ±8¿k؈°‚-ø¢ ì¢ØŸ'¨02%¬‰³“ÿXèµpûX…_˜A²‹3€R€*…ýròp>}Ñ8+BÀ§S tˆè &{sͺ†eˆ@¥‚#+ˆ®Ð!‹Ah”lX€6PbQ9tGÐD‹Ë=‰(P ««0„Œ0€€C3Ák8 à„÷³Cmc ƒ  h€¨‚l0+Šà)TßSŽ„['ƒØ‚Zˆ@H,Ø®‡ˆ1<“ ("‡H ¢kà*‡ „#û‹Pؤú8-h0È{©‘„е‰8¡:œ‹ˆaX'€ƒ‚8.(EÈÝÆeŒ 7ßqøÿfœˆC€§È¸DåHŸã)ƒp7ˆð¾œ†ˆ Y¬Œ¨‹ˆlt5|ˆ(€‚§<º¨2XƒˆI¥£½ÖÈ/:Ø™À°"ˆ ³rƒ¸!è2q¡)0?lhÉ䀅,Z’ Ň0†ÂeHø¡’²|ˆ_›‰Áz£ª(Y M˜‚¼/ˆJÊš(‘ 8 ø @„##¨‚cü‹ÊÝaF¦ê¬Œ”W(ÇýY¼Ó `ƒHQ e‚ˆ2p5†?zº.Ô¨GˆÒ»†×ˆ„¬É—Å€µŸT¹åÒ½ZH«ƒÈÿ™Ð xʇ¤LlbŽ0 xC¤4‰h‚$4Ÿ¨°À·€t¼N‹ˆ‡Ú¨Ã;¢a(’M0¤’H͈°¥3ƒÈ«Y ·*ˆ·’à€‚8¬DNÿ4¨˜€È€R‚N‰ÈJô tz Wø’O4IHÁ‡ÀÆûØ:ˆ¯0Ž06‰`°hA¨‰<£ÆÈ8€íÔƒµüžˆ;‡°A`…Lƒ½D˜€ûÏÿli Ø#àȶ ‚, h§¶˜€ô<“˜Mx€RÉ£€0ˆ(Ž\ˆ0šÛâÈ„°ÎˆXO¸.Þ|뤀”°ÿ„t€ŽC†käQ9• ?‚S`€D†bœ™¶É1Óšè¤xÖ4‰88Î ø+Y½ˆèºKYÄõtšñ›G†¯;€9 €0@ƒ§ŒÄ9=U¥¸Hè€þ7Èt >XI…øJŠ8…ì‹ H‰à…šÄº„–—x„ãf ¾„à€&‰€M< ˜†a@Ul­? ‹6Y;¥8Ì„0*xÈ ÐÙ?“Hа·)ш(Ùk˜”‰ÀJTˆ†j 9ˆA€€(ƒZøÌl=Ø=‰ƒ€Qˆ¸z‹9J¶3Á€"8†ÿ$ƒcx³< HðÔˆ(…ˆ"%Š˜DÛ=”¼ ÄœAEX˜Ý¸ÝCtM€(϶@Û°¹Y³ àLdJ xˈ\«`šfºSØQ‰È ˜…U[U p„&ŒY®å1hƒT€‚”͆%/Ĉ`¡µ вQƒ—e¾ùø@ˆ>ˆ¨‚¨¨„/è(_¥ˆ&HÖ®-\€F0>€‚hˆ‚ç§äˆ <ÅJl°„€¥*Õl€‘ Ð% \Ã=]ÿÌ‹i¨§²¸"²äðF¶eËñìj PŠ@ƒ®X(¯D]ßõÝÿ¼(»(NØÕ È+äŸØ‚  Ü¥`¨+ 6ð„Q„.èÖßíÞÂŽÖVm‹Lð/s!‹‹ 8†·@°‚x€0]ï­_leFø=ˆ¤ÌÊäøÀQ¢Î…°€>¸TûM`¦ˆ¯‚h„ ð±=^i.0ÇãŸN¸Õþ`®ˆøŠ€R"M•ñM1 [¨ƒH/là€ Ø@S a^`à…¡áʸ/軺€ÈZ)`G@ÃŽbþ3p ˆð…=’b/þ⢌ù(?pc4Nãòä(?|}p8c5žc:–ˆF€/ØÚE¸ƒ,€øªc@d€^JP(c´dFÖá“ „@Él?(6ÿmdLŽâ¼Ø<(…<ø€JÑÌÌdRþ`³*!€‚D ­.eWî^æ¸:`€6åW¾eà‹3`‚ ÆeaF]è;èG°;jåa~æl€¸6ˆ@(€Ñ¡E†foæQÈ„J凨€`?øão^çhƆ#ÀR‡ƒ¸eg{–Ó%°#‰„W¤{þg€hh‚.hƒ>h„fç€;omake-0.9.8.5/doc/html/images/omake-manual.ai0000664000152300015230000074221210524166566017016 0ustar jyhjyh%PDF-1.4 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ -0.5 0.5 611.5 792.5 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 6 4 R >> /LastModified (D:20060615234221-07'00') /ArtBox [ 75.88721 349.32324 952.66797 539.62305 ] /Group 2384 2 R /Thumb 2390 2 R /TrimBox [ -0.5 0.5 611.5 792.5 ] /Contents 2392 2 R /Resources << /ExtGState << /R1 4 4 R /R3 605 3 R >> /Font << /F1 14 4 R >> /ColorSpace << /CS1 16 4 R /CS2 2382 2 R >> /XObject << /Fm67 599 3 R /Fm133 1172 3 R /Fm195 1620 2 R /Fm260 2000 3 R /Fm319 2376 2 R >> /ProcSet [ /PDF /Text ] >> >> endobj 4 4 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 5 0 obj << /CreationDate (D:20060615195503-07'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (omake-manual.ai) /ModDate (D:20060615234221-07'00') >> endobj 6 4 obj << /Private 7 4 R /LastModified (D:20060615234221-07'00') >> endobj 7 4 obj << /CreatorVersion 9 /ContainerVersion 9 /RoundtripVersion 9 /AIMetaData 8 4 R /AIPrivateData1 9 4 R /AIPrivateData2 10 4 R /AIPrivateData3 12 4 R /NumBlock 3 >> endobj 8 4 obj << /Length 1878 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Jason Hickey) (Caltech) %%Title: (C:\\home\\jyh\\projects\\omake\\omake_0_9_8_x\\doc\\html\\images\\omake-manual.ai) %%CreationDate: 6/15/2006 11:42 PM %%BoundingBox: 75 349 953 540 %%HiResBoundingBox: 75.8872 349.3232 952.668 539.623 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%DocumentCustomColors: (Burnt Orange) %%+ (Forest Green) %%CMYKCustomColor: 0.9098 0.5608 0 0 (Back blue) %%+ 0.0549 0.0118 0.6314 0 (Bright Yellow) %%+ 0.8353 0.4784 0.051 0.0078 (Buff Blue) %%+ 0.0824 0.3804 0.9255 0.0078 (Burnt Orange) %%+ 0.9529 0.0392 0.5373 0.0039 (Forest Green) %%+ 0.1 0 0 0 (Light Blue) %%+ 0.1 0 0.1 0 (Light Green) %%+ 0 0.1 0 0 (Light Magenta) %%+ 0.0353 0.0353 0.3255 0 (Light Yellow) %%+ 0.5098 0.5373 0 0 (Tool Purple) %%CMYKProcessColor: 1 1 1 1 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306 396 306 396 %AI3_TileBox: 0 -5 612 787 %AI3_DocumentPreview: None %AI5_ArtSize: 612 792 %AI5_RulerUnits: 2 %AI9_ColorModel: 2 %AI5_ArtFlags: 1 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 4 %AI9_OpenToView: -175.1382 633.7646 0.99 1436 830 18 0 1 2 40 0 0 1 1 1 0 %AI5_OpenViewLayers: 7777 %%PageOrigin:0 -5 %%AI3_PaperRect:0 792 612 0 %%AI3_Margin:0 0 0 0 %AI7_GridSettings: 12 1 12 1 0 0 0.8333 0.8333 0.8333 0.8333 0.8333 0.8333 %AI9_Flatten: 0 %%EndComments endstream endobj 9 4 obj << /Length 4464 >> stream %%BoundingBox: 75 349 953 540 %%HiResBoundingBox: 75.8872 349.3232 952.668 539.623 %AI7_Thumbnail: 128 28 8 %%BeginData: 4106 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFDB5FFA87DA8FD6FFFA8A8767D7CFF7DFD05FFA852F8F8F8 %27A8FD6CFF2727F827F82727F8A8FFFFFFA827F8277D7DF8F8A8FD6AFFA8 %F8A8FFA8FF522727A8FFFFFF27F852FFFFFF7DF87DFD11FFA8A8FD57FF7C %F8FFA8FFA8FFF85252FFFF7DF827FD04FF52F852FFFFFF52F852FFA82727 %FD07FFF852FD0AFF7D2752FFFF5227A8FD2BFF7DFD19FF4B52A8FFA8FFA8 %275152FFFF7DF87DFD04FF27F87DFFFFFF27F87DFF52F827FD07FFF87DFD %0AFF7DF827FF7DF8F8A8FD25FF7DFD04F827F87DFD18FF2752FFA8A8527D %F85227FFFF7DF87DFFFFFF52F827A8FFFFFFF85227FFF85227FFA827F8F8 %27A8F8A82727A87DF8F852FFFFFF2752F8FFF852F8FFA852F8F8F8FFF852 %F827A8A8F8A8A8F87DFFA8A87DA8FFFFFF7D27FD0CFF2752FFA8F8FD04FF %7DF8F87DFD10FF7CF8A87DA8527D522727F8FFFFA827F87D7D52F8F87DFF %FFFF7DF87D5252522752A82752FFF87D7DF85227FFA8F8A85227FFFFFFF8 %52F8A8275227FF52F8A82752A8F8527DF8A87DF8FF7DF8FFA8272727F87D %FFA8F87DFD0CFFF852FF52F827F852A8F8A852F8FD08FFA7A17CA07CA075 %9F757575C19E9F75C19E51F8FFFFFFA827F8F8F8277DFD04FF52277D27F8 %A827527DF8A8A8F87D52F8F852FF52F8F8277DFFFF7DF8A8F8527D5227FF %F87DFF27527DF8A87DF8A85227FF5227FF2727FF52F8A8FFF827FD0CFFA8 %F8A8FF52F8FF275252F8F8277DFD07FFA79F9EC19F9F757C757B9EC17C27 %F827277C7B52527D527D52522752A8FD05FF277DA8F852FFF8A87DF8A852 %F8FF27525227FF52F8FFA8FFFFFF5252FFF827FF277DA8F87D7DF87D5227 %FF7DF8FF2727A82752A8F87DFF2752FF5227A8FD0AFF517C52517C7C2776 %7C5151764B7C7676A7FD06FFA09EC09E7B5175517551C09F27F8F8F827F8 %76527DFD0CFFA8F87DA8F8A87DF87DA8F8F852F8FFF852A8F87DA8F8F827 %A8FFFF2752FFF87DFFF852FF27F852F87D2727FF2727FF7DF827F87DA8F8 %2727F87D7DF852FD0BFF7C7B7C757CFD069F757C759F9FA7FD06FF75C19E %C19E9F7B9F759F9E52F8272727F827517D52FFFFFFCACAA7CAA1CAA7C9A1 %CAA7CAA1CAA1CAA1CAA7CAA1CAA7CAA1CAA7C9A1CAA7CAA1CAA1CAA1CAA7 %CAA1CAA7CAA1CAA7C9A1CAA7CAA1CAA1CAA1CAA7CACAFFA87D7D27FF2727 %FD0CFF759F749F747551757575517B749F749F7DFD05FF7CC0744B51C098 %C19EC098C1272727522727F827F827FD04FFA16F4B4B4B6F4B4B4B6FFD0B %4B6F4B4B4B6F4B4B4B6FFD0B4B6F4B4B4B6F4B4B4B6FFD084B76FD06FFA8 %52A8FD0CFF7CFD049F757C757C757C7BFD049FA7FD05FFA09E27272775C1 %C0C19EC1C052F8272727F827527CF8FD04FFCA4B754B764B754B764B754B %764B754B764B754B524B754B764B754B764B754B764B754B764B754B524B %754B764B754B764B754B764B754B764BA1FD15FF759F7575519F999F749F %997B517B759F7DFD05FFA87DF827F8527CA07CA07CA07627F827F827F87C %A87DFD04FFA14B2727274B274B274B274B274B274B2727274B274B272727 %4B274B274B274B274B274B2727274B274B2727274B274B274B274B274B27 %4B272758120C351234345F34350C353434A8FD07FF7651A07C7C75A07C7C %75A07C7C757C51A7FD07FF52F852FD08FFA827F82727FD07FFCAC96F9A99 %9A6F76999A6F9A999A6F9A999A6F9A99766F9A999A6F76999A6F9A999A6F %9A999A6F9A759A6F9A999A6F76999A6F9A999A6F9A999A6F7D1235345F34 %353435123B343512AEFDFCFFFDFCFFFDFCFFFDFCFFFD96FFFF %%EndData endstream endobj 10 4 obj << /Filter [ /FlateDecode ] /Length 11 4 R >> stream H‰ì—msÚº€¿g&ÿA÷CgÈÜä vú RÚ“¶ L^δ7tÅV@'ÂâØrR+ɇ¼·=ç4©Jƒ°´»Ú]­ɯþ5<Úî&âŒnûMmn¼zµ›Q"E¶ƒt7Úã¼Èe¦º‡[(j:J¨»ŽKÁßi–3‘îTCo•nã=ÉEŠ~cñ]l¡Æ.á’ÆÓ-%pÌ$§ ²»3MÅŒŽF,¦£Ñ<ÐX棑˜‘ Z6cgÃñ×Ñ(1ÈËØŒLh%¸=#iAx“°­¥ûàÏ"a’6vì9N¹îNËCÃ}%ÓEš°tÒ_wP'@~+BQ࣠¥#øÒ|M¦†O 6}Ï÷@Úk¶Û! ü¨Ùö|¥õFÄÅŒ¦r˜‰˜æù®à"ËwÐhüM%AŸ)çâ õ8‰/ê:oE*Av‘1’l÷Oö$á,®ËPšÐäñ’ƒ(2peAjãœJ³¢cN/)÷ÆÝ½¹Méÿ½&#s1ÉÈ|º(åäÞ&§£ÜSËr䦻½Z•ïŒó)$ȃùÂÛ†ó)Q‹6B픲öÆo§Px3"QÐ4¾qî$ç`ÔoÝßk¨”` ²ãÔs· nŠYµx^‘¥ 2’Nè–q¨óÐ\¢w¥©)¹ýÏjz`±9QMÐv O£+ŽÎxQYqšNUë*ɶﶴ\Æ&SYÊR6ô¡:f«¶´¦«¾N¨ ÏÚU[‰À6ÑÃ0m€Ú®‡:a§[ñ‹^2zµƒDJËíÕÍäûŸâ©R‰¼²û°à4;I™"’é‹L÷EByÕ§Õßr2Ñ©YE¢¿K‰c’M¨TÈâ…Ô§IèTcÅì#YPµ[å$ƒ9MÅïÚÍmèìú¡‡Ú¾ßì´[mUÔr[~…¾crYE-§œW¯Ii]™R†ª):ðO­ÆŠs›‘¥;*Y¦JüñÌivçôB"tBœjp¢ÐòÎ2´Îø]Æ’l\µšnµ¤jgûþ#š2nÈ¢”4-™ÕO“]1Sk–ëS Ê:…šçb¢÷Ò˜ ­ŽÇœ¨Üu(< v×ñ€ÚGÆzk'ÈÒ·(*±«<ê´ÂóÍÓÍ ?ÂBÒ´8EQCJ.)r}§6pFrŠÏ!n–šÞäÌôÆØŠI&R<)×¶9=—xЇŒmÕöôo}|,§Ô¢Õƒ:+ Wbš&$Ÿb:Ód<¡’ÐÉàj‚óµI² 8p{Ës†Ü ŸFáˆ`9ÂùœÄ…v ÇE–Ñ4^ÀCŸe₦gÎ^·âJÇb¾(mfÉ9±”¥ Þñ0¤Å„§Bâéb>¥)Î4¯A1Á3+· ­°6xšEŽå•È H–S8t–O$.$ų0àcݗİc´µ˜&Œs–uK phFò¸àÚ£0Tƒ$õsJø¹™£ìÌ‘y¸«ËLuÍŒÝÚjvM~»Ëè»*ÜíãÝÒÜ×긯•ÁJ¿¦Þ_êí©=3Å^Mfo)Ó—S| '3£00 ƒšÂÀø4XêÍà|cs¾Àƒœ«š8©:1Ê'5å“¥Ög3x<T …X ¥–cb&&U<¤¦MÌÔdi„ètŠã*Ô¨Sc®”Á]ê1#ÅŒ«MÁ–2Ò‘š …•O¢¦ J‘¥^Â.™ê0É(Œjaf*®ùS,ufXêd,ªîÍã¾9l‚÷ããÙÚÙê5_úi,‡vÐøÆÕþ¶Ëþ)¾)‡ojšãîø¿›z&ÀZ5¡ßñb^ðÚ‹1¸5„µz{ÌË1Ыlo?¨™1um ÀdéC*®Rý„v67Ý.O‘ën!|@fýGíœX²Kº”Áp¸ÍÕ[\îa›iµÝ)apéÒ"¦{K‰Ke¦Gr×tÌ{졲÷·,…»¥ÏßšRãÚ0¼KÎÁ±!/ õjQ¹ØX³‚õ»¬žõ ‹ÕÅ…d 5i áCJ8jRY’ òi!ôzsl:´Þ-AIõ²p?(7GRñù~%O?ðAV ߌ›‘rå@ûps£ºk}P?««ë§…zz¿þ€¾+ÔBûèô‹ƒ’M%%÷)Qöé9z [Ô¨™¾'‹ëqõ8päb-­² á±.×\]Y¸ÛÓûÝÞiR0y—ËV甀ZÛ§eJi¬5€ü4#4yÊ:+ɵu^Õ¹ƒù{ê®q’Óþ%MIòâVÿùÆ î'_i¬ßÔÌ 6q'å=Kùo£üO„ëð¯Äõ“¸÷£öxh݈ö; õëì~ßîþ_íŽç–çÙ;Þ‹¸ãý3ˆ|¦+þ|cx*Ù[–ì–ì–ì–ì–ì?y O%{`ÉþÉþ»Ý’ü''ù`uj_¬ŸÚ÷¯µkÉþ|cx*ÙÛ–ì–ì–ìÏìÍšXª[ªßAõŽ¥úK¤ú¡Ùùïž²ó]KøgGøï8½-ÕŸO O¥zh©þ©nïê/—ä³l*cö¾nÉ~Ù#KvKvKöçFöf€&–ê–ê·SÝs,Õ_"ÕõF~÷”}ïZ¾?;¾ÇÙm™þ|bx*Ó]Ëôocúß gG—̇uD»¢ŸÄº¿äRê„^ 9M?tTyAãtBØE–J4ÈH:¡Êô×îöúë óȰȰȰÈx<2|‹ ‹ ‹ ‹ŒÇ#£e‘a‘a‘a‘ñxdGFÛ"Ã"Ã"Ã"ãñÈèXd<[dÜW9?§ÐO .¿Ô™qÄfs¾b†Y³Ò× õóÛ+¸\ž!G^sìUw/÷Ó¤›I=q®»Õ5>é0–N¶·ËþŒ §RRãÍðÌL >ÓCÏeFT¾¨…ù”«p׺‡±ªÆÊýÆG6™JÔãEUy×zjÂú»|—Qš^—/»´ªì—cûdBSI®+,;ÍNЊԆpÝš¶ï¶”~/Ó²Ÿ)çâªÒ_ë4úQài}?ò  üޝ·—ÿö«¶7ŽÛpÿ6bÔp«å;Ù¤¸ œÈ‘#_jm!œ¥³tÍùîz/v¤ýí!÷vv9'ÈAÛ-lC9‡3ÏÙ@‡Åj².œî˲‰ -n2> Ck+;}÷®£Ž q?ïmþèÄîÝõûÞŸìqþ·½ …¬¹1pÖÕ!‡þÿ·]ŸI·ØfKŠná3ñj»ZÎÚM=Q“ÜD‚_Òs&³XŠk¼¹™n½WÇ„æ³ã.À?.6¤µN¶=¾rÊd•‡Y³÷¸p‘+ów«ÅvùbþnÑùWãÍHï”ÜF–§"oy†¹ý°¦:ÿ€ÉoƳÙôz5^ÞL/Åñj»¾ÛÖüžõö¨{ö~ʱpx˜ç§ó|%~n£P Î{>åVyß°øo}™<Ügº¿Ôšç;èœûpÒ@ïùârûž¥çãÍä‡;œöŠÛ“ g­¶âð(<#ÊÑÛÅxu%.³Å h²šäbû ª×ù-ú4åÌã¤k•Qá~]ÕñáAÕ®*w|÷ê5 ª£µh¾^ŽW“ùå-œ8½ëéÝÎRÛ­ ær¼„<®§ï·³T¾]×»¾µN·›åv#ÎÆkÈúô.iгÉz1Ûv6IÛÛôrØx`K×éogª9 Fü´Ϧ›[q2ù0™•nÿrôšh+ÀðúïßN®Žf³oóÍú‡É-EkòëíÛõd“T'©8deºì}êgè?™¯·¹+¯V‹wðò€*¼â—7Lõðxšq/^óâE°Ï'—‹«Ô>=yÿ¾À_ïð÷ïî}ýõ—ïpòE=ÆŸúî.OîÖáÍðhé/ávüû_þõù˜ÏÇ|>æó1ÿƒÇäWóŸÀgø«]óófòVœ.7Ó÷»òõzl(Oëæ½þ «Æåbu5¹jðçæEþ¸Øô×{•w¾‹“Õ»$1C-¿\¬Sw¿³Î t>i‹>ê ˆÀ½í²Û“ŸŒo'+ú~ÍŸµðQHè;ò¿Zœ¼m>_®¡;œC3s2O‚>òyÑõÔ_oVX°áF ú#”·gäé~Ëá¯Ñ½ÈçK++/F[ø¦Äo@1Z&­ƒƒÑ«4ZáïÓÞ·PÝÜ ç·8ûFÙGaÄKñ—¿Õâjkgx0,A/rþÓààðâåíj:¾/fW/6ÐV\ «±r:j1”¾²bô.º'ë‘Ñ]’lrÖ² η9¾öû‹ïf·Ël6¿4†¾w"𲣣Ƒó“dêÏé÷ŸÚ¡â}~œïçC'+<ýÍà@ø»]FÓ´{œ£ à¿£›$û¨ø{uG³$MŸ‘£THÈè׺~PþuÕ›NïMs]Õé_'ÉÇÇG—€º³Å¦Û+¶©†k] œxúLœ¿ai—ºòVZH{]©hâ'¦ýéÍž œ‹ìúgYAƒ­àHUiȩ́9ú-Gn[ÀÝYø‡CiÞ‰÷ƒƒ4Ê:HÏÓ×ÏÄ—(3†ÖaÌÖµ¢u³uUÓ:ŒÙ:LÛu—ë‘܋ܻ@Îî›'×<÷Ì‘cŽûeÈ-ýÒ䕿^)òJí‰X'`Ì«Ö'æmã»è@~¾_1ÚÂnZhÑuùm)P†A÷=iæ…V Š!CEjs)(÷õ¼½ö·§ƒ@@€Õ•ÆÖ±®¢²q8Æñôx»šoÄéj<¿ž<ƒ<ü:8âã@iU™:z¨²‚êž €Òu¥êh³ÐK/GCRÓ• 5Jbåb@‰­´SZ\âÆ˜7VW>Ý]a­E¶ ^IÀiѺõ•wÒƒÄT΀>JbÙ £!€ÆéJÛ˜2¯b¨œ² Ðñy†‹â‘ÎVð§kðYpÌùÊIŒi)+m4¶0Σ1FA¦+ii*e#*Ù ¼T \³ÄÕ>Ù2±ŠðL¢Ì,Áë,%4>Iæ°¦XSI/³quLƒùAœt*Ù§àc¥ÎX@¡wC«ªèÀˆvà™ !%Dƒl¶É&E2J“Ã_&¬½pœ8þ—â‡}jŸsþÿ•óõàç¦ûüjpàv¯Ä“ Ì(éz—Þ4CºœKéòY(uuœ@@$è$³ê.F4"þû½«OWUßOz&‡YÓäœ+W÷©êûT×ó`˜m x:—¶å•åB2¦-¤?Y% }Y¡®w<ºëW£?ÄçžÞúZ™éÉÑá翘ïÞ“Í'×ÖEÖ¨ÕeŽ/þµzŽ˜ÿ«DBcÖ> >–]ƒ_àïOþàóÿhò[¡ÉËðäí÷š|ýrÝü™üç6ùqšü¸ OÞ}§ÉcáÙ,¾Á&×ùM~u‘õäW—áÉûï5y”%ÞÈÁ/ðÉßqþa“¡ÉËðäÃ÷š¼S¨ÿ¼ü™üç6ùqšü¸ O>Þj÷waäj­‰{áü¼Yê¥ ¬ûlt1íKj¿ß²C­®ëFT·ž°/SÅ©s5ñ¿ûXï´Ñتë-.õNgTõNlPøÜŒý=9Ê/Â<#¯-J zºFÕƒ¶©Âqê&ì'×Êf‰¬o ªŽˆÖT$nžr¶šÙœˆ+~Om&özbÂ4&_…~¥&Ò§›Í/GÇõÇ›åÚ¨î­i½NmZ=ð_Àÿi÷éæñ»_oÞ]xýéÛô÷Êœ<œ~zqóé݇O^¼}ýñêä¿W.Ÿ¿¾yûǧ¿ÍÎ?×ùåÛÇ«fíž>Ýôž½¾ùõí/×'W¿]jòÏõWýɵç¹5‡N›ÃÃî·›«Or gÖjí¿Y»ý“…¿`õÏþíù·úî ^½û:ùéÙôò•ž.qÎ9NÚŠv+Øû«¯‹¥9¾±6ú§uôu±Ì­« ² %Ø".Û¡pñ4ÊÞ ·Avká^kzr;dO@WæçÎÊíP¸Q9¦‚ÝÙv©ò×n‡ÂÅ~ðŽÝÙMM–Bclæú¨Ñ"‰…‹¦Ãé6Èn±h§²H¢Cáf¥­ItHnÐh‡Ðž‘; p˾ub·Avk³”='1 »õî'1 pÓ¾ù$ual:´©> µCáb+)Å ·AvQ Å –å€ì³¯ÈíP¸ ½­Âm]4±Á8‘D‡Â- _k‘D‡ì¦ °Š$:d7å’BcÂL(d´H¢Cv‹C•íD ·(ë²H¢Crq•)†“]”8/» ÅY)Q¸ ²kÒø²²Û¡p˾jf·AvÇ;Í© È®GÅhÒc¯ùðn¼Æézë°‹j6ÿ«O—£ž.ooëYŸœ6¯êǧoÌùì¨wt_Zý™›¹ú§·sõͺ¡;¾ðØ?ͺ¶Ñï»ÙA-v Ð?îfO~dëv|è6æ0èAsø‘_èã‹3 «ç§§ÝÇùwrq!¨§'xõìëä§gÓËWzºÄ9ç8i+Ú­`ïg¬ÅšYê™>úΖÑï{°Zª¥h…Ú!¹.@)â²’[Kµì=»²Uq)·Crk©Vtdw@v³Ê>$ávHn-ÕJH.Jµ„®‹ÝÙ*i1„ÎÈD¡£I ÈnVÑévHn­ÕbI ¸vÊ54´œÄ ²‹r-Å(ÜÉE¹†/߆dåZöY¸’‹r͹ÄI¬ ¹µ\[ú®vÆfTÖG©vHn-ÖP+±; »Y!'ÜÉE¹ftâÔVܨ•ŽZ¤6 »QiãD’‹r­D±&V]Ô=Öˆ$$·–kI ¡36‹ÊN‹$$·kÙ‰$\»ÕZr™“XAv“Bé…Û!¹Æ©è='±‚ì4f% ·CrmP!X¾e+H®3*èÄ©­ »Iù¨‹p;$×;åç,VÝ‚ö¬H·CrCPΊU±‚äF£,:vd7)ëĪXAröÆìD²[ОE‘Å€äflŽÅˆ,$·¥½Y È®øø[OѤ­*Áq+ÈnVØ=p;$×x•ñfw@r­VÙˆÕ°‚ìbOŒ) ·CrÑw%+Và ²‹M1…,ÜÉõ^E'Và ’°)ŠMu06£ .‰$$7bK,–Ÿa+ÈnVxªˆ$$7aK,r¸’›µrÁ‰Ôd7*§E °‚ä«l4"µÙÍÊQ¬àÚÝj`¶Ú—{Ù¼œí[Ó[Ñ™>Ø]^¿¹šê'Móµ>?œeçÏq ï½óÖ/ÝîþÀìõ£ùH½æÃ»ñ§ë­Ã.ªÙü¯>]ŽzºP¼½­g}rÚ¼vªŸ¾1ç³£ÞÍ}AhõgnäêŸÞÊÕ7ëfîøûÐ:öºÞÉvŠæÍÞÝÉþжíø"£¹=‡N›ÃüB_œaX=?=í>οk”sˆ«9@==Á«÷`_'?=›^¾ÒÓ%Î9ÇI[Ñn{?cŪPf®eV£o¬~ß«aÃÓxÞ µAv±ái[Äe;. ñì½pd%]q)°Û¡pQŠ£Jnƒì¢¤Ë>$v;d%÷"ð…›T ®·AvQÒ%-†Ð˜0‹ŠQ‹$:d]DÇn‡ì¢  1‹$:n‚bD’4 ñ9‰…[”·% ·Av ñì9‰Ù…â\â$.ÞͽÀZ]›Î)‹ìYíP¸(ÃK±Âm]òáõ3 »`8µ…‹:$ê ÜÙNiãD ykb@vQÚkD²‹Ò.'1„Æ„UvZ$Ñ!»(ìRv"‰…›Jr‘D‡äFTvhŠ8‰Ù5ZEï9‰…‹‚¼”(ÜÙEU‚å[6 p³ :eá6È®óÊGÍ© È®× ; g1 pQÇ"ÝÙ V9+VÅ€ÂEAž‚È¢Cv£WÖ‰U1 » {cv"‹…•qQdÑ!»›c1"‹…›•ÆN&ÜÙ-â”[³/E•àD’›tPØ=9Ù5Fåh„Û¡p“ÊF¬†ÙµØqÙíP¸E%+VÀì:lŠ)p²ëŠN¬†…‹MQlª±œ .q [b±V¸ ²ƒÂSE$Ñ!» [b‘ÃíP¸I¹àDj²›rZÔ ·(H­CvKPÖˆ`@r·˜­öå^6/gGû–Äô–Dt¦v—×o®¦úIÓ|­ÏgÅÅùs\ãNöÖ/ÝîþÈÚëGó‘{͇wã5N×[‡]T³ù_}ºõt¡x{[ÏúÌ—]s7†ï©:ÿan\hõÑúÚ;›TXHØÝã-oeS.ƒMB08 8$ûë÷•4GR7“JîàPxŽ?ÒHÓÒ¨ûäáÁ;4¥q÷9Ÿîz5w‹ •ÿµ+—^Ê•_æbîèœpv†5èºW²ƒ"øãJö³–mGç ùó§sôOÍás.è£óS «ÇO/Ç?ן%”5ˆSyõòß~û¸Ðòtùî{½\¢Ím…v+°_fX ‰ZXs™>úÎÖÑ·ú«¤i1X¡vÈ\¤iÞfÑí€Ì-iZ"âî€Ü Š\ôÂí¹%MC–Àݹ›”#…Û!sKš–“ø€ÌEšfQqqw@îeµBgÌD’f‚‘»IÔpÂí¹™P–%‰g×k ÅðHL»H×bÂí¹HײÍü1L»H×%ávÈ\¤kÉE‰ réÚZ õÀ˜‰d-Rê€Ì-ÉZÎ<änT(3œp;d.Òµ #Ú¹›•ZDm@æ"]óƉH È\¤kÄž˜ w£B>$"1 sKºÅ:ãfVÎi‰™[’µäD$œÝ€lͺÄ#1AîFe²!ávÈ\ã”!⑘ w3в„Û!s­WÚ[þÈ&È\g”Ö‘Gm‚Ü *…Û!sÉ*̘Çb‚ÜM(ϲt;d®'•¬ØdnÐøÍ‹X ÈÝ ¢»b‚Ì8“±» åY±¹ ‡c6"27kå‰D,änPbb+™­¨­BeÆ£0Aî&E:8ávÈ\CÊaUsw@æZ­œ;b‚ÜŹbn‡ÌuVY+vĹ‹ƒ1ú$Ü™K¤Œ;b‚Ìõ8ÅÁ:7ƒÒ.ŠH ÈÜ€c1[þ› w£Êˆ¦p;dnı˜åpänV 'žp;dnò*i‘L¹Ù(LEDm@îF…E%¢6àìn1[%ÌYÀœîZYbzY"ªÓ»Ç—7ϯ–r§¥öõþ^•‘`œ=CDHÂ-­oû$MúAýįHó¹ñÍõÖÇ®ªÙü«~¸~Js¡ýTOúäáÁ;4¥q÷9ŸîzEw‹ •ÿµ˜+—^Ε_æ‚îè¼—h.¢* k5;¨Sö«ÙÏZº÷…Ëæ0蟚Ãç\ÐGç§VŸ^Ž®?K(k§òêå1¾ýöq¡åéòÝ÷z¹D›34Ú íV`¿Ì°’E2Qò™yô­£oõšMÊÇ`…Ú!sR ›E·2—´¢DÄݹ4/Ü™ë­rYîÈݤù(Ü™HÙœDÀdnÔÊz—¹; w‘Ph1„Θ™¬2A‹H È]¤ÆK·CæfR:$‰g×käÖðHL»^å‚p;d®ABa3 änT)Qn‡ÌµH(\䑘 w³Š¥`ê1Óy)u@æ’Q¹wänTÁ‹m9Aæz¼€uäQ› w³òA‹¨ ÈÜà•7NDb@æF£(ˆ=1AîFEÖˆH ÈÜ䔋bq3+紈ĀÌÍ^ÙäD$œÝ ².ñHL»QTÂí¹Æ)CÄ#1Aîf¥sÂí¹Ö+í-dd®3JëÈ£6AÎÂí¹dfÌc1Aî&•B–n‡Ìõ¤’»b‚Ì Ùµ±»AE'vÅ™q6&'b1 w“Â#±¹ ‡c6"27kå‰D,änPbb+™­¨­BeÆ£0Aî&E:8ávÈ\CÊaUsw@æZ­œ;b‚ÜŹbn‡ÌuVY+vĹ‹ƒ1ú$Ü™K¤Œ;b‚Ìõ8ÅÁ:7ƒÒ.ŠH ÈÜ€c1[þ› w£Êˆ¦p;dnı˜åpänV 'žp;dnò*i‘L¹Ù(LEDm@îF…E%¢6àìn1[%ÌYÀœîZYbzY"ªÓ»Ç—7ϯ–r§¥öõþ^•‘`œ=CDHÂ-­oû$MúAýįHó¹ñÍõÖÇ®ªÙü«~¸~Js¡ýTOúäáÁ;4¥q÷9ŸîòÆW½|»»c–d%çâŸ,Žû7Cš<^bX)¤3Òéßa‡¶O6ú{¹3µ´DÊû­kÍr¯Î¦>zÛ-6µ}¹³Ëþ¦Lµ•®÷c†òKò |A¥qæîk¡»ÿåPô^íµ'òв7íÕµöNÔîØ‡E®4OáÐЮRÒí™X£\«ü¤‚»;ßìöÏÊïã§mXÖ Þg(›jÈ:ç3-û7u¤ïÖêuZ¯ËÀ7(þ}wç/çO{÷êâòþÉÍõå×.®_½X"þŠX8˜÷M™ûþeíê=î¬ÑþïÿWɇÒYíwåg· Ç_{ÿøüÑõo?ÿøÏÛçï?üuß¿¹y{µ”ìל=©]ý»þüÖA(ðùîÎÙI5îÿ`ÜÙ–»cYZàG‡ií_ÕÖmZüsËþÇÊþ •pý¡¹ûëJ_ÔŸ±ÏŸÞ[ö¿–pcH¯Ç£MËz1‹·¨tSÉ“ñh­Aj]íÝ‹µ¡žÛáŒ_/h‡óÄ’§¡Ñ&´v¯×v–XCZÖ –¼"SPÎxK׆W[7¤vC*7 Љ4µ…çôzÃíúÖЗ†YxÉiM’~~¡=—PžK$ŠË´Û¹œÖçò–µÓ˜@ε±Áî—Jc*U®k=˜è\ëáVöô`•}¸^*MXŸÎÆö¨(x·5v¸áC.G·ôK¥É[Ôlëm½mçî5ëáîÓ‹×WËÓ‹··×ÿÁQ²?ÃÞ»ñmï«¶ãÊHëíE\R©0aÔ²ŒjùÇØ•ú_>îL Š"rƒAyZ PVŸìÉÄ( •ÀŽëm·ØÔöù®½¹>éã͆Ýr²û¤ç­QUÏÔÛ\&ér‰²wõAc]ã8yxóîêý‡åÑ»«+¬½üZžÖÇ]y9R}ÏY„Ðß^î Q*Ù* Ní¥—µ- –°!ƒÑÔ µÜ¯nRC1es¬P—‘WˆL*‡Ò£kùJ¥'_J|AY×Ôx^çTa)5˜”Í¥((¦¡úxS©ð’ÏõÚ†‰Ük³ ÉkÛîŽú.æ´¾Ý)¯Í1$K¶B¤ÛíF8|.o$ìYçõ¼ÂRËY˜ýî8f¼ñ¡š1Ø6w_vF)¶l‰‚n3ò5E²í(AÕ ¢jrnKµÁŒ1»6#«×ᨢ¬míÓšÜnÊ™VÞnåÁbã4ˆ!EíÚàK=[`4‡çiZç"Ø9˜Ë; Â’Jš6Í¢¯/ ”›íî9­fB¢i|ƒAÓjPE„‹(뙹²^”Ký@ì#r”•Å%ÝžQeÁK,¯iØ—ÍÂmaß …|¢'+¡>ØÃñÅS´,ÂÓ",,Ñ\\Ê6Ö2žàô ãIÞ‡lÙΕ4­úÙ}‘H“CŠeª¤* ÓXj2 ò‘PZ”Q¦>ÞîÓPË7f—Eîˆ{žzYQ˜àØëíçÕÅPïñê4­ê!/„"”hœ ‘÷NyxƒI–Wë ’) Ä- ½B‰õ» ¿¤^$©R â(òŠ/¹¨ÛÕ\À›’lYi1±ˆ½Ÿ-æêå–ïV·‹ë¿w¿ÎÎ,0¿ûq¿’K¸þiƒ­I©ƒââ_<¦ë°r§_î¡ýo»ÅŠM_s´ãwñ«.¯îžnè]³7ëÙzö¤Ñ¦ÝñÄuñë'bºØ}ê¾}wÝ-Zß×+¶˜ØñBÏG÷È6»ŒA–h_6åÁ¸’ uò•j>2àÓe©Èq•äƒI¸ž4Fê…¼q ƬisT´¾Æ k€÷°ÆU#ôñ¤Þð„Ãcï3Ãr²l²±>Œì|-#ØúJN°óµ¬œ,WH¦Ó‹Õãª+T”•µ™$3i4øV)èñü‡í jÐõÙ}~æÖÛá­#N–—LÞm0mÐ`qd=ƒVB*ƒ žõÁ©:Ê74/”¤BYÊVÕÍç77뇫Çß×¼öyí5ÕÀÁ£„õŸLsËè{îÙ)©X 7C•ÍÀ©ìå¦$ÇM sÓ@2ÉÍaH¦¹á–RÐYÑ8ÑùH¨;ÄøÆ½6­u/5†² ÇPÓ€h È$3‡Ùà û4/žrˆ¼V²š|6Æ8Í ñ´AG2Ó€ÁÔì™`æP {˜Á”*¬QÒzâA!Ê<”axh?5ÁÁù棨ià`jH&¹9 É^nˆeO: fæ$ÂØÛhoAÏLùhnvphßA2ÉM É?ã…® endstream endobj 11 4 obj 11234 endobj 12 4 obj << /Filter [ /FlateDecode ] /Length 13 4 R >> stream H‰¼WÏk$7½æè‹Á A«Òo%'/ܲ°KHnf™,&±wq¼‡ü÷©RIjMw»Û­Ùo.füPW===U•ŽÇo¾<z¾ÿòøføápu}÷ý9\ÁpsûøåqˆJ¾þøýpõí ‡‡+9ür¸Ò DÔࣼðQˆÙ(¬Òf0F åþ>\}<üv¸¾{{ûôüóý‘’|zúwø‘2Ü€ZÙèÞ o?>?Ý?~nÞ½»=¾HHrøã‡+7Ü0¡ë»%ˆ.¹¾ûõ{ÙTFFƒÑZ„]’ÆI¡•S#¸%õÒG¦43/1YÕf“m×€‚t\Î…Xm#U:,Àc»k¦4²m&D.ç+49VúX±.^€´ùXePÂÐq}¦03$Ë]öòØÐ%âY=p"€¶¬ŒÊŒ•x1n*£­ƒhÏRfi³ÀdU›}L6=Ã7œŽËˬ òsV¥Ó ÁûKTš¤Í“Ëù&ä+ŽçUû“ÅO‡b¸HšÓ`×̈\Ì5J‹h<9™ª $ B:l”Æá^öÿ­Yâð“UmðúÅï¦MÞ8:.),(ÏÚ(¡´¤Ó¢B¨·µ9¿Ú,ñ m˜¬jðfGs†60Ü~%Šï™§`ø‹nRNˈC„2[¨bÆ £lè(mª X Œ3ˆh'”ô#pd?…Ýv\Zx¼zM¤Šä|ô]Űê8ëô0F W¨1_ŽlufUWUæ5ÒtøÝŸxâKGµ E‹îƒ¯ETkúá;×#ÉõÝã¡zÂé}&Ý(,uQÓð@ãftµ3h´À-TÇ ©"í’5ž™zß É+{kšeX`ñ²Aª"%ã‘ÛƒÊÀ†4Œ¡°2+t“± É-…X]VÉ×P³=â‡ÿ¼d—=Zx§"d˜NM¸;u©B–éÔåÔ3~ôÌ{öÌg¾¡:¨¬6¨Ò¡Äé<Ú&VÃèß1åŒk¸äÈ5Ýb“m–Acª"%cú°€øJ0hY ¥°ZMÆ‚¹a0±º¬’¯¡f{\)1Kz´ðNE¸¿tiBŸvªÂí«K—SϸSÏ4]I{LKžÄ=Ä(Ù7-¨£fM|t´±ˆƒ‡äªˆ³»:Em…£Û,³ø^ÕP ’2æ3ˆ2`¢1* ½ÔMÆ‚¤ ±qY%_CM÷¸â›%=&ðEèÓNMøÓ.UèÓN]N}c_ô †µŠž½šú`teê« ÄR—n5>ƒ©,Mï“c‰5#’.?Ý|ì4ËP§u©ARÂüañ©©åŽ¡¢p8ɵ3’Ë óª«*õiºÃµj³ ÆÞ¡}Ù©Ú¥ óíQåÕž1B¥I {›ËcM‹I—š8Žd¸D0U° #]òùYÓ®AæNÚ6Lƒ8W¿Êfu7˜â|7Âè =†¼&!¥FšeTˆ¥4M¨ÉSk© šß—Ç¡bžðÇŒI+±º¬’¯¡¦{\¯.3=Nà}ŠäÑ£ 5–NU(k§.¯õ ÖJtº'òàqÞz˜€ŠžzÔ£zóYì‘‘g/¼íˆä‘Ä#Ýv™Å~Iµo Õ )cþ0ƒ4 9nï9ŠëÚ|éÿ<ÇdRyI¥]ƒLw·>ÅÌ”˜À{´àQ¤K þt·<Át(òj¯FÙŠV³UFLâ„42±-m[©qDÒÙI`\†| ¡ Õ")a~f1HrxŽ„?¼Æ7嘰 G&ʼÆe™z 4ÙÞšWæJœ¢{´ /;Õà'VLw¿"¯öŠRƒN­ÌãCŒÍÒ€`¬å7Iìv<…E` $:¾Ö¬µí2{hC5Hʘ>¬ Z£M(#‚RºÍ˜‘l³L¬,É—P³=®9fA ¼G:øNMèÓNUØn]ºì¨1AŸfåДP‡à“35e§Y?JË4¼2nDr••œ_–‘•±M¨Ióñg÷øVq$ìÓÒå[Å ’« ó—Uî%Òt‡ëuf¦ÆÞ£®K>úM˜o*‹žùí‹@ßÅ@ŸWÊšžqJ!³T–G ¬Ð‡jeƒpA¢³%Žeô¢S–ê5Å‚`re°+Í2ä꽎M¨Šä„ô݈|Bb#Ñ ‘Ê7 BV^uÙ¸ŸjºÃ—½³$F‹î”?í¿ì•?íåÔ:q,7·_©Þ| ?¿æ8:ãL4†hA@ƒ¬Š®>¾ òR€nB\ßý:rRräTÙô¾2\8CTŽÙXŽJ3†²ÑûÂæúîííÓóÏ÷Ççû/Ÿžþ~¤72½%#nùíÇç§ûÇÏÃÍ»w·Çã·‡_ž?ÑÚ7ôò'úÃÅwº©%´©&´©ïÄdC‹uÁDnw²6AHCC0NA8ªlic•¶gj³Àƒ}:c²ªÍ>&Úhz‘æI΃å‡9L¤›Ž]°eoiãƒÕ1œ¥Íª9 LVµÙÇdC@©Ó»)àP”ï”SÂþ6à„ fCÀ£õp¦4 4Hš9‘eöÙPFbWv>=O•1ÀÊh³$ÂwÖÝ-e´ 1ú³”Y AỂ¬*³Èº2د¢L”°ŒGÊ !Unm Ü’ÆzéÏ“f‰÷ð“Umö1Ùv УhPS¦º ðÒ¸¥ >PmtçÚfÊ#ÛfÊdU›}L6}p IçB bÐj/b›)ìš)‘‹ºFZŧ¥d¬®‘ô U4Xà ö2®™òÈ®™2¹˜k¨5€ƒ4E7 ƒTÜ/¤Ù’†ê>¥Î“fFîP"+Êì%²=×àÙ¤ÁUæ ÍÖ¸­‘O mD{îX3¥Ác͔Ȫ2ûˆlzFÓ§³òà‹eTÏ'¥åV¥ùNž™Ò`Ë̈\Ò3ù†ãaÕÛ„×§m>+m·Æšïdš6ÍŒÉå\cEPéUŠwÝp²^„ uzÏ·ž—øè¡7ÝyÒÌiÐ jȪ2ûˆl(„WÒÓV£oY#¢³ÄÛƒÛÒì—Ñœ%ÍÒfɪ6û˜,hÃíW¢øžyʆ¿¸eƒ³6  }þ2„Šø¾S–9.ÑÕ€ÏeAD«äÈvôT³ Û³7¹rp¤É ,¼êªJ½Fší¿û}é´–Ô8wéÁ7£Kžlº4!wõ©r}÷x¨Îpz«„I÷ Ë]—Ÿ*TîN@‡áñm§¬}ª"þÐL5„Içî¤á¾.Ã* 6ø&ÔˆäŒGn ‚§´¬„Âò¬¤…&cA’a ±º¬’¯¡f{ÄÿyÉ1 zœÀû¡sïÔ„[T—*d™N]N=ãGϼgÏ|æKŠƒföšs\Š+f…•éJY¡5äK )T räÂîL» oEÔšH#Âùrib ß A)R5‡©ö< ’üRXË óiº¿•³ Å ºO î/rpeê„ØöIrêwꔦ#YœBô¼À¦Å>ÕB0KF¯˜DÖä%¤Ãᬌ'‹Œ<Ó ”-V1ì»qhá–œ¤ËÈ‘ifRuYC<‡šloÍ,s%&èëµ »Ôà»ô`²=Šœzžì›Ë›2BÇϦüójÛmã¢ïô|1`õšËے铜&çÒDm\´…¡È[Y…,¹’Çýúž!¹+j-«Ò"‰g†‡Ã3CŽŒ¦-kèY#df•.<¢ o‘aE!ݺ—¾5'®jÄGŒ kÐXtÞÄ=܆4bDâ˜Xm–$]5÷¸­b6ðÑ€÷a$ ª­8 K[±–¶âeºqÚQY¢ls몺©AjWn¥GdaG”àj…ÄÚ6©™¢ÚV©«ñ«ã ®Inâ6ƒ+\ ½01^Lke3Oü¬op{Ñ¢´´a$| N¢´´`ecÍüÒuAœõîèóÓª„Þv;9;g†=t¥j9å˜æ.1˜<¨)2(„/V)„d“nç3¸?÷ötƒ¾%ˆðæÆ`˜Çä]ƒÞ\•)NÖăÁaØ÷®yfðVXÑõz…ç”L}ßWôXP¯W¢Àzhj N?Z“¥ÌhVœT8ö@ \sKàkêÏ)s#Æ1ö"à¢þò¨âØ}Xi0F +`‘§°ÿ­ÛéìvŽ%ÍJÑ/®ý/ætøQ£:îvN®Þ=ÎǃëãÓÙäúl9˜Œ‡ÌqVÔNí´jÖÿË/]`·ÛÆ¿þ¿Y’3OEÄ/ïôδ>¿z3y¼»ù|ÿu±|ÁVÿ?›–ŒXë÷b"—ÞÕoþóW:#¿v;—§hĹŠ,(úšYÿMuý±w9 ŸQø#YÿÆ{ü‡n1¾GÁ¶?ñèÐ>t;‡ŽXÿ;áGœæásü|‰ û(¿“Þ|ùÓx¸Ϧƒù#{AØ!†4RŠ#vòy9OGìðô´7Þß~š-d|Ä~ Óé#^“‚‹Ó@ÓÕ«éõÅ౜Gà´§¢…?¡Ö$+ý…$‡ããì,žÞßÞ-ŽØÅôÙ|£Ekï Vï·e3Ë^»ÌD•¾Ò̾ܔåd{j•ÉN¹Q{Y×s½A)8ûù<0ÅÞ±ßÿäìk.±HJ•9I“TAO9@ÓäY«s®¿á$ÝçŒîõ ßèðOW﹓«ùT߉ˆ2™2ŠËdÐÏ`žA_!L¸Zr— 7ø!tƒ§õ U¥ÂÏåÇ3­èya4(À“””ÔD øŠD,‡„A•ÐYK2[ôPJ™ñ ­Œ…йÈö½ß‹¥¤fœÖ¨LZÈe& ´ËòÂúEZ©©@™ñb27wÒA%[u B¨ý1Ö!Ín‰FÅ]n#(“x’å¤ûä]ð\xD9’Y$Á…Þ ¹è ÆÓ¬¸–ì"ÍsDzaw@s•¦ vý±HÍÓT¹®àfÌ'‡(ªClÌa{—<8DírsìÆ#1[¢‹!ÜdÈŠŽ¹Àc%Ω•špœÂ‰Ð 6KÅÁÇÁ¨ìÏã Åh1øV²ÁtJºXÞáWl4/ËÙ¼d‹›Ù!´¨^лž}-¯Î&“ûÅr>€Ý"°“e9¿Oá‚Ê%+¿—ÃÊtq3¸†rÀÌn3{9›Ìæg·K³Írùx7Íw7ÿzH;Øf0)¿•ñ¼›ƒƒW^w;ÿ ¢æ endstream endobj 13 4 obj 4540 endobj 14 4 obj << /Type /Font /Subtype /Type1 /BaseFont /Myriad-BoldItalic /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 15 4 R /Widths [ 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 269 387 541 541 869 666 198 314 314 452 596 260 322 260 326 541 541 541 541 541 541 541 541 541 541 260 260 596 596 596 437 749 618 582 583 681 517 511 673 666 274 399 590 487 821 666 705 559 705 583 510 527 655 611 864 569 570 553 314 337 314 596 500 395 554 562 433 560 501 329 558 563 265 275 530 265 831 563 559 565 560 370 416 348 560 512 733 498 497 450 314 240 314 596 184 184 184 255 541 448 1000 519 519 395 1260 510 268 909 184 553 184 184 255 255 448 448 336 500 1000 395 859 416 267 826 184 450 570 184 269 541 541 541 541 240 556 395 673 400 461 596 322 506 395 356 596 365 362 395 559 538 260 395 356 383 460 826 826 826 437 618 618 618 618 618 624 845 584 517 517 517 517 274 274 274 274 693 666 705 705 705 705 705 596 702 655 655 655 655 570 558 580 554 554 554 554 554 554 763 434 501 501 501 501 265 265 265 265 558 563 559 559 559 559 559 596 560 560 560 560 560 497 564 497 ] >> endobj 15 4 obj << /Type /FontDescriptor /FontName /Myriad-BoldItalic /FontBBox [ -95 -250 1225 852 ] /Flags 32 /CapHeight 674 /Ascent 852 /Descent -250 /StemV 152 /ItalicAngle 0 /XHeight 489 >> endobj 16 4 obj [ /Separation /Burnt#20Orange /DeviceCMYK << /FunctionType 2 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 0 1 ] /C0 [ 0 0 0 0 ] /C1 [ 0.0824 0.38039 0.92549 0.0078 ] /N 1 >> ] endobj 17 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 414.16797 427.96387 415.16797 432.21387 ] /Length 20 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 21 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 414.668 432.2139 m 414.668 427.9639 l S endstream endobj 20 4 obj 109 endobj 21 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 22 4 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 23 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 420.12305 427.96387 421.12305 432.21387 ] /Length 24 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 42 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 420.623 432.2139 m 420.623 427.9639 l S endstream endobj 24 4 obj 109 endobj 42 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 47 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 426.07617 427.96387 427.07617 432.21387 ] /Length 48 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 50 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 426.5762 432.2139 m 426.5762 427.9639 l S endstream endobj 48 3 obj 111 endobj 50 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 54 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 432.0293 427.96387 433.0293 432.21387 ] /Length 57 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 58 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 432.5293 432.2139 m 432.5293 427.9639 l S endstream endobj 57 3 obj 111 endobj 58 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 62 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 437.98438 427.96387 438.98438 432.21387 ] /Length 65 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 67 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 438.4844 432.2139 m 438.4844 427.9639 l S endstream endobj 65 3 obj 111 endobj 67 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 71 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 443.9375 427.96387 444.9375 432.21387 ] /Length 72 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 76 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 444.4375 432.2139 m 444.4375 427.9639 l S endstream endobj 72 3 obj 111 endobj 76 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 81 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 449.89063 427.96387 450.89063 432.21387 ] /Length 82 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 83 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 450.3906 432.2139 m 450.3906 427.9639 l S endstream endobj 82 3 obj 111 endobj 83 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 88 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 455.8457 427.96387 456.8457 432.21387 ] /Length 90 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 92 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 456.3457 432.2139 m 456.3457 427.9639 l S endstream endobj 90 3 obj 111 endobj 92 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 98 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm9 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 461.79883 427.96387 462.79883 432.21387 ] /Length 99 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 101 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 462.2988 432.2139 m 462.2988 427.9639 l S endstream endobj 99 3 obj 111 endobj 101 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 105 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm10 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 467.75391 427.96387 468.75391 432.21387 ] /Length 107 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 110 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 468.2539 432.2139 m 468.2539 427.9639 l S endstream endobj 107 3 obj 111 endobj 110 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 114 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm11 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 473.70703 427.96387 474.70703 432.21387 ] /Length 116 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 118 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 474.207 432.2139 m 474.207 427.9639 l S endstream endobj 116 4 obj 109 endobj 118 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 122 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm12 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 479.66016 427.96387 480.66016 432.21387 ] /Length 123 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 127 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 480.1602 432.2139 m 480.1602 427.9639 l S endstream endobj 123 3 obj 111 endobj 127 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 131 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm13 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 485.61523 427.96387 486.61523 432.21387 ] /Length 133 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 134 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 486.1152 432.2139 m 486.1152 427.9639 l S endstream endobj 133 3 obj 111 endobj 134 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 139 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm14 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 491.56836 427.96387 492.56836 432.21387 ] /Length 141 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 144 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 492.0684 432.2139 m 492.0684 427.9639 l S endstream endobj 141 3 obj 111 endobj 144 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 149 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm15 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 497.52148 427.96387 498.52148 432.21387 ] /Length 150 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 151 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 498.0215 432.2139 m 498.0215 427.9639 l S endstream endobj 150 3 obj 111 endobj 151 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 156 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm16 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 503.47656 427.96387 504.47656 432.21387 ] /Length 160 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 161 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 503.9766 432.2139 m 503.9766 427.9639 l S endstream endobj 160 3 obj 111 endobj 161 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 165 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm17 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 509.42969 427.96387 510.42969 432.21387 ] /Length 167 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 170 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 509.9297 432.2139 m 509.9297 427.9639 l S endstream endobj 167 3 obj 111 endobj 170 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 173 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm18 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 515.38477 427.96387 516.38477 432.21387 ] /Length 175 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 178 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 515.8848 432.2139 m 515.8848 427.9639 l S endstream endobj 175 3 obj 111 endobj 178 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 182 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm19 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 521.33789 427.96387 522.33789 432.21387 ] /Length 184 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 185 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 521.8379 432.2139 m 521.8379 427.9639 l S endstream endobj 184 3 obj 111 endobj 185 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 190 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm20 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 527.29102 427.96387 528.29102 432.21387 ] /Length 194 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 195 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 527.791 432.2139 m 527.791 427.9639 l S endstream endobj 194 3 obj 109 endobj 195 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 200 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm21 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 533.24609 427.96387 534.24609 432.21387 ] /Length 201 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 202 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 533.7461 432.2139 m 533.7461 427.9639 l S endstream endobj 201 3 obj 111 endobj 202 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 207 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm22 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 539.19922 427.96387 540.19922 432.21387 ] /Length 210 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 212 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 539.6992 432.2139 m 539.6992 427.9639 l S endstream endobj 210 3 obj 111 endobj 212 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 215 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm23 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 545.15234 427.96387 546.15234 432.21387 ] /Length 218 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 220 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 545.6523 432.2139 m 545.6523 427.9639 l S endstream endobj 218 4 obj 111 endobj 220 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 224 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm24 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 551.10742 427.96387 552.10742 432.21387 ] /Length 226 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 229 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 551.6074 432.2139 m 551.6074 427.9639 l S endstream endobj 226 3 obj 111 endobj 229 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 234 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm25 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 557.06055 427.96387 558.06055 432.21387 ] /Length 235 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 236 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 557.5605 432.2139 m 557.5605 427.9639 l S endstream endobj 235 3 obj 111 endobj 236 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 242 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm26 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 563.01367 427.96387 564.01367 432.21387 ] /Length 244 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 246 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 563.5137 432.2139 m 563.5137 427.9639 l S endstream endobj 244 3 obj 111 endobj 246 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 250 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm27 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 568.96875 427.96387 569.96875 432.21387 ] /Length 252 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 254 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 569.4688 432.2139 m 569.4688 427.9639 l S endstream endobj 252 3 obj 111 endobj 254 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 258 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm28 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 574.92188 427.96387 575.92188 432.21387 ] /Length 262 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 263 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 575.4219 432.2139 m 575.4219 427.9639 l S endstream endobj 262 3 obj 111 endobj 263 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 266 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm29 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 580.87695 427.96387 581.87695 432.21387 ] /Length 269 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 273 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 581.377 432.2139 m 581.377 427.9639 l S endstream endobj 269 4 obj 109 endobj 273 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 275 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm30 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 586.83008 427.96387 587.83008 432.21387 ] /Length 278 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 280 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 587.3301 432.2139 m 587.3301 427.9639 l S endstream endobj 278 3 obj 111 endobj 280 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 284 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm31 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 592.7832 427.96387 593.7832 432.21387 ] /Length 286 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 288 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 593.2832 432.2139 m 593.2832 427.9639 l S endstream endobj 286 4 obj 111 endobj 288 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 293 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm32 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 598.73828 427.96387 599.73828 432.21387 ] /Length 294 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 297 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 599.2383 432.2139 m 599.2383 427.9639 l S endstream endobj 294 3 obj 111 endobj 297 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 302 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm33 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 604.69141 427.96387 605.69141 432.21387 ] /Length 303 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 307 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 605.1914 432.2139 m 605.1914 427.9639 l S endstream endobj 303 3 obj 111 endobj 307 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 311 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm34 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 610.64453 427.96387 611.64453 432.21387 ] /Length 313 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 316 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 611.1445 432.2139 m 611.1445 427.9639 l S endstream endobj 313 3 obj 111 endobj 316 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 319 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm35 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 616.59961 427.96387 617.59961 432.21387 ] /Length 321 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 324 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 617.0996 432.2139 m 617.0996 427.9639 l S endstream endobj 321 3 obj 111 endobj 324 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 329 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm36 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 622.55273 427.96387 623.55273 432.21387 ] /Length 330 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 331 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 623.0527 432.2139 m 623.0527 427.9639 l S endstream endobj 330 3 obj 111 endobj 331 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 336 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm37 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 628.50781 427.96387 629.50781 432.21387 ] /Length 338 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 341 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 629.0078 432.2139 m 629.0078 427.9639 l S endstream endobj 338 3 obj 111 endobj 341 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 346 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm38 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 634.46094 427.96387 635.46094 432.21387 ] /Length 347 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 350 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 634.9609 432.2139 m 634.9609 427.9639 l S endstream endobj 347 3 obj 111 endobj 350 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 353 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm39 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 640.41406 427.96387 641.41406 432.21387 ] /Length 356 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 358 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 640.9141 432.2139 m 640.9141 427.9639 l S endstream endobj 356 3 obj 111 endobj 358 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 363 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm40 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 646.36914 427.96387 647.36914 432.21387 ] /Length 366 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 368 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 646.8691 432.2139 m 646.8691 427.9639 l S endstream endobj 366 3 obj 111 endobj 368 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 373 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm41 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 652.32227 427.96387 653.32227 432.21387 ] /Length 375 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 378 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 652.8223 432.2139 m 652.8223 427.9639 l S endstream endobj 375 3 obj 111 endobj 378 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 382 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm42 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 658.27539 427.96387 659.27539 432.21387 ] /Length 384 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 385 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 658.7754 432.2139 m 658.7754 427.9639 l S endstream endobj 384 3 obj 111 endobj 385 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 390 5 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm43 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 664.23047 427.96387 665.23047 432.21387 ] /Length 394 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 395 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 664.7305 432.2139 m 664.7305 427.9639 l S endstream endobj 394 3 obj 111 endobj 395 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 398 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm44 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 670.18359 427.96387 671.18359 432.21387 ] /Length 401 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 402 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 670.6836 432.2139 m 670.6836 427.9639 l S endstream endobj 401 3 obj 111 endobj 402 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 409 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm45 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 676.13672 427.96387 677.13672 432.21387 ] /Length 414 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 415 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 676.6367 432.2139 m 676.6367 427.9639 l S endstream endobj 414 3 obj 111 endobj 415 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 419 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm46 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 682.0918 427.96387 683.0918 432.21387 ] /Length 423 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 424 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 682.5918 432.2139 m 682.5918 427.9639 l S endstream endobj 423 3 obj 111 endobj 424 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 429 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm47 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 688.04492 427.96387 689.04492 432.21387 ] /Length 430 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 434 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 688.5449 432.2139 m 688.5449 427.9639 l S endstream endobj 430 4 obj 111 endobj 434 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 436 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm48 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 694 427.96387 695 432.21387 ] /Length 439 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 441 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 694.5 432.2139 m 694.5 427.9639 l S endstream endobj 439 3 obj 105 endobj 441 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 446 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm49 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 699.95313 427.96387 700.95313 432.21387 ] /Length 447 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 449 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 700.4531 432.2139 m 700.4531 427.9639 l S endstream endobj 447 3 obj 111 endobj 449 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 454 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm50 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 705.90625 427.96387 706.90625 432.21387 ] /Length 457 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 458 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 706.4063 432.2139 m 706.4063 427.9639 l S endstream endobj 457 3 obj 111 endobj 458 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 463 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm51 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 711.86133 427.96387 712.86133 432.21387 ] /Length 464 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 466 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 712.3613 432.2139 m 712.3613 427.9639 l S endstream endobj 464 3 obj 111 endobj 466 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 470 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm52 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 717.81445 427.96387 718.81445 432.21387 ] /Length 474 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 475 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 718.3145 432.2139 m 718.3145 427.9639 l S endstream endobj 474 3 obj 111 endobj 475 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 479 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm53 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 723.76758 427.96387 724.76758 432.21387 ] /Length 481 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 484 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 724.2676 432.2139 m 724.2676 427.9639 l S endstream endobj 481 3 obj 111 endobj 484 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 488 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm54 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 729.72266 427.96387 730.72266 432.21387 ] /Length 490 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 492 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 730.2227 432.2139 m 730.2227 427.9639 l S endstream endobj 490 3 obj 111 endobj 492 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 497 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm55 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 735.67578 427.96387 736.67578 432.21387 ] /Length 498 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 499 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 736.1758 432.2139 m 736.1758 427.9639 l S endstream endobj 498 3 obj 111 endobj 499 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 506 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm56 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 741.63086 427.96387 742.63086 432.21387 ] /Length 508 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 509 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 742.1309 432.2139 m 742.1309 427.9639 l S endstream endobj 508 3 obj 111 endobj 509 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 514 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm57 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 747.58398 427.96387 748.58398 432.21387 ] /Length 515 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 518 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 748.084 432.2139 m 748.084 427.9639 l S endstream endobj 515 3 obj 109 endobj 518 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 522 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm58 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 753.53711 427.96387 754.53711 432.21387 ] /Length 525 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 526 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 754.0371 432.2139 m 754.0371 427.9639 l S endstream endobj 525 3 obj 111 endobj 526 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 530 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm59 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 759.49219 427.96387 760.49219 432.21387 ] /Length 532 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 536 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 759.9922 432.2139 m 759.9922 427.9639 l S endstream endobj 532 3 obj 111 endobj 536 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 538 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm60 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 765.44531 427.96387 766.44531 432.21387 ] /Length 542 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 543 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 765.9453 432.2139 m 765.9453 427.9639 l S endstream endobj 542 3 obj 111 endobj 543 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 548 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm61 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 771.39844 427.96387 772.39844 432.21387 ] /Length 549 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 552 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 771.8984 432.2139 m 771.8984 427.9639 l S endstream endobj 549 3 obj 111 endobj 552 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 557 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm62 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 777.35352 427.96387 778.35352 432.21387 ] /Length 558 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 560 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 777.8535 432.2139 m 777.8535 427.9639 l S endstream endobj 558 3 obj 111 endobj 560 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 565 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm63 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 783.30664 427.96387 784.30664 432.21387 ] /Length 567 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 570 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 783.8066 432.2139 m 783.8066 427.9639 l S endstream endobj 567 3 obj 111 endobj 570 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 572 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm64 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 789.26172 427.96387 790.26172 432.21387 ] /Length 576 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 578 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 789.7617 432.2139 m 789.7617 427.9639 l S endstream endobj 576 4 obj 111 endobj 578 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 582 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm65 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 795.21484 427.96387 796.21484 432.21387 ] /Length 583 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 587 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 795.7148 432.2139 m 795.7148 427.9639 l S endstream endobj 583 3 obj 111 endobj 587 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 591 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm66 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 801.16797 427.96387 802.16797 432.21387 ] /Length 593 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 594 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 801.668 432.2139 m 801.668 427.9639 l S endstream endobj 593 3 obj 109 endobj 594 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 599 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm67 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 414.16797 427.96387 802.16797 432.21387 ] /Length 601 3 R /Resources << /ExtGState << /R1 4 4 R /R2 22 4 R >> /XObject << /Fm1 17 4 R /Fm2 23 4 R /Fm3 47 3 R /Fm4 54 4 R /Fm5 62 4 R /Fm6 71 3 R /Fm7 81 3 R /Fm8 88 3 R /Fm9 98 3 R /Fm10 105 3 R /Fm11 114 3 R /Fm12 122 3 R /Fm13 131 3 R /Fm14 139 3 R /Fm15 149 3 R /Fm16 156 4 R /Fm17 165 3 R /Fm18 173 3 R /Fm19 182 3 R /Fm20 190 4 R /Fm21 200 3 R /Fm22 207 3 R /Fm23 215 3 R /Fm24 224 3 R /Fm25 234 3 R /Fm26 242 3 R /Fm27 250 3 R /Fm28 258 3 R /Fm29 266 3 R /Fm30 275 3 R /Fm31 284 3 R /Fm32 293 3 R /Fm33 302 3 R /Fm34 311 3 R /Fm35 319 3 R /Fm36 329 3 R /Fm37 336 3 R /Fm38 346 3 R /Fm39 353 3 R /Fm40 363 3 R /Fm41 373 3 R /Fm42 382 3 R /Fm43 390 5 R /Fm44 398 3 R /Fm45 409 3 R /Fm46 419 3 R /Fm47 429 3 R /Fm48 436 3 R /Fm49 446 3 R /Fm50 454 4 R /Fm51 463 3 R /Fm52 470 4 R /Fm53 479 3 R /Fm54 488 3 R /Fm55 497 3 R /Fm56 506 3 R /Fm57 514 3 R /Fm58 522 3 R /Fm59 530 3 R /Fm60 538 3 R /Fm61 548 3 R /Fm62 557 3 R /Fm63 565 3 R /Fm64 572 3 R /Fm65 582 3 R /Fm66 591 3 R >> >> /Group 604 3 R >> stream q /RelativeColorimetric ri /R2 gs /Fm1 Do Q q /R2 gs /Fm2 Do Q q /R2 gs /Fm3 Do Q q /R2 gs /Fm4 Do Q q /R2 gs /Fm5 Do Q q /R2 gs /Fm6 Do Q q /R2 gs /Fm7 Do Q q /R2 gs /Fm8 Do Q q /R2 gs /Fm9 Do Q q /R2 gs /Fm10 Do Q q /R2 gs /Fm11 Do Q q /R2 gs /Fm12 Do Q q /R2 gs /Fm13 Do Q q /R2 gs /Fm14 Do Q q /R2 gs /Fm15 Do Q q /R2 gs /Fm16 Do Q q /R2 gs /Fm17 Do Q q /R2 gs /Fm18 Do Q q /R2 gs /Fm19 Do Q q /R2 gs /Fm20 Do Q q /R2 gs /Fm21 Do Q q /R2 gs /Fm22 Do Q q /R2 gs /Fm23 Do Q q /R2 gs /Fm24 Do Q q /R2 gs /Fm25 Do Q q /R2 gs /Fm26 Do Q q /R2 gs /Fm27 Do Q q /R2 gs /Fm28 Do Q q /R2 gs /Fm29 Do Q q /R2 gs /Fm30 Do Q q /R2 gs /Fm31 Do Q q /R2 gs /Fm32 Do Q q /R2 gs /Fm33 Do Q q /R2 gs /Fm34 Do Q q /R2 gs /Fm35 Do Q q /R2 gs /Fm36 Do Q q /R2 gs /Fm37 Do Q q /R2 gs /Fm38 Do Q q /R2 gs /Fm39 Do Q q /R2 gs /Fm40 Do Q q /R2 gs /Fm41 Do Q q /R2 gs /Fm42 Do Q q /R2 gs /Fm43 Do Q q /R2 gs /Fm44 Do Q q /R2 gs /Fm45 Do Q q /R2 gs /Fm46 Do Q q /R2 gs /Fm47 Do Q q /R2 gs /Fm48 Do Q q /R2 gs /Fm49 Do Q q /R2 gs /Fm50 Do Q q /R2 gs /Fm51 Do Q q /R2 gs /Fm52 Do Q q /R2 gs /Fm53 Do Q q /R2 gs /Fm54 Do Q q /R2 gs /Fm55 Do Q q /R2 gs /Fm56 Do Q q /R2 gs /Fm57 Do Q q /R2 gs /Fm58 Do Q q /R2 gs /Fm59 Do Q q /R2 gs /Fm60 Do Q q /R2 gs /Fm61 Do Q q /R2 gs /Fm62 Do Q q /R2 gs /Fm63 Do Q q /R2 gs /Fm64 Do Q q /R2 gs /Fm65 Do Q q /R2 gs /Fm66 Do Q endstream endobj 601 3 obj 1336 endobj 604 3 obj << /Type /Group /S /Transparency /I false /K true >> endobj 605 3 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 609 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm68 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 416.66797 422.77637 417.66797 427.02637 ] /Length 610 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 611 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 417.168 427.0264 m 417.168 422.7764 l S endstream endobj 610 3 obj 109 endobj 611 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 614 3 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 616 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm69 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 422.62305 422.77637 423.62305 427.02637 ] /Length 620 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 621 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 423.123 427.0264 m 423.123 422.7764 l S endstream endobj 620 3 obj 109 endobj 621 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 625 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm70 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 428.57617 422.77637 429.57617 427.02637 ] /Length 627 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 630 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 429.0762 427.0264 m 429.0762 422.7764 l S endstream endobj 627 3 obj 111 endobj 630 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 633 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm71 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 434.5293 422.77637 435.5293 427.02637 ] /Length 635 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 638 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 435.0293 427.0264 m 435.0293 422.7764 l S endstream endobj 635 3 obj 111 endobj 638 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 642 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm72 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 440.48438 422.77637 441.48438 427.02637 ] /Length 644 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 645 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 440.9844 427.0264 m 440.9844 422.7764 l S endstream endobj 644 3 obj 111 endobj 645 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 650 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm73 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 446.4375 422.77637 447.4375 427.02637 ] /Length 654 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 655 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 446.9375 427.0264 m 446.9375 422.7764 l S endstream endobj 654 3 obj 111 endobj 655 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 660 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm74 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 452.39063 422.77637 453.39063 427.02637 ] /Length 661 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 662 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 452.8906 427.0264 m 452.8906 422.7764 l S endstream endobj 661 3 obj 111 endobj 662 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 667 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm75 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 458.3457 422.77637 459.3457 427.02637 ] /Length 670 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 672 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 458.8457 427.0264 m 458.8457 422.7764 l S endstream endobj 670 3 obj 111 endobj 672 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 675 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm76 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 464.29883 422.77637 465.29883 427.02637 ] /Length 678 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 680 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 464.7988 427.0264 m 464.7988 422.7764 l S endstream endobj 678 4 obj 111 endobj 680 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 684 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm77 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 470.25391 422.77637 471.25391 427.02637 ] /Length 686 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 689 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 470.7539 427.0264 m 470.7539 422.7764 l S endstream endobj 686 3 obj 111 endobj 689 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 694 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm78 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 476.20703 422.77637 477.20703 427.02637 ] /Length 695 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 699 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 476.707 427.0264 m 476.707 422.7764 l S endstream endobj 695 3 obj 109 endobj 699 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 704 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm79 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 482.16016 422.77637 483.16016 427.02637 ] /Length 705 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 706 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 482.6602 427.0264 m 482.6602 422.7764 l S endstream endobj 705 3 obj 111 endobj 706 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 711 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm80 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 488.11523 422.77637 489.11523 427.02637 ] /Length 714 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 716 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 488.6152 427.0264 m 488.6152 422.7764 l S endstream endobj 714 4 obj 111 endobj 716 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 719 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm81 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 494.06836 422.77637 495.06836 427.02637 ] /Length 722 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 723 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 494.5684 427.0264 m 494.5684 422.7764 l S endstream endobj 722 3 obj 111 endobj 723 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 726 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm82 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 500.02148 422.77637 501.02148 427.02637 ] /Length 729 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 730 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 500.5215 427.0264 m 500.5215 422.7764 l S endstream endobj 729 3 obj 111 endobj 730 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 734 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm83 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 505.97656 422.77637 506.97656 427.02637 ] /Length 736 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 738 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 506.4766 427.0264 m 506.4766 422.7764 l S endstream endobj 736 3 obj 111 endobj 738 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 742 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm84 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 511.92969 422.77637 512.92969 427.02637 ] /Length 744 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 747 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 512.4297 427.0264 m 512.4297 422.7764 l S endstream endobj 744 3 obj 111 endobj 747 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 750 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm85 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 517.88477 422.77637 518.88477 427.02637 ] /Length 753 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 754 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 518.3848 427.0264 m 518.3848 422.7764 l S endstream endobj 753 4 obj 111 endobj 754 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 759 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm86 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 523.83789 422.77637 524.83789 427.02637 ] /Length 760 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 764 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 524.3379 427.0264 m 524.3379 422.7764 l S endstream endobj 760 3 obj 111 endobj 764 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 768 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm87 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 529.79102 422.77637 530.79102 427.02637 ] /Length 770 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 771 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 530.291 427.0264 m 530.291 422.7764 l S endstream endobj 770 3 obj 109 endobj 771 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 776 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm88 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 535.74609 422.77637 536.74609 427.02637 ] /Length 778 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 781 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 536.2461 427.0264 m 536.2461 422.7764 l S endstream endobj 778 4 obj 111 endobj 781 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 786 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm89 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 541.69922 422.77637 542.69922 427.02637 ] /Length 787 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 788 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 542.1992 427.0264 m 542.1992 422.7764 l S endstream endobj 787 3 obj 111 endobj 788 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 797 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm90 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 547.65234 422.77637 548.65234 427.02637 ] /Length 798 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 799 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 548.1523 427.0264 m 548.1523 422.7764 l S endstream endobj 798 3 obj 111 endobj 799 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 804 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm91 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 553.60742 422.77637 554.60742 427.02637 ] /Length 806 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 808 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 554.1074 427.0264 m 554.1074 422.7764 l S endstream endobj 806 3 obj 111 endobj 808 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 812 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm92 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 559.56055 422.77637 560.56055 427.02637 ] /Length 815 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 817 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 560.0605 427.0264 m 560.0605 422.7764 l S endstream endobj 815 3 obj 111 endobj 817 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 821 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm93 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 565.51367 422.77637 566.51367 427.02637 ] /Length 822 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 826 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 566.0137 427.0264 m 566.0137 422.7764 l S endstream endobj 822 3 obj 111 endobj 826 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 830 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm94 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 571.46875 422.77637 572.46875 427.02637 ] /Length 832 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 833 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 571.9688 427.0264 m 571.9688 422.7764 l S endstream endobj 832 3 obj 111 endobj 833 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 838 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm95 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 577.42188 422.77637 578.42188 427.02637 ] /Length 839 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 842 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 577.9219 427.0264 m 577.9219 422.7764 l S endstream endobj 839 3 obj 111 endobj 842 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 848 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm96 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 583.37695 422.77637 584.37695 427.02637 ] /Length 850 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 851 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 583.877 427.0264 m 583.877 422.7764 l S endstream endobj 850 3 obj 109 endobj 851 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 855 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm97 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 589.33008 422.77637 590.33008 427.02637 ] /Length 858 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 860 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 589.8301 427.0264 m 589.8301 422.7764 l S endstream endobj 858 3 obj 111 endobj 860 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 865 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm98 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 595.2832 422.77637 596.2832 427.02637 ] /Length 866 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 870 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 595.7832 427.0264 m 595.7832 422.7764 l S endstream endobj 866 4 obj 111 endobj 870 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 872 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm99 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 601.23828 422.77637 602.23828 427.02637 ] /Length 874 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 877 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 601.7383 427.0264 m 601.7383 422.7764 l S endstream endobj 874 3 obj 111 endobj 877 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 882 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm100 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 607.19141 422.77637 608.19141 427.02637 ] /Length 883 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 885 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 607.6914 427.0264 m 607.6914 422.7764 l S endstream endobj 883 3 obj 111 endobj 885 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 890 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm101 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 613.14453 422.77637 614.14453 427.02637 ] /Length 891 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 894 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 613.6445 427.0264 m 613.6445 422.7764 l S endstream endobj 891 3 obj 111 endobj 894 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 899 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm102 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 619.09961 422.77637 620.09961 427.02637 ] /Length 900 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 902 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 619.5996 427.0264 m 619.5996 422.7764 l S endstream endobj 900 3 obj 111 endobj 902 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 906 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm103 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 625.05273 422.77637 626.05273 427.02637 ] /Length 910 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 911 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 625.5527 427.0264 m 625.5527 422.7764 l S endstream endobj 910 4 obj 111 endobj 911 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 915 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm104 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 631.00781 422.77637 632.00781 427.02637 ] /Length 917 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 920 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 631.5078 427.0264 m 631.5078 422.7764 l S endstream endobj 917 3 obj 111 endobj 920 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 923 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm105 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 636.96094 422.77637 637.96094 427.02637 ] /Length 925 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 928 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 637.4609 427.0264 m 637.4609 422.7764 l S endstream endobj 925 3 obj 111 endobj 928 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 933 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm106 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 642.91406 422.77637 643.91406 427.02637 ] /Length 934 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 935 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 643.4141 427.0264 m 643.4141 422.7764 l S endstream endobj 934 3 obj 111 endobj 935 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 940 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm107 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 648.86914 422.77637 649.86914 427.02637 ] /Length 944 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 945 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 649.3691 427.0264 m 649.3691 422.7764 l S endstream endobj 944 3 obj 111 endobj 945 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 950 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm108 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 654.82227 422.77637 655.82227 427.02637 ] /Length 951 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 954 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 655.3223 427.0264 m 655.3223 422.7764 l S endstream endobj 951 3 obj 111 endobj 954 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 957 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm109 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 660.77539 422.77637 661.77539 427.02637 ] /Length 961 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 962 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 661.2754 427.0264 m 661.2754 422.7764 l S endstream endobj 961 3 obj 111 endobj 962 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 966 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm110 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 666.73047 422.77637 667.73047 427.02637 ] /Length 968 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 970 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 667.2305 427.0264 m 667.2305 422.7764 l S endstream endobj 968 3 obj 111 endobj 970 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 974 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm111 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 672.68359 422.77637 673.68359 427.02637 ] /Length 978 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 979 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 673.1836 427.0264 m 673.1836 422.7764 l S endstream endobj 978 3 obj 111 endobj 979 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 984 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm112 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 678.63672 422.77637 679.63672 427.02637 ] /Length 985 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 986 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 679.1367 427.0264 m 679.1367 422.7764 l S endstream endobj 985 3 obj 111 endobj 986 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 993 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm113 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 684.5918 422.77637 685.5918 427.02637 ] /Length 994 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 996 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 685.0918 427.0264 m 685.0918 422.7764 l S endstream endobj 994 3 obj 111 endobj 996 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1001 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm114 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 690.54492 422.77637 691.54492 427.02637 ] /Length 1002 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1004 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 691.0449 427.0264 m 691.0449 422.7764 l S endstream endobj 1002 3 obj 111 endobj 1004 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1008 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm115 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 696.5 422.77637 697.5 427.02637 ] /Length 1012 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1013 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 697 427.0264 m 697 422.7764 l S endstream endobj 1012 3 obj 101 endobj 1013 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1018 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm116 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 702.45313 422.77637 703.45313 427.02637 ] /Length 1019 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1023 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 702.9531 427.0264 m 702.9531 422.7764 l S endstream endobj 1019 4 obj 111 endobj 1023 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1028 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm117 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 708.40625 422.77637 709.40625 427.02637 ] /Length 1029 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1030 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 708.9063 427.0264 m 708.9063 422.7764 l S endstream endobj 1029 3 obj 111 endobj 1030 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1035 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm118 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 714.36133 422.77637 715.36133 427.02637 ] /Length 1038 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1040 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 714.8613 427.0264 m 714.8613 422.7764 l S endstream endobj 1038 4 obj 111 endobj 1040 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1045 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 720.31445 422.77637 721.31445 427.02637 ] /Length 1046 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1048 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 720.8145 427.0264 m 720.8145 422.7764 l S endstream endobj 1046 3 obj 111 endobj 1048 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1052 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm119 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 726.26758 422.77637 727.26758 427.02637 ] /Length 1056 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1057 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 726.7676 427.0264 m 726.7676 422.7764 l S endstream endobj 1056 3 obj 111 endobj 1057 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1062 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm120 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 732.22266 422.77637 733.22266 427.02637 ] /Length 1063 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1066 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 732.7227 427.0264 m 732.7227 422.7764 l S endstream endobj 1063 4 obj 111 endobj 1066 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1069 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm121 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 738.17578 422.77637 739.17578 427.02637 ] /Length 1072 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1074 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 738.6758 427.0264 m 738.6758 422.7764 l S endstream endobj 1072 3 obj 111 endobj 1074 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1078 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm122 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 744.13086 422.77637 745.13086 427.02637 ] /Length 1080 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1082 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 744.6309 427.0264 m 744.6309 422.7764 l S endstream endobj 1080 3 obj 111 endobj 1082 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1087 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm123 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 750.08398 422.77637 751.08398 427.02637 ] /Length 1090 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1091 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 750.584 427.0264 m 750.584 422.7764 l S endstream endobj 1090 3 obj 109 endobj 1091 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1096 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm124 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 756.03711 422.77637 757.03711 427.02637 ] /Length 1097 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1098 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 756.5371 427.0264 m 756.5371 422.7764 l S endstream endobj 1097 3 obj 111 endobj 1098 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1103 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm125 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 761.99219 422.77637 762.99219 427.02637 ] /Length 1106 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1108 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 762.4922 427.0264 m 762.4922 422.7764 l S endstream endobj 1106 3 obj 111 endobj 1108 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1112 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm126 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 767.94531 422.77637 768.94531 427.02637 ] /Length 1114 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1117 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 768.4453 427.0264 m 768.4453 422.7764 l S endstream endobj 1114 4 obj 111 endobj 1117 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1120 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm127 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 773.89844 422.77637 774.89844 427.02637 ] /Length 1122 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1125 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 774.3984 427.0264 m 774.3984 422.7764 l S endstream endobj 1122 3 obj 111 endobj 1125 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1128 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm128 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 779.85352 422.77637 780.85352 427.02637 ] /Length 1130 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1132 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 780.3535 427.0264 m 780.3535 422.7764 l S endstream endobj 1130 3 obj 111 endobj 1132 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1137 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm129 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 785.80664 422.77637 786.80664 427.02637 ] /Length 1138 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1142 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 786.3066 427.0264 m 786.3066 422.7764 l S endstream endobj 1138 4 obj 111 endobj 1142 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1146 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm130 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 791.76172 422.77637 792.76172 427.02637 ] /Length 1148 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1149 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 792.2617 427.0264 m 792.2617 422.7764 l S endstream endobj 1148 3 obj 111 endobj 1149 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1154 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm131 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 797.71484 422.77637 798.71484 427.02637 ] /Length 1157 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1158 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 798.2148 427.0264 m 798.2148 422.7764 l S endstream endobj 1157 3 obj 111 endobj 1158 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1162 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm132 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 803.66797 422.77637 804.66797 427.02637 ] /Length 1165 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1166 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 804.168 427.0264 m 804.168 422.7764 l S endstream endobj 1165 3 obj 109 endobj 1166 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1172 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm133 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 416.66797 422.77637 804.66797 427.02637 ] /Length 1176 3 R /Resources << /ExtGState << /R1 4 4 R /R4 614 3 R >> /XObject << /Fm68 609 3 R /Fm69 616 4 R /Fm70 625 3 R /Fm71 633 3 R /Fm72 642 3 R /Fm73 650 4 R /Fm74 660 3 R /Fm75 667 3 R /Fm76 675 3 R /Fm77 684 3 R /Fm78 694 3 R /Fm79 704 3 R /Fm80 711 3 R /Fm81 719 3 R /Fm82 726 3 R /Fm83 734 3 R /Fm84 742 4 R /Fm85 750 3 R /Fm86 759 3 R /Fm87 768 3 R /Fm88 776 3 R /Fm89 786 3 R /Fm90 797 3 R /Fm91 804 3 R /Fm92 812 3 R /Fm93 821 3 R /Fm94 830 3 R /Fm95 838 3 R /Fm96 848 3 R /Fm97 855 3 R /Fm98 865 3 R /Fm99 872 3 R /Fm100 882 3 R /Fm101 890 3 R /Fm102 899 3 R /Fm103 906 4 R /Fm104 915 3 R /Fm105 923 3 R /Fm106 933 3 R /Fm107 940 3 R /Fm108 950 3 R /Fm109 957 3 R /Fm110 966 3 R /Fm111 974 4 R /Fm112 984 3 R /Fm113 993 3 R /Fm114 1001 3 R /Fm115 1008 3 R /Fm116 1018 3 R /Fm117 1028 3 R /Fm118 1035 3 R /Fm58 1045 3 R /Fm119 1052 3 R /Fm120 1062 3 R /Fm121 1069 3 R /Fm122 1078 3 R /Fm123 1087 3 R /Fm124 1096 3 R /Fm125 1103 4 R /Fm126 1112 3 R /Fm127 1120 3 R /Fm128 1128 3 R /Fm129 1137 3 R /Fm130 1146 3 R /Fm131 1154 4 R /Fm132 1162 3 R >> >> /Group 1177 3 R >> stream q /RelativeColorimetric ri /R4 gs /Fm68 Do Q q /R4 gs /Fm69 Do Q q /R4 gs /Fm70 Do Q q /R4 gs /Fm71 Do Q q /R4 gs /Fm72 Do Q q /R4 gs /Fm73 Do Q q /R4 gs /Fm74 Do Q q /R4 gs /Fm75 Do Q q /R4 gs /Fm76 Do Q q /R4 gs /Fm77 Do Q q /R4 gs /Fm78 Do Q q /R4 gs /Fm79 Do Q q /R4 gs /Fm80 Do Q q /R4 gs /Fm81 Do Q q /R4 gs /Fm82 Do Q q /R4 gs /Fm83 Do Q q /R4 gs /Fm84 Do Q q /R4 gs /Fm85 Do Q q /R4 gs /Fm86 Do Q q /R4 gs /Fm87 Do Q q /R4 gs /Fm88 Do Q q /R4 gs /Fm89 Do Q q /R4 gs /Fm90 Do Q q /R4 gs /Fm91 Do Q q /R4 gs /Fm92 Do Q q /R4 gs /Fm93 Do Q q /R4 gs /Fm94 Do Q q /R4 gs /Fm95 Do Q q /R4 gs /Fm96 Do Q q /R4 gs /Fm97 Do Q q /R4 gs /Fm98 Do Q q /R4 gs /Fm99 Do Q q /R4 gs /Fm100 Do Q q /R4 gs /Fm101 Do Q q /R4 gs /Fm102 Do Q q /R4 gs /Fm103 Do Q q /R4 gs /Fm104 Do Q q /R4 gs /Fm105 Do Q q /R4 gs /Fm106 Do Q q /R4 gs /Fm107 Do Q q /R4 gs /Fm108 Do Q q /R4 gs /Fm109 Do Q q /R4 gs /Fm110 Do Q q /R4 gs /Fm111 Do Q q /R4 gs /Fm112 Do Q q /R4 gs /Fm113 Do Q q /R4 gs /Fm114 Do Q q /R4 gs /Fm115 Do Q q /R4 gs /Fm116 Do Q q /R4 gs /Fm117 Do Q q /R4 gs /Fm118 Do Q q /R4 gs /Fm58 Do Q q /R4 gs /Fm119 Do Q q /R4 gs /Fm120 Do Q q /R4 gs /Fm121 Do Q q /R4 gs /Fm122 Do Q q /R4 gs /Fm123 Do Q q /R4 gs /Fm124 Do Q q /R4 gs /Fm125 Do Q q /R4 gs /Fm126 Do Q q /R4 gs /Fm127 Do Q q /R4 gs /Fm128 Do Q q /R4 gs /Fm129 Do Q q /R4 gs /Fm130 Do Q q /R4 gs /Fm131 Do Q q /R4 gs /Fm132 Do Q endstream endobj 1176 3 obj 1378 endobj 1177 3 obj << /Type /Group /S /Transparency /I false /K true >> endobj 1182 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm134 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 413.66797 417.27637 414.66797 421.52637 ] /Length 1183 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1187 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 414.168 421.5264 m 414.168 417.2764 l S endstream endobj 1183 4 obj 109 endobj 1187 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1188 3 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 1190 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 419.62305 417.27637 420.62305 421.52637 ] /Length 1192 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1194 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 420.123 421.5264 m 420.123 417.2764 l S endstream endobj 1192 3 obj 109 endobj 1194 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1198 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 425.57617 417.27637 426.57617 421.52637 ] /Length 1200 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1202 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 426.0762 421.5264 m 426.0762 417.2764 l S endstream endobj 1200 3 obj 111 endobj 1202 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1207 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 431.5293 417.27637 432.5293 421.52637 ] /Length 1210 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1211 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 432.0293 421.5264 m 432.0293 417.2764 l S endstream endobj 1210 3 obj 111 endobj 1211 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1216 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm135 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 437.48438 417.27637 438.48438 421.52637 ] /Length 1217 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1221 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 437.9844 421.5264 m 437.9844 417.2764 l S endstream endobj 1217 3 obj 111 endobj 1221 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1223 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm136 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 443.4375 417.27637 444.4375 421.52637 ] /Length 1227 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1228 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 443.9375 421.5264 m 443.9375 417.2764 l S endstream endobj 1227 3 obj 111 endobj 1228 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1232 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm137 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 449.39063 417.27637 450.39063 421.52637 ] /Length 1234 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1238 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 449.8906 421.5264 m 449.8906 417.2764 l S endstream endobj 1234 4 obj 111 endobj 1238 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1241 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm138 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 455.3457 417.27637 456.3457 421.52637 ] /Length 1242 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1245 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 455.8457 421.5264 m 455.8457 417.2764 l S endstream endobj 1242 3 obj 111 endobj 1245 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1250 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm139 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 461.29883 417.27637 462.29883 421.52637 ] /Length 1251 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1254 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 461.7988 421.5264 m 461.7988 417.2764 l S endstream endobj 1251 3 obj 111 endobj 1254 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1258 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm140 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 467.25391 417.27637 468.25391 421.52637 ] /Length 1261 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1262 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 467.7539 421.5264 m 467.7539 417.2764 l S endstream endobj 1261 3 obj 111 endobj 1262 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1267 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm141 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 473.20703 417.27637 474.20703 421.52637 ] /Length 1270 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1271 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 473.707 421.5264 m 473.707 417.2764 l S endstream endobj 1270 3 obj 109 endobj 1271 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1274 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm142 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 479.16016 417.27637 480.16016 421.52637 ] /Length 1278 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1279 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 479.6602 421.5264 m 479.6602 417.2764 l S endstream endobj 1278 3 obj 111 endobj 1279 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1284 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm143 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 485.11523 417.27637 486.11523 421.52637 ] /Length 1285 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1289 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 485.6152 421.5264 m 485.6152 417.2764 l S endstream endobj 1285 3 obj 111 endobj 1289 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1291 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 491.06836 417.27637 492.06836 421.52637 ] /Length 1294 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1296 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 491.5684 421.5264 m 491.5684 417.2764 l S endstream endobj 1294 3 obj 111 endobj 1296 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1301 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm144 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 497.02148 417.27637 498.02148 421.52637 ] /Length 1302 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1305 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 497.5215 421.5264 m 497.5215 417.2764 l S endstream endobj 1302 3 obj 111 endobj 1305 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1310 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm145 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 502.97656 417.27637 503.97656 421.52637 ] /Length 1311 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1313 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 503.4766 421.5264 m 503.4766 417.2764 l S endstream endobj 1311 3 obj 111 endobj 1313 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1318 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm146 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 508.92969 417.27637 509.92969 421.52637 ] /Length 1320 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1322 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 509.4297 421.5264 m 509.4297 417.2764 l S endstream endobj 1320 3 obj 111 endobj 1322 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1325 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm147 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 514.88477 417.27637 515.88477 421.52637 ] /Length 1329 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1330 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 515.3848 421.5264 m 515.3848 417.2764 l S endstream endobj 1329 3 obj 111 endobj 1330 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1335 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 520.83789 417.27637 521.83789 421.52637 ] /Length 1336 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1340 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 521.3379 421.5264 m 521.3379 417.2764 l S endstream endobj 1336 3 obj 111 endobj 1340 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1342 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm148 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 526.79102 417.27637 527.79102 421.52637 ] /Length 1345 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1347 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 527.291 421.5264 m 527.291 417.2764 l S endstream endobj 1345 3 obj 109 endobj 1347 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1352 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm149 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 532.74609 417.27637 533.74609 421.52637 ] /Length 1354 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1357 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 533.2461 421.5264 m 533.2461 417.2764 l S endstream endobj 1354 3 obj 111 endobj 1357 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1362 4 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm150 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 538.69922 417.27637 539.69922 421.52637 ] /Length 1364 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1366 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 539.1992 421.5264 m 539.1992 417.2764 l S endstream endobj 1364 3 obj 111 endobj 1366 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1369 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm151 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 544.65234 417.27637 545.65234 421.52637 ] /Length 1373 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1374 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 545.1523 421.5264 m 545.1523 417.2764 l S endstream endobj 1373 3 obj 111 endobj 1374 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1379 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm152 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 550.60742 417.27637 551.60742 421.52637 ] /Length 1380 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1383 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 551.1074 421.5264 m 551.1074 417.2764 l S endstream endobj 1380 3 obj 111 endobj 1383 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1386 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm153 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 556.56055 417.27637 557.56055 421.52637 ] /Length 1387 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1388 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 557.0605 421.5264 m 557.0605 417.2764 l S endstream endobj 1387 3 obj 111 endobj 1388 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1390 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm154 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 562.51367 417.27637 563.51367 421.52637 ] /Length 1392 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1394 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 563.0137 421.5264 m 563.0137 417.2764 l S endstream endobj 1392 2 obj 111 endobj 1394 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1397 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm155 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 568.46875 417.27637 569.46875 421.52637 ] /Length 1398 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1399 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 568.9688 421.5264 m 568.9688 417.2764 l S endstream endobj 1398 2 obj 111 endobj 1399 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1402 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm156 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 574.42188 417.27637 575.42188 421.52637 ] /Length 1403 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1404 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 574.9219 421.5264 m 574.9219 417.2764 l S endstream endobj 1403 2 obj 111 endobj 1404 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1407 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm157 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 580.37695 417.27637 581.37695 421.52637 ] /Length 1408 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1410 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 580.877 421.5264 m 580.877 417.2764 l S endstream endobj 1408 2 obj 109 endobj 1410 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1412 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm158 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 586.33008 417.27637 587.33008 421.52637 ] /Length 1414 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1415 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 586.8301 421.5264 m 586.8301 417.2764 l S endstream endobj 1414 2 obj 111 endobj 1415 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1419 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm159 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 592.2832 417.27637 593.2832 421.52637 ] /Length 1420 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1421 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 592.7832 421.5264 m 592.7832 417.2764 l S endstream endobj 1420 2 obj 111 endobj 1421 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1423 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm160 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 598.23828 417.27637 599.23828 421.52637 ] /Length 1424 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1427 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 598.7383 421.5264 m 598.7383 417.2764 l S endstream endobj 1424 2 obj 111 endobj 1427 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1430 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm161 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 604.19141 417.27637 605.19141 421.52637 ] /Length 1431 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1432 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 604.6914 421.5264 m 604.6914 417.2764 l S endstream endobj 1431 3 obj 111 endobj 1432 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1435 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm162 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 610.14453 417.27637 611.14453 421.52637 ] /Length 1437 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1438 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 610.6445 421.5264 m 610.6445 417.2764 l S endstream endobj 1437 3 obj 111 endobj 1438 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1441 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm163 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 616.09961 417.27637 617.09961 421.52637 ] /Length 1442 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1443 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 616.5996 421.5264 m 616.5996 417.2764 l S endstream endobj 1442 2 obj 111 endobj 1443 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1447 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm164 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 622.05273 417.27637 623.05273 421.52637 ] /Length 1448 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1450 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 622.5527 421.5264 m 622.5527 417.2764 l S endstream endobj 1448 2 obj 111 endobj 1450 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1452 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm165 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 628.00781 417.27637 629.00781 421.52637 ] /Length 1453 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1454 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 628.5078 421.5264 m 628.5078 417.2764 l S endstream endobj 1453 3 obj 111 endobj 1454 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1458 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm166 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 633.96094 417.27637 634.96094 421.52637 ] /Length 1459 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1461 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 634.4609 421.5264 m 634.4609 417.2764 l S endstream endobj 1459 2 obj 111 endobj 1461 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1463 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm167 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 639.91406 417.27637 640.91406 421.52637 ] /Length 1464 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1467 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 640.4141 421.5264 m 640.4141 417.2764 l S endstream endobj 1464 2 obj 111 endobj 1467 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1469 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm168 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 645.86914 417.27637 646.86914 421.52637 ] /Length 1471 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1472 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 646.3691 421.5264 m 646.3691 417.2764 l S endstream endobj 1471 2 obj 111 endobj 1472 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1474 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm169 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 651.82227 417.27637 652.82227 421.52637 ] /Length 1476 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1478 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 652.3223 421.5264 m 652.3223 417.2764 l S endstream endobj 1476 2 obj 111 endobj 1478 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1481 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm170 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 657.77539 417.27637 658.77539 421.52637 ] /Length 1482 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1483 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 658.2754 421.5264 m 658.2754 417.2764 l S endstream endobj 1482 2 obj 111 endobj 1483 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1486 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm171 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 663.73047 417.27637 664.73047 421.52637 ] /Length 1487 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1488 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 664.2305 421.5264 m 664.2305 417.2764 l S endstream endobj 1487 2 obj 111 endobj 1488 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1492 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm172 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 669.68359 417.27637 670.68359 421.52637 ] /Length 1493 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1494 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 670.1836 421.5264 m 670.1836 417.2764 l S endstream endobj 1493 3 obj 111 endobj 1494 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1498 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm173 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 675.63672 417.27637 676.63672 421.52637 ] /Length 1499 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1501 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 676.1367 421.5264 m 676.1367 417.2764 l S endstream endobj 1499 2 obj 111 endobj 1501 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1503 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm174 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 681.5918 417.27637 682.5918 421.52637 ] /Length 1504 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1506 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 682.0918 421.5264 m 682.0918 417.2764 l S endstream endobj 1504 3 obj 111 endobj 1506 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1508 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm175 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 687.54492 417.27637 688.54492 421.52637 ] /Length 1511 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1512 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 688.0449 421.5264 m 688.0449 417.2764 l S endstream endobj 1511 2 obj 111 endobj 1512 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1514 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm176 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 693.5 417.27637 694.5 421.52637 ] /Length 1516 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1517 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 694 421.5264 m 694 417.2764 l S endstream endobj 1516 2 obj 101 endobj 1517 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1520 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm177 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 699.45313 417.27637 700.45313 421.52637 ] /Length 1522 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1523 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 699.9531 421.5264 m 699.9531 417.2764 l S endstream endobj 1522 2 obj 111 endobj 1523 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1526 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm178 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 705.40625 417.27637 706.40625 421.52637 ] /Length 1527 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1528 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 705.9063 421.5264 m 705.9063 417.2764 l S endstream endobj 1527 2 obj 111 endobj 1528 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1532 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm179 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 711.36133 417.27637 712.36133 421.52637 ] /Length 1533 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1534 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 711.8613 421.5264 m 711.8613 417.2764 l S endstream endobj 1533 3 obj 111 endobj 1534 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1536 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm180 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 717.31445 417.27637 718.31445 421.52637 ] /Length 1538 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1540 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 717.8145 421.5264 m 717.8145 417.2764 l S endstream endobj 1538 2 obj 111 endobj 1540 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1543 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm181 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 723.26758 417.27637 724.26758 421.52637 ] /Length 1544 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1546 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 723.7676 421.5264 m 723.7676 417.2764 l S endstream endobj 1544 3 obj 111 endobj 1546 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1548 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm182 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 729.22266 417.27637 730.22266 421.52637 ] /Length 1550 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1551 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 729.7227 421.5264 m 729.7227 417.2764 l S endstream endobj 1550 2 obj 111 endobj 1551 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1554 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm183 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 735.17578 417.27637 736.17578 421.52637 ] /Length 1555 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1556 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 735.6758 421.5264 m 735.6758 417.2764 l S endstream endobj 1555 2 obj 111 endobj 1556 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1560 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm184 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 741.13086 417.27637 742.13086 421.52637 ] /Length 1562 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1563 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 741.6309 421.5264 m 741.6309 417.2764 l S endstream endobj 1562 2 obj 111 endobj 1563 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1565 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm185 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 747.08398 417.27637 748.08398 421.52637 ] /Length 1566 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1567 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 747.584 421.5264 m 747.584 417.2764 l S endstream endobj 1566 2 obj 109 endobj 1567 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1571 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm186 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 753.03711 417.27637 754.03711 421.52637 ] /Length 1572 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1574 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 753.5371 421.5264 m 753.5371 417.2764 l S endstream endobj 1572 2 obj 111 endobj 1574 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1576 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm187 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 758.99219 417.27637 759.99219 421.52637 ] /Length 1578 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1580 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 759.4922 421.5264 m 759.4922 417.2764 l S endstream endobj 1578 2 obj 111 endobj 1580 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1582 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm188 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 764.94531 417.27637 765.94531 421.52637 ] /Length 1584 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1585 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 765.4453 421.5264 m 765.4453 417.2764 l S endstream endobj 1584 2 obj 111 endobj 1585 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1587 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm189 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 770.89844 417.27637 771.89844 421.52637 ] /Length 1588 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1590 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 771.3984 421.5264 m 771.3984 417.2764 l S endstream endobj 1588 2 obj 111 endobj 1590 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1594 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm190 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 776.85352 417.27637 777.85352 421.52637 ] /Length 1595 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1596 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 777.3535 421.5264 m 777.3535 417.2764 l S endstream endobj 1595 2 obj 111 endobj 1596 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1599 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm191 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 782.80664 417.27637 783.80664 421.52637 ] /Length 1600 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1601 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 783.3066 421.5264 m 783.3066 417.2764 l S endstream endobj 1600 2 obj 111 endobj 1601 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1604 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm192 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 788.76172 417.27637 789.76172 421.52637 ] /Length 1606 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1607 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 789.2617 421.5264 m 789.2617 417.2764 l S endstream endobj 1606 2 obj 111 endobj 1607 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1610 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm193 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 794.71484 417.27637 795.71484 421.52637 ] /Length 1611 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1614 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 795.2148 421.5264 m 795.2148 417.2764 l S endstream endobj 1611 2 obj 111 endobj 1614 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1616 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm194 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 800.66797 417.27637 801.66797 421.52637 ] /Length 1617 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1618 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 801.168 421.5264 m 801.168 417.2764 l S endstream endobj 1617 4 obj 109 endobj 1618 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1620 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm195 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 413.66797 417.27637 801.66797 421.52637 ] /Length 1623 2 R /Resources << /ExtGState << /R1 4 4 R /R5 1188 3 R >> /XObject << /Fm134 1182 3 R /Fm75 1190 3 R /Fm76 1198 3 R /Fm77 1207 3 R /Fm135 1216 3 R /Fm136 1223 3 R /Fm137 1232 3 R /Fm138 1241 3 R /Fm139 1250 4 R /Fm140 1258 3 R /Fm141 1267 3 R /Fm142 1274 3 R /Fm143 1284 3 R /Fm87 1291 3 R /Fm144 1301 3 R /Fm145 1310 3 R /Fm146 1318 4 R /Fm147 1325 3 R /Fm92 1335 3 R /Fm148 1342 3 R /Fm149 1352 3 R /Fm150 1362 4 R /Fm151 1369 3 R /Fm152 1379 3 R /Fm153 1386 2 R /Fm154 1390 2 R /Fm155 1397 3 R /Fm156 1402 2 R /Fm157 1407 2 R /Fm158 1412 2 R /Fm159 1419 2 R /Fm160 1423 2 R /Fm161 1430 2 R /Fm162 1435 2 R /Fm163 1441 3 R /Fm164 1447 2 R /Fm165 1452 2 R /Fm166 1458 2 R /Fm167 1463 2 R /Fm168 1469 3 R /Fm169 1474 2 R /Fm170 1481 3 R /Fm171 1486 2 R /Fm172 1492 2 R /Fm173 1498 2 R /Fm174 1503 2 R /Fm175 1508 2 R /Fm176 1514 2 R /Fm177 1520 2 R /Fm178 1526 2 R /Fm179 1532 2 R /Fm180 1536 2 R /Fm181 1543 2 R /Fm182 1548 2 R /Fm183 1554 3 R /Fm184 1560 2 R /Fm185 1565 3 R /Fm186 1571 2 R /Fm187 1576 2 R /Fm188 1582 2 R /Fm189 1587 3 R /Fm190 1594 2 R /Fm191 1599 2 R /Fm192 1604 2 R /Fm193 1610 2 R /Fm194 1616 2 R >> >> /Group 1624 2 R >> stream q /RelativeColorimetric ri /R5 gs /Fm134 Do Q q /R5 gs /Fm75 Do Q q /R5 gs /Fm76 Do Q q /R5 gs /Fm77 Do Q q /R5 gs /Fm135 Do Q q /R5 gs /Fm136 Do Q q /R5 gs /Fm137 Do Q q /R5 gs /Fm138 Do Q q /R5 gs /Fm139 Do Q q /R5 gs /Fm140 Do Q q /R5 gs /Fm141 Do Q q /R5 gs /Fm142 Do Q q /R5 gs /Fm143 Do Q q /R5 gs /Fm87 Do Q q /R5 gs /Fm144 Do Q q /R5 gs /Fm145 Do Q q /R5 gs /Fm146 Do Q q /R5 gs /Fm147 Do Q q /R5 gs /Fm92 Do Q q /R5 gs /Fm148 Do Q q /R5 gs /Fm149 Do Q q /R5 gs /Fm150 Do Q q /R5 gs /Fm151 Do Q q /R5 gs /Fm152 Do Q q /R5 gs /Fm153 Do Q q /R5 gs /Fm154 Do Q q /R5 gs /Fm155 Do Q q /R5 gs /Fm156 Do Q q /R5 gs /Fm157 Do Q q /R5 gs /Fm158 Do Q q /R5 gs /Fm159 Do Q q /R5 gs /Fm160 Do Q q /R5 gs /Fm161 Do Q q /R5 gs /Fm162 Do Q q /R5 gs /Fm163 Do Q q /R5 gs /Fm164 Do Q q /R5 gs /Fm165 Do Q q /R5 gs /Fm166 Do Q q /R5 gs /Fm167 Do Q q /R5 gs /Fm168 Do Q q /R5 gs /Fm169 Do Q q /R5 gs /Fm170 Do Q q /R5 gs /Fm171 Do Q q /R5 gs /Fm172 Do Q q /R5 gs /Fm173 Do Q q /R5 gs /Fm174 Do Q q /R5 gs /Fm175 Do Q q /R5 gs /Fm176 Do Q q /R5 gs /Fm177 Do Q q /R5 gs /Fm178 Do Q q /R5 gs /Fm179 Do Q q /R5 gs /Fm180 Do Q q /R5 gs /Fm181 Do Q q /R5 gs /Fm182 Do Q q /R5 gs /Fm183 Do Q q /R5 gs /Fm184 Do Q q /R5 gs /Fm185 Do Q q /R5 gs /Fm186 Do Q q /R5 gs /Fm187 Do Q q /R5 gs /Fm188 Do Q q /R5 gs /Fm189 Do Q q /R5 gs /Fm190 Do Q q /R5 gs /Fm191 Do Q q /R5 gs /Fm192 Do Q q /R5 gs /Fm193 Do Q q /R5 gs /Fm194 Do Q endstream endobj 1623 2 obj 1406 endobj 1624 2 obj << /Type /Group /S /Transparency /I false /K true >> endobj 1627 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm196 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 416.16797 412.77637 417.16797 417.02637 ] /Length 1628 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1630 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 416.668 417.0264 m 416.668 412.7764 l S endstream endobj 1628 2 obj 109 endobj 1630 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1631 2 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 1633 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm197 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 422.12305 412.77637 423.12305 417.02637 ] /Length 1634 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1635 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 422.623 417.0264 m 422.623 412.7764 l S endstream endobj 1634 2 obj 109 endobj 1635 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1638 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm198 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 428.07617 412.77637 429.07617 417.02637 ] /Length 1639 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1640 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 428.5762 417.0264 m 428.5762 412.7764 l S endstream endobj 1639 2 obj 111 endobj 1640 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1644 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm199 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 434.0293 412.77637 435.0293 417.02637 ] /Length 1646 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1647 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 434.5293 417.0264 m 434.5293 412.7764 l S endstream endobj 1646 2 obj 111 endobj 1647 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1649 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm200 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 439.98438 412.77637 440.98438 417.02637 ] /Length 1650 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1652 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 440.4844 417.0264 m 440.4844 412.7764 l S endstream endobj 1650 2 obj 111 endobj 1652 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1655 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm201 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 445.9375 412.77637 446.9375 417.02637 ] /Length 1657 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1658 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 446.4375 417.0264 m 446.4375 412.7764 l S endstream endobj 1657 3 obj 111 endobj 1658 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1660 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm202 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 451.89063 412.77637 452.89063 417.02637 ] /Length 1663 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1664 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 452.3906 417.0264 m 452.3906 412.7764 l S endstream endobj 1663 2 obj 111 endobj 1664 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1667 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm203 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 457.8457 412.77637 458.8457 417.02637 ] /Length 1668 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1669 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 458.3457 417.0264 m 458.3457 412.7764 l S endstream endobj 1668 2 obj 111 endobj 1669 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1672 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm204 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 463.79883 412.77637 464.79883 417.02637 ] /Length 1674 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1675 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 464.2988 417.0264 m 464.2988 412.7764 l S endstream endobj 1674 2 obj 111 endobj 1675 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1678 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm205 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 469.75391 412.77637 470.75391 417.02637 ] /Length 1679 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1680 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 470.2539 417.0264 m 470.2539 412.7764 l S endstream endobj 1679 2 obj 111 endobj 1680 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1683 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm206 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 475.70703 412.77637 476.70703 417.02637 ] /Length 1684 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1687 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 476.207 417.0264 m 476.207 412.7764 l S endstream endobj 1684 2 obj 109 endobj 1687 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1690 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm207 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 481.66016 412.77637 482.66016 417.02637 ] /Length 1692 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1694 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 482.1602 417.0264 m 482.1602 412.7764 l S endstream endobj 1692 2 obj 111 endobj 1694 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1697 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm208 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 487.61523 412.77637 488.61523 417.02637 ] /Length 1698 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1699 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 488.1152 417.0264 m 488.1152 412.7764 l S endstream endobj 1698 2 obj 111 endobj 1699 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1702 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm209 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 493.56836 412.77637 494.56836 417.02637 ] /Length 1703 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1704 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 494.0684 417.0264 m 494.0684 412.7764 l S endstream endobj 1703 2 obj 111 endobj 1704 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1708 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm210 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 499.52148 412.77637 500.52148 417.02637 ] /Length 1709 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1710 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 500.0215 417.0264 m 500.0215 412.7764 l S endstream endobj 1709 3 obj 111 endobj 1710 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1713 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 505.47656 412.77637 506.47656 417.02637 ] /Length 1714 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1716 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 505.9766 417.0264 m 505.9766 412.7764 l S endstream endobj 1714 2 obj 111 endobj 1716 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1719 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm211 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 511.42969 412.77637 512.42969 417.02637 ] /Length 1720 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1722 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 511.9297 417.0264 m 511.9297 412.7764 l S endstream endobj 1720 3 obj 111 endobj 1722 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1724 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm212 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 517.38477 412.77637 518.38477 417.02637 ] /Length 1727 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1728 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 517.8848 417.0264 m 517.8848 412.7764 l S endstream endobj 1727 2 obj 111 endobj 1728 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1730 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm213 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 523.33789 412.77637 524.33789 417.02637 ] /Length 1731 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1732 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 523.8379 417.0264 m 523.8379 412.7764 l S endstream endobj 1731 2 obj 111 endobj 1732 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1734 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm214 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 529.29102 412.77637 530.29102 417.02637 ] /Length 1736 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1738 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 529.791 417.0264 m 529.791 412.7764 l S endstream endobj 1736 2 obj 109 endobj 1738 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1741 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm215 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 535.24609 412.77637 536.24609 417.02637 ] /Length 1742 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1743 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 535.7461 417.0264 m 535.7461 412.7764 l S endstream endobj 1742 2 obj 111 endobj 1743 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1746 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm216 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 541.19922 412.77637 542.19922 417.02637 ] /Length 1747 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1748 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 541.6992 417.0264 m 541.6992 412.7764 l S endstream endobj 1747 2 obj 111 endobj 1748 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1752 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm217 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 547.15234 412.77637 548.15234 417.02637 ] /Length 1753 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1754 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 547.6523 417.0264 m 547.6523 412.7764 l S endstream endobj 1753 3 obj 111 endobj 1754 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1758 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm218 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 553.10742 412.77637 554.10742 417.02637 ] /Length 1759 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1761 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 553.6074 417.0264 m 553.6074 412.7764 l S endstream endobj 1759 2 obj 111 endobj 1761 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1763 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm219 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 559.06055 412.77637 560.06055 417.02637 ] /Length 1764 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1766 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 559.5605 417.0264 m 559.5605 412.7764 l S endstream endobj 1764 3 obj 111 endobj 1766 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1768 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm220 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 565.01367 412.77637 566.01367 417.02637 ] /Length 1771 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1772 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 565.5137 417.0264 m 565.5137 412.7764 l S endstream endobj 1771 2 obj 111 endobj 1772 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1774 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm221 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 570.96875 412.77637 571.96875 417.02637 ] /Length 1776 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1777 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 571.4688 417.0264 m 571.4688 412.7764 l S endstream endobj 1776 2 obj 111 endobj 1777 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1780 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm222 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 576.92188 412.77637 577.92188 417.02637 ] /Length 1782 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1783 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 577.4219 417.0264 m 577.4219 412.7764 l S endstream endobj 1782 2 obj 111 endobj 1783 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1786 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm223 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 582.87695 412.77637 583.87695 417.02637 ] /Length 1787 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1788 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 583.377 417.0264 m 583.377 412.7764 l S endstream endobj 1787 2 obj 109 endobj 1788 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1792 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm224 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 588.83008 412.77637 589.83008 417.02637 ] /Length 1793 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1794 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 589.3301 417.0264 m 589.3301 412.7764 l S endstream endobj 1793 3 obj 111 endobj 1794 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1796 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm225 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 594.7832 412.77637 595.7832 417.02637 ] /Length 1798 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1800 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 595.2832 417.0264 m 595.2832 412.7764 l S endstream endobj 1798 2 obj 111 endobj 1800 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1803 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm226 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 600.73828 412.77637 601.73828 417.02637 ] /Length 1804 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1806 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 601.2383 417.0264 m 601.2383 412.7764 l S endstream endobj 1804 3 obj 111 endobj 1806 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1808 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm227 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 606.69141 412.77637 607.69141 417.02637 ] /Length 1810 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1811 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 607.1914 417.0264 m 607.1914 412.7764 l S endstream endobj 1810 2 obj 111 endobj 1811 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1814 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 612.64453 412.77637 613.64453 417.02637 ] /Length 1815 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1816 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 613.1445 417.0264 m 613.1445 412.7764 l S endstream endobj 1815 2 obj 111 endobj 1816 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1820 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm228 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 618.59961 412.77637 619.59961 417.02637 ] /Length 1822 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1823 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 619.0996 417.0264 m 619.0996 412.7764 l S endstream endobj 1822 2 obj 111 endobj 1823 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1825 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm229 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 624.55273 412.77637 625.55273 417.02637 ] /Length 1826 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1827 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 625.0527 417.0264 m 625.0527 412.7764 l S endstream endobj 1826 2 obj 111 endobj 1827 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1831 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm230 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 630.50781 412.77637 631.50781 417.02637 ] /Length 1832 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1834 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 631.0078 417.0264 m 631.0078 412.7764 l S endstream endobj 1832 2 obj 111 endobj 1834 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1836 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm231 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 636.46094 412.77637 637.46094 417.02637 ] /Length 1838 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1840 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 636.9609 417.0264 m 636.9609 412.7764 l S endstream endobj 1838 2 obj 111 endobj 1840 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1842 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm232 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 642.41406 412.77637 643.41406 417.02637 ] /Length 1844 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1845 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 642.9141 417.0264 m 642.9141 412.7764 l S endstream endobj 1844 2 obj 111 endobj 1845 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1847 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm233 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 648.36914 412.77637 649.36914 417.02637 ] /Length 1850 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1851 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 648.8691 417.0264 m 648.8691 412.7764 l S endstream endobj 1850 2 obj 111 endobj 1851 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1854 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm234 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 654.32227 412.77637 655.32227 417.02637 ] /Length 1855 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1856 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 654.8223 417.0264 m 654.8223 412.7764 l S endstream endobj 1855 2 obj 111 endobj 1856 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1859 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm235 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 660.27539 412.77637 661.27539 417.02637 ] /Length 1860 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1861 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 660.7754 417.0264 m 660.7754 412.7764 l S endstream endobj 1860 2 obj 111 endobj 1861 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1864 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm236 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 666.23047 412.77637 667.23047 417.02637 ] /Length 1866 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1867 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 666.7305 417.0264 m 666.7305 412.7764 l S endstream endobj 1866 2 obj 111 endobj 1867 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1870 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm237 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 672.18359 412.77637 673.18359 417.02637 ] /Length 1871 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1874 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 672.6836 417.0264 m 672.6836 412.7764 l S endstream endobj 1871 2 obj 111 endobj 1874 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1876 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm238 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 678.13672 412.77637 679.13672 417.02637 ] /Length 1877 4 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1878 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 678.6367 417.0264 m 678.6367 412.7764 l S endstream endobj 1877 4 obj 111 endobj 1878 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1880 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm239 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 684.0918 412.77637 685.0918 417.02637 ] /Length 1883 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1884 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 684.5918 417.0264 m 684.5918 412.7764 l S endstream endobj 1883 2 obj 111 endobj 1884 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1887 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm240 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 690.04492 412.77637 691.04492 417.02637 ] /Length 1888 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1890 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 690.5449 417.0264 m 690.5449 412.7764 l S endstream endobj 1888 2 obj 111 endobj 1890 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1893 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm241 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 696 412.77637 697 417.02637 ] /Length 1894 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1895 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 696.5 417.0264 m 696.5 412.7764 l S endstream endobj 1894 2 obj 105 endobj 1895 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1898 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm242 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 701.95313 412.77637 702.95313 417.02637 ] /Length 1899 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1900 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 702.4531 417.0264 m 702.4531 412.7764 l S endstream endobj 1899 2 obj 111 endobj 1900 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1904 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm243 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 707.90625 412.77637 708.90625 417.02637 ] /Length 1906 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1907 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 708.4063 417.0264 m 708.4063 412.7764 l S endstream endobj 1906 2 obj 111 endobj 1907 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1909 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm244 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 713.86133 412.77637 714.86133 417.02637 ] /Length 1910 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1912 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 714.3613 417.0264 m 714.3613 412.7764 l S endstream endobj 1910 2 obj 111 endobj 1912 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1915 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm245 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 719.81445 412.77637 720.81445 417.02637 ] /Length 1917 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1918 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 720.3145 417.0264 m 720.3145 412.7764 l S endstream endobj 1917 3 obj 111 endobj 1918 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1920 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm246 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 725.76758 412.77637 726.76758 417.02637 ] /Length 1923 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1924 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 726.2676 417.0264 m 726.2676 412.7764 l S endstream endobj 1923 2 obj 111 endobj 1924 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1927 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm247 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 731.72266 412.77637 732.72266 417.02637 ] /Length 1928 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1929 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 732.2227 417.0264 m 732.2227 412.7764 l S endstream endobj 1928 2 obj 111 endobj 1929 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1932 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm248 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 737.67578 412.77637 738.67578 417.02637 ] /Length 1934 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1935 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 738.1758 417.0264 m 738.1758 412.7764 l S endstream endobj 1934 2 obj 111 endobj 1935 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1938 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm249 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 743.63086 412.77637 744.63086 417.02637 ] /Length 1939 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1940 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 744.1309 417.0264 m 744.1309 412.7764 l S endstream endobj 1939 2 obj 111 endobj 1940 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1943 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm250 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 749.58398 412.77637 750.58398 417.02637 ] /Length 1944 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1947 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 750.084 417.0264 m 750.084 412.7764 l S endstream endobj 1944 2 obj 109 endobj 1947 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1949 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm251 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 755.53711 412.77637 756.53711 417.02637 ] /Length 1950 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1952 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 756.0371 417.0264 m 756.0371 412.7764 l S endstream endobj 1950 2 obj 111 endobj 1952 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1955 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm252 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 761.49219 412.77637 762.49219 417.02637 ] /Length 1957 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1958 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 761.9922 417.0264 m 761.9922 412.7764 l S endstream endobj 1957 3 obj 111 endobj 1958 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1960 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm253 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 767.44531 412.77637 768.44531 417.02637 ] /Length 1962 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1963 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 767.9453 417.0264 m 767.9453 412.7764 l S endstream endobj 1962 2 obj 111 endobj 1963 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1967 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm254 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 773.39844 412.77637 774.39844 417.02637 ] /Length 1968 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1969 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 773.8984 417.0264 m 773.8984 412.7764 l S endstream endobj 1968 2 obj 111 endobj 1969 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1972 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm255 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 779.35352 412.77637 780.35352 417.02637 ] /Length 1973 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1974 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 779.8535 417.0264 m 779.8535 412.7764 l S endstream endobj 1973 3 obj 111 endobj 1974 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1978 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm256 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 785.30664 412.77637 786.30664 417.02637 ] /Length 1979 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1980 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 785.8066 417.0264 m 785.8066 412.7764 l S endstream endobj 1979 2 obj 111 endobj 1980 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1983 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm257 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 791.26172 412.77637 792.26172 417.02637 ] /Length 1984 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1987 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 791.7617 417.0264 m 791.7617 412.7764 l S endstream endobj 1984 2 obj 111 endobj 1987 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1989 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm258 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 797.21484 412.77637 798.21484 417.02637 ] /Length 1990 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1991 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 797.7148 417.0264 m 797.7148 412.7764 l S endstream endobj 1990 3 obj 111 endobj 1991 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 1994 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm259 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 803.16797 412.77637 804.16797 417.02637 ] /Length 1996 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 1998 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 803.668 417.0264 m 803.668 412.7764 l S endstream endobj 1996 2 obj 109 endobj 1998 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2000 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm260 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 416.16797 412.77637 804.16797 417.02637 ] /Length 2002 2 R /Resources << /ExtGState << /R1 4 4 R /R6 1631 2 R >> /XObject << /Fm196 1627 3 R /Fm197 1633 3 R /Fm198 1638 2 R /Fm199 1644 2 R /Fm200 1649 3 R /Fm201 1655 2 R /Fm202 1660 2 R /Fm203 1667 2 R /Fm204 1672 2 R /Fm205 1678 2 R /Fm206 1683 2 R /Fm207 1690 2 R /Fm208 1697 3 R /Fm209 1702 2 R /Fm210 1708 2 R /Fm75 1713 3 R /Fm211 1719 2 R /Fm212 1724 2 R /Fm213 1730 2 R /Fm214 1734 2 R /Fm215 1741 3 R /Fm216 1746 2 R /Fm217 1752 2 R /Fm218 1758 2 R /Fm219 1763 2 R /Fm220 1768 2 R /Fm221 1774 2 R /Fm222 1780 2 R /Fm223 1786 2 R /Fm224 1792 2 R /Fm225 1796 2 R /Fm226 1803 2 R /Fm227 1808 2 R /Fm87 1814 3 R /Fm228 1820 2 R /Fm229 1825 3 R /Fm230 1831 2 R /Fm231 1836 2 R /Fm232 1842 2 R /Fm233 1847 2 R /Fm234 1854 2 R /Fm235 1859 2 R /Fm236 1864 2 R /Fm237 1870 2 R /Fm238 1876 2 R /Fm239 1880 2 R /Fm240 1887 3 R /Fm241 1893 3 R /Fm242 1898 2 R /Fm243 1904 2 R /Fm244 1909 3 R /Fm245 1915 2 R /Fm246 1920 2 R /Fm247 1927 2 R /Fm248 1932 2 R /Fm249 1938 2 R /Fm250 1943 2 R /Fm251 1949 3 R /Fm252 1955 2 R /Fm253 1960 3 R /Fm254 1967 2 R /Fm255 1972 2 R /Fm256 1978 2 R /Fm257 1983 2 R /Fm258 1989 3 R /Fm259 1994 2 R >> >> /Group 2003 2 R >> stream q /RelativeColorimetric ri /R6 gs /Fm196 Do Q q /R6 gs /Fm197 Do Q q /R6 gs /Fm198 Do Q q /R6 gs /Fm199 Do Q q /R6 gs /Fm200 Do Q q /R6 gs /Fm201 Do Q q /R6 gs /Fm202 Do Q q /R6 gs /Fm203 Do Q q /R6 gs /Fm204 Do Q q /R6 gs /Fm205 Do Q q /R6 gs /Fm206 Do Q q /R6 gs /Fm207 Do Q q /R6 gs /Fm208 Do Q q /R6 gs /Fm209 Do Q q /R6 gs /Fm210 Do Q q /R6 gs /Fm75 Do Q q /R6 gs /Fm211 Do Q q /R6 gs /Fm212 Do Q q /R6 gs /Fm213 Do Q q /R6 gs /Fm214 Do Q q /R6 gs /Fm215 Do Q q /R6 gs /Fm216 Do Q q /R6 gs /Fm217 Do Q q /R6 gs /Fm218 Do Q q /R6 gs /Fm219 Do Q q /R6 gs /Fm220 Do Q q /R6 gs /Fm221 Do Q q /R6 gs /Fm222 Do Q q /R6 gs /Fm223 Do Q q /R6 gs /Fm224 Do Q q /R6 gs /Fm225 Do Q q /R6 gs /Fm226 Do Q q /R6 gs /Fm227 Do Q q /R6 gs /Fm87 Do Q q /R6 gs /Fm228 Do Q q /R6 gs /Fm229 Do Q q /R6 gs /Fm230 Do Q q /R6 gs /Fm231 Do Q q /R6 gs /Fm232 Do Q q /R6 gs /Fm233 Do Q q /R6 gs /Fm234 Do Q q /R6 gs /Fm235 Do Q q /R6 gs /Fm236 Do Q q /R6 gs /Fm237 Do Q q /R6 gs /Fm238 Do Q q /R6 gs /Fm239 Do Q q /R6 gs /Fm240 Do Q q /R6 gs /Fm241 Do Q q /R6 gs /Fm242 Do Q q /R6 gs /Fm243 Do Q q /R6 gs /Fm244 Do Q q /R6 gs /Fm245 Do Q q /R6 gs /Fm246 Do Q q /R6 gs /Fm247 Do Q q /R6 gs /Fm248 Do Q q /R6 gs /Fm249 Do Q q /R6 gs /Fm250 Do Q q /R6 gs /Fm251 Do Q q /R6 gs /Fm252 Do Q q /R6 gs /Fm253 Do Q q /R6 gs /Fm254 Do Q q /R6 gs /Fm255 Do Q q /R6 gs /Fm256 Do Q q /R6 gs /Fm257 Do Q q /R6 gs /Fm258 Do Q q /R6 gs /Fm259 Do Q endstream endobj 2002 2 obj 1409 endobj 2003 2 obj << /Type /Group /S /Transparency /I false /K true >> endobj 2006 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm261 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 416.16797 433.27637 417.16797 437.52637 ] /Length 2007 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2008 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 416.668 437.5264 m 416.668 433.2764 l S endstream endobj 2007 2 obj 109 endobj 2008 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2010 3 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 2011 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm262 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 422.12305 433.27637 423.12305 437.52637 ] /Length 2012 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2014 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 422.623 437.5264 m 422.623 433.2764 l S endstream endobj 2012 2 obj 109 endobj 2014 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2018 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm263 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 428.07617 433.27637 429.07617 437.52637 ] /Length 2019 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2020 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 428.5762 437.5264 m 428.5762 433.2764 l S endstream endobj 2019 2 obj 111 endobj 2020 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2022 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm264 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 434.0293 433.27637 435.0293 437.52637 ] /Length 2023 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2026 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 434.5293 437.5264 m 434.5293 433.2764 l S endstream endobj 2023 2 obj 111 endobj 2026 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2028 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm265 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 439.98438 433.27637 440.98438 437.52637 ] /Length 2030 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2031 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 440.4844 437.5264 m 440.4844 433.2764 l S endstream endobj 2030 3 obj 111 endobj 2031 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2034 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm266 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 445.9375 433.27637 446.9375 437.52637 ] /Length 2036 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2037 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 446.4375 437.5264 m 446.4375 433.2764 l S endstream endobj 2036 2 obj 111 endobj 2037 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2040 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm267 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 451.89063 433.27637 452.89063 437.52637 ] /Length 2041 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2042 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 452.3906 437.5264 m 452.3906 433.2764 l S endstream endobj 2041 3 obj 111 endobj 2042 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2046 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm268 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 457.8457 433.27637 458.8457 437.52637 ] /Length 2047 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2048 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 458.3457 437.5264 m 458.3457 433.2764 l S endstream endobj 2047 2 obj 111 endobj 2048 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2051 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm269 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 463.79883 433.27637 464.79883 437.52637 ] /Length 2052 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2053 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 464.2988 437.5264 m 464.2988 433.2764 l S endstream endobj 2052 2 obj 111 endobj 2053 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2056 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm270 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 469.75391 433.27637 470.75391 437.52637 ] /Length 2058 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2059 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 470.2539 437.5264 m 470.2539 433.2764 l S endstream endobj 2058 2 obj 111 endobj 2059 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2062 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm271 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 475.70703 433.27637 476.70703 437.52637 ] /Length 2063 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2064 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 476.207 437.5264 m 476.207 433.2764 l S endstream endobj 2063 2 obj 109 endobj 2064 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2067 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm272 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 481.66016 433.27637 482.66016 437.52637 ] /Length 2068 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2070 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 482.1602 437.5264 m 482.1602 433.2764 l S endstream endobj 2068 2 obj 111 endobj 2070 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2072 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm273 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 487.61523 433.27637 488.61523 437.52637 ] /Length 2074 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2075 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 488.1152 437.5264 m 488.1152 433.2764 l S endstream endobj 2074 3 obj 111 endobj 2075 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2078 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm274 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 493.56836 433.27637 494.56836 437.52637 ] /Length 2080 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2082 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 494.0684 437.5264 m 494.0684 433.2764 l S endstream endobj 2080 2 obj 111 endobj 2082 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2084 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm275 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 499.52148 433.27637 500.52148 437.52637 ] /Length 2085 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2086 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 500.0215 437.5264 m 500.0215 433.2764 l S endstream endobj 2085 3 obj 111 endobj 2086 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2090 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm276 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 505.47656 433.27637 506.47656 437.52637 ] /Length 2091 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2092 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 505.9766 437.5264 m 505.9766 433.2764 l S endstream endobj 2091 2 obj 111 endobj 2092 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2095 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm277 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 511.42969 433.27637 512.42969 437.52637 ] /Length 2096 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2098 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 511.9297 437.5264 m 511.9297 433.2764 l S endstream endobj 2096 2 obj 111 endobj 2098 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2101 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm278 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 517.38477 433.27637 518.38477 437.52637 ] /Length 2102 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2104 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 517.8848 437.5264 m 517.8848 433.2764 l S endstream endobj 2102 2 obj 111 endobj 2104 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2106 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm279 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 523.33789 433.27637 524.33789 437.52637 ] /Length 2107 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2110 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 523.8379 437.5264 m 523.8379 433.2764 l S endstream endobj 2107 2 obj 111 endobj 2110 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2112 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm280 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 529.29102 433.27637 530.29102 437.52637 ] /Length 2114 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2115 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 529.791 437.5264 m 529.791 433.2764 l S endstream endobj 2114 3 obj 109 endobj 2115 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2117 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 535.24609 433.27637 536.24609 437.52637 ] /Length 2119 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2120 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 535.7461 437.5264 m 535.7461 433.2764 l S endstream endobj 2119 2 obj 111 endobj 2120 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2123 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm281 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 541.19922 433.27637 542.19922 437.52637 ] /Length 2124 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2126 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 541.6992 437.5264 m 541.6992 433.2764 l S endstream endobj 2124 2 obj 111 endobj 2126 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2128 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm282 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 547.15234 433.27637 548.15234 437.52637 ] /Length 2130 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2131 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 547.6523 437.5264 m 547.6523 433.2764 l S endstream endobj 2130 2 obj 111 endobj 2131 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2135 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm283 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 553.10742 433.27637 554.10742 437.52637 ] /Length 2136 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2137 4 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 553.6074 437.5264 m 553.6074 433.2764 l S endstream endobj 2136 2 obj 111 endobj 2137 4 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2139 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 559.06055 433.27637 560.06055 437.52637 ] /Length 2140 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2143 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 559.5605 437.5264 m 559.5605 433.2764 l S endstream endobj 2140 2 obj 111 endobj 2143 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2146 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm284 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 565.01367 433.27637 566.01367 437.52637 ] /Length 2147 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2148 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 565.5137 437.5264 m 565.5137 433.2764 l S endstream endobj 2147 3 obj 111 endobj 2148 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2151 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm285 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 570.96875 433.27637 571.96875 437.52637 ] /Length 2153 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2154 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 571.4688 437.5264 m 571.4688 433.2764 l S endstream endobj 2153 3 obj 111 endobj 2154 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2157 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm286 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 576.92188 433.27637 577.92188 437.52637 ] /Length 2158 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2159 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 577.4219 437.5264 m 577.4219 433.2764 l S endstream endobj 2158 2 obj 111 endobj 2159 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2163 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm287 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 582.87695 433.27637 583.87695 437.52637 ] /Length 2164 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2166 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 583.377 437.5264 m 583.377 433.2764 l S endstream endobj 2164 2 obj 109 endobj 2166 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2168 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm288 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 588.83008 433.27637 589.83008 437.52637 ] /Length 2169 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2170 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 589.3301 437.5264 m 589.3301 433.2764 l S endstream endobj 2169 3 obj 111 endobj 2170 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2174 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm289 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 594.7832 433.27637 595.7832 437.52637 ] /Length 2175 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2177 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 595.2832 437.5264 m 595.2832 433.2764 l S endstream endobj 2175 2 obj 111 endobj 2177 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2179 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm290 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 600.73828 433.27637 601.73828 437.52637 ] /Length 2180 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2183 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 601.2383 437.5264 m 601.2383 433.2764 l S endstream endobj 2180 2 obj 111 endobj 2183 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2185 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm291 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 606.69141 433.27637 607.69141 437.52637 ] /Length 2187 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2188 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 607.1914 437.5264 m 607.1914 433.2764 l S endstream endobj 2187 2 obj 111 endobj 2188 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2190 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 612.64453 433.27637 613.64453 437.52637 ] /Length 2192 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2194 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 613.1445 437.5264 m 613.1445 433.2764 l S endstream endobj 2192 2 obj 111 endobj 2194 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2197 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 618.59961 433.27637 619.59961 437.52637 ] /Length 2198 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2199 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 619.0996 437.5264 m 619.0996 433.2764 l S endstream endobj 2198 2 obj 111 endobj 2199 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2202 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm292 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 624.55273 433.27637 625.55273 437.52637 ] /Length 2203 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2204 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 625.0527 437.5264 m 625.0527 433.2764 l S endstream endobj 2203 2 obj 111 endobj 2204 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2208 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm293 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 630.50781 433.27637 631.50781 437.52637 ] /Length 2209 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2210 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 631.0078 437.5264 m 631.0078 433.2764 l S endstream endobj 2209 3 obj 111 endobj 2210 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2214 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm294 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 636.46094 433.27637 637.46094 437.52637 ] /Length 2215 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2217 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 636.9609 437.5264 m 636.9609 433.2764 l S endstream endobj 2215 2 obj 111 endobj 2217 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2219 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm295 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 642.41406 433.27637 643.41406 437.52637 ] /Length 2220 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2222 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 642.9141 437.5264 m 642.9141 433.2764 l S endstream endobj 2220 3 obj 111 endobj 2222 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2224 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm296 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 648.36914 433.27637 649.36914 437.52637 ] /Length 2227 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2228 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 648.8691 437.5264 m 648.8691 433.2764 l S endstream endobj 2227 2 obj 111 endobj 2228 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2230 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm297 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 654.32227 433.27637 655.32227 437.52637 ] /Length 2232 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2233 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 654.8223 437.5264 m 654.8223 433.2764 l S endstream endobj 2232 2 obj 111 endobj 2233 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2236 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm298 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 660.27539 433.27637 661.27539 437.52637 ] /Length 2238 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2239 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 660.7754 437.5264 m 660.7754 433.2764 l S endstream endobj 2238 2 obj 111 endobj 2239 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2242 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 666.23047 433.27637 667.23047 437.52637 ] /Length 2243 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2244 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 666.7305 437.5264 m 666.7305 433.2764 l S endstream endobj 2243 2 obj 111 endobj 2244 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2248 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm299 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 672.18359 433.27637 673.18359 437.52637 ] /Length 2249 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2250 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 672.6836 437.5264 m 672.6836 433.2764 l S endstream endobj 2249 3 obj 111 endobj 2250 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2252 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm300 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 678.13672 433.27637 679.13672 437.52637 ] /Length 2254 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2256 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 678.6367 437.5264 m 678.6367 433.2764 l S endstream endobj 2254 2 obj 111 endobj 2256 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2259 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm301 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 684.0918 433.27637 685.0918 437.52637 ] /Length 2260 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2262 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 684.5918 437.5264 m 684.5918 433.2764 l S endstream endobj 2260 3 obj 111 endobj 2262 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2264 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm302 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 690.04492 433.27637 691.04492 437.52637 ] /Length 2266 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2267 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 690.5449 437.5264 m 690.5449 433.2764 l S endstream endobj 2266 2 obj 111 endobj 2267 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2270 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm303 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 696 433.27637 697 437.52637 ] /Length 2271 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2272 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 696.5 437.5264 m 696.5 433.2764 l S endstream endobj 2271 2 obj 105 endobj 2272 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2276 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm304 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 701.95313 433.27637 702.95313 437.52637 ] /Length 2278 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2279 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 702.4531 437.5264 m 702.4531 433.2764 l S endstream endobj 2278 2 obj 111 endobj 2279 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2281 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm305 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 707.90625 433.27637 708.90625 437.52637 ] /Length 2282 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2283 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 708.4063 437.5264 m 708.4063 433.2764 l S endstream endobj 2282 2 obj 111 endobj 2283 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2287 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm306 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 713.86133 433.27637 714.86133 437.52637 ] /Length 2288 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2290 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 714.3613 437.5264 m 714.3613 433.2764 l S endstream endobj 2288 2 obj 111 endobj 2290 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2292 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm307 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 719.81445 433.27637 720.81445 437.52637 ] /Length 2294 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2296 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 720.3145 437.5264 m 720.3145 433.2764 l S endstream endobj 2294 2 obj 111 endobj 2296 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2298 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm308 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 725.76758 433.27637 726.76758 437.52637 ] /Length 2300 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2301 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 726.2676 437.5264 m 726.2676 433.2764 l S endstream endobj 2300 2 obj 111 endobj 2301 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2303 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 731.72266 433.27637 732.72266 437.52637 ] /Length 2306 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2307 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 732.2227 437.5264 m 732.2227 433.2764 l S endstream endobj 2306 2 obj 111 endobj 2307 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2310 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm309 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 737.67578 433.27637 738.67578 437.52637 ] /Length 2311 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2312 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 738.1758 437.5264 m 738.1758 433.2764 l S endstream endobj 2311 2 obj 111 endobj 2312 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2315 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 743.63086 433.27637 744.63086 437.52637 ] /Length 2316 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2318 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 744.1309 437.5264 m 744.1309 433.2764 l S endstream endobj 2316 2 obj 111 endobj 2318 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2321 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm310 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 749.58398 433.27637 750.58398 437.52637 ] /Length 2322 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2323 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 750.084 437.5264 m 750.084 433.2764 l S endstream endobj 2322 2 obj 109 endobj 2323 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2327 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm311 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 755.53711 433.27637 756.53711 437.52637 ] /Length 2328 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2330 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 756.0371 437.5264 m 756.0371 433.2764 l S endstream endobj 2328 2 obj 111 endobj 2330 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2332 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm312 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 761.49219 433.27637 762.49219 437.52637 ] /Length 2333 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2335 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 761.9922 437.5264 m 761.9922 433.2764 l S endstream endobj 2333 3 obj 111 endobj 2335 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2338 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm313 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 767.44531 433.27637 768.44531 437.52637 ] /Length 2340 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2341 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 767.9453 437.5264 m 767.9453 433.2764 l S endstream endobj 2340 2 obj 111 endobj 2341 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2343 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /F /Matrix [ 1 0 0 1 0 0 ] /BBox [ 773.39844 433.27637 774.39844 437.52637 ] /Length 2345 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2346 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 773.8984 437.5264 m 773.8984 433.2764 l S endstream endobj 2345 3 obj 111 endobj 2346 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2350 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm314 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 779.35352 433.27637 780.35352 437.52637 ] /Length 2351 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2352 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 779.8535 437.5264 m 779.8535 433.2764 l S endstream endobj 2351 2 obj 111 endobj 2352 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2355 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm315 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 785.30664 433.27637 786.30664 437.52637 ] /Length 2356 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2358 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 785.8066 437.5264 m 785.8066 433.2764 l S endstream endobj 2356 2 obj 111 endobj 2358 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2361 3 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm316 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 791.26172 433.27637 792.26172 437.52637 ] /Length 2362 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2363 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 791.7617 437.5264 m 791.7617 433.2764 l S endstream endobj 2362 2 obj 111 endobj 2363 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2366 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm317 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 797.21484 433.27637 798.21484 437.52637 ] /Length 2367 2 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2369 3 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 797.7148 437.5264 m 797.7148 433.2764 l S endstream endobj 2367 2 obj 111 endobj 2369 3 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2371 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm318 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 803.16797 433.27637 804.16797 437.52637 ] /Length 2373 3 R /Resources << /ExtGState << /R1 4 4 R >> >> /Group 2374 2 R >> stream 0 0 0 1 K 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 803.668 437.5264 m 803.668 433.2764 l S endstream endobj 2373 3 obj 109 endobj 2374 2 obj << /Type /Group /S /Transparency /I false /K false >> endobj 2376 2 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm319 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 416.16797 433.27637 804.16797 437.52637 ] /Length 2379 2 R /Resources << /ExtGState << /R1 4 4 R /R7 2010 3 R >> /XObject << /Fm261 2006 2 R /Fm262 2011 2 R /Fm263 2018 2 R /Fm264 2022 2 R /Fm265 2028 2 R /Fm266 2034 2 R /Fm267 2040 2 R /Fm268 2046 2 R /Fm269 2051 2 R /Fm270 2056 2 R /Fm271 2062 2 R /Fm272 2067 2 R /Fm273 2072 2 R /Fm274 2078 2 R /Fm275 2084 3 R /Fm276 2090 2 R /Fm277 2095 2 R /Fm278 2101 3 R /Fm279 2106 2 R /Fm280 2112 2 R /Fm61 2117 3 R /Fm281 2123 2 R /Fm282 2128 2 R /Fm283 2135 2 R /Fm194 2139 2 R /Fm284 2146 2 R /Fm285 2151 2 R /Fm286 2157 3 R /Fm287 2163 2 R /Fm288 2168 2 R /Fm289 2174 2 R /Fm290 2179 2 R /Fm291 2185 3 R /Fm203 2190 2 R /Fm10 2197 3 R /Fm292 2202 2 R /Fm293 2208 2 R /Fm294 2214 2 R /Fm295 2219 2 R /Fm296 2224 2 R /Fm297 2230 2 R /Fm298 2236 2 R /Fm211 2242 2 R /Fm299 2248 2 R /Fm300 2252 2 R /Fm301 2259 2 R /Fm302 2264 2 R /Fm303 2270 3 R /Fm304 2276 2 R /Fm305 2281 3 R /Fm306 2287 2 R /Fm307 2292 2 R /Fm308 2298 2 R /Fm222 2303 2 R /Fm309 2310 3 R /Fm224 2315 2 R /Fm310 2321 3 R /Fm311 2327 2 R /Fm312 2332 2 R /Fm313 2338 2 R /Fm228 2343 2 R /Fm314 2350 2 R /Fm315 2355 2 R /Fm316 2361 3 R /Fm317 2366 2 R /Fm318 2371 2 R >> >> /Group 2380 2 R >> stream q /RelativeColorimetric ri /R7 gs /Fm261 Do Q q /R7 gs /Fm262 Do Q q /R7 gs /Fm263 Do Q q /R7 gs /Fm264 Do Q q /R7 gs /Fm265 Do Q q /R7 gs /Fm266 Do Q q /R7 gs /Fm267 Do Q q /R7 gs /Fm268 Do Q q /R7 gs /Fm269 Do Q q /R7 gs /Fm270 Do Q q /R7 gs /Fm271 Do Q q /R7 gs /Fm272 Do Q q /R7 gs /Fm273 Do Q q /R7 gs /Fm274 Do Q q /R7 gs /Fm275 Do Q q /R7 gs /Fm276 Do Q q /R7 gs /Fm277 Do Q q /R7 gs /Fm278 Do Q q /R7 gs /Fm279 Do Q q /R7 gs /Fm280 Do Q q /R7 gs /Fm61 Do Q q /R7 gs /Fm281 Do Q q /R7 gs /Fm282 Do Q q /R7 gs /Fm283 Do Q q /R7 gs /Fm194 Do Q q /R7 gs /Fm284 Do Q q /R7 gs /Fm285 Do Q q /R7 gs /Fm286 Do Q q /R7 gs /Fm287 Do Q q /R7 gs /Fm288 Do Q q /R7 gs /Fm289 Do Q q /R7 gs /Fm290 Do Q q /R7 gs /Fm291 Do Q q /R7 gs /Fm203 Do Q q /R7 gs /Fm10 Do Q q /R7 gs /Fm292 Do Q q /R7 gs /Fm293 Do Q q /R7 gs /Fm294 Do Q q /R7 gs /Fm295 Do Q q /R7 gs /Fm296 Do Q q /R7 gs /Fm297 Do Q q /R7 gs /Fm298 Do Q q /R7 gs /Fm211 Do Q q /R7 gs /Fm299 Do Q q /R7 gs /Fm300 Do Q q /R7 gs /Fm301 Do Q q /R7 gs /Fm302 Do Q q /R7 gs /Fm303 Do Q q /R7 gs /Fm304 Do Q q /R7 gs /Fm305 Do Q q /R7 gs /Fm306 Do Q q /R7 gs /Fm307 Do Q q /R7 gs /Fm308 Do Q q /R7 gs /Fm222 Do Q q /R7 gs /Fm309 Do Q q /R7 gs /Fm224 Do Q q /R7 gs /Fm310 Do Q q /R7 gs /Fm311 Do Q q /R7 gs /Fm312 Do Q q /R7 gs /Fm313 Do Q q /R7 gs /Fm228 Do Q q /R7 gs /Fm314 Do Q q /R7 gs /Fm315 Do Q q /R7 gs /Fm316 Do Q q /R7 gs /Fm317 Do Q q /R7 gs /Fm318 Do Q endstream endobj 2379 2 obj 1409 endobj 2380 2 obj << /Type /Group /S /Transparency /I false /K true >> endobj 2382 2 obj [ /Separation /Forest#20Green /DeviceCMYK << /FunctionType 2 /Domain [ 0 1 ] /Range [ 0 1 0 1 0 1 0 1 ] /C0 [ 0 0 0 0 ] /C1 [ 0.9529 0.0392 0.53729 0.00389 ] /N 1 >> ] endobj 2384 2 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceCMYK >> endobj 2389 2 obj /DeviceRGB endobj 2390 2 obj << /Filter /FlateDecode /Length 2391 2 R /Height 28 /Width 128 /BitsPerComponent 8 /ColorSpace 2389 2 R >> stream H‰ìWmL•eî?lÄÇ"ñ€p0³ÆG@%pšHb¾ŠÑR6Ô£¤@H0ú8ñaÄ—…äe$hšS¨6¡!Í­ÁÚýAÊèãG­µ®Þ+ž=žs€“a6ö^»÷î~ïs?÷ó<×}?÷ó›M… *TüÑÑÑþþ~<ï÷BV¾Rðnu)¤¥¾bvfª££ÃΜ †æ¤faY ßíãó6tͺGµë[ëé陞ïåå555%|@µ··7hG Z[[kkk½LNNÞ¿…¯L}w¬ŽOÏ£¢¢B³ú‘øøxœá†j‡›Édd$â.&Uðï¿PQjÒ¬œ¾ vWÁN‹ÅBRÈÁ¼]FJJJDFp. œNŠPp^|aÝÝÝ8_ÂÍh4"Úÿ!k¸þ–ñÔ§§ê³2ž—ÉöððÈÌHËÏϧ©¶+õ¨¨(‘Ù"ˆE^SFÌÎκrpü#¦m¾€ÿž15‘'jc¹âkVUVV’yt¡ÂÂÂÞÞ^Ü»¶g£ÑÇ‘A/Ȥ…¬²JQB·ÝyqÈú‚'Œ μMì¦ÀOp†Ñ¦œ¡c"Î.òËc(î#óRá(( SÎ RŒ5ˆ-,¸ñ¤ƒyÄ”ë1Ùœï¢[«Ì822Ò£‰0›ÍÅÅÅaÚ5é[ ܯMi&ÜæÂ™ÜÁ…a øûÂj¹fìÁž({ѸÀ0iaa³àålÒØ t²Püôb#Ɉ&œ©ØæK¡øñ€Qò™å¼.’&<œÅ]^¼ Ë“ß]ém>ÓR|©³èó¶W.K‡œ«ŠG܆# Œ‹Ç«ÜŠe\û²ó›ºPP ÚÛJu 6Phï±n Ó>¬ ë¬ÞŠÅÆÆâ °HÈËËäxŽÙÍ‚ˆz`Ù³OrËØkD±±°ÚáÆz†‚ŸD+`6Yxä£`E˰Ø2Œte϶ƚGp²OžD¶Ø]ùx.3«¶×Ù‘‘ª;Ñ`î9^òrVâû3…Rºû(]ÍškM‡÷¯ žs ‚‚'É.KŒåÕ8Y`~?ÖÏÏÌû(€âëëÛX–‚^$>ÙîW@’EæA`RÈ äEü³ÀS4gf“ά+Qöì!ŒÆK„™ [?ÄDQ X¢U.¹¯öòø¾ê˜úƒ ”!ë:;9udìUæD(x½ØÓâä³àŸõ/ Œ;^J!ù:LAÖ¶ÍG«*Å'ðÇÌ_G¿øár·,}'í,®—×M6Ž÷}ŒçÌÕ X³Miõì„ìBH´‹ü ª¯¼!ñÑágÀ9dGN‡#ÿ—{ÞÃŽFl2ÄUì6ˆDÈñOJJJKKËÉÉ‚WƒƒƒØHn ]*OŒ¥ìIøëiÒÇ ‹S#-N.Ž]Òm¡±ƒ o:RÊÏ-?àeþ!‚ÿê}‰T”Åù?ÝX†×†i£££µZí[EÏ:òŸŸ½„»¹¹éõú˜˜(x-ß—ùúk&»;Ý‘ÿ%[Äí^=ßTùão?ßüå¶+T/Ä¿\övlCà GþñåÓÙZþ_Ì1žù`/¾‚di·îEÃg ò÷÷‡¸ê“¦¢Ù™©ºº:9Ú÷_dm|’ù8•mº(ˆqËS‘TœÿéX§n®Œ-j+°±XH@ë!]WuÁ@{ò§V,x]¢ö…rT´3¹|OêÉw²—kYúÁ‚äþó:ƒÛ*$$$77wnnΩÃÄÄD\\œF£ÿPðêèóû­?mÈÜ$K[Ösv×Ëëæhlh) h. h9¤;U“|Ö ªÁ9 g.¨ÃxuúúRGA… *T¨P¡B… *TÜCü)À©y¢ endstream endobj 2391 2 obj 1535 endobj 2392 2 obj << /Filter /FlateDecode /Length 2393 1 R >> stream H‰ìWÉnGý‚ú‡ï6Wýv×®°Žû 9JÌnw›O[qW}9oTµö#~õ¢™½ípüþsÇêWδCZ²ÒA‹ÕNŸ‰ÆKXh€À€ rA‚Š$Ée™u`È;Kr¼‘Z{S  ¼°ÞIu³ÍŒ¸„„'ýAC’`¯óÚ°ó´Íd‹Á’CÌ"l€U:%¾\b¤ÒõbtÖŽ~zËæ©y˜rìŸ_„¯ñö þÿ‰¨Ä½øëæÿ?oþ¶kÄ#Nšer™ŒF— Ùâz­†s\rórµ'wC.|É3ä‘\ ƒ/žT‰Â‚› N £.‘!/C2¤²„1t¦’­K$DsœXOQá [Î(ÓÅ•&Y¸$©Á Ç‘5«Ë°—gÑS\TðšïD9²3†Àžt©…Ãdq)g€»øÀQAŸEÌ9€SÇÉ©§JýåÁÿ̓·g½&âô\ŒA€CÁqŒ-áz2õ‡Éo܈R!÷Ž(+F‚ÿ(å‘LEIBY±™ß¥<” 7›„08¤±c™ß§<’‰2âô eÅNd~—òH¦•(b'2¿Ky{0óÙ ¤µŽƒSÅÀfÀKÁ†Xê¹ãôðTÙ)¦¤y®“'|µÑ!ä‘ÔÐ-”LÈ?EZ%go¶–iö¿1¼s¸‘&¤œ£ ¾j⨵•í™lF 1ð¹Iad3•&Õ‹F@ØT D ‹f}´*ìs0` É{. gõ1ÂÔov ¶‘§0Z%^Ó*QH"sæÂ™'Î(£û'±F y–#õ[]4ZÌä̹ž8Ñc.¨b®ŽeláÔ©NœÏÌI3 Jõ…FëÃ\ Æçø!aà±&ߢ:Û{1¤Z¬›I¤áþñ9~@‹‚winGšaè)Q´5—çÌ«oQ^žKü¦)—4ú˜ƒÑ‡òÙ•ê 7bâçR•pÎ3¦’©ÆÐE«@ÐÊ1F_C6ùÒˆu»²1(Ç µ‡”ƒçEÍ£/FR<æF¢ó&r54ÔW)ÇyÛH‰±TçL¢ÓŽü„6ZM”Ä-›g-ö4SlAsf½6P¤Ô2ärá…-ئ 1°”-ÏÓ-úSV¹Ô\T9çêºYõ¢zíÓ¡Ëóy1äD˜²ŠÏA-y«]ˆ,ÏÓÄHË#a+Æ2LµåF•s ”ºLÃ…¡"”Yá\~È‘eDOÈ•-6ÓR,êѺ& —ŠÍ­`”i„¡#]ΨtK4T½9º„!‰6I‚r…C7í’Ä«‚/tyôŸ™|ÍÁÙb**¶UÅšÓ Jãòˆ­5°†Ë4 ‰ r#©b¥É©DKγ K^Ö#fñÕi2ØqX<2c‘RÐŒY$=9 t6UK¨“ÁšÛb Z§I´¬€.Ò¸„y©ªMz4:ЮØÉ\‹Ž˜ëePËŠŽé²òÌ‘;´ rÖpœ¡:NdˆA& ¼q°4£Kj[‹›õ®D Îãè&@–]™1|,îaChF$ Qat9l°±D2/˜+ÉL½_sý@ÅÏQ×Ä(•,ÕcYªÄ$% &šË¦òŸjBbË‹\45Œ’¸Á…2¹& ЌѬ\Ê–­*L™J£PhžÉp*ÅUŽžˆ¼SF8Ý—¢€eS(6¸zˆ ÎŽ_1ˆÑ¦NÔÊ1¯ÂÎÇ{6¥(Lu®,½Ü|œ¯ã§rpF_ä{t³A©«o ™ê*è¸;&Ô5ä %,lRúà…Ô'Ÿ”žÛÁtœzàdía¸í$n¼" o£ž—Ü5”- áECäüŒj$)1lD;p¶V‡ßÍŒôeúmd²õf~cµéIº1ÝJÞÜIæ¡Ý––Gj 2RÑÔÊ|=M¢À֜ij¨’ë&ŠÈLM2>Š’Oé ý•êdmOÜ5Jj[Åp;Ñ*ã&„l¬Òm'ÑDLës@ÁnÐEÄžÏ!1µ àtX&M¡iö$ºöÍÊó&¡@ìùÒL^Æ›*–8:ð–»QD2 Å–Z7„®ã \"¦”ç|c•O¦‰ }§ÃÂPÔž;ábBVÈ2°ô „Ϋ¦Ô´|2}ä½ÿF¼ÿÉ:'Bãs ³‹C´D/·å ™€ŽW6kr’´Ë;Ï”¢…+édšÈÐw:, eš°Ü×½ìÛ¦o §Ã²jJMË'ÓGþÖ<ŸçëŽ6vîÅO—Xä¡eÑ/´w¥wš‹¨ö°X³.…›š³¾ÿdÚѧ߆¼ÁÊs\LpÒq _úr:,«–Ô´|2]û§`ô´¹FV¶Ñs„ãvJñ¢•¶?‰6DÔéw†¡¯vVêbÂØ­½îú чW£¦Ð´{]{7¼N¶Ãq)Ôbß!W¤ØÑŠ`°´,€O®L@mI0E`SqygÙRÆG%‹&¡eg¿«2„ŸM{¦Ô´y]9¶^Y5^s%Ø+ÆeÓ‡„J¹åøvtbÏ……}“bš;—6¦…˜>féÄð:u$ƒ2ukÑKŸ!Ô7­šRÓòÉtíŸùLD$¸M`èÖÞ­ª'8jX?Øi8s2 ©kŸ‰\x'¢ÕYåÎZR5% ÃdÚѧ߯nT´ö©òÎØ´ÉïZÑf‘IL›'ǵgÃc,h¼­$XYöˆ rhGB¢ÑÊ´‡»s!'ÙAƒNâ!Å…¢·¶1툨Óþ¯ Œ\‰"ïBL³¥n §Ã2jI™Ý“çʵᱻq‘g'R¾bˆËæ±ë,IbÖè‚E+Â-ñ@h{³ÕwIaå¶¼1mˆèãwKX!áÙÆ”t}Ùôb³R­RËòÁô‘륛KUz[oº}ïXÄr)A‹²=!a:¯PòÉI9}käA†ƒÌÅa1íˆèSû ã¨Ö·V"T²+öÖªn úÖjÔ’š†¢kïÆ¶ÆCkÅ Î ÝôBY·x.8û^³;²sx„Ì bÑ ätØÂC¨~“‚ Ø1úÆ4S‡ÏÔ0«P£‹ˆ/ç°n/uÁwÓ¨)µ|L×Þ­;u€dˆu}þ´aKÜA•dùDzzä²J¢iiq e£ÚKÀ5й¦:;gB’“­JW I.\¢7¨= v® *(ãCyøÅfo‹`“Ò³Qð¦j! Jïµy¦ãàä•(Ÿ³ÄŒÒK×3lR:Þl¤ ®JÇšŒjðËq/GW^ÊḠ n,3–¡hÜ¿`±Lœt‘1-}2FIB.³JMF'£ Æ¡†ç®M#&Ìo!ꎃŽÖ¢n2è°u&Q QOH Y :nL…&V‰­^Œ‹&³×Õ~ÃÚMàp`‚yiB0Ú·½6¢µY‹´Ì!…‡¨É“HÊ2͇¶œˤ]JÍ^L×Î §•’«&}–F¶C%w5¶„¨•¨ ƒ‰P㮽C¦ÞÔ–ËN³!]›ß‚P…9«ËƃBíº°©ö,3y£¹ðk½qÍ!Ic˵7žv˨oìYNlÀ±[ؽÉb¯,;Ó’j¬« ¦ }fýÀ.‘ˆm÷R!öÊjÔ&5 W¢kï.Gõ_åøþýËñ±ÎLÄcvll=Od*ˆ«r¤êzkâ|ÔÄ¥žQº»wFéˆ#"9vº].ªXÝMá•01‘*åŸØ¾õNJ¡BÉ9±Çƒ8—¹v¢²ë=!/I–2V"`o·_¿x÷rwþýåóÏo¿ºy~øýø½ãå°>€í3û×Ðäà°òôÔÙ·ßžŸ_N÷Ç·÷ÎÇ/¾8¾zý%¸z{|õ•þðç÷ÏO÷Tò§Ç‡ŸÞ=ß½_}¸ýòçûçù÷oþ}>vg{uwh¸9 ê³Èãi?þ@Fø°g$¸èFÿÝÓá“¿z÷ÏÛ»Ã0þ»ýÛýçg(¹{xy<?yõëÓ/>½ýöáÃÃ?ðûËó¯çãí×Ïç=œ³ßÞüøðr¿ÿá:ÿh¿½~xzÂ/êõí—ïß?¿ãQÿÍ÷ÃíÛÇûÑ=dïžïß}øåþùüîôÇeÔþ›ßý|>?þŸ UõçÿÉÐ0Ë"b'ŠlÁ•É$ÑÑ£d KýÙéÑS¹I%±" ¶È.rþe‰Ô¯s¥F´ƒ6nè²>ÄÈ€çæ+jɈ‚jLtH©‡ˆãÏá ÔÖiÚ`­V%ó×ñniNŒàS3ŒèýÆW9Q‰µ˜Yë¨?LÅcĶï:žì  aeŒÆÚˆ qÐÃÖaFv“[܉h0«‘aXapr „'r‡3“Hê,*Xà°a õ…â/­ä²†ãvq“+`CÄÅ~ œS¸6Ñ¿µºr}b+Æ©¸äØŠÆ*ô €éö1öüu endstream endobj 2393 1 obj 5257 endobj xref 0 2395 0000000018 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000692 00004 n 0000000801 00000 n 0000000993 00004 n 0000001072 00004 n 0000001259 00004 n 0000003190 00004 n 0000007707 00004 n 0000019023 00004 n 0000019046 00004 n 0000023668 00004 n 0000023690 00004 n 0000024910 00004 n 0000025117 00004 n 0000025305 00004 n 0000000019 00005 f 0000000025 00005 f 0000025657 00004 n 0000025678 00004 n 0000025754 00004 n 0000025835 00004 n 0000026187 00004 n 0000000026 00004 f 0000000027 00004 f 0000000028 00004 f 0000000029 00004 f 0000000030 00004 f 0000000031 00004 f 0000000032 00004 f 0000000033 00004 f 0000000034 00004 f 0000000035 00004 f 0000000036 00004 f 0000000037 00004 f 0000000038 00004 f 0000000039 00004 f 0000000040 00004 f 0000000041 00004 f 0000000043 00004 f 0000026208 00004 n 0000000044 00005 f 0000000045 00003 f 0000000046 00003 f 0000000049 00004 f 0000026284 00003 n 0000026638 00003 n 0000000051 00003 f 0000026659 00003 n 0000000052 00003 f 0000000053 00004 f 0000000055 00003 f 0000026735 00004 n 0000000056 00003 f 0000000059 00003 f 0000027087 00003 n 0000027108 00003 n 0000000060 00003 f 0000000061 00004 f 0000000063 00003 f 0000027184 00004 n 0000000064 00003 f 0000000066 00003 f 0000027538 00003 n 0000000068 00004 f 0000027559 00003 n 0000000069 00003 f 0000000070 00003 f 0000000073 00004 f 0000027635 00003 n 0000027987 00003 n 0000000074 00003 f 0000000075 00004 f 0000000077 00003 f 0000028008 00003 n 0000000078 00004 f 0000000079 00004 f 0000000080 00003 f 0000000084 00003 f 0000028084 00003 n 0000028438 00003 n 0000028459 00003 n 0000000085 00003 f 0000000086 00003 f 0000000087 00004 f 0000000089 00004 f 0000028535 00003 n 0000000091 00003 f 0000028887 00003 n 0000000093 00003 f 0000028908 00003 n 0000000094 00003 f 0000000095 00005 f 0000000096 00003 f 0000000097 00004 f 0000000100 00003 f 0000028984 00003 n 0000029339 00003 n 0000000102 00003 f 0000029360 00003 n 0000000103 00004 f 0000000104 00003 f 0000000106 00003 f 0000029437 00003 n 0000000108 00004 f 0000029795 00003 n 0000000109 00003 f 0000000111 00003 f 0000029817 00004 n 0000000112 00004 f 0000000113 00003 f 0000000115 00003 f 0000029894 00003 n 0000000117 00003 f 0000030250 00004 n 0000000119 00003 f 0000030272 00003 n 0000000120 00003 f 0000000121 00003 f 0000000124 00004 f 0000030349 00003 n 0000030707 00003 n 0000000125 00003 f 0000000126 00003 f 0000000128 00005 f 0000030729 00003 n 0000000129 00003 f 0000000130 00003 f 0000000132 00004 f 0000030806 00003 n 0000000135 00003 f 0000031164 00003 n 0000031186 00003 n 0000000136 00003 f 0000000137 00004 f 0000000138 00003 f 0000000140 00004 f 0000031263 00003 n 0000000142 00003 f 0000031621 00003 n 0000000143 00004 f 0000000145 00003 f 0000031643 00003 n 0000000146 00004 f 0000000147 00004 f 0000000148 00003 f 0000000152 00003 f 0000031720 00003 n 0000032078 00003 n 0000032100 00003 n 0000000153 00003 f 0000000154 00003 f 0000000155 00004 f 0000000157 00003 f 0000032177 00004 n 0000000158 00003 f 0000000159 00004 f 0000000162 00003 f 0000032535 00003 n 0000032557 00003 n 0000000163 00004 f 0000000164 00003 f 0000000166 00003 f 0000032634 00003 n 0000000168 00004 f 0000032992 00003 n 0000000169 00003 f 0000000171 00003 f 0000033014 00003 n 0000000172 00004 f 0000000174 00003 f 0000033091 00003 n 0000000176 00004 f 0000033449 00003 n 0000000177 00003 f 0000000179 00003 f 0000033471 00004 n 0000000180 00003 f 0000000181 00004 f 0000000183 00003 f 0000033548 00003 n 0000000186 00003 f 0000033906 00003 n 0000033928 00003 n 0000000187 00004 f 0000000188 00003 f 0000000189 00003 f 0000000191 00004 f 0000034005 00004 n 0000000192 00003 f 0000000193 00003 f 0000000196 00003 f 0000034361 00003 n 0000034383 00003 n 0000000197 00004 f 0000000198 00003 f 0000000199 00004 f 0000000203 00003 f 0000034460 00003 n 0000034818 00003 n 0000034840 00003 n 0000000204 00003 f 0000000205 00003 f 0000000206 00004 f 0000000208 00004 f 0000034917 00003 n 0000000209 00003 f 0000000211 00004 f 0000035275 00003 n 0000000213 00003 f 0000035297 00003 n 0000000214 00003 f 0000000216 00004 f 0000035374 00003 n 0000000217 00003 f 0000000219 00003 f 0000035732 00004 n 0000000221 00003 f 0000035754 00003 n 0000000222 00003 f 0000000223 00004 f 0000000225 00004 f 0000035831 00003 n 0000000227 00003 f 0000036189 00003 n 0000000228 00003 f 0000000230 00003 f 0000036211 00004 n 0000000231 00004 f 0000000232 00003 f 0000000233 00003 f 0000000237 00003 f 0000036288 00003 n 0000036646 00003 n 0000036668 00003 n 0000000238 00003 f 0000000239 00004 f 0000000240 00004 f 0000000241 00004 f 0000000243 00003 f 0000036745 00003 n 0000000245 00003 f 0000037103 00003 n 0000000247 00003 f 0000037125 00003 n 0000000248 00004 f 0000000249 00003 f 0000000251 00004 f 0000037202 00003 n 0000000253 00003 f 0000037560 00003 n 0000000255 00003 f 0000037582 00004 n 0000000256 00003 f 0000000257 00003 f 0000000259 00004 f 0000037659 00003 n 0000000260 00004 f 0000000261 00003 f 0000000264 00003 f 0000038017 00003 n 0000038039 00003 n 0000000265 00004 f 0000000267 00003 f 0000038116 00003 n 0000000268 00003 f 0000000270 00003 f 0000038472 00004 n 0000000271 00004 f 0000000272 00003 f 0000000274 00003 f 0000038494 00003 n 0000000276 00004 f 0000038571 00003 n 0000000277 00003 f 0000000279 00003 f 0000038929 00003 n 0000000281 00004 f 0000038951 00003 n 0000000282 00003 f 0000000283 00004 f 0000000285 00003 f 0000039028 00003 n 0000000287 00003 f 0000039384 00004 n 0000000289 00003 f 0000039406 00003 n 0000000290 00003 f 0000000291 00004 f 0000000292 00004 f 0000000295 00003 f 0000039483 00003 n 0000039841 00003 n 0000000296 00003 f 0000000298 00003 f 0000039863 00003 n 0000000299 00004 f 0000000300 00004 f 0000000301 00003 f 0000000304 00003 f 0000039940 00003 n 0000040298 00003 n 0000000305 00003 f 0000000306 00003 f 0000000308 00003 f 0000040320 00003 n 0000000309 00004 f 0000000310 00003 f 0000000312 00004 f 0000040397 00003 n 0000000314 00003 f 0000040755 00003 n 0000000315 00004 f 0000000317 00003 f 0000040777 00003 n 0000000318 00003 f 0000000320 00004 f 0000040854 00003 n 0000000322 00003 f 0000041212 00003 n 0000000323 00004 f 0000000325 00003 f 0000041234 00003 n 0000000326 00003 f 0000000327 00005 f 0000000328 00003 f 0000000332 00003 f 0000041311 00003 n 0000041669 00003 n 0000041691 00003 n 0000000333 00003 f 0000000334 00003 f 0000000335 00004 f 0000000337 00004 f 0000041768 00003 n 0000000339 00003 f 0000042126 00003 n 0000000340 00003 f 0000000342 00003 f 0000042148 00003 n 0000000343 00005 f 0000000344 00003 f 0000000345 00003 f 0000000348 00004 f 0000042225 00003 n 0000042583 00003 n 0000000349 00003 f 0000000351 00003 f 0000042605 00003 n 0000000352 00004 f 0000000354 00003 f 0000042682 00003 n 0000000355 00004 f 0000000357 00003 f 0000043040 00003 n 0000000359 00003 f 0000043062 00004 n 0000000360 00003 f 0000000361 00003 f 0000000362 00003 f 0000000364 00004 f 0000043139 00003 n 0000000365 00003 f 0000000367 00003 f 0000043497 00003 n 0000000369 00003 f 0000043519 00003 n 0000000370 00003 f 0000000371 00004 f 0000000372 00004 f 0000000374 00003 f 0000043596 00003 n 0000000376 00004 f 0000043954 00003 n 0000000377 00003 f 0000000379 00003 f 0000043976 00003 n 0000000380 00004 f 0000000381 00004 f 0000000383 00003 f 0000044053 00003 n 0000000386 00003 f 0000044411 00003 n 0000044433 00003 n 0000000387 00004 f 0000000388 00003 f 0000000389 00003 f 0000000391 00003 f 0000044510 00005 n 0000000392 00003 f 0000000393 00003 f 0000000396 00003 f 0000044868 00003 n 0000044890 00003 n 0000000397 00004 f 0000000399 00003 f 0000044967 00003 n 0000000400 00003 f 0000000403 00004 f 0000045325 00003 n 0000045347 00003 n 0000000404 00003 f 0000000405 00003 f 0000000406 00004 f 0000000407 00004 f 0000000408 00003 f 0000000410 00003 f 0000045424 00003 n 0000000411 00004 f 0000000412 00003 f 0000000413 00003 f 0000000416 00003 f 0000045782 00003 n 0000045804 00003 n 0000000417 00003 f 0000000418 00003 f 0000000420 00004 f 0000045881 00003 n 0000000421 00004 f 0000000422 00003 f 0000000425 00004 f 0000046237 00003 n 0000046259 00003 n 0000000426 00003 f 0000000427 00004 f 0000000428 00003 f 0000000431 00003 f 0000046336 00003 n 0000046694 00004 n 0000000432 00003 f 0000000433 00003 f 0000000435 00003 f 0000046716 00003 n 0000000437 00004 f 0000046793 00003 n 0000000438 00003 f 0000000440 00004 f 0000047133 00003 n 0000000442 00003 f 0000047155 00003 n 0000000443 00004 f 0000000444 00003 f 0000000445 00004 f 0000000448 00003 f 0000047232 00003 n 0000047590 00003 n 0000000450 00003 f 0000047612 00003 n 0000000451 00004 f 0000000452 00003 f 0000000453 00004 f 0000000455 00003 f 0000047689 00004 n 0000000456 00003 f 0000000459 00003 f 0000048047 00003 n 0000048069 00003 n 0000000460 00004 f 0000000461 00003 f 0000000462 00003 f 0000000465 00004 f 0000048146 00003 n 0000048504 00003 n 0000000467 00003 f 0000048526 00003 n 0000000468 00003 f 0000000469 00003 f 0000000471 00004 f 0000048603 00004 n 0000000472 00003 f 0000000473 00003 f 0000000476 00004 f 0000048961 00003 n 0000048983 00003 n 0000000477 00003 f 0000000478 00003 f 0000000480 00004 f 0000049060 00003 n 0000000482 00003 f 0000049418 00003 n 0000000483 00004 f 0000000485 00003 f 0000049440 00003 n 0000000486 00003 f 0000000487 00005 f 0000000489 00003 f 0000049517 00003 n 0000000491 00003 f 0000049875 00003 n 0000000493 00003 f 0000049897 00003 n 0000000494 00004 f 0000000495 00004 f 0000000496 00003 f 0000000500 00003 f 0000049974 00003 n 0000050332 00003 n 0000050354 00003 n 0000000501 00003 f 0000000502 00003 f 0000000503 00004 f 0000000504 00005 f 0000000505 00003 f 0000000507 00003 f 0000050431 00003 n 0000000510 00003 f 0000050789 00003 n 0000050811 00003 n 0000000511 00004 f 0000000512 00003 f 0000000513 00003 f 0000000516 00004 f 0000050888 00003 n 0000051244 00003 n 0000000517 00003 f 0000000519 00003 f 0000051266 00004 n 0000000520 00003 f 0000000521 00004 f 0000000523 00003 f 0000051343 00003 n 0000000524 00004 f 0000000527 00003 f 0000051701 00003 n 0000051723 00003 n 0000000528 00003 f 0000000529 00004 f 0000000531 00003 f 0000051800 00003 n 0000000533 00003 f 0000052158 00003 n 0000000534 00004 f 0000000535 00004 f 0000000537 00003 f 0000052180 00003 n 0000000539 00004 f 0000052257 00003 n 0000000540 00003 f 0000000541 00003 f 0000000544 00003 f 0000052615 00003 n 0000052637 00004 n 0000000545 00003 f 0000000546 00003 f 0000000547 00004 f 0000000550 00003 f 0000052714 00003 n 0000053072 00003 n 0000000551 00004 f 0000000553 00003 f 0000053094 00003 n 0000000554 00003 f 0000000555 00005 f 0000000556 00003 f 0000000559 00003 f 0000053171 00003 n 0000053529 00003 n 0000000561 00003 f 0000053551 00003 n 0000000562 00003 f 0000000563 00004 f 0000000564 00004 f 0000000566 00003 f 0000053628 00003 n 0000000568 00004 f 0000053986 00003 n 0000000569 00003 f 0000000571 00003 f 0000054008 00003 n 0000000573 00004 f 0000054085 00003 n 0000000574 00003 f 0000000575 00003 f 0000000577 00003 f 0000054443 00004 n 0000000579 00003 f 0000054465 00003 n 0000000580 00003 f 0000000581 00003 f 0000000584 00004 f 0000054542 00003 n 0000054900 00003 n 0000000585 00003 f 0000000586 00003 f 0000000588 00005 f 0000054922 00003 n 0000000589 00003 f 0000000590 00003 f 0000000592 00004 f 0000054999 00003 n 0000000595 00003 f 0000055355 00003 n 0000055377 00003 n 0000000596 00003 f 0000000597 00004 f 0000000598 00003 f 0000000600 00004 f 0000055454 00003 n 0000000602 00003 f 0000057982 00003 n 0000000603 00004 f 0000000606 00003 f 0000058005 00003 n 0000058081 00003 n 0000000607 00004 f 0000000608 00003 f 0000000612 00003 f 0000058163 00003 n 0000058519 00003 n 0000058541 00003 n 0000000613 00003 f 0000000615 00003 f 0000058618 00003 n 0000000617 00003 f 0000058700 00004 n 0000000618 00003 f 0000000619 00004 f 0000000622 00003 f 0000059056 00003 n 0000059078 00003 n 0000000623 00004 f 0000000624 00003 f 0000000626 00003 f 0000059155 00003 n 0000000628 00004 f 0000059513 00003 n 0000000629 00003 f 0000000631 00003 f 0000059535 00003 n 0000000632 00004 f 0000000634 00003 f 0000059612 00003 n 0000000636 00004 f 0000059968 00003 n 0000000637 00003 f 0000000639 00003 f 0000059990 00004 n 0000000640 00003 f 0000000641 00004 f 0000000643 00003 f 0000060067 00003 n 0000000646 00003 f 0000060425 00003 n 0000060447 00003 n 0000000647 00004 f 0000000648 00003 f 0000000649 00003 f 0000000651 00004 f 0000060524 00004 n 0000000652 00003 f 0000000653 00003 f 0000000656 00003 f 0000060880 00003 n 0000060902 00003 n 0000000657 00004 f 0000000658 00003 f 0000000659 00004 f 0000000663 00003 f 0000060979 00003 n 0000061337 00003 n 0000061359 00003 n 0000000664 00003 f 0000000665 00003 f 0000000666 00004 f 0000000668 00004 f 0000061436 00003 n 0000000669 00003 f 0000000671 00004 f 0000061792 00003 n 0000000673 00003 f 0000061814 00003 n 0000000674 00003 f 0000000676 00004 f 0000061891 00003 n 0000000677 00003 f 0000000679 00003 f 0000062249 00004 n 0000000681 00003 f 0000062271 00003 n 0000000682 00003 f 0000000683 00004 f 0000000685 00004 f 0000062348 00003 n 0000000687 00003 f 0000062706 00003 n 0000000688 00003 f 0000000690 00003 f 0000062728 00004 n 0000000691 00004 f 0000000692 00003 f 0000000693 00003 f 0000000696 00003 f 0000062805 00003 n 0000063161 00003 n 0000000697 00003 f 0000000698 00003 f 0000000700 00004 f 0000063183 00003 n 0000000701 00004 f 0000000702 00003 f 0000000703 00004 f 0000000707 00003 f 0000063260 00003 n 0000063618 00003 n 0000063640 00003 n 0000000708 00003 f 0000000709 00003 f 0000000710 00004 f 0000000712 00004 f 0000063717 00003 n 0000000713 00003 f 0000000715 00003 f 0000064075 00004 n 0000000717 00003 f 0000064097 00003 n 0000000718 00003 f 0000000720 00004 f 0000064174 00003 n 0000000721 00003 f 0000000724 00003 f 0000064532 00003 n 0000064554 00003 n 0000000725 00004 f 0000000727 00003 f 0000064631 00003 n 0000000728 00003 f 0000000731 00003 f 0000064989 00003 n 0000065011 00004 n 0000000732 00003 f 0000000733 00003 f 0000000735 00004 f 0000065088 00003 n 0000000737 00003 f 0000065446 00003 n 0000000739 00003 f 0000065468 00003 n 0000000740 00004 f 0000000741 00003 f 0000000743 00003 f 0000065545 00004 n 0000000745 00003 f 0000065903 00003 n 0000000746 00003 f 0000000748 00004 f 0000065925 00003 n 0000000749 00004 f 0000000751 00003 f 0000066002 00003 n 0000000752 00003 f 0000000755 00003 f 0000066360 00004 n 0000066382 00003 n 0000000756 00003 f 0000000757 00003 f 0000000758 00003 f 0000000761 00004 f 0000066459 00003 n 0000066817 00003 n 0000000762 00003 f 0000000763 00004 f 0000000765 00004 f 0000066839 00003 n 0000000766 00003 f 0000000767 00004 f 0000000769 00003 f 0000066916 00003 n 0000000772 00003 f 0000067272 00003 n 0000067294 00003 n 0000000773 00003 f 0000000774 00004 f 0000000775 00004 f 0000000777 00003 f 0000067371 00003 n 0000000779 00003 f 0000067729 00004 n 0000000780 00003 f 0000000782 00003 f 0000067751 00003 n 0000000783 00004 f 0000000784 00004 f 0000000785 00003 f 0000000789 00003 f 0000067828 00003 n 0000068186 00003 n 0000068208 00003 n 0000000790 00003 f 0000000791 00004 f 0000000792 00003 f 0000000793 00003 f 0000000794 00004 f 0000000795 00004 f 0000000796 00003 f 0000000800 00003 f 0000068285 00003 n 0000068643 00003 n 0000068665 00003 n 0000000801 00003 f 0000000802 00003 f 0000000803 00004 f 0000000805 00004 f 0000068742 00003 n 0000000807 00003 f 0000069100 00003 n 0000000809 00003 f 0000069122 00003 n 0000000810 00003 f 0000000811 00005 f 0000000813 00003 f 0000069199 00003 n 0000000814 00003 f 0000000816 00004 f 0000069557 00003 n 0000000818 00003 f 0000069579 00003 n 0000000819 00004 f 0000000820 00003 f 0000000823 00003 f 0000069656 00003 n 0000070014 00003 n 0000000824 00004 f 0000000825 00003 f 0000000827 00003 f 0000070036 00004 n 0000000828 00004 f 0000000829 00003 f 0000000831 00003 f 0000070113 00003 n 0000000834 00003 f 0000070471 00003 n 0000070493 00003 n 0000000835 00004 f 0000000836 00003 f 0000000837 00003 f 0000000840 00004 f 0000070570 00003 n 0000070928 00003 n 0000000841 00003 f 0000000843 00003 f 0000070950 00003 n 0000000844 00003 f 0000000845 00004 f 0000000846 00003 f 0000000847 00005 f 0000000849 00003 f 0000071027 00003 n 0000000852 00003 f 0000071383 00003 n 0000071405 00003 n 0000000853 00003 f 0000000854 00003 f 0000000856 00004 f 0000071482 00003 n 0000000857 00004 f 0000000859 00003 f 0000071840 00003 n 0000000861 00003 f 0000071862 00003 n 0000000862 00004 f 0000000863 00004 f 0000000864 00003 f 0000000867 00003 f 0000071939 00003 n 0000072295 00004 n 0000000868 00003 f 0000000869 00003 f 0000000871 00003 f 0000072317 00003 n 0000000873 00004 f 0000072394 00003 n 0000000875 00003 f 0000072752 00003 n 0000000876 00003 f 0000000878 00004 f 0000072774 00003 n 0000000879 00004 f 0000000880 00003 f 0000000881 00004 f 0000000884 00003 f 0000072851 00003 n 0000073210 00003 n 0000000886 00003 f 0000073232 00003 n 0000000887 00004 f 0000000888 00003 f 0000000889 00004 f 0000000892 00003 f 0000073309 00003 n 0000073668 00003 n 0000000893 00003 f 0000000895 00003 f 0000073690 00004 n 0000000896 00004 f 0000000897 00003 f 0000000898 00003 f 0000000901 00004 f 0000073767 00003 n 0000074126 00003 n 0000000903 00003 f 0000074148 00003 n 0000000904 00003 f 0000000905 00003 f 0000000907 00004 f 0000074225 00004 n 0000000908 00003 f 0000000909 00003 f 0000000912 00003 f 0000074584 00004 n 0000074606 00003 n 0000000913 00003 f 0000000914 00003 f 0000000916 00004 f 0000074683 00003 n 0000000918 00003 f 0000075042 00003 n 0000000919 00004 f 0000000921 00003 f 0000075064 00003 n 0000000922 00003 f 0000000924 00004 f 0000075141 00003 n 0000000926 00003 f 0000075500 00003 n 0000000927 00004 f 0000000929 00003 f 0000075522 00003 n 0000000930 00004 f 0000000931 00004 f 0000000932 00003 f 0000000936 00003 f 0000075599 00003 n 0000075958 00003 n 0000075980 00003 n 0000000937 00003 f 0000000938 00003 f 0000000939 00004 f 0000000941 00004 f 0000076057 00003 n 0000000942 00003 f 0000000943 00004 f 0000000946 00003 f 0000076416 00003 n 0000076438 00003 n 0000000947 00004 f 0000000948 00003 f 0000000949 00003 f 0000000952 00004 f 0000076515 00003 n 0000076874 00003 n 0000000953 00003 f 0000000955 00003 f 0000076896 00003 n 0000000956 00004 f 0000000958 00003 f 0000076973 00003 n 0000000959 00004 f 0000000960 00004 f 0000000963 00003 f 0000077332 00003 n 0000077354 00003 n 0000000964 00003 f 0000000965 00004 f 0000000967 00003 f 0000077431 00003 n 0000000969 00003 f 0000077790 00003 n 0000000971 00004 f 0000077812 00003 n 0000000972 00003 f 0000000973 00003 f 0000000975 00004 f 0000077889 00004 n 0000000976 00003 f 0000000977 00003 f 0000000980 00003 f 0000078248 00003 n 0000078270 00004 n 0000000981 00003 f 0000000982 00003 f 0000000983 00004 f 0000000987 00003 f 0000078347 00003 n 0000078706 00003 n 0000078728 00003 n 0000000988 00003 f 0000000989 00003 f 0000000990 00004 f 0000000991 00005 f 0000000992 00003 f 0000000995 00003 f 0000078805 00003 n 0000079162 00003 n 0000000997 00003 f 0000079184 00003 n 0000000998 00003 f 0000000999 00004 f 0000001000 00004 f 0000001003 00003 f 0000079261 00003 n 0000079623 00003 n 0000001005 00003 f 0000079646 00003 n 0000001006 00003 f 0000001007 00004 f 0000001009 00004 f 0000079724 00003 n 0000001010 00003 f 0000001011 00004 f 0000001014 00003 f 0000080068 00003 n 0000080091 00003 n 0000001015 00004 f 0000001016 00003 f 0000001017 00003 f 0000001020 00003 f 0000080169 00003 n 0000080531 00004 n 0000001021 00003 f 0000001022 00003 f 0000001024 00004 f 0000080554 00003 n 0000001025 00003 f 0000001026 00003 f 0000001027 00004 f 0000001031 00003 f 0000080632 00003 n 0000080994 00003 n 0000081017 00003 n 0000001032 00003 f 0000001033 00003 f 0000001034 00004 f 0000001036 00004 f 0000081095 00003 n 0000001037 00003 f 0000001039 00003 f 0000081457 00004 n 0000001041 00003 f 0000081480 00003 n 0000001042 00003 f 0000001043 00004 f 0000001044 00004 f 0000001047 00003 f 0000081558 00003 n 0000081916 00003 n 0000001049 00003 f 0000081939 00003 n 0000001050 00003 f 0000001051 00004 f 0000001053 00003 f 0000082017 00003 n 0000001054 00004 f 0000001055 00004 f 0000001058 00003 f 0000082379 00003 n 0000082402 00003 n 0000001059 00004 f 0000001060 00003 f 0000001061 00003 f 0000001064 00003 f 0000082480 00003 n 0000082842 00004 n 0000001065 00003 f 0000001067 00003 f 0000082865 00003 n 0000001068 00003 f 0000001070 00004 f 0000082943 00003 n 0000001071 00004 f 0000001073 00003 f 0000083305 00003 n 0000001075 00003 f 0000083328 00004 n 0000001076 00003 f 0000001077 00003 f 0000001079 00004 f 0000083406 00003 n 0000001081 00003 f 0000083768 00003 n 0000001083 00003 f 0000083791 00003 n 0000001084 00004 f 0000001085 00003 f 0000001086 00004 f 0000001088 00004 f 0000083869 00003 n 0000001089 00003 f 0000001092 00003 f 0000084229 00003 n 0000084252 00003 n 0000001093 00004 f 0000001094 00003 f 0000001095 00004 f 0000001099 00003 f 0000084330 00003 n 0000084692 00003 n 0000084715 00003 n 0000001100 00003 f 0000001101 00003 f 0000001102 00003 f 0000001104 00004 f 0000084793 00004 n 0000001105 00003 f 0000001107 00003 f 0000085155 00003 n 0000001109 00003 f 0000085178 00003 n 0000001110 00004 f 0000001111 00003 f 0000001113 00003 f 0000085256 00003 n 0000001115 00003 f 0000085618 00004 n 0000001116 00003 f 0000001118 00003 f 0000085641 00003 n 0000001119 00004 f 0000001121 00003 f 0000085719 00003 n 0000001123 00003 f 0000086081 00003 n 0000001124 00004 f 0000001126 00003 f 0000086104 00003 n 0000001127 00004 f 0000001129 00003 f 0000086182 00003 n 0000001131 00003 f 0000086544 00003 n 0000001133 00003 f 0000086567 00003 n 0000001134 00004 f 0000001135 00004 f 0000001136 00003 f 0000001139 00003 f 0000086645 00003 n 0000087007 00004 n 0000001140 00003 f 0000001141 00003 f 0000001143 00003 f 0000087030 00003 n 0000001144 00005 f 0000001145 00003 f 0000001147 00003 f 0000087108 00003 n 0000001150 00003 f 0000087470 00003 n 0000087493 00003 n 0000001151 00004 f 0000001152 00003 f 0000001153 00003 f 0000001155 00004 f 0000087571 00004 n 0000001156 00003 f 0000001159 00003 f 0000087933 00003 n 0000087956 00003 n 0000001160 00003 f 0000001161 00004 f 0000001163 00003 f 0000088034 00003 n 0000001164 00004 f 0000001167 00003 f 0000088394 00003 n 0000088417 00003 n 0000001168 00003 f 0000001169 00004 f 0000001170 00003 f 0000001171 00004 f 0000001173 00003 f 0000088495 00003 n 0000001174 00003 f 0000001175 00004 f 0000001178 00003 f 0000091142 00003 n 0000091166 00003 n 0000001179 00004 f 0000001180 00003 f 0000001181 00003 f 0000001184 00003 f 0000091243 00003 n 0000091603 00004 n 0000001185 00003 f 0000001186 00003 f 0000001189 00004 f 0000091626 00003 n 0000091704 00003 n 0000001191 00003 f 0000091787 00003 n 0000001193 00003 f 0000092143 00003 n 0000001195 00003 f 0000092166 00004 n 0000001196 00003 f 0000001197 00003 f 0000001199 00004 f 0000092244 00003 n 0000001201 00003 f 0000092602 00003 n 0000001203 00003 f 0000092625 00004 n 0000001204 00003 f 0000001205 00003 f 0000001206 00004 f 0000001208 00004 f 0000092703 00003 n 0000001209 00003 f 0000001212 00003 f 0000093059 00003 n 0000093082 00003 n 0000001213 00004 f 0000001214 00003 f 0000001215 00004 f 0000001218 00003 f 0000093160 00003 n 0000093522 00003 n 0000001219 00004 f 0000001220 00003 f 0000001222 00003 f 0000093545 00003 n 0000001224 00004 f 0000093623 00003 n 0000001225 00003 f 0000001226 00003 f 0000001229 00004 f 0000093983 00003 n 0000094006 00003 n 0000001230 00003 f 0000001231 00004 f 0000001233 00003 f 0000094084 00003 n 0000001235 00003 f 0000094446 00004 n 0000001236 00003 f 0000001237 00004 f 0000001239 00003 f 0000094469 00003 n 0000001240 00004 f 0000001243 00003 f 0000094547 00003 n 0000094907 00003 n 0000001244 00003 f 0000001246 00003 f 0000094930 00003 n 0000001247 00004 f 0000001248 00004 f 0000001249 00003 f 0000001252 00003 f 0000095008 00004 n 0000095370 00003 n 0000001253 00003 f 0000001255 00003 f 0000095393 00003 n 0000001256 00003 f 0000001257 00005 f 0000001259 00003 f 0000095471 00003 n 0000001260 00003 f 0000001263 00003 f 0000095833 00003 n 0000095856 00003 n 0000001264 00004 f 0000001265 00003 f 0000001266 00003 f 0000001268 00005 f 0000095934 00003 n 0000001269 00003 f 0000001272 00003 f 0000096294 00003 n 0000096317 00003 n 0000001273 00003 f 0000001275 00004 f 0000096395 00003 n 0000001276 00003 f 0000001277 00004 f 0000001280 00003 f 0000096757 00003 n 0000096780 00003 n 0000001281 00003 f 0000001282 00004 f 0000001283 00004 f 0000001286 00003 f 0000096858 00003 n 0000097220 00003 n 0000001287 00004 f 0000001288 00003 f 0000001290 00003 f 0000097243 00003 n 0000001292 00004 f 0000097321 00003 n 0000001293 00003 f 0000001295 00003 f 0000097679 00003 n 0000001297 00003 f 0000097702 00004 n 0000001298 00003 f 0000001299 00004 f 0000001300 00003 f 0000001303 00004 f 0000097780 00003 n 0000098142 00003 n 0000001304 00003 f 0000001306 00003 f 0000098165 00003 n 0000001307 00004 f 0000001308 00004 f 0000001309 00003 f 0000001312 00003 f 0000098243 00003 n 0000098605 00003 n 0000001314 00003 f 0000098628 00003 n 0000001315 00004 f 0000001316 00004 f 0000001317 00003 f 0000001319 00003 f 0000098706 00004 n 0000001321 00003 f 0000099068 00003 n 0000001323 00003 f 0000099091 00003 n 0000001324 00003 f 0000001326 00004 f 0000099169 00003 n 0000001327 00004 f 0000001328 00003 f 0000001331 00003 f 0000099531 00003 n 0000099554 00004 n 0000001332 00003 f 0000001333 00003 f 0000001334 00003 f 0000001337 00004 f 0000099632 00003 n 0000099990 00003 n 0000001338 00003 f 0000001339 00004 f 0000001341 00003 f 0000100013 00003 n 0000001343 00004 f 0000100091 00003 n 0000001344 00003 f 0000001346 00003 f 0000100451 00003 n 0000001348 00004 f 0000100474 00003 n 0000001349 00003 f 0000001350 00004 f 0000001351 00004 f 0000001353 00003 f 0000100552 00003 n 0000001355 00003 f 0000100914 00003 n 0000001356 00003 f 0000001358 00003 f 0000100937 00003 n 0000001359 00004 f 0000001360 00003 f 0000001361 00004 f 0000001363 00003 f 0000101015 00004 n 0000001365 00003 f 0000101377 00003 n 0000001367 00003 f 0000101400 00003 n 0000001368 00003 f 0000001370 00004 f 0000101478 00003 n 0000001371 00004 f 0000001372 00003 f 0000001375 00003 f 0000101840 00003 n 0000101863 00003 n 0000001376 00004 f 0000001377 00004 f 0000001378 00003 f 0000001381 00003 f 0000101941 00003 n 0000102303 00003 n 0000001382 00003 f 0000001384 00003 f 0000102326 00002 n 0000001385 00003 f 0000001389 00003 f 0000102404 00002 n 0000102766 00003 n 0000102789 00002 n 0000001391 00004 f 0000102867 00002 n 0000001393 00003 f 0000103229 00002 n 0000001395 00003 f 0000103252 00002 n 0000001396 00003 f 0000001400 00003 f 0000103330 00003 n 0000103692 00002 n 0000103715 00002 n 0000001401 00003 f 0000001405 00003 f 0000103793 00002 n 0000104155 00002 n 0000104178 00002 n 0000001406 00004 f 0000001409 00003 f 0000104256 00002 n 0000104616 00002 n 0000001411 00003 f 0000104639 00002 n 0000001413 00004 f 0000104717 00002 n 0000001416 00003 f 0000105079 00002 n 0000105102 00002 n 0000001417 00003 f 0000001418 00003 f 0000001422 00003 f 0000105180 00002 n 0000105540 00002 n 0000105563 00004 n 0000001425 00003 f 0000105641 00002 n 0000106003 00002 n 0000001426 00003 f 0000001428 00003 f 0000106026 00002 n 0000001429 00003 f 0000001433 00003 f 0000106104 00002 n 0000106466 00003 n 0000106489 00002 n 0000001434 00003 f 0000001436 00003 f 0000106567 00002 n 0000001439 00003 f 0000106929 00003 n 0000106952 00002 n 0000001440 00003 f 0000001444 00003 f 0000107030 00003 n 0000107392 00002 n 0000107415 00002 n 0000001445 00003 f 0000001446 00003 f 0000001449 00003 f 0000107493 00002 n 0000107855 00002 n 0000001451 00003 f 0000107878 00002 n 0000001455 00004 f 0000107956 00002 n 0000108318 00003 n 0000108341 00002 n 0000001456 00003 f 0000001457 00003 f 0000001460 00003 f 0000108419 00002 n 0000108781 00002 n 0000001462 00003 f 0000108804 00003 n 0000001465 00003 f 0000108882 00002 n 0000109244 00002 n 0000001466 00003 f 0000001468 00003 f 0000109267 00002 n 0000001470 00003 f 0000109345 00003 n 0000001473 00003 f 0000109707 00002 n 0000109730 00002 n 0000001475 00004 f 0000109808 00002 n 0000001477 00003 f 0000110170 00002 n 0000001479 00003 f 0000110193 00002 n 0000001480 00003 f 0000001484 00003 f 0000110271 00003 n 0000110633 00002 n 0000110656 00002 n 0000001485 00003 f 0000001489 00004 f 0000110734 00002 n 0000111096 00002 n 0000111119 00002 n 0000001490 00003 f 0000001491 00003 f 0000001495 00003 f 0000111197 00002 n 0000111559 00003 n 0000111582 00002 n 0000001496 00003 f 0000001497 00003 f 0000001500 00003 f 0000111660 00002 n 0000112022 00002 n 0000001502 00003 f 0000112045 00003 n 0000001505 00003 f 0000112123 00002 n 0000112483 00003 n 0000001507 00003 f 0000112506 00002 n 0000001509 00003 f 0000112584 00002 n 0000001510 00003 f 0000001513 00003 f 0000112946 00002 n 0000112969 00002 n 0000001515 00004 f 0000113047 00002 n 0000001518 00003 f 0000113391 00002 n 0000113414 00003 n 0000001519 00003 f 0000001521 00003 f 0000113492 00002 n 0000001524 00003 f 0000113854 00002 n 0000113877 00002 n 0000001525 00004 f 0000001529 00003 f 0000113955 00002 n 0000114317 00002 n 0000114340 00002 n 0000001530 00003 f 0000001531 00003 f 0000001535 00003 f 0000114418 00002 n 0000114780 00003 n 0000114803 00003 n 0000001537 00003 f 0000114881 00002 n 0000001539 00003 f 0000115243 00002 n 0000001541 00003 f 0000115266 00002 n 0000001542 00003 f 0000001545 00003 f 0000115344 00002 n 0000115706 00003 n 0000001547 00003 f 0000115729 00002 n 0000001549 00003 f 0000115807 00002 n 0000001552 00004 f 0000116169 00002 n 0000116192 00002 n 0000001553 00003 f 0000001557 00003 f 0000116270 00003 n 0000116632 00002 n 0000116655 00002 n 0000001558 00003 f 0000001559 00003 f 0000001561 00003 f 0000116733 00002 n 0000001564 00003 f 0000117095 00002 n 0000117118 00002 n 0000001568 00004 f 0000117196 00003 n 0000117556 00002 n 0000117579 00002 n 0000001569 00003 f 0000001570 00003 f 0000001573 00003 f 0000117657 00002 n 0000118019 00002 n 0000001575 00003 f 0000118042 00003 n 0000001577 00003 f 0000118120 00002 n 0000001579 00003 f 0000118482 00002 n 0000001581 00003 f 0000118505 00002 n 0000001583 00004 f 0000118583 00002 n 0000001586 00003 f 0000118945 00002 n 0000118968 00002 n 0000001589 00003 f 0000119046 00003 n 0000119408 00002 n 0000001591 00003 f 0000119431 00002 n 0000001592 00003 f 0000001593 00003 f 0000001597 00003 f 0000119509 00002 n 0000119871 00002 n 0000119894 00002 n 0000001598 00004 f 0000001602 00003 f 0000119972 00002 n 0000120334 00002 n 0000120357 00003 n 0000001603 00003 f 0000001605 00003 f 0000120435 00002 n 0000001608 00003 f 0000120797 00002 n 0000120820 00003 n 0000001609 00003 f 0000001612 00003 f 0000120898 00002 n 0000121260 00002 n 0000001613 00003 f 0000001615 00003 f 0000121283 00002 n 0000001619 00003 f 0000121361 00002 n 0000121721 00004 n 0000121744 00002 n 0000001621 00003 f 0000121822 00002 n 0000001622 00003 f 0000001625 00003 f 0000124574 00002 n 0000124598 00002 n 0000001626 00003 f 0000001629 00003 f 0000124675 00003 n 0000125035 00002 n 0000001632 00003 f 0000125058 00002 n 0000125136 00002 n 0000001636 00003 f 0000125219 00003 n 0000125579 00002 n 0000125602 00002 n 0000001637 00003 f 0000001641 00004 f 0000125680 00002 n 0000126042 00002 n 0000126065 00002 n 0000001642 00003 f 0000001643 00003 f 0000001645 00003 f 0000126143 00002 n 0000001648 00003 f 0000126503 00002 n 0000126526 00003 n 0000001651 00003 f 0000126604 00003 n 0000126966 00002 n 0000001653 00003 f 0000126989 00002 n 0000001654 00003 f 0000001656 00003 f 0000127067 00002 n 0000001659 00003 f 0000127427 00003 n 0000127450 00002 n 0000001661 00003 f 0000127528 00002 n 0000001662 00003 f 0000001665 00003 f 0000127890 00002 n 0000127913 00002 n 0000001666 00004 f 0000001670 00003 f 0000127991 00002 n 0000128351 00002 n 0000128374 00003 n 0000001671 00003 f 0000001673 00003 f 0000128452 00002 n 0000001676 00003 f 0000128814 00002 n 0000128837 00002 n 0000001677 00003 f 0000001681 00004 f 0000128915 00002 n 0000129277 00002 n 0000129300 00002 n 0000001682 00004 f 0000001685 00003 f 0000129378 00002 n 0000129738 00002 n 0000001686 00003 f 0000001688 00003 f 0000129761 00002 n 0000001689 00003 f 0000001691 00003 f 0000129839 00002 n 0000001693 00003 f 0000130201 00002 n 0000001695 00003 f 0000130224 00002 n 0000001696 00003 f 0000001700 00003 f 0000130302 00003 n 0000130664 00002 n 0000130687 00002 n 0000001701 00004 f 0000001705 00003 f 0000130765 00002 n 0000131127 00002 n 0000131150 00002 n 0000001706 00003 f 0000001707 00003 f 0000001711 00003 f 0000131228 00002 n 0000131590 00003 n 0000131613 00002 n 0000001712 00003 f 0000001715 00003 f 0000131691 00003 n 0000132049 00002 n 0000001717 00003 f 0000132072 00002 n 0000001718 00003 f 0000001721 00003 f 0000132150 00002 n 0000132512 00003 n 0000001723 00003 f 0000132535 00002 n 0000001725 00003 f 0000132613 00002 n 0000001726 00003 f 0000001729 00003 f 0000132975 00002 n 0000132998 00002 n 0000001733 00004 f 0000133076 00002 n 0000133438 00002 n 0000133461 00002 n 0000001735 00004 f 0000133539 00002 n 0000001737 00003 f 0000133899 00002 n 0000001739 00003 f 0000133922 00002 n 0000001740 00003 f 0000001744 00003 f 0000134000 00003 n 0000134362 00002 n 0000134385 00002 n 0000001745 00003 f 0000001749 00004 f 0000134463 00002 n 0000134825 00002 n 0000134848 00002 n 0000001750 00003 f 0000001751 00003 f 0000001755 00003 f 0000134926 00002 n 0000135288 00003 n 0000135311 00002 n 0000001756 00003 f 0000001757 00003 f 0000001760 00003 f 0000135389 00002 n 0000135751 00002 n 0000001762 00003 f 0000135774 00003 n 0000001765 00003 f 0000135852 00002 n 0000136214 00003 n 0000001767 00003 f 0000136237 00002 n 0000001769 00003 f 0000136315 00002 n 0000001770 00003 f 0000001773 00003 f 0000136677 00002 n 0000136700 00002 n 0000001775 00004 f 0000136778 00002 n 0000001778 00003 f 0000137140 00002 n 0000137163 00003 n 0000001779 00003 f 0000001781 00003 f 0000137241 00002 n 0000001784 00003 f 0000137603 00002 n 0000137626 00002 n 0000001785 00004 f 0000001789 00003 f 0000137704 00002 n 0000138064 00002 n 0000138087 00002 n 0000001790 00003 f 0000001791 00003 f 0000001795 00003 f 0000138165 00002 n 0000138527 00003 n 0000138550 00003 n 0000001797 00003 f 0000138628 00002 n 0000001799 00003 f 0000138988 00002 n 0000001801 00003 f 0000139011 00002 n 0000001802 00003 f 0000001805 00003 f 0000139089 00002 n 0000139451 00003 n 0000001807 00003 f 0000139474 00002 n 0000001809 00003 f 0000139552 00002 n 0000001812 00004 f 0000139914 00002 n 0000139937 00002 n 0000001813 00003 f 0000001817 00003 f 0000140015 00003 n 0000140373 00002 n 0000140396 00002 n 0000001818 00003 f 0000001819 00003 f 0000001821 00003 f 0000140474 00002 n 0000001824 00003 f 0000140836 00002 n 0000140859 00002 n 0000001828 00004 f 0000140937 00003 n 0000141299 00002 n 0000141322 00002 n 0000001829 00003 f 0000001830 00003 f 0000001833 00003 f 0000141400 00002 n 0000141762 00002 n 0000001835 00003 f 0000141785 00003 n 0000001837 00003 f 0000141863 00002 n 0000001839 00003 f 0000142225 00002 n 0000001841 00003 f 0000142248 00002 n 0000001843 00004 f 0000142326 00002 n 0000001846 00003 f 0000142688 00002 n 0000142711 00003 n 0000001848 00003 f 0000142789 00002 n 0000001849 00003 f 0000001852 00003 f 0000143151 00002 n 0000143174 00002 n 0000001853 00003 f 0000001857 00003 f 0000143252 00002 n 0000143614 00002 n 0000143637 00002 n 0000001858 00004 f 0000001862 00003 f 0000143715 00002 n 0000144077 00002 n 0000144100 00003 n 0000001863 00003 f 0000001865 00003 f 0000144178 00002 n 0000001868 00003 f 0000144540 00002 n 0000144563 00003 n 0000001869 00003 f 0000001872 00003 f 0000144641 00002 n 0000145003 00002 n 0000001873 00003 f 0000001875 00003 f 0000145026 00002 n 0000001879 00003 f 0000145104 00002 n 0000145466 00004 n 0000145489 00002 n 0000001881 00003 f 0000145567 00002 n 0000001882 00003 f 0000001885 00003 f 0000145927 00002 n 0000145950 00002 n 0000001886 00003 f 0000001889 00003 f 0000146028 00003 n 0000146390 00002 n 0000001891 00003 f 0000146413 00002 n 0000001892 00003 f 0000001896 00003 f 0000146491 00003 n 0000146835 00002 n 0000146858 00002 n 0000001897 00003 f 0000001901 00004 f 0000146936 00002 n 0000147298 00002 n 0000147321 00002 n 0000001902 00003 f 0000001903 00003 f 0000001905 00003 f 0000147399 00002 n 0000001908 00003 f 0000147761 00002 n 0000147784 00003 n 0000001911 00003 f 0000147862 00003 n 0000148224 00002 n 0000001913 00003 f 0000148247 00002 n 0000001914 00003 f 0000001916 00003 f 0000148325 00002 n 0000001919 00003 f 0000148687 00003 n 0000148710 00002 n 0000001921 00003 f 0000148788 00002 n 0000001922 00003 f 0000001925 00003 f 0000149150 00002 n 0000149173 00002 n 0000001926 00004 f 0000001930 00003 f 0000149251 00002 n 0000149613 00002 n 0000149636 00003 n 0000001931 00003 f 0000001933 00003 f 0000149714 00002 n 0000001936 00003 f 0000150076 00002 n 0000150099 00002 n 0000001937 00003 f 0000001941 00004 f 0000150177 00002 n 0000150539 00002 n 0000150562 00002 n 0000001942 00004 f 0000001945 00003 f 0000150640 00002 n 0000151000 00002 n 0000001946 00003 f 0000001948 00003 f 0000151023 00002 n 0000001951 00003 f 0000151101 00003 n 0000151463 00002 n 0000001953 00003 f 0000151486 00002 n 0000001954 00003 f 0000001956 00003 f 0000151564 00002 n 0000001959 00003 f 0000151926 00003 n 0000151949 00002 n 0000001961 00003 f 0000152027 00003 n 0000001964 00003 f 0000152389 00002 n 0000152412 00002 n 0000001965 00003 f 0000001966 00003 f 0000001970 00003 f 0000152490 00002 n 0000152852 00002 n 0000152875 00003 n 0000001971 00003 f 0000001975 00003 f 0000152953 00002 n 0000153315 00003 n 0000153338 00002 n 0000001976 00003 f 0000001977 00003 f 0000001981 00003 f 0000153416 00002 n 0000153778 00002 n 0000153801 00003 n 0000001982 00003 f 0000001985 00003 f 0000153879 00002 n 0000154241 00002 n 0000001986 00003 f 0000001988 00003 f 0000154264 00002 n 0000001992 00003 f 0000154342 00003 n 0000154704 00003 n 0000154727 00002 n 0000001993 00003 f 0000001995 00003 f 0000154805 00002 n 0000001997 00003 f 0000155165 00002 n 0000001999 00003 f 0000155188 00002 n 0000002001 00003 f 0000155266 00003 n 0000002004 00003 f 0000158024 00002 n 0000158048 00002 n 0000002005 00003 f 0000002009 00004 f 0000158125 00002 n 0000158485 00002 n 0000158508 00002 n 0000002013 00003 f 0000158586 00003 n 0000158669 00002 n 0000159029 00002 n 0000002015 00003 f 0000159052 00002 n 0000002016 00003 f 0000002017 00003 f 0000002021 00003 f 0000159130 00002 n 0000159492 00002 n 0000159515 00003 n 0000002024 00004 f 0000159593 00002 n 0000159953 00002 n 0000002025 00003 f 0000002027 00003 f 0000159976 00002 n 0000002029 00003 f 0000160054 00002 n 0000002032 00003 f 0000160416 00003 n 0000160439 00002 n 0000002033 00003 f 0000002035 00003 f 0000160517 00002 n 0000002038 00003 f 0000160877 00002 n 0000160900 00003 n 0000002039 00003 f 0000002043 00003 f 0000160978 00002 n 0000161340 00003 n 0000161363 00002 n 0000002044 00003 f 0000002045 00003 f 0000002049 00003 f 0000161441 00002 n 0000161801 00002 n 0000161824 00002 n 0000002050 00003 f 0000002054 00004 f 0000161902 00002 n 0000162264 00002 n 0000162287 00003 n 0000002055 00003 f 0000002057 00003 f 0000162365 00002 n 0000002060 00003 f 0000162727 00002 n 0000162750 00002 n 0000002061 00003 f 0000002065 00003 f 0000162828 00002 n 0000163188 00002 n 0000163211 00003 n 0000002066 00003 f 0000002069 00003 f 0000163289 00002 n 0000163651 00002 n 0000002071 00004 f 0000163674 00002 n 0000002073 00003 f 0000163752 00002 n 0000002076 00003 f 0000164114 00003 n 0000164137 00002 n 0000002077 00003 f 0000002079 00003 f 0000164215 00002 n 0000002081 00003 f 0000164577 00002 n 0000002083 00003 f 0000164600 00002 n 0000002087 00003 f 0000164678 00003 n 0000165040 00003 n 0000165063 00002 n 0000002088 00003 f 0000002089 00003 f 0000002093 00003 f 0000165141 00002 n 0000165503 00002 n 0000165526 00002 n 0000002094 00003 f 0000002097 00004 f 0000165604 00002 n 0000165966 00002 n 0000002099 00003 f 0000165989 00002 n 0000002100 00003 f 0000002103 00003 f 0000166067 00003 n 0000166429 00002 n 0000002105 00003 f 0000166452 00002 n 0000002108 00004 f 0000166530 00002 n 0000166892 00002 n 0000002109 00003 f 0000002111 00003 f 0000166915 00002 n 0000002113 00003 f 0000166993 00002 n 0000002116 00003 f 0000167353 00003 n 0000167376 00002 n 0000002118 00003 f 0000167454 00003 n 0000002121 00003 f 0000167812 00002 n 0000167835 00002 n 0000002122 00003 f 0000002125 00003 f 0000167913 00002 n 0000168275 00002 n 0000002127 00003 f 0000168298 00002 n 0000002129 00004 f 0000168376 00002 n 0000002132 00003 f 0000168738 00002 n 0000168761 00002 n 0000002133 00003 f 0000002134 00003 f 0000002138 00003 f 0000168839 00002 n 0000169201 00002 n 0000169224 00004 n 0000002141 00003 f 0000169302 00002 n 0000169660 00002 n 0000002142 00003 f 0000002144 00003 f 0000169683 00002 n 0000002145 00003 f 0000002149 00003 f 0000169761 00002 n 0000170123 00003 n 0000170146 00002 n 0000002150 00003 f 0000002152 00003 f 0000170224 00002 n 0000002155 00003 f 0000170586 00003 n 0000170609 00002 n 0000002156 00003 f 0000002160 00003 f 0000170687 00003 n 0000171049 00002 n 0000171072 00002 n 0000002161 00003 f 0000002162 00003 f 0000002165 00003 f 0000171150 00002 n 0000171510 00002 n 0000002167 00003 f 0000171533 00002 n 0000002171 00004 f 0000171611 00002 n 0000171973 00003 n 0000171996 00002 n 0000002172 00003 f 0000002173 00003 f 0000002176 00003 f 0000172074 00002 n 0000172434 00002 n 0000002178 00003 f 0000172457 00003 n 0000002181 00003 f 0000172535 00002 n 0000172897 00002 n 0000002182 00003 f 0000002184 00003 f 0000172920 00002 n 0000002186 00003 f 0000172998 00003 n 0000002189 00003 f 0000173360 00002 n 0000173383 00002 n 0000002191 00004 f 0000173461 00002 n 0000002193 00003 f 0000173819 00002 n 0000002195 00003 f 0000173842 00002 n 0000002196 00003 f 0000002200 00003 f 0000173920 00003 n 0000174278 00002 n 0000174301 00002 n 0000002201 00003 f 0000002205 00004 f 0000174379 00002 n 0000174741 00002 n 0000174764 00002 n 0000002206 00003 f 0000002207 00003 f 0000002211 00003 f 0000174842 00002 n 0000175204 00003 n 0000175227 00002 n 0000002212 00003 f 0000002213 00003 f 0000002216 00003 f 0000175305 00002 n 0000175667 00002 n 0000002218 00003 f 0000175690 00003 n 0000002221 00003 f 0000175768 00002 n 0000176130 00003 n 0000002223 00003 f 0000176153 00002 n 0000002225 00003 f 0000176231 00002 n 0000002226 00003 f 0000002229 00003 f 0000176593 00002 n 0000176616 00002 n 0000002231 00004 f 0000176694 00002 n 0000002234 00003 f 0000177056 00002 n 0000177079 00003 n 0000002235 00003 f 0000002237 00003 f 0000177157 00002 n 0000002240 00003 f 0000177519 00002 n 0000177542 00002 n 0000002241 00004 f 0000002245 00003 f 0000177620 00002 n 0000177978 00002 n 0000178001 00002 n 0000002246 00003 f 0000002247 00003 f 0000002251 00003 f 0000178079 00002 n 0000178441 00003 n 0000178464 00003 n 0000002253 00003 f 0000178542 00002 n 0000002255 00003 f 0000178904 00002 n 0000002257 00003 f 0000178927 00002 n 0000002258 00003 f 0000002261 00003 f 0000179005 00002 n 0000179365 00003 n 0000002263 00003 f 0000179388 00002 n 0000002265 00003 f 0000179466 00002 n 0000002268 00004 f 0000179828 00002 n 0000179851 00002 n 0000002269 00003 f 0000002273 00003 f 0000179929 00003 n 0000180273 00002 n 0000180296 00002 n 0000002274 00003 f 0000002275 00003 f 0000002277 00003 f 0000180374 00002 n 0000002280 00003 f 0000180736 00002 n 0000180759 00002 n 0000002284 00004 f 0000180837 00003 n 0000181199 00002 n 0000181222 00002 n 0000002285 00003 f 0000002286 00003 f 0000002289 00003 f 0000181300 00002 n 0000181662 00002 n 0000002291 00003 f 0000181685 00003 n 0000002293 00003 f 0000181763 00002 n 0000002295 00003 f 0000182125 00002 n 0000002297 00003 f 0000182148 00002 n 0000002299 00004 f 0000182226 00002 n 0000002302 00003 f 0000182588 00002 n 0000182611 00003 n 0000002304 00003 f 0000182689 00002 n 0000002305 00003 f 0000002308 00003 f 0000183047 00002 n 0000183070 00002 n 0000002309 00003 f 0000002313 00003 f 0000183148 00003 n 0000183510 00002 n 0000183533 00002 n 0000002314 00004 f 0000002317 00003 f 0000183611 00002 n 0000183969 00002 n 0000002319 00003 f 0000183992 00002 n 0000002320 00003 f 0000002324 00003 f 0000184070 00003 n 0000184430 00002 n 0000184453 00002 n 0000002325 00003 f 0000002326 00003 f 0000002329 00003 f 0000184531 00002 n 0000184893 00002 n 0000002331 00004 f 0000184916 00002 n 0000002334 00003 f 0000184994 00002 n 0000185356 00003 n 0000002336 00003 f 0000185379 00002 n 0000002337 00003 f 0000002339 00003 f 0000185457 00002 n 0000002342 00003 f 0000185819 00002 n 0000185842 00003 n 0000002344 00003 f 0000185920 00002 n 0000002347 00003 f 0000186278 00003 n 0000186301 00002 n 0000002348 00003 f 0000002349 00003 f 0000002353 00003 f 0000186379 00002 n 0000186741 00002 n 0000186764 00002 n 0000002354 00004 f 0000002357 00003 f 0000186842 00002 n 0000187204 00002 n 0000002359 00003 f 0000187227 00002 n 0000002360 00003 f 0000002364 00003 f 0000187305 00003 n 0000187667 00002 n 0000187690 00003 n 0000002365 00003 f 0000002368 00003 f 0000187768 00002 n 0000188130 00002 n 0000002370 00003 f 0000188153 00003 n 0000002372 00003 f 0000188231 00002 n 0000002375 00003 f 0000188591 00003 n 0000188614 00002 n 0000002377 00003 f 0000188692 00002 n 0000002378 00003 f 0000002381 00003 f 0000191450 00002 n 0000191474 00002 n 0000002383 00004 f 0000191551 00002 n 0000002385 00003 f 0000191741 00002 n 0000002386 00003 f 0000002387 00003 f 0000002388 00003 f 0000002394 00003 f 0000191836 00002 n 0000191866 00002 n 0000193547 00002 n 0000193571 00002 n 0000198910 00001 n 0000000000 00001 f trailer << /Size 2395 /Info 5 0 R /Root 1 0 R >> startxref 198934 %%EOF omake-0.9.8.5/doc/html/omake-detail.html0000664000152300015230000004712710655737107016114 0ustar jyhjyh Expressions and values
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 6  Expressions and values

omake provides a full programming-language including many system and IO functions. The language is object-oriented – everything is an object, including the base values like numbers and strings. However, the omake language differs from other scripting languages in three main respects.

  • Scoping is dynamic.
  • Apart from IO, the language is entirely functional – there is no assignment operator in the language.
  • Evaluation is normally eager – that is, expressions are evaluated as soon as they are encountered.

To illustrate these features, we will use the osh(1) omake program shell. The osh(1) program provides a toploop, where expressions can be entered and the result printed. osh(1) normally interprets input as command text to be executed by the shell, so in many cases we will use the value form to evaluate an expression directly.

    osh> 1
    *** omake error: File -: line 1, characters 0-1 command not found: 1
    osh> value 1
    - : "1" : Sequence
    osh> ls -l omake
    -rwxrwxr-x  1 jyh jyh 1662189 Aug 25 10:24 omake*

6.1  Dynamic scoping

Dynamic scoping means that the value of a variable is determined by the most recent binding of the variable in scope at runtime. Consider the following program.

    OPTIONS = a b c
    f() =
       println(OPTIONS = $(OPTIONS))
    g() =
       OPTIONS = d e f
       f()

If f() is called without redefining the OPTIONS variable, the function should print the string OPTIONS = a b c.

In contrast, the function g() redefines the OPTIONS variable and evaluates f() in that scope, which now prints the string OPTIONS = d e f.

The body of g defines a local scope – the redefinition of the OPTIONS variable is local to g and does not persist after the function terminates.

    osh> g()
    OPTIONS = d e f
    osh> f()
    OPTIONS = a b c

Dynamic scoping can be tremendously helpful for simplifying the code in a project. For example, the OMakeroot file defines a set of functions and rules for building projects using such variables as CC, CFLAGS, etc. However, different parts of a project may need different values for these variables. For example, we may have a subdirectory called opt where we want to use the -03 option, and a subdirectory called debug where we want to use the -g option. Dynamic scoping allows us to redefine these variables in the parts of the project without having to redefine the functions that use them.

    section
       CFLAGS = -O3
       .SUBDIRS: opt
    section
       CFLAGS = -g
       .SUBDIRS: debug

However, dynamic scoping also has drawbacks. First, it can become confusing: you might have a variable that is intended to be private, but it is accidentally redefined elsewhere. For example, you might have the following code to construct search paths.

   PATHSEP = :
   make-path(dirs) =
      return $(concat $(PATHSEP), $(dirs))

   make-path(/bin /usr/bin /usr/X11R6/bin)
   - : "/bin:/usr/bin:/usr/X11R6/bin" : String

However, elsewhere in the project, the PATHSEP variable is redefined as a directory separator /, and your function suddenly returns the string /bin//usr/bin//usr/X11R6/bin, obviously not what you want.

The private block is used to solve this problem. Variables that are defined in a private block use static scoping – that is, the value of the variable is determined by the most recent definition in scope in the source text.

   private
      PATHSEP = :
   make-path(dirs) =
      return $(concat $(PATHSEP), $(dirs))

   PATHSEP = /
   make-path(/bin /usr/bin /usr/X11R6/bin)
   - : "/bin:/usr/bin:/usr/X11R6/bin" : String

6.2  Functional evaluation

Apart from I/O, omake programs are entirely functional. This has two parts:

  • There is no assignment operator.
  • Functions are values, and may be passed as arguments, and returned from functions just like any other value.

The second item is straightforward. For example, the following program defines an increment function by returning a function value.

   incby(n) =
      g(i) =
         return $(add $(i), $(n))
      return $(g)

   f = $(incby 5)

   value $(f 3)
   - : 8 : Int

The first item may be the most confusing initially. Without assignment, how is it possible for a subproject to modify the global behavior of the project? In fact, the omission is intentional. Build scripts are much easier to write when there is a guarantee that subprojects do not interfere with one another.

However, there are times when a subproject needs to propagate information back to its parent object, or when an inner scope needs to propagate information back to the outer scope.

6.3  Exporting the environment

The export directive can be used to propagate all or part of an inner scope back to its parent. If used without arguments, the entire scope is propagated back to the parent; otherwise the arguments specify which part of the environment to propagate. The most common usage is to export some or all of the definitions in a conditional block. In the following example, the variable B is bound to 2 after the conditional. The A variable is not redefined.

    if $(test)
       A = 1
       B = $(add $(A), 1)
       export B
    else
       B = 2
       export

If the export directive is used without an argument, all of the following is exported:

  • The values of all the dynamically scoped variables (as described in Section 5.5).
  • The current working directory.
  • The current Unix environment.
  • The current implicit rules and implicit dependencies (see also Section 8.11.1).
  • The current set of “phony” target declarations (see Sections 8.10 and 8.11.3).

If the export directive is used with an argument, the argument expression is evaluated and the resulting value is interpreted as follows:

  • If the value is empty, everything is exported, as described above.
  • If the value represents a environment (or a partial environment) captured using the export function, then the corresponding environment or partial environment is exported.
  • Otherwise, the value must be a sequence of strings specifying which items are to be propagated back. The following strings have special meaning:
    • .RULE — implicit rules and implicit dependencies.
    • .PHONY — the set of “phony” target declarations.
    All other strings are interpreted as names of the variables that need to be propagated back.

For example, in the following (somewhat artificial) example, the variables A and B will be exported, and the implicit rule will remain in the environment after the section ends, but the variable TMP and the target tmp_phony will remain unchanged.

section
   A = 1
   B = 2
   TMP = $(add $(A), $(B))

   .PHONY: tmp_phony

   tmp_phony:
      prepare_foo

   %.foo: %.bar tmp_phony
      compute_foo $(TMP) $< $@
   export A B .RULE

6.3.1  Export regions

This feature was introduced in version 0.9.8.5.

The export directive does not need to occur at the end of a block. An export is valid from the point where it is specified to the end of the block in which it is contained. In other words, the export is used in the program that follows it. This can be especially useful for reducing the amount of code you have to write. In the following example, the variable CFLAGS is exported from the both branches of the conditional.

    export CFLAGS
    if $(equal $(OSTYPE), Win32)
        CFLAGS += /DWIN32
    else
        CFLAGS += -UWIN32

6.3.2  Returning values from exported regions

This feature was introduced in version 0.9.8.5.

The use of export does not affect the value returned by a block. The value is computed as usual, as the value of the last statement in the block, ignoring the export. For example, suppose we wish to implement a table that maps strings to unique integers. Consider the following program.

    # Empty map
    table = $(Map)

    # Add an entry to the table
    intern(s) =
        export
        if $(table.mem $s)
            table.find($s)
        else
            private.i = $(table.length)
            table = $(table.add $s, $i)
            value $i

    intern(foo)
    intern(boo)
    intern(moo)
    # Prints "boo = 1"
    println($"boo = $(intern boo)")

Given a string s, the function intern returns either the value already associated with s, or assigns a new value. In the latter case, the table is updated with the new value. The export at the beginning of the function means that the variable table is to be exported. The bindings for s and i are not exported, because they are private.

Evaluation in omake is eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined.

    osh> A = 1
    - : "1"
    osh> A = $(A)$(A)
    - : "11"

In the second definition, A = $(A)$(A), the right-hand-side is evaluated first, producing the sequence 11. Then the variable A is redefined as the new value. When combined with dynamic scoping, this has many of the same properties as conventional imperative programming.

    osh> A = 1
    - : "1"
    osh> printA() =
        println($"A = $A")
    osh> A = $(A)$(A)
    - : "11"
    osh> printA()
    11

In this example, the print function is defined in the scope of A. When it is called on the last line, the dynamic value of A is 11, which is what is printed.

However, dynamic scoping and imperative programming should not be confused. The following example illustrates a difference. The second printA is not in the scope of the definition A = x$(A)$(A)x, so it prints the original value, 1.

    osh> A = 1
    - : "1"
    osh> printA() =
        println($"A = $A")
    osh> section
             A = x$(A)$(A)x
             printA()
    x11x
    osh> printA()
    1

See also Section 7.5 for further ways to control the evaluation order through the use of “lazy” expressions.

6.4  Objects

omake is an object-oriented language. Everything is an object, including base values like numbers and strings. In many projects, this may not be so apparent because most evaluation occurs in the default toplevel object, the Pervasives object, and few other objects are ever defined.

However, objects provide additional means for data structuring, and in some cases judicious use of objects may simplify your project.

Objects are defined with the following syntax. This defines name to be an object with several methods an values.

    name. =                     # += may be used as well
       extends parent-object    # optional
       class class-name         # optional

       # Fields
       X = value
       Y = value

       # Methods
       f(args) =
          body
       g(arg) =
          body

An extends directive specifies that this object inherits from the specified parent-object. The object may have any number of extends directives. If there is more than on extends directive, then fields and methods are inherited from all parent objects. If there are name conflicts, the later definitions override the earlier definitions.

The class directive is optional. If specified, it defines a name for the object that can be used in instanceof operations, as well as :: scoping directives discussed below.

The body of the object is actually an arbitrary program. The variables defined in the body of the object become its fields, and the functions defined in the body become its methods.

6.5  Field and method calls

The fields and methods of an object are named using object.name notation. For example, let's define a one-dimensional point value.

   Point. =
      class Point

      # Default value
      x = $(int 0)

      # Create a new point
      new(x) =
         x = $(int $(x))
         return $(this)

      # Move by one
      move() =
         x = $(add $(x), 1)
         return $(this)

   osh> p1 = $(Point.new 15)
   osh> value $(p1.x)
   - : 15 : Int

   osh> p2 = $(p1.move)
   osh> value $(p2.x)
   - : 16 : Int

The $(this) variable always represents the current object. The expression $(p1.x) fetches the value of the x field in the p1 object. The expression $(Point.new 15) represents a method call to the new method of the Point object, which returns a new object with 15 as its initial value. The expression $(p1.move) is also a method call, which returns a new object at position 16.

Note that objects are functional — it is not possible to modify the fields or methods of an existing object in place. Thus, the new and move methods return new objects.

6.6  Method override

Suppose we wish to create a new object that moves by 2 units, instead of just 1. We can do it by overriding the move method.

   Point2. =
      extends $(Point)

      # Override the move method
      move() =
         x = $(add $(x), 2)
         return $(this)

   osh> p2 = $(Point2.new 15)
   osh> p3 = $(p2.move)
   osh> value $(p3.x)
   - : 17 : Int

However, by doing this, we have completely replaced the old move method.

6.7  Super calls

Suppose we wish to define a new move method that just calls the old one twice. We can refer to the old definition of move using a super call, which uses the notation $(classname::name <args>). The classname should be the name of the superclass, and name the field or method to be referenced. An alternative way of defining the Point2 object is then as follows.

   Point2. =
      extends $(Point)

      # Call the old method twice
      move() =
         this = $(Point::move)
         return $(Point::move)

Note that the first call to $(Point::move) redefines the current object (the this variable). This is because the method returns a new object, which is re-used for the second call.

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/contents_motif.gif0000664000152300015230000000047410524166566016406 0ustar jyhjyhGIF89añp€ÿÿ!þ" Imported from XPM image: toc.xpm!ù,@çÜ6313Æc „BÃ0 Ã0‚ A0 Ã0 Ã0 €Á0 ƒÁ`0€@`0 ƒÁ`  ƒÁ`0€@`0 ƒÁ`0€@`0000000000 0000000000 00000000 000000 0000 000000000 00000000000 00000000000000`À€ ;omake-0.9.8.5/doc/html/omake-build.html0000664000152300015230000020516710655737107015751 0ustar jyhjyh Build functions and utilities
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 13  Build functions and utilities

13.1  Builtin .PHONY targets

The complete set of builtin .PHONY targets include the following.

.PHONY
Declares new phony targets (Section 8.10).
.DEFAULT
Declare the default build targets (Section 8.7).
.SUBDIRS
Include a directory as part of the project (Section 8.8).
.SCANNER
Define a dependency scanner (Section 8.8).
.INCLUDE
Include a file (Section 8.9).
.ORDER
Define a file-dependency ordering rule (Section 10.3.6).
.BUILD_BEGIN
Commands to be executed at the beginning of a build.
.BUILD_SUCCESS
Commands to be executed if the build is successful.
.BUILD_FAILURE
Commands to be executed if the build fails.

The .BUILD targets can be used to specify commands to be executed at the beginning and end of the build. The .BUILD_BEGIN target is built at the beginning of a project build, and one of .BUILD_FAILURE or .BUILD_SUCCESS is executed when the build terminates.

For example, the following set of rules simply print additional messages about the status of the build.

   .BUILD_BEGIN:
       echo Build starting

   .BUILD_SUCCESS:
       echo The build was successful

   .BUILD_FAILURE:
       println($"The build failed: $(length $(find-build-targets Failed)) targets could not be built")

Another common use is to define notifications to be performed when the build completes. For example, the following rule will create a new X terminal displaying the summary of the build (using the BUILD_SUMMARY variable).

    .BUILD_FAILURE:
        xterm -e vi $(BUILD_SUMMARY)

If you do not wish to add these rules directly to your project (which is probably a good idea if you work with others), you can define them in your .omakerc (see Section A.8).

The find-build-targets function is useful for obtaining a firther summary of the build. Note that when output diversions are in effect (with the --output-* options — see Chapter A), any output produced by the commands is copied to a file. The name of the file is specified by the output-file field of the Target object. You may find this useful in defining custom build summaries.

13.2  Options and versioning

13.2.1  OMakeFlags

   OMakeFlags(options)
      options : String

The OMakeFlags function is used to set omake options from within OMakefiles. The options have exactly the same format as options on the command line.

For example, the following code displays the progress bar unless the VERBOSE environment variable is defined.

    if $(not $(defined-env VERBOSE))
        OMakeFlags(-S --progress)
        export

13.2.2  OMakeVersion

   OMakeVersion(version1)
   OMakeVersion(version1, version2)
      version1, version2 : String

The OMakeVersion function is used for version checking in OMakefiles. It takes one or two arguments.

In the one argument form, if the omake version number is less than <version1>, then an exception is raised. In the two argument form, the version must lie between version1 and version2.

13.2.3  cmp-versions

   $(cmp-versions version1, version2)
      version1, version2 : String

The cmp-versions\ functions can be used to compare arbitrary version strings. It returns 0 when the two version strings are equal, a negative number when the first string represents an earlier version, and a positive number otherwise.

13.2.4  DefineCommandVars

   DefineCommandVars()

The DefineCommandVars function redefines the variables passed on the commandline. Variables definitions are passed on the command line in the form name=value. This function is primarily for internal use by omake to define these variables for the first time.

13.3  Examining the dependency graph

13.3.1  dependencies, dependencies-all, dependencies-proper

   $(dependencies targets) : File Array
   $(dependencies-all targets) : File Array
   $(dependencies-proper targets) : File Array
      targets : File Array
   raises RuntimeException

The dependencies function returns the set of immediate dependencies of the given targets. This function can only be used within a rule body and all the arguments to the dependency function must also be dependencies of this rule. This restriction ensures that all the dependencies are known when this function is executed.

The dependencies-all function is similar, but it expands the dependencies recursively, returning all of the dependencies of a target, not just the immediate ones.

The dependencies-proper function returns all recursive dependencies, except the dependencies that are leaf targets. A leaf target is a target that has no dependencies and no build commands; a leaf target corresponds to a source file in the current project.

In all three functions, files that are not part of the current project are silently discarded. All three functions will return phony and scanner targets along with the “real” ones.

One purpose of the dependencies-proper function is for “clean” targets. For example, one way to delete all intermediate files in a build is with a rule that uses the dependencies-proper. Note however, that the rule requires building the project before it can be deleted.

    .PHONY: clean

    APP = ...     # the name of the target application
    clean: $(APP)
       rm -f $(dependencies-proper $(APP))

Also note that the dependencies-proper function will return the phony and scanner targets in addition to real one.

For other (possibly better) alternatives, see Section 10.3.3 and filter-proper-targets function.

13.3.2  target

   $(target targets) : Target Array
      targets : File Sequence
   raises RuntimeException

The target function returns the Target object associated with each of the targets. See the Target object for more information.

13.3.3  find-build-targets

    $(find-build-targets tag) : Target Array
       tag : Succeeded | Failed

The find-build-targets allow the results of the build to be examined. The tag must specifies which targets are to be returned; the comparison is case-insensitive.

Succeeded
The list of targets that were built successfully.
Failed
The list of targets that could not be built.

These are used mainly in conjuction with the .BUILD_SUCCESS (Section 13.1) and .BUILD_FAILURE (Section 13.1) phony targets. For example, adding the following to your project OMakefile will print the number of targets that failed (if the build failed).

    .BUILD_FAILURE:
        echo "Failed target count: $(length $(find-build-targets Failed))"

13.3.4  project-directories

   $(project-directories) : Dir Array

The project-directories function returns the list of all directories that are considered to be part of the project.

To get the complete directory list, this function should be called from within a rule body.

13.3.5  rule

The rule function is called whenever a build rule is defined. It is unlikely that you will need to redefine this function, except in very exceptional cases.

   rule(multiple, target, pattern, sources, options, body) : Rule
      multiple : String
      target   : Sequence
      pattern  : Sequence
      sources  : Sequence
      options  : Array
      body     : Body

The rule function is called when a rule is evaluated.

multiple
A Boolean value indicating whether the rule was defined with a double colon ::.
target
The sequence of target names.
pattern
The sequence of patterns. This sequence will be empty for two-part rules.
sources
The sequence of dependencies.
options
An array of options. Each option is represented as a Map object associating each specified option with a value.
body
The body expression of the rule.

Consider the following rule.

   target: pattern: sources :name1: option1 :name2: option2
      expr1
      expr2

This expression represents the following function call, where square brackets are used to indicate arrays, and the curly brackets represent a Map object.

   rule(false, target, pattern, sources,
        { $|:name1:| = option1; $|:name2:| = option2 }
        [expr1; expr2])

13.3.6  build

    build(targets : File Array) : bool

Build the given targets. The value is true iff the build was successful. This function can be used only in osh.

13.4  The OMakeroot file

The standard OMakeroot file defines the functions are rules for building standard projects.

13.4.1  Variables

ROOT

The root directory of the current project.

CWD

The current working directory (the directory is set for each OMakefile in the project).

EMPTY

The empty string.

STDROOT

The name of the standard installed OMakeroot file.

ABORT_ON_COMMAND_ERROR

If set to true, the construction of a target should be aborted whenever one of the commands to build it fail. This defaults to true, and should normally be left that way.

SCANNER_MODE

This variable should be defined as one of four values (defaults to enabled).

enabled
Allow the use of default .SCANNER rules. Whenever a rule does not specify a :scanner: dependency explicitly, try to find a .SCANNER with the same target name.
disabled
Never use default .SCANNER rules.
warning
Allow the use of default .SCANNER rules, but print a warning whenever one is selected.
error
Do not allow the use of default .SCANNER rules. If a rule does not specify a :scanner: dependency, and there is a default .SCANNER rule, the build will terminate abnormally.

13.4.2  System variables

INSTALL

The command to install a program (install on Unix, cp on Win32).

PATHSEP

The normal path separator (: on Unix, ; on Win32).

DIRSEP

The normal directory separator (/ on Unix, \ on Win32).

EXT_OBJ

File suffix for an object file (default is .o on Unix, and .obj on Win32).

EXT_LIB

File suffix for a static library (default is .a on Unix, and .lib on Win32).

EXT_DLL

File suffix for a shared library (default is .so on Unix, and .dll on Win32).

EXT_ASM

File suffix for an assembly file (default is .s on Unix, and .asm on Win32).

EXE

File suffix for executables (default is empty for Unix, and .exe on Win32 and Cygwin).

13.5  Building C and C++ code

OMake provides extensive support for building C and C++ programs. In order to use the functions defined in this section, you need to make sure the line

open build/C

is present in your OMakeroot file.

13.5.1  Autoconfiguration variables

These variables will get defined based on the “autoconf-style” static. tests executed when you run OMake for the first time. You can use them to configure your project accordingly, and you should not redefine them.

You can use the --configure command line option (Section A.3.9) to force re-execution of all the tests.

A different set of autoconfiguration tests is performed depending on the build environment involved — one set of tests would be performed in a Win32 environment, and another — in a Unix-like environment (including Linux, OS X and Cygwin).

13.5.1.1  Unix-like systems

GCC_FOUND

A boolean flag specifying whether the gcc binary was found in your path.

GXX_FOUND

A boolean flag specifying whether the g++ binary was found in your path.

13.5.1.2  Win32

CL_FOUND

A boolean flag specifying whether the cl binary was found in your path.

LIB_FOUND

A boolean flag specifying whether the lib binary was found in your path.

13.5.2  C and C++ configuration variables

The following variables can be redefined in your project.

CC

The name of the C compiler (on Unix it defaults to gcc when gcc is present and to cc otherwise; on Win32 defaults to cl /nologo).

CXX

The name of the C++ compiler (on Unix it defaults to gcc when gcc is present and to c++ otherwise; on Win32 defaults to cl /nologo).

CPP

The name of the C preprocessor (defaults to cpp on Unix, and cl /E on Win32).

CFLAGS

Compilation flags to pass to the C compiler (default empty on Unix, and /DWIN32 on Win32).

CXXFLAGS

Compilation flags to pass to the C++ compiler (default empty on Unix, and /DWIN32 on Win32).

INCLUDES

Additional directories that specify the search path to the C and C++ compilers (default is .). The directories are passed to the C and C++ compilers with the -I option. The include path with -I prefixes is defined in the PREFIXED_INCLUDES variable.

LIBS

Additional libraries needed when building a program (default is empty).

CCOUT

The option to use for specifying the output file in C and C++ compilers (defaults to -o on Unix and /Fo on Win32).

AS

The name of the assembler (defaults to as on Unix, and ml on Win32).

ASFLAGS

Flags to pass to the assembler (default is empty on Unix, and /c /coff on Win32).

ASOUT

The option string that specifies the output file for AS (defaults to -o on Unix and /Fo on Win32).

AR

The name of the program to create static libraries (defaults to ar cq on Unix, and lib on Win32).

LD

The name of the linker (defaults to ld on Unix, and cl on Win32).

LDFLAGS

Options to pass to the linker (default is empty).

LDFLAGS_DLL

Options to pass to the linker when compiling a shared library (defaults to -shared on Unix and /DLL on Win32).

LDOUT

The option to use for specifying the output file in C and C++ linkers (defaults to -o on Unix and /Fe on Win32).

YACC

The name of the yacc parser generator (default is yacc on Unix, empty on Win32).

LEX

The name of the lex lexer generator (default is lex on Unix, empty on Win32).

13.5.3  Generated C files

Because the C scanners do not normally know anything about generated source files (such as generated header files), these files may need to be created before running the scanner.

13.5.3.1  CGeneratedFiles, LocalCGeneratedFiles

CGeneratedFiles(files)
LocalCGeneratedFiles(files)

The CGeneratedFiles and LocalCGeneratedFiles functions specify files that need to be generated before any C files are scanned for dependencies. For example, if config.h and inputs.h are both generated files, specify:

CGeneratedFiles(config.h inputs.h)

The CGeneratedFiles function is global — its arguments will be generated before any C files anywhere in the project are scanned for dependencies. The LocalCGeneratedFiles function follows the normal scoping rules of OMake.

13.5.4  Building C programs and Libraries

13.5.4.1  StaticCLibrary, DynamicCLibrary

The StaticCLibrary builds a static library and the DynamicCLibrary function builds a shared library (DLL).

StaticCLibrary(<target>, <files>)
DynamicCLibrary(<target>, <files>)

The <target> does not include the library suffix, and The <files> list does not include the object suffix. These are obtained from the EXT_LIB (EXT_DLL) and EXT_OBJ variables.

This function returns the library filename.

The following command builds the library libfoo.a from the files a.o b.o c.o on Unix, or the library libfoo.lib from the files a.obj b.obj c.obj on Win32.

StaticCLibrary(libfoo, a b c)
.DEFAULT: $(StaticCLibrary libbar, a b c d)
CDLL_IMPLIES_STATIC

If the CDLL_IMPLIES_STATIC variable is enabled (this is default on Win32), all the DynamicC functions would assume that creating a shared library automatically created a static one.

13.5.4.2  StaticCLibraryCopy, DynamicCLibraryCopy

The StaticCLibraryCopy and DynamicCLibraryCopy functions copy a library to an install location.

StaticCLibraryCopy(<tag>, <dir>, <lib>)
DynamicCLibraryCopy(<tag>, <dir>, <lib>)

The <tag> is the name of a target (typically a .PHONY target); the <dir> is the installation directory, and <lib> is the library to be copied (without the library suffix).

This function returns the filename of the library in the target directory.

For example, the following code copies the library libfoo.a to the /usr/lib directory.

.PHONY: install

StaticCLibraryCopy(install, /usr/lib, libfoo)

13.5.4.3  StaticCLibraryInstall, DynamicCLibraryInstall

The StaticCLibraryInstall and DynamicCLibraryInstall functions build a library, and set the install location in one step. Return the filename of the library in the target directory.

StaticCLibraryInstall(<tag>, <dir>, <libname>, <files>)
DynamicCLibraryInstall(<tag>, <dir>, <libname>, <files>)
StaticCLibraryInstall(install, /usr/lib, libfoo, a b c)

13.5.4.4  StaticCObject, StaticCObjectCopy, StaticCObjectInstall

These functions mirror the StaticCLibrary, StaticCLibraryCopy, and StaticCLibraryInstall functions, but they build an object file (a .o file on Unix, and a .obj file on Win32).

13.5.4.5  CProgram

The CProgram function builds a C program from a set of object files and libraries.

CProgram(<name>, <files>)

The <name> argument specifies the name of the program to be built; the <files> argument specifies the files to be linked. The function returns the filename of the executable.

Additional options can be passed through the following variables.

CFLAGS
Flags used by the C compiler during the link step.
LDFLAGS
Flags to pass to the loader.
LIBS
Additional libraries to be linked.

For example, the following code specifies that the program foo is to be produced by linking the files bar.o and baz.o and libraries libfoo.a.

section
   LIBS = libfoo
   LDFLAGS += -lbar
   CProgram(foo, bar baz)

13.5.4.6  CProgramCopy

The CProgramCopy function copies a file to an install location.

CProgramCopy(<tag>, <dir>, <program>)

CProgramCopy(install, /usr/bin, foo)

13.5.4.7  CProgramInstall

The CProgramInstall function specifies a program to build, and a location to install, simultaneously.

CProgramInstall(<tag>, <dir>, <name>, <files>)

section
   LIBS = libfoo
   LDFLAGS += -lbar
   CProgramInstall(install, /usr/bin, foo, bar baz)

13.5.4.8  CXXProgram, CXXProgramInstall

The CXXProgram and CXXProgramInstall functions are equivalent to their C counterparts, except that would use $(CXX) and $(CXXFLAGS) for linking instead of $(CC) and $(CFLAGS).

13.5.4.9  StaticCXXLibrary, StaticCXXLibraryCopy, StaticCXXLibraryInstall, DynamicCXXLibrary, DynamicCXXLibraryCopy, DynamicCXXLibraryInstall

Similarly, the six CXXLibrary functions the C++ equivalents of the corresponding CLibrary functions.

13.6  Building OCaml code

OMake provides extensive support for building OCaml code, including support for tools like ocamlfind, ocamlyacc and menhir. In order to use the functions defined in this section, you need to make sure the line

open build/OCaml

is present in your OMakeroot file.

13.6.1  Autoconfiguration variables for OCaml compilation

These variables will get defined based on the “autoconf-style” tests executed when you run OMake for the first time. You can use them to configure your project accordingly, and you should not redefine them.

You can use the --configure command line option (Section A.3.9) to force re-execution of all the tests.

OCAMLOPT_EXISTS

True when ocamlopt (or ocamlopt.opt) is available on your machine.

OCAMLFIND_EXISTS

True when the ocamlfind is available on your machines.

OCAMLDEP_MODULES_AVAILABLE

True when a version of ocamldep that understands the -modules option is available on your machine.

MENHIR_AVAILABLE

True when the Menhir parser-generator is available on your machine.

13.6.2  Configuration variables for OCaml compilation

The following variables can be redefined in your project.

USE_OCAMLFIND

Whether to use the ocamlfind utility (default false)

OCAMLC

The OCaml bytecode compiler (default ocamlc.opt if it exists and USE_OCAMLFIND is not set, otherwise ocamlc).

OCAMLOPT

The OCaml native-code compiler (default ocamlopt.opt if it exists and USE_OCAMLFIND is not set, otherwise ocamlopt).

CAMLP4

The camlp4 preprocessor (default camlp4).

OCAMLLEX

The OCaml lexer generator (default ocamllex).

OCAMLLEXFLAGS

The flags to pass to ocamllex (default -q).

OCAMLYACC

The OCaml parser generator (default ocamlyacc).

OCAMLYACCFLAGS

Additional options to pass to $(OCAMLYACC).

OCAMLDEP

The OCaml dependency analyzer (default ocamldep).

OCAMLDEP_MODULES

The OCaml dependency analyzer that understands the -module option (default ocamldep, if ocamldep -modules works, or ocamlrun ocamldep-omake, if ocamlrun ocamldep-omake -modules works, and empty when neither works).

OCAMLDEP_MODULES_ENABLED

Instead of using OCAMLDEP in a traditional make-style fashion, run $(OCAMLDEP_MODULES) -modules and then postprocess the output internally to discover all the relevant generated .ml and .mli files. See Section 13.6.5 for more information on interactions between OMake, OCAMLDEP and generated files. Set to $(OCAMLDEP_MODULES_AVAILABLE) by default.

OCAMLMKTOP

The OCaml toploop compiler (default ocamlmktop).

OCAMLLINK

The OCaml bytecode linker (default $(OCAMLC)).

OCAMLOPTLINK

The OCaml native-code linker (default $(OCAMLOPT)).

OCAMLINCLUDES

Search path to pass to the OCaml compilers (default .). The search path with the -I prefix is defined by the PREFIXED_OCAMLINCLUDES variable.

OCAMLFIND

The ocamlfind utility (default ocamlfind if USE_OCAMLFIND is set, otherwise empty).

OCAMLFINDFLAGS

The flags to pass to ocamlfind (default empty, USE_OCAMLFIND must be set).

OCAMLPACKS

Package names to pass to ocamlfind (USE_OCAMLFIND must be set).

BYTE_ENABLED

Flag indicating whether to use the bytecode compiler (default true, when no ocamlopt found, false otherwise).

NATIVE_ENABLED

Flag indicating whether to use the native-code compiler (default true, when ocamlopt is found, false otherwise). Both BYTE_ENABLED and NATIVE_ENABLED can be set to true; at least one should be set to true.

MENHIR_ENABLED

Define this as true if you wish to use menhir instead of ocamlyacc (default false).

13.6.3  OCaml command flags

The following variables specify additional options to be passed to the OCaml tools.

OCAMLDEPFLAGS

Flags to pass to OCAMLDEP and OCAMLDEP_MODULES.

OCAMLPPFLAGS

Flags to pass to CAMLP4.

OCAMLCFLAGS

Flags to pass to the byte-code compiler (default -g).

OCAMLOPTFLAGS

Flags to pass to the native-code compiler (default empty).

OCAMLFLAGS

Flags to pass to either compiler (default -warn-error A).

OCAML_BYTE_LINK_FLAGS

Flags to pass to the byte-code linker (default empty).

OCAML_NATIVE_LINK_FLAGS

Flags to pass to the native-code linker (default empty).

OCAML_LINK_FLAGS

Flags to pass to either linker.

MENHIR_FLAGS

Additional flags to pass to menhir.

13.6.4  Library variables

The following variables are used during linking.

OCAML_LIBS

Libraries to pass to the linker. These libraries become dependencies of the link step.

OCAML_OTHER_LIBS

Additional libraries to pass to the linker. These libraries are not included as dependencies to the link step. Typical use is for the OCaml standard libraries like unix or str.

OCAML_CLIBS

C libraries to pass to the linker.

OCAML_LIB_FLAGS

Extra flags for the library linker.

ABORT_ON_DEPENDENCY_ERRORS

OCaml linker requires the OCaml files to be listed in dependency order. Normally, all the functions presented in this section will automatically sort the list of OCaml modules passed in as the <files> argument. However, this variable is set to true, the order of the files passed into these function will be left as is, but OMake will abort with an error message if the order is illegal.

13.6.5  Generated OCaml Files

As of OCaml version 3.09.2, the standard ocamldep scanner is “broken”. The main issue is that it finds only those dependencies that already exist. If foo.ml contains a dependency on Bar,

foo.ml:
   open Bar

then the default ocamldep will only find the dependency if a file bar.ml or bar.ml exists in the include path. It will not find (or print) the dependency if, for example, only bar.mly exists at the time ocamldep is run, even though bar.ml and bar.mli can be generated from bar.mly.

OMake currently provides two methods for addressing this problem — one that requires manually specifying the generated files, and an experimental method for discovering such “hidden” dependencies automatically. The OCAMLDEP_MODULES_ENABLED variable controls which method is going to be used. When this variable is false, the manual specifications are expected and when it is true, the automated discovery will be attempted.

13.6.5.1  OCamlGeneratedFiles, LocalOCamlGeneratedFiles

OCamlGeneratedFiles(files)
LocalOCamlGeneratedFiles(files)

When the OCAMLDEP_MODULES_ENABLED variable variable is set to false, the OCamlGeneratedFiles and LocalOCamlGeneratedFiles functions specify files that need to be generated before any OCaml files are scanned for dependencies. For example, if parser.ml and lexer.ml are both generated files, specify:

OCamlGeneratedFiles(parser.ml lexer.ml)

The OCamlGeneratedFiles function is global — its arguments will be generated before any OCaml files anywhere in the project are scanned for dependencies. The LocalOCamlGeneratedFiles function follows the normal scoping rules of OMake.

These functions have no effect when the OCAMLDEP_MODULES_ENABLED variable is true.

13.6.5.2  Automatic discovery of generated files during dependency analysis

Having to specify the generated files manualy when OMake could discover them automatically is obviously suboptimal. To address this, we tell ocamldep to only find the free module names in a file and then post-process the results internally.

This automated functionality is enabled when the OCAMLDEP_MODULES_ENABLED variable is set to true. By default, OCAMLDEP_MODULES_ENABLED variable will be set to $(OCAMLDEP_MODULES_AVAILABLE).

Note that the ocamldep functionality this relies upon is only included in the OCaml version 3.10 and higher. Temporarily, we distribute a bytecode version ocamldep-omake of the appropriately modified ocamldep. The appropriate ocamldep will be discovered automatically — see and the OCAMLDEP_MODULES_AVAILABLE and OCAMLDEP_MODULES variables will be set accordingly.

13.6.6  Using the Menhir parser generator

Menhir is a parser generator that is mostly compatible with ocamlyacc, but with many improvements. A few of these are listed here (excerpted from the Menhir home page http://cristal.inria.fr/~fpottier/menhir/).

  • Menhir's explanations are believed to be understandable by mere humans.
  • Menhir allows grammar specifications to be split over multiple files. It also allows several grammars to share a single set of tokens.
  • Menhir is able to produce parsers that are parameterized by Objective Caml modules.
  • Added by jyh With the --infer option, Menhir can typecheck the semantic actions in your grammar at generation time.

What do you need to do to use Menhir instead of ocamlyacc?

  1. Place the following definition before the relevant section of your project (or at the top of your project OMakefile if you want to use Menhir everywhere).
       MENHIR_ENABLED = true
    
  2. Optionally, add any desired Menhir options to the MENHIR_FLAGS variable.
       MENHIR_FLAGS += --infer
    

With this setup, any file with a .mly suffix will be compiled with Menhir.

If your grammar is split across several files, you need to specify it explicitly, using the MenhirMulti function.

    MenhirMulti(target, sources)
        target : filename, without suffix
        sources : the files that define the grammar, without suffixes

For example, if you want to generate the parser files parse.ml and parse.mli, from the grammar specified in files a.mly and b.mly, you would use the following.

    MenhirMulti(parse, a b)

13.6.6.1  OCamlLibrary

The OCamlLibrary function builds an OCaml library.

OCamlLibrary(<libname>, <files>)

The <libname> and <files> are listed without suffixes.

This function returns the list of all the targets that it defines the rules for (including the $(name)$(EXT_LIB) file when NATIVE_ENABLED is set).

The following code builds the libfoo.cmxa library from the files foo.cmx and bar.cmx (if NATIVE_ENABLED is set), and libfoo.cma from foo.cmo and bar.cmo (if BYTE_ENABLED is set).

OCamlLibrary(libfoo, foo bar)

13.6.6.2  OCamlPackage

The OCamlPackage function builds an OCaml package.

OCamlPackage(<name>, <files>)

The <name> and <files> are listed without suffixes. The <files> must have been compiled with the -for-pack <ident> flag to the OCaml compiler.

This function returns the list of all the targets that it defines the rules for (including the $(name)$(EXT_LIB) file when NATIVE_ENABLED is set).

The following code builds the libfoo.cmx package from the files package.cmx and bar.cmx (if NATIVE_ENABLED is set), and package.cmo from foo.cmo and bar.cmo (if BYTE_ENABLED is set).

OCamlPackage(package, foo bar)

13.6.6.3  OCamlLibraryCopy

The OCamlLibraryCopy function copies a library to an install location.

OCamlLibraryCopy(<tag>, <libdir>, <libname>, <interface-files>)

The <interface-files> specify additional interface files to be copied if the INSTALL_INTERFACES variable is true.

13.6.6.4  OCamlLibraryInstall

The OCamlLibraryInstall function builds a library and copies it to an install location in one step.

OCamlLibraryInstall(<tag>, <libdir>, <libname>, <files>)

13.6.6.5  OCamlProgram

The OCamlProgram function builds an OCaml program. It returns the array with all the targets for which it has defined the rules ($(name)$(EXE) and $(name).run and/or $(name).opt, depending on the NATIVE_ENABLED and BYTE_ENABLED variables).

OCamlProgram(<name>, <files>)

Additional variables used:

OCAML_LIBS
Additional libraries passed to the linker, without suffix. These files become dependencies of the target program.
OCAML_OTHER_LIBS
Additional libraries passed to the linker, without suffix. These files do not become dependencies of the target program.
OCAML_CLIBS
C libraries to pass to the linker.
OCAML_BYTE_LINK_FLAGS
Flags to pass to the bytecode linker.
OCAML_NATIVE_LINK_FLAGS
Flags to pass to the native code linker.
OCAML_LINK_FLAGS
Flags to pass to both linkers.

13.6.6.6  OCamlProgramCopy

The OCamlProgramCopy function copies an OCaml program to an install location.

OCamlProgramCopy(<tag>, <bindir>, <name>)

Additional variables used:

NATIVE_ENABLED
If the NATIVE_ENABLED variable is set, the native-code executable is copied; otherwise the byte-code executable is copied.

13.6.6.7  OCamlProgramInstall

The OCamlProgramInstall function builds a programs and copies it to an install location in one step.

OCamlProgramInstall(<tag>, <bindir>, <name>, <files>)

13.7  Building LATEX files

OMake provides support for building LATEX documents, including support for automatically running BiBTex and for producing PostScript and PDF files. In order to use the functions defined in this section, you need to make sure the line

open build/LaTeX

is present in your OMakeroot file.

13.7.1  Configuration variables

The following variables can be modified in your project.

LATEX

The LATEX command (default latex).

TETEX2_ENABLED

Flag indicating whether to use advanced LATEX options present in TeTeX v.2 (default value is determined the first time omake reads LaTeX.src and depends on the version of LATEX you have installed).

LATEXFLAGS

The LATEX flags (defaults depend on the TETEX2_ENABLED variable)

BIBTEX

The BibTeX command (default bibtex).

MAKEINDEX

The command to build an index (default makeindex).

DVIPS

The .dvi to PostScript converter (default dvips).

DVIPSFLAGS

Flags to pass to dvips (default -t letter).

DVIPDFM

The .dvi to .pdf converter (default dvipdfm).

DVIPDFMFLAGS

Flags to pass to dvipdfm (default -p letter).

PDFLATEX

The .latex to .pdf converter (default pdflatex).

PDFLATEXFLAGS

Flags to pass to pdflatex (default is $`(LATEXFLAGS)).

USEPDFLATEX

Flag indicating whether to use pdflatex instead of dvipdfm to generate the .pdf document (default false).

13.7.2  Building LATEX documents

13.7.2.1  LaTeXDocument

The LaTeXDocument produces a LATEX document.

LaTeXDocument(<name>, <texfiles>)

The document <name> and <texfiles> are listed without suffixes. This function returns the filenames for the generated .ps and .pdf files.

Additional variables used:

TEXINPUTS

The LATEX search path (an array of directories, default is taken from the TEXINPUTS environment variable).

TEXDEPS

Additional files this document depends on.

TEXVARS

An array of names of the environment variables that are to be updated based on the value of OMake's TEXINPUTS variable. Defaults to TEXINPUTS BIBINPUTS BSTINPUTS.

13.7.2.2  TeXGeneratedFiles, LocalTeXGeneratedFiles

TeXGeneratedFiles(files)
LocalTeXGeneratedFiles(files)

The TeXGeneratedFiles and LocalTeXGeneratedFiles functions specify files that need to be generated before any LATEXfiles are scanned for dependencies. For example, if config.tex and inputs.tex are both generated files, specify:

    TeXGeneratedFiles(config.tex inputs.tex)

The TeXGeneratedFiles function is global — its arguments will be generated before any TeX files anywhere in the project are scanned for dependencies. The LocalTeXGeneratedFiles function follows the normal scoping rules of OMake.

13.7.2.3  LaTeXDocumentCopy

The LaTeXDocumentCopy copies the document to an install location.

LaTeXDocumentCopy(<tag>, <libdir>, <installname>, <docname>)

This function copies just the .pdf and .ps files.

13.7.2.4  LaTeXDocumentInstall

The LaTeXDocumentInstall builds a document and copies it to an install location in one step.

LaTeXDocumentInstall(<tag>, <libdir>, <installname>, <docname>, <files>)

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-language-examples.html0000664000152300015230000005261210646471724020244 0ustar jyhjyh Additional language examples
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 7  Additional language examples

In this section, we'll explore the core language through a series of examples (examples of the build system are the topic of the Chapter 3).

For most of these examples, we'll use the osh command interpreter. For simplicity, the values printed by osh have been abbreviated.

7.1  Strings and arrays

The basic OMake values are strings, sequences, and arrays of values. Sequences are like arrays of values separated by whitespace; the sequences are split on demand by functions that expect arrays.

   osh> X = 1 2
   - : "1 2" : Sequence
   osh> addsuffix(.c, $X)
   - : <array 1.c 2.c> : Array

Sometimes you want to define an array explicitly. For this, use the [] brackets after the variable name, and list each array entry on a single indented line.

   osh> A[] =
           Hello world
           $(getenv HOME)
   - : <array "Hello world" "/home/jyh"> : Array

One central property of arrays is that whitespace in the elements is significant. This can be useful, especially for filenames that contain whitespace.

   # List the current files in the directory
    osh> ls -Q
    "fee"  "fi"  "foo"  "fum"
    osh> NAME[] = 
            Hello world
    - : <array "Hello world"> : Array
    osh> touch $(NAME)
    osh> ls -Q
    "fee"  "fi"  "foo"  "fum"  "Hello world"

7.2  Quoted strings

A String is a single value; whitespace is significant in a string. Strings are introduced with quotes. There are four kinds of quoted elements; the kind is determined by the opening quote. The symbols ' (single-quote) and " (double-quote) introduce the normal shell-style quoted elements. The quotation symbols are included in the result string. Variables are always expanded within a quote of this kind. Note that the osh(1) (Chapter 15) printer escapes double-quotes within the string; these are only for printing, they are not part of the string itself.

    osh> A = 'Hello "world"'
    - : "'Hello \"world\"'" : String
    osh> B = "$(A)"
    - : "\"'Hello \"world\"'\"" : String
    osh> C = 'Hello \'world\''
    - : "'Hello 'world''" : String

A second kind of quote is introduced with the $' and $" quotes. The number of opening and closing quote symbols is arbitrary. These quotations have several properties:

  • The quote delimiters are not part of the string.
  • Backslash \ symbols within the string are treated as normal characters.
  • The strings may span several lines.
  • Variables are expanded within $" sequences, but not within $' sequences.
    osh> A = $'''Here $(IS) an '''' \(example\) string['''
    - : "Here $(IS) an '''' \\(example\\) string[" : String
    osh> B = $""""A is "$(A)" """"
    - : "A is \"Here $(IS) an '''' \\(example\\) string[\" " : String
    osh> value $(A.length)
    - : 38 : Int
    osh> value $(A.nth 5)
    - : "$" : String
    osh> value $(A.rev)
    - : "[gnirts )\\elpmaxe(\\ '''' na )SI($ ereH" : String

Strings and sequences both have the property that they can be merged with adjacent non-whitespace text.

    osh> A = a b c
    - : "a b c" : Sequence
    osh> B = $(A).c
    - : <sequence "a b c" : Sequence ".c" : Sequence> : Sequence
    osh> value $(nth 2, $(B))
    - : "c.c" : String
    osh> value $(length $(B))
    - : 3 : Int

Arrays are different. The elements of an array are never merged with adjacent text of any kind. Arrays are defined by adding square brackets [] after a variable name and defining the elements with an indented body. The elements may include whitespace.

    osh> A[] =
            a b
            foo bar
    - : <array
           "a b" : Sequence
           "foo bar" : Sequence>
           : Array
    osh> echo $(A).c
    a b foo bar .c
    osh> value $(A.length)
    - : 2 : Int
    osh> value $(A.nth 1)
    - : "foo bar" : Sequence

Arrays are quite helpful on systems where filenames often contain whitespace.

    osh> FILES[] =
             c:\Documents and Settings\jyh\one file
             c:\Program Files\omake\second file

    osh> CFILES = $(addsuffix .c, $(FILES))
    osh> echo $(CFILES)
    c:\Documents and Settings\jyh\one file.c c:\Program Files\omake\second file.c

7.3  Files and directories

OMake projects usually span multiple directories, and different parts of the project execute commands in different directories. There is a need to define a location-independent name for a file or directory.

This is done with the $(file <names>) and $(dir <names>) functions.

   osh> mkdir tmp
   osh> F = $(file fee)
   osh> section:
            cd tmp
            echo $F
   ../fee
   osh> echo $F
   fee

Note the use of a section: to limit the scope of the cd command. The section temporarily changes to the tmp directory where the name of the file is ../fee. Once the section completes, we are still in the current directory, where the name of the file is fee.

One common way to use the file functions is to define proper file names in your project OMakefile, so that references within the various parts of the project will refer to the same file.

    osh> cat OMakefile
    ROOT = $(dir .)
    TMP  = $(dir tmp)
    BIN  = $(dir bin)
    ...

7.4  Iteration, mapping, and foreach

Most builtin functions operate transparently on arrays.

    osh> addprefix(-D, DEBUG WIN32)
    - : -DDEBUG -DWIN32 : Array
    osh> mapprefix(-I, /etc /tmp)
    - : -I /etc -I /tmp : Array
    osh> uppercase(fee fi foo fum)
    - : FEE FI FOO FUM : Array

The mapprefix and addprefix functions are slightly different (the addsuffix and mapsuffix functions are similar). The addprefix adds the prefex to each array element. The mapprefix doubles the length of the array, adding the prefix as a new array element before each of the original elements.

Even though most functions work on arrays, there are times when you will want to do it yourself. The foreach function is the way to go. The foreach function has two forms, but the form with a body is most useful. In this form, the function takes two arguments and a body. The second argument is an array, and the first is a variable. The body is evaluated once for each element of the array, where the variable is bound to the element. Let's define a function to add 1 to each element of an array of numbers.

   osh> add1(l) =
            foreach(i, $l):
                add($i, 1)
   osh> add1(7 21 75)
   - : 8 22 76 : Array

Sometimes you have an array of filenames, and you want to define a rule for each of them. Rules are not special, you can define them anywhere a statement is expected. Say we want to write a function that describes how to process each file, placing the result in the tmp/ directory.

   TMP = $(dir tmp)

   my-special-rule(files) =
      foreach(name, $(files))
         $(TMP)/$(name): $(name)
            process $< > $@

Later, in some other part of the project, we may decide that we want to use this function to process some files.

   # These are the files to process in src/lib
   MY_SPECIAL_FILES[] =
       fee.src
       fi.src
       file with spaces in its name.src
   my-special-rule($(MY_SPECIAL_FILES))

The result of calling my-special-rule is exactly the same as if we had written the following three rules explicitly.

    $(TMP)/fee.src: fee.src
        process fee > $@
    $(TMP)/fi.src: fi.src
        process fi.src > $@
    $(TMP)/$"file with spaces in its name.src": $"file with spaces in its name.src"
        process $< > $@

Of course, writing these rules is not nearly as pleasant as calling the function. The usual properties of function abstraction give us the usual benefits. The code is less redundant, and there is a single location (the my-special-rule function) that defines the build rule. Later, if we want to modify/update the rule, we need do so in only one location.

7.5  Lazy expressions

Evaluation in omake is normally eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined.

There are two ways to control this behavior. The $`(v) form introduces lazy behavior, and the $,(v) form restores eager behavior. Consider the following sequence.

    osh> A = 1
    - : "1" : Sequence
    osh> B = 2
    - : "2" : Sequence
    osh> C = $`(add $(A), $,(B))
    - : $(apply add $(apply A) "2" : Sequence)
    osh> println(C = $(C))
    C = 3
    osh> A = 5
    - : "5" : Sequence
    osh> B = 6
    - : "6" : Sequence
    osh> println(C = $(C))
    C = 7

The definition C = $`(add $(A), $,(B)) defines a lazy application. The add function is not applied in this case until its value is needed. Within this expression, the value $,(B) specifies that B is to be evaluated immediately, even though it is defined in a lazy expression.

The first time that we print the value of C, it evaluates to 3 since A is 1 and B is 2. The second time we evaluate C, it evaluates to 7 because A has been redefined to 5. The second definition of B has no effect, since it was evaluated at definition time.

7.5.1  A larger example of lazy expressions

Lazy expressions are not evaluated until their result is needed. Some people, including this author, frown on overuse of lazy expressions, mainly because it is difficult to know when evaluation actually happens. However, there are cases where they pay off.

One example comes from option processing. Consider the specification of “include” directories on the command line for a C compiler. If we want to include files from /home/jyh/include and ../foo, we specify it on the command line with the options -I/home/jyh/include -I../foo.

Suppose we want to define a generic rule for building C files. We could define a INCLUDES array to specify the directories to be included, and then define a generic implicit rule in our root OMakefile.

    # Generic way to compile C files.
    CFLAGS = -g
    INCLUDES[] =
    %.o: %.c
       $(CC) $(CFLAGS) $(INCLUDES) -c $<

    # The src directory builds my_widget+ from 4 source files.
    # It reads include files from the include directory.
    .SUBDIRS: src
        FILES = fee fi foo fum
        OFILES = $(addsuffix .o, $(FILES))
        INCLUDES[] += -I../include
        my_widget: $(OFILES)
           $(CC) $(CFLAGS) -o $@ $(OFILES)

But this is not quite right. The problem is that INCLUDES is an array of options, not directories. If we later wanted to recover the directories, we would have to strip the leading -I prefix, which is a hassle. Furthermore, we aren't using proper names for the directories. The solution here is to use a lazy expression. We'll define INCLUDES as a directory array, and a new variable PREFIXED_INCLUDES that adds the -I prefix. The PREFIXED_INCLUDES is computed lazily, ensuring that the value uses the most recent value of the INCLUDES variable.

    # Generic way to compile C files.
    CFLAGS = -g
    INCLUDES[] =
    PREFIXED_INCLUDES[] = $`(addprefix -I, $(INCLUDES))
    %.o: %.c
       $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) -c $<

    # For this example, we define a proper name for the include directory
    STDINCLUDE = $(dir include)

    # The src directory builds my_widget+ from 4 source files.
    # It reads include files from the include directory.
    .SUBDIRS: src
        FILES = fee fi foo fum
        OFILES = $(addsuffix .o, $(FILES))
        INCLUDES[] += $(STDINCLUDE)
        my_widget: $(OFILES)
           $(CC) $(CFLAGS) -o $@ $(OFILES)

Note that there is a close connection between lazy values and functions. In the example above, we could equivalently define PREFIXED_INCLUDES as a function with zero arguments.

    PREFIXED_INCLUDES() =
        addprefix(-I, $(INCLUDES))

7.6  Scoping and exports

The OMake language is functional (apart from IO and shell commands). This comes in two parts: functions are first-class, and variables are immutable (there is no assignment operator). The latter property may seem strange to users used to GNU make, but it is actually a central point of OMake. Since variables can't be modified, it is impossible (or at least hard) for one part of the project to interfere with another.

To be sure, pure functional programming can be awkward. In OMake, each new indentation level introduces a new scope, and new definitions in that scope are lost when the scope ends. If OMake were overly strict about scoping, we would wind up with a lot of convoluted code.

   osh> X = 1
   osh> setenv(BOO, 12)
   osh> if $(equal $(OSTYPE), Win32)
            setenv(BOO, 17)
            X = 2
   osh> println($X $(getenv BOO))
   1 12

The export command presents a way out. It takes care of “exporting” a value (or the entire variable environment) from an inner scope to an outer one.

   osh> X = 1
   osh> setenv(BOO, 12)
   osh> if $(equal $(OSTYPE), Win32)
            setenv(BOO, 17)
            X = 2
            export
   osh> println($X $(getenv BOO))
   2 17

Exports are especially useful in loop to export values from one iteration of a loop to the next.

   # Ok, let's try to add up the elements of the array
   osh>sum(l) =
           total = 0
           foreach(i, $l)
               total = $(add $(total), $i)
           value $(total)
   osh>sum(1 2 3)
   - : 0 : Int

   # Oops, that didn't work!
   osh>sum(l) =
           total = 0
           foreach(i, $l)
               total = $(add $(total), $i)
               export
           value $(total)
   osh>sum(1 2 3)
   - : 6 : Int

A while loop is another form of loop, with an auto-export.

    osh>i = 0
    osh>total = 0
    osh>while $(lt $i, 10)
            total = $(add $(total), $i)
            i = $(add $i, 1)
    osh>println($(total))
    45

7.7  Shell aliases

Sometimes you may want to define an alias, an OMake command that masquerades as a real shell command. You can do this by adding your function as a method to the Shell object.

For an example, suppose we use the awk function to print out all the comments in a file.

    osh>cat comment.om
    # Comment function
    comments(filename) =
        awk($(filename))
        case $'^#'
            println($0)
    # File finished
    osh>include comment
    osh>comments(comment.om)
    # Comment function
    # File finished

To add it as an alias, add the method (using += to preserve the existing entries in the Shell).

   osh>Shell. +=
           printcom(argv) =
               comments($(nth 0, $(argv)))
   osh>printcom comment.om > output.txt
   osh>cat output.txt
   # Comment function
   # File finished

A shell command is passed an array of arguments argv. This does not include the name of the alias.

7.8  Input/output redirection on the cheap

As it turns out, scoping also provides a nice alternate way to perform redirection. Suppose you have already written a lot of code that prints to the standard output channel, but now you decide you want to redirect it. One way to do it is using the technique in the previous example: define your function as an alias, and then use shell redirection to place the output where you want.

There is an alternate method that is easier in some cases. The variables stdin, stdout, and stderr define the standard I/O channels. To redirect output, redefine these variables as you see fit. Of course, you would normally do this in a nested scope, so that the outer channels are not affected.

    osh>f() =
            println(Hello world)
    osh>f()
    Hello world
    osh>section:
            stdout = $(fopen output.txt, w)
            f()
            close($(stdout))
    osh>cat output.txt
    Hello world

This also works for shell commands. If you like to gamble, you can try the following example.

    osh>f() =
            println(Hello world)
    osh>f()
    Hello world
    osh>section:
            stdout = $(fopen output.txt, w)
            f()
            cat output.txt
            close($(stdout))
    osh>cat output.txt
    Hello world
    Hello world
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-var-index.html0000664000152300015230000003262010655737107016537 0ustar jyhjyh Index of variables
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Index of variables

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-contents.html0000664000152300015230000014727410655737107016513 0ustar jyhjyh Contents
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Contents

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-fun-index.html0000664000152300015230000006745510655737107016555 0ustar jyhjyh Index of functions and special forms
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Index of functions and special forms

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-options.html0000664000152300015230000006027610655737107016345 0ustar jyhjyh Synopsis
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Appendix A  Synopsis

omake [-j <count>] [-k] [-p] [-P] [-n] [-s] [-S] [-w] [-t] [-u] [-U] [-R] [--verbose] [--project] [--depend] [--progress] [--print-status] [--print-exit] [--print-dependencies] [--show-dependencies <target>] [--all-dependencies] [--verbose-dependencies] [--force-dotomake] [--dotomake <dir>] [--flush-includes] [--configure] [--save-interval <seconds>] [--install] [--install-all] [--install-force] [--version] [--absname] [--output-normal] [--output-postpone] [--output-only-errors] [--output-at-end] filename... [var-definition...]

A.1  General usage

For Boolean options (for example, -s, --progress, etc.) the option can include a prefix --no, which inverts the usual sense of the option. For example, the option --progress means “print a progress bar,” while the option --no--progress means “do not print a progress bar.”

If multiple instances of an option are specified, the final option determines the behavior of OMake. In the following command line, the final --no-S cancels the earlier -S.

    % omake -S --progress --no-S

A.2  Output control

A.2.1  -s

-s

Never not print commands as they are executed (be “silent”).

A.2.2  -S

-S

Do not print commands as they are executed unless they produce output and/or fail. This is the default.

A.2.3  -w

-w

Print directory information in make format as commands are executed. This is mainly useful for editors that expect make-style directory information for determining the location of errors.

A.2.4  –progress

--progress

Print a progress indicator. This option is enabled by default when the OMake's output (stdout) is on a terminal and disabled by default (except on Windows) when the OMake's output is redirected.

A.2.5  –print-status

--print-status

Print status lines (the + and - lines).

A.2.6  –print-exit

--print-exit

Print termination codes when commands complete.

A.2.7  –verbose

--verbose

Make OMake very verbose. This option is equivalent to --no-S --print-status --print-exit VERBOSE=true

A.2.8  –output-normal

--output-normal

As rule commands are executed, relay their output to the OMake output right away. This is enabled by default, unless --output-postpone or --output-only-errors is enabled.

A.2.9  –output-postpone

--output-postpone

When a rule finishes, print the output as a single block. This is useful in combination -j option (see Section A.3.12), where the output of multiple subprocesses can be garbled. The diversion is printed as a single coherent unit.

Note that enabling --output-postpone will by default disable the --output-normal option. This might be problematic if you have a command that decides to ask for interactive input. If the --output-postpone is enabled, but the --output-normal is not, the prompt of such a command will not be visible and it may be hard to figure out why the build appears “stuck”. You might also consider using the --progress flag (see Section A.2.4) so that you can see when the build is active.

A.2.10  –output-only-errors

--output-only-errors

Similar to --output-postpone, except that the postponed output from commands that were successful will be discarded. This can be useful in reducing unwanted output so that you can concentrate on any errors.

A.2.11  –output-at-end

--output-at-end

If any rules/commands fail, re-print the output of the failed commands when OMake finishes the build. This is especially useful when any of the -k, -p, or -P options are enabled.

This option is off by default. However, when -k is enabled — either explicitly or via one of the -p/-P options — --output-at-end will be enabled by default.

A.2.12  -o

-o [01jwWpPxXsS]

For brevity, the -o option is also provided to duplicate the above output options. The -o option takes a argument consisting of a sequence of characters. The characters are read from left-to-right; each specifies a set of output options. In general, an uppercase character turns the option on; a lowercase character turns the option off.

0
Equivalent to -s --output-only-errors --no-progress

This option specifies that omake should be as quiet as possible. If any errors occur during the build, the output is delayed until the build terminates. Output from successful commands is discarded.

1
Equivalent to -S --progress --output-only-errors

This is a slightly more relaxed version of “quiet” output. The output from successful commands is discarded. The output from failed commands is printed immediately after the command complete. The output from failed commands is displayed twice: once immediately after the command completes, and again when the build completes. A progress bar is displayed so that you know when the build is active. Include the `p' option if you want to turn off the progress bar (for example omake -o 1p).

2
Equivalent to --progress --output-postpone

The is even more relaxed, output from successful commands is printed. This is often useful for deinterleaving the output when using -j.

W
Equivalent to -w
w
Equivalent to --no-w
P
Equivalent to --progress
p
Equivalent to --no--progress
X
Equivalent to --print-exit
x
Equivalent to --no-print-exit
S
Equivalent to -S
s
Equivalent to --no-S

A.3  Build options

A.3.1  -k

-k

Do not abort when a build command fails; continue to build as much of the project as possible. This option is implied by both -p and -P options. In turn, this option would imply the --output-at-end option.

A.3.2  -n

-n

This can be used to see what would happen if the project were to be built.

A.3.3  -p

-p

Watch the filesystem for changes, and continue the build until it succeeds. If this option is specified, omake will restart the build whenever source files are modified. Implies -k.

A.3.4  -P

-P

Watch the filesystem for changes forever. If this option is specified, omake will restart the build whenever source files are modified. Implies -k.

A.3.5  -R

-R

Ignore the current directory and build the project from its root directory. When omake is run in a subdirectory of a project and no explicit targets are given on the command line, it would normally only build files within the current directory and its subdirectories (more precisely, it builds all the .DEFAULT targets in the current directory and its subdirectories). If the -R option is specified, the build is performed as if omake were run in the project root.

In other words, with the -R option, all the relative targets specified on the command line will be taken relative to the project root (instead of relative to the current directory). When no targets are given on the command line, all the .DEFAULT targets in the project will be built (regardless of the current directory).

A.3.6  -t

-t

Update the omake database to force the project to be considered up-to-date.

A.3.7  -U

-U

Do not trust cached build information. This will force the entire project to be rebuilt.

A.3.8  –depend

--depend

Do not trust cached dependency information. This will force files to be rescanned for dependency information.

A.3.9  –configure

--configure

Re-run static. sections of the included omake files, instead of trusting the cached results.

A.3.10  –force-dotomake

--force-dotomake

Always use the $HOME/.omake for the .omc cache files.

A.3.11  –dotomake

--dotomake <dir>

Use the specified directory instead of the $HOME/.omake for the placement of the .omc cache files.

A.3.12  -j

-j <count>

Run multiple build commands in parallel. The count specifies a bound on the number of commands to run simultaneously. In addition, the count may specify servers for remote execution of commands in the form server=count. For example, the option -j 2:small.host.org=1:large.host.org=4 would specify that up to 2 jobs can be executed locally, 1 on the server small.host.org and 4 on large.host.org. Each remote server must use the same filesystem location for the project.

Remote execution is currently an experimental feature. Remote filesystems like NFS do not provide adequate file consistency for this to work.

A.3.13  –print-dependencies

--print-dependencies

Print dependency information for the targets on the command line.

A.3.14  –show-dependencies

--show-dependencies <target>

Print dependency information if the target is built.

A.3.15  –all-dependencies

--all-dependencies

If either of the options --print-dependencies or --show-dependencies is in effect, print transitive dependencies. That is, print all dependencies recursively. If neither option --print-dependencies, --show-dependencies is specified, this option has no effect.

A.3.16  –verbose-dependencies

--verbose-dependencies

If either of the options --print-dependencies or --show-dependencies is in effect, also print listings for each dependency. The output is very verbose, consider redirecting to a file. If neither option --print-dependencies, --show-dependencies is specified, this option has no effect.

A.3.17  –install

--install

Install default files OMakefile and OMakeroot into the current directory. You would typically do this to start a project in the current directory.

A.3.18  –install-all

--install-all

In addition to installing files OMakefile and OMakeroot, install default OMakefiles into each subdirectory of the current directory. cvs(1) rules are used for filtering the subdirectory list. For example, OMakefiles are not copied into directories called CVS, RCCS, etc.

A.3.19  –install-force

--install-force

Normally, omake will prompt before it overwrites any existing OMakefile. If this option is given, all files are forcibly overwritten without prompting.

A.3.20  –absname

--absname

Filenames should expand to absolute pathnames.

N.B. This is an experimental option. It may become deprecated.

A.3.21  variable definition

name=[value]

omake variables can also be defined on the command line in the form name=value. For example, the CFLAGS variable might be defined on the command line with the argument CFLAGS="-Wall -g".

A.4  Additional options

In addition, omake supports a number of debugging flags on the command line. Run omake --help to get a summary of these flags.

A.5  Environment variables

A.5.1  OMAKEFLAGS

If defines, the OMAKEFLAGS should specify a set of options exactly as they are specified on the command line.

A.5.2  OMAKELIB

If defined, the OMAKELIB environment variable should refer to the installed location of the OMake standard library. This is the directory that contains Pervasives.om etc. On a Unix system, this is often /usr/lib/omake or /usr/local/lib/omake, and on Win32 systems it is often c:\Program Files\OMake\lib.

If not defined, omake uses the default configured location. You should normally leave this unset.

A.6  Functions

A.6.1  OMakeFlags

The OMakeFlags function can be used within an OMakefile to modify the set of options. The options should be specified exactly as they are on the command line. For example, if you want some specific project to be silent and display a progress bar, you can add the following line to your OMakefile.

    OMakeFlags(-S --progress)

For options where it makes sense, the options are scoped like variables. For example, if you want OMake to be silent for a single rule (instead of for the entire project), you can use scoping the restrict the range of the option.

    section
        # Do not display command output when foo is constructed
        OMakeFlags(-S)

        foo: fee
           echo "This is a generated file" > foo
           cat fee >> foo
           chmod 555 foo

A.7  Option processing

When omake is invoked, the options are processed in the following order.

  1. All options specified by the OMAKEFLAGS environment variable are defined globally.
  2. All options from the command line are defined globally.
  3. Any individual calls the the OMakeFlags function modify the options locally.

A.8  .omakerc

If the $(HOME)/.omakerc exists, it is read before any of the OMakefiles in your project. The .omakerc file is frequently used for user-specific customization. For example, instead of defining the OMAKEFLAGS environment variable, you could add a line to your .omakerc.

    $(HOME)/.omakerc:
        # My private options
        OMakeFlags(-S --progress)
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-target-index.html0000664000152300015230000000724010646471724017235 0ustar jyhjyh Index of special targets
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Index of special targets

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-language-naming.html0000664000152300015230000002445110646471724017677 0ustar jyhjyh Variables and Naming
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 5  Variables and Naming

During evaluation, there are three different kinds of namespaces. Variables can be private, or they may refer to fields in the current this object, or they can be part of the global namespace. The namespace can be specified directly by including an explicit qualifier before the variable name. The three namespaces are separate; a variable can be bound in one or more simultaneously.

    # private namespace
    private.X = 1
    # current object
    this.X = 2
    # public, globally defined
    global.X = 3

5.1  private.

The private. qualifier is used to define variables that are private to the current file/scope. The values are not accessible outside the scope. Private variables are statically (lexically) scoped.

    Obj. =
       private.X = 1

       print() =
          println(The value of X is: $X)

    # Prints:
    #    The private value of X is: 1
    Obj.print()

    # This is an error--X is private in Obj
    y = $(Obj.X)

In addition, private definitions do not affect the global value of a variable.

   # The public value of x is 1
   x = 1

   # This object uses a private value of x
   Obj. =
       private.x = 2

       print() =
          x = 3
          println(The private value of x is: $x)
          println(The public value of x is: $(public.x))
          f()

   # Prints:
   #    The private value of x is: 3
   #    The public value of x is: 1
   Obj.print()

Private variables have two additional properties.

  1. Private variables are local to the file in which they are defined.
  2. Private variables are not exported by the export directive, unless they are mentioned explicitly.
           private. =
              FLAG = true
    
           section
              FLAG = false
              export
    
           # FLAG is still true
           section
              FLAG = false
              export FLAG
    
           # FLAG is now false
      

5.2  this.

The this. qualifier is used to define fields that are local to an object. Object variables are dynamically scoped.

    X = 1
    f() =
       println(The public value of X is: $(X))

    # Prints:
    #    The public value of X is: 2
    section
       X = 2
       f()

    # X is a protected field in the object
    Obj. =
       this.X = 3

       print() =
          println(The value of this.X is: $(X))
          f()

    # Prints:
    #    The value of this.X is: 3
    #    The public value of X is: 1
    Obj.print()

    # This is legal, it defines Y as 3
    Y = $(Obj.X)

In general, it is a good idea to define object variables as protected. The resulting code is more modular because variables in your object will not produce unexpected clashes with variables defined in other parts of the project.

5.3  global.

The global. qualifier is used to specify global dynamically-scoped variables. In the following example, the global. definition specifies that the binding X = 4 is to be dynamically scoped. Global variables are not defined as fields of an object.

    X = 1
    f() =
       println(The global value of X is: $(X))

    # Prints:
    #    The global value of X is: 2
    section
       X = 2
       f()

    Obj. =
       protected.X = 3

       print() =
          println(The protected value of X is: $(X))
          global.X = 4
          f()

    # Prints:
    #    The protected value of X is: 3
    #    The global value of X is: 4
    Obj.print()

5.4  protected.

In OMake 0.9.8, protected is a synonym for this.

    osh>protected.x = 1
    - : "1" : Sequence
    osh>value $(this.x)
    - : "1" : Sequence

In 0.9.9, this will change, so that the qualifier protected means (in 0.9.9) that a variable is local to the current object or file, and may not be accessed outside it.

5.5  public.

In OMake 0.9.8, public is a synonym for global.

    osh>public.x = 1
    - : "1" : Sequence
    osh>value $(global.x)
    - : "1" : Sequence

In 0.9.9, this will change, so that the qualifier public means (in 0.9.9) that a variable is to be accessible from outside the current file or object.

5.6  Qualified blocks

If several qualified variables are defined simultaneously, a block form of qualifier can be defined. The syntax is similar to an object definition, where the name of the object is the qualifier itself. For example, the following program defines two private variables X and Y.

    private. =
        X = 1
        Y = 2

The qualifier specifies a default namespace for new definitions in the block. The contents of the block is otherwise completely general.

    private. =
        X = 1
        Y = 2
        public.Z = $(add $X, $Y)
        # Prints "The value of Z is 3"
        echo The value of Z is $Z

5.7  declare

When a variable name is unqualified, its namespace is determined by the most recent definition or declaration that is in scope for that variable. We have already seen this in the examples, where a variable definition is qualified, but the subsequent uses are not qualified explicitly. In the following example, the first occurrence of $X refers to the private definition, because that is the most recent. The public definition of X is still 0, but the variable must be qualified explicitly.

    public.X = 0
    private.X = 1
    
    public.print() =
        println(The value of private.X is: $X)
        println(The value of public.X is: $(public.X))

Sometimes it can be useful to declare a variable without defining it. For example, we might have a function that uses a variable X that is to be defined later in the program. The declare directive can be used for this.

    declare public.X

    public.print() =
        println(The value of X is $X)

    # Prints "The value of X is 2"
    X = 2
    print()

Finally, what about variables that are used but not explicitly qualified? In this case, the following rules are used.

  • If the variable is a function parameter, it is private.
  • If the variable is defined in an object, it is qualified with this..
  • Otherwise, the variable is public.
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-doc.css0000664000152300015230000000116010564736301015220 0ustar jyhjyh .li-itemize{margin:1ex 0ex;} .li-enumerate{margin:1ex 0ex;} .dd-description{margin:0ex 0ex 1ex 4ex;} .dt-description{margin:0ex;} .toc{list-style:none;} .title{margin:auto;text-align:center} .center{text-align:center;margin-left:auto;margin-right:auto;} DIV TABLE{margin-left:inherit;margin-right:inherit;} PRE{text-align:left;margin-left:0ex;margin-right:auto;} BLOCKQUOTE{margin-left:4ex;margin-right:4ex;text-align:left;} TD P{margin:0px;} .hbar{border:none;height:2px;width:100%;background-color:black;} .verbatim{margin-left:3ex; background:#ddeeff;} CODE{padding-left:0.2ex; padding-right:0.2ex; background:#eef7ff;} omake-0.9.8.5/doc/html/announce.txt0000664000152300015230000000373610311736670015230 0ustar jyhjyhOMake is a build system, similar to GNU make, but with many additional features. The home site for OMake is http://omake.metaprl.org/ o Support for projects spanning several directories or directory hierarchies. o Comes with a default configuration file providing support for OCaml, C and LaTeX projects, or a mixture thereof. Often, a configuration file is as simple as a single line OCamlProgram(prog, foo bar baz) which states that the program "prog" is built from the files foo.ml, bar.ml, and baz.ml. o Fast, reliable, automated, scriptable dependency analysis using MD5 digests. o Portability: omake provides a uniform interface on Win32, Cygwin, and Unix systems including Linux and OS X. o Builtin functions that provide the most common features of programs like grep, sed, and awk. These are especially useful on Win32. o Full native support for rules that build several files at once. o Active filesystem monitoring, where the build automatically restarts whenever you modify a source file. This can be very useful during the edit/compile cycle. o A companion command interpreter, osh, that can be used interactively. OMake preserves the style of syntax and rule definitions used in Makefiles, making it easy to port your project to omake. There is no need to code in perl (cons), or Python (scons). However, there are a few things to keep in mind: 1. Indentation is significant, but tabs are not required. 2. The omake language is functional: functions are first-class and there are no side-effects apart from I/O. 3. Scoping is dynamic. To try it out, run the command "omake --install" in a project directory, and modify the generated OMakefile. OMake 0.9.6.5 is an alpha release. While we have made an effort to ensure that it is bug-free, it is possible some functions may not behave as you would expect. Please report any comments and/or bugs to the mailing list omake@metaprl.org omake-0.9.8.5/doc/html/omake-pervasives.html0000664000152300015230000007063510655737107017041 0ustar jyhjyh The standard objects
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 12  The standard objects

Pervasives defines the objects that are defined in all programs. The following objects are defined.

12.1  Pervasives objects

12.1.1  Object

Parent objects: none.

The Object object is the root object. Every class is a subclass of Object.

It provides the following fields:

  • $(o.object-length): the number of fields and methods in the object.
  • $(o.object-mem <var>): returns true iff the <var> is a field or method of the object.
  • $(o.object-add <var>, <value>): adds the field to the object, returning a new object.
  • $(o.object-find <var>): fetches the field or method from the object; it is equivalent to $(o.<var>), but the variable can be non-constant.
  • $(o.object-map <fun>): maps a function over the object. The function should take two arguments; the first is a field name, the second is the value of that field. The result is a new object constructed from the values returned by the function.
  • o.object-foreach: the object-foreach form is equivalent to object-map, but with altered syntax.
       o.object-foreach(<var1>, <var2>)
          <body>
       

    For example, the following function prints all the fields of an object o.

       PrintObject(o) =
          o.object-foreach(v, x)
             println($(v) = $(x))
       

    The export form is valid in a object-foreach body. The following function collects just the field names of an object.

       FieldNames(o) =
          names[] =
          o.object-foreach(v, x)
             names[] += $(v)
             export
          return $(names)
       

12.1.2  Map

Parent objects: Object.

A Map object is a dictionary from values to values. The <key> values are restricted to simple values: integers, floating-point numbers, strings, files, directories, and arrays of simple values.

The Map object provides the following methods.

  • $(o.length): the number of items in the map.
  • $(o.mem <key>): returns true iff the <key> is defined in the map.
  • $(o.add <key>, <value>): adds the field to the map, returning a new map.
  • $(o.find <key>): fetches the field from the map.
  • $(o.keys): fetches an array of all the keys in the map, in alphabetical order.
  • $(o.values): fetches an array of all the values in the map, in the alphabetical order of the corresponding keys.
  • $(o.map <fun>): maps a function over the map. The function should take two arguments; the first is a field name, the second is the value of that field. The result is a new object constructed from the values returned by the function.
  • o.foreach: the foreach form is equivalent to map, but with altered syntax.
       o.foreach(<var1>, <var2>)
          <body>
       

    For example, the following function prints all the fields of an object o.

       PrintObject(o) =
          o.foreach(v, x)
             println($(v) = $(x))
       

    The export form is valid in a foreach body. The following function collects just the field names of the map.

       FieldNames(o) =
          names =
          o.foreach(v, x)
             names += $(v)
             export
          return $(names)
       

There is also simpler syntax when the key is a string. The table can be defined using definitions with the form $|key| (the number of pipe symbols | is allowed to vary).

    $|key 1| = value1
    $||key1|key2|| = value2    # The key is key1|key2
    X = $|key 1|               # Define X to be the value of field $|key 1|

The usual modifiers are also allowed. The expression $`|key| represents lazy evaluation of the key, and $,|key| is normal evaluation.

12.1.3  Number

Parent objects: Object.

The Number object is the parent object for integers and floating-point numbers.

12.1.4  Int

Parent objects: Number.

The Int object represents integer values.

12.1.5  Float

Parent objects: Number.

The Float object represents floating-point numbers.

12.1.6  Sequence

Parent objects: Object.

The Sequence object represents a generic object containing sequential elements. It provides the following methods.

  • $(s.length): the number of elements in the sequence.
  • $(s.map <fun>): maps a function over the fields in the sequence. The function should take one argument. The result is a new sequence constructed from the values returned by the function.
  • s.foreach: the foreach form is equivalent to map, but with altered syntax.
       s.foreach(<var>)
          <body>
       

    For example, the following function prints all the elements of the sequence.

       PrintSequence(s) =
          s.foreach(x)
             println(Elem = $(x))
       

    The export form is valid in a foreach body. The following function counts the number of zeros in the sequence.

       Zeros(s) =
          count = $(int 0)
          s.foreach(v)
             if $(equal $(v), 0)
                count = $(add $(count), 1)
                export
             export
          return $(count)
       
  • $(s.forall <fun>): tests whether each element of the sequence satifies a predicate.
  • $(s.exists <fun>): tests whether the sequence contains an element that satisfies a predicate.
  • $(s.sort <fun>): sorts a sequence. The <fun> is a comparison function. It takes two elements (x, y) of the sequence, compares them, and returns a negative number if x < y, a positive number if x > y, and zero if the two elements are equal.
      osh> items = $(int 0 3 -2)
      osh> items.forall(x => $(gt $x, 0))
      - : bool = false
      osh> items.exists(x => $(gt $x, 0))
      - : bool = true
      osh> items.sort($(compare))
      - : Array = -2 3 0
      

12.1.7  Array

Parent objects: Sequence.

The Array is a random-access sequence. It provides the following additional methods.

  • $(s.nth <i>): returns element i of the sequence.
  • $(s.rev <i>): returns the reversed sequence.

12.1.8  String

Parent objects: Array.

12.1.9  Fun

Parent objects: Object.

The Fun object provides the following methods.

  • $(f.arity): the arity if the function.

12.1.10  Rule

Parent objects: Object.

The Rule object represents a build rule. It does not currently have any methods.

12.1.11  Target

Parent object: Object.

The Target object contains information collected for a specific target file.

  • target: the target file.
  • effects: the files that may be modified by a side-effect when this target is built.
  • scanner_deps: static dependencies that must be built before this target can be scanned.
  • static-deps: statically-defined build dependencies of this target.
  • build-deps: all the build dependencies for the target, including static and scanned dependencies.
  • build-values: all the value dependencies associated with the build.
  • build-commands: the commands to build the target.
  • output-file: if output was diverted to a file, with one of the --output-* options A, this field names that file. Otherwise it is false.

The object supports the following methods.

  • find(file): returns a Target object for the given file. Raises a RuntimeException if the specified target is not part of the project.
  • find-optional(file): returns a Target object for the given file, or false if the file is not part of the project.

NOTE: the information for a target is constructed dynamically, so it is possible that the Target object for a node will contain different values in different contexts. The easiest way to make sure that the Target information is complete is to compute it within a rule body, where the rule depends on the target file, or the dependencies of the target file.

12.1.12  Node

Parent objects: Object.

The Node object is the parent object for files and directories. It supports the following operations.

  • $(node.stat): returns a stat object for the file. If the file is a symbolic link, the stat information is for the destination of the link, not the link itself.
  • $(node.lstat): returns a stat object for the file or symbolic link.
  • $(node.unlink): removes the file.
  • $(node.rename <file>): renames the file.
  • $(node.link <file>): creates a hard link <dst> to this file.
  • $(node.symlink <file>): create a symbolic link <dst> to this file.
  • $(node.chmod <perm>): change the permission of this file.
  • $(node.chown <uid>, <gid>): change the owner and group id of this file.

12.1.13  File

Parent objects: Node.

The file object represents the name of a file.

12.1.14  Dir

Parent objects: Node.

The Dir object represents the name of a directory.

12.1.15  Channel

Parent objects: Object.

A Channel is a generic IO channel. It provides the following methods.

  • $(o.close): close the channel.
  • $(o.name): returns the file name associated with the channel.

12.1.16  InChannel

Parent objects: Channel.

A InChannel is an input channel. The variable stdin is the standard input channel.

It provides the following methods.

  • $(InChannel.fopen <file>): open a new input channel.
  • $(InChannel.of-string <string>): open a new input channel, using a string as input.
  • $(o.read <number>): reads the given number of characters from the channel
  • $(o.readln): reads a line from the channel

12.1.17  OutChannel

Parent object: Channel.

A OutChannel is an output channel. The variables stdout and stderr are the standard output and error channels.

It provides the following methods.

  • $(OutChannel.fopen <file>): open a new output channel.
  • $(OutChannel.string): open a new output channel, writing to a string.
  • $(OutChannel.to-string): get the current string of output, for an output channel created as OutChannel.open-string.
  • $(OutChannel.append <file>): opens a new output channel, appending to the file.
  • $(c.flush): flush the output channel.
  • $(c.print <string>): print a string to the channel.
  • $(c.println <string>): print a string to the channel, followed by a line terminator.

12.1.18  Location

Parent objects: Location.

The Location object represents a location in a file.

12.1.19  Exception

Parent objects: Object.

The Exception object is used as the base object for exceptions. It has no fields.

12.1.20  RuntimeException

Parent objects: Exception.

The RuntimeException object represents an exception from the runtime system. It has the following fields.

  • position: a string representing the location where the exception was raised.
  • message: a string containing the exception message.

12.1.21  UnbuildableException

Parent objects: Exception.

The UnbuildableException object should be used to signal that a target is not buildable. It will be caught by functions such as target-exists. This exception has the following fields:

  • target: indicates which target is not buildable.
  • message: a string containing the exception message.

12.1.22  Shell

Parent objects: Object.

The Shell object contains the collection of builtin functions available as shell commands.

You can define aliases by extending this object with additional methods. All methods in this class are called with one argument: a single array containing an argument list.

  • echo

    The echo function prints its arguments to the standard output channel.

  • jobs

    The jobs method prints the status of currently running commands.

  • cd

    The cd function changes the current directory. Note that the current directory follows the usual scoping rules. For example, the following program lists the files in the foo directory, but the current directory is not changed.

       section
          echo Listing files in the foo directory...
          cd foo
          ls
    
       echo Listing files in the current directory...
       ls
    
  • bg

    The bg method places a job in the background. The job is resumed if it has been suspended.

  • fg

    The fg method brings a job to the foreground. The job is resumed if it has been suspended.

  • stop

    The stop method suspends a running job.

  • wait

    The wait function waits for a running job to terminate. It is not possible to wait for a suspended job.

    The job is not brought to the foreground. If the wait is interrupted, the job continues to run in the background.

  • kill

    The kill function signal a job.

    kill [signal] <pid...>.

    The signals are either numeric, or symbolic. The symbolic signals are named as follows.

    ABRT, ALRM, HUP, ILL, KILL, QUIT, SEGV, TERM, USR1, USR2, CHLD, STOP, TSTP, TTIN, TTOU, VTALRM, PROF.

  • exit

    The exit function terminates the current session.

  • which, where

    See the documentation for the corresponding functions.

  • rehash

    Reset the search path.

  • ln-or-cp src dst

    Links or copies src to dst, overwriting dst. Namely, ln-or-cp would first delete the dst file (unless it is a directory), if it exists. Next it would try to create a symbolic link dst poiting to src (it will make all the necessary adjustmnents of relative paths). If symbolic link can not be created (e.g. the OS or the filesystem does not support symbolic links), it will try to create a hard link. If that fails too, it will try to forcibly copy src to dst.

  • history

    Print the current command-line history.

  • digest

    Print the digests of the given files.

  • Win32 functions.

    Win32 doesn't provide very many programs for scripting, except for the functions that are builtin to the DOS cmd.exe. The following functions are defined on Win32 and only on Win32. On other systems, it is expected that these programs already exist.

    • grep
         grep [-q] [-n] pattern files...
      

      The grep function calls the omake grep function.

  • Internal versions of standard system commands.

    By default, omake uses internal versions of the following commands: cp, mv, cat, rm, mkdir, chmod, test, find. If you really want to use the standard system versions of these commands, set the USE_SYSTEM_COMMANDS as one of the first definitions in your OMakeroot file.

    • pwd
          pwd
      

      The pwd alias would print the absolute path to current directory.

    • mkdir
          mkdir [-m <mode>] [-p] files
      

      The mkdir function is used to create directories. The -verb+-m+ option can be used to specify the permission mode of the created directory. If the -p option is specified, the full path is created.

    • cp
    • mv
          cp [-f] [-i] [-v] src dst
          cp [-f] [-i] [-v] files dst
          mv [-f] [-i] [-v] src dst
          mv [-f] [-i] [-v] files dst
      

      The cp function copies a src file to a dst file, overwriting it if it already exists. If more than one source file is specified, the final file must be a directory, and the source files are copied into the directory.

      -f
      Copy files forcibly, do not prompt.
      -i
      Prompt before removing destination files.
      -v
      Explain what is happening.
    • rm
         rm [-f] [-i] [-v] [-r] files
         rmdir [-f] [-i] [-v] [-r] dirs
      

      The rm function removes a set of files. No warnings are issued if the files do not exist, or if they cannot be removed.

      Options:

      -f
      Forcibly remove files, do not prompt.
      -i
      Prompt before removal.
      -v
      Explain what is happening.
      -r
      Remove contents of directories recursively.
    • chmod
          chmod [-r] [-v] [-f] mode files
      

      The chmod function changes the permissions on a set of files or directories. This function does nothing on Win32. The mode may be specified as an octal number, or in symbolic form [ugoa]*[-=][rwxXstugo]+. See the man page for chmod for details.

      Options:

      -r
      Change permissions of all files in a directory recursively.
      -v
      Explain what is happening.
      -f
      Continue on errors.
    • cat
         cat files...
      

      The cat function prints the contents of the files to stdout

    • test

      test expression
      [ expression +]+
      [ --help
      [ --version
      See the documentation for the test function.

    • find

      find expression

      See the documentation for the find function.

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/html/omake-toc.html0000664000152300015230000001106210656155147015423 0ustar jyhjyh The OMake user guide and reference manual
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

The OMake user guide and reference manual

Jason Hickey, Aleksey Nogin, et. al.

7thAugust, 2007

All the documentation on a single page

OMake table of contents

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

This document was translated from LATEX by HEVEA.
omake-0.9.8.5/doc/html/omake-system.html0000664000152300015230000035523010655737107016173 0ustar jyhjyh File, I/O and system operations
Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options

Chapter 10  File, I/O and system operations

10.1  File names

10.1.1  file, dir

   $(file sequence) : File Sequence
      sequence : Sequence
   $(dir sequence) : Dir Sequence
      sequence : Sequence

The file and dir functions define location-independent references to files and directories. In omake, the commands to build a target are executed in the target's directory. Since there may be many directories in an omake project, the build system provides a way to construct a reference to a file in one directory, and use it in another without explicitly modifying the file name. The functions have the following syntax, where the name should refer to a file or directory.

For example, we can construct a reference to a file foo in the current directory.

   FOO = $(file foo)
   .SUBDIRS: bar

If the FOO variable is expanded in the bar subdirectory, it will expand to ../foo.

These commands are often used in the top-level OMakefile to provide location-independent references to top-level directories, so that build commands may refer to these directories as if they were absolute.

   ROOT = $(dir .)
   LIB  = $(dir lib)
   BIN  = $(dir bin)

Once these variables are defined, they can be used in build commands in subdirectories as follows, where $(BIN) will expand to the location of the bin directory relative to the command being executed.

   install: hello
 cp hello $(BIN)

10.1.2  tmpfile

    $(tmpfile prefix) : File
    $(tmpfile prefix, suffix) : File
        prefix : String
        suffix : String

The tmpfile function returns the name of a fresh temporary file in the temporary directory.

10.1.3  in

   $(in dir, exp) : String Array
      dir : Dir
      exp : expression

The in function is closely related to the dir and file functions. It takes a directory and an expression, and evaluates the expression in that effective directory. For example, one common way to install a file is to define a symbol link, where the value of the link is relative to the directory where the link is created.

The following commands create links in the $(LIB) directory.

    FOO = $(file foo)
    install:
       ln -s $(in $(LIB), $(FOO)) $(LIB)/foo

Note that the in function only affects the expansion of Node (File and Dir) values.

10.1.4  basename

   $(basename files) : String Sequence
      files : String Sequence

The basename function returns the base names for a list of files. The basename is the filename with any leading directory components removed.

For example, the expression $(basename dir1/dir2/a.out /etc/modules.conf /foo.ml) evaluates to a.out modules.conf foo.ml.

10.1.5  dirname

   $(dirname files) : String Sequence
      files : String Sequence

The dirname function returns the directory name for a list of files. The directory name is the filename with the basename removed. If a name does not have a directory part, the directory is “.”

For example, the expression $(dirname dir1\dir2\a.out /etc/modules.conf /foo.ml bar.ml) evaluates to dir1/dir2 /etc / ..

Note: this function is different from the dirof function. The function dirname is simple a function over strings, while dirof is a function on filenames.

10.1.6  rootname

   $(rootname files) : String Sequence
      files : String Sequence

The rootname function returns the root name for a list of files. The rootname is the filename with the final suffix removed.

For example, the expression $(rootname dir1/dir2/a.out /etc/a.b.c /foo.ml) evaluates to dir1/dir2/a /etc/a.b /foo.

10.1.7  dirof

   $(dirof files) : Dir Sequence
      files : File Sequence

The dirof function returns the directory for each of the listed files.

For example, the expression $(dirof dir/dir2/a.out /etc/modules.conf /foo.ml) evaluates to the directories dir1/dir2 /etc /.

10.1.8  fullname

   $(fullname files) : String Sequence
      files : File Sequence

The fullname function returns the pathname relative to the project root for each of the files or directories.

10.1.9  absname

   $(absname files) : String Sequence
      files : File Sequence

The absname function returns the absolute pathname for each of the files or directories.

10.1.10  homename

   $(homename files) : String Sequence
      files : File Sequence

The homename function returns the name of a file in tilde form, if possible. The unexpanded forms are computed lazily: the homename function will usually evaluate to an absolute pathname until the first tilde-expansion for the same directory.

10.1.11  suffix

   $(suffix files) : String Sequence
      files : StringSequence

The suffix function returns the suffixes for a list of files. If a file has no suffix, the function returns the empty string.

For example, the expression $(suffix dir1/dir2/a.out /etc/a /foo.ml) evaluates to .out .ml.

10.2  Path search

10.2.1  which

   $(which files) : File Sequence
      files : String Sequence

The which function searches for executables in the current command search path, and returns file values for each of the commands. It is an error if a command is not found.

10.2.2  where

The where function is similar to which, except it returns the list of all the locations of the given executable (in the order in which the corresponding directories appear in $PATH). In case a command is handled internally by the Shell object, the first string in the output will describe the command as a built-in function.

    % where echo
    echo is a Shell object method (a built-in function)
    /bin/echo

10.2.3  rehash

    rehash()

The rehash function resets all search paths.

10.2.4  exists-in-path

   $(exists-in-path files) : String
      files : String Sequence

The exists-in-path function tests whether all executables are present in the current search path.

10.2.5  digest, digest-optional

     $(digest files) : String Array
        file : File Array
     raises RuntimeException

     $(digest-optional files) : String Array
        file : File Array

The digest and digest-optional functions compute MD5 digests of files. The digest function raises an exception if a file does no exist. The digest-optional returns false if a file does no exist. MD5 digests are cached.

10.2.6  find-in-path, find-in-path-optional

    $(find-in-path path, files) : File Array
       path : Dir Array
       files : String Array
    raises RuntimeException

    $(find-in-path-optional path, files) : File Array

The find-in-path function searches for the files in a search path. Only the tail of the filename is significant. The find-in-path function raises an exception if the file can't be found. The find-in-path-optional function silently removes files that can't be found.

10.2.7  digest-in-path, digest-in-path-optional

    $(digest-in-path path, files) : String/File Array
       path : Dir Array
       files : String Array
    raises RuntimeException

    $(digest-in-path-optional path, files) : String/File Array

The digest-in-path function searches for the files in a search path and returns the file and digest for each file. Only the tail of the filename is significant. The digest-in-path function raises an exception if the file can't be found. The digest-in-path-optional function silently removes elements that can't be found.

10.3  File stats

10.3.1  file-exists, target-exists, target-is-proper

   $(file-exists files) : String
   $(target-exists files) : String
   $(target-is-proper files) : String
       files : File Sequence

The file-exists function checks whether the files listed exist. The target-exists function is similar to the file-exists function. However, it returns true if the file exists or if it can be built by the current project. The target-is-proper returns true only if the file can be generated in the current project.

10.3.2  stat-reset

   $(stat-reset files) : String
       files : File Sequence

OMake uses a stat-cache. The stat-reset function reset the stat information for the given files, forcing the stat information to be recomputed the next time it is requested.

10.3.3  filter-exists, filter-targets, filter-proper-targets

   $(filter-exists files) : File Sequence
   $(filter-targets files) : File Sequence
   $(filter-proper-targets) : File Sequence
      files : File Sequence

The filter-exists, filter-targets, and filter-proper-targets functions remove files from a list of files.

  • filter-exists: the result is the list of files that exist.
  • filter-targets: the result is the list of files either exist, or can be built by the current project.
  • filter-proper-targets: the result is the list of files that can be built in the current project.
Creating a “distclean” target

One way to create a simple “distclean” rule that removes generated files from the project is by removing all files that can be built in the current project.

CAUTION: you should be careful before you do this. The rule removes any file that can potentially be reconstructed. There is no check to make sure that the commands to rebuild the file would actually succeed. Also, note that no file outside the current project will be deleted.

    .PHONY: distclean

    distclean:
        rm $(filter-proper-targets $(ls R, .))

If you use CVS, you may wish to utilize the cvs_realclean program that is distributed with OMake in order to create a “distclean” rule that would delete all the files thare are not known to CVS. For example, if you already have a more traditional “clean” target defined in your project, and if you want the “distclean” rule to be interactive by default, you can write the following:

    if $(not $(defined FORCE_REALCLEAN))
        FORCE_REALCLEAN = false
        export

    distclean: clean
        cvs_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock

You can add more files that you want to always keep (such as configuration files) with the -i option.

Similarly, if you use Subversion, you utilize the build/svn_realclean.om script that comes with OMake:

    if $(not $(defined FORCE_REALCLEAN))
        FORCE_REALCLEAN = false
        export

    open build/svn_realclean

    distclean: clean
        svn_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock

See also the dependencies-proper function for an alternate method for removing intermediate files.

10.3.4  find-targets-in-path, find-targets-in-path-optional

    $(find-targets-in-path path files) : File Array
    $(find-targets-in-path-optional path, files) : File Array
        path : Dir Array
        files : File Sequence

The find-target-in-path function searches for targets in the search path. For each file file in the file list, the path is searched sequentially for a directory dir such that the target dir/file exists. If so, the file dir/file is returned.

For example, suppose you are building a C project, and project contains a subdirectory src/ containing only the files fee.c and foo.c. The following expression evaluates to the files src/fee.o src/foo.o even if the files have not already been built.

    $(find-targets-in-path lib src, fee.o foo.o)

    # Evaluates to
    src/fee.o src/foo.o

The find-targets-in-path function raises an exception if the file can't be found. The find-targets-in-path-optional function silently removes targets that can't be found.

    $(find-targets-in-path-optional lib src, fee.o foo.o fum.o)

    # Evaluates to
    src/fee.o src/foo.o

10.3.5  find-ocaml-targets-in-path-optional

The find-ocaml-targets-in-path-optional function is very similar to the find-targets-in-path-optional one, except an OCaml-style search is used, where for every element of the search path and for every name being searched for, first the uncapitalized version is tried and if it is not buildable, then the capitalized version is tried next.

10.3.6  file-sort

   $(file-sort order, files) : File Sequence
      order : String
      files : File Sequence

The file-sort function sorts a list of filenames by build order augmented by a set of sort rules. Sort rules are declared using the .ORDER target. The .BUILDORDER defines the default order.

$(file-sort <order>, <files>)

For example, suppose we have the following set of rules.

   a: b c
   b: d
   c: d

   .DEFAULT: a b c d
      echo $(file-sort .BUILDORDER, a b c d)

In the case, the sorter produces the result d b c a. That is, a target is sorted after its dependencies. The sorter is frequently used to sort files that are to be linked by their dependencies (for languages where this matters).

There are three important restrictions to the sorter:

  • The sorter can be used only within a rule body. The reason for this is that all dependencies must be known before the sort is performed.
  • The sorter can only sort files that are buildable in the current project.
  • The sorter will fail if the dependencies are cyclic.

10.3.6.1  sort rule

It is possible to further constrain the sorter through the use of sort rules. A sort rule is declared in two steps. The target must be listed as an .ORDER target; and then a set of sort rules must be given. A sort rule defines a pattern constraint.

   .ORDER: .MYORDER

   .MYORDER: %.foo: %.bar
   .MYORDER: %.bar: %.baz

   .DEFAULT: a.foo b.bar c.baz d.baz
      echo $(sort .MYORDER, a.foo b.bar c.baz d.baz)

In this example, the .MYORDER sort rule specifies that any file with a suffix .foo should be placed after any file with suffix .bar, and any file with suffix .bar should be placed after a file with suffix .baz.

In this example, the result of the sort is d.baz c.baz b.bar a.foo.

10.3.7  file-check-sort

   file-check-sort(files)
      files : File Sequence
   raises RuntimeException

The file-check-sort function checks whether a list of files is in sort order. If so, the list is returned unchanged. If not, the function raises an exception.

$(file-check-sort <order>, <files>)

10.4  Globbing and file listings

OMake commands are “glob-expanded” before being executed. That is, names may contain patterns that are expanded to sequences of file and directory names. The syntax follows the standard bash(1), csh(1), syntax, with the following rules.

  • A pathname is a sequence of directory and file names separated by one of the / or \ characters. For example, the following pathnames refer to the same file: /home/jyh/OMakefile and /home\jyh/OMakefile.
  • Glob-expansion is performed on the components of a path. If a path contains occurrences of special characters (listed below), the path is viewed as a pattern to be matched against the actual files in the system. The expansion produces a sequence of all file/directory names that match.

    For the following examples, suppose that a directory /dir contains files named a, -a, a.b, and b.c.

    *
    Matches any sequence of zero-or-more characters. For example, the pattern /dir/a* expands to /dir/a /dir/aa /dir/a.b.
    ?
    Matches exactly one character. The pattern /dir/?a expands the filename /dir/-a.
    [...]
    Square brackets denote character sets and ranges in the ASCII character set. The pattern may contain individual characters c or character ranges c1-c2. The pattern matches any of the individual characters specified, or any characters in the range. A leading “hat” inverts the send of the pattern. To specify a pattern that contains the literal characters -, the - should occur as the first character in the range.
    PatternExpansion
    /dir/[a-b]*/dir/a /dir/a.b /dir/b.c
    /dir/[-a-b]*/dir/a /dir/-a /dir/a.b /dir/b.c
    /dir/[-a]*/dir/a /dir/-a /dir/a.b
    {s1,...,sN}
    Braces indicate brace-expansion. The braces delimit a sequence of strings separated by commas. Given N strings, the result produces N copies of the pattern, one for each of the strings si.
    PatternExpansion
    a{b,c,d}ab ac ad
    a{b{c,d},e}abc abd ae
    a{?{[A-Z],d},*}a?[A-Z] a?d a*
     
    The tilde is used to specify home directories. Depending on your system, these might be possible expansions.
    PatternExpansion
    ~jyh/home/jyh
    ~bob/*.cc:\Documents and Settings\users\bob

    The \ character is both a pathname separator and an escape character. If followed by a special glob character, the \ changes the sense of the following character to non-special status. Otherwise, \ is viewed as a pathname separator.
    PatternExpansion
    ~jyh/\*~jyh/* (* is literal)
    /dir/\[a-z?/dir/[a-z? ([ is literal, ? is a pattern).
    c:\Program Files\[A-z]c:\Program Files[A-z]*

    Note that the final case might be considered to be ambiguous (where \ should be viewed as a pathname separator, not as an escape for the subsequent [ character. If you want to avoid this ambiguity on Win32, you should use the forward slash / even for Win32 pathnames (the / is translated to \ in the output).

    PatternExpansion
    c:/Program Files/[A-z]*c:\Program Files\WindowsUpdate ...

10.4.1  glob

   $(glob strings) : Node Array
      strings : String Sequence
   $(glob options, strings) : Node Array
      options : String
      strings : String Sequence

The glob function performs glob-expansion.

The . and .. entries are always ignored.

The options are:

b
Do not perform csh(1)-style brace expansion.
e
The \ character does not escape special characters.
n
If an expansion fails, return the expansion literally instead of aborting.
i
If an expansion fails, it expands to nothing.
.
Allow wildcard patterns to match files beginning with a .
A
Return all files, including files that begin with a .
F
Match only normal files (any file that is not a directory).
D
Match only directory files.
C
Ignore files according to cvs(1) rules.
P
Include only proper subdirectories.

In addition, the following variables may be defined that affect the behavior of glob.

GLOB_OPTIONS
A string containing default options.
GLOB_IGNORE
A list of shell patterns for filenames that glob should ignore.
GLOB_ALLOW
A list of shell patterns. If a file does not match a pattern in GLOB_ALLOW, it is ignored.

The returned files are sorted by name.

10.4.2  ls

   $(ls files) : Node Array
      files : String Sequence
   $(ls options, files) : Node Array
      files : String Sequence

The ls function returns the filenames in a directory.

The . and .. entries are always ignored. The patterns are shell-style patterns, and are glob-expanded.

The options include all of the options to the glob function, plus the following.

R
Perform a recursive listing.

The GLOB_ALLOW and GLOB_IGNORE variables can be defined to control the globbing behavior. The returned files are sorted by name.

10.4.3  subdirs

   $(subdirs dirs) : Dir Array
      dirs : String Sequence
   $(subdirs options, dirs) : Dir Array
      options : String
      dirs : String Sequence

The subdirs function returns all the subdirectories of a list of directories, recursively.

The possible options are the following:

A
Return directories that begin with a .
C
Ignore files according to .cvsignore rules.
P
Include only proper subdirectories.

10.5  Filesystem operations

10.5.1  mkdir

   mkdir(mode, node...)
      mode : Int
      node : Node
   raises RuntimeException

   mkdir(node...)
      node : Node
   raises RuntimeException

The mkdir function creates a directory, or a set of directories. The following options are supported.

-m mode
Specify the permissions of the created directory.
-p
Create parent directories if they do not exist.
Interpret the remaining names literally.

10.5.2  Stat

The Stat object represents an information about a filesystem node, as returned by the stat and lstat functions. It contains the following fields.

dev
: the device number.
ino
: the inode number.
kind
: the kind of the file, one of the following: REG (regular file), DIR (directory), CHR (character device), BLK (block device), LNK (symbolic link), FIFO (named pipe), SOCK (socket).
perm
: access rights, represented as an integer.
nlink
: number of links.
uid
: user id of the owner.
gid
: group id of the file's group.
rdev
: device minor number.
size
: size in bytes.
atime
: last access time, as a floating point number.
mtime
: last modification time, as a floating point number.
ctime
: last status change time, as a floating point number.

Not all of the fields will have meaning on all operating systems.

10.5.3  stat, lstat

    $(stat node...) : Stat
       node : Node or Channel
    $(lstat node...) : Stat
       node : Node or Channel
    raises RuntimeException

The stat functions return file information. If the file is a symbolic link, the stat function refers to the destination of the link; the lstat function refers to the link itself.

10.5.4  unlink

   $(unlink file...)
      file : File
   #(rm file...)
      file : File
   $(rmdir dir...)
      dir : Dir
   raises RuntimeException

The unlink and rm functions remove a file. The rmdir function removes a directory.

The following options are supported for rm and rmdir.

-f
ignore nonexistent files, never prompt.
-i
prompt before removal.
-r
remove the contents of directories recursively.
-v
explain what is going on.
the rest of the values are interpreted literally.

10.5.5  rename

    rename(old, new)
       old : Node
       new : Node
    mv(nodes... dir)
       nodes : Node Sequence
       dir   : Dir
    cp(nodes... dir)
       nodes : Node Sequence
       dir   : Dir
    raises RuntimeException

The rename function changes the name of a file or directory named old to new.

The mv function is similar, but if new is a directory, and it exists, then the files specified by the sequence are moved into the directory. If not, the behavior of mv is identical to rename. The cp function is similar, but the original file is not removed.

The mv and cp functions take the following options.

-f
Do not prompt before overwriting.
-i
Prompt before overwriting.
-v
Explain what it happening.
-r
Copy the contents of directories recursively.
Interpret the remaining arguments literally.

10.5.6  link

   link(src, dst)
      src : Node
      dst : Node
   raises RuntimeException

The link function creates a hard link named dst to the file or directory src.

Hard links may work under Win32 when NTFS is used.

Normally, only the superuser can create hard links to directories.

10.5.7  symlink

   symlink(src, dst)
      src : Node
      dst : Node
   raises RuntimeException

The symlink function creates a symbolic link dst that points to the src file.

The link name is computed relative to the target directory. For example, the expression $(symlink a/b, c/d) creates a link named c/d -> ../a/b.

Symbolic links are not supported in Win32. Consider using the ln-or-cp Shell alias for cross-platform portable linking/copying.

10.5.8  readlink

   $(readlink node...) : Node
      node : Node

The readlink function reads the value of a symbolic link.

10.5.9  chmod

   chmod(mode, dst...)
      mode : Int
      dst : Node or Channel
   chmod(mode dst...)
      mode : String
      dst : Node Sequence
   raises RuntimeException

The chmod function changes the permissions of the targets.

Options:

-v
Explain what is happening.
-r
Change files and directories recursively.
-f
Continue on errors.
Interpret the remaining argument literally.

10.5.10  chown

   chown(uid, gid, node...)
      uid : Int
      gid : Int
      node : Node or Channel
   chown(uid, node...)
      uid : Int
      node : Node or Channel
   raises RuntimeException

The chown function changes the user and group id of the file. If the gid is not specified, it is not changed. If either id is -1, that id is not changed.

10.5.11  truncate

   truncate(length, node...)
       length : Int
       node : Node or Channel
   raises RuntimeException

The truncate function truncates a file to the given length.

10.5.12  umask

    $(umask mode) : Int
       mode : Int
    raises RuntimeException

Sets the file mode creation mask. The previous mask is returned. This value is not scoped, changes have global effect.

10.6  vmount

10.6.1  vmount

    vmount(src, dst)
       src, dst : Dir
    vmount(flags, src, dst)
       flags : String
       src, dst : Dir

“Mount” the src directory on the dst directory. This is a virtual mount, changing the behavior of the $(file ...) function. When the $(file str) function is used, the resulting file is taken relative to the src directory if the file exists. Otherwise, the file is relative to the current directory.

The main purpose of the vmount function is to support multiple builds with separate configurations or architectures.

The options are as follows.

l
Create symbolic links to files in the src directory.
c
Copy files from the src directory.

Mount operations are scoped.

10.6.2  add-project-directories

    add-project-directories(dirs)
       dirs : Dir Array

Add the directories to the set of directories that omake considers to be part of the project. This is mainly used to avoid omake complaining that the current directory is not part of the project.

10.6.3  remove-project-directories

    remove-project-directories(dirs)
       dirs : Dir Array

Removed the directories from the set of directories that omake considers to be part of the project. This is mainly used to cancel a .SUBDIRS from including a directory if it is determined that the directory does not need to be compiled.

10.7  File predicates

10.7.1  test

   test(exp) : Bool
      exp : String Sequence

The expression grammar is as follows:

  • ! expression : expression is not true
  • expression1 -a expression2 : both expressions are true
  • expression1 -o expression2 : at least one expression is true
  • ( expression ) : expression is true

The base expressions are:

  • -n string : The string has nonzero length
  • -z string : The string has zero length
  • string = string : The strings are equal
  • string != string : The strings are not equal
  • int1 -eq int2 : The integers are equal
  • int1 -ne int2 : The integers are not equal
  • int1 -gt int2 : int1 is larger than int2
  • int1 -ge int2 : int2 is not larger than int1
  • int1 -lt int2 : int1 is smaller than int2
  • int1 -le int2 : int1 is not larger than int2
  • file1 -ef file2 : On Unix, file1 and file2 have the same device and inode number. On Win32, file1 and file2 have the same name.
  • file1 -nt file2 : file1 is newer than file2
  • file1 -ot file2 : file1 is older than file2
  • -b file : The file is a block special file
  • -c file : The file is a character special file
  • -d file : The file is a directory
  • -e file : The file exists
  • -f file : The file is a normal file
  • -g file : The set-group-id bit is set on the file
  • -G file : The file's group is the current effective group
  • -h file : The file is a symbolic link (also -L)
  • -k file : The file's sticky bit is set
  • -L file : The file is a symbolic link (also -h)
  • -O file : The file's owner is the current effective user
  • -p file : The file is a named pipe
  • -r file : The file is readable
  • -s file : The file is empty
  • -S file : The file is a socket
  • -u file : The set-user-id bit is set on the file
  • -w file : The file is writable
  • -x file : The file is executable

A string is any sequence of characters; leading - characters are allowed.

An int is a string that can be interpreted as an integer. Unlike traditional versions of the test program, the leading characters may specify an arity. The prefix 0b means the numbers is in binary; the prefix 0o means the number is in octal; the prefix 0x means the number is in hexadecimal. An int can also be specified as -l string, which evaluates to the length of the string.

A file is a string that represents the name of a file.

The syntax mirrors that of the test(1) program. If you are on a Unix system, the man page explains more. Here are some examples.

    # Create an empty file
    osh> touch foo
    # Is the file empty?
    osh> test(-e foo)
    - : true
    osh> test(! -e foo)
    - : false
    # Create another file
    osh> touch boo
    # Is the newer file newer?
    osh> test(boo -nt foo)
    - : true
    # A more complex query
    # boo is newer than foo, and foo is empty
    osh> test(\( boo -nt foo \) -a -e foo)
    - : true

10.7.2  find

   find(exp) : Node Array
      exp : String Sequence

The find function searches a directory recursively, returning the files for which the expression evaluates to true.

The expression argument uses the same syntax as the test function, with the following exceptions.

  1. The expression may begin with a directory. If not specified, the current directory is searched.
  2. The {} string expands to the current file being examined.

The syntax of the expression is the same as test, with the following additions.

  • -name string : The current file matches the glob expression (see Section 10.4).
  • -regex string : The current file matches the regular expression

The find function performs a recursive scan of all subdirectories. The following call is being run from the root of the omake source directory.

    osh> find(. -name fo* )
    - : <array
            /home/jyh/.../omake/mk/.svn/format
            /home/jyh/.../omake/RPM/.svn/format
            ...
            /home/jyh/.../omake/osx_resources/installer_files/.svn/format>

Another example, listing only those files that are normal files or symbolic links.

    osh> find(. -name fo* -a \( -f {} -o -L {} \))
    - : <array
            /home/jyh/.../omake/mk/.svn/format
            /home/jyh/.../omake/RPM/.svn/format
            ...
            /home/jyh/.../omake/osx_resources/installer_files/.svn/format>

10.8  IO functions

10.8.1  Standard channels

The following variables define the standard channels.

stdin

stdin : InChannel

The standard input channel, open for reading.

stdout

stdout : OutChannel

The standard output channel, open for writing.

stderr

stderr : OutChannel

The standard error channel, open for writing.

10.8.2  open-in-string

The open-in-string treats a string as if it were a file and returns a channel for reading.

   $(open-in-string s) : Channel
       s : String

10.8.3  open-out-string, out-contents

The open-out-string creates a channel that writes to a string instead of a file. The string may be retrieved with the out-contents function.

   $(open-out-string) : Channel
   $(out-contents chan) : String
       chan : OutChannel

10.8.4  fopen

The fopen function opens a file for reading or writing.

   $(fopen file, mode) : Channel
      file : File
      mode : String

The file is the name of the file to be opened. The mode is a combination of the following characters.

r
Open the file for reading; it is an error if the file does not exist.
w
Open the file for writing; the file is created if it does not exist.
a
Open the file in append mode; the file is created if it does not exist.
+
Open the file for both reading and writing.
t
Open the file in text mode (default).
b
Open the file in binary mode.
n
Open the file in nonblocking mode.
x
Fail if the file already exists.

Binary mode is not significant on Unix systems, where text and binary modes are equivalent.

10.8.5  close

    $(close channel...)
       channel : Channel

The close function closes a file that was previously opened with fopen.

10.8.6  read, input-line

   $(read channel, amount) : String
   $(input-line channel) : String
      channel : InChannel
      amount  : Int
   raises RuntimeException

The read function reads up to amount bytes from an input channel, and returns the data that was read. The input-line function reads a line from the file and returns the line read, without the line terminator. If an end-of-file condition is reached, both functions raise a RuntimeException exception.

10.8.7  write

   $(write channel, buffer, offset, amount) : String
      channel : OutChannel
      buffer  : String
      offset  : Int
      amount  : Int
   $(write channel, buffer) : String
      channel : OutChannel
      buffer  : String
   raises RuntimeException

In the 4-argument form, the write function writes bytes to the output channel channel from the buffer, starting at position offset. Up to amount bytes are written. The function returns the number of bytes that were written.

The 3-argument form is similar, but the offset is 0.

In the 2-argument form, the offset is 0, and the amount if the length of the buffer.

If an end-of-file condition is reached, the function raises a RuntimeException exception.

10.8.8  lseek

    $(lseek channel, offset, whence) : Int
       channel : Channel
       offset  : Int
       whence  : String
    raises RuntimeException

The lseek function repositions the offset of the channel channel according to the whence directive, as follows:

SEEK_SET
The offset is set to offset.
SEEK_CUR
The offset is set to its current position plus offset bytes.
SEEK_END
The offset is set to the size of the file plus offset bytes.

The lseek function returns the new position in the file.

10.8.9  rewind

   rewind(channel...)
      channel : Channel

The rewind function set the current file position to the beginning of the file.

10.8.10  tell

    $(tell channel...) : Int...
       channel : Channel
    raises RuntimeException

The tell function returns the current position of the channel.

10.8.11  flush

   $(flush channel...)
      channel : OutChannel

The flush function can be used only on files that are open for writing. It flushes all pending data to the file.

10.8.12  channel-name

   $(channel-name channel...) : String
      channel : Channel

The channel-name function returns the name that is associated with the channel.

10.8.13  dup

    $(dup channel) : Channel
       channel : Channel
    raises RuntimeException

The dup function returns a new channel referencing the same file as the argument.

10.8.14  dup2

   dup2(channel1, channel2)
      channel1 : Channel
      channel2 : Channel
   raises RuntimeException

The dup2 function causes channel2 to refer to the same file as channel1.

10.8.15  set-nonblock

   set-nonblock-mode(mode, channel...)
      channel : Channel
      mode : String

The set-nonblock-mode function sets the nonblocking flag on the given channel. When IO is performed on the channel, and the operation cannot be completed immediately, the operations raises a RuntimeException.

10.8.16  set-close-on-exec-mode

   set-close-on-exec-mode(mode, channel...)
      channel : Channel
      mode : String
   raises RuntimeException

The set-close-on-exec-mode function sets the close-on-exec flags for the given channels. If the close-on-exec flag is set, the channel is not inherited by child processes. Otherwise it is.

10.8.17  pipe

   $(pipe) : Pipe
   raises RuntimeException

The pipe function creates a Pipe object, which has two fields. The read field is a channel that is opened for reading, and the write field is a channel that is opened for writing.

10.8.18  mkfifo

   mkfifo(mode, node...)
      mode : Int
      node : Node

The mkfifo function creates a named pipe.

10.8.19  select

   $(select rfd..., wfd..., wfd..., timeout) : Select
      rfd : InChannel
      wfd : OutChannel
      efd : Channel
      timeout : float
   raises RuntimeException

The select function polls for possible IO on a set of channels. The rfd are a sequence of channels for reading, wfd are a sequence of channels for writing, and efd are a sequence of channels to poll for error conditions. The timeout specifies the maximum amount of time to wait for events.

On successful return, select returns a Select object, which has the following fields:

read
An array of channels available for reading.
write
An array of channels available for writing.
error
An array of channels on which an error has occurred.

10.8.20  lockf

    lockf(channel, command, len)
       channel : Channel
       command : String
       len : Int
    raises RuntimeException

The lockf function places a lock on a region of the channel. The region starts at the current position and extends for len bytes.

The possible values for command are the following.

F_ULOCK
Unlock a region.
F_LOCK
Lock a region for writing; block if already locked.
F_TLOCK
Lock a region for writing; fail if already locked.
F_TEST
Test a region for other locks.
F_RLOCK
Lock a region for reading; block if already locked.
F_TRLOCK
Lock a region for reading; fail is already locked.

10.8.21  InetAddr

The InetAddr object describes an Internet address. It contains the following fields.

addr
String: the Internet address.
port
Int: the port number.

10.8.22  Host

A Host object contains the following fields.

name
String: the name of the host.
aliases
String Array: other names by which the host is known.
addrtype
String: the preferred socket domain.
addrs
InetAddr Array: an array of Internet addresses belonging to the host.

10.8.23  gethostbyname

   $(gethostbyname host...) : Host...
      host : String
   raises RuntimeException

The gethostbyname function returns a Host object for the specified host. The host may specify a domain name or an Internet address.

10.8.24  Protocol

The Protocol object represents a protocol entry. It has the following fields.

name
String: the canonical name of the protocol.
aliases
String Array: aliases for the protocol.
proto
Int: the protocol number.

10.8.25  getprotobyname

   $(getprotobyname name...) : Protocol...
      name : Int or String
   raises RuntimeException

The getprotobyname function returns a Protocol object for the specified protocol. The name may be a protocol name, or a protocol number.

10.8.26  Service

The Service object represents a network service. It has the following fields.

name
String: the name of the service.
aliases
String Array: aliases for the service.
port
Int: the port number of the service.
proto
Protocol: the protocol for the service.

10.8.27  getservbyname

   $(getservbyname service...) : Service...
      service : String or Int
   raises RuntimeException

The getservbyname function gets the information for a network service. The service may be specified as a service name or number.

10.8.28  socket

   $(socket domain, type, protocol) : Channel
      domain : String
      type : String
      protocol : String
   raises RuntimeException

The socket function creates an unbound socket.

The possible values for the arguments are as follows.

The domain may have the following values.

PF_UNIX or unix
Unix domain, available only on Unix systems.
PF_INET or inet
Internet domain, IPv4.
PF_INET6 or inet6
Internet domain, IPv6.

The type may have the following values.

SOCK_STREAM or stream
Stream socket.
SOCK_DGRAM or dgram
Datagram socket.
SOCK_RAW or raw
Raw socket.
SOCK_SEQPACKET or seqpacket
Sequenced packets socket

The protocol is an Int or String that specifies a protocol in the protocols database.

10.8.29  bind

   bind(socket, host, port)
      socket : InOutChannel
      host : String
      port : Int
   bind(socket, file)
      socket : InOutChannel
      file : File
   raise RuntimeException

The bind function binds a socket to an address.

The 3-argument form specifies an Internet connection, the host specifies a host name or IP address, and the port is a port number.

The 2-argument form is for Unix sockets. The file specifies the filename for the address.

10.8.30  listen

   listen(socket, requests)
      socket : InOutChannel
      requests : Int
   raises RuntimeException

The listen function sets up the socket for receiving up to requests number of pending connection requests.

10.8.31  accept

   $(accept socket) : InOutChannel
      socket : InOutChannel
   raises RuntimeException

The accept function accepts a connection on a socket.

10.8.32  connect

    connect(socket, addr, port)
       socket : InOutChannel
       addr : String
       port : int
    connect(socket, name)
       socket : InOutChannel
       name : File
    raise RuntimeException

The connect function connects a socket to a remote address.

The 3-argument form specifies an Internet connection. The addr argument is the Internet address of the remote host, specified as a domain name or IP address. The port argument is the port number.

The 2-argument form is for Unix sockets. The name argument is the filename of the socket.

10.8.33  getchar

    $(getc) : String
    $(getc file) : String
       file : InChannel or File
    raises RuntimeException

The getc function returns the next character of a file. If the argument is not specified, stdin is used as input. If the end of file has been reached, the function returns false.

10.8.34  gets

   $(gets) : String
   $(gets channel) : String
      channel : InChannel or File
   raises RuntimeException

The gets function returns the next line from a file. The function returns the empty string if the end of file has been reached. The line terminator is removed.

10.8.35  fgets

   $(fgets) : String
   $(fgets channel) : String
      channel : InChannel or File
   raises RuntimeException

The fgets function returns the next line from a file that has been opened for reading with fopen. The function returns the empty string if the end of file has been reached. The returned string is returned as literal data. The line terminator is not removed.

10.9  Printing functions

Output is printed with the print and println functions. The println function adds a terminating newline to the value being printed, the print function does not.

    fprint(<file>, <string>)
    print(<string>)
    eprint(<string>)
    fprintln(<file>, <string>)
    println(<string>)
    eprintln(<string>)

The fprint functions print to a file that has been previously opened with fopen. The print functions print to the standard output channel, and the eprint functions print to the standard error channel.

10.10  Value printing functions

Values can be printed with the printv and printvln functions. The printvln function adds a terminating newline to the value being printed, the printv function does not.

    fprintv(<file>, <string>)
    printv(<string>)
    eprintv(<string>)
    fprintvln(<file>, <string>)
    printvln(<string>)
    eprintvln(<string>)

The fprintv functions print to a file that has been previously opened with fopen. The printv functions print to the standard output channel, and the eprintv functions print to the standard error channel.

10.10.1  Miscellaneous functions

10.10.1.1  set-channel-line

    set-channel-line(channel, filename, line)
        channel : Channel
        filename : File
        line : int

Set the line number information for the channel.

10.11  Higher-level IO functions

10.11.1  Regular expressions

Many of the higher-level functions use regular expressions. Regular expressions are defined by strings with syntax nearly identical to awk(1).

Strings may contain the following character constants.

  • \\ : a literal backslash.
  • \a : the alert character ^G.
  • \b : the backspace character ^H.
  • \f : the formfeed character ^L.
  • \n : the newline character ^J.
  • \r : the carriage return character ^M.
  • \t : the tab character ^I.
  • \v : the vertical tab character.
  • \xhh... : the character represented by the string of hexadecimal digits h. All valid hexadecimal digits following the sequence are considered to be part of the sequence.
  • \ddd : the character represented by 1, 2, or 3 octal digits.

Regular expressions are defined using the special characters .\^$[(){}*?+.

  • c : matches the literal character c if c is not a special character.
  • \c : matches the literal character c, even if c is a special character.
  • . : matches any character, including newline.
  • ^ : matches the beginning of a line.
  • $ : matches the end of line.
  • [abc...] : matches any of the characters abc...
  • [^abc...] : matches any character except abc...
  • r1|r2 : matches either r1 or r2.
  • r1r2 : matches r1 and then r2.
  • r+ : matches one or more occurrences of r.
  • r* : matches zero or more occurrences of r.
  • r? : matches zero or one occurrence of r.
  • (r) : parentheses are used for grouping; matches r.
  • \(r\) : also defines grouping, but the expression matched within the parentheses is available to the output processor through one of the variables $1, $2, ...
  • r{n} : matches exactly n occurrences of r.
  • r{n,} : matches n or more occurrences of r.
  • r{n,m} : matches at least n occurrences of r, and no more than m occurrences.
  • \y: matches the empty string at either the beginning or end of a word.
  • \B: matches the empty string within a word.
  • \<: matches the empty string at the beginning of a word.
  • \>: matches the empty string at the end of a word.
  • \w: matches any character in a word.
  • \W: matches any character that does not occur within a word.
  • \`: matches the empty string at the beginning of a file.
  • \': matches the empty string at the end of a file.

Character classes can be used to specify character sequences abstractly. Some of these sequences can change depending on your LOCALE.

  • [:alnum:] Alphanumeric characters.
  • [:alpha:] Alphabetic characters.
  • [:lower:] Lowercase alphabetic characters.
  • [:upper:] Uppercase alphabetic characters.
  • [:cntrl:] Control characters.
  • [:digit:] Numeric characters.
  • [:xdigit:] Numeric and hexadecimal characters.
  • [:graph:] Characters that are printable and visible.
  • [:print:] Characters that are printable, whether they are visible or not.
  • [:punct:] Punctuation characters.
  • [:blank:] Space or tab characters.
  • [:space:] Whitespace characters.

10.11.2  cat

    cat(files) : Sequence
       files : File or InChannel Sequence

The cat function concatenates the output from multiple files and returns it as a string.

10.11.3  grep

   grep(pattern) : String  # input from stdin, default options
      pattern : String
   grep(pattern, files) : String  # default options
      pattern : String
      files   : File Sequence
   grep(options, pattern, files) : String
     options : String
     pattern : String
     files   : File Sequence

The grep function searches for occurrences of a regular expression pattern in a set of files, and prints lines that match. This is like a highly-simplified version of grep(1).

The options are:

q
If specified, the output from grep is not displayed.
h
If specified, output lines will not include the filename (default, when only one input file is given).
n
If specified, output lines include the filename (default, when more than one input file is given).
v
If specified, search for lines without a match instead of lines with a match,

The pattern is a regular expression.

If successful (grep found a match), the function returns true. Otherwise, it returns false.

10.11.4  scan

   scan(input-files)
   case string1
      body1
   case string2
      body2
   ...
   default
      bodyd

The scan function provides input processing in command-line form. The function takes file/filename arguments. If called with no arguments, the input is taken from stdin. If arguments are provided, each specifies an InChannel, or the name of a file for input. Output is always to stdout.

The scan function operates by reading the input one line at a time, and processing it according to the following algorithm.

For each line, the record is first split into fields, and the fields are bound to the variables $1, $2, .... The variable $0 is defined to be the entire line, and $* is an array of all the field values. The $(NF) variable is defined to be the number of fields.

Next, a case expression is selected. If string_i matches the token $1, then body_i is evaluated. If the body ends in an export, the state is passed to the next clause. Otherwise the value is discarded.

For example, here is an scan function that acts as a simple command processor.

    calc() =
       i = 0
       scan(script.in)
       case print
          println($i)
       case inc
          i = $(add $i, 1)
          export
       case dec
          i = $(sub $i, 1)
          export
       case addconst
          i = $(add $i, $2)
          export
       default
          eprintln($"Unknown command: $1")

The scan function also supports several options.

    scan(options, files)
    ...
A
Parse each line as an argument list, where arguments may be quoted. For example, the following line has three words, “ls”, “-l”, “Program Files”.
       ls -l "Program Files"
   
O
Parse each line using white space as the separator, using the usual OMake algorithm for string parsing. This is the default.
x
Once each line is split, reduce each word using the hex representation. This is the usual hex representation used in URL specifiers, so the string “Program Files” may be alternately represented in the form ProgramProgram+Files.

Note, if you want to redirect the output to a file, the easiest way is to redefine the stdout variable. The stdout variable is scoped the same way as other variables, so this definition does not affect the meaning of stdout outside the calc function.

    calc() =
        stdout = $(fopen script.out, w)
        scan(script.in)
           ...
        close(stdout)

10.11.5  awk

   awk(input-files)
   case pattern1:
      body1
   case pattern2:
      body2
   ...
   default:
      bodyd

or

   awk(options, input-files)
   case pattern1:
      body1
   case pattern2:
      body2
   ...
   default:
      bodyd

The awk function provides input processing similar to awk(1), but more limited. The input-files argument is a sequence of values, each specifies an InChannel, or the name of a file for input. If called with no options and no file arguments, the input is taken from stdin. Output is always to stdout.

The variables RS and FS define record and field separators as regular expressions. The default value of RS is the regular expression \r|\n|\r\n. The default value of FS is the regular expression [ \t]+.

The awk function operates by reading the input one record at a time, and processing it according to the following algorithm.

For each line, the record is first split into fields using the field separator FS, and the fields are bound to the variables $1, $2, .... The variable $0 is defined to be the entire line, and $* is an array of all the field values. The $(NF) variable is defined to be the number of fields.

Next, the cases are evaluated in order. For each case, if the regular expression pattern_i matches the record $0, then body_i is evaluated. If the body ends in an export, the state is passed to the next clause. Otherwise the value is discarded. If the regular expression contains \(r\) expression, those expression override the fields $1, $2, ....

For example, here is an awk function to print the text between two delimiters \begin{<name>} and \end{<name>}, where the <name> must belong to a set passed as an argument to the filter function.

    filter(names) =
       print = false

       awk(Awk.in)
       case $"^\\end\{\([:alpha:]+\)\}"
          if $(mem $1, $(names))
             print = false
             export
          export
       default
          if $(print)
             println($0)
       case $"^\\begin\{\([:alpha:]+\)\}"
          print = $(mem $1, $(names))
          export

Note, if you want to redirect the output to a file, the easiest way is to redefine the stdout variable. The stdout variable is scoped the same way as other variables, so this definition does not affect the meaning of stdout outside the filter function.

    filter(names) =
        stdout = $(fopen file.out, w)
        awk(Awk.in)
           ...
        close(stdout)

Options.

b
“Break” when evaluating cases. Only the first case that matches will be selected.

The break function can be used to abort the loop, exiting the awk function immediately.

10.11.6  fsubst

   fsubst(files)
   case pattern1 [options]
      body1
   case pattern2 [options]
      body2
   ...
   default
      bodyd

The fsubst function provides a sed(1)-like substitution function. Similar to awk, if fsubst is called with no arguments, the input is taken from stdin. If arguments are provided, each specifies an InChannel, or the name of a file for input.

The RS variable defines a regular expression that determines a record separator, The default value of RS is the regular expression \r|\n|\r\n.

The fsubst function reads the file one record at a time.

For each record, the cases are evaluated in order. Each case defines a substitution from a substring matching the pattern to replacement text defined by the body.

Currently, there is only one option: g. If specified, each clause specifies a global replacement, and all instances of the pattern define a substitution. Otherwise, the substitution is applied only once.

Output can be redirected by redefining the stdout variable.

For example, the following program replaces all occurrences of an expression word. with its capitalized form.

    section
       stdout = $(fopen Subst.out, w)
       fsubst(Subst.in)
       case $"\<\([[:alnum:]]+\)\." g
          value $(capitalize $1).
       close(stdout)

10.11.7  lex

   lex(files)
   case pattern1
      body1
   case pattern2
      body2
   ...
   default
      bodyd

The lex function provides a simple lexical-style scanner function. The input is a sequence of files or channels. The cases specify regular expressions. Each time the input is read, the regular expression that matches the longest prefix of the input is selected, and the body is evaluated.

If two clauses both match the same input, the last one is selected for execution. The default case matches the regular expression .; you probably want to place it first in the pattern list.

If the body end with an export directive, the state is passed to the next clause.

For example, the following program collects all occurrences of alphanumeric words in an input file.

    collect-words($(files)) =
       words[] =
       lex($(files))
       default
          # empty
       case $"[[:alnum:]]+" g
          words[] += $0
          export

The default case, if one exists, matches single characters. Since

It is an error if the input does not match any of the regular expressions.

The break function can be used to abort the loop.

10.11.8  lex-search

   lex-search(files)
   case pattern1
      body1
   case pattern2
      body2
   ...
   default
      bodyd

The lex-search function is like the lex function, but input that does not match any of the regular expressions is skipped. If the clauses include a default case, then the default matches any skipped text.

For example, the following program collects all occurrences of alphanumeric words in an input file, skipping any other text.

    collect-words($(files)) =
       words[] =
       lex-search($(files))
       default
          eprintln(Skipped $0)
       case $"[[:alnum:]]+" g
          words[] += $0
          export

The default case, if one exists, matches single characters. Since

It is an error if the input does not match any of the regular expressions.

The break function can be used to abort the loop.

10.11.9  Lexer

The Lexer object defines a facility for lexical analysis, similar to the lex(1) and flex(1) programs.

In omake, lexical analyzers can be constructed dynamically by extending the Lexer class. A lexer definition consists of a set of directives specified with method calls, and set of clauses specified as rules.

For example, consider the following lexer definition, which is intended for lexical analysis of simple arithmetic expressions for a desktop calculator.

   lexer1. =
      extends $(Lexer)

      other: .
         eprintln(Illegal character: $* )
         lex()

      white: $"[[:space:]]+"
         lex()

      op: $"[-+*/()]"
         switch $*
         case +
            Token.unit($(loc), plus)
         case -
            Token.unit($(loc), minus)
         case *
            Token.unit($(loc), mul)
         case /
            Token.unit($(loc), div)
         case $"("
            Token.unit($(loc), lparen)
         case $")"
            Token.unit($(loc), rparen)

      number: $"[[:digit:]]+"
         Token.pair($(loc), exp, $(int $* ))

      eof: $"\'"
         Token.unit($(loc), eof)

This program defines an object lexer1 the extends the Lexer object, which defines lexing environment.

The remainder of the definition consists of a set of clauses, each with a method name before the colon; a regular expression after the colon; and in this case, a body. The body is optional, if it is not specified, the method with the given name should already exist in the lexer definition.

NB The clause that matches the longest prefix of the input is selected. If two clauses match the same input prefix, then the last one is selected. This is unlike most standard lexers, but makes more sense for extensible grammars.

The first clause matches any input that is not matched by the other clauses. In this case, an error message is printed for any unknown character, and the input is skipped. Note that this clause is selected only if no other clause matches.

The second clause is responsible for ignoring white space. If whitespace is found, it is ignored, and the lexer is called recursively.

The third clause is responsible for the arithmetic operators. It makes use of the Token object, which defines three fields: a loc field that represents the source location; a name; and a value.

The lexer defines the loc variable to be the location of the current lexeme in each of the method bodies, so we can use that value to create the tokens.

The Token.unit($(loc), name) method constructs a new Token object with the given name, and a default value.

The number clause matches nonnegative integer constants. The Token.pair($(loc), name, value) constructs a token with the given name and value.

Lexer object operate on InChannel objects. The method lexer1.lex-channel(channel) reads the next token from the channel argument.

10.11.10  Lexer matching

During lexical analysis, clauses are selected by longest match. That is, the clause that matches the longest sequence of input characters is chosen for evaluation. If no clause matches, the lexer raises a RuntimeException. If more than one clause matches the same amount of input, the first one is chosen for evaluation.

10.11.11  Extending lexer definitions

Suppose we wish to augment the lexer example so that it ignores comments. We will define comments as any text that begins with the string (*, ends with *), and comments may be nested.

One convenient way to do this is to define a separate lexer just to skip comments.

   lex-comment. =
      extends $(Lexer)

      level = 0

      other: .
         lex()

      term: $"[*][)]"
         if $(not $(eq $(level), 0))
            level = $(sub $(level), 1)
            lex()

      next: $"[(][*]"
         level = $(add $(level), 1)
         lex()

      eof: $"\'"
         eprintln(Unterminated comment)

This lexer contains a field level that keeps track of the nesting level. On encountering a (* string, it increments the level, and for *), it decrements the level if nonzero, and continues.

Next, we need to modify our previous lexer to skip comments. We can do this by extending the lexer object lexer1 that we just created.

   lexer1. +=
      comment: $"[(][*]"
         lex-comment.lex-channel($(channel))
         lex()

The body for the comment clause calls the lex-comment lexer when a comment is encountered, and continues lexing when that lexer returns.

10.11.12  Threading the lexer object

Clause bodies may also end with an export directive. In this case the lexer object itself is used as the returned token. If used with the Parser object below, the lexer should define the loc, name and value fields in each export clause. Each time the Parser calls the lexer, it calls it with the lexer returned from the previous lex invocation.

10.11.13  Parser

The Parser object provides a facility for syntactic analysis based on context-free grammars.

Parser objects are specified as a sequence of directives, specified with method calls; and productions, specified as rules.

For example, let's finish building the desktop calculator started in the Lexer example.

   parser1. =
      extends $(Parser)

      #
      # Use the main lexer
      #
      lexer = $(lexer1)

      #
      # Precedences, in ascending order
      #
      left(plus minus)
      left(mul div)
      right(uminus)

      #
      # A program
      #
      start(prog)

      prog: exp eof
         return $1

      #
      # Simple arithmetic expressions
      #
      exp: minus exp :prec: uminus
         neg($2)

      exp: exp plus exp
         add($1, $3)

      exp: exp minus exp
         sub($1, $3)

      exp: exp mul exp
         mul($1, $3)

      exp: exp div exp
         div($1, $3)

      exp: lparen exp rparen
         return $2

Parsers are defined as extensions of the Parser class. A Parser object must have a lexer field. The lexer is not required to be a Lexer object, but it must provide a lexer.lex() method that returns a token object with name and value fields. For this example, we use the lexer1 object that we defined previously.

The next step is to define precedences for the terminal symbols. The precedences are defined with the left, right, and nonassoc methods in order of increasing precedence.

The grammar must have at least one start symbol, declared with the start method.

Next, the productions in the grammar are listed as rules. The name of the production is listed before the colon, and a sequence of variables is listed to the right of the colon. The body is a semantic action to be evaluated when the production is recognized as part of the input.

In this example, these are the productions for the arithmetic expressions recognized by the desktop calculator. The semantic action performs the calculation. The variables $1, $2, ... correspond to the values associated with each of the variables on the right-hand-side of the production.

10.11.14  Calling the parser

The parser is called with the $(parser1.parse-channel start, channel) or $(parser1.parse-file start, file) functions. The start argument is the start symbol, and the channel or file is the input to the parser.

10.11.15  Parsing control

The parser generator generates a pushdown automation based on LALR(1) tables. As usual, if the grammar is ambiguous, this may generate shift/reduce or reduce/reduce conflicts. These conflicts are printed to standard output when the automaton is generated.

By default, the automaton is not constructed until the parser is first used.

The build(debug) method forces the construction of the automaton. While not required, it is wise to finish each complete parser with a call to the build(debug) method. If the debug variable is set, this also prints with parser table together with any conflicts.

The loc variable is defined within action bodies, and represents the input range for all tokens on the right-hand-side of the production.

10.11.16  Extending parsers

Parsers may also be extended by inheritance. For example, let's extend the grammar so that it also recognizes the << and >> shift operations.

First, we extend the lexer so that it recognizes these tokens. This time, we choose to leave lexer1 intact, instead of using the += operator.

   lexer2. =
      extends $(lexer1)

      lsl: $"<<"
         Token.unit($(loc), lsl)

      asr: $">>"
         Token.unit($(loc), asr)

Next, we extend the parser to handle these new operators. We intend that the bitwise operators have lower precedence than the other arithmetic operators. The two-argument form of the left method accomplishes this.

   parser2. =
      extends $(parser1)

      left(plus, lsl lsr asr)

      lexer = $(lexer2)

      exp: exp lsl exp
         lsl($1, $3)

      exp: exp asr exp
         asr($1, $3)

In this case, we use the new lexer lexer2, and we add productions for the new shift operations.

10.11.17  Passwd

The Passwd object represents an entry in the system's user database. It contains the following fields.

pw_name: the login name.
pw_passwd: the encrypted password.
pw_uid: user id of the user.
pw_gid: group id of the user.
pw_gecos: the user name or comment field.
pw_dir: the user's home directory.
pw_shell: the user's default shell.

Not all the fields will have meaning on all operating systems.

10.11.18  getpwnam, getpwuid

    $(getpwnam name...) : Passwd
       name : String
    $(getpwuid uid...) : Passwd
       uid : Int
    raises RuntimeException

The getpwnam function looks up an entry by the user's login and the getpwuid function looks up an entry by user's numerical id (uid). If no entry is found, an exception will be raised.

10.11.19  getpwents

    $(getpwents) : Array

The getpwents function returns an array of Passwd objects, one for every user fund in the system user database. Note that depending on the operating system and on the setup of the user database, the returned array may be incomplete or even empty.

10.11.20  Group

The Group object represents an entry in the system's user group database. It contains the following fields.

gr_name: the group name.
gr_group: the encrypted password.
gr_gid: group id of the group.
gr_mem: the group member's user names.

Not all the fields will have meaning on all operating systems.

10.11.21  getgrnam, getgrgid

    $(getgrnam name...) : Group
       name : String
    $(getgrgid gid...) : Group
       gid : Int
    raises RuntimeException

The getgrnam function looks up a group entry by the group's name and the getgrgid function looks up an entry by groups's numerical id (gid). If no entry is found, an exception will be raised.

10.11.22  tgetstr

   $(tgetstr id) : String
      id : String

The tgetstr function looks up the terminal capability with the indicated id. This assumes the terminfo to lookup is given in the TERM environment variable. This function returns an empty value if the given terminal capability is not defined.

Note: if you intend to use the value returned by tgetstr inside the shell prompt, you need to wrap it using the prompt-invisible function.

10.11.23  xterm-escape-begin, xterm-escape-end

   $(xterm-escape-begin) : String
   $(xterm-escape-end) : String

The xterm-escape-begin and xterm-escape-end functions return the escape sequences that can be used to set the XTerm window title. Will return empty values if this capability is not available.

Note: if you intend to use these strings inside the shell prompt, you need to use $(prompt_invisible_begin)$(xterm-escape-begin) and $(xterm-escape-end)$(prompt_invisible_end).

10.11.24  xterm-escape

   $(xterm-escape s) : Sequence

When the TERM environment variable indicates that the XTerm title setting capability is available, $(xterm-escape s) is equivalent to $(xterm-escape-begin)s$(xterm-escape-end). Otherwise, it returns an empty value.

Note: if you intend to use the value returned by xterm-escape inside the shell prompt, you need to wrap it using the prompt-invisible function.

10.11.25  prompt-invisible-begin, prompt-invisible-end

   $(prompt-invisible-begin) : String
   $(prompt-invisible-end) : String

The prompt-invisible-begin and prompt-invisible-end functions return the escape sequences that must used to mark the “invisible” sections of the shell prompt (such as various escape sequences).

10.11.26  prompt-invisible

   $(prompt-invisible s) : Sequence

The prompt-invisible will wrap its argument with $(prompt-invisible-begin) and $(prompt-invisible-end). All the `invisible” sections of the shell prompt (such as various escape sequences) must be wrapped this way.

10.11.27  gettimeofday

   $(gettimeofday) : Float

The gettimeofday function returns the time of day in seconds since January 1, 1970.

Jump to:  OMake Home • Guide Home • Guide (single-page) • Contents (short) • Contents (long)
Index:  All • Variables • Functions • Objects • Targets • Options
omake-0.9.8.5/doc/ps/0000775000152300015230000000000010660137244012325 5ustar jyhjyhomake-0.9.8.5/doc/ps/omake-doc.pdf0000664000152300015230000440561710656155147014707 0ustar jyhjyh%PDF-1.2 7 0 obj [5 0 R/XYZ 106.87 686.13] endobj 12 0 obj << /Title(Guide) /A<< /S/GoTo /D(chapter.1) >> /Parent 11 0 R /Next 13 0 R >> endobj 15 0 obj << /Title(Automatic dependency analysis) /A<< /S/GoTo /D(subsection.2.1.1) >> /Parent 14 0 R /Next 16 0 R >> endobj 16 0 obj << /Title(Content-based dependency analysis) /A<< /S/GoTo /D(subsection.2.1.2) >> /Parent 14 0 R /Prev 15 0 R >> endobj 14 0 obj << /Title(Description) /A<< /S/GoTo /D(section.2.1) >> /Parent 13 0 R /First 15 0 R /Last 16 0 R /Count -2 /Next 17 0 R >> endobj 17 0 obj << /Title(For users already familiar with make) /A<< /S/GoTo /D(section.2.2) >> /Parent 13 0 R /Prev 14 0 R /Next 18 0 R >> endobj 18 0 obj << /Title(Building a small C program) /A<< /S/GoTo /D(section.2.3) >> /Parent 13 0 R /Prev 17 0 R /Next 19 0 R >> endobj 19 0 obj << /Title(Larger projects) /A<< /S/GoTo /D(section.2.4) >> /Parent 13 0 R /Prev 18 0 R /Next 20 0 R >> endobj 20 0 obj << /Title(Subdirectories) /A<< /S/GoTo /D(section.2.5) >> /Parent 13 0 R /Prev 19 0 R /Next 21 0 R >> endobj 21 0 obj << /Title(Other things to consider) /A<< /S/GoTo /D(section.2.6) >> /Parent 13 0 R /Prev 20 0 R /Next 22 0 R >> endobj 22 0 obj << /Title(Building OCaml programs) /A<< /S/GoTo /D(section.2.7) >> /Parent 13 0 R /Prev 21 0 R /Next 23 0 R >> endobj 23 0 obj << /Title(The OMakefile and OMakeroot files) /A<< /S/GoTo /D(section.2.8) >> /Parent 13 0 R /Prev 22 0 R /Next 24 0 R >> endobj 24 0 obj << /Title(Multiple version support) /A<< /S/GoTo /D(section.2.9) >> /Parent 13 0 R /Prev 23 0 R /Next 25 0 R >> endobj 25 0 obj << /Title(Notes) /A<< /S/GoTo /D(section.2.10) >> /Parent 13 0 R /Prev 24 0 R >> endobj 13 0 obj << /Title(OMake quickstart guide) /A<< /S/GoTo /D(chapter.2) >> /Parent 11 0 R /Prev 12 0 R /First 14 0 R /Last 25 0 R /Count -10 /Next 26 0 R >> endobj 27 0 obj << /Title(OMakeroot vs. OMakefile) /A<< /S/GoTo /D(section.3.1) >> /Parent 26 0 R /Next 28 0 R >> endobj 28 0 obj << /Title(An example C project) /A<< /S/GoTo /D(section.3.2) >> /Parent 26 0 R /Prev 27 0 R /Next 29 0 R >> endobj 29 0 obj << /Title(An example OCaml project) /A<< /S/GoTo /D(section.3.3) >> /Parent 26 0 R /Prev 28 0 R /Next 30 0 R >> endobj 31 0 obj << /Title(Defining a default compilation rule) /A<< /S/GoTo /D(subsection.3.4.1) >> /Parent 30 0 R /Next 32 0 R >> endobj 32 0 obj << /Title(Defining a rule for linking) /A<< /S/GoTo /D(subsection.3.4.2) >> /Parent 30 0 R /Prev 31 0 R /Next 33 0 R >> endobj 33 0 obj << /Title(Dependency scanning) /A<< /S/GoTo /D(subsection.3.4.3) >> /Parent 30 0 R /Prev 32 0 R /Next 34 0 R >> endobj 34 0 obj << /Title(Pulling it all together) /A<< /S/GoTo /D(subsection.3.4.4) >> /Parent 30 0 R /Prev 33 0 R /Next 35 0 R >> endobj 35 0 obj << /Title(Finishing up) /A<< /S/GoTo /D(subsection.3.4.5) >> /Parent 30 0 R /Prev 34 0 R >> endobj 30 0 obj << /Title(Handling new languages) /A<< /S/GoTo /D(section.3.4) >> /Parent 26 0 R /Prev 29 0 R /First 31 0 R /Last 35 0 R /Count -5 /Next 36 0 R >> endobj 37 0 obj << /Title(Using glob patterns) /A<< /S/GoTo /D(subsection.3.5.1) >> /Parent 36 0 R /Next 38 0 R >> endobj 38 0 obj << /Title(Simplified sub-configurations) /A<< /S/GoTo /D(subsection.3.5.2) >> /Parent 36 0 R /Prev 37 0 R /Next 39 0 R >> endobj 39 0 obj << /Title(Computing the subdirectory list) /A<< /S/GoTo /D(subsection.3.5.3) >> /Parent 36 0 R /Prev 38 0 R /Next 40 0 R >> endobj 36 0 obj << /Title(Collapsing the hierarchy, .SUBDIRS bodies) /A<< /S/GoTo /D(section.3.5) >> /Parent 26 0 R /Prev 30 0 R /First 37 0 R /Last 40 0 R /Count -4 >> endobj 40 0 obj << /Title(Temporary directories) /A<< /S/GoTo /D(subsection.3.5.4) >> /Parent 36 0 R /Prev 39 0 R >> endobj 26 0 obj << /Title(Additional build examples) /A<< /S/GoTo /D(chapter.3) >> /Parent 11 0 R /Prev 13 0 R /First 27 0 R /Last 36 0 R /Count -5 /Next 41 0 R >> endobj 42 0 obj << /Title(Variables) /A<< /S/GoTo /D(section.4.1) >> /Parent 41 0 R /Next 43 0 R >> endobj 43 0 obj << /Title(Adding to a variable definition) /A<< /S/GoTo /D(section.4.2) >> /Parent 41 0 R /Prev 42 0 R /Next 44 0 R >> endobj 44 0 obj << /Title(Arrays) /A<< /S/GoTo /D(section.4.3) >> /Parent 41 0 R /Prev 43 0 R /Next 45 0 R >> endobj 45 0 obj << /Title(Special characters and quoting) /A<< /S/GoTo /D(section.4.4) >> /Parent 41 0 R /Prev 44 0 R /Next 46 0 R >> endobj 46 0 obj << /Title(Function definitions) /A<< /S/GoTo /D(section.4.5) >> /Parent 41 0 R /Prev 45 0 R /Next 47 0 R >> endobj 47 0 obj << /Title(Comments) /A<< /S/GoTo /D(section.4.6) >> /Parent 41 0 R /Prev 46 0 R /Next 48 0 R >> endobj 48 0 obj << /Title(File inclusion) /A<< /S/GoTo /D(section.4.7) >> /Parent 41 0 R /Prev 47 0 R /Next 49 0 R >> endobj 49 0 obj << /Title(Scoping, sections) /A<< /S/GoTo /D(section.4.8) >> /Parent 41 0 R /Prev 48 0 R /Next 50 0 R >> endobj 50 0 obj << /Title(Conditionals) /A<< /S/GoTo /D(section.4.9) >> /Parent 41 0 R /Prev 49 0 R /Next 51 0 R >> endobj 51 0 obj << /Title(Matching) /A<< /S/GoTo /D(section.4.10) >> /Parent 41 0 R /Prev 50 0 R /Next 52 0 R >> endobj 52 0 obj << /Title(Objects) /A<< /S/GoTo /D(section.4.11) >> /Parent 41 0 R /Prev 51 0 R /Next 53 0 R >> endobj 53 0 obj << /Title(Classes) /A<< /S/GoTo /D(section.4.12) >> /Parent 41 0 R /Prev 52 0 R /Next 54 0 R >> endobj 54 0 obj << /Title(Inheritance) /A<< /S/GoTo /D(section.4.13) >> /Parent 41 0 R /Prev 53 0 R /Next 55 0 R >> endobj 57 0 obj << /Title(.MEMO) /A<< /S/GoTo /D(subsubsection.4.14.1.1) >> /Parent 56 0 R /Next 58 0 R >> endobj 56 0 obj << /Title(.STATIC) /A<< /S/GoTo /D(subsection.4.14.1) >> /Parent 55 0 R /First 57 0 R /Last 58 0 R /Count -2 >> endobj 58 0 obj << /Title(:key:) /A<< /S/GoTo /D(subsubsection.4.14.1.2) >> /Parent 56 0 R /Prev 57 0 R >> endobj 55 0 obj << /Title(static.) /A<< /S/GoTo /D(section.4.14) >> /Parent 41 0 R /Prev 54 0 R /First 56 0 R /Last 56 0 R /Count -1 /Next 59 0 R >> endobj 59 0 obj << /Title(Constants) /A<< /S/GoTo /D(section.4.15) >> /Parent 41 0 R /Prev 55 0 R >> endobj 41 0 obj << /Title(OMake concepts and syntax) /A<< /S/GoTo /D(chapter.4) >> /Parent 11 0 R /Prev 26 0 R /First 42 0 R /Last 59 0 R /Count -15 /Next 60 0 R >> endobj 61 0 obj << /Title(private.) /A<< /S/GoTo /D(section.5.1) >> /Parent 60 0 R /Next 62 0 R >> endobj 62 0 obj << /Title(this.) /A<< /S/GoTo /D(section.5.2) >> /Parent 60 0 R /Prev 61 0 R /Next 63 0 R >> endobj 63 0 obj << /Title(global.) /A<< /S/GoTo /D(section.5.3) >> /Parent 60 0 R /Prev 62 0 R /Next 64 0 R >> endobj 64 0 obj << /Title(protected.) /A<< /S/GoTo /D(section.5.4) >> /Parent 60 0 R /Prev 63 0 R /Next 65 0 R >> endobj 65 0 obj << /Title(public.) /A<< /S/GoTo /D(section.5.5) >> /Parent 60 0 R /Prev 64 0 R /Next 66 0 R >> endobj 66 0 obj << /Title(Qualified blocks) /A<< /S/GoTo /D(section.5.6) >> /Parent 60 0 R /Prev 65 0 R /Next 67 0 R >> endobj 67 0 obj << /Title(declare) /A<< /S/GoTo /D(section.5.7) >> /Parent 60 0 R /Prev 66 0 R >> endobj 60 0 obj << /Title(Variables and Naming) /A<< /S/GoTo /D(chapter.5) >> /Parent 11 0 R /Prev 41 0 R /First 61 0 R /Last 67 0 R /Count -7 /Next 68 0 R >> endobj 69 0 obj << /Title(Dynamic scoping) /A<< /S/GoTo /D(section.6.1) >> /Parent 68 0 R /Next 70 0 R >> endobj 70 0 obj << /Title(Functional evaluation) /A<< /S/GoTo /D(section.6.2) >> /Parent 68 0 R /Prev 69 0 R /Next 71 0 R >> endobj 72 0 obj << /Title(Export regions) /A<< /S/GoTo /D(subsection.6.3.1) >> /Parent 71 0 R /Next 73 0 R >> endobj 73 0 obj << /Title(Returning values from exported regions) /A<< /S/GoTo /D(subsection.6.3.2) >> /Parent 71 0 R /Prev 72 0 R >> endobj 71 0 obj << /Title(Exporting the environment) /A<< /S/GoTo /D(section.6.3) >> /Parent 68 0 R /Prev 70 0 R /First 72 0 R /Last 73 0 R /Count -2 /Next 74 0 R >> endobj 74 0 obj << /Title(Objects) /A<< /S/GoTo /D(section.6.4) >> /Parent 68 0 R /Prev 71 0 R /Next 75 0 R >> endobj 75 0 obj << /Title(Field and method calls) /A<< /S/GoTo /D(section.6.5) >> /Parent 68 0 R /Prev 74 0 R /Next 76 0 R >> endobj 76 0 obj << /Title(Method override) /A<< /S/GoTo /D(section.6.6) >> /Parent 68 0 R /Prev 75 0 R /Next 77 0 R >> endobj 77 0 obj << /Title(Super calls) /A<< /S/GoTo /D(section.6.7) >> /Parent 68 0 R /Prev 76 0 R >> endobj 68 0 obj << /Title(Expressions and values) /A<< /S/GoTo /D(chapter.6) >> /Parent 11 0 R /Prev 60 0 R /First 69 0 R /Last 77 0 R /Count -7 /Next 78 0 R >> endobj 79 0 obj << /Title(Strings and arrays) /A<< /S/GoTo /D(section.7.1) >> /Parent 78 0 R /Next 80 0 R >> endobj 80 0 obj << /Title(Quoted strings) /A<< /S/GoTo /D(section.7.2) >> /Parent 78 0 R /Prev 79 0 R /Next 81 0 R >> endobj 81 0 obj << /Title(Files and directories) /A<< /S/GoTo /D(section.7.3) >> /Parent 78 0 R /Prev 80 0 R /Next 82 0 R >> endobj 82 0 obj << /Title(Iteration, mapping, and foreach) /A<< /S/GoTo /D(section.7.4) >> /Parent 78 0 R /Prev 81 0 R /Next 83 0 R >> endobj 84 0 obj << /Title(A larger example of lazy expressions) /A<< /S/GoTo /D(subsection.7.5.1) >> /Parent 83 0 R >> endobj 83 0 obj << /Title(Lazy expressions) /A<< /S/GoTo /D(section.7.5) >> /Parent 78 0 R /Prev 82 0 R /First 84 0 R /Last 84 0 R /Count -1 /Next 85 0 R >> endobj 85 0 obj << /Title(Scoping and exports) /A<< /S/GoTo /D(section.7.6) >> /Parent 78 0 R /Prev 83 0 R /Next 86 0 R >> endobj 86 0 obj << /Title(Shell aliases) /A<< /S/GoTo /D(section.7.7) >> /Parent 78 0 R /Prev 85 0 R /Next 87 0 R >> endobj 87 0 obj << /Title(Input/output redirection on the cheap) /A<< /S/GoTo /D(section.7.8) >> /Parent 78 0 R /Prev 86 0 R >> endobj 78 0 obj << /Title(Additional language examples) /A<< /S/GoTo /D(chapter.7) >> /Parent 11 0 R /Prev 68 0 R /First 79 0 R /Last 87 0 R /Count -8 /Next 88 0 R >> endobj 89 0 obj << /Title(Implicit rules) /A<< /S/GoTo /D(section.8.1) >> /Parent 88 0 R /Next 90 0 R >> endobj 90 0 obj << /Title(Bounded implicit rules) /A<< /S/GoTo /D(section.8.2) >> /Parent 88 0 R /Prev 89 0 R /Next 91 0 R >> endobj 91 0 obj << /Title(section) /A<< /S/GoTo /D(section.8.3) >> /Parent 88 0 R /Prev 90 0 R /Next 92 0 R >> endobj 92 0 obj << /Title(section rule) /A<< /S/GoTo /D(section.8.4) >> /Parent 88 0 R /Prev 91 0 R /Next 93 0 R >> endobj 94 0 obj << /Title(:exists:) /A<< /S/GoTo /D(subsection.8.5.1) >> /Parent 93 0 R /Next 95 0 R >> endobj 95 0 obj << /Title(:effects:) /A<< /S/GoTo /D(subsection.8.5.2) >> /Parent 93 0 R /Prev 94 0 R /Next 96 0 R >> endobj 96 0 obj << /Title(:value:) /A<< /S/GoTo /D(subsection.8.5.3) >> /Parent 93 0 R /Prev 95 0 R >> endobj 93 0 obj << /Title(Special dependencies) /A<< /S/GoTo /D(section.8.5) >> /Parent 88 0 R /Prev 92 0 R /First 94 0 R /Last 96 0 R /Count -3 /Next 97 0 R >> endobj 98 0 obj << /Title(Named scanners, and the :scanner: dependencies) /A<< /S/GoTo /D(subsection.8.6.1) >> /Parent 97 0 R /Next 99 0 R >> endobj 99 0 obj << /Title(Notes) /A<< /S/GoTo /D(subsection.8.6.2) >> /Parent 97 0 R /Prev 98 0 R >> endobj 97 0 obj << /Title(.SCANNER rules) /A<< /S/GoTo /D(section.8.6) >> /Parent 88 0 R /Prev 93 0 R /First 98 0 R /Last 99 0 R /Count -2 /Next 100 0 R >> endobj 100 0 obj << /Title(.DEFAULT) /A<< /S/GoTo /D(section.8.7) >> /Parent 88 0 R /Prev 97 0 R /Next 101 0 R >> endobj 101 0 obj << /Title(.SUBDIRS) /A<< /S/GoTo /D(section.8.8) >> /Parent 88 0 R /Prev 100 0 R /Next 102 0 R >> endobj 102 0 obj << /Title(.INCLUDE) /A<< /S/GoTo /D(section.8.9) >> /Parent 88 0 R /Prev 101 0 R /Next 103 0 R >> endobj 103 0 obj << /Title(.PHONY) /A<< /S/GoTo /D(section.8.10) >> /Parent 88 0 R /Prev 102 0 R /Next 104 0 R >> endobj 105 0 obj << /Title(Scoping of implicit rules) /A<< /S/GoTo /D(subsection.8.11.1) >> /Parent 104 0 R /Next 106 0 R >> endobj 106 0 obj << /Title(Scoping of .SCANNER rules) /A<< /S/GoTo /D(subsection.8.11.2) >> /Parent 104 0 R /Prev 105 0 R /Next 107 0 R >> endobj 107 0 obj << /Title(Scoping for .PHONY targets) /A<< /S/GoTo /D(subsection.8.11.3) >> /Parent 104 0 R /Prev 106 0 R >> endobj 104 0 obj << /Title(Rule scoping) /A<< /S/GoTo /D(section.8.11) >> /Parent 88 0 R /Prev 103 0 R /First 105 0 R /Last 107 0 R /Count -3 /Next 108 0 R >> endobj 109 0 obj << /Title(Phony targets in a subdirectory) /A<< /S/GoTo /D(subsection.8.12.1) >> /Parent 108 0 R /Next 110 0 R >> endobj 110 0 obj << /Title(Hierarchy of .PHONY targets) /A<< /S/GoTo /D(subsection.8.12.2) >> /Parent 108 0 R /Prev 109 0 R >> endobj 108 0 obj << /Title(Running OMake from a subdirectory) /A<< /S/GoTo /D(section.8.12) >> /Parent 88 0 R /Prev 104 0 R /First 109 0 R /Last 110 0 R /Count -2 /Next 111 0 R >> endobj 111 0 obj << /Title(Pathnames in rules) /A<< /S/GoTo /D(section.8.13) >> /Parent 88 0 R /Prev 108 0 R >> endobj 88 0 obj << /Title(Rules) /A<< /S/GoTo /D(chapter.8) >> /Parent 11 0 R /Prev 78 0 R /First 89 0 R /Last 111 0 R /Count -13 /Next 112 0 R >> endobj 113 0 obj << /Title(Builtin variables) /A<< /S/GoTo /D(section.9.1) >> /Parent 112 0 R /Next 114 0 R >> endobj 115 0 obj << /Title(not) /A<< /S/GoTo /D(subsection.9.2.1) >> /Parent 114 0 R /Next 116 0 R >> endobj 116 0 obj << /Title(equal) /A<< /S/GoTo /D(subsection.9.2.2) >> /Parent 114 0 R /Prev 115 0 R /Next 117 0 R >> endobj 117 0 obj << /Title(and) /A<< /S/GoTo /D(subsection.9.2.3) >> /Parent 114 0 R /Prev 116 0 R /Next 118 0 R >> endobj 118 0 obj << /Title(or) /A<< /S/GoTo /D(subsection.9.2.4) >> /Parent 114 0 R /Prev 117 0 R /Next 119 0 R >> endobj 119 0 obj << /Title(if) /A<< /S/GoTo /D(subsection.9.2.5) >> /Parent 114 0 R /Prev 118 0 R /Next 120 0 R >> endobj 120 0 obj << /Title(switch, match) /A<< /S/GoTo /D(subsection.9.2.6) >> /Parent 114 0 R /Prev 119 0 R /Next 121 0 R >> endobj 121 0 obj << /Title(try) /A<< /S/GoTo /D(subsection.9.2.7) >> /Parent 114 0 R /Prev 120 0 R /Next 122 0 R >> endobj 122 0 obj << /Title(raise) /A<< /S/GoTo /D(subsection.9.2.8) >> /Parent 114 0 R /Prev 121 0 R /Next 123 0 R >> endobj 123 0 obj << /Title(exit) /A<< /S/GoTo /D(subsection.9.2.9) >> /Parent 114 0 R /Prev 122 0 R /Next 124 0 R >> endobj 124 0 obj << /Title(defined) /A<< /S/GoTo /D(subsection.9.2.10) >> /Parent 114 0 R /Prev 123 0 R /Next 125 0 R >> endobj 125 0 obj << /Title(defined-env) /A<< /S/GoTo /D(subsection.9.2.11) >> /Parent 114 0 R /Prev 124 0 R /Next 126 0 R >> endobj 126 0 obj << /Title(getenv) /A<< /S/GoTo /D(subsection.9.2.12) >> /Parent 114 0 R /Prev 125 0 R /Next 127 0 R >> endobj 127 0 obj << /Title(setenv) /A<< /S/GoTo /D(subsection.9.2.13) >> /Parent 114 0 R /Prev 126 0 R /Next 128 0 R >> endobj 128 0 obj << /Title(unsetenv) /A<< /S/GoTo /D(subsection.9.2.14) >> /Parent 114 0 R /Prev 127 0 R /Next 129 0 R >> endobj 129 0 obj << /Title(get-registry) /A<< /S/GoTo /D(subsection.9.2.15) >> /Parent 114 0 R /Prev 128 0 R /Next 130 0 R >> endobj 130 0 obj << /Title(getvar) /A<< /S/GoTo /D(subsection.9.2.16) >> /Parent 114 0 R /Prev 129 0 R /Next 131 0 R >> endobj 131 0 obj << /Title(setvar) /A<< /S/GoTo /D(subsection.9.2.17) >> /Parent 114 0 R /Prev 130 0 R >> endobj 114 0 obj << /Title(Logic, Boolean functions, and control flow) /A<< /S/GoTo /D(section.9.2) >> /Parent 112 0 R /Prev 113 0 R /First 115 0 R /Last 131 0 R /Count -17 /Next 132 0 R >> endobj 133 0 obj << /Title(array) /A<< /S/GoTo /D(subsection.9.3.1) >> /Parent 132 0 R /Next 134 0 R >> endobj 134 0 obj << /Title(split) /A<< /S/GoTo /D(subsection.9.3.2) >> /Parent 132 0 R /Prev 133 0 R /Next 135 0 R >> endobj 135 0 obj << /Title(concat) /A<< /S/GoTo /D(subsection.9.3.3) >> /Parent 132 0 R /Prev 134 0 R /Next 136 0 R >> endobj 136 0 obj << /Title(length) /A<< /S/GoTo /D(subsection.9.3.4) >> /Parent 132 0 R /Prev 135 0 R /Next 137 0 R >> endobj 137 0 obj << /Title(nth) /A<< /S/GoTo /D(subsection.9.3.5) >> /Parent 132 0 R /Prev 136 0 R /Next 138 0 R >> endobj 138 0 obj << /Title(replace-nth) /A<< /S/GoTo /D(subsection.9.3.6) >> /Parent 132 0 R /Prev 137 0 R /Next 139 0 R >> endobj 139 0 obj << /Title(nth-hd) /A<< /S/GoTo /D(subsection.9.3.7) >> /Parent 132 0 R /Prev 138 0 R /Next 140 0 R >> endobj 140 0 obj << /Title(nth-tl) /A<< /S/GoTo /D(subsection.9.3.8) >> /Parent 132 0 R /Prev 139 0 R /Next 141 0 R >> endobj 141 0 obj << /Title(subrange) /A<< /S/GoTo /D(subsection.9.3.9) >> /Parent 132 0 R /Prev 140 0 R /Next 142 0 R >> endobj 142 0 obj << /Title(rev) /A<< /S/GoTo /D(subsection.9.3.10) >> /Parent 132 0 R /Prev 141 0 R /Next 143 0 R >> endobj 143 0 obj << /Title(join) /A<< /S/GoTo /D(subsection.9.3.11) >> /Parent 132 0 R /Prev 142 0 R /Next 144 0 R >> endobj 144 0 obj << /Title(string) /A<< /S/GoTo /D(subsection.9.3.12) >> /Parent 132 0 R /Prev 143 0 R /Next 145 0 R >> endobj 145 0 obj << /Title(string-length) /A<< /S/GoTo /D(subsection.9.3.13) >> /Parent 132 0 R /Prev 144 0 R /Next 146 0 R >> endobj 146 0 obj << /Title(string-escaped, ocaml-escaped, html-escaped, html-pre-escaped, c-escaped, id-escaped) /A<< /S/GoTo /D(subsection.9.3.14) >> /Parent 132 0 R /Prev 145 0 R /Next 147 0 R >> endobj 147 0 obj << /Title(decode-uri, encode-uri) /A<< /S/GoTo /D(subsection.9.3.15) >> /Parent 132 0 R /Prev 146 0 R /Next 148 0 R >> endobj 148 0 obj << /Title(quote) /A<< /S/GoTo /D(subsection.9.3.16) >> /Parent 132 0 R /Prev 147 0 R /Next 149 0 R >> endobj 149 0 obj << /Title(quote-argv) /A<< /S/GoTo /D(subsection.9.3.17) >> /Parent 132 0 R /Prev 148 0 R /Next 150 0 R >> endobj 150 0 obj << /Title(html-string) /A<< /S/GoTo /D(subsection.9.3.18) >> /Parent 132 0 R /Prev 149 0 R /Next 151 0 R >> endobj 151 0 obj << /Title(addsuffix) /A<< /S/GoTo /D(subsection.9.3.19) >> /Parent 132 0 R /Prev 150 0 R /Next 152 0 R >> endobj 152 0 obj << /Title(mapsuffix) /A<< /S/GoTo /D(subsection.9.3.20) >> /Parent 132 0 R /Prev 151 0 R /Next 153 0 R >> endobj 153 0 obj << /Title(addsuffixes) /A<< /S/GoTo /D(subsection.9.3.21) >> /Parent 132 0 R /Prev 152 0 R /Next 154 0 R >> endobj 154 0 obj << /Title(removeprefix) /A<< /S/GoTo /D(subsection.9.3.22) >> /Parent 132 0 R /Prev 153 0 R /Next 155 0 R >> endobj 155 0 obj << /Title(removesuffix) /A<< /S/GoTo /D(subsection.9.3.23) >> /Parent 132 0 R /Prev 154 0 R /Next 156 0 R >> endobj 156 0 obj << /Title(replacesuffixes) /A<< /S/GoTo /D(subsection.9.3.24) >> /Parent 132 0 R /Prev 155 0 R /Next 157 0 R >> endobj 157 0 obj << /Title(addprefix) /A<< /S/GoTo /D(subsection.9.3.25) >> /Parent 132 0 R /Prev 156 0 R /Next 158 0 R >> endobj 158 0 obj << /Title(mapprefix) /A<< /S/GoTo /D(subsection.9.3.26) >> /Parent 132 0 R /Prev 157 0 R /Next 159 0 R >> endobj 159 0 obj << /Title(add-wrapper) /A<< /S/GoTo /D(subsection.9.3.27) >> /Parent 132 0 R /Prev 158 0 R /Next 160 0 R >> endobj 160 0 obj << /Title(set) /A<< /S/GoTo /D(subsection.9.3.28) >> /Parent 132 0 R /Prev 159 0 R /Next 161 0 R >> endobj 161 0 obj << /Title(mem) /A<< /S/GoTo /D(subsection.9.3.29) >> /Parent 132 0 R /Prev 160 0 R /Next 162 0 R >> endobj 162 0 obj << /Title(intersection) /A<< /S/GoTo /D(subsection.9.3.30) >> /Parent 132 0 R /Prev 161 0 R /Next 163 0 R >> endobj 163 0 obj << /Title(intersects) /A<< /S/GoTo /D(subsection.9.3.31) >> /Parent 132 0 R /Prev 162 0 R /Next 164 0 R >> endobj 164 0 obj << /Title(set-diff) /A<< /S/GoTo /D(subsection.9.3.32) >> /Parent 132 0 R /Prev 163 0 R /Next 165 0 R >> endobj 165 0 obj << /Title(filter) /A<< /S/GoTo /D(subsection.9.3.33) >> /Parent 132 0 R /Prev 164 0 R /Next 166 0 R >> endobj 166 0 obj << /Title(filter-out) /A<< /S/GoTo /D(subsection.9.3.34) >> /Parent 132 0 R /Prev 165 0 R /Next 167 0 R >> endobj 167 0 obj << /Title(capitalize) /A<< /S/GoTo /D(subsection.9.3.35) >> /Parent 132 0 R /Prev 166 0 R /Next 168 0 R >> endobj 168 0 obj << /Title(uncapitalize) /A<< /S/GoTo /D(subsection.9.3.36) >> /Parent 132 0 R /Prev 167 0 R /Next 169 0 R >> endobj 169 0 obj << /Title(uppercase) /A<< /S/GoTo /D(subsection.9.3.37) >> /Parent 132 0 R /Prev 168 0 R /Next 170 0 R >> endobj 170 0 obj << /Title(lowercase) /A<< /S/GoTo /D(subsection.9.3.38) >> /Parent 132 0 R /Prev 169 0 R /Next 171 0 R >> endobj 171 0 obj << /Title(system) /A<< /S/GoTo /D(subsection.9.3.39) >> /Parent 132 0 R /Prev 170 0 R /Next 172 0 R >> endobj 172 0 obj << /Title(shell) /A<< /S/GoTo /D(subsection.9.3.40) >> /Parent 132 0 R /Prev 171 0 R /Next 173 0 R >> endobj 173 0 obj << /Title(export) /A<< /S/GoTo /D(subsection.9.3.41) >> /Parent 132 0 R /Prev 172 0 R /Next 174 0 R >> endobj 174 0 obj << /Title(while) /A<< /S/GoTo /D(subsection.9.3.42) >> /Parent 132 0 R /Prev 173 0 R /Next 175 0 R >> endobj 175 0 obj << /Title(break) /A<< /S/GoTo /D(subsection.9.3.43) >> /Parent 132 0 R /Prev 174 0 R /Next 176 0 R >> endobj 176 0 obj << /Title(random, random-init) /A<< /S/GoTo /D(subsection.9.3.44) >> /Parent 132 0 R /Prev 175 0 R >> endobj 132 0 obj << /Title(Arrays and sequences) /A<< /S/GoTo /D(section.9.3) >> /Parent 112 0 R /Prev 114 0 R /First 133 0 R /Last 176 0 R /Count -44 /Next 177 0 R >> endobj 178 0 obj << /Title(int) /A<< /S/GoTo /D(subsection.9.4.1) >> /Parent 177 0 R /Next 179 0 R >> endobj 179 0 obj << /Title(float) /A<< /S/GoTo /D(subsection.9.4.2) >> /Parent 177 0 R /Prev 178 0 R /Next 180 0 R >> endobj 180 0 obj << /Title(Basic arithmetic) /A<< /S/GoTo /D(subsection.9.4.3) >> /Parent 177 0 R /Prev 179 0 R /Next 181 0 R >> endobj 181 0 obj << /Title(Comparisons) /A<< /S/GoTo /D(subsection.9.4.4) >> /Parent 177 0 R /Prev 180 0 R >> endobj 177 0 obj << /Title(Arithmetic) /A<< /S/GoTo /D(section.9.4) >> /Parent 112 0 R /Prev 132 0 R /First 178 0 R /Last 181 0 R /Count -4 /Next 182 0 R >> endobj 183 0 obj << /Title(fun) /A<< /S/GoTo /D(subsection.9.5.1) >> /Parent 182 0 R /Next 184 0 R >> endobj 184 0 obj << /Title(apply) /A<< /S/GoTo /D(subsection.9.5.2) >> /Parent 182 0 R /Prev 183 0 R /Next 185 0 R >> endobj 185 0 obj << /Title(applya) /A<< /S/GoTo /D(subsection.9.5.3) >> /Parent 182 0 R /Prev 184 0 R /Next 186 0 R >> endobj 186 0 obj << /Title(create-map, create-lazy-map) /A<< /S/GoTo /D(subsection.9.5.4) >> /Parent 182 0 R /Prev 185 0 R >> endobj 182 0 obj << /Title(First-class functions) /A<< /S/GoTo /D(section.9.5) >> /Parent 112 0 R /Prev 177 0 R /First 183 0 R /Last 186 0 R /Count -4 /Next 187 0 R >> endobj 188 0 obj << /Title(foreach) /A<< /S/GoTo /D(subsection.9.6.1) >> /Parent 187 0 R >> endobj 187 0 obj << /Title(Iteration and mapping) /A<< /S/GoTo /D(section.9.6) >> /Parent 112 0 R /Prev 182 0 R /First 188 0 R /Last 188 0 R /Count -1 /Next 189 0 R >> endobj 190 0 obj << /Title(sequence-forall) /A<< /S/GoTo /D(subsection.9.7.1) >> /Parent 189 0 R /Next 191 0 R >> endobj 191 0 obj << /Title(sequence-exists) /A<< /S/GoTo /D(subsection.9.7.2) >> /Parent 189 0 R /Prev 190 0 R /Next 192 0 R >> endobj 192 0 obj << /Title(sequence-sort) /A<< /S/GoTo /D(subsection.9.7.3) >> /Parent 189 0 R /Prev 191 0 R /Next 193 0 R >> endobj 189 0 obj << /Title(Boolean tests) /A<< /S/GoTo /D(section.9.7) >> /Parent 112 0 R /Prev 187 0 R /First 190 0 R /Last 193 0 R /Count -4 >> endobj 193 0 obj << /Title(compare) /A<< /S/GoTo /D(subsection.9.7.4) >> /Parent 189 0 R /Prev 192 0 R >> endobj 112 0 obj << /Title(Base library) /A<< /S/GoTo /D(chapter.9) >> /Parent 11 0 R /Prev 88 0 R /First 113 0 R /Last 189 0 R /Count -7 /Next 194 0 R >> endobj 196 0 obj << /Title(file, dir) /A<< /S/GoTo /D(subsection.10.1.1) >> /Parent 195 0 R /Next 197 0 R >> endobj 197 0 obj << /Title(tmpfile) /A<< /S/GoTo /D(subsection.10.1.2) >> /Parent 195 0 R /Prev 196 0 R /Next 198 0 R >> endobj 198 0 obj << /Title(in) /A<< /S/GoTo /D(subsection.10.1.3) >> /Parent 195 0 R /Prev 197 0 R /Next 199 0 R >> endobj 199 0 obj << /Title(basename) /A<< /S/GoTo /D(subsection.10.1.4) >> /Parent 195 0 R /Prev 198 0 R /Next 200 0 R >> endobj 200 0 obj << /Title(dirname) /A<< /S/GoTo /D(subsection.10.1.5) >> /Parent 195 0 R /Prev 199 0 R /Next 201 0 R >> endobj 201 0 obj << /Title(rootname) /A<< /S/GoTo /D(subsection.10.1.6) >> /Parent 195 0 R /Prev 200 0 R /Next 202 0 R >> endobj 202 0 obj << /Title(dirof) /A<< /S/GoTo /D(subsection.10.1.7) >> /Parent 195 0 R /Prev 201 0 R /Next 203 0 R >> endobj 203 0 obj << /Title(fullname) /A<< /S/GoTo /D(subsection.10.1.8) >> /Parent 195 0 R /Prev 202 0 R /Next 204 0 R >> endobj 204 0 obj << /Title(absname) /A<< /S/GoTo /D(subsection.10.1.9) >> /Parent 195 0 R /Prev 203 0 R /Next 205 0 R >> endobj 205 0 obj << /Title(homename) /A<< /S/GoTo /D(subsection.10.1.10) >> /Parent 195 0 R /Prev 204 0 R /Next 206 0 R >> endobj 206 0 obj << /Title(suffix) /A<< /S/GoTo /D(subsection.10.1.11) >> /Parent 195 0 R /Prev 205 0 R >> endobj 195 0 obj << /Title(File names) /A<< /S/GoTo /D(section.10.1) >> /Parent 194 0 R /First 196 0 R /Last 206 0 R /Count -11 /Next 207 0 R >> endobj 208 0 obj << /Title(which) /A<< /S/GoTo /D(subsection.10.2.1) >> /Parent 207 0 R /Next 209 0 R >> endobj 209 0 obj << /Title(where) /A<< /S/GoTo /D(subsection.10.2.2) >> /Parent 207 0 R /Prev 208 0 R /Next 210 0 R >> endobj 210 0 obj << /Title(rehash) /A<< /S/GoTo /D(subsection.10.2.3) >> /Parent 207 0 R /Prev 209 0 R /Next 211 0 R >> endobj 211 0 obj << /Title(exists-in-path) /A<< /S/GoTo /D(subsection.10.2.4) >> /Parent 207 0 R /Prev 210 0 R /Next 212 0 R >> endobj 212 0 obj << /Title(digest, digest-optional) /A<< /S/GoTo /D(subsection.10.2.5) >> /Parent 207 0 R /Prev 211 0 R /Next 213 0 R >> endobj 213 0 obj << /Title(find-in-path, find-in-path-optional) /A<< /S/GoTo /D(subsection.10.2.6) >> /Parent 207 0 R /Prev 212 0 R /Next 214 0 R >> endobj 214 0 obj << /Title(digest-in-path, digest-in-path-optional) /A<< /S/GoTo /D(subsection.10.2.7) >> /Parent 207 0 R /Prev 213 0 R >> endobj 207 0 obj << /Title(Path search) /A<< /S/GoTo /D(section.10.2) >> /Parent 194 0 R /Prev 195 0 R /First 208 0 R /Last 214 0 R /Count -7 /Next 215 0 R >> endobj 216 0 obj << /Title(file-exists, target-exists, target-is-proper) /A<< /S/GoTo /D(subsection.10.3.1) >> /Parent 215 0 R /Next 217 0 R >> endobj 217 0 obj << /Title(stat-reset) /A<< /S/GoTo /D(subsection.10.3.2) >> /Parent 215 0 R /Prev 216 0 R /Next 218 0 R >> endobj 218 0 obj << /Title(filter-exists, filter-targets, filter-proper-targets) /A<< /S/GoTo /D(subsection.10.3.3) >> /Parent 215 0 R /Prev 217 0 R /Next 219 0 R >> endobj 219 0 obj << /Title(find-targets-in-path, find-targets-in-path-optional) /A<< /S/GoTo /D(subsection.10.3.4) >> /Parent 215 0 R /Prev 218 0 R /Next 220 0 R >> endobj 220 0 obj << /Title(find-ocaml-targets-in-path-optional) /A<< /S/GoTo /D(subsection.10.3.5) >> /Parent 215 0 R /Prev 219 0 R /Next 221 0 R >> endobj 222 0 obj << /Title(sort rule) /A<< /S/GoTo /D(subsubsection.10.3.6.1) >> /Parent 221 0 R >> endobj 221 0 obj << /Title(file-sort) /A<< /S/GoTo /D(subsection.10.3.6) >> /Parent 215 0 R /Prev 220 0 R /First 222 0 R /Last 222 0 R /Count -1 /Next 223 0 R >> endobj 223 0 obj << /Title(file-check-sort) /A<< /S/GoTo /D(subsection.10.3.7) >> /Parent 215 0 R /Prev 221 0 R >> endobj 215 0 obj << /Title(File stats) /A<< /S/GoTo /D(section.10.3) >> /Parent 194 0 R /Prev 207 0 R /First 216 0 R /Last 223 0 R /Count -7 /Next 224 0 R >> endobj 225 0 obj << /Title(glob) /A<< /S/GoTo /D(subsection.10.4.1) >> /Parent 224 0 R /Next 226 0 R >> endobj 226 0 obj << /Title(ls) /A<< /S/GoTo /D(subsection.10.4.2) >> /Parent 224 0 R /Prev 225 0 R /Next 227 0 R >> endobj 227 0 obj << /Title(subdirs) /A<< /S/GoTo /D(subsection.10.4.3) >> /Parent 224 0 R /Prev 226 0 R >> endobj 224 0 obj << /Title(Globbing and file listings) /A<< /S/GoTo /D(section.10.4) >> /Parent 194 0 R /Prev 215 0 R /First 225 0 R /Last 227 0 R /Count -3 /Next 228 0 R >> endobj 229 0 obj << /Title(mkdir) /A<< /S/GoTo /D(subsection.10.5.1) >> /Parent 228 0 R /Next 230 0 R >> endobj 230 0 obj << /Title(Stat) /A<< /S/GoTo /D(subsection.10.5.2) >> /Parent 228 0 R /Prev 229 0 R /Next 231 0 R >> endobj 231 0 obj << /Title(stat, lstat) /A<< /S/GoTo /D(subsection.10.5.3) >> /Parent 228 0 R /Prev 230 0 R /Next 232 0 R >> endobj 232 0 obj << /Title(unlink) /A<< /S/GoTo /D(subsection.10.5.4) >> /Parent 228 0 R /Prev 231 0 R /Next 233 0 R >> endobj 233 0 obj << /Title(rename) /A<< /S/GoTo /D(subsection.10.5.5) >> /Parent 228 0 R /Prev 232 0 R /Next 234 0 R >> endobj 234 0 obj << /Title(link) /A<< /S/GoTo /D(subsection.10.5.6) >> /Parent 228 0 R /Prev 233 0 R /Next 235 0 R >> endobj 235 0 obj << /Title(symlink) /A<< /S/GoTo /D(subsection.10.5.7) >> /Parent 228 0 R /Prev 234 0 R /Next 236 0 R >> endobj 236 0 obj << /Title(readlink) /A<< /S/GoTo /D(subsection.10.5.8) >> /Parent 228 0 R /Prev 235 0 R /Next 237 0 R >> endobj 237 0 obj << /Title(chmod) /A<< /S/GoTo /D(subsection.10.5.9) >> /Parent 228 0 R /Prev 236 0 R /Next 238 0 R >> endobj 238 0 obj << /Title(chown) /A<< /S/GoTo /D(subsection.10.5.10) >> /Parent 228 0 R /Prev 237 0 R /Next 239 0 R >> endobj 239 0 obj << /Title(truncate) /A<< /S/GoTo /D(subsection.10.5.11) >> /Parent 228 0 R /Prev 238 0 R /Next 240 0 R >> endobj 240 0 obj << /Title(umask) /A<< /S/GoTo /D(subsection.10.5.12) >> /Parent 228 0 R /Prev 239 0 R >> endobj 228 0 obj << /Title(Filesystem operations) /A<< /S/GoTo /D(section.10.5) >> /Parent 194 0 R /Prev 224 0 R /First 229 0 R /Last 240 0 R /Count -12 /Next 241 0 R >> endobj 242 0 obj << /Title(vmount) /A<< /S/GoTo /D(subsection.10.6.1) >> /Parent 241 0 R /Next 243 0 R >> endobj 243 0 obj << /Title(add-project-directories) /A<< /S/GoTo /D(subsection.10.6.2) >> /Parent 241 0 R /Prev 242 0 R /Next 244 0 R >> endobj 244 0 obj << /Title(remove-project-directories) /A<< /S/GoTo /D(subsection.10.6.3) >> /Parent 241 0 R /Prev 243 0 R >> endobj 241 0 obj << /Title(vmount) /A<< /S/GoTo /D(section.10.6) >> /Parent 194 0 R /Prev 228 0 R /First 242 0 R /Last 244 0 R /Count -3 /Next 245 0 R >> endobj 246 0 obj << /Title(test) /A<< /S/GoTo /D(subsection.10.7.1) >> /Parent 245 0 R /Next 247 0 R >> endobj 247 0 obj << /Title(find) /A<< /S/GoTo /D(subsection.10.7.2) >> /Parent 245 0 R /Prev 246 0 R >> endobj 245 0 obj << /Title(File predicates) /A<< /S/GoTo /D(section.10.7) >> /Parent 194 0 R /Prev 241 0 R /First 246 0 R /Last 247 0 R /Count -2 /Next 248 0 R >> endobj 249 0 obj << /Title(Standard channels) /A<< /S/GoTo /D(subsection.10.8.1) >> /Parent 248 0 R /Next 250 0 R >> endobj 250 0 obj << /Title(open-in-string) /A<< /S/GoTo /D(subsection.10.8.2) >> /Parent 248 0 R /Prev 249 0 R /Next 251 0 R >> endobj 251 0 obj << /Title(open-out-string, out-contents) /A<< /S/GoTo /D(subsection.10.8.3) >> /Parent 248 0 R /Prev 250 0 R /Next 252 0 R >> endobj 252 0 obj << /Title(fopen) /A<< /S/GoTo /D(subsection.10.8.4) >> /Parent 248 0 R /Prev 251 0 R /Next 253 0 R >> endobj 253 0 obj << /Title(close) /A<< /S/GoTo /D(subsection.10.8.5) >> /Parent 248 0 R /Prev 252 0 R /Next 254 0 R >> endobj 254 0 obj << /Title(read, input-line) /A<< /S/GoTo /D(subsection.10.8.6) >> /Parent 248 0 R /Prev 253 0 R /Next 255 0 R >> endobj 255 0 obj << /Title(write) /A<< /S/GoTo /D(subsection.10.8.7) >> /Parent 248 0 R /Prev 254 0 R /Next 256 0 R >> endobj 256 0 obj << /Title(lseek) /A<< /S/GoTo /D(subsection.10.8.8) >> /Parent 248 0 R /Prev 255 0 R /Next 257 0 R >> endobj 257 0 obj << /Title(rewind) /A<< /S/GoTo /D(subsection.10.8.9) >> /Parent 248 0 R /Prev 256 0 R /Next 258 0 R >> endobj 258 0 obj << /Title(tell) /A<< /S/GoTo /D(subsection.10.8.10) >> /Parent 248 0 R /Prev 257 0 R /Next 259 0 R >> endobj 259 0 obj << /Title(flush) /A<< /S/GoTo /D(subsection.10.8.11) >> /Parent 248 0 R /Prev 258 0 R /Next 260 0 R >> endobj 260 0 obj << /Title(channel-name) /A<< /S/GoTo /D(subsection.10.8.12) >> /Parent 248 0 R /Prev 259 0 R /Next 261 0 R >> endobj 261 0 obj << /Title(dup) /A<< /S/GoTo /D(subsection.10.8.13) >> /Parent 248 0 R /Prev 260 0 R /Next 262 0 R >> endobj 262 0 obj << /Title(dup2) /A<< /S/GoTo /D(subsection.10.8.14) >> /Parent 248 0 R /Prev 261 0 R /Next 263 0 R >> endobj 263 0 obj << /Title(set-nonblock) /A<< /S/GoTo /D(subsection.10.8.15) >> /Parent 248 0 R /Prev 262 0 R /Next 264 0 R >> endobj 264 0 obj << /Title(set-close-on-exec-mode) /A<< /S/GoTo /D(subsection.10.8.16) >> /Parent 248 0 R /Prev 263 0 R /Next 265 0 R >> endobj 265 0 obj << /Title(pipe) /A<< /S/GoTo /D(subsection.10.8.17) >> /Parent 248 0 R /Prev 264 0 R /Next 266 0 R >> endobj 266 0 obj << /Title(mkfifo) /A<< /S/GoTo /D(subsection.10.8.18) >> /Parent 248 0 R /Prev 265 0 R /Next 267 0 R >> endobj 267 0 obj << /Title(select) /A<< /S/GoTo /D(subsection.10.8.19) >> /Parent 248 0 R /Prev 266 0 R /Next 268 0 R >> endobj 268 0 obj << /Title(lockf) /A<< /S/GoTo /D(subsection.10.8.20) >> /Parent 248 0 R /Prev 267 0 R /Next 269 0 R >> endobj 269 0 obj << /Title(InetAddr) /A<< /S/GoTo /D(subsection.10.8.21) >> /Parent 248 0 R /Prev 268 0 R /Next 270 0 R >> endobj 270 0 obj << /Title(Host) /A<< /S/GoTo /D(subsection.10.8.22) >> /Parent 248 0 R /Prev 269 0 R /Next 271 0 R >> endobj 271 0 obj << /Title(gethostbyname) /A<< /S/GoTo /D(subsection.10.8.23) >> /Parent 248 0 R /Prev 270 0 R /Next 272 0 R >> endobj 272 0 obj << /Title(Protocol) /A<< /S/GoTo /D(subsection.10.8.24) >> /Parent 248 0 R /Prev 271 0 R /Next 273 0 R >> endobj 273 0 obj << /Title(getprotobyname) /A<< /S/GoTo /D(subsection.10.8.25) >> /Parent 248 0 R /Prev 272 0 R /Next 274 0 R >> endobj 274 0 obj << /Title(Service) /A<< /S/GoTo /D(subsection.10.8.26) >> /Parent 248 0 R /Prev 273 0 R /Next 275 0 R >> endobj 275 0 obj << /Title(getservbyname) /A<< /S/GoTo /D(subsection.10.8.27) >> /Parent 248 0 R /Prev 274 0 R /Next 276 0 R >> endobj 276 0 obj << /Title(socket) /A<< /S/GoTo /D(subsection.10.8.28) >> /Parent 248 0 R /Prev 275 0 R /Next 277 0 R >> endobj 277 0 obj << /Title(bind) /A<< /S/GoTo /D(subsection.10.8.29) >> /Parent 248 0 R /Prev 276 0 R /Next 278 0 R >> endobj 278 0 obj << /Title(listen) /A<< /S/GoTo /D(subsection.10.8.30) >> /Parent 248 0 R /Prev 277 0 R /Next 279 0 R >> endobj 279 0 obj << /Title(accept) /A<< /S/GoTo /D(subsection.10.8.31) >> /Parent 248 0 R /Prev 278 0 R /Next 280 0 R >> endobj 280 0 obj << /Title(connect) /A<< /S/GoTo /D(subsection.10.8.32) >> /Parent 248 0 R /Prev 279 0 R /Next 281 0 R >> endobj 281 0 obj << /Title(getchar) /A<< /S/GoTo /D(subsection.10.8.33) >> /Parent 248 0 R /Prev 280 0 R /Next 282 0 R >> endobj 282 0 obj << /Title(gets) /A<< /S/GoTo /D(subsection.10.8.34) >> /Parent 248 0 R /Prev 281 0 R /Next 283 0 R >> endobj 283 0 obj << /Title(fgets) /A<< /S/GoTo /D(subsection.10.8.35) >> /Parent 248 0 R /Prev 282 0 R >> endobj 248 0 obj << /Title(IO functions) /A<< /S/GoTo /D(section.10.8) >> /Parent 194 0 R /Prev 245 0 R /First 249 0 R /Last 283 0 R /Count -35 /Next 284 0 R >> endobj 284 0 obj << /Title(Printing functions) /A<< /S/GoTo /D(section.10.9) >> /Parent 194 0 R /Prev 248 0 R /Next 285 0 R >> endobj 286 0 obj << /Title(Miscellaneous functions) /A<< /S/GoTo /D(subsection.10.10.1) >> /Parent 285 0 R /First 287 0 R /Last 287 0 R /Count -1 >> endobj 287 0 obj << /Title(set-channel-line) /A<< /S/GoTo /D(subsubsection.10.10.1.1) >> /Parent 286 0 R >> endobj 285 0 obj << /Title(Value printing functions) /A<< /S/GoTo /D(section.10.10) >> /Parent 194 0 R /Prev 284 0 R /First 286 0 R /Last 286 0 R /Count -1 /Next 288 0 R >> endobj 289 0 obj << /Title(Regular expressions) /A<< /S/GoTo /D(subsection.10.11.1) >> /Parent 288 0 R /Next 290 0 R >> endobj 290 0 obj << /Title(cat) /A<< /S/GoTo /D(subsection.10.11.2) >> /Parent 288 0 R /Prev 289 0 R /Next 291 0 R >> endobj 291 0 obj << /Title(grep) /A<< /S/GoTo /D(subsection.10.11.3) >> /Parent 288 0 R /Prev 290 0 R /Next 292 0 R >> endobj 292 0 obj << /Title(scan) /A<< /S/GoTo /D(subsection.10.11.4) >> /Parent 288 0 R /Prev 291 0 R /Next 293 0 R >> endobj 293 0 obj << /Title(awk) /A<< /S/GoTo /D(subsection.10.11.5) >> /Parent 288 0 R /Prev 292 0 R /Next 294 0 R >> endobj 294 0 obj << /Title(fsubst) /A<< /S/GoTo /D(subsection.10.11.6) >> /Parent 288 0 R /Prev 293 0 R /Next 295 0 R >> endobj 295 0 obj << /Title(lex) /A<< /S/GoTo /D(subsection.10.11.7) >> /Parent 288 0 R /Prev 294 0 R /Next 296 0 R >> endobj 296 0 obj << /Title(lex-search) /A<< /S/GoTo /D(subsection.10.11.8) >> /Parent 288 0 R /Prev 295 0 R /Next 297 0 R >> endobj 297 0 obj << /Title(Lexer) /A<< /S/GoTo /D(subsection.10.11.9) >> /Parent 288 0 R /Prev 296 0 R /Next 298 0 R >> endobj 298 0 obj << /Title(Lexer matching) /A<< /S/GoTo /D(subsection.10.11.10) >> /Parent 288 0 R /Prev 297 0 R /Next 299 0 R >> endobj 299 0 obj << /Title(Extending lexer definitions) /A<< /S/GoTo /D(subsection.10.11.11) >> /Parent 288 0 R /Prev 298 0 R /Next 300 0 R >> endobj 300 0 obj << /Title(Threading the lexer object) /A<< /S/GoTo /D(subsection.10.11.12) >> /Parent 288 0 R /Prev 299 0 R /Next 301 0 R >> endobj 301 0 obj << /Title(Parser) /A<< /S/GoTo /D(subsection.10.11.13) >> /Parent 288 0 R /Prev 300 0 R /Next 302 0 R >> endobj 302 0 obj << /Title(Calling the parser) /A<< /S/GoTo /D(subsection.10.11.14) >> /Parent 288 0 R /Prev 301 0 R /Next 303 0 R >> endobj 303 0 obj << /Title(Parsing control) /A<< /S/GoTo /D(subsection.10.11.15) >> /Parent 288 0 R /Prev 302 0 R /Next 304 0 R >> endobj 304 0 obj << /Title(Extending parsers) /A<< /S/GoTo /D(subsection.10.11.16) >> /Parent 288 0 R /Prev 303 0 R /Next 305 0 R >> endobj 305 0 obj << /Title(Passwd) /A<< /S/GoTo /D(subsection.10.11.17) >> /Parent 288 0 R /Prev 304 0 R /Next 306 0 R >> endobj 306 0 obj << /Title(getpwnam, getpwuid) /A<< /S/GoTo /D(subsection.10.11.18) >> /Parent 288 0 R /Prev 305 0 R /Next 307 0 R >> endobj 307 0 obj << /Title(getpwents) /A<< /S/GoTo /D(subsection.10.11.19) >> /Parent 288 0 R /Prev 306 0 R /Next 308 0 R >> endobj 308 0 obj << /Title(Group) /A<< /S/GoTo /D(subsection.10.11.20) >> /Parent 288 0 R /Prev 307 0 R /Next 309 0 R >> endobj 309 0 obj << /Title(getgrnam, getgrgid) /A<< /S/GoTo /D(subsection.10.11.21) >> /Parent 288 0 R /Prev 308 0 R /Next 310 0 R >> endobj 310 0 obj << /Title(tgetstr) /A<< /S/GoTo /D(subsection.10.11.22) >> /Parent 288 0 R /Prev 309 0 R /Next 311 0 R >> endobj 311 0 obj << /Title(xterm-escape-begin, xterm-escape-end) /A<< /S/GoTo /D(subsection.10.11.23) >> /Parent 288 0 R /Prev 310 0 R /Next 312 0 R >> endobj 312 0 obj << /Title(xterm-escape) /A<< /S/GoTo /D(subsection.10.11.24) >> /Parent 288 0 R /Prev 311 0 R /Next 313 0 R >> endobj 313 0 obj << /Title(prompt-invisible-begin, prompt-invisible-end) /A<< /S/GoTo /D(subsection.10.11.25) >> /Parent 288 0 R /Prev 312 0 R /Next 314 0 R >> endobj 314 0 obj << /Title(prompt-invisible) /A<< /S/GoTo /D(subsection.10.11.26) >> /Parent 288 0 R /Prev 313 0 R /Next 315 0 R >> endobj 288 0 obj << /Title(Higher-level IO functions) /A<< /S/GoTo /D(section.10.11) >> /Parent 194 0 R /Prev 285 0 R /First 289 0 R /Last 315 0 R /Count -27 >> endobj 315 0 obj << /Title(gettimeofday) /A<< /S/GoTo /D(subsection.10.11.27) >> /Parent 288 0 R /Prev 314 0 R >> endobj 194 0 obj << /Title(File, I/O and system operations) /A<< /S/GoTo /D(chapter.10) >> /Parent 11 0 R /Prev 112 0 R /First 195 0 R /Last 288 0 R /Count -11 /Next 316 0 R >> endobj 317 0 obj << /Title(Simple commands) /A<< /S/GoTo /D(section.11.1) >> /Parent 316 0 R /Next 318 0 R >> endobj 318 0 obj << /Title(Globbing) /A<< /S/GoTo /D(section.11.2) >> /Parent 316 0 R /Prev 317 0 R /Next 319 0 R >> endobj 319 0 obj << /Title(Background jobs) /A<< /S/GoTo /D(section.11.3) >> /Parent 316 0 R /Prev 318 0 R /Next 320 0 R >> endobj 320 0 obj << /Title(File redirection) /A<< /S/GoTo /D(section.11.4) >> /Parent 316 0 R /Prev 319 0 R /Next 321 0 R >> endobj 321 0 obj << /Title(Pipelines) /A<< /S/GoTo /D(section.11.5) >> /Parent 316 0 R /Prev 320 0 R /Next 322 0 R >> endobj 322 0 obj << /Title(Conditional execution) /A<< /S/GoTo /D(section.11.6) >> /Parent 316 0 R /Prev 321 0 R /Next 323 0 R >> endobj 323 0 obj << /Title(Grouping) /A<< /S/GoTo /D(section.11.7) >> /Parent 316 0 R /Prev 322 0 R /Next 324 0 R >> endobj 324 0 obj << /Title(What is a shell command?) /A<< /S/GoTo /D(section.11.8) >> /Parent 316 0 R /Prev 323 0 R /Next 325 0 R >> endobj 326 0 obj << /Title(echo) /A<< /S/GoTo /D(subsection.11.9.1) >> /Parent 325 0 R /Next 327 0 R >> endobj 327 0 obj << /Title(cd) /A<< /S/GoTo /D(subsection.11.9.2) >> /Parent 325 0 R /Prev 326 0 R >> endobj 325 0 obj << /Title(Basic builtin functions) /A<< /S/GoTo /D(section.11.9) >> /Parent 316 0 R /Prev 324 0 R /First 326 0 R /Last 327 0 R /Count -2 /Next 328 0 R >> endobj 329 0 obj << /Title(jobs) /A<< /S/GoTo /D(subsection.11.10.1) >> /Parent 328 0 R /Next 330 0 R >> endobj 330 0 obj << /Title(bg) /A<< /S/GoTo /D(subsection.11.10.2) >> /Parent 328 0 R /Prev 329 0 R /Next 331 0 R >> endobj 331 0 obj << /Title(fg) /A<< /S/GoTo /D(subsection.11.10.3) >> /Parent 328 0 R /Prev 330 0 R /Next 332 0 R >> endobj 332 0 obj << /Title(stop) /A<< /S/GoTo /D(subsection.11.10.4) >> /Parent 328 0 R /Prev 331 0 R /Next 333 0 R >> endobj 333 0 obj << /Title(wait) /A<< /S/GoTo /D(subsection.11.10.5) >> /Parent 328 0 R /Prev 332 0 R /Next 334 0 R >> endobj 334 0 obj << /Title(kill) /A<< /S/GoTo /D(subsection.11.10.6) >> /Parent 328 0 R /Prev 333 0 R >> endobj 328 0 obj << /Title(Job control builtin functions) /A<< /S/GoTo /D(section.11.10) >> /Parent 316 0 R /Prev 325 0 R /First 329 0 R /Last 334 0 R /Count -6 /Next 335 0 R >> endobj 335 0 obj << /Title(Command history) /A<< /S/GoTo /D(section.11.11) >> /Parent 316 0 R /Prev 328 0 R /First 336 0 R /Last 336 0 R /Count -1 >> endobj 336 0 obj << /Title(history) /A<< /S/GoTo /D(subsection.11.11.1) >> /Parent 335 0 R >> endobj 316 0 obj << /Title(Shell commands) /A<< /S/GoTo /D(chapter.11) >> /Parent 11 0 R /Prev 194 0 R /First 317 0 R /Last 335 0 R /Count -11 /Next 337 0 R >> endobj 339 0 obj << /Title(Object) /A<< /S/GoTo /D(subsection.12.1.1) >> /Parent 338 0 R /Next 340 0 R >> endobj 340 0 obj << /Title(Map) /A<< /S/GoTo /D(subsection.12.1.2) >> /Parent 338 0 R /Prev 339 0 R /Next 341 0 R >> endobj 341 0 obj << /Title(Number) /A<< /S/GoTo /D(subsection.12.1.3) >> /Parent 338 0 R /Prev 340 0 R /Next 342 0 R >> endobj 342 0 obj << /Title(Int) /A<< /S/GoTo /D(subsection.12.1.4) >> /Parent 338 0 R /Prev 341 0 R /Next 343 0 R >> endobj 343 0 obj << /Title(Float) /A<< /S/GoTo /D(subsection.12.1.5) >> /Parent 338 0 R /Prev 342 0 R /Next 344 0 R >> endobj 344 0 obj << /Title(Sequence) /A<< /S/GoTo /D(subsection.12.1.6) >> /Parent 338 0 R /Prev 343 0 R /Next 345 0 R >> endobj 345 0 obj << /Title(Array) /A<< /S/GoTo /D(subsection.12.1.7) >> /Parent 338 0 R /Prev 344 0 R /Next 346 0 R >> endobj 346 0 obj << /Title(String) /A<< /S/GoTo /D(subsection.12.1.8) >> /Parent 338 0 R /Prev 345 0 R /Next 347 0 R >> endobj 347 0 obj << /Title(Fun) /A<< /S/GoTo /D(subsection.12.1.9) >> /Parent 338 0 R /Prev 346 0 R /Next 348 0 R >> endobj 348 0 obj << /Title(Rule) /A<< /S/GoTo /D(subsection.12.1.10) >> /Parent 338 0 R /Prev 347 0 R /Next 349 0 R >> endobj 349 0 obj << /Title(Target) /A<< /S/GoTo /D(subsection.12.1.11) >> /Parent 338 0 R /Prev 348 0 R /Next 350 0 R >> endobj 350 0 obj << /Title(Node) /A<< /S/GoTo /D(subsection.12.1.12) >> /Parent 338 0 R /Prev 349 0 R /Next 351 0 R >> endobj 351 0 obj << /Title(File) /A<< /S/GoTo /D(subsection.12.1.13) >> /Parent 338 0 R /Prev 350 0 R /Next 352 0 R >> endobj 352 0 obj << /Title(Dir) /A<< /S/GoTo /D(subsection.12.1.14) >> /Parent 338 0 R /Prev 351 0 R /Next 353 0 R >> endobj 353 0 obj << /Title(Channel) /A<< /S/GoTo /D(subsection.12.1.15) >> /Parent 338 0 R /Prev 352 0 R /Next 354 0 R >> endobj 354 0 obj << /Title(InChannel) /A<< /S/GoTo /D(subsection.12.1.16) >> /Parent 338 0 R /Prev 353 0 R /Next 355 0 R >> endobj 355 0 obj << /Title(OutChannel) /A<< /S/GoTo /D(subsection.12.1.17) >> /Parent 338 0 R /Prev 354 0 R /Next 356 0 R >> endobj 356 0 obj << /Title(Location) /A<< /S/GoTo /D(subsection.12.1.18) >> /Parent 338 0 R /Prev 355 0 R /Next 357 0 R >> endobj 357 0 obj << /Title(Exception) /A<< /S/GoTo /D(subsection.12.1.19) >> /Parent 338 0 R /Prev 356 0 R /Next 358 0 R >> endobj 358 0 obj << /Title(RuntimeException) /A<< /S/GoTo /D(subsection.12.1.20) >> /Parent 338 0 R /Prev 357 0 R /Next 359 0 R >> endobj 359 0 obj << /Title(UnbuildableException) /A<< /S/GoTo /D(subsection.12.1.21) >> /Parent 338 0 R /Prev 358 0 R /Next 360 0 R >> endobj 338 0 obj << /Title(Pervasives objects) /A<< /S/GoTo /D(section.12.1) >> /Parent 337 0 R /First 339 0 R /Last 360 0 R /Count -22 >> endobj 360 0 obj << /Title(Shell) /A<< /S/GoTo /D(subsection.12.1.22) >> /Parent 338 0 R /Prev 359 0 R >> endobj 337 0 obj << /Title(The standard objects) /A<< /S/GoTo /D(chapter.12) >> /Parent 11 0 R /Prev 316 0 R /First 338 0 R /Last 338 0 R /Count -1 /Next 361 0 R >> endobj 362 0 obj << /Title(Builtin .PHONY targets) /A<< /S/GoTo /D(section.13.1) >> /Parent 361 0 R /Next 363 0 R >> endobj 364 0 obj << /Title(OMakeFlags) /A<< /S/GoTo /D(subsection.13.2.1) >> /Parent 363 0 R /Next 365 0 R >> endobj 365 0 obj << /Title(OMakeVersion) /A<< /S/GoTo /D(subsection.13.2.2) >> /Parent 363 0 R /Prev 364 0 R /Next 366 0 R >> endobj 366 0 obj << /Title(cmp-versions) /A<< /S/GoTo /D(subsection.13.2.3) >> /Parent 363 0 R /Prev 365 0 R /Next 367 0 R >> endobj 367 0 obj << /Title(DefineCommandVars) /A<< /S/GoTo /D(subsection.13.2.4) >> /Parent 363 0 R /Prev 366 0 R >> endobj 363 0 obj << /Title(Options and versioning) /A<< /S/GoTo /D(section.13.2) >> /Parent 361 0 R /Prev 362 0 R /First 364 0 R /Last 367 0 R /Count -4 /Next 368 0 R >> endobj 369 0 obj << /Title(dependencies, dependencies-all, dependencies-proper) /A<< /S/GoTo /D(subsection.13.3.1) >> /Parent 368 0 R /Next 370 0 R >> endobj 370 0 obj << /Title(target) /A<< /S/GoTo /D(subsection.13.3.2) >> /Parent 368 0 R /Prev 369 0 R /Next 371 0 R >> endobj 371 0 obj << /Title(find-build-targets) /A<< /S/GoTo /D(subsection.13.3.3) >> /Parent 368 0 R /Prev 370 0 R /Next 372 0 R >> endobj 372 0 obj << /Title(project-directories) /A<< /S/GoTo /D(subsection.13.3.4) >> /Parent 368 0 R /Prev 371 0 R /Next 373 0 R >> endobj 373 0 obj << /Title(rule) /A<< /S/GoTo /D(subsection.13.3.5) >> /Parent 368 0 R /Prev 372 0 R /Next 374 0 R >> endobj 374 0 obj << /Title(build) /A<< /S/GoTo /D(subsection.13.3.6) >> /Parent 368 0 R /Prev 373 0 R >> endobj 368 0 obj << /Title(Examining the dependency graph) /A<< /S/GoTo /D(section.13.3) >> /Parent 361 0 R /Prev 363 0 R /First 369 0 R /Last 374 0 R /Count -6 /Next 375 0 R >> endobj 376 0 obj << /Title(Variables) /A<< /S/GoTo /D(subsection.13.4.1) >> /Parent 375 0 R /Next 377 0 R >> endobj 377 0 obj << /Title(System variables) /A<< /S/GoTo /D(subsection.13.4.2) >> /Parent 375 0 R /Prev 376 0 R >> endobj 375 0 obj << /Title(The OMakeroot file) /A<< /S/GoTo /D(section.13.4) >> /Parent 361 0 R /Prev 368 0 R /First 376 0 R /Last 377 0 R /Count -2 /Next 378 0 R >> endobj 380 0 obj << /Title(Unix-like systems) /A<< /S/GoTo /D(subsubsection.13.5.1.1) >> /Parent 379 0 R /Next 381 0 R >> endobj 381 0 obj << /Title(Win32) /A<< /S/GoTo /D(subsubsection.13.5.1.2) >> /Parent 379 0 R /Prev 380 0 R >> endobj 379 0 obj << /Title(Autoconfiguration variables) /A<< /S/GoTo /D(subsection.13.5.1) >> /Parent 378 0 R /First 380 0 R /Last 381 0 R /Count -2 /Next 382 0 R >> endobj 382 0 obj << /Title(C and C++ configuration variables) /A<< /S/GoTo /D(subsection.13.5.2) >> /Parent 378 0 R /Prev 379 0 R /Next 383 0 R >> endobj 384 0 obj << /Title(CGeneratedFiles, LocalCGeneratedFiles) /A<< /S/GoTo /D(subsubsection.13.5.3.1) >> /Parent 383 0 R >> endobj 383 0 obj << /Title(Generated C files) /A<< /S/GoTo /D(subsection.13.5.3) >> /Parent 378 0 R /Prev 382 0 R /First 384 0 R /Last 384 0 R /Count -1 /Next 385 0 R >> endobj 386 0 obj << /Title(StaticCLibrary, DynamicCLibrary) /A<< /S/GoTo /D(subsubsection.13.5.4.1) >> /Parent 385 0 R /Next 387 0 R >> endobj 387 0 obj << /Title(StaticCLibraryCopy, DynamicCLibraryCopy) /A<< /S/GoTo /D(subsubsection.13.5.4.2) >> /Parent 385 0 R /Prev 386 0 R /Next 388 0 R >> endobj 388 0 obj << /Title(StaticCLibraryInstall, DynamicCLibraryInstall) /A<< /S/GoTo /D(subsubsection.13.5.4.3) >> /Parent 385 0 R /Prev 387 0 R /Next 389 0 R >> endobj 389 0 obj << /Title(StaticCObject, StaticCObjectCopy, StaticCObjectInstall) /A<< /S/GoTo /D(subsubsection.13.5.4.4) >> /Parent 385 0 R /Prev 388 0 R /Next 390 0 R >> endobj 390 0 obj << /Title(CProgram) /A<< /S/GoTo /D(subsubsection.13.5.4.5) >> /Parent 385 0 R /Prev 389 0 R /Next 391 0 R >> endobj 391 0 obj << /Title(CProgramCopy) /A<< /S/GoTo /D(subsubsection.13.5.4.6) >> /Parent 385 0 R /Prev 390 0 R /Next 392 0 R >> endobj 392 0 obj << /Title(CProgramInstall) /A<< /S/GoTo /D(subsubsection.13.5.4.7) >> /Parent 385 0 R /Prev 391 0 R /Next 393 0 R >> endobj 393 0 obj << /Title(CXXProgram, CXXProgramInstall) /A<< /S/GoTo /D(subsubsection.13.5.4.8) >> /Parent 385 0 R /Prev 392 0 R /Next 394 0 R >> endobj 385 0 obj << /Title(Building C programs and Libraries) /A<< /S/GoTo /D(subsection.13.5.4) >> /Parent 378 0 R /Prev 383 0 R /First 386 0 R /Last 394 0 R /Count -9 >> endobj 394 0 obj << /Title(StaticCXXLibrary, StaticCXXLibraryCopy, StaticCXXLibraryInstall, DynamicCXXLibrary, DynamicCXXLibraryCopy, DynamicCXXLibraryInstall) /A<< /S/GoTo /D(subsubsection.13.5.4.9) >> /Parent 385 0 R /Prev 393 0 R >> endobj 378 0 obj << /Title(Building C and C++ code) /A<< /S/GoTo /D(section.13.5) >> /Parent 361 0 R /Prev 375 0 R /First 379 0 R /Last 385 0 R /Count -4 /Next 395 0 R >> endobj 396 0 obj << /Title(Autoconfiguration variables for OCaml compilation) /A<< /S/GoTo /D(subsection.13.6.1) >> /Parent 395 0 R /Next 397 0 R >> endobj 397 0 obj << /Title(Configuration variables for OCaml compilation) /A<< /S/GoTo /D(subsection.13.6.2) >> /Parent 395 0 R /Prev 396 0 R /Next 398 0 R >> endobj 398 0 obj << /Title(OCaml command flags) /A<< /S/GoTo /D(subsection.13.6.3) >> /Parent 395 0 R /Prev 397 0 R /Next 399 0 R >> endobj 399 0 obj << /Title(Library variables) /A<< /S/GoTo /D(subsection.13.6.4) >> /Parent 395 0 R /Prev 398 0 R /Next 400 0 R >> endobj 401 0 obj << /Title(OCamlGeneratedFiles, LocalOCamlGeneratedFiles) /A<< /S/GoTo /D(subsubsection.13.6.5.1) >> /Parent 400 0 R /Next 402 0 R >> endobj 402 0 obj << /Title(Automatic discovery of generated files during dependency analysis) /A<< /S/GoTo /D(subsubsection.13.6.5.2) >> /Parent 400 0 R /Prev 401 0 R >> endobj 400 0 obj << /Title(Generated OCaml Files) /A<< /S/GoTo /D(subsection.13.6.5) >> /Parent 395 0 R /Prev 399 0 R /First 401 0 R /Last 402 0 R /Count -2 /Next 403 0 R >> endobj 404 0 obj << /Title(OCamlLibrary) /A<< /S/GoTo /D(subsubsection.13.6.6.1) >> /Parent 403 0 R /Next 405 0 R >> endobj 405 0 obj << /Title(OCamlPackage) /A<< /S/GoTo /D(subsubsection.13.6.6.2) >> /Parent 403 0 R /Prev 404 0 R /Next 406 0 R >> endobj 406 0 obj << /Title(OCamlLibraryCopy) /A<< /S/GoTo /D(subsubsection.13.6.6.3) >> /Parent 403 0 R /Prev 405 0 R /Next 407 0 R >> endobj 407 0 obj << /Title(OCamlLibraryInstall) /A<< /S/GoTo /D(subsubsection.13.6.6.4) >> /Parent 403 0 R /Prev 406 0 R /Next 408 0 R >> endobj 408 0 obj << /Title(OCamlProgram) /A<< /S/GoTo /D(subsubsection.13.6.6.5) >> /Parent 403 0 R /Prev 407 0 R /Next 409 0 R >> endobj 409 0 obj << /Title(OCamlProgramCopy) /A<< /S/GoTo /D(subsubsection.13.6.6.6) >> /Parent 403 0 R /Prev 408 0 R /Next 410 0 R >> endobj 403 0 obj << /Title(Using the Menhir parser generator) /A<< /S/GoTo /D(subsection.13.6.6) >> /Parent 395 0 R /Prev 400 0 R /First 404 0 R /Last 410 0 R /Count -7 >> endobj 410 0 obj << /Title(OCamlProgramInstall) /A<< /S/GoTo /D(subsubsection.13.6.6.7) >> /Parent 403 0 R /Prev 409 0 R >> endobj 395 0 obj << /Title(Building OCaml code) /A<< /S/GoTo /D(section.13.6) >> /Parent 361 0 R /Prev 378 0 R /First 396 0 R /Last 403 0 R /Count -6 /Next 411 0 R >> endobj 412 0 obj << /Title(Configuration variables) /A<< /S/GoTo /D(subsection.13.7.1) >> /Parent 411 0 R /Next 413 0 R >> endobj 414 0 obj << /Title(LaTeXDocument) /A<< /S/GoTo /D(subsubsection.13.7.2.1) >> /Parent 413 0 R /Next 415 0 R >> endobj 415 0 obj << /Title(TeXGeneratedFiles, LocalTeXGeneratedFiles) /A<< /S/GoTo /D(subsubsection.13.7.2.2) >> /Parent 413 0 R /Prev 414 0 R /Next 416 0 R >> endobj 416 0 obj << /Title(LaTeXDocumentCopy) /A<< /S/GoTo /D(subsubsection.13.7.2.3) >> /Parent 413 0 R /Prev 415 0 R /Next 417 0 R >> endobj 411 0 obj << /Title(Building LaTeX files) /A<< /S/GoTo /D(section.13.7) >> /Parent 361 0 R /Prev 395 0 R /First 412 0 R /Last 413 0 R /Count -2 >> endobj 413 0 obj << /Title(Building LaTeX documents) /A<< /S/GoTo /D(subsection.13.7.2) >> /Parent 411 0 R /Prev 412 0 R /First 414 0 R /Last 417 0 R /Count -4 >> endobj 417 0 obj << /Title(LaTeXDocumentInstall) /A<< /S/GoTo /D(subsubsection.13.7.2.4) >> /Parent 413 0 R /Prev 416 0 R >> endobj 361 0 obj << /Title(Build functions and utilities) /A<< /S/GoTo /D(chapter.13) >> /Parent 11 0 R /Prev 337 0 R /First 362 0 R /Last 411 0 R /Count -7 /Next 418 0 R >> endobj 420 0 obj << /Title(ConfMsgChecking, ConfMsgResult) /A<< /S/GoTo /D(subsection.14.1.1) >> /Parent 419 0 R /Next 421 0 R >> endobj 421 0 obj << /Title(ConfMsgWarn, ConfMsgError) /A<< /S/GoTo /D(subsection.14.1.2) >> /Parent 419 0 R /Prev 420 0 R /Next 422 0 R >> endobj 422 0 obj << /Title(ConfMsgYesNo, ConfMsgFound) /A<< /S/GoTo /D(subsection.14.1.3) >> /Parent 419 0 R /Prev 421 0 R /Next 423 0 R >> endobj 423 0 obj << /Title(TryCompileC, TryLinkC, TryRunC) /A<< /S/GoTo /D(subsection.14.1.4) >> /Parent 419 0 R /Prev 422 0 R /Next 424 0 R >> endobj 424 0 obj << /Title(RunCProg) /A<< /S/GoTo /D(subsection.14.1.5) >> /Parent 419 0 R /Prev 423 0 R /Next 425 0 R >> endobj 425 0 obj << /Title(CheckCHeader, VerboseCheckCHeader) /A<< /S/GoTo /D(subsection.14.1.6) >> /Parent 419 0 R /Prev 424 0 R /Next 426 0 R >> endobj 426 0 obj << /Title(CheckCLib, VerboseCheckCLib) /A<< /S/GoTo /D(subsection.14.1.7) >> /Parent 419 0 R /Prev 425 0 R /Next 427 0 R >> endobj 427 0 obj << /Title(CheckProg) /A<< /S/GoTo /D(subsection.14.1.8) >> /Parent 419 0 R /Prev 426 0 R >> endobj 419 0 obj << /Title(General-purpose autoconfiguration functions) /A<< /S/GoTo /D(section.14.1) >> /Parent 418 0 R /First 420 0 R /Last 427 0 R /Count -8 /Next 428 0 R >> endobj 428 0 obj << /Title(Translating autoconf scripts) /A<< /S/GoTo /D(section.14.2) >> /Parent 418 0 R /Prev 419 0 R /Next 429 0 R >> endobj 430 0 obj << /Title(NCurses library configuration) /A<< /S/GoTo /D(subsection.14.3.1) >> /Parent 429 0 R /Next 431 0 R >> endobj 431 0 obj << /Title(ReadLine library configuration) /A<< /S/GoTo /D(subsection.14.3.2) >> /Parent 429 0 R /Prev 430 0 R /Next 432 0 R >> endobj 429 0 obj << /Title(Predefined configuration tests) /A<< /S/GoTo /D(section.14.3) >> /Parent 418 0 R /Prev 428 0 R /First 430 0 R /Last 432 0 R /Count -3 >> endobj 432 0 obj << /Title(Snprintf configuration) /A<< /S/GoTo /D(subsection.14.3.3) >> /Parent 429 0 R /Prev 431 0 R >> endobj 418 0 obj << /Title(Autoconfiguration functions and variables) /A<< /S/GoTo /D(chapter.14) >> /Parent 11 0 R /Prev 361 0 R /First 419 0 R /Last 429 0 R /Count -3 /Next 433 0 R >> endobj 434 0 obj << /Title(Startup) /A<< /S/GoTo /D(section.15.1) >> /Parent 433 0 R /Next 435 0 R >> endobj 435 0 obj << /Title(Aliases) /A<< /S/GoTo /D(section.15.2) >> /Parent 433 0 R /Prev 434 0 R /Next 436 0 R >> endobj 436 0 obj << /Title(Interactive syntax) /A<< /S/GoTo /D(section.15.3) >> /Parent 433 0 R /Prev 435 0 R >> endobj 433 0 obj << /Title(The OSH shell) /A<< /S/GoTo /D(chapter.15) >> /Parent 11 0 R /Prev 418 0 R /First 434 0 R /Last 436 0 R /Count -3 /Next 437 0 R >> endobj 438 0 obj << /Title(General usage) /A<< /S/GoTo /D(section.A.1) >> /Parent 437 0 R /Next 439 0 R >> endobj 440 0 obj << /Title(-s) /A<< /S/GoTo /D(subsection.A.2.1) >> /Parent 439 0 R /Next 441 0 R >> endobj 441 0 obj << /Title(-S) /A<< /S/GoTo /D(subsection.A.2.2) >> /Parent 439 0 R /Prev 440 0 R /Next 442 0 R >> endobj 442 0 obj << /Title(-w) /A<< /S/GoTo /D(subsection.A.2.3) >> /Parent 439 0 R /Prev 441 0 R /Next 443 0 R >> endobj 443 0 obj << /Title(--progress) /A<< /S/GoTo /D(subsection.A.2.4) >> /Parent 439 0 R /Prev 442 0 R /Next 444 0 R >> endobj 444 0 obj << /Title(--print-status) /A<< /S/GoTo /D(subsection.A.2.5) >> /Parent 439 0 R /Prev 443 0 R /Next 445 0 R >> endobj 445 0 obj << /Title(--print-exit) /A<< /S/GoTo /D(subsection.A.2.6) >> /Parent 439 0 R /Prev 444 0 R /Next 446 0 R >> endobj 446 0 obj << /Title(--verbose) /A<< /S/GoTo /D(subsection.A.2.7) >> /Parent 439 0 R /Prev 445 0 R /Next 447 0 R >> endobj 447 0 obj << /Title(--output-normal) /A<< /S/GoTo /D(subsection.A.2.8) >> /Parent 439 0 R /Prev 446 0 R /Next 448 0 R >> endobj 448 0 obj << /Title(--output-postpone) /A<< /S/GoTo /D(subsection.A.2.9) >> /Parent 439 0 R /Prev 447 0 R /Next 449 0 R >> endobj 449 0 obj << /Title(--output-only-errors) /A<< /S/GoTo /D(subsection.A.2.10) >> /Parent 439 0 R /Prev 448 0 R /Next 450 0 R >> endobj 450 0 obj << /Title(--output-at-end) /A<< /S/GoTo /D(subsection.A.2.11) >> /Parent 439 0 R /Prev 449 0 R /Next 451 0 R >> endobj 451 0 obj << /Title(-o) /A<< /S/GoTo /D(subsection.A.2.12) >> /Parent 439 0 R /Prev 450 0 R >> endobj 439 0 obj << /Title(Output control) /A<< /S/GoTo /D(section.A.2) >> /Parent 437 0 R /Prev 438 0 R /First 440 0 R /Last 451 0 R /Count -12 /Next 452 0 R >> endobj 453 0 obj << /Title(-k) /A<< /S/GoTo /D(subsection.A.3.1) >> /Parent 452 0 R /Next 454 0 R >> endobj 454 0 obj << /Title(-n) /A<< /S/GoTo /D(subsection.A.3.2) >> /Parent 452 0 R /Prev 453 0 R /Next 455 0 R >> endobj 455 0 obj << /Title(-p) /A<< /S/GoTo /D(subsection.A.3.3) >> /Parent 452 0 R /Prev 454 0 R /Next 456 0 R >> endobj 456 0 obj << /Title(-P) /A<< /S/GoTo /D(subsection.A.3.4) >> /Parent 452 0 R /Prev 455 0 R /Next 457 0 R >> endobj 457 0 obj << /Title(-R) /A<< /S/GoTo /D(subsection.A.3.5) >> /Parent 452 0 R /Prev 456 0 R /Next 458 0 R >> endobj 458 0 obj << /Title(-t) /A<< /S/GoTo /D(subsection.A.3.6) >> /Parent 452 0 R /Prev 457 0 R /Next 459 0 R >> endobj 459 0 obj << /Title(-U) /A<< /S/GoTo /D(subsection.A.3.7) >> /Parent 452 0 R /Prev 458 0 R /Next 460 0 R >> endobj 460 0 obj << /Title(--depend) /A<< /S/GoTo /D(subsection.A.3.8) >> /Parent 452 0 R /Prev 459 0 R /Next 461 0 R >> endobj 461 0 obj << /Title(--configure) /A<< /S/GoTo /D(subsection.A.3.9) >> /Parent 452 0 R /Prev 460 0 R /Next 462 0 R >> endobj 462 0 obj << /Title(--force-dotomake) /A<< /S/GoTo /D(subsection.A.3.10) >> /Parent 452 0 R /Prev 461 0 R /Next 463 0 R >> endobj 463 0 obj << /Title(--dotomake) /A<< /S/GoTo /D(subsection.A.3.11) >> /Parent 452 0 R /Prev 462 0 R /Next 464 0 R >> endobj 464 0 obj << /Title(-j) /A<< /S/GoTo /D(subsection.A.3.12) >> /Parent 452 0 R /Prev 463 0 R /Next 465 0 R >> endobj 465 0 obj << /Title(--print-dependencies) /A<< /S/GoTo /D(subsection.A.3.13) >> /Parent 452 0 R /Prev 464 0 R /Next 466 0 R >> endobj 466 0 obj << /Title(--show-dependencies) /A<< /S/GoTo /D(subsection.A.3.14) >> /Parent 452 0 R /Prev 465 0 R /Next 467 0 R >> endobj 467 0 obj << /Title(--all-dependencies) /A<< /S/GoTo /D(subsection.A.3.15) >> /Parent 452 0 R /Prev 466 0 R /Next 468 0 R >> endobj 468 0 obj << /Title(--verbose-dependencies) /A<< /S/GoTo /D(subsection.A.3.16) >> /Parent 452 0 R /Prev 467 0 R /Next 469 0 R >> endobj 469 0 obj << /Title(--install) /A<< /S/GoTo /D(subsection.A.3.17) >> /Parent 452 0 R /Prev 468 0 R /Next 470 0 R >> endobj 470 0 obj << /Title(--install-all) /A<< /S/GoTo /D(subsection.A.3.18) >> /Parent 452 0 R /Prev 469 0 R /Next 471 0 R >> endobj 471 0 obj << /Title(--install-force) /A<< /S/GoTo /D(subsection.A.3.19) >> /Parent 452 0 R /Prev 470 0 R /Next 472 0 R >> endobj 472 0 obj << /Title(--absname) /A<< /S/GoTo /D(subsection.A.3.20) >> /Parent 452 0 R /Prev 471 0 R /Next 473 0 R >> endobj 473 0 obj << /Title(variable definition) /A<< /S/GoTo /D(subsection.A.3.21) >> /Parent 452 0 R /Prev 472 0 R >> endobj 452 0 obj << /Title(Build options) /A<< /S/GoTo /D(section.A.3) >> /Parent 437 0 R /Prev 439 0 R /First 453 0 R /Last 473 0 R /Count -21 /Next 474 0 R >> endobj 474 0 obj << /Title(Additional options) /A<< /S/GoTo /D(section.A.4) >> /Parent 437 0 R /Prev 452 0 R /Next 475 0 R >> endobj 476 0 obj << /Title(OMAKEFLAGS) /A<< /S/GoTo /D(subsection.A.5.1) >> /Parent 475 0 R /Next 477 0 R >> endobj 477 0 obj << /Title(OMAKELIB) /A<< /S/GoTo /D(subsection.A.5.2) >> /Parent 475 0 R /Prev 476 0 R >> endobj 475 0 obj << /Title(Environment variables) /A<< /S/GoTo /D(section.A.5) >> /Parent 437 0 R /Prev 474 0 R /First 476 0 R /Last 477 0 R /Count -2 /Next 478 0 R >> endobj 479 0 obj << /Title(OMakeFlags) /A<< /S/GoTo /D(subsection.A.6.1) >> /Parent 478 0 R >> endobj 478 0 obj << /Title(Functions) /A<< /S/GoTo /D(section.A.6) >> /Parent 437 0 R /Prev 475 0 R /First 479 0 R /Last 479 0 R /Count -1 /Next 480 0 R >> endobj 480 0 obj << /Title(Option processing) /A<< /S/GoTo /D(section.A.7) >> /Parent 437 0 R /Prev 478 0 R /Next 481 0 R >> endobj 481 0 obj << /Title(.omakerc) /A<< /S/GoTo /D(section.A.8) >> /Parent 437 0 R /Prev 480 0 R >> endobj 437 0 obj << /Title(Synopsis) /A<< /S/GoTo /D(appendix.A) >> /Parent 11 0 R /Prev 433 0 R /First 438 0 R /Last 481 0 R /Count -8 /Next 482 0 R >> endobj 484 0 obj << /Title(Comments) /A<< /S/GoTo /D(subsection.B.1.1) >> /Parent 483 0 R /Next 485 0 R >> endobj 485 0 obj << /Title(Special characters) /A<< /S/GoTo /D(subsection.B.1.2) >> /Parent 483 0 R /Prev 484 0 R /Next 486 0 R >> endobj 486 0 obj << /Title(Identifiers) /A<< /S/GoTo /D(subsection.B.1.3) >> /Parent 483 0 R /Prev 485 0 R /Next 487 0 R >> endobj 487 0 obj << /Title(Command identifiers) /A<< /S/GoTo /D(subsection.B.1.4) >> /Parent 483 0 R /Prev 486 0 R /Next 488 0 R >> endobj 488 0 obj << /Title(Variable references) /A<< /S/GoTo /D(subsection.B.1.5) >> /Parent 483 0 R /Prev 487 0 R /Next 489 0 R >> endobj 489 0 obj << /Title(String constants) /A<< /S/GoTo /D(subsection.B.1.6) >> /Parent 483 0 R /Prev 488 0 R >> endobj 483 0 obj << /Title(OMake lexical conventions) /A<< /S/GoTo /D(section.B.1) >> /Parent 482 0 R /First 484 0 R /Last 489 0 R /Count -6 /Next 490 0 R >> endobj 492 0 obj << /Title(Inline applications) /A<< /S/GoTo /D(subsubsection.B.2.1.1) >> /Parent 491 0 R >> endobj 491 0 obj << /Title(Expressions) /A<< /S/GoTo /D(subsection.B.2.1) >> /Parent 490 0 R /First 492 0 R /Last 492 0 R /Count -1 /Next 493 0 R >> endobj 494 0 obj << /Title(Special forms) /A<< /S/GoTo /D(subsubsection.B.2.2.1) >> /Parent 493 0 R /Next 495 0 R >> endobj 495 0 obj << /Title(Variable definitions) /A<< /S/GoTo /D(subsubsection.B.2.2.2) >> /Parent 493 0 R /Prev 494 0 R /Next 496 0 R >> endobj 496 0 obj << /Title(Applications and function definitions) /A<< /S/GoTo /D(subsubsection.B.2.2.3) >> /Parent 493 0 R /Prev 495 0 R /Next 497 0 R >> endobj 497 0 obj << /Title(Objects) /A<< /S/GoTo /D(subsubsection.B.2.2.4) >> /Parent 493 0 R /Prev 496 0 R /Next 498 0 R >> endobj 498 0 obj << /Title(Rules) /A<< /S/GoTo /D(subsubsection.B.2.2.5) >> /Parent 493 0 R /Prev 497 0 R /Next 499 0 R >> endobj 493 0 obj << /Title(Statements and programs) /A<< /S/GoTo /D(subsection.B.2.2) >> /Parent 490 0 R /Prev 491 0 R /First 494 0 R /Last 499 0 R /Count -6 >> endobj 499 0 obj << /Title(Shell commands) /A<< /S/GoTo /D(subsubsection.B.2.2.6) >> /Parent 493 0 R /Prev 498 0 R >> endobj 490 0 obj << /Title(The OMake grammar) /A<< /S/GoTo /D(section.B.2) >> /Parent 482 0 R /Prev 483 0 R /First 491 0 R /Last 493 0 R /Count -2 /Next 500 0 R >> endobj 500 0 obj << /Title(Dollar modifiers) /A<< /S/GoTo /D(section.B.3) >> /Parent 482 0 R /Prev 490 0 R >> endobj 482 0 obj << /Title(OMake grammar) /A<< /S/GoTo /D(appendix.B) >> /Parent 11 0 R /Prev 437 0 R /First 483 0 R /Last 500 0 R /Count -3 /Next 501 0 R >> endobj 502 0 obj << /Title(See Also) /A<< /S/GoTo /D(section.C.1) >> /Parent 501 0 R /Next 503 0 R >> endobj 503 0 obj << /Title(Version) /A<< /S/GoTo /D(section.C.2) >> /Parent 501 0 R /Prev 502 0 R /Next 504 0 R >> endobj 504 0 obj << /Title(License and Copyright) /A<< /S/GoTo /D(section.C.3) >> /Parent 501 0 R /Prev 503 0 R /Next 505 0 R >> endobj 506 0 obj [5 0 R/XYZ 106.87 668.13] endobj 507 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] >> endobj 510 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F1 /FontDescriptor 509 0 R /BaseFont/NNWTQN+CMR17 /FirstChar 33 /LastChar 196 /Widths[249.6 458.6 772.1 458.6 772.1 719.8 249.6 354.1 354.1 458.6 719.8 249.6 301.9 249.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 458.6 249.6 249.6 249.6 719.8 432.5 432.5 719.8 693.3 654.3 667.6 706.6 628.2 602.1 726.3 693.3 327.6 471.5 719.4 576 850 693.3 719.8 628.2 719.8 680.5 510.9 667.6 693.3 693.3 954.5 693.3 693.3 563.1 249.6 458.6 249.6 458.6 249.6 249.6 458.6 510.9 406.4 510.9 406.4 275.8 458.6 510.9 249.6 275.8 484.7 249.6 772.1 510.9 458.6 510.9 484.7 354.1 359.4 354.1 510.9 484.7 667.6 484.7 484.7 406.4 458.6 917.2 458.6 458.6 458.6 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 576 772.1 719.8 641.1 615.3 693.3 667.6 719.8 667.6 719.8 0 0 667.6 525.4 499.3 499.3 748.9 748.9 249.6 275.8 458.6 458.6 458.6 458.6 458.6 693.3 406.4 458.6 667.6 719.8 458.6 837.2 941.7 719.8 249.6 458.6] >> endobj 513 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F2 /FontDescriptor 512 0 R /BaseFont/VHONJX+CMR12 /FirstChar 33 /LastChar 196 /Widths[272 489.6 816 489.6 816 761.6 272 380.8 380.8 489.6 761.6 272 326.4 272 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 544 516.8 380.8 386.2 380.8 544 516.8 707.2 516.8 516.8 435.2 489.6 979.2 489.6 489.6 489.6 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 611.8 816 761.6 679.6 652.8 734 707.2 761.6 707.2 761.6 0 0 707.2 571.2 544 544 816 816 272 299.2 489.6 489.6 489.6 489.6 489.6 734 435.2 489.6 707.2 761.6 489.6 883.8 992.6 761.6 272 489.6] >> endobj 514 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] >> endobj 517 0 obj << /Encoding 514 0 R /Type/Font /Subtype/Type1 /Name/F3 /FontDescriptor 516 0 R /BaseFont/JSDTYV+CMTI12 /FirstChar 33 /LastChar 196 /Widths[300 500 800 755.2 800 750 300 400 400 500 750 300 350 300 500 500 500 500 500 500 500 500 500 500 500 300 300 300 750 500 500 750 726.9 688.4 700 738.4 663.4 638.4 756.7 726.9 376.9 513.4 751.9 613.4 876.9 726.9 750 663.4 750 713.4 550 700 726.9 726.9 976.9 726.9 726.9 600 300 500 300 500 300 300 500 450 450 500 450 300 450 500 300 300 450 250 800 550 500 500 450 412.5 400 325 525 450 650 450 475 400 500 1000 500 500 500 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 613.4 800 750 676.9 650 726.9 700 750 700 750 0 0 700 600 550 575 862.5 875 300 325 500 500 500 500 500 814.8 450 525 700 700 500 863.4 963.4 750 250 500] >> endobj 519 0 obj << /Filter[/FlateDecode] /Length 227 >> stream xÚeP±nà Ýû7‚dÆà1U›V‘Ú.lU”׊K$; ýû‚‰Ô¡Ó{ÇÝ{ï8\`…xt›i8JpgÐ’›v-¸§Oâ¾eJHòñæ/5¹—i saH†4žB¥>ž*™Ã9Ì!ïÃß>iò=¸ýf‡ %ïu‰ëw X«¸UkàÞ/טeØ‘×ñH3äXCµHšÒÐd;…Ë’_raÈûucSÕŸ±ÔŠ±š†§¬m{â'þo&E>æ?[ní:¿MCZnu ÓTD!Lѳ{ø4N× endstream endobj 521 0 obj << /F1 510 0 R /F2 513 0 R /F3 517 0 R >> endobj 6 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 521 0 R >> endobj 524 0 obj [522 0 R/XYZ 160.67 686.13] endobj 527 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F4 /FontDescriptor 526 0 R /BaseFont/BFJGTU+CMR10 /FirstChar 33 /LastChar 196 /Widths[277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500 500 500 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 625 833.3 777.8 694.4 666.7 750 722.2 777.8 722.2 777.8 0 0 722.2 583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 500] >> endobj 528 0 obj << /Filter[/FlateDecode] /Length 59 >> stream xÚS0Ð30PHWSî N!ún& –z–f !i zf& ºÆÆz@¾K´†‘flˆ—‚k:‰ ¥ endstream endobj 529 0 obj << /F4 527 0 R >> endobj 523 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 529 0 R >> endobj 532 0 obj [530 0 R/XYZ 106.87 686.13] endobj 535 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F5 /FontDescriptor 534 0 R /BaseFont/NMUSIP+CMBX12 /FirstChar 33 /LastChar 196 /Widths[342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7 500 562.5 1125 562.5 562.5 562.5 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 675.9 937.5 875 787 750 879.6 812.5 875 812.5 875 0 0 812.5 656.2 625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 562.5] >> endobj 536 0 obj [530 0 R/XYZ 106.87 537.52] endobj 539 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F6 /FontDescriptor 538 0 R /BaseFont/NYDLTV+CMBX10 /FirstChar 33 /LastChar 196 /Widths[350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 511.1 575 1150 575 575 575 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 691.7 958.3 894.4 805.6 766.7 900 830.6 894.4 830.6 894.4 0 0 830.6 670.8 638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 575 1041.7 1169.4 894.4 319.4 575] >> endobj 540 0 obj << /Rect[105.87 512.41 152.98 521.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.1) >> >> endobj 541 0 obj << /Rect[105.87 486.36 243.51 497.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.2) >> >> endobj 542 0 obj << /Rect[120.81 473.09 195.49 483.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.1) >> >> endobj 543 0 obj << /Rect[143.73 459.82 315.54 470.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.2.1.1) >> >> endobj 544 0 obj << /Rect[143.73 446.55 331.92 457.41] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.2.1.2) >> >> endobj 545 0 obj << /Rect[120.81 433.28 306.04 444.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.2) >> >> endobj 546 0 obj << /Rect[120.81 420.01 267.47 430.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.3) >> >> endobj 547 0 obj << /Rect[120.81 406.75 212.15 417.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.4) >> >> endobj 548 0 obj << /Rect[120.81 395.41 207.55 404.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.5) >> >> endobj 549 0 obj << /Rect[120.81 380.21 252.16 391.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.6) >> >> endobj 550 0 obj << /Rect[120.81 366.94 260.82 377.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.7) >> >> endobj 551 0 obj << /Rect[120.81 355.6 302.17 364.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.8) >> >> endobj 552 0 obj << /Rect[120.81 340.4 253.27 351.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.9) >> >> endobj 553 0 obj << /Rect[120.81 329.06 170.41 337.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.2.10) >> >> endobj 554 0 obj << /Rect[105.87 303.02 254.7 313.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.3) >> >> endobj 555 0 obj << /Rect[120.81 291.69 258.72 300.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.3.1) >> >> endobj 556 0 obj << /Rect[120.81 276.48 242.34 287.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.3.2) >> >> endobj 557 0 obj << /Rect[120.81 263.21 266.14 274.07] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.3.3) >> >> endobj 558 0 obj << /Rect[120.81 249.94 251.22 260.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.3.4) >> >> endobj 559 0 obj << /Rect[143.73 236.67 329.98 247.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.4.1) >> >> endobj 560 0 obj << /Rect[143.73 223.4 290.44 234.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.4.2) >> >> endobj 561 0 obj << /Rect[143.73 210.13 271.62 220.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.4.3) >> >> endobj 562 0 obj << /Rect[143.73 196.86 271.87 207.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.4.4) >> >> endobj 563 0 obj << /Rect[143.73 183.59 232.32 194.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.4.5) >> >> endobj 564 0 obj << /Rect[120.81 170.32 335.05 181.18] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.3.5) >> >> endobj 565 0 obj << /Rect[143.73 157.05 263.26 167.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.5.1) >> >> endobj 566 0 obj << /Rect[143.73 143.78 303.39 154.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.5.2) >> >> endobj 567 0 obj << /Rect[143.73 130.51 317.8 141.37] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.5.3) >> >> endobj 568 0 obj << /Rect[143.73 117.24 273.8 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.5.4) >> >> endobj 569 0 obj << /Filter[/FlateDecode] /Length 1271 >> stream xÚÝX]s£6}ï¯àÏÔ*HBÀcâ4Ûvš¦ÓxŸvû ŦÁàò±»ù÷½BHo;ÓIâìKˆ]8‡{Ï=W^€‚ÀÛyýáw¹þá:ò0Eqâ­ï=BQ¼eH1ŠRo}õÁ_Uå‚„~+Ô¡Yü¹þÅûqÝ/d^ŠRf­ÃCé×…‹eŠ©ÿ®Ë31®ñ‹Q€Ý;#ûºDÄh«@·7üaA_,–$Áþß]¾•/ôд¼nչݩgÁÂØ~:¼?MQ7R‚jŒàýÃcÿJ4Û:?¶9ð0†!$ íh±¤i*Q¼ùC$Ô!Ë‹1Š%à(Fal8êY )õ/º¶:ð¾É’âgâ¸XâÄe&Êí£:ÉK^<6¹•AwNÐWFˆ’Öèd ฯÕ.7¼™…çÒY¤ ;áŸ)]¦Ètf'™¯†uf_/âWµú8]#êF§¢<Óížò"çµö9o÷êüª(±Ë “ÅÌ~ÖKÖ„BžL‘§ ¥:ÑÐ/»¼Èòr§«CsàE¡p®Ô™c]íj~°1 ›Ä‰zf…Š›Ô¦š‡_y½õ‚0ÿ/±µUÞ iôdý[—ºž"L)ÂÔH1i†îº Ôwìgy ¼Tu.n åƒÈ^ùíè?™¥ˆ0YãŠ#¦9ºm÷&‰Ú=T•Ö‘¶RÅ´­Êsmó–PÙýípç‚|6³UÆÐ)Q/ŠŽxV\nWüP8râ$P zì:Ïê:É#ÈhÖ{¡±ßè.ñ:|!Œ Èž\•ÂǪUçÕÍÍLgöâ³)ôÌ‹©…Tc¿éŠ6?¬Ÿ¾FšGÕcºãQÓ:ScÈó,‡’©Í ÿÀý@ÉoUëŠf¶«2qÏ¡+3x8æo‡ŽXwŽ‚ôs²ÿ9çdÂf ¥àäñ Zÿò=®{3HC.<ÈÛ,H0`æ„~íÜž½bàd®üг¿ÑlyY> M=Ž0¯—¸sgv{" J4¦1Õ óÖlŠhUk«èçìc¼óžÎ`' äcžGûu^æÍ~@ßmùb) ¨³ô ù¶ž :mm‘Ü‚4yo¦þUUüØ <´f¢Ùç¢æõVºŸ½Ü |\@ÔïÕ5t÷þòêç?îÔ¯M¿-Xõ3wב1uýühÍwudàÒý~ĺ+ªžWyÛŠºlfš·æ›7Å3Èc°¸x@n”ý.ó’Ku™™Ñ6ËmUÊS»®î[ÕÜ0jÅ{ñit_Âyð4Ü®frÓmtnª­GÓ¾ǬEÐ#'øÿ¥‡Gfà¥)bcâ±^ËMlq0C578æ÷륃½ºËr€« –%‘º°Ä¥zT¾û× endstream endobj 570 0 obj [540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R 565 0 R 566 0 R 567 0 R 568 0 R] endobj 571 0 obj << /F5 535 0 R /F6 539 0 R /F4 527 0 R >> endobj 531 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 571 0 R >> endobj 574 0 obj [572 0 R/XYZ 160.67 686.13] endobj 577 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F7 /FontDescriptor 576 0 R /BaseFont/YQCPEM+CMSL10 /FirstChar 33 /LastChar 196 /Widths[277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500 500 500 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 625 833.3 777.8 694.4 666.7 750 722.2 777.8 722.2 777.8 0 0 722.2 583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 808.6 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 500] >> endobj 578 0 obj << /Rect[159.67 655.23 317.95 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.4) >> >> endobj 579 0 obj << /Rect[174.61 645.07 239.46 653.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.1) >> >> endobj 580 0 obj << /Rect[174.61 631.05 333.5 641.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.2) >> >> endobj 581 0 obj << /Rect[174.61 618.95 228.69 629.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.3) >> >> endobj 582 0 obj << /Rect[174.61 606.86 333.3 617.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.4) >> >> endobj 583 0 obj << /Rect[174.61 596.71 286.06 605.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.5) >> >> endobj 584 0 obj << /Rect[174.61 584.62 245.8 593.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.6) >> >> endobj 585 0 obj << /Rect[174.61 572.53 257.56 581.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.7) >> >> endobj 586 0 obj << /Rect[174.61 558.5 273.25 569.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.8) >> >> endobj 587 0 obj << /Rect[174.61 548.35 254.38 557.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.9) >> >> endobj 588 0 obj << /Rect[174.61 534.32 240.48 545.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.10) >> >> endobj 589 0 obj << /Rect[174.61 522.23 233.07 533.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.11) >> >> endobj 590 0 obj << /Rect[174.61 512.07 230.69 520.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.12) >> >> endobj 591 0 obj << /Rect[174.61 499.98 248.54 508.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.13) >> >> endobj 592 0 obj << /Rect[174.61 487.89 226.15 496.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.14) >> >> endobj 593 0 obj << /Rect[197.53 475.8 270.7 484.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.4.14.1) >> >> endobj 594 0 obj << /Rect[229.41 463.71 307.81 472.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.4.14.1.1) >> >> endobj 595 0 obj << /Rect[229.41 449.68 292.46 460.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.4.14.1.2) >> >> endobj 596 0 obj << /Rect[174.61 439.53 243.08 448.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.15) >> >> endobj 597 0 obj << /Rect[159.67 415.44 287.97 426.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.5) >> >> endobj 598 0 obj << /Rect[174.61 403.35 232.49 413.94] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.5.1) >> >> endobj 599 0 obj << /Rect[174.61 393.2 218.4 402.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.5.2) >> >> endobj 600 0 obj << /Rect[174.61 379.17 228.31 390.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.5.3) >> >> endobj 601 0 obj << /Rect[174.61 367.08 243.28 377.94] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.5.4) >> >> endobj 602 0 obj << /Rect[174.61 354.99 228.86 365.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.5.5) >> >> endobj 603 0 obj << /Rect[174.61 342.9 269.04 353.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.5.6) >> >> endobj 604 0 obj << /Rect[174.61 332.74 229.99 341.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.5.7) >> >> endobj 605 0 obj << /Rect[159.67 308.66 291.59 319.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.6) >> >> endobj 606 0 obj << /Rect[174.61 296.57 273.89 307.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.1) >> >> endobj 607 0 obj << /Rect[174.61 286.42 293.48 295.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.2) >> >> endobj 608 0 obj << /Rect[174.61 272.39 317.89 283.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.3) >> >> endobj 609 0 obj << /Rect[197.53 260.3 295.86 271.04] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.6.3.1) >> >> endobj 610 0 obj << /Rect[197.53 248.21 403.9 259.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.6.3.2) >> >> endobj 611 0 obj << /Rect[174.61 236.12 233.07 246.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.4) >> >> endobj 612 0 obj << /Rect[174.61 225.96 299.35 234.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.5) >> >> endobj 613 0 obj << /Rect[174.61 213.87 271.26 222.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.6) >> >> endobj 614 0 obj << /Rect[174.61 199.84 246.93 210.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.7) >> >> endobj 615 0 obj << /Rect[159.67 177.7 326.8 188.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.7) >> >> endobj 616 0 obj << /Rect[174.61 165.61 279.42 176.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.1) >> >> endobj 617 0 obj << /Rect[174.61 153.52 263.87 164.37] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.2) >> >> endobj 618 0 obj << /Rect[174.61 143.36 287.56 152.28] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.3) >> >> endobj 619 0 obj << /Rect[174.61 129.34 337.67 140.19] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.4) >> >> endobj 620 0 obj << /Rect[174.61 117.24 272.36 127.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.5) >> >> endobj 621 0 obj << /Filter[/FlateDecode] /Length 1556 >> stream xÚåšKsÛ6Çïý:R3B¼ÜRÇé¤SÇÓZ“KÛ,Á6ŠTIÊ÷Ó$”a¥¾Lúb=Œ] ~Ü]ü±À"iº¸]t/ß.¾Y¿zGH¶Xß,„Œ,Va>¿ý)!Ë_Öß½zÇûHp’EÚý÷ìòÃúüÃúª´8_wÎØ±3@ÎÙJ"š\^¨OK ½\a’MYlô¾©ÛO$QŶ}ƒ“ú¡h5êóà}AP ùäá3)T,V íH—+˜"”|\šŸUU¦®s]Þ!g“Ð,W4MgöSƒ7äÖÃHé`!ëÍv›·æ™`œ4eûj’ýx¿¤Ôs´ßlõψò"k²²ü#&ÝÿÓS"Rþe$!"Â@ Ç{U¥–ˆ'£ha&ihð_Nàÿ‹'¸A˜È8âÀ]í—+$½ÉTn#dÓr¼S•Ú4ºªíw6çÍ›ßeÓÛ£È œÿKûóà„ruP‡à][lŦK 3K4J’0 17U-tó¬caŒÌb‘1,˜´eÕbaËY¹Ûé¢ †&V‚›ùÖ`šÆhv´¸¢ÌWجØä‡z\^¡4Ë!™N¨¤|1×☨ÔI |¹Ù”{S?¾¶¨j½y”b)¬'KêžæEì®Øv%G壄¤rd3õ5*† Å0 ü‚Sc`(]¨Æ®Pãe¨/K½ÉŒ«R”•4ÅÈË"-¬ËkóÊ’_Mž…‘þ#“™T£ñE"ÌPÊ€è Yfg¹ªkÓ‘Áð—"$ãØ èöp¶ØÞwºÊe¶Š‘â˜Ì±xÑ% AJ=%b)Õj² ˆ×0üÅ×2Ò¨‚MLõØÚ–#$WëV¦¿Y»õû³ˆb 'M,Äbt6µQ  °´`8c ¸8¿¸ q`c€Fχ2M™™ Ã)#;åן–ˆ%úáudkMaOö4_E¸~g©[¡Œd6…öÉ­Ù`3c $O¶4q µÅ€ÚžæÇ¥¤CK±ëkºN&I>¨ÝXMú.fà†áÓmL 1`6ßhßÇÜW™mÁ5<Ö_ÉìõWˆo`†(àÐ1óíÌæ.«G°¨©ë£±³¤ôt¨³˜ØáÈù&èm^^«<&.†Ñ/E[°˜$ÃD!5ÒçhÙ˜ý‘Þ‚H) ,f`,ÆŠA ¹cå[¥ûÃu—¯ÁðbQlÜlx˜Ãæ[©?Tžµ-eíÚè×yٵݻNƧÑ.屟ǘ`FÔ8X¾“ºÕ›\U:cÃðcü¤Ì!©È–'feÎùç}¥ëºëªv§´ýqíý’É“F­ /tBGò´ÐiM°ÍtÖ ·…ÑP×ÖµMÞÈ-°öÅŽQF€0GEN—ìJ´…ùAÃâP>ò4NcH”:$^§˜íª_Y5ÃÁõ;>iœXrŸUeÑ?‰¤ 1ØÅëà÷™²,P¤³A(k“Ö±èRÒ°*}{|(âÃbð0°À1fÄQ9?êæP}L˜,!®buisS•;$3»¤’5Œ%HÑèÇþ>µÈœ|¨‹®”Ú9yqyº˜Ì~Èc‚œHܪ3Çg:ߎ®d§›»V1ñÄ}±QyÍÞát$¦ŒhJüMÖËÈ GA$ŽOÙÊÇûö®ªl«#+nàhÚ+näþjëäÕÁÝi©Ü…–£Xñgñ Ï$øiåHMqD¶ôp«Ûkd½H1z1WÅíAÝjûIV»}ÕŽ¡«/hGJ!°í4ÞKÇ«¦2¿>Êx»Ð… mŸXàfzÏÈ>œ˜|¤ ,ÔoËÆïkGêñn10ÅnQÄ.MPNŽîÝÇÎ6«Ìz[V™Ž]Þ ÜLíò–ˆIl*8 Ìañºã}£«nsánÚìÔ¾¿wC†ë|7e¥•½NñøJ_àøy\é±{Ô¤£nú^C|¯~è•b¿Ž¬Žƒñ´«½ðŠô«?âuKì endstream endobj 622 0 obj [578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R 605 0 R 606 0 R 607 0 R 608 0 R 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R] endobj 623 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R >> endobj 573 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 623 0 R >> endobj 626 0 obj [624 0 R/XYZ 106.87 686.13] endobj 627 0 obj << /Rect[143.73 655.23 336.43 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.7.5.1) >> >> endobj 628 0 obj << /Rect[120.81 643.18 234.37 654.04] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.6) >> >> endobj 629 0 obj << /Rect[120.81 633.07 197.87 641.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.7) >> >> endobj 630 0 obj << /Rect[120.81 618.54 312.93 630.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.8) >> >> endobj 631 0 obj << /Rect[105.87 598.96 150.72 607.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.8) >> >> endobj 632 0 obj << /Rect[120.81 584.98 203.65 595.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.1) >> >> endobj 633 0 obj << /Rect[120.81 572.93 244.75 583.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.2) >> >> endobj 634 0 obj << /Rect[120.81 562.83 175.67 571.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.3) >> >> endobj 635 0 obj << /Rect[120.81 550.78 195.62 559.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.4) >> >> endobj 636 0 obj << /Rect[120.81 536.8 236.55 547.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.5) >> >> endobj 637 0 obj << /Rect[143.73 526.69 207.33 535.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.5.1) >> >> endobj 638 0 obj << /Rect[143.73 514.65 210.04 523.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.5.2) >> >> endobj 639 0 obj << /Rect[143.73 502.6 205.56 511.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.5.3) >> >> endobj 640 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis] >> endobj 643 0 obj << /Encoding 640 0 R /Type/Font /Subtype/Type1 /Name/F8 /FontDescriptor 642 0 R /BaseFont/MPGSJE+CMTT10 /FirstChar 33 /LastChar 196 /Widths[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 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 525 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] >> endobj 644 0 obj << /Rect[120.81 490.56 211.45 499.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.6) >> >> endobj 645 0 obj << /Rect[143.73 476.57 399.22 487.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.6.1) >> >> endobj 646 0 obj << /Rect[143.73 466.47 202.29 475.27] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.6.2) >> >> endobj 647 0 obj << /Rect[120.81 454.42 195.54 463.23] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.7) >> >> endobj 648 0 obj << /Rect[120.81 442.38 192.63 451.18] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.8) >> >> endobj 649 0 obj << /Rect[120.81 430.33 194.85 439.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.9) >> >> endobj 650 0 obj << /Rect[120.81 418.29 185.44 427.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.10) >> >> endobj 651 0 obj << /Rect[120.81 404.3 201.27 415.16] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.11) >> >> endobj 652 0 obj << /Rect[143.73 392.26 283.13 403.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.11.1) >> >> endobj 653 0 obj << /Rect[143.73 380.21 292.54 391.07] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.11.2) >> >> endobj 654 0 obj << /Rect[143.73 368.17 294.61 379.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.11.3) >> >> endobj 655 0 obj << /Rect[120.81 356.12 307.07 366.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.12) >> >> endobj 656 0 obj << /Rect[143.73 344.08 316.31 354.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.12.1) >> >> endobj 657 0 obj << /Rect[143.73 332.03 299.84 342.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.12.2) >> >> endobj 658 0 obj << /Rect[120.81 321.93 229.3 330.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.13) >> >> endobj 659 0 obj << /Rect[105.87 297.92 183.9 308.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.9) >> >> endobj 660 0 obj << /Rect[120.81 287.81 217.35 296.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.9.1) >> >> endobj 661 0 obj << /Rect[120.81 273.83 329.57 284.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.9.2) >> >> endobj 662 0 obj << /Rect[143.73 263.72 192 272.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.1) >> >> endobj 663 0 obj << /Rect[143.73 249.74 200.58 260.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.2) >> >> endobj 664 0 obj << /Rect[143.73 239.63 193.66 248.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.3) >> >> endobj 665 0 obj << /Rect[143.73 227.59 186.49 236.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.4) >> >> endobj 666 0 obj << /Rect[143.73 215.54 183.42 224.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.5) >> >> endobj 667 0 obj << /Rect[143.73 201.56 237.99 212.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.6) >> >> endobj 668 0 obj << /Rect[143.73 189.51 190.64 199.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.7) >> >> endobj 669 0 obj << /Rect[143.73 179.41 197.62 188.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.8) >> >> endobj 670 0 obj << /Rect[143.73 167.36 193.94 176.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.9) >> >> endobj 671 0 obj << /Rect[143.73 155.32 208.6 164.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.10) >> >> endobj 672 0 obj << /Rect[143.73 143.27 226.87 152.19] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.11) >> >> endobj 673 0 obj << /Rect[143.73 129.29 205.84 139.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.12) >> >> endobj 674 0 obj << /Rect[143.73 119.18 204.78 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.13) >> >> endobj 675 0 obj << /Filter[/FlateDecode] /Length 1573 >> stream xÚåšIsÛ6€ïýѶ¾Oou„ÑuÔ>~Ž—{§"’@òhy Í ÑåñïñÑÙby²XžÏþXþ²wJ{A’N#Ø 1ýit²T›E¢9G Áí‡0€fs„(fjk¯Óê:«ÌÏÙ}z{·Îô/4.¯œÀßîã»*«ë¼,jïÌ%Ô?Ìæ ¯÷@0¡qB½3©I4¸Ã8>_•wyqm^8-.»7ŸÍq—Uã¿:R¯©¿‘:JùÕ5øC…¨$ H E8(7Ùzm‘¬ó´ÎyëvˆÁgc#LRI-§ÄrzUÜmš½rÓ¨‡ÁUe—y•­eóææIãæ&3XͰˆo²ôο”æñ5Mú÷Ø;åÛÎaåjPûNJi‰iüv³˜á@<””þž½ß1 Á2#Ø:—–¤ò#ù*w·Î@Êa©%þÒéX‰%Y›r¸J [H‡å¦¸Ì¬‹ÊŸ&&8r°Ï.\ÓÖ$C8ˆXÄâ¨í=ó´†ÊÅ@|ZÎé hh «û%,4º­³š€g÷Nз‡H%`ë»sAP§"ÎVyº6>ü23YA¦na±Ê³Pjàmµk¹ÁŒM‘ÄsG¦Ë÷³û¼nêýîWLÊGà`HéØàŽÍ;̸ºfC<”iKë—ìúÍ2&ƒT„vXˆÃòaƘJ'7YÈj¼E“²<ò5«–X<Ü”fI—"a $²•8?:X,NÞn—oÊ’³2£¸oͬ?dvFvF! Øì\Ó"½u)R½J‹"«êƒêÎäâ[Ü57Ä-Ô}»p›ÿĉ» ïQN‰ V®à’ŽÓ«ÅÑë‹ã“!õòS4¤q›ˆ@¸ËvTòЛ—g‹ßfäIOØŒ”ÜÕ\Jºeâ"’é6Žý··pRþ[Œ#ÁT?#¹¹ŠlƒN¬k&û]:Êv0b€áÁŽ?Ü¢Œe$µ ‚÷jã°Ú[‰I‚ä_bLt9æŸþdCUpêÑš«²±¡¹t¬÷DƒIÜI4zp1hçc•¦ÁÁé_ Ûµ:ÃDŽ= ‡ qeÂΓEGäì×ôOÝL¶¾åª*om¢kÍæ}Û®0é²z¨žhsðOù®7GéŒ ‚z&%`çÞÜ”…Vµ,áî«lB^|¾Ö¦ÏîòƒµU,q¯­u /ó¬J+3(Ðé¬Õ:à$ èS@|Úþû×øreÿ½ µtÆM9"y«„CÌx£¡¤ÍM¡ª¼Ú`É‹pp@\ùX9ØgÂæ¿m8 E@“kI3£9LkíÔÚuþ^™ÒÃ`^c°x«$O l¨6“šÈn`s¸É×»z¦µSåéû­¯€]Lø;ìn²Ü~dd¦”²,7©y]^ç+Ûv8,Í(y¥×Õ¦h›ð£ÆÄÊx¹¦*ׯ¶ßaËæñÇÁŽýVH[… ÊÚ|ÃjÜ5^в žð$ C)ðO” 8J®“ýµI×zÒŸØÈêQ@Bq! ×'Ö—!€§~.x¤òÓI‡‡Z<& Þ¾d½ìóºd @p‰YHù• ©09”ò4˜©ªA`¥ŠeÂ;Vܲª?æI5_˜˜s›ÚßÓMo]2¦Ö|BH°´#",‘f/¹;ÖËNøŠº5Œ¨"£‡”XHUš×¡ÿðħ訽 f¦Btþ>oB|zé燫" óºu¬‹ÜK=&Ev9ž^z+vžÑ£TLôTЕyÖ–­·tW Z’ÀQÄöB®³&@Â6ͽ5“ŠÞ!> endobj 625 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 677 0 R >> endobj 680 0 obj [678 0 R/XYZ 160.67 686.13] endobj 681 0 obj << /Rect[197.53 657.16 269.65 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.14) >> >> endobj 682 0 obj << /Rect[197.53 643.27 281.05 653.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.15) >> >> endobj 683 0 obj << /Rect[197.53 631.32 258.28 641.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.16) >> >> endobj 684 0 obj << /Rect[197.53 621.3 257.23 629.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.2.17) >> >> endobj 685 0 obj << /Rect[174.61 607.41 293.29 618.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.9.3) >> >> endobj 686 0 obj << /Rect[197.53 595.45 254.15 605.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.1) >> >> endobj 687 0 obj << /Rect[197.53 583.5 250.28 594.35] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.2) >> >> endobj 688 0 obj << /Rect[197.53 573.48 259.63 581.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.3) >> >> endobj 689 0 obj << /Rect[197.53 559.59 258.53 570.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.4) >> >> endobj 690 0 obj << /Rect[197.53 549.57 246.07 558.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.5) >> >> endobj 691 0 obj << /Rect[197.53 535.68 279.86 546.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.6) >> >> endobj 692 0 obj << /Rect[197.53 525.66 260.46 534.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.7) >> >> endobj 693 0 obj << /Rect[197.53 513.7 256.04 522.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.8) >> >> endobj 694 0 obj << /Rect[197.53 499.81 270.23 510.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.9) >> >> endobj 695 0 obj << /Rect[197.53 489.79 244.99 498.21] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.10) >> >> endobj 696 0 obj << /Rect[197.53 475.9 247.73 486.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.11) >> >> endobj 697 0 obj << /Rect[197.53 463.94 256.4 474.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.12) >> >> endobj 698 0 obj << /Rect[197.53 451.99 286.84 462.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.13) >> >> endobj 699 0 obj << /Rect[197.53 440.03 505.55 450.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.14) >> >> endobj 700 0 obj << /Rect[229.41 428.08 323.95 438.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.14) >> >> endobj 701 0 obj << /Rect[197.53 416.12 327.77 426.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.15) >> >> endobj 702 0 obj << /Rect[197.53 404.17 255.48 414.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.16) >> >> endobj 703 0 obj << /Rect[197.53 392.21 277.93 402.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.17) >> >> endobj 704 0 obj << /Rect[197.53 380.26 279.92 391.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.18) >> >> endobj 705 0 obj << /Rect[197.53 370.24 270.48 379.16] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.19) >> >> endobj 706 0 obj << /Rect[197.53 356.35 273.25 367.2] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.20) >> >> endobj 707 0 obj << /Rect[197.53 346.33 278.84 355.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.21) >> >> endobj 708 0 obj << /Rect[197.53 332.44 286.81 343.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.22) >> >> endobj 709 0 obj << /Rect[197.53 322.42 285.18 331.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.23) >> >> endobj 710 0 obj << /Rect[197.53 308.53 293.26 319.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.24) >> >> endobj 711 0 obj << /Rect[197.53 296.57 272.11 307.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.25) >> >> endobj 712 0 obj << /Rect[197.53 284.62 274.88 295.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.26) >> >> endobj 713 0 obj << /Rect[197.53 272.66 286.53 283.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.27) >> >> endobj 714 0 obj << /Rect[197.53 262.64 243.64 271.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.28) >> >> endobj 715 0 obj << /Rect[197.53 250.69 252.44 259.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.29) >> >> endobj 716 0 obj << /Rect[197.53 238.73 281.58 247.39] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.30) >> >> endobj 717 0 obj << /Rect[197.53 226.78 272.23 235.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.31) >> >> endobj 718 0 obj << /Rect[197.53 214.82 261.07 223.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.32) >> >> endobj 719 0 obj << /Rect[197.53 202.87 251.91 211.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.33) >> >> endobj 720 0 obj << /Rect[197.53 190.91 269.62 199.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.34) >> >> endobj 721 0 obj << /Rect[197.53 177.02 272.36 187.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.35) >> >> endobj 722 0 obj << /Rect[197.53 165.07 283.43 175.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.36) >> >> endobj 723 0 obj << /Rect[197.53 153.11 274.38 163.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.37) >> >> endobj 724 0 obj << /Rect[197.53 143.09 271.89 152.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.38) >> >> endobj 725 0 obj << /Rect[197.53 129.2 261.13 139.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.39) >> >> endobj 726 0 obj << /Rect[197.53 119.18 250.83 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.40) >> >> endobj 727 0 obj << /Filter[/FlateDecode] /Length 1235 >> stream xÚݚ˒£6†÷y –vÕ Ñ]b™ËLª²˜,â]f+nRnÛ¸g:OÜÇ]Y6ZÑnéÇæã×9G—ŒJ³C6\~Í~Ú½ÿ(³‚:ÛýYK´Ìr!ˆõŸùs£·_v¿½ÿhæÜBeF‡ÖŸÿ´ûði÷Gß)û°»¹ãšÈ"Ë5#–ý  “Û\K¹¹žZ×¹Ó–›ÍSÔg¬(ˆ²PD¶¹¢tÅ+6ŒQøŒŒĘF`®Ëw¨Û®y"ΡŠü½eQ¬ …¼ƒÂ*b€GôŒâi«Ô¦lñÖP²B÷é0„NaˆF1#ö5:Q’.*†PÁhA´xÄÖæ|ócÓ”}lyn·>œ‰MyÚ´îëÕ*×±ÅymàÞ4‹›÷y×7Œ³žP C˜güqʉ ”XIèRò?¿}õ£‹ùt§fÿ(µ—cÝa„b÷TÐ@B#$‘ÑG"ªÎ§ªìàú'}P6ÊÝ#›£;ºŒMìŸ>í‘3Ø EߎÑDÈ…`õTîׂ(*Ëz*P5îr,+—¿D6Õƒ@¸Ö‚P`< ‰£uÌÒ:ùÃZQ“ÔÐÂøpª~±7|º#ÂhÒçà aÑ?Ŕԯ5åéàà@¢†±P¬¼ÈAyðÂO½c)HÇ9Dãž0 :'†%†I2Â"%6Rúç\ŸJ0vN±Dñ(A¨Š|x˜‰vM}:`'öO*â l4# ˜üE18M8'Íêf›(= À@.¸¶*/ÛœÛÛ¿óWßr>Våãk}Rh3S›Šm—ÆÝ´÷¿Kx÷_°é÷T·7Bnêýâkáëñ¶µÌ?‘µämf„»/AP:­Ý/!,*î]5ÒÞ»üÚÔïÆµwZüÐŒ(½¸Ý›A0<»ÂžñþµÍÏV¿^ÏC‚èžTpBÑpI °…hò²9ŸŒ ”kÍÈ(‚÷^˜0H‹Åݨ[yÜ-*ŠÊþ@ßL…ÏÑ&ß×>idåh’Z9AùøAQׄê¶OÒÇn‘¦X)¡A!qC `"¹„”Ÿ¯rƨÒHS(Q üªßª¼Ô]y¬ÿŶ"fÝfáØYO¥†(2ÑÓ`œIHJ@µÒ¤„ÃЂ€“U¡ê½ÎõnU¶¨CfYŠ1Š˜¸‘$B|–¾m_å¥)‚±†Ä‰´oûÜvË¢wJÓs÷”²4NƧ°ÿ*C±Û>¸ãKѱ{‚)šO§\øcÚÉ endstream endobj 728 0 obj [681 0 R 682 0 R 683 0 R 684 0 R 685 0 R 686 0 R 687 0 R 688 0 R 689 0 R 690 0 R 691 0 R 692 0 R 693 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 701 0 R 702 0 R 703 0 R 704 0 R 705 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 718 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R 724 0 R 725 0 R 726 0 R] endobj 729 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 679 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 729 0 R >> endobj 732 0 obj [730 0 R/XYZ 106.87 686.13] endobj 733 0 obj << /Rect[143.73 655.23 205.86 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.41) >> >> endobj 734 0 obj << /Rect[143.73 645.16 200.3 654.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.42) >> >> endobj 735 0 obj << /Rect[143.73 633.16 201.71 642.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.43) >> >> endobj 736 0 obj << /Rect[143.73 619.23 268.43 630.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.44) >> >> endobj 737 0 obj << /Rect[120.81 609.17 193.08 618.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.9.4) >> >> endobj 738 0 obj << /Rect[143.73 597.17 189.51 605.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.4.1) >> >> endobj 739 0 obj << /Rect[143.73 585.17 196.98 594.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.4.2) >> >> endobj 740 0 obj << /Rect[143.73 573.17 248.95 582.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.4.3) >> >> endobj 741 0 obj << /Rect[143.73 559.23 233.65 569.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.4.4) >> >> endobj 742 0 obj << /Rect[120.81 549.17 233.01 558.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.9.5) >> >> endobj 743 0 obj << /Rect[143.73 537.17 191.72 546.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.5.1) >> >> endobj 744 0 obj << /Rect[143.73 523.23 201.68 534.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.5.2) >> >> endobj 745 0 obj << /Rect[143.73 511.23 206.39 522.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.5.3) >> >> endobj 746 0 obj << /Rect[143.73 499.23 300.81 510.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.5.4) >> >> endobj 747 0 obj << /Rect[120.81 487.23 244 498.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.9.6) >> >> endobj 748 0 obj << /Rect[143.73 477.17 208.63 486.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.6.1) >> >> endobj 749 0 obj << /Rect[120.81 465.17 204.09 474.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.9.7) >> >> endobj 750 0 obj << /Rect[143.73 451.23 241.34 462.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.7.1) >> >> endobj 751 0 obj << /Rect[143.73 439.23 243.08 449.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.7.2) >> >> endobj 752 0 obj << /Rect[143.73 427.23 235.59 437.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.7.3) >> >> endobj 753 0 obj << /Rect[143.73 415.23 214.17 425.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.7.4) >> >> endobj 754 0 obj << /Rect[105.87 392.69 283.62 404.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.10) >> >> endobj 755 0 obj << /Rect[120.81 383.18 192.69 392.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.1) >> >> endobj 756 0 obj << /Rect[143.73 369.24 208.63 380.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.1) >> >> endobj 757 0 obj << /Rect[143.73 357.24 208.05 368.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.2) >> >> endobj 758 0 obj << /Rect[143.73 347.18 185.91 355.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.3) >> >> endobj 759 0 obj << /Rect[143.73 335.18 219.73 344.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.4) >> >> endobj 760 0 obj << /Rect[143.73 323.18 213.06 332.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.5) >> >> endobj 761 0 obj << /Rect[143.73 311.18 218.87 319.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.6) >> >> endobj 762 0 obj << /Rect[143.73 299.18 197.84 308.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.7) >> >> endobj 763 0 obj << /Rect[143.73 287.18 214.97 296.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.8) >> >> endobj 764 0 obj << /Rect[143.73 275.18 215.3 284.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.9) >> >> endobj 765 0 obj << /Rect[143.73 263.18 224.1 272.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.10) >> >> endobj 766 0 obj << /Rect[143.73 251.18 200.63 260.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.11) >> >> endobj 767 0 obj << /Rect[120.81 239.18 196.87 248.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.2) >> >> endobj 768 0 obj << /Rect[143.73 227.18 202.79 236.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.2.1) >> >> endobj 769 0 obj << /Rect[143.73 215.18 203.1 224.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.2.2) >> >> endobj 770 0 obj << /Rect[143.73 203.18 205.92 212.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.2.3) >> >> endobj 771 0 obj << /Rect[143.73 189.24 236.66 200.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.2.4) >> >> endobj 772 0 obj << /Rect[143.73 177.24 273.47 188.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.2.5) >> >> endobj 773 0 obj << /Rect[143.73 165.24 325.39 176.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.2.6) >> >> endobj 774 0 obj << /Rect[143.73 153.24 343.21 164.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.2.7) >> >> endobj 775 0 obj << /Rect[120.81 143.18 186.1 152.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.3) >> >> endobj 776 0 obj << /Rect[143.73 129.24 351.51 140.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.3.1) >> >> endobj 777 0 obj << /Rect[143.73 119.18 218.15 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.3.2) >> >> endobj 778 0 obj << /Filter[/FlateDecode] /Length 1314 >> stream xÚåšM“£6†ïùíª Aßè˜Ùì¤6‡ÝTÅ·fLLíl~}Ȩeä$‡ÝÚ œÀX-»µ^©[$ʲä9/?%·»›;™(¤D²{J(C¹HRJ‡ËîÇ›7ÞïÞ¾ßýºým÷óÍs iŽK²±‘¾MÞîLg‰$Hâ$ådüR!ŠÞ¦‚±~m¶)‘›ºí 6}eÚ mʳlý—œn0ÁK:ÒðÅŽ™è|:”•ö¸dˆz­MŸL©xð°0žœ{xè„ç¡ÕÅï°q­£ ²ä¢¤Ç…M\ÚâôX¿ßšYK퇴<•p†‘ÌÌv ;ø¯EÒ üe¦Pž¤8.“ÇÆ]œ²ù¡-ûÃQ÷å!ˆ hð¿¸Òy´àdCÃÌ# ¹ÅØ„FyÚµíCœæöÿ3NÃÒ6s"–Ó=Y]ôíuícÔÞ Æ‘T3!j Ý™o£ÄÁù—3Ä©gþÍ}üÛáºê?—ÐfýSãxWŸ:èµP(cžÑšÂddÀ–¢k¼šp«ºweÛõé¾*ºn ƒ§—Ó¾/¯ðp=¬šÇ9&rŒäY5ø¬®†@HY]㈥5DIQH鬭EÓTŸÛ6Ð<ª}_’!‡d¨GÆ,ÐE°‰6ê)g —ôky$gÎp=ÕE’+€^è. Œv[ ÌV·- P †æusLUôRDAû8D0¹¹‹"61ŠHGwqfÄ“)“ÄTzØLëw7†›óÊknºÏ]¯Ó·uc®dc—h8•¨Àˆ(¿w¢àqEòIØ)åî jÅÇtªÒÓ‚*Žº äÀ,âO/UžH®}¼óˆQˆDMHŠ‡î ‘¹y¼D8GBÍÙ™IË¡>.V»Ó&kpýbÜF³|&¤O º—{"ðkHQœEŒŠB1&@D¦Äé—±`Þ†<€˜Œ¿h—5Ã30g;°sP)³Vç3±sêôéP MÙ0‰*;Ðáõè̯]é6”7æÑ“ÁÜ#có¦VŠ.4 }ôhˆQ]éаó›ŒC‰5-Oi3ˆÑ²ÖìÖVk¤×"8U†9KzÖ]?e†iÝ 5³¢òÞ?Ïå`/ßðÕé1ǞǕ¡Nç·žûƒñºüZ1qÕaÄL8o$¿ oü‡Ao¤DLy½~9‡.L».9ð€^–Q»¾èCeT`q™'ð:Ï%äå—Qí‘ð¾hŸu|VviÓÕp’o4¬¹’œ#¼Ÿù ¯:£ŒppçŒ]º‡AO[Ýé>P6‘Œîw³Æ‚j endstream endobj 779 0 obj [733 0 R 734 0 R 735 0 R 736 0 R 737 0 R 738 0 R 739 0 R 740 0 R 741 0 R 742 0 R 743 0 R 744 0 R 745 0 R 746 0 R 747 0 R 748 0 R 749 0 R 750 0 R 751 0 R 752 0 R 753 0 R 754 0 R 755 0 R 756 0 R 757 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R 767 0 R 768 0 R 769 0 R 770 0 R 771 0 R 772 0 R 773 0 R 774 0 R 775 0 R 776 0 R 777 0 R] endobj 780 0 obj << /F7 577 0 R /F4 527 0 R /F6 539 0 R >> endobj 731 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 780 0 R >> endobj 783 0 obj [781 0 R/XYZ 160.67 686.13] endobj 784 0 obj << /Rect[197.53 655.23 431.07 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.3.3) >> >> endobj 785 0 obj << /Rect[197.53 643.27 445.77 654.13] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.3.4) >> >> endobj 786 0 obj << /Rect[197.53 631.32 383.97 642.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.3.5) >> >> endobj 787 0 obj << /Rect[197.53 621.3 264.14 630.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.3.6) >> >> endobj 788 0 obj << /Rect[229.41 609.34 308.89 618.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.10.3.6.1) >> >> endobj 789 0 obj << /Rect[197.53 597.39 290.99 606.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.3.7) >> >> endobj 790 0 obj << /Rect[174.61 583.5 308.74 594.35] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.4) >> >> endobj 791 0 obj << /Rect[197.53 571.54 249.67 582.4] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.4.1) >> >> endobj 792 0 obj << /Rect[197.53 561.52 238.1 570.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.4.2) >> >> endobj 793 0 obj << /Rect[197.53 549.57 262.82 558.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.4.3) >> >> endobj 794 0 obj << /Rect[174.61 535.68 294.23 546.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.5) >> >> endobj 795 0 obj << /Rect[197.53 525.66 257.17 534.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.1) >> >> endobj 796 0 obj << /Rect[197.53 513.7 249.67 522.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.2) >> >> endobj 797 0 obj << /Rect[197.53 499.81 273.58 510.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.3) >> >> endobj 798 0 obj << /Rect[197.53 489.79 258.8 498.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.4) >> >> endobj 799 0 obj << /Rect[197.53 477.84 262.98 486.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.5) >> >> endobj 800 0 obj << /Rect[197.53 465.88 247.73 474.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.6) >> >> endobj 801 0 obj << /Rect[197.53 451.99 265.22 462.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.7) >> >> endobj 802 0 obj << /Rect[197.53 441.97 266.58 450.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.8) >> >> endobj 803 0 obj << /Rect[197.53 430.02 260.19 438.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.9) >> >> endobj 804 0 obj << /Rect[197.53 418.06 258.53 426.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.10) >> >> endobj 805 0 obj << /Rect[197.53 406.11 267.96 414.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.11) >> >> endobj 806 0 obj << /Rect[197.53 394.15 259.41 403.07] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.5.12) >> >> endobj 807 0 obj << /Rect[174.61 382.2 232.73 390.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.6) >> >> endobj 808 0 obj << /Rect[197.53 370.24 264.61 378.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.6.1) >> >> endobj 809 0 obj << /Rect[197.53 356.35 329.79 367.2] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.6.2) >> >> endobj 810 0 obj << /Rect[197.53 344.39 344.48 355.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.6.3) >> >> endobj 811 0 obj << /Rect[174.61 332.44 263.12 343.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.7) >> >> endobj 812 0 obj << /Rect[197.53 322.42 247.51 330.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.7.1) >> >> endobj 813 0 obj << /Rect[197.53 310.46 248.01 319.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.7.2) >> >> endobj 814 0 obj << /Rect[174.61 298.51 253.82 307.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.8) >> >> endobj 815 0 obj << /Rect[197.53 286.55 311.47 295.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.1) >> >> endobj 816 0 obj << /Rect[197.53 272.66 292.1 283.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.2) >> >> endobj 817 0 obj << /Rect[197.53 260.71 358.01 271.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.3) >> >> endobj 818 0 obj << /Rect[197.53 248.75 255.21 259.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.4) >> >> endobj 819 0 obj << /Rect[197.53 238.73 251.94 247.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.5) >> >> endobj 820 0 obj << /Rect[197.53 224.84 298.41 235.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.6) >> >> endobj 821 0 obj << /Rect[197.53 214.82 253.57 223.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.7) >> >> endobj 822 0 obj << /Rect[197.53 202.87 252.22 211.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.8) >> >> endobj 823 0 obj << /Rect[197.53 190.91 260.77 199.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.9) >> >> endobj 824 0 obj << /Rect[197.53 178.96 245.24 187.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.10) >> >> endobj 825 0 obj << /Rect[197.53 167 251.94 175.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.11) >> >> endobj 826 0 obj << /Rect[197.53 155.05 290.91 163.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.12) >> >> endobj 827 0 obj << /Rect[197.53 141.15 248.01 152.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.13) >> >> endobj 828 0 obj << /Rect[197.53 129.2 252.99 140.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.14) >> >> endobj 829 0 obj << /Rect[197.53 119.18 285.7 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.15) >> >> endobj 830 0 obj << /Filter[/FlateDecode] /Length 1422 >> stream xÚåšKsÛ6Çïý:J3%‚÷ãÚ6δ‡äßšh‹±YS¤†¤’æÛ|€XJ«¸í$c‹>q,ï‚Äÿ]»\QBéênÕ_Þ¬~¹~u%WŽ8½ºþ´²–h¹J„ ÖÿýÛŸk»ùxýÇ«+3Ypk•+Úÿ÷×wo¯_¿½~ß­^_ Ƹ&Ò­͈å½=£D±I´”ë\™¢Íê$û;oÚæç¿«ˆ¿¶i}—?ã}]í7 7ëho¾š®áÉ&‘ÎuEé£+×LH0`˜‚Ę8§PnÃs$y™ìÓöÌäôŸIµoóªL øÔÆ£àM}NáŸS!Ïi1µš=gåÁÙõmº+þÕS1?–…Cž<Ç û(uÌÆ¢u „“%MU·ÐÇ9¢,ôùOö´—þ-ϸ(K„—7£ŽhÀ¶IŒÖëžI0õ¡È€'—šÐ¹çÓM웲éÅ`10κó»~8Öç¼Ëpˆgýæ"¡¢×:óyZM:ðIIq¾~ST77yy7d¡´Ü‚ š ?>áz ˜9¹ðÒâ³!¿_€ÿà8«©ˆœt"»Ðètrç±@k+ [ÿ¨ôö”€H"£jPLûÀÌôây<ÆJRŒ•vD¸ÈjÜ»4‡›~-Ýæuƒ¬AÀk‹ÐMH>–!5$Ÿ«¼Èš¯M›í†LÓo֬߬¥Ýþbžp¼“™ s;/'Ÿ¤¢BÞÙ=x‘Ì4â÷¦rf¾”Ð:‹†SEx”JÈ8ïÛ´ER2°^`J– Ä a@;!Íx@ãi¢hæ°85Dˆ™çåâ9Ï…;€pÆsס,òò *`¿¨ âÉ‹hÆ£^•é.CÖ¤h¾Œ% E¢¡*2ŒÇb y&Z/1Ï tÆTóuwM£d´ºlÁ„·xž‡ÑÄ$6Qº=Ç$z,#ŽP,Ö°¹ÊpÄÞU}ùm‹eßÉmQÉ#$( Òa³G7þ(U]âK‰ ~‹b„ÕLãÄ‚бQ[ÊÛ´Å)ಌèB¹pI Ô¸viƒmj€ýr53*…ÐÄLšÑáòó®:”]`µ§ à°ü ª&é9LjÒáØ‰3 a}–±¶£`´Ç¥évÛ5‘¼§^ÿ•ݶ‰?žûKUçÙ¬<¡Qz6ʳÑW?e¬û# ïj*Ó”EØÎøEÛKás·,eãìÕ7goL·5†>áìOç²…ßÉ«©Ýeb j83ïël›w+ V£¾ËXjPA8aBrðD°Â °þ_­›gž=1@’Z"£‚B’¦"`¿Ä3#Öd’œ1iÈAöû»!Ä>ù­Üqewb—('‹ÉIð®*X…x{ߦå6­·3FÐëû´,³YË%´hÁϸE‹O_JÂmœþM¡ PvŸ4mÝ5'O›³ÀùÒš³k³Iå÷@ âFuhGc·ûá¶vmÙp™ ÄùÅXÎþî¯öQÕ£3õ[q^ûX¥ý4M9ÔŸEjP>–”0–jo‹ªÉ°¼Í˜7Ö ’^ÚÔEB:ÖáÆØÈ˽Ž"/3¤‡Ü/¦‡ˆrPTv×MÆí—:o1¥ó—¢Åq@)6|¼eX˜¿BÜ4äB,}ÉK¬j ì—”‰ÖOT ÔʶmVÀO™ÑÝ7 Ð|¡U%q”êÅAµÛ\ÓCsEZôXàɇ¤ÛžPÇzýþ>9jƆ½nô¼´­.¨îæHB $¶‡=¦”hýb”b 1€œøp Ðd½D>Xã^9G45Y›”Éè¦}t=`1Ǹ¸  L~úTÝ endstream endobj 831 0 obj [784 0 R 785 0 R 786 0 R 787 0 R 788 0 R 789 0 R 790 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 797 0 R 798 0 R 799 0 R 800 0 R 801 0 R 802 0 R 803 0 R 804 0 R 805 0 R 806 0 R 807 0 R 808 0 R 809 0 R 810 0 R 811 0 R 812 0 R 813 0 R 814 0 R 815 0 R 816 0 R 817 0 R 818 0 R 819 0 R 820 0 R 821 0 R 822 0 R 823 0 R 824 0 R 825 0 R 826 0 R 827 0 R 828 0 R 829 0 R] endobj 832 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 782 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 832 0 R >> endobj 835 0 obj [833 0 R/XYZ 106.87 686.13] endobj 836 0 obj << /Rect[143.73 657.16 276.24 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.16) >> >> endobj 837 0 obj << /Rect[143.73 643.27 196.15 653.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.17) >> >> endobj 838 0 obj << /Rect[143.73 633.25 204.73 642.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.18) >> >> endobj 839 0 obj << /Rect[143.73 621.3 201.46 630.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.19) >> >> endobj 840 0 obj << /Rect[143.73 609.34 198.09 618.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.20) >> >> endobj 841 0 obj << /Rect[143.73 597.39 217.49 606.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.21) >> >> endobj 842 0 obj << /Rect[143.73 585.43 197.87 594.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.22) >> >> endobj 843 0 obj << /Rect[143.73 571.54 242.97 582.4] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.23) >> >> endobj 844 0 obj << /Rect[143.73 561.52 214.58 570.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.24) >> >> endobj 845 0 obj << /Rect[143.73 547.63 247.93 558.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.25) >> >> endobj 846 0 obj << /Rect[143.73 537.61 208.35 546.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.26) >> >> endobj 847 0 obj << /Rect[143.73 523.72 242.17 534.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.27) >> >> endobj 848 0 obj << /Rect[143.73 513.7 204.23 522.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.28) >> >> endobj 849 0 obj << /Rect[143.73 501.75 196.98 510.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.29) >> >> endobj 850 0 obj << /Rect[143.73 489.79 200.91 498.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.30) >> >> endobj 851 0 obj << /Rect[143.73 475.9 205.28 486.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.31) >> >> endobj 852 0 obj << /Rect[143.73 465.88 210.82 474.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.32) >> >> endobj 853 0 obj << /Rect[143.73 451.99 209.46 462.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.33) >> >> endobj 854 0 obj << /Rect[143.73 440.03 194.82 450.39] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.34) >> >> endobj 855 0 obj << /Rect[143.73 428.08 197.87 438.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.35) >> >> endobj 856 0 obj << /Rect[120.81 416.12 224.54 426.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.9) >> >> endobj 857 0 obj << /Rect[120.81 404.17 250.97 415.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.10) >> >> endobj 858 0 obj << /Rect[143.73 394.15 280.17 403.07] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.10.1) >> >> endobj 859 0 obj << /Rect[175.61 382.2 285.76 391.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.10.10.1.1) >> >> endobj 860 0 obj << /Rect[120.81 368.3 255.12 379.16] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.11) >> >> endobj 861 0 obj << /Rect[143.73 356.35 263.48 367.2] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.1) >> >> endobj 862 0 obj << /Rect[143.73 346.33 190.89 354.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.2) >> >> endobj 863 0 obj << /Rect[143.73 332.44 196.45 342.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.3) >> >> endobj 864 0 obj << /Rect[143.73 322.42 196.48 330.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.4) >> >> endobj 865 0 obj << /Rect[143.73 310.46 194.77 319.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.5) >> >> endobj 866 0 obj << /Rect[143.73 298.51 203.46 307.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.6) >> >> endobj 867 0 obj << /Rect[143.73 286.55 190.06 295.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.7) >> >> endobj 868 0 obj << /Rect[143.73 274.6 220.31 283.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.8) >> >> endobj 869 0 obj << /Rect[143.73 262.64 201.85 271.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.9) >> >> endobj 870 0 obj << /Rect[143.73 248.75 245.3 259.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.10) >> >> endobj 871 0 obj << /Rect[143.73 236.8 294.61 247.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.11) >> >> endobj 872 0 obj << /Rect[143.73 224.84 293.89 235.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.12) >> >> endobj 873 0 obj << /Rect[143.73 214.82 205.25 223.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.13) >> >> endobj 874 0 obj << /Rect[143.73 200.93 255.76 211.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.14) >> >> endobj 875 0 obj << /Rect[143.73 188.98 243.72 199.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.15) >> >> endobj 876 0 obj << /Rect[143.73 177.02 256.23 187.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.16) >> >> endobj 877 0 obj << /Rect[143.73 167 209.68 175.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.17) >> >> endobj 878 0 obj << /Rect[143.73 153.11 267.83 163.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.18) >> >> endobj 879 0 obj << /Rect[143.73 141.15 220.56 151.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.19) >> >> endobj 880 0 obj << /Rect[143.73 129.2 205.38 139.94] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.20) >> >> endobj 881 0 obj << /Rect[143.73 117.24 260.13 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.21) >> >> endobj 882 0 obj << /Filter[/FlateDecode] /Length 1375 >> stream xÚåšKsÛ6Çïý^F߯ž½Ð‘!FE«›ˆ ’ª(æÜ?V?ü¶xþöÍêêÍêýòÕÏ^ˆq!O‰QÒ.2þÓèjåœEšM£XQ’²öCš”PµŒ©‹Æî㼨WelmßW˘éÅÚ,ÑDkè„,c™$_ø!ŒùÛ•©XPÉNãÕÜÿÇc¼º‹w·ÝµáÁè(OL>óoOåqŽQ*‰†šH;F÷w¿3©oªQJ -fÆãlŒ& êÇ÷Kaó=Bf\?+2ü” M Q|DÃ’MÑ%Ž|ÉÔâîÙ_ÀpŽ CÅ(‘)@E;T¯K»ÿn½®!$ɉ”Ét!µ<ÂÃÕ1 ¥Ã:¯ªf f\>GÁ`€„$ †w€6vë]/ÝûXf÷AùÒŠhØN‚ÖYRE":ïêjß§˜ª€ñ»¸ÓÀlòb9‹F @#yì<\©ð»õ?ùõœ>¥„ }ßþ·õ‡mn‘¢ ,fU•%Çp 4ô Æñùtæm§“9,‘.[}CÛÀÎdÉÒ…Å:8`=w±0ª]G @õÝíõ¶\#u,ŸcV fJâÇwÛìm‰‰g4˜•x06‚ Ðô=m–çv‡î«aýìɸÞE<¢éÛÛ¼*Ë'Sc׳ƒyô,‰Œýlî+ÒmV#TÔœh‰«»Rc­ÆÒï¸|Žé”¦”'Þ·¹7ç ËçÎG¿Ax’ƒW»%cn<Ú–~Kí·åfsÎ7‡2ßo«2@¦¨oõ ‹)xò¥žãBI‡ÒD]Ív\~]ºtë¡ðÅîó0õ3ð8™)=ÝIœ ¢Õˆ„ôÕúçm“Û¢ÈJ[šŽ ÆQI$ Ü|ý-v+M„?3sQ(4և˔ê®9º‚ãJqÛÒbaŽ.0Ì^ä"%jüFi+òWÛÍ­­ãÂ~ðAÚ¢Söë·þ)p…ææ£ÀÝ…&ϳÒV Qã·MÒþÅn…ë+ZQÛÇ]m›æ©¬]öKxàâÒ‚?µ{J ¢>ö˜YÐ_2·J«ÿ…»¶ ­Š"˜|gÓ±ñ¬íé Àò¶( £ˆ€:ê{Ð&ÏJ иüH$)PA}šù ûp‡0sd„Üo æ"‡"êOdošÃuƒƒ9(äŒMpæÆ]À¦?-ì#’¨Áê'j “¾1¥¦¸±YÝumÈE)0œ8äÐDHEO@û“}´5¶¯Æõ³ÚWÈÙ€PþMØö%K.e¦í{ï³þtÉÏx§×ÀÃd®;Ò ŠÔÅEâ†OâêqoËõ0ßG0|±¶þÍžr{2æqJ’Ðã~mëŸêf•ÄÀ@Yèê¶¶Ùèþ¶Ÿñ‡ˆÅ¢ºv~åâÏðøuˆwtüß¼­†Ä‹¼«'Ý<›/oã}ç﮲ºAS0šU Àø¸qÝz-ŸçYQœªawB¬}› }5Ò›J¦‰ " òª;ìªÃ7&úDÜL&¢8¸!i …%ÂNØ!p05%H×1JÐ@ Mó°>½_6³¸bÑÈë›Rq4 i‹Å¿(ãÉ<”Ùý·*º_¹‘î°]#GD££K> endobj 834 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 884 0 R >> endobj 887 0 obj [885 0 R/XYZ 160.67 686.13] endobj 888 0 obj << /Rect[197.53 655.23 260.27 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.22) >> >> endobj 889 0 obj << /Rect[197.53 643.18 397.34 654.04] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.23) >> >> endobj 890 0 obj << /Rect[197.53 631.14 288.5 641.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.24) >> >> endobj 891 0 obj << /Rect[197.53 619.09 425.01 629.95] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.25) >> >> endobj 892 0 obj << /Rect[197.53 607.05 302.33 617.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.26) >> >> endobj 893 0 obj << /Rect[197.53 595 287.58 605.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.27) >> >> endobj 894 0 obj << /Rect[159.67 574.87 257.51 583.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.11) >> >> endobj 895 0 obj << /Rect[174.61 560.89 278.18 571.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.1) >> >> endobj 896 0 obj << /Rect[174.61 548.84 239.45 559.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.2) >> >> endobj 897 0 obj << /Rect[174.61 536.8 272.25 547.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.3) >> >> endobj 898 0 obj << /Rect[174.61 526.69 265.86 535.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.4) >> >> endobj 899 0 obj << /Rect[174.61 512.71 238.74 523.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.5) >> >> endobj 900 0 obj << /Rect[174.61 502.6 295 511.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.6) >> >> endobj 901 0 obj << /Rect[174.61 488.62 240.58 499.36] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.7) >> >> endobj 902 0 obj << /Rect[174.61 478.51 315.31 487.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.8) >> >> endobj 903 0 obj << /Rect[174.61 466.47 297.74 475.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.9) >> >> endobj 904 0 obj << /Rect[197.53 454.42 250.5 463.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.9.1) >> >> endobj 905 0 obj << /Rect[197.53 442.38 241.37 451.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.9.2) >> >> endobj 906 0 obj << /Rect[174.61 430.33 323.73 439.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.10) >> >> endobj 907 0 obj << /Rect[197.53 416.35 248.9 427.2] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.10.1) >> >> endobj 908 0 obj << /Rect[197.53 404.3 241.92 415.16] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.10.2) >> >> endobj 909 0 obj << /Rect[197.53 392.26 239.43 403.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.10.3) >> >> endobj 910 0 obj << /Rect[197.53 380.21 249.73 390.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.10.4) >> >> endobj 911 0 obj << /Rect[197.53 370.11 249.95 378.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.10.5) >> >> endobj 912 0 obj << /Rect[197.53 358.06 244.97 366.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.10.6) >> >> endobj 913 0 obj << /Rect[174.61 344.08 277.93 354.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.11.11) >> >> endobj 914 0 obj << /Rect[197.53 332.03 261.65 342.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.11.11.1) >> >> endobj 915 0 obj << /Rect[159.67 309.97 283.31 320.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.12) >> >> endobj 916 0 obj << /Rect[174.61 297.92 278.18 308.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.12.1) >> >> endobj 917 0 obj << /Rect[197.53 285.88 261.02 296.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.1) >> >> endobj 918 0 obj << /Rect[197.53 273.83 251.05 284.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.2) >> >> endobj 919 0 obj << /Rect[197.53 263.72 266.58 272.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.3) >> >> endobj 920 0 obj << /Rect[197.53 251.68 244.14 260.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.4) >> >> endobj 921 0 obj << /Rect[197.53 239.63 254.51 248.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.5) >> >> endobj 922 0 obj << /Rect[197.53 225.65 270.98 236.4] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.6) >> >> endobj 923 0 obj << /Rect[197.53 213.61 256.64 224.35] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.7) >> >> endobj 924 0 obj << /Rect[197.53 201.56 258 212.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.8) >> >> endobj 925 0 obj << /Rect[197.53 191.45 248.15 200.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.9) >> >> endobj 926 0 obj << /Rect[197.53 179.41 251.47 188.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.10) >> >> endobj 927 0 obj << /Rect[197.53 165.42 259.94 176.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.11) >> >> endobj 928 0 obj << /Rect[197.53 155.32 254.1 164.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.12) >> >> endobj 929 0 obj << /Rect[197.53 143.27 247.87 152.19] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.13) >> >> endobj 930 0 obj << /Rect[197.53 131.23 245.69 140.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.14) >> >> endobj 931 0 obj << /Rect[197.53 119.18 267.38 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.15) >> >> endobj 932 0 obj << /Filter[/FlateDecode] /Length 1358 >> stream xÚåšKÛ6Çïý:Ê@ÍðMêT4›lÐÝ]==ȶÖVcK[YN“oR”Ì‘3î#‡b­=i Ï«ÿó é„J“MÒ=Þ$//ne’‘L'‹‡ÄZ¢e2‚X÷ùÕo)£³ßo_Üš“ ·†P™Ðîë›ww‹×w‹{o”¼^œÆ¸&2KæšËûác„ó™P*m7E{h›è›°ÌYJè@fs™eþ¡(½â‡•)3¾jÏÆÔѱùÔÍ~^VùãlÎMZÌ—îiÓbSVßÏ܉3÷Õ¼¨Ö`!ÜhÎð?¼ŽU$ƒo#ñ·žœs¿ØÑóI/ä™/rÈ É$¡:M½lçe5s ö±<”Ë]XYWXé“ÕÙâ*Iƒó|Û:Š ÿ?£.ˆG+©/¾\La‰à#÷§Á9YR˜€ËYm¹/ê‡uî|F” \¯NË fr}^˜”„öª`N«Š¦÷Ûb·s:%­êý>¯Ö€D2E¨;s¡ZPA”·Uš°ž<#nÅyz_îÒºð@æáÃ<Ñ÷ +G·Šq@¢-af@Â’7»z¹,« ´7š9²¿úÊy9oYŒ”¥„³”¤^櫙˰6M}tY´Ñõr$ jˆ#ÿëm=:¡t2îù@G:·åXM±.›bÕ–u5jʲsçéê‡SIN¹G@ï˾ÁÚ•UEãÃLCŸ©t«ÿMUœuY§‡¦´›ºZ—^Iù.ˆ«øT¬ŽgÒâ‚eF#\ÂE†¡à®ÿ± Ó'j—vñD ì'œ¨QR’ÉR6úu›·A-åÁ?eš‡‡¾ËˆÕÿ(#© Õ£1ŸLWõo…£8‘§Ìœ uëP®Â[/å®u]wåáXuIú€…RèjBÉR¤çºÛá D|#¨¥L‹®”okèa»æz|Óâ\#$—G”Šx€´Zc¹&ÚN7׌) Áå¶/*;í(¨«æ<}[/‡„Òí³Û¦î2 ‡±&ðXS‚X6÷©i«S C#(%:+·;;˜æS ¦$Ä8ÑâÐ+àÀxÂA…bâ’0‰€éÅŸ&¡‰Ñ“ ˜mýˆÅ[46ñ&-± €þòu>/[ ÒÉãÙ0ÒÔ_ŒDH:@úPº¶ ·hþ\­/õÂpb£šXWêo–!ôméB¯ùŒß+=<ĵã¢&ãÉPñ¿1\¿)Ý¿A:Èᶤšd½tx8Ü^l‹p´}h~òf>ùÎQ»–©XµØa7ÈŠ¿?ì–,;]3ðá°û½O}Eóq¦Tê¶€ýECqÍ©Ÿ[靿4 Æ»V DÃR0BÍ Ó°|a 2N“’1 H ÚP¿ü9Çš `<ÅŠ]çI¥S‘|îŽ{ký lƒœzÇiTM…Ñц°,Ò‘ÎO•‡Ó" p˜pƒ¢2á1aûnÕ£ºÝÕ9Öªó)†JÈ¥_n#!Ý‹jU —nÀãÊÏè4ÂC¹R/xäa›&÷á…5`ÀeR•Ë`x\ç"tÄc{¹´ÍÙ•ÉÀ&ÚOŸ 7DF4YŸkf–§Ç É6Ñ~ŠÉ%$2""¸ë77¿G¿K:ŠæS¼"@ )柑P¿ý[xåͦÀZgà4ý Ón+*:ëÏ{ïêîÖê(úLQGÃd”¿`Œ˜úóÞîç#¡h>Å\”a„¬!ìÁXÔûªlXO¸…F9¹­•{1ÖŸøÞlóª*vÈ& xL Ëw_Åujì endstream endobj 933 0 obj [888 0 R 889 0 R 890 0 R 891 0 R 892 0 R 893 0 R 894 0 R 895 0 R 896 0 R 897 0 R 898 0 R 899 0 R 900 0 R 901 0 R 902 0 R 903 0 R 904 0 R 905 0 R 906 0 R 907 0 R 908 0 R 909 0 R 910 0 R 911 0 R 912 0 R 913 0 R 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R 929 0 R 930 0 R 931 0 R] endobj 934 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R >> endobj 886 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 934 0 R >> endobj 937 0 obj [935 0 R/XYZ 106.87 686.13] endobj 938 0 obj << /Rect[143.73 657.16 222.72 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.16) >> >> endobj 939 0 obj << /Rect[143.73 645.16 230.74 654.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.17) >> >> endobj 940 0 obj << /Rect[143.73 633.16 215.66 641.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.18) >> >> endobj 941 0 obj << /Rect[143.73 619.21 221.19 629.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.19) >> >> endobj 942 0 obj << /Rect[143.73 607.21 258.69 617.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.20) >> >> endobj 943 0 obj << /Rect[143.73 595.21 273.78 606.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.21) >> >> endobj 944 0 obj << /Rect[143.73 585.14 198.64 594.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.22) >> >> endobj 945 0 obj << /Rect[105.87 563.14 263.16 572.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.13) >> >> endobj 946 0 obj << /Rect[120.81 549.2 252.36 560.05] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.1) >> >> endobj 947 0 obj << /Rect[120.81 537.19 246.6 548.05] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.2) >> >> endobj 948 0 obj << /Rect[143.73 525.19 232.04 536.05] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.2.1) >> >> endobj 949 0 obj << /Rect[143.73 515.12 241.06 524.04] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.2.2) >> >> endobj 950 0 obj << /Rect[143.73 501.18 233.65 511.77] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.2.3) >> >> endobj 951 0 obj << /Rect[143.73 491.11 269.43 500.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.2.4) >> >> endobj 952 0 obj << /Rect[120.81 477.17 292.29 488.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.3) >> >> endobj 953 0 obj << /Rect[143.73 465.17 405.86 476.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.3.1) >> >> endobj 954 0 obj << /Rect[143.73 453.17 203.65 463.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.3.2) >> >> endobj 955 0 obj << /Rect[143.73 441.16 252.96 452.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.3.3) >> >> endobj 956 0 obj << /Rect[143.73 429.16 256.62 440.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.3.4) >> >> endobj 957 0 obj << /Rect[143.73 419.09 194.24 428.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.3.5) >> >> endobj 958 0 obj << /Rect[143.73 407.09 199.75 416] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.3.6) >> >> endobj 959 0 obj << /Rect[120.81 395.08 231.54 404] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.4) >> >> endobj 960 0 obj << /Rect[143.73 383.08 217.54 392] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.4.1) >> >> endobj 961 0 obj << /Rect[143.73 369.14 250.25 379.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.4.2) >> >> endobj 962 0 obj << /Rect[120.81 357.13 261.54 367.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.5) >> >> endobj 963 0 obj << /Rect[143.73 345.13 298.1 355.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.5.1) >> >> endobj 964 0 obj << /Rect[175.61 333.12 294.72 343.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.1.1) >> >> endobj 965 0 obj << /Rect[175.61 323.06 246.96 331.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.1.2) >> >> endobj 966 0 obj << /Rect[143.73 309.12 331.86 319.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.5.2) >> >> endobj 967 0 obj << /Rect[143.73 299.05 253.03 307.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.5.3) >> >> endobj 968 0 obj << /Rect[175.61 285.11 393.24 295.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.3.1) >> >> endobj 969 0 obj << /Rect[143.73 273.1 330.04 283.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.5.4) >> >> endobj 970 0 obj << /Rect[175.61 261.1 368.42 271.95] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.1) >> >> endobj 971 0 obj << /Rect[175.61 249.09 413.81 259.95] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.2) >> >> endobj 972 0 obj << /Rect[175.61 237.09 423.33 247.95] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.3) >> >> endobj 973 0 obj << /Rect[175.61 225.09 426.18 235.94] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.4) >> >> endobj 974 0 obj << /Rect[216.45 213.13 261.68 223.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.4) >> >> endobj 975 0 obj << /Rect[175.61 201.13 263.48 211.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.5) >> >> endobj 976 0 obj << /Rect[175.61 189.12 286.17 199.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.6) >> >> endobj 977 0 obj << /Rect[175.61 177.12 290.93 187.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.7) >> >> endobj 978 0 obj << /Rect[175.61 165.11 371.94 175.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.8) >> >> endobj 979 0 obj << /Rect[175.61 153.11 432.65 163.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.9) >> >> endobj 980 0 obj << /Rect[216.45 141.15 427.17 152.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.9) >> >> endobj 981 0 obj << /Rect[216.45 129.2 432.29 140.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.9) >> >> endobj 982 0 obj << /Rect[216.45 119.18 236.78 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.5.4.9) >> >> endobj 983 0 obj << /Filter[/FlateDecode] /Length 1457 >> stream xÚÝYMsÛ6½÷WðHMBÄ'qld;u'3µÒºÓö@KŒÌV¢4•‰ÿ}±ØÌ$Cú$ŠÀ.÷=.ÞËÅë ùy¼Z\\‹@Æ’‹¡qʃˆý³¸ü=œß¾]\½]ÜÍþ\üxqM»‰j çj&%‰®Ê[ p,’ âIœb3Šã$Nø,J( oÊùcV–ùƱH‰sMâYD¥Ô? ¡Iý¤4LRyN‡ aè¸=Ö>Xº6S€Þ{aCD¤ ‘"Þìfá2«‹]érAÕ|×jº©á#Ñ91R@b¤!æêÓ2ß÷I± ¦3™ö‚ñÑ‘ øÀÈðñ󱜩D©‹mî¥Fâ§À|¤Ü ÇP9qb€¿op?‹Í*{ØxÁc$b!€‹oºæ¿.ʈ±{÷˜o€(8òRàaÈ©¤×¼_—Ö©'™E„Êð•Nu©¬?˥ΈƒþK¬\™‹c]lŠºÈÄÖ×£dîûZO¥–à„wEb•” ãæéuQªçÆï~¸}û›¹®³j×ƌ?c«Yž÷áPÒò ¤Ã6<Üî[âIK¼ºø8Ã<Ì«ƒ*ʵ˅à±À×$’¹¡„{±L\Ntvp½»ù)û[‹V~½ÉÖ ¸ŒvSZÌC4`D ¸GÃ/3µM>x’Á±žt2à„ˆaa¹ÝG|éàXN.„‡,Ôq™ÿ™(óùn»URÑ$EV@W‡3Œ3ÌF1qÅ‘q¼ú”m‹FMixÌÍÅ*ß«Mæå*/—OææºÊö.XQÇç1¾jæ iÐ ¡ªÀ/5HÚC®îGÙfóÒÇŠÛW;ë¦r+¸"„rðhO¼d ^N@¼V©LÕ»®4F Ì6Û-MMê¡F("5V¾š5»Ššýw4¼»q¬'°»ñÁO€oEKå 2bá_ù²ŽVE¥~vÜR¶G/ÇØ^žÞ–`g{uÜäž“ˆ3û9žD<ü$üpÃO³&<9ÓŸAªFŸU?¢jUÇ5ÕoÑ–»Ó6°2½®]mîke fÏfŽ» ‘Ó¾ç3ŽÚ$"®¾Ò¶TÚmP¡{O¯Ë1›t³ËÏ €[Žïžu¾mÏ’J}}üØÂã¸}áñ®æj/ëÚ «ÓÆqŽ×4œ¿xaî,wÍŽi•{ª‘ãw¼Õ#Ï"\µeíBùþXÛ^ù®ÔÒ±>V¦iÞp2”&˜$1‚N¿Mßï_°&H¥¯~M)`5\Áyø¾,>E›Â(§y݇fYxÑ¥dœè$ë¡ÃݯEI°§àL¥€>ÏaŠn…mÞk”Ù•L}9=,}˜cð„¯ÅÔ ¸DI íÀÙ“Âë¼ÌUøù ¨–©ò>åvÜŒô[žËñ¤7UËÑ.Þù‰‹ëbcO¿Ä|ëKÃe¶é»§[µ÷‘¸þO……x^% :{¢ñÖuÌYWÙö`²ñ”ŸoЇ*ëwLöu¾¿jöQëºuïâjY¿«ÕâYÎMÐO–ô˧2Ûvw]ªŠþ¾Ëp ºãž@绽ù€ÛQ7pµåÁ ðßßzòñ…sSê®+ӋƺÁ0K¼ÿs2éEAA·Êš7çm‚‚~>pâDmû“¢æ™iqŒÔALŦŸ¥Í΃o7K ]~ƾYb>YÂÚÐ-ŸÌjÐ;³¦=ýUÇf„ýÕœXôprˆÓ³PÚªc;JhDö  í> endobj 936 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 985 0 R >> endobj 988 0 obj [986 0 R/XYZ 160.67 686.13] endobj 989 0 obj << /Rect[174.61 655.23 293.76 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.6) >> >> endobj 990 0 obj << /Rect[197.53 643.18 455.7 654.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.6.1) >> >> endobj 991 0 obj << /Rect[197.53 631.13 436.33 641.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.6.2) >> >> endobj 992 0 obj << /Rect[197.53 619.08 330.53 629.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.6.3) >> >> endobj 993 0 obj << /Rect[197.53 607.03 305.3 617.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.6.4) >> >> endobj 994 0 obj << /Rect[197.53 596.92 334.37 605.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.6.5) >> >> endobj 995 0 obj << /Rect[229.41 582.93 479.97 593.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.5.1) >> >> endobj 996 0 obj << /Rect[270.25 572.91 292.65 581.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.5.1) >> >> endobj 997 0 obj << /Rect[229.41 558.93 479.97 569.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.5.2) >> >> endobj 998 0 obj << /Rect[270.25 546.97 360.64 557.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.5.2) >> >> endobj 999 0 obj << /Rect[197.53 534.92 382.2 545.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.6.6) >> >> endobj 1000 0 obj << /Rect[229.41 522.87 335.82 533.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.6.1) >> >> endobj 1001 0 obj << /Rect[229.41 510.82 337.98 521.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.6.2) >> >> endobj 1002 0 obj << /Rect[229.41 498.77 358.51 509.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.6.3) >> >> endobj 1003 0 obj << /Rect[229.41 486.73 363.27 497.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.6.4) >> >> endobj 1004 0 obj << /Rect[229.41 474.68 341.08 485.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.6.5) >> >> endobj 1005 0 obj << /Rect[229.41 462.63 363.77 473.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.6.6) >> >> endobj 1006 0 obj << /Rect[229.41 450.58 368.53 461.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.6.6.7) >> >> endobj 1009 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F9 /FontDescriptor 1008 0 R /BaseFont/NMLYUE+CMR7 /FirstChar 33 /LastChar 196 /Widths[323.4 569.4 938.5 569.4 938.5 877 323.4 446.4 446.4 569.4 877 323.4 384.9 323.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 569.4 323.4 323.4 323.4 877 538.7 538.7 877 843.3 798.6 815.5 860.1 767.9 737.1 883.9 843.3 412.7 583.3 874 706.4 1027.8 843.3 877 767.9 877 829.4 631 815.5 843.3 843.3 1150.8 843.3 843.3 692.5 323.4 569.4 323.4 569.4 323.4 323.4 569.4 631 507.9 631 507.9 354.2 569.4 631 323.4 354.2 600.2 323.4 938.5 631 569.4 631 600.2 446.4 452.6 446.4 631 600.2 815.5 600.2 600.2 507.9 569.4 1138.9 569.4 569.4 569.4 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 706.4 938.5 877 781.8 754 843.3 815.5 877 815.5 877 0 0 815.5 677.6 646.8 646.8 970.2 970.2 323.4 354.2 569.4 569.4 569.4 569.4 569.4 843.3 507.9 569.4 815.5 877 569.4 1013.9 1136.9 877 323.4 569.4] >> endobj 1010 0 obj << /Rect[174.61 438.32 285.48 449.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.7) >> >> endobj 1011 0 obj << /Rect[197.53 426.48 332.53 437.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.7.1) >> >> endobj 1012 0 obj << /Rect[197.53 414.22 347.25 425.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.7.2) >> >> endobj 1013 0 obj << /Rect[229.41 404.32 346.42 413.13] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.7.2.1) >> >> endobj 1014 0 obj << /Rect[229.41 390.33 468.63 401.19] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.7.2.2) >> >> endobj 1015 0 obj << /Rect[229.41 378.28 369.11 389.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.7.2.3) >> >> endobj 1016 0 obj << /Rect[229.41 368.17 373.87 377.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.13.7.2.4) >> >> endobj 1017 0 obj << /Rect[159.67 344.16 386.9 355.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.14) >> >> endobj 1018 0 obj << /Rect[174.61 332.11 393.78 342.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.14.1) >> >> endobj 1019 0 obj << /Rect[197.53 320.06 382.81 330.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.1.1) >> >> endobj 1020 0 obj << /Rect[197.53 308.01 362.39 318.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.1.2) >> >> endobj 1021 0 obj << /Rect[197.53 295.96 369.8 306.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.1.3) >> >> endobj 1022 0 obj << /Rect[197.53 283.91 385.91 294.77] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.1.4) >> >> endobj 1023 0 obj << /Rect[197.53 271.86 277.65 282.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.1.5) >> >> endobj 1024 0 obj << /Rect[197.53 259.81 400.63 270.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.1.6) >> >> endobj 1025 0 obj << /Rect[197.53 247.76 368.2 258.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.1.7) >> >> endobj 1026 0 obj << /Rect[197.53 235.71 278.62 246.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.1.8) >> >> endobj 1027 0 obj << /Rect[174.61 223.66 326.13 234.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.14.2) >> >> endobj 1028 0 obj << /Rect[174.61 211.62 329.34 222.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.14.3) >> >> endobj 1029 0 obj << /Rect[197.53 199.57 360.59 210.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.3.1) >> >> endobj 1030 0 obj << /Rect[197.53 187.52 365.43 198.37] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.3.2) >> >> endobj 1031 0 obj << /Rect[197.53 175.47 327.21 186.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.14.3.3) >> >> endobj 1032 0 obj << /Rect[159.67 155.33 250.27 164.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.15) >> >> endobj 1033 0 obj << /Rect[174.61 141.34 232.76 152.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.15.1) >> >> endobj 1034 0 obj << /Rect[174.61 131.23 229.8 140.15] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.15.2) >> >> endobj 1035 0 obj << /Rect[174.61 117.24 277.93 127.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.15.3) >> >> endobj 1036 0 obj << /Filter[/FlateDecode] /Length 1661 >> stream xÚÕYKsÛ6¾÷WðHÍD0‰7ŽŽb'é(N&VÛtšh‰’9‘) )yêß’ ÙNÆ–å‹$±Øoßî‚A„¢(XÕ×ûàíääœ )L攈Ó`H’ðÿÝ?aŒÿN~?9Í#X Ñ ªn>_LÎ.&—ú¡àl²#-Žb2òIlÄÄC†qøv›-gY¾Àf$üÏbÞý–„ï®%±±¤&çàª)¬†È™e%*¨S·ú#ÕYÅH®ææö¢3ýWSdE…ÕÒm¡ëÞŽ™ g麪~i>Kó©MÕ$O–weÖ1¿Âˆé•š,é/›ÿ—3[Û/Ž|y'qÇ~ÜäÝeSê7שɸOi~Ùª°NŠ2µ¿­í `8E!fHÈŽø§ó´:4E1u u’¬&×>ƒ´Ë^:\p±TNKvÀ}`&ÓÆƒŸ‹´ÔqÌ@c‰0q’¾G«µF|çÉ8gýaRÍ„}€ 7ÆÂDû€>æå&Y.ÝŒŠ`™ê,?L©ß„bÝy8@˜‚ÅjQ$7®G„Ð¥Ç]÷‚ÍÊ~XŒ"ÒñïÃò\ã výK;ˆClÅ.ÑGrO¤µË_ ˆG±ˆ6è ¤T„c3öª€#%ô,Ëa¡®«í©¹ßκà$±¾?©¶…¡KcÍÿgíÅæÚ7SôêÁ o(yQWÙW1ôz|@<V0Ò7.¨GàGŒ“ýºÓH:ŽÝ —DXÏ ^;>?t‚"õT1Gwb‡3;loÒ\w±›ÒîŽâ/Í®ÔÃI$¦ˆ;f­{²q2H¦ßޙ㤤c#ä(!Bqêb´­™E¨»²Þˆ§ófl¡'˽O:ÛQ i¥:Û¹Ú‘}Ú‰¸rµ#y *vÒ[ìi¬^\,B‚¸¸èC¸|¥¦IÒv`<'ç¼w¸+`t7À¨fúà÷ù6Ÿê¥ùkÊ`ŸÛ'>Z¦¶pµû@)»ÿ€Ä!iÙ‘êÖÙDêr¸Þ늨Vejâ{J[}G`RÑ¢³Ñ“ÇWezæã~Å‘T :§ÖÍ?•‹Ñu:ÕáóÊ€M\{çkZn—Ïì|Ö)؆BH+Ú‚Á0éÔHŠü©0öêYQt¦ùz–rdþôÂwRLqÅ 8Ò÷w•÷åŪ‹î\_^m!-ú|æ< Ÿy¡¢©¨fÏ„+.Ó¯>ŠOG™½:Îò;—¾nó‘'"éÏ‘^d´â›™=êÕšê™Ä»H B:+^aKý =´Ó¸µ‡=‚kxfô!Mfia¹æÏpzZ\Uµ v÷1×Ù$ÖGîO Gøà@—‹ŽØ…3ήÄÏø²³}Àìô‚”`ZÇgrän Ûë,{­³¡ðÌçT„ym lÚC@I^ê7†æüüä\6­„`zf2ï¬t­Á¼7/1sûL9-²õ¦÷šwv?£î5‹"qm*bLõ¥Hg©nŒòúE—§Q¢á&-½pd—|/:Y œÞ´Ž¤n®.FÛ¢4/ŸI¸l_|Òž)úm‰#òðm‰#Vˆ¶mËõø*túSkêkEù¼Ø(ô"ŽÿlËu™¯‹ÌŒUs÷ßÏ;¢Ž‹ãÔ½óãÊ6…™È&Õ;2(fŸ/?˜åuÚ™,ë!ËYŒq|ÿ”Å€#™¥UVOY—›¤Øl×®g8èÕyúõ6IôŽ}Ô*âµ_ê*tºÌ’²3îÆ<Ò#¥ûøAßt½¤Ù|‡ëL)ÄYm6[‘>šT†yFó[}úci«¼3w’ÿ<í#ê•¶7…~û¨0m endstream endobj 1037 0 obj [989 0 R 990 0 R 991 0 R 992 0 R 993 0 R 994 0 R 995 0 R 996 0 R 997 0 R 998 0 R 999 0 R 1000 0 R 1001 0 R 1002 0 R 1003 0 R 1004 0 R 1005 0 R 1006 0 R 1010 0 R 1011 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R] endobj 1038 0 obj << /F4 527 0 R /F7 577 0 R /F9 1009 0 R /F6 539 0 R /F8 643 0 R >> endobj 987 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1038 0 R >> endobj 1041 0 obj [1039 0 R/XYZ 106.87 686.13] endobj 1042 0 obj << /Rect[105.87 655.23 165.9 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(appendix.A) >> >> endobj 1043 0 obj << /Rect[120.81 643 206.76 653.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.1) >> >> endobj 1044 0 obj << /Rect[120.81 630.77 211.34 641.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.2) >> >> endobj 1045 0 obj << /Rect[143.73 620.48 188.07 629.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.1) >> >> endobj 1046 0 obj << /Rect[143.73 608.26 188.07 617.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.2) >> >> endobj 1047 0 obj << /Rect[143.73 596.03 188.07 604.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.3) >> >> endobj 1048 0 obj << /Rect[143.73 581.59 229.91 592.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.4) >> >> endobj 1049 0 obj << /Rect[143.73 569.36 250.83 580.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.5) >> >> endobj 1050 0 obj << /Rect[143.73 557.14 240.37 568.16] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.6) >> >> endobj 1051 0 obj << /Rect[143.73 547.12 224.68 555.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.7) >> >> endobj 1052 0 obj << /Rect[143.73 532.68 256.06 543.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.8) >> >> endobj 1053 0 obj << /Rect[143.73 520.45 266.52 531.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.9) >> >> endobj 1054 0 obj << /Rect[143.73 508.23 282.21 519.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.10) >> >> endobj 1055 0 obj << /Rect[143.73 496 256.06 507.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.11) >> >> endobj 1056 0 obj << /Rect[143.73 485.99 188.07 494.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.12) >> >> endobj 1057 0 obj << /Rect[120.81 471.82 204.31 482.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.3) >> >> endobj 1058 0 obj << /Rect[143.73 461.53 188.07 470.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.1) >> >> endobj 1059 0 obj << /Rect[143.73 449.31 188.07 458.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.2) >> >> endobj 1060 0 obj << /Rect[143.73 434.87 188.07 445.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.3) >> >> endobj 1061 0 obj << /Rect[143.73 424.85 188.07 433.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.4) >> >> endobj 1062 0 obj << /Rect[143.73 412.63 188.07 421.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.5) >> >> endobj 1063 0 obj << /Rect[143.73 400.4 188.07 409.21] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.6) >> >> endobj 1064 0 obj << /Rect[143.73 388.17 188.07 396.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.7) >> >> endobj 1065 0 obj << /Rect[143.73 373.73 219.45 384.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.8) >> >> endobj 1066 0 obj << /Rect[143.73 361.51 235.14 372.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.9) >> >> endobj 1067 0 obj << /Rect[143.73 351.49 261.29 360.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.10) >> >> endobj 1068 0 obj << /Rect[143.73 339.27 229.91 348.07] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.11) >> >> endobj 1069 0 obj << /Rect[143.73 324.82 188.07 335.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.12) >> >> endobj 1070 0 obj << /Rect[143.73 312.6 282.21 323.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.13) >> >> endobj 1071 0 obj << /Rect[143.73 300.37 276.98 311.39] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.14) >> >> endobj 1072 0 obj << /Rect[143.73 288.14 271.75 299.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.15) >> >> endobj 1073 0 obj << /Rect[143.73 275.92 292.68 286.94] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.16) >> >> endobj 1074 0 obj << /Rect[143.73 265.9 224.68 274.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.17) >> >> endobj 1075 0 obj << /Rect[143.73 253.68 245.6 262.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.18) >> >> endobj 1076 0 obj << /Rect[143.73 241.45 256.06 250.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.19) >> >> endobj 1077 0 obj << /Rect[143.73 229.22 224.68 238.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.20) >> >> endobj 1078 0 obj << /Rect[143.73 217 276.98 225.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.21) >> >> endobj 1079 0 obj << /Rect[120.81 202.83 226.87 213.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.4) >> >> endobj 1080 0 obj << /Rect[120.81 192.54 243.39 201.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.5) >> >> endobj 1081 0 obj << /Rect[143.73 180.32 229.91 189.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.5.1) >> >> endobj 1082 0 obj << /Rect[143.73 168.09 219.45 176.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.5.2) >> >> endobj 1083 0 obj << /Rect[120.81 155.86 187.99 164.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.6) >> >> endobj 1084 0 obj << /Rect[143.73 141.42 229.91 152.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.6.1) >> >> endobj 1085 0 obj << /Rect[120.81 129.47 224.18 140.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.7) >> >> endobj 1086 0 obj << /Rect[120.81 119.18 184.5 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.8) >> >> endobj 1087 0 obj << /Filter[/FlateDecode] /Length 1270 >> stream xÚåšMs£F†ïù¥³0ßíÄv%Ù¬·bå´µ,a…X oöß§ùœÁ†rZN¨JÌ‹xÔÝóöÌ8òÜRu#ܹãU7ù¤üÚ¹ÙTjü­÷‘ÄÕWk—oõð=Iyœ«Q›p ß‹qOU=šH:® È£µ(ò×®xu%QÖðóÉꔇûH{€O$ò˜>­]æyó¿HÒgÕ’aÑÂ5 ûSq<5Ÿmš¬±XYzÐ)QÖ  A0g:ô ‘ð7ˆ-ˆ *¾¥ ]ˆCÑ„·›¢1b\—²ü˜™’Cèû^ymb#Ã3CMë €€v‰â7 D¥µ`ˆt"aÈçDj„è³tŸEùXV73‘¦96oþÑQRT ";RÌF*N 7/Ââ4FKRÄHO÷ÜPL ! ®ŠŸ&ú7.F°ŽDÐSEÖÒðú¤£#Ìt^£ì1Í#K~)É%åäØÌ”4ƒJ+Cæ&iöFp0³Êžð™FÒ(’€—oÐ" &!9¦yqL“‘Ât/¤'}nPÆh`O"¾7‰Fš¾»Q–¥ÙHÆ>C ëê?žGE€ À`õ°BàOBB¹MvæÑ”Ï9G†˜H -,Ì^:5Û@MlÁ6½ëx14¯~Ûò’ºå½>Ň]Ýñ¦Ç"N“|`M@¸¨E>h |ZÛ÷Kßûl‰3¥µà8‚ÈÁÕá¢9Y D¥ua%P¢Dsã{´@TZ1WÈ;ˆæÆ÷³¢Òº,ˆÄãeGÒB4÷Äš!jZ †( úà<ý¢¹.,•Ö…A$``UM4·ÙY *­ ƒHq…¢hiÁwÑq¼¯`P XOq¸˜_Ùá²´çÛ4yŠ÷§ltq'(·×tÑ9eÄ¢ª¸Ùºö§4ÛFî.-Ò—ð92÷¬šô9÷¬CP8W¢ Xúx ŽfUP몠@ ¦P™;†,…]‰-¸°P¤TU©|2e¾®ïQ²#ËÚ™&&‹gC |Ž´œ³ìtå§ß¦ðBÿ49`YþiËFVx8üJüüAP°yZiá“¶f¦ÀÀaÞ{À9æk&Ôë[v¦â$/ Ìs¦9×9( ÅÁ’i+r)wœV³Å©éÎg‹sˆ#¦U”`ŸÊë™-ž¦|Îoˆ‰7¦úQlñ½ácž„/‡§i.(»˜ç·G&+RF3üfqøxˆ@ÓÕ.zŠ“¸Ü›0ÏJÚ#ÎkV ÞíÄ0¬T[kh½sµÛU/ÙÐØŽi"D½„i`ðVm Éj$7ÕÌ×8K“—>ËUu8¯^׌®š éjj®&6ëšËˆ,O5PÌ»Q÷\ý~sûñêîÁ\_4Í%Õ.Œw¤°•ÔÇ_¯Í‹Zšâ¼[Eâ½O6®íyl·kIV§dû®ê4mµ6f¹muUZâ©eeËÁð9º=„{ËÙI%9ÓŠ) .®­U¢9P_Íaõ|vÌÒµ %|åyœì‡æ5¥0£¸iéŒa Àεý§¬± r¡¯œÚ¢l«s€y]ú½!K9n1zƒø €Ÿþ¦ñX endstream endobj 1088 0 obj [1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R 1063 0 R 1064 0 R 1065 0 R 1066 0 R 1067 0 R 1068 0 R 1069 0 R 1070 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1075 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1081 0 R 1082 0 R 1083 0 R 1084 0 R 1085 0 R 1086 0 R] endobj 1089 0 obj << /F7 577 0 R /F4 527 0 R /F6 539 0 R /F8 643 0 R >> endobj 1040 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1089 0 R >> endobj 1092 0 obj [1090 0 R/XYZ 160.67 686.13] endobj 1093 0 obj << /Rect[159.67 655.23 261.86 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(appendix.B) >> >> endobj 1094 0 obj << /Rect[174.61 645.21 315.26 654.13] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.B.1) >> >> endobj 1095 0 obj << /Rect[197.53 633.25 277.68 642.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.1.1) >> >> endobj 1096 0 obj << /Rect[197.53 619.36 309.56 630.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.1.2) >> >> endobj 1097 0 obj << /Rect[197.53 609.34 274.66 618.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.1.3) >> >> endobj 1098 0 obj << /Rect[197.53 597.39 321.98 606.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.1.4) >> >> endobj 1099 0 obj << /Rect[197.53 585.43 313.18 594.35] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.1.5) >> >> endobj 1100 0 obj << /Rect[197.53 571.54 302.11 582.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.1.6) >> >> endobj 1101 0 obj << /Rect[174.61 559.59 293.95 570.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.B.2) >> >> endobj 1102 0 obj << /Rect[197.53 547.63 282.38 558.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.2.1) >> >> endobj 1103 0 obj << /Rect[229.41 535.68 352.29 546.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.B.2.1.1) >> >> endobj 1104 0 obj << /Rect[197.53 523.72 343.1 534.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.2.2) >> >> endobj 1105 0 obj << /Rect[229.41 511.77 330.45 522.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.B.2.2.1) >> >> endobj 1106 0 obj << /Rect[229.41 501.75 356.47 510.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.B.2.2.2) >> >> endobj 1107 0 obj << /Rect[229.41 487.85 433.43 498.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.B.2.2.3) >> >> endobj 1108 0 obj << /Rect[229.41 475.9 305.79 486.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.B.2.2.4) >> >> endobj 1109 0 obj << /Rect[229.41 465.88 296.25 474.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.B.2.2.5) >> >> endobj 1110 0 obj << /Rect[229.41 453.93 342.6 462.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsubsection.B.2.2.6) >> >> endobj 1111 0 obj << /Rect[174.61 441.97 269.51 450.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.B.3) >> >> endobj 1112 0 obj << /Rect[159.67 420.05 230.4 428.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(appendix.C) >> >> endobj 1113 0 obj << /Rect[174.61 408.1 236.39 417.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.C.1) >> >> endobj 1114 0 obj << /Rect[174.61 396.14 231.71 404.95] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.C.2) >> >> endobj 1115 0 obj << /Rect[174.61 382.25 297.44 393.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.C.3) >> >> endobj 1116 0 obj << /Rect[174.61 372.23 230.82 381.15] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.C.4) >> >> endobj 1117 0 obj << /Filter[/FlateDecode] /Length 934 >> stream xÚåXMSÛ0½÷Wø("¬oé:tZ˜L/m&âÖ±3NèÐ_Y¶b)Q(‡v’L/ñØÑ®ôÞ>í®”d0Ë’§Ä>Þ'g““Kš(¨x2yL¤„œ&#B 4ïç_¢é·É‡“K±‚¥€M2û÷øæzrq=¹k%ëozãJl‡Ÿ¥#.1¸ù”ÿH :óúÔäóyÞ >Š̤o‰ ñçVŒ2™*¢›¢t$í¦ÁÂNC0(õK1ÍËö…‚i]µýL±ºjWE]-½5`ÊaÆ}Ç0±,Ûǃ*µ{ˆ¤!; ÂR•Œ$ƒ;JZRá`\ÏçÚb_h3 ñmþ4íá>v¢äk@Ür·HG­H¦ÅZ-;³¼É§+ÝÄ$1ø96I LANÖŽ‚«‡^ÅWÌÄæ^žå‘+ƒÆxÁ¨Í"Ž:야zhUA@ñIÌ$L¸94’vC7Éž ’`ôÏ©$ oŠü¾ÔþF?êFWSÛž“CÞ,†Ÿ2H‡Ðó>+¬š¢zê›Z±\呜I$$8ðpØ[c›ƒ¾x"& uÀ]õœÌúÀe”Dª5&d"ðr)ÂÒÁc’à åèp•óâeÑèår³Mè[Ïæóã6Ìh»ÝØÒT :PÑ’2&ÁUUU/‰|±(MkµÕAI … |ì ›ˆ…Yˆ‡0»~`•¯ôÐ"ÙÖ±/,šºÕ€R˜~˜Þö(€m°} qÆ ‰×´ýúë&DhÚpƇ%\ËD^pÛðZ¼¦²a¿²að ÛŠ^[úU2¸ú{õèØ(Šaà "?–¤ÇvêoÄnk:å>>WÓö{÷yd"̱3¼ÈîÅR“4¼µÒ~­7÷ÆŠƒïz-ªƒÙá×TŠc¸MOhòœõÀoŸË°‡ê˧gp4å“’rîÃæ.ÏÌtYº†ÊöÕ±,êl÷œBi¬K‚Cå ‘®K:¯ËÒ4CÖ¼¶™ô!r@@Jmº8ÂãÓOÄðÄ_½ùÁJº‹¤q:â\ÛØ)Â]÷xÃ1c¯ß÷”¹»¡±½ð1«ºÓ}CrZ.kŸ}n–˜ïöf1ŒÝ]ÖØ¶ùÆÀôŒXÛÒ°ÍØ`ðŸ2F¨»Û-o >S]-uP_ ׋sð«)žfö:1’á=oG“áã´˜c?wB¢-§Ï«YÝ2ÛƒÿÕáþ`I{÷¦ÝÉ— endstream endobj 1118 0 obj [1093 0 R 1094 0 R 1095 0 R 1096 0 R 1097 0 R 1098 0 R 1099 0 R 1100 0 R 1101 0 R 1102 0 R 1103 0 R 1104 0 R 1105 0 R 1106 0 R 1107 0 R 1108 0 R 1109 0 R 1110 0 R 1111 0 R 1112 0 R 1113 0 R 1114 0 R 1115 0 R 1116 0 R] endobj 1119 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R >> endobj 1091 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1119 0 R >> endobj 1122 0 obj [1120 0 R/XYZ 106.87 686.13] endobj 1123 0 obj [1120 0 R/XYZ 106.87 668.13] endobj 1124 0 obj << /Rect[258.71 478.89 335.24 489.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[0 1 1] /A<< /S/URI /URI(file:omake-quickstart.html) >> >> endobj 1125 0 obj << /Rect[328.39 466.93 426.47 477.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[0 1 1] /A<< /S/URI /URI(file:omake-build-examples.html) >> >> endobj 1126 0 obj << /Rect[276.87 454.98 391.01 465.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[0 1 1] /A<< /S/URI /URI(file:omake-language-examples.html) >> >> endobj 1127 0 obj << /Rect[162.38 424.24 170.11 432.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.2) >> >> endobj 1128 0 obj << /Rect[186.48 404.8 194.21 413.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.3) >> >> endobj 1129 0 obj << /Rect[216.7 385.36 224.43 393.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.4) >> >> endobj 1130 0 obj << /Rect[218.45 353.96 226.18 362.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.5) >> >> endobj 1131 0 obj << /Rect[210.81 334.51 218.54 342.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.6) >> >> endobj 1132 0 obj << /Rect[206.71 303.11 214.44 311.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.7) >> >> endobj 1133 0 obj << /Rect[164.79 283.67 172.52 292.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.8) >> >> endobj 1134 0 obj << /Rect[219.49 264.22 227.22 272.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.9) >> >> endobj 1135 0 obj << /Rect[195.27 232.82 208.72 241.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.10) >> >> endobj 1136 0 obj << /Rect[190.59 213.38 204.04 221.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.11) >> >> endobj 1137 0 obj << /Rect[216.39 193.94 229.84 202.36] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.12) >> >> endobj 1138 0 obj << /Rect[240.34 174.49 253.79 182.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.13) >> >> endobj 1139 0 obj << /Rect[366.48 143.09 379.93 151.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.14) >> >> endobj 1140 0 obj << /Filter[/FlateDecode] /Length 1474 >> stream xÚWM“œ6½çWÌ‘©22úí8v%•T’òÆ—$ØYb&|8ÙŸnµ±;¬s’€–ÔýúõSsHX’Î7|8¼½{ý^DÂŒ9Üݤb™9Ä\¦ÅáîÝïÑ·ùu¬úc,SñãŸw?¸Š¥.H±²,s¦¦º¬ÈB,³ÆhÎRë,¾¿‡}t=Eu=ä}…µÕ?4;þ)ÿŒ–Õ+|VÛeãƒ;ëðÝqàYŠ!ÄBfŒswXwÁÕYTÅOuK?cÞÁ*aôÓU×¾ª׃÷œ:Xë¦u‹»=¸ c9±Û¶IŠ˜sfµÛl¬»ö«D‚·ùH³²о>ÁRpm wÝQ˜è|.z•¨h¨üŠéJcNï¯x®ÖÑ_U1²cl`z·ÁBè”IîhH² °$ãÓT7e\ý›_® ¿®’¸ÊnVë/n™ÅR¦e_“÷gâÄ2o O6êîitÇÑ4ô{ÀŒZÀ¶-CÇÍ2tÜ–@ψ=géЀq¨á>¬ïÉd“GüìÚAø@ð‰t…Ò›„.-ˆbB«Á3j,$ÆÀ|ÅÍíÚ7ÿ†2À endstream endobj 1141 0 obj [1124 0 R 1125 0 R 1126 0 R 1127 0 R 1128 0 R 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1137 0 R 1138 0 R 1139 0 R] endobj 1142 0 obj << /F5 535 0 R /F4 527 0 R /F6 539 0 R /F8 643 0 R >> endobj 1121 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1142 0 R >> endobj 1145 0 obj [1143 0 R/XYZ 160.67 686.13] endobj 1146 0 obj << /Rect[350.09 657.16 363.55 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.15) >> >> endobj 1147 0 obj << /Rect[376.23 637.24 386.89 646.07] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(appendix.A) >> >> endobj 1148 0 obj << /Rect[344.63 609.34 354.78 618.18] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(appendix.B) >> >> endobj 1149 0 obj << /Rect[159.67 575.53 358.96 586.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[0 1 1] /A<< /S/URI /URI(file:omake-doc.html) >> >> endobj 1150 0 obj << /Filter[/FlateDecode] /Length 516 >> stream xÚuTËrœ0¼ç+tÆz€$Žk{í$U©¤Rø”ä bYL™WÎ÷g$á…%öe…¤yt·z–0`ŒTÄ/ä6¿yHH™"ù™*!±”`pÿ‹rýÉ¿Þ<èKˆH8HA˜¿¾û|ø‘F˜!)‡(ÖÚÐǧ/÷Ǧ.iñ’ íO09.1ÑHZw‘ät.G[ÌõßH º\}ÛÚî´‹Æ]rÌ‘:ÆI¬8`§ëõ–ŸÈRHÒm¤ᡚKÏ@ª…`?=‡ëµGËí‚/nê !H¡WðŽ 0Mbl’‡a@‚ȹ;ÕE9EqÊýþ;8º^±käÔ臹î»i£‚d)päf8è$T~_É èlxw]ž«KyÜzîǽF17$Z…sÈÒ Uk_ʽXB9LA­ÿÅH 0…5RÈ’kKìø7¶«^måw ­F‹x¯ !Eîœe ¤/uûŒe®"øtRѶÝ#JMñíŠz*Ãñ„¯# Å“ß"Õ…uº„°þ"æ`!ǃƒ[M< 4„.W°Å¦öÓÇqRBú¡i‚ó›.§Þ{¥xmË0 o‰eµa™ê®jŧÝÁܬï›"ÕÐÔ}Šú­òP‘€Á¹ýM Eÿ)´öÓ¾JaßÄ~)>ýUó)³ endstream endobj 1151 0 obj [1146 0 R 1147 0 R 1148 0 R 1149 0 R] endobj 1152 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F8 643 0 R >> endobj 1144 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1152 0 R >> endobj 1155 0 obj [1153 0 R/XYZ 106.87 686.13] endobj 1156 0 obj [1153 0 R/XYZ 106.87 668.13] endobj 1157 0 obj [1153 0 R/XYZ 106.87 488.52] endobj 1158 0 obj [1153 0 R/XYZ 106.87 364.41] endobj 1159 0 obj [1153 0 R/XYZ 106.87 222.94] endobj 1160 0 obj << /Filter[/FlateDecode] /Length 1686 >> stream xÚ­W[ã4~çWô¤Tššø’âe˜ÙE fA0ˆ†Oã¶aÒ¤›ËÎv=çb·i;ˉ§ØÇÇö¹~þ2‹EÏÖ3ú|?ûîþë·ÉLÅ"Mg÷«™6"Og ©S‘™ÙýíŸÑÍÆî×Í:3‘šÿuÿ#m0"ËqC<[$p”$ÝŸïìÓ\Ëȱöû±ZÎu=õƒí–­ÇªtxÊìͽ¿\¡ÍäreL¸\ 9_H©LtëúeW톪m؆|Vˆ"õ&(%”¢íÖ>9Ö0 ¦ ‡ U†:*]_­WòlÕvÒæÓ6Ébý±q—ÕƒYÞ‰Ïá„ééÆÃg åªÁw§Œ1}·ž±æmý„˜d¾>’a<\uí–GÐͼ™J0É_Ê J3‘˜ÿ”AĈç}H˜ >Á³îÔšqS#þ¹†%˜S¿è æebcÕùù²­k8Œ£srÈŸRò^Š€8{ؤÃã ÁÙL…Çáð<\dt€÷ú3p‡¢Ò Œ(]³Ü³Ð6¶Þ÷àÇYdàý¹È :ôw"&vùq'ÌãlïÅ5ç!ï¹Å¦ÇÇÚË`Ïs5lxéÅL¦"Í|’^*Pñã!’óÃ-kh*q~˜¥QLûbÝ+p?\k˲s}Oð’j°²¢‘ÏÀ×=KA‰ê–5.1EÚþ@ñÛÍõ»wo~½(H#L(Hàk7\1Î=oªð–àù½OÈöÀËŸe»Ý"º1)ÖÆÄ[„,²Ç÷r\úr¤ ÁLQž7Œ1ÑÛy®""X>ívWSÓjJÛY¨ë-|ææM,Ý‹l2Z@,<= ‘øZ jö+ÑÒ(Ñ’<Àrjÿ—ÑÍ fµ`òû›Ÿ~¿}$‹»;¿ôíyt!:"/ˆùʦòMo^+kJÛ•<{FœåRöpÕò?0m’—qc%äOçîCS™PUìàÔ@@œ89yåú‹ú–™&ÿت8¾ïÏa%c PI‘Ÿ¼DÔ‹ž$ARæO² õ¶´MC„Rý|@»ÊC]ã\ ° µ¯Ù¶j>WZ¡j:^·üa§_»$.„Lp§<ÜÝŠ±À8 ÛÃâÑöÄï€`3ôÉÿú ´Âúp†¼Éä’’AÌ•§#Á*ÜÝ&,*«µë/¥×¾“@¡¢ÞñZ ÈŽxš0äÕÙW›XFŒ¶Y»º65Et½¢_« EUHïÕ:éIÕ|ŽÈPw=Ð òNcÞ«³ïYX5+äßüı€·YOiA-yt-°;ä6X“®<·Õ$8ð=D¶–@ :Å„Žãiž!åþ!OýCŽ’ ÕÅé‘êB0œðHy¢UË<‹àT ’NróØ[S~Oån4Äè£[ŽdS©gFì&-:¾ ÙuØæJÖ­V,õ›óã‹aÒä²ãüUáe8©§ãµr½{?Â<£óƒ±™Ô˜×¬X- ôÔjÛ<"1ÌÓÎA,1ǾŒb©¡!¹ÒÑuï-jøÛŸï"üJí9A´ê“åøž¯¡g eË­Xgœ§ÔF»Ý„þq ¸0àöf¶8#`ƒÏáG+NÃßrXSL$81¹–Ácuâ[UòŸA Òˆ¼Õ6¼Ê}õ) ùwQãÿµßèl¢¢ã!ä‘ýìw%.øùY¨D0§”™Çã/þ€è endstream endobj 1161 0 obj << /F5 535 0 R /F8 643 0 R /F4 527 0 R >> endobj 1154 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1161 0 R >> endobj 1164 0 obj [1162 0 R/XYZ 160.67 686.13] endobj 1165 0 obj [1162 0 R/XYZ 160.67 668.13] endobj 1166 0 obj << /Type/Encoding /Differences[0/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft 161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus 173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade] >> endobj 1169 0 obj << /Encoding 1166 0 R /Type/Font /Subtype/Type1 /Name/F10 /FontDescriptor 1168 0 R /BaseFont/THTNCD+CMSY10 /FirstChar 33 /LastChar 196 /Widths[1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3 750 833.3 416.7 666.7 666.7 777.8 777.8 444.4 444.4 444.4 611.1 777.8 777.8 777.8 777.8 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 777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 0 0 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 777.8] >> endobj 1170 0 obj << /Rect[410.84 587.96 486.07 598.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:StaticCLibrary) >> >> endobj 1171 0 obj << /Rect[184.57 576.01 228.42 586.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:CProgram) >> >> endobj 1172 0 obj << /Rect[330.86 578.22 342.82 586.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.13) >> >> endobj 1173 0 obj << /Rect[219.44 514.99 239.15 523.41] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.10) >> >> endobj 1174 0 obj << /Rect[239.42 483.37 254.15 491.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.8) >> >> endobj 1175 0 obj [1162 0 R/XYZ 160.67 466.98] endobj 1176 0 obj << /Rect[463.31 174.09 507.15 184.39] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:CProgram) >> >> endobj 1177 0 obj << /Rect[159.67 164.35 197.37 173.27] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:CProgram) >> >> endobj 1178 0 obj << /Filter[/FlateDecode] /Length 1997 >> stream xÚ•XmÛÆþž_!¤ B¬5w¹Ë—¤`Ëwñ5MíZ2 * ¹:Ñ¡H/¾Šö·wfg—"%]}ù"Îr‡3³óòìŒf>óýÙýÌ<~œ½^¿¼‘³„%ál½Å1 ål,†õ›¿{<žÿcýç—7ÑÀÂE2óÍÞòí«÷ëës`<Áæ‹(мw?¿úé_Iïoo—?­Öó8ð^}Àß5¾Þoß\£ØÙõÚèW3.Y G„œÅÂ(LÌœ åÝÌ“À«I¯ouÓ"©¼´ltš?Òb›î‹²HZ=ÝŽ¨}úÛ<ð=M§9ØŸ-èâF× ‰Dè; HpqÔ€+Ò€T·³Â㣫”Ï‚Èz ,8Ó.|–»¿ñøf¢Tâeõ~ŸVù Xé;ÝhRQ{¸—Ò²,ÚŽ¨zKϼØ•éÖxxÁ#Î bàB£u5Eì·¹ˆ<­´**zî‹*'êa§+ dßÕýÙá„d\Zãë‹§ W–Ñ&÷‡Ý ”ñ¿PäŠS!æI2n«3À„øK&8ÁJ&Þã\„^ÝÇÜA×*?òöèŒ>›‹ØÛá›Ð+uÛZª W•´Fâ3×àí¨²îú¢Ìi£éácz‹‘ÁWVkCjk”÷P1 ‘„,!òÃRiKûØvzOô¡1_}.r”€8È|óhy;H™´Éiµí«¬+ꪥåf8ĸ ‚„E .b%ƈU—vE¶üKqפÍãø³£{%™à“ÏÀˆË*8˜‚ÒæpÜH€¼oêû&Ý_ΕÂê°™¿ ÜdMqY{:g°ô–»ôÐéæ(t5…æ%ñ`¼ÚÓ÷­W+íTeÅöÑîìt«‰4‘oIù¾nìÛ¶Ø cbq1÷CHL<[ÂÂðY¹Ь€zÂÈ%XÆ—kP4à®òVonn¹^JpŠË”š¢ÉP,ˆ˜Ã(Öö[Ž?â»Si€ØC)šªBiUm nûy°n:Û¼ YNÿWÀ½uà®îKÛÞùú\Q–ƒ·i‘6Inª%ÍÏ@"˜týÆZ¿Pp£˜?=I`N? [BþŽÈ­²ú€!ZˆÄ"8<Ûâ¾B¬Ž2ªá,’B LDÆ"NàG¬ÁÕç¹’àå"½3y€Ì¶îÆDÇÚ“¼ûžÚ ÂڥͽÕÚ† ªÃù¦•6Ø2ª .cµ-üÀÝ21ãþ˜žO8ð¶3åƒ×œ§·¶r$æ -²ÔÄ?¿‹P0P,žuƒ¬z‚Œ¼hàuSï%‚‰s(«—ªi§sÚ/(Jµå&^Dä…RÞ'Eo¨ Ï…BR°hT–¯ßÜ~X’"š„Ć!,ŒÇ9ÅÈøçBDBÀ€‹L1ÙÄc†*v²¿™³ÿß• ”™Ø¶,°mÙkD?slӌѣݧeIä’‡#Ô?Ù™V}šë¬1ÝMLíNìUúò{hüŽ=RÌ·ÍžN[jG2öºÛÕpÚ¥*¦@Â3èîÒê^ÓÓ¼1ò'1Ggùãˆ4¤Í ¦o5…/IrðmñΛ*ÿˆUÔѤZ,ÜЧ'þƒ FC×G$÷››r›öewª(‚¨;¸~÷3èÙåY÷$#æ;á-;±°–ù¸û#Z+½,'«ÿûb;uÖ„ù©SN™¯®®Fì¿3hË;“z¸2ÇhêúB\žûµsÂ3t»c™~מÊ1K“SëÌr—~¶wÛl¤ìáuþLM „»(ÖyaUØåľ; ´Æuè‡âù…bI<ެiI¥ ŸÊ'"2|!Ÿg.@µAÔ´ÀÛ[BEµÚ5¬¨f‹cw¼ Ó’^¯"ñn™îK"! ;òÁ’`ì>DHà…”‡59ξÕÐü´gHѻԴõÛÐáÝ’xï—–7Òcá®CÛ鲬ÿ™Õ¹fÙY‹¦˜äçþ§+ ô ·­AˆqŒÝÍGõwg0ÀÉÂ`œ,€[´ìsM)û§¶Ë‹ší~pi-6 _QuIJ36n‰SÙ}ö¦è'm¤®®àõghΊãßæÎÒ|ìöC·ïë·èòP7e¾ÙT_oæßŸ jt×7¶ýïíµ{KLÿùr­¸kL 9„$¹wš[ÓëqZ¬&±=›páJvEµmê½Óe®: (}ðš„ÜÀ)ÔXÁ=ì< ‡¹œœ—§Ch= OWп¨óÉmâ ¼T8ƒ›DÇ­‡€Æ2F)É”í³¡6}ƒ2§MÌ_Ÿ yY{Ÿzlá{u¥‰( CñÚÍ㌇>3óÕdŸîn žˆÕ'Üé> endobj 1163 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1180 0 R >> endobj 1183 0 obj [1181 0 R/XYZ 106.87 686.13] endobj 1186 0 obj << /Encoding 514 0 R /Type/Font /Subtype/Type1 /Name/F11 /FontDescriptor 1185 0 R /BaseFont/DPBICU+CMTI10 /FirstChar 33 /LastChar 196 /Widths[306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 408.9 511.1 1022.2 511.1 511.1 511.1 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 627.2 817.8 766.7 692.2 664.4 743.3 715.6 766.7 715.6 766.7 0 0 715.6 613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 511.1] >> endobj 1187 0 obj << /Filter[/FlateDecode] /Length 1454 >> stream xÚÍXÝÛ6 ß_‘‡>8íE±%K¶;ìáz_»á®-Ú°Ÿ­ä¼%v`;»ö¿)ÊŽc»éûêKDK$E‘ùS&.sÝÉjb†«É«Åü2˜D,R“År"|ªÉLç¿8œ 6Aà¼úp}s~ýúj «¾sŠƒpÞßžÞÜyF oßMy༹zwz;ýuñÓüÒß+µJM\£Ø‹p¶òBðÉŒ† V^¨áÔy. \9iÏI✈r—“î°ÕæúVu±‰ÿÐýÍyĸ´ uAzîwÙ:E’;õƒ&b[¢”Îï:©áä¾Á Z7\qM¢-ÿ—AYÕv=ÛØéG<ƒþ¢¹3Ï 8²H±Z1¯9Ö XÃ]'ƒ½|W8÷Ó¢~ Ï ¼S‰¶õö ó«çA¯×ÅoI‘j–ô÷SŠM„ðdkM*—EIDª·f_§:O2]Y«â<%†¤Øl³µ¶¦€±&Ê^1t»«²|þQrÌ^°‰V2°Òó™5«´_ ±’¾ë,L\@iUÇõ®"zåvv[f9fT­1îÊwL<­ †ÐyJD–§Y×ÚèPÎC›• µL„¯Ït8 ©ëwÏFžC¡Í„RÓ†)×)xMzr¯—Z¥#b˜©µ"WÃ$J+’zÒ·ç‰ÈI³•®ê½)ÊèD³]²Xµ^ÜSX?ÜeÞNàô ç30‚û6[””O]•ä„çÏŸwX_o©ãÔÄ?ÞÜÂÂÒ$ËÓ¤—YžUºcºÌ÷õÈJ'wÓá3Ò_™ª‚|¬sºÅÐQ/H rÒ0Ï®­Ôìöv ž|qS[xž°«<¾k3QŒhùÛæ|ÝŽî&O9ÇhTÓ"×û É6h'Dyse§°ÂÙIÞL–»µn&åœs«’²þ0ìj˜¿ß`ÒzG“ö ôútçþÐíd×î<ñ_·òÎ$‹Ân9¸^B;¼¶O[:p°…NM3ØpyÀWâ|e9MÕ5 TÅ飨ÖYa,å¡ßvRä7wYJj¬²¹i!\I&BÛ%ÎÎ=D0¯éˆXQ{ÒˆJštvyszõ~à hóŒûÝÜús À!.³øÞ¦ÇüÒóö= ’[X•÷Sé9»*Žƒ®2Ñtá‘“yªs°·e±*ãM_…ïïy°ý!”ñBçý'±ÝeQúS¼Ù®õI/ŒŸ­×H)èÕº#C¦šc­FzuˆN:ìÕù¹ŠIÞÍîÇ ÑL“½ìãYE³Õ±pRþà‰¹ C†ÄišáôHVÙƒSeÁM’-?[±¡óÝ}pØùÅå釛ň÷esè:.Wºw»ÙíMooæ÷¨ÏTØuOª—ñn¨T iNÏ6íAðÅÏk<ØMUÄ4ÜÉ*Â6ÍŲÉ`e“ûîpC?ÖúÓ0—;®(8\‹o?f¹à#°=hâZ}®j½©¾ƒÌd5ÖØ­7ÛúÀ}’¨  ².³Jä@¹0Uö*‡6­K±­ †ï…e¤¼9V曼zÙa~v‡1}BIþÑ F|’×aÁ­@p^–Ú&y‘S#ÂG¾P V¤Aˆà«£O+x¤4µ’ _:*d¾ø"„üÇZ°úFqãrZµÐiõÈ#ÛÿgHR7è_€”þRc2""1)Þ¿ÓP˜§¿2€å©È)–Tf“bWVØnEoùç4Ú—ªù§ëŠižó~·µ÷º²ëí_ é±ÌjmŸâ~ïµÓÕÏõ#öÝß‘û,äÿ ÀïÞ݃ŽÆÛj0ó}=Â%‚Â(væÁ;0uŠ*–O‡íV.ú[F™¿eh&®š’…™‚áÊŸÉÅ⻿v2ÉÆ endstream endobj 1188 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1182 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1188 0 R >> endobj 1191 0 obj [1189 0 R/XYZ 160.67 686.13] endobj 1192 0 obj [1189 0 R/XYZ 160.67 605.72] endobj 1193 0 obj [1189 0 R/XYZ 160.67 347.63] endobj 1194 0 obj << /Filter[/FlateDecode] /Length 1228 >> stream xÚ­V_o£Fï§@j5l€Ý5pRœÄιçK®±#Uª«ãµMCÀÂørùöÝY Æ´ê]ïÅ;æÿÎüf-—º®µ±ôqk]Í/ÇÜŠh4°æk+ é€[c4„ÿ7ßµÿœÿz9Ž"žY®þvý~øi>z°AœŸÚNäþãðÃH±8ùíqrýa6·CF†êw®ø>¹}œÜŒÐlx4ëxnHÝÐrü@s”ýkÛ>'¿¨CM’(%pîxÊŒ§ÃÛÊýlMܧ²Ø”ñË‚le–¨¡é§¤XIÔÄÿð»“åÂ>·BoFãáãtþ®¥þÓ‚Œ~éÑ\TX§Œ·*ê1 KJ¹ 6ÁÝ4.7²„¢‚ìÊÂv>ùK&Õ‹Ó\ áûÔcZ¸·îG¤ÚJ$´ªhUäl€ãäÕH¦†šÿYú¬>Ëì­¶‰WÍWtH^Ó,йÈs˜~« ü²<¤Ùª6º,ã2•ÆG±Æ3IPXIz^Îi£ÂX@pDH–ZE"W¹¨اùI•|§ƒ<îÒ™ÞœUq•&×èá­[Ï`@E`$ׇ<©Ò"‡þå" ïei§{t…QAY¾Ä/»L»…ëðÊÛ¹¨|Õ€t'._P/4Îî?ÆÏrf²‘p)«…^Ój‹Æ*}‹ªî2ŽE¦gó#¸n4è“ øNãã3i±ñýýÓx2ÍN,®‹â)nÈe۽Dž*ø2ã £wŒla÷ l:øiÔ¶ÕÎD¹ù¶ HîNðêufiþ,WHã%êÄŠšjFä¬RÓÉÕi‘0Ñ# Q_P;&ùí˜ÆÂˆ f0ML›à>™GVi pTÔÙö oÐ,ÍÂA3Q£pÚhr"?kÊQo}(A¯”!ÒJj¬ÆÆ‚¡€(2"+מû]vÔ¯•è Œ'{㺌³óËh%¬ „s(Ån§={‰ãûª¬IÜ‚»,N »ÌBÊL/tÊÈ`àëUç«3 eAcÀ4Ð?P‰:QÛþ€|’âÜœ@Þp¸Î&9n{'*;ƒ\] ovè“ ”¬—Œ’[É…/‚\ÿ=àé þðä5š%:Á¦¨“ôÕd¬heØÖ½\Ä¿@±­Ù Ìln6ko†“Ø]Fý¯BþuROG0¿•äY3Àm»žùŒµº‰Ÿ=¸BN=ÑÞ“»ëéãͨ³(­ÏË ýÝ ¾ ÙÛé:‚F¡áó®¨ÔÝx.âHMtRAÓðÇ\;–9§‘od>Û€CØñ2SF]|A)ãuÛ®Œ¯Ï4O²ÃJà5‘  Œ^ 6ž'D»>¨½Ð~ÞáG¼=ƒwªQ…R&<’Ë/j t%wÈÓÀ©C†/jgN­Ö3ý(Û á6ò/qš£@»Õ¤E‘^ž˜¡ º™¬6Ðw›Swð5“³ßõUk=y1 Ÿª “F¢2Ï©æ¾Ô4÷=(ë èìñêfò0{÷oATê=_Ošo³“A3 X߸åÔ˜$E¾N7‡2VÑž]ßÿšÍøü°’- endstream endobj 1195 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1190 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1195 0 R >> endobj 1198 0 obj [1196 0 R/XYZ 106.87 686.13] endobj 1199 0 obj << /Filter[/FlateDecode] /Length 1299 >> stream xÚÍWKoã6¾÷WhZ1¢(ŠÒ=dg‘E¶Yl¼@¦(Y¶Õ•%C–¤¿¾3Ò¢-'顇½Xäp8œÇ7OB†“åD>LÞÏήÔ$cY2™-&"fi2 „ÀÏìò/b’ùRÊ»ûúþòúËôbvûåzzçÿ9ûxváJ’LBºÄé8Ý‚GLÅ“ RšLW7çîü@F±÷ó¯ø•^°Ä‹ %ˆË4ÛÄq·{˜W]YômW•[ËÅ9ˤfc¤ÞÝ;b_´-I|È;W$weÎV%1ÕÕC—k¹z›w†Þ´O´¨únßÐâæú½±ÈzœtWÜiEþøÜµË._ß{«²®Û_HŽ^ÿU´s£íáwSv÷þØ4v9½:ÿz3{ç\ÿéÞ›þ>%n7fdY —C{ù·¶‡gâ,öúUÞãJÂÊ}ƒkªü¡&ÓÝør2›ð_\¿Ä%©9Í›ùñmÔ@ÙË‹cx%LØûQh^ÞGR5¥Çùž[ÆŒKÃþàKî•‹¶Óß‘ÜQIœhé±Y)SÔa#/Š3•º0èónYö˜7ð& l‹ yäB Å^W®sDW,Ç ½%²}~¥žA@IœpoÛZVÛ‘ ˜y‘µÑ`qdñh’—¢Ä3&Ô Ç`øÀ›1K2ñێ½©XÄÍñ²(¡”òRøðÓRÅ”ëàë…•k§Þ”÷äƒsZ:qÓT4l4kK_òeI§EÛ ï—»½Çó IÙ• Šîëg?¸[¤ >¤ìÍUŽ›GeuQ¤‹ô \¯Úª(·Æ³,v šÀ^ÆTdÜpû)ÿV.ªz„ß8c‰eB¼€ ^™Ãƒ îÆ yFrê¹áÞ»©kÐ82¶+ôŸª~E¼U¿5·÷îÊûªmˆxᨨ( `åÀÀ ÃeàòŽÞTPc„³võœÈMÛ­ó<®wCœ€sÞ6å½™ÇÂ;¯û²k@ƒG!Dpk"Xk[ñv^c¢ iSç…I‚…)o–帰WZ‚°ÌÂëZ­V;J72þfÔ á­R%:±(Fn»º,ù®î©lºöoˆ'm ‹jŒ‘òPÝž„©7æy³´N·§A¦›ÆÙÛ†:wU}C»û…À—m7}µ®þ©š¥}w½çwÿÑØ[á2&§t;Õ¶nŸr;#l¨ÿ/ãòw3ðÄN\™ÞÄu½ƒ‹Uð™xlâz_#÷”íFš²ØWRõØÏDz²g)ÙëC‚dÒChµÒ¶Zz’’Ÿ@êš!3å*ŠS–J7ò§4PLج5h9˜q²¡»!±, )<=`Ÿ™ìG¦Ïj*g©|°²Éìäü$±T× VKK ²¨—Ç0°@ª1„¤± (Qʪ…¤‡ÿB–f.nŸªºÆJIª¼î%ij¶%mLªÎ‰Ó4œTŒD9Œ^ Cʤ<v À%Î ø–fdyNh JßÒËëü›Ã§a®zt;h;ÔÓ¥@÷9¶×ÔM‹¼F 8Ê>žÍ‹Åë#&gLŽ82+ ©µ¡ìÍ®7Œ]¦lÚœ1OmÌOŒ øFežÐÝÔÂ:ÝíÆvh<Ümu~A•€'Š%ÃòÞ2áÀðlÀ4¤ÐzÜ'yö5Ééì‡;;íé endstream endobj 1200 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1197 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1200 0 R >> endobj 1203 0 obj [1201 0 R/XYZ 160.67 686.13] endobj 1204 0 obj << /Filter[/FlateDecode] /Length 751 >> stream xÚåUßoÓ0~篈ŽhÜÄù=‰‡®MGÙÊÊšjL¡,IS£,.iÊ=vÎÍB[D5M¼ðÒœÏç»ïî¾»*:Öu%SêÏ™rv‡–âcßQÂ…âyرÍ4±ÇσOˆõsø®;tƒøŠ^ßõßö&ap¥rs¬j®ë¢Ëqï<* }˜úçÓPõLÔ»¿¡Ðt6 pë5n5C÷°î)qk ÷ÿRÕlb¡œÞ.²6ët RµLAHÒE´É+8ĬXÐlSFe…Á¡j†}»öˆ§³ÓÁèjzž…[iCLìï½Ê?e«ŠÞÑŸ´È¶qïV4OËvHHbÆ ¢cßhãé/zgSpñú |µKó/Àm$  MzÜE?Žh–«’eet'KŶ‰¬jr{rj£Ó)Ä“Ðy=»ínq˜]YȽŒú@6GË4ÏYÕò—˜% œùï*-çê^³ð öfáIëõ«9 >`ܦ¶fcß«ß:Àª´äq‰ï¢õfµâ’‡˜¨ñ|t¯Õ²Ç)ÓDê+_aî"VVR½¤kyQŠìô•7žWl—ìDwÅ€Á]ÓÂ$»h‰ƒ KHŒQ‘€F×1S‰ƒ¾«=ïD\F•$ˆåaßj~ûZLb‘¦ ÌjBçÄvÒ2-Äu×Mëk“9qô([ø×`@€Û(I¨ z”ƒž÷½ŒÊÕ#ï§}"°aÃlÓvÐe^G(ásMà€÷>ý¶Ä#~ºœ†7N†hêRKícŒ$™cé¥[°œelŸþ‡†·;¸½çÝ„Ã8܇šþX Ò´§·u™sú.‹ã#uh›dGAeüÇK—S8dË¡NsŒ'áM£àëûqQ=yÿ6 0J”×ã9Vðn¨kY]Ø2Þ}½“ êEþ°•Zxž!4lìøm' m[SCé6˜ZY‡èu\›ó2è?ûÓ Â¿jtqw endstream endobj 1205 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R >> endobj 1202 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1205 0 R >> endobj 1208 0 obj [1206 0 R/XYZ 106.87 686.13] endobj 1209 0 obj << /Filter[/FlateDecode] /Length 1161 >> stream xÚV[oÛ6~߯0°>PXÄèjIöÐ$N—!M‚Z]Ìà K´ÍV5Jnša?¾‡<”¬XÎìE<$Ïõ;jâPÇ™¬'zy79KO/£IB“é$]Mü€ÆÓ‰íûjI/~' ©eGQDæÏ.®>ÌÎÓÛW³¹õGúËée°‘étâ ×qmû®G£`b{‘>¦ó;)Ö2Û.Ȇ•¥8±ìÐ þ3SûÐìá[3¹°”Z°a{>M´z1»|ûñ:ýq ýfAf¿Íyè¢Ò$Ö²¡«…oD V¼$!íßqÈ®1„Xáªnb‰CêE&Röµ²P¿Ã¢à’å-ÿbya1'P9HÃAD”ŠÞš&¾Xa@2ɳei\,ØÂ £Š·\T 2­¤ØjDl,†¬.MBmVk Â)á+»i³–mY¥\hHgìúäW+ö: b ¯CuȉØfŸÙ(T‡NÃIsíº{ ‘ª$¼or+t‰¨Õ—©Oq¨Í‹©ãîƒpì!¬©XÓ²\–€¦“\…÷¹A@<7¡®7da£žÑâ˜<òvƒÔZ2€Iâ†W…Á+S€/,]žS¢f¨DÛr›•åîL–´oZ ®b×k>p—v%½÷4—œçPßÿ¯’ Ãc%¥âƤ©µQ–s埂ÓwUÙgªð¼®ðàh:Šp«°PÞHuùPôÑ|„0WâaÍFìJ%áûd‰¾á{"V=Á̽nµn—Š H ‰Àü¨½w`AušÀÄÁããĹä•ÎTì“%æ’•H´Þ &ö5ÛÖ%3 $]{æ9/˜áÈC5ƒÅ'äíx]ò¥™ÑÉÑUa¸:ÑíVŒ:NÍɤk(P3b¾š þJL·:0èîi{ÕݪT—¨ôÉF•«ãõŠ» 9öôépøAVx'Y]f¹7ý”ï$d#×MªNW¸ÏêüHtе}ÿ7­äÕ±Â.U‰Ç’ƒb:IGs‹&îà•ø_ÕXúQ1ÐkZy¡‰=£Ž¼¾:C ?!+¼0…ªD#ÿü]r‡&먞±Íäšµ†¸.w\5"?íšî²ss_E#èÝÏ·7æÕSsx›Ñëhœ¸`«lWíµŸ ΈjÅ×;©‡ÜÐ 6 _¡ˆ—ýµËÊ>úÛyúp73S1$÷¼ò=ƒŒ*…ýÞÕósd2ØåFËi%J±ãÐÎ/¯ß¾›#ÓFèôâþêÆ÷Ìæ}:–ÚOEˆÿÐV6ìUέó|ŒÂ1‡ìõ«\8Ìdi%LîáW£9Hx1LÔ‹¹1€ÿcsSJíKEV—™|Ѫ¨[¾åëf3ÝQóÞ«‘ÍF=+Æ™1”G`‚RÁ _[C'ýýìý]úÐØ·þ¾Í^@ú)“#üÝ[á_ú :~~Øòp¶°N‡)v¦ôß½ºb¬è-?ªxMªò©£`Œ½ú?ýè†t˹ íY–ú0‡–÷¿ÙÏa~<îÞ féwß&}7= endstream endobj 1210 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1207 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1210 0 R >> endobj 1213 0 obj [1211 0 R/XYZ 160.67 686.13] endobj 1214 0 obj [1211 0 R/XYZ 160.67 359.11] endobj 1215 0 obj [1211 0 R/XYZ 160.67 266.62] endobj 1216 0 obj << /Filter[/FlateDecode] /Length 1729 >> stream xÚ•XYsÛ6~ï¯Ð´} ¦LàÕ™<ø5N•Úò´3U'CKÅ–"5$e'ýõÝÅ"EÒIúb-îùí\溣Ǒþy3ºXœ]ËQÌâ`´ØŒ¢ˆr4‚E°¾úÓárü×â—³ëðxÅãñÈÕg—oÏ?,¦·c¸.ÎÆ“0 ùûówSÜ’Îo÷³Ëww‹q$œó[ü»À}î¼¹Ÿ]M‰mtd;ñ܈¹ȆOóÿa<ñ¹tÞ'iŽ”ïìËâ±Lv´Xª"*/j"•"¢Þ¢Ø×é.ý7Íi½*vû4S%J+&žÇbŸŒù@Ì—ÎVeYñŠdkúãªX~´†¿{U.Ç– Vev5½>¿¿YüÜúüÇ¥3ýcJ·Û¾žø,{9g±ÔÏÐLá9*Yyèlqå:Õáa<ᑳNKµª‹òó8âªÆÎ󘎢{»Â\Û|&6脎“½370᛿OþQðFW16—*â•æ OMdéC™”Z·ªM´?À¿×¾%•)†JÆÂ© úMóªN²ÌlnÕÎn£át‰ 8‹Œjà×›ÙE߯"`ÜÞ9q 4æÜy«JeÄUGˆ(U¦žÆ¾tP$rjÒƒ¢‘äŠ ô‚X#µhÜU”3Ï*±)г„,ÍEÖK ?f\h€qØì×Ë›û«éáë§×KÆìïÙCR¶a©?ºžÏ?^ÏnìWæ#PëcÒýœ¸«“:]]ÞP¬g³¥³S þ&El^+8nfgGÙËñS€$^ã5~à,!k$CgÉý¼§é<Ù© ¸éÌw’ìÔŠ¾Büà/Dô29"àÖ>©·úcô—ç;¿§õ¡|Ð& ŠqÜD±§¾à=ÑvY p³KãçÀcò«8–,°ÂÉÆ2M´ ç NµÙmõQs&- ÀĦ'Äcâ~ ×gn Fq ºsàrF¶”´PŸ’Ý>Sh£é„VÉšŽŠ þzÎZaÔr]}q(¡cð„‘Äv·IÉaG¸PÕ>)Á Ùgñ$3|S°›¦®¢·^ª«xöŒ÷Eo•äDkÌvZS“Kó&ÈD{,"ºŒ¸%l èÈù¹êe:wYÌ_Nô×Ç|ºÏ}³í)LM<§¹àßsØv8ŒÀ[|ÿ ¿_h5î¹”C ¡žù…p»ÃáæÜ«°m ¾í  3L|k‰&ªºDðu1'æ5iA>­ –Ö>ì™íJæG§I#=Ø;©Ú­ñ`]ዬ|S¯Oøë!lد•zÈY£´8dk\Á¹',ö™ÏOŒÕ–ñbíÿ6c'Ý6M%Í…Q¬Qš2ŠàÄ7”<¢m.Ñ‚°oÏ™ßÔ(­í hï*FLŠ“@MzâõLÈöÈ w!/ôÌË‚1( Lç¦Ü…8R’*Cô»*ò*]«²«°«Ó‹Só-°]vã1‹lP’¬B~ž1Ö™®æA Ýku(+l_TŠà¼[²Rjd2v®±x%]kUæ?Úï):•f #’7 ezÌDp„¤ô ¶µƒÚtî1Z©lC4¸Iu0Ç£m0gUŠÌ*“Ìl Z@] ( Î ¿e¶ ½c}j#&>Û&bh³íaµ¥-:0FSˆ ÚwÕ)žõ »»¿¸šÝökšÏÏÜ©“òQÕØ5óMä¶›ŠÚ´eGö¶DmÃàƒ¶ö4¬z ÃÓä3ýè{pîÿçð•Ì’à )Mf…&³.i¶¦Ái~™ì2"Í¯ê ¤œšÍ€LBƒY«MrÈÀ•Ý‚!›¡f0ý„ÛÔ4ýÒ¤¡”:­±Ó?Jµ¦³g˜élsÈWuZä•YbÎᇣ=¸mìAì1éIŒ@+ÚNL`hc =>„n[€^ê¤âè"·yãB¿y‘Êj.hƒ:d ä¾ÔÎ'­‘h—”¸))f´8·L9-2ØüíÅ%>«°RÖåaU7“&@æSZ*Z)¸ðõ`…›Zoœ(NÙÒå¾MpñÔÚIè’}2 ½‚— D³_¨š·>ë; 0lýToÓ¾:…Mp;ÊÖ¬G ‡³•y «gž.­é¯Ø«œ:ݘ`êMïI—©šÎ—Ž_Û’è4ýý[´É4È¢ÌÖËeþ}o tYè·Âs3ÒÚpt³ËÇüþJ}ð]&š÷oi½“Väž*¥@£˜=Nð\û[­†ÆNnlEn¼|œ¨íe[†¾û¯2ßb endstream endobj 1217 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1212 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1217 0 R >> endobj 1220 0 obj [1218 0 R/XYZ 106.87 686.13] endobj 1221 0 obj << /Filter[/FlateDecode] /Length 798 >> stream xÚÍUIoÚ@¾÷WXjcÞ—J=6)L£ªT‘¸2:ØMòï;àÚNª*—^<Ë{ó½ï­Vt¨ëÊNá˕һCO `à*ñV±l車fYl‰ÃoÀ„T5Ïó@1‡£É•J¥6˜z×c¶µÀÍL5=0½šõ®çê÷øswh_ð(’ë*ºÀr„Ø?‹5Ë lE3=~C•ÞªšcÚ`qDlã€â^nVOÒÖx#k¼?¤" ’âk†‡#ô¿ÆÑ]4éõÇQ(À>J(R¢¦ú¤¾´?Ø&Ù±å÷}0÷®æBý½Ô×v'eÓ‚Qõ§_¦Ù¦æÑàIöm’}v#¤Kp² w ßß±(,Õæ;FÃÞb¨(CRæõ¬h |NÒõE ÐcÑaÙtÀ±<TÍôf`7œ/Û<°<#‘ÿû„~Un ¶§*ô¥¸ÈÒIÈÓ vÅQ7)Aë“)KÛö9|­,LÇ–)«f‹q¿@ý$ÀÞø‰‡…š  é‹àˆÂJ”‰­ƒ’ÊÙÁ©\!l!ã{.«„´qñ¥øÂƒ ‹F›E]ä˜[µ@’o¤æ9žÈ’·kÉ3raI½Ó]hW+àXP¬„lDgru<ú$¼ÈÓǺC¦ MKÊ÷X$­Ìlô®G#LmCìVzˆ¶I™çÿACrjÙ|›îJ’)Λ՛nÀ»%@?Ë$èi:¿ÞDKµ#nnÓÜ2eù›:ë³J–¡$;r-Qº9Îð7^ÚØ9·q7¼M,S®ãæ+ôxÀ¤•v¡ …§¡ÑÔÈíÖë*´û,¡Ë\y‘:ÿÿ uÿe†VÝ9ϦFÛ¾2JšŒF“ÁxF5pZLô•$FçŠJBÚ†)gøá(œ/úáh6—3¹ªþœ£²J„¿­ÞGýùŸQƸKõå¬lý‰að7dîõ]Ÿ²eø/îeGéYÙ(;>fønÙ,yÎì4þÍšÆK9¥ZÝŠOFö ­¯þ¯ q¦ßªdõìsÛ–+Eñ›ßVd endstream endobj 1222 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R >> endobj 1219 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1222 0 R >> endobj 1225 0 obj [1223 0 R/XYZ 160.67 686.13] endobj 1226 0 obj [1223 0 R/XYZ 160.67 536.41] endobj 1227 0 obj << /Filter[/FlateDecode] /Length 1787 >> stream xÚXmoÛ6þ¾_a`û CIÔÛ¶Èk—5]¶Ä-ÌCÁØt¬M–ûÓñ£é_³_Ž.â–ÅóÓ ×´ÓŸ›ßL=p|6uã8v®ß¿=Ç#áüþþòôíílšÎñ þá¹ï¼yyvNb;Í®ç Æ£‰ëÇúäÏÖŠ¸’–ËçL$Fýª,®ßÉÔ*ËÕP\ì±ÖÎÇ©;å._’ú»©ë'Ž"³e1÷Ãø~W©%Y-k¢HZNé4Ïî*Y=á+ØÐ(7 Yœ‚å!Kc­ñâúúãÅåÕùíÔ }á¼Æ%Dƒ?Ên{‡rÀDx9KC}ï¶‘M¶8½"esÔ œ¯HÊwóNî|:ŸŽõ‰¶Âû"üîdõÿðÛe¹Åª Þ]ÑÚ¢ä@)õ÷û(ß@ ̲(áö®Û.Æ€]ŸÊMÞ‡ ø:¸Z®ÉùL|8` D/â}Î1útȳd *@)èqè LÓÀsÆJ®ññË>•;ª*á€;eCçÄ\€ø z:`~ XðwµÒ9ÍØA‚Ð0>ëÊ|î&´y ÃK™è‹¨J°ÿöU`S q\‘q]eÅ=Ñ$Q¶ˆJ9«E5B„Â&82 úþ¬Ÿ ¶F~Ná9å Wß^+Ü~<Ïê–N›Zn€ˆ9ÄiӳжU™«þÍÀ©óì~­uæO¤s™ŠHUŠLÑu;ÔeeÌ*Ô8›5<uóÐQxWA*¸AÊ ¡ÆOŒÜ˜ÇÎeA&S5¾7ŠœàB§.À{:ç‘}]¢øG#¶¤Õ4 ¤76óɸÞ3ze% ø„U»Lwš¡]'ÆRž¢(ŸÅäÒ_Ëj#ó\³`´p~¨vF>ó>—?"Å^µŸ?~JÅÃO3J”~µÍe£tpêH_•yNˆh„ðjžÕMûaåHúlõi›-dnê# CÜë‡+Ô…Í6Wì@cO÷škV,ò†¾é…·³³«Ë“ùôH{ãè´ÜlÊb\Ä>wí«oèýÕ·®äLýaoA·Lõ¥o‰ýF-!à E“^Ü,àIPܼ%=È*“w¦ï§ý™–pJW>Ȫž;ÌÌ4ÎZ» úBC½ÇOt&®[Y̯=!¿tjà`·ïOÎ.on¿'}ìÍvRq›ïï0ž!JlÐ#LXù`¢k!tΙMÝ4²ZÒW×àaD- ºØõbà(øÅpë¹ÀJÓ¡Ç,ðûOî×È›H$‡y̳÷Âä@­ã¶ÑUj[Á´P` Õµý™ü™ðÍ•rsh ãÌ-X4Ø‚0¯_ƒpÎÓcŠ$–EnØ*åšÞÉcœçzoÿw—Ñï4‹‡]³Ž0®†Íf¶È¢Òeòžñ ì &Úª„ÂK@£ªi/+£¥Ü¢v™ÿ€M'2ƒ0˜‚ƒEßóáèz8e¤ýäz¡ ôm„›Þ°¼†œÊ"¬6¢üÐ⊻Ç5öJ¤ëPÅ£ý¾…'ûÓ2Ï}%7µ©¬¤»ç“Ç*ktî7 m÷3mæ@´‚_B‹ú¨Â Ÿ¿‡€«]± ïà ¢¡Ó?¥~ ¾æÕ‡iˆ^3uMéNœ`'Æk0¸EÂL>ãÔG×¶•%{Ýw£Ç)?Lªž Ç™ëŸÂx&«ûÝÆÌj5±´!ɸ Á€ÙŒàcü?=ñÃñÍëd¾S?²7f¡Eb>Å&ê,‘¡ý]d+æ¨Ä &zެ dbÀOù ̼‘Æv2ŽLÅŸBJ4”½ªŒzà…•ª>îš=Ãá¡­ËŽiXÇÃ^áyiºã³zm~ƒ2ûß ý€{Ø0z©Y)¹Dˆ¿dpòÓä™Á©­µ/NNb49ñÖTÜ·ÿˆÑÔŒ)ö~º?€»Y±TÆÅ²ûm&üÔ96 b‚;¢gì4î~(,0>ĸûaЙ ©@€Qo¡ !+h=äG~§C?ŽÊ@(XÒö¡i0Y ~‚Ð0¾ù !,& endstream endobj 1228 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1224 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1228 0 R >> endobj 1231 0 obj [1229 0 R/XYZ 106.87 686.13] endobj 1232 0 obj [1229 0 R/XYZ 106.87 668.13] endobj 1233 0 obj [1229 0 R/XYZ 106.87 207.26] endobj 1234 0 obj << /Filter[/FlateDecode] /Length 2350 >> stream xÚXIsã6¾Ï¯P͉ªiÁÄÂ-U9déNœê­ÚîéÃ8Z¢lN(ÒERVk*?~ÞE«groýÞ{X„"  ~Yüx{õ&Yd"‹·Û…6"+­q¸ýù_™X®’$ Þ}~»LUp{ýñíë%ìPÁ?_º¹þð?LpóùãÇŸ–©n—¿ßþvõÆŒD\/B&˜àïÅë[º9ZH#´ñ®Ž¥H•»z¹’R™àݾê˧ª€›’(x^ê0(Ú®lj\0A·z‚™ š¶ŸÞ.VJ‰$"ŠÞå,U!¥5Â9¢cép,Ž…1–ãTOéªT˜Än(k$Ô· M‚Í~]lð<µEUîÊ:o¼Àœª”8¥•mÓòd‡4¬œ¯`)ÒAWºÅ¼.š}GŠ[eFdrŠKå‰ÑÁÁLÍGä<‹Kã&6ÁçºüŠÖHB°FÑ¼ŠÆ§S¨þª°—mÛf7•Y¥™0Ñ%]9ŸÉ­çyË‚j©''¾€™÷S™ˆ.ª×0u¾+@kŒ"†Áý¾g²uqÀ‰ôƒÕœä†Õu[ä=F.~”õ¹ã].[XŽŽ¢8x×8â€ë²+ª#Æé )\òã_(ébdmxÞ#û$Iƒ é É²æ¦8$ @Ï\œ|@]Vã$¤S6p;=-#g£- ˆKRúyÙœÁiˆä0-}F|8#ݺ )¡±îJ¹ÖfB eOpáNÌÈγ‚ `4ß[pØ"eÄOoÞþðË Ö,Qðïy\=œÛÊ•8«êoi쌔ΠæÎ0àˆ›Ï?þ|ýéæ;oŸ…ÙPñþ"‹ôÿÅ#ö”ÃhŽÃó¯T,ÒŒYeuþ à`Sé€/cÞ ¡lÄ™%„r8ê {’8ÀM«ÜW\;¯1,ÿ ’#c@…Üé Aþb¸I·nþì7!¨Ý0 -/ã¾ÚyæŸGŠÅ½«SÒ¡ c-îZÜÕ ¢(D~]Pñ  Dw¼F ãåDå#§õøÿš» vb·«ê,²ÔXž#aÚR&¥bG^Ë+¬ÿe\#€™Œ“U‚É uLõ¿ÁÊ$ïùØýø½ÊŽgsZjŠ.„~zR>¹ÐGjÝc³¯6®€ÖÓWöý`ã,ƒ’·æ,ŒšÎR×y¡£d‰u ØÖçíCÑóKùçU"ø ¨,6TžDT»ÐY&\»žì‹TrÃÚ—²ÖÐæ€c#‘NC YÄÝalC$„µÙǸÖñÒ˜SýT­õÓôi`§-ï¨ÞÀfœ{(8©·’õ¥kÐgÏgmÀ¥XCJ[}C¦D-ih󸘆c…ÚñV&®lRÙRZÙºF’§l“êxºaÆ©°rãK•ƒÒ¹½•Õ–K:Ì‚¼˜zO)æ@XcÑCíFBu´c¶¦%²wâÛƒ÷”öÈÆ@8¶(syz˜4;‹Û¤ —”x‰½üÄÙaZ0šÍ\¿R2:ò :„ÙLj•±ÿãØóȵ»à¶÷ ¾ü°S@9ù5ßñ#…Ö¡Ó£r‘“ùfBgú¤p¹Â÷˜b[º½#Ÿ© FR\ Óæ•ƒd%B3© ζÛF€nafßmehnß7}ÑY‡ž+Qµ3¾ËÞ©øì9Å{çøbÓYlkMšÎ¡Ÿ£^Œ£ÏÛ{ Gï°8ñZs¸Ë&TEø‰¯ öz›&Haad!~Ûö™ FèÓžûŽU(X{q•ƒ¼r…Nl'»á/ÿéÀ>æèŒä†–µ+&d=Oê?/˜ngGÉËš¼šŸbñÏ<̃Ý8ÅàÙ6h.Á ‘dÎÈ@wˆ®:ÌlºÍÒ±‹½_ Ó“Ê€™?”•÷ÒÆ/Ôšî]&>ÃÑŒâ!ƒ®*^˜<#t‘á]›¶råH¯.÷ù=¡.|1.døô’Û™ë9èÔð¬‘$ÇPp]Û}ewn2Ë7jk;1œ“1œgÔ˜ÒãÊE¨Sf¦`Ð(9.×Ú÷ŽQl‰÷Ïy0Ù´ä åoÿ£wÙ» endstream endobj 1235 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F11 1186 0 R /F10 1169 0 R >> endobj 1230 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1235 0 R >> endobj 1238 0 obj [1236 0 R/XYZ 160.67 686.13] endobj 1239 0 obj << /Filter[/FlateDecode] /Length 427 >> stream xÚ]RÁrÛ ¼÷+8ôð˜©B ÐÑMì4ÍtÚ¦ÊäÐôà‘q¢FF eâ¿Ï'ã‹x<–}»‹gœ“—Kòµ>[IR±ª$õ–ÃJI²¢`÷Aú¯þ~¶ÒGH.*ÂãÙù·Å¯zyC^€`4ÓZÃÏ‹ëehIø}{u~ý§¦¦€ÅMøÖ¡/àòöêb™hs~äÍò\2^’LèØÁ÷¢ ÷®0®iþÝ£uÈ(s˜ÆÖ=„’ƒ´éŠ9^Ñ‚É7ÍÏ»~ržfJHȺSrÅ™T3²ßû¶w_«@%JwvLÓÖƒME׺'*4ØMšÝº°óý»’XRi4¬¨0¹&8ª@øÚ§‹öe½k]L£ø(,·žÓ8ŒÞîæfñmž†oão‘~Fؘ²gŒÝÓÓø¥?@ÂâidÞ­C¦‡ôçD+ÂÀfjf)“³/ûØCwñŠÉ8u~dѲþô r¿u endstream endobj 1240 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F8 643 0 R >> endobj 1237 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1240 0 R >> endobj 1243 0 obj [1241 0 R/XYZ 106.87 686.13] endobj 1244 0 obj [1241 0 R/XYZ 106.87 668.13] endobj 1245 0 obj << /Filter[/FlateDecode] /Length 1681 >> stream xÚ…XKÛ6¾÷Wøˆ‰Ô $i¤h›C¶è¡)Ùæî²«‡!JÙÈïµ s¢æ ¹H¥Xd‰?}p!“¬™Ï¨—œ*KE~Kœ ºª3³*e ¬‡– ¼¡0%Ca Ò¥¡ øà{†Êäd(1½R›  oŠÏ‹o±™Ñõ%ÆlêÚ•\5•ñBå"/Ï`–MUàúN?â$›mµþóRÉ .€Ç¥’€JÙ“™–@.Ïç'þˆÐ)¼®­fEàŸAobšéùs:°òTiqB›S‹â?DüÀK_nÿ!*ƒk s5Ô4MNýµá;·ÊüK ¿l0U¬œ§`Ï7óµÝgÇ®*ŒTE p“[¾Œ%UФx:&ËQû3šÖô¶\>| 1ÔØÇ¨8vAK?Ã4Þ÷Iåþ­Pß‘³KÎAÍ'Iõ ywG&ÃÙ[ÉÜSP ²Nª"¶ŸÖÔ)¤îcj¶n—ÅÃ]äÀû–Ö­æG”WSz+ïR ›[×Ë|…'öÜ]£ ßCÇ1[jEqR;mô¡†ÓíâG©]zÔÀT”" ÍãWòì_èõé“Ñ%>-ø›“Ä]~?<‡`lƒ·9¼ª¦ÁÍ|:B8s{?K©©­Üó£¶œ} 7¼uGM‘L½;/õîÓ?à+þùÒ;®…/¸…G,pŽVþ‘Ñr\H|o.;S%Oõò)]õt–p gÈp ‚ƒ&6hú{!¨·ÓxŠÓ æ´ÇåSå!ÔѧÌ4n|þUÔ3ÉLðß:²¢Ÿo~øi¯ endstream endobj 1246 0 obj << /F5 535 0 R /F4 527 0 R /F11 1186 0 R /F8 643 0 R >> endobj 1242 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1246 0 R >> endobj 1249 0 obj [1247 0 R/XYZ 160.67 686.13] endobj 1250 0 obj [1247 0 R/XYZ 160.67 337.69] endobj 1251 0 obj [1247 0 R/XYZ 160.67 316.14] endobj 1252 0 obj [1247 0 R/XYZ 160.67 158.91] endobj 1253 0 obj << /Filter[/FlateDecode] /Length 1893 >> stream xÚ•XmoÛ6þ¾_á23%ê¥ ¤Mºeh›"IÑ˰Ò6c«•%’’Øß”dËI»O¦xGòá½MSî©¢8!­²jhýê·kEòºjõBÑ¢ºÑí¢iµ²&ŒX -˜ÛkþÓæ¢aoòB꺵ñ´‘po£Ì‘f^.—V½ÚØ…W5‰Œóà»Y[ÁÙÍëKcØKú–ºa‡¾BgpˆáÐ!ÛìþÞêê‹Z4Æqà§ìg³—Ա²ÒÚ&‰ðî¼J£Dx×0ɪÍÝô»ËïóB •È“Ÿ;¥Z/YlDJâøN#-‡ `¤?¸ÕþÜk;—ãÕŒ±£7r 62/ $I˜E=âs¯õÔá{$‡L÷ŠÈ¬7ÑÊ9÷tUØQuO¿J.0oÖ‡!gÌñÏ/Ë\¿<݃·GÅ>R1©n âž7((ñ”ZnÌ( õA2F‚ùÁ†§ $!ãNó…å ³yKU/t>'æÁò…·®ˆ9á#¤|‚I¢B³†RËï“=‚`̆Aš°(‚¢ oR0µ#²¤â Ëf@t ¨UqTÓÇÅmo8ð6¦xïÎèbC;â0ùÍ2B騤ã+óIúQO%û(,kÏÛ¦+æwS9ÒÆJçêƒS²4ÕáM½5ñ0ß¶Pš2ÇQeÇìW%b°0/‘cp¸ÌH ´X.¬Ðì.b…N«º› õ⨷«/cQmì>åhP€_dD™)¬`#rûCça¶ã(ö¶­¦WÕVfÄÖ'˜é={nŽb¾Ëe¾]û¸VZ¹åvŽpÆ'Ìt8)Þ‚ 8É µGÄc5¡“–ÈÚˆ(uÝØHËRÄÃHƒ´_ؘ¹³qA}ψUxßÖTGûžŒEqÑl”›ð}ÀØ©È}&~ï^WÒ6 [ÊlÈ70H¥wwSL­ˆRë0EcSþ謾²> «T+ý`ηÀdm¹ÆlÕÉn@€s 3ëÈ7¹%¹ýgüÆ®òsÒjvMã9’³éõ2 ¹¤¦ˆwýe·U??™KûÞàÐymR—‡=¬#ŒjMÇêa q/‹V6ye} ñ{`Å$e"ý#¦^-+b†>« $:ÏÂù%5³t<^häG(ªbÏÇJD”0?îèÖÆ1'ÆìX§‹’aÚ@^„vá<_Ò&f©»ÚAÁ Ã\6ÉÀò²¡Ñ°Q…­ ¥ï+½±ºr#µ{-¬Šj>Ðî£ÜIYâÊR»:¯!Dx¿uÀîÑ#""3DK“aà ƒ*dié¸gTâb(ÏÉ÷r¹KÓdø‹[xÌßø,…&4Ì,ó¨`ÜfÙ^>Àá‘52¡kzÉœØct¤¡¾dE}Hcuê˜(€p¦XàÌ…kO Ÿ¸ÏeNZ’'žÂÌÅI$qI˜› ŒÈ‰¦j½]ÝÖ&ÓQš¨(ðØÍÇWç—×7T19Kø°þ€Wª±t÷_3¦nBÖ¨oKí±7hºƒÀ“)øðæµúké8L¬Û#Ì‚$Ã÷¹y,‡”zö/ºfÔ¼ºÇI·¦s_3&ñ0f‚§ï‰’òÿwÈ‘ˆ?s‘{J×ëÛ¼êï=“$iŸÚ­iŸ87HmÚdaÕ44!…SÆ42¦ÁÁ€¬m¡¨TA˜ZÓÁSüi¾ÌX8è,(:lØu8.)Ûk ®»b5ì8Õ×"Þ˺骵{*o6HìºÙ®;ÝÚVg¡êz¿Ù¤„Ur{,ÅáÝÊÂÚïðÒ³ÜB#E,M±ù¿oQ•˜¬«VÛk Îcâ˜Qk"{–,¼]}ZªFih|ßá¼Çuniæ³' 8Vº¸Ÿöÿm3³N]àžwŽV"ß7ñsXN ”Д-wS Î(ˆÉo(éZ’,#³à¤{"ÁÜÐ`Ô8 ɇ£îb#å¼ügÃ]—íˆ{©l},],A”NÏÕà·Eãþ*)•rïþ±¯=úXV¥rañÓž}?" endstream endobj 1254 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1248 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1254 0 R >> endobj 1257 0 obj [1255 0 R/XYZ 106.87 686.13] endobj 1258 0 obj [1255 0 R/XYZ 106.87 365.33] endobj 1259 0 obj [1255 0 R/XYZ 106.87 170.11] endobj 1260 0 obj << /Filter[/FlateDecode] /Length 2398 >> stream xÚ•X[¯Û¸~ï¯0Š‘XÑ…’%ô¡8i’í¶›¦Èq»(zúÀ#Ñ6÷È’KÊÉýóåkÚî‹x’Ùonš%q’Ì63j¾›½]½ù°œÕq]ÎVëY®âªœ-ò›Õ»DyœÆóÅr¹Œ>}|øÓûÏó zŸVs É£¿=ÆÜ¡µßÿð~þÏÕß|P§óलœ%|VŠËpzZÅËl¶È–D+«­qŽJT¤CÇ›/x™qºÃ‰<Òí—yQDºÇéQoŒçùqà ãÖzîí`&«¢ÖtÀŸÊUôÁ:?¾†Å4‰¼íºÒÝч]¡Ýtóî„ÚŽÌsªâZA“ÆuA,#uVTѹ94øÝâ p¬½5û5ñ†­éý†;Æ­euk¸ó|°]ËÝfèŸà”ÍÁéÑ=oáËhØ ‹àßz=òEU¤;ä8[¢P–ÈtrÍo®Òhè»cè¡Tv}%ʬ¬£‡~À£˜ö™jzƒ„#Ïñ‰™¼gè=8%ïÁ¹›÷àz`Æö‹[NáR;šV {<()£F÷¬5á…Î,^ˆÓ¨P0_…ÙÎô¡è>Çy¥"Æjž•Ñqo Í˽²¹Œªp #c»š°Õe\lú¨_ÌÚvæÚBFd´·$Åñ«rØ쥑áµÚµ<ÏïàL·ïô(4$\¾ìkÔZ–S±$ä…-’åá3KâFüþðLn­3Í88k|°/Ò3ZI™¬S¿àTÔ”O¶g×G1+Ùô¨n+ ã‰Þ˜V.xÆÆhxÀG¨HpŒuǧy|Ëû •¦’®÷ä.¹‹ŠÜ¯ khSßÁy™# ¡kØëÆ  ³:¸ EP¡eÁý“Á£Ä$i¡C÷S‚I~ßß²ºwº-]‘gÀÓ ]*p¦Þ˜ç.JÛ ò8ÐÜ€þãúߨʢaš$Ëy#Ž@=ž‡‡=U…Î W:ãå.z¼\»Õw8>âfºüLÔÿÌþÿÙ±áy#«â»{^¤í´C5`wfU”ÑO€1Ïš .6‹“”.|$Ã@j ¡PDB-Ù'ðwþë›·ïxv'ïæx³A¦Éd‘𨠂_Mwî3Å ‡\Ã8J§#R/èù !€;œ+\]¤H >ö­·†ü¦R¨?Ñ ÅÇ‚‰·Ü3?ƒL;ò`y–BŽ9¾ò¼¢ý w8¥Œ8(Îyð¯胋Üøôô#[Lºä’ñ|#!°4îN¤1\á«âZ'!äªPBç<e8V× ÃÉcœ*Ašgݰ0÷kÆòƒ@2“i‡ÿ:©®F/pë¿å_¨ßúþržŒï{ÍPâš Ö¦(“Oy>Ià7¥’#ŽÏSšRžVòÓàTA#3Ÿƒ\âawŽÚPŠM <½ãid%©»*ð]nGeÔižttìd‰œn‘Ç]¨»j8Qª{år!†ËáÀ`yqóO‡E?¸…ÔCUH.!·åt {kŠ0•¤Gع*c5äD«°ñ |,ñ‹_YÍØT‡ë{TèÅ’¸{5$Þ^Ðí /¤!Ïܰ‚üx@È|£ÀZÍAˆ-¨)6u_£" S ?*XÏž`UcÝÞ¿ª«”¶– VZiåw\Oð¦[c‘XÑn QÎÚóäÅ?!Œïÿ‚“4ÝaÖ%Žu+ ]]ÇøãT0UÉþ2¡?Ïò a2ݹ½Ã0ü9¢Ôn3a/Ëþϼåó¡¿I§Rü/ÊËXÐÃc ðæ‹…íA+€‡«Ó* ôÞ£²kçë“s‹Eªi«œùÎå' ûÚ„GeôgøoLþò¥øC òK-w½d*õëÁä\Ò7ùp°–M'àŸòV0kÚoþ I/£˜€O(þÁ³(‹xYIðÌ$x>ô,%Šñà÷Ü<Ëœåùß‚f0-U«³@ FUäEˆ*Xv ‰ŸØÓ²fù~œfÐÅduôÃÙ¡"Põä-ñ0ñöêÆVqF3ÑúÀ˜ºÎYÎ9q†ƒ •üÇ4ßo.þÃÜ1¹)© JøÕ­Xj endstream endobj 1261 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F10 1169 0 R /F11 1186 0 R /F5 535 0 R >> endobj 1256 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1261 0 R >> endobj 1264 0 obj [1262 0 R/XYZ 160.67 686.13] endobj 1265 0 obj << /Filter[/FlateDecode] /Length 710 >> stream xÚ•T[oÚ0}߯ˆ´— -†\¤Ò&qkËDKUÒ­Ò:µ&1à5Ø‘ãl íÇω4%iKŸ|ùÎw;ß±µèt´µ–/gÚÐoŸ:šƒ>. endstream endobj 1266 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R >> endobj 1263 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1266 0 R >> endobj 1269 0 obj [1267 0 R/XYZ 106.87 686.13] endobj 1270 0 obj [1267 0 R/XYZ 106.87 274.29] endobj 1271 0 obj << /Filter[/FlateDecode] /Length 1437 >> stream xÚ•WëoÛ6ÿ¾¿ÂØLÆ"ZoÉ6Àuœ¢…“» ¨‹–h›‹u ìß²eÙéºO"yÇ{üîE ,fYƒÍ@}Þ ^/F7á`ÌÆÁ`±¸‹‚éºøY\2\没†¡1¹¹gÌþ˜Ü¾ŸÏpã÷ÓÉ휖ï? и7›.†ŸïF7ÞQ*È ‚E]"G²éÚ ½é„ê˜j^Ëx:—«’—û¥‘ÊÕªÙ\ MßñŒ¢‰·¸òÏ.“åEÂ}‹ø¸l¬¤dû?ŸÊâo×£ªŒG—ùèþ–?еLÅ+uG_±m6öÕHÇC‘ Ò¼-e§M¢Ïë­^°íFMb#°\)²H ¹÷ön:ÿx={ ]?ÿr‰ûà…¶èmžÈ˜×Zén+[R’luïZž×ÚÒ¢eÌiÅ7EU³®eäþüíë‡OŸvµÙ]²sD19"o“Ív×è×L“^’Mɳ Ê»—´7Û¢¬Ä:Ý3ñ¬¯Ûßeî:WÚŸ<9e?eý˜Ëç—Õ-¶‡H—•†Œ—›&-€²ê¹ó6;ŠuvÆMÍW©ø•ˆ‹ÖôË*yÞRK¾?UY¬0³Ïroiìd½-M©šõZ>ë ¹dL½å§Ûñ²~Á½KÁ£œž¾'Òò]®§1Á"ЮlR"x Œc ÜƒÑH£²£Øtâ¡‹â·a,%NYlBQH³Ë‹"(.èP²Vݶ‰rr—õ$8ÞJI¡1TYÕ¼ ÀâQöá-ñ̳§T(rGÆ—¡Ý>mqAC]ÂÇÁx3Ÿ ¢7蛣¤ò·û$Ňfƒ\¾åò¬›µùbnh8˜÷g êÚǺÿž€œ-ÔsßÇ6ãz÷¾"-§}ðسa’LÐÎÐoݧÍý”g)-!±†fàêÒSn© Ñ[p.êŸ*ªðR¥$fè)‹#ÈN%TUMF´î×(A›êÐõ´QxŠÏZÁÚ¨º€ï”µu¥Vfâê|–ÒÔY‚WEÙv—RhBZ(û‹Çªí.‡aââ‘m?éL:ýWÒNÜÎ_Éù[àÓü•¹úQ)‹¢þO&|ü3ýu`ÂD£—|Àì“ÔAß ©Ã…ïþ *PŒþWÅsãƒR’~÷/ˆjÑ endstream endobj 1272 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F10 1169 0 R /F11 1186 0 R /F5 535 0 R >> endobj 1268 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1272 0 R >> endobj 1275 0 obj [1273 0 R/XYZ 160.67 686.13] endobj 1276 0 obj << /Filter[/FlateDecode] /Length 837 >> stream xÚ•VmoÚ0þ¾_i´ÆäTÚ¦PhÇD•´Ý4&fÞ‚§-RüœØH í>Å/ÏÝ=w÷ø@3ij -û\im¿zYÓZ åjþ\k6[Ó ÇM±ïüÔZå—ÿ­zÙÈ!–%.ëš™]_|õF~÷¦",Ý£Ñhê^§Óó{Ã×—çíÛ^¿#—ÝïÞõ¨ßK§ÍܩẠÑÒ »‘ÏÏÃvíºþlÆçŠQKšK°Špj,â–ZõðïxIq(ðeøl1©fÇNóÀéUÓ‡×ð/šãíûr‹¨%e1šG›£1ãð äj9ål¿I†ë€º¨•Üffâ/‘,o„cŽÉBnpœ~k:%ÑFž@ù™a.oB<±ë.bˆTì†ÎA©+V ´„ì°œ,Òj3]3ú¼šÕ„QÊϳl´ìý<ÞËz$ˆ’Éjó¥ZÄ©œ u¼;Ee[L¶÷X‘ 1U¦lÊ©‚ñm»Ó»ŸËa¨¤ñ­£ÍJýܬ1â2z²þ†•ø /¼ëþeß»K·?I3㞪R‡JÈ£Š÷‰¢ÂÕMk8ÛpÐp×¼µH•ù¨[Iåˆàÿ€ŒJЗŠa™uSï#þ!.DžQ¾Üɳ$ f×CôWëéàÀó{wÝiwàµûÝŽ´SEâ,AeƒöÿuøÛ¤³@-’Y®²r6‘¥VE™U&0oUÚ j;Fů ?³Ýý¤ô„É[)î) T„‹cCˆfûlŨÈ®TϾ¬¶ª щ2ùÇÞHæSY[æ©Ö¶ÓW¨žÈAÑJIUQ‡ùûå88À“ ösg£4ÎÍfÉÀÃdo ~ªÇßÏÔ1;çÚÂï1qlpò‰(Ï5yQ4aZ§íÛfÈòücŽTQ¦˜/i§[aÍçø ë„ø•èË‚Lë35.Ä߃ÿjÆwýwÿ¶Zw endstream endobj 1277 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R >> endobj 1274 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1277 0 R >> endobj 1280 0 obj [1278 0 R/XYZ 106.87 686.13] endobj 1281 0 obj [1278 0 R/XYZ 106.87 369.27] endobj 1282 0 obj << /Filter[/FlateDecode] /Length 1985 >> stream xÚ­X[Û6~ï¯0Ðk£1G"©[Åb’¹tŠiR dNQÐ2mk#K†.qüï{iÉ’f‡}HH‘Ççò+gæ1Ï›mgf¹Ÿ½}ºº‹f KÂÙÓf&$‹ÃÙR\žnþœ &ÙbEÑü×ë÷7ïïp+çïo?ãF̯ßߺ^ðh~ûqñ×ÓoWw²cŒÂpæ«€®ãóõÒÞ/ydN€húûP•ÿÓisUWéÕ^eÅÕ‡ßÕ½Érý 2˜q%|¶ô}–æ7?.–—ó§®5nƒ9×´]ëƒ.Ö´/ Z›¥ËŠFW•:âÌ0v•g+#ÍëKúðîúwÀàÝã§0ÖHýùßS?á‚%~_¹‡b¥ª±r»,ÝÑ~T©*s…*«lé‹/´S[@¥nØ úýýøðöãŸÕs˜ù}JRÿ­Ú­!YZT½¯ùÛ6Ë×ÜÀEÛJí/4G?²&íʪ֛üÄô7}é‡ÏY!øk”s’#¿$ýTdß& î\ï_Õ7UmÛ½v(fõÀ„Bí6›Áè™¶Zåú;$Ö:-êÓ"Uán+uºY®0ÒG1ûPÓáal…Z­ê}U“ˆ…ÜR›ŒMi¹?d—F†Ú.mU|&ú&l+]×ÙW옳I ß„,îá)Ÿ—ã¡¢~¤k¨Ë¬€¦ )^|o¨eÀw6 2ˆÀ ‰9ã¢Æx„óå÷Ã3)zpï„ÇÄEËéeµ‡<>-baÝ}ûd†‘`æK&d C 7Ž@òú`ï¯Ð0Àú-p‹ šë#mrUl[µÓJz&WbªR¦zóЃš¤¿fe‹1BT¡SŽøô\$Ð Ôþ`pÂëZë½%,i]ÁÏ5}hUŸì®(ÛíS42˜›í´½¯Œãqgò ô 4‚œu<œëq¨0YU˜€qhçdGP8‰n­gG#˜\$â»Ñ´Ö‹-lÇC1 £LE]Ä—PµŒN.Ðy]Ò7øÝ^8­ ôê ”f ˆ~ƆFéÃæ‰þ„±S‡" (×”=Ù†âØ01éãÑ:/0kè•0TUÖhú¡¢eEÍ ·£bˆ‡›²êÑósŒÑ!5_£‡Õ§(›±÷T^iµ>Qð×­±!“—XQ…«8bS(‹HíÜTÖýÿ1‚ aÙv‡Y…Z‹Ø5'6œ±&&Aºù—½°ú€ °káÉ‘‚Ð0 ‡jUÉä~ÑB© ø0H嘈%žÛZ8ÒÓÂ(|1okSž};0_ö-†/[>®hÆ“}it^ë-òcJ5¼1Êž ƒ‚Ö3ï.ÏŒô³¨‘ß\ž™2µ”ÐK?ÚðK3 •”ŠÇ‹nr¨‚k…î;ÑùñìJ!Œ_T;zNky^š2D8£ãuÓå™ïuéH`vÀ3ù¨4ãJÉø±l«Ó-ê•ü0î呼hñä€XÚNe~6ªÐ5b×XJÜW¦ÄÐu•ºuýoV¥nßÁi[VðVÊIàõªn*•ÚràǒɨïŸ'ôŒ®öYQæåö„ÓÝ©¥Ù,¡uÑ©x ©Iݺé¤kž‘Oèá¦koøe;zdÊþ)à&œ4–¾&Íò­,·’Vhɦ€¬ÛtÄ>‘ÎìXÂÄ7,ôà(90†š¶Ç™öá}†i7Åxüb¢uM!ù_Îq(X~€Çk»½ÃtÀöÞü_¼1et?ºCxÒÖ*Ï>—1åÖt±r¹èÉ)—$“ÉkˆÈÐ#ÈŒ<"'ØFÐRÝ´6â -Ù±´ÓiWÒ:t1äºô±¹ö»Ê8îx²u¹,ß™Ù=s©é>Ïo²mÖ`âIžô}L÷UÙÌë)‚&÷4ÖœñëQ}všÊë’ØºªSÓçÈ¢PtÁºT£gðbÆ/BöŒ%ÖÕ’VpúeÆeÓ5Mà•ÊÇ£’<:/ßyNê‚Z8Î2ÕE§Æœ˜H?€a—O§Ãd¿U&w£—VÐÍw“Lvo–ÿ$!"ƒèÆ„qd‘‚#óz¥£Úv <¶vboùüaC§Š–ŽP¼ôôN=5©_Ââ.ÁHü3—ü˜³$ºŒü¥ôÝb,,îFÐò í«}ôlð0‹zï#zÍŽÞBøŽ _Ó|Çg­ÝlŠý’Åfˆ´5Çl¦ŠãNÊjºhÕõ§†tá8ðÚ·ucŸ_?üݺò endstream endobj 1283 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F10 1169 0 R >> endobj 1279 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1283 0 R >> endobj 1286 0 obj [1284 0 R/XYZ 160.67 686.13] endobj 1287 0 obj [1284 0 R/XYZ 160.67 624.72] endobj 1288 0 obj [1284 0 R/XYZ 160.67 596.37] endobj 1289 0 obj [1284 0 R/XYZ 160.67 576.1] endobj 1290 0 obj [1284 0 R/XYZ 160.67 518.99] endobj 1291 0 obj << /Rect[424.19 451.73 438.92 460.15] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.5) >> >> endobj 1292 0 obj [1284 0 R/XYZ 160.67 198.4] endobj 1293 0 obj << /Filter[/FlateDecode] /Length 1919 >> stream xÚXÛŽÛ6}ïWh‚È@ÌH¤$J½‰—!yf8—CÍ|æû³ÍÌ|~š½\¾¸ g)KãÙr=K‡³…,þÕ{OÄó?—¿¼¸‘½HÀd4óÍôåϯ—×oæ°Bx‚ÍR&ÞÅÕÕíòö·Ww4þòÝíÝ5¯ÿ¸øõõÝõ[ÚôxîN£Ù‚K3;ßÏ<ñ4,ã‘×è¬Þí‹RçÔ/Ö´AÒo 9K„uÏêz}z„YX‰lÎ¥·UÕF·€9 o¹Õ§[ÆóS·@uÙé†^âÊS­ó º ³«ùÉí€=> INm‘ÆLF_‚.|G#è-mÖÀᄅ›ä‡ìs^šôöÉëÍ$Sò|fþú“κw†rñ;¹­Š®PeùˆqüÜ–nõ(¤ ´Ekãµ(Krc†á}©2“‚:7  +Ó$êEÞ?:ëhÊ*[w§:òØgÒ¥Öß~Uôrû$á†]~¸À‹›hf•ïë¸ Á -ÏÁ<2­G{ËÈ|r½V‡²£E€ R0sÅs&L$æ„;Ý=Ã{…ÌÕvªé¨ùP`~ M¦ucü9^²ì-l²… ß‹õÁ‰c#8€8° Bqú}žpO?Ã; E0ÈÁ(çr‰?L#6#s™ÚÀú¿ùV¤_k]Ê„+ŽÅn_Y1 uŒÜx1ì ¾¸ê€;CIÍÝiÆ1°QTYyÈmËX…§¾- F+œ9je0ÒçãtúK(lÌYë4õî«'†zýæúæöë«¿¦¸Ìª'¯¼Úïp¢O4´¸µ¾òdÕk³šuýŸ·ù ÇNd …¹^ú³!ílU£j$¾£cž:R8ã>KùP¢"½BIèNô¦¹ÈВ󏱅 •'?L)PÀb9z¡˜„&†uUª¤bl™| _JœaÚ¿X`̲b”êZ]®1­U{0 ËŒ÷¯—PB•åq¯S^†LÄ_~2ö‰Å¾h{Faʈ`ñ(=ê8¤XºJjxM•“ÀLA1ÉÿGÆ“Á¸>ÂvýSÔ#WætE.Ùæ÷£0<÷Š€Ïûîüé]ÀÖ‚3©–l!ü9ǰ>jˆŠV›:ѵöý¸µÙ~úxú oŒÐÅ#oä_æÖS Eï'hŒž Ÿá‹7¦Ž7h¹Ä-0HŽ(P"‡DUe+ v,‹ƒV®Û¬)î 8ìok¤´CWÓ }6ølHè¶Ó*ŸfJ }.’eÅ>R•½'‡fQ¡*ÑX•ãzmWÓçø—·"?#a£aniŒè£èSPïÙ4%Qü§bø& =ƒqóG†¼{Ø~À'|MªÙvΩ¾G9¯‚]P‘¦íHÒd’Tg+µ³»z—º fSÄ+ñõÁ0ÑÀk@j‚O«¹¡rÂF4LôT¯ÕYí‰~&ûǦ­é‹†£<}˶&ÑsÇê–˜ΟM¡-ÚþÕH̾cmà­µqös!÷ÍþûDV endstream endobj 1294 0 obj [1291 0 R] endobj 1295 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R >> endobj 1285 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1295 0 R >> endobj 1298 0 obj [1296 0 R/XYZ 106.87 686.13] endobj 1299 0 obj [1296 0 R/XYZ 106.87 354.61] endobj 1300 0 obj << /Filter[/FlateDecode] /Length 1951 >> stream xÚ…XkoÛÆýÞ_! )JáZ[’KrÉ¢-ªúÕôúºE¬ ê"XS+kkŠTù°“gv–‘Lò‰ûœç9#-\溋Džù\/~Þ|{% K¢Åf·à‹£ÅŠsül.þr8 Ør%„p~Yß^ܼ¹½^ÂnàÜ^þîܬo¯ß­—¾p®/ï–o~ýö*èÅ (Z¸$JÐvÜm¯¸ç3,V¾0+pèÕrúóÛ±ÖE.3œ…N¦ó'f½BA uåy, ͽóõæ=h÷ß÷W7ëë;òC{Ìç,Jßì‰Û5yŠiVïeM£­Úé\U4Ù/v¿ ïC£³- %}ضx¤Ñ±,Ky*H†ËúwÚ»o‘6;©ê~I÷Igße‰74ïí®·ÛVUkAÕìvúƒšñŠ}ŸËCkÆôy}ïÈí–®Yå_ŠbwÖíZu@¡‰HÔÛˆü’DpÇgb8¼¡Y]<ž-›LM5x}ß+q¿üîä 2Ö>ƒôG7!GÎÉÏN{yõæÏË‹÷onÏoÞ]\Þµ1 £”I£µ>ÅÚ•MŠ×?ÙïÌû+«Àiê…Î[U7e> b›4fbü;1üYfêTø`\r+?bqWcs½;*@hV<䎮ð‹õrï‡"W[šþÓT5tNßTVŠF/fÐXæK?vjZÁÃSGYYÑZzE.õ-¸z¥ ?ö{?råc…îTGü:*Õ¨XJ'P8n¿ã€pÅœ¯Õp.}n ÔêÅ^1@—´•݃žhW;@âû w^ö*WÏÆØrÎÖ ~õ^è\1Š¢“‰³±Ma˜…]QÒ’)?žœëAÆÂ“+}8fép*³ŒÎ“W` @_x¶0qíXªÕLRê¢Aó¸DêT×4³:Âè4ÊžÞw>Y ‹iq8êöž’éÒœ=©Š¦LíÊÉšà¶-­Ö3IžxŒó6Ë;ø Bgad¸© ¸Ú™À9e²¢Å/Ü7îÄú Ò¦Æša3eh@ª+UËO?O¦,žU9e"±²8ŒYü5 Ø«ãX´QOK[Þ3îÄA yËì“2ÎÛháqmï?|ìøS6ÙÜmvqyµ~w³ù®ƒáAdzSÏzíz…,´_nLÓ.¬Ô¾k‚¹~×¶ð%"Fà\( Iå[•§ !à¡Tæ9–Ì(\[ä”õ7ï¼*5;˜¶Š| ·²¬iô‚ykV='S;»Z4ý6ȰBeSYÜ„éVÙTë4…ÅVÓgn &q¸AßÄ),Ì`G_JCä: 2Ã’@Bª:=ùÛÿ䓉3š›\ÈŒ-âÒ‚•F„èÒvFÀ+WÓNˆ:8ˆ•6Z =ü¾”ºV4$`p(J»Tñ~EW—:­³´Õ>-ŸÀ[hD,Lbâž®òoì°Tÿ6º48' 0Ç~DG ·EaÐʼ%mBÜóVÀ´Í}/`Ip2EÈuP)>²—¹®D!D%å©`ÿucôðü˜¹-¾±»óõííåÛq>A߀#*væÝkzþôåL?µ<«’ó¢<ɆC­ã ^‹NðÓx»³ÈéóÓ8Ì3àߘ¸Ã‰Ó:Ъ:£Cya[p…,UM»º®T¶Cæ ¸ó&oOšÒÀ ±r,γòL\‡¡À(OB!8 “/E"d^8ˆ‰2Õ×Ó`s‘eä Cè¨ðüa«D°ø„<Ú‡-´~múzÛ"m0~ö§Å÷àúTZõãçZÉh8aËð8š rÈ[¬€ýiÞBçvÞB%ÇûIŸ´D÷$ê Ñ1X„¡•ƒUøŒÁR´‚­bÛ¢“4")F5ÊÜ0Â>xà ÀZì—|çÛ S0QêR¦¦ýˆ[ÂÅ ê™"ì]JTz®È·± ¬†Nº+VŒ›!…ü‘ͤ™ìGžm%¨Ñ‹f{ž8îÛõO6ô™ß€\Á—Åá©Ì=Ï6,q«d¹ ]` ù‰)1óÚð™üŽâ¡ê8Q]}V|FõtªÚáH˜xQ"D >RÒCàÍH“d&+(D‚h:D1ÛÿuÄØW£¬Ï¨Z¥¦ÆÝPø0ºö¯ªÁYÚ®Ú€¹ 7Pu­ +ºýO$Ðö H>¤5Q–ˆûÞxœbnÀÂÏæÁ¸¬Ä,L w¶z`ºâñ³Üe®÷…zŽùÉÃY÷¢ë½Í?—pIÎ<ÔÃBqTùŒy®°û[ xèáér«%þfâ´$üd1Œà%ŽÆäðÄ\^z }çÕ®]žÒl] ¯¤…OjÓòx¦¡Ç‡à§ç´x=†Cû ާû™ç Ñm=qö©[&.”ñÅЖ¹p…@MÌÓ³ò™Ðe~8Ì ªl›gÃщßr4Œ,Gc›=nÐÓû_Fˆˆù§AþñBƃÓ³tû£ÛTn[±–£c´˜ýññÕÿƺ…Û endstream endobj 1301 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R >> endobj 1297 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1301 0 R >> endobj 1304 0 obj [1302 0 R/XYZ 160.67 686.13] endobj 1305 0 obj << /Rect[293.65 490.59 350.87 499.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:awk) >> >> endobj 1306 0 obj << /Rect[176.83 464.46 280.61 475.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:find-in-path) >> >> endobj 1307 0 obj << /Filter[/FlateDecode] /Length 2389 >> stream xÚ…XëoÛFÿ~…ú gmÉ].‡ôpnì\}p qqÔ=`M­$"éòÅÿýÍììò©¤Ð-÷5ïßÌìÊg¾¿Ú¯Ìß¿V?>|ÿ.\¥,V»U’°(\m„` |_ÿæ‰dýûÿ¿÷[‚åÊ7ËoºúðpóËNO°õ&ŽïêúúöáöýýÕÍÿøëíÝ5 oþ{õ󇻛tiÒ_ºI9KÅjÃc37—úSÅNUµûûz#yèeÕšo::°¼‘,Mà¤`Ò|·N„WÕ@XQ%þ§ð¯ŠjÿB-\E£c¾?¬yäµ´û¨>­yìiújyCÛ²B«Z×—ð•ú^V•M¾Õµ»LÓà-ý=×Õ¾VÇc^î‘ÓÕ&Y * 'Y¡Ê}§ö¯ |ïtÐ5^áKOÍÕ’øL&VÕ¬šK†S»úÈe\˜kBϰ ×+ë O¼m—é-M=¡|/´-«ŽÏy|ž'É„pÔ³3Ôå„8X?¡w»s÷™?ËØìn)w‚íªjy;OYà6€Â7¤KÁ¥ˆ”IÖnU^‚¸<åHÿ@"##kÎñ(aAhïþ./³¢Ûjt2é½ÚuGvx5g&,Šì´šï£ÙËù½ ”¶«Kƒ_œ ¯E°ã–¨2?ª‚Æ'䪪‹­=ë6c¨u­žœ3S亡i—{F"¥>sÚïÖ\Š0fþ€„c’ù¹þ õ`@`©ÉÔf"É1&š©…c…KÄ€X< õ6„ÿ»éʈZ}ê¹Ãä‰ÄqWCCjª"Øt\ Qìb¾z€4¦}Sª£^8¡Œ™ä}’V€kSå0—£sqHÂÖ=a¸­Ðßú „™>¯A¬Ÿê¼¥¬[­Û¬|I“O]Kƒ¼¥ewVÍ ­è²ê 60³­%gÈânwjaÄ,Œ œÐ —¶[F¶ÏÛF;*™&(17ƒà™©^éu™ m¤ÁÌS—-Ñ_Ý<˜"n䕜3 I ¢¡NŸù; °ëʬͫÑ}€ß‹Ää£ࢱŒøiª®Î츯Pž÷¥e½)L­{­-‹°â›d.ŒE@IeеPE®`‹,~ã…h2Q\E.MÐUÑ9èäPßD.OÜÞ¿½ûõúfG>ãn˳j(UX¿|]Ä ÚǦÉ’I`[ºK#¾Dà€Üfî¼Ünòrƒtæ|DÑ€!çŒÅ“ÛÈi…±†QŒ™#&ÄPz?QÑ “§É…·¯¨½ ü€‰`ŒÛ.ÏXèþëP¦Kø°hdà>«¢ÑÛ6 ‹ßÑ]káEÆÒ8ØåT€ô£ý`èæ·ßéÐËeð÷GïâÍãz¹”©FÓ¹‹×ÿC”z=ç(ZPøÛÄË_Þ§¿VŸ­8ÛŽœ\c©…&»“ n4‘½¡a>×ˤpu>³T’Sñÿ8õ27i½ÿããú²ŸktÛñ¢Ç5þ‘Á¬Œ dhg,±!>Üa‘Ñ%ØéÕÅ?­/õ´^© tB"M‚Q9p§ÛטŸÂ˜²XYŒ>M=&6]ÁTs­)wƒÈ{—×M‹Ù/’ÃMõN^›ïÈ–ä¶z¡=¹%¶Õ&¨LDÐ2†è`$D­+FÞ?©¡%p ㉠+S=ž@Èütì•§QÝ¥j[ŽQcsž ü„ÿ$“®¡ù-   MA eew¨ÆþÓ=þ£kY0ÀœÿÍA #B¦¤¤„í:[î„K×!hÅä¬0LÏ!¯„ƒñPö.šìòœÞ>¯±¾®sõTØ›Ùðâ ªMP*}(dÑ‘3Û_'Òºe&ð£¡?“*!¬9Bß¾ X<íFMê ¡×ÁÙàÐÖLfÎ&I»~7›²ØñFv‡‚&”“jµY>0ÎgU¿4ïußî„  JèFá€lRLÚQøDÕ›=çT„䘜# * ] ×´5¹š¤ð+wÊd¨ú¾¢õþJU×j nù‚†å¡zW/áî .¯]i²hÒÜØh´Hí 4‹Ä®ž¶\aÇ=äçû²ªõö+@|¯¿´—ä¶găî¿gHôá8ÑÏ%ŽãáikùPÙGGÓ—F5‰ó"b;2H;}ÍCÈQ‹ÎíÍíEgXà‰1æEÍÜ {•±A mЂ.kÊÔ|ß[E¾j[=Rßâ =Àñ+PÂÃ¥çšgµjZœá#¢å…TÃlø—ÿVä›f endstream endobj 1308 0 obj [1305 0 R 1306 0 R] endobj 1309 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1303 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1309 0 R >> endobj 1312 0 obj [1310 0 R/XYZ 106.87 686.13] endobj 1313 0 obj [1310 0 R/XYZ 106.87 668.13] endobj 1314 0 obj << /Filter[/FlateDecode] /Length 987 >> stream xÚ­V]oâ8}ß_ig´Ž4qÉ7©´+1@V,S•tv¥aÔºÁPoC9¡ Òþøµs„û°}±cßs|﹦Fw:ÆÊ¨†‘ñ1¾º G/ ×ÃÝÀ°\W ñà+r±‡M+ Cô©7LÆÓ‘)w=4þ©&.šô¦£ûžé„h4œ™ßâ߯n¼C8(Œ„ŠÔ¶1Œ+Nß°mù ÒÀÆ]gOê™–m;ºÝ¤)ËV’,ô+a$i “’¯hùLÅ)qǰì.v»U¸ØìºˆËÝ%|§´¤ò+ê y–éw¢Ö?˜–×ñüR"ßTTRqËàV‡kîê‹e*¥¦!0Ryª¹r!÷|ýM“Ró¬M'@›Ätºè¹Ê’ Y‘²Sö¢Bªã®ƒøF@ÂsA_ßP-Cºû89†åØ8„B®wR"¿jRÁæ?–õ›'ÓýùòBçe[Ï hÉäÍZ Ç=¨ 09¶½“@ÿ!R•²§s¢MË äîèÿ0\ÑŽR¾ ~<€“gRž?„® Ë@©kc7<{ÿBúj”ŠU6­m²=¢ficåb§ÊSQV½âÈóK.`µ„mQ°(Þt$ X#)±äiÊÕ¡m•e»èªK/@[íN$iÁaƲ$Ý,4#ÑR6YR2žšÔ²=yÍšöI9aO‚ˆÝéµ}¶~Iª.“­ †˜ôµR#HzJxØ÷ôA¼å|yÙ‰°jÀÜñÔ´ÑÒ² 4\ªåÉ'Ÿ¹O„ƒ·ÚnßZ×ÐС‡Úÿ º<¡E&¨jWÙ¯×$[XòÊz啈¢m 4VFû€þ"!s47k˜ãâ¨I5®kuDu°gõ)³ ÷™µJJ.v¸Íg÷ã»Ù50ª_#ÉoŸM‹¢ƒ´Ø²ÎÑQZþ§¿¶V…Y)SEÄ¢Nt¶d+˜W-¤³Ÿ3øRŸU[‚)·œ‰ÜȸÝ$ƒúœ—”ÉQ™?§>!…FnõH_©–¶%™Ö¢ŒªF.÷«ËÊμXý^Ü9¿6¼a’¸V¹ K²Ië‹§d¥í@D-j—»ö;-Ùn&½Ñ¬¦¼H¤ýÅhqjÁ½'ÆÍIù ³¹–P}<íŽdºà‡ñ´?¹ g_¿]&û)ß”ôG*x®^8-x)øú¢äV¢nï†7㿆ƒ‡¶®êԻǹüUÈå?Kö–¬±¶Ê»ùþ6sóíŽМf š%:9EB²¬¶ÒÞîýgýÞt:¼Ó]þ¾zW¯áÈûý¯ä0þé_¬ò¬ó endstream endobj 1315 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 1311 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1315 0 R >> endobj 1318 0 obj [1316 0 R/XYZ 160.67 686.13] endobj 1319 0 obj << /Filter[/FlateDecode] /Length 741 >> stream xÚÍUkO›Pþ¾_A\%z_4±¶T»1m*&&âÌJ¤Âź¿sãR`&[²ô‡÷ú¼OŸ÷ (²¢O}œ gæÑ¼'Œåñ@0]a4’=Aêvå~ŸÝµ{Šxo~=šóUÅξ P÷ôb²4õ•ˆ3ºí®,JÃá¨=™Íæâêrb0ûÙ͘±£~;ù¾4ôkVt”•†š¬h‚¤ ©WŽ¡x"‚¦ÈcìTUyܧÎÏ¢Ô×zík rê·“gÈ®çCš£”ãÆw÷,é¤î›«Ý:¶Ä²‹Á°A Y^ëàGBtÐŒ¨Üáð„aiiõVð- ¢„Ú%^DëÊãòT+¸^ù8Núž w˜ '4;mͳ£WåÅC¶Ÿ:ü%És}T2BFÃoÑ.’‡$š‘—Sãf¦_[b'·Å0ÉϤ%’_Ö¤:â2òPRAˆ³ r ²=nÔÆ:˜S 4ƒ¾\éóÅ­>{(èÌÄ¡scržÛ$›ûŽwJç*$;|ì{è…jo •42—ßX·Ê‚êj¹üYêùÎ=¾÷ˆóè;ÄðF JPY u 1X‹ì°f48›ÿdç=0qª«§®ë½55#eXÚÖã°´îNi(œí;‚•ĘiÅÄYÕQEûX°¥M·+F!Xb±Ť¼ ¡Oý­(û%·úÉÕÊÕÑ:åÏÃBµjè+˜¤QõÆ £à)köBé­ þ üæóìÜ‘œW7EìÃûf‹Ž/ eés°Ù¾$k; ;ÁÓ6ä&…/™ÏʂޥòÁ¤r‚û]2Çtù´»>zŽâ½Jü[¥Túßz‰ª›Ÿ~â,‹É endstream endobj 1320 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R >> endobj 1317 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1320 0 R >> endobj 1323 0 obj [1321 0 R/XYZ 106.87 686.13] endobj 1324 0 obj [1321 0 R/XYZ 106.87 336.42] endobj 1325 0 obj [1321 0 R/XYZ 106.87 171.89] endobj 1326 0 obj << /Filter[/FlateDecode] /Length 1769 >> stream xÚ­Ùnã6ð½_a *£1£ƒº(ÐÎ&mš]$Þ‡b³(‰ŽÔÈ¢+Jkøï;ádYÊõ ÉápîKžÙ̶gÏ3½¼¯N¯ÂYÌâ`¶ZÏ<΢`¶ð<\V—-ùl¾Ãкxw{{öþáæîíî¹µº^âÆ³®o–÷g÷sP®ÿ:A˜k±‡ç—7÷„zþîòfù0ÿ´úýôŠx— ˜Ùšwè:ꯞ²8„ ŽFúñú!+à»pûDy¾ð]nÝÉn|«Ém¶µ|®“MØŠúµ×äz½¨Dð¦JË6#¢ªNͦ}ÊŠZ¤¬÷S²ß-|…8 ÇgALÌ4Þfÿ7Hö9œÓw&/b]”âF7ØH6xlY<‘0›¤¨¾‹¼ø ’ý"in‹§:©÷Vš4ꄘUâE·4OšÇùwñCÁ¾©•1øYYv>,ÈöŠNëZnFn`ì´Wþ+n¸¹»¸ýp¹|øø‰XüòëÑó뇂œ·E™}!˜¦ž¾\^}¸]—üôˆö{? =´ÁÉÀOh[2ã0µ6 }`3/Ò ädpÝÀªd#¤4·#k•k`h¥²ztýð¹­“¦afmróľ…Žg«{È‹’Yûª–²ËÅA Ç eYVèŸ#.ªIª,©3 @a7´ÕHV,8ZXtvQ=ãј7™ØÙÈU&ªtO@•&U%jót€»NÚ²¡CÝ–¼–5mR¹Ù%ò˜8PɶNÕC”®ê„N  mÖm•¢ÀŠj"Qø §R'M! VÿÚ„xNG?g1òO*dDZp|Äæ5l†¼^ ÚU.ê¢=}šƒ9ö´‡Ò† ûÄ(H£n$=F»¢Àqã`öpqvw·¼Ÿ§g;,Œ†ÉK‚ú6·N¯‡ïyÖ*an“¶‘€4)Ë=0^qIŠÍ('ФG4HðȳPß'MàÅñeK2Yýܼ"›úº‘ä’º ­¤!dCþY®t_õgæÕ¡±Æ>ã‘鬜ùs  UT…Ê)Bßj·c›¡ó¨Âœ¡¸ 5Ú&/”‰-Œ+t·žµÃ½ L2"Ä((NºØ;ˆÞ]<ˆ\·bG ¨¦„!™2S™¨¿£WE­`ìú±Évîv^v¹C°CF 8Eó"¸KŠ ]É訋\÷ ¨hù¯-7ŒXä‹6˜IÑ ™Ý)¤ÚÂã6>6‰5V/÷J®ëXy’4ª ƃgrG¢é+ez‡®@3q~Lm‡Ù)Û2££NM×TnMãýkéGÌö¿U¤m Ý#e(ØËÚH“Në= ”=„¢¢hE¹Dö8ÇÒÜTª‰y,ׄÓ@óGc{ "̘*7úNMt¶€÷™¢(‘ah‹iŽw3ϵ)kÁ, -*‡8ÏhO5wOxƒ:áê:áRP ÞR'ô²xA›OMí†Ìí*!4s&7“ù×a^ØÇÕ‚sʸ®%äìø¥û‚¥!cšÖ±À–Qm^/¦@­=YËë¬ Rã=`~4°¾‡¦$ã^ÑÍ­HŽ^æ3Q"ôtW49Á± .†—)$Òfƒ142Ó‘Ó`¸®hƒM²Ða‘7°–ã›ñ…$nÃûÌM§ShQ0O’,#MJv¶¨§£MÄܸϚ³?–ïÏVׯŒ6¾kDEÁZËjƒ{p€qY³à¨(~žC€†Ÿ<•¦œR{á@Dµ])Æ|™ˆe»¬c­ðeR·Ü˜ñ®n½T:vŠxäƒv7dHs ’ÚT:Ç Xè%>MƒYɹO&˜Ê<„è\÷Ð@ç¦ 4O¶]Äà‘"¦'‚v×øTåêCóPšù¦h×xÆÚÃÑ›ŠÎ‰zÜzú™Æ^o:í"ð§’Îv-ó"q±u#Ä¥ÿ¶B5t£3?Iü¡C~Ûˆ&ÙÖ%“õóØ9tž.¦`~×4qÑ´·qR‚¥8öÓ„Mãõà‹à¥ïÇI´Ár€kј.õD'Ç3 gÌ(~à£læëßL(²,“­¢ÅïlŸ[y! x¦sφ‰ËÛù*þ ˜žcé2 i ]:ã¸äÎàƒÅ‹ü£¯E <ÑùÕéq°@e¼‡÷ã™ÆéÈ'ËÂ"¦,´¤u´H5ÀQI'Ã(bØ´á\a•Ö#=¬X¦“*ÕSV ]­ÝšáLz‡°{mz Z޾·4„’f¬0MaÃ{0 GÞ¡Y.W?üŒŒ·ƒ endstream endobj 1327 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 1322 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1327 0 R >> endobj 1330 0 obj [1328 0 R/XYZ 160.67 686.13] endobj 1331 0 obj [1328 0 R/XYZ 160.67 342.75] endobj 1332 0 obj << /Rect[223.14 272.66 246.06 282.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:glob) >> >> endobj 1333 0 obj << /Rect[259.02 274.87 271.48 282.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ls) >> >> endobj 1334 0 obj [1328 0 R/XYZ 160.67 187.07] endobj 1335 0 obj << /Filter[/FlateDecode] /Length 1911 >> stream xÚµXmoÛ6þ¾_a`ý o5#R¤^ lXÒ¤]†v-°ìƒbÓ¶Z½xzi›¿;)ÉV’C_ŽÇãñžçŽžùÌ÷gÛ™ù¼œ-O^ÈYÂ’p¶ÜÌ★r¶CÿüOOŠù_ËßN^D½ç0©f¾™~þëéÛåÅ»9¬¼€ÍQ{§çç—ËË7¿Ÿ¾¢ñ³÷—¯Î©yñÇéë·¯.®Hé°ïÂj]ˆÈŒ€ê6Íʬܺ(ôRú4º¥Fµ¡oV¤[ÝP»Ý¥v6­µªè{3Åž\UÅú±W5zmÕ”s˜'iå6û2¡§o°#½=ìÇSQàîÓÚn´©«Þ€°D‘å;M§mh½Ê®…ŠV4H&?ÅŽDWU‰2Û®NÛ¬*iМ¤tºBûvØÊåvYÖéiÒìD“¸d \%LC—óTÎ2^‘~š“GdÄa5ê1ãU­©­jÝj0Tù‘×tûÞi$`¶Äƾ¥Jyõª¥‘]jÕmª®ÆØÕѬ³Ī:ƒ[31bÀZÌ] Óùq¨ˆq~OuÄÌ—v‹»Ë«ÑâàáÅ %/-×ÇZDÌ’h¤F>t©„+`™øèzŽôcœx-†"Äclî(&.äÂgQhu›@ãìã~{lŠw&Þq‚E(TÑ8¤.q§.ÅBnuYB¡a±!JÁtÁg@„4ú‰†·ºÔLXtƒŽ¸%!»Âm[§ÅÄíÏa -»¶Èm ÂÁVÉ"ð#ŽQrY6­NqûØÚ«þ»ÖèxKK0ŸN.ÀYà.àÍëô“Þd€ÕcŸù,NÜ-•¤j„qè9˜ÜÎc±$æþ‰Ã`~•–ÙᬥQÄ_oœ.Œ'cdÝ– ’·–C*r0ûèXJ2Õ;îêýÙùå» …K5„5PlÅ&‘Å,ˆ‹€Éè@Û3Ä“´ˆ‡¦²øí›ÁÐ4ˆšA¨'ü F˵þÊðÞŸ‘ìC_Ø6ëÅx½ cÈ“iÍÏôyòË$cɈÅÜ…ÓQ–HˆòÇàÜØ8WØ„…sw87âC>½×¹p±‹˜†TÙ¤¥ë=òôšõ×tÕæ·ÔIÚ<ÛØoKãIµ¾×$ &Å¿…1xÀÇd p’¾IãƒW‘_ ¬ÅfÚÐ…ÍÑ@Zöh· ”ËlÊ+«ºHsÒÑ´@…¦õ ¨T>ù%ýovoh¥þ<‡T•æás ΂à1“c`ªÄ¹Îf&GGÜûVçŠ2dMƒÙc¸KæînSA>(ÝÃ{&:§Ã ÐsGºÄSòØû€Y\“¸q%6­ !³*k`;]¯mÃî2v#ÒØzPË8Jß×6àš&¨téêÚé0y™îµ7 /3áøäɵ÷üÃùõ|BÖœÎm×ó)•pµjD\k.ÁöyyÖ¥7M U•%k-þ¦•ßÿOApCª¸ü{{4¹¡ÒÏg2ë=ÙU…>ùx»;aŒôeÕ¡ñS!ñ¡à1Bäæ‹¥yn¨™ÞqÂ8]bÀ ÌAé}cÊÛæÕ µöi œW6Çñ‚˜ÒËpD¿” pLW7XÃJx—Ø2 k ó¨/ÌmÉ3FþÝe­¦fm³5>m’ªÛ×@³ÙÊiFnÃa§?Ϩ¼F"–2¶(B ƒûp?qA>>@OøÍr$½«jÔùÙUP(¦4±ÆS„Ú€04 „9z*Á¬!Røöï釖•a4uÚ›]Õåv Ñd@V®òn­ípÀ=ïÐå•긓äÞ›Ò [ÂpX¡Ó&Ó5µ›*ïð"’1Œ æ,~×8%¤Í>C—"` wÝ"Ïšcgd+eÓ•+³ UÜÞ¤…q|Žˆ À¼ !ýúœŠq8’âG!¾ÆÂ@öw«# Ô±hÞÜ£5¤ˆb"€rm9MÛP¶ WW:C^^™àpƒµ_Jn@ŸûT£ûp#;mÂÃïQg¼ÆmøÀ0TÅ"x9äÌ“¿{ÔiŸÛƒþ)0~É~ÉÚÕ¡EÚRn$ð÷/^$aûÜÍÊÇç H—“äa‰÷—¡öñúôåʼnýÔ' â/ìü€ÙàQÉ–‘2+ý_ÒŽ”«  â §\a)÷*+ö¹aEúoD!/-Žþx˜{OË îA­"¯ÚÛ SÑÊþÏ_SŽ˜}¦ÿÀ`#*´%Y4(ô,© Z *š0i¦ÝÆHÿ»'TsL"Ó¿o–Ê ¢h a·À{o´ªv\”Y=P‰ƒ+1C}ÉM2E¶Ý¹P žp!ùVÛcÅíÝg]–¯/ÁVÇ*ü+eTÈ ü„žñ|Ék‚ßã5#aJ@{JPúQäÚ±N>ü+c´;|¿ ÛÆpˆUäº»Ø ×=â ê^$yf\ ôáþ$k²"ËÓú)1ÄM׎ÿ‰°¢”ìØEžÓ³øúî2â{z endstream endobj 1336 0 obj [1332 0 R 1333 0 R] endobj 1337 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F11 1186 0 R /F5 535 0 R >> endobj 1329 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1337 0 R >> endobj 1340 0 obj [1338 0 R/XYZ 106.87 686.13] endobj 1341 0 obj [1338 0 R/XYZ 106.87 457.34] endobj 1342 0 obj << /Filter[/FlateDecode] /Length 1364 >> stream xÚ½WëoÛ6ÿ¾¿BØúAîbZ¢¨W±Kš4qÑ®Aâbêb`eÚR+‰†yü÷;ò(Y‘Òذ}"Å;Þû~GYqkgéåÜ:Y-^‡VLâÀZm-‘(°æž§–ÕéGÛ#>™ÍÃ0´_½ûöøòzùûù èÌ^]œ©g_,Ï®Ž¯fX.þsµk#]‘(nèqð¹+‚ÎêÞ Û¶Llh}‘] ˆGY£ðCÕ«/í Q©‡¦¨UnÊœzTœî㨄pé$•$j¿V{©º[!Ú/ö¹Ð+4ꎢ1víÚ*Q·yƒ{ l°Š›4>Ï[npÁ\c’~?P^L¢h)¾â¬Šâ=pm‹C[ük÷*ψ'l„sÙ@/Ô°?ékªÄ£—cóbâÆ†&÷}=hϺÖ3Ôò•õf©QQÕÆ^íÚB”ÊÌF_¦£¡‚CA%Ó%>b p3zN©!Ó?¤t®®ÖkðÜȬŽ~|luÚ!³Kiûwj'|œ9¯9*Äà¦ñ!¯Cd†Aœ5µÈ·Sô£0ü¯:Y§/†Li¬íË#ó´1èå ³>Gfƒx¿ðªâ÷š âyCÎE* ±ørŸ.`R.´‹âëƒë§Y5Ô|óÞÕå»ï]D…À>=|Lš¬ïþ‚†’m•àÀPî˧Ÿãƒ>=ÑbAEG˜qЃXXNT‰~¯c>¹©±Ã;~ú^Ÿû (æ–~c²u¶igÇyþ<>øØ<Î3 endstream endobj 1343 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 1339 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1343 0 R >> endobj 1346 0 obj [1344 0 R/XYZ 160.67 686.13] endobj 1347 0 obj [1344 0 R/XYZ 160.67 327.05] endobj 1348 0 obj << /Filter[/FlateDecode] /Length 1711 >> stream xÚµWYoÜ6~ï¯X  ªE-®DQWµc;q7³ ÔEÁh¹^%:’6¶Ñ?ßu»­Q´O)±Å«u·ä!q ,Y™É¡N‹[š"O-vÔ{B° Õëôf›Ëb[²2Ÿª̉ͽrߤe^¾¬%µð¡UAH¥î]õU Fvæ±I7ðYà5jíyÖu§÷­¤E“Gœç:! [q·i±™¥`¼ Êí¡HÐoGÄîn—&K0ÊŽÞk*‰¯ƒ£ .«ZÕf{g^…rdíRUÉ*A’’<Gzœ9.©Iù••¤ä <¬-Z‡Ç¡±[M»ä%ÜÎecøêiÎUmÎÕý¾Rum"Ðã:…ñ »¼žR qÒ¬´?n–ÿŸeGLÎÒêɶüw„CëM9Ïê±YäR z}=ºztᎠº˜n:/à@¶“fW©96 ¯¯XÿPÙ¼påµ~Ë¡Rx!¯Ï™h»3ô„1y‰îMLm·¦žºP£!)ôJÂÁ~h`}Ùâý@é*¢9b®³ßöV-²§ªÆä]k=×7#ˆßi¥‰Q¬q¥ëA1¬Ts¨Šš„–PÕ¯ÒI‹¹¶;ºGëU²gàžz Ñ7HÆiÔ¹‚ÅbH|­Ÿ7­ˆ§!G], ˆp›2aë‘Ay,ŠžÍKÓ³lM7—6–kb´-3(vØ©Ô3@ö±7D9ûðñ¡áeÈ žŽÇ7øÔf]_4"YÚ®úÖ·&#¼ƒö÷uÇd._^¼n+ÄWY¥òSœÐÁ3Ä£î†ý‹Nj¢H4jxnUÑÃѳï‰êØÿ¨iÎ×úŸà/ U÷QÄ_¨ÙxÌgôpl½ŒÁeùk=8Rêîô×$N¿",ÊÈëÀW“æ:á4¦è>ÂõG7íäºGz Egaáb{’›nޤÀ )þ…;Üi›!ª‘Xq×Úg2ÁÞ…s„"leU•«M*E :d ¦­pt¯VëƒIv!½ÆJœlT¦ükà„(ÚÞœvtà„”÷Iù™˜ˆÍ<€F0¢01¤½“Ã40c¨xm/«&M™¬Ìiÿàzo»›â;³ßváÉiß¶hùî ŠÐ6CžˆY‹ò­Ò +üÃaÝ:Óãöý¯ù’¸\ÿâÀt‰¤݉à¶ùéÁ¬ÿéÁ¢RyÙwÙøƒqt$tLˆ6zL/u%îò¿<ó!CÃF¥[R Y2kÈ­Bé€mÝøQˆ¢…¢•¤þK¸{{¨$Á9=Ó¾‡Ú ” ¸[šgÚD–} YZæ§r÷¿c¯Gë¡xCäí~¶bþ“sÁ©^û±máv>sÛ¢EŽ2 ¯½üH[í»X@^+ªtbð«ëó“õùïíãÃ6°©#PW¸Qø(’~KúªÌ÷‡Æ 6~p¼:ói²IoñË4k*Ÿ3:1¥ç9KÊ> endobj 1345 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1349 0 R >> endobj 1352 0 obj [1350 0 R/XYZ 106.87 686.13] endobj 1353 0 obj << /Filter[/FlateDecode] /Length 707 >> stream xÚ}TmOÛ0þ¾_iC8Òâ&Nœ4M+4Ð"¨ ÐÞ”&n›­M"Çúïgû`¥Û—Üùî¹ÜÝsg[.v]kiiqafƒóÈJpZÙÂò‡–ãûJd£¯ÈÇÛNEèìæêjx;›\_ØÒ lœ*ÅGãI:Nm"!ãûÊFžÝŽ&Ó@OoF“tfÏ.çÁK.™% -Wç (¸ãg·C"'ž’Ú"AG¸h6V‹îÄv( ƃŽƒ#,¿*Þò(cËñ<œP²ä¬UXŠŽ¼?íÃ'ŸÍñ‹uL,ñq¢Cñ(=Þ]e&×¢ipY-Y'x8öîþv|s}oÐŚ嵺¯~©­'ÚL ¹—JùÊqø±i÷)sHˆãD EtÔ¤¶€Jðªê”"ö”oÚ5“ƒâ=ª¹0å PɾÕ pbÅö)÷TOÔLälš³ôg?ȽJ¢GA>ز€œWù|m2å¦Á·}!]Óš‰\6꿦àPIrø&Í>¼Gý•g…høNæqcôX­×JKÐÜvH¬9悳\°<ÕÂHβh溠°§ªò„‘‹²·5BÕ*@ø„ô¹UP„ W¹3%À²8¾›`?ù›5Y?ñúɪA½1‡ã\õ ”¢©ÕȯlÕK©øw)šo €’ül;Á%8ûZù]Õ%`šXºˆ)*µAE.*™E#v*Y³í7ý¥ìMµ\éBÔ Wð©ÿ…"2 É!"ã‡Äô|^“HL{@»RÆh爜/™ÎK˪0=É£Þ6£½Ý-_®÷ßírl—j§[5Ûuiö8"{WÌàñãlÓ("Ì8à}|\±ÜÀº|F[.7BÞ™_2Xôˆ¥ÔT@d€¶-ÖiÓìÝÓvü endstream endobj 1354 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R >> endobj 1351 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1354 0 R >> endobj 1357 0 obj [1355 0 R/XYZ 160.67 686.13] endobj 1358 0 obj << /Filter[/FlateDecode] /Length 120 >> stream xÚ=LK Ü{ŠY¢¯4 Ð%ªÔFŸ‰IÓ­Þÿb›¸šÿ@‘Rø`…#nGƒžz ~Ã{²Ö䫎³0V.|nG÷¯t] ÷Pk|8…‰Ó]Ö…šdãœ!ÆÌùv eó‡g.q£é.SIß)ï¾{ÍÑ endstream endobj 1359 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 1356 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1359 0 R >> endobj 1362 0 obj [1360 0 R/XYZ 106.87 686.13] endobj 1363 0 obj [1360 0 R/XYZ 106.87 668.13] endobj 1364 0 obj [1360 0 R/XYZ 106.87 439.43] endobj 1365 0 obj << /Filter[/FlateDecode] /Length 1395 >> stream xÚWÛnÜ6}ïWìC( bÅ›.EZÀuš E݈›¦¨‹‚Ù¥½ªµÒVÒúò÷áP»ZiûI¼‡gΜ¡ O’ÅÍÂÞ-~¸üæ­YÈ„§éâòz¡4ÏÓE,TÊ3µ¸|ó;_ÛmïÚ(V™f:úûòg¿Aó,Ç É"6`Jøµï/ìm¤s¸Z²eS/ݶﰧ˜­WÔèëH%¬·dM/ ^¤ƒ1é-ýÖ6Ql û×-ý~©™mѬ4¬ÛF±Ì™[–WÒdnEÓ}CÖò½5‘d<7` 6{ë¦çÉ‚«<,¸/ûõÔ‚”Üaïæ®ËjfDg‹L$ÝÆû¶n£æÆ–5µnËzåç5k®iY"3`ɲ/—8$Yó8‘'¾% Djx¦Ç@ÜE@Û–ös…|Q’­ò¤.û²©»W8¦Ùõ®^b{êÄŠ®°´Ý‘¡É2îøñ2dÐ\éQÉ"åiá=Ò\Dà àø1*äà[w‚ü€*Ñÿc”«ÃÂXåI ./<ï¡ëyë[ý:¬¸nªªAðîËú†vïÑ|€š<ó õ3µÝ„meG_ KSö6ºÿvÒ˜¦ 8xë„O½¯¶Ú®­·¾Û¸c… /q`m[ŸkLwõ :˦e‡Hu¡þ™¥—#££ØÏyܮ݌¢iÂÕÀõø ùtc,EÊ À©×Ò÷Äð;üöúÎV;›Øž¿53£HÂR¤·6F©ÓqýxGÖ>ØqÒçŒV%€i+ê#¬ÔÁd>dÔš¹‡­­»sc`l¡ÇC®ð™5’E¬4˜¼%Åß몼ÅxÏ_â°ûäk&áÅàØWQH§‰Ìº µHˆ˜"áf8ÌEêÏ <§'¦(PzfVï,Ìowmd›{ 5/Û{ݹ׶êšC*ûFçBÉÆNS‡—Ö“À‡e³…°]EXé’*ÅÄ4î‰ÕÃdD¸µ§YGK)#M€jå‹-ZØlܪ´½«ú:ÌÔîžG¶gÅòè ÍV }릧†…%)Ü•zMµ Úùç¥2ìm„R‡oòDG ¨×»->3ÖtxƒÄ°{"SXÛ»:Ø#ƒ¨ë]ÙìºyîÓ$Rá¡¡Ôì}¡Ôs¯®™t ƒ;¯O3¡¦‚ñ2IÚïù§æ[ÿüâ1ÏJ–’"H¶FÈËO)Æ%IÉÄKí›KWo”O3µàZ.CA¬«¾qZ¬ ÉUv,Væ…bKSLê¥ õ*Ô%(ûnú eQ…éàQPú´pü™IB€f(óD1–{åÊÇÏ U¼PÇ4)ÍM~¬Óÿ5‚žè: ?_ýdúç< endstream endobj 1366 0 obj << /F5 535 0 R /F4 527 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1361 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1366 0 R >> endobj 1369 0 obj [1367 0 R/XYZ 160.67 686.13] endobj 1370 0 obj [1367 0 R/XYZ 160.67 668.13] endobj 1371 0 obj [1367 0 R/XYZ 160.67 536.55] endobj 1372 0 obj [1367 0 R/XYZ 160.67 375.24] endobj 1373 0 obj << /Filter[/FlateDecode] /Length 1459 >> stream xÚ}WÛrÛ8 }߯ð´} ¦1+RÔ­3yðæÒv7›tϦ;U™‰5•¥T’sùûȱå6“‘ ƒçÌÄ—¾?¹¸Ï‡ÉŸów§f’Ê4šÌo&I"#3™L`~üM˜Äû>ÿëÝi¼Ù¢üP†áÄwËGgŸç'_<8#½i'ââŸÙß'd:º8?:ù<¿¤ÙìüF\þw>÷0|Eï““¹ #œ(#³G¤d¢)©½©R:³Å¢¬oÁOо¡oNŸ{/Ò"oËüº²h1ba3ÆuÙ—MMy¾«?™jåÆàÿ_ ‡vÞT§ñÎYgJÄ*÷t$žh=¯º†ÌëÎ’©_Z²¼=¤osßDØ6ï›öbòCñ°, OÇbÉn ö¾9]Û¶ØÇžGC bVsèbÎk‚Õ>–]O˜Àl;lHˆ1¡˜£c\»iªªÁß~ØlïÝÔƒ ›ýó™ò–ÏÛŸëòÞ ÜÝÖx¦—„jòLPF) «eà‚|íMCm0k8vŒÌŸûb€88:=›}¸¤ñýɽ‹?ï2â6¿ÉØšyd˜^åUÅÃÛÁ…dª¶Ãš?ì!Tpº°7%³ÆÍKØ€—ï_Žêíáï¢ø-×UšJ•2Ùƒìm›{OÝ‹ìuÛ O˜0£Eá¨aqMô£ gÖ.†5ƒHtW¯K jI·@c,V–¡®ËnE&êþp`(Þn²[lÑÂol¹Î ïð(uïúñ-C ÄxóJJùjy`¤?Tâ2·¤t~"Ó)¸ÎaT(\K_¯ðaÍêniK¬Q‘X4kx/MñF9?£Ñ\v´-o¯Ë¾ÍÛ'¬ÚPÁ£ÔœG¢Yn«¦ëiºë#tíhO( ÷Þ(ë¢Z/ÅÜŒþë‡ç b(¹ ÿñ?dܱr endstream endobj 1374 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1368 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1374 0 R >> endobj 1377 0 obj [1375 0 R/XYZ 106.87 686.13] endobj 1378 0 obj [1375 0 R/XYZ 106.87 605.48] endobj 1379 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/omega/epsilon/theta1/pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf/arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft/zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle/sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma/less/slash/greater/star/partialdiff/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/flat/natural/sharp/slurbelow/slurabove/lscript/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dotlessi/dotlessj/weierstrass/vector/tie/psi 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/tie] >> endobj 1382 0 obj << /Encoding 1379 0 R /Type/Font /Subtype/Type1 /Name/F12 /FontDescriptor 1381 0 R /BaseFont/DALHRR+CMMI10 /FirstChar 33 /LastChar 196 /Widths[622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.2 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.7 361.1 572.5 484.7 715.9 571.5 490.3 465 322.5 384 636.5 500 277.8 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 615.3 833.3 762.8 694.4 742.4 831.3 779.9 583.3 666.7 612.2 0 0 772.4 639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.5 494 437.5 570 517 571.4 437.2 540.3 595.8 625.7 651.4 277.8] >> endobj 1383 0 obj << /Filter[/FlateDecode] /Length 1611 >> stream xÚWÛn7}ïWj(Àb–Ü{êh. \ ÎCTÀ@]´´²ˆ®v•½Äößw†CîRZ;都¼ ‡Ã™3gF³€Áì~f>ŸfïÖ¯Wé,çy2[ïfaijd¶ Cü¬?üÅ"óÅ2MS¶úóúýúêóõv#öáãêêú ç_¯½ŠFp:IfÏi;¶—¡n ‘Í#2x$ex>رTcG,F×}œ•nÖÑÀØÒÕ––º½²›ô^š'ö€íšúàÄ­ÐnÎ|0ù@§˜è®-ʤ|œD“duƒ ¬xT‡cY€‹BX%ȤrX¢‘ƒ\KS…ŸÐ³ÇH›Wá2}ލà¯%I°fš‹ª¹ïöÕ1ƒRr¢èAúAw{ZSôÙÔe]M°ŒD }¬½G±U_Ý2uA(¾#8ÇÎêhŠ®o@þ¹]¼œ€3ç°– ÏlÚ$¬§æ@jžÞ ËÞ¬@ñxlж%Æ@NÊâ¤oMæÃ¨«ék›1:'ŽØ·üSe_ДÀ„#Š7ºà!D‚¨ûœÞÓ€ÇáÔ/ÏØDöm!w!¥äÒ6³ £Ê$-_{ÝÛ_0s¦w´¬mJ;ùú ;È“ÈbÌ_²Á1÷Jÿ®AzÜ7©M¦z/ÂÜ ¥K” ©%”ái,`GW´>ˆž3‰ÑS“íYÁÂY ÞŽ¢€]^|CÛª¥3Ζoè< 0›Õ~HBà¦Ôº@Ë“óX"El.¦õ: xÿˆÆ\„V‹6 œPÆ#Sl›º¤õúHOÅœ­+Ã)àÖÕ¤4u“ž°EJ®‚¯>Š­×”O´@6!*Ó˜]U6rÆ$Þ(ÄÙPéK[¸4œÌ7öf»3ñ ñLja#ÐëÕ¹k2$žgŒÖ¦§«¼ †§ž)Ï2.\wÏèv{¾SÌûeí…œ†®=©ûáIÚ› ZEê¬ûŽxá‡Þ`èŽÐ®Ùä5lìçó©vgó…VD0ÝM G¢N&÷cëè Õ[”GÒƒ†v%ôÐÐÙ v§ÜN•ma/ ž¾ ¦Ô.°óõžveÒ_°ƒ2Îx¢ÙFµ…©\`é®×½ó¤t»÷ùAŒ„-©–𴧍$a Ûí (Œ.y¤-å ­) [GI%ÑÑ/ÿwÒÎw0Dan 18@Z¢[qda–Æ2‘&¡ñí£‡q„>DI2ºU?ФÜÒªÖ¨yÂk)ö¿9¾> ˆñ¹ûHE˜§nVÃŒ¢$ 1–Ã"Òç®ËcÉïÝ&s.]šŸ\CÚ 'Â×”4”Š•)Ê011csÔZC´¦¢.ü"!B*ê0åÌ9ð±i@q˜"³5v¨èãƒd¡I:”\$Õ(!/¹¦ç­õ›Ë ¢úAœni´º+§¡ 3º~æfFÚö a$rÿG N±*F2@Ã)º¿‘ ¶u§ÚxQ¦¢#]Xð¼aö-ã 9Z„èëÈ>Q`¯íL-AeÐÀPkkë@ž¦mA¬ãïâo‘ýªdh›î>•‰÷2íRFïþ1(þ1ùÞømï„R‰š£¨9öÒåf&k Ü–¶¬ fß§õáPl:$üÞœR<Ø{ãúóSŽ÷Î’ý ÿÓŠ{ endstream endobj 1384 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F12 1382 0 R >> endobj 1376 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1384 0 R >> endobj 1387 0 obj [1385 0 R/XYZ 160.67 686.13] endobj 1388 0 obj [1385 0 R/XYZ 160.67 494.18] endobj 1389 0 obj [1385 0 R/XYZ 160.67 438.37] endobj 1390 0 obj << /Rect[349.55 233.65 436.5 242.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OMAKEPATH) >> >> endobj 1391 0 obj [1385 0 R/XYZ 160.67 193.86] endobj 1392 0 obj << /Filter[/FlateDecode] /Length 1738 >> stream xÚ…XYÛ6~ï¯0š>H€ÍH©#Hl7»9ŠlYmQצm!²dHr6ù÷á’l9΋5¼†Ã9¾™ñ$`A0ÙLÌçÍä·ùó[1ÉXOæëIš²XLfQÄR¿þÇ“ÿïüýóÛ¤Û’I9 ÌòõÛ«ûùÍ'NDž`þ,IRï㇫ßohêúãÝõÍýüFWw¯‘ÞÃßws?…‰¿ˆ{/À, XNf<1pÅ-n<”Ë6¯ÊÆŸqÁ=Uk"–ª(ôŠèC“—"Û­]s÷Çl§>û<ñìLó­ÄQ«¾Néê´»š‡‚…©}Ø/ ïe©vú•?“\x/U½iþÂ?•7XÛ3S¸"¼§­ùN˜Ï¢³$ÌÂeÒl7<_2ŒKCË0‡÷FBzŠ>Ëj·S³FïU­Z|6NyÓU­éûÅ—p¤8èì!’ 5ȽªÆUáé¯j·/ôG©——tÆh ‰uUjèÉhOìëj†RÂŒlƒ'ljµ›’m‰p½ åê±i!5: ÇLŸönµ¬¬•r4yñSöðºo#_WÕ‹GUt3g+62P˜ù3ð¼ÉÐJhlÿ+~$zÄuUTåí¡¤ ¸dJ\5öŒYÀIì ·w`žëœ@tvÂaḋӊ>këò4BOÀoYµ–Ðz¥Wèqiܳ<>´S>½oÄ^MEÓøñì‰.‚€¦2–†PÈÄÐÒM«Ê•ªWdþ!¢@<…óèxà9½ãEáÐñz{rçp±s8Ø ‡ŽEëû:'_hh¢ˆÁ±tµ=y‹Åƒó•†м@q"ï­Æ«ÌÊ.Tu±úyä<`ºÁ=ðnu½ðÀÎÖ)PÜ{(m[” ô–~»IŒHZ)|B ÈsàBâÅ#–_ ϱ{næ®å̉^²9À,öA à~ p¡KuÖœ:g`˜ÒíÆNÉܸHêéTWÞn ¹­ú‡ ØqWÏ.EµL·^Kx1§"ÂE<;õÖ€mu.šö »áJ‘—šý@KY¤°ZJ¬–nó9$°pY@€ —”…ûQK21ñ•`|áÀªŒ†ÕÊ@´LœödzV{P‰|:w*€Xè\Õ#œ áV÷z$>L¤0Ö;NÆÞ|{FØÔ[p™ve‡ï;@~! HòvòµC£O¬Ð€Ï“úDK.¥šW娯|ü >ëu^Œu—_o±( ­Ó¤ VÝå:ßü‡œÏ@µdY:8<›‰—4!Ô»ur„ZY N%¡7|›|—–Ì}¿çP]v‰A*Ã$¬Úa6ÎΔCzcãVÕÒì®êŒ@0ó¡‘«r©¿’aÆdÖ«Å(›4í0ºƒ³g´úIï5/€xª!ÒÔtH䛲ªMj3Ài¡²ÝæÍ÷-SŒ}Ú¶U–]iÏéõZ/[6<Wà3>Ñ¿ó·)†È:õâdc­¾ÌqŸ‡³¨tüš¬GÀÖfB=6UqhíabTî v¦˜© &ÀÆ©ÞEÜWPßG‹Ä âëØt<¼à̳ˆC•6Ôò±KcCZo´ª—˜EÚÒ‘ ‡@tHô£j À`=Pöûp=0I™D*QRBè(î¯æoO…•K: žŠ‡…'q†H‰˜8↘EÞ»’ZªÆJi’J/ÚÂ@Ä’øX-g‘ kVy ®—1ÝÇq¥;õ%¨¾¾À‹=§jjªË$F©¹& {ˆ‡ÎÈ{_ððfä > endobj 1386 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1394 0 R >> endobj 1397 0 obj [1395 0 R/XYZ 106.87 686.13] endobj 1398 0 obj << /Rect[400.73 544.5 415.46 552.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.3) >> >> endobj 1399 0 obj << /Filter[/FlateDecode] /Length 1673 >> stream xÚ­WK“Û6 ¾÷WøÐÌÈÓš‘HêÕÇ!Ùd3Ûi“NíΤÓíA+Ó»lmÉÑc·›þùô°äléÅ&)€À…/|q»po/7Ï/ãE*Òh±Ù-”I´X)…›W¿{0ËUÇÞúâÝÏWoß|½„¯Ú[¿¾Ø\½{»^þ±ùáù¥6Õ(ZøN9 èsÒ^©@ŠX/V2v+ ô~¹ ¥ö¾Ç¿Ðs ¾ ‘†N 6ycËÂ}¾HƒñÇ÷¤ÆÚr®}¬lÑì‹ë‰ä—°p½¼^:…o+þ͵ô9­ñ­W¡Hw©NÝÜÙ¥•W™ºÝ74>dKy8‘p-sÀ‘öê¶‚ój[ÜþÓܽ_†ÚË*›Ýì Éo͵ ãÂ:_8½ÛÜÙ‚äQqâk™JáÇŠ‘O W~,|ö(Åî”W” îÁ4²&eÛÔvkd-¬Öyy\®dâuR»A`bU…B¥O[¥"ÑAHP€‚Ì á_ ±‡çD²žùûXVÍlc8;a‰]YÌ:H¼‡;›/eìÝÁÔÀ¯û=nºKiPç•å¥-  ûé[“Ù=i-ðÖ#ܾÞ@¢-”LEàb-4%j, %Þo,À&æŸÔ™äÜ‚Ñ Çhok´L%ÒkJüW^n«¼=àíî—¨XàoÃ2„RJ›ÊæŒ-P»AGú¾t‡‚C£´6Ágðʾ55ÍwUy ½²‚tlQ˜êL~xbÏÓDRy—K.+PJ8<;÷Ýà'žE`¥Ê{@óðàTz‡ÒY·µ»GZ X‚Ô±2÷¶lkšñN4éïòÙvK÷J­T!cIý$¬V,3º‚Okð'f²QAìæà°Ð9 §â‘ç’F‡È,>SÞäødH(Ø3…vs†Ó*Dha¶hŽôážÛá4'—.[ž"¢šúÄ*¸c,©ÇŒ±‡}g'" zƒg=6’Bw4Õ :lnĬr¹bjÈäs GôÿrÆÆIAùÌzÒ³]Ñíûº¤QžÕ˜u8|è¸þ1«²†¥1ËÊqbYúCk–¶JB¸䔩Fó@6*—¨Ðg#AA÷H`dÌ£Sf†¦  ñ»Ÿ²¿ÌÎîÍôÒa "ÅBh SÏt¬÷@ÊEC úd™:ò½|àÕ2I€LÖ¶È öÖ¹}À9 o°#ÝŒ¦Ç Ü ©ù'À‡îCÙ_ë8±‡‚í²\iÅY¦T‚–EÎ2\ÍË øm 1aZPx µ¬BaHº0ÄŽªA»¹ËXr¼*>é ºm ¶`ž™'˜ýt0ü¡RnËIGÁyzÇ͸ Ðs;Û´Z‚XÅÕʰÖTÌc‚·Ã\øÖÞ3¹KäfRĉÕŵêò`è{—°ˆ~Å%Ësðþ¨ZÓùÏhøäš{˜ÜUÔÎøC—IçQ_ôˆ»¶' ™Ù)D5}"v‡ÁÖ:çU†’Œ«Qk÷[Òm²êÖ4µ+…‰÷‚w•ùÐö6ã6vk]yÅaÁšTÍÙ´F+!^qÆWmm†N‹žF²}ºIƒd‘¼<¨¢àvå øŒ;Åž”Pdœ­S¾¦Ä÷ñŒÎƒPDÉø2—?¾x³&VýŠÙuu;¿ô3‘C_Ÿ‰Ç¾2ȱòo/..€•UùÝ@ér\AÄú×—¯®~Yó~»²ì ¤³­çþ9íÝd)Üdg¼ï‹8¿#®0¶±êb«q$glèú»N0>°ti]¹Ýƒ]»Ý¡r d¬)ŒñYt>Puw{~Þiç{’xÔ|ß>J±ìu]z9ï¶ðñ¨Æ¡¨Ûj^l )«Gì ±e }È-¤yÈ%G_8èŽ×ò|³¥¡;'a´¦>L)ôA?­uÀœ½òǧ”;k­ÁtÁ(|Ô€Y1–½Í-\µŽGpˆÕŸP–“’ #(;kú§fß4Cç'é‚ÿŒ-9ì^w ëþ‘·d|€ð#òW–ç´+šÈ§Y:‰ž*Ô¥»Ó€Æ-VñYNöñPÁY.’ƒËÎÀ=Ú¿'?‰ƒq $ã@Éÿ:q? ƒôi„Oã OÄÂÔß‚øhj+,w‡›8´Ñ‡øGkÔùm 2+GF¡bëá!;.ÊÓW;­žõy[UCÕ…‘_?Í_o¾øfC±° endstream endobj 1400 0 obj [1398 0 R] endobj 1401 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R >> endobj 1396 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1401 0 R >> endobj 1404 0 obj [1402 0 R/XYZ 160.67 686.13] endobj 1405 0 obj [1402 0 R/XYZ 160.67 668.13] endobj 1406 0 obj << /Rect[194.56 518.65 209.29 527.07] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.9.2) >> >> endobj 1407 0 obj [1402 0 R/XYZ 160.67 181.84] endobj 1408 0 obj << /Filter[/FlateDecode] /Length 1444 >> stream xÚ•W[oÛ6~߯°=È@ÅŠ”¨ ÖHRw]·&Áâ¡-–aPd:æ K™(7É~ýÎá¡"ÙrÒôI¼œëw.<òB†Þµg??{Ç‹—oc/gyâ-V^–±$ö‚(bìßüéK1ûkñþåÛô„‡’Ié…öúäÝÑùbþû 8"?f³ M3ÿìÃѯs::9;=™Ÿ/.hwtú±ñùt1ËààJ÷æ k†ôxÌ¢xdGÂY&¬¢˜å³€s!ý“¦^êN7uQ²m0?ô!XÈ-‹ÕÐÜêJ}™‰ÔWn…_Ž…X“ÖÞQæ+¢éÖŠ®VMU5x{«ëkº[5톑öìA»Y.¬qd-ЫY Eì¿ê”é^[W¹dIî',—–æU×nUPVÅÖ(" &4ª2j$ëîQYDø iûüÉÀ?æcÎ’ÔºQLku‚$q¹1x=Å,Ë…º»i•1@Ur_c,¤ð!VRúEµ-:µ|g°«—t‰@ØoGLH;bCG]Cß‚”s>²/Ô#òûæ¡“¹»ï­P$íÒ7Š€ ¢³PŽA½P%¦ÓΓ˜aÈDn‰r&ÆQÎd¾Ci…ù%ýMÓ*Zés­è$8è¿Us­ËÂæs2˜j^Ð-Á‹cÀrº©TáWÛÚÚj.g/ˆ»[;¿dˆþŒ2¢$î%“qg,ºièeÂÒü!ô{I=†8å,íC`#ž…;A\þ8 â0öPÒÞj£•vѪM¡k*Å JÙj1tW´Î.2&Ó´'t*™Æ˜Áç4õ7¶þïq“øWàuê÷7x±­:}SMœæ:Vïµ+Óý„—ŒGŽÂÙ Fyfµdè&)=€iš1‘|Uºpó}ûr–ø'5A5ï 4 )„EØE©WlqÌýÓ¦SDÑ­‹ŽH(<°8,A×KU#®¢¡“™¦—¡î{"KÑ6þå¶t̵ºµQ Ç–š{;¶kèÁcäYHÉûq­0åáÍø¢A‚H|µ$Õ…5/a¯¡ -¡–:e-Ké8Ù© *›ºé„çÃЩí5"éýß+¸IÿÉ¢¡¿¬Š!ˆÁHÎÛñ@…îŒk?»X|>ŸO»X/vÂEhµº¸ªAi³=êû,Ê-”/lŠwk]«â›ÄZwð˜o[õõï{šÉNšÍ«LBù›íj¥ï"ÜÙÓ.t¥Ì´‰õSÝ—¾úw‹"1ìÈsûBãÉG]Gârvxì›ZüýÛ/Ç$é'b`•¾šªCʳã÷»”ÍÕ?cÊäòèâÃ.ea6‡dÎw©ÔšRÁ¨×´Ý3æ[ð}£6áðG­ïhur yúMÏä™p˜'Áøv»ârìè ™­â>Õ\·À%¤îCÚš©ùð"身jÄ“Äu÷7j2h—»uãôµªl®kýŸZ:¸÷ÜÒÝ¥ÏÝÕ£¿rRBßãî_އîgîCÑ•³ˆc^?ù3wŽ¥Ztjk*Ö rÚjíÿÉúŠwSA‹s³}ðáìVÛ) úê)‹§éðæ -×þZÒ'§¬¨Ю »ÈYÜó£YfÒZ8{ÍÅYB}ôÚ¾v÷?Ș Y endstream endobj 1409 0 obj [1406 0 R] endobj 1410 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1403 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1410 0 R >> endobj 1413 0 obj [1411 0 R/XYZ 106.87 686.13] endobj 1414 0 obj << /Filter[/FlateDecode] /Length 1185 >> stream xÚ¥VYoÛF~ï¯ ,?, sÃ=x!i`'‘“±Tz)Ê>¬å•D€‡À#¶ÿ}vv—%*Nƒ>H{Í=óÍÐñ±ï;G/wËW7‘“à$t–k‡q‡ŽÇ,Ëÿ މ]/Š"t{íÆ-ßúãî£ûïòÏW7|ϧ8ÂÐñ5OÀÌs<<{ŒPqÇ£‘¾QD+ÑH× (Gov¢me]’·ÀæP'ÄñÁI )߬rÑ5Ò>{“÷©$ú²$:•dlÂëÌô ×¢Ë[ý@Æí«g$¿=Ž‹G ÄÅ£¦Ds,·ÊXÆ *]¢®piŒî]$kx ¨Z›üjÌ6³«¨ï³¶õ³3¤ÒÂ#_ < 7 S›‘ýc˸oßå‡zª]›U¥È_Ã1DÛÊUö=ŸüËúÒ†r…ãˆd`=c(kíÚ˜Uéx€^šmÕåfPb A«C¤nsÑXÚÁHà/ÍÝ@f³n^ Ñ®ÀЭI%á8Quåkûn tU= Y„ãÈF¤yÌÚÕvRâ³ØR\‚.Ú[ÀQÓÖY¹9txU;Q÷N+‘ÛÓf7† ÏÔAä¹Mí1€8Ã4Rñ±ÏÆFêº?Oѧ/‹eêN«wŽâ¹«mVÊÓØØ)Ú¼LÑ».Ë´7 PUšuà¶J¦0ãäW¥7U!í OmUŽ‚*Äq2ÕWÈøN®J©”yÎ|TV-\%ûƒÃª*›Vh ¶†Ãä°f§’£a „ë*Ï+ {ÔVåº+W€#¿•MÛô´µ¹&F}ñ a°I6¨*ÕÅFdʦãÌ' GÄ–]ß('X&8f£Òä %WQù%e1l”щ2õºªdPŠãÞàÙ옛0¨Œ¾3åYá™P1â`Ü‹!RÍЀ“1 4EÍ¥)ó>F—¦ˆz/Téóï§ûøM ©y Jš¢Wc ¡àéÉ‚ÿzHè(Ãc±g³Ù^´2y6;ûoÒé é§QyZÌÌzÜñ};5 Tq‘'@È"Ì‚1ÔY6ãZÚ‰ÆJzÝŸŽš#œT=ŸŸprSËݱTU"„[‚©ð{ªÜžs­ Znº\€Ï>CòiW˦Q †Ä4Ð]WgË&krP9…¬³•U¢on(S3qŸ«Á}d¯bìçËy_œçÔnì‡ÇØþ`Þ3¬Di4ìǤ:؉šD¨­ÌM-Uƒ õ4Ƥ¼ÓêÜnEkvRÍÞëÀMËö]'MSpB-“Ba TÍÔ8Ì“oD ò4¶ù¨Zú w÷åÃüîúvžºWê´ø{±?ü5ÿ<¿^Ì_žçgà ÃWÚà °w´=ûÉðz¯Fz–ÿx6¾¶Óì¹)E?ÐΉYuC†M-s¹‡<µ¯µ½È6eU÷x¦,U]sâŽòâsVvOWø‚¦)æê÷¿]fÑrÍ–b>xÕÊ¢w±»?ð>zŒ·','?ÿ>ƒa·ö#E‹SSzmºZ˜q Wzœk•Å.—…,Û!Z‰—OY«q¯ŸæË߾Ƒhx endstream endobj 1415 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R >> endobj 1412 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1415 0 R >> endobj 1418 0 obj [1416 0 R/XYZ 160.67 686.13] endobj 1419 0 obj [1416 0 R/XYZ 160.67 668.13] endobj 1420 0 obj [1416 0 R/XYZ 160.67 407.45] endobj 1421 0 obj << /Filter[/FlateDecode] /Length 1254 >> stream xÚ•VKoã6¾÷Wé( 抔¨G‹Ò$»A‹<Ð5ÐuŠMÛÜ•%C’ûßw†CÙ²”lÚ%r8óÍëŽ|îû£åÈ.ŸG¿N>~ G)O£Ñd1J…£qðþ¯þf*ôþ™üöñS|¾âJ|{|ysñ0¹þà ¹7Žã„Ýß^ü~M[—÷w—ד/ôwqw…!ûò×ÝÄK`ãµ®'†‰aG$x"­¡ á…ŠÝ?yãH²¯zÖÔîˆß¥à©½r›}ódÌ4ØôfjZ³×”• F)«f\VF(Ûè9IåY±ÜfK .…AÄ>ëBWYžïén½ñƨ9ûfŠå9ì‰ÐéMHodõv §,£ßgOp¾ÕÖu,„ˆ›UwÂP°YIp2SԸ㳩T±Îç5gÅœ>ÖºY•&aóÃÅ좠£ ¸aœª¹Fe…v*^L³rZ)œÉ!œ2Q\¦.×¼ì”GÒÕÛ©ŒÄŽÔ,ʪ£2’†<䨲âŲÊdO9F8ö#öÉK$³¥Ïô.[or}Žj$„Eã6*ÎóÒ“@.–°%Òž“ ³6Ë• iz²±q÷·µõ¶›’vl"á|f{ÚÉh¡ýÒPº©"¦LP8„<66 Åãç~¬B¶±RSÚ¡,hµþa[4hìÅCÃã¹Yë¢6e‘å$µ’Ô¼Ÿ¡Øö‰”\®Ë²¬æR%Cö‹…-ýCð©ÊvxªàÔ.bèÛþD@ 6•)š)Ô^]C‹ ;$‚Bñ(çÅ”}8ûйó]²¾ãÇbÝÐ'Ö)®peÊvSïœ~ág?õÎÀœ­ª âx whçGrúJ/Lát>:%­OúMÛˆµ–(Ž;gÌ'C];“U Ó:X÷Ü©›Š¨ÎnÌrW8y¨³!F‚äbcZ·ÆÆŠ§ …d‚Ö$P²Mï¦Hx,Üñ~x3i¯VzSéÚ‘+iZT3".ðÊY£kÜ…ßʼnXˆkm+F¬áÔŸ“ö´C€ö‚œmGÚ¸ "ˆ˜‡q¿\-Xdí(iÛ¸æ¤. Zj¨McÚFÌ'|JüûS. W¢sÒ¹Ë<«kýÝ ÷'ÎP´˜J6³ó' `´Ô%}µ<ïˆJ‰*â*pq™½nF¦Ü—â‡y+ ¤¢ËÐ0Óêí¦Šƒó‚ÉÒ$ûbê!júÈ1]YâŒ5³~!öÁÑÉÑCùJ.qÚõ ”ƱnøU—k´G'3“Î,.Xg•†BÄž@e•˜¼g¤cÚŠiì¢à¡JHcæv{Y«X± é`2u;yÚ%f0N/ ¨¤¯Ûº¡/›W(©Î{…6œk–"[[ pÖñxrÅ ´ Ä7> Ý0´aÛGsSól_Vƒq4‰/µîD²Ézk"©n¾ú©m9·Cî É=ÛæŽ7Ÿñå®Ù'Ç Á.LKx§,z:ýü÷¦Ÿÿ:ÿC{ÚR¡ïŒ–B¿ È}Q•ë²Yyd¼ÁtÀÌss`ÿÎhm`ñS‡hb½²¢û¾èþ5ÑJ7Ûª8ÈàÍvæ:ýXÜ–ÏúíùÖŽßÃYO´fèú´ŒíÙ”½ãøÀçl>ïúïâ'þŸ{דþe›L endstream endobj 1422 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F12 1382 0 R /F11 1186 0 R >> endobj 1417 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1422 0 R >> endobj 1425 0 obj [1423 0 R/XYZ 106.87 686.13] endobj 1426 0 obj [1423 0 R/XYZ 106.87 446.39] endobj 1427 0 obj [1423 0 R/XYZ 106.87 171.39] endobj 1428 0 obj << /Filter[/FlateDecode] /Length 1261 >> stream xÚVKs¤6¾çWL99@•GFñ¨Ô6ÞÝĩг•šÓfr`Ax”`˜ð«òãÓRK ±{BHýRëë¯{ ØÜmÌççÍO»«OÉ&#Y¼ÙU›0"i¼Ù†¡þì>üéE„†Äß&IâÝÜþòñ›Ÿ2ïýíõGÿ¯Ý¯WŸ¢“*(Åñ&0jœãq:oYFIÂ71; ô½¿åŒ{Ÿ•lz\ö‹c«÷ÀØÛRJ2n4ŽZtïí}”zg$('q¶’ª›½÷ÃÅ FÖ Ñ’~á|ï=íýKü…Ÿç½¶µÑmH IFÑ(ECïFéÏÚ$iÄ#îPk‡[ óÀÙRûHÉ}û ¶JÞú“ŠvxJN„ɱ»Ûðó·™pq&JNÙ›8£ßè½íͽM²å$KÁyDBt~Ûöà) Sxÿ¼w+»õàsîåJæ_k±Ä &rÓþ »µ¿NHǯ­(­£¿JTBÍ·l ™W J‰Æg‰g¢K¼ö+\ž{‹¢‡âˆx潯»ö‘C9',f£¨ó®à: #/oJ½àh$6FÜ‘²W¤trG®ËèeÛäõò’dÓ ý§ã^dŠ¥„2{®»Ðf@îXÇ·Ô†4§öøÚ¥C”èE–ze‡·U¢Tƒb d(žfÈTQHÃif;Zx†›ôëâJ<å÷ÇZ\ê¿Ä>“ÓÅ„®’@9A1.BŽã3ˆ€µ?¥Ü3‹ÉûS6ód¤*ÕÞ¯|RH›{ ¥Ï€DÜžÚ›<d¡½,QF8Å4!cBsÙ ‡žpox©1aþ€,ˆØè+‹Hâ"ùq¹3Í]`„y>^«J0Ü x ÑÇi|CmѤ_°4#<†!›Ü4¡dŸ7…XúÔäÃH•ë±<(·åAãp§ŽGVÂrâÁˆìa«¨ˆú%î}{CÝKÀ‹Þ‰¦:ú¶ZëQö‡5‡)#“,²¹O½hÝk¶I\”RAôòA¿©0h޽¢•yU[×­ŽîÑRê•°–4R—¸ZµîjÕ´ ðÛ1 MÑ¡‹íÚ<ʨ阅y׿ Igdö´ª{ÂÂÇ ý˜„ãÏoêA¿ ÎR?eüei!%‰«i}IQ—š3xÙ,|X8_”,±Óá_^×V®Âoï,8*K •Y Q½pNך¦~9Ë×vÅ|ÚF˜ë WÓN@ÎoÆL»´½ú q³„›~Ò)G¼¸ÙÈ|דŒÔ8]Xà¼f‰Ï>xÎM7KÁ/s¡øÔíÄw‚ílæùöñŒ½>ªœóN?/{:õQ=P¬¦°qº<]àÒà¢Äõcn5­õ®D)*ÙˆÒzêZ7áÊnëU¬©ÜZtóåäj“YÏ~ƒ½OÎLagGVxöW‡ÖWžÇÐBÇð‘eø®Ï{Y7Ù}wfÂÈlá¾b"¢$pu?éÀ¡Qlž6ЏâôŽÙô·;šJ…¬žqçÇzVGL}¢§-³…d(T'»~¬O}ªí¬ž|¸mÌHNÓ¬ ?úúý·üGõ)3T¯ƒˆ©u"•ÿÚ„\?ãèhobU«pQ´æ–»Aa#Ó܈'GÕŽ\aÝ\Ï„ñ¿ûÛ܆J endstream endobj 1429 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F11 1186 0 R /F12 1382 0 R /F5 535 0 R >> endobj 1424 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1429 0 R >> endobj 1432 0 obj [1430 0 R/XYZ 160.67 686.13] endobj 1433 0 obj << /Rect[400.48 438.8 412.44 447.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.14) >> >> endobj 1434 0 obj << /Rect[306.21 349.72 386.66 360.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgChecking) >> >> endobj 1435 0 obj << /Rect[409.25 349.72 479.25 360.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgResult) >> >> endobj 1436 0 obj [1430 0 R/XYZ 160.67 313.01] endobj 1437 0 obj << /Filter[/FlateDecode] /Length 1567 >> stream xÚ¥WëoÛ6ÿ¾¿BÀ T"VïGÑpwë–¦E£æa -:V+K†DÅñ¿;¥È–Û¢Ø'’ÇÓ½xŸ ‡9Žqo¨åWãMöâm`¤,Œlm$ ‹Ãö}–Àùêo3Œ¬²ß_¼× YŽº¾ümö1›²à ß ˜eÇqb~x?ûcN¤Ë7—óÙ-f7W¸ ÌÛ¿n2+ÂI2ÀÖâm/VÐÁ-;ps×Ô–†æg±’DYñŠ6KËöSÐA<îèXµÅƒåŦ¸€ ´51È ­É“OaÄb_ûÔJ.‹;µ,pX”j–zyb (ëÑËçòIYZW /Œï»†Û(ÜLcx°º, •LYÔèNäšE‹«g¢`~³®›­È‰ö¹k%qÕÕJ@À/5ßéIp­ë²¬Ñ÷}QÝ#É1àÿVìÉ6`‘MñPðraѧâ‘ow¥ U@ÈOäŒ-¥ÆÇ‡wB!wܘܵk•nbÊš(¹¢Ù•ÐŒkZuØóšt¤FÄÒ˜Þ)eAlxÌ ”žÙ䑘ŸBîô÷™ ¶2 ˆ.™?"´;Ò¼ª·[^åÇvsË‹Ì+ŒL^”|YbÔ£44³iÙžë° ëÙÂÜoæFè…fÉ¥x„˜Ÿ˜G,ŒuìÖ]¥ƒçû±ÙÙ5U‹‡„ƒ›uW–´Ûq¹©ø¶§×Í$µcG VºO5{†€.HÈ ó“Þ<^¶b"%e¡«ðÑr]fÐL<¨—bB=„›BÑÒZÕ’šÃºîªœMKËê5Ë☿(U=ÏüëY6¿ûw~3{s=¿ê9ÕC n§ö®)*¹0mÛ&î+¡ªŒð;ô×kž‰;MjõZIe‰IŽGzå^|4ÄÅ~5) ˆUê~Ó…°wA6Ý ýÕ¤ÈkažÏÒSõGbµn _2‰FY-ÌgÏÐâ0÷ó…õ\³Û#~rOô1ý¶¤¼hE ŠÒ?tFYïÁ\á_TCÇ£‹ På¼Éé²,– otÀYŒE.Z¢pZ*$w[ ÆÁRwWº¨×´B“‚â¢}_‰ZW/½ïâKƒ±Ÿ÷ ßnU²øqznÒD!sƒïš¡Ú¤he‹u™º&G;ºf»j =órÒTTtw¹á;ÈXeÝ<ƒánøP› ˜Œ+ uƒñ½÷ÁÑ=Ö ç?[r$у 7CÌ)¿B‡Åãè¾¾ ªÖ-Ë79LïbѸFºâ¸†8±o )…¾׿×ê2cvð]0jÅ‹Ë~7-“ÿ×= €.7bõåcSß³±ÛnÄ‚€ì¤àÎðW%$,[.¥ÊAØ«t<° ƒtPÓØw¢é4NAÚw’^5rO§±ïôèÕښ˸£ ‡Í¯ô_B½mê®ÌûÒ˜“žV8š- li »B­)S8ç5a uí°í§…Jʱ¯ž¯*Æö£¨Ï2|Ö÷í½z0ún7fÉñw8rÎꀩÇÜ蜎O¢íJy^C€³þè#lv?ô\G§ø#ˆbAO­G×´ê=ÇÜÖˆíÜ_oD©ÁlC„qKBˆRÑJU›QO„ÓSO„ÃaŒzA8Fð ý§\N˃w²ÞbbÁ@;,,6Ž@hh¾áw!@€à«x,æZ Š‚ÝfV (ßH™½»¤uÝ#T™ b£6¯2#¬ €®èYæs} ƒèt¸Ì»ñ„ž™£Š ð=ˆ¦¥Ü… B–°pR&“žÑXFô9à¿’þúI̦+5 "sÚÕ»jl¬hºî\LhŒ)ò …?jÐI¿1Éø7´Vø^®=ÝéCû>ÒöõKúðœg?ýÒ )» endstream endobj 1438 0 obj [1433 0 R 1434 0 R 1435 0 R] endobj 1439 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F9 1009 0 R /F5 535 0 R /F11 1186 0 R >> endobj 1431 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1439 0 R >> endobj 1442 0 obj [1440 0 R/XYZ 106.87 686.13] endobj 1443 0 obj << /Rect[433.89 409.04 451.58 417.13] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:awk) >> >> endobj 1444 0 obj << /Rect[105.87 397.09 143.57 406.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:awk) >> >> endobj 1445 0 obj [1440 0 R/XYZ 106.87 241.02] endobj 1446 0 obj [1440 0 R/XYZ 106.87 184.7] endobj 1447 0 obj << /Filter[/FlateDecode] /Length 2321 >> stream xÚ­X[Û¸~ï¯0Š+oÇŒ(Q·i·@’´SlÚk â´`lz¬Ž,’</úã{.¤uÍLúbSäááá¹~‡ _øþâaA\¼[¿ù,2‘Å‹õ~*‘Æ‹UâßúÇOžR‰å*Iïçõ2 ¼·Ë4ôÖ÷ïÅòóúÏo>¨n+lŠã…OÛ¢—‘LE,VABT°²>Þ™^w~·ñ÷Oºnþ0á b%–B×f¹ £Àkvð´Œ"˜Îõ—‚f¤Wê£i,UÅÿ_– „gwìÌ&ˆ’Òìnð;!V#¡d :©vædÊ)·¹™J—Ä"‘=éøæ¡/B¹XI)²ˆ–ðH0H"àÄò8¦ÿ¡ÛIìÕgG”7ü_›•;*OgÝšÎ*/ßójUZòjÏ ,'wHÚ2d»]‚]>˜nГvÞNaöšâ«&ÊÝD§™ÒÿU¥JYÊ­.ÁJ"¦dÂn{Ì[ÐÅïð+%e IS¡Eá^º(˜®ï ]­ÏyÉ“‘O¾Úé`Î-!#w…/Õî2§ƒ¡«†g¾²%ªºuÊ^…±ÈÐ?á+¢þ€‘UÕË•’p˯úx* ÜF)ŸMªdF>Tê‚?,  õqã•ôT›§¼:7üÕ˜m›W%Fq ‹¦âmWÝâtŽlWV+JdŠ•Â|4%:ù!ÞM£VÃÐÛWEQ-ƒØ{nÄŒçd˜ò]+°ýr1¶U¹ÏεyóÞúÎÈgŠŸ×o!çÜÒ 2ÖOo×wÿø×Ý_Þ¾ûéîGäy?ðßo6ÞûƒÙ>þ­®x¦€úºYŽ×iH]žN@ç1h¿2 ü?¢ÎB©w`:NG°Ô@òá)m‰ÏM^>L<)ŽEä\©iu›o'9Uù]ÀlÀQ›Öèó{F=b«°‰oÆÂ%ÚÍR0£?±Ñð&eð·¾aÓYˆ‰­§é¼d[«¦åÑV7V#Ib)üðI2ô&É­ÇîM]sVxTÍ -*›$¬x¢6º©ÊÆFR IyÝ´Èê• :¢—…S”º­e\à„IȒ¡¹`1´g.Ñ´Ötk©Û᮲²†“’Ëæaxç­ÐæbR§»eRD} P˜gà‡mÃQ~SYJçE¾Zjªâ u‡Ig•)éÝ—¼«=äv—h"XÏ'^@¸ùN_Oƒ`›RšŠ8ìÙ( QÛÄçMÚ¿Ô@¨S骻Ÿö ¥!…ÑÈ1…ϤWàcT-i*†5hA…1Ä6™ÄgUÑ¿åÙˆ’[­ÉÁa#á?«ƒzùîû¹½É ûðó!ç ÌŸºxÆ/^~ilÙèÝÃN‘Ý‘ž/\Ñïîby´8…Ñ.>«rkl˜ÉÓ~˜¼Eà£XU¹ã1ޥоuhœ™Ä’”~W¿éA6&ä«©^@`Ûs(ÜqÐ%9Å07øÙ×W©X‰0í— ª½ °à¹1ûsÁãç–͘²ÝkY ª„?¹ ²#WçÃv<¢ÛààhŽUþ‹FZÒŸ]¡‡åküñ==ÈiÎ'†ŠUƒÞEù A ysàYòÓ ê)˜°µ”š§v9Iªë OïëêÈ+– µÈÙpö‚ÉU/˜z¤ó.+pÆÑðúIC–Žïè”Ä=¦S¿‰dßÎÁQ< %C¼Ì÷-6„#¬—Ô ö#ÏpŠCI¶ÕñtnµÍ"°T•Å…GìHd2n T:,z°Ù÷<Æ|&ÿlÆ >H¥G.4.G]˜b¶óÓâ-ãÁ'ß·:êG3VHw¡FÅ[î-CÆü©ïPDiŸ„p0Ñâ5ïÖÔùõËb ’ ³s†½…Ðóã'…ØÉ…}õÀ¥8®l ´Ò¨ z%Þ·ñ†’ýþOÐGX”Ì)欚Ç*ò•ðÀ!—]íób¢§(èò jI…ÞßÙÊ¡$‡‡¿"/íQ¹Kµå¶:[`[³Œ>è°uù%‹D{‹{ÁãH)ûÞ뚀Gs™ÃÒá‹&{!§*gè'Š·±''Øbr•ÆëWQ­j1X™€/ ¡¿Ûñ5{›çút ‡k,ús~©®úm_€¡i$è ±<Áÿ¡ûØ>î9Âôõ‰‘Ç0ó€¿nz çH®Z6ßýs³ÙxŸ>Ýê¢<o?þ-|/yñ{{Ö÷H"ðwùÝU¾Az¾Ê§zòѤ ÛycÁœLÐB_8íH‘Ê~GrOÉ%ẜBV=êêȯ5<ÑVöÿ—<¤7t&Ë *yµr_IºÊ h'ÿÙ :™ Œ¸?j¬ÈWtFä€7Ž®»L!U ê6äZ*¡½09w(Oùöi—fž6pšÐ±Ÿtt,޶X5(]CRˆãˆ<"Öõƒi_ä0uµÚŒb‡¡Z÷Î@X—zÝ¿oÛI)W¥l'uóí8Ìb¡^ŽÃ¬#è7X+z?¿õ)€ìª{ë“B.á¢*óÄÇ»Ÿ‚ZH±oe9Áƒ]b›ÝB&.9³mÂ8²Muìý›GEþèPNM½7ØP¯â‡@õNº±­××­9ÙC,Ö‰c×»ÇØ2 ²[ÛYnÜ`Ðh”Š»ä{5JV_}þ4º¦†\}À!ÊßRµá•ú\Ú¼< ‚´+¯Bƒ—©»ßžµkíÛÇ%T•]ÿzû8sÁ>ûkÙÄ6#óm›c“†®±ÖÛæQ®‚ðßfc‹ï¯m¿…o…ƒb¡’’Qî:ŠþžºJalú¼>10 ¥¦>?½oy›{gpÎÌ"ÞTp SNM_FüR^4åÊõneslÀO*@Îð7ì;pšãа» ×_æÅjámÁ ;Å`+%²ã3ÿŸ·Aôç0ëà5á†ç®P•Fƒe ^*Gû\ËåP&Oμ¹GTÿ_r߬{*ï¿lç/(Ç¥;™3ïþ »b¥è endstream endobj 1448 0 obj [1443 0 R 1444 0 R] endobj 1449 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F11 1186 0 R /F6 539 0 R >> endobj 1441 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1449 0 R >> endobj 1452 0 obj [1450 0 R/XYZ 160.67 686.13] endobj 1453 0 obj << /Filter[/FlateDecode] /Length 1392 >> stream xÚ•WYoã6~ï¯0‚J6W¢H ô!Í&Ým‘dÑh‹ºŠE'jd)«#G}g8”eKvvýbSœáÜ3ü8q¹ëNî&æï—ÉÏó÷ró8˜ÌW“(âœÌ|ŸGðýño¦"çŸù¯ï/ ‹ç*®ÔÄ5ä³O§_æç¿;pÂg’;³0ŒØõåéoç´uv}uvþe~C_§Wq!ÙÍ_Ws'‚?IzoÀÌŠŸ‰Ð쀎ªÍ5“.[°l…b–йhsNz\vF}xЯ†‚EÌ•° YMòв!qõ£3ÓËl!T¨Ó)Òh1ÔT¯’6oè̃#B¦_‰Ò jkÒ*+êF'éÂXÈ@²Ïq–ͽ®ˆå%”UZOÑÆÉ,ty‚ã•1Ϩ:¿aeÔ€<#íøvl«¶X6YY B³ù½ÆÆUñ½Á1±7±¨I ˜¿«Ž,Z,’ê®]ëíjN¦Ä“)‘2œS÷ä¶“w>»5±/ÍoúJ{ËrýØ6¤Üï”KVéÁLOòxG¢©¨’NdyÞÖM•4zJ¹n~´Ò Y$mTDžp/°qà—ç—×{%;†Þƒ¦Óº~̵ FÀLeÙòÙEf½,’å2£½>q3f¨Á6¦u­²[(þ…ãÌ”ì'uãm Cªªù{ŠÆ®ñ(žq·ù‡ˆƒÊÂ2oÄ‹möÇ äåÅ‚½;93éÉŠ;²ÇX‡:8ç'û4QÞ†Æ[éÔåØÙH³ËjãþÚÙ4¥…»p¦‡©Þ±êGÁyJòVï88ñè¼ÖûO'iº@+Ì£Õ^··ûÔ÷æ½Í,ÙZ; Õ!s6~³µNøø7ÈŒI…çö•22‰{“4’"Þ’"6RvÆ·Í+V.Ùöǽ.º.ÎlÖË*{l¨ »½ª-l«f–òXÙ™Ð.ƒz§Ìógγ)BÜ*ÛjrÔL[Q+í«]Œ Ôî8&û˜ã#x£#xÃ#xƒopW!WÁëÁ+ŽàõŽàuÄa(õeî!{÷7‘'å[MC5zU6X葟`;DÂÖ>lîØ£û2±3p›¶‚6Õª¬Ö£í_¸‰ZKM{+º¸¥“%öÕ=}=9J1E†5v“ìrm `+{.ƒ ˜` '…e,hG¿Ô( {efIŽÉŒví€é·„F*:Z®¬°l­kD<¾"ˆ…´^×Ä2v4cP4¾ Gw}ÄÃxç®b÷IM‹adq/¡¿µ^—Ù&S4?f0—V€‰.Šd­Ñ!l¾‰ŠùA€âp”…~Onæ§óÏg£ZòÝ»;÷¶ †®4 UqòTF+¤\š”×t€bÙæiÖ,•¬Nø„yÒ–ž,«²îgº]•cgàÊë g¹Nô(ü"F묽øBŸï@¾S/]|˜¿;]è kÈ|´Yªó¬@(ÁÀgÈ~rl1I7b¯XteK’¬!*Œƒô»tyuÞTcŽ¿+}— ±SjhÉsWfa]jøJÀÆíñx´¥CÄÒ@ÇôÆ} ¯xæà1­ÚºMòü•›LCs‚„næ”›&–Qp„çs/þÆÛbãü`œx¸ñ‹T¿ìL9ŸÂ@®Kóv é~‹†¢Ñ*°T¸í #h2å)ö‰ƒ©*Ù ƒˆ™€îŸ^† §Ò_Û¬Ò©‘Ьz¯•€H`€ÈFÜ7¦ÍþòaáÞvC«u}Û¿6¶ÅUåÚ6&V uö´y3ŠÁ= siÏ$æ®·âV ö²ûú8Ÿÿð?¥'ë endstream endobj 1454 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R >> endobj 1451 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1454 0 R >> endobj 1457 0 obj [1455 0 R/XYZ 106.87 686.13] endobj 1458 0 obj [1455 0 R/XYZ 106.87 364.08] endobj 1459 0 obj << /Rect[267.65 280.44 290.13 288.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.4.1) >> >> endobj 1460 0 obj << /Rect[208.51 264.74 235.97 273.16] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.4) >> >> endobj 1461 0 obj << /Rect[242.44 209.42 264.92 217.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.4.3) >> >> endobj 1462 0 obj << /Rect[278.11 166.29 300.59 174.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.4.2) >> >> endobj 1463 0 obj << /Rect[218.97 150.59 246.43 159.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.5) >> >> endobj 1464 0 obj << /Rect[242.44 119.18 264.92 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.4.3) >> >> endobj 1465 0 obj << /Filter[/FlateDecode] /Length 1606 >> stream xÚ½WKoã6¾÷Wø°Xs%¾$m4MÚèæßꙎٕ%CMŒîï ‡²eËIvEO¤Èáp8ó}3£IÈÂpò8qÃo“_ænâIÊR=™¯&B²DOfBà0ÿõ¯@²H±é,Žãàêîãý|šðàòãü~ú÷ü7òpŽh= Ý!•Òv²ßžñ4b‰€1v+ Äîç—óÛ« ð¥|2‹"–*·»›Î—ÁO8¨àÝ"0Ï[S6ö³™åÕfÛµYk«r1u§g£ãÙr¹Þ=¿÷Çw$84xÆ5KR"&¸;s¹\Ú¶*³b:“‘ ò¬68ÓA³®ºbIó‡éŒ'ßh³OS¦¤«ª¦õÚä] ¶N¹&QØëÊ-nÀ$)tPX:J»íÚk¼±t˜‘ç–I–Êáãz]-Dp»šÎD;%'n‹¤ÊÅ'³»… PzÛ TÛ¶f‰†Fµ–´îŒÄ‹ê®0´ô„o çàçÞ9ø±4 ®âÒø=[z+M½é/Zù†‚qA/$lض1Å -Hx³éŠÖ–ð©¤S$•2úÌwyasš/Í,À€,M™ï«à£$”ÁïÆ7tœ\ Uלü|u²y&á0Ûºz¬³ ¼ñdÛ5Ͳ’FïÊÓ°D‘`2}-.Î}àØˆLQ”°8b÷ÊqÂùi³²‹ SÆØØèsÂÉ7Èêo•#Yý¢,ÿ½/½mÿò£ü¾$ÈÏ § J-WÏ[H‚~»]gm?ñ6Š9‹„?áÄ\ɸòŸ§JYÑ™ã+ÊÊßÐ .á,I¦+ñ«µ}¶ý£²Æô9U3‘ ]–û½¡¥œ³°OûöÄ•nøò…FKƒßŒNŸÇF8ŠŠœ£•kJFðƦ:½_K&{7@HOÕF0Iüvž…×Lù¥¿¥OÖàbG‹÷H,AŽØ˜¼dî¡£˜ˆboÍ{Ÿ3Ö™º­O2´v>‘§oÁA§c8 :—×aÄtüìÒ1f¨G„Ìç`®XxTBo5 s¼|Gâg¹>öíú”o]¡#)WDQ =ÑÔ+“·ÅΫÎs³m³‡¢×ùе´³£ÂBjŸlQÐ~×t³Š"µ¦!%í¬XÓJvêNùW¿Uûü›ÕÝÆ HÀÆÈsg=>hÿÔ5°„à#ÑuÖÐ$£aiÁiPào8%€†¿U*Ô°T@û&C–¨Q0¡–nª-N(’ØŒPewÕÉ\äÑ?Ï%(¥Ùë &=Ôûþ µÚ2/º¥!ÅäXÝ»lq×CßQ]Ž4ƒ†->ß¡ÀõÜõ²jÐrØÌybµïf§ ²Ô@´”»áÊëC—ð“¨÷w}Ké06yîÞý™}Ú£ŸCÔ·ÀMFϹ=ý·õo £Î : dãÂx_Û=š`ëÉ·‘8/¬‹hÀ¼á;ƒ(<Ä…hq¨V ®ùéëÜèSítzР0ªyŠÚ¿£¼búò ž¬»¼­ê‹ÑR4„ä ‰·eK5âGû³ïÝ}؆)[3ˆš “ÒLÄí <áQÌÂøH„¾ðz$ø}‰ß~ÃTkˆÔ?œFo€;/v[¶/- ~¡IJbㆲ”p&fGš³TɌ͆ߤ4þZ«/]+÷Q4@”öMnL=rrŒL¬(CÝ*Jù¤mHDsÛØÊëîßyÇ}WwWÙ¦·TG׸ÿ3Ò¸D„3è.lÛЬßËèSp·EÖ"°ÞcŠ,—$¦Åyi¯@˽À™.Ýk…žqŒçϯtø½ñ55+šên”Äjp䯴ÀÙA¬c` ü]ª0¢X Eð8>ó`ÌÖ\|ƒÑ°VÙ+ŒVߕѫ/#N?¿Èic¡ )Å{Ð|Hj3%ŽDÎ ÊŽŠ¿3©o ï¯3´–±£¬Ò vÛ{Z«£P ×'dΡŒ3É¿š×}ÃF¡tqÒu ‡=àæÌ7vß¡@€º#]Ýy¦6õ=`_Œn¯¯¯i¦å ä.BÂdíÿN˜4eZ½N˜ƒH_ùøš»ô endstream endobj 1466 0 obj [1459 0 R 1460 0 R 1461 0 R 1462 0 R 1463 0 R 1464 0 R] endobj 1467 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F10 1169 0 R /F6 539 0 R >> endobj 1456 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1467 0 R >> endobj 1470 0 obj [1468 0 R/XYZ 160.67 686.13] endobj 1471 0 obj << /Rect[394.67 635.06 417.15 643.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.1) >> >> endobj 1472 0 obj << /Rect[272.77 619.04 300.23 627.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.7) >> >> endobj 1473 0 obj << /Rect[267.07 519.12 289.55 527.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.5) >> >> endobj 1474 0 obj << /Rect[328.34 519.12 350.82 527.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.8) >> >> endobj 1475 0 obj << /Rect[389.61 519.12 412.09 527.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.3.4) >> >> endobj 1476 0 obj << /Rect[278 474.9 305.46 483.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.8) >> >> endobj 1477 0 obj << /Rect[315.72 179.41 330.45 187.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.2) >> >> endobj 1478 0 obj << /Rect[347.6 135.2 375.06 143.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.1) >> >> endobj 1479 0 obj << /Rect[267.54 119.18 299.98 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.13) >> >> endobj 1480 0 obj << /Filter[/FlateDecode] /Length 1300 >> stream xÚ½WQoÛ6~߯Œ¦ˆ)’’‚-€›&]64éfëÐôAu˜Xƒ#§’#ØŸï)É”ä4Öí‰ùÝñîx÷ñä4¼[Ï o½×óWgÂKh¢¼ùÇT ÏCÃ÷›D“Oó_^E-„’Jéfûäçéûùé?Šbrùnúë©]:¹¼89}?ŸÙ¯éÅœ2ûób>‰aáƒÕ΂V½ŸT1Ïç‘Y€3®¸â¶µÓŒÖ„´(Ò È“Å¨­¡ŒrTÄ)3À¿ûJX@£Æu^VÅâZG·0™Ð׸ƒ+sÞÓÄ—\’Ùñ¡RJ›Åüøj‚J¼Óy/¼!©Œ=?iÂBÐMÙì…BÐ@¹Ú÷Ëç ¤À3¦hð²k—ŸÁ.IþÒ‹jàZ¨h\æƭVó€ÑˆÃÍÀBhÀ bJ#Çl×Å"24›œ ¾¯ÙÓ|â 9×k>³²^¶Ã—QžUÚ~­²²²³õ Ž1yœ€ëéêA—›*‘ÆM£®ÑSÔ²éª\ÛÙµ6ZõµýÜdÕÒ*Ksãq.0šÈ^öAbóF6«²uÞ6ðJ}Ó@Ù?aÊò“ÑÛì·º1½Üm9@¦ ÍÀ¤\r*…{à·â=ÓÚ)b(‚QÙ\ñØ™',›E â°Moéæ \¾H:ÃþY $ÙåW«g²RF”GƒÓb÷´(¢‘Øû´•ÎoŸó-„(Ê¡oÂ-Ýp§cŒ»g5åv4:PvˆÈÑ9†Üa¯XØ+Ëoÿ îɳö ]D¡h"Ðv 1‡):w t »˜"¢Jî˯±öÖÞMú°ªñKA¯ìò©JŠ´ÂF®È2-ÒE¥ »Tê/:_èÒÊú¾Ð¥v…l€ËZ;r«¥c™Ýݯ°šT@6¨"6 !R­íÆ¢yqìgj‡ú ©×‰Maˆ§Y-u½Fõ›œ"„äܬ‹¼ÂÍUò3Û³8¹kIL2‰ÚîܧE‰Tˆó´´€R?bu‘bŒe@î3½0+ƒ€L-x«žWL³Ü m­obEBÇÎaKè–­J ¦•±>?;"›%Ä«¼Oš¾HÅëryÙ2L¨°Eí™ €v ëè°ëa:¸ý»Lï•þŸ~ün2,s9yz§Ëgÿòx¤L–Hø‰SÖU¤€îüS%q³£‚þ•‡ßùGï,³ÛÝ¿cs.¡‡UrÛ¾±°ó§§ÌÛé€h½ýÃWË-þ endstream endobj 1481 0 obj [1471 0 R 1472 0 R 1473 0 R 1474 0 R 1475 0 R 1476 0 R 1477 0 R 1478 0 R 1479 0 R] endobj 1482 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F6 539 0 R /F8 643 0 R /F12 1382 0 R /F11 1186 0 R >> endobj 1469 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1482 0 R >> endobj 1485 0 obj [1483 0 R/XYZ 106.87 686.13] endobj 1486 0 obj << /Rect[228.96 508.69 256.42 517.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.6.1) >> >> endobj 1487 0 obj << /Rect[288.57 463.57 316.03 471.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.1.1) >> >> endobj 1488 0 obj << /Rect[208.51 447.37 240.95 455.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.14) >> >> endobj 1489 0 obj << /Rect[208.51 388.17 235.97 396.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.2) >> >> endobj 1490 0 obj << /Rect[356.57 212.89 384.03 221.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.8.4) >> >> endobj 1491 0 obj << /Rect[243.82 196.7 276.27 205.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.16) >> >> endobj 1492 0 obj << /Rect[335.98 196.7 368.42 205.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.17) >> >> endobj 1493 0 obj << /Rect[335.65 135.38 358.12 143.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.9.5.1) >> >> endobj 1494 0 obj << /Rect[208.51 119.18 235.97 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.12.1.9) >> >> endobj 1495 0 obj << /Filter[/FlateDecode] /Length 1306 >> stream xÚ½VKsÛF ¾÷Wh2>PSkÅ}’LϤNÝigš¬žê(i1–H•ÇšúÇ –)ÒN==íüøÀùÌ÷G_FõòóèÇÙô*E,2£Ùj$ Íh"%.³xŠqÍÆ“ ¼ËÏŸ®gãPx>Í®ÇÎ~^©ãA8bÌȯN¿Íá÷DDÓ Yµ@Ÿªà> ¸Óða<‘:ôn„6÷‘—ÍÇm¼¯vQÒÏÜîr[Øt,ŒW( ¼ríÐñ¼(ó˜ ‘—Æ[K‡VYî´¸¡Ü›­íÓv1œpÎ"]ó\Äéx"TèH„ž¥»Ä~CVv‰ß¸‚MrÙ¦*-I‘ܰ }Dù$ýBÿ÷@\&™Ó²´;<åÙtYô™! ‚â<›E•çN –IwÊòý8”£h„‡hŸEâå3¥Ha±¾ ?j¡¼÷¸hïìÆ[%K«,»÷™LèÄ[M/l^L¿î×Ó]ž¡W‹i¶oí ²ÝOA A݉+4пб‹uFÊr2êO/–t–±öóo8wx~Lòÿ@³}ûÓÇ#93’b!Ÿ;×ÖE<ÞÙÛÓ¸*ŽïwÛ¬J)«šÕ• ¥Q” ZEØÆð%“AãòˆûGöJƒF”@˺FœÞ ^‰Ö11OÞ¤G?ï†Ë,…WT¡¢žtĤp8ˆ ¤ø¼Ãè.>=ŸEŒ­™4OxÇ'B  딂ù ˆƒ?£ç¯òK®KPï*Ò°ÐÁšìÇRL!§€7®ãy«v0 œw@}â‘Á|EÞâeE¼SgêÏnARкIn뢉_¢®Ï mX!$´èz¨Mxâíâ|t7Øñ±õ95MØí®Ä\ÂÛø5S ` )ÏÄ2.c:DÕ¦Ê-}’.áíh2È‹¤(]bBö*cAº$H¼Ù t×Ýóºåc.àÔŽ›]Õìj-¸YU)ù~ƒãLà»qþŽÃ"‰7N²wãÄ}Ïʰ Éñ³‡[»èÍzšñ&ô8!õÚ»ø~Ž˜z©UÃ>šÀ`C¯}_Ð{§t¨ßkîÎÐT¼l4q™ÕM †zí£øZÈâå’$÷ç´&iù¤Fz¾_c Ã†²;{¶-%®éNzУÊU’.o¼}×îÐpò´½é "×ö¯Ê¦ Û¯qZ° jÏÔ¸&É:NS»ù¿zñ*ÛÁ+¡nŒ£%vä ‡wÛliïΡf n§}Ýx 8„¬Ýä$H"ÕÁô‹Ÿ° _ÚåZ5»èO[”øKzytå@톙 1FP±M«I›ötáK&xt~jÓ0?j¸Uå“6…Q,0´MF0ȨhÀeB1¾¸a8REçÁËC‘PÇ"1¯`06oªG’îªršU%,¯ÐÄ›šùxv›×ÍîªÉí]œÇÛâÙól¹<³!L8Ak˜·Š˜îŽü¾î@¢ÄæÆ+WUúô4¢£ˆ™ÖØ L#- s¿¿û($ endstream endobj 1496 0 obj [1486 0 R 1487 0 R 1488 0 R 1489 0 R 1490 0 R 1491 0 R 1492 0 R 1493 0 R 1494 0 R] endobj 1497 0 obj << /F7 577 0 R /F4 527 0 R /F6 539 0 R /F8 643 0 R /F10 1169 0 R >> endobj 1484 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1497 0 R >> endobj 1500 0 obj [1498 0 R/XYZ 160.67 686.13] endobj 1501 0 obj << /Rect[272.77 491.78 305.21 500.2] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.9) >> >> endobj 1502 0 obj << /Rect[278 432.01 315.42 440.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.11.13) >> >> endobj 1503 0 obj << /Filter[/FlateDecode] /Length 675 >> stream xÚ½TKOÜ0¾÷WäЃ-c;vœ i K«>•Z5=„]/,‚%»PÔ?ß±ÇYö%(‡V9ŒÇóyßL&âŒóè"òâ}ô®Ø=RQÎò4*&Q–±TEq’° ôÃ$•ôgñq÷È, ‚k¦uĽùàÃà´~¥ð"!ŠÑؘŒœ||âÕÁÉñÁð´8Cmp|芜}?.hßÐ{ºð§9S4þBüFˆZJ€™þˆf’ÌëÑlÚÔs-ɨª1Ø9eF,*c[Jmj;ÆøÓ€é앆ضºÆ‹{§V>t  þÈKM Íòć/¥RëÙy‰Ù :tÚgTÕMíü?Ü4ó`š„äwÐM¶p#9ËÄJX®½³×¥ÓXKM¦;(¯‚[5‡so|}UÒ’nÔ'œe=«U¢®nÅ—$?)s†œüá­{å¡ ¢‡B!åj›%hÁL¾½!¶ÕP\N¡ •p2±TsRÍæ-ÕÒM‡»¼ŸBûµ רž;ˆ3É&eÖ:µ¡`ÏGNXîíøæÎ¶PáA &ø8[gUŠŒ™d‰W%¤Ÿ”a:bOLÀKÔlŽMèL{1¿±þñŒ=Û‹¦»ÜŸ4­­F—ЕЋý'I”´?¡(l ”³”cŒ¶=oª¶­V_¡Pû+ÀÇm4Ú¦„£ÂÕ€îÒÖY½¶¿l»¾R 9¹âä©rkCÔÚÑloÊ$eY€}îEÃbm…JÓ #-a… $ü;†ñ‘L¤3.ƒØÆ*Ü0…ûF=›8ޏ‡Æ•ú𢵷­í€¬þÍž0¶eI¿$þšøÛªíþó§‹HÛ¨OU°÷Ó>"R/’eî•dIº‚Ú½0,ÿ–|$…Ô^ýÑò endstream endobj 1504 0 obj [1501 0 R 1502 0 R] endobj 1505 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F10 1169 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1499 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1505 0 R >> endobj 1508 0 obj [1506 0 R/XYZ 106.87 686.13] endobj 1509 0 obj [1506 0 R/XYZ 106.87 668.13] endobj 1510 0 obj [1506 0 R/XYZ 106.87 335.07] endobj 1511 0 obj << /Filter[/FlateDecode] /Length 979 >> stream xÚU]¯œ6}ï¯@jŒ 6‰ò’¦­Ô‡6«êJÝ<°à½ë”…-˜«ÜŸ!°¤iŸüÁ™™3ã3Có8·ü¼;¼úEI̳,8œƒTò" "‘f\%Ááý_ì§Ku³z£4—L…¿9Éó â ’%/ôϰLY5˜êÔê‘ ª®Áb¿WWÓ=’¹ J^fÞZ ž—Îüý4 $JÁôS¨«Ú©²¦ï^âeÊìE· DÑ´—Aû»Æ•¤ “œY¼ŒÙߦkFúޟɤ«®z¼UµyI)€w±á ˜ºê+‚—Ê<…8Ö”„KBòT1·Á5'¥ËU–ã^¤ÔiÊF Õ)¾¡cEË]¬4ñ5‚"~­Ñrè'׿p6Ù÷wšÀ×~ h®X´©µU§ûi„RB_qzÇb-µ2á\ñ ·D.µzÇ]‚ÇÈì-ˆ=Ðû¥¾°ëO(ë={âÎc²Fe¦Ó ú%ÁP°U‹²ÁS£Ï¦Eíì.Dêp?üÆ9"WSXÆ1WÒ™ƒCðæËfÐ P‚oŒS(kAe=ÌV¬Æ/òí Úùcf£á$O X6Ø5xƒÃ ×F#Åß×*s&8¨+KP§PܸTpÌ[oFÎê DÜÍ´ Ê$ΩU]1j«_u#ùâDÈ3j)b6ÿHž]tÜt½õ754Òh\CH!@ôv4GÙÙPøŠ}pì%±Çé¸Mú;iá§V“fð|d­þLÇÐC–`Í÷ϧO|–FŠgÅ¿vŒÚuL’â`õÀβ à쮼s×Ù¶;R1îÖ×7Ø™VËŒ¯ió⼺'LOsŠºnªèÐßjã$.Ë9šÚŠÿZìKö5ÙUÖŒøŸô®hÅI‰«†~ˆ¢‡í× /ã¡iŸÒóf ¼8:>¾@ë^RáÓÀO–ÓSgóÄøá ­©ˆ„ endstream endobj 1512 0 obj << /F5 535 0 R /F4 527 0 R /F11 1186 0 R /F8 643 0 R >> endobj 1507 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1512 0 R >> endobj 1515 0 obj [1513 0 R/XYZ 160.67 686.13] endobj 1516 0 obj [1513 0 R/XYZ 160.67 414.75] endobj 1517 0 obj [1513 0 R/XYZ 160.67 394.68] endobj 1518 0 obj [1513 0 R/XYZ 160.67 171.99] endobj 1519 0 obj << /Filter[/FlateDecode] /Length 884 >> stream xÚ­VMs›0½÷W0“ÄL­€øèLN§é¤‰'õôR÷€“!Nìß•VØÜÖéôbdi÷íÛÕîË¡ŽcÝ[úqiMNGÜŠhä[“…†ÔçÖÀóhÿÏ¿ŸÛ?&ŸOGÁÖÄåœúžåè㟆ãÉÅ ÔA@¾Ù®ëáÝÕðìúâ+ž oÎqq3ürus‰ »¸—EÔ¬ ô@_åè'IZ§Eþÿ>•é³-8‰k©6I䔉 ×6•Úâ$)Ð6/jƒ&¾œ×x\/%nßgÅ,Îp ÙÊ  ã‰.p*H\¦ñ,“ɇ[ò 0gÔ‰4ó{ 'F0AžV³,ãúC¨¥ ¡žk|¤>]å¸.„\#à‡Žóh'`ƒQÌt¶j½ª¤Ù ¨ ®ÞoùôÜÎhÃA2‡FlßÀ`Ò6S¶ÏÔm ózJ¦ö>œ+¨ö Œ×'¤a²|ºWä¿feªüo×ÀáÜ#/¯ øíØÖ ¼Úx>õû·8V®Ç ΙEÿž²w æëÒuû ª^ÙÝrwÎw³‚ÆzœE3Î^kÒ*œÅel3XHÌtÖ6 È‹ú)p£‰fšŸÊâ R‡²Ne¥GÖº˜€ÚY®ãК×s#ʸ&áBss¨Â¸«-=2 ¥!š:À¼ YÑ1ꉒ¥Ì§FÌ^–P\HfiòXÊM –7r&“ƒœ½ˆzš2;D™3Þ¥ÌÕÜ—Z9„—k¬NQÖ2Á³™ªæ×*…ŽÆ1G_ª>¸ƒg÷n=˜b×X$i ÔT‚rsUŒ*$ ×CÀ§ßïÉm…e®üÕ½*–j "C{¦u¶±Cô”ØL”O %Kœ4bíÇ]/[zS—+‰äŒíN¾*•U‘ ´ˆ³Jö‡nW¾NÐu‡ÕhzU§YÖ!Ø‚ýŸÜv^É2/^ºøº…OG¾¨Ç÷¾2„/TW+Yb¬ëe\£6,lµ$a ꔣa1ƒÚ¢Þͪ%Anw;XiáPÑz³þI‚’M?¦.3*RÍÙÛÊÇ›_&„‚ endstream endobj 1520 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1514 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1520 0 R >> endobj 1523 0 obj [1521 0 R/XYZ 106.87 686.13] endobj 1524 0 obj [1521 0 R/XYZ 106.87 310.06] endobj 1525 0 obj << /Filter[/FlateDecode] /Length 935 >> stream xÚµVKÛ6¾÷Wh1âK94h²h =ø°AÝmѶ®äJr’ý÷™áP¶üؤi›‹‡šÎ|󤣌eY´<¹‹^.ž¿.¢ŠUy´ØDR±2R)‘,~ý3ÖL²$-Š"¾{óöå/oXò×â÷ç¯Õéèæy”yí\“¸<ŠSÉ+T”ŠÂs@é>IµPñ $:æx®§œ³J{…Í2^&“J¹fy9ר÷M;ºv/v–Ìì+׬éüÁ¸C`w¢÷Dšág:ü´Œï— xAói°/$«¸·ÿ#yÿÝÀ•+„ YUýk÷âÚä`×cÓµ·ã ÷_&"»^ÕÕyH(þØ8G6Ún¤„<®íuïZûiïsv„,¬vèV<˜wtºÈ—”â˜áš4%è`uôÄÚ›~ –°Qê÷Š—!´€ß?/Ñ«…–ty–jö.)¡Y)¦‡) É¶®[wõ0a«sVÒ •›¿L"¼[O˜“ePùû`\ƒabH¢(©¨@¡^5ÆŽè°µl6Ä!ûx®âú±5ÍÚ8÷˜ë.¤½&áYÍ¡ë ` ßtМ¯UL ´å¦s®KÀÊG߀ȲŸÌÃÞÙgøUxÍËèyùÕðUÆxÐnüå=œ‚ôIÁâjžÌ8ºUÓÖˆë€.™ÒÁüùã ®¶„äSżcý&œ†\ˆi|ˆ9K1ICžAÁrVÅw¡"(=4ï›ó£sXÊLN™‚iÅìâz(ýp]vLÎÊò> endobj 1522 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1526 0 R >> endobj 1529 0 obj [1527 0 R/XYZ 160.67 686.13] endobj 1530 0 obj [1527 0 R/XYZ 160.67 497.51] endobj 1531 0 obj [1527 0 R/XYZ 160.67 341.78] endobj 1532 0 obj [1527 0 R/XYZ 160.67 193.86] endobj 1533 0 obj << /Filter[/FlateDecode] /Length 1132 >> stream xÚµW[oÛ6~߯º=P@ÌŠ¢¨Ë€ pפ˰¦]k æ=Ð6«‘¥T’ÓäßïÊ’å$ Pô‰¤Î…çò}‡¶ð ð®<»¼ñ^Í^žE^Ƴ؛­½4åqäM¤ä)œ_ÿËâØÿoöÇ˳d¯"¢ˆÇÒ ¬ø·ß§ïg§|°Lq’$ ûÛ"`ÓçÓWž~$Ùôâ5m.¦oÏ/ÞÓtït"BÉ7Ãa]¿[|*ŒØ/¨í Åã Ï”U¸©«Ö,[³â—,ŠI«xpé|ÝÔyÙÎÙÜ;L‚VQÎÙlcÈÕþ :Þêbç$ÕšÖKZòægÚü4g—s.r1ôÞ¯Šj¡ î \¬Ñ±ÞÚÆ‰Ÿ'Rp™ óø‘âÂG¶ ƒ,û–ä3¼R*Ïvù@’ØÜ¾)(>Y(*À—Ñ‹¡L¹ˆ¬•â‘N†yqBR`ì»àih ÎKÝ»·úÚfèðŒ§'c &’ÇÖ}ÙFÞUÀeê”ò½…Lã±æ¾¬J¼ä~Kß×U}t…â2sæíŒÜ‡všäü˜#YÆelóKU³ùµ/ÅÝ ÄqÕ'¤àÚòB¼ ;4Ÿw¦\šc;¼fßç1ŽÁó»‡`þü;†‰O0óp˜šmX`¯²ÜÇT2ûõK^´[ú ØèòʜЇ¦¢µÝè¶ÛÚ|Þé"Ÿ‡*1G Áãgµßél.]0s–ƒÅ)³Àò8T ª„˜y뫈é:׋C 2•¬€,KK¤žÛŠ,(ø°ÜÕµ±xkɲZ@‰cö 'U€ŸÕÄ„ [¡˜.W$Ýj‹U:”•³aji½\š¦1+rSíÚ&_ ƒžˆ¼åO3Xf1:«ŽÁ»E‘/£¯ø6úZßc×2ÂdÈ]IÜ•cîʯq× Àñv\?ÎÞˆ yÄ^*Ãw nüuÝ;ôýÉ ¿öäMÓŽ¼ðÕ‘7I‘¼IOÞ4!ò‚Š#¯ÝÒ}’¼1Wòéæ+,þ!uÁ»£nª¥îàúB Žìx” ¨«ÔÌt˜²T…µçÍr)wÊ[וƒZÇ+²Ý8ù!½á5!“Ð2M‘òÊRþ+T–: ÆŽ‚í+ŠO[vÊ@[dÀ®›§ŸÖ5¦'Xcn-5kœTa ú´"ákHG׆d+ƒše§Úä[t¶+Z]šj×÷~*`#ÌruÝhÄÁMþ€®[’V.¬Za¾Ô¶é‘m8ìcÁŸqL?wPÓÁ6BßáÙ5Vˆ6/tMJ¶ë°v®½9pŸ·yUZ´GìËÆÔîsÉJ½}膴¤Šø=œö°³A©î±ƒà FÛ˜bɉaa-ŽÀÆÜéí =±è=¬«j"aË+Ò„—ñªÖ[’wkŽãm­™øwd€{ĘÖžQ1"t&û¿—c¦\EN†¯ÙÈTdýþçèýæ¡h Ìÿ|¤FØ endstream endobj 1534 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1528 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1534 0 R >> endobj 1537 0 obj [1535 0 R/XYZ 106.87 686.13] endobj 1538 0 obj [1535 0 R/XYZ 106.87 500.89] endobj 1539 0 obj << /Filter[/FlateDecode] /Length 1328 >> stream xÚµWKÛ6¾÷WÛ=Ð@Ì•¨¥EÑ6»EŠŠÖ@6©{ mzMD–=v“ßÎÈ–ìÍ"=äDŠ3‡ß73 B†ÁCà‡ß‚_7w:(d‘‹m'2Ï‚yã°xýH¥–³¹ÖZ¼¾ýõŸÿºý»øýæ.9íÝ, B¯içGñ<Ž”ÔI0WÚ¯€Ò¡q¦³`6U‰øw*”EÌ£H©WºGi R?D^)+¼›(¨s·æI$óŽU’ô;;›«<{Sº¥Jµmh¡=à(ìšV[Z54lìÖôe‡©¨ÌÞ¶³fKÛš-Tö‰6MT®suÅv\EcGç§bUÖ0Ñb=S™øQHཻ¸âº®f ë, ¹èÀ`+Qoqdƒ}6˜£A->’kI©­æÉµ¬º®÷‡Òv¶üLß¶²)åù«ás(¼,ý¶o6U8ô«Ò­åû‰ÞõR˜Í†ç÷¯xòn9»Üÿ= ÿl\…áÂù•xœ=š²ç)ÆG>ȱn|56Ihµë]MÒÿaèú½7t»ðôJƒ(‘q2â—Š3©Š`38N!ÔÖ¥iì9’Cÿ!i¿Ýàé4â‡ÇY XmœY•þ3Rœå -úê„ùÍ+–œò1¦Q×ñòPÒì]e7´¾Bp}¦9#O‹}Ýv—ÐØµ%à¶óxB \T68¦|cst;ÓÑ ý@Ç’v]3Mé{K6N[R E:„€šZ¼Áù¼cgЧǙ·qá´)k6xA<Ìú({ë> Ìãxàq ÇÙOÉÔb@‹L<ÑXbHsì­L#ó5ãIRò®¯úgBˇG¢íW­ýØãŒk}k½5% y¢DU³ldŸ$öÓ˜æ:Èð…¼Î ñ¦"m>FA”KH.pÄ“«HÆ×ö^R4.(ƒç4-žœe‚sÓºo[y”eis–qr%ÍUäúþœÀŸ(bic·¶iÉxW“=vãæ´†=©–j°Èéë¢v-³ã·ÁËé0OuÁô­Î1|-ÿpÙÀ…lÄ…y”ç2ÊžgZÇ”Jb(ª”ðh~†ý\˜¢âT°ËaÊe‘³Ìû&ÚΕ幕8<Ý;<7’J¥X†qÈsE0–ñeõEÖÑ©Øãõú–WUQyŒ=Gg ÅX¼T‹’q‘¸j‘ϸá% ‡š5U<–%Ëblï€Ec) ¬¼Tã¼VY-_¬““±*ü0T¯çŠÖ×™]zlqy”,gdüÅ.èïzo;·÷M´ìE v)ðd+ßšXZØoû’æÈ4‡"å? S4 Ý'×íê¾¶®1ƒà·C$a!î0õø ¶óÊE|žfìRн{ØqÊSE4Íé^]* qõÕšx„jD[œQŽD C ßÏÉVä2̾L¶(fÙɾkùÄšN9Å>8˜‚Q§ˆ4¼­"!ÎU˜É¨˜¢¤~hÌC—$C¿8ö6K¤JŽÉìÙV".J¬â +u‹M£GvG¯ñB¶¡nÑ×\œ`U¼àé<ÑQÓxÄ òéàoO¿û³fl`ÝœÍáÑÑ©_L¾¾_<³¬®.Ñ:Í6ê t÷='kŠéûÄÕ;W™’’"&â,‚ן4†2¬ç~aŒ™:î¤ìÛ˜ðSÂl5l¤!Õã,죬ýÜ%б; ôÈ"™v%Ô5Âÿ…i}gà1bÔø"zZÓ“— %ßf’»æïþ“É endstream endobj 1540 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R >> endobj 1536 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1540 0 R >> endobj 1543 0 obj [1541 0 R/XYZ 160.67 686.13] endobj 1544 0 obj << /Filter[/FlateDecode] /Length 314 >> stream xÚ­ËRÂ0†÷>E–é Iš&í²ÈEE;nÄE q°` òú†œXgԅθ:·ÿüùr%”¢'äÃõÊîP œä•+”eD ' É\ÝÀ2‹ËËîPµ&‘ ¢~|~QÜ–ƒiä6œ’(VJáûˆ1Š‹é¸è] î`VLúLŠëñd¦Œ¶®1ã9‘9йòç=ã’ƒî“ÏGxz¼C»Ö¼E©ÀUcªùÆw86ûStM¬õšm Õ®jªmuÓ‘±Ð‡%7o 8ZM¾ãú$f.ð†]êOU­—'àV5Œ·ó(NSü¬¶6| €¿ª9y|X][Ö²qá2èìÚìÉWz. AðÃx& U8Áû{s4{Ýùõ)v‡ùÆ,üãhPž½HO«Â endstream endobj 1545 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F8 643 0 R >> endobj 1542 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1545 0 R >> endobj 1548 0 obj [1546 0 R/XYZ 106.87 686.13] endobj 1549 0 obj [1546 0 R/XYZ 106.87 668.13] endobj 1550 0 obj [1546 0 R/XYZ 106.87 182.55] endobj 1551 0 obj << /Filter[/FlateDecode] /Length 1321 >> stream xÚ¥VKÛ6¾÷W9É‹+R-åP Í£M/9Ä·n\™¶•èáRÒîûç;Ãù>PÀ°†äpæ›7g‰H’Ùf>¿Ì~^þø)›©D3[®g©¹™Å25"׳å‡ß£÷[»œŸÇéBGfþÇò·pA‹EŽ’Yœ%BªÀûñeç]ßW]Û¿mWHdÑÓÜÈÈÖ£ëIB>+Da&JHtýîˆC8ÒDäÀ†ç;ßÍÕ"zªV (ÖfYüäÑz¬k¢€eãmÓTí&®m»íÆÑIÕ–õ¸‚}Z6¶EY{’ÓïûÁ5tP#ñù b™ÅA,¥(²c=¶å€VŠ9XŸDË-¨H3âªB/d2êÍDß\9į\Ð;¸¾³{Â]ç÷Ã6@Ä# }OÝãŽ9± &§ •G¶gêiže…°®«ïA)®Q€56øz”0¯à0Â…~ð +˜-‹èW†‰žç*èáß#,“ÝqV:‹‚ãx3Ϊ É §ŽÌ£Uõ 2ƒpB8Ô"™j(¾ƒÐ¥iu ÙÙ—¾Ú äKXNѤTƒãh{Øzçˆl,mê’xƒÊŒ 8er*µ(4ÀH…,‚þeÔ¥5áKÆ|-»ÝGˆ)|WûÖ6Uy-=D¬¤PÿFø»õ†+e7 õùË=š’wŽÅm»œŠ•wõžepjÛšÖ¯ôA·^Üm;Z[(øMÛ°¨ë<ìЕ˜Ùvèü¥óÝypþ·7>N)nÑÊÞŠ³¸í|ck445Iä@'ò•>ÃÖÓÇú¬¡a% ÂuP¤I‘ãâ°=õ]ÈPâ JTÛ ßES EÙ-t[·”êlý!Ó–ó’ºS™T×#$ÀuˆuÏäÚÙaä`†Î3,ÑPåxë¹ ˜ÆþxñªZ“D¨ÅT­ýöÒå2fjÊ‘|˜“$¬ë]Ü‹é¬ßººf³vÔâ4K–·0ˆì çR­Ž:S^Ì <¶t0t»šÃ´ÃXkp¥8žž‡6ÊÐx¤¶ÀlÜÈ}È}’†Ê\5c , w¬¤]5qi|ž‹<ýOÆ£ôcŠ£üIºk†ž8ªv7²zË[e×44òÐ1î…‡Ž¾T¾d˜L´ÈÔ©eîÅ•#Õ€–ÀL#5Õ W7(‘¿'Ÿaq chpvœÂx¥„QÅšr·)gq7ä,Þ¿9aŒòÉN¹&›Öà)–ĈN+zš3J$gƒÆrã:&7sè å~ÏU$näq¡BgrŠçO0A•Žäu»¼»»£3š‘@fÐ;}çßý©ªy7æºjyGÞÓ·ÜZoË!Ìo\'±äƒ)Ô¸h»ˆ54ž »è—¼zÍGΉ‰‰½‘oˆàõW÷ç=ÎýüšñÆ5}Ï„ó ±~Á_ü2Ç„,"¶îÛ~{AHc”Ì Z¼7D¨ŒO“·JŸhº ª>.ùQ c>Õ'â,Kà 0TJ ?ЧWnσþ"ï¼RBSðRu¸³¡ßÉ£(P<o7\›rÍóƒØèÔWö±v´S±¨•ƒ<€×p¨PX*ô(TwýÉ 9=Mu¨=V-=ŸSm´M®r|âcù hóÀŠVr ë`Üð<窱Eô:.ôjO|Ñë®®C#fõvöø1v~1yl ±Êøá` Žîkj) endstream endobj 1552 0 obj << /F5 535 0 R /F8 643 0 R /F4 527 0 R /F10 1169 0 R >> endobj 1547 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1552 0 R >> endobj 1555 0 obj [1553 0 R/XYZ 160.67 686.13] endobj 1556 0 obj << /Filter[/FlateDecode] /Length 1683 >> stream xÚ¥XÛŽÛ6}ïWEd`ÅI]hÍ^²)Òd±vŠud[¶ÕÈ’¡KÜE¾3R’%om_Ì«†Ã33g†ž8Ìq&Û‰jÞMÞÎ/ïÝIÄ"2ßLÂùîÄ–’…0¾ýÝ œéó_.ïƒv —søÄQË7×ó»§)|!-ŸMí ­»/Ow³ÙûOg´pýñ;®õÛ”sǺþðùnFbÃV¬Í¹Ëœhb‹@Í€ðOs’á ×ú ÏŠ©YR³B)  |Ì"O}´YX‹©ùW¹Çü¨¿ãP¦y勳òß´Ó‹)ÈAöHÂö;g¼¬úšš„šÍKª+\:‹Ø‚3?€F2d¿ß ±‹p‡ó² ²ÀX,­ÀްVq–%kì»Ö1­wESã@Ze²N ò4ßÒr½K†'ré³Hh‘沃S%¨%õ–oSlW¦ñ2K.Pj¨¤*ñ›&_Õi‘Óñh’­ xÁ#CÛME`¡®RhàXU]¢º-‡q>Pògê_ ™k.À´+@døÐ&µ1Pí>.H¯2®j¼`hå`­½àDÓê·=k¸ˆyåÖ.IEbϘŋ˜xÅ*®Ã\÷ŒUP¦kÅùš„'´–5q ç cU¸>²ïð›Ôo™"͉ ê]\S¯Z‡©-BKyLwé AÜÑ0/pp$K“á}«®N,/_°<}ÆÝï˜þL0¾bzá7v¶Ÿ£"pÐà…ú]?Ó\1ŠRÏëY{t`N=3£ ˜šŒÄCØÒ¸CÆSS“N¼Æ[Z§vÓ°®õj<‹èœç(x¤!AõbU1 X¨¯¹ò€bx¸ëuü4B&dž§×È;Áúk©"¢?/´KiDÊ*­ôL¼©“Òxž&‹áàtRîÓÝœü¢]ºŠ{£@iPT»ŸÉÚx5þ?ˆ¿“ºJõþ+yÙ‹Â~Ú¸}Îã=˜-Ý@yñ»‹–É©³4…[ê2Ù'ùºhªì™–wIvØ4 6EI*ݲtó¬ÅÞC¹:"ôP1¬ÇšJ]¹§ÜûÁ­þLV5T~$¬ûi(,<Èå€ß_1œ„dáJÿ¬SºÐNükü5) ðŒ0g&Ò0>ùPz/ê\î#ºØTIM Üf|ÇlCÄNÙdÄ“p£€3ç$kV·–Mš­u^åú¾ºpESMÕ®VÍ ÉÐqNNï«qs˜½¹Ñ1P¿¯W/FìÄÝÍý‡ëwãðçLí×Jƒ¤^1´†´ Ôõ8E÷ù¦~Kµ'°Ö)àê'e¢ó6q)p‰<)˜q©0ˆ¤‚Û˜š>J4³Q:%¸Hž¨*¦‡'©eÀÍÅ4¦@ƒ1™"RlP%Ô=Á=OHô> endobj 1554 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1557 0 R >> endobj 1560 0 obj [1558 0 R/XYZ 106.87 686.13] endobj 1561 0 obj [1558 0 R/XYZ 106.87 470] endobj 1562 0 obj << /Filter[/FlateDecode] /Length 1652 >> stream xÚWÛŽÛ6}ïWA$ –%ê¾@QlÚl³E“¨û@[”­Ä’ JÚÍ¢?ßÎP–/ÛöE¼h8œž9CÎ|Ï÷gÛ™i~™½Z.îÒYîåÉlYÎÂÈË’Ù< ±Yþü§“xÂsçiš:wŸÞý´¼ÿîö­ ÿ#çõg7çöí§[7 üåþµüuqµž$™ùFSàoÐd^*fs‘)øó¦uEê<º"sÔƒùê—°‡Ÿ;jß©ÇÒ ‡¡S5ØFN¿SÔ9èÖDZóEmz\øæŸ1#Í’Ì c6ãÃíòÍÇ×.Lͽ$d‘TJ]ÉõÞnÜQ«U¡V"NU’HÕœœBx98^¥Llõ“‹¿œN¤–0>75½$g3ç6Æž°&‚³"‚훆ÎF°4ާšM_µ o6…jö¼µVý ›Ž–™@™^WÍöÜáûž°[¬«f±:}ìü¿%8<·4ˆ/ F[MH"8ð8›†¤]£ÕU;th] §i{ì„ÎãNö„3vþ?â@6øí=£7ˆ¼<­Â‹r£uy á{¡µæ «Ù«+çŸZ¤®÷€*€á·ùаJAê 9zèõ-µ]»Ð&Ž"Á~gEœ Ò' sç³› ªÎŠAT„Cç/3€ƒLC†%àíÜEð?ûw£ÀÏxˆ*Á3ì d_m¸¿i 3ø›2—Tà0ÊcÂÎ@ê*÷ÛÒ.aݧ©E:ÈÕ¨‚ÑA¬P¨^麢TD°0LˆuÛ1` ¿á‚ÆÉŠòg*nÑ'㽚Î[VAH¤ ÷{õ€vB(&K!½ä<àæß Ê-áÌc;?PsC>OdIQ-¿ªùAö»P‰îV.ŠG°êªfJeÒøýÊÙ´ÍO†‡¼ïÊ}9N‘NÐ:Ý]„^~nhd 5 ™ì:±Ñ¤¾·¼À«NÈ÷ó§ŽÎiÙ É¿@±«ãætù 2Ó|‰jöziŠWŒF“ê%’Ä 2[¾\ضºssá0/Ê=naµL\¥AÉY¾øHã^&Œ¢[ lFV©Ûšz÷‹÷/¯0¸oYºÅX«¹¥c¦¶[-ëŽPM,Hd WZY^,GË‘N¢XÎÐ ±“Üé‘…LmišÜÝÐþ?0Ïr/N |ýÔ˜±‰87Ó´¾eTms…÷jZje×UÛ¦FƒÊ<áØì2λÜÞt0´ÿo÷;¼]°ûX¶Òœ%²€éè‰Hä>DøSK¦ ”_Ût™Qé ‡£†ç¤Þ5GýB¥-ñéô/’¢<ˆaù2XZÚW_Q+‡*Ÿi „£éÀG?¨¦Ù´4üC±Qåõ«^ÕØËÌ©` U\VÛq£lµÁ‚Ô@&ƒrs‡® Õꛬ{…üåÌÏ ³l÷PGÄú ÉeÎàj;:n V7:ÈœºÑª>!äã¥ä”ÍC°ÙÐ踔?Ð3dpܬŸVNóì¹]9‰Ä‘ü:ÁFHŸ²(F*­¦¼Úœ’j>eº3’Þ>Ǿå ïâèâ#…ŽòTeÙ´’ÃS®¯pmvB§÷MžzsßKã ð (ÕxÒ ËèÃÞ1Õ@æ˜j0 ë%Š´vÀ·:sÖF h¹šƒ$Gj¾ó{ÕïÚå'HÂÔLcgdžë4xp!:jAÝçaªÄ4@IãnXÓS"1O š4<©é®TTåÿرší¾]›Z}v|'ùNËà ÛqÍtŸ¡ç'p—²”æEƒñ ä„×E[WàfDÄo’ˆE[3¸F$°ç«¡Ú$Ômtuè;Òcègk\2l&v4£dW!)aýÇöQÃYÓJx‹5—ë/ëçðv€gÕ¥ìÕM2!œW-%üø°þé’wW „¤ÚfdVC§Ï¼ žaZÛý˜Ë/>/«Úð̇é¥GÍ%R`²Qªà4ô2=È-^ ÍtÕäêñšqµki/ã"¢Ç…ˆrÀ0V¨(ÃZ>²)Žáí4yøÂÇ0;þ!“q±lh¦j¥iŠï¾¦ á˜-G)»åÄrZ|j¹Ýhs´|)oçÅTᦗn/oßýÍP§ endstream endobj 1563 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F10 1169 0 R >> endobj 1559 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1563 0 R >> endobj 1566 0 obj [1564 0 R/XYZ 160.67 686.13] endobj 1567 0 obj [1564 0 R/XYZ 160.67 668.13] endobj 1568 0 obj << /Rect[205.05 410.5 219.78 418.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.5.5) >> >> endobj 1569 0 obj << /Rect[479.88 345.82 507.34 354.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.11.1) >> >> endobj 1570 0 obj << /Rect[440.06 324.26 459.77 332.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.10) >> >> endobj 1571 0 obj << /Rect[478.25 324.26 505.71 332.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.11.3) >> >> endobj 1572 0 obj << /Rect[227.09 234.27 299.14 245.4] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:export) >> >> endobj 1573 0 obj << /Filter[/FlateDecode] /Length 1765 >> stream xÚ¥XÝoÛ6ß_a {˜¥(’’6ì!YÓµEÑM:l˜÷ Ût"Ԗlj~›†¡ Îß|¼¼B¶“ËkºßLB-"ÝÀ†"QtƒÑt†Ê—÷;àeÕäÅ Lc4·Ž'®˜F2øœWe±Å¹ ü ›œÌ”&&¶×pö“ƒb©ˆS¯—»ßÁ5c "o¯òÊ-›üóTÅ l,³'&XÀàWM°¯Ý g:hJwU¹Ën²Æñg¶Ù0eYùý î¥Y¹ö$žq^ÎÕËl¡’ÀsYdKåuf"TŒFbƒ¸twySã„.#Á‰\¦Áp¯Ö¼áåÚ»¼¹-÷ /gÕÍ~ëOÔg`q)Ùô¸é×Á$|Ò Ç6€ý¼æõNó¯wBÓ.ȈÂK–Û°Üìݾ¼?Áœ-a«ºËk¿ßÅ%Ç[j™¯˜èî6‡›mpËlqÜ@‹Ø1§.ª+Ÿ9%m§ØÔÈ”Bll˺áÙ²ÜnË‚çû:»ñh!ÑO8º{–¹¬ü¹ºÜzR )nhaí϶·­Ü\™¸È›¼,êc)s¼> ƒ  +"Í6¼¾Ø”t7ûUIlðÊâK`².7@wœŠÀÉÝgÛÝÆat ;[ÊÏS”¶Ê³Åæ(ãTlDäSêbœl©Êï‘}àŠ[e_¬¼8%Šã^%€"ª¯l¶n0eƒX ˜ô4Æà׿$„V˜äÎÇ¢%¿êÙN=âOÂÂX” O*ç]âVb|Ï,”Z„x*j“5‡¥ƒæAãêf>%åB#lÚW휩~ÆÁá±£/À-[­ºùù|zæOú g=üƒ 6nO–ÓmjwZ´áÍêQö#«ÎT(lL¦0L‡¨YK¾; '_ks ^GÖçœ=âá-âá‚.n÷åÌc ¥ÐPê ‡,Œ³–rNA¨‹"Ö#´9îV?²ð¡< ©&“@t ý\Yuœ"0Ê®žAâ%(âÞ¡~iÌB¦©—XZXY=Ù6_ÂÆïªÊªÏ‹ƒÛ³ƒ0ªýqW/«|18@àã•[ÎNÀ9$Ý¡ìC#¡ÑCPL¡C¢0Âô ´%£õæSqd*(`"´d+c¿ÝVûª:À:,ÜἬ>±û ‰àÀ)«‡i¢‚WÓ„n6O»ùc‘ßól\s,Ò_¸øÛUVJ /V* rí|™Ó`Õž<”¢,Nú`çc¤X¹b™·Ôó vŽyd›ºäÅ+LºÏ5¸2†‡*dB¢%"$ìÓ@\(5 9éö(’Ô+þ?ëŸ4Bí¼þÔs¡:óÝmIß3IHÐR­Ür“UWØ¡úÒuO£È&ä.è\„Z­eŸúÞ$P ýû†‹©N Y„Ð÷ ím: ñ†ƒ5•b×N€ÒWý¸F_é„Eš>®¾ZÝ«&på#«>FÖ¶½í1G£ruÝF⩵ƒ¾Æ—]× 7š˜Äɽ@CI®÷ÿŠ€uîQ3‡H<%öð9µ°þ˜ƒ&‡.³]³‡†ì¸8ík²žJã6#Ú×i¯+4VH'Q"J¾œQ›@ë}1FA¥€O<àC*ê⋃0F¼°òl]YÊGŒƒ'é% cknßBÀ†hЀœ4n/üÊÓãà]ûd;cWøxû±® ¯Ø¢óöôb’òðšFÊŒ‡Úý½‡Úã©ÁÁÕ¦ÛÔþ£÷è㬀E~÷ÅôîÖyã¶'HYås^0.Ú—6fOÿK›Y÷PÒZ ü¸„¤<|n³CŽñ‰Ú?š—Ç@³uY'<¼ØÞãD¨°_÷þ9z¾H{³‹ß\ŽÝÅ@·ÿz¯wUžÞ,Ü&0zêÅQ Æbδ!D9<¥bûu9ß¿|÷ö‰4’³ƒHªÙ8¡ù†5-ÞÖl–÷P³}M„l¶;žS,-ÿ^à0í…•õ±“œáªW y3Omµó@ÆÁiÛ`ÏáºÍùÌÃZá˜•åØƒ•6üÿÙp‡ 3ßýR”%/ endstream endobj 1574 0 obj [1568 0 R 1569 0 R 1570 0 R 1571 0 R 1572 0 R] endobj 1575 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F10 1169 0 R /F6 539 0 R >> endobj 1565 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1575 0 R >> endobj 1578 0 obj [1576 0 R/XYZ 106.87 686.13] endobj 1579 0 obj [1576 0 R/XYZ 106.87 441.78] endobj 1580 0 obj [1576 0 R/XYZ 106.87 257.26] endobj 1581 0 obj << /Filter[/FlateDecode] /Length 1545 >> stream xÚÕWmoÛ6þ¾_a`+@a5+‰z-6`Ië´Ú$HÝuÅ2ŒMÛBeÉÕK¼üûÝñN²dgÛç}ߎǻãÝóPWºîd=±Í›ÉùüÅE‰SÊ0ä`Ìß߇ ÆõaÛÐèjmšc‘/ÓnO³Ý}ÙmÊâñXqJ•Ž.r¼lü4”I2 C[,0b]¬ÍRëÂOº$ÚE5y¡ŒÒq.MC??c Ï ¹$qÆ ü¡@ØGj(òÃÐËeß?»sž÷ƒó;JUøJ¦Vƒ¼y{}õù%iEi$Ö¯¼ì]I†–î*³Ó•ù²*KŠKô žIXâcžÉ{]‘]ãjÉ¿E¹Ýµ ©íüŸ±¤íè'nzØõ¥C§ž‘ì95òöã»™Ý5›[ '¼­GB?Iñâ;(ôP zfX“€€V±ŠCH–5\1c‡ç ÒV‘†ù&«±Üb±2Nè Ý´•zTèeº¦êΊÆÎ—øY¶ ’Á> Rõ&âÁTµ-;œt%X*CyR5Çè5ßœTäjÌùÏÑ:FðP¦L-³ úÓñ zY`Õ8ŒEQ6Ü1fI½¦¤–‹¶¢±fI‚b蘂w”+–À&÷9oÅc¿'%çg\ž±/ÃøèÎ;Ì„í®xl éó q}±ªÊ-õÈØÙcÊÌbC‹û©x9;RX“¼YX®±î¬u×U­ät¬[Ãr,FÇ"ñ•ÎcØáÀ~“âÀu'žµCÛŒÞ\”d0@âÑ4L=qYL ‡UÔÝã)eeZ¥$Ë$œÑ½b_´5:…"«ã=>|¹®ô–V$Þp:ð´Ú ÆEüT 8µÐ¹ÝÓÌ!²:ÏIŒYµ9ß}*@§2P#ô 8\¤/ô¶l—èqä}ˆ”Õ»44ýh#Òžš¾Ñ–fâ(´·ª"ð¥Êƒ1ŠqqP`ñèe‚û¯„Š^ò߸ÐW‘ôºš|uñîì͇'j²§C{Y`Åàí­Á”Mq"±Ø“Þˆ|È¥8ò'<¬4Ó–4>õ0xª£[|[fHk:?a?ßEÒ0à‚ΌíhÐÝ|kuÞcýõ‡ùç›YÏbŸ²BùLbx7TÂÊ­à̇/^º¼R>Çàx‡Éks¬+úG]Ó]ÿÈAჯ㠟9ãÖÜ”1¾„"¨µŽ†"\±—¨¼þÿôÉdk•:˜;ØŽ '´CKØÑ¥p è…pCõá 1Áxb„PêËø‘V4OSF"½y̶¬æçÃÁŸhøüÀØàOƘ§­!E± ½¤Ÿ£Ú𡡸ÇÖÎp=×uCKu£cÜ‘°SŒ²Cé±öL¸£uQV”K,{RPD¬ª¹Àß7DMûâ?€\oÝîørjþíØ3¿ÓOD½á†’ZüÝ Ã-¾¢æ? güw¡ùd«w5õêÍ®O͵šXÚ"ûÖ2È0 ›5d"Þàí+(ƒliéL©1êFꪞþ¾'à™mwÍ#•9˜û„䨸¥ý^ïžxP³Æ³îއ­Êã#~ÌZl§£–ïþÞ} endstream endobj 1582 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R >> endobj 1577 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1582 0 R >> endobj 1585 0 obj [1583 0 R/XYZ 160.67 686.13] endobj 1586 0 obj << /Filter[/FlateDecode] /Length 1665 >> stream xÚ½XYÛ6~ï¯0¶y5#Rwp›M“¢H‚ìöê>hmÚ*K[IÞãßwR¦$ï6/í‹Åk†s~3ô̾?ÛÍèóãìû›×oÃY&²xv³¥©ˆÃÙ"D ó7xI8ÿóæ§×o“þˆ "áË™OÛ?¼[~º¹ú<ŠÀ‹Å|‘$©wõû§ÏW××ï?~¸æå‡78½_çRúÞòç_®®™mÚ³]H ?›-TB+À¼¨:ÝT+¯]Íç‹H…Þ·H4S¾È$žYDçôã]Ýt´ç»ëÅÉ"ïÕÊëòÛR‹ƒ>˜diy)—†n‹j³:Z8ÇX4]¶ú<ƒ»¦¸Ï;- +òP„RW»noøú“›Ï囕ûÒ Šs,îóòhX¼*XòPŠ4´™kÔm]Ÿca·o_Þ>œßþš/ÿÔÀ¹–%½N<2ZÉ‹)Ý”À÷•=î/å)ÉuÁw»Û»(2 ž?÷s•xU”x9~2¯íàªÝ8øâ@(Òí˜u$T`öÀú*Q^·×Ìm{¬Ö]QW~¾‘¡1Ò˜B†eöD£»cSµÈ2õtÜ÷÷ÜÏ£Ècç’.e£óÍïåm S©·. î6ìv+…®‰€ïXL‡Ô—©ÈÌ«ü&xc±Cy£]ñSéÞìE0ƒÔ{_ñ:é‚'˼ëtÃãuÞjd®|»ŸØ<ÀíÂÜq¼#7¤"mhé8G‘D®Æ$’J‚¡HY7L2pXvrØ N …¼c¾ìÜ’xzWT­ÕÛÑ¡>VhvÐ9y< áÄ„!KÜdŠ Pú­Ñ:Æû'˜&C¦`Ûš¿F`œ¤¨/Þ îó‚‰b?!Ñæ- !èdè·#qd,EülîdéÆjÕfB›!*_"m4ß_ÕXæ”e† }i•ZçÇÖ†„ÊD2(`á'®IÌØó(ô´‰ êP6H+@9û/ˆ|ÈêI)!­Àõ!ÿkâj«ãHz:ßéÃ2C›càj0D1ªÙhȶº2çYj$d™Q&Ê )7gÀ$©Âe†?Iâ16†Ê [èj]+ÄMÈQd¬2 ó'sˆfjÒ@eÞÇÊn®TëuÇ3Jøv{TGökBŸF†´)v{º±‡ˆYLkE[lŒç/¹’›‹AÒÐÆåHªÂ¸ VÈîðÃw²P>ìµÙg (C—™êI SL•1œžJâ0h÷ßq1[KàT«ŸûÆÍa‘Œ_är¹šóï¿3f΃Ò‰,uÅFÈVÊ·z]W^tmz9Ih?±­ËqHéJ©“DN‰=ÝŒã½Cðe‚RÊC ›¶»4Ÿ*Œz4®˜›ãšð:ˆ­çaÐê¿zª[,¤E+)Ç:H_„±Ù…tˆª3Õˆù ¬F¤Ù©/ÇìS‘F'ì Mƹ<°¢5s„ü±‘Jã1ÃP‰Ð¢!‡+&Wó8tK'#jœˆ8smù)©²È[×tT ŽÀTiÜÛ> endobj 1584 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1587 0 R >> endobj 1590 0 obj [1588 0 R/XYZ 106.87 686.13] endobj 1591 0 obj << /Rect[192.4 531.72 207.13 540.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.7.5) >> >> endobj 1592 0 obj [1588 0 R/XYZ 106.87 504.52] endobj 1593 0 obj << /Filter[/FlateDecode] /Length 1579 >> stream xÚWKÛ6¾÷WÛd4b$’zhM›m HøÐ¢îkѶY4DywÝ_ßeë±[½˜49/Î|óÐ"bQ´Ø-ÜòóâÝêÍ]¶(X‘.VÛ…,O¡¸¬~ú3H™dË0˲àÓ»ï\}^þµúøæN^9€6M‘£ÎºÎ/סˆ9Ëä"ä™;"c÷?,ÄËà—$øž–yAPǬHiHto‰à&¾™“\¥Ûªén×ÁzÙ‹Eb±"28²ºY¯nÆú_ÝÞ+ò„¦©ÍVoºÊ4ŽNf,J‡²o‰Æ |zµn×Kú}š›>0Øi‰{Šã§ÿøâYO&¬È"c¹pŸµ^†"ŠU[ƒ»Ž®{¿l,b3‘[ž1Î)È,°ºlMK‚·§¶Ûë–d?.y¨%σ³¥ëÎк< ºÖÔËELÄ£–Iö”3ËQ›¶ìEvûÖœv{ò^qÆÅÐ$FˆàdýÆli]¯kõ÷ùÿÈ@?[m-(°ìú°7wÉ"–LÈAZp3÷y±U„O÷Ë0Áp¢"þËÉ-æ ¾êiT8l2Ÿ=ú%jh5 9Iäд•nЃ.é¶VÍî¤vÒ3)’àýúP·çn_5;$á^ ô% LœÀ×pR¤AÕlêSédp¯¬öàì ®„vÁK‚ºúŠæ¸@¥3ítÀè‚4t}P.ögzlÍÅB‹&Æ¢XÙžv@Ú˜ŽNQ_ÞÛA@œªõ›g7q£‰Æv´CÈÉ!ä§b³9¹GQÕÐJƒM©·êT{9Ö UÔt2q|’;Î Xx©&<~Ó탲Ճ¶³<ötÊ0/„÷:€{«=ô}&Š®¬'oµÏ2ÛrxÕš'Y£KÊ H‡Bõþbú£ŽŒðÛ¾FWÅC‹@O Z ~¨Jy Ê²B«šZ5žÖÜ”ªSD è9mºBÈ©àôD$Â`àjÍÁƒw`(U‚ àÚ?õ À}S™“}¶4ȉåx‚°ËìÀ%¶:ëj{¦«3Þ˜“w¡—û‚Ç>¥ç©w=l.Φ¿U·§ 6[S×äqŸ°I`Ï„qõy•BI\Q¶ äÍŠOS–ö8kÔa^“$ËúŽîj4(ºfÚL3îe$’[ý36N- 8ºë »=eVÙð!Òk­a3ã¡3sêbòòvi»1t$ø–úïw¾Ô™6÷šVzI;ei}ÔuMKXš_¤Ÿ:Ý”žÌ(Æ÷ô@C?òÊÌуyVm6µ²žßmCçsèöWK§Ì\àüÌžà®Òuiç²M0è³9Ñ/¡¢¡ž_1&Ï)Ú®©;;ž­ÐYÅ0ÏîMyö)x½";'àEþdÄ?ªw0`ˆdòÛfŠ ¸‹ Ø>`12bYORV-:¾ÉŠÇ‘¾©0k°XHކêpù.„g#ˆãAÕ@e­:½mÍ¡gÑtädgÙålFÎ8ú:Žp6yIšá G/ÁÙ<õštNŒ‹®Å ¹w ”*5¨fpýL÷R·s‡gLþO‡[oô‡­5ò”Å£Y[•¦"᪠ÓúB 1ièÌÌpP€UÉ¿›% L­gÌrC®?$b°êÒà;ª¸”­ìZ¶.Æ(Âð Dîh 'pð «[M›Áœÿå¨9ã¬ÉŽr¤Þ-޽ßP-áYŠSôš§QE“ï^ÕªÃP"½ï ®óZ:¢¾Lµ¹Åö<û–¸ ÒZµuÕ#Q/ô»Õ3cNÄâ>FTç#q,žÏTœÿ+ÿõÐ×L7PJç$ü&˜&Ûk«Ž®¯]ÑýU$‹¼ˆ—o—Ë7È ÖTâ‡Î®®JHšR}þÐj7x_Í+˜ì³¤jl§šîÓíê’$½vdãغc-³Ü52ÔðHcgMÿÔ¬ùCÇb}ñxûvªãÇý­Ý˜£›3PÐ8}Þ¦É䡬ìædÝk ~fð3KÿmõÍ?¢CN endstream endobj 1594 0 obj [1591 0 R] endobj 1595 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 1589 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1595 0 R >> endobj 1598 0 obj [1596 0 R/XYZ 160.67 686.13] endobj 1599 0 obj [1596 0 R/XYZ 160.67 618.03] endobj 1600 0 obj [1596 0 R/XYZ 160.67 169.95] endobj 1601 0 obj << /Filter[/FlateDecode] /Length 1447 >> stream xÚ•WYÛ6~ï¯0Е€#’"%h4ÙmR4iu ÛÙ¦c¶dHò@|g8¤uX‹"/9Î|œÛ‹˜ÅñâóÂ~~^ü´|y“,r–ëÅr»È2¦“E$%Ë`ÿæï Õá?Ë_^Þ¤g.‹ù"¶Ç¯ß¾ú¸¼þ hFiš×}üt}{ûî··tðêÃ\$Á!çqðê×߯oIl¯9⥋H¤–—;FI*‚U‰,¨íïæ‰hõ–¾gªKéà‹YwD([úëîTì÷î^QáWE³*»¦hùØÔŸ›â/È4ï5߇*Ö²XíM‹gÂr0ç,WæÆÜ •Vfo„ו}-0\ôèS‹iˆ~Ä4Bßß2ëúà8Ê®¥j3ûM{…[@Wm&²¶§jÝ•uåø/ñá;âáè*xjjéžæ‘Àâ`ºãm™•z½´¥`%™ "Šsp«´Ê4S!ì… nJxˆJ•{,œLÉGXƒïÚi´zÁY&q«³ehgEâb“(6x,‹Û£õ•ì D$‚¥™Ë†z…Þ™Öœ)åØªº+Ð?d²HÆ`+9tÇM˜É nÈÈæ±8÷æŠv{Ó}ç¬ïýJ©U±®L´)¦jAA±'⑼ ž‡ìˆ‘ ÏÜŸ ›>‰+¦s€“âá|„›d†IðƒÅìYΈ×û¢m‰Ãrû’‘ŒoéðÙ§}‡Ü£úË`|ôš,Ó‹»åÙu|ó¡ä×):C|}*ó@‹ãR¯Îï‚G9yYvFÍ¡ya/÷ú;éNMuæêveëØ"'ÿþûúÞ_=Ñ5 i¬È=hJØAkŒª Š(2ÒÌvîÞ‚X|.^³<ë_Ô;yô¢˜IÏ´5ݱï <˜+¨K¥y_»ˆn›©;ŸÖ²Xcm]^L´yÛ¹¾AÂmÿž—¦8Kýä1?‘-OÈs'87,œYL–Cùd¹9 EØL´†Öó©4šÚöÖØ%ðÄÃ*Æz˜(>ìƒDÀÖŠ+˜¢j¢Ì™0ÑÌ?QLtƒ[¹÷˜W’7¤Í‹ÕÚÝ;·ŒQ–HHdV«b;Ôqð°+×°;Ø*骆‹²]@Âôf-‡ûñˆ'e·£#¬%öJK'4ᡬʮ´m6ƒ–©8u.Úó.Õ•iÕ¾VA÷V.]ƒ/ömíVÔãGöE:Ð d‰ÔZB-á¯Kg ¸6wìðÐ…¶Äñ„H\»1RS¼ñ¡îÜ@Øí¼€d¯»qL~*õCÉ¿~˜t_ÇÃÑK[ÚŠ&%E©;]—Û'À)é'@‹¦yfdO„"—6REžØ‰¿æ±l;œ÷èt:x\VtpÜk ‡Ð-whÿ“ËãÙ˜Ъ…z>—xÖN¯ÓLÌXžúTÃyašŠ²ï—/tÝD¤úìL}FÓ{žú3½ÒŠe¹›éµ›éßOç÷:”1¤È4M¹1ÏŒò4 ÝžŽÞï6·tð€Fõë²ÝÑÊF‚Jƒµ›úVÉ廞æ»öa <@ õ»‹q™¾Â2òDkA\'H~ëM &«¶3ÅÆIÞ×S;3VrŒ‡$ þ 3¸È]eÚ¦‡ý ¸(€BKÙèóÑ}Q”óAÙ‹hFÉeYöýæ?bò ª endstream endobj 1602 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R >> endobj 1597 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1602 0 R >> endobj 1605 0 obj [1603 0 R/XYZ 106.87 686.13] endobj 1606 0 obj [1603 0 R/XYZ 106.87 487.79] endobj 1607 0 obj << /Filter[/FlateDecode] /Length 1083 >> stream xÚ­VKœF¾çW %–6Ý44³J,9އ,ÛÊN”C6 =ËX,=fvýïSfa˜•C.ÓM½º_UMˆ$ î:~~ܾxk‚ØäÁv¤Zy§)ÛŸþ saDc›?>¾ù=–_¿z÷î&ú{ûÛ‹·zV¥<R3†ÙÅ;N¥ÄÊ„>º}7*0Ÿ)þ€ ÌD^±”b“‘Œ}mW(“…ßݲÎmD Kņä¾e‰'Û÷ûÚòרøË½;M7;6®žÔñö%nC0LR³3›¥3“«“7e]?Ýo£+þP³³noÇcß±›ýàÅ 3"5‹XÜмdÁƒšü9‹_‰Î>0Ifçåk éÚÂA ögµSÙí¬’ŠÇçäc¾ö®>ýç¯Ý¸†Hœ“A `@’_\¤Lø©"´'úí¯b*ü©<üÂ÷b¾ÃkJi»b> ªe‰¦ÄÓ‚R¹ûCkGÛ~aÅÞÚ²²5ë0ìÚz T•ç¢ÇœUJ ¥'>Â)L‡µ ü¼ÙRGeÔ"Õ‹–RºRO=A!s7Çø¡ l8LVeÛë÷ÊXÁ½ç !ÙÌyH “û¡aêèø¬í­ÊLGü",™ˆèYE-µ:ÿZÔ€ÎÍeÔlwlÊ‘M>þƱx¶÷ÓM×yÊHØW–Ó˼:[‚ìϨH1>-¡ªe‡ åÜaδL)R:Ëöý¸wSÜŽÏ{‡ðbıåã@Cý’e¬ A’¿1€žÔ<4û ýn˜sì0ûpÑŒKra•òt#²Âgš¬jËaèÊ{{}¿ÜDß—ýÝð’{oY ™B+¥^Y WY¸mì–H•—z²¿¶•%BNBCãŽ\#-s~%4!ûF5ÜqÉ”6ÔÖsÉXØä‹ÒëØ¹ °»hºÂˆ|ê©ç|„žËç?YÇêZòÖ“ëùœ°Y„žAÒs8@$üØ®è¼W3Êv´}õòÄA)•Hå2Bjºñãg" 'Ë„¹y`]¥Èç¢ð8¿X¥K8ð;ËÂ϶ù…ýðd¹ã[90gçÚ–ê .Ö¯L2|v1|ÿ§õ+—û÷54Éj÷R;.V/s±å/ÊÚ¸Ö‹˜üº¾þ·Å¶Z¾ÒgK*UØ‹D½w#¦„Ÿstó$,w?xjEáß]LXQ¦æ~ÿªf‘ÞNCë,åüvuìÄ8ÊF會½{€±JRaŠåŒ¢œ®{?˜SfË~_~jÁ[ÀL‘ç0p°Ú¤!Ÿz걪<âvB Oe¸œõ%êpM¼bÉý­Á ’S ø§ ×Übæò‹<|ÈɳRÇðxͱ£©àÛ.ƒ­\çÿ`µ¦­ýÍ?‡ðÏì endstream endobj 1608 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 1604 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1608 0 R >> endobj 1611 0 obj [1609 0 R/XYZ 160.67 686.13] endobj 1612 0 obj << /Filter[/FlateDecode] /Length 127 >> stream xÚ=ŒÍ‚0„ï>Å·–mZÛåXdñ' ­ÆÄpÕ÷O3“of€‰>°ÉÚR÷j”7ˆPðP9G²äî…QÌ\.uÿëöÄxÇS‹NfY8 dªõ9Nšóù6äHC·c-cºÞ5¯· e÷¾  endstream endobj 1613 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 1610 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1613 0 R >> endobj 1616 0 obj [1614 0 R/XYZ 106.87 686.13] endobj 1617 0 obj [1614 0 R/XYZ 106.87 668.13] endobj 1618 0 obj << /Rect[365.67 438.98 372.65 447.4] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.3) >> >> endobj 1619 0 obj [1614 0 R/XYZ 106.87 399.12] endobj 1620 0 obj << /Filter[/FlateDecode] /Length 1202 >> stream xÚVYÛ6~ﯶ*+®RGÛ6iZ4Xë‡qh™¶ÙÐ’CI»ëßåc½)оˆ×pÎo>*HX’ëÀ ¿?ÏnÞŠ KXQ³UsVAœæY0ûõcøËFîe£8/yXFŸf¸ œ•^H‚˜×¬r¢·Ë¥t×JCÒF¶ëQ®^BÁ IR=ÉíΨžÔñ fuᵉ”•µú½b.x8lt3öªAý×°ªDøeE¨¾3†ÄÔÓÎtVMw]iü–8zãVÃÆvãzC 9©·ZySÝŠÆSOѽ4eµpîÍgqžçîŽÎ4N£6Kœò°ß÷ƒÚÒ¶´êLœívºyQ ?¤Í¿™A¹‚¬æLÔͲÆ+ùÙqÍDyv<˜ˆ3(UYžñ6ªÀ(T—çu¸íúf<¥èy‚nôЦS°˜ü¢Ää—SòátœÄÐqWÔêPÔ´NГÄìúÍó¢ø’Ò7Ýv+Û%éÒ-èwVÁ—EqYpt9C—)¢L`(.¢Âiè5¸©=àÝ}TñðúY]",¹§ÂíìdÈU+ ¬ýEóàÖ =ƒnœ°Rœ†ßmÕ ·š%¦ÒÖ´p¬$©›q§nű‚Í3Q¶ŠV âä`"a|B:Ì9! ^(/à[t¥«‰òPÙ ”—UË'2øøé‚*r–ML²°²A?ÇÄhyZ0^žVO ž¨äŠâgde±Z.ŒgšVnÕ5îJ£û ydmó vtØ ’1X¿ì&²òt¾ñfu»Tç¤it«þ vo!-½7zÊOôNÓ‘ècgá!½@õ«y¸†w¡} ©wwïßx$ÆÚ¾Ç«ƒ!A†|W\Ýlh7ï7Wÿ¥wµ\daãódÝ_lìlç›ßSî=¹¹8e×~ôäGúò-í&`Cµõ¥ìI9)É¡„ëVc#x°Ác/óIžß<ˆ}žÃS¡=öðÀ¡À?d´ =°`Á'OjZ³§ÍUgéZ5 ÁÙOžØ°éÈYé",#ü7DÑÿé·TÙ?±>. 8iFkUëwWÚý¨á­œ .µ"j X–¿Ì~Æ+ˆÿºhh.°ð1üWeí_õoþs¦öô endstream endobj 1621 0 obj [1618 0 R] endobj 1622 0 obj << /F5 535 0 R /F4 527 0 R /F8 643 0 R >> endobj 1615 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1622 0 R >> endobj 1625 0 obj [1623 0 R/XYZ 160.67 686.13] endobj 1626 0 obj [1623 0 R/XYZ 160.67 571.72] endobj 1627 0 obj << /Rect[356.96 471.19 368.92 479.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.15) >> >> endobj 1628 0 obj << /Filter[/FlateDecode] /Length 1586 >> stream xÚ­XmoÛ6þ¾_a,+Q¢^º­€Û¦m†6ko÷ƒb3±0YrE9mþýîx¤,KIš 3èDÞŸ{£2ò˜ç®GúñvôrñìM8JYW£$aQ8rƒ€%ðþúÂI¼ÙçÅïÏÞÄ–˜‰xäéÝWïæ'Î@€;1›¹qœ8óׯO§œÍßãz輟Ÿ½ýk>ã±óö„8Oþ™øøþäœT'­j7ŠX$F.õ_I9ž¹¾¦@çšUu ÷Û1jŸ\ßg©Ð’•Ú¼˜¹‚‡ÎÙüÃÉÅg¤…ó›f }–]æw²(*âþZÕÅZs¹6—Xž“®_³ºÎn‰·i¿ Ã;׬'£ž“Mµ_mˆw²Ô./gªPÄì~r=4C|×*O:7ÄÈYv’Ç(ù±¶3J|ü´¯¹†ðÆÂQM—׊¢{È-ð‘¢¾–œ÷cîCÊQZk}ù@°Øräpü0ô ž£€½´t3ÂÉŠ½üÞSè&o¤Úe+I¼VTå×e¾ä"^e%&gc¶ËcÍÚÌì(6~YÓµ4i³ˆw£š“¾0…çz¿ÒÀ¤‰ó5o6D}A¸¨‚ÔYl$èÒë™%®ª}MÔ¿y¹VDVWi£Sr+ɠžÓläA”¨\ Ód-YoóRkò#ç•Ü"-Œ X¬vú²Ä€èmœ¡%í9-ªÛ-J_jæªPýèr/e^`‚7íG6aí(KKW›Ðê³rÝט@¾$Fhü Âuµ¿…¬À‹u‹9ÀÐâ‚ëÐE&t‘®„eUo³‚˜Õ ÇU ŠÜšÁocƒÌÝØ b~Lˆ¡0òeM^•Äz€Çá2ùöìïŠ&b"´%Q®ŠýZÎÀ‡õ tR-`ÊÍ‘h%µTû¢!ºMwÌð¿g ³yðarnò³â+ú›éœ1›òÛ¥Ó )$;Ù ±˜ð¡±¡8ÝCº­ s;B·°@ƒ(ÔÙ žˆ rÎPÎlg m£ÿýÂ9ã6ðÐ+û0ø‚Ei›¾Î.йt^m²áïx"0¿\Õ‡ZÂÝýöã}«nW›,’XÁà¢V–«9šIIê‡Ää]@,~¡ŸR¬BnÛÖ9è…U%‰AǪ²¸¥¥«ª¦%òr$¦®’·]A ʪ1ìYÝІWÈ:,¨¶/±¼Q²¸bâg)Ç“1?鯹Çú1íL 1 é°Ž§ï¸+´\’<§ã£Á{>p¹?I_¹2†é;_ÎÆÃCöÌ£©{<€¿§:ñê^<–Ë©Q<}&$6½na¸‚¥I7RsÓ•äª*M3£aÂE¨óW¨œ5‰5‹[wŽ>d Ñg[i¿nSèc¶0'ƒñàs–ÚÝ;&Ÿ0aï“ñCÂíÔítbhéèò¾m¿‘clFÌ‹îkæä•)gšŠ¸’Y˜VE¥ÚÕ¡pØà;¸x}™7uVßbË=8¨äA†}£ûîÍ }°‘ºÁ%YÃpdÉ®¶×M.Õs3G¼H!Kñf—à8ѽŒG¼¤~4÷ƒö€H®e‘oáªU+ºöÓ¨ê,HPgÁ=Ýì;ƒ€°s§ï˜« ×Oçqìe¶BþUEfÛÿ!QBÈrÛý—Ã+ƒfs*t±g¿í¼¤ÅöÀM-3ºŸ! Ê¢@¤µ›¬ÎV×§ŽBútìàIñ°Woý²ÍôÍ„¾¹àlœ×©Qªè­î€êAìå\‚Îu§&8\ ðÍ@Ù¯cüê ï/ä€6|J~ÙËr%̳ÀãÎå¾!Í:×0JBq£¹ËÄ`¬AV$ÌÔ.ÓÛd:…–Œ ˜»Ós¼%à FC·iøÙN¿œ²í®@6 èÅôÍÿ)†ŽLõýØŒág`ÈUoªÒü¾{šž˜©ÿÛù@—1òăÞàge뜲¼n6w}¨&HŽ –ÍCÿ è[)óñ}KãÉž©–70sßÎucc3CŒe±ÛfßäRÃßI™YÖóÓ¥3¡ˆç»{Ý=Yüô–Ú¼í endstream endobj 1629 0 obj [1627 0 R] endobj 1630 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R /F10 1169 0 R >> endobj 1624 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1630 0 R >> endobj 1633 0 obj [1631 0 R/XYZ 106.87 686.13] endobj 1634 0 obj [1631 0 R/XYZ 106.87 193.59] endobj 1635 0 obj << /Filter[/FlateDecode] /Length 1242 >> stream xÚWYoã6~﯂>P@ÅÕ}Û9‹m·ØømµŒDÇJd)Ñ‘Äÿ¾3Ê–eNúbRä\Î÷ mØÜ¶C ³/7‘‘ð$4fsÃóy–çá0»úÁ"îqÓŠ¢ˆÝÜþu}g–ÏÎÿ¹Â‰Ç®n¿__ξ}¿…Ÿ³?¿ÜøK`# [Y‰Ü»NÌ#×°ÜHIÁÎ]×ÕCkZn3Qå8IX+_zYeR¯ßóº[ÐîB˜nÄ^MX“$Ð-ô乩Ÿ•°l:Z û¢#]Ôk™¨h‰¬kKÙÉòÛgŸŽýU”½\^a©àÜým½v‘š©yì0'ÙNHª@?ÕÃà}Ÿ×}Wçmy¼­º)˜¬€'ñ¸fΛF`ñ|‡‰KÎ÷X^¤nÊF×&`×\6[¨m—ÉR.õVK+õœ ø-”味e¸’¯¨&p‚[ '¤ °°@f?VÐÀY¢H0,n?Uޱ'Îä¨ñQÂr G*Ša¼QyŽ—¦ÖÛ—~­r߈ ÅžÔQ lz¶£ëÇÏé8ˆvż£D€«Ù¦ç}5ÀpSˆûRy÷Y%–jÑáDŸA‘ád¸¨P_”¿Îr ¯*`#SÊ?¥úÍWfì1UÉPÁvì”åR IF+ª¬ìsMejû¡A5§ /ßá±·E£$v¿ ¯y]ë=ÑP†w”'4„…»R¢^ÈÃñ©N7¥Ä“±÷C µ£uªÏ¼ŽÃÚ2å ™-êc4»NŽ’Ó!*!jÂ÷´„C¬tΉ—Ž3 »‹>F}ç|ͻΨv|¢Ã7óaô퀸Á·#öÒC¹Òt!Ëçy_âGÈêŠÛUÛÉeKo Iz!C4B¦¨z¯¤k¬&܈¢"o„‰]¾£«ø,VÔûj‚—ˆÛ[”¦éUõa¤TSTBIë:|J¥éãj‘¦u¥/f^”{J-ýÛÔXj÷ ºõR<É4m%œ6Ÿ°t<.0¡3‰þR?·ÀÃm?ŸïCÅnÚ±’ßß’ÀäR«ì?ÌÿI ˆ)ÛÉŽ$Cïz¦ÏWïù£×sTuªŸÏ&:ä¸4Ø&yÑȬ«›B¶ÓR‡ó¹@x®²òíoA‹º9> endobj 1632 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1636 0 R >> endobj 1639 0 obj [1637 0 R/XYZ 160.67 686.13] endobj 1640 0 obj [1637 0 R/XYZ 160.67 389.24] endobj 1641 0 obj << /Filter[/FlateDecode] /Length 1779 >> stream xÚ•Xßoã6 ~ß_‘‡s€Fµe˲Ø€ÞšvÚæpËaÖ=¸‰’xuìÀ?®×ÿ~¤(;²ãëí^Z"©Oõ‘êÄe®;ÙMôÏíäýêò&˜Ä,'«í$ŠXLf¾Ï"ø¾þÛ‰øôŸÕï—7ò¤"™WÏþúÛÕ‡Õüã ¸#Ùt&eä\]_/V‹åÃÕŽÎÝÕÃí§«)—Îíœ4ç]ݸ›ÿA®£ÎõLz,Š&3.õ,PTû_¦3Áçð¼IK…SŽh fžÇb1м!­ŸéçÇGg›fŠ>¶J=Nß²­ÔºN‹üÖ $sC[o½!­‚ªÖû‚¦¼Ñ³³3{Æ.Á[ë·ND뤧gŒí›¹L ˆ×:E › üÈ©÷Zˆ¦2#Å–’aà#ŸùÜœ©{¥ d­J]¿,=¤õ`±j]§p‚Žùn×D…Áªž0ŸÛÁ‚0ùílq8$ù3LÄΊ|a¢ÌìS0è!ϤëÔê€X`ãeR¦Ù+®1÷I¾S „±ÞŽV(¢Ý6{cÌüö2@~ÂâEi–yÙ«Rk!OF°ô¦¹™‘Óêìfx°Ó˜'“ È÷˜@ #ï;Ë|~]Ï,ær+J0 ±=fªVÕ~GÎË”NÏw]')iU§YFÆiÞóš²Tù”‡NMV§HDÜÑ^C}j„ÑÚ y¨&> éøytS]|@>O1ÞžÃHT<Á¸‹ŠÇÌÅxrøz|™cÆ ©s cƒò î*™B ½â@H©t§D›ø0ÒDyÛä:À}¦•Ñ5Æ…ÊízDz ,Uå¹'ŒHEˆá>Ä6<ˆÀó€,´ö\t :ÿ Ã$-Ú+µ¼Ož•¦ÆáE×´EJ˜Bpú­Tï¼ïwJµ…ó„̪hæ%­÷„‡›€ðy*¤PZ4F똔µ5/eÚž'‘ ¬ýÑNíDgà %!¤€^ŸD}}íT©º,¢H²a¸«ï˜?àß5îé·> \.W¤}*1]mbýúB¤´ºÿ0ynY«ŒÕ¤÷‹‡¯Û<¥ù˜ c”Üó•.ë)Ôìº@ÖK­+Yþ=p¶¨U™`¶âM•Â9$Çcšḭ̈. Û¢TÉz Ù°f €àœ‘ßû¢ª)øOMšÕš,àúxV]Æ'µ9ªºLò ò‰D:µ&kh4IAR– N¼VßqšÉfs„DI¿<:³ë Ýõüý§[ÿ\<ø|ì¼fdþŽÔf×–ÍìZ[чQ¸l¯oUuŒh‹cap\ªzm¤¯dÀÅbh×`]ú.<Íñ¨ÊuR©GM–Ô¥æ·0 ȶ9|ÕÍ|næf¹4§ûqP½îE°8¢î…În5R‚­ÛòŒ³âÿcÆ}@yh)­KŠ1mé´Ò•sÊ ç@-YºÛw ŠS›H&TmÞÒàãh/a/(ªf;‚ (ëÑüØ~bX1÷$ÀO|¾?ðMY ß….KÊÇ)ö 2?÷˜|+x¸˜½7rO” ¢‘úb úE6ÁNÌ´rÇD¯+è®<Ī€ÊÔÁtÖ‹ÆÀF‚ü$KØ*mŠæ)Ã"Ʊ¸#\2•ïê=ÊR*kRZ¸¢ $—n(“æ;/°: /¦¾ù‚¹ýƒ­ˆúÓü¨—×Z§'âN$d²ì"iµNþ©eºKó$#ï­;J\:i‹®šÖ- R¯@?E³CߘŒØ]ˆ^FÁ„n‹ò™L4k‹v'!°6Vê–4h=g„:=èNœB“h,_µ¿†Üé²?Þéu“;4 J¯(„“¥ï´¦o㱬T¶… ¡OÍvÁ¤×Þ]òÎÊ]¹ .–Y«¢µ(ô <Ó?Úèv…Æàb€"ù6  I ìéux‚ï­=e¼n BÐ}R„ú<jtMƒ&Yb=K¶t$%ôCyWè¿›WKÍ*&1èµ¹m2¼¢¡ç, h«“ÿ‹ó’K—è´ .!E“gŠMöö‚I¹kºl6Cذh\<é×h‡^$ˆ JØŠ–”ø*ÈHö⩞É[Þõ?+Ô0‰Ø„4¤§]©Ãº0A1…϶ENž°O…Jé.T9‹·e®ÀîPÖ@µ¡»UÐ;” Æ$XÄ }"ôÿTk{pwœ~#ŸÞ¼}ÓZM¾ïÚMéç̘È7üÖÏÏ?™ZT„·Ö¹SõOÆÚz$yš#Ñõ);ŒÃsØ› ±ž×Ø9©-i&ù(·ÓÚ¤9`ÒîTYµ=÷ÿ8-óÇ endstream endobj 1642 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1638 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1642 0 R >> endobj 1645 0 obj [1643 0 R/XYZ 106.87 686.13] endobj 1646 0 obj [1643 0 R/XYZ 106.87 181.91] endobj 1647 0 obj << /Filter[/FlateDecode] /Length 1621 >> stream xÚ•WKÛ6¾÷Wéh ÖZÔƒRÐMÛM‘bÓ±Mã àZôŠ­,’œûë;Ãɲì´ÉŤÈyq曇'so>ŸÜOÜòëä§åõ 5I½4ž,7“ ô’x2 \–¿¼Ê‹¼éL)%nŸÿùn 7¡¸ùãÍÛ›ÅâåëßÓËß®_„G~àŒãÉÜñ&]'ýõ,ð•—ªÉL*wDU“?›Î" eþJ«)~Fâ)2OBåÍÁ ß÷ÒÈÑoªÚèu¾ö1±]ÇG+ç^êiAâJ\a$|Œd³˜l8ÒmPÄ }ZUÄœsb"ÃgÄñ„hf‘ÌÓÊ·ÏëZƾšÍ=Då%‰“¸¨¶¦µ[Ó€›ç‘8L¥Õž>r_Ÿ¦2†NtÉ+ÈžÊÈá3Õ×X¬d¤ Sjï|²^pÌ‚Cñ€rAü¶tÒV$!3(£ìÔÑa½/øAîôC/ ‡žø ¸œ8È D´¹Ù” oAHC§ºvâ”(«–NšÝt†¯\[]8ËåÐJ¬éáêÄ>Oçô˜ÃCn:Ùš–¦Õ­ÙšŸßJ(°`’La>£ ,hMæ,öÅ¢s±L%¹Ì ö½ûð݇bjÛÚjZ6ûrÝÚª¤¯6×-í2Ó¬k{GÏf#ò E>0)‹ÜÕ•³lmG]}öŠ?:0ÆB¯myOà)ÚÔ¦Ù-å´-—£¤õeì©”sºÝî®Ç@–¡'C¾Ïl ~«êÃ4 „w–ÿ~yAH OÃòÕJ¤§”*W+”A{PvÌ<xı=ÌšƒÇ Ѹ p¢²rÙð#/N.– ̈ǽ*fe-È•‘ `ßjz}EŒXi¨ètßc>Ò¢9ÚHÝ3ÖúãY!€"—øC§ÜPkþ€"ƒyÕv©¦íNל6ƒ4ã+K‰¿ ,êAÌ9±uåÐ¥ÒÚf}"iÙá)ÆeBq™Hľ1gu€¼Ðæ˜Rˆª#òÆ*F¥ƒsÂpFòáŽàÛœ!¨suïªïÉÉËÜ€ÎÁ®¤8øä¼qQ泊ÖA„"çb\›z}]@"ž%Ó«won~~ùüöã‹—·7‹÷†`;ë;câ‘è(â›Aÿè+žõÿEºZrRI^ d‹uµ¯ì2Žl4d¨6XdpËÐÀ­›€ÏM0xP]#€q¯™hWÝh=¹f¶.‹: ´é*¦÷…Úº$B,¿{]à6EðìT·–¬K]²"Ý`ø€S}×´µÜÛOÝTã„Òi{A Ï)¥›¾Ú$?îìIÁ{î>3ç³s”’¢ ñvµÉöeÆm=ž„4¦âeKœTAϩ鳆…qÑü8Z]šb¤”ˆ—¯+K¾çwMç·îÏLÈÞ<:msnƒVÛM¤hm³÷`s··EF[Tç\–öMMÆb†×ýh Òú–›–ïæ@ Ú²íæp½§gº5#­¨Ê‰÷û‰BJc²ó”qOnxíæÁªD$co®J®Š''|Þ,ÝÿÈh8…ñîøG2Š`j º’SPãVÿƒ2U„UKršq pâó½D:Þ›OS°\{Žrè»ò0 qxa×xª­þû,®ÁÜ“'íÄ”U½… <Œ¾75Ä'†A~é⊧ÿB…:±×ݸYÃ1-÷:ɺ!Ĥ§Nþn64Å»‡Ì¹¡Ñävà'f,SB1¢¢¹Ñán¸§þˆ” ?$ý•{@¬Äë²»XÆ0’t×¾>Ëšmon{[Î1RÛûÜeê,‡$5nd”Ð]Iè,äŠÚ껂 81,çh ÙYø4<…ÿl|O(¾(ŒXƒ>Û²ƒßý —·c endstream endobj 1648 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 1644 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1648 0 R >> endobj 1651 0 obj [1649 0 R/XYZ 160.67 686.13] endobj 1652 0 obj [1649 0 R/XYZ 160.67 340.41] endobj 1653 0 obj << /Filter[/FlateDecode] /Length 1876 >> stream xÚ¥ioÛ6ôû~…ѵ€ ÄŒJ¢Šm€ã¦i†ôÀ’¢êSm:Ö&Kž$7Í~ýÞAÚ:Üt]?‘|$ßÍwpä ×ÝŽh¸Ýœ>—£D$Ñèf5RJDr4 ¡`ýì½£äøÃͯ§ÏãÑX„ñÈ¥ÝÙ‹é››ó߯pÁwb1žÄ±r¦Ïž]Þ\¾~5½B¸t®¦¯.ÞNÇ~ì\œóÉóß§/ß\_3êõIì‹(Mü˜@àf­+=žø¡rR;iÕÝØWN‰šGNŠ€ûš!MÉGe‡›ªÌÍÆ:«yë# ÊÑë|ÊÊ ¸—^‚™-µgË÷|á[‘ÿ1w>ÍÇ}Ö}%bÏY•Õ†‰d–<,cg¹[hC=Oÿ¹G kŠÄM1`Qy"”–Óã&H Ía \§ÒuSVÈbÖé­®pêÕO¨”3+‹:[ÚSÈ Ý\•y^’a²â–%ó@$™´%«õß;],´hØ%Àút²¬×¿=_:SBçgðÈ{ij¾6$‡÷$Î:$ü¯’ð¿Ä¬C}(].ÍbîLçã³ÛÍÇl=‹,:ÂÜJ·ÛüžWmd-0à}˜å.>ÓÛ*+š¼˜÷¹@ŸE¾:ã{æ\ðî®Yïê<ü^³F_Óè£èÛI|§†âA„X øx6þAXr=g©ç¿Š¬É ¤õ^O zþ—Ÿµ9ð|)üÈ`3D1:H³B±‹àjÙ"Ež :DòhôiB´õŽ,õÉ&"²vµ+$&D½ÄÁxcQ6HÔe¢ziv r\GÈ"­5Ãv|³7 75Ã?Cx1ùN÷h½ÔK’#pÞe€±›#qÙ2§þ¼…ØY³'.ÇC?Ž‘ˆd"=u$¾pU+RŸÍ%‰5h½¥Ô¡š‚ÒGŒi,múˆÃD¸¾¹uÖG 51{™ÅQòh=/´UNÚ Šý8r²ÍF/3XCT@O‚ÒAd«0ŠQª­–f]înטëP»k®¬O- ¸à1å]ö-TKÙbäI‘È6zï9ˆ¯ª^4Ù†À>ëˆ`wÄ*Î]z±X.4¼l,’ƒ½^®úêõâXÄÑþ™õô ?0{'Œ03ÄÛ­ %uf¢L‡œÏfôiŸœ2h™±x<`‘Ѐ›ˆ°­º{$]|ùXÍy®‰@ ÏZC5µä9kY²n#‡æ.‰*¨yÀ=½ÿ¦=i´‡„zÚ“F{¸óÒ¸ï"ÝÕC¢>”EÉ—”ØzÖlÖ¯WŠXµcW¥Û&ÈNÿ!B¸³ˆÃDÅ‚ ä`?ŽÜ½‚k'ÜÓîôbá‡_zñJ(¯-b-Jy¤ ºj$*äµp‚žŒ½Ö æÁG"êT­©yç=΂ÎÂoøü†Úpd®ú$@c è.ø²çaýâ‚BÅe)Ìõçt³Í5/@'æE Ú¶Q£î+ó°"*W&‡ÉÎ PŸ“qd?("¨•[¤`É*Þd»Ü\Ì ÊCjäºÜ&´— ÏɰT£ä»%VÓP`ÛÎ%€“î ¾bS€ÉxUqÕºV‘C:WØaÕŽ-‘®ða RŒF]ÅÂ|›4+ò{FÒyZt>k†U±å*g *ò$/äךÏSWĶqV­&Ùð¬Ü²hx`KM ´¤¨ï⊎C7…g(áÅÚÈÍY‘Z4Ê„à§ÏÖ|Σ¡Š•Qæ¨à…—UFlEì¸ÁD,o¨§ÄEž‘X°½!ƒR^Ïö§·Y®± TÒs.W¼»ÿ‘4Aƒ_C88ókʳ åîœòbàÅ!øt ê<ýó~}z8 ¸†}!NW¬Îò„·9>iiouÏ.B\~¾Q4¬\²>Ð1î Ü; W)l×zPÚ‡Ÿ‘Éå°òž\óå –‘Þ>5ð߀ W¶ÛõÎ<‰²¦ßd/8þ*ì €Ÿ$üWRò)›´x•òp« ]e ^T»Üì’àäã.Ë9ájƃ±˜ù-y‡%¡¶Ÿ-»|Ù#wÜWÓæ„kE¿|5»zûlø7$Cü’â3iUÑ·„ áTÀص»t­¯ÃV÷5àNÉãGŽÁ¼0†Zžp…ÁƒÑ<;è‘RËJ¡:mÁ^±Tán°I²e0«ÈV¾å®2[Æ£Þý2ý‹lËèÏ„{Ź·¼°ÄÑÛîRó€òâhž1/L·¸ÊÈ ƒÈ>{~5½¸ît¬“ÛáS±{ÿÁy"ʧ¼ùD,8¬†"êü aÏ<ãÿ I "n?0`ÉXÐĈøø'S[üð/Ú~F¬ endstream endobj 1654 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1650 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1654 0 R >> endobj 1657 0 obj [1655 0 R/XYZ 106.87 686.13] endobj 1658 0 obj << /Filter[/FlateDecode] /Length 1267 >> stream xÚíÙnÛFð½_! ²DÂ5ï#h€Æ¶d¨0ì R´QÒÒJ"@q‘¯ïÌÎ’¢DÇñcú´³;÷±33°¸e Vu\Φ§£pó8L—×ãQ00]éÅ'rŸf†ìêÍ?€ñØðãÛwÃÉd|s=1>Oÿ:y{~à ‚¥x#ŸÐQ‹6]Ûá¡'¼ØŠèwÃôMן•Åœ€EZˆy%‹{ºÞÖi¶( ÞÜÙ¥‹•¨^Ð}YÈ Až"ëb®.ÓL”-³LÛæ±ßU<®ˆ¬I#>ÍçY½è²«©kH[‹ÐÆ'ïÏ.Æï&¯H+z‰4Ž…qPtïÑøj8!q¯µVÑZ¢O)5PoúŠnúNf,Y,Êz¹Lïè…Ë—-JÑÏŒ™Ñ—5¾>¿z1œ|úLÔ/´@sÌùiãz«ÍΫVÇV¢ˆmŸq—ÎÏ©"ƒ—ÑÕ›Ë =€2ííÉŸŠëVŸé9ܦqŸªë¬†ôzžKK‚è´Y.5êkV‚À"]­ '`Ö| «ÛBÞfbCœ¤jTôÒª«ÁbINؤ(à ٽrß´={]ÿåéb&·U*óRã…qc_Ü–UŠel†1Ô¬fØ¡TAp–T¢Ð·è”;«Ä‚Е¤DIôðbƒQ9#gG•¶B«è%Y½Ë:CñqÈÖÊAJ/Ja±²*Ò-¤püµ4_wÛ‹x¤{‡9>N.”gkì¶3Çï°Š]0rÎQÿšÄ«øƒ¾„ŽuR–™€ÐÅnÄFFä°ºSŠ,ÄK’ÀãŽÝó͵@N!òç˜ Ûbu‰†ÃsŒ5Ž5a„‡<Ù`«@²¥Ôoä³me1]\€*eVcæ‰,ÓïÊKçNé~ è¤@ú¿ß#FßAtÊäžÈØ#r™xžeD¹P¡ËQw*nI©O::-X½¶u ±>¢ÊlqÀ’‹]×Fjjß ßî4?tœt7äž«Ó ce4þ8¼øÒZuT±ÃPÓïs!§ØÜÒÑFÊGM¡@(¼ÀV!?.:Çç–óTLÇ÷xèt ²ä¸l.7ÛšþÜ iÖÊó™È˺ Ú´n P²Z]Lvy@á±,5¤Eä˜ŠŠˆxUCÑœ?lê ÷ 5ü868ÀW×âöÁ̼¹(R=§w‰žÐ•nÔšt9|S«'©ÍpYýl!i¤—º=-Õ„‚h§ 9ÞOÁ†ëxR?ãRîg|Þ±èCÌï1xèØ8È“?t3"ÑŽËãnÐGØRhùHõB"î’Í6Ú‹]³†€‡¹†:°U ÍŽ]ªY$Š'­3ý`O¦Ú‹ÃÏé@Ô>šèÏÿ+ßÁÊçÿJ+_ðèÊ\û¤?´+þ[Ÿ’|-Õ>ÄM› qW£±ê± gBÇ<“¥ÆÌežC:iÃý–Æ{…v§v‘“`=n¨§ZoIˆ€XÖ¹¥ ±¿ösjëm×ß™. )—û½J ’`¿™¨™C2ëm´úe÷DÔüãîî:ÜŸ> endobj 1656 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1659 0 R >> endobj 1662 0 obj [1660 0 R/XYZ 160.67 686.13] endobj 1663 0 obj [1660 0 R/XYZ 160.67 668.13] endobj 1664 0 obj << /Filter[/FlateDecode] /Length 1471 >> stream xÚÅW_Û6 ߧȶ&×–ÿØ€ëšÞnh›b—b7Ì{ÐÙJâme¶|é}û‘¢âä’l}؆=™")’"¤ä‰çzÞd51Ÿëɫŋ7á$s³x²XNÒÔÃÉ4ÜÖ¯eiìü¶øñÅ›d¯’¸Q2ñŒôû®>,f?9°³Äu¦I’²«×¯o7ó÷Wo‘²·Wï¯?^9ë‹]_aÞn䪔QÑVv: ' êè5ý¹Ó2™‘zœÕÊÔ·k8‚áQÉ8°`Öfd,Ž> endobj 1661 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1665 0 R >> endobj 1668 0 obj [1666 0 R/XYZ 106.87 686.13] endobj 1669 0 obj [1666 0 R/XYZ 106.87 454.57] endobj 1670 0 obj << /Filter[/FlateDecode] /Length 1062 >> stream xÚVÛŽÛ6}ïWH€PˆÅHÔ½Àض»mŠ ò`¿u (6½R£‹+QëÝ¿ï ‡’lÙ^´}¢HÎ3gÎÈr¹ëZ–~¶~X}¸­”§‘µÚY~À“Èr|‡ÕO¿³˜ÇÜvâ8fË_îlØ ØíçÛåÝÒþcõë‡û`: Ç¢ÈrõÁ$¦ídÜvDq/ÀQ¯H5*+m'»Á!d.žŽçñ4Ô ]ÓÊl“¯Y± èÛrmk˜pyêCG{á`ïíšeÛíø­k{a cèÄŸ|Þ7­ÒëΑºñSVöÒ\c4GØÀã‰l¨éò]_­™Gyõ/9uò=A"ÌìS­æ¡v\‡p=Á}}üvl©IÅ!/J9· R ¹*Û kö˜^ŸYݨ\¶”sÈBEËÍŽÆñÔ‚æ‡Bå„Íjc Wá$\«ø%€o"¦w¤c̊댈Fп¢éõCÆJ5¤ÞpÀsM:ÎÒwî᩸n`¼Á«Ú·E­Êz}äðÔ…$õÚÝJthy÷ƒ£Š‰?„JÚ†“p«e.Kx¡‡,+‹¬“Ýœ%àC€:¸l*©Š PXÊìÅ1kzœ„¬ÊpöB;ü@Öm«†v¶r-¸–8ÓíÏó&ÞF!Þ“x©/5¿’—ò$4€2+Ñ|Cë_>gßе$§›¦ª²zK{*Ïy­²îï^¶ÝKB.‚ã¨g[|aàõÁ¡d¨¤¯Ž‡ŸÆ ˆd¦ì7;:&x|ƒ÷B̶¡•ÆâW[`áÛGFõ#­¿àzÓ·´³ëë*ceºÍË /¹Ž0ÛRb¼±¡~ç5c?"À+ÊÐ|ކì/¹¡âµœúF ¾wÉ÷½€& JD‚*FùœUûR¢2Ä.ëú½Ñ€NÒþß©¿=ÖÓâÅËzøI:¾] ƒov§`¡±|ЦM¯ÈW¦‰ÀÜx‡D”H#î‹Óø’-Œ‚ƒ¾Q°‘Ò¥<7ìBk[0Vó&S$HY+ÞTçÙ|C B"1¾î m,uk¶¡«³J‚>Ñ™5Éh£V“ ~I¸6Y'P½ûóÍ»ÑÔI\&qr¯Š˜yͽQaxJQP@ÛËr]Ô›²ßÊ“(]FNŸ‚yIÿ[8_½îI yšµà•®,QA"\(SモÔfŽÊÕwk*âÇPÎ 3;k(£>{cÔ¤¡ù¾•lŸŒð¡ûÑ|.:…‰×OO”ΰº-äŒØT¾ékûŒÛ^È£tÞ·5˜SüÞßÌ›j41ò°}|ºÊÔ9µ®5þ]è>¿˜š©¶1صˆƒ‹Lž¶ò‘†}¯¸z¾F¶¡pgÀ»Õwÿ4œãì endstream endobj 1671 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R >> endobj 1667 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1671 0 R >> endobj 1674 0 obj [1672 0 R/XYZ 160.67 686.13] endobj 1675 0 obj [1672 0 R/XYZ 160.67 597.32] endobj 1676 0 obj << /Filter[/FlateDecode] /Length 1282 >> stream xÚÕVKÛ6¾÷Wh°ÒZê Üìn²Aš (P÷ÀHôZˆLºµÎþûÎp(K¶ö¢@^Dr83œÇ73Z,ƒårñ¸°Ë›ÅÏëë»dQEºXoy¤ÉÂã ‡óÍ,Ͻ?×ï®ï²‘% x¶XÚÛ×oW×·¿z ±,ðü,ËÙêææ~}ÿðaõé {¿úðæ·•eìÍ-qÞþ¾úåãûÛO¤:?©ö³0Èó…e–|ïùa²DŒ þ,È=xrq¯½¹Ö½Teœµ²ª[I¹´„a¥Ç`SzqÈvR.=YÚäå%â­µ¡Õô­r$xî vR[êC­‰,šcsvh5¦è©®¤‰EÕ¥˜l•0îxô¢˜ Ï$`4](+íV·{¢L æhýÔHDw¨€ûŒ¦è1ÛYT=áGE4­Õ3ñÛÚÀ—=Z€XcÖPR*§ßì„¡Ý¡­hZÕÖ‡ÈE:àmE'—µ™ %êØ ¥ds…ðÈØg›\Ø(×#ÒÑ1E’°µ‡ãBTcaýìÎÆ!k¸ˆùôvœÛ·-Òòð"ÔöV¸u,å¬`t²¨Ë•ç){Ø’’J¡“î±lÀ}¤CS‘T4Íó¼*=Œ%ªèØbÁ+Ü“ÁImËZ?õæ+âéNÒœ7Ûé}H›†”jA ‚³•¦!ø—B\e̲mGøäCw»Ÿ¶¶ñè/åGëUS,žz†Ù4jÃÞBMkb=ê¶©@Î&o"‘^è…éRÇœ…;ê¯^6È!ÞÙl«~ذ­>`Âa'0_?H8¾dÊÌB2¾l`úmP#½³ñ^ðs4µÎ’ñÑoóúì7ˆE>Í ýZÅ> endobj 1673 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1677 0 R >> endobj 1680 0 obj [1678 0 R/XYZ 106.87 686.13] endobj 1681 0 obj [1678 0 R/XYZ 106.87 668.13] endobj 1682 0 obj << /Filter[/FlateDecode] /Length 1324 >> stream xÚµWKoã6¾÷WèÐƒÜÆ¬HQ¯E°hš6‹-Zh}kZ€–äX¨,•]ÿûá6ýÈ£hz1ÉáhÞßpD,Š‚‡À,‚ßÝ%ˆXš‹UK–§ÁœÇ)KD°øñÏðv­¶ºfó8“a>ûkñ³ù@²,Ç¢`. –Öß§¶‰C+RËp–ˆŠB5Ô´™Æº¢Ýr&²pGûß~Uÿà™Ò"Ô=‘Çíl.ò°.›•e\÷Èö‰Žm95­z/’ ”²ÙãBsÁ™H¨k­†‡Z¿¦ ^Wõ¶îªº+›z|o4ã'Ü×~]ö›ê*º÷Ã<)Ë O¼‹u}Á„$|í§‚d‚öOƒ¾Jç+l:µ1;ö+Z]P”‰d’´%¥Šˆ˜ IYrÉ2žJ–pgÚY$|³”¥±å¤"]ÊÄkƒû.bä¶1Ý1'‹cá ‚ˆz­4‘Iºº®LE]€„|ÖDЗLOYürP¹ã)UGŠñÁƒ‹ÄêB|2Ø8ÏÔ@ÁYûc¼q„y †Â R ´A:7mÓaxpëÃÍT7~áô f[X*Úšr1w&èçáÝ,Ã~ ›ú³BÌ]ìi\ ‚$ì$–¡a˜Nʦôz¦ª'"˜»mZ+TÑbËõ`ž×5¨gåiŒ¡1:tœ!|.DÆxácœ¤ôâžÌsl}ÞÞÞÏ31‡»_n>üáóÒ®=­V°(Ÿë ©í ÒEáB »Q+][ª…ƒÙ:Y…§?+t¯Ãì{ˆDS%™ºAJß=©(ÏÏžOù¨²TŠðãêI±Œ‰ü¨›?‘äœåâÄ !85!DXÎD §î¡®àÑ®Eš+BÇYðbÁ„´2ÿ‡TóŒ³(õ}kÜCÕÓêµ›ðW—“¦6'÷,%©‚‚8yäÉÄ}<2•KVHßRÛ'㨰ü¸r#ïP÷¶Ë¶;úd?ìD… 3?(4‡£ˆ&Æ™èqŒtªzZ»^_UüxÅÜæV[  b'Ðaõšn´Zâ0ÄshëÚ’ÖõŽx6Xü“yV¹_VÀtü˜àõjè7{´¡˜d“rGD &Õ„gjZÑJàWUÕèÆô Ðh|µƒY ó…ûÇY. ZÂeùŒZØœ¾'°;¼"%ÓF¹LÙz"oa1“ëåÚ0‘õDö„¯Ñh"±’4%oßpE¢sݽHÅ)øÌj{Ë7§¨ã“îöMpMÃÝ™‚ÑOúèÍ'ÐÌ?Ÿ[ f&[^˜?¯0ñûÿbâ[ð÷+ °n»ҥ˳lì§¡¤Bƒ¥¾k·keGÝ”¦²€ÜU=XV‹7ØUÓ¶í&˜¡ÞôÔVoáë·¯ñµmOêÕ÷Mž—s?4Ð=Ž|{ [¯ÿMaà;4¸ä½ûWÅè=`f?{â`¸Ÿ=³©DMóô‰‹‰æÃÿå‹Wc¯‡ØV@lqÅÿž4ÄVÖŽñhþMÃO#¹•bs™ øf¤ç…¡þ´øê ëï endstream endobj 1683 0 obj << /F5 535 0 R /F4 527 0 R /F8 643 0 R /F10 1169 0 R >> endobj 1679 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1683 0 R >> endobj 1686 0 obj [1684 0 R/XYZ 160.67 686.13] endobj 1687 0 obj [1684 0 R/XYZ 160.67 423.57] endobj 1688 0 obj [1684 0 R/XYZ 160.67 256.03] endobj 1689 0 obj << /Filter[/FlateDecode] /Length 1714 >> stream xÚ­XKsÛ6¾÷WèÐL©N„øÊ¸™Úޏã™flçT÷Q”Å)Eª$•ØýõÝÅ.(Š’Ýd¦'¼»ÀâÛo—œøÂ÷'Û|˜œÝ½¹Ô“T¤Ñän9IéÉL)‘Àøý^êOÿ¼ûíÍeÜ‹HˆPM|»|þñôÓÝÅÍv(/ÓY'ÞÍTÆÞçë‹[Úšô[gRú"  í (XåeY‹úítJÍ£ ÷M@4Ñ ihE¼÷ÎÏï§(ÚÁåõé‡[71˸­YàWnOèzpŠH$)4pe5®Êâ/È";(wáÈ]XÉí¡«8P4ǶÝ<†’óôÁ§œÚÕ™æÃ9®â_{™%ÊÅÚüÈÖPD=ÓþÇI#ü4p=Z·>Ÿsr û4îÒL$ýiæýí§‹ó«Óëý¬ã² Ïÿ5KÏ[ endstream endobj 1690 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1685 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1690 0 R >> endobj 1693 0 obj [1691 0 R/XYZ 106.87 686.13] endobj 1694 0 obj [1691 0 R/XYZ 106.87 668.13] endobj 1695 0 obj [1691 0 R/XYZ 106.87 648.3] endobj 1696 0 obj << /Rect[384.02 513.47 408.57 522.27] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.B.1.6) >> >> endobj 1697 0 obj [1691 0 R/XYZ 106.87 394.94] endobj 1698 0 obj [1691 0 R/XYZ 106.87 369.36] endobj 1699 0 obj [1691 0 R/XYZ 106.87 202.01] endobj 1700 0 obj [1691 0 R/XYZ 106.87 173.64] endobj 1701 0 obj << /Filter[/FlateDecode] /Length 1641 >> stream xÚ½WIsÛ6¾÷WpÔ¨ á€dºL'mœ¦‡¦SëVõ@“PÌ E*\ìx:ýï}@RN|êE‡·/Ÿ¼€÷ÁÓË[ïõöåuâe,“ÞvïÅœ¥ÒÛÄ1.Û_þòS³õ&IÿæÍÏÛwï_ÿ½ýíå5?¿Z)½@Sg!^{o¶š­ðBÎbîð•!K#Ëw½ Èû½*†ªm܇|®O 2býîzÆ~§>ªYG©?ÔxpµÞD™ð‡;›TúE{8äMÙÓWÕÐšã’øÝX²[\ü~¿|¤Û¼3—êó±S}ª6Cë¾²T÷kÁý¼óA•x$àØ=š7 x`¬¶ lèïT]3rdz25’L†Æí!ÿ¨æžŽ2ÆC×=h¾‡]Ý¢À‡¿£©Úq̵ÚHxR?fjãC£öL«0,ýªZ6þÕЫz¯Mó6‘Œ‡d¸Ð×[Œ¿lPÚ¦ïvkŠîêmw;âqÔê! F­_ÑÝØ«þô`áÇP0aýä$—«3pC$g‡a¢‹DkI$!zÜ1`ßZoWÍreú”´Ò._j‹²çúñÝ{b¹­ÿ,”ÇN§¢_Ž…‘­3_oòîƒÒgQd˜cöµ¬X2䟡Xä&TWƤWd,È\.¯´«"ðç$ÒnQãeä^^ÿ±Þ¨üpàÔ£jv–á>ìÖËÂÙ»ªj ~±.»õ1z±Z}[5E=–Š^ßeÕ²»éÑæWðXë¯hÑL÷;õ+j`Ä·]]îvÍj·þŽNþ]­¦*‘-EÝöê¤Q¸^ÝðëÇqÜö®Âp†!d^~8êì“=adb GŸÆvÈÏéë„“sp,0ž1¶Z-rœ³ÌÒì ši`;ȹ™7^NYC´Áxª_¾f!“.I¬¯\t'ª«³Ó¨m*(†¬—“Ø“q T®ú<ÐîV÷_E•d:º;¨*RÅ–Úkæ=íu«ÆMÓV& JûeDY™í8@G¡ý.I­´€Ì–¼ëã`Z÷¢‹‚•,´¾š?—,æÎfí"@0 Ïï7<È|˜YÆBj+W'Û¢na§V”Ó/2î©åwû¶;Ð Y{AMÖÜP—U_Œ}¯½— òžªxô:¨a²$¾PíÔ÷CwNÕ¾Fâ™—e…dh«—Ã]>2Œ*½­1t\À ëÍÓ¶#ŠþH©STyM'Îô3´ÈŽÔ>ëEZÛ,ëà MA‰È¡ëÀ„‘ÙÁ¥i…>ÉÅÎÃ$‘_‹5TK6 q,r½,Í?¢>ŠôÈéð/ ,«³fW˜Äâ/6a*Y$\ër*+=­î-ãɼ"É0VLÒG~{Û©ûÊₘÒgÍ> Hc‰]L‹¿<` ËtRNç>þ“é÷ÿo  ÆL™„ÊgU»\ûïKX5–#3ÿDÈbÒ*7á6ívg<†YpÂ:ø5öÔ ŸH¸$`"=­n®V@˜Mš¶ž¹€”Þ›Ÿ@ÏTý ÛüqhAP÷PõËè‡ÎØy†D4¥¢šFQû®=бv']vç&‚‚à“ ^ª}>Öé ¾€ µÚÏrž×NÍa'É&Y¸7pgHï þ¦à-è$Ý^æ_äÙBoL?r<I²xò?AÕ½zŽÜ‰/]éä„â8'[È~²“ ø_.ìxa:Ù 0Äÿˆ40±” ‹6¥jŠ úÕ”+)~æ*Ÿ¸²Ðð}E^5O QðO?;á€R»oXÂ)Î>½ú¦®ñМ¢kþTë6’R·‚E«íS«ýh[@pùã] ÐÐÔtÍ«‹hfÿÐÅ´Lö؄ 4ð€$@÷Ê¢ŒÀFI•¡A£p¨Åâbó†~,-xÊm\žŧ1¯+ÔGu–CŠžŽ·áno•<ƒ(ŒÓ6MÛ¸Oc ü7ÿØ‘³c endstream endobj 1702 0 obj [1696 0 R] endobj 1703 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 1692 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1703 0 R >> endobj 1706 0 obj [1704 0 R/XYZ 160.67 686.13] endobj 1707 0 obj [1704 0 R/XYZ 160.67 614.81] endobj 1708 0 obj [1704 0 R/XYZ 160.67 472.26] endobj 1709 0 obj << /Filter[/FlateDecode] /Length 1344 >> stream xÚWmoã6 þ¾_a ý`g-ùµŸ¶ÝÚm‡a8ÜeÀ€eT[I„:væ—^úïG‘²ã8i{Ÿ,‰¤ôˆäCÊNÀ‚ÀÙ:øùÅùiõþ>rr–'ÎjãdK"Ç‚e0ÿùo7çÞ?«ïïÓI…G!‹… øÃ¯?~ZÝ}öÀB¸óü4ÍÜÏOÝ?¿ûB¦Ùdês°$„oŠ+°Á¦iXqëù1\É 3ˆÝ[uÔ]ßÝÒŒm*¹5[9aÌ’ÜñÃå1Zë YÞ¬Ý^u=éûjf·öÐÎÍù%X|øBÔœ¾ùµïVè–Ø±ú“_Â0g‚€g,f܃Ä»æq¢ ¯|rh— X„&_š=@YèÍ~/ë²33îÚÆ—¸åP(ZíÒJu¤ü`ÜùLãN—ÊOwÇYæÞ{`Ñ´¤ Žr¨Ô;˜åÂíwjžÂˆÛðU²WÇ%dž°0¶ k74N²˜}ôŽ/‚„éÜ›æ2 {— ïbðÖ%„4ayd`r¸ Nrò„Ùˆ»rÚ:óIšÍ ]o_€F) ÓGù¤ßÆDäþVÓ–ýNwt`!;ð9z‡§à–³,½…0eib·¾U›ÍÕ܉!i3«ôß +m@(è<‚kŠñÞTÑêЩ’F}CßJ^àÊN‘ÅÒq SÇC¥ ÝWÏ&™ØEÒˆŒ…cÒ4{ù¨–X”“ñBàÊ‘˜T›y¢­Ú x|fFÈï'.ÑèÒ,q@¸÷xâU/kÕ ÀÂõv¨k hDAÞ¶rßÑ.ýNö´¾7LWŒY3 ÚJÓè LâöDçKGx#¨_B êATk’ÇÖ0šVÙJ6Ƨ$µ)Y”ˆŽ'Í׋O °dS1c1zòàJ5¨—ŠQˆ6«+µ!`bL¸Û§«[ˆœec"”ê@¹W—ª.L…âÂEFð)¹ÍDtV»Ð›g+Á˜å&,µ²–ÔQC¯›š³Ã:R ¦¸/é†ýèÉ‹#t„™r*°ŒÄ˜ó­ê:8ÁÐ:Šf…´g…TŒøÀhÓT¦ÓW*,‚ä·òDÚüx ðŽÎ:™šÏÚýë¥vÅ[Fâϲ?œ”NÆBaˆ‘‡#1rè*kù=º]3T%§úa&­‚2Е²BÓ`ÍïoàÓØúÔl>]Þ<,Èm†œ®tVWc–…V£0¾ÜÉz; [Gsx„Ds'”TÔ±¯Ä[7&yâðDx*ƒ ”‹ÃYm„EIkTÉk¹WkÏ>O€ ˜µ œ¾µÙ²7™]η„]0þ‰û¦Qîn[¤mɪhȬm*RžžË2sέ¨Ü@_2mÇÁ”;¦ÝDYâʲԆï(_tOËØ ÌàÉ,µü3˺îz%íÄÀˆˆhKK)5—²tŽÌσC0@#Î)>W)#FÊ$ Êܾ™ègÎ_…Åu¢L/«7Ù‚¡žãìäÞ’\vKl±éÄ/ÓyÉã^¶[ÕûØâ}‰Úߎø¹ÖmapVÕ 3ûNIør'üSÑ?¯E³­Žíƒî[Ù>“+ÖÆ?Ï£Èêó„y\ìu ÔÏO[·Z>Àvdÿ ¯ŸGã½¾3OãSíéhŽxÌ@‰`PÖÓ—ú *²î°Ÿ˜i¯÷&S9d{×L¶!ØÏ DSã«ã‚Àt¬½)]¾ÒôðX&PÎâñ­IóۆЕÇë¾[šÂc{lÊ7ÿ¾n‰T_œÅ ¤¶²bö5ñÝÿÍa”š endstream endobj 1710 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F10 1169 0 R >> endobj 1705 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1710 0 R >> endobj 1713 0 obj [1711 0 R/XYZ 106.87 686.13] endobj 1716 0 obj << /Encoding 640 0 R /Type/Font /Subtype/Type1 /Name/F13 /FontDescriptor 1715 0 R /BaseFont/TEGCYR+CMSLTT10 /FirstChar 33 /LastChar 196 /Widths[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 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 525 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] >> endobj 1717 0 obj [1711 0 R/XYZ 106.87 668.13] endobj 1720 0 obj << /Encoding 640 0 R /Type/Font /Subtype/Type1 /Name/F14 /FontDescriptor 1719 0 R /BaseFont/ILFUKZ+CMTT12 /FirstChar 33 /LastChar 196 /Widths[514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 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 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 0 0 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6] >> endobj 1721 0 obj << /Filter[/FlateDecode] /Length 2346 >> stream xÚYYoäF~ß_ÑÀN²jÀ*«]Á¾d'3 ™ q‡xdµìÒ-9:ìØ²ÈÒÝžÙ}q×]$‹üøQÞ"v;ûóýî_7×ïã]*Òhws¿ÓF$ÑÎ×n¾ûÍKD$öÿ¹ù÷õ{©‡UJ ev] >½ýöãÇw?Ó¢ñ$ òšŸ÷*ö~ùñÝ'Zdƃ¢P¨˜W¥§wïn¬LáN¡ÍD¨HŠD9¡X&3Y‰8ÜjrTd„Q¼¨éOE»”È—2Þù n“vݧ<«ª¢ÙûJ)Þd›‡âV…qUP/£Ÿç½Š ­ï¤×Õ4Ñ>ÂoâyyÿÂ;ú®>g]™»ãxEu(ªœ×´xwY=ˆ½o‚Äû–ÄMÆ÷ Ra¶Ÿb¢¯ò¥´#¬ûžY{Ǭ¥Fwä‘ûútªQg¸‡ 5g±¼["Uph*¢dvÿ7{?TÆë²æ¡èl'DíH±’lnwK)´»óú|ΪÃúET$’tzϕԧ´Ê–~û¶8P 펿pìcßÙe¡—eWÖUv¢É¹ÍQ4Ú{Ì:jˇ#:¯íjïŽV»Íôþ«>–š©Beë"gØÈxmÝ79·q«õ$ì€y©1.¼Zð$kQð…PÇlmж?u´¯¾§ßâÏ"ï;z¿Ù¹ìË(q0uˆ¹õ¥ã8A³“ƒû¶[…°¡äy4OŒæQ±´^[üуmyåÃÑ Ãã4š §úý¾wGÖý²î whï±Uø$hœµ›QIû±2¾DÛjYƒV A†¾ÀˆJïý>Qž5€Õ²ó㩸Â^èÕø~¡ò¾ÿø ml_Ú®8·ÔáÛf°±)òœßÿð÷u-ò¥õb)Œ³îccñ}Î1Š ™ªB†‹g«M£˜l)¢ j¾pS"PáùÖ»Ë( à@0Çâ0€xãÎú{Yå§þP,›¦²¢‡„¼Ý ÒPI°Ù,l~ÝÃ#£Iê·Râ)<öцzJÏŽSs`Å™Œ'nãoirŒ?{¨w€ÆøF:æ@ó‡Â¿í«g1JjlxKŠ!]ÕK³Áññð VTð×ÈF½Q:f”6Z ã|Ë1‚´NÔ[ë$½‚3òH¸:Ç\#&†+3áe©¤Ù  —­ôÓ~ö‘Í]͈Û7ùèÛ˜‚mJ\¹6ЙÌÃÏ|&ü¢X¤N 4p! h¯oàÁ~j•F¸|òÖçº,£?©Åæe s0„‚õ2Ëðg™ûA4pAΠìŽjêÕÐ9Öýé@í17A§)FûaÿùXTÅ“…T?L0Î'Jm¸¨ŒÇàýj“žà0°—…” QøÐJ‡„ÿe'ƒ“Êv…ƈ }õ¨Th—n‡À_JÞw}yr· „¤(Îì/Œ´Ì—$h¡äóÇì¸Ì»U¤TþÔÍï-r(€/kÝÈ`E¿ÅŸ]AÞ/( ý„õÎTeέû"ëú†;t°tñHŽhŒHçòt¢Ö@B±Ó>¤‹ ){Š“éFà0ú3°.õ ˜bf6?‚ê㪪°8Äkáoƒ(/Áb•Ý$‘ÞŠ3€º›Aw¹´S%t´*=tjÉü`8,y½Np1WÂ{ ´þÉû¦-ŸV,ËIž4ÌÔú2DŠÜM§üB&¸ÀA“XÄêUdHE¨¦‰Î<×Vñ×CöFðŽŽ.š–i(sQÛ©­ï³£›…¡ØÑ¯¨¢+ P¸;•í‘Tº'&@ÕßÊúh (<~år‘«ÿ‚d« *E§šKRåœÒ¶ÙVúreV®Agt¸Kö3:'^Èé† Y;þ­À¶è7T@D¿¡q@ÉÃȱoyH¡V¶r-ä©cbOÙ©/6Pq¨æÍ ÖcXáÊ€+\¸âipâgÍQ$€—ó–7_¯‰ôÔ‘P•¡j·e<<*VHM/–\Xc舓cKû¦>c+Fœ³|:!sñTÖ=/ÂF‡ õhc&CJj2ÓïÝŽû`*eß2kØ,6ŒF„gƒ—à «:Øó®û*Ç"튎{>–äEä@L,¹ð$éµ÷á»|º´¹f]”npÂ(vúŤÐ6¾±žÅ£on‡‹m÷ëÛý’:Fÿu$i>/Ã/aló´ ç"uéäç"ªq3Fj‘jïIÝZ:Ý©†WR¢ÃÑì„Å¶Æ çȧìÌ à^|©ŒˆfŒšÓ§ž~âÒzDªq"ÏzÇ™éyÍø¼§€ïä Ë/šÖœ#h !agA¦“Ï>œD@pÈ‹cÒP:aTÒÉlЦOÌÓ´˜¥àš1(ÛÒS[=9Y=”OCì]Žâ]õ©'‰¦¿¡'šEðÿŸþö}ü? endstream endobj 1722 0 obj << /F7 577 0 R /F13 1716 0 R /F4 527 0 R /F5 535 0 R /F14 1720 0 R /F8 643 0 R /F11 1186 0 R >> endobj 1712 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1722 0 R >> endobj 1725 0 obj [1723 0 R/XYZ 160.67 686.13] endobj 1726 0 obj << /Rect[470.92 530.49 493.4 538.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.3.4.3) >> >> endobj 1727 0 obj [1723 0 R/XYZ 160.67 516.1] endobj 1728 0 obj << /Filter[/FlateDecode] /Length 1906 >> stream xÚÕ]oÛ6ð}¿ÂÛ £#‘ú,öҥɖ!Ɇ&ÝË2 ŒDÛÚdÉÐG“ûñ»ã‘’l¹M·böb‘wGÞïÓ yÞb½ÐŸïßÞžœ‹”¥ÑâvµH W–ÀþÍ/N,½ýáä<Hxà³P,<>ýþõO·go—pB8 [ºqœ8o—©pÚNV¹lrÜNÝw»¾#L½"X7f²ªTCЦ/UKð‡¢, x¿tyâòLQ¹EýŸpͯäK!w@m ×XLmQ ‡H8U2E#˲Ƌ–È''lWÓ7«+¼µ“E…¼Ø2µØØéT…g;st#ÍŠdеLÑ Ó”÷¨@å}©l¹ïdÓlµ>©B>%n˜«]SåªÊž–‰pÀACÀЋÀbxXkÀw®wg@ZÍHo@2ÑT­eÅãL¢‡šÛWu3˜lßW*e‡Ì8ª)›µêZð;§Îf"Í{ýÛYÛgˆÙÐn_Ád\…£M\¬«üìpNöÐWZ·Ãäv3aeƒÆ©1T41”HÈPçìšZóËûÌ’7÷E×Èæ‰Óª®Fî‹I¤Z5MÝ‚4F!KÂýIŸÁ3qG>¡õ4icÂîËKR tô×dl+·ÊGÒú¹ÐηO;e¦czÙäEEú‹pj@Ü!Ó¹àpP¿DLŒá¸u‰¢3pó¸ñôqc°½j•‰@íR‘~DuCÓ·ªÁÛÏyرæEÖY7Ä;áqŸÈðÜA2ç‰N!T\—Tw‰ÊçY3/2TÄ}Fbø¦N!ø4Ž)µ·T\T…y ¿[2Êå‡ùëuž¶húG¹Ý›+‚czøP“R+¡-G‡¢!óCC3¼æÝŠc‚ͪø£2N‹~v Ew!Ò”%P }(¹é+XÀÄ„$Éx²GÂFôÉy¸0êu›C‰KÈ`>Ú‡*u .¬Yh#= ·²2ðÁ0~0Þê§–kóxæ¨y¶ óÈgðpD¥Óð'ihVÃ¥µb"Ñgnê­êŠ­MYäݳ•ƒŠýìλêK“,kòPsc̹+ã³êqWYÑ•O&nŠiœä:Ølê¾4é÷UN׋Q‰<)–u* s,3˜­xXÔqf¢Xf[¬7:@i›ÕÛ]QÎ]3ŠY’X×ÌMé fÍŽuF{%ÞöPt,Ç©ÆdB›°2R‘¬!$¡Ò¹jLeÚ„Äg^2 Ê*ñ…=¦Á.HxbÐ ¡Û!AÂfL³@Õ·Eµá f¸™Æ"dAl”ÂöìPå„Y,¹.\F \YS·õª#øÏEÛël¨Ó/ha,ÝÌÇãÖšY9ãëaz“Är„±6ñ† ÝøÎZ_ÉC,ñx¦²Nkà+gr€†Þ'd£¡§¶Å3½²)(Ö}Ó´pê‡|욺"ëKÙLå1RšDàÛ·¤× ÷:æñuw*S)d1ÍI“lË TeA͛Ȼ|Ú(Ì .ø€ £À¿7 þ‘¡ üÜ¡2]Í~>¤`VþÇúeæ”ëjþ°‡\íÖÛb2ÞèH=®ûÉ߈"–¤³(©ÔcG«¶Ãº+ôgL¤è¼¸Ïæ¶Êœ°9Ýœ²)œ`œFMs;k]`FãÇëÚTð4ba4µÝ¬Ûç0|¡Ä<J¬V:©¦8ó(F“×#ž¥Ïd‹¥Ax&G l,J©méã½–Àº×Ä{c†ÊçõiRõôóá¤J OúÝééoç—ø¦™É›éí©Ù31śņå|z9g|ÿû§°ÆÊ>îí†ñ‡“Ô?³Þu`'‘0_<ç.!TJÛ+MÆ÷øè4H˜1›ÂF–mM«Éh¯ÂUgÐ-öèD3ušP!]¼`¨×d,ºó΂CWž>WeòIÏ‹¾è¬‡òŽãþ°Ò-|©vl@0Å ,¶µöë(E­*‚Õ•©D±¯ÿ7բⅱØtqÝÈ`½š®Rn`¦u³1íN‚áÿPwö>^ƒ>'ĵuŽKÿL|Mÿ ¡#1  é7©E }˜Ä±…iš2¿ ý÷R¾6„ºººÂî ›¾ª°jÍ^#̱†2zèºÊ,SÝ Áõ’öyÑÎå óŠˆÅ{M …$OS;WëàÔŠ´®û&S„¦æàöp+]Bü›…P¦H$“f¹¯ªœðýŽ&èZŽûF¹ô¨¹#¿ø >г endstream endobj 1729 0 obj [1726 0 R] endobj 1730 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F12 1382 0 R /F5 535 0 R /F14 1720 0 R >> endobj 1724 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1730 0 R >> endobj 1733 0 obj [1731 0 R/XYZ 106.87 686.13] endobj 1734 0 obj [1731 0 R/XYZ 106.87 668.13] endobj 1735 0 obj << /Rect[140.85 602.69 241.09 611.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:SCANNER_MODE) >> >> endobj 1736 0 obj [1731 0 R/XYZ 106.87 526.56] endobj 1737 0 obj [1731 0 R/XYZ 106.87 426.98] endobj 1738 0 obj << /Filter[/FlateDecode] /Length 1881 >> stream xÚX[oÛ6~߯ÐÀÉ@ÍJ)J}Ë’tèРФ؀e‹Ž¹ÉR KÒüûÃCJ²lë^Ìû¹~ç"‹¢à!°Ã/ÁÏ·¯ßª gyÜnƒD°, ÖI‚ÃíÕaÆ[­•R!»º~»Šã(¼Xñ,üò~•%áíêÏÛ__¿Ó{x™¦Adßæƒë[ËDqÌr9ã’Æ,ãŽKÊøjÇ\„›^wKºQ°Ž3&éö»zµ‘ ÷M×ÓlStº{s.×Wa3ÐÁ³]Ô?Ù{iXk]ÒAßÐXê;.U­iÕmŠºÖmG«fK#PLbK4$ù\ƒUÒT†·;ÿ´/ê²hK«2Š[ÑA\SÃYU½i@pÆ3õ¦JÐÒ®J½-†ª§Å$®îÂ{˜daÓïhC}¬ÌÆôÕ ­§#¹?<¨‹½vGM­»»Õ\.iåÚ6 8,¼|Eã§Ëb_¹¹%œ$"|O®Èƒ”å ]‘)–œE¹XzJ°$Öã¹EH ™Lp3¦ÍëisÜûø¢7*Ý1{ce,ŽAf —90÷ SÙÈ6ÍY– v¤Ì^½¹¼øøñú³¿1<q¤X”Ò½( ö€Éˆñq]7@w¾éˆ}øtu½Ô”'LåêO+)â5Å}50ˆUÄòCJ¨o› œeaâY]ñà¦=½[馕úÑbC×¥®×d¯8IzÞÉã –‹¥-×0ìAE N6•ãÒ)øÆñ~³´‚Œ™rwH"E!c$Ÿ†­.‡cÕÏ4Ü vE½¡[’‚ Fqso:¯‡œ‘Ï5ë³AÌllxªëLä”!Ò<¬ŠöÁ2ÌÀîÖ”Eo3l<¶dþ­7}G[hg÷æagDË{bD$ Ú{h(0í¯£hJíNmv±ÓGF=A‡Ñ¿NÁ+MYæ äTÀ‹zºm!—y8b±¿`C3×й\ÕÔ˜&p«÷é‹òÅ’ Hš$Ž ›ÔAÀK–yAÛ¡²þÊ#×sèZóT±xnó‹XâYœqûa¡$$f…†G9Ò×3Wg¨žÁäb•ÄXÏrq\ÏÀ[|Lä.ùÌ•€Cî%C‚_Þßž0PîèG@"¬â„4ɼ&Ön±°ø‚aº(M0N8ÄÅ`ªÞïs,R–èXLðÀläåÑäÑf_ü£O ‡û€6m‡š¢0‰•K³ÞgϦß5æ'¨£«a% ’"æ”mp{ÛTÕPS?Ð;„ b­l È#ÁS¦ø·ç³€±äÐH%ñè=ˆû‡¶ØÃQJJú^µFA—\I¾¿ñvO>Ú}I5†"¡€8g¾‘Éyô&PráЛyôÞ|ùùêÝç›ïlœ³4#ú4 !&P{r‘Z8p¡0”´cí ;”·/tR¸ÿÖ4»:šÒ´w›ÖV ¼Ùï wµh5m=íÁkeh˜&‹j@Ù\ÚlŽˆS"¼.¨È€ƒ?bŒ~„€^„ÎwÞÂöVÓ#ƒ•!Â7}Çám…G姀ʭ©Ž)lÏA—°½2|Þ™¹p¦# 4ôªÁ–)«)¤ÄõLUSS«dßRè¯=m ¹o m«klc{‚«¶/žLÛÔ{œCÉbGP‘,Í ëðâ ÛµœÈ°lÜ÷þ¨u_GLI"Ã*­ºÒÇ=γº¶çÒaÏûHœGße{ÇÕÚF=áC:›IyŠ4q™TzÁ‚ìäÝ»x›²Äç~4Ó‰§Ù 2·us‰2‰M¤‹Ç“&Ƽ,Ô$ñ…sЇV噑>´ h›½^~hý¦¨‡Ï›÷ÁµÓõÔZ!J1•}§Ël3Ñjš<¡Çt뺗Îì ´xÄÙ8¾-©õ£‚¤§BÈ¢Ø#î]QÅO¡œM’«SiêÕ1¬nxÓb8G¶.ü(oÔ†BËÞ’6Aâ­EjÉ­˜8t²Dû‘ϳh‚ÆYSAóydn© Ä÷Øî¤î éŸeÀŒ‡˜+ïPï(9å´<™Ú—oTŒLÎz@"¶+:š ®‘ï_\Ël¹#æ#÷„ïçMõ íYCÃkª:vš--šó’Cñ…‚97ÄÂÜQ"„ðb‰úv&Œ)ÂŒ³„¢ÊÆøìÿ€ÇÖÔ}Uß…7Ãý¬á£ïÂËß®îV§>×VæžG‰¾3EB’Æc' £ÑÚQQ£ÝÝ—ç2׉©Í²j-ûèEâóÉ.M¦·üÔ[>Ëv™:™í¬ #•䈊`©oPÝ¿¤bÙ‚uÓ»‰>þ¤Q@=ÿ® "¡›x‹xÚµo„¹íë&¯‚-Û}Ój÷ÿ‰q%¸©]šÕ_ dîWô§Šq…Ú¸äljxZb0 ÷Ÿn/Ze{süëè À“!qÇÚ3!Îÿ§¼Ÿ5Á`Þ”lG£E×Ä”öF;;X;ÎóŽÆ*E|¼·–—ÏÅ4Ð?ü ýLO endstream endobj 1739 0 obj [1735 0 R] endobj 1740 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F9 1009 0 R /F8 643 0 R >> endobj 1732 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1740 0 R >> endobj 1743 0 obj [1741 0 R/XYZ 160.67 686.13] endobj 1744 0 obj [1741 0 R/XYZ 160.67 668.13] endobj 1745 0 obj [1741 0 R/XYZ 160.67 262.1] endobj 1746 0 obj << /Filter[/FlateDecode] /Length 1539 >> stream xÚ­WëoÛ6ÿ¾¿ÂèL*F¤H= l@פmŠ¢-ºôC1ƒ"ѱPY ôhbìŸeËI»aŸø:Þïñ»ã"`A°¸YàðjñÛÕÙK¹HY-®Ö‹$a‘\øaÈ»>ÿÃK£åŸWoÎ^Æ#‰œ©pàñ‹×Ï?\]|\Ú¡—°¥lj÷q)bïÓÛ‹ßáêââ e¨—,”!g‰@. K—>çByìòÝ‹·ŸÎ/Hè^¯`á KΑüj£é<Ïy ‡¤ÓC<¤d2q4]ÖÜèné‹Hye cäUå—¥ˆ[úJH/7õº¼A…DÀRAê($ÕùÆÕ“ïß½¼|õ×Ç‹çç°£¼_hèš^?¡é¯4LúN¸YÊ8΂aüi5=[-ä+–&Ó}^&¡gz²Æ6gí`!¼¬j Ùƒ“Ö;Ú)´ó[]è:/kv†Æ¬ž2áŒ3@ãCô€ïgîð…PLqÒ?yØ!ϦÆd…^g}ÕµhÕÁ££›òÛéÍ=ñ‘;ŒÈ#&åÔŠÏí»¹ôîÀ|¦)`%<³¦Ý<ë»ÒÔ´Gáˆë¨uC[ÝØ'û2L0Ãq¯oû¬¢)9ÁTe¾;dÕ·º ÙÚ4ĵÐn¶e]ÖC,I–$ËÝF×ÎiCÚPºa²8š¾óÍÚ/²“Ê)6!1dÎûUóCa©,2¹6Uetî@S »© çxìãÇé?Z|%"qìƒC,€n–ûrÈýrÿéL¦©Ô¿’¹·Í&diÂÁ†yMŠ .˜šN‡Ö™úQ¥ä÷(5Ú_„)Ú_È€4…‰³ìì4Ä«m‚•Àîäà MV߀‚°ÑZô×SNv¯ÊÚÎm•[}$ƹÝ/0аQ><Û½2Ú{›3Á§–ÿûø…<`ñiWϘùH  ¢ïg6C¸ÿ‰on¶Û¬.Z¿Ó÷Tol·a+{< îËš¬Õš­~ÀsyÖ‚N¾P‰ÝÄæ-«Šf[ÕÕ¬;rÖÞÃÅ}⊂µ&êòX¶Ë©ÓÀ2ßXÙÒè¬ØÑ³¬µ8¢bî]®i“ì“!O㈮Ӱç¹ÇÀî± W Ø3ôŽV"Z”ŽþzÀ!;·Á\8ÞLá%Á´(t€Å€–J‰‰,Å-ŠÔ?w´OÑ\C®ttˆrí‰qI)×”¦ã²[-ŸÂ4>äÙnL_tu›}Á{´"Ù‰;³ÞQ`Û>ò2SÞ-ûj{„•`×ÁŒÅ|x¡ÌI„Ü;lh‰ÚÿØ=R‚'…Ìtñœ ×Ì×Ñl°Üî·Ìz¥¯*·7úàaˆ[ØX—•žÛâøÛÞ!ßõI@ìÓ§º®–Ô5á;“y§ ¾Õ)<ÜðË8d2u?†–ÿÃë÷ï>?ÚðC{Þju»1„ç¶k !êFß®˜5a°?é5"WûˆÚRX·WNfiÈ©_‡óÁNÈÙИÛâA ·çÓÚXÀš9b†©ÐTpå}ÀWEX¥dä4G`J¼¬Ñ49ú) RAÝê6t~â¿"ì¯(›Î“f†ž‹B¦ÄiŸþ]OšU«òÐ?OuK‹‡˜2«D= e˨WËù‡†cí¡ƒÔé„%ÂÁøtŽl»»mÌM“m™-âÿqIQï³¾mήËÚ!×ÿÓ|s3 endstream endobj 1747 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F10 1169 0 R /F6 539 0 R >> endobj 1742 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1747 0 R >> endobj 1750 0 obj [1748 0 R/XYZ 106.87 686.13] endobj 1751 0 obj [1748 0 R/XYZ 106.87 668.13] endobj 1752 0 obj << /Filter[/FlateDecode] /Length 2135 >> stream xÚ½YmÛ6þ~¿Â¸+P­½¢T h“M7Í!½v·8çC!Û´­F¶ IÎfûñá õj'-ÐöËšÉræ™g†Ü™/|¶›ÙŸW³Ïnõ,i<{ØÎ")’x¶ˆ"üyxù_/A æ ­µw7µ÷ã›ïæ0y÷7oÿýú_¯æÿ{øç³[Ù €¥q<óíâTãð컫EÍ)"ÙS" [5óE„Ò»;ThåÕëò”wcþl†Â×váóæÊÈ{ÄÍá:zûlÆÞûy˜¸/sÄOM^͆>­æ ß–•ù’4$­†‘ºC”‡ìï!L…ÒßV»«LÖX;/ RÏÀŽ"UVÎ2Œ}ó!_åEÞວÿoòe¨bS¡E¯+ÈØ;eUScS{åadoèj\(åýbÖ ­³# m ÈÒGžØ—¬äuyÄ9»s•¡õk’ð˜7û…ݳßßmy†UQx9¹ËT[S!ìG\„­Ô+Q%6²c û¬¨³ôÀ™Ô4²Ã©Ç.¢0ì¦ã1Y–~í)íÐà”øåïö|ÔÎx™nz]Nyaaaa79‚S,…–ìØ›Û7Ï_ݽxݯ”ˆX²#‹ëxE¶ND<= ©…ï&-炱pó+J©za­ŸHoo!öˆˆÐ(¶ŒbT²-lŸŒ32ê7Yµ3, ]o£†kS€mÍæ°sª½ûó‰Ä”5OhC´fK_óbC°*ìÞGR9„¹Õ3ãXøŠÏ½É«gÛ²åÇŒ#&ÖAú nñ¹¶ ~"SEhš¢ [Ò ¢Ð«€ÝÜ´’fm ý[v«£ž¡y_ß*^$©‰PÆ.ÒÃñöÒŽÅnóªn d.Eð§6Ä­™ÁÖËð "{LbI"GuæÃ©È×y3¡.Õ!¼"þ¡„ Ú:ql^%’O:HNC‡^ 2Ý)aV-Ç’‘ +dÒ‡Ç#¨_gÕ¦^Α|ÉìËŸl›HXiL›Æ‘fŸ5Ô"eØj]U»9<ЊÐ~Ýüç(`.øØ6¡ÿ]üýù˜×–ö¤ÀGÓBä•ÕÓ$@üDè¾&ø†<èà€v:×Ù~G‡ÐiyÕw¼ê³nÈ«˜Ì"í’ ËêÅGu"Šz~;˜ìhé'aoDIJ4“Œ ]á(íò0óíËÛ¼˜Ä³†‚D¶XÏ놵îŠf_žw{ !bÓ·¯‰:HÈTßÅâþÇ/_ßÝOÈ2C[ €…ìAB8ãÇï~}Ĭ˜aÞ~‰¥œU3øÖùö‰¦^ØWyÈ9ûªƹb!ÃÔ{}$5õŠ_g5•Mn±EÇ£¾EGŸ Û\q¢éòjÊ ÐÏšAÊ’r wtè@¥ÒßâûX‹4é'‚"Y¨¨Ï²sHNÈÛÀyQ@8ü õ'Å®peº-LóyM;^ºÊÖèÊwØS”›à0—/Ô±‡ƒÑŒºËå÷³ ‘ÆdY›¿_IŒ~»*;`=:ªÔ`(Ôþˆ@*iˆ§«8ò¾§¼ Ù)ëúu;C+UmrÕÀÊZ·DN‡¥½èÁ^¸ªÌ¹^Ä9`ƒIÉXDØQý3IMRÄÎÿTUP(3!èœA—F-PPÞŠŠ¤€…B,È 6ĬÏM¶*¸Ãß®*ÄY[³:ïvœ ‡y€÷oåM³»i½¹G÷EÓlûçu¹1¢¤ô¥ÈW”Hg8f ?[z77Ë9ÍÆŽÕê>,XÌgßòï ,ƒù o†;³Wùì®ì w²i¼P€6Øh«D;£4älÛlb3¹ïRpè¸dŒLð`èÊkœ 5\Ëx g\þ¤-°¯?~—4lŠó ¸©a]Òí 7;eª$@ýÄF;âDóЦ­|Ë`ýÊ‚¶á{…õ*^£\•ïŠx`·¯.ÜW#·á/Q$(ª(ÉiÜx?WÀÝÅ™·2 åDã Äÿx ‡zä¢ä‚‡¦W p©.úîâœXq³=>¤¤¥é€HÉàõä© Š…JúfrÑ8Î.q›{ñr7áO¡Ó”6‚B"î¬Ë–1ÔP 52¾O™¬â5ý¶¸…žîå Ô­|ÞîA4Jâ9× ýDÌ€£Ú¤qeØ„ÌNnG.½­D¿§ cë¢XÕ Âë r"“p™¬râméÎäž46Œð€³oN½½÷€A½¡»Û ÀÑrÞ®ëÇà2ŽÀ¥-pà"“Oa&ª‘Pà*I¸î|ñjë'è ¼CœÛ§ wsÇbÜÝ'®¾'ôodôR‘^,„#-·§)˜¡V‘í½ŽÊæ±Ðnbx+(_¯úåä§_^RÝY¥;Î5§`¨‡`¸ dÿ•ä?X¼¤ô&ẳÆfŸw<@ GxÃø$‰¯vXwàç­kdöúùDË0l¤»=Ù«ÕÍìü–ÇyÙ¥ÖWêÁ@]Ïâ‘eäÝÎHPH(¹{A‹¯¦ÇÍ5À¢íc ˆ;çž–4Êž™‡R݃ÊÇx‚¹Årò3W“+¼“ö²Ü©2¶.€ ­M]Si'‡1>Æ…ìØâÍëwÏï~šT,®> r¸„z]¨þ’º0þãëÂöÿDõèÔÝÑTïhôû²ç˜áIÝM™þ·ð·_{QX¥ endstream endobj 1753 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F11 1186 0 R /F10 1169 0 R >> endobj 1749 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1753 0 R >> endobj 1756 0 obj [1754 0 R/XYZ 160.67 686.13] endobj 1757 0 obj [1754 0 R/XYZ 160.67 536.37] endobj 1758 0 obj [1754 0 R/XYZ 160.67 233.06] endobj 1759 0 obj << /Filter[/FlateDecode] /Length 1510 >> stream xÚÕW[oÛ6~߯0°ÑŠIQ—l–¦I—¡è†Ä{–aP$ÚÑ&K†%7É¿ß9<¤$Ë1’bO{±x9<÷ËçYÀ‚`¶š™ÏÇÙûÅÛ‹p–²4š-–³$aQ8ó¥d ì?üá¥ÉüÏÅÏo/âžD„œ)9 ÌõÙO§¿.ίæðBz ›ûqœxWs{¿}:¿¦§IÿÔçiÊâ™/bs€ï/>~¼žûJ(ïõ;úú>]¾¿:½úŸƒŸs–*C~§«ªù«*oYsbn}°”ÃG²ÔP|‹5͵ˆñ(×\W·=?³G4­ŸAB!à¦dBâ"ÜÏ9{äÇ®ÏN?†ÿK†j$CI¬Dô$nòy”° £§k˜žµÆˆð> endobj 1755 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1760 0 R >> endobj 1763 0 obj [1761 0 R/XYZ 106.87 686.13] endobj 1764 0 obj [1761 0 R/XYZ 106.87 381.67] endobj 1765 0 obj << /Filter[/FlateDecode] /Length 1340 >> stream xÚ­VÛnÜF }ïW¬ÑÕ"ÑDÒ\$ PDZ݉mØÛ‡¢. E;¶…h%CÒÂ1Ð/9¤vg/qƒ¶Oš!9¼‰‡ä$Q4¹›¸ÏÙäÍìÕi:ÉEn&³Û‰T"3“PJüÌÞþd"ŽÅ4LÓ4¸š&iðëû“)°ep}|qùîülúÇì—W§j­ž3‰Üã<'v¶b‡IžŠ,$©£€Ðw7ÁññÍtêD»Ëéû£³ë‘¶Ìø‰¿/På$Œµ0¨‘"wZ¾E¶ ú²hÛ‘ìmËQ2¡ªmïÞG !¹voÅõñÑùùÉÕáZGX†ß‹òžÁÉ=b›øð«\ÿð9?>ëóq»xÇHöÞÖuûg]}øc5ÜÓ‰´Óù5›¸ãïÛ÷ïÞ\]ý¶\oË¡jÇH"‘Ç>ÓWùâõ3º(^ϹÃmw9Ňü˜Ï¹ôÅÆLæ¾#^&ÕžL–›‰”F˜¯ÊcÙÎíèÙ×%òBþ)ÜÔâ'Ïy´™=ßÉçÒÇrÿ9>\C•5 ™8MGwEÕ¼Œ؇ûª§Óøu’‰ ªº^öCW`bþª_Ê˦®>Má`ë'¤èà {G»$ö#]ê9]kù4´¤ç±«KÇ‚8e»DJäÊÏëC]•Å€*T$A°¹Itz·$רçMXÁ¨¦¡Ñ&xǨ{_ô¢WID»Ý¾’8:çî6¶íœ*-2Í2ݲf«ýÃ4L²À–úgûÑp1P\‰ÑB)ÿŸ¢}è“PØaI¥Ýáªâž’‡ç¤•.eQ×–TîxÚGœ¦"‘ì#ö©­âL¨‘}“˜¨¸#Oð9CàÏr`«sË¡5sÛ”•íæO§Ó,  ^è·åçÂvx2ʃ¡èîì°í¢2"]ð›â–§::a1¬ÚX²â8Z´âj¾cŽPÀåh;5{6j$½ÞÛf}/ò\HíyvŠfÎÍ °•&~ä·”” «Z$j#ZjÛ† d%e9‡:˜Ä.2)בIµ7²4Yö…À¨amX‚=J ÉÉÌ- z‘¬·•`t난B°Ð‡®Ëö¡jÀ„Lõ:èX­`²WÛ‚¸üùâœSëQ pt„J¥ßéb±mÁ“ I3áòÀ˜ÂóÕÃPË8¸ñ¯aÐ1æ-Qš– eÛu–‘ÛÂ%ù–ÕŽaŸpMÈEgY‹ENcçt幃Ûds qáît“X$™×M\™Nüø”ñâËóD¥€}‡Î7'BÁË~YÔN“ f$Þ¶PwصÝOS&[wy^›BòÆóºàÚk ì¶x^TýPPÃ}I”Ç{‹.áq_3‚•qÕmü"PþZšn”ÀfåÏmYCÐs.°x]òn\ô°¸l·­8QÂÈ/àiÙÛ¹Ø]`u„ÇMLé¯37EOös±xW‘‘ø±k?Ùæà`wÁàòîé°? ¬Gõ%Æî°³2î]Qþ݆ÍjЉx£@àò 5v o• |¨X9`á„蛤hÞºOÄ/XÎ~§$ ôx5àÊ~ í+!˜.±y¾„´;4•˸€ 7Õ‚²\v=ò·åLÀD7þÊQ æÁz¤‰ƒ‡®eßqà˜#4 <Ám7Èàíñ‚§UÅà…ˆã Ð]åêÅîRÍOeÿ„Ÿ<Ý=…ÉSÚ/ì_]?ì?–Dâÿa.}lFOT=ëÎ —4®}ÆÂ ©L…©`dzë:xDàíîÏûÊo%ûPt2ûæoÌÑ endstream endobj 1766 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F14 1720 0 R /F11 1186 0 R >> endobj 1762 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1766 0 R >> endobj 1769 0 obj [1767 0 R/XYZ 160.67 686.13] endobj 1770 0 obj << /Rect[262.48 508.29 289.94 516.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.8.12.2) >> >> endobj 1771 0 obj [1767 0 R/XYZ 160.67 495] endobj 1772 0 obj [1767 0 R/XYZ 160.67 321.01] endobj 1773 0 obj << /Rect[458.77 190.91 502.61 199] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(target:.DEFAULT) >> >> endobj 1774 0 obj << /Filter[/FlateDecode] /Length 2318 >> stream xڥ˒Û6òž¯Ð!ª2‚ |9—8¶'ñ–×vyƇ­ÕVŠCaFL(RËÇŒ•¯ßn4@‚¤TöÔž4€n ßÝ\ùÌ÷W+ýùmõëí‹k¹JY­nïWIÂ"¹ÚK`þæß÷ýõnÿñâ:öÉY¬|½þú÷WŸnß~^ÑÀKØzlj÷y-bïËû·7t4Žn„ðYÄák Ø«²¬_®7¡4þ#¯wŠÕ ¤,î¸Vp<…㜳4ÔÇÜz¯_o×´'×ï_ývcƒæÇ_Ì÷'º‘tn±$Œ1‹¥Æøi_Wxÿ¼Ip¯ËšÕµ4É…á³¶U;³£&XÛß­7"ñvE£ò®n Õ?¤ô½W-íÈÌá&Ë»"ÏJ:ȺN5W8‘^ÑÑžÂP|*Z¥_¾á’¥Ò}:Ò•aäíT^ê‹É0ô²²œ3= ˜ ¸Ø§ß?~ø×œ Aˆ\¥Ã{uQÖÓZD^Ý78“^SëwÖÝœR jcãã?³¿Ô}Qª913?2›àÑ2‰<⛺¯‡WTHð4Ç&,ŽíKn¾üúæÝç›z>Þçé³$tYw»GþÊ þôTÕöš>Œ»}Öш£*áÆn¯NÊ쮼®Úb§TÜ’µ?ޤO…‰æ(RËrܲ'h}oé’°}÷²gôêŠì-«v4xË (¨…áåÀF½|×åŽ6…ï›ÚŒª^<¢dý‚hQÆŽÍe–(\»!Õ2–Œj¨-®¨Ún˜ä¥‚+™Š•Î¥9Û69m³·ç`47\ÐÙ„èˇºƒg°’Žžöª¢Q6¿ŽNì‚U,L'V¨¸6M!xÚ^5E‡ÒG wFä¸%£$¹x܉ÀEváR<ãàÏÐð+«á‚¥¤3äU‘@ÀûëRÑp_¨&kŒÒ6á]Bš7»„}‹1I:wˆlkYô´•è}ŽYcVPÙñ«Õe}‡ÎP/V u‡šÏðÍ•—ÍS¹ÌŸ3šªñNµyS_b £¨Ho€ÿEMº÷ö‚ÞŠ§œIP`Á!""x¸`ÂÙƒÑjº…ä©ÊùøÄƽ/®Ãxè@:QT€T’x@½†;ƒ2¨à^q¨½ä:à`,­MÂBF­A`Ê£Íd†ú@†dQÏ$ cuª>€W&£º¯ë9²ÐÇo¸úò5õéŽøjšêp_ëTRn ¶"Œ­Çw´:6Jƒ÷ Yž²01ËZ`©ö­H³S_; ÖXZú<ç£-ÇÈB@*?wЈRWk\_wE^X=êg¢‡æ±ñ’'^c%†`‚3úÌÝó‰öi—Ëš78p B^¥ „!õÌŠ…1NÁ]Ö¼¸Ëþ^øŸ6*ê´!ŽI}àæê¡‡Ü€&Ö‡áúÖ«êŽÀK'z<:¡K ·Õ‹)Ñ­ åóª˜D`K]¼ð2°µP[’ãØlÈ»@ Œ˜´ÌØzùnÀÿ3— Ñ¿ÁÕÌuÑ,²(Ýb}ÛC;ÑDý·/×!9x-H¾c6C“è.Ü4CY ª3›'ø›†¤#Rp+ž¢» “)‘¯‹ˆ•Âd‡¸×‡c™ÙpRÜÔI·Ksr%¥UÔlïÜh˜(‰+#C“Àc ¡mô`Ã&Âï\Hr€Ï™üÁÖ·ÂsÝ2õ(+›8‘¢å9¹|SÛ„0B[ZhQ®BK@†bd…<ÖѾ0pRö^Øa»x¨ Â#J|Æ'žštgH§¦Zˆ¹fKËM[ê‡è4ô-²ú-xöÂ&ß(ÌùÑÈ)ÁËvÊ€È!¨]æêÆ@ö 4æ ªÚm×ó<¶y‚„ü"c ÂM¦ +Q0†%c%‡¤JÏË@‹2ÿ›þx$ßÑ"›xì(2LöÙÄ¥ðx#àæá4D¼œ¥ø.ñ˜áÂT«;B¬Ÿ1Òohv¹ÀÔÖ7 LPJac P_ –f\5_h™ôùeâAÊ’oçcu«‰KßsYŒ©á3éÂpµõA_TP†áóñæg EZp ~Ñ‘áqŠNÓá„áËEÈ—ÌÞ µ6¤÷npi…‰SyÖª¥#ƒü+Ž(¥ßãÉ.¤²(ƒp™?œÕºÈ 䞈BSsÀ`”²žºLÉïãH}Uy¯ Ë(¢ªvŠYAÃíXÓ“#ó}L£ÜxSMêmp%GpOǦ o冃íúçÿ;\ª|Ì„¿“…ÜMËej®~9´˜€ ;Æ!øÏ¾ífÑ¡¤ÎuÁ0ZTÊVx>Ÿåê¶ÂÓ‘CÙl¡;EK|\ô6‚óÆ¡OÝÏòª¼oEc ËEd1dT·{Ó|˜eeºl–d]°‚/õt»¢&`gQ`eÕm–¶Ê〉ø™= ì 0Ô¢ÊË~gôÁÆ"ǰ’˜Eð¢;³¦¡óæíõ«/ïoÝN® ‚L§.µÛ>dUjî]™¾"º.WNi)ê¬à×èÎŽ6AÀ.º}Ýw4…Wõ#jÎqrŽ6ÍÄMŽyËIXÔÛjC>[ðyY˜²zŠsn"[44K~M8± XvW…é® sëPÌ’c‰ œÂ7k œ@@ø8ÇRc>mL‰ƒp&¡=¥+ÊŒ©À €MnÖ SJˆG H]1àt.}°2kôYæk¤¸VW”i¥ç¸:‘ÈE¶B ÎÙJ} lCTÊt<­×*Ç’²ÆÚ|Öw&• ÓWª¶êÃæŸU}XñcéQb£Ê=êøéЇ‚uTs]R´´Û4 8ݯ<™Ž¸Zu ~xWä-¡1ýiØüP“1 þ.Ð ]}é·Á·êG£i˜FÞcQ76}ýáR=ij endstream endobj 1775 0 obj [1770 0 R 1773 0 R] endobj 1776 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R /F10 1169 0 R >> endobj 1768 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1776 0 R >> endobj 1779 0 obj [1777 0 R/XYZ 106.87 686.13] endobj 1780 0 obj [1777 0 R/XYZ 106.87 668.13] endobj 1781 0 obj [1777 0 R/XYZ 106.87 338.03] endobj 1782 0 obj << /Rect[105.87 287.26 167.45 296.18] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:file) >> >> endobj 1783 0 obj << /Rect[412.97 275.3 451.58 283.39] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:absname) >> >> endobj 1784 0 obj << /Rect[105.87 263.35 143.57 272.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:absname) >> >> endobj 1785 0 obj << /Filter[/FlateDecode] /Length 2264 >> stream xÚYK“Û¸¾çW¨œ=PUL€ @îæâÍîÆNem—=[®T”GÂŒK¤BR;žªüøô)’óʉØìF¿¾î†±ˆãÅí‚]üxõú»ÈEnW7‹D‹Ì,VI‚«ŸþeB&b¹²ÖF—™ŠÞ,³$ºzûþͯ?^ŠÞ½Çg}Z*ýöwØþ×Õß^ÿ¢{ž*&[ÄÄOÆß/~¾"ÉéBJ‘§ÑFŠLÑJ¨åJJ¥£·¥kŠf³Lâh·LdtB­Žê–&uÏH*#Råå‰o?¼ÿ „i)’Ü“tEsëºv|ì•4Väž™H2¢ü²s+ÛíÜhÑÔ˕ʢºc>Ù™O¦… ¢>üZ|u7åÞ…¥1Ê`¢M]-SW”U˼‹1OmEb.4ü~¹JUmö®¨ÆÌ-(뉷eã6]ù; pbîeÇÏMãŠÎµß{‹Æ½%T’ ›ƒ%¬ˆÙ7keÔX =YÌæ¸^ßîëëbÿŠw¨™%ß¡éÈîcÕdœ‹Dz>¯Y¹×©¥‚a×QUw—.Ñ|´-«Ûp–‰c”Ði4qˆPÁf¯ÖËflb3¡4E‡6Ï´‰R ÎѸ}A.°‘{…›rhüé-kð}×|·s[ÿ¶fN¤'’lNMãèûŽ)ØËusÏ„ÿk® ÄäeüÌ›xå)W>qæ-D{>âWþI9zÝ;BÏ8B&Rhù{Bj# ;¾ 8·îH몭«6÷ãC™c}& )Óô£f“/2¤³ ¼[)i„4œC’ϱß÷ŽI‹¨pÞ^j !&öÑ"DqsÚ»–y–Õ(HŸì >™\¤æ)|Ò¹PÖÝÔû}î¾#ŸRHîÊvÌ7Í{žÆ(Ê'ÂI;ˆUn³/H•Úƒî ­Oû-žkvŸ1ˆu®96®sž¢ðøéí‚ÑwS7}pŽÓJ]–<#-Œ±½¨ÁÉ.ùEº¼gKÌ8‹î¸~À ÆÓÇC/rÿ–Ŧ©Û°žä  ŸGýüÛ?½ûôÙÛ÷¦®g 2N'%À²ø rúî|ª°Ç•R‹¥r RéÝÑnêãУ´×QqÍ!‡ŠrÅk‘’{#:zðÁ±^Ž Ù–Kqpù†.w¦ÌÉTŠ4¦èHò®˜¡HÓ£rw“ ÓØÒ\„øh>´2#ò€“R1Í¥ÂpU>üæP)ûX¼Pæl³'PRÆVè¹”¹DÉÕ•©Á®¿Ÿ­²Z¨ôZ|ô8·qm°ðŒ!Q¡­/޵øn°1òùI ™Ï%„§ÒGb¨†íƒÈŸëÞ h¶!™m“\ÔfHÖ=µu6ŽJLGÂß$/{íq¯l™ÈŽ7 8 T„¼ù²C©D¶­¹|»¢# ’óÍ0öÚ€½­ß;/ª¶kNLTF”xxâa€}Sw“¤rÎ4P’–™„RÞ×ܾ‚iÔѹÞ!l¥@EÓ•› ª‘¦Quø‘:ßü™u8ÅúuQˆ‘é] ìI-œÐµçxôhÙaE€_•OìÚÃÊñ¸¿÷õ$XTß8=‰,É çãI@›8öõ}¹ÊòPrœ¶¨ò┫&­t&â`ûúûH¥7ƒfJ °äAýE?,þ¤ 3$?"}j¢xSÇ)%¼ õKJ¨ËúÕ‡+5Õ-Ť1 ûû‘N÷}¹é~µå¡„(CþìN9³ V>ðåœìQ¶å7we·óxÁ¢ª›CáCIBs_ô~ˆåZ¨mÔbøh ¹%:õ–ƒEˆP Á–höJû¼NèŒyEC¼L¾¹Í‰›0TTÛ‡d§¾Ó)á«–gtЫÆ%È>T‚ ïÎGxY¬,$Õ§SU!¸¹R+\¹Ù²óñÚã(_/'x$µˆÃÁÊÃ3M¨%ÕIŒ¾€^KãmÅ@_ïhh&mp+VLFî?'ÀJ‚,Çwžªæg3¯‹4Iߊþdq\A@^Du…p¤ ßÕ­óЖÅç¾×\ õE7²d˲ÁÀõ’.‰–x^ !ÅèºI‹Doºr;¼êò·Mñž©èvUÁÝ¸Õ U6ïè<1Îw"㦠2’)ÑsÖø,6ê|ÙDÞ¨jÔe•Ô¸À6ebaoÚγhŠª…²éüÇÁ”Rö“LJ·ñ +˜8×ôícêäü¹Ö¦È»ôºøÒì˜/ 5 ¬†KÈ\¯¢`° ÂnNu=?ßó ™¬—Xµ¡ ^í†Ôo6F†%•g—–È}À>t-oÄøïø5ÌX6=ìîËÊ‘¬d…¢ðšÚa8o WZư8AÐÃRÄüêT¹oÞ: núhÜø¿—uR „»ŠßÓqp1š§QŠûVŽÔÉ!V|ub‘}½?uŽ·>EøžÚ\DÞŽ2aB#Wú»%ØmCþ–´®0nk诸iÉ±Ž·îˆ·ܽd^f>«\.‡ý¤’+ì zPNíbüëd _õÓR@À–‡î±`Á©êÌ!Å©ƒÐÉÆ{¦¡‘>¢Mã&îòm[óÕîw謺Ið…«:?kRÛ‰WE¡ÿáï.Ê$ endstream endobj 1786 0 obj [1782 0 R 1783 0 R 1784 0 R] endobj 1787 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F14 1720 0 R /F8 643 0 R /F10 1169 0 R /F11 1186 0 R >> endobj 1778 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1787 0 R >> endobj 1790 0 obj [1788 0 R/XYZ 160.67 686.13] endobj 1791 0 obj << /Rect[179.95 412.08 209.9 420.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.20) >> >> endobj 1792 0 obj << /Rect[284.06 330.17 377.39 341.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:OMakeFlags) >> >> endobj 1793 0 obj << /Filter[/FlateDecode] /Length 1130 >> stream xÚ¥VKÛ6¾÷Wh2Ñzí!IwÛmRlôPõÀ•éµ°z’ gÿ}g8”%{½Ùm{ÒçñÍ7òB†Þg??{ïVËkée,‹½ÕÆKSK/‚¥°þé/? ùâïÕ¯Ëëä¨ÃeÄ”ðB{þþ—·¬®npEø)[I’ú7 žø_~»úLWÓãÕ€sÅRx€'v ¬MݾYŠK_/oñ‚ÇC–q/ˆ"–)«cŠmK*¯~°Sá‚eVã{:nk}oPTÖ.I¹ß6$iú|iʯ$õý`ê|a†ô$¹5úÎýøW¯üY6‚?ý YÔy~KIšj„,Q(EVés[›¡¬M¿¤ˆýÌn»§E­qõ€ åÊ~‹Râ[= »;ãä~èÊæ®w*-mÞ.žú†;Ý÷fMrU¦ÓUõpª?l Õ ’,“ó`ж®u³î eC_ÔAúݾ2)¥ÿ©q{ôBH1!¸}Öíx»íõt2¸“~GŽåæáøRMÒäzÊ}vŽÂ…X2ºF ´ 0¬ë]e^ã*Á%Õ<T;ú‡gûÞlö?lMC»;ÝõÐL´MG`ÿ®ï19æqÚý°ÛÛF”®—¤_µö¡öž–tÓum‡$2ž®À{©²© ¸_膮‚·î êÓà  ÷Ä1wŒÐ>Š˜HR»ÊÖYÄšÂU€g0>Ô<<«‡gW+˜)^¦¶ÉD³T–˜`<œëˆÇÌ\'_0b›Hh$&²Ã"ä<&•09#ê—³pxÆxìå°%S²#2&å³É YtšÄR$VUdùì¸q(Ç£V”B.qŒÎÙáˆzËfŽçÀ‘ÝP‡ì§?A SDÿo<’«Ë-̤%ðÈòH,Ó°ä7ˆ%z‚X„J/U%á,zIUÔ9d…r38ª/Zœ‰oÖ€/Æ„/5Ç,h58ŽÚ±E€¯í*´Tôµ­Š'm+‰„Åñ éR7æ@N@ì^,äô0L=Û½bìÞqj;å¤Ô`F¤1S”Hds]iëçIQ,Ž\R6û¦8ëP‚»üÄÖ¹‘ »¶¢ ˜Z°>³6³¬w»ªÄÄ>úÙ ¡á³yÕ{3y{Ù<[S$ùTégÆ­~vκF šøùû-œSxñ¥ß4ê¹ì{D>Àl®« |2™¼ÛèxJ?kßu†êU¹!íT€Pˆq:ø{$]Q7FûÎ0ˆïþ*Ûò endstream endobj 1794 0 obj [1791 0 R 1792 0 R] endobj 1795 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F6 539 0 R >> endobj 1789 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1795 0 R >> endobj 1798 0 obj [1796 0 R/XYZ 106.87 686.13] endobj 1799 0 obj [1796 0 R/XYZ 106.87 668.13] endobj 1800 0 obj [1796 0 R/XYZ 106.87 488.21] endobj 1801 0 obj [1796 0 R/XYZ 106.87 464.53] endobj 1802 0 obj [1796 0 R/XYZ 106.87 464.53] endobj 1803 0 obj [1796 0 R/XYZ 106.87 436.64] endobj 1804 0 obj [1796 0 R/XYZ 106.87 436.64] endobj 1805 0 obj [1796 0 R/XYZ 106.87 274.02] endobj 1806 0 obj [1796 0 R/XYZ 106.87 274.02] endobj 1807 0 obj << /Rect[288.39 250.68 303.12 259.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.7) >> >> endobj 1808 0 obj [1796 0 R/XYZ 106.87 223.33] endobj 1809 0 obj [1796 0 R/XYZ 106.87 223.33] endobj 1810 0 obj [1796 0 R/XYZ 106.87 157.91] endobj 1811 0 obj [1796 0 R/XYZ 106.87 157.91] endobj 1812 0 obj [1796 0 R/XYZ 106.87 130.58] endobj 1813 0 obj [1796 0 R/XYZ 106.87 130.58] endobj 1814 0 obj << /Filter[/FlateDecode] /Length 1434 >> stream xÚ¥WMsÛ6½÷WðÐ8 Q⃠y”¥IcYKIš);Z¢mL)RCRV<Óß]”iJq:í‰`ß¾}» y! CïÎ3Ÿ_½³å/o#‡T)oyë IåL(š¤ÞòÍäü>ßvEã"–$õÿ\þfH'x ô‚(¤,1{Ïò¶°K}ÓäÍ#n÷¦Kg…I*äÀ —åÌœL)óƸ$g;]vºÂk"òà+FòFç7eÑ/S^JÓ!b®b s×|6ù0í7‡Tz{/ˆ©Ý oã%‚*~˜—Þ..º›>M¯ïç—Öiy0© xn¶ø‰ EÓê! Aê[ûÏò¿|“‚¾Œ;¨²,–o.ÞŸEœÊÈ[Þ½R„d­›bÕÕ@p yJö÷Eã~éÌX;Ø·Ó¶Ë«uÞ¬í¬9’ñ(Fzͤ)Z½ÌA >Lð‚Îà,ˆM#nlºÝöµuרÅÁº¸Íweg'~$I^îÌoœè¿ö€¢6º*Öv[ÞÚïm]–5ÚÜ·ÔòÀ žTaŒ†@Ƴe¾²D=S HÄætr8C,Üi#¢áÉŠÄí)*Äú ›ºÚà8!ÝТ•-ò£B¢Õ¶èì #Ÿ+²kÝ™Umnër£}XÈ+K<ƒäL“!óùM[—»Î¾Í»{í´F2ÿµåº?›½n‹#B3@B%ÿ7„Îçœ|ÖÕÚE lpé‚ϹõÜé¶CaáF«¿ÇvL3œªÔÝúîÃôË×ó××ÓËå׋éu–-æo—Ÿ'×Ó,›]~u}‘e¨æ?§£¸+ IÊ’T­ì&”«¡Ù‹ùùäâëlrþîýåô¿ØåP TeÞ  †Úú¿¶aä @ãÃ0î¶NýÕz”CßI›][¬G‘.¾ßôÿ‡ö ‹È~Võf«Ë"èôæ8¹%Ñ.ÉuNBŽStÙ{´Ú5M—Îúôì&ð7ø»É13íäÆpÙ[­Š¶íËÆÍ`[³«*]ÝCÎEŠÊzYo ˜>T²ˆÁƒ+Ú/g)ÊåS=¸òÓŠbªÈòݘÍDQÖ7… dŠd·irô -ã¦òàr_½µ)º°Ðn­“+}ûˆN˜E[Éap 0ãíè¶nž6\,¢àtµ*wëbŒ(JzŠNeMJ…èÜÕQHì­öwë™~0ÂGÕî Ê‘ _Høãs³o¤Jð¼^à "D1 7d>´' eǪ ÚÙ“˜`2L0o’–óÊbĆ˜Ø* }˜=+ )qXÕk+±¢,6Nî_ý}Ô@8M¸ã‚)„FÑË4÷éøsæ™Ôbª¡…ïŠ7 ºÑbùåjzô²P4í»À¶$è`µûõ%)$ã ]¾‡n 1è:ˆæ®9Ò“ üYÊÇžÞO´×篙ÔD8e!¹BKuÛjh¤®Â“’UŠ% MA’Š*é ~¬ô·–= Ì&•ˆàáY–v`ΘÑ–[9°ù šÍ*ƒw\@ÿƾþÍ¡1ÅÖgÀ£Ìöû;¶èq¹¤²çú¬8*Ú€Œ‘ñ‡XʘÌëÎÊvg èáKö¸ªŽ/A™½6µF³Å'> endobj 1797 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1816 0 R >> endobj 1819 0 obj [1817 0 R/XYZ 160.67 686.13] endobj 1820 0 obj [1817 0 R/XYZ 160.67 668.13] endobj 1821 0 obj [1817 0 R/XYZ 160.67 668.13] endobj 1822 0 obj [1817 0 R/XYZ 160.67 637.42] endobj 1823 0 obj [1817 0 R/XYZ 160.67 637.42] endobj 1824 0 obj [1817 0 R/XYZ 160.67 605.24] endobj 1825 0 obj [1817 0 R/XYZ 160.67 605.24] endobj 1826 0 obj [1817 0 R/XYZ 160.67 575.56] endobj 1827 0 obj [1817 0 R/XYZ 160.67 575.56] endobj 1828 0 obj [1817 0 R/XYZ 160.67 541.73] endobj 1829 0 obj [1817 0 R/XYZ 160.67 541.73] endobj 1830 0 obj [1817 0 R/XYZ 160.67 509.83] endobj 1831 0 obj [1817 0 R/XYZ 160.67 509.83] endobj 1832 0 obj [1817 0 R/XYZ 160.67 477.93] endobj 1833 0 obj [1817 0 R/XYZ 160.67 477.93] endobj 1834 0 obj [1817 0 R/XYZ 160.67 388.25] endobj 1835 0 obj [1817 0 R/XYZ 160.67 388.25] endobj 1836 0 obj [1817 0 R/XYZ 160.67 243.96] endobj 1837 0 obj [1817 0 R/XYZ 160.67 243.96] endobj 1838 0 obj [1817 0 R/XYZ 160.67 185.14] endobj 1839 0 obj << /Filter[/FlateDecode] /Length 1677 >> stream xÚWmoÛF þ¾_aû ÕUº½ X¤IÚ y)bwC± ƒbŸc¡²dHr²ì×<ÞY²”¹Ã>éÌã‘Ïñȇô$`A0yœ˜ÏÇÉéüÝ…œ¤,&óÕ$IX$'¾,ßg¿{a §ÌywïuÂ4aq: Ìþ‡O'ŸççwS8½”Mý8N¼Ó“Ù9J„wuyzwr7M¸÷ÍLÎçÆa4t…,áÆàíÌ)LNž'€ £ñÉ~Æ,Þÿ.&3°×Z+¿žßÍ.oozw½H° ´ÈçkM«íÔ牧ë¬ÍËG’5/M«7¸–^­ 5š½@*X»×'SB\.oÎGîcÆÕ¡{îm²Å”GÞ:/­ «Aƒ Õ‹vWë·I³GF“î)„Â0Å\$ÑÐ#Xê.üvx:b{Æf‹^‡‡#ÊýaÑ.ŽÇ!䊩Ôùt;›MÊ‹Lβ}¬B½»¹=;¿9¹>Í–°:ߥb&£øeÉ:64|áÕc^Ò²´@¥W­HÒ:­]£kÚÒéÅ®K ½Æ¶®Lz-tÓ|e’2Ûнr]ÅR1D¹®\ —y éRÕ/6©Wk„T"•ÿ)ç1â‡Ï—gC rŽÞ^gß0«mŽ÷}‘B¾üŽO%X¨Èè4U° Øùx>ŸªL²8>ðEÞ¢Úl²réTfQìµYý¨[ÚmÚâ·ö•TÞòU…ÑŠD+Ûl S„±òòî_Îçý–¾¹„Oü0d)a~Bí ÎÑ,éÆÏy»$˪*Š 5Ÿ÷‰dÛ¤ô£2! H2)¯j“}ƒŠKïÃÅÕÉÇÙÏ!þR`¾¢ÅCV³Q¹ûa„|.˜ *\åÐç,r•9?¹{íDÚ%@nŸw©ï¹ŠKw÷qÅ«ˆ)W„ÇqʘѪ{!á(&§_.¯Îø .j´”ÄÞÂSTw×\zRklöåúò²ðë\ ¤${É7Ž^à¶ ¤?ÉÖØïˆòiª"è yöPÀ³Ê4€–´ÒuCë¶ÂoHI„ 4)¢0k‡|í2‘ý줌ÒÚaöw-bá‚—fyYçkgôyØåÅ’–÷„u7PåÙ£Õ4Ì*oh{ Ň-°ÅìàIê9k ¤êÑÈm¨¯KëHÎT!5÷!V4"L ÍýÊZÊÀrˆ]€pmò“ƒÍͶE'HŸaâ=cæ›Ö²WÃeÜÑ6Öì劄/x…jgÏçÍšÄ/üfË%„EÞæU™|Ð([3æhG|þdª·´ùbfG?™í]œ½ÛÙ.óÕ m·kW—ûX`îêqÿ2>©ÌBÉR 3 QÔL(¥”}¢” %pi‡ Tžñ ,-IÌAF° ó v{Õ®¥MÊ5Ôî@–-0†´&³µh‰¹4@âC“1î*ûÈg[;:ªÍè³O]Ó*«×‚C{ûÞxLSÈ™>™ŠÁýDýT‡ˆ¸iš=@z±®HåI\Ãßy¡LþŒ÷6T PÚ7´~ÿž¾?Þ’ÌýtœrŒ1{ ôvAp”T%|ÓÔMÙ§·³ñ˜«°!qü¶Ö-L‘š°®ÛÌLUiì[C[ͺڙPÂνm> endobj 1818 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1840 0 R >> endobj 1843 0 obj [1841 0 R/XYZ 106.87 686.13] endobj 1844 0 obj [1841 0 R/XYZ 106.87 668.13] endobj 1845 0 obj [1841 0 R/XYZ 106.87 651.02] endobj 1846 0 obj [1841 0 R/XYZ 106.87 556.95] endobj 1847 0 obj [1841 0 R/XYZ 106.87 534.65] endobj 1848 0 obj [1841 0 R/XYZ 106.87 430.94] endobj 1849 0 obj [1841 0 R/XYZ 106.87 410.97] endobj 1850 0 obj [1841 0 R/XYZ 106.87 266.69] endobj 1851 0 obj [1841 0 R/XYZ 106.87 246.99] endobj 1852 0 obj << /Filter[/FlateDecode] /Length 914 >> stream xÚí–KÓ0Çï|Š8$R3¿$í²E U+A¬XÙÖ]Šº ´)»|{ìØy§/7.uœŒÇ3ãÿÏS'€ pî|xíŒfcáDqg¶t…;>!z˜½úìF€Áó…îõôõ›Ë§¾Qw4^_ 'zBÜñ‡ÉåìÍtò~`æÃÉ+cu9ÌÞyX¸Óký»ã멞~ô¾ÌÞ^Œiµ+‡N¿;W³<6æ «Ç„¸ y>B˜ºIšÕ—…¥scŽ"$_õü67ö™Z%o=ýÀÜfxŸmVÉ}î1“owWëäËz&>â@‰ãc&ÄÙWilª€pTØdmÔu(‚ÙÏË]2ÏVib ›Èû8“[3‰Í0J=‡nº–qbªþÓcÌ×; y>‰€ê<0‘;{!qÓZ‡‘+Ÿâ‡ïk9hÉpn£¨l¯·ºh­ 9ÕÆ\>}“ÅÖøÏt|˜¸™ªƒzÀî¶V·j»HN‘t¶ÙɶU³ÛïJf˜RWíÑ©,ÚôW¹^§æØÓÍzÑßÇ‚gã.ÒÐeVi´ T’Í‹Ò ™bÖ+ !)%­¤å]¼>(j1¬Èר]£ÉWâsŽö™ 3| (:…2ÛF£Ê  ƒ!³‡³ÔbÖ¹‹U¦ï˜_æMº´ÖúÝ£þIÍUTR²µ˜Pµ%5˜„{1鈀•àjÛúßuµ&]‘~VZþiXKŸÈè¹\”a²ƒþ×}À¡øC`Ž!~„¨PâB,.6ñX˜>SŸàü’±EÐÖMT €&9 n¡éY_¬S¥–É\v«‡ôõz:塞Ò'd!îª[d©õ5¬æiò­¶ˆ–¤¬ ªâÍýîA&š™l{´—h¦Ê^’;\%­-—©æî£®e¾bnº×¢ÛãP¨áS;õP_~æÛªHP)Êþÿè€ÀE­nz¼Ñ–·œ5h{Qªk«‘C`ÚûÐhè¥9î¸{WŽw]ƒO ƒJ˜¬Eªš o=+°¸ÐgR¿õ¨´Vw¸¹óͿڹ²6a”Ûïšr…(-‰¦–h%¬C݆L÷l ´VáßñÌŽólÖfûÌ¿€&ÉÙDßWJöbµ=•l^#›fÿÉÖd£¿&›÷“mz^¦ÛŸÉ×a¼OؾðwÔð®Æô³ßX×[ endstream endobj 1853 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 1842 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1853 0 R >> endobj 1856 0 obj [1854 0 R/XYZ 160.67 686.13] endobj 1857 0 obj [1854 0 R/XYZ 160.67 668.13] endobj 1858 0 obj [1854 0 R/XYZ 160.67 651.73] endobj 1859 0 obj [1854 0 R/XYZ 160.67 222.04] endobj 1860 0 obj [1854 0 R/XYZ 160.67 201.54] endobj 1861 0 obj [1854 0 R/XYZ 160.67 201.54] endobj 1862 0 obj << /Filter[/FlateDecode] /Length 1720 >> stream xÚµXKoÛF¾÷WèÐ…škrÉå£I Ø®º’ qPÐm H•¤ûßwfg–\’rÚK/â>fggf¿yiá Ï[<.ôçÍâbuz.R‘F‹ÕÃ"ID.Ü  Ìÿâø^´üºúóô:îiü4qºðôþåçVW—pD:©Xºqœ8ç·W¸8oo.>ž\&ÒùŒlW+}¡Zø¾H•ucä‹DjŽ©B-]ß—Ê)ìSÉ ‚— -ÜÄtèç;¤u• Ü?ÁrrùÅŒ‚¯wKþJŸoYyÈ5o_‰(]¸,°Ê}âÔ·]STšÔ#22L.Oø¾à8gÛ¬®ôEÃñTĉ>¾Ú2Ñ ÐÄ!›•·Y€œžÙ}8T뮨«¥ªÔiò}“·yµ”‘Óµ´–Á'òœu]m ¤ÌJZ¸ÏÚ|CC}¾LzQ/]™8u™g¼ñm©”ƒÚÀ«& èõ2 œºÑ¦p+Gf{Êvûr¦T Ïg±ûGR8Ìÿ> T8Ëøîï–ñÅ<ÏR1+yÆ…#ÌÞß®>¸ê ÇOEH*çÅÈå%1ù‹Ìòˆ´×oÏßÜÙ/Lwúû§›w­þä{ÅŠ®1v{êpq¦+óYÂ'@ˆÎºðx ÿD‚xÃÕw #)[í[" nœ·(Yq›£â¡sRÜ)kÓ΀8/Úyì‘Ã_\½_M…†¶À‹¡?š)¾iÜ×P4ýé#?˜ endstream endobj 1863 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R >> endobj 1855 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1863 0 R >> endobj 1866 0 obj [1864 0 R/XYZ 106.87 686.13] endobj 1867 0 obj [1864 0 R/XYZ 106.87 245.95] endobj 1868 0 obj [1864 0 R/XYZ 106.87 225.45] endobj 1869 0 obj << /Filter[/FlateDecode] /Length 1506 >> stream xÚXÛnÛ8}߯0 ?H…͈© ûÐKRdÄ‹­‹bQu Ŧ²dHr.ûõ;Ë$KŠ 4/"9CrxfæÌ83xÞì~¦>Ÿfï×Wá,&q0[ïf>'Q0[ú>~Ö¿91aÄ]†aèܬ>]X¸ ãÎûÕêæòÝ-N|çêËí‡õõêöóBÏßÝ~ÔZV·ë¿]:«\`ÎÕÍ §_Ýïë?/®xw+‹HͧûC.Fu[vež—ˆÓ“²Tk*Y×ê=¨²• ab±P[‡`…>‰}ÆÕõÍå,y Œ‡ïËÒ»ÜØP¨‡±8$a¤_¦õB1gK@@Vû9#­Êrx1$ˆx1Üßúø.­Îo "…¥/l‰Ó 6È”r °ÀúÈ‘ÅVlT·}æÅÂF1ÊwÝCŒ}F|ûÒÕçõ?P^úÀ8‰l}¾›LÄxÌ@;&^عn)wþÀpæ‰~;Õ7'îB¯|Í Ÿ™1ÀoF_ŠìÙ ØÄ*Hõ/žH@FÖ;H£Vkºd¡gG•¼?æi¥''qÒ™¡^*¥N¡œáæ¶û \;Žð€¬I\bØ£„Å}¿(G§úÓçL¡É —g<21ÇÛÑ.­G¨‰€0›isºÐÞœ[B††Œx6u¡w*rñv}'’=#êãöÚ¤.‹¦©[Ám.7ÈiOXw¤,†æG‘6ç’$qF9É;y ÆZDÝv÷Üö­Ì³}€lyñT †¢å–¹wî°¾Oôkm‰…êYëƒp¤)¾•4Ø1JBÞ§½»bM=UPÌcÛÛ‘m>¡61˜Xææ[U)úà§\Q LéAù‰ãp¡ó5ÖÆT4 Àl Îo•‰°àg¬£3ÞÒÊç—ÿ.€IHÚQÍDÿ9ä­¹ã¥$9Ù3gsJÊ_c$ˆ.ý¬'ðÏ„§>ý¥Å„†ÁV¢Èkl<î<¤õ£Ê #+¬òYÚH­(–•Q9Öšðn%Ù•Õ~ìê1中 Ò›³MZK-4LJuw%T·Ù+âåöE‹–=Ù+g°á¢=ƒ½r†!µSã¶r—óæõÓ¶£ á¾~~Ô‘t¿îUk\/¼WX†§!ñ-»ÊáqÇV:ƒ"lt‡gø fëœéG6< è€Ó^ä)»t{8`ÝcVë“f{aÈÚŠhÐLŽžÁ mñCìÆ÷Cä·ªçPo-\‘[½¤LÃA%›cU´Ëj5m‘×è<µ¨z">]•=þÙŒ µåÙ ¸i*³CüAp.³'Z«®çà‘múy¶M?®vMÿïåÁdcG¡Ÿo}7ù¿W_»µítpù4 ÁÉþš™*Îö7Ñiï4 5#]kµ RyþF0”`òíß$¹ ßqê¾™NÆÀÕäE¢£˜Ú"hj¹PM0T”Îq·Ëž5öŒ¹á, üÚ͘UææËµú€˜™ÓÛÿðní¿B꥿¯Wס…PŽ<è7¹NH£:2KÌÆW©µõÚ&Oëš&ΣjZùÜiOH º@pM=êœ;c’¨wY‘æù+O4ÂîÐËõoÿK‚| endstream endobj 1870 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 1865 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1870 0 R >> endobj 1873 0 obj [1871 0 R/XYZ 160.67 686.13] endobj 1874 0 obj [1871 0 R/XYZ 160.67 439.42] endobj 1875 0 obj [1871 0 R/XYZ 160.67 421.26] endobj 1876 0 obj << /Rect[362.71 364.04 441.95 375.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(obj:Exception) >> >> endobj 1877 0 obj [1871 0 R/XYZ 160.67 315.89] endobj 1878 0 obj [1871 0 R/XYZ 160.67 297.72] endobj 1879 0 obj [1871 0 R/XYZ 160.67 206.52] endobj 1880 0 obj [1871 0 R/XYZ 160.67 186.14] endobj 1881 0 obj << /Filter[/FlateDecode] /Length 2135 >> stream xÚXKܸ¾çWô!5°Í•øÐ# ؉õ"H{€$Èä éæÌhW-9’ڞɯO=H‰zt;ØK7EQEVÕWU_q‹8Þ=íèïO»·w߿׻Béîîq—ç"Õ»ƒR"‡ç?þ+Jâ|ÿŸk’"Y±‹éý~xó·»w÷ð‰Œ ±?dY½}óéΨèÏÞ~|óqŸËèŸ,fÚêä°‹ÙdF3 ìîÙòª|\%cQ·×н.…$…Й{ýØvgØ5£ªÇÿ$ºôöÄ3ðާìËÑ~ª¶áùç²9ÕUó7y½¯º~ø^2à0î“Ïí{ø¦wâ~1¬{0F¨tKðØîЇ‡ö´:¹6"ñŠ•esÙ/{££²¾”ƒ= ü| ™„?<îÏ5-&}4 z©‡žT4)£’ýòÕ¡­ÝA¾¬ì (Qîå×jxn/ƒÛ¨¬z°›Û q'òÆš¤@¹7ÎT Fš‹" Õ™›7+œyã-óæRĹwwÕ”u½mÜ4FÍŒ rÑ^Æ—§Àû<`gÃຑ¤YrÍN…ˆý»Ê©ÑÙáÒ5ãN=ë/ôJ±þ zޜϾc¯'Zzétåœn§ã\ûxÏRMás ‰©_3â'Äy‰r:°ë8ÙD?Ùã°¶¤ï§ö᧪Ìôš¢Mm]j¡¼Qåp|^e•dþ™Žu Aç;³çq`_ÊsE®¹&µp¶íN¶ƒÀ×2þNHÖ"´W™¨ù­ã€Ò0ˆƒs¬Dä"/f"Fj\Ü÷÷Ñ—ûýRd¦„íÄÙ@Ç”4'•+ô¾ÌŽ`ú ÉOé¶ŸâXdú†ŸrDakW:±UÓest{¶ËCN³­Ù‰–ê%,§è¦LN•Hw˜ÕUpÖ©‚ýW¾Ñ…^côé†EÔ NñÒ*6¸Ž}Â/\²åIÿáÐ],j]ߕʣ# d €$Ðô‚™%aiæÑ¨^š¡›®×YÅhÌ6јÃWI€íº‘‰Ø‡ò'pó_AV÷µêI…\ù²ª£Æ¾¬²Oöÿ–Ûól‰4<¸SŒÑW'{Ôd nÁ´oN¬À7"B*³ª±RiJpøn…^HÑS8\[-RŸÉÛn‰ò›æªë÷iÏŸk;Pƒ3õ—ã<ûx:´«ƒñ%hËÄU2°N¬D6cÈ ymW(P›+ŒÇLÄöÓ`¢‰‚ÐY`¢˜@EnZDȺ¼n3çëhOåfâ5íâ'ªÆàQ̸ùùÀ(’ôÿc˜#ø·é;·D\”uÃ܉TBËköÎ'˜þ‰0Ž žÊžåoòIP>Æ$(Í–?÷‘ŠºòUд$÷½²4¾œñ¥‘íxÆJH æ­çL©ÿíd¥…8£&¤9,å)Èe¢P.Qà©p—5ÛâÝ5½fçl1v½²¸J)„ù¬% µ:6ü2$PšØ¼JˆÎƒ¦ÕÄëì #én1+Ïð‚VüÿLôn䫸 æ¨SåõÙ[{<êÒÚ¾ ?^š£¯&)/'æu07ò¬ZFmm˜@*J²± 6MùØ4†]É?ú¸[~(©¬½:wMÜÊ£W)4@€ÞZ„âW¬‚uøÛ}7 45mw.k‡p®›¼’j§·‚QB”ã†=H1Õlû] öLe¤Hù@W}h€œåÖïôÄÈéi^o`…2[±6ão'̼+3NøoÐ*.JMV¿<=S6F+qÇï¿>·µ†¿«êšGSb€‡/(Èvމõ¶~åùÏ]å2¾+È« ËØŸ¶ë¨DÝ9CÒ.Ÿ,Â.K®ù˜:õ;¡Œù±µ³H,›U¨4Ƕã–ÇÆK¥¶±^؉¥”@É: ç¥,Æòè¹b ùÈš[)Ì/¹"ck"¬Ï¶©_}f/Æ¥[ÁÎK° ),{ÇúròÕ¡jeÈ[æFËßÌŽÒX6eÇÂeGûR ·“#p‘H—,ªá,x²Ü놩Ñ5ððn–?4Ã/ÍŠ:sT5lö©¬YQ!a9CAzµ¾MQc»|.¶· [ùÀ 9™ä€žõ©I*…™5 ¿¾ç“’Þ¿CKü~}%/jø†ÞAnÞÐ[Mµ2Ð;†€*¦”Ñ'ù0ïƒú‰’ L”ÝÓål›1Ä9öwG|~æo)céÔQ1&`îØ(¾~i›Ãm×rª³–Ý‘¤ÞÃ×µfœ–ÂÜîý5û«6ÀLd>B8‰†ŽPK[Wlð¦,ó®:ÙG¾SB°öö? ¼kòžï§¡óü{…tÿÉ íŸüä/‚|2åºe‘LÅhò¾Î ÚÞ]í'’Óø æókxÍ®áË—ž¿­Üí3¯Å“n$Ã_Tdù‚ƒ/]ç€DI£/(îßcôP¦¢«­;ºò—¶0xlëšë·þxÿäñÆWG^j?}¹4^€ð¥áì{$æ“úî&ì‘÷ ¨ƒðj¼ê%R¨ ÝpÝÙ’n/à!Иá÷«ÿ‹Ž£Â endstream endobj 1882 0 obj [1876 0 R] endobj 1883 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 1872 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1883 0 R >> endobj 1886 0 obj [1884 0 R/XYZ 106.87 686.13] endobj 1887 0 obj [1884 0 R/XYZ 106.87 547.85] endobj 1888 0 obj [1884 0 R/XYZ 106.87 527.66] endobj 1889 0 obj [1884 0 R/XYZ 106.87 367.34] endobj 1890 0 obj [1884 0 R/XYZ 106.87 344.83] endobj 1891 0 obj << /Filter[/FlateDecode] /Length 1278 >> stream xÚVKsÛF ¾÷WðÐ95×ä’ËGfrðK®3®”©•©:U”¼r8¥H…\Ùé¿/°XR|X™žö`ñúXó<ëÅÒ˽u½¼œÅVÊÒÈZî¬ dId¹A€Ëòö/;eœ9nÇöãâþáæÂ·Ð¾^,ï®æxìÙ—ùÍòa1º óÕü–¨nóåïíÅ#^p{ö¸ÀãÎßËO—³ðô+OX”XžþÑ÷RzOºw7ðbƒ^<Ö7@•ïWðÐþym—•½Àý³Üå¥|¦ójí¬”eù廾ÏR¡ÙWDñ‘–Œ– -[ÍâõÉå÷CU«±Ú.÷Y„ZEŒ“VŠ\7´fÛ­<¨lSH:«Š±#GB8Cà ˜jÞ™“v…ÊF¤w¶?ñ¥úCØøö®*Š ¾¡{5åL@y¢ÈžŸÚ©©o1‡x‹jwPÉk}º­ö‡¼0B«ƒq/ìæAÄO:õ,tÉ-Œâqß/{"RTt!©qÌSÒáöîúËýXIž²06-¨»ÈM`ꦜy¼Ô^™¥¿  !n=nfW÷OÄü‹)SäÃs•é<˜ƒ`˜œÀÌ ˜_¤ú?(Áâ¤E±f2Æbu¼FÏèçq€_²c¡ÎÊ`Úc± H‹@:MÈÌ—ãvâf‚fHo ohg}#B;+Žx)¡®³þk‡o ØÕÕ~$‚pš´8EÀM²8† öÖ&1tß0 ´¡:ûz àUöRɆr½*%ÝkdcÃÑðÅBP™ŽT¿[Ñͤ6P­~á<Éž&v¡(̾!ÀxA™¨÷X:¼ÈÎ §üŽ}Ok‰<ˆ\ë,o°àé»­Ý'CW¢”añĤ½ÕªÜyKÏ\ð~YÅc^ÒJ¿Àf\!‡ýˆ¬î“*´‘|çvV'Újá·Vó¶`"G#·Ui~î;z Û¶–ÔRë²mþ™¹¥Ì0Ö²h˜™b7z$÷PföfíŠiúA àAÒkÀc,‚kÓ"Óx÷[R´¿`ˆƒôÄ9ç¢88µa5†gÌZp⸄²6úGI?dtײ­t 3Sà@ê!´œA-òƹF.®²ðÆ7/Á{=,EÛùàóÕò×I œš÷wš/ý8ÊcNm _rE?k€ð^öbBðŸÎ&®ÇIw p$¦¯/7˜èX7/M­O“Y5M˜´É §•7@${§„¦ƒ6¶¢ªý±›³›C‘Ÿ¦nôÌÓÝçµsÑ]нÐÏæUûÐêØŽç=ͨÛUø?u–©¾í3ÌÅé)jfœ[l’ %ëÃMëÄJðâôpjk{~õÛݹ¶lš•é—?ýȈi endstream endobj 1892 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 1885 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1892 0 R >> endobj 1895 0 obj [1893 0 R/XYZ 160.67 686.13] endobj 1896 0 obj [1893 0 R/XYZ 160.67 668.13] endobj 1897 0 obj [1893 0 R/XYZ 160.67 651.72] endobj 1898 0 obj [1893 0 R/XYZ 160.67 566.01] endobj 1899 0 obj [1893 0 R/XYZ 160.67 547.54] endobj 1900 0 obj [1893 0 R/XYZ 160.67 473.78] endobj 1901 0 obj [1893 0 R/XYZ 160.67 452.99] endobj 1902 0 obj << /Filter[/FlateDecode] /Length 1316 >> stream xÚ½WÛnã6}ïWè‘"F¤nTß×Ù¸Í&…íEÔEÀØT,D’ìÀ¿$‡²d9ñ&À¢O‘ÃòðÌEއ=ÏyvÌðŹš_^N‚“È™§c8 ×÷1Sßü‹ñÿÍÿ¼¼Ž:$a8NϬn†ÏÇÓÚBQ‚n3t5œõŒn'WÓátÀ(zÐfœñÜ8 Bpv‚XhÐ…¸–̶à‰­4ÕZnóÈOÊCKYØ,¢}YœAHežK}òWÛ… ŒB&^ '@ÞòvA#ÚÇÜŒéÍ_ã‡ÇÑíp6ϧ÷÷ó‹®\’4±ö!‹ß¦ÓñÝüqtw=ùrÎfüi›ßfª‘û%§¼½ o¿G7“»ñ¯1©7;Í&êUºUt*Ò&вØÐ×lYÊJ¦–2+ix²Ün ^ÕÜÖNE„,…-{½ ·0ihλU«qñR‘¬ž 뺲Î7‚'±{®ò“&vuî]›¨ Öt&8“&††t7¹X.@“¨w³I¨’,èÛص×fŠtÔ©jbµ›¨Óòš·ÍXà0¤ª>ÛxöqLºñ|(äýÔÅp“™†‹ÅÕb1:鎽Cæ2oÅâÎ[±Hg-0íýU/ðr+UΫµÉºGô-÷°ý5ËsØÒæ5½”E{¯²6-àôøÄMf{±VÛ#ú›Î›¬sx6ÑmNª¶OL{ØÛ¥è41ýŸ×tl \^>X®æ¢Ä<Š.> endobj 1894 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1903 0 R >> endobj 1906 0 obj [1904 0 R/XYZ 106.87 686.13] endobj 1907 0 obj [1904 0 R/XYZ 106.87 668.13] endobj 1908 0 obj [1904 0 R/XYZ 106.87 649.41] endobj 1909 0 obj [1904 0 R/XYZ 106.87 500.71] endobj 1910 0 obj [1904 0 R/XYZ 106.87 482.54] endobj 1911 0 obj [1904 0 R/XYZ 106.87 330.45] endobj 1912 0 obj [1904 0 R/XYZ 106.87 302.08] endobj 1913 0 obj [1904 0 R/XYZ 106.87 282.16] endobj 1914 0 obj << /Filter[/FlateDecode] /Length 1112 >> stream xÚ½VKoã6¾÷WèЃÄ\‘¢H©Øp»I‘ p±^,h™Î P$G’óø÷r(['î©'Ùä¼çûfè…$ ½{Ï~þð~[|¸–^JRá-¶^ÄI"¼Y™ÏâÓW?% fRJþåËŽ–ÀÿÄÇ.ÆÝ~]äYŽCì±’[XÉCX ‡Mí(9¯kD¡ÿj¢–`§4ÁÈü<îu™Þ¥:‡½×?ufUgö ¢Ç|œKÅݘ1:¯˜.ôƒ.Ûf´çVbD|Ôï4†”v9LZÇ(âÌ‘n?«Îï€Ò¡±1¦4²dµV­áîÐVùŠÇÛºzpxÐÕHž„¿Ùâm{"2–Þ1㣪ï/ß -ïâ@ÚGLΠ·ì3ë7u$’©«§ Ø>Fd‚¸9ˆô22÷ªÖ#ç9”a§2=kôNÕP”Íк8i}ÊËCˆæ©&qŒ@É»§Áã¾jw îSÞW¿qµÙä¦KÎP?~œs‡WTƒO“L•'¬#­roµãÄ=Káù×oÝ$:‰å°œèå´ „œxKáòò,Âm „ºv> @©jì£KR×1ÁÇ]yÛEúU‘ëºQ}QY[¼NÁÊŽcü˜Ø­”DÓ\@éÅ BvÍé¤O2ãÌáÖI¿nGpÇöð¥ë'“b×â$kU@rðl%n¢ýô/ÅuT³ endstream endobj 1915 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 1905 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1915 0 R >> endobj 1918 0 obj [1916 0 R/XYZ 160.67 686.13] endobj 1919 0 obj [1916 0 R/XYZ 160.67 668.13] endobj 1920 0 obj [1916 0 R/XYZ 160.67 649.41] endobj 1921 0 obj [1916 0 R/XYZ 160.67 477.56] endobj 1922 0 obj [1916 0 R/XYZ 160.67 459.11] endobj 1923 0 obj [1916 0 R/XYZ 160.67 314.62] endobj 1924 0 obj [1916 0 R/XYZ 160.67 293.3] endobj 1925 0 obj [1916 0 R/XYZ 160.67 227.25] endobj 1926 0 obj [1916 0 R/XYZ 160.67 209.08] endobj 1927 0 obj << /Filter[/FlateDecode] /Length 1509 >> stream xÚµWQoÛ6~߯0Š=H@̈)QövéÚa]ê‡ËPÐ6“h•%O¢Ût¿~G)Ó²“´ÀöbŠäñîxüî¾ó,#Y6»¹á—Ù‹Åù+>«HUÌ73)IÁgó<'æ?ÿ‘PÊÒ?¿ž¿*GZIRV³Ìí¿|}ñvqy•–T$—¥L^\¼»´+yòÛ›WW©dÉ«fv¹pÅŒRR‰ÈbA‰dNcErÂÒ9ɰmj”{/2Nò|6—Ás?^{ñ¹`<ôöÌ~‰D7z£[3\§8ŽÃEß«¯N5¤¨fsïh‚³¨Ä‹¾3}ÝÞ:Ù å06Aó¡°þ{§Û•ƨí#;§ápQZŠÇw^(ºTEdé#;Þ=ÖÂä^àf×®Lݵ霕,1êSÊŠD~š²2ù’2™t¸ úÛxk—Í¡a’'ÊnåÉ€÷sßÝ_Ó[Õ+Óõ(+Õ®qçð ʼÈI!ãÆÆE&Ým繬’^»ÆØo™ÔŽªõ#<нÅW;-3vm7Ì€;kmt¿©[½F‰¥5õ¿]àŒ»‘4ì´ÌqŒ BxÌ÷jD± ¡LV«]ß»§ÅEë\νþ< Nëv¿?yf–•„ ÿŒ#Š&OÍ¡Afð "o–—¤(‿J%xd-³*Ñ÷j³mô™µŸ¡°Š~ÂÇM×4ƒÆ–V$Uw†žò™–9ÉBÖ¿Ÿ:+‰ ~ïs*-}­–3è_¬¬õ5%¾8f:\^ºèꉗû¨Gæ´*ˆàñíÏ—ö’6ûÎwC?™5ÝJ5nmâ3å‘Ákrl† Â+LØÒɼ½X¼Æ\ÿÉë­ÏƒÉçÇÖÒ„Z|6.WP”ÎÆUkå:…j5- ‚T2vgq X„ŽÙ]Jmî·Ç …øW"ÙøpÄïßÄîtÈ'½†DæoZ\5wö]YU$+5œ€ %Œ>ZÊ*’I/°ìµú4 ÞÚøÑE—ö|‘ÛÓq¥i:bH¸1¿ÜÕFcò [e³fÎ9O~ßuFÙ‚9àžê½|ÛŸÁÖOò8Q1¼#G¦Ê=S­ºv¥ž *(ä,Yù߯VEtU|#]‰ÿ® ñ ÷ˆÕ@#7>⫼B¾*‘¯ìô€¯ò꘯D騇gq¡µ’ÈDN¤ò4eÏÙýý€¨$a<Ž£;.F†±Æ,\(GÂb¼ ËÊ9Èèp™Änº~cK›]tÄvÝ*3ŠT}hÖ^ `ɶQ«“Ï÷ÏøT „êÖó×ú/@?ªGÙÃk:4qRñÓLBYÌ$´D&¡!Ñ`Û3I˜„Rdé™Μdö0äâ4€jG#`>¦ëM‡ÎìidïbܦL8DvÐôÝtÝÇûKջߦž•Ò¦ÃC\!J"X\›k=è†2‘‰,ýî™"hãð?L)b_$DŽíYâ} ˆ‡+w¢žšûJÕèöÖÜ=^©x^Øêí+•?á+æÓ¤>½iÍC½´Ï¿ï-:q¼±¿ËAÑáÖ‰iѱøïµÙõXÿ#¾p³ÛØâ³t}îã/ŸöŸZµWX›‘LâŽ×!ì-N¦–Õ5i‘/ú~ õf°OÓ†q"£N^Exa|Ÿ­p\?;n#(ôž2DGc–5;(P!*Žù<(,Tøˆ.áÑÕ¦®}|^‚æá"m¸EíáýÆ>ƒŸú4Êêx0fßDžªíU=hÏ—W»ÖÔ}y¿Ò[3>O„ÝŒ”âiè†òÖÃØ4ËOÀVİ-Tl¨-ØîpUv\@ì¡â¡g^´]ÛqØ÷úM=Œ@æ„ùe·C=Xö!£ú1<Ùd¾ïºð„ô:L8ä5ŠÔ7“t¨Ûµ¾÷{ä[ °°ðƒKë§9í¿H¼¯ÔãUù¬óÙ·zæ³ïTò1ûÇí±ä›·E$Ð%àÖÀ´—.=`'Ƚþxí™’ endstream endobj 1928 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R >> endobj 1917 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1928 0 R >> endobj 1931 0 obj [1929 0 R/XYZ 106.87 686.13] endobj 1932 0 obj [1929 0 R/XYZ 106.87 668.13] endobj 1933 0 obj [1929 0 R/XYZ 106.87 649.41] endobj 1934 0 obj [1929 0 R/XYZ 106.87 509.78] endobj 1935 0 obj [1929 0 R/XYZ 106.87 489.4] endobj 1936 0 obj [1929 0 R/XYZ 106.87 381.37] endobj 1937 0 obj [1929 0 R/XYZ 106.87 362.93] endobj 1938 0 obj [1929 0 R/XYZ 106.87 254.9] endobj 1939 0 obj [1929 0 R/XYZ 106.87 234.13] endobj 1940 0 obj << /Filter[/FlateDecode] /Length 1116 >> stream xÚÍWËnã6Ý÷+„APqø–Ô;ãíb€&î¢hºPlÚêЮ$wüùCòR%+Πm‚®h‘—÷qxÏ!a„q´‹ÜðcôÃêýM¨Ñj1Žr¥ŒÙaõñ÷¸@ %i–eñâöv‘ä4þí.1ë4^|úhðønù˯ËO–wÉ«ŸßßðÁÍ‘Ì#ìÂìz´\¹"""ˆ) ÊiS&)!”ǵ:î˵JuÂpÜ>†.ò>ÀHˆ(Í1ßÞûÌžTGÕwvq£þ:)½Vþó|ŸÀïaø»ÜŸ”‹B„M>õi¯ÕÈð'Ý:3 &€Vç|dy×MæàñüLèô"v]Vj ’Û“n«'µ<¯Õ±­z {ŠQfРIæ6¯Ø ˆ™EQø“ ¡š¸’Ø&fÛ“^»p)ãý¹4öK˜ƒQ0­šÙcrj¯žÌÀÄa æUÛÀDYïNÎD‚ ‹?W°[Ä%@QHÄGPhõÙöÁ+ƃÇ,,ŽKD»¬ÏÓ’¢Ì¯™Ææ‚Æ'H²Ò;ðÜ´eíRd2.[±³fñB÷êáwŸ•7wµñs[;¡7êÚ‹XÚn êdRïC’šäLŽ›AcrTð°ën’œÅ‡ÚäG°É«|:îm{sF 4'ÄLkÕ4}» hÃRâ™#ñL)ax÷ãúŒ›€H¨‰mé]+s\ÂWÙš®q¥2ÌÃBÛÃejˆd~¿ï)³™Æ¢ÑŸëU¡¡”#Bz¥É¼Òx…I7WE†rŠxÑ¡¥aì¼±²¼‰ht¢{ F‚Ï#rA aºª=Õº±žöÇ=YÝ´ÇŽ $¹÷SMƒäCOã\ƒÂ!†Ã°ìµ—–†uÇÞÔã–gˆÈQ'zZ3OSКyZóŽÖ,8›a ï˜Í¼‚°x¯Ê™Z‹Ô™RŸ-ÕÞ¿ûƒÞ¡®ÓÆa½"PJE TSJ¯*‚é‚A§/ˆÁŒlP㱸ì.Y/(Ê‹1ëƒ8Ó–“H’¯ã=³ æ=ïó ïÛýUÞ3™£‚…˜˜ ¯É{ñâ½ñ© ñ39óN qógul¦%Nx¦é%›4}MϱAîÁABî™åRo`º×›‘±é÷¶£Œ‘ñlÄ™…§üèbŸSî€Í+ï·L€Ï+eØ^(ÏK€˜GÃ*Ê îR{U èÚ¼±\øÀ3‰Š¬—€ÂK@sz¨K½SW€1Ù!Òoq˜¶[Ê^é‘´_¯ÆÉËz`üÿ×¢!_K4(õ§âúá|8æ@6pðg¶ÓìܹýrJ`Fà ±Ýôrúª·ðªw囿ŠX„u—´{æ›& üŸ©ÁÑôu«ue8ݳ¡Ë}N *íÚ[J뜅´.||šó«´¦¨ ¯Ç]Ü1û¥K5CtÁ—Ï=§3D7‰SÄhX!„ã×ù>¡û7_€}FŸ endstream endobj 1941 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 1930 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1941 0 R >> endobj 1944 0 obj [1942 0 R/XYZ 160.67 686.13] endobj 1945 0 obj [1942 0 R/XYZ 160.67 668.13] endobj 1946 0 obj [1942 0 R/XYZ 160.67 651.62] endobj 1947 0 obj [1942 0 R/XYZ 160.67 576.82] endobj 1948 0 obj [1942 0 R/XYZ 160.67 555.82] endobj 1949 0 obj [1942 0 R/XYZ 160.67 447.48] endobj 1950 0 obj [1942 0 R/XYZ 160.67 426.48] endobj 1951 0 obj [1942 0 R/XYZ 160.67 342.04] endobj 1952 0 obj [1942 0 R/XYZ 160.67 321.05] endobj 1953 0 obj [1942 0 R/XYZ 160.67 236.34] endobj 1954 0 obj [1942 0 R/XYZ 160.67 201.67] endobj 1955 0 obj [1942 0 R/XYZ 160.67 201.67] endobj 1956 0 obj [1942 0 R/XYZ 160.67 201.67] endobj 1957 0 obj [1942 0 R/XYZ 160.67 201.67] endobj 1958 0 obj [1942 0 R/XYZ 160.67 201.67] endobj 1959 0 obj [1942 0 R/XYZ 160.67 201.67] endobj 1960 0 obj << /Filter[/FlateDecode] /Length 1266 >> stream xÚµVIsÛ6¾÷Wp2=P3!Bl$ØžìÖnÝé¡ãèÒ©{ IXbG".‰óïûq‘¢¸­{!ˆ·á-ÞC“86Y~ ®×ïnE‘, ÖOR$AÄ9Q°ÿñR±úsýË»Ûô(C3EÒ,ˆ ÿ‡Ÿ¯~[ßܯ@……YEiªÂë«÷7Háá¯w×÷W÷+ÅÂßÑLp³6Ê€R’Éɉ %Š‹á„Æ«ˆR&ÃVœê©Ñ‰8#2 "ÁÞ·F:’L„þ0èºÐ+ÜËð;»¼wdc’J’dAä^Éš8£2MTÄ(IRXÔ¨¯·Nhtdbæå"™Ú ‚pì§¡.úª©!m*á~hë7*ìÁ°¡êÞëzÅÒ°ï,¥y²kn%ÇXÕ–Š'ƒŽn;ÇhÚR·Pª$NÃÛ•â@0‰¤$ršýœï;ýÖÖÒú?úùÐê®CoÓ8!w!‘è .oíZ¼±k Z$E.Ж »ò^wb}³<œ¦Ô)”¶vËcòå!"%qâtÈe`R°ÏÒ™Ô!󯦪¿MA8Ín‘ò©0ò3pÒ·Ö;¿gÿ ­ô‹p…øŒ|2“g/ƒ7MˆÞÐ-]}2¦&äMž [p›º(çF®Z·C„¡ÄéHA¤OD๟VL…•ðvØ„$Ed³#²¡½ÌÓw„ö"(A e#€Çª9{d¹Ú‘¯‡ƒûÛžbšB?eô<¨™ÈΚá“—ÛCDø8žRíò$%™:b:4 ï iLÆ6iæg’4“–I’&ÓÄTõaèá®[nj”·9jDmmÊêÉD·®T–¸Óõ¦ßvØ4¤pMÈ­ÞçU]b©Ñ˜é\Þ5£ÖÔÏœô1àTÝ)š‹æPéÒ¶£¼Ÿõ'êÚqÌ!SN3ô6: õÁ˜(R]~¥0%ˆTc#`®t}[՛˭€Ç yP9‹“j4úçÔK.rL¸GÎÍÔ ‡Ð³ÓIÅxøÀ’8ï{m†•½&HžTˆ•ÅGcy^ÎÙ9{*¢VPð°rÆìŠ¢ûj—û« NÑ)Ю¶5,"ãK;ÈÔ@e™$Š."芮"Å6?¾-%¶- ¸Æ­cuú·p£K»}Ä€?[™OÛ nú!/4v&·®JJø¬´0V‡Ã§ ÁÛjkœ;bî1\õß[ÎxÊ\½«6µx‘[Ï¿s®2ì#G˜óÌ#{»/£]Ä á2C»W¼ú»º_">ù/¯„ÍoüÛžÀ#Ñ–Á¹GæÅÅ„ }THz ̇=~aN@²±¡¡6")°[JÑÃs Ãg1(UõÞx»üü³åŠh<{™agçÔ¿ i6S±,䨭Ï!öeÆà,ËÝ_Ôê@ל¶ NâÉãîraÏŒ@å[ˆëè€Oxì±ÙXþ0Tn>b0*ô½ýtBfDd™uZ9ñíŒw B£/{ ™|rAÄü‚è®È˜ËP—J–J| À¶È÷»sÜíŠÃœðâ3<ã¼Zv>î³Ïð¥EZÅ9bUΨ—o°dð˜‹Üu]¾dn™ÿ«¶Í?OG·ô›1¯boÛ¿†¹dfî˜ÛWñ°xÍhõó?°6ÚyÙCb”¿Yó7ÞÄ:à endstream endobj 1961 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R >> endobj 1943 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1961 0 R >> endobj 1964 0 obj [1962 0 R/XYZ 106.87 686.13] endobj 1965 0 obj [1962 0 R/XYZ 106.87 466.65] endobj 1966 0 obj [1962 0 R/XYZ 106.87 446.16] endobj 1967 0 obj [1962 0 R/XYZ 106.87 446.16] endobj 1968 0 obj [1962 0 R/XYZ 106.87 322.65] endobj 1969 0 obj [1962 0 R/XYZ 106.87 299.94] endobj 1970 0 obj [1962 0 R/XYZ 106.87 206.4] endobj 1971 0 obj [1962 0 R/XYZ 106.87 185.91] endobj 1972 0 obj << /Filter[/FlateDecode] /Length 1682 >> stream xÚµXÝÛ6 ß_dê`Õ–-Ù>lºöºuX[¬—> ËG×sìÔvÚ]ú·%ÇI8Ë$E‹?’ÊÌg¾?{73Ÿg?­=g)Kålu7 #–ÈÙ2 ñ±zö§—²-–q{OÞ¼y²H¸÷ÇíøÜ{òê."ïöæ÷·7¯žÞÜ.þZýúèytRÆ&“™o@>èBG³%°V;M[“n+ìΦ­óòÝR7™:èíø#qÌxl%ïŽeÖæU¹XF~ìe°à±÷ÿéºmˆªU†„}+ô^±–Õ=s’OY*z¾Z,y"|r Pª‹1ÖůðAà]{eR2.¦^AçÁ€R@ù«MÞ­s 0z.“¶©‚Û³LZµ1u ß° 3˜ ùeõò7Sûýs6‰„…AߦC­/Ù•Ä,™Ú…ŠMɆg“ïóBÕWX’¹·9¶–mž·­(HVº¬,¿­UÙªÕÖ†H²@öm(õÇ"/]!î\3²EÂ8ã ùæ~<>?Ä/åýòÚß¼¤ÝKâ܈`yo‹rí=Xw‘\Ýkç' ïÁ\Ñb3w„ûëOsh‡ð×o°”‡j½&u’¾_¯¯?±›•ÈÄÌÚßMd\ æÝHÃè [äÀby¬ó+*º4ÔÀRûª“>`cè.zx˜Í`ê³›Ì ýþÚ4˜aŽzMG6šÑ·Ã ä¸ý-·½-ýÈ€i,8RµÁ/¡*b´?â?ÓKNƒi:Ò³å¿&p åí›´•|Ü-õ˜(Maâе&¹açÀ 6ÁþØŸÃFcó²«ÃZZ[¤Li† l\Q‚LÝéx3ß»Î4liìL… í¹¡jvmȃ?ÚÜZÛNQÒC—Ÿ³‡ÃŒ£ˆÌÕ÷›ïbͧ¬ÓgN±‡¼oΫ±yûÙjº˜¯‚ä”¯Òæëûce¡>ÍGŸ ;yÊDìò‘ä¿”Š·OSÈÞ7þs"’Eá(ÏD)rogˠФ8‚NÛ` £¥ôUÛjê…)õ´wÆ0ôÝ0éDÀ@SìqݵΔ&iÜ¥¶[«ÔœÉöá¸Ò¯;uu¤-ØJÝe2š¤_œ¦eÔ¤ìéÃsל"ºA¬7Ho/tÕç‹$ô*ÐΡ8ö‡Bãm(tÎ9U ~uäø;°õë0/lêÏm1Íl ÞR÷c“Jºàé ³TqTè/s¦iW±Ý5—úëu÷!XÚOÍ'c\nÝ4eï½ ,8Ã7¶2=ÝFVn²©A0møò¼Aç/"Póƒ ³h“MÅ8ƒkÈEˆƒå,HOû_ÂuàÃq.¢pŒsÚôõ`—ÿØeÔ{gÕhð“3#Ÿ?D<¼ÛI®‡x1@¼ñOˆÇuwKÂøü ysáæ8˜˜l Xrvç"²(QòAbQðøš7ôÄÖª­†¦ršÌ¯€YµßÃÑ–8©å êFŸùmA¹z¢AǾsÕˆŠË†n w¼oWö­mÜ gOu§*m3n\Þ~ó/2 íP endstream endobj 1973 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 1963 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1973 0 R >> endobj 1976 0 obj [1974 0 R/XYZ 160.67 686.13] endobj 1977 0 obj [1974 0 R/XYZ 160.67 668.13] endobj 1978 0 obj [1974 0 R/XYZ 160.67 648.55] endobj 1979 0 obj [1974 0 R/XYZ 160.67 544.07] endobj 1980 0 obj [1974 0 R/XYZ 160.67 523.78] endobj 1981 0 obj [1974 0 R/XYZ 160.67 404.03] endobj 1982 0 obj [1974 0 R/XYZ 160.67 381.41] endobj 1983 0 obj [1974 0 R/XYZ 160.67 251.75] endobj 1984 0 obj [1974 0 R/XYZ 160.67 231.74] endobj 1985 0 obj << /Filter[/FlateDecode] /Length 1342 >> stream xÚ½WKsÛ6¾÷Wp2=PÁ`{²Û¤I'é$ºtê`š¶8#Q®H%οï ˆ)Åé#9-°»‹ý>%”f÷Y?gWËç/eV’RgË»ÌZ¢eVA,ôú#gL/þ\þòü¥9Ìa¥%¦ÌhÿñÕåoËo°„ç%YÆØüêòÝ ¯ù›×Wo/ß.,Ï÷f²˰¡Ê#¥í¨±ÉÄÆK™ßìû¸Z†ã1”h6®^×›3æ}2w»Ú74¤õéCØBå7~ÒGlX5}Ý=¸ªö!2N;,ÚÕÝ~Ýã¬-È~W'3:wQé°»o›þhj;2œ¥è&"Ñ›òêšû¶¹æÊT&ŸF 2@«ŒÐr··Ýʉ=~Uœ–„±«°êî®yŒ  í DÆ„]îvîã€LÍñH¿8¡°l†°&–%ŠÍ‘(MXâ[: )›¡À²vˆœYm7ˆœm+õÛ;”)H_R‡e*Z« Õãl„ÅûÍLÝ€AØg竃¡%A'Eí5M‹Ò#!Lup.± ÃxœW?r×qNœLóÎmÒ²n2tðÅ_ôY_´÷e^×-Öu´'FI5#I高{áç¿\X‘o=qpîÝ<¬ë‹éÙ*C´ŽÇ6¯ZRÅŠu(nP<«PÞ>ƒ žÔ–°d±~¿P°x½Lwèœ÷Ôð8U‰–oRcØ 4“­Œõµ‹+ŸÀ¶àGØæ4b{ã> ÛBޱVýØÖç°ýRV%h«tQÍ¡-O\²R -Úr m¡- ÍÏ@[Dh‹#h•¿ŽÃM—~”‘ÃåXž*-) -Ÿb.i/ÓÃêhMz=0ÂÔ8o ÂVªÄKR–:˜˜‰¤aø”ÀL$0é“ ô]3‘Àü¸_ô¡ÁÇPâ;ПæLÃã–l¶%ó[ΪõižRÿš§&üê<…vluܶ=è'›—’0þyÌ%-%VÌÅf¯’ºû4w)Ê53†÷ìUwÿñm’Ì`¥/Nbð%š½O0+G>ø@cR§Jh­×ØrºMœÙôA¡sÿ®Üu}\µ»ß§‹‡=õy¨Oõ!à-)^Ô§¸PJĶDV•@™#J4Ã×wÓ 0ø‡rc;¿Ô„§ër庙 ¸!Ungëk‘Î~>J>FkZ‘ü9s¶ÿÀŸÍ¬.ÀW]£¿ü7;2¨(}9|ûÔž\ÁI¥ùŠ™ ¼$ÒLrbaoÄsÁ„ñ¸=õ%x®ÔœúÎÁãÆœx—!Ì®!Û“ÌW <©†Ë°~|€Tt€€.ú (ôª9Â/ ¼ã >¼ØÙNžn7IS 7ó ^ ‡ÊMTøÍßçö|à endstream endobj 1986 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R >> endobj 1975 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 1986 0 R >> endobj 1989 0 obj [1987 0 R/XYZ 106.87 686.13] endobj 1990 0 obj [1987 0 R/XYZ 106.87 668.13] endobj 1991 0 obj [1987 0 R/XYZ 106.87 649.27] endobj 1992 0 obj [1987 0 R/XYZ 106.87 564.53] endobj 1993 0 obj [1987 0 R/XYZ 106.87 545.8] endobj 1994 0 obj [1987 0 R/XYZ 106.87 458.58] endobj 1995 0 obj [1987 0 R/XYZ 106.87 437.52] endobj 1996 0 obj [1987 0 R/XYZ 106.87 306.74] endobj 1997 0 obj [1987 0 R/XYZ 106.87 283.74] endobj 1998 0 obj [1987 0 R/XYZ 106.87 174.66] endobj 1999 0 obj [1987 0 R/XYZ 106.87 153.88] endobj 2000 0 obj << /Filter[/FlateDecode] /Length 1072 >> stream xÚÍVKoã6¾÷W‹$`ÅRoi7)ÐÃݸ‡b³F–c¶äÊvêô×/‡‰’eÇ9´èI9/Î7óq"Œ0Žž#óù5úyvs/£"š-¢Œ¡\Di–Ágöék\  %©”2¾ýòå6ÉiüçC¢Ïi|ûù,Xüp÷ûwŸ¹{H¾Í~»¹g½1š#‘GØ"DÂyt73.yD*xàS”ÓÎ'¥IJeq[mš$ÃñK’‘¸Ú¶Õ#åòšÊ;‡#Σ4LjÆÒFÿô«c’rmÑ®?ÂwÕ_‡ª.«ÇÄþÿd?·m«^Âá©‹VÛìMuÒûvU?qlEmò¼ñiÓaªR"Ë¢”RÄ3£;[VV¨¿ž>ÄÌ¥sp­‘1!‘ðr‹C]îWM¤¬À6™TêdÒ<®vvSÁ‡Ä]jÍߢm6vU©T–V¸l6Û$ÕÚM]Õ°¿·ûÍÂJ+“…”`† Óæs.WÑÁó¢/ƒl² v‡G*Èå* ¹@T Ë`wXteð~ä'áì±?‡';‹§®Ó|€§‹oŒ§@8?ÁZ/ÀS<³,‹÷Ú“9uY²ûÜA R‚ü¤°‚^)Aü<¢„¡‚écŠ1Ç÷I®m´–,ª£Úl×ÕÇq xwW›DI¡Òæù -šÆ.?¸­ùÝ(WDpĈ³X·ªžû´4'Î1…UÖÝÓØÃØ>“ §óF)S™!NúRf])oת¬zt.U1-tB2sª ÀbnÖóÔï8V««¿Ç[ï/÷Ðî°ä}„gUB¿WªL7U þþ¶ÒI×UÃ|ÌåÙTc1ÁcÝVÐóP¢!J!mc1!|cÙÃ|ú4àIm`’'µôªvÝD xî&Û)ÍuÇL\Lb$}¸pNù?ó5ªë‚vºžvÁŒÎd‚Æ»esXÏaÅKÕ¿(ötoC˜"CÎP›Ê¶ãºªŸ÷Ë7¹ƒ‰KÜQˆ;&z-mA¡Òµjü×mãdKôÏ)¯P=q:âsÉ çˆ ¿jZbŒ£‚ú,Z­ÿtVúy §÷îZãDk¡Sà4vnÎGzSclvƒ®çgºž3ËZZY±á˙湞sÂ\ÌÌ ŽE\Ã3}Ø@oé— ÞøÖ˜·ëÿuµémløÅØ!@/ZÝë½]+Ⱦ:Ù3rTå~ý:P¾UAm7²iž†%!¬`ƒwv01†ƒŠjŸÁ5´Èµ³¥ä> endobj 1988 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2001 0 R >> endobj 2004 0 obj [2002 0 R/XYZ 160.67 686.13] endobj 2005 0 obj [2002 0 R/XYZ 160.67 594.55] endobj 2006 0 obj [2002 0 R/XYZ 160.67 574.06] endobj 2007 0 obj [2002 0 R/XYZ 160.67 457.34] endobj 2008 0 obj [2002 0 R/XYZ 160.67 438.9] endobj 2009 0 obj [2002 0 R/XYZ 160.67 367.4] endobj 2010 0 obj [2002 0 R/XYZ 160.67 349.23] endobj 2011 0 obj [2002 0 R/XYZ 160.67 256.04] endobj 2012 0 obj [2002 0 R/XYZ 160.67 235.66] endobj 2013 0 obj << /Filter[/FlateDecode] /Length 1507 >> stream xÚÅWKsã6 ¾÷Wx2=È3W|H¤zKÚÝv;{è즇NÓcѱ¦¶äêÑdûë ÔÛq“Ùvz1M $àÃp‘(Z=¬ìðýêæöÍ;±JIš¬nw+¥H"V!çDÁü»_JÕú·Ûß¼“½ M‘é*²ß¿ýáú§Û·×°…)Y‡RªàæúÓ[\áÁ‡÷7¯?® ~qÇ ªBª@K¼ ™´+pØíÞ8)ÕK±ˆÄÊë:êÓ©2»üi~TÑ]h×Û&/ Ð/x ³¬Æq qpÇbùäfMéF£·k&ƒ½Û´-§uÈTP¦ÀõÆ­—;'íªÍ­)¶ŒRï¼Ö*T ‰(XGIÛåxƒäóc~ÐNbÔ<³4ŽI{#àÚç-’D‰ÚàIipß6îH]Uoû§hE±Õ)´÷Ht7ik“ù•¢nŒÎܲµ/ÚTyñàà”ÐÙE#F’‰aÃñÖÂÆÏzª2u{ð^_K0 \êü˜N˜\ƒëP{–…¸"@SOQ#M‚p§ Äyç½~/l³þs¾ô.¬ÛÝhâcþ³óoÜp Èúì“$G{/ýÉ¡z y§éD§š w‹ ~Kˆ@ß›ù%z%}ïÙYIDR6#8 Ú3ÅÐ#g5{ÿÁ cƒÅ"óÙãæu{Çê?:6¤6¤Ê ôD‚]X’1jY¬qà–Œ$æóyF‡< ’1&2n<©‘¶î„²!Êòê Ùβq™}¡?od‹ùsTzhÛ¬_“óTÍ»¢„5é² &÷0™é‘ ‘ÐeZ(”è  ä‚©a)÷º‘©íޏ#W9%Ô¤ãZÇÑX¸'öì-MòŽ&áO­öŸlÔÚãPso#Œ^D[@`FºÜ“.Ãi=éº* "S¢}–R˜$NJQžRjÓ\f–2’ª(n#ÿzŽøO²Yt¸ðvL÷L‚)«ÆI;ïZ£†@ð¡"ÃÇewRoœçÍ: D‘åAÖž9B«vÁyŠù /{(þlÙKIIç]¹áódvutcqåÆGŸ„gjU„'óÚg±ºÌ¸ˆ$gçôDQ›9…JDÍ‹ªOa|€fê¡y4ÇËÐä Z$Ö·æè …it¹’Ý”åÁèâxJ©úäã‘O>À ´˜ @Ç8¨]ÌDM M:?åÅhߤZÐY^²×—úlºÏNö/¦'Å´sëÄÆ%÷ ¾HU!ÁŸúwLK ­‘ŠáOéÆåËLAí¯Œnj¿ÄÚ¯@uðÿ xù‡#Ðé¤)qåÌ–­´ëIUd+[ë`38:¯ÜßÜ] ·:¢hÀuDð½¬2ãEmÅt»ÝŸþ)ŠçàÑ2 Ú"³Mqa²ÍòA`ï#ä Ž Þy¾ÝÂEû~•öýêÆE6T, ~üÛ}Í2bT‰áÑu¦E`j©Ä¾­:ì†ãíRg".âå­×Y“hVG\{`æÍÁ˜ˆG­]ï9üè;ÂÌÔy…-éì=ï&丹âa—Ÿkî)³‹èù¬Ýž{^ëÍtz†­ã5ç|† _ðô˜”ˆxlÚLçKî«¿îdû endstream endobj 2014 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 2003 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2014 0 R >> endobj 2017 0 obj [2015 0 R/XYZ 106.87 686.13] endobj 2018 0 obj [2015 0 R/XYZ 106.87 668.13] endobj 2019 0 obj [2015 0 R/XYZ 106.87 651.73] endobj 2020 0 obj [2015 0 R/XYZ 106.87 534.85] endobj 2021 0 obj [2015 0 R/XYZ 106.87 516.41] endobj 2022 0 obj [2015 0 R/XYZ 106.87 377.56] endobj 2023 0 obj [2015 0 R/XYZ 106.87 357.18] endobj 2024 0 obj [2015 0 R/XYZ 106.87 240.02] endobj 2025 0 obj [2015 0 R/XYZ 106.87 221.86] endobj 2026 0 obj << /Filter[/FlateDecode] /Length 1443 >> stream xÚÍ—KoÜ6€ïý‹ $ÀbÄ—½9S ‡CQ÷ j¹^!Zi+i“øßw†C½×NŒ$@O¤†äp8Ô&da¸¹ßØæ·Í«Û—oâMÊÒhs»ÛHÅ’hH‰Íí뿼”Iæq{WïÞ]ù‰ðþ¼ña\xWo_cGy7×¼¿~ûëõÿ÷íï/ߨQ™HX”lB«ˆóÇ7×·vK½áœ¥z²gÄY"†=%÷Î…òŠÊ—¡×™¦5y×NU$ÃF:dZo‚$d¤àç;X6, 4¨iÍ¿'Så†_â·¾ÅO‚_¨yU×¥É*»×h~à ½ƒ’Ù’'µkBšÍæ‹GçOÝðˆ) MÌÒÄ®¿Ý»IãQEÈ8w.œq¡Jk&”›µ;UyWÔ•ˆ4G¶è‘ÆÞ§½éö¦¡Î ñEâÕ4±54/òö™/"ï#Ž’dÔTu˜ÃÑ.} D >ȬÀ:$H!*éÔ‹h ä”’1°€M$‡0»¶-‹û=îו(‘Þ¡n ™;ñ¼0´v{–ÍëÃñÔÕ=}ÂÑœæ‰Iä\—U[7‚‹&Á#3÷H)½¢smK-;‚c'Êc”-Š¥jý7~"½h žûœŽ¥ÁìK9§e âccÚÍZšC ê>Ò«„Ölþ¡&wi½uŸÔHîEfpÅ™N­ùèkÐTž2ðÔÕKC‘¤,ŽglN«ì…ÄL{½—Dôñ2}5Sú±C©å¡ÜIçg3ÔìÎ •çφö¬Ïu2TÓ.+Ûõ©"ÆûBbOó‹§1ã#¿„ãÔQ°-žd—ب´÷ -ÚížÇ®«¦É¾•\ú’KÅΕÃùŠÄC¯¸ec—}ÀzB9ŕ͵æþtpdh/©H»Æd+X¨¸õ2'!Àa¯Þ9I× `µåÜ&:šÖ³E†ŠG4¿@sÑP—âlë#+¹ƒ ,‡yØš/Í`)JbkÀd ,:nڎ惡ýpæzYã&Vu·"e€¤H5"à¿7=ÜóOƒýºLX 66[º"kœ½!ú1Ð~*;Ç{wGœª­A£+ã´f½úÂÍ O`ñ+L»ð1F€“X(Ï> ž ‰1‹/z*1¾;(èÑéÏý%l8à ùÛ£à§ÿ ðáó endstream endobj 2027 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 2016 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2027 0 R >> endobj 2030 0 obj [2028 0 R/XYZ 160.67 686.13] endobj 2031 0 obj [2028 0 R/XYZ 160.67 668.13] endobj 2032 0 obj [2028 0 R/XYZ 160.67 648.53] endobj 2033 0 obj [2028 0 R/XYZ 160.67 567.45] endobj 2034 0 obj [2028 0 R/XYZ 160.67 545.07] endobj 2035 0 obj [2028 0 R/XYZ 160.67 451.02] endobj 2036 0 obj [2028 0 R/XYZ 160.67 428.64] endobj 2037 0 obj [2028 0 R/XYZ 160.67 347.56] endobj 2038 0 obj [2028 0 R/XYZ 160.67 327.5] endobj 2039 0 obj [2028 0 R/XYZ 160.67 243.08] endobj 2040 0 obj [2028 0 R/XYZ 160.67 220.7] endobj 2041 0 obj << /Filter[/FlateDecode] /Length 1061 >> stream xÚÍ—MsÛ6†ïý<ôΔ ЛÜÚVZOݱ•C¦î•i‰JTI)Šûë‹Å‡Q²#×=äĸ»Xì>x &’Ìû¸LÎ&ï.x¢±–Éä!Q KždyŽ•ÿü¢Œ¤N~ywQ<ÙP­p¡bßÿ4ý>9¿I C§YQ(t6º=‡™]½?»Ý¤Š¡&9ŸØEB)Ö"ZQR¬˜¨qŽs‘f”2¦åª^—MýO»«].„ãÀêˆæ2ÔU÷›©S[‘ëÕVµeCµå{jëL€_01%6žÛ4BØR[8HVŒ‹}1džãK¹CxЂ}„ǯE˜þÇkC´,µŸxmàJ‡¾%X{‚ûÇ~]-^ÆV#ZÔ!gÍï/Á&ÿ_CIwiÆarŽ%;$Ñ,\Û/`6}È‚,Oæ Íá¾9ζt/úyÕ4ÞæËª«úÞD½äÌdÆËHXÆÂ(5P•Á¯ë.uÕ-˦ytsÁÔãp¿æ)›í¢ütP5fnE`Ƙ5wpÂ>Ì©š¶‹E¹¼ïý‘ÑþE¾zd2Æ=†0ýÐ6þZæU×κráÞ×^¤M§k_Z8Ç Î±'߉¸ ˜GÅ=h¸ùYzª@ ­ñD=´íá±+r¼ÇÿÞU'7?-„È$Öî,Šå‰ÿî_·Å% endstream endobj 2042 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R >> endobj 2029 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2042 0 R >> endobj 2045 0 obj [2043 0 R/XYZ 106.87 686.13] endobj 2046 0 obj [2043 0 R/XYZ 106.87 668.13] endobj 2047 0 obj [2043 0 R/XYZ 106.87 651.73] endobj 2048 0 obj [2043 0 R/XYZ 106.87 482.2] endobj 2049 0 obj [2043 0 R/XYZ 106.87 461.98] endobj 2050 0 obj << /Rect[329.25 280.43 343.98 288.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.3) >> >> endobj 2051 0 obj [2043 0 R/XYZ 354.05 281.43] endobj 2052 0 obj [2043 0 R/XYZ 106.87 265.05] endobj 2053 0 obj [2043 0 R/XYZ 106.87 247.16] endobj 2054 0 obj << /Filter[/FlateDecode] /Length 1216 >> stream xÚ•VmoÛ6þ¾_¡ù@+R%]'u†X†ÕnaF¦ca²äQr£~ÇYoi¼}âÛÝñîáswôÞƒg†Ÿ¼ëÕÛÛØKqʽÕÖ N¸ç‡¡Vÿ@)ñÌãÍ?žÏŠ~_Îàœ¢ùÝG=ah¹øíËâîf±œý¹úôö–uÆh‚yâÆ¡DŸ{‹•¹2òÁiÔ»“œÐó,˜ù„P†ê,оfr¶8ŠØýîŸ ˜kßÀ<¥HoêÀ}cFú‘+ÙUYk"…Öž<ír¸ü 2é×ò ¸²q'3ÊQ¥6µå`µh[¸K(']›Ã±±sQ[‰ó%JÖÇ¢ÁöENY߯0%©>ìa*& 2Lâ ¨4!HdMmgu¾Ï ¡Š“N%€‡¦º×>êÃÜgT(‡õn‘—ÒY­5‡N«.÷µ:Åï”—#ŒyFcŽ„è¿£@LÂ> –õ#$¢ÓHÓ^h°°¡ÁD>›Ða–U:´‘Pu¸¹jEÎo(wúeå´6ù£ŽE* ŠÅ#ÌúYz«ã¬ÈS÷‰ý¡¡|«w[¤a’•’¥¶ØØM®dÖTêäÎ+{(r tª!ZÓ(.d=¦šù‘_KUUÍ6ëW³BoÆ&Ò¾þ6/äE}¨ä,Ä<î?ªKƵyKmý¦Î&Üæ¸³ì‡<Ñ!—“0!J'5,ÆE µpd >iCUP—•j‚@¤Cºi¬w€˜Òù]|}PÌ_£Êe†°Ã—2¶³úTCB­gøõ¾EYŠIÚ5.â—|>€¨Qªé`ã^K¡(FÉ+U‡µù±x`>Í5H"iž>Õv]•†¤©†ÖŒ™8@6¶›;7±?Avñ˜«ªÜ÷bST´†°¼!ƒº’‹ûBº, L¢>Þç4Ôå»KÃAeÞV­ã¦Çè-Sb( ïÆùmÕJqln˜[Nüh¹@¦½þú’ÀÍ%åüëâ¯ÅÝ×Þ=ý,ØáÚò~øcºH/¹H/¹ø‚@ç Óžµ½±¢•—MQ®Ñ•óëêÚEt3MÚ ‡ôS®Ó[?6ay1z¨>¬%'iñì|î[¦\SÅŠ:öDì\»ø9A€S@mõpl¹XÛ-Mj3îr·ÓeC˜I•Óu®Ju€fd>FË'³ÆjÔbï6Ÿ´†k—°Ûß„S3®NzçØC »ñÐõàNqŒ“ iX¤mã=˜lY.Š6eÔÞf”]éòh)møçêãÑò¾ž ò’Y?9ûq€S2¸Xç˜&]¤®Â/ζ¨ïþÜYbØpiçÊ7Cï¡4^þ)¿¿¯6§—ÿÄß*õmÚ@ÓÄÊ„¯\9HLÔ} 2ñŠw^¹Câ3Æø¢åòµxÝábõÿ½}… endstream endobj 2055 0 obj [2050 0 R] endobj 2056 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 2044 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2056 0 R >> endobj 2059 0 obj [2057 0 R/XYZ 160.67 686.13] endobj 2060 0 obj << /Rect[195.09 200.87 262.26 209.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:break) >> >> endobj 2061 0 obj [2057 0 R/XYZ 484.01 201.87] endobj 2062 0 obj [2057 0 R/XYZ 160.67 180.79] endobj 2063 0 obj [2057 0 R/XYZ 160.67 160.09] endobj 2064 0 obj << /Filter[/FlateDecode] /Length 1053 >> stream xÚÍVÍœ6¿÷¯àH‹ƒmŒAj+í¶›v¢ªÍ\¢n,ãÉ¢0xj »Ó¿¾ïÙ†™Ù$ª)°ý>ü¾ü{/HH’ûû-¸Y¿~“)²`½ òœdisNrØÿúWH‹þ^¿}ýFN<´È‰,‚ÄÒùýúÏõí]",,HK™‡7×ïnñ„‡¬nî®ï¢œ…ïš|RS)I.ƒ˜I{Ê6j[Mœ$+€‰’BXâzsØüìÔ-Ž%jɈL-ãúQEqJiØè(fy¨÷n[wU5ôjãvOuãùûQ°W].Ó›As8·jgÜ÷LHãX¸ÕfwKžX†™Ï¬„S:ëÐÒNaâÔs4‚üÄpÜéÖŸ~Š˜ •9à–:ÔºW¦ìkÝ¢õ,µÖã¹µªtëUŽÆ'ù‘þàÔÙïæ°t(#é™C«…GiBÄÈ®`r¡62R0ç¤Ë}§Usx¿ a‰gÞ\£ ›ªìüñÓ£2jÆjÓ73”æ)Iäh(r\4ª~2Ôér‰—°\mÝQ«[Q¹ß7‡(ç¡7ÚgŠ‘¥¤à§9Ô{LBÙcšN…n7ÞXÙKá)iX6C ±o*s·­ÕG)Ï^/Æ¢)’ù`ÀÙé#@ÕÏußY•Ò>4795TµXNŸj£Û®!î)Û*„9ôz%U•MspGêyï.1Ö^û|!$”êò{û\îöêÈtåDZÙUNÔà‚®«‰ ¦Ž¸k›—tà ÂJi°ß2‡¹c4DàÃ:¯BÀ•;ä&œ¤<‚ÈC:§Ð\d’ŽŒôå@Æ·Ž©Áþ¯Ì®n§ææ´Z·§ÑG.Kݶ  ;­©C_¹½Qý`Z°é(ÆÃj0ÆuçÞÛ]WŽ¡øá?‹Þø= endstream endobj 2065 0 obj [2060 0 R] endobj 2066 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 2058 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2066 0 R >> endobj 2069 0 obj [2067 0 R/XYZ 106.87 686.13] endobj 2070 0 obj [2067 0 R/XYZ 106.87 668.13] endobj 2071 0 obj [2067 0 R/XYZ 106.87 649.39] endobj 2072 0 obj [2067 0 R/XYZ 106.87 649.39] endobj 2073 0 obj [2067 0 R/XYZ 106.87 529] endobj 2074 0 obj [2067 0 R/XYZ 106.87 503.11] endobj 2075 0 obj [2067 0 R/XYZ 106.87 482.7] endobj 2076 0 obj [2067 0 R/XYZ 106.87 443.92] endobj 2077 0 obj [2067 0 R/XYZ 106.87 424.34] endobj 2078 0 obj [2067 0 R/XYZ 106.87 373.6] endobj 2079 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2080 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2081 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2082 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2083 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2084 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2085 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2086 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2087 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2088 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2089 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2090 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2091 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2092 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2093 0 obj [2067 0 R/XYZ 106.87 354.02] endobj 2094 0 obj << /Filter[/FlateDecode] /Length 1085 >> stream xÚ­WMÛ6½÷WèÐTŒø%‰AQ i³í(¤¾Õ=Èíe+K[‰J³ýõ~ÈRlÇë{"EsFïÍÊQŠÓ4ÚEnø9z»zu—GË,Zm#Æq‘E cvXýô’˜ã8Éó½ùp¿úå·w«ûã?W¿¾ºãs-pVD© ”Ùߣw+—ZD„`)¹3‚ r3ÌyœB9ê˶îößÅ ËExHt«Í2Yqx¥8/¢¤H1e.×"bô:va4Å’DI@»tœ*Ðk?Ü·>{²Ø—-²­äü(`yöD` @(„æ.ô}ßÅ ÍQ=V “¨´ƒ 9ýRÃŽqÓmÜnÕË‚K´zP~û™-CÈׇăë.Y0—#˜ûøÃ®¶ §$K¾d£êŸM·ëËÇ]•MóŒ¡AUc¯° ZÄøã9|4KÑNµª/M×ÛG‚ôF@—þOÕ~aÛõ{?Ô^' nái0*ÌëÒ”@§ý>nõϨÆ¿­Ûá §º±±/cÀˆ#¿äÛ•Z¯©ÈT?gƒÅ^ ccû>ÂÜ‘œªsy‘,Åy*ÚA>ÔâR|Áq–…]Û±­ŒîZÿ†ªt9içÆA ¦ó+½2c߆*$s¶<šqÅ’,ȶ6ÚŽ¶²G·=Ü¿­}¤h0¥ òÍ&ä˜ñ… išM/‡ ¾éµyØ+£«Ë¦ Ø‘‡ö@B¸nc–¢Ï Ë åÓC!±6äéúÔjD├°myplÛÉÆ©Hól[‚&¾ª^5~®}A¨øÊçèÞøŸ¼(ƒ-Û˜ö,2¹?‡3üÖ!Ð_ª2ø8 TEqPÛ[ëÛµ;µk8$÷-l™—ç8ª ?£P!1á…hPh VêÊË ±4ÇB\(ã“MȵÌB%ÎØ©H" "Ád ‚H0s" 2‹k°nwÉ£‹êôäcÆÏ÷H«¥^KÈ0k ©Ë\ ùÒrw_8Ï®l&葦ž&§*Qˆ4;W‚èuâ2!måLâ² îÛrãºë³> endobj 2068 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2095 0 R >> endobj 2098 0 obj [2096 0 R/XYZ 160.67 686.13] endobj 2099 0 obj [2096 0 R/XYZ 160.67 577.85] endobj 2100 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2101 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2102 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2103 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2104 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2105 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2106 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2107 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2108 0 obj [2096 0 R/XYZ 160.67 556.54] endobj 2109 0 obj [2096 0 R/XYZ 160.67 336.55] endobj 2110 0 obj [2096 0 R/XYZ 160.67 310.43] endobj 2111 0 obj [2096 0 R/XYZ 160.67 289.52] endobj 2112 0 obj << /Filter[/FlateDecode] /Length 882 >> stream xÚµVKOÜ0¾÷WäЃ#;Ϋ$ Ð‡z¨è@ÝÌ®7)p ÿ¾ŽÇɆ–%]´ÒÆ™xf¾yØßX.v]+±ôã‹u2Ù?gVŒãÀš,¬(³ÏÑzÿüÊì?“ïûça¿‡ÄcËÕßO¿ÿœœ]ØJ…¢ÛNFèäø×Y+ñÐo'ÇvDј!noÇ!‘rã[ µDY›Ò€Â¾¨ß¦Ÿàìãe•´Ÿúè hòk!«£© ƒ <t*Ÿl‡1†²2IgÃŒhC1VKÛ!Dù>-óUˆª,ª¡þ“³AB{T«O–ª´(³¬l}ÿM‹ÄˆšbV§­1ý:ã,®m‡FÈè5•˜üºÉ |–‹Ræ Ñ15¹]+c+¨O @ŽLêmŸÿ¬~5ýa„[K¿¨LpõRÏt‚J{[#db Âä./¥èñÍ€¶=/âv qÛðl' Iþ+!à ñÝT(Õ*‰¼rÇÅi¶èÛg®¦¨Ò¤èÞ«9qŸ5[ôñ«À¶ÉÙh’÷À«R𻸅þ“ʤ~¯T‚a ÇŸ8Ö;á‡óTVµ3˸î—ÐÜð醩›8ˆ:c˜sJ{#Í0FqгÌZލ‹Yd"6††&H7­X$j”êfPÏy3¦ëyQªOzÈ˦‚1® ¯ûu(Ã~ËSÖ•¨%º#G{°Äïu¢\—ó‡gêç‚AoÅ©4»·ÔÞ®Í7šÛ¤%J+øRw›UKý?Y¹hŸÑjS—šR™ ÓxRjj‡\s¥lWà‹K±²ÓVÌ1 Û*¤È˜«ñ­ë°B½@î:2^ ÚPŠÇÓCÐOÍÅ”úa‘&ä¦OWzgû>âY‹4ê§°U|Gzð|íõ|Š.uºRù×Õ8€>bˆ¶JQ7²˜êiv>¯šÅ"½M%Qʦ–êårj·?“°£\ÆàtûÝ}—\ W+Kù¹ÏùX $èÎÅ㨻]Ñ0Ü;ž5âM@Ì©ýðR„U endstream endobj 2113 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F8 643 0 R /F5 535 0 R >> endobj 2097 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2113 0 R >> endobj 2116 0 obj [2114 0 R/XYZ 106.87 686.13] endobj 2117 0 obj [2114 0 R/XYZ 106.87 668.13] endobj 2118 0 obj [2114 0 R/XYZ 106.87 649.41] endobj 2119 0 obj [2114 0 R/XYZ 106.87 523.44] endobj 2120 0 obj [2114 0 R/XYZ 106.87 502.95] endobj 2121 0 obj [2114 0 R/XYZ 106.87 376.51] endobj 2122 0 obj [2114 0 R/XYZ 106.87 356.01] endobj 2123 0 obj [2114 0 R/XYZ 106.87 356.01] endobj 2124 0 obj << /Rect[141.29 116.97 260.77 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:create-lazy-map) >> >> endobj 2125 0 obj << /Filter[/FlateDecode] /Length 1139 >> stream xÚ½W[oÛ6~߯ÐC$ÀbDR¤$ -°uóÐaë€Z’ÕÆØr¢Í–4]Z{èïáEw; ºañrx®ßwH[ò<ëÞRŸ­ïâëe`E(âV¼³¨Bn¹”ÊOüý{;B 9nöòÍ»Uì¾þùÛÕÊß^þööuüæ×·+çCüÓõÒï•ñÐò”L˜Ü·~ˆ•)faŒ"6°Å1 Ig‹8.ÆÄ·EQìOÃþÔÇÐCúXühÂN„xÈŒ¦¡õyá¸$°“RÔy)C£vZé›*Ùê•:×_­Mm ½²k²Mæš:áRf¹&Z0sµn3ˆï{µcf¿å}õjíLôôq]ˆUSh?ó*Ñö?9Òk9&öƒ“ƒ•ú!1þåû}.7>¥ÙýØe=Û&k‚,=CQnˆGÊåÚ¾YènÁcåÿKU'ÌdÑ—IÝ”ÙZ¾ÝVÍn—õXËnr³väß4~—`ÄùÐzÜÕEW«Èä¿\Ç‹2©*ˆ¥ÒwµÐNLLKs<ù»I?:ŒÙbŸdR ~27:ú—Ú{ȇУ;ýÙ˜°ÐFÔV‘9<„„š-»¬<¡ô"›ˆ"âwt¢#:Qô>Æ)B8âÏg•˜1ßGÿ1«†r°™µõ+àOºæùÎl—÷ÍÁÔ±šóчŽAÏQR|%'—NHmž8ûd¡]I³ P yGCbe~_ŠÃb$éÛMÒ7­ å&Ï¿O= cf>9Š¡ë³»K÷ ÚÌJˆmk8O! `›üŸ LõÈÒ¼ÿÐ2é¬)Ûœ}:Ú‘Fn’xŽ–â /å˜ï¼»HDÊ´#¢oˆ¸)Q'îA²ìkö⟓\}”ž4 ˆáGè ÌוëÍLë nѰLJK±§8Ÿ*§ò2Pü„•]^äË‘^Rš%„§È¢! ±QüËÜ.QÐõÙÖ˜ýg²‘4u}œ‹‡…2OÅã’ I‡ÕôŽíZü¥®ÅJOU á@W}Y!Õ3šƒ7Åé[ZLµøŽZ‹Qü j=ª }ÇlÒÝI‹k“§ë!—¹g"-eÄ :14"›Ç ¥ÃFB½Ç;í•næZó§×ZxæZ´Däò½8ä\-eâ`Cƒãñ¸èW‰ŸN§þÒ#ÅhHUií“l[uf;ã›Sõê³²ÿ¹í0­óüiI2–׿Èá(Œ¦Ï‹)¬#D£1‡T5^ñá= —<# Xº%d‹ø}×Ôz[•XîCÉü¶žr®ê)›üP4µd¥”R¸.>Èô3> endobj 2115 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2127 0 R >> endobj 2130 0 obj [2128 0 R/XYZ 160.67 686.13] endobj 2131 0 obj [2128 0 R/XYZ 160.67 668.13] endobj 2132 0 obj [2128 0 R/XYZ 160.67 644.35] endobj 2133 0 obj [2128 0 R/XYZ 160.67 624.24] endobj 2134 0 obj << /Rect[195.09 285.22 262.26 294.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:break) >> >> endobj 2135 0 obj [2128 0 R/XYZ 160.67 263.46] endobj 2136 0 obj [2128 0 R/XYZ 160.67 235.08] endobj 2137 0 obj [2128 0 R/XYZ 160.67 209.86] endobj 2138 0 obj << /Filter[/FlateDecode] /Length 976 >> stream xÚ­VKoã6¾÷WhºæŠ/‘²’6i·èa‘õa‹ºÚ¦c£Šä•d¯ýï;ÔPŠ,;ZôÄác¾yÏ0Jh’DÏQ»üÝOß?Ê(£YMW‘14•ÑDj`ÿóŸ„ñ4þkúÛûGÝ¿a™¡:‹’öþ§_ï>Mžb`á$£ñDkCîï>?øA~ÿxÿt÷Nþð0Ñô¨"&©‰)£†·ˆMã c\‘«l³) ÀÒŠØb‰Ä‹Ýn7ÅóÑL aa²¤,@®ÊÊÙE,YÙÏÀ’Œ&¢eŸ®zÀôxB¥ @Ä5>yÅ@ðîÉ®X3À% }”Åex-IsMö17ÄUèU‹µûºsÅÂѱ6êL8¨ŽAûaÖ«5Q\’qûÎÓŠÜØê¹¾Å­ù p š±¡%3r³·>—§Ï™¢iÎAWËͼ\oǶO8£©†ESб¤{8çÄìË6w €KIpo{¼*óŒOÉ7[8bd[•Ï•}Áû¥›q¥ Wã¶çÛÇJ[mì> endobj 2129 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2140 0 R >> endobj 2143 0 obj [2141 0 R/XYZ 106.87 686.13] endobj 2144 0 obj [2141 0 R/XYZ 106.87 668.13] endobj 2145 0 obj [2141 0 R/XYZ 106.87 553.88] endobj 2146 0 obj [2141 0 R/XYZ 106.87 533.39] endobj 2147 0 obj [2141 0 R/XYZ 106.87 425.91] endobj 2148 0 obj [2141 0 R/XYZ 106.87 405.42] endobj 2149 0 obj << /Filter[/FlateDecode] /Length 728 >> stream xÚµT=oÛ0Ýû+4t ‹?$’­c A“ EÑ ÑVwPlÚ`K®$'ö¿É£ù#F–.:êx÷޼÷ŽAŒã8˜ÎÜ7ÙÕViÍƱLƒˆ1k²ï‡‘Ý<<üºýö;4›e·Ùcø7ûyuÇß’©Ä© b—H¨°ûÁmæJ$!X%½)Á’îkÐ0"„rÔè]Nt¤·EÓ6Ç%â "3éò²…†}¹ß§TùœG`)&ÄGÌ6å¤-ª2Œ¸HP«m¸Y¦èe¡Û…®á'‡íu­§Å$o5xÕrê£g•lª•†`½Ô+]†T Õ¬³M‰i. 1çè.O®cEƒÈÜJA«>O:%¦mCs•ÑÀ®4Ìëy3‡®’ieX”ñ™c4|Îë\ c|†$–ÙÞ‘‡OÕt7ºÌ0Ë=Ãì˜á¦ªÛ>?V!Q†+õ.Õ1æ‘T„rLÄ ÑŒ¦.º±KÃŽÁu¾Ž°ÁV‚ŠBòÎÖun Ý…’¡øæÅ³uiœƒ™T«u^Må3»ê¸çÒßCI¤QŒùy±Ÿ =1Ù³% ÑÖž MÑnú\Ål”7ÿÍ¢Ú,§6(Fµn7µ÷çà*õ> endobj 2142 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2150 0 R >> endobj 2153 0 obj [2151 0 R/XYZ 160.67 686.13] endobj 2154 0 obj << /Filter[/FlateDecode] /Length 116 >> stream xÚ=Œ½Â0ƒwžÂãeè5MªænL åG (ÜR!Vxÿ7 íÀdÙŸmxö_ìrF±~¡¬ìžFt1²¬þô¢!ˆ{Û­ŸÓ¿3¨pRø/ùaµ¹uHÙu) •ü¬[é~--7'–íÕ?ëúC endstream endobj 2155 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 2152 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2155 0 R >> endobj 2158 0 obj [2156 0 R/XYZ 106.87 686.13] endobj 2159 0 obj [2156 0 R/XYZ 106.87 668.13] endobj 2160 0 obj [2156 0 R/XYZ 106.87 459.07] endobj 2161 0 obj [2156 0 R/XYZ 106.87 436.09] endobj 2162 0 obj [2156 0 R/XYZ 106.87 413.39] endobj 2163 0 obj [2156 0 R/XYZ 106.87 413.39] endobj 2164 0 obj << /Filter[/FlateDecode] /Length 1219 >> stream xÚWKoã6¾÷WèP °bDRÔc^ÒÔ…‹n lÜSÓƒlÓ±º²äJrÿûÎp(›²³ÛžDrž~óÄ<ŽƒçÀ~~ î—w3Ș§i°Ü*áyDB¥\Ë`ùð'ûiWÓ…‘Ê&âð¯å¯Ö"áYŽq%ϭÍÒœß-p¡YÙlhÑŸúÁìÑm$ØQ{¹`¦+‡ªmz«ðóÒ%&®/1™)^¤ÖNÄ\„‘2±q)HSî͵ Á í»(2žegg'ORg.}Í6Uç{Ƀ†Ý:æZpÊ…¶N¾b[_ƒ“Þüs4ÍÚ<…¸×ì#}fNA³G§`½ ÍÓª-Æ;æã‰IäÙœãc¶ß ÿ@ò¯G×ÿ/úÝ,9"‚ $ Ê @¢‡\îœÒ¥ZRðXÂs£ØéÊ ¢¨prÊ•¹€Åhî^Ä·1¼…ó~lÖ„ŸHå9Û|ÎQ‘¬nÃHælmUÍÆædÆ ¬šP¦l@½Œufk:¼lOvCKÞ½{€8æRúu#ˆ'æhÖCÛU¦ç!´…dóæúN9\Y¹¤Û}ùå¶&€¬Ä) µbÃÎP€u»ßC´žv6=ø®ŽU蘕NRvÏf uÙ9cófÖÇÁ¸\«†,†Ý,è†<óïE^~è±xÉùr§0— ¯|¬,\P ~:»Ôl_† ;áF±•-½S‚ä±ÜN䕋Ę:(oª&S ‚ì›eËy‘;…C•Ñšý î¡„²H.×”…âJû×Ë—Æ#GÙ5:k¼T ‡”Š ŸW<†+æx<°ïß5ÀoèŽëÁSPM•” EGöIàÛZÜ‚Ð+¹,8ê¼ÐOdìØZT[ää öeÓâÃÐæµvíÑi˜·C]­«¡>‘pO=²©¶§ªy¦3ÂÈ/YÂ!R,>¿*lÇ[ù¥û¼©º; †—@ ”t^U¶m]Û¿RDõ§†ò ¡¯{%XáÒÙ)›yèá>öíàÔÖÙi¶$.i{ÎÖmG¢Ii9ña‹ÄO}†2kÔjÞÊýæfŒY’¬K,6P¥ÿþ°-éã¿?RM;‘ºÜ®á.%—b¤¶¶½a>ûH"ö©eâʃi»îBkÒÝ5rð×)òµßå~&ì ó¡ð ~¶XИù‘Fƒ7ù4f Sçæùùã÷óÏÉrUÞ°xóLûaæ[@—HÇ–Ô%Ç_ñ9›ÛÔù”]U®0CôWõøÍùÐ8ȃ¸Ãò%ë×€ñ”¤óNæ~¸þ¸²#eÂ’°M¨)Ûuí§à·×q¡9—*æüî(q!EîXœ¦ò…# G‘QÞôÀ ¸h·ƒih <²Á•"*–®Yí¢=Dµy±¸¯ñH°Å§ò ÂÌŒ †‡ˆoÔ÷è“ìÎÆ!ì²½n¹›Ùœ!ˆ-'³9ÑÔãôä…ªÞ\Ál÷£ò®tîéãá¥,¸‡× ’oøÅ2Rïxe2Ë,÷ô$¨¶gÝIˆ;:džåªokËÿÝ~Ÿ‹åuÿmÆ_vü½æûm~?nc˜öïXÔÕê=›ûùï_·YU ÙLÚ ÉyЬ9ýe²p?ž¿û)»7é endstream endobj 2165 0 obj << /F5 535 0 R /F8 643 0 R /F4 527 0 R >> endobj 2157 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2165 0 R >> endobj 2168 0 obj [2166 0 R/XYZ 160.67 686.13] endobj 2169 0 obj [2166 0 R/XYZ 160.67 581.11] endobj 2170 0 obj [2166 0 R/XYZ 160.67 559.99] endobj 2171 0 obj [2166 0 R/XYZ 160.67 461.63] endobj 2172 0 obj [2166 0 R/XYZ 160.67 442.56] endobj 2173 0 obj [2166 0 R/XYZ 160.67 224.89] endobj 2174 0 obj [2166 0 R/XYZ 160.67 203.89] endobj 2175 0 obj << /Filter[/FlateDecode] /Length 1486 >> stream xÚ…WÉrã6½ç+xȬB$p™ª<±•85±§Æº¤âh ±†"‚²ÇŸn4¸‰´sÖ^ØË{° p¾9føÍù´Y­…“±,v6{'MY,?ŠX ëë¿Ý0 ¼6¬ÖÉp'b¡psüëïW_67_=ˆÜ0`žŸ$©»¾ý|óönW÷4¹º»Æ‰pþzØÜüI›÷_n¾^y)w7·÷wdhpÆSÆŸ'f Öî«­ò|Á…Û”¶ÓgOJ7oŠü©T·"XÙ³zä2©Ô¼"A±W:ÙæMž<Ÿ§®½ÖjG³¢;>¥ÝÚÖÇc^ítÜuüP° "†,“ÆI}&•»¢QÛ¶n ô*Šc77câî벬=»/ƒ”÷å Àcóõiÿõ¡™èâüó£ûéöîÑ» Q$YÙ;/EY’%õ㎒µ¶¶ãAÑl£{Û¼-ꊶêýpçÒ ^ÄÖÂ}ô$G¦' ûðWÊq£J0õìñ£Œ;Æ%vÃF–ê£W‹ê­Õµ=·jÇæ®±8ƒòˆ˜ÌŒá¢Òm^–=_B‚ ÃL9¢›ƒ‹ÛÞ‘öŽ™Ž#ìÜlL_HÇŠôÊ€eœ:#`!ãhéöxÂJ+ÕX|äj1ƒxœa°lFAh_€ˆq÷Ô¨}ñìo>Ò°.¬Æ`ìý²èÑçý;z8¸Žu‘ìäòCÛ`ðgfIóW'5Ác–Rf8‰næ…ÅA¯-«îc.Ô@ýGÒ^ÙŸ«-Õ«Hb(©öÜTš¦ŠpRåG3£zÆœ–ûF都¬Ž'Sþu“câžMœ¹ZTƒRS:IÊÂIé\jÀú* Œ½_A< pì+(²dñd¡t‹ ¿xš±¸Ï?ú‰©Ë6ïÐóI·É1ó«¦É_Y/€ ÒeÅ®a=Ë=hŸ\‚5UcF.“Æ[&ùñ;ɺÔÎ1 u!ñQ¸BhºÛ²Öª|¥M0ˆÛxb°Ç(P–©Õ»£¯œ˜…íŽ.ÅMëZ¯Ê• –†^k Ä8ŒÝÛÖz•78¨©¸x29!¬XŽ!—… \CZ°1„‰- ºpt(ܼß~Zx†•`©D.ÔùœƒÛbLÛëû{–_z&î¸MÂÕ–“'ñè©~ÒJ‹Ž¾î5`Êþ >ôK0ÿèuÐÙ¯ÀîœÖB'cZ»«1–< l ñeàÁ.ço£]´„v¨´®âp–Û¾Ôƒ ³ozÚ ˜b½Ì^ /ùÎö]½›£V4 Ö£{)‡‰=\/AÞHx 1S¬S:¾^À[9Í1aÆ9ÎeßúˆUÂËæÅ«°Äú”kežïÒ«äiÇWP½Œ)#¬Fý¹>¨Ï ÿš,£‘žç[²oÑèÛo¨{ȾÍGŸ9yEIÆ“9™ 1¼¢"!í[\P¸h†ÚìéÞÀ;LrÊB·43`$œF¾C:ÚŒµù”Ú4`é8._DBOþ«l¸ðR´šy˜g@¦Êw=ÎMþu˜?k'¢€J™V“P£Ž!Ÿ‘€ÞDÔžÓ®FœÆ…°Íg¶§o QQAbâ2ÇÕ$ÑÑp?|•³úÜÒæJµÛÕ±Þ1†ÛºÚÛm€!v,ç€ë‡ðÏoútP]§óÛ?ZžIɾcósËdxŽUK:2èúñ§ÿìÄ6î endstream endobj 2176 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 2167 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2176 0 R >> endobj 2179 0 obj [2177 0 R/XYZ 106.87 686.13] endobj 2180 0 obj [2177 0 R/XYZ 106.87 668.13] endobj 2181 0 obj [2177 0 R/XYZ 106.87 651.58] endobj 2182 0 obj [2177 0 R/XYZ 106.87 516.13] endobj 2183 0 obj [2177 0 R/XYZ 106.87 497.35] endobj 2184 0 obj [2177 0 R/XYZ 106.87 399.06] endobj 2185 0 obj [2177 0 R/XYZ 106.87 379.17] endobj 2186 0 obj [2177 0 R/XYZ 106.87 292.83] endobj 2187 0 obj [2177 0 R/XYZ 106.87 272.95] endobj 2188 0 obj [2177 0 R/XYZ 106.87 199.57] endobj 2189 0 obj [2177 0 R/XYZ 106.87 178.85] endobj 2190 0 obj << /Filter[/FlateDecode] /Length 1175 >> stream xÚÍWK£F¾çW (B›~¹%Úq´Q²—õ-αaMd› àÙÍ¿OÕ¸ü˜‘6#íÅÝ]ô£ºêû¾j K’àS04¿¿¬Ë4ÈYn‚UHÅ2ÄRb³z÷gÈÆY§i.ßÿþÁ'~øù‡Ñ_«ßKå–ŠŒ™,Hh™äø=xX è€s–kïÃY&Ü :Š9*ÜÖí±8”þÚì|‚N˜ÖAœA#‡¥?¬Ï b ««z_vë:ü‰š}[?Ù~ùÏ©> endobj 2178 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2191 0 R >> endobj 2194 0 obj [2192 0 R/XYZ 160.67 686.13] endobj 2195 0 obj [2192 0 R/XYZ 160.67 668.13] endobj 2196 0 obj [2192 0 R/XYZ 160.67 651.66] endobj 2197 0 obj [2192 0 R/XYZ 160.67 553.27] endobj 2198 0 obj [2192 0 R/XYZ 160.67 534.67] endobj 2199 0 obj [2192 0 R/XYZ 160.67 437.06] endobj 2200 0 obj [2192 0 R/XYZ 160.67 409.1] endobj 2201 0 obj [2192 0 R/XYZ 160.67 388.56] endobj 2202 0 obj [2192 0 R/XYZ 160.67 304.07] endobj 2203 0 obj [2192 0 R/XYZ 160.67 283.52] endobj 2204 0 obj [2192 0 R/XYZ 160.67 174.2] endobj 2205 0 obj [2192 0 R/XYZ 160.67 154.49] endobj 2206 0 obj << /Filter[/FlateDecode] /Length 1449 >> stream xÚ­WK“Û6 ¾÷WèÎÈ3-R¤½m›Ýf;i²“õ¥S÷@Ët¤Ž,¹z$»ýõÊ’íÝMfÒ‹ B‚øØ YzŸ<»üêý¼ZÞH/cYì­v^š²XzA±öoþôy$­~[Þ$“LĸôBûù—·Ww«ë Ј|²E$©sûîú5ñn—ˆ¸zÿ éßÿq¿ºþ˜î®?^-Rá¯n?¼¿Çƒ¼ë•uIyœ³LÍ|Š9Kù2Îx¸8Ê/š½©õÞ̵ӣ³<”,м YD7zµžT%¤¿++Ó­¸QþO´Ü÷mYr´ùg0uNpÅâÌ Ð92gµÉӽΥæ<Ê™„+ ÁYYNhò\„,Q.Ìó;Î IŤp2»¡Îû²©!²*ó[Óm ŽE1÷{°DèÓ¥‘Õ숣iY •TîSY¯/«­ÓÛ5í4NýÒ)Hý¦ëÊMe˜M³p Ž:^+Yìµy8èzk¶´Gƒ‘ºµ2ÊÏ›ýaèG‰Jÿ[VR)b{óðÀI_ ŽdIz<éKYUίnÐUõHî ¥Pcæ¿ù¼PÊ×Õ {pRreC«®q¾ÞtM5ÐWát_PŒQf¨è{Yá6¤W@) vÛõÎ F9°Ñ鬃(á!Âép¿3<œû·-[“÷Mû¸H#Ÿ½Œž¤x» @ܨÖ"æ/ã‡g ‹Ä nØíʇïƒz>¤û}Ðá,_Þ¹zf&R,ºÄMÍp“I‡ \ˆŒãÛçABÓR•øšHYXÁJxê Æ·»ñ#Ø€.´³Y7”„ Ç8Ï Œ;ÛÕSr ˆ™ÛPT'·ç2fè1q+üÎF–Ò„K–aRFö˜L!¼—Â7z¨ œ)¤ ±­élšžEœCµŠ]@OòCaŽò%üˆ¥fÍÐsiú|©½k¶¯ ….ÞžIÉy0æ€oÛœ;0>‡éH8â¢B@K;Ù9z íå¼#†!Kè:w‹JA_€' d‰Ñm¾ˆB¿x‰‘xîh‹@üR”9,^†b$#ec¨Q©x‰O7£oÇáÿÓÈÆEΞ{¢‡…ÊÅò·°o ^C&š|èõ¦¢/15­0v¹D>´­œø½c4û=t Ú8Ó‰‹uÛçžÅ+9¤¿Ä‰J2RGÝæ¡cµÁ0^ÜO11fÙ˜¾è¶Œ\%AÛF;w,Ër©üÃ9%‘™ÛÓ÷²£Õv#3m;, MäazVW¦xˆJ¦ºé© ìš¡Þ~¥£Hx¹TMy,ŽylÚ“qìb¾”2eò›òÅY:Ëž=‘01Ý_·Ü—•v©‚W‹. 1VRhÇæ!7—¥[§2:O%WÞ²åVóéLcç¡\o™!Fg …^âÄ£È ´WWñ©üŒž™š¶SrÓ~m³ûD£i·¦%^é´è~1¦ 2“hÞ:7®Õ[‹iÔg‡Òt—ƒ…>‚Á(Š4ÄSΞ ª{è«»«ÕÛ‹wЧÿ ë#;·èmÊ!P!J;ƘŽö´Ž˜p*;¦v.E4›¶¶#›Ü ËÑO‰0 ­à¾0ÕE )öAh6Pí”ÿ7„å5½bm 'Ï8öÖ㇛ÎÕJDŽ­Dó. è08XÑä‰Ü­éò¶ÜP”O4ä)4µƒ¦¦o›¡¬ú`> endobj 2193 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2207 0 R >> endobj 2210 0 obj [2208 0 R/XYZ 106.87 686.13] endobj 2211 0 obj [2208 0 R/XYZ 106.87 668.13] endobj 2212 0 obj [2208 0 R/XYZ 106.87 649.41] endobj 2213 0 obj [2208 0 R/XYZ 106.87 582.67] endobj 2214 0 obj [2208 0 R/XYZ 106.87 561.91] endobj 2215 0 obj [2208 0 R/XYZ 106.87 561.91] endobj 2216 0 obj [2208 0 R/XYZ 106.87 435.4] endobj 2217 0 obj [2208 0 R/XYZ 106.87 414.63] endobj 2218 0 obj [2208 0 R/XYZ 106.87 414.63] endobj 2219 0 obj [2208 0 R/XYZ 106.87 276.17] endobj 2220 0 obj [2208 0 R/XYZ 106.87 255.4] endobj 2221 0 obj [2208 0 R/XYZ 106.87 255.4] endobj 2222 0 obj << /Filter[/FlateDecode] /Length 1191 >> stream xÚ½—Koã6€ïý:¨ TŒø{K›¤‹Å»¾5=(6 °åT’ÛôßwÈ¡ž–Û{âCœ!çÁo¨(%i½F¾ù9úqy÷¤#CŒŠ–›ˆ ’©(áÜ5ˇßcšF‰Ö:þm‘±ø~‘ñxùaKXüùñþÓ‚éø§‹?–¿Ü=‰^ˈʢupî¾GK¿›Œ(%F¶S”d¬ßN,J™ˆí{Q7uR”É[Þl‡*²n#™)£$9¯àÛç©X"AÕ¦ØÙúyá2þ›ÏMU”¯^-•î´I8¨ñëçVcßþy´åÊN­N¨"‚C£‰1^Ïrõ'f4¸åÔ¼¡.­IªÂÊͱ\5Å¡¯g*n,ˆ¹®ŽÿÞÚfk+ä».°ïvulòo‚ÿRYì¼U¶¶¥ YƒK‹ÒÛ–ó¡ù ÔE˜Ç«cUõòÚæÕjÁT¼Å±;:¹]* a¦¯ á]¯`É÷ GË0HoÎÎ|7lE‹µ‹Uˆ5ŠaT.ÄØ÷ï«*ÿ§ ·™†{$÷ÔMôRɉX•u›&ŸŽeSìíãûÊz¼H%ŒCÇÇí­üç%(S$3˜ ÙÙ…+ÅCæÿNo· Z†y¹ž* †6R0ŠëPS7ŸN²Ü%-ÏâÕaÿvl|šø×‰ÔWãà°Áö™I >$!Lš!‡nš1ÎÈõe#9‘ÙÉdŒuawý<ÌÙ.î0äq± Ÿ±Áb}€6‹[å%< €´"Õ³Aá)1·ù´¾ƒâ•mŽ8v¢âØj“ïê 1ˆd ¡bƒHȱiMâ\ IÚ›ä†Î$·¤3Iˆ6€b@Àä8“#Tìú L˜Q.;;˜¨wœrÝÂ4@eΜ›!gôÜ“|ªp×é*Ðw¾Ó>²Y‹S7ióvKÆÛã¹ZO’Ò¯îô"]Ïqq°¥qÑ}(™f¸xRç¢ù­ÑÙeHB?sC$ª€D˜ÆIÓ#QõH„é‰0à#1†HzÝ–t>¹ÎC’ ÂNœш!Ãã &íÎîú0°hT° JH÷S78ÿ ¾‘š#P~ó/> endobj 2209 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2223 0 R >> endobj 2226 0 obj [2224 0 R/XYZ 160.67 686.13] endobj 2227 0 obj [2224 0 R/XYZ 160.67 668.13] endobj 2228 0 obj [2224 0 R/XYZ 160.67 648.29] endobj 2229 0 obj [2224 0 R/XYZ 160.67 625.55] endobj 2230 0 obj [2224 0 R/XYZ 160.67 625.55] endobj 2231 0 obj [2224 0 R/XYZ 160.67 625.55] endobj 2232 0 obj [2224 0 R/XYZ 160.67 506.25] endobj 2233 0 obj [2224 0 R/XYZ 160.67 487.77] endobj 2234 0 obj [2224 0 R/XYZ 160.67 402.01] endobj 2235 0 obj [2224 0 R/XYZ 160.67 381.21] endobj 2236 0 obj [2224 0 R/XYZ 160.67 381.21] endobj 2237 0 obj [2224 0 R/XYZ 160.67 381.21] endobj 2238 0 obj [2224 0 R/XYZ 160.67 201.96] endobj 2239 0 obj << /Filter[/FlateDecode] /Length 1643 >> stream xÚÅËrÜ6ìÞ¯ØéôÀÉ2$E½rs»I§‰3ñöЩ{Pµ´­F+¹z8ñß (‰Ònl§éL/K„@¼îJp!V×+»ü´úqûüL¯RžF«íÕ*Ix¤W› à ì_ýÎd ×l~~O4—z%ìñË×'ï·§ÖðEÀ¤àëM'ììÍ/§Ï÷æù9'ï^! ÙÅoÛÓ·„<úád(¶}sþî/Zn­HáJjhO¦HòD‘L‚ë”*dgEi€U²¶ËºvÁAò4ô8$!‘—ŽÇ¥ ãÒlÌç¢íÚgÄ­ËškÓÅíæ¶©o'™iü“ÑDR€ðÁjƒ«ˆí•?\²«b¼f½ •¶ˆör›½ å¢kŠêÚ²À€T ïgB} §Hÿ&JðTùŒ,=}ê¨É ö;ówoªÜPÐLµQ’G±]ÒÄrÙÞ8"Ïl)bY¾±¼Â”ÇÁ@ÖWyWÔÕz£”bùZÅìÆÀ’°-â$ûtcºTU©€D”äô–6%ÜbvÛ+!޵Hމ¨À ápùÜ!Kò0žn6’-­m±/ʬÁ`]MÈîˆu@O0O$x$æA…‚ˆ½®×*bŸÐ<æÎþ6ÜR³¢£{ÓõMå$ëšÞ8Y¯fbR±àaâ+G²H0_0)GÉ4dCâ$«›¥Ü2@VtjïFV,Xó¬"àOðˆí6}Qv<p˜’“íW}Ó˜ OD=„iÈþ29úö˜(µðñ”2ZгÄdC(qΆÕUyO%Ðj¸hD`´’ª€œT…͵©L“Ù(µª‡¹ª€˜«ú`]T*äñTZ¹r…Kê¦1­é®r ü*ƒ¡Æx_ýÕåümö­éž&¬om®§)Ëa¥Ì³óáÆØôPGK´Â(u±07Ȭ$…\Ň% .r–À«ätì³^2UC>TWu³Ï6”|ˆø,÷†¢0 £„¦ÈÌuqg a ÆÂgÓ>Aò=a)ÕœPL%ù¨ŒÒz.ä$ 3?’aÓ˜¼Þßöʾ •ùÜ ÅEs-ç î] .¾mõ„Lh0$°|?äJ1ÐÆ üîß™fÞëG,¥ÿÚ›’‡s$ЉgÆI`ºòËir<ðººã6Èñ±£r7p%V¤$„ &Ë·&³Œ¸ÖŒ P6B¯zÖ\vÃxjšÏ–\"®æ<<_úLb(ŠrdÎÔ,«v2ÙùrÆonăŽ-O)¯l ù ªÇÑ2Á]Ci̾Ƅ¾så-¼i ®šzO¹‘Çׂ®èÀÑsסÅ$‘æ)˜^ÚIƒºz¤–zÚõ‰¦Ú=x_k=õ+(‹}¹Håñð‹M/sÇnX[jQä+Ôx‚÷­‰ õØêx8tz@‹±zfÒWÐ`jaÔC eíp4 À×Sý, =6NH0/LÆ)bÂYS/GåFƒh æÆsãÌWÚî‘H‡Ù5ñm8šIˆÉ†[ 1:dmëdCK—¹c²–ðGD1ˆÈºrÝ…dñ³ë맨hùdUŒC£}7š vUÛ—ËËh’—&«¾' ™êÀR0NŽŒó ÓÒŽì1p½î ­UKˆ¼Ëe„‚÷Ämi¾¼<hC•EZJ¡c.ïŠR@ŠzsnOo9x!–~u “b1^fr l\µŠ¥ó¾Ñ S8â1¾cánŠØÍ/€ÉÊ’€ÙV¶ƒ>w|Ê¢åßMØ~T …T…ôåÉÆ…_ñŽ…RñppÉ=®îñ ®¼©ûrGð((nò¬1W}9;áËÞ£”]MkwS@ÁßDQdû©Å‘ñ©»ôÛòé†%UÏZ{VÝÄn:üñI&CxÀÓ,BÍcFWôÕí:„DïLÕh›òà 2”Tº 0ÇɲjáÁ•ÛqRR ª;¶AkU“TÓŸ1ûˆ¨˜V Ù$lûfxõª_:³ÒaU‹†ðÆÛ=L­C#ËHp\»íôh–”ãäoÜfy×CDßÓ®íóÜ8­vR¶56‹(m:30=èVÛÙºjßµÅÎ,ºîƒN´Ÿ ›bË´Ù™Òxøwÿ›S endstream endobj 2240 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F11 1186 0 R /F10 1169 0 R /F6 539 0 R >> endobj 2225 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2240 0 R >> endobj 2243 0 obj [2241 0 R/XYZ 106.87 686.13] endobj 2244 0 obj << /Rect[179.94 300.47 321.77 311.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:dependencies-proper) >> >> endobj 2245 0 obj [2241 0 R/XYZ 106.87 276.47] endobj 2246 0 obj [2241 0 R/XYZ 106.87 255.7] endobj 2247 0 obj [2241 0 R/XYZ 106.87 255.7] endobj 2248 0 obj << /Filter[/FlateDecode] /Length 1732 >> stream xÚÍXYoÛF~﯊>P€µæ±¸\ð‚Ëe‚I˜­?©Ý¾Ò 2ƒmxÉ5¸DU`«âÉ…øè-…ËÃ2ÌÐàá:CKâg×"€úFeW6µª˜57rà¯Gû50w GÓ¹ôJøÈB£qjŒd¡Ó‘lu08K1Êàý$Þ_:ï0ôýØSµÛ±áïðp¹ dålD>ˆpª?9'Û‰œPÑWžÄƒ#zt€_· Ù‰ ˆh¡ò®t†GÆ­{¸à¼BoT_‘–°|àÀÊAZÿhÊNó‚A‹MSU ®~,뻳JÀ–t 1h6A) > Xp}IÎÀùå»÷¯.>¾¿8óêÍÅù[‡]s<á78Ä_rDéÙÕϑʩÁÚÑp¦„…âÕ´áQiÁ¹Ù©{]Ü§ŠªÉï¿ Ý0W‘ÇBç1¨¢ÀAdŽL@> ’Gù'.ŒyaÃËTÅ¡“1ŽÎQG  ÎE.9ùº[fÁ? jw½.ÍgE£›^¸çJÿÝCäé/Çøõ\ôEº¨•ì: â=ÅØWy­V&Ç*kK`è'À‘ŸyC„“Ү缻‘ó0ð^áj´TÄé3x£lŠU 4-Z¹}!4»‡ ÆRăÀe5³`WâJ;ª5m3÷˜X¶`õ;~hýˆ+±›AÊÄ ‹Õ’{豕Ð<ñºÓAñþ¢4PÊ6æiV¨¥–ËÀÒ™[ ævJR’ϼía–ò´-¶îYû"އל³•ŒEàÖèO`{)¹=…£Ûæä  =î”l-âè+.+mz5ºë äDa*…|Öu á%養=Û~¿§â»¡Ê"É&,¦Î ©”ç&‘ÌÄWüá¶#ÚçbÎc VävUÖ­;íxqÕö· ä/EAœ‰ÔU/­ÉOgQ‹ÈÀäZRCJßkj <)mlãÀ•›‡ýH•ˆ µÈgÿ²@¤8YPû9¢Hç·MÓÌ÷Oû?ü'Y0‘PÏšçäP¬£ÛÖ ÀÃÌ®ª²XË$*Š}óþËÊF`×`bWT¸á-4ù›9ú£p9yVªdýÐÝ;­éŠ v24Ø‘P¹ÇJ‚ Y<Õҵ鶤®QÛvC´s9ú›Âè | endstream endobj 2249 0 obj [2244 0 R] endobj 2250 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 2242 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2250 0 R >> endobj 2253 0 obj [2251 0 R/XYZ 160.67 686.13] endobj 2254 0 obj [2251 0 R/XYZ 160.67 506.35] endobj 2255 0 obj [2251 0 R/XYZ 160.67 484.47] endobj 2256 0 obj << /Rect[159.67 459.67 313.35 469.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:find-targets-in-path-optional) >> >> endobj 2257 0 obj [2251 0 R/XYZ 160.67 411.33] endobj 2258 0 obj [2251 0 R/XYZ 160.67 392.89] endobj 2259 0 obj << /Filter[/FlateDecode] /Length 1608 >> stream xÚ­WKoÛF¾÷WhR@¸&—ËWpb¹u‘ÆA¬Šº‡µ¸²ˆP¤KRqÜ_ßyìJ"©:9ô´Ã}ÌÎã›o‡³@Áì~FÃ/³7˳K5ËEžÌ–ëY–‰DÍü(|_üé…Q2ÿkùÛÙez؉PÍZ~ûëù‡åâãND^ˆ¹Ÿ¦™wyõnñ‚ç®Î®Y8‚ònþ¸Y.~çÉë‹çóLzË«ë÷7|Q¶¿ÈO¤ræË”&ຟn½uY~¯Û{Ów~YûºßÌýX*¯*ïPˆ½®]½`imŒh¬Ø4¢¹ã`»/#‘“Êùðâ‹®vº7ïî·1 EÓNP{¶W¨ø•²Ù‡ú±È3¸![nÌØ3X‹lOú3Ò©HCw`W¯ú²©!‚a쵺ìÐh”5Í%žùº2‡-åšÇì õ[§•áÉ•®îY„èÉÌ#[Ám%Ñï#÷×Í®. Á*ŒN¹‡"ˆŸñÉoÈ$]Mœ‹•¢‰sR^WV¦žËÔë«'˜‰r¯5Ûf.ïËMíxÒÞÄ†Ë Avlx¿Ñ=ÃÍ9 ¢s– i]›&)—”Ç4}Ͼ†VÜmLj ÿGHÎK*îxf÷ï«[ÊáDå @ñT ˆ p¯A8@¬¶Õ³9tú'ä!d ÿOè‡b“æ› À’¥"J&`QÀ¼Ã‘ ‘z¦}⯮ܖ•nùBÈ#›å<È&Ä©Ô÷Ay© “C-MmSW› '×+Œ×o1]†?Qa&©×Ý®pfÃßènÞu¦xak4ŽFŽàð¸1-sÀY‹@ü Ö Å#Š!0•ÙbMAx¢Yófƒ&X\ÑuÁSVyNÊS§<ój½µJly•õ=¯X¥‰·1Å1ŒK--„GI¦¦"á« c“TzgýPöº*ÿã´f/î8ýLJµ%ïIÙ^œC¤±î­{ÓÝ®¬ }WkÜlÕ:¨ Ên` ²ÉÀœ lÁh­A±6_{ñ|aFÀ5q~(Ìä¨0+ãwMÛŸÆm(Eøng"Odå;4maZÇH°Ô÷ÐÇK.KÄJ7æï©Wìy‹$?öžô°J{òÜ„LOâD· vž¾cðz†‰Pê›Ïg*÷$r™cEq ’鳂ÇÝ…4ó*»ž%.‡Ì†ÝñÄU'+ ¸Øý õîÞ•–¹Ÿ%Bbç´(¨Ö[Ï^óœ1œiw?ì©€o†³,j,w ³–#àÃ×®£ÂC±?=xpS×À‰ëпbňGÞÁäg­8‘ _æ€ÕÁ‹+Þ|ºzwqRsiuš C/ŽqµB BaÖzWõü6S€'o³oÌ °c¸ÇÞ+:ùÚþañ5?·Ç {9Ï"È Ì0_õö(¿ºÝÑZÓY3©èYÞhüà®däͺ©ªW™ #É)'çÖ¼Ç&zä$ <>*ý’Kɶ«i½ÝÙÅ Ê/Ú q±¸<ÿôniwhV¿¿…†â4˜ÕƶÓøÀæà´æiJŽ(Àv^WÈÆJÙAaÛÚW§ÒÍ)ª¬E\hJV±[Q­Î*è!;D×(Øa®Dæø¢EÚš?®’D¸V„~|R(l5Ñ€²³æiþæ*bJתªDDé ŸC ¾' ›ï/ÒkôqdˆTB¦vC‰Ô&óªˆñjêx¶$"Q>,aØîㅛˎçÖ-Ñ2‘õÜyL¯bÿäN²Ä4is£ê—ÈÅ~$¢ŠQÿýÖŸ©˜ ·h¹6¢ô–-W {”<âé[Û "]ßïô½c×E˜}÷$ounÃãÇq¨¨Y;4#Kw(bzåbnUTn- ´½æ¶P¯ ½2ŽÏwµÕÂiÓ ((¤ëoe"Çù¥1Ø¿†ð –ÐÎ?q<¹*~pÞPjjÌ%î|,!v³æ¹çpB.œ'ü-È$yx¸´5º£†+Œ9è8É¡EÉ;˜ü}M ?™C4þ7…Þ‰ÿBìžÝKq2ó[Œÿ®³@êsMÿ‰õ` lÓ3c™2kóf˦…Í[S¸–í‡nÛƒ. endstream endobj 2260 0 obj [2256 0 R] endobj 2261 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R /F10 1169 0 R >> endobj 2252 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2261 0 R >> endobj 2264 0 obj [2262 0 R/XYZ 106.87 686.13] endobj 2265 0 obj [2262 0 R/XYZ 106.87 619.95] endobj 2266 0 obj [2262 0 R/XYZ 106.87 395.34] endobj 2267 0 obj [2262 0 R/XYZ 106.87 376.36] endobj 2268 0 obj [2262 0 R/XYZ 106.87 275.28] endobj 2269 0 obj << /Filter[/FlateDecode] /Length 1822 >> stream xÚ¥XYoÛF~﯊ kMîòl‹ b.ÒHÔ‡¢êE­,6©’Tm÷×w."¢Ç÷˜ó›Y.\庋‡}îoÖ×·Ñ"QI¸XïÆWq¸XƒŸõÛ_ÏU¾Z®¢(rîÞ½óæþÇ»%lûÎëßâÀ8·÷ïnxôîþãö?.]}ëLu¬Âxá2Cñ¾çö+ãù‹•ŽhÈ6:ÔS>ôe.ëƒå;›ªnmÍã,-yP•Å3K‰Û¼¶ÑAT؆'í!m™ ­…Ñöœ»t[È4/y¿í.ÊÎumË¥Žaxª«å*œßlÖª¹J4XiO¹ñVè1/ íÓ¼`ò}§‚ØÙÓr¥cÇ–;[f9«8R,{Ί<# 7kòw8õ·n6¦s¸Q¡ò–°è'cß©Ï`›‰.U¢éä=ê(qòåq«jšœ¬Š[mÅ[ûs ò×¼˜UeÓÖ)Z÷H1t– ƒ‡º:?&çFøVûáPÚ×סóz´‰V@©=•$5©L<–;Ò`ЬëíxFbÁ·E×?.Q#&oZ{â|öQ¥õƒmy|Äç¦eò-~!+r8-¤r-/Y7î­«COE]Þ¨÷ÞÞ|˜¥–ñÅ|÷7À-An;Ò&¸¸ÓÌ'y’JÈY éj?Í2#AÕ1F“:±#!öÿºÚÍáûhð.”6Ìzg1ËŽ©HpJ[pµ¤Ü˜ljj/Paze¢‘e¾†dO¨~î …Ž²„©dCè¾Rûª¢qãmZÏ#cv¨F'þ_áñ‰·7·¯z·–)ÞÁ¶t 3:KÃ]Ï•ŠÇ—Ûì G_mÄ8édºâé?»a³œ†ÍÊ •oHt—xÆ=LjÇ>¥ÇSa¯p–PÎM‘håz]tŽÌ>¾Èð¦‘pÖp]#Ø•åV®x)) ž™˜!œ7óö $Âé ë=M…\yVæÂ´d³‰œšpPä©>æ‚1£@ê&Ô3Ûœ‹ àmÐ\frFÊí‚e7äÚ(íFɘ¾n¨¢£ U¤4 qʨ GÍôIX™]ض«li\ç`áã9ŸV}vƒÔ‹¡¶2A "FÄ}ŽÇá(ÛÐBÃ`1$Úd•ost-Ž>ÚßÏÐ{XöÉì(`yÃg}çùló£½yÊì©Í«r†L®Š‚10­çÀÆëí?QbÊ.ö”ébx.3ºj¢çdXÎÐnËŸ^{´7~ßtúÖwEµÝæåÈ‚vÑà`ŒŠæ…nTسßÿ~ZrÇe $gu<3R=ìšãÈÙlྕ}:Á¦Ý}ÉÛ‚pûŠÉú æöÉfç–͈Q~NDà²+”éÑ6óžâ˜ hkc£ƒžl±Õá÷ƒ7¤+بÃÂÓ2pîf:›YKHbh“°~ÚwN1žQû ÛäkÃËØðílŒc2<Òîò8UýÌ뤗D54yN]°z>sï–>ñ|_EEýsà -SÐDÃEi½ãåmÚ6Ž·Yb y®“]N¶¸à&RROÏp¸ õb·ßÌ_kèˆ:ÿèµözæ/ˆàpä/¨ÓímõRCÔÕ0Êo/¦bé ^á•$ïÂþ8å„€AŸÀ€ƒM˜œÒ:¥ÇN·]TU9°&ÿ!âèåË`^콞¡+>Úy¯ªg'!ÙÝl^8Úõ…Êx©3ˆp|Q®ëÜ.c„Pl9ªàA$ÐèÎ×!ûš(Obö†)j»§Ž†û&0Ž?‘ÒcåôÖ¨kùzª)ÙÕìëCu´×¿=®g,ެƻZ…½<Ç.ì“àfÄn³ù[~ Ðã–áòƒŽB¥õ¿øãp×_CåÁ¹âøq Ow[1”piºT‹ Rå‰_Ê‘†¹`è"A*ÌÀ'àÕ8I¨NMvæ9J°,"@É‹à’Á0l-ŒÞiÁ;—Å<6ã(Ð*a´ŸÈŸØ'Ɉ{.·ý‘ÛGª';©j_üƒeüj endstream endobj 2270 0 obj << /F7 577 0 R /F4 527 0 R /F10 1169 0 R /F6 539 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R >> endobj 2263 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2270 0 R >> endobj 2273 0 obj [2271 0 R/XYZ 160.67 686.13] endobj 2276 0 obj << /Encoding 1379 0 R /Type/Font /Subtype/Type1 /Name/F15 /FontDescriptor 2275 0 R /BaseFont/AFJTSL+CMMI7 /FirstChar 33 /LastChar 196 /Widths[719.7 539.7 689.9 950 592.7 439.2 751.4 1138.9 1138.9 1138.9 1138.9 339.3 339.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 339.3 339.3 892.9 585.3 892.9 585.3 610.1 859.1 863.2 819.4 934.1 838.7 724.5 889.4 935.6 506.3 632 959.9 783.7 1089.4 904.9 868.9 727.3 899.7 860.6 701.5 674.8 778.2 674.6 1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5 594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2 563.9 588.9 523.6 530.4 539.2 431.6 675.4 571.4 826.4 647.8 579.4 545.8 398.6 442 730.1 585.3 339.3 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 693.8 954.4 868.9 797.6 844.5 935.6 886.3 677.6 769.8 716.9 0 0 880 742.7 647.8 600.1 519.2 476.1 519.8 588.6 544.1 422.8 668.8 677.6 694.6 572.8 519.8 668 592.7 662 526.8 632.9 686.9 713.8 756 339.3] >> endobj 2277 0 obj << /Filter[/FlateDecode] /Length 2165 >> stream xÚXKsã6¾ï¯Pí‰r‰0 °—“±³ÞÚÌLź$–”DÛÜ•H‡¤fÖ3•üöíFƒRÊ'  ôãë˜E,ŠfÏ3ûùiöÃòòVÌ 3élù4Óš¥b& ÓÐþðĉž?.ÿuy«†1 ‹Å,²Ý?þóúóòæ—9ÌH‚8bóP)ÜÞýûfA²»ËOôsýñþˆàþ×ûåÍÏ$üôùæ—ë¹æÁòîÓÇ{ZhØL(5ã°®¬–Ëšy(bdôyÍÚ6¯Kl˜ ­H¸ž‡\95öY»™s¼ä[7ó9+ʦ¥Fûâ†e›öíHÏŠKµËÝBEy4ÒÍ[Óæ{8gjL°)ìlÆ13Òî1ÿßkV6EUÒ_ëÊnh{Ø Redˆ&ÿý—›œ„Õ“ëÜí¨›öq¹-ê|ÓVõu—Ù¾SÓ¾d- íOÉúíHfb»Û¹å5 4‚Ž‘ %äjå³ãx`³GE›NÁ܆œQµ/ÔÌèòbïD¶åPµªÝ<7xå'AÞl²×Ω(ðîyÀôïž(éS–!âðVc¹"·Òr+û†Ÿ!ˆ-™Éó ª‰À§Í)zCî÷—^ßbf0—mtoÂ…qyiƒ–´¸éúˆþ{£>y4¢³©öèˆ0I“ÔeU†“3‚´i³ö€™)e|‚Åê¯E“/ü7)‰ðw>º³¡ßqÕ/Eþ¹º58´³îAJ&“15É\¢ö!A¯{.$(E% pýÉ 5‚ŸÏPz %ä›´¬X ⸜ÈP(’(…µ]†^®V@L¤5ýÇ¢4žKV÷4ƒÜ2:ýÎ;‘có5©_Íýw+%XìÑÅÕ hç·+|XU¢ç¡ßüG «é{6ùðþMzÁ”%®Þ¡gˆtèj~â¹HH\`5€Ÿëê¹Îö„z·Å.¬ƒ‚÷íÑ•¿Ócìˆ &û?´ƒã endstream endobj 2278 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F12 1382 0 R /F9 1009 0 R /F10 1169 0 R /F15 2276 0 R >> endobj 2272 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2278 0 R >> endobj 2281 0 obj [2279 0 R/XYZ 106.87 686.13] endobj 2282 0 obj [2279 0 R/XYZ 106.87 553.47] endobj 2283 0 obj [2279 0 R/XYZ 106.87 535.41] endobj 2284 0 obj << /Filter[/FlateDecode] /Length 1755 >> stream xÚXÉrã6½ç+xÈJ`‚7ß<ñRJ9¶k¬”£©,Ѫ(R!)+Î×§ P\dO&'bi _/è…ŽÇ<ÏY;úsã|žŸ]ÇNÊÒÈ™¿8`IäLƒ?ó˯.÷˜`“iÇîÍíýçϳ»› l ÷âî{=»½¢Ñíìqû“oóßήÅñR?aQâxtaâ¾3õÎ’¾±&ƒ­»²É&S?õÜf#;ÒKÜ]øa\ÈœV—²6Ë[µÞLüØEò$uŸñãš[–eQ«UVe+¢mJZïÉíÄÜgµÞ—ûš.Y¸‡ œ"1’V Ï™rÎÒPc],†R¦,Œõ¦ÜçÀTpqd†“W•m¦7WÖ´.鳓ͦ[C\g;Yɦ¬>Á4^” n„ÇS}³z)wÀ&¶l^ÊŠt¬1uPkmQìÖûç:ûkŸ(|3”4JÐü$Ëסœ°—š½åDÛÈe“Uà%¡ˆÝÙ rHÜ7”³Ü;-4Àò†VÐH&qç7Jµ2[U›Í-î¢mTƒ$oDP$]³¸'Þ“*´åGÑ‘¿/ÒÖ ~è¹{í:¡u-€º¨Y­ y.ëÍP)<,Fò³¡VŠoö²Wmâ‚îB[h. ­k’ƒ'> B/a¡Á øœyÁ{üZïÓÚ |·©d’4èløbAåC;ƒ˜CcîÞXÐ'÷A¹ovûf1aF3ê§,R}âÍ%p 8š¦¡ï^ý½8ÊØîjñG8‚@A€ ¥ÜÙ: Xä· ¹ó¨#Ôs³.R&bòÂ󳇪\Wà-ÓÐîµÊ³úìëÅôŸo¿L¦Ü÷ œ/šh °Éª<ÔìVCî0Æ,Bd:Æ½ÚØÈãÅÉ18ràÁí:/Ÿ»'CU9å)“}^¹Æ[7•*ÖõbBÎésW® ¢‹ª’oúfbíø‰9Ú;ø¨×ÌX¿ñefÌt<Ža”»¬S¢“ÿ Ýj.: é{aôGè:ç”GLøtX*ôMóÆC!¶Öé^â æÛý²/–›üÛDÓ ﶦ׃L3ëÄÆñ„Þ•gn_DC!0D›ÇÇÌF\q•Êj"”•9!sŠ’:ЙMµ.JH_l¬¸–Q«msÙ9IuT%PGà·,$U×V—%]¥³ÕEbt1ÔpÌÛ²´³s-x†M —/&ÓšÂxn°?Cæ0þf{øÓ„dê8 ;bä1ßâøŽ|ç–h›Ï(ˆ®J¿îiesq¡6zZ*,R¶w[=–+H™vå*>²‹Î«hâb 0bÿ"UŽo·ª¬ÙWý-úô›+%óüÍ8ZQ7™4¾ZZVT»”UïqŒŸÐuð«±jyôãðUÓ!YÕmò²ØœD£yuÀ°À\äy‰Æ9*_-uòGN;J[Æà–ïV6dOšb5š[§0%ÞZ…\¸vP͆î“6 |ñÅÈü ­ù¿tl fë¡°z+–ù~eˆ>D*¨û`‰Ì ÞJ8:H¯GH}ÆíKÿ]k*±š* ëcʶ2éêÒ0Ö嘃öŒÙ[Üjø Ü•ª²%Éo¦é#׸:È/Oè8ŽzÈý¹8òè?©¨¸gÒ_O°óm´™éà~ŸärYVGCŽë6îÅÈÁ­×ú»×Ä…ý;¨#ªÁZØ'ì›p [»Y6´î®*m¦ h1ôÜ*OÞØ$覣z"æÊÕJa.Cw‰‰\»ý\#pU­@Ã}¥ä3)MàE’7š´MW Bw•éÞQ—Á¢u)ذ6šµüÌá µ&ÊöR6뜗‘]:ñúdÁ5­íNäŸùQ·¤Á†»_-Cc†þò”ñªeÈ¿QÐΩXî.„ôþa>»¿õå!”ÒmH$Ÿ¯Mí…~í³®U¤²a Òaö"÷¹y¦ô8‘±…-ÎŒC½/I³$éHBó$AÂ<ª¸g7w÷_®F‚øÌãGA ‡€üVc·ìQ6Õz“aÜÄ¥cˆÇ™îЂ!5fzG»ÊÐÆI„ŽûaU™Ãp™ZOÍh úm9Ʊñ¢ÿ¦Dø†QG‰4(cê.noï'`̧!tEC‡à‘Ñ#ŽtUÀC«G\²zÄÚ6H)Çò¤OÇa¬Ë¨˜Ê(˜R‡A7­âŸÞ½4QÅÐÓz¿^ÙªùÅz:á¾ …ƒúB*²§‘o«²NcÑ)«¨›FìÊVP,YŠç6§AÖ§²}åOÿôm endstream endobj 2285 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F6 539 0 R >> endobj 2280 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2285 0 R >> endobj 2288 0 obj [2286 0 R/XYZ 160.67 686.13] endobj 2289 0 obj [2286 0 R/XYZ 160.67 668.13] endobj 2290 0 obj [2286 0 R/XYZ 160.67 651.52] endobj 2291 0 obj [2286 0 R/XYZ 160.67 469.58] endobj 2292 0 obj [2286 0 R/XYZ 160.67 450.69] endobj 2293 0 obj [2286 0 R/XYZ 160.67 263.21] endobj 2294 0 obj [2286 0 R/XYZ 160.67 234.11] endobj 2295 0 obj [2286 0 R/XYZ 160.67 216.06] endobj 2296 0 obj << /Filter[/FlateDecode] /Length 1143 >> stream xÚ½VMoã6½÷WèЃ XŒø!‰Ú›wã¤.²qà(Ц(d™¶…Ê’KÉÉúß—CR²$ vQô$Šœ>μy¤ã#ßw¶ŽþÜ;Ÿ—7w̉Q:ËÃ9 ™ãQЏú¿ýÃÅÌý¹üõæ.:ÛP„™ãëå/¿Lž–ÓÅHyPûhäEwïfÓ±™›ÝÌÍ`òx æ>ÿþ¼œ~5“ó§éb2âÄ]ÎæÏ°‘3]jHƒ1Šƒ¦#N &1DFÆ$póªëÆ[”ØgˆRÇã> íöó {aî&ËEõ2‚ŸÀýd>åZ˜ÑDÊ䤣ⅱãY(*†v41¬Ûs-³bkÇ⟣(R¡}½Žs8Pê¬,ª±ñûàt‹ìá1•QBç:ÎrgÎù#*ÉÜVÙä¸SEvus,R8)©õQ•©u­âêÙD¹(’½¨ÌDV‹Äü®3)Òº”' 2ù£ªÈKŽ[”¡±2ð¦nR¬Õ?ó]d'D1"‘«2»€a"­G’¿ÁR2"Ü=ÙÅl[”R¬­¯ ®‚’ºú½ÕNä¹WÕ#º§\OòÖvl+ÎP̺õÑá|: ¶y¹òÄ·ƒZ­uU­A¤sL7$®–æÇµ]IòÜšlÌj}Å'vëÒ~/Ë‹yˆxl+ †&TÁéx ŠÝC~¬»nÊ5„‹tÈÅB ¡ž ’›Rî!iÄ„)j¥GYe¯zÙ¬äYU7[:Ñè#Vcä7Ǻ˜þkòð0ÿm&¬”p˜;5è™Ý?ÎÓa%X´é ×Q(dÉJ7,å‘›&М»+•C®¤~ÖZ¥kó „oZZj—¹ñ¶%U´‰(b¸K:¨æJ‹ÎFß%àÿš•øÎ˜aÙ¹aźۨ¶}[ÖV¥¬‹:™144z_¶IHPx–mje»:*`Cã à„cÄh# ÊO»h̓Ñ@6o3ù¡jž|†W!ô…ü»™Ì´M{‰ ìýÿ#ŠSË׿Œƒ8Ì?Sº#ûêÊ?Ë~då Fÿ¹oÊ­xÓè¼Vh°Ó.æýÜ_èxX•Bs/´)ééB®®ê•µ{ƒqº+ʪÊV¹j‹Ðc~{ƒõ$îÓ…ÄÙ­HûÚ˜\Q¸°y6-t¶úW_Ö\õ.© Û»ÛÌš¾eõÎÞ'ÆàRjÍ.€ÃúË$´8fú 4RÚïü4-åº%CC ô#5lAékenÓ %UTÇÖJUø+ˆU=Cƒ8¶ò?D¬XÛ™5× .Y‘[!:ÈÒ”THs€+„ •’Ö*7BX™ºƒÖ©ªÜDQàÂ.Jµ„L YÞ•>Gp4!¶A÷+Tï‹^ 4"6h´õ‹»WïÁ±iüB BJh®ÊÛÞ¾[…˜õ¥ŽC+ýà¼.z2ɪæ¹8u¶Óo©Ð ÓDVï…w€ò?ݺüé_xR† endstream endobj 2297 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F6 539 0 R >> endobj 2287 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2297 0 R >> endobj 2300 0 obj [2298 0 R/XYZ 106.87 686.13] endobj 2301 0 obj [2298 0 R/XYZ 106.87 574.13] endobj 2302 0 obj [2298 0 R/XYZ 106.87 555.68] endobj 2303 0 obj [2298 0 R/XYZ 106.87 242.22] endobj 2304 0 obj [2298 0 R/XYZ 106.87 221.45] endobj 2305 0 obj [2298 0 R/XYZ 106.87 221.45] endobj 2306 0 obj << /Filter[/FlateDecode] /Length 1532 >> stream xÚµXKsÛ6¾÷WèЙR3B‚é©IìVMjwl]:U4ɬùÐT·¾»Xð!в=öDŠv¿}}»ÐÌe®;ÛÍÌãÇÙ»Õ›«p³8˜­¶3_°(˜-|«¿;žË$›/Â0t®–Ÿ.ï~»[]þ2‡ ¹ùõòö‡yä;«åÍõÝüÕÏo®D/‰G,ˆf.I®ƒ`Ïg¡˜-xh¶ÁÒêAÑѨ;ÊšoO›¬Ëæq¿a{(Ó&«Êù‚G‘“Ö*i”†±ë$ø-v@€J›ª~B¬¸:U}´E«†^ªíñ™Li°^ø®Ái–¶UžWs:_²rGV`‘ç±XDÕñht’ï$µ¢}ØïQ¨nÔ†‘IAg’ "æ{F¢€3¶¨àÉ;@Ä̬îH¬J³í©j¬N»R™Ö=$´ã×m#§mèÇÀ[Ü9¹ Í /fžÅºƒó$óZpïh‹|Q¢ãü͇>&@Ù¶Ão-ÙT´RV }P_3Ýœ¢"•7zÿ>å²Ð³ –€"rUïkÕŒ\V«"ÉJŒ¬ùY&E‹.ÏàD’ç& „ÙåÊ”œÙàwõãÉE¢/ >‡üà¹k’fxRŒ Ï Æùk £uTP¶v¹ºŸ/¤tþS¦× ¬Õ6šª%)i-+·U]$mÅNrO©z°eaËdÍe˜+ý¤UÐÉ7ÊÔlÔ´{¨KÈ)SpùT"Tô÷ˆâ‰Ò 9µÓwY[Cô”‚ñÖI¹‡4ðC»œOž™Füaê\gÙP¸ÓŠ\Ù { &),Äf =£òžHMW0WšÜŒb£q£>Ÿâ 8„½%6Øž¥ö½D­‡Ó÷Þ8^Õ§IØ 2ˆÒX¡Ë¸<£03Av¨øÐ/*5¼ð˜µh Xì÷Zá’Vá{´ß¼!?á³[¢´ƒ ÑUi¾òÓmGÄüö4)ýèöòÇ‚€—6iÖ¿»CžÔCýëùÅXfÀ™lóèÃòvJdÔ‰Üd Û]k|Ð1,ãNh.î±\úÓ”¯×¢ñI¤ÀT;éÚä™ &[sß}úø¼àûœÊ<Åô{|Arö½éÓõ ’õS )¯ªNˆ^pé2q享åÕÍsô°6n{Û>³q ¶`¢uÈÝÍûÏ ÕT"ÆãXªYÏ'Šß‰ùºZQÐ’Oæ%yáqE&iª´í>u¶{ ê¾ Æ9âóÖÀ¤:ʶ”1bÚM•,i”l‰n?Áåâò® N¾ ß’¨3Ùf‚˜¢øXÝA·ò³Í™ †Ê¾> endobj 2299 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2307 0 R >> endobj 2310 0 obj [2308 0 R/XYZ 160.67 686.13] endobj 2311 0 obj [2308 0 R/XYZ 160.67 668.13] endobj 2312 0 obj [2308 0 R/XYZ 160.67 651.73] endobj 2313 0 obj [2308 0 R/XYZ 160.67 409.54] endobj 2314 0 obj [2308 0 R/XYZ 160.67 391.1] endobj 2315 0 obj << /Filter[/FlateDecode] /Length 1255 >> stream xÚ½VAs«6¾÷W0Óä™  !ô–6N›N›d_:u<[¶5ƒ 8É›þùJZ °Á¼t¦Ó“±´Úý´úv¿õÞÖ3??y?,®ï˜—â”{‹—$˜3ÏCœ¨ÿ· ÂèìÏÅ/×wqgb¼ÀlÿøóÍÓbþnnõC/¿¿,æ¿ÁâãÓüùf–P´¸|xѼùÂ@Š÷&-R0†žŸN~·tö~DÚÈ\`Œ—3sœD˜§žoã*k½ †ßëŸÝémê÷l!Oß.Qµÿ½Foµ_Ë ìÕÇ„ßÖ̺½UÿǽV™¬E ÆÏÇ¢‘{1_‰C#Ë»#„à8ò|J0.vlº4SeC,!ºçè{ N©µÈŠõ¹’bnwUÏΆç}s,V¥FUb_ÎhŒ^g4AÖ2øYÒ(VÏ .I¢1Ì„Æ8$mÐ5$«—¦:m§qac$ –HÅ5ɦЦ$é3C¹«¦¬¾Ì’ax;•Ö ÐĦÌsãûM[X*îÆêOVYÃúx8Ì|uí²jÄÚ®׌9&Ñå܆8N&ß%Œ'sÄ»V€a“wÔ¡Q€C‹ÓÄØø›ŠCë@n‹Ò]¯( ñ.ëF:^¤öMë+è#…€üW°y¨Êý¡‚04N‚@PÏà’^Ã'“_±iAuï®ß;‰e<™`«Ixä aÀ^u‹Æa¥ÈF92 HPSÃv¹»;NIQ;h«cUKÈHÞQíž Þƒ÷:Rk‰c‹x?ä™, ðÛ.k ´´·eÇÐb$–ñÔÅú{ª×4Ú[W¢¶É‡›†n‹¹¤Åy%H ˆ¨•°¥@Q.ÕB–ëLP[t…%¤TÓ´U–È*K%Šl/.)KŠ#®Î2u nŸS›/Q™¯¯ ·âíR³VF'Íú¡\C¤ ß:”ƒq«aOß¿.UѬE­¢U‹KÑáгùzE±:AÓÅP˜ÕáChøÿƒæ_é]dJø«z×êUK’s½K†ÚÁ ZéªÞeÅÖðX-Á9EÆù2ÜW¿X@Û³[üv¢ÒžtoÊŽ‚iÂW`Ú¶Þ¦X–›~©ŽÇ¾1øi7€ó’ÎúªM‘‰…„H ؉2z›Ömq6;W¥ Uí¯— «`JXRŽjp±’zYw.šÆJuT7û†z±ve`–MëÓË}ýXÞí†å™ƒ³!ÄgªGÞoÀ¨(}…€uæVúv™ñ/a®8íMåH¶1§“Ïä:@rmõ]®²–†Lä¡.ÅÉj#º;ª2磬K43ÛŸ¦àõYX°¤Ï:ž8Ö®~‰*M¹•Ü£_´D{:pŠÓÓ’*›óÑB øzbLÖ›¨¥P×ð‡æ»‘”ô†Ãþà­U9ûl€ž -l8½R7½U!ƒÙ0ýúlx[º¹Ð&¬Ô˜akÜ j õÊ¢z«d£ÐL †˜ Ÿ¦æÂÞËM„;Ÿ '‡¯ù…áËBØevú… ¦f”oþ¹¢` endstream endobj 2316 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F6 539 0 R >> endobj 2309 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2316 0 R >> endobj 2319 0 obj [2317 0 R/XYZ 106.87 686.13] endobj 2320 0 obj [2317 0 R/XYZ 106.87 621.41] endobj 2321 0 obj [2317 0 R/XYZ 106.87 602.75] endobj 2322 0 obj [2317 0 R/XYZ 106.87 491.92] endobj 2323 0 obj [2317 0 R/XYZ 106.87 470.94] endobj 2324 0 obj [2317 0 R/XYZ 106.87 337.97] endobj 2325 0 obj [2317 0 R/XYZ 106.87 319.87] endobj 2326 0 obj [2317 0 R/XYZ 106.87 257.09] endobj 2327 0 obj [2317 0 R/XYZ 106.87 238.43] endobj 2328 0 obj << /Filter[/FlateDecode] /Length 1209 >> stream xÚÝWKoã6¾÷WèЃD´DRî¡@»MÚÛ¤X(ŠºEbbaõp)y£¾Cõ°ì]/Šžz1)räÌ÷ÍÐN@‚ÀyqÌðƒóÝfu—8‚ˆØÙ<;Œ“4v|Æô°ùþw7 HDŠþÈpØeªÐ3¶ÌZ“Õ²8s…Söõõ—àH ‹ívߢ!ƒm{K£¤’¸Ø*\Pz\z1I† êl,E¸ÐVED„:ã$À¸ýh®¥Ñ§¯eiPg3.ý¥ç­ú€€<4…TÈð_ˆQ+³ØšÙÃænÛ¥5vèdAF`ŒŽZU#°™{ƒ¶Û¦:¢îÈî°‡ ¤®T`FYNg Jašpqw~n»àùQOJ,‡ºc}•F4JI‚ºVüÿĤI³HœtA?'SÂgdJ"C&ÀˆFÕ“þrÛªÌqy2<óÍ |–MœlÚe=úDд%ÿ ÙÀK~Á$:É%&Íœ C>A/Ó9¬uô|†¶Jðš*3M =æm½?ôP:Ì—’UÖëž“¸VWŸTïô;«ØCkÐÝCϧr`Z‚'½Ós]/´¶|Íê}%o,88|Ž‘[òZRט˜ÂG$Œì}¿ÞŽ)7°ËVO78ËW"ú´õQ'VwL½én=‘«§`„ ¡èÉÿGBVà~é2†'Bº¨spëÓ¼¬'ÄÅqLLÅBèî+qÒ´=N øX )“,& … î™â§£O¼=š®Ä²(t½Ã†.Ø%¤Ñ4&é@”ªñ[åç{{èÇ ×;YUgmK>"«Ê̆÷¹UCUl»Îߦ`©ÆÍñÙS%§<ÀAW¹}8ÁüJm„>{_¤¶6B’‹«Å‘ëTˆQ£Š)Q T2B€éb};+oZþ¢èI] cÂÙ•Âo8>€u~¹!>#ÃTÙðù–Ý¢a}ô"àHu§/M ~S÷âS2|¡] >O€ÇSì…}î±ÀÝÕºÏnñù @ú0~9([~äÔœ0ã]/ã}ßôóþº?™™F¦ß‘Õ'šÖìTÿêPë^iâ}YßD ùçA6ùÜEÓ/›¹ì%f'‘–kŠBô^¤ý_0âmxÕ¥©äŽìF1l öõPÀž”ÄÜ=šKuo,€¾ú2›‡ endstream endobj 2329 0 obj << /F7 577 0 R /F4 527 0 R /F6 539 0 R /F5 535 0 R /F8 643 0 R >> endobj 2318 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2329 0 R >> endobj 2332 0 obj [2330 0 R/XYZ 160.67 686.13] endobj 2333 0 obj [2330 0 R/XYZ 160.67 587.2] endobj 2334 0 obj [2330 0 R/XYZ 160.67 568.76] endobj 2335 0 obj [2330 0 R/XYZ 160.67 427.38] endobj 2336 0 obj [2330 0 R/XYZ 160.67 408.93] endobj 2337 0 obj [2330 0 R/XYZ 160.67 327.32] endobj 2338 0 obj [2330 0 R/XYZ 160.67 308.88] endobj 2339 0 obj [2330 0 R/XYZ 160.67 226.2] endobj 2340 0 obj [2330 0 R/XYZ 160.67 200.34] endobj 2341 0 obj [2330 0 R/XYZ 160.67 179.96] endobj 2342 0 obj << /Filter[/FlateDecode] /Length 1001 >> stream xÚ­VM“£6½çWpÈAT-¹M2žÄ©dfkÌ%ç@lSÁààÙTþ|Zjac˜ñf/¶ýúu«_·p|êûNᘿŸ³»Gî¤4œlç$ ¸ã…!MàùáOpîþ•ýz÷_lBpÇ7¯úåþs¶xq’À§®Ç y\þ¶ø„{Ë»g\Ü?=è'«?VÙâwÜ|þ¼x¹wF²åóÓ ‰¢3‘‡L‹ÍÐy'´¹pšÌâ˱ÊËZ»fäuŸwHX¶H¶ÏG×c ‘uYtƆ®¼ ¡B ›š±…T°!õ}^]¯™ˆ+iyòz‹‹m©ä¦kT‰o8Ç^µåÉe1‘Õ¿n’7Â0ã0v³0 ‡(šZ{ë mȬ—˜|S#¡TªQíÚÁˆâ¿ƒOãÀR,‘Aª£’úïö6q%pâpœÈ—«¢?H´G˪`^éd&ë,2#:áMÅHu 5Ç(;Ÿ ø®Ldßèß×zì#Ìi¨sŠ@3˜Ôfß¼ÖkÒ—[Т`œv%HÝl%¥tíg Q P AÄh¾¬;cèŠÛF(XMteõd7iþkÕ²2XoÊ,‰oú‡£RyÙjQk/}Ý•¹ø²‘Ç®lê©”<’m+ƒÍ@;ÆäR<&C[™„§>Xz‘㮯7†Ç E Ò­™Nlq¥) Z©p… ‹B5ý—åÍ›>ŸaØÊ0ÈDåèí4fqiB-…i¥” s 9Æ0ŒhÊ® Ñaµv2mJÍ/·vz–“v¶¿¤½…P9ç*¼‘%«,Ì¢îŸðEg‡c81áï0ÜlÛZÏÎlÛÀ¶m§ Ty'owlÈMCkRɺèöoJÄ2"öÚ~{Õˆ>¢zžÞ=O¬FÆg5öÃ…g3åCÄpëŒo"[åÆZÓº°Wõ€÷•êr]ÝñPf¶ºý!oÿy¯´)`ui±H߯-ÀœÞNÊiÎ|R²Ù¬9LË6X~p, š&ã­dP§x^,ñχ©×‡Æt¨ŽEÛl”̱æ%d¦û7Û[ ¸-OeÓ· \•–.Ó^ÕØ¿WZÓ“+É«^Ú,9MùXï³aÐn;>¶¶¿¯§"\Ãû\ï`õq§¨š¿óÊÎ H4‚O•© AùH Ê=²:8š¾ÖWsw[H>*ytFÓà&~.&!špƒ7nMZµ±#bÛvóÉ®Œ®$÷Pªw„4쪼h-zð#Þ&C \©uÕ)ýy4›F_k‘}÷?¾õŠ endstream endobj 2343 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F5 535 0 R /F8 643 0 R >> endobj 2331 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2343 0 R >> endobj 2346 0 obj [2344 0 R/XYZ 106.87 686.13] endobj 2347 0 obj [2344 0 R/XYZ 106.87 508.81] endobj 2348 0 obj [2344 0 R/XYZ 106.87 487.82] endobj 2349 0 obj [2344 0 R/XYZ 106.87 403.41] endobj 2350 0 obj [2344 0 R/XYZ 106.87 382.41] endobj 2351 0 obj [2344 0 R/XYZ 106.87 296.93] endobj 2352 0 obj [2344 0 R/XYZ 106.87 268.05] endobj 2353 0 obj [2344 0 R/XYZ 106.87 250.24] endobj 2354 0 obj << /Filter[/FlateDecode] /Length 1499 >> stream xÚµWK“›F¾çW(© Ê3^{³½»)§œJÊV*‡( £1e€uöß§{z@´[ÞÄ9 43=ýuý`° XÝ­ìòÃêõæåm¼JY­6»•T,‰Vk)qÙ\ÿîñ€ÅÌ_Çqìݾ}wãÃ'åýòþæúí›W~"½ÍÍÿÍ/oÕI‡HX”¬:¯Bü*¹d±Z­El·Á§íö§¦¯}{Ýw 7•^·×¤,•ESÂéjM>¿‹§,âîsQwy@eÊkjZ/(CÆÓáTÛ]R*J,8"‘·Ù—-é¦5ô2z½/M×g½p/È®X ™Ç kÝÆž†²}Œ:öæh9×´š$È5ù×x艾È!($JÎøEwZp¨·¡µíîfÓ‘ä€p0öÇÊÙù±/«Âû\v{—QaÊä™Û[}ÌLÖ97æM^½ëA×·$Å\Â5ƒ˜Söeþêm gÅgáÁãDKfœ4s±Ú5UÕ áŸIÑËÛè”N©˜ Ts%ŒGÎ]oŒ!´ÖX "U™“¸*ëOîÞÄgª¼È{¼OÒ'yðËÅo* -í–rm®,@/:XÍ¡<MÏÌÝ™æð¨ÁPAÆnòl{ÁÈ `‰ ß§vרuÈ’†Ø§ÏH2†·Í‡ï)¼ÙØ–®ëÆž)„dblš> cVë£(EÒûÌ[V–¢ñ„8 m£Š]Øé˜ß"â–Ê.ýd“!¼ÑR¸¢åº4ôðʘìaY«9‹,&ÉQ¯ŠœÀ‡"ÅCojºXöá:ìhuG¶|\<²Ï†-¬ßTÛàH×¶,´™©v­^ ½;W—§cîã…"v ¬ÓÃÈ:«/ÜD?Ú5 l¬H†]ˆ¤x7J¨ýúXœÊ‚D£ñ5oÇ tØ>E×#<«d0dZ£Ñö`jö´·Œ¥_zuÓуElsÃzôTûå à“ä´3™<‘S:r}h|FÉ=íxÊŸÇS©b&¨ º{ýª†ÿ‘ªtï{„1„ ƒ8i­ÑŒ‚ êMxÚC¼•Ž·—9ÞÊ·4dÈsÞâ¾æ‚RGNÀì@a0MXÞºi 漅È8ÞºÑ7¼uÓI-oA’gu®+’e‹ÉG†,ª2ûðëëë·ïC¼R,¹ u•u^õræž$@VM0fÄÌ9©sKÇää…î´9”5ELŽ.žŒE3MECÕÀ5¿1Kj=êhèÓèm Ñá“ꢄ+&Õ$K”L‡®ÿ=.GníŒ+c¨>Fe͹}:ÛT$aꟸSçºG2)`aç˜áé îÝÂèx„”±óµKŒ×MS]Î!Ø{–B:c‹’}Öõ(±H$á˜6©ù›¡s~" ô÷/p‹ñÃ"ÐâD7gMÂBåvÞ™ìpÈÌyY»0-]¹û‚“U‘íé§ôÞŠH,~Dp¥›¾]Xœ ;§ó/0øj¡&>ý&~¹šEïL¯—9 ³]>X€œX0AynŸû#TL sÐ:[(¿ïäb Å j£Oì_‹›?að¶ÑCtx>.=‚U Æãÿ kó•±f.l•ÎZ÷ØÔzüœÖφ}‘Ç[ï¹DN.2pù>QóUY.FäPÓ¾ùvÁ, endstream endobj 2355 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F6 539 0 R /F5 535 0 R /F11 1186 0 R /F10 1169 0 R >> endobj 2345 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2355 0 R >> endobj 2358 0 obj [2356 0 R/XYZ 160.67 686.13] endobj 2359 0 obj << /Filter[/FlateDecode] /Length 1059 >> stream xÚÕX]s›8}ß_Á>Ï ¢3}ȶN›N¶é4ît:Û}ÀF±5Áœ&ýõ«Àרí>YÝ«sνººØ°msCý¼1þšœ]`#gLn B€‡ Ëqϯÿ1!öFÿNÞ]ø›5€Ø°ÕëWoÏ?LÆGÂÂ1¡ F–ïóâòjü\Ï]ž]ëÁùû×r€Í›/7“ñßzòúÃøãùˆ sryýþFo´cy ÃB¾z»MTÛMìчUJ³Œ%<ÓîԾЎ ]y²…$QK/_‘‡ô R-P¿š’Å sX½…ðIñ:ËSÆçM¨(6*V¼Yc¶éHPñ¼';Z„™&Éþƒ¦‰~ˆ)Ÿç‹E ÚÀ"vÈÐ}Ñ¿ÑÃXÖö¯Ñ¬oO:·Ù2'ÀuF][ŒD:꼤ßÖaÜæã{r«Aéüùr¸¸î Ä“¼8‚ÝÌ”{îÁŒñ¶x 'N™¯ô[›X°1F-N5ã&'ÆGÈ7s:§©"†ú#…Fƒòáô$|ú5<±y~±¦©êư˸Ì\V$i¦B=Îa»¢{¸N ÑV¡ñ¼•…OôYªLØèƒ»õñ€p‹×–>Ä®?¨>ñ¯N›lÆñî¼÷šÛ“7ÃÖ½˜þb]~:oÐyó¹~LÛ!à’êj¸íÀ-mD²©§žhH¹ ‡‘ù‰³‡ç-—.(èB…;Q…<êB…½~X¤êŒFˆ˜÷²¶ËjŽ¡jˆY¸T#ÇŒè=›³rO5ɸ褄Y¤’GëE=ƒZwuc¬—rƒ©ZJS o¥‚ñgÆÔ–!€ÀqzeÀÁnœ~*R_Ê@” âvÓ2Œ… 2KÅtHxÎ0 W²xW­vÆa²ãd¢~UIólÒï*;zn»ªýÛBÖÔ -Sò»È”ÄÑÎÂå’MYÜ!îó‰5ÝÙŠëšð¡H½ËsÊ.—ºã+rýjËóN̙̆;}H²•š¢3&ú>µ¸¾cEy¯oÇÙɈ)B‹0 g¹ŽàQyE'ã±”Îò$}5=júÀ²<ãíÉ”åIºÜ#1žö¯Ð|XøÍ›»9 UᜧÉze±¨éÒµSúœ²|›¿tª¼'¼¼ èn cïYÑÞ#ŒÏ ŠuÞP˜­Ó”ê¯Ü"3…­'Ž«Ú#Q´‡Ã³uq²lÍ—¿nÁ’˜ÍŠV›ñ»"vfgI,Äð«t¹ja±k}æ¨#ð/Í÷Päî˜Ïr¦/®ÇâÞ®Ô><ªWÿ¯¨.ŽÕëcF5‘|çeoZJÔ:Òž>Ò¨ûH¯3áàðدNwÿˆ‘HϬXѪ @ =>”†Q8ÕnŒñäÿÿÁE, endstream endobj 2360 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F8 643 0 R /F11 1186 0 R >> endobj 2357 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2360 0 R >> endobj 2363 0 obj [2361 0 R/XYZ 106.87 686.13] endobj 2364 0 obj [2361 0 R/XYZ 106.87 252.52] endobj 2365 0 obj [2361 0 R/XYZ 106.87 232.14] endobj 2366 0 obj [2361 0 R/XYZ 106.87 145.78] endobj 2367 0 obj << /Filter[/FlateDecode] /Length 1591 >> stream xÚ½XKÛ6¾÷W¸èEÖŒH‰z¤@‹4Ý´[EÑ8§º®MÛBmÉ¥ä¬ýï;Ã!e=¼¤E.%‡¿yÒ“…ád3±Ÿ&?Ì_½K'9Ë“É|=‰b–%“YácþãŸYʦ³4Mƒww¿ÞNa*~ÿãöÇ»·o¦YÌoßOÿšÿòê]|Ñ!2–d“ÖÇ)Íó°˜E/Q ÌXq”'¢(—,’]Ь¦è…ȃ0HZª"kÓîÉþHÐCËÆÄ«)Û‚ò˜KÚ§Rð£‚@£OMåž>Ùït¹i¶„‘,MŽ™| O›O‘IÂ’;O׉ç‹Õ¥ º’&#ñâzãÒ$h2\¶Ö”ñ\æoé)Õ^÷ÉQÝ"鎙Æ,ÝSÚZgaPŸI¯:Á{šû˜ ƒ?θÀb¨œ¾èQŒÇ ÞÎ6aO²ÜÏ/¾˜’J—Q!²Lwnƒ3¢©ŽÆÖ7üŠ­®Qôú¡,Nt0ž &ÝYŸëFïo^´·QƒƒÚ8¾ôé°SEé̵¯Œ¶ñ(ƒŸu[Vý ®öí*µ?ìtÍF 8´cÃaq|ƒI<Þ ÎM% 1àûù3 ×ÅîJ’¯êíw´¼©ŽË­­ª®¤ìîrW“Œ=o«÷²Ù÷ã•=Àf‹`¦ÛmÀB#ñɾvû˜£~^å×$üIš×Æ®0r•Í Žk®ó(çñþSx,õCo‹ËÇPŠ;Â?ŸÜoHÝ•FË ýñD/Кó£§kñõètêe‹ñÆ3¼º¸^o!yð³,‹àBúˆ €ÐÔÍ©Ïp˜–­Û¹ýË@NœdûŸd &òËŸb Ê@fÈrÕ]Û©}!vÞ³8ϱìãÒuQ®˜4m»ÿoÕÊÁ}cŒ"R¸ÄUȰŒdÜ¢÷”þiì9ƒª÷®0óqòœÉÔåVD8ʽPü}_Ë%6Ęå𚪠5¬Xzñ‹¢Çª0zÙTàGöÖ/Gè‘?¢¨ÞÙþô³3‡™æhJ{´1ƒª<5½¬+C™:ަWh{½@§¢WPîêÂ_ŸGM‚pMBlmO:I¸E \”Å}uPh”Ù÷®˜’\òkª©ªâ¨SQDuD‡¶ˆÅåo«…0Æ?—úÆÀB•ÃÅ­€‡:lýz·¶–™uå¯ytå&ôi©¨‡ 9ò$NY*d–²”ü¯aèYáV¸½¦$öšUÖõ›ÂMZpv„½E&:.’Eö¶’e¶€£de¶™7ÝæÁ­Œ·ƒ5¡`iïÜGìÿ¿bÇ_toç_ý |´ endstream endobj 2368 0 obj << /F7 577 0 R /F4 527 0 R /F10 1169 0 R /F8 643 0 R /F11 1186 0 R /F5 535 0 R >> endobj 2362 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2368 0 R >> endobj 2371 0 obj [2369 0 R/XYZ 160.67 686.13] endobj 2372 0 obj [2369 0 R/XYZ 160.67 668.13] endobj 2373 0 obj << /Rect[205.05 587.84 224.76 596.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.4) >> >> endobj 2374 0 obj [2369 0 R/XYZ 160.67 315.37] endobj 2375 0 obj [2369 0 R/XYZ 160.67 289.42] endobj 2376 0 obj [2369 0 R/XYZ 160.67 239.8] endobj 2377 0 obj [2369 0 R/XYZ 160.67 239.8] endobj 2378 0 obj [2369 0 R/XYZ 160.67 171.63] endobj 2379 0 obj [2369 0 R/XYZ 160.67 171.63] endobj 2380 0 obj << /Filter[/FlateDecode] /Length 1141 >> stream xÚÕVKoã6¾÷Wè(+J¤¨×¢X ÝMÚ»› ñ¥¨‹…bÓ±Y D:‰Qô¿wÈ¡lIvÓç¥'Qäpß|3C/&qìÝ{öó÷í,ºà^IÊÌ›­¼¢ ÷Â$!üøÉ§¼~žý]䙄PîÅöøý÷g׳ó›n$>Iæyá_\~<ƒ{—Ñ.Î>0 îßþx;;ÿ„›W×ç7gAÁüÙåÕç[cÈ;ŸM\¢qL æ…5c”^–þl-зb/ Ž3çÚ¯¿áá@SBòÜ*ÝÕí=z!^«v©Ð=-qSƒr»Xl»N´Ë}s–æ;¼ BVøb ªÚÔ­XKÈ9aÔ #¹µ:³J³ÜW;ÔX½˜ÿÌ—+Ü×½øÔ ¥jÙâ­F…¯ª­ÔZf„õ8h¡ô “²?7‰ÊSÿ¹Öë‰+Ù4Ò¸ùŒñŸÕrY‡K‰ /¤””)ZoA[4>xÃIÉ ÌYƦÛ/ú¶&2TB‰¥$Nǹ›Ä”Ä$-Ä[àaÆn^Ò}3“C³Ñç—ÌßTza¢\ …‡zíNîy‡«a:ÌÿÜWÂé¾ ‡0ÔÏ©œÄÀd ÁP¤2” J¤”äc‰ypŒhÈ S‚!¤1§ ÓNÜ‹—cP9É_Å”•$¦L9çŽÂP(“º`ƒºàcLÍᾜÀ“mSu(6€Õ"˜'$Ë'õ2‰ÊÄܧyU·Ë#—9I{¢¬¶íB»JýG¨U(¬n%»Â­ ?€`Týd<¶Üç¾ZTî–&È6 .Ô«~YÃ=-»ZéÃ4)ûòNMåôœˆ ɨ¢˜ê0l‰Ÿè)ݶÅŪ“פöhJ+,]k²¾ºó£žÚ'7Õƒ8‘lÞFÉm·p6ú8w¦Q“©^ !´ÕÄ&­Dåjýð`ÜægîpXêêÚ.Wòk\Ì‹R<(Ä»oQ⛪몕â0’¡d´–ý²[G„ÈÆm"¢žÚÈ$¹ÒÇÚOݹ¹þôú%nf¨Iª—/@h žŠêViȮ辬êþ6ÞMÁyNŠá¨8k%dê„ÇÜŽ•ÇF@«æŒúM­´e‡9’m³Ã•^K%p‰¥¨úýJãªêÜykœhNÈJgPí6†¦w¶ddS/Í®•Ø\·Šœ¨Q/&–âoS"¬5æsßí¬ð ÿ¥û~ïÃ`L¨ìB¨ô?"TÿxJÍÌMøàAÇ!%|?rŠÌ—W8ûû>©&JеƒxÎd{„:-·^OU·D]‹ ¡þºj[Ѩ)ÉM¸ÉÓÁ[È´µÉ3¶ž‚nWWwM?@–µ“¨ÆÍ[ÍŒxgœ ƒÉ¦/\^ÚÆŒ£oY·S ÇÃ銖>ŽE—í{4sôÆtxŒÐq˜cOëöq«Ý µƒÒj{ƒ±ÊG}ß—n\v¢Gî_,M “Þo¹ÕšÆvµÕÿ28Ðø¢{îj=ˆî«ß¾Nl endstream endobj 2381 0 obj [2373 0 R] endobj 2382 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F10 1169 0 R /F11 1186 0 R /F5 535 0 R /F6 539 0 R >> endobj 2370 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2382 0 R >> endobj 2385 0 obj [2383 0 R/XYZ 106.87 686.13] endobj 2386 0 obj [2383 0 R/XYZ 106.87 668.13] endobj 2387 0 obj [2383 0 R/XYZ 106.87 668.13] endobj 2388 0 obj [2383 0 R/XYZ 106.87 605.01] endobj 2389 0 obj [2383 0 R/XYZ 106.87 584.24] endobj 2390 0 obj [2383 0 R/XYZ 106.87 514.34] endobj 2391 0 obj [2383 0 R/XYZ 106.87 493.84] endobj 2392 0 obj [2383 0 R/XYZ 106.87 493.84] endobj 2393 0 obj [2383 0 R/XYZ 106.87 414.19] endobj 2394 0 obj [2383 0 R/XYZ 106.87 391.49] endobj 2395 0 obj << /Filter[/FlateDecode] /Length 1206 >> stream xÚ­WËvÛ6Ý÷+¸è‚< âÁW½KZ÷¤‹xeUwAK”…S‰LI(¶ÿ¾3V“ž®ƒÁ;wT°$ ;ü¼Û¼½Íƒ’•Y°ÙR±" b)qØüòGÈV°(Îó<üpÁ† o?|¿ùp÷ñSôçæ÷··êrX,+‚„ª÷ƒ_7öŠl~EÆY!¬eovuב³b4K‚˜,O}“8*ü‡4¼;›÷‡ªiêãW¬TtšbØjD.ÁMÕìªnG¿ÀcÛÑt‰,$oopE„í—(EX7d°,Ÿ:mtóÈüØÒ€sV¦^p\dÌ@ ˆbÎ;zçuë&îMž|GjNW)“éÄŒ"ÁY’:ºÛ/s§¾»È{нmEúIyjMy‰9žôÙC[°žI×ÓãB¹h>1žöÃ×,yɲü"`å¼|U›RØt^צÊ.‘9Ù¢ô Ù”lÛp!·¶s@J+Z[Ì¥ «¡G¸ƒ+y’:@.ÒYæœ%~¯õâðÔîê+íÃIÀkZ¡yÖ·¸°È7º}%±>71Ϙ’>Ðu†‡vï.›ð«X:ð«‘É,³Å“> endobj 2384 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2396 0 R >> endobj 2399 0 obj [2397 0 R/XYZ 160.67 686.13] endobj 2400 0 obj [2397 0 R/XYZ 160.67 668.13] endobj 2401 0 obj [2397 0 R/XYZ 160.67 651.73] endobj 2402 0 obj [2397 0 R/XYZ 160.67 592.34] endobj 2403 0 obj [2397 0 R/XYZ 160.67 571.85] endobj 2404 0 obj [2397 0 R/XYZ 160.67 571.85] endobj 2405 0 obj [2397 0 R/XYZ 160.67 443.05] endobj 2406 0 obj [2397 0 R/XYZ 160.67 424.89] endobj 2407 0 obj [2397 0 R/XYZ 160.67 198.4] endobj 2408 0 obj [2397 0 R/XYZ 160.67 179.96] endobj 2409 0 obj << /Filter[/FlateDecode] /Length 1298 >> stream xÚ­WKsÛ6¾÷WðÐ5c®  ÈÞÜDnÕi㌭:MŒZœJ¤†‚êäßÀ|H”­I{"}Ø]ìãÛUCÏýüü¸¼½gAy,Ë Ë eA”$éýû?CÂãÙ_Ë_nïEI€° ¶?¿ûùîãrþ8Ó7’Ä0‹„ÈÂûůó<[Ü>àâîÃ{³`áÓOËùoxøðqþx7Ëh¸\<|x2Š‚ùÒšÄB ç›RE›bÈ€Ï"B(WÛæ ‡7³ÎPçÀÓ ÊbÀ‹ßrðˆS®6E]Ë-|šY„Cš‘S¬ñð̇‡ïÜ™uJ︈H…¾œƒ°w—‰˜ÞËœã:³‡Bh,u€òX¯TÕÔè( ?àº@?~¢\l%©M¡põ2£",rßʪæxØ~Å}³ŸE4 e-×]©Í™•I ÔÇ·lö²>33Â^IrHxµÔE­•ÅÚdˆàaUï*ÚVõÅ(2H-Š ÌÇÑ…ñÃSìšc­t@íÎÅìIµUýlÅÇÃøj9íCi—\•$‹z&ch vCÌò®,0Çòk‹ÊÆÝÈ~Ô÷ªœYɽ͌ÓŒAp›ZÆ¥$à#g=xYô<Y’Zô—ǽùŠP5§ÒsÂ_wï aY_ð:qÌëía÷VsÚAQ2þŽ…Æ±ØãPsî ùªd»«êB5­öËãpQâ&*ëuÔ”‘³ã,³WM½®zʪ i tôÒp#­! Õ7,Ôhê±ï&7)Wœ!×$âø­zÈRÈ=ÝJzƒ¯¨ùöt%]½´•zƒž’تs´‚&øéó±,eë6MY¤º’¹Î¸aŠxŽê"ó ê1ó\bF´lš¥¾‰Îø•žùÄ;ýþôš÷Ÿ[ûmä‹í¡«€ŠëÌ,XT´ÏÇ”9Óeß´»S X§ÉN žKº ÑuY~F6F›…ÌZ yÖ(Õ´m;Ë4'Xž5kϳ‘sI* æCŸt£ÏÀN™'ÆÕôt¤§€Žö‘çB§ÞÌô¨ækÖÅëTÄ# Ÿ4<¨¢U&Œz§Ç#…ÒqÖiU®A§¢À½ç\®OèÝcûÑï{ÔpÞøt[£äõÆÇ€å}ãË0 Öɉž ³lTT­›ëL•¬~ÆmW1¦'Xß|»3§µ‰äqgT¾¡I};–ˆ¤…!e?Bº¦(ÑÚ›`kAΆ–v&%}z‹ÐÍ¢&½Ç½àPíªmÑÞ8 ŽÊ¯íV@F^ /?×E‰Ž/¿­Çœ¸¬× zb0Õ ÏÕcÇ—ê1§o™D‡6E±“h[¶7áD´žâ7ó§—\ž¼e+ëgÓMͺ)/j‰hš#=á•ÏÀF‘7ÃuÃÕÅ1ìOƒÀl­C4áʹ{ˆ† HÌÿZ5g“,ãÓ+G­Å.ö_;pý_˜ F‚ÌÛƒ”¿þ¿“sb˜Ñ5>¼0ÑøFSÀËFÖ+yÒ}C½j¸Øÿ¯îéhÃÿØ(µ‹¾û`€G endstream endobj 2410 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R >> endobj 2398 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2410 0 R >> endobj 2413 0 obj [2411 0 R/XYZ 106.87 686.13] endobj 2414 0 obj [2411 0 R/XYZ 106.87 552.89] endobj 2415 0 obj [2411 0 R/XYZ 106.87 534.44] endobj 2416 0 obj [2411 0 R/XYZ 106.87 475.2] endobj 2417 0 obj [2411 0 R/XYZ 106.87 456.75] endobj 2418 0 obj [2411 0 R/XYZ 106.87 385.55] endobj 2419 0 obj [2411 0 R/XYZ 106.87 367.11] endobj 2420 0 obj [2411 0 R/XYZ 106.87 295.91] endobj 2421 0 obj [2411 0 R/XYZ 106.87 277.46] endobj 2422 0 obj [2411 0 R/XYZ 106.87 208.2] endobj 2423 0 obj [2411 0 R/XYZ 106.87 185.5] endobj 2424 0 obj << /Filter[/FlateDecode] /Length 1146 >> stream xÚ½WMsÛ6½÷Wð5S!Ä7™c»ãvÆ™‰•SÜCA§4é!¡ªé¯/€(ˆ”eÕöDp±XbßÛ}“ eYò˜¸ÇÏÉO«÷72)P!’Õ&¡ å"YRj«_Sœ¡-–RÊôöÓÂL°ôæËÝÕêöÓÝýâ·Õ/ïoØa1ɑȓ rlçM,L‘dÉ’Hçf¦V[Kóq)É~e3(õû46)cÞa³k+]w­ÝI{õ¼0ÁÓn¨­q«6ßpƒîp1(mßpÚm&ÓÕÂ,Ý–m«šéžp! ߬bŸ(e3ÀÞ¥¬ª®_×í£Ï;#(+’%ƨàÎAwö›Ô}|š(õqö[ÕVjö%†Dá=Öu¯ ؽ«!‘r€à›®iºé~ø1Äc)ʈÙRrì"Ý__ÿê¶{½2Á’}"8* [E4Oža6&Ãk“Ü›z‰l<÷QV3¾Êv+›qAÓz€z Ÿ ,9Cœû(Ýfc=§°`»ð@³|±”ˆH—p–ŸOcbKpÌØ¿§lŠøêËçÙ^2;yAÎ4äÌÆš¨µŸ©v}¯ZK bmu硺Áç¹Ù ój%ãóX1 ú¶01¿k5Ì1#…)Øü2Ì úœE˜Áû3c4ýo]ß}<y+f:øõ_ ¦ ¿£)I6~ò$l¹@¸xlVÓ2$êm“¯i›<¡mÔh›Þõí0É©U{ŸP,|`ªÛ“ ÀŸ•{žxMõKC¶<~±°¥ÎÌ÷÷u»Ž×Òâ™íÍ¥UI-ÞA+B ·s{.DJÔtÉ O?Àãê´Â.±@Œ¾qäó°ç ‰d~~<‡²"yYKhA™j0„"²ãI;Z“­Ç£ßœz¬ÛÖnÒV¦s§â2bL„æqÄàÌ3£UÓ¼À G2·¥É¦nå»p70³crbüo[mŒoâ˸NWôe=¨>ùy×êúI]ÿY©g‡Ú”bç²& ¹õÐI~_î¡Kd6“™Úb$ä+wD|2½Ì2eÑè¾…±gùˆl7lÏ6 5‡ºäèMcýçL_Lë§þ—˜ZÖø½OÄ.s¢¤¹Š•n@CûÀËnPk˜ïÚæ;Ø:ï-4À‹Þ–Feï×v@ªòî›®‡Á¾7,·æ^ËMo5Ô°9Ô„Œáñè+_;¥m!wüú¨î®ç,ëR—/œMµ9£®@|T šùëé²-ŸÔÙJ`œ…2z7ª0,;ßú÷º×Ö¨FÄ#Õ1rÜ8cfq0!Q†gu ðcCÛ‡3#E i‚É‚ÕÌ•Ãй£²ªKmËÉ÷µÞb€ŠeÔ_óÆ9ü¼B¡ÁÅ-L=ƒëÝóYæŒê iÖ;æjBT¬¹ÿ”©ÿC¤ÍMoüG¼Z?;üäD” Qj^Jx¸[ŽÄ¿hÆÀ÷Fñ®\ûY(3 Ì(Ù.àpps@pS["¢ìwOþÈ<ÿð7ˆ]× endstream endobj 2425 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F6 539 0 R /F5 535 0 R >> endobj 2412 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2425 0 R >> endobj 2428 0 obj [2426 0 R/XYZ 160.67 686.13] endobj 2429 0 obj [2426 0 R/XYZ 160.67 668.13] endobj 2430 0 obj [2426 0 R/XYZ 160.67 649.04] endobj 2431 0 obj [2426 0 R/XYZ 160.67 561.48] endobj 2432 0 obj [2426 0 R/XYZ 160.67 542.51] endobj 2433 0 obj [2426 0 R/XYZ 160.67 440.68] endobj 2434 0 obj [2426 0 R/XYZ 160.67 421.71] endobj 2435 0 obj [2426 0 R/XYZ 160.67 308.2] endobj 2436 0 obj [2426 0 R/XYZ 160.67 286.63] endobj 2437 0 obj [2426 0 R/XYZ 160.67 199.35] endobj 2438 0 obj [2426 0 R/XYZ 160.67 180.11] endobj 2439 0 obj << /Filter[/FlateDecode] /Length 1124 >> stream xÚÅVKoã6¾÷WèÐ ¬ñ%J½mwÖE›‰¢¨{pd:QcK†¥lvÿ}g8”-[N z)ržœï2Jx’D‘~Š~œ^\ê(çyM—Q–ñTG±R<ƒÿÏ2aäè¯é/—v/£¸ÐQâ·?ýüñf:¾†b"á£ØÚŒ]N~ µÉÅ5M>^}ƉfwÜMÇ¿ÑâõÍøöã(“l:¹¾ºCGÑxêC2‘<7½˜RÁ3I1%<ƒF±Ò°ÅóFö5³] "Ñ\©(΄WCÁ+çUåVâ3Rw¿r6ò6„áiÅÁ7(uâ$ý†}¢E¯‘œ–¯JÇ=tÀÛyÙ¸†nŸ«¶\»ñ×ÂmÚ²®èä÷Õ‰nMKÅS:‰é£#™}Ò2á: Õ鎦oCj.UØ_>W…÷ã‹QÌŸ1’#{iÎ ò»ôŽljÃEdÚ­I¶uK·¥ŠÓ’b-Dë'Í|íhk&]…ÕùÀ·–[}è\ œ.:þ6„„MpÜcÈ 5®+8%Øý £¬ÀŸ§·%²¼Ãd°ÚÅS¼®nÆð{ˆ2Îùœ½fhù@ò®Ý–ÕÃ."åZ^Ô«xã³áøI[ÌÁÒ;Ú*Ôlh拌> endobj 2427 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2440 0 R >> endobj 2443 0 obj [2441 0 R/XYZ 106.87 686.13] endobj 2444 0 obj [2441 0 R/XYZ 106.87 668.13] endobj 2445 0 obj [2441 0 R/XYZ 106.87 650.81] endobj 2446 0 obj [2441 0 R/XYZ 106.87 398.85] endobj 2447 0 obj [2441 0 R/XYZ 106.87 378.41] endobj 2448 0 obj << /Filter[/FlateDecode] /Length 1375 >> stream xÚµWK“œ6¾çWpÈ©22Hˆ‡sJoʉË[埲9°Œf—˜ýïÓ­–ñØ—+9A‹–ôu÷×¼…¡wëéÇoÞ/Û—©—³<ñ¶{OÄ,K¼@|lýÓB–±M¦©ÿörbÿâãû×Û·—ï¯6my›yÆ’Ì i£øÝ{³ÕWH/ŠX.;’ˆe|¼#Ê7AñØïU­ÊÁÝ›o!“Ò 2Îhç×V=°µÛïc/Pþé^a¨ª=×_Ñãj¼7’hG`Ã=pðD÷móú®hUkõÐU=ÍT/Ê.9WÍtï=Ô ž(ïë¶ ¸ÁoQõª'§|86¸ýÍ×R}ª¶™G-Y >å‰ñéöN‘Êèv2aÂ:Fgù˜In4öǦÔ÷"JüÏ›€§~[×=Ê©¿o»É‡¾¯njEKš`ð´{ zôj ½ížÊ ì$WõÀÍX¤« ãˆ¥‘…œaŽ2–ÅæsÑ)ò¤`jäÆAÈ @üsTM©HÒHd>AB_È>xéT±«šÛsX‘LXdaV`åŒ',}Ø ˆÜ€ÈqêªÁ‚£RÉDêò¤hv |9fgxæçžœ Ë„FH]ÏÑeÜZÒ@dH  4¼¨®³¯eÛì*$ÆYæñjœ“”%“M”9ÇE˜²0rMª¬®¹L1Y°¶ w_ÿP|­ýxÀî‡öØlxâ$kû@o4{[Z9á¶¢H"³àE}ÁugdþöèB³<T‚…B£ºêó"},KÕ÷ûcrlŽ]³ S³H>–™ÂjÐ!=ÝPÌÏŠ9‚ Í«GÏjo ÒÿÔ ªŠJì]U¢îð| yOеKñe¡nѧ€øÈ‘kÜ p•œ¥cRïúW„!9c€²È‹bcP± (Ô±Ìö Ÿ:­èº/þ6 Á=SƒŒZ_6`XQÕ&X>ÇÐ$5›£ èրnjG”Ùyjá@htò!lÂÅæ¦ *l‰‹Íá—Éõ%6ºÕÁF ¶Äv.KÏö[k68Ðî4Ë6£!I4-´¡:ûËòØujÇ`£ ¹žxhf…SŽ ùŸö÷Ì ’¥!uÂ3ê¶ü´¿öK2áµÉ²= š¡V Œ«³€Ùö´ÆmNC‡<_LpçlÈøOÚ»dyöH{˜°)£}³Â èóöÃíŸë¢D$ø^У6‘Eâ|Â%á“¶´º=€œÂ§®¨ãçNh÷[útÞ§}’$,É'õ|(ºÁ¦Š©½çj®YæVoÓ{úÊL*¸ äÙúuPÍÎ4„½Íw Yb' Ú¢Ešo7:weŠ}ÀØ¥nµßZ|ކ`‰ªP}Tý˜çóVòq„±L›‡^ø¤a»~KòjåˆdŠ€Ç‚{aS,d±w–£cœ&,–ÞÁ‹a´ÉÏrí]A*º‹ …êã»Ë×Ì‚š´íçc3#Õf"Á+@ÅR1V¹u¬ƒ—ŒX<ÅŠ‹æÿg ª¯XŸ¾»¨8³Ü²È-Ò?‘t³0Sø•)²EÍÆt…©Ž»¥✅¦Îó‡< ЫF<ó—,̈¤«Ñ’˜~Ž Rê ÏvÁš)<ÅðlÕp}ÈŸztPîNòÌpXä9þæj»2ÙJ¹ÝÀ,«úáq‹[È·nÅž~%†€B<Á”TÀÙh‰g†À¥Û‡{ÒMDßÇa3ý/†PBi}œÃyŠÍ|tÉ3ä:Ou¬V}ϾÄS8$îŸAb0뇉 gí endstream endobj 2449 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F6 539 0 R >> endobj 2442 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2449 0 R >> endobj 2452 0 obj [2450 0 R/XYZ 160.67 686.13] endobj 2453 0 obj [2450 0 R/XYZ 160.67 668.13] endobj 2454 0 obj [2450 0 R/XYZ 160.67 651.48] endobj 2455 0 obj [2450 0 R/XYZ 160.67 565.98] endobj 2456 0 obj [2450 0 R/XYZ 160.67 547] endobj 2457 0 obj [2450 0 R/XYZ 160.67 431] endobj 2458 0 obj [2450 0 R/XYZ 160.67 409.97] endobj 2459 0 obj [2450 0 R/XYZ 160.67 323.97] endobj 2460 0 obj [2450 0 R/XYZ 160.67 304.99] endobj 2461 0 obj [2450 0 R/XYZ 160.67 210.36] endobj 2462 0 obj [2450 0 R/XYZ 160.67 189.05] endobj 2463 0 obj << /Filter[/FlateDecode] /Length 1178 >> stream xÚÅWMsÛ6½÷WðÐ8Âø$ÈÜÔF®Õic­K§Î–(‹LzHzÿû.>(‚¤(g2“ÉI$,Þ>¼} <æçà·õÅ¥RœÆÁz$ ŽEqŽxÿð/¢R„ŸÖ^\ª~ÇTÄ|þýjq³^Þ†°‚#Jp)• ËÕ_Ëwvluqm?èîþ¹[/ÿ¶ƒ×7ËÛE˜0´^]¼Ó˵$Jq*=L1Å ³˜N0£aD)“hUæíb»­ýÕ“„‚•0‹×ûÜ&”ç0Šiìò£ùq„Ä wsª‡0’ý—oÚ0„¢mÞlêFY‚òF1”•öÛª YŒÚ¼†Àz„  ÂçM\Å’ •‹±©`¢BmV”i© µ«‡JüR”&Í(Žqš‘æÈžÓ=“*?l!ª“ befeÇ̼ì•e3»kk·…Ÿ;§˜'nÆ{€$„ÅfÎ×¢véé‘cz# ‘L1W€†b’˜Xϰ€¡ªn'b,ûiÇx¨Äq:ƒçÙ‚Ži^ ù/O!ŒéãQ(¯ñy™Q –)OgÌéìªjÚ³£‰ÄV ‹qBIuˆ»8~&0§Ô¥s*C³*Ã Í !âî«¡Ìž&µg­è›jP3웈¦Ê«ÝêÒžbйƒ§‰ìPd ÔÐVŒ•Š$hQ×ÙëaÌt±V€£¶È4FÇユîÕ>Ùýº×¯lˆÛ.,ܪϥ¥¼œ¦“¦XÒA:P mÈ)zÕb§h·$˜~?ßÏu¾Ëë:ßZ„Me4¾Ñ¢ÿ¬5ok’¡mõê™âM(ŽþôˆwJ>ÓYüè—§éWÌyX›¡ñ˜äœ9‘ˆ‰‰°ÎDìA‰®vUùè„$Ts ›/nNN…WÜÜ÷cÞêå樺ºèâøu,0‡â4íä¯÷ÇÅv¡Ñ¥Á‚ñ}hyzo®ì¨‰mM,r!š^ìf÷r€iýl»m†=ÿö¥l‹§|ùu“?·¸Åè@"péþLìj˜Ïøt&Ýéî^ÊÙÚ”@uÞ¾Ô¶yI”7€[C¢Î[ q²ÁJð¹Ú>¸ž(Qól%±)ŒámõhìI4ëÈÁ§²&Zÿ¤çÿ„/w]ÿÉWncû l¿sþ‘YUÚJº!G•óž®ÎwÍyý ¢/>ž~…ÓïM]™zÐ÷ˆÃÙ.% ßSñ-„˜˜.Üè*Då\³ªsð¤&·ù55Ú¬ F M5Cn^ý&aíÜ\ˆ4Wûl¦ÛÅÇnÇÎt»*æw»MVVe±É}cqÇ=l~b˜úÏë‚]XƒigEÉýnr¥×Ül³°ó§”¦ê;ïnS}èû›2= ~ûþ&_âUˆìÞÄÿV‹—\“yoW{¯Ÿ¦ßUͬÏ÷Ü Í’y¨êŸcü$éßÏrìü`lâü<å½óë—SÎ/ÙÛž¢â“ž’r§Ô´S ŒôöëÜßZ¾`X0Ÿë‘¢ÜNpõÇ;QžÊ|¶ ¸¿|ƒÐí©:[¥¼u‚·%?ýËòËÿ‰•ÿÛ endstream endobj 2464 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F8 643 0 R /F6 539 0 R >> endobj 2451 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2464 0 R >> endobj 2467 0 obj [2465 0 R/XYZ 106.87 686.13] endobj 2468 0 obj [2465 0 R/XYZ 106.87 668.13] endobj 2469 0 obj [2465 0 R/XYZ 106.87 651.7] endobj 2470 0 obj [2465 0 R/XYZ 106.87 541.42] endobj 2471 0 obj [2465 0 R/XYZ 106.87 520.58] endobj 2472 0 obj [2465 0 R/XYZ 106.87 436.96] endobj 2473 0 obj [2465 0 R/XYZ 106.87 418.45] endobj 2474 0 obj << /Filter[/FlateDecode] /Length 1408 >> stream xÚµWMsÛ6½÷WðÐ9S!ð#·Ô±3j¦Žk)ÓÎ4=Ð2l³–(…¤ìøßw ðSr”C/¢b÷vß.^ÈÂл÷Ìãƒ÷ëòÍEâe,‹½åI–ÆÞ,Šð±|ÿ·ÏC–²`–$‰?ÿÀé_|¾<[Î?].‚–¿½¹±HYœz!*…ß½ó¥ÙByœ³Lõöˆ9KE·‡ˆƒçBú ]=+Ý7–c|iÈDbl—š`¤í2™X½ÅËÀa§lo‚™ŠýõªA~‘_é]¥k]"ñ›Ç„ŸõR78úˆÔßV4¿¦=ÀKRJnWyÈk²i¡¹Û®×[c^”÷4ôE¨D¯okFãà,Y”y3!X¨ Ì2ßL˜Fœ%Ü1m*\vL”³Èùâ-lñ˜Í¿íÝjKi+ba °@<¤|]äµ®'Èb–ÄCd3%”ÿ®ªò—1ÈX°D Aºe­ãªSñeSœð‘>v`À!VÍD%1Sá¼lƘ¸bqvÄq°¦‰¿´Ê~ƒš)Ámá’[£`KÁ„ê»uWm›ípg.˜W8aµ]qKȪèn³(bGÃ\{mèÁt¼B•Fãz_6ÅFŸ[é]Sl˱×g!*¸—­ÊiJ™!ÓÑb ¤¾SæÝ¾\™ g"ÊŒü“!… ‡ŠB¸Éíøb"Š_rzïJVB%KDi¿dñèØ!ÐòG_)¥›wy¡’yc”æTE9£W…)y·4êJd>Þ°:IŸ$Ú˳ĬCž}G¥ÂB'‰¦V¢5äà[PñG7¯Š4â“ʉ´Þ®ÁÀÈâv»É‹òRRó²ÓöïÎ&çH³gyYêõX°”ñ´Ö!½âô° Ü餉DZÉÿ¿èûg±õÜX?’%±£~V•ÎíR’ö¥ ?¨y_ZÕ¶ªá·GüÑ )c¦ã ÌZŒý"^×ÅÍÚ=JÁɳ;½žW÷û vq×Tz(æî˜§cÝ…$;ÅGVÇ}„)–RŠaû<.Ï„C*§Í†@z’èM ¨9Üž›Ô“]]¸œt޳Ʌª„qám<%q¦{_{ Èþ`ÄÍ2Ÿ/çÁîiDYœb‹o“ЧXâÛÏøÝ°k³Ëx—˜b€ŠunC&üm¹~±UÂ*¤³¯_êFoÍ$ʽ×$#+\Ú#Kï#²0ÑI8¿<_ÉåTð GW»ÆÃ4™ºÂy†Ð€ôüêI€ošß^³p ~œ0!{ðé}¥láÇSüñ˜@*úÓ+$ˆm&¦Ð¦}…}'L‘í,$8pÖŒ!zµëîò|ê\•±Øjƒú’ŧ³C÷‚Ç ·©Ü™{! ¢}µÞíÆ$åýby}þî÷¡wëJÜfÒy‚Q˜u½3N9TåRWåø¹„Ã*ê«ã8LSÕ ×!STÜ߸㿽¯Á‡ÃÖÁŸ7¹™ô"ð㉠õ$ïÐëŒÅTŠ®ß6þ±‹–C•cð<¹’dXֈĵ)¹Ï?Â!TLƧqÀüK:ô:äc1ªÅùWAרDö‘ÊMG¦Ö_wù¸¯®²½—é¯{]®\3†–){º8Ymç—¶4î'Êá|.ŸwÇ.,¦Óœw…†4/'+™ìøm-e©«©àŒqç-^¿#KLR[uò†0Œ:V‡Œã›ÇR‰Ow‘Ï©×R–ñ~Ãu rW]×Éþô TfÆ endstream endobj 2475 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F6 539 0 R >> endobj 2466 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2475 0 R >> endobj 2478 0 obj [2476 0 R/XYZ 160.67 686.13] endobj 2479 0 obj [2476 0 R/XYZ 160.67 668.13] endobj 2480 0 obj [2476 0 R/XYZ 160.67 651.08] endobj 2481 0 obj [2476 0 R/XYZ 160.67 463.26] endobj 2482 0 obj [2476 0 R/XYZ 160.67 441.48] endobj 2483 0 obj [2476 0 R/XYZ 160.67 336.92] endobj 2484 0 obj [2476 0 R/XYZ 160.67 314.75] endobj 2485 0 obj [2476 0 R/XYZ 160.67 236.14] endobj 2486 0 obj [2476 0 R/XYZ 160.67 216.57] endobj 2487 0 obj << /Filter[/FlateDecode] /Length 915 >> stream xÚµVASœ0¾÷Wpè!Ì”HHoV×v;­:º=tjˆYeê‚¶ãÏo^^p‘EítÖ!¼÷òå}_¾Ä4ŽƒëÀ=>{GI ©VÁbdUI A3û~øƒ0©ÂŸ‹Ï{Gé&FP–±û|ðiÿt1; m† ,¦a”¦9š™½Ã¹ùÞ öaóïç‹ÙWœ<9í‡'‹ùÉñ9,Ì’ £Z0)F3Ž˜bšQ®Ãˆ1.ÉeY] 3³ ,N¨A”1Š›Ð ÒÖÅ/ÓY|’'ä¦nq(É]Ýt¡+Å$U:ˆ<›‰9˜òÃçÕɺ;¸É«Êܺ¤x˜u…ŸwMY]¬:ªÛ¹¨h Äüeykv†Š= ?‚‰i,M^¶>øl]uåÊÌî sוu…zÙh*Ši*ƒˆ'T#‹ƒ1ªxL“Ìkª'tXÃ&sá¿/×UáÖq‚è‡9 ¬­Ãˆ§¤¹"¿Bžh‚œt5ä>5¿ºjLÛRÜb’ДÙ-rxô0#¡4QÞ\¯W¦ mÙç–u³ÂQ{g—³‹å—©iqÖ­‘ƶã.É4•C¡2RÔ¶ûnpDRMº‰v¨˜² Ž(Û¨i»%RCs}Ì8ps\kÜÝH Ð†*_Õ 6h~ú¨Aþ(ç–÷y0K2ª{‚œ¤'ìM£l‘ÏâvÇÀÁ†­W@Ü¥#Ò4´a*p ÒŠð1CvÎ3dGn=œÙÂÍ¥uë[UÞOà¶Nûå°ˆ–O¤,è I[ SÞKÖ¤qå´¯|‡;pgñv¸½”Àä­q> endobj 2477 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2488 0 R >> endobj 2491 0 obj [2489 0 R/XYZ 106.87 686.13] endobj 2492 0 obj [2489 0 R/XYZ 106.87 582.14] endobj 2493 0 obj [2489 0 R/XYZ 106.87 558.75] endobj 2494 0 obj [2489 0 R/XYZ 106.87 450.08] endobj 2495 0 obj [2489 0 R/XYZ 106.87 426.69] endobj 2496 0 obj [2489 0 R/XYZ 106.87 328.04] endobj 2497 0 obj [2489 0 R/XYZ 106.87 306.59] endobj 2498 0 obj [2489 0 R/XYZ 106.87 184.89] endobj 2499 0 obj [2489 0 R/XYZ 106.87 153.62] endobj 2500 0 obj [2489 0 R/XYZ 106.87 153.62] endobj 2501 0 obj [2489 0 R/XYZ 106.87 153.62] endobj 2502 0 obj [2489 0 R/XYZ 106.87 153.62] endobj 2503 0 obj [2489 0 R/XYZ 106.87 153.62] endobj 2504 0 obj [2489 0 R/XYZ 106.87 153.62] endobj 2505 0 obj << /Filter[/FlateDecode] /Length 1415 >> stream xÚÝW;“Û6îó+T¤ f,˜xdÊ8>Ï¥8{l¹ò¥ %ðĉDjHÈvþ}v±E‘tnœ"Ea¹Ø]íë[«”¥éêiå—7«_·/ï̪`E¶ÚV+©Xž­6Râ²ýíSÂSV°õÆ“¼{ÿ°½x³†m•Ü}|xµ½ûðaýÇö÷—wêjBä,ËW)©kƒû`‘KfÔj#Œƒ­íÁ’j>¨Š”)4wmÓØ›YB‘êÒì\Ý6èŒ =¹W³oב'»µ0ÉŸk ¬£ ×Òä:{j ªû}gûž‘ãYÊd±ÚpÁ¤üÞHe¹)»§ËÉ6hܯj»QýÙÿ³ÝÕBÛ·DgUžÜ“’íïÊ¢û¤[åf1?™d©Ñ£›ÓìÅdLýà\ž¸Pƒ‚0 g…ö25¸¥8dcBâÖ/ÅEÌm·ÕD>æ éCÛ»@bÚoƒß“@¬”´ìÛSY7D7å)Xi»àÉ;ït:vw¨ÌF)µ” DÿÜvn!=BNÓCµ“Â'ëïƒÃ¦  ÐŽÿô²—þ~†,±]ì‘‚ñyˆL$bÒ#È£Zúĵ qëcS#ÖBãú¸Eº7/ ¦ccø\N#—L/G.2>øáÈm™`ÕŽ6ÔÊœ¥b\ 죘¬‡);¯·~ÆèUP† ׂq§LΤ\ÕD8LbmCŸ-}÷ÐéJ)>Ü|¾m£›£+Öa©‘LEÐV屟£:c\gÀ&rŸM]ÁÖe)Î85$c˜õ?³Ðè;É m7†Õ¶”ý ØxÁòü ¶~aÐfj6a®E†ÐiÈ%°!ëX7–¨ªkO´[c@™*œ-(62¯ÆæåµñtÎT6·=6é_(˜€|€.’º¢5ø– Ó†ˆ¤= øLxµ }ŽPà΢ÃÅaŽŒSݔΟ{ø×}T>µ8s¾ødÿLO«TÅΤžÖ¡§«g›ZADÛ´ú±®®þm 7ï<ÞœªÅ¾.F×áeôè1Y˜ À ‡°¨êHQ_ãnIŒaªzÍÒÑ&ÍW`: ùm8åtˆÀ5àæñ÷(l9h½ïk _kw˜V˜œÃ™Øžm³4Zõ0Z7ÊáûXAk_ãǯ!~üpQf„3t(â ·g·²ˆ3$gTîÔß$G‘ ™ÒiÈãüh>E^@™8UoŽž]_d¨:sä,6ZÙìgúðVk›…/Ï&Àó/ž/9˘øã^çròâÂÚqzPÃKKIFc¿„sM¯j/R@|YCËã%|†Ž”)ÙøàÄ+“ä‹9†ª\_µË9.˜X¸áÂìéUbõSä0Hõä޻刺_-o endstream endobj 2506 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 2490 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2506 0 R >> endobj 2509 0 obj [2507 0 R/XYZ 160.67 686.13] endobj 2510 0 obj [2507 0 R/XYZ 160.67 534.44] endobj 2511 0 obj [2507 0 R/XYZ 160.67 505.86] endobj 2512 0 obj [2507 0 R/XYZ 160.67 505.86] endobj 2513 0 obj [2507 0 R/XYZ 160.67 505.86] endobj 2514 0 obj [2507 0 R/XYZ 160.67 505.86] endobj 2515 0 obj [2507 0 R/XYZ 160.67 505.86] endobj 2516 0 obj [2507 0 R/XYZ 160.67 505.86] endobj 2517 0 obj [2507 0 R/XYZ 160.67 327.56] endobj 2518 0 obj [2507 0 R/XYZ 160.67 309.19] endobj 2519 0 obj [2507 0 R/XYZ 160.67 204.85] endobj 2520 0 obj [2507 0 R/XYZ 160.67 174.06] endobj 2521 0 obj << /Filter[/FlateDecode] /Length 1194 >> stream xÚ­WßoÛ6~ß_¡G ˜ñ—H E¬MÖ KS$F¡ÞƒfÓ±0E $Ùiþû‘¾]†6€I,"§ÂèüO¸è3|à½EyÖ›“Û݉ï¾ûØkØ’HàT™"P̸;´Øêi¥hŒSæ[¹N£0‰èÒ\ˆX‡ÁG¶p’([¯¿‚G«ë§¼Ì ÖPê—"/d•ǰì0,Ñ>Â÷'IWãþp,½v@NçªËˆ!fq²º‘÷™½‡⺂77°-«ϱuÌLJô¿ÿQþߟCÂûs`¦ˆQ—'…BËí?ˆ€iÀ1ä͂ϊ‰€Ù¡'æÑ‹K:0V ’^Ìv$Æo,Æ0/3õ£" ™‚)9=ý 5£tÄ­œz  P6T:Pʦ*À¹W:¯)µí8Fâ\ÛØÿ¯ò:éôLÍcމ<è&^ nóf¥‹"+µéµå~1ÏýÉ”ûM=¬"BL£F·Ñ*dħ9"›§¢°H]whp`‰V}ìŒÚy-³'í¶9DŠ ;à‚ã/ðxçmÇœà㎼¯ñØyà6£ö‘Á¶JaÈáÔƒnGýd>Ží¬›ÖÝSHU7~¾³y¹©ê§¬cZsý®ç}”ó?„ù'ZÕµþCþ¸ÕuTè½í•­—Uþ›»(8–r»Ö½~ÜY ÁôWC'MÓ…,‚à6s±”Cª6ö)ü• GÛCƶVX‡Ód¶»Æ{×}d”Óv5HÐøN÷=«}É×Úr¨g@fZf:ð C ¤ïuÐÕØÑ}Bξ‚[©³•£|­áÇ|•ýèOçÄ|áÄod/ÿLËG„ý…Ÿ—ˆ,CÀBdÏIËÄÇ Qà Ÿ²®ÎI•O2/}ólª¢¨ìo/ðeÈúä:[µXÍyKQ.FÓañ§<æd endstream endobj 2522 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F6 539 0 R >> endobj 2508 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2522 0 R >> endobj 2525 0 obj [2523 0 R/XYZ 106.87 686.13] endobj 2526 0 obj << /Filter[/FlateDecode] /Length 1360 >> stream xÚµXKsÛ6¾÷Wèà•Xñ A¶‡L¶ãLšÌ¤n/VòýÑr¤W£n^]òQŒâpt³Q†¢p4¡T=n~ºõ°0Fã çÜ{s}õæâãäÝÅoïÆ°†y×Ô“z—¿¾ÿñæúÃû_ÆŸnÞ¾ºdíy$Ba4òÍYAl¾c¿Y0¡˜"ÎFÂõ ,›’˜uQ³L?Í)SøuŨ3¬”oÇƘ—dë¬2Y›—Y’ŽIèý^®“r…úXH ÅG$%€¤Z #>Y Y™¡Æ±Jd’¼žŒp}ÄÝUO€˜•€&¢Nf.´9hp“¤¢¡ÂŸ¤‚1C”[2o\ɰ܉ÍÂ…Í¢÷ !æl‚ýEUÞ9¡ÈdžÈ@'Ï]ˆäâó:ËÅ pµ-·®4häd éÂ!M¤Ì’eý&Eµ•¹‰2Ç=Œ†Jµ5£Ÿ1 Ž0âÀƉSå©Jfl(`–Áµ«Mpì´\(<(åCÜÊREwIµvy–pú¸Z!„ºð˜ßêàaTËÎoÀ×ÙHQŠ\©¼Ò—&gjÝŸjØÍWV2Ë—æ baæVâ1™‹4»×táÃ<[fUÙ…=1 @ý(6äV]Ø"´±Û$4߯×FÈÃ8 díÊdV¦^»(ÖëB¡ÿ\c¥–óJñÇVäiM'‘õtZäe6Ò’¯ …m4ш4d„ÀŽÊ¸æ–m›œ´*¨C[1l¬.&žÏç]EÖjjßýXϾ”°/L6ö…1>7{ÉyÍGš'5Ӱ޼´²þl”ŒŠ Â1"ˆ0 è£Xn׉:ÁÇžxT¢Ë ô«&H­rÌÅ”<×p`á¶4Æ‚/† Ê vÖ’aÕ^Tè¹ }Z¿GÓéÝÙíÔ›Žÿþ÷Åëž«qzåKt¨ÈŠ ­AvJ» û&ºO*cQµ76Û«¹¾¼„ƒ2³E,¦C6Öàò¢2à꺰cŒÑ óE±“¯§íÿ¯Æ8tnDˆåx"7o}ÝR¨Åë–ž®R¹Í©¾C'¸e¢EöÕÚÈòt½›û j¯k©CÒ°Ú»¯¹Dul^fyÞ@³¹émžæÙ×Àù|?i<¨Ûd–B)ð©W ìxúapT[¼I½d¶ç½ ‹!¯3t †dâ@©hx9{÷ÀG4:Ù 3ñ˜ŠMÕ 1"ü‹Dbº˜Eâ$éå︭P÷H„- ‘z‹ÓÝ£EKË è=Èev+qîÇbÕ͹ð>@»_¶ìÒîŽËñQªÖ{¥@cyï‚üàtÚ¡©nÓ>’K^O]¶£¶úº/¤h 0î¥éVJUU–MpëZ˜ó¶µ“GËëžÍsù#D¾8%Yÿ%dQÃïФ¶ÎÜ£IÑ #Äéé4]¨|ý<,[ëî“|’c(;‘cÄvúóÄ“ÓqgÜúRÍ:¡S\´²‰¶Ö|ÛÒôLýMd¦–²Øn W›úéÛŽãÓùJuë›ãiŸ3õUsÚpæLýY‚ÉXD›Ž¥T¯¤áEQ@|o¶­Ì27Õ í}̆–ý\M`èO«U–·»L?¥!ì´É}¥sf*I¬úÍqè%Ù:™­…ù\æ³Éá0(¶ÕFTã¬}ÀiCé…Àf¹ªçv×¢sŒiÃe6ÑXý]˜Jx¿#c­>Ïð±à{ÞÝ"ß–ÔgäøNí†uº]Ü|óÄÇЊ endstream endobj 2527 0 obj << /F7 577 0 R /F4 527 0 R /F10 1169 0 R /F8 643 0 R >> endobj 2524 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2527 0 R >> endobj 2530 0 obj [2528 0 R/XYZ 160.67 686.13] endobj 2531 0 obj << /Filter[/FlateDecode] /Length 1046 >> stream xÚÍW]oÛ6}߯ÐÛd f(Šú Šnêl²$¨=C] ´ÌØÂdJ“乯Ðÿ^~IrdE–ƒºÛ)ñ’<÷œ{/I¥!›_Œ·Ó‹kl pé£áûÀÅÆÐ¶Ï¿ß}4->M»¸öjXØ€røê×ÑÃtü~ÀgئÁ`èy¾y}s;~¥þÝ\Ü«Îèîè`sòçd:þ]ý¼¿ |dNoîï&j# V; ] cˆ<ùÍ·›!)+¿2’­B“ý˾ªáÚ#„*Ñ^†csMŠp€òQÍVl”d‹ÖxŸ³ÙÛ#nËœjVª ~‡Û[înÄšÀÝãÀ{êõúÜzU¶‡W’7?̳Žû~Bm_â/µjˆdüx,èE‘Õ“ÿ/I ØíÌë f¡ÊZé)KŠæy¥}ªŸf=uùüJ r¼˜~ù~þÏÓgÏ™Ú\:pU†cqÁc’ç†üàa$;š2õ±ÉéBô³HÔŸ[H-¢eTtø«£ú,L|yƒ\« ƒzðΊ?m¼X­IÜ7Œàx'´ÌHº:¢SµcóL&™®p)/÷RK2iy²ë*ÿO”GóÖCêt.Å>ír  -Ä%Zèh´°V¼Å,hnWT¿3äºkÌÑ^¨ùÔà£üÒîtN!ݰðH”>“ )¢„-Rç1auؤ$¤Oß[…('g*r¹Ø®чUTм†Õ‚ÂOú|»ÒR endstream endobj 2532 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F8 643 0 R >> endobj 2529 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2532 0 R >> endobj 2535 0 obj [2533 0 R/XYZ 106.87 686.13] endobj 2536 0 obj [2533 0 R/XYZ 106.87 668.13] endobj 2537 0 obj [2533 0 R/XYZ 106.87 651.73] endobj 2538 0 obj [2533 0 R/XYZ 106.87 578.83] endobj 2539 0 obj [2533 0 R/XYZ 106.87 558.06] endobj 2540 0 obj [2533 0 R/XYZ 106.87 236.21] endobj 2541 0 obj [2533 0 R/XYZ 106.87 215.82] endobj 2542 0 obj << /Filter[/FlateDecode] /Length 1192 >> stream xÚ½WKoã6¾÷WèE"®ø”´Çn“Ý‹ Ðu{©{PeÊ&*S^=’æß—äP6ýlŠ=¤©y~œù8‰2”eÑ:rËÇè‡Å»‡<*Q)¢EQ† ¥”Úeñão1ÎÆ(Ió‹ŸŒ‹þE ÒzÄÙ~ö$v¦§áû~Å©3Ù sSµÃ¹SaçÏÙéÍY••9 ÿía~TêJßU¹™›ÊÒiZÙ%4T:FgOX] f)˜¡ñåÙónõН f§&Èå9Ñš WL „ÎC›GЫ­<ßý ?Õ²è endstream endobj 2543 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F6 539 0 R >> endobj 2534 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2543 0 R >> endobj 2546 0 obj [2544 0 R/XYZ 160.67 686.13] endobj 2547 0 obj << /Filter[/FlateDecode] /Length 1737 >> stream xÚ•XMoã6½÷WAr3ERRÒݤMÑM»î¡hŠ‚‘è˜XYr%y“üû9¤$[N²{ i~Ì gÞ¼e’0œ=Ììðëì—åù›e$³åj–¦D°Ù"ŽI ¿ßÿD‚ÎÿYþ~~• gb±Yh·ßývñqyùi7â É|‘$ipuýÇå®]Ÿßâäâæ½™°àó_Ÿ——pñöãå§‹yJƒåõíÍgT4³)¡³Mìoж\+<“öghD˜7¦Íeu(ƒrB#·¿ÚUy§ëj¾`ql›zN“à«.T‹+ºÚîºasAÓ Wm««³Á>næõf#«bQêJáΪn6æí±ð6‚ñáÙlE$ãêcübÔݱƒ;Ê“RãPÉÂS²yØmTeNv-hà0¹^á^.ËR8ÔÝgU}ä¦ †€Éډŗ3ñ…Ú“†½mÆÔ$ VM½9ô» $L¼ß»BO/”ÃS††ƒ¼Þ4¦ù%…a£R«³0P27Ö¬ñ@»µQ¹6¾RÎbø0BNxê ¸®Þ­eU©òÐJ–P¸Cg·˜…$åc·Ô ¢Ýs½Â‰†·Vþšu6¸€1Üî:‹1»Þº»å£yŸ4ží ºzòph"×ÀñcâˆÄIïrûÊ Y !\ék9”¾‘CìHÅAí‚ÑÈ“ˆ÷ö¸Ý(Y¸ìaè=3éÓ ÜW¹5ŸJ,nKº[z£ŒFª¢Ï,!0@È “lµîun–y^7…[fƳûÁ\Õei™à±¿*ˇºŒÚ #F26öáÕ<*¢1<á—yÈN n0à¢v6HiÚÛm©ÝTcZX#‘TYØü…KÆû¢ý\Æ,‚å{pGÔ;<ïáOp/é¡‚Â0ø:çàóFËû"yžÔ“èitfhˆ§ÔNx@9D \àÑü KÔMÜkš° #Ô#ñ4<”Å„q·kývʸ ²<?­ã@ :ÀiìéèP7î·V˜xpYDYLÂ=&8ýqb#,Û” CF86tÙg¹"Ue‰ûhL\qýSî”á{Á;’±QÂHB½£î‚›«»ù„  ÀgîȞϭ1hk²ç¿ÌÆ{ÌëÁNd“(#”ŽbºÛÌá°s¹#=$FÖô…LºQO‰Ü—8ä²5j¨§mcÚVLر&Ãz«J•wª°”›ªrèÁID{ªl ¯ÿÕæçƒ{6²Ã¶å„úȀήö•ð@GJ‰è3bа¡ª  õTÆ"ŽRÓŒüy_ÏS[cFÒl 2Nåq"Ñ<¤X`¹ç6N]‘‹gw±²tÁcÛϘqZ<#5ÐS>Ä¡n^-6æÜ· °íÀ(§Ã™»•mkAfÌ«3WÐâEcB¯ˆ£¼”»Vùê 7šGݪ Gò‚”A¶ó…µÐP͚¸ç ‡L=ÉͶ´t  ¡ñ­’kÐŽ8)Ë­›ŒðIÙ4²ºµ©rVjÞyù~Dµ­6Öà’ë7ñÔº…'sn`3B©uC¦­ÉLM wçd™ß@–ÈFïp"öÚUíw-ɇãnQôO¾ƒ¿ÞvDWÈ@û %&³³…,ìzEéøÝ*AÔ©v2“3ƒ ]åÇÅh4ÔÙ ¤(‹Â͵«TѾâÞ¯ê-Ô·êmw÷¯ëåߣ^‘×U;ñøÖGŸÒïÖ^¨•Ü•/„K ñ:ù³úRÕ*r0ýÉ©N¦5 :xs E¿ØŽ†o´£Ð$ÄÓ¼²}[뺻v·ÅÖ騠Æj‡^µDš¨·æfK¦´œ’$ç "ÝwíÏJC£t̳};$‰Câ«/Ž´6ÂóíGû5ÐPAGý%±k”Í̆+3²½>¼YêÖWš@o‹„vx®Åƒߦy}ëdÿ·«]¥¥ÑÀ—æ˜zB‚‡S1~O£GšlÑ7ÙÔ½Äl®-÷ÙO„F¹5ûI]së$ÝÝMè7Í 2ÑgeûZ >yYˆ0žZ”oË /Èèc×ÔÜ` \é¾—dŠ„dÞê“)ö(tvða .&œù§Yi`žO¦:N&€3ÿ|°@f™r{p<—:ÀÅ€ 8ßÛ‰S’;÷mÓǵîÜj»•¹›Ú0&©‹ºÙS[ Ÿ†uc|—fc ý™]»³ ÓÛîÿXñ^oÔ•yH¹V;> endobj 2545 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2548 0 R >> endobj 2551 0 obj [2549 0 R/XYZ 106.87 686.13] endobj 2552 0 obj [2549 0 R/XYZ 106.87 480.2] endobj 2553 0 obj [2549 0 R/XYZ 106.87 460.64] endobj 2554 0 obj << /Filter[/FlateDecode] /Length 1550 >> stream xÚÍWKÛ6¾÷WE21"E‰R^šî&[Ù"uz‰ràÊô®YrE9» ôÇw†CY²å¸@=¤ÈysŸ‹¢ÅýÂ-o?¯^]«EÎòt±Ú,bɲtÆ1.«_>5Çû$ ¸å‡Jsgú²eWízD/éà$ÎêÔ–º)Úªñ$JŸdÊ©)>„«»ßo=h€^¬MãðÅÅš?÷†pžrVéS½§ ‘‰)S©$²Äpà´rìbêäMóúA7©O­–ŠEÃ+¢Ra A³à!lš}°s†rå¼à„ ý†Ø…a#<À§‡þ]»‘ „Uÿàå¶^*£ݬo½÷zdíįi ]ÐbáíŽã!ëÄ»ðÃQ¯¿ -NüÜtív6 ¤É8#«f–ùé8䜣qpëqÖT—®üXÓzÛf¹§c}c"s«ƒ:Êâ¦ÇÑ8Z9'ù1Ð8ƒ“òaü~˜ý‘án$ù nÖó*drpûú"óˆÑ"€¥î߇Àï^7.ƒkÿaÍNwºo;ë©üÚ™û½k (Æ<…¾+ŠœEÉ´e"D·˜BXÄYJÁˆ3>´Fú8T~FgЗφG ·£òÑT<5OƒE30äa*Šî¯¢hà×Árª€ÈÇ,üòXL!j˜ʼ©§ñ9¨~øæSšÎ¦ŽŽE%'Ž‚ä ŽFˇ¬ýDp«(úÏ—jéÅÝ‘d ?Íîy6æ—FBÎ1›Nˆß[ßE!á\ …¸Þù¿ƒˆæ;£×„ §ðh%È?ü·ò÷º'IÚóU[ügçÙPH‹ÚŠ> endobj 2550 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2555 0 R >> endobj 2558 0 obj [2556 0 R/XYZ 160.67 686.13] endobj 2559 0 obj << /Rect[195.06 131.14 262.2 140.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:break) >> >> endobj 2560 0 obj << /Filter[/FlateDecode] /Length 1824 >> stream xÚXßoÛ6~ß_a}·š•HQ”Šm@»&[†-)Z¿ U706•%C’›Eÿ÷ÝñHY¶´¦Ý‹ÍGòîã}wGÍB†³›™ýûuöbùô<že,KfËÍ,MYÏB°ú/ßQÏß-z®2‚Eñ,´Ó¿üöüÕòìõVˆ Ù|¡Tœ_üqö„Æ.ž^QãùåKlÄÁ›¿Þ,Ïþ¤Á«Wg¯ŸÏS,/®.ßÐAeIÊølÁ•íÃiçóTu3_Ä2 Œ^͹ n¡gAYTŽŒUt·†$³ª›5µ‹–þs.UÓv؉‚vW›¯p³®¦ÝPÊ”k·fßÕ 5û½uZ³Óî@3kAz° ŠYxFË$™0²P‹'‚–„®Ö԰lj$(dçCëù‚§A½'ùÈê?Xæ2ñB_—¦=Õ.‚Û–‘;úq‡K¹mÈ€1vª«TLr·€‘Ôrê¨Ó“’„‰ÌŽˆY誰Z¢&,ãCäÖA¨ ˜Ê“̚ʕ‡À¸ATG ]gѸ ç\ Á="Ž˜êõû~¤8¼<èg7Ô¤›FãQ÷8 W±qÃeI Ò(Ƀ£€•™½iŘ ‹â©R gRx¥òàò<Ÿ""Åb5„‰¶v×`I†*ãÿ@ìZ_>"€*0Ô!ÇY‹ß~;l@Ch! x´>2ó~ÎYY5.ÍÇ–" Vº5ŸˆÈƒqÌÛ”{ÝÙ›åRÑNwMƒøDÑùvMÏ|Ç]ÝIņvïOlÌÍ¾Ô š»Æ´mQWÓt§»Î4Õ?ň!“ÞS¶º#EÐ*!=zÐp‘çä˜4xYøPÖGºòŒqïŒ×õú~¬¢cÞ*ÀŒw8D‰ªàbCs½Ò.˜Øßõ½[X­!9‚“ 1Â{Šñ.Ç:‚S: ôºéF*FL¨ƒ­±W·k;P’š6hÃÿN·-z¶mˆöwŒ ÀHç³yðüî=+*"<Μ3™«Áý 1o:Ï?aˆxûL—»[ýìÝ+òüó£^“ô(&oQó`k¶®Ý³··Æ>0D~!‹aFOw9L˸ޗ݃ê[U¾¨gYåFÈ‚RÊ@Åš–߈gˆô€|²á4ǵ›bBZ—ƒ¸ik¦º3vÃħ)”•@ƒz}ÒX×шeˆ5f ¥îª£åºÝnïkZ¢©‹a¿¤Ó”_Ežn Óºtœ+nã4¡tL[Ñݪ&‚Ôp5&6•“G2î«“¶[ƒ†‡{F‹Y,[²tªRNSéÿÚÕŒ©JûÚU½£Zw}Пfàriȃ‚WckW@DiÆâ#'­±¡P?𸠳 ­i®»µç‡±/Ð J\v¤&}œ@UwÔÐ ˜Øû¦ o®ìS;P¨Ê²”E÷•̶X.8v—1c*+%Åâ${0‹e‚bqúP,†Ô l —³ë„²›z‡‰ÜF´| Duï¦;Ô£ä* ‰ð·*¡8Ë"o6žØlÈíó\í‡Ö‘Œž%`£ ®G%O„1ÄW/£ß?¯ ó>ÖçJ ‹ú޳ö)ŒJ\Uå=IRPbð•:Hi^w´žž> =}ìq¾x±åä5Á¤<ºS‚ÛbQm±³f ìsäž-íw©kñ˜…ËtÅ(?_£­EsŸ–€ý†Pys‹á.+ª:Ÿ°³wÅIèJxÏ»ÇQÓ¹ñ['ZÒ{©Þ=¡¾ùXÊ^jôÍE²H}±†ÍÔ”À ei1È–Û-Ä}x-ÁýAaÍœ¥ßý êÎ endstream endobj 2561 0 obj [2559 0 R] endobj 2562 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F6 539 0 R >> endobj 2557 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2562 0 R >> endobj 2565 0 obj [2563 0 R/XYZ 106.87 686.13] endobj 2566 0 obj [2563 0 R/XYZ 106.87 668.13] endobj 2567 0 obj [2563 0 R/XYZ 106.87 651.73] endobj 2568 0 obj [2563 0 R/XYZ 106.87 265.82] endobj 2569 0 obj [2563 0 R/XYZ 106.87 246.27] endobj 2570 0 obj << /Filter[/FlateDecode] /Length 1569 >> stream xÚµWKsÛ6¾÷Wh:=PS !A€L{ij'îdâ™DíÅô&!ŠTùˆãN|w± H‰–Ózààµ\,öñíîÂg¾¿Ø.ìðvñËúÕU¼HY-Ö›E(X-VaˆÃú×[/ðY°å*ŽcïÝõÛw—Wï/ÿ¸|¿á]ßàzW¿x³¾¾ùðiy·þíÕ•ùñ„EÉÂ'^‘ÄóÅåÚÞ*À9•“k£€%|rm´\Þ¦íïÛnúor¸AúLÊÅ*ñýI´™·1¥n³¥ýÉ_¬ÜU@«V/WØîU×é¦ p%½Ûzß™ºjïì/D¹ío¤ˆûºx ìÑjrv†%ÿKy`ÉϰdŒÍE/ôFõew^ÀâTÿ« b"„!a"±dëMD£ yÀ8w6U}dFÉ„(ú*ÇW-WÂO¼}S/yì}1…nq'öÔ)û$aéÀ¾Õ3ñ!©;μ [®Jóyjâg2]?Ü™$·Œbßûdv¦TSdác&JëêSà,^£??'Ðà²àß ƒÙÌx…/ëL°0v¦E>>8JY‚`x¦{ YUÓ©j¶ýNWøö®u7w`.{hª}ß=q ¼N‘ž@-<µ4õnfZ¶m»ÂT§bòˆÂ€BDóõ†tò”%éÔÇŽ$!d[( <ò„…BO«·ð™ ¹9AÜÜd\ƺ¥ßT5Sm"Y0xÄuõæAU•.Oå1󣉕຺!–¤3¸±R;'\½¡EK tG›Ú¹9ãrê:Vç‡`ïTLÏž‹#€¢Aî3( BT&~YJ š3êÞJ!Bm”©²ZÒÊ C£·=º6,„§¿îݶ6 ð°{PÍ  ³3îo1þ×MAóVïÕŠÞ)R&Ž"¤Q]Ý\’¯­îÂð€5vòײ·gµ9 ©„Å⥷ÇÉ4€g7Ü4>2àÈÀ$Ëš¿³¬‚¯áô: †L>MÆ úoPÄß êx†ƒ¨’F«¢¥'vð2˜×•¦ÓƒQ`S9õ*÷£Ùi'®„ˆ§‘wµLÈÁyOâ WÄñAÀáO›“ZšÚʼnì¨:D!üÙTttƒñÏSïòˆ=%7¤™ø¨eKá³ó­Y˜ ¸Æ”)쯩¶´Ü©.޼·#íkNÝ JX0¸K·3lðY8|W«FïK•k‹^‘×9þúkGwo+hyDOÎuÀñdxô¨ÁÂ÷¨¯¶¸V<-îA‹7}Ó8Ü,N d‰ÔGD„ê8ÖPÀŒ“ÏØ-[F¼ž«0pPÅvŒ‡#®'p5àºå{Ä…•EL¼JDªJÕ·úÙZgë$>ÁK0«ˆ…·-ë{UÒ|ªvx<\%}ý‚Ž!ÒÄTm§ªÜ°D¼ÆÑj'ƒ¥íb0®äpë´Nx¦vºAU?šV_œÀÏq};ƲÚïK£‹!€Ñ,4ËõÌÌ¥7}GYÈrUMäv…€íˆ­@G‹½§CÜÃÈÿ§FOýAB¯û—0jšg äPËM3A–àWíö¥¶``Â!G–¥ÍîV4Ü‚t¿mÔŽÎÊ-­¬Q9rµn“çÖùÝqhmkÉ*ÏCþN§Ø¬„„6”®ªB+vÎŒ¹Ú›N•æ¯Á”ñwlv¹ B9u¥*Áû³¥»Ó¼­ò¦áè9ê=c¸ú„^Å€æ‚Öϵ"C¯BĦz©] ¾Ï²Ÿ²,óno_«²êw¯ïî~„õ2ËØ÷D²=H›Ny|¡Ô H9êÃñ…š›mÈQÁ——u«3÷\'ÞÙöMAÖû·Øõo¥þúbó& â“$*þ·Þílg5oÖ¢sÍÚÿÚÉץ犒 Û'§È£Ò*y®5ãЮ·f¸ƒ;†Œm0Æi 8èJVPê`Æ£mÈÌ9Ý ÑOú-D¶DÄ}jI¨^ Y•Îí$ÓCí¯ÿìhe«q©@jÝfC#%![ó·p£h§¢4އ¢ÆrܬæfóD;c ‹Tˆ‰«òÄïþš-vE endstream endobj 2571 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 2564 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2571 0 R >> endobj 2574 0 obj [2572 0 R/XYZ 160.67 686.13] endobj 2575 0 obj << /Rect[195.09 416.99 262.26 425.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:break) >> >> endobj 2576 0 obj [2572 0 R/XYZ 160.67 402.71] endobj 2577 0 obj [2572 0 R/XYZ 160.67 384.26] endobj 2578 0 obj << /Filter[/FlateDecode] /Length 1378 >> stream xÚÝVMsÛ6½÷WhÒÀIˆ ’éä6vêN›db]:¶ÙœP$‡±ýﻋ%Š’ÓN:½ô"‘Xp?Þ[ì"àA°¸]Ø¿÷‹Ÿ—¯Î£EÆ3µXniÊU´ðçðþîŠ ¥¼›åo¯Î“ýž‹hXó/¿¾ý´<ûìÁ!÷ü$IÙùÅïg/iíâÕGzxûá>DìòÏËåÙ´øñÓÙç·^*Ùòâã‡K ´OƧH¾Lì„ë‹­/Åú;û°¢j†žÖŠŽ–Z£×^Èq›‚µÛ¡Ô-m0Mkº®¨«Ñ™îɲÕ}îÉ„Ýë+¶lZBìò’IÄ•r”uukºžêiZ/˜¹–qò0¯F<a«7hEœc®¾<‹©@›/xËÂÇŽ€ëLiòÞ¬²ºZÓƒû&b+Ï—)«á7aëGZ£Cf¾zqÌt9hðÀmtaB“àM°Þ“ŠÝ{ä+ËK=t€ÔEéïh3!¦Øm¥d`[§íQÁ[Š=uÎ@òhD¦Ô€å 9‘ñ ‘«F¯ý¨PÔMÝÒƒy0ùàÊ2T<Š`†£®ª eË1£t/ƒ­ÍFåQ>QÀw[rÝaBi:£Nš8(À²ç¼L¸7 +”à2u~ù’®'Ò Û‘ÓE5£Y£ûÞ´nµ,ºþtŠDDbÂ{~¦–Ÿh4Èb4ÞÈ(\ÒÇÈ`Ȉ X·GgBŠÅxlE ”(¾bùˆ…“$º@B¸Ôè®3. Då éÊ<8…’< §’.ž(ÿÜKCféd´Þ6¥±*ˆF‘@ײ¬ñï‹ê–vÂAÞ¶zë„v(¥#“.KZ&ó|h[S寙ë YuÙÜáÙ'lØš¶È]öóüî-}ÚµmÒ³EÞ€¥áóS‘ÐÐ$xLQ ÊÖ¿G¯×ìù5ۥ鮽kÏóc±7„ô¼ì Üu3ÝLí¥y˜y;Ú2QªõŸN?¢ç˜™mÓ?:0æ[HÆÿù³««×º¬†íë››ÏèÓÛ¹c5OlW@€(X:‰“E·:kÛA§Œ¢]À5Âî²C©\U¡#¨»m­&ÙìÚÈ„`k"´q_Wu?Ë‘2$R?ºªý…“.‹w]¶ãÇÇá`^œ-íø3i42â\Èa RÜ»‚iâËq™á‰⛡Ê{×ÎÉ#\X’Çá›|Ô5A—ó`ûŽ-£vò[ÙëÙbßwå•„QÝðiêñÂUµÝ 7)hv 8XS*^‚ŠüÎè6÷Bˆž®?ˆxˆ‰G ³Q|ôÙÝN€S@ÕL>îr§•¾ª×b/Áì´ù´ù„ÎùqróÞpäm}$L¡p"ù[a¦ã³éèÚŽ1ÒŒ)~¨Ü´ªR¸A¿ ­ ­öÇÒ˜'é>Љé(ŒfPã‰b++0µ’U2κð4U¼¢êÕLñTNAšèPÆÑ^‡0TXʘekÝéW':$kÑ‘¡ûR4 Å_c©p‹óïÇNûa•—ÃÚYô#˜Ýy ¿Ý&}·iƹ—»>2tfîUˆ´ùÇMø¨·"bŠ:—<(ÝE„ƒˆë£Š“){ÿoc„»~,”-Ý“Îuµ3`ž˜;Ô=wìZßw”žiÚ¢êËêš]bÑxè4'8Oÿ~‰¿wà‡¿±},r endstream endobj 2579 0 obj [2575 0 R] endobj 2580 0 obj << /F4 527 0 R /F7 577 0 R /F11 1186 0 R /F8 643 0 R /F5 535 0 R >> endobj 2573 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2580 0 R >> endobj 2583 0 obj [2581 0 R/XYZ 106.87 686.13] endobj 2584 0 obj << /Rect[141.29 633.25 208.46 642.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:break) >> >> endobj 2585 0 obj [2581 0 R/XYZ 106.87 618.89] endobj 2586 0 obj [2581 0 R/XYZ 106.87 600.44] endobj 2587 0 obj << /Filter[/FlateDecode] /Length 1260 >> stream xÚ•WÛnÜ6}ïWF€jˆÖ…ºèC/vâ"H€fÛ¯h‰»ËZ+ ׉óõÑPZíÅ®ýD‘ΞRŽÏ|ßY9}óÁùm~q•:9Ëg¾t"βÄñ¢›ù7nà³ `3/MS÷ãõ‡—yŸ.ÿ¹ü4î^Á6r¯þþüûüúË篳ÛùŸW|‡f,ÉŸ°’ç>ˆXÊ/L{3˜š¯%-ÍÆ¥¡ÏxjW–r)¶•9B‡Ðš¢“ïȵ$ïšZÒ€ü®:ÓÙÙ0Å,Lܵìp t;U¯*k 3©»ZFêâæœ»_U]Hò<ñY”;P’Çý¶×ÆîÙQ+j»¥Ö&7ÈÈ5k»‰ªÛ­¡¹²™yaæJ»ºnÌÔIpeD…Î#ùÛØðF<-WÛJè!ÖVË®SM î£ÏþÔ]˳s9ï~Çvê³0u¼,fiØ[Þi)î óÝ™,·ua`›žDKã)JA|„îÅIžo;YZN Í7ÚìqÅÝ JݦeS¿cdž4*6IùùD²ù ÆBî~’ߥž®å‡b¢€ñì)ð1„ìFo!ÃK(k±Aêq0§lã ‡|2².¡DØ @3ñ4Šü)‰ç$“³ARE%:¬3qÀÝ_¶¸Hjú´òQ}žõ#è<3ì%T `TPÓICÃx©4HQ=`<Ò®éZ"£PˆÝ'"X~SfM‚x|[â¨6o¤YS–”“ÈÔPMQ4ýíU×–;ˆ òܶ›â⎖èm%­JÎr>å÷jÒÄìàA‡!6m…užGqQÊ~.£’Áƒr©‚ªbLpjý:K)ÎN)íqr÷ÛZ ű”£¥ê‹.ž~/”™*‰wäå¨Bâ„Ò–z½me«šÐ@7ð ûmX—‡ ~)»{Ó´–YQPðM£Ù‘ô µñð²‰cRãC-ü…(îÓâ”­Vµ©ê…{]Ur…”àÎÅp§ÚÕoΩÝí²Çåb˜ðì;à°ŒPÎnnÞw­(äûÛÛ·g§=z Ž"jwPÞÛó ´¼}¨ƒ)Öøä7¾@höí!€}ä4÷²f[ÐÞi®šb1{G+ÚjÛøx Ø;íÙ3ÀU¿ùüõÈÛênr€{ñjÜR=¼Àß7g ÷ìÕØU+´¬_?;{õ)ê=xxVDÙDkõvs·K”n©VÊ<#]ÚªJmãݘ°q‡iõ”àe³=X,~~}Œ@ØÓ Í‹B„Óº3_÷õÏ÷‡Wv‚é{çú×! ÷濾ÞMGo‚t¼,©˜ýp ôn䱦!ü‰;:ÉYýÏðãg^{~:¹2z–C|ñîÕÔi =ëð2ê‹}¯<(ÝÔú6Ããö§ÿ~ø‡† endstream endobj 2588 0 obj [2584 0 R] endobj 2589 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 2582 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2589 0 R >> endobj 2592 0 obj [2590 0 R/XYZ 160.67 686.13] endobj 2593 0 obj [2590 0 R/XYZ 160.67 377.07] endobj 2594 0 obj [2590 0 R/XYZ 160.67 293.64] endobj 2595 0 obj << /Filter[/FlateDecode] /Length 2320 >> stream xÚ}XKsÛF¾ï¯àa`Ê„ñ¼âڃ˻J%vÊfÕÖV”È‘ˆA€‹$ùß§_€¥fzÞÝ_wUàÁ갢ϿW?mß~T«Â/ÒÕöa•ç~ªV›8ösèøÃ Ó|ýçö—·³qNì‡jÐðÏÿyÿûöæËVÄ^øëM–åÞÇÛ_oÞ°ìöígn¼ÿôÊûú¿¯Û›ßXøù÷›/ï×yämo?úÊ—Ù¤¹­6QF}8m{4ëÊ2¯5']Ö{Ór·yàoçÆ÷æ.J²ºìʦFIîíšÚ–¶³— 4¬é.å»J÷ÖXxCƞѻu”zGK½§²;ºÕpáÕ&T~: C¿Hèš'Ó›õ&ʽ=<3,¼ZŸàbqx÷$6Mkxˆ®Œ#»¦jêwØVx-kÍ¡¯tËãæùÜkéAØ×>ÿå=ê= ËÚÍ*-]8˜Þu§­ASešrE¹ÿ÷u{`Õ$‰YûWfÀb8ÅòXsFëJö,d¸ãašýº=³Fv%ZÌìe? &:]f¤K°ú±…sï9”k˜lðÑqä4°³Ç¦¯ö ;]µFÓÍ¡cž<‡T">•y&%ÃØR>#5 ¨: DèxO?ÍÑ~,^ÚÌθÝ5^#Ͻ“îvøˆ£Amå©{éå‰Qág…lf?xÅìÈXù‰›èÁ<óat>Ôð™e}î;–‘@dMevÙƒùÓ ónîĈhªó/û´fLÄIîÜ;ÅøìºAnÙ4ÐrgÃJwK„Ašàäšç\SAQ˜èåûAå‰ÓyS>¢”{Mž—€›ln@Üd©Ø‹éCûº*¿¼]§Æ!ÇvàoºÝO`c%Þ÷2ç¤y­u‹[MS[‡Ê¤å}%s­>tk zS¸Å#¢¢"õP{-Þ ;^ؾ tÝïØIœ PÎ8ÄV)3ÉY£"›ì±çe÷“-:w…Z-/ ø/Ê[ ÎaÄ¡‰ZŽèGË i[T 6OõÁpÇ-9·à¶ž;¼” CÖ!Ž /Di_«œ÷T³€_¢[ hé̃&ßèJlqJÂHaùk¿•ç3…'.ýÔt†E“Ôr “L7$r¯©+Ô(`ƒ'JêFFD±³mØ*)Zö5tÄy'ADæj{qù2ŽÄãfÀH”8íP7 íoðt,;·ïYï :RQ`œ  ÓÀpƜ՚¾Þ‹³PžÀ¯•ˆŒ'7Ê9m Ðj ÐnI ª*³çáÖìúÖJJ¨$™½¬" üKtcl: a›Ð_ÑP6j¥ ¹  ÝBž‚äUî¸ßHžku× oÒÈQǃ“È ‚ÄÃC¯; …í,£a>ÃÂ\,Ü6ß n΂!LÈ ï1¥{ìPµ@ÀÀZC”†Ü*ÙŽb×ÃMJÓÕÞþˆa3d4½G˜±‚r³»–]N’½pãÐå?8¢5Hu yogݨè$Šs?I§J±Mßî\ÂfV²Ó˜¦ß jæWÌ _¹+A˜k*ð‹PÆß] O-7ªœ¹ç>êª_î–Žty„‰§KM³Ðivaƒ4½fó"Ï~AÕÎâë„@©Ù«q¿†JÊn¸ÇT‘¼€À7¾ÕŠ•x^þä°’Ëð)©MHƒí:å\—ìè”n–ÆåUÛ°Ež& y§kö.¡ ª ó¡h*=ÃPÁN¢Ép‡®a‡¬—U öš; =tâ€~lñÎûçÚænÅD”àîÖ S¶S¹ ¼ |k—®íwT½ä!U- ®ÍÓÂùBàfÉkQÎ)Ô2 °Íâ0õ³|j3aÛSûÃN/ö›…“Pot_ÍÕÿJž¿ð›9?íO÷àó×Ä#ÁR"D¥IJdAÝÔµ9˜-(,»æ@Y5Ek‰;>Çæ«–Îý,º0õY—íÌÔÊ©­N‘aiv€t:#ÓScsô9j}aõrå3dM0Aòš ~åØƒš h¤ Œùˈ¤^Ø+ˆüÜë¶þù¨AéÕüÍ U¶D ë;&Eq`÷"?J¼tèÃg³ãï<׸¢ï¤@žè+A;ƒx ì["‚ ¬Ô‡¶9ÍB…ÐHz)¬=ô' ‹¬è›-ýeIVrêø›%Iü âÿ,£a°†«^Äq–0–›‘xÍÞƒô”°ˆ[|è™›E1Eâˆw4Ôãßm‰3mÕµ†Sš"±O‰ØÇÉP\ÒÀPøÌ¢·Âq‘!Éþ\ÄZðh‰É*›UºJøS¬òñPœfÍÿ{SSŽWR»Âו0û‚ËËVÄa5–l}f³Ð0ÎôPÓ»{21%&[ÄÄ¿ã"3È&7ÇÚ!pi±@³Õ%×Á°zÉ”² 3øÒ×]y27Ï;CPæ–Îc?ͱIÁAÜõ¤,¦QþV»L—ðyx`Ü+5Óà` ©Î¡¥OÀÏ]’$aR2bäƒqÙP~b‡Kî@Ê \˜"pÕ.L¸fнFTñÔkBñš,š÷\ €çT£MÿÞØW½èk–ˆ¨˜ƒÚ¥=r ùƒ O÷‡Ó@‚hà(såxœdžõé\‰ÜÊJv””K¸Ú±,Ü5'·±õ—Nô_,fÈ#B¸UUqËqFî¹-R¦Ñ*ð´å]‹ƒ£°ãp§-a…‡²¦CÆQ¡óÑЃ<5ĤIvÌÕøcêÎûaAu_9Òú†÷£MO™mˆüè‚Jþp…AͶ–‹SU ÉÔòk£úÈ€)ö[ú)„ W¾Ê§ ò3*V®Ä^¦.qïœììŒà¢Qð„X´—¯üí€þFãŒÁzØÓ<Éš³æ¬‹B*hþÕÛnº>¤¿/TŽ 4]D¢ÄO Ðs„¡B’ê†Wt>s™1eà‰ã¶ô› ‡s€þPÞbã \£+)Þñ$oE”(˜Nb6€ÿ7~äIþpÞ…‹Ýy²ÿÍöåöƒO endstream endobj 2596 0 obj << /F4 527 0 R /F7 577 0 R /F11 1186 0 R /F8 643 0 R /F5 535 0 R >> endobj 2591 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2596 0 R >> endobj 2599 0 obj [2597 0 R/XYZ 106.87 686.13] endobj 2600 0 obj [2597 0 R/XYZ 106.87 350.04] endobj 2601 0 obj [2597 0 R/XYZ 106.87 255.98] endobj 2602 0 obj [2597 0 R/XYZ 106.87 237.53] endobj 2603 0 obj << /Filter[/FlateDecode] /Length 1611 >> stream xÚ•WKsÛ6¾÷Wh2™ ™Z ¶“KS;q'cgZ¥=D>À"1¦@…?ú뻋(J´“ôD ,öñí·«YÀ‚`öyf>og¿-^e³œåél±žÅœ‰t6cü,~ÿä… CæÏ³,óÞ¿}wúçüýéß§ï}8ýóKüÆÞÙÇ‹7‹óË‹¿ü«Å¯Îø^_$X*féJs’‹A>òŒÅ!¼;¡9Õ©fû‹?O¢Ä{þìÓË«OKÿêÞ›… KóÙìÉs´\ã9î=_zºî쥧¾ËJݪjéŸÐF°ô—þãªÌAÒöz¸Ýö×Oh ­ž€t¤VÇýÒ³‚y²X€1ËP«ûnïÖÒ»מý[dQü˜-ÉÔûÚB1Võz°e¹|ñ„j×”º«ôÒû¨1+¥–*ȰU½Ý*ÝÑ ãŒÏ㈅<²ÌhYlÊP"´I5¸ áºö£Ìëd©Q˜åž$Á2J2UÇ8 CÁÂØâˆâsôn ntÙÑ“7øŠR;kA×ÈîÜÐÏzm·7Š^תíJýÙ™{knWÿD¤Þ¥¶ÑLc„ãÄ+½ª{rH5tŸgàÑ‘iÆ’Äš¸ô^{Bz"+n;Ô Ž“È+Ñ.¼R¯Q7µô™ÂÁZs)ô¤.H°®›I4Óœ%¡}êå4‡Pô<µb«ÎÙP(gCz`ƒ‰L”†Œó#(“UÈ‘)Xä ]ëUSŸ‹©°íPQÂGx½j“cjGZ/ –ðnxwF=BH@ö¦®¦ï¾ ©(×´Q÷ -vº-ëÞ‚Ï!stµ½)w´"¨“à ÷/"÷êJj:WÔÇævTàà5Zû@±”.-J$œq¶À²FúI½/jÕMR˜È›® àJ8á^Žõ|P óQd—¾µ»T¬m6ág„ ò3–s8zŒ üüz 1vÙÒÃÞýÜÞ`f½‘ZÃ!×¹µÿ–{ŠƒBKBèrA˜‰(6b”ƒ(RX¤k«Jö­ʪj÷Ž#Ñ>1αcÓ€e|œ?zèn£4é–ƒ)sW]œ%cïG&bmYŒ92J‘ŒTqBÒGk,Ã#9˜`¡; (lF¨lT×7ÚÖæéÂLÉÌšµ!Dx8C„‘¶f›~–Ø Ãb(ÂÄ?GÀßÇ ó/XLMõM µ™-Ñ/ÐÛJ[rxDVmM+…á@ù]Ùmh%õ”&Ó=ªû]ÝL¬‰Êö@Q6`nI|‡S(¼sMÏà++IöZ¿qA~SŠƒˆé8džŠÄœË”]«ª5®…I9îA Ú‘v‡”Ã%‹ÄHnÔ5Ø'à÷¹Uää.°÷¶#°ÔöƒlZÕL’²ÐÛng¢”e>ç¶oΈýMZè¥Æ K¢ø¬›zK¤4´ÏQc'Ú"&#º»õ-Ed`KWÖú;$A³ã»å°ØrØ?¼!,N?þÅsŽ»4ÅJ’};Æñã"ˆ8:jŠæ¶,ëpGÒg-Weñ%Þ‹xD Eí5 Dµ"™Ô²zhK«âZ&À%ô ó5 ›É}7_7ÊŽzPaq6ž?7r»'&#ÄdzÒÕ$ŸúŠvA[”¢E»3¯V¥)žÂŠÝ1ü€›êkmÐ^Á)¿Ýž wœôe‡úb‹J¼´UÝÆörœ –Ć þ•à6tYLŽ¹Ô¯fí mO­7·ZÂhÓWO޼g¾€”`3ßîåvW)tAd€ñîúÿÐ /–톎]÷eE}e¦BpðrÓÕ;ÚëW}%;§ºídcþä¡ 7á‡:Uâxò½ë`Gd”1žü¡$»§±ÿO‡qmg â†Ì'fL Ûá_1áÊŽ‰§‹ŸþŠó^ endstream endobj 2604 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 2598 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2604 0 R >> endobj 2607 0 obj [2605 0 R/XYZ 160.67 686.13] endobj 2608 0 obj << /Filter[/FlateDecode] /Length 881 >> stream xÚVMs›H½ï¯ j}U…13Ì0ÈU989ëT«båŠrÀb,±A eÀQþ}zèÁBBŽœ\DÓz¼~ý1 ^@ƒÀ[zíå÷jv~%¼1GÞìÞ‹c ÏCÃýë/„©`ôuööüJí0!e ڿÿù÷r:›|Á!aùJÅäêúÝäú®ÏoиüðÚ‚Ü~¾MÞ£óf:ùx9Š9™]ß|¸Å@ñc _2ª"Ïçªu@¸¿-BûŒÑ±t._rA>m Iê•3ÖIV •ë­®Ž=9p!²%|‰ÏžÍÑÉæ£ÎC:f'äL+½Ð©.Ú¼@¢NLbºH³b‰·e•>[Û}='›¼1bÙ©²À¨\79âÒìa…tU¶\¬9 ±ÉÈí•oªrY%ëÚQ’©“ÊŠ‡GŽ„²î äÖÛ ²ëò¾Å1I£xO·®›ÊÕòŒµßžÓ˜Ûl½ÉÝ„$UV¯ÖºÎ.ævSic²²0Ïêà/z½x$AãÈhc•'Tè圜qW—a.»(ÔÝ`´£¬Iš+sÃw¡Šý ™£ô¦¹;Eÿ¤z7™¿`ÄŸŠ‡i’gÑž‡ß#Ï7I¥‹ƒöVè<=£×ÚnÇú!§Œ÷"MG\Á0]AÙù8[[ƒ‘TϹT…Ní-‡Ýn½­usÚÞÃYi¯v÷ìP¦•±ÛÖÓ6È¡žPPÞ!yb lqpθBE…> endobj 2606 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2609 0 R >> endobj 2612 0 obj [2610 0 R/XYZ 106.87 686.13] endobj 2613 0 obj [2610 0 R/XYZ 106.87 497.38] endobj 2614 0 obj [2610 0 R/XYZ 106.87 425.78] endobj 2615 0 obj [2610 0 R/XYZ 106.87 257.94] endobj 2616 0 obj << /Filter[/FlateDecode] /Length 2127 >> stream xÚX[ã¶~ï¯0‚•Ñ1W¤¨[± ¤3É‹MºéC§›¶…•%W”23ùõ=R’e{[ä‰yxxø»¡ÃÅ~AÃ÷‹o×ïÒE.òd±Þ-"-²d±Š"ÖûW C!¥X®Ò4 ~xüþ‡û_Vî½ÿ°<þ„c<üããwëÇŸ>þ}ùïõïôÈOe"É!óJ%î{‰T/V*%2ØZ pR*¨Ík‡³(°9ñZiy¥kø{kžTœÖ†WO­Ù˜­©7Æòö®i½gÚ™öXÖEå¿—* ž—pÐT^§µE †+–Tj‘ƒ A“ þ"­’ h NÒA -¯¿”Ý7PB$‘ðèP9D*³ëæ©PäÒíßÍO§BÅn¯-÷‡ËÉz8¼ÒqõvÎDˆ=›º© k›Íœ“NDèw4Ý¡!¸¶–VÖ<6íÖ´üêfÇ©X#XÌÊzӚ–õž­eÔ˜ #d%d<±™û¶8 T§ÌÒZoÑZ^.ž«KõÐ5%™O,}&ƒžõh·óDÒ9Œ|)ÝXéàKE“8BÌÃJ"E˜¸›¦ÀXÔ†œ(v÷ºÀà§êÉkp ‘žŽlÊÂÅ—®ô$™>Ë #¡ó˜3#š{%Ò8Ót4Ñèu«¸úÊ–[sÕ$/Bçýšê“xá„ c:­P¤^‚äàwEUq¦I=0_°¨f€¢3‘ž%ÌÓÒœ|L’Þ+Nù²[é=´úä˜IAãj(Ô¦bUSêpÚvOËËjÊ…ÜñkÚùuˆ¶H£i »¸tWVæòF\½¼N¦P@øëv}Í^Œví*¤ÙýI&âìs©På"õE»ï¦vQ8Jb†7‰Ç|£R¥ÉÄ}探k™Ã]½Mi&^>©—<öó &ê&¾ý&Á8Ê+»t>pdhÍÌwXCÿÃÈ!—‰(žyìŒüçe„ÑוT©†pPãR×6Õÿa䑿{S›ãäÙ'û´¤ÌŒz{Ø6ˆÿ 99ÜßwͱðùHÏ…åä〠>|óá—§@‚ÑgW\ žÏ\‘h­‚o¨‚Ï¡Èë .Ìò ÜñèŠùlRìà®åÅ‚-£Ü÷Moïü ¿{¤Zñ ?ÒáyLdå®{…_¿qüÙÎeäýL‡"þ¤’°Üt(}’Pz¡ÄæÓM¦æL “S[²PƒªBªPëmѺզïÈxÕ" Ó©!†ªÀ?óV¹ùíÓmÍ®è«înŽÏ¸ŽµFÝ8‹†Ú®…XÍ*×Aïj5ó‚ÑÐFÙ°[j©FǃÖËÎ{€¹3æ"ó±é¹/«íHÿÜï/ÃX ÏšH-8b¬F¨…S>A¨4ßCæŒ[˜¡ÎHHÐZ!‚þóà"ˆ†"RÓ(L@)è&[¨hK0XAiYºe„BA3úR¢Íà ŽÔJ–öÀ_cƯMƒ…XçNxhqÎI g3ÆŒuÎøJ|Ty2ÆïÏCºr´·zp`<î84\¹*I…LÝMtÅ•L¡}W5--˜#›N¥›ªô RÞ»\ q©zﺑm×ìá\,Vð³ÈÇ$ãÊM´í3׿ÙÀΡ–“¶ÿ²ÝÛZòÙë³”_ŸeÓ ø‰òQ3˜åC‹ëcÛª) D*—)a¿5Xmc&NªÌ·g°Éi‹ðˆc˳8XÔ{ ø/ BSU>É}B†¦>+'IïF1èKKýG‹A EƒÔÓ<™¸> endobj 2611 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2617 0 R >> endobj 2620 0 obj [2618 0 R/XYZ 160.67 686.13] endobj 2621 0 obj [2618 0 R/XYZ 160.67 365.57] endobj 2622 0 obj [2618 0 R/XYZ 160.67 345.01] endobj 2623 0 obj << /Filter[/FlateDecode] /Length 1204 >> stream xÚµVQoã6 ~߯0NjÕ’%˰º]»ë°k‹k€aXöàÚJâͱÛYÚ?J”Çéu†=EùL‘ŸÈ”¼†¡·ôìÏÞ÷³‹ká¥4½ÙÂK /ˆ"šÀÿ¿¦¸ÿûì§‹ku°‰(^h?ÿðéò~võŇa!õ¥r}óóÕ9b7w¸¸¼ýh‚<üú0»úŒàÝýÕ—K?ádvswû€’} @2ªb`³á²®ýÖ$äì݇ïÌI'^ÀM¥5š5êšn벟“³9©š|]ÒìŸûæpæ â”q/à1xè[ýÔþqHv>WDÃZ ¨® ³–¤_9p“µnØàï*«‹Jï ;·¬õ÷4?à ÑmÖ7mI“aJ~1y°–)kŸÇdˆ“¬·‡ ˜ ©ŸÖá"&eo¸îÊÎrV™±ùËÊXUÝå[K„6­Îu¡ëÜy†èõ°²" ¬ZIJ¶ìWkÝ—9þŸÎБ1fwfSÕï]dpdír»Öµ¡Ñ›¯œ,švvÍ•c¢O$Â"IS§ÅJ/úim¹ |Ð*p\A \~³ô+À[ÛxÖÒ-°áæm*&Éi¨öj2Iœ²‰ga# ’Ù&ÕQè¬pà¦ml;Û¼/›ºC´}`†ÙLɹ‚L»U¹è]'zË8ÃæºšÙ!.=·÷0ÅcEE‚c<¤ð•)@¢ïýˆAî»]1öpz $Цɾi§éJM;`.î÷ÎŽ²׈3h¡Ä’ü¡óÞŒ AZ c¦Ó8èìt‚†¬ñ›A!7í3Â¥ƒÝô¤{îz½~ßá¸Úv8Š)²>{-@_ &È •7%+!ÿ6Û2š$»fÒ¢©ÜD,ë%Bs.•®ŠÓÁ LrFÂÜì†l†Tx;…‚*æLXê­P4‘{ ò ïGh„½Tgk}2ÊB3-0›ÐhbHˆ¡X5K“$3ÂÌÖÓcîlÈêu®2¤q<æŠÀ”+ î…°y¹ôÐ(ê+láfiŸ7½vcØ:0jÚ┹€‘Äÿ!ÉJš91"ŽÀ”8 ·ž¶å kœOG¬Q]†gY`†ñ:Šç1&§Ä¹}µ¼%å©m¤s¦ÌU(囘/Ûf»ù©Ã´§áX-˜P7(Çò-uÞt'ÒŽ/Ê©X†ü£²Ýtë{ífÅQ«¾ ¢ÐÈñ 2’"¡2Ÿé‰U(£¢lßPŒ£ó¼wÏU3œœÀdl`âÁ#ð¿DqšŽµä€)}™d<Á㧪þmA†z‘m«~¸§À^IA´ØÑ“ºqVDkPìç+»r00oÕØ¼U{«Â“p­³ÚeÐr=q8¾‡Ù7Åþ¢üæo]t> endobj 2619 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2624 0 R >> endobj 2627 0 obj [2625 0 R/XYZ 106.87 686.13] endobj 2628 0 obj [2625 0 R/XYZ 106.87 668.13] endobj 2629 0 obj [2625 0 R/XYZ 106.87 649.09] endobj 2630 0 obj [2625 0 R/XYZ 106.87 649.09] endobj 2631 0 obj [2625 0 R/XYZ 106.87 526.55] endobj 2632 0 obj [2625 0 R/XYZ 106.87 505.11] endobj 2633 0 obj [2625 0 R/XYZ 106.87 418.44] endobj 2634 0 obj [2625 0 R/XYZ 106.87 396.99] endobj 2635 0 obj [2625 0 R/XYZ 106.87 246.72] endobj 2636 0 obj [2625 0 R/XYZ 106.87 225.28] endobj 2637 0 obj [2625 0 R/XYZ 106.87 225.28] endobj 2638 0 obj << /Filter[/FlateDecode] /Length 1316 >> stream xÚ­WKsã6 ¾÷WèЙÈ3W|IâÞúHvÓÙÉv6n/MŠM;nmÉ#ÉMóï ”EK®“N{1>áE8JYšFëÈ-¢ïæïnòÈ0“EóU$+²(‘—ù¿ÆTKÌ~Î ¦A~„=†ÛÕäóf»%êÑ}Ž%ÆåÉ’].D‘Bí„ €›q%Î$G ðÛµëOÕWu_¶êZ*Õ'ö·MS¾\ÈÓüŸòT¤ÌÈ0â¨|¬HC“D•¹‰Ûšª%¦ô›%€éƒšC"¬&ÅyfúÌê÷¤óiƵ—¨!ZÇ¿ÛE×b ëÊ’­UÝaÿD“¶y¡ª`¹9é[0Jâ',‘‚ܨhuEƒDûÒvvGtAÅ˲+ËÖºFžÅwugIS÷Tv^Äî)Mª%64·Wµ×(ƒ Ë.™& »'‹ìB9•+Îã°:eH´àú½?[Î:R=tð›JÓA‚g½ò0b`2}úŸÁ»¨wû­í|i¸HÀê#áëÈîöi+düJÝH§êF¤¾n>45|lpYMß\Á ¿”æ>›ŽªB%°ÂLÓ S+_íÛb[ɰZaÏ7³ü´ÙÀöÆm÷‘ÈûXºžœ Pk‡Â‘Avé\Æ·þ‰‚¢;MàEM¶Ê+8)¼pòªÞB×xÏ”Dpö tn·Ë–]¡FMaÝô~M™Šž±ØfKe´‹4¼RÙ‘ßF÷àÿpSÈái{Õ©"¯¾j!÷ÒÍc˜ v@ùk@ ì€Ó±#˜°—y炟 ½f ÓV‹æeß¹BvÍ £P7Ë)d•"Ö×!+Èî<0{þ4n¯fú ãcN1Ýx¸®1ȱקÀ!ý¡vÞŠŒÎöü8lJåÔììî ÀÏåÞÔ| Èh(}O’jÄ`9 š¤Êþ?Úèë‚ô ¯ü“ëyÔº¨‚v¶¬|9Ij¿pᨰöýzùQˆŠ½}¥Ë©B3Îé‚ÓÁºégtMìú•ù\Ã4¦ÃÝi¸4 ½ô™Ï ¢³·>7Ÿ_0·~Ãx®ÿËx~iìáÁ K>›Žç禞”&\î'\˜­‰íÓ8§³hгn{š2dœø•WEpÊÜËŸòsƒz’ÛBW¹2úˆüÌ 3úaü #é?†9ýWi‡¸½òÝ»8 ê(€qÅ£ ±Ô¹ÔÝ…š, \Ð j8`´ýëæ'wIè\_§uõ¶iý«¿‘ endstream endobj 2639 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 2626 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2639 0 R >> endobj 2642 0 obj [2640 0 R/XYZ 160.67 686.13] endobj 2643 0 obj [2640 0 R/XYZ 160.67 668.13] endobj 2644 0 obj [2640 0 R/XYZ 160.67 649.41] endobj 2645 0 obj << /Rect[159.67 545.41 193.05 555.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:prompt) >> >> endobj 2646 0 obj << /Rect[329.5 545.41 454.21 556.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:prompt-invisible) >> >> endobj 2647 0 obj [2640 0 R/XYZ 160.67 532.9] endobj 2648 0 obj [2640 0 R/XYZ 160.67 512.41] endobj 2649 0 obj [2640 0 R/XYZ 160.67 512.41] endobj 2650 0 obj << /Rect[415.32 432.32 448.7 442.05] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:prompt) >> >> endobj 2651 0 obj [2640 0 R/XYZ 160.67 407.86] endobj 2652 0 obj [2640 0 R/XYZ 160.67 387.36] endobj 2653 0 obj << /Rect[182.42 307.28 215.8 317.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:prompt) >> >> endobj 2654 0 obj << /Rect[352.25 307.28 476.96 318.41] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:prompt-invisible) >> >> endobj 2655 0 obj [2640 0 R/XYZ 160.67 294.77] endobj 2656 0 obj [2640 0 R/XYZ 160.67 274.28] endobj 2657 0 obj [2640 0 R/XYZ 160.67 274.28] endobj 2658 0 obj << /Rect[199.57 206.15 232.96 215.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:prompt) >> >> endobj 2659 0 obj [2640 0 R/XYZ 160.67 193.36] endobj 2660 0 obj [2640 0 R/XYZ 160.67 173.14] endobj 2661 0 obj << /Rect[472 128.92 505.38 138.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:prompt) >> >> endobj 2662 0 obj << /Filter[/FlateDecode] /Length 1731 >> stream xÚ¥XÛnÛF}ïWE( Üp¯äöÍmœ6E±€´¨‹”¶h›¨L¹"e7ß™¥¸¼ˆ š'íevvfvæÌ¡ K’ÅÝÂýü´øaõòµZXfÍbu»È2fÔ"–’e0õGÄSµüsõËË×i'#W‹ÄmÿøóÙûÕù‡%œOØ2NÓ,zýæ×ó´öæå Î޽Š.¿\¿¥Å‹÷çΖ™ˆVo.Þ]âE‹ó•3I/8gV6Î2A6% 6…XÆœ 5wES7»ðtv0–'ŠI¹ˆ³„Ñáï®b-TT®¯–8ÒÑ÷ôsÙìÊêÎiãš»ˆ½%p¸\Ó¡‘hئÀ`n™¢;W÷ uv θöA õ¨„/q»¯nšr[-c•$Ñf»ŒEmÿ®qΣý#ý6p DÔ»‡²Ê7´|“?æ×å¦l–">“Šç²¹ïâQY­Ë›¼)ÖCSãÔŒÃ0°žDµÆBdÆ‚Ó%Ú—ê(¯ëýCá'tœ‘·[?ó¿ßœS°Ð*¹+ŸÐþc³UºahµdºMPHηCc…Æ„¢}ÐZŸÊݶzÀq5îéÁëÒ®óúi©Á—]™_o †·§ÞG©TðBRéhW4û]å·r¿X<<¶O •Du°·Ù4-oIÊÅã´{Sœoj@!Zœô^¨¦«¶ ÖÅ•ÐiU¬e¶bÖ;GuþnÛ˜ÕÖ:KO@-\¿ÝÓ¤tqjŠjMs÷^ð»¯ñ9y›G°ø¥ëCQ¬Iêš0|1¨sº¬)«º\ûÛüµ<ªï‹Íf<€ð”# †ÇÝ#RY2Šž¸Ã21. 8© ô C‹¡@`{Þå´Rú ïk„·éótlœÐSrº¸¬žÊº„dÆ"3ÌfCd8(_È °¥§Í#+·K³Z¥‡Ö1ë⢾qžñ¨ˆ¯é÷®¬0(锿È, ž2nZ4€zÔL€<²mŽOŸ…{žìásÂRMðÌÂs‚¡ j´)j$é¼(Üd&•ÕH³” ;x[¬e£|%јPE{¼‚ Q=¼r/€æ QFuñϾ¨n'¨!ohã&¯h Þ‡&PØkÚw¥+uáø–¡¢ßVØ»Á!j;ÏÐB¶XàÏ^®lRÀÍåfC«Þd…ðõu€‘šæ±Úr¥õ5'å÷¸—;xwÈ]n¹çðOÉŒn¢Ã?)ÿŒÇ?œ»¢œð¥!(4(riWÓz V¸A¯‹3`èÔû‹=‰VP‚¡4Ö¥¡õ¼+4aÛ¶7ƒ‚ø£'ÃÄ5$I[ldƧ,}òÅz¬†‡]W‰ù*ɘ0ÝmãÒž2j~x?°‘YìƒP±Ô†Ø§Žaß<¨Ip§SÖ$ÕCšéËqˆ<~¼w@¨)®£ öªª£:šIô¦£:ÐÎ)UBbC+-t9¬=V´&¸APúxÀ•:íL4-^Ç™†˜@©W´Ðú]Ñ ¨ŠK Œ1m­¾ºk ÓGr¤‹òœù!‰Û‹ ô%9½9BŠ#¼Ð@dG’Òçy=݇F9é 4ÌÉXHyFçâ»{.ëâEŸHt|Rz> ‹=Àl_s„pºÇð´G80<™Ù>ÂÁÜ!œõ ôö¶ÇðP°cx¸y„áA>Ët¢ã7rÀóÚË]Ðd’ ›SR2[ ý0åQ¦'T@ý”§~rDýTGýä õC¢–NX7Oýìqêý•eª§ñþ)iðD€ÚãßÁ”%€Ÿ7gLÿ&¥N2@¥5f~¯±tN! ÔGÏÿ&xüC]°¤E€iCGß ÏÎ4:à–6=¦q‚rxL5Á •ENØÒ? Žª‡%Do?¹9’ÅÂNÈ y‹ó8zÀ|ß× ó\+ÿÙûùîïžr]]•þ[Úyò-¨‹ƒ¹ ³½? Á ÔÉ\‹ ?éc 9ªO—±‘W;髨Þß q÷TÁ¹‡Ò¶óm÷žeö"äŒj#tµ> endobj 2641 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2664 0 R >> endobj 2667 0 obj [2665 0 R/XYZ 106.87 686.13] endobj 2668 0 obj [2665 0 R/XYZ 106.87 668.13] endobj 2669 0 obj [2665 0 R/XYZ 106.87 649.41] endobj 2670 0 obj << /Filter[/FlateDecode] /Length 305 >> stream xÚ]‘»NÃ0†wžÂƒ-áSÛ‰í˜HzQÕJ`X(CÔ&%8R“}{ì8¢Q§£sûþsA CG4˜9z²³B#F![£$…L!š$ÁØ—OÌp„j­ñb9_ä¯täkâkR¼Ü›àâ}ól—ÛÍù²«Y‘^y"•!YZ†<Êí *‘'9‘U21‘šPÎEŠUß7¿U[J’0|™b²1É@JD3r¿›6^v„PéaÁH\ü´e;/e =BøÁøÀ°ßU¬¹Êpš+Mù·,%!Ëê³Û÷MëRáSÕŸO® ŽÆ½¢Cm#~Y¡ü²Þ‘¸q1ÙUûÖºXÑ5n?6­JG„Æçò¯C Ç¥áÆã+â³¸Ñ Æ Þýj‚é endstream endobj 2671 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 2666 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2671 0 R >> endobj 2674 0 obj [2672 0 R/XYZ 160.67 686.13] endobj 2675 0 obj << /Filter[/FlateDecode] /Length 130 >> stream xÚEM» ÝýŠ;Bb/ 舣¥)wiŒ«þÿØ–Áé¼s@¢”ð…®p&‘ ôØ[ xÖ@§5úU/¦œåoº‹äþÊ€ÜãË-Lg¾.4Syçœg)?â±yY”FÂ8lݺTŠÏf–)Îû£\ƺA¤Ã $ endstream endobj 2676 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 2673 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2676 0 R >> endobj 2679 0 obj [2677 0 R/XYZ 106.87 686.13] endobj 2680 0 obj [2677 0 R/XYZ 106.87 668.13] endobj 2681 0 obj [2677 0 R/XYZ 106.87 361.36] endobj 2682 0 obj << /Filter[/FlateDecode] /Length 1205 >> stream xÚ}VY“Û6 ~ï¯Ðlû MbVuîÌ>l®nÒkgÖmÓ‰ó@Ëôš3’¨!å=þ}‚r´¶›'‚ âø2ˆY÷[~ Þ,þiÌŠ"Xnž±ª /Ï‚å»/áÛFi¢/³0I¢¯ËON#ce…q°ÈA›;á»l[mt׉~cI! jV“|ÊŠd.Ÿ%3y·[½Øçᨉ¿ŽiJÚÈ'ÙìG¹!‘u”–á3Ò<w’˜z…2”FŒª¿'ž}¶£ìV‘¿Wô“¾“DÑÉ$auîœÜ)[0Ì9;õ„÷!ù¨ÆQ®ÃqŒÂ9¸‘Œâ.q'«30›º¼Ù?þ\¾?Nç,.àv<¿‹UE¡ðª·{ŒpOtÉ!Âú¤ƒÌÞŠ{/®,ª$=Õˆ–Xº'ÑzÆÐŠq«Mg_C*bª¾i÷L&c‘Uótü£zž²h‘WY¸Œª4ÔXp°†·è¢Äû¥&€tœ‡aÂË‚e¥SI†@÷NuC‹.óïÍŠ”OƒÈ„ØyѰwDþÔñlxàA(­êT+Œ‡‡­ï¯øÈl…ñH[Ï€;N^üÕ«'¯èî=ª¦ÏWá\_ »;Ž Fn°°¨ò8üˆ“¨¨Ã{ÙÃÀj¡ò8;¦‰6®‚¬&ÉlÌ$,M¼ÝA Qž„²U½<7jê—÷_“QðV5HVç/„‰ÂÌÜ€€ëœ¥é 4*?Ѹ¥à%vmSU`µ4%d£Vi^ºœ×O×Ú#‰^tžr‡G7®ôˆu+'¾·bõ¤"Ìý¾ó“вSHßHã瘯 ”|V{Ò³TÄYǶöÿ»eqýºêÌõ²Ùi’º0i’{Ô¦=™!‹œÕ0ÓË|è‹´,¾+-K—]\·z?±öÖ=HޤS†ÍÞŸ2b¥0 îw´ĸó{ât¢<ƒl)—÷ãÄÔË3¯ÛëåÍ—¯'œÍÊ× žÅ¬ÊçyyÜ©ÉÅzßú÷w#/½Ú ®zFLí:îÓ\SÒ¦"u»ê]V¨ÌŒ> endobj 2678 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2683 0 R >> endobj 2686 0 obj [2684 0 R/XYZ 160.67 686.13] endobj 2687 0 obj [2684 0 R/XYZ 160.67 668.13] endobj 2688 0 obj << /Rect[482.9 483.61 502.61 492.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.10.4) >> >> endobj 2689 0 obj [2684 0 R/XYZ 160.67 467.54] endobj 2690 0 obj [2684 0 R/XYZ 160.67 366.33] endobj 2691 0 obj [2684 0 R/XYZ 160.67 193.67] endobj 2692 0 obj << /Filter[/FlateDecode] /Length 1302 >> stream xÚ¥VmoÛ6þ¾_!t@!1+‘ÔPdHÛ¤Ù¬Ac ¶}eÚV#K®(7)¶ý÷ÝñHY~‰7`ŸD‘wLJÇçž° ðžù|ðÞN^_I/cYìMæ^š²Xzc!X ÿïóÃ$ý1ùåõUÒÛ„ gIêfýÝõÅÝäòÓ\„†l4N’Ä¿¿¾¼¹Á9é¿ûx{{ñëû{Œâ]NÌ~‘J&ä`Ã8d)§ CÆGã0ä‘ÿ¡j¦Ó²^€-ÈÀs°O@³ZåõLÆRFþ*ñØÿŽ?Ò/šzÄ¿ËËšVËjVäíŒþÖyש¶Öˆ9 ý œÝ,™èõhÌS_åï/ŸQUšÂ¾C»ÈËþÇŽÈT)Ë¼Í È ýB‚Ä™5ÇÛ8 1ÞøÓó?©:_Ù=1ù=H-UU5leÁw]oÌÜAJVß(èŸÆí Ìþ¶vÃú,‰è~„qjs™@=¬à˜KUëòHátìÏ”.ÚrMà25Dû·ùÃÀnåH ëžzh^jš]ب5™—6Ú½"nõõïI8P‚„0 ˜ZðŒÉ] vZ@xœ2:VAÞæÅH„þÃêÏTX"ý/ÍTŸT” Þ’óµ2TÀT–•E@À¼Ò MÛ£éu•ÊÚ—5};m X°Ô{,"oR+çŒbgŒsë¯P ©­F$„Èç†ÁB$n£ÄÁF©ˆbÐÇ7éÚ¦ÂeT–nC²NÍž³Ffá05åÓl:š4ŠSva mɬwý‚ô°A€"÷*Õ)FÒls,“èÅò Ý(+BPøíÆ©SMŽv[AyM\^ÄŠ,ãC±ZÑØÛr³Pë¶Y´ùŠ&^¹²yšs"Θè9'-ç®Lm‹$‚LÏÊvËþg ÷s½¦4sßÒMøø~²pl÷ÑÕl˜)Þ¿B”œi7Ú^žp¯ÀNždÌÒȾêoöñFŒ »v¶ï³Àuç'ýúîo1é¬Î_î‡K»jóI:CíXœEÙÑ¢[–ôEñoô°²ý¹…×yW”{õ~ºûb ädWŲ¡0רÓö5jÚÊ>+ç½Ê_p÷Ù ³’eI 1Nm³ÚMšæš"ï(曣Û>¿«î c¦]Â?ÇÈRµmÓêgòô,®øx!N}_€À†ÈÏ–b$!¬p¥ÙR¼+A=ùª*kuZô)™R§æš&­¾nT]¸y×£YNid6¸>.Õ°Ë"SWÆ0¦›3ýIÖ’:¶í3så‘öQ+’FT•˜ê> endobj 2685 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2694 0 R >> endobj 2697 0 obj [2695 0 R/XYZ 106.87 686.13] endobj 2698 0 obj [2695 0 R/XYZ 106.87 593.21] endobj 2699 0 obj [2695 0 R/XYZ 106.87 410.93] endobj 2700 0 obj [2695 0 R/XYZ 106.87 275.08] endobj 2701 0 obj << /Filter[/FlateDecode] /Length 1493 >> stream xÚåWÛnÛF}ïW)`E´æ^È%…ë8‹")õÔ}`¨•Ä‚&’Š­Öß™%ER² ?÷E»ÜËì™3WͳõÌïg?.ÎßéYÂ’h¶Xͤbq4›K‰ÃâíŸç,bþ\kí]~üðözqýñÃÅÏ>œPÞÕW—¿â‚ÿ×â§ówê EÄ,ŠgIÐ íÇýþ\rÁ’d6Ú®À©oýy(”÷Ù”Kœ…^»14©vív׺ùj²Y44fÕímÚ_­&§¶u^¶¦Fj:%¡}•®+ï;–ÑÉ'vÛ’%§õo›º®êfŒãïýÆræ6Í‹!â`eôÆÜ]ÜìÖf•N‹È3­”þwµ°ö g\1©åJ0¥{‹úð*¼sY•˼ͫ29R°{“ípajQ$‚³XX —Dvƒw$ ð…ööø!¼´h*œ)ï‹Öõ }€y¶ð{Uc–t­ÝT»õ†æÙ‡òÌW?ºŠ]jÁXÑ»&/×´†¸”—å‘s¹‡‡)þ¹ÛØM6ÂaÒ¹íÙÙTpªÜf³/}ЦMï!6"xW_‘S# ‰:¸£LÀŠhv™Dð"-ä%nÍ\Ò7÷yKG²ÊÒ¶4¯ý¹âÜ»ÛäÞÐÍ× 1[†açSWÖæ`q­j”%¼¦º58“^Ö4`AUbî]ÐF¯‚=Õ8iîVÚŠèá¼çGš…IÇÐ.óCîÙÓÿ,2EÈé®ä+÷Xë^#ZŒÕuihƒàH«4#­…’,CµýJÃË÷ÛÚ4MïÕ{kÎD÷ºÓ—S@òŠ8ò… a¢sŠÓLÅ+>–}$EE,ìÞ¯ÊbOx‡#çfZMqyxÀ™l³lÀ°1°F„„á„p3u’‡JMOÂÅs„,VÏs"õ˜€|Ì ÔÅ´æÏǨQ!㡹‚œÙ°#a"a*²9bgíßæÍ¶H÷“zrîVÉ9w•i[±_ s\k²%‰¼ŸxXêJÈ~Xqøħ]éž«*ܾvõ§T·® ª+`ét}Ï D}Óº‚s?z`ŒÐ-ÞøCO€7²+S¯F×rWäÊÊ"oH”WO))"Ä]‘Ò®H½¯«ÝSÿS%éÌbim(-oLƒ($p 'ʇ­<0[!5’ÇÞº“l—ó’Æ”†mNËyéDÐ==)WvÁ:Ä™’‰wí¹*5f}UE…`ïÜÃÃpÃJœ*o^a—N¬Ý&lÅ‚.lV»2suè˜8€}‰­ýqïnc¨$ pž!µ÷!ä¬=Må Ó]¾¡v1•¢>r€ˆ„RÇ@怉ën€ µt o€ÉӌČÇÏB Ô’“;`–“çmœãþáNèî8·£§ô«1Wš 1ÌL˜dÒC„ÚW#ŠÆi“ÄÙdvã£Ûp" –õ0äGŒA·-:9/‹Ùq¤˜èXÍ›ÎÈKFå³µKvìN,JNdÛÿK¢SÇp‰.v‰î÷ –lÃmȘÒÐlLátgþI†T6>ï‰ù²@Z@ •‡>"e/Jö ^C_”'áO]Zv-¦žË}[n NR/ˆ£U·*:#í¿3Éag”ìÞ¸†16Ô‰"7H\ŒFGý€ÉÙ.H<ý7¨s =\YŒÔ2wIï4”úöÈ Á“U—4»øô}ÓÖ}¡àœób«)Ž¿é #á`‹)„(fAý7c ¼oþ £%è{y”u ùÚõÄO®»ÈÆâGêiè~ÄËÕ«wj¤/ á¥yI…¼)í¶Š'TÝõÂd‡7²úäHÛòRÈ+êYžŽÃÀÅG^fÅné«Î}äIOŽm3Ñ÷ïq±:X¢ë{½¢ZöøÓâyIÍ]Þf›‘4È9ßü°—¨ endstream endobj 2702 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R /F10 1169 0 R /F6 539 0 R >> endobj 2696 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2702 0 R >> endobj 2705 0 obj [2703 0 R/XYZ 160.67 686.13] endobj 2706 0 obj << /Rect[159.67 586.9 217.98 597.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(obj:Shell) >> >> endobj 2707 0 obj [2703 0 R/XYZ 160.67 571.5] endobj 2708 0 obj [2703 0 R/XYZ 160.67 545.03] endobj 2709 0 obj [2703 0 R/XYZ 160.67 524.05] endobj 2710 0 obj [2703 0 R/XYZ 160.67 458.75] endobj 2711 0 obj [2703 0 R/XYZ 160.67 439.98] endobj 2712 0 obj << /Filter[/FlateDecode] /Length 1130 >> stream xÚ­VMs£F½çWpȪL›™¶’Tyý'µÎnź­ö€ÑÈ"…@aÐ:®Tå·§gÙÞÃ^„æƒ×ݯ_wãΣc¿:ïç7¡“B;‹µ“$‡Ž/$¸¾úì²$ð¾,~?¿‘‡;Lr‰ØóËÛ‹O‹ë?=|E¸ŒçK)ÝûÛëÌ^è^~¼»»øãêžPâŠÏD ±t|.íbýKw’ÁR²³³ÍÚ|ãù\˜ƒ™›>‹!JÞ„Ò*o‹ºú>`j÷ÍkàÓ ¤N|ÕÛmV­´ç‡QŒQy\ºÏf¹Y©kóOºžÏWч}Q¶EE‹%Þ*2­ôÒCª&Ü{ÕÝk7ŠÞ^! ¢æû­ª<Ž…kl¬ëf¸¾:× «€dª&`º|¿Qe9 Œ§öÔè/bÿ…¼˜ àñ’µn„²­Eò(*ÜÜZaìP„ïƒÇÅ¡‘%ƒÔóCÎßgºÈJFQf±ÞW6ËzŠoFcÐ$6€ë`Uî ænêñÛ³*áALÚ—Dç˜H@ØW‰Ê êˆÁ¸èÎ{o‰]ƒQ`[M댺ÅýG˜ÚñCä…Y‰E¤±—dЊò§¬yÔ¿,=I€½S£;¯3Å¥0þ˜âSùêuŽRœ G4†`¤<ÉPnèÙdÕ£ê(²â·'û¦QÄm¬ŠuY7Ï^"Ü9yhCˆ1yùjiÞécÄé˜4<2œ…î;¢î ×ÓšçŒ[_óß1pê¦pô~·³u^7¤“°× ÷1TüL‘½›ϱBåD9è=£Õœ‹ø5.&*;º¢þÙ5JkÏ[¬ýfZ º¾Æ†‚ñ+,?‚4•öéņžp¬Öl»3¹0³‚ªŠ'¦c•em+‡žÙ22Àï{8(„NF¥`ŽÛš `&mni÷Åzåi:ô]8_×ó™ëÛÇ٬΋÷¿s4ÆN!EXuéKH1ý™Eào!Ìç~×Èhž·Ï_(s?Ÿîè0ïß8n?Þ]/=Êçœ j65û¡Ò…_ ?üdÊ'. endstream endobj 2713 0 obj [2706 0 R] endobj 2714 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F8 643 0 R /F5 535 0 R >> endobj 2704 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2714 0 R >> endobj 2717 0 obj [2715 0 R/XYZ 106.87 686.13] endobj 2718 0 obj [2715 0 R/XYZ 106.87 668.13] endobj 2719 0 obj [2715 0 R/XYZ 106.87 648.13] endobj 2720 0 obj [2715 0 R/XYZ 106.87 625.05] endobj 2721 0 obj [2715 0 R/XYZ 106.87 586.05] endobj 2722 0 obj [2715 0 R/XYZ 106.87 565.18] endobj 2723 0 obj [2715 0 R/XYZ 106.87 526.18] endobj 2724 0 obj [2715 0 R/XYZ 106.87 505.32] endobj 2725 0 obj [2715 0 R/XYZ 106.87 466.32] endobj 2726 0 obj [2715 0 R/XYZ 106.87 445.45] endobj 2727 0 obj [2715 0 R/XYZ 106.87 406.45] endobj 2728 0 obj [2715 0 R/XYZ 106.87 387.91] endobj 2729 0 obj [2715 0 R/XYZ 106.87 334.63] endobj 2730 0 obj [2715 0 R/XYZ 106.87 316.09] endobj 2731 0 obj [2715 0 R/XYZ 106.87 273.7] endobj 2732 0 obj [2715 0 R/XYZ 106.87 244.95] endobj 2733 0 obj [2715 0 R/XYZ 106.87 224.66] endobj 2734 0 obj << /Filter[/FlateDecode] /Length 1004 >> stream xÚ•VKsÛ6¾÷WðÐ9S"Ä‹ 3™ìÖy2öLÜâ( ’Ó¤JRIóï»xP)Y•OÅ>¾ývA‚’$ØæóWpS¼»AŽò4(Öe(Kƒ˜Rý)þøbŒp‚¢XÞ?ÞDpÄÂÛLJâðñ£Þ áÍçÅÇ(#a±x°wŸn‹ÅãçèkqÿîŽ ¥YXåÖçÁŸ…qƒ˜!Ê+pçRNæc”ÿÃìQÕ•ÌV›¦¬ýš¿–ӯމý‹UòUÿñטM]–‚¢ãH¼m_^ÊfegëæQÛý¼Œ(ËRDÄQÑaºž¹}Œ†sÝcÝ7±íâ×§ñF¬š•ü÷)²±½·A-[r‰O·ã™ô§A7R·–ÿìeSÉÓ룽µªåäúÞðÄÓ‰x-›Í°=çŸñè’é9>°&¦<9c~¾GZY§ÊemF"ËCH@¹1²ØÈU61q­w4QcsÎH|)×öÛ“!dæž=†þÀr®=üét—ºh¡Ö³ÐìƒÑ(|ôW¬ZE*«á0¿gŽpìùñR>Ë“ÚHfOŒ5àæ´ÎÏ•<Ç):aÎ\¿€89@›hCÌð˜T½þr ´Þ¨ö]§›`zCG¤u!÷jk­¤»Â§¹1þã$GœœáZ”Qƒ6cçBâ%³NžÖ° g£ÑIÕÏÞc4"¬ÄŒG”M=³ÅúËÆ-˜ endstream endobj 2735 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 2716 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2735 0 R >> endobj 2738 0 obj [2736 0 R/XYZ 160.67 686.13] endobj 2739 0 obj << /Filter[/FlateDecode] /Length 452 >> stream xÚ•SËrÛ Ý÷+X¢…®!Ë<œf:IÛi´K:¡HS=:–œÖ›~{A ×–³éFÀ}ž{Î"@zEÓñ]櫎¨ å%’2Žâ$ißטJ}Ï?­nÄ!† B"2ù¯n/¾æëo‘MI0¥ÅBüp»¾»s6ޝ¾Üß_|¾~ðUþuŠi*@Ú^LL[+¯Œ’‡(F€Ï­ªzûí>.ëÆ,«e,ĽEiŠõ¶Ö7ázÑ¿l¢˜I¬[S˜'–ŠÎÞP—ò>b÷;÷`ø—{Ø|û½e¬æ²}Ûꮈ›º›Ù™uxcK„JAû„±?ƒÁñ ]í·ÈY ËçÉÄÄä,L©wÍèÓì`ëfg<ŽzX²E…‘þ¬ oõ³ê‡êy†± éÌ/øX¦ QÇ3¼§ "º4¦{«e !&ï*ÃUPÆ]”pÅO•qGœ;‡Ÿ6L`óR—ûà©BN«×­cr×-h ”ÏÑ·m´ñu¶žØ>ï„Â.„g%N…¬tÐÄîJv¾+÷¹¸|7ùOqjÿ˜¤„œi™B¦N¤\çþzýó endstream endobj 2740 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R >> endobj 2737 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2740 0 R >> endobj 2743 0 obj [2741 0 R/XYZ 106.87 686.13] endobj 2744 0 obj [2741 0 R/XYZ 106.87 668.13] endobj 2745 0 obj [2741 0 R/XYZ 106.87 453.09] endobj 2746 0 obj [2741 0 R/XYZ 106.87 424.44] endobj 2747 0 obj [2741 0 R/XYZ 106.87 404.53] endobj 2748 0 obj << /Filter[/FlateDecode] /Length 1199 >> stream xÚµWM“Ü4½ó+|à`WÅÂú´ ©€@Á%9Ì-ËA;Öì xìà ûïiuËgY—µGnI¯_¿~Ò&+Šä!ÁÇÉ·»¯~Љ(˜1ÉîHÅ*“ä\¦E²ûþCúÝÑ~œÜå²T)Ù/»Ÿq†beågI®jVaìîè(nœlר¡ñ¿tÚßg¹‘é¯n?4¿JjV›0]sVÖ8ÿ½íxzt!L­aZ3-!ØG5îN貃 \ N¸©0¸Öa™Žv¢ ;„ erCã§Ž†mÛÒÀÇ¡ìydY®”AÀ¡oÛ>eúéÔ=xt€1圳Z#° )öR]¶e8÷í.Ï“*"^T‚UD<Œg°ºPéûL)p“‘z~2)RL¨Þ’­MÀÖµea˜‘ëÚëêï.+Ä \È_æ Í N…òL@r]&ªÔS €0{C@¾öì©´ë;G Cžµ"®Ì*•@„ª 5~w¿ÀÙY"®‰êS œä”}–Ê~¢ŸÑ¬­Nß>ú,ÜðDø÷­GŠ]Ö²ôg˜ ‰®2í7è¥`õßÀçLV!‚hÉ%¯}£E"ú)äBôðO V®™]k¿yu¹¶âqO^Ä ÄRÝ #¶¸ñI˜¾¼K{Ö#ô¼uÝÃt¼Ë¶9ÔŠqâC•.™vÓ|ö=a&EÛðÜ(`AØíú|vÓ±G†—OØ–q1¯ª·M1ç…bEÏzq­ÏÈôìΰ6ôÁëG;¼¹Í˜`oýϬN]ó²9°Œˆ"=¸iïîè]BT$&|YùU2ðƒ± pà0ôg Y'F ~)ÐŽS`‰DšYœÒý>ñÛ6:¤¯Ã&yÔÄÉÿE®Z0±´J(Øý¬|(ì¨à:Ùû6”yoƒsc/ÆÔwù¾ïü­$óׂç,̹ÔÿÖBìÇP¸ÃÜýC 9#õ«¥…©ûéÔw4Hæï™D…ážSßœdr¹¥Ô—5¨\´mT®ñØÏ^þø›ìoxþ…_xžøýz°ÃÃ|vhéÓ:ÐEè5¥ jk'ŠôðƒöòÍ-›töì |ªT—É£ƒZ4×sƒúÓê‚6jöÉšü©Xouź•gAêÀBQBgsBP ‚óêâÂlî0€úæý„WCX…:ƒ6tô²c°äd'8å¼=mÏíPÿnÏèg÷Ç­à*éïó«Þdhïí!#˜©×ûÔK땚©åÔ‡ï‚#·B<ßüþûmóW3üzGß;/ö>Ý“<Ö2Gp — éœº…T– ŒOÔëö¶E.yçp›úY:ïÐ9LdÇ"´5N®b ¯ïûæéÍmËW¬À²dœâx%Ãõú‹?nÛ endstream endobj 2749 0 obj << /F5 535 0 R /F8 643 0 R /F4 527 0 R /F10 1169 0 R >> endobj 2742 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2749 0 R >> endobj 2752 0 obj [2750 0 R/XYZ 160.67 686.13] endobj 2753 0 obj [2750 0 R/XYZ 160.67 446.43] endobj 2754 0 obj [2750 0 R/XYZ 160.67 423.68] endobj 2755 0 obj << /Filter[/FlateDecode] /Length 1546 >> stream xÚ­WKsÛ6¾÷WèÐ55_écÆIœf2Ó$“èç@‹ÅD"]²­ß],@R¤“8m/|‹ÅâÛoXpÆùâza_.ž­ž¼T‹œåÉbµYdKÔ"Œ"–Áÿ‹ÈÔòÓêõ“—i/#¢ŒEÑ‚Ûùç¯Îß­.Þ/aIÉ–ašfÁêÕ|X-3œ¿y±”Ypþþ¾}öúâùê)6…ˆ˜Š¡Lí¨¹Ì¢ ii™¾/ö7;}Ff«écÓìvÍR&Á]U_ã 6‡zmª¦&›¶ªqÞt4[ìv'*Tp)ãTïÊŽ†› ½‹šf›«eÇÁg½6drÖ›,óŒÉÔaÑL3éqbÓ•¡ÌR– x'ŒGVæØiÞ^á>—As¹„]¥ ~Ç• ³$G„XÓf¬±’á¦iu±Þ^·g´àVú%-!0³«/ƒŸA˜ÔÇ Þ¾`ÖÑÊŸ¨”ñ.ɬ–€6E3áAÐ÷7Mk¦j"Å¢ÜI€Á{–GAÕÑûv ð»ªÄ_T5 Ó}R€Jy°ON?Ý$¥t’à= _Ï4(ÈG`©ÿ®¬ûyÏ Ô3ˆƒB c(yÂ29Æ~ ÖV‚Ž8Ÿ!ÊôätÌ¢ŸºØëÎqê„cq,±›QÅù^ÚÓÛ¨¨@åTö}žØ=?~ËðÍ£™Ê8øe Э[p¢àŒN5µÚÚš¶V±Sr±²©)^8é>7aÜ(—œ$L.A!ðWq3^8Ïi¤ Pñ܆ŽâĈý-+›ïŠöHÿ›¶ÙÓ—‹­ƒv LCoW4Ñ$ùƒq-!Ç΄߾èã³s2 Lw„]å ~êöδ`±†¸PBMB]…ùÆmOÁ>Î1+€ÛŒ¾Ömw†Ì!¸Þ‚6¼¡ wB¨‚öû°Ç'æ€$ð+E€û××þƒt§ý_Y…s·€|ÓVVˆâÖÅtѶ—£+.>°ýY0؇³7„b¹ScåÓÒ`š|³5î¶*µÛiZûôC{m¶…¤ì\>¼÷œLJÆ¥Ý@”SÇÛ7y²a;]_›í¼:Ä)‹}`€›”e>[rýÌ¢Ÿú§åµ2zï²aUOjú¾¸™›&ù&d_1cû^ï)CYÏÏF…Ý(-uSÍJ°ÄKšö §š¤ê}œJ†CÍÚÆ¿W  |>©\u)5ò´ÖŽxÌÔW0“|ý(hEYŽ@;sß·Èá  ¼ï‚žb¦‚üZÚv*çÎÀœj!Ž6“Y0{ø‰Ë0QЫÖw®ŠÐn£à|øäöãϽ©êòÛlɘR§lÙh³ÆèÛÎsTü•KÉ`9Ô+õ£vƒ±ÝÜXêÝ·dÙ©±66 Š'.¥Á‘†1H©WÆyk4Ž|A)}tË«z2íÜ(#7…*n¶5aÚTëbGntå¨iKÝþO~´Lí‘°"‡HâÝ'\K&Ljàpß±Ñí¡w³•R’¬ê‰a2íhÊ‚ãM2nÔ°Ÿ€F¹1§ÑQÂ]7-VW벯Þaß„öñµ`%ÊFôÈßϧ T1X‚tQ6–U”îg8hk×- <Λ§ ÓÄ5ëóµÝ¶9@„Yühç~¦ ³#!ÓØ¹¤»íõa¯©cè~EíÊó˜’UÛÙnK¸nKP·%†¸FAlZ‘ñ"ó‹¡½Ðë¦vó~m?Ùw4~œuf[¬™ýÍo,Ð#[p}Ø9Ü@¦x]²¿˜'íÇI `ô=ê»P‚R~¯xÜÄáÊźœÛxÕdžjwÎcÈÅ_í&IMÅüÁ «†<ýEQŽG9¹“F‰«¶Ð+þ}¨Ú7•QcÝš1á Ú?ÐÆÛMŸ‘¡»Êlñ ÊåÎè–J{tÇÚß=¯è„Å=sלŸþÐc€ endstream endobj 2756 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F10 1169 0 R >> endobj 2751 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2756 0 R >> endobj 2759 0 obj [2757 0 R/XYZ 106.87 686.13] endobj 2760 0 obj [2757 0 R/XYZ 106.87 289.66] endobj 2761 0 obj [2757 0 R/XYZ 106.87 271.49] endobj 2762 0 obj [2757 0 R/XYZ 106.87 222.2] endobj 2763 0 obj [2757 0 R/XYZ 106.87 201.81] endobj 2764 0 obj [2757 0 R/XYZ 106.87 162.54] endobj 2765 0 obj [2757 0 R/XYZ 106.87 144.09] endobj 2766 0 obj << /Filter[/FlateDecode] /Length 1252 >> stream xÚÅWKoÛF¾÷W¨$jn¸/>Š4@ÓØsH‚ZTJٔ̈́"’r¬B?¾3;ˇHÕnÑC/Úåpfvg¾o†#'`AàÜ9fyë¼^¼¸Œœ„%¡³X;R±8t|)qY¼ùÍå‚qæùQ¹/~õ8ÜOðËÝŸ¯¯>]\{ *ܯß]ü²¸ö~_¼{q©g"faìä(Öô>îßû"ŽYÀ hUl]ÕYzs¿t_>¤5uîùZ(ó ^-=tápn}ÎY¢ÕËUu»5=Þ—œÉÅDbô.½XºUM—ÎÓͶÈÎñI¹í}†鮫¢¨<¹ßòòΊvåM›W%=më¼Ä÷mCÏiQЦw±:ÊŠÛ†KÀ\{ÓóÓ5›.˜Ž×%”kZœº¡²s±0Ó™vìõûñL©>3ŸI" ½‡j•V üBµŽœ¨éˆ§Â Ÿ0H€®DˆZ s4¥4?NŽ&„ †&ŒY¸fô +އ,Ôc(NMÁ`Á¬(†Éíu—jsGM“”/uy\ >Øl)ªÈD%Ž¢"…µ™єԲ;ÃeÔE Í«¥ƒ `)ï|êwU>öiÛ¤OQ†pÑq]çlžTƒ ä¤ÊBzU"¢í“Pjh¬Iòß¡ü›Œ? eø”ª3»*gá æ)¡†Rí˜-Æ‘ÀN{»ìÙÔ&R ©Õ6µ— útba¨ŽþŸ¼ê’×>‚±_ C¯ðDf‡?0~GÄï° óÄÐgü»¿¡¾šX endstream endobj 2767 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R >> endobj 2758 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2767 0 R >> endobj 2770 0 obj [2768 0 R/XYZ 160.67 686.13] endobj 2771 0 obj [2768 0 R/XYZ 160.67 668.13] endobj 2772 0 obj [2768 0 R/XYZ 160.67 649.41] endobj 2773 0 obj << /Filter[/FlateDecode] /Length 1454 >> stream xÚµWK“Û6 ¾÷Wø53"EQTf“™<6Mrh2‰Oíö µéµZYr%yùõêaÙÞn§ÓE$€hò0œÝÌÜðóìíâÅ5Kyªg‹õÌ®ÕlEÜÀüýoLü¾øüâCÒˈÈð(š…nÿÝÇ7_—ß81!y0OÃ/iåû"0’½ùå} {óí=­~yûùòÝâ;^<»\8♸³¶:2:â¢3Ù9Q#b®»töœî¾Þ·ôq—·ü‚Ä[´¶&h!z>^s ¹0­ÍîùÔÒ²<‡Ø]±‹Û¬ö¯¤“.»¸®V¯§Ï1mûŒ7‰“ûxóð8d,™½Ï¶»Â‚+R§yGÓ,†’ëQ`Wç}¦Àݬ(h£¿â0›  æ{‘I6yƒ¯ ®íÊ$ÀÒ†b¯NC1‚ì~—Ë mQ^±K0”’Ð+ž¹SÇÉhNdAyªÜ‚Ž ö~WÕÇuTsy@Tebzú0z’æ˜PŒ¢$e°àMÔ˜˜ ñø‹PPͺn…¾/BØš@2©ñy4L"ŽÊûˆ;ò £xrÀÞeµU‹QÞp«ç+b?l].1ê_âW¼å12èÞ̶“èœÓRÌBÏð nÏñ'_÷—ÅØLøœx~x÷?Oš”­Vý·èï§lÈ«SŸ§›–Sæ'õƒ®ãŠÑ]?¹¢p.éŽ<:UJ7ËÚÜýÆ÷wNñ‰Œ¸ æ*_f­ýï…Îa`ïsçÎÓ1À†Äc÷à„Ò%| ÎIpnÔÞºS‚e%Éu0i„ 7ÚMÖžA!j> endobj 2769 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2774 0 R >> endobj 2777 0 obj [2775 0 R/XYZ 106.87 686.13] endobj 2778 0 obj [2775 0 R/XYZ 106.87 560.29] endobj 2779 0 obj [2775 0 R/XYZ 106.87 537.48] endobj 2780 0 obj [2775 0 R/XYZ 106.87 445.36] endobj 2781 0 obj [2775 0 R/XYZ 106.87 424.48] endobj 2782 0 obj [2775 0 R/XYZ 106.87 398.38] endobj 2783 0 obj [2775 0 R/XYZ 106.87 380.1] endobj 2784 0 obj [2775 0 R/XYZ 106.87 319.56] endobj 2785 0 obj [2775 0 R/XYZ 106.87 301.28] endobj 2786 0 obj [2775 0 R/XYZ 106.87 251.1] endobj 2787 0 obj [2775 0 R/XYZ 106.87 228.28] endobj 2788 0 obj << /Filter[/FlateDecode] /Length 1141 >> stream xÚÍVÁŽÛ6½÷+|È*F¤DR Ú’v·H. ²F.uQȽV!K®('ë¿ïCÙ²Ö»ëmzèŤÉápæÍ{CÍ"E³»™~›½›¿¾Q³Œfr6_ÍΩrƱæ¿þN§Œ¡RŠ|ºþ0‘/ðËÈÛÛ÷_®o0åäã»׿Ìoƒ?æ^ß$Gg<¥2Eè(U¸ŸöCžÅ4æ0*·V­Y_¡à ©z½1v*ÈÏ8¼ZªéqáãòE`ÃU!c4ç|ÑUÛåu½ ÷ÞëÕÁí÷úêþGï~œó¢»7h´lÛú$ÀU^ý|ú¾2½ùwqÈKâè»Ýa˜¶ëöÖ¢ÝlóN_’òÛ®Ë÷'w…ü¤‘óp=w´3ïçÀ+¦b*Õ‘X*€«À½õÄÙ'SV² Î Ÿ®Ý<%=²°]B ’ü¥‹Þ¼™rME”sOÅ[ý÷N7…žò5a4½ u‘„™¢ŒÁÍœFÌ­Ï×zꚃ’”?†MüòŒFÂTÀi =ÉíÀI—7e» ó¢ÐÆï¨.HÞ÷¸¼íZ›óתÔÏöŠ›¬Úº†MI¾UÍ]b$/˪¯Ú&¯1™ÐHŽëºÑýº[EJC1`"f ÍÐ%àæ .ù4o7bVÀ"C›~dù©ºB*Aœª`S’$¤Óý®kŒ­^Lt­7¶œ Ê9­]J“¾©Û”ŠÁk»BO;9"9Í/d"£ÚyF]’a§¿~G†‡¸¬ÈSwF—g"}\><•TÆGù¤^>·}g+ÿ”vâHPÆ¿_;ç .)KN„óh ­mù‡2ŸÂMDÞ5Oç åÿ ‡Kkóàµb4V§ê·p‹çÕŸ Çn0±W–Ù³ž 6@áIJ;MËAÓ6‡G¼¦•×´]$›ž•lg4I‘ÑzEó®ê÷™,8åÙ)“Ù#6®=þ­¦¢[íšÂvžgxØêxÀ"O„Ï»Z?ÉhŠTþïXo™?5$p"q$É ¡ l;m|ï3vMÚçÁn-wU]z+p OBÊ„{ìR‰lÐÿ6­_/v]çÝÕ{ô·ÎÝãáÚŽ¿¡Á*âóÀñ™{üyx¢’)ô½tTIæ+9·’λ;Ý?YO1ÊÕ%õ|PN)<½¼œ.¨ç‡&Á«Çd]´~^ ­¿jàãs“[] &u öCÿ‡];IlÝÝ{°ÅÊÕ‚ Ux‰a nn—ës›€6¯^ðr÷ç³ÁvÚ’Ë€O©8~ÁóªW++Øq€ôFaˆCŸQþj‡/pe÷¸¼ÉmGuÍI’%¢ˆ6Ïg)Ÿ‚ÅÐÊb¯ˆnj0’¾ )ù¶ÖÍpQeÐì´^æH=•/»•o7¹SäM£»?K½5Ï}td‚˜ˆf9#2G\Öº)áû¢rxÁ²Ç f Àθé0ØrÑû)®M5z¬«ÌÜ#q¬Dìó)‡¾òÃ?Зœï endstream endobj 2789 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F10 1169 0 R >> endobj 2776 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2789 0 R >> endobj 2792 0 obj [2790 0 R/XYZ 160.67 686.13] endobj 2793 0 obj << /Rect[219.5 550.97 228.97 559.77] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(appendix.A) >> >> endobj 2794 0 obj [2790 0 R/XYZ 160.67 375.4] endobj 2795 0 obj [2790 0 R/XYZ 160.67 356.65] endobj 2796 0 obj << /Filter[/FlateDecode] /Length 1824 >> stream xÚµXKsœ8¾ï¯˜Ã˜-£ !¤R©rg79Ø)gnë=àA3Æ)`ìøßo·Z0¼ìØIí !ZR?¾þºÅÂcž·Ø.ÌãÏŻիr³X-V›E1%®ï³Þ?üíð(Zþ³úüêcØÉp?b¾¿ðÌ÷÷Y]\/a‰ïpÁ–nFÎê¯ šùºZFÂ9¿ü°‘s~ýf¯Þ}¾x¿úJs¯ÛÙåÂg~¼pEhf`ÿ¡ÉE˜yÒñu“4ÙÚMõ¡&©“)AÈaÅ^/])¥•NòüV܈ ,tJÝ³Ü ¥{-AG©.Ö™®iºÜd³Ëj;Jª­nØÔ 2 že„9|ÞÁD|²A)ßíÑTDÓÀêŽÃÝqzSV£5¤û¼„ž“ëü˜fÅ–¾‘—P•…K ¸œ·ñH ë±zûèÜètîŒWÌà¥N¹Kò£ž¸E ÃзP|4ìn.ÇW1U‘Ä“º.Íü:Km!pŸ5»ÁnÖÉ3V…  '³Â盵.÷{ðäİÐg‚ ë4èÖb%©Ú·§ë£ÀŒ|ÆÃ([›Ã±q7Y®”]\:Ù±'í*ß/I/€’ì_ue3hŠ%ôÀ”ÌõÆCÙ  TYh»³=-i-¼ˆÅ­ë\×jþÇXmW(ŤOˆÈÈC“•… Åâb|¸à2b°Ê!‘ãØ÷?‹ýÁç³17 %º L‘ì[ivIs’È5£ _EÕ}V[èfV&«ÇfòH1Þ†g“äõ$0ÚÜ`”ÄBI¦0÷D›{«*åíÒ ”ó¯^Û#ëãò¤¬šz„«M™çåR`h+0«öºÙQþ¤39ïÑ™Ás°¶ÉŠôÆA¨Ý,@ƒ~;•nŽUÀÂÀ¦Öìã;'ãkœ–QÒ˜„ƒ­…dA¯§ x¡s@@ºÆxãP¥ÕéúX4Ù^_|_k¦)êB)¿Ï£ÙfäÜÚÒÓ:3رLÔXs,NeCIe?•›ùª²³ý×¹cãRž$ùcAŠcæ÷H9vA ¸œº(„·\‘£-}ÈÕ6îƒ`< `âÀ'˜`*Ì€û'6 ”pïòX°8êSÁ|BÅL†V‰IÔèŒ~|dŸ™Oâ=Wlˆé”¤—W« D;·xõÁ¦¬³÷‰™ùb¼€ƒ„:ÀÀ”Qžk ·¦:®©¾Pú”DÐ2ò {qå`!4Ë{–]nù vIO.Y,û^«³[ãÈ#Ko„ŠVœ‰èéxKÌ’™xãŽd)–z–w4}¾ÏLÀ\Ìé&É ú”bJ)]iš§É®=¨é„ɰ±9°¸ôÒ·=Coj¤ dÃ) R8©¡½hè… v¿4aJ<÷É7Ã<øíVv5¹F³U®c÷G}èµY5@ n‰!Å'ô‡\7ÚÖ)û!5¡W¶ËPÂÈM“ðÄm¼†])=ªcn…nMjCô€ÄŒ(S±s•ÎʪËz ¬U¡,FÂÂÕ)ÅÑ oPÔ«Q¢Î¶rLœ½Ý}ÙUƒ®ô¿ú,ì§«R ˜Šè®nd\,A8—&Ÿ½õÓ›V0Ÿ0õÅ@Å/rš^}¦,¨_ÑEE´=ØÕ­É”18óÃa3 „ ð¦šv½À¤¸ÚÐË2R¢ìõˆý<Ų‰Ø‘ž²w ˜8$§Ì“^0ì9P€®'°„^Ó¬¹iàlšU ZVæZw é|² ‡ÍŠ1H†ó>ÆÝKØu/à] ¶Ê¤ÈLc¹ ¥|NüýX)Õ oPÓ9ské $öR“)cŽ‹îLÄ<]ú¶×ÁmGµÊvœŸ†À3•Œ²>Õ{¬«˜ÒÊ)óönÈ¡> endobj 2791 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2798 0 R >> endobj 2801 0 obj [2799 0 R/XYZ 106.87 686.13] endobj 2802 0 obj [2799 0 R/XYZ 106.87 668.13] endobj 2803 0 obj [2799 0 R/XYZ 106.87 651.59] endobj 2804 0 obj [2799 0 R/XYZ 106.87 610.75] endobj 2805 0 obj [2799 0 R/XYZ 106.87 592] endobj 2806 0 obj [2799 0 R/XYZ 106.87 551.17] endobj 2807 0 obj [2799 0 R/XYZ 106.87 532.41] endobj 2808 0 obj [2799 0 R/XYZ 106.87 451.68] endobj 2809 0 obj [2799 0 R/XYZ 106.87 431.82] endobj 2810 0 obj [2799 0 R/XYZ 106.87 261.91] endobj 2811 0 obj [2799 0 R/XYZ 106.87 242.05] endobj 2812 0 obj << /Filter[/FlateDecode] /Length 1203 >> stream xÚÅWËnã6Ý÷+´èB*ŽHñ! ŠópŠÌ¢4Ælš.›NTØR@É ú÷½|H¦~aŠvcÊ’xyîá¹çRA‚’$x ÌðkðqùîF9Êy°Ü)Eâ4ÕÃòó!&£(B„_¿G'á7øÅá‡ûÛo‹û^%áÝÇ/‹OËûèÏå—w7ôŒdˆgAbe¹~,–fI`Œræ­É1ÊÈaMœF1Æ„†7åVú3él– †Íįa¡d‘,l-¶ú1Šÿ’«¶yof}‘ BÀßêµg@”c÷±àçA¬1Z´Ëg©WJÃÂÄÖ]{«ÚJ¾(Ùhd"l{¯ífVÅ®›·Ñ# ?$:M&¥¹ÇuÌ}.ÕIâ0 dÿ/s£°0 7ÍÁ÷£â%]TÍRÌÅdJ1u§ÅëRA„Zýe$<Ç4H-÷ê3Çô§ç¢ªäö4ÛyŽ8û~¶ïMÊãZ ˆ!ß×ëy|‡Å ¹›ä¥0ˆ ÝÊe3`îIVR•+Ëêí½¹Ò©ÙP`”·=/ªÖÏ^˵ëSo·æá[Y=Y:v²}®£øY7È‚ÂI*f€±–‹Ííp2NÏŒúaVÛº‘Ñ8EFéXxo1›7G WZW]f@‚0ˆeÒ¢œâ¡%|ˆGÉv¯ª!mt`8 )šÆ·*‹V®íÍ·²}¶“ü|„ŸÏqÙ“ #–z²çNö·Õ%ÂO£Þïþ1…‚̇ÂÏ¡“dç„ϺÆ4Hb ‹áÌ—>&aQé1 ËêeßÚË‘âSî:“<Ñr¦½ÝD˜;ÙhLQN}~Ž•(9híêM®«Î~Ц~}Ä ôõózÿ/Ó Á)”?–Hýb è©½GѰ’oö·a3²nŠph¹ª’àëMÜ´ÊPd°æRÃÀ~élé¹ ~²{±oܶèyFvO.ë^ÌÌÅ•f¦d±vYWûÝ£T3YçTK®ÏZä,ÔÓ Kr+6}ñT¾ê ’,4‡¦ýNÿ‚W€ KeßÓ­\ΚU±j¥j줪wöªµÇ Èʬn(áãÊø÷8ØV3-F FÆ–nòövz[V]±ìǺÏi³¦ëú?˜µpf}·o/qkšÁô·ž˜5ç‡Fz±YgBã?cÖÈ~I (fH0ß-©°n c½omíÐll×Yg×ðšo×ÍËõgFï×õ~z©{ÜyæK¥NÎWN´)x]:(ä^^П]’ZQÕÚ* V©ÕÄ4šÿ¾à kè°Á—5¦Y9Ûz¥šÎu¦¿aŒä×÷~;ƒ9¡‡ÃÇœõ‹™t˜‰‡™L¼‡oªlûÍhëA b.9Ø|F¯ó7/¹¶Žæ!‰~å>Lõu§OÈxµWÊ} Û}{¢î+˜v’ÖiRÊS6†­jó4v½Î.éÕÈÜ;þÀxݱ˜ê>81Œ8™¸ ÒZìZû8aÌP’\m±üá(®`» endstream endobj 2813 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F10 1169 0 R >> endobj 2800 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2813 0 R >> endobj 2816 0 obj [2814 0 R/XYZ 160.67 686.13] endobj 2817 0 obj [2814 0 R/XYZ 160.67 540.19] endobj 2818 0 obj [2814 0 R/XYZ 160.67 517.49] endobj 2819 0 obj [2814 0 R/XYZ 160.67 469.84] endobj 2820 0 obj [2814 0 R/XYZ 160.67 446.74] endobj 2821 0 obj [2814 0 R/XYZ 160.67 391.4] endobj 2822 0 obj [2814 0 R/XYZ 160.67 366.37] endobj 2823 0 obj [2814 0 R/XYZ 160.67 245.03] endobj 2824 0 obj [2814 0 R/XYZ 160.67 222.21] endobj 2825 0 obj << /Rect[407.4 182.96 477.39 193.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:target-exists) >> >> endobj 2826 0 obj << /Filter[/FlateDecode] /Length 1162 >> stream xÚÍWMsÛ6½÷WðÐ9S!Ä ÀÓéŒc;M3™:ã(§ºJ‚EvhRÃqüï»À‚))‘[_r"‹}»ûÞ‚ALâ8Øîñ{ðvùæ4Ñi°|”"©œï×…TÇÑßËoÞÉq åŠpÄîûÕûËOË›»¶ð2-¤Táòý Î|^FŠ…—^GL…—w×8{ûöÃÍÕò3¦ñhyA'\ &Ý Ø¿g)Ãuj\æžxüÏ÷ámß]åYU™’d»©6Ñ"aIøëCQšßî#ܼGH%TùíÑBPÖ»hþ™ª…§äa†Ê<á î»]ßáx1ây¿Ø]I§ÚO°}ST[{ÁS”¸£º±w¹ÁÁ=KdiÈqÜ`ÁÑô…!X“‡²oóc° #LO° a­Å°væŒÚÉ ÂÞ¥`2ù¯î횢ê|^Ú^¶'2£5áÉÜY»Ïzã=Ëð<‚Œaý¾÷4†Cèÿr¿¬Î°Æ `|Š€)í*KÓ[LLjÀNT˜VáC]–uÄÒðÉÒÈlÐÖÊÎ<Ïì–Ee|¢/Ó4ÍcQe]ݸ¸7KÇý$ðKFòS-†=@h[ǘäm¬Á¿¬+êjjãH?MHŠ&>Y4Yc*ëºÏc½‚P&á?fݵ‡Á—1aÌñc½?lz °K „hZjñrÂÜô27‡–YL„:g9!t(‰›èwcvi &´ÕdY; ñFÝTQMVˆ)ß¿{–rK‚}ìµýÍ×µÙ»$N_÷Û•}N —ó¨«ÔæÙFêï„]¬˜Á˜)UL;w)âÅgßÚÚ·£ÌÏ ía°ÊZ?:ØmÙÓà3ÞB›Jdþáí烹ªÞÃ’Hž¡ %Ò”›öLú¸àDî³ÇbŸ½»¾Š€9]ñh^–Hž "èëùÍx i e–K3ÂÅ ñz¨#@Pxz*¥B²#* ‡Y…߯<áëCS?ÚÅl»Ý=n„ã½ïÌñv"wísÛ™G‚}Ä%8ˆ‰žva/­2|[Ê,׳öAAI‰~IïØÕmqN½ MÈDX ãC_JÍ#4Îb`p 8vê)7™-Ó³XÚ%®˜Z ú1‰Y“À°×_IMÛf[s¤Àªy÷Ò8mèëgEµoòC¶&hì«?ç )…’V[ö¬¤ž•_)W}Qn²UùBf&±" ÿ!™âü¥: j~YQûn8×L W¬¼îK«µšÁ=Ã]Žñƒ—`˜v7/»´ØVYéçòÌÈüDÖlM7܉AÓô´ÞP×5Èn‡ƒÑm+ЊzÖ@βô+FgàeõÛ|¸‚Ò¯ìøÙ«~_­ÖãÒ¶_ÛëRŽ=|Ž÷AäP¢ÀˆþR…·&`a¾mמ.  ÂÔl—w™žjÜ^ˆÄûA)*“8V&6*ÓÅk•iŸ–Ãþ®æ-àŸ$Æxçžòo§è7ãÜ-üÌ% &¹<ÒP[Ï?º üô/âCß] endstream endobj 2827 0 obj [2825 0 R] endobj 2828 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F8 643 0 R /F5 535 0 R >> endobj 2815 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2828 0 R >> endobj 2831 0 obj [2829 0 R/XYZ 106.87 686.13] endobj 2832 0 obj [2829 0 R/XYZ 106.87 668.13] endobj 2833 0 obj [2829 0 R/XYZ 106.87 651.67] endobj 2834 0 obj << /Filter[/FlateDecode] /Length 1354 >> stream xÚÅWßÛ6 ~ß_‘G˜UK¶e»oív7\1¬Å.(0¬{Pb%qçØ%ïÚÿ~¤('Î;dÝ€½Ø´(Rä§O¤<‹yÏ63ÿúiövñê>Ÿ•¼T³Åz–¤¼P³(Iðµøñw&$|åyÎ>Üý:"fá)؛LJws˜*Ùû·ïî~X<ÎÿX¼{uŸÉ‚«b“£R ~v·ðKf3!x™MÖT‚ò¸¦”óH™²Ç­iš©izmó„,?ÌeÎtoÚ¹,˜£àºå<ÊûlVƒ‡<†…B„ï—8ç" Á“<Ìà>Œ¨P\e³ÂŒiÙÅÖœ;–‚+ÌœøÑ Mð!f>Äy”f [u-fâtÝZÌÁAÕ40¯†ð é­i|9Ô«ÃàzhýK:Îþš ºnô²14K[ÊGå\b>´!õz¸Ün§ÛÊRê"åe:Íü·y‘°n˜G²Ò- •ù$³¼5ô¥›Z[cñ£`K å+ÊŠ™/δUÝnHå¶µ%‹É–ÑÀSí¶4IWU™é†4;㶈ãT*ö&Ð%£=ä5N†a¥¤L–”2¬ÒªÑ6ˆ@$šµÒ€yEƒ J]G ;C;ö#€¸×XH®1£·^‡ä“RÐ+¿ÅˆOcE,q¦Î‰ÐMm':‰øÀ§¬„³SxŸ¤’ç¬ôoâœYgœÄógIó4Á^¦\¦A?R²Ø÷5¥`)‡š„ô$½ sÙxÊã뀺¯h¸Ü~páV·­i.‰²”« ‰o„äs·´Ï@¢näšý’ ý¦¨¨cæ”q‚»! „Üç:ô}ªùJCýÐzò\žÔg(obUýc€·âYk‘«ì‘)– Ì6pƒõ¨ÎÁAŸ¤Kšªî¡týW,9pÔ û¥saºÛj7JW<øzä\$Ó3vt l ¥µÃùOú|Ü’ vÐ M²«n0/`ãËŽŠÙ½/…=)̽Û7æ{2~+(¨"ä"tÑôôÄ›^ï@ñ´[É X]F} +R¯=ÛEal2ëî⼊’Út1ì2ƒ–âÎ!U¾òAŒ%ÄÔvr-:=é-ǯøE¼W%ðT!]|# Î÷ž /O¾E™ÌØÏ€‘?Öµ‡E„ß>~¯ë‚Å!nÎùeí¦_lMºfˆG&¼< '½=‚ÓÝRc/µÌü=áJn9ÖËÍ7T·<ÖØWk›JÙ¾Ñ+OQ±ªë#}{ʪ‘W0°ÔžnúnhQ…o1jƒ]  ôÆBÓ¨Âà:8O9\ O·Õ–*äÒߌ =ÉvO#mu ã_/Ü^5×ßo™> endobj 2830 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2835 0 R >> endobj 2838 0 obj [2836 0 R/XYZ 160.67 686.13] endobj 2839 0 obj << /Filter[/FlateDecode] /Length 1557 >> stream xÚ¥WÝs›8¿¿Âo'Ïøš¹¹™´IÛôÒ$g“ÞCÓ²M‹Á¸‰çþùÛÕ 'M§/ ­V«ýøí®4²¹mæ#ý{7z¿z+GüQ<…!÷åÈr]Âüì3‘3þxõ6Øò7ä®;²õú›÷§7ñùd [\&>¶‚ dñûs¢Lãqè°Ó«³±²ÓÉQ¯_8OI°°·’-á¸ÜF–h È¿s|£@¸eÓ:þ[^´¼³Á9‘fˆêp»cs>³ß‘ÜéÌ›­Ë´Í«’ônòy™4Nð'Ù×êž`IÉ¡µpv§Xžã±Ï$â ÍþXåçüÏC „ð¸- Z<#Úi–ô;µš$µ¦J¦òv¡j"–c'`륪óô(‘Ç*³Òl–¸v?Ÿ³ªÈSˆ`várÈðÄ™¨$z^ðÈÓê•ÉReÆW ýgUQTcÇg ßnØÚsúz2]£†Âe§—“z(ÙûÛ\1 ——†þW7tÙß·±¡NÏß}2C@æGÃp;‚m0tNú ûÊ—g'l¯o¸zê°xïMã‹+ÃÇ×·'„„O1êh´Æµ› :îú-â\,ÇáÒ} ÊÕcÞG¹ós[<)pnmyö±Þªz™—I«LìZÚ™®ëZi@µäŽF5 l;b¦'¹ü„‹<] Ôô¹ð ÃÉáfŸÛáv³ªÕáfËu´‘;”M•Ú3ÈeYØÁ®¥1+Ùya†y²ÇV`~³Ò[ª2ËË9¹¥ó^ól¸åKÜP«EÒ,ž-kÕ¨ö@³F%uŠÙµ ¸¬’vñëÊ¥UÕVº2‚Ä–Gz»¸4õسY:¨c„aÉš– ™/¸í÷m¹ÌËod>#o{àäUÀ;<Ò‡îõŽp¤åzk«j‚½£OŒ|Œïwü¨ú¡Î[ŒÞá!ࡳÛɱÄì ªY±àÏ‹Ú?ö”ìty¨ÖVEßÇ{AÝyÅ \îøýú™©BµZè§íb€lÚÓÝài‰nñ|vÇÖe™I+yKÔÜÌúey­Ò¶ª7wcô/X>3ŒF$ަL[žìJ=¶ûòЗÆ$O²¶Þ9Z»ž1 Ë•¯Z%Ú(éh€t¤Áàj¨xR€Dáï™ -j…à«(šš0„‚nÖ”N¾#3`ô 4»L¾ix=!²0IƒR¥àÔ¤³SP_D¿‹$Ù×uÓ.KSKÐß´›‘øZP]¾÷ŽÀ,mîÆf!»0|G"È)š!MJ£PÕ…xoÉÏYgçÀ‘®írÙ9Dñ9NâèÇPû ŒØõÿ!e+Ì· „¿fÓ´jIS[u)) ƒf½Z‘muGA‹}m…ßY d´¸Ñè”¶Kñª‰ž ‘ A5¼‚lÑÖÝ×\¶HêŒ 6JF¯KI^R»HLQ%yÑ5>2¡2]]«¼FdÐ*NÝ ª:Íï‹M×0VÊÍ ˜òž8¨ :«Ž–³0è¥AYwÁlWþDa_@bWõæÙ6sSçýNÿô ­–ˤÌ,pªaéÄÃè×/@Y>WͳW §4¥&”: ûw™¹IÅ’vüþ”¾ò˜¾ÿä¥ë$íÝ ötÀoó¤ü-"¶ª©Yå™é¦m!ª‚êT‰ébfÀ<¯“eC[éÒ[š´ÎWX»‘ ÅþZYÇ÷* m‰þ owH6À!€—U‰‰;àÂJ! ôZEo+R¹kN°œQy@*6Z¢éªmNøyWq@`cJU/š€Ñ¤€*–™b¢Û±Á§ßk‹º 9Þ¬PìçÛ¼+óZé+ ÞÎü¨j½BÏTëß/ݨ4#hTð&(i2Ë1Oø°mô„Ê—<À;m^öO¡!÷Þ#rƒ»]O« ‘w;Âs·þèN ü<û¢s] endstream endobj 2840 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F8 643 0 R /F11 1186 0 R /F6 539 0 R >> endobj 2837 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2840 0 R >> endobj 2843 0 obj [2841 0 R/XYZ 106.87 686.13] endobj 2844 0 obj << /Filter[/FlateDecode] /Length 1529 >> stream xÚÅXß›8~¿¿"D]\06„Óé¤n›žZi»U7Wé´­*6@âÈn£ûçoÆct7Û{èKlücf<þ¾™qfó¼Ù×™nþš¯ž¿Žf1‹ÃÙ*Ÿ‚-™ج^];>g>›»Q9ï—æ¾ï9á×w^\½ù¸¼šÃRî\ž¿]¾\]Í?¯Þ>-za|ÁÂÅÌ#Aq@ó¾×-p?`‘˜¹<Ò#°ìùXŽnIʛ͜GN›Õ›¤$Ýw8ÕM¡6 ŽŽÊ©mÚd“&uj¾öM›UØÎZUÌ5 5d×—,´‚ó=,‰¤“fy²+Û3²eÑÙ"9[øÆU%ß²±±œœ ®Î/Á ¾½†êîIä@wÒN¶JÆ'l­«'*µØª¾¥E=¹ˆùâñ½ëÛJ¥OÜÛYÜfÍä´Üc1?ao^lÒ‡öëàû  ‚Ç¡³G©~H§Î’²ÜcÀIˆ4Û*šøQG# … %\ z×%1Ý¹Ô W¢EÏèqœ.Pj“Q×Âò >cÏi²¶[2ª³ 2güûjùå꟫ÕòâËËË‹‹ï^M‚ˆk6 M,Ñ7Ù!ã‰9@ðO\FuÓÒhšáç¦hûtÔëöx8µ«ÇFú!gž5òòh^+5¹ié±ÀÂU”£%áÀzÏg\â)Xìë•ÿN”y,²!e{¯1a€àÂÑ¡Lzf¼huÄÝÀ èPøÁbæYÝIYXÏÞ“_Ê”bì¶6ñ‹>›'¹iT¹kÓ·I{kîAQ»ÞÕu6Ü 4ÍÖ­ª÷ów¦Î‡ú1Ecñ¸¯:ÖO½ES®ä¹v+ìHçàyöçgú¸v·¦—%éŸr­Ï¤x(“eûn³F"©c§? á!CSìùÚe8²j£C±o½Ud ¦àPj+ô”khyóÌ­ž¡¥†ì€&jkŠ¢²îDÎ ØHV}hÔGN³¥ùu‘ïi¤%•¡ƒ3 PYMcäFN¥ôúÔD"jq·f€Ž“vy¶6=ê„СÎÒxäëˆ÷¾v§Ù ªKD{jMsçÆØ¾.¦Yz6 ù®,i¨Ç0íöS°Æó‚“ÁjSò@Mj‡Ñ~wê Øà<ï°]t½;Ókê5uRJX‡—qš bÊ1)]Íð¿-9MÆÔ’Ÿ!¯x \ƒ<=`.–ŽÛu‹ t’ JcYÂã9§ÙÝãùåP¾Æv"/ˆ™´åOz´ÒÉ`‹ÐstÑh"Ä} ‰ËG´¾hIS‘›¶5Å@ %šcKÀ}ŠÅ°ôœì{Ñ´ƒDlX ƒ•ª‘>"atÁ1ÊÈÐi ©®MßûšU8„‘RFš=T*÷¦`Áî0ÍóˆëȶÀÈÆ¡ºN° óÍ.€)(»ôªŠ`•5IWc¤Ôf…¾u³­ RK‘V#D<’ÚÐîÐòÜÍ'xãÌâæ¥Ú¢ü=%ÌÎ I¹ª×ÅMi£ª¢(µQ¦ØÙÖªÚ¶Óh¥5¸(ïÜbbøÕÑ÷Z I4~Íéºa Î*½Jt…ÕÆ’>𳘡•h;(hºwG¸·°¡~ù}[&…z›´tZ×o“­ÁÑl9R|I&åÐóFXz~˜×Ê zÔÕ)1éÚ­ÇÅ!ZëjP“œ& 6LK“‰}?¨ú¿ª ]F“è†pê®vŽNÕ^ö‘K:‰f¦ˆ£j›÷—¬“÷;E£ô©ñBI8®­Ùe¦¤,ò¾–Ô!(ŒC@?5¥Á¹ dò¸ªMÊÎidîMšl:ftñ¡Çphšöt¹Ôu„}h2YžÄä×XÚXÊÜkµxñlxÎ_Ä繄TþjÒ’¨áÑê#–6ñ}ÐÖÛw*ùt­ÌßDœiGÿ Êjëx¨4Å^M†áUy›pƒÏÓªµî_…ÙrõÛ™Gê endstream endobj 2845 0 obj << /F7 577 0 R /F4 527 0 R /F10 1169 0 R /F8 643 0 R /F6 539 0 R >> endobj 2842 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2845 0 R >> endobj 2848 0 obj [2846 0 R/XYZ 160.67 686.13] endobj 2849 0 obj << /Rect[341.85 396.14 403.79 405.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:test) >> >> endobj 2850 0 obj << /Rect[341.85 352.31 403.79 361.23] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:find) >> >> endobj 2851 0 obj << /Filter[/FlateDecode] /Length 933 >> stream xÚµVߣ6~ï_Á#t‹üãJ}Ø»Íöt½ê©•Ò"<½uT-G¢áA["jWÒ‘ì…«†ž¨éHg6#HßàÚõÛæÜ/J%"ˆ#]¿W­^wX®hJ—AzÿÇäœPî®é×Sˆ†§¡õâÃ…¦“§¿^x³ãoê,ºr6-`9„½ÛÜ-b I"uËv9 º:Ø–êÝÞŠÆ0µ•µuÃiÒûÑ~q>šŽ%~ŸM¦—!Ó#m¼Uf'&ä/º”ð?A©Y¯KÍoVzäÑèÐcÌôoêäÆ{‰„üY°+ëí’ƒô‡XÀ—,çÂÿVÎ$!BÍrþár^œ§ýé_¢~а endstream endobj 2852 0 obj [2849 0 R 2850 0 R] endobj 2853 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F6 539 0 R /F11 1186 0 R >> endobj 2847 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2853 0 R >> endobj 2856 0 obj [2854 0 R/XYZ 106.87 686.13] endobj 2857 0 obj [2854 0 R/XYZ 106.87 668.13] endobj 2858 0 obj [2854 0 R/XYZ 106.87 493.74] endobj 2859 0 obj << /Rect[319.26 430.92 338.98 439.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.10) >> >> endobj 2860 0 obj << /Rect[351.35 410.91 366.08 419.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.7) >> >> endobj 2861 0 obj << /Rect[386.46 390.9 401.19 399.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.8) >> >> endobj 2862 0 obj << /Rect[339.59 370.89 354.32 379.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.8) >> >> endobj 2863 0 obj << /Rect[265.88 350.87 280.61 359.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.8.9) >> >> endobj 2864 0 obj << /Rect[363.64 330.86 391.1 339.28] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.10.3.6) >> >> endobj 2865 0 obj << /Filter[/FlateDecode] /Length 1251 >> stream xÚWËnë6Ý÷+´”šßTw7¶s›"È-b{Q4E¡kÓ‰ Y2$iþ¾Ã‡ÞrÚ•D‘ž3sf8 "EÁk`_ƒ»ÝO÷< "ØÊÁS8 vë?ÂÕ[r©u¹XRÉBLî~µ;’Ê숂%‹‘"vñÝ5ÍŽnééšê´È+3äa’Ý˵N³´Nue,›G€¢¬‡€0†0·F1Ex±Ä˜0k¿Nsg ýöË·§ßÝ{”¯º®:Ä(ÁH9;»7 ‹) Åù’éÚ*]»—âdž,üî±¶Tk ƒ%ŽÁ¤±åÏØEìW4ˆ¬é4?d×£vöëǩȲbAdøžæ¯È­±%æ @>9‘c„•?q­YRjd®ßÝËå­ÈD„fH†¸^­¶Qê‚‘UÇp®RÖ,Œ¢þ´à¨7û²˜'£ˆÁ4†øõæ~é—@Ø?.bîÆ\FL ¹8”­ÃŽú”\³º ÓÑ/øON*BDK©’B²¿ ¦ƒÙYZ\ai9NÛýÝúáy; IŒxCã¡‹; ‡û˜–€¯(?üWû’”ž˜Óaö¥,K.¿aßmŽsD GÒã¨ú `ægYÆ‘að¶«/OO›çI¼8âm¸^—yŸ¨‰Öe: u~ÔùÁÓ­IžÛrLgC%â { 2ŒÈ ¢°Ø[0˃ DU­‡§Õã~½™ä7£ž^™¾ ÇP¯ŒvDn܇IÄù`Á\,‰©}·{^OÎAÈbÆë¤‘—¼tΗ}烲ʣ.¡Ö8jå5ÓŸ¤LLŒŽ—Tnê q„(ÉY)õ×̆BQSËûÜîöëÆR„XðHŽ@½ Ü¥Xpdl“ͳ`kl?*S`ì³ùúð4v#(–ÞI«â|†Ë§òÕ¯ðÅÃ)ÓÑ×ÿèõ־˜$õ¨Lûµ¯iž·¾kr4éÕ¢)q%áo“&#ÒdŽ4iIo÷«Õf;­<Å|†6õ´émÚ,LÇU§­¯0çÍT×ÃAWÕéšÍ8‚´¤ÿ3ÈLšK¹ãëÆ#¾&¿ÝÍíÇýó$9X¤Ÿv±–¡Ïáa¬G¤—Ê)I³Êò„@rIÛKÄqÛKŒú˜”MfvÔíïdÙ^YLj¢{iãc×ÊÀdÂ11_*_PééÃïl›‘[G;ÆfÐ16K@Ý–‘)7Àc‹Í².ˆ[wur›î &uóbfºm.–6Ïxƒ )¸ç¯ÙÜÂë;ÉÙ·ôçøO‰Öî8sCSc-+§œ å¡ÃÓ䮚ܮÊSùÑØž¹Ùeë¬Û>áí³r»ŸW«”¦Pº•E9m1‘š¹‘é@ ò ÷™69:øû›ÎoKúúsš'µö:‡&> endobj 2855 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2867 0 R >> endobj 2870 0 obj [2868 0 R/XYZ 160.67 686.13] endobj 2871 0 obj << /Rect[368.52 587.72 474.44 596.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:BUILD_SUMMARY) >> >> endobj 2872 0 obj << /Rect[259.68 508.61 276.9 517.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.A.8) >> >> endobj 2873 0 obj << /Rect[196.62 494.44 333.33 505.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:find-build-targets) >> >> endobj 2874 0 obj << /Rect[316.39 472.75 325.86 481.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(appendix.A) >> >> endobj 2875 0 obj << /Rect[175.93 446.62 238.59 457.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(obj:Target) >> >> endobj 2876 0 obj [2868 0 R/XYZ 160.67 432.66] endobj 2877 0 obj [2868 0 R/XYZ 160.67 404.29] endobj 2878 0 obj [2868 0 R/XYZ 160.67 384.37] endobj 2879 0 obj [2868 0 R/XYZ 160.67 243.66] endobj 2880 0 obj [2868 0 R/XYZ 160.67 225.49] endobj 2881 0 obj << /Filter[/FlateDecode] /Length 1992 >> stream xÚ¥XYoã6~﯊}Šˆ+ºEìnҺأHœ ‹º(d‹NÔ•%C’“ Ðß%K¶ è‹9¤†Ãáß í,œ;Ç ?;oç¯/•“²4ræk'IX¤_J–Àüý.O#ïÏù¯¯/ã'•,NÀ|~÷Ëùoó‹+vH—Kæùqœ¸oofÞÓÚåͧwóÙçO×4=ÿdÖ•{3Ÿ}˜Íg×$=¤ûqÂ8hsnŽ`FÚ_—ç³7WoßK…ãsÎÒÐ0m›¢êÊjá¾ú~~¯=?Ê]îŠ2G2t×YQêü M^-ÜRWwÝý0]Uîv¿Ëš;ݵôéÒl[x æ“«z׋¯êŽˆ¥¶#È꾇mær{óú‚³(¦AÅÏaï½n<_)"7›º"z×j"Š–Æ®ÆQº¹^ˆ0®ìWØ^à|•uE]MX…»ô|‘¸–sK“f]7ÓÚã½¶ÇƲ>W,UcÓZ3Ê8@ý¶¥ît ~C°—·åe”ºú[†_Ï55òÌžu]–µ'"÷±¨îˆ³Ù•öãcQ–Vt£³Î®f4Tú îþNóN7›¢ÊJ£g0V1/Úm™y"vŸè)¬iín³Éš'Š¿zMã𵿬-Àæv»ìq17²O‘ÆL¡$gB™ã)Ü-wÀ”óèH¡˜àÄ(g 1“á°P:× w²j…]ß|üx~õå0r0„MºlŸ5E¶,GJ:*àLʉ°…ÇŽòK¤œÅ“|.ÃøØÆßÐüݾò‡bÈ ’`u?÷KÒñ™3p„J÷ ½Vï`A“×4š|¯E{O” i³<'pÉXÃxj‰Ì‹F¯ºòi´ xŸ0þêf Ó¶å0rÿNâ[@"+Ôäž6@ÎNØ»³£|’ åÞÕ&µð7vsZ+rS±¦•ýMañÑLš¯8ƒ4,ŒÉ€A»ð ‹T˜Ž÷:d1€"ucϬhe¸îë'9ÃêMöU7«CW©ñÐÚÂmµ¦|¸cÀŒÂc­èÓÃ΀KF "€*Nl<‚AÀD<Ögþ\Âq²cG&Ã{¯n‘&,í-Ö»êPwÁ-ùD¦Ù$FÜ]ïJ¢×ˆmHÔË.+**IŒßa½ÐXô†)ooGLMnG„^¬×4BÂÜ § ÜOu§ûÏYgC…0·îºí®#:/06 X,ìK`7vÆIDQ³ÅgÜŸˆ*û¾O‡ù?Z6 ØÈ²õÖ‘J÷E ÎßÝg[ÀŒ±Õ!¶$”m¡"ÆSŠ˜ñçP`c1þl…Aè#ºÓ¤·Ò&™!ùòÝ ‹.-1ü «µ2ª…¥5«ò>¯#…Q>rºÐø¶ BáÇŒtw©ÕKÓeàj•m,ej në?Ñ¢{ù­-Ã+Sµû“–öv4?áJ&{›“_ÖE©],NúÔE馲!¬éÚð,HÆ×~¶Ìñ@™ bèÉs“jG… ’¼Wm‰máê' ×B5‘„6äÊýbÚ@7mÍ&ë= ƒoèN¥@E´R}j"!Ž£ÅB“š¸sµk»zCßlmG’š€;—ÑuC "Õ¸ñ K  ›˜ Üç>Îe …·Ê‰xð ç(ñø©\²ð^.Àx/—ñ^òÇì«sYfwíó®Àº.šc#·Ñ–EŸ„Tt²({xÈQl‰m|Ý5VãI‘æ‘él°Hó1&O”I™ìu¯ÅH(¢/‚­IÁ•9Q˜dBHÀîð,xhac «Õá1"Áîé‹@èº11 ¨´Õ¡äFŽoq*TÌ‚þx7àð#%¶–CÀä>Cˆ6í7ö£ÐSc‚]g×oj =€Â¶!?gí ‘hÂÉ^ i4)‹J“ŽG= téÒté" F]º€&xŒ†.=¶]º€ÞceÕrô=6@kK ÃfÀà»F·¸qw™Ù£vUiƒ“ – #²ïíÅÕÛÏ×G!)pÂ䥧M%x(šºÚ ¸Y`Ò“ÌõKùQ3lß‘û¶›5Lhi‡GÐ9ì÷uõ@kV_ó4<Ù.3Ô¿¶}³ß[Êîš4dúÛ¶nº—aÚ tî#âFn=(€„I/ƒIDX‹UoiÓÂ} ‚OUŒ^à<#“Ù©xˆža'Óü`$㌾Ý[aR#áÚé4É(¢h‘  ©5=mM÷­.ÀÛß¼ô Ãï«}׆î1ÎðXá)ÿ hüú‹Yg’A8vB®FuZ òº²/Y£,¾L{ô Á(Û» ¥M×>ƒ3‹Ï”ÓŠEbØa¢ Á RÙ*¼&ð>‘Þ\ÆC x¼£áE;20ža´Ým<Ó‚¸ØdãI}±ÐbTÎŽíÓ¿–ìï§£* ÔÇÂYï)®M;$t:O°5£þ¶Ò[705qc“-B ´‡±'.X#1ñ ìŠ+Ö®®?l›F0“@CŸËÂò-ÍÛSûǰ²?Xë#;Äð¯‚5ÓKB,7/4CNŠà,éËm߀}÷/œO± endstream endobj 2882 0 obj [2871 0 R 2872 0 R 2873 0 R 2874 0 R 2875 0 R] endobj 2883 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R >> endobj 2869 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2883 0 R >> endobj 2886 0 obj [2884 0 R/XYZ 106.87 686.13] endobj 2887 0 obj [2884 0 R/XYZ 106.87 668.13] endobj 2888 0 obj [2884 0 R/XYZ 106.87 649.16] endobj 2889 0 obj [2884 0 R/XYZ 106.87 553.22] endobj 2890 0 obj [2884 0 R/XYZ 106.87 532.32] endobj 2891 0 obj [2884 0 R/XYZ 106.87 444.93] endobj 2892 0 obj [2884 0 R/XYZ 106.87 413.82] endobj 2893 0 obj [2884 0 R/XYZ 106.87 393.38] endobj 2894 0 obj [2884 0 R/XYZ 106.87 393.38] endobj 2895 0 obj [2884 0 R/XYZ 106.87 393.38] endobj 2896 0 obj << /Filter[/FlateDecode] /Length 1773 >> stream xÚÙnã6ð½_a}5W"E-ún’ÝhºØ‹u›I´«Ã¥äßÎЖd‘>i8Î ç¦&±ˆãÉíÄÞO~¹z{žOJQf“«›‰JE‘MfJáçêôï(QB‰é,ÏóèìÏ“ß../.ßOa?®>œ! ¢Ó³g—§g—ïþ¢õûO'?Lÿ¹úõíyºe, ‘“˜˜–9îOή¼x=IQê‘ü,… ò¥PÓY’È4Z4«ÙýTÅ‘u}Õµý˜I±¥c¡õdVÄ"WžÇs:NÍ4ðâUò—:,å|ê™&µ±^ÀãrZýHŸ?Wµ·û7Ÿ%™HÕd&•ˆSÏëêÎÑVg)E¬3Öu>ßg—KQ2áͺ] t£´똖€ëéL‘¥Åº·K„t4tL×5+ã,!»®gÜíÝOeÎÖõv˜%1–cKôþ–=E–æÑÅã$rvX;¯ ,bú<ÜYÔ(–Ñpg 5 ÿ‡)¨‡ÊÄñŽ@`ötŽÔ„sößµ©ÁöiRD†P­½5CEçéh‹ðº™yÍcÒ™¢-‚b.Û蕽t4—:wý@XR`gWÎöÖ³¼Vidø´5®®ÓÑEPO©€lIÌ Q¬¼[º¾k­ƒÖh“š£ Ñ;ÐÔ=T½/'NQ_fÛÌI9sN-Þ°µïº¦½>OK4îË ””¥(rÏëÔÞTÛÃppQ¢ì:$œþFœ'¥ÈCø0ÝgX&B˽X e)xeÉê¡É‘¸s?Õà W™ëšöT´2½Ï¤ ˜^c2Ì8Òe&¤õªAE¬ªˆ>O 9bBb-ª…*„¬J6böÁ­BbA·&,Ê tÕÒ—édtÓ¹f߆;ÑšÆþ|oêµÝ·ž–BSà Š\C*ÔjùÖœižE»rU¬Ÿ  _Qø[ך1« m]ãÎÓa9K„ õ¬kÌ×íT,Š /L /ø”ü¡âTèl|W° ŠÅnÖ#_ Êk‹€7›¤Æv5TÍAò¤B¥£ä‘%¤Ì¦ëqæœ=š¦j}=P9K ù ²íÒ¶‹'BÞ:³º{9CU’ ­¶½5a9»ü*Û¿Ábä$[üÌÔõ³{+×1ʽ˜ÛJASJCw>ÔãníÐC’ÜyU[‚Nœ3O‡ejªú?ùeGùáõ°à¾ŽåA3ç£ß<8;8é Ô`¶Ñ§u‹Auö¸°«ækë!æ‰æ4Øñ¯,ezP S¯ u€Þt7ô­šÆ.+3ð¾¶ngjîú j/÷ð@ÝróÂBZÁ”‚ê!$ÕkXùÑ®Åâ‚ÐfHÁ )=TÃ]ÅÄÐ7e 7\×v|¦ó]rÉ||E2kˆÈÌ»‘j®›mW:÷eGé"ÐÝ’XzöÜòtPa5fô¾Seã{º/= ÈÔ=‹Ú\G|€hô©U1 Ø1PEÒqŒM^™ÅÁ%X½,q¿v¾ –h3D†*Kö)G4ñ„Ž÷¿¶ŸÛZDóq¨˜vsÿƒšPq}¶v±ì’nµš.ÆÙsÉOy$9|YÙóE‘ }˜ ²È#ŠÈ"ꫦª{Cw¸^„®økWJLËÑ~ÌG<+Àh2/wƒÙRB¼H#/Hr~úþ! ¢Ty7ã—EÉ£NÑ&÷ùæy«¨í:ûÅÇÚˆ%üá0 cÓ«¼ ‹c^àb¼çˆ$–"/³"M·¥J¥š AØ‘éu`Š7ˆ‡íÇ0«©Bì”',Á@SðH¯ÀïÇÒ Ð”HéÃQµ57¼¹©fLæ'»Ûo¶b~f|rWDÝ™þ°µX TvTA•SAC€è`ÄZW5£xlìÂ¥ !–T#-<­ƒäçG‡lOÁL éÐwk·8"8:ÕÐùº¥y²F€ÂxÆzˆ³Dó€@Ð1_@·ß³èƒÞ2.ö^eçS¬Š]‡UÛ4«Úúy8Å;#ºÄ? ßø¤~": {ÜXÚÚLÄ¡XúçM†Ï›Íˆ„GFQèIè }8%ýSxß@øÆ†ÇÍ­—¦ñïþ<A endstream endobj 2897 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 2885 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2897 0 R >> endobj 2900 0 obj [2898 0 R/XYZ 160.67 686.13] endobj 2901 0 obj << /Rect[394.21 518.56 421.67 526.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section*.17) >> >> endobj 2902 0 obj << /Rect[440.14 516.35 551.98 526.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:filter-proper-targets) >> >> endobj 2903 0 obj << /Rect[159.67 506.61 197.37 515.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:filter-proper-targets) >> >> endobj 2904 0 obj [2898 0 R/XYZ 160.67 488.89] endobj 2905 0 obj [2898 0 R/XYZ 160.67 464.12] endobj 2906 0 obj [2898 0 R/XYZ 160.67 370.24] endobj 2907 0 obj [2898 0 R/XYZ 160.67 347.69] endobj 2908 0 obj << /Rect[481.79 196.68 501.5 205.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.1) >> >> endobj 2909 0 obj << /Rect[297.24 184.72 316.95 193.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.13.1) >> >> endobj 2910 0 obj << /Filter[/FlateDecode] /Length 1549 >> stream xÚ•WKsÛ6¾÷WhÚ¨™!ðåNŽc7'’ºÓ¡IHBJ‘*q2Óß],HŠÛ¤X,±‹Å÷í.ó¼Åva^?-^­_ÞÈEÂ’p±Þ,★rá Áb˜¿þÍñ“xùûúç—7Ñ “% Ï,_½¹¼__¿_ÂÂñ[ºQ;¯nß¾&ÙÍÃÝÕúöÝÝŠ¦—wF.‡õíÛÛõíõŠv=pi{—GF6ºF5ðQ œv§H=Ô8[gruPe®ÊL«Æ=ÔÕAÕ§»' UgO8wU«p{îìª%ç%õÑ<ë¸á´]0ÊuW(Õê¯N×½O.r]nÑòÂõÁ?OÀÛgI`¬Ò p*kIò´tÑ親­Š¶ YZRÔ¬IsU¨Våì4$Üc 7”d’Ý¿yw÷ëXãÒÉ »¡sè–øFçòþžÖÄWà0áá!Œ¾#ñeº·£js²Ô¦õVµ4N‡Bgi««ÁÚã„uèûG4þ¸4Z~ÀÂäX³Þ“–kmöÜ5÷kf'Úk*î³0‚WÈ„¤ó „_ÂE–æþqD·L£3 3¼èëæ{@¡i›®ÌL ÌæÏº(hT«¶«ËѤv È#ç3!ˆ{!rñ($i™ÀE‰‡Ç ž!œè’„ižk2lT*Z­UZ¤*£¸K–H„+óˆt7Ë–aoιSsvøè «¦ÑOÅgZX¶­ª!öF”0)áú?âYTDâR:R´¾RÙë5d¡…0úˆ[Ïc"¦ä#&ŽuEñD£1(L2C˜0ONt7½²7æö;ÃJì1I§×7:âsÉ„@\ñQìØ`aïkH©\†ÌKèXp(Æ—`aäÌì|ÏZ CÀøÈ2Ùß:FpA¯õ/ë:ý<Ï­2¸“ýôF–Ì+HkqeÙ1Smò2~û¾+[½Wן2uè5 )ÜZ@ì£×çü‚¬õücr¼‹Œ&gŒaÏ#Ä~Øgh¬—1à"!Bß©žŽó-(¤ æ@n¦SH¤$|ÖíŽvUi†õÀÎ0ÙáÛ¦†…Ã3Ñ„´)è+¥ˆl3©$âÌãö ë;jØÕ¸ eB:›ÊR~?Š„{“l¿C8 F ‹ÂGDeîšâuLŒ9L&,€|$bŽ)Ãbr£Ï¾¶øÜþ_l†6šÛ .W]–)•ã-áôo‹Öàš9ÛÏáÍg‘èѤçÎ>éâñBÒ¢¨0©=c¾ŽûÄ ›®Àƒãá"Co\5ÛÓ°­¬¨¯æ8QŸÒ½.m9ÇL01IûógˆåÀ™í©Ó@)ÑSjw Ö·0qJâ*ÓxñHcyÎóNg¨¶#¥á"eä)çá=:" Ê€k‰=4ȳjHkݘÒsM r%gÜŸ4i£\]6ªlt_3lcçñŽSȈ“Sáxê55[Ü)tcÙcx<­—¢ïï`ùÙ˜®ígxiv¡A{M³é ¨zPϼsɰ‹•!°54>h¡Àï(žú(ÅœrðÚÁª+l ÍËLghÜî” F¦\h°K{©\rl±síS]š²cì"p5«ÊM·(§‰+3É͇þ=ìãÏÌŸÀ«‡««ëÕY«é}«ù8ÓH¨ÿÐÜÓ9óã>iùǼ¿>ó5bÁ¸Ê!¾>º 7ë‹9W¹„†0™h`f”Â;êøÌt,$‘ˆ°ã¦Ã%L‡B½À”˜î~4`ÅË’ŒOν©ú„e´yó-‚¸êj’Ò‰-5§×Ši¿Õ»_Ò?Õ;…Sîyce£6—öÕæ|­5Ž€GëFØíñO ዼ£Ä?¾üÓgiKâÍÀ)<.•£±r<:º§Ï-žæÛÇåWü5MðpaÌ¡Ò$o©lWQ)úÖÖ¢³!`kÙ^ (…*·H;/œ}eÙo-ˆ¾ùÈóº endstream endobj 2911 0 obj [2901 0 R 2902 0 R 2903 0 R 2908 0 R 2909 0 R] endobj 2912 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F6 539 0 R >> endobj 2899 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2912 0 R >> endobj 2915 0 obj [2913 0 R/XYZ 106.87 686.13] endobj 2916 0 obj [2913 0 R/XYZ 106.87 668.13] endobj 2917 0 obj [2913 0 R/XYZ 106.87 649.41] endobj 2918 0 obj [2913 0 R/XYZ 106.87 568.31] endobj 2919 0 obj [2913 0 R/XYZ 106.87 549.87] endobj 2920 0 obj << /Rect[379.23 290.26 427.1 301.4] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(obj:Map) >> >> endobj 2921 0 obj << /Rect[379.98 163.14 427.84 174.27] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(obj:Map) >> >> endobj 2922 0 obj << /Filter[/FlateDecode] /Length 1446 >> stream xÚ•WKsÛ6¾÷Wè5c" ðáNN¬8éL<™T‡vâh¶ÙФÂGSMÓÿÞ],@‚”⤠ûaß>´ X¬îWz¸Z½Ø>•¬2–Å«íÝ*,W~á°½üàñˆElí'Iâm~¿xûæúÍõÕö…·}½ÁIä]nÞm®/7×/ÿ õÕû‹w¯×·¿>%&ÅaÊâtÒ,ÃýÕf«áåŠs–I?æ, '|±ö9…·o›µGÞŸj×ûEÙÂд¥ê\eé)&åÊOFªžÝ ‚åÙ›õÚ— ûé]–-M.Ú6?,­ð–€Ê|'´Îíƒ"™ 6ä,äÆÐxK•<ûŒøÝPïú²©×¾¯UýÐÖ-zÒ“ªìzš5w4æUEÅÊ{íŸG™v†q4`å­¢çÚ5uWªU­û†ÆÛµ¦ž¢ÇÞçmOŸU‹=Ø-|)õ£0ÆË„‹µ]§pô%±w¯zœ‹p²k÷•êÍÊq %š{†7Éà@ÙÑÇÉO¸êš¡*h>^Z+Ï(³q×64ûR‚¢Ú¸eº)Ñ='ãÚ¡R®ý[Ðö4uy±XNÜ•†»Z¥sR,cާáS¬ ˜°4±ª\%¡˜X7¹'І£õFqï˃ªÕ_ë0ñÐ= 32œ{·CY$o}ÀG …º eR«‚Â{Óφº*?­ÃØSÕ´N½âpâ€èÍ€'Cxä0ú»VtG1òˆip-ñOŒvžÑ†ú{§ö†¥eM"ÆÆÁœÈ+ÚÞåêØÒ×\²8s£]qã=U_SÏ(aôy \>£l±Ïû^µµYuÍÐîTgV†´«Û¦8PΑ6ç¼·Ô@àÔu’…œ‰ÿÖ·e}¯®0]è&“IV}T½S®41ÝÜÄ<%NÊI?*nlž‹)u.‹øŠ' _à—eêå1Ñ÷r/DIò('¢$2Žœ(‰t”OŽÒ‚¥ ¤¾¼òÃBÃÅÓe¦Y?Ýùq ñduq93n+ä¨bpæ,¯©T^ÓÀˆ‡÷$ð¼(wy|ÐÛpeÈ«--(EÃÄÜ÷1òŽñlö 1Ò,§¡hŸ¢kÚŒ˜·ÕX=ª¦^>ƒ€L&%ççljØì»,I˜à•1ž¸´^ö’q ±}0—é,ç•ÊľW?Ž6ÔFÇò‰Â%j:CM *ŒF€  [¢¬µ6ó¥n½……z„LO…‰+ ½»¦¥ï=¦WxD(I¾®ÉTÆÎ’+>ø 3þ™k¥ ꥕œñøG|+€B{ºv]Àfy ”´9¨67£F¶‚]踃À‚ŒaÝh„:fT,C]6ùeŒÌÞµ4Q*¡„ì[ÕA0ƒXOÑ-) p<Ý=FAÊ8ô"„¼£/õ6ßQ9cAhîÜÀÊX·A“Fài¢™š¼ëVYÂä,®v¥ f,hŽa¡×OïJŒZ›£&s… `øjòÕ˜,ž¢BJ '8ö9€tœ|£€q¾dÄ¢525=ÝiÕò¤·‡™Ì°V"#trŒ´æ—¦5˜¿ªtÄ—Ñ3£÷Å–½9Åý9UkŽç³mÊ*&~îkî섳ðt¡F»ùq‘ÅÏáS•,2.Õm*gþ ÓØa.¤s#C3l.ƒ{Ng X̰yÎ$†Öë>¹ß¶Ä±OºOê»oµÅöÏÂÐ-ÿ&˜ dþ ŒÛkóºX0`7´•a ¡Çˆžjt}d­–ÏߌQ`±”Ðf;DÝø”Çñ)X"\G¼‚Z(ÏÜ£†ð.¯ºÿÓ "*¤>sí?$ôì«¡áWZÿ2£ãÏ3¡ð¤PH‹¬šF‡¦äGè@É?ýi5à endstream endobj 2923 0 obj [2920 0 R 2921 0 R] endobj 2924 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F6 539 0 R >> endobj 2914 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2924 0 R >> endobj 2927 0 obj [2925 0 R/XYZ 160.67 686.13] endobj 2928 0 obj [2925 0 R/XYZ 160.67 668.13] endobj 2929 0 obj [2925 0 R/XYZ 160.67 651.73] endobj 2930 0 obj [2925 0 R/XYZ 160.67 589.56] endobj 2931 0 obj [2925 0 R/XYZ 160.67 524.01] endobj 2932 0 obj [2925 0 R/XYZ 160.67 505.56] endobj 2933 0 obj [2925 0 R/XYZ 160.67 505.56] endobj 2934 0 obj [2925 0 R/XYZ 160.67 477.82] endobj 2935 0 obj [2925 0 R/XYZ 160.67 477.82] endobj 2936 0 obj [2925 0 R/XYZ 160.67 439.5] endobj 2937 0 obj [2925 0 R/XYZ 160.67 439.5] endobj 2938 0 obj [2925 0 R/XYZ 160.67 414.25] endobj 2939 0 obj [2925 0 R/XYZ 160.67 414.25] endobj 2940 0 obj [2925 0 R/XYZ 160.67 390.38] endobj 2941 0 obj [2925 0 R/XYZ 160.67 390.38] endobj 2942 0 obj [2925 0 R/XYZ 160.67 338.73] endobj 2943 0 obj [2925 0 R/XYZ 160.67 338.73] endobj 2944 0 obj [2925 0 R/XYZ 160.67 162.54] endobj 2945 0 obj [2925 0 R/XYZ 160.67 141.77] endobj 2946 0 obj [2925 0 R/XYZ 160.67 141.77] endobj 2947 0 obj << /Filter[/FlateDecode] /Length 1781 >> stream xÚXKs£8¾ï¯àU± ‰ÇÜœ×n¶{*qvjk³bË ;R€ãÉ¿ßnµÀ’xNHèç×áøÌ÷'Ç<~wN_.¥“°$tk'ŽY(I°öçÿ¸Â÷½~¹Œº3IÀ¢ÄñÍë³?¦ß·|¸<`Þ$Šb÷ôþêúœh—÷³³ÅÕ|vGÛéÌÐ¥{¿¸º¾Z\]Ü!wçbaôPç,Q=EBÎba$ó€…Þ„s¡ÜÇm–¯ú_ÆvÜO˜ Iì3úМ}p›´zÒMíM”îW|(÷2Ë5­¦U•¾=x´±oË2'Û÷þ™(–ÄÎDp$†û©ÑdHé6ÏÊ}Ê^=¹º°t’ ¾‘à›E{êÕSÊMó­¦SYmOW[{ {*¤¥e-­á†¶C©ýªÞ.—º®×Û¼ ÑA.Yž´ž•×ÛbÙdeAY¦vñèMDìj ϶Ö+"—EþF«¬ oô|-"æ+ …²~z‹+Æö5Z²@öÍeغ"-mœÉY‘rç7é/à®®J p·lˆ.Š †¹¾‰Žá!‚Ø­›´X¥ÕjhEè3a:psE0à*&gÒ´² ï•Æ]¡kÚ6$3é|méieéÕ6oϮˊ&¶YñD'úÚ‚{Õa?ˆ/èÐz‰Ðú4‰„µŸ¡o·ÞýËKP)KQ™‹pX„€è†Ã-†a>_Œ¼œ¹5… ƒJ¨L´`»Ê*P·¬, Ê5­i/·UY¸¶ô­dŸk¨ã¤áÙ÷ó¡rAŒõ¬§œHÄ¡4‘p̨Ð-« ôôÅl\“`ø“Ÿµnè=(:]¢„ç!è-,²Ä­³1ŽChŠÙ>î™ÍÖÎgä¢Ð¸èÁ;â¤8aqlø\Ü|[ü=”>„¤ÄPo^4Á Ll*ðÏçrJ|ds·8ÿ1!ØJn‘nl "tô,í2¼ΠØç¹¥3W~}/“•Ï‚¶.Q±Gr&ÉžééüÖK 2µøL:;‡ÀRÑI; @—Œ;BîÜëªe8Ÿ 8A|Ù礓шSj9Íon°¿°PyÒc'„da0d×§Zv·8ႹCïq¦¤õÞ)Ž øAâ» Öç81mìZ‘ßhK¨ƒ@o›œ61†7©­rq„èÁz' •[?—[Óü`½oV°IqAæ6Ú¾Þ=ëB¿b:ë )€¦Â6"ö¥ÂbYn6¬Ú’K+À6ZXfVþ:Ͱ»*(Î]wõûÊ®ô:Ýæ8cÜ–öIž@Ì‚ åÖXeµ ¿Ñ‘^Ü\¯›6 Ò†PÛ÷àЛîà&}›ˆgÓÙìâv6èº!¢(ñq®A°A3ìöÖ,±cv3?¿5Å"Õ¥3VD)¸r¨Ç¥µ×µ¸i{¨}—Z&rR9$¬ËmÕ1—f„jGht‚÷Cò0Ê \(è[­Úº@5W£îNj[›-±}_OÀY>iV@‰¶Íz±‚èDpšzQ‚9pÔF®‘1Ô”G>T=]wØÇÓªÀñhÈOîç+‚vŒÐÒ·#,ŒÞBrm$|m_ìmÿÐÉDÐ7ð ÎÐ y)¥íl0†JÅ“L0ô]?á0–$#µ¼Ù"Rë†-½:^]Ue5*'àØ6@ç&Ïb“`8žA5ë ƒˆ#ë= “÷à¤ñ>ò^sÁqçEƒ² Ebz¹QQ10¢öÅà@×Úf©I}ÛÀ  ð(c> endobj 2926 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2948 0 R >> endobj 2951 0 obj [2949 0 R/XYZ 106.87 686.13] endobj 2952 0 obj [2949 0 R/XYZ 106.87 668.13] endobj 2953 0 obj [2949 0 R/XYZ 106.87 668.13] endobj 2954 0 obj [2949 0 R/XYZ 106.87 640.48] endobj 2955 0 obj [2949 0 R/XYZ 106.87 640.48] endobj 2956 0 obj [2949 0 R/XYZ 106.87 613.05] endobj 2957 0 obj [2949 0 R/XYZ 106.87 613.05] endobj 2958 0 obj [2949 0 R/XYZ 106.87 573.65] endobj 2959 0 obj [2949 0 R/XYZ 106.87 573.65] endobj 2960 0 obj [2949 0 R/XYZ 106.87 534.26] endobj 2961 0 obj [2949 0 R/XYZ 106.87 534.26] endobj 2962 0 obj [2949 0 R/XYZ 106.87 494.87] endobj 2963 0 obj [2949 0 R/XYZ 106.87 494.87] endobj 2964 0 obj [2949 0 R/XYZ 106.87 455.48] endobj 2965 0 obj [2949 0 R/XYZ 106.87 455.48] endobj 2966 0 obj [2949 0 R/XYZ 106.87 415.02] endobj 2967 0 obj [2949 0 R/XYZ 106.87 305.96] endobj 2968 0 obj << /Rect[386.87 237.57 411.84 246.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.9) >> >> endobj 2969 0 obj [2949 0 R/XYZ 106.87 160.82] endobj 2970 0 obj [2949 0 R/XYZ 106.87 142.45] endobj 2971 0 obj [2949 0 R/XYZ 106.87 142.45] endobj 2972 0 obj << /Filter[/FlateDecode] /Length 1852 >> stream xÚÅXÝoÜ8¿¿bpOlGµõe{ï)m/‹l³¸¤Ø=Ü܃gF“xÏc¶§I€ýã%Ûc»Ù8ôž$SEñGR¤! ÃÅýÂçwoßÇ‹”¥zq·_ɽX ÃÝå¿‚H0Å–«8ŽƒóOW×—W?,aY8ˆàìã%M.~øÁ-Ü\¾[þûî§·ïe/–'L'‹ÐŠäa„ë‹wwöp=>\G,á–ó—eª‚³eªƒ»¿ß¾ûe,U ¥Nè݃!=ʪ>dͳöfyÌꬭjÒq¬¤“qÕ ûq|R”rkU9Ù ÆnõS™?7ó¥Ü­¿oÖ,ôvùÛ7Ÿ*Ýê¯y)øäXÍ"ϰ^²WMž¤Œ+ËyyõK+Áä©¡ùÀÐ2ØåµÙ‚u_f¬-æ¬-%Þfo¿«µ=Æëõ̱òû˜;Š4†²¾ûíγ†`ã§…JYL2Y¬Ëî»XÜ‚Ä!щ¹9ÿisL{C½Ï D-æAs\s=ã‡ö!˜d%Õf¹R*øÀ$š«˜¶"Œ;³ÏŽ…[Ê›‰âˆ¥‘;’Uc…"É¢øË–Œÿ®Q‡ëJ$¨õn,P²Ó`óûDŠì2Õ½•EhX–ªÿÔ |N¿ µRÈÙCMß#¨{1×Wç…ÒþÖj ©ƒZ$AFCÓfm¾¥y‘oêŒb7=AÖæPŽYØ¡œMPÄç|%߀2(4‡²bÊ{ígPæÉwE9ULÊWQ.(Ó÷å^ÌåõõL@+~вÔ”áƒP–±E†æ!«ÍŽÖz”aaˆ2¬Í œpyY3 æ´·Î,Ì0ùÚ$ *| æØ?lWc)+Á9%KäëÏÅaV_ 3Ç‘¿3rhÞÃì¾Oaˆ9»ýy3„¿:…YËÌZ9˜jó6²¦1‡%ƒMñB+]â†Õ!ذ4¶`¼ ¨f&qwÏælâî<ák°†Gh>qw0°¬9üÿ±Ž!‰8¨§õ¬`:>Áˆƒ;Œ¸v¡ˆól¶Ç6Û¦!ÂÜ•;²9<¶á ‘qÿØFaÔ›ò+LÍãdÖÔ335h7‘%¿~-´#ýš‘W"Š™ta²éu µÕ-ôº…^7˜À1÷uvh “BW%‘«zg¬ Ž½¡ÛŠ*îc㺡ַEûc¹móªl\Án0A”öm€Õ¼ôì¹chŒeCô¼Sut–ñÛüq´Œ\cÐëÓÓ%¼=¥{7ÂÄbýìÑ€ 0³vy{1EÈbâ&%¡¿«Mû@·–ަ{H¯ï$‚â´/]OSWU;ivB&|õ@itì|dïÎù$äÞ;‹œû[ò¬mU¢ û#4E`TòºÏK ™°Î)3L¯%Ì®åB<¥ä°IÉ~¢à)‡—f"¸7-Mèâç&küG9$¬×™Õ|´Ü¯ÊA…ùë$m@EÐU]T>²±Úõ ¨5Mkï…Ñ fI‡ŽJIµâ`ЧDg/èGèh~ƒúè¨zÖÁN©èö<Ö¦ºi5? ®‚.Þ‰Ûf%qÛèpûD²&°©À#e†ÑE•wçUÖ×0¬”ö͸c¶ÝB\BLÃ# ç¾!>Šéq5Õ±Øù_NÔj9rcÔ|ò]Š"ÇÔºÀÍ ‹8Ý '÷EÞØ÷yÿƯVvî¯yòS%ì;¤mu8ú ÛÆ°^=:/ê:¸¥Lчdn(܈‹R8•9 Â!‡HX,‡ë¥S¼"¹€ñÖ8ï mÓ0ðžÚ¬ÈH °\µwÅ(õX7ü‚ÏÀKìr0º6u—JØ7AÑ2ÑÁ0NN£¹ÈÛ-cÞ‰2¿©á*°¶3H…÷¡¤Ü´Nă»°×³»¯Í‰X¼ñ€tüœ×UyÀybSŸ¶©Rv0nË4T>-èf–²§ÑéŽkOä£tZlè Ä6¾òÛ„‹ylìm®ø¶:aærD:uA¤±ç¯ÀN5}ü1TBئ¬ŒVEÞ=Ö3V‹½ÕÖ°y[ÝC ›¯ÉŽÇgwðÍí4üæ|Í6Õ/VP*`Tô¯½Ðút ‹Ð* ¹£yiZsh†!ã¤$1”Á(äÃÅÅi¢#ìj‘Aa"™þÓ÷=d¼_Š(¸ùôñròò>‘Ÿá–X_ß r¦06åðR¯³{biœ‹lóý Y¾ ¹;Ä€{&/EÝáûívÒz$}#¹ÉKê_Q(‚”5ô±¯ŽT`BFÖjèS¾´%ï¬}ðpýå¿B’¸¸ endstream endobj 2973 0 obj [2968 0 R] endobj 2974 0 obj << /F7 577 0 R /F4 527 0 R /F6 539 0 R /F8 643 0 R /F5 535 0 R >> endobj 2950 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 2974 0 R >> endobj 2977 0 obj [2975 0 R/XYZ 160.67 686.13] endobj 2978 0 obj [2975 0 R/XYZ 160.67 668.13] endobj 2979 0 obj [2975 0 R/XYZ 160.67 668.13] endobj 2980 0 obj [2975 0 R/XYZ 160.67 629.91] endobj 2981 0 obj [2975 0 R/XYZ 160.67 613.27] endobj 2982 0 obj [2975 0 R/XYZ 160.67 613.27] endobj 2983 0 obj [2975 0 R/XYZ 160.67 572.96] endobj 2984 0 obj [2975 0 R/XYZ 160.67 572.96] endobj 2985 0 obj [2975 0 R/XYZ 160.67 534.59] endobj 2986 0 obj [2975 0 R/XYZ 160.67 487.61] endobj 2987 0 obj [2975 0 R/XYZ 160.67 487.61] endobj 2988 0 obj [2975 0 R/XYZ 160.67 448.68] endobj 2989 0 obj [2975 0 R/XYZ 160.67 448.68] endobj 2990 0 obj [2975 0 R/XYZ 160.67 410.31] endobj 2991 0 obj [2975 0 R/XYZ 160.67 410.31] endobj 2992 0 obj [2975 0 R/XYZ 160.67 371.94] endobj 2993 0 obj [2975 0 R/XYZ 160.67 371.94] endobj 2994 0 obj [2975 0 R/XYZ 160.67 333.56] endobj 2995 0 obj [2975 0 R/XYZ 160.67 333.56] endobj 2996 0 obj [2975 0 R/XYZ 160.67 295.19] endobj 2997 0 obj [2975 0 R/XYZ 160.67 295.19] endobj 2998 0 obj [2975 0 R/XYZ 160.67 234.45] endobj 2999 0 obj [2975 0 R/XYZ 160.67 234.45] endobj 3000 0 obj [2975 0 R/XYZ 160.67 206.49] endobj 3001 0 obj [2975 0 R/XYZ 160.67 206.49] endobj 3002 0 obj [2975 0 R/XYZ 160.67 168.12] endobj 3003 0 obj [2975 0 R/XYZ 160.67 168.12] endobj 3004 0 obj [2975 0 R/XYZ 160.67 141.7] endobj 3005 0 obj [2975 0 R/XYZ 160.67 141.7] endobj 3006 0 obj << /Filter[/FlateDecode] /Length 1783 >> stream xÚÅXQoã6 ~߯ð£ƒ[TK²d {ê¹Í-CÑ×wÀ: nâ´Ü8°“ëõß%Û‰Ý4;tÛK#Q2EñûH‘õÞƒg~>yg'“ÐSDIo¶ôâ˜ÈÐsNb˜Ÿýî³€þ˜ýv2‰š=Š“HyYN~=½žÁܧœŒÆQûo§g(›Ü^&³éÕå NO/<ôogÓ‹élz~£µ{ç3c‡Ü·CR3sЧ¯_Ý΀„Þ³G© R˜-’yO0W$Pn^x7 ±+´z&#Ný«[0Ãܪ½¹`$ öV§`# üûјE~ c¿,²t…â;&ƒôÇõÚ¬fó|ù’¯¬ðù1ÛàÞ˜R¢„ù*_¡»_ôå¶ÂÙ:Ý<’ƒþ¦A@hlT˜‚PÂF Vþ—|ÅYûmóØá™ÉÅ@A¨oi¶¡ "¢x#pu¤V`ÄŽÂHªAŒ@Ü`ã>F l1І1Šà¡=k^ô åûÉ.D2¶9‚P A⨠U"v D""”šO/¦÷]>¤z$Šš `„ŠFÐD…“6ªŽv¹Š]®âÖå°¥ïr¶.‡Ýƒ.³˜=«Èï{>WÚ{>×zGL¢Ï•Ü ‹ˆ°øÂBxö“Öé "V¶qa¢‚ ?Ñü~j`†AÁlóruÇDô°­ÒM^®Pøm$™ŸVyz_dõþí8â"2‡ÌÀ;ƶeY¥¶öÝ¢o#!Z-†5sƒdÕ{t;n¬²E¦Xe äv×å*€RHÿ¯l¾9L=2&Ø“}û™$ÂŘJá¯Ò'3’~¹DÉæÑ ü™—Oë¼Ð¬Ð«w~¹êÑBpÂ]¶¼]åß{' "¤]Ï7¨h‘-Óm±©ñM¹¯TòNžÏ{*¶=›XD8?îó¼F6r!Ⱥl\WY ª‹ "4€ì•„9ïöÏNFîÁ(uŒ=çuö *í;TÚÜݤõó•&;nh©Ô7,TDÄmš ú'«²(ÊTœÏïFoP-¾C >ü]E\è÷£C5.CK5.¹¡š–lÜF%¬´dÓâA²A¥Ð¸rl!a‡lZmÇGr¼ÎS2ÀÈkœ"›l×>‡*ý F‚œÃ̶Ë0î6d sœíÏÑÝø4ìòŒø2R$’oñ,úy•¡˜s“ëëÑ  V;DS Ñ`dˆ¦Ñ`à¸Ý$UHÅó¬®Ë ÅwÝKª!¢°êTwÉõzèt PÊ-~ˆ¹Î?¸þ3äÅ@:ôÉÓ? ÿä¼Ï9iì:ÙlÀ ð^xIhx,PP«Ž@M.Nuÿ馇¼$S˜˜X·¯o»ú¤Æ øÞü®ÓzG¢ì‚:”Vâ0Äiö´ÞèêãEO£ŒÑ¤ŽŸŽ€ÆEê>4‚„.íœ}™^ö=ÊU«èßD 6E¿ I·‚„)ÞBÂ0Ì/B¢—Ä@¢&‘ë•Ö ,œ"(€b^´àh¦¾†}/|øA|ø{áò0¼ðô2¹¸=;ïa#;l9],r LZè¼EýE^A=XV¹®1µ`ó˜jÿÆl§¸G ›ê,­æÚ÷8×¥µÝR:5 üI]µŽÆt`2`‡hÀ®qÚ A˜æuÏWóVO™váX eëUP¶sk-H+»¢Y©ëh=6©"pµl`Ú³ye7$ØÓÃm€1í>ÍËp¸þs®Äc>ÔÅ‚H;ãé@ ÊÜëY®5vp¡˜}©b]ïÏ‹í"Ó -6gö¨§Ž:ž6ÝR|Ϭý¦Òˆu ÔvZÜ´»œì€:Øöênyýù|2ýz~öçk”U¬­ƒ»Ð±  9a®g¾¨'#:‚ë>´JmÀt•ASµÐãk5#½ßæÅÂ4hZž¢J€‡*}BY7EÁZ^£¸IUoE³`Lgl½®ng=VÓ½J%T²dž³ð»­Í¢n”+”ôzu³½Ñ±Ý¬·kˆ ûynõ&øƒÔWê£Eè»Ì‡z÷fÉ=·‹âqy°å9˜I_©â™K¤™\WäŽñ'“þÙê¿yb4# ŸØÓ›+¨ÝÚš=[›r[›rnkSý`AþzÒµÊ=6@°ûmh¶ñ–Öï Â?®zžŠ·àU4ıhĉ,¯–;’µÿŸXn¢gõƒìÊMlñqÅ,>‘Å'ì†îÈ­²nÑ9Øà3.u­||+ â!Ïë_ë0éÄðÉÜvór¹Ü׊֙ï?ý Zj> endstream endobj 3007 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F8 643 0 R /F5 535 0 R >> endobj 2976 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3007 0 R >> endobj 3010 0 obj [3008 0 R/XYZ 106.87 686.13] endobj 3011 0 obj [3008 0 R/XYZ 106.87 668.13] endobj 3012 0 obj [3008 0 R/XYZ 106.87 668.13] endobj 3013 0 obj [3008 0 R/XYZ 106.87 626.4] endobj 3014 0 obj [3008 0 R/XYZ 106.87 626.4] endobj 3015 0 obj [3008 0 R/XYZ 106.87 584.39] endobj 3016 0 obj [3008 0 R/XYZ 106.87 584.39] endobj 3017 0 obj [3008 0 R/XYZ 106.87 554.34] endobj 3018 0 obj [3008 0 R/XYZ 106.87 554.34] endobj 3019 0 obj [3008 0 R/XYZ 106.87 524.29] endobj 3020 0 obj [3008 0 R/XYZ 106.87 524.29] endobj 3021 0 obj [3008 0 R/XYZ 106.87 482.28] endobj 3022 0 obj [3008 0 R/XYZ 106.87 482.28] endobj 3023 0 obj [3008 0 R/XYZ 106.87 440.27] endobj 3024 0 obj [3008 0 R/XYZ 106.87 440.27] endobj 3025 0 obj [3008 0 R/XYZ 106.87 398.26] endobj 3026 0 obj [3008 0 R/XYZ 106.87 398.26] endobj 3027 0 obj [3008 0 R/XYZ 106.87 356.25] endobj 3028 0 obj [3008 0 R/XYZ 106.87 281] endobj 3029 0 obj [3008 0 R/XYZ 106.87 261.15] endobj 3030 0 obj [3008 0 R/XYZ 106.87 261.15] endobj 3031 0 obj << /Filter[/FlateDecode] /Length 1619 >> stream xÚÅXKsÛ6¾÷WðHN*˜xñÑ›#ÇžvÔx¦q¦íÔ=0e±¡H•¤ÆñL|±X€oÛjrè ‹Å~ß>@Ç'¾ï<8º¹qÞÞ]\‡NLâÀ¹Û9\(pVœCswõ‡K9‘Ä[…aè¾ýøãæêÇ÷7žšîî^¾¿ÂÎúÍ3q{õÎûóî§‹kÑ‹e "Ç×"™ÏaÞyw§¦‡”DL¯¼üpûñn*Kú„‡FÔÝ>óV, ÝêØæU ýÈmÚ:/°ßî“W4GhÝ,Íï™ ³ÆÎgØ©NíñÔbf|WÕ¨@Ô)Àh@bf4¸ü0ÕOYŒÛÙ{w›í’SÑÚ㪩0Ɉ”fõªšÊ˪lB)‰¥^¤n9¡Œ¸ñ±Ì¿L…0A˜0óI¹m ÌôÅõL5íS3ýòÙ¿æ%g³ÃBíýî=ò"ðÔçò¿Ì…„Ñ!ìœGn™L¯ÚaÛÚ©c]=ÔÉÁŒVئu–´fAÓ&mžb¿È?ÕI+às›Ù>å@n ÔÞJ2é¦Ï”މ|ÞxˆîÜEøüžm߃>l E&‰°vV·™£ø"„â5Ź I"ª—n®f‚$ øBÞAÈ „ÂBÈÕ=ÊÏ ݬÆï1,|*ƒ>ÎÛ× Ã³ ñtëNiñõ|;¡´A|su½¹ô8uofÑ*àDX‰·:ˆöÆÕí1iF#çàƒŸ¹Ù—Ž-,{zMcæK°ð‚ưÅ'Âyt"Ž8. ©spbæ¶ß…óA‰yW›Í<'Éf7(ÞSµææëFðæª3ºyä»û¬Ä¥iu8æ…Î?°0Á¦Ù'u¶µ{WúJ«Ø'” ½bÐÓ¹TT´À­Œüé U‡ŸºŸKüå´a™|±`ÞaÖùʼq.Ó™Ilh³T0Pâ³QÁ D_0ˆ@ÃË„tOM†HúzF ! »'¬)`ùÞ,ëjÕïjµ /ql ¿¡D‚=}¤ª8 ÂëøKÞüyáq&ú&èÏ®²ÿ±b`* ò¿{±tUÄ`îz=•(5€&ï@òSh®eCJ˜%ùS’¦3]Uþ¶óǤn €È‡¬Ìê¤Õ4R’fóffÁÎŒÏG 4êÑBÌKI«ÊgôPø¯aU:foTqÿ äžÏ„{ƒæÒ -ÔaŒ€ÍôD_éCYbÞfi‚Q6¶qTuÖØ4iR–õ׶¶¬ÀkâPuêCRO8ü¹¬À ð!ÖS~õÔî1HÃÈ'ýÜ«t|Ž;õYÕ©N5{´‚}Ü5—Xq K¶šI°÷ß{\ ï×L¡ˆCbáTrËL‹RúÐPkQy³-ÛÑŒÊP Ú×§²ÄÒR†-ÓŒ]_öG!b¨œ{¬ ´Eì®;¸¯s¥?\,î4UåNRL懧D³S‚Š.8e²íÞÝ鯛ßjSÍO-¹ž ±Pî ‰/»ø1{ÀiÝsAû¡¸ˆÞÏfBåªÂJZRs¦ow*SSs Á'vO0"†îN.40 þØà\ZöðÀèÁ€=|DüÁœæ×A&rte5ÖSàJixdäè :Ų̂^n³2UOh¢ô—̽öT5Œ?OÆpf_’ñÈÌ *ßÍ ›Á3+­Ê]þ@ö³Œ.ûLóJ’—ªFk^QW1A£ÝãçÈv$Fó!d?Ìâ1 | ÙJ%n?X&|w¹•TAÕêù<¥dèç(í÷¿#^£4%œ°|™w‰ŽÒÞJQŸóŠê“'}7™½jYD¨=ý#KW®ê^Iýp:dšd8ÄÝǼ(°×3U­ì­­9OcNâhô>ÂbÜp^WwÕlc=wÕ˜É êy¦·„±®ÍGO¹c­¼FJ÷¯,mT+¾'¼ú@Â+™K„—Q¸„Ê«alà%3ÃF±mWf¼ÿuáó"2´I«c—ê“ñáþ×ÊíÏ >> endobj 3009 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3032 0 R >> endobj 3035 0 obj [3033 0 R/XYZ 160.67 686.13] endobj 3036 0 obj [3033 0 R/XYZ 160.67 668.13] endobj 3037 0 obj [3033 0 R/XYZ 160.67 649.34] endobj 3038 0 obj [3033 0 R/XYZ 160.67 631.2] endobj 3039 0 obj [3033 0 R/XYZ 160.67 631.2] endobj 3040 0 obj << /Rect[421.58 539.73 458.73 547.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:EXT_LIB) >> >> endobj 3041 0 obj << /Rect[464.36 539.73 501.5 547.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:EXT_DLL) >> >> endobj 3042 0 obj << /Rect[179.04 527.77 216.19 535.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:EXT_OBJ) >> >> endobj 3043 0 obj [3033 0 R/XYZ 160.67 442.03] endobj 3044 0 obj [3033 0 R/XYZ 160.67 442.03] endobj 3045 0 obj [3033 0 R/XYZ 160.67 392.1] endobj 3046 0 obj [3033 0 R/XYZ 160.67 373.57] endobj 3047 0 obj [3033 0 R/XYZ 160.67 373.57] endobj 3048 0 obj [3033 0 R/XYZ 160.67 172.44] endobj 3049 0 obj [3033 0 R/XYZ 160.67 154.19] endobj 3050 0 obj [3033 0 R/XYZ 160.67 154.19] endobj 3051 0 obj << /Filter[/FlateDecode] /Length 1794 >> stream xÚXYÛ6~ï¯ÐC( æò”Ä6°gãÀÝY/Ú¢.ùÚ(°­…%7É¿ïðÒeÚIú$’¢†Ã9¾ùFÁ„DO‘yü]M/îD¤°J¢é:Ê2œˆhÄ9Î`~ó7bDÄÿLß\Ü¥ÍÅqª"b^_¿¾|7½}ÃQŽãQšfèêq<¹±kw÷×ÓñÛû;½¼7ë=NÇ“ñt|û ¥G·S£‡Œ(ÅJvI(Θ9 „K,â¥L¢«C±Y»'•JtmÏûòiŸo+;ËwK;˜ó}¾/VU÷¤dxãŒ`.:aª’=Ôy],®­”¯/@fÆÑÍ×]¾mW»’l©2œ¥FòôãÊÚ2köP3°¶ìŸdw¶ÒÒêvÎõõáž,c(·Ê|¬Çmœû^ÛAêÀéœà”9¡;õnC1nëú°[ÔE¹3÷q’bÅ£‘ó]G?íñÜ>ªù~µ´¾oôÓ/fèf2™Åx¨‰FŒa¦¦™¡—u¾ZÕ¯ÀÂáåºØ¬ªW³Ø(Dºª nuþÓî}©ÀJXè9ïIg/w(Gœx/KpEŠl(^ÜQÚìbTŸfwíÊúH™§Ü½.v‹Ía¹ÒN%Æ©CŸTf,¡_àŠLQ$x¡pšú+X[ ç {Õ6EUë+({•Ì]EÇ@†¹ì^ßò/mõÕ£/OTÎÁþ ú´Z¸mNg@ I ªVîˆ;(çu^ìLÁl½/·­ÌN¶—ã’`‘R©ÂÌ¢ÈíŸS¿ÞEŸ#ž$Øm!<ÚÂ\Ù`¶ ›è„öV¤Éø*œöÇ êþa£ 8bXU‡íÊ–»{,ö«¼Y3h¢[Ž,åÿV™êr«£îã–Œd¿ÙïX³—;ð§œsà¹Ý[„ëò9æÙV ¨{¶eà2Ñ–>Á:!•„ ö üˆ·«Tç éVó…åY¸I£„á$ ølº€«AüÚ±°èÂ:ĵè!S]:g¹b\ìÀ&þô‡–`.r}ÂtZmCóŸŽ¿,öÍúžFụühÏLŸ&mÏðtL·I[tª âʺ ibGåÚ¾ÊíÔvv `añìÃ_‚ò#ÏCoÝt”øÝë·÷©"Ûà°Ìâ_AÂáÌ+nŒuÄ%8ô1†½µ ݧ^ÒÇ@î)š@ š„b²é…˜ã@Χ¼²Æ?Gx§t7@BçöÐC¸À4P·kvá]xø˜Í«?–‡Ú¾òÈÈT¦Yê¡’ëq\·ëÃåÿ²Ô–˜:[Ÿ£±ÅnðÖGŒ÷l ¹wqÆ-eƒúµú’oŸ7+MäRßB+7dÀR#‚ÉaÓ¬JgÁÊŽÝgòïc`œ”~›s_l´Ï¼à¡¬´íq/Õþ"À ¡ƒ¥ú·VÇu£ptlú8†åaÌY8¢'qÊmv¸âµ{Ñ2¸÷7x—˺ÿÈ0Ö¥qsRàÖ¸£ó©ª}¹îOW%,JÑ=¬„èj~y„ UáÂtRb¦{ ÷0í—&#»8¡¡T뀑D¦ìŸ!3Th•Ê1¬4µJOzµÊ¿·O`ö˪^=ãx”Q…Þ›t¶ï@ÕËfóáºÝpT¬™Í[,ûFfßNú3[±( endstream endobj 3052 0 obj [3040 0 R 3041 0 R 3042 0 R] endobj 3053 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F6 539 0 R /F8 643 0 R /F11 1186 0 R >> endobj 3034 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3053 0 R >> endobj 3056 0 obj [3054 0 R/XYZ 106.87 686.13] endobj 3057 0 obj [3054 0 R/XYZ 106.87 612.1] endobj 3058 0 obj [3054 0 R/XYZ 106.87 593.98] endobj 3059 0 obj [3054 0 R/XYZ 106.87 593.98] endobj 3060 0 obj [3054 0 R/XYZ 106.87 593.98] endobj 3061 0 obj [3054 0 R/XYZ 106.87 544.2] endobj 3062 0 obj [3054 0 R/XYZ 106.87 526.37] endobj 3063 0 obj [3054 0 R/XYZ 106.87 303.04] endobj 3064 0 obj [3054 0 R/XYZ 106.87 284.93] endobj 3065 0 obj [3054 0 R/XYZ 106.87 228.84] endobj 3066 0 obj [3054 0 R/XYZ 106.87 210.73] endobj 3067 0 obj << /Filter[/FlateDecode] /Length 1416 >> stream xÚ­XKÛ6¾÷Wø(!W¤HIFÓÉnv±Å")=t{ -ÙQ*K†$§q~}gøhIë Úž8¤èo†óø8ô"$a¸Ø-Ôp·x»ººMK²Œ«í"â$Aá°ºùãÄ’$ñÞ~º¸¹çÃgî]ãyoÞßháúÅ óáÃÍ;ÿÏÕ¯W·|€e)‰ÓE¨ Y(ô÷´ÿ˜ KÔ ìúØÉ®Ø\?ëF6§ûªídY>z¯:¹{ýÒãÞ«¬h´,¼We±®ä>ïçÛ¢ÌÛ×>ªÅ¥d)òÍ 6þ¯Ð)ü’Ñ… öÕ±m®ÓÀ´­k3‘zXëact¼[©0Åã0Qš˜qâ„û°È—ÖsïK¾é@A”ò™×õÁ¨wRØÌs ×>±$ÒQ[}ÎÛÜcÞöXmº¢®Z=ÝMS7Zî>çã  T› 9wã8™’ˆ0jv¾ãÂfAà” %'”õ@ãÜ“U6Fdáó†9ŽqaƒrM7åz_€Ψ·>v „=qB‰ÃRQfZ”•†¤tp[’(1VÔë/¹/¨·éƪaWlm}d")sø‰5>lÌVR(¤Òr¨®Æ8%ÌîüTß&&…dé8ONV§ŸÅ$½Që/0N–ü‡Ì‚ Ä$: ÂïE± bLhè“Ëå– Ì<§Ü„)·ëßšz×ÈýÅa!ühiËdRKbípÑ\ÎIhsÀf”ÐÉÓjYêáZ¥&Û¦VRl7µy§…zkFdžX•½^Ð^¶Ð8¦9  È[2ñ;2Œ\·ÛÓÁ,ÊÏYÔ=¥áêø)G1J¸õ”FœÜ6‚ÄÖO²Ù÷yå³ÄÃ’‹B¯=À/ßx6<úCJR"j }rö©÷¥Z­õ¸Öhfqè~9 çH.Hæ·ãã…I¤é@q£ÄlîqdÌ¡™Z­õˆf¦ÊL(‹ê/² ÏàjOÁî•ýíV8kòîØT>¦w s¡jÇa+€ŽÃQY„Bþ-ß;¹.s]`T•±ƒð&Ë T+Kƒp07N6À‡JèÏ€mÆA¶mžYEM}Ü}>Óʽm]–5ºíï¢Úáó¾úèµ)Л»C™Ö®„0¦s÷öá ^ŽwÇ”„–ioK¹3¶{›Ö¨ù¤Õö&™¦iSï÷Fϲcc äƒËTˆ”ÔvùajªÖ¯ZDñpó´­épƒ9¶bjàˆžtW\+j™åÍŒv…èj¿;Q…$±Ì?pO çŠ`žg:kh’Ô Ï­ŸB®4Xo ’Lîe®è%4ÕŸGY€;7µR“åzªÊ)=+§ÓHvV2.-;„UØæZ¹™°¿K ‹^kH{`u¾(LG•U©gÇÎ+~–Wè!“:NÞÛú_0Ð[Gör]ËfzéCKÐçÉL#Dd-¿?ÿûQ¤ÇZ2ô*º&r†Ó¾I™^ñ¡ 4rûï6×ì¥Hn¥ëL•£êîùÅí¼§UJwfï ³9(ÁgÓ½Ãíf›xŽÎ5m¼üþLÏ¡ÿ©ÛRÄ£–Bµç¡wºØZph .ܘ€É¨·˜ë‡ãx®¿Ð„uèkUêÁ¶_Š/ “X¢6ïý±ÔÕ¶‘7 bBIìÞø®Þd¦í+¬§nÕ}Lqf^`ë¢2`¹gÂ$Bà²Ø S2 Ó<’Tå¢$Æà/ŒÔ) 'P<œá2\Åq§Á53®[– ß~œ™¢~pºþgÚß!C6p7¸XÝZʼnêXv²Êëc[ž«'áŸt£“_È€§ŸäÓdø¯¼ÿk^¸ôÀY¾´”1Ã?ýÈ—ÿ endstream endobj 3068 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F6 539 0 R /F11 1186 0 R >> endobj 3055 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3068 0 R >> endobj 3071 0 obj [3069 0 R/XYZ 160.67 686.13] endobj 3072 0 obj [3069 0 R/XYZ 160.67 668.13] endobj 3073 0 obj [3069 0 R/XYZ 160.67 649.72] endobj 3074 0 obj [3069 0 R/XYZ 160.67 649.72] endobj 3075 0 obj [3069 0 R/XYZ 160.67 600.55] endobj 3076 0 obj [3069 0 R/XYZ 160.67 556.99] endobj 3077 0 obj [3069 0 R/XYZ 160.67 556.99] endobj 3078 0 obj [3069 0 R/XYZ 160.67 556.99] endobj 3079 0 obj [3069 0 R/XYZ 160.67 556.99] endobj 3080 0 obj [3069 0 R/XYZ 160.67 556.99] endobj 3081 0 obj [3069 0 R/XYZ 160.67 556.99] endobj 3082 0 obj [3069 0 R/XYZ 160.67 517.32] endobj 3083 0 obj [3069 0 R/XYZ 160.67 398.9] endobj 3084 0 obj << /Rect[440.67 331.3 465.64 340.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.9) >> >> endobj 3085 0 obj [3069 0 R/XYZ 160.67 306.03] endobj 3086 0 obj [3069 0 R/XYZ 160.67 306.03] endobj 3087 0 obj [3069 0 R/XYZ 160.67 265.78] endobj 3088 0 obj [3069 0 R/XYZ 160.67 265.78] endobj 3089 0 obj [3069 0 R/XYZ 160.67 229.4] endobj 3090 0 obj [3069 0 R/XYZ 160.67 229.4] endobj 3091 0 obj [3069 0 R/XYZ 160.67 189.15] endobj 3092 0 obj [3069 0 R/XYZ 160.67 189.15] endobj 3093 0 obj [3069 0 R/XYZ 160.67 150.83] endobj 3094 0 obj << /Filter[/FlateDecode] /Length 1854 >> stream xÚ­WÛrÛF}߯`míX1ÆÀ\py¤))aJ²\!r*ÚˆIØ€ƒ‹eýývO€!`9ÎÖ¾ƒAãLO÷é3=‹€Áâqaþ~\¼Û½½’‹”¥Ñb÷°HÉ…/KàùâwÑòß»Ÿß^ŃM*Xœ.ózýÓêÃîò—%|!¼P°¥lj÷îãæú‚æ®>¾_ï6·ï·ô¸zoæ¥÷q·¹Þì6—[D_\îŒÑÔ(d 7 ¶b’%K? Uà­?}úPWuv|x‰p&6eÓfEáâÎö—LÄw÷¤iÉ`ÃCŠ~,YH*b<²VYy˜@xç Žo.VÊ1ÜdüЕû6¯Êö•¦^Vkè?»üóR)/+t¹ä±×â|âµ½oŸt^Ópmöî‡iÀxÿ!K•ÁÞW}ªëSV· ÄŽËÄÓ_öúpœÜSfGÏhYuÅc¯kf •dqï÷¿îpŸwËéÞ€J‘z=NaÂDxqu½úq;ÇQéȺ‡ª&§Š¼ü#/Éá‚«³mžGS¡»ùêa¶vÈ„rÖ^ÏWå)“ßÈr˜"F„W|—1 zöM‡"`ÑãSËøm›µùâsß×Yý¹“PjÓéuuZŠÐ{Y¦‘gLb×Ä7‹Ë”ÖBc¾´ÜDN$wñRfGx™*ïµwfÑ _—ž4dfÿ=%Æ‚T£Ûü˜Y]¼,¡Ð†îäL“™f%VŒ‡cíõ˜J!þ¬èx܃Ã`ýÃ4°Õ'mõAÓYå|þ쫺ÖÍ g½ª<ø¶Å´‘¶S6E¬gÉú§¥b¡š:}F)µ%Ò‰$‡“§"äWÞ»./¦vD¬¼Ûuv,h¸GA ½ƒž® Kƒt{“ýêĹwª+|úœ4  *­.ÚhÔt'Œ ­nÉÈ2îGo¸¼è |qШóàv^î‹®·çñÔ¨Bp#’hT4ô\äÖùITÌT/2ÕœxÈû¢?¯æž8o¦ÑøÎ¼dûýŒyÁ¨¯ˆJŸã£.Ÿ@Ö§š • zâK)¼MI;«êƒv6ÿ¨Üæð5Å™‘±D¸{Ðw\Å¥>ЇyÙä ß6ohþ…Ž z(uÿ9 ¼#R%òìâMWŸû#QÆg©@¶AÍT'¨:_Aþ QÞA¾ÂÏ€…ÄOrT1u3ž—Î^¬ÏõLòÂïóà—N^PWl>F¹L™3à˜íç ¸ô‰$ãcF®6ptýEÂv%4RpM)ÍØ­L×pî¿þ±:txš~£cû ›aaY"‡,ØÇ•$_YþNÝ(°„Ž›Ë÷?m~™PB$¨·Æ,2”Ü(›è9áÌZ´ÿ9 ‡ý#:²aç7ÔàšÉSV7ºöu©¡ 2§;Xå·_Sžîç\ü?”gÞ²©$t[6n[¶õ´SÃ;Ó¤S±´wéÕê»;5òý¡* s±z¦LMZ7Üû@–{#KzÚEœuñSJQÿ™þ¥È?þ L)a endstream endobj 3095 0 obj [3084 0 R] endobj 3096 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F8 643 0 R /F5 535 0 R >> endobj 3070 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3096 0 R >> endobj 3099 0 obj [3097 0 R/XYZ 106.87 686.13] endobj 3100 0 obj [3097 0 R/XYZ 106.87 668.13] endobj 3101 0 obj [3097 0 R/XYZ 106.87 668.13] endobj 3102 0 obj [3097 0 R/XYZ 106.87 639.88] endobj 3103 0 obj [3097 0 R/XYZ 106.87 639.88] endobj 3104 0 obj [3097 0 R/XYZ 106.87 599.74] endobj 3105 0 obj [3097 0 R/XYZ 106.87 599.74] endobj 3106 0 obj [3097 0 R/XYZ 106.87 559.61] endobj 3107 0 obj [3097 0 R/XYZ 106.87 559.61] endobj 3108 0 obj [3097 0 R/XYZ 106.87 531.43] endobj 3109 0 obj [3097 0 R/XYZ 106.87 531.43] endobj 3110 0 obj [3097 0 R/XYZ 106.87 503.25] endobj 3111 0 obj [3097 0 R/XYZ 106.87 503.25] endobj 3112 0 obj [3097 0 R/XYZ 106.87 475.07] endobj 3113 0 obj [3097 0 R/XYZ 106.87 475.07] endobj 3114 0 obj [3097 0 R/XYZ 106.87 446.89] endobj 3115 0 obj [3097 0 R/XYZ 106.87 446.89] endobj 3116 0 obj [3097 0 R/XYZ 106.87 419.26] endobj 3117 0 obj [3097 0 R/XYZ 106.87 419.26] endobj 3118 0 obj [3097 0 R/XYZ 106.87 390.53] endobj 3119 0 obj [3097 0 R/XYZ 106.87 390.53] endobj 3120 0 obj [3097 0 R/XYZ 106.87 326.48] endobj 3121 0 obj [3097 0 R/XYZ 106.87 326.48] endobj 3122 0 obj << /Rect[224.94 279.72 252.4 288.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.13.6.5) >> >> endobj 3123 0 obj [3097 0 R/XYZ 106.87 239.08] endobj 3124 0 obj [3097 0 R/XYZ 106.87 239.08] endobj 3125 0 obj [3097 0 R/XYZ 106.87 210.35] endobj 3126 0 obj [3097 0 R/XYZ 106.87 210.35] endobj 3127 0 obj [3097 0 R/XYZ 106.87 182.17] endobj 3128 0 obj [3097 0 R/XYZ 106.87 182.17] endobj 3129 0 obj [3097 0 R/XYZ 106.87 153.99] endobj 3130 0 obj [3097 0 R/XYZ 106.87 153.99] endobj 3131 0 obj << /Filter[/FlateDecode] /Length 1781 >> stream xÚÅXKsÛ6¾÷WðÐ5!@€äѱäŒù1µÜ&Sw<ŒÛK¤JRqÜ_ß]€ˆ¤dgrè‰ ¸\`÷ÛývÇ#žç<8úñÑù°x8‰¤³¸w¸OBéŒ9ÇÇbò—K9‘d4‚Àýp3›OfGðÙw/OOÎç8äîéåd:ú{ñÛû3¿UÄB"CÇÓJ˜àwgºÐËÉîr’’iÉ›ëi-éßyvDH˜Ð’9Ÿaýºv®AŸ5W)Ñ[;›]Lº› ²ÚÓŸª|T9X@¥[fæ¹+>™ŸÃöç€PZýœ-ãÍú>IWÝ„GX-´+“uRŽXà¾í·îJÝÇ»uÙU-%‰ªŸîãu¡ºZ™$Ô¯nGG]Â{Ôzá´« ¼$x¥jFŽ}±sp(ܯz¿¥Z‚G`´Rfz™m¶ÉÝ…o ¡ADÂÐvÒ’dÛ²ç%IVI%÷fà)­[}OвÐ6ŽYÊ1¥$Z:®]n­TÊ |î¢PÂj7'… Ý4+Í På;؆ÅsRô òölë=m·r;"G¢ÜÃxjº¼Zô6)m¬8m°ÂxJã2ù†x©±§6\øv®Ð'þ\Ö`R0²Ã$¥ 3Ý«@2œQA¨ý:˜/Iøÿ6`™¬Áß YÙíkQÜò•ß‹ë°ÍþEŸAPZm8ngÛS ÕÛ\msƒêRE–³bÁéqå?y¾óéç:’ð=&ÁíÕÑ Ãµú®zP©ÊãòU¨ôˆ6b ägcÀœ"Ü3ãl~2âÔýxÝÕK©ß²leso™ôâ‡Âء˰‹*a¦[&",X¯˜ ­e:ƒ„×Bãz»…X’oõ‚€°’­F‘p¿Œ"é‚'˜{Ú«À M¶÷‘õÁü¼P–o‡Vß·ýò/{êÄ{³UPÍ#~Ø* 4š±&ËNV«¤L²4®‚ÞZp÷àöàFo’ú×[³•/'§§¦Nï‘(,[zÜ4\j%ßdz5Pz¡j!´R[`ŽÐUéJ¥Ë—šŠãõË¿êU¤BA¢=¤PÛO$!çAÏœ¶Ç£ A/€.z,¬™¨ú<{¶Òw~9¹™O{Ë åBÓä¯ir`ØsN¶îÁ·ò1ƆDPwBùØÔ:Êu³a5$E ®@I9Ô4B?XÇx“­vk5àɆuLôeñ"D?TI?”X¶{͉‚®¢±`¢ÞjÑUñ6‡ŸGàÀ,*ÞUmXÖ­68¡»"íÐ{¾KÍŠõúãl?©~Æzˆxc é=>ñ†´û]íGm„"ÿ ÛnT'“Úl›F2ñùQ¥&S•T§ zFTøZÆø'ü ƒrÔÊóÞI—V™•-–.éãâ­.b×ÔÑeM]Ó‹“ói¯eC–¯ |–¥ŠÁC‚Fnvn÷à„•¤½†6¿þëãai¨s:IÒ¸î@þoSæqÃëÝî3jÓg(Ö Ô¢zqaP]#Æ>ΊGPŠ}gº^Ýâ Â;Ål¹«<5AÇãÁغÁô¬à‚UKŒ&c¨çwèg«Ĭ(M¯ê^>bš`@ÝlWnw¥™Ï|©rðÌúÅ|Ç2‡ßVIÇøü _!|¹JÌècn®ÖêÛHØ¡V†³^ݨ^»ÏY€uºª{›u×èq%`1Çð)¯¡IP’ô`óÛð¸e"ïØÜk¥E –š^›Ìs‚Q ¬N­ëa‹@—á‹=™{Ýì€ÂM–kÕ@F)LnbÃÞ8ažžö·DÇ˺±ð"8dëꣃK“‚ª¦æ"²¾<Ÿ´È»žc­\;˜5'ê€bŒZPÁ+·Ýå¡»JœfC½x§a ¼ïNþ8™Í‘úÍœ(ÀµÂ¶ì«Å˜U­{…#8Z¼xþiqÙ³8Ò#Ç’2Û®Mªd[3c–±t°a§ðnž@Yï ÈÚCëk<F|ët2»ø4peå;e Ü× ë$5Q“WǘÃVQ";ô®?Ò˜ ŒápïfcÈ2¬O!?ØÄòC× d¬“•uôØ}#²KȰŸ¾öÌÞj` °“o œ]œÎo&Ó%oï®Uœ/ÑšÇ,8T”zT]>‡ê˜aÍhÊʼnÚ+0¬£µ0"MW«[ GzFc:µ6ëü×H`þÖ†‘5̆‘0ž3bC/¥!®WÐY¿•#Òºâ@îùntá >Wz2­Ù©f ÜÂÀrîÍ¡êê÷éÙìótrw•1÷ºSÌò$þºV5ò¿üÅüÒ® endstream endobj 3132 0 obj [3122 0 R] endobj 3133 0 obj << /F7 577 0 R /F4 527 0 R /F6 539 0 R /F8 643 0 R >> endobj 3098 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3133 0 R >> endobj 3136 0 obj [3134 0 R/XYZ 160.67 686.13] endobj 3137 0 obj [3134 0 R/XYZ 160.67 668.13] endobj 3138 0 obj [3134 0 R/XYZ 160.67 668.13] endobj 3139 0 obj [3134 0 R/XYZ 160.67 629.93] endobj 3140 0 obj [3134 0 R/XYZ 160.67 629.93] endobj 3141 0 obj [3134 0 R/XYZ 160.67 592.24] endobj 3142 0 obj [3134 0 R/XYZ 160.67 592.24] endobj 3143 0 obj [3134 0 R/XYZ 160.67 554.54] endobj 3144 0 obj [3134 0 R/XYZ 160.67 554.54] endobj 3145 0 obj [3134 0 R/XYZ 160.67 516.85] endobj 3146 0 obj [3134 0 R/XYZ 160.67 516.85] endobj 3147 0 obj [3134 0 R/XYZ 160.67 467.75] endobj 3148 0 obj [3134 0 R/XYZ 160.67 467.75] endobj 3149 0 obj [3134 0 R/XYZ 160.67 429.51] endobj 3150 0 obj [3134 0 R/XYZ 160.67 373.92] endobj 3151 0 obj [3134 0 R/XYZ 160.67 373.92] endobj 3152 0 obj [3134 0 R/XYZ 160.67 346.24] endobj 3153 0 obj [3134 0 R/XYZ 160.67 346.24] endobj 3154 0 obj [3134 0 R/XYZ 160.67 320.5] endobj 3155 0 obj [3134 0 R/XYZ 160.67 320.5] endobj 3156 0 obj [3134 0 R/XYZ 160.67 294.21] endobj 3157 0 obj [3134 0 R/XYZ 160.67 294.21] endobj 3158 0 obj [3134 0 R/XYZ 160.67 256.52] endobj 3159 0 obj [3134 0 R/XYZ 160.67 256.52] endobj 3160 0 obj [3134 0 R/XYZ 160.67 230.78] endobj 3161 0 obj [3134 0 R/XYZ 160.67 230.78] endobj 3162 0 obj [3134 0 R/XYZ 160.67 193.08] endobj 3163 0 obj [3134 0 R/XYZ 160.67 193.08] endobj 3164 0 obj [3134 0 R/XYZ 160.67 155.39] endobj 3165 0 obj [3134 0 R/XYZ 160.67 155.39] endobj 3166 0 obj [3134 0 R/XYZ 160.67 130.2] endobj 3167 0 obj [3134 0 R/XYZ 160.67 130.2] endobj 3168 0 obj << /Filter[/FlateDecode] /Length 1681 >> stream xÚ•XÛnâH}߯àÑHCûnkŸHBfØaH4!+­6«‘&XcpÄe¢üýVßì¶N¯gã»éƒ¹Nµ³ñd<”÷Þh¦÷!šûEDèîzø}r;†×õn¼Ä…ÝÍl•šÇQùÇHû¸˜'ë|™mM,F‚ÚE‡}–gû>‘Á{@¸ ž‚EºLù¾éZp$é%®Ý÷³eÓE„hd>>Œ~v9 ’k@0F17ÎvÑ]ºÿd®Šý*ݾe»Ô œ®_MO}tä8F¼Žñídا8øòÐÜ&!¢>ÚBHðDD˜¼ìÌ;P¿4xMv•¥6½ŒâÀ©8؆&€¡ˆŸZ¼ÈÊûiT)Á(Œ|T× ±Ãn¯ $Á3|. ÒèsHb*Ž+,ïû1J\kaº2ºWŸMæ}øÚ¯>Aòb¡Ý$ë´,9 ,cÒ!Ûô¥//AO†*ÖÐÁiØ:+CLø°~HÉÔ.Ô«WÿÌFnmˆXï ’«rÕ‹„ì­ÁÀQ(KCÞ{¯5«õ5š¯&£V$B Æm$·yòÒ0\6OöÙÆÞ¿­RU`pÃCM†2Tµiƒ*eyÖ5·OçŠ. ykÌóbýšåðºF‡EµÄëì2RÔmn¿=¤ÍÍCEÆ.Ûm#€nÌÕ¦•!ŒWËu‚¯ûV~p„]‘/‹ÃfÑ*1"‰ÝŠ$ßµw« °Ÿq}éëë^®Þ™UéÌÆ7¹§ š•^ }¨xbZõžÕ:T2H‰Úѽ“E¬TzEb‡1´?Ë"± ž¤™Õb„û„Á]'aXj=h {K¶›AºÝð'ê€ÖœŽ^;g £Ù;>77ÑGµ f…Ò«…¢4”zµ²ZgGŽ=ÎvÜ÷³¸å˳Z_“ñô[Ýóõ}‘diÔôå[­¯N¡óË¡e-,yÄ¥ÅT#ŽV#,ȳÍ/³[s¯èu*Z0c ØT_œ£`'ìwjUÈ<Áç¬óða%Ó=×449ºÊ¦¶ Ó3Á€üì¡B-cÜ;TXCãPáyÓa‘ްÜäVQïºü“ðRM…•Ž=}À•JwPüñ?먚© endstream endobj 3169 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R >> endobj 3135 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3169 0 R >> endobj 3172 0 obj [3170 0 R/XYZ 106.87 686.13] endobj 3173 0 obj [3170 0 R/XYZ 106.87 668.13] endobj 3174 0 obj [3170 0 R/XYZ 106.87 622.85] endobj 3175 0 obj [3170 0 R/XYZ 106.87 622.85] endobj 3176 0 obj [3170 0 R/XYZ 106.87 584.09] endobj 3177 0 obj [3170 0 R/XYZ 106.87 584.09] endobj 3178 0 obj [3170 0 R/XYZ 106.87 535.32] endobj 3179 0 obj [3170 0 R/XYZ 106.87 535.32] endobj 3180 0 obj [3170 0 R/XYZ 106.87 506.58] endobj 3181 0 obj [3170 0 R/XYZ 106.87 506.58] endobj 3182 0 obj [3170 0 R/XYZ 106.87 479.78] endobj 3183 0 obj [3170 0 R/XYZ 106.87 479.78] endobj 3184 0 obj [3170 0 R/XYZ 106.87 393.21] endobj 3185 0 obj << /Rect[376.93 212.51 501.53 220.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_ENABLED) >> >> endobj 3186 0 obj << /Rect[105.87 200.55 141.94 209.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_ENABLED) >> >> endobj 3187 0 obj [3170 0 R/XYZ 106.87 161.03] endobj 3188 0 obj [3170 0 R/XYZ 106.87 142.33] endobj 3189 0 obj [3170 0 R/XYZ 106.87 142.33] endobj 3190 0 obj << /Filter[/FlateDecode] /Length 2208 >> stream xÚ•XÛnä¸}ÏW4öI lsEФ¤EÀ—žÙ üò!^¥,Õ«‡Ã*’,Ñ«Máãáú_˜fëMÇÁåïŸn®?Ý~\C· î®.>ßàk\Ý]o×ÿ~øû/ähH$L'«ÐaŠý«íƒYN­8g©òÖÓœ%b\O®7œ ÜOMÖœa•X_ךYSdOeÞΗ Wž°Ø˜x8æ´¯C]–õZÄÁkQ=c“#JŽFLSÖØá}›ïÉ·}ߨQPÕŸðÁ|ô/Æ,âfuÂÅ™\½®â„%’q¾:­ÁD2|—«/`Ôo´–n>]~YÀªÀI•À)Ð ª «ñ©ƒ—¬µtˆ6 +GÞ@Dµ©vèó¬éài½Iïê“íßçãÔ&‰°OŠ ìㆂÍjŸW»‚@•A} ô: ³¶éj»üå4¥f¡~M©pðˆ&}ÏÐô,=ü¶½ŸZŠ1-ð«,9ò1}”)S©u²¯Šos€ BÚ~ÚÎd:0Êv¶]³PÕîr§šÅê=rà ¥ÉQ&új‡Eß®þ[Ï«µ€IëE¸î;œ–7S%œ‹¹™Ž ‹±ÍYßÕ§¬ÃÚYž©³­›ŽÞhqInQ“9yáéÊ%tžjãÞ¾'h Þì z »dÖŽ6gµo²ã¿ °ó·EžtÕ&kžû:'@(Ó0ø­F(^×óWóÛ$Å€@:gØ’®§Í;z˜Îër#ãhá®éóEYYê*÷°dNæL±-´¸¥cŸãQM&¸Š/{„À‚\E¾Ñ!nŽ7èpœ /Ô05”Œ %á£Ì 0!@{-n”GÁSo{î>g"€9-á,Áb71¬Ñm]5o{¸Ú0’„9åm›=Û*_ÌåšJ]a‹ ,™?g%û±’"#%)¯¬”ÿ˜Wy“Q*Ä#;áõCñŽž¿À hËlBn®Æ;bÒ´±–AÄ” D/v‡˜V£^XpG³„»#f±̉­˜tD»ËªÊ£­vý<>>55•®ê'¬’›;'²‡õ@œS†'Ò ´½ hH¶àٳζt4iXímw]™`Ö­û–4›˜ÊÊ&Ïövbþ J&%„ôÓaŽH„2ÇeÓ¡®ÕZãqiWS€gîREœYVVäVµˆÈ'érô2{S]¥C Ï&oxÄñµD×Þ¾5 ©üõ ¦J¾±ÐÆS2rò†Kå´9”þ}~Èú²›ï#ŽY(ßã’f‘s„r-STÑ4›Þ½õf b#f,>³qb¹”¼ ¦#Çݧ¬y#špkI£ïŠ^,,žèñïš‘î~af.6©9\ði/6©»]ÐÇKÖñŠ;j²¨À^SÌË ƒGÜ$ÍmlÕ}\Ó•‰–àó|8SÒ=?Šƒ©¡w:‚}g§—2·Í&(38RÁøÍó§ 3жIEí ,¾§E¸’p¸Aþ¨9œ©þˆ é+³gnNVô›Ú¡DôÏÇEH…J° ½R9&”Ï·Ò9µŠ……t-Ö ýcÔ#ÍôäòÒP3,Q0Êc:@éÌ…|ÙõMcŠ©¨ eþ+úZìI@£ÉRSÃ)LIKìy`v¶ßƒàkéo#•:UCÀ.è™5ÿ—ÚêÊÝå%KåT"UPñNõï)3»íI¢>nmU؇³Yv"“=d±ÝŠà‰@MYÙf ŽÎ¿Ù”iŠ“­YIËx>/Õ«q í‹vGð‘¶³‚]ö;4w¤¯ÇÇc±‡¬üÉΚT¶Âù:•¼ ¹ý)åU+>¼S î{x¿T¡Æ[àp …KÍô6¡Œ£q¯‘âLÊ¡Á^füVkîóÝõï7Û/3kxé‰}s)G=17çµZsÛÛ‹Ë›íõòhU¡õM¬M<8¿Š ˜äè7u‰¼ã> endobj 3171 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3192 0 R >> endobj 3195 0 obj [3193 0 R/XYZ 160.67 686.13] endobj 3196 0 obj << /Rect[220.38 657.16 382.14 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_ENABLED) >> >> endobj 3197 0 obj << /Rect[357.14 530.55 505.38 539.21] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_ENABLED) >> >> endobj 3198 0 obj << /Rect[159.67 518.6 179.38 527.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_ENABLED) >> >> endobj 3199 0 obj [3193 0 R/XYZ 160.67 504] endobj 3200 0 obj << /Rect[387.54 423.36 512.14 431.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_ENABLED) >> >> endobj 3201 0 obj << /Rect[159.67 411.4 195.73 420.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_ENABLED) >> >> endobj 3202 0 obj << /Rect[312.26 411.4 473.83 420.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_ENABLED) >> >> endobj 3203 0 obj << /Rect[403.95 351.24 539.01 359.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES_AVAILABLE) >> >> endobj 3204 0 obj << /Rect[179.04 339.28 263.26 347.37] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAMLDEP_MODULES) >> >> endobj 3205 0 obj [3193 0 R/XYZ 160.67 322.75] endobj 3208 0 obj << /Encoding 1166 0 R /Type/Font /Subtype/Type1 /Name/F16 /FontDescriptor 3207 0 R /BaseFont/ZXCAFE+CMSY7 /FirstChar 33 /LastChar 196 /Widths[1138.9 585.3 585.3 1138.9 1138.9 1138.9 892.9 1138.9 1138.9 708.3 708.3 1138.9 1138.9 1138.9 892.9 329.4 1138.9 769.8 769.8 1015.9 1015.9 0 0 646.8 646.8 769.8 585.3 831.4 831.4 892.9 892.9 708.3 917.6 753.4 620.2 889.5 616.1 818.4 688.5 978.6 646.5 782.1 871.7 791.7 1342.7 935.6 905.8 809.2 935.9 981 702.2 647.8 717.8 719.9 1135.1 818.9 764.4 823.1 769.8 769.8 769.8 769.8 769.8 708.3 708.3 523.8 523.8 523.8 523.8 585.3 585.3 462.3 462.3 339.3 585.3 585.3 708.3 585.3 339.3 938.5 859.1 954.4 493.6 769.8 769.8 892.9 892.9 523.8 523.8 523.8 708.3 892.9 892.9 892.9 892.9 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 892.9 339.3 892.9 585.3 892.9 585.3 892.9 892.9 892.9 892.9 0 0 892.9 892.9 892.9 1138.9 585.3 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 1138.9 892.9 892.9 1138.9 892.9] >> endobj 3209 0 obj << /Rect[244.1 264.13 461.54 275.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[0 1 1] /A<< /S/URI /URI(http://cristal.inria.fr/~fpottier/menhir/) >> >> endobj 3210 0 obj << /Filter[/FlateDecode] /Length 2677 >> stream xÚYY“Û¸~ϯÐCªBUYâàµ/©±=ÞÔØÞŠÇñC&µEKÔˆk*+µ?>}$$Jcož4  Ñýõ¡EàÁâqA??/^Þ_½Ñ‹ÔO£Åýv‘$~¤+¥üæ¯ÿíI,ÿsÿ«7ñÈ“*?N}~õËõ¯÷7ÿ\ å å/Wqœx/?ÞÞ½fÚ›ï^Ýß¾÷§×½÷·w·÷·7Xút‚UœøI¸Xɘ°Ç§]^Ã"!¼~—#ûâæžŽŒ‹„N}玄ŸHZôþÕõÛ»×7¿ZþÀ׋§…HØ"¹¨`ªýTÙy¹øb]¢‘õöýëw|ÒI”TÒÑ$KªÐ?5ÑŒ¤›w×/ïn^ŸÞY¥~lúu†^ÖÙçÒ¹ëB Ø-tE1‚v¯èXK]Þu5¼Ñ¤§XûRš¶YÙå§'‘nà /PJh•îŠY) ŠÂOC£ï¬*Îë¼Íú|ó¦(óîT¶¤ #<«7§REêkûù®YgåÈ”d-æFC½î‹¦F=¨ØëöK°"/_ÛRïA†±~»wèwhN¦‘Wçù†G Cø½Ï,‹'öL̃ß/ß6m΄¬^ó't Úý™Érw묮YVì¦nò=‹­7y½.òΧcîß,åát­ü[VíËüÏŠí©z£Ä£©}ÖvyëùNô :QɳO¤¬¥–ù·³"t8™ÝÃ*júOâÔèåCƒûn?ÍLO$ÊÀô¤ðutÉôœ®Bއ}XÎ,¼]“¸ &q÷s{—Ùkÿ ¡|%Ü-Tè£Ä,Ĥ/ÇìËæó2 ¼l¦U°smð‡‘Õ£¡‡´ü8T€‘Ì•HÂ{*Ê’¹Œqòô¾2Ö/"_…®1Ç„Œ¤£E©µh¤­baÍþi—Ó2à,jþ‚Büûü €ë÷|Ý›Ev‹Ñ Jn€ÔÉ V®ýóËž±ÒIrîáÂÔ—éÿ)é™×ÓèœeÙàŸ:&ð½tâÕM[e%»u³/êGÖ³€ˆ*ôܬ0°ûfË¿ïßf_P¿9û¸1I€|¥¬Iv¸⃃qiâí2<Î×¥yb`¨þÍái"Ö2ð=q MãË1T&‘D|b•>D((”Ì(R}JAЋF‚ ~.ÕÈ;HS’ºâbéj&Ρq¢©ü0: §Æê1n¥¡kB'qV)ºúJºræ±úv0ïcTfM#D ŠüЗKØ üùzè›*ë‹5X* Ñ¦Y*ÇSïÀd4üuÐQK'jÐÒ¡EÛ¢ä(€BÄÎh‚G™Ì-«³òÐ33_YÎÔÄø ›I—IÀ‘/'a)dõ8pã L§ð“ŠÑ`€ÝY› ŽFsGÁ©·n†ÒH`ŰEÖ­9É.¯æÎŸYf%m¡Sz*  â¿ÍÐñ'pÊ#x³ï ðT„ {÷@™#ÛlÚ¼ëXR¿+0É(òž–&ðOŸ—å,8D0²S•ø.§6©}eylZæÄ¸¸ºQ—‡Ùc)úጠ²kJ”yT{Û67£ª¡ën†Òê¬âÌC*㲌§ül†Ä"5Š4\Œ¿Mׯ¼a¼f513憲ŸäÃÖ}ÞÖô4 â‹¸F/&¥}L²$˜Z”ËÊ¢·©-w^£Û^cW0ºm ‚Æš" ž¶0Á·$F!E€:z$X,r¨FÞyhKS„Iœ†Ì@‹Sq.Õˆ»mCñu”´^( €¯ b?#ŽÉTry Óså̲F h7ËA‚ÉÐÑTà½<°ÐM¾ÍÀ^\-Z ’»§9¯‰É]ÈŒŠª*Jq:l]åP¼óú—Ú¤#NAU)¢Sq.Õˆ»\¨…Ïj:PXº²8C-Ù"‚cºCâ"njf/'ŒmáöׇQ{¿™kÿvý¯ëÛ;<ò™7ôöÙ8+‰´¯¥ëŠïš\Ykmª ­ÏV~Ô‡ê{Xùò4r™÷@kÄQ›—Å6Øo0PSóÔ² 2¥^—Æâ"ÍÌe@9JrTë1S…¡‰('sByÊW¸zȳ+!w%ÓN86äG¿¦…§F,“\ÇcX@Q¶ú¶ø<ôfÛŒ( ú|°‰áš·3'9“ÏÒáæ%Wžh|Xùeæžqˆðj8·xìÐ4 ²= ÷ÌBØI£ù¦ÀÏk=Èf¢ï=µðå ‚Ô”…Ÿî8+â ®¢ÿ9OöLà ìõ#I15û&iˆLÜr`³XÿÀŽf–r¸{6t(Ií(ŘÍ>:@ýâ‰QSèˆ :†0¦±5z&thR™;ŠÓ"ÁÖω8—jÄPà^hÞá‹!ýn¦«$~ Žx/´Õ«Sb„@VAá K°5‡…í㣊Tù¡:âwQ—òriK]å–ºJY0g\¯›vi­›Š˜½Â…±ÀQ/ €PM9|„<äÝ;JŒ•õ)¼Íë]Ñò˜û <6i1”°'Æ8é¶]¬áÈ„t2EÜÀ+ ?M²è“g™š5 xq×>J̤«={¼ÔWŽÂÞßZÅ®ï÷?]]­[8ÔE ÆèoÛ+“ÓG‹»Š„ŸÍ-`]lòõXÍ¢)vcW#Ëvßô}‘·Wóê¼W(°T­ŽÎô°ôÍöƒ±‰æFºBÀá#Dòô¡Ó©×ÁÊù¦‰±ÅîK¨M¯AÚN Lû+•qˆ¡±)§Ï< 6mASõ†ÕÌÀ&‚‹ªÜJÝQ¹Ô¹ œžß]Å8õl"êÙGµYUe-ç¯é.­)®íuÉÕfQ‰Ý¢7SçÅìTÑ Ê¾Ø[41þ-vvÛÏ-2+»†­0s{K`&Q ¾9xǰ֛eÝnl²f¦ŠXwŒ‚¶Õ„˾Ôïh9üSZVÂà—_G¬¿Ä³UãfX›/ŒofA4\ÚNß¡X…ú±ø/ù5>ÛäQÅÞ{x‘0¢bÁ*šgR&Û,g(m }…ÉïÑ=¯7ÛŠ¶¡Â?ª…€%ŸßT$Î¥Ä2}Ûc\­Šz›·g:R²`¢©1‰Œ’ @ô:«ÍtÛuÁÉï ~Lü‰ðÓd¡Æ~ÊÆÞ |¶ù1ÖTGéñ×4C{dV&Xö³ÞDcçÁô§1QƒºSUív²ÇÄ¿/ªÜPVbÍ:Ñ'zsT÷ÆXñ=´øDüï‹)„èX–Íý@íPøàzQCˆÈ6£½Ÿ>½¡þ3ïï€ÿò?ôïv endstream endobj 3211 0 obj [3196 0 R 3197 0 R 3198 0 R 3200 0 R 3201 0 R 3202 0 R 3203 0 R 3204 0 R 3209 0 R] endobj 3212 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F11 1186 0 R /F6 539 0 R /F5 535 0 R /F16 3208 0 R /F10 1169 0 R >> endobj 3194 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3212 0 R >> endobj 3215 0 obj [3213 0 R/XYZ 106.87 686.13] endobj 3216 0 obj [3213 0 R/XYZ 106.87 668.13] endobj 3217 0 obj [3213 0 R/XYZ 106.87 606.33] endobj 3218 0 obj [3213 0 R/XYZ 106.87 409.2] endobj 3219 0 obj [3213 0 R/XYZ 106.87 391.09] endobj 3220 0 obj [3213 0 R/XYZ 106.87 264.05] endobj 3221 0 obj [3213 0 R/XYZ 106.87 245.93] endobj 3222 0 obj << /Filter[/FlateDecode] /Length 1805 >> stream xÚíXKoã6¾÷WøÐƒŒ®¹"ERR±] Ù$Ûy,Z÷…ºX(6¨‘%C&ù÷!©·âä°‡¢èI45Îóû†ž¹Äug·3ýø8;^¾=óg! ål¹yœr¶ð<|,Oþp¨G$™/|ßwŽ>¿89¿ú8‡×ܹþptyKÏùp}r:ÿsùÃÛ3Þ*b‘ÁÌÕJ¥ø~vº„ãfÜ'®7[HJf΀„ë:Ÿ’h­@eHòN/˜³Í’$›3ßyˆÓ[ÜrZ1á§qg©º™/@Bm³Ü~e?§N®õ÷\p'Jç,pJ£¡PëöãlkDŸð”¬ÊÈ>ÏÀ(éü¢ÚvʈVSJB¡­^9ȲÐs¢ŸÂœÊBî”ÙÞ,P7>[Ý(ot‹F÷Û³ ‰…¸ñ:n×—Ñ½ÚÆ‰F—Ã"´Bqÿ sÄþh|Æ23bUa¼Té]œË!FÀüi¡}]P¬ð»Þ>Ü©\­ædd¯ 2œ-%®¼<½úþüÇϧWGǧ'à'ãÎwø€øä•jë ç) Êüº&˜­‰ë=f*J’§yà9o0ÑðÍÒÕúàù‚‰ê¢ˆs…oDØzëLë(Ìø“5ð…±°:¬Ö³‹£? Ã/ñ<+Õ%œ(£›D¢'IÂ&ÂcÔêà|c£³XÄéVåóÀh"EWůqyg¯¼‹ ³*TYíߘ5EbP<9Ø*‰2/ì‡Ð £4r—xuÙ‘D{`ã„Õ.ÕŠIúX+M£Ôv¡ù±Îv{(ÜMÿdÏæ…Ø2“œHjÊÌÀÍ96#ÕÍ(m3R׹ͣÝ.Ò?˜£]†g±OâÒ,£užõv]ËQbT™*Û.ÁW©ÒÂWXF©qboŸìqö õç­ã ‘A!8 y·MªÂÀ”NΨÀ¸G­ëKâ²JÊxT^. ¸ÛV©Æªqi¡Ø3Ð2þPãÊ)£üV•oL‰ɵ*Vsm5sIH»FYS…ßš‚NíÔóó—UV¤¨¶ÛøQ«r»¹³§ôôhH¬õ^d5mÜR5´É~þdÐ3êI‚°‹3D ÏŒBê¢Ý>A_/ëà%ˆ<`½µx ;'@ìV¥PK%‚&ó,ÄÃö>Ê •›µ­°1œ¸„ ›G-5BrŽmmd¢t3êË€09P1ªDÏZȦz…ì&y›g;(L×Fm[Á]ùV>º£û•Nœš·Ï¸H…Gxcþ$n„„†ü ‰[¿¾™ü^Êß4Xl@ø!º¬J6ÆNÍn='ÛÂrcºJ:¡–µ6 3Œ»K§Â6WdjóÆv—å69©@#íL~ÍÁÂ$í’‹ø&ò§izl¦²U,'ØËEʶƒÃ@e]$qýºĺ©âdS4$¢ŸZ“ôÄêƒÎ£‘OI¯Üº¬œwð-ÂÉ{³wÞ›us»:^p²Q:T":\6]s^£Ã2š^C̾Õ[úLâ¢TV¥=P¯+´F«¡:yÐ'OUXdnH¸ì»­)ÎÝôøfÙ²ÊSûÊÔ7ì¢UfK²°iB†…•à‹z7²hjƒ;P«bðY^%õŒÖÏ0Þ ÚgT›C¼4߀À×+“¶šÃâô·åç‹óãq„¬%ÊÞs§Ò©²A¯Ž–翜6Ãç@«/‰¨³ÚœìT‹,âš1´WpàãkN807ZB´Íƒóÿ8Ôm @án³Œ¬wѨ;i ¨uà ~×× \<Ê¡ ¢Ì1#Âô\àŒÞä5Ñ(Ðl´æ•›(ŸRc£ß$ ©uä6ñÃ×%Ç'^79\Ïr€ ®idŸà-74!ETHÒDc8t’¯­ì“f´ûDôÅD+;+ÏDË­:þ}ùl¬Â峅ܳÂöF£>2›¸YX†•%³(Î8܄ߥ3Ö¥³Osngë9Ü@îçHòV¤6ÓìëPߨÖ÷Vå¡¶=˜ Í}?‡?è}%½Y+€Þ¾·/É:«ï&‰ ÿ– ‹B¾Hl”v‰ ú,±Ïìb„ùcbƒæ•S ¯6p‡ãx…ô†VÞE˜"s¹³C®ë¢pÄìT¥‡/¡Søì Âëƒ@w ¨‰{›Ñx£Òòýa’’nT`Öž2,4kQsþKö?ùÿkÉïwòÇÛa‡üQ¢†\OÜbx8"ÿSÁ­¹ëõÉÚ¡G€úŒCWÏÐkÉtoPjr `AˆWÔŽÓÓó²/Ž/ð ^›¥€v³$i3x2œœXû‡iëk61XQvhlõ^œØ` &ÌîÐðÕ?ãí8} endstream endobj 3223 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F6 539 0 R /F11 1186 0 R >> endobj 3214 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3223 0 R >> endobj 3226 0 obj [3224 0 R/XYZ 160.67 686.13] endobj 3227 0 obj [3224 0 R/XYZ 160.67 668.13] endobj 3228 0 obj [3224 0 R/XYZ 160.67 649.79] endobj 3229 0 obj [3224 0 R/XYZ 160.67 589.51] endobj 3230 0 obj [3224 0 R/XYZ 160.67 570.13] endobj 3231 0 obj [3224 0 R/XYZ 160.67 520.54] endobj 3232 0 obj [3224 0 R/XYZ 160.67 502.43] endobj 3233 0 obj << /Rect[159.67 413.99 212.51 422.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAML_LIBS) >> >> endobj 3234 0 obj << /Rect[159.67 383.25 242.42 391.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAML_OTHER_LIBS) >> >> endobj 3235 0 obj << /Rect[159.67 352.51 217.74 360.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAML_CLIBS) >> >> endobj 3236 0 obj << /Rect[159.67 333.72 267.11 341.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAML_BYTE_LINK_FLAGS) >> >> endobj 3237 0 obj << /Rect[159.67 314.93 277.57 323.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAML_NATIVE_LINK_FLAGS) >> >> endobj 3238 0 obj << /Rect[159.67 296.15 242.42 304.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:OCAML_LINK_FLAGS) >> >> endobj 3239 0 obj [3224 0 R/XYZ 160.67 281.76] endobj 3240 0 obj [3224 0 R/XYZ 160.67 263.37] endobj 3241 0 obj << /Rect[297.08 198.84 407.98 207.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:NATIVE_ENABLED) >> >> endobj 3242 0 obj [3224 0 R/XYZ 160.67 172.5] endobj 3243 0 obj [3224 0 R/XYZ 160.67 154.11] endobj 3244 0 obj << /Filter[/FlateDecode] /Length 1732 >> stream xÚµXÛnÛF}ïWð¡m¸7rÙdGNÕªJP+E‹ºh‰²‰Ê”@Rqò÷Ù]RË‹d»@¡’ÃáÑΜ¹íz ïÎÓ—÷ÞÅòõ•ðb‡Þrã)EBá9' žßýå3ÊF/~}5:1'QìúõåO“Ëéo#ø‚û”“Ñ8Š”ñi6gdWŸ—Ëهŵyœ,´\øŸ–³ùl9›^#º7]êu„Ýu„”(¦ÿ°CøñјRø.“‡í<»-’âÛån?âÔÿæ"õ,R1@ËûÔ¤¡¬AàoF× I\ënùªÊv¹1mµÛgiiîsÙcqµ³ï¬~–—U²Ýš—[xÉ"• é.p3"™¦“X.óÆS%wo_Æ’Iÿ üñ:+ÜǺ¯·pQ~j´ï×`cû«SE]GÎ×ËÉ|þy¶€0¾š\š€l­>"BØåIé'E–ÜnSË¢e¼*)9ËTP"B7˜Å@0ÏlTœ‹e*c¢ÄK£ÙAv1iÀH Fôí!Û®K Cäënè ?«†Â]4ᎆœPéò @Ù¨Ä\wyj Ê*Ý÷rƒ ‹S©am~Yv¸9q’MÄ„ —Mé²ù±ØÝÉÃY‹ˆä'i„h‘.¤ F$=úúÇ$7Wdn÷K6Wþ¬2Ò"­En¿Â2ŸE‚iijì ±ëóǬºMûº¢‰8°ß‚¤JŠ»´*ÍÃfW˜×÷Ù õgJG Šï«¸N1ësLj ¢Ñ@¡8èJ€²¿ç3)HĬ3¾¿ñ‘Ö›ÜLÿ˜ök\Ĉª=Œ¡Ü-ù‰\3HRò “²{ –v¹$LtWGvûª %á©UĨTüa+g¾Îò;qé#Ñx¨tУ¡Ö„Åd9û}úyº˜\̧ïz^PØZ^â…‹?—'ÑÂðØÜbY‚¡=hI å½Ôµq9{2+Ovª‰ÓL°tÀD³1ÿP¦ëܼT½á'€’Âí‚&¿Îke¨«Þ£9N5Z÷@”`ë]lKjÁ泋ëá‚@…Àdw•]K˜¢¶ðê*‹û¤,uÃ{Ý•ixV7ÿs+-^™Šé¹;TF­<ܰ~…¼ •§´ŸÕmV§8HÜj”¶ß®v¶ó™ˆT‘i¾jFŸÝÆ6Ä{[µMþaSsÎúò$ Ÿô?hAˆ;þ7‚®ÿ°åO0©¶Á„$œ¹`BáMÌ‘Z°3dF‚ð¶r‹LÖ&“ñ#™ÌŽ7¬&n ™¡%Sp‡LÖ"3P–LÍ_àäìð× Qš»I#Jʼnãdd27ßõJ¸“Õåe¡ êPàÿ! žðøÉP-»¡`ÝP8‚]žËŘ„ª­m*‡Ãš;à {Ö¼]ÇÞc">a¦’„FOš© :D®™FÐ5󆕺ðiA NïA5Òj>[üÒ ¡Þ) F‘˜ö°iƒu5Ÿ¼?åý8Æq¦¥½MîZ>ëò[=¦Tœº]®_È„ø±dµ"é0a&0Óƒ;h2p?4 “dÜCs¤m€ŒHjÆŽXÐ×yÔÃr¤ë 8ã¶Íh¸`ç»\8•?‡aþ‹öºùdefü6'áÓœ0†õ)N@K —#èrrð¢ÉŽ#”̓”#µPç"Ú¶Wû9}«ãw‡sµ> h¸<¿ÍЫ(w7&áÀÆäYg&J ž[´ÎešUÂL! .˜>¯Q©L+àÓº\È–+(Hc]©B¬T:–ºÆ7é×tu¨úÇ@æ êG“³¼iñ˜•i«.êbrþFëŸ=ŸööŒ¼uº ¤ýsN—$´’HžÊz «9 ;Ü>]¢ÚÍ|Æâæxï¸ð ÎöZˆÇK(®kÞg•y©çdxN,Zçx‰’@ýÇKm£ŸQ"Nœ-}÷/Ù¹ñŠ endstream endobj 3245 0 obj [3233 0 R 3234 0 R 3235 0 R 3236 0 R 3237 0 R 3238 0 R 3241 0 R] endobj 3246 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F8 643 0 R /F11 1186 0 R >> endobj 3225 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3246 0 R >> endobj 3249 0 obj [3247 0 R/XYZ 106.87 686.13] endobj 3252 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F17 /FontDescriptor 3251 0 R /BaseFont/XKGKSY+CMSL8 /FirstChar 33 /LastChar 196 /Widths[295.1 531.3 885.4 531.3 885.4 826.4 295.1 413.2 413.2 531.3 826.4 295.1 354.2 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 295.1 826.4 501.7 501.7 826.4 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 545.5 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 795.8 795.8 649.3 295.1 531.3 295.1 531.3 295.1 295.1 531.3 590.3 472.2 590.3 472.2 324.7 531.3 590.3 295.1 324.7 560.8 295.1 885.4 590.3 531.3 590.3 560.8 414.1 419.1 413.2 590.3 560.8 767.4 560.8 560.8 472.2 531.3 1062.5 531.3 531.3 531.3 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 663.6 885.4 826.4 736.8 708.3 795.8 767.4 826.4 767.4 826.4 0 0 767.4 619.8 590.3 590.3 885.4 885.4 295.1 324.7 531.3 531.3 531.3 531.3 531.3 854.5 472.2 531.3 767.4 826.4 531.3 958.7 1076.8 826.4 295.1 531.3] >> endobj 3253 0 obj [3247 0 R/XYZ 106.87 668.13] endobj 3254 0 obj [3247 0 R/XYZ 106.87 548.85] endobj 3255 0 obj [3247 0 R/XYZ 106.87 498.29] endobj 3256 0 obj [3247 0 R/XYZ 106.87 498.29] endobj 3257 0 obj [3247 0 R/XYZ 106.87 468.68] endobj 3258 0 obj [3247 0 R/XYZ 106.87 468.68] endobj 3259 0 obj [3247 0 R/XYZ 106.87 415.71] endobj 3260 0 obj [3247 0 R/XYZ 106.87 415.71] endobj 3261 0 obj [3247 0 R/XYZ 106.87 374.69] endobj 3262 0 obj [3247 0 R/XYZ 106.87 374.69] endobj 3263 0 obj [3247 0 R/XYZ 106.87 345.63] endobj 3264 0 obj [3247 0 R/XYZ 106.87 345.63] endobj 3265 0 obj [3247 0 R/XYZ 106.87 316.57] endobj 3266 0 obj [3247 0 R/XYZ 106.87 316.57] endobj 3267 0 obj [3247 0 R/XYZ 106.87 287.51] endobj 3268 0 obj [3247 0 R/XYZ 106.87 287.51] endobj 3269 0 obj [3247 0 R/XYZ 106.87 258.44] endobj 3270 0 obj [3247 0 R/XYZ 106.87 258.44] endobj 3271 0 obj [3247 0 R/XYZ 106.87 229.38] endobj 3272 0 obj [3247 0 R/XYZ 106.87 229.38] endobj 3273 0 obj [3247 0 R/XYZ 106.87 200.32] endobj 3274 0 obj [3247 0 R/XYZ 106.87 200.32] endobj 3275 0 obj [3247 0 R/XYZ 106.87 171.26] endobj 3276 0 obj [3247 0 R/XYZ 106.87 171.26] endobj 3277 0 obj [3247 0 R/XYZ 106.87 142.2] endobj 3278 0 obj [3247 0 R/XYZ 106.87 142.2] endobj 3279 0 obj << /Filter[/FlateDecode] /Length 1645 >> stream xÚ­XÛr£F}ÏWð¨Šf™—G+–]N¼›­²6µUq*Ábd“ Pòîþ}º§!„eUÖ/4séÓ}úLŸù¾óèØŸkg¾|w:1‹g¹v¤bQà̤ğåå.—,dÞ, CwþéæöòæÃµŸ•{ëý¹üåÝ€Å!Î4ó…#˜¯ìÌ °_[1_;³þû¿;ši‰F®­qÑ•ÓÛ>ã†Â½º¹]ÜÑšª_SˆÇúv àÒN_,-*ípŤÀ 8‹DË›q.”;ßeyš°KÌ;XA¿‡ExäHæó!¬Áâ BÖ \‘Å%¸Àˆ+µ6Ä*÷^è07õÙŒËb#XLNÿö>ùסk`b¹ÛªôDà>g)ÌKìÖ»íÖ›Áˆ²jŽï®ËŠz”Êï“÷¹ã¡ÏÔQîÔ w2šÊšÊ<Ì8––àVä®vS ‚¦þ ‘nV¬ò]}¿Àegè8·.ÁÚÉ®)7I“­’<ÿ£•ïV»¢ ÅwçÙ|éEÂ5_‘@±›)}  ÀFwKw«v–ï~Ę–us·ª²m3šùñòŠÚ¤Ae¨ po ë£OÞò²JM…«K·±»(wWzhžÚ‡õ®X5YYÔôš\·0)½fE7² yà- !–m:ÈÔ   ÔÍ©˜"Ž5ír`hÒ˜V!óƒ3a)h üpè¥'¹ûûÍÇ#²+Í1€5Ö D‡š¥ÏÙÑA¦ðAß ¿ÄN4<ìD1­…íù=dmÕ˜ŠÌ'ÌYБöÝÖßs„*%˜’‡x¹ü%ŽÝõ0»ÐÔ$õÞ2îÅ^9¦Ž÷á|;hªìb:k°‘Õnn Ú÷!ä]ØÅàòêýÄùÏߎ㤂Èõ³·éúÔlK˜ð|Â@©AèÓõæHvn°´ïãq4 Ö‹”á¾dñqfÊñ[¼3XÓÕÃlûV¬ÑÀXM¬¼Ø›#y&m&bØ.ˆO'z…8ò ˆKOzbÉs#¦#T®qÄ^æ÷ñì9àŽÐ1݆ᗸs`¡»¿íÐYk´¥øšuŒ\ƒ®u@üû!rëúŽöƒ|J&ø¹€£Ñ±ÿénqŠ$±Þg‰îBðƒ»…r·Bdø¥ÿ@ÀÃ1vAm 4Éô‚½*®ƒµD7U*(gFû¯my>šÂÀÚìÛàQì‚ÿ÷užp¥t?ÞÿËè•VŽ›¾¯X'ymÎ;è~ø‡Q7­ endstream endobj 3280 0 obj << /F7 577 0 R /F17 3252 0 R /F4 527 0 R /F5 535 0 R /F6 539 0 R /F9 1009 0 R /F8 643 0 R >> endobj 3248 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3280 0 R >> endobj 3283 0 obj [3281 0 R/XYZ 160.67 686.13] endobj 3284 0 obj [3281 0 R/XYZ 160.67 668.13] endobj 3287 0 obj << /Encoding 507 0 R /Type/Font /Subtype/Type1 /Name/F18 /FontDescriptor 3286 0 R /BaseFont/BNEJPC+CMBX8 /FirstChar 33 /LastChar 196 /Widths[372.9 636.1 1020.8 612.5 1020.8 952.8 340.3 476.4 476.4 612.5 952.8 340.3 408.3 340.3 612.5 612.5 612.5 612.5 612.5 612.5 612.5 612.5 612.5 612.5 612.5 340.3 340.3 372.9 952.8 578.5 578.5 952.8 922.2 869.5 884.7 937.5 802.8 768.8 962.2 954.9 459 631.3 956.3 734.7 1159 954.9 920.1 835.4 920.1 915.3 680.6 852.1 938.5 922.2 1262.5 922.2 922.2 748.6 340.3 636.1 340.3 612.5 340.3 340.3 595.5 680.6 544.4 680.6 561.1 374.3 612.5 680.6 340.3 374.3 646.5 340.3 1020.8 680.6 612.5 680.6 646.5 506.3 483.2 476.4 680.6 646.5 884.7 646.5 646.5 544.4 612.5 1225 612.5 612.5 612.5 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 734.7 1020.8 952.8 854.2 816.7 954.9 884.7 952.8 884.7 952.8 0 0 884.7 714.6 680.6 680.6 1020.8 1020.8 340.3 374.3 612.5 612.5 612.5 612.5 612.5 922.2 544.4 637.8 884.7 952.8 612.5 1107.6 1243.8 952.8 340.3 612.5] >> endobj 3288 0 obj [3281 0 R/XYZ 160.67 649.07] endobj 3289 0 obj [3281 0 R/XYZ 160.67 633.34] endobj 3290 0 obj [3281 0 R/XYZ 160.67 559.62] endobj 3291 0 obj [3281 0 R/XYZ 160.67 559.62] endobj 3292 0 obj [3281 0 R/XYZ 160.67 519.28] endobj 3293 0 obj [3281 0 R/XYZ 160.67 519.28] endobj 3294 0 obj [3281 0 R/XYZ 160.67 493.94] endobj 3295 0 obj [3281 0 R/XYZ 160.67 493.94] endobj 3296 0 obj [3281 0 R/XYZ 160.67 446.07] endobj 3297 0 obj [3281 0 R/XYZ 160.67 425.74] endobj 3298 0 obj [3281 0 R/XYZ 160.67 425.74] endobj 3299 0 obj [3281 0 R/XYZ 160.67 256.33] endobj 3300 0 obj [3281 0 R/XYZ 160.67 236] endobj 3301 0 obj [3281 0 R/XYZ 160.67 185.92] endobj 3302 0 obj [3281 0 R/XYZ 160.67 169.75] endobj 3303 0 obj << /Filter[/FlateDecode] /Length 1730 >> stream xÚX[oœF~ï¯à­¬”0ÃÌ0DQ$;¶Û­\'Š×•¥ºxamR +`“Xêï9saY`×Iž˜ë™sùÎ / Aà=xúó›wº|}Á½˜ÄÒ[®=¥ˆäÞ< ‰‚ùÙß>£|öÏò×Qw&I{Þ~ÿûÉÇåù§Ü}’Ù<Š”z³¸<3k7Wï—‹W×fzr¥×¹³\\.–‹ók¤î/5£”ĢLj¤D1ý›Í)eÂ?ÝæEš—@+üKÃ!U^DâoÓ@I=F¢P_>1'zô CoÞXj6"B).J¡ÏÝ¢ðºµ[x2â~ZÁ—ù«íSVÎBê·M_9Ô§ H_ BQœ'ËY,üìö éѽ>¹‘ybEDlø~ÌŒhª;Õ5ÐGÚšlkîˆE”0gÇM °ÈO·«¬1JŒÅ¬rcOZÝ Fè#à}Íî¨rƨC»o+ˆÐÚ¦¼§X½Ø­ÝšçP±LYEC-Ê7§\@Áרr(æÿ¶Lž²w¯fsPyÛfßÖy‘5ïîfC^ƒ>TåœKc[xÙ² ývÈtZ3 ©†Òn'e:aé¶wœ )Ð5uDjËV‘7m–šñ×¼}¬¶-NB¿ÙÞ1I¿e xŸ #$7hœÓ8"‚ö…\oËU›W¥QvµÛºl̤EùÑðwLDE†¢ÙuUŽxÊÉG6ÍP0V IuWÓõð.ã„…vß°Ø#&1a²/æIšæ(fRƿ̺ΓûÂÅüm“¥oŽ:-aÊ`ãüvqõñfy=ò!E¸åIãGÑØc€s%Ž»Œšr®]FL¸L‹ð½&KêõÑÌ7I«GÊ¿=›QR× ºÓ³9R­Írš×Ùª­ê¨G Ì!ãø_òº*µ*ð@gEá¬x7#GÇh@(sž=)9‘Ì>9ċŗC}ÞNv9Û舑•©Uùw¡$uÜý5£pûäÓ˜E2XÑ’–µ%¥¶$¾„– …oÝU„²[ÒÞŠ “ Å}…6†^û˜´æ–<šNeP`¸é¡à^kçþv£gib‚gþ}Ò˜!õ1àà’f æåbk/#˸üáO ¬_›qxPèä/áˆîõ¥ÃÂD*ÿÌ »±ÜT£ÜÂxL"+¤<¥m}º8Ý›^/§¡<ÂÊņ³ã`P‚¨~uÀlu`kƒxØo.à^`Â_ ó/m’ÝI:8ÙXª¼€jëˆìvÿâ¯S“É™û‰ò²Â^Ø×‰µCbN;T³P,ׂiV†¡þ ÅÑëv§91™‡»Ä䤆ÄVëÙ«|ýl“Œ‰Šûúè‚ÒúŽÊL£_Dˆ3½²ó˜ìRhR­ÝOJ¯yŒS fvÆ~º ;’Sö¤I7Í*)K'®pÕ>`»œ[åP(”£¾û¤Y¹Êui‚r\̶ºš§Ï¾%O›"C0sîçë‘ÇP½8S®ªr?(™F./Ht´ªàŽF^n¶mó Ù3©0—†,zö©UÓ++wˆu@U âæÍBcŒ11~x_O^(cy÷±‡Í‰Õ½É®@©ïö0¶K½ŠúžÜž…>©Cøƒ«Šê~UäÑaõ!ǽÿŸ¥…qIýÐeT½B[f³sœh#8¬i÷”n½‰FúRÔy,$¥Í™œ p@!DK˜Èž÷Úcàt_3sQ‚ÞÍŽÉ\0Ð$–ÏP8ÙKî‘“Pç$0Ø9Iêüd/œZ÷\NÙs"¢ g êxl=‰<E…~E5Ki zHŒeU?éâG¢ÕÆôÖ0©·.‹Ì© e6¦mÌ‚]Ú>žèx$0Ðö2]øbü¾Ú`þ{>ÚsH JýpC ´Ÿ' Ïhs6y¶ß¨u-aºfÛZåeÓ&…-' {'ASŒZˆå‘8ØÏ"—ÐÓ¶ÉC×Òù=TîÝÔ¾µ×õ¦ÕJÏ_lz]m»ßîDçþçmÓî”0Œ¯,"qümÛ‹]ßDÈuòDÓwc‚‡˜zã/blamu bBB.G FÃ)ˆõH©ÍÕ©÷ø3 tÍb…?]XOLï‚þô¾3ŽóÖ|øEêu‡@œt´ÁÍ&÷ª˜ísû­JÛí7m¶¡Ö–u»L?%÷ÏãÖÍû¿nÀ8¿üž Z endstream endobj 3304 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F18 3287 0 R /F6 539 0 R /F8 643 0 R /F9 1009 0 R /F11 1186 0 R >> endobj 3282 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3304 0 R >> endobj 3307 0 obj [3305 0 R/XYZ 106.87 686.13] endobj 3308 0 obj [3305 0 R/XYZ 106.87 668.13] endobj 3309 0 obj [3305 0 R/XYZ 106.87 410.71] endobj 3310 0 obj << /Rect[318.07 335.89 337.79 344.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.14) >> >> endobj 3311 0 obj [3305 0 R/XYZ 106.87 256.63] endobj 3312 0 obj [3305 0 R/XYZ 106.87 235.77] endobj 3313 0 obj [3305 0 R/XYZ 106.87 235.77] endobj 3314 0 obj << /Filter[/FlateDecode] /Length 1341 >> stream xÚVÝã4ç¯è£#m½±')BHÇrw:¤ Ê˃7qÛ°iRÙÉ.{âgÆã´izH<ÙÛóù›UÊÓtµ_…åãê‡íý½’)ÏóÕv·R/óÕZ¨œëbµýñöp0§Áºd­ŠŒ‰,ùsûSø‘ñ¢Äéjmx©ÃãwãÐÃKÁª¾{”ºØÎ MßáoÍvcWáÉ#ü(ác>š®& /I.˜qyj­'aÙjÃ7y”¥/³ðå—Ïæ9‘³ðQ¦ÌÀÃ8d#k›'gÜN®Ç‡/M ,ÃcC]"s6Y²§d¼]ô;Z/‡#i ›—Dg-˦Cƒíj[Oö Á7ät‹,5;Øö„»œõ%Ò«kK´§±ikÚú)T5èÇÊD-ðj8˜vµ51!þy0£d‘seN¨`”·£ÕŒôv¢¦ÛßjÜ Þ¶è¥w\Mý×è‡9-c5*˜[gÉ~$Êɼ'úKãúîˆû’ žqï·}"ã*›¡OIÍ%®DZÉŒ}´u¦]ŸFwB—³Þ£i:&} ux{…ºš$˜+‚ íq”)¶ëÛ6ÀåÝ$ÉöW’Á‚ 9<žáŽ•éhÑ„‡Œ£„ä &¬uã+‚$ú#€Ä “ €W’cÝÐX›Ë¢`oÈ£&ôÀvéôYäˆRXKL|·3þ@Ž‚ƒoŽMk= bP „W 9HzBÆoDýøóï´™ãk7W=¿$(Ý‚©Co˜ýˆÅŽ&2ÄÃÉølg@µuÃÓk3x²ÖiÎ>!à´f§+g«þx¤$ JÚY?±‹a£Ó•¤`ÝÃw®?ÆèâzÂ(A€Ü ¸*ϸÚ.üÇP•†¦âKè)ØÈøä©%—Thü3qdÞZÚþfIÕsÆ@é-x* MJ…+ò€,Éæ/ò’§êêÅ®wÄïØ»È¹é€x ™ò˜PJBB”\ÂO!ïOë]mm)€ „½Ì¼[dNsvÞ î¨,E(Ó·X×fÒæ’.±Ae(›l¬¶énb‚¹žòhU‚œXk¨)ˆÑÊ…½˜v_«Ð+©6]ÕŽ„­à@ZÏi¸Z@XŠeìVv×´7üuÊUõ7,„ärÎÁõý°ä€pÈã£ee%§œ+kVh®Î…õ\ZÑøÏ~ÿp°U¢Rö ñ»£vo~µ~l‡9ë Ž vÈê‘}wôûï“Û¼âœß¯d^}^ÆEb¢MÕ{é¹ W“ó -Y•0ýdñé¥4H -fNã@û£õÞìm¼À ,U?0•nTÐàm¯×kÂÜY 8i².ºáþ˜sþ, .§ÏXñÖwUHž‹«n0Þ@þ–“E&4]¬ªfg †Æ&p~xÅdZš© {·£9Ÿ…V„ú=ìLý¦-hI_B 3wa¶9/7ÿÓõ‚ë ý¡†ƒ¤©÷M;%æ=}më»8‡Ü†^+žÉkùÏ¥²awdêýØÆ,¿´8Ä^®²óL4AdÒ%\º .ÖT‘n03æ5Uát®4¡„@ù«Œƒd «óD½4DœqOÁˆT€gÎÖçìÐ;\ÍÌ‚Ó?tO½Îöos<µöî? édb(õ¡éÑ2ùòiä›ûúÊ@8wÀÜ|?õŸ‰i3N@Oø=§¦,ó×NŽ‚Û>2Dk[KþÔ&ï¾'“¾WW8N†K)t¬aßü ß> endobj 3306 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3316 0 R >> endobj 3319 0 obj [3317 0 R/XYZ 160.67 686.13] endobj 3320 0 obj [3317 0 R/XYZ 160.67 606.94] endobj 3321 0 obj [3317 0 R/XYZ 160.67 586.45] endobj 3322 0 obj [3317 0 R/XYZ 160.67 586.45] endobj 3323 0 obj [3317 0 R/XYZ 160.67 522.48] endobj 3324 0 obj [3317 0 R/XYZ 160.67 499.77] endobj 3325 0 obj [3317 0 R/XYZ 160.67 499.77] endobj 3326 0 obj << /Rect[359.82 445.74 478.36 456.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgChecking) >> >> endobj 3327 0 obj << /Rect[329.33 421.82 439.16 432.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgResult) >> >> endobj 3328 0 obj [3317 0 R/XYZ 160.67 385.49] endobj 3329 0 obj [3317 0 R/XYZ 160.67 365.28] endobj 3330 0 obj [3317 0 R/XYZ 160.67 365.28] endobj 3331 0 obj [3317 0 R/XYZ 160.67 365.28] endobj 3332 0 obj << /Rect[289.59 265.63 302.05 273.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:CC) >> >> endobj 3333 0 obj << /Rect[306.37 265.63 339.75 273.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:CFLAGS) >> >> endobj 3334 0 obj << /Rect[360.91 265.63 404.75 273.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:INCLUDES) >> >> endobj 3335 0 obj << /Rect[381.71 253.68 457.72 262.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(var:LDFLAGS) >> >> endobj 3336 0 obj << /Rect[159.67 203.64 240.12 213.95] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgChecking) >> >> endobj 3337 0 obj << /Rect[256.39 203.64 326.38 213.95] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgResult) >> >> endobj 3338 0 obj [3317 0 R/XYZ 160.67 191.5] endobj 3339 0 obj [3317 0 R/XYZ 160.67 171.01] endobj 3340 0 obj << /Rect[297.86 140.88 381.92 152.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:RunCProg) >> >> endobj 3341 0 obj << /Filter[/FlateDecode] /Length 1871 >> stream xÚ¥Xmoã¸þÞ_aúAbFI½×rÞxo¹d‘õv[ÔE¡8´-¬"’¼ÙüûÎpH½X¶÷€~1_4’óÌ<3ôÄg¾?ÙNLó~òëòz!' KÂÉr3‰cÊÉLÃøÝ¿½€‡Óÿ,¿^D­ —,‘ß|žÿvóqyû8AàÁ‡é,¾w3 "ïóòaþp¿øðþóãÍ4ÞòÃÃ=Êqoñù~Ž£O´ìæþuþ1å?~¸ùõîöm·ÛÎhßY™ ؼnÒ&[Þ*PÞßQ~ å,QtÀ²ØüQoç;½þšÛ•÷ºËÖ;\"½MYÒÚÆ¶‡Z¯¦Fß×aå$ìaÄcc!»Ñ£®y³òþºÂe«©Õw»4†V» µ4$‹è:p?΂)è„=¬º/ÓDxiU\Mg"’nö¶ªÊª¯7>KÁ¸ìì hYy?¿ÔÛ_Nݱ¯y Ö÷‹X›U«¬@¬0N¼šÄ÷^q ¶{Ó<Ö|H jµ9¿é¾èºN·šä*]ï±çéu“}C-:CßaÇÎÐ~èœðÈ*ý#‡ íArp®Ø+ù3íÖìta QdµÖé“9GYÁÍ„ÞÃéWsvÎ&$ïàC8ÿ…pêú¾â¹ÀéòP<_Ä4%ä‘yºunop7·ª§ÉŸŸÊ2§®þ¾¯~9áÙçõ,ÌyÎê¹èË0 ñZ¸ðŠXää6‡ü §‘IŒ[;ߨq&1a‹_*½Öè.¡§q"B?ÄïCúÍuj­‚ÐÇk£È³®×Uö„žj<ûŽ1™ˆ¢òu§ÁQÐ[¥o\Àƺnhb_éoYy¨ÁMI (àVkýLÃCM1݆l2F7x#Ãk>KâS¤ul£ØgñÈF­î‰ô#ò—Ná¦u®™à~|Ý¥ ‘[f[ŠÞÂË­õÌ1,iV£häGèÿºIä¢1ËsRYšýÁîŽf2t¿¯Ê}•¥¨ ³Z˜â„ª•·Z™[þÀre(Gòfï–4EŸÕÌ vÏC£b³MHÇcš?¾^ÔsòÀ$hK1Äðl•nUAý ü›h)æL…Zª¶‡í(WˆÀ{J×èø_‰—\$¶ ND"O0·°"Î3§T£H "îe5¶Wg/YžVWè"ņ¤ÒVhŸkšBÞLœÖ?áŒO™¤&€æì*¤bqÔ±«´ìºDþ¬ÞæåË>ËõÜ’«½ËНGS‡b~‘jE(xSdÖkÈQÇ,¹ì¶³$ îºýo£¿7'óëy5æ|ÿ§s¡Ó*.õ{›e 4OìázÁy»F†,áÖ Pí±ÎÀgÊ%ØrƒzL€Íœ庶æ)É^àRÔ1 â—¹MQ@*êcaýs\$HÉ„øQˆ*Æ]n:›º~›"é§o(ßӼƛe‘ò<ò‚û,DSBäTnß½ka:ÞËݨo¼~Ê#4L_™±)œ‰l*º(…ÂîÇû´‚ *“Ö¦4¢@W>q†2ªYîýVâÐþ†ÉY¨Àâ‹)\k§€Ö8ª`åp¸þòÏQ1¯ì³L¸²aöEŸz“IŸùñE”[žŸ½Â;rvR ðPÈø –mñ&®Ò4(ʆ ÇÙȳøïÓºÆ2%$d%øè ~EóºË’0Ê6­ôõˆ×ëCe%ŠqV4éÒèü´7ñι™uˆ(×sƹ¤޾§©SÃÁÛ ‘»¼zg3eõ’æøjÁ/¹¸‰+ôš5;§ÃnÒ+Ê/ÕOŠ‹s· åp ºÞ¢¿AU†]sr#•Žwêêò| T‡áå–ü ØTä¦m±©l±‰¬ó’æeÀËAR¥Ú½núE[«¥«Ú\Í7ªÒú;âJjX“—»š’ÈJ\ÈrPíDðT‘b‘úÓ›zÛø±I@=M<2†àù¾Ö&ÛãÌk”Ù*4j÷Ù1!T•Ãwª³¢T‰)3±¥Š:½? `´²D€}[Ç3 Dcì²Ä’ƒ£Ï"®Ùñv]É„{§Y^[’Ú¶’3‡­ì“5> endobj 3318 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3343 0 R >> endobj 3346 0 obj [3344 0 R/XYZ 106.87 686.13] endobj 3347 0 obj [3344 0 R/XYZ 106.87 668.13] endobj 3348 0 obj [3344 0 R/XYZ 106.87 649.24] endobj 3349 0 obj [3344 0 R/XYZ 106.87 649.24] endobj 3350 0 obj << /Rect[156.7 601.59 255.04 612.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:TryCompileC) >> >> endobj 3351 0 obj << /Rect[311.29 553.58 391.75 563.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgChecking) >> >> endobj 3352 0 obj << /Rect[410.23 553.58 480.22 563.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgResult) >> >> endobj 3353 0 obj [3344 0 R/XYZ 106.87 484.37] endobj 3354 0 obj [3344 0 R/XYZ 106.87 462.26] endobj 3355 0 obj [3344 0 R/XYZ 106.87 462.26] endobj 3356 0 obj << /Rect[156.35 414.61 238.82 425.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:TryLinkC) >> >> endobj 3357 0 obj << /Rect[295.24 366.6 375.7 376.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgChecking) >> >> endobj 3358 0 obj << /Rect[394.18 366.6 464.17 376.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgResult) >> >> endobj 3359 0 obj [3344 0 R/XYZ 106.87 296.12] endobj 3360 0 obj [3344 0 R/XYZ 106.87 275.28] endobj 3361 0 obj << /Rect[105.87 238.15 186.32 248.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgChecking) >> >> endobj 3362 0 obj << /Rect[208.75 238.15 278.74 248.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgResult) >> >> endobj 3363 0 obj [3344 0 R/XYZ 106.87 213.59] endobj 3364 0 obj << /Rect[266.52 137.64 386 148.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgChecking) >> >> endobj 3365 0 obj << /Rect[256.06 116.97 365.08 128.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgResult) >> >> endobj 3366 0 obj << /Filter[/FlateDecode] /Length 1708 >> stream xÚÕXYoÛF~ï¯àC( ÚpÛ¦lÕNÜ:N`ÉéC]´LK„iR );þ÷ÙYЇ»}(Ð'q¯™Ù9¾oVŽÇ<ÏY8æçƒs<{{:šéÀ™Ý9R±(pÆRâÏì×?]®˜`£q†îìòèbz~4Š„;;»ø0úköÛÛS.7g¹ç39ž9wt5û<ù|qJ»ZÊgÜ·{¦“˳/³)mQ­œ0b^³Gðד™±Ôw8gÚï˜p‰ÆT΂јs¡ÜÉ2™¤çÞO>&ñmR¾e¨Ü¯#-ݤ¼w‹*¡m|³­«+z%ò˜ïUÕz>Oªj4öAÕ/øã»?^¥IfòÝ]š%Õûë‘ì9ckþ~_Á:kØQ=)¦•3‚¡‘|U%x?áÖËd÷…"ŸÑ 3³òyR<¬@Åd(?ðX l8îÖù¼N‹¼ëpÆ{²ê‚ÔÏG"tÑÁ"rïqŠ»OËŒ*iýy$·X—´4±‡È »eçô‘L3kºÒ˜ûªëÐ8¿…½ÂsW%n]r¯Ü8Â,U+#&™§×Â{`iÜ\ÑÀÑôJyîi–‘Œ4Ÿ¯orNëI!$ ›d}WÕ·iÁ–ï‡.D[›M7ƶä®(­M 8[ߦù‚.&ÂÞ­Èt)­‘ô½±OØøsÁ¸2GŽ‹z‰J¼M¸*r·Lêu™ÓRLSd 9·È’8§éÇ‘ï»q¶NÐ Bº³åÖÍy¤1‰èR½tæÀ‚æ±!­è·‚€ç˜,õÏ‚¡†-L쪚a™xœùÁ¶B¸O&ÈøµÆÒÁ½¥#ÄR‚idœ0rRäwŸª…QÞ„ÑžkÕC¤YöÎaÂîÆ©ß©ã2©ÖY½G¡¡yï–e©Kø½Mªy™ÞP%Ø%Ê2åÖIUÓ•Sw­X×PÉž¬;ù?¬²ä§a˜Æ >y >Uu\§sÖ Ÿ‘€¤»ñ¾˜\]NO¦ß>~;úztv~t|~òj¤„B-+¨Ž¥…ݽÜ!T„Å»!p‹<ÎÓ›™ö¤ „È‹/òÊ!¤ÏÒ›êý›ö› þky¥à=œ´œ"´:È)R@ëà æé†SÎÓü~‹P”bax€Pˆ ïIÂÌEåFÁ© £àà× £àhbmEhŸÒ§30 ·7g‘jˆY°ûñÉÉty„[S ª¡øÈã‡ÄÎuëL 4)§Ôˆ`O)ÂrG†èʀДq™ñQC<°²Š++xö’â;t7¤!Ô–×Rs[Ó²K·Pá늬µ;†€ Å®g[9LØðÁµ¼xÁ¬CUÀ”ÞÁP¾î1TൠCÁáTŸ¡`ºÇP\ïc(÷ÊÖj/ÆümZ,=}z+vú.#Y±þCJ^ÐÎIh3lÁ¼Ž’<(Ù;·Ÿ’ Ï=;t¼‚’d•¬þg”‹Z좤ó³ãW’Òx-#YäMó´†ëÒ ‚Œ_ÕIù@Ã:]$uU—/Q—’¦…ßPW4¤®/e±8HKÊWLñiÉÈ!€¾z±Ÿ+Z· \îQ"÷Zˆöí›>8vé‹2~Ø*Z`Ïcj£r ÐNþH¾§U]‘Ä4'-  öU\/!°:ÔSq‹)*ÿЩñ ›³‘nçUåE>{{ Y²9Í¥‡¯FŠe¼®‹9ø€¶ut©Í ¯µ‚ˆrb̵b¾6-‹}†NÁj@ ° ¸£_‚ øè¢ {κ¥¹¸yÁõqdaIs7.­ŒGjžiºJÒ,.­D5-[}EžXU«2©,™ÐÁ4?Hé}ŸtX‹#t“KÌSU¹Ç <’Aðadj!6¦Ÿè-î, 6A²1pßduáYJ›L³…£ŽÃØ–B5b·pi›Ü£I“*0å<áãÔ‡”…þàÁÜÁ·gΛ¾Î¤&1Ÿ¦úràMÖÊ %óùPNgÒÊ™|<™ü¾ù¿Jíü'ªñÕ#F›b —ncJLµ»ŒµhÔÓ¸]Åoÿ1ØÑþJì²úWØvº€{za—Áöy]k¦üŽ×i<ðº6=ÐA¯7r÷ät&­œË“éÕùlG+n»<ü§.£:ê¶ ³«5äLèýªM÷Ä5`÷ÃßEuþ endstream endobj 3367 0 obj [3350 0 R 3351 0 R 3352 0 R 3356 0 R 3357 0 R 3358 0 R 3361 0 R 3362 0 R 3364 0 R 3365 0 R] endobj 3368 0 obj << /F7 577 0 R /F13 1716 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F14 1720 0 R >> endobj 3345 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3368 0 R >> endobj 3371 0 obj [3369 0 R/XYZ 160.67 686.13] endobj 3372 0 obj << /Rect[299.4 654.95 397.95 666.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgWarn) >> >> endobj 3373 0 obj << /Rect[304.63 634.89 408.41 646.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:ConfMsgError) >> >> endobj 3374 0 obj << /Rect[349.37 614.83 449.85 625.96] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:TryCompileC) >> >> endobj 3375 0 obj << /Rect[184.57 602.88 282.89 614.01] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:TryCompileC) >> >> endobj 3376 0 obj << /Rect[309.55 570.86 392.42 581.99] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:TryLinkC) >> >> endobj 3377 0 obj << /Rect[304.32 550.8 381.96 561.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:TryRunC) >> >> endobj 3378 0 obj [3369 0 R/XYZ 160.67 536.64] endobj 3379 0 obj << /Rect[416.67 486.05 431.4 494.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.7) >> >> endobj 3380 0 obj [3369 0 R/XYZ 160.67 435.16] endobj 3381 0 obj [3369 0 R/XYZ 160.67 376.69] endobj 3382 0 obj [3369 0 R/XYZ 160.67 376.69] endobj 3383 0 obj [3369 0 R/XYZ 160.67 338.66] endobj 3384 0 obj [3369 0 R/XYZ 160.67 338.66] endobj 3385 0 obj [3369 0 R/XYZ 160.67 301.74] endobj 3386 0 obj [3369 0 R/XYZ 160.67 301.74] endobj 3387 0 obj [3369 0 R/XYZ 160.67 251.64] endobj 3388 0 obj [3369 0 R/XYZ 160.67 251.64] endobj 3389 0 obj [3369 0 R/XYZ 160.67 212.62] endobj 3390 0 obj [3369 0 R/XYZ 160.67 154.14] endobj 3391 0 obj [3369 0 R/XYZ 160.67 154.14] endobj 3392 0 obj << /Filter[/FlateDecode] /Length 2324 >> stream xÚµXkÛºýÞ_á2°f$>ô..à8›\·oàÝÜ hŠ@±é¬[ZHòÝèï ‡ÔÓÞM‹Û/–8¤Éá™™CO|æû“oóx7y}ÿê­œ$, '÷»I³PNfB°Úoþáñ žþóþ¯¯ÞF͘@²DN|Ó½ømþáþz=qÎ=è˜ÎBá{ó)¼÷·‹ÛÕÛå»ëù4Þýòv…ãïíÇÕ[wôÙ|õ†^~Ÿ|¼^Î_ß\ßÑ´q3í̼ÌxdÚ0÷|C&×÷°9yš¾dQ0™… ùäíˆÅʵ÷“;Øk×sóþî݇K„˜R a›Eù4_¯hÅ­3‡ 먬š‚W…÷ºF—'jUÙ!Û§%5ê­ϤÝ8ç1½ÉE¾{_}û”–ùpÎÐg±;œÝ1ßÔY‘·°kŠÃ.ù™‹€q †¨g=ƒK¢Ž§©=ð4ãèyO78äÕ>Lc³(×ëõízäê„ÉðOp5_…ÝÙ¬«¯Ë²(G¾™=ãk¡˜à]°3¾–‹ÈÕÏ“:ða èøÚÎFk" Òýúïç½ÝB‘kH­Ñ-nßXÞ\w+o˜†.W<ôªâ ŸÒ[Qërl\ty3žôW^žÅá1ÛëÅÈåœEϹ< YÔwÃLIOÿØèG»®úAŸ_KÀñóñÇ/®Ågáå¥ð€³$èa•º>–9²Ó½‰÷R_ìô»×iNæ?¦Jyéþ¨©™æ[z)òý‰ÞžÝEùÝÂí=;»d.Ü G«WŒsÛÇñ.;ÌÌf<µ£|˜†s„™!_8Àÿ™tHŤËa2 9 Vçý‹n ,]ûH­ÑÝ,Wû™ôœ>>–zöGvHk½%ëW´œ.¥Œ˜É¤¿êòt“åßG.‡z†¼àHÑ_ö•]ÿ(speœú©#„‘²ëv2 ÝV¨ëÏ»½²î#µF ´þ8*ŠAò'¸\0öW\žÖÇ|äqa¨yÙã~Œ©¹ ĺS*Ô:Bv„Q$ŽåØ5…áÊûPê­þÌU”›åGÊÛ9¶¿ËÔÌiŒµ®êj¸DŽ0pç=Ç<{9nþxÀ_Ì!T1ì€ðßÑ€ûZ¦Pý®wP„FYÜgÊœŠ„¤úf -#ðõ)Ûïé­<æƒa¸ª²ªí7ÙÁšqR#¡hxVÑN ÞŽi§”xô½9Bä"O¤ðVEŸˆf@) àFÕd¡ ÷½¼°)Ù _÷H´‘Tè—²ˆIþ —¶öUiB"Û9weq ÙEiÀ s²¹¶'  E÷$÷éFSZ2‡Ï–ÉBð“©ÿßvøŸÒ1ÞV„‚w®¨ŸŽmº²öÀ ³ªí«°g/V@o‘oô0iÑÊ›¤Å“ÅMÎbÍZ«Å±¬Œs ]¸ŸÍ^ã”@Ñ£„9ߎj„£ˆº‡ªË€î2€Ô¯ò M<¬ Pÿb÷Ý>ƒó˜ÉXš¼"cu1N b›2~9N źÂC€Òû¦kBN7]Uø6³98ãJ ŠêÐ}Wì÷¦`=QˆÃ‘¦Çš$Ü8ˆ’’³(^õÎ*]¼•)m8Íjñq}G×àN!–u›e ±ŒLÞ±W‰;V 7Ÿ°>¸bÃÂç˼b©VÑC%p%oåiÔÈS0桟âÞ¹pAV’¤G“ìàšOßjê«´ô óvý@Mëñ¾´t]mOÔaÏi«(yº¼rQ6‚UœùnŸµ.c4˜6:F)ö¤æ& ïúðX£?ˆ]>eÕKJX³xG s+…×oŒâüµ°º¨…y[£œ–-Œ×s£uGt–xSí‰aH|æÀáÙÜ?†Ò&D¾,†›ðr€$†±Þ81ÜÌ&ºbXá^; ùŠa¬ŠhšõõüÍÍru=ˆM¸þ† T cSIä¡3¸ØìX-Þ¯†¥Rçþ¬•písêßI]ààŽºh¿Õ4ʨa3ˆâL­¶·lP?=OŸ‘œäR—z‘F%Hà 6ÒÈRDg52ä©!òCVÕEy'q[‘zÀ&vepvÈAbð—É¥`èŠû‹ÂYô…ó_þœ/Û endstream endobj 3393 0 obj [3372 0 R 3373 0 R 3374 0 R 3375 0 R 3376 0 R 3377 0 R 3379 0 R] endobj 3394 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F6 539 0 R >> endobj 3370 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3394 0 R >> endobj 3397 0 obj [3395 0 R/XYZ 106.87 686.13] endobj 3398 0 obj [3395 0 R/XYZ 106.87 668.13] endobj 3399 0 obj [3395 0 R/XYZ 106.87 668.13] endobj 3400 0 obj [3395 0 R/XYZ 106.87 629.78] endobj 3401 0 obj [3395 0 R/XYZ 106.87 629.78] endobj 3402 0 obj [3395 0 R/XYZ 106.87 581.51] endobj 3403 0 obj [3395 0 R/XYZ 106.87 581.51] endobj 3404 0 obj [3395 0 R/XYZ 106.87 530.72] endobj 3405 0 obj [3395 0 R/XYZ 106.87 472.49] endobj 3406 0 obj [3395 0 R/XYZ 106.87 472.49] endobj 3407 0 obj << /Filter[/FlateDecode] /Length 1015 >> stream xÚ…Vßs£8 ~¿¿‚G˜¹¸`c0i“tr“KwšìÞÃõæ†&N–Y~l§ÿýI–Iôº/`KB–?}’p|æûÎÑ1¯Gç~{·ˆ„%‘³=8"d*r&Bàk;ûÛ B&˜7‰ãØýò<ŸÍËõ|æAè><­ËǯÏSO w»|Z£VóÍvãý³ýãn^ýrÅ"åøÆ'Ô;ó­9=žLqcù<ŸÎVpbgî³Ðys’ˆ)aÌ"À÷º}îlÀk_h}=®¿Ž¢ŠXÚ ¦Þ„«È}Å—[Ò3×iAâùé‘ÖÍ÷´¡Õ›Ç#·ló=n¥ýV“®ÖÑw]t]lB1’Ÿ]]ÕYY˜+NŸ³ „wÀiâ*«ù•N÷yVØ]ž½ViõNÉjʶØÓòÅMkR–ç3ݪÖV×”7®C÷~3#IYè}š¤$aQôë$Yõ’DûA’®¾«©'÷qÄ 1¿ËÕ6juQó€‰ÈªÑÉØLÆÖorî¶µ¦% W»òtÎß#m¯h“Ò@¸×̦+VLÄýtý•å9Ø€mVìòv? T 4¥0&³»çëéý *k4 („µN!§gBüFÎ> z,¬åï`W«‰z×dÄÄüb7p ÎR‚ù]_Nš~›.Wùð¼‰à¡!ÀšâO¾Ï¢ ùÝ=ÓÊR¿©Zý9GƒØ&MR´ã²ÇR+дçîaµ¼1,„ÔªO(곘[õjö!GCŸ}Ž ©ˆ£B&–£(Bþ0 Eq¯€ªÇЉä>ñÑrnqÃÕ¢¬NiŽ9r»@4i6J=°<éÈ3É‹][ÕºFÿ¶—ów |ÅT‡­/qSPCìX(µ —i·¨ôÉÆA«˜Å OBŸÎ ÆkZwKhbÕ[Vß2B:ö¶Jp?`<¼Ž6áOº›â\ÁaÂwl¸qˆx¼pÛ*mlî_ÏÇ ˜P4<ö#jsÎTׯÊ3Þᧇ \ê»Ú‡ aƒº‘lPœ:¼ßñÎe[ÚJ„-”¾zú3ý¡Y>J‰ ®åÖ9<âœ2¸ïvº®)-²!lR"õ{ä9”y^b0oÄDôÐ6ľ!t¦\z2„âÍÒ×\ן×-|‹SÙ¬¿> endobj 3396 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3408 0 R >> endobj 3411 0 obj [3409 0 R/XYZ 160.67 686.13] endobj 3412 0 obj << /Filter[/FlateDecode] /Length 144 >> stream xÚ==à ƒ÷žâ0„ð§FB MU‘Š<ºT]Ûûß Hlë³eàŒsøÂ! LØG –ÙðưAC§35Ï/"%§o¼õqüw„fV?°¿º†L;)%©€vƒâÄQ9’‚›ßR\—’5Šàº¥Ö$–ä[ÚÏ™KóižTˆ:Ϋ›îao·ðòZe'á endstream endobj 3413 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 3410 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3413 0 R >> endobj 3416 0 obj [3414 0 R/XYZ 106.87 686.13] endobj 3417 0 obj [3414 0 R/XYZ 106.87 668.13] endobj 3418 0 obj [3414 0 R/XYZ 106.87 441.35] endobj 3419 0 obj [3414 0 R/XYZ 106.87 376.09] endobj 3420 0 obj [3414 0 R/XYZ 106.87 376.09] endobj 3421 0 obj << /Rect[325.19 197.08 448.81 208.21] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:prompt-invisible) >> >> endobj 3422 0 obj << /Filter[/FlateDecode] /Length 1279 >> stream xÚVKoã6¾÷WA3zQÅn€vÝ] иØCÝcÓ6YrE*_ö·w†CÊŠãæÐ‹$9Ão>~3T³86}ýü2¿þă4fEÌ×A–³ªfIV0žó†ï·bodͲ2ý5ÿj=rVVè³¼f•];ßJZw{÷?x¨·²iÈ'jVÎ…'¬¬­Ïíoâ!JË<ó,E£;üJCÕ.›a%5¾’PÑ®DÓµ’ÌËn·ˬQÞ¢ZŒˆ÷½DÜvïjÜ;-Æk€€{wz{Š-?m¶ÂжKÑRôûh–V€¼‚YZC¬ ØJXÍ­Ç å /êPh$òié=ÂK£#Ä.´ ±hÆyîøóFr„.”!vãP‹_w€°EhÄÓNU°Ûßw8ó¨,ƒYQYw„O»PY®¥0Coèké-,Œ,÷0ë®ßéSBLQyBwâAžRšÖ,/Ü=ì÷–®7úŠö ƒV톆ßT›¥ÌBý8wúLr–å}¦uÎxa#&œ%d”æá½ögä–&¬JHn˜XU¡píÕi:œ3Î_•÷¹ôR¬®ªvG‹”—< ZÄÈ7yý¸f·_žFÎ9+·F­ ¤2U>)m4ˆ¤H'’Ê~‰‡O«»µ£ô34ö[imRA镤ÂÉÜIà(ádê=M¥bIé`béʵj^œx^²Ø³¨óÜKuÖ5M‡¸¿'.V+eT׊†ÆԂ蕸oHPþ½Ç¨6­Â¼°$1ûgJ)FN(ÏX•Y P»½95ÉÔùöÅÉAcÓ=6ʼü8÷Ànœ†ÕÍmi1ÛlâÌ1Ÿ¶/œ¢M4(º/†Œ¶ýàzß~¬U¸,ÀiQ«Ý¾ñ|™xfgòªSð©YÁ§ÉÍ8ÔÑ;|q”ÿÍi¶3ÎêŠüH<·=ísÀÃè:­ÀÞs Ág¶å¡Ó–騭¬$òÒ:«Õû(¿›¾•ÌÐ.Q®5­i²íÜâ~3ì$‰A¿Hôˆwšç"\D>W$éH¦5wÇзÄÃåÅÛËEøÇÝÇßÑøú|{7'w˜[@j°»­gxÿíÃ"ZD7/ÈK VÕS4?»œä“8%èU™Bë¥8ËÆs²tyšôii½Æ%øöïÃöÍWì ö{Ù³®ß%?n–+Jdù ¯Ç¦þüêx-ÂõÄó5 Q¤/˜pÁ'‚»þi@µ~ ÁÝ¥J+¨³ 2ùd¼#¾ GFÊÀ¸€ˆ‰cGØ}åvƒöñúÂŽD5–³:Ÿ&/õR¸Ò†'P¥å?ƒl—R/"¸ÖÒÜîÀ¹<Üa5 Úà(;Ö0N}ï…»ñÇ-ƒ¶}cúÛ5·Iõòœ%)þEÕþ¤$gªu´œ’^é®Kå4ÆàW oŸi@ꫳ,Yŧ¥ñ)ª@£(ǸôÂÅ›> endobj 3415 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3424 0 R >> endobj 3427 0 obj [3425 0 R/XYZ 160.67 686.13] endobj 3428 0 obj [3425 0 R/XYZ 160.67 668.13] endobj 3429 0 obj [3425 0 R/XYZ 160.67 668.13] endobj 3430 0 obj [3425 0 R/XYZ 160.67 628.71] endobj 3431 0 obj [3425 0 R/XYZ 160.67 482.84] endobj 3432 0 obj << /Filter[/FlateDecode] /Length 1365 >> stream xÚ•WßÛ6 ~ß_t{P°Zµ%ÿ°·öºëЭۚ=í6ÀåÄ«c]-çîòߥısöZ¢¨äGRY„< ›…ýùqñÃêÅ›xQð"]¬êEžó4^Rò¾_ÿɄ˿V?½x“u"PJ’Eh÷_Ý\ýººþ} G$‹¾ ²,c«›k\‰Ùû7´õáæúÝ;´´¸^Ù;ÓéiÄsam6›N÷Jéšn>¡K»{ßÖË Îb6liåG-‚pjO›Šx–{%35E<ö&†~¯¦§EÈ‹Èí?_IX njFF¼NM›í+±·òд-z$Y§rM=6NÒþ&¬t>«~×tekîd‹0‰µ¥º*Ðup+’¬Uþ[¶7û²mSˆyÌ£Ôaøûõa$OQBhê®y$ÉÌ vævÉljMQÌe<Êl¦<‹¬`ˆXT‘°«¶)2Ó+Cð˜@ê¯ônWv¸F¬tàC°²W´Z)ô³S­\ŠŒPYYUM·¡õzß­‡Fw†N š–/ÑXú¬}ت¶åSŒ2á2óaùùOØ?j=ùÓ¸`+² ~àqbjݶ>X\R rŠjà ìTQ‘óE\½™eªðxîÐMgG?i/ ¹ô oÍ¥¼{×”>µDY†U‚é*Ä8ZA"böí÷6ð´Ç 5·¼Íýí’ôNjùXíYkž¡BbµÂ7ǃ´Ì¸Lñæ·½,#ÒÂã7ôUiú¥*aßUªßØÕÜg×Õã]Ù%ø“'ÂfÕn|Û¥ñ´ÚÃŒg¾–,þN!øY¥Þõêù­Cäl¥ß GrHV÷zG4¾á Ç ˜õj½ïMCvþ£E"yXøJ”®ßvKaW)¡DîQÆû¡Ñ˜ì„l(¿X¥+›±¦CGC7RkwÊÇ£â¬ãJ}¡WF“S¿¶V]œrfÊC@áÊýV6»&)ÎÈœçžôï.?©ºig?Îx˜ž:?ÞõÐ [*xå<Š(Á©kšˆ#J€Nkå+>÷Û«MÙW$Ûjµ{•r â_ €)ȰÝ6Þ&2!gªÖ½[(»©emi ï òW?ÑÚå½,öpLËm‰[÷ÈI´\œ<²PK­õÄr Š4,(ìÓ(؞Ơ‚ˆ±7 É®hk´lVñM7‚ë6¼tå|ÒCÛð)›ué‚Gñxvܰ!¤Œ…1²xä» ²ˆY3ÕÖæ8 ™î§×'ñé¡qavBóOج½·Fâ#“ÌBS¿ÜݵÊ]zÔÄ!×›><þ3úæ–¶«šZ楷KòÄÇekëní4Y&JiÛbªÃ2@rše9(˾u¹7êØ·z'6n¦unYâÌFˆ§¾ý5ÍËuÄoãC±ÁOï–…šÇߺ:Œiœú6ò’ŽÄÇHœýÿÞW^¾.¹xÝws•¦~ ñH¡µŽ3ô”"*`D4ÝÐv·ìF!Wì¡Ý·ÍÁ§Žñy8Žb20O!ÏΦè/0Dnˆ4,‡iòâä Ý:ÇqNÛ»ò“†L½sFñá–ê9í^d¸º£ÎP5õÁmØáFàÝ@ZÛ¦u˶•âk¯óߣæg¹›1§î9Ëé5f{˜ÄÊwx?èàdq: õ8P¤aÒgo½•×ñ=Ìðw¤ÁJV½»ÆøAo´—°!¤ìÁ6ߊ`YA^ôæ¹W¶z¿ÙºŠÎMÚ ½ú¼ozUù§ÁWÿC2’ endstream endobj 3433 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F8 643 0 R /F5 535 0 R >> endobj 3426 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3433 0 R >> endobj 3436 0 obj [3434 0 R/XYZ 106.87 686.13] endobj 3437 0 obj [3434 0 R/XYZ 106.87 668.13] endobj 3438 0 obj [3434 0 R/XYZ 106.87 389.77] endobj 3439 0 obj [3434 0 R/XYZ 106.87 238.96] endobj 3440 0 obj [3434 0 R/XYZ 106.87 210.2] endobj 3441 0 obj [3434 0 R/XYZ 106.87 150.61] endobj 3442 0 obj << /Filter[/FlateDecode] /Length 1336 >> stream xÚ¥X[›F~ï¯@‘*ai™Âܤ*R¢6Q*5©šíSœwÉâxwóï{3Ø^ðú²~10œù8—ï\ÆALâ8¸ úËÇàýõoD@c"ep½ 'JQÂ$IipýÇ·ð]]Ï"–„Ú,Ê'¸KEønöýú¯~'©Âmq‰¸ÿúÓØº-['¢‚Œdr`„±^È®ò{í$øF‚*"xàP¾·S’¦þ]ôc ÊÃß »6ÝÛ1Œ „f^ôû,¢<ž¢¥$cÚý ‰ »Éa€z€ETö P|xÀÝt­[ôšcÌÖ>T¡Õ¦ÕîÖ.ÝÕ‹Io ³Å(REÑÇÆÛ©$r×Ì>fPâ™RÐ$0ó©ãÑH· Hƒ¶(Îç8!¡}[Èݧ60ýâMÞ\½qýTi·zD¯(ðï —õKå¶;zýc ßÂâíÜÒŽÂŒQT_oFP˜¼qŽ…tX} œc?A|˜LÃÕŒÊp]ue1)þ٘Ç7&UH¼"'ûgOÔ~­ÑûDÔE‰Ô‹+Lg||«¦OòÂBC_•Æ  Dz´C€‚BÖÜÀøw—£Â%’‡zõðõ—¿óûž À05ü“Aùx»i«Ê¢ÄcinÝÞ®V9T×þ}J\¡l»gP{\ÓŒÄéNJM¬Pñ6=¯@oVÞ@–0’°‰….7U©›ñ× }nó÷àɘLÈÇ€ïª/Ÿ™û«äWÇßÍø(Ò]·¤ôσ]/tžIœÄý7G)óZýò?:Ùë— endstream endobj 3443 0 obj << /F5 535 0 R /F8 643 0 R /F4 527 0 R /F14 1720 0 R >> endobj 3435 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3443 0 R >> endobj 3446 0 obj [3444 0 R/XYZ 160.67 686.13] endobj 3447 0 obj [3444 0 R/XYZ 160.67 629.94] endobj 3448 0 obj [3444 0 R/XYZ 160.67 548.52] endobj 3449 0 obj [3444 0 R/XYZ 160.67 465.99] endobj 3450 0 obj [3444 0 R/XYZ 160.67 407.92] endobj 3451 0 obj [3444 0 R/XYZ 160.67 350.4] endobj 3452 0 obj [3444 0 R/XYZ 160.67 292.06] endobj 3453 0 obj [3444 0 R/XYZ 160.67 210.08] endobj 3454 0 obj << /Rect[334.13 155.05 364.08 163.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.3.12) >> >> endobj 3455 0 obj << /Filter[/FlateDecode] /Length 1510 >> stream xÚXÉrã6½ç+t U 1ÄÂ탧ìIMª2ãŠ]™¤â( ²Ó¤ÂŶþ>Ýh€”hEÒEÄÚ@¿~½@³ˆEÑìqf??Ï>Þø¤f9Ë“Ùýz–e,Q³PJ–Aÿú¯@5ÿûþ—ŸÒaà9Ëø,²óW··7_®?ÿ1‡=2¸bó0IÒàîÏ/_oï>ßÑÖQ|("Ų¾©×õΡ妑$YžØjoð0?§„¨ªâÏä2<õ›é.Gs\}Ëä–ŽÀclZb¸J§`O4¹÷]o[BÐ;§wÆÙ¨vzNíÝ,êV_»–ž ÷ PKðÑI°+‚Û¶Ù&]oaÙ˜Ê"—ÊìrȰíÇô¿½y™ÇK@ "}Gºzª… ¶¼®UÞAljê0ÕŽü~óÛǯw7?uM¯Oƒ®dŽüô¨gçP§@‚lW^‚ý‘ ',peUJ‚¦ÇD¶#•pÜ–Øð%ÄÐMcˆUeážmjúȆ²g?M 2qh‚ Ö†ÿ“9œ 8ɵĶn»m]½#we‡t‹©9°ø+K4$ÖPh…To¼³WE¿êÓ„ÓéŒsÇœ›<Ë/äÙ¡v§#Û@Þ™ô› W VàG9ÒáÀƒˆÓÊ´Ý¢E„ÑX«ã¼%6<»¬”–ÄÔm¡¾#y*XøÊe<?²\:zà4}¥/l§ ¤hlð²J C ”…ÅÓš%b>Ý„ÿÁ óQÅ(¥8äÃVkjÞAÆwbÉš3‘HA‘Ã7s”Œ‹ý%P'ïÍ?Ì6u dû¶SÂA¦Ä†Õ-ŽY€ÿò„/›á•tPÙ´ý¿æ–à6ép,–+j,¨Î§ÎcÑ)A<:¢^AøE7lZJbÜUk05¼Ym)…›Àòçƒ9í™5ê5äFé+㞀ïhö¥î\¡W‰Mè3XÿOŒ— ÆÓ‹=^¼>¼š²¤\â+Hl$žé M•w.Å9> endobj 3445 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3457 0 R >> endobj 3460 0 obj [3458 0 R/XYZ 106.87 686.13] endobj 3461 0 obj << /Rect[232.41 621.3 257.38 630.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(subsection.A.2.4) >> >> endobj 3462 0 obj [3458 0 R/XYZ 106.87 606.42] endobj 3463 0 obj [3458 0 R/XYZ 106.87 525.38] endobj 3464 0 obj [3458 0 R/XYZ 106.87 419.32] endobj 3465 0 obj << /Filter[/FlateDecode] /Length 2277 >> stream xÚµYIãÆ¾çW¾„B6k㟜ēØH2ƒŒŒ$p[*uÓC‘2—^ÿø¼¥Š¤HuÏ\|k_Þò½ï•6qÇ›û }þºùÓîæ]ºÉ£<Ù쎥£,Ù„Jág÷—ƒo"mÃ4Mƒ÷?ì>ü°ÛBŸþüþŸ»m%4þ}ûÓîû›wzZAfQ’mbš-¥Á~X[C™Ò0è*kœßÛ¶Ø÷åãVf݆R è8=ì©ã,øîˆm2è,ï“ûˆXF™qû„a3ô0-<7]nj»c¤2N"“Mv*¾ÐN‹>´õá-Í^Ÿð†uR2,©o‚•v¨lwãÝЀe…&—¢èt\”ã ln0j´*,ù;vâd~P¾\œÀ™Ýâ€ïÿQ|Ú²é¨$'¬®ËîÁ"â¦Âár3r€=“8{ÂnþÆíTïË¢ª^¸Ó›`,ÂÖI§ÐL¡+¯Á°Šã(õ~ZI:Žt2ºêb.ØÀàÏ×fšÉÉUÇhWšGÞ!²‹Pðaµ’ŠROXš3B}çì–‚Ú,36Z` /ÈD†Å(µt“±¬‚± T‘pÓ“6ì±*¢9Bkœ/‚™ µhDI<ªü‚ù™™èÈZ¤À‹²9ÕÑ#Õáʯ|[‚ºZW~>Wå¾ìAçd_Rä¾&±582SÀ- . îr 8Ó×”ŸÊ(ÍßÔ ×ýÍ ð£Ü_âªÆäJcx–_Wˤ‘| $fA0ÂÛ2.8,V&)RC‚l¦Í7AMfâY𕟵æ p àÙHü‹ŸŸþ}þðüŸîãOo [ì»-ª­EæˆÐÚG †dšÐ v§Íuejô¤Ë³]l’ê •àò -øe‡CÑ=‘QjIážÆ´B X%Т¹¬rŸ)àJFcÅôf²X6 "˜¼tu!4áõû¨HËÅ}dîp¶ãjá>íýp²#Öç)SÕ®'†*sóÓ„Îþ2X™—Lü L‰¬‘!8‘”ó‹í(R¤ùb8·fa¡µYjìy ´Uö؇}¶D°á¬_óamáSÕ1‚ €a„n «üélÏ£Øíg Û¼ÈWlã; YÜÛ2> ‘:ÆÜ„[‡³Û²Ý%#‹Ëawh š³ÌgP™× {’Õ'líÕW¯”+¦Øñ5B°á<+ ª‡I‡aˆÔ*Ræ"QrÇ#ºä"Ç+Ç_’Ê"Äú„Þú"îK&ÈL¤ÁDV_ÖÔGˆo 30pÅÊ2Ñcv¶&ÙÕdþTa‡Èb®“y×S7¯¦U!o‚ c"5‹’è‰:È`âÞÔ°•Èæ2è‰4ÊF‡<ŸV¬_ÍA÷Ð ˜!ájG†Já¶™ !kŒò®ÉQÿŽrg|óЂxMs¼oäüò‚ó{±(>@–¼ßh´2Pk]ššûô8g†¬Å½7ðLÏ»¡LŒ gÛÊ¥ëxʨ3¢î@´ËŠ«—«ºl{*õÖ€®‰ZïGž¯FãŸ%'Ìì=ÅK]ä&Kë”nÈ8Aÿ¸¥ø Œó£7ÁÑþ^7Ö/³Léh°L%AT»ÊÃ$Ral95Œ®е*ž‰ ÀøG†‹Žƒô6Â÷ö–ìì+ÆgCáKíA\ÌðS²V:»ÐH.æÉ%k¾Ù"Xm€£YåÒ«K.ËÀòjÁÕÆD†¯¬ƒòt²‡Œ‰E“Å‘`‹œÉ¤fz´ÂV¨œ+Û[º¿ñ÷Of÷7c¤Jüñfaê2·ÆØY#Ýý¼ôè&VóTîíÑà‘²î –Ååñ±Á_yÚ…éÍ+W܉nÔQú‘¸—¶4 Šû¢¤4)&ÿ4–NOc3™ GšTßðˆÉ¨qоŠ`³´ôÊm×&ÓøM)mO“é‘Iœ?ÕDÁž¸¶:c2?£ßÕ=0¥øÀ‡•Ò÷Õp°‹™ÿ[ú­4³ÇÓU`¦8ø{^À‡Úûxyx¼Æ ՜ݖÂu±€‚) É.s6 Îz.ghf9Cá686-°Ïjhu§ØîE,bøiø+Ö×L#3¾2n¯`f–B>0GMù ækhùÚ;Ú¨´Ì–(–‹„²U°ˆš[±ÝÁ#Ò<5¹8ö°‹ãè‹W0zÜõ®5ÞÁ8äIy®ÐJ÷„1&ÌF{ëT>>\€"FÔñ‡Ê’=rxVrÆÚf/`Î;h=÷va ¨v”ðÏoå¸>=üÝÿ†Ä± endstream endobj 3466 0 obj [3461 0 R] endobj 3467 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F5 535 0 R /F14 1720 0 R /F11 1186 0 R /F6 539 0 R >> endobj 3459 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3467 0 R >> endobj 3470 0 obj [3468 0 R/XYZ 160.67 686.13] endobj 3471 0 obj [3468 0 R/XYZ 160.67 461.99] endobj 3472 0 obj [3468 0 R/XYZ 160.67 431.05] endobj 3473 0 obj [3468 0 R/XYZ 160.67 339.44] endobj 3474 0 obj [3468 0 R/XYZ 160.67 271.43] endobj 3475 0 obj [3468 0 R/XYZ 160.67 179.24] endobj 3476 0 obj << /Filter[/FlateDecode] /Length 1029 >> stream xÚµVKÛ6¾÷WèH+FâC¤ÐÓ»)ÜCjÀš¢ÉAkÓk5¶¤ŠRœý÷%9”,Ë^yEO¤Èy~óÍPA„£(xÜò[ðqõá Rœ&ÁjH‰„”bi¾þF„$³o«ß?|½ ‰S,ã r÷÷‹Åãç‡ù—™Ñ¡èÏÂ$hù×ç?ËùT“^5ôº!îÄødN!Ä –Ä[ü·ÍÌ8GÙ^3"PcýÔ” %{­$Æ’y­ðxáW˜¼ã–Y)+s¼pK1IÎÝ&osK;·aQ^sÍq”]/.\“ž£Œ%¸¦·2«º|®•Ö—îNøÐ}uá>Æ”OºSæ!PËa_®€Ÿ°w#M¨~æÍµ°³~^Á ¢ïÇ`*b[jÃò¨Ãò6özì6ÅüÈ›ÄãàqåÆ b†)Ìb*C¿ßc: ã˜pô±Í÷ãApTVM^zd$Æ)¥(Æ„wFp AÅì$ÈæÝ迃á:$Nä™Ì  §ÆUìP³"¥‰0NQQ6°Éžf¡¦¬ý÷qg°‚Xž|Zf».‡¬ðÛ,ßë_Íž0sc%wK«¬„´8-dÖƒ“[Û¢ìà¤ÜÂÚ씃-ìB0l£×Æž©æ?jí ƒ5âʤ P©uþ´Wfd3ÆÐj—k‚bÀ>÷ù¡Úçj‡O6˜»G£ÙÑ&„Ú@|1ª+/º[ ÑHÛ<}/„‹)eO—EóÂ÷I[w€ –C\Ÿ)dJ̓@T¶xŸð‹§? |žé'žô P¶MÕ6afZ¿Keð¤Æã`ñ ž§3ÒóœÜày1Åsq&3ÁóUÊ:óˆ@i-7)C­†êS`©YµòWÇ]ÖôІ»¬ªÀF’ùö„¨ÛE“ž¢Þ„ªÕ¹¯A(ÔµGsCf&”or‹!½aõ « Sÿ+#)ÊšµMÁv©H|¦B¢¯„‹½Ò/ºQ{"ж¬á ä³âYé;s"%‚™ad®Ì‰¡ÑnPÉÖ îá3o`Õíz­ÔFãWfÄ| -ÝõDt¥ûc¤a`¨unÓP›»‹~°OÇÙw5ÆŠ¤˜uÆ1ßïÁ—ù[h²ºéBP~¼ø¬Œ€®êPNtÙÖk/è1õ³­îç q8%y(}6>z?ðæn¤éq*"µ-½ö>D˜u}ƒ‚œÓî͵d7(¸xÃsµ¸ÙÆ”W]P0í(˜Z &ž‚ dn:Ü \\`бâ™b”z¦˜ÓîLû†•)4"˜Ó)ª˜WM`&†ìC‡ŒéÇ;1†^0†C‡Œ¡Ž1NÝñCœóƒ¿Æ"© Sá#‚üòù%Xô endstream endobj 3477 0 obj << /F4 527 0 R /F7 577 0 R /F6 539 0 R /F8 643 0 R /F5 535 0 R /F14 1720 0 R >> endobj 3469 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3477 0 R >> endobj 3480 0 obj [3478 0 R/XYZ 106.87 686.13] endobj 3481 0 obj [3478 0 R/XYZ 106.87 668.13] endobj 3482 0 obj [3478 0 R/XYZ 106.87 480.68] endobj 3483 0 obj [3478 0 R/XYZ 106.87 411.84] endobj 3484 0 obj [3478 0 R/XYZ 106.87 332.44] endobj 3485 0 obj [3478 0 R/XYZ 106.87 249.16] endobj 3486 0 obj [3478 0 R/XYZ 106.87 169.75] endobj 3487 0 obj << /Filter[/FlateDecode] /Length 1372 >> stream xÚWKsã6 ¾÷WèЃ<³b$’z³“¤MgÛt¶ÎôÐô H´­®,y$¹Ýüû©W¼Öž‘ ~?BŽÏ|ßÙ;zøÉù¸½yˆ”¥‘³Ý9B²$rÁZÙ)/áîœKô‘pMÇÚóUE“ܲ Îxl²ÌîînŸ?m—• ÃQRâQY8+3ʸ. ŽhLSx$½Óš¸ÁËèCrß}Üæ— &ÂÅMŸÜbÁüÈVý©/hi½ž´SS¬ŠtVI&ƒéYõÉ„¶*PD#8í IDs™Y+wˈΙ¼vá¦J³.U¥+@pºŽÚjM^†¨æW gÞ°$!"$»)¡¡À +-ŠÂÜŒ¶è°¼¢T—:)]€>tø·‘—ÌgÈ›Tž¶XÐk«ª¬7wÚ,Y"rD›šz² Ø,gÈDj@)„Ca(‰™é>ûbYõçAáLßŃ™Xð,iÐc"kø|Du½Ê úÔôˆZSÓïÈB»«MndºxcäxEÞô‰Ó€_+kb•S*… YkLM˜ç³it5 Äœïâ£üÅᥒú]^e—pÂ.&Ï`Oµ±«…EQÇ6u(YE¼“FãÐÝgmlmÌ"ê"ŽF³Kª†…‰túÀ̾ڈðc™ÛN$ZéDúkˆ˜é\éDžOôøf=²m’\ÊÐb®°ŒoãKÙkÖik±.@Îr;u0ž(%¡I‰öm´‡„àGÞÔ]Yoô}>y}ãaÀ+x 0)<ã<Ÿ¿ÏçU<ï|/9Üž„¾=wZnžåX)M;2è_" #ágHmøNA°=è'Ar[¨ ePÔfuœ©¾’^ö`Yè¨Ú|£µ( é¿UºòW0•>gñØ‘'+˜z…:)à€udgš+øÊX¾(|e,gøâ˜¤Ö…ªó7Rš#D¡A76-ƒ4NýÎ÷ƽ­ÐËÀ¶ªË³ºVæmc$P@ɽ¿“€®ƒŸÀ;˜à§kàÃÍÙ•ûs«¾ãŸe©|%Ÿ•‡ÍÃ’®ã¶Óèz8NÎÞý¤#£wPžpb,q.ˆWa¤ªæJ^ .Í{ŠŸÜf{ŽÏâÌVEYïG³:SIÂ|>{Ö§W»"Õ«¾[ID…ØÒÙDþûLgr9dB—“W4ý„>'é åY:.í¸’“ÛJ·[٪뭣³œ;5vv —QÂb›Š~úõþ†]tEcç5”ñ¥ÇzìCÁPþîŒ ³>@NQšdZÄøú&î endstream endobj 3488 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F14 1720 0 R /F8 643 0 R >> endobj 3479 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3488 0 R >> endobj 3491 0 obj [3489 0 R/XYZ 160.67 686.13] endobj 3492 0 obj [3489 0 R/XYZ 160.67 668.13] endobj 3493 0 obj [3489 0 R/XYZ 160.67 595.97] endobj 3494 0 obj [3489 0 R/XYZ 160.67 432.54] endobj 3495 0 obj [3489 0 R/XYZ 160.67 367.52] endobj 3496 0 obj [3489 0 R/XYZ 160.67 302.22] endobj 3497 0 obj [3489 0 R/XYZ 160.67 201.61] endobj 3498 0 obj << /Filter[/FlateDecode] /Length 1481 >> stream xÚÝX[oÛ6~߯ðÃh bÅ‹(ªXth²eÀڠɀ Û‰I”Ê¢§KÛüûòP¶l9qôiO$Ežûw.ö"¦q¼¸]øåçÅOW¯Îä"£™Z\Ý,´¦J."!¨†ó»¿çzùÏÕ¯¯ÎÒÍÎ2ªÙ"ö÷o/.Nß¿;ÿc 4‚¼¥ËH©”\þùþÃÅåù¥#]œ^y!É‚1š%)ŠQÍ‘ ”1ÄäöaÂ(—AR•¶·«ü“Áwz£P„Ï"Ð+ûo£„'䇲jD²­­LÒÌQqšjOõ{ÏEªIç7éÖˈkbŠêož¤¦Äk`fŠÞ¶ø¨jºÞä%ìÍ–ÅžšLKªÓ`Í÷¿|øíôسUL)šððîÆ¶{:­ë¼0+Ó,yJzïàˆ…` ú ȼjpM“ÀÄû¹¤\„û"/œ/˜9Ô¦£OG• MÓtV~$¬÷Ïç}ca‡¦*™ÿqh@c¥ÈÊ©?Ô}µ® *!×CU—xYØÕ*oÊOU Yçm^צ$'R«Œ3‡Ûà"§Ñ̇™ÓìA(HËq¹†»”‹ ’mB@I“dP~ÉRqWdÃt 6-^¸K¦'f¹¯½Å¯­s‰ÛtÕ蔼1vèꇥÄåm¦ÈyƒTyYV}e›8Šl®½µˆ;ÿl•»Ãƒ×9žj»5úÆ%I–’δŸ—^[ç…À†›Ö¬lopo¾šbp‚ñèQœíD ¾Vá36Àj5 Rª¡¢Œ1á¦}s0V P3b‘ S½ãý3ç#§°ÔNÉ|x:q˜ ZH­‰]{Å÷“À)ÄëÇüu·Ñ;ÛõÔ¶·oØë:ooÍöƒœA*4QÏ—¥G õe)ÕÙãþç^ͼw;M†5®nå¸ÜÛëwEÞà&à WÝ©¶^@V~8gp™†·60ð¾q›môçqŠ©ÜÄiÇ+û.ˆÂ[o'v§Ü'N¦‰Äeî)¨ûëã}ö© œm€)Àýi¨û@ R>ùÜæT×ãið$ËFˆÂû|v¡ˆ>@ÏXaøSTíÀmãÝ P{1]BE‡$ë^% ¹‡^„À5´£ÆRî¤+—LPߊ¡m¯)}ý€ŸòWó5 ¨­Æv“×xucò~h ¸I¦jGÌÔ¼.ØÔÚšW}Z"°„àäýÙ%TZ´°±=nœ… Øçª OóÒü;äýN;BÚÂ6]2›âaæ/o*¼éÌžöÓ‘>&â˜òÉx"Ž'ë¶jú¨4kÓ” Heºç *Q=1§\I¨ÂÎ+@‹qò ‚ýUãªâ@r ظtèƒsFœmnCÍÅÛºjÌ1w©dÇ]ò˜»º;ûåÅÞšá`€¶Ÿ ^ê:´m IÇ"QÝÌÄ1šŒSÊÆÑ ÞgÜÇQ+üÀÒñ½±Ú6¾OŽùÊì‹]˜æ ˜ž»Drb*ð…ëP8lø†]Ó}ð]s¦‹S«£©5‘kšé@`gm†AqÏŽAoÚj$ŒÁé´h¹xH.üôáVåGAéu#’LÈÚKùɈƒ}m©¯>‡Bç¾í‚­rƒt”27bæ}àÝyn*pKGnàz|0cŸ[Íg0¨ì]¿ñbíÃ"`^iƸˆÇ‡ΩxY`n£p²ÏN¹ßÏŽ‹' ¹ ½DE3~xÔÁŸh'»eDÖ±»¼{ ®c$X"õ6ÁÔ±ƒqóÚvæÅIö8ÝEí˜h ÃDƒušh:†\è,^L“$‰¡Gu}ÕÜjßî<¹›á”›áÜ#L tSðatuY3Û•wØ¡_}Ð!p Ãë2 §9wí±tʲ0–”8$Âo0ƒÿ€–øÁO$°æÓÑÐÏž!M³išf¥)‡¤àé7KÓ¿ž•®œªýæõm“ó»ÿtËéÉ endstream endobj 3499 0 obj << /F4 527 0 R /F7 577 0 R /F5 535 0 R /F14 1720 0 R /F8 643 0 R /F11 1186 0 R >> endobj 3490 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3499 0 R >> endobj 3502 0 obj [3500 0 R/XYZ 106.87 686.13] endobj 3503 0 obj [3500 0 R/XYZ 106.87 668.13] endobj 3504 0 obj [3500 0 R/XYZ 106.87 596.56] endobj 3505 0 obj [3500 0 R/XYZ 106.87 498.55] endobj 3506 0 obj [3500 0 R/XYZ 106.87 424.45] endobj 3507 0 obj [3500 0 R/XYZ 106.87 349.87] endobj 3508 0 obj [3500 0 R/XYZ 106.87 262.47] endobj 3509 0 obj [3500 0 R/XYZ 106.87 192.32] endobj 3510 0 obj [3500 0 R/XYZ 106.87 165.84] endobj 3511 0 obj << /Filter[/FlateDecode] /Length 1490 >> stream xÚ•WÉŽÛF½ç+Ÿ(Àl³W’ÆöŒ1‰—À¶©%1‘H‹Æó÷©êjŠ”(Kö©WV×òêUq±(š¬&nx;y5{qOR–šÉl9‘Š%fJ‰ÃìÍ—à†)6 ã8nÞ¼¹ŸÝüpón ç*øø'®>O¿Í~q§z "a&™Dîk!R<ŸÜÎÜ;zÂ9Kõà!ÃY"üC’ñ˜¤qÕ_Ôœ åÅ…a^ÔM¶ÙеäðhH·Bž2Ÿ»ÚëÇKñ¦`Jº›÷þ^¨t,ì2k7 ,L|:ÞØúô±¤³îãûì?»Ì7öô ÐÆt:gÅâT€ˆ˜CUY6—däÅTÄAS’ŽÍÚ’~ó¶ª,yíóÊΛ²zš&"`Îó¡†%h0w‚AÚ?ÓDe‹QÁãTXl´lPÚÓ.ŸƒGžpK‹’Æf×~VÀoUC[ » Ž´ þ5hT÷_[úèHi|òŒÒ?„ —š¥=\’Ÿ„Køk 6`©ÔA¶XäM^úºG/)/V´þ”¸Œ×Wá$˜L/À‰3™\ƒ“ŠYdü¥ç SrБì€ê% – ‚¾¬æð @Š’Ñ¸" l6ÇåšVuû0 E2ˆ¿û¤\ÒH(—§(‡`$æÈB³˜{5æûzHÍLç̯ÿ:%mªÃãäg•õ©“$L™¡ímm1Q",Ë '†"ÛØÊ…7é09c noòºaø’îò$Hö{¶Ýmìó±A ãòFNœÑ÷bQ64™—»Ü.¼q±f<òB¬aZæÖg=R‚/5ÌÄþÝ×}>çí仓o ‹ºH|zýzô-ÐdÊ{È¢¶™_a¥+é)"ýYŠ€€Îí¯Äàƒ 4ñ¡¬¶ŽK«#(Ãt§I¹…ÈŽŠiÔÓÃcîŠT$e·»†æ1 ÊXÚÈÝ<s?ÅÃê±Ê‡n8Ï\”1Ù"˜0"rGJ0n~s¾ÚH±DSæ~yZ>Êñ¥+5U…U¾GµlñœÐçx :â¤*ã ô}þ@JLmlá‹[ެ˶¡[ä50ö ‚dwº#‚Dt AÙC]dÛ‹ØIÎ]½€š;ð6^ôv×ë®BC |ßa 8*Ä ¶Ü´wÎ.kÖîcÏæðNt„LöŠRΰ¸KÉÙ!`]²â ¡®Ê·ž™³ yœb‹ô¦tpï{€mæ!‡ ,z^n}C°°;`𬱋kIÓ¼ ¿˜}VåÙ ¯,ó‚ õÕGç½ü²Ï6­ýæTÅçl²OË.öSìï Á? œ ¶ë’f>yi±°ˆõ Œ%þ¶+'8m]äq…ßÎ º¸¹±å3ôÙ¦ãRgž³îL£!Ò“„Ö1Ã*qçºG¬YFõ5+”1©pòpcïËÃÝ»›·ãÿÍ"~ÆkôÀ6_­»^–‡ábà0i´sŽTarp.Èa8CR Û84‘C²ò]*2ͪí°=*[œÅÇ6½|þM”ÐA¸zvj#ôɱ_{+&Õä*–Lw-®š¢Ž*¸ñ=¦Ë²Xû,µ6vûØütý©äæÐŸŽŠVXÿ/‘²®í¨ÛÝÎåmY5µ—KCÿíÉ×gvEØÇḰíjEÝÇvÉDÙÊË(½Žävn!ã± ™Ga"™J‡úÔgÚàCXȇÒ]ÛÍîÔ6cúÒÕøœ•õ•ÂÿÌÔ-(SyÚræÀ¨Z{ŒxS®T+Ébéª}@o‹)4šû¼* D™äూ 0¢ç‹t¨MÒÑfgØP)äË®ˆßüq{6Cº6à?W²Óø`5ä·âê\~ÅŒ¹ú„6LtmÌ¡–¥IPï|1È—O´“ù PÁ¹6:Ä»°Î¼Ùt_Ôt”ëvºþS9€Mÿ Zæ˜û‡ãT9€!œö0¼ýö?¯jx endstream endobj 3512 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F14 1720 0 R /F8 643 0 R /F6 539 0 R >> endobj 3501 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3512 0 R >> endobj 3515 0 obj [3513 0 R/XYZ 160.67 686.13] endobj 3516 0 obj [3513 0 R/XYZ 160.67 668.13] endobj 3517 0 obj [3513 0 R/XYZ 160.67 557.79] endobj 3518 0 obj [3513 0 R/XYZ 160.67 530.56] endobj 3519 0 obj [3513 0 R/XYZ 160.67 258.46] endobj 3520 0 obj [3513 0 R/XYZ 160.67 207.22] endobj 3521 0 obj [3513 0 R/XYZ 160.67 172.41] endobj 3522 0 obj [3513 0 R/XYZ 160.67 149.55] endobj 3523 0 obj << /Filter[/FlateDecode] /Length 1631 >> stream xÚWÝoÛ6ß_at/3"Eê£R$)²µM€dèŠyŒDÛZdÉä¤þïwÇ£lÉv뽈ßwÇ»ßýxš,&‹‰m>N><]ÞÊIÊÒhò4Ÿ$ ‹äd†,ñõßžÿŸ§ß/oãÝÁS–ðI`ׯn¾\ßýåÙлbþ4ŠbïñÛ—û‡Ç»G<:¹y²JÔ„s–ª–ˆ³D¦˜ =\î÷IÉ”pŠî?_ýqóéîíÚ[<¥MS0*VvçÝÜŸ*x¹™ W&¿€1Õ- Nv‡ã€ yFŒYÐßÖT¾ˆ½×¢©«ö¯#]¯¾Ržn ý\˜á©×.ëM™ã*÷37 mìjšBcìDQµ.K“[_M9™PØZ€ÎN€¢LwE]ùS©"¯žcK7²÷Ÿõ‹/"Ï•«\79í*‹çF7[?„'á¡÷´,Z:HíNRìåEc²®†ív½[ꎲÚÞ½Ó`𡃡½¦yÕmñjZV¯ çiïÌ.{d{÷p/!„§± ½?«â;M´Û¶3+ˆŸlAkqšÚüÐAŒáг¨×q¹i›KpÀe½Ò/æÈÅd¯º9ÄY0–Sgºü±4wà‚Â)¹`i> endobj 3514 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3524 0 R >> endobj 3527 0 obj [3525 0 R/XYZ 106.87 686.13] endobj 3528 0 obj [3525 0 R/XYZ 106.87 668.13] endobj 3529 0 obj << /Filter[/FlateDecode] /Length 555 >> stream xÚ…TKÚ0¾÷WXjŽ´1~&No´…í !íæVzÈC݆˜:-ýõõ# ,[ÔÓ8ž™of¾o€Æ` ‚¹ïÊÑ4*2P®ãHf eÌ›òÃ78F%ižçÍgã/“»„æð}ò½ü<šòS•(“‡ʈ÷ƒIÀ 1~†ž$éz’B9DfSýJ†ÊÖ—è¤Ô¥òi•¤TbØÿP1Nãh†p64ñf?Îg“E2 Èÿ@•âOÑêQw}wã u+èÎ[­ª–ñæÁ¨VƪèªZOÇ!zÍõÎHСØ|æúYéFu—- p1Dé6¢|³³Ò”†޳ââ¶Ö$©ð§ª{§'–/9Âl@¾Fç:Æ,¨È?$-"N™•U¿wÊMœÁ¾9Dß®SËÁkl<¸+›vÛHU­=R=õ®ëÍFÿ©zmÚ¡×i")4ÃtD²8„©6ÛFÝø`á8éú Ç‘nVp©|‰V·ëx…þüD¿[ãé×ñíý ú3D”ÝkkÚ?KØÇrûÄ‘]Y]=Û$ŠþÚìše‡ºq y>NµtÍ3Æ`M£[O½ñ–?“û|IËÿ' {$G‘/¹QžRA®¼‘·¡qŠ}ÄYۯ݆Qg‡h·Vï«^ųõj†Uöõ”Ö|ÚTënÓûœ¦n]×VuÝ"þ¯þi%(7 endstream endobj 3530 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R >> endobj 3526 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3530 0 R >> endobj 3533 0 obj [3531 0 R/XYZ 160.67 686.13] endobj 3534 0 obj << /Filter[/FlateDecode] /Length 107 >> stream xÚS0Ð30PHWSî N!ún& –z–f !i zf& ºÆÆz@¾K´†‘±‘flˆ—¾›9\‘¡¥ž…¡‚XÞ1 ÀÕÏÅ3B¨ÇXÃQOS×ÌÌ\#8ÒÏ? Ø3¤UÁ5„ ± endstream endobj 3535 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 3532 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3535 0 R >> endobj 3538 0 obj [3536 0 R/XYZ 106.87 686.13] endobj 3539 0 obj [3536 0 R/XYZ 106.87 668.13] endobj 3540 0 obj [3536 0 R/XYZ 106.87 488.8] endobj 3541 0 obj [3536 0 R/XYZ 106.87 413.52] endobj 3542 0 obj [3536 0 R/XYZ 106.87 308.15] endobj 3543 0 obj << /Filter[/FlateDecode] /Length 1119 >> stream xÚVÛŽÛ6}ïWi€ÒÀŠáU—yè6i€½ë>Õʵi[ˆ,9’¼^ÿ}gxÑzå›ôÅRœ™3sf†Ne,Ù$nù˜ÜÎßü¬Áh–%óu"-²$å2£°ÿùq¿Ÿ¥’Û¬ªGrMngÏqZŠæj±$U%-r§ñû¯æÓ 5ð¶"›Îìv¦CäÃ<øãŠJuæO(8Ný–òYʹPÁ‹†jûX-Mí1,Û?=8G 2TmÓ{d*)i™`‚;,Ï·`Ihé ‹œ„mmšÍÁl®êýzoz»BQðåŽo@M4Ömç…¿ýùæö³ >n`›丵]МˆùxàiÏt.PAÖöè…³ˆ…‹ì=8£ >b:KuÆÈÝÐUË¡>ù»=p¬ùT5 ¼ºÏ£§¦õ+ ͈=ÑjÛ­z§Â‰iVOˆ.ð:'€eY9ˆR‘þ´Ct÷î¼­ÛsÒ½êHºäUE$}¤ý§v·³ŽÝá%>AIK§.‚/¸˜*Åœg{S5¸äX [”¸£ÎÙ*F[Š^ç`m}?õTÒL†oKLËÖtf9ØÎ›s™A•¡rŒlðÖú¯®`ðº'm×i]5ËsFæ³Bû8¸A¿1*Γ‹È1 )%1~Y>…ë°Rq=4íÿvåSíU*0'(ó©úðhvûÚzFΓÀh®¡G•<ä!ÕÀÁ|‹ÆµÐ$®Æ/ÄpY НãÕ × ¦jžû|hëÅWáژ櫕£„¤Z•#BåÜá¨cEâ˜Àùm^¯&70ë¶®[LóšV@vfÆù&‚û±Ùb1Mè‡vg#wž8 ü’®iVz’×`•%Y8cd1 ÂMX¡†¸†ðÞ…ýÛ°¾ ëaý'X!”9g£ót¬îº™˜"t+ à&I, ÿm,H79QÂFÀueG5f%”óÃLC!t•¹¯C’:»†Õ,qdâǪ#äÐ,qÖõý¾†©ˆô2ä“C8ÐNrŽz)œ? ÒÔ­ím? ^+"&¦4úño¦ŠeeT$WÒ* Kjsp-žù·ºÚU¡vºþ…€ x8¥X}MÀc™c{⛂ִÐÏ#zZM¸6‘–ˆ=Ø{»‡ŽÚî ¨õ7Ð4¢½ÖU­{dV/><Ó˜ ý4èéWÔo¨ÐÆìBÉ^ …3EYñ°Ÿ¦®D~ )Ã82GöB¥ *Zyw%ßmσYÙ…ÐyS}©o8£eþÍŒä%ÔQíZÄÿ¢¦xl–·—¦?§!/â)˜#à`# wxÏpR”,þQÁ‘Ùî1BS×'œšçÊüƒ…¹áÿy¥%óOäø€ [3œ—4¾Î{xXû0yâ{«ÎqÔÝŸñ-€ËÐÎþ–ÿPZ÷»:á€ðbË’*À#` 88BÊð~÷/"|ó{ endstream endobj 3544 0 obj << /F5 535 0 R /F4 527 0 R /F8 643 0 R /F10 1169 0 R >> endobj 3537 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3544 0 R >> endobj 3547 0 obj [3545 0 R/XYZ 160.67 686.13] endobj 3548 0 obj [3545 0 R/XYZ 160.67 473.49] endobj 3549 0 obj [3545 0 R/XYZ 160.67 236.51] endobj 3550 0 obj << /Filter[/FlateDecode] /Length 1599 >> stream xÚÍXëoÛ6ÿ¾¿ÂX‹MF+VR ê¦In]Š6ÊÕE¡H´-@W’ã¸ú·ïŽGÙ²äºË6 ûS<òî~÷fF³¬Ñ|¤~.FÏ®ŸœóQÈBot=óøÈt]À÷ów†ãòñûëOÎýíÛw˜åŒ,EŸ¼zuöËóË·c¸ãÏØØô<ϸz9ùé ·¸qñzòòåä51±­-Ó>³‚‘éøjxMÏ¡s;…Ô/‰º^H’òqU6Q“–}Ö›|ìxÆÍØ„¿eV‹`§¯å2j&ßöLpM‹Šdp7d®¯É߸*4-‘Yš§ )ßXDU7²Â-Ǩ›*-æ5;dp„ f°™ÞË ·¯pû€»¯ºàL´wQ=­‰]Óò:¯ê¯‡¥œ)"ÇeQ7Qª4ðù.³üûÂsD`È:Ž–°„m|oàbè“é´/ÁgA¯b§™Çi¤yÙöö8·Xب,²  ŒõB}ÆÜcv!³2ËJÔq=FÎ B…Á„ZGE v®h vZk›(bÃЇ¦m£6*DÑ d<ðŒKŒ€ã” ¹oÄQ-ÃRØÚ›°·/Dí@ò¬jº«| {ú8è$ÁŸ‰f׋cîQ°À±Jæ è-}¬ôµö4U\BO³°þ¸’E,i;‘` Yïñvâa½' ‹kWh½uª`r›`öâÀ ð/BÈìn$ b ÙÛ ]æwAtǶ=ää³»(_f²>!!Þ®lØÌÁœv±zàÉ?†E‰ù[ö•*oâr~)gn¤dxŒNêæ0ä¸Õ,vÁU®3ºkøé˜õÑ™PZ,¯kˆãðüsxþÇð†1v|Cÿ@÷«ãéôd:ý--’r]O§yY‚GoÊrò.¢V*Qÿ´(‡y[=!‡D„œÙmfS:ž]«FŒtÎn'¨¦Ìçêä3f3w YíãÊÎêH“b—“UÝù°ü®Nc_Ûž6]Ëãߎ7¢*n2I{E”Ëz:Æ(’IaE_thV•9È0°˜¼9½T5æR_Í– l¦ž±Êe•ÆtqÏ£u·ØÒä„Áàp}Ç7d–ÑW4…xgrûЇ.˜ãjÚ㧘ÛNPæ=ïµ!ñùoÊ{zävB›§Ð÷²jîЧêt^(§Åz2ù§=äà]«Æ¸„-n¤Co++Všw’ÖMZÄÍÉ0‘=œqH¥ó««Afæ_B íÔbèvóÉ,Â/±ðÛ ¤<&ì% úi„ô ÙÛBÆ]ÛÈ#4Æ>n¨ÎÓ‚®¬Óf+¨.ÓYûq·,«F'€¼kd‘ÔC6³´ˆ2|ªªÄÁËê|šÓeʼn*n«Q®ôLå­U‘²ŽBVÉfUš<Ôè?0”ÏÐö9‘JM…¶·AÛ([µŒ(”rëEšI+ßü $lÁ endstream endobj 3551 0 obj << /F4 527 0 R /F7 577 0 R /F10 1169 0 R /F8 643 0 R /F11 1186 0 R /F6 539 0 R /F5 535 0 R >> endobj 3546 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3551 0 R >> endobj 3554 0 obj [3552 0 R/XYZ 106.87 686.13] endobj 3555 0 obj [3552 0 R/XYZ 106.87 668.13] endobj 3556 0 obj [3552 0 R/XYZ 106.87 352.92] endobj 3557 0 obj << /Filter[/FlateDecode] /Length 1791 >> stream xÚXmoÛ6þ¾_adA#w+RÔV MÛ$Ë–¥ê¶c:¦—D’S§öÛwÇ#-Kr²æKŽäñîx/Ï<ñ˜çM®'úßÉäÍå‹ãh’°$œ\.'¾dq8q}ÿ]¾ûä¼aœMÝ(Šœ÷þy4…#éœ}<}{x† ßyûþüÃÑùåéûó‹éçË?^ËNšˆYO<-IøžOŽ.µÎ`Â9K‚-¥!g±Ø( ¦.çB:¦‰pÒ:Kç¹…‘tjµTµ*¯T3ÔçM\³Ø×B§®L¸s? ‚î¾L¼î>1d þÎB•U«´ù-koˆjo©‰7jx3™˜gíàãÂ6·SWDŽºÊÒœÄ]Ma}“ÖéU«jÚZVy^áö·©ˆ²Àsæ¸ó@i©=çòüÉá?yd`52¶ÙL‘ª!VÒKœÓ%è…Ø ñ@ˆí–iaÎoÒ†nUm¶ÚP«©ªTtØ3þWØ À}­¹ˆg«F¯8Xïâ[è|W < áõÌ ~ÈÛ´FûB4¸Q ¼"‰s‰Öû¡°Ç‘>ðÖ=n©ºÉ*#C‰üE…v uUEU¢<ßëäuÏÊkº Ææåêã†YÞO#ÜéÒ Dx,x;f‚N’™óñáûl þð’—7 Løú­ªónó p»Q÷ªl^—Y©`d°D‰ë }Ç“ZÔI¹jþ=)Ó¶Ñ ¸çáîÛã³Ã“ ’±žnÀ’l,Ž´È ðA®ÜAbŠ$Þ.4X'Nš7QDtµP´›)è+¼—.Y A¡u2J¾RÇ÷#Å5¹-Y"û¹q=*¼…¦²ž=ùåÕçO#Äé8°¤4A‡x™ ‡6è¾ÐA×g›@K§Ùéä~"à€K,àqNz­ƒ*ýg6ºÏ-ñÒ_,ñ‹%^Yâ“%>o'aòþ¡•ýÕr¥–˜[bm n a ”‹‚íœ8$$Ï ´D¥ô¯¬JwW=‚ƒ†5"¶¡}«ëÝYK·@CÕ“Oþ'Úá±Ùà$™IB„,@Ï 01èd@^ìÄZ±…µH÷“—ÛÔÐBÆ ¬‘wh B—¨¹XÝôîÑeÓGúåLËWÆ]Õ’ü´£ç’ ß¶œõ¨çø,ŠÌ马ÛyÔ¯ 9B°A­Óâ6W‰Xž¦×©Me-NÑGã:óâ^@䪺׷Pp u U<»eYUûëyŠÅãWGÈ6ª0sÖ³©¢kåG„<‰“ä4QSmS÷y x·ÒY>pGaá6hû;‚ÚÖ궆ÎWbV¶ éiIa<œð,‡úA¼¤`%?2™] é4Å««f”ï´¶¦L ‡Mý‰Ðg"ÜÔ”´¾h†¶ÁÐdSt6ÛåŒÈNŠi¹=,a~ø”'»ËÓ˪.Ò<0‰{·Jó ²WBö?³§çQ?J˜èÒÐ ¤mMÅPzU•M cT|ûô4zfõ>Ò"Zhƒ‘X(„•R€°4#(PEÚ’£µ^)¹`¯œjì‰"®_ØÏÕ²ÝVg¹Ýq¹ð&à0£ÛuV6´A† E¹!}g¸°Üd×å(Rvãÿ§ æ`[ËLIö—ïª®Ì öªÀpÍi”6Vj¨”¶]¸w+êXxR›nDŒÇÛÙº¨Vó-^ÜË_Ý € N­ß|†"ö«ºÈ`ÖÒÝK§vP)]¢`…&X>@Í4>Â;´H*ÎE ÷AÓôà*§ž»¼¨‹8±n)ª  >ihw3£€"[«ÅoXæîúšö´ž›=غӥY96·*±ªD(ÞǾG±7çc¥‘<`ÌŽÒÅÓA{Â-]-HP_ÙfJëFòƒßqÇn =‡ì·÷öönA`»œ9{Cþ٬ܛMcǽø3 IŠ»³³´¾V$fožWWïQGÚ•­Z·Äú315·iYjgàêà Xåmí´é¾«¼‘4; Û™wYt‡%¸NìWÑ‹cèæI`^h?p1¿†šbæÛ¦g¾$]íÔv—j ¥øˆyÄÎ鈟ÒÍNƒß²c&¯¤Äa¿. ùdd@ §›Ó]—EN<ݰuh)-6K4ŠÚ4ýH ñ›ŒUõНøî[ ßÜ*« ÚûIg¬a à;ê Æ“~¸ îÁ·eDBµ&€js…ùBö“ÁüF¡IŒ4F{›¦1žÀÍO&Øa š_åêï£GšBÌi0éCßÌ«¦ßCܪ©f„µýý§ÿR endstream endobj 3558 0 obj << /F7 577 0 R /F4 527 0 R /F5 535 0 R /F8 643 0 R /F11 1186 0 R >> endobj 3553 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3558 0 R >> endobj 3561 0 obj [3559 0 R/XYZ 160.67 686.13] endobj 3562 0 obj [3559 0 R/XYZ 160.67 466.35] endobj 3563 0 obj [3559 0 R/XYZ 160.67 365.66] endobj 3564 0 obj << /Filter[/FlateDecode] /Length 1312 >> stream xÚW[oÛ6~߯¼¡›IQ—` ®i– éŠÎÀ²Í¦X´-L–\I^´?~‡É”î^,^¿sûÎ!íxØóœµ£>7Λù«w¾ã8pæ+'Špà;3Æpó· Ê÷Ïù¯Þ… )ö¨ã©ý«®ß¿½½wá Co°; ‚ý|wõÓµ\òÑÍÇ«»»«$ê@f„Lœ Õ §>z-?ý ò¼”‡@ÏŒs%ô[Oèl29»×ÃDzÊÓÉÔG0ûÖ9ìñ~ï㟟÷a³0ì{»c¸Û³´“¿ìôàÒÌ(IS3¾ê]¸à FôqÚCgÇ( ±)¥ïËFB¢f“4zôi_6I“•…žÖÏ[—†èÁ…„ 2¯õêcÖlʽ9‘èO.’4+ÖÃ|RB1‰ )Ά&ÅØk÷’JÙ ¢4ÀM%’F¤Æ˜!±Ì’<Vœ1¥vœ¤±Ï’`¸–üíÒ àžï34ßMFÛE â .‚PÖ~‹e¾O• ›zµi±jñi/Š%èúíá˜ÚÁ.ëÍå®ÊŠ&/è¼c oµpǬK‰Óƒ=; w(4–¨'ÕÝL ]h¡‰’šè‰YûÅDèe%‡ˆœÝ7;8nöõ\u*î3ßjU4$˜uð ¦.à€1šP1ŠŒ 5õѺJ¶Û¤ÒÔS‚#ªP4ŸBu„ûhW•òT­gš½œ£eYÔMµ_jâÂΪ*·zK<í*Q×@¼öP‘êø(¶¢ðM |å^ˆnD!*Eöˆ¢é8| p‘Æpr'KQMz"-Éꦖu£r¥Wýiy«gífߎ©\„’K–r¾éã¥è¶H~S¢R@£üÖٺȔ‡ËDË|ÎVz'1¶zɲL*_ •Cë+ŽXËüXÙ6•Y¢¦èa­šêqÒ*±M²BvÀî\­‡ ´„4 #'QÍ94 aß7ðÁå•ò'}’ÄØŒ”F†z€¼¯÷Š.j’uq©é–>\©¶•È!Æÿ´œ†–Ù”ºÍuíMƺª=‘.áAÑi°Ãû ˆ0‰Ú¢ÃĔݵÅüq‰‘³XéZôª”¥NåM£*[nò‹Ö•O«Ë.nXó¤]YIšÉ «êð8ð`¶ ÕHá¡… úHûª¹¸x=Æà˜2»O-Øîšg݆¾vÑÿ¬˜»µ&Ä à–q®Aaº \t˜‡öá/c+”ˆ¶²‘xÃËÿ+1 ‰AègyÖˆJr1ÉOñæj·Ë³¥ªÜzdzp‚Ú´Ìe÷CyÛŒ­ÕâþwËMR]Ž8 {ìtOT¶@#”snvw*:Í&ƒúöYåèäº"r(ÿPºCÓcþBD¿/ ˆ§(t7ü?lPœ†×±Û™ 3¦bb…‚BañJzHÿhÀþ#Ï;+L_† Ã4jþ5jt ‡áIG§#ç!2à±#d%iè]ŒO,n4FøÚ| m9øÅ<Ì[Òáÿâ\fZ:†û:æ -±×C ip‚ÞÑH)ŽÚpVŠ'ù*îz³ý8×+Kùò†Mà!TÕãRÄ]1,Ðt”n ŒSLÁ§^[é—oÇ”’?Ú¸YˆÃ¸ÏF ¦£1ã:³6ÿS}AaŒÇÔ… ~hA™dÂ…ûÍ¿l_ìS endstream endobj 3565 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F5 535 0 R /F11 1186 0 R >> endobj 3560 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3565 0 R >> endobj 3568 0 obj [3566 0 R/XYZ 106.87 686.13] endobj 3569 0 obj [3566 0 R/XYZ 106.87 616.44] endobj 3570 0 obj << /Rect[383.86 188.58 400.66 197.39] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.B.3) >> >> endobj 3571 0 obj [3566 0 R/XYZ 106.87 159.26] endobj 3572 0 obj << /Filter[/FlateDecode] /Length 1687 >> stream xÚ•XKÛ6¾÷WÁh`͈¤$JÇ š¤iH|« T+Ѷ Yr%9ûøõáÖûNz’4CçùÍP‹€Áb·°‹wë·ô"åi¼Xo*äI¼X)…õϲw\òåJkÍÖ¿¼_#d|¾û;*öñËÝçÏw_–­}û!¤È„ÇÉ"°¤ÒÈ¡Bq.VRÛeÀº«i§ç­"“i§y<¶ËH0ÓueSÏ h·²ì–+™Ä,Çfù÷dêÜ1oG|cMg ZÐl‰Õ›Çþ^Ó˜u}[Ö»UUö¦ÍªÎQ¿-£em™ÝWÆž±ÖlM»"“t½X ÁÓˆT†S;ÚšÕ½lOuÞ£ð¥Yvk³L3PÓ÷kèxh!b®õ9Ò‚‹%Д}ª«²†ãTNTžG!€x†\¥¯Æ3æ>œ$fÌŠšKŠãQ›¶Y5íêд†Öeíît05z¨G÷GMuÑŒ!£âq4É!¬™¸‚°{p¶ffWÖôýPö{zkü&Ô Ö $l6ESUYû†è>¨Î©ÉÙ2–<’Î7ŽâR9Þí|§æÒ×ÝÍßó"< ùFŠ5íÅÙ°(ò"n_Ṉ €k°ÎÕwŒ‰0òß4jR±²ïL…‘“!ÅžCod¤±B‘š9næAmV†Þ'ùMr7¬¬‰ù°‡ƒºÙ#Ï:·«ì§Ç:ÁPà‘/pkF@@ÙZÇm–Rt<+N¦ÂUk`‘>Yë²koºòÙâ p«²ëݾ:¯NXCë3¢Ž!dNy¤½(*@ †#BdÖïËb,s)†x£úJ,)x"ÇÁšK¨8Ùª3`TÖÛÀñ\A€žÝe¹'1©/ø‹}wBó0’(Ô¡M"N IPâ­ãO?ßIEà(«IÒÄ0d%¬'¢­H@7ªH `‹¡öÒçaoZ3Y”²)Ä"eš‚ó ŠB®}…n–vQEPc⌊­S¥nzžUUƒòPqãâ%5ö¤¸6 `sÚ!èˆÔv Ý?¬™Ò¦?’™ë&¡H,vhZtÈ ·æ² ߉»´ÐÈ#Õf374å¡O@ÓåÙ‘0“¤M|¸YrggÎâI©@³m¼clù(åSf’®9¸Uæ1;m³Æ/Û&”/óª,hß(ìÜåp0¤gÈSS°CJ² ðxn¸}’eOÏØH Ûîó—Ú£ä*™ZÒÛfoC_Ç/ïÀá˜J%™ž½tŽÚì› ƒVl Ð$Éõƒ&Ý<|Ïœ»ëÆä DVÖC¼ˆu†U Žm×(Éûg|úýýW(ðå+n:EïzÚ CéÀ±‰Æƒdè3…„‚·3¨žõ™Ïç—QwçÒM6’{~Œ1öÂxνóïbh(Ø“ ØG…ÛH‚"zíH #¨î¼zažÀÜ}5´®‘øŸ¡å÷`£ «ß‰âzO3iìfSM“§f0l1³ Bø“e»‚Ú|ʘD7¸7,›ë èï€íà„1D- ÕHu‚ÎLz5vûlåáÔLÞ²T·!qŠÍzÜSpÞ¨Š‹š<ö%wuÔŒÜ ¦í ýû€ï¤8|{&jzZ]c¯+¬rºâzŒÝÑ‚Q¦ÐófÓ¦½}ipIÂׯpÏó*oX•=?AÍØCŒe…)Ô«×tŽ@“qÆd;nk]/Ê.?uö掟vÎWáÐ+eœ]Øî÷ì  \Ú¸aډݰ¯æ ¶t=^(!ñ2¼ŠTÀ¥¿«ñ©y4]àwÁŽ΢ó ;Òæ¿aK¼_à|í¡p1uð~ˆ:Álÿ(±cÛìÚìpý²}m.ê-ÐXWàÕ£›õ×îɵæGZNSнR~úÆ8x÷Jy{ú“€²‘ endstream endobj 3573 0 obj [3570 0 R] endobj 3574 0 obj << /F7 577 0 R /F4 527 0 R /F11 1186 0 R /F6 539 0 R /F8 643 0 R /F10 1169 0 R /F5 535 0 R >> endobj 3567 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3574 0 R >> endobj 3577 0 obj [3575 0 R/XYZ 160.67 686.13] endobj 3578 0 obj << /Filter[/FlateDecode] /Length 1036 >> stream xÚÝXÙnÓ@}ç+üh |™}©©ˆ* R!¤–×qÓ gQâJEðñŒ·xšqÓ¡MJËKÓØ¹wι˙; @(ÕÇÛàõÑó}hÐ"8: ”Á‚˜RPæû›ãP}?zÿ|_.ƒ%DT½ßýüyïã›wß"cCÃ×ÅBˆðÓÁò ßîìÖN0^z‰1Ö@x´^kq&óˆã0/j‹£ÀX³êÎÎKÇ!á@Ú÷'a6ž?O¢U'T‚ÔÍ~;.0¢š·£Áª­ÜúVÓ€g.ìªÕ Úp¥ qõ¦(y¢p˜=™ðä™]Îæ«ö„€j×ÿUãÌ.Óüb0š 믋Yfé(Éë'iDdxžÌ“´È‡ª‹ Q —ˆÜDÂJĹ:U §åŸa“M'™¸ò$¹(ÆÅ*&³n^¿È¦ù+'º ¢É’K $uím–ƒ€É#Ç ‰Çœ•AÜyoÈ5„Lуæ]jHøÅÉÅÙt^µŒ‰’eô»'Ë8¦Óñ8™ *ÔüC삉CátV¤eNóé$>]&lðs•M,Ì·Áz1œ„D ¸íʺÿ‡Nû \¶¢­ûšö ¦«{3KŠô|m¸’aêŒéu´‰Ÿi´.bþ™ÔÆ'® Ây²XÜð²ïl…µϵŽ9¡,%išäk¤ˆ)ŒQršgõ“AvB¸œŒŠÑtrC³ØØ-v³J˜ŠóF]±"à-Å3G¹@·.ž:–fwáÍËáCWï j$Öˆz¬H©8‰ê%w½Ú¶Í=š ²I‘U%¼¾œ±©&z‡”[e/»íæø»CÜÌR=°‚ШìéåÇÊ}#åRFjѧóD¸ª²_ªÊÅ$Ýœ†°Þ ö¿¯¥µß¡žý«´¿þûlx •#ì½Ò[?Ó›IÉÞäªùÇ­+›•”ÚÃ\SŸN£˜‹ðG–›© Õ+¾àtŒÎÿ eÖ(w;îð"ÏnÑ¢ 3÷$ @‘k'„p]ÄÌwæLlz§í~Û©bÀ·QqR¢þ¢íÉÚ¥(ý€x+\)ð¿Éöf FÝ8ì} ôÁ•ãMGλbî«Ù¶;¬àž}ÿËy–çõåTsZu5ɧ;Û±ÌÈ­…¼1J\qw¼Óú[-½‚®ïrÅøûv…-Ý®,á NIª¾1évç›'=iLô? g7ª[á$ ØÖÃ)×Á)I!°{Á{h”¨¼ ÞVLûo6©Ü3ó^y§¼£× 0ñ`–#FÔ®T¯¥€«…Ë}/CwFƒ‘#²rƒl†{]NQWs­%P|ßrPÌ0[ J°wôä1\üö endstream endobj 3579 0 obj << /F4 527 0 R /F7 577 0 R /F11 1186 0 R /F8 643 0 R /F10 1169 0 R >> endobj 3576 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3579 0 R >> endobj 3582 0 obj [3580 0 R/XYZ 106.87 686.13] endobj 3583 0 obj [3580 0 R/XYZ 106.87 668.13] endobj 3584 0 obj << /Rect[371.47 626.82 386.2 635.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.9) >> >> endobj 3585 0 obj << /Rect[348.24 490.71 367.95 499.13] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.10) >> >> endobj 3586 0 obj << /Rect[235.01 316.53 291.53 327.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:try) >> >> endobj 3587 0 obj << /Filter[/FlateDecode] /Length 1159 >> stream xÚ­VËŽœFÝç+X‚4”©µ'cG‰Æ‘ìÞy²`€v£Ð0jhGòÇçÞºEótgbyÓ]Ôã¾êœsË‹Xy_<û÷Þ{»{ó.ñ 3ÚÛí=©Xª½PJüÛýöÙË Â$IüÝïw,(ÿ¯ûÛ?íPúï?ÞÞßß~ þÞýñæ­ˆ”éÔ‹¬! ®{w;ëK/}iÎRqñ%BΕñ?=á—y•Õ0J•¿oOÇné+òBž2™Z »CIupX¤—Ã0C‡í°jòú\””M?Ù·uÝ"ñŸ«æ #7c°\1£Àg&¶®~m›¢ê«¶ÉêUL:fCö~W‚a"ò$ ‡™ÒÇðŸOíÙ™oô÷Éí¾ÔГQĤñBÅ¢` ¸é:—Œ‹éúC—¨„±²Á¦ã5DÌ$.Új¿LLIíVóöZ7p/‚ņÊA89fM%OüîОk;NýGºú à¤Ûþˆ3/4ÎÚY~}:•]G5‚ïþõ4:•¸R6x¨ïèÕ/%¼ÁÊ¡9FFÕ‹¦÷W5…3ƒ‘H@ÛÚßâ%H¥ESjDÕäŽhâ˜Bcôãùš†dqÖ%»¸t±+rYwåú€+Ú¸˜ÖÂ7L&ËãB1!ÝúcM)æË?[Ú‚µ˜i€ˆðƒE eïÅV– _U*>¶Å adµÇeö,1ÆÖ:ä=5©·MN‰ ÍRCÙ å>à> ËB*Ã1§¶ŒÔÆáß„b[ƒvÿ7ZXS[$ ã ŠÂq›GÓd3™í°ìƪn±[°¾ÝsÕç‡ dý}dÕ'ÓBc:+3Â஋N  Ú*é£'~yBÆå?e}_žšpZ¤Z¢üÛº¦=yÖ• ³SI–Ú'âžÝûwYŽì;ࢰ\Ì%àA›œÆ Kñ_äLjŠÿùP6×”×Ù™¢J“6Í{Îþ…f²b*j ˆæ¢(<Œ K\,u‚)þ)K[€9¹xŒmø:¹V{lö?ÁÎ&I¯©_m¼(÷Ù¹î_Ýœïœi=U·»¯yi‘µêãq´Z° ë®Å‘´¼Ÿ¼m&‚¬%ŽB­Úõàþô²j®)>}ÈþþܬÄBÅ.;1R´–MùùˆÍKû}†g¨½K½%F³hðñøœ·®ÅGà\ÏËjÛå CÐ~qÎ-€´Ø¶e"áJ]!iú¶êò„Ú¤± ¿j]‰l²ãVïÒóªŽ<‘ÞÂÀ°ÞÚ=Ídô í:çšDÖ¬¨Ü8Hx£ÆóüP.¢?†¨äØžóMñÓŒ8¹YžÖlÈnÚ™ë‹Dß8Å[ë°ˆ1Z• ¥^]¥ŠÆB:ÍäsÍä[I-¸®ez_}{¨øz†¦„E³>ÓPPA ­¬jH‡¨W¾ÀOÿŸL¯…•óˆ)3•GŒ{PѬ¨!ùƒ_Ü)ô¿E6 n(ðÏ{&-¢ý€Ñ~XGû/z%Å?æί1p·ûå_y/Òó endstream endobj 3588 0 obj [3584 0 R 3585 0 R 3586 0 R] endobj 3589 0 obj << /F7 577 0 R /F4 527 0 R /F6 539 0 R /F8 643 0 R >> endobj 3581 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3589 0 R >> endobj 3592 0 obj [3590 0 R/XYZ 160.67 686.13] endobj 3593 0 obj << /Rect[379.6 612.84 394.33 621.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.8) >> >> endobj 3594 0 obj << /Rect[319.51 544.6 334.24 553.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.7) >> >> endobj 3595 0 obj << /Rect[401.58 440.44 416.32 448.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.5) >> >> endobj 3596 0 obj << /Rect[388.71 384.16 403.44 392.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.5) >> >> endobj 3597 0 obj << /Rect[380.93 327.88 395.66 336.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.6.3) >> >> endobj 3598 0 obj << /Rect[263.93 247.69 331.76 256.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(fun:while) >> >> endobj 3599 0 obj << /Rect[423.38 179.45 443.09 187.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.11) >> >> endobj 3600 0 obj << /Filter[/FlateDecode] /Length 1558 >> stream xÚ¥XMÛ8 ½ï¯ÈÑ&ª%K¶|œ¢Ó¢»èvÑÎa¶'V&j;k;™¶?~IQvìØóìIŽDI$ùHe²0\Ü-ÜðnñúöÕ[¹HY/n· ­Y,«(b~¿ù.¿ÝþþêmÒËðD°P,B·~ý×_7¾yÿ÷öDÁk¶\Åq|üpýÇ NÉàݧë®?Ñ!ç‹V\%,Ô‹•HÜ u»3$¥{)2©ýMufsyŒH™Œ½À¦Úï³2'MlCã±19)ÒV4Cç¸Ï¬¤%ósc­­Jv©ÀJFøµ‚q=Pc¥n;Ô´!>oP,Õ$9ùÆlðäKÅ£˜iéÿ Bp¤*h§>ˆ$ž>y˜F¸H$7ͦ¶Î:Òº1>Ÿ÷.nn÷Ej¦8@ƶ’é¡€àLÈ‘À×%@,C=‡V2Î_®i‡Þ·ŠBÎTWq–*· z‹$hk€ Æü¸1ÒŒ†ÒÜzͦ:€Œ ›‰ŸTé¥Zn‘oÌMÙš|µ®ò‡ °K‡ÈÚrSssZh ‘ÌÄä¼2:Šx‹G1ƒ‹šIt{"Y¤<.ÉP æŒÇ#ÂEÊY\Àµ]¾z¥'¸¤è‹Iñàà¼oêmUïRø«PIa6ù¡ÆN„ —K½>>ɵi—ˆ_³«Ž…ÏVsZ* >9f­¡KºlÍh³¿“€Ïö„ô‚Cj Ÿ€ø£"ÎAY¦ðÅt—^h$h&Ž>dªƒÂþÀ(4~¶G\Ei°>¶$dý裰óNa>“LçúY•Ń_Øž%KcÁÒhÖ£ (D°Ëðl~¨ZúÈŠÚdù-¯I SÒÚ?“& fÝÄKžvc7ÁeÖ«rlŽYá,åâ2€è£$dZLlÊ= …]×Yý@?éÆE ¾|ØýK íŽ8]:Á¦]¶Z;Ùª¦¹·EA¢Äl—•wþÛ…Üqݘކ˜Å—s²è܆}{–=z­‡ìNæ|÷òêP›öXOYR1uQ¢8¥`ÂÇãDµ¥q{,™4ôÓúåê®–Èf‰Æ K£†ØBŒÅ(Åg)FàGø´M¡:3ÌÊÓ>¸B¥CžKxkê½-<fsô6Côrt_3â à…|â`[WûQñèõTÅÐCk^éiGtõe AouQñµ$Pñc\¸aAÅq*þ´~yTž°X`÷åBÎ ¨C½ PÝ€t˜¯ç=5ž±¨oM­æÔÜuýXæSÑæ˜…qÐy_=,u¸œ‚Ï”ŸØ·q´kW”ã¶%|/Û»È zxÆÛøºÓµ ] «×`ˆâmïU{>8È+/ r]BU·3 aßêö9Ï»œç}ç?`é'¡õ±åMþ¢¹¹>/Åfs¥¼+”1‹F}žpp (ÙEúH²Ç]$ƒEsÆÈ†:»"NÁb¢R„BÆa@,}²uUî{ÆÆuJædišÖ•ø^•;Ε€`ƒ†Šô~ë+³úîØÙ]ZZ»³'WñË+¬Ëa_—G,ï÷ZÜ$’d¢«F]qã(Ô[™ •® Kˆ¯pt}¯‰+ÔØÓû…0Mt§vo¥xt[Ñd¿­ñýÇÆb 5ùPmŸ„y§¸“¨›ç#Üãûò¿ßÙbÚ^†LDÁ =o‚Ó´÷²‹Ç¡B<HB+™ðN¥Çn8÷'ž0G³‹Ùá1¾uÁËÙʦ9ÓêÏÞ|nS¬¾¾È N=½jôøUsq1<ÔS÷âÓ·ëØ "½ê0}Àâ3[ ›:lÜÂüߧЦȚÛb™Â¡­)ófò ’ø”…€”]ƒ =¿á¡¯YcÇ|‡µ†f~‘À É)Á t欫}œbP% 8Ø=ÏqñU´nòV[9Buðp—ÙèßNãòwÎDZÝv­,‰ ²?vö?þ¼"baÚóñ¬÷ñ}7 Ò95)bã ÁÀ6_À“ÃîyÐóoò£‹<›ÏªW}š7·¿ý¿cÕú endstream endobj 3601 0 obj [3593 0 R 3594 0 R 3595 0 R 3596 0 R 3597 0 R 3598 0 R 3599 0 R] endobj 3602 0 obj << /F4 527 0 R /F7 577 0 R /F8 643 0 R /F6 539 0 R >> endobj 3591 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3602 0 R >> endobj 3605 0 obj [3603 0 R/XYZ 106.87 686.13] endobj 3606 0 obj [3603 0 R/XYZ 106.87 668.13] endobj 3607 0 obj << /Rect[269.02 638.78 283.75 647.2] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.1) >> >> endobj 3608 0 obj [3603 0 R/XYZ 106.87 241.49] endobj 3609 0 obj << /Rect[270.53 212.36 285.26 220.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.5) >> >> endobj 3610 0 obj << /Filter[/FlateDecode] /Length 1279 >> stream xÚVYoã6~﯂} ˆ%êj±¼h²él±1ŠM×û XtÌ…,i%9‰[ô¿wÈ¡.ÛIŠB#’ùøÍa¹Ôu­{K“÷Ö»ùùed%4 ­ùÊò9CËñ}Eæ?}&ï¨Gm'Š"2¿º°á€“׳_õ¯OÞœ]_Ï>Ú_濜_òAŠÓ0¶\-ÁãL[s­+Ü×2{½.øl‡1ž?ì„“´–é].@[ì‘L,¼ *d+Ë¢Ù×éZ‹©kI7B] <Ò®ÍO#–ê.:ú`A§¢Á­ÜEÎÞf‹%M"ˉ]Іr:rÉò˜Kǧ "¸.™÷Êå¦ m¯uìXÀ&Ž!Ï:Õ‚OQ@c”Ñ$ÐâÑ¥$ «2ÏKÛ É£,îq«Ù¶‘6}BŸit â>PŒ%”…æqÞî‡κ‡[•õÅJœ$$)’B<âÏØn­Ð3>ÃÙé[¤¸]U¶Ö‰"뜜øÆ¹pä Ÿ&ßše["M ¤âI6-º ˆœÚ±ç¯çÒijQε™Áóx|€¨ªÖæ¸ã(wL§G¸<Ÿ&š©lÖ?"Û'ä2Ìl,sï{d8a'øcÖ7âÛVKqhNJΠè÷{$z^õN@“x¶™íp×#°mÞJ'—…P{̼±:UHá.¼“†fDm/&";ƒ]–ǵ¨2ê‡V?˜ ú¡•(à‘e¹©¶­Èpu§`¾C­ªÈ¢¸Nœ&“T¹Óxè€ÙΆò:¦ÿ÷é?:94›@C)¥Î] BµfÃó0¨ŽEÝNxõáúâ9U-‹6/³Šâ~s»°1p/ZQ<,†Sç9¥œ}­G±t¾.7âüëný?Áƒe!b¤H7æo“ªÇÛ©…«_ €‚'ß¶i.UF«çײ]ã_Yžr…´=Rà(bÕö.—˃Ũ޳ýû! ºòXÕ-tÄ×ø>‡žå÷÷¡9¹¤¬í Ìïɇ´=Œ“ïÂëLе)5h3 @Ý@]¡ÿŽ~8<> endobj 3604 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3612 0 R >> endobj 3615 0 obj [3613 0 R/XYZ 160.67 686.13] endobj 3616 0 obj [3613 0 R/XYZ 160.67 313.89] endobj 3617 0 obj << /Rect[317.8 282.55 337.51 290.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(section.4.11) >> >> endobj 3618 0 obj << /Filter[/FlateDecode] /Length 1260 >> stream xÚ•WQoÛ6~߯º<ÐÀÄŠ%KÅV A“.Û²­¥¨ú [tLO–CÁï„}]?à‰]ó#®™,ÚÌ«¢¨uyß ëUƒbV“‰úg£²B•m‡&OB W5‹·ˆZp–²u­Ë¶(iüêW»à౪‹üU:êcEÏbeyÞlæsý 5|öÓnêêúËOéhˆ~Opú©tCžÄ€‘P¬®ç#W1kM°d°ù¦œµº*Q­×…že"a‹¬A!CƒéÈõcVÙß|;ŠžËHî÷ccauš@ÖYÓ¨‘RVdÿêb µsmµ÷̜ܒ'²ü¾«CǦ[+H–úá¸nZš­ï7+UŽÀ‰è8–’}YnºD]â’Z=èf‡èñ„Ç(6›õÏQ ¦]t9«VëBµŠ=ÎÐ_ ØÓ ¼„mCÀ¾‡’GÕ Pã0Y"äQBÓÖ@Ö@xÃ̘ VælsÞÀëò¢pÊ€™~4?&àhƒ-ÊΪàœɘKAn¼9ô1æA7g2fPt™Ïhóv‘aQ"î 2ˆ§1霖g¦Sd8>æ?ôÓ‡|ù=jS¸¦ µ¼°UáÚ}? rk÷-£VÙlAƒϬMö·jŽ3M»eh4­ò-a’æ!«u6-T§-óNèZQm™Â ½}ë28ä>y¯Lã€àæÇÍ…\ßÉtwU¨ýy«ùÁaíÖä×£nÓçG›ÎuÈ÷SaØ-ìl{?µè)œ] ™ƒHÔ¦i׊œ©Êb»Ë–­ª3HÝ4ª1ÕÝðçš<¥>eß($‚º*±'Ùp¤àqЇ€ž²3\%™ †íöìN]i,~äKýúÊPŸøh*Äóð3B®LË+±¾=ÛÔì<~½ÒEVã€8xЪÀraÕÙ ZYÛŠ°±·`kÛÏÕL›-‰ŒÇÚ±—…/=Hâj•¹2ð†ÁV‰àÆÊÓhtNÁë<kÆX?ýÁÝb»‚´(æþ°F Ø—¯OWݤìvQù‹­¤ÇŽ”iâÅÒÜTFøå9>hâÃÙò!N]ã?ƒ¿D·Ïò4ey2þ¿4¼¦‡ÎåÄ>õ¢Ã§žãç‚ûð'¡3 èL·Ssc²¥šµÍ!WÍöpÄvÙ'e¸SŒÐ(JCCÎJTV€F„g5),EÃŽ/#>†˜É âA`ñ%¢oI.åÀ"™w§@Ÿ‡{`É€ý’1únž¼;d"Ñ|ò¸jlšöÃTÎJ—YW¾T­énIbo;q·Ya±EB#‰ í!PaKÑ> endobj 3614 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3620 0 R >> endobj 3623 0 obj [3621 0 R/XYZ 106.87 686.13] endobj 3624 0 obj [3621 0 R/XYZ 106.87 148.31] endobj 3625 0 obj << /Rect[256.83 119.18 263.81 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.8) >> >> endobj 3626 0 obj << /Filter[/FlateDecode] /Length 1525 >> stream xÚµXKÛ6¾÷Wh4²Ëˆ”(Q(rØ´IúÀ"@j  ê´7V K Iήýë;Ã!õ°ìM.½,é!9ïùf´‹€ÁâóÂ.ï¯W/ß&‹”§ñbu¿#®ãÅuâ²úõöšK¾¼N’„­~{³„ƒˆ½¿½ùÓnCöîÃÍíí͇快?^¾.RóX/ËAF!žSò$Z\ËÄ^ƒ£ÕÖ,¯#±»%PY 5ËD«ïqU¬ó—j¸¥ûb6l³–Nú+ûvŸ•´½¯›]#FË*Z‹*7Õäu&GJhÅëA¼–ì À¾»}Go*óHFˆˆ§`ƒYUwó¹¬ïÐBÜ“_‹¦®vÎ U,ëWÔ6+:q_&=‘³Ì;ù.agˆînšÖ]«ˆÁŒãcÑméÊšeŽVš¬íÖK"“@E~¦Ì[ÊÝgŽÔšËÈeÎÇÓ¼Ò\ù¬Êªüô­H¹ùéô¥â2tgWވܥ¥£#Gé)Õ‡L4«²!&3®ÝÖÆA@BÑÒꃖ Š:s]À•“½)³¶=Õ :õŠoêÝnð^ ¸ŠÉ{TÔÙÌgB–½¿û2ó™À‚»*“µË °€›©2j^¸×OÔØ•çK+ô ož:S峿 3CâóÕeˆÐ¬}°i6…­‘–¨EPYtYµ1gДÝîË®x°ÃåôÜÜì,ë¾øLnkvCØaý™(ìV#™5¤t±3˜ÝirnNH%ß0À.ò˜ dhÑ’‚GF7臖HEµ)÷­ÓÀaŠŽü̫ܜÛ4C‡ÿ)OB‰pq~ÔýŸË#þ®ò g˜‡nû¼ ã„O8¯Ãc]ïÖ,?âO¼Xô÷Tìù{Ö_ÃÅf6Mv<¬Ù·|`]|vûÒÙòäm?xÃ'ÅÚäeÆïøÁ¥Ö°Sè˜íÀ`œ$ÎÒ©â‰Ï~rÎ ×¾·Mç åG4+²1†h£9 ~=9Ùð•Ú¯ÔD»‰?¿`D°ãœkÇ®¿Ä\ÉïýØZ¸ÐŸ³q3>Ö.ôi?øØ ÍÞÇ\¨I³~³²ÿˆOÿ!¡`\Iÿ (ø%ØŽú°/Í ƒÅPÛûs2¤lÐ+Ûì¡3k§®É6–™Ý®Ù/îF¯Ì,]Èm•ÂG yOá#*‰'Ç8£A<#Àá^MN6Ò­îk‹àøíÛ< ]×zÇüðílW endstream endobj 3627 0 obj [3625 0 R] endobj 3628 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R /F6 539 0 R >> endobj 3622 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3628 0 R >> endobj 3631 0 obj [3629 0 R/XYZ 160.67 686.13] endobj 3632 0 obj [3629 0 R/XYZ 160.67 668.13] endobj 3633 0 obj [3629 0 R/XYZ 160.67 652.05] endobj 3634 0 obj [3629 0 R/XYZ 160.67 631.73] endobj 3635 0 obj [3629 0 R/XYZ 160.67 611.41] endobj 3636 0 obj << /Filter[/FlateDecode] /Length 1816 >> stream xÚ•XmoÛ6þ¾_a  1'QÔ[¶/I“t隦H] Ã2 ŠLÇdÉ“ä¦þ÷»ã%ÙrŠô‹E‘â½ñ¹çŽž¸Âu'óx39Ÿÿr¥&‰HÂÉ|9‰cªÉÌ÷E ï9R©éßó·¿\EÝ7^$…+'®Y?ûðáòýÅõç)ìñs1…aèÜÞœýq‰SÊyswvssv‡B&—óužëŠXNf¡‡”ç•$Î lô[]fšdUKšmÓúQ·Í¯½ÐNR,…ç“å,©*5íªj’ÒNeä ¡+<ûmZ.F²¼Dø!¯×Û•`ý¦ÍÁîCaì?>ê“”" ̲²>NãUZ’?9ZŠajµY‘ÎÃtFƒßÅnKGÙ +œÌ¤+$ß|Ö)/²gD/imgíò½ ¢Bór[Ñ•Dñ°Í‹öÆ~LîíÇ¢-}L_¢(oÑ3O‰`îy" ºbq :ìl08Êw®—4° °q6´hôâ a9YŽŠõΩA1=ËEž¥­æmí*míH[ë5íHI³‚ Û¢Í7€tÄú€Èh8AÙã~Åið˜Á“ÕåA.QŽ OycS¦,vŒp›EŒ?å -¥EQu)¥„ a  ²Î„1NØŽÄeÅ4Î*B[𛀯˜fÖñ€*Â>¡~:}" ]h-CI«´N³V׈×g¥ –­•ÆzT æë#)'•¬º|½)òŒÀ3ÔêKÛoX¥’•ÁµN¹ºÑðÄš|§ŽBé<­t©éh¨BÏP ,‚i¼N[ò//é#†¬mÒ<.éŨ‡§AB(8ÂL-€w˜ºšÆL LMÁU  é¨F([Vö¸Éà Eè:ô[€^z™x÷a¤@`mix½É –ê;·¯ÓuAŸp‹CLí$Àh@hÊ#\ˆl]‚cRÁ·20£œPˆ0zóêôœÝ¼{}?¥]³Œö¼úíð°gÒad´ùLudXgpô„‘©¶˜t2°¬Ék€„ü×f ¢Â›SztÑéĤ˜O;šÀʇO“Ð&Df«Éšé²01ûóve¥ÄÌw#¤l-†kä§b¦Û{z_±¶«ÞuR0LyÓâÈ3Ä™´h*aÚz›™ à'iCC†¦Z+¿Ã3ÎvÀcHv–É„AF¾¤Ù–Î*±`Ź'Ê5~ÛCÌ·}Éä‰S)ÍpˆQ–øGtYUÇ‚êyõD–›¥µM“x hÄÝ1k¨ý4îRKFƠͰ=çø}A"d80ϦóCS¡q‘–K—K/?dó9—+ÅLO:e_DãD»ªµžmÒº¥÷/X½tÝäxÒ¾ò¨Ã´ Oƒ£r!‰·Ô­:–Ñ~…rÊ} ýæ™oŒ¡0¡EßäÚ`ûd…SŠ#²¡7ž„SdΠ¥³Aw6¦Ó_A̪Åî[DC´vH‰¤Eq\ys‚Q>‘ì­Õ2úG[§ÖÛfTǰÖù¶|ö¥ÅöAc¬3Æ~8<*ʸ]QŽ»¢Œu>ÀÚOý ^†ÂŒú«$´(KÃ%\?Ž#!ƒÔn¿ƒù,„:v…m­©F‰ðˆò¤íZÂQùKÃÒT;´ÐÎÚjs»LÀ™ïT®\n÷ÈÑÈ,4ÐýáÁ%BÙÔ&ÀŽp ìiR¡¶øðûíû?¹HvR‘Q¥/’^—-£§ÔçƒoÈBõšÀ>[Òóg(¥—ŸçÿÜž¿¥ZÚO½»>‡©ÊC'{å´‡ƒ ýþàÌ7·8¤¿(&rª%!ÒCòyád³¥¼ÈkµU[)o|v_ÂgÏ]št­”›²&l~Rn¹©äîuÚÛf›|¶Ü ][F„½½‹¶%jžéž-ßú¾½jà”•” y±SK$v {™Û7X;÷0ÍòÜî¤Ü!A' !fžî\£\óñ¨é‹SêV:+Œ'ø’rs¿Yûì~įÃ4ä` 1H[ú0G$w¨fÆ^&Œhº¥ê†^ˊ糪®5Ǩ¢[6ýÓ±GÍöêÄM+•üqPff€ßæöîâònV<Ã..ƒÆ¹¿r-íû½×ÎþÁtxôá"+Âï2÷úýëwŸ.. Vð‚¡Å~GϘLñTÎ#Ünj¸ù‰îÁ= Õ_Û.q f±e8âTà­ï;œúøéüâúîã œêSiÉÁ=J$DÛt‡W}fÚ ÷ù«A®mjˆG:ÿ‚ÁÿÎüð?!5 $ endstream endobj 3637 0 obj << /F4 527 0 R /F7 577 0 R /F11 1186 0 R /F8 643 0 R /F10 1169 0 R >> endobj 3630 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3637 0 R >> endobj 3640 0 obj [3638 0 R/XYZ 106.87 686.13] endobj 3641 0 obj [3638 0 R/XYZ 106.87 276.85] endobj 3642 0 obj << /Rect[305.01 248 316.97 256.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.11) >> >> endobj 3643 0 obj << /Filter[/FlateDecode] /Length 1639 >> stream xÚµXëÛ6 ÿ¾¿"ŠÁÙfŸ%˯b+ví®-6´Ú+°l€ÏV.;õ#—ûïGŠ’q¶»bÙ'ÉE‘?R|xá:®»¸[¨áÍâåêêu¸ˆ8X¬6 O8Q°°=‡ÕÏX/î,í0 ­ÕÛ›%lë·w׿ª©g½ùpýîÝõ‡åŸ«_®^‹ œ Z¸Š>í3·'°=æ9¡Xؾº~ÿþfv•ðækšç$T&×ÜKI_ ]w…^ØTµ¡Û/mY²Ìd™>Ðb“&e™—w^´°}`Ï@Læp¦îXmem8›I#KZ²N Z.«öm^•3CÀ3}D÷çÄ%)@AŸ œdÎesŠãžs}°Ý¢Ah5Ým#?w²D9[\ NÔGVŠ”´‚‰¹ô{ø +o }͘ûê–¼Ñx¤©Ü·É­Ñ=ßÐR<²ŠVʪ¥‰<æM;ÇV›ÅN žâÓ<&Pì<>ógðàÚx|X;$éM¤î€ü€[·Aˆî!”â¡mRÞ)=nµS „•€Ë2Õ°Üo%ÈVøà±ÈSð­<̈¢êZ»ÚØYÒÊK ºÙ€HÖ6©ïd;C4-½‰¿¹b h ü ÖðQ ××^ß–Z{½YmhÔì|¥8D!áùðþ 3]¬P´‚%xìj‡ã‘kíD?ÂØº%{ÒNZK)£¤Ì®0*¨#•"Ër”WÀÑûm^èƒJ(œ5p†ÖÀQeÚµ*xØîýÐäøÚo¸ÏÛ­Ž(Ī.’ýŽêˆrŠÊ8Ü”&ܘ7„·’€g”4îˆF…,.à*$ÊZ»A™ìä©„…Ó˜‰9!V»Êƒaìɇ-e~½u" c'ä§ó•”·x.wÜxl†>8Q®ç½¨Þipñ¶Ë‹K„«CRtRã)ûúTƒ pá9CÁ±Þ>wœ Ç7Ù77a0]¯KžÜÿ5mPœ û,q Üצ::¤ã«â…<7rD4Fw‰ú˜6q\npV/­+ûÃò9Íïß5çBï§ø®(èêdÎ]§BîÉÎÿìÅÿª½‰ÆŒ¤HpIE~º¨"—诙DÂaÁ ‘Ï™¾6dø~Š<ÍÁëìLóiH€ÒK@ˆ MUSžÓI±ß&:8¶y °«Ð¡(]cäÕá-)”D£@ñ¸‡}at}öÝìÒ»ÉøêQðÄy`}”¾ëÌ$á}-YÐÃ.ã\?|‰s¡ØuÓÎ5#æ OäY—õ›/uSK=3‘ÒÔÄÕf’ŽÇQu ›­Ô•MטjjÓüA鞤ÙÓæ4 Ö™×KÊ7+Õ§±ð9æ^Ós'Xb½[·R¹T$ 9îvPQÎ*e,#Ç‹tê‘'Õ‡nö­ñ©J+ÜhÖªÞ׬ɶÖ+Mß‹¼àкcó!Bk2¼Š±ñ¾€}6Ù7:ƒÉ…êv‡’úwª{±ÿƒœŠ] ¸ªirÕðáÖL8Þå”Vé`B¼4o4e£1UUvª’%í  ¹V—ŒÒðþ„ß—*”ÄbÒˆ–PÓíT. lÛ¤u¾'Ö¸ Ša,ßí Yc‘¥ÌµêQ°A.ôc¥-wûVw xªi!xí†*¨îõ?à%2Ñ‚Ž¨Ï±¿›¸@/.6§/'BoVê éa0S*ã‚nam"ŠPœL„t“îT45-£Âi'SÇÞˆ(û–teôg€€z7!MšÊ$7yL\óÃcx™ÜU †â§!YèAlÛ˜™|#NµóÞI¦ÛŠêæ·@\õ}UM_Ðp•ÉÃUÙ)‚ÐâAÅz`/ˆýz¹´cá»=«MW¦ä[øÍ›Js¸pVèóÿAd6º§y(ÛäHsY×Uý((Ï'¨L„îû¡ÉùO?2:eˆ,Dú ÌÃÝv]ÓW&7y™÷úÞ¬¾ú7F< endstream endobj 3644 0 obj [3642 0 R] endobj 3645 0 obj << /F7 577 0 R /F4 527 0 R /F10 1169 0 R /F8 643 0 R /F6 539 0 R /F11 1186 0 R >> endobj 3639 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3645 0 R >> endobj 3648 0 obj [3646 0 R/XYZ 160.67 686.13] endobj 3649 0 obj [3646 0 R/XYZ 160.67 606.88] endobj 3650 0 obj << /Filter[/FlateDecode] /Length 1635 >> stream xÚÍXYoÛF~ï¯?P€¹á±Ë#h8ˆ¦mÚ QQQ€¬É•D”"U’²ãüúÎì,)r‚yèÓj¯Ù9¾ùf¨™Ãg¶™éáåìùòñŸÅ,fËõ,ŠXÀg¶ï³æ/Þ[–¿>¾ »3nè1Ç›9zÿâÍ›Ë?^¼º^ÀßzÎvÖŸ¯/~»Ä%n½|{ñúõÅ[uBlW¸ÌÙ^¨@’*n¶ð¸uýÔÅÂÚ¨Æ, ˆãPX¶Móz«òœ~&ån'‹_¥l×e±Ð³5 lªƒZØ.çx¯’L ë²ÚM¯¯Vcî7*0ÏÖó?Î×$\.uLÄÌåÌç½ ¸>xÌÕ‚Ÿ3¤¹póE™ç²Wƒj»F×J³•'BUÕäócpA7t‹µˆWEž ‡pÉý>ÏÙdeQ㊰¶ráÖí‹,E+’Ž®E‚çÌ"謗?«ª´ËÊÞ•U+³ÚvªXx¡ÕÔ‹ˆ»ÖåíBpKæýÔ‰€áëŽo™ç÷8ãVÝTYÒ<OE۪ܺ‚–eA‡{ÊÓIá–‚×½¦ÒsXó«Ù*:Ô³Žf©ÑÔ¸®4Qq ݱ-Éý’†V2¼èG½¨·û¡›²2{¶ ©£‹ZùÚÉæÔð šR3÷éû”wY³¥_$Àç+`o/”Œwî$u‰÷½0²dšf¨&ÎW«TãpNÓZý{PE¢j3ÝÃ@J²õýéûIIW¥Y(qJð«p%ì;.’‚v«ag÷’\APþAª y}§ôZjK‚¡P5I”4¬V¹ü|?7kGìépLjÏʨÐs²‰U¨±‰{©Ê%êw¯•Lió`0˜ÓT’Ǿ‰­T²Ë í®°*ðyV©8Š´#F–»?òöÙù ÓElvÛ’h hY!Mš×tòÁ¸Z)¹Qw½:HEP¡—™£Æ×6sû¡? ƒ- Ô§æ!."Àa ׳²óRcŠû~–U%ïO^}6eíãÓ׃GÇÐCs(ðaec_Tà”í¦-óhðixD0Z놢»ý-êŒD?›úõ¨Ú¾ÊŠ&/VÖÙüìzfÛ®mÕ£®—KŒÄÕ# ëH ¦;QS=%KL¬Ú KNð%rÇ#àüME> endobj 3647 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3651 0 R >> endobj 3654 0 obj [3652 0 R/XYZ 106.87 686.13] endobj 3655 0 obj << /Filter[/FlateDecode] /Length 623 >> stream xÚÕTmkÛ0þ¾_a²|!V%˯c+¬$)…&ƒB]˜â(‰Á‰·þûI:¥Mœ‘öKût'ÝÝs/:=Á„XsK‹ÖÍøªZ1Žk<³˜‡£ÀrSbÜ}D7˜aÛ Ãuï†Ãï÷¶´yèç]wÐôîGöÓøöªï½Æ»"‹èX× Á½Øãม¾‘^Žíø®‡¾(ᣯ¼ªø3èÄDz­À$´C)Ž}[Ô‹kýêƒÛ78=÷>ÍÔÂiëâà ^ûw‚øtZof³lo®•5±;/Çþ`Ø%vbãþ­KéËË27}ÎóbÂs܀ǟ½Ùòþ’·®íñé$‚‚pA°Káe•­Öù*AíVû¡% s(ñ ú ¡³¢J¨ë…QÄ–ç¾ÎŠ•yÍÕ už‹â=¤r±™ƒŽŽ÷‹z8öäöÈ(WG $:#ÕÅR€–òZÔ¥‡hYTú–"±/ó,ÍÖÆGå†h]9\d5È©¨³JL!¦P>[Û¨À,¶¶/;1}Éá1†úvÄPqðØóe™‹ŽîÏ1å¾6¹Sº$-¹:<«ƒvY½m]€T¹<È%šßˆ’‡¡ùfjšc’ffÌ‚WrÑd‰j&” ÉF!йîpåÌ …¥êrÁWsQƒ* ôÓ6 ñ ¦ÔdÒ+Ö,Å1=L¯Êø$&$qqh|žÅ%Ø;tÛî˜owF=±Ú Óó¾¬D]ëÝcò‰ô~ÖÀ]0}Ý|Î&Y³¶¾ã;5øê-úª >„ê:ïã:ÿ¿äºàp]zàºôÀuðнñ§?:·ÞH endstream endobj 3656 0 obj << /F7 577 0 R /F4 527 0 R /F8 643 0 R >> endobj 3653 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3656 0 R >> endobj 3659 0 obj [3657 0 R/XYZ 160.67 686.13] endobj 3660 0 obj << /Rect[208.43 538.33 225.37 546.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.229) >> >> endobj 3661 0 obj << /Rect[241.36 526.36 258.31 534.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.228) >> >> endobj 3662 0 obj << /Rect[210.06 514.38 227.01 522.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.227) >> >> endobj 3663 0 obj << /Rect[202.01 502.41 218.95 510.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.227) >> >> endobj 3664 0 obj << /Rect[212.8 490.43 229.75 498.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.228) >> >> endobj 3665 0 obj << /Rect[236.91 478.45 253.85 486.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.227) >> >> endobj 3666 0 obj << /Rect[197.36 466.48 214.3 474.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.229) >> >> endobj 3667 0 obj << /Rect[211.2 454.5 228.14 462.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.229) >> >> endobj 3668 0 obj << /Rect[221.46 442.53 238.41 450.95] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.229) >> >> endobj 3669 0 obj << /Rect[231.07 430.55 248.01 438.97] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.225) >> >> endobj 3670 0 obj << /Rect[233.86 418.57 250.81 427] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.224) >> >> endobj 3671 0 obj << /Rect[250.3 406.6 267.24 415.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.225) >> >> endobj 3672 0 obj << /Rect[242.75 394.62 259.69 403.04] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.224) >> >> endobj 3673 0 obj << /Rect[252.18 382.65 269.13 391.07] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.228) >> >> endobj 3674 0 obj << /Rect[211.72 370.67 228.67 379.09] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.224) >> >> endobj 3675 0 obj << /Rect[221.52 358.7 238.46 367.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.224) >> >> endobj 3676 0 obj << /Rect[206.33 346.72 223.27 355.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.224) >> >> endobj 3677 0 obj << /Rect[252.21 334.74 269.15 343.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.228) >> >> endobj 3678 0 obj << /Rect[203.2 322.77 220.14 331.19] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.224) >> >> endobj 3679 0 obj << /Rect[263.31 310.79 280.25 319.21] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.228) >> >> endobj 3680 0 obj << /Rect[175.03 298.82 191.97 307.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.226) >> >> endobj 3681 0 obj << /Rect[176.41 286.84 193.35 295.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.227) >> >> endobj 3682 0 obj << /Rect[174.61 274.87 191.56 283.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.223) >> >> endobj 3683 0 obj << /Rect[176.55 262.89 193.49 271.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.227) >> >> endobj 3684 0 obj << /Rect[172.12 250.91 189.06 259.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.228) >> >> endobj 3685 0 obj << /Rect[174.33 238.94 191.28 247.36] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.226) >> >> endobj 3686 0 obj << /Rect[174.61 226.96 191.56 235.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.226) >> >> endobj 3687 0 obj << /Rect[174.06 214.99 191 223.41] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.225) >> >> endobj 3688 0 obj << /Rect[174.61 203.01 191.56 211.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.226) >> >> endobj 3689 0 obj << /Rect[173.01 191.04 189.95 199.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.223) >> >> endobj 3690 0 obj << /Rect[172.95 179.06 189.9 187.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.227) >> >> endobj 3691 0 obj << /Rect[176.27 167.08 193.22 175.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.224) >> >> endobj 3692 0 obj << /Rect[237.29 155.11 254.24 163.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.136) >> >> endobj 3693 0 obj << /Rect[236.8 143.13 253.74 151.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.195) >> >> endobj 3694 0 obj << /Rect[248.35 131.16 265.3 139.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.195) >> >> endobj 3695 0 obj << /Rect[249.32 119.18 266.26 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.195) >> >> endobj 3696 0 obj << /Rect[404.86 538.33 416.82 546.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.95) >> >> endobj 3697 0 obj << /Rect[420.91 538.33 437.85 546.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.100) >> >> endobj 3698 0 obj << /Rect[404.17 526.32 416.13 534.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.96) >> >> endobj 3699 0 obj << /Rect[390.61 514.31 402.57 522.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.57) >> >> endobj 3700 0 obj << /Rect[394.62 502.3 411.56 510.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.136) >> >> endobj 3701 0 obj << /Rect[394.76 490.29 406.72 498.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.72) >> >> endobj 3702 0 obj << /Rect[410.81 490.29 422.77 498.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.96) >> >> endobj 3703 0 obj << /Rect[426.86 490.29 438.82 498.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.99) >> >> endobj 3704 0 obj << /Rect[441.8 490.29 458.75 498.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.101) >> >> endobj 3705 0 obj << /Rect[385.35 478.28 397.31 486.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.72) >> >> endobj 3706 0 obj << /Rect[407.07 466.27 419.04 474.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.37) >> >> endobj 3707 0 obj << /Rect[423.12 466.27 435.09 474.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.93) >> >> endobj 3708 0 obj << /Rect[439.18 466.27 451.14 474.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.98) >> >> endobj 3709 0 obj << /Rect[394.34 454.26 406.31 462.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.56) >> >> endobj 3710 0 obj << /Rect[401.95 442.25 413.92 450.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.30) >> >> endobj 3711 0 obj << /Rect[418 442.25 429.97 450.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.95) >> >> endobj 3712 0 obj << /Rect[433 430.23 444.97 438.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.41) >> >> endobj 3713 0 obj << /Rect[393.82 418.22 410.76 426.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.231) >> >> endobj 3714 0 obj << /Rect[387.48 406.21 399.44 414.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.92) >> >> endobj 3715 0 obj << /Rect[384.77 394.2 396.73 402.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.91) >> >> endobj 3716 0 obj << /Rect[375.25 382.19 387.21 390.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.57) >> >> endobj 3717 0 obj << /Rect[393.32 370.18 405.28 378.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.94) >> >> endobj 3718 0 obj << /Rect[383 358.17 394.96 366.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.92) >> >> endobj 3719 0 obj << /Rect[367.78 346.16 384.72 354.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.245) >> >> endobj 3720 0 obj << /Rect[365.01 334.15 376.97 342.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.89) >> >> endobj 3721 0 obj << /Rect[381.06 334.15 398 342.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.245) >> >> endobj 3722 0 obj << /Rect[367.78 322.14 379.74 330.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.89) >> >> endobj 3723 0 obj << /Rect[383.83 322.14 400.77 330.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.245) >> >> endobj 3724 0 obj << /Rect[362.79 310.13 374.76 318.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.89) >> >> endobj 3725 0 obj << /Rect[378.85 310.13 395.79 318.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.245) >> >> endobj 3726 0 obj << /Rect[364.73 298.11 381.68 306.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.245) >> >> endobj 3727 0 obj << /Rect[367.78 286.1 379.74 294.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.89) >> >> endobj 3728 0 obj << /Rect[383.83 286.1 400.77 294.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.245) >> >> endobj 3729 0 obj << /Rect[365.01 274.09 376.97 282.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.89) >> >> endobj 3730 0 obj << /Rect[381.06 274.09 398 282.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.245) >> >> endobj 3731 0 obj << /Rect[388.81 239.24 405.75 247.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 3732 0 obj << /Rect[388.81 215.27 405.75 223.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.209) >> >> endobj 3733 0 obj << /Rect[392.74 203.26 409.68 211.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.131) >> >> endobj 3734 0 obj << /Rect[454.37 191.25 471.32 199.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.217) >> >> endobj 3735 0 obj << /Rect[435.35 179.24 452.29 187.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 3736 0 obj << /Rect[438.81 167.23 455.75 175.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.217) >> >> endobj 3737 0 obj << /Rect[430.5 155.21 447.45 163.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 3738 0 obj << /Rect[445.24 143.2 462.19 151.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 3739 0 obj << /Rect[422.83 131.19 439.77 139.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 3740 0 obj << /Rect[419.78 119.18 436.73 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 3741 0 obj << /Filter[/FlateDecode] /Length 1946 >> stream xÚ˜mo7Çßß§Ð £¯]vùL‡CmYIuµå@’qã¨iZG $¹i‘/ÇÝåÐ#'olƒüóç™!9œÙQËÚvôn½]¬¾¡GB1ëF«_FÎ1£F çŽ9;Z]þg<Û¼]ÿyú¿Õ¿¾¡Fžydí¨1œYŸïÞì7wÖßÕhºæˆKˤk™Q&„/Ý?ò‚iŸ1ÍÛõÇÓF¸ñþëæþýz ¶e’£EB¸§PÑ*¦M‚Þo7ÿÚ¾{ÜUöyÖ $Â(n˜– U؆Q-óIi”pLóŒÚ¶î~?vŒÍRUƒ´´‡ªeÊ%Ö/ÛÝýº9J4š9ƒVÐÖiÁTÞÏ÷›ý6a„aR ¹ŸÂ(¦Â45 ,áIi”5LaRt±t…–FÁo™Žóçíãáã㡹;4õ>š6‰A,„~ “-œB…`›íîÃvÒæ ¡áH—°íæá¯f½ÛmwÕá÷Lh´‚6î²ðˆ˜ŽívØñvƒcháÌ¡u´¥Ò0‘/ÕÇÝûM8i‡|_í‘ûê8ã-%O³TŽ Y£×¾?ÔçÆ8¤¦ …}5 ÎÏáqÿäè¸RNÓ¬`Üu¸í»Ýz1R‡°•:šããù~íÝ«>}Eô ZIGÏƳÃÄû¿{“öy_¥<‘xƒž´TµŽµžæ}!?C^G´ +7-ݰæÕ©“ci±BCÀ—6]«fWk&éN)ÅÚt‹š%H¦! €Ö̧ýnnk ´@Úcãc¿aÑ+t!!øtšßkÂ3Yè zÎÒ.52ý<¹\ƒ,×Ͷ^ßJ$ 3•æð4¥ƒÝ|¤ (´†$û:„Þ!¹‰ª›CpxH@n¢Öñ½Ž€Oõ)X@^6m$³iØÅíìêòfq9Å'Ú˜x© %—T0¬f–¤Ninô pNS”Aeñ!¾è^÷£e÷Îw£™v1}9›×%…Åî©ýu6$ì/Z2HÄ…Ei ¶h ½8åœÏgW·‹)~É èDJÚ.ï™Ñ_¶ dPêv¥Ú®¶¼L¦KœN,fËB£-Å€âÚ¤|Ξ\ ;•w)ÂW¤§@YÝíü«oæ¯kбHdE宑hGR…@Ó(!ê-‡ç¢«ü»åe%+̴̿Ïå4´F)ŒŠ@(¢R>b‹t¼ðžrJµR‡‚Ðs è8ËÉù|^툌_)“æšÇÁñ)¦½DÁ€ôì/7.Th¹£œ€ÄØìÄ*"çáÇj6©ÏEHÀ…Z“‡ z.Ý-o/.g‹%I›±A&[’6v Å<¾´n8š&óHè^ŒGVœB.ÇoR+¹·Uáã‰Ö*êð„f¦c÷ÍæîKÄÔSH…$YÐÆ¤`ž­¡A7ëûÃþ ŸD¿ BOÄжäGè :†ýŠLMà ó¤9Тؔ Ï’_aä§X<:2O…æ¤ãìïï6›õHçÅ®$¿ögœj=¾{x\Wžñx % hLlJŠ'ß”}€ñH u¤B’?õœüd(0KC9+€Íã˜úøá¤˜>bXÚð-é ¨ 0!–ó8„Ñórš6 44¹Š;ù6€‡cU *xLúÅ<Ž€I¿˜>bôC6Ý‚“Ö[<,GÐÙ”7N~ bXÈóT ‹é#(Õð3uŠ yŠŠyêÓG 0}Yx~q³ˆ™W~áñS¹5‹©äð‡ìråWŽfàͼ"Éôf ¤ð ä)©ͤÉÍõõù¼*IeøàéJœ‡¢Ý>Á£7]ÄWþ¿Îà@¨%Bƒ˜‹.A€¡ÌÕ—BJø]„, Ô!€GCÖ“ºà`R1šI—ÓWÓùåt>y‰ùV DÅã7ëŠXŽfbµ%¶Ð×vŸŸ[O„-ô­é6_Æ¥àñ> "N>¡w5éÅŠ}À;'àH„r"ÈTèç„Ír7+G3ízù²ÞC/` &Æî¡ÊÑŒšü8ü4›¿Dþ9™:žA&8õT†Þúkv0 Ô´ãv¨Þ„*G3*W_(þ—‚Sõehþsƒõ¬‡ S¢ô0 Ô´ãv¨Þ„*G3j1]†SV&dð®Â#›hd—Bžudpÿ Ó@íâ@;îb‡êA¨r4£þšéÅ·qëKÝ‘M´ºÏÏy²˜dz_Ò@íá@[Å|úºöÒ†€8 »©iÅ`†Á³ñjVµrJV…TG< ßK¾ÂÃðYF—¦ÚÃö¼‡®sÑŠÁ »šÍÂÈc§QHޏ7|zyÖ½îsOïúÜSŽfÚóîu¸ÎD+3,5ãøˆB`°•‡Ð߆.Û@sÓ}'UàoÿàÞË× endstream endobj 3742 0 obj [3660 0 R 3661 0 R 3662 0 R 3663 0 R 3664 0 R 3665 0 R 3666 0 R 3667 0 R 3668 0 R 3669 0 R 3670 0 R 3671 0 R 3672 0 R 3673 0 R 3674 0 R 3675 0 R 3676 0 R 3677 0 R 3678 0 R 3679 0 R 3680 0 R 3681 0 R 3682 0 R 3683 0 R 3684 0 R 3685 0 R 3686 0 R 3687 0 R 3688 0 R 3689 0 R 3690 0 R 3691 0 R 3692 0 R 3693 0 R 3694 0 R 3695 0 R 3696 0 R 3697 0 R 3698 0 R 3699 0 R 3700 0 R 3701 0 R 3702 0 R 3703 0 R 3704 0 R 3705 0 R 3706 0 R 3707 0 R 3708 0 R 3709 0 R 3710 0 R 3711 0 R 3712 0 R 3713 0 R 3714 0 R 3715 0 R 3716 0 R 3717 0 R 3718 0 R 3719 0 R 3720 0 R 3721 0 R 3722 0 R 3723 0 R 3724 0 R 3725 0 R 3726 0 R 3727 0 R 3728 0 R 3729 0 R 3730 0 R 3731 0 R 3732 0 R 3733 0 R 3734 0 R 3735 0 R 3736 0 R 3737 0 R 3738 0 R 3739 0 R 3740 0 R] endobj 3743 0 obj << /F5 535 0 R /F4 527 0 R >> endobj 3658 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3743 0 R >> endobj 3746 0 obj [3744 0 R/XYZ 106.87 686.13] endobj 3747 0 obj << /Rect[139.63 657.16 156.58 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.156) >> >> endobj 3748 0 obj << /Rect[128.01 645.16 144.95 653.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 3749 0 obj << /Rect[210.34 633.15 227.28 641.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.145) >> >> endobj 3750 0 obj << /Rect[167.08 621.14 184.03 629.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.118) >> >> endobj 3751 0 obj << /Rect[152.67 609.13 169.61 617.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.117) >> >> endobj 3752 0 obj << /Rect[151.03 597.13 167.98 605.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.116) >> >> endobj 3753 0 obj << /Rect[159.39 585.12 176.33 593.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.116) >> >> endobj 3754 0 obj << /Rect[139.74 573.11 156.69 581.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.222) >> >> endobj 3755 0 obj << /Rect[128.01 561.11 144.95 569.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.105) >> >> endobj 3756 0 obj << /Rect[135.2 549.1 152.15 557.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.125) >> >> endobj 3757 0 obj << /Rect[140.74 537.09 157.68 545.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.125) >> >> endobj 3758 0 obj << /Rect[126.76 525.08 143.71 533.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 3759 0 obj << /Rect[136.37 513.08 153.31 521.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.187) >> >> endobj 3760 0 obj << /Rect[133.88 501.07 150.82 509.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.111) >> >> endobj 3761 0 obj << /Rect[138.64 489.06 150.6 497.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.48) >> >> endobj 3762 0 obj << /Rect[124.96 477.05 141.91 485.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3763 0 obj << /Rect[158.24 465.05 175.19 473.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3764 0 obj << /Rect[147.38 453.04 164.32 461.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 3765 0 obj << /Rect[124.77 441.03 141.71 449.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 3766 0 obj << /Rect[129.12 429.02 141.08 437.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.38) >> >> endobj 3767 0 obj << /Rect[145.17 429.02 162.11 437.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.163) >> >> endobj 3768 0 obj << /Rect[154.08 406.18 171.02 414.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.130) >> >> endobj 3769 0 obj << /Rect[122.47 394.18 139.42 402.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.181) >> >> endobj 3770 0 obj << /Rect[151.12 382.17 168.06 390.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 3771 0 obj << /Rect[131.33 370.16 148.27 378.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.156) >> >> endobj 3772 0 obj << /Rect[136.06 358.15 153.01 366.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.122) >> >> endobj 3773 0 obj << /Rect[134.1 346.15 151.04 354.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 3774 0 obj << /Rect[163.71 334.14 175.67 342.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.29) >> >> endobj 3775 0 obj << /Rect[200.23 322.13 217.17 330.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 3776 0 obj << /Rect[193.45 310.13 210.39 318.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 3777 0 obj << /Rect[153.25 287.29 170.19 295.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 3778 0 obj << /Rect[153.75 275.28 170.69 283.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 3779 0 obj << /Rect[152.92 263.27 169.86 271.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.120) >> >> endobj 3780 0 obj << /Rect[129.72 251.26 146.67 259.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.106) >> >> endobj 3781 0 obj << /Rect[125.24 239.26 142.19 247.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.161) >> >> endobj 3782 0 obj << /Rect[171.29 227.25 183.25 235.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.35) >> >> endobj 3783 0 obj << /Rect[126.35 215.24 143.29 223.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3784 0 obj << /Rect[148.76 203.23 165.71 211.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3785 0 obj << /Rect[121.92 191.23 138.86 199.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.180) >> >> endobj 3786 0 obj << /Rect[224.57 179.22 241.51 187.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.204) >> >> endobj 3787 0 obj << /Rect[152.43 167.21 169.37 175.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3788 0 obj << /Rect[184.48 155.2 201.42 163.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 3789 0 obj << /Rect[147.93 143.2 164.88 151.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.189) >> >> endobj 3790 0 obj << /Rect[171.46 131.19 188.4 139.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.151) >> >> endobj 3791 0 obj << /Rect[176.47 119.18 193.41 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.217) >> >> endobj 3792 0 obj << /Rect[349.54 657.16 366.48 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.217) >> >> endobj 3793 0 obj << /Rect[348.46 645.18 365.4 653.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.217) >> >> endobj 3794 0 obj << /Rect[330.03 633.19 346.97 641.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.143) >> >> endobj 3795 0 obj << /Rect[328.37 621.2 345.31 629.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.144) >> >> endobj 3796 0 obj << /Rect[354.79 609.21 371.73 617.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3797 0 obj << /Rect[321.28 597.22 338.23 605.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 3798 0 obj << /Rect[329.64 585.24 341.6 593.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.54) >> >> endobj 3799 0 obj << /Rect[321.78 573.25 338.73 581.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.150) >> >> endobj 3800 0 obj << /Rect[357.29 561.26 374.23 569.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.197) >> >> endobj 3801 0 obj << /Rect[337.81 549.27 354.75 557.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.127) >> >> endobj 3802 0 obj << /Rect[329.48 537.28 346.42 545.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.112) >> >> endobj 3803 0 obj << /Rect[353.33 525.3 365.29 533.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.52) >> >> endobj 3804 0 obj << /Rect[379.9 513.31 396.84 521.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.215) >> >> endobj 3805 0 obj << /Rect[363.51 501.32 380.46 509.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.216) >> >> endobj 3806 0 obj << /Rect[367.31 489.33 384.25 497.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.216) >> >> endobj 3807 0 obj << /Rect[367.91 477.34 384.86 485.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.215) >> >> endobj 3808 0 obj << /Rect[363.87 465.36 380.82 473.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.216) >> >> endobj 3809 0 obj << /Rect[367.5 453.37 384.44 461.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.216) >> >> endobj 3810 0 obj << /Rect[334.46 441.38 351.4 449.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.156) >> >> endobj 3811 0 obj << /Rect[342.04 429.39 354 437.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.59) >> >> endobj 3812 0 obj << /Rect[321.17 417.4 338.12 425.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3813 0 obj << /Rect[346.27 405.42 363.22 413.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.205) >> >> endobj 3814 0 obj << /Rect[368.14 393.43 385.08 401.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.205) >> >> endobj 3815 0 obj << /Rect[373.73 381.44 390.67 389.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.205) >> >> endobj 3816 0 obj << /Rect[370.18 369.45 387.13 377.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.125) >> >> endobj 3817 0 obj << /Rect[349.43 357.46 366.37 365.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.125) >> >> endobj 3818 0 obj << /Rect[326.29 345.48 343.24 353.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 3819 0 obj << /Rect[323.39 333.49 340.33 341.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3820 0 obj << /Rect[356.67 321.5 373.61 329.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3821 0 obj << /Rect[361.22 309.51 378.16 317.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 3822 0 obj << /Rect[388.67 297.52 405.61 305.94] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 3823 0 obj << /Rect[331.72 275.03 343.68 283.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.67) >> >> endobj 3824 0 obj << /Rect[346.38 263.04 363.33 271.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.115) >> >> endobj 3825 0 obj << /Rect[331.41 251.05 348.36 259.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.106) >> >> endobj 3826 0 obj << /Rect[393.07 239.06 410.01 247.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.197) >> >> endobj 3827 0 obj << /Rect[332.24 227.07 349.19 235.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.108) >> >> endobj 3828 0 obj << /Rect[350.51 215.09 367.45 223.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.109) >> >> endobj 3829 0 obj << /Rect[358.03 203.1 374.98 211.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.197) >> >> endobj 3830 0 obj << /Rect[371.87 191.11 388.82 199.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.197) >> >> endobj 3831 0 obj << /Rect[389.92 179.12 406.86 187.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.197) >> >> endobj 3832 0 obj << /Rect[326.76 167.13 343.71 175.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.133) >> >> endobj 3833 0 obj << /Rect[361.63 155.15 378.58 163.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.133) >> >> endobj 3834 0 obj << /Rect[400.38 143.16 417.32 151.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.133) >> >> endobj 3835 0 obj << /Rect[365.51 131.17 382.45 139.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.133) >> >> endobj 3836 0 obj << /Rect[315.53 119.18 332.47 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.189) >> >> endobj 3837 0 obj << /Filter[/FlateDecode] /Length 1954 >> stream xÚ}˜MsÛ8†ïû+t´«–v €£-ÛYoÙW¬L’šì‘G‰TQòdf~ý4HPBS=s±,âÅ£ÆGqVäE1{™õof׋ŸîìÌ羜-¾Î”Î]9Ë” ‹›_/îßÞÜ~¼üßâ¿?Ýé“ ]^ºYÑ+Pû0N“†§Ú^FCÕrYïÿî‡oôS³’$0ËJÈö0e2Þªq¸Z­Òé¦Ì½OÇÕùtgr§ÆéÙ®k/3c.þ_/ÙjÝÑGÛ­ë}Êås•NmιަÜ]µÛ]Òj/ê.eù2/˜À³ ð l×ÕŸÑØßSŽƒ¼ÔL`Ò^ê´ýŒ%p40€°çÎ|Êá»ä\®,SÊ$MÛhÒf]í9„n€E&BDbìÒHw @!”þØí6\:uÁìÐ9x&”0t Ñ wÅ8~XÏI'süÑ¥®Þ±å˜Ü6Ž…p§± ý²Ãü®«‚´$Í—dre˜œpcì8^ý- §RPH»ç8ŠŸ¶ÍKd:-8j‡¯žÙæ¨Ü6Ž…pYtÇùwWÁŽ7 älŽÈ„2ˆ¶Ðùúùý"EØ2W\"”µãxµï&‹±\ F/tf‡ùa?¾3†Ë!•(Ç]«`f>Ýw“B)ü¸Ìím¾ç6Õ¶fÛ¨òÂ0¨B  >R^˜ùk>N~#ÌWen‡s}½¸ý8gži¤•h7ŽYóR¹¦³"B×®®¾O\­ÐLRSˆ×õ†[A{é˜ i/fˆKZ¹ºØRNCw±ª7,õ`Ÿ€“)è"e(;„šë÷÷7£¢ÈõìGðX ƒÈ”³í̆Çã×Í칿KÇg‘óüþññê]±ŸXZ%·A6QB¡Ï-Ò…;Zôiq;1hˆAÓTRü×ÇïÑ¢äaݾ½º~¸½áæ`¿¶D……Ž´¢ÔÛ/³z¿¬b–g§ç°(')€´0­âðüêñáIO!qœ$XÁZS~ˆ¶T»õêŸõ¤J `’È…K¤C†ˆÙדˆb) œA["°’Îè@)ø´öRAì‡kL©}øgÕ¾ð‚¬(rä³”UM¡Æáù|’U•bãb¼7`Nó§ñÞ†èJd•»åË–¼N)rlœp4†JÏ8>¿yx˜Ü}ì'h´ wŸŠ…ã×ñêŸEÌýãÓÃýí3'AAU¹JPdNaéÓˆ{^¿¾ ÷l“2šQLŒ’{Ó—²ýåì ½_&:y«)Œœ7uSwÕ¡^Ý­7“ZT® S‹‰ÚXs¤}«š†‡RÊöýéDà„Xj¨°(‡P» ë@Ù4o†ë¬“ƒœÄx?ŽÏ¿Õ=ñûü?uµâ-¼¹ÖLެ7@J°¬ÍhŽhë/) ­ëSòI*’BÇÅAO]ûÂA6W.QŠê°¬·Ë]|ëó˜½`Žƒ’|™jA«s5XÖ&¨¶¯–N²¡­;)AësPè°b:˜OüÕ[QÒ'ŸP‰ž¾G§IFÎ]°åç÷oYúAªž,×ñk>ÚCZ¬K–›j¿ç+¢¸È5¨ A=Z¬°zF½Ÿî°±Le¤¡ÍƘ¿iyÚ†X®#BGOi»Ë~ 'UwûuÛpƒ\9,ë¨/ܞЬ•ÃíZ¶Û]Õq“¨ Õ¤*@‰:ëhSÛL²YØÍ4ÒQ»6ú}Û¬ÖZQµ™¬‰JäF …nmŒÿmóõqÿrt±uÃý¦SÏw¨³MõçÙ¶ÚqÛüDÌßùŒ0JªZ§°)‡’oxc“e%U=úÏ)Tè×K¼‹ ”Lu¼?ræ ™B>~:åGB_ƹI‡„0žIE”¦¨ìˆ’.“§©™ ÁE4eAUN@ÒéS˜3Žéeõbñeદ¼9Í/E‡U)¤—ЊÅ×£‰õM½vë©¿(®)Ð…¾,f«úk5 —áU†f*FÍ™÷¦ÓÜÔóv»¥öë—!l²¨¢h›¼c³Ätš³X¡­"•çºÖ`™X¿9¡K‹Ú‘“Õ}¸û蓞j)G-[,°VulÞ›UÝ,'oýCÕáK¦×Z8«e^vhŠ>å$sd&õL±ô:gîºv׿ßáe¿×'Çd®Ì¦>*Öd«õK½?L#F陈Ê@BiÊ&ŒlÝd»êðmê§Æ¤Zš('°²v7Nüöù›%SC/Å,”hèõ©óú'O­ÔÍš×JZ÷R¢8µ‚ÿú ü¹r¤ endstream endobj 3838 0 obj [3747 0 R 3748 0 R 3749 0 R 3750 0 R 3751 0 R 3752 0 R 3753 0 R 3754 0 R 3755 0 R 3756 0 R 3757 0 R 3758 0 R 3759 0 R 3760 0 R 3761 0 R 3762 0 R 3763 0 R 3764 0 R 3765 0 R 3766 0 R 3767 0 R 3768 0 R 3769 0 R 3770 0 R 3771 0 R 3772 0 R 3773 0 R 3774 0 R 3775 0 R 3776 0 R 3777 0 R 3778 0 R 3779 0 R 3780 0 R 3781 0 R 3782 0 R 3783 0 R 3784 0 R 3785 0 R 3786 0 R 3787 0 R 3788 0 R 3789 0 R 3790 0 R 3791 0 R 3792 0 R 3793 0 R 3794 0 R 3795 0 R 3796 0 R 3797 0 R 3798 0 R 3799 0 R 3800 0 R 3801 0 R 3802 0 R 3803 0 R 3804 0 R 3805 0 R 3806 0 R 3807 0 R 3808 0 R 3809 0 R 3810 0 R 3811 0 R 3812 0 R 3813 0 R 3814 0 R 3815 0 R 3816 0 R 3817 0 R 3818 0 R 3819 0 R 3820 0 R 3821 0 R 3822 0 R 3823 0 R 3824 0 R 3825 0 R 3826 0 R 3827 0 R 3828 0 R 3829 0 R 3830 0 R 3831 0 R 3832 0 R 3833 0 R 3834 0 R 3835 0 R 3836 0 R] endobj 3839 0 obj << /F7 577 0 R /F4 527 0 R >> endobj 3745 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3839 0 R >> endobj 3842 0 obj [3840 0 R/XYZ 160.67 686.13] endobj 3843 0 obj << /Rect[177.96 657.16 194.9 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.129) >> >> endobj 3844 0 obj << /Rect[201.21 645.16 218.15 653.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.131) >> >> endobj 3845 0 obj << /Rect[185.99 633.15 202.93 641.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.131) >> >> endobj 3846 0 obj << /Rect[202.56 621.14 219.51 629.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.201) >> >> endobj 3847 0 obj << /Rect[179.32 609.13 196.26 617.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 3848 0 obj << /Rect[182.36 597.13 199.3 605.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.151) >> >> endobj 3849 0 obj << /Rect[187.34 585.12 204.29 593.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.152) >> >> endobj 3850 0 obj << /Rect[214.19 573.11 231.13 581.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 3851 0 obj << /Rect[247.46 561.11 264.41 569.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 3852 0 obj << /Rect[196.47 549.1 213.42 557.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 3853 0 obj << /Rect[229.75 537.09 246.7 545.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 3854 0 obj << /Rect[243.58 525.08 260.52 533.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.204) >> >> endobj 3855 0 obj << /Rect[266.27 513.08 283.21 521.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.204) >> >> endobj 3856 0 obj << /Rect[271.86 501.07 288.8 509.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.204) >> >> endobj 3857 0 obj << /Rect[258.52 489.06 275.46 497.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 3858 0 obj << /Rect[281.21 477.05 298.16 485.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 3859 0 obj << /Rect[286.8 465.05 303.75 473.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 3860 0 obj << /Rect[184.85 442.21 201.79 450.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.180) >> >> endobj 3861 0 obj << /Rect[181.31 430.2 198.25 438.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.106) >> >> endobj 3862 0 obj << /Rect[202.34 430.2 219.28 438.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.239) >> >> endobj 3863 0 obj << /Rect[187.12 418.19 204.06 426.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.106) >> >> endobj 3864 0 obj << /Rect[208.15 418.19 225.1 426.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.239) >> >> endobj 3865 0 obj << /Rect[203.12 406.18 220.06 414.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 3866 0 obj << /Rect[210.89 394.18 227.84 402.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.115) >> >> endobj 3867 0 obj << /Rect[191.52 382.17 208.46 390.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 3868 0 obj << /Rect[199.82 370.16 216.77 378.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 3869 0 obj << /Rect[196.78 358.15 213.72 366.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.158) >> >> endobj 3870 0 obj << /Rect[205.08 346.15 222.02 354.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.158) >> >> endobj 3871 0 obj << /Rect[175.44 334.14 192.39 342.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 3872 0 obj << /Rect[188.73 322.13 205.67 330.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.105) >> >> endobj 3873 0 obj << /Rect[209.34 310.13 226.29 318.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.190) >> >> endobj 3874 0 obj << /Rect[186.79 298.12 203.73 306.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.201) >> >> endobj 3875 0 obj << /Rect[224.81 286.11 241.76 294.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.133) >> >> endobj 3876 0 obj << /Rect[182.08 274.1 199.03 282.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.108) >> >> endobj 3877 0 obj << /Rect[194.01 262.1 205.97 270.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.72) >> >> endobj 3878 0 obj << /Rect[210.06 262.1 227.01 270.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.121) >> >> endobj 3879 0 obj << /Rect[231.09 262.1 248.04 270.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 3880 0 obj << /Rect[212.93 250.09 229.87 258.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.201) >> >> endobj 3881 0 obj << /Rect[210.85 238.08 227.8 246.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.201) >> >> endobj 3882 0 obj << /Rect[207.67 226.07 224.61 234.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.201) >> >> endobj 3883 0 obj << /Rect[210.72 214.07 227.66 222.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.201) >> >> endobj 3884 0 obj << /Rect[198.74 202.06 215.69 210.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 3885 0 obj << /Rect[173.78 179.22 190.73 187.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.181) >> >> endobj 3886 0 obj << /Rect[186.01 167.21 202.96 175.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 3887 0 obj << /Rect[182.22 155.2 199.17 163.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.189) >> >> endobj 3888 0 obj << /Rect[178.49 143.2 195.43 151.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.129) >> >> endobj 3889 0 obj << /Rect[225.34 131.19 242.28 139.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.137) >> >> endobj 3890 0 obj << /Rect[205.99 119.18 222.94 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.134) >> >> endobj 3891 0 obj << /Rect[387.78 657.16 404.73 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.136) >> >> endobj 3892 0 obj << /Rect[375.55 645.18 392.5 653.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.119) >> >> endobj 3893 0 obj << /Rect[403.06 633.19 420 641.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.134) >> >> endobj 3894 0 obj << /Rect[393.26 621.2 410.21 629.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.119) >> >> endobj 3895 0 obj << /Rect[440.72 609.21 457.67 617.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.134) >> >> endobj 3896 0 obj << /Rect[408.84 597.22 425.79 605.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.134) >> >> endobj 3897 0 obj << /Rect[371.65 585.23 388.59 593.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.147) >> >> endobj 3898 0 obj << /Rect[430.4 573.24 447.35 581.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.198) >> >> endobj 3899 0 obj << /Rect[406.52 561.26 423.46 569.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.133) >> >> endobj 3900 0 obj << /Rect[445.26 549.27 462.21 557.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.133) >> >> endobj 3901 0 obj << /Rect[388.81 525.32 405.75 533.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.136) >> >> endobj 3902 0 obj << /Rect[439.81 513.34 456.76 521.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.135) >> >> endobj 3903 0 obj << /Rect[478.56 501.35 495.5 509.77] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.135) >> >> endobj 3904 0 obj << /Rect[378.15 489.36 395.1 497.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.185) >> >> endobj 3905 0 obj << /Rect[374.42 477.37 391.36 485.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 3906 0 obj << /Rect[375.58 465.38 392.52 473.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.151) >> >> endobj 3907 0 obj << /Rect[378.85 453.39 395.79 461.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.149) >> >> endobj 3908 0 obj << /Rect[386.07 441.4 403.01 449.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.126) >> >> endobj 3909 0 obj << /Rect[379.43 429.42 396.37 437.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 3910 0 obj << /Rect[387.73 417.43 404.67 425.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 3911 0 obj << /Rect[384.68 405.44 401.63 413.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.158) >> >> endobj 3912 0 obj << /Rect[392.99 393.45 409.93 401.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.158) >> >> endobj 3913 0 obj << /Rect[380.89 381.46 397.84 389.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.165) >> >> endobj 3914 0 obj << /Rect[392.41 369.47 409.35 377.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.131) >> >> endobj 3915 0 obj << /Rect[371.79 357.48 388.73 365.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.187) >> >> endobj 3916 0 obj << /Rect[369.16 345.5 386.1 353.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 3917 0 obj << /Rect[394.68 333.51 406.64 341.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.49) >> >> endobj 3918 0 obj << /Rect[417.37 311 434.31 319.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.201) >> >> endobj 3919 0 obj << /Rect[364.46 299.01 381.4 307.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 3920 0 obj << /Rect[403.86 287.02 420.81 295.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.110) >> >> endobj 3921 0 obj << /Rect[386.9 275.03 403.84 283.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 3922 0 obj << /Rect[383.27 263.04 400.22 271.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.109) >> >> endobj 3923 0 obj << /Rect[390.5 251.06 407.44 259.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3924 0 obj << /Rect[396.03 239.07 412.98 247.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3925 0 obj << /Rect[420.41 227.08 437.36 235.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.154) >> >> endobj 3926 0 obj << /Rect[425.37 215.09 442.31 223.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.154) >> >> endobj 3927 0 obj << /Rect[398 203.1 414.94 211.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3928 0 obj << /Rect[399.6 191.11 416.55 199.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3929 0 obj << /Rect[394.62 179.12 411.56 187.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3930 0 obj << /Rect[372.26 167.14 389.2 175.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 3931 0 obj << /Rect[419.61 155.15 436.55 163.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.155) >> >> endobj 3932 0 obj << /Rect[410.39 143.16 427.34 151.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.175) >> >> endobj 3933 0 obj << /Rect[381.92 131.17 398.86 139.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.111) >> >> endobj 3934 0 obj << /Rect[373.31 119.18 390.25 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.139) >> >> endobj 3935 0 obj << /Filter[/FlateDecode] /Length 1839 >> stream xÚ…˜Ks7 Çïý{”g*†ïÇ1±¥Œ3Nâ©ÝŽ;m²½¶5•µ®Nòí .wW…uNN–þ’°âŒóê±jÿ|¬>\¿›ë*°`«ë‡Ê{fu5UŠyøÿÙ_iøÉ?ןÞÍÝ Q‚3WñvøüËÙì& iRL¥k?€ì~¹ù5ªªÙ5ü`%¸eAUS+˜—­@ÈwV8ÕÃüõâ¹F Å™p¹H(qÌð†yÕ3šDš“KHBpýðÙùoW³Ë¯&ØÁŒÊu’ÁÃÁ’W¼žÉ€B*‚ a»t"ì_ðJS )„¡lˆç:$FX¦’# „†Ý2i;N¤›üq~y6ÿŒHZ1aR j9ƤùÅûé'¯ÒY¦šB#m(‘˜# ÓXGs¼èýàІÏœ@h`êìxòòîôby»Yl~y““­7e3$×ÇDÉawE58Û\–Ë„çþö˜ÕgEX ôH"%1¤D‚2™)4*‘™»Sƒˇ2•ð€D… ð#\!¶Á1!Ð0m„ýøìóåõŸ˜!÷H®J0¤²¾kN`å“ûzºß,1­Í¹ZCД~ÐÒ^6Ëu<âN@œé€„ÓöÇ Õ£@”FYØES ^ˬè°òA‚ÔtL*¬Ršq¬¥Y^¬ÿðe¨ÛTŸ „$2Š °ƒ¶ì+쀎ـ4‚Ç¥áâíÆgßïê—ݲ)ãc0d2Òp¨.%¿ÙÍ bâÌ\AÖ¼µ¯¿/·»ít¹ž¾,vOø®QQ”‹á²&`Zg°]Y'pƒ$P|ç;ÄKͦpdÉ‚GJ'‹ø ˜T—hj—b±ÁŽÏWmr–š:ëûñÙÍu?1X}kS¥õIc|õܦ_놫êªOÊý×õþª(xà2 HAŸ²ç1bß64&䯤¥1ÔÙÅÅQªHAäÏ 6&}(9 .Î?`c,³ )Hc ýÏŒ‰dL÷¡0&C}ýð©Ü™ô¦1p}õ¾¿«×÷[ì÷®-ø"ÒïLü­tQ<<âôÖæÅ\µ#0"þM€z·=ê[<Ò™ßXÕÏ—«ºL" ‰ðÄkœéÇÿ–Æ…šE"²3PÐY“A¦©ö‰%Ÿü;Ý–¹Åè˜v³iPØ lÊåuÓH¦…Oyåæ\¬Ø²N´c•F)8p‡:Ve NìF˜]Ú^ï6—‰„úÑÎ?{±25Tp¹˜^t¥]¦`ͯ Ryl¤Jڬ؞v×à€zÙ4ñzpø÷n±)=UAŸe%šJ[W§1›âAe£'“ð ‹í µÈ[ßãc€”êHhGQ ƒu2£Lo÷ËÕ=i™ Ñg³"x ¬Ë‰ÄE¯t©*×â{~`ÅÝ lÚ´¥ .Š”ÓLX4k ½¬E66íß-žWýÒßþ%(¿œL-¬}+Xb'jEþKûRjµ³IBŠ ?oÂTÒh“™F³GðЖš¾óU³À¡îFx%ƒécÉò#ŒjŸs2~0P%3`öÛ§2Ý$ÂBÅšøäÐÞ5}8¯ËeÅ26 M¥ˆø×ÈŽ´©)ÏcßHwW¦’ô [˜Hd'¥ (W:×á;°ç(.bÇ…A¸g‰©=5µƒt„5†öë£Àå‘w?)>DÙ’T˜I. é ’¢î¶j»¿ÝÛ”ÊÁL$,å‘J‡˜tZÊ~µ*_[£1J"~,8pCêt°óøú²_—©7q¦žÜj¸#»òd𩱸=p1ªÐîbÀã„-UŒó\GºtÌ ><=Å¥i\í46–¦1pÛŠ8}èJÓük‡šÇÿúû—3d’¶Lb.P›Dè_Ûk¼98л£Õð^ ™qº©¡¾8~ŠS©ÕÌåPŽS<=¼/…ý×>Ð ·}‰ÎÞ—©“×fxŽT݆Fc²­]3!Ôɺø“éqó¸ÄelR|iÈdÂQYV»ÐÕk-B;’Nî ¡Ñw‡€yj¶»Ûö‰ò(Ò Âb¤ez(ˆ  áª/ؕخ!B=-š0BLÏ=1¾Å=‚Ÿ´,4‡^·‰“ÆÐ£-„†[ é º&§0k_œjŒk…¤#,èžÜàxmp,¡}5¶Oà lëÍëØ‘vëäÂP9¸m¤Ù-Ÿëæá~Ñ=dë"2Ûz3›!‰ŒMÔ`âë‰1“2.yŒ¢\Í!E:´P«æï—dR]V‘¿ü]ξ, endstream endobj 3936 0 obj [3843 0 R 3844 0 R 3845 0 R 3846 0 R 3847 0 R 3848 0 R 3849 0 R 3850 0 R 3851 0 R 3852 0 R 3853 0 R 3854 0 R 3855 0 R 3856 0 R 3857 0 R 3858 0 R 3859 0 R 3860 0 R 3861 0 R 3862 0 R 3863 0 R 3864 0 R 3865 0 R 3866 0 R 3867 0 R 3868 0 R 3869 0 R 3870 0 R 3871 0 R 3872 0 R 3873 0 R 3874 0 R 3875 0 R 3876 0 R 3877 0 R 3878 0 R 3879 0 R 3880 0 R 3881 0 R 3882 0 R 3883 0 R 3884 0 R 3885 0 R 3886 0 R 3887 0 R 3888 0 R 3889 0 R 3890 0 R 3891 0 R 3892 0 R 3893 0 R 3894 0 R 3895 0 R 3896 0 R 3897 0 R 3898 0 R 3899 0 R 3900 0 R 3901 0 R 3902 0 R 3903 0 R 3904 0 R 3905 0 R 3906 0 R 3907 0 R 3908 0 R 3909 0 R 3910 0 R 3911 0 R 3912 0 R 3913 0 R 3914 0 R 3915 0 R 3916 0 R 3917 0 R 3918 0 R 3919 0 R 3920 0 R 3921 0 R 3922 0 R 3923 0 R 3924 0 R 3925 0 R 3926 0 R 3927 0 R 3928 0 R 3929 0 R 3930 0 R 3931 0 R 3932 0 R 3933 0 R 3934 0 R] endobj 3937 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 3841 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 3937 0 R >> endobj 3940 0 obj [3938 0 R/XYZ 106.87 686.13] endobj 3941 0 obj << /Rect[140.74 657.16 152.7 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.65) >> >> endobj 3942 0 obj << /Rect[137.71 645.21 154.66 653.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3943 0 obj << /Rect[149.36 633.25 166.31 641.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3944 0 obj << /Rect[145.46 621.3 162.4 629.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3945 0 obj << /Rect[147.67 609.34 164.62 617.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3946 0 obj << /Rect[130.8 597.39 147.75 605.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.161) >> >> endobj 3947 0 obj << /Rect[139.73 585.43 156.67 593.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.173) >> >> endobj 3948 0 obj << /Rect[120.81 573.48 137.76 581.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 3949 0 obj << /Rect[174.84 561.52 191.78 569.94] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3950 0 obj << /Rect[141.38 540 158.32 548.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.181) >> >> endobj 3951 0 obj << /Rect[143.09 528.05 160.03 536.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 3952 0 obj << /Rect[158.45 516.09 175.39 524.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.132) >> >> endobj 3953 0 obj << /Rect[139.91 504.14 156.85 512.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 3954 0 obj << /Rect[132.21 492.18 149.16 500.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.154) >> >> endobj 3955 0 obj << /Rect[169.02 480.23 185.97 488.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 3956 0 obj << /Rect[186.21 468.27 203.15 476.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 3957 0 obj << /Rect[160.47 456.32 177.41 464.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.116) >> >> endobj 3958 0 obj << /Rect[157.12 434.8 174.07 443.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 3959 0 obj << /Rect[117.77 422.84 129.73 431.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.52) >> >> endobj 3960 0 obj << /Rect[133.82 422.84 150.76 431.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.106) >> >> endobj 3961 0 obj << /Rect[154.85 422.84 171.8 431.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.239) >> >> endobj 3962 0 obj << /Rect[151.01 410.89 167.95 419.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.222) >> >> endobj 3963 0 obj << /Rect[120.26 398.93 137.2 407.35] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.130) >> >> endobj 3964 0 obj << /Rect[157.07 386.98 174.01 395.4] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.189) >> >> endobj 3965 0 obj << /Rect[142.95 375.02 154.92 383.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.50) >> >> endobj 3966 0 obj << /Rect[159 375.02 175.95 383.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 3967 0 obj << /Rect[163.85 363.07 180.79 371.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3968 0 obj << /Rect[151.84 351.11 168.78 359.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.154) >> >> endobj 3969 0 obj << /Rect[160.14 339.16 172.1 347.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.55) >> >> endobj 3970 0 obj << /Rect[154.02 327.2 170.97 335.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.150) >> >> endobj 3971 0 obj << /Rect[154.85 315.25 171.8 323.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 3972 0 obj << /Rect[124.69 303.29 141.63 311.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.185) >> >> endobj 3973 0 obj << /Rect[123.86 291.34 140.8 299.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 3974 0 obj << /Rect[162.13 279.38 179.07 287.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.118) >> >> endobj 3975 0 obj << /Rect[152.78 267.43 169.72 275.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.119) >> >> endobj 3976 0 obj << /Rect[129.45 245.91 146.39 254.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.181) >> >> endobj 3977 0 obj << /Rect[128.29 233.95 145.23 242.37] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 3978 0 obj << /Rect[125.52 212.43 142.46 220.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.181) >> >> endobj 3979 0 obj << /Rect[130.78 190.91 147.72 199.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 3980 0 obj << /Rect[146.27 178.96 163.22 187.38] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 3981 0 obj << /Rect[186.12 167 203.07 175.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.214) >> >> endobj 3982 0 obj << /Rect[207.99 155.05 224.93 163.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.214) >> >> endobj 3983 0 obj << /Rect[213.58 143.09 230.52 151.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.214) >> >> endobj 3984 0 obj << /Rect[179.55 131.14 196.5 139.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 3985 0 obj << /Rect[125.79 119.18 142.74 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 3986 0 obj << /Rect[348.36 657.16 365.31 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 3987 0 obj << /Rect[372.01 645.18 388.96 653.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 3988 0 obj << /Rect[337.5 633.19 354.44 641.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 3989 0 obj << /Rect[308.44 621.2 325.39 629.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 3990 0 obj << /Rect[328.37 609.21 345.31 617.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.112) >> >> endobj 3991 0 obj << /Rect[321.73 597.22 338.67 605.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 3992 0 obj << /Rect[313.7 585.24 330.65 593.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.165) >> >> endobj 3993 0 obj << /Rect[343.95 573.25 360.89 581.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.166) >> >> endobj 3994 0 obj << /Rect[325.49 561.26 342.43 569.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.167) >> >> endobj 3995 0 obj << /Rect[358.25 549.27 375.19 557.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3996 0 obj << /Rect[323.66 537.28 340.61 545.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.202) >> >> endobj 3997 0 obj << /Rect[317.58 525.3 334.52 533.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.143) >> >> endobj 3998 0 obj << /Rect[376.94 513.31 393.88 521.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.136) >> >> endobj 3999 0 obj << /Rect[324.55 501.32 341.49 509.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.156) >> >> endobj 4000 0 obj << /Rect[318.41 489.33 335.35 497.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4001 0 obj << /Rect[397.43 477.34 414.37 485.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 4002 0 obj << /Rect[421.23 465.36 438.17 473.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.209) >> >> endobj 4003 0 obj << /Rect[408.22 453.37 425.17 461.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.214) >> >> endobj 4004 0 obj << /Rect[339.3 441.38 356.24 449.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.190) >> >> endobj 4005 0 obj << /Rect[321.73 429.39 338.67 437.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.153) >> >> endobj 4006 0 obj << /Rect[312.9 417.4 329.84 425.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4007 0 obj << /Rect[341.73 405.42 358.68 413.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.120) >> >> endobj 4008 0 obj << /Rect[307.94 393.43 324.89 401.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.140) >> >> endobj 4009 0 obj << /Rect[322.06 381.44 339 389.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.150) >> >> endobj 4010 0 obj << /Rect[310.71 369.45 327.66 377.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4011 0 obj << /Rect[311.85 357.46 328.79 365.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4012 0 obj << /Rect[320.67 345.48 337.62 353.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.141) >> >> endobj 4013 0 obj << /Rect[307.89 333.49 324.83 341.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 4014 0 obj << /Rect[318.16 321.5 335.1 329.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4015 0 obj << /Rect[350.09 299 367.04 307.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 4016 0 obj << /Rect[365.31 287.01 382.26 295.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 4017 0 obj << /Rect[320.9 275.03 337.84 283.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.184) >> >> endobj 4018 0 obj << /Rect[344.72 263.04 361.67 271.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.117) >> >> endobj 4019 0 obj << /Rect[343.09 251.05 360.03 259.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.116) >> >> endobj 4020 0 obj << /Rect[328.09 239.06 340.05 247.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.52) >> >> endobj 4021 0 obj << /Rect[344.14 239.06 361.09 247.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.106) >> >> endobj 4022 0 obj << /Rect[365.17 239.06 382.12 247.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.239) >> >> endobj 4023 0 obj << /Rect[319.79 227.07 336.73 235.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4024 0 obj << /Rect[322.28 215.09 339.22 223.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.118) >> >> endobj 4025 0 obj << /Rect[404.18 203.1 421.13 211.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 4026 0 obj << /Rect[396.02 191.11 412.96 199.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4027 0 obj << /Rect[379.9 179.12 396.84 187.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4028 0 obj << /Rect[317.85 167.13 334.8 175.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4029 0 obj << /Rect[327.01 155.15 343.96 163.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.140) >> >> endobj 4030 0 obj << /Rect[328.37 143.16 345.31 151.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.152) >> >> endobj 4031 0 obj << /Rect[320.34 131.17 337.29 139.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4032 0 obj << /Rect[317.58 119.18 334.52 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4033 0 obj << /Filter[/FlateDecode] /Length 2019 >> stream xÚ}YÛR#7}ÏWøª­Z÷yd±¹$ª›¢*›/ÀalS¶©%Ÿ–FãQ /!iµúrzv$…”£ÇQús6úvûõÔ*Q¹ÑíÃHÜèHëøçvü÷ÁÅÕxrwøÏíï_OMRA¸0’ ¡,ÄuÜÔ>=R>Ápé±Yÿœ5âKZŸÜâ»F®^Žˆ ÆÙb5¿Þká}˰éV¥0£_#c„6 `ýh92^hÝýlF7‘£Öq,æÄ'\U®ƒ×ïM6Úù‰ °ª7¡ýIM(9Ö¯/¥>t$ÁQyá>õLá‡ö'5¢çXÖKb‚Æ”ë¬ +áôg6D„ѽù7µ¢ YÍ–5±ïÃoˆaC6¤&δSA€†£Ú¶o8Þ‡ ÂðF+L6bWî7•d”a¶[]“,¸»£Þ´A(h!*z3DífgöÏ2Ëé¡ò×߯ƥ- 1{à”TŒ5„•MëO‹ín½ùï0èr5Rh „À9¶’¢JËç×—B „ô%$ã´N„lÈzY$¤c”(ÐÌqàßlÅÍíàrCUx+”¾å?_oÉí¶~/`9‚(#ÞËnÙÕÛûÙËá‘r5)B˜uUE¶p”V ç(å˦þÀ dÏë”pS·»ÍbõH‰l À1dÁh«Øb¾7ÍL NÁò†U.FLâz †¾§ë¶ŒëR[)–Éý©˜Å"ÈòÞ o>Ü0›4YUºzo¹–AÈ6Û«õ¦®×ä›g 0¥˜(Öp‰f5¨0Ê’uÐ’Ù¯AT-ÿÅêäi¶ZÕÍà¤!0Üi žº3ã¾yÓ’6— [š å[±U%œg\?:$Š‹oƒØ2¿ $ Že^8²Z·ÐXñ4S±s•œOpTst&awÉ#5šDÓ¢­„§¨t—Ÿ(žé=9a) sÓJÚnžŽGëͼÞ¢ðÓÛõf7úÑÁ’]XVð©̺ÝÕ+z:ÝZ‚Àr$ Ør¬Ö;z8Ÿ¾)ôÚ:‚x±9›sž5'gõªÞÌvõütÑÔ¤YkœÜm¿ÍŽxë¼×'³eó 7fh²WÉŠáv6FåÆN¢°“¤Âøñ°À¤7ô ´‡toÀšl }ÃPC)œ…•&XÎ.´ùCH“¹bJ ÀžÃàPœgÉˤ2NÎ/®&42*!AÒ@ÎÅÁg¦?&éë7á©LÊŸGXǧÛöî.g/C¿¦é¬G@à,‰“m{wËÙË˦þ"vlŸ:@‰`Z¤Áé6‹4dÚ¾þPÞ†Ý:9§Ò=:1@&Ú1][uâéqä#MZqô/Ö‡ç‰_ ‹eúF… $|¼ï&FK±L¿ÔtÇÀA2 ½ål BúŒT Øx³rÿƒê GEtJíp´ÉJïrru~ñç@¹DIê[˜MÂ8*·Ð)—âif;>€ƒ¿Ò/¦ÇߦÚKt;Rõ;”d®:Ž„YG~jŸJm¤°¯}0´¯g›\E“Æ´;›$à ”’œÏ°.feú©M:u£Â¦öÁЦž-&~0áÄu¾•· o> endobj 3939 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 4035 0 R >> endobj 4038 0 obj [4036 0 R/XYZ 160.67 686.13] endobj 4039 0 obj << /Rect[257.9 657.16 274.84 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4040 0 obj << /Rect[274.23 645.17 291.17 653.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 4041 0 obj << /Rect[257.14 633.18 274.08 641.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 4042 0 obj << /Rect[246.28 621.2 263.22 629.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 4043 0 obj << /Rect[199.52 597.25 216.46 605.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 4044 0 obj << /Rect[180.7 585.26 197.64 593.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4045 0 obj << /Rect[188.45 573.27 205.39 581.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.188) >> >> endobj 4046 0 obj << /Rect[226.22 561.28 243.17 569.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.103) >> >> endobj 4047 0 obj << /Rect[180.15 549.29 197.09 557.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.105) >> >> endobj 4048 0 obj << /Rect[180.42 537.3 197.37 545.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.112) >> >> endobj 4049 0 obj << /Rect[194.81 525.31 211.76 533.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.113) >> >> endobj 4050 0 obj << /Rect[190.39 513.32 207.33 521.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.113) >> >> endobj 4051 0 obj << /Rect[200.93 501.33 217.87 509.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.185) >> >> endobj 4052 0 obj << /Rect[195.37 478.8 212.31 487.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.183) >> >> endobj 4053 0 obj << /Rect[196.53 466.81 208.49 475.23] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.54) >> >> endobj 4054 0 obj << /Rect[228.35 454.82 245.3 463.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 4055 0 obj << /Rect[300.01 442.84 316.96 451.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4056 0 obj << /Rect[236.73 430.85 253.67 439.27] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.209) >> >> endobj 4057 0 obj << /Rect[260.86 418.86 277.81 427.28] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.209) >> >> endobj 4058 0 obj << /Rect[229.53 406.87 246.48 415.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.209) >> >> endobj 4059 0 obj << /Rect[269.03 394.88 285.97 403.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4060 0 obj << /Rect[310.67 382.89 327.61 391.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4061 0 obj << /Rect[269.65 370.9 286.59 379.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.209) >> >> endobj 4062 0 obj << /Rect[210.73 358.91 227.67 367.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4063 0 obj << /Rect[244 346.92 260.95 355.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4064 0 obj << /Rect[223.87 334.93 240.82 343.35] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4065 0 obj << /Rect[237.99 322.94 254.93 331.36] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.210) >> >> endobj 4066 0 obj << /Rect[278.79 310.95 295.74 319.37] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4067 0 obj << /Rect[199.52 287 216.46 295.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 4068 0 obj << /Rect[199.52 263.06 216.46 271.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4069 0 obj << /Rect[257.98 251.07 274.92 259.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4070 0 obj << /Rect[228.71 239.08 245.66 247.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4071 0 obj << /Rect[268.42 227.09 285.36 235.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 4072 0 obj << /Rect[261.99 215.1 278.94 223.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4073 0 obj << /Rect[236.81 203.11 253.75 211.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4074 0 obj << /Rect[262.08 191.12 279.02 199.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.209) >> >> endobj 4075 0 obj << /Rect[255.42 179.13 272.36 187.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4076 0 obj << /Rect[224.01 167.14 240.95 175.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4077 0 obj << /Rect[257.29 155.15 274.23 163.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4078 0 obj << /Rect[228.49 143.16 245.44 151.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.211) >> >> endobj 4079 0 obj << /Rect[251.19 131.17 268.13 139.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.212) >> >> endobj 4080 0 obj << /Rect[256.78 119.18 273.72 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.212) >> >> endobj 4081 0 obj << /Rect[417.87 657.16 434.81 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4082 0 obj << /Rect[430.6 645.18 447.54 653.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4083 0 obj << /Rect[414.55 633.19 431.49 641.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4084 0 obj << /Rect[454.25 621.2 471.19 629.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 4085 0 obj << /Rect[447.82 609.21 464.77 617.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4086 0 obj << /Rect[439.59 597.22 456.53 605.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4087 0 obj << /Rect[420.77 585.24 437.72 593.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.211) >> >> endobj 4088 0 obj << /Rect[426.45 573.25 443.39 581.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4089 0 obj << /Rect[439.66 561.26 456.6 569.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.208) >> >> endobj 4090 0 obj << /Rect[423.87 549.27 440.82 557.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.212) >> >> endobj 4091 0 obj << /Rect[445.73 537.28 462.68 545.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.212) >> >> endobj 4092 0 obj << /Rect[451.32 525.3 468.27 533.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.212) >> >> endobj 4093 0 obj << /Rect[420.22 513.31 437.16 521.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4094 0 obj << /Rect[453.5 501.32 470.44 509.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4095 0 obj << /Rect[443.45 489.33 460.4 497.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.103) >> >> endobj 4096 0 obj << /Rect[399.05 477.34 411.01 485.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.26) >> >> endobj 4097 0 obj << /Rect[415.1 477.34 427.06 485.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.30) >> >> endobj 4098 0 obj << /Rect[427.21 465.36 444.15 473.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.229) >> >> endobj 4099 0 obj << /Rect[409.48 453.37 426.42 461.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.196) >> >> endobj 4100 0 obj << /Rect[410.81 441.38 427.75 449.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.230) >> >> endobj 4101 0 obj << /Rect[421.19 429.39 438.13 437.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.103) >> >> endobj 4102 0 obj << /Rect[404.33 417.4 416.3 425.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.26) >> >> endobj 4103 0 obj << /Rect[420.38 417.4 432.35 425.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.30) >> >> endobj 4104 0 obj << /Rect[436.44 417.4 453.38 425.82] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 4105 0 obj << /Rect[418.5 405.42 435.45 413.84] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.196) >> >> endobj 4106 0 obj << /Rect[375.8 393.43 387.76 401.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.50) >> >> endobj 4107 0 obj << /Rect[391.85 393.43 408.8 401.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 4108 0 obj << /Rect[415.74 381.44 432.68 389.86] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.149) >> >> endobj 4109 0 obj << /Rect[421.82 369.45 438.77 377.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.149) >> >> endobj 4110 0 obj << /Rect[363.93 357.46 380.87 365.88] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.105) >> >> endobj 4111 0 obj << /Rect[417.86 345.48 434.8 353.9] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 4112 0 obj << /Rect[396.56 333.49 413.5 341.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.103) >> >> endobj 4113 0 obj << /Rect[408.79 321.5 425.73 329.92] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.149) >> >> endobj 4114 0 obj << /Rect[408.18 309.51 425.12 317.93] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.189) >> >> endobj 4115 0 obj << /Rect[382.69 287.01 399.64 295.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.169) >> >> endobj 4116 0 obj << /Rect[387.12 275.03 404.06 283.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.172) >> >> endobj 4117 0 obj << /Rect[400.57 263.04 417.51 271.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.201) >> >> endobj 4118 0 obj << /Rect[410.26 251.05 427.2 259.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 4119 0 obj << /Rect[443.53 239.06 460.48 247.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 4120 0 obj << /Rect[373.03 227.07 389.98 235.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 4121 0 obj << /Rect[373.59 215.09 390.53 223.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.152) >> >> endobj 4122 0 obj << /Rect[376.38 203.1 393.33 211.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 4123 0 obj << /Rect[384.68 191.11 401.63 199.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.157) >> >> endobj 4124 0 obj << /Rect[381.64 179.12 398.58 187.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.158) >> >> endobj 4125 0 obj << /Rect[389.94 167.13 406.89 175.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.158) >> >> endobj 4126 0 obj << /Rect[388.01 155.15 399.97 163.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.63) >> >> endobj 4127 0 obj << /Rect[434.06 143.16 451 151.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.199) >> >> endobj 4128 0 obj << /Rect[387.18 131.17 404.12 139.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.221) >> >> endobj 4129 0 obj << /Rect[425.97 119.18 442.92 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.174) >> >> endobj 4130 0 obj << /Filter[/FlateDecode] /Length 2347 >> stream xÚYKSI¾ï¯Ð"V=]ïª#akÍ+Œì°cw2h1;€=±ÿ~3«ú‘Yæ‚¢«¿úÈ̪|ö¬mÚvv7Ë?ïgïV¿ÚYj’Ÿ­þ3‹±ñv67¦‰ð|òÏíôá¿Wÿøí4 £Ú&ÌÚüzyq²øZ#ɼ æ:ä€]Fs°Z~Y v¶XÁ·³?fJÇÆ¤ÙÜ«ÆëÙãLÕ˜Ø??Ì®A<ºu¦[\½;[œü½'CPôMt¤ÛHÞwŠP¬HtüùÓõâºÇøÆ¹Œò*‹“gûçAœa±P*¥¾ä¿GË3J¦[Ó¨@ðZ ‚Eׄô¶ds‰HVž+ÉF®ãÓ³£CÞ_×¶jʼn"¥Ð„¿`,€¹HD*Ï•H#×ñÙò—&¸F ¥Qmj‚[Ä9Oäé*ÝjñéüCEbÓZJUÓš YíÈ–SÒO”)¹ÆÇ YåZ2S»XDiÕý'¶ÿ ùõӿ޽ ´ö[‡Bg)¶‡sn7ŒF…Æj†SQ’ÃÔ*ó\ž€×ž3ÏPÎ5*2˜j%qï0*%(¤[‡ñ½>pƒDŽe"8ˆLÙÀ?‘ê;W8Øì¸X©‰‰¡U¬¤mÛ¨"ö%ð8wðßÍ ··¶1 ©¢$—Óx.ø~;2½p*×ØÄ Î LÞ6EäroÖóÍËÍú¹(ÊíÉ(ºI)‰3äø—õ<>:?«sRhZ$¸s¬ó¥4,ô;¬dï¾­êüæRŽ´#—×M'\ÃêÀu¶¼øXqEL®ÔeYFÕ/Lb ÐI’c81_jømÛ¦Ñb¤¦* µ©F²ið%ŒnÓT ÓBÝâß(%,`ˆ@e¡ˆ<•…(•ƒ~BÕ­ªlð8ɹ°K1œ¬Ÿ‚«àÞÒÏ(…ÕΨ_·Pë7’Mìíbv?‘åoÍ›ò@à‹†ÊSjyF2á~C6€ I¸@D~5×°:pɇz"†o¸º¡Õo*hÖ•DÁ²P+8’í-y!UKƒn‚™0«£`²å³'\ºU9op®quà’ƒÔFžÁd‹Ùˆ6yËbà?QQ‹•…Úb„lõañ©6Vh# x&\ýâ@5¹í`(Çÿ›|Û]–jP협 yé6$A5)¹‡Nž¡ekGƒ÷x`;Y\áÅ⾬ÑA(T ŠÌäªdz»yžo׿£„¼Èó¾I|—Ví”Õ¶qLÀ*’ÆÜ!n>:¶j”ÇW;¾óË“Ïg¼ÖeE‰ºZ¨ ’ù+R0*UY¨¥ù:©8nu£¡ÃÒ ÛNGW;:lÛýíc_ó[è‚cO¼ °zö7 ÷Tá²P+<òý¹Â=Ý ££«Ô½÷J:7¶ïÒ©B<ˆLǽ n2.º– ©o€3Ýéòâ¤.'±["8™'A;8OÛtîtYšel}°0Ø~\í_—׫IbàO@â…p­é[ÉA*ÙZP2&¾ATÓ)×RšÈdPÇ Ëd&BÞož6»õëæöôþaÃÐÒÝ!Æná9D¾¼8>û|R5Ðú—À°â=sस³Å×:àbmA`27}ÜÓ콯šãe¾àúF9íìþûn½ûß4@éê\+%ÐÅ|¿kºãí3Š8¥fù6-µÉ dï&´Ë§—×õosq¥ÙΨCî#ÈT¯Ø*!Êc¬GW`ÿ Ð #¸Ìrþqu9É¥˜ÜÖ‰Dãä,3]^­¸8&ÛŸÌ×DœxÆÂ£†1y€š'j‚†®;¹þ¹‹dqoÈÀÂ@YŠá£ˆLŸz‰Äûj kÄs#xîä!ª,#œœ/ÊÖÊ3+1®P®õ Vþ¿:°¾ÛðC £.#8ÁÀkóõ|%rCqü‘k ÑËh²aÖàä\¯ä$…Š;OÑ{Øp¶Eœþj·½Û­¹d:ß•ý(O¸Â„kôxË!ØÜ’‘m{xqàå&¼‚Ë"Z³2e}ÑÆNåÛx4ÇõYãì‘ïPž€éý¤b'i¢ÎãA²y»Æþ)“Ÿ}¬ú>»óH@XÝ6ÆöϽ3“ÅÂôeñézyyÁOEL^˜šâX…MO‘§+ðÿ¥]xà~R¾ÒP´¦±!!ÍÞsÓ[öδ’$Î`Ä,#ûƒó¹×#`ÐPbƒÃy®×éÃúŽU Æ”/K¬’óð×ÙQ6h9O®(LË:FHfäéÂÎ>p5Û2ñòñèÚâjî¶yêɇà"œ¶l?AHGš½®}G'öšé‡ ëü}ÛÁ¾8¦ÿ¼•ìc+׿ Æ›Íîå~ûÄ%‚òEÑòÉœ —h·í¦Áœ§µùèÎ1Í”Í#Gòž;F›+YòZ[Q3“'…LŽùýÓüåuwÿtW9K7sv(+]q<ë*ÊíÏW‰îS[öpBudË Þ²Ï:éü锸G”ª"ÛEϺÄfĈΓ¨d±þïún¬vLR€ÃrÎ3”j­$TX¶s‘ëÕ·«??—¸´ÇѰ¡*Ñ M|³-ßd6O˜ ^«¨‚¹šîmmñ‹Rð~¾ÿX?=mj"Œ¨¢È„m”‚g÷Â?îàä×+„2@bÂܦ——?n9“Ï_3 P)5ç.ÝvLc”»žN¦ &7¾C·R–;õrÔW¹KEFÞta$΃‰ª•tžØ®G5á’s;äRkØž=¤xÁË‘_-Ox˜Q¹'ù¶æþºœÐó}çÕœHcëA`ÊIæÏ­uIiÏ òeå<’ JL‰G‡¾âxx…ìp“I}=0ýâDmþ8O€ÊIÅ.é¨G¦Z¨˜ÃîáòýGn úuèÜÁúuÓÔ7k›饳'}ô3fàîsæüö~?ÛÝ=X¯ó… ÛT’<’4ÒÀûøü:ñÆÄ»m-¹iž ˼Øí×ýËý÷ªÖs¶Þ¢BUÿöÖ=U endstream endobj 4131 0 obj [4039 0 R 4040 0 R 4041 0 R 4042 0 R 4043 0 R 4044 0 R 4045 0 R 4046 0 R 4047 0 R 4048 0 R 4049 0 R 4050 0 R 4051 0 R 4052 0 R 4053 0 R 4054 0 R 4055 0 R 4056 0 R 4057 0 R 4058 0 R 4059 0 R 4060 0 R 4061 0 R 4062 0 R 4063 0 R 4064 0 R 4065 0 R 4066 0 R 4067 0 R 4068 0 R 4069 0 R 4070 0 R 4071 0 R 4072 0 R 4073 0 R 4074 0 R 4075 0 R 4076 0 R 4077 0 R 4078 0 R 4079 0 R 4080 0 R 4081 0 R 4082 0 R 4083 0 R 4084 0 R 4085 0 R 4086 0 R 4087 0 R 4088 0 R 4089 0 R 4090 0 R 4091 0 R 4092 0 R 4093 0 R 4094 0 R 4095 0 R 4096 0 R 4097 0 R 4098 0 R 4099 0 R 4100 0 R 4101 0 R 4102 0 R 4103 0 R 4104 0 R 4105 0 R 4106 0 R 4107 0 R 4108 0 R 4109 0 R 4110 0 R 4111 0 R 4112 0 R 4113 0 R 4114 0 R 4115 0 R 4116 0 R 4117 0 R 4118 0 R 4119 0 R 4120 0 R 4121 0 R 4122 0 R 4123 0 R 4124 0 R 4125 0 R 4126 0 R 4127 0 R 4128 0 R 4129 0 R] endobj 4132 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 4037 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 4132 0 R >> endobj 4135 0 obj [4133 0 R/XYZ 106.87 686.13] endobj 4136 0 obj << /Rect[209.73 657.16 226.67 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.174) >> >> endobj 4137 0 obj << /Rect[201.7 645.16 218.65 653.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.174) >> >> endobj 4138 0 obj << /Rect[155.71 633.15 167.67 641.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.66) >> >> endobj 4139 0 obj << /Rect[148.93 621.14 165.87 629.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.154) >> >> endobj 4140 0 obj << /Rect[141.29 609.13 153.25 617.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.66) >> >> endobj 4141 0 obj << /Rect[140.2 597.13 157.15 605.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.172) >> >> endobj 4142 0 obj << /Rect[150.75 585.12 167.69 593.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.172) >> >> endobj 4143 0 obj << /Rect[141.28 573.11 158.22 581.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.172) >> >> endobj 4144 0 obj << /Rect[151.24 561.11 168.19 569.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.172) >> >> endobj 4145 0 obj << /Rect[159.1 549.1 176.05 557.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.172) >> >> endobj 4146 0 obj << /Rect[147.42 537.09 164.37 545.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.172) >> >> endobj 4147 0 obj << /Rect[141.83 525.08 158.78 533.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.172) >> >> endobj 4148 0 obj << /Rect[157.68 502.24 169.64 510.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.48) >> >> endobj 4149 0 obj << /Rect[136.03 490.24 152.98 498.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.115) >> >> endobj 4150 0 obj << /Rect[158.48 478.23 175.42 486.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.115) >> >> endobj 4151 0 obj << /Rect[173.81 466.22 185.77 474.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.80) >> >> endobj 4152 0 obj << /Rect[131.97 443.38 148.91 451.8] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.108) >> >> endobj 4153 0 obj << /Rect[145.19 431.37 162.14 439.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4154 0 obj << /Rect[163.46 419.37 180.4 427.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4155 0 obj << /Rect[130.8 407.36 147.75 415.78] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.150) >> >> endobj 4156 0 obj << /Rect[226.38 395.35 243.32 403.77] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.218) >> >> endobj 4157 0 obj << /Rect[209.29 383.34 226.23 391.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.219) >> >> endobj 4158 0 obj << /Rect[198.43 371.34 215.37 379.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.219) >> >> endobj 4159 0 obj << /Rect[191.58 359.33 208.52 367.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.219) >> >> endobj 4160 0 obj << /Rect[147.13 347.32 164.08 355.74] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.143) >> >> endobj 4161 0 obj << /Rect[194.4 335.31 211.34 343.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.158) >> >> endobj 4162 0 obj << /Rect[140.27 323.31 157.21 331.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.132) >> >> endobj 4163 0 obj << /Rect[225.03 311.3 241.98 319.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.145) >> >> endobj 4164 0 obj << /Rect[167.36 299.29 184.31 307.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.117) >> >> endobj 4165 0 obj << /Rect[165.73 287.29 182.67 295.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.117) >> >> endobj 4166 0 obj << /Rect[143.53 275.28 160.48 283.7] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.142) >> >> endobj 4167 0 obj << /Rect[160.41 263.27 177.36 271.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.113) >> >> endobj 4168 0 obj << /Rect[173.81 251.26 190.75 259.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.117) >> >> endobj 4169 0 obj << /Rect[139.13 239.26 151.1 247.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.49) >> >> endobj 4170 0 obj << /Rect[155.18 239.26 172.13 247.68] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 4171 0 obj << /Rect[125.55 227.25 142.49 235.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 4172 0 obj << /Rect[141.32 215.24 158.26 223.66] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.151) >> >> endobj 4173 0 obj << /Rect[141.71 203.23 158.65 211.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 4174 0 obj << /Rect[153.22 191.23 170.16 199.65] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.131) >> >> endobj 4175 0 obj << /Rect[132.02 179.22 148.97 187.64] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.187) >> >> endobj 4176 0 obj << /Rect[128.59 167.21 145.53 175.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.199) >> >> endobj 4177 0 obj << /Rect[166.28 155.2 178.24 163.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.91) >> >> endobj 4178 0 obj << /Rect[166.84 143.2 178.8 151.62] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.97) >> >> endobj 4179 0 obj << /Rect[212.5 131.19 224.46 139.61] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.90) >> >> endobj 4180 0 obj << /Rect[171.82 119.18 183.78 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.90) >> >> endobj 4181 0 obj << /Rect[347.49 657.16 364.44 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.216) >> >> endobj 4182 0 obj << /Rect[382.33 645.18 399.28 653.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.190) >> >> endobj 4183 0 obj << /Rect[320.12 622.68 337.07 631.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.161) >> >> endobj 4184 0 obj << /Rect[385.37 610.69 402.31 619.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 4185 0 obj << /Rect[331.19 598.7 343.15 607.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.50) >> >> endobj 4186 0 obj << /Rect[347.24 598.7 359.2 607.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.91) >> >> endobj 4187 0 obj << /Rect[363.29 598.7 380.24 607.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 4188 0 obj << /Rect[351.14 586.71 363.11 595.13] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.91) >> >> endobj 4189 0 obj << /Rect[325.1 574.73 342.05 583.15] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.153) >> >> endobj 4190 0 obj << /Rect[340.82 562.74 357.77 571.16] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.186) >> >> endobj 4191 0 obj << /Rect[364.98 550.75 381.93 559.17] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.126) >> >> endobj 4192 0 obj << /Rect[359.22 538.76 376.17 547.18] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.127) >> >> endobj 4193 0 obj << /Rect[331.99 526.77 348.94 535.19] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.155) >> >> endobj 4194 0 obj << /Rect[313.48 514.79 330.42 523.21] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.118) >> >> endobj 4195 0 obj << /Rect[399.88 502.8 416.82 511.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.152) >> >> endobj 4196 0 obj << /Rect[330.91 490.81 347.86 499.23] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.119) >> >> endobj 4197 0 obj << /Rect[355.54 478.82 372.49 487.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.152) >> >> endobj 4198 0 obj << /Rect[328.42 466.83 345.37 475.25] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.110) >> >> endobj 4199 0 obj << /Rect[327.07 454.85 344.01 463.27] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.111) >> >> endobj 4200 0 obj << /Rect[322.28 442.86 339.22 451.28] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.191) >> >> endobj 4201 0 obj << /Rect[320.67 430.87 337.62 439.29] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.121) >> >> endobj 4202 0 obj << /Rect[414.29 418.88 431.23 427.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.219) >> >> endobj 4203 0 obj << /Rect[327.87 406.89 344.81 415.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.155) >> >> endobj 4204 0 obj << /Rect[384.69 394.91 401.63 403.33] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.136) >> >> endobj 4205 0 obj << /Rect[320.12 382.92 337.07 391.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.112) >> >> endobj 4206 0 obj << /Rect[319.51 370.93 336.46 379.35] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.141) >> >> endobj 4207 0 obj << /Rect[317.91 358.94 334.85 367.36] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.141) >> >> endobj 4208 0 obj << /Rect[341.79 346.95 358.73 355.37] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.134) >> >> endobj 4209 0 obj << /Rect[327.87 334.97 339.83 343.39] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.55) >> >> endobj 4210 0 obj << /Rect[365.65 322.98 382.59 331.4] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.204) >> >> endobj 4211 0 obj << /Rect[388.34 310.99 405.28 319.41] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.204) >> >> endobj 4212 0 obj << /Rect[393.93 299 410.87 307.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.204) >> >> endobj 4213 0 obj << /Rect[363.51 287.01 380.46 295.43] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.205) >> >> endobj 4214 0 obj << /Rect[385.38 275.03 402.32 283.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.205) >> >> endobj 4215 0 obj << /Rect[390.97 263.04 407.91 271.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.205) >> >> endobj 4216 0 obj << /Rect[380.59 251.05 397.53 259.47] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 4217 0 obj << /Rect[403.28 239.06 420.23 247.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 4218 0 obj << /Rect[408.87 227.07 425.82 235.49] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.206) >> >> endobj 4219 0 obj << /Rect[326.82 215.09 343.76 223.51] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.149) >> >> endobj 4220 0 obj << /Rect[322.89 203.1 339.83 211.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.148) >> >> endobj 4221 0 obj << /Rect[338.47 191.11 355.41 199.53] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.103) >> >> endobj 4222 0 obj << /Rect[328.98 179.12 345.92 187.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.148) >> >> endobj 4223 0 obj << /Rect[351.34 167.13 368.28 175.55] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.200) >> >> endobj 4224 0 obj << /Rect[319.57 155.15 336.51 163.57] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.181) >> >> endobj 4225 0 obj << /Rect[327.84 143.16 344.79 151.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.187) >> >> endobj 4226 0 obj << /Rect[326.24 131.17 343.18 139.59] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 4227 0 obj << /Rect[363.1 119.18 380.04 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 4228 0 obj << /Filter[/FlateDecode] /Length 2101 >> stream xÚYMsÛ8½ï¯ÐQªZrØøÆÑ±”·¼Î”ãJÕd²Äq8#‰Rr2ÿ~àšêìøÅ×@£ÑYyQ,^ñχݧŸÞۅϽY<ý¶*wf‘Iþ<Ýüº¼{¸¹ý¼úïÓ¿~z¯&”p¹q‹""„–á=u¿fÂF¾:6õþxʪÃJØåkÕVÏ»2{^eÂ,Ë—êðÏwû„ 1Ø/2¹1¬JÞ÷¬^³ÜåaKI‹ÜØ4Š%u:wr =•›S¹ÍS§¢´ fÌ%‰·ÃÛŸ‘¤ÆAÚå¦Þ¥<'R$hF ~”s~ÞU¢Å¹°ĉÓ¨:Ž0?ßH‘«Å·…ê„”Q‹ýB¹w‹Oiú­'ÚVM*Äø€Œ’J¯Q©’î‘*™ˆ^ÊMÝ’Iñ¹ÂkQ¸‚úoµ ÊèIK÷HµLD/Õv¾<ôK¼mߢQ©’î‘*™ˆë}I²¥‚à¥àB¾A ¢Œ™¤tTJB´nÛod^œË G0¼Cáùb•Šé©˜‰¨ýZîè64H–"x)^¾E ¢R)Ý#•2/’ŰJ˜ÜÆ×žëÓúTÕ’ý΄´H`Ê1$Xœ'’(Fç…Hš!PEJ­›—W¢ÂæJ§0žE‹ÜÂD³]áY#—í©©/dTP Ò‘W0„VçºÛóͺjéÀpþ5@ÁM J׺§8lë=Y#•ƒ%’áðžràÁTR"/r% %’#Q¹&颱Êy‚Í̈2×]:=Þ^ÝÜß=ÜÒÔŽˆq2¤®\±á±OÝé·žêjP,Áayuwõîþ–¬–Ö¹T$B3×Rê·‰C\*®{¤â&ªë÷÷Wa~ø4o)„&@žÑ„{YÛ7hBœ´“¦î‘jš¨®ïïÞQ9ØIO0¼\ç7ÉA\*§{¤r&ªÿ¡bŠD)‚c1ÙÜ˜Ž»êðǬ”(.©œX^λuÓmûòû±)Ûv^РKÅ4 4—L^O´_×í×Y€dŠ«*p5|ϱ¯c3¹nYfØ ®2­–¿cC˜aóƒê¦*©R-sï ýÌWÀó_ÁñÚ~'•ÂäR’ËpJ<öÊöüE Œ*dÃÀó)9òÍ{ +r )7—X†ãn½)³ØœŸÈº8wÁ„`2Fìu åê‡U²‡DçdžâHw:7Äz“8Á¨t'Xl],y=ó@?€' #7¤½rnj•kIŒ+Ð…œ¾U‡y#! 40 ‡÷a]>~|š‘—“ DÁŒDc3óh:—SŸ.ZO‘ ‚Éé‘~xÿxÞÑ“ÈkpÌšjíJ2 ױ¦ðLqÓFR†X”êãE‡…5DP¼çƃ}Æ%]»©ØÛÌèBß—à=7>Ûý®íù‚}vËú|ØÍSµ?¢K¤Ý(È%ñÜbb7Â|ƒe,ŠØ~$!„QÜ ©<®Ñ “‘‹Ð{v­—$Á¯¡¦ª}yû}SÆ•IùB/ªüœ&,¨¢+¤ífMâ…òy¡S¸$À¶1Ý>]_=<Ü>ÒYà÷½êphsöqœ^Ž?ô‡rúkO÷ï7·t@*¼J!tŠD4šqLx0ͦE`ç ‚ H§(p¯G;6½Ÿ¯Rhz“×$ß:?ÇVWP´&c",^2†.ûæ»Y “ 8Á{n‘NìévHH8°Ì’€@K†D›àšãJ—žËÆJÁ®ÂjÇ$0à™"z)Kö[ݬ©èû|ŠÁQáèÁS®¶nèè°%E°Øm2\¸2`ûÑ5¯Õ|pè—Aa[É"ŠxæuЍ%âöN@\ÀÀ€VÔÀmvu[fõ!+¿—›lß*[¢-Ü-†ê“D‚ 3â@ŽÌÛ »+CÁ‡;¢¤ñˆÐÇŒD‡:¢ç]±ÎÏ?è¨\YÇ D;;Ò–‘ô•êC— Sú.†Æ¨°ƒ{ž×•ÖËuCy A¡ocXp£}>ÌoIž‚b€Ûv!÷ Íß´„òj(Ã!ñl)ºÅøôðóãÝÃÓûy5ñDîÙ©X`}®ÍøÃX`»_¾«èXè[%v´àI„àÒA‚—$q”i ÄŽ{Vi žEi»‰¤èó·2¶]åû² +«›mÙ|YÑs!tÞcH¦RŸëûJç÷‰;è “žÁœú>#Në…Ë•"ì2 í‡ûÿö‚ÂÄÍ—@x ô“^šÄÙ$ãn| HÅ¡ƒôr$šÝ¥K5Ø•ÂvÍÃ8%Õæú¾znÖÍ_+'gçžê²o ÀBxIÌ¢gø®ëcH§ ^ 669SO‹~Ñ9†÷î€c§S "‰á9Ñ2:›r~Äþ‹Íïóóµ¿ÞJDÁLfpýð%aœËM€ íYÌ“£§ìïÿ/ɹYèFŸÆñ¼è.ûvµçýüù9 ¬@$BÌV vÑËøÃ,Àî'Tª$”§W?ž¥æ¦@ÚÎ@OQ,kð–Öö «Óì¬Ñ±+J@ ˜"¬¥*Öþÿ_8nœ PLëL¥í×øéæþîí`l¸ÚO0P0M^p–v¨ Ûú|šÀž‚x!(¸¿—F!aÍf†:ô­Â$ÛË[9Lm}œ—\À1Õ2úÈaã73¯jœµDÝô@Œâ â’DGC€è%Å@2yÃŽ$+ÑqãyYnçõ"ü§C11þã'hFã endstream endobj 4229 0 obj [4136 0 R 4137 0 R 4138 0 R 4139 0 R 4140 0 R 4141 0 R 4142 0 R 4143 0 R 4144 0 R 4145 0 R 4146 0 R 4147 0 R 4148 0 R 4149 0 R 4150 0 R 4151 0 R 4152 0 R 4153 0 R 4154 0 R 4155 0 R 4156 0 R 4157 0 R 4158 0 R 4159 0 R 4160 0 R 4161 0 R 4162 0 R 4163 0 R 4164 0 R 4165 0 R 4166 0 R 4167 0 R 4168 0 R 4169 0 R 4170 0 R 4171 0 R 4172 0 R 4173 0 R 4174 0 R 4175 0 R 4176 0 R 4177 0 R 4178 0 R 4179 0 R 4180 0 R 4181 0 R 4182 0 R 4183 0 R 4184 0 R 4185 0 R 4186 0 R 4187 0 R 4188 0 R 4189 0 R 4190 0 R 4191 0 R 4192 0 R 4193 0 R 4194 0 R 4195 0 R 4196 0 R 4197 0 R 4198 0 R 4199 0 R 4200 0 R 4201 0 R 4202 0 R 4203 0 R 4204 0 R 4205 0 R 4206 0 R 4207 0 R 4208 0 R 4209 0 R 4210 0 R 4211 0 R 4212 0 R 4213 0 R 4214 0 R 4215 0 R 4216 0 R 4217 0 R 4218 0 R 4219 0 R 4220 0 R 4221 0 R 4222 0 R 4223 0 R 4224 0 R 4225 0 R 4226 0 R 4227 0 R] endobj 4230 0 obj << /F7 577 0 R /F4 527 0 R >> endobj 4134 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 4230 0 R >> endobj 4233 0 obj [4231 0 R/XYZ 160.67 686.13] endobj 4234 0 obj << /Rect[221.19 657.16 238.13 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.114) >> >> endobj 4235 0 obj << /Rect[180.76 645.14 197.7 653.56] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.123) >> >> endobj 4236 0 obj << /Rect[197.17 633.12 214.11 641.54] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.140) >> >> endobj 4237 0 obj << /Rect[204.58 621.1 221.53 629.52] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.113) >> >> endobj 4238 0 obj << /Rect[188.78 609.08 205.72 617.5] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.132) >> >> endobj 4239 0 obj << /Rect[193.21 597.06 205.17 605.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.52) >> >> endobj 4240 0 obj << /Rect[209.26 597.06 226.2 605.48] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.106) >> >> endobj 4241 0 obj << /Rect[199.57 585.04 216.52 593.46] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.143) >> >> endobj 4242 0 obj << /Rect[215.15 573.02 232.1 581.44] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.103) >> >> endobj 4243 0 obj << /Rect[195.48 561 212.42 569.42] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.120) >> >> endobj 4244 0 obj << /Rect[194.29 537.94 211.23 546.36] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.187) >> >> endobj 4245 0 obj << /Rect[191.8 525.92 208.74 534.34] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.198) >> >> endobj 4246 0 obj << /Rect[219.31 513.9 236.25 522.32] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.134) >> >> endobj 4247 0 obj << /Rect[233.7 501.88 250.64 510.3] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.134) >> >> endobj 4248 0 obj << /Rect[213.98 489.86 230.92 498.28] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 4249 0 obj << /Rect[179.59 477.84 196.54 486.26] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.151) >> >> endobj 4250 0 obj << /Rect[181.86 465.82 198.81 474.24] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.145) >> >> endobj 4251 0 obj << /Rect[259.14 453.8 276.09 462.22] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 4252 0 obj << /Rect[213.91 441.78 230.85 450.2] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.214) >> >> endobj 4253 0 obj << /Rect[249.07 429.76 266.01 438.18] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.214) >> >> endobj 4254 0 obj << /Rect[225.26 417.74 242.2 426.16] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.214) >> >> endobj 4255 0 obj << /Rect[213.91 405.72 230.85 414.14] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.214) >> >> endobj 4256 0 obj << /Rect[194.62 393.7 211.56 402.12] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.174) >> >> endobj 4257 0 obj << /Rect[184.63 381.68 196.59 390.1] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.64) >> >> endobj 4258 0 obj << /Rect[196.2 369.66 213.14 378.08] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.130) >> >> endobj 4259 0 obj << /Rect[202.31 357.64 219.26 366.06] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.144) >> >> endobj 4260 0 obj << /Rect[177.96 345.62 194.9 354.04] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.107) >> >> endobj 4261 0 obj << /Rect[198.99 345.62 215.94 354.04] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.239) >> >> endobj 4262 0 obj << /Rect[224.45 333.6 241.4 342.02] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.216) >> >> endobj 4263 0 obj << /Rect[208.26 321.58 225.21 330] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.216) >> >> endobj 4264 0 obj << /Rect[206.88 309.55 223.82 317.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.216) >> >> endobj 4265 0 obj << /Rect[180.7 286.49 197.64 294.91] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 4266 0 obj << /Rect[180.15 274.47 197.09 282.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 4267 0 obj << /Rect[178.49 262.45 195.43 270.87] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 4268 0 obj << /Rect[177.93 250.43 194.88 258.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.124) >> >> endobj 4269 0 obj << /Rect[193.76 238.41 210.71 246.83] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.144) >> >> endobj 4270 0 obj << /Rect[261.92 226.39 278.87 234.81] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.190) >> >> endobj 4271 0 obj << /Rect[217.78 214.37 234.73 222.79] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.120) >> >> endobj 4272 0 obj << /Rect[193.15 202.35 210.1 210.77] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.142) >> >> endobj 4273 0 obj << /Rect[204 190.33 220.95 198.75] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.110) >> >> endobj 4274 0 obj << /Rect[208.73 178.31 225.68 186.73] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.120) >> >> endobj 4275 0 obj << /Rect[252.09 166.29 269.03 174.71] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.207) >> >> endobj 4276 0 obj << /Rect[240.75 154.27 257.7 162.69] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.213) >> >> endobj 4277 0 obj << /Rect[192.88 142.25 209.82 150.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 4278 0 obj << /Rect[188.17 119.18 200.13 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.49) >> >> endobj 4279 0 obj << /Rect[204.22 119.18 221.17 127.6] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 4280 0 obj << /Rect[433.39 657.16 450.34 665.58] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.229) >> >> endobj 4281 0 obj << /Rect[403.75 645.21 420.7 653.63] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.104) >> >> endobj 4282 0 obj << /Rect[453.68 633.25 470.62 641.67] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.217) >> >> endobj 4283 0 obj << /Rect[437.46 621.3 454.4 629.72] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.217) >> >> endobj 4284 0 obj << /Rect[388.25 609.34 400.22 617.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.27) >> >> endobj 4285 0 obj << /Rect[404.31 609.34 421.25 617.76] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.144) >> >> endobj 4286 0 obj << /Rect[373.59 587.43 390.53 595.85] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.181) >> >> endobj 4287 0 obj << /Rect[380.53 575.47 397.48 583.89] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.132) >> >> endobj 4288 0 obj << /Rect[380.23 563.52 397.17 571.94] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.132) >> >> endobj 4289 0 obj << /Rect[377.74 551.56 394.68 559.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.121) >> >> endobj 4290 0 obj << /Rect[398.77 551.56 415.72 559.98] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.240) >> >> endobj 4291 0 obj << /Rect[377.21 539.61 394.16 548.03] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.150) >> >> endobj 4292 0 obj << /Rect[412.14 517.69 429.08 526.11] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.174) >> >> endobj 4293 0 obj << /Rect[438.98 505.73 455.93 514.15] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.174) >> >> endobj 4294 0 obj << /Rect[430.96 493.78 447.9 502.2] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.174) >> >> endobj 4295 0 obj << /Rect[383.27 471.86 400.22 480.28] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(page.203) >> >> endobj 4296 0 obj << /Filter[/FlateDecode] /Length 1410 >> stream xÚ…˜]SÛ8†ï÷Wø2™!ªŽ¾}ICèv‡RÒí^Ђ§IÈ8Nþú=’íDÇQg¯¬Wu>•‚3΋Ç"þùP¼Ÿ¿;WEÉJSÌÿ-œcF)™ÃÿÏþ ­ÆÿÌÿzwn÷ œÙ‚Çå—g³ÛVp€LZÅDØøeÛ¦®Ö“¥_?6O'A_Ìæøê4g ‹‰æD”¨d½³Ç¢=ª%íîÈ~^2+Ry¼ßiæt¿<nôPÕ[†L• ø1¨´ÌÙT/Öž@ðÜ´NUk‚Ñ®ì(ß…Wˬ&*"CÀ:ÈKÕÜ…Ñ£‚MuZ[EüàÃ2ýÇ„HW›Œ øÁeë·íÛjY­P ÓT*wJ³²õÞÍ·›ËÓO3BQŠðEc¸uN~Û6~EMQLQˆŒÁã×çc'G‹úÑ7$™ÐDÎf@¥d\Æõ&Áü0D¥;†®× dâ_«mCW¡§ т̤À°â&eUÛɦ~ÞÄtð5aÁŒ&{òLQ2î§uz¢ðÃl~C-Áq©xަ€µ'Úøå’f9’I !Ð2DJKØÒÇŠä$‘`]²ÌXýU‚°~›>¯6zS2’)HÅ2ÍGb›•Â.°QRë¢TšE)ìµ’Øu½[H:L©2OÂÔ—mÇÜ †Üi,Q`Wʰß)èÍ‚(òm˜j3d7ˆ9n™2D‘'ÚeKhŽ…òÇË"`µØþ&VM6bU)˜jǨ/ëP¬îvÕòaq·ô³×{¿iªç5Á–~ëÏ“Á¬²+‘b}Ì WDmúÆ~¿ØúaNX¢Í›¡çÆÓ¿™ Ú bè A#Mhƒ Â4Ô?èÛ`ò´C}žž~º8Ç[m„8KÑW ž™©46Yíz“®ÎÎ/NC²b¿ Ã ^ €¨³mU[:AG»>;*ÉN,º,ÜÖ޵-–;?åêT9¨š@–‡· (ɲ w’ÐòK/O­u’dŒ JŒ|è<ëj˜-Gùxsù1ýÓ/è*†ƒMwã<š¡cm7öèÕýzâ4ÙšGÇšÝ&ÜÏÕó.f&)‡2xØ¡HA2xX’uz€2GÉ2-…{C°ËwÙúŒXTÔ ŽGET˜S9Œ’}A{yòµ§Œ’)M4ôÞ¹‡hÝ×þ—§êøâ@ ˆî7 cûNˆ åÀ¯ ‰³’œ,ÄA.œ ÞÐwä“,6ô6»^êª92"zï ƒ¾¾^_¯&~‹%†!ª¶Ò%z:}î ûñô8iÁðÕ £¶þ†Ýžy¶_?¨.Ã/Aéžß@^ÛTú¯‚c4q:¥¹"b=K¤b‘ÿã?†ÿ]/ endstream endobj 4297 0 obj [4234 0 R 4235 0 R 4236 0 R 4237 0 R 4238 0 R 4239 0 R 4240 0 R 4241 0 R 4242 0 R 4243 0 R 4244 0 R 4245 0 R 4246 0 R 4247 0 R 4248 0 R 4249 0 R 4250 0 R 4251 0 R 4252 0 R 4253 0 R 4254 0 R 4255 0 R 4256 0 R 4257 0 R 4258 0 R 4259 0 R 4260 0 R 4261 0 R 4262 0 R 4263 0 R 4264 0 R 4265 0 R 4266 0 R 4267 0 R 4268 0 R 4269 0 R 4270 0 R 4271 0 R 4272 0 R 4273 0 R 4274 0 R 4275 0 R 4276 0 R 4277 0 R 4278 0 R 4279 0 R 4280 0 R 4281 0 R 4282 0 R 4283 0 R 4284 0 R 4285 0 R 4286 0 R 4287 0 R 4288 0 R 4289 0 R 4290 0 R 4291 0 R 4292 0 R 4293 0 R 4294 0 R 4295 0 R] endobj 4298 0 obj << /F4 527 0 R /F7 577 0 R >> endobj 4232 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 4298 0 R >> endobj 4301 0 obj [4299 0 R/XYZ 106.87 686.13] endobj 4302 0 obj [4299 0 R/XYZ 106.87 668.13] endobj 4303 0 obj [4299 0 R/XYZ 106.87 493.78] endobj 4304 0 obj << /Rect[192.24 453.03 199.22 461.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.1) >> >> endobj 4305 0 obj << /Rect[280.33 453.03 292.29 461.45] /Type/Annot /Subtype/Link /Border[0 0 1] /C[1 0 0] /A<< /S/GoTo /D(chapter.15) >> >> endobj 4306 0 obj [4299 0 R/XYZ 106.87 436.54] endobj 4307 0 obj [4299 0 R/XYZ 106.87 382.34] endobj 4308 0 obj [4299 0 R/XYZ 106.87 208.03] endobj 4309 0 obj << /Rect[142.68 119.18 302.58 130.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[0 1 1] /A<< /S/URI /URI(http://www.cs.caltech.edu/~jyh) >> >> endobj 4310 0 obj << /Rect[323.28 119.18 414.19 130.31] /Type/Annot /Subtype/Link /Border[0 0 1] /C[0 1 1] /A<< /S/URI /URI(http://nogin.org/) >> >> endobj 4311 0 obj << /Filter[/FlateDecode] /Length 1256 >> stream xÚ…VÛr£8}߯àQT 2ˆ{æeo.žÊ­lgR©Í>#&\€ãõßo·Z¶qœd_@jµZ§O] ›Û¶±0ÔïÒø1\ø†°yÓ¹áz< Ëqî cú×ß,Y­LËu˜¬²â_h…>šÿLªi#œf–óHM˹ld5“-ºçS½†ãq×ë­!<Û4eÈÓr᱉”´FR¶5-ã1½ŠpxD¸êeújŠÉgæ<›0Éì™ ótÕÉæ°²áÀáÀÌÀ籚é܉û£Ïæ7 V·ù>´÷ahaÇ\„G¡ýþ°Ãî±]vŒýkšâh—ò MÓ/3L6mQW_’ôËŒ\íwfZžç1›C¸O0ê9ý“õbÝv”h¨! Ûù×Ð\ßå~ ¡¹Úu1“U««˜V™–L½2]›m›b‘› ¦î=lÁÃP!÷pF޽÷°ÈÅæ.q)û}Çå"pð»|ÏMmZ¾Ï~§¦Ø›)"&©Î—M½^i§aZvr†¹JÝÁmy©øtš­ Ùª©Mº„Nh3e„ÿ¼Aùb«­ç†ÙàBi#¿ƒ9†ü±êõšBÌÒŠœ™m×/ëNO/:úƒº¡ö€`Y1ß;­«LËÒ‚ Åöà.Lj PîQFžª:þ÷c—·d¹”•lÒ’:÷ë—²˜Q{_TtOuœ:´¹Ì¨û‚¹mõjÚc(@bÅJˆ¬„ÈŠm÷ñ*ÿ2J;ÐìwªÐ2©Õ® ¢/_4L’í ºxnØ+ž±ñPƒLTô§dÀ#[$²§ ¨J€eS”%Y^úŽëVÎ×%HLø0²Ö“GÓ«»‡é'…KnŸðØõÙ£é86KÆãävú„„8¬Óå5ÆAù¦Ž’ŠzÄ4Šåª,0ìhÂP4:å–B)Áãæ|Œ,¯` —ü][ýúÐM–ÓQ•žˆÙÅhz{>™ñ£ß©“Ã=V4ãw:>\'zøþa|79çÔSç>º+üØP¢Ä¡(O´²h¯òÔ™#8uÌÖ$‰d²K‹²ýDO¤:p…¢jKä Š•§˜Ñþ´€ÑFÎdA‚ÌÈ’â/`3m4*Z!•†U:ª±ÛcØÙ§®‡` -ëjñ‰4°ú(/Ñ•x¡¥ú°ád˜“µª;T]ì²MS¨³'ÕG{Tàž»=êè=z8¹Èª|öûRlT͸n¡OQoÒ¶=-UBÕ7ë¶t_š"[ÈÝñœÐߎkÛÃ$ùŸÈáárôô ”¬aw4ŸÜ‹t»üL[:K\vü˜WUã- A£LJùÚÊ-éç¶^6ÝINï±yäêGv(æNí’¿_ÝÒž=Nvw ¨LŸj~`Eö:W›·M3Y¥;5[1$ì#ˆÀÖé~=_‚ìÏM´Gã |·Ùûw”´2ù&Ë?—°KVMÉëfq’ÍéÁz||<ëWç>¤kÓCîyÊ7ïºÕÙ`°Ùlø¬å3•yÎe¶hJ#àqH”ú¸‚à~¨ïùÐ}?àBà{@»üÞæ} ½G€Ž¼#$ø"ù´ð…z'ž¢®°öÈÉàãUœÞy†Àk8"j„¿{þñÜæÞl endstream endobj 4312 0 obj [4304 0 R 4305 0 R 4309 0 R 4310 0 R] endobj 4313 0 obj << /F5 535 0 R /F4 527 0 R /F10 1169 0 R /F11 1186 0 R /F8 643 0 R /F16 3208 0 R >> endobj 4300 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 4313 0 R >> endobj 509 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-33 -250 945 749] /FontName/NNWTQN+CMR17 /ItalicAngle 0 /StemV 53 /FontFile 508 0 R /Flags 4 >> endobj 508 0 obj << /Filter[/FlateDecode] /Length1 714 /Length2 3925 /Length3 533 /Length 4475 >> stream xÚí”gXS뚆éH©ÂF)é„¡i‘ÐAzK ¡ º(ˆ€ H‡ (MZ(¢t¤‰i‚Ò”&½÷vpï9g®ÙgþÌ5ÿæšµþ¬÷yŸïùîõ®u}¼\†&"j0/'¸– #".*jè‹ËÅEA^^ 4܃ôBi:bà` ¸¼¼8P ë ”ÅeÀ’r` )€¨áåC#] ¿†Ào—,PÍŽF:;¢€úŽÜó2ÄÙÑhâ匄cp¢@ š‡Ðø÷_ 1ÜŽöƒÃDqq éŒ:Á]‘(€Øo&]”‹Pö/†õþgËŽö½äò_r /)a^(wˆA½.wƒ_²ü±þª¿‡ka=< Žž¿ãÏéßÚŽžHܼ<½±8¨ïƒ£Q·ZÀÿbÓ‡ÃXÏ¿wu1ŽHg5”«úKBúj!ýá0C$Ætqôð…ÿ©ÃQ°¿C\ÎíO1(ÔÂÔ*ô×'ý«ièˆDaLqÞÿŠýíþ³ÿÏúrÙþm³;(g/å 4Á8¢`ŽhØ¿„‡RW÷ò‘”ŠHHƒ€òRÒ@Y)ùàÿê3C!}°p]M 4’•—þSuÆ¢ÑpæÏ¿àò}ÿY» /§‡ûÙבÄöÂìB{»Í#Üï{G  yk©ÒûÙÌý]›Ôä¢_ÝG¸îŽÑ¯ƦòsªDU„è+Ä5ïÛµáp7J&˜]zê­îKŸ.Š|a¬¶"kZ‡ÇÖÙ[W eKÚ‘ÓNnò1Þ[í\¬5'#!ã°+¡Æî±ª¹èùD`ç‘;÷! Bxûýr TŸÌŠñ\¹c°g¸dĹَªˆYèÐ[÷YóÖLðjüËÞýʹ'[Çfé./N&Ɇ–R#Çz‚>1e®H\!p/dömΓµ¥ycy¤#Öö©aÚ]lå”Ò÷¢à¼' ‘‘ŒÜIKãqgæ1!é°Ô”¡zm,d%~jJ˜t Æ)é©™¾ÁÇï |"õ3¤µe.zSIú~Tú„Uýî5IìvbFKB€—¯Xt²ã3˜[NùJ“î˜ÕVwÙ‡÷±<õBžŠ«bZº9¡œj:C_I¿ˆ°d-¤PØ’¥ãSöU„ƒ²Z×ò¯x/ß3]f¶­ovü¹zƒ@•"ØÿäÕ'êøjwÄ( ôÞá“®½$½Ü˜UJû‡‡c”"]at§Oèbê)†Ñ¢O®|íSäxÝy- ¾ö\43ÃP*;LJ+9ð=ƒ[ˆZˆIú—¼Púj¾½…ðú‘ÑquÃ}d³4'léJ3$4¸®æ{Ù9Õ/ªBšé<Oº4ʈO&shÎ=Þ•»þÂÂàl†t©ñi¢©ú2Uٹ擉ÙÔ—ÒÉ»”‹ìÏc¯o6¯lóõïSÔ˜nîŠ\ÄréÁe‹]J6óõÇ–oP²Oæ§,þ¬+Ä2í]dŽU;ú¥C‡þb»åóñm\ŒÂwó ¾ÃšM¢•kýð³½Ô( œ”Bk ˜3\¸H‘Ú³&ߣx2U9tÞ]|¼ɉ%µ!~(ƒm_|ÞXT{»–ûmggûXƒŒ¨ŠíÝßÃ*Q‡‘;›n½«ÓÔå³Má¿Æ©¬¦6¿~N/ò|éH8ÁæWñI‰ø¼Ë“Šo<õ&7¹}6Š|ß›ŸP~s3ô~ _Åäl tZ¤iÕÅEP¡0—,wÏ"nÎB=áÆ”î¦¬çº9}ëQXn#³b‹L]úKÃåc#åÐ*PéªÁ”Çvµ˜Å#F”•Jq:ûÍ+i»×ˆÕŸG0OøAµ?‘²Íî8Ý8Jµ‹²H"Ô/ÊlÚèF/Sð¨¤PÏ®|/’ AH÷KÄ÷ißka–Œ0ŽGkNó‘n>>«O¤ÂâD¨Îæëy[=¦ÿÃT߃ž8cãr&ƒ.·æiŒA\¹Qw¶òbr§&³"Üf¯mR0§±Ç<„Û·¤Y?x âøl·Eô¦E£·Ú´A?: [i¤Ä1ÒÅ¥ÏW†<Òç‹UAL„¹`1ië{ÙÙÕÊ( Ãë’zfêm:¡A‡£Õn§ge„­ô]ϱ*îçÓ©âR^»˜@ÔE÷Ë\‡é&ÒuF¹¥q«‰¹87Ï 4DÔÞóž¨Öpp¬"¥ÆCê!¾“{P BoîT’ÙøÂwªðšÈÔ›¼)ËGûGé’W‹tø z£[y‰g 8–àš 4¦0Ë}ìÔÅrfQ–ŸDìØA,DÞöèÔf×äŸ Ñe|MÌÈ8×!e¿õ‹TàK£)Ê™Rá´S:ïPÓ)&;Á4´õÖ°á ùÝ’UM¾3éëȱ´ä”¼Ý½š˜[;(õkt¯èÑNvL¬"ç“‚’åM|ý &©Í<Õ¤çÔgU…­½B•i’»…ü¾¦ Ô#›“ƒü’ݹQ#Uì+û}ôƒèïË!4D oYŠÅ•f¹)…Õúù{õû}Ùâ¶ š”éN~zyjÞÇöPOAo”ë!!» ú¼ýI÷ˆª’ècùqüG@nôh’O˜Dñ‘MMZ» –‡D:9Hth¯mÏ,Õ튼&!éYͪÀG}©ñ-ÍŸbðç׊ãΑzW£§Æ²ÙHÑ´ú!‰á•?~-(Ùî óËÓˆžR×jªôýÙ,…0\kÚóC5ƒú²u¿*¯¢Ò§S÷H]앃ëC’aÄ­yªܸ‹pýÕf=àbçªÅŸô¼lÍRCõlN¶ßÌ'ØÏn÷ÙN’dsäug–Z¶½K;´ 3WP°/ŸŸg’xCÖPÛæ'Wb¢þ¶Î¿lA2`B¥Rœ%¢7þÜe*¡dà›®n=`L|úpBý}IP ‰^ùãû3L›¢Z<^jT¶ŸöNN;AEÔD©™p¬`–bè°QcÌ@ÓÊ|ÿø’€àú7c8Rh‹Jü#êjËè­ÁŸ!uèÉ‘t¤Cú¨M,tÇòYßÐG¢8.©ö‡¢yæs£·,ÐŽÛÃÓUãà„–8VÐø¨ÒcIýÃÕfòÐx«]Ý‹>”ú áát§Ì©:mÐÊά;‹YoænˆèÒµèÊoÐÔ¦æÎ­– »ËX6Ô»©^¦dÌéô>sO£íýLÊ£¾–òË“•ñ¬_Ùz}†YXÛ@ˆ2Ê·ý}z{¹\·<ÏjÅÅwÁƇÉ[vñ¯€ä+`Îé¾ÝH§¸…¥š£ŸÑ[v’ŠxˆžÇÎí[ñó‹ÙCv<É`”œÓ<Í> V)Ntî¹tÒ=d@*GÿûT·AçÙú³Í”y=XMÜ{…5³·£9,¤Wà䓽:@.°jÿÔ¡©'æ­sÇñÇ€òcmÓàЙ½:ŸŽñîÖ\Wu Ó^9„¼¿×Ó6F^¶`Z¿ú|³CÂfÎãi|›‘šòk.ÏÈ…г!jod§'^*Ý*3&úÚ…s¤=—œîærb¢l‘/r]Ûr·æ¡¼9JËŠYATÐíZLŽ“]ÕÓö”®~¹„âŒãýY÷²üOUÓ­ê«õ›mybŸÌœñ™’ ž Û ÛÅ®5wxÏtKy@ÊïäoÉ ô$ÌõÆ( •Aôã2×ÉMÖ«p¼ÑÆÊ,KZL¿äú‹úbÑ +\>ž?™f¦ü*ZúV×™ãz¨(SåDÕå¤êÆy5¿L™ Ì*ò5èÊ’Zéùšk„.`é\Ά£¼ªP w†[Þyõa£ºa.”S9²-ÖÚŽ÷²@Ñžùiм@37_¸;á­ÅDZFç€E¯š{4æÄbÌä›+ÓÝ Waí­_sÇ¯ê)û,Õµtï$þµDs¾±Às¥÷òЖêó-:ºšÕ}¢ý`m„±—&S8Ì} ©¹° QîäKˆ©¨tÔµ<°1Ó£)š§˜ÇÞQ0µ¬L%¤Ñ¼^>`·SCìTtïqŠNiGK¿Ý=½"B$¸h%hÅ“aNÕöîµñå´ðÏÄ«‡'YMÙ 05÷m¥áÚG$6»¦×Êädø„Çì"¹*Ô '×ÞH]ž—î>¯òiyiØåö;ßà÷Ü Q-6¬·*v}ƒêNæå í{XêtÓʰ+ë-íšÀêRI@Òæî(Xú‚XÔÍ[7qâHW‰¾¨Q _ú.ž*!ÛÖ"<ÜÁXiG•™sKnÊßIåE÷ "Œ4òc_ Ó|q×ãA’¹Ú»º€å“+/ã8¼A¢ÕYt«Ïì˜%P]f 'ðzqWžRXáçΣ ]Bï&xC&:<×öʘŸéUŒø2þ`&™êxDß+º˜O°í]Å¿>%àÜÞ¿&=h Í,ùã #‹ëõÄŸm ϾÕn_/rÉÎá]sû˜orìoxÅuè}~“÷ËÂü !ëG‹0–òUŽ»mtzp[Äû&rj±&fè˦Pǰlò1 ²­zOq(ÿ“~T/(ë—ž²¹ƒÝëú/wÑ-¯Ojõ4'ú4-œÎ¸ñË ¬%ÒN üâ clØb³Þ‘ î9ß žv6QV[wÏ×ÚIF·à§°·ó–jI4Pô3ñÀå³ £Lþ÷3C¢8[O?©Ç^A ¼** ˆÓk€Õ4y.{ÉÛ<&Ò„6Ù6£VùiMKÝó2—¢•£ìïžÒ ßtÝv…³Zû½D!¼$J.9OÚç¯ÜAŠ"pÃ;V›7ÛÍ<«àn0¢}·ÁrË.J^{kSø`!8ªàVê©4ˆý‰ëÙ²7»­›y®a^l¯ÊÐ×u]´q· J·ŸûÅqÀô´Œa í,y]Ï }«oÿ§ñ ¶ÑìÐQ“‹ýòlZ^†Æƒð³¹ä‹·†îAy}š»°Ûæ‰U7­~Éño3ÝLF¨[˜îʶfO ÷dÖS˜¥+¢d’bTf¬Ç|¦<ý//ÀÿüŸpö€;¢1^žŽhwàϧ— endstream endobj 512 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-34 -251 988 750] /FontName/VHONJX+CMR12 /ItalicAngle 0 /StemV 65 /FontFile 511 0 R /Flags 4 >> endobj 511 0 obj << /Filter[/FlateDecode] /Length1 714 /Length2 4337 /Length3 533 /Length 4891 >> stream xÚí’y<Ôm¿ÇmY&k²mE2ŒÈ–-û¾3Kà †1؉A–]¶¬C#dß—ÈNQD‘l )„È–}yºïû<Ïyû9ÿœ×ùï¼Îïúç÷ý|?×çz_ßßODÈÔBBuBjc1x ¢Ò02‡Hƒ `)€ˆˆ Ç£°M8©‚((@@êW´rSñ†¼¢”, ÒÀzq(W7HÜ=$ @ ÊrBº¢0É?˜ô0.XÜ_2‚àõÏÖ=$Îç7Hô7§è7%‹AA¤ @Òûû4äo–ÿ1ÖCõ÷pmm ÷ü#þ9ý[î‰BÿÀõô"à‘8ÄaþnµAþÅf„D žïêááh”³:ÆIý%¡|´Q~H„) ïìr£}êH âï¿çö'‚¤µ®‰±>Tü¯OúWÓŽÂà-‰^ÿŠýÃýg ùÏú÷xp(?L ,%ùmü½þùfÿ·Ã´0ÎX ã ²ÀÃ18ñ/áß¡n߯úHÜIHËB@ òò 9Y©ûÿÕg…Ayzš Y)))9™?Ug‡Äàÿü ~ß÷Ÿµ ê÷tH?¤3 ›Ä¢t¼Î/þëîNçÇK6/ÇLm…k²»dÎw¯7ΣÏÇÝ##n'$ kò|NÛuÕb‡'rewÊ2æwãn¸üì2°=eåž|­5A?º?TÌÁç]f„òZ/gÈ}þS{5=TÞ(ï°§Ž]é9wk=¸²8òÞ,jË¥ŽŸ1ˆÈï¬Ê¹–:gÅ•/ä¼dØ–6m_í²UQö fж¦PÓfŸÛ€Ò)nP,´uä;?v^“ÑÙìú…M¹bwå¤\5¢m ï•ÀÁÚ¬8‰›dn±¿tûÁØ†ÅøpX%× —ƒC«š€ëðÉ ;©e»…ÚÇ^Õ¨ËB•ŠÒ-Î. O+ÍúrUåM Y‡±ö>P¯ãW¦îP3øp¾ŠÔE"4C[—8©O¯WR_-m¤Õ7 ¼2ChêÝ--™i×ÿAßo€ðôó£(ÿ¤ k°gè¾pV%+d'uÖ)…¥),#Ÿ¥“ÊNý+!;l%‰±žŠà ”œŸ4±<ˬ¥À1!/zºÞ½"ƒ b!.Æôh=j^gÌ$È.cÓ¾º[SJ~ïù¨ç÷·˜ÚEÜœâ7Ûp±·6 ´æ[ïŸ ̲xd´q÷ˆ#Q®I;SˆkijûA\£ÅBl1q¥_Í>·fÁ™_‹'Úo|n]ÙàȪ_"x¦{5l”P?8 ]›H‰ötëV¢ÿŠ ÄÒ±›ÚýÉEâªmáµ ¹‡|ªù{÷²PB°œû1‘²ZÓYø–´ÔuÉçjá—ž<~¯¯ ïß®8LÛëj¹¡”Dd[ƒiº_¼®óÂýœ0ã´oí‰JÐËe§›™Ó-yÇûZ:êWÙª¾èïïS~òŸ»eÝ7zÞòvzoÁè³ø„&整𲺃® YŸéþì¸vª@—Î`ëùŒKòض‚Ý•°Ñ§§Ýæêáâ,X±†Àë¹æW€Ç*C‚M =S¸ãÄ}‡4Å÷S8uãáËñôµ!å&cóì/2ið«©C7´Âm=µ!švöc'7Ï–ùõǹØìd¾MrÞà4Ô2#ûk¢ó~óšÙ9R¹ùª¢2Gô…»Š‡ÂH>3z‰æ,«ÉwˆÓCºl4·¾Rx߈Kwº¾x™­œª“ÑЫDv²7lòÿyy’ùé=m\õ­îNJMVË®}àøLߖħ,óõ‰‹/Œq&¦›§_(j¥„-Q|¨±c¿Eü Õž{G\hºîÚÖÔ ²ÎY樴&¾TÏži¾4òÖdÊ~Ì*)¿%ŠATŠsq³ËmAgû·gq€;DÍbuiÐL™-/Ïe±<•ìîø“šïK/:¿¦by¾ÚD`–@vè m>ºÏN}Áµ{PŠç–,ç›J¾ï?Ml:vh(jG•Þƒè‘.e?ÈnBÕ ¯\tWÞ{iÄþÅõjìàNÛgŸ‚4wz8Ý‚šX´ÛPuåE¾ jÐiãOùh P×Î,†ñ]‹ðÔ¹ àøµ¾ÛÌ£òw]ýN´ÏyFÜÌ[§Íœh÷Å&ç8@Ôº+X¢SM,„·K¼E3ÏÓʳ¥SÓ2®3ñ¾IgHÇë1§8è{/-޶;ânM Œ*ï&#BÁÕ#œÙ­¼ÇÌÝ~`Ëå—J‰¹¼Á;Ö‚xk¨å¯øS¿iIïQµ‰ð,SMÎŽÚ£rPhónµÙa#ò‡»Ñ¢däÕ7ncER¬Ýe!w ™1çäÚÜ›«øÇ¹½QÕkɢ˓Ñ Ú®èW5¾ekIÝ hp‹QÀÀl_S欇ò«Oy=ÕÍöýý¿È“Sæúë%ùz%¾‚EøÕͱ2v[U˜šÓðIžòŽ­Rþ Löù3>3û+Ž7òeî7DríŸÅ›ÀšÁ ÖrqùêÒΆ‰pª™÷fååÊ.‡G•`–¢ðÈ©ZÿÖ¾d« Jƒ¬`»e$Íך–û›üR걈ƒ:<ØO zSîÇõ‡{ELÆGs‹&Çú¿÷•;œZÇæ/~m}âV‰=žnÜ}ª:17 bã|= ›­½£þ¦?cDõMms"ósÝÞçë_èY:Ÿà¤£$*: åŠ×?û°W”«äcù¡´ëù%Nœ¶\½È 1>ÜPèîó=é¼lÚ78À²E®ùÅö÷S߈êõw©¬^ºM êhX¨ÏôXþIZò|î˜øð—l? ÉÈQþS8?¦ù&Ï åæÔzhÇÈÛË¡E·ª ø½½%o-Z“#sºì]·çSæå}ÁF/Ù6Ì‚¿ÝQÝLö{ûíª~@ËãëÀü5/~šæ‹ðŧ3)¬GäÖþ˜Cþ¢ø›I²×K.Ý·ù~ÍKÙhv5iÛñ²÷Õ¤¡i±0ïbÉèq¶Ù΀AuG8]æ’TMœJòE)Ó.>SWÕêxî#ž·Wøã4ïsÀ&¡!^É<ù©ø´¤”gTÌØ;áFp‘sÓt,?rÌ[ú$CaS†Vám•‹Qã¨äƒåÞœ·à×娴k¬°8RCHÑø÷ÏÒW*«M/Ñ.Ä?T: €e3\˼5&¾8ÜØ>éhÒÊò–¹ÈÏM1¤”s\Ô¼¾Z·Ð@O ÿ-ÇâïÌÚˆ…'†™âñʱÉt A­F%† 'ËŽ÷  ^pó÷{ÀùÐ#|眡Eò´º™‘io<‡z›éûÆ&·lѯ'䪎¹»c®XRA×=…yzJ“3ƒÉÔ˹­ÏzyæÎrŠÓ»÷ÓÏS5X–Qlyµ·5Lg£y«êÒ±(juC±¾¼¢4+Ä<ÍåZxKÞs:ïÃø^‚ÚQà õ§€`‚ÑÌÅ[N>9 Óít`e  "N…á‚bK ªYØ–ÅÞìž§»aÅùÎ’£2 õRvіƹ*I¼f¥¢ÃCŸ¯v«ïïEÈ{³ÜhF›üQ!‰Ifê—`1¢eäÌÒ­PSA·ó:ÆÖº3/zéûÔ¼8¦/®¾æëì›sV,þ1Ž^rngB=4Ô¯Þ€Gϥݧ֪Ю¦y|˜dPX÷Í\cXýé>M„釽¯gí £w=¾8õϳ[Bgr,H,±tš: =ª ¡£éd‚oâ¤ÏõMZC ?Rßù?, HhûÅgw AToPŽðu "8:Êî< 1-0¯M1O™,©ažôOIöÖ­ZO·ÿàÎ9u˜c¢wNϲ/¡%=½:ç²Ò|ßĘû=¶{lü"”à·$sõ¹ÿîâ­róÁwq³ÆŒ«£mƤ™E$²ÐäEÄ`EU²dÞ_E÷3(Øhç’l6½àÔaR&Þ%öîµhÈ£Ú֧ع9¤Ï{o³Ï™ù=lX0`&aû’eú”7¤. ú ñ°wâHJÇéÐmºl‡×—¼×0 ‡ÑÓí¿EB™8–5ÖÞÊ\H87 h¾Dx4Û.°Üe“7OµIb—ì¶R]Ðcàªï[ô’W&È*¸Î6VOiúX(3ÕØû?´¡OT Æã¨žsÛ­,Oª…«){g†z÷b•œGæÓ¶ßâÞîóo2ú\ûð¹ˆ! .à1øêJçX_rñ »c‰wx9çþÈ¥¦a‡ïyíY«»v.?”ɪ5¬ø˜å4+8±5ø(›ÐT˜¯I¢¸¦9˜Rp*j:À%újEˆq•GãS“ã½g]¸„—ï:õå eVï@^:i÷52¹+Ñq`ÅÌT`k5*þæâ$ÇŸ-òp)?4XPÅRiTkß °Øü£Û[³rÅÄ൰uÏc´;û¦à9sãç1Š©tå=K#P¶mª }æ'uÊŽ Ÿ›ž Bã¬DÅnè¿è˜,øZòZ5ýÀûUŒÅi^–-Ÿ­jE†¢Ò]f¶Àµ™ÀéÕû±:ïrw í‹IòÎ!y»¯…`t•7±uì{S_£.%)r§Fl0!êFz9ËRzy1V~Øœ´ü§'—gf{§d—3£OÄŸ¼­Bñ͵F;º|cöE ‡„¾ ûx¯nMÍ9jÚ#£jv‚/s7¹ì™Øž’†¶êØàÂ6·ÄÞ@v`°sÊ tD»p²ç—>X^Ö¾ áúÆ0uFJÒÞeK“ZjP4¨è"b¬9Ný³x¬ [ :zB`V*ò°¾vìz‡¬Ÿ4_]¿•|1í}íüüí®ç"4ömía'þy$N½Âƒé_ZÜãŽ_<«u©Ï´Î<å¾þ½´v2ª¼×‹‡Ž2é.]JÒsb_ôô‡ÚI$3oÖ»DOï7NÞ•Ãr+pI†ZÎ B°J¼2Ø.Fl!ØØaùò2G_Õ{vºœÎ-}„Hx}Y¶UoãáãZœL¢OÏL*_Ì:ïå«d šRÿËðÿÿ'œÑH8õ„ã<€Ö¸· endstream endobj 516 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-36 -251 1103 750] /FontName/JSDTYV+CMTI12 /ItalicAngle -14.04 /StemV 63 /FontFile 515 0 R /Flags 68 >> endobj 515 0 obj << /Filter[/FlateDecode] /Length1 723 /Length2 1650 /Length3 533 /Length 2184 >> stream xÚí’{8TëÇsK ¸±Wm×D³Ü¡fF„L®MØ.cf«æÂ˜a\rÉ]D¥l…RŠHQ’k»ÜRÚ5† [¨ÈõA=©éLÚýœöùç<ç¿óœõþ³~ßß÷ý¾Ÿ÷·–Öw,…Ù1lÐDxgÐ Q--< "±a&ÖĆÐhi X-#2C›#ZžÉ‚©Ál@¯÷Õe`é &“€3‰ Ñ…!d pg’aˆiX pûº% pƒÂ V8D1D @ Àd6QabÇW(F0ÿ&S8!ß[á+LÈè 9õ!%…É E(±ƒÀž Yþc¬Cõc¸‡F#è_ãWõ·>‰Ó"ÿt0é!6Äœ™ˆÅøÑJ„¾Á9C˜Cÿ±ëÀ&Ñ`2–A¥A€hbˆ2ù¦Ãav0¢¸Àlr0D¢…A«:Ä üH"œÞ*ÇGw[¯ýú~Ùo]Ì`{D†@ê/ûj þU §Ä‚¹€Ê……FáúþæûÃi»d&fPw6‰A!±(ÿþN…Ã1¹ÑÆf€‘)€ Ê07EþW£'å@¶€) …²0²\UÉ b°Wÿá¿×A°pHąȈ³J°ˆÿvuý¥€Å»O·'^z`ii#¢#Y+ýSÉa]GÁB‘’¼>VSY;Þâýn÷h[®ý.û ë—ýV$Í«’ÕôK®œ—2ã¾ÜtK¨¿U$8a"…ñƒ‚Ê{Œ̦ÇÝX®è‘mV Ï6r9ÚÖ‡šÏ;5-¥ÊÎTÌ‹7b¼Ãƒä^Ê_»ìxH.ZJîBÚÑÌÖF‰ïa9mé§šG‹(ÏÅtÔ;•÷¡Òߎ6º,Ô»¤¥ö¨·2<÷÷'‰~hñZN°’ èê÷ÛÔ"=tJËkŒ1,éw~u¯¦£MõàÎ+£  QÓàõÞØ½2,}›­ÎJµÍNá‚ s½ê]o\%'å¦Iãî¶p.Þ¥Žçú|R•èʴɨ‹¯XóÇûì–u¾˜¤*‹>ÞÒd¼@l”6܈m¥+vy&Ù?¤ó9o<Åè­äê]‡ಥ²¬ +(IžÇôŒ˜ÏØ¥è‰7½ž úƹ1z(÷a%’–^j†ŽœóR^ümþʆIgdb¸|‘áwùÔâlëoûáÛˈڵÃ6)HgìQ™£ßcIàíÂwÌ l‰z6Òâ’mï¸DÏ,q·¡m÷Ãæ±\›á„›¢Jײ Ön›ÂÔU=ÓŸ³Ï)ÚšÎÜ}ˆ‹çÆmÿ½7Ï1Òˆ´ëá{¸!Jøf²Î ùø¶àLå7’J<[)~ôíì®Î³-ñºå7–r?ÔbÇ| ¼ŽÇמ&Ï̉Ùykj•ï;ª70ä€]1öùyJÑuÝ,ºN—ãkî>™5l9Do¾Õµg¯Âû’±oNûi~ê@þ2C0>IÚŠy yC/¯LÛnÊ ÚÐ.¸œ =±!ߣ05ïíõ"W©\œ{Y­mmï±£I{¥²q¢þ¾<_tøýõ©˜Më3‹¶¹•“U±j‚ê‹×¼¦ç1)‹“ë §~›žw¨ˆôÌ+Ò®Äzÿ¢wo˜§ï¿–;˜bmÍpê©‘)…ô†-=óÊû ܧc•‰˜ àÈyÙÎ ºÆl²‡Î虨H:rqÆDJí‘㬶UØ©7»Ò?üØ®îs?^âž697 ‘ó¤BY-#ìM“‚ú0ùÑ"¼y§f;àL©ËÁøLñ4)A'ë-È c‰îÝ¥×Õ‘_v'÷@ÚíX™šœ> Šî)¾-÷4b_Çkø¤˜VOsaçžb®UoG ,‰5=¹âò±\ yÂêV¯RÀóm.-üžï(S¶HK‘¯²ºkâgÜ¿6ðˆ,\н-áÔ žÞ\ ÷ ÷• ‹Û´€eO8‰e|ô/¬~’§Ùš/£2&“Ç(%Më €×gŽvÕäÔµ‹V– ±zi¸DÛ/<NŽrZÎûÆûOâ3’"ûÃdo%9¬èfeh ÚÈ^Pµä¿ˆ£¶¥] ·©é*ËyKB_ÍU°i¬D2·¬“a êcš1µƒ¦'³X‰‘¿ê¿LÐUÞ€{š¦Ÿ—!>’Òð*·•¨ËkoëŽ((U‚-Çqãn GÔe6ê8 ¾î&R•+v ^¨J¡£ ÅlÖ.×>²Hl–Ø}Ë̪ŽÎ”µê¸Hq½ÚÔq~\”ôÞFØL®“KDPJ3ü¼” 𕆙ƒ>Å®Ÿ3µ:$TÜ%¼ïS㦒»äýžFïI^Ók-$‡ìSÇ9]wj¥Þ«Ÿ¶È9Ÿ¿cÑ–G`è6;Õ¦£þËñÿ€ÿ‰2 "±ØL:‰uøtœiy endstream endobj 526 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-251 -250 1009 969] /FontName/BFJGTU+CMR10 /ItalicAngle 0 /StemV 69 /FontFile 525 0 R /Flags 4 >> endobj 525 0 obj << /Filter[/FlateDecode] /Length1 720 /Length2 17184 /Length3 533 /Length 17795 >> stream xÚ”·S”.ÍÖ­[¶íz˶mÛ¶mβ9K³l[³lÛ¶m[ç[kŸvÖÞ7»e¶l1Æè9âÉžqAF¤¨B'dê`l&î`ïJÇDÏÄ ‘Sfb0Ñ32 щ8›¹Z9Ø‹¹šq˜¸¸˜âfÆÿ þ¹¹ÙX¹Ù˜a`È"Ž^ÎV–®Jª©8BvfÎV&Fö9#WK3»š˜ÙTL¬Ì\½è![[€ò¿^q(›¹˜9»›™ÒÃÀ01L­L\ÆfVö0 ÿ¢’²7wpü'mêæø?%w3g—¸”ÿ&¥üÃiê`oë053‡awøg>³hþ¯Áþ\ÿÝ\ÜÍÖVÞÈî_íÿåÕÿV6²³²õúvŽn®fÎ9S3gûÿ–j˜ý‡MÎÌÔÊÍî¿«R®F¶V&Bö¶fÆÿ¤¬\Ä­<ÍL­\M,æF¶.fÿΛٛþ7Ä?ÎýAX\ZBUæ?¿õ?EE#+{WU/ÇÿÕö_êÇLÿ_ü=ÎVžÆüeúGøÏõ?#½ÿšLÌÞÄÁÔÊÞ âjdojälú¿ÿ;”°°ƒç/:f6&À?Ö##€‹Ë÷ÿ¯T³·rr3“°122rp±ü;kâæìlfïúï•ðÏÿOlnõ?ffžf&0*Jr”—”댕ä”A Ÿ¥A¼jß¶|ë¿ZS÷|ê(žF6šl`|È>ÙPš Nª>~&ý¥9é‚Ò'ã|yÏ¥Ö»ÆC¼oÕaå_YëÖÒY?³aå Èm3­êýÉq¼Ú Ý¯š¾„®áYÌòJŸ)#ZHÑW ÚâJkM”Ò„‰ƒÇûš§Dí6&ÖÐ72"Bä=em^8Ó@×Ä`áˆÜ¬] Ä|üŒûæ­ ºXAöÍ·?yô}£btn¿í¶g]vª¥ ±6÷3hâ¬h¨îA¸}Ì·¯ê¢Ý½JY°ù+•žÊ­Ñ#^ËÎøwÆÑÑÿjråJzëaÒnߎí”v¡Ù^è>B×H@@™Š*ôËзñW¶zŠ÷¬,ìÊÇŒ…5Ö &køÝû[6Gßÿ*ÕZ]q-;YA43+_V~LÑ8¹0#é&é+½õ¢.q ïôø}·üXÃ6’±’o´Q/¨9këõG®ê=Kµ{©°‚¿¸žê;¥Û„R¤­¹3¡]'M¯É†xÜðÚj³J|šÎÒ¢49pˆÓæï² »½¨IT*†}¹©<Ó9F5Uü9Ë ðî(º½Ýi¥µœ`)꯷‡äÈï‚ý õê>Ðå·IÐŽ"¿¸E«¡·(}^ô.éiÁAàh¼_‚Õʺ*¦¦‚~¥ä_)ƒ*W-ëGµ_ EvIq»ù,&@ø!rW"$w×vŒÀÔçØu¤ÅÊLjà*º¡›äí ÐCf(Tîóiƒgð@¢ÆÇ=Ü ÆEª×IÛdÓªBHñý9Ùn£pûÖ!‚2kÛÜ׉8Cáo4ÁªÅúç~Ñ4E,DÌ/†8ñpV¿æ]¢Ïaj½kRŠ5o£jFF–u(#;~¥Àý\ëägŒ!N#‹üÚÛú¼í,¶€UåI-Å 'ŸíÒîjs°‡{¯`Jö)CÇFÇ£…{%pòHhæv?û«B5MNÖ‚<ñë-›ä’¦é2ꦵ¯°‘¸Úè_ÑbJè—è$Qþ·>ºwÞ–8ð2¯_Z¾‡¸„ˆÇtÒ+؃ÌÇÒÆ·‡Fx‚w›•IšŸý'@ú»úe)±Fš²ºüdüáƒÓ\h#@ÕcŸ8ŠC·ŒWƒF •V)p.Ldz,>;dÆÝɵ¡wôÒª‡ w§qä*õÒbÕó\n}t¼˜øk8‰î…¨ç•£R½IbÑ+Qˆ Þ<1!n&J+ÃsÙ$ªÚ§Qœ.ÜõÒe.Ò,yLV:ˆeŠõ~ÁáMáþ—fö íIüÒ‘V› KŒKÈ„e¦ ŒeOl:_ (jš_›5}-òÌ*çq…dYŽÝöÃû^~gwj8ˆ£šuʾ³vÌ]µø‡rR$ °jÍ0¢ª,ŸÔ;§Ñ“Œxa (z£}·Ò Cåyx1KÎ4)¤V¬Kž§ùMFMyÊ{b¥(/ÔGTüy»å™l?oßsJ4"¯_œBïÐøìK!óÉ›¥÷ i¨JÖ/3oªµÃš~˜ß ÜWû6‹#F]lFä¹Ã_Úf„?oD„±÷€t¹j;$íÄ%/Ùû e"‘tØâ‚¦Ôç4RÐ5F— õ̪7½<a.RðŒØ®…«¨òÓLŠˆ‡:Ï2µ_#"}Ô@_7_ p ôÛLÂù½W{Ùꦂ—†TºçSK2³û6٫b<“.˜{ÇUµe˜±ÈݸWË–XèK×±¤°>gõ 3µK`Dä›”ˆFšBö¢WŒì;¾“<"H'í•P â$s2Ôò^ £Ò é«É)~Â.ý™åÆšXWPõï/qí’V6R”vË‚îwŠ4 ï<”T¨WL¨ÁJxó‹!?­!™È»)V­\É#Œ‹y±Ã¾À¢VLUiö¬ ‘P¸ê9;LÂÍíë ^^·˜H8º¡9Qœ?oº\[þ^BG‹˜˜iZSå!óÐÜ­ª¼GCÐ\èVC§ÍÈq6fÈLp¥å§Œ]ØÝOeh…Fí£€âe¬|´ œžo‹mŽ+r?Q2üâ‚m¨Áj³øÝÁ€Ü‹—=0øÅÄ:T¸cã ëv™¦j>øâæ6F \Òã&ɱòvjy¿b?¸€M°ÆV5î²7‘)”Ø*ðÇ™rB>.‘;åzlˆÖØžÊ2{I¡ˆ¥Í‘œýcÕG/pðÞ#y®n\&óG©¤ìÔjƾ$Ï¿þæFuÆ&$Ñ-Õš]¬ƒÊÜð:cï¦Z@‡u¼—sm÷¤çäZ Ëv@º–燱†ÜÔEÔªº‰Íx˜¬C˜¦¤™x4…ߌëæì_¢ÎU8HòJÃl}s«Èý:¢Ô·øª”•^EžuQÔNtðÐ¥¹—­ÎLR¥Ç/íºÏ‡/¡i@9qØ)f&Ÿ£O~:{†¢mCµÐ#c%ݲ„Dt^ÍÞ¿žßº÷¤8»j]F¾¢à¥éóÕóIÄÂØ?KqÞàá& ’•1P¸ŒŸÝÅgw]ÿâ§h•iÈÝ—hÝKæ4#µcVÑ(g×ɤAÝ´œZ9”K_µ5%3«ÿä°£W’üëí#Úˆ‰ .Ç=–Õñd®}‼è"&3ò§^„Þ–[³£uâ†UÉst߆¼Ç_R[—gÁn–«Žõˆ½rÓœùBós|WŒ?´¡{u`цº`½ n1þ¬õÌt0a æPG‹^¾žè¯Ð:€«ò0¶õ©øÐL¶yÚްâìx¥ã@žˆ!7.K~N|Œ¦ ‚4¿¹4ÅV ¿N‡åÖ‹éÿÏýË ©|ÌͤMÔÙ­ïÁ:Ùvéñ’ÆÚAqekÑ=:b¯¤2¾£à¢i}8!Ö¤PEdƒ*$î’Œê“èï±þ =òœåõw²Š–×”lo–±ùü²§ÿN¸@½pžvÉb¦ê¤_Š8Öc•d [¤’B"HáAEq]Ãe‡¯cÌ…ä ‚<ìBµ—71¾)^ ´»¼ÛiîáiڸקÉ3¶ Â*Ðèã+-Dúœ|ä Òž„?1×UâÏKØè—ÀèDT®Æ®P®7›W<‘z›JÊ ó\®è{çr˜&ÄîúyÙ{5z9ï6Õö*Á*‹Ú¾+y'ìœìO=¼Ve@Ðc™®ŸEóÃ3>˜UJ ú2·}´¢.0,ÂÚêË0|Êut¸#Tžg*Ø¥õ*=ëCXDCŽyƽóêÏÆÀïm(¦Ýäǰh„™¸6px&F=¯ bà.nãk³ªI"ù‹Èçƒozu¸?¯áÀLúÓR2´Ýö$ü·/«Ð<ìô‡9—žŒóGšæ…k)êv|«©¶ŠÛá\3O_”‰ªÖ*™iþ„X¸ð¼Fð ôÕþ^îêÒ ,¯±½,Éu4Š© uî|^„;&î(³Ðlb!ˆÞMLC0šŽâiX¼°â(?L ÆVÈ3Éa]‡Å€[öÛ%¼Ìm=…>åÌ MÚ"‡—“½qq¸] ÉäAÔgX ç9œ){%:EíÃ6Ô3pÇŸ:È*‡2ï€M”;üÎñŠñ£áËä&ƒ/“a¬Šdþ­:¬¼^•¨¨èЍ¡…„{y«›¯­-½{©Ò‰›¦#ÿ/R¶œU°à€øÊè$OÓÓ‚5Ñé‹Uym¢¡Ñj^µø¨ƒšO^¯–ŒvÃ]|Ù•½1²$3¯îŠý#x5ßâü€ò­é¹ìTŒÊ2WÒZP´tZè,Þß­ðš—42ñ ž¯ŒIÁh̘U¯¼Ì/þ9Ê€r[ú®¨ànãS%Œ G æÙ Døš™_´?{ 58VOc|à´ŽÛô‡‚íÓEר¡Ìćô5N´Î¦_ÝB!céì†î$.ÈRêö_<ñõá§·.ýk›ä ? )ùbŸÖ@n€7 iª¥Íö:ó0d¡l5º6ê`¡“ô¼GG"Ó㦩à¢0„¯ROŽÕÇ`ä$:ÂT:¯r¸< (8ôN¸ÅøIÇé"±üvßSðljÇ e¦E§j §ô3-TPÀuŠp`þðv+¬¬¦\.låË”gÞÔÚ¨,|lâQq%øÌw¬ÂZÉx–»¨‘ä°lånû óªœ+´ˆ™ËÑûà}l î—P¿ô'8}ëú´¤ù¯ q,+S4Ïý…à,(Yj«HçPaãw*ñÌÚÆØr½‡š&\L̶ðõÙ„ì}2õˆ”,(HуÕ]s¨fVÛB؃ɲ atù›ºÝ<ªwºV:أテ0aç¾GOW‡vûΈQ-y§ÑêKv¶mÛ~-3ÑÓŸå4·µÕöÝ¦Ž†â½¬U&ÓnYtxÆÆuŠå¹àøñàÏ,#Ó<< ˜´ZÍû«% %…UŽaô%ñ?…žµï'¦©¼[¿?ïLFC)ûsjo²‰9y3Ž¥¬°Äƒ°`Ho»ÅeÁÖbb ùë¨váý«oÇòCîÄšØhj—°ÿ|sTŒßº«ºìÎ:ÚŒpõ_äñÚå ŸS¿À!•u §ùžŠÖLöZ`WîÏóë©H±¾xѪ¼Ã:¢”5'&UøÁ Èë4F‘¤\©;tT2K¡ tj¹XÝ¿{ç’µ=€^ ü]å4í’ðç8 µ£ÕŽ«Áàþ°ÏlFC?׌*;‡øÇ™øà`|ŸÇƒ|$²s–¦¼#WŒ4Ö}Ö3:ƒìþ{Ö!‚°‚‚6ýNÇ_01P_]+²ð}ª“Ût³ÍS¹vãÔQÒv“DbI5oÁ¶ôT¼#4=ÔŠSäû Ïý$†K+"eC‡)‡Š;)—öZUømÃñd‰m2T(ä¼,œ NÔ•‚{³Ï;QÜFwT/ØŒnØÛÝVk}(N!Î+Iàâ¹ç¤·5º÷LC55üóC˸nä°ÂŠ÷Á©×•`‚? g´Ù(†˜îiÞ¾[03`Lˆ áùRø¶'ùHÅÂÎ-FÏÒž#Ë¡ˆ‚s“ò¹ sÀÊ)ñ§Ó›;r¥•+‰‚§G8•ôÕ÷N4§{`Q“y­–%(«zkÌ[ ½EhV£4cQâè¹µÐÖùÛ‡½½ú­Î¨—izk©h10¦2Žtê^=½mãDz0"¬âzÙòbѨu¸ÀWêÉR6à3Ó}ÁvòìÜ!C”8’#O…$ŠŒÎ,r5¿ãµòü ÊC¨«ÀEªÝçŒ4i]¥½;w6ƒÈË}ŽÎ—T_ãûÑ¢²Ô^}YR0ž²0š’j=Srv{Ò²¸€¸‘é‚YùŒ,ÖßMDCdŒE7gïN Š'|A• „9ÐÅÏåV€á!<ÍR þc_ÃìªüçawXæþ|μv:.Zª´¥¹5^†>?±Â0Í©& ’}(î[¶’¾ûX]-%­X>GHÒ_c$pÜõ‚Œ1yF› Ð«èxÿ8-uý$Þdˆ¶TÀ!¸;°Ítã¤d5»ˆ&”©lC±]ð׆‚M.©'léUGµx°^kìIëøæ›&L/B‹±Vñô47 ­äHáèÝoÊøÑȸÀ;-ŒªQë<áÖ8¤fCá6Ð|% 'Z"9þ@l“¿&ðhúPQy埛M…ê3…ëFvžuéJGüá`UÓî U%ÚcÑä“Ãø qŽ ù¼ìfy Þ¹s¬öÝ/=à…íÄüúVq2ÐÎ"Ü &€5˜N"š)kÓà+B¤w® c¶T°iwÒpÎô“?÷½…#r„ù&5ÙÔw_¤¹h$“«[%—DìwqÙ¿á¹ïLX( ±§¾Ò´+ß«þz•mp,§J7)" Âßã¦â|²Œ´åÖ¯‚Ž¿§™B¨ðx. î[€ øª8­>3®#“.ôÍüžäg4×#iñ’ÿ^›ÊªC6ßMF€æš†%¬Â¤„d˜–N?½6V=>1‰} Å|ï‚ÐOÔÔ–ÐîõæÑ s>+ŸæŒàˆ„zö6Þ{+} š3ØÞÔbß*Å!_V„HÉ'–k,S[gÝÅ4Æ’õQ™ääÆÝ^;î§ìÉøœ7þÆÂuþ…iÖÌ)­ê²²7ºœ†$ê!J‹}ü/U~8‘Ã_.ˆ%@Ô¡ ÿÝh h RÚƒ¦vgXÛ3 šÄÅSo˜}7D‚«yÞËãáòàùôX½x[å{62›çÊvV)i󧱯«Z •Lœˆ4A.ÐuÉøØÄ9=ékÀs‹Ç{Á *9fRd¬I—fØ#VÐ0Zi§lÁÚ]MDvy´ã7ì]uyï4AúåxØÆ0ø[SF7_36÷>öqû Úx›µÕ£h,MñÕTy2`®tXwâ0‹Þ+¸^âF²l±Lxº0 Ò/s8O­ApЦö”÷R"ƽ ç- !9‰¤Søeø" SS¸ÌކhÇ‹IJ[èr»®âmã%=(”ÙlÜM?°ÌµQÜít¼nÒKVÿH”ŒNÜca“ññµOnt°uIPwiË÷'9êe6Ϲä„ ›±‡‚NõcjÑ^wÀ6Þ§B¾vÇÆÆ]fÏ ÇÃñÙ«å®"¬º·wò‡ü•È]³ê;ïí B`wcÅ ¤?Äô³:2);g˜>¯3¶$HÆ3yÈÒæ¦ó¨7»^%õ"Ú%Ê~\iCL â ì>Ïû*€ÿq=”lo Ôö$¨Ývºj¹Ðq#¹_ùÙ£òb’¹ äQ«é÷*èzìµAƒ)E€É÷[ôcfdvI龜ËÀ¯AØÃ•E!nö¢´˜Â2/aJ»§›.Áô™Yý¼V&qýý*…%ô¨™ æÀýÕ}i·Œcjðzãezé¼@t˜ˆÿéÒ›&|e=.[íN;¯ï#h…8,¾â$¢Ø‡DÅõÔ7ºé‡•}¼ë|P;>!þq#Ö1T‹¢´–'a—"U ¾YfÒ¿D,ŸãÛŒùÚ6­0',0Ï xÒ©Ó0­(U©ÈI/1@ñÚn®6ÅžiÌ'e\½¸>}ÏžUÅI)øëLînRiIKx¥ì{)õ»<Ò×òá"æ ¯ àbßè@E[±úP¶\íZéñ…‚@6#Ôä4ÇŒ<`Òü(3Y6«2”ÙFhX©ä>€¸`%Oznšw-üë"¡«fhÀ#Ñ£¶5uoH6è8M:9ûHëxgÑòR2ª+墲åuÄÖ†,]àHš(¡þˆ~µ{ž|mŠ„(ÇÚ(ºó$N¬ü×l[A²ãyÕ©9Äsz{}Kk§‘‰»Ÿ½ ë›ÞëŸõÜšÕsíÅÈØxe}îú™TÅç\Æ'–ˆñÞF݇ŽþŸðE³Í[M\ ’ xOHåâõ^ûK‚¿)õulce“ãÙƒ½Œ¦Œ©ã«¯q7k2fœÝh—‡ƒü2©EΛó‰y9êüã îÏJ×äŒa &Z‰m Æ¡üuÛÕEqT]mHÇ\ÔtÚÑ™ºÙ ëòe M8S…Äk_èi÷Û1,ËÈ,­hLvà}%`Á4Ç» 䉂úÅ¥©Gk½°>èzÊx6¸š«…ŒUùý=WA¥]Kr¦Æ®ÒíÇ…1c³yôWÒ.C”E³+Ê.ÐyŸŠA ¤· -ÊŸ¾z=wÜšCý@öXn_7‚È3Y¦ÀÎCEm_TÔýÕŸO¼$&#Óã^СöO÷,l™sTÆ]4Ÿ;Rãs,,¥ïq`díðpu qj®ë–À¬2W49ƒYky•)Nø uUvÅædÈ,Ð^q|eÌA¢=ÆI†±Œ@RØ_¿‹)]<&q.鉥e&ÑéŒèðƒÉÚEîÕ‰f:ÂÃG÷ó½fpLéá ON4H8míNïé*cD¢…\(ªVëÉ5¬ýO=“Ü„‰éå®\rÎ:7tÇàœÕ?_Åqù`û…Ê)²™¬VÚ+.€cßo£è E¬€Ì²“sRU„èŸuw°œš€úI‹ä±z,2\kÕ*„AႤˆ´Ü&9 /•Ñfª½”TT4Ø›dcHúMf¿Û`‡ÕÜŽö3³‰B½tŸñC‹´ö‚í/yÍ-—2^Vš 0ƒ V°|6ÉvÇßã1â놮žÍ½ËçÐôÜNžœæ4®í¸ã¬I¥¸Tï« ¨jzS1£¶Èx óŽîjÊájuMš—b7L²ÝŠïL«)#`‚o$²wšÄ}ÎIÙ–¼o“¡]åî·«HáŸ;¦§‚ç&/¡ª!„ù,+3wÄÅ f̶.Z¯gXÓT›C`µÉ¿_ænvAžóÖó lç+ŠÀ†|2„BŽ>à§xÌl±¦Œ­@ÀŸsÌ”€BòàFÐÈù©Ì—hûվī@vµÕE Â[!ùÄ&ðÆYs/»¿ê~/M.*‡k WÒ¹ç|Ó﨑…­A'û®¥eðw>8½,”QòIdî‡9ÍÅ’øV«Œ$RtžD;HîÊ(…+&çsq€©Ú‚"âˬH¢¶î ä袖¶ËüAþîmï— Úîïf°O÷ƒ@1O\+(H¢_²¢?½~‚2¾$™k›ÕÑ%ºúÙ†ˆÖºš_›`-Ì\ ½=â$®yÎÄÆ x‹Oï²#IE#ãH*h´4òTªÃbâvîGŽ(ƒ“•×»UI¥*лš¾𺖢Ï|5Áà?EÒË;‰ýèé’ÑÜÓŒ‚~CqJ[ZËùŽþjK©˜Ø¶-Q0†Só¾Ï»¹¹5v ÄDúÃàɳ:´lô«ÑîAÚi¡#†G(¸©©ñMÌ#z*bv•ËX}ÿ¶\Â5·<*]jÇÙ‹5ÓÐwçú” ^æÖAÉäÓx›¹vd6kIÙb{~4*ð 7’ ¼ØÑL¹³³A ˆHi‘T¶ô.z¸Ï‚wU`é³E¶–MÚLhÁ™Fj,|in,ܽØI’_”[žùmâh´àEø8›À䢦 _÷wÍàï†ÐGsݸ^œP"îD(TÌñ˜^èõ¥<ó5¸Ñi‰q^eì±å6Ø9Í_kvš –X‹ùP;áõ)¼•ü#ðé53´Î;Ôßc˜0ôQ¸úyke*}·›qµc­†dÓwû˜¬õíæ_>ÐÌÏ®<{Ódó © ÌNËŒßñ¢»30ÔâñVá/%R†Å1"ðçÆ¿€ãà0t¤ÓzÛã¤ìIô*U%.<»yjk‚·®A5ûÝQíêW8¦2Ð[(¤ÓS–¬Qå̓Oá¸h?U!ýÌ-òììÒAÐÌ4É¢|c$BÇ¢µŽ"ôù¶ ý°ð]µ•Ða¤*‚Ókg×Ú Â%Y[xIÿT!aèåÌ"InˆÃ ´¨ëÙr"n6ä®9_ÉD»7ÈX”I#@ØÞÈd±ÉÑåù¥]Ö°B)@nZ%%Ë5!Í®+?;¤eDÆ1$§¬¯ϼ`اq¤ m¸E-¸  “˜†‘þRk™xäé°\ÿsä>|i` òƒ¹EýP†Àÿ€éúÁ&/ˆ¬=n¥—ǶÉý> çH¹‰e[ÊA®V«ÚÛÛ®ÆÝ5YÌ­Ä-/¨U¼Ç’)Âg´KòóUD—¯ZH]– ?;v¦ Ö8Ú€ >µ³m=Ö´ ¡GB3€¡—¦»@ž©ñ±aSÈ…b#yb|ܺ³w"$øA¹¡n–×~I‚Ís"nýK4n8îFUÙ*Ãp3ya0K›”{ár“DPI§ö(®¢ê()BÒâ­×OÅ‚žÒN9ßÃG‚Ž7…¤àò˜{γ‹nõáNÈA¹üW2’Ä÷ðJÍ4øóZÞ4½Þ¤!¹½ß¶(ÿyg£Ö…¡Æ£ŠT¹G¡¤…ÆAQ•“=_ Ž^/Ïs„&¿¼r' ­xGô"Ú3 ì¡/Ý`O6u ‰Ž­kkrÛ‘ñÉnì7¦RxµeÙ1ƒÔÈ4õ¾I¡1=F”ééH7Á5Þ1Š¥ÅwvPí>å±®¾\ëïø¼v7`r|~|‰2#í § ;Zx2qÅÑĶ‚+B:%ØŠ°‰LœØ–ڙɢP¬'$ÖÚ㫎;Ù²;ÖÈYš-`qOÙ±ñ "W"…¼ÍÃØÁRaAkÜÇu«ß úèúôs«äôãÁüåžfïEl8íë~@<@&ÌÎLöwûzA)òø¯£8fÌÔ Jv_ö¾Š’t*orö &ŽÃµTµôD¼„7óyüô™Tn¦ÖžŽ)^œ½¼QG({(£ Ò»8Òjð *ÎÚP‚“QÐŒ×ÝIé%²†”šºzÉçºô3"&D: —¥»‘ôË¢†ÔJ©Ó}?¥aшg¶éâ% ¯åøv÷}5ùãÁ¥Ž‚‚•6ueÓ=bå½pn ‰Õ.lOhÇ7¦ì±÷‹•¤2µ¡OœÒƒxUCÖ5ó%¤ÔuÖiˆöӲ鴺L0ÖãÒ`3á|bÝªÊæÅݧW.ÔwÆÆt¾ÈÌ^aé¼N(ô‚Þ­Œ†&â·lÇI$¨Ê,bÃ(? Ÿp¼C¸ü?@™ É1$ÉæÕéÌÏHc çnvn–@O94z×Ù#êþy™Z0¸…ý™QrÌÜ~„‰Ûå5_dS™É`áiÙ3é|k)œ±.KÇc3Cú”CƒŽÔ+ ¬)µÃéè<^í™ä3º¿z®ÐKHh4YÒ­­;yŒˆÜß&,¶¼ïJ-Ê£¸ÙÉ EF˜OêQõ6ài»Çœ»G9‹ËZE§²íºéâØ…rü+ô[ä}Ð…ê´½t§!0ŧu{—ӈ̠zÔ,æDB…ŒùK¦vþ`ÔJÓx$ñÛ¶Þ×ÜŽ‡¼ÚhÉß®·ï$RÓzDç Ê0\VÙ“Xù?‹ÉÁÛ±¡ÕHÉu3tÕÛÚ¾áA» Dés/æ%b4ø†j à8ù‹ÁqËðj@º.ˆÎJ´–n9è Ã7-RëŸß®rz*ÌÅŒ~Hù†]Þ_úR>ì©îÞ›³°ÞÉ î°^C@L§“°õß¶ˆ½/gìÌ{} ß…ëDL ,À‚ÀD»ÏY$xz.§›L4ãüàËŒpc­ÂKe/CȪ¸¾6Ø•>!¼6ŽùùI‹N ÏRHþM˜#T‹žn킪Öê ÖõÎ'Çní§‡ôZ*µYÚF…#X\@Xpç ßcúº„@u³lg|¼ÕË®Ìêµ_ŸÍùq\ªqõsiįJRXh@~Z21LŠˆ~”Áó$ bžë€å¸lÎæv ÓõOÊSå"<ýe´ó”2¿`ˆa G¼àÊÞ_æ—0=¨Èˆt+ e€3éϭ“~F<8·ÍI#H¶ÛXÞïÏ@1H¯çSŠÈköºéÒw[k«£¼ñ+G¿À³Ù…è¼ >«+T/äx¢…–™ÍÇ• éë… Ÿ^Ø>…cWf.CÒz•:¬ [:‹ŒËŽ©ÑˆŽ±ye«’ÔÑÚvþÒØ`Ö8­ø8¤šhºê)*“‚¨ç_ã»·t*`V-ª°ÙÑX€£<^X®MX¢ÌSäÓLsáOÒ‚1>skêk(rXrð¢î¤ ÁUdYYc0  ЋN"šÞ)2È;ÉñaSÃ͉½ /jöæ1}&±GHë|!»—’Cv¿¾Éa ~Å}Ò9[·Ë5_Ý$gúœÎûÉ®Oƒ¯gÂ"<¯wP„}ûݵ+"µV:®~y [òô1ôë‘J"E :Jºz£<Ñ ŠVËçñ VÁ¤ðRAÌ=ÙÂ#%¢¨…üPIšÀ)l|*©,ÕÏÞ·]#ñŠrŒs“±ô9KªØì‰€"N]¡’‚/¯‹R ¶ˆS葺f¾­RÁmWËñ}ŸkŒ ãGvžýœ ~Øg t-–Úu^d¡Å‘÷Wmckä+¼J.ÝUñ1°˜77ÐÛd—ÒŸÑUÜFuTQ"I3ll„\¶“K‰äû¯úrÐKw(ÏÆ¾ã,SÈèué­Çeü™ýÈÏ:–>éãsÛD…§íâá zÖx4ÚL«6ÍQ üÃ:ò=ülÉ9ÞkxpŸet©{PÓÎÕå2ßtCóA#ŽM‹½M1UßÍ»- Ü9'ºw 0î[zݵ›9°ê@¹%͆»Ïø×Ù9ó·öX] 'ƙ˻jnÃñ-SÔ5Ì+º”wÆùª«L!³:Ç!#‡p¿äÐG9›¬Þ;««ÄõÆU#ÒÜ@1Å…HÁ—€*IºjÅ.ÉdùÒ(ÎG Ähkü_¿=odk4@f\š¿Jg(©¨aŒj‡\@˜x\ßí%¢n†wœ[[ó÷Š]›”R¥ÝןœRö€n§×™a=C Ó\bÞ%ôG¯—Np2ÙÙ<1¹Ÿ÷sï¼Ý Å(¯išÖdD= åDWÓo¥\RDN׃R©|¾¿y€Ù¯ $ß 4Ñ[ydA¹€ZÐ +Š2š#J6¡IV}ѽÖ´hûjº ^Z]Ïby0†¥u='~Ýê Þ¶\„äfþú”ŇÑÞjòý2N$ ‘$Ëýf턜H‚/MĪyg{ 6Ö"õøíWÄÆIµ‘pYž)  ù11„ÿŒ ˆj­jb: LvåÓt×QᙈODßÐëôçÈWã±B»ÅýbàIUÕ 'E.!ŽeZÖ³ù£¨Y[ðô´¼[Ö¸x»†ç|çyH‘Þ²o>_»!V#ÑZÔW2¡LgN¿ÕaÏ|^2UB†•{àÎdÝú)žÑC¯†bR@u˜?ç×|ºá+£&‹9XLzOÄ H…Aîѧ„0šçó*(êö®Tà#÷Þ=WXn#—pcTÛùÂÝQ«L·¬6PaÇ©vßš/Sš"`JÑçNºùH ™‚%ÎçSøfÖa±CÀ€Mì¶ÈKä«bREϧØhLxÓOr€¬#7ƒ7Cýý‚ìe¾U»,ôÆL¦k¤@ß̬q~#Î<«©à#¦˜ÔÊMa'PV”VOX«RŠù€ÎZÀë’…8Ê”á*;kOIu"ÃÈp†! ¯ûpL&ç÷h ýŠ}šnØýZÔ&L®Öõ¶oçîµm°Gix°šü[7ŸîÏ ]é4cž5^/K€uª 2€î[Q‘Î3åÊèvÓ€æˆoˆþlÆAŽÍMÌ›µ¥D:Tàõžø‚Î ®V²S7¯¼Öââç7´e•†¡H>Øù×€ ¥ì;J(l´„,FØ^éO¤€âdá°++\&p’·4¤•ˆüSC:¡ôâ³öØ¢x±«’Pk¤­ìNûõAÑWý1éœÅ¶Ì^¨éXösªÃnPæ ÛJ…–ˆ–·Òﺢ¢ŽUƒî¶í¦˜ÀÆfö¢‹³´ ÝÕTä7æ¬Ë&jqX×8dÉýwE e)Ê8ÖíÝr·Ò”%É·t†žšº~ßa·Ðßeë]ŒÊfŧpƬ§ZÁòvfd47ZZ$N–ê /òL‹iÝŽJŠKJЮöÜvhBÍU(1¼#u_¼B•™¾È>öÛa‰*H üä² ÎW‹€ât>Q>Ÿ îSDz›¼€€ò˜1Ï(eˆ ‚m:'dé‚$ĹAÏS&%CM»o^(°žKû`3ùª„¨Bô®LCGæXJZ£B TóɇrÓ’få­hmk LËÊ”gN›†%¼¥Ä©M ÛYu«¢LH>ET&vÔÔló[îóÕí/Y'I´!A÷ÂÆ´v ¨³‡”ëÑ4Y0:–‚¦‘À—­iäÌluyñˆœW'7.0“pŸ=µ'Ú[¼€sýzŽÛÈD{Že³#õ§ÇpÙvû¤ï¯S²Ð “ÊUÚ§«ôN¨U染ìµ9¼Ïvw[N™þíiÑ>’D@_w–í¿ê%-¹ÛçQ|F|ÝxpÆåSuY µ#SŠÛ÷ü–¹#ÎO–Ç#×â{ ¿)x]Ë£Àa\}ü»Š-v®œÇ˜PúiÎ,}h›>wY*E߯E½F•×¢ö:Ní3Q»út¡¥T$eè&kò›ÈnlªúOñE`>´ã1ÖíÊ]‰˜&“1^º(,NÛð3Œªï†Þé©­Ð|D_MD·Gá®q#Óo‰’=Ëæ{˜O:fOo 8ìY¤žÓQ1Pê!f{Ü£4<#?¬ŠÈðì·¸öÑnó#¸„ÎÖ`T¹ÈþQ'*4s_?oÁ¼»\=ãb«äÀñ,c›)ƒ¿õe1k|¦*Ȭ›È¨4TƒÔL÷/'Æå6£_‡¿ë¢”äïÖ£bÉ ™oÊdýð:ÅÊ«n½a#›(d¬µûIkëZh1f¬®ª–ì¼GBêÌ9¼,•æ»ß?‹“…‰vÀéÍô þNE‘°=Äá`Uݹ{ÔkÑiž°ø e[ ‡—$›â<[ u+<ºÿIk›ŠHjðØi0 …KèjBá£Q‚Ξ()à°\¼zè+ƒª%˜¨Ë°Ï»½6 ŸUAÙ£ú®óç?ó§yWÍ’«Þü)HÏÕÛD}Çä…šž¥ŒÝF–—Ì–í·_¦s‰ü…c@¡ËГð©ÇA‰¼%²‹‘[`NãÖÊ5`˜Þ½ý˜í^%S–XUsB&j®4W(}“êƒx¶<èú;8‡Ó"kê\—‹©öŽƒ†Z;ç›ñh¿8N 26n¶bçrɦ¢¹9ßhåðþ4Öíÿ,'3‰É‘ٕȯ헾#„ã‘©»k•ÖéQ…·}=PfîHÅ_/þtx%Èe&dšw¬•*£AQ1迚8ýå(Zòê¾ä{’ nLŠ-Ôì¾K©ftª’AKœC ´æ[V-qÑ6/÷~‡o£fåfÎÝ'­%ízúx‚ýŽ-.éq{¥Í„à K È¥ {¸1Y ö’/üÙǯÃ6ðx€>þí]$×x….âO¢nR¦p¨ºë¡ÐXö×7Yw7\(˜‡7“tRî²·0HöÓÅÏir$ÌÔ3˜Õ—¯ƒû›b¶P«´_ûð¨Às+ @¹¸~ÙB•ìp)bñ"²cKEîÊ„]¼>ÈFÁÔ:hõeä€àÛ ¦µÀ lN ªèt»àh3ùkfø+QEáþ«ƒ„©¾†Î°—67ÉO¾:Ä&³à¹0E<ºÒDh‡+ ïì(2Œ´ÃÙÇöV{ÒœHXx{"ôÖUÊU–[¯v´ƒê]$~àÆWbÉ4 vƒs8¶¨Ä2"«žÅÓWwcÎan;<šƒƒ`Yh¾y·¬ôQ¶€9?j@ž‹½6ÆŠ2-9ínw?·~©ÿœF€õŠï=TWGe*j~€42l*%PüX_V\4Èè‹vºá©'79Ñía 3-b¡WÛîœ)r£f °äŽb´awiA?ž,ëã$Pxø‰v±É­„x(¦Ì¨Á̆ÇG—ZÞªxæ£aPÂQ¡ô© ðÒi‚ɼZâ•e{¥ì¤KG¢[··3©>z’³¸,ÖCWÝÍAŸß³è~OT °×T¹Ó#‘è’"nÊÎ\ä×w± ¤>F7÷¥Õ_;(>˜ˆúÆRû;Aï“–a9ºMò6YìygŽŒQàü·¾ÙyÆ£ùùØY’ާ ~DËÉFôßbé7øvqÛ ×IJ“ÌkÇáõÇ{·hEEhÉ„œöb“7 ­¦§zÉ·,÷¿¨ÑÓZâÏ/òàƒ.<)ŸÕè2Û¡çr"ùAJ¤"t)Qöz*ef T(Â]£ªÝ«$Î¥÷½´FQ•¥è¯äxŒ“þÖà8ä® >»bË~N’òžë F ¢=¼Yä•Þ`A3ÍÏ=Ï-£¦ßiÚQ ÌböçdúdÂá(p¤Pù±Éç®1Ÿ(0Â%‡ö·.’Í2 ô ×$æ±lñÛ­åZÀ½/0f»d/‹â%I­a´ `8mÌŸ€:”?Ïn`b±A’~hU§‘q qÂy罯Ĕ‘FgU=µÛÐ7â*þ1"öa‚b—× oÛì`ã;Ñlà%ŠÀÿºÑ½[ÍÉñ_ö†G¯àt-ß'7§t§lÎÀç[µ9m¦+Ï{Äxyçæèí7zíýÓE ­=ÔJ¼<þ§ÊèPöºÒ—uœ°ý…UMD–|ˆ¶NP@™0 ÊÝKö°n‹N‰ºE­ -’çñ—¾K³ ßýºÑò$¥!aõaîz¢‰&0H̶Vs3ŠGI߈¼°¼EC·Øü!USBÝ›§ozKCÜP05Â“ÝØ¯n`Rù&ÓOJ&•³0´-á-¯Z™ÎYµw¢gH4óæʲ§ìR'gÁH7„CÆ‹YÉbŸ¿V šxÕUª{Óø7¾‚–DFqwÞ9|î¾È„$Eäà䚇Ú|õÊàoù–ä(ïxDŠ}WBúé’*~&3ö½æ3¡Aå=E¡ ͸ÄOë–'×¶¼‹dj–©ÒÂó­0lç ÛñþÏŸKÿ4Žñ»Ü™n¨ž¼ã€H’sŽ£äÑü›‰gNËê†U(Ðêõu RàZ {2”•~«mÒ|mÒ{sjæI~þÇ2púmÊë{°’ÒØ… ´ sqÿÔ¹ÌÊ]{íÙÐéÉ™m›÷Ù‡ý·_çWá(žÁvÖõMºÀù?Ÿ¯Ö_ÊM¹ä ÓØ7,7RTö#ŽA²n ˜ü^Ö3DÎ(µ&„ÛÆþøŸçÅæ.§›† {ʯç=â§å·Ö^tˆülÉè„öE;B˜ü|¹bùF¥Gã¢î¤ÉŒíTl{°³QÇÃ\­¶'T3éHª1ôcíó;Š5JÃ*³¯oJk<&¥Û ¦2u*sË :ÑïýºKÿe. ¤°7 ‰Ørº‘Û¬æ‘<+ã‡v´ë:ôxŽìwÕ“és¶¼â}xBmšFjGí±n]0“-µÍ7yÞŒ&±~QÂgj÷__±³wÚG(šREI"Q&³ 8¢±9™lžêÓK Þ˶áo8V…ÛWò4a)z^ºNŸ¥ÂƒÜ™(¬~¥¡v. }!vÀ_“„Ý>~òUõ>V÷ÒÑùv­ã§úäfô0=lào»ì`jUC·.PÜ8ñ„·Œ ÷-þÖÂØ ³éG &·ÐpªžÁ¥TXi7MEˆG´ö¢qHkOvЦmpÃï A¹ÊåVV6b-Q*ÕÚ9®é…VÝšŽ*D·cVÎR[ýÚþhûò÷ zF€„xò~àDíÑDÿðHÕƒÏ]ãú(ÁãÒñ“Ys»Oô”â ÚxNSÉ<Ä>Ô{Ó'Õça…OÒü9+&;Ògf< $Õ;÷D2n±Ì9:PÖ=”ä¶#³é~@¶ç²¢¿îNYÃí>Ïë`JŠtGÈAËüÕ„âX"USœäŽ “ÙðÌÐWðºb[`Ÿ9(ÚæÁ¯Ø$èh))ŽwÞ6+ÃÍ6©eO}< D¼ë zเ½£Nº.g;'˜]?æØŽªb'êºß–µELyMçB1yÚÇŒèA*Ï‘•07a–÷ž — Ù}ufYôÆŒÙ9 3·‰”¾cã§+ôKΉ§/s6QÛÛ=_ó³cÃóA φ‚¦êºü&ìþ½˜G!utíI=oüÿ´3ïÿL À½­u¨+*ùèc3w-ä"é!ÛBS;TÖV‰yŒ„±™œN3yÄ’˜Ö Ó ¡Ô±¦¼Ú£™ ÃÈ#ùÄäþˆûí>÷ý¾‘ÃaF’¤aþžÝø…`(cíã³•Š–›ZÿÔgLÙ±2຋ ³8 §FÊZÙµI~ögê1CZ–q£]ѩڑ"ªAsÛæ—6Z@øÄ\~ÇÌ¡6ùû¬L÷\þÛ®7Üb_â@˜xü9zZ¡×çËÎúx["^-±¶ ÕŽ:3¼ÃSb—9¡òZoåízS¯QVî$w8jùUutÿ¨1J:Ç‚ó¡yŸpÂ92Èmk2££J)Û[š5“FîÕÜ褕ïuKûÔ·X†c€½“¬ñõ-â¡l¢Ó‘¡aÆudŸ—ÇûUº´ õœòx°»~«ïƒ›×œoTgÜ ‹€¯µ>¡kh"«K|ݓۀ½—7”ÁØK˜–gîžsâÍÙç¶t÷~‡\ÄFµÏX©¯ÛÇ›‰<êʵrŠ VÙOaÖkoÉÐø‹vÝ-p—ñC J²Ÿ ¾â”$ú_Öê²Dç»I%®y çþR°n„/Œ@\‡# [ÝËw*ÉQäiaƒ3Òéw}°pñŒó^®7«Ûæ¹Tª…;¾#®:“Yn)í,Ü×ÉÅó“¸ "º”qÅJsÉØ úZnð‹à·Îç4ÏôJ &b9MlæLí`aÿzfõÈæªdˆëÛ}3Y?’orS£Î=Ë)Å8FY [ßz*MMÔd¿ª¬Yä¥M>nñ»«v¤ˆDˆB)0¿b ‘·£[ºÍ2–5h – ÿÁ—¨Ð%òf^eIrCJUýEÓ}ªXÈÀ’Ÿ­{»kˆ:¿Ejº åIÃàm^…{êŒ( i×üÅœî­MÚ©æÃÆ5bsk˜ÿ×SÞÒÙ‹5òùœ&ËH‡É¶àfþž-ŒÖ IÙìkÍÙãdsKÇßo7Îhqf×XéÃzo|µŸ|o@7Qq®£ƒ² ĨÈÜ})Ä+ʵ— 9ˆJ]ç£ì‡*.YœÍ²ýu¹ÉPF]©¢òé¿,Ïv/zL8_A`«…‹vYìŽu¢bӽŊAäÌ­Ué…ÝfáO¶ þ í`Œ³{§Ình¸õ‡/}yj@·ö"¯ÏN{ñó““õùÉ™|ЭU^ÆsiD— ¼(§ Û æõ»S¶ÍÆW> endobj 533 0 obj << /Filter[/FlateDecode] /Length1 716 /Length2 11835 /Length3 533 /Length 12391 >> stream xÚí·Stf_·î;ycÛ¶m;oT±TŶ]±­ŠmÛ¶ídÿ¿oíµwÛkí›ÓÎÝigΛÙ{æÓ³ÏÑFkƒœXI•^ØÌÞ(aoçBÏÌÀÌ•Ñbf030Á‘“‹:]¬ìíÄŒ]€<fnnf€°«€… ÀÌÁÃÊÆÃÎGµwðt²²°tP‰RÿKÅ ¶:Y™Ûä],¶ÿ˜˜ÛTíM­€.ž €° @å_¯8T€Î@'7 33ÀÌÊÔ`´°²ƒcü”´¹=€ó?Òf®ÿYr:9ÿàú‡“𥙽'À hǨ`ÿO7à?,ÿ±þ/TÿÕ\ÂÕÆFÁØö_öÿÔ«ÛZÙxþO…½­ƒ« Ð oot²û¯RMàÀ‰ØÛü·6Ò.Æ6V¦Âv6@Ó¤¬œ%¬<€fJV.¦–scgà¿ó@;³ÿŠðÏØþ À¨ ¯®*­Dû?éT•Œ­ì\Ô<þ—ï¿äÿŽ™ÿwüÏxœ¬<ºL LLÌÿÿ¹ÿóIÿ¿t·3µ7³²³¨ºÛ™;™ý¯Ä§±÷ð¦ggг°3˜™Y¹œìL¾ÿ§PÝÎÊÑ(-`gbbâäàþwÖÔÕÉ hçòïeðÏÿglnõÏ|€@ )\f†¨!í£ÑCÏ"‰æßÉ%%¸Î¢Ë4ö§<Ìé‘xH†eëÐàŸJ+ˆoçJQ©/TD‚au~ò¼q=Oýžž¸•˜4æãº{H°:Š1I‹ž¦pF¸K`zÈÑH†RF&ª4qÃg^cü “ ع¦Uá,'4jÁõ·»6L.]çÐÜœŠ¨ß½ÎètKþ"xË%o{Ø©S/ͶIrÛÕœO&ê&@UOKöÒKÏþdZÍ6“ÔÝLhQ£J¹¦@¯¢(C)£Â:läºðž_‹=U'¼M ºi¥gEÞcAp›ôXàµúÂ"!¯U³š€søÓêëˆCCÇÖ7nyOj‹¼0^;ÿ(þôÐÅC9ÕnÚv–`Ý$3çF)ÖNPþ—ƒá#ËïoòòöèBôXÙlH²¥ñ߿ȼ™T&ôÍïo;^Ь%δ¼Wº˜ÈÝT¦vØM".·W¨xuæð"ѪÈVÒRáFò÷ÔøöbsŽˆ§"N™^â@ñLaÌGÃŒŒ,WOISÎñÖâü° ¸Ãàùò í_”.( ¦¥1¬¥§¥`:ýDÄÇüƒ´¬¼ñÑð¨ƒRÎ…q$ô¸æ;8¨]¶taɱ½àqèv‡°7€ŠT ƒ+P»K%T}Ž>â®X€™‹ˆ˜,Ú ‹axfl¾::J¦ø+à™¿_ÚÞvgS ;›ÐOºˆÊ|8›Ó%©ëÛOL¥£ðƒöÝÉóšë-so˰àð‹Oa\ÔñÃ{n(¨8UK^æÁ QÐV½ùòÓwJak=·mN«.ã#0œg>Ÿ`=ìÀêƒàb‘PW°ê“P@)^Š{ëpq®Y0ð¤$™‹õzOš†‰Y‘e¯3Ã5–¦³ô‡öÕKÈ-7äÕõ~…T‰“ãH’Ró¸(à’‡> Ujr~sšðy LËaˆ­ë8oÔTÕ•°Ùë@TãüÐ &'“EØ¥]Éæ¡Õ7œ›’^frÁ?÷¥}B‡NùD0Kå횘;ç_;Xšò.ꆇ4±,ýʆ;?¨ã—m›ŸJSQ០b³Ž`ÔÛ_­}nE%«ýî>ZÆòîÇŠ5J~½ÄŠ‚¼-ƒj ¯ì|®3—6±¯+ÚCà"6Á!bZŠJ$Cæÿ}Š‘* °Œ5çþEÿ@œÄ: ":S¶Ž…íO«×\Ÿãñ}½´èOÔ{;æO«Ä™uz8ã“Ê­:¥HLSù {Ç-7:‰Ü_x]„Õ‹1íK§/9æ*OåÑåÓ4ºi?Ou¹÷-DîB{"-+À5s Š e)%wŒÜ´ˆŸV Àï1_Å=Þ´ûR² ô¬ÎŠ“Çʈ™½Ý]F ¸µÕ,3M±„2òäkÅ2ßLò¸fde¡‡ü¬¯I•Éò]ØÞ%Õs=~Jˆ“®Ë&Ó­5­t¯+žI ›)J)ž¿gîÖ&ÞQál°±¾D)Ã˳мÓóÚg¦läy½Ó’_x;"” iáß/j]+Ÿ|LîÄ8'=ú˜& +A…ì'?üH/Û² ŠCGÙìJ '?œ‡܆ç.«\ `où3¢-;¾‰òÜÿ,]/cÀáÆ·2Žcabºëv!cÒ ý­Ü^¦Ï°?UÊ!?к¸öQxsµ‡Â(ƒÕ‹årŒo±ÎÂî  vÕ§;4®¡€ u¥šq»üwApsß㢧¢0K·üü´‡k,ä”xmÌçá)r7b:å½Ì޾SºB÷’ï½µI>î\ű¹ Äáƒÿ5ÖúiÁ¼ŸüCz_Ä»,äÓŽ4Ò7\²á…odçÚ¶´žiµbÚ•ûÜá"z‰q,ö-~g4ý«Áe%x¾ÚéÅ!0-Oê˜Ï^Kü,cÆÞV6¨§¼}•:¯8uÐãµNŠ„EJ-+þ<9»ËQõ¥ƒóWê¶HöÎnoÔ†„#gGëˆ .¦L”¥°x.œÈ §Y݃‹þ Èö”x1½²q€Ü¦ú"Ax?Y ‹œØW=Yôô<ªlŽÞÓ)6Êwfò07ÁCÅJ„1q>ÐP E²³\d ]¥éí‹íºK™¨“ø|ËÎÒ{-HŠ(UŠÝÐfn3ï¬ÐlÏhÕ9bukâDÌ•¿Åk‘ÌÏþá¥NÒó‡ƒõ4çþÝp7úkby³(0»è©9¬bëx=šÀ¶A%äìË|ÔV›J:ˆ0<úÓI²é`ÅòßßgîCQ$eÁÀâK¢g¢ð¤×ò$²VÛÞ] –—™Ï½:Ð5FMõ„¸ÇÁõ}¿‘ü.‡;J]ø:³¯ZÓÉc’ø$öŠr^@a-¤©c Z8µ&¬ÛÚ4Eúú#Á’ZU4øÇoZˆDÇ0A´0à{äNç¥ûg€Ybà÷Ö0jåT¶=ÂSøD;ï@ºoûãQhŽ>[…£Z̦¾"í‡sNþ„‘7àò¦ø|*ÒX­ÜDÙ]F–+.:S– Ò"Ä¡ÊDæöÌ<%eƒm zaò÷jak+Ù‰"éÓ—Åž:sã/ç™B<Ì‹Ç"éeê!7]á´CÛ”NÁb_ ñG) 6 ¶¾}&´­!¬ýyU”á—ý²¥"Þ„®+¿×Œ¹ÜX·£©€å"c›^~˜Q• †z%ƒäå:iÕýZÐ3ö'ïæ­Ôs½Z¹ŒÓžEwyYèS‡!áóÈ€´fmt~s®ØeϘ ·{ 64|ø;MR›¸ ÉvúЫ€Wò|>“£ÊìN ÑËF¶TÇyt½cÔ#´  ƒRàcûóØZ¨&ÈHÅÊuñ‡+e*2ï*;>ùO¹ªÝ’Ïñ2U~›wÚ§8[F8¤ÒV8†ô_ºR"Ï3ÿh`‚å§—:ºß¬j‘øy猇å@½ÑAõÖ.$ÀOß4z7Pª; VÝë«=h“ü»e+­X¿~ë#1G "{›„÷J¨>~OØ©[æí™W¢¥’õ­ŸuÉ@V)ï(’Ïæz²ÃOjKàÛ£ÅÛ·æ}#±S'06¶döÍì@š\ìsXÝù!œE-utý#¤†»ÅO*ªýùV­£Ó±ýa²dŸ”™Æó3j7Â=®Ç »ò%AMÆxc¦, y*¸¬xÏþ£Ú|ÐðŽÉ,-è÷#ß|[­½.A“ g˜‹þ¼7؉4˜Ç öÌ(ß͵”9L‡n©©0©©;óbíÄM\ázî§ÕúMËèßÝJ~¤Õ]®«çÚ rfðųËOs1Ï^õäñx\ãOðß„YpN›ÓaÐ)õlJi³ÕgÓcÙ4 ¿>SùYm¬íÛ¢ò¤º1ëuò‰Eùü|†_¼úø½i6T$Ô(ív™²ö…Á±¤!*Û€)žçÐAàBìýù¼up@i{«d×!U¨,º ¨Óà cBéX•ÔÿI"iX™$-‘Ð~„›>Û­’_yÝÖ†?–;bðÆr?Fg»÷µÚÁ×çKE¡GŠù|N•¥ÓTY68 yB ë`ÚÚøuè¾ì÷^8…˜qùÀ2.Zg]VЙ½ÊG‚bàx#s:0ÜO(™sÊAHúD’Å F&r™ 6„ûÝwß)&ÞûàæCR½ç1âciñŒF£…40ì¯í}Âç›.|»V[©‹0º¦õº*ëE«øØCû¥q³öÄfædçäÏÓ/â í¤H…I…-+œúÝáOŠ:¾IÇxFºN I«ò`Öw5$E–3´õ1-©ZúÒ¢{GÚ :ú)MÞåë€oÿ•¥6ÆÓ¹NÇq6†âˆ´iã¡ñ4òŒ—îîÅ ßø¾–§ùUŠ/yhcA¿ƒñHøý°ø5¡°`9n+¡ùC·ÔRpMf¨LÌÌ %iÄða¢¢ö'µø»šp”.,sRàøœ#|$Sr^¡½W70#Ö–ª~É? ¼²aÛLhª È<Ý‹©óz;*¾˜üš£`tV'ÅÔ«„÷m;AòóÓ—ÝýXœÝÈ•’þÈ,̆z–êlDä}𒸈îùXu!È v´F)`Û* «øãág_²äŠÊ`‘ |"Ñó–‡=Û¦þÏyD1dÑ™i©ZÈÖŠvðIÀµ™Æ>0PÃeôËÓ3ªY7®¯ùëbàGqKj·t²þP¡zªl4HÕ&<|жHLN¤”¾uÂý”ýfÈt²åZ¦p²U'ii¸—˜x邯tFæ÷xB†–=ž ¥®»ÇßøqŒó‹ªžŒ—”‹ùÖ¥D¶8ó.(B´Ÿ3°Xŧ* q‹BÏB8­eôf‘ ¥‹óx*ì@!g4O ãêo›<è<"+ à|ëÒBë ÓÂAW=YÆ/Q×CÏa‰Ìæn‚q%³ñæñ9ˆ™«>¾ëdBÅﺤgúšNmd» ìBŸ“cUe­± y(åÓZ]o¯6ª„â7ss3™9„¥¹îŸÏ¬ƒ7>;þ“)+b|5¦"Éíþ̓žù}ŸÓe1áÒø:~ÎÌX **î `1gìŽáñê”\µ„Æ ëš|™œq#µI¨µÚuš7jüHcÁîƒÄÉñ¾É6×ÒÆRBóWmè~vI ©]*»š• Ûrô™0E®Ü8s%3hðö°¤²¾Ù•©À‰F·6Ûém¤ –ü89ÑGO>zÖžÙ¢h³rŠÙtOé]"Òâ ˜&'0kϾø¾¹Ý„2&BãWçÂÜB @ÓbéÐôÊ£ŸùûtžÑœ×)ÐX0-°ç¥Kí¶jd¦ðÁªd<ãØ¿`rvÇmç§v-ƒtú‡ã =Œ†òîËž΀b®d@òxÞ:&j1µG€ãÞQ¶!ÿŠ!&˜nÝ|¾QGì$äµV„(µ|5<^†21+ÅõeC%q+¼áéž Ó/!8ï×úò,ÜÆô"rOã{lp¹|«+m Žàfƃ«<˸ß5E¥Ï·¨\”èÑ–r·ÆÜðžÃli?;Fº‹5.ôç%U3Ó¢Kb·¸|x…¡Éˆ{Hxé‘ú¸¥ûq…ÑU”º)á$z¡Y`­Ÿ° »š¸®FfõÏG˲+œ<…¨­o=9µëU"ó³Vû›¾à.â7¨„¡ƒÃÒ^[JÌ":y矈_é¬-~‚èså#kz6^œ™!ð óEEJoý.\¼ª-”ÇÎ4=Ã~¶‘£T¼è ‘¹”bͪ0|Øv±BR§bàºØ]Úy'_Çx;Øî¢ïƒ×vpϬ‹e¶ºr6þ$aÓÞÖš¯QYÇyÑ¡ ©Ö¼òºhÑ"¿ÿ™³þ§ÎgÂS$mX= bX)Ö.áè Ñêä3 `pF+EG…t@Sè>4Êy“Á{ìý]¬ÑàäÍ—-Oám¡¬ ަ½Ô#SmÎáïÂõ‚Ä3ï´’Å v¹ôìÅ$ÃüpçÝoºX3<0¢Ò5å]{Þù|‘5OŽâTöêÀQÞœU~øM$?«b‰½ÏK_õÝfô’µX±?߀žÇ]úñml)çƲ âyf†š Ð$}yv_méóÂéŽÙ¼r7ÝM4&0¬NGŽEwK3î_”Ôc2'é5p·(í 1T¶ò¸Œ,À²{2ÛôÐ( q+ÇsX^[ŒéV‘‡ Ž’|PŠûÃv¾°Åç\hïÙgÄBèöyàF¦¼¡ÿã]ÎaÂÉVÍýf²~Ìo×%ÿyŽýè*A8‰êµ.:þ +HhÿG=ʯ]k/ 6>éð.¯l—Ò‘zç¹´Gh˜‹¶…· N‚<èÔøE¸ róÜÍ/l¡,n™Üþ<˜šNAyXŒå„½·ÏKDº›<¨ªÍÊ*KkÇ~Çz&u-ÿs¸rï»@qê+âÔ8þÄhðEŽ˜üÍQý%%ýK[º~».æüÜÊ:›$k’™‘â*†óH—šÌ3ÏôÔ‹È…Á? Äío^;ràÈ¡ú×¾.™ÂPÜÐÄ^ÌÀŠ@rö/~%¸Ç®ýtb¨åtÞëhéå±j±„ì½Ôʼ[Ÿgßáê߿߉ÚyÉî„À&…ª$>*$~9À-|qè i°O,ôz¤ÄÕxSÃ$]³£Ï·×ô¥¶Ê„Pªo=ªõ Ví’>:Òãîr‰¾C(˜ÛY°X¥Ûg©'vfÏÂù¯ÿ¢ÃU_ª¹DOÉvF¦<2ž¯ï‹–ì_Î~|l‚üu’7éh€Së%¯ÇYØOK×PhϰkäÓ«ÄjX;œ9ór4mÌcÏd×CF lîýóéç_Ô¶ý•m¿‰ºõ˺¡øj9Ü_Ó´–QZ\g>QLŽ¿9çÈÞg6 £;mòkZ nçc‡ –°½6qg$•œÜ†.wý½hŠ£e¸e²¡kÇ Ÿ‘ù®'ke±PQÜAxT¾—zÛeK.2l³–cÑC82ùî>ø’Icv‰J`Ñw–~Þ´”ÈÕ«1 TÜÔS<¯%a-ŸÓ8˜7h)’úS…ÞêVÌ™÷µi‡ åR @å4w<^Åvâ7§krþæãì&q`ëÒÏ¢$»8Zt¾øÆóvЗ•ãAh®ÉI—¼1(Ôÿ²§DÄ)››§×ô° 8nÂD"Z;éL½T÷8¦ãOŸvä_Ïø±Z²p:ò› QBµ£2?9p±>*¡çÂJÿ‡çG;R‚í—Õ¯¼Q7N0.Sv;2÷ÊÒ44ŶÃVßȳ§–—d$Oüpn¿§ÊØmxÄüêžÖ.{Hpn—‰.­ƒÃµû®“Ä_¡‰-×%¾7wø,m‹½ VEWÆwÛ÷PßEk!²Ò1V‡Û }7á‘Ò šíëð ^Æ‚ð`Œzwg‹öÐ0L,+Û5ß´OaE–‘˜½ ¨qëÒUCÈÜÈq£[Æ_N2¤ûÞØùž¬MÊ ˆî\@{„ mtÝ/óìù Ùëî} ˜I—¬:y:ÂSËž“9ÙËoHm¼Œþ?¢A¸«^Ì7°ì®Uáý=!Eê¢wI—RçLZiψ?פ6é1[jÏ“$õZ.'hÚ$Uq!3ºVV»s%‚ûÍP%Aà©ðƒŒo½tlBQ–Gb¥õòTÙÌóï8„=7l ¯˜¬÷ˆ$çÔÚÃÒo?|pQõ—9wœ/ÇWJ`KšIj¹xô6àU#¤ä3L)ržA@OÀsaYNCÛñGJ!7ƒ©AA¾¸h^w>6º«_dý&~ T·¬jWÂŒ€µ§àM>…ÍkLhx›º-­ &ù%hpTÚê)èŸùMj÷£úxmßóÈQmϺ ìüyòÕ ó°`w=)ÅjÐdc!î¦a2è Nô¾Ýާ¬ãÎúlJ7O¼(4Î(Í1³“û±qÕ¼Íä‚Tõæ\(pà­º­„ö¬¼önK[ŽökSÔ L‰¤´øÙˆYÿd%§ 6$0ÓYX”Ì5ƒ÷€Æî8©Zm>v°š°Klò¢ä1Ì{¾·ñô  V‘sÖØYãÅE…Šú!ìP?Yî ™ÕuK ;Êi^Ö`.!r¡l+9ÆÕiˆóù6ÞoBÿâ¸:»0Ì[»P à(x= Ç—:6†Si±©wUÌÎ[ÑåÛ9ðnUPf‘Š|4 ‚PaŸûpùÕ>FZ´ÅQÅ:OÎÿiöƒ{aDbx¬-«ª °®&AÍ©ÌmJ Z‚%5þðpÍ$Žù}½W=GtõÀUliŒ»r;ó£Zßx¨d³}¡C?¥½XpQþìÕΨñ0TDÝAYÇÞ&(ÉÙÎp«Ê³êý¨ýÒ×ôƒóàmúóÈ/Õ²²9ñKÖsÒ•T«.üÙlâp£<)%„óW_ISsÅÖÞù\Ù‹9¹nýƒD,ó— ö­âÞîWFüÏ©\*‚¶Ôuâ2ˆW(–CÒÔZéáð%}µŒÐ‡•—WåÞÓev^aÝx±e|¨M¤20²šÏ!ä×ÁמvÑùFÌŽE™@træ •HgÁ¼pKn3'ÂË;hï‡Ì½ÇT[Ci’«³4k¹X°qïÔ7]¶¡ÐÞÖ¶È㪠¿ÔÊANïÏltüü¬]ðé7cbk²Vå+ß”…Ç;S„…&5P„o}6PN+ÍŸB#òÑ«,Ìs1m„2VwgA‘ŰœÒÝL9E}Ó|‹Í¥4]zƒÈŽ<®ƒGŠÌv€÷?mo+æ®ÞÖhçοU®ì £öãï$]’å/˦M¨Q˜7Û2"ÌF×°ô ×à”÷B?0z"‚â}\ÛÛm›p>*èøl˜­+²ÝCïÄù¸ƒÈ-— æMTûsKqG¾&~•ˆª¿ÀNYáĵ‹ zÍ¿CÖz@K³Þéw¥×ýâɈ(HXP¸îõt#Vs—¡óRôºhßÏ·òú³í•öøý/Ôß宂1 9HêÑrôðÎ ]îGR8ÍIc$Í鸅ݙ<.(¤ö[ÉγàAc’¡ç‰z6yö{ûOŒˆ}V»B­‰Ã.»ã¨©?¥¶@“ ¿ÏÙÉIØñ¡ÿj =ˆ€›ªêGZi5÷)‰X(”;Ò”'žÖ-ót¡9å6»iò íÿºc~ÐQ_¯yü䯗-±+x§RTÙ»%䫤¥\|5…-J‰€‹ý³QÁЉÙEóA´Sç¬bó9ÆgªÉ[øÄY‹YQ5]ƒ<ĨW*(š‹3g中òÄ‘¾H+Ò?Ps0äÊTåÜGùE©ã»–ÌëTBXfNºÃ¶/¬üùÈ/ŠÜÕvIÓ!ÝM»^È‚Êcã@·+ƒßè·Ô|Üdõ¢ÖDÁRO‡·m«Zkf†tÑË\a)?Hó› .ã+ée,·ˆ類#¤»ÜQ³²¨\Q âÓš•»“{6¶¬LGuW’Ì¿‚4sû®l´ð½ˆ Y§è–Î >£eZ7LwÛ$¦‡WÄ!V›ˆßǔڳb¬3ú›rØIe3hênQÜø Ú€Mõ1F\Ø¥² \^x+Š‹Ô–PT²Ïa#S. à­¤Ä¿‚»ŽvÊÙ¯ ¯¶`oiaeÉ|¥j_¿š(Юí!×þty3:>ì5W5´åp«.9!Ó «B×ÛøŸ0‹íµZÁÑ :šïZZ­‹›Œ‚'שëEUìçI£Fß·}€GSú%9¬çig(¥lSÂoŸÏ\ýÕ ©†¢mÊî[’ÿKIˆ¹0²¯¡1q+B†·~–³ì<’Iun }µÄ¢zÔfk[S/â ¯Â1!Åé3~ž0ûˆüÝel”¦hFIÖŲŠz0|’kêí÷=¡$óc€f'aåEõ£,6‡•mï[W-ìz1ÖàáAVÙÒ¦¯Úì Ì1¸ œ6_ÒB,€ÛŽeŸN?2”˜Õ¾å]”&isç}À Ycu›˜áPz%ÐPf1æð#û*¿µ ûé#¼¥•â¥>1\Zõ%¾TꕊýÀ,Á$Ízde†f¸×ÉÁéQ‚wÅNâŒ$O}"5ýyÿ4sd² a¿÷Íò¢wiö  û,gÁ„u» ÕúëV?°õ%ª„;ÇK‘5¼0ïºàÊ"‹¥$ÛÛa¹²ÌBsáèÎq&Óþ-ãiÄä‹ q9Ǫo´õ¶¸kt@jDš0I¾ò¹VŠé¦Óª¼íYÏc–ùÉ^V*C ,Û‰oó:à[É·ó.ž—OÐ.p’RFG©pÖSÜø ±©ï$xó2Ãû„«0uöço\ÜèY‹¢i µ(²q·Ðú`µ?›GpÞjbñÀáfàb' Ü\C=;¥ 1ò¾o>¨œçrXãežë-äL&JÝ1ຓ«„±¬­OíwŽ›Š.bî>”c2©°Z¸1@ÊR]€?ÚQ«… êùÇ}uîf•òÖëFK³a¡ü<«û‰líTÒÒúã«N‘ ó¾íY(2t[n à¥hDÔ¤&‡ÓÞJ5, CNúÄþÃ×4ÕGîk¦üðº"doï9*oyÄ@ñz÷¸æ!A-ä6¸æ":zaÆ©'ÝœµÏ¸ôÝf~šåTŽŠÃæŒÌñ1ãYíÇÐ-IÙbÙeÝsxglpDgTB?ÈCÈÃÐ>jBØ£¶ç*é„”\¸„Hj\D«æCÐe—:õM$+œøL²¢y¾ŠL±ä§¶á¡³Ä4Äê4&?-lóóþ·^sa]ŸÎJÆðúm>+<Äã»ûŽ qh2cA û.ªÛW0T¼ÃVä6&lÀ|¹„µž1ÁÊUkØIÑM@ 8* ÀN¥úÄ÷‹Áô&qV¦ ñKq„«»âòåC¶7K}6„<œe=Ý^jo®Ñ¯Ê•‘”.fvRóa/ÞÐèA†t!ñ3¹`ƒÓpúéá3Çç(´H¹V?_*VtÁÑ*¦ý÷í|S,˶P®™2š›g«,äkÚ/“¥n›{¿çßýS=tø ä"ðÈÍÏQܾX…ÜœLGÉ÷ÑÃR,¢mæRCÞÛKžßÑÑ~§©GXòÏÃC´ËÓv²q XòDΗ:oͯŒÿ®lù—©ÒKZ²wsêä !F#éëd “ÃÞ*Z2aìËbx`/íð²¿í8ƒ“¬…áêðc¨‰d(£­–BËI€@Ó="΢bô’¼E3‰¸53nÙ¢ŽJ3;æÓÏ‘….çwJÅnu¢£1*0ʬIWU¥]z…jHD~‘%ã@§ôV2¤„|0«Lh¹Yõ! ™—Æ•Zå-‰$@Ÿ6±±:Î.ù‹SA;Ƙ©n´ŒÚÁÈGýsFÁ‡›‘gœÞT9ž'Þ…H÷6-Ÿ3?k˜#šþnùX@Ô‘debûk/Ì´À%Ëo8{Ï£ÊÌ)W¡,Ô¦+CXƸJ!gâ•E%ÏÕï§´PyàŽˆ…UC¸¯*hšv~·=,ŠÓŸœP:ù2ò³0"2³ ȶۿ³N ÉÀ7v²§_a²¯ûnÜbs%beÞ̺GWྠ†Ì%ÑèÏx¹ùlf¯"ÕÍw¾Û`†Óý Òsü¶-Ôc´+Ɉ…½4†K´P6U»ŸOü+z6%\¶]žcìó*=ojÏkÇÓmèÄ`«t£y[7w?ÖJà´ä̱…ð†ïµR´s^¨g–Õ§÷j•¬Ot®¦]ùåCA‡ÁõƒgÈêy*ÏÈPû¬-ÀlÏ)Å{îO¤ ‡ëž ŸhÃ-×O¿UYH%4§bè ï³!±G†î!Ι5©.SNðßCäˆD‚ªmãQÖ¼h¹ö¯Ñþþ$¥O—ТÞCò”G£ž„¨ùY›—(Ù×"F?Ó‹Boír\‡WÚ¼Žÿ$7Ñ=î›/{w'ÿ1Y@ØÝK6²påÏÀLwº@_%Ô˜U¡¯pÒpy”„‡#ô˜mµÀŽìl„ëhâó¯:K<~׎%u—wüe•¤ƒi×Þi™öÊR-ÙÃy~zxõ©ºTà…Õ¢©oÏŸ8d,R‰"-K}ºÖ«æî/j‹gã!ámTí½†Ým¤¯²æ/£cüò…¯Jz×ÈcÊ=“üàºE_Å…€:‡¨õhð±8ÇŸŠÖò¶˜9ü-5B ‘¿ •‹–~ôB¥³… ¢åP1óî;ÛÝHà‡e_µ[f[i0DùPøîY8í­¨>Ÿ2b=)¡²ÁÙº•¥ûø¤–2—©âÈd»™f8^_k1v6j8ç+ër—毨JF.{£‹Ó˜û£‘0{U:’¦™í·Õ^áb9Àî­0ÂõìâxþnÊÞшÌÏ02‹£“ž™†ÆÂ%ˆ¾ÂÕYæ¢7ZTÙ iÉÀ™&Ÿ†Z¢Ä„>@@˜6‡Qá>+ÅoºA•%jÁºŠ?[X£$ŽEP3Uµ¦#Òõ˸-ŽŒŸ¾·5¶g¤)ª KKôDÓeWz¼°$]¾ A#®·œŽìÐã8;©wf³m| -¬~«.11„µrLt>j\îräò(p^s@Æ ð}f¬¼Û‹KNUÄkJòè‚a¾W4³£õøCòùüýçÍ*¿éth 3š•_Zíyb®³Ã½Qæ˜a=üÀ¯Áõ)¼84VNpòƒ±””}:MƃþÍc,?Sš;a·l2ÁœkÎ̈M‡_Ù¤1,œSIù)§#ažÕO€´µNܤÕð#h-˜çôr]p²-€ZûB¦ãr‰Ñx»Ê©ËW–›mæ7—•€jÕ<ëÿ­’îh¾Þ"êðM ö8Úl³aŒºýÇê…õx!÷q~˜~/î~›²õ’7NÉÌ'Å2 hR0#¢“áâ (1‚·lº/Ö]ÒÇ­0’|{MË¿Ke㺮ükâ=ÁnÐëieø:P‹~ßGå{1òʺ*|à-)Db5ìT£Ži*úÖ;J‚ä:BºßOéo~ç*ù.Ú´qk‹×ÑñSstE¶^‘Ô\”F'I&Q£ E¢Rƒrv‘Gѳ> endobj 537 0 obj << /Filter[/FlateDecode] /Length1 721 /Length2 13423 /Length3 533 /Length 13974 >> stream xÚí²S”nݲ¦›¶9Ó¶mÛ¶ñ¥mÛ¶mÛ6gÚ™3m[3UÿZ»vU«½ëæ´swÚc\ôˆxÇOÞɈUè„Líâöv.tLôLÜ„"ršLŒ„LôŒŒÂ0dd"N#K{;Q#7!3¡8ÀøŸÅ?7+7#; ¡ˆ½ƒ§“¥¹… !¥Õ¿T„B¶'K#;B9# €í?&&F6„*ö&–OzBB!BåýâL¨ p8¹Léa`˜˜M-M\æ–v0 ÿÂ’²3³'äø´©«Ã–ÜNÎÿpRþ›”ŠðNS{;OBS€ ƒ¼ý?ýÿÐü?û¿pýWsqWy#ÛÙÿ{Xÿ­ndkiãù?ö¶®.'B9{S€“Ý•jþNØÞ濵‘r1²±4²3·2þGÊÒYÜÒ`ªhébbAhfdã øw`gú_þÜ¿äµDeUÕiþç±þGUÑÈÒÎEÕÓáùþKþï˜éÇÿŒÇÉÒƒP‡ñŸù2ý#üçýÏ•Þé&fgbojigN¨âbdgjädú¿ÿJXØÞÛŽå#:f¶î;+!+»ïÿ©T³³ttH‰²122r°sþ;kâêä°sù÷MøgËÿ›Yþ3 À` ¢$GyE¹‰ÁˆaPMN´ôYÄ«Æñm÷wÜ‘¾ïÓ@ñ<.°Õj ãCöɆÒjpöXóñóÛ_š“.(ówü’/ï…ÔfïTRˆ×:¬ ü+2kÃãF&ëg.¬¼!!rç\‡ú@j<¯6C›¦/†Kx³¼ÒgeD»)ºâš ~gÂòcy½‰R†0qðÔ`ÛŒ¨íÖôúVöODˆ¼‡¬õ+gè†,‘«°3„8­:ŸÒÕ‰ýïœà_"Wu·ƒEÌN ÞuG”u U[©Ã *bƒú™ÄßRûs“$Ît=ò›“ [‘¨¥ËúéûY‰"ºsQ»l­¡’§2Thâ«‘ão#ÌúÁêç.uŒÃé.î]Å|híÏÉJg2ŸÞÜÒxdû ¬j Vš¨ã‹«W5Ð`ºÃ¥{×a÷¨ЂT‡’<—¸_'™Âs¦úEð04¦J‚¿‡Þ§¥ùÒòe`†På HmâNû®vR€l)ÁF#C×< ù­ºõöbTïG>Jg©Ð·»‹¹eÌî©ÿ⼨¦ãâ…æþhBïaYHŒqÎ6V·„è& ä%úP>…ûa‡]h RøVh©ó°½"KÈŽúq‚õ`“£84ÜÑ1aQõ·ñOˆÓiÛã{R¡‘7/4X˜¶0s !þMâ£2ñH9+×=È¥š¶ÄÑßá^3;Ydé-E£¸iœ?Tïˆv} ëÌ'­ôháÙ2 Ç¡ã8‰R¼(!ÚHX‡Ü£çu¤¯Ãšw¶Zðn¿ö W‚å ŸEhú—ËSFå ð;0傞6gQ" c© ±´e|Œmº¶6wQÑaD)ÐÌõú”~‚ãé%.ÏfDï/Æêtl.a!ëAŸ—"íßÙ 3ªLôYüØýðQbѱ¿>+Hõ…Š÷Y¤V ‰[ØZ^ž²ö¬˜ò-–Ö†dÎðqÓµã/õÖŽ’è bjê´Sôñã£ï¿SYÑY «´Ç…%´\ø¡ê:{¦\$8”‰Ëìè·q¾„ypFa ŽE-nÅ&Ø‹à€Jüó÷h«YÆÖ]]ºšc¹àõx’mµ…3`Æ4Æt¦6ß7¥H?ßâÍ™$êåA®‹]ñÌ6êÂ1™\Á'³@[oöšþÔ)®Ù³¡_öwô“Bo žõvüî¦ dý®)ÜÉ_Ù†>’ŸŸúþ`S¡!èðcB5#¡T ~¡±€¦Ù“ùñÒæŒzt¹¯há}ô¡=»ª$±¸`h`†g‰u7]NÛ´¢„ß}Þq˜n¢ž¿àûç …Fwt­¥È"i#D”øa¿(=VlçÂrd” ­U“Sß?_û­“ääOÒZ AÆ·³Äz­EȵnÏ Ù†§Baù„€ó†ƒÚ7KXþtûÉŠ¨Ä´œÍµÇnžpr¡r½]sy[Áx<ÙBß¡3Ö¦J¦+þÒ ¯ šdÉñ§Óf‚¢´áJ•~@B[©ñ³»È~}hoPºi[çù¼ùóE⳩qñ­!ŸáþÄòHÖ?GVÍ[#¯ŽÀ^›K_©†¥…uTvP*ÊÕ ?$Õ±Ô‚—ÉHqÍü@#y‡´lâöS{^2¶˜ƒß}OÚ5/‰s¯¯(Ôƒ©<+£m–¾A²9i‹ÍöCïÍGRݶµƒÏa$‘¢å]t_7eÚ^ ;ò—¼Ý…NŠ·BDÝ¡hYylãla/‡Y ,”?˜èåJRú]σ´Xù™W0ÇØÖP˜Mýv5÷ñÔÁ¿XÁ,êUéâ§|³Òú¯ôðMèȹuvc_è ÷3=cÙTšV¼KPŠôL @{²ÒýbßR{ÖàL.ÚÞjBz9±ª¤içÕË$RÛ§8”¨Á¥È…ë¶>ÉyŽlƒn!¸Ñ$«Ó?Ðæd'™ïÝbkõ]2xŸ’pÕÿÐ^-¥[0!/…ñ¸x‰ùÓ^H`:ÛÈ×›^χOÊM&ønPWèÁ¦d_‰=â¦ú¯ÅK§ú³lºö ’Céj¶ÇnÑ0ë5(b°:x½q÷JÁ•[àŸýœÃgâ/²ƒðSÍuxîž±"2`=™&éì‡\ <›Ef-‰ƒz0Ü!ûŸÄ¸âlQ m·ßXvø™—ÀéMÌ2A<*ß"ÜŽt2èw[x§åe¸ÕYÝlGˆ3KR’çògŒdÉP¶—iö}gIû©$Èü…Ão`øÙËà4+ïü™7fÊÙÚU¤múûÁ'ÊVL¶Öøƒ5‹ì»ÔNW4RH©¡PVµ%öX¹p~ÜþFðP*7]÷À/­üɉ ƒd )S^8wÜ­¡]EÕ3Ùúe}ÖÃk(ú„£êç)@cèñõB†ß6ß$ ÖàÖòððšÀðÀ½M^­&ÈtC£)& + ÄxAYIšg.6Ò†£î2µÙâA[D Ày ²ð´*Ä‚"ìº7Ÿó£ÍeŸ}cr>œ)ùÂop9ÚÌ¡1SÔVÕU Gi¬A˜c¶âÖ“w¸DEïÏ‘f9ò±Xr†'ªqcsÔ%|+Ÿ©À©,xú]b3Ûaò w³~²ØÅõ±ôëlÒ%+Lh õÃ\/;;¸f ¨)uÇé™VZ%I haN! c«iÁÃS„‰óii⣾ê!t2égVŸm ŒÐ®³; §©ˆ¸ŸQ#ð´L0Lõ°½!Úí‹sÁº1K$\uÕæù^ƾ¥Û<ËðZ¢ý2CÜa@×~>….%îŽÀóW…lßÉß9þqDê/ÃM„àÚ‹]1&Âïp <~•ã\͈—h÷³w´d•V<ÛÏÚ;,¿là—¼€.ì•0€Œ¸ÃHeÑ ¬iQ'Æž—1Ž“µ(AK$önR.)ÄDµ³}â(l[À0 ë¶IMÈøù‡¸ ~š Gã%Oĸ«º=ÈZâÌ]ôd‹‰ ³©é !¤Þ0DëÑpˆœÒfv@P¨®vêÝè{~TàÈ’±*ʺ+nËÒˆ†Ò‚FšáÝu"òÎ ü+œL¹ýzú]H%à>Ç{¶×l+`ÓðkÞÅfаAÝZEK†ö¢åLÂÃ* ‚íK}ò•p©ˆ=”MÃr‰œÓ»UF4™EÏæî»à8'ûFr€ìã(õ>ª5-Ö˜@dâé‚Õ‡=P02Ãc \> s¼¦:_0ѸŸ‡š$E\6“wÞ#nkÍ›ç˜-JÍÃB´üdRP”î Ÿ™¸Sl˜ÇÏÛ‰im$Ž%ÉíQ5'ôà=àï…oºd°1õA5w)ÃŽœØâ™qVäqêe{UÆöv=Þ†Þ‘˜ 3¤ìoåzÿT’—ÐÉó8Ÿ·]›(ÆÐïv³Ü~SíOý1¯ÒÚ\ hºç[ްdýü¾]s±ù˜ªœ‘eóOãMgtèJŽ? ŽÅcZ$+¸À47ÁX‰ðJ;…´˜X»ÐÙ¾ë`›V‚š’£å[³< JjîxpΤäêütµ¸¼ÙãÊŒB_LF›W¥4_Œ€‹¼HȞnj‚.ˆwï«‘çt¸ó‹a€)DJw_Wv:«ò©·”!ܛϨ™š¤Šìóó!®ÆX¯×¸¨#ˆ&¦º¢õfŽâ÷¶–ÄaþºÁ÷¨Á9<·E×ÒB(Ï–K÷ðí²j ÍƪÓÏæ>Z_zþ£Àòrl©ÀŸaWY)‚âå/:³¦|ù­` ™æž?ª=)m„AΧšd+ò“ß]ÒœM˜ îìÂúW¥§ '¡ã:úìîG^b¸ÒCúÀp¬ÔæZçRT&=³XÅŸyrž4È0¬Ì‰¹´ªIõ{Îå:"+Ñ8-ä ³WEÊ Êj>IŽFš`GZ›GðWÒ*nm²Hî×–&l©–DbÔ\íýt§~7»44‡Eå94a£vzÄ.â0[k\IbOP.Jê%)8柇©¿ë©Äƒœ@Â!¥ï«B`䤳'æÁãóç±Á×3NòÃßò懿-´3æä èzƒSE7AÇVõÒòL«¦lvNÂmÃ̃óÍß[SC¿ß"N&Ý8—Ì_ØÔ_´’Q3œE26ø>e³×¸š‚U›6‘¯Ö·-ŸßoªË#©"®”/Ëú¬9 f„¤Qn€M~ðŠr é=F.†Œj†ve™Õèl“3¢SJë’U+ O1Î1ÜF \ö$åt¨åm>“Æó¼–KÝN½Ò¾Š_œ®‹÷«!ìûƒÅØ«I*^Zuž¢˜ÈÎ ù¬Þ¿'5€¤t:«Éºx"»nˆUø#Eªà Í§ìýV‹“²n˜Úßúè>&˜/JÁçi}¹•„f´‚:‡ëA!îW¿HînŒx={Þ=Ã38 ¨ñ 6”æÆÜ'FúhèIæV øm _×ᤠêX”쎂ßlüÍe¥šf‘ÅçÙx\ÝÛu¶,~ œgðýµBéCF¾–êØ}ÞôD„ØD¶’Ø}/mzÈ“†%1{<_„÷ÃJZº|¡dn~%U¥,Ùwoªâ{Ti·ÅÁªPlàÒùî³q>ÂÅÑ,|ÀrÇ¥tèËù0´BxàX–,ðødºPªkåIS ‡ïŒd¢ÚelâjqÌ8Ê­fÿ×Lf¥# ‚VÔE™»$&º¤Æ=lhiIŚܾ¾v&"Y} ”d•¨uõJ>¶êI·>ü]qcê‡i‘Õ›Á Ìt*|!´ô¬³/€Šz!º§ÞÐW$9½´ë²Ÿ©¿£LéBd0Á? Ì\aþ6ˆmóxë…åF¥RÌð…ÈgxñƒnŸ=žjDÞö}zÅü˜!|8Ç;×Àzúð}xkQÚ¾ñ7µ:,…\â"“y! ãžGÑxdêÂÖ‘¢j·Sùñ‡þ#ßUw85 n¼¬dä©âK0€@ç‘ú§±ºò»®uT‡(y¥J扼–? fCwèÒ¡ ‘—¢“r|HÈÔ‚w’Ö÷$ŒYS­.ñíqùSAI]¨ïÌT«\­°S| wgC4åo¬„Aa©ƒFã )äMW|3fau½ï°~”èTÃ7ôM—²%¢åÐZ9¾fò«óYŒdUÏ/8yÐzá®Ý~Cˆ" ûÀ´ÜÞ5vßoTÞ¤b©l†šÜK#{±;M+rŠ«¯‘ØUaJ¶Mïg­í¾¨¸° ×Vdþ$Øp1µž¸Ú¨QGî@ù÷šÊè¾Üô¢qõaýDLþ<¼»åvÒ–ùt€k$”9ä#AÝF_¨V÷Ó&ÖEIé’8„µ ¾L]ƒȵт1‚1TÛ¨tîô÷xy¸m»´°¬X´*Øþn•è+s”¤A°P4•žÛ¢â~5Œ¿ov©î ´E(+É%¡ìÞã5VÉíosêÚ¬ŸïXºU{¼±‘æûF4—ý$Gº ùa¢œÈµšF†D3XÞüó1FðK±CøsG£Íªx--Ð$~g‘È墾 »ž¿˜9ûÅ“øÙ¬^×â#ygIXÂògÚÚ+ÄçEA]{l*óæÃ2OM¨#¼ èbmÀµ¦ÝÐ šv_ä7ZØ€f©40¨ŠÇW5ô¦ iÅMãt±­·äm™˜Ò­ð/o,ݾõß*õ³#¸º‡«¥’ˆc8Ö’^_“>K€µáÎÆ"•àäàˆÐûm#KSÆÍx·‡–%O1íPóŽ24ðÌŠó.vjÛ|ÿàujÙÇÆÉê@šbЯóYbX6¡¥®MC™ ýUÙÖ*Ó/üéêØŠ¹ÍѳȾ8ÎRäó\§Îݼw^¹?Ï÷ˆa(ìs‹½ZF "‘y,ö)ºF/}’›ðA©—Ñ"sîD­z”³pE_ÍcºßŸD»TŒØ…˜ š’Ý=‘K–tüàu_ú¾*Øy¯|Ã3QË} }ÚÇ#b¼5݉X›+®†mšy ,þ«k‰®ïˆÔÑæ> œ.q‘ÑéïÚ6Ñkw4ÖwQ´¦¤¸ ­ò? €7á*³i¬ -ny’PPKœ‰½Æ”?–¼^ƒYU]s=U|:K¤Å:I*²‘¼óA“jnK×ëüö‡¨L?–:nOÈÈ4’¼ß!+^#Îò¾LN„&i¿÷”·{0«Ð|aW2MÑKgjý€Àá份g½f%å<ÕÓIR ¥¹šÙk\îØõ4–bëµÎ!ı3Ò)óLf”ÎqðÙƒó8‘¯“tÕÊ¢,ä3ÈÓ!.cgBŽ,®(뉥ƒX—…HÉq¥(6Š±íª·O¶ƒ9 CºJ8™óe;¶"-ãQt¢’ñY¦ÆíníÊââ}´”°NY§;_S·c½E(ŒÂ¹ç§Þäl' ^½‹dCøö1Ålgt"Ûoå8öþ^êËP+ü«(¶¶–Õ.–4R¨攢{œŽõ-ÏœÔÎA9’äS^>R5R‡èþ¡æx»Ò pœ|?kB:r¡ Áå;Ÿ—8ª£z®kz5¿«©Šóâmùöã×áŸêHÿ&ñäÂÎõV8CoÃCD}ꛥgÅ`Ëì̘ðô$¥§'ø;¼È6ÕÜdižžèú}ÈQÇH”“b|)‰¨~‡¹ ìé)!h´P'Þubßnó0Øô®¬8TKþ3Q­hD¬?zíï³àPì+Lo¢<çìÒgTS³LÀ¸ä°¼5Á«¢æöñ„¨Æ3ÓÉ)T ·ÒVø¨Gã™™›F©æÚDü#Z£m;­Ò¸0ÞŽ›¶8œ‚«îD`“.l”F­ŒÑ/1ß suOH· ʼnӱ= ðÅ®tö¿å4®o“:D©Ö‹ÔFÄŠÃíÝŸ#ˆ•ÚðúЧ÷Fi”nZwXo÷°‘^›¸y˜À¢mǸGg©8ÞÈ[.âœÔ 椎Ԩ˜ù÷+gÙ§Eê>ä£g4ŠÚœxïÉ×Bµ~»q€jE@Õ]…•Þä 5áQQéyìÔcRhvÊ¡F7­}*K‡Ð2³QÐøÚhöI…¹Cÿ4LU“Á„¶±—»;×%>ˆÿäÏœ«§äËRÖ°ÔÄV££Ùñ71Ú#0NÓùp®~\»oUã­:‹!–ÛÎw6‡-¦»ˆÙAC顿¿f^k½%Ú4ùyˆZÐZ¿TÜnÔeÑYŽãbÚY÷ë¾Ëµf–“Äþü~Ó0iœoèÒÃ0•ºð™~ê10ϲF)ÜtV„wO€þ+‹a’I˜HxªYz8ѬZ˜óÜ’æ$ȉ›!2g<æÇ£MŠ9†ìÎÉô—GÊs´“ÌPØ^¯¹Á¹byzذ0Œ%$ÇH^…ëÉ@§ÝL‘BD£g)–á¥åÄfÓÂ!rñ }`Xˆ>«Ù„£>ÊÔ¯Ïâó“DñÇWÿ˜?‰éU+ˆC;CD+–ùA¦9&öƒ”°èŒ3¶¬xjÝ.#äàÄè cQ@†G.¡Aá:qQE‹(":v×x®°á‹ãç\˽}¹øt‰ÉÕƒ7À·•b_nW.ÚC‹ììp¼jÐL™yy]Ä@Ö©Èš{ÌŠ†ïÖrÏbÝL\V ÞÒÞ.4j 7²šOäF›¢ttùWyý{&:º†½Òù·òJ`ntã@ãöV©¶_v‘ë:«Mhqãl¼ ÚÏP‡­8t¡·=sµÃ˜wÄ™Õ{Ü*$²èÑf‹Ù4ŸŠ]ߘ9Z@l„èÕæhâýŸkà]ÛÚC§ §=¥õ¶2ï8JyB{ÉÀ{º×e#A®ó5—êyÒ¿âš’€ÌÑØ‰E¹ùÅÃ[k€L¹Á0]•°—Pû(RpîV‹N æó½¦ùØTÆ#»lU3FÃ/)Æ’ø¹š„Q¦]‡´§åc[·é4@§XÒb¼2cY„Nã+IXȉ¾äÌ=Ã<`™óådm¯3<к A@*ð±dsY/Œ»+7uúËÌ®K™ŽÖV…×4–"ôí·†×þ`³7nœ‚bšwŸø… $†Ã³pð?ãuVªÏñ3’1óý/¿›ÌÕÍî´²k°?ÿ„öOpØÜ2{'SÊ5 Ø!£»°\¢‰ûA’„¹‘2çMe€°ËäK¯e¯fU–´2h@õ¥^ª0>ï`§²Ô¥fÊÝäíúC(`"½,ƒ‰5qb\_fRa]ib_t‚é´ô°+@Æu âEOÿ‡ ³°¿ÝÜG0õø!òF¿ba•˜iCí*—/~vy,²—oÄ>ÄÇö9<ÓðhŒ;ÑŒûÕÜçB}‡£ƒë6/„wƒëŽ–R¥'uä+ø˜NÞõA.x"nrÆÁÊ4% FT›ðx™‰Û¸š_[@]Í cª“J-z–[ÿÉõÄ}yîöÒÿŠð×ùDtvC€ÅÊhfãШOW“ÔwÄ¢Ñì6,lP2áøì²&Þä©K£BÅqúq!¾¸¾mºt;ÊÅÁKAÄCÜI…«“¥™'WÌÉæ=ÑYÙÔ°ò´‚gÊURçwð´ÑR‰Ó ÷ íCƒEìoH?Ïê¡7’g^~ÆT f®MQ­§Ø~‰X!ým[²'B WåΙŒó¹`Õ»LæHÞñ‚h™Ë gÀ7äÔ¹˜¦¾Š"ÛGÜ&±S%ƒÜÕ8¾íäuô(åÌÎq„/‹~²U›´¤!½ÔÀ˜É hÕ–£æØøÈ`È!¡ß}§ëTôr§DÔÈ¥:%è'µg*)hŠ+Èæ°@¸]æÀF8à)g§èW[ÇÛ Ü2w~S6 z‚\gdˆ7×q£ÞdvKéôKëðK¡ƒW†_²ÛTv\¦Lg‘G§dP]Ø,ñX´¾E '^¢©à íJ·!YZâç–?ˆœyØÁÖöŒÅŸi¯‚PX¹4 ßÝ·Y¡†¡•ÌŸ§ô´rÚ ›+˜k‚ú '­äTœáÛ 6§©7`Ó¦y tcÍF5x÷Ø¿^÷âþ„22{ÕVanͧ–E2ijûE T…E^ô³·¯K¦›½KO­{IG4T†ÉG&q1Ê8ÉÖöúµL“5‡è¦§bF[°»œ6}5ÖØ˜M#XB¿•ŒÈ‚9iÐ’ V czòØWr£vGÃ3b‰˜Á2† n°Ý'q–@ìàC´«b V»Ö”Å*JðFµCa#UpÇäù;Ú&ŸÌ°R^zEÂæü°8,a6ƒ8µW…Ýs¯ôòu,K%¥fùož•­H¥çg˜2Ñ”0øJßè,¯xÉäù± Do…|7º²—ì¼IzòùMÚTþÂ’zmî±ä]íý—tyL]#:ž ö¶3•TzKŠ£nO|-E>§ ¹Ò†»%iiuVTo]IÕ0·eÂNý½ýŸÙð{ÝÏ3à¿EŸÙòð°;ÃÎérB8NW&…‹»Ž—‘Ì|…P³õ‰V îþ¤ö‹º©’2ÙÈ@«o1 T™QÙôÓMG6¥¨àŸÃXXeoWíÚ̯ô‡˜ÁiÍ÷–²€]QxñΉµàßÁû,¡­ætŸESêæ|WÚ¾tF©nåL™ Ÿ{úÛ˜ˆZÝ5ÈŪre®JÉ=?²ò̪²¹½•éi¨ƒã—Û ÎÒ.¥_SäˆQ¤ªŽº÷¼¸%ÑÅVøY‹)¯ã€¨O~dí°þ²ý:ÛëÏ2Ôøî“G£¥Å°”ÛrvàéDó ÚÈ ©6¦3eã±/Ž $ˆQ°&'ì®?¨ HRð6}} %É—óF†ÁhÌöøÄ÷g•ç€ÎÞŸ”†¿ð B‚Ô‚ÛNîtýöëWºÝ|iOèdMCGÌcbl€¸Þ,ÕAöL«FøÃHt}ÔJ{[<ß ÖYøÕS݃?`SvkÃ$#bzô2¿þê¥É ý¬8ù=€qâÞ/À“Ö*4È0¦–*%¢6æÂ‰P ,N#`NÁ»¶>«ž(u³˜fù»ßyÁNØ·§&Ôv'’+üÛð«¨1½™¸ØÏ´-nûW””4½±Ã©Òmñîbô6¼W´ÈR ÊᩯÏ-ºƒ ä~á|ì÷Vedï4š ú‘/‰ñ3hˆ`-KœKaŽ® Ã÷’ªÒ¡œy€¤/æMufÇm7 ZŸL F¼—±6ë©r3Aÿy¼åÀ4ûH`q¶/£Šþcµ3'ÏÞ+¤$ª!¤OyÐ ”,w÷¼>S‘¿”ñ$Yº©Ö¶>¤Öfc‘øæyû€dR }ÝÒa”ˆ–X¦üÍ.ª m_¹ f—÷;¢œh ‚ô™ç3½ëÙvßσ ý7mÔ\ÁOu>Ë´¼ÑêÞ[`ƒZ:èâGPÀ˜É¨äZyUaC0=¸ér#Ä‚Ù=óx?¬`Ia´²2M}é%%çQ‘­7©¯á×L„vÖØÝÑß4¸ø¨ÿ9ÿ‘×ý òWIä dUéo™ôœ33ø¨oÿLµÉ½BAÒZ¢¾HZY×™wÌâÄY@^,&„ »ÚAWèÝJÄsèt-½³€u} Èqû‰€¦(Hxý9-Uë 6åS\Že{Ô4ܦqV8¸ Èp°›£¹x,hâ©©»-RÒê±(¡á½‰%^µÆ_I’Æåæ$M0yw, ${f2¹†ÄÉ•,b3o0«ãŽÂÞž7ja9 Èh¤-hKÿ”®¬wòtœ³cª„˹à_±lîa¦f˜åˆŒ 7œ§©>MÍflÙ¶²á‚´DûG<ÇÈ´‰ ÇÅ9'¤ŸÉ±mÓxýÏ9‡’O»=8‘kÛe]"“xºTW‡÷ßa 1:38cãmm¦ÏMyZ?ooŸ!q»÷=~$+n6Ò9©)ZÖòéÛ[øÆ˜uWšDÈ•f%å¯,.j{¡B¬Ù“Rs‚š¼k›¦èÅ[ñ.®j…ÁœŽýÍ›vü«nïý:TüZ?7µ½ô M(tÃíT#^îà ‚ÈZ8;k²?Meã²Ë Ì½½#o&»¿§ÆTF `„úü-kQ'ìGÖ$Õ¸1¶ÞZf=º ªÑ7d•‡Í!l£n›‰9Ã…»Ý5Âkêû(÷ø.îÆ¨aÌoÕë¹§I½:¨tÁ´ÃFNUÍT¤1ÔÆ;OŠ1=©„§æ.Qy=fÝQ]V$ø%çÑêÉŒXёϓŒu!ÛX5ÏÉÛPýU†v™úFAÓ¿×ôUÊsGóKŠø,–q Õ%K…ÑäImö‚ïdÖ´×ÑKÜÐj`#º£ÛæbËÅv€UŽå›„V“sFz-(2š6&†zôðêLóX’ŽÐ &WÊÒ—F£‡>[bN’•Y®ÄƒRRÝa,5a²’ýø±¹5Ϥ¤­Æ+’æ0n&ƒ,ç…«•W[…Ðýû÷s×S-lŽÚÓÛB§Zám”›KJ8¥ÂýFF~0ŽbO-X‡5 è5eÇŦŸ›îÞv6°[õ¦žMTSë i=†U©päyÁç¦iMûâgB(=ì¸pm˜ÁO7¼>0%11Ð0òÃaA| üÐQX¨—?ð,ìhKئÄëL°9£SÄF¥qŠf¯y¦˜tDî3o©(„ó|zÄzoÚô]cLä· 9íëœs?BtIäÔáçÊïaº‚IhÚ`,«Ä“ë‡"šÕöæ/Y%ã°YlNþç¿9ÅLf x-A2i(Ç•ÇA Á„Ýc5Öw™±nïsignJYz§û}ÍW󥮸Zo’Uk2t•_+=÷­cÖÙ†‘ &úÌ¿l$>ò(Má>>Ú¬fósÖE¿2SbÉê==e%»äÛÙ­ô†.ç2ÑqM÷ñ–²3ÅãÜ?Ú,«>NÐW©MK²}*»ÎŠé)O Áˆ7íë‡Î˜\ó–pô:ÚOªgÙºÄ=+ÔErºÊXÑ‹¹Cøƒ#žƒ/-‡a:뮾+_áöZ`Cy&ûCNÔKsç·MT¿Y(˜Í/®góL ;tÑ©)£ DKþ`T@ŽÖÆ|õ¿¢EN?h¨‘—mÑ=dâÔEE·FÕ³:»:?]›]“˜*Øêõg—œQˆ€Ä)HÑáSí’p´çmØDMl«[11c>rÆjíÓK£ý ôa„hz(æ•’èaÜô"T ÓxSá»âÖk¼°õ2Ú’0¼ÚzZwc¯×Xmd¼ö #Áþ@rµ÷í äÇûlVù#°À!:é©Á4ܱþ­ (ú‹ÁYÂÒ}5“Rœç™BBÿ¬Œ¤=H+‰vûö¬þiĆ2WÄJÕ°eZæ–­z õ]S¿íºªa¬1s)ªfiV<)ÀÃ#"Þ’Þ‹Œæ˜––[¦Ô7©þxå< A¯G‘ùž>d\òîŠx£œîD÷*Ó”d¥MäjÁ€â²i70¢´;ŽMø‚xàÓo1xÐé ZБ­g Ôû©â F_çæJ-õ ¨“Üž\­ûæ?q«mtŽÐÑD¥url[ °-Àw=ÙÓyoãOäàeóV]¼[ÓÆH¹ÏòŠe$óqÎ|WZ ±ÿ2€Â‹O„ —d1ÏÇùHä²núÖÀºJ,ö–‰fžßXCx¶_¤”)ŒÀF9²÷Pb¬ˆ³`&ŸkujX äIU"úu ¦Þ5 ë*÷Ê?î ‚@¾MøO±l $¥¯”@2ì•àMªfs¢ôÕ%‡áÕ¬a …ïvDàÐâW„°çë=&õJTë.Á ëU¿ñ1›ÁxÅc §¼…I:¦8ú‘±QÁµ#„pvµNõ>Z ÅÜÊE‘M½”çª0h>ÂQÍ‘°\£ÞD(1z숎zVè7cŒ´)7CàR£?YžW’àµéEœ`Vºª²Ö¢wy}^rGÓm3Ûþžošù¦îôàmèEVŸâ ¢7úŸÁv˜hâp ûWnRà+[ëIŠÈr¥Ÿ ~ŽFðÈjOØâû0ú:®ñ ìg9¨e½ U}~LflÒB;êlb±3B¤+¡‹›d#_µ{\tÇOËï[\áà±”_Ð_ÅGÛWÊ.±óbMÆC9MºŸ"qld\þ©!õùgÓÅ è{ÙÎ/ÿ\t0O )©_|¾~œñ“0Mã FŒ£„5Þa~`:S)\ÙCLüd •ì*ì,Ñ‹H”F`‰Ò¯ÝtÕ=’cð ‚a1uÍŽm¥ÇW#–†£ys¹oÇØQW@?˜:|<µNvC_n8h¿Ëä0c(!>H¾×ñÕûÎ{/ ùb#èî¡N}Þ´vÇzì;)ûS¹ _%ïvSa ZÙO/†±Œîu^†½QG”NTû‘)á?d¾®ŽQy6è;’³à0æsòAmØî N£.)….ûÌ| ÇFb ‡æ•Šî\J,sáŒÁ÷~hÜþ"ôÚ¿âûïчÂpUÂA|´ÃÚìêŸí­s†ÛWäFîYà‡5{¹Û´æèÌ ùæ…h¯yBÐ)âöýÏé¬hÆ(by{²()EºU™ßÔü'Óò¸œéWÛ×â½PDòK:`, {ÌUæÕ–|Ø\¿ïD„i#ögS$ê3jã {_L„*ï„g€ªHGŠ7ì=–!—9 Ù]ÖaÅ0Wfƒ·G«® " &þ輚¥üi.ÐÞ-k|ˆÍ¢”¢y?{~Ð0Ùò*GÒÂÎ~€¼ØÄ­_âOã0sƒB^f¨^l?õÅvM\c#| <œL ²é¤ºÌry|'÷Ì®pëÅn'©3P€Øf½¼;v*÷“=ö®Øž‚é’:)gÑëýѤ©ÑÅoVb£ö,h)ØY±œjÈíüÍ$Üû×ïW$:±–²œ Ejž§ÒIÛGªYC[EŸ¬`Ý£”4¿¥HXå9[zÝïxÁ–ñ~*¡­$¹Œ ^Œv ÆÁçtŸÇJˆ2S¼äú““Ñínie’NÇÒÀðVÙz2iph(gìl. ÜTÒÒ*ÔßÓlÃv¬ýÑà<"oÝ])Š~ì¬1Êj:gçîR¨9ìï:Ö"žÈã[Šª]ûþG×"™Æ§¦( íLJ^5„ ù•:tB)5œjž ¿iÖ9×p©ü`-Ë^7C3|dÎ<ÔLW‰ŠHqD9~tÑÒðì;•÷SÝ-3 °%ù™pYæ[’ŠQåâ¯ì3uÉ*¸{þÈUuÒ@l²=[±V°ÕÓ²^’e*ÉÁ¼Ææ×7+ûÊ,e?›ïìL&ã¯è;£©T˜ßVcGÁ0©Í·æuC`:'î›ÊPI¨yŒN pÊnSÔRÊóÎÔXR…ô%žTJ‡`ו²€~úú"ý ù{ÎÍô®-}û–x\t§¿ú\d«4ó®²5³b¦žÆUü27L•ž• ܘ.uñõ+JoÍ}²æ%j Å­~ùÂiƃÁªªvBY­5Ê6òvÅäØž"†oû‚bƒ&;á,´ÓÒ£V94çlܦŒr:+d¸Cœ5#^ÇVèª>FÓlv±bþ´ ¶‚úÍݾÒÎŒHÉ ï5B–øÑ¥3}Ì$›²¨!Sê ÔüŒÓì»q¾~ã½=ý¡²uâr¼ƒ!1¬Ôj:]:ÌæŸŠÓ"ãÍI*”€×V6¿ÿýøþ hm­À!¢ žéF*9Gåºø¶ÅGŒ{Aƒ¢±Ö3ƒ«F£9pL"Û *^—GT{‰?.,Ra¡NK“`!ê| bÑbjx.EZg;x Û´Ö4Ì3>à ÓQGPþ‰jÊŸл':ø=D"iÎñYzN%Û¼y5ÕŠµ9Tz)çpn°Æ˜M+gºPìJ²Ê4@‡8™7šte%‡™/,Åìs2 ’=*O]ñ¦¨ûSQ¬Ù.³OíL<È{¨LÉ44“ {yÆÑ›B4NUÔz䬒‹ö‹{oš­˜–æÞl[¤cÚÓÏòZU…TÛêìûËu¬PÞžVì©î(3L1Âö–ï@‹Q¦Ê¼;÷ã ³U{+{`9ÍÆ¼‡ É>#7g()ðÍáuqÙÆ-÷Ü‘Ñ=t¬Ñgs3¾éæ#wŸQ—¤Ý瘢»rqš ü°¤klðØcL@ ÁåZÄ$>h{_O)ø2j²¾(æ_·“>•*3ÄÚlo¡2 ÷ÙºKñ×èʧþÅ‹9Óý–×Bȃ†_ïŠÀ¯*çÏË’†A™T­n¿Jy&âÉð.*VÍÉ?3vô¢Eoõœ !¢$ísýCþ*ËÎ-ÁN<þTHñk?æ7gÛ¯2ª¦tÕ:ãV›èrú-F«õ]y ©½œ«yp^0{VMÍw¸ESûTLŒ§² ­"Ÿa42ÎäÆ Aýn*ùT–4Ó€»i÷š¦Æÿ—Ìÿoðÿ €‘“‹½­‘“5 Ìÿã͈/ endstream endobj 576 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-62 -250 1123 750] /FontName/YQCPEM+CMSL10 /ItalicAngle -9.46 /StemV 79 /FontFile 575 0 R /Flags 68 >> endobj 575 0 obj << /Filter[/FlateDecode] /Length1 722 /Length2 8231 /Length3 533 /Length 8787 >> stream xÚí“UT\Ѷ¦qw.4@pww× ‚* pŠÂ-¸kp.ÁÝ‚“ÜÝ=hÐÐ9çÜÛwô¹ýÒ£ßzôÞ/{þóßÿúöÜk1¼ÕÔa“9Y€åal\ì\Â5U.N;'ƒ  „Aœe0°0€KHˆ åf àþÛçæåææÄÀ`È89{A!Ö60À;æ¸R`(ÄèPÂlÀC,ö'KæÅHÙÛ´ÿñŠ+@ì †ºƒAì\\İ[C18þ¥ähåø— rsþÏ–;êú— ðî/'3à/%ÈÉÑÞ [ap¨;ý] ü—åÿëCõïáònööê@‡ÄÿsPÿ­t€Ø{ý‡ÃÉÁÙ †Ôœ@`¨ã¿[?€ÿ§AÜþ½«ÚC,¥­íÁ6!v^þÉWyˆ'¤ YÚ¬€ö®àê`GпƒüÞ?18 µd4åÔXÿãÇþ«« „8Ât½œÁÎÿ²ÿ³æú¯úï O€1';''×_ãßû?ŸLÿm59GK'ÄÑ :‚€PÐÿþ;•´´“§?7€›ïïFââæðqúý¯F=Gˆ‹XIÀÇÉÉ) $øOÕÒ ;Âþ¹þ~ñÖV¿3ƒ=Á–YÙo ðfï©XoÍozçh?´ÿØ .‡gBmôÇ¢)ò{§L½ú¾(mÚùuPF0Ρwjû[²‚¤:ÑÝÇ'TÚP ÖR²›ÇŽ`> Uànp3ƒúN›õÓI‹ÀsŒ+ú“F»?[ç-áÀ7éfŠA™ð³Q„¸Ýý›>¡÷M|v¾³'(JÙ8éZL’Òy1Á°88Wv‚ìõŒ;÷À´…8]ñ=ßu#4Ãè<½G™|£Õ7{$ë*qÂY¸OIî[%Š–¯eÑÖTö¯7=%ýäö¡ù8yÀ¡vÿ-1.°K`ò³¾ŽüG‹‘ÝN úò‰Ç'±xÜ„°Ny“Ôß >uþ?M¹ª}¢:ôµÈÍw!D„#Ç-{-,ÇSÔyŒÂ˜ŠãhKM[‘õ9;|ïò©kD“ Ûž<B;“Ë?»¤7U…¾ï ›`"žÇ|Iç°Ž±,Zt€òÅë nѱš[ù3„~j/ËaÿµVØÝ#¶D_½—@÷þ.BÜ·Àe.'‡nÚjÏ{òýâ\l:VÊĈ§SÈ8¿®{îzFÃG¦EW;¼M…!üÍ |™ƒ¾¤­Åð¯½Ó¶#aØö°©×· ºˆKË­(ýË>•(¿pº[XLo ¼†€ƒaúC®ßâ_¯Î®Gfá[m 7`«¦I÷ýÄìÊhaî™} ¢Ø/\N¢÷«Jx+ AÌòçí½‡ AÌ èÉ`÷ŠUd+#±a`c¯Þ•w­&H³úv2ßLëŸð †ô½¼ÙÙ+u÷ލGF­>£×éá¸Nü° Ñüü·â·¯Aærƒ|¡öYƒLÑú©¦.Fl^°(¬é<‘åH¤;QkNVwÚÄï»õbZÖÍÅÝn§ú¾ˆiñPüª8•‘„íß78»võûþéÐIÐ`5×wö‚úEY~À‘‰!Ø‚ò>¼éY©~¯ã÷i(ÅMó´`|Kƒ…‹àÇIëþ¶9W‚{˜0äk U]¬g^Jl2Ö†¥¶bƒqvHGj¼”7©<4׫ª8J3yNg?ÿ<è4ß-p`‹â‰KÑIú±Ñ”ðÎ(’‹P‚ÿ“öÝO¨Ú­7ðòÞ¬UŰã½ Iÿ)æµwRT·g2±ºÀ½m2¯;)´òñB¥ÄØ>&bß ÿ:ä\ÌO{Ÿª °grï*õo­æâm]Á$Ž@ ¾‰í‚·Ï["©Æb[DD~h.2ˆ•{ýâgÆ#r98(k\qÉ®¬€YÉ•[å/âú6‡‡uo®¿Çï“qÁøžSiÝQ­›r\¾2ô¾ €vPÎ[lDáôRd€¿¹X§„Õ+èí¨sehÌéW¨yvt`8’¢‘.R·¥î:zÔ~+á_ìºö”×…Ébý}÷F@ Cºùó¬êˆeÝà7y}3ôRï`ÌJÐÐ-Ò›âvîK%áßú‡ú{E³±ŽížÞœFfèiMÖ¬@¤73޹ðô9‡À^£ç4• bG 7æÎ46,(JšÍ/B!éÚçH¤ø‘µI·›·Ñ 4ç¸&ô²=#׿ÓvÚN„2‘$¥2ÃôGlú ¼ÆKìïàÙs±Ñ×`wî¡ÂL³7D·ž#ñbB:„¬JjÚsý >³#ÏéR¿| 䋎’šº(±Úù®XÒWˆœaÊëö—¼l[½žæÔv9¡w1ý芧ª¡Wlkç:®Žz®ùLOá(º•Q‹_j éÕ øevïe^™KÚÓf`ˆæ+f0ù²m,öa6‰Ü=R|v¶­K'N Qç3ýqÚhÁ»9–›qœ³¸ù¨Z Úrå‚j  »s%h´….^ ˜uaä鍸“ˆµNÓ-9Îz<Öpœ#‡ÏXÝ8};¥ÞAvݡʽ÷.­=\š¤¨Ý(òÈ^oå'MÑ9¹ÉH¢¶C»Ö!KÄwÊ ãÎ&‚…êŠ*Âð#¼|Ú:óNSÉå_>Q`—vŽ›9Ú¥mû°j¸.êðž>Þ‘çAØèZPÌ?7앚 ÝÅ- ¼,Uf¸Òµ~;kkÌVUòNá f˜&Ü}ûp-v7ŒþK`YÖȺ$r€&Óïšx­Ê'À¥¥8«ùùóhm\iΛ»LOz‚rr¸F”PÛp¼!œPÖÙçò|ŒïÚ@qÂçt±ø¾LQ¿·(ŸX°$¯€AáĘeBC©NÚ$¿+åZŒð=…1¶gYÕ»÷ž_ß¼ò‘îÎïcùSѾùQ!ïèÙÜ-¯±ß­¯aö|}Dbùˆ¾J"ÈÔÌNº¯–¶Ø˜B“nP&=SÄy&èó{?—-=)Ìþü‰±ÂG¶­‚5öB¿×êGŒ±ô›{„\ó…5»ÁÅc ÚÁ C¸~ÑA6Å£p JH>Ò}þfl‡™ðͽ­'Áy…’+ý“àä¼W%ɸ7xþ€]÷S!“:;ô{æÛ ¹*̬Nʦ–4\Ò=r@m%¹¯"iHÌÜ<#·ŠLíµZ@8QѵxI¾Ô¶1%T•S²¹¨Ü-wSû:þEêÀJ„ò•9è˜ÚÐÙë©“¸Ç‰VÈÊß _Ö²—%ê®â³Ú’Í©Š×Ôƒ'üZ/w•Uakï:Ý‚›$‹ŠÓ…X" 6}ø=>¤ÝùGÔWê¦nëш2~açm(lïM½c¯¡ µî¢=ÌŸqº”} $Û‘±?"þõÄÕ¹#ä“Çê>™ò‡¿Fò”è5þr+:K\ÔL°¤¾>§ý6ކ选ÝãIB+Ù|¥^ jׄ¢”àÏÄÇè?nR¶æk6£lý¹º˜Cu¼7ô. »ßÒÿe*5ÛEæwRåƒÈ ÖÝûã‹OSË:‡ý yØ74ôé«¢ð $ß8ÊŽ¦Ó$ê®Êà |ܪî½ßô#¹#XÆá ßNÚW‚ça<0så[(2=ö+¼—î›Í5^¯ížzE¯í÷šL9Y@RpìøêóÀKF†m¢átïVAãíÚ*Ro  tfe#–]T­UëF®#5cèŒBo×Åùz{ ÑHúþ™(^ÔšBD{‡«Tá¦CÚ¿sô*6]±&‹û|2vwå:Çòæ`“?Ñ ads®¼¿¶"ëy‰%ßö¢Â™ò·’/õ'Áσªû<Î$~¨}>(u±?dTS=¾2µÎD 8Hd¡Ýñ*.Pïez.×Ö<.»9W&XãžûD‰°%cÛÍö¿é))qˆ«¤ûUmª±y*÷UÓÄÝŽ÷•'a 7˜"¡èhèöf¬êî+lK{u]«Oÿ`)3ø¾ýAÌ`IëÿPöhÛʈ9–ƒoSC̺Ô!£v3M¼a+0b8ÒÒkš’æRÕÛZ*ñƒW¥xx“3h'T7 Þ‰M[ôÍ«x¦î˜x=t¿¯ü^½ñãdšÈAEžë\̶=:ÿK€ ][Þ¦¬VH£á–'ê)œR'4­ ¨%eáxÌ4G³žÁä ¦pÊ™ ô\°_pÃq€§I…ÞððaMr­ë!òa¬dpl†?8ò‹-í¡tkî0@Â\ ZüYÄÓFœºð¤Pg†ºõò„ô{Ê„Ë?-»ÖóÀ_VÐsWÙè†ÜhŸ.›,n²ë€Ð¨(eQ‰õ¡¸¦¤`§á9ÊÊBF˜R<} z?‰¦°Ôa…U ½W'JÓ4.W¼1Ô—;˜×^(ÇnÌЯýêÚÏEU‰2ì` †YwŽQç?ÅË ÔÙœ%mHjüÊøÄE’2¤ÊBW˜áÏ/ epÚð÷ï!´æÊ<žF¸UèÖ#˜¢ÁRôΖ¢lßðWšÒª2ùM?>Mnö"1‘¤b& Aº.(÷¶Öˆ)ÈçX²Åo€îZÈc]rÑBecâÀÝqWûd9kuš‘òmn`c¡”ßïÇ÷÷Œ¾bg»Ýà&==•» yíè©·ÂtÓvI&‰MA•™L˜G7É\|‚»ÑGú­úÌ:0‚#J±ò5­m©Xe¨p"‰òî¼%¶ç€åûðÙè‹H·ó†¾)ܼu÷:Ûd ºDÙ“´õTèŠ> ú€†nW–æýËÅq•ëkò“‚¦agªSE&]õÏ“Y“ñÊ Å/o®•.÷B÷HÝè$ýcìÁ=H qg+z¾ê÷õä¤PM$fGt¿Rè~‰;o~„®p'JúÞ~:ªÉI ®<èe7·ËÁkÊ‚¹5í]U1U ·¡è¼½þéröVf‹h´±ÿ’¹šÍQA’7@QªEIc´dº<幞x­ÎeÂÛ ÑènáªF%)"¥ÑÓ!Öƒ»Êþ- ¤žP¸£jªÜT“‘O^Gƒ)kÖéû/vÌù&¯êâKÌõn¾Šdëò÷0ðÉõøÜbI܆±¶òæOcÄ?h_ufe¹ül`d¿†ÓÐÐÆR9p$M1Ç$§È6-Š¢¨üA©q6zCPËijo¨^Úúr³ð\²,P€=z;œÏ¢œ¤ú0»^’lâ:¡Á<x(ë½—J]uÎX¥/‹…Ê´ïÊTôqdH¢pÖµt2PafnBó¥èÚÌ}Ç„<ôx²³Kê9ƒˆœá*o&SÞ€p:÷[Ç+U÷Š/¼³´]†d#ƒ•âS§ a[ ¥rzô»&ükK”+žšp¨ä^ý³šw>jËh.ï_-GºO†ï‘šåÍÚ&”=ûÌ_öÓk tQRHÔ‘ú®™b»Ü‡¾¸¿6ªÄ²Þ`ŒûKªßÌ£-~“@g Ú ’˜Ð°‹âb ^ס Õí±5úÐ>÷ŒƒúÑĦLí¶¦íÈ…¹Å'‡yæÁœü§DÐG%Þ¼òlqau£«ÇÕ;ß·¢™Uögkz 0á“$bǘz½!I%9°ó4«†E!ɪ²È¨Èš…yôÑªÓ öG5©ŸYá?¤–(DÑ×§ì"¸ƒ„FŽå³ šRQ_¢D˜}rÒñ{ìÈÊèé Óe"àÐÏ<`åîª\ëÓL`Î(ùÓtx¾Ž?N?Ô§³Œ‹†¼´ßýŠMþ°ÈWha )>Ýe¥y“X0ØVBG<—àID_óö³É….gÆÑ•jþPiCª%±¯­|;dèóÐ5rÓ—Œì·ðÂG•ŸÑ ˆ¸u̓ltÊí¢»«5ÁÎdÜgUQ> Æ/Íî¼ ÷‘/âM’»YáÁrìv£ÇXA‹ÄÞ¸,À‹Å7 Ø86Çļ7KWÛü=?Ÿ³€¶™ùeÁ?ß EñÃrŠÒ§º±f d$ø+7§ÒN¸XwfÆX3pô%–Co˜ösö°_dheË«¨Kiš†¿Çõ¦›Âü\+É:dØ޽Ê* ’¸|/ÒD‘(40DÈ~ÅmèU6þÂs]?´$¨³»“`àGpy U9é»8Dnȹœ°Sô1E·ÐÛFx¹Dʲ:ÒÈRjqˆ)¹2Èš[3I¸ivu-Ó9Dß")b9{Ó’ÝTGÛ†àb÷T;ÕȺ¦÷½¹Vë¡Cy@¹ukM«oŸ)zÆÕψV¦ÜÛ+dø˜tòÌ"çïîœo¿Õ¿4wÕ]å.‹šoeëz­•xÖ Î•­J|7^ñ— 9¤q›¿œ4 ’áPÔ²½¸ÇŠ»pª7Ö^o÷ ¹0×7¡é½F]þþ^ëä?Kí$0’œfÀþëg(æÀ¡kÐÕ½ù$€VhaÚ6¼E^m—•4îdÈR¤¦®£ñï1SÕZ¬w²Þ¶¡íâ]2Û7ë_r©$“Ü6LÒ‡Fãô)._ÇzúÕ¥Q¼&ఙȺeÅì‚ H¯{¤ôs“/p_¬P¹¿ÃäUe*”ò2åýä>ãò¡øß$f̯.Nð©îcû.ȈЬ¤!ƒímuŒjN$ô´7e§‘;ym°‹â†a«$“°‰@9³DXìÌ%ÃýD>Ï…küáµ!‚R8ܸÍ-:zHCÅr[¤F>9|EÊ ÑX)úÝ÷VX÷ÃÎçʃ q«©…‰DÐåÆR˜§eñÒb¸…ØâÎÖ$ê0µû^áõFÛ>ä5¹lÇ©ªQF=Ï;·P»Ë.:8ûc×.¬Y<õ2ËGò³¶ÅùEøâÂXÞ¤É/îC{V»ä%[ª–H—uå¶l즚á¸J’~>2xiC¬ý?±}­2¨“ºáëüEš{^¦‰g}õÝÙšmæÈ+¬Ôjúײ‡ÁΜŠËºDŠÀÐ+ºÌÁ鯦Jæaâ² %µPøÎByš…†r]2£¨s2Q›hÚ™‰ƒ|̽y£ËïÆýÚv÷ocgçgjì2$ÚAðK,ã&Ϋ½ƒ)Ôz§24ëÊ13¿ß©©j¾Ø|…(ÛÝC ·vó%¡“r(Ø"nÀ?¥< ð䨆zò3è)ô5? ¾ÿ4×á…úTõ.‚ÊKÏëÛëÚ¯ WR%{.”I7*‡%ožfSo258ÙÓ9ÐAÏC¤þ®VrƧ[Æ– ÈðK£°á;Ìâ¡ï£ó“AÈåÜT6yàO·¤¢Ê´¹‚èí\¿Êœt0gø¹Ò¤ÙÐÊf]܉ÙºõÏìàÀÕ¡»¢ðr/9¨½&r÷j¨AÈém·µÌÉEIònâüd"ÔŠçÝv/KêÓ¾ŸÃ– {帅]wÞ!¢Z)^ù“|íÜ–ïan˜&/®¯¥~1$ªƒÙÓh¤–R‚±ŠÇÑC\o:øÄÕg$Éäó»? ÇÍÔœI«ãD·”?úzÎKòI2o89µ¸ú­Þ*3°¡šWá Ž!í¿L\Ø¡ÇÊø>¡ ½‹mO4S0È€Jyæ0ý‘3ËLY%N£Ï’¹–ç³÷jæ ;ú4~•¥iƒ|t¶ßãÈ3Øn›|Š‹ÎN4=wnú5ö$÷ÚËÏdk~mœe™wcà—¦¥,³ãæL$áÈ£SJמ٭c­_ee|rf¤é-­%ßÃã“2} ãȘ4PiKçõEUFj^*k\N–¿ˆÊºœâÞ¾é-dÿò؇«ðD öYz‹’oÛ®ó~ꎵø18°Üj#éxi¨2­ÜD[¬ú±[Û—–š NLz1“©) é±VØÃçÈÐ|ÅíQçy䙿üÙ^P¡K*=Z¥Ç|ÊŸJ HÌà‚¾«3üGÙB%Û'f¸mÍ’”xy#øÜû , W¢'©Ú}ùiã³—O¹±$/e{­}u²×åKˆ¶Ý'“<jîî\™œ7«“Lª9Ò¹áý˜ð(¥êi'“kHQ&lI÷%ÂXk‘깂ìœ,î}õÇž£³¼KÎ$€ÑÌF„ ó˜3ºD/.ž‰NFµ™ýÒ ¼}l×ø4z Mô…͘ňŽÿ«áó F…¸Ž¤;f9øÍu+}nüw=zU-tëÅ܃¬9}Ý›úM´£Éù¼ÉgŽê¾JéÞWs(âVµU²Ë™›Ó¯"šæúÏŸ¶ {–æøŸ˜–u¸f!“ißðLF¦¤ÃÔ/ðßWKúÐGTcèäàukŸ'ÿÚ€»ïL{µ¯CÆhöæô €)gALÒBšˆù‰Æ¶øÉ?^-s¶£†sþ_^ÿ?àÿ‰K{0 srBí00þ>{fW endstream endobj 642 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-4 -235 731 800] /FontName/MPGSJE+CMTT10 /ItalicAngle 0 /StemV 69 /FontFile 641 0 R /Flags 4 >> endobj 641 0 obj << /Filter[/FlateDecode] /Length1 719 /Length2 15473 /Length3 533 /Length 16033 >> stream xÚí·S”&ßÖ´í7mÛ¶mç›¶mÛv¥m[•¶UÉJÛY‰þïýïô8ûœ›}×£cÅEÌ9ŸxÖo͈1"9±’*½°™ƒ PÂÁÞ•ž™™ *¯¦ÆÌ`f`b%'u»Z9Ø‹»yÌÜÜ,aGg €™‰‡åŸ– êàèåleaé  ¥þ—Š lt¶25¶È»Zíþ115¶¨:˜Z]½a[[€Ê¿nq¨]€Îî@3XXff€™•©+ÀhaeËø/,i{sç¥ÍÜÿ»ätvù‡ @õoRjÀ?œfö¶^3 9,£‚Ã?óÿ¡ù öàúOs 7[[c»Ùÿ»Yÿ[ÝØÎÊÖë(ìÝ\Îy3 ³ýJ5ÿ'4³r³ûϪ´«±­•©°½…-Àô_)+ +O ™’•«©%ÀÕÙ øï4ÐÞì?þéÜ¿ å•$UeÄiÿÇsý¯ª’±•½«š—ãÿ´ý—üß1óÿÿÓg+O€.Ó? fþGøÏøï+ýÿ˜MÜÞÔÁÌÊÞ êjlofìlö?ÿ;•ˆˆƒ§=€ž…•ÀÉÊ àbbòû_eêöVNn@i1;+Ë¿³¦nÎÎ@{׿ÿ¬÷¿cs«šzMaU•å©.©61™0 «)¨‚—>Ê#ƒ‚ùÔ9¿lù7ã;2ö}(Ÿ~ nµÚÀú’°£¶ž>Ôüýžá¢ΚNXòã;—ÞìLõ¾Õ€RxAakxØÈbûȃS0 tÎuh ¦%ðé0ö!¾jùiºFä²((4QE¶+’a(­ v&.?”×›*gŠ„L¶ÍˆÙmMm`lå|G†*xÊÙ¼pe‚oˆÃÁ»Yƒºü ÓàW¾¼©šÊ`¹££f6M'-u£s ÏGEH‚£‹ô=÷gjÔp¯$çÊã©@ ®®”Ê‚ þ‹áh+õLXÀ°9 ›ªp´­0¸2­ì]w©+ðÓk”ðB\gQŒ/ÒW‹2Ê™]Ãå¼þ <õï™àÐìèÉ– œÏïžBOCÌ`Œ‡@#­ ‚°¨S j¦}ÔT¼äÂß~»®i~Ó61%}WFëôsP3‚é-YTݨì`éÐÒüšÑó)Ê4ª&Ô±'ÐØêÔ!ªm;ûw˜-Ðp •]çLÇY|åM-Ä ˆK¼ŸòUò°gæ‡@Ý,#_(;ýUÑ&"'ìå.¹AÏÁK‰¹‰…,XuOļ:Ï{Ùc牶£¦Ás†“ûÅìY·AÃå¥$3³d²¸IW”àƒÏþ´‚“a¯ Ò1{ŸÜj‘ ‡‹ ¨ïûìÕ•QÃuVV8YÚs£y8³ŽœÐg~Ç\’-¾e܉l†*‚ã»ÈlM8û]‰vËO{¶Ñà‡9_<Ö{v :A§¿Ñ×êiôo†¥à6›Q oîÜê[ö~3òiËú¦¼à—Ô‡ãî;á°|Ýå|1æxoY­Æë8žËãò뮫07Z¥<üå,¬ ½UcŒ%*tÙÆ;ª` Èc²,Õ[§ŒAh Ì~3—£ËÌ)ÀŒàI•n£’ Û”¿F™°†ì ¡fDÜÚ {v­Z­Á5|3ÿö,3’Ú½‚d¶<÷v Ý?{²¼¦d³ˆ1”*¢ÍƒKË›*‡ËŠx'QTYƒãÀ|©¾‡švÀ ~ªÚfë/æ^€£Çõ €ó\;ï,hߟ–} Š:^pÌêp•3¬ô¦®ã¶lÞÆ÷ŠŒ÷XiìÑ\.ƒ(ØÉ}9«Ê•š$}2†pàÍtJeg š³DµíH“eíh¢‘8#¿¦8&Go‚„ÔS¨ÍËÛÊÆ®ÜïaBÒ@ ÁÖÍÆÕç°šñ!•eëV˜-¹ ;Uß2œS¶wcŸaÃK–-•¦FÔ„¶™œžß^cXkýÈ{óšh=ÿI1úÓÆi€•ßGHb•C¿øÆÑ,–³RõÍ¡n•Â~ŒRõb8±/e`º}{„Y¾À^R.P¢btÚÿây¿v¡ ¤‹À Ãh*…±è¼ž ¬vލ:HÜÛ>UNCªšÊØWR¸Ðæ?sU¦ózRú.aA³b¨¹2f·¿@‹Ùó@ÎdEø‹iŠÍÃ{Ì ) À£á‰×Äœ}r©;¾BíZ¯g œ\Ѱé€üÝ>C¬£®?©DäbU‚‰·„#k¾™iÖaªˆˆéñ c¿0Q‰˜´1a¥§ào9ë7gò‚Qˆí2Öt¡ðêAiÓ;ön¦Dm&©‘œWfe†×ÇT²˜+\ϯ ÌSÍ–æÄ]Dód4wdB¢Bð[ÜC±¯BbCr³ :ëùF ×B¤#šQ¢ãJl[>Vöo‚UÙRtUù—1|µ¿«ïÃ-Ÿ‰Èê¿i8‹PzÑÁ–ÏÖ›–ξÈMås©òUdÌómš!p;[õæOå!žÊøù¤Tú’ÙXÛWÖ¼`™Àا3UJ1s¸ÐxÑ>ô.6àE»ôé.ýx3èYªpShÝlÇÙ¸]þvfЇZÀŽNŽÎ·žèí¿¥¦ÌR×%öN¹AÆ4”ø½ÿŸwƒàýt‰J*ì€Û _+{-¸©E§ÁC< ½xò'"Á‚o›—Ûi¦RÀ¡º.v#“µj`]©Íò9YØíC›óäÝGsö$±=j=|‡yoâpÍp`ÍòR§¸ÿNª~b½E†»'òZRVvÿ½bË¢Ëï-ðwó*ÂÚZ~MA®ù*ï¦ä›#¾µ²­ÝbsêGÔ·ãè•7B*JpðŠùšZ»rA‡ˆwW ¢ý*Ü–†ðоë.ù)Œêª½ª™Ù`?ºÀRƒ„w€b¢ñ c Kò§ Ú31¤û NT/6b\@¨ÕFÃ^'z'Äb+÷¦øœCK~èGóöøÑcöGá…'˜ÍB¿;2¥ †­$âö·BÔ+ÈúïcÁtTßèpÿ¯²+Pª¡ÙË–Š’Ö’@mšú’øCgH2ªžéK‰~‚ϦP½BýOi°±[Æ‹–[ϦZëtNzÄ:É'stÑó@(‰ðàÙeÒh2¨l}i’¡ÚŽ\“ú‘\ƒÌ^ݲh-¼}#þ?+Çdw_ˆ•?§]êúë"'^va4ZŽÍC£r°FSžµÑtSœoÔ1©|8¹BÞ6­v±%ꜣ‹DE0}é· *í¼Ê;9Ÿ›Ó]§Ï?êús)Úg‹îíCØÄhoª=£ŽÎ YK™Ð€.¢zäFw-ê—d͈™ð`¨+çÔ<‡ˆa0¾¨äj¹Ñ‰pæƒ=¹)€›Ÿð¼ý®þÒNçÑÁÏÿù¨iQÈE½•ŸßfÕlÅRî*o[ªùÝ!¯™tHu6þGƒn!›ò~ôPΆ‚Hº€ /µÁ@Wq»þû4ù“ËboPã*}V`³aÛOV Ç–´ŽÆfÓËUÔ/Ǩ$Ï]ü[åMwÝ52ßÐI-U½ò™­¼’ê½?§]Q›ÁðÞ9{¦õtI45¼¤²u°ÓH†”½ÍF Óêx™%™šPÃ& Yh7¿AþÍJ Œ@t¿þׄdØ“ Ûm˜‚‹‰!¹Á+OÆâýE¹äV+;· {y¸Ç澕“?Ÿ¤  ‡|ø=E eûØŒñfé+”Õ8ÑøÝÉ#&âºïƒ7èŽ;»`2šÈíí4~ ïŸ\âÞèZÏj9ag?ˆG«ïlÚ! Ö×fò­¶ØÿÖïÑaг./öË€Ò|Žþ†«cwk˜?‹³³ÆýÒǦÄP‰ål51´—±kcàÊzð?l¥GçR‚~ûÞV’ìP†CÕÍlûæ¢rµ­Òqm>k*z¢Î&§_«Ê^ÈÞëí¼ÉÍÌØÂÅesÇ©”ö;_8*ÂÎÿmò½•µªÔùŽ8»ÈÃ|ï¾÷UthoWþ ‰¶GÞïW˜ê¦k€ÂæÒDãða/ó-´Ätä_%Xcš§¶Q-7mÄ£~÷.?wO»žÊ°·g žg}R’øz¥ÊЕ»^p8b§Ÿ5™t¶‹ 6†¥¶ª'9)XÎ,Hf†O1¢S—l8w³ü⎮Æ4˜oý§ýT9ÎvF¨fÉã‘HéÛ>ž „B‚ùi8£óèC}Þà´{þž«„²´)X¥srBjE_K<‘Œsó¬¾;£ŽÏýÓ›é(òÀΔ×!Û—ë‹»ñE=åNhdÒ´»Î/–* Ñœ'ØÈ*’a·rÞ¶÷‚âñ eÎä‡ëõþú*i3T©ýè5Kœ²Ϭ ™µ5—÷ §&ÊKÌØ GóÏÝú%¸«¹Æ·^´Ãèy—à”½XQ~z¤&FwKÃCÊ©‡k±äö×ÁŸyüK+KÑOÚIŽ3¶æVïaôV£üK³Ñ„Ál,…áÓ3 p¢àfS¤tò"„P©ÍŠ|I7X…”è@9òYÕ‡àûžòŠ ¿"ɼ2ì@N wADcEõ¹ý”ÖøIØ w„w'øÛ€Ø(íûk–Éíô„+.X>I¬þ¨¡)dë(!_À#ªè‚ðQ oЖe+_ùûÅ@>D9<‹“Åš$«»Xœ8½A›kPBƒ•'p`³ 3k:Ò }LéþÌ6Âü~S?¿B‡iŸ ªGÒÌ oE1Xȸŷ`[~Ÿ—{Eëïû“-µb²8F(c®Ò”z7ç ö\Aþ…H;.BÄ™cø–m½?;Ã5Ý¢-U- ]RÓtg ïÞ н‘“™­Öéab{x¡€\ýÝôö7tNØPғݧ4ЋQ?Ñ^×DÍJ^â›G¼§ñ/>ÕÒzTïØ…EW–dÙßtyüñ=WQéqSæø?6£ŽgÔxyö²Ç}éÍÛš é´¤±DU¨ßx3cC.Õ0º–uÀÖíÈ·S‡ “a¥¤zø#u«áÈ^/ïj¥NÁä:U ±”ØåÝüÎàÌ!1]ÅóËÞ-¥ÒÎ/š?èd1û,ÒUÖ†·XäýåÖ:Ã^¢´¤ê2;±\ÿ+¸#8ïKÄ=¾}èJÂÀ±ïŽHÁ`‰ý°wbàéÛkO;uè¿®0¸ t­‡?ê lÛ{e¿X6R“45!??žƒw`ôÞ~Vm·W´ƒdw2‰þ0¬CаkN’·Òé?ËÝi' :Õë,à.‰Ö/‚¿Š§m™Ä³[Ä+îShå"ª ùúbÜãÞ$ý¹YEü’¸õDw¹=P4–3MÈè>8AÂó†tÐMŒEÄW“ÈšAühÍQ4GïO…¾ÏïÆ Ýiñ™¨]œEíCDQr¯é]›¿0†Z“GKýÙå8R…2à·{ ÿwË᮲o¦ßvŲC/¡‚–}r5^ç׊%§R'[» ¢ºzÃãŸu´?€œhe’#î…;£B§\A‘¦æ·Æ‹Í)c«9¡Ùk2P ®Ð¿Ú¦š<öj[G¾‹½ªî~"ÇgôÕ*íÚõŽŽöŒÒE&áÙD‡”äoC²zöÀ®(„~ºõÏJº>À’¯}=Šò 5ò>­™¹I{ÝÊQµô”¥"½{sö…!¡·FÓ ëLI™‚§Më<˜ËÔŠ¸\8Oo;î³ñˆf ³„œ÷é9ª<Ïc „¬›%üYDzLæï¸}•rÇÐIÉ’†ójæôómÙ ?ú©“Ö;níœW „o ¤¹Á+Ízé:žpvÝ€WR¼¯Vd†¢)†{ÏÎF¢aA$T:[ Fg0…‰(ØÃ9!¤Õ hÇ»^ñ*%ãˆð$¤ÏT* -Ðq¾[oå–²>ÏÓÕÝ•˜~÷$#£*AÀ‡d|cƒ#QLÊ‹råÄw²ƒºeÛ[´Ë¤üÔѨ [RêØg6då·ÕÙ©»Œ]=ßTÑŽt­*ÀœÔÇÅ$ýq­[ÈšTŠ’JÕ¶×Ùù%Eòļ »ÐCX¬"ŒãDÎ"Þã)8–•¸ã2Žæ õËv…ƒÕUvE «æó ÈÍœêéàGéα * 8ãûT%'mKajT³ææS˜itl7IMdqÇ F¾+Z;å³%-n!WUàñÅ ÄRã4õ¡è½RÒÁOI×"yyÚ»³Âl…ÀKµïÅnx-§w¯Ž”Év`µµÌmŸ›qÜè:ÆùhFÅV#¡|x§ÐTÍ òJƒG6ž÷-ju{> DÆÌÔjDÎ}±÷j¢ˆ“ï“~x6#âk8V h©Cü÷ay@ÄÚÚ74FhÉ/¦“#•gª´÷Ï3k¼'zyµKJDµ°Ù©²άz5ýš=R7ªZêùë òd¢é¼ø[Š”¾ü5­×MƒÑJÍcf²Ô¿9¢î÷½£ŠVV?ºã}ôÉ®…d\ÈhÛ¹=Z¦þ*Ô%µiuãŠcAYÀhHüÚSö9o»)E€Õ/§ç+4ÒÞLÉ;€Ÿ„èÆ¸[o€$ºk¹¸ü”ÞÉkl;ßñ0ÙÔ‡¬Ð¡l8ƒä§=ZÝêÛ%™,•àò›ÇVMß%¤ŠKf”ˆºÓaÕ Ö·T`¤²FÜ$3ëg|¥w™ õ%q}Gü)ø›+^õ}õ¾­¦µ6Iƒ‘Þ¥ƒù·ö[Úèß[^†µüÇ06ö‘¬lhq …Êm¢:(+uÓ~M¦üÝœ!ó©VÃ÷…/`ŽtUŒMŽœ „(fÓŽ»éeVü³—<×a“\j9'#?eM-æ&wêvW [E°¡ÝiíjÛG ¢¹[-üeÒo9+!æªWנǵ[!„¨%ÇpñÔ£xSAžžÒPº„«,ÓÞË,Ý©·U…Ü .Ô-¹Òû[}¸íCEr^‰ƒÞx.‘ä|:QR¼[äå¾…*XõŸ.ÚV†œøjéâHéAf-‡LŽ?€iެžÙˆ'Žþ¸AXÀ¾§ùAÕL®ië¡9W>_(›5ù¿•a'°™a÷_°¦áëâb¯ƒW­|┽z™ÁLŽX;ÒpZŠ ?À£ÛÑ[ä~‚b¨DËaïÊ^_ñz°ëtŠ=Ÿøi]6+ôšáÒ¥(£¢Ì´”)óòWÞ6¬`ÎkxEÄ«¬QžÎ6!ÎÁª»ÙX1ìP²28¿G¿êÃ?Ǩãyõ¥¿+Š|ù€Ä\ !šÇ²]h­þXU}(LbmŸÑò¶Úyâ"æ €ÇRp¹áAcƒ‹éëÍ +‡ĖƒùIª?çˆ}H8Z0lñ™¥a}¦;ýQ%h_Û[[‰¢•ZÚ¯ˆ™Ã¢°#ÿõ¼þ$§ü‡Óõ÷)ñõmKi7ÙÍJŸß`Ž€C:½i‘ËE}5+$Ä4ŸŸÎOdÞ†°øÖ]=qTèoé{$ÞàíF›¸EAÒÙ2cÔ=.™I?xUämÆ&‰g Áƒ—ëìU‰-Œ¡,™±΀0^òNGê¶Ó°Òä›ÞF^ÉÙÂB*«vY{Þ‡HÕ.-ì¬~8x{ AOÍ ±ª¦1ß'¦xŽ7&“>¼h“\^ùܨ-&ž]æ) -|õ¾Ï|$‡¤‘X盢í2Uˆ§0Œ»Ó’,ñ2ôN‡HböQK÷Ìàñl‰³‹ú¬µ·©~L}u2Sp_øUc“ë tzûa"|t¼ÇÒŒ)ÑH3Ñ@Ÿ9¹õ<¿ÌwŽFÔ3‰jP~„ÇpÕ©äz™M-èýLñ*ÁY=_¬*£¢s™5®E¥`Â?l‡vôÊCvz_±öcKRyÛ+OÚ- ÀpÇÏà",hÍñgÖ Ë¾œ<)D˜ÔÇòáH[¡-˜e_ÊÃ×Kiæû¡‰Äû Ê öÙlû@#³£ àe¸Ö’¸|” ¤‹BJŠ úaôgýä^Zdæ@äï—¨>vÜ_ô*{³]Œ¼yÒçDÉÎ9À®xC=ùò.áó8¢àÆÂÖid›GN9ƒ%«ÜY-Óý™ñ¸ÐDg~¹™i4t¬âúŸ‚Ötªƒ¼-œç]u/¶ß/ñ¿}òYúãÍj6Ìã]q‘*œCé9VûKîàZŸ+¦UɧÁý|0_AšVª`üù`÷¦59k=Î`?–é¯Y²û t°å1¥Rð½ŽjZÙôÊôÇêöEt4¸–ÇÏ{V £jò€¤#÷ë_Î@Vn„-ƒÝu¤›\Ë;ïIÃÑAìu+¨/=R@BŸlZs#dK_åï  ^êS°%÷¯Tä=FæŽ ßÀïÇcÓU÷oŸ¨©r[Å/h€àAÑÙìåù$¤eÞq ɨG÷ŽË.8ÄfÙ]FIì/×-¢zoœe÷á;··³UilÖá4f‡2Å¢tK#½W)ΛZšm¾-ëµ%ˆïbªñOUò¸a<ÎðÉQ.0Ý)­kÿ7¢?!%zSy‚˜±«°!·qÇè©rBiPS0³¡ûBh €lÔ£é¾ý£ü¨’˜|êùW²;†òtií¡S‚Íávw–{“Üœf|wsÅ&éxPžz–d}Á½„”Üîö«^Ê?Gå}^ÃÑÎì´°X|¦K–{O”îq6 hÌf#ÖŽvìN"°å›™WëWb1“M"ΡSE ˆ±:©~e7EæÛ²ò­~-4ˬGí”·Û?èìÆß/ê¾Ð€ÙPÀ¦>QDc›5­uX3ÍoB€Ú|ÙIØ}bê¹Ä%Mo${8‚JGÑ2óš4ÈŸ®ûїø= :‹åà[U1&Žê‹0»'Ù=Òˆ´—JFû¤žõ6#UÂŽu ¿©µ_Ÿ¤kC±¯Òm·¦Œ‚&= Ùúq|ÐH­Ú±ª§…!Õ/-$е™"Ö\ïa䆻⟾‡Æáe˜ù> îbhg´Š`­Ý1Š9mÙ蟶l@O) 1þÙM?põÜè^1Œ£p~@’°ÏÄ¥Õa]ôÛ’c ºêl Í,¿>OPM·òr§™dzÛPLÊ3»¨WÓµÚŢ̜з+®½­(ÖÌd½‘¸u†P±f©z/üyŽ]ÌSç›}mö¬fûÄš¥²Bk8l_Dmu@Ç6©Ÿõ¶wçëœ8wg‰i“ŽûI'ÿ6zÜÅKÙP"©·#µ!6ç£Ï#hȶGѸ˜+%{Ñ®ÆSÍ6Dxìî¹7{6hÿÇà#s=v'n¸“Tô¯¬¥ßKëj ïÈh y-Xß£ÈæÚIDuÍ/+–Œ$æIr6ϹX„²2|Çü0¯hsp0Âè T*\·:-5<°ä¸cѯض(Ý7iÈwÙ*ù‰@oxî3ÿtÖ¼&M´¿Ù¿›k¥ý¹vàcÓ}5ß¹l®U3îàÚ‰3“j1Šâk8)wºß×b4 .×’”\–oS®/dl‘™~Ê+ࢣŒÑ½;RP†êÅ—–Ûô%ïpº!ŠœŽô^*™HÕ@¼®ã©mÉ%À·/ÿ /’® s^£) ìЪfÇÒãiÀMбú²Íê6‚ñ¤1«°”§3›U¤á¦ÛdÌò ?¡–|QTÙ~çÕ4$@¦Iq,ÁO v¤ 30L öó¨LÄQOÚ(n;Žoê{ÝŠâ¿@‰HäfÖû ¢lz†ÕÛÖJ„Ø•fú.¶6“Øæ7º­g<´b6R EêÜÚE˜&>WLî¢yìºÙ;Ü-k¡|²¬%â6Êeœ Í@áѹ&ó¥ÙZœ,ÞY ½6¯±ø ¦øÖ< WVId?ò@ »Àí[XL”ÿ †Àûq€L¤/Œºàe}¡®ÒSòÇŒP ò‚£ÇV1=JÏQ™Ú2¼_«5¤ý^—•y²ÔÛßáÊ­*ëËj@€û6­ß>¾…ޏÈ‚WÑPïÃv6(+ì=ÄæêŸ­ûtÀÐôÒÞíLàw=ðG³¶µ½ôTúh«Xôæ /×P˜íäOô¹8X³¤?Þ/\™^‚¿LÍ• ˆŸÖ#y¬F“ÃYæùñ'gø•ûçnCMü䊔’ƒ®òÃã´ ÎRÎÅ}W¨GK‡à?«Ù­àûëí~¾í瑌¸Õ·èÓMÕrB“ûßE¬×’ƒö¬f¼˜ß¢Íé;È¡Wé£ê¹]CI%tÞH)9¬6&®ùt¶Å»7Ï /Š À4j›D8‹T¿3ß^HÄ,µï‘£-–õ£>kˆ0]ÚäHÑ:ÿÊÂа+›VEžN²¡Á_F Ù® î„0É[+H"æ³þµôjL1Z“êkŠD ¿˜…”¦!¨Õ„UAÑþúk½h›”RK§Ë… OÄ’¬t½kõk8oƺò=×®Á¶ ÙXAáèj¶²ÞÑQñ1 (Q6/8iE{J¼¾SQáQ’SÁp»#??ŠÒaàF®Ñ­„‹’cjŽŸÍ73í¡Ö½kôðþ£×m¢GŒõ/ÈYÈ\—³$žžRg‰ÿoø¿¸ÛVH¸ºü+é¿¢ÏJ<‘h*ÌvsøEqj½îE‰XΫ¦5eGü®ºLYðÕÕO‘wmJIÍâûŸ$ªqz7Ë2ª4Vßf¶[ÌlÀÉÑâ,RòÍEH–Ý «eKåÙ.LTR³©^Àì\”ÎÕ:ýuUyË&À”gÚÈŽ7´+ëeŒŒ,ôSþÙåA˜±4bàD‹ I–¸Óê¡?»ykl­LÈ1÷QùE¨çFýPØ`>xDÐDØY(•“%ò «V3|*'ò”+¦]åÅ(hl"Ðý8üÖÂŽ4²£.ºa±ÌÑáUû †ZÍoeìÇi£FMV´$›U%Ë'ØS¨µ¡ x䧨´©Rô¸’‡Y¯AçzR¯§_Ób´[4 mýÉ•M®õ(¢ºÄšxžZ‚*eE–`Æuḛ̀°ß,Ç!€„=.P°Öó]ò; p8…”C'0Å^7h]æïg…½=B™Ò0IC³øj^¹Úêö‚‘: çgýô+trgÁE4í-ÝÄ9ÐÇÄ"'‘‰ëȽO Î¾Ò…öYDdbè#ÍŸ#—‡›òê`Ë¥ ú-7\©÷ñƒªŽú;=…SSóyÊÝT6…µMȸ>ì´æ¢DR‚ŠÂÊÝÇ€O8Ük‘ëºFÙÇô9XëγMè!1“Ñïšx{aÅòµyø#§éCf ºÜ#ù_±}A –äfñeêÙù„Ü jŽ6"¹kÎa°Ë‹¯7¤oÔW’=¢SAà7w¿½ÇmO•?_ š©õ˜>ý~Å­¿— ‚Øñë±þZx“ìahc9å]Õê Ÿ·¹+œž/똞»â‡”I™^ªF¹TÙ—¨M¨%Vã›hã¦Z eédï"N°»|EøWwÍh½P3Çåi# ;²´EÜvs†LÀ,daá/ºà‰4øî¢íÎ{°]Z3 ;Ýœ#¬ê“14Îæs¼wnhá£ÒGJ ´è¿V¸âBàÀ½óžŠ.÷áUüYˆç4ÍôÍ—½[ó±ÖåÃt/üZJp)æ«85‘8]Þ«Þžy¸C«[ê¶eÐÅÌjÈâcÇþ(ï¬M£†²ðG‚'Ç;ò˜ãá+Û½3öç"˜¤:¼~ç Õ_M…éuLî"³B^uX²ÆFÎ.9IrRíóæ~ªk•œSÛÛy ÀWÑ`OâNx‰jä«e(ŸR¯Wõ@=€˜ø\æÓf°‰ï˜Œ$Ìø{M;ê=G¤Ò¢ec³/ú·±Ú‡2~Ã5~-*ŒáÁÕ܆Y¦äÔó?B ¯Œ;ÜýüÝÅRM˜ÍHNk½>)…²þǸΉ‚<ÉCøõ¢@ꮡŽnJËÜ«×Ýãnˆ¹ˆPtÊ,x÷È6pÌB]û††W«3Z‹ÌT(zÿÅ0î4Eáä…£ô+‡‡x¸)«*w2m%‡ªEg–?†Z\Ÿ|ê|Ý©;&q—÷²µâ´ý@*ÿIµÄcÚ™/C†‰¾?7Õ{¼n†©X ÜìCzf_1Ttõ&Ó:Ÿâ×tÄ@rXÁâãSK˜ot°WVÿ ‚ïY%0uÄþ!$–1ó‘KÆí4Qâã9Á=¹­Ýäº)# \4}ë#Ë,J9ôwFÈ©+çßópØé—‹Eíƒöû±uñó ühú¥Šâ²RÎ ¥º]Æ›Iújù?©›i!×z@úzò7Ùêà‡­jÿ}käUî ±‚—ïÄ¿ úI`[¤Û®0H¨8w"çnôÓ~UJ~/D66š-ÜÂRÊ䮄ÄðàÂÚ¼ .@Ö?ca[z+ë×å§ꊽêœ&ÆO:SÊÓ"y¥‰}x±¼y{èM”Utí}·½i@¾2á!õÑp+‰JnèVÊxú§ùÉÜÔF±X"‰»–"],ý´BG3« PÀ°éLÐ{-ãÞB¼z8C1âöWS0sÞGˆ!7ºáÀSÂW‘èFŠR¾£åSœþZ2mU±en‡m 9 ˆyZ{ap5¦Ýë C8|<½ZW»Ü?ÒôP†"ÿ)N%<¬¹Ô† êü­‚V® Æ"<ø5ÂÅx’²üá«áÚ<âPÊ´mÀRÒVº$“ Oäck(pEâ=Úý£â±Z%ö*žpœ!oçsò^ûW©*» ÷¼½¶Þi”éòwLÖ¦?ŸQ«;Ô6 :`pÆñ2R÷õ߯…%!ôÜuƤIM³šÁ4ÀÊ)ÍŸùŠk˜ê¢ü²Dø|TiÖ´¿CyÆ’åÆïÔ2á±w†°üµ)¾«ß²ìëaÓ2†þ!90rÄžpãÎjÂsí,ŠŒlÌ÷ EtXÌM¿rfË#ÉUïB D¶âˆÄz ÔQªÅcrhøýAuuv•׈æ½Üθi—åI¸™(AZ´þ8Ò½p¹'Œ¼g.Ayr¾â®3Òj¥UÞ„Tëd¤MfPµ…G)+ì¬`$2o¶‡Ìû¸ñÒ‰H¸,(œ>7w',§ULÜN4ï䥅.2 œ¯oÙ7ä=—…ºýµ½OˆiØsÂÁûðÊ Çðö’ˆà›¢C.G½xSF4b ¢ þÎ4a?£».éÃçh¹Q¼\ iñX‘=|lý{n:V¦ÌðÅtv¯yÏHµ\vŠ®6®jŽ]8˨ ࣔ£ó<9›Òh÷Ý`Ú=×,h‚öºD–̾s’æã¤A”È>péÒTÝæéè$Ì¿ºNÄÒZ5«˜.P¼{ŠÖÈ´î®ddƒÄ;~y«µ.©Ù€’iÔÀ‚“ØQô'­âøÚ‰ãmI~Š]ï¿OÕ¢-/„h!íOAø$rÄk|nF¾‘Ÿ¬¢³5 ÷:£ âq&mËŸV>çeS§>bLagõ·Ììš³tÔTL´ù<ç‘B:¬ÐK{-œn³?&Â&¬ Vü-NÛhëGf[NžÄ4ø®VÜ‚¼÷¼ ÑVØ^Õ‰{àé‹ ÷:NÀIÏ©–“†­:ìÆ‹\ieîH0~ÛpÛIž½Xç/GöªÙa‰)öX%Ê­o„œääÄýÒøêNe^õ@Gû=¨”‘¬ÁŒ_<—¯‚˶їóŠÒ2ŒËõ ¹µ¦ÿÎß»&ŠpC§»å …cC¦10œ­¤º¤©Ó)Ï5å¡ȇÈq@M‘¼Ú¦Ž5©+ÈS¨.ñ´ ?ÇÅ-%‚?ï5|UhÆl 5rÎü,‘ë]§-£!ÏcC*^*xóNzàë¢bð­ÕW—¤˜+险ÁêÔ—MXQ¥ä'ë{–GæJI‰¥žk·KYiùvI4#ÿ!š‡ò½y^fU@ÉGDZz'˜~¿0WÔy9Ú÷“£aŒµ þ-ਸ਼?9Õ&W@¥Å7ì<¨ŽÜC]LgÓ儾}*†ütM5çîYSÌ“{ß(^2çxp=b–h%éjaœK—·Ñ"²Üž“ƒüDùlá0äe¼ÚÇõÔ~íxn¼uYÿeqéÖ‚?<Æ%×,+|\lóð7E3|_‡Á‹¬_^Rkœà­UtMµ=Çh,ÆYJȤt)ŽüÌ ^0xÐÓÃn—‰(u³Õ·¾\+WgTN½¯‡aúCl^Brm+j ǘœÌqülÚBœ3`š!¼µËl΀5s2`ßÂõ7±ÝÖÏȪÜÎtÁ…ò <ç%™ A¡¨OЏ‡c®óÙöAKÒA³-L[Æ0œ»Kmam$R8š4*ÊXÑ|p ®TøFc:ÞEÄpxçKKû”Ù—ŒÉèÏŒ Gn{Ö©¾sJ Üã½5u®ý3`â¾C`OQv¶R®Æ¾fxâ4Üs¼¦?º„ oÿì$ì¨^²Y#÷^a[‰eñ:Z¦ÅX´ú•éqþ ÙH©03Ò6îy’ ï\»a‰ ‹Î¶%¼afŒ`®ëXijò0TE˜bB´4u,xu@nº—=©Úœ(ß-¨§MlØEQÒËY¾æ9ΨšÊ³‰”Â'fàò«U àwÏáú¥ØÂîÔÃs?_PÙúÊ(œd…ûm² 4‚þ”bΈ™ŠßÍqú­JdÃ-Vb>æQ((ß±¡í0(À:®Þ|Ÿ*÷ÜkÏ`umÓk„YјžƒÍÃuŠPP”À¡ßî diâËštÜ£yW§Ý, <5@ì^̺êIP‹Fž,=W%îgu¯hjÂUé:ȰœBÑïí‘•W´êÛŠ´Ux¦LŸÞ97!‰_š¯ºâ¤C1ÑCJ3 ô,c%°£p¾3¡&o¶"4lK[ìø¸Ô àꡨÎòoöwj„©³GRÂò(1ÊxNŸ÷u'Rà§cÚÈT4û§BÎI¦,¿£ýã–‹ƒO¸LÄûûœög>Åøo¨É.­1¼òWÊ-¤¬:ľGEü¹«ÇãQý2Ë©Ÿ K›.ûç˜sõ¸Û8žhÍTôSûPq°rîÇж:ðkBtÜ~ïa.,]»B- ð‰dÊ¡¤Ø:‰:'oÃÌüy<;9Y~¾Äø[¤ñ×m‹¹É·O &°ë5<^U8îŠÖ~ñͱÅú.€·„ô„ aNyÀÛ?ìùrŠˆ¨A~)·ômÿµ~ù-•õÛ~bìwLœú±Oåš³ë'æb‘šBc²°Ç~×bâ< ó•¾<ê ÜTÌþ;¥V,ã÷A¨æÚ—l[æéI ]âj’ !ĵ%äoz:m8²-çFçø™?Z.W5’mkI‡’åå±&‹îØoÆ`` ÃéÖ·ð¬ììÑÇúX‰„à¦~ MºJÃD¬.}–¬zžK x„Fþ²]0ýÃèg÷¼vèúD`Öî‰eŸDl‹˜ hsŽkžÄ—CÉ–i€vFÂ]÷túf½Û©¶Ïƒu `r#\RLF@•xíi–Úõ°á/Ü´Ký‡§óMío¶üJñüsnõcÑÃpžÝ¨ú¿èÜS«—^¸”%Í¿µ1‹ÌùKx™0>LÈyd¿ž2™€Ñ§‡¦`þ²-™’£VE5lŒ»¶Ÿõ†#8+`H3†Ø Æé  Ã߬±vãfÉN_exóiŽvz Џ/Çxn“*d/¥`¿ÿ¸Å) xˆ:á÷21ANÇQjñk¡æØ‘7åAºŽ2Njh"¾ M%t‘ÐÞ_ÐR…t¤]Å7CTNROql¿ÒVWnÉ:ö$Ù´Á—Å 1=¸BÅöƒˆ«êâ`Å.ºæh²"‡$sf~V;ÏSú¹¸2ââòÓÖ›R äm(•RlV®}“ŠÄJ!!1(;Œ&Â÷]ñ´ ¨š)ÌÀ±Ù—zOHës¼ØHbôð¹—16ê+ʬ$ 2´;E]NÍN,¾à ß|:,j[¨~wOSðxg~ê8‰'çâì^%8á·˜zèúò"4vÛËçâœÿ-Ý} ãÉa—-U˜¹ÉþÆÍ’(ÎÃgyó Ø6NA(W¬¹ºFqëtóŠ’ Ö€ê=„F ڄ䚢ØM¿ù;=¨ÖŸ·¬2ƒYdõÇQžÛE-už;®“6ª¹ÕD)´QÂçÂD̵7§°‚j—ðwyƒ2„=Ôt&®R‰¹TÁ1¦H'§«e¸Mm ŒèhÇkwNz÷‘ù ¤zÖÕ€hÿÞ|û»)γøŽ)B$i陸:.Éæï°z,ÄOtâjõÄú‚eS5ú•°Mì%iöNúâŸ,T…^žù²…¤VÊ^6N š‡YP|ƒ·@ˆ™z›äè â'ÐÙÅÝúøYú €¼–þoR©»³\{¯¢ 6· ŸÁƒÄ”ô*Ð×W(+}Cñ½ðδC¡(¿u<êù˜Ô»‰&,òüuAí”ö¾@TúÚ„ª“ ôcû‘cóðJxê™¶^©n0~«”êHr6q-<„ÎÎq º³¾å‰â—qgb‡Ý}ÿx}Õ[̾Ì-'Æ_Æy•àn̲—eFÉ:4N.Aòƒª1LÞ"ÿÀù÷cí—bv[në‰C†`îd’zV:Þ­&Ë}=zZ7/šèõ¯C%ƒŒi½Êê9¢$‘“  !RŽîüñ šp¢pO€3››{-R_~ƒjŠúžOÑÏʰ5¶˜BY‰[³´ñ}+=ù‡Þÿ@ER/@¶q¹ >QôAó‹ÿ†Sg9­î/‹¯§ ÒKÿÅ%¬ÿZ‡>±™÷—™ýŒe+Gÿ­ˆÂ/¾¡z~ü+‡UØ–“²Ù¨0ߺs§e£ï`öá$ ÒŒ}†\™·U÷ù)áK ?Ó^ÂOzgö¤VÚîÉqßJƒƒ÷ï:+)59ROØ8Št6Õ€~ÀÔ­=o Ýó/Û}<ø¶„J—;–è4„ù¹#q?ß½ü=~>'ºQ^ 9h킬#b€7n8[f£Êý&†Hí7Pž5H‡r< ME{þ…¯rl0%ú•Q„Ê,‡éj·Ñî´m£Ùò*¡Ì*Y¸´{uZ8 ô ×¼¶ÿ›þL™Ï¯m:àô Oº0‚mâïñsÖŒÕ0âæSxRÁSyoj˜Sü‹mG•MvâmIY Æu}¬%ŸúçeúŽ(Æ´&E}<2Èè c}©Gè2%ª>ÏaõHS¿CËÏËå̪àLJEÜCJÍ-¤ÍÊÚ½ãp úÕÈošHLXw–à ðŒš²mËÙ[© —kMF‘S&zvU¹/<`?†Q®ƒÙ Tï̤&S¦quEœoµ‰ÚëOìÙÃqÙ9.ùý4äTòp]=Ñæl;"€y fç=¿fÙs—›f“°ÒþÆb-QñüˆÒ:R¶£#xmí*¦^¿ë@zÓÀÇ@LÌ=»—0;œXP&,­ü`LìáÀŸ˜‹~ßø‰'ÔÐ Ôèyþ-9 G‡FFjyµÞ  <ÿV‘ÿ«;ÏM 0ÃZ\ÒXÎÙßÕ‹¡H×Ùà,û¯c® 'tÞ’î¾dŸ×_®ûw_ì,Ì)ž%ú£áK¬ª¼(³è@¿Øô%•ˆH}\(ÎÖ¼7'ß´¡é’„)ð[ ã ¯W(&p—Tt>4ÎjyÛüì;¾n…, uƒ(/u¢Óã•§þ×€3ƒäó¢KÀ%ÞaƳ°^E;Ê„FÐ<»jiVt7œRZìÍsÞ.ÐÿÑòXUߖaÏØ~5g5/@tI6 ÒÉ‹;p®Ø±¬2~ô(’ØtŸæbúyÀþÿÿŸ00µ;»:Ø;ÛÀÂþ_i­Cí endstream endobj 1008 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-27 -250 1122 750] /FontName/NMLYUE+CMR7 /ItalicAngle 0 /StemV 79 /FontFile 1007 0 R /Flags 4 >> endobj 1007 0 obj << /Filter[/FlateDecode] /Length1 712 /Length2 1475 /Length3 533 /Length 2009 >> stream xÚí’{ÄÝè|`íí±€KT(€ÃXÂ:{‹@ WWÀƒBÃø€™«ùg—-àÂyƒd:? d+Ct@å0 /@€ ‹ø|þ%ð#AÞ>‰F °X€ 1ø@0 ÁëÏHp°ýÚfFq¿Iû@^¤’ 0SršJJ&f &‚°öâ(W•,ë¿P}NŠb±¼èìÏñÊ1ýN¥³!–à_:‡Íâƒ<€Ìa‚<ø{ëð+dBQìïU>1\àP`¾¶ H2)Ÿ„ÐY‘à—>3¿‡PŽí ‚µyk€Ÿ»å—ýªQèÌ÷pKýlþRcÿ]+‡Ãƒb€4ƒU•ï·¯]ß­å38L¨|:̤ó˜¿5~ÏD$rbö[ál+^y°8`‹ÇÄþ§Ñ†öFnƒÁØÚ¥dDñx Ìÿr ”ûýV‡@Êé€` È@œÊׇþ²{í ˉ=ãw$ÈUÚ(ˆ[…oóð“OŒh± ÛÓ#(ã §_SÒO¼7ûëÆä+qä ÇîLÒî Æ%=!7wJ'¥r«f½ŠÀyÖ·ßé7vïYà÷Ó,êU0 øÜšÑ_M–]›‘Ü«éd–ZÖˆ;D©ƒÕ*†Ä=Ú3ËòôîÉËjðcWf ž‘à2N/–¿.qÖoÌÙÊï`Kùæ°gÞ9^££QO ª:’) dOl¿æy(£}ñël6áÓŽÃSƒlB@ÁêBºkR'ßÿjÉÊ«žšóbK³õö7w~¹üé¨)òOL!¹EGFj]~ϧö_Ï õ,Ù°†p"ïx›ä…éøß“ÇRâô.»Ë<½¤i'Ùx¦Êâú½Ï–6§i9´¨ Æ–¨"OÍL]ÍA®ÒàN¤|r©µBûÀrÿ·t³Œ 9ðvÔÃÊøîýlÍsþ ÆP#ÓB÷®tœ¶%W¯žu²ö®lOyÒyê¼OÈ7黋ƒž´²§aƒõœm}¾ »Ý¢ÉY»U7Ikr".«5ÌEw—Z=zUT«=ô‹Ýù2©(Út§V¿0ºMl#§j×5]ÏЮ+Z7mÆöUtPœ¬ Eë«³ÕšŠ«¿h[e©ž©Yvá˜fÒÉøËZr±· Ô9ßfzŸ½‘ú–®‰ei/¢g£º´s”¶¦qj6-¯NúI×dúøóŇlälÛF¼PÜu¢ìÞá‘P…Ó.Ö{h"¹˜2›Ù5Pø,»¶Ìº§€NñHKµu’W¡.,\åa`!+É^êõneHà’”ÅT£O³G®Éƒ½Q¥âЖ¦¥‚~C›bdyƒ·V®+ÑŽ°p¸%3÷¢™Nxíú ¾šú:f¾ÁƒÖhür¥;«†¸Î-*ß4UêF®eÍ@Å+½w:à#C›6ÿ¤~²]qØñšœÞ!6¥ZgÎ<é´÷õ¼ÞEY‘¨+ã+d«ÍÔþèq/’Qßé/L¿='DÍëKã ¯ä:ö#ZEgîÉ)0•Õ%ªZ¨BmÔGW~Tëxcí|À3Ë0ÔÈÛ'wSÓ ]ö3óþÙ‚váņ±¦Äíõ·Åwc¸ UFFãfg7xV8b7óÁÌvh~Oþ¥8qgèÞ õ’h­½:oǧö´nGxNF<Ã>Á™ú<°!Bî¢ÕÑ5eþüBO¶9lùû—?8Êô=V£-‰iYÕé%é€ÃnÚÆYó~ÜÑõKp”f÷¹ñ¶È\âÓ¤¡Ôª{‡¤¦aU,ÑóÆJõœ—*U;žºkœ¯®ItOœ”­Œx'êa—å ,¯×¼”ß9r?-Ö·Ÿ„s@9lr–78¾˜ó³Òìãþ0×rö樷ïSyý¾¿¿mY€ð ƒ1úÛ.µz­fÛX„<öS4·Ÿ_~²bQ—_Hª×9™ZÔÚ+;ìnEw¼Èç%T»ø£#2bˆÅ+ö(Ò®y£ŸùsñÙ¶½%¢Ã¾˜fÓÙ¦Sgt‡ ˆgÕ©åéÇøõÝž™i¾Îƒlkô^.Íxý6BeËÅdâ€}p™O_~ŒØó®Ì|«·êÒâ@s#lƒ\ Y£áVŒÊ›xþó –džþ>ÉÎ)ßhø²ÄƸ Äø´Üdâù§ÚŒý™ðù?R&V±Ï8ÿfv™F¸‰¤ˆà˜SIÖ“.Ý]]µ6@/Ådàc°¨ª9å¨äl'5)òIíž*/ºüZ3~è¨kÌùAOÂáD@z1åƒÂSžð}eaBk†Qê.]ÕJ™C‚"Ô¬ôØPPTªjP¸t@Õêk%¦Êç¶ž.hûá·Mp§ïÒýý™%u‹<½ÑÃAÝ:Ìj• M<Ñ9M=ð°7ìöfAïÃyÍÓ°¹Q—“zùò¸\ºð ºôʼn ±ñ¤•9¨·÷;bþäƒøÀÿDƒÒy|›Î‹@ þ .»6¸ endstream endobj 1168 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-29 -960 1116 775] /FontName/THTNCD+CMSY10 /ItalicAngle -14.035 /StemV 85 /FontFile 1167 0 R /Flags 68 >> endobj 1167 0 obj << /Filter[/FlateDecode] /Length1 724 /Length2 1314 /Length3 533 /Length 1852 >> stream xÚí’iTSgÇA¤Æ6{*n,—jÖ „E… HÇ6!¹„˜›L.¬‚, Ú"Rd+¢V‘²ˆ0²DF@ ‹`<²ÈD¨Ó3t¾Ì™oszï—û<ÿÿý¿¿÷y_œ—·™#G ¹ÔŒD Ù‚4ï@$ˆGA,”'Dè,²IT* tŒä‚$+H±µ ÚZQÒ„Ñ"7 iFï]ÐQ‰xlz°ÐpH a³`Ð[ÈæAh4ad¼ÿE 2 1$’@H ‡ÇFÁPˆËCó÷PnH˜¤¬µ9‘$ $+¸@C§¨ ä8ä@a€¹§P±¤`ù¯±þÕúp—Höd Þǯê:KÀƒ£s‘($=„H„¬·úCkp‡)X¯º¡,˜ÇvD¸0š‘, D²ÕšÀ»ð¢ Že‡ƒa,X ­ö!„³E1¾UsWOÝä·£]S½X<õ‰Ž€@âïöÕšô{­“ˆ D"IaT¼¾B֭挰…½QÂa‰8ÿjü‘ÊÉIõµ™4£Z+®‰d R(V'þÝè‹ðŽDBntЊH$ÚX¬Q²#E"AW¯ƒbÇê0žbJ±Ü¼­<å¯LuMæ™s-ƒŸú7tÊä•9ø jÒÏ{ñ Õx¡gVˆLÖab:{)9»ç‰¾Üª/?În3Ü^g?rhw}©z~¶ä:Ù‚ýæñto“{â†WJÅšÄöÀ ͧø]v4µÃV,LùzæIÁâ±DfóçAÜí•öþ[œû>ËI¼U‰E‹Óíÿˆ`Dãª4~9žINÂvéo±}Dñ̪sz$‡ì.á†-fK¤Ó÷õÒßHKßQý*¯êE¸Ñ¾ô·³7Ô$CùÀÞÿú”P²üÅŒtF³‡oz8·ÈvöÌÄÈŠç;éÕx˜?¾-Âþ†‹ûNcîUBM®rx¶”*Sšõû4—s´0.cß´]†IþJÙ_nÕ‚‡8÷¨ùY®§_¤eûÝÆ×÷XÞ¢;`U¢èÍÕ€;i‚¦‘¸àtí#RZé7£¦)¯í|ú Ç»‚޽Uú²¤Çóçè–kaç½<ôý­™ñ–äÞ¸s=‡¦î™zÿ⮿“™h­;MÕß±Ü&LÙªc ÛFt(îþKbîWQI¿ìv~Íu¦‰‘F£4þã=Ê™MT<òj{+Aõã¾k•ŸwJîÆ,LT 5ÕÑ1\ô¨:“¿d4dÕð4vlÇÙNfq“d¸Cëâ©ï•“<¬”"—uµku;ÔÎæ]IÀ“»·’Ñ[ÚHr¹>ý®÷óæ>•,cã•™¥Û­Ý­mápñ%êágº/”n} ÜØýòd¼{ùë™lýo¤7.GO„º¥Ncüh°¶VcÐP>Û/ö;}J¯ÿV Š˜OÁ9–Ôóï5éÀ/ ݺû³o·r>…>>›£rU%Ý|±qþLè€OZ†×xéD=“²ƒÖÿD#U)þèâKú†Êiž4ñ»@ZÇÖRíúic£¨Îx.½§ÝTN¸¬…½fã³7¦U„_ñZg[ž‡—„K Ö~ÔŒ/:§‰ícŒäŸ© ¾‹7Ê{ʨ‰±ýØ¢S섆í„ßÅ yÀ©±ñ»Îd,•Os}RõÓ\XªŽŒQ‰r‰† ÆDvÂ@s@2WL{]Ø—LÈ’žÉÊé Ýå‚PõF}À€À \z’öóQ›M-U»b÷:iõ¹`¢Ó[õ<Àp¥²wÿòhÍF‡ Ò…ú_§ì¹Ý)隥)m+ê̽\+Ëf€Ì˜júž“z§‹¦w™³«5K\Êö&Löc;mÂkWˆ=({dµóžG41ÃØ§E‰=Zææñv޾_ Eü–&šcÒÉ9z9µÁÝ3Ç<üuÒ‹wg©ÊÚ´B¶H*Îo&cvàK~˜u;ÜðÑõÑ:‹[DZ]FÉ–Á]9*pHwì“b|ŒQ 3GEk¨¿Ó¥á¾å-µ+az£ESKÕiÒ+îµÍ#rmiÅž‚ÁM!Ô¹\«…>á¿úÅýxi“S~â—S^›• ÛA•›:Ë.’¬×‚h‚®oá<Ú<÷v(Ä2®Í÷GËg$•¹ Køfç²^·Û[Ë„繘9Ÿô“'°–'ŽKΘ ®3ödÁFsþâ/?ü‘[Ú endstream endobj 1185 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-163 -250 1146 969] /FontName/DPBICU+CMTI10 /ItalicAngle -14.04 /StemV 68 /FontFile 1184 0 R /Flags 68 >> endobj 1184 0 obj << /Filter[/FlateDecode] /Length1 728 /Length2 9473 /Length3 533 /Length 10036 >> stream xÚí—UTѶ¦ ;»»ww Î6°qwww÷`ÁÝ=wA‚wwèœsîí;úÜ~éÑo=ºV=¬9ç¿æúê¯õPEE¦¢Î$jno ’²·sabcfãŠ+jȲ±Ù˜YYÅ©¨Ä@&.`{; ?(2ý;ù{ósqó³q##SÅí<À–V.@Zqº¨x€¢ØÌĨhâb‚ümbfb T·7ƒ\<™@Q[[ Ú?–8Õ@Î '79322Ðlæ4Y‚íYþ%kgaäùWÚÜÕá?Kn 'ç¿\@Ú’ÒÿršÛÛÙzÍAÈ,Jö÷ý¥ù?ûßpý{s)W[[%È?ÚÿÓ¬ÿV7€m=ÿCaqpu9íÍANvÿ.Õý Ndv…ü{UÖÅÄl&jgi 2±q2³rþ+v–{€ÌUÀ.fV@ [gÐ?ó ;ó'ùëß?9X$TÄdÅ5þãíþ«ªb¶sÑðtYÿKþϘí¿â¿.9=€ú¬mfû+ü;þsfðo»IÚ™Ù›ƒí,ê.&væ&Næÿ3ñß©ÄÄì=¼™Ø¸9€Lì\'7›Ï÷UjÚ]A²@.VVV^vÞfÍ\œ@v.ÿ<ù?c ð_—@ r€ºª"í í .+®Ñ7jÚ ù÷9êoty¶ºpóáNyTø[†'~ixêGê;韛їŠ³ åc$Lå¿B%˜Ûqo[NáÓ«|8¶v¬nŒçþá²…£§Ã^ÆñF*ÜTáðÈ`aÌ)ïôx•;¢eØÞtþšb–°1Íñ.zœ/ºè7ýZà>FDTBÿ:5xÓªo`¶Ùg0ª¦í‰+±¬Îé¸ñÞCót ˜8µ i,w%UÞx…:MäÛ¿ Xãw«uªÎ wþ¸Qó¦Ð»ûãt¬–2 öÕ#™YO¦G*Ú÷x¥0¶³…C¯mýu!ØZ‡Æì >W\K Ð:SrZì¥>ç>Fu0´¬ŠïÿÆ{:ç3zçG¬#îªsèI¾—aú˜5#Äá§ðYh«òzW¼¶T½¹¤¯u¥™%¥1„\à~šƒh~Ò¦ÀøÛɵ¦¢NÚÝU&"ì¬j¢ÿ›W´]üWVi’_Þ_Íu²@cX&‰t—ÛÖï{,(¼h1;~ÏvyÙÆÍ„z9M’ÊK?YXRxpÒ¿é¢qµK}•H,sÎIo^>ËÔÓ6âw«Â½À.«Q¾,Êâkþ6Üà@lHØ7VAcl®Iâjþѧàqâï^ð Ñ¡ˆDQ™I³=_ˆeöµ~ñ û&<>c$É´Ó63ÿGŠIš“É礊×;&4èVóœõódA¾‹B[NçO0à¶~1ªÅ»ëF Ò¿w®#ðQn¾¦Û…äóÅ=] )  ~Ÿ:@ü•L7áqšr» 7¸v¼ÊöÜ@‹}@†´‹h™\)Ríw§dZÏ®Š^¿8>’Ö©±ð‰ÃdS±0±B¡‹b ʾǶTrÝf^Èí/4Zrf°ƒÒwæaEËxÙÅoX>èzRÞ>Ê Í™mê–ÔÉz ØFbh¦jõLýL’thÿ1ŸY ¯m)UöëçÊ»·lYˆ5ÃHo«ƒÈœ]¥¸Ò[dÿû‹P@`›WP[r"ƒÖ®«ÅËùþó‚Lº{iäîµÌ“—!…-µ…ÙQ/ï¶Ý#~ÖžPGPÀ×Õ]éï™ÚÑ™ì«ÞÙÖìä´š_Üc¹üçßpÚ’ð»EÖÜCècWÓ¹¸¿¸ÉÕ¼ÍP”]#¡5Æ,/î—ªCMoFs¹ “æÇ­>È×qgÞÝP8:ÌÇVX"l¯4„_P•/¢ЛBýpÜÈó<Ÿ†9d4ïYÎÔ’ŠxäæPqØ×½wˆwm^Glc‡6±v…Vk‰òŸó%pMŸ'ì{«¨‡þî›·w Éÿ®‚ibü3wÒ¿©‡[Â[a¡f&±Öé¿X¬É|GX?¤±”û¦+â²æ­¸á¨I×~²ÁW(³¬™‚Šl\¹|_2Nƒ ÝûðM¸12ÚìëÓºÕb!™u¶wðšÆ) ß”‹^Œ,Iæ“|vWc!T¼újîùªTèâæ¸É.™Ð1çf¶Æ^½›x¢](*ÅÞ#¼¦õsGc:¥)¹¢gÓÜ<„}Jž`$*øäüHGT0Óu’jƒ†óB÷ä­2€Ò»Ÿ&ž?')¥ÖG†/Ä:n+6c∠cèÍ\ض~¸=ÜX0¦|Ö-º‰ÙÝB‚Uáeqi¿}æ0‚Ñý3>Xß qHe¨D”|̵ÒÓ]¦|¶œéÑF#*í/Pj½«"ñÞ9qÕD˰µ$в$ïNPÛøc’R«P…f*Ћ1¨–jµ¹‹aQŒŸ…¾‡˜aêé”ú¿füL2ퟙœJÐЙtú¤¶‰H¸Om#˜¡³Q ðÒ1<'G`à|·Ù“õŸ_·Mt/ÖwÂÃS¥æ%¤(êñ‡¢ÚTœwÒÞìÄ? TF÷£hîx?®É,Mm½0lˆ5=~5œ Т’ˆ&wÏäûªMÁn‡îÜ…•§~§uÖ`B~$ÔÜyæ%jRä.®–ŠíjŠ‚€¿>¯4þ°2¡ÔÚȄפ<ßÇOypTƒÂ4EG#`®ÐªÂLa¦Ÿ úzŽ>cbÜ÷θ†ýË΢ª»cPW#ù¾yåg‘áòy;'áQ.K`}ýÃYzý„t/ïΠù çšþa©ûG³`Ž„Ï–!cuöT­‹S¥? I쾊¯BÚÑøp¨•͞߸µXS ´® 1—3*ÁÑð‹É!×"$’5‹é `ÅržD]<³¯†¢1÷ÛOnùÎHÆð«ñcJþ.:GÕ/p¶TÇæÂ.rœì­}|w޳á„.<œõþâÜ-‡,*U J´¿8ðC:O*6Ì*" OæÄh¬êä­ªˆG²¢Ñ0 Ê6Öj¾Øð P°2ÛtÅUÜH•±¼† ,P@L>«pÎïšYóªú^AH#ìwÞY‡$‘ÝÌXzêMÇ3˜Š7fXÅO·%îé¶mÑN•%bšõÚh1²&yhnAb¾Ûõ§Œ}ž8Ã0MM 2¡’U ªÖö€Öý ‰»¸©OÏ¿=j©›z®aåZ–±fטB¼¡ÇK]éÌh›Óú2…YÑTš¨V/»ÚTþ˜z»Ø)yœÕîÛL#_©+ñµMÛˆm²ã¦½œ¼]•õFþ6nM†WºØ“îMw ¹Úà›ƒg ~JÇ—OÎS—+Ì™KWðæ.n*}íp–ž·÷·¤%YšéCšöÇJùƒTB4Ýîƒ:¬§˜0ŒIˆê^žë®Q"U"ȳò›~€;j÷øâ¨Ýõà‡G»öáJšõ”M× xvÂñ£MÍQóf0úh§3. sÔ Á"B"‹Ù@55ËÇay\Ú•O]lQø9ßßY‹ÙYk؉äó œ9¾z—ê¤Tûtó¯dõ-Ö5}üA úr‰0Sô³ ª´¹ sÞs ¾Ý-qÿ‰{ŸO\œjñ)\fòç\_ߎzJtöÂ¥{d§}«B>Ï2up˜¢»qNÐŒ®#ßK'&/ÿ˜q·¹@tiÌ/å©ÔaÅ%¥x¡/Þ㟑EaÓwÇ}›<¦£Û$;q^¾˜L2ÐÀÌ­Ó$ÓXŠåGŸ+G°d:"Á;Öm-FQ'2vVÐàó!<§ýô»T~ƒ>ì8òàôSF~ ö …β+ðcEUŽ5m{ 3¤gs`üþ!™éi,óûi¶!šŒ­™yD@íÒïÇwmʪ¶¸/K¨µKºg+¬Òº¿á÷Œ H‰“ÁõZ¥Î›„YÔ† .¦Âµ@£®Ÿ¦îHo“ˆ…èQýa‚) w#$‚鸌|ë*=X¼‡‘£K¸dµ¸k‹rW³1ÚqͨBîßi  Õ Èáì6UÂŒäo-;Ýù·LâwÅ´&³‰t3ÄÓ<š" 5\¹9£ëÃ2éw³ÕŠS7=W"WGä†KfÔ!-S#ŠoÌL¢š=Q^ØXÓÕâÌ:5b:KkþUᦞu[/¦ù‰àÂÝ$^ý)NJ¢/£@àÔ¢@ùRFgA}"&=òF±uåÑ9‚•¬Š6úuSüR¬•O’cbè%„H£=À¤xÅm]l[ÀŸ_8¤ZÿnSDëqåRLxE±všŒfŒÉ=Ƨ¸i_ɹ±Ñ¶’Ô“&Ó;Itú}¡¦£>øpYê2p‚ô>’‰ík'Â;äŸjå÷3–NíE„—'d3ìÔ¨iŒ†ç¹.Cª½N!‰§Ýöcöl…SS½®¾?º…²ÈE9CýVuɶXNøž¸z¢‰XŸèËaÇU>š[úDm¤Ü‘0ªt¤ê•7žÔù^ÄQYá,/ï õAò¦ƒ?éÊåpÎðDyÏŽ§ýB#ÛÇzŽ']q?zîÇOY^à—sÆî!Î)ý¶›M¹Šçñ?•¿'ŽW…¿c¶ [j?Ì“>8â$¢ôààè˜ÅU.+/€Þïº~kŸ]næ5ËÇ}k#WÂÚe3¾c¬ìÑP®œ9X¦7¾fHªÊÀF¦„†ùÐõ $Lʽ>Œˆ7çG\Ìt%“ÑKDÌ¿xhl¹ôþ‚¬äríòž¹ÒªÕ(öòòå?øÂN¼z¨.·k^{½Ý¤z÷‘ä¬A´$÷Rê"Öøà¾šÄ&†ž!&Ór¾F­ ¬¶¡û9„@-&$®š/„})Ÿ½¦2âM.û™`nÁ7¶¼DO@‰™º±Dµ/&¿ ˆ=ÙMîe¥ñµP¹öHœbÕ;a%JýH™¸:…¦÷v,ù^°ÖžÄHõy˜´ÇðöÜõ£égß><¸˜,?e?ÊÞ%€?©ôF\üíU׺úzGKÃé'NíƒQ€5 QÛ‚&ŽHLA…Td×!*„­~ûþ¹ UÒBž·¼Q}yè¸5(Ÿ/Œ~4:jÉ,öÂr/ê¤t wa[‡³‘c QÍ@Âì”ë]¨+^nîoòVþŽàbìðíêSJª]¶©IW=;ãJñ¼’8T•dªÜãéºQÌú\7sù:«iq>%f4ñÀVY {¶%AîG#ߺÒÁÌÙ•2)/´`à»-/qÓ œXõm‘îFŠÑR‘ ¼õ-r‰y]ԊʉȂ¹>¼…ø¹ß¨;(Kzk#P=íDN dö¸%ù9ò(’ulßËì'þÖÀµÌ‘óÏö£ºuÒ7/9lçsßÄšqº–­÷‚C©¹ÌBµ…40¿JÏØ-§]¦c3…ÇJãZÕ¨”Õ]I‡mK¯Î}«R¡$J&åðD@wÐÐ+ÃpL%͹õs6¾í飒RCvŒ”@¨nsŠ˜3\Á›€`ŠMjœ˜à6ÅйØ\  Ž1V1[1T² hþÛ„ãP9Q×çy/ ÌËbg»® ƒað•X\0n—²z÷ìdËyKìç‘wuýj‡Àê†H´œÜíµé- Óœf<¿Ç}\ÉTiÕìozž¿}ȦKïì(m½Æ»¡±”Q•Ê©N±©(¶“o :p¢¡A9§\Ùk‘Ëz;¨%dÂ,Á“3t/´ÏC(ê:Œå«%Õ4Õ탬­ÃŒ­Ó1e$+P À­“éŒß®dí{,Õ jJDÌÜd ;ªJ¢[k MîÛ¥\í£XÂÒvk¡3SE´šƒ–L~þ¦h`uþ*åÀàËxëLêÀP¡EÑG×”™ ‹U ÉTuÖ”+Ô{•<Ò`‘xvÛGa˜i=Vטèø¨ß–±Ýܰ(»íÁSu0ë“p@Üñzw쟦“…âŽÓ)@ÇPdØpÐ Åêºü„ª”¦ôBRšÿ­ZÀÐëÑøàUÝ5ç¡d®TP­d^æÒ€±N¼zÌJê®d]Á.^$¨)˜}Ý«¯^Ž<Un\ô[¼–O¿gi>Øp‘_ßš^g©K5žµ±Ùñ†4‚¼%´™m¯hO|ã*-3ç*iýå1\[Ë éÒuI6‡[ýSKÞûc!uˆ™ÒbDEÅ}üØ™ƒ¹@UÙï³´pØ‘¾Ž|g‰ê_¼œy-‹Þ•óUy›å!ò¸_“£ÜšdRïú/umÁc>°^qì 6’,\ˆŸ ™C > ]ÀX²O6ðÆP]ôýËføl%Sðý Ì;7óGïXÑÁ‰86îÈ„ÎÐÇ¥ìÚ EÛ{Ïàò3\‘kUíT‹KugÕÆ4è"´µ>ó~ÉkœÖqù]Û†3]Ô„vbàKúy•‚=& Yê'·‡Ôt°?msd¦k°7ç£élƒÓxÁͳv¯ÌßO`œ0uqSlÄ †-·+2£ÃçŽøih ‡N(¾dFعãÇÉYew/‹×ynׄ…°|M€_"…‚ÈKØ&rÆ6–:øcÔƒ£…e›4]9séˆõïÊñ‡>ÞÊŠ6AXc¼ºÓØè†NÓ ½'¦³÷Ó$œÁ|2[ß§û£UvÀÇÅ,lïš&¦®"R˜bn T$lÎ_>@ p*]?ꉤ‰¬èuåë'ÓrqaÓþÚ¹Ûe¥UÚhÅ !/“b÷©Ó4—¦G¡½ëjS8(£[,+N÷[¶·JXÍá6}8–…Ê]5>B’»å&ÀCzšÚ>Éñ‰y¨/ºsÛ “æ·;7× ìX}½ß™ ɪ5 üâñ\m´ÓM½ì&?„2Ã.7Gå^ÑsšÅëju.#¡lÊ»nÎÒ¶Û÷<ÆôO2¶¶öhl_È®ÝÖ~?YÆXgïŠ×ÓñMòoRCU»ÿìôäUòýýeÑT9Ëð@¥hoˆÐs÷d€ŠzªrGôÿ(º^׉¬W«U È,lј Š`м×uºã®í*ã„(4·Èˆx{}J`hÜËaÊ_ë%§9pŒÔ3*°†OîŽ5ABÍ%ÂZôG™—ýxA„»W…&x}½~³¨ µX½wάÍ'¥¿‹üäŠÝœ}üGàã9Þv’1Ú+ýbð]=ƒZõÒsÇ¥î­!ì s=šeá[<ëQI'óË·‚HŽÆmªs#Š‚ÜuæÂây+Ý4>_óí¼•?3äí·ËãQC¹ ˆ“л›F­n“¤ç¬™Z÷Ý8uº]Ɖæ~úy®ùKtt‘6气ߚжéB¯?vr¡íÈÉ5eºð™‘H5 òÓ%J ²Ø­Rvt¥J û¤Aô“\«ùBZœU,èqr®†¬•óÂÁFÇÚD´ÖÇ *ï¼ÕÝXf)†3/0Ÿø0Ks9%X{šv–71lãÚ¼€Ê!ËäŠRµ\Üdñœ¾p±Tov^yhC°3œÔžyt1@Ë2, B°¨pÖ0d5Üœqe"ÎoŽsÒ•ê iþÑf³ ¤ˆ4J`ÁüͽC ™k#f…q˜‚y_x·KH'kïĬ{È&ˆ8l–7ÊÅ:m»!ÒõÔo¶E–JŸ?zÏßC,Þë$ºâ›^´"’1›ÃãÐ7y]r²}1Œ¿Ï1ØW Þ¬+lôÓ~•fKZøª¯^²º&éãfºÕ«Ä ]žŒÍ‘Ú ’…{GOXŽŽN&…cÚýÂt¨Ÿû†j[I3n64.¿ÆG3rôñÈýMÄî1à—„.ÝÔË,*Œ:ÀIø†rdà:àåîi“ý (]¨]¯¼ÛË3ÈÒà2Ä%ï"ˤ¹÷¤¯Æa÷HM&õ+Hès+nÅê|D?£T6šÐxÙ•ðyúq þÊG£uVzM8®†Cæ.´j#¶+\fÞ±”l\Ïûž¾Šè®å#jyε¼Kh›Vñø‹KgJ„"ºŠwاrN« ù*ǘ*FÛa¤óú3ùíÒ™þQò º” ”…òÍçýQ1àt”²Ü\®­í³…ú)f†\ƒ˜Ï >À”‡¢B<=÷)0%zï'mñ´¦wìvõˇ§?¼†t*´4òøæk"¢˜c~”î½&ÓS¥ÚE‹~¶Ó‚Þ1 Cbyj"qŒßç-Ç÷•Ñ ¤îâ{[o$,–: ˆ›*„.À´ÊÊ©@¬DÏÏHé°Äj»ÂCl&w^Èà ]oF©Šb››…q¯±βÚ5®„ä wˆ}¿¬Ž\=|À£“õ§ÇðÊ4È8·8R?êG8¹½™Qšyß|üBößHRŠe¥ç`gβºr ²•5·I~•4Ì–F7nñ“­¼™Áw$KÞ¬¿ð<ÊQïÉûÂü~ÞJéè¬D31I*×,´’Vq²€¼,›½Hž³Çi6 ·ÂjgNº™m¤¤ö#ëû%+[T¨X5s4bí]mü-/Ûc‚tt£ ð¤F¾«A¶í[b‰;ÎÚßõdåž,í&¸qK޹D €BÝ7xÏõ½ê o4ü›WŸ S„tƒ¼› –·«€¼Ñô‘tÎRŸaQŽ’m|ÿµ,|œû(ÿÂj4H71­Š9Ü0Psiìܨ"ù „ÆÅÝõ±®Å}¼ƒ®HXzùtú"wöP…º¼¯ü.HM`#1Ûÿ«¾‰YàO~`;LÂ0 Þàž•ÙìïxÈ¥Åw®0dF·zœæ>Œ¿úÑšž E„ÍÎÍì”)uŸÔ÷TkWÜ»ø‚òqn󅮥Ì×óa¾®x¬“a@ïÙœ¢6‚YW.éaèˆR˦Û¦). ô*Çì–ô ?}sq‡üC6fWoTRϪ6÷ÏeÚ4“©bÜÓ¢öz£b1†‚ù¥é|ì¶g6Óòpí“’Ÿ¾š¬ž SݶÛ ¢zŸ î½#bá­ð“ï\kè:`_¼Õ\åðæ*Ê!Ú*â‹ÄHËîÏ͘Ï­1–‰õiw©P^6í"l ͞ĚAwD¿ ¿óÊd³Ñ.XL•{º$ÔŸ´ \#aĤ3OP'ü|»p ½’ZïK±'Îv”Z°:> qš9¡`Þu˜òH~h^3â9Æ}{m_À1ÓL´òKDÚ7í›;ÅXæó-Å¿„“X²ð¢ ;¨…tà aruîŸÔMóò `û[Q…gýæN ææbŒ÷hoÑ´yD°“7¡E¨JßWËA \ }p²º,¦*h¦d1”RsrÊîéÑ&ˆœG3øÃJ¡„†ôNîÃ=9ñìï9ÜùͶH§Q[u"}‡|oy¾Çà“¢}2œº‘oš'¨óð~á¢eœcßðpö³ üùÉâ†éú¯7¸F~ÑcTe|L²´ íbñ%±ýGç_"HRúçxA1ùñÌ f ¤ëö/CÑfèéªé|=†/ezîøý±8®Ö/=MÖaú¯‹±ÔÏØÃoA_Öâ ~ÿ`‹À(·Mü%¤œ]ñ<Íõш}ôÅ¢å4.àÅ·‡ùSgOºWÊ‚MáÊ3X|ÜJƒàrQϪù“Y }VÞM©£®’úA±‘%ÕÈi(ÇŸ7£Á÷6Œ'gS"§… ¡ÀšŒÒœ‘/„Ñc=#Æ/ ÞÚ÷‘ÙÚu$ò.ÞÀˆ§t}â‰$™ßpeÞ•nT Z÷‚ùÙîðžIxÒd,Ï¡p…LδÜö9ÌIŽ”øç¥ ½3r™§JGbÞœ‡ú±¶ ]Î:ƒIhfûüÏ^Ã~ì§ÞˆÏRXÀ\¨­‹·a„ë,TT=  rÿà4”M4^Æb¸zôD©xóV°³£À‚À Ë(aƒOÒ†1+YÛœ)ÁƒÖË|®Ð:+EK&,ÇïL.šfJV› y_Ÿ?{¶.‹b ï 8¨-ÈjEÜ”~ÍøÑÓöi&­@Ã*ˆà[‹¡`ò¸Vù'wÓ'ƺþÜÑÈÉõÃñq –ßN¾ÎÆÿ¥D¶i»²%KU[ùs${ùؤ†ÛþJW›ìW¬oyÛÍÃdë³äîì5b1^ ´ë¨¥ ä£ÅFƒãéM ‘ï¦ÐžlésÝ_ƒ§N'Kþ“ß{SM+pAãgåC—ÔnMtº·¿ÕwÌBíØ Jȱ9¯úØR«šÖ¡ë£v`åÃsë*™tEºF0‚ήS8B‰ý¿#UÕát þLh $³'"TÔ35à’MW)<=öÝ\RšR^íó”Ç/Lõc ª]×—ªŸ|ß¿ÛM”R(å1e¯Á³ÜkW=1'àóôimNzN=¿½+àøëèÒ;–'‹u9–¯²e9Æ.)<½Taz¶Tž–9ù³ªwWf™i ÌÀYMý¼Âç®B>Þ;ôç_ZãÑK–„[Öö]S§ $añè)¦¡»ºÆqË 梪ƒ¶({ömbDªîð^ ¦LÙ7•É?±åW§dîFHk‡™ûµ¯ŸÜUýÓ'~â^ˆYßÙ"™-"Sx‡Ù:®¤ï:¶©N|ÂîM{ÀIm g€SîÇ î³DTÚ_Òœsë‘åùcFµç÷= îå\ÑŒžÝvL5l:òsÞ$ÏiÿÓ²¨}î¡Ð,e>ÀµÿhØ'óýNÍ'Lcaç&Ž—^Ö¬¯[)ˆJ3€ib©ìÀ(¯Ó>?øÈ2…€‡Ø)˜+®_šf× u×ôÑ rD|’0éÊ>{‚Ÿ à 5?±n éø Êy=wi9Ëï £êê; žIÛ£R›Šl’‡Ä fͤaè¿´(ª’ÖKâ äJØ)pÀyH‹F6òC[Ì÷fÇÂô¿²ê€¡QõïpÆz»Æ1 Ìû€)‰tºAâ/ÞÒÙ¸‘/jv…D³toöPÈ,Ô ŸÆð+¢{³!úªˆ¨°ýŸÔ|=wODŽÂHÑ=*R¹tÞ)¶¦É-i§`uÈ÷êw«M~'«‡½ö‘\¾êðÊ}ö[ì-E¨ÔˆÅï¨×µ‘QµS绀ÌÔG…ÑÞfФ¿4Ò!ŸNg8Ó?ŒÆ“ÔceSR¬¢ÑV`$=Yašå¹ÖÝvkZÖ•J̶㠦º¿ž— †åãL2 l@|åÓ1‰oI­÷RÇL4biwå¹z½ôÉ"Ù33’®0á>^ ÞEäͺ~éÉ23‚®3Õâ nŽRµ†¬ã„E=g’ ¸êÖ½€w¶­•8WŸi§Q8®ö0i¨¶n¤3‡n\Õ§Qê…ÒßEqÙf§qòº€&ÅÔ…EüWÅ«dæöosÎ<r”èM0Ÿíñhß%%D—Híñ¨jáÂÞÕ‚•Ä´¿ñW&L(;Ã*qlO¢¨ÇEü9lYDË7zîÉžô¶am‚§)k%øÆwû™ä…£ýþ   Fÿ ñ(ÒlŽ&kĔׯdgâì\fý¿¼ÿƒÿ'˜Ù‚Lœ\ì!&N6ÈÈÿ®s¸) endstream endobj 1381 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-32 -250 1048 750] /FontName/DALHRR+CMMI10 /ItalicAngle -14.04 /StemV 72 /FontFile 1380 0 R /Flags 68 >> endobj 1380 0 obj << /Filter[/FlateDecode] /Length1 727 /Length2 2636 /Length3 533 /Length 3185 >> stream xÚí’k8”ëÇÑDabÆ"ÕK$e˜qƒœFÃŒä0Ž9Ô˜yc3ÓÌfIQ6Q‘Ú–DÈ™b9&) E9DI……±­ÖZ{]»µ¿ìkÛ×~ß/Ïý¿ÿÏÿù½÷û¨«8–†ˆcÐ9”6ÊÀÚÛãQH`cDŠ««cY ‰CeЭIÐ@a0†!„èêH´±ž±Z\\À2˜<Õ?€ìÅjþêB–Á ‹J&Ñ{' Þ!“h‘A¦‚ž6XÒh€ó¯[Ø€3ÈY\¢-.ŽB*™øþTº¸Î¯Xxúq€þM¦„0ÿhqA{ƒ ØûTØà¤0è4@‹ëflœnÐüÇ`ÿ†ëûp\v˜ükü·aý¥O ¦Òx¿;ÁÌÈìEÿÞêþgR¨!ÁßwñJ¶¤ûÓ@Ò×Fêÿ¦SÙ8jHq¤rÈÀq ~ÓA:å{’ù}ãб¶N݆dñ3ú¼È»«~äê(Ôµƒå{ªÌ]ÉÔ–±¥§¤§pÞÓ˜MtW cj,Z3»£öhJ޼1t'»×ÀùHÛ†šÕJc%ìb¹Ö‚.ì'´¬t‰h›µÌÉwWÔ„Ÿ–7º¤ÚFJùô. .££Üš>ž;¤ÑÛ.¯mtxi)éìúv¾KòRIì­Ë„½BíK¡kízR qòD¹À º¾¢ÝOa… rIÐÛË=±õkaiÒ-n¾ºžhJgºðp;”„‡þE;+ &F°˜èý%ÊʸäÍNà4“Mž;þ¬ØПÖ½Œ’) IãNö?íÞî©÷‹*ÙÞ¼fw­(²ûªvÈÕySõiaØ‘ù“ïæ· öEî¿%ä¨ã[ßë ¯ªTm‘ ×ôKµÇ' {Zyò|ùµ™&o-jG*ÇOˆ*AƒËüW*“ 8êˆù±!×óúy€˜U]¸«–íòsZ}“—?iÈ´X0G?^àÇAc\>žÜå7åé?g¥dFQØCN:Òr|Z¼„¿žÓ|°’îË)‹ðÑr•ßœÖT•Ä,­ „§ÇÄ•«¿©´Šì%fCo‹î×ÓPÒ½{Q¡[™¼ßòy†YûÑQµ~ÑŽX2$\ÍC5 êÁ¯ÎÿJíê<‘ÔQg3\å²¹–¨*b+%hÔÕЃÆâáqÅËò«º†lNCFÿEñ·ÕÛÛ£úí¼Œkù Š9—(·Ô”ÄáéøGA±\¿ÊšõR“{’¸)î&_ãÙCñqñÍIY”âÔí¯ïtBˆ]Ü!]ý¼sè¾èsµ“¹w˜Iûu'o!°løuK n(+Œ=µŸ’·º–„‡éß§îÛ2L”Ìaƒo˜}×ù~©Ýºª—SEQÉ´¤ók?…¬ðËAꡇ vWè…5ì/kz¹Z±·…™ýQ¢b¾6kÑ”ÄÜôAŒ–\J·Ê)Þ=KÜ“Æ&dÏ«¾ÙË9rñtó) 䎯¢Ìv ;&xêŠ}F …{ª$$pëļåfOóR¹6×ev*- ·k_ü½”ŸaùChø ÿ‘ŸatçË:×QçxÓÆüÈ•MüMýé˜ôM,èŒÃˆä¬Á‹ê%iؽNÿüμ^ˆ(6Ü@¹ŸgŸ5uyˆÜ÷c^U·!T(\š+¥õžWû,¯˜›·”C~êZç;èûpü`©”ŒÚ»fsjøCÓg:Æ;BЬôÑ–£A°ÜTgS]Lô³shÍ:N–ç‡õ½…žôÇ­4 #Ù>dÇuQ²FÛRO²ü¦)¬QDNsX~e¢§ð ¶Ž%}@dÚÕKqYȵº×™fIi‚í*ós~ìeÄÝaú4-Ðää…ê݉OŸ+w `þtô°f7¼¬† áfËÇq'BŠMÌÙЂJ¢…º‚oÁF(®l}/Øå'“RŸ Ñg‡:[󋲨ç¼0?©%4ë‚«ß>ºR?°¢òòs²’i¨©ðJcL°j¸ýzµIŒe¹ù28\ãã1³ö8§¤ñ.í)yÛ‹Ë¡U¹B‡ $N@ö´%šÀÖêŒ †õý÷é^Y»nx/J²MÞýº)=Å÷BãKsE^;ñ sÎËgyŠP¨Á‘ÌÓ"‹Ùƒ5Ø=^ЀÁù«˜è·7ŸêµUÆ–/pf¦'_#}l¦‡Ì¢Æ¬ÛlFz^‚w»)ä‹£ÍÊgjæù¦l“ì©ÔϦ³RjÙWïÌ­™n³sQÃi"¥ )™¯¥;ޱnÚl>“SÿBwÊwkäÉ›ù‰6¹‘5ïÇw+i,i»KåÓc æ7Tc1×ÚOg½’ãéf$Üo 8ÍbNUô[®î²ãàYC*Z±—õ*«—Üf„K!vIöÎkíNÌçÍ¢ýÓèg¸»¹ìD:döÒ¿*A›”Ôz*BúÖ~í^·\L¼I,ƒGë'¹Šæ;7²R®Xøù… ó•bà8U‚ú¢Eœ—É•ÏçÚ{[álø½˜òÔ4­ó¾p¸d`\U½SŠg]”[~Iþ{äè zðØùýƒ¡þû_,cåž L6+¨t¼Üï?žÃª š¢;¢‘!›—òvÂ0Ë¡PÀÌðµ\«gníÄߨÑ€¤àM-®ÞS >2 5“™¸BUxê{›½Mç›ùùYˆ¯›·UU. ˜n‡n›|mú=1мºä¨(yPÓ½b"t±¤¤·árA—äÊ»W4«%=®Ï’Cçøq‘CìõæõŠæ;¼23AÛsÑtà¾Ø…ã´Úߌ<„Ó6Lz{![¾<¡Ö{-ÝâÑÊŒvÎ¥‡ÕÇ]®½˜Sˆ`ýÜ»8¢êABç¶žïçbœ¢úÓz¼'"9ÇZ3}ôO°UÈ;¬²%ŸžL²>¹¬m¿M"®õSIûnÉå¯ƨO>j@9˜;E·/“ƒ3@гÐ(ç]Š[Ã+%(íÛ#½m¼°¿ÛªÐÀyl뛬¼C"\ëxHW¿¯¤'±Sp~ ÏTŠ‚n^sîÂ'üdöj}RÄä„Þ¤w^€vT| Ó{fPt&êKS„  ´2ˆèøFc ¾y4»YfQ)øÓ–ü ner0ìõ-ú«ê“ei¾èx§êe-ÍSWÙx~kDy—Ï‚õ—"¢×ÂG4ˆwDÚÊÚ.?/ZÎë´ÚÚ°Š#”<öA‡•ƸÔ¯7"]EúÞ,{¨”–IzzX æŸÛø²d{âRíoë´é bÊflOÊù  R¯XÜ—âùT—ßXVF–ͳÆÕÂT¹Ö¢­ü§ øÎ;;ù×Þ‚ö&X"[^ãK)ò¿|Äÿð?@¦$‡Lb‰‹ÿð^‚ endstream endobj 1715 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-20 -233 617 696] /FontName/TEGCYR+CMSLTT10 /ItalicAngle -9.46 /StemV 69 /FontFile 1714 0 R /Flags 68 >> endobj 1714 0 obj << /Filter[/FlateDecode] /Length1 726 /Length2 2741 /Length3 533 /Length 3289 >> stream xÚí’gX“覂 RC/Ò…—Þ!‘D:H‰ô©!y „JP@@”" D)J,HQ¤)UÔ ‚ô¢R-ˆ JhÀÃÞî}Îs=÷ËyηûÜ™/³ÖúÏ~³fdœ\5̰¤@КD¤jÀ5áÀéêàæ‡pMTAÁ‚¢©xÑMÜИEâ€C{u=„¡£ …*$2‚ÇSe •?Tú€YHÁcÐD‰¦ƒa{&4p%a𠕦 fàòÇ–ÀŒ)Q V …Ã,CAžÕúË–Dô¦±‘ä¿KQ %b PÞãTö(±$"`Á ¨Ö1ÒÞiàËŒõ¿PýjnI C‡ýaÿW«þMÃhiHaäH*H$,H!þ*õâ!A,>2ìת-MÀc̈8hjêèýLã#¬ñ1 Ö OÅTJ$øg$båØëÞŸZnV6(µ¾íϺO¤ºÑÈ û׆?cø¿â½>Qð1€7Lƒï ÷æß+ß_γ"bHX<¸RÑD,š‚ýgâß¹ÌÍI1'4ö¾‘Æ!mm@®èêÅýO; ÚZº0ÌöI¡€DêŸßaïÊÇAø½` ˆ^¾rñW?¨¶°Þ>*ëÙüü®[®@»H¦NjÄuÅÓ*ä!ºÕ¥ß5$xRMÜ'õé<¿'>±V–2츖i¿›7ìþÀ+îä‘‹(¥GVÚÞåWJG\¼oÆ>?ìíÇvv,oŸå ïé²|‰þ¶Ë*iÚ˜O©­æŽÒýŽÇ}hþ5N…úG€àóÔ¯— §g›¦q‰œþ1ÊQ^²Êàï„ïVוäGp±›ú‰Á!ùÙÝ…F„Ñs2Fê@…û´" Ñsk,>õ©€£<#X§,—CHÕžùxéÒòW¿ó\5ŒOÉÖ¡Ü9›‡Q¬ÂíÒ´—g5P$æfÖ´Lñ {‰$¢ñ±Är:¥qufRè[×7®š !Á¼Ycé9Iæ3-•‚ Š ]Iƪâxïvï¥íB¸Ï•Ó¦¿5lÎ&ç¼·œ):͵}Öá* s[Ú2¯õ9׺*ÇÓøiÎ~Šx«sç!% }ËfÙ@d”vzh”šúøùCrôô )Õy\Þx˜­¬ø«Ë\Tñ©x…ôÃÈ›g—‚JÈñMî„«Lâ‹£!ÒŽ»µ¬>“Tòš„áŽoÍnnW §{†žF³Ìi¬~d\ûÓâ7éñ«Ê+|Ãå`»÷W{Ý|hãØ~¨ï»agÔäJûÑÙk …ƒ³‘¿UaÑíúW‰ÌÏZbÖcÉš1 äöþÌrsÙÃÓ'šÓS·g˜º•Ûdý¤Ôñ2Wϯ魞å)­ ‹5ñ/2¾åprÇRÈbuI×­±±%›Ê¦\Zʲfo¼æåeìj3;,’ðba°ˆ÷.6îúRòƒÑ|â³Â¾¤©9vv[±üœÝ/áÇÚš]ß¿‚ =±.7_kÈb×* ß–_bãïg˜­>‘l ¤F}V4ö],øà|Ï~ò™ÐjEÒ™ñ7›Ej ¶-zH'ø SãïaO lúÃîXmè¶°¨:‡fLüü’VõË£ÑþeVŸ“8®ØeF²ÕôŒyÊÍ·ào9ÁE­V…Ê>ñI_KkŸ"Ðó³Qr'½¡¨UEí ú¤À"1 ]0ÒÇ?š_óØË™œAwÂŽX–«CZ+’XËŠû(šª¦J-«76k¼œú wKK6¼=ÚÒϽT f#?Y«aõjÇ'‡¥l͸¼b{0º¿Ø·H£2† ´Ázwô@“ŒseËñ}´É¬¶uXdi¬à;Ü—Y×ðüõØ(ÝéIxî£S;ˆÃ!3™¦z§%ʽ•GWø2"6NXç¹¹ê6ù„¿Nøöc —¹Á€[rG‚¥;•šÅ;µ£)Krö°Ãbùëæ|cV„uk’ •Öýµ¿>ÒîQ`þt†§Åèå¨X(F{•ú‘²¥_œöYc;Üp¾Aøz^\aÉ’‡ÿг-¶§P¹‰ÚŸ÷Xå¸ÄË–®ôsiF/x0‡v$Úͦßí¾¨«®Ä$ñ`kÙ(WÍ6Tp» ­¤÷mIó9ê˜b¾Û[ÞÌOü3ËÊž‰$ Ì2ÖÙ¯5qýü˜ðcveõ9R] ¾üG™™Éžiå[àIVXÀØy® ï„,ÞQï1e"¶&.$V{H1IF7J*JfAE„xKû—,1”gâoŽ'J,Žý¦µëœÑ#™Ý™¢¼‰QfYl´¢|É9Z4á›r!kXCЃÌ:¹Q_êô†l¥’«.ÖÍ¢Z ¾Í_|–Ȉ徫j9ת…iàM‰3C ¦Û£'Ù$–7ŸžZæù$n2-d\ÎÂU‰4¾6 QÅ09¹¯”¾U à„úk ,\QuaõY{®šëÇùxQ3ÆAE§løÜÒ¹ÛÛ}†ð˜—í ®ÅRûn„ƒ¸sä.´¦®Õ÷T[YÂn…2Cæ€Í½Mx?T h>¤uÂ/„®½­,¡“ü6”Ùq–Ox°4M…ODìó ÂjÝÙJv~Y»þ& *x~¸¾ƒJÊ5vM¹ÎÒØ=uå+,uL¤jîÓñÂ'„ØyÎýu‹ª`]ñbuÔ¶àã3ÌV¶3ÎôÙy^úÜÈ”›‹Â( ¾éÐ >WœÄ{¬g™í~óT´oz/ü­ëá÷(~Ð4[@ØçH «Ö{­âÑŒó¬—ìYg7E¼[ÝaR,/_—0HYÊTª0¹!íÊ â AâÎc¹“ºEÞçLÝ?¨æºvñ,/C6£Yñêþö˜¾OVSD½Åé«7¿(• @ôRŽåÕýçõлFÔ¯âÖF‚ŽdE,\îuÏfX–uÛœ©Ò雩õýál êBöp¢@Í┌åxÕ›+¦pÐrïù¤ƒË¼ÙRÛÕQܳyq³Â圭¯Sjó¤«vÇ÷½üz~Ý\*Èöi9PüV¯çË-ÙrBVôò×E¨vöè»%ñ6©‚+yýѯT4Nž$ t#t­•¬ÑGÉ/J»2í‚S9¨|*Œ¯tó¯'—Ë[‘…£/ ŘðÇ.Ñ AzÐï/¾ØN{Ž}tŽkçýd‘n¿í}î‡üÇû'†ãæïøf‡0ÒüȪ0qéÚõÅoõ1+-‰¡‰Ý7nô"Fó¶<’僷_À*§ìº?m†fGþþ|9™—½T¢?œÚ-šMvcï“Ñβi`~Vè|”ëÛó~Q™˜>-‰d–Π§^e4qk¦ÛŠ iúŒÞÏÉ!®or¶u_Œ»°U·Èé{¹ rÚÅ"›,Ga¯ÌÇ€SÒµQëz̆ó`*Ô‚ëÒç ÊHŸžy „º~G¾vgZýÖU.–ðÞbýÜÝœ(ƒOµoÔ´:[›èÉôÞ¤‰Y› ß=ìªZÏ}á-bÚå:ç'h…ãÎ\†‹š&\6JΞ/g8ÁÙoMw•à[4ä“ô¯‘ö}Ç¿k «=öá<‡]G͇qÇ]Ë#C#ìõ1+Iqc’ßO>\Ò2ÿpXßZ?ž8°qFÑMv¶³„ÆÕÓ&ïëÔ&ólÎnŠ/¿°˜êì}ö¬4ßžd.§—ÏÐ'PÑv%ó®/3?V“Õ÷ö<îǸUK±é¢6Øçã¹Çêþ8Å{¿Ìå²ÍRðõŠûœú€ÂLOîEÍË…Ô‹ãž´fm!mó‚1¶ãC<(‘°RÅñ²À· S´ÞTÌPn3ïHQ`Ó:Ó³®$LJ¢äô¹¸}-j»X6Ñ‚ó‚Õª=oò*h5*,üOØÊÏtçðкE8šoÜ2Á5,æ9ÅÐÓwÉèÕýœ¾ƒþˆSÔ{æý†—aci%æG«–Ìå)¥ãLf‚/÷BGçŠ ÆÉ祺¬Ü Í7^iqÜ›þÙJÌ­Ï„Ð`tQÙÎK «,CAÕÉ­q…ÓÎ(µ°ºÕ˜£i"îhÚõݲeßí‚è4¤¶$MwÇØö‡ÔkfKæ¬xöVkþðk£A$‹0ÿhHPOÎ T¾a²‚–à%äªÛ™3ë0WrƒŽ@ßì¿Ðÿ7ø?a€!€h •†¦„B¡ÿ†{~ endstream endobj 1719 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-1 -234 524 695] /FontName/ILFUKZ+CMTT12 /ItalicAngle 0 /StemV 65 /FontFile 1718 0 R /Flags 4 >> endobj 1718 0 obj << /Filter[/FlateDecode] /Length1 715 /Length2 7815 /Length3 533 /Length 8367 >> stream xÚí–eTᶦqiÜ w÷àNp×Ocî®Á‚»»KÜ58i,èäœsï5çΟYóoÖTý©ýî·Þï©]µV}Œ´šÚìÒ6®V yWvnnà;5n 7€‘ñdévu‘µô‰¹……¹Òžv@. ·€¿ŸÀ|çêæÛÙ{™ß½ý‡K(í ‚€­-]€j–ö ç¿!Ö–N@mWk0ÈÇ”vr¾ÿÇ-îÀ÷ wÄ dÃpsmÀÖ@+ØÀù(%[W à¿dO·ÿly î¹€Ì9ßÿRÚ¸º8ùm@¶Nu׿«þ²ücýo¨þ=\ÞÓÉIÝÒùñÿÔë[:ƒ|þÃáêìæé‚Õ\m@—·êƒþ§²{:ÿ{WÉÃÒ l-íbçrýK»Ëƒ¡ M°‡µ=Ðâ ú§ r±ùw†¿sû'§’ª¼®Šë¼Óu5-Á.:>nÿûû?kîÿYÿ sqpqqÿ5þ=ÿóÊôßV“s±vµ»Øµ=,]l,!6ÿ%üw*W¨;7‡—ÈÏÃæÿø¿Út]À)°ˆ…¦ôã/”£{ÕlÄÛ¼ö „÷ÕZHUÄâ(Wñ-¦[ˆ+‡ø¤{ aÿ0¬ƒülí!öìc±óBLçoÞ]I²W¼Ò/³1ËúM⪙*ùËð Ç‰S«~WªFj[ô/ÖÁk'eTqw“ë6룗æ»R^ù6ƒ®'?¯×Q«70kˆ)Æc•W€ìè:íß(™+¢`œ‹À·å¨WA‘ö×:E=B®Ö„tjÄ#¥VŽaÜ™êœ?¡7©°z¬Zžcæ>ý’HðÃLç—/Ä3ÌNXê–¨˜ÜrW…ݽ’Zþ+|i¿»ÂjqÒ ŠR¯©2=˜raÃ<ìCJr4­†`¾ÔZS5rW Ö*ìáOE߯ÁŒm‰'¸€[©·Ã嬪ÊI–}ybv1I®OAÀË_àOõY7R C—Šû^xß4Šøx?ß#¡f1·Ém“U`'n÷ÈØHUáÒk:µ¢òl «Å[†e7¨1Ìô»H©|ìÊÚ3ÎÆ4ÚE7!šVu(áo~>cwÇ5ͦ!ÍìËeÛpJµÑ0—86È®^5p]n½Þä9MÀÎòà›ïØ @Œà¨Š×ûxÓŠW“¿b–˜#ç³°HÜÏY|Æ™GþÊ'F(½¤=:€,8¨X]¢Á}Τ—ZÈÄw†mQSWÆÃàç6g~šå¢öÕõ¨ùgÚG§+-½ØáízqÜeEíj¨‘XÒª¡Ý@o7_¡\)_ïÛùà~NUÖ3¿$Å}ê>%gMÁÁdç}T:.°Iš 9˜$ß'¸KÔ¤ã÷óÑÂâ†ÒÁØ›ŽÃ3ãr}j¾)ØL§¶xgôŠ××A‚Þœ¹‰ ubšpq|°øÌ¶!<=“ÅK@]Ádçó§4µgYj ,ç[ÿR?ßzAoB íjòœ^¿a§W×/àýÝ‘~)HÚ™ÿq‘ÍþæË¯|`0ºª2X{ñãDUÌáÞíTrK”׸•k ^NÏ.)+häDOßRY;B‡â‘@õ7|<}³•D] ·Z7r‘¤¢Eé~×ÍW`v( u»óÐþiKµíChÌ¢®ÂËgm‘Jär¾hmcaœm\¼Z]Î F© Ë÷?”­"´îkMÿÜ$d2_üJÿ]†*‰‰¥ˆŸ"9Yh6‹MÎ&v$yïªXCa /ƒvnœo¡‚ò gWX’‚áʾó'zR³¤dì!F{ùUæ_·9а•pà®0QCj WfÉ+æwM=[²N²@“ü>Úa½6\„iI ¥úð6¸˜.Ê7`ugéìÊ4#%2 蓼÷Z‡Ò˜´'¤¥ßß: Dç—8 î;1@H‹÷óÍ•°Ã˾Œ©-~žï@zMOF+÷Ñ'L€¯8ÓfI]î  ž I™wSS”º›Ö… pœíõ("¤Oìaï7ݼ?\R4èˆMï°Ê'7Áñ¥dlæIŸs; ;„/Ô‚Ã1ž2(ÔŠF½¤K¿iüiÛîóñõÊ´M=¢šAýïur겡{úPâFT¯§ŸßÍɧ äÜpèˉûŸ–vTÇvEÍ!ưöJÊЖž_¬EÆC|8Öf~žÅ²¸a”Æê]!‚åØq5sÝœ›R"«ðBÒ@Œª0Š~„|ûÒ¡iîЂ¹‹–¹Ü_®…nï™ÄÑ!çµÃL`ƒóÕ jâz?Ò;„ç,bm8[‡GC¦Vø‰ÙϪz1 L2XæƒP…¤Ó2þäßšŠçg1EÏM!]˜GþØð›`ÑiõA_àÚ¸”¥u×Sò18 (³tí.·6Z›m“áœaì)Ø"å …š ÂÅ)nîz{ñÓ&e>ÙÃk:KlOHG·N:aaß×ÂÓ¾}²~Õ´çR´\5·x#õX¸ÚBè õ·{´!Ž!c‘0‘»óØe¡û¦!;¼id?k?’WR.è5š)'æÙz‘еœ¶ÃQŒñ] ]ë[™öÍc1NßN'ðô´Žcེšõç e~8$Aó»z3\òåxcéúÀ(·È?î$UJWÖg Æ‚‡ófîè7˜‘ŽƒGÖo Â_%Úo“—…¸yxÅ;ȯ·Ï¢¿Ž&Xp1JD0œî ^¼\ÆAj^8£ ÷}Ò¦c¿àól®ÒØ(%â͵}™ÞÞÖeÕGËò/Ò»,»õ12!+ís§ãx`o~$™ƒF$7P9ò" •7÷üfaQ^t{‡S:±Ç1+ÈM}‰xªÆ6£öþæÜß3¡(²ôIM—…FØ\˜šeqˆ4ˆã´öuù$j÷»wèæÑD@i[ƒ§ßG÷ºº×ŸÅÎÒ¾0—ÖzkÔã¢GŒC5êyÛa3GÅ‘^Š–]òÞ}†ËÞ=\‰ÂÌ‘Æ)d«ÖóŸ]„=|•YÕ™8g‹ý²pRùxKnÅHˆ]›y…îqmœæóM‚çF§Ÿfñ&O<#~š¯YU×Å|rùv☆¦‰VQvQfôCι<·1Ò—%¦Çšò•gV-7~ÀŽçœûÃXIó‰=×G"/ÿÕ¶²'] 8Qâ(zxðcg@ž©àíe„8hUÁ…1"ýK•Û{^ÐÑ p{Ðá;áUøp–‚\c&¡¢‰—•!âŠèlÍѶĹ’KBDr½áýƒÝEhŸSÅ$ÿC?¶Æ± O'¨¼eoª&˜â€õ,g‡ Ê~þñbw„—|tþ ¨Ùš\†¥[¾ùÏ5ŠKÈÍBÅÆƒåB³r`qÒ‚Ð"mÚRƒ¬‡ou žÄ3ÉâGq}<“\(Y y®·«úM“Á߿ձòÐôÑüÉ܉Ad½ ¡Ÿ´Zv}+Üd8 öm€ŽY,;ß{Tq’²ÜTUï–”Á§‰Z°bÒ+¬þcԌ尒 æÀСq^Qï ï/³W»‹jPÞ¼Ðy·Z­%X9;þ2æM2EjÝÙnÏ3ü£T†l:s+pÛ»‰iªj”áƒWµÓÕªãA¡¹ Z®¯Fõ“½ÉÁ9 É8Îu:Ω۱ó×M2 5 ÚIÛž¹,tÒù:Mih«Äka7ŽÝ½ÑhW÷U0‰¢ãiªˆ=V'oÉT0`’÷ð\l‘»L€i"•xîY1¤´ë¹e½ Bh<›¿—Å¥Þ³Gr>Ôfkô*‹¬ºTË“ŸÅpw'2ê1û‚“ÙÙ6¸ó»¨ä¦ÂRýäÚÝ8Ÿ ­ò€Ädƒ¢Q`BÍ'‹!'iÜ—À÷E z fºÑŸÀŒíZ½"„—_óˆ0g¸•Y¶Qý–ÙÚˆOО.^ÁZÂ`º* ØoÚ¯qÊÎáɬv8ç{pðG;¿šŒh Áó#î³­RÒ+î;òr·½û³·Ù7}buL“4+t‹ á²_ÍX»ˆ• v-b_«^:—+½7 ü`ؽé=û4à¹:ìÊ=æìoc™‹Äsܼy* –3ȉ™ç€qNxÙÒ† :Ögã M¶Q¤cíæ*"q¸5²3gëv2(1«=ìnúeŽEñ¶¬RÚ••Q`å,ZD¸º•ÕYL×øóöލ{‚¢Q‡3(lw°ZªM#ï̬ø›g?Ö1)–©±eÿ§U¯âðúÕ‡H ”yÜÒH%WÔ:iEÏÑ.kš#ØNçYåºl4ß”•àí|Òz EHì€tA¡9ù—9*@ß(]h%ÃB'ý±²FÞ,Mâ9>Vd×¾ã/õdY·ÁA¨D ùurJe(52ìËR¢×“PÜ9½>È[H¤µ¿QØO['tK$¸ÌOíE”\þ‡ÉŽõ†ØÉSñŸ’ù£Ð0îß¶ïû)xÓ˜à3•ópÔF§­Ìº`p±«åÖ»è žîb%¯úÈqíO•2ÄÝ€¡=äÑdƵ2Ó'”Ò¿þX2T¿GC-;êmÂÍy|ŒøŒé o=ðc#)G¾[Ù_ÙŽÛ~Ò_Dk“‡ûÌèAÍè€ÛÀ„ÚîrÔgE¦2%”Iæöqlc†ùV›±ÅM×êfÊü,¾&{ßb¹†ðeS&öcÈ… Rì'¬]XÂÆènÞ})窆N~÷|É£ "ëx»lA€•\ìw¸0µ#W,Éc±xæd×°ùA¾Le‚–¬E¬Ëå7ˆ“#¾ªiã¼¹½³#cè7ŽC!¹ƒ¡ÊVñÈíðžnÝäѧµG}ÖL)XO‹“ׂ2ëÖlH{¡i5øÚ;†CNƒ†jŠ<þkÙ°èlfW¨+E»"+åe}Ÿ]¢ê™ßtÅk¹¡Ÿ¬ÂÓj Eó?Šj-ézüËãû™~þëéã¬Û ïÓ¥¿ž PT¼asU²i­©¦Ú¯é s¾‡,jb-þÎÞ$™T³z^F{ëü¹v¥À„ÝhÀtÃ*äVÎR`“‘,¡µî.´aŸœ˜Ü“ýBÜD£:¨ÂÒB›ñufïR|#ÝtÔ¹1x8uG«CÃiZŽÙE_©,7Yq©s¬|½"à9;Ên>]rItÏóB QS&üKÅP­Åe(»Ž(l Ão—÷ž . >«²lèÉ•}[[‹Xß;æU'(BŽò*ºreiû¥ÝO›¨ç<ü;ï†.óðÇÔôµÄ šýªé2n#XÈ'‰ÕfªèfÄ÷VÝ÷Fí sPùù÷©žñºô>iorˆh;”&QHi• ;EpµõKÙŸ=c KoãJŸùÈð‘¥~ì}-eüFñ„„ ¥²'Iu•:·÷©œ@‹8sµÂþê2®8Û,úƶéë°ë#>L]ätöÐ >†S„°à*Ü uî¹Ïº/½òâƒAœ_~1oã$Û—µM¾«È¢ [­õJþ‰p®ßÓIe*4å. TM‡ã‰ÞY9-”@"g3{uz, /ˆáä†ÀS?Ùfk“ªsQfA ‚ä¦ ôe4]ê ÉxN @C„x³LëH_Î-Ž"RÝ㌠4 ØúIçZÉ&˜Ô†:G4–÷Ý´Ñó%æt¢yÞÃÍMì–_cf·t¹—”ù-ê‹$íÊ|ïËå èÆ ? P-¯N‡Ø1æÓÓô§/ñQo‰ýgÜ#å·^àìA«QºIiâý‡)5šPßĆþ (c&D§$ŠÖôçìTÒ*÷Ûå¹ä›`¦‰qTmº ÒÛøb¹« › i—‡V™Ÿ¢,pêf$¡R;K°mиb×ÎóG–§£Œåh—RVVSg. ÿîøQe1pxh Y^vÀ÷ÍI Jˆl\ð®ÁI6ÓDÕ¬’›(sŠk‚>ˆ…'€ïw1%È[~imÜŸ‡'oÈ\e¡Ùî&t¥°nÝê~ÓÕ˜>S#H ]Pê´h´Î É—• t©u·ÄõG¸È¦]¾e¥ W*8«†”Rœ”ÃVÄlß´§Üªð Cõm™sâÀF‰z[­xóûwo›v)ƒ>(]÷wþØ2¾<ÑÙ‘NÃnÏÒ,Wå$pzZýÅ–Žøç.eö±²})¿7ñJ¡÷+6Tú´™¦“¾Açn~ÃØ–ÿ¼ì·©±–F:˜,éž^„…:‰Vฬg8³«[¾ž¶M.ûõóãE!ÏÖ夬Z¸µ©šÀ ª+é(‹(w®9tw›¢…‹Þ‡/ЗU¹„¡Âáî«ÆþJ ®Mô‰~­Ê\<²Ô Ö­îâR­1²âªÅÿÂ2}á¹Á(½\•íd?¨ùP¨¶Š…ÿjÍJ8'ï¹2ÁÃÆlñ<¢§Þe¦ õÁ-S—u³Íùñ§ì°p:Útp­v¿ëG5,ÒàÍR‹ç¢§¬Ý­‘µÁ[ fv¸w[z¢I ÝÊd–?¬^@…”ìæä|<;üZ¥¼ÑkR#©O£°ÞzççE$´C˜»âöAaÍÝ\¯ÍPœ/ééyô'ñe:J³Z‰þÞQzoPjDœ”!¡“‹]ÎïcÅ¥ãB‹.4ËL7èÆì¥K×õ¦M2öm@í¹W —ÉͲØRš›=ß_°ïvXáóoÒˆW­– ª#)g-ˆO㉣ӄkÁÖaüEF¡r_s7®¦]A‚ רyO…1¡þîni= A¦yÞ"XçQk\ù’÷F:‘¡d­G¨ ¬–‰þ‹KJ÷Òhz‚ y{ !öh܉{jH/Mß[¼%v Kí¥~boÏ;èPû¢–iÛû æÃ#!º"±~\BfgÍ»-Ë»§{H7Ö6Å=Mv)‹G>¢F¼àÓ§6+ÈË,¾½ý%÷8!¸Ý³ùO#»Ž##ÒtJHÝŒRÿS \±ËfýZòZJŠU¡jpGÙÏè6gž>Oȃ²–Û|´ìÐ8=Ç&.(‰3ÌÙ5þEYž`îØ¿U÷îk¥÷ ‰†UžúÁdÁ×P¦ª­±¬.¯«—Fœgfc>K‰b›í…¾ÚRBͲ´¹“¤à1CJì[öÏÆ¹[3õ S¾|“;k _×zWŸœÎ¾²W““9âx¯æ’’rC䆥>ÄAJíU/Å{háŸéWQ>±ŽlDÓ)÷ì23¼LUŠQF%YÄÍâ,­HϨ(¼î1(ðæ4k;×ù¢#&;@rûÆЫ[Ä%)Æšlsá i¼!„"èô¹7*êcr1ð`E ­L])Y2`KØqœj0W=·8KÝ”j˜ Äö‹-}Ût Ë(Â:Þc`×`7$ioBCfQhû!°ã'"Jx¡Ým˜(:(‰n÷ëÁPà28¹ ¢IìRäypǘÃã‚L0…ÓùâPÛ+#}ÓÝì3§°Áú ¹fó¹M¸®RqUm¾’E™`¾ÂéšÛ§Rݨr–‰·9¤ù {)IÌ”˜6-¯Uémxæú ŽBvÌË3& Jv´—S=k¿W%!fŽö$#ø‹"ï}î‰ò±:ôÉ<ü4á»Ü…”Á½k.6Ô }ÇMSfJ¿“\^‘3y#‚¿›â[Ÿi:Q¸í(ÓØdI)WÛuÓ©¶ù÷<¥ÒÝöÇIߤ:wuÛýX†è\‰p‰RšôeròÁ­§…c»«é–è’‘—’ú¬T̃!¬C»™Nw{4ˆao;v­³Wûià´¦!’Qé6FÜ>,ÔIÃÛ7­ÚóõxéSÿ˜fôçQ8š˜AÞ]è±0"NâØVù™Ö¥ëý2bÀ/6{ºCq_ud²12[Nq¯ÁRl/eÝcÚë´ÏcY‹p_JRšº|ñLj#çÌJÑ Z¾¼Áã3–ˆ?£*OÌ/F&bôdž¼+dÛÓ ÄÌaؽÀ¢@”ýˆémŠé*wSž6ùL0«Zñ¡Íæ—k;ë=uÀÍQq ‡½:Ùõß#ìüHkÈØ` vr#{žf71`y!äï¤Ñ·jÑ5ØÉ ÝkYfØc©:geÈàÒË”&‹ ¯” é‹£lÙ8ûü“Öýn©(ƒÿDâÁ‰éïQè¯iŒêŽ›ïUŸeö]Ë• ºSÔ Ì&ÉȽÍ`4%e–³ew6áÈ9øÅññ^¶N%ÅÝŸååu[4¥A^„oì¸åv”€8¢ÍEψ½$×#úL¾È±ºÂ|v›‚Äã‹• Ô±ªÝŒ•Xç猘ø³·UÙß ú9¦p~(nø}gÐoX(#-I7è&®rÓð§Ç 8ô"<Ûns‚à”§ù)3š}`¢ËÁGha×½”¢îŸ/O©’Š»1jõ96Þ™ùW•è„> endobj 2274 0 obj << /Filter[/FlateDecode] /Length1 722 /Length2 1201 /Length3 533 /Length 1735 >> stream xÚí’}‰0ÜȺDT‹]²Žßï:)Ø.þj€9i± )~ò@¤[*§_æ£7øãstz^ÞYšâÓ˜ºÛ…‹½³ÞßhŽÍÂB#‹"Ÿ”zV¦äP‹çB(x>1ç’íí"^$ «·iÙ<˜Ë#½¯ÕkGéŸêíVòSfzÍ‹s7´äZ½6  j’úï.C“ÏRŽ)Såã¬ÈfWAIÓ½‹'jІõð881åùƒò½&f`¦Et,/£Tù<%U_°‘t»\ª¼ð¬=eßæùw.|Ò2’$U¼––Ùù– Ûîõ ŒÅ×CiRèÉÕ{}k?7ÒÁíšÎnR.®Õ|: Ý*äkš<Ê÷O™¯ 2;]Â{Ê’l¯ÊÄ"èHÂé¬Þ°Îoy>¥Ú[¯*.2tÜwå4õºm¿ä“öþDÃEäüÊga3w‡Ÿî,yâålTÐpæ`ݾýu¶R—ïÊÓ‡ßcÌËë3ðÏÇŒú×ÔÕîKÕ8õ¦¢l²jn&iü#¶nŒ¯|f‡¹uôHÛ»‘§¾2®l)~è‡'—Ì—”LOÏJ¸Q‡±-EÝlu­Êƒì ÇÄÆ =óÑa eVs¤V¢íófuE[¸¤Ï.Š5ªÙyæhØ]ïF[q'cnãu©Zûûn=£ÞQ˜˜¶É ;nÍ(Â-Õþúâ¼èiëž Ûvª,òÅŽÊÌ5Û 2×mˆ –¯Á_Uv^„òÐu)uß7¥xˆvò:NÖ ö„…Wîú3÷MÏþÃÚ¥}·QJè#­mC ŸŽÎÝ“ŽŠìø§+ŽäœlÖ¬blór­*x”ØÀÌüôþç¿¿Ø—P,‡¿ˆ6p3n”g£ù<Þõ¾Ë=Æâ‰Aš~bEOŸ+•ÝØsEÆH’lzñ¾YçÞ4;âLbÜoêên,“ c¶‡F²§îñŒâÝOΰêÚ‰Û·dB¿/½Àäwÿ(©LYóªZðyµƒ}ÆH?úXÙ`~åÍÔ¬ãKIUnàqRcþZgqrt*Dš\ßûÃMý+yƒoWñÌΔ-=»rúö~ĹŸô˜\f¾¿?uHÝ@{´BÉáòßT¦ÑJɰ¡ÃïvWTÎÿåEýÀÿD…!‚Äã â0•ú/:´£ endstream endobj 3207 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-15 -951 1252 782] /FontName/ZXCAFE+CMSY7 /ItalicAngle -14.035 /StemV 93 /FontFile 3206 0 R /Flags 68 >> endobj 3206 0 obj << /Filter[/FlateDecode] /Length1 721 /Length2 665 /Length3 533 /Length 1179 >> stream xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž4W0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22´25ââRUpÎ/¨,ÊLÏ(QÐpÖ©2WpÌM-ÊLNÌSðM,ÉHÍ’œ˜£œŸœ™ZR©§ à˜“£ÒR¬”ZœZT–š¢ÇÅeh¨’™\¢”šž™Ç¥r“g^Z¾‚9D8¥´&U–ZT t—‚К @W¦äçåT*¤¤¦qéûåmKº…dgaqºán¥99~‰¹ ãAá„!˜›™S UŸ[PZ’Z¤à›Ÿ’Z”‡®4<â6ßÔ”ÌÒ\tYÏ’ÄœÌdǼôœT]C=cSˆDf±[fEjJ@fIr†BZbNq*X<5/Ý)ÀÐ;D?*ÂÙÑÍU±É€Ä̼’Ê‚T„j0ßÁRQf…B´ž!P!ÂX±h–¹æ%ç§dæ¥+—$æ¥$¥À0åä”_Q­ LCº–¦† †F¦F æFµ¨ Có2 KS=]L , ÍÁ¢É¥EE©y%àÄô0ŒŸ– ¤ÔÔŠÔd®ÙsD3ãudµ¿&|9pU)|׉s77ÌRÚd(éw¾irkS¾ßôØsçŽkë|^Ø1óÌ=ù›¦æ6ZsæÛasß_yç2Þ-ò3ËÖ%Ÿä¸óþì^Ÿ¦· ‹óJÚ“}9æ_‰ú²¸+l‰£Ž5÷ú_¯ «?Ü›ÿ»ª%a¿{TºÄ†ã6á‚®Ô¦•³,úýþ؉ïv³3kï0–™2<²ñç[±èRéZîleÎz¦_ 6òn?×üã ªq–ܸs)_»Ç´3ËÄÿÙ©F&´d–<•±s§Á’ØXþÃÙ¦:&ΫóË'oîÕ©ßy„sueë«qóû³›3t\ü•[¯$r«Sã ÷4c¯KE·Þž+º´rSVïÅŠ'_¿a¾2öuïK½+vpÏx7çn—MøÚÚ¼í+ô_-{Ä÷~¹^)ßoÏø‚Ý‹TIè½1ÿ¸ðè>…éì¢Læ·–íg¾2£)½üÝëD^ÿc]Q,'å$ó'ÐÖýZñ㛾 ñ±lÿ¥>˜¦³uy”×ä›;ŠMwÖ¸®±hlõÕ4Í9Ÿ"Khl1<ñÛQNPLòþ ÅÆMg¥o仸¼½zkMžãVÑ앪Yß\œºf³Î¢Ïw¶.Ý=Cÿñùs5ÙvpN/yjv§SAYþè•Í)óRÏ´äD÷l3}VŸùË&·eï«|Á€”þ-oD³»û¼¼}îY%R·y¡U¡¢VÆC?Ülv-\2W~ÆÕ7ÏKŸ—¾a½ß-¥a‘rjÌK?#ùBá…ž –O–=’ýÍú«mÃÁÿ+ÿ,Z[·ƒUî÷Œ¯·~T[+œ×Êè¿â]OúkÏo}¹…Ù||7ümN ™þSGp‰Ð–OŸ2ü«¼ßºÏ[âpÉŸIQe™®¹vrÎsEv]Nú1?ÒpzúìEÛ[ (\£ ’sR‹Jòs‹²¹¸Ì{—Æ endstream endobj 3251 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-57 -250 1183 750] /FontName/XKGKSY+CMSL8 /ItalicAngle -9.46 /StemV 86 /FontFile 3250 0 R /Flags 68 >> endobj 3250 0 obj << /Filter[/FlateDecode] /Length1 719 /Length2 1199 /Length3 533 /Length 1737 >> stream xÚí’kTSWÇírˆ®Ê€ o8´M!1A’ðP4D¡Á (! \HráæByˆ EAJ©¢8’…æêDq%;âpxÀDb“P82 ¶L»%0$ ùRàËÇ¢ ‰ÆDÈ."„!,‰C,»—¶ÈÀnH¡ ˆ„ÃQ(@ 1 €"a)nÓ“—4ôå´(>öC)Be.`«á´J"'Ûä‡hNƒ4,ÿ1Ö¿¡ZiΊ‹ýø’%û¥>ý®Ì—Àâ¤Il<¡ÀA¨t¥4Zfó…Dp¼deÕ ã‹a!C)†Ñ…äD[NÃ2œ‰80&Œ|± zŸ‡¤¢• šÞ½ÇØìÃöáîµ_~Öå"‡K±€¤XS¿)¿Åš¡p"%“ÈdŠF¨™VûWæ)""X ¸_*⣢&~åá$¦©t@t¤j¾Åy3 SÉ©ÿ*Ü#…ãâ!¯€J&“é.Ë—Æ£($ÅÞÍ…?ݦE” q…E†°6ÏÁÂþeø\Cß'A·U£é[]\ܵmÖÜ8¸Îê›T[oËÁbíoNßGë/}Ït>)ièiÊgog¬»a>ìÍzõQ3û yéZZgjy}¸USò6ø 'ä-aPÄ_zß"õª.F¢Îán‡~4NŒ'lQ–úÔÏ?ÎXÿ¬2|fµbKHB„ÞЫʽcôRÖ®fž+ËÌ>јç¨H_€Cnš&¬ëû,»DTÔ¿ÊÆ¢Eñ§@GòñÉgö'3MZ[×äD(Ê"÷{Ê'Âêlª:×Ôx7æµh»±sÏ_œâ}fÌúÙww“'`ýÒü°oòg -:ÏüÁŽ@òËžèTsÀOëtþyCHíC$ïøð¥=]~ÑÙ®j‹úê*ÞO—ÌV8ÌhŽ?‡¼Mº¬t6‹­2Ü=¦_®ÿuÜóE–½)ÙâÊ>•Œù°ßf—vÏl,bÇvM{•ËGm¶é»^ãê;ëvÉ®¹ÿ«2ò»æÕç‹·vW{f°hz1’¯õ²dÑÍžOÝì%Ó­Û?.tßÓ—SÙ¶£nì 7§œ@,‘ß)À/ª2ò”faj}ºyh”[ §M©¨¹Nd~ÏiÙ9®åÑô(ÈÙ—>|¶»Xt“^Ðz3ÒPš³0r¤t¹l-ªµŸÏ<ÖÒ°‡ú®âîyÎÜÓU-VÔÆyAè5OF†×èŒ:9â¢KHÕÑ›òævo*¡[œæ„Ü´+üQ¹¯ôzÓ€Z˜ž5óÝZÞÀÚóní)ÞÖþ‘ÙÑCÌ{ûfLÎMlµÂꆬTýf2­wdÁuWS~½cÉšPÎýêð´Ù”c“¤¹Ô<„ëàÍ}¿æv:¯¡uâÝMÊ–~öÄBþü_‡Ã’³ç|2 ݨ^úÝÏ¿¤ ‚åuÊà{Ük2ÕèÎ*sý1ê<žúˆúpÚ¾œ7e{Í¿”œ¯­8~xºM¹fÛ§ £1Wz¿ûäZ¯ÑÙo½rO†Z°·^žZôº}êÀà…úu;੟z“ >b™”TDÞêÝŸ¶9·­’­Åv ìaɳŸ„ú_5qZnyDiðbð•ptŒ»°Øl}RýcÕWAŸ£Ö)m·Ñnšz@í­¦®¶Ulk{’ÕÑRæó((z¦ÙJ5ÕË.1îë–Ÿ.(|‡·sgo{d?öl^G-EUpì Ãö@ÿÁ¸+ÛÙ§ÏLŽƒ’ô£߀!£¡Ó7îGë”däûÓK<¥ÇïuYü`bÚ‘ ry—j°nkÞK‚¹AÙ]áä‰Ó›•if#qmºŽ=‘|khé¼øˆâ¯?ôÉ)È»K¤uâY=¥´„䜌´ O·§I™¦´½–Õ‚$§—q‡c‚‰²,UÈbÕ;ÆNZ—PýàЧ˜×“ϧN Žw<€žA¡Ù‹nXÅÎð×Jï{—çë¸^(ýÅ2‚ôxºÝ³œS\F ÚÿËû¿Áÿ„P ñQ ‘ðÑîï:ª! endstream endobj 3286 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-59 -250 1235 750] /FontName/BNEJPC+CMBX8 /ItalicAngle 0 /StemV 122 /FontFile 3285 0 R /Flags 4 >> endobj 3285 0 obj << /Filter[/FlateDecode] /Length1 713 /Length2 1212 /Length3 533 /Length 1744 >> stream xÚí’8TùljÁXù±5%:DƒÉ˜¡!´Oµ«Ö#™+™9fNÆΜÑÌZ‘Hz´Ô²¥Ô#±”©‘QùzÚ¤´~ÜÐ •ícó#¿ãÒl{Ÿ[÷ŸûìûÜsþ9Ÿ÷ç}ÞŸ×ùœ¯…)Ó׆ÎG‚¡Ýˆ³¡’©Î€»—{;@%Sðî(b0"ô1È :9Qº8°£Tg{gŠ#o¸#‘R ÃKw«%—#@€P˜ / ƒ"”!"H>‚·e Êi’åÆú/T‡ï  0b)~iOŸ´ÁX ýÝ€DDŠ1¼>„ ?¶úC+lnˆà“)ž(€yta¨(+,Ú K >Æxa@(AË:$䌠ÜÚ2€­cצ;i凮4™ ,ÄöI#ÿˆ]r/×Ô×Êå °8@!S(T¥Qyx:øÑ°]B‡…¡€/ ù ÊÿCøÊÍ ‘ÄØÐœ;šòÙÙÓG%ö?~B8J yz4 …âèà°¬òÄ( ±åC üàu¬\I þBöç°*g«1iŠ;YûÔÌ¿¢©‰¯Î>G›ÎYûsÃØjŽÜq(9)œ9Ù©3÷3õì¬å¦'nñrI¯º'•n=_kò¨êÀ«)çë§^Û´Ü Xe{wJ-çPrh1A8Ýîq~Yóö¾éúÛóO©yÆ—jv*úOTª8óžî:¼÷ é"gºXCøÄ`@ÛÄF$Ø'-úM¸ÚøÅµ•~þòqÁv«czuÚGÙíïl#î0­¸ K6Þ^?_{îëÁïƒ. Œ-ªNXÖÕ£%* ÍÃzôxΦÀŽ›¤ÑÀŒ¾IÚs’|ݘìr3¦}¦°ÔŸËÖ¡4Ýð¶žñ/Ÿ1¨#¶7®¥²pe&ïƒO«—¯k-žÝlàò¸Aû’«N˜k§7!-Ñ×ÀJwxD]gÛÄßÒŒÂSè Æ&ÜØGÔÕ†k³Kíí²2J[dFž&˜ÙS‚ušüHÛ£úW;ع}knEä{û8àö·Æ²%÷7ȃ¯äv–šUS»¸À´§«0üŸ™›jo{ONžÍ4žnbŽéÊ‹¿´huévßj4¥³(û¦o˜ž°2sŒñ”æŽQˬwòLŽö¬{§ÊnÄ©º$|QXÒzcÁñ ÑrWÅqÆ“ksoî‚®¦ÄÅ÷ߘ7uöôn»ZÜg¹pìò-Ú³Ê!d•ú“ ×_ßÓ„E^ÞWºµeNÇ}´³*4,ÃÎ$ jø…ÙõoO‚ÏÌ_OèÏ.áû{Ê †7ö 1t_qˆâÂ’á¢ë¿1JÞL¢ìº‚(Õ†5›\4xNš3Ð?ã+7Xgó³YѺï‹*eÆÐåuZWjòüâÌ}CE-± Ÿô¿²uªGN%´7zŽ{!“¼û\BÿžÜ…‡òêñ¿d%ºvv |oý©óØ`#P}¤ãÈâxj áqcžuÄLײŸp7~£úHÑöÄ¡’ÏÍmµô=H!–gò y…}cõaÎò·£¡˜¥ÅpI2ÕjßÛÛW°:%)âö&ÇÚµº‚3{*ñï•ief[T¼âZTOØåõʳÆý.Ÿ›)*&/Fw%‰íÝAÜ–w 3¶AU¼Ö•Ö£j#š÷ý‰öhÙd`&÷¿Ä©ùã•~Cz×~ø<&×m+¡ùŽí± ý¸ÖÒ*ÛE~É…&v=Ü^ùd7™4‡lΊ{Ÿ'·þšp°ª$õ››‡jyŠ=«½Ãh’× šçGÓq^¬$3$ƒSž×Ý<å#Ç¥â®çÖ®¶i&D]ªu¹˜±zP%/>±k}QToûÜ[ÙKºùOþjÎó7Xo·pô´ÑÙô6S"$fäµjÊÐ¥nïýyi[ϲ=µ2Ù§_”=X# JÙšú@š—åu'¬ð‰âê> endobj 5 0 obj << /Type/Page /Resources 6 0 R /Contents[518 0 R 4 0 R 519 0 R 520 0 R] /Parent 4316 0 R >> endobj 522 0 obj << /Type/Page /Resources 523 0 R /Contents[518 0 R 4 0 R 528 0 R 520 0 R] /Parent 4316 0 R >> endobj 530 0 obj << /Type/Page /Resources 531 0 R /Contents[518 0 R 4 0 R 569 0 R 520 0 R] /Annots 570 0 R /Parent 4316 0 R >> endobj 4316 0 obj << /Type/Pages /Count 3 /Kids[5 0 R 522 0 R 530 0 R] /Parent 4315 0 R >> endobj 572 0 obj << /Type/Page /Resources 573 0 R /Contents[518 0 R 4 0 R 621 0 R 520 0 R] /Annots 622 0 R /Parent 4317 0 R >> endobj 624 0 obj << /Type/Page /Resources 625 0 R /Contents[518 0 R 4 0 R 675 0 R 520 0 R] /Annots 676 0 R /Parent 4317 0 R >> endobj 678 0 obj << /Type/Page /Resources 679 0 R /Contents[518 0 R 4 0 R 727 0 R 520 0 R] /Annots 728 0 R /Parent 4317 0 R >> endobj 730 0 obj << /Type/Page /Resources 731 0 R /Contents[518 0 R 4 0 R 778 0 R 520 0 R] /Annots 779 0 R /Parent 4317 0 R >> endobj 4317 0 obj << /Type/Pages /Count 4 /Kids[572 0 R 624 0 R 678 0 R 730 0 R] /Parent 4315 0 R >> endobj 781 0 obj << /Type/Page /Resources 782 0 R /Contents[518 0 R 4 0 R 830 0 R 520 0 R] /Annots 831 0 R /Parent 4318 0 R >> endobj 833 0 obj << /Type/Page /Resources 834 0 R /Contents[518 0 R 4 0 R 882 0 R 520 0 R] /Annots 883 0 R /Parent 4318 0 R >> endobj 885 0 obj << /Type/Page /Resources 886 0 R /Contents[518 0 R 4 0 R 932 0 R 520 0 R] /Annots 933 0 R /Parent 4318 0 R >> endobj 935 0 obj << /Type/Page /Resources 936 0 R /Contents[518 0 R 4 0 R 983 0 R 520 0 R] /Annots 984 0 R /Parent 4318 0 R >> endobj 4318 0 obj << /Type/Pages /Count 4 /Kids[781 0 R 833 0 R 885 0 R 935 0 R] /Parent 4315 0 R >> endobj 986 0 obj << /Type/Page /Resources 987 0 R /Contents[518 0 R 4 0 R 1036 0 R 520 0 R] /Annots 1037 0 R /Parent 4319 0 R >> endobj 1039 0 obj << /Type/Page /Resources 1040 0 R /Contents[518 0 R 4 0 R 1087 0 R 520 0 R] /Annots 1088 0 R /Parent 4319 0 R >> endobj 1090 0 obj << /Type/Page /Resources 1091 0 R /Contents[518 0 R 4 0 R 1117 0 R 520 0 R] /Annots 1118 0 R /Parent 4319 0 R >> endobj 1120 0 obj << /Type/Page /Resources 1121 0 R /Contents[518 0 R 4 0 R 1140 0 R 520 0 R] /Annots 1141 0 R /Parent 4319 0 R >> endobj 4319 0 obj << /Type/Pages /Count 4 /Kids[986 0 R 1039 0 R 1090 0 R 1120 0 R] /Parent 4315 0 R >> endobj 4315 0 obj << /Type/Pages /Count 15 /Kids[4316 0 R 4317 0 R 4318 0 R 4319 0 R] /Parent 4314 0 R >> endobj 1143 0 obj << /Type/Page /Resources 1144 0 R /Contents[518 0 R 4 0 R 1150 0 R 520 0 R] /Annots 1151 0 R /Parent 4321 0 R >> endobj 1153 0 obj << /Type/Page /Resources 1154 0 R /Contents[518 0 R 4 0 R 1160 0 R 520 0 R] /Parent 4321 0 R >> endobj 1162 0 obj << /Type/Page /Resources 1163 0 R /Contents[518 0 R 4 0 R 1178 0 R 520 0 R] /Annots 1179 0 R /Parent 4321 0 R >> endobj 1181 0 obj << /Type/Page /Resources 1182 0 R /Contents[518 0 R 4 0 R 1187 0 R 520 0 R] /Parent 4321 0 R >> endobj 4321 0 obj << /Type/Pages /Count 4 /Kids[1143 0 R 1153 0 R 1162 0 R 1181 0 R] /Parent 4320 0 R >> endobj 1189 0 obj << /Type/Page /Resources 1190 0 R /Contents[518 0 R 4 0 R 1194 0 R 520 0 R] /Parent 4322 0 R >> endobj 1196 0 obj << /Type/Page /Resources 1197 0 R /Contents[518 0 R 4 0 R 1199 0 R 520 0 R] /Parent 4322 0 R >> endobj 1201 0 obj << /Type/Page /Resources 1202 0 R /Contents[518 0 R 4 0 R 1204 0 R 520 0 R] /Parent 4322 0 R >> endobj 1206 0 obj << /Type/Page /Resources 1207 0 R /Contents[518 0 R 4 0 R 1209 0 R 520 0 R] /Parent 4322 0 R >> endobj 4322 0 obj << /Type/Pages /Count 4 /Kids[1189 0 R 1196 0 R 1201 0 R 1206 0 R] /Parent 4320 0 R >> endobj 1211 0 obj << /Type/Page /Resources 1212 0 R /Contents[518 0 R 4 0 R 1216 0 R 520 0 R] /Parent 4323 0 R >> endobj 1218 0 obj << /Type/Page /Resources 1219 0 R /Contents[518 0 R 4 0 R 1221 0 R 520 0 R] /Parent 4323 0 R >> endobj 1223 0 obj << /Type/Page /Resources 1224 0 R /Contents[518 0 R 4 0 R 1227 0 R 520 0 R] /Parent 4323 0 R >> endobj 1229 0 obj << /Type/Page /Resources 1230 0 R /Contents[518 0 R 4 0 R 1234 0 R 520 0 R] /Parent 4323 0 R >> endobj 4323 0 obj << /Type/Pages /Count 4 /Kids[1211 0 R 1218 0 R 1223 0 R 1229 0 R] /Parent 4320 0 R >> endobj 1236 0 obj << /Type/Page /Resources 1237 0 R /Contents[518 0 R 4 0 R 1239 0 R 520 0 R] /Parent 4324 0 R >> endobj 1241 0 obj << /Type/Page /Resources 1242 0 R /Contents[518 0 R 4 0 R 1245 0 R 520 0 R] /Parent 4324 0 R >> endobj 1247 0 obj << /Type/Page /Resources 1248 0 R /Contents[518 0 R 4 0 R 1253 0 R 520 0 R] /Parent 4324 0 R >> endobj 1255 0 obj << /Type/Page /Resources 1256 0 R /Contents[518 0 R 4 0 R 1260 0 R 520 0 R] /Parent 4324 0 R >> endobj 4324 0 obj << /Type/Pages /Count 4 /Kids[1236 0 R 1241 0 R 1247 0 R 1255 0 R] /Parent 4320 0 R >> endobj 4320 0 obj << /Type/Pages /Count 16 /Kids[4321 0 R 4322 0 R 4323 0 R 4324 0 R] /Parent 4314 0 R >> endobj 1262 0 obj << /Type/Page /Resources 1263 0 R /Contents[518 0 R 4 0 R 1265 0 R 520 0 R] /Parent 4326 0 R >> endobj 1267 0 obj << /Type/Page /Resources 1268 0 R /Contents[518 0 R 4 0 R 1271 0 R 520 0 R] /Parent 4326 0 R >> endobj 1273 0 obj << /Type/Page /Resources 1274 0 R /Contents[518 0 R 4 0 R 1276 0 R 520 0 R] /Parent 4326 0 R >> endobj 1278 0 obj << /Type/Page /Resources 1279 0 R /Contents[518 0 R 4 0 R 1282 0 R 520 0 R] /Parent 4326 0 R >> endobj 4326 0 obj << /Type/Pages /Count 4 /Kids[1262 0 R 1267 0 R 1273 0 R 1278 0 R] /Parent 4325 0 R >> endobj 1284 0 obj << /Type/Page /Resources 1285 0 R /Contents[518 0 R 4 0 R 1293 0 R 520 0 R] /Annots 1294 0 R /Parent 4327 0 R >> endobj 1296 0 obj << /Type/Page /Resources 1297 0 R /Contents[518 0 R 4 0 R 1300 0 R 520 0 R] /Parent 4327 0 R >> endobj 1302 0 obj << /Type/Page /Resources 1303 0 R /Contents[518 0 R 4 0 R 1307 0 R 520 0 R] /Annots 1308 0 R /Parent 4327 0 R >> endobj 1310 0 obj << /Type/Page /Resources 1311 0 R /Contents[518 0 R 4 0 R 1314 0 R 520 0 R] /Parent 4327 0 R >> endobj 4327 0 obj << /Type/Pages /Count 4 /Kids[1284 0 R 1296 0 R 1302 0 R 1310 0 R] /Parent 4325 0 R >> endobj 1316 0 obj << /Type/Page /Resources 1317 0 R /Contents[518 0 R 4 0 R 1319 0 R 520 0 R] /Parent 4328 0 R >> endobj 1321 0 obj << /Type/Page /Resources 1322 0 R /Contents[518 0 R 4 0 R 1326 0 R 520 0 R] /Parent 4328 0 R >> endobj 1328 0 obj << /Type/Page /Resources 1329 0 R /Contents[518 0 R 4 0 R 1335 0 R 520 0 R] /Annots 1336 0 R /Parent 4328 0 R >> endobj 1338 0 obj << /Type/Page /Resources 1339 0 R /Contents[518 0 R 4 0 R 1342 0 R 520 0 R] /Parent 4328 0 R >> endobj 4328 0 obj << /Type/Pages /Count 4 /Kids[1316 0 R 1321 0 R 1328 0 R 1338 0 R] /Parent 4325 0 R >> endobj 1344 0 obj << /Type/Page /Resources 1345 0 R /Contents[518 0 R 4 0 R 1348 0 R 520 0 R] /Parent 4329 0 R >> endobj 1350 0 obj << /Type/Page /Resources 1351 0 R /Contents[518 0 R 4 0 R 1353 0 R 520 0 R] /Parent 4329 0 R >> endobj 1355 0 obj << /Type/Page /Resources 1356 0 R /Contents[518 0 R 4 0 R 1358 0 R 520 0 R] /Parent 4329 0 R >> endobj 1360 0 obj << /Type/Page /Resources 1361 0 R /Contents[518 0 R 4 0 R 1365 0 R 520 0 R] /Parent 4329 0 R >> endobj 4329 0 obj << /Type/Pages /Count 4 /Kids[1344 0 R 1350 0 R 1355 0 R 1360 0 R] /Parent 4325 0 R >> endobj 4325 0 obj << /Type/Pages /Count 16 /Kids[4326 0 R 4327 0 R 4328 0 R 4329 0 R] /Parent 4314 0 R >> endobj 1367 0 obj << /Type/Page /Resources 1368 0 R /Contents[518 0 R 4 0 R 1373 0 R 520 0 R] /Parent 4331 0 R >> endobj 1375 0 obj << /Type/Page /Resources 1376 0 R /Contents[518 0 R 4 0 R 1383 0 R 520 0 R] /Parent 4331 0 R >> endobj 1385 0 obj << /Type/Page /Resources 1386 0 R /Contents[518 0 R 4 0 R 1392 0 R 520 0 R] /Annots 1393 0 R /Parent 4331 0 R >> endobj 1395 0 obj << /Type/Page /Resources 1396 0 R /Contents[518 0 R 4 0 R 1399 0 R 520 0 R] /Annots 1400 0 R /Parent 4331 0 R >> endobj 4331 0 obj << /Type/Pages /Count 4 /Kids[1367 0 R 1375 0 R 1385 0 R 1395 0 R] /Parent 4330 0 R >> endobj 1402 0 obj << /Type/Page /Resources 1403 0 R /Contents[518 0 R 4 0 R 1408 0 R 520 0 R] /Annots 1409 0 R /Parent 4332 0 R >> endobj 1411 0 obj << /Type/Page /Resources 1412 0 R /Contents[518 0 R 4 0 R 1414 0 R 520 0 R] /Parent 4332 0 R >> endobj 1416 0 obj << /Type/Page /Resources 1417 0 R /Contents[518 0 R 4 0 R 1421 0 R 520 0 R] /Parent 4332 0 R >> endobj 1423 0 obj << /Type/Page /Resources 1424 0 R /Contents[518 0 R 4 0 R 1428 0 R 520 0 R] /Parent 4332 0 R >> endobj 4332 0 obj << /Type/Pages /Count 4 /Kids[1402 0 R 1411 0 R 1416 0 R 1423 0 R] /Parent 4330 0 R >> endobj 1430 0 obj << /Type/Page /Resources 1431 0 R /Contents[518 0 R 4 0 R 1437 0 R 520 0 R] /Annots 1438 0 R /Parent 4333 0 R >> endobj 1440 0 obj << /Type/Page /Resources 1441 0 R /Contents[518 0 R 4 0 R 1447 0 R 520 0 R] /Annots 1448 0 R /Parent 4333 0 R >> endobj 1450 0 obj << /Type/Page /Resources 1451 0 R /Contents[518 0 R 4 0 R 1453 0 R 520 0 R] /Parent 4333 0 R >> endobj 1455 0 obj << /Type/Page /Resources 1456 0 R /Contents[518 0 R 4 0 R 1465 0 R 520 0 R] /Annots 1466 0 R /Parent 4333 0 R >> endobj 4333 0 obj << /Type/Pages /Count 4 /Kids[1430 0 R 1440 0 R 1450 0 R 1455 0 R] /Parent 4330 0 R >> endobj 1468 0 obj << /Type/Page /Resources 1469 0 R /Contents[518 0 R 4 0 R 1480 0 R 520 0 R] /Annots 1481 0 R /Parent 4334 0 R >> endobj 1483 0 obj << /Type/Page /Resources 1484 0 R /Contents[518 0 R 4 0 R 1495 0 R 520 0 R] /Annots 1496 0 R /Parent 4334 0 R >> endobj 1498 0 obj << /Type/Page /Resources 1499 0 R /Contents[518 0 R 4 0 R 1503 0 R 520 0 R] /Annots 1504 0 R /Parent 4334 0 R >> endobj 1506 0 obj << /Type/Page /Resources 1507 0 R /Contents[518 0 R 4 0 R 1511 0 R 520 0 R] /Parent 4334 0 R >> endobj 4334 0 obj << /Type/Pages /Count 4 /Kids[1468 0 R 1483 0 R 1498 0 R 1506 0 R] /Parent 4330 0 R >> endobj 4330 0 obj << /Type/Pages /Count 16 /Kids[4331 0 R 4332 0 R 4333 0 R 4334 0 R] /Parent 4314 0 R >> endobj 4314 0 obj << /Type/Pages /Count 63 /Kids[4315 0 R 4320 0 R 4325 0 R 4330 0 R] /Parent 3 0 R >> endobj 1513 0 obj << /Type/Page /Resources 1514 0 R /Contents[518 0 R 4 0 R 1519 0 R 520 0 R] /Parent 4337 0 R >> endobj 1521 0 obj << /Type/Page /Resources 1522 0 R /Contents[518 0 R 4 0 R 1525 0 R 520 0 R] /Parent 4337 0 R >> endobj 1527 0 obj << /Type/Page /Resources 1528 0 R /Contents[518 0 R 4 0 R 1533 0 R 520 0 R] /Parent 4337 0 R >> endobj 1535 0 obj << /Type/Page /Resources 1536 0 R /Contents[518 0 R 4 0 R 1539 0 R 520 0 R] /Parent 4337 0 R >> endobj 4337 0 obj << /Type/Pages /Count 4 /Kids[1513 0 R 1521 0 R 1527 0 R 1535 0 R] /Parent 4336 0 R >> endobj 1541 0 obj << /Type/Page /Resources 1542 0 R /Contents[518 0 R 4 0 R 1544 0 R 520 0 R] /Parent 4338 0 R >> endobj 1546 0 obj << /Type/Page /Resources 1547 0 R /Contents[518 0 R 4 0 R 1551 0 R 520 0 R] /Parent 4338 0 R >> endobj 1553 0 obj << /Type/Page /Resources 1554 0 R /Contents[518 0 R 4 0 R 1556 0 R 520 0 R] /Parent 4338 0 R >> endobj 1558 0 obj << /Type/Page /Resources 1559 0 R /Contents[518 0 R 4 0 R 1562 0 R 520 0 R] /Parent 4338 0 R >> endobj 4338 0 obj << /Type/Pages /Count 4 /Kids[1541 0 R 1546 0 R 1553 0 R 1558 0 R] /Parent 4336 0 R >> endobj 1564 0 obj << /Type/Page /Resources 1565 0 R /Contents[518 0 R 4 0 R 1573 0 R 520 0 R] /Annots 1574 0 R /Parent 4339 0 R >> endobj 1576 0 obj << /Type/Page /Resources 1577 0 R /Contents[518 0 R 4 0 R 1581 0 R 520 0 R] /Parent 4339 0 R >> endobj 1583 0 obj << /Type/Page /Resources 1584 0 R /Contents[518 0 R 4 0 R 1586 0 R 520 0 R] /Parent 4339 0 R >> endobj 1588 0 obj << /Type/Page /Resources 1589 0 R /Contents[518 0 R 4 0 R 1593 0 R 520 0 R] /Annots 1594 0 R /Parent 4339 0 R >> endobj 4339 0 obj << /Type/Pages /Count 4 /Kids[1564 0 R 1576 0 R 1583 0 R 1588 0 R] /Parent 4336 0 R >> endobj 1596 0 obj << /Type/Page /Resources 1597 0 R /Contents[518 0 R 4 0 R 1601 0 R 520 0 R] /Parent 4340 0 R >> endobj 1603 0 obj << /Type/Page /Resources 1604 0 R /Contents[518 0 R 4 0 R 1607 0 R 520 0 R] /Parent 4340 0 R >> endobj 1609 0 obj << /Type/Page /Resources 1610 0 R /Contents[518 0 R 4 0 R 1612 0 R 520 0 R] /Parent 4340 0 R >> endobj 1614 0 obj << /Type/Page /Resources 1615 0 R /Contents[518 0 R 4 0 R 1620 0 R 520 0 R] /Annots 1621 0 R /Parent 4340 0 R >> endobj 4340 0 obj << /Type/Pages /Count 4 /Kids[1596 0 R 1603 0 R 1609 0 R 1614 0 R] /Parent 4336 0 R >> endobj 4336 0 obj << /Type/Pages /Count 16 /Kids[4337 0 R 4338 0 R 4339 0 R 4340 0 R] /Parent 4335 0 R >> endobj 1623 0 obj << /Type/Page /Resources 1624 0 R /Contents[518 0 R 4 0 R 1628 0 R 520 0 R] /Annots 1629 0 R /Parent 4342 0 R >> endobj 1631 0 obj << /Type/Page /Resources 1632 0 R /Contents[518 0 R 4 0 R 1635 0 R 520 0 R] /Parent 4342 0 R >> endobj 1637 0 obj << /Type/Page /Resources 1638 0 R /Contents[518 0 R 4 0 R 1641 0 R 520 0 R] /Parent 4342 0 R >> endobj 1643 0 obj << /Type/Page /Resources 1644 0 R /Contents[518 0 R 4 0 R 1647 0 R 520 0 R] /Parent 4342 0 R >> endobj 4342 0 obj << /Type/Pages /Count 4 /Kids[1623 0 R 1631 0 R 1637 0 R 1643 0 R] /Parent 4341 0 R >> endobj 1649 0 obj << /Type/Page /Resources 1650 0 R /Contents[518 0 R 4 0 R 1653 0 R 520 0 R] /Parent 4343 0 R >> endobj 1655 0 obj << /Type/Page /Resources 1656 0 R /Contents[518 0 R 4 0 R 1658 0 R 520 0 R] /Parent 4343 0 R >> endobj 1660 0 obj << /Type/Page /Resources 1661 0 R /Contents[518 0 R 4 0 R 1664 0 R 520 0 R] /Parent 4343 0 R >> endobj 1666 0 obj << /Type/Page /Resources 1667 0 R /Contents[518 0 R 4 0 R 1670 0 R 520 0 R] /Parent 4343 0 R >> endobj 4343 0 obj << /Type/Pages /Count 4 /Kids[1649 0 R 1655 0 R 1660 0 R 1666 0 R] /Parent 4341 0 R >> endobj 1672 0 obj << /Type/Page /Resources 1673 0 R /Contents[518 0 R 4 0 R 1676 0 R 520 0 R] /Parent 4344 0 R >> endobj 1678 0 obj << /Type/Page /Resources 1679 0 R /Contents[518 0 R 4 0 R 1682 0 R 520 0 R] /Parent 4344 0 R >> endobj 1684 0 obj << /Type/Page /Resources 1685 0 R /Contents[518 0 R 4 0 R 1689 0 R 520 0 R] /Parent 4344 0 R >> endobj 1691 0 obj << /Type/Page /Resources 1692 0 R /Contents[518 0 R 4 0 R 1701 0 R 520 0 R] /Annots 1702 0 R /Parent 4344 0 R >> endobj 4344 0 obj << /Type/Pages /Count 4 /Kids[1672 0 R 1678 0 R 1684 0 R 1691 0 R] /Parent 4341 0 R >> endobj 1704 0 obj << /Type/Page /Resources 1705 0 R /Contents[518 0 R 4 0 R 1709 0 R 520 0 R] /Parent 4345 0 R >> endobj 1711 0 obj << /Type/Page /Resources 1712 0 R /Contents[518 0 R 4 0 R 1721 0 R 520 0 R] /Parent 4345 0 R >> endobj 1723 0 obj << /Type/Page /Resources 1724 0 R /Contents[518 0 R 4 0 R 1728 0 R 520 0 R] /Annots 1729 0 R /Parent 4345 0 R >> endobj 1731 0 obj << /Type/Page /Resources 1732 0 R /Contents[518 0 R 4 0 R 1738 0 R 520 0 R] /Annots 1739 0 R /Parent 4345 0 R >> endobj 4345 0 obj << /Type/Pages /Count 4 /Kids[1704 0 R 1711 0 R 1723 0 R 1731 0 R] /Parent 4341 0 R >> endobj 4341 0 obj << /Type/Pages /Count 16 /Kids[4342 0 R 4343 0 R 4344 0 R 4345 0 R] /Parent 4335 0 R >> endobj 1741 0 obj << /Type/Page /Resources 1742 0 R /Contents[518 0 R 4 0 R 1746 0 R 520 0 R] /Parent 4347 0 R >> endobj 1748 0 obj << /Type/Page /Resources 1749 0 R /Contents[518 0 R 4 0 R 1752 0 R 520 0 R] /Parent 4347 0 R >> endobj 1754 0 obj << /Type/Page /Resources 1755 0 R /Contents[518 0 R 4 0 R 1759 0 R 520 0 R] /Parent 4347 0 R >> endobj 1761 0 obj << /Type/Page /Resources 1762 0 R /Contents[518 0 R 4 0 R 1765 0 R 520 0 R] /Parent 4347 0 R >> endobj 4347 0 obj << /Type/Pages /Count 4 /Kids[1741 0 R 1748 0 R 1754 0 R 1761 0 R] /Parent 4346 0 R >> endobj 1767 0 obj << /Type/Page /Resources 1768 0 R /Contents[518 0 R 4 0 R 1774 0 R 520 0 R] /Annots 1775 0 R /Parent 4348 0 R >> endobj 1777 0 obj << /Type/Page /Resources 1778 0 R /Contents[518 0 R 4 0 R 1785 0 R 520 0 R] /Annots 1786 0 R /Parent 4348 0 R >> endobj 1788 0 obj << /Type/Page /Resources 1789 0 R /Contents[518 0 R 4 0 R 1793 0 R 520 0 R] /Annots 1794 0 R /Parent 4348 0 R >> endobj 1796 0 obj << /Type/Page /Resources 1797 0 R /Contents[518 0 R 4 0 R 1814 0 R 520 0 R] /Annots 1815 0 R /Parent 4348 0 R >> endobj 4348 0 obj << /Type/Pages /Count 4 /Kids[1767 0 R 1777 0 R 1788 0 R 1796 0 R] /Parent 4346 0 R >> endobj 1817 0 obj << /Type/Page /Resources 1818 0 R /Contents[518 0 R 4 0 R 1839 0 R 520 0 R] /Parent 4349 0 R >> endobj 1841 0 obj << /Type/Page /Resources 1842 0 R /Contents[518 0 R 4 0 R 1852 0 R 520 0 R] /Parent 4349 0 R >> endobj 1854 0 obj << /Type/Page /Resources 1855 0 R /Contents[518 0 R 4 0 R 1862 0 R 520 0 R] /Parent 4349 0 R >> endobj 1864 0 obj << /Type/Page /Resources 1865 0 R /Contents[518 0 R 4 0 R 1869 0 R 520 0 R] /Parent 4349 0 R >> endobj 4349 0 obj << /Type/Pages /Count 4 /Kids[1817 0 R 1841 0 R 1854 0 R 1864 0 R] /Parent 4346 0 R >> endobj 1871 0 obj << /Type/Page /Resources 1872 0 R /Contents[518 0 R 4 0 R 1881 0 R 520 0 R] /Annots 1882 0 R /Parent 4350 0 R >> endobj 1884 0 obj << /Type/Page /Resources 1885 0 R /Contents[518 0 R 4 0 R 1891 0 R 520 0 R] /Parent 4350 0 R >> endobj 1893 0 obj << /Type/Page /Resources 1894 0 R /Contents[518 0 R 4 0 R 1902 0 R 520 0 R] /Parent 4350 0 R >> endobj 1904 0 obj << /Type/Page /Resources 1905 0 R /Contents[518 0 R 4 0 R 1914 0 R 520 0 R] /Parent 4350 0 R >> endobj 4350 0 obj << /Type/Pages /Count 4 /Kids[1871 0 R 1884 0 R 1893 0 R 1904 0 R] /Parent 4346 0 R >> endobj 4346 0 obj << /Type/Pages /Count 16 /Kids[4347 0 R 4348 0 R 4349 0 R 4350 0 R] /Parent 4335 0 R >> endobj 1916 0 obj << /Type/Page /Resources 1917 0 R /Contents[518 0 R 4 0 R 1927 0 R 520 0 R] /Parent 4352 0 R >> endobj 1929 0 obj << /Type/Page /Resources 1930 0 R /Contents[518 0 R 4 0 R 1940 0 R 520 0 R] /Parent 4352 0 R >> endobj 1942 0 obj << /Type/Page /Resources 1943 0 R /Contents[518 0 R 4 0 R 1960 0 R 520 0 R] /Parent 4352 0 R >> endobj 1962 0 obj << /Type/Page /Resources 1963 0 R /Contents[518 0 R 4 0 R 1972 0 R 520 0 R] /Parent 4352 0 R >> endobj 4352 0 obj << /Type/Pages /Count 4 /Kids[1916 0 R 1929 0 R 1942 0 R 1962 0 R] /Parent 4351 0 R >> endobj 1974 0 obj << /Type/Page /Resources 1975 0 R /Contents[518 0 R 4 0 R 1985 0 R 520 0 R] /Parent 4353 0 R >> endobj 1987 0 obj << /Type/Page /Resources 1988 0 R /Contents[518 0 R 4 0 R 2000 0 R 520 0 R] /Parent 4353 0 R >> endobj 2002 0 obj << /Type/Page /Resources 2003 0 R /Contents[518 0 R 4 0 R 2013 0 R 520 0 R] /Parent 4353 0 R >> endobj 2015 0 obj << /Type/Page /Resources 2016 0 R /Contents[518 0 R 4 0 R 2026 0 R 520 0 R] /Parent 4353 0 R >> endobj 4353 0 obj << /Type/Pages /Count 4 /Kids[1974 0 R 1987 0 R 2002 0 R 2015 0 R] /Parent 4351 0 R >> endobj 2028 0 obj << /Type/Page /Resources 2029 0 R /Contents[518 0 R 4 0 R 2041 0 R 520 0 R] /Parent 4354 0 R >> endobj 2043 0 obj << /Type/Page /Resources 2044 0 R /Contents[518 0 R 4 0 R 2054 0 R 520 0 R] /Annots 2055 0 R /Parent 4354 0 R >> endobj 2057 0 obj << /Type/Page /Resources 2058 0 R /Contents[518 0 R 4 0 R 2064 0 R 520 0 R] /Annots 2065 0 R /Parent 4354 0 R >> endobj 2067 0 obj << /Type/Page /Resources 2068 0 R /Contents[518 0 R 4 0 R 2094 0 R 520 0 R] /Parent 4354 0 R >> endobj 4354 0 obj << /Type/Pages /Count 4 /Kids[2028 0 R 2043 0 R 2057 0 R 2067 0 R] /Parent 4351 0 R >> endobj 2096 0 obj << /Type/Page /Resources 2097 0 R /Contents[518 0 R 4 0 R 2112 0 R 520 0 R] /Parent 4355 0 R >> endobj 2114 0 obj << /Type/Page /Resources 2115 0 R /Contents[518 0 R 4 0 R 2125 0 R 520 0 R] /Annots 2126 0 R /Parent 4355 0 R >> endobj 2128 0 obj << /Type/Page /Resources 2129 0 R /Contents[518 0 R 4 0 R 2138 0 R 520 0 R] /Annots 2139 0 R /Parent 4355 0 R >> endobj 2141 0 obj << /Type/Page /Resources 2142 0 R /Contents[518 0 R 4 0 R 2149 0 R 520 0 R] /Parent 4355 0 R >> endobj 4355 0 obj << /Type/Pages /Count 4 /Kids[2096 0 R 2114 0 R 2128 0 R 2141 0 R] /Parent 4351 0 R >> endobj 4351 0 obj << /Type/Pages /Count 16 /Kids[4352 0 R 4353 0 R 4354 0 R 4355 0 R] /Parent 4335 0 R >> endobj 4335 0 obj << /Type/Pages /Count 64 /Kids[4336 0 R 4341 0 R 4346 0 R 4351 0 R] /Parent 3 0 R >> endobj 2151 0 obj << /Type/Page /Resources 2152 0 R /Contents[518 0 R 4 0 R 2154 0 R 520 0 R] /Parent 4358 0 R >> endobj 2156 0 obj << /Type/Page /Resources 2157 0 R /Contents[518 0 R 4 0 R 2164 0 R 520 0 R] /Parent 4358 0 R >> endobj 2166 0 obj << /Type/Page /Resources 2167 0 R /Contents[518 0 R 4 0 R 2175 0 R 520 0 R] /Parent 4358 0 R >> endobj 2177 0 obj << /Type/Page /Resources 2178 0 R /Contents[518 0 R 4 0 R 2190 0 R 520 0 R] /Parent 4358 0 R >> endobj 4358 0 obj << /Type/Pages /Count 4 /Kids[2151 0 R 2156 0 R 2166 0 R 2177 0 R] /Parent 4357 0 R >> endobj 2192 0 obj << /Type/Page /Resources 2193 0 R /Contents[518 0 R 4 0 R 2206 0 R 520 0 R] /Parent 4359 0 R >> endobj 2208 0 obj << /Type/Page /Resources 2209 0 R /Contents[518 0 R 4 0 R 2222 0 R 520 0 R] /Parent 4359 0 R >> endobj 2224 0 obj << /Type/Page /Resources 2225 0 R /Contents[518 0 R 4 0 R 2239 0 R 520 0 R] /Parent 4359 0 R >> endobj 2241 0 obj << /Type/Page /Resources 2242 0 R /Contents[518 0 R 4 0 R 2248 0 R 520 0 R] /Annots 2249 0 R /Parent 4359 0 R >> endobj 4359 0 obj << /Type/Pages /Count 4 /Kids[2192 0 R 2208 0 R 2224 0 R 2241 0 R] /Parent 4357 0 R >> endobj 2251 0 obj << /Type/Page /Resources 2252 0 R /Contents[518 0 R 4 0 R 2259 0 R 520 0 R] /Annots 2260 0 R /Parent 4360 0 R >> endobj 2262 0 obj << /Type/Page /Resources 2263 0 R /Contents[518 0 R 4 0 R 2269 0 R 520 0 R] /Parent 4360 0 R >> endobj 2271 0 obj << /Type/Page /Resources 2272 0 R /Contents[518 0 R 4 0 R 2277 0 R 520 0 R] /Parent 4360 0 R >> endobj 2279 0 obj << /Type/Page /Resources 2280 0 R /Contents[518 0 R 4 0 R 2284 0 R 520 0 R] /Parent 4360 0 R >> endobj 4360 0 obj << /Type/Pages /Count 4 /Kids[2251 0 R 2262 0 R 2271 0 R 2279 0 R] /Parent 4357 0 R >> endobj 2286 0 obj << /Type/Page /Resources 2287 0 R /Contents[518 0 R 4 0 R 2296 0 R 520 0 R] /Parent 4361 0 R >> endobj 2298 0 obj << /Type/Page /Resources 2299 0 R /Contents[518 0 R 4 0 R 2306 0 R 520 0 R] /Parent 4361 0 R >> endobj 2308 0 obj << /Type/Page /Resources 2309 0 R /Contents[518 0 R 4 0 R 2315 0 R 520 0 R] /Parent 4361 0 R >> endobj 2317 0 obj << /Type/Page /Resources 2318 0 R /Contents[518 0 R 4 0 R 2328 0 R 520 0 R] /Parent 4361 0 R >> endobj 4361 0 obj << /Type/Pages /Count 4 /Kids[2286 0 R 2298 0 R 2308 0 R 2317 0 R] /Parent 4357 0 R >> endobj 4357 0 obj << /Type/Pages /Count 16 /Kids[4358 0 R 4359 0 R 4360 0 R 4361 0 R] /Parent 4356 0 R >> endobj 2330 0 obj << /Type/Page /Resources 2331 0 R /Contents[518 0 R 4 0 R 2342 0 R 520 0 R] /Parent 4363 0 R >> endobj 2344 0 obj << /Type/Page /Resources 2345 0 R /Contents[518 0 R 4 0 R 2354 0 R 520 0 R] /Parent 4363 0 R >> endobj 2356 0 obj << /Type/Page /Resources 2357 0 R /Contents[518 0 R 4 0 R 2359 0 R 520 0 R] /Parent 4363 0 R >> endobj 2361 0 obj << /Type/Page /Resources 2362 0 R /Contents[518 0 R 4 0 R 2367 0 R 520 0 R] /Parent 4363 0 R >> endobj 4363 0 obj << /Type/Pages /Count 4 /Kids[2330 0 R 2344 0 R 2356 0 R 2361 0 R] /Parent 4362 0 R >> endobj 2369 0 obj << /Type/Page /Resources 2370 0 R /Contents[518 0 R 4 0 R 2380 0 R 520 0 R] /Annots 2381 0 R /Parent 4364 0 R >> endobj 2383 0 obj << /Type/Page /Resources 2384 0 R /Contents[518 0 R 4 0 R 2395 0 R 520 0 R] /Parent 4364 0 R >> endobj 2397 0 obj << /Type/Page /Resources 2398 0 R /Contents[518 0 R 4 0 R 2409 0 R 520 0 R] /Parent 4364 0 R >> endobj 2411 0 obj << /Type/Page /Resources 2412 0 R /Contents[518 0 R 4 0 R 2424 0 R 520 0 R] /Parent 4364 0 R >> endobj 4364 0 obj << /Type/Pages /Count 4 /Kids[2369 0 R 2383 0 R 2397 0 R 2411 0 R] /Parent 4362 0 R >> endobj 2426 0 obj << /Type/Page /Resources 2427 0 R /Contents[518 0 R 4 0 R 2439 0 R 520 0 R] /Parent 4365 0 R >> endobj 2441 0 obj << /Type/Page /Resources 2442 0 R /Contents[518 0 R 4 0 R 2448 0 R 520 0 R] /Parent 4365 0 R >> endobj 2450 0 obj << /Type/Page /Resources 2451 0 R /Contents[518 0 R 4 0 R 2463 0 R 520 0 R] /Parent 4365 0 R >> endobj 2465 0 obj << /Type/Page /Resources 2466 0 R /Contents[518 0 R 4 0 R 2474 0 R 520 0 R] /Parent 4365 0 R >> endobj 4365 0 obj << /Type/Pages /Count 4 /Kids[2426 0 R 2441 0 R 2450 0 R 2465 0 R] /Parent 4362 0 R >> endobj 2476 0 obj << /Type/Page /Resources 2477 0 R /Contents[518 0 R 4 0 R 2487 0 R 520 0 R] /Parent 4366 0 R >> endobj 2489 0 obj << /Type/Page /Resources 2490 0 R /Contents[518 0 R 4 0 R 2505 0 R 520 0 R] /Parent 4366 0 R >> endobj 2507 0 obj << /Type/Page /Resources 2508 0 R /Contents[518 0 R 4 0 R 2521 0 R 520 0 R] /Parent 4366 0 R >> endobj 2523 0 obj << /Type/Page /Resources 2524 0 R /Contents[518 0 R 4 0 R 2526 0 R 520 0 R] /Parent 4366 0 R >> endobj 4366 0 obj << /Type/Pages /Count 4 /Kids[2476 0 R 2489 0 R 2507 0 R 2523 0 R] /Parent 4362 0 R >> endobj 4362 0 obj << /Type/Pages /Count 16 /Kids[4363 0 R 4364 0 R 4365 0 R 4366 0 R] /Parent 4356 0 R >> endobj 2528 0 obj << /Type/Page /Resources 2529 0 R /Contents[518 0 R 4 0 R 2531 0 R 520 0 R] /Parent 4368 0 R >> endobj 2533 0 obj << /Type/Page /Resources 2534 0 R /Contents[518 0 R 4 0 R 2542 0 R 520 0 R] /Parent 4368 0 R >> endobj 2544 0 obj << /Type/Page /Resources 2545 0 R /Contents[518 0 R 4 0 R 2547 0 R 520 0 R] /Parent 4368 0 R >> endobj 2549 0 obj << /Type/Page /Resources 2550 0 R /Contents[518 0 R 4 0 R 2554 0 R 520 0 R] /Parent 4368 0 R >> endobj 4368 0 obj << /Type/Pages /Count 4 /Kids[2528 0 R 2533 0 R 2544 0 R 2549 0 R] /Parent 4367 0 R >> endobj 2556 0 obj << /Type/Page /Resources 2557 0 R /Contents[518 0 R 4 0 R 2560 0 R 520 0 R] /Annots 2561 0 R /Parent 4369 0 R >> endobj 2563 0 obj << /Type/Page /Resources 2564 0 R /Contents[518 0 R 4 0 R 2570 0 R 520 0 R] /Parent 4369 0 R >> endobj 2572 0 obj << /Type/Page /Resources 2573 0 R /Contents[518 0 R 4 0 R 2578 0 R 520 0 R] /Annots 2579 0 R /Parent 4369 0 R >> endobj 2581 0 obj << /Type/Page /Resources 2582 0 R /Contents[518 0 R 4 0 R 2587 0 R 520 0 R] /Annots 2588 0 R /Parent 4369 0 R >> endobj 4369 0 obj << /Type/Pages /Count 4 /Kids[2556 0 R 2563 0 R 2572 0 R 2581 0 R] /Parent 4367 0 R >> endobj 2590 0 obj << /Type/Page /Resources 2591 0 R /Contents[518 0 R 4 0 R 2595 0 R 520 0 R] /Parent 4370 0 R >> endobj 2597 0 obj << /Type/Page /Resources 2598 0 R /Contents[518 0 R 4 0 R 2603 0 R 520 0 R] /Parent 4370 0 R >> endobj 2605 0 obj << /Type/Page /Resources 2606 0 R /Contents[518 0 R 4 0 R 2608 0 R 520 0 R] /Parent 4370 0 R >> endobj 2610 0 obj << /Type/Page /Resources 2611 0 R /Contents[518 0 R 4 0 R 2616 0 R 520 0 R] /Parent 4370 0 R >> endobj 4370 0 obj << /Type/Pages /Count 4 /Kids[2590 0 R 2597 0 R 2605 0 R 2610 0 R] /Parent 4367 0 R >> endobj 2618 0 obj << /Type/Page /Resources 2619 0 R /Contents[518 0 R 4 0 R 2623 0 R 520 0 R] /Parent 4371 0 R >> endobj 2625 0 obj << /Type/Page /Resources 2626 0 R /Contents[518 0 R 4 0 R 2638 0 R 520 0 R] /Parent 4371 0 R >> endobj 2640 0 obj << /Type/Page /Resources 2641 0 R /Contents[518 0 R 4 0 R 2662 0 R 520 0 R] /Annots 2663 0 R /Parent 4371 0 R >> endobj 2665 0 obj << /Type/Page /Resources 2666 0 R /Contents[518 0 R 4 0 R 2670 0 R 520 0 R] /Parent 4371 0 R >> endobj 4371 0 obj << /Type/Pages /Count 4 /Kids[2618 0 R 2625 0 R 2640 0 R 2665 0 R] /Parent 4367 0 R >> endobj 4367 0 obj << /Type/Pages /Count 16 /Kids[4368 0 R 4369 0 R 4370 0 R 4371 0 R] /Parent 4356 0 R >> endobj 2672 0 obj << /Type/Page /Resources 2673 0 R /Contents[518 0 R 4 0 R 2675 0 R 520 0 R] /Parent 4373 0 R >> endobj 2677 0 obj << /Type/Page /Resources 2678 0 R /Contents[518 0 R 4 0 R 2682 0 R 520 0 R] /Parent 4373 0 R >> endobj 2684 0 obj << /Type/Page /Resources 2685 0 R /Contents[518 0 R 4 0 R 2692 0 R 520 0 R] /Annots 2693 0 R /Parent 4373 0 R >> endobj 2695 0 obj << /Type/Page /Resources 2696 0 R /Contents[518 0 R 4 0 R 2701 0 R 520 0 R] /Parent 4373 0 R >> endobj 4373 0 obj << /Type/Pages /Count 4 /Kids[2672 0 R 2677 0 R 2684 0 R 2695 0 R] /Parent 4372 0 R >> endobj 2703 0 obj << /Type/Page /Resources 2704 0 R /Contents[518 0 R 4 0 R 2712 0 R 520 0 R] /Annots 2713 0 R /Parent 4374 0 R >> endobj 2715 0 obj << /Type/Page /Resources 2716 0 R /Contents[518 0 R 4 0 R 2734 0 R 520 0 R] /Parent 4374 0 R >> endobj 2736 0 obj << /Type/Page /Resources 2737 0 R /Contents[518 0 R 4 0 R 2739 0 R 520 0 R] /Parent 4374 0 R >> endobj 2741 0 obj << /Type/Page /Resources 2742 0 R /Contents[518 0 R 4 0 R 2748 0 R 520 0 R] /Parent 4374 0 R >> endobj 4374 0 obj << /Type/Pages /Count 4 /Kids[2703 0 R 2715 0 R 2736 0 R 2741 0 R] /Parent 4372 0 R >> endobj 2750 0 obj << /Type/Page /Resources 2751 0 R /Contents[518 0 R 4 0 R 2755 0 R 520 0 R] /Parent 4375 0 R >> endobj 2757 0 obj << /Type/Page /Resources 2758 0 R /Contents[518 0 R 4 0 R 2766 0 R 520 0 R] /Parent 4375 0 R >> endobj 2768 0 obj << /Type/Page /Resources 2769 0 R /Contents[518 0 R 4 0 R 2773 0 R 520 0 R] /Parent 4375 0 R >> endobj 2775 0 obj << /Type/Page /Resources 2776 0 R /Contents[518 0 R 4 0 R 2788 0 R 520 0 R] /Parent 4375 0 R >> endobj 4375 0 obj << /Type/Pages /Count 4 /Kids[2750 0 R 2757 0 R 2768 0 R 2775 0 R] /Parent 4372 0 R >> endobj 2790 0 obj << /Type/Page /Resources 2791 0 R /Contents[518 0 R 4 0 R 2796 0 R 520 0 R] /Annots 2797 0 R /Parent 4376 0 R >> endobj 2799 0 obj << /Type/Page /Resources 2800 0 R /Contents[518 0 R 4 0 R 2812 0 R 520 0 R] /Parent 4376 0 R >> endobj 2814 0 obj << /Type/Page /Resources 2815 0 R /Contents[518 0 R 4 0 R 2826 0 R 520 0 R] /Annots 2827 0 R /Parent 4376 0 R >> endobj 2829 0 obj << /Type/Page /Resources 2830 0 R /Contents[518 0 R 4 0 R 2834 0 R 520 0 R] /Parent 4376 0 R >> endobj 4376 0 obj << /Type/Pages /Count 4 /Kids[2790 0 R 2799 0 R 2814 0 R 2829 0 R] /Parent 4372 0 R >> endobj 4372 0 obj << /Type/Pages /Count 16 /Kids[4373 0 R 4374 0 R 4375 0 R 4376 0 R] /Parent 4356 0 R >> endobj 4356 0 obj << /Type/Pages /Count 64 /Kids[4357 0 R 4362 0 R 4367 0 R 4372 0 R] /Parent 3 0 R >> endobj 2836 0 obj << /Type/Page /Resources 2837 0 R /Contents[518 0 R 4 0 R 2839 0 R 520 0 R] /Parent 4379 0 R >> endobj 2841 0 obj << /Type/Page /Resources 2842 0 R /Contents[518 0 R 4 0 R 2844 0 R 520 0 R] /Parent 4379 0 R >> endobj 2846 0 obj << /Type/Page /Resources 2847 0 R /Contents[518 0 R 4 0 R 2851 0 R 520 0 R] /Annots 2852 0 R /Parent 4379 0 R >> endobj 2854 0 obj << /Type/Page /Resources 2855 0 R /Contents[518 0 R 4 0 R 2865 0 R 520 0 R] /Annots 2866 0 R /Parent 4379 0 R >> endobj 4379 0 obj << /Type/Pages /Count 4 /Kids[2836 0 R 2841 0 R 2846 0 R 2854 0 R] /Parent 4378 0 R >> endobj 2868 0 obj << /Type/Page /Resources 2869 0 R /Contents[518 0 R 4 0 R 2881 0 R 520 0 R] /Annots 2882 0 R /Parent 4380 0 R >> endobj 2884 0 obj << /Type/Page /Resources 2885 0 R /Contents[518 0 R 4 0 R 2896 0 R 520 0 R] /Parent 4380 0 R >> endobj 2898 0 obj << /Type/Page /Resources 2899 0 R /Contents[518 0 R 4 0 R 2910 0 R 520 0 R] /Annots 2911 0 R /Parent 4380 0 R >> endobj 2913 0 obj << /Type/Page /Resources 2914 0 R /Contents[518 0 R 4 0 R 2922 0 R 520 0 R] /Annots 2923 0 R /Parent 4380 0 R >> endobj 4380 0 obj << /Type/Pages /Count 4 /Kids[2868 0 R 2884 0 R 2898 0 R 2913 0 R] /Parent 4378 0 R >> endobj 2925 0 obj << /Type/Page /Resources 2926 0 R /Contents[518 0 R 4 0 R 2947 0 R 520 0 R] /Parent 4381 0 R >> endobj 2949 0 obj << /Type/Page /Resources 2950 0 R /Contents[518 0 R 4 0 R 2972 0 R 520 0 R] /Annots 2973 0 R /Parent 4381 0 R >> endobj 2975 0 obj << /Type/Page /Resources 2976 0 R /Contents[518 0 R 4 0 R 3006 0 R 520 0 R] /Parent 4381 0 R >> endobj 3008 0 obj << /Type/Page /Resources 3009 0 R /Contents[518 0 R 4 0 R 3031 0 R 520 0 R] /Parent 4381 0 R >> endobj 4381 0 obj << /Type/Pages /Count 4 /Kids[2925 0 R 2949 0 R 2975 0 R 3008 0 R] /Parent 4378 0 R >> endobj 3033 0 obj << /Type/Page /Resources 3034 0 R /Contents[518 0 R 4 0 R 3051 0 R 520 0 R] /Annots 3052 0 R /Parent 4382 0 R >> endobj 3054 0 obj << /Type/Page /Resources 3055 0 R /Contents[518 0 R 4 0 R 3067 0 R 520 0 R] /Parent 4382 0 R >> endobj 3069 0 obj << /Type/Page /Resources 3070 0 R /Contents[518 0 R 4 0 R 3094 0 R 520 0 R] /Annots 3095 0 R /Parent 4382 0 R >> endobj 3097 0 obj << /Type/Page /Resources 3098 0 R /Contents[518 0 R 4 0 R 3131 0 R 520 0 R] /Annots 3132 0 R /Parent 4382 0 R >> endobj 4382 0 obj << /Type/Pages /Count 4 /Kids[3033 0 R 3054 0 R 3069 0 R 3097 0 R] /Parent 4378 0 R >> endobj 4378 0 obj << /Type/Pages /Count 16 /Kids[4379 0 R 4380 0 R 4381 0 R 4382 0 R] /Parent 4377 0 R >> endobj 3134 0 obj << /Type/Page /Resources 3135 0 R /Contents[518 0 R 4 0 R 3168 0 R 520 0 R] /Parent 4384 0 R >> endobj 3170 0 obj << /Type/Page /Resources 3171 0 R /Contents[518 0 R 4 0 R 3190 0 R 520 0 R] /Annots 3191 0 R /Parent 4384 0 R >> endobj 3193 0 obj << /Type/Page /Resources 3194 0 R /Contents[518 0 R 4 0 R 3210 0 R 520 0 R] /Annots 3211 0 R /Parent 4384 0 R >> endobj 3213 0 obj << /Type/Page /Resources 3214 0 R /Contents[518 0 R 4 0 R 3222 0 R 520 0 R] /Parent 4384 0 R >> endobj 4384 0 obj << /Type/Pages /Count 4 /Kids[3134 0 R 3170 0 R 3193 0 R 3213 0 R] /Parent 4383 0 R >> endobj 3224 0 obj << /Type/Page /Resources 3225 0 R /Contents[518 0 R 4 0 R 3244 0 R 520 0 R] /Annots 3245 0 R /Parent 4385 0 R >> endobj 3247 0 obj << /Type/Page /Resources 3248 0 R /Contents[518 0 R 4 0 R 3279 0 R 520 0 R] /Parent 4385 0 R >> endobj 3281 0 obj << /Type/Page /Resources 3282 0 R /Contents[518 0 R 4 0 R 3303 0 R 520 0 R] /Parent 4385 0 R >> endobj 3305 0 obj << /Type/Page /Resources 3306 0 R /Contents[518 0 R 4 0 R 3314 0 R 520 0 R] /Annots 3315 0 R /Parent 4385 0 R >> endobj 4385 0 obj << /Type/Pages /Count 4 /Kids[3224 0 R 3247 0 R 3281 0 R 3305 0 R] /Parent 4383 0 R >> endobj 3317 0 obj << /Type/Page /Resources 3318 0 R /Contents[518 0 R 4 0 R 3341 0 R 520 0 R] /Annots 3342 0 R /Parent 4386 0 R >> endobj 3344 0 obj << /Type/Page /Resources 3345 0 R /Contents[518 0 R 4 0 R 3366 0 R 520 0 R] /Annots 3367 0 R /Parent 4386 0 R >> endobj 3369 0 obj << /Type/Page /Resources 3370 0 R /Contents[518 0 R 4 0 R 3392 0 R 520 0 R] /Annots 3393 0 R /Parent 4386 0 R >> endobj 3395 0 obj << /Type/Page /Resources 3396 0 R /Contents[518 0 R 4 0 R 3407 0 R 520 0 R] /Parent 4386 0 R >> endobj 4386 0 obj << /Type/Pages /Count 4 /Kids[3317 0 R 3344 0 R 3369 0 R 3395 0 R] /Parent 4383 0 R >> endobj 3409 0 obj << /Type/Page /Resources 3410 0 R /Contents[518 0 R 4 0 R 3412 0 R 520 0 R] /Parent 4387 0 R >> endobj 3414 0 obj << /Type/Page /Resources 3415 0 R /Contents[518 0 R 4 0 R 3422 0 R 520 0 R] /Annots 3423 0 R /Parent 4387 0 R >> endobj 3425 0 obj << /Type/Page /Resources 3426 0 R /Contents[518 0 R 4 0 R 3432 0 R 520 0 R] /Parent 4387 0 R >> endobj 3434 0 obj << /Type/Page /Resources 3435 0 R /Contents[518 0 R 4 0 R 3442 0 R 520 0 R] /Parent 4387 0 R >> endobj 4387 0 obj << /Type/Pages /Count 4 /Kids[3409 0 R 3414 0 R 3425 0 R 3434 0 R] /Parent 4383 0 R >> endobj 4383 0 obj << /Type/Pages /Count 16 /Kids[4384 0 R 4385 0 R 4386 0 R 4387 0 R] /Parent 4377 0 R >> endobj 3444 0 obj << /Type/Page /Resources 3445 0 R /Contents[518 0 R 4 0 R 3455 0 R 520 0 R] /Annots 3456 0 R /Parent 4389 0 R >> endobj 3458 0 obj << /Type/Page /Resources 3459 0 R /Contents[518 0 R 4 0 R 3465 0 R 520 0 R] /Annots 3466 0 R /Parent 4389 0 R >> endobj 3468 0 obj << /Type/Page /Resources 3469 0 R /Contents[518 0 R 4 0 R 3476 0 R 520 0 R] /Parent 4389 0 R >> endobj 3478 0 obj << /Type/Page /Resources 3479 0 R /Contents[518 0 R 4 0 R 3487 0 R 520 0 R] /Parent 4389 0 R >> endobj 4389 0 obj << /Type/Pages /Count 4 /Kids[3444 0 R 3458 0 R 3468 0 R 3478 0 R] /Parent 4388 0 R >> endobj 3489 0 obj << /Type/Page /Resources 3490 0 R /Contents[518 0 R 4 0 R 3498 0 R 520 0 R] /Parent 4390 0 R >> endobj 3500 0 obj << /Type/Page /Resources 3501 0 R /Contents[518 0 R 4 0 R 3511 0 R 520 0 R] /Parent 4390 0 R >> endobj 3513 0 obj << /Type/Page /Resources 3514 0 R /Contents[518 0 R 4 0 R 3523 0 R 520 0 R] /Parent 4390 0 R >> endobj 3525 0 obj << /Type/Page /Resources 3526 0 R /Contents[518 0 R 4 0 R 3529 0 R 520 0 R] /Parent 4390 0 R >> endobj 4390 0 obj << /Type/Pages /Count 4 /Kids[3489 0 R 3500 0 R 3513 0 R 3525 0 R] /Parent 4388 0 R >> endobj 3531 0 obj << /Type/Page /Resources 3532 0 R /Contents[518 0 R 4 0 R 3534 0 R 520 0 R] /Parent 4391 0 R >> endobj 3536 0 obj << /Type/Page /Resources 3537 0 R /Contents[518 0 R 4 0 R 3543 0 R 520 0 R] /Parent 4391 0 R >> endobj 3545 0 obj << /Type/Page /Resources 3546 0 R /Contents[518 0 R 4 0 R 3550 0 R 520 0 R] /Parent 4391 0 R >> endobj 3552 0 obj << /Type/Page /Resources 3553 0 R /Contents[518 0 R 4 0 R 3557 0 R 520 0 R] /Parent 4391 0 R >> endobj 4391 0 obj << /Type/Pages /Count 4 /Kids[3531 0 R 3536 0 R 3545 0 R 3552 0 R] /Parent 4388 0 R >> endobj 3559 0 obj << /Type/Page /Resources 3560 0 R /Contents[518 0 R 4 0 R 3564 0 R 520 0 R] /Parent 4392 0 R >> endobj 3566 0 obj << /Type/Page /Resources 3567 0 R /Contents[518 0 R 4 0 R 3572 0 R 520 0 R] /Annots 3573 0 R /Parent 4392 0 R >> endobj 3575 0 obj << /Type/Page /Resources 3576 0 R /Contents[518 0 R 4 0 R 3578 0 R 520 0 R] /Parent 4392 0 R >> endobj 3580 0 obj << /Type/Page /Resources 3581 0 R /Contents[518 0 R 4 0 R 3587 0 R 520 0 R] /Annots 3588 0 R /Parent 4392 0 R >> endobj 4392 0 obj << /Type/Pages /Count 4 /Kids[3559 0 R 3566 0 R 3575 0 R 3580 0 R] /Parent 4388 0 R >> endobj 4388 0 obj << /Type/Pages /Count 16 /Kids[4389 0 R 4390 0 R 4391 0 R 4392 0 R] /Parent 4377 0 R >> endobj 3590 0 obj << /Type/Page /Resources 3591 0 R /Contents[518 0 R 4 0 R 3600 0 R 520 0 R] /Annots 3601 0 R /Parent 4394 0 R >> endobj 3603 0 obj << /Type/Page /Resources 3604 0 R /Contents[518 0 R 4 0 R 3610 0 R 520 0 R] /Annots 3611 0 R /Parent 4394 0 R >> endobj 3613 0 obj << /Type/Page /Resources 3614 0 R /Contents[518 0 R 4 0 R 3618 0 R 520 0 R] /Annots 3619 0 R /Parent 4394 0 R >> endobj 3621 0 obj << /Type/Page /Resources 3622 0 R /Contents[518 0 R 4 0 R 3626 0 R 520 0 R] /Annots 3627 0 R /Parent 4394 0 R >> endobj 4394 0 obj << /Type/Pages /Count 4 /Kids[3590 0 R 3603 0 R 3613 0 R 3621 0 R] /Parent 4393 0 R >> endobj 3629 0 obj << /Type/Page /Resources 3630 0 R /Contents[518 0 R 4 0 R 3636 0 R 520 0 R] /Parent 4395 0 R >> endobj 3638 0 obj << /Type/Page /Resources 3639 0 R /Contents[518 0 R 4 0 R 3643 0 R 520 0 R] /Annots 3644 0 R /Parent 4395 0 R >> endobj 3646 0 obj << /Type/Page /Resources 3647 0 R /Contents[518 0 R 4 0 R 3650 0 R 520 0 R] /Parent 4395 0 R >> endobj 3652 0 obj << /Type/Page /Resources 3653 0 R /Contents[518 0 R 4 0 R 3655 0 R 520 0 R] /Parent 4395 0 R >> endobj 4395 0 obj << /Type/Pages /Count 4 /Kids[3629 0 R 3638 0 R 3646 0 R 3652 0 R] /Parent 4393 0 R >> endobj 3657 0 obj << /Type/Page /Resources 3658 0 R /Contents[518 0 R 4 0 R 3741 0 R 520 0 R] /Annots 3742 0 R /Parent 4396 0 R >> endobj 3744 0 obj << /Type/Page /Resources 3745 0 R /Contents[518 0 R 4 0 R 3837 0 R 520 0 R] /Annots 3838 0 R /Parent 4396 0 R >> endobj 3840 0 obj << /Type/Page /Resources 3841 0 R /Contents[518 0 R 4 0 R 3935 0 R 520 0 R] /Annots 3936 0 R /Parent 4396 0 R >> endobj 3938 0 obj << /Type/Page /Resources 3939 0 R /Contents[518 0 R 4 0 R 4033 0 R 520 0 R] /Annots 4034 0 R /Parent 4396 0 R >> endobj 4396 0 obj << /Type/Pages /Count 4 /Kids[3657 0 R 3744 0 R 3840 0 R 3938 0 R] /Parent 4393 0 R >> endobj 4036 0 obj << /Type/Page /Resources 4037 0 R /Contents[518 0 R 4 0 R 4130 0 R 520 0 R] /Annots 4131 0 R /Parent 4397 0 R >> endobj 4133 0 obj << /Type/Page /Resources 4134 0 R /Contents[518 0 R 4 0 R 4228 0 R 520 0 R] /Annots 4229 0 R /Parent 4397 0 R >> endobj 4231 0 obj << /Type/Page /Resources 4232 0 R /Contents[518 0 R 4 0 R 4296 0 R 520 0 R] /Annots 4297 0 R /Parent 4397 0 R >> endobj 4299 0 obj << /Type/Page /Resources 4300 0 R /Contents[518 0 R 4 0 R 4311 0 R 520 0 R] /Annots 4312 0 R /Parent 4397 0 R >> endobj 4397 0 obj << /Type/Pages /Count 4 /Kids[4036 0 R 4133 0 R 4231 0 R 4299 0 R] /Parent 4393 0 R >> endobj 4393 0 obj << /Type/Pages /Count 16 /Kids[4394 0 R 4395 0 R 4396 0 R 4397 0 R] /Parent 4377 0 R >> endobj 4377 0 obj << /Type/Pages /Count 64 /Kids[4378 0 R 4383 0 R 4388 0 R 4393 0 R] /Parent 3 0 R >> endobj 3 0 obj << /Type/Pages /Count 255 /Kids[4314 0 R 4335 0 R 4356 0 R 4377 0 R] /MediaBox[0 0 612 792] >> endobj 518 0 obj << /Length 1 >> stream endstream endobj 520 0 obj << /Length 1 >> stream endstream endobj 4 0 obj << /Length 30 >> stream 1.00028 0 0 1.00028 72 720 cm endstream endobj 501 0 obj << /Title(References) /A<< /S/GoTo /D(appendix.C) >> /Parent 11 0 R /Prev 482 0 R /First 502 0 R /Last 505 0 R /Count -4 >> endobj 505 0 obj << /Title(Author) /A<< /S/GoTo /D(section.C.4) >> /Parent 501 0 R /Prev 504 0 R >> endobj 11 0 obj << /First 12 0 R /Last 501 0 R /Count 18 >> endobj 4398 0 obj << /Limits[(Doc-Start)(Doc-Start)] /Names[(Doc-Start) 506 0 R] >> endobj 4399 0 obj << /Limits[(Item.1)(Item.1)] /Names[(Item.1) 1250 0 R] >> endobj 4400 0 obj << /Limits[(Item.10)(Item.10)] /Names[(Item.10) 2372 0 R] >> endobj 4401 0 obj << /Limits[(Item.11)(Item.12)] /Names[(Item.11) 3216 0 R(Item.12) 3217 0 R] >> endobj 4402 0 obj << /Limits[(Doc-Start)(Item.12)] /Kids[4398 0 R 4399 0 R 4400 0 R 4401 0 R] >> endobj 4403 0 obj << /Limits[(Item.13)(Item.13)] /Names[(Item.13) 3520 0 R] >> endobj 4404 0 obj << /Limits[(Item.14)(Item.14)] /Names[(Item.14) 3521 0 R] >> endobj 4405 0 obj << /Limits[(Item.15)(Item.15)] /Names[(Item.15) 3522 0 R] >> endobj 4406 0 obj << /Limits[(Item.16)(Item.17)] /Names[(Item.16) 3632 0 R(Item.17) 3633 0 R] >> endobj 4407 0 obj << /Limits[(Item.13)(Item.17)] /Kids[4403 0 R 4404 0 R 4405 0 R 4406 0 R] >> endobj 4408 0 obj << /Limits[(Item.18)(Item.18)] /Names[(Item.18) 3634 0 R] >> endobj 4409 0 obj << /Limits[(Item.19)(Item.19)] /Names[(Item.19) 3635 0 R] >> endobj 4410 0 obj << /Limits[(Item.2)(Item.2)] /Names[(Item.2) 1251 0 R] >> endobj 4411 0 obj << /Limits[(Item.3)(Item.4)] /Names[(Item.3) 1252 0 R(Item.4) 1287 0 R] >> endobj 4412 0 obj << /Limits[(Item.18)(Item.4)] /Kids[4408 0 R 4409 0 R 4410 0 R 4411 0 R] >> endobj 4413 0 obj << /Limits[(Item.5)(Item.5)] /Names[(Item.5) 1288 0 R] >> endobj 4414 0 obj << /Limits[(Item.6)(Item.6)] /Names[(Item.6) 1289 0 R] >> endobj 4415 0 obj << /Limits[(Item.7)(Item.7)] /Names[(Item.7) 1516 0 R] >> endobj 4416 0 obj << /Limits[(Item.8)(Item.9)] /Names[(Item.8) 1517 0 R(Item.9) 2366 0 R] >> endobj 4417 0 obj << /Limits[(Item.5)(Item.9)] /Kids[4413 0 R 4414 0 R 4415 0 R 4416 0 R] >> endobj 4418 0 obj << /Limits[(Doc-Start)(Item.9)] /Kids[4402 0 R 4407 0 R 4412 0 R 4417 0 R] >> endobj 4419 0 obj << /Limits[(appendix.A)(appendix.A)] /Names[(appendix.A) 3437 0 R] >> endobj 4420 0 obj << /Limits[(appendix.B)(appendix.B)] /Names[(appendix.B) 3539 0 R] >> endobj 4421 0 obj << /Limits[(appendix.C)(appendix.C)] /Names[(appendix.C) 4302 0 R] >> endobj 4422 0 obj << /Limits[(break)(chapter*.1)] /Names[(break) 2061 0 R(chapter*.1) 536 0 R] >> endobj 4423 0 obj << /Limits[(appendix.A)(chapter*.1)] /Kids[4419 0 R 4420 0 R 4421 0 R 4422 0 R] >> endobj 4424 0 obj << /Limits[(chapter.1)(chapter.1)] /Names[(chapter.1) 1123 0 R] >> endobj 4425 0 obj << /Limits[(chapter.10)(chapter.10)] /Names[(chapter.10) 2159 0 R] >> endobj 4426 0 obj << /Limits[(chapter.11)(chapter.11)] /Names[(chapter.11) 2680 0 R] >> endobj 4427 0 obj << /Limits[(chapter.12)(chapter.13)] /Names[(chapter.12) 2744 0 R(chapter.13) 2857 0 R] >> endobj 4428 0 obj << /Limits[(chapter.1)(chapter.13)] /Kids[4424 0 R 4425 0 R 4426 0 R 4427 0 R] >> endobj 4429 0 obj << /Limits[(chapter.14)(chapter.14)] /Names[(chapter.14) 3308 0 R] >> endobj 4430 0 obj << /Limits[(chapter.15)(chapter.15)] /Names[(chapter.15) 3417 0 R] >> endobj 4431 0 obj << /Limits[(chapter.2)(chapter.2)] /Names[(chapter.2) 1156 0 R] >> endobj 4432 0 obj << /Limits[(chapter.3)(chapter.4)] /Names[(chapter.3) 1244 0 R(chapter.4) 1363 0 R] >> endobj 4433 0 obj << /Limits[(chapter.14)(chapter.4)] /Kids[4429 0 R 4430 0 R 4431 0 R 4432 0 R] >> endobj 4434 0 obj << /Limits[(chapter.5)(chapter.5)] /Names[(chapter.5) 1509 0 R] >> endobj 4435 0 obj << /Limits[(chapter.6)(chapter.7)] /Names[(chapter.6) 1549 0 R(chapter.7) 1617 0 R] >> endobj 4436 0 obj << /Limits[(chapter.8)(chapter.8)] /Names[(chapter.8) 1681 0 R] >> endobj 4437 0 obj << /Limits[(chapter.9)(fun:CGeneratedFiles)] /Names[(chapter.9) 1799 0 R(fun:CGeneratedFiles) 3029 0 R] >> endobj 4438 0 obj << /Limits[(chapter.5)(fun:CGeneratedFiles)] /Kids[4434 0 R 4435 0 R 4436 0 R 4437 0 R] >> endobj 4439 0 obj << /Limits[(appendix.A)(fun:CGeneratedFiles)] /Kids[4423 0 R 4428 0 R 4433 0 R 4438 0 R] >> endobj 4440 0 obj << /Limits[(fun:CProgram)(fun:CProgram)] /Names[(fun:CProgram) 3062 0 R] >> endobj 4441 0 obj << /Limits[(fun:CProgramCopy)(fun:CProgramCopy)] /Names[(fun:CProgramCopy) 3064 0 R] >> endobj 4442 0 obj << /Limits[(fun:CProgramInstall)(fun:CProgramInstall)] /Names[(fun:CProgramInstall) 3066 0 R] >> endobj 4443 0 obj << /Limits[(fun:CXXProgram)(fun:CXXProgramInstall)] /Names[(fun:CXXProgram) 3073 0 R(fun:CXXProgramInstall) 3074 0 R] >> endobj 4444 0 obj << /Limits[(fun:CProgram)(fun:CXXProgramInstall)] /Kids[4440 0 R 4441 0 R 4442 0 R 4443 0 R] >> endobj 4445 0 obj << /Limits[(fun:CheckCHeader)(fun:CheckCHeader)] /Names[(fun:CheckCHeader) 3348 0 R] >> endobj 4446 0 obj << /Limits[(fun:CheckCLib)(fun:CheckCLib)] /Names[(fun:CheckCLib) 3354 0 R] >> endobj 4447 0 obj << /Limits[(fun:CheckProg)(fun:CheckProg)] /Names[(fun:CheckProg) 3360 0 R] >> endobj 4448 0 obj << /Limits[(fun:ConfMsgChecking)(fun:ConfMsgError)] /Names[(fun:ConfMsgChecking) 3312 0 R(fun:ConfMsgError) 3322 0 R] >> endobj 4449 0 obj << /Limits[(fun:CheckCHeader)(fun:ConfMsgError)] /Kids[4445 0 R 4446 0 R 4447 0 R 4448 0 R] >> endobj 4450 0 obj << /Limits[(fun:ConfMsgFound)(fun:ConfMsgFound)] /Names[(fun:ConfMsgFound) 3325 0 R] >> endobj 4451 0 obj << /Limits[(fun:ConfMsgResult)(fun:ConfMsgResult)] /Names[(fun:ConfMsgResult) 3313 0 R] >> endobj 4452 0 obj << /Limits[(fun:ConfMsgWarn)(fun:ConfMsgWarn)] /Names[(fun:ConfMsgWarn) 3321 0 R] >> endobj 4453 0 obj << /Limits[(fun:ConfMsgYesNo)(fun:DefineCommandVars)] /Names[(fun:ConfMsgYesNo) 3324 0 R(fun:DefineCommandVars) 2890 0 R] >> endobj 4454 0 obj << /Limits[(fun:ConfMsgFound)(fun:DefineCommandVars)] /Kids[4450 0 R 4451 0 R 4452 0 R 4453 0 R] >> endobj 4455 0 obj << /Limits[(fun:DynamicCLibrary)(fun:DynamicCLibrary)] /Names[(fun:DynamicCLibrary) 3039 0 R] >> endobj 4456 0 obj << /Limits[(fun:DynamicCLibraryCopy)(fun:DynamicCLibraryInstall)] /Names[(fun:DynamicCLibraryCopy) 3047 0 R(fun:DynamicCLibraryInstall) 3050 0 R] >> endobj 4457 0 obj << /Limits[(fun:DynamicCXXLibrary)(fun:DynamicCXXLibrary)] /Names[(fun:DynamicCXXLibrary) 3079 0 R] >> endobj 4458 0 obj << /Limits[(fun:DynamicCXXLibraryCopy)(fun:DynamicCXXLibraryInstall)] /Names[(fun:DynamicCXXLibraryCopy) 3080 0 R(fun:DynamicCXXLibraryInstall) 3081 0 R] >> endobj 4459 0 obj << /Limits[(fun:DynamicCLibrary)(fun:DynamicCXXLibraryInstall)] /Kids[4455 0 R 4456 0 R 4457 0 R 4458 0 R] >> endobj 4460 0 obj << /Limits[(fun:CProgram)(fun:DynamicCXXLibraryInstall)] /Kids[4444 0 R 4449 0 R 4454 0 R 4459 0 R] >> endobj 4461 0 obj << /Limits[(fun:LaTeXDocument)(fun:LaTeXDocument)] /Names[(fun:LaTeXDocument) 3289 0 R] >> endobj 4462 0 obj << /Limits[(fun:LaTeXDocumentCopy)(fun:LaTeXDocumentCopy)] /Names[(fun:LaTeXDocumentCopy) 3300 0 R] >> endobj 4463 0 obj << /Limits[(fun:LaTeXDocumentInstall)(fun:LaTeXDocumentInstall)] /Names[(fun:LaTeXDocumentInstall) 3302 0 R] >> endobj 4464 0 obj << /Limits[(fun:LocalCGeneratedFiles)(fun:LocalOCamlGeneratedFiles)] /Names[(fun:LocalCGeneratedFiles) 3030 0 R(fun:LocalOCamlGeneratedFiles) 3189 0 R] >> endobj 4465 0 obj << /Limits[(fun:LaTeXDocument)(fun:LocalOCamlGeneratedFiles)] /Kids[4461 0 R 4462 0 R 4463 0 R 4464 0 R] >> endobj 4466 0 obj << /Limits[(fun:LocalTeXGeneratedFiles)(fun:LocalTeXGeneratedFiles)] /Names[(fun:LocalTeXGeneratedFiles) 3298 0 R] >> endobj 4467 0 obj << /Limits[(fun:OCamlGeneratedFiles)(fun:OCamlGeneratedFiles)] /Names[(fun:OCamlGeneratedFiles) 3188 0 R] >> endobj 4468 0 obj << /Limits[(fun:OCamlLibrary)(fun:OCamlLibrary)] /Names[(fun:OCamlLibrary) 3219 0 R] >> endobj 4469 0 obj << /Limits[(fun:OCamlLibraryCopy)(fun:OCamlLibraryInstall)] /Names[(fun:OCamlLibraryCopy) 3228 0 R(fun:OCamlLibraryInstall) 3230 0 R] >> endobj 4470 0 obj << /Limits[(fun:LocalTeXGeneratedFiles)(fun:OCamlLibraryInstall)] /Kids[4466 0 R 4467 0 R 4468 0 R 4469 0 R] >> endobj 4471 0 obj << /Limits[(fun:OCamlPackage)(fun:OCamlPackage)] /Names[(fun:OCamlPackage) 3221 0 R] >> endobj 4472 0 obj << /Limits[(fun:OCamlProgram)(fun:OCamlProgram)] /Names[(fun:OCamlProgram) 3232 0 R] >> endobj 4473 0 obj << /Limits[(fun:OCamlProgramCopy)(fun:OCamlProgramCopy)] /Names[(fun:OCamlProgramCopy) 3240 0 R] >> endobj 4474 0 obj << /Limits[(fun:OCamlProgramInstall)(fun:OMakeFlags)] /Names[(fun:OCamlProgramInstall) 3243 0 R(fun:OMakeFlags) 2878 0 R] >> endobj 4475 0 obj << /Limits[(fun:OCamlPackage)(fun:OMakeFlags)] /Kids[4471 0 R 4472 0 R 4473 0 R 4474 0 R] >> endobj 4476 0 obj << /Limits[(fun:OMakeVersion)(fun:OMakeVersion)] /Names[(fun:OMakeVersion) 2880 0 R] >> endobj 4477 0 obj << /Limits[(fun:RunCProg)(fun:StaticCLibrary)] /Names[(fun:RunCProg) 3339 0 R(fun:StaticCLibrary) 3038 0 R] >> endobj 4478 0 obj << /Limits[(fun:StaticCLibraryCopy)(fun:StaticCLibraryCopy)] /Names[(fun:StaticCLibraryCopy) 3046 0 R] >> endobj 4479 0 obj << /Limits[(fun:StaticCLibraryInstall)(fun:StaticCObject)] /Names[(fun:StaticCLibraryInstall) 3049 0 R(fun:StaticCObject) 3058 0 R] >> endobj 4480 0 obj << /Limits[(fun:OMakeVersion)(fun:StaticCObject)] /Kids[4476 0 R 4477 0 R 4478 0 R 4479 0 R] >> endobj 4481 0 obj << /Limits[(fun:LaTeXDocument)(fun:StaticCObject)] /Kids[4465 0 R 4470 0 R 4475 0 R 4480 0 R] >> endobj 4482 0 obj << /Limits[(Doc-Start)(fun:StaticCObject)] /Kids[4418 0 R 4439 0 R 4460 0 R 4481 0 R] >> endobj 4483 0 obj << /Limits[(fun:StaticCObjectCopy)(fun:StaticCObjectCopy)] /Names[(fun:StaticCObjectCopy) 3059 0 R] >> endobj 4484 0 obj << /Limits[(fun:StaticCObjectInstall)(fun:StaticCObjectInstall)] /Names[(fun:StaticCObjectInstall) 3060 0 R] >> endobj 4485 0 obj << /Limits[(fun:StaticCXXLibrary)(fun:StaticCXXLibrary)] /Names[(fun:StaticCXXLibrary) 3076 0 R] >> endobj 4486 0 obj << /Limits[(fun:StaticCXXLibraryCopy)(fun:StaticCXXLibraryInstall)] /Names[(fun:StaticCXXLibraryCopy) 3077 0 R(fun:StaticCXXLibraryInstall) 3078 0 R] >> endobj 4487 0 obj << /Limits[(fun:StaticCObjectCopy)(fun:StaticCXXLibraryInstall)] /Kids[4483 0 R 4484 0 R 4485 0 R 4486 0 R] >> endobj 4488 0 obj << /Limits[(fun:TeXGeneratedFiles)(fun:TeXGeneratedFiles)] /Names[(fun:TeXGeneratedFiles) 3297 0 R] >> endobj 4489 0 obj << /Limits[(fun:TryCompileC)(fun:TryCompileC)] /Names[(fun:TryCompileC) 3329 0 R] >> endobj 4490 0 obj << /Limits[(fun:TryLinkC)(fun:TryLinkC)] /Names[(fun:TryLinkC) 3330 0 R] >> endobj 4491 0 obj << /Limits[(fun:TryRunC)(fun:VerboseCheckCHeader)] /Names[(fun:TryRunC) 3331 0 R(fun:VerboseCheckCHeader) 3349 0 R] >> endobj 4492 0 obj << /Limits[(fun:TeXGeneratedFiles)(fun:VerboseCheckCHeader)] /Kids[4488 0 R 4489 0 R 4490 0 R 4491 0 R] >> endobj 4493 0 obj << /Limits[(fun:VerboseCheckCLib)(fun:VerboseCheckCLib)] /Names[(fun:VerboseCheckCLib) 3355 0 R] >> endobj 4494 0 obj << /Limits[(fun:absname)(fun:absname)] /Names[(fun:absname) 2189 0 R] >> endobj 4495 0 obj << /Limits[(fun:accept)(fun:accept)] /Names[(fun:accept) 2484 0 R] >> endobj 4496 0 obj << /Limits[(fun:add)(fun:add-project-directories)] /Names[(fun:add) 2080 0 R(fun:add-project-directories) 2348 0 R] >> endobj 4497 0 obj << /Limits[(fun:VerboseCheckCLib)(fun:add-project-directories)] /Kids[4493 0 R 4494 0 R 4495 0 R 4496 0 R] >> endobj 4498 0 obj << /Limits[(fun:add-wrapper)(fun:add-wrapper)] /Names[(fun:add-wrapper) 2006 0 R] >> endobj 4499 0 obj << /Limits[(fun:addprefix)(fun:addsuffix)] /Names[(fun:addprefix) 1997 0 R(fun:addsuffix) 1980 0 R] >> endobj 4500 0 obj << /Limits[(fun:addsuffixes)(fun:addsuffixes)] /Names[(fun:addsuffixes) 1984 0 R] >> endobj 4501 0 obj << /Limits[(fun:and)(fun:apply)] /Names[(fun:and) 1849 0 R(fun:apply) 2118 0 R] >> endobj 4502 0 obj << /Limits[(fun:add-wrapper)(fun:apply)] /Kids[4498 0 R 4499 0 R 4500 0 R 4501 0 R] >> endobj 4503 0 obj << /Limits[(fun:StaticCObjectCopy)(fun:apply)] /Kids[4487 0 R 4492 0 R 4497 0 R 4502 0 R] >> endobj 4504 0 obj << /Limits[(fun:applya)(fun:applya)] /Names[(fun:applya) 2120 0 R] >> endobj 4505 0 obj << /Limits[(fun:array)(fun:array)] /Names[(fun:array) 1913 0 R] >> endobj 4506 0 obj << /Limits[(fun:asr)(fun:asr)] /Names[(fun:asr) 2091 0 R] >> endobj 4507 0 obj << /Limits[(fun:awk)(fun:basename)] /Names[(fun:awk) 2553 0 R(fun:basename) 2174 0 R] >> endobj 4508 0 obj << /Limits[(fun:applya)(fun:basename)] /Kids[4504 0 R 4505 0 R 4506 0 R 4507 0 R] >> endobj 4509 0 obj << /Limits[(fun:bg)(fun:bg)] /Names[(fun:bg) 2722 0 R] >> endobj 4510 0 obj << /Limits[(fun:bind)(fun:bind)] /Names[(fun:bind) 2480 0 R] >> endobj 4511 0 obj << /Limits[(fun:break)(fun:break)] /Names[(fun:break) 2063 0 R] >> endobj 4512 0 obj << /Limits[(fun:build)(fun:c-escaped)] /Names[(fun:build) 2929 0 R(fun:c-escaped) 1958 0 R] >> endobj 4513 0 obj << /Limits[(fun:bg)(fun:c-escaped)] /Kids[4509 0 R 4510 0 R 4511 0 R 4512 0 R] >> endobj 4514 0 obj << /Limits[(fun:capitalize)(fun:capitalize)] /Names[(fun:capitalize) 2032 0 R] >> endobj 4515 0 obj << /Limits[(fun:cat)(fun:cat)] /Names[(fun:cat) 2537 0 R] >> endobj 4516 0 obj << /Limits[(fun:cd)(fun:cd)] /Names[(fun:cd) 2711 0 R] >> endobj 4517 0 obj << /Limits[(fun:channel-name)(fun:chmod)] /Names[(fun:channel-name) 2421 0 R(fun:chmod) 2327 0 R] >> endobj 4518 0 obj << /Limits[(fun:capitalize)(fun:chmod)] /Kids[4514 0 R 4515 0 R 4516 0 R 4517 0 R] >> endobj 4519 0 obj << /Limits[(fun:chown)(fun:chown)] /Names[(fun:chown) 2334 0 R] >> endobj 4520 0 obj << /Limits[(fun:close)(fun:cmp-versions)] /Names[(fun:close) 2401 0 R(fun:cmp-versions) 2888 0 R] >> endobj 4521 0 obj << /Limits[(fun:compare)(fun:compare)] /Names[(fun:compare) 2148 0 R] >> endobj 4522 0 obj << /Limits[(fun:concat)(fun:connect)] /Names[(fun:concat) 1922 0 R(fun:connect) 2486 0 R] >> endobj 4523 0 obj << /Limits[(fun:chown)(fun:connect)] /Kids[4519 0 R 4520 0 R 4521 0 R 4522 0 R] >> endobj 4524 0 obj << /Limits[(fun:applya)(fun:connect)] /Kids[4508 0 R 4513 0 R 4518 0 R 4523 0 R] >> endobj 4525 0 obj << /Limits[(fun:create-lazy-map)(fun:create-lazy-map)] /Names[(fun:create-lazy-map) 2123 0 R] >> endobj 4526 0 obj << /Limits[(fun:create-map)(fun:create-map)] /Names[(fun:create-map) 2122 0 R] >> endobj 4527 0 obj << /Limits[(fun:decode-uri)(fun:decode-uri)] /Names[(fun:decode-uri) 1966 0 R] >> endobj 4528 0 obj << /Limits[(fun:defined)(fun:defined-env)] /Names[(fun:defined) 1880 0 R(fun:defined-env) 1888 0 R] >> endobj 4529 0 obj << /Limits[(fun:create-lazy-map)(fun:defined-env)] /Kids[4525 0 R 4526 0 R 4527 0 R 4528 0 R] >> endobj 4530 0 obj << /Limits[(fun:dependencies)(fun:dependencies)] /Names[(fun:dependencies) 2893 0 R] >> endobj 4531 0 obj << /Limits[(fun:dependencies-all)(fun:dependencies-all)] /Names[(fun:dependencies-all) 2894 0 R] >> endobj 4532 0 obj << /Limits[(fun:dependencies-proper)(fun:dependencies-proper)] /Names[(fun:dependencies-proper) 2895 0 R] >> endobj 4533 0 obj << /Limits[(fun:digest)(fun:digest-in-path)] /Names[(fun:digest) 2214 0 R(fun:digest-in-path) 2220 0 R] >> endobj 4534 0 obj << /Limits[(fun:dependencies)(fun:digest-in-path)] /Kids[4530 0 R 4531 0 R 4532 0 R 4533 0 R] >> endobj 4535 0 obj << /Limits[(fun:digest-in-path-optional)(fun:digest-in-path-optional)] /Names[(fun:digest-in-path-optional) 2221 0 R] >> endobj 4536 0 obj << /Limits[(fun:digest-optional)(fun:digest-optional)] /Names[(fun:digest-optional) 2215 0 R] >> endobj 4537 0 obj << /Limits[(fun:dir)(fun:dir)] /Names[(fun:dir) 2163 0 R] >> endobj 4538 0 obj << /Limits[(fun:dirname)(fun:dirof)] /Names[(fun:dirname) 2181 0 R(fun:dirof) 2185 0 R] >> endobj 4539 0 obj << /Limits[(fun:digest-in-path-optional)(fun:dirof)] /Kids[4535 0 R 4536 0 R 4537 0 R 4538 0 R] >> endobj 4540 0 obj << /Limits[(fun:div)(fun:div)] /Names[(fun:div) 2083 0 R] >> endobj 4541 0 obj << /Limits[(fun:dup)(fun:dup2)] /Names[(fun:dup) 2423 0 R(fun:dup2) 2430 0 R] >> endobj 4542 0 obj << /Limits[(fun:echo)(fun:echo)] /Names[(fun:echo) 2709 0 R] >> endobj 4543 0 obj << /Limits[(fun:encode-uri)(fun:eprint)] /Names[(fun:encode-uri) 1967 0 R(fun:eprint) 2501 0 R] >> endobj 4544 0 obj << /Limits[(fun:div)(fun:eprint)] /Kids[4540 0 R 4541 0 R 4542 0 R 4543 0 R] >> endobj 4545 0 obj << /Limits[(fun:create-lazy-map)(fun:eprint)] /Kids[4529 0 R 4534 0 R 4539 0 R 4544 0 R] >> endobj 4546 0 obj << /Limits[(fun:eprintln)(fun:eprintln)] /Names[(fun:eprintln) 2504 0 R] >> endobj 4547 0 obj << /Limits[(fun:eprintv)(fun:eprintv)] /Names[(fun:eprintv) 2513 0 R] >> endobj 4548 0 obj << /Limits[(fun:eprintvln)(fun:eprintvln)] /Names[(fun:eprintvln) 2516 0 R] >> endobj 4549 0 obj << /Limits[(fun:eq)(fun:equal)] /Names[(fun:eq) 2102 0 R(fun:equal) 1847 0 R] >> endobj 4550 0 obj << /Limits[(fun:eprintln)(fun:equal)] /Kids[4546 0 R 4547 0 R 4548 0 R 4549 0 R] >> endobj 4551 0 obj << /Limits[(fun:exists-in-path)(fun:exists-in-path)] /Names[(fun:exists-in-path) 2212 0 R] >> endobj 4552 0 obj << /Limits[(fun:exit)(fun:exit)] /Names[(fun:exit) 1878 0 R] >> endobj 4553 0 obj << /Limits[(fun:export)(fun:export)] /Names[(fun:export) 2049 0 R] >> endobj 4554 0 obj << /Limits[(fun:fg)(fun:fgets)] /Names[(fun:fg) 2724 0 R(fun:fgets) 2497 0 R] >> endobj 4555 0 obj << /Limits[(fun:exists-in-path)(fun:fgets)] /Kids[4551 0 R 4552 0 R 4553 0 R 4554 0 R] >> endobj 4556 0 obj << /Limits[(fun:file)(fun:file)] /Names[(fun:file) 2162 0 R] >> endobj 4557 0 obj << /Limits[(fun:file-check-sort)(fun:file-check-sort)] /Names[(fun:file-check-sort) 2267 0 R] >> endobj 4558 0 obj << /Limits[(fun:file-exists)(fun:file-exists)] /Names[(fun:file-exists) 2229 0 R] >> endobj 4559 0 obj << /Limits[(fun:file-sort)(fun:filter)] /Names[(fun:file-sort) 2258 0 R(fun:filter) 2023 0 R] >> endobj 4560 0 obj << /Limits[(fun:file)(fun:filter)] /Kids[4556 0 R 4557 0 R 4558 0 R 4559 0 R] >> endobj 4561 0 obj << /Limits[(fun:filter-exists)(fun:filter-exists)] /Names[(fun:filter-exists) 2235 0 R] >> endobj 4562 0 obj << /Limits[(fun:filter-out)(fun:filter-proper-targets)] /Names[(fun:filter-out) 2025 0 R(fun:filter-proper-targets) 2237 0 R] >> endobj 4563 0 obj << /Limits[(fun:filter-targets)(fun:filter-targets)] /Names[(fun:filter-targets) 2236 0 R] >> endobj 4564 0 obj << /Limits[(fun:find)(fun:find-build-targets)] /Names[(fun:find) 2365 0 R(fun:find-build-targets) 2907 0 R] >> endobj 4565 0 obj << /Limits[(fun:filter-exists)(fun:find-build-targets)] /Kids[4561 0 R 4562 0 R 4563 0 R 4564 0 R] >> endobj 4566 0 obj << /Limits[(fun:eprintln)(fun:find-build-targets)] /Kids[4550 0 R 4555 0 R 4560 0 R 4565 0 R] >> endobj 4567 0 obj << /Limits[(fun:StaticCObjectCopy)(fun:find-build-targets)] /Kids[4503 0 R 4524 0 R 4545 0 R 4566 0 R] >> endobj 4568 0 obj << /Limits[(fun:find-in-path)(fun:find-in-path)] /Names[(fun:find-in-path) 2217 0 R] >> endobj 4569 0 obj << /Limits[(fun:find-in-path-optional)(fun:find-in-path-optional)] /Names[(fun:find-in-path-optional) 2218 0 R] >> endobj 4570 0 obj << /Limits[(fun:find-ocaml-targets-in-path-optional)(fun:find-ocaml-targets-in-path-optional)] /Names[(fun:find-ocaml-targets-in-path-optional) 2255 0 R] >> endobj 4571 0 obj << /Limits[(fun:find-targets-in-path)(fun:find-targets-in-path-optional)] /Names[(fun:find-targets-in-path) 2246 0 R(fun:find-targets-in-path-optional) 2247 0 R] >> endobj 4572 0 obj << /Limits[(fun:find-in-path)(fun:find-targets-in-path-optional)] /Kids[4568 0 R 4569 0 R 4570 0 R 4571 0 R] >> endobj 4573 0 obj << /Limits[(fun:float)(fun:float)] /Names[(fun:float) 2077 0 R] >> endobj 4574 0 obj << /Limits[(fun:flush)(fun:flush)] /Names[(fun:flush) 2419 0 R] >> endobj 4575 0 obj << /Limits[(fun:fopen)(fun:fopen)] /Names[(fun:fopen) 2394 0 R] >> endobj 4576 0 obj << /Limits[(fun:foreach)(fun:fprint)] /Names[(fun:foreach) 2133 0 R(fun:fprint) 2499 0 R] >> endobj 4577 0 obj << /Limits[(fun:float)(fun:fprint)] /Kids[4573 0 R 4574 0 R 4575 0 R 4576 0 R] >> endobj 4578 0 obj << /Limits[(fun:fprintln)(fun:fprintln)] /Names[(fun:fprintln) 2502 0 R] >> endobj 4579 0 obj << /Limits[(fun:fprintv)(fun:fprintv)] /Names[(fun:fprintv) 2511 0 R] >> endobj 4580 0 obj << /Limits[(fun:fprintvln)(fun:fprintvln)] /Names[(fun:fprintvln) 2514 0 R] >> endobj 4581 0 obj << /Limits[(fun:fsubst)(fun:fullname)] /Names[(fun:fsubst) 2567 0 R(fun:fullname) 2187 0 R] >> endobj 4582 0 obj << /Limits[(fun:fprintln)(fun:fullname)] /Kids[4578 0 R 4579 0 R 4580 0 R 4581 0 R] >> endobj 4583 0 obj << /Limits[(fun:fun)(fun:fun)] /Names[(fun:fun) 2111 0 R] >> endobj 4584 0 obj << /Limits[(fun:ge)(fun:get-registry)] /Names[(fun:ge) 2103 0 R(fun:get-registry) 1901 0 R] >> endobj 4585 0 obj << /Limits[(fun:getchar)(fun:getchar)] /Names[(fun:getchar) 2493 0 R] >> endobj 4586 0 obj << /Limits[(fun:getenv)(fun:getgrgid)] /Names[(fun:getenv) 1890 0 R(fun:getgrgid) 2637 0 R] >> endobj 4587 0 obj << /Limits[(fun:fun)(fun:getgrgid)] /Kids[4583 0 R 4584 0 R 4585 0 R 4586 0 R] >> endobj 4588 0 obj << /Limits[(fun:find-in-path)(fun:getgrgid)] /Kids[4572 0 R 4577 0 R 4582 0 R 4587 0 R] >> endobj 4589 0 obj << /Limits[(fun:getgrnam)(fun:getgrnam)] /Names[(fun:getgrnam) 2636 0 R] >> endobj 4590 0 obj << /Limits[(fun:gethostbyname)(fun:gethostbyname)] /Names[(fun:gethostbyname) 2458 0 R] >> endobj 4591 0 obj << /Limits[(fun:getprotobyname)(fun:getprotobyname)] /Names[(fun:getprotobyname) 2462 0 R] >> endobj 4592 0 obj << /Limits[(fun:getpwents)(fun:getpwnam)] /Names[(fun:getpwents) 2632 0 R(fun:getpwnam) 2629 0 R] >> endobj 4593 0 obj << /Limits[(fun:getgrnam)(fun:getpwnam)] /Kids[4589 0 R 4590 0 R 4591 0 R 4592 0 R] >> endobj 4594 0 obj << /Limits[(fun:getpwuid)(fun:getpwuid)] /Names[(fun:getpwuid) 2630 0 R] >> endobj 4595 0 obj << /Limits[(fun:gets)(fun:gets)] /Names[(fun:gets) 2495 0 R] >> endobj 4596 0 obj << /Limits[(fun:getservbyname)(fun:getservbyname)] /Names[(fun:getservbyname) 2471 0 R] >> endobj 4597 0 obj << /Limits[(fun:gettimeofday)(fun:getvar)] /Names[(fun:gettimeofday) 2669 0 R(fun:getvar) 1908 0 R] >> endobj 4598 0 obj << /Limits[(fun:getpwuid)(fun:getvar)] /Kids[4594 0 R 4595 0 R 4596 0 R 4597 0 R] >> endobj 4599 0 obj << /Limits[(fun:glob)(fun:glob)] /Names[(fun:glob) 2283 0 R] >> endobj 4600 0 obj << /Limits[(fun:grep)(fun:grep)] /Names[(fun:grep) 2539 0 R] >> endobj 4601 0 obj << /Limits[(fun:gt)(fun:gt)] /Names[(fun:gt) 2104 0 R] >> endobj 4602 0 obj << /Limits[(fun:history)(fun:homename)] /Names[(fun:history) 2733 0 R(fun:homename) 2196 0 R] >> endobj 4603 0 obj << /Limits[(fun:glob)(fun:homename)] /Kids[4599 0 R 4600 0 R 4601 0 R 4602 0 R] >> endobj 4604 0 obj << /Limits[(fun:html-escaped)(fun:html-escaped)] /Names[(fun:html-escaped) 1956 0 R] >> endobj 4605 0 obj << /Limits[(fun:html-pre-escaped)(fun:html-string)] /Names[(fun:html-pre-escaped) 1957 0 R(fun:html-string) 1978 0 R] >> endobj 4606 0 obj << /Limits[(fun:id-escaped)(fun:id-escaped)] /Names[(fun:id-escaped) 1959 0 R] >> endobj 4607 0 obj << /Limits[(fun:if)(fun:in)] /Names[(fun:if) 1858 0 R(fun:in) 2172 0 R] >> endobj 4608 0 obj << /Limits[(fun:html-escaped)(fun:in)] /Kids[4604 0 R 4605 0 R 4606 0 R 4607 0 R] >> endobj 4609 0 obj << /Limits[(fun:getgrnam)(fun:in)] /Kids[4593 0 R 4598 0 R 4603 0 R 4608 0 R] >> endobj 4610 0 obj << /Limits[(fun:input-line)(fun:input-line)] /Names[(fun:input-line) 2404 0 R] >> endobj 4611 0 obj << /Limits[(fun:int)(fun:int)] /Names[(fun:int) 2075 0 R] >> endobj 4612 0 obj << /Limits[(fun:intersection)(fun:intersection)] /Names[(fun:intersection) 2012 0 R] >> endobj 4613 0 obj << /Limits[(fun:intersects)(fun:jobs)] /Names[(fun:intersects) 2019 0 R(fun:jobs) 2720 0 R] >> endobj 4614 0 obj << /Limits[(fun:input-line)(fun:jobs)] /Kids[4610 0 R 4611 0 R 4612 0 R 4613 0 R] >> endobj 4615 0 obj << /Limits[(fun:join)(fun:join)] /Names[(fun:join) 1948 0 R] >> endobj 4616 0 obj << /Limits[(fun:kill)(fun:kill)] /Names[(fun:kill) 2730 0 R] >> endobj 4617 0 obj << /Limits[(fun:land)(fun:land)] /Names[(fun:land) 2086 0 R] >> endobj 4618 0 obj << /Limits[(fun:le)(fun:length)] /Names[(fun:le) 2101 0 R(fun:length) 1924 0 R] >> endobj 4619 0 obj << /Limits[(fun:join)(fun:length)] /Kids[4615 0 R 4616 0 R 4617 0 R 4618 0 R] >> endobj 4620 0 obj << /Limits[(fun:lex)(fun:lex)] /Names[(fun:lex) 2569 0 R] >> endobj 4621 0 obj << /Limits[(fun:lex-search)(fun:lex-search)] /Names[(fun:lex-search) 2577 0 R] >> endobj 4622 0 obj << /Limits[(fun:link)(fun:link)] /Names[(fun:link) 2321 0 R] >> endobj 4623 0 obj << /Limits[(fun:listen)(fun:lnot)] /Names[(fun:listen) 2482 0 R(fun:lnot) 2085 0 R] >> endobj 4624 0 obj << /Limits[(fun:lex)(fun:lnot)] /Kids[4620 0 R 4621 0 R 4622 0 R 4623 0 R] >> endobj 4625 0 obj << /Limits[(fun:lockf)(fun:lockf)] /Names[(fun:lockf) 2447 0 R] >> endobj 4626 0 obj << /Limits[(fun:lor)(fun:lowercase)] /Names[(fun:lor) 2087 0 R(fun:lowercase) 2038 0 R] >> endobj 4627 0 obj << /Limits[(fun:ls)(fun:ls)] /Names[(fun:ls) 2290 0 R] >> endobj 4628 0 obj << /Limits[(fun:lseek)(fun:lsl)] /Names[(fun:lseek) 2408 0 R(fun:lsl) 2089 0 R] >> endobj 4629 0 obj << /Limits[(fun:lockf)(fun:lsl)] /Kids[4625 0 R 4626 0 R 4627 0 R 4628 0 R] >> endobj 4630 0 obj << /Limits[(fun:input-line)(fun:lsl)] /Kids[4614 0 R 4619 0 R 4624 0 R 4629 0 R] >> endobj 4631 0 obj << /Limits[(fun:lsr)(fun:lsr)] /Names[(fun:lsr) 2090 0 R] >> endobj 4632 0 obj << /Limits[(fun:lstat)(fun:lstat)] /Names[(fun:lstat) 2305 0 R] >> endobj 4633 0 obj << /Limits[(fun:lt)(fun:lt)] /Names[(fun:lt) 2100 0 R] >> endobj 4634 0 obj << /Limits[(fun:lxor)(fun:mapprefix)] /Names[(fun:lxor) 2088 0 R(fun:mapprefix) 1999 0 R] >> endobj 4635 0 obj << /Limits[(fun:lsr)(fun:mapprefix)] /Kids[4631 0 R 4632 0 R 4633 0 R 4634 0 R] >> endobj 4636 0 obj << /Limits[(fun:mapsuffix)(fun:mapsuffix)] /Names[(fun:mapsuffix) 1982 0 R] >> endobj 4637 0 obj << /Limits[(fun:match)(fun:match)] /Names[(fun:match) 1861 0 R] >> endobj 4638 0 obj << /Limits[(fun:max)(fun:max)] /Names[(fun:max) 2093 0 R] >> endobj 4639 0 obj << /Limits[(fun:mem)(fun:min)] /Names[(fun:mem) 2010 0 R(fun:min) 2092 0 R] >> endobj 4640 0 obj << /Limits[(fun:mapsuffix)(fun:min)] /Kids[4636 0 R 4637 0 R 4638 0 R 4639 0 R] >> endobj 4641 0 obj << /Limits[(fun:mkdir)(fun:mkdir)] /Names[(fun:mkdir) 2295 0 R] >> endobj 4642 0 obj << /Limits[(fun:mkfifo)(fun:mkfifo)] /Names[(fun:mkfifo) 2438 0 R] >> endobj 4643 0 obj << /Limits[(fun:mod)(fun:mod)] /Names[(fun:mod) 2084 0 R] >> endobj 4644 0 obj << /Limits[(fun:mul)(fun:neg)] /Names[(fun:mul) 2082 0 R(fun:neg) 2079 0 R] >> endobj 4645 0 obj << /Limits[(fun:mkdir)(fun:neg)] /Kids[4641 0 R 4642 0 R 4643 0 R 4644 0 R] >> endobj 4646 0 obj << /Limits[(fun:not)(fun:not)] /Names[(fun:not) 1845 0 R] >> endobj 4647 0 obj << /Limits[(fun:nth)(fun:nth-hd)] /Names[(fun:nth) 1926 0 R(fun:nth-hd) 1935 0 R] >> endobj 4648 0 obj << /Limits[(fun:nth-tl)(fun:nth-tl)] /Names[(fun:nth-tl) 1937 0 R] >> endobj 4649 0 obj << /Limits[(fun:ocaml-escaped)(fun:open-in-string)] /Names[(fun:ocaml-escaped) 1955 0 R(fun:open-in-string) 2389 0 R] >> endobj 4650 0 obj << /Limits[(fun:not)(fun:open-in-string)] /Kids[4646 0 R 4647 0 R 4648 0 R 4649 0 R] >> endobj 4651 0 obj << /Limits[(fun:lsr)(fun:open-in-string)] /Kids[4635 0 R 4640 0 R 4645 0 R 4650 0 R] >> endobj 4652 0 obj << /Limits[(fun:find-in-path)(fun:open-in-string)] /Kids[4588 0 R 4609 0 R 4630 0 R 4651 0 R] >> endobj 4653 0 obj << /Limits[(fun:open-out-string)(fun:open-out-string)] /Names[(fun:open-out-string) 2391 0 R] >> endobj 4654 0 obj << /Limits[(fun:or)(fun:or)] /Names[(fun:or) 1851 0 R] >> endobj 4655 0 obj << /Limits[(fun:out-contents)(fun:out-contents)] /Names[(fun:out-contents) 2392 0 R] >> endobj 4656 0 obj << /Limits[(fun:pipe)(fun:print)] /Names[(fun:pipe) 2436 0 R(fun:print) 2500 0 R] >> endobj 4657 0 obj << /Limits[(fun:open-out-string)(fun:print)] /Kids[4653 0 R 4654 0 R 4655 0 R 4656 0 R] >> endobj 4658 0 obj << /Limits[(fun:println)(fun:println)] /Names[(fun:println) 2503 0 R] >> endobj 4659 0 obj << /Limits[(fun:printv)(fun:printv)] /Names[(fun:printv) 2512 0 R] >> endobj 4660 0 obj << /Limits[(fun:printvln)(fun:printvln)] /Names[(fun:printvln) 2515 0 R] >> endobj 4661 0 obj << /Limits[(fun:project-directories)(fun:prompt-invisible)] /Names[(fun:project-directories) 2917 0 R(fun:prompt-invisible) 2660 0 R] >> endobj 4662 0 obj << /Limits[(fun:println)(fun:prompt-invisible)] /Kids[4658 0 R 4659 0 R 4660 0 R 4661 0 R] >> endobj 4663 0 obj << /Limits[(fun:prompt-invisible-begin)(fun:prompt-invisible-begin)] /Names[(fun:prompt-invisible-begin) 2656 0 R] >> endobj 4664 0 obj << /Limits[(fun:prompt-invisible-end)(fun:prompt-invisible-end)] /Names[(fun:prompt-invisible-end) 2657 0 R] >> endobj 4665 0 obj << /Limits[(fun:quote)(fun:quote)] /Names[(fun:quote) 1969 0 R] >> endobj 4666 0 obj << /Limits[(fun:quote-argv)(fun:raise)] /Names[(fun:quote-argv) 1971 0 R(fun:raise) 1875 0 R] >> endobj 4667 0 obj << /Limits[(fun:prompt-invisible-begin)(fun:raise)] /Kids[4663 0 R 4664 0 R 4665 0 R 4666 0 R] >> endobj 4668 0 obj << /Limits[(fun:random)(fun:random)] /Names[(fun:random) 2071 0 R] >> endobj 4669 0 obj << /Limits[(fun:random-init)(fun:read)] /Names[(fun:random-init) 2072 0 R(fun:read) 2403 0 R] >> endobj 4670 0 obj << /Limits[(fun:readlink)(fun:readlink)] /Names[(fun:readlink) 2325 0 R] >> endobj 4671 0 obj << /Limits[(fun:rehash)(fun:remove-project-directories)] /Names[(fun:rehash) 2205 0 R(fun:remove-project-directories) 2350 0 R] >> endobj 4672 0 obj << /Limits[(fun:random)(fun:remove-project-directories)] /Kids[4668 0 R 4669 0 R 4670 0 R 4671 0 R] >> endobj 4673 0 obj << /Limits[(fun:open-out-string)(fun:remove-project-directories)] /Kids[4657 0 R 4662 0 R 4667 0 R 4672 0 R] >> endobj 4674 0 obj << /Limits[(fun:removeprefix)(fun:removeprefix)] /Names[(fun:removeprefix) 1991 0 R] >> endobj 4675 0 obj << /Limits[(fun:removesuffix)(fun:removesuffix)] /Names[(fun:removesuffix) 1993 0 R] >> endobj 4676 0 obj << /Limits[(fun:rename)(fun:rename)] /Names[(fun:rename) 2314 0 R] >> endobj 4677 0 obj << /Limits[(fun:replace-nth)(fun:replacesuffixes)] /Names[(fun:replace-nth) 1933 0 R(fun:replacesuffixes) 1995 0 R] >> endobj 4678 0 obj << /Limits[(fun:removeprefix)(fun:replacesuffixes)] /Kids[4674 0 R 4675 0 R 4676 0 R 4677 0 R] >> endobj 4679 0 obj << /Limits[(fun:rev)(fun:rev)] /Names[(fun:rev) 1946 0 R] >> endobj 4680 0 obj << /Limits[(fun:rewind)(fun:rewind)] /Names[(fun:rewind) 2415 0 R] >> endobj 4681 0 obj << /Limits[(fun:rootname)(fun:rootname)] /Names[(fun:rootname) 2183 0 R] >> endobj 4682 0 obj << /Limits[(fun:rule)(fun:scan)] /Names[(fun:rule) 2919 0 R(fun:scan) 2541 0 R] >> endobj 4683 0 obj << /Limits[(fun:rev)(fun:scan)] /Kids[4679 0 R 4680 0 R 4681 0 R 4682 0 R] >> endobj 4684 0 obj << /Limits[(fun:section)(fun:section)] /Names[(fun:section) 1695 0 R] >> endobj 4685 0 obj << /Limits[(fun:section rule)(fun:section rule)] /Names[(fun:section rule) 1698 0 R] >> endobj 4686 0 obj << /Limits[(fun:select)(fun:select)] /Names[(fun:select) 2445 0 R] >> endobj 4687 0 obj << /Limits[(fun:sequence-forall)(fun:sequence-sort)] /Names[(fun:sequence-forall) 2137 0 R(fun:sequence-sort) 2146 0 R] >> endobj 4688 0 obj << /Limits[(fun:section)(fun:sequence-sort)] /Kids[4684 0 R 4685 0 R 4686 0 R 4687 0 R] >> endobj 4689 0 obj << /Limits[(fun:set)(fun:set)] /Names[(fun:set) 2008 0 R] >> endobj 4690 0 obj << /Limits[(fun:set-close-on-exec-mode)(fun:set-diff)] /Names[(fun:set-close-on-exec-mode) 2434 0 R(fun:set-diff) 2021 0 R] >> endobj 4691 0 obj << /Limits[(fun:set-nonblock)(fun:set-nonblock)] /Names[(fun:set-nonblock) 2432 0 R] >> endobj 4692 0 obj << /Limits[(fun:setenv)(fun:setvar)] /Names[(fun:setenv) 1897 0 R(fun:setvar) 1910 0 R] >> endobj 4693 0 obj << /Limits[(fun:set)(fun:setvar)] /Kids[4689 0 R 4690 0 R 4691 0 R 4692 0 R] >> endobj 4694 0 obj << /Limits[(fun:removeprefix)(fun:setvar)] /Kids[4678 0 R 4683 0 R 4688 0 R 4693 0 R] >> endobj 4695 0 obj << /Limits[(fun:shell)(fun:shell)] /Names[(fun:shell) 2047 0 R] >> endobj 4696 0 obj << /Limits[(fun:socket)(fun:socket)] /Names[(fun:socket) 2473 0 R] >> endobj 4697 0 obj << /Limits[(fun:split)(fun:split)] /Names[(fun:split) 1920 0 R] >> endobj 4698 0 obj << /Limits[(fun:stat)(fun:stat-reset)] /Names[(fun:stat) 2304 0 R(fun:stat-reset) 2233 0 R] >> endobj 4699 0 obj << /Limits[(fun:shell)(fun:stat-reset)] /Kids[4695 0 R 4696 0 R 4697 0 R 4698 0 R] >> endobj 4700 0 obj << /Limits[(fun:stop)(fun:stop)] /Names[(fun:stop) 2726 0 R] >> endobj 4701 0 obj << /Limits[(fun:string)(fun:string)] /Names[(fun:string) 1950 0 R] >> endobj 4702 0 obj << /Limits[(fun:string-escaped)(fun:string-escaped)] /Names[(fun:string-escaped) 1954 0 R] >> endobj 4703 0 obj << /Limits[(fun:string-length)(fun:sub)] /Names[(fun:string-length) 1952 0 R(fun:sub) 2081 0 R] >> endobj 4704 0 obj << /Limits[(fun:stop)(fun:sub)] /Kids[4700 0 R 4701 0 R 4702 0 R 4703 0 R] >> endobj 4705 0 obj << /Limits[(fun:subdirs)(fun:subdirs)] /Names[(fun:subdirs) 2292 0 R] >> endobj 4706 0 obj << /Limits[(fun:subrange)(fun:subrange)] /Names[(fun:subrange) 1939 0 R] >> endobj 4707 0 obj << /Limits[(fun:suffix)(fun:suffix)] /Names[(fun:suffix) 2198 0 R] >> endobj 4708 0 obj << /Limits[(fun:switch)(fun:symlink)] /Names[(fun:switch) 1860 0 R(fun:symlink) 2323 0 R] >> endobj 4709 0 obj << /Limits[(fun:subdirs)(fun:symlink)] /Kids[4705 0 R 4706 0 R 4707 0 R 4708 0 R] >> endobj 4710 0 obj << /Limits[(fun:system)(fun:system)] /Names[(fun:system) 2040 0 R] >> endobj 4711 0 obj << /Limits[(fun:target)(fun:target-exists)] /Names[(fun:target) 2905 0 R(fun:target-exists) 2230 0 R] >> endobj 4712 0 obj << /Limits[(fun:target-is-proper)(fun:target-is-proper)] /Names[(fun:target-is-proper) 2231 0 R] >> endobj 4713 0 obj << /Limits[(fun:tell)(fun:test)] /Names[(fun:tell) 2417 0 R(fun:test) 2353 0 R] >> endobj 4714 0 obj << /Limits[(fun:system)(fun:test)] /Kids[4710 0 R 4711 0 R 4712 0 R 4713 0 R] >> endobj 4715 0 obj << /Limits[(fun:shell)(fun:test)] /Kids[4699 0 R 4704 0 R 4709 0 R 4714 0 R] >> endobj 4716 0 obj << /Limits[(fun:tgetstr)(fun:tgetstr)] /Names[(fun:tgetstr) 2644 0 R] >> endobj 4717 0 obj << /Limits[(fun:tmpfile)(fun:tmpfile)] /Names[(fun:tmpfile) 2170 0 R] >> endobj 4718 0 obj << /Limits[(fun:truncate)(fun:truncate)] /Names[(fun:truncate) 2336 0 R] >> endobj 4719 0 obj << /Limits[(fun:try)(fun:uge)] /Names[(fun:try) 1868 0 R(fun:uge) 2107 0 R] >> endobj 4720 0 obj << /Limits[(fun:tgetstr)(fun:uge)] /Kids[4716 0 R 4717 0 R 4718 0 R 4719 0 R] >> endobj 4721 0 obj << /Limits[(fun:ugt)(fun:ugt)] /Names[(fun:ugt) 2108 0 R] >> endobj 4722 0 obj << /Limits[(fun:ule)(fun:ule)] /Names[(fun:ule) 2106 0 R] >> endobj 4723 0 obj << /Limits[(fun:ult)(fun:ult)] /Names[(fun:ult) 2105 0 R] >> endobj 4724 0 obj << /Limits[(fun:umask)(fun:uncapitalize)] /Names[(fun:umask) 2338 0 R(fun:uncapitalize) 2034 0 R] >> endobj 4725 0 obj << /Limits[(fun:ugt)(fun:uncapitalize)] /Kids[4721 0 R 4722 0 R 4723 0 R 4724 0 R] >> endobj 4726 0 obj << /Limits[(fun:unlink)(fun:unlink)] /Names[(fun:unlink) 2312 0 R] >> endobj 4727 0 obj << /Limits[(fun:unsetenv)(fun:unsetenv)] /Names[(fun:unsetenv) 1899 0 R] >> endobj 4728 0 obj << /Limits[(fun:uppercase)(fun:uppercase)] /Names[(fun:uppercase) 2036 0 R] >> endobj 4729 0 obj << /Limits[(fun:vmount)(fun:wait)] /Names[(fun:vmount) 2341 0 R(fun:wait) 2728 0 R] >> endobj 4730 0 obj << /Limits[(fun:unlink)(fun:wait)] /Kids[4726 0 R 4727 0 R 4728 0 R 4729 0 R] >> endobj 4731 0 obj << /Limits[(fun:where)(fun:where)] /Names[(fun:where) 2203 0 R] >> endobj 4732 0 obj << /Limits[(fun:which)(fun:while)] /Names[(fun:which) 2201 0 R(fun:while) 2053 0 R] >> endobj 4733 0 obj << /Limits[(fun:write)(fun:write)] /Names[(fun:write) 2406 0 R] >> endobj 4734 0 obj << /Limits[(fun:xterm-escape)(fun:xterm-escape-begin)] /Names[(fun:xterm-escape) 2652 0 R(fun:xterm-escape-begin) 2648 0 R] >> endobj 4735 0 obj << /Limits[(fun:where)(fun:xterm-escape-begin)] /Kids[4731 0 R 4732 0 R 4733 0 R 4734 0 R] >> endobj 4736 0 obj << /Limits[(fun:tgetstr)(fun:xterm-escape-begin)] /Kids[4720 0 R 4725 0 R 4730 0 R 4735 0 R] >> endobj 4737 0 obj << /Limits[(fun:open-out-string)(fun:xterm-escape-begin)] /Kids[4673 0 R 4694 0 R 4715 0 R 4736 0 R] >> endobj 4738 0 obj << /Limits[(Doc-Start)(fun:xterm-escape-begin)] /Kids[4482 0 R 4567 0 R 4652 0 R 4737 0 R] >> endobj 4739 0 obj << /Limits[(fun:xterm-escape-end)(fun:xterm-escape-end)] /Names[(fun:xterm-escape-end) 2649 0 R] >> endobj 4740 0 obj << /Limits[(obj:Array)(obj:Array)] /Names[(obj:Array) 2779 0 R] >> endobj 4741 0 obj << /Limits[(obj:Channel)(obj:Channel)] /Names[(obj:Channel) 2807 0 R] >> endobj 4742 0 obj << /Limits[(obj:Dir)(obj:Exception)] /Names[(obj:Dir) 2805 0 R(obj:Exception) 2820 0 R] >> endobj 4743 0 obj << /Limits[(fun:xterm-escape-end)(obj:Exception)] /Kids[4739 0 R 4740 0 R 4741 0 R 4742 0 R] >> endobj 4744 0 obj << /Limits[(obj:File)(obj:File)] /Names[(obj:File) 2803 0 R] >> endobj 4745 0 obj << /Limits[(obj:Float)(obj:Float)] /Names[(obj:Float) 2765 0 R] >> endobj 4746 0 obj << /Limits[(obj:Fun)(obj:Fun)] /Names[(obj:Fun) 2783 0 R] >> endobj 4747 0 obj << /Limits[(obj:Group)(obj:Host)] /Names[(obj:Group) 2634 0 R(obj:Host) 2456 0 R] >> endobj 4748 0 obj << /Limits[(obj:File)(obj:Host)] /Kids[4744 0 R 4745 0 R 4746 0 R 4747 0 R] >> endobj 4749 0 obj << /Limits[(obj:InChannel)(obj:InChannel)] /Names[(obj:InChannel) 2809 0 R] >> endobj 4750 0 obj << /Limits[(obj:InetAddr)(obj:InetAddr)] /Names[(obj:InetAddr) 2454 0 R] >> endobj 4751 0 obj << /Limits[(obj:Int)(obj:Int)] /Names[(obj:Int) 2763 0 R] >> endobj 4752 0 obj << /Limits[(obj:Lexer)(obj:Location)] /Names[(obj:Lexer) 2586 0 R(obj:Location) 2818 0 R] >> endobj 4753 0 obj << /Limits[(obj:InChannel)(obj:Location)] /Kids[4749 0 R 4750 0 R 4751 0 R 4752 0 R] >> endobj 4754 0 obj << /Limits[(obj:Map)(obj:Map)] /Names[(obj:Map) 2754 0 R] >> endobj 4755 0 obj << /Limits[(obj:Node)(obj:Node)] /Names[(obj:Node) 2795 0 R] >> endobj 4756 0 obj << /Limits[(obj:Number)(obj:Number)] /Names[(obj:Number) 2761 0 R] >> endobj 4757 0 obj << /Limits[(obj:Object)(obj:OutChannel)] /Names[(obj:Object) 2747 0 R(obj:OutChannel) 2811 0 R] >> endobj 4758 0 obj << /Limits[(obj:Map)(obj:OutChannel)] /Kids[4754 0 R 4755 0 R 4756 0 R 4757 0 R] >> endobj 4759 0 obj << /Limits[(fun:xterm-escape-end)(obj:OutChannel)] /Kids[4743 0 R 4748 0 R 4753 0 R 4758 0 R] >> endobj 4760 0 obj << /Limits[(obj:Parser)(obj:Parser)] /Names[(obj:Parser) 2602 0 R] >> endobj 4761 0 obj << /Limits[(obj:Passwd)(obj:Passwd)] /Names[(obj:Passwd) 2622 0 R] >> endobj 4762 0 obj << /Limits[(obj:Protocol)(obj:Protocol)] /Names[(obj:Protocol) 2460 0 R] >> endobj 4763 0 obj << /Limits[(obj:Rule)(obj:RuntimeException)] /Names[(obj:Rule) 2785 0 R(obj:RuntimeException) 2822 0 R] >> endobj 4764 0 obj << /Limits[(obj:Parser)(obj:RuntimeException)] /Kids[4760 0 R 4761 0 R 4762 0 R 4763 0 R] >> endobj 4765 0 obj << /Limits[(obj:Sequence)(obj:Sequence)] /Names[(obj:Sequence) 2772 0 R] >> endobj 4766 0 obj << /Limits[(obj:Service)(obj:Service)] /Names[(obj:Service) 2469 0 R] >> endobj 4767 0 obj << /Limits[(obj:Shell)(obj:Shell)] /Names[(obj:Shell) 2833 0 R] >> endobj 4768 0 obj << /Limits[(obj:Stat)(obj:String)] /Names[(obj:Stat) 2302 0 R(obj:String) 2781 0 R] >> endobj 4769 0 obj << /Limits[(obj:Sequence)(obj:String)] /Kids[4765 0 R 4766 0 R 4767 0 R 4768 0 R] >> endobj 4770 0 obj << /Limits[(obj:Target)(obj:Target)] /Names[(obj:Target) 2787 0 R] >> endobj 4771 0 obj << /Limits[(obj:UnbuildableException)(obj:UnbuildableException)] /Names[(obj:UnbuildableException) 2824 0 R] >> endobj 4772 0 obj << /Limits[(page.1)(page.1)] /Names[(page.1) 7 0 R] >> endobj 4773 0 obj << /Limits[(page.10)(page.100)] /Names[(page.10) 887 0 R(page.100) 1769 0 R] >> endobj 4774 0 obj << /Limits[(obj:Target)(page.100)] /Kids[4770 0 R 4771 0 R 4772 0 R 4773 0 R] >> endobj 4775 0 obj << /Limits[(page.101)(page.101)] /Names[(page.101) 1779 0 R] >> endobj 4776 0 obj << /Limits[(page.102)(page.103)] /Names[(page.102) 1790 0 R(page.103) 1798 0 R] >> endobj 4777 0 obj << /Limits[(page.104)(page.104)] /Names[(page.104) 1819 0 R] >> endobj 4778 0 obj << /Limits[(page.105)(page.106)] /Names[(page.105) 1843 0 R(page.106) 1856 0 R] >> endobj 4779 0 obj << /Limits[(page.101)(page.106)] /Kids[4775 0 R 4776 0 R 4777 0 R 4778 0 R] >> endobj 4780 0 obj << /Limits[(obj:Parser)(page.106)] /Kids[4764 0 R 4769 0 R 4774 0 R 4779 0 R] >> endobj 4781 0 obj << /Limits[(page.107)(page.107)] /Names[(page.107) 1866 0 R] >> endobj 4782 0 obj << /Limits[(page.108)(page.108)] /Names[(page.108) 1873 0 R] >> endobj 4783 0 obj << /Limits[(page.109)(page.109)] /Names[(page.109) 1886 0 R] >> endobj 4784 0 obj << /Limits[(page.11)(page.110)] /Names[(page.11) 937 0 R(page.110) 1895 0 R] >> endobj 4785 0 obj << /Limits[(page.107)(page.110)] /Kids[4781 0 R 4782 0 R 4783 0 R 4784 0 R] >> endobj 4786 0 obj << /Limits[(page.111)(page.111)] /Names[(page.111) 1906 0 R] >> endobj 4787 0 obj << /Limits[(page.112)(page.112)] /Names[(page.112) 1918 0 R] >> endobj 4788 0 obj << /Limits[(page.113)(page.113)] /Names[(page.113) 1931 0 R] >> endobj 4789 0 obj << /Limits[(page.114)(page.115)] /Names[(page.114) 1944 0 R(page.115) 1964 0 R] >> endobj 4790 0 obj << /Limits[(page.111)(page.115)] /Kids[4786 0 R 4787 0 R 4788 0 R 4789 0 R] >> endobj 4791 0 obj << /Limits[(page.116)(page.116)] /Names[(page.116) 1976 0 R] >> endobj 4792 0 obj << /Limits[(page.117)(page.117)] /Names[(page.117) 1989 0 R] >> endobj 4793 0 obj << /Limits[(page.118)(page.118)] /Names[(page.118) 2004 0 R] >> endobj 4794 0 obj << /Limits[(page.119)(page.12)] /Names[(page.119) 2017 0 R(page.12) 988 0 R] >> endobj 4795 0 obj << /Limits[(page.116)(page.12)] /Kids[4791 0 R 4792 0 R 4793 0 R 4794 0 R] >> endobj 4796 0 obj << /Limits[(page.120)(page.120)] /Names[(page.120) 2030 0 R] >> endobj 4797 0 obj << /Limits[(page.121)(page.122)] /Names[(page.121) 2045 0 R(page.122) 2059 0 R] >> endobj 4798 0 obj << /Limits[(page.123)(page.123)] /Names[(page.123) 2069 0 R] >> endobj 4799 0 obj << /Limits[(page.124)(page.125)] /Names[(page.124) 2098 0 R(page.125) 2116 0 R] >> endobj 4800 0 obj << /Limits[(page.120)(page.125)] /Kids[4796 0 R 4797 0 R 4798 0 R 4799 0 R] >> endobj 4801 0 obj << /Limits[(page.107)(page.125)] /Kids[4785 0 R 4790 0 R 4795 0 R 4800 0 R] >> endobj 4802 0 obj << /Limits[(page.126)(page.126)] /Names[(page.126) 2130 0 R] >> endobj 4803 0 obj << /Limits[(page.127)(page.127)] /Names[(page.127) 2143 0 R] >> endobj 4804 0 obj << /Limits[(page.128)(page.128)] /Names[(page.128) 2153 0 R] >> endobj 4805 0 obj << /Limits[(page.129)(page.13)] /Names[(page.129) 2158 0 R(page.13) 1041 0 R] >> endobj 4806 0 obj << /Limits[(page.126)(page.13)] /Kids[4802 0 R 4803 0 R 4804 0 R 4805 0 R] >> endobj 4807 0 obj << /Limits[(page.130)(page.130)] /Names[(page.130) 2168 0 R] >> endobj 4808 0 obj << /Limits[(page.131)(page.131)] /Names[(page.131) 2179 0 R] >> endobj 4809 0 obj << /Limits[(page.132)(page.132)] /Names[(page.132) 2194 0 R] >> endobj 4810 0 obj << /Limits[(page.133)(page.134)] /Names[(page.133) 2210 0 R(page.134) 2226 0 R] >> endobj 4811 0 obj << /Limits[(page.130)(page.134)] /Kids[4807 0 R 4808 0 R 4809 0 R 4810 0 R] >> endobj 4812 0 obj << /Limits[(page.135)(page.135)] /Names[(page.135) 2243 0 R] >> endobj 4813 0 obj << /Limits[(page.136)(page.136)] /Names[(page.136) 2253 0 R] >> endobj 4814 0 obj << /Limits[(page.137)(page.137)] /Names[(page.137) 2264 0 R] >> endobj 4815 0 obj << /Limits[(page.138)(page.139)] /Names[(page.138) 2273 0 R(page.139) 2281 0 R] >> endobj 4816 0 obj << /Limits[(page.135)(page.139)] /Kids[4812 0 R 4813 0 R 4814 0 R 4815 0 R] >> endobj 4817 0 obj << /Limits[(page.14)(page.14)] /Names[(page.14) 1092 0 R] >> endobj 4818 0 obj << /Limits[(page.140)(page.141)] /Names[(page.140) 2288 0 R(page.141) 2300 0 R] >> endobj 4819 0 obj << /Limits[(page.142)(page.142)] /Names[(page.142) 2310 0 R] >> endobj 4820 0 obj << /Limits[(page.143)(page.144)] /Names[(page.143) 2319 0 R(page.144) 2332 0 R] >> endobj 4821 0 obj << /Limits[(page.14)(page.144)] /Kids[4817 0 R 4818 0 R 4819 0 R 4820 0 R] >> endobj 4822 0 obj << /Limits[(page.126)(page.144)] /Kids[4806 0 R 4811 0 R 4816 0 R 4821 0 R] >> endobj 4823 0 obj << /Limits[(fun:xterm-escape-end)(page.144)] /Kids[4759 0 R 4780 0 R 4801 0 R 4822 0 R] >> endobj 4824 0 obj << /Limits[(page.145)(page.145)] /Names[(page.145) 2346 0 R] >> endobj 4825 0 obj << /Limits[(page.146)(page.146)] /Names[(page.146) 2358 0 R] >> endobj 4826 0 obj << /Limits[(page.147)(page.147)] /Names[(page.147) 2363 0 R] >> endobj 4827 0 obj << /Limits[(page.148)(page.149)] /Names[(page.148) 2371 0 R(page.149) 2385 0 R] >> endobj 4828 0 obj << /Limits[(page.145)(page.149)] /Kids[4824 0 R 4825 0 R 4826 0 R 4827 0 R] >> endobj 4829 0 obj << /Limits[(page.15)(page.15)] /Names[(page.15) 1122 0 R] >> endobj 4830 0 obj << /Limits[(page.150)(page.150)] /Names[(page.150) 2399 0 R] >> endobj 4831 0 obj << /Limits[(page.151)(page.151)] /Names[(page.151) 2413 0 R] >> endobj 4832 0 obj << /Limits[(page.152)(page.153)] /Names[(page.152) 2428 0 R(page.153) 2443 0 R] >> endobj 4833 0 obj << /Limits[(page.15)(page.153)] /Kids[4829 0 R 4830 0 R 4831 0 R 4832 0 R] >> endobj 4834 0 obj << /Limits[(page.154)(page.154)] /Names[(page.154) 2452 0 R] >> endobj 4835 0 obj << /Limits[(page.155)(page.155)] /Names[(page.155) 2467 0 R] >> endobj 4836 0 obj << /Limits[(page.156)(page.156)] /Names[(page.156) 2478 0 R] >> endobj 4837 0 obj << /Limits[(page.157)(page.158)] /Names[(page.157) 2491 0 R(page.158) 2509 0 R] >> endobj 4838 0 obj << /Limits[(page.154)(page.158)] /Kids[4834 0 R 4835 0 R 4836 0 R 4837 0 R] >> endobj 4839 0 obj << /Limits[(page.159)(page.159)] /Names[(page.159) 2525 0 R] >> endobj 4840 0 obj << /Limits[(page.16)(page.160)] /Names[(page.16) 1145 0 R(page.160) 2530 0 R] >> endobj 4841 0 obj << /Limits[(page.161)(page.161)] /Names[(page.161) 2535 0 R] >> endobj 4842 0 obj << /Limits[(page.162)(page.163)] /Names[(page.162) 2546 0 R(page.163) 2551 0 R] >> endobj 4843 0 obj << /Limits[(page.159)(page.163)] /Kids[4839 0 R 4840 0 R 4841 0 R 4842 0 R] >> endobj 4844 0 obj << /Limits[(page.145)(page.163)] /Kids[4828 0 R 4833 0 R 4838 0 R 4843 0 R] >> endobj 4845 0 obj << /Limits[(page.164)(page.164)] /Names[(page.164) 2558 0 R] >> endobj 4846 0 obj << /Limits[(page.165)(page.165)] /Names[(page.165) 2565 0 R] >> endobj 4847 0 obj << /Limits[(page.166)(page.166)] /Names[(page.166) 2574 0 R] >> endobj 4848 0 obj << /Limits[(page.167)(page.168)] /Names[(page.167) 2583 0 R(page.168) 2592 0 R] >> endobj 4849 0 obj << /Limits[(page.164)(page.168)] /Kids[4845 0 R 4846 0 R 4847 0 R 4848 0 R] >> endobj 4850 0 obj << /Limits[(page.169)(page.169)] /Names[(page.169) 2599 0 R] >> endobj 4851 0 obj << /Limits[(page.17)(page.17)] /Names[(page.17) 1155 0 R] >> endobj 4852 0 obj << /Limits[(page.170)(page.170)] /Names[(page.170) 2607 0 R] >> endobj 4853 0 obj << /Limits[(page.171)(page.172)] /Names[(page.171) 2612 0 R(page.172) 2620 0 R] >> endobj 4854 0 obj << /Limits[(page.169)(page.172)] /Kids[4850 0 R 4851 0 R 4852 0 R 4853 0 R] >> endobj 4855 0 obj << /Limits[(page.173)(page.173)] /Names[(page.173) 2627 0 R] >> endobj 4856 0 obj << /Limits[(page.174)(page.174)] /Names[(page.174) 2642 0 R] >> endobj 4857 0 obj << /Limits[(page.175)(page.175)] /Names[(page.175) 2667 0 R] >> endobj 4858 0 obj << /Limits[(page.176)(page.177)] /Names[(page.176) 2674 0 R(page.177) 2679 0 R] >> endobj 4859 0 obj << /Limits[(page.173)(page.177)] /Kids[4855 0 R 4856 0 R 4857 0 R 4858 0 R] >> endobj 4860 0 obj << /Limits[(page.178)(page.178)] /Names[(page.178) 2686 0 R] >> endobj 4861 0 obj << /Limits[(page.179)(page.18)] /Names[(page.179) 2697 0 R(page.18) 1164 0 R] >> endobj 4862 0 obj << /Limits[(page.180)(page.180)] /Names[(page.180) 2705 0 R] >> endobj 4863 0 obj << /Limits[(page.181)(page.182)] /Names[(page.181) 2717 0 R(page.182) 2738 0 R] >> endobj 4864 0 obj << /Limits[(page.178)(page.182)] /Kids[4860 0 R 4861 0 R 4862 0 R 4863 0 R] >> endobj 4865 0 obj << /Limits[(page.164)(page.182)] /Kids[4849 0 R 4854 0 R 4859 0 R 4864 0 R] >> endobj 4866 0 obj << /Limits[(page.183)(page.183)] /Names[(page.183) 2743 0 R] >> endobj 4867 0 obj << /Limits[(page.184)(page.184)] /Names[(page.184) 2752 0 R] >> endobj 4868 0 obj << /Limits[(page.185)(page.185)] /Names[(page.185) 2759 0 R] >> endobj 4869 0 obj << /Limits[(page.186)(page.187)] /Names[(page.186) 2770 0 R(page.187) 2777 0 R] >> endobj 4870 0 obj << /Limits[(page.183)(page.187)] /Kids[4866 0 R 4867 0 R 4868 0 R 4869 0 R] >> endobj 4871 0 obj << /Limits[(page.188)(page.188)] /Names[(page.188) 2792 0 R] >> endobj 4872 0 obj << /Limits[(page.189)(page.189)] /Names[(page.189) 2801 0 R] >> endobj 4873 0 obj << /Limits[(page.19)(page.19)] /Names[(page.19) 1183 0 R] >> endobj 4874 0 obj << /Limits[(page.190)(page.191)] /Names[(page.190) 2816 0 R(page.191) 2831 0 R] >> endobj 4875 0 obj << /Limits[(page.188)(page.191)] /Kids[4871 0 R 4872 0 R 4873 0 R 4874 0 R] >> endobj 4876 0 obj << /Limits[(page.192)(page.192)] /Names[(page.192) 2838 0 R] >> endobj 4877 0 obj << /Limits[(page.193)(page.193)] /Names[(page.193) 2843 0 R] >> endobj 4878 0 obj << /Limits[(page.194)(page.194)] /Names[(page.194) 2848 0 R] >> endobj 4879 0 obj << /Limits[(page.195)(page.196)] /Names[(page.195) 2856 0 R(page.196) 2870 0 R] >> endobj 4880 0 obj << /Limits[(page.192)(page.196)] /Kids[4876 0 R 4877 0 R 4878 0 R 4879 0 R] >> endobj 4881 0 obj << /Limits[(page.197)(page.197)] /Names[(page.197) 2886 0 R] >> endobj 4882 0 obj << /Limits[(page.198)(page.199)] /Names[(page.198) 2900 0 R(page.199) 2915 0 R] >> endobj 4883 0 obj << /Limits[(page.2)(page.2)] /Names[(page.2) 524 0 R] >> endobj 4884 0 obj << /Limits[(page.20)(page.200)] /Names[(page.20) 1191 0 R(page.200) 2927 0 R] >> endobj 4885 0 obj << /Limits[(page.197)(page.200)] /Kids[4881 0 R 4882 0 R 4883 0 R 4884 0 R] >> endobj 4886 0 obj << /Limits[(page.183)(page.200)] /Kids[4870 0 R 4875 0 R 4880 0 R 4885 0 R] >> endobj 4887 0 obj << /Limits[(page.201)(page.201)] /Names[(page.201) 2951 0 R] >> endobj 4888 0 obj << /Limits[(page.202)(page.202)] /Names[(page.202) 2977 0 R] >> endobj 4889 0 obj << /Limits[(page.203)(page.203)] /Names[(page.203) 3010 0 R] >> endobj 4890 0 obj << /Limits[(page.204)(page.205)] /Names[(page.204) 3035 0 R(page.205) 3056 0 R] >> endobj 4891 0 obj << /Limits[(page.201)(page.205)] /Kids[4887 0 R 4888 0 R 4889 0 R 4890 0 R] >> endobj 4892 0 obj << /Limits[(page.206)(page.206)] /Names[(page.206) 3071 0 R] >> endobj 4893 0 obj << /Limits[(page.207)(page.207)] /Names[(page.207) 3099 0 R] >> endobj 4894 0 obj << /Limits[(page.208)(page.208)] /Names[(page.208) 3136 0 R] >> endobj 4895 0 obj << /Limits[(page.209)(page.21)] /Names[(page.209) 3172 0 R(page.21) 1198 0 R] >> endobj 4896 0 obj << /Limits[(page.206)(page.21)] /Kids[4892 0 R 4893 0 R 4894 0 R 4895 0 R] >> endobj 4897 0 obj << /Limits[(page.210)(page.210)] /Names[(page.210) 3195 0 R] >> endobj 4898 0 obj << /Limits[(page.211)(page.211)] /Names[(page.211) 3215 0 R] >> endobj 4899 0 obj << /Limits[(page.212)(page.212)] /Names[(page.212) 3226 0 R] >> endobj 4900 0 obj << /Limits[(page.213)(page.214)] /Names[(page.213) 3249 0 R(page.214) 3283 0 R] >> endobj 4901 0 obj << /Limits[(page.210)(page.214)] /Kids[4897 0 R 4898 0 R 4899 0 R 4900 0 R] >> endobj 4902 0 obj << /Limits[(page.215)(page.215)] /Names[(page.215) 3307 0 R] >> endobj 4903 0 obj << /Limits[(page.216)(page.217)] /Names[(page.216) 3319 0 R(page.217) 3346 0 R] >> endobj 4904 0 obj << /Limits[(page.218)(page.218)] /Names[(page.218) 3371 0 R] >> endobj 4905 0 obj << /Limits[(page.219)(page.22)] /Names[(page.219) 3397 0 R(page.22) 1203 0 R] >> endobj 4906 0 obj << /Limits[(page.215)(page.22)] /Kids[4902 0 R 4903 0 R 4904 0 R 4905 0 R] >> endobj 4907 0 obj << /Limits[(page.201)(page.22)] /Kids[4891 0 R 4896 0 R 4901 0 R 4906 0 R] >> endobj 4908 0 obj << /Limits[(page.145)(page.22)] /Kids[4844 0 R 4865 0 R 4886 0 R 4907 0 R] >> endobj 4909 0 obj << /Limits[(page.220)(page.220)] /Names[(page.220) 3411 0 R] >> endobj 4910 0 obj << /Limits[(page.221)(page.221)] /Names[(page.221) 3416 0 R] >> endobj 4911 0 obj << /Limits[(page.222)(page.222)] /Names[(page.222) 3427 0 R] >> endobj 4912 0 obj << /Limits[(page.223)(page.224)] /Names[(page.223) 3436 0 R(page.224) 3446 0 R] >> endobj 4913 0 obj << /Limits[(page.220)(page.224)] /Kids[4909 0 R 4910 0 R 4911 0 R 4912 0 R] >> endobj 4914 0 obj << /Limits[(page.225)(page.225)] /Names[(page.225) 3460 0 R] >> endobj 4915 0 obj << /Limits[(page.226)(page.226)] /Names[(page.226) 3470 0 R] >> endobj 4916 0 obj << /Limits[(page.227)(page.227)] /Names[(page.227) 3480 0 R] >> endobj 4917 0 obj << /Limits[(page.228)(page.229)] /Names[(page.228) 3491 0 R(page.229) 3502 0 R] >> endobj 4918 0 obj << /Limits[(page.225)(page.229)] /Kids[4914 0 R 4915 0 R 4916 0 R 4917 0 R] >> endobj 4919 0 obj << /Limits[(page.23)(page.23)] /Names[(page.23) 1208 0 R] >> endobj 4920 0 obj << /Limits[(page.230)(page.230)] /Names[(page.230) 3515 0 R] >> endobj 4921 0 obj << /Limits[(page.231)(page.231)] /Names[(page.231) 3527 0 R] >> endobj 4922 0 obj << /Limits[(page.232)(page.233)] /Names[(page.232) 3533 0 R(page.233) 3538 0 R] >> endobj 4923 0 obj << /Limits[(page.23)(page.233)] /Kids[4919 0 R 4920 0 R 4921 0 R 4922 0 R] >> endobj 4924 0 obj << /Limits[(page.234)(page.234)] /Names[(page.234) 3547 0 R] >> endobj 4925 0 obj << /Limits[(page.235)(page.236)] /Names[(page.235) 3554 0 R(page.236) 3561 0 R] >> endobj 4926 0 obj << /Limits[(page.237)(page.237)] /Names[(page.237) 3568 0 R] >> endobj 4927 0 obj << /Limits[(page.238)(page.239)] /Names[(page.238) 3577 0 R(page.239) 3582 0 R] >> endobj 4928 0 obj << /Limits[(page.234)(page.239)] /Kids[4924 0 R 4925 0 R 4926 0 R 4927 0 R] >> endobj 4929 0 obj << /Limits[(page.220)(page.239)] /Kids[4913 0 R 4918 0 R 4923 0 R 4928 0 R] >> endobj 4930 0 obj << /Limits[(page.24)(page.24)] /Names[(page.24) 1213 0 R] >> endobj 4931 0 obj << /Limits[(page.240)(page.240)] /Names[(page.240) 3592 0 R] >> endobj 4932 0 obj << /Limits[(page.241)(page.241)] /Names[(page.241) 3605 0 R] >> endobj 4933 0 obj << /Limits[(page.242)(page.243)] /Names[(page.242) 3615 0 R(page.243) 3623 0 R] >> endobj 4934 0 obj << /Limits[(page.24)(page.243)] /Kids[4930 0 R 4931 0 R 4932 0 R 4933 0 R] >> endobj 4935 0 obj << /Limits[(page.244)(page.244)] /Names[(page.244) 3631 0 R] >> endobj 4936 0 obj << /Limits[(page.245)(page.245)] /Names[(page.245) 3640 0 R] >> endobj 4937 0 obj << /Limits[(page.246)(page.246)] /Names[(page.246) 3648 0 R] >> endobj 4938 0 obj << /Limits[(page.247)(page.248)] /Names[(page.247) 3654 0 R(page.248) 3659 0 R] >> endobj 4939 0 obj << /Limits[(page.244)(page.248)] /Kids[4935 0 R 4936 0 R 4937 0 R 4938 0 R] >> endobj 4940 0 obj << /Limits[(page.249)(page.249)] /Names[(page.249) 3746 0 R] >> endobj 4941 0 obj << /Limits[(page.25)(page.25)] /Names[(page.25) 1220 0 R] >> endobj 4942 0 obj << /Limits[(page.250)(page.250)] /Names[(page.250) 3842 0 R] >> endobj 4943 0 obj << /Limits[(page.251)(page.252)] /Names[(page.251) 3940 0 R(page.252) 4038 0 R] >> endobj 4944 0 obj << /Limits[(page.249)(page.252)] /Kids[4940 0 R 4941 0 R 4942 0 R 4943 0 R] >> endobj 4945 0 obj << /Limits[(page.253)(page.253)] /Names[(page.253) 4135 0 R] >> endobj 4946 0 obj << /Limits[(page.254)(page.255)] /Names[(page.254) 4233 0 R(page.255) 4301 0 R] >> endobj 4947 0 obj << /Limits[(page.26)(page.26)] /Names[(page.26) 1225 0 R] >> endobj 4948 0 obj << /Limits[(page.27)(page.28)] /Names[(page.27) 1231 0 R(page.28) 1238 0 R] >> endobj 4949 0 obj << /Limits[(page.253)(page.28)] /Kids[4945 0 R 4946 0 R 4947 0 R 4948 0 R] >> endobj 4950 0 obj << /Limits[(page.24)(page.28)] /Kids[4934 0 R 4939 0 R 4944 0 R 4949 0 R] >> endobj 4951 0 obj << /Limits[(page.29)(page.29)] /Names[(page.29) 1243 0 R] >> endobj 4952 0 obj << /Limits[(page.3)(page.3)] /Names[(page.3) 532 0 R] >> endobj 4953 0 obj << /Limits[(page.30)(page.30)] /Names[(page.30) 1249 0 R] >> endobj 4954 0 obj << /Limits[(page.31)(page.32)] /Names[(page.31) 1257 0 R(page.32) 1264 0 R] >> endobj 4955 0 obj << /Limits[(page.29)(page.32)] /Kids[4951 0 R 4952 0 R 4953 0 R 4954 0 R] >> endobj 4956 0 obj << /Limits[(page.33)(page.33)] /Names[(page.33) 1269 0 R] >> endobj 4957 0 obj << /Limits[(page.34)(page.34)] /Names[(page.34) 1275 0 R] >> endobj 4958 0 obj << /Limits[(page.35)(page.35)] /Names[(page.35) 1280 0 R] >> endobj 4959 0 obj << /Limits[(page.36)(page.37)] /Names[(page.36) 1286 0 R(page.37) 1298 0 R] >> endobj 4960 0 obj << /Limits[(page.33)(page.37)] /Kids[4956 0 R 4957 0 R 4958 0 R 4959 0 R] >> endobj 4961 0 obj << /Limits[(page.38)(page.38)] /Names[(page.38) 1304 0 R] >> endobj 4962 0 obj << /Limits[(page.39)(page.39)] /Names[(page.39) 1312 0 R] >> endobj 4963 0 obj << /Limits[(page.4)(page.4)] /Names[(page.4) 574 0 R] >> endobj 4964 0 obj << /Limits[(page.40)(page.41)] /Names[(page.40) 1318 0 R(page.41) 1323 0 R] >> endobj 4965 0 obj << /Limits[(page.38)(page.41)] /Kids[4961 0 R 4962 0 R 4963 0 R 4964 0 R] >> endobj 4966 0 obj << /Limits[(page.42)(page.42)] /Names[(page.42) 1330 0 R] >> endobj 4967 0 obj << /Limits[(page.43)(page.44)] /Names[(page.43) 1340 0 R(page.44) 1346 0 R] >> endobj 4968 0 obj << /Limits[(page.45)(page.45)] /Names[(page.45) 1352 0 R] >> endobj 4969 0 obj << /Limits[(page.46)(page.47)] /Names[(page.46) 1357 0 R(page.47) 1362 0 R] >> endobj 4970 0 obj << /Limits[(page.42)(page.47)] /Kids[4966 0 R 4967 0 R 4968 0 R 4969 0 R] >> endobj 4971 0 obj << /Limits[(page.29)(page.47)] /Kids[4955 0 R 4960 0 R 4965 0 R 4970 0 R] >> endobj 4972 0 obj << /Limits[(page.48)(page.48)] /Names[(page.48) 1369 0 R] >> endobj 4973 0 obj << /Limits[(page.49)(page.49)] /Names[(page.49) 1377 0 R] >> endobj 4974 0 obj << /Limits[(page.5)(page.5)] /Names[(page.5) 626 0 R] >> endobj 4975 0 obj << /Limits[(page.50)(page.51)] /Names[(page.50) 1387 0 R(page.51) 1397 0 R] >> endobj 4976 0 obj << /Limits[(page.48)(page.51)] /Kids[4972 0 R 4973 0 R 4974 0 R 4975 0 R] >> endobj 4977 0 obj << /Limits[(page.52)(page.52)] /Names[(page.52) 1404 0 R] >> endobj 4978 0 obj << /Limits[(page.53)(page.53)] /Names[(page.53) 1413 0 R] >> endobj 4979 0 obj << /Limits[(page.54)(page.54)] /Names[(page.54) 1418 0 R] >> endobj 4980 0 obj << /Limits[(page.55)(page.56)] /Names[(page.55) 1425 0 R(page.56) 1432 0 R] >> endobj 4981 0 obj << /Limits[(page.52)(page.56)] /Kids[4977 0 R 4978 0 R 4979 0 R 4980 0 R] >> endobj 4982 0 obj << /Limits[(page.57)(page.57)] /Names[(page.57) 1442 0 R] >> endobj 4983 0 obj << /Limits[(page.58)(page.58)] /Names[(page.58) 1452 0 R] >> endobj 4984 0 obj << /Limits[(page.59)(page.59)] /Names[(page.59) 1457 0 R] >> endobj 4985 0 obj << /Limits[(page.6)(page.60)] /Names[(page.6) 680 0 R(page.60) 1470 0 R] >> endobj 4986 0 obj << /Limits[(page.57)(page.60)] /Kids[4982 0 R 4983 0 R 4984 0 R 4985 0 R] >> endobj 4987 0 obj << /Limits[(page.61)(page.61)] /Names[(page.61) 1485 0 R] >> endobj 4988 0 obj << /Limits[(page.62)(page.63)] /Names[(page.62) 1500 0 R(page.63) 1508 0 R] >> endobj 4989 0 obj << /Limits[(page.64)(page.64)] /Names[(page.64) 1515 0 R] >> endobj 4990 0 obj << /Limits[(page.65)(page.66)] /Names[(page.65) 1523 0 R(page.66) 1529 0 R] >> endobj 4991 0 obj << /Limits[(page.61)(page.66)] /Kids[4987 0 R 4988 0 R 4989 0 R 4990 0 R] >> endobj 4992 0 obj << /Limits[(page.48)(page.66)] /Kids[4976 0 R 4981 0 R 4986 0 R 4991 0 R] >> endobj 4993 0 obj << /Limits[(page.220)(page.66)] /Kids[4929 0 R 4950 0 R 4971 0 R 4992 0 R] >> endobj 4994 0 obj << /Limits[(page.67)(page.67)] /Names[(page.67) 1537 0 R] >> endobj 4995 0 obj << /Limits[(page.68)(page.68)] /Names[(page.68) 1543 0 R] >> endobj 4996 0 obj << /Limits[(page.69)(page.69)] /Names[(page.69) 1548 0 R] >> endobj 4997 0 obj << /Limits[(page.7)(page.70)] /Names[(page.7) 732 0 R(page.70) 1555 0 R] >> endobj 4998 0 obj << /Limits[(page.67)(page.70)] /Kids[4994 0 R 4995 0 R 4996 0 R 4997 0 R] >> endobj 4999 0 obj << /Limits[(page.71)(page.71)] /Names[(page.71) 1560 0 R] >> endobj 5000 0 obj << /Limits[(page.72)(page.72)] /Names[(page.72) 1566 0 R] >> endobj 5001 0 obj << /Limits[(page.73)(page.73)] /Names[(page.73) 1578 0 R] >> endobj 5002 0 obj << /Limits[(page.74)(page.75)] /Names[(page.74) 1585 0 R(page.75) 1590 0 R] >> endobj 5003 0 obj << /Limits[(page.71)(page.75)] /Kids[4999 0 R 5000 0 R 5001 0 R 5002 0 R] >> endobj 5004 0 obj << /Limits[(page.76)(page.76)] /Names[(page.76) 1598 0 R] >> endobj 5005 0 obj << /Limits[(page.77)(page.77)] /Names[(page.77) 1605 0 R] >> endobj 5006 0 obj << /Limits[(page.78)(page.78)] /Names[(page.78) 1611 0 R] >> endobj 5007 0 obj << /Limits[(page.79)(page.8)] /Names[(page.79) 1616 0 R(page.8) 783 0 R] >> endobj 5008 0 obj << /Limits[(page.76)(page.8)] /Kids[5004 0 R 5005 0 R 5006 0 R 5007 0 R] >> endobj 5009 0 obj << /Limits[(page.80)(page.80)] /Names[(page.80) 1625 0 R] >> endobj 5010 0 obj << /Limits[(page.81)(page.82)] /Names[(page.81) 1633 0 R(page.82) 1639 0 R] >> endobj 5011 0 obj << /Limits[(page.83)(page.83)] /Names[(page.83) 1645 0 R] >> endobj 5012 0 obj << /Limits[(page.84)(page.85)] /Names[(page.84) 1651 0 R(page.85) 1657 0 R] >> endobj 5013 0 obj << /Limits[(page.80)(page.85)] /Kids[5009 0 R 5010 0 R 5011 0 R 5012 0 R] >> endobj 5014 0 obj << /Limits[(page.67)(page.85)] /Kids[4998 0 R 5003 0 R 5008 0 R 5013 0 R] >> endobj 5015 0 obj << /Limits[(page.86)(page.86)] /Names[(page.86) 1662 0 R] >> endobj 5016 0 obj << /Limits[(page.87)(page.87)] /Names[(page.87) 1668 0 R] >> endobj 5017 0 obj << /Limits[(page.88)(page.88)] /Names[(page.88) 1674 0 R] >> endobj 5018 0 obj << /Limits[(page.89)(page.9)] /Names[(page.89) 1680 0 R(page.9) 835 0 R] >> endobj 5019 0 obj << /Limits[(page.86)(page.9)] /Kids[5015 0 R 5016 0 R 5017 0 R 5018 0 R] >> endobj 5020 0 obj << /Limits[(page.90)(page.90)] /Names[(page.90) 1686 0 R] >> endobj 5021 0 obj << /Limits[(page.91)(page.91)] /Names[(page.91) 1693 0 R] >> endobj 5022 0 obj << /Limits[(page.92)(page.92)] /Names[(page.92) 1706 0 R] >> endobj 5023 0 obj << /Limits[(page.93)(page.94)] /Names[(page.93) 1713 0 R(page.94) 1725 0 R] >> endobj 5024 0 obj << /Limits[(page.90)(page.94)] /Kids[5020 0 R 5021 0 R 5022 0 R 5023 0 R] >> endobj 5025 0 obj << /Limits[(page.95)(page.95)] /Names[(page.95) 1733 0 R] >> endobj 5026 0 obj << /Limits[(page.96)(page.96)] /Names[(page.96) 1743 0 R] >> endobj 5027 0 obj << /Limits[(page.97)(page.97)] /Names[(page.97) 1750 0 R] >> endobj 5028 0 obj << /Limits[(page.98)(page.99)] /Names[(page.98) 1756 0 R(page.99) 1763 0 R] >> endobj 5029 0 obj << /Limits[(page.95)(page.99)] /Kids[5025 0 R 5026 0 R 5027 0 R 5028 0 R] >> endobj 5030 0 obj << /Limits[(section*.10)(section*.10)] /Names[(section*.10) 1824 0 R] >> endobj 5031 0 obj << /Limits[(section*.100)(section*.101)] /Names[(section*.100) 3261 0 R(section*.101) 3263 0 R] >> endobj 5032 0 obj << /Limits[(section*.102)(section*.102)] /Names[(section*.102) 3265 0 R] >> endobj 5033 0 obj << /Limits[(section*.103)(section*.104)] /Names[(section*.103) 3267 0 R(section*.104) 3269 0 R] >> endobj 5034 0 obj << /Limits[(section*.10)(section*.104)] /Kids[5030 0 R 5031 0 R 5032 0 R 5033 0 R] >> endobj 5035 0 obj << /Limits[(page.86)(section*.104)] /Kids[5019 0 R 5024 0 R 5029 0 R 5034 0 R] >> endobj 5036 0 obj << /Limits[(section*.105)(section*.105)] /Names[(section*.105) 3271 0 R] >> endobj 5037 0 obj << /Limits[(section*.106)(section*.106)] /Names[(section*.106) 3273 0 R] >> endobj 5038 0 obj << /Limits[(section*.107)(section*.107)] /Names[(section*.107) 3275 0 R] >> endobj 5039 0 obj << /Limits[(section*.108)(section*.109)] /Names[(section*.108) 3277 0 R(section*.109) 3290 0 R] >> endobj 5040 0 obj << /Limits[(section*.105)(section*.109)] /Kids[5036 0 R 5037 0 R 5038 0 R 5039 0 R] >> endobj 5041 0 obj << /Limits[(section*.11)(section*.11)] /Names[(section*.11) 1826 0 R] >> endobj 5042 0 obj << /Limits[(section*.110)(section*.110)] /Names[(section*.110) 3292 0 R] >> endobj 5043 0 obj << /Limits[(section*.111)(section*.111)] /Names[(section*.111) 3294 0 R] >> endobj 5044 0 obj << /Limits[(section*.112)(section*.113)] /Names[(section*.112) 3381 0 R(section*.113) 3383 0 R] >> endobj 5045 0 obj << /Limits[(section*.11)(section*.113)] /Kids[5041 0 R 5042 0 R 5043 0 R 5044 0 R] >> endobj 5046 0 obj << /Limits[(section*.114)(section*.114)] /Names[(section*.114) 3385 0 R] >> endobj 5047 0 obj << /Limits[(section*.115)(section*.115)] /Names[(section*.115) 3387 0 R] >> endobj 5048 0 obj << /Limits[(section*.116)(section*.116)] /Names[(section*.116) 3390 0 R] >> endobj 5049 0 obj << /Limits[(section*.117)(section*.118)] /Names[(section*.117) 3398 0 R(section*.118) 3400 0 R] >> endobj 5050 0 obj << /Limits[(section*.114)(section*.118)] /Kids[5046 0 R 5047 0 R 5048 0 R 5049 0 R] >> endobj 5051 0 obj << /Limits[(section*.119)(section*.119)] /Names[(section*.119) 3402 0 R] >> endobj 5052 0 obj << /Limits[(section*.12)(section*.120)] /Names[(section*.12) 1828 0 R(section*.120) 3405 0 R] >> endobj 5053 0 obj << /Limits[(section*.121)(section*.121)] /Names[(section*.121) 3419 0 R] >> endobj 5054 0 obj << /Limits[(section*.122)(section*.13)] /Names[(section*.122) 3428 0 R(section*.13) 1830 0 R] >> endobj 5055 0 obj << /Limits[(section*.119)(section*.13)] /Kids[5051 0 R 5052 0 R 5053 0 R 5054 0 R] >> endobj 5056 0 obj << /Limits[(section*.105)(section*.13)] /Kids[5040 0 R 5045 0 R 5050 0 R 5055 0 R] >> endobj 5057 0 obj << /Limits[(section*.14)(section*.14)] /Names[(section*.14) 1832 0 R] >> endobj 5058 0 obj << /Limits[(section*.15)(section*.15)] /Names[(section*.15) 1834 0 R] >> endobj 5059 0 obj << /Limits[(section*.16)(section*.16)] /Names[(section*.16) 1836 0 R] >> endobj 5060 0 obj << /Limits[(section*.17)(section*.18)] /Names[(section*.17) 2238 0 R(section*.18) 2376 0 R] >> endobj 5061 0 obj << /Limits[(section*.14)(section*.18)] /Kids[5057 0 R 5058 0 R 5059 0 R 5060 0 R] >> endobj 5062 0 obj << /Limits[(section*.19)(section*.19)] /Names[(section*.19) 2378 0 R] >> endobj 5063 0 obj << /Limits[(section*.2)(section*.2)] /Names[(section*.2) 1801 0 R] >> endobj 5064 0 obj << /Limits[(section*.20)(section*.20)] /Names[(section*.20) 2386 0 R] >> endobj 5065 0 obj << /Limits[(section*.21)(section*.22)] /Names[(section*.21) 2932 0 R(section*.22) 2934 0 R] >> endobj 5066 0 obj << /Limits[(section*.19)(section*.22)] /Kids[5062 0 R 5063 0 R 5064 0 R 5065 0 R] >> endobj 5067 0 obj << /Limits[(section*.23)(section*.23)] /Names[(section*.23) 2936 0 R] >> endobj 5068 0 obj << /Limits[(section*.24)(section*.24)] /Names[(section*.24) 2938 0 R] >> endobj 5069 0 obj << /Limits[(section*.25)(section*.25)] /Names[(section*.25) 2940 0 R] >> endobj 5070 0 obj << /Limits[(section*.26)(section*.27)] /Names[(section*.26) 2942 0 R(section*.27) 2945 0 R] >> endobj 5071 0 obj << /Limits[(section*.23)(section*.27)] /Kids[5067 0 R 5068 0 R 5069 0 R 5070 0 R] >> endobj 5072 0 obj << /Limits[(section*.28)(section*.28)] /Names[(section*.28) 2952 0 R] >> endobj 5073 0 obj << /Limits[(section*.29)(section*.3)] /Names[(section*.29) 2954 0 R(section*.3) 1803 0 R] >> endobj 5074 0 obj << /Limits[(section*.30)(section*.30)] /Names[(section*.30) 2956 0 R] >> endobj 5075 0 obj << /Limits[(section*.31)(section*.32)] /Names[(section*.31) 2958 0 R(section*.32) 2960 0 R] >> endobj 5076 0 obj << /Limits[(section*.28)(section*.32)] /Kids[5072 0 R 5073 0 R 5074 0 R 5075 0 R] >> endobj 5077 0 obj << /Limits[(section*.14)(section*.32)] /Kids[5061 0 R 5066 0 R 5071 0 R 5076 0 R] >> endobj 5078 0 obj << /Limits[(page.67)(section*.32)] /Kids[5014 0 R 5035 0 R 5056 0 R 5077 0 R] >> endobj 5079 0 obj << /Limits[(fun:xterm-escape-end)(section*.32)] /Kids[4823 0 R 4908 0 R 4993 0 R 5078 0 R] >> endobj 5080 0 obj << /Limits[(section*.33)(section*.33)] /Names[(section*.33) 2962 0 R] >> endobj 5081 0 obj << /Limits[(section*.34)(section*.34)] /Names[(section*.34) 2964 0 R] >> endobj 5082 0 obj << /Limits[(section*.35)(section*.35)] /Names[(section*.35) 2970 0 R] >> endobj 5083 0 obj << /Limits[(section*.36)(section*.37)] /Names[(section*.36) 2978 0 R(section*.37) 2981 0 R] >> endobj 5084 0 obj << /Limits[(section*.33)(section*.37)] /Kids[5080 0 R 5081 0 R 5082 0 R 5083 0 R] >> endobj 5085 0 obj << /Limits[(section*.38)(section*.38)] /Names[(section*.38) 2983 0 R] >> endobj 5086 0 obj << /Limits[(section*.39)(section*.39)] /Names[(section*.39) 2986 0 R] >> endobj 5087 0 obj << /Limits[(section*.4)(section*.4)] /Names[(section*.4) 1805 0 R] >> endobj 5088 0 obj << /Limits[(section*.40)(section*.41)] /Names[(section*.40) 2988 0 R(section*.41) 2990 0 R] >> endobj 5089 0 obj << /Limits[(section*.38)(section*.41)] /Kids[5085 0 R 5086 0 R 5087 0 R 5088 0 R] >> endobj 5090 0 obj << /Limits[(section*.42)(section*.42)] /Names[(section*.42) 2992 0 R] >> endobj 5091 0 obj << /Limits[(section*.43)(section*.43)] /Names[(section*.43) 2994 0 R] >> endobj 5092 0 obj << /Limits[(section*.44)(section*.44)] /Names[(section*.44) 2996 0 R] >> endobj 5093 0 obj << /Limits[(section*.45)(section*.46)] /Names[(section*.45) 2998 0 R(section*.46) 3000 0 R] >> endobj 5094 0 obj << /Limits[(section*.42)(section*.46)] /Kids[5090 0 R 5091 0 R 5092 0 R 5093 0 R] >> endobj 5095 0 obj << /Limits[(section*.47)(section*.47)] /Names[(section*.47) 3002 0 R] >> endobj 5096 0 obj << /Limits[(section*.48)(section*.48)] /Names[(section*.48) 3004 0 R] >> endobj 5097 0 obj << /Limits[(section*.49)(section*.49)] /Names[(section*.49) 3011 0 R] >> endobj 5098 0 obj << /Limits[(section*.5)(section*.50)] /Names[(section*.5) 1808 0 R(section*.50) 3013 0 R] >> endobj 5099 0 obj << /Limits[(section*.47)(section*.50)] /Kids[5095 0 R 5096 0 R 5097 0 R 5098 0 R] >> endobj 5100 0 obj << /Limits[(section*.33)(section*.50)] /Kids[5084 0 R 5089 0 R 5094 0 R 5099 0 R] >> endobj 5101 0 obj << /Limits[(section*.51)(section*.51)] /Names[(section*.51) 3015 0 R] >> endobj 5102 0 obj << /Limits[(section*.52)(section*.52)] /Names[(section*.52) 3017 0 R] >> endobj 5103 0 obj << /Limits[(section*.53)(section*.53)] /Names[(section*.53) 3019 0 R] >> endobj 5104 0 obj << /Limits[(section*.54)(section*.55)] /Names[(section*.54) 3021 0 R(section*.55) 3023 0 R] >> endobj 5105 0 obj << /Limits[(section*.51)(section*.55)] /Kids[5101 0 R 5102 0 R 5103 0 R 5104 0 R] >> endobj 5106 0 obj << /Limits[(section*.56)(section*.56)] /Names[(section*.56) 3025 0 R] >> endobj 5107 0 obj << /Limits[(section*.57)(section*.57)] /Names[(section*.57) 3043 0 R] >> endobj 5108 0 obj << /Limits[(section*.58)(section*.58)] /Names[(section*.58) 3085 0 R] >> endobj 5109 0 obj << /Limits[(section*.59)(section*.6)] /Names[(section*.59) 3087 0 R(section*.6) 1810 0 R] >> endobj 5110 0 obj << /Limits[(section*.56)(section*.6)] /Kids[5106 0 R 5107 0 R 5108 0 R 5109 0 R] >> endobj 5111 0 obj << /Limits[(section*.60)(section*.60)] /Names[(section*.60) 3089 0 R] >> endobj 5112 0 obj << /Limits[(section*.61)(section*.61)] /Names[(section*.61) 3091 0 R] >> endobj 5113 0 obj << /Limits[(section*.62)(section*.62)] /Names[(section*.62) 3100 0 R] >> endobj 5114 0 obj << /Limits[(section*.63)(section*.64)] /Names[(section*.63) 3102 0 R(section*.64) 3104 0 R] >> endobj 5115 0 obj << /Limits[(section*.60)(section*.64)] /Kids[5111 0 R 5112 0 R 5113 0 R 5114 0 R] >> endobj 5116 0 obj << /Limits[(section*.65)(section*.65)] /Names[(section*.65) 3106 0 R] >> endobj 5117 0 obj << /Limits[(section*.66)(section*.67)] /Names[(section*.66) 3108 0 R(section*.67) 3110 0 R] >> endobj 5118 0 obj << /Limits[(section*.68)(section*.68)] /Names[(section*.68) 3112 0 R] >> endobj 5119 0 obj << /Limits[(section*.69)(section*.7)] /Names[(section*.69) 3114 0 R(section*.7) 1812 0 R] >> endobj 5120 0 obj << /Limits[(section*.65)(section*.7)] /Kids[5116 0 R 5117 0 R 5118 0 R 5119 0 R] >> endobj 5121 0 obj << /Limits[(section*.51)(section*.7)] /Kids[5105 0 R 5110 0 R 5115 0 R 5120 0 R] >> endobj 5122 0 obj << /Limits[(section*.70)(section*.70)] /Names[(section*.70) 3116 0 R] >> endobj 5123 0 obj << /Limits[(section*.71)(section*.71)] /Names[(section*.71) 3118 0 R] >> endobj 5124 0 obj << /Limits[(section*.72)(section*.72)] /Names[(section*.72) 3120 0 R] >> endobj 5125 0 obj << /Limits[(section*.73)(section*.74)] /Names[(section*.73) 3123 0 R(section*.74) 3125 0 R] >> endobj 5126 0 obj << /Limits[(section*.70)(section*.74)] /Kids[5122 0 R 5123 0 R 5124 0 R 5125 0 R] >> endobj 5127 0 obj << /Limits[(section*.75)(section*.75)] /Names[(section*.75) 3127 0 R] >> endobj 5128 0 obj << /Limits[(section*.76)(section*.76)] /Names[(section*.76) 3129 0 R] >> endobj 5129 0 obj << /Limits[(section*.77)(section*.77)] /Names[(section*.77) 3137 0 R] >> endobj 5130 0 obj << /Limits[(section*.78)(section*.79)] /Names[(section*.78) 3139 0 R(section*.79) 3141 0 R] >> endobj 5131 0 obj << /Limits[(section*.75)(section*.79)] /Kids[5127 0 R 5128 0 R 5129 0 R 5130 0 R] >> endobj 5132 0 obj << /Limits[(section*.8)(section*.8)] /Names[(section*.8) 1820 0 R] >> endobj 5133 0 obj << /Limits[(section*.80)(section*.80)] /Names[(section*.80) 3143 0 R] >> endobj 5134 0 obj << /Limits[(section*.81)(section*.81)] /Names[(section*.81) 3145 0 R] >> endobj 5135 0 obj << /Limits[(section*.82)(section*.83)] /Names[(section*.82) 3147 0 R(section*.83) 3150 0 R] >> endobj 5136 0 obj << /Limits[(section*.8)(section*.83)] /Kids[5132 0 R 5133 0 R 5134 0 R 5135 0 R] >> endobj 5137 0 obj << /Limits[(section*.84)(section*.84)] /Names[(section*.84) 3152 0 R] >> endobj 5138 0 obj << /Limits[(section*.85)(section*.86)] /Names[(section*.85) 3154 0 R(section*.86) 3156 0 R] >> endobj 5139 0 obj << /Limits[(section*.87)(section*.87)] /Names[(section*.87) 3158 0 R] >> endobj 5140 0 obj << /Limits[(section*.88)(section*.89)] /Names[(section*.88) 3160 0 R(section*.89) 3162 0 R] >> endobj 5141 0 obj << /Limits[(section*.84)(section*.89)] /Kids[5137 0 R 5138 0 R 5139 0 R 5140 0 R] >> endobj 5142 0 obj << /Limits[(section*.70)(section*.89)] /Kids[5126 0 R 5131 0 R 5136 0 R 5141 0 R] >> endobj 5143 0 obj << /Limits[(section*.9)(section*.9)] /Names[(section*.9) 1822 0 R] >> endobj 5144 0 obj << /Limits[(section*.90)(section*.90)] /Names[(section*.90) 3164 0 R] >> endobj 5145 0 obj << /Limits[(section*.91)(section*.91)] /Names[(section*.91) 3166 0 R] >> endobj 5146 0 obj << /Limits[(section*.92)(section*.93)] /Names[(section*.92) 3174 0 R(section*.93) 3176 0 R] >> endobj 5147 0 obj << /Limits[(section*.9)(section*.93)] /Kids[5143 0 R 5144 0 R 5145 0 R 5146 0 R] >> endobj 5148 0 obj << /Limits[(section*.94)(section*.94)] /Names[(section*.94) 3178 0 R] >> endobj 5149 0 obj << /Limits[(section*.95)(section*.95)] /Names[(section*.95) 3180 0 R] >> endobj 5150 0 obj << /Limits[(section*.96)(section*.96)] /Names[(section*.96) 3182 0 R] >> endobj 5151 0 obj << /Limits[(section*.97)(section*.98)] /Names[(section*.97) 3255 0 R(section*.98) 3257 0 R] >> endobj 5152 0 obj << /Limits[(section*.94)(section*.98)] /Kids[5148 0 R 5149 0 R 5150 0 R 5151 0 R] >> endobj 5153 0 obj << /Limits[(section*.99)(section*.99)] /Names[(section*.99) 3259 0 R] >> endobj 5154 0 obj << /Limits[(section.10.1)(section.10.1)] /Names[(section.10.1) 2160 0 R] >> endobj 5155 0 obj << /Limits[(section.10.10)(section.10.10)] /Names[(section.10.10) 2510 0 R] >> endobj 5156 0 obj << /Limits[(section.10.11)(section.10.2)] /Names[(section.10.11) 2519 0 R(section.10.2) 2199 0 R] >> endobj 5157 0 obj << /Limits[(section*.99)(section.10.2)] /Kids[5153 0 R 5154 0 R 5155 0 R 5156 0 R] >> endobj 5158 0 obj << /Limits[(section.10.3)(section.10.3)] /Names[(section.10.3) 2227 0 R] >> endobj 5159 0 obj << /Limits[(section.10.4)(section.10.5)] /Names[(section.10.4) 2268 0 R(section.10.5) 2293 0 R] >> endobj 5160 0 obj << /Limits[(section.10.6)(section.10.6)] /Names[(section.10.6) 2339 0 R] >> endobj 5161 0 obj << /Limits[(section.10.7)(section.10.8)] /Names[(section.10.7) 2351 0 R(section.10.8) 2374 0 R] >> endobj 5162 0 obj << /Limits[(section.10.3)(section.10.8)] /Kids[5158 0 R 5159 0 R 5160 0 R 5161 0 R] >> endobj 5163 0 obj << /Limits[(section*.9)(section.10.8)] /Kids[5147 0 R 5152 0 R 5157 0 R 5162 0 R] >> endobj 5164 0 obj << /Limits[(section*.33)(section.10.8)] /Kids[5100 0 R 5121 0 R 5142 0 R 5163 0 R] >> endobj 5165 0 obj << /Limits[(section.10.9)(section.10.9)] /Names[(section.10.9) 2498 0 R] >> endobj 5166 0 obj << /Limits[(section.11.1)(section.11.1)] /Names[(section.11.1) 2681 0 R] >> endobj 5167 0 obj << /Limits[(section.11.10)(section.11.10)] /Names[(section.11.10) 2718 0 R] >> endobj 5168 0 obj << /Limits[(section.11.11)(section.11.2)] /Names[(section.11.11) 2731 0 R(section.11.2) 2687 0 R] >> endobj 5169 0 obj << /Limits[(section.10.9)(section.11.2)] /Kids[5165 0 R 5166 0 R 5167 0 R 5168 0 R] >> endobj 5170 0 obj << /Limits[(section.11.3)(section.11.3)] /Names[(section.11.3) 2689 0 R] >> endobj 5171 0 obj << /Limits[(section.11.4)(section.11.4)] /Names[(section.11.4) 2690 0 R] >> endobj 5172 0 obj << /Limits[(section.11.5)(section.11.5)] /Names[(section.11.5) 2691 0 R] >> endobj 5173 0 obj << /Limits[(section.11.6)(section.11.7)] /Names[(section.11.6) 2698 0 R(section.11.7) 2699 0 R] >> endobj 5174 0 obj << /Limits[(section.11.3)(section.11.7)] /Kids[5170 0 R 5171 0 R 5172 0 R 5173 0 R] >> endobj 5175 0 obj << /Limits[(section.11.8)(section.11.8)] /Names[(section.11.8) 2700 0 R] >> endobj 5176 0 obj << /Limits[(section.11.9)(section.11.9)] /Names[(section.11.9) 2707 0 R] >> endobj 5177 0 obj << /Limits[(section.12.1)(section.12.1)] /Names[(section.12.1) 2745 0 R] >> endobj 5178 0 obj << /Limits[(section.13.1)(section.13.2)] /Names[(section.13.1) 2858 0 R(section.13.2) 2876 0 R] >> endobj 5179 0 obj << /Limits[(section.11.8)(section.13.2)] /Kids[5175 0 R 5176 0 R 5177 0 R 5178 0 R] >> endobj 5180 0 obj << /Limits[(section.13.3)(section.13.3)] /Names[(section.13.3) 2891 0 R] >> endobj 5181 0 obj << /Limits[(section.13.4)(section.13.5)] /Names[(section.13.4) 2930 0 R(section.13.5) 2966 0 R] >> endobj 5182 0 obj << /Limits[(section.13.6)(section.13.6)] /Names[(section.13.6) 3082 0 R] >> endobj 5183 0 obj << /Limits[(section.13.7)(section.14.1)] /Names[(section.13.7) 3253 0 R(section.14.1) 3309 0 R] >> endobj 5184 0 obj << /Limits[(section.13.3)(section.14.1)] /Kids[5180 0 R 5181 0 R 5182 0 R 5183 0 R] >> endobj 5185 0 obj << /Limits[(section.10.9)(section.14.1)] /Kids[5169 0 R 5174 0 R 5179 0 R 5184 0 R] >> endobj 5186 0 obj << /Limits[(section.14.2)(section.14.2)] /Names[(section.14.2) 3363 0 R] >> endobj 5187 0 obj << /Limits[(section.14.3)(section.14.3)] /Names[(section.14.3) 3378 0 R] >> endobj 5188 0 obj << /Limits[(section.15.1)(section.15.1)] /Names[(section.15.1) 3418 0 R] >> endobj 5189 0 obj << /Limits[(section.15.2)(section.15.3)] /Names[(section.15.2) 3430 0 R(section.15.3) 3431 0 R] >> endobj 5190 0 obj << /Limits[(section.14.2)(section.15.3)] /Kids[5186 0 R 5187 0 R 5188 0 R 5189 0 R] >> endobj 5191 0 obj << /Limits[(section.2.1)(section.2.1)] /Names[(section.2.1) 1157 0 R] >> endobj 5192 0 obj << /Limits[(section.2.10)(section.2.10)] /Names[(section.2.10) 1233 0 R] >> endobj 5193 0 obj << /Limits[(section.2.2)(section.2.2)] /Names[(section.2.2) 1165 0 R] >> endobj 5194 0 obj << /Limits[(section.2.3)(section.2.4)] /Names[(section.2.3) 1175 0 R(section.2.4) 1192 0 R] >> endobj 5195 0 obj << /Limits[(section.2.1)(section.2.4)] /Kids[5191 0 R 5192 0 R 5193 0 R 5194 0 R] >> endobj 5196 0 obj << /Limits[(section.2.5)(section.2.5)] /Names[(section.2.5) 1193 0 R] >> endobj 5197 0 obj << /Limits[(section.2.6)(section.2.6)] /Names[(section.2.6) 1214 0 R] >> endobj 5198 0 obj << /Limits[(section.2.7)(section.2.7)] /Names[(section.2.7) 1215 0 R] >> endobj 5199 0 obj << /Limits[(section.2.8)(section.2.9)] /Names[(section.2.8) 1226 0 R(section.2.9) 1232 0 R] >> endobj 5200 0 obj << /Limits[(section.2.5)(section.2.9)] /Kids[5196 0 R 5197 0 R 5198 0 R 5199 0 R] >> endobj 5201 0 obj << /Limits[(section.3.1)(section.3.1)] /Names[(section.3.1) 1258 0 R] >> endobj 5202 0 obj << /Limits[(section.3.2)(section.3.3)] /Names[(section.3.2) 1259 0 R(section.3.3) 1270 0 R] >> endobj 5203 0 obj << /Limits[(section.3.4)(section.3.4)] /Names[(section.3.4) 1281 0 R] >> endobj 5204 0 obj << /Limits[(section.3.5)(section.4.1)] /Names[(section.3.5) 1325 0 R(section.4.1) 1364 0 R] >> endobj 5205 0 obj << /Limits[(section.3.1)(section.4.1)] /Kids[5201 0 R 5202 0 R 5203 0 R 5204 0 R] >> endobj 5206 0 obj << /Limits[(section.14.2)(section.4.1)] /Kids[5190 0 R 5195 0 R 5200 0 R 5205 0 R] >> endobj 5207 0 obj << /Limits[(section.4.10)(section.4.10)] /Names[(section.4.10) 1407 0 R] >> endobj 5208 0 obj << /Limits[(section.4.11)(section.4.11)] /Names[(section.4.11) 1419 0 R] >> endobj 5209 0 obj << /Limits[(section.4.12)(section.4.12)] /Names[(section.4.12) 1420 0 R] >> endobj 5210 0 obj << /Limits[(section.4.13)(section.4.14)] /Names[(section.4.13) 1426 0 R(section.4.14) 1427 0 R] >> endobj 5211 0 obj << /Limits[(section.4.10)(section.4.14)] /Kids[5207 0 R 5208 0 R 5209 0 R 5210 0 R] >> endobj 5212 0 obj << /Limits[(section.4.15)(section.4.15)] /Names[(section.4.15) 1458 0 R] >> endobj 5213 0 obj << /Limits[(section.4.2)(section.4.2)] /Names[(section.4.2) 1370 0 R] >> endobj 5214 0 obj << /Limits[(section.4.3)(section.4.3)] /Names[(section.4.3) 1371 0 R] >> endobj 5215 0 obj << /Limits[(section.4.4)(section.4.5)] /Names[(section.4.4) 1372 0 R(section.4.5) 1378 0 R] >> endobj 5216 0 obj << /Limits[(section.4.15)(section.4.5)] /Kids[5212 0 R 5213 0 R 5214 0 R 5215 0 R] >> endobj 5217 0 obj << /Limits[(section.4.6)(section.4.6)] /Names[(section.4.6) 1388 0 R] >> endobj 5218 0 obj << /Limits[(section.4.7)(section.4.7)] /Names[(section.4.7) 1389 0 R] >> endobj 5219 0 obj << /Limits[(section.4.8)(section.4.8)] /Names[(section.4.8) 1391 0 R] >> endobj 5220 0 obj << /Limits[(section.4.9)(section.5.1)] /Names[(section.4.9) 1405 0 R(section.5.1) 1510 0 R] >> endobj 5221 0 obj << /Limits[(section.4.6)(section.5.1)] /Kids[5217 0 R 5218 0 R 5219 0 R 5220 0 R] >> endobj 5222 0 obj << /Limits[(section.5.2)(section.5.2)] /Names[(section.5.2) 1518 0 R] >> endobj 5223 0 obj << /Limits[(section.5.3)(section.5.4)] /Names[(section.5.3) 1524 0 R(section.5.4) 1530 0 R] >> endobj 5224 0 obj << /Limits[(section.5.5)(section.5.5)] /Names[(section.5.5) 1531 0 R] >> endobj 5225 0 obj << /Limits[(section.5.6)(section.5.7)] /Names[(section.5.6) 1532 0 R(section.5.7) 1538 0 R] >> endobj 5226 0 obj << /Limits[(section.5.2)(section.5.7)] /Kids[5222 0 R 5223 0 R 5224 0 R 5225 0 R] >> endobj 5227 0 obj << /Limits[(section.4.10)(section.5.7)] /Kids[5211 0 R 5216 0 R 5221 0 R 5226 0 R] >> endobj 5228 0 obj << /Limits[(section.6.1)(section.6.1)] /Names[(section.6.1) 1550 0 R] >> endobj 5229 0 obj << /Limits[(section.6.2)(section.6.2)] /Names[(section.6.2) 1561 0 R] >> endobj 5230 0 obj << /Limits[(section.6.3)(section.6.3)] /Names[(section.6.3) 1567 0 R] >> endobj 5231 0 obj << /Limits[(section.6.4)(section.6.5)] /Names[(section.6.4) 1592 0 R(section.6.5) 1599 0 R] >> endobj 5232 0 obj << /Limits[(section.6.1)(section.6.5)] /Kids[5228 0 R 5229 0 R 5230 0 R 5231 0 R] >> endobj 5233 0 obj << /Limits[(section.6.6)(section.6.6)] /Names[(section.6.6) 1600 0 R] >> endobj 5234 0 obj << /Limits[(section.6.7)(section.6.7)] /Names[(section.6.7) 1606 0 R] >> endobj 5235 0 obj << /Limits[(section.7.1)(section.7.1)] /Names[(section.7.1) 1619 0 R] >> endobj 5236 0 obj << /Limits[(section.7.2)(section.7.3)] /Names[(section.7.2) 1626 0 R(section.7.3) 1634 0 R] >> endobj 5237 0 obj << /Limits[(section.6.6)(section.7.3)] /Kids[5233 0 R 5234 0 R 5235 0 R 5236 0 R] >> endobj 5238 0 obj << /Limits[(section.7.4)(section.7.4)] /Names[(section.7.4) 1640 0 R] >> endobj 5239 0 obj << /Limits[(section.7.5)(section.7.5)] /Names[(section.7.5) 1646 0 R] >> endobj 5240 0 obj << /Limits[(section.7.6)(section.7.6)] /Names[(section.7.6) 1663 0 R] >> endobj 5241 0 obj << /Limits[(section.7.7)(section.7.8)] /Names[(section.7.7) 1669 0 R(section.7.8) 1675 0 R] >> endobj 5242 0 obj << /Limits[(section.7.4)(section.7.8)] /Kids[5238 0 R 5239 0 R 5240 0 R 5241 0 R] >> endobj 5243 0 obj << /Limits[(section.8.1)(section.8.1)] /Names[(section.8.1) 1687 0 R] >> endobj 5244 0 obj << /Limits[(section.8.10)(section.8.11)] /Names[(section.8.10) 1745 0 R(section.8.11) 1751 0 R] >> endobj 5245 0 obj << /Limits[(section.8.12)(section.8.12)] /Names[(section.8.12) 1771 0 R] >> endobj 5246 0 obj << /Limits[(section.8.13)(section.8.2)] /Names[(section.8.13) 1781 0 R(section.8.2) 1688 0 R] >> endobj 5247 0 obj << /Limits[(section.8.1)(section.8.2)] /Kids[5243 0 R 5244 0 R 5245 0 R 5246 0 R] >> endobj 5248 0 obj << /Limits[(section.6.1)(section.8.2)] /Kids[5232 0 R 5237 0 R 5242 0 R 5247 0 R] >> endobj 5249 0 obj << /Limits[(section.10.9)(section.8.2)] /Kids[5185 0 R 5206 0 R 5227 0 R 5248 0 R] >> endobj 5250 0 obj << /Limits[(section.8.3)(section.8.3)] /Names[(section.8.3) 1694 0 R] >> endobj 5251 0 obj << /Limits[(section.8.4)(section.8.4)] /Names[(section.8.4) 1697 0 R] >> endobj 5252 0 obj << /Limits[(section.8.5)(section.8.5)] /Names[(section.8.5) 1699 0 R] >> endobj 5253 0 obj << /Limits[(section.8.6)(section.8.7)] /Names[(section.8.6) 1717 0 R(section.8.7) 1736 0 R] >> endobj 5254 0 obj << /Limits[(section.8.3)(section.8.7)] /Kids[5250 0 R 5251 0 R 5252 0 R 5253 0 R] >> endobj 5255 0 obj << /Limits[(section.8.8)(section.8.8)] /Names[(section.8.8) 1737 0 R] >> endobj 5256 0 obj << /Limits[(section.8.9)(section.8.9)] /Names[(section.8.9) 1744 0 R] >> endobj 5257 0 obj << /Limits[(section.9.1)(section.9.1)] /Names[(section.9.1) 1800 0 R] >> endobj 5258 0 obj << /Limits[(section.9.2)(section.9.3)] /Names[(section.9.2) 1838 0 R(section.9.3) 1911 0 R] >> endobj 5259 0 obj << /Limits[(section.8.8)(section.9.3)] /Kids[5255 0 R 5256 0 R 5257 0 R 5258 0 R] >> endobj 5260 0 obj << /Limits[(section.9.4)(section.9.4)] /Names[(section.9.4) 2073 0 R] >> endobj 5261 0 obj << /Limits[(section.9.5)(section.9.5)] /Names[(section.9.5) 2109 0 R] >> endobj 5262 0 obj << /Limits[(section.9.6)(section.9.6)] /Names[(section.9.6) 2131 0 R] >> endobj 5263 0 obj << /Limits[(section.9.7)(section.A.1)] /Names[(section.9.7) 2135 0 R(section.A.1) 3438 0 R] >> endobj 5264 0 obj << /Limits[(section.9.4)(section.A.1)] /Kids[5260 0 R 5261 0 R 5262 0 R 5263 0 R] >> endobj 5265 0 obj << /Limits[(section.A.2)(section.A.2)] /Names[(section.A.2) 3439 0 R] >> endobj 5266 0 obj << /Limits[(section.A.3)(section.A.4)] /Names[(section.A.3) 3471 0 R(section.A.4) 3508 0 R] >> endobj 5267 0 obj << /Limits[(section.A.5)(section.A.5)] /Names[(section.A.5) 3509 0 R] >> endobj 5268 0 obj << /Limits[(section.A.6)(section.A.7)] /Names[(section.A.6) 3517 0 R(section.A.7) 3519 0 R] >> endobj 5269 0 obj << /Limits[(section.A.2)(section.A.7)] /Kids[5265 0 R 5266 0 R 5267 0 R 5268 0 R] >> endobj 5270 0 obj << /Limits[(section.8.3)(section.A.7)] /Kids[5254 0 R 5259 0 R 5264 0 R 5269 0 R] >> endobj 5271 0 obj << /Limits[(section.A.8)(section.A.8)] /Names[(section.A.8) 3528 0 R] >> endobj 5272 0 obj << /Limits[(section.B.1)(section.B.1)] /Names[(section.B.1) 3540 0 R] >> endobj 5273 0 obj << /Limits[(section.B.2)(section.B.2)] /Names[(section.B.2) 3562 0 R] >> endobj 5274 0 obj << /Limits[(section.B.3)(section.C.1)] /Names[(section.B.3) 3649 0 R(section.C.1) 4303 0 R] >> endobj 5275 0 obj << /Limits[(section.A.8)(section.C.1)] /Kids[5271 0 R 5272 0 R 5273 0 R 5274 0 R] >> endobj 5276 0 obj << /Limits[(section.C.2)(section.C.2)] /Names[(section.C.2) 4306 0 R] >> endobj 5277 0 obj << /Limits[(section.C.3)(section.C.3)] /Names[(section.C.3) 4307 0 R] >> endobj 5278 0 obj << /Limits[(section.C.4)(section.C.4)] /Names[(section.C.4) 4308 0 R] >> endobj 5279 0 obj << /Limits[(subsection.10.1.1)(subsection.10.1.10)] /Names[(subsection.10.1.1) 2161 0 R(subsection.10.1.10) 2195 0 R] >> endobj 5280 0 obj << /Limits[(section.C.2)(subsection.10.1.10)] /Kids[5276 0 R 5277 0 R 5278 0 R 5279 0 R] >> endobj 5281 0 obj << /Limits[(subsection.10.1.11)(subsection.10.1.11)] /Names[(subsection.10.1.11) 2197 0 R] >> endobj 5282 0 obj << /Limits[(subsection.10.1.2)(subsection.10.1.2)] /Names[(subsection.10.1.2) 2169 0 R] >> endobj 5283 0 obj << /Limits[(subsection.10.1.3)(subsection.10.1.3)] /Names[(subsection.10.1.3) 2171 0 R] >> endobj 5284 0 obj << /Limits[(subsection.10.1.4)(subsection.10.1.5)] /Names[(subsection.10.1.4) 2173 0 R(subsection.10.1.5) 2180 0 R] >> endobj 5285 0 obj << /Limits[(subsection.10.1.11)(subsection.10.1.5)] /Kids[5281 0 R 5282 0 R 5283 0 R 5284 0 R] >> endobj 5286 0 obj << /Limits[(subsection.10.1.6)(subsection.10.1.6)] /Names[(subsection.10.1.6) 2182 0 R] >> endobj 5287 0 obj << /Limits[(subsection.10.1.7)(subsection.10.1.8)] /Names[(subsection.10.1.7) 2184 0 R(subsection.10.1.8) 2186 0 R] >> endobj 5288 0 obj << /Limits[(subsection.10.1.9)(subsection.10.1.9)] /Names[(subsection.10.1.9) 2188 0 R] >> endobj 5289 0 obj << /Limits[(subsection.10.10.1)(subsection.10.11.1)] /Names[(subsection.10.10.1) 2517 0 R(subsection.10.11.1) 2520 0 R] >> endobj 5290 0 obj << /Limits[(subsection.10.1.6)(subsection.10.11.1)] /Kids[5286 0 R 5287 0 R 5288 0 R 5289 0 R] >> endobj 5291 0 obj << /Limits[(section.A.8)(subsection.10.11.1)] /Kids[5275 0 R 5280 0 R 5285 0 R 5290 0 R] >> endobj 5292 0 obj << /Limits[(subsection.10.11.10)(subsection.10.11.10)] /Names[(subsection.10.11.10) 2593 0 R] >> endobj 5293 0 obj << /Limits[(subsection.10.11.11)(subsection.10.11.11)] /Names[(subsection.10.11.11) 2594 0 R] >> endobj 5294 0 obj << /Limits[(subsection.10.11.12)(subsection.10.11.12)] /Names[(subsection.10.11.12) 2600 0 R] >> endobj 5295 0 obj << /Limits[(subsection.10.11.13)(subsection.10.11.14)] /Names[(subsection.10.11.13) 2601 0 R(subsection.10.11.14) 2613 0 R] >> endobj 5296 0 obj << /Limits[(subsection.10.11.10)(subsection.10.11.14)] /Kids[5292 0 R 5293 0 R 5294 0 R 5295 0 R] >> endobj 5297 0 obj << /Limits[(subsection.10.11.15)(subsection.10.11.15)] /Names[(subsection.10.11.15) 2614 0 R] >> endobj 5298 0 obj << /Limits[(subsection.10.11.16)(subsection.10.11.16)] /Names[(subsection.10.11.16) 2615 0 R] >> endobj 5299 0 obj << /Limits[(subsection.10.11.17)(subsection.10.11.17)] /Names[(subsection.10.11.17) 2621 0 R] >> endobj 5300 0 obj << /Limits[(subsection.10.11.18)(subsection.10.11.19)] /Names[(subsection.10.11.18) 2628 0 R(subsection.10.11.19) 2631 0 R] >> endobj 5301 0 obj << /Limits[(subsection.10.11.15)(subsection.10.11.19)] /Kids[5297 0 R 5298 0 R 5299 0 R 5300 0 R] >> endobj 5302 0 obj << /Limits[(subsection.10.11.2)(subsection.10.11.2)] /Names[(subsection.10.11.2) 2536 0 R] >> endobj 5303 0 obj << /Limits[(subsection.10.11.20)(subsection.10.11.20)] /Names[(subsection.10.11.20) 2633 0 R] >> endobj 5304 0 obj << /Limits[(subsection.10.11.21)(subsection.10.11.21)] /Names[(subsection.10.11.21) 2635 0 R] >> endobj 5305 0 obj << /Limits[(subsection.10.11.22)(subsection.10.11.23)] /Names[(subsection.10.11.22) 2643 0 R(subsection.10.11.23) 2647 0 R] >> endobj 5306 0 obj << /Limits[(subsection.10.11.2)(subsection.10.11.23)] /Kids[5302 0 R 5303 0 R 5304 0 R 5305 0 R] >> endobj 5307 0 obj << /Limits[(subsection.10.11.24)(subsection.10.11.24)] /Names[(subsection.10.11.24) 2651 0 R] >> endobj 5308 0 obj << /Limits[(subsection.10.11.25)(subsection.10.11.26)] /Names[(subsection.10.11.25) 2655 0 R(subsection.10.11.26) 2659 0 R] >> endobj 5309 0 obj << /Limits[(subsection.10.11.27)(subsection.10.11.27)] /Names[(subsection.10.11.27) 2668 0 R] >> endobj 5310 0 obj << /Limits[(subsection.10.11.3)(subsection.10.11.4)] /Names[(subsection.10.11.3) 2538 0 R(subsection.10.11.4) 2540 0 R] >> endobj 5311 0 obj << /Limits[(subsection.10.11.24)(subsection.10.11.4)] /Kids[5307 0 R 5308 0 R 5309 0 R 5310 0 R] >> endobj 5312 0 obj << /Limits[(subsection.10.11.10)(subsection.10.11.4)] /Kids[5296 0 R 5301 0 R 5306 0 R 5311 0 R] >> endobj 5313 0 obj << /Limits[(subsection.10.11.5)(subsection.10.11.5)] /Names[(subsection.10.11.5) 2552 0 R] >> endobj 5314 0 obj << /Limits[(subsection.10.11.6)(subsection.10.11.6)] /Names[(subsection.10.11.6) 2566 0 R] >> endobj 5315 0 obj << /Limits[(subsection.10.11.7)(subsection.10.11.7)] /Names[(subsection.10.11.7) 2568 0 R] >> endobj 5316 0 obj << /Limits[(subsection.10.11.8)(subsection.10.11.9)] /Names[(subsection.10.11.8) 2576 0 R(subsection.10.11.9) 2585 0 R] >> endobj 5317 0 obj << /Limits[(subsection.10.11.5)(subsection.10.11.9)] /Kids[5313 0 R 5314 0 R 5315 0 R 5316 0 R] >> endobj 5318 0 obj << /Limits[(subsection.10.2.1)(subsection.10.2.1)] /Names[(subsection.10.2.1) 2200 0 R] >> endobj 5319 0 obj << /Limits[(subsection.10.2.2)(subsection.10.2.2)] /Names[(subsection.10.2.2) 2202 0 R] >> endobj 5320 0 obj << /Limits[(subsection.10.2.3)(subsection.10.2.3)] /Names[(subsection.10.2.3) 2204 0 R] >> endobj 5321 0 obj << /Limits[(subsection.10.2.4)(subsection.10.2.5)] /Names[(subsection.10.2.4) 2211 0 R(subsection.10.2.5) 2213 0 R] >> endobj 5322 0 obj << /Limits[(subsection.10.2.1)(subsection.10.2.5)] /Kids[5318 0 R 5319 0 R 5320 0 R 5321 0 R] >> endobj 5323 0 obj << /Limits[(subsection.10.2.6)(subsection.10.2.6)] /Names[(subsection.10.2.6) 2216 0 R] >> endobj 5324 0 obj << /Limits[(subsection.10.2.7)(subsection.10.2.7)] /Names[(subsection.10.2.7) 2219 0 R] >> endobj 5325 0 obj << /Limits[(subsection.10.3.1)(subsection.10.3.1)] /Names[(subsection.10.3.1) 2228 0 R] >> endobj 5326 0 obj << /Limits[(subsection.10.3.2)(subsection.10.3.3)] /Names[(subsection.10.3.2) 2232 0 R(subsection.10.3.3) 2234 0 R] >> endobj 5327 0 obj << /Limits[(subsection.10.2.6)(subsection.10.3.3)] /Kids[5323 0 R 5324 0 R 5325 0 R 5326 0 R] >> endobj 5328 0 obj << /Limits[(subsection.10.3.4)(subsection.10.3.4)] /Names[(subsection.10.3.4) 2245 0 R] >> endobj 5329 0 obj << /Limits[(subsection.10.3.5)(subsection.10.3.6)] /Names[(subsection.10.3.5) 2254 0 R(subsection.10.3.6) 2257 0 R] >> endobj 5330 0 obj << /Limits[(subsection.10.3.7)(subsection.10.3.7)] /Names[(subsection.10.3.7) 2266 0 R] >> endobj 5331 0 obj << /Limits[(subsection.10.4.1)(subsection.10.4.2)] /Names[(subsection.10.4.1) 2282 0 R(subsection.10.4.2) 2289 0 R] >> endobj 5332 0 obj << /Limits[(subsection.10.3.4)(subsection.10.4.2)] /Kids[5328 0 R 5329 0 R 5330 0 R 5331 0 R] >> endobj 5333 0 obj << /Limits[(subsection.10.11.5)(subsection.10.4.2)] /Kids[5317 0 R 5322 0 R 5327 0 R 5332 0 R] >> endobj 5334 0 obj << /Limits[(section.8.3)(subsection.10.4.2)] /Kids[5270 0 R 5291 0 R 5312 0 R 5333 0 R] >> endobj 5335 0 obj << /Limits[(subsection.10.4.3)(subsection.10.4.3)] /Names[(subsection.10.4.3) 2291 0 R] >> endobj 5336 0 obj << /Limits[(subsection.10.5.1)(subsection.10.5.1)] /Names[(subsection.10.5.1) 2294 0 R] >> endobj 5337 0 obj << /Limits[(subsection.10.5.10)(subsection.10.5.10)] /Names[(subsection.10.5.10) 2333 0 R] >> endobj 5338 0 obj << /Limits[(subsection.10.5.11)(subsection.10.5.12)] /Names[(subsection.10.5.11) 2335 0 R(subsection.10.5.12) 2337 0 R] >> endobj 5339 0 obj << /Limits[(subsection.10.4.3)(subsection.10.5.12)] /Kids[5335 0 R 5336 0 R 5337 0 R 5338 0 R] >> endobj 5340 0 obj << /Limits[(subsection.10.5.2)(subsection.10.5.2)] /Names[(subsection.10.5.2) 2301 0 R] >> endobj 5341 0 obj << /Limits[(subsection.10.5.3)(subsection.10.5.3)] /Names[(subsection.10.5.3) 2303 0 R] >> endobj 5342 0 obj << /Limits[(subsection.10.5.4)(subsection.10.5.4)] /Names[(subsection.10.5.4) 2311 0 R] >> endobj 5343 0 obj << /Limits[(subsection.10.5.5)(subsection.10.5.6)] /Names[(subsection.10.5.5) 2313 0 R(subsection.10.5.6) 2320 0 R] >> endobj 5344 0 obj << /Limits[(subsection.10.5.2)(subsection.10.5.6)] /Kids[5340 0 R 5341 0 R 5342 0 R 5343 0 R] >> endobj 5345 0 obj << /Limits[(subsection.10.5.7)(subsection.10.5.7)] /Names[(subsection.10.5.7) 2322 0 R] >> endobj 5346 0 obj << /Limits[(subsection.10.5.8)(subsection.10.5.8)] /Names[(subsection.10.5.8) 2324 0 R] >> endobj 5347 0 obj << /Limits[(subsection.10.5.9)(subsection.10.5.9)] /Names[(subsection.10.5.9) 2326 0 R] >> endobj 5348 0 obj << /Limits[(subsection.10.6.1)(subsection.10.6.2)] /Names[(subsection.10.6.1) 2340 0 R(subsection.10.6.2) 2347 0 R] >> endobj 5349 0 obj << /Limits[(subsection.10.5.7)(subsection.10.6.2)] /Kids[5345 0 R 5346 0 R 5347 0 R 5348 0 R] >> endobj 5350 0 obj << /Limits[(subsection.10.6.3)(subsection.10.6.3)] /Names[(subsection.10.6.3) 2349 0 R] >> endobj 5351 0 obj << /Limits[(subsection.10.7.1)(subsection.10.7.2)] /Names[(subsection.10.7.1) 2352 0 R(subsection.10.7.2) 2364 0 R] >> endobj 5352 0 obj << /Limits[(subsection.10.8.1)(subsection.10.8.1)] /Names[(subsection.10.8.1) 2375 0 R] >> endobj 5353 0 obj << /Limits[(subsection.10.8.10)(subsection.10.8.11)] /Names[(subsection.10.8.10) 2416 0 R(subsection.10.8.11) 2418 0 R] >> endobj 5354 0 obj << /Limits[(subsection.10.6.3)(subsection.10.8.11)] /Kids[5350 0 R 5351 0 R 5352 0 R 5353 0 R] >> endobj 5355 0 obj << /Limits[(subsection.10.4.3)(subsection.10.8.11)] /Kids[5339 0 R 5344 0 R 5349 0 R 5354 0 R] >> endobj 5356 0 obj << /Limits[(subsection.10.8.12)(subsection.10.8.12)] /Names[(subsection.10.8.12) 2420 0 R] >> endobj 5357 0 obj << /Limits[(subsection.10.8.13)(subsection.10.8.13)] /Names[(subsection.10.8.13) 2422 0 R] >> endobj 5358 0 obj << /Limits[(subsection.10.8.14)(subsection.10.8.14)] /Names[(subsection.10.8.14) 2429 0 R] >> endobj 5359 0 obj << /Limits[(subsection.10.8.15)(subsection.10.8.16)] /Names[(subsection.10.8.15) 2431 0 R(subsection.10.8.16) 2433 0 R] >> endobj 5360 0 obj << /Limits[(subsection.10.8.12)(subsection.10.8.16)] /Kids[5356 0 R 5357 0 R 5358 0 R 5359 0 R] >> endobj 5361 0 obj << /Limits[(subsection.10.8.17)(subsection.10.8.17)] /Names[(subsection.10.8.17) 2435 0 R] >> endobj 5362 0 obj << /Limits[(subsection.10.8.18)(subsection.10.8.18)] /Names[(subsection.10.8.18) 2437 0 R] >> endobj 5363 0 obj << /Limits[(subsection.10.8.19)(subsection.10.8.19)] /Names[(subsection.10.8.19) 2444 0 R] >> endobj 5364 0 obj << /Limits[(subsection.10.8.2)(subsection.10.8.20)] /Names[(subsection.10.8.2) 2388 0 R(subsection.10.8.20) 2446 0 R] >> endobj 5365 0 obj << /Limits[(subsection.10.8.17)(subsection.10.8.20)] /Kids[5361 0 R 5362 0 R 5363 0 R 5364 0 R] >> endobj 5366 0 obj << /Limits[(subsection.10.8.21)(subsection.10.8.21)] /Names[(subsection.10.8.21) 2453 0 R] >> endobj 5367 0 obj << /Limits[(subsection.10.8.22)(subsection.10.8.22)] /Names[(subsection.10.8.22) 2455 0 R] >> endobj 5368 0 obj << /Limits[(subsection.10.8.23)(subsection.10.8.23)] /Names[(subsection.10.8.23) 2457 0 R] >> endobj 5369 0 obj << /Limits[(subsection.10.8.24)(subsection.10.8.25)] /Names[(subsection.10.8.24) 2459 0 R(subsection.10.8.25) 2461 0 R] >> endobj 5370 0 obj << /Limits[(subsection.10.8.21)(subsection.10.8.25)] /Kids[5366 0 R 5367 0 R 5368 0 R 5369 0 R] >> endobj 5371 0 obj << /Limits[(subsection.10.8.26)(subsection.10.8.26)] /Names[(subsection.10.8.26) 2468 0 R] >> endobj 5372 0 obj << /Limits[(subsection.10.8.27)(subsection.10.8.28)] /Names[(subsection.10.8.27) 2470 0 R(subsection.10.8.28) 2472 0 R] >> endobj 5373 0 obj << /Limits[(subsection.10.8.29)(subsection.10.8.29)] /Names[(subsection.10.8.29) 2479 0 R] >> endobj 5374 0 obj << /Limits[(subsection.10.8.3)(subsection.10.8.30)] /Names[(subsection.10.8.3) 2390 0 R(subsection.10.8.30) 2481 0 R] >> endobj 5375 0 obj << /Limits[(subsection.10.8.26)(subsection.10.8.30)] /Kids[5371 0 R 5372 0 R 5373 0 R 5374 0 R] >> endobj 5376 0 obj << /Limits[(subsection.10.8.12)(subsection.10.8.30)] /Kids[5360 0 R 5365 0 R 5370 0 R 5375 0 R] >> endobj 5377 0 obj << /Limits[(subsection.10.8.31)(subsection.10.8.31)] /Names[(subsection.10.8.31) 2483 0 R] >> endobj 5378 0 obj << /Limits[(subsection.10.8.32)(subsection.10.8.32)] /Names[(subsection.10.8.32) 2485 0 R] >> endobj 5379 0 obj << /Limits[(subsection.10.8.33)(subsection.10.8.33)] /Names[(subsection.10.8.33) 2492 0 R] >> endobj 5380 0 obj << /Limits[(subsection.10.8.34)(subsection.10.8.35)] /Names[(subsection.10.8.34) 2494 0 R(subsection.10.8.35) 2496 0 R] >> endobj 5381 0 obj << /Limits[(subsection.10.8.31)(subsection.10.8.35)] /Kids[5377 0 R 5378 0 R 5379 0 R 5380 0 R] >> endobj 5382 0 obj << /Limits[(subsection.10.8.4)(subsection.10.8.4)] /Names[(subsection.10.8.4) 2393 0 R] >> endobj 5383 0 obj << /Limits[(subsection.10.8.5)(subsection.10.8.5)] /Names[(subsection.10.8.5) 2400 0 R] >> endobj 5384 0 obj << /Limits[(subsection.10.8.6)(subsection.10.8.6)] /Names[(subsection.10.8.6) 2402 0 R] >> endobj 5385 0 obj << /Limits[(subsection.10.8.7)(subsection.10.8.8)] /Names[(subsection.10.8.7) 2405 0 R(subsection.10.8.8) 2407 0 R] >> endobj 5386 0 obj << /Limits[(subsection.10.8.4)(subsection.10.8.8)] /Kids[5382 0 R 5383 0 R 5384 0 R 5385 0 R] >> endobj 5387 0 obj << /Limits[(subsection.10.8.9)(subsection.10.8.9)] /Names[(subsection.10.8.9) 2414 0 R] >> endobj 5388 0 obj << /Limits[(subsection.11.10.1)(subsection.11.10.1)] /Names[(subsection.11.10.1) 2719 0 R] >> endobj 5389 0 obj << /Limits[(subsection.11.10.2)(subsection.11.10.2)] /Names[(subsection.11.10.2) 2721 0 R] >> endobj 5390 0 obj << /Limits[(subsection.11.10.3)(subsection.11.10.4)] /Names[(subsection.11.10.3) 2723 0 R(subsection.11.10.4) 2725 0 R] >> endobj 5391 0 obj << /Limits[(subsection.10.8.9)(subsection.11.10.4)] /Kids[5387 0 R 5388 0 R 5389 0 R 5390 0 R] >> endobj 5392 0 obj << /Limits[(subsection.11.10.5)(subsection.11.10.5)] /Names[(subsection.11.10.5) 2727 0 R] >> endobj 5393 0 obj << /Limits[(subsection.11.10.6)(subsection.11.11.1)] /Names[(subsection.11.10.6) 2729 0 R(subsection.11.11.1) 2732 0 R] >> endobj 5394 0 obj << /Limits[(subsection.11.9.1)(subsection.11.9.1)] /Names[(subsection.11.9.1) 2708 0 R] >> endobj 5395 0 obj << /Limits[(subsection.11.9.2)(subsection.12.1.1)] /Names[(subsection.11.9.2) 2710 0 R(subsection.12.1.1) 2746 0 R] >> endobj 5396 0 obj << /Limits[(subsection.11.10.5)(subsection.12.1.1)] /Kids[5392 0 R 5393 0 R 5394 0 R 5395 0 R] >> endobj 5397 0 obj << /Limits[(subsection.10.8.31)(subsection.12.1.1)] /Kids[5381 0 R 5386 0 R 5391 0 R 5396 0 R] >> endobj 5398 0 obj << /Limits[(subsection.12.1.10)(subsection.12.1.10)] /Names[(subsection.12.1.10) 2784 0 R] >> endobj 5399 0 obj << /Limits[(subsection.12.1.11)(subsection.12.1.11)] /Names[(subsection.12.1.11) 2786 0 R] >> endobj 5400 0 obj << /Limits[(subsection.12.1.12)(subsection.12.1.12)] /Names[(subsection.12.1.12) 2794 0 R] >> endobj 5401 0 obj << /Limits[(subsection.12.1.13)(subsection.12.1.14)] /Names[(subsection.12.1.13) 2802 0 R(subsection.12.1.14) 2804 0 R] >> endobj 5402 0 obj << /Limits[(subsection.12.1.10)(subsection.12.1.14)] /Kids[5398 0 R 5399 0 R 5400 0 R 5401 0 R] >> endobj 5403 0 obj << /Limits[(subsection.12.1.15)(subsection.12.1.15)] /Names[(subsection.12.1.15) 2806 0 R] >> endobj 5404 0 obj << /Limits[(subsection.12.1.16)(subsection.12.1.16)] /Names[(subsection.12.1.16) 2808 0 R] >> endobj 5405 0 obj << /Limits[(subsection.12.1.17)(subsection.12.1.17)] /Names[(subsection.12.1.17) 2810 0 R] >> endobj 5406 0 obj << /Limits[(subsection.12.1.18)(subsection.12.1.19)] /Names[(subsection.12.1.18) 2817 0 R(subsection.12.1.19) 2819 0 R] >> endobj 5407 0 obj << /Limits[(subsection.12.1.15)(subsection.12.1.19)] /Kids[5403 0 R 5404 0 R 5405 0 R 5406 0 R] >> endobj 5408 0 obj << /Limits[(subsection.12.1.2)(subsection.12.1.2)] /Names[(subsection.12.1.2) 2753 0 R] >> endobj 5409 0 obj << /Limits[(subsection.12.1.20)(subsection.12.1.20)] /Names[(subsection.12.1.20) 2821 0 R] >> endobj 5410 0 obj << /Limits[(subsection.12.1.21)(subsection.12.1.21)] /Names[(subsection.12.1.21) 2823 0 R] >> endobj 5411 0 obj << /Limits[(subsection.12.1.22)(subsection.12.1.3)] /Names[(subsection.12.1.22) 2832 0 R(subsection.12.1.3) 2760 0 R] >> endobj 5412 0 obj << /Limits[(subsection.12.1.2)(subsection.12.1.3)] /Kids[5408 0 R 5409 0 R 5410 0 R 5411 0 R] >> endobj 5413 0 obj << /Limits[(subsection.12.1.4)(subsection.12.1.4)] /Names[(subsection.12.1.4) 2762 0 R] >> endobj 5414 0 obj << /Limits[(subsection.12.1.5)(subsection.12.1.6)] /Names[(subsection.12.1.5) 2764 0 R(subsection.12.1.6) 2771 0 R] >> endobj 5415 0 obj << /Limits[(subsection.12.1.7)(subsection.12.1.7)] /Names[(subsection.12.1.7) 2778 0 R] >> endobj 5416 0 obj << /Limits[(subsection.12.1.8)(subsection.12.1.9)] /Names[(subsection.12.1.8) 2780 0 R(subsection.12.1.9) 2782 0 R] >> endobj 5417 0 obj << /Limits[(subsection.12.1.4)(subsection.12.1.9)] /Kids[5413 0 R 5414 0 R 5415 0 R 5416 0 R] >> endobj 5418 0 obj << /Limits[(subsection.12.1.10)(subsection.12.1.9)] /Kids[5402 0 R 5407 0 R 5412 0 R 5417 0 R] >> endobj 5419 0 obj << /Limits[(subsection.10.4.3)(subsection.12.1.9)] /Kids[5355 0 R 5376 0 R 5397 0 R 5418 0 R] >> endobj 5420 0 obj << /Limits[(section*.33)(subsection.12.1.9)] /Kids[5164 0 R 5249 0 R 5334 0 R 5419 0 R] >> endobj 5421 0 obj << /Limits[(subsection.13.2.1)(subsection.13.2.1)] /Names[(subsection.13.2.1) 2877 0 R] >> endobj 5422 0 obj << /Limits[(subsection.13.2.2)(subsection.13.2.2)] /Names[(subsection.13.2.2) 2879 0 R] >> endobj 5423 0 obj << /Limits[(subsection.13.2.3)(subsection.13.2.3)] /Names[(subsection.13.2.3) 2887 0 R] >> endobj 5424 0 obj << /Limits[(subsection.13.2.4)(subsection.13.3.1)] /Names[(subsection.13.2.4) 2889 0 R(subsection.13.3.1) 2892 0 R] >> endobj 5425 0 obj << /Limits[(subsection.13.2.1)(subsection.13.3.1)] /Kids[5421 0 R 5422 0 R 5423 0 R 5424 0 R] >> endobj 5426 0 obj << /Limits[(subsection.13.3.2)(subsection.13.3.2)] /Names[(subsection.13.3.2) 2904 0 R] >> endobj 5427 0 obj << /Limits[(subsection.13.3.3)(subsection.13.3.3)] /Names[(subsection.13.3.3) 2906 0 R] >> endobj 5428 0 obj << /Limits[(subsection.13.3.4)(subsection.13.3.4)] /Names[(subsection.13.3.4) 2916 0 R] >> endobj 5429 0 obj << /Limits[(subsection.13.3.5)(subsection.13.3.6)] /Names[(subsection.13.3.5) 2918 0 R(subsection.13.3.6) 2928 0 R] >> endobj 5430 0 obj << /Limits[(subsection.13.3.2)(subsection.13.3.6)] /Kids[5426 0 R 5427 0 R 5428 0 R 5429 0 R] >> endobj 5431 0 obj << /Limits[(subsection.13.4.1)(subsection.13.4.1)] /Names[(subsection.13.4.1) 2931 0 R] >> endobj 5432 0 obj << /Limits[(subsection.13.4.2)(subsection.13.4.2)] /Names[(subsection.13.4.2) 2944 0 R] >> endobj 5433 0 obj << /Limits[(subsection.13.5.1)(subsection.13.5.1)] /Names[(subsection.13.5.1) 2967 0 R] >> endobj 5434 0 obj << /Limits[(subsection.13.5.2)(subsection.13.5.3)] /Names[(subsection.13.5.2) 2985 0 R(subsection.13.5.3) 3027 0 R] >> endobj 5435 0 obj << /Limits[(subsection.13.4.1)(subsection.13.5.3)] /Kids[5431 0 R 5432 0 R 5433 0 R 5434 0 R] >> endobj 5436 0 obj << /Limits[(subsection.13.5.4)(subsection.13.5.4)] /Names[(subsection.13.5.4) 3036 0 R] >> endobj 5437 0 obj << /Limits[(subsection.13.6.1)(subsection.13.6.1)] /Names[(subsection.13.6.1) 3083 0 R] >> endobj 5438 0 obj << /Limits[(subsection.13.6.2)(subsection.13.6.2)] /Names[(subsection.13.6.2) 3093 0 R] >> endobj 5439 0 obj << /Limits[(subsection.13.6.3)(subsection.13.6.4)] /Names[(subsection.13.6.3) 3149 0 R(subsection.13.6.4) 3173 0 R] >> endobj 5440 0 obj << /Limits[(subsection.13.5.4)(subsection.13.6.4)] /Kids[5436 0 R 5437 0 R 5438 0 R 5439 0 R] >> endobj 5441 0 obj << /Limits[(subsection.13.2.1)(subsection.13.6.4)] /Kids[5425 0 R 5430 0 R 5435 0 R 5440 0 R] >> endobj 5442 0 obj << /Limits[(subsection.13.6.5)(subsection.13.6.5)] /Names[(subsection.13.6.5) 3184 0 R] >> endobj 5443 0 obj << /Limits[(subsection.13.6.6)(subsection.13.6.6)] /Names[(subsection.13.6.6) 3205 0 R] >> endobj 5444 0 obj << /Limits[(subsection.13.7.1)(subsection.13.7.1)] /Names[(subsection.13.7.1) 3254 0 R] >> endobj 5445 0 obj << /Limits[(subsection.13.7.2)(subsection.14.1.1)] /Names[(subsection.13.7.2) 3284 0 R(subsection.14.1.1) 3311 0 R] >> endobj 5446 0 obj << /Limits[(subsection.13.6.5)(subsection.14.1.1)] /Kids[5442 0 R 5443 0 R 5444 0 R 5445 0 R] >> endobj 5447 0 obj << /Limits[(subsection.14.1.2)(subsection.14.1.2)] /Names[(subsection.14.1.2) 3320 0 R] >> endobj 5448 0 obj << /Limits[(subsection.14.1.3)(subsection.14.1.3)] /Names[(subsection.14.1.3) 3323 0 R] >> endobj 5449 0 obj << /Limits[(subsection.14.1.4)(subsection.14.1.4)] /Names[(subsection.14.1.4) 3328 0 R] >> endobj 5450 0 obj << /Limits[(subsection.14.1.5)(subsection.14.1.6)] /Names[(subsection.14.1.5) 3338 0 R(subsection.14.1.6) 3347 0 R] >> endobj 5451 0 obj << /Limits[(subsection.14.1.2)(subsection.14.1.6)] /Kids[5447 0 R 5448 0 R 5449 0 R 5450 0 R] >> endobj 5452 0 obj << /Limits[(subsection.14.1.7)(subsection.14.1.7)] /Names[(subsection.14.1.7) 3353 0 R] >> endobj 5453 0 obj << /Limits[(subsection.14.1.8)(subsection.14.1.8)] /Names[(subsection.14.1.8) 3359 0 R] >> endobj 5454 0 obj << /Limits[(subsection.14.3.1)(subsection.14.3.1)] /Names[(subsection.14.3.1) 3380 0 R] >> endobj 5455 0 obj << /Limits[(subsection.14.3.2)(subsection.14.3.3)] /Names[(subsection.14.3.2) 3389 0 R(subsection.14.3.3) 3404 0 R] >> endobj 5456 0 obj << /Limits[(subsection.14.1.7)(subsection.14.3.3)] /Kids[5452 0 R 5453 0 R 5454 0 R 5455 0 R] >> endobj 5457 0 obj << /Limits[(subsection.2.1.1)(subsection.2.1.1)] /Names[(subsection.2.1.1) 1158 0 R] >> endobj 5458 0 obj << /Limits[(subsection.2.1.2)(subsection.3.4.1)] /Names[(subsection.2.1.2) 1159 0 R(subsection.3.4.1) 1290 0 R] >> endobj 5459 0 obj << /Limits[(subsection.3.4.2)(subsection.3.4.2)] /Names[(subsection.3.4.2) 1292 0 R] >> endobj 5460 0 obj << /Limits[(subsection.3.4.3)(subsection.3.4.4)] /Names[(subsection.3.4.3) 1299 0 R(subsection.3.4.4) 1313 0 R] >> endobj 5461 0 obj << /Limits[(subsection.2.1.1)(subsection.3.4.4)] /Kids[5457 0 R 5458 0 R 5459 0 R 5460 0 R] >> endobj 5462 0 obj << /Limits[(subsection.13.6.5)(subsection.3.4.4)] /Kids[5446 0 R 5451 0 R 5456 0 R 5461 0 R] >> endobj 5463 0 obj << /Limits[(subsection.3.4.5)(subsection.3.4.5)] /Names[(subsection.3.4.5) 1324 0 R] >> endobj 5464 0 obj << /Limits[(subsection.3.5.1)(subsection.3.5.1)] /Names[(subsection.3.5.1) 1331 0 R] >> endobj 5465 0 obj << /Limits[(subsection.3.5.2)(subsection.3.5.2)] /Names[(subsection.3.5.2) 1334 0 R] >> endobj 5466 0 obj << /Limits[(subsection.3.5.3)(subsection.3.5.4)] /Names[(subsection.3.5.3) 1341 0 R(subsection.3.5.4) 1347 0 R] >> endobj 5467 0 obj << /Limits[(subsection.3.4.5)(subsection.3.5.4)] /Kids[5463 0 R 5464 0 R 5465 0 R 5466 0 R] >> endobj 5468 0 obj << /Limits[(subsection.4.14.1)(subsection.4.14.1)] /Names[(subsection.4.14.1) 1436 0 R] >> endobj 5469 0 obj << /Limits[(subsection.6.3.1)(subsection.6.3.1)] /Names[(subsection.6.3.1) 1579 0 R] >> endobj 5470 0 obj << /Limits[(subsection.6.3.2)(subsection.6.3.2)] /Names[(subsection.6.3.2) 1580 0 R] >> endobj 5471 0 obj << /Limits[(subsection.7.5.1)(subsection.8.11.1)] /Names[(subsection.7.5.1) 1652 0 R(subsection.8.11.1) 1757 0 R] >> endobj 5472 0 obj << /Limits[(subsection.4.14.1)(subsection.8.11.1)] /Kids[5468 0 R 5469 0 R 5470 0 R 5471 0 R] >> endobj 5473 0 obj << /Limits[(subsection.8.11.2)(subsection.8.11.2)] /Names[(subsection.8.11.2) 1758 0 R] >> endobj 5474 0 obj << /Limits[(subsection.8.11.3)(subsection.8.11.3)] /Names[(subsection.8.11.3) 1764 0 R] >> endobj 5475 0 obj << /Limits[(subsection.8.12.1)(subsection.8.12.1)] /Names[(subsection.8.12.1) 1772 0 R] >> endobj 5476 0 obj << /Limits[(subsection.8.12.2)(subsection.8.5.1)] /Names[(subsection.8.12.2) 1780 0 R(subsection.8.5.1) 1700 0 R] >> endobj 5477 0 obj << /Limits[(subsection.8.11.2)(subsection.8.5.1)] /Kids[5473 0 R 5474 0 R 5475 0 R 5476 0 R] >> endobj 5478 0 obj << /Limits[(subsection.8.5.2)(subsection.8.5.2)] /Names[(subsection.8.5.2) 1707 0 R] >> endobj 5479 0 obj << /Limits[(subsection.8.5.3)(subsection.8.6.1)] /Names[(subsection.8.5.3) 1708 0 R(subsection.8.6.1) 1727 0 R] >> endobj 5480 0 obj << /Limits[(subsection.8.6.2)(subsection.8.6.2)] /Names[(subsection.8.6.2) 1734 0 R] >> endobj 5481 0 obj << /Limits[(subsection.9.2.1)(subsection.9.2.10)] /Names[(subsection.9.2.1) 1844 0 R(subsection.9.2.10) 1879 0 R] >> endobj 5482 0 obj << /Limits[(subsection.8.5.2)(subsection.9.2.10)] /Kids[5478 0 R 5479 0 R 5480 0 R 5481 0 R] >> endobj 5483 0 obj << /Limits[(subsection.3.4.5)(subsection.9.2.10)] /Kids[5467 0 R 5472 0 R 5477 0 R 5482 0 R] >> endobj 5484 0 obj << /Limits[(subsection.9.2.11)(subsection.9.2.11)] /Names[(subsection.9.2.11) 1887 0 R] >> endobj 5485 0 obj << /Limits[(subsection.9.2.12)(subsection.9.2.12)] /Names[(subsection.9.2.12) 1889 0 R] >> endobj 5486 0 obj << /Limits[(subsection.9.2.13)(subsection.9.2.13)] /Names[(subsection.9.2.13) 1896 0 R] >> endobj 5487 0 obj << /Limits[(subsection.9.2.14)(subsection.9.2.15)] /Names[(subsection.9.2.14) 1898 0 R(subsection.9.2.15) 1900 0 R] >> endobj 5488 0 obj << /Limits[(subsection.9.2.11)(subsection.9.2.15)] /Kids[5484 0 R 5485 0 R 5486 0 R 5487 0 R] >> endobj 5489 0 obj << /Limits[(subsection.9.2.16)(subsection.9.2.16)] /Names[(subsection.9.2.16) 1907 0 R] >> endobj 5490 0 obj << /Limits[(subsection.9.2.17)(subsection.9.2.17)] /Names[(subsection.9.2.17) 1909 0 R] >> endobj 5491 0 obj << /Limits[(subsection.9.2.2)(subsection.9.2.2)] /Names[(subsection.9.2.2) 1846 0 R] >> endobj 5492 0 obj << /Limits[(subsection.9.2.3)(subsection.9.2.4)] /Names[(subsection.9.2.3) 1848 0 R(subsection.9.2.4) 1850 0 R] >> endobj 5493 0 obj << /Limits[(subsection.9.2.16)(subsection.9.2.4)] /Kids[5489 0 R 5490 0 R 5491 0 R 5492 0 R] >> endobj 5494 0 obj << /Limits[(subsection.9.2.5)(subsection.9.2.5)] /Names[(subsection.9.2.5) 1857 0 R] >> endobj 5495 0 obj << /Limits[(subsection.9.2.6)(subsection.9.2.6)] /Names[(subsection.9.2.6) 1859 0 R] >> endobj 5496 0 obj << /Limits[(subsection.9.2.7)(subsection.9.2.7)] /Names[(subsection.9.2.7) 1867 0 R] >> endobj 5497 0 obj << /Limits[(subsection.9.2.8)(subsection.9.2.9)] /Names[(subsection.9.2.8) 1874 0 R(subsection.9.2.9) 1877 0 R] >> endobj 5498 0 obj << /Limits[(subsection.9.2.5)(subsection.9.2.9)] /Kids[5494 0 R 5495 0 R 5496 0 R 5497 0 R] >> endobj 5499 0 obj << /Limits[(subsection.9.3.1)(subsection.9.3.1)] /Names[(subsection.9.3.1) 1912 0 R] >> endobj 5500 0 obj << /Limits[(subsection.9.3.10)(subsection.9.3.11)] /Names[(subsection.9.3.10) 1945 0 R(subsection.9.3.11) 1947 0 R] >> endobj 5501 0 obj << /Limits[(subsection.9.3.12)(subsection.9.3.12)] /Names[(subsection.9.3.12) 1949 0 R] >> endobj 5502 0 obj << /Limits[(subsection.9.3.13)(subsection.9.3.14)] /Names[(subsection.9.3.13) 1951 0 R(subsection.9.3.14) 1953 0 R] >> endobj 5503 0 obj << /Limits[(subsection.9.3.1)(subsection.9.3.14)] /Kids[5499 0 R 5500 0 R 5501 0 R 5502 0 R] >> endobj 5504 0 obj << /Limits[(subsection.9.2.11)(subsection.9.3.14)] /Kids[5488 0 R 5493 0 R 5498 0 R 5503 0 R] >> endobj 5505 0 obj << /Limits[(subsection.13.2.1)(subsection.9.3.14)] /Kids[5441 0 R 5462 0 R 5483 0 R 5504 0 R] >> endobj 5506 0 obj << /Limits[(subsection.9.3.15)(subsection.9.3.15)] /Names[(subsection.9.3.15) 1965 0 R] >> endobj 5507 0 obj << /Limits[(subsection.9.3.16)(subsection.9.3.16)] /Names[(subsection.9.3.16) 1968 0 R] >> endobj 5508 0 obj << /Limits[(subsection.9.3.17)(subsection.9.3.17)] /Names[(subsection.9.3.17) 1970 0 R] >> endobj 5509 0 obj << /Limits[(subsection.9.3.18)(subsection.9.3.19)] /Names[(subsection.9.3.18) 1977 0 R(subsection.9.3.19) 1979 0 R] >> endobj 5510 0 obj << /Limits[(subsection.9.3.15)(subsection.9.3.19)] /Kids[5506 0 R 5507 0 R 5508 0 R 5509 0 R] >> endobj 5511 0 obj << /Limits[(subsection.9.3.2)(subsection.9.3.2)] /Names[(subsection.9.3.2) 1919 0 R] >> endobj 5512 0 obj << /Limits[(subsection.9.3.20)(subsection.9.3.20)] /Names[(subsection.9.3.20) 1981 0 R] >> endobj 5513 0 obj << /Limits[(subsection.9.3.21)(subsection.9.3.21)] /Names[(subsection.9.3.21) 1983 0 R] >> endobj 5514 0 obj << /Limits[(subsection.9.3.22)(subsection.9.3.23)] /Names[(subsection.9.3.22) 1990 0 R(subsection.9.3.23) 1992 0 R] >> endobj 5515 0 obj << /Limits[(subsection.9.3.2)(subsection.9.3.23)] /Kids[5511 0 R 5512 0 R 5513 0 R 5514 0 R] >> endobj 5516 0 obj << /Limits[(subsection.9.3.24)(subsection.9.3.24)] /Names[(subsection.9.3.24) 1994 0 R] >> endobj 5517 0 obj << /Limits[(subsection.9.3.25)(subsection.9.3.25)] /Names[(subsection.9.3.25) 1996 0 R] >> endobj 5518 0 obj << /Limits[(subsection.9.3.26)(subsection.9.3.26)] /Names[(subsection.9.3.26) 1998 0 R] >> endobj 5519 0 obj << /Limits[(subsection.9.3.27)(subsection.9.3.28)] /Names[(subsection.9.3.27) 2005 0 R(subsection.9.3.28) 2007 0 R] >> endobj 5520 0 obj << /Limits[(subsection.9.3.24)(subsection.9.3.28)] /Kids[5516 0 R 5517 0 R 5518 0 R 5519 0 R] >> endobj 5521 0 obj << /Limits[(subsection.9.3.29)(subsection.9.3.29)] /Names[(subsection.9.3.29) 2009 0 R] >> endobj 5522 0 obj << /Limits[(subsection.9.3.3)(subsection.9.3.30)] /Names[(subsection.9.3.3) 1921 0 R(subsection.9.3.30) 2011 0 R] >> endobj 5523 0 obj << /Limits[(subsection.9.3.31)(subsection.9.3.31)] /Names[(subsection.9.3.31) 2018 0 R] >> endobj 5524 0 obj << /Limits[(subsection.9.3.32)(subsection.9.3.33)] /Names[(subsection.9.3.32) 2020 0 R(subsection.9.3.33) 2022 0 R] >> endobj 5525 0 obj << /Limits[(subsection.9.3.29)(subsection.9.3.33)] /Kids[5521 0 R 5522 0 R 5523 0 R 5524 0 R] >> endobj 5526 0 obj << /Limits[(subsection.9.3.15)(subsection.9.3.33)] /Kids[5510 0 R 5515 0 R 5520 0 R 5525 0 R] >> endobj 5527 0 obj << /Limits[(subsection.9.3.34)(subsection.9.3.34)] /Names[(subsection.9.3.34) 2024 0 R] >> endobj 5528 0 obj << /Limits[(subsection.9.3.35)(subsection.9.3.35)] /Names[(subsection.9.3.35) 2031 0 R] >> endobj 5529 0 obj << /Limits[(subsection.9.3.36)(subsection.9.3.36)] /Names[(subsection.9.3.36) 2033 0 R] >> endobj 5530 0 obj << /Limits[(subsection.9.3.37)(subsection.9.3.38)] /Names[(subsection.9.3.37) 2035 0 R(subsection.9.3.38) 2037 0 R] >> endobj 5531 0 obj << /Limits[(subsection.9.3.34)(subsection.9.3.38)] /Kids[5527 0 R 5528 0 R 5529 0 R 5530 0 R] >> endobj 5532 0 obj << /Limits[(subsection.9.3.39)(subsection.9.3.39)] /Names[(subsection.9.3.39) 2039 0 R] >> endobj 5533 0 obj << /Limits[(subsection.9.3.4)(subsection.9.3.4)] /Names[(subsection.9.3.4) 1923 0 R] >> endobj 5534 0 obj << /Limits[(subsection.9.3.40)(subsection.9.3.40)] /Names[(subsection.9.3.40) 2046 0 R] >> endobj 5535 0 obj << /Limits[(subsection.9.3.41)(subsection.9.3.42)] /Names[(subsection.9.3.41) 2048 0 R(subsection.9.3.42) 2052 0 R] >> endobj 5536 0 obj << /Limits[(subsection.9.3.39)(subsection.9.3.42)] /Kids[5532 0 R 5533 0 R 5534 0 R 5535 0 R] >> endobj 5537 0 obj << /Limits[(subsection.9.3.43)(subsection.9.3.43)] /Names[(subsection.9.3.43) 2062 0 R] >> endobj 5538 0 obj << /Limits[(subsection.9.3.44)(subsection.9.3.44)] /Names[(subsection.9.3.44) 2070 0 R] >> endobj 5539 0 obj << /Limits[(subsection.9.3.5)(subsection.9.3.5)] /Names[(subsection.9.3.5) 1925 0 R] >> endobj 5540 0 obj << /Limits[(subsection.9.3.6)(subsection.9.3.7)] /Names[(subsection.9.3.6) 1932 0 R(subsection.9.3.7) 1934 0 R] >> endobj 5541 0 obj << /Limits[(subsection.9.3.43)(subsection.9.3.7)] /Kids[5537 0 R 5538 0 R 5539 0 R 5540 0 R] >> endobj 5542 0 obj << /Limits[(subsection.9.3.8)(subsection.9.3.8)] /Names[(subsection.9.3.8) 1936 0 R] >> endobj 5543 0 obj << /Limits[(subsection.9.3.9)(subsection.9.4.1)] /Names[(subsection.9.3.9) 1938 0 R(subsection.9.4.1) 2074 0 R] >> endobj 5544 0 obj << /Limits[(subsection.9.4.2)(subsection.9.4.2)] /Names[(subsection.9.4.2) 2076 0 R] >> endobj 5545 0 obj << /Limits[(subsection.9.4.3)(subsection.9.4.4)] /Names[(subsection.9.4.3) 2078 0 R(subsection.9.4.4) 2099 0 R] >> endobj 5546 0 obj << /Limits[(subsection.9.3.8)(subsection.9.4.4)] /Kids[5542 0 R 5543 0 R 5544 0 R 5545 0 R] >> endobj 5547 0 obj << /Limits[(subsection.9.3.34)(subsection.9.4.4)] /Kids[5531 0 R 5536 0 R 5541 0 R 5546 0 R] >> endobj 5548 0 obj << /Limits[(subsection.9.5.1)(subsection.9.5.1)] /Names[(subsection.9.5.1) 2110 0 R] >> endobj 5549 0 obj << /Limits[(subsection.9.5.2)(subsection.9.5.2)] /Names[(subsection.9.5.2) 2117 0 R] >> endobj 5550 0 obj << /Limits[(subsection.9.5.3)(subsection.9.5.3)] /Names[(subsection.9.5.3) 2119 0 R] >> endobj 5551 0 obj << /Limits[(subsection.9.5.4)(subsection.9.6.1)] /Names[(subsection.9.5.4) 2121 0 R(subsection.9.6.1) 2132 0 R] >> endobj 5552 0 obj << /Limits[(subsection.9.5.1)(subsection.9.6.1)] /Kids[5548 0 R 5549 0 R 5550 0 R 5551 0 R] >> endobj 5553 0 obj << /Limits[(subsection.9.7.1)(subsection.9.7.1)] /Names[(subsection.9.7.1) 2136 0 R] >> endobj 5554 0 obj << /Limits[(subsection.9.7.2)(subsection.9.7.2)] /Names[(subsection.9.7.2) 2144 0 R] >> endobj 5555 0 obj << /Limits[(subsection.9.7.3)(subsection.9.7.3)] /Names[(subsection.9.7.3) 2145 0 R] >> endobj 5556 0 obj << /Limits[(subsection.9.7.4)(subsection.A.2.1)] /Names[(subsection.9.7.4) 2147 0 R(subsection.A.2.1) 3440 0 R] >> endobj 5557 0 obj << /Limits[(subsection.9.7.1)(subsection.A.2.1)] /Kids[5553 0 R 5554 0 R 5555 0 R 5556 0 R] >> endobj 5558 0 obj << /Limits[(subsection.A.2.10)(subsection.A.2.10)] /Names[(subsection.A.2.10) 3462 0 R] >> endobj 5559 0 obj << /Limits[(subsection.A.2.11)(subsection.A.2.11)] /Names[(subsection.A.2.11) 3463 0 R] >> endobj 5560 0 obj << /Limits[(subsection.A.2.12)(subsection.A.2.12)] /Names[(subsection.A.2.12) 3464 0 R] >> endobj 5561 0 obj << /Limits[(subsection.A.2.2)(subsection.A.2.3)] /Names[(subsection.A.2.2) 3441 0 R(subsection.A.2.3) 3447 0 R] >> endobj 5562 0 obj << /Limits[(subsection.A.2.10)(subsection.A.2.3)] /Kids[5558 0 R 5559 0 R 5560 0 R 5561 0 R] >> endobj 5563 0 obj << /Limits[(subsection.A.2.4)(subsection.A.2.4)] /Names[(subsection.A.2.4) 3448 0 R] >> endobj 5564 0 obj << /Limits[(subsection.A.2.5)(subsection.A.2.6)] /Names[(subsection.A.2.5) 3449 0 R(subsection.A.2.6) 3450 0 R] >> endobj 5565 0 obj << /Limits[(subsection.A.2.7)(subsection.A.2.7)] /Names[(subsection.A.2.7) 3451 0 R] >> endobj 5566 0 obj << /Limits[(subsection.A.2.8)(subsection.A.2.9)] /Names[(subsection.A.2.8) 3452 0 R(subsection.A.2.9) 3453 0 R] >> endobj 5567 0 obj << /Limits[(subsection.A.2.4)(subsection.A.2.9)] /Kids[5563 0 R 5564 0 R 5565 0 R 5566 0 R] >> endobj 5568 0 obj << /Limits[(subsection.9.5.1)(subsection.A.2.9)] /Kids[5552 0 R 5557 0 R 5562 0 R 5567 0 R] >> endobj 5569 0 obj << /Limits[(subsection.A.3.1)(subsection.A.3.1)] /Names[(subsection.A.3.1) 3472 0 R] >> endobj 5570 0 obj << /Limits[(subsection.A.3.10)(subsection.A.3.10)] /Names[(subsection.A.3.10) 3486 0 R] >> endobj 5571 0 obj << /Limits[(subsection.A.3.11)(subsection.A.3.11)] /Names[(subsection.A.3.11) 3492 0 R] >> endobj 5572 0 obj << /Limits[(subsection.A.3.12)(subsection.A.3.13)] /Names[(subsection.A.3.12) 3493 0 R(subsection.A.3.13) 3494 0 R] >> endobj 5573 0 obj << /Limits[(subsection.A.3.1)(subsection.A.3.13)] /Kids[5569 0 R 5570 0 R 5571 0 R 5572 0 R] >> endobj 5574 0 obj << /Limits[(subsection.A.3.14)(subsection.A.3.14)] /Names[(subsection.A.3.14) 3495 0 R] >> endobj 5575 0 obj << /Limits[(subsection.A.3.15)(subsection.A.3.15)] /Names[(subsection.A.3.15) 3496 0 R] >> endobj 5576 0 obj << /Limits[(subsection.A.3.16)(subsection.A.3.16)] /Names[(subsection.A.3.16) 3497 0 R] >> endobj 5577 0 obj << /Limits[(subsection.A.3.17)(subsection.A.3.18)] /Names[(subsection.A.3.17) 3503 0 R(subsection.A.3.18) 3504 0 R] >> endobj 5578 0 obj << /Limits[(subsection.A.3.14)(subsection.A.3.18)] /Kids[5574 0 R 5575 0 R 5576 0 R 5577 0 R] >> endobj 5579 0 obj << /Limits[(subsection.A.3.19)(subsection.A.3.19)] /Names[(subsection.A.3.19) 3505 0 R] >> endobj 5580 0 obj << /Limits[(subsection.A.3.2)(subsection.A.3.2)] /Names[(subsection.A.3.2) 3473 0 R] >> endobj 5581 0 obj << /Limits[(subsection.A.3.20)(subsection.A.3.20)] /Names[(subsection.A.3.20) 3506 0 R] >> endobj 5582 0 obj << /Limits[(subsection.A.3.21)(subsection.A.3.3)] /Names[(subsection.A.3.21) 3507 0 R(subsection.A.3.3) 3474 0 R] >> endobj 5583 0 obj << /Limits[(subsection.A.3.19)(subsection.A.3.3)] /Kids[5579 0 R 5580 0 R 5581 0 R 5582 0 R] >> endobj 5584 0 obj << /Limits[(subsection.A.3.4)(subsection.A.3.4)] /Names[(subsection.A.3.4) 3475 0 R] >> endobj 5585 0 obj << /Limits[(subsection.A.3.5)(subsection.A.3.6)] /Names[(subsection.A.3.5) 3481 0 R(subsection.A.3.6) 3482 0 R] >> endobj 5586 0 obj << /Limits[(subsection.A.3.7)(subsection.A.3.7)] /Names[(subsection.A.3.7) 3483 0 R] >> endobj 5587 0 obj << /Limits[(subsection.A.3.8)(subsection.A.3.9)] /Names[(subsection.A.3.8) 3484 0 R(subsection.A.3.9) 3485 0 R] >> endobj 5588 0 obj << /Limits[(subsection.A.3.4)(subsection.A.3.9)] /Kids[5584 0 R 5585 0 R 5586 0 R 5587 0 R] >> endobj 5589 0 obj << /Limits[(subsection.A.3.1)(subsection.A.3.9)] /Kids[5573 0 R 5578 0 R 5583 0 R 5588 0 R] >> endobj 5590 0 obj << /Limits[(subsection.9.3.15)(subsection.A.3.9)] /Kids[5526 0 R 5547 0 R 5568 0 R 5589 0 R] >> endobj 5591 0 obj << /Limits[(subsection.A.5.1)(subsection.A.5.1)] /Names[(subsection.A.5.1) 3510 0 R] >> endobj 5592 0 obj << /Limits[(subsection.A.5.2)(subsection.A.5.2)] /Names[(subsection.A.5.2) 3516 0 R] >> endobj 5593 0 obj << /Limits[(subsection.A.6.1)(subsection.A.6.1)] /Names[(subsection.A.6.1) 3518 0 R] >> endobj 5594 0 obj << /Limits[(subsection.B.1.1)(subsection.B.1.2)] /Names[(subsection.B.1.1) 3541 0 R(subsection.B.1.2) 3542 0 R] >> endobj 5595 0 obj << /Limits[(subsection.A.5.1)(subsection.B.1.2)] /Kids[5591 0 R 5592 0 R 5593 0 R 5594 0 R] >> endobj 5596 0 obj << /Limits[(subsection.B.1.3)(subsection.B.1.3)] /Names[(subsection.B.1.3) 3548 0 R] >> endobj 5597 0 obj << /Limits[(subsection.B.1.4)(subsection.B.1.4)] /Names[(subsection.B.1.4) 3549 0 R] >> endobj 5598 0 obj << /Limits[(subsection.B.1.5)(subsection.B.1.5)] /Names[(subsection.B.1.5) 3555 0 R] >> endobj 5599 0 obj << /Limits[(subsection.B.1.6)(subsection.B.2.1)] /Names[(subsection.B.1.6) 3556 0 R(subsection.B.2.1) 3563 0 R] >> endobj 5600 0 obj << /Limits[(subsection.B.1.3)(subsection.B.2.1)] /Kids[5596 0 R 5597 0 R 5598 0 R 5599 0 R] >> endobj 5601 0 obj << /Limits[(subsection.B.2.2)(subsection.B.2.2)] /Names[(subsection.B.2.2) 3571 0 R] >> endobj 5602 0 obj << /Limits[(subsubsection.10.10.1.1)(subsubsection.10.10.1.1)] /Names[(subsubsection.10.10.1.1) 2518 0 R] >> endobj 5603 0 obj << /Limits[(subsubsection.10.3.6.1)(subsubsection.10.3.6.1)] /Names[(subsubsection.10.3.6.1) 2265 0 R] >> endobj 5604 0 obj << /Limits[(subsubsection.13.5.1.1)(subsubsection.13.5.1.2)] /Names[(subsubsection.13.5.1.1) 2969 0 R(subsubsection.13.5.1.2) 2980 0 R] >> endobj 5605 0 obj << /Limits[(subsection.B.2.2)(subsubsection.13.5.1.2)] /Kids[5601 0 R 5602 0 R 5603 0 R 5604 0 R] >> endobj 5606 0 obj << /Limits[(subsubsection.13.5.3.1)(subsubsection.13.5.3.1)] /Names[(subsubsection.13.5.3.1) 3028 0 R] >> endobj 5607 0 obj << /Limits[(subsubsection.13.5.4.1)(subsubsection.13.5.4.2)] /Names[(subsubsection.13.5.4.1) 3037 0 R(subsubsection.13.5.4.2) 3045 0 R] >> endobj 5608 0 obj << /Limits[(subsubsection.13.5.4.3)(subsubsection.13.5.4.3)] /Names[(subsubsection.13.5.4.3) 3048 0 R] >> endobj 5609 0 obj << /Limits[(subsubsection.13.5.4.4)(subsubsection.13.5.4.5)] /Names[(subsubsection.13.5.4.4) 3057 0 R(subsubsection.13.5.4.5) 3061 0 R] >> endobj 5610 0 obj << /Limits[(subsubsection.13.5.3.1)(subsubsection.13.5.4.5)] /Kids[5606 0 R 5607 0 R 5608 0 R 5609 0 R] >> endobj 5611 0 obj << /Limits[(subsection.A.5.1)(subsubsection.13.5.4.5)] /Kids[5595 0 R 5600 0 R 5605 0 R 5610 0 R] >> endobj 5612 0 obj << /Limits[(subsubsection.13.5.4.6)(subsubsection.13.5.4.6)] /Names[(subsubsection.13.5.4.6) 3063 0 R] >> endobj 5613 0 obj << /Limits[(subsubsection.13.5.4.7)(subsubsection.13.5.4.7)] /Names[(subsubsection.13.5.4.7) 3065 0 R] >> endobj 5614 0 obj << /Limits[(subsubsection.13.5.4.8)(subsubsection.13.5.4.8)] /Names[(subsubsection.13.5.4.8) 3072 0 R] >> endobj 5615 0 obj << /Limits[(subsubsection.13.5.4.9)(subsubsection.13.6.5.1)] /Names[(subsubsection.13.5.4.9) 3075 0 R(subsubsection.13.6.5.1) 3187 0 R] >> endobj 5616 0 obj << /Limits[(subsubsection.13.5.4.6)(subsubsection.13.6.5.1)] /Kids[5612 0 R 5613 0 R 5614 0 R 5615 0 R] >> endobj 5617 0 obj << /Limits[(subsubsection.13.6.5.2)(subsubsection.13.6.5.2)] /Names[(subsubsection.13.6.5.2) 3199 0 R] >> endobj 5618 0 obj << /Limits[(subsubsection.13.6.6.1)(subsubsection.13.6.6.1)] /Names[(subsubsection.13.6.6.1) 3218 0 R] >> endobj 5619 0 obj << /Limits[(subsubsection.13.6.6.2)(subsubsection.13.6.6.2)] /Names[(subsubsection.13.6.6.2) 3220 0 R] >> endobj 5620 0 obj << /Limits[(subsubsection.13.6.6.3)(subsubsection.13.6.6.4)] /Names[(subsubsection.13.6.6.3) 3227 0 R(subsubsection.13.6.6.4) 3229 0 R] >> endobj 5621 0 obj << /Limits[(subsubsection.13.6.5.2)(subsubsection.13.6.6.4)] /Kids[5617 0 R 5618 0 R 5619 0 R 5620 0 R] >> endobj 5622 0 obj << /Limits[(subsubsection.13.6.6.5)(subsubsection.13.6.6.5)] /Names[(subsubsection.13.6.6.5) 3231 0 R] >> endobj 5623 0 obj << /Limits[(subsubsection.13.6.6.6)(subsubsection.13.6.6.6)] /Names[(subsubsection.13.6.6.6) 3239 0 R] >> endobj 5624 0 obj << /Limits[(subsubsection.13.6.6.7)(subsubsection.13.6.6.7)] /Names[(subsubsection.13.6.6.7) 3242 0 R] >> endobj 5625 0 obj << /Limits[(subsubsection.13.7.2.1)(subsubsection.13.7.2.2)] /Names[(subsubsection.13.7.2.1) 3288 0 R(subsubsection.13.7.2.2) 3296 0 R] >> endobj 5626 0 obj << /Limits[(subsubsection.13.6.6.5)(subsubsection.13.7.2.2)] /Kids[5622 0 R 5623 0 R 5624 0 R 5625 0 R] >> endobj 5627 0 obj << /Limits[(subsubsection.13.7.2.3)(subsubsection.13.7.2.3)] /Names[(subsubsection.13.7.2.3) 3299 0 R] >> endobj 5628 0 obj << /Limits[(subsubsection.13.7.2.4)(subsubsection.4.14.1.1)] /Names[(subsubsection.13.7.2.4) 3301 0 R(subsubsection.4.14.1.1) 1445 0 R] >> endobj 5629 0 obj << /Limits[(subsubsection.4.14.1.2)(subsubsection.4.14.1.2)] /Names[(subsubsection.4.14.1.2) 1446 0 R] >> endobj 5630 0 obj << /Limits[(subsubsection.B.2.1.1)(subsubsection.B.2.2.1)] /Names[(subsubsection.B.2.1.1) 3569 0 R(subsubsection.B.2.2.1) 3583 0 R] >> endobj 5631 0 obj << /Limits[(subsubsection.13.7.2.3)(subsubsection.B.2.2.1)] /Kids[5627 0 R 5628 0 R 5629 0 R 5630 0 R] >> endobj 5632 0 obj << /Limits[(subsubsection.13.5.4.6)(subsubsection.B.2.2.1)] /Kids[5616 0 R 5621 0 R 5626 0 R 5631 0 R] >> endobj 5633 0 obj << /Limits[(subsubsection.B.2.2.2)(subsubsection.B.2.2.2)] /Names[(subsubsection.B.2.2.2) 3606 0 R] >> endobj 5634 0 obj << /Limits[(subsubsection.B.2.2.3)(subsubsection.B.2.2.3)] /Names[(subsubsection.B.2.2.3) 3608 0 R] >> endobj 5635 0 obj << /Limits[(subsubsection.B.2.2.4)(subsubsection.B.2.2.4)] /Names[(subsubsection.B.2.2.4) 3616 0 R] >> endobj 5636 0 obj << /Limits[(subsubsection.B.2.2.5)(subsubsection.B.2.2.6)] /Names[(subsubsection.B.2.2.5) 3624 0 R(subsubsection.B.2.2.6) 3641 0 R] >> endobj 5637 0 obj << /Limits[(subsubsection.B.2.2.2)(subsubsection.B.2.2.6)] /Kids[5633 0 R 5634 0 R 5635 0 R 5636 0 R] >> endobj 5638 0 obj << /Limits[(var:ABORT_ON_COMMAND_ERROR)(var:ABORT_ON_COMMAND_ERROR)] /Names[(var:ABORT_ON_COMMAND_ERROR) 2941 0 R] >> endobj 5639 0 obj << /Limits[(var:ABORT_ON_DEPENDENCY_ERRORS)(var:ABORT_ON_DEPENDENCY_ERRORS)] /Names[(var:ABORT_ON_DEPENDENCY_ERRORS) 3183 0 R] >> endobj 5640 0 obj << /Limits[(var:AR)(var:AR)] /Names[(var:AR) 3014 0 R] >> endobj 5641 0 obj << /Limits[(var:AS)(var:ASFLAGS)] /Names[(var:AS) 3003 0 R(var:ASFLAGS) 3005 0 R] >> endobj 5642 0 obj << /Limits[(var:ABORT_ON_COMMAND_ERROR)(var:ASFLAGS)] /Kids[5638 0 R 5639 0 R 5640 0 R 5641 0 R] >> endobj 5643 0 obj << /Limits[(var:ASOUT)(var:ASOUT)] /Names[(var:ASOUT) 3012 0 R] >> endobj 5644 0 obj << /Limits[(var:BIBTEX)(var:BIBTEX)] /Names[(var:BIBTEX) 3262 0 R] >> endobj 5645 0 obj << /Limits[(var:BUILD_SUMMARY)(var:BUILD_SUMMARY)] /Names[(var:BUILD_SUMMARY) 1835 0 R] >> endobj 5646 0 obj << /Limits[(var:BYTE_ENABLED)(var:CAMLP4)] /Names[(var:BYTE_ENABLED) 3144 0 R(var:CAMLP4) 3107 0 R] >> endobj 5647 0 obj << /Limits[(var:ASOUT)(var:CAMLP4)] /Kids[5643 0 R 5644 0 R 5645 0 R 5646 0 R] >> endobj 5648 0 obj << /Limits[(var:CC)(var:CC)] /Names[(var:CC) 2987 0 R] >> endobj 5649 0 obj << /Limits[(var:CCOUT)(var:CDLL_IMPLIES_STATIC)] /Names[(var:CCOUT) 3001 0 R(var:CDLL_IMPLIES_STATIC) 3044 0 R] >> endobj 5650 0 obj << /Limits[(var:CFLAGS)(var:CFLAGS)] /Names[(var:CFLAGS) 2993 0 R] >> endobj 5651 0 obj << /Limits[(var:CL_FOUND)(var:CPP)] /Names[(var:CL_FOUND) 2982 0 R(var:CPP) 2991 0 R] >> endobj 5652 0 obj << /Limits[(var:CC)(var:CPP)] /Kids[5648 0 R 5649 0 R 5650 0 R 5651 0 R] >> endobj 5653 0 obj << /Limits[(subsubsection.B.2.2.2)(var:CPP)] /Kids[5637 0 R 5642 0 R 5647 0 R 5652 0 R] >> endobj 5654 0 obj << /Limits[(var:CWD)(var:CWD)] /Names[(var:CWD) 2935 0 R] >> endobj 5655 0 obj << /Limits[(var:CXX)(var:CXX)] /Names[(var:CXX) 2989 0 R] >> endobj 5656 0 obj << /Limits[(var:CXXFLAGS)(var:CXXFLAGS)] /Names[(var:CXXFLAGS) 2995 0 R] >> endobj 5657 0 obj << /Limits[(var:DIRSEP)(var:DVIPDFM)] /Names[(var:DIRSEP) 2955 0 R(var:DVIPDFM) 3270 0 R] >> endobj 5658 0 obj << /Limits[(var:CWD)(var:DVIPDFM)] /Kids[5654 0 R 5655 0 R 5656 0 R 5657 0 R] >> endobj 5659 0 obj << /Limits[(var:DVIPDFMFLAGS)(var:DVIPDFMFLAGS)] /Names[(var:DVIPDFMFLAGS) 3272 0 R] >> endobj 5660 0 obj << /Limits[(var:DVIPS)(var:DVIPS)] /Names[(var:DVIPS) 3266 0 R] >> endobj 5661 0 obj << /Limits[(var:DVIPSFLAGS)(var:DVIPSFLAGS)] /Names[(var:DVIPSFLAGS) 3268 0 R] >> endobj 5662 0 obj << /Limits[(var:EMPTY)(var:EXE)] /Names[(var:EMPTY) 2937 0 R(var:EXE) 2965 0 R] >> endobj 5663 0 obj << /Limits[(var:DVIPDFMFLAGS)(var:EXE)] /Kids[5659 0 R 5660 0 R 5661 0 R 5662 0 R] >> endobj 5664 0 obj << /Limits[(var:EXT_ASM)(var:EXT_ASM)] /Names[(var:EXT_ASM) 2963 0 R] >> endobj 5665 0 obj << /Limits[(var:EXT_DLL)(var:EXT_DLL)] /Names[(var:EXT_DLL) 2961 0 R] >> endobj 5666 0 obj << /Limits[(var:EXT_LIB)(var:EXT_LIB)] /Names[(var:EXT_LIB) 2959 0 R] >> endobj 5667 0 obj << /Limits[(var:EXT_OBJ)(var:GCC_FOUND)] /Names[(var:EXT_OBJ) 2957 0 R(var:GCC_FOUND) 2971 0 R] >> endobj 5668 0 obj << /Limits[(var:EXT_ASM)(var:GCC_FOUND)] /Kids[5664 0 R 5665 0 R 5666 0 R 5667 0 R] >> endobj 5669 0 obj << /Limits[(var:GXX_FOUND)(var:GXX_FOUND)] /Names[(var:GXX_FOUND) 2979 0 R] >> endobj 5670 0 obj << /Limits[(var:HOME)(var:HOST)] /Names[(var:HOME) 1829 0 R(var:HOST) 1825 0 R] >> endobj 5671 0 obj << /Limits[(var:INCLUDES)(var:INCLUDES)] /Names[(var:INCLUDES) 2997 0 R] >> endobj 5672 0 obj << /Limits[(var:INSTALL)(var:LATEX)] /Names[(var:INSTALL) 2946 0 R(var:LATEX) 3256 0 R] >> endobj 5673 0 obj << /Limits[(var:GXX_FOUND)(var:LATEX)] /Kids[5669 0 R 5670 0 R 5671 0 R 5672 0 R] >> endobj 5674 0 obj << /Limits[(var:CWD)(var:LATEX)] /Kids[5658 0 R 5663 0 R 5668 0 R 5673 0 R] >> endobj 5675 0 obj << /Limits[(subsection.A.5.1)(var:LATEX)] /Kids[5611 0 R 5632 0 R 5653 0 R 5674 0 R] >> endobj 5676 0 obj << /Limits[(var:LATEXFLAGS)(var:LATEXFLAGS)] /Names[(var:LATEXFLAGS) 3260 0 R] >> endobj 5677 0 obj << /Limits[(var:LD)(var:LD)] /Names[(var:LD) 3016 0 R] >> endobj 5678 0 obj << /Limits[(var:LDFLAGS)(var:LDFLAGS)] /Names[(var:LDFLAGS) 3018 0 R] >> endobj 5679 0 obj << /Limits[(var:LDFLAGS_DLL)(var:LDOUT)] /Names[(var:LDFLAGS_DLL) 3020 0 R(var:LDOUT) 3022 0 R] >> endobj 5680 0 obj << /Limits[(var:LATEXFLAGS)(var:LDOUT)] /Kids[5676 0 R 5677 0 R 5678 0 R 5679 0 R] >> endobj 5681 0 obj << /Limits[(var:LEX)(var:LEX)] /Names[(var:LEX) 3026 0 R] >> endobj 5682 0 obj << /Limits[(var:LIBS)(var:LIBS)] /Names[(var:LIBS) 2999 0 R] >> endobj 5683 0 obj << /Limits[(var:LIB_FOUND)(var:LIB_FOUND)] /Names[(var:LIB_FOUND) 2984 0 R] >> endobj 5684 0 obj << /Limits[(var:MACHINE)(var:MAKEINDEX)] /Names[(var:MACHINE) 1823 0 R(var:MAKEINDEX) 3264 0 R] >> endobj 5685 0 obj << /Limits[(var:LEX)(var:MAKEINDEX)] /Kids[5681 0 R 5682 0 R 5683 0 R 5684 0 R] >> endobj 5686 0 obj << /Limits[(var:MENHIR_AVAILABLE)(var:MENHIR_AVAILABLE)] /Names[(var:MENHIR_AVAILABLE) 3092 0 R] >> endobj 5687 0 obj << /Limits[(var:MENHIR_ENABLED)(var:MENHIR_ENABLED)] /Names[(var:MENHIR_ENABLED) 3148 0 R] >> endobj 5688 0 obj << /Limits[(var:MENHIR_FLAGS)(var:MENHIR_FLAGS)] /Names[(var:MENHIR_FLAGS) 3167 0 R] >> endobj 5689 0 obj << /Limits[(var:NATIVE_ENABLED)(var:NCURSES_AVAILABLE)] /Names[(var:NATIVE_ENABLED) 3146 0 R(var:NCURSES_AVAILABLE) 3382 0 R] >> endobj 5690 0 obj << /Limits[(var:MENHIR_AVAILABLE)(var:NCURSES_AVAILABLE)] /Kids[5686 0 R 5687 0 R 5688 0 R 5689 0 R] >> endobj 5691 0 obj << /Limits[(var:NCURSES_CFLAGS)(var:NCURSES_CFLAGS)] /Names[(var:NCURSES_CFLAGS) 3386 0 R] >> endobj 5692 0 obj << /Limits[(var:NCURSES_CLIBS)(var:NCURSES_TERMH_IN_NCURSES)] /Names[(var:NCURSES_CLIBS) 3388 0 R(var:NCURSES_TERMH_IN_NCURSES) 3384 0 R] >> endobj 5693 0 obj << /Limits[(var:NODENAME)(var:NODENAME)] /Names[(var:NODENAME) 1813 0 R] >> endobj 5694 0 obj << /Limits[(var:OCAMLC)(var:OCAMLCFLAGS)] /Names[(var:OCAMLC) 3103 0 R(var:OCAMLCFLAGS) 3155 0 R] >> endobj 5695 0 obj << /Limits[(var:NCURSES_CFLAGS)(var:OCAMLCFLAGS)] /Kids[5691 0 R 5692 0 R 5693 0 R 5694 0 R] >> endobj 5696 0 obj << /Limits[(var:LATEXFLAGS)(var:OCAMLCFLAGS)] /Kids[5680 0 R 5685 0 R 5690 0 R 5695 0 R] >> endobj 5697 0 obj << /Limits[(var:OCAMLDEP)(var:OCAMLDEP)] /Names[(var:OCAMLDEP) 3117 0 R] >> endobj 5698 0 obj << /Limits[(var:OCAMLDEPFLAGS)(var:OCAMLDEPFLAGS)] /Names[(var:OCAMLDEPFLAGS) 3151 0 R] >> endobj 5699 0 obj << /Limits[(var:OCAMLDEP_MODULES)(var:OCAMLDEP_MODULES)] /Names[(var:OCAMLDEP_MODULES) 3119 0 R] >> endobj 5700 0 obj << /Limits[(var:OCAMLDEP_MODULES_AVAILABLE)(var:OCAMLDEP_MODULES_ENABLED)] /Names[(var:OCAMLDEP_MODULES_AVAILABLE) 3090 0 R(var:OCAMLDEP_MODULES_ENABLED) 3121 0 R] >> endobj 5701 0 obj << /Limits[(var:OCAMLDEP)(var:OCAMLDEP_MODULES_ENABLED)] /Kids[5697 0 R 5698 0 R 5699 0 R 5700 0 R] >> endobj 5702 0 obj << /Limits[(var:OCAMLFIND)(var:OCAMLFIND)] /Names[(var:OCAMLFIND) 3138 0 R] >> endobj 5703 0 obj << /Limits[(var:OCAMLFINDFLAGS)(var:OCAMLFINDFLAGS)] /Names[(var:OCAMLFINDFLAGS) 3140 0 R] >> endobj 5704 0 obj << /Limits[(var:OCAMLFIND_EXISTS)(var:OCAMLFIND_EXISTS)] /Names[(var:OCAMLFIND_EXISTS) 3088 0 R] >> endobj 5705 0 obj << /Limits[(var:OCAMLFLAGS)(var:OCAMLINCLUDES)] /Names[(var:OCAMLFLAGS) 3159 0 R(var:OCAMLINCLUDES) 3130 0 R] >> endobj 5706 0 obj << /Limits[(var:OCAMLFIND)(var:OCAMLINCLUDES)] /Kids[5702 0 R 5703 0 R 5704 0 R 5705 0 R] >> endobj 5707 0 obj << /Limits[(var:OCAMLLEX)(var:OCAMLLEX)] /Names[(var:OCAMLLEX) 3109 0 R] >> endobj 5708 0 obj << /Limits[(var:OCAMLLEXFLAGS)(var:OCAMLLEXFLAGS)] /Names[(var:OCAMLLEXFLAGS) 3111 0 R] >> endobj 5709 0 obj << /Limits[(var:OCAMLLINK)(var:OCAMLLINK)] /Names[(var:OCAMLLINK) 3126 0 R] >> endobj 5710 0 obj << /Limits[(var:OCAMLMKTOP)(var:OCAMLOPT)] /Names[(var:OCAMLMKTOP) 3124 0 R(var:OCAMLOPT) 3105 0 R] >> endobj 5711 0 obj << /Limits[(var:OCAMLLEX)(var:OCAMLOPT)] /Kids[5707 0 R 5708 0 R 5709 0 R 5710 0 R] >> endobj 5712 0 obj << /Limits[(var:OCAMLOPTFLAGS)(var:OCAMLOPTFLAGS)] /Names[(var:OCAMLOPTFLAGS) 3157 0 R] >> endobj 5713 0 obj << /Limits[(var:OCAMLOPTLINK)(var:OCAMLOPT_EXISTS)] /Names[(var:OCAMLOPTLINK) 3128 0 R(var:OCAMLOPT_EXISTS) 3086 0 R] >> endobj 5714 0 obj << /Limits[(var:OCAMLPACKS)(var:OCAMLPACKS)] /Names[(var:OCAMLPACKS) 3142 0 R] >> endobj 5715 0 obj << /Limits[(var:OCAMLPPFLAGS)(var:OCAMLYACC)] /Names[(var:OCAMLPPFLAGS) 3153 0 R(var:OCAMLYACC) 3113 0 R] >> endobj 5716 0 obj << /Limits[(var:OCAMLOPTFLAGS)(var:OCAMLYACC)] /Kids[5712 0 R 5713 0 R 5714 0 R 5715 0 R] >> endobj 5717 0 obj << /Limits[(var:OCAMLDEP)(var:OCAMLYACC)] /Kids[5701 0 R 5706 0 R 5711 0 R 5716 0 R] >> endobj 5718 0 obj << /Limits[(var:OCAMLYACCFLAGS)(var:OCAMLYACCFLAGS)] /Names[(var:OCAMLYACCFLAGS) 3115 0 R] >> endobj 5719 0 obj << /Limits[(var:OCAML_BYTE_LINK_FLAGS)(var:OCAML_BYTE_LINK_FLAGS)] /Names[(var:OCAML_BYTE_LINK_FLAGS) 3161 0 R] >> endobj 5720 0 obj << /Limits[(var:OCAML_CLIBS)(var:OCAML_CLIBS)] /Names[(var:OCAML_CLIBS) 3179 0 R] >> endobj 5721 0 obj << /Limits[(var:OCAML_LIBS)(var:OCAML_LIB_FLAGS)] /Names[(var:OCAML_LIBS) 3175 0 R(var:OCAML_LIB_FLAGS) 3181 0 R] >> endobj 5722 0 obj << /Limits[(var:OCAMLYACCFLAGS)(var:OCAML_LIB_FLAGS)] /Kids[5718 0 R 5719 0 R 5720 0 R 5721 0 R] >> endobj 5723 0 obj << /Limits[(var:OCAML_LINK_FLAGS)(var:OCAML_LINK_FLAGS)] /Names[(var:OCAML_LINK_FLAGS) 3165 0 R] >> endobj 5724 0 obj << /Limits[(var:OCAML_NATIVE_LINK_FLAGS)(var:OCAML_NATIVE_LINK_FLAGS)] /Names[(var:OCAML_NATIVE_LINK_FLAGS) 3163 0 R] >> endobj 5725 0 obj << /Limits[(var:OCAML_OTHER_LIBS)(var:OCAML_OTHER_LIBS)] /Names[(var:OCAML_OTHER_LIBS) 3177 0 R] >> endobj 5726 0 obj << /Limits[(var:OMAKEPATH)(var:OMAKE_VERSION)] /Names[(var:OMAKEPATH) 1806 0 R(var:OMAKE_VERSION) 1802 0 R] >> endobj 5727 0 obj << /Limits[(var:OCAML_LINK_FLAGS)(var:OMAKE_VERSION)] /Kids[5723 0 R 5724 0 R 5725 0 R 5726 0 R] >> endobj 5728 0 obj << /Limits[(var:OSTYPE)(var:OSTYPE)] /Names[(var:OSTYPE) 1809 0 R] >> endobj 5729 0 obj << /Limits[(var:OS_VERSION)(var:OS_VERSION)] /Names[(var:OS_VERSION) 1821 0 R] >> endobj 5730 0 obj << /Limits[(var:PATHSEP)(var:PATHSEP)] /Names[(var:PATHSEP) 2953 0 R] >> endobj 5731 0 obj << /Limits[(var:PDFLATEX)(var:PDFLATEXFLAGS)] /Names[(var:PDFLATEX) 3274 0 R(var:PDFLATEXFLAGS) 3276 0 R] >> endobj 5732 0 obj << /Limits[(var:OSTYPE)(var:PDFLATEXFLAGS)] /Kids[5728 0 R 5729 0 R 5730 0 R 5731 0 R] >> endobj 5733 0 obj << /Limits[(var:PID)(var:PID)] /Names[(var:PID) 1831 0 R] >> endobj 5734 0 obj << /Limits[(var:READLINE_AVAILABLE)(var:READLINE_CFLAGS)] /Names[(var:READLINE_AVAILABLE) 3391 0 R(var:READLINE_CFLAGS) 3401 0 R] >> endobj 5735 0 obj << /Limits[(var:READLINE_CLIBS)(var:READLINE_CLIBS)] /Names[(var:READLINE_CLIBS) 3403 0 R] >> endobj 5736 0 obj << /Limits[(var:READLINE_GNU)(var:ROOT)] /Names[(var:READLINE_GNU) 3399 0 R(var:ROOT) 2933 0 R] >> endobj 5737 0 obj << /Limits[(var:PID)(var:ROOT)] /Kids[5733 0 R 5734 0 R 5735 0 R 5736 0 R] >> endobj 5738 0 obj << /Limits[(var:OCAMLYACCFLAGS)(var:ROOT)] /Kids[5722 0 R 5727 0 R 5732 0 R 5737 0 R] >> endobj 5739 0 obj << /Limits[(var:SCANNER_MODE)(var:SCANNER_MODE)] /Names[(var:SCANNER_MODE) 2943 0 R] >> endobj 5740 0 obj << /Limits[(var:SNPRINTF_AVAILABLE)(var:SNPRINTF_AVAILABLE)] /Names[(var:SNPRINTF_AVAILABLE) 3406 0 R] >> endobj 5741 0 obj << /Limits[(var:STDLIB)(var:STDLIB)] /Names[(var:STDLIB) 1804 0 R] >> endobj 5742 0 obj << /Limits[(var:STDROOT)(var:SYSNAME)] /Names[(var:STDROOT) 2939 0 R(var:SYSNAME) 1811 0 R] >> endobj 5743 0 obj << /Limits[(var:SCANNER_MODE)(var:SYSNAME)] /Kids[5739 0 R 5740 0 R 5741 0 R 5742 0 R] >> endobj 5744 0 obj << /Limits[(var:TARGETS)(var:TARGETS)] /Names[(var:TARGETS) 1833 0 R] >> endobj 5745 0 obj << /Limits[(var:TETEX2_ENABLED)(var:TETEX2_ENABLED)] /Names[(var:TETEX2_ENABLED) 3258 0 R] >> endobj 5746 0 obj << /Limits[(var:TEXDEPS)(var:TEXDEPS)] /Names[(var:TEXDEPS) 3293 0 R] >> endobj 5747 0 obj << /Limits[(var:TEXINPUTS)(var:TEXVARS)] /Names[(var:TEXINPUTS) 3291 0 R(var:TEXVARS) 3295 0 R] >> endobj 5748 0 obj << /Limits[(var:TARGETS)(var:TEXVARS)] /Kids[5744 0 R 5745 0 R 5746 0 R 5747 0 R] >> endobj 5749 0 obj << /Limits[(var:USEPDFLATEX)(var:USEPDFLATEX)] /Names[(var:USEPDFLATEX) 3278 0 R] >> endobj 5750 0 obj << /Limits[(var:USER)(var:USER)] /Names[(var:USER) 1827 0 R] >> endobj 5751 0 obj << /Limits[(var:USE_OCAMLFIND)(var:USE_OCAMLFIND)] /Names[(var:USE_OCAMLFIND) 3101 0 R] >> endobj 5752 0 obj << /Limits[(var:VERBOSE)(var:YACC)] /Names[(var:VERBOSE) 1837 0 R(var:YACC) 3024 0 R] >> endobj 5753 0 obj << /Limits[(var:USEPDFLATEX)(var:YACC)] /Kids[5749 0 R 5750 0 R 5751 0 R 5752 0 R] >> endobj 5754 0 obj << /Limits[(var:ignoreeof)(var:ignoreeof)] /Names[(var:ignoreeof) 3429 0 R] >> endobj 5755 0 obj << /Limits[(var:prompt)(var:stderr)] /Names[(var:prompt) 3420 0 R(var:stderr) 2387 0 R] >> endobj 5756 0 obj << /Limits[(var:stdin)(var:stdin)] /Names[(var:stdin) 2377 0 R] >> endobj 5757 0 obj << /Limits[(var:stdout)(while)] /Names[(var:stdout) 2379 0 R(while) 2051 0 R] >> endobj 5758 0 obj << /Limits[(var:ignoreeof)(while)] /Kids[5754 0 R 5755 0 R 5756 0 R 5757 0 R] >> endobj 5759 0 obj << /Limits[(var:SCANNER_MODE)(while)] /Kids[5743 0 R 5748 0 R 5753 0 R 5758 0 R] >> endobj 5760 0 obj << /Limits[(var:LATEXFLAGS)(while)] /Kids[5696 0 R 5717 0 R 5738 0 R 5759 0 R] >> endobj 5761 0 obj << /Limits[(subsection.13.2.1)(while)] /Kids[5505 0 R 5590 0 R 5675 0 R 5760 0 R] >> endobj 5762 0 obj << /Limits[(Doc-Start)(while)] /Kids[4738 0 R 5079 0 R 5420 0 R 5761 0 R] >> endobj 5763 0 obj null endobj 5764 0 obj << /Dests 5762 0 R >> endobj 2 0 obj << /Type/Catalog /OpenAction[5 0 R/Fit] /PageMode/UseOutlines /Pages 3 0 R /Outlines 11 0 R /Threads 5763 0 R /Names 5764 0 R >> endobj 8 0 obj << /Type/Encoding /Differences[24/breve/caron/circumflex/dotaccent/hungarumlaut/ogonek/ring/tilde 39/quotesingle 96/grave 128/bullet/dagger/daggerdbl/ellipsis/emdash/endash/florin/fraction/guilsinglleft/guilsinglright/minus/perthousand/quotedblbase/quotedblleft/quotedblright/quoteleft/quoteright/quotesinglbase/trademark/fi/fl/Lslash/OE/Scaron/Ydieresis/Zcaron/dotlessi/lslash/oe/scaron/zcaron 164/currency 166/brokenbar 168/dieresis/copyright/ordfeminine 172/logicalnot/.notdef/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 9 0 obj << /Type/Font /Subtype/Type1 /Name/ZaDb /BaseFont/ZapfDingbats >> endobj 10 0 obj << /Type/Font /Subtype/Type1 /Name/Helv /BaseFont/Helvetica /Encoding 8 0 R >> endobj xref 0 5765 0000000000 65535 f 0000882960 00000 n 0001065717 00000 n 0000922489 00000 n 0000922701 00000 n 0000883166 00000 n 0000068124 00000 n 0000000009 00000 n 0001065861 00000 n 0001067046 00000 n 0001067127 00000 n 0000923021 00000 n 0000000050 00000 n 0000001661 00000 n 0000000398 00000 n 0000000144 00000 n 0000000269 00000 n 0000000537 00000 n 0000000677 00000 n 0000000807 00000 n 0000000926 00000 n 0000001044 00000 n 0000001172 00000 n 0000001299 00000 n 0000001436 00000 n 0000001564 00000 n 0000003666 00000 n 0000001823 00000 n 0000001937 00000 n 0000002061 00000 n 0000002824 00000 n 0000002189 00000 n 0000002320 00000 n 0000002456 00000 n 0000002584 00000 n 0000002716 00000 n 0000003380 00000 n 0000002987 00000 n 0000003102 00000 n 0000003240 00000 n 0000003549 00000 n 0000005945 00000 n 0000003830 00000 n 0000003930 00000 n 0000004065 00000 n 0000004175 00000 n 0000004309 00000 n 0000004433 00000 n 0000004545 00000 n 0000004663 00000 n 0000004784 00000 n 0000004900 00000 n 0000005013 00000 n 0000005125 00000 n 0000005237 00000 n 0000005695 00000 n 0000005460 00000 n 0000005353 00000 n 0000005588 00000 n 0000005844 00000 n 0000006872 00000 n 0000006110 00000 n 0000006209 00000 n 0000006318 00000 n 0000006429 00000 n 0000006543 00000 n 0000006654 00000 n 0000006774 00000 n 0000008130 00000 n 0000007031 00000 n 0000007137 00000 n 0000007506 00000 n 0000007262 00000 n 0000007372 00000 n 0000007672 00000 n 0000007783 00000 n 0000007909 00000 n 0000008028 00000 n 0000009422 00000 n 0000008291 00000 n 0000008400 00000 n 0000008518 00000 n 0000008643 00000 n 0000008897 00000 n 0000008778 00000 n 0000009054 00000 n 0000009177 00000 n 0000009294 00000 n 0000012489 00000 n 0000009589 00000 n 0000009694 00000 n 0000009820 00000 n 0000009931 00000 n 0000010372 00000 n 0000010047 00000 n 0000010151 00000 n 0000010269 00000 n 0000010776 00000 n 0000010533 00000 n 0000010675 00000 n 0000010932 00000 n 0000011046 00000 n 0000011161 00000 n 0000011276 00000 n 0000011780 00000 n 0000011390 00000 n 0000011515 00000 n 0000011654 00000 n 0000012197 00000 n 0000011939 00000 n 0000012070 00000 n 0000012377 00000 n 0000022665 00000 n 0000012636 00000 n 0000014750 00000 n 0000012747 00000 n 0000012849 00000 n 0000012967 00000 n 0000013083 00000 n 0000013198 00000 n 0000013313 00000 n 0000013439 00000 n 0000013555 00000 n 0000013673 00000 n 0000013790 00000 n 0000013911 00000 n 0000014036 00000 n 0000014156 00000 n 0000014276 00000 n 0000014398 00000 n 0000014524 00000 n 0000014644 00000 n 0000020368 00000 n 0000014940 00000 n 0000015044 00000 n 0000015162 00000 n 0000015281 00000 n 0000015400 00000 n 0000015516 00000 n 0000015640 00000 n 0000015759 00000 n 0000015878 00000 n 0000015999 00000 n 0000016116 00000 n 0000016234 00000 n 0000016354 00000 n 0000016481 00000 n 0000016679 00000 n 0000016815 00000 n 0000016934 00000 n 0000017058 00000 n 0000017183 00000 n 0000017306 00000 n 0000017429 00000 n 0000017554 00000 n 0000017680 00000 n 0000017806 00000 n 0000017935 00000 n 0000018058 00000 n 0000018181 00000 n 0000018306 00000 n 0000018423 00000 n 0000018540 00000 n 0000018666 00000 n 0000018790 00000 n 0000018912 00000 n 0000019032 00000 n 0000019156 00000 n 0000019280 00000 n 0000019406 00000 n 0000019529 00000 n 0000019652 00000 n 0000019772 00000 n 0000019891 00000 n 0000020011 00000 n 0000020130 00000 n 0000020249 00000 n 0000020995 00000 n 0000020536 00000 n 0000020638 00000 n 0000020756 00000 n 0000020885 00000 n 0000021617 00000 n 0000021152 00000 n 0000021254 00000 n 0000021372 00000 n 0000021491 00000 n 0000021877 00000 n 0000021785 00000 n 0000022413 00000 n 0000022045 00000 n 0000022159 00000 n 0000022287 00000 n 0000022559 00000 n 0000038211 00000 n 0000024123 00000 n 0000022820 00000 n 0000022929 00000 n 0000023050 00000 n 0000023166 00000 n 0000023288 00000 n 0000023409 00000 n 0000023531 00000 n 0000023650 00000 n 0000023772 00000 n 0000023893 00000 n 0000024016 00000 n 0000025165 00000 n 0000024268 00000 n 0000024373 00000 n 0000024492 00000 n 0000024612 00000 n 0000024740 00000 n 0000024877 00000 n 0000025026 00000 n 0000026449 00000 n 0000025324 00000 n 0000025468 00000 n 0000025592 00000 n 0000025758 00000 n 0000025923 00000 n 0000026172 00000 n 0000026072 00000 n 0000026334 00000 n 0000026934 00000 n 0000026607 00000 n 0000026711 00000 n 0000026827 00000 n 0000028525 00000 n 0000027108 00000 n 0000027213 00000 n 0000027331 00000 n 0000027456 00000 n 0000027576 00000 n 0000027696 00000 n 0000027814 00000 n 0000027935 00000 n 0000028057 00000 n 0000028176 00000 n 0000028296 00000 n 0000028419 00000 n 0000029064 00000 n 0000028695 00000 n 0000028801 00000 n 0000028938 00000 n 0000029426 00000 n 0000029218 00000 n 0000029322 00000 n 0000033874 00000 n 0000029589 00000 n 0000029706 00000 n 0000029834 00000 n 0000029977 00000 n 0000030096 00000 n 0000030215 00000 n 0000030345 00000 n 0000030464 00000 n 0000030583 00000 n 0000030703 00000 n 0000030822 00000 n 0000030942 00000 n 0000031069 00000 n 0000031187 00000 n 0000031306 00000 n 0000031433 00000 n 0000031570 00000 n 0000031689 00000 n 0000031810 00000 n 0000031931 00000 n 0000032051 00000 n 0000032174 00000 n 0000032293 00000 n 0000032421 00000 n 0000032544 00000 n 0000032673 00000 n 0000032795 00000 n 0000032923 00000 n 0000033044 00000 n 0000033163 00000 n 0000033284 00000 n 0000033405 00000 n 0000033527 00000 n 0000033649 00000 n 0000033768 00000 n 0000034035 00000 n 0000034419 00000 n 0000034162 00000 n 0000034311 00000 n 0000037936 00000 n 0000034592 00000 n 0000034712 00000 n 0000034830 00000 n 0000034949 00000 n 0000035068 00000 n 0000035186 00000 n 0000035307 00000 n 0000035425 00000 n 0000035550 00000 n 0000035670 00000 n 0000035800 00000 n 0000035943 00000 n 0000036085 00000 n 0000036207 00000 n 0000036341 00000 n 0000036472 00000 n 0000036605 00000 n 0000036727 00000 n 0000036861 00000 n 0000036986 00000 n 0000037107 00000 n 0000037241 00000 n 0000037364 00000 n 0000037516 00000 n 0000037644 00000 n 0000037804 00000 n 0000038097 00000 n 0000040843 00000 n 0000038388 00000 n 0000038498 00000 n 0000038615 00000 n 0000038739 00000 n 0000038864 00000 n 0000038982 00000 n 0000039112 00000 n 0000039229 00000 n 0000039568 00000 n 0000039362 00000 n 0000039466 00000 n 0000040421 00000 n 0000039739 00000 n 0000039844 00000 n 0000039961 00000 n 0000040078 00000 n 0000040197 00000 n 0000040316 00000 n 0000040599 00000 n 0000040749 00000 n 0000043785 00000 n 0000043540 00000 n 0000041003 00000 n 0000041109 00000 n 0000041226 00000 n 0000041346 00000 n 0000041463 00000 n 0000041582 00000 n 0000041704 00000 n 0000041823 00000 n 0000041943 00000 n 0000042060 00000 n 0000042179 00000 n 0000042300 00000 n 0000042419 00000 n 0000042538 00000 n 0000042656 00000 n 0000042778 00000 n 0000042902 00000 n 0000043027 00000 n 0000043150 00000 n 0000043274 00000 n 0000043405 00000 n 0000043679 00000 n 0000051932 00000 n 0000043950 00000 n 0000044546 00000 n 0000044067 00000 n 0000044177 00000 n 0000044303 00000 n 0000044429 00000 n 0000045475 00000 n 0000044716 00000 n 0000044867 00000 n 0000044987 00000 n 0000045119 00000 n 0000045252 00000 n 0000045370 00000 n 0000045878 00000 n 0000045653 00000 n 0000045762 00000 n 0000048466 00000 n 0000046276 00000 n 0000046044 00000 n 0000046166 00000 n 0000046442 00000 n 0000046717 00000 n 0000046589 00000 n 0000048058 00000 n 0000046887 00000 n 0000047023 00000 n 0000047181 00000 n 0000047345 00000 n 0000047518 00000 n 0000047645 00000 n 0000047776 00000 n 0000047910 00000 n 0000048230 00000 n 0000050786 00000 n 0000048637 00000 n 0000048786 00000 n 0000048945 00000 n 0000049078 00000 n 0000049529 00000 n 0000049209 00000 n 0000049359 00000 n 0000050490 00000 n 0000049703 00000 n 0000049820 00000 n 0000049951 00000 n 0000050086 00000 n 0000050224 00000 n 0000050355 00000 n 0000050662 00000 n 0000051490 00000 n 0000050953 00000 n 0000051644 00000 n 0000051076 00000 n 0000051194 00000 n 0000051354 00000 n 0000051807 00000 n 0000054051 00000 n 0000053178 00000 n 0000052106 00000 n 0000052236 00000 n 0000052375 00000 n 0000052515 00000 n 0000052659 00000 n 0000052781 00000 n 0000052928 00000 n 0000053069 00000 n 0000053355 00000 n 0000053765 00000 n 0000053492 00000 n 0000053621 00000 n 0000053929 00000 n 0000054568 00000 n 0000054237 00000 n 0000054339 00000 n 0000054455 00000 n 0000060157 00000 n 0000054726 00000 n 0000056284 00000 n 0000054833 00000 n 0000054934 00000 n 0000055049 00000 n 0000055164 00000 n 0000055287 00000 n 0000055414 00000 n 0000055539 00000 n 0000055661 00000 n 0000055789 00000 n 0000055919 00000 n 0000056053 00000 n 0000056182 00000 n 0000059008 00000 n 0000056446 00000 n 0000056547 00000 n 0000056662 00000 n 0000056777 00000 n 0000056892 00000 n 0000057007 00000 n 0000057122 00000 n 0000057237 00000 n 0000057358 00000 n 0000057482 00000 n 0000057612 00000 n 0000057736 00000 n 0000057852 00000 n 0000057986 00000 n 0000058119 00000 n 0000058251 00000 n 0000058387 00000 n 0000058510 00000 n 0000058637 00000 n 0000058766 00000 n 0000058889 00000 n 0000059169 00000 n 0000059511 00000 n 0000059295 00000 n 0000059404 00000 n 0000059774 00000 n 0000059679 00000 n 0000059930 00000 n 0000060055 00000 n 0000062678 00000 n 0000061051 00000 n 0000060310 00000 n 0000060417 00000 n 0000060548 00000 n 0000060672 00000 n 0000060804 00000 n 0000060936 00000 n 0000062404 00000 n 0000061318 00000 n 0000061209 00000 n 0000062125 00000 n 0000061467 00000 n 0000061584 00000 n 0000061722 00000 n 0000061877 00000 n 0000062002 00000 n 0000062286 00000 n 0000062568 00000 n 0000922780 00000 n 0000062836 00000 n 0000062938 00000 n 0000063053 00000 n 0000922921 00000 n 0000063182 00000 n 0000063225 00000 n 0000761914 00000 n 0000761726 00000 n 0000064131 00000 n 0000766692 00000 n 0000766504 00000 n 0000065129 00000 n 0000066050 00000 n 0000771894 00000 n 0000771698 00000 n 0000066958 00000 n 0000922599 00000 n 0000067764 00000 n 0000922650 00000 n 0000068065 00000 n 0000883273 00000 n 0000069319 00000 n 0000068186 00000 n 0000774383 00000 n 0000774193 00000 n 0000068231 00000 n 0000069152 00000 n 0000069284 00000 n 0000883384 00000 n 0000077150 00000 n 0000069383 00000 n 0000792486 00000 n 0000792295 00000 n 0000069428 00000 n 0000070378 00000 n 0000805186 00000 n 0000804994 00000 n 0000070423 00000 n 0000071363 00000 n 0000071502 00000 n 0000071641 00000 n 0000071782 00000 n 0000071928 00000 n 0000072074 00000 n 0000072215 00000 n 0000072356 00000 n 0000072497 00000 n 0000072638 00000 n 0000072779 00000 n 0000072920 00000 n 0000073060 00000 n 0000073200 00000 n 0000073342 00000 n 0000073480 00000 n 0000073621 00000 n 0000073762 00000 n 0000073903 00000 n 0000074043 00000 n 0000074189 00000 n 0000074334 00000 n 0000074480 00000 n 0000074626 00000 n 0000074772 00000 n 0000074913 00000 n 0000075059 00000 n 0000075205 00000 n 0000075350 00000 n 0000075494 00000 n 0000076840 00000 n 0000077091 00000 n 0000883602 00000 n 0000086317 00000 n 0000077214 00000 n 0000819472 00000 n 0000819277 00000 n 0000077259 00000 n 0000078183 00000 n 0000078322 00000 n 0000078463 00000 n 0000078602 00000 n 0000078742 00000 n 0000078882 00000 n 0000079023 00000 n 0000079163 00000 n 0000079304 00000 n 0000079444 00000 n 0000079585 00000 n 0000079727 00000 n 0000079869 00000 n 0000080011 00000 n 0000080152 00000 n 0000080294 00000 n 0000080439 00000 n 0000080591 00000 n 0000080743 00000 n 0000080885 00000 n 0000081023 00000 n 0000081164 00000 n 0000081303 00000 n 0000081444 00000 n 0000081585 00000 n 0000081726 00000 n 0000081866 00000 n 0000082007 00000 n 0000082146 00000 n 0000082287 00000 n 0000082428 00000 n 0000082569 00000 n 0000082714 00000 n 0000082859 00000 n 0000083000 00000 n 0000083141 00000 n 0000083282 00000 n 0000083422 00000 n 0000083559 00000 n 0000083700 00000 n 0000083841 00000 n 0000083982 00000 n 0000084123 00000 n 0000084264 00000 n 0000085895 00000 n 0000086258 00000 n 0000883729 00000 n 0000096561 00000 n 0000086381 00000 n 0000086426 00000 n 0000086572 00000 n 0000086713 00000 n 0000086854 00000 n 0000086994 00000 n 0000087133 00000 n 0000087274 00000 n 0000087415 00000 n 0000087556 00000 n 0000087696 00000 n 0000087836 00000 n 0000087982 00000 n 0000088128 00000 n 0000088273 00000 n 0000828562 00000 n 0000828374 00000 n 0000089251 00000 n 0000089998 00000 n 0000090139 00000 n 0000090285 00000 n 0000090431 00000 n 0000090572 00000 n 0000090713 00000 n 0000090854 00000 n 0000090996 00000 n 0000091137 00000 n 0000091284 00000 n 0000091431 00000 n 0000091578 00000 n 0000091720 00000 n 0000091867 00000 n 0000092014 00000 n 0000092155 00000 n 0000092293 00000 n 0000092434 00000 n 0000092575 00000 n 0000092718 00000 n 0000092863 00000 n 0000093009 00000 n 0000093155 00000 n 0000093301 00000 n 0000093447 00000 n 0000093593 00000 n 0000093739 00000 n 0000093885 00000 n 0000094031 00000 n 0000094178 00000 n 0000094325 00000 n 0000094471 00000 n 0000096119 00000 n 0000096490 00000 n 0000883856 00000 n 0000105152 00000 n 0000096625 00000 n 0000096670 00000 n 0000096817 00000 n 0000096964 00000 n 0000097111 00000 n 0000097257 00000 n 0000097398 00000 n 0000097544 00000 n 0000097689 00000 n 0000097834 00000 n 0000097980 00000 n 0000098126 00000 n 0000098272 00000 n 0000098418 00000 n 0000098563 00000 n 0000098709 00000 n 0000098856 00000 n 0000099002 00000 n 0000099148 00000 n 0000099295 00000 n 0000099442 00000 n 0000099589 00000 n 0000099736 00000 n 0000099883 00000 n 0000100030 00000 n 0000100177 00000 n 0000100324 00000 n 0000100470 00000 n 0000100617 00000 n 0000100764 00000 n 0000100911 00000 n 0000101058 00000 n 0000101205 00000 n 0000101352 00000 n 0000101499 00000 n 0000101646 00000 n 0000101793 00000 n 0000101940 00000 n 0000102087 00000 n 0000102234 00000 n 0000102381 00000 n 0000102528 00000 n 0000102675 00000 n 0000102822 00000 n 0000102969 00000 n 0000103116 00000 n 0000103262 00000 n 0000103408 00000 n 0000104718 00000 n 0000105105 00000 n 0000883983 00000 n 0000113616 00000 n 0000105216 00000 n 0000105261 00000 n 0000105408 00000 n 0000105554 00000 n 0000105701 00000 n 0000105848 00000 n 0000105989 00000 n 0000106135 00000 n 0000106281 00000 n 0000106427 00000 n 0000106573 00000 n 0000106714 00000 n 0000106860 00000 n 0000107006 00000 n 0000107152 00000 n 0000107298 00000 n 0000107436 00000 n 0000107582 00000 n 0000107723 00000 n 0000107869 00000 n 0000108015 00000 n 0000108161 00000 n 0000108307 00000 n 0000108447 00000 n 0000108588 00000 n 0000108734 00000 n 0000108880 00000 n 0000109027 00000 n 0000109173 00000 n 0000109319 00000 n 0000109465 00000 n 0000109611 00000 n 0000109757 00000 n 0000109902 00000 n 0000110048 00000 n 0000110195 00000 n 0000110336 00000 n 0000110482 00000 n 0000110627 00000 n 0000110773 00000 n 0000110919 00000 n 0000111065 00000 n 0000111211 00000 n 0000111357 00000 n 0000111497 00000 n 0000111643 00000 n 0000111789 00000 n 0000113178 00000 n 0000113557 00000 n 0000884211 00000 n 0000122389 00000 n 0000113680 00000 n 0000113725 00000 n 0000113872 00000 n 0000114019 00000 n 0000114166 00000 n 0000114312 00000 n 0000114464 00000 n 0000114611 00000 n 0000114752 00000 n 0000114898 00000 n 0000115044 00000 n 0000115191 00000 n 0000115333 00000 n 0000115480 00000 n 0000115626 00000 n 0000115773 00000 n 0000115919 00000 n 0000116066 00000 n 0000116212 00000 n 0000116359 00000 n 0000116506 00000 n 0000116653 00000 n 0000116801 00000 n 0000116949 00000 n 0000117097 00000 n 0000117238 00000 n 0000117385 00000 n 0000117531 00000 n 0000117678 00000 n 0000117820 00000 n 0000117967 00000 n 0000118114 00000 n 0000118256 00000 n 0000118403 00000 n 0000118549 00000 n 0000118695 00000 n 0000118842 00000 n 0000118989 00000 n 0000119135 00000 n 0000119282 00000 n 0000119429 00000 n 0000119576 00000 n 0000119724 00000 n 0000119869 00000 n 0000120017 00000 n 0000120165 00000 n 0000120312 00000 n 0000120458 00000 n 0000121955 00000 n 0000122342 00000 n 0000884338 00000 n 0000131173 00000 n 0000122453 00000 n 0000122498 00000 n 0000122646 00000 n 0000122794 00000 n 0000122942 00000 n 0000123089 00000 n 0000123237 00000 n 0000123385 00000 n 0000123533 00000 n 0000123680 00000 n 0000123828 00000 n 0000123976 00000 n 0000124124 00000 n 0000124272 00000 n 0000124419 00000 n 0000124567 00000 n 0000124715 00000 n 0000124862 00000 n 0000125009 00000 n 0000125157 00000 n 0000125305 00000 n 0000125453 00000 n 0000125595 00000 n 0000125738 00000 n 0000125886 00000 n 0000126038 00000 n 0000126180 00000 n 0000126327 00000 n 0000126475 00000 n 0000126622 00000 n 0000126770 00000 n 0000126918 00000 n 0000127066 00000 n 0000127214 00000 n 0000127361 00000 n 0000127509 00000 n 0000127657 00000 n 0000127805 00000 n 0000127953 00000 n 0000128102 00000 n 0000128251 00000 n 0000128400 00000 n 0000128549 00000 n 0000128695 00000 n 0000128844 00000 n 0000128993 00000 n 0000129141 00000 n 0000129289 00000 n 0000130739 00000 n 0000131126 00000 n 0000884465 00000 n 0000139545 00000 n 0000131237 00000 n 0000131282 00000 n 0000131431 00000 n 0000131580 00000 n 0000131728 00000 n 0000131877 00000 n 0000132025 00000 n 0000132171 00000 n 0000132311 00000 n 0000132453 00000 n 0000132594 00000 n 0000132735 00000 n 0000132877 00000 n 0000133019 00000 n 0000133157 00000 n 0000133299 00000 n 0000133441 00000 n 0000133583 00000 n 0000133729 00000 n 0000133876 00000 n 0000134019 00000 n 0000134165 00000 n 0000134312 00000 n 0000134460 00000 n 0000134608 00000 n 0000134756 00000 n 0000134904 00000 n 0000135047 00000 n 0000135195 00000 n 0000135335 00000 n 0000135477 00000 n 0000135624 00000 n 0000135771 00000 n 0000135918 00000 n 0000136065 00000 n 0000136212 00000 n 0000136358 00000 n 0000136505 00000 n 0000136649 00000 n 0000136796 00000 n 0000136944 00000 n 0000137092 00000 n 0000137239 00000 n 0000137387 00000 n 0000137535 00000 n 0000137682 00000 n 0000139115 00000 n 0000139486 00000 n 0000884592 00000 n 0000148278 00000 n 0000139609 00000 n 0000139654 00000 n 0000139802 00000 n 0000139950 00000 n 0000140098 00000 n 0000140246 00000 n 0000140394 00000 n 0000140542 00000 n 0000140690 00000 n 0000140830 00000 n 0000140971 00000 n 0000141112 00000 n 0000141259 00000 n 0000141406 00000 n 0000141553 00000 n 0000141700 00000 n 0000141842 00000 n 0000141989 00000 n 0000142136 00000 n 0000142283 00000 n 0000142430 00000 n 0000142577 00000 n 0000142721 00000 n 0000142860 00000 n 0000143004 00000 n 0000143151 00000 n 0000143293 00000 n 0000143439 00000 n 0000143591 00000 n 0000143743 00000 n 0000143890 00000 n 0000144037 00000 n 0000144189 00000 n 0000144335 00000 n 0000144486 00000 n 0000144638 00000 n 0000144790 00000 n 0000144942 00000 n 0000145094 00000 n 0000145246 00000 n 0000145398 00000 n 0000145550 00000 n 0000145702 00000 n 0000145854 00000 n 0000146006 00000 n 0000146157 00000 n 0000146308 00000 n 0000147840 00000 n 0000148219 00000 n 0000884820 00000 n 0000158099 00000 n 0000148342 00000 n 0000148387 00000 n 0000148529 00000 n 0000148675 00000 n 0000148822 00000 n 0000148969 00000 n 0000149115 00000 n 0000149262 00000 n 0000149414 00000 n 0000149566 00000 n 0000149718 00000 n 0000149870 00000 n 0000150016 00000 n 0000150169 00000 n 0000150322 00000 n 0000150475 00000 n 0000150628 00000 n 0000150781 00000 n 0000150934 00000 n 0000844902 00000 n 0000844712 00000 n 0000151087 00000 n 0000152057 00000 n 0000152200 00000 n 0000152348 00000 n 0000152496 00000 n 0000152649 00000 n 0000152802 00000 n 0000152955 00000 n 0000153108 00000 n 0000153248 00000 n 0000153391 00000 n 0000153539 00000 n 0000153687 00000 n 0000153834 00000 n 0000153982 00000 n 0000154130 00000 n 0000154278 00000 n 0000154425 00000 n 0000154573 00000 n 0000154716 00000 n 0000154859 00000 n 0000155007 00000 n 0000155155 00000 n 0000155303 00000 n 0000155444 00000 n 0000155587 00000 n 0000155729 00000 n 0000155872 00000 n 0000157609 00000 n 0000158014 00000 n 0000884949 00000 n 0000166617 00000 n 0000158164 00000 n 0000158211 00000 n 0000158351 00000 n 0000158490 00000 n 0000158632 00000 n 0000158779 00000 n 0000158926 00000 n 0000159073 00000 n 0000159220 00000 n 0000159367 00000 n 0000159514 00000 n 0000159661 00000 n 0000159807 00000 n 0000159954 00000 n 0000160102 00000 n 0000160247 00000 n 0000160394 00000 n 0000160536 00000 n 0000160683 00000 n 0000160830 00000 n 0000160977 00000 n 0000161124 00000 n 0000161271 00000 n 0000161417 00000 n 0000161564 00000 n 0000161711 00000 n 0000161858 00000 n 0000162005 00000 n 0000162153 00000 n 0000162301 00000 n 0000162448 00000 n 0000162596 00000 n 0000162744 00000 n 0000162892 00000 n 0000163039 00000 n 0000163186 00000 n 0000163334 00000 n 0000163482 00000 n 0000163626 00000 n 0000163768 00000 n 0000163910 00000 n 0000164057 00000 n 0000164203 00000 n 0000164345 00000 n 0000164492 00000 n 0000164634 00000 n 0000164774 00000 n 0000166120 00000 n 0000166545 00000 n 0000885080 00000 n 0000171545 00000 n 0000166683 00000 n 0000166730 00000 n 0000166871 00000 n 0000167013 00000 n 0000167160 00000 n 0000167307 00000 n 0000167454 00000 n 0000167601 00000 n 0000167748 00000 n 0000167895 00000 n 0000168037 00000 n 0000168184 00000 n 0000168336 00000 n 0000168482 00000 n 0000168634 00000 n 0000168786 00000 n 0000168938 00000 n 0000169089 00000 n 0000169240 00000 n 0000169391 00000 n 0000169533 00000 n 0000169673 00000 n 0000169814 00000 n 0000169956 00000 n 0000170098 00000 n 0000170240 00000 n 0000171249 00000 n 0000171485 00000 n 0000885211 00000 n 0000175798 00000 n 0000171611 00000 n 0000171658 00000 n 0000171705 00000 n 0000171863 00000 n 0000172025 00000 n 0000172190 00000 n 0000172330 00000 n 0000172469 00000 n 0000172608 00000 n 0000172748 00000 n 0000172888 00000 n 0000173028 00000 n 0000173168 00000 n 0000173308 00000 n 0000173449 00000 n 0000173589 00000 n 0000173730 00000 n 0000173871 00000 n 0000174012 00000 n 0000175562 00000 n 0000175726 00000 n 0000885552 00000 n 0000177204 00000 n 0000175864 00000 n 0000175911 00000 n 0000176052 00000 n 0000176193 00000 n 0000176334 00000 n 0000176485 00000 n 0000177076 00000 n 0000177132 00000 n 0000885683 00000 n 0000179327 00000 n 0000177270 00000 n 0000177317 00000 n 0000177364 00000 n 0000177411 00000 n 0000177458 00000 n 0000177505 00000 n 0000179267 00000 n 0000885797 00000 n 0000185356 00000 n 0000179393 00000 n 0000179440 00000 n 0000179487 00000 n 0000847226 00000 n 0000847027 00000 n 0000181105 00000 n 0000182063 00000 n 0000182212 00000 n 0000182355 00000 n 0000182496 00000 n 0000182639 00000 n 0000182781 00000 n 0000182828 00000 n 0000182971 00000 n 0000183114 00000 n 0000185187 00000 n 0000185270 00000 n 0000885928 00000 n 0000188060 00000 n 0000185422 00000 n 0000849393 00000 n 0000849194 00000 n 0000185469 00000 n 0000186456 00000 n 0000187986 00000 n 0000886147 00000 n 0000189643 00000 n 0000188126 00000 n 0000188173 00000 n 0000188220 00000 n 0000188267 00000 n 0000189571 00000 n 0000886261 00000 n 0000191205 00000 n 0000189709 00000 n 0000189756 00000 n 0000191131 00000 n 0000886375 00000 n 0000192204 00000 n 0000191271 00000 n 0000191318 00000 n 0000192144 00000 n 0000886489 00000 n 0000193628 00000 n 0000192270 00000 n 0000192317 00000 n 0000193554 00000 n 0000886708 00000 n 0000195712 00000 n 0000193694 00000 n 0000193741 00000 n 0000193788 00000 n 0000193835 00000 n 0000195640 00000 n 0000886822 00000 n 0000196758 00000 n 0000195778 00000 n 0000195825 00000 n 0000196698 00000 n 0000886936 00000 n 0000198853 00000 n 0000196824 00000 n 0000196871 00000 n 0000196918 00000 n 0000198781 00000 n 0000887050 00000 n 0000201586 00000 n 0000198919 00000 n 0000198966 00000 n 0000199013 00000 n 0000199060 00000 n 0000201486 00000 n 0000887269 00000 n 0000202275 00000 n 0000201652 00000 n 0000201699 00000 n 0000202201 00000 n 0000887383 00000 n 0000204266 00000 n 0000202341 00000 n 0000202388 00000 n 0000202435 00000 n 0000204192 00000 n 0000887497 00000 n 0000206563 00000 n 0000204332 00000 n 0000204379 00000 n 0000204426 00000 n 0000204473 00000 n 0000204520 00000 n 0000206489 00000 n 0000887611 00000 n 0000209344 00000 n 0000206629 00000 n 0000206676 00000 n 0000206723 00000 n 0000206770 00000 n 0000209244 00000 n 0000887936 00000 n 0000210302 00000 n 0000209410 00000 n 0000209457 00000 n 0000210242 00000 n 0000888050 00000 n 0000212075 00000 n 0000210368 00000 n 0000210415 00000 n 0000210462 00000 n 0000211975 00000 n 0000888164 00000 n 0000213160 00000 n 0000212141 00000 n 0000212188 00000 n 0000213100 00000 n 0000888278 00000 n 0000215467 00000 n 0000213226 00000 n 0000213273 00000 n 0000213320 00000 n 0000215381 00000 n 0000888497 00000 n 0000218065 00000 n 0000215533 00000 n 0000215580 00000 n 0000215627 00000 n 0000215674 00000 n 0000215720 00000 n 0000215767 00000 n 0000215909 00000 n 0000215955 00000 n 0000217950 00000 n 0000217979 00000 n 0000888628 00000 n 0000220338 00000 n 0000218131 00000 n 0000218178 00000 n 0000218225 00000 n 0000220252 00000 n 0000888742 00000 n 0000223312 00000 n 0000220404 00000 n 0000220451 00000 n 0000220589 00000 n 0000220735 00000 n 0000223200 00000 n 0000223238 00000 n 0000888873 00000 n 0000224606 00000 n 0000223378 00000 n 0000223425 00000 n 0000223472 00000 n 0000224534 00000 n 0000889092 00000 n 0000225595 00000 n 0000224672 00000 n 0000224719 00000 n 0000225535 00000 n 0000889206 00000 n 0000227719 00000 n 0000225661 00000 n 0000225708 00000 n 0000225755 00000 n 0000225802 00000 n 0000227647 00000 n 0000889320 00000 n 0000230313 00000 n 0000227785 00000 n 0000227832 00000 n 0000227879 00000 n 0000228018 00000 n 0000228155 00000 n 0000228202 00000 n 0000230189 00000 n 0000230227 00000 n 0000889451 00000 n 0000231985 00000 n 0000230379 00000 n 0000230426 00000 n 0000230473 00000 n 0000231913 00000 n 0000889670 00000 n 0000234018 00000 n 0000232051 00000 n 0000232098 00000 n 0000232145 00000 n 0000233932 00000 n 0000889784 00000 n 0000234973 00000 n 0000234084 00000 n 0000234131 00000 n 0000234913 00000 n 0000889898 00000 n 0000235329 00000 n 0000235039 00000 n 0000235086 00000 n 0000235281 00000 n 0000890012 00000 n 0000237081 00000 n 0000235395 00000 n 0000235442 00000 n 0000235489 00000 n 0000235536 00000 n 0000237007 00000 n 0000890337 00000 n 0000238956 00000 n 0000237147 00000 n 0000237194 00000 n 0000237241 00000 n 0000237288 00000 n 0000237335 00000 n 0000238870 00000 n 0000890451 00000 n 0000242798 00000 n 0000239022 00000 n 0000239069 00000 n 0000239116 00000 n 0000859744 00000 n 0000859546 00000 n 0000240072 00000 n 0000241025 00000 n 0000242712 00000 n 0000890565 00000 n 0000245124 00000 n 0000242864 00000 n 0000242911 00000 n 0000242958 00000 n 0000243005 00000 n 0000243148 00000 n 0000243195 00000 n 0000245009 00000 n 0000245038 00000 n 0000890696 00000 n 0000247216 00000 n 0000245190 00000 n 0000245237 00000 n 0000245378 00000 n 0000247127 00000 n 0000247156 00000 n 0000890932 00000 n 0000249200 00000 n 0000247282 00000 n 0000247329 00000 n 0000247376 00000 n 0000247518 00000 n 0000247565 00000 n 0000249085 00000 n 0000249114 00000 n 0000891063 00000 n 0000250634 00000 n 0000249266 00000 n 0000249313 00000 n 0000250574 00000 n 0000891177 00000 n 0000252271 00000 n 0000250700 00000 n 0000250747 00000 n 0000250794 00000 n 0000250841 00000 n 0000252171 00000 n 0000891291 00000 n 0000253915 00000 n 0000252337 00000 n 0000252384 00000 n 0000252431 00000 n 0000252478 00000 n 0000253815 00000 n 0000891510 00000 n 0000256302 00000 n 0000253981 00000 n 0000254028 00000 n 0000254168 00000 n 0000254318 00000 n 0000254466 00000 n 0000254513 00000 n 0000256156 00000 n 0000256203 00000 n 0000891641 00000 n 0000259305 00000 n 0000256368 00000 n 0000256415 00000 n 0000256553 00000 n 0000256691 00000 n 0000256738 00000 n 0000256784 00000 n 0000259181 00000 n 0000259219 00000 n 0000891772 00000 n 0000260946 00000 n 0000259371 00000 n 0000259418 00000 n 0000260886 00000 n 0000891886 00000 n 0000263843 00000 n 0000261012 00000 n 0000261059 00000 n 0000261106 00000 n 0000261253 00000 n 0000261401 00000 n 0000261548 00000 n 0000261695 00000 n 0000261843 00000 n 0000261989 00000 n 0000263671 00000 n 0000263745 00000 n 0000892122 00000 n 0000266863 00000 n 0000263909 00000 n 0000263956 00000 n 0000264103 00000 n 0000264251 00000 n 0000264398 00000 n 0000264545 00000 n 0000264692 00000 n 0000264836 00000 n 0000264978 00000 n 0000265124 00000 n 0000265272 00000 n 0000266648 00000 n 0000266749 00000 n 0000892253 00000 n 0000269875 00000 n 0000266929 00000 n 0000266976 00000 n 0000267124 00000 n 0000267272 00000 n 0000267421 00000 n 0000267569 00000 n 0000267717 00000 n 0000267865 00000 n 0000268013 00000 n 0000268159 00000 n 0000268306 00000 n 0000269688 00000 n 0000269789 00000 n 0000892384 00000 n 0000271171 00000 n 0000269941 00000 n 0000269988 00000 n 0000270136 00000 n 0000270283 00000 n 0000271033 00000 n 0000271071 00000 n 0000892515 00000 n 0000272506 00000 n 0000271237 00000 n 0000271284 00000 n 0000271331 00000 n 0000271378 00000 n 0000272432 00000 n 0000892943 00000 n 0000273791 00000 n 0000272572 00000 n 0000272619 00000 n 0000272666 00000 n 0000272713 00000 n 0000272760 00000 n 0000273719 00000 n 0000893057 00000 n 0000275047 00000 n 0000273857 00000 n 0000273904 00000 n 0000273951 00000 n 0000274961 00000 n 0000893171 00000 n 0000276581 00000 n 0000275113 00000 n 0000275160 00000 n 0000275207 00000 n 0000275254 00000 n 0000275301 00000 n 0000276509 00000 n 0000893285 00000 n 0000278231 00000 n 0000276647 00000 n 0000276694 00000 n 0000276741 00000 n 0000278145 00000 n 0000893504 00000 n 0000278807 00000 n 0000278297 00000 n 0000278344 00000 n 0000278733 00000 n 0000893618 00000 n 0000280485 00000 n 0000278873 00000 n 0000278920 00000 n 0000278967 00000 n 0000279014 00000 n 0000280411 00000 n 0000893732 00000 n 0000282417 00000 n 0000280551 00000 n 0000280598 00000 n 0000282357 00000 n 0000893846 00000 n 0000284388 00000 n 0000282483 00000 n 0000282530 00000 n 0000282574 00000 n 0000284302 00000 n 0000894065 00000 n 0000287272 00000 n 0000284454 00000 n 0000284501 00000 n 0000284548 00000 n 0000284689 00000 n 0000284837 00000 n 0000284980 00000 n 0000285128 00000 n 0000285268 00000 n 0000287109 00000 n 0000287174 00000 n 0000894196 00000 n 0000289186 00000 n 0000287338 00000 n 0000287385 00000 n 0000287432 00000 n 0000287479 00000 n 0000289100 00000 n 0000894310 00000 n 0000291114 00000 n 0000289252 00000 n 0000289299 00000 n 0000291040 00000 n 0000894424 00000 n 0000293171 00000 n 0000291180 00000 n 0000291227 00000 n 0000291368 00000 n 0000291415 00000 n 0000293070 00000 n 0000293099 00000 n 0000894660 00000 n 0000294973 00000 n 0000293237 00000 n 0000293284 00000 n 0000293331 00000 n 0000293378 00000 n 0000294901 00000 n 0000894774 00000 n 0000296364 00000 n 0000295039 00000 n 0000295086 00000 n 0000295133 00000 n 0000296292 00000 n 0000894888 00000 n 0000296727 00000 n 0000296430 00000 n 0000296477 00000 n 0000296679 00000 n 0000895002 00000 n 0000298440 00000 n 0000296793 00000 n 0000296840 00000 n 0000296887 00000 n 0000297026 00000 n 0000297073 00000 n 0000298351 00000 n 0000298380 00000 n 0000895344 00000 n 0000300532 00000 n 0000298506 00000 n 0000298553 00000 n 0000298600 00000 n 0000298741 00000 n 0000300403 00000 n 0000300432 00000 n 0000895475 00000 n 0000302082 00000 n 0000300598 00000 n 0000300645 00000 n 0000300692 00000 n 0000302010 00000 n 0000895589 00000 n 0000304169 00000 n 0000302148 00000 n 0000302195 00000 n 0000302242 00000 n 0000304097 00000 n 0000895703 00000 n 0000306098 00000 n 0000304235 00000 n 0000304282 00000 n 0000304329 00000 n 0000306026 00000 n 0000895922 00000 n 0000308282 00000 n 0000306164 00000 n 0000306211 00000 n 0000306258 00000 n 0000308210 00000 n 0000896036 00000 n 0000309798 00000 n 0000308348 00000 n 0000308395 00000 n 0000309738 00000 n 0000896150 00000 n 0000311577 00000 n 0000309864 00000 n 0000309911 00000 n 0000309958 00000 n 0000311505 00000 n 0000896264 00000 n 0000312961 00000 n 0000311643 00000 n 0000311690 00000 n 0000311737 00000 n 0000312875 00000 n 0000896483 00000 n 0000314565 00000 n 0000313027 00000 n 0000313074 00000 n 0000313121 00000 n 0000314479 00000 n 0000896597 00000 n 0000316199 00000 n 0000314631 00000 n 0000314678 00000 n 0000314725 00000 n 0000316125 00000 n 0000896711 00000 n 0000318268 00000 n 0000316265 00000 n 0000316312 00000 n 0000316359 00000 n 0000316406 00000 n 0000318196 00000 n 0000896825 00000 n 0000320627 00000 n 0000318334 00000 n 0000318381 00000 n 0000318428 00000 n 0000318474 00000 n 0000318621 00000 n 0000318668 00000 n 0000318715 00000 n 0000318762 00000 n 0000318809 00000 n 0000320526 00000 n 0000320555 00000 n 0000897061 00000 n 0000322340 00000 n 0000320693 00000 n 0000320740 00000 n 0000320787 00000 n 0000320834 00000 n 0000322254 00000 n 0000897175 00000 n 0000326796 00000 n 0000322406 00000 n 0000863243 00000 n 0000863045 00000 n 0000322453 00000 n 0000323205 00000 n 0000866838 00000 n 0000866648 00000 n 0000323252 00000 n 0000324260 00000 n 0000326682 00000 n 0000897289 00000 n 0000329212 00000 n 0000326862 00000 n 0000326909 00000 n 0000327055 00000 n 0000327101 00000 n 0000329083 00000 n 0000329112 00000 n 0000897420 00000 n 0000331684 00000 n 0000329278 00000 n 0000329325 00000 n 0000329372 00000 n 0000329519 00000 n 0000329566 00000 n 0000329613 00000 n 0000331570 00000 n 0000331599 00000 n 0000897762 00000 n 0000333603 00000 n 0000331750 00000 n 0000331797 00000 n 0000331844 00000 n 0000331890 00000 n 0000333505 00000 n 0000897876 00000 n 0000336074 00000 n 0000333669 00000 n 0000333716 00000 n 0000333763 00000 n 0000335974 00000 n 0000897990 00000 n 0000337967 00000 n 0000336140 00000 n 0000336187 00000 n 0000336234 00000 n 0000336281 00000 n 0000337867 00000 n 0000898104 00000 n 0000339643 00000 n 0000338033 00000 n 0000338080 00000 n 0000338127 00000 n 0000339543 00000 n 0000898323 00000 n 0000342670 00000 n 0000339709 00000 n 0000339756 00000 n 0000339904 00000 n 0000339948 00000 n 0000339995 00000 n 0000340138 00000 n 0000342532 00000 n 0000342570 00000 n 0000898454 00000 n 0000345800 00000 n 0000342736 00000 n 0000342783 00000 n 0000342830 00000 n 0000342877 00000 n 0000343016 00000 n 0000343157 00000 n 0000343299 00000 n 0000345639 00000 n 0000345686 00000 n 0000898585 00000 n 0000347520 00000 n 0000345866 00000 n 0000345913 00000 n 0000346060 00000 n 0000346204 00000 n 0000347410 00000 n 0000347448 00000 n 0000898716 00000 n 0000350057 00000 n 0000347586 00000 n 0000347633 00000 n 0000347680 00000 n 0000347727 00000 n 0000347774 00000 n 0000347821 00000 n 0000347868 00000 n 0000347915 00000 n 0000347962 00000 n 0000348009 00000 n 0000348150 00000 n 0000348197 00000 n 0000348244 00000 n 0000348291 00000 n 0000348338 00000 n 0000348385 00000 n 0000348432 00000 n 0000349942 00000 n 0000349971 00000 n 0000898952 00000 n 0000352914 00000 n 0000350123 00000 n 0000350170 00000 n 0000350217 00000 n 0000350264 00000 n 0000350311 00000 n 0000350358 00000 n 0000350405 00000 n 0000350452 00000 n 0000350499 00000 n 0000350546 00000 n 0000350593 00000 n 0000350640 00000 n 0000350687 00000 n 0000350734 00000 n 0000350781 00000 n 0000350828 00000 n 0000350875 00000 n 0000350922 00000 n 0000350969 00000 n 0000351016 00000 n 0000351063 00000 n 0000352816 00000 n 0000899066 00000 n 0000354464 00000 n 0000352980 00000 n 0000353027 00000 n 0000353074 00000 n 0000353121 00000 n 0000353168 00000 n 0000353215 00000 n 0000353262 00000 n 0000353309 00000 n 0000353356 00000 n 0000353403 00000 n 0000354392 00000 n 0000899180 00000 n 0000356680 00000 n 0000354530 00000 n 0000354577 00000 n 0000354624 00000 n 0000354671 00000 n 0000354718 00000 n 0000354765 00000 n 0000354812 00000 n 0000356608 00000 n 0000899294 00000 n 0000358541 00000 n 0000356746 00000 n 0000356793 00000 n 0000356840 00000 n 0000356887 00000 n 0000358469 00000 n 0000899513 00000 n 0000361392 00000 n 0000358607 00000 n 0000358654 00000 n 0000358701 00000 n 0000358748 00000 n 0000358892 00000 n 0000358939 00000 n 0000358986 00000 n 0000359033 00000 n 0000359080 00000 n 0000361291 00000 n 0000361320 00000 n 0000899644 00000 n 0000363119 00000 n 0000361458 00000 n 0000361505 00000 n 0000361552 00000 n 0000361599 00000 n 0000361646 00000 n 0000361693 00000 n 0000363047 00000 n 0000899758 00000 n 0000364992 00000 n 0000363185 00000 n 0000363232 00000 n 0000363279 00000 n 0000363326 00000 n 0000363373 00000 n 0000363420 00000 n 0000363467 00000 n 0000363514 00000 n 0000364906 00000 n 0000899872 00000 n 0000366694 00000 n 0000365058 00000 n 0000365105 00000 n 0000365152 00000 n 0000365199 00000 n 0000365246 00000 n 0000365293 00000 n 0000365340 00000 n 0000365387 00000 n 0000365434 00000 n 0000366622 00000 n 0000900197 00000 n 0000368839 00000 n 0000366760 00000 n 0000366807 00000 n 0000366854 00000 n 0000366901 00000 n 0000366948 00000 n 0000366995 00000 n 0000367042 00000 n 0000367088 00000 n 0000367135 00000 n 0000367182 00000 n 0000368767 00000 n 0000900311 00000 n 0000370590 00000 n 0000368905 00000 n 0000368952 00000 n 0000368999 00000 n 0000369046 00000 n 0000369093 00000 n 0000369139 00000 n 0000369186 00000 n 0000369233 00000 n 0000369279 00000 n 0000369326 00000 n 0000370518 00000 n 0000900425 00000 n 0000372822 00000 n 0000370656 00000 n 0000370703 00000 n 0000370750 00000 n 0000370797 00000 n 0000370844 00000 n 0000370891 00000 n 0000370938 00000 n 0000370985 00000 n 0000371032 00000 n 0000371079 00000 n 0000371126 00000 n 0000371173 00000 n 0000371220 00000 n 0000371267 00000 n 0000371314 00000 n 0000371361 00000 n 0000371408 00000 n 0000372750 00000 n 0000900539 00000 n 0000375093 00000 n 0000372888 00000 n 0000372935 00000 n 0000372982 00000 n 0000373029 00000 n 0000373076 00000 n 0000373123 00000 n 0000373170 00000 n 0000373216 00000 n 0000373263 00000 n 0000375021 00000 n 0000900758 00000 n 0000377072 00000 n 0000375159 00000 n 0000375206 00000 n 0000375253 00000 n 0000375300 00000 n 0000375347 00000 n 0000375394 00000 n 0000375441 00000 n 0000375488 00000 n 0000375535 00000 n 0000375582 00000 n 0000377000 00000 n 0000900872 00000 n 0000378874 00000 n 0000377138 00000 n 0000377185 00000 n 0000377232 00000 n 0000377279 00000 n 0000377326 00000 n 0000377372 00000 n 0000377419 00000 n 0000377466 00000 n 0000377513 00000 n 0000377560 00000 n 0000377607 00000 n 0000377654 00000 n 0000378802 00000 n 0000900986 00000 n 0000381016 00000 n 0000378940 00000 n 0000378987 00000 n 0000379034 00000 n 0000379081 00000 n 0000379128 00000 n 0000379174 00000 n 0000379220 00000 n 0000379267 00000 n 0000379314 00000 n 0000379361 00000 n 0000380944 00000 n 0000901100 00000 n 0000383096 00000 n 0000381082 00000 n 0000381129 00000 n 0000381176 00000 n 0000381223 00000 n 0000381270 00000 n 0000381317 00000 n 0000381364 00000 n 0000381411 00000 n 0000381458 00000 n 0000381505 00000 n 0000383024 00000 n 0000901319 00000 n 0000384886 00000 n 0000383162 00000 n 0000383209 00000 n 0000383256 00000 n 0000383303 00000 n 0000383350 00000 n 0000383397 00000 n 0000383444 00000 n 0000383491 00000 n 0000383538 00000 n 0000383584 00000 n 0000383631 00000 n 0000383677 00000 n 0000384814 00000 n 0000901433 00000 n 0000386862 00000 n 0000384952 00000 n 0000384999 00000 n 0000385046 00000 n 0000385093 00000 n 0000385139 00000 n 0000385186 00000 n 0000385328 00000 n 0000385375 00000 n 0000385422 00000 n 0000385469 00000 n 0000386761 00000 n 0000386790 00000 n 0000901564 00000 n 0000388486 00000 n 0000386928 00000 n 0000386975 00000 n 0000387115 00000 n 0000387162 00000 n 0000387209 00000 n 0000387256 00000 n 0000388385 00000 n 0000388414 00000 n 0000901695 00000 n 0000390969 00000 n 0000388552 00000 n 0000388599 00000 n 0000388646 00000 n 0000388693 00000 n 0000388740 00000 n 0000388784 00000 n 0000388831 00000 n 0000388877 00000 n 0000388924 00000 n 0000388971 00000 n 0000389017 00000 n 0000389064 00000 n 0000389111 00000 n 0000389158 00000 n 0000389205 00000 n 0000389252 00000 n 0000389299 00000 n 0000389346 00000 n 0000389393 00000 n 0000389440 00000 n 0000389487 00000 n 0000389534 00000 n 0000389581 00000 n 0000389628 00000 n 0000389675 00000 n 0000389722 00000 n 0000390883 00000 n 0000901914 00000 n 0000392736 00000 n 0000391035 00000 n 0000391082 00000 n 0000391129 00000 n 0000391176 00000 n 0000391223 00000 n 0000391270 00000 n 0000391317 00000 n 0000391364 00000 n 0000391411 00000 n 0000391458 00000 n 0000391505 00000 n 0000391552 00000 n 0000391599 00000 n 0000391646 00000 n 0000391693 00000 n 0000392650 00000 n 0000902028 00000 n 0000394643 00000 n 0000392802 00000 n 0000392849 00000 n 0000392896 00000 n 0000392943 00000 n 0000392990 00000 n 0000393037 00000 n 0000393084 00000 n 0000393131 00000 n 0000393178 00000 n 0000393327 00000 n 0000394542 00000 n 0000394571 00000 n 0000902159 00000 n 0000396330 00000 n 0000394709 00000 n 0000394756 00000 n 0000394803 00000 n 0000394850 00000 n 0000394897 00000 n 0000395037 00000 n 0000395084 00000 n 0000395131 00000 n 0000395178 00000 n 0000396229 00000 n 0000396258 00000 n 0000902290 00000 n 0000397553 00000 n 0000396396 00000 n 0000396443 00000 n 0000396490 00000 n 0000396537 00000 n 0000396584 00000 n 0000396631 00000 n 0000396678 00000 n 0000397481 00000 n 0000902718 00000 n 0000397905 00000 n 0000397619 00000 n 0000397666 00000 n 0000397857 00000 n 0000902832 00000 n 0000399608 00000 n 0000397971 00000 n 0000398018 00000 n 0000398065 00000 n 0000398112 00000 n 0000398159 00000 n 0000398206 00000 n 0000398253 00000 n 0000399548 00000 n 0000902946 00000 n 0000401637 00000 n 0000399674 00000 n 0000399721 00000 n 0000399768 00000 n 0000399815 00000 n 0000399862 00000 n 0000399909 00000 n 0000399956 00000 n 0000400003 00000 n 0000401565 00000 n 0000903060 00000 n 0000403555 00000 n 0000401703 00000 n 0000401750 00000 n 0000401797 00000 n 0000401844 00000 n 0000401891 00000 n 0000401938 00000 n 0000401985 00000 n 0000402032 00000 n 0000402079 00000 n 0000402126 00000 n 0000402173 00000 n 0000402220 00000 n 0000403471 00000 n 0000903279 00000 n 0000405780 00000 n 0000403621 00000 n 0000403668 00000 n 0000403715 00000 n 0000403762 00000 n 0000403809 00000 n 0000403856 00000 n 0000403903 00000 n 0000403949 00000 n 0000403996 00000 n 0000404043 00000 n 0000404090 00000 n 0000404136 00000 n 0000404183 00000 n 0000405708 00000 n 0000903393 00000 n 0000407746 00000 n 0000405846 00000 n 0000405893 00000 n 0000405940 00000 n 0000405987 00000 n 0000406034 00000 n 0000406081 00000 n 0000406128 00000 n 0000406174 00000 n 0000406221 00000 n 0000406268 00000 n 0000406315 00000 n 0000406361 00000 n 0000406407 00000 n 0000407674 00000 n 0000903507 00000 n 0000410254 00000 n 0000407812 00000 n 0000407859 00000 n 0000407906 00000 n 0000407953 00000 n 0000408000 00000 n 0000408047 00000 n 0000408094 00000 n 0000408141 00000 n 0000408188 00000 n 0000408235 00000 n 0000408282 00000 n 0000408329 00000 n 0000408376 00000 n 0000408423 00000 n 0000410142 00000 n 0000903621 00000 n 0000412568 00000 n 0000410320 00000 n 0000410367 00000 n 0000410520 00000 n 0000410567 00000 n 0000410613 00000 n 0000410659 00000 n 0000412467 00000 n 0000412496 00000 n 0000903857 00000 n 0000414846 00000 n 0000412634 00000 n 0000412681 00000 n 0000412728 00000 n 0000412775 00000 n 0000412939 00000 n 0000412986 00000 n 0000413033 00000 n 0000414717 00000 n 0000414746 00000 n 0000903988 00000 n 0000417157 00000 n 0000414912 00000 n 0000414959 00000 n 0000415006 00000 n 0000415053 00000 n 0000415100 00000 n 0000415147 00000 n 0000417045 00000 n 0000904102 00000 n 0000420627 00000 n 0000417223 00000 n 0000875516 00000 n 0000875321 00000 n 0000417270 00000 n 0000418271 00000 n 0000420512 00000 n 0000904216 00000 n 0000422749 00000 n 0000420693 00000 n 0000420740 00000 n 0000420787 00000 n 0000420834 00000 n 0000422665 00000 n 0000904435 00000 n 0000424494 00000 n 0000422815 00000 n 0000422862 00000 n 0000422909 00000 n 0000422956 00000 n 0000423003 00000 n 0000423050 00000 n 0000423097 00000 n 0000423144 00000 n 0000423191 00000 n 0000424410 00000 n 0000904549 00000 n 0000426534 00000 n 0000424560 00000 n 0000424607 00000 n 0000424654 00000 n 0000424701 00000 n 0000424748 00000 n 0000424795 00000 n 0000424842 00000 n 0000426450 00000 n 0000904663 00000 n 0000428249 00000 n 0000426600 00000 n 0000426647 00000 n 0000426694 00000 n 0000426741 00000 n 0000426788 00000 n 0000426834 00000 n 0000428165 00000 n 0000904777 00000 n 0000430107 00000 n 0000428315 00000 n 0000428362 00000 n 0000428409 00000 n 0000428456 00000 n 0000428503 00000 n 0000428550 00000 n 0000428597 00000 n 0000428644 00000 n 0000428691 00000 n 0000428738 00000 n 0000430023 00000 n 0000905102 00000 n 0000431802 00000 n 0000430173 00000 n 0000430220 00000 n 0000430266 00000 n 0000430313 00000 n 0000430360 00000 n 0000430407 00000 n 0000430454 00000 n 0000430501 00000 n 0000430547 00000 n 0000430594 00000 n 0000430641 00000 n 0000431718 00000 n 0000905216 00000 n 0000433931 00000 n 0000431868 00000 n 0000431915 00000 n 0000431962 00000 n 0000432009 00000 n 0000432056 00000 n 0000432103 00000 n 0000432150 00000 n 0000432197 00000 n 0000432244 00000 n 0000433819 00000 n 0000905330 00000 n 0000435267 00000 n 0000433997 00000 n 0000434044 00000 n 0000435179 00000 n 0000905444 00000 n 0000437288 00000 n 0000435333 00000 n 0000435380 00000 n 0000435427 00000 n 0000435474 00000 n 0000435521 00000 n 0000437188 00000 n 0000905663 00000 n 0000439229 00000 n 0000437354 00000 n 0000437401 00000 n 0000437448 00000 n 0000437591 00000 n 0000437638 00000 n 0000437685 00000 n 0000437731 00000 n 0000437777 00000 n 0000437824 00000 n 0000437871 00000 n 0000439088 00000 n 0000439117 00000 n 0000905794 00000 n 0000441131 00000 n 0000439295 00000 n 0000439342 00000 n 0000439389 00000 n 0000439436 00000 n 0000439483 00000 n 0000439530 00000 n 0000439577 00000 n 0000439624 00000 n 0000439671 00000 n 0000439718 00000 n 0000439765 00000 n 0000441047 00000 n 0000905908 00000 n 0000443112 00000 n 0000441197 00000 n 0000441244 00000 n 0000441291 00000 n 0000441338 00000 n 0000441385 00000 n 0000441432 00000 n 0000441479 00000 n 0000441526 00000 n 0000441573 00000 n 0000441619 00000 n 0000441666 00000 n 0000443040 00000 n 0000906022 00000 n 0000444998 00000 n 0000443178 00000 n 0000443225 00000 n 0000443272 00000 n 0000443319 00000 n 0000443365 00000 n 0000443412 00000 n 0000443459 00000 n 0000443506 00000 n 0000443553 00000 n 0000443600 00000 n 0000443646 00000 n 0000443692 00000 n 0000444914 00000 n 0000906241 00000 n 0000446852 00000 n 0000445064 00000 n 0000445111 00000 n 0000445158 00000 n 0000445205 00000 n 0000445252 00000 n 0000445299 00000 n 0000445346 00000 n 0000445393 00000 n 0000445439 00000 n 0000445486 00000 n 0000445533 00000 n 0000445580 00000 n 0000446780 00000 n 0000906355 00000 n 0000448688 00000 n 0000446918 00000 n 0000446965 00000 n 0000447012 00000 n 0000447059 00000 n 0000447106 00000 n 0000447153 00000 n 0000448604 00000 n 0000906469 00000 n 0000450603 00000 n 0000448754 00000 n 0000448801 00000 n 0000448848 00000 n 0000448895 00000 n 0000448942 00000 n 0000448986 00000 n 0000449030 00000 n 0000449077 00000 n 0000449124 00000 n 0000449171 00000 n 0000449218 00000 n 0000449265 00000 n 0000450519 00000 n 0000906583 00000 n 0000452565 00000 n 0000450669 00000 n 0000450716 00000 n 0000450763 00000 n 0000450809 00000 n 0000450856 00000 n 0000450903 00000 n 0000450950 00000 n 0000450997 00000 n 0000452481 00000 n 0000906802 00000 n 0000454116 00000 n 0000452631 00000 n 0000452678 00000 n 0000452725 00000 n 0000452772 00000 n 0000452819 00000 n 0000452866 00000 n 0000452913 00000 n 0000452960 00000 n 0000453007 00000 n 0000453054 00000 n 0000454044 00000 n 0000906916 00000 n 0000456403 00000 n 0000454182 00000 n 0000454229 00000 n 0000454276 00000 n 0000454323 00000 n 0000454370 00000 n 0000454417 00000 n 0000454464 00000 n 0000454511 00000 n 0000454558 00000 n 0000454605 00000 n 0000454652 00000 n 0000454699 00000 n 0000454746 00000 n 0000454793 00000 n 0000454840 00000 n 0000456331 00000 n 0000907030 00000 n 0000458387 00000 n 0000456469 00000 n 0000456516 00000 n 0000456563 00000 n 0000456610 00000 n 0000456657 00000 n 0000456704 00000 n 0000456751 00000 n 0000456798 00000 n 0000456845 00000 n 0000456892 00000 n 0000456939 00000 n 0000456986 00000 n 0000457033 00000 n 0000458303 00000 n 0000907144 00000 n 0000460010 00000 n 0000458453 00000 n 0000458500 00000 n 0000459936 00000 n 0000907469 00000 n 0000461319 00000 n 0000460076 00000 n 0000460123 00000 n 0000461245 00000 n 0000907583 00000 n 0000463066 00000 n 0000461385 00000 n 0000461432 00000 n 0000461479 00000 n 0000461526 00000 n 0000461573 00000 n 0000461620 00000 n 0000461667 00000 n 0000461714 00000 n 0000462982 00000 n 0000907697 00000 n 0000465064 00000 n 0000463132 00000 n 0000463179 00000 n 0000464992 00000 n 0000907811 00000 n 0000466980 00000 n 0000465130 00000 n 0000465177 00000 n 0000465223 00000 n 0000465270 00000 n 0000466896 00000 n 0000908030 00000 n 0000469233 00000 n 0000467046 00000 n 0000467093 00000 n 0000467232 00000 n 0000469132 00000 n 0000469161 00000 n 0000908161 00000 n 0000471251 00000 n 0000469299 00000 n 0000469346 00000 n 0000469393 00000 n 0000469440 00000 n 0000469487 00000 n 0000469534 00000 n 0000471179 00000 n 0000908275 00000 n 0000473167 00000 n 0000471317 00000 n 0000471364 00000 n 0000471504 00000 n 0000471551 00000 n 0000471598 00000 n 0000473052 00000 n 0000473081 00000 n 0000908406 00000 n 0000474951 00000 n 0000473233 00000 n 0000473280 00000 n 0000473420 00000 n 0000473467 00000 n 0000473514 00000 n 0000474850 00000 n 0000474879 00000 n 0000908642 00000 n 0000477640 00000 n 0000475017 00000 n 0000475064 00000 n 0000475111 00000 n 0000475158 00000 n 0000477554 00000 n 0000908756 00000 n 0000479653 00000 n 0000477706 00000 n 0000477753 00000 n 0000477800 00000 n 0000477847 00000 n 0000477894 00000 n 0000479581 00000 n 0000908870 00000 n 0000480782 00000 n 0000479719 00000 n 0000479766 00000 n 0000480722 00000 n 0000908984 00000 n 0000483311 00000 n 0000480848 00000 n 0000480895 00000 n 0000480942 00000 n 0000480989 00000 n 0000481036 00000 n 0000483239 00000 n 0000909203 00000 n 0000484870 00000 n 0000483377 00000 n 0000483424 00000 n 0000483471 00000 n 0000483518 00000 n 0000484798 00000 n 0000909317 00000 n 0000486917 00000 n 0000484936 00000 n 0000484983 00000 n 0000485030 00000 n 0000485077 00000 n 0000485124 00000 n 0000485171 00000 n 0000485218 00000 n 0000485265 00000 n 0000485312 00000 n 0000485359 00000 n 0000485406 00000 n 0000485453 00000 n 0000486845 00000 n 0000909431 00000 n 0000490556 00000 n 0000486983 00000 n 0000487030 00000 n 0000487077 00000 n 0000487124 00000 n 0000487265 00000 n 0000487415 00000 n 0000487461 00000 n 0000487508 00000 n 0000487555 00000 n 0000487695 00000 n 0000487742 00000 n 0000487789 00000 n 0000487929 00000 n 0000488080 00000 n 0000488127 00000 n 0000488174 00000 n 0000488221 00000 n 0000488362 00000 n 0000488409 00000 n 0000488456 00000 n 0000488594 00000 n 0000490401 00000 n 0000490484 00000 n 0000909562 00000 n 0000491215 00000 n 0000490622 00000 n 0000490669 00000 n 0000490716 00000 n 0000490763 00000 n 0000491143 00000 n 0000909887 00000 n 0000491581 00000 n 0000491281 00000 n 0000491328 00000 n 0000491533 00000 n 0000910001 00000 n 0000493155 00000 n 0000491647 00000 n 0000491694 00000 n 0000491741 00000 n 0000491788 00000 n 0000493069 00000 n 0000910115 00000 n 0000495077 00000 n 0000493221 00000 n 0000493268 00000 n 0000493315 00000 n 0000493457 00000 n 0000493504 00000 n 0000493551 00000 n 0000493598 00000 n 0000494976 00000 n 0000495005 00000 n 0000910246 00000 n 0000497012 00000 n 0000495143 00000 n 0000495190 00000 n 0000495237 00000 n 0000495284 00000 n 0000495331 00000 n 0000496900 00000 n 0000910465 00000 n 0000498817 00000 n 0000497078 00000 n 0000497125 00000 n 0000497264 00000 n 0000497310 00000 n 0000497357 00000 n 0000497404 00000 n 0000497451 00000 n 0000497498 00000 n 0000498704 00000 n 0000498733 00000 n 0000910596 00000 n 0000500833 00000 n 0000498883 00000 n 0000498930 00000 n 0000498977 00000 n 0000499024 00000 n 0000499071 00000 n 0000499118 00000 n 0000499165 00000 n 0000499212 00000 n 0000499259 00000 n 0000499306 00000 n 0000499353 00000 n 0000499400 00000 n 0000499447 00000 n 0000499494 00000 n 0000499541 00000 n 0000499587 00000 n 0000499634 00000 n 0000499681 00000 n 0000500761 00000 n 0000910710 00000 n 0000501533 00000 n 0000500899 00000 n 0000500946 00000 n 0000501473 00000 n 0000910824 00000 n 0000503183 00000 n 0000501599 00000 n 0000501646 00000 n 0000501693 00000 n 0000501740 00000 n 0000501787 00000 n 0000501834 00000 n 0000503109 00000 n 0000911043 00000 n 0000505098 00000 n 0000503249 00000 n 0000503296 00000 n 0000503343 00000 n 0000503390 00000 n 0000505012 00000 n 0000911157 00000 n 0000506892 00000 n 0000505164 00000 n 0000505211 00000 n 0000505258 00000 n 0000505305 00000 n 0000505351 00000 n 0000505398 00000 n 0000505445 00000 n 0000505492 00000 n 0000506820 00000 n 0000911271 00000 n 0000508729 00000 n 0000506958 00000 n 0000507005 00000 n 0000507052 00000 n 0000507099 00000 n 0000508629 00000 n 0000911385 00000 n 0000510613 00000 n 0000508795 00000 n 0000508842 00000 n 0000508889 00000 n 0000508936 00000 n 0000508983 00000 n 0000509030 00000 n 0000509077 00000 n 0000509123 00000 n 0000509170 00000 n 0000509217 00000 n 0000509263 00000 n 0000509310 00000 n 0000510527 00000 n 0000911604 00000 n 0000512974 00000 n 0000510679 00000 n 0000510726 00000 n 0000510866 00000 n 0000510912 00000 n 0000510959 00000 n 0000512859 00000 n 0000512888 00000 n 0000911735 00000 n 0000514919 00000 n 0000513040 00000 n 0000513087 00000 n 0000513134 00000 n 0000513181 00000 n 0000513228 00000 n 0000513272 00000 n 0000513319 00000 n 0000513366 00000 n 0000513413 00000 n 0000513460 00000 n 0000513507 00000 n 0000513554 00000 n 0000514833 00000 n 0000911849 00000 n 0000516907 00000 n 0000514985 00000 n 0000515032 00000 n 0000515079 00000 n 0000515126 00000 n 0000515173 00000 n 0000515220 00000 n 0000515266 00000 n 0000515313 00000 n 0000515360 00000 n 0000515407 00000 n 0000515554 00000 n 0000516792 00000 n 0000516821 00000 n 0000911980 00000 n 0000518630 00000 n 0000516973 00000 n 0000517020 00000 n 0000517067 00000 n 0000517114 00000 n 0000518544 00000 n 0000912408 00000 n 0000520476 00000 n 0000518696 00000 n 0000518743 00000 n 0000520376 00000 n 0000912522 00000 n 0000522280 00000 n 0000520542 00000 n 0000520589 00000 n 0000522194 00000 n 0000912636 00000 n 0000523803 00000 n 0000522346 00000 n 0000522393 00000 n 0000522532 00000 n 0000522671 00000 n 0000523679 00000 n 0000523717 00000 n 0000912767 00000 n 0000526340 00000 n 0000523869 00000 n 0000523916 00000 n 0000523963 00000 n 0000524010 00000 n 0000524153 00000 n 0000524295 00000 n 0000524436 00000 n 0000524578 00000 n 0000524720 00000 n 0000524867 00000 n 0000526194 00000 n 0000526268 00000 n 0000913003 00000 n 0000529617 00000 n 0000526406 00000 n 0000526453 00000 n 0000526601 00000 n 0000526742 00000 n 0000526895 00000 n 0000527036 00000 n 0000527177 00000 n 0000527224 00000 n 0000527271 00000 n 0000527318 00000 n 0000527365 00000 n 0000527412 00000 n 0000529480 00000 n 0000529545 00000 n 0000913134 00000 n 0000532074 00000 n 0000529683 00000 n 0000529730 00000 n 0000529777 00000 n 0000529824 00000 n 0000529871 00000 n 0000529918 00000 n 0000529965 00000 n 0000530012 00000 n 0000530059 00000 n 0000530106 00000 n 0000530153 00000 n 0000532002 00000 n 0000913248 00000 n 0000534887 00000 n 0000532140 00000 n 0000532187 00000 n 0000532329 00000 n 0000532485 00000 n 0000532641 00000 n 0000532688 00000 n 0000532735 00000 n 0000532782 00000 n 0000532829 00000 n 0000532970 00000 n 0000533113 00000 n 0000534738 00000 n 0000534803 00000 n 0000913379 00000 n 0000537106 00000 n 0000534953 00000 n 0000535000 00000 n 0000535047 00000 n 0000535094 00000 n 0000535141 00000 n 0000535188 00000 n 0000535324 00000 n 0000535462 00000 n 0000536984 00000 n 0000537022 00000 n 0000913615 00000 n 0000540051 00000 n 0000537172 00000 n 0000537219 00000 n 0000537266 00000 n 0000537313 00000 n 0000537360 00000 n 0000537407 00000 n 0000537454 00000 n 0000537501 00000 n 0000537548 00000 n 0000537595 00000 n 0000537641 00000 n 0000537687 00000 n 0000537734 00000 n 0000537781 00000 n 0000537828 00000 n 0000537875 00000 n 0000537922 00000 n 0000537969 00000 n 0000538016 00000 n 0000538063 00000 n 0000538110 00000 n 0000539967 00000 n 0000913729 00000 n 0000543245 00000 n 0000540117 00000 n 0000540164 00000 n 0000540211 00000 n 0000540258 00000 n 0000540305 00000 n 0000540352 00000 n 0000540399 00000 n 0000540446 00000 n 0000540493 00000 n 0000540540 00000 n 0000540587 00000 n 0000540634 00000 n 0000540681 00000 n 0000540728 00000 n 0000540775 00000 n 0000540822 00000 n 0000540869 00000 n 0000540916 00000 n 0000541063 00000 n 0000541110 00000 n 0000541157 00000 n 0000541204 00000 n 0000543132 00000 n 0000543161 00000 n 0000913860 00000 n 0000546615 00000 n 0000543311 00000 n 0000543358 00000 n 0000543405 00000 n 0000543452 00000 n 0000543499 00000 n 0000543546 00000 n 0000543593 00000 n 0000543640 00000 n 0000543687 00000 n 0000543734 00000 n 0000543781 00000 n 0000543828 00000 n 0000543875 00000 n 0000543922 00000 n 0000543969 00000 n 0000544016 00000 n 0000544063 00000 n 0000544110 00000 n 0000544157 00000 n 0000544204 00000 n 0000544251 00000 n 0000544298 00000 n 0000544345 00000 n 0000544392 00000 n 0000544439 00000 n 0000544486 00000 n 0000544533 00000 n 0000544580 00000 n 0000544626 00000 n 0000544672 00000 n 0000546531 00000 n 0000913974 00000 n 0000549456 00000 n 0000546681 00000 n 0000546728 00000 n 0000546775 00000 n 0000546822 00000 n 0000546868 00000 n 0000546914 00000 n 0000546961 00000 n 0000547008 00000 n 0000547055 00000 n 0000547102 00000 n 0000547149 00000 n 0000547196 00000 n 0000547243 00000 n 0000547290 00000 n 0000547337 00000 n 0000547384 00000 n 0000547431 00000 n 0000547478 00000 n 0000547525 00000 n 0000547569 00000 n 0000547616 00000 n 0000547663 00000 n 0000549358 00000 n 0000914193 00000 n 0000552570 00000 n 0000549522 00000 n 0000549569 00000 n 0000549616 00000 n 0000549663 00000 n 0000549709 00000 n 0000549755 00000 n 0000549897 00000 n 0000550038 00000 n 0000550180 00000 n 0000550227 00000 n 0000550274 00000 n 0000550320 00000 n 0000550367 00000 n 0000550414 00000 n 0000550461 00000 n 0000550508 00000 n 0000550555 00000 n 0000552425 00000 n 0000552472 00000 n 0000914324 00000 n 0000554729 00000 n 0000552636 00000 n 0000552683 00000 n 0000552729 00000 n 0000552776 00000 n 0000552823 00000 n 0000552870 00000 n 0000552916 00000 n 0000552963 00000 n 0000553010 00000 n 0000553057 00000 n 0000553104 00000 n 0000553151 00000 n 0000554643 00000 n 0000914438 00000 n 0000558015 00000 n 0000554795 00000 n 0000554842 00000 n 0000554889 00000 n 0000554936 00000 n 0000554983 00000 n 0000555030 00000 n 0000555077 00000 n 0000555124 00000 n 0000555171 00000 n 0000555218 00000 n 0000555265 00000 n 0000555312 00000 n 0000555359 00000 n 0000555405 00000 n 0000555551 00000 n 0000555598 00000 n 0000555645 00000 n 0000555692 00000 n 0000555739 00000 n 0000555785 00000 n 0000555831 00000 n 0000555878 00000 n 0000555925 00000 n 0000555972 00000 n 0000557902 00000 n 0000557931 00000 n 0000914569 00000 n 0000561643 00000 n 0000558081 00000 n 0000558128 00000 n 0000558175 00000 n 0000558222 00000 n 0000558269 00000 n 0000558316 00000 n 0000558363 00000 n 0000558410 00000 n 0000558457 00000 n 0000558504 00000 n 0000558551 00000 n 0000558598 00000 n 0000558645 00000 n 0000558692 00000 n 0000558739 00000 n 0000558786 00000 n 0000558833 00000 n 0000558880 00000 n 0000558927 00000 n 0000558974 00000 n 0000559021 00000 n 0000559068 00000 n 0000559115 00000 n 0000559162 00000 n 0000559309 00000 n 0000559356 00000 n 0000559403 00000 n 0000559450 00000 n 0000559497 00000 n 0000559544 00000 n 0000559591 00000 n 0000559638 00000 n 0000559685 00000 n 0000561542 00000 n 0000561571 00000 n 0000914911 00000 n 0000565064 00000 n 0000561709 00000 n 0000561756 00000 n 0000561803 00000 n 0000561850 00000 n 0000561897 00000 n 0000561944 00000 n 0000561991 00000 n 0000562038 00000 n 0000562085 00000 n 0000562132 00000 n 0000562179 00000 n 0000562226 00000 n 0000562273 00000 n 0000562320 00000 n 0000562367 00000 n 0000562414 00000 n 0000562461 00000 n 0000562508 00000 n 0000562555 00000 n 0000562601 00000 n 0000562647 00000 n 0000562694 00000 n 0000562741 00000 n 0000562788 00000 n 0000562835 00000 n 0000562882 00000 n 0000562929 00000 n 0000562976 00000 n 0000563023 00000 n 0000563070 00000 n 0000563117 00000 n 0000563163 00000 n 0000563209 00000 n 0000564966 00000 n 0000915025 00000 n 0000568619 00000 n 0000565130 00000 n 0000565177 00000 n 0000565224 00000 n 0000565271 00000 n 0000565318 00000 n 0000565365 00000 n 0000565412 00000 n 0000565459 00000 n 0000565506 00000 n 0000565553 00000 n 0000565600 00000 n 0000565647 00000 n 0000565694 00000 n 0000565741 00000 n 0000565899 00000 n 0000566058 00000 n 0000566105 00000 n 0000566152 00000 n 0000566199 00000 n 0000568483 00000 n 0000568521 00000 n 0000915156 00000 n 0000574254 00000 n 0000568685 00000 n 0000568732 00000 n 0000568891 00000 n 0000569050 00000 n 0000569208 00000 n 0000569252 00000 n 0000569411 00000 n 0000569569 00000 n 0000569727 00000 n 0000569888 00000 n 0000570039 00000 n 0000877565 00000 n 0000877367 00000 n 0000570086 00000 n 0000571102 00000 n 0000571274 00000 n 0000574027 00000 n 0000574128 00000 n 0000915287 00000 n 0000576615 00000 n 0000574320 00000 n 0000574367 00000 n 0000574414 00000 n 0000574461 00000 n 0000574507 00000 n 0000574554 00000 n 0000574601 00000 n 0000574648 00000 n 0000576529 00000 n 0000915506 00000 n 0000580230 00000 n 0000576681 00000 n 0000576728 00000 n 0000576775 00000 n 0000576822 00000 n 0000576869 00000 n 0000576916 00000 n 0000576963 00000 n 0000577010 00000 n 0000577155 00000 n 0000577306 00000 n 0000577452 00000 n 0000577608 00000 n 0000577766 00000 n 0000577917 00000 n 0000577964 00000 n 0000578011 00000 n 0000578160 00000 n 0000578206 00000 n 0000578253 00000 n 0000580061 00000 n 0000580144 00000 n 0000915637 00000 n 0000584403 00000 n 0000580296 00000 n 0000879055 00000 n 0000878859 00000 n 0000580343 00000 n 0000581351 00000 n 0000581398 00000 n 0000581445 00000 n 0000581492 00000 n 0000581539 00000 n 0000581586 00000 n 0000581633 00000 n 0000581680 00000 n 0000581727 00000 n 0000581774 00000 n 0000581821 00000 n 0000581868 00000 n 0000581915 00000 n 0000581962 00000 n 0000582009 00000 n 0000582056 00000 n 0000582103 00000 n 0000582150 00000 n 0000582197 00000 n 0000582244 00000 n 0000582291 00000 n 0000582338 00000 n 0000582385 00000 n 0000582432 00000 n 0000582479 00000 n 0000582525 00000 n 0000582571 00000 n 0000584292 00000 n 0000915751 00000 n 0000588208 00000 n 0000584469 00000 n 0000584516 00000 n 0000881100 00000 n 0000880908 00000 n 0000584563 00000 n 0000585575 00000 n 0000585622 00000 n 0000585669 00000 n 0000585716 00000 n 0000585763 00000 n 0000585810 00000 n 0000585857 00000 n 0000585904 00000 n 0000585951 00000 n 0000585998 00000 n 0000586045 00000 n 0000586092 00000 n 0000586139 00000 n 0000586183 00000 n 0000586230 00000 n 0000586277 00000 n 0000588083 00000 n 0000915865 00000 n 0000590219 00000 n 0000588274 00000 n 0000588321 00000 n 0000588368 00000 n 0000588415 00000 n 0000588558 00000 n 0000588605 00000 n 0000588652 00000 n 0000588699 00000 n 0000590116 00000 n 0000590145 00000 n 0000916101 00000 n 0000594344 00000 n 0000590285 00000 n 0000590332 00000 n 0000590379 00000 n 0000590426 00000 n 0000590473 00000 n 0000590520 00000 n 0000590567 00000 n 0000590614 00000 n 0000590764 00000 n 0000590912 00000 n 0000590959 00000 n 0000591006 00000 n 0000591053 00000 n 0000591100 00000 n 0000591237 00000 n 0000591378 00000 n 0000591521 00000 n 0000591662 00000 n 0000591812 00000 n 0000591960 00000 n 0000592006 00000 n 0000592053 00000 n 0000592196 00000 n 0000594143 00000 n 0000594244 00000 n 0000916232 00000 n 0000598345 00000 n 0000594410 00000 n 0000594457 00000 n 0000594504 00000 n 0000594551 00000 n 0000594598 00000 n 0000594743 00000 n 0000594893 00000 n 0000595041 00000 n 0000595088 00000 n 0000595135 00000 n 0000595182 00000 n 0000595325 00000 n 0000595472 00000 n 0000595618 00000 n 0000595665 00000 n 0000595712 00000 n 0000595862 00000 n 0000596010 00000 n 0000596057 00000 n 0000596204 00000 n 0000596351 00000 n 0000598135 00000 n 0000598245 00000 n 0000916363 00000 n 0000602645 00000 n 0000598411 00000 n 0000598458 00000 n 0000598603 00000 n 0000598750 00000 n 0000598896 00000 n 0000599042 00000 n 0000599185 00000 n 0000599326 00000 n 0000599373 00000 n 0000599514 00000 n 0000599561 00000 n 0000599608 00000 n 0000599655 00000 n 0000599702 00000 n 0000599749 00000 n 0000599796 00000 n 0000599843 00000 n 0000599890 00000 n 0000599937 00000 n 0000599984 00000 n 0000600031 00000 n 0000600078 00000 n 0000602478 00000 n 0000602561 00000 n 0000916494 00000 n 0000604356 00000 n 0000602711 00000 n 0000602758 00000 n 0000602805 00000 n 0000602852 00000 n 0000602899 00000 n 0000602946 00000 n 0000602993 00000 n 0000603040 00000 n 0000603087 00000 n 0000603134 00000 n 0000603181 00000 n 0000604272 00000 n 0000916713 00000 n 0000604736 00000 n 0000604422 00000 n 0000604469 00000 n 0000604688 00000 n 0000916827 00000 n 0000606644 00000 n 0000604802 00000 n 0000604849 00000 n 0000604896 00000 n 0000604943 00000 n 0000604990 00000 n 0000605037 00000 n 0000605188 00000 n 0000606543 00000 n 0000606572 00000 n 0000916958 00000 n 0000608470 00000 n 0000606710 00000 n 0000606757 00000 n 0000606804 00000 n 0000606851 00000 n 0000606898 00000 n 0000606945 00000 n 0000608386 00000 n 0000917072 00000 n 0000610303 00000 n 0000608536 00000 n 0000608583 00000 n 0000608630 00000 n 0000608677 00000 n 0000608724 00000 n 0000608770 00000 n 0000608817 00000 n 0000610229 00000 n 0000917397 00000 n 0000612607 00000 n 0000610369 00000 n 0000610416 00000 n 0000610463 00000 n 0000610510 00000 n 0000610557 00000 n 0000610604 00000 n 0000610650 00000 n 0000610697 00000 n 0000610744 00000 n 0000610892 00000 n 0000612478 00000 n 0000612507 00000 n 0000917528 00000 n 0000615501 00000 n 0000612673 00000 n 0000612720 00000 n 0000612866 00000 n 0000612913 00000 n 0000612960 00000 n 0000613007 00000 n 0000615360 00000 n 0000615389 00000 n 0000917659 00000 n 0000617052 00000 n 0000615567 00000 n 0000615614 00000 n 0000615661 00000 n 0000615708 00000 n 0000615755 00000 n 0000615802 00000 n 0000615849 00000 n 0000616954 00000 n 0000917773 00000 n 0000618981 00000 n 0000617118 00000 n 0000617165 00000 n 0000617212 00000 n 0000617259 00000 n 0000617306 00000 n 0000617353 00000 n 0000617400 00000 n 0000617447 00000 n 0000618895 00000 n 0000917992 00000 n 0000621033 00000 n 0000619047 00000 n 0000619094 00000 n 0000619141 00000 n 0000619188 00000 n 0000619235 00000 n 0000619282 00000 n 0000619329 00000 n 0000619376 00000 n 0000620933 00000 n 0000918106 00000 n 0000623186 00000 n 0000621099 00000 n 0000621146 00000 n 0000621193 00000 n 0000621240 00000 n 0000621287 00000 n 0000621334 00000 n 0000621381 00000 n 0000621428 00000 n 0000621475 00000 n 0000621522 00000 n 0000623088 00000 n 0000918220 00000 n 0000625421 00000 n 0000623252 00000 n 0000623299 00000 n 0000623346 00000 n 0000623393 00000 n 0000623440 00000 n 0000623487 00000 n 0000623534 00000 n 0000623581 00000 n 0000623628 00000 n 0000625335 00000 n 0000918334 00000 n 0000626283 00000 n 0000625487 00000 n 0000625534 00000 n 0000625581 00000 n 0000626211 00000 n 0000918553 00000 n 0000626626 00000 n 0000626349 00000 n 0000626396 00000 n 0000626578 00000 n 0000918667 00000 n 0000628195 00000 n 0000626692 00000 n 0000626739 00000 n 0000626786 00000 n 0000626832 00000 n 0000626879 00000 n 0000626926 00000 n 0000628121 00000 n 0000918781 00000 n 0000630189 00000 n 0000628261 00000 n 0000628308 00000 n 0000628355 00000 n 0000628402 00000 n 0000630077 00000 n 0000918895 00000 n 0000632349 00000 n 0000630255 00000 n 0000630302 00000 n 0000630349 00000 n 0000630396 00000 n 0000632263 00000 n 0000919114 00000 n 0000634030 00000 n 0000632415 00000 n 0000632462 00000 n 0000632509 00000 n 0000632556 00000 n 0000633944 00000 n 0000919228 00000 n 0000636283 00000 n 0000634096 00000 n 0000634143 00000 n 0000634190 00000 n 0000634332 00000 n 0000634379 00000 n 0000636142 00000 n 0000636171 00000 n 0000919359 00000 n 0000637596 00000 n 0000636349 00000 n 0000636396 00000 n 0000637508 00000 n 0000919473 00000 n 0000639532 00000 n 0000637662 00000 n 0000637709 00000 n 0000637756 00000 n 0000637897 00000 n 0000638040 00000 n 0000638178 00000 n 0000639413 00000 n 0000639460 00000 n 0000919815 00000 n 0000642424 00000 n 0000639598 00000 n 0000639645 00000 n 0000639786 00000 n 0000639927 00000 n 0000640069 00000 n 0000640211 00000 n 0000640352 00000 n 0000640492 00000 n 0000640635 00000 n 0000642269 00000 n 0000642352 00000 n 0000919946 00000 n 0000644379 00000 n 0000642490 00000 n 0000642537 00000 n 0000642584 00000 n 0000642725 00000 n 0000642772 00000 n 0000642914 00000 n 0000644269 00000 n 0000644307 00000 n 0000920077 00000 n 0000646118 00000 n 0000644445 00000 n 0000644492 00000 n 0000644539 00000 n 0000644681 00000 n 0000646017 00000 n 0000646046 00000 n 0000920208 00000 n 0000648119 00000 n 0000646184 00000 n 0000646231 00000 n 0000646278 00000 n 0000646417 00000 n 0000648018 00000 n 0000648047 00000 n 0000920444 00000 n 0000650400 00000 n 0000648185 00000 n 0000648232 00000 n 0000648279 00000 n 0000648326 00000 n 0000648373 00000 n 0000648420 00000 n 0000650312 00000 n 0000920558 00000 n 0000652542 00000 n 0000650466 00000 n 0000650513 00000 n 0000650560 00000 n 0000650698 00000 n 0000652413 00000 n 0000652442 00000 n 0000920689 00000 n 0000654499 00000 n 0000652608 00000 n 0000652655 00000 n 0000652702 00000 n 0000654413 00000 n 0000920803 00000 n 0000655370 00000 n 0000654565 00000 n 0000654612 00000 n 0000655310 00000 n 0000921022 00000 n 0000669492 00000 n 0000655436 00000 n 0000655483 00000 n 0000655622 00000 n 0000655761 00000 n 0000655899 00000 n 0000656038 00000 n 0000656176 00000 n 0000656315 00000 n 0000656452 00000 n 0000656589 00000 n 0000656728 00000 n 0000656867 00000 n 0000657003 00000 n 0000657140 00000 n 0000657279 00000 n 0000657418 00000 n 0000657557 00000 n 0000657695 00000 n 0000657834 00000 n 0000657973 00000 n 0000658111 00000 n 0000658250 00000 n 0000658389 00000 n 0000658528 00000 n 0000658667 00000 n 0000658806 00000 n 0000658945 00000 n 0000659084 00000 n 0000659223 00000 n 0000659359 00000 n 0000659498 00000 n 0000659637 00000 n 0000659775 00000 n 0000659914 00000 n 0000660053 00000 n 0000660191 00000 n 0000660329 00000 n 0000660467 00000 n 0000660605 00000 n 0000660744 00000 n 0000660882 00000 n 0000661020 00000 n 0000661158 00000 n 0000661296 00000 n 0000661434 00000 n 0000661572 00000 n 0000661710 00000 n 0000661847 00000 n 0000661985 00000 n 0000662123 00000 n 0000662261 00000 n 0000662399 00000 n 0000662537 00000 n 0000662672 00000 n 0000662807 00000 n 0000662946 00000 n 0000663084 00000 n 0000663221 00000 n 0000663359 00000 n 0000663496 00000 n 0000663631 00000 n 0000663770 00000 n 0000663908 00000 n 0000664044 00000 n 0000664182 00000 n 0000664321 00000 n 0000664459 00000 n 0000664598 00000 n 0000664737 00000 n 0000664874 00000 n 0000665012 00000 n 0000665150 00000 n 0000665286 00000 n 0000665425 00000 n 0000665564 00000 n 0000665703 00000 n 0000665842 00000 n 0000665981 00000 n 0000666120 00000 n 0000666258 00000 n 0000666396 00000 n 0000666535 00000 n 0000666673 00000 n 0000668695 00000 n 0000669444 00000 n 0000921153 00000 n 0000684984 00000 n 0000669558 00000 n 0000669605 00000 n 0000669744 00000 n 0000669883 00000 n 0000670022 00000 n 0000670161 00000 n 0000670300 00000 n 0000670439 00000 n 0000670578 00000 n 0000670717 00000 n 0000670856 00000 n 0000670993 00000 n 0000671132 00000 n 0000671270 00000 n 0000671408 00000 n 0000671547 00000 n 0000671684 00000 n 0000671823 00000 n 0000671962 00000 n 0000672101 00000 n 0000672240 00000 n 0000672378 00000 n 0000672517 00000 n 0000672655 00000 n 0000672793 00000 n 0000672932 00000 n 0000673071 00000 n 0000673210 00000 n 0000673348 00000 n 0000673486 00000 n 0000673625 00000 n 0000673764 00000 n 0000673903 00000 n 0000674041 00000 n 0000674180 00000 n 0000674319 00000 n 0000674458 00000 n 0000674596 00000 n 0000674735 00000 n 0000674874 00000 n 0000675013 00000 n 0000675152 00000 n 0000675291 00000 n 0000675429 00000 n 0000675567 00000 n 0000675705 00000 n 0000675843 00000 n 0000675982 00000 n 0000676119 00000 n 0000676258 00000 n 0000676396 00000 n 0000676535 00000 n 0000676674 00000 n 0000676811 00000 n 0000676950 00000 n 0000677089 00000 n 0000677228 00000 n 0000677366 00000 n 0000677503 00000 n 0000677641 00000 n 0000677780 00000 n 0000677919 00000 n 0000678058 00000 n 0000678197 00000 n 0000678335 00000 n 0000678472 00000 n 0000678607 00000 n 0000678745 00000 n 0000678884 00000 n 0000679023 00000 n 0000679162 00000 n 0000679301 00000 n 0000679440 00000 n 0000679578 00000 n 0000679717 00000 n 0000679855 00000 n 0000679994 00000 n 0000680133 00000 n 0000680271 00000 n 0000680410 00000 n 0000680549 00000 n 0000680688 00000 n 0000680827 00000 n 0000680966 00000 n 0000681104 00000 n 0000681243 00000 n 0000681382 00000 n 0000681521 00000 n 0000681660 00000 n 0000681799 00000 n 0000681938 00000 n 0000682076 00000 n 0000684106 00000 n 0000684936 00000 n 0000921284 00000 n 0000700644 00000 n 0000685050 00000 n 0000685097 00000 n 0000685235 00000 n 0000685374 00000 n 0000685513 00000 n 0000685652 00000 n 0000685791 00000 n 0000685929 00000 n 0000686068 00000 n 0000686207 00000 n 0000686346 00000 n 0000686484 00000 n 0000686622 00000 n 0000686760 00000 n 0000686898 00000 n 0000687036 00000 n 0000687175 00000 n 0000687314 00000 n 0000687452 00000 n 0000687591 00000 n 0000687729 00000 n 0000687867 00000 n 0000688006 00000 n 0000688144 00000 n 0000688282 00000 n 0000688420 00000 n 0000688559 00000 n 0000688698 00000 n 0000688837 00000 n 0000688976 00000 n 0000689115 00000 n 0000689254 00000 n 0000689393 00000 n 0000689532 00000 n 0000689671 00000 n 0000689809 00000 n 0000689946 00000 n 0000690084 00000 n 0000690222 00000 n 0000690361 00000 n 0000690498 00000 n 0000690637 00000 n 0000690776 00000 n 0000690915 00000 n 0000691054 00000 n 0000691193 00000 n 0000691331 00000 n 0000691469 00000 n 0000691608 00000 n 0000691746 00000 n 0000691885 00000 n 0000692022 00000 n 0000692158 00000 n 0000692296 00000 n 0000692435 00000 n 0000692574 00000 n 0000692713 00000 n 0000692851 00000 n 0000692990 00000 n 0000693129 00000 n 0000693268 00000 n 0000693407 00000 n 0000693545 00000 n 0000693683 00000 n 0000693822 00000 n 0000693960 00000 n 0000694099 00000 n 0000694237 00000 n 0000694376 00000 n 0000694515 00000 n 0000694654 00000 n 0000694793 00000 n 0000694932 00000 n 0000695071 00000 n 0000695209 00000 n 0000695346 00000 n 0000695484 00000 n 0000695620 00000 n 0000695758 00000 n 0000695897 00000 n 0000696035 00000 n 0000696174 00000 n 0000696312 00000 n 0000696451 00000 n 0000696589 00000 n 0000696728 00000 n 0000696863 00000 n 0000697001 00000 n 0000697140 00000 n 0000697278 00000 n 0000697417 00000 n 0000697556 00000 n 0000697695 00000 n 0000697833 00000 n 0000699748 00000 n 0000700596 00000 n 0000921415 00000 n 0000716481 00000 n 0000700710 00000 n 0000700757 00000 n 0000700894 00000 n 0000701033 00000 n 0000701172 00000 n 0000701309 00000 n 0000701448 00000 n 0000701586 00000 n 0000701725 00000 n 0000701863 00000 n 0000702002 00000 n 0000702138 00000 n 0000702277 00000 n 0000702416 00000 n 0000702555 00000 n 0000702693 00000 n 0000702832 00000 n 0000702971 00000 n 0000703110 00000 n 0000703248 00000 n 0000703386 00000 n 0000703525 00000 n 0000703663 00000 n 0000703802 00000 n 0000703940 00000 n 0000704078 00000 n 0000704216 00000 n 0000704352 00000 n 0000704491 00000 n 0000704630 00000 n 0000704767 00000 n 0000704905 00000 n 0000705043 00000 n 0000705182 00000 n 0000705320 00000 n 0000705458 00000 n 0000705597 00000 n 0000705736 00000 n 0000705875 00000 n 0000706014 00000 n 0000706153 00000 n 0000706292 00000 n 0000706428 00000 n 0000706567 00000 n 0000706706 00000 n 0000706844 00000 n 0000706982 00000 n 0000707121 00000 n 0000707259 00000 n 0000707397 00000 n 0000707535 00000 n 0000707674 00000 n 0000707813 00000 n 0000707951 00000 n 0000708090 00000 n 0000708229 00000 n 0000708368 00000 n 0000708506 00000 n 0000708644 00000 n 0000708783 00000 n 0000708922 00000 n 0000709061 00000 n 0000709200 00000 n 0000709339 00000 n 0000709478 00000 n 0000709615 00000 n 0000709754 00000 n 0000709891 00000 n 0000710030 00000 n 0000710169 00000 n 0000710305 00000 n 0000710444 00000 n 0000710583 00000 n 0000710721 00000 n 0000710860 00000 n 0000710997 00000 n 0000711133 00000 n 0000711272 00000 n 0000711410 00000 n 0000711549 00000 n 0000711688 00000 n 0000711826 00000 n 0000711965 00000 n 0000712104 00000 n 0000712243 00000 n 0000712382 00000 n 0000712520 00000 n 0000712659 00000 n 0000712797 00000 n 0000712935 00000 n 0000713074 00000 n 0000713213 00000 n 0000713352 00000 n 0000713490 00000 n 0000715585 00000 n 0000716433 00000 n 0000921651 00000 n 0000732500 00000 n 0000716547 00000 n 0000716594 00000 n 0000716732 00000 n 0000716870 00000 n 0000717009 00000 n 0000717147 00000 n 0000717286 00000 n 0000717424 00000 n 0000717563 00000 n 0000717701 00000 n 0000717840 00000 n 0000717978 00000 n 0000718117 00000 n 0000718256 00000 n 0000718395 00000 n 0000718533 00000 n 0000718671 00000 n 0000718809 00000 n 0000718948 00000 n 0000719087 00000 n 0000719226 00000 n 0000719365 00000 n 0000719503 00000 n 0000719642 00000 n 0000719780 00000 n 0000719919 00000 n 0000720055 00000 n 0000720194 00000 n 0000720333 00000 n 0000720472 00000 n 0000720608 00000 n 0000720747 00000 n 0000720886 00000 n 0000721024 00000 n 0000721163 00000 n 0000721301 00000 n 0000721440 00000 n 0000721579 00000 n 0000721718 00000 n 0000721857 00000 n 0000721996 00000 n 0000722135 00000 n 0000722274 00000 n 0000722412 00000 n 0000722551 00000 n 0000722688 00000 n 0000722827 00000 n 0000722965 00000 n 0000723104 00000 n 0000723243 00000 n 0000723382 00000 n 0000723521 00000 n 0000723659 00000 n 0000723798 00000 n 0000723936 00000 n 0000724074 00000 n 0000724213 00000 n 0000724351 00000 n 0000724489 00000 n 0000724627 00000 n 0000724764 00000 n 0000724903 00000 n 0000725042 00000 n 0000725180 00000 n 0000725319 00000 n 0000725455 00000 n 0000725592 00000 n 0000725730 00000 n 0000725868 00000 n 0000726005 00000 n 0000726143 00000 n 0000726282 00000 n 0000726421 00000 n 0000726560 00000 n 0000726697 00000 n 0000726835 00000 n 0000726973 00000 n 0000727112 00000 n 0000727251 00000 n 0000727390 00000 n 0000727529 00000 n 0000727667 00000 n 0000727806 00000 n 0000727945 00000 n 0000728084 00000 n 0000728222 00000 n 0000728361 00000 n 0000728500 00000 n 0000728639 00000 n 0000728777 00000 n 0000728913 00000 n 0000729052 00000 n 0000729190 00000 n 0000731613 00000 n 0000732452 00000 n 0000921782 00000 n 0000748428 00000 n 0000732566 00000 n 0000732613 00000 n 0000732752 00000 n 0000732890 00000 n 0000733028 00000 n 0000733167 00000 n 0000733305 00000 n 0000733443 00000 n 0000733582 00000 n 0000733721 00000 n 0000733860 00000 n 0000733997 00000 n 0000734136 00000 n 0000734274 00000 n 0000734412 00000 n 0000734551 00000 n 0000734690 00000 n 0000734828 00000 n 0000734966 00000 n 0000735105 00000 n 0000735243 00000 n 0000735381 00000 n 0000735520 00000 n 0000735659 00000 n 0000735798 00000 n 0000735937 00000 n 0000736076 00000 n 0000736214 00000 n 0000736353 00000 n 0000736491 00000 n 0000736630 00000 n 0000736769 00000 n 0000736907 00000 n 0000737046 00000 n 0000737185 00000 n 0000737322 00000 n 0000737461 00000 n 0000737600 00000 n 0000737739 00000 n 0000737878 00000 n 0000738017 00000 n 0000738156 00000 n 0000738295 00000 n 0000738432 00000 n 0000738568 00000 n 0000738705 00000 n 0000738842 00000 n 0000738981 00000 n 0000739119 00000 n 0000739257 00000 n 0000739396 00000 n 0000739533 00000 n 0000739669 00000 n 0000739807 00000 n 0000739945 00000 n 0000740083 00000 n 0000740222 00000 n 0000740361 00000 n 0000740500 00000 n 0000740639 00000 n 0000740778 00000 n 0000740916 00000 n 0000741055 00000 n 0000741194 00000 n 0000741333 00000 n 0000741472 00000 n 0000741611 00000 n 0000741750 00000 n 0000741888 00000 n 0000742027 00000 n 0000742166 00000 n 0000742305 00000 n 0000742444 00000 n 0000742583 00000 n 0000742722 00000 n 0000742860 00000 n 0000742998 00000 n 0000743137 00000 n 0000743273 00000 n 0000743412 00000 n 0000743551 00000 n 0000743690 00000 n 0000743829 00000 n 0000743968 00000 n 0000744107 00000 n 0000744246 00000 n 0000744384 00000 n 0000744523 00000 n 0000744662 00000 n 0000744801 00000 n 0000744940 00000 n 0000745079 00000 n 0000745218 00000 n 0000745355 00000 n 0000747532 00000 n 0000748380 00000 n 0000921913 00000 n 0000759230 00000 n 0000748494 00000 n 0000748541 00000 n 0000748680 00000 n 0000748818 00000 n 0000748957 00000 n 0000749095 00000 n 0000749233 00000 n 0000749371 00000 n 0000749509 00000 n 0000749648 00000 n 0000749786 00000 n 0000749922 00000 n 0000750061 00000 n 0000750199 00000 n 0000750337 00000 n 0000750474 00000 n 0000750613 00000 n 0000750752 00000 n 0000750891 00000 n 0000751029 00000 n 0000751167 00000 n 0000751306 00000 n 0000751444 00000 n 0000751583 00000 n 0000751721 00000 n 0000751858 00000 n 0000751996 00000 n 0000752135 00000 n 0000752273 00000 n 0000752412 00000 n 0000752549 00000 n 0000752685 00000 n 0000752824 00000 n 0000752962 00000 n 0000753101 00000 n 0000753240 00000 n 0000753379 00000 n 0000753518 00000 n 0000753657 00000 n 0000753796 00000 n 0000753934 00000 n 0000754070 00000 n 0000754209 00000 n 0000754348 00000 n 0000754486 00000 n 0000754625 00000 n 0000754762 00000 n 0000754900 00000 n 0000755039 00000 n 0000755177 00000 n 0000755316 00000 n 0000755453 00000 n 0000755591 00000 n 0000755730 00000 n 0000755869 00000 n 0000756008 00000 n 0000756147 00000 n 0000756286 00000 n 0000756425 00000 n 0000756564 00000 n 0000756703 00000 n 0000756842 00000 n 0000756979 00000 n 0000757118 00000 n 0000758604 00000 n 0000759182 00000 n 0000922044 00000 n 0000761660 00000 n 0000759296 00000 n 0000759343 00000 n 0000759390 00000 n 0000759437 00000 n 0000759577 00000 n 0000759718 00000 n 0000759765 00000 n 0000759812 00000 n 0000759859 00000 n 0000760021 00000 n 0000760170 00000 n 0000761502 00000 n 0000761558 00000 n 0000892840 00000 n 0000885446 00000 n 0000883511 00000 n 0000884110 00000 n 0000884719 00000 n 0000885342 00000 n 0000887830 00000 n 0000886042 00000 n 0000886603 00000 n 0000887164 00000 n 0000887725 00000 n 0000890231 00000 n 0000888392 00000 n 0000888987 00000 n 0000889565 00000 n 0000890126 00000 n 0000892734 00000 n 0000890827 00000 n 0000891405 00000 n 0000892017 00000 n 0000892629 00000 n 0000902615 00000 n 0000895238 00000 n 0000893399 00000 n 0000893960 00000 n 0000894555 00000 n 0000895133 00000 n 0000897656 00000 n 0000895817 00000 n 0000896378 00000 n 0000896956 00000 n 0000897551 00000 n 0000900091 00000 n 0000898218 00000 n 0000898847 00000 n 0000899408 00000 n 0000899986 00000 n 0000902509 00000 n 0000900653 00000 n 0000901214 00000 n 0000901809 00000 n 0000902404 00000 n 0000912305 00000 n 0000904996 00000 n 0000903174 00000 n 0000903752 00000 n 0000904330 00000 n 0000904891 00000 n 0000907363 00000 n 0000905558 00000 n 0000906136 00000 n 0000906697 00000 n 0000907258 00000 n 0000909781 00000 n 0000907925 00000 n 0000908537 00000 n 0000909098 00000 n 0000909676 00000 n 0000912199 00000 n 0000910360 00000 n 0000910938 00000 n 0000911499 00000 n 0000912094 00000 n 0000922386 00000 n 0000914805 00000 n 0000912898 00000 n 0000913510 00000 n 0000914088 00000 n 0000914700 00000 n 0000917291 00000 n 0000915401 00000 n 0000915996 00000 n 0000916608 00000 n 0000917186 00000 n 0000919709 00000 n 0000917887 00000 n 0000918448 00000 n 0000919009 00000 n 0000919604 00000 n 0000922280 00000 n 0000920339 00000 n 0000920917 00000 n 0000921546 00000 n 0000922175 00000 n 0000923081 00000 n 0000923165 00000 n 0000923241 00000 n 0000923320 00000 n 0000923417 00000 n 0000923514 00000 n 0000923593 00000 n 0000923672 00000 n 0000923751 00000 n 0000923848 00000 n 0000923943 00000 n 0000924022 00000 n 0000924101 00000 n 0000924177 00000 n 0000924270 00000 n 0000924364 00000 n 0000924440 00000 n 0000924516 00000 n 0000924592 00000 n 0000924685 00000 n 0000924778 00000 n 0000924874 00000 n 0000924962 00000 n 0000925050 00000 n 0000925138 00000 n 0000925236 00000 n 0000925337 00000 n 0000925422 00000 n 0000925510 00000 n 0000925598 00000 n 0000925707 00000 n 0000925807 00000 n 0000925895 00000 n 0000925983 00000 n 0000926068 00000 n 0000926173 00000 n 0000926273 00000 n 0000926358 00000 n 0000926463 00000 n 0000926548 00000 n 0000926673 00000 n 0000926782 00000 n 0000926892 00000 n 0000926986 00000 n 0000927092 00000 n 0000927207 00000 n 0000927346 00000 n 0000927460 00000 n 0000927566 00000 n 0000927663 00000 n 0000927760 00000 n 0000927899 00000 n 0000928012 00000 n 0000928118 00000 n 0000928227 00000 n 0000928330 00000 n 0000928473 00000 n 0000928591 00000 n 0000928706 00000 n 0000928873 00000 n 0000928994 00000 n 0000929169 00000 n 0000929297 00000 n 0000929418 00000 n 0000929527 00000 n 0000929648 00000 n 0000929778 00000 n 0000929951 00000 n 0000930077 00000 n 0000930213 00000 n 0000930340 00000 n 0000930446 00000 n 0000930601 00000 n 0000930731 00000 n 0000930837 00000 n 0000930943 00000 n 0000931061 00000 n 0000931204 00000 n 0000931315 00000 n 0000931421 00000 n 0000931550 00000 n 0000931674 00000 n 0000931827 00000 n 0000931941 00000 n 0000932056 00000 n 0000932163 00000 n 0000932284 00000 n 0000932414 00000 n 0000932532 00000 n 0000932703 00000 n 0000932832 00000 n 0000932953 00000 n 0000933056 00000 n 0000933150 00000 n 0000933287 00000 n 0000933412 00000 n 0000933530 00000 n 0000933621 00000 n 0000933709 00000 n 0000933846 00000 n 0000933974 00000 n 0000934077 00000 n 0000934198 00000 n 0000934301 00000 n 0000934402 00000 n 0000934507 00000 n 0000934618 00000 n 0000934706 00000 n 0000934791 00000 n 0000934870 00000 n 0000934977 00000 n 0000935080 00000 n 0000935156 00000 n 0000935238 00000 n 0000935323 00000 n 0000935436 00000 n 0000935536 00000 n 0000935636 00000 n 0000935715 00000 n 0000935791 00000 n 0000935910 00000 n 0000936014 00000 n 0000936099 00000 n 0000936218 00000 n 0000936309 00000 n 0000936420 00000 n 0000936521 00000 n 0000936623 00000 n 0000936738 00000 n 0000936838 00000 n 0000936938 00000 n 0000937059 00000 n 0000937174 00000 n 0000937280 00000 n 0000937398 00000 n 0000937525 00000 n 0000937650 00000 n 0000937765 00000 n 0000937904 00000 n 0000938019 00000 n 0000938098 00000 n 0000938207 00000 n 0000938324 00000 n 0000938403 00000 n 0000938502 00000 n 0000938584 00000 n 0000938701 00000 n 0000938799 00000 n 0000938909 00000 n 0000939003 00000 n 0000939094 00000 n 0000939191 00000 n 0000939290 00000 n 0000939392 00000 n 0000939504 00000 n 0000939586 00000 n 0000939674 00000 n 0000939773 00000 n 0000939881 00000 n 0000939963 00000 n 0000940078 00000 n 0000940181 00000 n 0000940296 00000 n 0000940395 00000 n 0000940504 00000 n 0000940651 00000 n 0000940763 00000 n 0000940892 00000 n 0000941012 00000 n 0000941127 00000 n 0000941251 00000 n 0000941357 00000 n 0000941490 00000 n 0000941665 00000 n 0000941848 00000 n 0000941978 00000 n 0000942063 00000 n 0000942148 00000 n 0000942233 00000 n 0000942344 00000 n 0000942444 00000 n 0000942538 00000 n 0000942629 00000 n 0000942726 00000 n 0000942839 00000 n 0000942944 00000 n 0000943023 00000 n 0000943136 00000 n 0000943227 00000 n 0000943340 00000 n 0000943440 00000 n 0000943549 00000 n 0000943643 00000 n 0000943752 00000 n 0000943864 00000 n 0000943983 00000 n 0000944088 00000 n 0000944182 00000 n 0000944264 00000 n 0000944373 00000 n 0000944494 00000 n 0000944597 00000 n 0000944679 00000 n 0000944761 00000 n 0000944837 00000 n 0000944952 00000 n 0000945053 00000 n 0000945159 00000 n 0000945298 00000 n 0000945398 00000 n 0000945491 00000 n 0000945594 00000 n 0000945693 00000 n 0000945793 00000 n 0000945872 00000 n 0000945978 00000 n 0000946091 00000 n 0000946194 00000 n 0000946276 00000 n 0000946358 00000 n 0000946440 00000 n 0000946541 00000 n 0000946640 00000 n 0000946719 00000 n 0000946819 00000 n 0000946901 00000 n 0000947006 00000 n 0000947102 00000 n 0000947187 00000 n 0000947296 00000 n 0000947372 00000 n 0000947473 00000 n 0000947570 00000 n 0000947672 00000 n 0000947751 00000 n 0000947836 00000 n 0000947912 00000 n 0000948023 00000 n 0000948124 00000 n 0000948221 00000 n 0000948306 00000 n 0000948385 00000 n 0000948482 00000 n 0000948583 00000 n 0000948668 00000 n 0000948756 00000 n 0000948835 00000 n 0000948932 00000 n 0000949029 00000 n 0000949108 00000 n 0000949211 00000 n 0000949299 00000 n 0000949438 00000 n 0000949544 00000 n 0000949650 00000 n 0000949765 00000 n 0000949880 00000 n 0000949956 00000 n 0000950062 00000 n 0000950165 00000 n 0000950274 00000 n 0000950365 00000 n 0000950453 00000 n 0000950547 00000 n 0000950702 00000 n 0000950814 00000 n 0000950950 00000 n 0000951080 00000 n 0000951165 00000 n 0000951280 00000 n 0000951396 00000 n 0000951484 00000 n 0000951599 00000 n 0000951693 00000 n 0000951842 00000 n 0000951963 00000 n 0000952093 00000 n 0000952199 00000 n 0000952305 00000 n 0000952393 00000 n 0000952530 00000 n 0000952646 00000 n 0000952725 00000 n 0000952813 00000 n 0000952907 00000 n 0000953008 00000 n 0000953104 00000 n 0000953195 00000 n 0000953301 00000 n 0000953389 00000 n 0000953530 00000 n 0000953639 00000 n 0000953718 00000 n 0000953863 00000 n 0000953969 00000 n 0000954078 00000 n 0000954176 00000 n 0000954283 00000 n 0000954368 00000 n 0000954456 00000 n 0000954541 00000 n 0000954654 00000 n 0000954758 00000 n 0000954840 00000 n 0000954928 00000 n 0000955040 00000 n 0000955157 00000 n 0000955253 00000 n 0000955344 00000 n 0000955438 00000 n 0000955526 00000 n 0000955637 00000 n 0000955740 00000 n 0000955828 00000 n 0000955951 00000 n 0000956069 00000 n 0000956170 00000 n 0000956269 00000 n 0000956367 00000 n 0000956458 00000 n 0000956549 00000 n 0000956643 00000 n 0000956740 00000 n 0000956839 00000 n 0000956918 00000 n 0000956997 00000 n 0000957076 00000 n 0000957195 00000 n 0000957299 00000 n 0000957387 00000 n 0000957481 00000 n 0000957578 00000 n 0000957683 00000 n 0000957782 00000 n 0000957867 00000 n 0000957972 00000 n 0000958057 00000 n 0000958202 00000 n 0000958314 00000 n 0000958428 00000 n 0000958550 00000 n 0000958662 00000 n 0000958780 00000 n 0000958865 00000 n 0000958956 00000 n 0000959065 00000 n 0000959179 00000 n 0000959261 00000 n 0000959346 00000 n 0000959425 00000 n 0000959528 00000 n 0000959625 00000 n 0000959722 00000 n 0000959816 00000 n 0000959895 00000 n 0000960006 00000 n 0000960112 00000 n 0000960191 00000 n 0000960273 00000 n 0000960361 00000 n 0000960478 00000 n 0000960580 00000 n 0000960695 00000 n 0000960783 00000 n 0000960871 00000 n 0000960965 00000 n 0000961090 00000 n 0000961201 00000 n 0000961295 00000 n 0000961386 00000 n 0000961471 00000 n 0000961576 00000 n 0000961679 00000 n 0000961767 00000 n 0000961897 00000 n 0000961970 00000 n 0000962068 00000 n 0000962167 00000 n 0000962249 00000 n 0000962350 00000 n 0000962432 00000 n 0000962533 00000 n 0000962630 00000 n 0000962729 00000 n 0000962811 00000 n 0000962893 00000 n 0000962975 00000 n 0000963073 00000 n 0000963170 00000 n 0000963252 00000 n 0000963334 00000 n 0000963416 00000 n 0000963517 00000 n 0000963614 00000 n 0000963696 00000 n 0000963778 00000 n 0000963860 00000 n 0000963958 00000 n 0000964054 00000 n 0000964136 00000 n 0000964237 00000 n 0000964319 00000 n 0000964420 00000 n 0000964517 00000 n 0000964614 00000 n 0000964696 00000 n 0000964778 00000 n 0000964860 00000 n 0000964959 00000 n 0000965055 00000 n 0000965137 00000 n 0000965219 00000 n 0000965301 00000 n 0000965402 00000 n 0000965499 00000 n 0000965581 00000 n 0000965663 00000 n 0000965745 00000 n 0000965846 00000 n 0000965943 00000 n 0000966022 00000 n 0000966123 00000 n 0000966205 00000 n 0000966306 00000 n 0000966402 00000 n 0000966499 00000 n 0000966608 00000 n 0000966690 00000 n 0000966772 00000 n 0000966854 00000 n 0000966955 00000 n 0000967052 00000 n 0000967131 00000 n 0000967213 00000 n 0000967295 00000 n 0000967396 00000 n 0000967492 00000 n 0000967574 00000 n 0000967656 00000 n 0000967738 00000 n 0000967839 00000 n 0000967936 00000 n 0000968018 00000 n 0000968117 00000 n 0000968199 00000 n 0000968300 00000 n 0000968397 00000 n 0000968494 00000 n 0000968576 00000 n 0000968658 00000 n 0000968740 00000 n 0000968841 00000 n 0000968938 00000 n 0000969020 00000 n 0000969099 00000 n 0000969181 00000 n 0000969282 00000 n 0000969379 00000 n 0000969461 00000 n 0000969543 00000 n 0000969625 00000 n 0000969726 00000 n 0000969823 00000 n 0000969905 00000 n 0000970004 00000 n 0000970086 00000 n 0000970187 00000 n 0000970284 00000 n 0000970381 00000 n 0000970463 00000 n 0000970545 00000 n 0000970627 00000 n 0000970728 00000 n 0000970825 00000 n 0000970907 00000 n 0000970989 00000 n 0000971068 00000 n 0000971169 00000 n 0000971266 00000 n 0000971348 00000 n 0000971430 00000 n 0000971512 00000 n 0000971613 00000 n 0000971710 00000 n 0000971792 00000 n 0000971893 00000 n 0000971968 00000 n 0000972067 00000 n 0000972164 00000 n 0000972261 00000 n 0000972343 00000 n 0000972425 00000 n 0000972507 00000 n 0000972608 00000 n 0000972705 00000 n 0000972787 00000 n 0000972869 00000 n 0000972951 00000 n 0000973050 00000 n 0000973146 00000 n 0000973228 00000 n 0000973310 00000 n 0000973392 00000 n 0000973493 00000 n 0000973590 00000 n 0000973672 00000 n 0000973773 00000 n 0000973855 00000 n 0000973954 00000 n 0000974050 00000 n 0000974146 00000 n 0000974242 00000 n 0000974324 00000 n 0000974406 00000 n 0000974488 00000 n 0000974589 00000 n 0000974686 00000 n 0000974768 00000 n 0000974850 00000 n 0000974932 00000 n 0000975033 00000 n 0000975130 00000 n 0000975209 00000 n 0000975291 00000 n 0000975373 00000 n 0000975474 00000 n 0000975570 00000 n 0000975652 00000 n 0000975753 00000 n 0000975835 00000 n 0000975936 00000 n 0000976033 00000 n 0000976130 00000 n 0000976209 00000 n 0000976291 00000 n 0000976373 00000 n 0000976474 00000 n 0000976570 00000 n 0000976652 00000 n 0000976734 00000 n 0000976816 00000 n 0000976917 00000 n 0000977014 00000 n 0000977096 00000 n 0000977175 00000 n 0000977257 00000 n 0000977358 00000 n 0000977455 00000 n 0000977537 00000 n 0000977638 00000 n 0000977717 00000 n 0000977814 00000 n 0000977910 00000 n 0000978005 00000 n 0000978084 00000 n 0000978159 00000 n 0000978238 00000 n 0000978335 00000 n 0000978430 00000 n 0000978509 00000 n 0000978588 00000 n 0000978667 00000 n 0000978764 00000 n 0000978859 00000 n 0000978938 00000 n 0000979017 00000 n 0000979092 00000 n 0000979189 00000 n 0000979284 00000 n 0000979363 00000 n 0000979460 00000 n 0000979539 00000 n 0000979636 00000 n 0000979731 00000 n 0000979826 00000 n 0000979905 00000 n 0000979984 00000 n 0000980059 00000 n 0000980156 00000 n 0000980251 00000 n 0000980330 00000 n 0000980409 00000 n 0000980488 00000 n 0000980585 00000 n 0000980680 00000 n 0000980759 00000 n 0000980838 00000 n 0000980917 00000 n 0000981011 00000 n 0000981106 00000 n 0000981185 00000 n 0000981282 00000 n 0000981361 00000 n 0000981458 00000 n 0000981553 00000 n 0000981648 00000 n 0000981744 00000 n 0000981823 00000 n 0000981902 00000 n 0000981981 00000 n 0000982075 00000 n 0000982170 00000 n 0000982249 00000 n 0000982328 00000 n 0000982407 00000 n 0000982504 00000 n 0000982599 00000 n 0000982678 00000 n 0000982757 00000 n 0000982836 00000 n 0000982930 00000 n 0000983024 00000 n 0000983103 00000 n 0000983200 00000 n 0000983279 00000 n 0000983376 00000 n 0000983471 00000 n 0000983566 00000 n 0000983645 00000 n 0000983724 00000 n 0000983803 00000 n 0000983897 00000 n 0000983991 00000 n 0000984070 00000 n 0000984149 00000 n 0000984228 00000 n 0000984325 00000 n 0000984420 00000 n 0000984499 00000 n 0000984578 00000 n 0000984657 00000 n 0000984754 00000 n 0000984849 00000 n 0000984940 00000 n 0000985057 00000 n 0000985151 00000 n 0000985268 00000 n 0000985372 00000 n 0000985472 00000 n 0000985566 00000 n 0000985660 00000 n 0000985754 00000 n 0000985871 00000 n 0000985976 00000 n 0000986067 00000 n 0000986161 00000 n 0000986255 00000 n 0000986372 00000 n 0000986476 00000 n 0000986570 00000 n 0000986664 00000 n 0000986758 00000 n 0000986875 00000 n 0000986980 00000 n 0000987074 00000 n 0000987189 00000 n 0000987283 00000 n 0000987398 00000 n 0000987502 00000 n 0000987606 00000 n 0000987697 00000 n 0000987788 00000 n 0000987879 00000 n 0000987992 00000 n 0000988095 00000 n 0000988186 00000 n 0000988274 00000 n 0000988365 00000 n 0000988478 00000 n 0000988581 00000 n 0000988672 00000 n 0000988763 00000 n 0000988854 00000 n 0000988967 00000 n 0000989070 00000 n 0000989161 00000 n 0000989272 00000 n 0000989363 00000 n 0000989476 00000 n 0000989579 00000 n 0000989682 00000 n 0000989781 00000 n 0000989893 00000 n 0000989984 00000 n 0000990075 00000 n 0000990166 00000 n 0000990279 00000 n 0000990382 00000 n 0000990473 00000 n 0000990564 00000 n 0000990652 00000 n 0000990765 00000 n 0000990868 00000 n 0000990959 00000 n 0000991050 00000 n 0000991141 00000 n 0000991254 00000 n 0000991357 00000 n 0000991448 00000 n 0000991539 00000 n 0000991630 00000 n 0000991741 00000 n 0000991844 00000 n 0000991947 00000 n 0000992038 00000 n 0000992129 00000 n 0000992220 00000 n 0000992333 00000 n 0000992436 00000 n 0000992527 00000 n 0000992618 00000 n 0000992709 00000 n 0000992820 00000 n 0000992922 00000 n 0000993013 00000 n 0000993104 00000 n 0000993195 00000 n 0000993308 00000 n 0000993411 00000 n 0000993502 00000 n 0000993615 00000 n 0000993706 00000 n 0000993817 00000 n 0000993919 00000 n 0000994021 00000 n 0000994112 00000 n 0000994203 00000 n 0000994294 00000 n 0000994407 00000 n 0000994510 00000 n 0000994601 00000 n 0000994692 00000 n 0000994783 00000 n 0000994896 00000 n 0000994999 00000 n 0000995087 00000 n 0000995178 00000 n 0000995269 00000 n 0000995382 00000 n 0000995484 00000 n 0000995575 00000 n 0000995688 00000 n 0000995779 00000 n 0000995892 00000 n 0000995995 00000 n 0000996098 00000 n 0000996186 00000 n 0000996277 00000 n 0000996368 00000 n 0000996481 00000 n 0000996583 00000 n 0000996674 00000 n 0000996765 00000 n 0000996856 00000 n 0000996969 00000 n 0000997072 00000 n 0000997163 00000 n 0000997257 00000 n 0000997354 00000 n 0000997473 00000 n 0000997577 00000 n 0000997671 00000 n 0000997788 00000 n 0000997882 00000 n 0000997999 00000 n 0000998104 00000 n 0000998207 00000 n 0000998311 00000 n 0000998405 00000 n 0000998499 00000 n 0000998596 00000 n 0000998715 00000 n 0000998820 00000 n 0000998914 00000 n 0000999008 00000 n 0000999102 00000 n 0000999219 00000 n 0000999324 00000 n 0000999418 00000 n 0000999512 00000 n 0000999606 00000 n 0000999723 00000 n 0000999828 00000 n 0000999922 00000 n 0001000039 00000 n 0001000133 00000 n 0001000250 00000 n 0001000355 00000 n 0001000460 00000 n 0001000554 00000 n 0001000648 00000 n 0001000742 00000 n 0001000859 00000 n 0001000964 00000 n 0001001055 00000 n 0001001149 00000 n 0001001240 00000 n 0001001353 00000 n 0001001456 00000 n 0001001547 00000 n 0001001638 00000 n 0001001729 00000 n 0001001842 00000 n 0001001945 00000 n 0001002036 00000 n 0001002149 00000 n 0001002240 00000 n 0001002353 00000 n 0001002456 00000 n 0001002560 00000 n 0001002654 00000 n 0001002748 00000 n 0001002842 00000 n 0001002959 00000 n 0001003064 00000 n 0001003158 00000 n 0001003249 00000 n 0001003340 00000 n 0001003453 00000 n 0001003557 00000 n 0001003648 00000 n 0001003739 00000 n 0001003830 00000 n 0001003943 00000 n 0001004046 00000 n 0001004137 00000 n 0001004250 00000 n 0001004341 00000 n 0001004454 00000 n 0001004557 00000 n 0001004661 00000 n 0001004752 00000 n 0001004843 00000 n 0001004934 00000 n 0001005047 00000 n 0001005150 00000 n 0001005241 00000 n 0001005332 00000 n 0001005423 00000 n 0001005536 00000 n 0001005639 00000 n 0001005730 00000 n 0001005821 00000 n 0001005912 00000 n 0001006025 00000 n 0001006128 00000 n 0001006219 00000 n 0001006336 00000 n 0001006430 00000 n 0001006545 00000 n 0001006648 00000 n 0001006751 00000 n 0001006855 00000 n 0001006946 00000 n 0001007037 00000 n 0001007128 00000 n 0001007241 00000 n 0001007344 00000 n 0001007435 00000 n 0001007526 00000 n 0001007617 00000 n 0001007730 00000 n 0001007833 00000 n 0001007924 00000 n 0001008015 00000 n 0001008106 00000 n 0001008219 00000 n 0001008322 00000 n 0001008413 00000 n 0001008526 00000 n 0001008617 00000 n 0001008730 00000 n 0001008833 00000 n 0001008936 00000 n 0001009027 00000 n 0001009118 00000 n 0001009209 00000 n 0001009322 00000 n 0001009425 00000 n 0001009516 00000 n 0001009607 00000 n 0001009698 00000 n 0001009837 00000 n 0001009947 00000 n 0001010059 00000 n 0001010168 00000 n 0001010277 00000 n 0001010414 00000 n 0001010530 00000 n 0001010639 00000 n 0001010776 00000 n 0001010885 00000 n 0001011026 00000 n 0001011142 00000 n 0001011252 00000 n 0001011367 00000 n 0001011482 00000 n 0001011597 00000 n 0001011742 00000 n 0001011861 00000 n 0001011976 00000 n 0001012091 00000 n 0001012206 00000 n 0001012351 00000 n 0001012470 00000 n 0001012582 00000 n 0001012697 00000 n 0001012812 00000 n 0001012957 00000 n 0001013075 00000 n 0001013190 00000 n 0001013335 00000 n 0001013450 00000 n 0001013591 00000 n 0001013709 00000 n 0001013827 00000 n 0001013939 00000 n 0001014051 00000 n 0001014163 00000 n 0001014304 00000 n 0001014421 00000 n 0001014530 00000 n 0001014639 00000 n 0001014748 00000 n 0001014885 00000 n 0001015000 00000 n 0001015109 00000 n 0001015218 00000 n 0001015327 00000 n 0001015464 00000 n 0001015579 00000 n 0001015688 00000 n 0001015825 00000 n 0001015934 00000 n 0001016071 00000 n 0001016186 00000 n 0001016302 00000 n 0001016411 00000 n 0001016520 00000 n 0001016629 00000 n 0001016741 00000 n 0001016882 00000 n 0001016998 00000 n 0001017107 00000 n 0001017216 00000 n 0001017325 00000 n 0001017462 00000 n 0001017577 00000 n 0001017686 00000 n 0001017795 00000 n 0001017904 00000 n 0001018041 00000 n 0001018156 00000 n 0001018265 00000 n 0001018402 00000 n 0001018511 00000 n 0001018652 00000 n 0001018768 00000 n 0001018884 00000 n 0001018996 00000 n 0001019108 00000 n 0001019220 00000 n 0001019361 00000 n 0001019478 00000 n 0001019590 00000 n 0001019702 00000 n 0001019814 00000 n 0001019953 00000 n 0001020070 00000 n 0001020182 00000 n 0001020294 00000 n 0001020406 00000 n 0001020547 00000 n 0001020664 00000 n 0001020776 00000 n 0001020917 00000 n 0001021029 00000 n 0001021168 00000 n 0001021285 00000 n 0001021402 00000 n 0001021514 00000 n 0001021626 00000 n 0001021738 00000 n 0001021879 00000 n 0001021996 00000 n 0001022105 00000 n 0001022214 00000 n 0001022323 00000 n 0001022460 00000 n 0001022575 00000 n 0001022684 00000 n 0001022796 00000 n 0001022908 00000 n 0001023049 00000 n 0001023165 00000 n 0001023277 00000 n 0001023418 00000 n 0001023527 00000 n 0001023664 00000 n 0001023780 00000 n 0001023896 00000 n 0001024008 00000 n 0001024120 00000 n 0001024232 00000 n 0001024373 00000 n 0001024490 00000 n 0001024602 00000 n 0001024714 00000 n 0001024826 00000 n 0001024967 00000 n 0001025084 00000 n 0001025193 00000 n 0001025305 00000 n 0001025417 00000 n 0001025556 00000 n 0001025671 00000 n 0001025780 00000 n 0001025917 00000 n 0001026026 00000 n 0001026163 00000 n 0001026278 00000 n 0001026394 00000 n 0001026509 00000 n 0001026618 00000 n 0001026727 00000 n 0001026836 00000 n 0001026945 00000 n 0001027082 00000 n 0001027197 00000 n 0001027306 00000 n 0001027415 00000 n 0001027524 00000 n 0001027661 00000 n 0001027776 00000 n 0001027885 00000 n 0001027994 00000 n 0001028103 00000 n 0001028240 00000 n 0001028355 00000 n 0001028464 00000 n 0001028573 00000 n 0001028682 00000 n 0001028819 00000 n 0001028934 00000 n 0001029049 00000 n 0001029158 00000 n 0001029267 00000 n 0001029376 00000 n 0001029513 00000 n 0001029628 00000 n 0001029737 00000 n 0001029846 00000 n 0001029955 00000 n 0001030092 00000 n 0001030207 00000 n 0001030316 00000 n 0001030425 00000 n 0001030534 00000 n 0001030671 00000 n 0001030786 00000 n 0001030892 00000 n 0001031025 00000 n 0001031131 00000 n 0001031264 00000 n 0001031377 00000 n 0001031491 00000 n 0001031597 00000 n 0001031703 00000 n 0001031809 00000 n 0001031942 00000 n 0001032055 00000 n 0001032164 00000 n 0001032270 00000 n 0001032376 00000 n 0001032511 00000 n 0001032626 00000 n 0001032735 00000 n 0001032844 00000 n 0001032953 00000 n 0001033088 00000 n 0001033202 00000 n 0001033308 00000 n 0001033441 00000 n 0001033547 00000 n 0001033682 00000 n 0001033796 00000 n 0001033910 00000 n 0001034019 00000 n 0001034128 00000 n 0001034237 00000 n 0001034374 00000 n 0001034489 00000 n 0001034598 00000 n 0001034707 00000 n 0001034813 00000 n 0001034946 00000 n 0001035060 00000 n 0001035166 00000 n 0001035272 00000 n 0001035378 00000 n 0001035511 00000 n 0001035624 00000 n 0001035730 00000 n 0001035867 00000 n 0001035976 00000 n 0001036113 00000 n 0001036227 00000 n 0001036342 00000 n 0001036457 00000 n 0001036566 00000 n 0001036675 00000 n 0001036784 00000 n 0001036921 00000 n 0001037036 00000 n 0001037142 00000 n 0001037251 00000 n 0001037360 00000 n 0001037497 00000 n 0001037611 00000 n 0001037720 00000 n 0001037829 00000 n 0001037938 00000 n 0001038075 00000 n 0001038190 00000 n 0001038299 00000 n 0001038434 00000 n 0001038543 00000 n 0001038680 00000 n 0001038795 00000 n 0001038910 00000 n 0001039019 00000 n 0001039128 00000 n 0001039237 00000 n 0001039374 00000 n 0001039489 00000 n 0001039598 00000 n 0001039704 00000 n 0001039813 00000 n 0001039950 00000 n 0001040065 00000 n 0001040174 00000 n 0001040283 00000 n 0001040389 00000 n 0001040522 00000 n 0001040636 00000 n 0001040742 00000 n 0001040875 00000 n 0001040981 00000 n 0001041114 00000 n 0001041227 00000 n 0001041341 00000 n 0001041447 00000 n 0001041553 00000 n 0001041659 00000 n 0001041792 00000 n 0001041905 00000 n 0001042011 00000 n 0001042117 00000 n 0001042223 00000 n 0001042356 00000 n 0001042469 00000 n 0001042578 00000 n 0001042687 00000 n 0001042796 00000 n 0001042929 00000 n 0001043043 00000 n 0001043149 00000 n 0001043282 00000 n 0001043388 00000 n 0001043521 00000 n 0001043634 00000 n 0001043747 00000 n 0001043853 00000 n 0001043962 00000 n 0001044071 00000 n 0001044208 00000 n 0001044322 00000 n 0001044431 00000 n 0001044540 00000 n 0001044649 00000 n 0001044786 00000 n 0001044901 00000 n 0001045010 00000 n 0001045116 00000 n 0001045225 00000 n 0001045360 00000 n 0001045474 00000 n 0001045580 00000 n 0001045713 00000 n 0001045819 00000 n 0001045952 00000 n 0001046065 00000 n 0001046178 00000 n 0001046292 00000 n 0001046398 00000 n 0001046504 00000 n 0001046610 00000 n 0001046743 00000 n 0001046856 00000 n 0001046962 00000 n 0001047068 00000 n 0001047174 00000 n 0001047307 00000 n 0001047420 00000 n 0001047526 00000 n 0001047653 00000 n 0001047777 00000 n 0001047934 00000 n 0001048053 00000 n 0001048177 00000 n 0001048334 00000 n 0001048458 00000 n 0001048615 00000 n 0001048740 00000 n 0001048859 00000 n 0001048983 00000 n 0001049107 00000 n 0001049231 00000 n 0001049388 00000 n 0001049513 00000 n 0001049637 00000 n 0001049761 00000 n 0001049885 00000 n 0001050042 00000 n 0001050167 00000 n 0001050291 00000 n 0001050415 00000 n 0001050539 00000 n 0001050696 00000 n 0001050821 00000 n 0001050945 00000 n 0001051102 00000 n 0001051226 00000 n 0001051379 00000 n 0001051503 00000 n 0001051627 00000 n 0001051748 00000 n 0001051869 00000 n 0001051990 00000 n 0001052143 00000 n 0001052266 00000 n 0001052402 00000 n 0001052550 00000 n 0001052626 00000 n 0001052729 00000 n 0001052847 00000 n 0001052932 00000 n 0001053020 00000 n 0001053129 00000 n 0001053250 00000 n 0001053350 00000 n 0001053426 00000 n 0001053559 00000 n 0001053647 00000 n 0001053754 00000 n 0001053848 00000 n 0001053957 00000 n 0001054036 00000 n 0001054115 00000 n 0001054209 00000 n 0001054320 00000 n 0001054419 00000 n 0001054525 00000 n 0001054610 00000 n 0001054710 00000 n 0001054811 00000 n 0001054915 00000 n 0001055006 00000 n 0001055097 00000 n 0001055188 00000 n 0001055305 00000 n 0001055410 00000 n 0001055507 00000 n 0001055608 00000 n 0001055702 00000 n 0001055811 00000 n 0001055914 00000 n 0001056011 00000 n 0001056117 00000 n 0001056217 00000 n 0001056293 00000 n 0001056384 00000 n 0001056501 00000 n 0001056605 00000 n 0001056684 00000 n 0001056766 00000 n 0001056863 00000 n 0001056980 00000 n 0001057081 00000 n 0001057199 00000 n 0001057311 00000 n 0001057417 00000 n 0001057564 00000 n 0001057686 00000 n 0001057798 00000 n 0001057957 00000 n 0001058051 00000 n 0001058170 00000 n 0001058284 00000 n 0001058394 00000 n 0001058488 00000 n 0001058597 00000 n 0001058715 00000 n 0001058900 00000 n 0001059021 00000 n 0001059118 00000 n 0001059230 00000 n 0001059348 00000 n 0001059479 00000 n 0001059590 00000 n 0001059684 00000 n 0001059793 00000 n 0001059890 00000 n 0001060011 00000 n 0001060116 00000 n 0001060225 00000 n 0001060364 00000 n 0001060464 00000 n 0001060591 00000 n 0001060702 00000 n 0001060808 00000 n 0001060920 00000 n 0001061053 00000 n 0001061156 00000 n 0001061291 00000 n 0001061409 00000 n 0001061527 00000 n 0001061666 00000 n 0001061784 00000 n 0001061913 00000 n 0001062031 00000 n 0001062119 00000 n 0001062219 00000 n 0001062310 00000 n 0001062437 00000 n 0001062545 00000 n 0001062624 00000 n 0001062775 00000 n 0001062887 00000 n 0001063004 00000 n 0001063100 00000 n 0001063207 00000 n 0001063313 00000 n 0001063437 00000 n 0001063525 00000 n 0001063638 00000 n 0001063746 00000 n 0001063837 00000 n 0001063949 00000 n 0001064040 00000 n 0001064157 00000 n 0001064260 00000 n 0001064363 00000 n 0001064445 00000 n 0001064554 00000 n 0001064661 00000 n 0001064765 00000 n 0001064862 00000 n 0001064971 00000 n 0001065056 00000 n 0001065155 00000 n 0001065254 00000 n 0001065356 00000 n 0001065456 00000 n 0001065559 00000 n 0001065654 00000 n 0001065677 00000 n trailer << /Size 5765 /Root 2 0 R /Info 1 0 R >> startxref 1067222 %%EOF omake-0.9.8.5/doc/ps/omake-doc.ps0000664000152300015230000430754610656155147014562 0ustar jyhjyh%!PS-Adobe-2.0 %%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software %%Title: omake-doc.dvi %%Pages: 255 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: CMR17 CMR12 CMTI12 CMR10 CMBX12 CMBX10 CMSL10 CMTT10 %%+ CMR7 CMSY10 CMTI10 CMMI10 CMSLTT10 CMTT12 CMMI7 CMSY7 CMSL8 CMBX8 %%DocumentPaperSizes: Letter %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: /usr/bin/dvips -t letter -q -o omake-doc.ps %+ omake-doc.dvi %DVIPSParameters: dpi=600 %DVIPSSource: LaTeX Output (built with OMake) %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro 0 0 %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def @MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N /setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B /rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginFont: CMBX8 %!PS-AdobeFont-1.1: CMBX8 1.0 %%CreationDate: 1991 Aug 20 16:36:07 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put readonly def /FontBBox{-59 -250 1235 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F05C11F9A72F5DA508C30BC4BF52C8B1EC5FB 7F9DDDD0964A6D59193A389D490DAA6F6ACD02CF71C06802F3AE5A001F2B3A6D EEB60E9DD26DBCE1D29C825A9BEFE3A6572E70DC7B60344C3E0C9C77ABE1804C 7ED61C544F0B4A3D6C7662DE8575C07BED3F6DBA7D64A9C8613AA152B74A140E AAD9B66E0FAEED6AF9D1820F361C1269A5E90519A3E6D40782E06778C0AFAA30 E8CEAB87054C4D156C1B14B4E8471D78648FDAC70A3B8ED474FA356393A77420 4211F60E397D2FEFC6A8D91A80C84EB9E38E663249FB91D5C8A5CBA68BA04272 5D5D42497E1CF5CA1E62EC2B139F5CD4D6318EBBA7AE28614D2D88709C2A3762 611524B8A1FFC7B0FCBAF77AD8159C354F4887DB1A27781DE0A4BA7DF2CE2025 D9278CED48584E8E6BDF30BFD24284BA1DF828B637BF84A02908BBCED67372C9 EF44711BC2B1DA343C8D9D27A9745525C774F5D639B7AEC197CEEDD06FD27923 35ED0D402AEEB51134665A47847429D91CF419CA9B09DC905F610F8DFC54E606 ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404 7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178 C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10 B3F5A131BB19D1E5414C86C5F995521076340536E10613E42779FA15EFDB451F 53495CE8EFF239E4EC442E1439594549D45F5276F93D496C9AC712D762D0B702 E894290BA028837304AFDDD8BAA6564E9DC307A14A7A206550FADDC7784DE3BF 3390188BBCDDD929C82B1D7B529553BA75ACF5B385D31EE3902D96B2B5DDFFF1 9F0F90FD791E54128C1717F313486896868A34FAFF22E23CEF046D02C156CEFB BEC5F726D4263EBD641C785872BF90346BF49088C8877F9A3402BEDCDF362EA5 436C779C0CB62A95AA06B1492A401D2EDF3E6BE56ACC2AE3BAEBF714DAF5A23D 00D64D527051A3011E5C7EE06717306B0B661EBBA51BF78757E76F3F702C0F5B 49E7C40E3332FDE276C911B61E73A6FF5E3452A7576DFA8E5F4AE0CCE22992B5 461CAB01CBC1B06CE88F3E5D9E13AA5619FEBB8D453EB3A0BAE6980C469151A2 B2A1C75B147CFB48654EA6F59F3A35C7E5254199E13190C94B9FBA47F6178871 A2D25CE75AFBAF7D03338A68A4C349012B07C7AB2999028C75EBF0D97AE453D6 CC7F93D4067380DD7463BF6FA26DC69F254B81DD0156B5CB737FC8E48D34D8C5 C4DCF86A4C9C6C44426E334C2D3EAD5C1E328C41C534315ECCD621483071343D 2B8A6D47FC53C7A8C778849AC1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSL8 %!PS-AdobeFont-1.1: CMSL8 1.0 %%CreationDate: 1991 Aug 20 16:41:02 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSL8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def end readonly def /FontName /CMSL8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 65 /A put readonly def /FontBBox{-57 -250 1183 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 55FBD18DCEF738EFB8E96B4B61D9C1A24F5FE2B29EF89EA4320BCB1D16E30E22 AB926EBADAACFDC5784740982ADC9619BFDF3587BC880326DF2645BD3F6409AC 012B0B344BD79FEA9BBE68C5991560F6B485FEA5A9418CD7C21F4E8BFAB0AEB9 AB7ACDA6E4048878C4553ADA40897C7BC097742B8D59F5F953C52DDB3C5227A7 7A48FB09415A838E57EFC792511370D8A80D8B4F264390AF74103537B8863D3E 3CC5CAA8D82C42E56883793E3119C8280D3A886DD6B06FEAEAABDAD4211C7551 F804D2020EB0936FFDDB671A0458D48E5F046C0658263CC06E0CCA5025C5A85B 619503E7E0CD8D0981643084181AA2CB6ADC0F9518AD28F09B48B0872C421694 8052EF6677CACCD7A6E2774CD78619531BF1E3DA483001BEA74364D5EC0835F0 F703A57ABBD5677E8C2E0963E2A41E2B0282DA91D296FE913C60D92E91C2589E A87636D1224C191F34039D3F85763BA740F9251AD55C2BC1EC7E2710091C0B94 BBACC14BA5375755A2EA8746D44FF28C04C85E3129177F768A3DC7B5C0D9A898 6E94C65A7C48F51C96895B9BBBE5E680EA8B4F340133D1A62E8343E7408EC5FB F28EDC0499F930D23AF4B386078C3546A62099493717E310789A8CDABC68B26A 45BB427189FA5E6DED50AB8AECA4972633F80AA1D19314232260307C92CC5B22 F17110C8BB2BC61D42A9ED985DA6337C69B5480ECA29396F9898AA0BCF64B60B CC727F96D7B4C50FF0B3F8512E3295B86C2A947B052B9AC8DF24B4F230C0154C 37F883CF45551B02EB30C153EA3911905E1718F8E1D278DC84D6216A3BA624E3 E8ED33D3DB604701265D4DE185588255F432E2895169AD603FE81ABD547CDE41 5D0CF019314C247B727C3115088C31945EA7A9CB95B872172CF57784E67B3B51 D1259E2717BFEE488AA7E2BA84B85CA876070F77699CE5C4E9F20832000E7218 8C0FDE9EC0B201E5B92CAC4DD84926908083FF93F3A4517CDD6010727A0CD541 E39694EABD7330F13491715614B23E425EA003FFAE1BB252DA186F115B85A0D3 A543889E9151FFFED88B576E939750CB724D9F0BBC71A59C6AB5DF3AB97084F1 CDF8B66D0624BEB01F687C61621D100516CBECE2582339BFB3BF96CA8AFD533A 5F095C6C72830639606112FD1419C66898C082AF60DAD8ABC2310F957E3702E3 426AF763218D08377AA5703ED79DEBAA36668772F9349CE692E6EF010E5B8BB2 B1BC93AD43EC96C4C9AB1ABA5D9580357020E441AC6C9D12AB9F17CF7DCA6F89 B74E7E95F334ED 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY7 %!PS-AdobeFont-1.1: CMSY7 1.0 %%CreationDate: 1991 Aug 15 07:21:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 24 /similar put readonly def /FontBBox{-15 -951 1252 782}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949 8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443 E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765 424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8 E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63 868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A 089B2D24EA6B6976E1F3C02485E789C85C7E810960F119EC37E05891F39A554D 781418ACFD85A47E5B8CA21171BB12E5FC14122C199EBB08306BD207E8D35D10 6294680236A775598040BCD3B890F2ADA10D4D7AB4AC31C3FDAB223255464DB8 D7548AE5AFA82C4C84FE90913ADA0866F42A919869D738F790CA0F7CCBC878C5 4EB8662598B38324AA3368E7A4D9F3C7C7974512E63C7C9EAE86BEC8E0A86044 0C670B99CE32A3436E144E03681F1B271A7C66FCFAB987D94411953E7F2F88BB 7B020A41AC48E566B562008D04802356AE5F5579A430E2E095DC89BC186D8DF2 98267617AB3E65A24010357087B460810E743A2270967D252D79CAD2900A4FD2 86CFE19358E245 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI7 %!PS-AdobeFont-1.1: CMMI7 1.100 %%CreationDate: 1996 Jul 23 07:53:53 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 105 /i put readonly def /FontBBox{0 -250 1171 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868 DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811 4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3 FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB 76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5 123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770 012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6 A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413 44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC 4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050 01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608 D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3 914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05 261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615 24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2 A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663 9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C 889787CDC194F782420BB447DE705EAE7963391B36647BFD662706AB28B30382 7E7A5BDCB851A85292D46EECE27CB23438211D04CB1ECE8DEEE49365CF9F83B5 67CEDB275F119B245287933BB9B48A7062A03ED8B20FFF01CCEA58A8AB205F7C 4D910E2572381D550394AD131B7BCA5E5E11319F3DCEEC0E22B7F35C5B648CC5 5A42368643A16F14C84BB1F7FFFCA5E3E838DCDDEE2F928047C8C6AAB9193836 67FC9D1E38349DCAB94C65FB6FD34934263E4E558E5BB570BE665BA580B1C5BE 401776616DFFAD1A9D2897A6A438612E5172EB0CD9D1EFCF542B8099DF494692 64F16AB3BA8E3D8503001661025993F8400F7F874F2955BBED51BF34632CA0D1 3E0EFAA7A1696E59EC28F6E720C5D128F70EEC6F9DCFC50A5621674AAB62BB9C 8E60421D2A67D53921DF2BDB730170D29E09E640315961C48CD7C4649D5FA0CE 072A5CACEDA97F6849D5ACDF2D9C24868FA29D75F2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTT12 %!PS-AdobeFont-1.1: CMTT12 1.0 %%CreationDate: 1991 Aug 20 16:45:46 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 45 /hyphen put dup 46 /period put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 85 /U put dup 89 /Y put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def /FontBBox{-1 -234 524 695}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E 3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B 426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161 E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32 6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5 A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE 0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC 85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4 C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC 12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D 048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8 0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725 741D08B9DB688731A6C8F9F0B1FDFA20C46ABF1BE836FCA0757242BE4780A41B C19304DEC802CBAFBD0D116B1F98C01BF41ACD72DA8C56F8A03756E1850CF32D F657FFF4377B43F208A3F33191F9F6F36FBB0CDA3514D68ACD8DCB2FE67AB377 C6BD16D11FFFD61E05B8B311EBE8D05013ECF1D03F574982E3581A188E337498 3B68080D69F7D88F2863362577B6566B9526D1E05DCAEE47F7E336489F4CF445 E5F4E1DD5EF2B795F184EC5B427C77D49CF637A004329C7DF89447AE0D21C4E4 EC6A7A83F5F44AEF5CF49993B7ABBA5840EF7B5B74B3812A435F175933C09EDD 5B126D82A3BE1D6ED6F076A9A39CF33A6C1AA26D2E7F57346DEBAE1E933090AE 62758D7DF2A2E34A872E8A9E839F10C0803A791700E4D511FB5A56698DB159CD 29AE3C1AACE36ADA22A4F683C263B116F8FFF219DE3B33F66F712DAEE43482AD 26BD10FF6B342532BF36C8AB9D5374652E4BCF97FB2F0BAE4B0E979CBF0F8D99 22D67F14DC4B936A230BAD77C19A88C81926C7E4CEBC8E00DAB2A1080F668746 79C114C223C4165E5CB2512B1C750489A01E737C046D8DBAAE122A34F91BAA1F 0E2257D0D46ADDFDE245BB98470C94E54A9FB091AA8B50BBC3659DEF786D5372 4F179810531AD165253A19CA82FE88E17163168A5934EC64D2663A2CB32FD9AD 197609074BB7A2E4A16B9EC518D1AB13B7B37B4189D63D3592F2933F912F7CCE 62E6FB0A6FE3963999E920E015151CC8E7E42A6B96D779DE312D2BE25D796965 CED3966AA6F4428F4EAE2089B23F56CAD57FF9C78251D3AB5297287A3E08B564 F03B8912BA0A8CF827155F601C71E2277D6FBCD6B6FFCD6902E9FC53188397D7 94D5666FA3B5C78594371C6430E9627C96E80E1B43814B06F7B4786FA1FF0F22 439CF282D83FB1CF55455E5B79E116683B083ED291C555090E29C43FE4F72FC3 E49BEC92E6ED092A36713CD39C2FE8D86B8CCA561D7242E5BFC03A7F2502126E A0E1F65EAA70499FF6947FABAA3F83516C8F4C61512F0071340C206304D04AD0 AFB70A5931FED523B745D9C0345F2AD3D1014A71A775CD3A3069E9E37561CFA9 31CFD1AC593A0C3E3C0BCEDE22E386B1887A5B672FAF485631D20325EF279DB6 3B93A3DEB79F8EF9D3BEA1839AC983502E884034F324A6B264F6751D325CBD88 A62DCA7DF2F089DA1AAEA9CBFB700EFA71823D03EF8BDF1DAFF6F5DBE6A9DB59 BDA29BAB577302D2018B8AB04F6C859C3695D5F744DC086DABFAEE3B1A9719BB 4F452DFD1D7B6A6B1C6EBBDEB1E884FC009BF66D16997CD8A5CC8AB0B3CDC578 724BE3B976450470AD6E82021945156426F8A75CDADBFCC427789465E8458A89 32BE0A6F1721F84162ABD2C4DAD324B76A266054F15AFFD4B8B0A8CB69FEC3F4 66D3E7D427B53DE222C0F85C887AF16C84226E4FB611EF29497B7230F5D6F636 7168E8833C658BBF2BC42102AE505856CD7862B43BA0F9F9ED6588711B1BAB16 94ABE367DD91B5D5387854AA72EECDC2F50B38419E24765333F032B0D505BE65 1C6E135BFB5AC58D60D2F228418A59DEEB5123398D18F6CAAB3D46F040FD286B 5E4010E7DA4E65BE918968A862CD47D036542EF49D756C7D360273F07546C6CF AE0CB969E6E34451C8588BD57BDE85402385301144569D89105BCF8073D37690 2ADA033E23C0AD63B8CAA3C348B7D093B8D182308EAE7FAA25D724279612BF62 8EAC5C03DFD5D7A319E2112F8937AF6FEA432930E3FB6D1AD8791386415E2A9F C45A647703BEE9FBFA601D0706639F89A3CBE2B0A443F9CA892DD4EC358F364A A4FF18A04D7F41D125E1697DD9D2DCBA9DB8D661CF3343A1D4C10F70BC197B4D BEDB6DB112EF606F53ED8DD04790EE194F1FFEC9FB784EA1C46997C5F85274D8 6BE271CEDC94CA1E3B72E3D1CB55B8F7B2D53BEE18C706D66B7F8E584624F103 1AB9BB51729FF77FFA986DB2B87EEE189BBDDAB68C75266B8339883884D57EEE 492D28C6D892D28DC4544C8A08B4A9494F20ACBE214CC01442374DF8ED84B3A2 913F69AE5EFE35882671E550FB63E471D67AA6B1AE866BAB90DFBDEBA51533BB 2CA5BFE045E1FADA3FD3629E4114DA4F7D64772FB8F8EBE1A77C3E2180D78B11 BD7C2B54FAB7DB0EC10F6476DE560E480F58314BEF1D7EF3667A526B0088AD31 C7ED26F285958DB02082D6B469CF83C631B167C77A7CA6C6DEAA55C2075E5AB3 089CB1D34F869FE57FB952158E8E358A52D1F1FAA31DBA014D5F8C0B53CBD6B5 0E2B73A3A24B85116F1C4B82EB689275E9D198F13E37D3CF3640D825B7FA1824 17133C8EA4C8FB228D3E1290535FC6E0B8D29A9320E00B205FE3C4E662C045D4 67BAAC32EF5A0FA16530FCD588966AB1BAD7455900CEDAC5C9D0E216BC88E63F E5D02F7B134999A496A9879946F72404AE2080FB97AD5196CCDBB29DA0670BC9 751732F37E4EA10AFA0AFB44CF18138B9B8C1FD48DC8BF41F870CB645B0E9BB0 72013335FB0AB64695F0745146A3C3306041E0C817F30E853A1D598D32697F23 EB708D1BC0749D2ECA539A17EBF8F72E5A67CBA04C7A241B0CB3659605459E10 BB366B0F3CD2731A9D0DE65D7F8A5823D50EF04554E2B973CA50B2277E89E226 5BB9648190D75574CBCF74433B65CCA1ADB4B8C18BAF7A9EDE90F1AC21F1ADE2 4C29596FBCB45BDDFBD313B06D85019D57AF1EFCC1515A7DB8F1639D4A4541DD C73D01443526D7B8CC5E6EAB28ED0AFECE6F6BC1FDECF14924EAC8F87E418B38 CD336FE7063F9B9E9094B5545F332E2007F7959990E8D76074FF498A979D4F27 F3C475261A02E4D630B8B735FE04A4D32045AB08E63A9F2810527B67B5FA72E0 D14A08A36ADFFD4C1BD9FF3372D4DD1B09E2E031F89B1DF855A378AE83DC009C 6F4711D4CDE87242163FAF309210BCFBE91236EE05CFFFEA32C24A5E0A920809 D3901F51241177AD3EB3238C15D6ADE3D78EF6B05FB6BE8FE89CA1DD1653B081 6EE583D6CDCC5DC4BB16FF151A9D413BA591836459198694A27058A37E74502E 5475CF8F94C5E410F1A2B8FF8A86A0517365AEB32D03A2994BDC9DEEBED17125 0FFB06198079A36E5425DFF9844BEF1B0AF600A25469A14CBC9353FB5F394DD9 68F5883B9159C20365B9020A2695C97B1CEA819BFF76E5D0B351706BD87DC984 5C2874295F426EA5C2893A11117725179AD1354056CD5FEC8D568C9554EC60E6 52AA4B002F0261E1A9A7BBD8E52CDEBE6F4CAB25385F7A11EB9F1B7B25BBC87B ACC9972D58BAA52606C21FCD4B98CC22E782DAF7CB1CE00C13DFCDCFA0C49E93 6C159243ED27D4E3AD3B6E3388283EFA0AC489AFB399A7779B73F8880EDCF8C1 41298BD746D1E9DB8F6F42D5BD2303ADE74F7A56A47242CCE77A06A906AC32A0 2AAF3DFA04BE7B300B62861F91CC3D89D3E505FFD4CA00A80CED885DEF3E0302 C37DFF14225BEF2E0ED423B9ADC074FDEDBC688F9EA5540913B7020A2D108B8A 9A9C613C80236F0C1EF78D202E7ECB865CD422E17C793A0DCDFB171266A47B0D 766DA5D4893A6C0EF207099594BA22EE02166F68F10578CB518BC291DCBB8285 7140FB04E2AD1028CF0F4C1314D39E163BFB138342A18E19A1DC7C7DF57D630F D0AF99C51F9F2F0CC33AC233D2BB971665F745A66BBA5CB3705AD802CD30889F 3205685BAFC25448F80729450E1843B7E1B571432B916C4E8B386DB6EFECC3B2 11AB23490329D7BC47CA64DB6E6790D01B171D6475ADBF1754AD1869F68CFF90 4ECB7897CE994D7BBFEC96DDE39B74BEEDD258B5B0676632DA287267CB465C7C ACA374453D81C2C894309B694D8334780F0B00162D42C8F13B1A15B018D92162 1A6DF20C18CF977EBDCCE8A821ECABC91BF75D43BFB1F9521A45B2264E8DDB4E AE544D23EAFF0F5B6DA41758CAA81F487AA94FA3692A535EC47D8C0994FDE800 326CD8E85510BE570503B013CE823CE3EC3075C584D4C665D475E1E372D84329 3441F5368D8019B7BDF1B471F8D7824C7B889E643C7120ACA8A7AB1A9384DE84 61A79775A5DE0CC6B0918DD5085BC6DD86E57EAA092D736A090D88742974B729 CAF0291503D554E6EE6E8CDFADDFFD6E4CD4D7DB0C9CFD36B86C72BA5F3CC904 329E80C93A95BD900C6892BD7D2696BA703E4E1466FAD940F82A1121EB4D3FE6 702D5A29F5E644534D6994FE6A6A566EE1DC7EB04FA51331E19DD9C599E6C540 964828825A93481BD8CC786C0FD52A1B582B35775F109AD7FD03140DC1F5B265 C776E398A48E38FB237116F98A27CE51F8C077462CA8DE1FCD48C294DF4F4B0F 38621EB31A93C81F29EC2815F4D79D91B332754291CC3B538FE8798602FDFF76 930F4323F2DB35BC2A2BE601BC26F34E8AD7B7B448FC09B36763A04A431B6F87 CC1281185B95BB27D8055DF6D11C8FBB81CB08F3BA6B371AD99B6A71AF553ADC C7F79DFD10EA97F62EC345CD391908F5E782C6458E4D085BD0A394E8F0891B23 6AAE7815A77B1086AB3661A99F0508561F0ACD335AC88375711188A87E40C9CA 844482E523139F53F61BACF3409DAE2D62CC2ABB9D120B72C72234FFA42D4C2F 2824DF30B81CE02BE64F818D19CEA6E2A6B182B8AEF5EF16E0EC21330296AD9F AC26B7575EAD951344989E010D3F904E33654720432EBF3FFCDAB0D18F8CA379 369DB1C1451DF3F6B783AB4ABDD33D732B61E529201C70F00E954EC59E1FB0B9 D5E864B11E8DA924873E160919475BF634E115B7F00846A55314FCF4131750F3 B99A5CB73B33E60440CBC6FA68A3E642B4AC6B34BA826335A11E795F43F3FB0C 0A2EC560C6573BBA2041D88D095499CFA74CB10DAB216EA510C790E130F0FEB3 EEC87BC11182293BDEFE485AB3B51AC3C0CD536F175BF63E00E07D9514E5402A 2573575C61EF1C15C9C0C977CCDCA78CD81295D3C0EF7A85F0FF1545E286DF74 D6CB135A4D405C8ECF15830C9DBB139ED4F492624A440F7742D0964AE8D3ACE2 2F2F12A25201988F8F94BF3AC8006C981E42360BEBC32DCB81D0BAEC542DF2C2 19AC92C36FA580352F9D1391DC01DE992C6BC490DD90CC785644C172A24EEB4F 17E1489E4695345DE34AEBBDB437B7BBC811CFBA91945C38402D6F980091F15F 03E9A7169F94BB66CD01E1B5A4D8BB9B6C866A7236902628112AB1C518928E93 F276133CC20FAE4586B0184D00DBB46C3FEF444FA9F2DCF4259310B6BB0D4C4C D1FDA7F9A5646158E1A9ADF8B9B5F22958B475FCC5681867F663413CAAB5EFA1 5DCA7C0739CD0DACF3BDD3DAB84252DBA7A2F8D7EF4CD7AE9F19F6E5D4311844 96B6E73404E33CD9D0D1359E931516C7EFD05B3AE879FB75AE5C7067B17D445B 483D6A409196A1749D968ED4C12900D7A15297F0311EC3FCA4213A90501C67A4 ED94C90269B38EED37A64D58E1058471A1BA83D5EF4B399D4E6C2ECB0D8FA06C 163E5531022556801518CCB39861BD341C22B9131C057C0CA118AC87B8E237D9 B7D39214CABDE8803E54BAB67A112288D1DDBF9A9065EF09AFDA784D49320DE3 E429D03DB288656171B8ED50518EF7C106F813739A1607EA4479F0F8F8573E99 B102E081028A2FF065E4988D5F833EB44CE1D162E51B184BF906A2DFEA810613 58759D2207BDCA60E884585B40EF475EE1004095986107B4DB1F4300933C44B2 059D8D7B78410CFA6CF75437C379FCB1A08ED2ECEA30E5751049303D7E4F1ABD 5A2AFFCD42C02616AEE24751BF678ABA2D40CE95A43FB404B2BC85F56F2A753B 0F2A8F2DFCC4AA7434364F07950159417F0F764C86E8378D41FF93A8CBF90AE6 1043D0B98E38B9801073C33F112B4B48765127FF7170C794A31F604D6E234A6A 352FD69E4AE177F306FEB694A275495CA49F7CB3C32EF5074F2A6017E83853C7 EEF37B295845CCE0D73E382BECB3662187159C285B716F9785277B1C146ACE44 412F65371EF1F4632A7BC2445633E1FB0883CDF6A5BC9E6FF74A53B6D1CE204B 14519B30E9C729DD435C9BF2CA2A5A3C07B81617307172D28CBB4067E942F729 539B7861C7526AC44FBB2BE8DB9373416145BEF5781DB7EB24455BC5A8045558 AA657FD9DDEC40951058F93E91FB515AF8E0CB616928F6E1B7229159D8D1C54E 433F756140115BCE1BAC63DD4095F07CBD8F054925D68BC2DF1F7272F77831FA C128E7C2FD3F876A9362C6F28E987FEC93BA259204B2DBB1041E41B945DC13A5 0E4F68A2B8B920499806493F28AF5F219725FC97F26BFE460B957D23DECD35E1 220F3EE97C42D78CEB289CC1E64426172766546E57281F0E726C0645B111B251 80B96B9042F08B628B50E42A8F6EB2F743B936E6904208C9B8C8BA36BC2E46E2 CAC6A54CCB54FC7F057AC367E848D00B2B86C61696644FF4A5883949BC29F6E2 98BD0D92CCD0DFF620E1F3CA420EF591F24C28894E0089FC3BF699026C1BF2E3 5B172CB411F24CB67BB080856CEB8195DD2E9D732250815454D0ACC928D50660 2069C0E103C95E13447790ED1803EBB916FFB3D621A9C8A06CB3CBE8A4A6FFE8 C5FAA9504A2CA62E238B45BC44DDD2D76BE12E8B80C4390436FAA776BA74079B 974DB80E9106815E0EBE2E10A328E42C268BBDF40E86EC49D5E7C4BBDAD8F75A 1FF927AF01628FEBE4280B014AEE27044057A5001B7880A903CC2FBA13C021E8 F19456394FE7FB836042769D519D5D84E781F3FE9F34F582E63B3D1153B03809 B7F5F63E86FEA0A39288326C9C955E89AEEEDD065B699F82D9B4E1A11560E0BE E21E37A19068BE146F18C2DC68062785ACD8719C73CCC00CA8DA4BD8439803B6 F7993CD94B0D3967BC81DF406CB0BF8D7588AAE66E7FDD2EE0A8EAED777C9781 56E49C993046F558EF520282965DC110B0A36DFE0897E30F1D5E263DAE3DC381 A8AEF787239623011A6174ED1CF86D2E2E33FED6D437CA91E4BEB8A669F35BA2 07F1AD45A7ABEB088E6D49590AEF50230CEDA5B149709464AC630A2DAE4EAD3F 28533CD070B71DE99F069CDF2CAB9F64A975B7A0D004BC3D105E9D6E503AE6D6 E124ABC1C7A63DE79256701F763CC034E59478B1FBAB86D1F0AEBB44B5A09418 099F2B1C3BD9178957706F1EA8AFF323686969DBDF87BB22045251C342AF0EDE 0072BC2216B366B8F8C133BDCB2FBE95DD068709D6BF2B163A87C0A3AABB2B30 4888952E39A0C1C18641D0D1C8DD49FC8F64281BFC049E585DD8849FB720BBE0 58D79D89D2C6FD77754DEDD6ADA5948EFF3C1A85C30104E6DE14DA75EDB6FD89 35C37F0FFD583B49A4D0AD6B7C7FF4D0FD736A0EE2C28DF5032AEDB7502645B6 D970C0F1351C2F9BD8051EA604AA9EA9EE73757422E68913C1BF6DC63477BEE4 E292EA9B35677DA2C989A41CBC0AC86EB1B09020BA93B410B21341D68D1C4235 F379B42819642A55426765C94A2DCF78A76306422BFDB0439889C62C8C4C99C1 DD5C0DCF24F48B73161A2CA84AB02380319EFE31AC21F130C69970931B6905F3 57FFC552267878F1FA20720155D2867E3F6FEE9EBCD23B03AF156E51A79D8F4D A90B2D010B8A80986879F82499545B2650CC02E40ADD0ABF8BA2CA5EEE5E691E DFB8B910EFACC7D89A4D4A6F9A8F2BEB422471097B5F19111D822126D7E45605 9AEC409E136A652C58F552F27BBB91E720B30B29F17078EBB993CBF6BD83D0B7 847AE12FBEECAEDA757ED66259AF4C79F5D00CE7B4E362443A2A485E8A3AFD1A F7543A589A385297D370EE506C9E047EDCBFF41AFC9B728CCF35886B0700C331 78092DA5615B97E969DC8EE742E803414AC6D8AE5D692284CC2762C1F635A2CD 99E5876346A0B75185CAAAFF57711CEF59A6D7B18E3A90465872A83A34847A5A 094FF859254D75E574C8639FADE42859483C9D2582F732FF50194437750EB265 A8B46EE0D1D8FE3FE50FE6FF2207A199C594ADC668549DC9A9E485949DD5E7A7 BF20616666DD7066BC51E0A48B2DCCF0902B51F6C2E73976A9D6303634ACD41E A42C02DE5C12F4ECE9A9E70B9BAD4D4995B56D9B9E2B3BF6F79E3433E64B8ED0 024E5EBDC94898657A4D82A82F43AED7B883A9E3F4E74920A3456AF2838C5F3A 1F387A4C5064A8D3DDF01F7D065C8107EB1E955F8F0973B3A4AE07243210B45B CB95C7F23255B99E098BE8A0C635A7003E1A01A62A8EDC69FC2E1EDA81387452 5CB1287B82C572B52FDD39036A606DD41695B88478836583C574685E7DF54A05 D01FCD3E2917AF29FE78A92DBAEF012DEF7AD568B9D2E3E84EDB98D6B2B8AF4D D3B1AE08009112765A1AE3286AA02D48F5A0FF2B2754998F4F0D2BECD9FBAF2A A58881CEA93939A2A66A67AF33495DD6446EA2C66525062F99226319F25F5AB8 96EAEDBC14CADF879AC5DF8D073F4889F8FC79E7EFB4381E05E364A6651309EF B043BEC3CFCB285AE9E242CD62E7D69B1CFDC2C2F7306EE16935B6244DDF063B 2137E5336068E80DD25F819283265C644962EE58B0C077A749DCA0F58AC8D83D 4A4CBC1993DFAD02AC2B2FE4704285248BBD82607569470279E27A9BF69D45A4 BA78C5F272047AE78C306ABDDDACE194EED91F6DDEEED1827AA75D61D07580FE 07FB4412C4AC605E74B912D43EAE3381F6B6DC58873CFB89FEA5605FD7AEA983 AACDD2F1338F7E629A07DB9EE638C02063DC5DEB95F71E9C2A6DB6C999BE516D AFE4DF5C5B9F2AF0FB0E527FAB9A39B8A40E4369B1EFB27BE455FB5C432955B2 3E1BA80765DD44113B4E6329EBB12ED1BFC741782230DE0C693A9461AFD357E8 DD193F88E4A19952BABE41C265071CD2867838FA9591889A050CEDC071F21554 AF08A6607AFBE98135F9807146A0FDB12B49085B1BBF2C4BD0DF187877E162B6 82BDD56B86D383E9FC26A304C0258E5951A22180345D3F61BAC4179734B5D241 74B87F2E1D53C1240F4BCE5397E5D406304CCDAB964B6BD50D97108C235EA498 EDC98D643BFFE13947A689F07B2B47B4D3FBB1DDEEDF9809B4AE4748774F98C0 1441F42501396E47BFFE903EAA4EEC1F0020A5E4F8A263318361057BED2A021D 200F7965096EB5ADC773FC2D1B022B025C6190B12838F96E46D27C4C8F167E6E B09CC7A838F28B3FFF6B247418BC1C86953DB5F4958425EFF01031F72F246EF4 0277E2587DAF42D7C3560D0DD3DAC8936821D133C94F34CA9365097E11B62CD5 932CBB25195C53D092CAD4C872F6EF3B9D8BBE873CE3893DABB8B4CED6C21B9C 10AB7FB3CD98496DBFAF79FCE16770DECCF0313A5DB2B3E0241157999095D39D A3D0A92681F501E013A64F65B87D8527A523BB49A8D5BF1062F427D800BECD4C 29E33873F684B981932D956EE3D4ACAB1A75727D71BB2C05E4D0AA7DF17480BA 6A6010D169A5ED52BBCD9762ADC66A5EF49B452320235A62CFBE0D9DBD2DCDDB EB8A45742EF181472817293BFE192933DA686BC2C3B79E3313E5604D8E6BE107 B777BA406FBF7596C04D762AF1CA456F53D1381CE8567BECD57117A84042DED7 2DC38FC67AC1D4356457E1F1992135739CC5410F387A8B3E8F7EBCF0D7F0BD26 BAF319F1FC3D8E5A5DD64163E074517D4F70911D0477901DE5858E7BFD585DC6 BAE1AE356C7BC2BD7E7DE5806696135A5FCDBB9B799AC274E3B8D463E119870A C23FE5DA936AC95EFA7D87CFD6FA75713FF2732D370791F1F49713918523C630 F41D93AD3ED1E47CFE82B48BC62AE70DDCD82C33559B5D844B3BAD37016AEED8 86ABBCA0700067C6C47D1E5B31E99DCCA17C6931155C14E4CA2ED5847F0A8C35 98435D90574EC8078DE5C711E880CED5F5F1AFA37E93DD75DD2AC1E5082E5544 FD52F71F461208CBAA6A103B6F915755FAED9AB5E8C661C4B8F860781EBCFD64 3229C6838A831A8C5CBA6471A4DD058CF7E130174AE4A80B90A6BE099488698E D83C0AACAA0E7CF09A04617AF2CC208E419BB3689F8FE3A0A11923C2048F402A BE6C32C78D7A9B99A66660A7A823CA55267A30D57230B52FB5400E9F4122C03A 08E0AF1EC1DABCFB174F201EE64D9E9AEF5C565F9A9D11CE4BE5B5BD4BF099AA DDFB83AD7A5081D6D33A27B6F36F4C38034DE9B1BEC1DB901B5A069EAC2CE1FD 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSLTT10 %!PS-AdobeFont-1.1: CMSLTT10 1.0 %%CreationDate: 1991 Aug 20 16:41:43 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSLTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch true def end readonly def /FontName /CMSLTT10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 46 /period put dup 65 /A put dup 67 /C put dup 69 /E put dup 70 /F put dup 78 /N put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put readonly def /FontBBox{-20 -233 617 696}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0528A405DF15F03DB1C3DA8B850431F8 0E5F73DAC973450D1ED0530313057E971FC7E7CA88E61DA6DB9A5CD61F0F76CB 4DE9105D0627B8DDF51A655098229920CF429CDAFC3F7788C95E7AB30E84F840 8CED52E98DB4CFF161D2E62B0D28CB8B0AC82E7A8D2C007953BAFB3056D66079 8064956E257D31C13509FB81A250D9E875C77A4E91CC49E9FB3C0718B2F691D4 B4A64F351F4DD68133DED7629B0D96E5124584A16FD2AC7A3EB244A934FF059F ED7297B0505F3C2994AD66A3CA5D2728B034DE94B64A8AFAF341601BD4DB5858 C9950A8BB9C598B8960609F48116ABA8C007190AF0ED335EB5BF61BA6871FA5F EAB5A26AEB5C7C352EB80799CEB983F19EEFA801093F62086AADD0B80BB6580F 2CF61B1390FA56DFA1A0B61C58DEF96BA767A8A37EA44730783C600706606C60 4EE74EA99B7C0F8E2525C8847F3D31907C3C483EFA98F6C416B6B2C343DE6370 52FAE423008D086A76A1FFB327CC7FD84B1C66B203A4F41582F4599A82F8362D 38108452EACCC937FFC4F3ABBFE3628DF51367DA6BA3F6826FC6522D6AC5E8EA 00BAD300FFB6DEDAB93237704202BACD030AA824B1E97C0AFE17FCE8C75F4FA0 B8A74329A6CF1788C7EB34DA7307411E9AD7ED8D6582884456E06E033B4FFE7D CD4DD8B06AD01340CCCFBC382C18CA451E4C886B01D082FF8CC5793F4727C3DF B52B4F1A242F31D1EB79D1E39A1D4FD13D6C5E2A42AD4B4D1CC4EE7BA0E5F80F 802E5AB57EA15F4DE44D82AC408AA86D4BF58EF967FBC6497BBC7F017C0598AE 32CF865DFFF0FC7FF9E6DCE9B5F2F4C7491AC674F46E8E7660452CE0A77C1EE8 00DE382ABED85350033EC00053134DBABB69DD3098576DACC5D1E325C4B372B3 943F8E90BE7B97B996D39337ED6D90F8041298B7A27B223358A5161FE98FA4E0 6879524934E026863F790FE3B5A8A41AD2E91866F81B195E0A02D9BDF971633F 0FE9A9BEA04CBEA9E46AA44C31D694A0AF3D7CBC1FC4988F6A81130613047150 12203A85849EF4D9238604ED8040DC85FB0CDE867F50EE685C8B2BB0574FE22E B02F2595A161E810E2C9FB46B3E15BF0B3E7591FED05EA180D9D6604A8A7DA91 452D1E4661F29309DEBED63CC8CFF7157376364BDE8F02BA5C24BB17F071254A 984163DF853BB28B698C741D42C0B5AEA25F58E859927A69867B61506D1018C4 25D69182A5D94F8B6C3C0AD8EAE874B3A3156025DD8E35383E59CB8B0E043406 3D5A43C6ABCCC437806B27165B620C9211FAE450385E88730C081E84495879F4 63E9F0FC2D56503FAEA8E183E74CAFA0074F26C3A807DAF6A720782A66B3A5BA D1985BA86A1D645E43BE3C703316F8687F088051A326E80CDC37DB29057DC42B 5C3434BA628B454A0A20B11419FC5C4E627D6FC776D8252181A634545DFDD3D7 586DF95B78B77565A37321035446E829FEA1F92E7CD66D5D0BC72648F6BE0437 4E169F12CED826713764C7753540A4173A466B1C095C273CF485C5625E8C5C8D D87D9DF9B8E138407472DAB0B21BEE7470D304F56564CB7AF00D90FA04BF2730 137C585F496174CD3EA860F169A359D4C90B9F29E216F7451BC4F2FEA603C2DA F931652B0B74F5A80648A9BA46EFB552C16E730DEF1580418DC6564A4B69C8E9 7EE55F349DFF5BE4F0C7432967A63896BA23BCAB6F3FF418533DC5E7B0A5B998 E99ACC9934D4A9F63FAD24A2A80787BD93660E8800D923548E298931210C70BF 5E4E20000DFB7B6580AB3F2635F6774FDDB519FCE778CDBBE05AD51F668E4C2C 9001AA908440D48CB15347B77C025568CA3DAFD52649528187C9E21755DA0728 CF8C900A2205D5C2ADB66735D2E7F73B828E7C25B538EA0F0E577D46172AD3EC C16E102605A87F398B265083E62175EA8023927C0D06E129828709CE8B7B94E0 CF825CCA7BCD6A006A29E9AA986CFB2C1EE706F3EB0AD0B73982DD02E0E0B0A9 B9ADCE808C8BD11EB54ED52DF174BFD9B8C0601A1F715CD24D235F70EFCFFEBD 1F177C76982A5D407632F8E998AA5CB4A9DA606830E91101137239027DA078FC 099C48CD686BDCAA451632C3E7F270460B9A4624CAB95130F538AE8C35519163 E64EE32A5E30A6C1A812A0792B2A69E68E92D2974474560F31D5075530962637 EC61D9586113BBB11ABC42D757FEC3B1CBB0F0F36C0F2277164912BAF11AB01A 356751FDFBE1DE6BDF557D90AF19CACD43CF552EA5E837DCFA46A01F23FA0E5A 522152E85324C479BC337F900C537734EAE983F3FAA57A551E3CFD443FCADBED 1D7347889BEF4C165D852FF09E6CB4A3DE96412D6D47B5609E4A5142FFCACEE7 6E8E66311481A0C9C2416A4F53710181D209B57D7257D3F01C3932EE8D5230F6 5000C5D65204CA33F3731982FD3CB3ED2780E97F9F23246A17876A8A6102F5E8 8CFCC1DC55B39F7DDACB314DC4E082A07A25614F69C309D9DD59C7D4089DFB39 2B908EA1242AEB197948AD16676DE139E3A64B5A8D76AB92912F09BF787F2878 95F58865A09A3E3478895F31DCEC4384448F693B3B6C621E0A57ECDEC298A2CA B38EA87D87C1837D1A5B28A0013D99820A55750B4B7F18FE3A58AF3C57D8E5A8 24A2757DCAC8C97284FBBB1A691AC46DDEB8DA9074061227D2DEABFDF1D26205 3A0F97BC3105D7CA6B46E2366969C3655C1D4E63D052CCC3E226E6D323943BF9 F4126F3D1ACC357872324A1B6B878AF92F08195E8336454240C1C5108BB17448 E958B64172EFC35F1CC891F0A64544E5B763B7B2BC6121AABDD600FDA5C06608 927EEE4341B51D24D4712967F943F702AE6DBEDEB9789D4F91400E40EFBFAFEB 275ADF4DFE8401B59AFB1FBC87691083BD50A9CC21301F0260922FC625DE1CBD 7FC9F9FCE551333DFD1B1169563B8D97B7D86AAC03D0C49DBCFC758A36B48D43 BF5834D7B0FF89436B04EB7443FF238521AA2C5AA937876688835343D21D3D35 6AD30921748ED247BD8BBDCC018DFE7BADE57A3AA2D2DEAB61E8B98414DD144F B38B187D55E32A93BD200596D2C2846F8148C2EF276C4D8F688D1377F0BC0C3A 73795A43348945F65622D589F0E8008369A2730586DD0D5D3C157D3BEDD8B07E AC4390DCFED39AC82A01820AC0FACC722FD8198BDF737BC5410442483A937235 5F0FAEDCB36F0CCA9247DE5D9FC2677720036D73006D1160649777B014FC1F59 066895C2FA78B283C154A6A30530E2F118D4BD3982F197618CCD153CC64ECE68 E334CBD522B84AA8F6153403022971A7174989206A15E442006BFBE562BE84E3 3C50A4DC6C8235AD1D453E5C2AD9EAE27E785560D4A8B5A9EA886B2B2BD8099D 7B6A7B8FD7080C1D265D9DA28C90A95020B47DC1346727740D51D4039B08610A 81A62F343266E1C623E41D490572439548EEF6DD226C840711E10A5586F70D97 5FE35D37351C1CAE04DB42A42DD0A83F70CCAAE91B403BE5D68CA284316149FC 93EFB6B8B4E64C5391C1B1BAA5DB08479D8AE3D69BF344CC58D285F9C6A8BB25 3352C1084051B25819198526F25B1CF49417F91E2056B1C05F8DDF6F36777A1A D1D5410106CE886FF8CED34383A916B0C57944DC850B833626E6DA156A62FA83 F66A6A732544459593887FB05C03FCC1BD35722FAA79AE94546FC2FDA41047B6 9E9C86DD07052FFE6CC6E5875939F23480B8E63CCEF7495AF1830AA9D2952744 E7A4E9A0D789FE06F66F91B890A5DAE129C7F3D7EE4E617A807BEDD4C4D6D49C FDAAE9E810B2B049DFA13AA935D8C83981 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.1: CMMI10 1.100 %%CreationDate: 1996 Jul 23 07:53:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put dup 59 /comma put dup 60 /less put dup 62 /greater put dup 78 /N put dup 97 /a put dup 99 /c put dup 115 /s put dup 120 /x put dup 121 /y put readonly def /FontBBox{-32 -250 1048 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E 6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF 8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE 03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 95601766758D28AA39D6FF7952C9CF80458BACD8BE9F677A3C5CA138C56802D5 9251F4F6BE86F2F64648EA170396DCB47584B9E3EC0A226B4A4C11E5875AA0AB 7CF4C8B7A78AFB362BED6062191CFCA784471381BE70177E33075E357A20A6C8 4ACEBB937CBB6D46FE7324D929DAA2E7C071813F1B572D191563AF7FF824C925 7121E677F1ADC038899386DD11DA14AEFB3BE77954352AFB43B591C9FD864DC5 2D30F3416406AB8284F700062344304A8E4863927971AC6C852237BCB5B227B2 7D961C5DCEF51EFC14D9AC125FF23D0C266BE94A168969346909029DEE89E10D 5C56205459B005F821905E47F840D4D0785B86E758577CD8714C59087E3CAF76 D5CA708A0990C4B0B3EC075A389CBDA51939BDE413AB8F112E2ABF7A222D36A6 C0256446312787CD7F50129E6719C2D46A74B33E8CD73F870801437B88E83D2C F5C730BABD73806204C7447B081B663886FAE78CF5798B7FDCBF57549ED121A9 D1BDE699D77E723438DBB9940112C0016B10239781F6D6202C3AFEC74326144F 35539B7AC0AD84FB75543BF1D71E82D9A206DD0D1CCC5D75067ACA0FFF12B8ED 5FE9EFFB8DF8F17AF6ECFF2280CED6657E24444FCBDDDB6138655E49D23CED92 CB7C7846411A651188C579621A1176D47CBDEB456FD1CDFEEB723CE4562DC08C 2158781F6FBD7556194DC01A9CFFB618D84E552347B4A01493AFFC5EA926FA11 518F90ECAD584BE02AE9131E0115A0E49667E3B1FA1B11D00BC3CEA636E4B6EC ADC7F7B33A4E301504801FAD9817C926966FC4D5E499F3881651DFEF1F3EE2B6 8156BD7266707C17CD92182818BAFC93C66485C47107DBFB79D14B65ED2F7F25 45EC0B7549C1F2961E0733861507189C255DA0782827B5662C1DFA6F546095C7 4931D69D1BBD62CA610395804FE998985E60F823FB241D72D6E95F20D7748149 00BB5B8D8C874605B2C9839789FD9B696F5C3218614DA858D99DE8D8F43C2D37 C184535A80E3E19D487E5E90746894AA0EF88A8EBB9DD849189996E94C9EA0EE 46B4F207E8FDC4745E3136C2912D8CF70F9C6036358E09A188CC2A273BF7ABE3 5D8FC8582D3C1749CA0A0562F15EDA6F171FC31620C857B27189354C81524EA2 D9E34F05027C1C5310359528607A3731E4537CD171C31AEDB183CE1EF981A5B5 CB855EF7C7D068CAED5D5B7AC56595126D4703A936B21507AEF0C9F9D0254692 BDA42B63ECC2439992D6AEBA0C74BDFD509063E243957C9196B97C89D565D134 2C1325F8BB42110E750404A654F95BA9E74458ADEE14B21D3523E282D59DA6E7 C51884103E68734C53A8D9E822B7ECC4502C72CE18974FB9CFC8FEF754B2442F C6137C675E21CA281E4FAC034200198118741AB88F8F4DB50376F3A7AF86EC9D C6B025602B27A4CC10F05A49BF6371A4430A5EDC0CDB855C3C66001583B96C3D 9795C10C3DD2A2B64F306342D547DB9BAE5E6F8B58F4EF9EE88EF621676BD146 C8F37724E8901444486242505210027D2355D8156129E1C7E51A6778B024D80C 1B0B108D403E901DA886DB44FAE71DC7E573ABF1919FBA8916C6DE2B9132AA86 D95A430BF3BC6502EE65A825907BB679D4CE9DFD0E3055BC0283D93828B87DFF E257BF0D4D22B0E35FB5166C9173677F2AE6EDE04758E3F0AD546A19A12A72A9 C9634F7795F896616C870D3C0C6AA7099FA26C2304D8D644EB8B83DFA1BE5BF2 C4F0B312FFE6C21C942265B2699D4AED0C93A9E5386BED1DB1B141AB428B3440 36096836ADCFBAFC6EA9E9FA0810CA4A4D36D1479AED518BBD3363F71DD2225F 2C4ED9800E8D1A57C73873DE756E964A783F92597C283D9654FA5341808A15CD 4FF503DD519B7F8B103E5DFCB408478437EA7E03DF9DF5CCF2B49F7DCB88D6AE 743892A63CC9C09AB539A7C713B71F91596000602A6094E17125AEF7BD672BD7 B2BC05D11226CFFCF4B8B5AFECC1716DBA9F80B82DFACB8FDCDD8402F4F0BC11 13E75733E8132CF544738F4BF9765ADBD16952516BE5DA16734FFF365D4DEFFD 1D6148EB84405E34D2D93324E4B29F3ACB1682CFA2E059D248F357ED1BFA8A88 528AEB82A4DE0B35B61B6228892902FCE9AED46D7010213B73F1D2101546ED95 B76BBF7F518AF60AFA9CF112CA0288FC08917D4B3E03971891174EE4CD3FB0CC C500AF05F12FB9786A268013E2C72DED0B3283F8BFCE2BB3B21922A7DF18C470 07D0831278BA7F6D1549B39BA26DA5CEF03B148066F22C5699C945E38B1EC968 F9AAA161C805636458B2D15299C97FEE44C5F59D6F621D08ABC73986EE5AC24D 91D716E1E8F06B331543F872C99A419BD2C1D408465FCBBF7C46BD58F0EC5DB5 E54AD921082FB796D57C89D5CF97D9AAFD32278E788443F06836CEB4AB2DFBFB F181E9F579B6C99A96154B7C6186FC2DEEA17249891DA596B05E2AACABCE2AE8 2439843644F77B51F06F61F1B310BCF65ED3B22E58BCB5F95221F8F2260E4D95 DAF1F37958C012C1204F6AF1D4618441 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI10 %!PS-AdobeFont-1.1: CMTI10 1.00B %%CreationDate: 1992 Feb 19 19:56:16 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 53 /five put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 66 /B put dup 78 /N put dup 84 /T put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put readonly def /FontBBox{-163 -250 1146 969}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F 21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF 55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A 7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B 19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F 244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D 993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363 2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3 309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513 F42EDDCF39AE522A1DC2DC523F046EEC4CCAE25792B702C288732F5B13B5CCE7 E8B6A1A1DB86B1EA38883E481BEAB54023EDD9BB94E7780DEEA577ADAA169E66 AB7D8607B409619E79F242CF52E618AC0DAE43317C507CDB27EA8A1472D4E8D9 17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D51E 6DC3005C821622476DB88946944FBD830DC0293272497557825CF153F8E257E4 1C9A2C1B68E83A7B0134FE419D23CF803DF01FD60556CA87C2D61408B4F2FF86 B59EB4552AE92DD28C48FAE7FC8A7997D434F399EF11EBEBA3D0A82B2004FE23 9020ADABB48FCAA581466A3971F1AE2019096CCB5D075E492349D05823DB23B6 D652E67D31477E0C620E1A30A0F81A537D5D269EF289851C7CA091CEB105EF63 45A3032153FA1DE769F5D5D1BBC93A8D6377B7329895E5D6D6BB6640781CE9E0 79E929D0556A6219B260655A0E66C205FDF4DCB8F19850210F2B203F1D0DDF8C 8A966B87FE48D9642BCE7320A70FC44160DE810825C009C5B039E36230A58196 3B57172198A44A5A170E7740C27032880BDC153D63107190A2C7C0035A4E7D42 76BD968EE94673A6EB30A0F75B839240A2A15495CF4247E54E4BE8B03065C9B7 AB2D45279231635DFF75716FB92C4923737D116D3DEAA918FEC681793640D398 4D1CF72F8492B3FCE7DAB2BF52DCA1E5EA9D11BE3AE509ABB088C5FB8FD8A085 93EF3BC40529511ABB05AFFDB0DAEC86FBEEA400837FEC006141F50740C5B135 1CF2F93E047E309005F5B7999F71FDB8D7B1E6BA00F9D4DDD3EFC53BD95ABEAF 0CB378C8C6538C02203AA3C895EA855F2A56FBB92834448A373C68A7ADEB138F 37D56E8713D0CB67F556FD51B4D337EA6FD86F31CD2EF0C5BB836096B63E08DA ECE0AE65AE5A1925495FDCD3DB7A00134F626CE8133A423F498732EA4D00ECF3 53283CD20577A45B5E1354E7CB9E801E4AFF8D4F1F49C77DC6FD1EE01ADAC3EB 2284716FA771203DAC246C6EC5E68178CC7A5E89CF1FD53842AEF9B1E03C632F F2ED3FAD490382FC0E430C16110115B2198F76C32CD4D38FE1186E50FCBDADA2 F6CF9F75A3163A6E765B9CB093A987BFD4EF6D03C2CCECDD7743DCB79025B38F 4E52C4DA14C03F3B837F1C3F5AC126B2896D90D8DF19F488E00E027B1590C2C8 CB7990D3502731B57212229C2CA21C46DC2B8D2EFFD255B23AFC9A4631E61A27 3EEC7850B0A4D4E3E93AD8B4800C9DE3F21F966E12678307AA4A5BC1FB07106A D8A2F8A2A7AB53B244AE39718C73F5040E88E7547F7C42C86E43433FDCD8A48F E0C497EEA10FD83CA9DC7E61AFB7F1D1933F8763A93FF054857E2D7C7AE8C3B1 A52082388ED10EF79910809DFAB57E317D861C945CCF2D1002E8B3B17D9253BE E2D414183AFE891D2FBED5174EA2E40C4EA79C381E5978C67F042F86AC4F7875 3319A7752614DB3BD30082F33D2EC498EB3EB27D0B2C994EAF002FE5A1574988 C200989999CEE18918F6204A5FFE64B8D5D5BA9F0C9F1347918198AD5EBB8FB8 52F6C21C8B6525CB456932278B88FB474F552B7757C279742D82229EB4DBC466 F1CCD24C5003E0725B111E7E61C8E8C0262A72167754AA67758333A00216D076 7716388ACA26554FDACB4439A20C40C6E66AABEB63EA4B023334710D71377728 E9B39C30ED67839694857E0D3FCEE950269181D627BAF3182D6A62D00C4EC5F6 091D00AEC13A29568E6E8C8931C209BCE741FC7B98776709397D46C39AA2F4BC 4B2D93D1DF23A5E4325794673B770A7C3E8470DA2FAB68A5B23EA5D01FDF899E E8A137BDC2CFF068862A2D0688658EA7A61C51420AE877DD8438EB399BE9B4E7 EED53E2C72442B7567089B56B22408CC07E8DF47E9CAEA6A800C9121D02B25E7 6B6648BA623009D997ED032D65CA2327089B990A11C2E486C74DCA8B95A285BE 592B156384F64ED2A37ED800E8A01012D2DA77AA04D4343BEB035D9F13AE7A59 BC3A585FA588C4CA8BDC96899C7BFDF0CBC8E66569CB21F33A7972130EF41FF7 6ACFB1DDFD196BA3CF6E6C422CD15A7C598FE28FD0DA482F813C7DF25FE9AC4E D110CEBF84314F032F371B7193E22E9CBC0F84C5F416098A85D96BB187CD2432 588B53635E1BEC45CA2D103EA499729B8CCB45CD39191E26452E708E50A0620A 38A2627992682D737745EDF90DF0C025FAD41B6A3A8A6D15E3029D71BD82B0BB 1ADBE72009CF8A9827A1F6AA1888F825F22D59C2C9D6568ACC6698777C801F5F EF0FD7403FCAF1BBE4F1B5A12702EE10E85B61DE6C325643860A4806FB1C21D6 F975C9177BDF53F0DA351B54A888F824A7C3B345F478C90A14064941C3A8D229 865A1A91BB945C52692325E421F30E008935E51D7D5D5579444E5969B0E3565E 6D01789528340EB3E0B169934F26AD4F4C13765DD4F7BA9885AD0D25BC8F10DE 0FBF41BD5FF4B0B78B21663A321C376E02448313D722DCA8814C483E8BE6DB88 C8C8CDD88F1D9960F059E67D486D8E573BA571B03F52E6B50E630B957B419722 42B57495CC4215E3092F4E07FEC5780A981A2A5FDED22BB070EB42ADC5A7991F 49B94697C67A28D4E78981E0AA22E3F4D2413730EDB62577627E3CD5C72D23D6 461F4C71F7551C3DC3641EB133F9AB6B569CAF81C2F2A0366EDF42E16703BEC6 54E8C39DB5A7D72AEA57933E1F09924270D20B5238EB9D82F43A6F6A573CA37E BD3B5E8F83D82CA8E6D3C2D102E2F0344FC726E7D27B86A2EF00822C9D290A0A 634AD7600CBC6E1E72A51F1D971372DFBA55B8EC5B2289D0FDD7AA8AEBDA06CA BAB76890DF9B24270A025171B36B189BA3B32D86F09EDD8D250E2F25951BA51C DA2B405FE456FFC5593128412E4186598B7783750203D891CA60324535ECC628 9CA5AE65340D03724F297039729303CE6EF9631BEA0847DD78EBC1F1322B6227 EE8310F89974D97CDDB196E06E75447E406B4D694DA97346DA16B5E535BC5A02 381D24E61C8887FD98F19E5ED06B7ED59C2311AE89F75F3070BDAA48BB86ABE9 5EF7C79A00B09AD4A2A7228D842960721CE7425D0A1559C5BCB647B3E67BB83C 251A7AAF4FE4C57909C3FF567DDB1B5627C9EB0479EA62023FA9F86F8F5E5780 727E3D0774DED6BD76F65BEE3E1A833920E3E6B296BE8960CD58C3DCCC4FC7E5 C5406F741340752B61388D5952812D98774F17740A5ACCB777C6C73B221378EF 9A399F64E8C7BB47C17F9C76D4780259B5F5C632F924DD15BF2C30E3050F3B98 DB6A5142EF893645F83DA2D651794295EAC8EE7DD92F1B6B3CE444972EA426D7 12D3A5866D0CDB8C545CBF1257FC7A297DC0A173A13ADDC9BF885349223B9556 41BFEE665E582B817B66EE58C75C195421B689D84E9115F6F3690CBACB6853D3 597BE064C818D4FABAE30032838BAA3BE237CDD0F36567C75200EDCB7619DC27 0997DE7750CCDF31CF21845D5C04EAB6819D3937506A9154103AC0537FC1ED3B 00BB27B3AAA3FF1619DD145238995E235BD4B422DE32FE41B3107D9C617BB086 F1876723E98DA62B317766B172D6D65C28141B8F1654921DC7C208B289CB9024 BBCBAA1412CBC78CE4772CD885684C3929BC6E2C8EB52A9BE8F2186BA5A641AA CB1FAF355762101B2ACBB8B4BBB1DF2E5B2696EF0B46F23FFE073C533CEADB59 5CAF1AC47CC80C43CB23DA15A0F73E672D39F4F6864A3D4458B2A02DF9B00DF2 0AF9B2FB6945EABD67001195437EE77084B3324A038DB25DEEF55613527850FE 1E176D9CFE6B10CB0B550AA6556C58A32909DD3FFC031529EDBB55BDF51E8337 ED0F76FAF0366AED8B83944C2584819BB3956BDF1F472AC09A4DAAB644FB5A25 0D81C3532B898BCBF77E080E62270E5EDADEF21AF94CE26FAF598C915ECE0391 19CAACE35D52517258F48A1A086E4C82D376615162D723BC6F3570FD5578A4F1 6B407C696C05E791802E8CBF52FF1FC564CEFFBD9B14E51DF26326942D0F9074 EBD10AAF5080CFDF6920C6830F2EF5FE9728BD73A7AF7D7FEAE0F66DA5DE6218 373B578A08085A666BC72FFB95BFFE1343E7CAB6505D10CBBDBD2D08F520D725 DEB8CB76429F11E45DFC0F99E3F69E6D640D3C42F65EAFB2AC09FE13736AADD5 C727F9ED8C3733941D896186A28857BE36C6DFEFE5C377391F6773C9D5CD7F13 F567EDEFDAA9D5842A35BD2F2E21C001ADC5A8AE20D9221B4105E66CB2980E80 5A325E225F102B7D90F72FF0F1762D377BF2FA76AE8696E5E5D6E836A9F6D2D9 7D0A3FD16ABADF57C8D10BA685C59E763C660837B9526DDBD48A3A56E2F75E66 D0B442CA9187959F0E67183E06EA6E6547F4157502F273D39C28B6562AA8B25B 6207ADC1D312952750BD262391BB2BE34CD28CD980B41B71502FBDBBF616C7B1 CB93D5E5516ED2B58E81957D71C2254B714DBECC6ADD70B5DC5B351C20FDBD8F F4AFDE57C2F30A1C610517674F4E949FF6B7E3CD53B0927B841AC91243BA7D32 0DFE639612C7928AA35564637C2F35A35E6CE174C4C6623D56944609034B700F 8C9CB93A3743DA7E83CDF977FDAAC6E4158DA2430162A793FB5405C9743EBF8C 17EA6AEF6E5ABE7EE6EE3FA845B58DE7FF8B084443664AD0D4D8641F24D290F7 64770ED35F3C4595E849807F1C54B6B63B42ABEAFF1F8F3A70FC36FD1DD05323 FC6ABB52B5CB1D4B69F992D524CE6A1539817C88AF8AEE1E2247E85AA2C973AF A303EB401FA2D0ADD0BB3D82E061B941115770CA06DA5E327E11E494EB4A4335 BECD522587733D232F2D214564416CF68A22471397407598604147A8CE47214C 1611EAF40E461743A0E060D8E1702C41C35F1FD49B4858B097DB33D40D0CC66D E2EB85BDCEF56E900BF9D17E92701095238F7F27843E253CD349AFBCF67FC58C 4997AF8865997B9BAF22A5FA16C7AF6AAF54FE4DBEC6BFEE20D7A68CF12415DF EE3846552E7FD6E7E9C9BF1C77EA22A95E7C5D66E730BBEE0A2E4502EE146612 D3C7F1DE4BEA1B049DC9412E2FF9A67FBF49BD86EEED63F47BDD9E1474FC9A91 94AEA0CAF8A1DE837E5ECBE3ED14D41066D51CFC571B3BD89ED1F94ED37AFC0D 895E59A3C75632D970918DAA530AD6FC34CEA8FEE7910F73E1F531D488F94C2E A9790B036E4AF35FB29F908587626C40D0A56EF00DDE39FE83B5CFA6DFC85DB0 5A86A4FF527112CFF6D6D7396F225C2DDE7885A6072CB6DC23A378D19C15737B 04A41B521E843A8C4904A4962D2648FB3733C64843CFB210803454C4C7E40A36 3B84C3FB654FC0DBB8639601BC580BFEB25123DAD35B5BBF043FE2BC52B76833 6EA3FBB1AED38CC67CD6BE1B492A74D807E8EF524C3ED06DD111297E9DCD0235 F9FBC5CCA1B8D00FEA8002DB650712C8FB833F378BEEC5E57BC356A866D7F36F F4C9E229D1C0200DEF51FB76B7E5E398410DF98821143153967DEEB2FE588645 FA5FD38A209A26F867085301BA72F60ACEA1B06C7670DE0ABC25205D827356EB 814A329B19FF6B393DF0F1071914DF6E7F71BCF4C9D6BCB26E3888E652BAC4F0 BC4A87ADD20971D6456CAF8A5DE38BBD7B690A695F24423157B42BF158FC7F41 FB206A3623351C9CC5EFFC66CDF5F25C452474C164824B3A5B9B1BA8E50AC83C 296677EE533D0625D128557B01EFD9A709683A3303DF2EDB68512C98B3E7BE0A 95CA1D0964AB18B5C4CD339029881E9F7F3A78B74D82DC3E950EAB808487D7E9 B324A1C42B38807DC140CE1FCEEB590DD038C979C6C611DF2E62B5BEC6777235 05ACE91ECB29951592BF7A798566356BBB241043C758D54FA4A76F2D312C60A0 1DDA94573A50A94D834FDA5B1E80ADFEB0FF6AC2E83E4F8170898F85724FE47B 504F5A98E18B20D407340D1B234A11A432102D70C795941D7A5F3BB37D4A206F DCA2D443161F943A4B565FB048F7BE96FD2BB4E3656F7128A093815B465D8326 FAEC385D5FEE809772C4316E9A82E84F7C71731699E8A4CF391F33C5C1A8B373 BEEA793F716C685ACF4FB1D934350F283C6C0C7B3B8575C25E0AA44625366ADF C714391D8269A2F87ABEA8B9DC889DDD2FEC80AF0FC6438806B9F550A01C5465 0B69910F2989694A7CBAD865316CD9B5E3B591DA66BB1D6F8996EB68CD2FF569 8E2A9A788726233E4952AECD46F8F35D88439C7A61716613630F577A62C2A0F1 B9A4B1736310D5C5A4A27FA33E73466E1E7F53932C19179FAC18A2F03D5D59E2 1E0827E88A1F19C628754EE590DF536CEBA75AC4164C4015AFF9F67C81BE597A 9A3DE1A8FE6A55D27031F73E09D96DC5EE4ED7A1768671DF647A5AD2F8A54330 152A2E354FFE25543DF8EB9935336F142116D3C328C8B9C373B4AE2AA8856742 6B73E4789B1FB9F4868A21A50177C8FC6EDA06025136A71BA7ACE4E8F2308BC1 A3A52B9FBDE006BCD2A2ED8A8E2FD5D0A187FF7E8170C2A98DB3C9A4DDCDCF37 B922E80AE14646D54DA597A3877CA39F76AB9720366CF4E27EAB32CB2C795E1B E65BFEBDBD160895CFBFA5F8C093B31A4DBFBA14FB87757CB6AEDB221DAD2880 5251F93159389BA6019E1B34B545BF90498274DBC6B51DC02A59639F6F2D6E68 053BB6D47E11B30F10848AA012F9C849C37A7D2A2BE6365D5802153EC12D09F9 93F347B1839F3180598E23F9BD182E7636EBD8D8E3BF5467A0B41C550E30E602 14A395F6BEF81D635EA0D3B77DE7BFE23BEAF9E1219C7214B889872B37D62C2D DDDE6129EF45E8ACE5BA2484CC065F6D431A9D9BC054E6CB070834562731C171 E36CD2F1E3372A1827EB07F6DC589FD21E664C2EE64CE365636613D19467317C CD0EBA16E050B457F6E321A529AFCC3E4FE1A31B4ECF70A49769E199F0BB610E 0BA9AAE6BD6859DD021BAF0864F9693B95AAADA0453E04E47C856E6CAC4B39EC 826CCBFF7EA7CAC4AE85E9E8436631F2870E25B400200BCFFC8A68A8A675A71B 8EB72F3DC14090ED82662C6981D8D2F101D4D45ECD5D0367A6B9345DE1C82498 A1A7ED1AE2F340226AA1EFA6D9B00E934B37DA416BD0934A806ED15BCF1DE3E8 D39593FA053CDA4D80543011066AA810DFD05A8DCA7D18F816BEE167D16FBB78 D9139103FD116EF1EF32AF08EAD186C32EAD2598D73408BF0366797B056B23AE 7F55466C5B69F73F247B2940D6F250214839D75B088DC2195965B31A2538C801 ED6878584C20F2DA0F9AC36468FAA73EE938348FEEA24933F18B5521374C02D2 4004414DCF7DD3C96EF65B00167620145B14E17A83A24199E2D66F8A88567452 6D397D1B26027344BF7AEE158D4072F2E597BB3138A65C2C8B308FEA7F2C0E24 52918A7316DE0A84468325B5C6D8DC73F488E02AEC155DCDB59108F9E2835BF0 05872D264F0252A5502101345503BE164FA1B148A8F60E96045041EAA9A4B3E7 FB49574D2672F9823D405DB37017558F369D6CD45305F56444747324C2EAF04D 7B02A06A83BD78ED6290223135ACE47A706F943AA690D963931C96A09B8EE9E2 975B7F1D72932270939B22C921111510D4E7A4E685A6AD43D47CDF528007383A 72BAB4F0B2C44B791E85178BEC1157A80718870356238BD93E96B359CDA25C37 219867C561005AB7248F5C286D261C42E6BB8C530F89661B11DF1CF6352E5F62 ED08574D0C0930ACF9045A80FBD1767110A84B3C7839087B0472199CD85B0FD2 55495C3A42DDF23B5C853AE88B027B6E15D6A776E92F437D3AD843C6D62AB1D7 8E4064859783701D710924DD4E7273BBA036139F7419B9C492D4CCCD844BE2C9 4F8AAD89A0D805B4DD5B80A0AF68C07F642ADECF4A9ACE6B449C1CDC2A6BA14E D56B53CCAB953E0236BB2B3125E9BC26886EEF6E98EC7F85372B69DE77E74EE3 D4763C68AC92C2C91F907C81267A7D537105EFF4A92B14C89E83D3DB2E4B068E B7622F1B293C7FD182E8F6D5749B6E1D4F8E7D19808DA0F15C950C0A5E8026B9 01793A2EF93CF8E2E15A5A055FA1C6C2FC4C2855A50ED219B43258613F77ED8D 2FD6326FD45A523356E26322A9026A5DC22F8D25AE0693035A25959FDEF0D7C0 C60B1B85AFE1572784405400D5DCF28945A2544036D940077D7151751CB89DC4 E9741B0492E0E476B1E15900954CB54DD19C5B2D5B66B02ABFF0BA5013F6AF8D FF4FEF09DDF5D97F9C0FD9D1C519FF23C497C79E392D483BCE263476FC236110 4C192081EB0BD1D3646C1F6C1830FD72F07F00B37AE8BE06CC07C64C2250C409 3D49764E74EBD0E696B7024DF7568BCD1F7A3427653D7288E934FE9A84EF8CE1 DDD61B8DAC219677AED520E3C5BCCDE9A8825095C86F64AE1A1EE1E1C065F3D3 61106DAFBF9029DD55440942C703F2DD2D5270E309C1F8E0C00416DBBC50E03E 8CD8CA07C356614C48CE5B592061BE5C9EF3BA2F764E36F97F07B497E910DB1D A9A581A4AB1F8D934B3AF39527E05922E7311E4AE83F39F1C15E3125A2751BE6 086586CBA68D5243EDF4C6D4DF3C18B7000930C9CB35C93787B0DBFE0AFD4902 BF915165530FF32FDE53C56CB8BBD1D4C8FE1299088113CA512A41B9081AD977 BDEE4F75A6720BD15FB510960ED6D2DC5AB54D8CBC52924C9661BC38B61AD3D5 E0557BCD85CA9A229EAADD0D045DA5EC4A00AEFDD095612899BFCA90170E53F8 CFC0CA883098AC634A34347C81BFF967143EF4E36695609CFA5C9DEE09A59275 FC0940D71501BF8C89E5C037CC9856E170E84FCA352D48C249FDBE1A2850FE58 37C717339E6F035B1FB75DFA28D221D5123ABBDA44DA920535716C74EE40F387 45CB221A156FF47AFDF8F2F50DE17F77D1418CDC0CC88EDA91FCE41C6C02713A 6C778B5A4DB7AEEB4C1B449E2B40BB1E36AD1E4327DD10FDCBCF40976E699487 957655768269013C6AAF2F6A3C91668F7982187DA435C11D23B6BCA9AEBB7443 3DB3A7165CAF7DAEEF14D2EA75C724E2C86D36846FB70736F88550AB89227574 E019C0B00D4186EFA616048A85B8447F5CFB0D6D72577C810AF7EA6690D4F260 EF86F922F8670CA7EF00A85815DA3CE667925CB78E5435AEC6A54DAA5BFDB5C6 6A78C34F2095E9DA192F42F30A02586FD24F6CCEC4CBC65C949E25924EFDFBA1 B0C732D759EB214788CB73817AB7AED70692CDE8485BEFB513F6E2DF29ED55A1 0319E5E24702214C66F4D4317DAA991E4961A357ED41E6100C7E6FDA72079797 A00370FF7FAEAE6AC3640BB15DBBB9F4F82C87C55708FEB8C22E432C20AEF173 625EEF0DEA1FBAA8109BABA2E371D07C6E1562A0F2E13789EE477056E5DCFF64 BB351B5DD56B86AF25706076FD6F8ED85187F56BFB80DB8432124B2D85FD89F6 180700F69D4628915DC768F2C495E28F5CD9BF4774B23BA0A9777A7A2FE48389 E2CD97A3056EA49689D89087AD4CC8847BB27CB8006A7D0A26013DB25CC5C44B 15AB1E6BCD9593765FA63BE2587AD0D3BD0C2009F66B785B1C40D76991FA3915 C13DA54A590A852E9D36746520E406CD210E30C89E2DE61405C4BCC8400CBBE0 B01D90E666CE83A90007F1E71F9F7B4F9F419ED40ADE95E7BA4631A7EAE89960 99AC72BBB33A46B7CA6F05934C7ED063F916BCCA5F165DA97D170BB534FC9913 73E5E586310A3FA4C2ADCDFC7846CA4415BF43F0A77961997D04800B7119E28E 8D156AB72ECB05B18099F7CD575F805936BBF01486B2F9D5CB33A9056D8AE71F F258D0B2D9C92019E24E8E9B1DEE2F84AE8316D46BCBBCD55B5395FF990EBABA 8B462B98D5E600F744782EC3219D664DC922EC5159D0F8E92886F168E994CDCB 31C82CBA025007D74F8D7467A3C435D2BCC7C2D354FC40C1FD4D0996F668ED15 402A6CE373C10267CD5DA5D589B2C87A4C93F533D96E474C522429BCB217047F CA240F86830C27347C182B640796D66EBA788854B3D7EF119CD1FC78F5845E34 435BC981C6AFBE0CF1A5D5C4708ECFDBA39AF11EE0EE338CABFAD7A3E8604D6E D4E4FFAF66D3CEB3CE6ECE387A5E879B15B71E31319407D34512A20A2CBDCB50 FD558B4C9873FCE63E10D569B8C316717B27D191F08110A38BF15730296314CF 694C70E4669946729C256A1AE8960ABCEC8E573D287768E24D856201A0960738 6C26BCB437D0B254CC7E65BC9036DF8FD6007EF8E0CE2148A7C611D6D2133128 2F6B88DCC3C4252B023ED579BB686A876F7AFE9BD4FBE13C0C9265B0D9B94317 7B273FDE41458B05CE23AF1CE3AF3AA98E630B07FDF18D4041007A7383E337A4 1A9D3ED7F637848713D51B5E1B1177222840CD50B33DB57EC81CA7F1BDC90032 747B4E1739664E23DA7EE1DADD43CAC683904143E5BF5B3CEF21E6AA849DF95E 9216A6E92D10089865641B694B7F7E3696A17EBC5AE9B125C2600EADC23228AD 22F000502EE0C652B938525FDB0BCEF7C1937B60179C7768944088133532147D 1B5710EFFB148ECE4E3ACF2E9EBB7F493F02B5065DB7488DDAB90CF0F7FE4A96 3C585CB9B4AC9F0DA0D5816CA7D699C2AB7614F1EC02A93B78A7A8D20E5E40BC 42389CBBD1EB8BA79A088BCC08E7086DDE86CF31304CFB1C05E676D5BD528278 7736F4CC773C480A408791D2DC51F5DDD2F1C3DEA68F9F7E5522017B00E06A6A CDFAF2CDB5757F3E3729B0C1287FC821120C2F6B0B46B202E2A644FAA466E145 1D8E6BA27A6822A6798ED07CA25D6BF2F506E3BFAFD415F6C975A14F4B228ED3 60AEF641EAF57F6BC27FDF968D81573B4EDD908D4FAF53F1F0F966F2A28968DB CF38548CC79187A9C2290DED24C297772559DBCF71DB5DA08062386207F78733 73269BE87546AB7DF5A4A5E8EAC4DF248E51B2B0995AB4F525BDA6A0C0951156 FA6EA79DB354A1BD6123D41A8E90C94441BD62C4399809AF535CC08987F0415B 30BE51AF453FD763260D9623567584126A10961C2960D5B9925A6E02A74B9877 26AE1625E543FA6CF8F123FAA35F18AB09BE4A08453D0875B951455A9BF400F9 468916A9258920AEE99F93FB9E6F59ED466C0093A31CE3891EE85DBF727A0AF2 A52883EE976F069D3CB454D2C2AAA21B87233DEB7C4BE06C8A402DCF505C1683 83A460461EA3D483624417E9364DA2CBD6FE8A507B78BEE46EB6E454D22AFE42 CD902280687DCE225B9D3B77C4643ECCD693E1EEB0F4F082DC0E83A4AE32494B 643909988652DAD74E7937A2FFA3EE2D2BD25A9D4CB67A2F91F5533B4088EDDF 9EEB679E176B312DE881EE100BEB72676413B36D11C80C3A213F3BD8A23FE684 54E9773D64B7173316C7AD931EE88D01C267ACD2A8501E58FA547268308C0F24 08D1BB0BA68952557E554FD52C4D5787D6A9A0440E21A4616D41E969F190E561 8F26D9074428383E1EE1E0761BD3BA5D4305C829FC9ADAAC9B81D5C850EFC47F 0590A369067BE9ED014FCEA2CE911E4F7C5FDA000CA3CED05922FF0C1E7B3358 F70952D69AD8089443F005BA03B788EE36DA1819C27F4E88EE37C8EB1DECECDC 74035B48480B7BC437AD4214CBB03A50AC91175D103A28BE37156964EF444013 A9D1E6118599D16999E6914E0413A9D6249C57DF105256C1636273C004737E91 A7D3FF0BBD4D5C4B01F72E668AD61A94E2EE568456B03AED281BAB8D7841A878 33B418779ADED5B8351BBB22AC61C7FF532557AFE4562E471EE92E038B66F311 A7F49CC7FCCCCB329C2278B40361E33141FDF82BE7E9CD4B0A4F1059C7EC54CC EA2C492B61029C9FC6A05A7DC9C9F03352B1441E91140B961D4485227396C697 E8097E09ED82DBDDA9381463EEBC413DDA1F186A553A7CBCEFF2335C59BA2D69 94F636F8598599E03AA5FEFFB4539FF1F2F040304C70A23CD9CB19306A27A5DD 6F2BD9F97BC925173AB07A8C7DD16BF262226437AB10063A1AE9C82F2F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 3 /asteriskmath put dup 13 /circlecopyrt put dup 15 /bullet put dup 102 /braceleft put dup 103 /braceright put readonly def /FontBBox{-29 -960 1116 775}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A 27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF 5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C 515DB70A8D4F6146FE068DC1E5DE8BC57033D79919697C81395D5B94C3AAAB11 52D7393B7810FB3A048DB26F99398B6402C264B13FEFEE92BA387801BC9699A2 E43D69AAA3CB2DD7C81617501B0618651E0850CB5C173082CDC1D1372741FC2E 7AB2116FB69984ECBCE8EC5515E9F234C273AEB8F9C222E448AF3CCDC35A428F 9A267F67CAD67819A64BB630671647A63A11636808CB93ADF3D6833ABBA85CD1 B9C0C37370FCEC157D06072F9E783EEBFA8F2322912210FA9669F870FEA1DEE3 0E5A8A230609D077AF8FF69E4915D3918778846363DD98E76B0A64AA884D759A 18068F08DFCDAC51EC16C3557D73FBFEFE8B831A189AC8AA627C58D650B5FA11 C05790DBCCF664DB0C3F223FAF1FD812E550482D396FEBDC31FCE75246BDE8FF E8FC86241FF6FEEAD0F06CFE1388AE325CF402646CDF8BF4D9A4B91FF3CB2B73 E31722B201AA18B140544436537A080D6B4BF518D5F11F480AC9C56B32A6877F DFEF2FDF5FFBA2385B45D9EDA7D30A8AC8BCD45616B60CF31933BDC388C5D2E8 7F760D171C92AD51E94E4A00CD1DA33EC6CEB78836930AF044C9A0EFF1CDE538 7476C78C27666077EABA11F1E390A051431693AC34E70BD5F599CA4323BF1839 289A95DFE73E36D808178911E56BB93F8D6FE5D0A95C5304F3760E8DB40667CD D6BC8EE45E36D71F3C7673760B154328F220FAF522854D1564B83C00CB6DFB37 D3F783F9EA500FCD9D3793F7BA97E4EC6255D8825426757FD2263C033DFEDBC5 E3152245668E7F448889931372C4F1920FC1641F620553580545BFFFE35604AB 0D08609DBCB95EFB3CB7F7CCB2AD0D4C9A452994FD85DA3F3A53759B3A1EFBEE B25EE9F011819CDAB5BB11E8D9171BD5255E97207FC546D206C4941A40A691CF ADB2EC0F086942723043ED369AC34C5B0FCB7A0B823137A1F2FB08C64992770C 87EEDFD9F78D660A3FCDE7EBF61DA22D1943FE2A555B0F41183CA0A6821A10DD 7B3599813271A7290331BC020E5FDA27928ADFCEE1A08DE3235097D3A5D55A0A D6A9E64A11E37DE855D3E26E84EF8A50FA885F7A615C92F9F0E872C64F7B8B97 B73499670EBECD40DCE922694F8FBA6D195EA3A7046ABA01543E87699067AAB1 58863372622827AFCFD51102D29173FF6192906B25F93A0A5B9643AC024319E2 24E9E69218C6BEC8DAD7681A26D16FC37E6431CF3EF19FEFF68AA71D06B1DA90 EBFEEC02CABC43353B34E3E8C89AC538DC959E2D8C81FB08F259713A27E92FBA 826D12C487255A0AA547C60FADC779F55FB05D47CCA5A1419B64F3C5B3894A03 5CD16E2FF56E7FDF4B9B81C863F3CB01 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.1: CMBX12 1.0 %%CreationDate: 1991 Aug 20 16:34:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 63 /question put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def /FontBBox{-53 -251 1139 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF 20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D 68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E 26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 31BD4B15835897B780BEA56230EC98D44200DBD7D409B2B486EAF66A0A644BD3 78DFC1E3B7B77D37CBF78D157A036D8642B0536631456754B2B10F4F16255D51 A0CC09D31113E4D8DEB3058A1D232C71421A8FB452A423179C886FFB3D5A3E4C BA3462749C9F764971259F3AC6B1A8BF500D824662B17E8C1C5747F13F3DF949 C087693D4BA6C83D0E8BD53F220660053FDCA6B34CD586C7CDE351DA5B9DFC18 5618018BE9982BBB4A5A06E2179A09576F1CF60ABEA3EA183569F41DC3A03399 8BADDB889F5B4BD628B48C7545F450149EC84295DA3FB6B1A9A9E1DB5150F9F6 650F2A8C44B887A80DB9A226E0DDE407EF7BBEA5245BB3A041B0C32F76458887 D09A97921885B901112A798A56D76E4477F70213583A08B5AA599B76BB38D894 FF0860CB0859AF4CFEAAB12AD52D3C46C34DB22BA4830C93FDEDD409A0B51944 5759D76AEFBF171E3ABFEC66FDAAFD902A25ABAAC1FCE2E24935E1CD4537D548 0D254315FF592633EBD0D2336648A0E480D20ED4878459B7CE8A7BD3078A213A 01A8AF0E28252694AABA35D27E415099E3315C91299AF62A2BF97D613BA8005D DAB875756484E0FDE77E265099B413A3E181E4B4DD5C0F815EFCEC83C456E32A 4134C4678C6857A2FA15186F56FD550A5A85EC470E99702FC4BA0B288AAF0ED2 4EA574D87294CD29C950C77B884F0028B38E7C13679A7827712F4930C48BA563 D6EF9B4C043AE32DFA41A7EB7CDC56F9303B38604F56A96E7922397B84F9AE44 1A1D1C62BA08082C78D861E58B698ECC007290EBCFDFF9C08F6CC71EA7D55FEE 68CC163BFF2BE8B40DDFAAF69E28902A5D9A539ECB4FDA479B472DDB05FEEADB 3B836E95E5231E4905B9B15830782F970F579B9CF3A14502F2AA3D254BB9037B A2B332DBA49A6B0487885040B16ACACC74B090250356A8BF9225078C19505773 0936D7207DF4EB0B10C8592753D5B00230EABBA87F04ABBB9FDE5ABA3261B2D4 86187DC2339F912F1EE50B3CF887E31C5AE234E0880034D6CAFA357D8328EDA3 2BA5C4E13823ADA698BC7C592535654F4202A7B1CF36B84A4D6A42269C162480 6D912191E94A482E11F9BEBBC61B172B11C25AD5C01AC9F720AF3033273F45B6 95B314EFE14331F2CD278605F399B8A2C83402B441B38A5B724587C71B90EBEA 704BD55BC59E98D0FB75BB0A3259584857E72DA0833B11094770234D51B44FEF D19144C5C420B93E7AFADB5B51647E1F4F8ADE19283344A32AF0469B500BBE8B A8BC20120A1AEDAC9BD0854308B98B9386BDAC15148E1F9DD42233161F837367 945EA9DE297AFD89C975EB134B9587C6C44B60EB79B3A4AE6663DD129762D4D7 B6E1471BEA6C0F4A7A45DCDC94702E936AE3B0927232FEAA80B2F87D0F9B72D4 12B28F91B2ECE1CA5AA606623AA492B4EA0451EE35BFA38CD129397B3A04FC05 6A8D13A68FD19BF1B4A9FD19B979FCD989A81960D9BD06741CC10CC2B722A124 73F87C9F44E6DF268A93798EB8A997F1A1A5DD96E3619B9B719C70C7DBED86B8 013AEE6A2C9721C53971168FEBCB4CAAADD150019A98F0A726A8FA6A06FE3649 FDEBCE548B537D1947ED8B3B0EF2AF2178D21D0C168E037948729E723E3D4DF3 83EC8D9EAFEFA4A1F0991A952F153B593FD806E2F5DF6D509C84646E907407F4 193F44D4BD459DC105CDDCCF19F109FFF499EC8A6C622B735108B6CE326127B6 6BF855F061B3D2B94B34C3F11C16D29FB0EE7A9A5069248E7356CDCD6B21DE4F 052EC22783498AB49394981524286A837E0FB99EDFD8AF638B689A5C3BD7F47D B96A3205AC4578DC23CE1262B5AD736152C48A5641A42AC11DB4516F80AD085C 29A4E12E7979DC371CBCF26D280D912A9E60E5862AB6586A43778588D87B3037 EFAC338FA6882D7B4095C851D47A9FF58582CFB4C869A5B8701DEDF50F247295 7297486FBE0BDA2FA84F1C3CFF447A95FF03FAF1A96CF485F37B8059D82E3710 BC04A493A204FF3C8971E5D96552CA8349B257BBF96010EEB7C79739C3CB6137 C1047274F3DE3D4A3FA266547D4EDAE92B2E9642ED709F418F2C273CAFA436B7 93B0C4D513D463FB6C1E7AFC56A8F0BBD2A70B5469010EA2CA93B234A4E5AA3F A45987761D45B34D0D19871D7FA3C9A68A14962319A70C6034B19FA38E3FC9D9 9A4917F7390D9410454A86D9ACDE81C3F7C7234BDEE9A40884F37407688F8F9F AF11A0C28E4FB64D70960EA948D061250AA6F8CDC44A037AA7D76DD03EBFDB1D F34B60682187405A0F9FD423F2C63F233B4E1F04399E79A9DB1B95B778D1FC9E FB79C3188F930D96617755205D4D34107F1E808F339A7B51815336C18F98A090 18D40AC6F50E22C95AB8F45455D1B6278D74583D9F6B899CB12C385CEDB7E5DA 4331556711BA2F690530D6CBA77C18EEF6CEB0CEE2528C51EBC04100B92E765F F2D5EEBFCA2135D08AF8DDC37D26DE32AF71FE8E27D99638CE8CE65832BABF58 18FC99C506FD27F19D20222CA6409F64907CB193F4BA3150A88A4D69EDB46F60 15E95341858E37259E28CD64BDE9C29D85D91A5FCF0467C53CC948AB02CBB945 F2598CC2ECDFB73952D9B64721375E2914EFF9FF7C2288C14DE5BBFF578734D8 BBA1CD44E8E8CAC8949BB28A204382E4DD0B4F4FC1B8BCD48C62C7ECA3693ECC 1EBA606C5050E558CBCCBE90E7646C4F167A777D7DF5E289A90BC921D6CAA137 D9CD74F51D4323809C0DBFD0CDB315A0A23E78374A653937D66193BF258BF376 779396D92210130D382A6C8E287612FFFF5AD6F26DFDE662E7BDED180E4A02FE D27A44DB6E23477F9926B8E2008D41BC3FE021E019718C9C8F79718D5E647DF4 412E0EE5F669FA5805A17A4D062A0CAF2CE4863C98C5A9C889416D376A829EFB E8BD0728CBD43C31C50D30323130EB07EE65A4ED2DD46AFB3F22E75E63AB0172 0726E18A69392A6407BF936B09B500ED31FE21321F40F401E3EB379CA2271809 A2EBA4E1AFEF1F0CF882EAD271077681170F5D4DF543848FEB6DBF7DE0A3D8ED C2CF884737BA18F004486319E8C421BC9DAC01C2820477961EDA757C67A3AFAB FD206B6FDF15BC65406CB36BD1EB9AF59B383256F6B8BBA4260DD38EC31E8450 AE3CFF8A07D0F5C3D4A9027A96690E2E39F4326D6D96AF67301051E6C97664D1 92355782A2110F9C281F701F15BD7841953AE0093B3945E5E28FBB92405876E1 FA196723B24E9D2B8F13CAA891F77A3BC9C3AEF8C31F953F9FF7A05A68602AC2 D3E36D2C49353F774C8F1536746667A583A14548D50E389CF0A26D522DCA4FEB 19F8980E738A548385BA9A06F8A556D35A656DE2CF10D2EE809F659397A458A2 4738B1E4E3259AEE26ECCC3C2E74AB81A3D6AD16192B60DBFA1BCB2EACD10A7F 997D1B8F154DEA55B97A4BA173913631851FBA6E375E2E17EB3512D82B1D22DD 837C348BF44366AA7B693A10346BDB18C8664F6EDFE9FE846C8A8183FE3D8617 6EE6CDB5AB232BC61ADC52D56EBEF8FFEDFDC6CC4427C25B60D802AC414CCE86 66C04E9022B78D1C620707297A7D2BDE1C008A29460E74084F5910E1F5F88B1E 1E01F74925941E12E1B4F501211F0A27F6B371265F8E4AE0E435E158096776F5 B95D64CF41CF380453CD6F564EA21C7661636C5D79741BDC79788006BC09F200 616AD5F004CEA8F66F1D08BFED52B6D701345BA83E964F6C53E60794BB25567A A2B031B0834FFEB21ACD941F444E85C72A33EA94C857D5FDCE710FFB326D570F A75A84C8ECB081F8F39AF99F0DFAF9B695C84CC2443BD31479A234E070E08775 F095251A8A61464277A316E52B7762F98705268F98D462C3724774FF1FEB4616 4CB222C5B6EB9A55FFD9AA04778F6DC9ACA30F57826BBD54939A4FC45D616356 797AD54DEEBC83A02FAA2D69C9027D06F0D06E9000F84EEFE4EF92E205A9B757 D197DFB27039E3972F9C327349A4067CAD29199CC17B35A1BA4ED4EB7E5F2116 C01F118ECDDD379C91B4EE81C9B68D708617D6FF640E265E519C8F926117B6EB 803F969C41158B579098EE52589D1530EDBFF62611EF3CC9A7B4529E22892EDB B3AD21CFF9DF29D7BD494F760A15DE2A78028D3ED6B64FCFBB756B8CB0015FBD 24A9B20B8C17F78F0D8CDAA63752A5E4048DF282BB35B074794170AA9D505AE4 1BAFC16EDD597E006FA8F163E6634E0B3FE05588A85C90C30476275CE09F06C9 D75B18AD9B7CECD31AF28644F20F516FA5E3242A70DDD583D29A4BDE462ACEB8 9F5FCD918CEB35A4BEBE216DE3E733CC60B143EB176501820D35DBD46DF279E4 585BC5483E99CB6EC7C5E6BAC3303D0E73294985BB3CE21270B333582F3C7377 A598A79227B41B6FB033F789A215B80CD64A7DDE79E63CC54AF82A8D0E3DDFD7 9B4174CB3E74008199CEB7AC3BDD5189A8B2C3E1C4FC193F2F2DA920E7BAF6DF C4E613535886D4BEBB6EF949F5090A24A12F7340B28990919AF675F5B5B1F056 571B32DD18026C400A6A351F3473E924E10B0BB6473663A28AB792ECCFD60640 DFC791024975F51C1623D34C21D2ED4BAD83A5CA59CF1E3970E8B748711D26EB DBF9B0A307AC23158A9F50CFA3E3F39B3B878F5EDCBDE6A03DE75337137D991A B3DE81E493BA290D9290FC01AAF0C1D0FE376E6FA202455EA3B879249F194568 05F1094A9EB06E0E489EDDAB95DD9630F950BD734DDF6547E14C99E7952E8864 472259F6780ACADA69A233E372408779AC7B5671C81E65F9916838DF47B3C5A1 47FD117C2AC03B9A40A5D2E31DF46F2EBB85189FB665679857146D57CF466172 78D593645462491642DED02329FDB31B5E37336DF4FB36639804EDB0C56CBA82 96A93561C4EABE243C8251006F1254FFF1740314C339C832CE09EA81C5BA6D00 036B94D856898C5E0FB9FB04D47EEBB61F7F43644DE04CF7057C29934AE3CE62 F0C68C9B8D08E0D383D13A46AE4528BB1BBD04BBDB2EE3F8220155CBA15DBBEF F0E635ACE0AAA930A96E32DE22127588FB0A123D09A84343CAD37AEBC49E50EB D156753E20291C5A4674E07CC2AE46D909C9E64BDC11DC085F35E1A5B490A25D B6D206F00D1CE3052E6C1131772F1291F675A8E151BC8F88A9E8972D6BC14F95 9F491766BAD505C8BFA715FF46AAAC9CFD95D601D0FDFBD7AADE79AABC0ECCD0 AA8F566215AD73CB653E7E14F4BAE0AE57BE59ACF74CD921C0CC2B05A8F8840B 521C7773FAF13E8355693B3D4F0316FE9794E8550FCEBBA5B5F424DF5BFD152E B334303F5E81C1F4AEDA0D85E85DDC2F333C21AF0C15DA6C85D5A44725CE3E1B 41186A31D1C5C856DCBB3693D07CBDE3594BE0CD425BB849AC3035AD41207C8F 5271B06C7EF162CFCDFA864908CBEF91AD99D2AC0131DC044F74350C1C67DA39 9850EA332BBD0B75C1290E4299FDAED0772A2B62F5BCFDC83215273BFF39230E 804F6E5BB6A2A2F19FC5D1ED56CAB2ABDB9DC09FEFA54EC231CE55DCD946DB2C 01E5C3F4343E553E44DAEFCC402335DC29FD8E68AE25D2E0C0787E81ECF0E3B3 1F1336655C3C3274C93B059D1142A1858A80ED9ADB9F6484A2554492ADCF56DD E5C7631F14B3F68ED2DEC703B34600F627BB9A33872A10021C599EAC56E2E0CB FE5463F190012E0915792E1C492AAE200C4F4BB7BC29D7303DFD961CB0A6A2C7 FD718724B9F26432A6F04352B8C8E56BDCFD49C3B40E05AC24D86460C0F663A7 05222BF663FEC131CF707921C3A70629BDDCF0A080604B934F9D32BDF3EBB39D 7AAAECB70C8846BEA37DB9A706E09219A98407AB96941CF7A8B09AC7DFD15F86 C7CDFB90D5F89080FAE6B5CA244782F1C52B53FF12F472FB267F33EDBFB6571F EC3615A3623B0CCC30959AA8A107CB4DD3118BC2A9A353AFD4BF8689D7556209 1203E2987DBA9B3A0C78B0772CD681FBA03248D7D9919E836D4869ED238A445D 8D35C6B51F8B93B66391217C0825E5A571CD711AA41702BEDF3458CB345FE717 298A8C445340BD909ADAA005A45A5F3B7EDCFC3C2A1F49639B86B63184B568CA 4AE5DFEAB99FCF5770F3122F933F4B77EFA3381F70D495462EDC33F8E2EDCF6E 85C4CA4BFC6659A944527EB673E242336B144D400A3D8390A7C58470619261B3 E6634CA692C5DCEE34A05BF5AECD025DEB0E5C3F2EC72541FAF7DF19F4A45B5B BE211C63D91470C2C614151E96F14002C35362A29764BB1BB1E5616DCD3E4BD5 2AAA8CD7652C10ED4FDED5509EBB111615CE58E8BE6F20A17788B7518A53C8F7 2D462590C013FC07112D8A0823D9C22AE6A29C819629B118E41F604ED7ED1A36 92D2944691945C515CAE033E03E54D2214D4712EAC78AF6B53DA064D2C259C0F F2C0A68320566C19C59595B74B5AC940E9EBC96330770375DB08C0DAAF489E14 7B2C18F7C4DE21921A9C5432A8D14F8EA69720E232C45DE7BC8EF120E0B12DF4 041482627F23EC6FB2314C24EE77B73B3BC7E55F3BF6C434DB8C8622A26B29B7 FA52362782A15F972479AA27A1589A43A245F0E790FC44929A0059E190DADCB5 F79CD0D5CE128CAF8F347DCA0704957FDF695DEFDBE8C7CD0A98D53D05A652CC 26798133CF0D25129BD966A05EDF6C17257B9DB6C868E4A4FACAA6E486558030 9685AB4200223E7A3E5D8CD3A519FBC892458ED26A4AAC1EDB32A933C1B2E669 D18DD0D6D90DF93B62AC395811EE7F4EFE1D4C638923C0AF53DF5C6438022DEA 4FAEF80CB23072ED986CAE2EE39376C336BE61C8A6A242F78C10E2E3E68391B7 04B0FBB825A9E9A547F017018EC29A360092E721CAA4E75AD7FDE7DFA6A3B3D8 0F101D2FD48E77BADED15957E42AC2C8E796F8575362410A288BFB14E2407551 7BD08B0721D8F21030534B5BBA46A24F334DAEB0CCC32D3C7C800136A1025E8F 1BF1E02CFE51FA295B6CF56C8C39E1121764ADDA3363EB69CC75BBE98C3AF40D 50E480C225E76BF61711EC3CF5CEB2FD97F35B2EFBFC588AF602A14AEAA40598 31681C86B11BE30E3CAB7C81A7FA6337FC8C943AAE24ED1B4FD840F6F8B68724 84E1BB011BE3684B2F3AD538EB2DC7C95546109E73B0BB2A493DD39EECF3C1DC 1DE2EB16DE442104760BD32FCEFF965ED6D9F41FE301B88949D2F52A8B857C60 DEBE44A73D02972C2AFF9DD0E44D4F588D89FF51ED81FC507C7DFC4501FD6DF0 C7F3D7E4D231C4876FB673521AA4C2E486FEC64CA17B10652B793917607D7408 94C0091813EA5243934B572E0B6CC92C433180EC5A6F09240C58EBD2A450E1FC A0D33D9C87FCC03B2F89B05247BE8696FA9B42770AAF2256B640A95F5817DD5E E2AB7BEE8E6DAD02140A304AA3D36680DC1DF196E0C97EE5E294D62D707620BE 280995BC6E60F24A9CBE17B172F613A70076EB38346683C4B3307E61A5864B15 EB0BC7B697A96DBDB23C6CFC8F59ED8CCB1BFBA3E68097FE769978858D4E9CBF 52B571FCBD2EA7624C7632C1D8D2E291858129A6C1F88B34044A067F647E84A5 ADF7F0487ECB66CF0241F61A5684D9E77D5FA672DD5B56591080E00548AF8197 E95FE145FE2B90ECA9092CD4D59B30CEC3018F7B563FE06CA19AD313FF4DE37C A32A87548953137E7AE3BBA3ADB0BED497AE7F38F431A226AC408105A19CAABC 745B80BB9AA0BBCADAC90379B5D896333A3958F1C2F3172AFDFACC5EF9C85429 CDCC91A8C9B526F4CA906DFE7A41B8482369FA68E72AE7B46EE68958CD2FAD1B 70B12E4CF3ED0FBEA07BE746B12212F4FB067CB8FF8E11B0C5A3AEA6EE688CB0 E8A803192EBCCFC313E48013BFEFF2E1FD011931195B80429477B870645428A9 1EEF3DF7ACFCBCB166E03919C246F355E664235FF452224B548367BB1C68DFCB A8D8EFC46DA34F361DD333F384A9FFEB79DC2A18CE709FAD7A9C0FBC4432CF5F 57DF6D2AEDCB51F69C3ABB17198ABC28E3ECD87221D7D08E808F484C8844636D 874696E8292523BBC0A7C6EC4B59D46452004A80D4329620264CE40751147FC1 D6C9259AB9F4538975C10667152338F20BC4D3CA0E170BACCA317EC1BB7DE1D3 8FA0CE0DC477D0D628B411FFE4893049BA93016EA6E74170923295925661AD4A 013624BC0AA0382EF70BD5F303732F08A3E8D6B52877C1CC76C7FA8FF127B933 7F7C35629CDD2195C9DBE819400B1284DD4123DDE9A7407B66B4DA633654B786 B1B0D06F65543DD21056D66F0A4799869F7314660FA71178BF0A6708A1B2546D AA9861B8B2E9A0853E34AC4436A76A7F95D11C00A89F86ACC8EC97502A98D37A EA9034F4425E5B4D68D4F29AA6F049347BCFC74089BF5D90FB23ACE4397EF885 DD9B2CE5EE6482E5FECFF4D71CAD6BE30A79BE66DE22FB12CF28F5AE60105304 28CB6EEEBDE29FE8A872105F54FF1A195BB414DD533B62CAFF3FB422D51EBAAE 0E2E68750C2C197C7C096B49681464784F54E262215F79EA9E3F18BAE3783812 286A9A3B011966895CCD89649C1ED15656EE4F2056F2E5EB6C68C49EFCF76A3F 94E282880E64F93FF349B64559AA7E03A0F8695ECB702048D2F895F89B662DA9 C6D1F7B9D2B580F217BB80207513D5BCE1B3199B0F549A8EA85E1DEC31313250 8B161A608ACDD6192AA8D9392B4D5AD0EF2F5E1F5CA61A2CF1B40FF4598DC0A0 B92A728EBD2FB89CE17D16F146895F98969408EA7B32433F91CD912020D07402 911DA5E057F0894DA89DF02991ED0BEC7E5C56F278B323817D83B2F3CB0B1310 FE656C77E803CEE5E1D89FFD05444F074A6AB0A48EBD6DA4E1777E4455F82E72 89594665A53A911059D527302546EE880DEFA76CFFDDE99E613B8A7CAC8325B1 E91214EF0BF51A8EAF9F197EA689C126B72D39ABB98A5CE9BB75D3E5FFB0D55D F1C66765CCE3F01B12FC7B1D9EFEF7AF62897C4AFA81B89CCF04ACA35F93986F C90DCB9CA8C1F4B9CB3E338870E55C579D6BE215399506BCD0D2AAF59FCC3057 689D0E0DF6429F291C118503A62A40109B1659FE89BBD65D36EC1D3BC411897A 546B487CC7CCB65D4356D954E200EAD9EEE4795D20E22020E160A29F25896DE5 D23301C9B3707404A2BAF727A4E55031A9EDD475C2D70F813095B62BE4C1F9D0 46964B4EAE15151264579F076AE552877412CD630D9DB5A705A394EFA57C2FF7 E37D5FC4AFCC1520EB82EE2F6E461EEDB5063363DD459FEB59E4FE20FFA84B46 B665C4A2ADA9A93C770F2BD525B5A7D4BCBEBA3AC59BA27C5298ADAA937F2551 6BB9159E191EB4F7D28BA84331A620C5E15A515407CAF7C51B57CBA9F32988A8 595884AB276C59F233E1E11BA34DEFB435A6C11680F7073E4678D2A197721F44 187B02A26D7A84A3D08A8E09BD01639510D2F49711A938638C8C949021871FAC E65A6514B2F67374847AA53B7B278EDFD7407348C3191474B8F470A17494C82B 5F90C3576E48BAA06D52F834F9E6C6B2F567513EE533D25FF33CB30CD601CADF E8689E4209645D06CB87DB36403B9E5D26C620578BE62A50C4CD0636D28E8069 61C6197DF7DC580270B68AD1B306A39EBB943E029F13A7B020BAAF7149E4AC75 DF491D0D8FF932D9B24BC94157DC4C7CF1C4C8D78F4548B10E96CA1B247C4202 C8477832184C452B12F42FF130784770E3081649E3C9CE1B239DA5956D127200 4C2C2D47615C20F10CA1571B13CCE611D3D81D74EE3C9A269C47F421FEBC5979 3E41926B5DC05A8B1A0ED243075A14E343ACEB7A4D98F6D3F7EBCB4152FCB6F2 3BC2BD3206DA54FF646C8C9CC10FD871319E70F6E428964B8627B1B0ED055BAE E5E7F894A20110F73CEF7DAE53406CDAD98D44CCEBE24F5317E7CB5E4F59A118 46D18B6F63486C22CCAF839E2E719734522120C64E60CBE9B76F2ECD9154A06A DD30B18AC8E124040A4053695A66A8623EADD07B715070EBE3F73583FB7A8CAF 8B20491852F934B0FB78D50CA6E16F747FE7492279189CD3FDDB1627B08D5EB3 9626624AA20FFB39D633F55ED123573C77570D7156015B8039D57B108557A2DC B9D7683F8C84D0C2E59769420932D90E86C69F0B92163CE9F9750D56AD9427F0 44A04B4681648E16526A3407823BA70A5572E8B8CA7A78AEE19DC62DCAE483F4 551397044FC23FC3A207F9848D78243CB7C454D7134B6CDE3A49D23B7FA10969 AEA243E233414CF83F36202A160D807AE08EB68C89A5E5B9525B4F06AFA18BD7 74EBD3A026B75032F621A9D030A58B306F9A2BE59CEAAB1DBB1E28C2C38B0B8F BE1F4B53D2F280CD74B2EC54359F4E43AFD9ABB5E079E2FC4CB99D2A3BBED8D4 3463A4F28939B28C2AE3E54D61F30B7DC4353A18003BA8420DBB4D3386163021 90C7497074904AF632DF4F21036795F9A3784014E7108FC284C2D161574D079A 1EFE5A96E173186951ACA40D417E388639C4D9E556A3F7E9ECBB63DE7A564A89 653F58DCE40539A9EB3C74E6BE6E5C463E7267F6BE5D271488F3E6EC1002A54E A36CA1CCC80EBB433EFDDBD0CBBF763007633B0481258939540A64416B2D2CED 2B0BBFE7DF7C2C3005E64EB07EC1D526CD5FC195524BCC41C77F0F55F2673B69 92E8614A3181214AE62A2D6229466E16E97B400088F57B88A2EED8F9D019E505 0E40CB60363D4BD5A9F3FB06C0514ADF202E8534E81086E63B22EEC2410DF936 0E0F782084B02ACF19D63755C00F9FB7C5E0F1FF89F110B36A80749BE51EA4FE EA0A920E973B551D97740B00D5F5B7475F34DB24AF1F483086A1CF54245EBD0F 375FCE8DA6F10BAA13C292ED0B6F20D10578751BC2E048702383B3EA5B851123 7D4DF426C6D235BFE05B5A2B86D338325F35DFF4845AA691C20A0921A7C06C80 9C4B62EC1F508702186DCC73E9D2CEFBEC8070046DD63E7E5E0468DA179CF1C5 0A70D8F7A3284EBCE607FB6FF61693DA5E47E18380FD277F6CBDA86A01337859 BA1A9FB9E35EAD4721EA8637E5333FB7625444F19A16572505222488EC457648 14FF2239E9E45C33BA2A8512319267383E976805B694F2598E76CAEF3003DFDE 388F1375DF29A02C97FB8C96CFFF3104FCF57114295360FAFB055D1C1A91BC5D 2EDE97D7C2C7DE65084E87C335C60DD1E83C2AD7203426556F65D22ADD79BEF1 3ABFF2A07D7FDE0885C59D61E2F08D98FCC9A299B4E8C3446A9CE0043BEC7768 ADDB7C86126B17E561D46CC9F6DC4478F2605883197EA7D9341EE7E8872A3F9F D5DB9ADDBCD27242D5FBC9C445FFA6F8967B9D5E1C8409C3B6FFC0C3876400E6 7BF2201E436C17204B1C487681DCA5D93598C7CCE1F762C5A82040176AA1A2EC D33206CB66A464AD17B69F37AEE330000AAC6E10E07E0725FCD401718D7EB057 0709F0B45B501C68DD49249A6057FCC5EB6B7BB05CB360C5E93F641D73F38189 7A72A4E388BDC7F860022ADF28EF33873EFF6C47E5CD222F40EBD52D82C1DB0F E8F31EE7931D7F408659F199FF2F24D4DD2052F322CC2D35ED382106C7A54B36 A1D8161F23916952C9E939A8632086AD0470F7D36A859FCBBE51F89597A9B162 76652B2F644BEBF90110D5B56BB33A480E8FF7F370E86A89B231E58ABBCA92B2 0606EF344E19960BF83ED60C51433B686BCA0280DEB07EF4E9EA2FE2733CCD90 2A1033E1690FD0B3DC4FB9843B8E43CB52624D5A771950FF59766BD0F91F8E17 CA0C87754759F0267441639468372ADA1105E7D2F76BBF037049045FE24D4DE7 492C90FD7671AFBB41C0E2BBE75CE2E670F6D783374C8BC7318789E7ED59C96E 938D53A5C2D6EC14E4406B9E03D895A9CD7C0A2F50CE7309D4383D4C85632141 BDD5F227CD69A5703C0F6C034E8AFBCB6C50C9B7A89B99C51A3660CEDA37CE39 A9F5418D09555732E5A8E6D81F1F4877B8B196CF2458D5B00149BF02AD1B3213 B5D4086EB340C3203F1DE68F1A6448E418AEE6187FC48BCB41A5640CA0CBB33C E0209998F8DAD41EF2812277386E786D4524204B1B02B63E6D5755C92D114F22 D484AACEF4744A8E3B7C47416A53666CAD50669F732A44AB73DD716603D8F70D 0290577F25A2A41DB1A07C75C0079786E84EDAFDDE558BF4FB9242D81CF9C949 7D18CA1CB87B3B12125433156DE74C5C2783321A2AA4CC3E2E48ED5342A58E05 96E98E081E653AA71CB58B13813F5E116EF61F16B2DF749CA57759980447846A 17A5D7FC2096E66D4C96E134838AF1350C5C5635821B0E7F3E987615A6EF94F9 5C62115227492B29E5D313D5E1A46E5330DAA1E481F40E0D5E00A662578F115A 31A2B97BDA7BFA1F4CF8E48C6E9C903CF5B0C9DDA5293450E1FFB468FC7AC728 88CFCFA92C5D67EFB239991B5AA15152489CE5797E4DB742AA1BE389CA63A6C3 8D3CA64FAB644E7F0FC423351360E33323640B9C006C4FA2525B63905FAE63F5 0E992D3ADCAA9D91D2E644DD36C20DE455276D4D69A425458E1612E426DCCCD5 1E5B143CB609E3F0300B6DA302D7F01765D344F856AC6F4AEFD479EE8AB78C4F FA421E9C8DE6B4399D1C859508B76BC1EF9A2E702A0B7213DE083052BA716549 A9B22782443E222ADE62AB295A741C1448C9B907C59A00D5843B9265BED050C3 0A5077EAC20A4565012AD267DED36DBEEE2D00F6886EFE36505680E902663D1D 6328F602359B64CEBA6B75998C405340032BB48D69EE88E7EE3D07563728E732 B8B275E1E6802EE09A2F4D4C01141C4894FF403FD26CFF4F0B776A8AD74871D3 79AEF3DE06D08237B4281A51EE9C480BCF95582F89025C49DDC8B32082D2D4A8 4CE99535703EED10A74844053A8AEC1A371D337B26E5F0421D5AA8AFBD4384FF DE8A1D9C4CF6224E79648115E3DC9FBF23C597AD085A598AAEE24D4901E6E812 36D45C1F0CCE5EA6BAD760148D864D18398EF32064941ACF35E663078A618644 AB719E08EE4384D8FB10CF66555D4C6DEE7E0EE5F10C2DB42C091D2B5CFDFCCE AD4AAB2C4E1F21B028905EC8CF9A0C2F31264E1724F0661ADB017FF063F6B125 D76CB2458359BA41AA43B0CBF7EAE1A02814C2AA002A56A8CF0A31EEE76B2548 95581AA4E71A1EE35118D8918794414478C04ADB4871CB2B7969B69820A411C2 D1101FE5D87D9C9DED41344AF6FA6BD7B9959C72916773D022CBDCAB30245318 1DA09CFB200275FDAF3DBE808AE3836C58211F81F4DDB54DFE4481ABEDD7296A 92016A251760EE646E0C99F2203427D8A420C58370162DA3C3F4BC80B5CD9613 4DEC8CC67F053823768C45FF497D0EB77488D38670586887370B434699E21239 D91302F819D6445D1CBE6CB925827F263B8F6736A67C5CBCCFF8213DC2512488 CBF993AA277A2772DFBD7BC14403F5D00A4E0D83C023BCD0C22564DF331EC1A9 4D41F3404D69D7C9F8803C7DEBDE9CD081D23DA14872DA2329E60A8ACBCD4083 A8F1F264764E98493947FF0AF7315AC39C8DF72ABD0C616238F0134675C209DE 49C9B2CAA9D3D514DA4CBCD6071FB72C58931AC6711207B1DCFD58902109F7D4 B6EE24703093CB9A16E3998EE035CAD0B8E905E2A98D3AA75D9700B264B490D5 1CD9D381F0A1DA26D3E03CF9738E097D2AB0A0CFA33454C1AF6CA9B8FCF0F9AF 32040FB5DC09D572F7189A766F1556FD043E3C940908C3BDCBF3E52B5A2C4083 A200F08FDD1DF1E883ED295D25F41233D6451613544BF4E70FB862F75ECCF36F 1C86059439888F8E5B2375D7539B10E0A3CC339529318FBB6B6FCB030BF3E6B1 F03903ED459186E4329EDD9840793DF6557B144D2E56D7EFE22BA1443C9E2784 8B69115F9B364A461774633DFFFD2235A6915135843700928AE561F0A7F1390C CBEB94D736B5C43E08F09568966D772222FC3BC7DCF87BA394D7564AA1B68FFD F4FF57CB3963BD90694F7B036DEDE5474843778E4910D2CEB780EC0F54C1B69D C7A97ADB303036DFAEACE2C64BF40F9990A3AF6BEC86911920636FFA067828B3 921460A8B2A13755C0E966C8DF788687ECC322275A6DA7239E50AAAC844EED9D BB75D31D93F749E59CFD49756DBF23EB8FA7FB3EEE0C94437149154E54DC61DC 20046B0A86A47DEDE930C5DD61A82F4F5B39C982F48D177E6CE162276F532A7A 78AA6D13FA85F4239E88C9A4E3D0E7101DC13BAA153344D2E8B8D1A4BC78A7DA 3FA7FC6A6487A2DB60B9974905D340E56AABACF9D7E4EEBE61933EDBE990F37F 0CC424EFBF164670519FC8B24A57B6750442280315437FE4E2551B58B193B587 15E2877B1D8AB9EEDC72B971C692D8AD04EADDB961D312FF9326D30D1ED5E891 9EE9B5B7374CD8EB3DDA70A0ADED14BC5CCBD04926E1BEF60E6138AA4DDB65B4 163B6BFC0875D63EB1F5BB12494D9A57844CFC7DE7C79B04B96B8AE566A4717A 1D09947BC990CD18EF45A2957EF06145B7F5592F4AD4F2F58CC16716E9ED4421 A7326E839F8B9B24D9BDFAD74E3B27F2A74E9A804602712ABC81DFC69E5C802B FE80AF568DC350B577406DCADEA02260C727B3A1B33EA999A66B5BDDE4169849 DF3C925E27726D65112C937E5B503EC3E70E7830FB53F539943A423F89303429 4DC286C73109D07489784D655A10ED5703FAE44CB0588F0290E5D5DC2797A15D F67C64B9A567CCF2F8A37068BFF24CE0807E2BE7678E6AF218FC3997510437AD 1C39E0F6609333DCFE18381BF765E07DAC682A6F87E00DB012BA72439F08E593 DAE4FCD1E701D79B3B6E83987C7CC3458BD8153E95B8D6DA50427735E41135BF D03E5EC21DE9FD6BAFC52C181BFABF7171D8D27383FD2E4BA22FFFB43DD5F4F4 CAFB6CD1B1B3B55843347E6AFFB6735CBF68CA0C80A1023046E78E35CE316C7A DEEAA5419DD56CC49CE80898A383700FBDE83051AA141F61748AB8635B7D81B3 82593184646C150C4825FC11C26670089A9C419691C752973353E2C175B7B7E0 2303D00682032A0BAF704DD1AE31C2F90A47C303A0A7C289893F2B28F84BED5C 8C74E6E5C3DABB6A45C5C58C08FD4C9A05077910F88444DD8B53B1EE932FCE56 1F0B1696733628898CF32B952120316C1011D1438D418EDD80B0C3DEAEF8E040 844594406E2DF6588844AEDBA1C434FEA563A4481D2EC4E380217BC86FA4EA7D F492DDBA6C9E2D7BF3B0A63F1C4ED443424E11E16FD3048B3D89CF02D01A0929 EEF77B680D76EEECC3934DCC74ED0EC4FF859F41E720BCEEF3F16FBD21498D41 76A5CDAFA423217FEFD19048D2B2AF1DFDC080A4DE527AE3E7363D9CD4B422AE C2C91B06DEE4DD592E46820112BB60FBEA9BBA827439A74D82E90701B2C13888 2AEB24E913B1B2775D1E20A91621283ECC94509EDB3F3F7703A69EA829B5EF52 14E6C9247A6E4C018B69DDD8B9FC28D1D865B4DA6DAE8C2225C6E459EE094D5D CACB3D7C0537BDAABC4687F45A9074AB572061F3D2A36186EB4BA2FDF6AE8595 B5CDCA5A3AFD36673DDA5542E10C3CAB416BAF57A78CF13F6F3C0CFED45A3673 9E25AD0D29D4C0F569B34FBA80D283B34C9EFF2BF705A14E0F3E85C252FB565C 3073E30167E730207FDBBE4C5ECAAB9B98ECA0A60DD9D5DE54D6180336A213F9 1F4B02B47575891B9E76E9CD1B846A52AD92E5 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR7 %!PS-AdobeFont-1.1: CMR7 1.0 %%CreationDate: 1991 Aug 20 16:39:21 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR7) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR7 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 49 /one put dup 50 /two put dup 65 /A put readonly def /FontBBox{-27 -250 1122 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8 47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C 8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4 78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486 1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E 01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0 F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30 8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7 455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2 9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105 EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B 52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97 563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F 0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB 7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1 0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4 1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4B067A46F8EE 2AFACDE591ADF7304939394F221B5B9B316BC47DC7772711A35B466E1790D4F5 C02C57DE57A0498128C6041CB7E702F4D8500433633B8358C438237BBA39C647 F659FACF75574B1AAD3FE61FB97D6C5D0B19E4AC762321891092E73D192C4816 2F14A6FFAA1B22AABB65E8F611F1E9AF66DF68DA1B2B64B4CA8870261F8663FA 28953254FA64F0AD6EFBFAB15830AF856A65835C803B70963595060F91F4079B F8BF5396F04C070254AC5DCACB20C0B1FADD38825886322366927C97E3C5AA1B EA858D5974EBC14D17D4ADDCB3C7EA74A8A2B75293747CFCE0B484713D631F95 43BD5A359229F1276D2F652078ADA5000D1E060CE5CDF2E57401E487F3C10975 09AACD27CEE8581EBADC25D0FC9CEA530E88E5E89F92A63B15D7AC7EC4084977 B42E77F04F96F37B1D2A054C1C88415FF19AC8BE2D58EB6F50DFFE53CC72E630 719A920911EA94AA5DFEED6D7032F2E89B4707625FEC73D9250DAA58BDA761E2 691BFBD9416887C25AE99A7E4840670C502A9F15282D7AB448A58D722ED1B689 C11D1294E80BA0CAC6792F4B8C28D7CE56F019D4514391F9E841A51D66AB1A3B 5FD64644AAB5790DB5C4E1D00D9C749A057026BED785FDF5D405193CCC1C53FB 35256D93F949BEE6A29641725CFEDC98174632B33812E335EC2D33F283B1AF95 2935416D4B20F95A997EC9A08C58D2CCE3F579D648599F1C12307AF6923C1AED 6CA31D4CA6C50C0C23AF8D6363A649CCD5D645765F2889B25B3E0A2A9C97B22B 2E5282B4E76C178F50234BAEEAC278B7DC051B15F93FFAA917 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.1: CMTT10 1.00B %%CreationDate: 1992 Apr 26 10:42:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 33 /exclam put dup 34 /quotedbl put dup 35 /numbersign put dup 36 /dollar put dup 37 /percent put dup 38 /ampersand put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 64 /at put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /backslash put dup 93 /bracketright put dup 94 /asciicircum put dup 95 /underscore put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put dup 126 /asciitilde put readonly def /FontBBox{-4 -235 731 800}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA 6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F 1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF 8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA 726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B 7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7 7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9 EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6 DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437 ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53 B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7 48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081 B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943 A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141 E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A 814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575 C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D 11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE 087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF 87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C 4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897 ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD 33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04 0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555 A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408 637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04 A2D8AC44DDE818C4E23DFF5B846F412C1D28C52DA1EC7F6B68D2E63E6586EA41 0B01DFF80C744F65C069047200AFBD969234842863A2CF78DD48BC0BA686C91F 3B1382C42DC044F539B7089E055DDDE9E76F7EC4A120B4D8D3E14FEAD686B0F5 3EB80AD386901D788C51B61A9C04955BE06E75B24FB77F501D9937DC244B7446 60E9453930286D8112EDA6EB6291C0BDB909AA3B3EA0578815A4CE3AFC9C699C 54C86466BA0F2FC9BF260DB773E29B2D4AF20562C31E83E45950A3A777E06C18 0F29343F91938126514FB2B4A81C98E9CC420F54C8CCD614FC7AA290B7D42FF0 429259B32D92836F4B71D517C130240B63949875D2423339FDEB14B1F1FEC58D 49BC8B826DFD0C2DF5E94A4B4088A7E4029EF2B97B970A53A43F0D280CCDB41F 8F9F3573F522404F634212E534EF3B2FA648D9BF218BAFA1135F6800478D711B 9E3FC435C0D12C845F0B3E77DDA804A75EA9BE82DCB9435BF16A2B94CF7684E6 748B2BB7C5EB08C5728DE734125E6E48B895FF3483E07558714F68F2FDC0F4F3 D195335C8216499611CF9355764266CFB43B77B30E90BA64BC8EB301B5E2D060 B1C053E8071EE600A76C8309801C7927F77D1FF4CBBDB83573EAF13DB5588412 23B6F8EF8C388136CA0BD33DA6043043163E34E1B647A549136C33DCF3A816B4 BFF8424CBC2C9EA6FBFFD26B7789815EE0D3576FB50A3D0D2101D4C43C0F67BF 16984BAF98F16F7652BD26329516CF3979539C902F5BB43BFA0B1DE623E26CA0 521BE8F6908E249743D1F7E62350986EF4385E7E617B1EC50F7408CB18A0352A 9CF70E0FC30958BD6335211756B872801AA86C2F43801FDD42BE49F16DD74849 40E5F5FE77FF2948CBCC494E3D9259938F26C916EF34919924CEBEA9315B603C 5D618FEA13211BD46B019852FE26E305A4EF2362536C9FEA7475769262D3C2EB E4E5C2334FC9E57F57BA7CFB29AD573D3FC5CB5781419899DED8B473385280A0 B375271DC9550455D9AFE5171CA247F90902D62F65F84D05B5F65B8BC80376EF A0DA23DEE61AEE96577629DA3835F2D50C36D181D714E5CEA92198F4EDBC4A3F 17995EBCA8A6B3C86EFF6EBEA1991D3A3BC2EF33833103F462CDA92BCA15974C 49B3F1E7D585E056666A2CB937B7B49572A12E9953438F334B727200C9D7A86F F995C454EFA2D0A5B6043E85A5D282F6C6CEBF5781A59AC4DEA90A6E4F2BCC54 B77584E08B6FB01CD73D5BAE1AFB220EF723C9F99F0F8ED7EA821FF9BFC9D57B 1F84B91A3CDE5B158D3DB7D1369D51CD9A2822D4CCF0DB935B56CF3A52866394 0899E7A965B08BB808186D885D12335BDF0095C476462297D3AC3BE208B1CA01 54CF223348B87BF3472AA2966C208D7BCC2AA07BE712AB448824D7DE9968C6F5 7B6C957577BEBF7EDCFC01EE0D276501830548E6604D50E4C534CE727BADF7D3 BBEC9CE7E326DCEFF2B5908BCF60495C7CD9E47448434353363A82096FA9E1F2 1F8C780C4917DE4EC79CF95A42CD2D15E3D51BBDB9CD624F9C358390748A9A95 5AB4DFEB92EFEF7FB8907751FA44DA024FA91C6C064B5E61069B2796590202F1 2DFF657471BADB7A62F2ABCB770815750378DDF973CD4E11EFC3D19C27C02171 4AD74C3CC0B96793A7E0EB9A0AA40C7A6D426100FF3FECF3E3CB60ADA80DCDCE 870F74D04ED5B167D965F8AD2677298548FBD803C716488925CCBC9A3C515D3D 86C03CDC708D2F95F403008963361C8E7EE7C5C62C15DBE6B22C2CDB249C4445 21C8AD0C014BBE4B28827A5C84D714327904518E36EFBF4356DE0750B52035E9 2E06426EA0395C4852AD2ED3129F4D43E3BB75B546F092C1E7CDFCFEC2F00331 D9D0BBA5D76287C4CA7088332D5BCCBDBFD20B7A07DC6619A4AD3894C699B01B 045D803FC5E36061648DD13B6BCD95844E171F4380CA89F7A7F948715630A623 DD5E011B419FAAB28B814DAFBD3DA2EBC7B6CA635D62145E87679FC56843AC49 FF421EFC70F30062D749120D1C492EF1070EAA096E283CECD8411964DEA10390 147718F191A0A786C3A9862EDEE74767762BCB27D5621A5562EE1D22BE784FB4 0BEACE3F8A806ED5257A038C8DD59D3D52CDB4EBC501C13CC9DC9BD89A51CF86 B6C3F769C470912FFDA75C99C2EF55D78874558397C923C330CCAC3C149BA314 C6CBCA464B176721E9C04D0C08ADA8BDEFEA62E3231FCA6A646F837115D0F479 E51C7E509BB81045FE2F3DCD4A761E956BAF0561BCE5A0D20C0F1C45F40306B5 B6A834974281675F2A33F258B6BF7F7AB717FB72A96C0D50DA6B6E4D3EDF9416 6640E77C36BC882A09024789FA969E730CAC7948640EC203B610D8B02B0E8897 6E0395D5C45E7D414331145412115E3DDD7D137716192A10F8D1F6E134210034 0AC5572B33F6FD9D2B95D7D62D12919B23F7CBF114A5E1FF5C3C310CB947B914 E7729E00E22E2F5E4614CE226310306FEFA46DC9ACD671478C026A15FD6668D3 3562902F13842676E2A15F813364FBF3751A6BCA132596BB02DC0BCB18463F0F 28C1A0E1DD23BBAB471ED0A91788353A27BDB2D3DF7F547A2E401DD536417F74 5CF1285AACD4D96642200201BAB9EB201272A1D102FA7B4C293787CA1DB59847 482B209F980BA3107F7538C5FA1CDC5DB36C5F0A7917FB0BF90F185CFDEDCDA7 3B1D584F43CE6CFC46EEA3907B6E81BABC903DA628077D83A1F18C291729A92F 77607547D61D0CE06750F927EA4F37AA39C1FFA07EDABD3147228D161F0D0FDA 771EF1F476174134A27076EF9AE92D3F6DA91C9568C0E27BB954E27CA09345FD 2AFB9150ADB7AEE906AEE84C5375F25C2210D3F5A3C57298BE1B6AE3CD38DEB2 97904795D70A9F2082DAA0C6071AB9E8FF71508AC77052A242DF4D01C9139805 C2F5BDEFD7BFA42D3B3335332B37983D213B6F7DDEA6217186A93B911DCC0FE6 42957686973CA3E07AD6EA4895AAAD5D5CD878AD776FB9975EDC7EE3934EB131 37EE8F063BC1EBC11D807BEE136A31A70EF2A46B36D99B98B8B1B933F032FB54 B9EAFB5CFED5D813488D6A28250605034BBF2BEF55108CA0D6FF94BCB1650F91 99071E1A1B3B2F1E8E7C89A5E4DA1F77DBF6AA289D331C35C2C2BFDE4A391C6E FB679CA42BCB2AF018303A3F55EBD657AAD46815B45DD067823B4BC3FE3B4245 C9940627467C5F9AE0EAE53CB7CC118984272BCC5E1B8548494E812676FBCA78 A70C417C270EB6E435A6A75CAB4AE742B1194E3F9811A7B581D9C552A3EE5B1B 98E997DE7F74B3D85B46825B620B19357E4A7D82AE97C3B85609335B1B41A532 FB2F53C79A4064C88C84FCE693FA6EDB086732B6F76D31F8A6FF27DD850DD1CE B9C29258680CE73A371B3613F17A3533C5EF5D4E3F833E563E976FD58B381643 F097AD8D3BBD1E4F0C22A79F464FB1168E6B12E503DEE9D1D563B6F9B5A8D6DB D1FD6BF4A90DA086275F7F7AB784F8F945569601AE0499EFCBC5F5585A759D09 6829A9649317B8C53F66C083170EAD52494006623FFED560D382CE663A1B4BC0 D68B544A2D3F4AF0C1A6E50A4603CD433329F379B960A2E6822A381D91DADA65 E5D973E67820C6AFDFB917126A4C4C7CCE0C00EA9762059E3BA7C3BA56F739CA 2F89F58A2F058A78FA9F0F040A8B04B77F300343CEFEBF9357243118D9B62B83 2EC312A4AEBD8BEEDE4DBF3CBA2F574BF9AD66B43C19615961A00D70ECE67C17 6C93C248AAB0D3F9580ABDC833D52A5BE4A5C7F06C12E934BCB99C8D484A0CB3 BC75FE276F26C6AC861A17CCE8EAE60AD5E4573D4DC2FCE59477702AEA956B2A 0DB471C240961BF1402F6ADC61C3D7B72C78145B5FEB9853485C862FC428BE26 F2FCA109EC1D6F77284C5ABA95359FDB4507D921934DAF4EDE1A1071F7157982 3A9799E17F5377F27700EE7CB253ADB2371B228647FD11DC38F4FCD9D75ACC96 D6B5508773BF71AD6B9D49829D6872CE8271A17C6FC89994159850529D5A8A32 206A8BD5E688D5AEEDBE8E0195DFDD5ED07D11DC54131B7E22958959CD35E529 F9DB957C31AEA4F25811C7E0B9ADCBFCD7AE1BB84D65C7EB2BE322E245F50CE9 D611E6D52493244E89003784149E23DCE1624930D53B937405064775D2CF8103 66D2FE6F360D5AFF017C7CD773F0303CA4F8C9FD08B91E414546CECECC770884 87FA3D4EDA2E7D8474D5C30EBF966C9F40F4707E939C22779BC757DB50E9BACA 80E0AD329BABE0AABBCD5C1C59E80CF55E63F84F49FB24D5F8F953D028568083 015973AD8921C03794814AF609FEE8A5466BB982A15644C00BEDD08D351F661A AB6DE4FD2715935A73399ED21B074120B214C8E6BBDD346CE84E704A8DF4EB4A 73C5ACF8E106D56287BF82A4C04C8AD092B9643CC1512154D04AA5213EC06B2E 6B8A5452428EF353C92B18855E9C7BE2BFE82B568AA0A4B620EAE77EA0D60755 E78C6FF41E2503A3868195127619E97805A628A0348CC7C92C3EBE700EF008A5 86B6B5736A275BEB0431FD754D9866829C9B8218552737AE357B6DEB6DE5B17D 5D86DFE33C9A4C93CAE5DC1777EA1DD2D810FC772C8855B4055A1B520BB0EF02 9B1C32FFFEA106BDE7EEFD7C05FEBEA882C2FE39993EA2BB7CB9DDF009C08642 B3B12A2752F8F6BDFDFDF83B0F8648C309248AC9274C823CEC96A0766C58488B EF98089D39CFFC48DB5076BC1DF598C450E76E32EAC21E2A63ED2F4CD9BFD34A 23731B4BCE26D3500339CE43CCA5FB9FD2CE1BF78DE258A270490158921A8430 BA9F37EA3BAE30895A57D8BE8A3DEA3DA9E35E3AFB9E650815E81F9252427FBD 4B27B5C81F4F6D98CC7B7E289231FDEA58E629C4A414C5635B69B7ED30BD3583 2C0CE0A350FA686F91C11AC4EF37F651FF61BB9D087E42A7ECABB2073D930C03 E206ADC510961C03634984D380EE3604635695DB7B240CC9D60E31E684867FB0 C7AF5D477F96C24D377970A9B0431780F0EADC1FCF162245EEBB2C99946C28D8 E85A85CE650089EDDE2C11C224B3BBC65835D33D25DCDE8C9ECF38FC58D24972 EB715C666E5598E6F6ED4268BBAC9F99D725B95F81B3A93EDEAEA3B33EC2025B C944E72BDEBEB532A01D263064123E1514EA9778E34DAD260C3EFB820E9B7B2C 005FB6B60E44782CBB9AAAD0D84E2A7FB9B9A003B2E9C4BE6528537B909FA590 F2AE7CA038C6912DD59455C76BFA330BD5801BB94B2869F9F4011DC70BD31FEC A18F3944CEE997E9D984425D95C28DD02D8E0E0DED0D1FAF045C6BA250868E80 730180003EEE66D87118E677DB28B9F54AEF115FC1F1BDE48DC42BADB2F70A05 0112E3E69AE8F24E90D2C020131BCB703D4BE761B59237786AA2565B1FBE6F13 66F74844A3B2BD29F9BC483BF9931838BD701F8FE96B0751A3C2E93E326FF14A 037BED6C2D42D93E06082DEF985E39557D9A0A607D5DA570E084CE011B3F96B6 2F3633344FB5DEF35A48F468C019A9A881C036F095A4516AF9289085217C2556 62808AEB100B2D3D049629C688392CC8A62BBC7494881B5F64F71F6A280F86DC 288C82510A59277BBC18751679448EFDDB168F3BD63947E6C96897DDFF56A60E 747AF59AE10C996931ED47E0567A0FB1EB9C2A7F062E04CB75174E05D9571D1C FA2EFBA213E13CA73D9FF1CC4661E04E4D1267CF8E792F6AC270F03C38B7DDFB 9155F17C13DC7EFBEDD541AA9FD866F3214FB78FC78DFD68A4B8819144D9A28C DA70DF8489B06196672EAAA63953DC4987FE1BC025CFC38CAA8DD29A19E0B007 F99DF8D4D56FF048A53A5A4919256A3918ED9C87A681B168120E65E24EBA3060 EBB79FE24DBFCA590B47A732B5A84F68392E5CCD7F0AAF8AE46E8B2F7B9B629D 984BE10229CE058AEBF5A5625F3EDAFC37D75C087BBA244FCDA5C6CA4D02EA1F 3F64D397F84FE2AC9ED7D8F03BB56BB25DAFE7E691DC2F7F42B82B79EDA8111F B98941BF10B58EAF2D86FECA8239774A6AE2AF22F8A4103D0CAA22ED11E639EA 899DC81867C0E3C42F6FEB53370D06AF2975843410C8114F5C1057D53F078FB5 96E572702A18C71E09DD607BD6CCCB2CE9D3C84E9D626CE715805C0697204A81 DBB43CD0B952BCD9EADA1FE80EE1E24B1C328FE08783FE66C8A1F615EAF8CFAA DD5A57695ED5BF8866603CFCB4EDF22FB010CE429278CCCD13B39C7AF2135FE1 DEFED11CD2275ED4C51DAE380DF3CBD87A5502AB213D816FF6ADF4BDFC53F18B 1BA97CCC685B11BB417FEFB94140FCE2733949AC3E2E1D25BEB6E6D2E5D83144 463283C90090E110280FC2C220DA957E4F74568CADA115E02BA45417C09CC34B EE51F2452A50D20A5B8D532C283E46E6AFBBA38DECEB61836673F76E8B20FC0E 238CE894EA5EA7C7D0AD342F87831DBDB01586AF952CA32796A6276B2AFE3269 0A26B0D6473A5FBB2A7FDD47EB4CB0AECFE2EB581146A37B403EDF0E53C2F969 450DD44BB534B0D1F8161CB2B04FBD5FB691FFBFF6AEA8664FD8F776A2C328A7 30E745E7F8D46289C8CB4FCDAF7A42371604E47AA073B7200173E1D0075A7895 747C48506669C5FB8EA2EDAC1BA526BF2A3629C7457CECEC6D8F0296C2107BB4 AB5E3895B2DA8C0B2DD14E756EAE39CC14480AC37EF83226903389C6AE3A4109 C93577F97BC888773C24DD888767B11C9628204AA55DFF463AE17936E6BCDD15 F93C818EB1DF9F2664B1BC06BEEFD54A913448E69BDCBC969B7653B868D54B81 8934B0E26F35BA405917D207E2C02266F89261C2566261D204DF7BE4E4FD30F8 E5914FC6956A02F641A478DCF80C02A2B42BA2A326D2202673C65647475460EC 99999A568C1B4C259E3B7A16B741004FF2901AF4F186D02F44B0C6D3F53A6F5F B4066C137C8687ACDD32F7062884391D6861FF0543A377F06B4F85490F096A1C 6213247A6F0C7DFD5EF4940ACB1562927FC7EC5FFCB07A393CBF6FC21C94BF73 453B75ABAD9FBEDC164EBAA111108CCA28F219C0003C488A54BB9B2BF0858419 538058DEBA6C22CB17B7786C34D3F569B42D7065ED309A5AE6F8D457B9655ABC BF4AB6BA6BA1EB95AFE3CD45B37BCAAD8A715629142D9D1138CD3314CF2E777D BC790A63DD1B724741F23B4D3B39C2D3BED0023BD240C19E129B6CF5741A6ACC D6C0310DF5A560D7CA26AB6AF212131073CDA02C770A275F7DDED8C52D673019 AC4A4D4F036F94FBAA1448A0BE735C2CA1193B0B3795B3B4AB693C5B97EE0DE0 CA05AD896B47D71CE613090AB4B0F5FAFFAC48A7F52EC247ACC0CCB10A9DF052 6D19E742A514CCFD71ED7EC2C7D86118990C93748459293FD21BFBBA03C57C59 18572EAED78F8E0A39A03A7C8C1ACE30AB791FB6C477A4B74F21DBEC1DE8F611 B1C849F0A01F93C4E1D76F5E0AF2537624C2A263EE163734F71701E05D77C1B6 AD220682785BDE886373582908664529C9D081667C7354AB745600E3A610F672 53AF7D1DFBF502594B2B50194406F831251EFE156C063B458BD4F42E7DA02833 23CF0005BE43376DECD1A306F75261D6248A6DEDF5F56AFDC8CD410BE0213C4C BB9304DD363D0D60AB2B2D645A8ADAFAC099847344A7C010CD16E61236DBC4F6 D9EA4FB7563A01E3F799123FAB7977699D1134E49A5E079A69D8E9296A062F30 2F163064A215845D0D65B815FE0082852CABE0481120CFAA3B687B32EECA8F62 CC327D1D7BD071F9945AB8B9539AE8E8C5A717FDA594DEFE8511BBBAAD08D7A2 4072A4E4ECA0F3EA8FAB76883439ACB4727A36DF72DE574418B13CAEB099E9FB 466DED499B8E01942E2D6F72035222BC90E6BBE16ED4FB2DBEFC64CD371A6FE5 97D70A6E6319DAF2AF90064B7A240A6B11493984E63B84DD3D59B4243DE9160F D2657C215AADB68343D6ADA3268E20CD294301ED7C46F137DC50B152A2718BBF 8EBF5880626E9DCA1DFABF1AF6828E8D5AA9150BDAF9701F288F864D8C91E976 9E9BE865B6DEB2796C6C3FFA603A947B9F43790A98058936B3109610B502B2C2 320E75318B535D194D764C0AC7A322B5DD0D4520F96036908CBB808212A7B27E CE14671E77725B8EC619C68EB5657863D3663208D21318F7F9415B93B1E72BB7 83612E137E85645CC4A1327859818781CB1DF455AD4BFC77E49A90F893179F5D ECF976993082E64B63ED0533008AE77515453DA9B07AB2F1F0B1CE816E6E1D4E D0D7A445F75F126538FE849BE9A9CA6BF221DDF53BD7E9A45017D919A46B9287 1D1D98703C6622F41A997BCE4F77456A23418E6BB7C0F9FA957FE88A449DBD23 D713F39CFB2D4A639AB99409DC6DDA631A53CF8F5F617159E03BCBC89C688A22 971129FD158E8AD10D39AD3D2E6A8A469BB27AB8F929B28A3459928FBBD0C33C 4DE82E1E1DBC8DDB977706FC4B5C14087456D9634A65BF0C97D5C49593350CFD 826633734D9B96E850FBD5F3F319ABBA61397724E8D21B14FE56B6367ECEBBE8 2D7D0CCE1C2FBBE5817C3D60CF93CAEDF9886632B27DA37F7C1A0342911D160B E520A5D20B4013983021365E2BA6792766B0541F3262A83C4E863A94FAE921E0 57EB7E291DBE76944B7CF7F0D7363681586B405EEDD879BB508FA7E4203C8854 44027B509D69E1CAF1BAA5C1A239999E190C7B91D315AA81B289FE88E5C43D0B 251FAB17BBF7D49A71F75364C6DCECAC2C22ABD8D215AFD535C9EFD9629F178A A75E11332FF6B05A4B1569306E3F3616EE35D8338F65B6601D3535B2C6EF7EAC C71EF79C4EE2A862A75531E4131866D6836F7569B1659A734F35C78FDA7F3DEF 39397290CF54AA9C263E7AEF736798672CFD722612716938391A1053B727C7B1 BEA9DA04AD5B47C42E7B8A53F98AF379F3353F0FD438D215B517A69DB1CA5F27 B567D55144197A840F0BCF876AF832CF3F620A1E2EB286E45794ACF216062F88 D70270FA4453AE510543FB2E62CAB84A3BD7E2F5881B20B5BFE7FAC1125F075A 84070D639DDF28A73E73478FD27FFDDFC0246B3AAE90143AAA71DEC5E440C660 857432CAB7E1E0DE1F6ECBA47F0E0448E21EA69126434DE576DD22996B9C4671 1B5B07B923B59A56A39F22396B2BE68B14283BC384F7EC76C90DC17BF57AE82E AB5BC5D2F39C916F68167A22824BBDAEF18501224005E4E63D8A357F85CDAC2E 1F7FA28FC65DC65FF10059A658F64A06E98152D580385B2DAA906ADC3840245C 7AAA12C0945F8E14BDD097A4BA5F2BE5F6C1704C256FDE77DE6671FC25B05400 61EB206F67B7C752E406CE88205485A27E626161E3FFEE0153BCA76E4F474E22 57DECDFB9294B874FC26D354787AE7D53389C77AFDF711FA5D7552FE3FCFA9B7 DAC7564C749913F4020389E4C7F4DC4FE13ED85AC8F57D0477D752BE1722B02E E2B54C21DA7A976EAF928B142D2E0A5591DCF14420BABDC027E06CE3CE027336 C20703A85CD2D290AD1DC4D347A05FE5E3BB87889B74B7E0CC251A58B2F999B2 F04EA13EF3C6CE11D6FFDE47712BE6C84428E7D95E26DE1BC6142876868B6929 A8F88012693A34E2740818DE3FA7458EE6160364795A3DF3CE46A3BAEDB5E361 B1BF48DCC0B9B9045F65A4E9D61BDB537FD76AB51C39CC123DDB09534FB63C1E A5F85BA1DF0EC2736D029EBBFA7D935A20B087832EE66475FC2AF6E938363F3F 708949FCCCD04CB56E8A00628106F12D7D6B31D08D8A047C5B9E39F4C8F1A7E9 8A06D46ACF7ABE91EF88322FC5C8346310953F9C61CAAB6B8AF4C489447D6A08 125F9E06EA30D6B07DB76E305626581D69929EA0B06E104674747A436637D015 34A880E798BB653C9AE9E8BD619FFA875FDE8F488CD798DCDB0C63532D0D1A7C C866EB30FAE071B43C02EE5C01198E81CADFF0686839C2D44FED8257A2BE9E88 32A38671E067BE2A49D3BC5C0E7893E12A04355315FB0B46EB033DFB8C101EDD 84749263790C308966FE76F6789F21CBDF83A280C6D6FE8BDB669E2F30795E46 C6EDD896F762C9F3E647BB51E43A7BB4A949F51D5599C25DB872F75D72E9BBA1 616BEA9E026069F0262868FAAA16B44DFD016F80A6DE44A4A69B5AA6AB8C0424 C2932BB816DF4F7F74145AE2A0CCEBB71DDF61B2208823E42D3AEB663E3206F2 340F7369C6645397100FE513FDBA478C5DE5C9A0839B5DD2430725529939B414 89BA91759A62625E40B92E834A9EFB3C68005876010F9CAA8BABEEDB06B6A554 21609C50731E2435361AB8F53BF71B878591F8E0BDECC464736D96271F8872AE ADBE8BE4A26B8145480F7EA4AFBA97EA46F6EFE3A52A20711ACF947EF3F8B580 500DC99468972BB657E57245D4FC01F8665C939D385BEC9126193E1DB54E1078 042F0B0984E812A44726C4B369EE9CE54083A417BC8ABB50A6F2B185E3B8BCBD 53A75936812779305A859E533617E5192DA6C3531189CD57DB856B29807F383B 530DE0218926F7A6FFAA401D3864931FDA344BDA891E32359EC567739B25CEC1 A4C8169F251ADF4594215549F7F225DD1F20F1269CEBFC88CBA7CFF4B7214B3A C111FE9B511A8703810E222406D86F41996815618661ABB2C69F663AB97797B3 81D7BA0172D90246E5B076662ADAA4D2BC8FA1BDA20F13F9CB5A70465667B32F EE2A1FE5DBB8BF41ADA4B7D3970DCE1972508929AB078E35391BD8D8C0FA2FC9 A0C63973A0236E7582D4EF32D3213BEC05DF0ABF760767CC5020B609E8225CAD E64A95D1E7D032833DD90ACCE8B5E40A3D57D6D5F0B36617644E83AD6BB70DF0 DCD7D9410B7F47763F7FE5533806A1DE39BE6241C07B2BEBCE630CF7550B1595 81EE53E4C92D15FE69B8591DDA933337F7F789B3BBDCC5526B10BB959E76225B 2569292E55B90B4465A44624AA45A4327E23650D4C9A941E8D86A2D619CDA196 EEA705015C6EA8330D3C04F293512955F38C4170C12D709C55A2832C58930C13 D9B37FB7D4C8B0FDCAB5BA07FFBFCD805FA6089DC09D2CEBF1DC3C894CFD93C9 9BC945C25591C38596062BCF218F28DE9B4EE244182FDA170A07A7A6CFFFDD8F B08F7AD8857066E582F48C596F3C3B3AF67294D1C45C5E5E6C2B7BF67C8AE472 79835988AAB90BFF38E234EB1F49E67200F77BA40CFE10463DF43FEF5FB13F1A 7CBEDA0B168FB8DF78C793CE54D309AD9212A1EB5883C5FF17CB637390D2DBD6 07F05E04CE60D3211C1A32304D1DF076EFEAEE3ABA07DB78D9C13F58FB5B3DF8 1A92DBEDB9EA5C55E3752855AC1225A2345D3B9E37F4068272AA3E465C74D122 782864FEC675506304AFE1EBF79D0972A652D452FA8F70F9C6BB5F7B521E534B 1EC7CC493DE8D55C2F0007B2204D1E59383FD1380519DC4E699BF7AF8D81DA1F 8B0E9626F17C2F620117230E9BF7C4A58F42F8CC037182D73D7DD884A04E0C38 C9B7B80589278B76C2C858C9735A5816A0CEA72F099E038895151004E1DC8CBC B8D53BDA668D8F985BF4FECA6E8646042DBEAEF1AD6579B60FACA93175F3DA04 40F034036E621E1C7F31A376B3765B285B7E4CA83CB8CC1014658C2004D777E2 2D08F4B307A0E63DBB23B21D2A49101BB7CEACD2B40A686DD7C66F4FBC5B6163 24F3A4F48706C45D54FE0056B5C4E748FF43EE41D34563867E41D8160500122A 2115AB57213917F5B1BEFFDA531DEE363AE61D480B05F7F2F440B851B6CE6265 2FFA0A0FCDACA7C1FB9948A63967B3E4E106A7D2194844E368623FA61D327321 C0949D6495FD37433D8157365435FC316539671407676D347F7841CAF39E315D 00B2F5878D64D0BD920D3E418CBEBE3EF5717D509F0AD20C2B9BF8B481F8D7ED B1ABF3595255DBF1DA8AE4FEB4EF00FCA5E681AC5C80F71ED707CE5B6D0DD8B3 800B87042E1CA1C3FE1AC461FB47E7A8AF5977DEDEBD2B1FAE57780342CAD7B6 205770B6D14E8C4387DF27056D3E3AD60FE0811A1F9D2D7DFB6D1D52CA8F8E6C 3EDF8F78AE862AF1D75546E4C0C624CC57A18FD61968CF742FEA4B45C758CD53 78DA3A32960328BD4079C7280F19AC3FB66D24DA8C9235AE7ECEBA537F09A958 F5FD63C4E3A0C49F44F8CB0A828D2A7DE24949138C7206354D6BE8CDB99BA5D7 C60CB286AE290268214AC0A0C3F775BC92DD5326A100CF4842EDC00AEC236CDC E4F8F8448596B7E59BCB5EFFCB7D8C90837FA5BA690B9FB4D4F24BE0EF5EE864 717394793E045BA233A7B146AFECA0664577795ECACF06E811E1A0147A38A3B9 2941416AFB19B4C82A73921AA970B08D68818AB2F159E527EB7C48B64C43AA2D D5DD0DAD15AD0161667D273BFD59BA13D7AFD709F43DA9E1E5B3B5CCFE7EB38F 08DDDD02CC0CA2A60CEDB070D54AFD8F8EEF0B460E839A2904A8DE16CE73F632 3CBA9A65DDC7DFF06E5FD2B074A6312D01F8D75491B87EDBDAF045FD2093AE79 0C2CDF2CD7677D4639E412812A7E95224C3995631589DCFB5363C82E7D1F66D8 3224A7172E5F0DBB88275EA86428DF0D223AD4079C9D233CCF7C83D3D488EA8E 0D1A5710DB03D00B4729E51803322DB1C649D2C0FD6D3ECDD66DF8EF0FA80B1C C447EBBAFFFE5BCA6262F252CAA42FDB90837425645E57637A4FE5DE5CDF423F 85E41136A2DB6EEF9FF48965C73E07A1FA4C9C0DB88E5FDD963E55528C8986E1 030CD62EF13B3DCD4936080F90EDD2CFBBC294E666E0D78D448CA04113EFF2D9 C467D9E7616C426F93C1AA8C3D31D26B2F14C4B1ED42390E613B4881D137F79C 07A1E8874FB91F8C3F561945FD8903D4BE99F18212E8DB95BE4220E57876DA3F 5D502316602D0CD1B1121FC930F08BCAC9D6E5B9ADF80B3C1CA1215756F11ECC 7D2DA3D97ED094920C38CC4A68D7BFB6F75E8431A3840D5845CA8752F14AAF8D F5A80ACF8E703D88EDCBE251C10238BBAAA923DC490049E76DACCD2FD320C349 7FF97E3E2A9EC49C5EBA951F0EEA06D48727CCEC45DFE86D667725454B700F97 06B1A6521B25A0B5034BB64EFD4C7AD11E83F24BF7ED607789A1AE805881E4FA A5A8610DB42BC7341F81D63CE70A7E37715449BD850A4CA83A0C0EB1A33A29D3 82630F9F62CAA98AF0AEAE3E0F450B925E24A82907A642366EF798CC064FF67A D3BC3D3CF3BD23641A91F2DB09680BBED2586A8869FC8015134901F7F4684B70 73E4D6A466F013F76619BE61A4B9F66BF167EA7FF7DCCFDBDDE96DE78EBBC0C4 A4DAC9DE8D709078F4C134FC1BBF53315977ED4C9C41CC4A02026E4C3443653F 39B23880391A2320170337F211CD83794118E5A014922CFBD8482D88F5622059 3DE77CCE12C636241FAE4F5B91EFEBEFF1EA36C91465BB15A49EE3202451B862 BECD7D819A56F7D7E46F981BD96FF1FC2587943D90F4B0F7B4C6ED4B76D6050B 01C551C265BCFADE1E2D72A0FD4C8AE9559C7F2723769B1E3254E33B7725321A 1E57D149D9A3091EC5714180DD68B89D7BE2AEFEADCA9585069CEF9D5FBC51F6 B526E00E168E72F5CC9A70349DE30D46C50D30536821A4D988488C72AA9A8E87 52DF5FD0ACDBC377A37AB3140D89EE5803A70886696176D2CB7D226443866046 174AF7D525A28D851AE35BC42A2FC7EE4777EFD0E1650F7BCBEF9DF1AB64870B CA1E15C7D67B3FC527B86723054D6C1EF1A869A9FCD5244D0BCE4182BAFF60BA C7DC0ABB04C31C92741C14627D5ABE692403C6624B6CA64544E905B11C6D8FD7 1F28055E4BAA5CB25996FE88F502742F42E11D087F61117F9730652F493329A2 453D9508DE874DD92BE4185F6A7BF99E562EB614DF01385B86F6F271F355FF1E ED5A84D534446E834B5435D483DC20A729E81CEB96EDAEE53D2E431BD905046D 712133BB30F33DAF2FC62BDB3A171BAC8E33297C08360CF255050DDAD58DC96D 280AEE9F9B66D2D8806E2CD32F8A08434FE91B7451AC5948A1DAAFD2D28CCA24 8184E20D0F00EA9F2C663E7C4ECA2F9AF6EEA56F282AF32DBD960D40D4CF055F F33D5C25602C2D6040BDAFBED1926120464F183124F48D34BB54A06A6724DCBD DB2CD715999302DA068272B4E5742DD8D017E604C4114B1DB529A841F633160F CFE80EA9B3B52B940AC0F685DA509ECA4B420A996E8488933EAA721B562450B6 554302451C9AD6A56A84B85EAC18F03535099C8363599D4397454E19C0AB2A34 9EE7A3C94165E396B9EFB97067315FC4762F2BB4EFD7FC635FFF0593528D9079 69A5556D34927059A46525E6445A881CFF4B5B790ECF680068973A47EB6849A0 52B9F18FB039050940EA4F9B51A3B9A099F33147569AE9254322ED47A6C7612C 46EA207F0A0FCB785E1DAEB571BB99C97D296CA1DE3838CAAD06A98FF8146056 ED014E14180D505B17AFAE35F58696C16D8C46F13290F1600075A363489C9D63 6CB4DB7FDCCF49E15B6825CBC4E04A2D6BA136289D198E2C851D794A9A3E8E45 7790862DDC9EC0D12DF50176A194F39C7C13C88150D2DD1208F386BBA3B0FC1A 77F94819F12D78D5C59139A1DE0F2DFB3A7FFEC4FC38067455003968A57F73B3 6C15268401F75B5C843D46EC956AA677A8DB075B61E547DEC35A63124769324D BD64C1B1D38777BE93F60BF4D92C85CB8C9ED2C8A77EEE0A4EBFF3A44F237305 EC57E50E3120CFB0DF8D573A96A740E1260A26C3174AD869CF2EEB226ECD812C 480D45502C3A4BE2B4EF9A8EAC7DB836F0C843971067F690B653D9C722655066 D113AAFB04FBDC5BCEE0FF67A38C1808943882E4CE60A6969939BEFE16C09B59 CE50B529C3BE6377368C3E827E9441D96BB174BAAC8B518671E3A9B95D4F1722 A26F4FFF48348CEDACCC4FD98F71147D0B760B320705C1C13C9815E2CE82C5F9 D6CF04C81F1BCB9F12A188F9828498C220C6DF1738CA9F236B6D6A01D747BB6D F322F38D0D60A2E07E0BF1E259214C3F3EF0A72074C261ED09B05DB3915D0835 B2BB52B6ECCB04E712B6BFE1A0DA7437DDD8C4C05CA45B1D5CA17EA99BCE6428 7E635AAB8F2BA639F28C52CD0800BC348990D0E3832B0303A272D6C99D8A6044 C5093A422D646898EF85ADB647544B2CE33DB5DC66717506CC90ACB01CF58830 D50F4CF7BACAFA2311819C3F50A9F91249C624EEE17EF5752C6AF77D6B852703 81F95A42593045A69334D6DC1280384CDFA0D8088D97332FDB06A02E5DE9F962 1B41C68A0139BC5F03FF841D8E93FAD2DC08E645F476034919C218693989244F DBAFFDB4FC0436DA9D43C8A2D55CF8DDB0E7ACDF9D564BCBE38073E74D65C8AB 0E89D87275D680F0FBC2389D1AABA196474E26BB4BA01527A72E554C29EDD3FE 7B17BEF3AB22F2C7C0EFA69C708C36CDDA24C38A845EBA9E9A3E6052B54C188D 2743EF1487B6DF0E6E622A697BBE91D5627DB3F32A57C0AC98368FE53BD09844 A326B096D01FA3547FAF440D44E079EC0EFC2A482B05052B2D57DA79B8B811E6 DD9D0E46E838F1402F32EC5FB127DF771049F7B79BCF62C14E3FB4D6D7BBDB80 975272E6DEE0109857F51D57E304B74DE4AE99ECFCD0A40E57C5E51283D8F270 291665EE714A6596DBBB5285FDDC4B6328BA6745998EAEF40EE717C63AEF8A59 E87D8E3AC8161B6638FB5D0963F8795587949FFD6F58C5FD18741BA3483B7FD3 FC31F188B096FEC566BA23ABC2B34B79DC293909C9E8393AC9A26E6538672756 3FE2EEF3E04ABA6D344F2DF359AE718C7D0EB5CDA5AB3D09C62C990BD5BD7E73 3F1F8AF93ED0FF3222D7411CB9AD3C3AE9EDA04DD1AFD21A4653AE6A890E6C07 1607F1668E4B62730DA65DF88C3C63FD7816C32F26D21A87522C2097BB925D92 CBB694A7F77E91F3FAB14D0A493384DF902DE5D5F4FEAB5F5BDF567878AC8B4F 98FBFE8FD16D07A58E2211B87983D40D5CE6349A207FF195B7F09B914CB6D688 B103A5206380A90713D3C872EF8C026D2E302BEA473BAB705DE58D802A47C249 9C40EE6F20398E591A3878D4A9DE9F6EC097521DDB694503AA8FE3BBCF24A5FB 3DD6CCF1247B5D9724508C63A3E107DE56F0802CB083399BFC3A9DA62E7575E2 58AA589E85ABFF222717335997260A7F56965DE4DE551885BA8A1DAA5C97AC34 ECDB36FEBE3D8428A4681871FEF7CBF2B5DCFE747550D296B419140C39EB3AD9 D65B6146705DC3FEF0131533283A100D9DBCAEDB8A10CAE4C431136FD94089D7 64402322603B7049D4D10F97FD54D03D81B7B134293004BFB852D50DE5C6C5A8 29F3FC4855C34AE134EF939755B88270B114106573415FB185E395F6FB0A4698 B105964A9F374AF011972D67BBE0B3CDBBD0D9918A0E0D2653726C630FC8A63D 7C5BE82A965EDC1E0A57652688375FA60463EDEF222D4A6D726B768D8EA06584 BE7D23F6FE42CF8541F4BCAE1B01C73D6500207B211720DF98B72D016CC513FF 9109B59C4DBE5108CAE19687C1682A36F39AA8AD09C5AB7D69A13EB0BF2F50A4 0766AC191B105EE28BF0A87862C377E47EDAA69F99B7793F5F76114940848E50 CE05005B4E2C91103DB7BA7BCE79755E4324C0D0305EE203294CC82451EF3780 106156CC6C6BD07296CA7B927B869F8A9755CF9173F22D30EBD3217A98616E3C 8525AC8ACDB07F9311558AB53805673411836886A919BBB916416DC1C2061CF7 448ADED96B2933FD25C207BD374AB495DF564F25554274A3D2129CF7E6562F56 E3D7234B8660A536DF464418BD08E3DB7CC2A2A8B80A0CEA897505ED6367A460 3B6C0CE70E7C5F482C6B3FCFDD8C8266E023C421481CDBD041469219AFAFF611 97F1A2D6B13A90A76AF1FB2520D973DB1CA53BBB11A81115605A9ECEB0AA60CB 972E5FC2C431F1A5EB305D09C8B4C6D5CE1E397CE7FE9DA819F132192B2B91D1 2832F636D75DFC3A82143BDEE17461D536B13D21CDDC295EB617AFD850D59356 7172AD007B843AA74DB797099AB440C40BE561612B4506A8E26D1C4C5A8DD4D6 2B8DA07722FA903A6ADD179E0214071F1AA8A21022283E7380AF0B2656DAF629 50E8EB7C686EDCBAB6E56C5198041DEB47AE8BCDB4C30D318D2CF076491894E9 C9BBA0C6D9DC4B5962350AEF5B9DC1EFFB0C9B8F562660D677F376B2279089D0 294FD57B5ED589C1D28C6E9F02C821134A221334E1B4AFCD618FD86BAEBB31CC 28FF741E785DA99568AC909B091BDDEA56D6E3B75F4307E3A989C1BE6C92546C F518EE6BFA37355BF3A752C26A014FFD48B98F7C1B11B625A43E677DD04B16B5 B1B5F666AA67EBD602583D810578ADF8FBCE669C3913DDFECB2F64745EFDF7DA 13E21B44417230EA477D2E13452EE0E048FFBC3B3F3E32687948361AE63B2F3A C2393837699C356E580C995217D2BCADFDCCE3A6276B86DDA6DF06884B153369 327D3461E0493B6CDAC5102E62040437522DBA5DB6B6A4B30BE8AF1E9AD4DA47 AA79B1AC528F44184C40B9FC2E402F602FA679EFBF9F374BEE06E6332B112399 D18B8822C21B3B1DA3A84B31023D39508C1F0C97CFB05298E67DDF6EE891E261 67C5A17051C6DAEC3924E7E9FC00C98225CCDF01D885724122CBFD1354A59CC2 35EF7E987F633164341E2074B26689C6797F81618EC137BA7AE502904A211920 D7FA213A6F0BE82D49F7237690413AD381F5D2A3BB67D027C48455F48E717DCB E1D0ED373D62E180BF0AE16B91605EBB768E97242CA8DB982AC0C2DCFD4B5EE8 95BDC8910A12F20439946D3CA70A5F67A62B82BEC253FF1C68B1DB9BE887923C 1B4F803DEDBC42CB12082ED81E92F657D30E8652E76C6D93B1C7196BB77C0DBD C2DCB9E8734272157E4BD32B57FAD22278DF0B98DA7ACCE25626F453E8A7387E F75FB71ABECBCE09E6D35C7CDCD550EC6907A8832D6831B8F16C6FF757E3733A 3D028A0456B64C686A35EFFED2BEC9A9A1D93E98745DD6036FD954AAC48ECCC5 470FE468CC4AEEEC6D6E650378E5561990EF37879B517DA5D550B5DABF216D27 26941BDBE7286F95F3DB4673BEA513C8AE8FAABD78ACF6AB6918308627EE223A BFCD0B05C18134AB378AA07512D71E7AF987C925AD05686B6891EA8573FD13E2 790918687BD4DA3C12A9E0F33FCB6AA2BE3E3397B970E80338E5338F0F603B86 A42FA5A6285CDEF0739EBEB1B9133E86BAEE66E1AC48F83BECD4FA2CA3F1D5EE 8EA02DA4925191191A953FE68C13398E2D80796714C07FE16CAE171AC6BB0870 0AA402B06C310DC99F0A07669C57B5292530FB8DF265DB909A86B8D076468B4A B24AA398EE42F29BB41E7A640883F9D6021F4CC7E949670DACA3233FFCBD64F6 AAE2DFBB7B1E69F24A6C0A8D86081B2B09270D561B20EAD4D6B1D40B7F333A0A F1B2E915DA6709BA159E81455907510390AE7C870A4F38BC8DD19149558B9687 37B0777DC5D7964E3B50F4CEF6EF43F38BE9F01A68B60FBAC4BEE09E197C2554 C413B003ED8D8A095BEDCB291ACC0FB3AEC024D779BA9D69FD3D0F5D105F95E0 EA00C1483DC52F2A37BDD09F1F416BF99C1299784AA46D36515387FBD61C1C27 A2B6E55C6B086E87B32921BD7441F10E49DD10D7D82E81AED5FE4C5AC09F617B 9BEED75211D3FED854D9414ADC9B6AA0529863DD90FD48A3F82DF1F7C634D83A 261AB18F257A389AE958DC7315251E670296B0F415AB99D1FFB56AC1E7E61BBE 0DD2A5C6DCB7E270957BAC7584BFA9A6E21CFB293F0F51C58199D2EB431037D2 C44DB61F55B46B3F034CE7127628B7A3549AA2CA1FF18DD7AECFC4EE7B3AEC3D D0A1EBF2F7E045BCF177FFEC6A32B8BD47EDF924EDE5FAE04FFAE9904F4229AA DF5B82485C624F0B7319B147CAB299A6FC7EE302DB985DACE5B13F8FA8E73504 96E522B8D32869418AFE99B2EE70F52CCFE638419454432B9688E631272806CA FDC72B2F2971931F3D32AEE7B8979EF969E122CFB6D7AE0C314C3CF64859DADA 99AF547DF83E7B74AC852752D25B6EE4A29B6CBA28CB35FDCE44C0CF816E1420 9456518D9DC7A31DDA813F7ECE178F6C80A53010BF2272F50E93F5EC18E91D6A BA5DD888E1E9FBAB51276F78875DC0E6EBF759FD1C92A7D9E86D57B9632E5D3B 823FCB477610DEBF376FF0DAAF01A47E0CCBC52F0052C93C35EDAC9BD26C0CC6 5D62756F5476CD1BD7581567F55A6F04352AFB226DC7087F9D5B254E454126DA 1C12C7ECD608698A0B2E3595CAF63B8BB3C1DC9AC379FDB7F99F255C8AC29A46 AA322BD508021592969A16DCBA6959C5B92D0510AC400844405C810D6E34D41F DC8867E6A9 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSL10 %!PS-AdobeFont-1.1: CMSL10 1.0 %%CreationDate: 1991 Aug 20 16:40:20 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSL10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -9.46 def /isFixedPitch false def end readonly def /FontName /CMSL10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 90 /Z put readonly def /FontBBox{-62 -250 1123 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C 30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D 43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B 89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A 5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850 4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5 7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40 30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9 2E080C10DE923C18AF86D75FCFFAAC63768D4F985185710865FA2A854053928F 8F5A6F816E62F9367CBCE95A83D43D60D75DF5832F73F26FE0E3988089C5B470 CEC7BABA6096061121E29B4633493836536FA05DE9AD21F79585108D73D66F52 89C765EF09240D679189A56ACB0897675C45F3CE6491DDD050880FF9BF6604B1 BCD576C9AAC2E47C61A21219786CCB13710DFEA5CC395A0D5C628A69D6B0DB0E 8EADA5F59518B09EFB0500A33745E3BEA0CE52D81C637F1CD56256CFCC2C141A 042750BB8EE19477DFC332D78379DD3C388B2C66D8340E1A2CEF98FE2F767F40 3E765DA74C689354FD33B951AC62FCE6799EFC850E1EE57998DC56BFA333B488 7BFA52F964913488507AC006A151FB661D454D6BF86A714D1057324666291CAF E3154D6DB833721124594EB02BCC1B2D08E39CF58D8336C968EF1F940B756840 C9DBA2C6E42B6CFA19C610C9E790B70DEDCAB11720CE517EF459A88DDA9A963C E61B47AB7D12C03C665837F0E36D799402334623047F448FCC2E93B120C8AFEE B749FAD4DB48E8CB88C4DD5CCE7B135FAFDD5C6A4D1F96B7425F367BB92AD81D 154CE323BBE7E89F70BA18E1ED8234C9FCD1DAD252A9AEEEAD8A20F2C29B3BB4 198268C2ED474BE7E82D66D544E537A45E59D1BE6905C273F70D279C23450BBF 1DB6972B959A6DB172EC02E537A547CDE3ED59534E41401B20BAC1E6D4BE7458 EDBF773FCBE7E3EE9C9819C536A893760FCEBD235DF339D6DAD8070E8690A310 A9D594217DB1FAAA7280EE97729F9CA972101A4AF6C0578CFBECA302BDAF7A09 B9873C0901AC59A15E0199F94A35343C0F7BA4C4918FE3D5F3675E1D5F9F85F6 D91B821EA672EBD393F14752AC02D39DDBCDBF7C1E49CEB4642ED32564D2BE99 F1173F63FB594BCAF4224FDDFCA67DC84B26A05525B7516D21D0DD3C4D5AEC66 202AD0C95826028C6D78DA7A1381B8D0EBAAFF55EB9C3298F4A1C6B59C6F3D2E 6292051A889ADAABC5148AEA7A2251E85DF7A2808DA0F15C8DCFCAD4DD74C1DD 1735250137D1BB848D789D2245F0716BC859ED2A8069B553C7DAE9E1A862D52C 5B5482451DBA829AC8D6152AB4C98E4889BA8F6FE546E899C3F23DB505866CC4 960D027121F575A8525DC0769251D04CB0A594264474E7E8C30532A8E6AC592D EA4E584489EBADB4EC1A4482751D68A39924A60EF3D3F3BE7B8703867ED83250 AE8402011BE6489302B453EEE2CC75BE1EBD6D11DE0481D07494A495A15708C1 DDDE70B194517E8E73EE56F52FE237E5770B120FCFBA6A7A8177A3C54B1567E2 EC56BF3888A77784379766C689DEEC825E8BA949B68BB1D2B331DD51FCF7BC22 F079E001AFB38583C26021252A32C95F85F3FB46B073D2F0CD779470C85E4E15 EA252B9AE59D364592032DD644F07266070B154D04F3B1D377F44C52DA36CADA E670ABB7E3F94C1CF79601DB77EA363AA547806F07EC65F280E2C8D06A5AD748 E4E26A25B4CE431B8578B4C14F8F43A9105046FC44AD85A688A8739B6D93C0E2 5AE6CCB8CA9A059CC735194C562CE367B77F86F4CC37B27395321248280D8580 7918BA06EEBCC11472E03ACA18F6BB68033B5D68611A6675B785EF5B413FFAA2 5D7C68CC741E6406FFDC2252EB962979FBEC5B754D36C28616179C18DEADA68E 5FCF195F6A7B061E7396035CA9951387CB05B726849AC167FF4B35F55C612EAE 26A92AEB03FB3C645BD848C7CC4405969352CC7A02201625D206BA5F2E78D603 6FF8577FF0378DDE1813C0B51287D028615C1D0A1A803D0AC71995D3AA98EA19 895FC4A571EAC6810256B5E8D0A7B1C48F74761461C47164425CF94C25982C7A 9EF9DF5F463E4D5360102DBDA3E8D2A49B18EC945F6A894870F0A315E5955737 DAF3C88658020FFC1F698843C5FF4284D007B4F857E697B9AF10504B7758D833 D010DF6C245977D052B33242F0C0D60B50C02F083BB387110FEED82C88EBFE96 7830588FF0D5A6C7B4D67B09669A9A9EFADC35C944D93BCD9780951AEEDF3818 2CF9D93F0DD1A93CA0B9E16E5888272BCEA3C02056E11D20CA699DA1FDF960EE 62830A94590CB5A80A96DE0F572AF092B5EB22769F5A5FFB29B76BCD083A36E7 482EC853E54D1AC2DEB5095B1931A5E850E9EE680AFECB781640F9585828892F 41A02546BB3574C761834905FE37DB5A80BDE8C8D7179F2A76A28EB270FD9050 1C1E9E897F82CC54137B821E0BC9E1F636D0AA4A5C258F1E16D3FA1B997A6E07 6833290ADCEC052587F2417004D81D2496B62F1BFC14D0B6BA97E9AB4441922A 6246A78DECF77CE0AA2B81E24880D1E28DD3382F1C82957E8488C24F8F4015FF A50AF6AB02586838426E1E888CD7B25D2C90EA234F5DB8DA41777B087EACF8C9 98ADA1E42A195F85140E295C8C60D16AD94D1E4F1AEAC271E13DD12009DFE9EC 7A7B2D8F1A375AD1EC12B90C6C15325D4D6403CBA87CB99607BA14589DD5EF65 12DE57A239269E7DC88AB514A809D40CDCF22FB0CB620C73CA4E40712C10FF6A F7625ED5D6F810664CE79AD15DB3C8A3F2B68E2FDE7925221EE301ECEF9F52A1 7852AC2F05642001F90D13C58C24706B4C559E6B3823C95506742EB67E51C702 1EC418DF1F5AA069919E10782CC6B48232AF42B5DB6C6BC8ACA911266DDBCAD2 04AEFD91765D36C55C7DF5E4904E0A31BB023D2B6B283EE439132474DF0489BF AFEA7F1BAF906BC3480C3F49CD4C7B1A65F246F3322EEE6A88E87D33E6B9B967 0ACA65FA4C34F153EEE0D8AA60503E5472535774FC32A6782494CA41F18654E4 9AE7E94747F31486236D57D90F34F9F798E4ECF73A77E4E048591B468822948F FA6EDA8896D7C4DFFDF15BD6B391270CD6E1A8DD32B615BC31CE4EBCE4CAEAB6 6C50D18DCE6564A56485D6431AF4642425CC971D8CC98E1D09EEFD38AE204100 707AB0E7255F505E6A03417A8795FE234F3B5270057B79C02D9E39FD2DD47C6E 7EDE9094A2FFA3FD0B52E68ED5B6F4AFC84E5A6E895B0EF9CDFB0756347CED59 021B016AD3B9360072AFC0993C46F1A081B88998A1228E89B611124E8B03B69F B52A637750B62F3F797E4067A4370FF7D49ADB504C8F467E09A0F2797A7BD229 37F7F2AF2578E7E3147E868EA485308A78E03283671F7A9390151FA0D97B2BA2 C8B267947253B9D380239D434820CDDFB62A49C1350FD1E8C3409842B3B67956 DCFD78E6E6F65F0AA811C761F954027C449402A517732EAC84B59962BFF3433B DF4A325A238AF9D09AA05FA4BA1B31FB8F05D8FD378BBE817CEC097C42AF6AD9 D239A6404524925A15E144F1F6A7D08B80F15311EC33D8211595E39A88124BAD 47DD8CD9ABB63C66010F4B26A5844406AD0AC0A9303D6E4BCEF129B7CEA8E6D0 B479710D1DFE00888B5BF768C2D8151C62FADE9AD2744BBE93D44707FEB94092 A54C44042C2FDDC15A78F63E08B1C9091B63CB56D6288C80F9A497BD9AC7330F 0850968D3570C77709DF5F657D180ACA1884282AABD08B703E6DF6B61E11A32D 84C6D41EF79FEFFB330AF970C281355E0F38352C430CBC560A7C2CAD0791CA81 2677EC6A81723BB6DB7B395364D3162DE4A3E5138E458C080FEC49B5E81330CB C3FAB828B2B0A9AB2AB1741D1F730BBBDA8B28F1979E27FC84AFDF18249E86FC 7D16A5B1084979EDC432DACE507BD56909552287909BD62518B0A3ECED23724A 5E83D4D6176ED71F249F98EA43BC952ECEAB5D1E54AB7B23C3843693D80F40EB DA237CF5DAE26A6F3F8E1B05F08105277D30A8293FF1EF1C90638028B665448B C09E74C8F6085C4C888D7568749BAC909459AEE559F20DAF6B7BE3E58EE4F626 871553396BBB54C9C035946E2488EBB7DDDFC090C0ADEFD10E386CE4E5BAD89D 5B4AA2FB06CBFD01975FB9B77D819B61E91A3BAEF1D3C54D29A9C0B9209EB7E7 F150263B7F9162A8C0AFD332DD1B98C222DE2579234B0CF880115D8A6D1F5638 639CD15C41F991A94B1E7D14F6197AFC7F1ADEAD3394E429E5334C36543C9417 7E8B5A221EB4079430ABB89CBE74D0BF1A4A6B32D3F5C1D838AE5D8F547E9073 1357DC58A029EC8AFD061415D2BA0D4EC6A15E6DF72E8722D6813609F6A30DDA 25BF2032F4BFD5D458AC127BEAF8384301AEACAA22BF778FDE6386FC8B2ADE36 F7FB50E0A606DCC612C82A3A30B75748A105BA3F85299CE8E28320A50A4DFDCF 60A28662CC860092A14DB5AECDCEBA38A8BEA34C615921852603471C41EDF14B 3A81EECFAC78417794EEBDFFDD9A4982843E5D868E56058F2CA1139BD9A0AE70 96485E616B0F30D1EAC2F108B2770589013F15C151B98D0DCCE3482B058EF2BF B7362B3284C996CC96CF93CA939424E70D53C293EBC0ED966960BF72FAE02EFE 5B178A7F1E9ABFFCC6D85E97FBFAAD092A8961CF3AC5AB139E94F7D1AA035D69 4007914E833B9CAD514B47AA6BABA259A7FD8C1026C30864DEC6BC20854DCD6C CF81AA18E1533BF77187952E9658E172DF282FF594CE4332002D768CBCD0F006 7D8FD11799FEAE82EFAEA935A366AE3CB8D3F4F7AE75264523084A8E559C3CD0 E4507E0EB7FE3FD956E6C02A7B16F12F5972FF1D27F21B1E33F7F0B0DF1DD366 27077043FAEAAF3A39BF4EA5F9DCD92B4B775CA402DD57E2A105417A1977575F 3FD4E352C13EDA3D8A66D2A5F8BB44C7C2FE0087AC6FC7F933A462F6868AC07F 5C8789D25EEC108C9E3CBCAFD8E2FE0DE88E723D3626330883C51B96D025C1FE C3740C48592EA321EF3671132B2D5A5D14FDE624EF9E5ABBCA58B8929A3EDBCF 4628C56A489BAADFEA453B065DC846C28BC3CF3C332A60EE95418B8E0F7A0748 28C35264D99ABB2EA57F1483B46196569A8DB9BDC13B55E4A0B3B16B720E3067 CB4DE2DFF63CC768FAAA40DA90E8B743D873FBD77BCD04D70AACC896AE24D623 0E1443F8CED32B4CA2D1858B20F63DADA2429B4EDF0DAC43D4F13490AA7153E5 780EA056F29F596DE8B42228FD6AC5BC6440B71C1740A1FB4EC205E6A7BA51F5 2BBC3835B91EBEDFCFDD34044AAF58F9F5BD2FABE58BA034A0AF91B05C281844 4BDA9797B90E5DC1BE57D1CECC32A4F10C3D4EBE478D152835E5A77475938B5D 868A5E7298BBFDBB7993C06FDE0E16ACE972B4948B3469F38003908A86FD994B DF4B9F42DAA020FB72F4DE672649CADEB899A45AF4A9ABD1F05C21DE82E0739C 606A1CF024E5646A9601F9DB14B84B6E4BAC93C92BF17E36AE9A1C432FE7E5FA 315BF6A56E794F53336C2A9932F2556254E0253A6AFB2263F675431F910A7E02 8F1388C4606673B61C0AE5C50EE671A0805230D06AE82BBF752D24E907F66424 E448363436C782634EA50A2D63026C535C5DD558B237E4834FAD1752CA85720C 989C261156F6A01A1E52A9EB15E1C39F4BAEC912A7A51BF80EF58A4A70D999A3 5D6B9DFBCFC062415DF6F68E5CF326E89253C278294E8C7EDB3C054169C42690 EFFE89808DFBA75F60F196987598564BA8D81969BB0FA8A04074232458963A98 7C86ABEC045F082B33742FBBFFD547C16A4BAF8769A5F1570513630E3395E8D8 E38692DA0F3EADB0277FC1C9468A02107ABC345A07642CB737CEC96147B79793 66B34E2FECA14BF857FD39E7B1C5C7D4338A2E0CAED4D10CB1A123EC43735BE1 5AF0AE449CBE93AAD67C269EA4D86B303ADFA57F8221D4057BD15252669F0CC5 60CAE16ADC25191E168203202DD21BDD1B6814CE53F082B16A4B3F5025075D3F F0DCA49325978A33AB20A223656E40D522384BB88EA04A19DB25429FA2581187 76A1838A4C2F87593C5643DBF058CEC30F8D77718FA258BF2FF73E41E964361F A2BB708A5BDC1C4702228D8A948B49EC008F038359403A7F7495E2043157F036 55B234627A79F138D7D536B471D68CDD60DE55EA3C3052981D75CF8BC061CB19 4529E25E66C68AE05A569F6E04AF1B385C193B9203D3DCFB0F4951B9010A05D5 5D3A36FFB45D847918D57E27252C87F4E4AA50F17637CA5A27DE99DA8D9EE3AE 377338315E30E10A51DE1BCFE91773E8CEE8179C7DFEAE0A9B95C611EAF236B0 0A4C6DE252E0EDA8A46A56DB47C078209C0FD75D3CBDE049BA10DF568CC076BA 0AD41C0BA1D7ADFEC3C669EB1546766AC32249CA18184099ACC30298D40ECBD5 132D73A08D69049578D7069F23EC54008CAC4114C02F12BF8C7C43618DACD610 50C95DBAD939F9BB2E5672B80BA3861033B30920755D98D465CA41ED08D039F1 541773D568AD1485FD0A573F62AEBCE2A7D700AB236D4BB6A85682D11D89E90A C0E1D226A0983A3C12A8B2AEF2745B9BE9B0C4ADECAC3E91D69B8B0A64084D28 8411F5E4A39018474191964E1A963FAC4BE2F5AAD53918A8C41B50E1AAD8D36B DB331EA7C595F6F0024A38EA9DDB087CD0DCD8A23E2CF4DCB447BBBFB14760B9 2312DFC35425DFBDFD375E6C93B9C5903E65656C91964568F571DCA3E72E4172 C44B2261CDB3FA9989E6081723057943A4BC09A5074679A2BA9EF0D0F3277D4F 4B7BFFBAD64AA241C99106B4B883A225B9A9558FE8EEE424C947120D7B3255B7 07ED1C0837E27987C295133999021A149D1C7E12AC1F4B09CA4D71A021778E3B 6971E07AEAB19DD6974229F13FA1CB8234407A11351208E9B70FC07BC750C745 12C6A68AE44B16E9B6A72F968745872B162852E2708D522615167F1472E53208 839715660D0CDFBD8A60E6E838EE90A4062FE7682696EE1C40844A6B0B50FFC4 0BCBE210CE3BDCAC6AFAEBE9493A5217D805BB8E1D12FAFAE2F68ADA221BD5FC F4704F2AF8BE0AA7995EF059DDBC855DA061D67E6EF037E231680312636839A7 59E22CC999C2044E556ECF13B1D7F574CABAEDF915645E721D35843BC23246B4 9CDEFC01C83E7107B29F1BF22B0BB7A66D038471CD3339785EA8869245468F97 33037366A32B7740AA89DEA0CE7AC55EF2089CEDDD9F3D4D920D29D8738142A3 9979547F269E9BD683E0037CAB64B7984446F31A571EE11F49B1A2AC024C74F6 E2FFF90370F1B36A3800991D43C98663F79B9315F7C4612AF01D7A3A6DE3166A 38ADB5577A4BB182380EA105942AAC9FBEEF3A451B1CAE73AB054AB55DDD2A77 274301A72449392D33BAE6DC67953F670BD4C3B0E2DDAE71F6056D53B3777883 4D2704836929551611DC2F1D00549883026C39897B3018B399E525EC0AA93383 3AF11F3ABE4F947A0AC2DE9F138C3AE2894E0A3F401649870DC6D54067A2E43D 08CAAD0BAC203136CD09DE262BF741869F59948F5C84B85B5F0ADB85044AE3CB 98A86FCF8560E7FE2DD9E1DFB0F1B33F6F31F30CBBF8D7ACF2405A286F42CCB4 80876F6C42A3012E4AF0FE15A13967D2A7986653620D6BA4BFCF2CF3FE3BA27C 24E97F0C77262E9C477AA8AA2A061F497ABAE446D4AF067D5341CD1B53D163A3 2DF5E29A30E92C9F3A84A19965B81E7D3AEE8F505FE6B21569A9990574BA324E 3E0F311B489EC45A2A1837530E21D8A8400F1941F81B9E8C8A4C0401873681D3 78219A2D0E7C87BDAD754BB616BAA48174979EEB85B9DCD818C90F1096200E21 8D0ACD402358029E35EA1733D94142FC0EE035C370B0562A4E26F5FF713D647C 87C44F794E61DA04FB2628290291E779FBBC796A242C8E10542A2169A6B54058 BAB1860E6FC371CB963FD2ACA7515C73B46F155EBEAFD6C4E1D5056425CA59E6 A377A998BE85544BB7FC4D002CA234B98E734E8662D5E6A9E33F2D851E058E8E DBFE4086CAD5C1CD5DD1D328BE41DA04EEAE5F822E049ED6C89EC19D42C898BA 18B84CB8FAF391C397B8E1F3A495B8E4AA352677064DA300F93A010B9A14197B 72508AB1CF9D37916BFA5C94CABA7AB9F7391F42D10E01F821561FAA3499A5E1 1E7C2CAD815B82AA1A59E24B7ADD2868613138A1CAFAE3E1790A0AC044EE8E0F 8C9AC81C53A011796799247508323D76A19621907E172490E0B9932EA4B067F6 6A900A77DE78A7CAE80773260308C8DA4480894ECC5D737D664FDD47907F471A 0D5E0F4841E87D9F74BFCA1B6EB05E4B50A678D492E3FE594D7E29E8FD37CE78 0267E5B8453959DE5BF2C27FE7DBF8C3B47B9BEE8CB58B108A056202A7BBD35D 0BA1553B8CBA540E412E3CE459EC966F909706DFED384DD07D852CFA46DC5BF5 0FF27773349FE4B22C174337FA11176F4CD1E0FAC26C94A4EE7F0C12DB9B06F4 9E414C40345CFBCE2E509CE24E61F3251697D81D95F0D0C9DCA9738629A8F34F B501BE46484457F7903A686F439076BF169582267923A0561706FABA6857192D CA7BB8942C5EE1930EA36618DC9979B4F006F764B3EAF9C1B6661A411D225600 30AF8B12359D45DB23F4E822EE9137CBE96059B0E9FE3C6AF24EB50283B5EF77 8CA1021874EA9CA9752045589E7A579535B11A81DD42B20CA535905916D38135 AAA3017B30567D9B9836BF5E0CC310EDE00135E28530C2F9E5570857D3ACA4DE E50F5B93716EF2EC0DC160443415A9F48EC339E8C54A82CAB30F872F30F3D7A9 8438F4C2096B2160CD6B360A64BDE66EB07C9B7BA4B51830F7091CB7E1A61E57 32170FD02E57CB29C958A542F4E6B9552CD9E00824B34CA4D19B97A4A2E4BD7C 44C37AF1420A1590732513BF3B4E72F085EAE838C76D852C417DB8BB8BDA6E95 786FD03C9B93CE553A2724B558FB194EF39473F113F183DAC5577E7AECC862D6 4E428AAEE424F325729B94C219767A49EFAAC2747F8A31E3F34CC0647F0CC353 E2C9A38634F60428DCBB54998F72C0ACF5574D1AB6D2F8CD5D3AFE433424A7FE 348B568F00C6FB12C0E7BAFAEAF1FC2C274B6BA01FE4EAB24F4F74B19F023E5C EBED5DDD0774F80EE975BE1A57B9C4B1617187C5692D63AEE9E0F0B74065440A 2A3A9C9B8846378651BA78D4B338A034FFE70CC9C2E11F3E92B37CD83ACF0D21 6B9C3AF73A3691C9A51D629A2870D216B0F26AA77965C87ABC0990AC281C1114 99A91E5712460620939149B0085A10DEC476F381230AE5E3E59FA7F41B1E9A77 89AC5C65AF4EE16FDDB610963FFE50B7B9CF6964799AD9D01E3DFD102A8823F8 9085B4891F6730079C74E6FFA58C45C4DD02E7A55FCC87CACCCC401AD7124252 0E94360F2A5A87A0BCDDED0F555B1FABFB4D2119C25E380690B1D98CFF6FAB50 E56B6E64904ECB607D8F1AE641EBA26E28D53BDA6A60B2F23E81D65CBA3A9FCB B55EB1670E1688A267A250753FD6F19005E065EFA571C85859235CB59CE27116 81EBF484A023A8D558C5ED95848618AB470C5A849A045CC252173FB7EB985687 50DC630E1E2104F2500C810BBF4D7026BB06DD4032C5EA715B9EDF28092294CD F3708E95242C3A4F179F8645ECB602173F75B2A6775C9DB58EC3BC286E9CFEA0 EE4D3ED3BF3E4AB621FC74B549400055C7E615739458286B361C8F9B3764DB3F EEE6D5A8A95EFC9D6CC482BA9D92D0A532154F0B06AC783B59D7644F17CEAB58 23F1987D874FE9B3CB4CE912149F3D05F28FF9E5A347303E6CE28AAFDB772D26 362F2C4ECFC54B4AD6BDAE4BB89FDDA2B5F19162A3F29F0AE20D514BFA6BF015 2A1F3384A614DE26664506C2C2ABB1B18C9C34703FAB6F475FD06C2EDD7E2070 38C6315CDA496CA80A42347D0CE4735BFAD59A71178527D721C12346C3AC130A 777530B2525F2100F5B45095307C236BC3611197C8A0CBBF0BDFFA798400BFCC 6DF5F358113D25CF68FABE32CBC561472111B3501D6D501C3577BF7F6FB1CDEF 4A36403A58D87967F8BBD0560020074A0314205A7F9028F420DA65C025295F53 633624FAF6531E5D84248805EBD9951D8F9EB718F8EDA2723EEFA57A015DF30A 54522CEADBCC6CD35E17052C71257B8BDDEDDE2488490E3F2685CD30C3EAA844 EFD8536083713FB4A00461A9A95226538DC584180369D8DD77D13212B6C9E883 03883E37D4BFE7F2610EAFAD791B6569A5E93848AE1E7FAD76917E5EBE291A0D 19D40346BF3FF1048AD0DE171186B9A532A160F5E8963944201783AC7E92E0F0 2FC0DA5D7218A7EF6EB9F6B600B8C81852F35776B28AF0E900EC9E98FE978A0B 138C149A68B064330C03E17F41F53413226DD3E61B5B11A75D32BF2D03AF4467 1B9AE56019C28A9475260601A6DB4ECE3FCEF51382E7AEF2EF8B6BF7CC7BB0F7 DF0176498AB82A848DD911A8F17AE472C4C9EDB6FD962ED869BCFAD0592026B0 86A4D5DF3719C53DBE6C457681B6BCB5CC4DF2EC43D12E8CBBC43CF3731EA1F4 D8E199F84B85B532AAD56AF67F63B5BC5F4506021130B5539A3AF1F77D6A2E4C 6972AEA15F19D646FF290EE1B3615BF45E483E7611061E01258F419877CAB667 848B6A67D26AB1C274FBE411154AF07CE4A8E43EF9D09A9CF73B09A5461B5CDD 2BE20EDFD2F4AC4AD305DA202AB5914E562B264C151C1EBCAFA37EAC1308273D 81AB1D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX10 %!PS-AdobeFont-1.1: CMBX10 1.00B %%CreationDate: 1992 Feb 19 19:54:06 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 34 /quotedblright put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 92 /quotedblleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put readonly def /FontBBox{-301 -250 1164 946}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D 6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E 8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E 3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF 1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E 0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B 61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F 43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733 4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA 55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822 C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741 5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1 08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C 318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A 173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260 5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870 CA80E6632872F721BBCC622EE4214BF723551C846765495FA9921E11FE1A950A 53150C3F5D8595958A47E0B16064CC3AFD65DA294FFD111153F4F233BC5468AE 69585C16CFBFCA32C4B96C161F47B56661DF84FCD8ADD3EC086CFB6BB5179BC3 A5469A1CFBC8620BC711F42D0D3139BCE4E38698D9C574450DB43B5A19FA6D54 0368BA9F7A8DBF96DCD0B8968CD194264E6DD10A958846C278B8C2BAFE7AAF8B 44C84C955F1A89A13E62A054BC76CABBBF6296DE00A79CD7C8C61C70F127618E 9975B59A880685E126F57AD80F8F4D376E1B476BDFDAC868FB6AFAD9D694B561 001623C4D9F55366D053B52F2B09EC08B81901AE0986C5350312E626006038AD AC15FE313FCEE1A2E61F8992AC00CA7BB7F997707EA377D37EA6FF35BFBC2866 A572B31491F9B80445685DBA5E62F166E80589F768FC95BBC79158C23B2F1BD1 25816F1486A64F76D99A638AC0DC101FDF390811B3C118C2D972B2E7587F6F24 7F1DB2DD922D237A7D18FF08FD665355CFBBEE799D3BFF11CD94CFFDBA3E725E DCF4CDE4307E3B199D91893A365D04F43A5305BDD2538E28A0788E061F3A621A B4A04E5063B47F0109C1693A284FA43E8F1EA9B68145FF51C005D3FA40713BA8 1879BFC3CAA881B9D885A0C1AA8BBEA7EF469AEFA06ECD3C26AABD535E9FBDC5 CF858BFCD827A42CC5CCC4F1353A38204E89F80CAB3A5536F848EDDE1590A2A0 EA53A5B5EE4BA2E44C0C4D37FF0C41E493FEDA6F034B72EE3B707AFEB7C95948 628FF2D0AB46CE262FD48BE38A9EE135DD3B964F2AF6FFF727171FB2CFE03BD8 F283FB6832C3E3F7CBB8BCAB0832CF2A8E614BBB3247CBFF413C62B66BA53CF6 7389EECA675BFB2D7009025507988F15A89EA5E8FF18D4EFF6B7F9ED4839B6A4 4DB456F527A910A57679CAFB925C92C2FD4006211445542DB24AF25F0A8294A0 F1BA550A79E1DF637DA2BE0CBF54E3BC900DE2705FA5D39117C6D60A211DA570 1767730698E8B894239BD9C1479A7699323FF448A4F09CBCD2043D643F79E5E2 CE906E4CB48B87061E31ADC961CA1572AC8421BF39F7B411A9BC24ED53983C6F 280083C9FDB651061980B7EE9E0BE46BAC8438B7132A178EF85333C42EC96662 9492603E81D660C04F6E987221B84C126C873E07F3B98AE2A812AC2568AA2E8A 72C259E9908D15619990F4008DB2C2A982CBE224FB2BA057B6DF64CA6FE435A2 DEABC23432FD3ACCDBC66A3153234299A70A313C63802829AEC18AB0B21D9FE3 F5D051C1E870E3FFC282D78E03E333B9484512E2202EC3F29AF4C86566D2F9C8 F91542B77B8705E79C7AC11ECDBEA53F9BF01999414B0B8127F25FB7CCCB596E 7EB5C7D1482D7CD9264DB5D333556BC4827C9401091CA93B0ADF2873BA424EC1 EB76A7F682181C3E315F943C333035E8256BC195E16FA371EBF7FF5BE5AF5BE5 75748A7812CABBEE1D21DB0592F0F3E44A20DD1BD30DF07BDF543D12D594C74B 36812A96C3CCD931494F6553BB28C0E6E93D49D2FACA3425AB4153D398D30F9C B183F368FEEC10F6568748790073B7573C896119155A7E395C2CF4F8B6A873A3 4060FFFF3751095F4B5CF0DE227A039EF0AB7FFCF24B7977563C6FD98326B275 EBA13717AE0F09629858519B776BE804A643EF5F784F07E3FE28AA6CAFDC2E09 3BF57FBFD504E5C76E09081CB7CFF4C18E470B9A4E6041D849DE7897731C00B7 21F44FBB5CF87D4258FD34BD1450D40F7730E74DE9870382EA811EAF530D8BF3 DABF616603DB031A316CD004D3453472078AC25B078271E4A9988D692D038AAF 37C8419B7F390ACCC3B02808E369583B64FA552054E7FA8026792BE6461F678A 81F39DDEE8D69FBE72BDDFBED3A8BC8AA05C91629ACA686B57F60BBC1EAD0957 9730861051BF90A9889A39B8151211234D92C793753714CA50BD85E96EABEF29 EEB5BE1DAA195D5F5BBC9C150A17A807D82010E9286441177DCE4CB593D593FC 2CBDDE34AB90D730FBA8066C33BB08564BECBC86FDC74B14D8306E69EB525839 6EA492541E33E1A3BA2DC086F1A749749F0A961CFD8A00CF31048E66910BE8B4 74210A0C96906CEF1C54D726B59B829BEDDA14B58E1B7CD644A335013CB1A5D3 C1B941B852E52D460E8991BCAB99A3B0A11D1C6C30F04C83C9B87A6C771A656E 857221EC27A8AFCC4906F436E7470A7F1147706B3C2867C4D28749119B506744 DDF4AAB4914E5E662B4B92D07E631A3F3DD50B9B698F7EBDF42AFEA56E13ED19 1BB79CF5EC77BFA9B09839271C77A1792AA143CFCAEF0B7ABCCBBDCC757D8FBE BEC856A225F58C53CA56B4CBD67C996E36C04E782A9BDF274A8A0D5B5DD2409B FE4B9249E9013BF7970206C731BBFE74E8185B99785B1FAB00B22A56A3E67447 35414C020F78A0A03C44BFC9F22B1674CDA04B5F8B391C7C0022E2C90D654A79 52F0D7E5FC71F6CFFF78D356D0BBD7FC906E8375D5B2F97DE3BE738954C4B5F9 74C85EF6AA40DB72303950BE341848F1B00174457A371AB757608F43D323C4E3 73279AF2188BBC437C1BAE0BCBFF06A3DFFBFAD32E3AC625BBA9958200EA6092 B998E011F9AA212D6371FA5D49E6F355B9A96C1F5A369C9B49D45FD230F71949 3512B1E18C67F0270C1A8D6E13F979C29A054866E589508793C574D312C39F06 91CB84FD09559E9DDFAB79184E98D0A753D6FC97EA9936D0F013C16BF88624FB DA99174AEE2B9B954B2F46F9EB862AC136BCE2BDD96F9E3C5B91BD40E4C62B4F 31207B74ADF88DA1D8DA231CD9626DC77763D6993FAB4984DAAC95670AD02A50 5504CF3B0C3A7B2487947F78129FFBC43E9E6D16B5B035911CDE7C0FCB17B9B7 144C2CF12EAA674A08392B00F29FCFEBDDA734185C68805F663E457DE36FA1A1 979CD1DED81DE0F08C94105897F35B667F6989216ED51B920AFB8B770DBB4BFB 4BC8F28E07F4703EE6CD90581BB328CED4A41E3CFF4CEE5D897FFF3B19D1FBA0 E12C36E0A1CC9F32884B4D20909F5D4F536894729BBE4AEC9943A9C204679FE4 6A2B3E8E5FBBF1657C3DE440E706ADA5B45E6EC221C1A52D6439144C0F52ABB8 789A80C480A923A172465A98E12567C78936DA467137FB1F9B96DDFAC2D5AC74 5B4443B68C79064AF1A51A956B22326F4F2C08919D93A9EF32C2CBB74275B4D5 A6DF15CE2A17411CC425215FF359F1DB8358EDEDA01341AEDA6FA596983B2E2C 0273245C367A91E35D8BBAF91CC4581DB9667A9F445D119A33BCD59976866FEA 5D9855F9C834D5B5472BB756C03DC35C912745F64D8B8C8B2007C80019DD1722 5142C067079C1B8584AD1C288B4487186361D1281EEA27328443F2011B37DEC6 EF04DB599A425F440B1CB3720A1D98A39D3B14A856D1579B85ACBE1F1C3F1187 33D8AAF8FE1A1A71F4B8D4B2EBC7D6ADEC41E7BCD1214754CDF947ED2684719F 3E09ECE27869136300E8A98D8D4847D39CCD9FD7F006A596169D85C28FDC2DF9 75B5DB0EBA22BEAFCBAA8439A21DD6683E5447E70094B7C19B2A63185FCE0E9C FE4C04505EFE3A7B6BD4949ED45C31AE96748D8259B9905680F655CB175DA750 6163C609A974AD64F39EB2CA95977AE3884870B4F2180D8145EEEC5A046647E7 A44BB0708FE893993B0121446DA3823258D083EC7DAD3E27A04D9B5AD6C78F01 00D71E0BB066BE552813489A272BECC061CFB7EEF893AB199932B465D05B9D49 E6D6051E633E5366D654F890BB3D2DC62F7082BD7C99A18DD3C46B7DC33A01D1 282670DAC661B1B2F04EE5863C9CD49E410CDA79C9539053AE4EB3435A85DB31 B70F3442DE41A119D4AE10CF6F29E01F87410CCB4DF3DCFC85CE55F61154F782 3B81A3F277BF09E6FC3586CB261033E4F074B709DC6710B4276785EBB9C08AAD F9A62CA6A3A1EA3DE14117BF00FE2BB122D794994B8D6769E57A042DD5C8C69F DF13F0AD852F1DCE0F637F688FDDAA605E9A5CCC5E5752B32A5C981470BCF1E1 C23CBCE649B0491DC399D814744525BBAE3C6EEB2EBDD1A204BF7CD99BB5F18F 666A4DDF4EB43704F5CB702AD74E1F1EA5A055EEAD5F64B061BE33ECF796EA44 8E97F6F25214A7ED8F3E609ADC99EF605488B46B8B8B89538B5826C012CF9719 68F9E45B03117FEC1A6EE29328091AEAA1D608CD039D8C4CFC72D752468EEF0B 1864FD8FCFD1902599E1F7D266E20211C99B91307DC7F7870FCAA2F2CE953CE3 FF95DC284D37B5FFF7E765211DD690B85E060CF581865B568CCD8E4AF6E2973A B3D43FE0979909F79ADD6069DD49F0BCBE5C12819D5A4D8EA433C7FFC9D0CD89 5802CBDAEF4C8AEC18D6353C46634D2516ADB0D11BCA7DAE9D41AC598C405763 CB0FA664BCCF64633604F99B556918048A83D224301FB3E0EC1C6DC2F14A41BF B437DD22CF4E6074F42074F02158505771FE51A8444AB26EA00BB319FC6E3C6B 7EDE4F9BC02BD84D705A66B448B010BA4A080D9068FC71339888D3E2CBC1A1B5 C7388EE36FD0E65411F110BE58BBC6DACFDB5D42BB9D5AEB3F39AA6EDE995401 F3BD5CB434F6831F0B57925E958D885BA14EF9CF4DEA659C2465DFFD9DBC8170 E49C742D6E61B1271B0C4E14AF652EEAE1D136AD1C8D13CA86A2DFE639383A1B 9E2DEBE66EB289D19BD036B2805D1CF9DBE55510FDD4C05E06AAD2ED88FCE694 6C661F686861214C7A2BB969856A133E77A5C347BC0C7354650CD78447D5AB84 4C256B22BAD5EB51264B8215FDBFAABA4F6C302D3D22F4E30315EDBCA019D255 F38495C826D35D9D55A862D105B7FC2FD0397B65B006AC37CEFE4927F2DBA4D5 3E8BE7C8302E22F1BD467357D7769EAF7D84A95204001E9E8D2F63AD0E4A7F4B 591D4488C9237735D2B90AE4514CDF5D215166EDA6AE33B0695CD1DF87509D83 93DC9CA785A9316F302046C18713B5C54E72578D61A64B97ADB53963A7651E97 83FACDF0A2BFBB13356F63932A6BEE4A5C960D5D8CB58DE68B4BF2E201E04284 BEE78A4141AF4C5735541F823F47CD3816686C97BBE1C22156B40C589B28CB78 D7A9C49EA330AB96E1CCA8F3D6DC5DA57F1FC8513E414F34B17515B761F9CE4B ECF59C23ECA3829D2F18A110EDDA31A19E12F08951E5EA3C4ABB72C1DA1000E2 773ED3383197D2BA6C0932307AD7D15A6A6B086288D5ABF585C7D11C9CBB5F53 1F3B200707CE111D30C5442C4C29999DACFD1FFA82A35AA47AEED57154EB0C74 0CF43582542EAD7C0E07675440F9F874B4E098C7ECF5642BC8A8CA6453E7C304 264A5F5D8FB50AB0F1B59CA3A8E06602F51B05094DAFAF86D9A3AC5E074D2558 DCC6D95C8209FE3FE70BB049C0E07B1197F52CF54C3FD49BBDAB30F58D7AF51E 4C62A53B6DD3DD045557EEF64C413E7D332129C59EF4A00544BD6190D84628EB F7AE0E5AB48A59C40BACF8DB4383722C54C843ADF977C5CC2D9ED532317D0472 E4EFE2AFC47AC5E222E2F15203B812C124A91CA74B35F930691DB1509FB42068 75D1BF0DA4CE68E687D98BAC3EE3A383ACD2107FDD8137F634D42C2643FEC054 0E2F7F5B377E028668506AF3FB8724FEFBAE9C4A5ED1BD5F23045E09A4360245 5E23A3A3CECD56AB4454B02F75C35B9B0DF1A518D4E6F77C4605960E40513403 A7AB547951EB0B98F77DF9FABDB2518E1FD6B857C87E5D4FC44CB3697AE56A84 65A18485E9BF8BBD1576AFFF5C2F0E8E0CF342644478BF0086C5C6C6404DED5D 9AA5D2E5546B0A486CED469C1FF3A088C19812E8D9A5995C90BB08911C34DB59 F04A71813BF62E4F1B125722FEC8E812373C660B28FC565D93641826299648D0 24EDD19BA672F58FC70CE62116E96DF3B21BF9AB8EA0EFEA314F174050C768F9 E4AA302D9D3428F55A52DFDFFAC90DCD1EFE1E5ADB526CC4E8342189CC599FED E9122BFD28BD1B1797DE624394F8F55A8AF699E97560F2BE4BA128C956C9ECA2 12124645B177BFFBB17E1887879D44CA2E36CC141E23D8B5725F27171A129645 69BB9E49A0379C1ECE840760741157FA8E842E61D033A10AF7C428A985B15E58 A6146B557A6298863793D3F98A6018A7A0EA540B457560AE11745F929E27AF34 162B4FC9FB5206E0AAF97352292C327C253D30944576E8DAC91335151548E68A 3CA77DB5B186E788DC0852C827F2611501A80ADD4DF22DBF738A12DDC88046C1 E793FE1999C7307F5AB523B4EACDC427CBE3497CC03DDC7D633D9D582D0C2AD0 50566979610F64EAAB980F2892D77F4B6446CB47D154D651886EA7DE1F48E154 B56A69ECC26BFBD79FCAE31A9DC3A2D33D30F3E595566E149C3E9789472D9727 5180EECE2000D7884DB0695CB23AF7A42799D3611ECA7FFB5E9A1116FDB49D1F B906F6CF290DCDE3C5BE6C39171D3F37B323D3B694F187197C2E27D26CE06E45 E8248E225570BB42277DFFB72289872670FEFED7E7B273015722FD7EBCAD8672 B7F9DE59F608B619D06681F0C56B7D2C2364601EBA6049A3B391D7071E721B99 4404075638BF9D80A4244BDFC068094E3FCCCD6AC3118BDA3359E70B3F61EEE8 424822513DD5230DBEFBF6F50C153334F7ECE4BB8E66ADDEF12F0E116A41A909 8A953CFF83BD1E24EE81148C22CEEC76F8D372526C22D690BE4FD7CCA09E6A3B C37E2AB07E00579F39259CBF2763FD23AC637A36BBA63ACE69BAF14D2F9C1A5A FB00F16B5DA6263EFCBFECAB38889A26E741E9BF9B7AEB79E6217DCB856474BC 8C70AAAFC474ACADB0EF847F78C3D83B340D31CC993649AAA42508D4F98EB189 5CC09D27749EE6E2D0D36B8F749BFD5CD068E8DDE7B227A71B84063B9A947113 86712F93E0A7ADD3553BBC979EAA60C4CEC8CAB306893D6A3AAE4A945BF6B6B0 F275CF6E7AE69EA4C90B913B00580FBCF737B518828126B179DC9E8E79A3F2BE 2CD39EBD8B896B7ACEC9E7383CC349E7E83A45D6F42A3AAD35C7194326A91A7C 79D5522AE273E542E32E3AC1B6BF4D9C0961647960924FD137602B75A7B7224D 6D170A9BCC06A7F962522E6152978814057ADC3C2DA8EC80D2570FDC51175E37 859B2FF93510A3B297B47DA676C8397AA2B1F6E475DA81648C8E6D7527DDF173 62F9E750C71F8ED5E27394D215409355200E2AFD5AF3E3236ADC8AFC0707E0AD 3AAF5EC610ACAB68FA259809A768ACACFC48093A998A8F06B4119750D054080F 294ABAAA2E5B68F9A2D6F428EDBBB70377DC3227A08F63D613147481B0F0907E D4AC835C9301FB2F560FAC2BEE6141D275438F1FC3AFAC65D85B4778AA468CCF 838F856A8A083B8976F114BBF18831B0683F6E7FC17797E20411F164FBED4261 8C7D8266EA11AB892603D02EC10C9BE70536166834E77609C02D9B5B76B9E325 9A0ABFF1CA98DED66AAC5718A2258F053AA07D21F3A418ACABDC96ADAD95275D 03C9F48857D24DC82D5EA9D1024106C58CCB404810C3B2B9D4FA9305143B1438 C27939DB49C13DED42BBF9382BA70BEF3ACF45DAB55FBE90BCDF0CE7DD4CFE4F 1CCB3A733F5EB2CF403D797331B9EF8CC80DEB9A143899F09D1554630E72ADFE 47D1CFE583DF484DB3BE4DE5BDC47FD9D914B847F5A2BB0FE2C2169D41668115 9FB989665DE868545FFCCB21AAC00848495667B07DFC0FD0E4931484D8A0BDFD F2FDDEECFB56E427B77A069EDC5AD6CE7612DF16C738532BB6C6FE4E0057CA79 55D90EF9648528774C43CDECA75241F4AC87C128A14D590E7082FB9AF62E46F2 C171C2467661A76C980B83355C4A37EB0C1788D644F40B441E8D72593592AD22 9C074D5ED15E2E514C6CB52939188C0119A90C06A1A49B422081E6E84DBA1A7E F252CE70E890EE902CE1A6C1B3D5164D0A3556ABF4F0C51AB6B3293FDB63ABF8 AFCA89E40E452C954A74DA45350593173D0D3059AB36644A9C240B9D6CF682EB 9E15B8795332431EF7E34BFD722D6D807F07EAE100FFA141129EE3E3D506351F 28E5E2F969EB47C9E3FE8FEBD2B90E05BD74533A3080F9E5A72A750AED278362 8B90450506272CC7ACAC224A439968F0A08430437DD1ECA23F7D1A8729775C56 D013B1E04896D92F7023277C48BD53A08C84F77D9AADBA0DF39E519AB50D977F 7B1199EE430C4BDA8D02CEC757A1F11AB6EA52BC44349ADE409F01F60C5E3BBD 433B7541BD1C267E4FC43F265DFE3BAF3E844682528328C51C0C580100EBF8D5 AA3BE18FD89374230646D8202B61927CB84481209D27C690D026B0975D15B140 6881A22E88C513B6A37CED3CF2CB4ED8A9C5D228360CB37499640191FBDA95F3 46D87B3F9A649FF67444AA96ECB238D8816B77EE49477923319827F5CDB6DDE1 65E2489E2C904F64CCBFB3A9A3EB0C80EB69D7DDFE18E09259C7F5553191352F B74B094A4E7DBA702F8351E3F1E3254B3B05E2BD7FBFB00E6D92F098367E71A9 3872AF3BB2908802399B4D9D994E9C0D858CB7BBB49706016EF3E4B772CB1163 8848455DD70F504B1D9BAFC2E28FB26A4CC2B1AA77E8DFA099208A377672336C C0AE22FB5069B141286F4785598955DFD48FA35AF6DFDDDB90F301CE174AB9B2 70A9CFA2EC6084B4D66610B6AB1B9551694C096FE2BB683ACB02B8A0144C7720 C29BC177BD9DBF1CF0C1DDB445583EDAAB3C0D49168BA71AE45CCE50DC7C5D9F B71B1A681BE1B3169A6E0E264525D560A8F211BDB2C803CB983812EDE78B2311 384BC0C0246A1EAF7A3D3EBC10DE9D820985F7F7AEDA402156D8425D9ADBECB5 150673F94E5E6DB36ECDCB8D78859E9EB09DEF878CAFACB70F9D28D922C09008 19E20F5572864EEA4C44D05A8C993A9B8497748066A944CDB58C92E211449A3B AAEDBC31546B30F53FCD23D37B843696330E16988878833829504FB11DF3D87E AC4D66A5F52EC0851428383E0E333DA38F7B42EA3377E4AD9A07D0FFF581B238 24E32D83E2343E2E0955A3D0E9411BD380DECA0D79DDD433219AA5D41A4BD450 38059CF0149BDE24D4749FC67040AC3CFF5320B80AACE010A1F33B4795765FAC 41BB501D576385AB6071F211D05B85D58272D22D733BE78EE61EFC19D85A13FB 7ED8784708AF6D025FFBDB04E02BA4DB928CF881407D373CC1585AB8F827CC0D BCDEE43657438DDA831D0D60AD90F30FEA434691316E455E970D5A74E2BC58C8 03F1E4780A38C29524904CA58F9038CCCDC2BCAAD14286BF3B504076ACF3EEF9 68F0FF4BC9852C083C08BA0FB9385B6D3AED35EB4C6048B803A3FB68E1C1436E 3CD958CC344E38800DE3AD643AD00C4800F4F52DA4F46B268401A8C717DB5D90 7DE5C18C85C86B275EB43CF4DAADA70A37165BC720B2BE05958621F88D3C7BC1 D982D5932418CE6B1506FA7A5469E780F819B059EF9A8611986A67C95AFCF6F1 2C5C59CB201DC3DBCD2AA67CFA9BA5DCE27B07339FA1ED727052E58A2F5FB4C4 5C46CABF2854A15734B1FF9CF5B2EE455E7D05B5D756D346B9A032757CD9D532 8B6FD328B587C78997E665800273B5A5210B1F2074B6351C6A4F0B252E2A57FE 9FBC4B86F854747C63D3EDC3D4E1A126FC3511AB47F664712AE912FBEEC6F71E B7329B9A38E0ECB75A17DA5824BC363AD5F32C0B865AC212505BF7740071258B E2122E3A3156C36F97F2BDE6B51DF845EE278C2E4BD7BD0965BE5D7A5F5923BC 2C0FDA2D86A77B47AA3B7C776E2DCAF8FE39CA37483450B187A3464546845E2B F2DD7B16262518D2810EC3F225B38CBEF804039167630C4BF5FE3C2A7B9384F8 06B63619FD243F7FEB0AC1DCBEBDA6B8CF7D385E6FA9FF918993EE8B0BB7A511 793BD1C79193610F75FCE0ACE2A0828AB0D9C71AE76477552F5548ED50A51FEA 99D6EC5C01C11A9FC02C9AA4827CC401F8AE850A356C481D613C14CC7B18A540 99E9F0A0D47341DEF7D161B16A40B43B44EB8C3E79BF9E1C9DF9D0E83DEB3C50 63472647FE0CD54E6DB94FC35A7148D290A3BA76BAE422543042411D1B530538 27A95906045FB55497467D32B59A19C1F894A6E05DE8F7EE3896C6B0978FA635 0778BF5B34CC58F844A031DDA171D67519AF06744BAE44F1170C0F454CC65366 80F7A96C9031FA995EDE0E6DC7FDC90DAB16037464A5C13B95F9991EF9398954 B5F379B30A272C6DE3E4D83CDB74558942FC789E85EE01949B2491951E2B8E4B 1DE201C3E8BFA2CB2DF7343BAA138CFE78F46837192968EE8A5D4A09B2D47557 A5C24170461207405B5B98D4D486803EB613BFDD12EA447167DF5834EF3CD68F 79C4AA69FC1007B2B47DDD89A459332A4702554A2FC6B25ED23B5B37BE19F144 DC87C5B234E4B3A896B91D3553D5C726E6C988F7C977949230A6D8547DFEC449 A7D40F55E187E3829DC856DFE2AE16E2F689663BCC66AFAFD5F9B1DD58E8EB3C 09BC9D7C9C908508EA9984294DA3B4C3972AB4D51A36738C6FD8F0B0BA5BAD4A 15FE1B66AE7483AC270A332CDF5B112939690F8ADE4AE12CCDD9B5E5DA7965D9 9F8403B81066548ADC86CFE95F1FB131825E770099FA171D6F45C634AB100339 860250AEACD2CE6B3D844295693B39D4782D66A195EAB225758DACC4920F8906 25A4B9FC27699B4F32AC0581AF990FE35F4CA3E2E5708871F45603CEEFC15D5D 1E5E6F2C189155357F0D28903EE4C77CD07B0AEDFA274DEDA0BA1DEBB0E315EC E9A315C91157CDFDBA442813DA01A77D98CCEF6424B7E3A1B4E5B3B94379A39E 6CA1DA9C17EFB120C18F2F7F26A2E5584F5F4DF8E66601A16BEEB617FC0300CB 2B6D270B4FE5CCA1B56C1479FDD6323EA4615C6238CF515954BDB22F86EA59F8 91F076A7D3AC139BE66300A00922DFFBB2AA77C39DF2319A60E233EBD0FE94EE AC91B3663AFD4491489F5C9281B8EC6F1ED15366975C8EB3D4B61504C8416DBB D630E969253D03791BE246B5C4C8BFDAE056E708D91463130857CB1D5A4A6E47 F1F096E023A3ADFF2FF2952AED35C7B2B5AE39C89FEB38697BF46DFD8BECB234 0F88318CE5934DE6C567FE1AF2615855E9EAD01DAC071CCB70A39F5B153E3F01 320B8549E4C6058CF90C35E684DF245317A234A701E3FF0923190F8886E53871 3D5FA67C582DB98BF9BC71FBB98DC584EB730A3125DC146B4BAEB7FA82D9CED2 16098BAFEEFAA354989C28E34EFDFCE04FEE56A2BA83CDDD2C9DCA4FFA331F53 3DDCFBFD32B061654E2ACECD6310AEB2745DA75020B96087E6EF841A5333CC57 8B833AC04D77B5A957847C701E56B37DB55FF98E8C0B610A2A1E3986C690F835 06F95249A881E09F64EFD0D46E3F547CDB936D67568770BE724BEF3CE8D29CAC 9C0662335A49DBCC1D08B6A54B82626AA8E972D999E91F4EAC092CF84929C0E2 FDCB1FA24E3712A2D5B170042614332A4C17BB2A638B56AA69EC378BC0B46B23 32C932C75E5F5C130764D10B2AB40619E5A20004B36F3B4C1EAEB460756BC296 FAC1414BB9A225910E5C2DF0D19FB726D0FAEBA0FF40D0C0015162AB62758FF9 ED0C0F6CA5125E153FDCD079DB486059C49F3BD1C769D76B002A74CFFC0D803A 357DC102A18E1FFFDB628C4EAE0CDAD7E627D388054DDD43E3929EA7CC7EACDA D3B446DF89B1A548AB093D14DFAB0E66AD73C73CB8BAEC4E20AD8AA3EA130AA3 7AA1AE805C9D0EB181655BFF9284956E5182051604C7BAC793196C7645630EBE A67EF0667728E0A751A38FDF02707C88058CE62D22D7979335067B52AA1CC6FB EDA29CC61E6B364524C8ECF6F21939765A8857FABBD8C1F030B0E9CF4868C64C 2A32E3B0AE84845829505B34C4308C3350F1C500971ED7E6F33E171924878313 C7AAF65651930D130896835364EBF8267119A46781B752038CCF251156805046 1204B093372E78994A873F45DB567DF1B3280938CC0E2752B9A8B6D6D39496D2 57AEEA0DEC127AAE3F38493DA353C83CC7CCB259A264F6AEC960EE7E34D308CC 4A17649D35687A5CB99F2661E7F1D52F0DFB635E3C9B06DDF799BC47BCC04918 EBEDBE35D4FC256C78D316AFC1924C06884BD987D392905F85A1EAD9A0B639AF 5EAC3D4345C3F7EB033D1978FA15CE3CD1062094357C592AB723A5FFE1F5A52E D8E6962526984186F29EB427B734159F6D011809CFADE91E58FC85EB73B7A7BB 6C9D4F816BB295C4D235C5F519D91C27CE5FE06810FE51FFD27B264F69C8481B 2861E4A3DF664485B4C38E8C8B5C18279F4C396315C33EDE42AD4BD58F1F05F9 D6C7BD9987C1A7D3F31E6270B3BBE5A7553540863FCCEBF80488EB099D5A78CC FB3CB2F97EAF0FA352722785A772EF421FC983EB8561597CEC9C5B761B3EFCF8 B920EEE7DEEACAA5082CDDE935FA99B96B17BEE89207E544952D717210043417 16BC8713818F0EE68BE9314D1386EAB83D7B18E78E6DB7B5CE9E83A897E72C11 2C5C014FEBC5653AA18C25C8D476BE826E9A67E7637E1230AEF4FBD62589BADE E8539C4B20227058A8111BACEC88C66D19E103B960F0F15E868812635CD62FE0 829CE40BAF7769B63D85601EF4F3B375B3ABFB21CC2C247A07351210D41D3A9D 3B3A4EFE162C3B04CF593A7121C587CD84A7322B151C8B0A42C87E3D11FA065F EE6CDDA7B1053176F2C79833FDB62FEC79912575705E9D624A75358487387A87 249CD1764FF0C1AFB322301AFB67A514E2C2C569897AB6FA7AE8B87C7A2F6CA9 3E471A6763AD044A23FD0B1A22B4704449AFF142F210DABBABF4D98CCECC0F67 A82EB13A7664A3D00AEB5857A60469060061F5AD838126C66CC19D6DB6F89D61 883EE170E55B0B6EC3726974849CBD885965275DE9A1726B0A845FD2BAF88ABB CA35AF98E5ADE22C8E044FE588E0053B6C074E639765B865ECB1E3E0FC96802F FA85AC2FBDDF0D53D3C0A623A640E4EFA2EA64D77519E1A9EAAE6FA66943C7C9 99AEE920D6B0A27841FDAA6FD25D72056BDDE1192E4F5BA8B02B2BA7FE8E003A 3376F5ADF129637804FE1D4FEFCDFFA13857DFAA062969506C42ED73D27C39FC 9C872E9A44AA3B1FFFBABE5401967BEBF8B6FE965AE361E5C7EC2911D74DF840 1C31BD55F5E4051A524BE0A4613EC460E099AF11DCD0C8ABA66E76448D2C13B9 7C4F56891B2C02657547E05B7E14445A7529567EEA8D91A383864CDB4CF24B54 C240814F60908FEB72E9022B8EE70FB8934764A8A41FB98F2F6DBBDE9F3033B7 EF06684FDD116024F5260806728F47A16D01B188E12A42C10342B5E85C4F4E73 C41C09318471F242131C8B540166B53383F828571E2070DB2BAEFBC8961A9441 80C1D8092C82AE78F75D7D72ED9CC01151C8664799B180D4B1B1958370B8449F FEE6D87B3715DB2872CECF36BFE2CCB8553BD808BEB1DEF3478C4E0373D11289 641E82F38F63C8B0AE25A1F514212BBF7A026218646986C9B3FAB72752C49C64 587760F62C65FFCF94EC96854D571AABFD24C839A728BE78D0E9FECF6AFE59BA BBBE62019B454219538348BEB17445F14DF70596D5BD57BBF96E9CB1C14699B0 5864952BA4A33F771EBEC5E975D2EC48983196AD7388EBF1DFE1BC2291E56E4E 157AC998D024B18982BF47C1E5A3A3F27BDA34391AD2C6F637C66F58707D162D 8D29BFA29D950E278E090202B38F2B83384F97C51EE0D64C16764F492A4DF8F8 F196FD484F9A6C149ADE197C245867D8D8624572ED5B2888F61ACE0B653F16B7 935A00BCBA763911702034D94228D232FF1883CC9BD5A68A7AF2BAC2208F4C77 A5090D3E4AFE63BF75D46E5E0C11561C7DD0A92D8582E696788BE83F2E7BC975 228E8A083C3DB04AE60CD0600BFEA9B4B20C1C6B7681276A6A49F0AC741046AA C583CDBD22B31ADC5A498E646E5728C3E7A16F39ABB259DFC67DD19F0B49D5B1 9BEE33D8DE96274D646574E5FC6B3729531B26823A041C9779BE494CDF525712 0CF50850740F3868689A130F6B16D236EFDEB915C38FCD190D56F06E333DC1EF EFD7BB56C72DF20654B314CB9D7709698E13BE9931DE63F58ABB59708C70B811 F78456C8CDC0061489BE98D133B95F6C9D939F34693B696786C7ADAAB48A0E75 80CF184446819AB85E1A61C11765661DE0234852624A28127FF6EE7014F0476B 72DDA24134C85663CC642CBE1B681FD02F2030DD001C9A984F9E2456EC8042BA B80E1A916BB4782D0A08D0E7863F0FA967B0EFAD22831074D183CB4EA397DAFC 5C8B66FC41F20AA41F73CB09D9EFF4DEA074ACBEC47CDC8CF86030E85FD16977 E250A1EB283A0FE51DE46EA9CD6CA3789D7228DE980952EA66E1D0A472BF6AAB C1E00FDED665D453984CC60B47DBC5CB36874EB6AD24179040D52DE6CC28DD82 B898447C2A116FAF411A29FE4EF8A66B55370A1250602DB004095E235C2AE802 78BC0CE20DF8092FA952052757FA2FA23690A3E6D9753B0CE07A0FC8905E3054 AAE367A50822C681CE274419A963EBAC04A382E2ABF109D00577DFCAA2DBAB08 4B8F5EB214B34B1BB8BA9605344721D2DEDC08973166C0314FF154A166B8148F 70B21CB4C339884559B1AFDD7E0340498CB4BEAC39E9C4893FB6F27DE3B60D6A E1E4B632A13D848323C7DA018AB228A14F009130B54D2C44096CE7485E406F12 3D4327D7DC1532B94A6A071807BFF10C61DC84CF25A682E2848A60DF7ABEA7E5 E5231A502F9BD25802F3F1FA600A45A88D6F970BB2E92D57910B6A1C492FB290 F7E5A4124EDBC85BF497D253DB2128BEA9E114FB47D98B6F883A9B9D04892D45 343BE774A8DDA0FC8BA965D6F2FED70987806549E89BC8E89E4D617843CBF5A7 29C6B4B0A3EF114CF983D403CEEF0DF0492F930E95393B768E98C2488A3DC8C0 841E405625EEB335B32CF5E0A77B41D868C0E7E79C2CDDDDC6834253155EDBD7 335F7F452881879D17D5EBC30B29B63FFBA46D7DE4931193F60F66EE71C4A0A7 0604A814E882470BAF086ACF614CA42270791E701AB11AB244A0445DA7BC3F31 1590CB45301745F96CC50A17307FF7A83B78B3E912184AF300578597BC62A372 C3A578198CE405E8FC5FB0E27D923E078546912E751E5FBF3097A70099D071CD 2C516A68B88D1744673B0747147CE1D47CBC9249C7C3B266423C3F3756AEC29A 444CBF2B861F1B578234F9987B785E0CBEA0004406355B3D0C121D4E897905BE 2C83D809C6E06D243019B3A0DB50DBB913B41DC83EA9045B5735B5119B8A0B95 AF6AF519AD69C23D55251A12E319F164B9E4E72E846C76469712FE02B2226236 9C353F0793EC60C5780EDA62860E0E2FCBEEA8C9A245957294EFBF71FCFA0148 9E393C4D67DC6267AE8D45E98AABE7D8792EC383E898C60C59160C753B9E6248 7F1BDA13D0E6385B6CAEE112547EA7B82F5292816B0247A632398396CCFB872B 4CDD670DF61024495D22A4A3F0BF70FD85D4A5AC311018994DD5B7A8BEF060F4 16B20191C5AFE9F4165F9D9047BEB63AADF3DBA471CA1AEAEBC452CAE5650A0A C7B681AE67EC5B27956B2909C232976E6F5E97B48CFFE9CDC0D76B7677A7BC3B 4425EB209E6C3AF9C47683EFE0A2E74FC5CE42D7442CC852184718EEE92F756F 5B08ABB40F99A99B4DDB2DD5A5FE5998F0474D0204C36200ED59F4AB6FE238BA 355848B797A6C8BD4B7CC8A4A84DBEFBDC32683BB05832679103509225ED1419 EC838AB84EA36487C7A54F4E3F6608A71D6B523E89B340F8794E9310606CFE12 CFF78A99CE7BDD059007ABF480250DD7F531DA829900D243FD5C2A21950BC149 C5B4DAF47BD48EE1DC732B71F8551E33F0F8B27A412B2B7EE8F45C516A74B274 83B6C7BFF4623AA6C3D4E0F445EA097080A2EFED98C2F379CC83FC69FE2F78C7 7EFA8D6FE2B2F531327350BD5E87F51BBE05361903E432B185A47037E8278354 F52897F843C26025F84088DAE0738100CB10EE858D894EF995ADDA5CEE2146DA 8CBD824918564A41ED2E1473E378121C28B3635C48B8379CF0A76BDE9EF688F6 D3240C5CA880A53CDE7A5A5FF4B01B466EBFE07E47658013C753E4BFCA0E6123 D1E52591E4DCF105EBAC0AFD40D174F47F6E1E8466DCAFFD81985EB3E178920A CD9CFBDBC88DBD1F4FF8748B2408900FEE7825FFC756572569621DB443E8B623 68219242B181BDFA3E64A6214816290F800E8BA239B48D866E18FCC7B71302CD 6AA923093E117752FCBC0CAEB5708EF53B48796E712CC54523F967D941DE8B63 DDAAD3195DDAEF6116E0EEADFE2E986BC652DBBCCFD8835D45F8021CA55AE16C E470D3D38A1D22FCB57793FBB0B978B119849695B28CE3C603A0E9D5492D6A50 B8843FE3056B736B60847845AA79162332D2CB5250EAE7AA7A482F1D688587DB 1481EF86920C2B899FD503AB9E18953AF69699A56664C786E30708F3DB127B50 AC06DBD641A2F0D86FB6F8F286C372920E07E00FBED90B1444C867A7A04E3BFA D76E8A11E7C44845A823C2D58B08839521327C84961EDDE38F98C0E923E37DD2 44A95472FFADC87A6B30C6EB080A8E822F5EDDBD4368CACAA2AB1CF70A709B45 C8B1BC46E1AC65B517D5AC40B032ED477F5C4DCF9BA0E7044873BBF4A6EA2EF8 5AC7F642D097D6D6D2472E457B969A7E0545F2E8644D386EFDBF857B73056BBF 700E3745C25E238845E7AB6AB21B5BC1966D9D1E987A7F4C501241A1519E31EC 6C2A5128F34EB2C6FB36A5DACEF91501D28913C85BD25779152C44F9B3787C85 6345746A94340AB83F3A6AE59D63561205C8A5DE4ACCF7ABED2D6887322502D8 5D9FBEB2D35EB0C5D75DCB8A5E8778EF34127B262DF531CE1AE24A2E9AF86BE3 C315D6032ACCAF9BB9418519BD47A8D2FA8918 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 33 /exclam put dup 34 /quotedblright put dup 36 /dollar put dup 38 /ampersand put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 60 /exclamdown put dup 61 /equal put dup 62 /questiondown put dup 63 /question put dup 64 /at put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 88 /X put dup 89 /Y put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 94 /circumflex put dup 96 /quoteleft put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put dup 124 /emdash put readonly def /FontBBox{-251 -250 1009 969}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C 295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C 4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF 2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E 0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B 43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC 96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA 2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9 0E172209FBE3857AF495A7F2B34BC893D942C145C2204CFCD6A5C69FEFC25B60 E412CB2BEAE7F7FAD03AF46344F6A7D483BBB1E896BF16B0F4C363799DF23CE2 E8127996DE841B6F9D8A9E56BD799B6A938582988AF87151BB8D3AEA85C49857 DD862B5E10D9F33D57795D656FB616BC9B8397B3612131A2B0F472656700958F 739A548F7C3A348698AF9F6F9821D7A9FD4131781ACBF7EAB885A3AC254DBF94 02FA697941A0F97F048861788BEACC20DE829764413CA58F9D045A6B38BCD6E6 E4827247EDF1171F64E3B041A69B244308DC07F66643FCD7D5FD37F36EC4CB5F 957D4ADAF91850A3B1A765E0E580EDC77556593D1B2E1C22685268469298688A 45C474C9D0472D019CE1E83F25182D084AD85A49C502E8D679C227DA8E32045F 80536693BA5C06834AFC7BBE49C4913245A6C11B4E9C7BEFAC5F68E218F78EC5 6B56919DF078ED242FEA29BB618F6EA9AC27CF3B55CAF2F46FCAEF7A5BF4879F 22AB62B24811157A5437A1479A17D3EAA5EC4699C709B1BA54667AD62FFA6367 2520F91165EF4919860CCB7E20589D7E7F0D3AC8E9CA91B90FFD04738891DC4B 7BDB2602D07587AD282689F58EDF33CC13E96508B556BDF1117CD5DC73F0E8FA D9ABEF9872E5C96E61EFE066B665ED54AB32F74D9B9A72282253D1E72C71F1C1 2340C09C395AD69D74D613A3C18587F19829BE45081AFCD61C03E32FF5F49CCA A518AE8880FAA2DB2CDC8E1740FC453DEF8F75C517925F8FD65A333DA3732ADA 264555868DA55982298CFD633EED64AF8588286FE949991C03AEA5684A68FBA0 A07B842E4A150F83BA284584520897A55C87E126547546F059FA431BAC567979 65B5C36E010669590B5ED5DB29F83777F9F72D4C31481600E41A12ED3DFB70CC A583653FBD4F4652E99D5D1C95A5DFBA30025F4FFA07CB2BAB8E234CCC3C7439 C62711F46C32FA15B54EF978932B66663BA2208D4EFC22B9EBFC2FBF0C1A5DA2 CBB8D05FADCDF0B0AF2F35E7B65C35673D4A83705EF3D5C67FC7310B30F56041 692FD4A3BA9145182F868B604FB505DD5DC6376D12B7AC7E65B8719A5308D71B 1294EFCAA77F3F2E3DD2F5866F47813565C79C2C160F85A780A61DF255239D2C 1F0658C989B9630C078B6B108C53D47B62F8B5E52896A1F835B9CCD93BF24615 D47A897EE8ABF6E08B23199E67E902F9566410B58C9373825F08036D4F53D84E 33AB6C5EE88D024854F9FAA91295425F0AC6F6954A9894023F6F0ABDCA2861D3 29E5F9D07F131C24B2024DF4B5C25B167B8F4D6A293F6CBE5A61F08160B609A0 AC2B19117F9877DB7A586F8BB50FB045B37DA16253F41785B9C444B509F74E47 4FCB85259111BFD37B1D83E30BB0B48D240C17C66A31CB6C8D26215EA08199CC 1B93D8DFC4EFF6A5014FB9B363380D55470189BB4A2919CA0BFAB009D0247C1E 888EC6EDFB990882F127D28F2C114F8685EA3299FEC902D1BABB518C296E4684 7B7BBCE627D2CC3E9FF920C89CCEBED6EB008B724B33A544472006344B4E0568 4122267357ADD5683AC2765C29223DA35FE69F2FB99BCC5D5512819D1ED63A36 A92C7E179B432D30E9228985576B426CC0B506C74D414A7E83D2C12774AB6085 ECF82F441809DBF9E6AC4FB308719A463370FB1A025BC8F69FF56C950C5CB57E A835D436F72E785445BF987F07D3FC68A510214C99888965F20C2C730704A45A 08E103455F3FAF32F2F36253EBBE999D5679684FA67243DB9FB4B152D2F6F109 49B3C93D361679E81BFD0062CB40F8D3EBE172A92816F8BE2BB361CE99A48EA5 5FAA03F3551345E38C031767E463ED853FAFB884BBE20B9DCD4A32C0A8EE5A6C 4F29B710C8022579ED2CBC63122E7EDE278C78AE9CDF62FEF9D9F0A60756F903 BD36E42ECD511D77DCD2B7B30201704EE5C44CBDEF3980260E95F01E685646C1 CE1969955028CAD96056243A8A010301848EEF7D4B92F0AF955FEC2E932A8C96 FC4BD1FB41FA300D92DC1046CEA7143D3F2B8D169E65B17BDED301C36532968B 72B8E7AACFBDF9009D04A00FAA913C1378C76E670E1A29852462073442CB7C83 B2C96A213E1804A8C47DAD57EDED94CA3FECA778E11E3BBFC888D50C0BB91C39 D2A6BD84F64C4AFDFBF7B5C1F4F86D4931A949F45D599D4E1C5172BD6B51BE07 303937A5BCBD847A929B8197F465BBD813E2A4194B5E260BD76D2F938E549D85 D18F511A94E2FD61EB593A96725DED016AE0A25DE13DF5D679F94D7CE41823BF FC69CA079AD3FB931211C2BFB54A548AAA74B2AE206583CAA5BDD28DBD3BDDBB C3A6944F12307DAA92F1B695CECA731B7CA943DAEE048365E755CA5C612C5EA6 5C829F6E00A9999CCE17556D7FAA2F85D37F53D7414B38AD9776B294AD62D303 661876C2E75CD3FA75242E77904C45E357541FA685FF632AA69C1C63D430ADA0 200182A6C5B20BA6898C7F07EE54C4A44350B1966CF3B1B8F3E283703F6DCDEA B8485E3DE59D227DB3E95407807DCD51465C00949C30A3E9D922828E02DC6D8F 267680B45E836A9F2F04BD57359CB3BA27AC757592ACCE9DB5E18064F165303E D6283A4142F97356D0454A9193224411613A763A84E6BCDB6850564DE5744283 BF6F6BD40710C4A4D8F4A8A61204C7547F8989DB9ADD3B3ED57DCEBFA7ED53B3 3D7E6206CE316BC2AC6F46CCBFBD2AA642B96EC7B89652ACFFA1CCE59F8F4DFB 9849FAE305521A526A8B86D259E9355B4D9C15C3A9501824C175B5A8D207C3F5 E57445F2DF90E6DED749FD1735C399A867278554EB36EF9B8F2D06C9CFD6CD3E 8C353FD2CED2CCD183E854835D4CDA1BB0A167EF8108AF8F5ADB7F292562C231 5D272EAC7426EB45A14120BDE0E70A36E3B52F93BF97D84B837D08DA26B26C53 68D07665363F4ED8751683155636CB1308C087CFC3259DCAF096D27E6F8211FF EE548B8BFDF27467021681B8DCF30055449BF22ACE548BA08707819F95A14714 81556C81F38BE8846DEC10C8E197894AE25896FAE5FA7BCC9CF3B831C0364B24 FD9A2CC762441871DEC6BAAC425CD7F59148120E7170ADD946055524A811700D E5E8ADEC10BDF25FCF1CE5190524F199A2B6B7C9AE7F6727FAF4AFD723BB6C8B 32FB9180EBC4967E53A4E21CC662AD167417442AC68BA3956D13A9082D66368E 6B0332220FABDD1800F362C127C39F0699070835F3909BD420051A9EEDDFB4F2 2E46FD3DA72901BBF3B745212F905025C23C5CEC4CB15181AD6027DD78071A6B 764E675F55DD1DE18CA7849720A5D436048F8A32661096BBA9D7DB273993E9A9 26365218CE4D5D77F33EAD39946F50D71FAB3BC635DE09E2D0A8479EA7941081 7A762B996A80788A149FFE97CCDB0ACDCF3196F706118AC698B71E0BD9E4751E DBA3B2760B6C97F7425030E0CBFC5193EEE144DF686FB63818C9221D6B90DDA3 A4486F28D4D742CFE951CAD1E0DFD7D702E114326BF6CA8577A6B21C1E4CBA78 45947DEFBBD061665A4AF942EBEFB87663B674BDA18CE5E8C792A27D0D419C6E 6B5E3ED92832EDC9A47D577D052A83BBC97F95E2C9F09F7D1A66ADE18341180A D97E7CAAF174E0D832DE3F967B2CD18C47048393DF0FB684CE2C6475F0A6CC81 841B1C25BCF38D37339E973C8414460C67D5DDD22DC43E4D554151545D76B991 747CAAA4EE62D5DB12BCC411E2993AA9F2DCC029FF4F98BB72F7B3468C41C8DE 83D5D8BEF4A73380C0259F4DEBB6FA0829AB6761F3340B741C02E77D69F784AD 7F9825C208D66ED4A7B3A86EBD8A3DFE88BC9F444FBB2D520C6C1D92A3287334 7DF7C1970FFA2F9C808E1FA582D862869F1F458B0AB181BB54D9659E388DF68F D733A35D33ADEB99D005F207CEDD9CF87F70EE3E3FF9B33E592506A48F92C4FE AE75F7C8BCDC143321606F11B057A4386BC4AB21111A34E2DCB7C141268C81DD 5F9BA1DE8EDFAD33DBA9F07880A6EC6CA821B287D070192CCD1AACC5D61613AD 5991872035B91782E9ECA88AF2AE73DAF9F5B496AF226E3A72C5C6048D5F7029 78E89D1AB1D04C136764516DF0D1A7AB4613FC77BAE8463E52957CED837148FE AFB692090C29DC134E212E63FDAB9070D8DC2223CCA3DBBD1D76B59BEAE11541 7EE6A3216738F5CC2E443DBB7417E7906359E86E6209D6197BF86137591F7143 7DD2F356AF9367CF78C1B95F56435626DAACBB3361154DA6DF5424C0DDC488A1 9B8F70D3858847AE3E7C5387B17F7AA5DD83F6DC00D74763E759E0845A7BC8BE 748060D6055898074F0DB6588425331A2A66225630A210EA0A99B0E7A8E9CDE1 90E8CAF21D18BF786079EC483763A6BE124002ED541B1E65EB8053746BA0C3E8 AB909B3ADC17C1705587113B9ED54E46C89FE77D8D53D52E31297749F7ECE9C0 D0B17ED5C3C5D5C5352E57C3259B5E654386CD3F73E8221D0B9D707B689B7C0E ACA89EAF310D884CBBC56604136D5951F922B312CFF81B713BB0F4A09CE3F6C0 5548AB4089A1E847C6DDAF451C13CEE6C5E380FECCCDEB5D00E13CC887DD4214 A707E3041B4010766E03525C8CD61B7B1B7F3EC04AD8FF06AFAA48BE990C5CCA 6338BFE6AF16D8B8FED11347A207F5E9209E2808C385C6315DA706A83ACA90D2 E61C59EA363190C5F0C35F1D7E44E603CAAB5218C7CF80268DDAB6964AC16AA4 615153BE305BEDFFE7FA5EF818158EFD886C6ED0A87F5D363F7FFCADB492C87A EEA9C9ACA689FE8506B4B47DBC33E503CA158493B2880EF8CD2551769607DDAF B897949083F97CF1BC3ED09FB2751A090F4C46247C86502D1F7C3321AEB95007 4078C7C7785569294A72D615D87A739389D3FE03F40E1B45925A4C0AFCB03EAF FD97DB3AC741B744E17B535EDDFEB26DB47CCEA8A124941131ACA1B90285137C DE27FB81270BF0E298CC707DA14113F707C5DFFA51DC51AAE2CC786FF92A5017 331884EAFB306EF8EE447531CC1F217FDE0944ED731CD0E310D2F097BF98B236 8055D5B432F821921EBAA1028627A18DE953CFFC17D82D342016D1A7AAA328A9 2A0E35F253CCA8B9D65E14D47CA48DE441D4C870C018D2E6EF2F4D35FD0B1F57 7DFC34A8468D9B66FA3D47E4F3EA998795DE5097952E2DF0983ACE9CF6CBB17B AD1F5FAE7ACA6E9B55C76D1EA798EEDA027D8E0A89459E7685B7B3E49E42885C 67BDD6BE29899C2242389CFEE7094AB52656236C6D671B4DC43B3DAE679D29BA 52C5CD6567BC1A49DD8EA6B31A1D06D2FAF17BE05B3856E00754D55339C155D3 0B5B80698758EADF371CEC8234CAD342F05CB61901759BD69844504BE84880C7 B6116F3C3C9890EF230198933255631C9BF9DDB969622DAFE31EC55C1B6D9265 CAA95AF26F46AE3B5E890103539AA84ADEFA032A88CFF6A06731C19194DA71D0 78E349A4466CD77E2E039B456803C36726C88444DE0F0FC8DBF1F14081B77F71 626686ABEF809FED71851A730959E05FD7F33DD2E22F810C9CBDBFCEDFBD3BAF 0B6BCE79DB98AB903C38415F808AC80D5E3A80F007298B8A20802D0FDF5DCA05 591DF08EB043FBAABEDE502670CFA5B6209CC577E4C327C149ACDAC5F0E3C04B C86EE511737454EA1BDA5ECBE485ADAF29C90059FD271511B4A0BCA29069BBD8 44906C8BE8C53AE2796ACD04EA2433239E77FD90B1F51D4689ADBD2C8FC0E0D5 DD00AF7CFE7E9885CC0EAC9382AF7705CEF0B5824EAA75BE7AC1856489B1F712 46C5AA8840AB7F7E6D768C049ECCF44BD4B74BFC6FA63E14C0882F477EA39967 2F918BB36E36239B10B157849B23F1E1BD6101F0F7ED26159E33F31C0690A176 D14A97BA8AA6F016F2B5DEFCDAF76C2BE00CAE613190E2ACFBD425E1405707FE 680A6DCC8ACB6F4174C059401995E844C515B4E4FAD92C587F81FFB7E89D51A1 9420D317B43C93DF6594E6CAF9F5AB6E7DC1C73970B5A7AAA325963710520826 FAA3BC3D198123307F762CD61947EE3B3E86201FAB21DAA0AFF80FDEF0DEDBC4 B7B8B4658852AF340E0A9F33C5A1E0EDE26C783F920378153A33C0E99C51C355 E97DE939BD9F6A9348FFDF9EC8CD5C4696F14093FDFD988DBAD2B18331800490 BC7A8DE8AA147D48CD5D8BAD9F35DDAB4C62F033B5EE2AB09CEFFD9E1A7ABD7D BAB94E2CCEDB4E69D4210E4CD53AC407E9324F49452F8DCD41E5E1229AFC44D4 47EF3655AAC0A66FE793F92A03C0D600377662A91D5BD388BD6502A55D23C904 734EDB09ECF2E00BFF3EE1D186E10FB9D3A2061B42A14CC832FF6CDF35A4969A 82617E55D65FC62CD12C2A2E736AF4DD84BFB3970D98F8B179CCD63E86F7BB4B E7EBB62B45040109CC5952ED3CD3F7F698E0EA214F5D8FC37F72F43F1C5F4199 DF3429BA2439E65C8DC41C4A48D562C652B0A922F1E922E94275B4A3514CD14D 05AAE5976DDFEB2E2250A1F2D6C90CAFADAA4BBC01D71050831C09D88351E1E0 165DCC1D3E359AD128B5E198F1B8B9C2CA018C0CFA336488BA23697EF47D9395 1EC12C3208DEF843B42545F167ED8F100E11129BDF6842351805D97494A77419 BAC9AB19ADF7019CD080EE7D943B55FFC3FDDAFC872D452665B0F73A76D312AA 8A387BDC431A3DBE241DDF297E0C5FE188D304E6E4E1D92C05EAB5A11C589A61 738FBA194B0643C1748F54926DE71EF67C6D749AE5159657BD542EE49368DDF1 C8802C11473D46BC5A5B4949227AD6708BA3854C173D770AE2AD496BABEAA847 194F6A426254C7866C1D2CE068EA043B82E94418CB87566BCA1597EB57B40F6A 240B05C43B1CA565ECB732AB1FA2DDA74A95E594EB776E85C99BCE9E7A0B255B FCDC1B9D8EE5C2E0D1922591363B85C53962B96E4C652D9BF59ECD357B1199EB 8803981FD38C768A66323FA92F76CCE52AEAD38FCE8D221AB262E9D644BAD46B B3F1E221976CD6F4EA11CD28F646D79EBD0261D91E13EEF23DB7F1E2609DE1EA 8984DD580D65D47A4ACBE171C520DDF03B36FDA58B761FC8D281528E2E42A899 BFA01184E59F353286CBD86F2DBEA52345F438D6742588730E661224B2777B04 3BD7495CA711CB19FD5C642804EAF47FE32B65CD7269CD4B6566C07A7E2C321C E0D52101B5748A5360B7E952A6D8E0B1E3911D386911614E35A79A5D58129E16 1EE185D2FB1BC048352A09B6A84D0C358EBA0F55E10568157081461A95B2611E 586594455C701CAA56D2EE2DEE3345CD3DFE24BCB33B5B64B6DF2EAA21EAED92 1CD2C75B33085818E42BD1129B897E94A6CA78EC3E4E1FA1E994119084B31E2A 101450DE091B7EF8F5F7225E21518044BB010BF3D56A9F948C50A2B05A553097 7D54E2F9E18EA764E30286A56F15F4DE3E1DC568B214E66E05B1EA4199CBB9DB 2580044789141BD213478B5039E8F0CF85A1A23F4D307FD8801201F408969AFB 0C9918F1CC967057A67EDA28B1FAE2958293F2F40A2C08137DAECC421D9AF38C 4640CBAC1ED27D3C5B4F3D933B2765978DA2D3210392E7057FAD4C8D9F012287 13D74B7D982B44DD1269421B1412F6C54472DE0CF634C19C2E14E46B5C82E7B3 31A79BC3508AA44D6BD664620E93A00162C278E0DD8BFEC0961D5E9741B14C6E 1E5D1DCF071495AFDBBD6DDBBB9437BCF6B819D07C44DA3DC6C5C7322530C980 8B2636C6130F96AD726D3D7C7E0B162069517A4E2421ACB760361A0D6E9CDEB4 A7E381269AB0E50BE1D9FA4F329EF282D57C9D74E1938097F5D3D41DB9B31DE8 1127B954F17213138EE6F99F02C6A24694EE1779761AACB25FD1A5305F372A82 7B822BC0FD82B3AFABF79CF26A93AD123D1E9C93E79C6B0BD151A28E737502A6 E725C64972E84DC6603C9C523F61F1B1BDDBE10303765DCB98424437D4F826C5 765260868EFE1B3A7EF05FF8703D3F6B96605153A9CEF6997BDCB8463665FD5E 471CDE2C1C5BC5FAD8FD269925711225264CC3E03E42860C8B3B334847ECD0B8 D6A26B51DE1A78528D6C337CF662BF11191FF1331FFA3ED2478BDF8DC48F5359 59B9CF88D6194647C816FF19AEC9A199F0D7755620EBD7CB7052ECD3C7A78B43 44EA9D9B3A23C352BF605500F49E4A16B2FE10C773E257418BD6945642F076D5 576FF3607322543CE425C118C8683E3A74BE301B2136B7EED8B7D87F9D3D0387 5491D0D8F7A1CE48678021068AA4446AF53498CABF3D5C37CF7092FE54E1C177 254F1FD78A1B989C97728DE3A4AE6B800C82D8CBDA7F356B0161ED4C90E9F400 34E6BAF74C6F20CABA21A39768B83B9DB3BCD2E6AA02F35B20126198F34F56AD 2BCF9585616323DF1283F80AB677A660777BC7F24D047EB4E4EC1E88009118BD E5AA1494035EBECB89759A7C6B007EA6894BF9C7A68AAA4D8E2F0BD70FD9DBE2 B1576B87CFB6A36AB498F84C96838D6B70DE4A757DF3F69B29862F8226E3F6F0 8EB2F9D5CB045A5AC5AB9C3176C9C4EEEF5C0C95F0D9DED1760D28AAAC56D05B FB36E314B043720E6CA7F4B0BF2C25609435CB3FB6FE76208F79DECC182064D8 ECDD56D519C9A10EEEBA59D3F0CB1D9D016E9389CFB5C802FEFD733BA9D27A28 C34567FFA057DBE9A0A8B1B8ACA71CF4B72463581CD4FFB6E344E4DC94C0D8E3 08B82EEE449E22C58C3D3CF7C260AF0714373F7C1E34981CC93E21B1D0C1E6F4 F4B2E9ADE7AD6267329CA1463AE5D87DF70BCC95B36F8BE03AF643B5C667966D B545ECDD774C62CE8866434B710E86CE5F5D28C85D08DEA47F394D03A10F44A5 0AAF225484FCE426E4D293A5B5E5DF74D2DC7A11A5C9E307822439A2153530A8 0AED0C7E72E00E81F129F848383DC3D4C7E1D8DE9D7B318ED4869D0B18A0B10B 4C54D8653184C85A86BA04C6FA88107433864550F46BC2D85E7C15D7A4394E84 2CDBBDC032CE6F6ACD0F6DD6E497F90FB3F17F74147CD73340554062011BE483 AF093B264BD97D76E9E8D948476E9F3EED71AD7CF0D65E1E3D8E9A7AFE9CD1B1 11AEEC02D3A621F72CA598EB5FEF06E0DC9372F7109DA3AAF40AFD12D1750714 E3462B7617343C830AF52C876E8CD1255D6D8A285565E280E455F0DF5B09F65A 0FDFC5395CDA12DBD0D3F2AA6BC22DD9CF258C5448A77972D5ECB1F53230BBCE D11B9F752E6ED88B07AD242EDA05395CE281129D6553B938D1FF1E46B8F9CB89 20C4D765E59472ECC1056EBEFC0D751D80497943D85A3DD6FE8A36A99FB40D41 07B5911D64CF20EBDDF775F88BF6091A8ED75B9B3520D2C0534FDC5975258265 2C1BD67FADAAECB8F5C6C39257882DCBAB41653D82283BA601C7D8A9CA850614 6848E7DC388D6A5823166D5A49C0102BC68668D09BBD74977527C4C53E859DD6 8D1ED5C8004AE41E62568FD8BDA5117AF2441480F9A0E86FC7C3FDAF91E0FA80 A3FB2DB89E45CB5311AF2416A205DBD2328EC1DCD2C5A5B9F83681E143FFD8D7 C050729EF4BCA055C06A54ADF277E4CFE55253B1AFC11F5EFA06060D4EAB22AC 8B4590A4812BF228F5C71775DE6398444A9EF18307F556B4630536DF8EA45106 DE26BC228CAEA5E22A89751F3A746B5971703E5415E8425FE95BD9E6A3E6E054 51062B1FC9316D5919F6667FDAA591B7E4C7868E9AAD066C731189DB1DBB94C0 58D015874E1F2CF1A6FCCC0B5961A9F60E4FFC7E7BDE72F6D4245E9254A61FDA 5DB07383D13EAD0F0ECA50719CF3AA2109183DEE513562B673BC2602FB76E4BE 1D9AFBF100DC38D0574243033D7FC93668501451F4778FF932EE4E6515D7DE9C 60ECBDDF3FB316C2E1C2904672E43243E94B619A4F012C78DDEE5D7A9746E181 273F0B48F4568920D06F8AA7D6A332098D3F6D70C33EFE974BAFD3540BF64BFF 546B6B0ABF115B61019D28398E597F9871ED18FE33C7755C1F2F204C8120F823 3C86E2EFE7FC413CCDF91898312F73317C59444F3721D4B9E08B894AFE1CB460 2AF7BC358B23D2907AD1758235CAD613E5603BE4B16CBED980090B3A0237EB34 4D2CC2A9C46F7C0CC71F1F95EF9CAC10B0C1832765ABD6D038ACD605CE5917AE 95FC8DA261F40EF8A7B8F756FF57B474D25C0D2ED56E0C9E5F15CD339437E317 BD72533E9F3FBEA6334FA14BF873768165D28A71CB84B00755078A6C1247038E 06A5BA747E11A13853039A65B6EF588A04337849209B0C261ABA460C4A4E0008 F9EFC4B9A2377480F3259142E84148EE6816FC993FE4DA12D8549F1403D1C54F 3CAFA7ADF1AD41E093CA04CD14CD87CE2681F231F607DB113C45E452816D9D4D C7BDAD7E5471991FFA69F52D1FF868E36B2776BF2CBB066FB427AD14FBE1A2D3 3A93EC960F5DD34A89BE7FA6DC17F94706826C9CD5B4B410FBAAFB4D883DFAEA 98C8705A0E9741A6AD171A4695F267EBFB495446EC39C47571D7C6E9327A70BA DBF153EEE0D882E8F91ECDF30330B0C9655FA683EC08DE0C29698720B23BD2F4 E1C325917A81F9F8964F4544135EA82746417995986B6842CCBEF0EE6696C7A1 378AF207A334DE43678D4382869998870876B1E4BC22BF8326A02054ACD61B37 DE058DA5BDED333F413A7E56326321D268F78AC953609686C6A306D08BF4D4B3 BD0448DD77F54D97A14A003C77AB01DCF4E3BC961A21D13916DC8B04082AB7C4 382B8A5B4664FF713E700C8F1DB91D1E83096193A437E17AF0305E0D0DAFAC6C BDCD48533FB0825D53F7317ADA478C32D2487657F83B2A2D9EECF150B48548CF A81B28DD76BB9A4547847C9CDD225B8A2513994E2C3C8396CCF49E4B77BDE8B5 2213EE4554A42A114944D4B273C9CE35818A386F96E6493865AB144ECA16BE80 CF9F48CB9C6631A04E9657CC4BEEE4AF8063D342B5228E1FDC4783B44CF07001 696F38D695C634C96475108E5B290B284C63606E47A8976EDDE265F6FEDD6665 E6B6080089A0F10480868CDBC58E56D70591B9A7392C793FDEF55E6D6FDA36B8 E1E36921E73374635ECAFBE039DEC74CCC8E34C46ECC75FFFF1604868B76B438 B2695088FA2A3A09767848B5ACB07B6E82F10D9B97DD9069D11CF8E60F3C2F9F C9378558AD66E0F9628EB85ED55DE7E08DC669455ED343C4DD809974D97739D4 DB31F8CED5B8A3BC0A31962FE108344A443C10A08D130F8FBDBA5DD015A4996E CCA9C4BB6B3EBB7276B4D0829FE066D9D1EB1A93CF8B1105D59CD486E46F52E7 7D6125705D506608A29055CC1E9190C6869AE74D6F1F2D9370AB8C0CC38D8F18 52CC37784AAF60CC8050859FDBD35B6E5EB980E77C2067E5379E7C05AD5036D8 5E72C73A476C2FE298ECD7D403C54376C1247B0B3FF2D834256DA620EB385EEB 2EBF46240D3428047A1017916B93D8AA7E0FE3F8CDC671692EDD64E1BB925150 095475F41E551DBC330944D641497588B06C304386EC70532A1296B424318D5C 5D150255CF1464370A287E391A1EF983A6266321FBA0C34E118B53ADF0B4C96B F158E26A7E3CD37FD2F107C1BF2FB45DC8253103F09F5A9E42792885F6FA2FF5 93164BA906562E3AAA9FE0C6DEF788D713FB8E7EDDFEA9DE96E421A3CB3F59A4 3CE9B42ED4B4959AD4419A74CA4920724654B5B53A959F5654B419F0BB8B6F0C 247A8D3DF1A79EADFA7ED42E0CEB0853D7E8D0E4DFA9215E1BC708303C2E7C09 E256C7B2D60245DEA1CBED385C68D248B676BE4CD7B88F1C7CB8100719CBFF95 4080B84750A7D35ECB3D73FBE0DCF83348C4056C70F0F6BA269B3F42AB09CAEB D9D5BC559DC6C9240B7C0D04A9F71C8FCBA99816A064495FB52D4E7B370301DE 6AD34365BC4940A4B51389229B1FCCEC74F8F74B82C3AAD99DACBEFB2034D5C8 5F8725FED0E86AE151087D036DB760850B51BC2300A3FA258674C5FCF987CF99 1B717D45464A43FA64AA12B11F6BC181C91F6368EDF204114C572DA42162F2A5 0904910EB543A076F7068F03FFD7D7CE892A1995CFB951C6A34EF5189B999298 8DA2AC49C7A70853BE5D5F2D258DC48F7455DEE47AB77D2C9D7218E8DD6CC40A 1630342E0E2A9061D4F2EF3FF4413549152FD7E8EDA5E0A34ED1FC3BDC7F3908 4BE7563A038FD20E3D34B8E64BA2F7752C82B14EDC3FD9447A8EAC59E2DE60EE D0FF5E6E66F12542AE3079BFD3E1A013AE1DA13516EA960C4721BEB9DB5DC965 E0979DBF1A00ABE34BBB0C97C79BB2D2A2962CDA9D180F1AD287D646810DFED7 8BE3B8E199FEA1E47EFB543A6A084115E1A758AC26095A172CCB7FD75CD458CC 8A48439BC2792CD0AA28C0C493B99769D5DCF788D8227E4D11B11599446F0731 14B838113B7E999C7F996755DAD6A4105D51114B724201C090EE93E11F6E32B6 AD43A2638E06EF81BB5D19DE9BC73DDACF4E212C303E0882893DD281F5E0642B DD04E15128CA7CB7F1D762BFAE0A0F6133CD0B40462C4158A05BD6F863AEE364 E984AA46BBE6A1BAEA2BB853EA7C3FFC10F6CA20A008FDCC1833F6211ABA8405 680A5C7D22DCC1D48E13E723FE31FFD2CBDB5D5AC269346E2B25560DDF125FB0 B933C539F972BBD0752ED28187602A15C4A3D8C1CBE3E6FB3DFEC77948723922 29DF4F12BE7FB6215DBE31797148709639C2CC66E8D6BEFCFCB020796D061B8C 483E247887268C2B6617DA94BF2FEBA20E622FB9A382FE6453E2C4BF126550D1 9306CF27BB823D0F70E11469731563389A620E6702A83E2D008692669C69966A 6798EBE65A0B1D2842B037D3118BE20066DC21143932F45C87206353865EE399 37F0BF2DA404A2BD2CFB4B23EC879FFDC61D4FFD0EF6296C60DBD5619DD64DFE 52EBB0369F7DE5DC832D638DFF35ADF50163B881D1FB1A2841A37FCE0BBD2012 A60ED59047B123CBF082A031B03FE76EC8E891224582984B436993973146C08C E59C026F1EA7A2EEBBB6FA909E3D5D9247DCCFBC2C50F221A1A5E57784E50105 44A99D9A8CECFF25A24C55EADC20B41F7951DA53B6011AA1068C47BAD2FA6372 8D17594F5B9444AF66DA687CB20C76BE4E80BE9C40610368C2ED67C62B8B7145 3857D8FC8170765232271298786F5F1CE8F9DF7F1C651CB60EB3F5B7301B86CC 6AD188879AB1F09BF056B984C69C2AE36AAC1025A07C4D175EF533E1C053F4F2 B0A999F7BAF55DD8B5D906116AB609176C80916B9A4FDB464256CF0DC2E092D7 ADAD72709091746764EE1946C903877751C57828CD9BA50BA92C87D610638230 4CB802950B75C78AA0D55CB424C3FD1551E3D30B19165D9AE5135274C92A8F2A A85624F3006FC5963C5F8404D892BEE8DEA400DDA12465C312546A332E81E623 A3536F74C857D6C29CEB615E8C54AA1F7EB126AA21E53796B72BEE26B03AE39F 7C74C21697A9AF354090DDA249F45DAF6EDD4D1EE35A6C12F3CBEC9CD3960811 5BA838FF06A2AE6F552D92684E2C69226F5426501213B43FBCAEEFA2DEACC5E4 6A056F1940A60912094EBAFDB8354A765BC4A888E3BFFDA2D25E14231AB9AE01 24E785B11C011887C8AA6B5799ECA670D805795AC031F194F0EB97D015DD26DD 0B979AA4F0CD959100774ED80D2ACFE21102C0F1387960A38271D413012D8929 6E0EF4D695F24756A810BFFE4CCA4C84E921645988198C8C388C645C2CB97B41 0AF2D1510D275550664A10C698CF4F0A5A48349B1319D543C34F12945EC9CC0C 0C3E9F335873F6BD34A2852051FD5DA12A6254AD32D06C6952F7509615E6F74A DBCCAD0FA5399A3A95D53A96EFD7EE02E72C4C381FDC081EA3AD1B28018723B6 D2FD631674254527F33D249CA13D083C90C993F942D299CD0F449417EFF72C38 6D980E270639ECD6FC2A8AC8F5EBF162BFC3896C48A71116E2E4E85C5BF7823A EA88ABE42BDD66DC60CB122AA3E14D474680EE209CCC5866CBE83AD88E35B114 90965A3E0F6ECECA9DE6B8D19C369BD376DC8F913B9F0D87A0EB72291C5BD198 AD1953EE451BB9CBB5582E35517E0DCA3E3436B1C9F6BEF192AC209C1D4FF363 7D396F363109A7B76C71FC93A939BED902484ACB9A2927074F659B9D9EA2F673 725215622516F17BB9297E85B85AAA2AA83EB5028A9128685193157BFB81EEB2 F4B2CB91517AFA50496B73608421337F127D1321F019F8138E0E3C4A5D84AF7D F648D363D356E158B8D29385D4FF5A2FE2C271CEB664B796DFD930D65C994790 3184810B3A2D9291CDB4157934BC20BEC1B9ADFEAC279468C3B58E97C57256DA 43673F2A34B0A9C8BBC298965948370C9E4F193EBACC5D11F8FB1141274D43AD 95A336F12629B79B910629D4BB88C65A390F243A0B93F551F51037CB0D86CF0B 9D921B263AC7EAFF5432C0D3167FF11203B42DD573CEC100408FCE92604826D5 53E7BC48CBBE22C19294F4901369B7CB03427599E140195D4D363F78A33E2028 1740EAD7DE13CD99114D2AE48C4AC3CC2252E1BA62CEECC7995B612F1617E641 65F41DBAC99A837B888F0F02AB727BD9ABF1611BFB6483BC35D8ECF94DB817CB 9E23CAF96963CB0D5B3F70CC10E1ED87895C8936A3EC4F73F66A4D8C78FC6D74 662DDE70204A9114FEBD9E5196127E47A14E083C5B57A68B8AAFDD03A222E50F 9E9DEA4B35AF713B14C6C3CB23B366CEEC5C721CB3EC0D38B5176CE6C7AB74FA 8A4AD04A94E3452774F2CC43A30C9FD6C0FD06E71C7D97BF1CB932C2C7D5B1A5 66B3845EDD2FB7F4EBCF0581011C5B9BBB21A6E9C8E91531217E38F91AD630EE 7D332A99A99449166BFA91039811500171582D4A31B28045BCD1D925DF2ABBE9 52D28C7580CFE212472D0A97D69D02E02DA9DDAA970145A3470B6B69527AEC85 7E2BCF0BB1A186C150A304BC26F7D7C82403FDC5DA59EB706F7F6ED716025700 D6A22F0DE056F74774BC304D8E6C8BE89843C85C596281B5C4AF670DCB9F5BCF 0AC4387937B24D12EF3531309A0A29FCF0072A74C831A90DD5318AD23E9F88C2 D7F849DB6DF090D17FC57C4855E817E08997D0B1385C009323EFCEB6D68E557F DD7DD7D94674E41D0BE4A5C444C5F02074992BB16878485001F13C832AE4DBDD 7F432709268170FFC068189AEE149DE6530CF92CAF113E9464725692E1B51624 2E72BDC4F4084A1578F15C3B79D85C2668539E76322E31ACB8890079FA7ED363 90D879C8B29C9984EDCC204D8070865A3FD738D3E69325CF751745DDC75AC6AB 6699CCD07D9FDF8EF31937CA71001282410D943B093F4470C1F8ED8488ABF6A0 D88D2F693558D8CA5B9E8EEC759D0A596C53A87943457FD1B377198FB59C5ECD B227648E18836F497129BBD8E1892AD3E3187ACFC55CB325D93C07DC326AFB76 B84B84FC783C797C8661FA18EA6C3DC2C0CE87F03B49823623AA75B4C2023C57 C1A6A4012CEA83FE87799A233D156652CC05C7E0824D6A18C903D5805F843288 1F8286FAEAA06D1813AC9E56C84EC76B0B3F3154B3076DD8E96C26BA9E4B26F2 E284BB3C13E78F18C319B432530A156FFA5CC322962D26300695B110350FA34B D9090ADCBB61CD41DFA4AFA0580A0D411F41D8A335338C1D33572232EB278F25 DB694AF19327D905801AF8FBB8407FBC9450C4A3F1BC787BFB86D44BED084AC1 4444713E95783A39899F05903C5AD87723E977B3BEE5232A247211CC3B80DC4C 9D8EC3210A68725D6603FC8F551D49CFFB37EE2A440DE7E4B6AA05510F6E7A2B 35E67F1C492B46121898156F0C57D60E17A9B93AC85F00716612E3A3821CC177 91C65712DFC44F2438B69CB2D2D8F8E0B3AAC8C5462C9EA0AEC970B2534D3562 6B22C0FF20468BEE4CF7C59BF04025979C51E198047F51D0434A1DA4F17BBFFA E5BD832E9030B5B75C00E2499AF70E5D339F323A5F200554ABCAAEED6DDCFC60 BE9E2A004BFDF807433DD98F9F2DCBA688DD86FD776C3D0F0B8AD3FF8A62258B 5CE3CA657B8521913BFAD95C55FD43BEDA9DC7B72CE731B06CF6E4BD8A810302 81D665AA33DCB80942E5391A04220B5EF354D09E11D7E58D770AB2591AAB6547 C79052348691C3980F254AC4A7B6D9D2453E76C16152D7B040AF0AC7D3BFA6B6 FA2CE8F152A2938E9F224BE5FCA214E22A3935E1A745F508C7639D289AE9A9BC 185FACBB7F00469685B37A3E257A39E8074115DB655A68787E52FA5C1017AF88 B76BAD28668EF4E5307F4AD8743D1CE2E317C4851CEE20768739247764CEF307 3EAC015C92DD74BE57B6410E0908FDA93C5D29661FDB641AE01BE21AEB31527D 2022C95C0AC0E75867816B0A5CCFBCFDCD3F51036DCFA072CD919F86FC772292 F324BE322F42B65042EEF2987D445779A497AE5B721BBDDC2DD583F183ACB47A B00B86F3899269D8D084282DEB495C3B60017C2CA03BAF1E8A9AFBD62E43B9AC A71EF9BA14C1C79157CFDBA4AEA81DE812B19E54ACA9EA031B2AF21101D2FBD0 0F40567B321C90A16EED37B01F5338ADF79EFE865811ADB1FDFA4AE56D27222A CA17BB6536520DBAFD603246A5C5105415A9F40EDA0C6DC4B8D0DAE638A268B9 E359774DA87D61F57963253CD8F4F2C65525E6441FBA857D0DC970CFFF31C14A 1A95929D40194FA928F5A1CED04E68FA82750DC76C4728742F0EE33EF43A1AC8 F85D5AD22B68E83DA0827B5B75BE786B22C0ED8397FD185A279DFB566B380D99 03AE3E1AF731CCD4707CEC01D9D5FC70C97B4CE0D2698680378739991BB6CC45 44B4098434376529DECD3FFEF3A39816672AB62CE7350AD92792864A58C1BA9E C1B58F7EB3399CEECA1BA498AA454EDA9CE06857408EE2D5148052751F8E18FA 7D3418785907F88B702F1CC59C3BF0A1582147CB2D3F9620F12985184E5F4C1F 33116C18FFC0A8B7E5AE9365B5260D4FF645B799890E16D64BF6FB955AF7BAE6 8E655B553713312397317687CFEDF95F2858A2AF12C0700E2FFD4CE5C6775294 1F6C1DED2A61FD1EC86909FB0D9EE655E49241D6A36939C27AE09122EF604F52 CACC4FC30D4DC6D5C80122F957CE0E2A0E6AE9497F519B1BF06AF441926D5CE2 29C1182EB0ADEE19C855EA5CF0DB7366D0E78C1D91F79726508BAEA47F154218 CCB2CF55DB118AA5970337170EB18DB16901AE0D8BCDB37DB5823A06CD4315EB 8A8F90339EC505FE55BB375B775E6252F5F5C2AB2084B25F298E7AD562649CCC A23687FE0F2C9E3F5103E6755321972718293D6D0518CE1551DD74736D3F9E01 C4DDD4B2F0FB361C4CDF8F32EA55005B8339A0EB4533BEA52B5754643ACC8914 893AA4604CE78E0E6A0756384EDC0174699BC44F97D6D841C74B9230ED0C481A 5D1AD414BD68E8DC140AE17DACE1C51D41E7DD281A29780D1501ED2A14087184 3AC24FC9E0F7DDEE4AFAEACAA20CF74D140DD47BB31EB7649DC29BFA699760E0 A19615B25EED22FCF22D655F94C22A61D850C4D7D7D26B9D6B386B23E7BB967B 86116805116316618AC253452A6CC6F1AFB45C92E7D6B3ACF89B28DFD8D86777 975D7C8247209A300B0384CDA72D1AF58AF00B2AA2F3BF31E1095E09B8240258 1F018E1E7DF92D8160403412622A3080D3A28915A731E44C25160A01721419AA CF81A19E4EE195620E21D1954318A31604F9F28BB4BA57C2EC33E24ED74067B4 6B69BA3651D1B61092C3B5FDBAABD6BFB685930BE25281B64FF7DAAB58B09353 D60374219184C23F2EC017F81E9069D81CA52515A393B4B626318785F907A07C A15ED9618F4E1B2FECC1AF6807D8161322A736E9E3F7D5F3BF95629CE2AFA3CE C1447D00D0A6EACBFF8B2FE04EE20BA7B87D048750C08199E2B90EADCA3B178D D12074745DB7239D3DD4465BA78E71AFB900F4629254E400B40F9F4735B19074 50728521BF828AF47E72689B99C7943EB9F4334335A40AEBCB7110D52F2CA7B9 E5D520CB8C5131A05081F391ABECB535B4094DA04EE74EF63721A75B5EF2D5EA 2431880C02928B805981609234B52D95F108F0D46EA23B9A79E87BB93DA557BE 5F0AF2A5018CB8A5F089051BBC0B096B625ADE19F9913201BFC1B13CC4F3E512 569D36D31342445082F76E7B39164FCE3B1F7DE72840728104D7F202E0DB71D0 BD8368CDFD7A05764EF04E7592D64825A49CB4CC918E558D98CDC84A606A56DE 9EDB019E57DC6AED5394FC148C3299BD2F41170E6ACC940DEBB6211CBA5EBCF5 F5DE7F8372C34A0A468E306A82B7E30BF59B4872AAEC488D91A243BF43C4EEBD 587B4709DDB58A13719A59B4838E70218945FFF86B2C196151535BE2A029E437 AF721A40B847ED9C9DD779D895FA72636D5D27DE33BCD7BD00CF1191E8C8317A 6FA17A684CAA88FDF06DFC7DAF36EB3263C3BFECFAEB7A4AE96023ED7F4572C1 93F8ED1578CB94C6E1F63515439173840218F50BB6BEB2D7E8BC3BD86774F871 1B22B1271C4823929F8DAAC8340510B2A2F785708B52C273796301189E3861A2 8D0581669DD488874AA45833E4FA1549B3250586F3C813E10A6A1D1BD38CAEF2 515BA325FEF3A121ED742DA024541D253ACC932CEFF238613406F54CEBB9BB4B 00CBA457BE1622B67C6F51328F20A186FB1A53BBF8E01B07A94B7A55E497798A 376509C55CC3DB822897348802A4E58D72C42B524CCEE024ABE7D78846C7D4C0 3F63069611648515A8E1A331AE970F998A4FD4EDF7483FC91302C756A542B301 E86BE8443E2D617FE2513C37F622443E167226D999E8D1BA4F04BA70D39B1CE7 9695580D9FAF5DF8C881AB982E26E9AC44B7A7108D1D429C657024165B92DD5A C2314FDF032D2474415DF8ACAC2BA0A3FF5490A6FBC969462266C86C7DB65D93 870DBC6418726D1EDDACF068C8B66A34A73ED5857C63EC3EDB21A65166B2DAC1 070936734982A500C995ED7260D166020E6059A50C3EAF1C7D0D680CE52AC451 95C459ED508C88DF40B99F86805725849C5DCE5BD7CE39B44565BC149965CEE2 871C9811D6DE1FFBFE128C64E63BCA7778DF17BDE518A1C1871238F55D1EECF2 ED9D1BF89D0C2CBB1E6CAE3F77670EFC2D940CAD868B747901782F5E9E6D0E93 F671C1839F15D341D3FA462BCAE767BC1B6403F5DE32FADEFB67A534431CD99E 001DE347909A415C067CAE9626E9D09DB24DCA8B77BB08BD2114DFD29C89D844 52010EBB42EA00ED7053290A337C1746C289AE2E641A761FE35D597EF94F381B E7A744A03CA1DC584748DA526E5C9BDF662DE1DC5D26B7A8B94042620CAA4D9C E527610F35A700A1EA469B57FF2F43FE4BC035F31E58AF5B01CE007985C0008A 44368EB6ACDCE166A56597CBF5AA685F16B144C5327B2248F4BE5AD37A6B32E2 D2BCD27F555A0D7FC84CCE32FF95A51AD4D4EC6B8FFE35EC6A0BCB5C2A83AF27 C0A6FA4EF49247A44B7C53E2672AAB5E4BFA5CC9279B7B04DB7E65FFCEB4C776 7280A55C2935A87285D4C2F48D6EA2664311479388FC1003D9D9DCB4A677CC7A C6069B8829B3A29FA980F71D0A1CA97E6820FE99741FDB1CE72FC8AEF2E839E7 EE3F0C73C2F9E5F22836E38EF53BB6E468CEE32AE79A88C543A73411ED6CC7FD A878C94821F30E8BDCA1B5104E47ABFA999062848D33C2B499FE402E8FB712E1 B27B3B06AFE6800F9BDEDB7AA788F0236EFB73CB7D4587EB86305CC7CA574CD4 7E752B208F942DF685E2022D6FD39CC626C6626DC824631BEFF0460EA3AF0809 247297572F6A73F7DB0A787CA92B8C77BEC9B877402D2685FDE3E020C9F90E34 B1E559C34A11AE01CA7C7395D65F0A49FC234C967396C5833FCE6A4BFBC8EBC7 6D370D96EBBF5279C37B53FED9D8997275BCAE89C6161FDB8937F5E7392A1E71 A63D7725AFF5BF082C239BAE136E561336BB7AE60ED5C24E126DE8D915F8F99B 40B16D6CB34D90AC20FB386D9E279E682337F3759BFADAC62E20DC83212B7A91 4C4F5652D38800B7E467678297E5963996602739E9B17A9C36B34A8E122625E6 B36FD13B62ECB9D7A2DC8811AFC10405749D5DF4AC2740B3BA61E9D38AE8C506 DC80E166C8DA4F280C643F1BE2B56D7E47A1E0C693F60F59028873F3AE77138C 75BE8ABFFEA368CB028275CB9405C9907D77C6C7CAD1B7395CDD68F454125347 A904D6A660C29FC788DEDD4F35CF70E67E49F9C13138336EC905A85998344083 129B1A7BAD907CDDEBEB291201CE7B357C7AA272FAB9F207F47D82332C93C5C2 E694A1802EC0D1DC7B96864C2BE8826508B88EDA7FD2799C968D372F5F6D07E8 BF23A9CA1A46B74FDF1637CDB60D2C1E96C67115550F6C998F581980D888C34C AC9DBAB040A9D5A5571DBBA7F28EB9CB68220481D185FEE883430C03DF532F72 AD8251A1B9F076B6F54865B65FDE9BF15164871EC5DE5F73062EA9064D2A6386 EA9621CB644E1840CB01E048261E58E6A438DDCA8D763E307C0704B2DDA926B2 702A772D0A4E340A799BD6C9F3B972A70B56ABFFE4373B8C7A653794F9AB6B9E C88D029EF1BBD2813FD753FC4AF477AD34B70C34AF753C9ACA1FBC382F87C60C D3CC9D2E0A401C0E2DA8F40010871854E2D05DD69D9C50A6182C4BA887BC7CA3 705E4BB2A32E6E4194E5D98BA1327BD507A9E5CEAB6628A2E6B897F1393E953C 4D9307314D0980ABECDE3A37536AFE04562A114F270DBD2E4905008F22B42D4E C74C2CCBA250B5658DF687B916E46B258561C5CA832981803FC2E29080A9F488 85BCBC2BF2CAE756169C49686AEF47532C2D94F10DA0FD0F9D3A3454FC6DECD3 C81417F7E6C39586BE625EB878B04ABA2467AEF9208D5BAFFFF53915928F6F7C 162A3FF4AEFDC1C548FD91820AB0E32A30575CCC575D65857EC1A4DA49C932A8 AA8E537778AF261A39989BAB0E6D8A121BAD6AC7448AF46603FF00CED5D5CA68 11505DFF5C7E8EAA211792418DEBDBF8400B58A6FF885220706052FB4D42E0B3 9B62613143481107A44F34987F1A2865653228887FD77B9002E96D7B1DC212F9 7563A12202469CE8E9AE597B79E37B97FA9A203B0C6FBC3B76CF5CCCC241F86A 9684053B6C651BB56A86F9E240999F735ACBD8A690E5FCC01DD31623F13C81E2 4E50C53E216647346FFA9BBF3FF13DA39D567C25DA30C9BDCAD91F4E3346FE66 DB782F16C0A579262011EB00C45B77AE50B146F42C9F9CDA7D5B3ACC07503F09 6C1EF3E2F054894FAC170BD68CDE86477F8621071BC21306BF975D6AA5CA9B41 E20DB6C1C44E8D51460FE47AE039330A9BF2CD3A4595F997B98909519D752E38 F06E335108526D63C068B006D4C5301270A463F1709FC241B726E7784D177210 236F590A9ADFF3C00F6E20669183BDF7B721BF1E7C7A4C18D5E0C6D1DAAD8606 46BE247ED847CAB38C2A41FDDFE10750E733FFCBFA62CA08439C67621A87EAD0 5100A59B87E6DDAD696A91A01E3CF1CD06343639359E75E81BAB6DFF5898C1F6 63B1BB1FDC29BD7F0691DE4702392A3E6C4BAFD86BCFADDA140072331962CF3E F409BBE1B845A519BC8C249CA032B06B5A18BB4EA5FDC34732ED54B7D1401EDB 1A1DA387C29C175FD289AED840BADA29D000C213F74CA737652B92F1E9A56962 5CF886FFE6D3B759CBCB3BF39929FACA4F1BFA5E6375F004CCFE4267EBE6C375 8269FD1309B72F48E18EA18310373DB9EED70AECE90D1E0A4580C4867F4E72BF F345320466753869EDE12DEF2709A8524FBB6DA755D440F4D5D96542EE39ABD8 80AEA88A0EF94FAE8E8006EAEEFF558AFC5833DEF418FF00529F20F263A5C5D1 4D1D779DC428976BC825D22A861E4A526ACDFFAD80106E036E14D9E0328C3AA2 19E6E0D3BA907017ED5BFCADF2F3DD3B58D1D3D2F7B3AA547B39F98E03FB127F 72203B00B35D46E87BDD0EF2FBC83803994FF7F779A49496AD9DBB42B88834FF 931579CF51BD9031880C2DFA069491253473629EDF77AC5F21A3C51208A0A6B1 30597EB09A67985B1C2B5881B25177A1CBA83C2E76FC522C8BA23459AAF87AF6 3734A909589465A6E4EF170BE83FBDD88BA34AC072E58C35D12BC6A0DA17199D 4ED376C78614316F8A5DB55DBF83C0401D3A067470FB995F051CA47E5E23CFF2 97D52CA0AE6F7B60447D3CB99EFE5380A9B698EA32BF6805459BF4677BB4B1ED DC0DD1EFD4EB119B588415B27BF3046749D1763DCF25717D56F16D4810FDB31D AAA00FA999A51C8637D1EC41C9A7FCE24C2EC0B5183FB8CA9861607542CED3B2 C1AA757A089343B1E29011F2B86339C77AAE50208F28BC847C5937F2C48B0302 68A22C7EFDD34BAF3425B31AA4A9509F2B2D9FE6976C24D0A6C09D4354BA1DCF 5E3980688DEBC044CF67F3A730168E66122570BF21499DA3240932C582577A47 2EAA2B4825E2C3AB0FAE8031B5BA399D9AB63F71C4D5C1346EB1CDAEA3B79391 C8AE5E6DD88386A9C132DD5745EAF78BCE69366E928332B3281D90DD0C2024F6 C7737F2774B7116C5C400683D52296855823463B76545E6431CF3EF188907968 746DB962901C629D8875D096410B3FDD848E19941B6B6881BC5488F0E709D4FB D206A8204AB7240DC4A7B561A642BCD863B42EB9D398540B951FE5C375AA3A73 889123DE1599315422234FA46A8AF740C6295DB3B19145EC2DE7 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI12 %!PS-AdobeFont-1.1: CMTI12 1.0 %%CreationDate: 1991 Aug 18 21:06:53 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 46 /period put dup 97 /a put dup 101 /e put dup 108 /l put dup 116 /t put readonly def /FontBBox{-36 -251 1103 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 525003F3DBE5BF07B2E83E66B7F97DDD7CE0EEB75A78BD9227BF359D002B6ADB 8AC57A33FED4EF021A7085B1E2B933DE602F0FF71467ECD501744AE338AF29A0 26F7D368AC6F25CCB882DB7B7343566192BD687E1349225982823027D3B66703 3B0DB7A7E680A682B98023D39C7FAE81A5D5B867A0A66C8AA0DBC83B1596A84F 0436AC6A7900B767BDCCE0060A4811003C79FDCC71D73F7F2D0A6675E93AD21A 56B4CD8EF75EED3DE8C0A18BEBF7B9D1BE72504872D56EDB272F1E97FC726CB6 68C85C713059DA19F6C2E0F3E12710A59B6FC4699AE883DE8C8615B7292AC25C D5714B6CFB14EF0EF11EB13009BEBA4F345A5D3D6D9926ABC2BAD7DB1328651E 437BFB3C46DA7B62219660FC368CF3D3704DAD3AB461C28F711665BF484BF61C 052093D231CA65618EA463D63E406ECE858D180A6C0589B2FEDC321371C28E77 DE974D655DF5FF7D41ED01FE717D928A885F6FA6CFE4D2C0807F8E7F937916E0 96EDD1A3BA67802B1F4A49100E75613BA0356D9DCBBAD4DAB3C59E70A47058F5 2163D1730F0EE4D1F87C3A4AE723A23CFD7986FC4FBD399347E9F5946354E013 D860FC446AFF0B0744F5DA27CC777C96ADB388D1E835DDCBE123FB517679B9B7 EF696E091A9D51510BE264701A41C04FA8125A48F306ACA7A83E35D5BA0C296A BC594ECA2CB27E92FED95B595C21E5BF0DA724D40761CB377BDE5FB98C9D152D 6C0DC98C4083E9656321BFC445CD6FCC142DEF16E27DD6FAD0B3185223B1A7D6 779F39C70793184F2C3B721FD0AE6D8E063BD47804785DAEA74AF8C75483B713 650616572C73A5DFDAFC7F9DA4FF42E3106C3CC276F79416071F3AA0F6BBC1F1 A6A1CAC16A771EF1089E86DF410F4E9CC36FEA4EE8AB96F3E968229996BD15B0 016FB672C1621C496120319F173A6589E6C6BA5783E1D2DD39BCD1853A496FA0 5F519895EBD9FBAF0C5C63467A956C4F8359B196DCBB4603AF9DA463537C1043 64E76B0794728FF1587929C47D55862F4A29F6FF4E7B0ED987A644B780703F86 C4AF5F520C4811A64D92E47ED62EFFCBE48C56D499DD908340AFB343B7519EDF 9579C67C873B88552FCF626E71204B2D18FD7664C7010C8FCAA9D0872099E170 0541A848CE43F3196562440406168333229E4AD7746BC2856DE4776442AB6411 43BD3FCE150485F21EBEA4BB65831928E508134F540AF3B5A9D9DA1EA9367024 BA430B259062942A2DF7959C09F911CF9FA17775B42C688995A5699C12AB2D5A C6079C823A5E92ED6D3A086D1C7FF98C769520659D7112FF5F0927F2612E20B1 65192C260F7A6CB78160101222509C5A15D218F1103C66E3FDA31267A7119916 3D93E17720703CE7597AA8FE9B713C32C7B1D3EC09A167DFE961BF7DC748A7D4 C83861BF8720A2B44C5E59F7EED7F069A7CEDCEF0C8FF06757B42ABD68243E89 6DF98E87F6AB6A3AA68F3E966436884039BE25723FFFA2B72462F84427BF1406 90666F4F202447D7A11793DE0B411E9FB904C87DCE2DEAFDB223CA49F73FF1C6 61853D14EDC18E89617098F91BCE29BE986DE653667FBD501D0B8F5A0CDA7693 C5E068B3C69E42A6CDAB2E6827285830A450DBD8C601A57CA59467F41D5F45D8 23425884C2BD33565F1F4FF77C251180AF127D3581A72CDBB10BED4120043C27 422F53DB1AF379ADB8CDB89B6155F3834358C406232C879DE841AAAC31C400B5 9D849FE937ADA4ED10CB6058E6A39FD1C1C28016B6CC2C71FD2E6B012721FA9A 2CF672933D27759D17F597E4E7C82AED30D1CF310022F014F38CD798E0782772 5F31AEE678117587D48507D1377955992179CABC3646243849809245259FB9B1 E9E3A05A5F224044D9D2896A1EC300F9131D8202AE3ED4E57DF581D93EFF85FE 663D66EF74EA91DC4D0B5C30FD6582E9FF17EB88B77F6FE9B1CA51B3FD822181 8E2EF2F2A68B8EC17010648A4A09F095F4BE 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR12 %!PS-AdobeFont-1.1: CMR12 1.0 %%CreationDate: 1991 Aug 20 16:38:05 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 44 /comma put dup 48 /zero put dup 50 /two put dup 55 /seven put dup 65 /A put dup 72 /H put dup 74 /J put dup 78 /N put dup 97 /a put dup 99 /c put dup 101 /e put dup 103 /g put dup 105 /i put dup 107 /k put dup 108 /l put dup 110 /n put dup 111 /o put dup 115 /s put dup 116 /t put dup 117 /u put dup 121 /y put readonly def /FontBBox{-34 -251 988 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E 59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F 45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE 96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D 9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB 377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A 0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03 5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4 ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15 FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CD89EA365D66 6597888FBEE7697D11D08748495F916CC8107219792EB77D01AA17CC79449D14 47EC032E14BA2215A0673BEBD61022E800799D7ACA3115C127F9A96373EEA973 982947DDABD95C1C8160AD851C9E89DCCEDB6DFE78E03E60311B1D821246F1A6 51746646ACA74D229CBD41A9D658C0F767FBACE5865A897D64AD7A557256B45A BA1EB5A233BBD3B9424720350F4CB77AB8D4CB521E172F3BFD2134E7D3D8E8E7 DC9B0FB0D8B9E0C3AED068CF51286176C72D5D74E0CA523B177C2A252395105A 3E7B720DBB036341A219F94FB72D4CF59A0D9E40E55252CB65C4B1BA941A0440 4FF1014B8091DA0CB7C5C7300C32DC4C925F4583367FEE114573B06511E96CD2 EA0A3A259F4853D53C388BAB4DF1ECB93216C822B377A96EC730567C9579B87E 7FA2F502000215BBB38B6EA483AA730779363C9E27913E6836E4896F7C402FC5 A516A6FDCBF041E3E8760F7A1F8FE780CCA6973CB56904B5D4DB45915A014157 69AE15637222752D2EC7C30AF8C95678BE2A6BAD0FC4C263C5A42AA790DFCDF8 7AFF2CFD6791949F6E5EBEA64ABB10A9A8D72AD6A317EA45467162885F8AC656 B87C4037B580C2ADD3E0AAC721DD5B85A5C78D32F47DA76E12A4884E0C99AE55 9456FBB935511D78AEC60C7EC8D14B55B52F79BB19D02BEF4DEB595D7A404E6B B0F77B6BB73AB8DBD2365A277A198F19F8F2F82830A36C041D52305A2973F810 28C511A65D85F68D80D89ADDD7262BC757D5494B86EF8A54F0BA4895E237399E 5CF2DC4E5C52DE98E8C4A3D647C9CF938841B4E16A615803B78A2CA5B6160927 27B7A63C6DD86BE3741B1FB9E8183459709FB6D7BE5B0B507905435310A8FFA7 5CAC53996EA0422895B5345BBCCCB7A3057687B1B98D20C400886C91B5005EB9 007BB66B1AD9EF8B5E557D64AEE21A4FFC154428BBB3DE65936E55D43597C954 34A42BD1D5390965EEC14ADC474C61D5177FB2F0C4D98CD60DAA04D2E0203FB9 EB7321E6C0210BEB669D93A12ACDC9097CE097603C25C967FBC851EB3CA5712A 49777BB79ACB618D058CEB6D9338F5B6E7B7BB300BBFB654CBDBB63A9B6FC4E7 7E9FE1EE02BA04B45BCA9378B3EF866EAAD019757F3EBB1ADB2A6E8AE938EAB1 D394B55A4C8AF0178C1B08E1A8DCDA2FAD41BA349F0EC4AD03EA15CE02C90681 41B6294E59E356A1F3A82B944174FCC0E300B7C409A35AE21E2BDA0DC7D83936 A58EB5E5146EA03E58299A2830A26FD46B90199284D0D760489C9D62F023BE79 6288092AF296C1FED0C9C8E06BF7B4673CD482E1DF6683167FBC64195F19EE2A DB7704C1FB28D4848DA511CAA3CA96CE870ACE1E5E9718996063B0E68D787142 9B6B4B026C38B4D159BF8DF941108FE6A8F7D9A98588A8CC3DD0F895331630A7 A515FF99F7D603E7157D30475DF40147813D2CA10EB7EFDF8AC8C37C70E4A82D E522FD56BD08707B1DAC93F6C9113B4D06E0D2D13F30B53828B3CCE461B04F66 82CB82D8058FBDAFB72F3FE049AA665A3A0065EA7C3EBFE7E29B6B91564A957C 01EF4FA9D4214682851B59498E22C783FF2070B9AFC8EC342795D1B56173DF75 3F544AD4AFBDB0E9647604D036C9B4FCEB86DEE7EE9A0212B667862996B1F6AC 0F6DC992FA2312865A41EFD7A693984321FA5DCC3C33D855DD848326023BAB10 CD8EF6F3834F4CE70951771A537CAD3130D641D273B9181A10D72822A57B9402 7CECC176000588054703926E73828CF04A3F1B381FA9C7D162781F2F2171D6E2 F55B710687D0C798FBACE825F7ADDF0EB20507B88BCDEC9A8A21AAFB6BDD8E03 6F4CA32199B1D7248FAE3B4647432C1F5876DEE314EAEFB2AD8F8CF9D05C7256 F91D3757D42F265003091F277FB5918E2C846A2A4A93D36F58C983CA55B402B0 E472EA0DB12E948B162E6600281B407B8C01CD2E9E53EBEF1EFC3004E59CACFA 368F812C1FDF65FAB9DA8847E3D8DAE26B1B54A4EA70EEDD87E31D4673A691D0 4486FCEA6C3D45ABC9A5C990D5E260C4E67184B013B64E806F8F9AB5127243A8 838FE935D1D7E80FA6111F590D6F06ADCC6F96909258FF0626AB06F761478BEB 1286199A8BEEBC841347A4672F735E388E31321AEF2DB7394DF5AF6CFD9FDE7F EC4D7DFB3CC1CFAD23C12C2FB29252EBAB2E3C464DBB915CAF276CF97D100870 F4897FAB65D6D580BB01910FE12DACE84F3B833ECA227E47F40AED17D6F88EA1 0D6E4CA6FF6C500D9A746147A4127437AA2D05D2649E5C593FD448A1AAF586E5 1D11A1F11EA88B7AB395F2F7CD64324519FA8D8CBB244FFDC3548CB9A097F277 FC55C5B51BB7840CFF242EE8DFCA31C726FE9A4EB258767C9E694B1D58028D16 B7A908907A84B445E51BF0EAFD9BC94D322482229CE2E84649CE88B511C8D753 C4E3A042D22846C428813B541CD6C5219248159CD7D37F5BE7C7192E65795C6F 5EA9B3CBE0155C9735233B139177EEAED225F51A116977188CDCCA2FD4B83854 02B13F7B02CE39A7782796A7FE4C99B92B3A3381E0FDF859D212710CD53EF372 7DCD58E28F794E57C0E7A48949C959AD9DA0F882AA5C5F601BAB7B69A7112A53 664CD9BF4F3034AB693F56821631991E9C58EB79069775D8FD8AC85DD5A28567 7E38DD9B3349DD49D8B392FE2E694F5D84F51FF345FD984809389DFA80E9F8B1 2858D2E53591E3A0CA5DE83D44E4A580CDC181AA47450EC34F883344967D1780 FEA5935B5AF972C00DD9D06EC1CAF5631F9DE6D0CA0010648DF6DD542FA7853E 97359EE4F2271F7750FA8B96974C0FF0B8162021CBFB1DFAB2BB80FDF58CFAA0 6B7430834A03E94C5010B46108435F23D81224ACC3B4667E7550C5E520AB4E67 2105FBA111C7D4BC9335360342C9DAB9C93C778479804AD95DFF64B213511A6C 68B9D834E216651024327339AEB58A4178BF74673A7303D345C9473469D72A59 0E6E1CF611EAFBC6E5CDE668DE201C72D2376A71138705BF3DF69A89E9DAB8DE 59ABAF0ECC80072A5C399A58906F272CCA41D87CE6D1A9E3BE9760286B69F737 530A7DB793C3152DD40E208E1C832D2B7371DAAB7BBBFFC115CF923D294074C1 4DEFDFCA3E2655239D77A795643BC87C37DFDA8C9B340ECDC7267EE07D8E2CCD 6D80CA70B9536614C7BAECF74180815CDE1BF408D6B55A9E6A1A29035811E63F 4C9C8501E54A04AF5CC68C5E9F9864C0FDD847DBE4B9F2583C16FF9707FF92F6 FC5E20B8F8379D9D4D6BD2921C3EBDA708D9A3B225E5E52F008479B13E7F7528 3DEA69F0182E047365C617646C0BF524CA5DF66BD5CC1390D174737451FB54F1 3410331BC74615DBF9502E41970E41F52D9FA929C8ED955D6694DDE771F5BFE1 61E6D33E977B8040392F44C6B5C04FEDB5A2B375E944BC8E1FA0FD66F2FAB7AC 3A33DF493F5B6C426BEA44B3BF6DCDD9D52DAF987D383A2DFF29A2E2AD78BD1E E9F038CD8308505315CDCF60A3C2FB0FF12240CAF204389AF2859090F825F468 2BB339E60CCBFAC2FDC23041C29D4AEE2F63B9E37268427F1106F594B1F694C3 90D62F1F29AE4868609B490C768D7E47F068B3F88E6D6FADBD03E1AAE12E0EDB 2BA4B91462481A00A0FB2044752E54CDEC4A5207AC41393C69D043282BC56B4C 6C3D61B66D097EF4E4B934C65EAF614592D65A4767A4FC35DE8FC8D8836A8D93 CA8F7454BC801DBD4B0067894F0169B725DF2940EC9E6495CE2A05F1B3317770 3FA7E78DFA5A454A45DEBB389603169C1997EC9EB3E68C89AB2971F9CCAEE501 772B8D49363119C02F9B6B8489775DABA809620090BA041AF35166C6138A1B5E B5DC834B96FCDFD044D2EADD49E32C17218537E99147158145C44D34B8339ABB 9BAA347DB9EF3A1AE24495C2EC0C4642B6DB239376515FE12BE2866D4E464FDD 773188A7DCC8056CDB14CD50F3A95F9E4E97E7CC95A7B911F484B388D194BE4F 31D082E0A0F206AFC430708F2E3D69D0FBE674AB3080B9B15283A052C0CF424F 25B30DF74BACFED00EDE63D6EBB41900F34D709374406C07CA61E67066113004 5D02977421FFC11407B4BD0884DB2CFA9AEF5B165C91238A5F06D7737559715B FEA124940B9F2573C74FF46467650D362496FC20CC972DB8F53FF0175CCDCFDF 7A38DA2AEAF6C9B5AB02706D25CAB4A9FB050F2FDF48EC8E445D258E8A80E9FB B26E849D5856203059B571C877E4018B4B786FE87FAD011C9C919B33DC49C686 5C156FC0E5827C143DE2A25A732BB19E5C6E1D81A8538D79E0D35744A3177355 2CA668E0F28325CE48C0A15DB3525ED7C9AE3C4DA30E697B73011C6165F60BFA 0A933231D1939C4EFD541EFFD6EAAC8F349733DE81855FE5D1BBFE30B972C61E 4E8133BF1AE5F22B12CAA3D7CA3A9E77EB0E2A8ADA6472798D40E5A09324F406 283295D7883E6671C0287CC90CD779CEC6BD2814E721E561383753A44E888E05 106B2AFA65BB8DF3040D84327BEC1AEB68E2968896A13AFF591F368FD5920B27 CB438278D8FFC6B5094789179CE56FC5024C2DA1629B6D697C72B652F503943D 08721AA7615910A426E4D733286D18B1A52BF08385F9C30A4521F39E86A525FB 78C0F453D5E03057AB61F04DDB8D0D7992C7628DFAD76B1BB2905424D187EEDE 3465AE6A03EE791AE0CD736D2689A4929782A1B1E31120C6124388A1B7B6EC12 20F0C91F2AF124C7F885B6EA0D59BE357BCC5315A0E08DF8558EC1126E2F7724 973EF64E633A70B9EA5E3745949937A1F1C35966A755DD9D348077085AC66067 58A24C72187FB8809FDE783AE2EAEFE50ED0C91493951E5565A7020931BBE14E 19E72918FFDC4446EDACB91D702F8ECF5414DC44ACA6C439A8EA4E65CBA3B85F 61698B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR17 %!PS-AdobeFont-1.1: CMR17 1.0 %%CreationDate: 1991 Aug 20 16:38:24 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR17) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR17 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 77 /M put dup 79 /O put dup 84 /T put dup 97 /a put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 114 /r put dup 115 /s put dup 117 /u put readonly def /FontBBox{-33 -250 945 749}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95 A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801 BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96 96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC 9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7 E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A 497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46 4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD 3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8 C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216 9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F 83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25 A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B 246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A 7736A960F72AC01F733A11023832CD68FB6288A5977743F781214D8FA9C0C3F7 80001321D4397771F728FD9EE57CFE7D9192B887EC883EB1505068261DC40089 7B7D2820F06515CD74513521F6397FEAB3AD3572D9A8269430E407E357422461 1785FC2782047F4C0339D79B16862D939F3A37F78E4E2174E4FBF132539CB760 207999FF86F6A3EBE48EB0A1CA635450FDEEF79EB16D853F3BF4B414A09BA127 88A5A1902F494BFA6D3D8E7D3F0F029709CA0731B0593DC0067E90CE43C1BF34 632330FCACCECC810551DF945BC1A87F34D6C6130792B0B11252714668A91D75 CAE61D1C14C261A1E04230255160AD376A3DB9F0974118C9F320B9BACDF25FCE 75630DE91BB2B98AC45FF25E784D954D324C6B7C2F219FDF778C027D7F2AF1A9 68DBCDA6F3C8A808C3F033E9153C15DE0F9C29ED968D41796534AF387558585A 92ED773B4F4D89460EA6E415A173EB349A83422DDCE9FDAC2AC2A7C948B5AC09 8DF0021E372B2EA8F708E04CB3DDECFEC915668914901CEBF0131278406CB905 56EAAEC0793612F40262D65D8C9EFE14E8EF347CDF38E07C78C50DB1144A423E 4AEC435BA081EF69278FEDC0B6FDF497FB618F6450C0224239713379C3EE5F8C D3F3290B8F622359D53043A7D3D60D59F09735892457494885E53E7C72E03128 FD7E228DE81D6D890733443672C08C3EDD17631E5B752E3C8AF27CA6FED93507 AE77BA16C75D3C858150B084A09CF578D08BC35544FEE18912D6ECCC0D53CC2A 2D22B5642BF24581A8EEB1A89B23BD445D5F9CD617ED1FB1584E3F19548784E7 B987C68B5238698DDBCB4DD48BEE721CB9E7D11CA745F8FAFD1522C0DF0F700D 46C4CC413167EF4A1435D35312B67D8D28E6C159A8ADF774756ED84BC93512E2 AB41D573ABA5478F5EE4F63215FF482EE1F2C9EA9B758402C0B0C740121C6255 1AB5DD14B049B1A331D7A45CB0E04018CFE1C638BED78947CA46050FD5CFF46A 6CA4E305F395581B03969998D796AEC7C7311CC9397328A18918FA155042D982 68D2B3A7FF3DDBA6F3DBAC98134CA7D58AB9620E783A9008D88E3186F9CF6432 FD0336253FF8F861B803B66B72BB2B5C494860BAC719F027B378629492B5A71B EAB86E0946313388FE8CBA01094AEB3FAEE236ACB537D9E873EEDFD4BDCBDCF4 0E1FD42D1135F231C5C4FFBE5A8094B9D9662976E9516F1A27A88C3FCABE1E34 3241F537B4E9CE93EBA2F00A28C3826500C9ABC3818B416AB6AFF7E19E1390C6 824133CFDA8D6CCD45E6BCDF61AB4BC0718598BB2EB11507E1A49979BD2C02FE 8361FD86AB4FEEA9D3041805E805A78C80F141CAD096E78EA6A4D9E58CCEFCCC 7D631EA98C3F1F247B15C4932EFDA7177DD038CCB06C065F744A5CD932DCF72F A376E1291645B6F32D864F9F528DE9953118BBEE68BA984252DD74B85746AC3A 0D0CF0B1F36BAF4E6B87D0154B4F6C1A9EF9219AD8AC4774861033F694404E14 4932F201DB0D6C4B257C82F6E47207B4E3E4A9977BBFD35EABFE5C7288B4B0CC 22B2636A58A0094777670FA06CFD9BA24CEAC4F8360851ED90267D1FF64810BB C0EA5E1B24697B5BF766A0CB9119207D969F790EC227F08A59F8E23F29C95389 414410F515D3765BF21D8D2ADB2DBFC27A9541DC4958DE5E01AE6D2D2718A0CF 5F0EF9468455D9EF832441651B507863AA64457ADA7AC5FAE52D3DFC129E8BC7 6000A7382B5999D9CAD8EC99416D7DD6363F408406070D44A4F65CD8CA028E62 23506C8AD02EB3A265480A6E866B57C5AC55721BA5128873A56C0834608C7ACE 8013550CB3726AF9DF8DD638AF3B2188E3019114EAA3B1F6A721EB5DFBD55CAF 4C5D45D43AC5684C3D029864EDD422AB69E8DD10E457898BDCC58D67E52A4106 D85B2B70AE2E98B2C905CB5FAB9DC6650325FE4338BD07B2CD421DEB9D53E6D5 30CE285E3251A917D3228E4ED9FD5AC763B5A8562367F609898DFF5029D6A3E7 F6CF379034CD669A8D38AB8DF774F6CDC23647AC67BD05873DE2E76F308CF9B5 D85C6EB4A618A8705BBF7C18EB8B7B3075354B66E653BB3DB06FDC2E0AA08D03 DD8B6A0547D64B9F419F132073BDCAB6D96DE7C78276422CF9197F3E5CC89BD6 9CE7A040013C30F6FBCECC1915A25A91C6ED3C7BFC45ED96A0559FCE78C346D9 95108FF8B22C989A1DCD992C0CAEDD4ADE706ADAB158BB644F555C2364FABE9A 7EB99BC42B83765E51D7A2E68D15CBE35A81F0285F2495EF5919B9681B548DF5 BABA77FECC8C6D52E36264991305A5DA4AA9FBD7EFDFBD700BECC97B26BAED27 D39821E574175471E829F7E4FC5477CDD6A924A98C6803653CFAF490153F663E 21EB76C7AF2325140930D43B8AAD8A209C3A9DA421841935BD68CDD2FE204CDD 613BC4F0353D5897E63C26802F39E322DD3A88F186D140185C513B04AC1E6582 C5B2D380E285EE35E2C6AB26C64B2FE6687BC93E64A3914F39315E916BB212EC DCD686622AD0305497DC8F7B2DCFDC05E856486D1D81A0BA4AA30245A341D678 7C171F22940AF85883A88971A89D01666D54B1FF9226C398537F17495696AA8F FC610B21565B5DFE9816026601CC00BBD9DA96C406CD2C3D1FA4D06E5C15D7F3 E326B5D2CDAC5BB4E02172F2595203065D468FB694E64DB1313C8C8AEC349A65 7E53197B51EE22052BCE631B1AF48A362193753D948433492682DB872A316FC6 AC861A17C18953D11FB8489CDE8C95BFD8F7A58BBAC75B147D616C73AC2D44B5 403756A0EF49328C1FF20ABB1B482B10D4743B427F7E917231073FDD93AC6058 EDEA284AD6C0014F68430170E41508A69E822A50C8F89635B02188633ADB010F F8308C1420ED131D760E11C9E858ECF8F09A9E1E8780CD4B04A584208DD46C2E BF4082387E6D79C5E73ECE58D8554E802BBDC7BDC5ACCF5DCD109A66C16CE352 17EF1DA7668D08C11D3535C2FF5ADDB1562DE0A6B5D1283F134F402DCB6F4EEF 937604B108D4801FBC960E16D1002A1877C3D4415CEE25B066C82F13980EFB06 5842151F3B7063DF088EA4A363E40C0F32B135BFBF9FA96C6B77F9807C16E17D 47D8075CD594FEE0EB199333AE72E2B66EFF5DCD3E557678A528CE8217F8CC09 11FFB7FCC124560D772C729C5C54F36B344944C2FC1E8F9445E32DBAF9A2C175 82E48A09495C8C253214D3654DCC7D87762607F091A13D60C3C63D0D30AC6B2C 2481C3CBAA9F52F32D91585B111F60968C14064236695F9FC2D91EF586C2028E 0A1802D6693A36572DA6404CEA68A2647A6A918E113D9047F43809537722D308 ABE3F312942A9851F8A037D56C0756EA511A3CFD96045B45AADD7F29DB71D656 0740ABEC2D2D7C831475A9FBAC190FC79284EF9EBCD5CF018F470BD1E5752F69 083C0ABD44D73A2B9AE23E18A4B2952CFD267DBA0A7E6B05A3E6C128F5A97030 5EC4D792EFEA43D4D85A4B0AB8D08A4587C1686B9E76E9373D76A74FDE54E2DA C31F8BD0036E1C249188C66C810086E68D50691E55366D28D6BF8E9A4575F428 2FEA608A78C8380C679A0E9A917E57B118B9D0CA582E547AA1FF23532D8F4F60 B9B48AD1903E831DFB926F16CD87217CE5EFA77633BB8B5234547D6261441477 2A84CFA1EB65B1F62C26410884A4A42AA81B69DC1DB27498D26EAF5F3F53F409 7094FAE1474C4B6DFF578D257E7326BD8AA2755D593B80D97D6C2983CF6D4A45 A027A14D447F294C6447F5633F002F76EBB7C0A6227E74DF52C52DFBF6E530DA 2CC3DB7C2F536AD007BEFB989EF37971646B92FD5501527FD7D4C9EB9601D777 B4B00120E5F5986619D4F4CCEB45D83F5CE235217DAD7DB31DB903ACB8C4BD00 1578116DB38E463418BA2E988C2347DAE4B1947C347CE2E1868197ACA34A28BE 518678B040460B0E660385CB35C13C6AF15A6E9F876447C03E407DC11BF78ECE 6EA33CED9F9E1349346E738E6BE4062F5D65DF60AB16ED367035D1086A802CA2 6E8D7418EB0388B405B7BD4D8F02475FE2DD52CD095BD186375BCCA99172EF2D 1EB473E557E39B969777B79D4367CAE02B5E6EB70328F9AE66C78FFB9E7935E1 39015B16643B29EC5D20288DCAEE30ABC6E8F4681C5D088D176F5BE46BE92C73 310CAAA36A94C4CA9B40E2810C27DBC5D2FAA319A8357BBC9BAE0DA999A5FC21 A5A465B92ADB6B349D61BAC2FEE670B279EB0492E6B3F8771A305A07C4BC0F20 DD1E090FD8F8009ACFA4E97E8CDB0B6C8E307E3415DA7196A0712FB4B21FB11C 922A5769032399D1E90D23B2FB0A4D2311B698EFE6A4573B7C4E3B3D96B31F05 3212D1C7972C0E5720153F3118126F357787A05C69575BC7350F47A7ED9511FA 1C90674E86E1D9BFA83C6DFA5D71CFA48B351DCC5FF116D5D317651A0DFEA06C 7C4275FFF2A6F79A3B1721F385F3A480C7DEFDF487514B8A7914010310CA10A7 0A3CC4AAB1AB308A1682D8FFA998CB235DAE6F98002185EBF9CC3B323A53B301 F190CDEC11A8 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (omake-doc.dvi) @start /Fa 190[61 65[{}1 66.4176 /CMBX8 rf /Fb 190[46 65[{}1 58.1154 /CMSL8 rf /Fc 231[52 24[{}1 58.1154 /CMSY7 rf /Fd 150[23 105[{}1 58.1154 /CMMI7 rf /Fe 134[51 51 51 51 51 51 51 51 1[51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 7[51 3[51 1[51 51 1[51 51 51 51 51 51 1[51 51 51 51 51 1[51 51 51 6[51 11[51 51 45[{}45 99.6264 /CMTT12 rf /Ff 138[62 62 4[62 62 7[62 2[62 1[62 13[62 62 3[62 8[62 1[62 1[62 18[62 46[{}14 119.552 /CMTT12 rf /Fg 170[44 44 44 44 2[44 44 7[44 44 1[44 1[44 18[44 46[{}11 83.022 /CMSLTT10 rf /Fh 134[41 47 4[39 15[36 1[44 18[67 15[65 1[65 23 23 58[{}10 83.022 /CMMI10 rf /Fi 134[40 39 55 38 45 28 34 35 1[42 42 47 68 21 38 25 25 42 38 25 38 42 38 38 42 12[59 5[62 11[58 7[25 42 42 2[42 2[42 42 42 1[25 30 25 2[34 34 27[47 51 11[{}41 83.022 /CMTI10 rf /Fj 152[42 42 86[42 1[83 9[42 3[{}5 83.022 /CMSY10 rf /Fk 133[50 59 59 81 59 62 44 44 46 59 62 56 62 93 31 59 34 31 62 56 34 51 62 50 62 54 7[85 85 116 85 86 78 62 84 1[77 84 88 106 67 2[42 88 88 70 74 86 81 80 85 6[31 56 56 56 56 56 56 56 56 56 56 1[31 37 31 87 28[93 62 62 65 11[{}67 99.6264 /CMBX12 rf /Fl 133[60 71 71 97 71 75 52 53 55 71 75 67 75 112 37 71 41 37 75 67 41 61 75 60 75 65 7[102 102 139 102 103 94 75 100 101 92 101 105 128 81 1[69 50 105 106 85 88 103 97 96 102 1[64 5[67 67 67 67 67 67 67 67 67 67 67 37 45 37 105 29[75 75 12[{}68 119.552 /CMBX12 rf /Fm 135[102 3[75 1[79 1[108 1[108 4[54 108 2[88 108 2[94 29[140 138 146 7[97 97 97 97 97 97 97 97 97 97 48[{}23 172.188 /CMBX12 rf /Fn 190[49 14[33 33 49[{}3 58.1154 /CMR7 rf /Fo 129[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 33[{}94 83.022 /CMTT10 rf /Fp 165[51 62 62 85 62 62 60 46 61 65 57 65 62 76 52 65 43 30 62 65 54 57 63 60 59 62 7[42 42 42 42 42 42 42 42 42 42 42 23 28 23 65 43[{}41 83.022 /CMSL10 rf /Fq 132[48 42 50 50 69 50 53 37 38 39 50 53 48 53 80 27 50 29 27 53 48 29 44 53 42 53 46 4[50 2[72 72 99 72 73 66 53 72 72 65 72 75 91 57 75 49 36 75 75 60 63 73 69 68 72 6[27 48 48 48 48 48 48 48 48 48 48 48 27 32 27 74 8[50 21[53 12[{}71 83.022 /CMBX10 rf /Fr 134[123 123 1[123 129 90 92 95 123 129 116 129 194 65 123 71 65 129 116 71 106 129 103 129 113 10[175 1[162 129 173 2[175 182 220 3[87 182 183 146 153 1[168 165 175 17[116 2[65 31[129 12[{}42 206.559 /CMBX12 rf /Fs 131[83 42 37 44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 23 46 42 25 37 46 37 46 42 23 1[42 23 42 23 1[62 62 85 62 62 60 46 61 65 57 65 62 76 52 65 43 30 62 65 54 57 63 60 59 62 65 39 39 65 23 23 23 42 42 42 42 42 42 42 42 42 42 42 23 28 23 65 42 32 32 23 65 1[42 1[42 23 18[69 46 46 48 11[{}92 83.022 /CMR10 rf /Ft 139[32 7[25 6[45 3[50 50[30 46[{}5 99.6264 /CMTI12 rf /Fu 134[51 3[54 38 38 3[49 54 1[27 51 1[27 1[49 1[43 1[43 1[49 18[73 3[50 1[73 6[73 9[49 4[49 1[49 3[27 44[{}21 99.6264 /CMR12 rf /Fv 138[73 1[52 51 3[73 111 36 70 1[36 73 66 40 58 73 58 1[66 12[96 4[103 1[122 77[{}18 143.462 /CMR17 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: Letter letter %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 0 0 a @beginspecial @setspecial @endspecial 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 432 2201 a Fv(The)43 b(OMak)l(e)h(user)f(guide)h(and)f(reference)i(man)l(ual)954 2566 y Fu(Jason)33 b(Hic)m(k)m(ey)-8 b(,)35 b(Aleksey)g(Nogin,)d Ft(et.)45 b(al.)1401 2807 y Fu(August)34 b(7,)e(2007)p eop end %%Page: 2 2 TeXDict begin 2 1 bop 739 282 a @beginspecial @setspecial @endspecial Fs(2)p eop end %%Page: 3 3 TeXDict begin 3 2 bop 291 282 a @beginspecial @setspecial @endspecial 907 x Fr(Con)-6 b(ten)g(ts)291 1521 y @beginspecial @setspecial @endspecial 201 x @beginspecial @setspecial @endspecial Fq(1)76 b(Guide)p @beginspecial @setspecial @endspecial 2392 w(15)291 1922 y @beginspecial @setspecial @endspecial(2)g(OMak)m(e)32 b(quic)m(kstart)i(guide)p @beginspecial @setspecial @endspecial 1637 w(17)415 2033 y @beginspecial @setspecial @endspecial Fs(2.1)84 b(Description)p @beginspecial @setspecial @endspecial 65 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)90 b(17)606 2144 y @beginspecial @setspecial @endspecial(2.1.1)k(Automatic)28 b(dep)r(endency)g (analysis)p @beginspecial @setspecial @endspecial 32 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(17)606 2254 y @beginspecial @setspecial @endspecial(2.1.2)k(Con)n (ten)n(t-based)26 b(dep)r(endency)i(analysis)p @beginspecial @setspecial @endspecial 25 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)90 b(17)415 2365 y @beginspecial @setspecial @endspecial(2.2)84 b(F)-7 b(or)27 b(users)g(already)f(familiar)h(with)h (mak)n(e)p @beginspecial @setspecial @endspecial 47 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(18)415 2475 y @beginspecial @setspecial @endspecial(2.3)84 b(Building)28 b(a)f(small)g(C)h(program)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(18)415 2586 y @beginspecial @setspecial @endspecial(2.4)84 b(Larger)26 b(pro)5 b(jects)p @beginspecial @setspecial @endspecial 54 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(20)415 2697 y @beginspecial @setspecial @endspecial(2.5)84 b(Sub)r (directories)p @beginspecial @setspecial @endspecial 29 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(20)415 2807 y @beginspecial @setspecial @endspecial(2.6)84 b(Other)27 b(things)h(to)f(consider)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(24)415 2918 y @beginspecial @setspecial @endspecial(2.7)84 b(Building)28 b(OCaml)f(programs)p @beginspecial @setspecial @endspecial 35 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)90 b(24)415 3028 y @beginspecial @setspecial @endspecial(2.8)84 b(The)28 b(OMak)n(e\014le)e(and)i(OMak)n (ero)r(ot)d(\014les)p @beginspecial @setspecial @endspecial 80 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) 90 b(26)415 3139 y @beginspecial @setspecial @endspecial(2.9)84 b(Multiple)28 b(v)n(ersion)f(supp)r(ort)p @beginspecial @setspecial @endspecial 35 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(27)415 3249 y @beginspecial @setspecial @endspecial(2.10)42 b(Notes)p @beginspecial @setspecial @endspecial 80 w(.)g(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(27)291 3450 y @beginspecial @setspecial @endspecial Fq(3)76 b(Additional)31 b(build)g(examples)p @beginspecial @setspecial @endspecial 1544 w(29)415 3561 y @beginspecial @setspecial @endspecial Fs(3.1)84 b(OMak)n(ero)r(ot)25 b(vs.)37 b(OMak)n(e\014le)p @beginspecial @setspecial @endspecial 54 w(.)k(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(31)415 3672 y @beginspecial @setspecial @endspecial(3.2)84 b(An)28 b(example)f(C)h(pro)5 b(ject)p @beginspecial @setspecial @endspecial 62 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(31)415 3782 y @beginspecial @setspecial @endspecial(3.3)84 b(An)28 b(example)f(OCaml)g(pro)5 b(ject)p @beginspecial @setspecial @endspecial 57 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(33)415 3893 y @beginspecial @setspecial @endspecial(3.4)84 b(Handling)28 b(new)f(languages)p @beginspecial @setspecial @endspecial 51 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(35)606 4003 y @beginspecial @setspecial @endspecial(3.4.1)k(De\014ning)28 b(a)f(default)h (compilation)f(rule)p @beginspecial @setspecial @endspecial 42 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(36)606 4114 y @beginspecial @setspecial @endspecial(3.4.2)k (De\014ning)28 b(a)f(rule)g(for)g(linking)p @beginspecial @setspecial @endspecial 49 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(36)606 4224 y @beginspecial @setspecial @endspecial(3.4.3)k(Dep)r(endency)28 b(scanning)p @beginspecial @setspecial @endspecial 76 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(37)606 4335 y @beginspecial @setspecial @endspecial(3.4.4)k(Pulling) 27 b(it)h(all)f(together)p @beginspecial @setspecial @endspecial 74 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(39)606 4446 y @beginspecial @setspecial @endspecial(3.4.5)k(Finishing)27 b(up)p @beginspecial @setspecial @endspecial 82 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(41)415 4556 y @beginspecial @setspecial @endspecial(3.5)84 b(Collapsing)26 b(the)i(hierarc)n(h)n(y)-7 b(,)26 b(.SUBDIRS)j(b)r(o)r (dies)p @beginspecial @setspecial @endspecial 64 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(41)606 4667 y @beginspecial @setspecial @endspecial(3.5.1)k(Using)27 b(glob)g(patterns)p @beginspecial @setspecial @endspecial 81 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)90 b(42)606 4777 y @beginspecial @setspecial @endspecial(3.5.2)k(Simpli\014ed)28 b(sub-con\014gurations)p @beginspecial @setspecial @endspecial 68 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(42)606 4888 y @beginspecial @setspecial @endspecial(3.5.3)k(Computing)27 b(the)h(sub)r(directory)f(list)p @beginspecial @setspecial @endspecial 79 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)90 b(43)606 4998 y @beginspecial @setspecial @endspecial(3.5.4)k(T) -7 b(emp)r(orary)26 b(directories)p @beginspecial @setspecial @endspecial 57 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(44)1702 5208 y(3)p eop end %%Page: 4 4 TeXDict begin 4 3 bop 739 282 a @beginspecial @setspecial @endspecial Fs(4)2351 b Fp(CONTENTS)739 515 y @beginspecial @setspecial @endspecial Fq(4)76 b(OMak)m(e)33 b(concepts)f(and)g(syn)m (tax)p @beginspecial @setspecial @endspecial 1468 w(47)863 616 y @beginspecial @setspecial @endspecial Fs(4.1)84 b(V)-7 b(ariables)p @beginspecial @setspecial @endspecial 82 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(47)863 717 y @beginspecial @setspecial @endspecial(4.2)84 b(Adding)28 b(to)g(a)f(v)-5 b(ariable)26 b(de\014nition)p @beginspecial @setspecial @endspecial 75 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(48)863 818 y @beginspecial @setspecial @endspecial(4.3)84 b(Arra)n(ys)p @beginspecial @setspecial @endspecial 42 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(48)863 918 y @beginspecial @setspecial @endspecial(4.4)84 b(Sp)r(ecial)28 b(c)n(haracters)d(and)j(quoting)p @beginspecial @setspecial @endspecial 75 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(48)863 1019 y @beginspecial @setspecial @endspecial(4.5)84 b(F)-7 b(unction)28 b(de\014nitions)p @beginspecial @setspecial @endspecial 82 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(49)863 1120 y @beginspecial @setspecial @endspecial(4.6)84 b(Commen)n(ts)p @beginspecial @setspecial @endspecial 30 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(50)863 1221 y @beginspecial @setspecial @endspecial(4.7)84 b(File)28 b(inclusion)p @beginspecial @setspecial @endspecial 61 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)90 b(50)863 1321 y @beginspecial @setspecial @endspecial(4.8)84 b(Scoping,)27 b(sections)p @beginspecial @setspecial @endspecial 59 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)90 b(50)863 1422 y @beginspecial @setspecial @endspecial(4.9)84 b(Conditionals)p @beginspecial @setspecial @endspecial 23 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(52)863 1523 y @beginspecial @setspecial @endspecial(4.10)42 b(Matc)n(hing)p @beginspecial @setspecial @endspecial 74 w(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(52)863 1624 y @beginspecial @setspecial @endspecial(4.11)42 b(Ob)5 b(jects)p @beginspecial @setspecial @endspecial 71 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(54)863 1724 y @beginspecial @setspecial @endspecial(4.12)42 b(Classes)p @beginspecial @setspecial @endspecial 26 w(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(54)863 1825 y @beginspecial @setspecial @endspecial(4.13)42 b(Inheritance)p @beginspecial @setspecial @endspecial 72 w(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(55)863 1926 y @beginspecial @setspecial @endspecial(4.14)42 b(static.)p @beginspecial @setspecial @endspecial 65 w(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(55)1054 2027 y @beginspecial @setspecial @endspecial(4.14.1)52 b(.ST)-7 b(A)g(TIC)p @beginspecial @setspecial @endspecial 81 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(56)1320 2127 y @beginspecial @setspecial @endspecial(4.14.1.1)61 b(.MEMO)p @beginspecial @setspecial @endspecial 30 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)90 b(57)1320 2228 y @beginspecial @setspecial @endspecial(4.14.1.2)61 b(:k)n(ey:)p @beginspecial @setspecial @endspecial 28 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(57)863 2329 y @beginspecial @setspecial @endspecial(4.15)42 b(Constan)n(ts)p @beginspecial @setspecial @endspecial 52 w(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(59)739 2513 y @beginspecial @setspecial @endspecial Fq(5)76 b(V)-8 b(ariables)32 b(and)g(Naming)p @beginspecial @setspecial @endspecial 1716 w(63)863 2614 y @beginspecial @setspecial @endspecial Fs(5.1)84 b(priv)-5 b(ate.)p @beginspecial @setspecial @endspecial 76 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(63)863 2715 y @beginspecial @setspecial @endspecial(5.2)84 b(this.)p @beginspecial @setspecial @endspecial 65 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)90 b(64)863 2816 y @beginspecial @setspecial @endspecial(5.3)84 b(global.)p @beginspecial @setspecial @endspecial 46 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)90 b(65)863 2917 y @beginspecial @setspecial @endspecial(5.4)84 b(protected.)p @beginspecial @setspecial @endspecial 51 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)90 b(66)863 3017 y @beginspecial @setspecial @endspecial(5.5)84 b(public.)p @beginspecial @setspecial @endspecial 43 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)90 b(66)863 3118 y @beginspecial @setspecial @endspecial(5.6)84 b(Quali\014ed)28 b(blo)r(c)n(ks)p @beginspecial @setspecial @endspecial 29 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)90 b(66)863 3219 y @beginspecial @setspecial @endspecial(5.7)84 b(declare)p @beginspecial @setspecial @endspecial 32 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)90 b(67)739 3403 y @beginspecial @setspecial @endspecial Fq(6)76 b(Expressions)31 b(and)h(v)-5 b(alues)p @beginspecial @setspecial @endspecial 1686 w(69)863 3504 y @beginspecial @setspecial @endspecial Fs(6.1)84 b(Dynamic)28 b(scoping)p @beginspecial @setspecial @endspecial 53 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(69)863 3605 y @beginspecial @setspecial @endspecial(6.2)84 b(F)-7 b(unctional)28 b(ev)-5 b(aluation)p @beginspecial @setspecial @endspecial 84 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(71)863 3706 y @beginspecial @setspecial @endspecial(6.3)84 b(Exp)r(orting)27 b(the)h(en)n(vironmen)n(t)p @beginspecial @setspecial @endspecial 74 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(72)1054 3806 y @beginspecial @setspecial @endspecial(6.3.1)k(Exp)r(ort)27 b(regions)p @beginspecial @setspecial @endspecial 63 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 90 b(73)1054 3907 y @beginspecial @setspecial @endspecial(6.3.2)k (Returning)27 b(v)-5 b(alues)28 b(from)f(exp)r(orted)g(regions)p @beginspecial @setspecial @endspecial 67 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)90 b(73)863 4008 y @beginspecial @setspecial @endspecial(6.4)84 b(Ob)5 b(jects)p @beginspecial @setspecial @endspecial 71 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)90 b(75)863 4109 y @beginspecial @setspecial @endspecial(6.5)84 b(Field)28 b(and)g(metho)r(d)g(calls)p @beginspecial @setspecial @endspecial 35 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(76)863 4209 y @beginspecial @setspecial @endspecial(6.6)84 b(Metho)r(d)28 b(o)n(v)n(erride)p @beginspecial @setspecial @endspecial 74 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(76)863 4310 y @beginspecial @setspecial @endspecial(6.7)84 b(Sup)r(er)28 b(calls)p @beginspecial @setspecial @endspecial 85 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(77)739 4495 y @beginspecial @setspecial @endspecial Fq(7)76 b(Additional)31 b(language)h(examples)p @beginspecial @setspecial @endspecial 1392 w(79)863 4595 y @beginspecial @setspecial @endspecial Fs(7.1)84 b(Strings)27 b(and)h(arra)n(ys)p @beginspecial @setspecial @endspecial 70 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)90 b(79)863 4696 y @beginspecial @setspecial @endspecial(7.2)84 b(Quoted)28 b(strings)p @beginspecial @setspecial @endspecial 72 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 90 b(80)863 4797 y @beginspecial @setspecial @endspecial(7.3)84 b(Files)28 b(and)f(directories)p @beginspecial @setspecial @endspecial 68 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)90 b(81)863 4898 y @beginspecial @setspecial @endspecial(7.4)84 b(Iteration,)27 b(mapping,)h(and)f(foreac)n(h)p @beginspecial @setspecial @endspecial 38 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)90 b(82)863 4998 y @beginspecial @setspecial @endspecial(7.5)84 b(Lazy)27 b(expressions)p @beginspecial @setspecial @endspecial 65 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)90 b(83)p eop end %%Page: 5 5 TeXDict begin 5 4 bop 291 282 a @beginspecial @setspecial @endspecial Fp(CONTENTS)2350 b Fs(5)606 515 y @beginspecial @setspecial @endspecial(7.5.1)94 b(A)28 b(larger)d(example)j(of)f(lazy) g(expressions)p @beginspecial @setspecial @endspecial 51 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(84)415 616 y @beginspecial @setspecial @endspecial(7.6)84 b(Scoping)27 b(and)h(exp)r(orts)p @beginspecial @setspecial @endspecial 63 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(86)415 716 y @beginspecial @setspecial @endspecial(7.7)84 b(Shell)28 b(aliases)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(87)415 816 y @beginspecial @setspecial @endspecial(7.8)84 b(Input/output)28 b(redirection)f(on)g(the)h(c)n(heap)p @beginspecial @setspecial @endspecial 55 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(88)291 1000 y @beginspecial @setspecial @endspecial Fq(8)76 b(Rules)p @beginspecial @setspecial @endspecial 2410 w(89)415 1101 y @beginspecial @setspecial @endspecial Fs(8.1)84 b(Implicit)28 b(rules)p @beginspecial @setspecial @endspecial 62 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(90)415 1201 y @beginspecial @setspecial @endspecial(8.2)84 b(Bounded)27 b(implicit)i(rules)p @beginspecial @setspecial @endspecial 42 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(90)415 1301 y @beginspecial @setspecial @endspecial(8.3)84 b(section)p @beginspecial @setspecial @endspecial 36 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)90 b(91)415 1402 y @beginspecial @setspecial @endspecial(8.4)84 b(section)27 b(rule)p @beginspecial @setspecial @endspecial 64 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)90 b(91)415 1502 y @beginspecial @setspecial @endspecial(8.5)84 b(Sp)r(ecial)28 b(dep)r(endencies)p @beginspecial @setspecial @endspecial 46 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)90 b(91)606 1603 y @beginspecial @setspecial @endspecial(8.5.1)k (:exists:)p @beginspecial @setspecial @endspecial 31 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(91)606 1703 y @beginspecial @setspecial @endspecial(8.5.2)k(:e\013ects:)p @beginspecial @setspecial @endspecial 73 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)90 b(92)606 1803 y @beginspecial @setspecial @endspecial(8.5.3)k(:v)-5 b(alue:)p @beginspecial @setspecial @endspecial 46 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(92)415 1904 y @beginspecial @setspecial @endspecial(8.6)84 b Fo(.SCANNER)24 b Fs(rules)p @beginspecial @setspecial @endspecial 61 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(93)606 2004 y @beginspecial @setspecial @endspecial(8.6.1)k(Named)27 b(scanners,)g(and)g(the)h Fo(:scanner:)33 b Fs(dep)r(endencies)p @beginspecial @setspecial @endspecial 47 w(.)42 b(.)f(.)h(.)90 b(94)606 2104 y @beginspecial @setspecial @endspecial(8.6.2)k(Notes)p @beginspecial @setspecial @endspecial 73 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)90 b(95)415 2205 y @beginspecial @setspecial @endspecial(8.7)84 b(.DEF)-9 b(A)n(UL)i(T)p @beginspecial @setspecial @endspecial 65 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)90 b(95)415 2305 y @beginspecial @setspecial @endspecial(8.8)84 b(.SUBDIRS)p @beginspecial @setspecial @endspecial 26 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)90 b(95)415 2406 y @beginspecial @setspecial @endspecial(8.9)84 b(.INCLUDE)p @beginspecial @setspecial @endspecial 71 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(96)415 2506 y @beginspecial @setspecial @endspecial(8.10)42 b(.PHONY)p @beginspecial @setspecial @endspecial 85 w(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(96)415 2606 y @beginspecial @setspecial @endspecial(8.11)42 b(Rule)28 b(scoping)p @beginspecial @setspecial @endspecial 81 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(97)606 2707 y @beginspecial @setspecial @endspecial(8.11.1)52 b(Scoping)27 b(of)g(implicit)i(rules)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)90 b(98)606 2807 y @beginspecial @setspecial @endspecial(8.11.2)52 b(Scoping)27 b(of)34 b Fo(.SCANNER)24 b Fs(rules)p @beginspecial @setspecial @endspecial 31 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)90 b(98)606 2907 y @beginspecial @setspecial @endspecial(8.11.3)52 b(Scoping)27 b(for)g Fo(.PHONY)e Fs(targets)p @beginspecial @setspecial @endspecial 78 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) 90 b(99)415 3008 y @beginspecial @setspecial @endspecial(8.12)42 b(Running)28 b(OMak)n(e)e(from)h(a)h(sub)r(directory)p @beginspecial @setspecial @endspecial 38 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(100)606 3108 y @beginspecial @setspecial @endspecial(8.12.1)k(Phon)n(y)26 b(targets)h(in)g(a)h(sub)r(directory)p @beginspecial @setspecial @endspecial 26 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)48 b(100)606 3209 y @beginspecial @setspecial @endspecial(8.12.2)k(Hierarc)n(h)n(y)25 b(of)34 b Fo(.PHONY)26 b Fs(targets)p @beginspecial @setspecial @endspecial 34 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)48 b(101)415 3309 y @beginspecial @setspecial @endspecial(8.13)42 b(P)n(athnames)26 b(in)i(rules)p @beginspecial @setspecial @endspecial 41 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)48 b(101)291 3493 y @beginspecial @setspecial @endspecial Fq(9)76 b(Base)32 b(library)p @beginspecial @setspecial @endspecial 2088 w(103)415 3593 y @beginspecial @setspecial @endspecial Fs(9.1)84 b(Builtin)28 b(v)-5 b(ariables)p @beginspecial @setspecial @endspecial 76 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(103)415 3694 y @beginspecial @setspecial @endspecial(9.2)84 b(Logic,)27 b(Bo)r(olean)f(functions,)i(and)f(con)n(trol)g(\015o)n(w)p @beginspecial @setspecial @endspecial 45 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(104)606 3794 y @beginspecial @setspecial @endspecial(9.2.1)94 b(not)p @beginspecial @setspecial @endspecial 30 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)48 b(105)606 3894 y @beginspecial @setspecial @endspecial(9.2.2)94 b(equal)p @beginspecial @setspecial @endspecial 22 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(105)606 3995 y @beginspecial @setspecial @endspecial(9.2.3)94 b(and)p @beginspecial @setspecial @endspecial 80 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(105)606 4095 y @beginspecial @setspecial @endspecial(9.2.4)94 b(or)p @beginspecial @setspecial @endspecial 75 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(105)606 4195 y @beginspecial @setspecial @endspecial(9.2.5)94 b(if)p @beginspecial @setspecial @endspecial 37 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(106)606 4296 y @beginspecial @setspecial @endspecial(9.2.6)94 b(switc)n(h,)27 b(matc)n(h)p @beginspecial @setspecial @endspecial 34 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(106)606 4396 y @beginspecial @setspecial @endspecial(9.2.7)94 b(try)p @beginspecial @setspecial @endspecial 41 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(107)606 4497 y @beginspecial @setspecial @endspecial(9.2.8)94 b(raise)p @beginspecial @setspecial @endspecial 46 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(108)606 4597 y @beginspecial @setspecial @endspecial(9.2.9)94 b(exit)p @beginspecial @setspecial @endspecial 78 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(108)606 4697 y @beginspecial @setspecial @endspecial(9.2.10)k(de\014ned)p @beginspecial @setspecial @endspecial 85 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)48 b(108)606 4798 y @beginspecial @setspecial @endspecial(9.2.11)k(de\014ned-en)n(v)p @beginspecial @setspecial @endspecial 61 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(109)606 4898 y @beginspecial @setspecial @endspecial(9.2.12)k(geten)n (v)p @beginspecial @setspecial @endspecial 43 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(109)606 4998 y @beginspecial @setspecial @endspecial(9.2.13)k(seten)n(v)p @beginspecial @setspecial @endspecial 52 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)48 b(110)p eop end %%Page: 6 6 TeXDict begin 6 5 bop 739 282 a @beginspecial @setspecial @endspecial Fs(6)2351 b Fp(CONTENTS)1054 515 y @beginspecial @setspecial @endspecial Fs(9.2.14)52 b(unseten)n(v)p @beginspecial @setspecial @endspecial 25 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)49 b(110)1054 615 y @beginspecial @setspecial @endspecial(9.2.15)j(get-registry)p @beginspecial @setspecial @endspecial 57 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(110)1054 715 y @beginspecial @setspecial @endspecial(9.2.16)j(getv)-5 b(ar)p @beginspecial @setspecial @endspecial 54 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(111)1054 814 y @beginspecial @setspecial @endspecial(9.2.17)j(setv)-5 b(ar)p @beginspecial @setspecial @endspecial 63 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(111)863 914 y @beginspecial @setspecial @endspecial(9.3)84 b(Arra)n(ys)26 b(and)i(sequences)p @beginspecial @setspecial @endspecial 20 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(111)1054 1013 y @beginspecial @setspecial @endspecial(9.3.1)94 b(arra)n(y)p @beginspecial @setspecial @endspecial 23 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(111)1054 1113 y @beginspecial @setspecial @endspecial(9.3.2)94 b(split)p @beginspecial @setspecial @endspecial 58 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(112)1054 1213 y @beginspecial @setspecial @endspecial(9.3.3)94 b(concat)p @beginspecial @setspecial @endspecial 43 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(112)1054 1312 y @beginspecial @setspecial @endspecial(9.3.4)94 b(length)p @beginspecial @setspecial @endspecial 53 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(112)1054 1412 y @beginspecial @setspecial @endspecial(9.3.5)94 b(n)n(th)p @beginspecial @setspecial @endspecial 28 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(112)1054 1512 y @beginspecial @setspecial @endspecial(9.3.6)94 b(replace-n)n(th)p @beginspecial @setspecial @endspecial 68 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(113)1054 1611 y @beginspecial @setspecial @endspecial(9.3.7)94 b(n)n(th-hd)p @beginspecial @setspecial @endspecial 37 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(113)1054 1711 y @beginspecial @setspecial @endspecial(9.3.8)94 b(n)n(th-tl)p @beginspecial @setspecial @endspecial 74 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(113)1054 1810 y @beginspecial @setspecial @endspecial(9.3.9)94 b(subrange)p @beginspecial @setspecial @endspecial 83 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(113)1054 1910 y @beginspecial @setspecial @endspecial(9.3.10)j(rev)p @beginspecial @setspecial @endspecial 36 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(114)1054 2010 y @beginspecial @setspecial @endspecial(9.3.11)j(join)p @beginspecial @setspecial @endspecial 79 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(114)1054 2109 y @beginspecial @setspecial @endspecial(9.3.12)j(string)p @beginspecial @setspecial @endspecial 70 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(114)1054 2209 y @beginspecial @setspecial @endspecial(9.3.13)j (string-length)p @beginspecial @setspecial @endspecial 74 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(114)1054 2309 y @beginspecial @setspecial @endspecial(9.3.14)j(string-escap)r(ed,)19 b(o)r(caml-escap)r(ed,)g(h)n(tml-escap)r(ed,)h(h)n(tml-pre-escap)r(ed,) 1320 2408 y(c-escap)r(ed,)27 b(id-escap)r(ed)p @beginspecial @setspecial @endspecial 24 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(114)1054 2508 y @beginspecial @setspecial @endspecial(9.3.15)j(deco)r(de-uri,)27 b(enco)r(de-uri)p @beginspecial @setspecial @endspecial 56 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)49 b(115)1054 2607 y @beginspecial @setspecial @endspecial(9.3.16)j(quote)p @beginspecial @setspecial @endspecial 78 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(115)1054 2707 y @beginspecial @setspecial @endspecial(9.3.17)j (quote-argv)p @beginspecial @setspecial @endspecial 83 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(115)1054 2807 y @beginspecial @setspecial @endspecial(9.3.18)j(h)n(tml-string)p @beginspecial @setspecial @endspecial 68 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(116)1054 2906 y @beginspecial @setspecial @endspecial(9.3.19)j(addsu\016x)p @beginspecial @setspecial @endspecial 82 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(116)1054 3006 y @beginspecial @setspecial @endspecial(9.3.20)j (mapsu\016x)p @beginspecial @setspecial @endspecial 59 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(116)1054 3106 y @beginspecial @setspecial @endspecial(9.3.21)j(addsu\016xes)p @beginspecial @setspecial @endspecial 77 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(116)1054 3205 y @beginspecial @setspecial @endspecial(9.3.22)j(remo)n(v)n(epre\014x)p @beginspecial @setspecial @endspecial 73 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(117)1054 3305 y @beginspecial @setspecial @endspecial(9.3.23)j(remo)n (v)n(esu\016x)p @beginspecial @setspecial @endspecial 23 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(117)1054 3404 y @beginspecial @setspecial @endspecial(9.3.24)j(replacesu\016xes) p @beginspecial @setspecial @endspecial 20 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)49 b(117)1054 3504 y @beginspecial @setspecial @endspecial(9.3.25)j (addpre\014x)p @beginspecial @setspecial @endspecial 68 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(117)1054 3604 y @beginspecial @setspecial @endspecial(9.3.26)j(mappre\014x)p @beginspecial @setspecial @endspecial 45 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)49 b(117)1054 3703 y @beginspecial @setspecial @endspecial(9.3.27)j(add-wrapp)r(er)p @beginspecial @setspecial @endspecial 76 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(118)1054 3803 y @beginspecial @setspecial @endspecial(9.3.28)j(set)p @beginspecial @setspecial @endspecial 48 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(118)1054 3903 y @beginspecial @setspecial @endspecial(9.3.29)j(mem)p @beginspecial @setspecial @endspecial 40 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(118)1054 4002 y @beginspecial @setspecial @endspecial(9.3.30)j(in)n(tersection)p @beginspecial @setspecial @endspecial 54 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(118)1054 4102 y @beginspecial @setspecial @endspecial(9.3.31)j(in)n (tersects)p @beginspecial @setspecial @endspecial 67 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(119)1054 4201 y @beginspecial @setspecial @endspecial(9.3.32)j(set-di\013)p @beginspecial @setspecial @endspecial 32 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)49 b(119)1054 4301 y @beginspecial @setspecial @endspecial(9.3.33)j(\014lter)p @beginspecial @setspecial @endspecial 44 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(119)1054 4401 y @beginspecial @setspecial @endspecial(9.3.34)j(\014lter-out)p @beginspecial @setspecial @endspecial 25 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(119)1054 4500 y @beginspecial @setspecial @endspecial(9.3.35)j (capitalize)p @beginspecial @setspecial @endspecial 66 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(120)1054 4600 y @beginspecial @setspecial @endspecial(9.3.36)j(uncapitalize)p @beginspecial @setspecial @endspecial 39 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(120)1054 4700 y @beginspecial @setspecial @endspecial(9.3.37)j(upp)r(ercase)p @beginspecial @setspecial @endspecial 49 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(120)1054 4799 y @beginspecial @setspecial @endspecial(9.3.38)j(lo)n (w)n(ercase)p @beginspecial @setspecial @endspecial 68 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(120)1054 4899 y @beginspecial @setspecial @endspecial(9.3.39)j(system)p @beginspecial @setspecial @endspecial 31 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)49 b(120)1054 4998 y @beginspecial @setspecial @endspecial(9.3.40)j(shell)p @beginspecial @setspecial @endspecial 53 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(121)p eop end %%Page: 7 7 TeXDict begin 7 6 bop 291 282 a @beginspecial @setspecial @endspecial Fp(CONTENTS)2350 b Fs(7)606 515 y @beginspecial @setspecial @endspecial(9.3.41)52 b(exp)r(ort)p @beginspecial @setspecial @endspecial 43 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)48 b(121)606 615 y @beginspecial @setspecial @endspecial(9.3.42)k (while)p @beginspecial @setspecial @endspecial 25 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(121)606 715 y @beginspecial @setspecial @endspecial(9.3.43)k(break)p @beginspecial @setspecial @endspecial 77 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)48 b(122)606 815 y @beginspecial @setspecial @endspecial(9.3.44)k(random,)26 b(random-init)p @beginspecial @setspecial @endspecial 38 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(123)415 915 y @beginspecial @setspecial @endspecial(9.4)84 b(Arithmetic)p @beginspecial @setspecial @endspecial 22 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(123)606 1015 y @beginspecial @setspecial @endspecial(9.4.1)94 b(in)n(t)p @beginspecial @setspecial @endspecial 51 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(123)606 1115 y @beginspecial @setspecial @endspecial(9.4.2)94 b(\015oat)p @beginspecial @setspecial @endspecial 52 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(123)606 1215 y @beginspecial @setspecial @endspecial(9.4.3)94 b(Basic)26 b(arithmetic)p @beginspecial @setspecial @endspecial 72 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(123)606 1315 y @beginspecial @setspecial @endspecial(9.4.4)94 b(Comparisons)p @beginspecial @setspecial @endspecial 68 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(124)415 1415 y @beginspecial @setspecial @endspecial(9.5)84 b(First-class)26 b(functions)p @beginspecial @setspecial @endspecial 76 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(124)606 1515 y @beginspecial @setspecial @endspecial(9.5.1)94 b(fun)p @beginspecial @setspecial @endspecial 33 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(124)606 1615 y @beginspecial @setspecial @endspecial(9.5.2)94 b(apply)p @beginspecial @setspecial @endspecial 78 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(125)606 1715 y @beginspecial @setspecial @endspecial(9.5.3)94 b(apply)n(a)p @beginspecial @setspecial @endspecial 38 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(125)606 1815 y @beginspecial @setspecial @endspecial(9.5.4)94 b(create-map,)26 b(create-lazy-map)p @beginspecial @setspecial @endspecial 25 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)48 b(125)415 1915 y @beginspecial @setspecial @endspecial(9.6)84 b(Iteration)27 b(and)g(mapping)p @beginspecial @setspecial @endspecial 49 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(126)606 2015 y @beginspecial @setspecial @endspecial(9.6.1)94 b(foreac)n(h)p @beginspecial @setspecial @endspecial 83 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(126)415 2115 y @beginspecial @setspecial @endspecial(9.7)84 b(Bo)r(olean)26 b(tests)p @beginspecial @setspecial @endspecial 59 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(126)606 2215 y @beginspecial @setspecial @endspecial(9.7.1)94 b(sequence-forall)p @beginspecial @setspecial @endspecial 69 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(126)606 2315 y @beginspecial @setspecial @endspecial(9.7.2)94 b(sequence-exists)p @beginspecial @setspecial @endspecial 55 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) 48 b(127)606 2415 y @beginspecial @setspecial @endspecial(9.7.3)94 b(sequence-sort)p @beginspecial @setspecial @endspecial 52 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(127)606 2515 y @beginspecial @setspecial @endspecial(9.7.4)94 b(compare)p @beginspecial @setspecial @endspecial 37 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)48 b(127)291 2699 y @beginspecial @setspecial @endspecial Fq(10)28 b(File,)i(I/O)i(and)g(system)f(op)s(erations)p @beginspecial @setspecial @endspecial 1256 w(129)415 2799 y @beginspecial @setspecial @endspecial Fs(10.1)42 b(File)28 b(names)p @beginspecial @setspecial @endspecial 24 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(129)606 2899 y @beginspecial @setspecial @endspecial(10.1.1)k (\014le,)28 b(dir)p @beginspecial @setspecial @endspecial 84 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(129)606 2999 y @beginspecial @setspecial @endspecial(10.1.2)k(tmp\014le)p @beginspecial @setspecial @endspecial 26 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)48 b(130)606 3099 y @beginspecial @setspecial @endspecial(10.1.3)k(in)p @beginspecial @setspecial @endspecial 81 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) 48 b(130)606 3199 y @beginspecial @setspecial @endspecial(10.1.4)k (basename)p @beginspecial @setspecial @endspecial 56 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(130)606 3299 y @beginspecial @setspecial @endspecial(10.1.5)k(dirname)p @beginspecial @setspecial @endspecial 47 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)48 b(131)606 3399 y @beginspecial @setspecial @endspecial(10.1.6)k(ro)r(otname)p @beginspecial @setspecial @endspecial 63 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(131)606 3499 y @beginspecial @setspecial @endspecial(10.1.7)k(dirof)p @beginspecial @setspecial @endspecial 45 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)48 b(131)606 3599 y @beginspecial @setspecial @endspecial(10.1.8)k(fullname)p @beginspecial @setspecial @endspecial 32 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) 48 b(131)606 3699 y @beginspecial @setspecial @endspecial(10.1.9)k (absname)p @beginspecial @setspecial @endspecial 28 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(131)606 3799 y @beginspecial @setspecial @endspecial(10.1.10)10 b(homename)p @beginspecial @setspecial @endspecial 84 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)48 b(132)606 3899 y @beginspecial @setspecial @endspecial(10.1.11)10 b(su\016x)p @beginspecial @setspecial @endspecial 22 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(132)415 3999 y @beginspecial @setspecial @endspecial(10.2)42 b(P)n(ath)27 b(searc)n(h)p @beginspecial @setspecial @endspecial 52 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(132)606 4099 y @beginspecial @setspecial @endspecial(10.2.1)k(whic)n (h)p @beginspecial @setspecial @endspecial 69 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(132)606 4198 y @beginspecial @setspecial @endspecial(10.2.2)k(where)p @beginspecial @setspecial @endspecial 66 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)48 b(132)606 4298 y @beginspecial @setspecial @endspecial(10.2.3)k(rehash)p @beginspecial @setspecial @endspecial 42 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)48 b(132)606 4398 y @beginspecial @setspecial @endspecial(10.2.4)k (exists-in-path)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(133)606 4498 y @beginspecial @setspecial @endspecial(10.2.5)k(digest,)27 b(digest-optional)p @beginspecial @setspecial @endspecial 60 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)48 b(133)606 4598 y @beginspecial @setspecial @endspecial(10.2.6)k(\014nd-in-path,)27 b(\014nd-in-path-optional)p @beginspecial @setspecial @endspecial 80 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(133)606 4698 y @beginspecial @setspecial @endspecial(10.2.7)k(digest-in-path,)27 b (digest-in-path-optional)p @beginspecial @setspecial @endspecial 59 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(133)415 4798 y @beginspecial @setspecial @endspecial(10.3)42 b(File)28 b(stats)p @beginspecial @setspecial @endspecial 79 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(134)606 4898 y @beginspecial @setspecial @endspecial(10.3.1)k (\014le-exists,)27 b(target-exists,)f(target-is-prop)r(er)p @beginspecial @setspecial @endspecial 54 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)48 b(134)606 4998 y @beginspecial @setspecial @endspecial(10.3.2)k(stat-reset)p @beginspecial @setspecial @endspecial 69 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(134)p eop end %%Page: 8 8 TeXDict begin 8 7 bop 739 282 a @beginspecial @setspecial @endspecial Fs(8)2351 b Fp(CONTENTS)1054 515 y @beginspecial @setspecial @endspecial Fs(10.3.3)52 b(\014lter-exists,)27 b(\014lter-targets,)f(\014lter-prop)r(er-targets)p @beginspecial @setspecial @endspecial 33 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)49 b(134)1054 615 y @beginspecial @setspecial @endspecial(10.3.4)j (\014nd-targets-in-path,)26 b(\014nd-targets-in-path-optional)p @beginspecial @setspecial @endspecial 40 w(.)41 b(.)h(.)g(.)f(.)49 b(135)1054 715 y @beginspecial @setspecial @endspecial(10.3.5)j (\014nd-o)r(caml-targets-in-path-optional)p @beginspecial @setspecial @endspecial 37 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)49 b(136)1054 814 y @beginspecial @setspecial @endspecial(10.3.6)j(\014le-sort)p @beginspecial @setspecial @endspecial 70 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(136)1320 914 y @beginspecial @setspecial @endspecial(10.3.6.1)61 b(sort)27 b(rule)p @beginspecial @setspecial @endspecial 85 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)49 b(137)1054 1013 y @beginspecial @setspecial @endspecial(10.3.7)j(\014le-c)n(hec)n(k-sort)p @beginspecial @setspecial @endspecial 38 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)49 b(137)863 1113 y @beginspecial @setspecial @endspecial(10.4)42 b(Globbing)28 b(and)f(\014le)h(listings)p @beginspecial @setspecial @endspecial 22 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(137)1054 1213 y @beginspecial @setspecial @endspecial(10.4.1)j(glob)p @beginspecial @setspecial @endspecial 62 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(139)1054 1312 y @beginspecial @setspecial @endspecial(10.4.2)j(ls)p @beginspecial @setspecial @endspecial 29 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)49 b(140)1054 1412 y @beginspecial @setspecial @endspecial(10.4.3)j (sub)r(dirs)p @beginspecial @setspecial @endspecial 82 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(140)863 1512 y @beginspecial @setspecial @endspecial(10.5)42 b(Filesystem)28 b(op)r(erations)p @beginspecial @setspecial @endspecial 77 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(140)1054 1611 y @beginspecial @setspecial @endspecial(10.5.1)j(mkdir)p @beginspecial @setspecial @endspecial 64 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)49 b(140)1054 1711 y @beginspecial @setspecial @endspecial(10.5.2)j(Stat)p @beginspecial @setspecial @endspecial 63 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(141)1054 1810 y @beginspecial @setspecial @endspecial(10.5.3)j(stat,)28 b(lstat)p @beginspecial @setspecial @endspecial 56 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(141)1054 1910 y @beginspecial @setspecial @endspecial(10.5.4)j (unlink)p @beginspecial @setspecial @endspecial 51 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(142)1054 2010 y @beginspecial @setspecial @endspecial(10.5.5)j(rename)p @beginspecial @setspecial @endspecial 80 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)49 b(142)1054 2109 y @beginspecial @setspecial @endspecial(10.5.6)j(link)p @beginspecial @setspecial @endspecial 79 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(143)1054 2209 y @beginspecial @setspecial @endspecial(10.5.7)j (symlink)p @beginspecial @setspecial @endspecial 62 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(143)1054 2309 y @beginspecial @setspecial @endspecial(10.5.8)j(readlink)p @beginspecial @setspecial @endspecial 50 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)49 b(143)1054 2408 y @beginspecial @setspecial @endspecial(10.5.9)j(c)n(hmo)r(d)p @beginspecial @setspecial @endspecial 39 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(143)1054 2508 y @beginspecial @setspecial @endspecial(10.5.10)10 b(c)n(ho)n(wn)p @beginspecial @setspecial @endspecial 52 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(144)1054 2607 y @beginspecial @setspecial @endspecial(10.5.11)10 b(truncate)p @beginspecial @setspecial @endspecial 39 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(144)1054 2707 y @beginspecial @setspecial @endspecial(10.5.12)10 b(umask)p @beginspecial @setspecial @endspecial 45 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(144)863 2807 y @beginspecial @setspecial @endspecial(10.6)42 b(vmoun)n(t)p @beginspecial @setspecial @endspecial 74 w(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(144)1054 2906 y @beginspecial @setspecial @endspecial(10.6.1)j(vmoun) n(t)p @beginspecial @setspecial @endspecial 67 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(144)1054 3006 y @beginspecial @setspecial @endspecial(10.6.2)j(add-pro)5 b(ject-directories)p @beginspecial @setspecial @endspecial 37 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)49 b(145)1054 3106 y @beginspecial @setspecial @endspecial(10.6.3)j(remo)n(v)n(e-pro)5 b(ject-directories)p @beginspecial @setspecial @endspecial 42 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(145)863 3205 y @beginspecial @setspecial @endspecial(10.7)42 b(File)28 b(predicates)p @beginspecial @setspecial @endspecial 79 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(145)1054 3305 y @beginspecial @setspecial @endspecial(10.7.1)j(test)p @beginspecial @setspecial @endspecial 81 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(145)1054 3404 y @beginspecial @setspecial @endspecial(10.7.2)j(\014nd)p @beginspecial @setspecial @endspecial 77 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(147)863 3504 y @beginspecial @setspecial @endspecial(10.8)42 b(IO)28 b(functions)p @beginspecial @setspecial @endspecial 28 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(148)1054 3604 y @beginspecial @setspecial @endspecial(10.8.1)j(Standard)27 b(c)n(hannels)p @beginspecial @setspecial @endspecial 63 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(148)1054 3703 y @beginspecial @setspecial @endspecial(10.8.2)j(op)r (en-in-string)p @beginspecial @setspecial @endspecial 30 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(149)1054 3803 y @beginspecial @setspecial @endspecial(10.8.3)j(op)r(en-out-string,)26 b(out-con)n(ten)n(ts)p @beginspecial @setspecial @endspecial 63 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(149)1054 3903 y @beginspecial @setspecial @endspecial(10.8.4)j (fop)r(en)p @beginspecial @setspecial @endspecial 81 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(149)1054 4002 y @beginspecial @setspecial @endspecial(10.8.5)j(close)p @beginspecial @setspecial @endspecial 43 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(150)1054 4102 y @beginspecial @setspecial @endspecial(10.8.6)j(read,)27 b(input-line)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(150)1054 4201 y @beginspecial @setspecial @endspecial(10.8.7)j (write)p @beginspecial @setspecial @endspecial 30 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(150)1054 4301 y @beginspecial @setspecial @endspecial(10.8.8)j(lseek)p @beginspecial @setspecial @endspecial 41 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(150)1054 4401 y @beginspecial @setspecial @endspecial(10.8.9)j(rewind)p @beginspecial @setspecial @endspecial 34 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)49 b(151)1054 4500 y @beginspecial @setspecial @endspecial(10.8.10) 10 b(tell)p @beginspecial @setspecial @endspecial 35 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(151)1054 4600 y @beginspecial @setspecial @endspecial(10.8.11)10 b(\015ush)p @beginspecial @setspecial @endspecial 44 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(151)1054 4700 y @beginspecial @setspecial @endspecial(10.8.12)10 b(c)n(hannel-name)p @beginspecial @setspecial @endspecial 40 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(151)1054 4799 y @beginspecial @setspecial @endspecial(10.8.13)10 b(dup)p @beginspecial @setspecial @endspecial 77 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(151)1054 4899 y @beginspecial @setspecial @endspecial(10.8.14)10 b(dup2)p @beginspecial @setspecial @endspecial 35 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(152)1054 4998 y @beginspecial @setspecial @endspecial(10.8.15)10 b(set-non)n(blo)r(c)n(k)p @beginspecial @setspecial @endspecial 83 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(152)p eop end %%Page: 9 9 TeXDict begin 9 8 bop 291 282 a @beginspecial @setspecial @endspecial Fp(CONTENTS)2350 b Fs(9)606 515 y @beginspecial @setspecial @endspecial(10.8.16)10 b(set-close-on-exec-mo)r(de)p @beginspecial @setspecial @endspecial 35 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(152)606 615 y @beginspecial @setspecial @endspecial(10.8.17)10 b(pip)r(e)p @beginspecial @setspecial @endspecial 60 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(152)606 715 y @beginspecial @setspecial @endspecial(10.8.18)10 b(mk\014fo)p @beginspecial @setspecial @endspecial 53 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(152)606 814 y @beginspecial @setspecial @endspecial(10.8.19)10 b(select)p @beginspecial @setspecial @endspecial 80 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(153)606 914 y @beginspecial @setspecial @endspecial(10.8.20)10 b(lo)r(c)n(kf)p @beginspecial @setspecial @endspecial 43 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(153)606 1013 y @beginspecial @setspecial @endspecial(10.8.21)10 b(InetAddr)p @beginspecial @setspecial @endspecial 76 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(154)606 1113 y @beginspecial @setspecial @endspecial(10.8.22)10 b(Host)p @beginspecial @setspecial @endspecial 45 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(154)606 1213 y @beginspecial @setspecial @endspecial(10.8.23)10 b(gethostb)n(yname)p @beginspecial @setspecial @endspecial 56 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(154)606 1312 y @beginspecial @setspecial @endspecial(10.8.24)10 b(Proto)r(col)p @beginspecial @setspecial @endspecial 33 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) 48 b(154)606 1412 y @beginspecial @setspecial @endspecial(10.8.25)10 b(getprotob)n(yname)p @beginspecial @setspecial @endspecial 78 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(154)606 1512 y @beginspecial @setspecial @endspecial(10.8.26)10 b(Service)p @beginspecial @setspecial @endspecial 22 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)48 b(155)606 1611 y @beginspecial @setspecial @endspecial(10.8.27) 10 b(getservb)n(yname)p @beginspecial @setspecial @endspecial 62 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(155)606 1711 y @beginspecial @setspecial @endspecial(10.8.28)10 b(so)r(c)n(k)n(et)p @beginspecial @setspecial @endspecial 56 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)48 b(155)606 1810 y @beginspecial @setspecial @endspecial(10.8.29)10 b(bind)p @beginspecial @setspecial @endspecial 53 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)48 b(156)606 1910 y @beginspecial @setspecial @endspecial(10.8.30)10 b(listen)p @beginspecial @setspecial @endspecial 85 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(156)606 2010 y @beginspecial @setspecial @endspecial(10.8.31)10 b(accept)p @beginspecial @setspecial @endspecial 48 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(156)606 2109 y @beginspecial @setspecial @endspecial(10.8.32)10 b(connect)p @beginspecial @setspecial @endspecial 66 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(156)606 2209 y @beginspecial @setspecial @endspecial(10.8.33)10 b(getc)n(har)p @beginspecial @setspecial @endspecial 76 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(157)606 2309 y @beginspecial @setspecial @endspecial(10.8.34)10 b(gets)p @beginspecial @setspecial @endspecial 70 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(157)606 2408 y @beginspecial @setspecial @endspecial(10.8.35)10 b(fgets)p @beginspecial @setspecial @endspecial 45 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(157)415 2508 y @beginspecial @setspecial @endspecial(10.9)42 b(Prin)n(ting)27 b(functions)p @beginspecial @setspecial @endspecial 81 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(157)415 2607 y @beginspecial @setspecial @endspecial(10.10V)-7 b(alue)28 b(prin)n(ting)f(functions)p @beginspecial @setspecial @endspecial 55 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(158)606 2707 y @beginspecial @setspecial @endspecial(10.10.1)10 b(Miscellaneous)26 b(functions)p @beginspecial @setspecial @endspecial 70 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)48 b(158)872 2807 y @beginspecial @setspecial @endspecial(10.10.1.1)19 b(set-c)n(hannel-line)p @beginspecial @setspecial @endspecial 22 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(158)415 2906 y @beginspecial @setspecial @endspecial(10.11Higher-lev)n(el)26 b(IO)h(functions)p @beginspecial @setspecial @endspecial 86 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)48 b(158)606 3006 y @beginspecial @setspecial @endspecial(10.11.1)10 b(Regular)26 b(expressions)p @beginspecial @setspecial @endspecial 78 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(158)606 3106 y @beginspecial @setspecial @endspecial(10.11.2)10 b(cat)p @beginspecial @setspecial @endspecial 39 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(161)606 3205 y @beginspecial @setspecial @endspecial(10.11.3)10 b(grep)p @beginspecial @setspecial @endspecial 56 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(161)606 3305 y @beginspecial @setspecial @endspecial(10.11.4)10 b(scan)p @beginspecial @setspecial @endspecial 56 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(161)606 3404 y @beginspecial @setspecial @endspecial(10.11.5)10 b(a)n(wk)p @beginspecial @setspecial @endspecial 70 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(163)606 3504 y @beginspecial @setspecial @endspecial(10.11.6)10 b(fsubst)p @beginspecial @setspecial @endspecial 64 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(165)606 3604 y @beginspecial @setspecial @endspecial(10.11.7)10 b(lex)p @beginspecial @setspecial @endspecial 46 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(165)606 3703 y @beginspecial @setspecial @endspecial(10.11.8)10 b(lex-searc)n(h)p @beginspecial @setspecial @endspecial 50 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(166)606 3803 y @beginspecial @setspecial @endspecial(10.11.9)10 b(Lexer)p @beginspecial @setspecial @endspecial 76 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(167)606 3903 y @beginspecial @setspecial @endspecial(10.11.10)-32 b(Lexer)26 b(matc)n(hing)p @beginspecial @setspecial @endspecial 38 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(168)606 4002 y @beginspecial @setspecial @endspecial(10.11.11)-32 b(Extending)27 b(lexer)g(de\014nitions)p @beginspecial @setspecial @endspecial 79 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(168)606 4102 y @beginspecial @setspecial @endspecial(10.11.12)-32 b(Threading)26 b(the)i(lexer)f(ob) 5 b(ject)p @beginspecial @setspecial @endspecial 85 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(169)606 4201 y @beginspecial @setspecial @endspecial(10.11.13)-32 b(P)n(arser)p @beginspecial @setspecial @endspecial 46 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(169)606 4301 y @beginspecial @setspecial @endspecial(10.11.14)-32 b(Calling)27 b(the)h(parser)p @beginspecial @setspecial @endspecial 78 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(171)606 4401 y @beginspecial @setspecial @endspecial(10.11.15)-32 b(P)n(arsing)25 b(con)n(trol)p @beginspecial @setspecial @endspecial 50 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(171)606 4500 y @beginspecial @setspecial @endspecial(10.11.16)-32 b(Extending)27 b(parsers)p @beginspecial @setspecial @endspecial 74 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(171)606 4600 y @beginspecial @setspecial @endspecial(10.11.17)-32 b(P)n(asswd)p @beginspecial @setspecial @endspecial 74 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(172)606 4700 y @beginspecial @setspecial @endspecial(10.11.18)-32 b(getp)n(wnam,)27 b(getp)n(wuid)p @beginspecial @setspecial @endspecial 43 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(173)606 4799 y @beginspecial @setspecial @endspecial(10.11.19)-32 b(getp)n(w)n(en)n(ts)p @beginspecial @setspecial @endspecial 49 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)48 b(173)606 4899 y @beginspecial @setspecial @endspecial(10.11.20)-32 b(Group)p @beginspecial @setspecial @endspecial 47 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(173)606 4998 y @beginspecial @setspecial @endspecial(10.11.21)-32 b(getgrnam,)26 b(getgrgid)p @beginspecial @setspecial @endspecial 42 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(173)p eop end %%Page: 10 10 TeXDict begin 10 9 bop 739 282 a @beginspecial @setspecial @endspecial Fs(10)2309 b Fp(CONTENTS)1054 515 y @beginspecial @setspecial @endspecial Fs(10.11.22)-32 b(tgetstr)p @beginspecial @setspecial @endspecial 38 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)49 b(174)1054 616 y @beginspecial @setspecial @endspecial(10.11.23) -32 b(xterm-escap)r(e-b)r(egin,)26 b(xterm-escap)r(e-end)p @beginspecial @setspecial @endspecial 57 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)49 b(174)1054 716 y @beginspecial @setspecial @endspecial(10.11.24)-32 b(xterm-escap)r(e)p @beginspecial @setspecial @endspecial 60 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)49 b(174)1054 816 y @beginspecial @setspecial @endspecial(10.11.25) -32 b(prompt-in)n(visible-b)r(egin,)27 b(prompt-in)n(visible-end)p @beginspecial @setspecial @endspecial 20 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)49 b(174)1054 917 y @beginspecial @setspecial @endspecial(10.11.26)-32 b(prompt-in)n(visible)p @beginspecial @setspecial @endspecial 75 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(174)1054 1017 y @beginspecial @setspecial @endspecial(10.11.27)-32 b(gettimeofda)n(y)p @beginspecial @setspecial @endspecial 68 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(175)739 1201 y @beginspecial @setspecial @endspecial Fq(11)28 b(Shell)j(commands)p @beginspecial @setspecial @endspecial 1922 w(177)863 1301 y @beginspecial @setspecial @endspecial Fs(11.1)42 b(Simple)29 b(commands)p @beginspecial @setspecial @endspecial 82 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(177)863 1402 y @beginspecial @setspecial @endspecial(11.2)42 b(Globbing)p @beginspecial @setspecial @endspecial 83 w(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(178)863 1502 y @beginspecial @setspecial @endspecial(11.3)42 b(Bac)n(kground)26 b(jobs)p @beginspecial @setspecial @endspecial 67 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)49 b(178)863 1603 y @beginspecial @setspecial @endspecial(11.4)42 b(File)28 b(redirection)p @beginspecial @setspecial @endspecial 56 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(178)863 1703 y @beginspecial @setspecial @endspecial(11.5)42 b(Pip)r(elines)p @beginspecial @setspecial @endspecial 24 w(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(178)863 1803 y @beginspecial @setspecial @endspecial(11.6)42 b(Conditional)27 b(execution)p @beginspecial @setspecial @endspecial 72 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(179)863 1904 y @beginspecial @setspecial @endspecial(11.7)42 b(Grouping)p @beginspecial @setspecial @endspecial 73 w(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(179)863 2004 y @beginspecial @setspecial @endspecial(11.8)42 b(What)28 b(is)g(a)f(shell)h(command?)p @beginspecial @setspecial @endspecial 31 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(179)863 2104 y @beginspecial @setspecial @endspecial(11.9)42 b(Basic)27 b(builtin)i(functions)p @beginspecial @setspecial @endspecial 49 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(180)1054 2205 y @beginspecial @setspecial @endspecial(11.9.1)j(ec)n(ho)p @beginspecial @setspecial @endspecial 55 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(180)1054 2305 y @beginspecial @setspecial @endspecial(11.9.2)j(cd)p @beginspecial @setspecial @endspecial 67 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(180)863 2406 y @beginspecial @setspecial @endspecial(11.10Job)27 b(con)n(trol)g(builtin)h(functions)p @beginspecial @setspecial @endspecial 27 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(181)1054 2506 y @beginspecial @setspecial @endspecial(11.10.1)10 b(jobs)p @beginspecial @setspecial @endspecial 69 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(181)1054 2606 y @beginspecial @setspecial @endspecial(11.10.2)10 b(bg)p @beginspecial @setspecial @endspecial 62 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(181)1054 2707 y @beginspecial @setspecial @endspecial(11.10.3)10 b(fg)p @beginspecial @setspecial @endspecial 83 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(181)1054 2807 y @beginspecial @setspecial @endspecial(11.10.4)10 b(stop)p @beginspecial @setspecial @endspecial 62 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(181)1054 2907 y @beginspecial @setspecial @endspecial(11.10.5)10 b(w)n(ait)p @beginspecial @setspecial @endspecial 60 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(181)1054 3008 y @beginspecial @setspecial @endspecial(11.10.6)10 b(kill)p @beginspecial @setspecial @endspecial 37 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(181)863 3108 y @beginspecial @setspecial @endspecial(11.11Command)28 b(history)p @beginspecial @setspecial @endspecial 84 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(181)1054 3209 y @beginspecial @setspecial @endspecial(11.11.1)10 b(history)p @beginspecial @setspecial @endspecial 26 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)49 b(181)739 3392 y @beginspecial @setspecial @endspecial Fq(12)28 b(The)k(standard)h(ob)5 b(jects)p @beginspecial @setspecial @endspecial 1708 w(183)863 3493 y @beginspecial @setspecial @endspecial Fs(12.1)42 b(P)n(erv)-5 b(asiv)n(es)25 b(ob)5 b(jects)p @beginspecial @setspecial @endspecial 83 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(183)1054 3593 y @beginspecial @setspecial @endspecial(12.1.1)j(Ob)5 b(ject)p @beginspecial @setspecial @endspecial 32 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(183)1054 3694 y @beginspecial @setspecial @endspecial(12.1.2)j(Map)p @beginspecial @setspecial @endspecial 51 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(184)1054 3794 y @beginspecial @setspecial @endspecial(12.1.3)j(Num)n(b)r(er)p @beginspecial @setspecial @endspecial 51 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(185)1054 3894 y @beginspecial @setspecial @endspecial(12.1.4)j(In) n(t)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(185)1054 3995 y @beginspecial @setspecial @endspecial(12.1.5)j(Float) p @beginspecial @setspecial @endspecial 22 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)49 b(185)1054 4095 y @beginspecial @setspecial @endspecial(12.1.6)j(Sequence)p @beginspecial @setspecial @endspecial 78 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(186)1054 4195 y @beginspecial @setspecial @endspecial(12.1.7)j(Arra)n (y)p @beginspecial @setspecial @endspecial 67 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(187)1054 4296 y @beginspecial @setspecial @endspecial(12.1.8)j(String)p @beginspecial @setspecial @endspecial 57 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) h(.)f(.)h(.)g(.)f(.)49 b(187)1054 4396 y @beginspecial @setspecial @endspecial(12.1.9)j(F)-7 b(un)p @beginspecial @setspecial @endspecial 76 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)49 b(187)1054 4497 y @beginspecial @setspecial @endspecial(12.1.10)10 b(Rule)p @beginspecial @setspecial @endspecial 48 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(187)1054 4597 y @beginspecial @setspecial @endspecial(12.1.11)10 b(T)-7 b(arget)p @beginspecial @setspecial @endspecial 40 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(187)1054 4697 y @beginspecial @setspecial @endspecial(12.1.12)10 b(No)r(de)p @beginspecial @setspecial @endspecial 26 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(188)1054 4798 y @beginspecial @setspecial @endspecial(12.1.13)10 b(File)p @beginspecial @setspecial @endspecial 78 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(189)1054 4898 y @beginspecial @setspecial @endspecial(12.1.14)10 b(Dir)p @beginspecial @setspecial @endspecial 31 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(189)1054 4998 y @beginspecial @setspecial @endspecial(12.1.15)10 b(Channel)p @beginspecial @setspecial @endspecial 44 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(189)p eop end %%Page: 11 11 TeXDict begin 11 10 bop 291 282 a @beginspecial @setspecial @endspecial Fp(CONTENTS)2309 b Fs(11)606 515 y @beginspecial @setspecial @endspecial(12.1.16)10 b(InChannel)p @beginspecial @setspecial @endspecial 32 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(189)606 615 y @beginspecial @setspecial @endspecial(12.1.17)10 b(OutChannel)p @beginspecial @setspecial @endspecial 29 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(189)606 715 y @beginspecial @setspecial @endspecial(12.1.18)10 b(Lo)r(cation)p @beginspecial @setspecial @endspecial 25 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)48 b(190)606 815 y @beginspecial @setspecial @endspecial(12.1.19)10 b(Exception)p @beginspecial @setspecial @endspecial 44 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(190)606 915 y @beginspecial @setspecial @endspecial(12.1.20)10 b(Run)n(timeException)p @beginspecial @setspecial @endspecial 55 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)48 b(190)606 1015 y @beginspecial @setspecial @endspecial(12.1.21)10 b(Un)n(buildableException)p @beginspecial @setspecial @endspecial 58 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(190)606 1116 y @beginspecial @setspecial @endspecial(12.1.22)10 b(Shell)p @beginspecial @setspecial @endspecial 39 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(191)291 1299 y @beginspecial @setspecial @endspecial Fq(13)28 b(Build)j(functions)h(and)g(utilities)p @beginspecial @setspecial @endspecial 1425 w(195)415 1399 y @beginspecial @setspecial @endspecial Fs(13.1)42 b(Builtin)28 b(.PHONY)g(targets)p @beginspecial @setspecial @endspecial 42 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(195)415 1499 y @beginspecial @setspecial @endspecial(13.2)42 b(Options)27 b(and)h(v)n(ersioning)p @beginspecial @setspecial @endspecial 25 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(196)606 1599 y @beginspecial @setspecial @endspecial(13.2.1)k(OMak)n(eFlags)p @beginspecial @setspecial @endspecial 81 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)48 b(196)606 1699 y @beginspecial @setspecial @endspecial(13.2.2)k (OMak)n(eV)-7 b(ersion)p @beginspecial @setspecial @endspecial 71 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(196)606 1799 y @beginspecial @setspecial @endspecial(13.2.3)k(cmp-v)n(ersions)p @beginspecial @setspecial @endspecial 68 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(197)606 1899 y @beginspecial @setspecial @endspecial(13.2.4)k (De\014neCommandV)-7 b(ars)p @beginspecial @setspecial @endspecial 29 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(197)415 1999 y @beginspecial @setspecial @endspecial(13.3)42 b(Examining)27 b(the)h(dep)r(endency)g (graph)p @beginspecial @setspecial @endspecial 32 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(197)606 2099 y @beginspecial @setspecial @endspecial(13.3.1)k(dep)r (endencies,)28 b(dep)r(endencies-all,)f(dep)r(endencies-prop)r(er)p @beginspecial @setspecial @endspecial 55 w(.)41 b(.)h(.)48 b(197)606 2199 y @beginspecial @setspecial @endspecial(13.3.2)k(target) p @beginspecial @setspecial @endspecial 61 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)48 b(198)606 2299 y @beginspecial @setspecial @endspecial(13.3.3)k(\014nd-build-targets)p @beginspecial @setspecial @endspecial 37 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(198)606 2399 y @beginspecial @setspecial @endspecial(13.3.4)k(pro)5 b(ject-directories)p @beginspecial @setspecial @endspecial 70 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)48 b(199)606 2499 y @beginspecial @setspecial @endspecial(13.3.5)k(rule)p @beginspecial @setspecial @endspecial 75 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)48 b(199)606 2599 y @beginspecial @setspecial @endspecial(13.3.6)k(build)p @beginspecial @setspecial @endspecial 30 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(200)415 2699 y @beginspecial @setspecial @endspecial(13.4)42 b(The)28 b(OMak)n(ero)r(ot)d(\014le)p @beginspecial @setspecial @endspecial 23 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(200)606 2799 y @beginspecial @setspecial @endspecial(13.4.1)k(V)-7 b(ariables)p @beginspecial @setspecial @endspecial 74 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(200)606 2899 y @beginspecial @setspecial @endspecial(13.4.2)k(System)27 b(v)-5 b(ariables)p @beginspecial @setspecial @endspecial 60 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(200)415 2999 y @beginspecial @setspecial @endspecial(13.5)42 b(Building)28 b(C)f(and)h(C++)e(co)r (de)p @beginspecial @setspecial @endspecial 32 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)48 b(201)606 3099 y @beginspecial @setspecial @endspecial(13.5.1)k(Auto)r(con\014guration)26 b(v)-5 b(ariables)p @beginspecial @setspecial @endspecial 49 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) 48 b(201)872 3199 y @beginspecial @setspecial @endspecial(13.5.1.1)61 b(Unix-lik)n(e)27 b(systems)p @beginspecial @setspecial @endspecial 78 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)48 b(201)872 3300 y @beginspecial @setspecial @endspecial(13.5.1.2)61 b(Win32)p @beginspecial @setspecial @endspecial 24 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(202)606 3400 y @beginspecial @setspecial @endspecial(13.5.2)k(C)27 b(and)h(C++)f(con\014guration)f(v)-5 b(ariables)p @beginspecial @setspecial @endspecial 25 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)48 b(202)606 3500 y @beginspecial @setspecial @endspecial(13.5.3)k(Generated)27 b(C)g(\014les)p @beginspecial @setspecial @endspecial 38 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(203)872 3600 y @beginspecial @setspecial @endspecial(13.5.3.1)61 b(CGeneratedFiles,)27 b(Lo)r(calCGeneratedFiles)p @beginspecial @setspecial @endspecial 30 w(.)42 b(.)g(.)f(.)h(.)48 b(203)606 3700 y @beginspecial @setspecial @endspecial(13.5.4)k (Building)27 b(C)h(programs)d(and)j(Libraries)p @beginspecial @setspecial @endspecial 40 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)48 b(204)872 3800 y @beginspecial @setspecial @endspecial(13.5.4.1)61 b(StaticCLibrary,)26 b(DynamicCLibrary)p @beginspecial @setspecial @endspecial 44 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)48 b(204)872 3900 y @beginspecial @setspecial @endspecial(13.5.4.2)61 b(StaticCLibraryCop)n(y,)26 b (DynamicCLibraryCop)n(y)p @beginspecial @setspecial @endspecial 51 w(.)42 b(.)48 b(204)872 4000 y @beginspecial @setspecial @endspecial(13.5.4.3)61 b(StaticCLibraryInstall,)26 b (DynamicCLibraryInstall)p @beginspecial @setspecial @endspecial 38 w(.)48 b(204)872 4100 y @beginspecial @setspecial @endspecial(13.5.4.4)61 b(StaticCOb)5 b(ject,)27 b(StaticCOb)5 b(jectCop)n(y)-7 b(,)27 b(StaticCOb-)1212 4199 y(jectInstall)p @beginspecial @setspecial @endspecial 31 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(205)872 4299 y @beginspecial @setspecial @endspecial(13.5.4.5)61 b(CProgram)p @beginspecial @setspecial @endspecial 77 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)48 b(205)872 4400 y @beginspecial @setspecial @endspecial(13.5.4.6)61 b(CProgramCop)n(y)p @beginspecial @setspecial @endspecial 81 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(205)872 4500 y @beginspecial @setspecial @endspecial(13.5.4.7)61 b(CProgramInstall)p @beginspecial @setspecial @endspecial 42 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(205)872 4600 y @beginspecial @setspecial @endspecial(13.5.4.8)61 b(CXXProgram,)26 b(CXXProgramInstall)p @beginspecial @setspecial @endspecial 77 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)48 b(206)872 4700 y @beginspecial @setspecial @endspecial(13.5.4.9)61 b(StaticCXXLibrary,)20 b(StaticCXXLibraryCop)n(y)-7 b(,)18 b(Stat-)1212 4799 y(icCXXLibraryInstall,)h(DynamicCXXLibrary)-7 b(,)20 b(Dy-)1212 4899 y(namicCXXLibraryCop)n(y)-7 b(,)18 b(DynamicCXXLibraryIn-)1212 4998 y(stall)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(206)p eop end %%Page: 12 12 TeXDict begin 12 11 bop 739 282 a @beginspecial @setspecial @endspecial Fs(12)2309 b Fp(CONTENTS)863 515 y @beginspecial @setspecial @endspecial Fs(13.6)42 b(Building)28 b(OCaml)f(co)r(de)p @beginspecial @setspecial @endspecial 82 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(206)1054 616 y @beginspecial @setspecial @endspecial(13.6.1)j (Auto)r(con\014guration)27 b(v)-5 b(ariables)26 b(for)h(OCaml)g (compilation)p @beginspecial @setspecial @endspecial 23 w(.)42 b(.)g(.)f(.)49 b(206)1054 716 y @beginspecial @setspecial @endspecial(13.6.2)j(Con\014guration)26 b(v)-5 b(ariables)26 b(for)h(OCaml)g(compilation)p @beginspecial @setspecial @endspecial 56 w(.)42 b(.)f(.)h(.)g(.)f(.)49 b(206)1054 817 y @beginspecial @setspecial @endspecial(13.6.3)j(OCaml) 27 b(command)g(\015ags)p @beginspecial @setspecial @endspecial 33 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)49 b(208)1054 917 y @beginspecial @setspecial @endspecial(13.6.4)j(Library)26 b(v)-5 b(ariables)p @beginspecial @setspecial @endspecial 50 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(209)1054 1017 y @beginspecial @setspecial @endspecial(13.6.5)j (Generated)27 b(OCaml)g(Files)p @beginspecial @setspecial @endspecial 67 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)49 b(209)1320 1118 y @beginspecial @setspecial @endspecial(13.6.5.1)61 b(OCamlGeneratedFiles,)47 b(Lo)r(calOCamlGenerated-)1660 1217 y(Files)p @beginspecial @setspecial @endspecial 27 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(209)1320 1318 y @beginspecial @setspecial @endspecial(13.6.5.2)61 b(Automatic)45 b(disco)n(v)n(ery)d(of)i(generated)f(\014les)h(during) 1660 1417 y(dep)r(endency)28 b(analysis)p @beginspecial @setspecial @endspecial 41 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)49 b(210)1054 1518 y @beginspecial @setspecial @endspecial(13.6.6)j(Using)27 b(the)h(Menhir)g(parser)e (generator)p @beginspecial @setspecial @endspecial 53 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(210)1320 1618 y @beginspecial @setspecial @endspecial(13.6.6.1)61 b(OCamlLibrary)p @beginspecial @setspecial @endspecial 53 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)49 b(211)1320 1719 y @beginspecial @setspecial @endspecial(13.6.6.2)61 b(OCamlP)n(ac)n(k)-5 b(age)p @beginspecial @setspecial @endspecial 34 w(.)41 b(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(211)1320 1819 y @beginspecial @setspecial @endspecial(13.6.6.3)61 b(OCamlLibraryCop)n(y)p @beginspecial @setspecial @endspecial 57 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(212)1320 1919 y @beginspecial @setspecial @endspecial(13.6.6.4)61 b(OCamlLibraryInstall)p @beginspecial @setspecial @endspecial 82 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(212)1320 2020 y @beginspecial @setspecial @endspecial(13.6.6.5)61 b(OCamlProgram)p @beginspecial @setspecial @endspecial 72 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)49 b(212)1320 2120 y @beginspecial @setspecial @endspecial(13.6.6.6)61 b(OCamlProgramCop)n(y)p @beginspecial @setspecial @endspecial 76 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)49 b(212)1320 2221 y @beginspecial @setspecial @endspecial(13.6.6.7)61 b(OCamlProgramInstall)p @beginspecial @setspecial @endspecial 37 w(.)42 b(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(212)863 2321 y @beginspecial @setspecial @endspecial(13.7)42 b(Building)29 b(L)1413 2304 y Fn(A)1450 2321 y Fs(T)1496 2339 y(E)1542 2321 y(X)f(\014les)p @beginspecial @setspecial @endspecial 22 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(213)1054 2422 y @beginspecial @setspecial @endspecial(13.7.1)j(Con\014guration) 26 b(v)-5 b(ariables)p @beginspecial @setspecial @endspecial 81 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)49 b(213)1054 2522 y @beginspecial @setspecial @endspecial(13.7.2)j(Building)29 b(L)1679 2505 y Fn(A)1716 2522 y Fs(T)1762 2540 y(E)1808 2522 y(X)e(do)r(cumen)n(ts)p @beginspecial @setspecial @endspecial 24 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(214)1320 2622 y @beginspecial @setspecial @endspecial(13.7.2.1)61 b(LaT)-7 b(eXDo)r(cumen)n(t)p @beginspecial @setspecial @endspecial 31 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)49 b(214)1320 2723 y @beginspecial @setspecial @endspecial(13.7.2.2)61 b(T)-7 b(eX)n(GeneratedFiles,)27 b(Lo)r(calT)-7 b(eX)n(GeneratedFiles)p @beginspecial @setspecial @endspecial 45 w(.)41 b(.)49 b(214)1320 2823 y @beginspecial @setspecial @endspecial(13.7.2.3)61 b(LaT)-7 b(eXDo)r(cumen)n(tCop)n(y)p @beginspecial @setspecial @endspecial 35 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)49 b(214)1320 2924 y @beginspecial @setspecial @endspecial(13.7.2.4)61 b(LaT)-7 b(eXDo)r(cumen)n(tInstall)p @beginspecial @setspecial @endspecial 61 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(214)739 3108 y @beginspecial @setspecial @endspecial Fq(14)28 b(Auto)s(con\014guration)k(functions)g (and)g(v)-5 b(ariables)p @beginspecial @setspecial @endspecial 844 w(215)863 3208 y @beginspecial @setspecial @endspecial Fs(14.1)42 b(General-purp)r(ose)26 b(auto)r(con\014guration)g (functions)p @beginspecial @setspecial @endspecial 24 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(215)1054 3308 y @beginspecial @setspecial @endspecial(14.1.1)j (ConfMsgChec)n(king,)26 b(ConfMsgResult)p @beginspecial @setspecial @endspecial 50 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)49 b(215)1054 3409 y @beginspecial @setspecial @endspecial(14.1.2)j(ConfMsgW)-7 b(arn,)27 b(ConfMsgError)p @beginspecial @setspecial @endspecial 24 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(216)1054 3509 y @beginspecial @setspecial @endspecial(14.1.3)j(ConfMsgY)-7 b(esNo,)27 b(ConfMsgF)-7 b(ound)p @beginspecial @setspecial @endspecial 29 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)49 b(216)1054 3610 y @beginspecial @setspecial @endspecial(14.1.4)j(T)-7 b(ryCompileC,)27 b(T)-7 b(ryLinkC,)27 b(T)-7 b(ryRunC)p @beginspecial @setspecial @endspecial 24 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(216)1054 3710 y @beginspecial @setspecial @endspecial(14.1.5)j (RunCProg)p @beginspecial @setspecial @endspecial 21 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(216)1054 3810 y @beginspecial @setspecial @endspecial(14.1.6)j(Chec)n(kCHeader,) 26 b(V)-7 b(erb)r(oseChec)n(kCHeader)p @beginspecial @setspecial @endspecial 29 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)49 b(217)1054 3911 y @beginspecial @setspecial @endspecial(14.1.7)j (Chec)n(kCLib,)27 b(V)-7 b(erb)r(oseChec)n(kCLib)p @beginspecial @setspecial @endspecial 42 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)49 b(217)1054 4011 y @beginspecial @setspecial @endspecial(14.1.8)j(Chec)n(kProg)p @beginspecial @setspecial @endspecial 77 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(217)863 4112 y @beginspecial @setspecial @endspecial(14.2)42 b(T)-7 b(ranslating)28 b Fo(autoconf)c Fs(scripts)p @beginspecial @setspecial @endspecial 70 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(217)863 4212 y @beginspecial @setspecial @endspecial(14.3)42 b(Prede\014ned)27 b(con\014guration)f(tests)p @beginspecial @setspecial @endspecial 44 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(218)1054 4312 y @beginspecial @setspecial @endspecial(14.3.1)j(NCurses)27 b(library)f (con\014guration)p @beginspecial @setspecial @endspecial 41 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(218)1054 4413 y @beginspecial @setspecial @endspecial(14.3.2)j (ReadLine)27 b(library)g(con\014guration)p @beginspecial @setspecial @endspecial 64 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)49 b(218)1054 4513 y @beginspecial @setspecial @endspecial(14.3.3)j(Snprin)n(tf)28 b(con\014guration)p @beginspecial @setspecial @endspecial 60 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(219)739 4697 y @beginspecial @setspecial @endspecial Fq(15)28 b(The)k(OSH)g(shell)p @beginspecial @setspecial @endspecial 1981 w(221)863 4798 y @beginspecial @setspecial @endspecial Fs(15.1)42 b(Startup)p @beginspecial @setspecial @endspecial 74 w(.)g(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)49 b(221)863 4898 y @beginspecial @setspecial @endspecial(15.2)42 b(Aliases)p @beginspecial @setspecial @endspecial 34 w(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(222)863 4998 y @beginspecial @setspecial @endspecial(15.3)42 b(In)n(teractiv)n(e)27 b(syn)n(tax)p @beginspecial @setspecial @endspecial 84 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(222)p eop end %%Page: 13 13 TeXDict begin 13 12 bop 291 282 a @beginspecial @setspecial @endspecial Fp(CONTENTS)2309 b Fs(13)291 515 y @beginspecial @setspecial @endspecial Fq(A)52 b(Synopsis)p @beginspecial @setspecial @endspecial 2237 w(223)415 617 y @beginspecial @setspecial @endspecial Fs(A.1)64 b(General)27 b(usage)p @beginspecial @setspecial @endspecial 35 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) f(.)h(.)g(.)f(.)h(.)48 b(223)415 719 y @beginspecial @setspecial @endspecial(A.2)64 b(Output)28 b(con)n(trol)p @beginspecial @setspecial @endspecial 61 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)48 b(223)606 821 y @beginspecial @setspecial @endspecial(A.2.1)74 b Fo(-s)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)48 b(223)606 923 y @beginspecial @setspecial @endspecial(A.2.2)74 b Fo(-S)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(223)606 1025 y @beginspecial @setspecial @endspecial(A.2.3)74 b Fo(-w)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(224)606 1127 y @beginspecial @setspecial @endspecial(A.2.4)74 b Fo(--progress)p @beginspecial @setspecial @endspecial 32 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(224)606 1229 y @beginspecial @setspecial @endspecial(A.2.5)74 b Fo(--print-status)p @beginspecial @setspecial @endspecial 50 w Fs(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(224)606 1330 y @beginspecial @setspecial @endspecial(A.2.6)74 b Fo(--print-exit)p @beginspecial @setspecial @endspecial 74 w Fs(.)41 b(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)48 b(224)606 1432 y @beginspecial @setspecial @endspecial(A.2.7)74 b Fo(--verbose)p @beginspecial @setspecial @endspecial 76 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(224)606 1534 y @beginspecial @setspecial @endspecial(A.2.8)74 b Fo(--output-normal)p @beginspecial @setspecial @endspecial 71 w Fs(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(224)606 1636 y @beginspecial @setspecial @endspecial(A.2.9)74 b Fo(--output-postpon)o(e)p @beginspecial @setspecial @endspecial 48 w Fs(.)42 b(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(224)606 1738 y @beginspecial @setspecial @endspecial(A.2.10)32 b Fo(--output-only-er)o(ro)o(rs)o @beginspecial @setspecial @endspecial 47 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(225)606 1840 y @beginspecial @setspecial @endspecial(A.2.11)32 b Fo(--output-at-end)p @beginspecial @setspecial @endspecial 71 w Fs(.)41 b(.)h(.)f(.)h(.)g(.) f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(225)606 1942 y @beginspecial @setspecial @endspecial(A.2.12)32 b Fo(-o)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(225)415 2044 y @beginspecial @setspecial @endspecial(A.3)64 b(Build)28 b(options)p @beginspecial @setspecial @endspecial 56 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(226)606 2146 y @beginspecial @setspecial @endspecial(A.3.1)74 b Fo(-k)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(226)606 2247 y @beginspecial @setspecial @endspecial(A.3.2)74 b Fo(-n)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(226)606 2349 y @beginspecial @setspecial @endspecial(A.3.3)74 b Fo(-p)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(226)606 2451 y @beginspecial @setspecial @endspecial(A.3.4)74 b Fo(-P)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(226)606 2553 y @beginspecial @setspecial @endspecial(A.3.5)74 b Fo(-R)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(227)606 2655 y @beginspecial @setspecial @endspecial(A.3.6)74 b Fo(-t)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(227)606 2757 y @beginspecial @setspecial @endspecial(A.3.7)74 b Fo(-U)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(227)606 2859 y @beginspecial @setspecial @endspecial(A.3.8)74 b Fo(--depend)p @beginspecial @setspecial @endspecial 56 w Fs(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(227)606 2961 y @beginspecial @setspecial @endspecial(A.3.9)74 b Fo(--configure)p @beginspecial @setspecial @endspecial 53 w Fs(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(227)606 3063 y @beginspecial @setspecial @endspecial(A.3.10)32 b Fo (--force-dotomake)o @beginspecial @setspecial @endspecial 28 w Fs(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(227)606 3164 y @beginspecial @setspecial @endspecial(A.3.11)32 b Fo(--dotomake)p @beginspecial @setspecial @endspecial 32 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(228)606 3266 y @beginspecial @setspecial @endspecial(A.3.12)32 b Fo(-j)p @beginspecial @setspecial @endspecial 62 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(228)606 3368 y @beginspecial @setspecial @endspecial(A.3.13)32 b Fo(--print-dependen)o(ci)o(es)o @beginspecial @setspecial @endspecial 47 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(228)606 3470 y @beginspecial @setspecial @endspecial(A.3.14)32 b Fo(--show-dependenc)o(ie)o(s)p @beginspecial @setspecial @endspecial 26 w Fs(.)41 b(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(228)606 3572 y @beginspecial @setspecial @endspecial(A.3.15)32 b Fo(--all-dependenci)o(es)o @beginspecial @setspecial @endspecial 70 w Fs(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(228)606 3674 y @beginspecial @setspecial @endspecial(A.3.16)32 b Fo(--verbose-depend)o(en)o(ci)o(es) p @beginspecial @setspecial @endspecial 24 w Fs(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(228)606 3776 y @beginspecial @setspecial @endspecial(A.3.17)32 b Fo(--install)p @beginspecial @setspecial @endspecial 76 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(229)606 3878 y @beginspecial @setspecial @endspecial(A.3.18)32 b Fo(--install-all)p @beginspecial @setspecial @endspecial 30 w Fs(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(229)606 3980 y @beginspecial @setspecial @endspecial(A.3.19)32 b Fo(--install-force) p @beginspecial @setspecial @endspecial 71 w Fs(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)48 b(229)606 4081 y @beginspecial @setspecial @endspecial(A.3.20)32 b Fo(--absname)p @beginspecial @setspecial @endspecial 76 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(229)606 4183 y @beginspecial @setspecial @endspecial(A.3.21)32 b Fo(variable)40 b(definition)p @beginspecial @setspecial @endspecial 28 w Fs(.)h(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f (.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(229)415 4285 y @beginspecial @setspecial @endspecial(A.4)64 b(Additional)28 b(options)p @beginspecial @setspecial @endspecial 61 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)h(.)48 b(229)415 4387 y @beginspecial @setspecial @endspecial(A.5)64 b(En)n(vironmen)n(t)26 b(v)-5 b(ariables)p @beginspecial @setspecial @endspecial 53 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) 48 b(229)606 4489 y @beginspecial @setspecial @endspecial(A.5.1)74 b Fo(OMAKEFLAGS)p @beginspecial @setspecial @endspecial 32 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(229)606 4591 y @beginspecial @setspecial @endspecial(A.5.2)74 b Fo(OMAKELIB)p @beginspecial @setspecial @endspecial 56 w Fs(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(230)415 4693 y @beginspecial @setspecial @endspecial(A.6)64 b(F)-7 b(unctions)p @beginspecial @setspecial @endspecial 64 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(230)606 4795 y @beginspecial @setspecial @endspecial(A.6.1)74 b Fo(OMakeFlags)p @beginspecial @setspecial @endspecial 32 w Fs(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(230)415 4897 y @beginspecial @setspecial @endspecial(A.7)64 b(Option)27 b(pro)r(cessing)p @beginspecial @setspecial @endspecial 83 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(230)415 4998 y @beginspecial @setspecial @endspecial(A.8)64 b(.omak)n(erc)p @beginspecial @setspecial @endspecial 26 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)48 b(231)p eop end %%Page: 14 14 TeXDict begin 14 13 bop 739 282 a @beginspecial @setspecial @endspecial Fs(14)2309 b Fp(CONTENTS)739 515 y @beginspecial @setspecial @endspecial Fq(B)56 b(OMak)m(e)33 b(grammar)p @beginspecial @setspecial @endspecial 1886 w(233)863 615 y @beginspecial @setspecial @endspecial Fs(B.1)67 b(OMak)n(e)27 b(lexical)g(con)n(v)n(en)n(tions)p @beginspecial @setspecial @endspecial 30 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(233)1054 715 y @beginspecial @setspecial @endspecial(B.1.1)77 b(Commen)n(ts)p @beginspecial @setspecial @endspecial 22 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(233)1054 814 y @beginspecial @setspecial @endspecial(B.1.2)77 b(Sp)r(ecial)28 b(c)n(haracters)p @beginspecial @setspecial @endspecial 77 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(233)1054 914 y @beginspecial @setspecial @endspecial(B.1.3)77 b(Iden)n(ti\014ers)p @beginspecial @setspecial @endspecial 47 w(.)42 b(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) h(.)g(.)f(.)49 b(234)1054 1013 y @beginspecial @setspecial @endspecial(B.1.4)77 b(Command)27 b(iden)n(ti\014ers)p @beginspecial @setspecial @endspecial 41 w(.)41 b(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(234)1054 1113 y @beginspecial @setspecial @endspecial(B.1.5)77 b(V)-7 b(ariable)27 b(references)p @beginspecial @setspecial @endspecial 48 w(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(235)1054 1213 y @beginspecial @setspecial @endspecial(B.1.6)77 b(String)27 b(constan)n(ts)p @beginspecial @setspecial @endspecial 77 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(235)863 1312 y @beginspecial @setspecial @endspecial(B.2)67 b(The)28 b(OMak)n(e)e(grammar)p @beginspecial @setspecial @endspecial 79 w(.)42 b(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(236)1054 1412 y @beginspecial @setspecial @endspecial(B.2.1)77 b(Expressions)p @beginspecial @setspecial @endspecial 46 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(236)1320 1512 y @beginspecial @setspecial @endspecial(B.2.1.1)86 b(Inline)28 b(applications)p @beginspecial @setspecial @endspecial 46 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)49 b(237)1054 1611 y @beginspecial @setspecial @endspecial(B.2.2)77 b(Statemen)n(ts)28 b(and)f(programs)p @beginspecial @setspecial @endspecial 56 w(.)42 b(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(237)1320 1711 y @beginspecial @setspecial @endspecial(B.2.2.1)86 b(Sp)r(ecial)28 b(forms)p @beginspecial @setspecial @endspecial 34 w(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)49 b(239)1320 1810 y @beginspecial @setspecial @endspecial(B.2.2.2)86 b(V)-7 b(ariable)27 b(de\014nitions)p @beginspecial @setspecial @endspecial 77 w(.)41 b(.)h(.)f(.)h(.)f(.)h (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(241)1320 1910 y @beginspecial @setspecial @endspecial(B.2.2.3)86 b(Applications)28 b(and)f(function)h(de\014nitions)p @beginspecial @setspecial @endspecial 81 w(.)42 b(.)f(.)h(.)g(.)f(.)49 b(241)1320 2010 y @beginspecial @setspecial @endspecial(B.2.2.4)86 b(Ob)5 b(jects)p @beginspecial @setspecial @endspecial 47 w(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(242)1320 2109 y @beginspecial @setspecial @endspecial(B.2.2.5)86 b(Rules)p @beginspecial @setspecial @endspecial 62 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(243)1320 2209 y @beginspecial @setspecial @endspecial(B.2.2.6)86 b(Shell)28 b(commands)p @beginspecial @setspecial @endspecial 62 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)49 b(245)863 2309 y @beginspecial @setspecial @endspecial(B.3)67 b(Dollar)27 b(mo)r(di\014ers)p @beginspecial @setspecial @endspecial 26 w(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) 49 b(246)739 2491 y @beginspecial @setspecial @endspecial Fq(C)55 b(References)p @beginspecial @setspecial @endspecial 2148 w(255)863 2591 y @beginspecial @setspecial @endspecial Fs(C.1)66 b(See)28 b(Also)p @beginspecial @setspecial @endspecial 43 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) f(.)49 b(255)863 2690 y @beginspecial @setspecial @endspecial(C.2)66 b(V)-7 b(ersion)p @beginspecial @setspecial @endspecial 82 w(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(255)863 2790 y @beginspecial @setspecial @endspecial(C.3)66 b(License)28 b(and)f(Cop)n(yrigh)n(t)p @beginspecial @setspecial @endspecial 50 w(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(255)863 2890 y @beginspecial @setspecial @endspecial(C.4)66 b(Author)p @beginspecial @setspecial @endspecial 26 w(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)49 b(255)p eop end %%Page: 15 15 TeXDict begin 15 14 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(1)291 1553 y Fr(Guide)291 1985 y Fs(If)29 b(y)n(ou)f(are)g(new)h(to)g(OMak)n(e,)g(y)n(ou)f(the)h @beginspecial @setspecial @endspecial(omak)n(e-quic)n(kstart)p @beginspecial @setspecial @endspecial 26 w(presen)n(ts)g(a)f(short)h (in)n(tro)r(duc-)291 2084 y(tion)k(that)h(describ)r(es)f(ho)n(w)f(to)i (set)f(up)h(a)f(pro)5 b(ject.)53 b(The)34 b @beginspecial @setspecial @endspecial(omak)n(e-build-examples)p @beginspecial @setspecial @endspecial 31 w(giv)n(es)291 2184 y(larger)29 b(examples)i(of)g(build)h(pro)5 b(jects,)31 b(and)h @beginspecial @setspecial @endspecial(omak)n(e-language-examples)p @beginspecial @setspecial @endspecial 27 w(presen)n(ts)e(pro-)291 2284 y(gramming)c(examples.)291 2456 y Fq(Quic)m(kstart)33 b @beginspecial @setspecial @endspecial(2)p @beginspecial @setspecial @endspecial 41 w Fs(A)28 b(quic)n(kstart)e(guide)i(to)f (using)h Fo(omake)p Fs(.)291 2618 y Fq(Build)i(examples)h @beginspecial @setspecial @endspecial(3)p @beginspecial @setspecial @endspecial 42 w Fs(Adv)-5 b(anced)27 b(build)i(examples.) 291 2780 y Fq(The)j(OMak)m(e)g(language)f @beginspecial @setspecial @endspecial(4)p @beginspecial @setspecial @endspecial 41 w Fs(The)d Fo(omake)e Fs(language,)h(including)h(a)f (description)h(of)g(ob-)498 2880 y(jects,)g(expressions,)e(and)h(v)-5 b(alues.)291 3042 y Fq(V)d(ariables)31 b(and)i(naming)e @beginspecial @setspecial @endspecial(5)p @beginspecial @setspecial @endspecial 41 w Fs(V)-7 b(ariables,)26 b(names,)i(and)f (en)n(vironmen)n(ts.)291 3204 y Fq(Language)32 b(discussion)e @beginspecial @setspecial @endspecial(6)p @beginspecial @setspecial @endspecial 41 w Fs(F)-7 b(urther)34 b(discussion)f(on)g (the)h(language,)g(including)g(scop-)498 3304 y(ing,)28 b(ev)-5 b(aluation,)27 b(and)g(ob)5 b(jects.)291 3466 y Fq(Language)32 b(examples)f @beginspecial @setspecial @endspecial(7)p @beginspecial @setspecial @endspecial 41 w Fs(Additional)d(language)e(examples.)291 3628 y Fq(Build)k(rules)i @beginspecial @setspecial @endspecial(8)p @beginspecial @setspecial @endspecial 41 w Fs(De\014ning)c(and)f(using) g(rules)g(to)h(build)g(programs.)291 3790 y Fq(Base)j(builtin)g (functions)g @beginspecial @setspecial @endspecial(9)p @beginspecial @setspecial @endspecial 42 w Fs(F)-7 b(unctions)43 b(and)f(v)-5 b(ariables)42 b(in)h(the)g(core)f(standard)g(li-)498 3889 y(brary)-7 b(.)291 4051 y Fq(System)31 b(functions)h @beginspecial @setspecial @endspecial(10)p @beginspecial @setspecial @endspecial 41 w Fs(F)-7 b(unctions)18 b(on)g(\014les,)i (input/output,)h(and)e(system)f(commands.)291 4213 y Fq(Shell)30 b(commands)i @beginspecial @setspecial @endspecial(11)p @beginspecial @setspecial @endspecial 41 w Fs(Using)27 b(the)h Fo(omake)e Fs(shell)h(for)g(command-line)g(in)n(terpretation.) 291 4376 y Fq(The)32 b(standard)h(ob)5 b(jects)32 b @beginspecial @setspecial @endspecial(12)p @beginspecial @setspecial @endspecial 41 w Fs(P)n(erv)-5 b(asiv)n(es)25 b(de\014nes)i(the)h (built-in)g(ob)5 b(jects.)291 4538 y Fq(Standard)33 b(build)e (de\014nitions)f @beginspecial @setspecial @endspecial(13)p @beginspecial @setspecial @endspecial 41 w Fs(The)19 b(build)g(sp)r(eci\014cations)e(for)h(programming)e(lan-)498 4637 y(guages)26 b(in)i(the)g(OMak)n(e)e(standard)h(library)-7 b(.)291 4799 y Fq(Standard)33 b(auto)s(con\014guration)f(functions)f (and)i(v)-5 b(ariables)31 b @beginspecial @setspecial @endspecial(14)p @beginspecial @setspecial @endspecial 41 w Fs(The)19 b(utilities)g(pro)n(v)n(o)r(ded)498 4899 y(b)n(y)30 b(the)g(OMak)n(e)f(standard)g(library)f(to)i(simplify)g (programming)e(of)i(auto)r(con\014gu-)498 4998 y(ration)d(tests.)1681 5208 y(15)p eop end %%Page: 16 16 TeXDict begin 16 15 bop 739 282 a @beginspecial @setspecial @endspecial Fs(16)1927 b Fp(CHAPTER)28 b(1.)64 b(GUIDE)739 515 y Fq(The)32 b(in)m(teractiv)m(e)h(command)e(in)m(terpreter)i @beginspecial @setspecial @endspecial(15)p @beginspecial @setspecial @endspecial 41 w Fs(The)18 b Fo(osh)f Fs(command-line)h(in) n(terpreter.)739 681 y Fq(App)s(endices)41 b(OMak)m(e)32 b(command-line)e(options)h @beginspecial @setspecial @endspecial(A)p @beginspecial @setspecial @endspecial 41 w Fs(Command-line)26 b(options)g(for)1129 781 y Fo(omake)p Fs(.)946 914 y Fq(The)32 b(OMak)m(e)h(language)e(grammar)h @beginspecial @setspecial @endspecial(B)p @beginspecial @setspecial @endspecial 42 w Fs(A)20 b(more)e(precise)h(sp)r (eci\014cation)g(of)h(the)1129 1013 y(OMak)n(e)26 b(language.)739 1179 y @beginspecial @setspecial @endspecial Fq(All)31 b(the)h(do)s(cumen)m(tation)f(on)h(a)g(single)e(page)p @beginspecial @setspecial @endspecial 41 w Fs(All)22 b(the)g(OMak)n(e)e(do)r(cumen)n(tation)h(in)946 1279 y(a)28 b(single)f(page.)p eop end %%Page: 17 17 TeXDict begin 17 16 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 708 x Fm(Chapter)64 b(2)291 1557 y Fr(OMak)-6 b(e)76 b(quic)-6 b(kstart)77 b(guide)291 1929 y @beginspecial @setspecial @endspecial 111 x Fl(2.1)135 b(Description)291 2225 y Fo(omake)30 b Fs(is)j(designed)f(for)g(building)h(pro)5 b(jects)31 b(that)i(migh)n(t)g(ha)n(v)n(e)e(source)g(\014les)i(in)g (sev)n(eral)291 2325 y(directories.)43 b(Pro)5 b(jects)29 b(are)g(normally)g(sp)r(eci\014ed)i(using)f(an)g Fo(OMakefile)c Fs(in)31 b(eac)n(h)e(of)i(the)291 2425 y(pro)5 b(ject)29 b(directories,)i(and)f(an)g Fo(OMakeroot)d Fs(\014le)k(in)g(the)g(ro)r (ot)f(directory)f(of)i(the)g(pro)5 b(ject.)291 2524 y(The)23 b Fo(OMakeroot)c Fs(\014le)k(sp)r(eci\014es)g(general)f(build)h(rules,) h(and)f(the)g Fo(OMakefile)p Fs(s)c(sp)r(ecify)24 b(the)291 2624 y(build)35 b(parameters)e(sp)r(eci\014c)i(to)f(eac)n(h)g(of)h(the) g(sub)r(directories.)57 b(When)36 b Fo(omake)c Fs(runs,)k(it)291 2723 y(w)n(alks)28 b(the)i(con\014guration)e(tree,)i(ev)-5 b(aluating)29 b(rules)g(from)h(all)f(of)h(the)g Fo(OMakefile)p Fs(s.)39 b(The)291 2823 y(pro)5 b(ject)26 b(is)i(then)g(built)g(from)g (the)g(en)n(tire)f(collection)g(of)g(build)h(rules.)291 2963 y @beginspecial @setspecial @endspecial 102 x Fk(2.1.1)112 b(Automatic)37 b(dep)s(endency)j(analysis)291 3222 y Fs(Dep)r(endency)33 b(analysis)f(has)g(alw)n(a)n(ys)f(b)r(een)j (problematic)e(with)h(the)g Fo(make)p Fs(\(1\))f(program.)291 3321 y Fo(omake)19 b Fs(addresses)i(this)h(b)n(y)f(adding)h(the)g Fo(.SCANNER)c Fs(target,)k(whic)n(h)g(sp)r(eci\014es)g(a)f(command)291 3421 y(to)27 b(pro)r(duce)g(dep)r(endencies.)37 b(F)-7 b(or)27 b(example,)h(the)g(follo)n(wing)e(rule)465 3613 y Fo(.SCANNER:)40 b(\045.o:)i(\045.c)639 3712 y($\(CC\))g($\(INCLUDE\)) d(-MM)k($<)415 3902 y Fs(is)30 b(the)g(standard)f(w)n(a)n(y)g(to)g (generate)g(dep)r(endencies)h(for)f Fo(.c)g Fs(\014les.)44 b Fo(omake)28 b Fs(will)i(auto-)291 4002 y(matically)d(run)g(the)h (scanner)f(when)g(it)h(needs)g(to)f(determine)h(dep)r(endencies)g(for)f (a)g(\014le.)291 4142 y @beginspecial @setspecial @endspecial 102 x Fk(2.1.2)112 b(Con)m(ten)m(t-based)39 b(dep)s(endency)g(analysis) 291 4401 y Fs(Dep)r(endency)h(analysis)f(in)h(omak)n(e)f(uses)g(MD5)h (digests)f(to)h(determine)g(whether)g(\014les)291 4500 y(ha)n(v)n(e)32 b(c)n(hanged.)53 b(After)33 b(eac)n(h)g(run,)h Fo(omake)e Fs(stores)g(the)h(dep)r(endency)h(information)f(in)g(a)291 4600 y(\014le)h(called)h Fo(.omakedb)c Fs(in)k(the)g(pro)5 b(ject)34 b(ro)r(ot)g(directory)-7 b(.)57 b(When)35 b(a)f(rule)g(is)h (considered)291 4700 y(for)g(execution,)k(the)d(command)g(is)g(not)h (executed)f(if)h(the)g(target,)g(dep)r(endencies,)i(and)291 4799 y(command)e(sequence)h(are)f(unc)n(hanged)g(since)h(the)h(last)e (run)h(of)45 b Fo(omake)p Fs(.)66 b(As)38 b(an)g(opti-)291 4899 y(mization,)25 b Fo(omake)f Fs(do)r(es)h(not)g(recompute)g(the)h (digest)f(for)g(a)g(\014le)g(that)h(has)f(an)g(unc)n(hanged)291 4998 y(mo)r(di\014cation)i(time,)h(size,)f(and)h(ino)r(de)g(n)n(um)n(b) r(er.)1681 5208 y(17)p eop end %%Page: 18 18 TeXDict begin 18 17 bop 739 282 a @beginspecial @setspecial @endspecial Fs(18)991 b Fp(CHAPTER)27 b(2.)65 b(OMAKE)26 b(QUICKST)-7 b(AR)g(T)28 b(GUIDE)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(2.2)135 b(F)-11 b(or)45 b(users)g(already)h(familiar)g(with)g(mak)l(e)739 697 y Fs(F)-7 b(or)21 b(users)f(already)g(familiar)h(with)h(the)g Fo(make)p Fs(\(1\))e(command,)j(here)e(is)g(a)g(list)h(of)g (di\013erences)739 797 y(to)27 b(k)n(eep)g(in)h(mind)h(when)e(using)i Fo(omake)p Fs(.)863 974 y Fj(\017)41 b Fs(In)i Fo(omake)p Fs(,)g(y)n(ou)e(are)g(m)n(uc)n(h)h(less)g(lik)n(ely)f(to)h(de\014ne)g (build)h(rules)e(of)h(y)n(our)f(o)n(wn.)946 1074 y(The)28 b(system)e(pro)n(vides)g(man)n(y)h(standard)f(functions)h(\(lik)n(e)g @beginspecial @setspecial @endspecial Fo(StaticCLibrary)p @beginspecial @setspecial @endspecial 21 w Fs(and)946 1173 y @beginspecial @setspecial @endspecial Fo(CProgram)p @beginspecial @setspecial @endspecial Fs(\),)e(describ)r(ed)j(in)f (Chapter)g @beginspecial @setspecial @endspecial(13)p @beginspecial @setspecial @endspecial(,)g(to)h(sp)r(ecify)g(these)f (builds)h(more)f(simply)-7 b(.)863 1337 y Fj(\017)41 b Fs(Implicit)32 b(rules)d(using)i Fo(.SUFFIXES)26 b Fs(and)31 b(the)f Fo(.suf1.suf2:)c Fs(are)k(not)g(supp)r(orted.)946 1437 y(Y)-7 b(ou)28 b(should)f(use)h(wildcard)f(patterns)g(instead)g Fo(\045.suf2:)41 b(\045.suf1)p Fs(.)863 1600 y Fj(\017)g Fs(Scoping)24 b(is)g(signi\014can)n(t:)34 b(y)n(ou)23 b(should)h(de\014ne)g(v)-5 b(ariables)23 b(and)h Fo(.PHONY)d Fs(targets)i(\(see)946 1700 y(Section)28 b @beginspecial @setspecial @endspecial(8.10)p @beginspecial @setspecial @endspecial(\))f(b)r(efore)g(they)h(are)e(used.)863 1864 y Fj(\017)41 b Fs(Sub)r(directories)24 b(are)f(incorp)r(orated)g(in)n (to)h(a)g(pro)5 b(ject)23 b(using)h(the)h Fo(.SUBDIRS:)20 b Fs(target)946 1964 y(\(see)28 b(Section)g @beginspecial @setspecial @endspecial(8.8)p @beginspecial @setspecial @endspecial(\).)739 2109 y @beginspecial @setspecial @endspecial 128 x Fl(2.3)135 b(Building)45 b(a)g(small)h(C)f(program) 739 2419 y Fs(T)-7 b(o)22 b(start)f(a)h(new)g(pro)5 b(ject,)23 b(the)f(easiest)g(metho)r(d)g(is)h(to)f(c)n(hange)f(directories)f(to)i (the)h(pro)5 b(ject)739 2519 y(ro)r(ot)27 b(and)g(use)h(the)g(command)f Fo(omake)41 b(--install)24 b Fs(to)k(install)f(default)h Fo(OMakefile)p Fs(s.)913 2696 y Fo($)43 b(cd)g(~/newproject)913 2795 y($)g(omake)f(--install)913 2895 y(***)h(omake:)e(creating)f (OMakeroot)913 2995 y(***)j(omake:)e(creating)f(OMakefile)913 3094 y(***)j(omake:)e(project)f(files)i(OMakefile)e(and)i(OMakeroot)e (have)i(been)g(installed)913 3194 y(***)h(omake:)e(you)h(should)f(edit) h(these)g(files)f(before)g(continuing)863 3371 y Fs(The)d(default)g Fo(OMakefile)d Fs(con)n(tains)h(sections)i(for)f(building)h(C)g(and)f (OCaml)g(pro-)739 3471 y(grams.)e(F)-7 b(or)27 b(no)n(w,)g(w)n(e'll)h (build)g(a)f(simple)h(C)f(pro)5 b(ject.)863 3570 y(Supp)r(ose)23 b(w)n(e)e(ha)n(v)n(e)g(a)h(C)g(\014le)h(called)e Fo(hello_code.c)d Fs(con)n(taining)j(the)h(follo)n(wing)f(co)r(de:)913 3748 y Fo(#include)41 b()913 3947 y(int)i(main\(int)d(argc,)h (char)h(**argv\))913 4046 y({)1088 4146 y(printf\("Hello)c (world\\n"\);)1088 4246 y(return)j(0;)913 4345 y(})863 4522 y Fs(T)-7 b(o)18 b(build)h(the)g(program)d(a)i(program)f Fo(hello)f Fs(from)i(this)h(\014le,)h(w)n(e)e(can)g(use)g(the)h @beginspecial @setspecial @endspecial Fo(CProgram)739 4622 y Fs(function)p @beginspecial @setspecial @endspecial(.)37 b(The)26 b Fo(OMakefile)d Fs(con)n(tains)j(just)h(one)f(line)h(that)f (sp)r(eci\014es)h(that)f(the)h(program)739 4722 y Fo(hello)i Fs(is)h(to)h(b)r(e)g(built)h(from)e(the)h(source)f(co)r(de)g(in)h(the)g Fo(hello_code.c)26 b Fs(\014le)31 b(\(note)g(that)739 4821 y(\014le)d(su\016xes)f(are)f(not)i(passed)f(to)g(these)h (functions\).)913 4998 y Fo(CProgram\(hello,)38 b(hello_code\))p eop end %%Page: 19 19 TeXDict begin 19 18 bop 291 282 a @beginspecial @setspecial @endspecial Fp(2.3.)63 b(BUILDING)29 b(A)f(SMALL)g(C)f(PR)n(OGRAM)1198 b Fs(19)415 515 y(No)n(w)25 b(w)n(e)h(can)f(run)h Fo(omake)e Fs(to)h(build)i(the)f(pro)5 b(ject.)36 b(Note)25 b(that)i(the)f (\014rst)f(time)i(w)n(e)e(run)291 615 y Fo(omake)p Fs(,)32 b(it)i(b)r(oth)g(scans)f(the)g Fo(hello_code.c)c Fs(\014le)k(for)g(dep) r(endencies,)i(and)f(compiles)e(it)291 715 y(using)d(the)i Fo(cc)f Fs(compiler.)44 b(The)30 b(status)g(line)h(prin)n(ted)f(at)g (the)g(end)h(indicates)f(ho)n(w)g(man)n(y)291 814 y(\014les)39 b(w)n(ere)g(scanned,)j(ho)n(w)d(man)n(y)g(w)n(ere)g(built,)k(and)d(ho)n (w)f(man)n(y)g(MD5)h(digests)f(w)n(ere)291 914 y(computed.)465 1096 y Fo($)k(omake)f(hello)465 1196 y(***)g(omake:)f(reading)g (OMakefiles)465 1296 y(***)h(omake:)f(finished)g(reading)f(OMakefiles)g (\(0.0)i(sec\))465 1395 y(-)h(scan)f(.)h(hello_code.o)465 1495 y(+)g(cc)g(-I.)f(-MM)h(hello_code.c)465 1595 y(-)g(build)f(.)h (hello_code.o)465 1694 y(+)g(cc)g(-I.)f(-c)h(-o)g(hello_code.o)38 b(hello_code.c)465 1794 y(-)43 b(build)f(.)h(hello)465 1893 y(+)g(cc)g(-o)g(hello)e(hello_code.o)465 1993 y(***)h(omake:)f (done)h(\(0.5)g(sec,)g(1/6)h(scans,)e(2/6)h(rules,)f(5/22)h(digests\)) 465 2093 y($)h(omake)465 2192 y(***)f(omake:)f(reading)g(OMakefiles)465 2292 y(***)h(omake:)f(finished)g(reading)f(OMakefiles)g(\(0.1)i(sec\)) 465 2392 y(***)g(omake:)f(done)h(\(0.1)g(sec,)g(0/4)h(scans,)e(0/4)h (rules,)f(0/9)h(digests\))415 2574 y Fs(If)23 b(w)n(e)f(w)n(an)n(t)g (to)g(c)n(hange)g(the)h(compile)f(options,)h(w)n(e)f(can)g(rede\014ne)g (the)h Fo(CC)f Fs(and)g Fo(CFLAGS)291 2674 y Fs(v)-5 b(ariables)19 b Fi(b)l(efor)l(e)29 b Fs(the)21 b Fo(CProgram)d Fs(line.)35 b(In)22 b(this)f(example,)h(w)n(e)f(will)g(use)g(the)h Fo(gcc)e Fs(compiler)291 2773 y(with)j(the)f Fo(-g)g Fs(option.)35 b(In)23 b(addition,)g(w)n(e)f(will)h(sp)r(ecify)g(a)f Fo(.DEFAULT)d Fs(target)j(to)g(b)r(e)h(built)g(b)n(y)291 2873 y(default.)45 b(The)30 b Fo(EXE)f Fs(v)-5 b(ariable)29 b(is)h(de\014ned)g(to)g(b)r(e)h Fo(.exe)d Fs(on)i Fo(Win32)e Fs(systems;)j(it)g(is)f(empt)n(y)291 2973 y(otherwise.)465 3155 y Fo(CC)43 b(=)g(gcc)465 3255 y(CFLAGS)e(+=)i(-g)465 3355 y(CProgram\(hello,)37 b(hello_code\))465 3454 y(.DEFAULT:)j (hello$\(EXE\))415 3637 y Fs(Here)27 b(is)h(the)g(corresp)r(onding)d (run)j(for)f Fo(omake)p Fs(.)465 3820 y Fo($)43 b(omake)465 3919 y(***)f(omake:)f(reading)g(OMakefiles)465 4019 y(***)h(omake:)f (finished)g(reading)f(OMakefiles)g(\(0.0)i(sec\))465 4118 y(-)h(scan)f(.)h(hello_code.o)465 4218 y(+)g(gcc)f(-g)h(-I.)g(-MM) f(hello_code.c)465 4318 y(-)h(build)f(.)h(hello_code.o)465 4417 y(+)g(gcc)f(-g)h(-I.)g(-c)f(-o)h(hello_code.o)c(hello_code.c)465 4517 y(-)k(build)f(.)h(hello)465 4617 y(+)g(gcc)f(-g)h(-o)g(hello)e (hello_code.o)465 4716 y(***)h(omake:)f(done)h(\(0.4)g(sec,)g(1/7)h (scans,)e(2/7)h(rules,)f(3/22)h(digests\))415 4899 y Fs(W)-7 b(e)30 b(can,)h(of)f(course,)f(include)h(m)n(ultiple)h(\014les) f(in)g(the)g(program.)42 b(Supp)r(ose)30 b(w)n(e)g(write)291 4998 y(a)d(new)g(\014le)h Fo(hello_helper.c)p Fs(.)j(W)-7 b(e)28 b(w)n(ould)f(include)h(this)g(in)g(the)g(pro)5 b(ject)27 b(as)g(follo)n(ws.)p eop end %%Page: 20 20 TeXDict begin 20 19 bop 739 282 a @beginspecial @setspecial @endspecial Fs(20)991 b Fp(CHAPTER)27 b(2.)65 b(OMAKE)26 b(QUICKST)-7 b(AR)g(T)28 b(GUIDE)913 515 y Fo(CC)43 b(=)g(gcc)913 615 y(CFLAGS)e(+=)i(-g)913 715 y(CProgram\(hello,)38 b(hello_code)h(hello_helper\))913 814 y(.DEFAULT:)h(hello$\(EXE\))739 952 y @beginspecial @setspecial @endspecial 144 x Fl(2.4)135 b(Larger)46 b(pro)7 b(jects)739 1281 y Fs(As)36 b(the)f(pro)5 b(ject)35 b(gro)n(ws)f(it)i(is)f(lik)n(ely)g(that)h(w)n(e)f(will)h(w)n (an)n(t)f(to)h(build)g(libraries)e(of)h(co)r(de.)739 1380 y(Libraries)26 b(can)i(b)r(e)g(built)h(using)e(the)i Fo(StaticCLibrary)22 b Fs(function.)39 b(Here)27 b(is)h(an)g(example) 739 1480 y(of)f(an)h Fo(OMakefile)c Fs(with)k(t)n(w)n(o)f(libraries.) 913 1670 y Fo(CC)43 b(=)g(gcc)913 1769 y(CFLAGS)e(+=)i(-g)913 1969 y(FOO_FILES)d(=)j(foo_a)f(foo_b)913 2068 y(BAR_FILES)e(=)j(bar_a)f (bar_b)f(bar_c)913 2268 y(StaticCLibrary\(li)o(bf)o(oo,)c ($\(FOO_FILES\)\))913 2367 y(StaticCLibrary\(li)o(bb)o(ar,)g ($\(BAR_FILES\)\))913 2566 y(#)43 b(The)g(hello)e(program)g(is)i (linked)e(with)h(both)g(libraries)913 2666 y(LIBS)g(=)h(libfoo)e (libbar)913 2766 y(CProgram\(hello,)d(hello_code)h(hello_helper\))913 2965 y(.DEFAULT:)h(hello$\(EXE\))739 3103 y @beginspecial @setspecial @endspecial 144 x Fl(2.5)135 b(Sub)t(directories)739 3432 y Fs(As)40 b(the)h(pro)5 b(ject)39 b(gro)n(ws)g(ev)n(en)g (further,)44 b(it)c(is)g(a)g(go)r(o)r(d)g(idea)g(to)g(split)g(it)h(in)n (to)f(sev)n(eral)739 3531 y(directories.)35 b(Supp)r(ose)28 b(w)n(e)f(place)g(the)h Fo(libfoo)e Fs(and)h Fo(libbar)e Fs(in)n(to)j(sub)r(directories.)863 3632 y(In)g(eac)n(h)f(sub)r (directory)-7 b(,)27 b(w)n(e)g(de\014ne)h(an)g Fo(OMakefile)c Fs(for)j(that)h(directory)-7 b(.)36 b(F)-7 b(or)27 b(exam-)739 3732 y(ple,)h(here)f(is)g(an)h(example)f Fo(OMakefile)d Fs(for)j(the)h Fo(foo)e Fs(sub)r(directory)-7 b(.)913 3922 y Fo(INCLUDES)41 b(+=)h(..)h(../bar)913 4121 y(FOO_FILES)d(=)j (foo_a)f(foo_b)913 4220 y(StaticCLibrary\(li)o(bf)o(oo,)37 b($\(FOO_FILES\)\))863 4409 y Fs(Note)26 b(the)g(the)g Fo(INCLUDES)d Fs(v)-5 b(ariable)24 b(is)i(de\014ned)g(to)g(include)g (the)g(other)f(directories)f(in)739 4508 y(the)k(pro)5 b(ject.)863 4609 y(No)n(w,)29 b(the)h(next)f(step)g(is)g(to)g(link)h (the)f(sub)r(directories)f(in)n(to)h(the)g(main)h(pro)5 b(ject.)40 b(The)739 4709 y(pro)5 b(ject)27 b Fo(OMakefile)d Fs(should)j(b)r(e)h(mo)r(di\014ed)g(to)g(include)g(a)f Fo(.SUBDIRS:)d Fs(target.)913 4899 y Fo(#)43 b(Project)e(configuration) 913 4998 y(CC)i(=)g(gcc)p eop end %%Page: 21 21 TeXDict begin 21 20 bop 291 282 a @beginspecial @setspecial @endspecial Fp(2.5.)63 b(SUBDIRECTORIES)1831 b Fs(21)465 515 y Fo(CFLAGS)41 b(+=)i(-g)465 715 y(#)g(Subdirectories)465 814 y(.SUBDIRS:)d(foo)i(bar)465 1013 y(#)h(The)f(libraries)e(are)j(now) f(in)h(subdirectories)465 1113 y(LIBS)f(=)h(foo/libfoo)c(bar/libbar)465 1312 y(CProgram\(hello,)e(hello_code)j(hello_helper\))465 1512 y(.DEFAULT:)g(hello$\(EXE\))415 1686 y Fs(Note)h(that)g(the)h(v)-5 b(ariables)39 b Fo(CC)i Fs(and)g Fo(CFLAGS)d Fs(are)i(de\014ned)h Fi(b)l(efor)l(e)49 b Fs(the)41 b Fo(.SUBDIRS)291 1786 y Fs(target.)61 b(These)36 b(v)-5 b(ariables)35 b(remain)g(de\014ned)i (in)f(the)g(sub)r(directories,)i(so)d(that)h Fo(libfoo)291 1885 y Fs(and)27 b Fo(libbar)e Fs(use)j Fo(gcc)42 b(-g)p Fs(.)415 1985 y(If)32 b(the)f(t)n(w)n(o)g(directories)f(are)g(to)h(b)r (e)g(con\014gured)f(di\013eren)n(tly)-7 b(,)33 b(w)n(e)e(ha)n(v)n(e)f (t)n(w)n(o)g(c)n(hoices.)291 2084 y(The)21 b Fo(OMakefile)d Fs(in)j(eac)n(h)g(sub)r(directory)f(can)h(b)r(e)h(mo)r(di\014ed)f(with) h(its)g(con\014guration)d(\(this)291 2184 y(is)27 b(ho)n(w)f(it)i(w)n (ould)f(normally)f(b)r(e)i(done\).)37 b(Alternativ)n(ely)-7 b(,)27 b(w)n(e)f(can)h(also)g(place)f(the)i(c)n(hange)291 2284 y(in)f(the)h(ro)r(ot)f Fo(OMakefile)p Fs(.)465 2458 y Fo(#)43 b(Default)e(project)f(configuration)465 2558 y(CC)j(=)g(gcc)465 2657 y(CFLAGS)e(+=)i(-g)465 2857 y(#)g(libfoo)e (uses)h(the)g(default)f(configuration)465 2956 y(.SUBDIRS:)f(foo)465 3155 y(#)j(libbar)e(uses)h(the)g(optimizing)e(compiler)465 3255 y(CFLAGS)h(+=)i(-O3)465 3355 y(.SUBDIRS:)d(bar)465 3554 y(#)j(Main)f(program)465 3654 y(LIBS)g(=)h(foo/libfoo)c (bar/libbar)465 3753 y(CProgram\(hello,)e(hello_code)j(hello_helper\)) 465 3952 y(.DEFAULT:)g(hello$\(EXE\))415 4127 y Fs(Note)35 b(that)g(the)f(w)n(a)n(y)g(w)n(e)g(ha)n(v)n(e)f(sp)r(eci\014ed)i(it,)i (the)e Fo(CFLAGS)d Fs(v)-5 b(ariable)33 b(also)h(con)n(tains)291 4226 y(the)29 b Fo(-O3)f Fs(option)h(for)g(the)h Fo(CProgram)p Fs(,)c(and)k Fo(hello_code.c)24 b Fs(and)29 b Fo(hello_helper.c)24 b Fs(\014le)291 4326 y(will)g(b)r(oth)g(b)r(e)g(compiled)g(with)g(the)g Fo(-O3)f Fs(option.)35 b(If)24 b(w)n(e)g(w)n(an)n(t)f(to)g(mak)n(e)g (the)h(c)n(hange)f(truly)291 4426 y(lo)r(cal)34 b(to)h Fo(libbar)p Fs(,)f(w)n(e)g(can)h(put)g(the)h Fo(bar)d Fs(sub)r(directory)h(in)h(its)g(o)n(wn)g(scop)r(e)f(using)h(the)291 4525 y Fo(section)24 b Fs(form.)465 4700 y Fo(#)43 b(Default)e(project) f(configuration)465 4799 y(CC)j(=)g(gcc)465 4899 y(CFLAGS)e(+=)i(-g)p eop end %%Page: 22 22 TeXDict begin 22 21 bop 739 282 a @beginspecial @setspecial @endspecial Fs(22)991 b Fp(CHAPTER)27 b(2.)65 b(OMAKE)26 b(QUICKST)-7 b(AR)g(T)28 b(GUIDE)913 515 y Fo(#)43 b(libfoo)f(uses)f (the)i(default)d(configuration)913 615 y(.SUBDIRS:)g(foo)913 814 y(#)j(libbar)f(uses)f(the)i(optimizing)c(compiler)913 914 y(section)1088 1013 y(CFLAGS)i(+=)h(-O3)1088 1113 y(.SUBDIRS:)d(bar)913 1312 y(#)k(Main)f(program)f(does)h(not)g(use)h (the)f(optimizing)d(compiler)913 1412 y(LIBS)j(=)h(foo/libfoo)d (bar/libbar)913 1512 y(CProgram\(hello,)e(hello_code)h(hello_helper\)) 913 1711 y(.DEFAULT:)h(hello$\(EXE\))863 1908 y Fs(Later,)24 b(supp)r(ose)g(w)n(e)f(decide)h(to)g(p)r(ort)g(this)g(pro)5 b(ject)23 b(to)h Fo(Win32)p Fs(,)f(and)g(w)n(e)h(disco)n(v)n(er)e(that) 739 2008 y(w)n(e)27 b(need)h(di\013eren)n(t)g(compiler)e(\015ags)h(and) g(an)h(additional)f(library)-7 b(.)913 2209 y Fo(#)43 b(Default)e(project)g(configuration)913 2309 y(if)i($\(equal)e ($\(OSTYPE\),)e(Win32\))1088 2408 y(CC)j(=)i(cl)e(/nologo)1088 2508 y(CFLAGS)f(+=)h(/DWIN32)f(/MT)1088 2607 y(export)913 2707 y(else)1088 2807 y(CC)h(=)i(gcc)1088 2906 y(CFLAGS)d(+=)h(-g)1088 3006 y(export)913 3205 y(#)h(libfoo)f(uses)f(the)i(default)d (configuration)913 3305 y(.SUBDIRS:)g(foo)913 3504 y(#)j(libbar)f(uses) f(the)i(optimizing)c(compiler)913 3604 y(section)1088 3703 y(CFLAGS)i(+=)h($\(if)g($\(equal)f($\(OSTYPE\),)f(Win32\),)g ($\(EMPTY\),)g(-O3\))1088 3803 y(.SUBDIRS:)f(bar)913 4002 y(#)k(Default)e(libraries)913 4102 y(LIBS)h(=)h(foo/libfoo)d (bar/libbar)913 4301 y(#)j(We)g(need)f(libwin32)e(only)i(on)h(Win32)913 4401 y(if)g($\(equal)e($\(OSTYPE\),)e(Win32\))1044 4500 y(LIBS)j(+=)h(win32/libwin32)1044 4700 y(.SUBDIRS:)d(win32)1044 4799 y(export)913 4998 y(#)j(Main)f(program)f(does)h(not)g(use)h(the)f (optimizing)d(compiler)p eop end %%Page: 23 23 TeXDict begin 23 22 bop 291 282 a @beginspecial @setspecial @endspecial Fp(2.5.)63 b(SUBDIRECTORIES)1831 b Fs(23)465 515 y Fo(CProgram\(hello,)37 b(hello_code)j(hello_helper\))465 715 y(.DEFAULT:)g(hello$\(EXE\))415 910 y Fs(Note)25 b(the)g(use)g(of)g(the)g Fo(export)d Fs(directiv)n(es)i(to)h(exp)r(ort) f(the)h(v)-5 b(ariable)24 b(de\014nitions)h(from)291 1010 y(the)38 b(if-statemen)n(ts.)67 b(V)-7 b(ariables)37 b(in)h Fo(omake)e Fs(are)h Fi(sc)l(op)l(e)l(d)9 b Fs(|v)-5 b(ariables)37 b(in)h(nested)g(blo)r(c)n(ks)291 1110 y(\(blo)r(c)n(ks)i (with)g(greater)f(inden)n(tation\),)44 b(are)39 b(not)i(normally)e (de\014ned)i(in)g(outer)f(blo)r(c)n(ks.)291 1209 y(The)26 b Fo(export)e Fs(directiv)n(e)i(sp)r(eci\014es)g(that)h(the)g(v)-5 b(ariable)25 b(de\014nitions)i(in)f(the)h(nested)g(blo)r(c)n(ks)291 1309 y(should)g(b)r(e)h(exp)r(orted)f(to)h(their)f(paren)n(t)g(blo)r(c) n(k.)415 1412 y(Finally)-7 b(,)28 b(for)f(this)g(example,)g(w)n(e)g (decide)h(to)f(cop)n(y)g(all)g(libraries)f(in)n(to)h(a)g(common)g Fo(lib)291 1512 y Fs(directory)-7 b(.)52 b(W)-7 b(e)34 b(\014rst)f(de\014ne)h(a)e(directory)g(v)-5 b(ariable,)34 b(and)f(replace)g(o)r(ccurrences)e(of)j(the)291 1611 y Fo(lib)26 b Fs(string)h(with)h(the)g(v)-5 b(ariable.)465 1810 y Fo(#)43 b(The)f(common)g(lib)g(directory)465 1910 y(LIB)g(=)h($\(dir)f(lib\))465 2109 y(#)h(phony)f(target)f(to)h(build)g (just)g(the)g(libraries)465 2209 y(.PHONY:)f(makelibs)465 2408 y(#)i(Default)e(project)f(configuration)465 2508 y(if)j($\(equal)d($\(OSTYPE\),)g(Win32\))639 2607 y(CC)j(=)g(cl)g (/nologo)639 2707 y(CFLAGS)e(+=)i(/DWIN32)e(/MT)639 2807 y(export)465 2906 y(else)639 3006 y(CC)i(=)g(gcc)639 3106 y(CFLAGS)e(+=)i(-g)639 3205 y(export)465 3404 y(#)g(libfoo)e(uses) h(the)g(default)f(configuration)465 3504 y(.SUBDIRS:)f(foo)465 3703 y(#)j(libbar)e(uses)h(the)g(optimizing)e(compiler)465 3803 y(section)639 3903 y(CFLAGS)h(+=)i($\(if)f($\(equal)f ($\(OSTYPE\),)e(Win32\),)i($\(EMPTY\),)f(-O3\))639 4002 y(.SUBDIRS:)g(bar)465 4201 y(#)j(Default)e(libraries)465 4301 y(LIBS)h(=)h($\(LIB\)/libfoo)38 b($\(LIB\)/libbar)465 4500 y(#)43 b(We)g(need)f(libwin32)e(only)i(on)h(Win32)465 4600 y(if)g($\(equal)d($\(OSTYPE\),)g(Win32\))596 4700 y(LIBS)i(+=)g($\(LIB\)/libwin32)596 4899 y(.SUBDIRS:)e(win32)596 4998 y(export)p eop end %%Page: 24 24 TeXDict begin 24 23 bop 739 282 a @beginspecial @setspecial @endspecial Fs(24)991 b Fp(CHAPTER)27 b(2.)65 b(OMAKE)26 b(QUICKST)-7 b(AR)g(T)28 b(GUIDE)913 615 y Fo(#)43 b(Main)f(program)f (does)h(not)g(use)h(the)f(optimizing)d(compiler)913 715 y(CProgram\(hello,)f(hello_code)h(hello_helper\))913 914 y(.DEFAULT:)h(hello$\(EXE\))863 1105 y Fs(In)45 b(eac)n(h)e(sub)r (directory)-7 b(,)47 b(w)n(e)d(mo)r(dify)g(the)h Fo(OMakefile)p Fs(s)40 b(in)k(the)g(library)f(directo-)739 1205 y(ries)d(to)h(install) g(them)g(in)n(to)g(the)g Fo($\(LIB\))d Fs(directory)-7 b(.)76 b(Here)40 b(is)h(the)g(relev)-5 b(an)n(t)40 b(c)n(hange)739 1304 y(to)27 b Fo(foo/OMakefile)p Fs(.)913 1498 y Fo(INCLUDES)41 b(+=)h(..)h(../bar)913 1697 y(FOO_FILES)d(=)j(foo_a)f(foo_b)913 1797 y(StaticCLibraryIns)o(ta)o(ll\()o(ma)o(ke)o(lib)o(,)37 b($\(LIB\),)k(libfoo,)g($\(FOO_FILES\)\))863 1988 y Fs(Directory)29 b(\(and)h(\014le)f(names\))h(ev)-5 b(aluate)29 b(to)g(relativ)n(e)g (pathnames.)42 b(Within)30 b(the)g Fo(foo)739 2088 y Fs(directory)-7 b(,)26 b(the)i Fo($\(LIB\))e Fs(v)-5 b(ariable)26 b(ev)-5 b(aluates)27 b(to)g Fo(../lib)p Fs(.)863 2189 y(As)f(another)e(example,)h(instead)f(of)h(de\014ning)g (the)h Fo(INCLUDES)c Fs(v)-5 b(ariable)24 b(separately)f(in)739 2289 y(eac)n(h)k(sub)r(directory)-7 b(,)26 b(w)n(e)i(can)f(de\014ne)h (it)g(in)g(the)g(toplev)n(el)f(as)g(follo)n(ws.)913 2482 y Fo(INCLUDES)41 b(=)i($\(ROOT\))d($\(dir)i(foo)g(bar)h(win32\))863 2674 y Fs(In)19 b(the)g Fo(foo)e Fs(directory)-7 b(,)19 b(the)g Fo(INCLUDES)c Fs(v)-5 b(ariable)17 b(will)i(ev)-5 b(aluate)18 b(to)g(the)h(string)e Fo(..)43 b(.)g(../bar)f(../win32)p Fs(.)739 2773 y(In)25 b(the)g Fo(bar)e Fs(directory)-7 b(,)24 b(it)h(w)n(ould)f(b)r(e)h Fo(..)43 b(../foo)e(.)i(../win32)p Fs(.)33 b(In)25 b(the)g(ro)r(ot)f(directory)739 2873 y(it)k(w)n(ould)f(b)r(e)h Fo(.)43 b(foo)g(bar)f(win32)p Fs(.)739 3007 y @beginspecial @setspecial @endspecial 152 x Fl(2.6)135 b(Other)45 b(things)h(to)f(consider)739 3345 y Fo(omake)28 b Fs(also)i(handles)g(recursiv)n(e)f(sub)r (directories.)44 b(F)-7 b(or)30 b(example,)h(supp)r(ose)f(the)h Fo(foo)e Fs(di-)739 3444 y(rectory)i(itself)i(con)n(tains)f(sev)n(eral) f(sub)r(directories.)51 b(The)32 b Fo(foo/OMakefile)c Fs(w)n(ould)k(then)739 3544 y(con)n(tain)f(its)g(o)n(wn)g Fo(.SUBDIRS)d Fs(target,)k(and)f(eac)n(h)g(of)g(its)h(sub)r (directories)e(w)n(ould)h(con)n(tain)739 3644 y(its)d(o)n(wn)f Fo(OMakefile)p Fs(.)739 3778 y @beginspecial @setspecial @endspecial 152 x Fl(2.7)135 b(Building)45 b(OCaml)h(programs)739 4116 y Fs(By)36 b(default,)k Fo(omake)35 b Fs(is)i(also)e(con\014gured) h(with)i(functions)f(for)f(building)h(OCaml)f(pro-)739 4215 y(grams.)44 b(The)31 b(functions)g(for)f(OCaml)g(program)f(use)h (the)h Fo(OCaml)e Fs(pre\014x.)46 b(F)-7 b(or)30 b(example,)739 4315 y(supp)r(ose)20 b(w)n(e)g(reconstruct)f(the)h(previous)f(example)h (in)h(OCaml,)g(and)f(w)n(e)f(ha)n(v)n(e)g(a)h(\014le)h(called)739 4414 y Fo(hello_code.ml)h Fs(that)28 b(con)n(tains)f(the)h(follo)n (wing)e(co)r(de.)870 4608 y Fo(open)42 b(Printf)870 4807 y(let)g(\(\))h(=)g(printf)e("Hello)g(world\\n")863 4998 y Fs(An)28 b(example)g Fo(OMakefile)c Fs(for)j(this)h(simple)f(pro)5 b(ject)27 b(w)n(ould)g(con)n(tain)g(the)h(follo)n(wing.)p eop end %%Page: 25 25 TeXDict begin 25 24 bop 291 282 a @beginspecial @setspecial @endspecial Fp(2.7.)63 b(BUILDING)29 b(OCAML)e(PR)n(OGRAMS)1303 b Fs(25)465 515 y Fo(#)43 b(Use)f(the)h(byte-code)d(compiler)465 615 y(BYTE_ENABLED)f(=)k(true)465 715 y(NATIVE_ENABLED)38 b(=)43 b(false)465 814 y(OCAMLCFLAGS)c(+=)k(-g)465 1013 y(#)g(Build)f(the)g(program)465 1113 y(OCamlProgram\(hel)o(lo)o(,)c (hello_code\))465 1213 y(.DEFAULT:)i(hello.run)415 1410 y Fs(Next,)28 b(supp)r(ose)g(the)g(w)n(e)f(ha)n(v)n(e)g(t)n(w)n(o)g (library)f(sub)r(directories:)36 b(the)28 b Fo(foo)f Fs(sub)r(directory)291 1510 y(is)h(written)g(in)h(C,)f(the)g Fo(bar)f Fs(directory)g(is)i(written)f(in)g(OCaml,)g(and)g(w)n(e)g (need)g(to)g(use)h(the)291 1609 y(standard)d(OCaml)h Fo(Unix)f Fs(mo)r(dule.)465 1810 y Fo(#)43 b(Default)e(project)f (configuration)465 1910 y(if)j($\(equal)d($\(OSTYPE\),)g(Win32\))639 2010 y(CC)j(=)g(cl)g(/nologo)639 2109 y(CFLAGS)e(+=)i(/DWIN32)e(/MT)639 2209 y(export)465 2309 y(else)639 2408 y(CC)i(=)g(gcc)639 2508 y(CFLAGS)e(+=)i(-g)639 2607 y(export)465 2807 y(#)g(Use)f(the)h (byte-code)d(compiler)465 2906 y(BYTE_ENABLED)f(=)k(true)465 3006 y(NATIVE_ENABLED)38 b(=)43 b(false)465 3106 y(OCAMLCFLAGS)c(+=)k (-g)465 3305 y(#)g(library)e(subdirectories)465 3404 y(INCLUDES)f(+=)j($\(dir)e(foo)i(bar\))465 3504 y(OCAMLINCLUDES)38 b(+=)43 b($\(dir)e(foo)i(bar\))465 3604 y(.SUBDIRS:)d(foo)i(bar)465 3803 y(#)h(C)g(libraries)465 3903 y(LIBS)f(=)h(foo/libfoo)465 4102 y(#)g(OCaml)f(libraries)465 4201 y(OCAML_LIBS)d(=)44 b(bar/libbar)465 4401 y(#)f(Also)f(use)g(the)h(Unix)f(module)465 4500 y(OCAML_OTHER_LIBS)37 b(=)43 b(unix)465 4700 y(#)g(The)f(main)g (program)465 4799 y(OCamlProgram\(hel)o(lo)o(,)c(hello_code)h (hello_helper\))465 4998 y(.DEFAULT:)h(hello)p eop end %%Page: 26 26 TeXDict begin 26 25 bop 739 282 a @beginspecial @setspecial @endspecial Fs(26)991 b Fp(CHAPTER)27 b(2.)65 b(OMAKE)26 b(QUICKST)-7 b(AR)g(T)28 b(GUIDE)863 515 y Fs(The)g Fo(foo/OMakefile)22 b Fs(w)n(ould)28 b(b)r(e)g(con\014gured)e(as)h(a)g(C)h(library)-7 b(.)913 732 y Fo(FOO_FILES)40 b(=)j(foo_a)f(foo_b)913 831 y(StaticCLibrary\(li)o(bf)o(oo,)37 b($\(FOO_FILES\)\))863 1041 y Fs(The)28 b Fo(bar/OMakefile)22 b Fs(w)n(ould)28 b(build)g(an)f(ML)h(library)-7 b(.)870 1258 y Fo(BAR_FILES)40 b(=)j(bar_a)e(bar_b)h(bar_c)870 1357 y(OCamlLibrary\(li)o(bba)o(r,)37 b($\(BAR_FILES\)\))739 1530 y @beginspecial @setspecial @endspecial 138 x Fl(2.8)135 b(The)45 b(OMak)l(e\014le)h(and)e(OMak)l (ero)t(ot)i(\014les)739 1862 y Fo(OMake)69 b Fs(uses)28 b(the)g Fo(OMakefile)c Fs(and)k Fo(OMakeroot)c Fs(\014les)k(for)f (con\014guring)g(a)g(pro)5 b(ject.)37 b(The)739 1962 y(syn)n(tax)f(of)g(these)h(\014les)f(is)h(the)g(same,)h(but)g(their)e (role)g(is)g(sligh)n(tly)g(di\013eren)n(t.)65 b(F)-7 b(or)36 b(one)739 2061 y(thing,)e(ev)n(ery)d(pro)5 b(ject)31 b(m)n(ust)i(ha)n(v)n(e)e(exactly)h(one)g Fo(OMakeroot)c Fs(\014le)33 b(in)g(the)f(pro)5 b(ject)32 b(ro)r(ot)739 2161 y(directory)-7 b(.)35 b(This)26 b(\014le)f(serv)n(es)f(to)i(iden)n (tify)g(the)g(pro)5 b(ject)25 b(ro)r(ot,)g(and)h(it)g(con)n(tains)e(co) r(de)i(that)739 2261 y(sets)35 b(up)g(the)g(pro)5 b(ject.)58 b(In)35 b(con)n(trast,)g(a)g(m)n(ulti-directory)e(pro)5 b(ject)35 b(will)g(often)g(ha)n(v)n(e)f(an)739 2360 y Fo(OMakefile)f Fs(in)j(eac)n(h)g(of)g(the)h(pro)5 b(ject)36 b(sub)r(directories,)h(sp)r(ecifying)g(ho)n(w)f(to)g(build)h(the)739 2460 y(\014les)27 b(in)h(that)g(sub)r(directory)-7 b(.)863 2566 y(Normally)g(,)24 b(the)h Fo(OMakeroot)c Fs(\014le)j(is)g(b)r (oilerplate.)35 b(The)25 b(follo)n(wing)e(listing)h(is)g(a)g(t)n (ypical)739 2666 y(example.)913 2882 y Fo(include)41 b($\(STDLIB\)/build/)o(Co)o(mmo)o(n)913 2982 y(include)g ($\(STDLIB\)/build/)o(C)913 3082 y(include)g($\(STDLIB\)/build/)o(OC)o (aml)913 3181 y(include)g($\(STDLIB\)/build/)o(La)o(TeX)913 3380 y(#)i(Redefine)e(the)h(command-line)d(variables)913 3480 y(DefineCommandVars)o(\(.)o(\))913 3679 y(#)k(The)g(current)d (directory)g(is)j(part)f(of)h(the)f(project)913 3779 y(.SUBDIRS:)e(.)863 3989 y Fs(The)c Fo(include)d Fs(lines)j(include)g (the)h(standard)e(con\014guration)f(\014les)i(needed)g(for)f(the)739 4088 y(pro)5 b(ject.)53 b(The)33 b Fo($\(STDLIB\))d Fs(represen)n(ts)i (the)h Fo(omake)e Fs(library)h(directory)-7 b(.)53 b(The)33 b(only)g(re-)739 4188 y(quired)f(con\014guration)f(\014le)i(is)g Fo(Common)p Fs(.)50 b(The)33 b(others)f(are)f(optional;)k(for)d (example,)i(the)739 4288 y Fo($\(STDLIB\)/build/)o(OC)o(aml)14 b Fs(\014le)21 b(is)g(needed)f(only)h(when)g(the)g(pro)5 b(ject)20 b(con)n(tains)g(programs)739 4387 y(written)28 b(in)g(OCaml.)863 4494 y(The)21 b Fo(DefineCommandVa)o(rs)14 b Fs(function)21 b(de\014nes)f(an)n(y)f(v)-5 b(ariables)19 b(sp)r(eci\014ed)h(on)g(the)h(com-)739 4593 y(mand)g(line)h(\(as)f (argumen)n(ts)f(of)h(the)h(form)f Fo(VAR=)p Fs(\).)30 b(The)22 b Fo(.SUBDIRS)c Fs(line)j(sp)r(eci\014es)739 4693 y(that)33 b(the)g(curren)n(t)f(directory)g(is)h(part)f(of)h(the)g (pro)5 b(ject)32 b(\(so)h(the)g Fo(OMakefile)c Fs(should)k(b)r(e)739 4792 y(read\).)863 4899 y(Normally)-7 b(,)24 b(the)h Fo(OMakeroot)20 b Fs(\014le)k(should)g(b)r(e)g(small)g(and)g(pro)5 b(ject-indep)r(enden)n(t.)35 b(An)n(y)739 4998 y(pro)5 b(ject-sp)r(eci\014c)20 b(con\014guration)f(should)i(b)r(e)g(placed)g (in)g(the)h Fo(OMakefiles)17 b Fs(of)k(the)g(pro)5 b(ject.)p eop end %%Page: 27 27 TeXDict begin 27 26 bop 291 282 a @beginspecial @setspecial @endspecial Fp(2.9.)63 b(MUL)-7 b(TIPLE)27 b(VERSION)h(SUPPOR)-7 b(T)1310 b Fs(27)291 432 y @beginspecial @setspecial @endspecial 83 x Fl(2.9)135 b(Multiple)46 b(v)l(ersion)f(supp)t(ort)291 705 y Fs(OMak)n(e)18 b(v)n(ersion)f Fo(0.9.6)h Fs(in)n(tro)r(duced)h (preliminary)f(supp)r(ort)h(for)g(m)n(ultiple,)j(sim)n(ultaneous)291 805 y(v)n(ersions)g(of)i(a)g(pro)5 b(ject.)35 b(V)-7 b(ersioning)24 b(uses)g(the)g Fo(vmount\(dir1,)39 b(dir2\))22 b Fs(function,)k(whic)n(h)291 904 y(de\014nes)36 b(a)h(\\virtual)f (moun)n(t")g(of)h(directory)e Fo(dir1)g Fs(o)n(v)n(er)g(directory)h Fo(dir2)p Fs(.)63 b(A)37 b(\\virtual)291 1004 y(moun)n(t")29 b(is)h(lik)n(e)g(a)g(transparen)n(t)e(moun)n(t)i(in)g(Unix,)i(where)d (the)i(\014les)f(from)f Fo(dir1)g Fs(app)r(ear)291 1103 y(in)i(the)g Fo(dir2)e Fs(namespace,)h(but)i(new)e(\014les)h(are)f (created)f(in)i Fo(dir2)p Fs(.)45 b(More)30 b(precisely)-7 b(,)31 b(the)291 1203 y(\014lename)i Fo(dir2/foo)d Fs(refers)i(to:)48 b(a\))33 b(the)g(\014le)h Fo(dir1/foo)c Fs(if)j(it)h(exists,)g(or)e (b\))i Fo(dir2/foo)291 1303 y Fs(otherwise.)415 1407 y(The)26 b Fo(vmount)e Fs(function)i(mak)n(es)f(it)h(easy)f(to)h(sp)r (ecify)g(m)n(ultiple)h(v)n(ersions)d(of)i(a)g(pro)5 b(ject.)291 1506 y(Supp)r(ose)26 b(w)n(e)f(ha)n(v)n(e)g(a)g(pro)5 b(ject)26 b(where)f(the)i(source)d(\014les)i(are)f(in)h(the)h (directory)d Fo(src/)p Fs(,)h(and)291 1606 y(w)n(e)18 b(w)n(an)n(t)h(to)g(compile)g(t)n(w)n(o)g(v)n(ersions,)g(one)g(with)g (debugging)g(supp)r(ort)g(and)g(one)g(optimized.)291 1705 y(W)-7 b(e)34 b(create)f(t)n(w)n(o)g(directories,)h Fo(debug)e Fs(and)i Fo(opt)p Fs(,)g(and)g(moun)n(t)g(the)g Fo(src)f Fs(directory)g(o)n(v)n(er)291 1805 y(them.)465 2009 y Fo(section)639 2108 y(CFLAGS)41 b(+=)i(-g)639 2208 y(vmount\(-l,)d(src,)i(debug\))639 2308 y(.SUBDIRS:)e(debug)465 2507 y(section)639 2606 y(CFLAGS)h(+=)i(-O3)639 2706 y(vmount\(-l,)d(src,)i(opt\))639 2806 y(.SUBDIRS:)e(opt)415 3005 y Fs(Here,)31 b(w)n(e)g(are)e(using)i Fo(section)d Fs(blo)r(c)n(ks)i(to)g(de\014ne)h(the)g(scop)r(e)f(of)h(the)g Fo(vmount)p Fs(|y)n(ou)291 3105 y(ma)n(y)26 b(not)i(need)g(them)g(in)g (y)n(our)e(pro)5 b(ject.)415 3209 y(The)21 b Fo(-l)e Fs(option)i(is)f(optional.)34 b(It)21 b(sp)r(eci\014es)f(that)h (\014les)f(form)h(the)g Fo(src)e Fs(directory)g(should)291 3308 y(b)r(e)33 b(link)n(ed)g(in)n(to)g(the)g(target)f(directories)g (\(or)g(copied,)i(if)g(the)f(system)g(is)g(Win32\).)53 b(The)291 3408 y(links)25 b(are)f(added)h(as)g(\014les)g(are)g (referenced.)35 b(If)26 b(no)f(options)g(are)f(giv)n(en,)h(then)h (\014les)g(are)e(not)291 3507 y(copied)i(or)g(link)n(ed,)h(but)g (\014lenames)f(are)g(translated)g(to)h(refer)f(directly)g(to)h(the)g Fo(src/)e Fs(\014les.)415 3611 y(No)n(w,)32 b(when)f(a)g(\014le)g(is)g (referenced)g(in)g(the)h Fo(debug)d Fs(directory)-7 b(,)31 b(it)h(is)f(link)n(ed)g(from)g(the)291 3711 y Fo(src)26 b Fs(directory)g(if)h(it)h(exists.)36 b(F)-7 b(or)27 b(example,)g(when)g(the)h(\014le)f Fo(debug/OMakefile)22 b Fs(is)27 b(read,)291 3810 y(the)h Fo(src/OMakefile)22 b Fs(is)27 b(link)n(ed)h(in)n(to)f(the)h Fo(debug/)d Fs(directory)-7 b(.)415 3914 y(The)28 b Fo(vmount)d Fs(mo)r(del)i(is)h (fairly)f(transparen)n(t.)35 b(The)27 b Fo(OMakefile)p Fs(s)d(can)j(b)r(e)h(written)f Fi(as)291 4014 y(if)44 b Fs(referring)24 b(to)i(\014les)g(in)g(the)g Fo(src/)e Fs(directory|they)h(need)h(not)g(b)r(e)g(a)n(w)n(are)d(of)j(moun)n (ting.)291 4114 y(Ho)n(w)n(ev)n(er,)f(there)j(are)e(a)h(few)h(p)r(oin)n (ts)g(to)f(k)n(eep)g(in)h(mind.)291 4273 y @beginspecial @setspecial @endspecial 137 x Fl(2.10)135 b(Notes)415 4600 y Fj(\017)41 b Fs(When)26 b(using)f(the)h Fo(vmount)d Fs(function)j(for)e(v)n(ersioning,)g(it)i(wise)f(to)h(k)n(eep)e(the)i (source)498 4700 y(\014les)f(distinct)g(from)g(the)g(compiled)f(v)n (ersions.)35 b(F)-7 b(or)24 b(example,)h(supp)r(ose)f(the)h(source)498 4799 y(directory)i(con)n(tained)h(a)g(\014le)h Fo(src/foo.o)p Fs(.)36 b(When)30 b(moun)n(ted,)e(the)h Fo(foo.o)e Fs(\014le)i(will)498 4899 y(b)r(e)k(the)g(same)f(in)h(all)f(v)n(ersions,)g(whic)n(h)g(is)h (probably)e(not)i(what)f(y)n(ou)g(w)n(an)n(t.)51 b(It)33 b(is)498 4998 y(b)r(etter)28 b(to)g(k)n(eep)f(the)h Fo(src/)e Fs(directory)g(pristine,)i(con)n(taining)e(no)h(compiled)h(co)r(de.)p eop end %%Page: 28 28 TeXDict begin 28 27 bop 739 282 a @beginspecial @setspecial @endspecial Fs(28)991 b Fp(CHAPTER)27 b(2.)65 b(OMAKE)26 b(QUICKST)-7 b(AR)g(T)28 b(GUIDE)863 515 y Fj(\017)41 b Fs(When)29 b(using)f(the)h Fo(vmount)41 b(-l)27 b Fs(option,)h (\014les)g(are)g(link)n(ed)g(in)n(to)g(the)g(v)n(ersion)f(direc-)946 615 y(tory)34 b(only)g(if)h(they)f(are)f(referenced)h(in)h(the)f(pro)5 b(ject.)57 b(F)-7 b(unctions)34 b(that)h(examine)946 715 y(the)28 b(\014lesystem)g(\(lik)n(e)f Fo($\(ls)42 b(...\))p Fs(\))27 b(ma)n(y)f(pro)r(duce)i(unexp)r(ected)g(results.)p eop end %%Page: 29 29 TeXDict begin 29 28 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 710 x Fm(Chapter)64 b(3)291 1561 y Fr(Additional)77 b(build)g(examples) 291 1997 y Fs(Let's)24 b(explain)f(the)i(OMak)n(e)e(build)h(mo)r(del)h (a)e(bit)i(more.)35 b(One)24 b(issue)g(that)g(dominates)g(this)291 2097 y(discussion)29 b(is)g(that)h(OMak)n(e)f(is)g(based)h(on)f(global) g(pro)5 b(ject)29 b(analysis.)42 b(That)29 b(means)h(y)n(ou)291 2196 y(de\014ne)22 b(a)g(con\014guration)e(for)i(the)h Fi(entir)l(e)28 b Fs(pro)5 b(ject,)23 b(and)f(y)n(ou)f(run)h Fi(one)29 b Fs(instance)22 b(of)g(omak)n(e.)415 2300 y(F)-7 b(or)34 b(single-directory)f(pro)5 b(jects)33 b(this)i(do)r(esn't)g(mean)f(m)n(uc)n(h.)58 b(F)-7 b(or)34 b(m)n(ulti-directory)291 2400 y(pro)5 b(jects)30 b(it)i(means)e(a)h (lot.)48 b(With)32 b(GNU)g(mak)n(e,)g(y)n(ou)e(w)n(ould)h(usually)g(in) n(v)n(ok)n(e)f(the)h Fo(make)291 2500 y Fs(program)21 b(recursiv)n(ely)g(for)i(eac)n(h)f(directory)g(in)i(the)g(pro)5 b(ject.)34 b(F)-7 b(or)23 b(example,)h(supp)r(ose)f(y)n(ou)291 2599 y(had)f(a)g(pro)5 b(ject)22 b(with)h(some)f(pro)5 b(ject)22 b(ro)r(ot)g(directory)-7 b(,)23 b(con)n(taining)e(a)h (directory)g(of)g(sources)291 2699 y Fo(src)p Fs(,)j(whic)n(h)h(in)g (turn)g(con)n(tains)f(sub)r(directories)f Fo(lib)h Fs(and)h Fo(main)p Fs(.)35 b(So)25 b(y)n(our)g(pro)5 b(ject)25 b(lo)r(oks)291 2798 y(lik)n(e)i(this)h(nice)f(piece)h(of)f(ASCI)r(I)i (art.)465 3002 y Fo(my_project/)465 3101 y(|-->)42 b(Makefile)465 3201 y(`-->)g(src/)683 3301 y(|--->)f(Makefile)683 3400 y(|--->)g(lib/)683 3500 y(|)217 b(|--->)42 b(Makefile)683 3600 y(|)217 b(`--->)42 b(source)f(files...)683 3699 y(`--->)g(main/)944 3799 y(|--->)h(Makefile)944 3898 y(`--->)g(source)f(files...)415 4098 y Fs(T)n(ypically)-7 b(,)20 b(with)e(GNU)i(mak)n(e,)f(y)n(ou)f(w)n(ould)g(start)f(an)h (instance)h(of)f Fo(make)f Fs(in)h Fo(my_project/)p Fs(;)291 4197 y(this)h(w)n(ould)g(in)g(term)g(start)f(an)h(instance)g(of)g Fo(make)e Fs(in)j(the)f Fo(src/)e Fs(directory;)k(and)e(this)g(w)n (ould)291 4297 y(start)28 b(new)g(instances)g(in)h Fo(lib/)e Fs(and)h Fo(main/)p Fs(.)38 b(Basically)-7 b(,)28 b(y)n(ou)g(coun)n(t)g (up)h(the)g(n)n(um)n(b)r(er)f(of)291 4397 y Fo(Makefile)p Fs(s)21 b(in)j(the)h(pro)5 b(ject,)24 b(and)h(that)g(is)f(the)h(n)n(um) n(b)r(er)f(of)g(instances)g(of)h Fo(make)d Fs(pro)r(cesses)291 4496 y(that)27 b(will)h(b)r(e)g(created.)415 4600 y(The)33 b(n)n(um)n(b)r(er)g(of)g(pro)r(cesses)e(is)i(no)f(big)h(deal)f(with)i (to)r(da)n(y's)e(mac)n(hines)g(\(sometimes)291 4700 y(con)n(trary)22 b(the)k(the)f(author's)f(opinion,)h(w)n(e)g(no)f(longer)g(liv)n(e)h(in) g(the)g(1970s\).)34 b(The)25 b(problem)291 4799 y(with)k(the)g(sc)n (heme)f(w)n(as)f(that)i(eac)n(h)f Fo(make)f Fs(pro)r(cess)g(had)i(a)f (separate)f(con\014guration,)g(and)291 4899 y(it)e(to)r(ok)f(a)g(lot)h (of)f(w)n(ork)f(to)i(mak)n(e)f(sure)g(that)h(ev)n(erything)e(w)n(as)h (consisten)n(t.)35 b(F)-7 b(urthermore,)291 4998 y(supp)r(ose)24 b(the)i(programmer)c(runs)j Fo(make)e Fs(in)j(the)f Fo(main/)e Fs(directory)-7 b(,)25 b(but)g(the)h Fo(lib/)d Fs(is)i(out-)1681 5208 y(29)p eop end %%Page: 30 30 TeXDict begin 30 29 bop 739 282 a @beginspecial @setspecial @endspecial Fs(30)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)739 515 y Fs(of-date.)36 b(In)26 b(this)g(case,)f Fo(make)f Fs(w)n(ould)i(happily)f(crank)g(a)n(w)n(a)n(y)-7 b(,)24 b(p)r(erhaps)h(trying)h(to)f(rebuild)739 615 y(\014les)i(in)h Fo(lib/)p Fs(,)e(p)r(erhaps)h(just)i(giving)d(up.)863 718 y(With)j(OMak)n(e)e(this)h(c)n(hanges)e(en)n(tirely)-7 b(.)38 b(W)-7 b(ell,)28 b(not)g(en)n(tirely)-7 b(.)37 b(The)28 b(source)f(structure)739 818 y(is)g(quite)h(similar,)f(w)n(e)g (merely)g(add)h(some)f(Os)g(to)g(the)h(ASCI)r(I)h(art.)913 1017 y Fo(my_project/)913 1117 y(|-->)42 b(OMakeroot)127 b(\(or)43 b(Root.om\))913 1216 y(|-->)f(OMakefile)913 1316 y(`-->)g(src/)1131 1416 y(|--->)g(OMakefile)1131 1515 y(|--->)g(lib/)1131 1615 y(|)218 b(|--->)41 b(OMakefile)1131 1715 y(|)218 b(`--->)41 b(source)g(files...)1131 1814 y(`--->)h(main/)1393 1914 y(|--->)f(OMakefile)1393 2013 y(`--->)g(source)g(files...)863 2210 y Fs(The)19 b(role)e(of)i(eac)n(h) e Fo(/OMakefile)12 b Fs(pla)n(ys)18 b(the)h(same)e(role)h(as)g (eac)n(h)f Fo(/Makefile)p Fs(:)739 2309 y(it)26 b(describ)r(es)e(ho)n(w)h(to)g(build)h(the)f(source)f(\014les)h(in)h Fo()p Fs(.)34 b(The)25 b(OMak)n(e\014le)f(retains)g(m)n(uc)n(h)739 2409 y(of)j(syn)n(tax)g(and)h(structure)f(of)g(the)h(Mak)n(e\014le,)f (but)h(in)g(most)f(cases)g(it)h(is)f(m)n(uc)n(h)h(simpler.)863 2512 y(One)h(minor)g(di\013erence)g(is)h(the)f(presence)g(of)g(the)h (OMak)n(ero)r(ot)d(in)j(the)f(pro)5 b(ject)29 b(ro)r(ot.)739 2612 y(The)c(main)g(purp)r(ose)g(of)g(this)h(\014le)f(is)h(to)f (indicate)g(where)g(the)h(pro)5 b(ject)24 b(ro)r(ot)h Fi(is)32 b Fs(in)26 b(the)f(\014rst)739 2711 y(place)i(\(in)h(case)f Fo(omake)e Fs(is)j(in)n(v)n(ok)n(ed)e(from)h(a)g(sub)r(directory\).)36 b(The)28 b Fo(OMakeroot)c Fs(serv)n(es)i(as)739 2811 y(the)h(b)r(o)r(otstrap)f(\014le;)h(omak)n(e)e(starts)h(b)n(y)g (reading)f(this)i(\014le)g(\014rst.)36 b(Otherwise,)26 b(the)h(syn)n(tax)739 2910 y(and)g(ev)-5 b(aluation)27 b(of)h Fo(OMakeroot)c Fs(is)j(no)h(di\013eren)n(t)f(from)h(an)n(y)e (other)h Fo(OMakefile)p Fs(.)863 3014 y(The)32 b Fi(big)40 b Fs(di\013erence)31 b(is)g(that)h(OMak)n(e)e(p)r(erforms)h(a)g Fi(glob)l(al)41 b Fs(analysis.)47 b(Here)31 b(is)g(what)739 3113 y(happ)r(ens)d(when)f Fo(omake)f Fs(starts.)739 3186 y @beginspecial @setspecial @endspecial 840 3309 a(1.)41 b(omak)n(e)27 b(lo)r(cates)g(that)h(OMak)n(ero)r(ot)d(\014le,)j (and)f(reads)g(it.)739 3366 y @beginspecial @setspecial @endspecial 840 3489 a(2.)41 b(Eac)n(h)19 b(OMak)n(e\014le)g(p)r(oin)n (ts)h(to)f(its)h(sub)r(directory)f(OMak)n(e\014les)g(using)g(the)h (.SUBDIRS)946 3589 y(target.)36 b(F)-7 b(or)27 b(example,)h Fo(my_project/OMak)o(efi)o(le)21 b Fs(has)27 b(a)g(rule,)1121 3821 y Fo(.SUBDIRS:)40 b(src)946 4054 y Fs(and)28 b(the)g Fo(my_project/src/O)o(Ma)o(kef)o(il)o(e)22 b Fs(has)27 b(a)g(rule,)1121 4287 y Fo(.SUBDIRS:)40 b(lib)i(main)946 4520 y(omake)17 b Fs(uses)h(these)h(rules)f(to)g(read)g(and)h(ev)-5 b(aluate)18 b(ev)n(ery)f Fo(OMakefile)e Fs(in)k(the)g(pro)5 b(ject.)946 4620 y(Reading)27 b(and)h(ev)-5 b(aluation)27 b(is)g(fast.)37 b(This)28 b(part)f(of)g(the)h(pro)r(cess)f(is)g(c)n (heap.)739 4676 y @beginspecial @setspecial @endspecial 840 4799 a(3.)41 b(No)n(w)22 b(that)g(the)g(en)n(tire)f (con\014guration)f(is)i(read,)g Fo(omake)d Fs(determines)j(whic)n(h)g (\014les)f(are)946 4899 y(out-of-date)33 b(\(using)g(a)f(global)g (analysis\),)i(and)f(starts)f(the)h(build)h(pro)r(cess.)52 b(This)946 4998 y(ma)n(y)27 b(tak)n(e)g(a)g(while,)h(dep)r(ending)g(on) g(what)f(exactly)g(needs)h(to)f(b)r(e)h(done.)p eop end %%Page: 31 31 TeXDict begin 31 30 bop 291 282 a @beginspecial @setspecial @endspecial Fp(3.1.)63 b(OMAKER)n(OOT)26 b(VS.)i(OMAKEFILE)1311 b Fs(31)415 515 y(There)25 b(are)f(sev)n(eral)f(adv)-5 b(an)n(tages)24 b(to)h(this)g(mo)r(del.)36 b(First,)26 b(since)f(analysis)f(is)h(global,)f(it)291 615 y(is)d(m)n(uc)n(h)g (easier)f(to)h(ensure)g(that)h(the)g(build)g(con\014guration)d(is)j (consisten)n(t{after)e(all,)i(there)291 715 y(is)28 b(only)g(one)f (con\014guration.)38 b(Another)28 b(b)r(ene\014t)h(is)f(that)h(the)f (build)h(con\014guration)e(is)h(in-)291 814 y(herited,)d(and)g(can)g(b) r(e)h(re-used,)f(do)n(wn)g(the)g(hierarc)n(h)n(y)-7 b(.)34 b(T)n(ypically)-7 b(,)25 b(the)h(ro)r(ot)f Fo(OMakefile)291 914 y Fs(de\014nes)36 b(some)g(standard)g(b)r(oilerplate)f(and)i (con\014guration,)g(and)f(this)h(is)g(inherited)f(b)n(y)291 1013 y(sub)r(directories)24 b(that)h(t)n(w)n(eak)f(and)h(mo)r(dify)h (it)f(\(but)h(do)f(not)g(need)g(to)g(restate)g(it)g(en)n(tirely\).)291 1113 y(The)34 b(disadv)-5 b(an)n(tage)32 b(of)i(course)f(is)g(space,)i (since)f(this)g(is)g(global)f(analysis)f(after)i(all.)56 b(In)291 1213 y(practice)35 b(rarely)f(seems)h(to)h(b)r(e)g(a)g (concern;)j(omak)n(e)c(tak)n(es)f(up)j(m)n(uc)n(h)e(less)h(space)f (than)291 1312 y(y)n(our)26 b(w)n(eb)h(bro)n(wser)f(ev)n(en)h(on)g (large)f(pro)5 b(jects.)415 1412 y(Some)28 b(notes)f(to)g(the)h (GNU/BSD)g(mak)n(e)f(user.)415 1580 y Fj(\017)41 b Fs(OMak)n(e\014les) 23 b(are)g(a)h(lot)g(lik)n(e)g(Mak)n(e\014les.)35 b(The)24 b(syn)n(tax)f(is)h(similar,)g(and)g(there)h(man)n(y)498 1679 y(of)32 b(the)h(builtin)g(functions)g(are)e(similar.)50 b(Ho)n(w)n(ev)n(er,)31 b(the)i(t)n(w)n(o)e(build)i(systems)f(are)498 1779 y(not)37 b(the)h(same.)64 b(Some)37 b(evil)g(features)f(\(in)i (the)f(authors')f(opinions\))h(ha)n(v)n(e)e(b)r(een)498 1879 y(dropp)r(ed)28 b(in)f(OMak)n(e,)g(and)g(some)g(new)h(features)f (ha)n(v)n(e)f(b)r(een)i(added.)415 2047 y Fj(\017)41 b Fs(OMak)n(e)24 b(w)n(orks)g(the)i(same)f(w)n(a)n(y)f(on)i(all)f (platforms,)g(including)h(Win32.)36 b(The)25 b(stan-)498 2146 y(dard)d(con\014guration)e(do)r(es)i(the)h(righ)n(t)e(thing,)i (but)g(if)g(y)n(ou)e(care)g(ab)r(out)h(p)r(orting)g(y)n(our)498 2246 y(co)r(de)d(to)f(m)n(ultiple)i(platforms,)g(and)f(y)n(ou)f(use)g (some)h(tric)n(ky)f(features,)i(y)n(ou)e(ma)n(y)g(need)498 2346 y(to)28 b(condition)f(parts)g(of)g(y)n(our)g(build)h(con\014g)f (on)g(the)h Fo($\(OSTYPE\))c Fs(v)-5 b(ariable.)415 2513 y Fj(\017)41 b Fs(A)34 b(minor)e(issue)h(is)g(that)h(OMak)n(e)d(dep)r (endency)j(analysis)e(is)h(based)g(on)f(MD5)i(\014le)498 2613 y(digests.)45 b(That)30 b(is,)h(dep)r(endencies)g(are)f(based)f (on)i(\014le)f Fi(c)l(ontents)p Fs(,)g(not)h(\014le)f Fi(mo)l(di\014-)498 2713 y(c)l(ation)h(times)p Fs(.)40 b(Sa)n(y)28 b(go)r(o)r(db)n(y)n(e)f(to)i(false)f(rebuilds)g(based)h(on) f(spurious)g(timestamp)498 2812 y(c)n(hanges)e(and)i(mismatc)n(hes)f(b) r(et)n(w)n(een)g(lo)r(cal)g(time)h(and)g(\014leserv)n(er)e(time.)291 2956 y @beginspecial @setspecial @endspecial 133 x Fl(3.1)135 b(OMak)l(ero)t(ot)46 b(vs.)60 b(OMak)l(e\014le)291 3272 y Fs(Before)25 b(w)n(e)h(b)r(egin)g(with)h(examples,)f(let's)h(ask)e (the)i(\014rst)f(question,)g(\\What)g(is)g(the)h(di\013er-)291 3372 y(ence)h(b)r(et)n(w)n(een)h(the)g(pro)5 b(ject)28 b(ro)r(ot)g(OMak)n(ero)r(ot)e(and)i(OMak)n(e\014le?")39 b(A)29 b(short)f(answ)n(er)f(is,)291 3471 y(there)g(is)g(no)h (di\013erence,)f(but)i(y)n(ou)d(m)n(ust)i(ha)n(v)n(e)f(an)g(OMak)n(ero) r(ot)e(\014le)j(\(or)f(Ro)r(ot.om)g(\014le\).)415 3571 y(Ho)n(w)n(ev)n(er,)38 b(the)g(normal)f(st)n(yle)g(is)g(that)h(OMak)n (ero)r(ot)e(is)h(b)r(oilerplate)g(and)h(is)f(more-)291 3671 y(or-less)h(the)j(same)f(for)g(all)g(pro)5 b(jects.)74 b(The)41 b(OMak)n(e\014le)e(is)h(where)g(y)n(ou)g(put)h(all)f(y)n(our) 291 3771 y(pro)5 b(ject-sp)r(eci\014c)26 b(stu\013.)415 3871 y(T)-7 b(o)32 b(get)h(started,)g(y)n(ou)f(don't)h(ha)n(v)n(e)e(to) i(do)f(this)h(y)n(ourself.)51 b(In)33 b(most)f(cases)f(y)n(ou)h(just) 291 3970 y(p)r(erform)27 b(the)h(follo)n(wing)e(step)i(in)g(y)n(our)e (pro)5 b(ject)27 b(ro)r(ot)g(directory)-7 b(.)415 4155 y Fj(\017)41 b Fs(Run)28 b Fo(omake)42 b(--install)24 b Fs(in)j(y)n(our)g(pro)5 b(ject)27 b(ro)r(ot.)415 4339 y(This)f(will)g(create)f(the)h(initial)g(OMak)n(ero)r(ot)d(and)j(OMak)n (e\014le)e(\014les)i(that)g(y)n(ou)f(can)g(edit)291 4439 y(to)i(get)g(started.)291 4582 y @beginspecial @setspecial @endspecial 134 x Fl(3.2)135 b(An)44 b(example)i(C)f(pro)7 b(ject)291 4899 y Fs(T)-7 b(o)40 b(b)r(egin,)45 b(let's)c(start)f(with) i(a)e(simple)h(example.)77 b(Let's)41 b(sa)n(y)f(that)h(w)n(e)g(ha)n(v) n(e)f(a)g(full)291 4998 y(directory)26 b(tree,)h(con)n(taining)g(the)h (follo)n(wing)e(\014les.)p eop end %%Page: 32 32 TeXDict begin 32 31 bop 739 282 a @beginspecial @setspecial @endspecial Fs(32)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)913 515 y Fo(my_project/)913 615 y(|-->)42 b(OMakeroot)913 715 y(|-->)g(OMakefile)913 814 y(`-->)g(src/)1131 914 y(|--->)g(OMakefile)1131 1013 y(|--->)g(lib/)1131 1113 y(|)218 b(|--->)41 b(OMakefile)1131 1213 y(|)218 b(|--->)41 b(ouch.c)1131 1312 y(|)218 b(|--->)41 b(ouch.h)1131 1412 y(|)218 b(`--->)41 b(bandaid.c)1131 1512 y(`--->)h(main/)1393 1611 y(|--->)f(OMakefile)1393 1711 y(|--->)g(horsefly.c)1393 1810 y(|--->)g(horsefly.h)1393 1910 y(`--->)g(main.c)863 2107 y Fs(Here)28 b(is)f(an)g(example)h(listing.)739 2309 y Fo(my_project/OMake)o(ro)o(ot:)913 2408 y(#)43 b(Include)e(the)h(standard)f(configuration)d(for)k(C)h(applications)913 2508 y(open)f(build/C)913 2707 y(#)h(Process)e(the)h(command-line)d (vars)913 2807 y(DefineCommandVars)o(\(\))913 3006 y(#)k(Include)e(the) h(OMakefile)e(in)j(this)f(directory.)913 3106 y(.SUBDIRS:)e(.)739 3305 y(my_project/OMake)o(fi)o(le:)913 3404 y(#)j(Set)g(up)g(the)f (standard)e(configuration)913 3504 y(CFLAGS)h(+=)i(-g)913 3703 y(#)g(Include)e(the)h(src)h(subdirectory)913 3803 y(.SUBDIRS:)d(src)739 4002 y(my_project/src/O)o(Ma)o(kef)o(il)o(e:)913 4102 y(#)j(Add)g(any)f(extra)g(options)e(you)j(like)913 4201 y(CFLAGS)e(+=)i(-O2)913 4401 y(#)g(Include)e(the)h(subdirectories) 913 4500 y(.SUBDIRS:)e(lib)i(main)739 4700 y(my_project/src/l)o(ib)o (/OM)o(ak)o(efi)o(le)o(:)913 4799 y(#)h(Build)f(the)g(library)f(as)i(a) g(static)e(library.)913 4899 y(#)i(This)f(builds)f(libbug.a)g(on)h (Unix/OSX,)e(or)j(libbug.lib)d(on)i(Win32.)913 4998 y(#)h(Note)f(that)g (the)h(source)e(files)g(are)i(listed)e(_without_)f(suffix.)p eop end %%Page: 33 33 TeXDict begin 33 32 bop 291 282 a @beginspecial @setspecial @endspecial Fp(3.3.)63 b(AN)29 b(EXAMPLE)d(OCAML)i(PR)n(OJECT)1242 b Fs(33)465 515 y Fo(StaticCLibrary\(l)o(ib)o(bug)o(,)37 b(ouch)42 b(bandaid\))291 715 y(my_project/src/)o(mai)o(n/)o(OM)o(ake)o (fi)o(le:)465 814 y(#)h(Some)f(files)g(include)e(the)j(.h)f(files)g(in) h(../lib)465 914 y(INCLUDES)d(+=)j(../lib)465 1113 y(#)g(Indicate)d (which)i(libraries)e(we)j(want)e(to)i(link)f(against.)465 1213 y(LIBS[])f(+=)639 1312 y(../lib/libbug)465 1512 y(#)i(Build)f(the)g(program.)465 1611 y(#)h(Builds)e(horsefly.exe)e(on) k(Win32,)e(and)h(horsefly)e(on)j(Unix.)465 1711 y(#)g(The)f(first)g (argument)e(is)j(the)f(name)g(of)h(the)f(executable.)465 1810 y(#)h(The)f(second)g(argument)e(is)j(an)f(array)g(of)h(object)e (files)g(\(without)g(suffix\))465 1910 y(#)i(that)f(are)g(part)g(of)h (the)f(program.)465 2010 y(CProgram\(horsefl)o(y,)37 b(horsefly)j(main\))465 2209 y(#)j(Build)f(the)g(program)f(by)h (default)f(\(in)h(case)g(omake)g(is)h(called)465 2309 y(#)g(without)e(any)h(arguments\).)83 b(EXE)42 b(is)h(defined)e(as)h (.exe)g(on)h(Win32,)465 2408 y(#)g(otherwise)d(it)j(is)f(empty.)465 2508 y(.DEFAULT:)e(horsefly$\(EXE\))415 2685 y Fs(Most)34 b(of)g(the)g(con\014guration)e(here)i(is)g(de\014ned)g(in)g(the)h (\014le)f Fo(build/C.om)c Fs(\(whic)n(h)k(is)291 2784 y(part)24 b(of)h(the)g(OMak)n(e)f(distribution\).)36 b(This)25 b(\014le)g(tak)n(es)f(care)g(of)h(a)g(lot)g(of)g(w)n(ork,)f (including:)415 2945 y Fj(\017)41 b Fs(De\014ning)22 b(the)g Fo(StaticCLibrary)15 b Fs(and)22 b Fo(CProgram)c Fs(functions,)23 b(whic)n(h)e(describ)r(e)h(the)498 3045 y(canonical)27 b(w)n(a)n(y)f(to)h(build)h(C)g(libraries)e(and)i (programs.)415 3209 y Fj(\017)41 b Fs(De\014ning)21 b(a)f(mec)n(hanism) f(for)h Fi(sc)l(anning)28 b Fs(eac)n(h)19 b(of)h(the)h(source)e (programs)f(to)i(disco)n(v)n(er)498 3308 y(dep)r(endencies.)37 b(That)28 b(is,)f(it)h(de\014nes)g(.SCANNER)g(rules)f(for)g(C)h(source) e(\014les.)415 3470 y(V)-7 b(ariables)39 b(are)h(inherited)g(do)n(wn)g (the)h(hierarc)n(h)n(y)-7 b(,)42 b(so)e(for)g(example,)j(the)e(v)-5 b(alue)40 b(of)291 3569 y(CFLA)n(GS)28 b(in)f(src/main/OMak)n(e\014le)e (is)i(\\)p Fo(-g)43 b(-O2)p Fs(".)291 3714 y @beginspecial @setspecial @endspecial 129 x Fl(3.3)135 b(An)44 b(example)i(OCaml)g (pro)7 b(ject)291 4025 y Fs(Let's)21 b(rep)r(eat)g(the)h(example,)g (assuming)f(w)n(e)g(are)g(using)g(OCaml)g(instead)g(of)g(C.)h(This)f (time,)291 4124 y(the)28 b(directory)e(tree)h(lo)r(oks)g(lik)n(e)g (this.)465 4301 y Fo(my_project/)465 4401 y(|-->)42 b(OMakeroot)465 4500 y(|-->)g(OMakefile)465 4600 y(`-->)g(src/)683 4700 y(|--->)f(OMakefile)683 4799 y(|--->)g(lib/)683 4899 y(|)217 b(|--->)42 b(OMakefile)683 4998 y(|)217 b(|--->)42 b(ouch.ml)p eop end %%Page: 34 34 TeXDict begin 34 33 bop 739 282 a @beginspecial @setspecial @endspecial Fs(34)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)1131 515 y Fo(|)218 b(|--->)41 b(ouch.mli)1131 615 y(|)218 b(`--->)41 b(bandaid.ml)1131 715 y(`--->)h(main/)1393 814 y(|--->)f(OMakefile)1393 914 y(|--->)g(horsefly.ml)1393 1013 y(|--->)g(horsefly.mli)1393 1113 y(`--->)g(main.ml)863 1310 y Fs(The)28 b(listing)g(is)f(only)g(a)g(bit)i(di\013eren)n(t.)739 1512 y Fo(my_project/OMake)o(ro)o(ot:)913 1611 y(#)43 b(Include)e(the)h(standard)f(configuration)d(for)k(OCaml)g (applications)913 1711 y(open)g(build/OCaml)913 1910 y(#)h(Process)e(the)h(command-line)d(vars)913 2010 y(DefineCommandVars) o(\(\))913 2209 y(#)k(Include)e(the)h(OMakefile)e(in)j(this)f (directory.)913 2309 y(.SUBDIRS:)e(.)739 2508 y(my_project/OMake)o(fi)o (le:)913 2607 y(#)j(Set)g(up)g(the)f(standard)e(configuration)913 2707 y(OCAMLFLAGS)g(+=)i(-Wa)913 2906 y(#)h(Do)g(we)g(want)f(to)h(use)f (the)g(bytecode)f(compiler,)913 3006 y(#)i(or)g(the)g(native-code)c (one?)85 b(Let's)42 b(use)g(both)g(for)913 3106 y(#)h(this)f(example.) 913 3205 y(NATIVE_ENABLED)c(=)43 b(true)913 3305 y(BYTE_ENABLED)c(=)k (true)913 3504 y(#)g(Include)e(the)h(src)h(subdirectory)913 3604 y(.SUBDIRS:)d(src)739 3803 y(my_project/src/O)o(Ma)o(kef)o(il)o (e:)913 3903 y(#)j(Include)e(the)h(subdirectories)913 4002 y(.SUBDIRS:)e(lib)i(main)739 4201 y(my_project/src/l)o(ib)o(/OM)o (ak)o(efi)o(le)o(:)913 4301 y(#)h(Let's)f(do)h(aggressive)c(inlining)h (on)j(native)e(code)913 4401 y(OCAMLOPTFLAGS)d(+=)43 b(-inline)e(10)913 4600 y(#)i(Build)f(the)g(library)f(as)i(a)g(static)e (library.)913 4700 y(#)i(This)f(builds)f(libbug.a)g(on)h(Unix/OSX,)e (or)j(libbug.lib)d(on)i(Win32.)913 4799 y(#)h(Note)f(that)g(the)h (source)e(files)g(are)i(listed)e(_without_)f(suffix.)913 4899 y(OCamlLibrary\(libb)o(ug)o(,)e(ouch)j(bandaid\))p eop end %%Page: 35 35 TeXDict begin 35 34 bop 291 282 a @beginspecial @setspecial @endspecial Fp(3.4.)63 b(HANDLING)29 b(NEW)f(LANGUA)n(GES)1338 b Fs(35)291 515 y Fo(my_project/src/)o(mai)o(n/)o(OM)o(ake)o(fi)o(le:) 465 615 y(#)43 b(These)f(files)f(depend)g(on)i(the)f(interfaces)e(in)j (../lib)465 715 y(OCAMLINCLUDES)38 b(+=)43 b(../lib)465 914 y(#)g(Indicate)d(which)i(libraries)e(we)j(want)e(to)i(link)f (against.)465 1013 y(OCAML_LIBS[])d(+=)639 1113 y(../lib/libbug)465 1312 y(#)k(Build)f(the)g(program.)465 1412 y(#)h(Builds)e(horsefly.exe) e(on)k(Win32,)e(and)h(horsefly)e(on)j(Unix.)465 1512 y(#)g(The)f(first)g(argument)e(is)j(the)f(name)g(of)h(the)f (executable.)465 1611 y(#)h(The)f(second)g(argument)e(is)j(an)f(array)g (of)h(object)e(files)g(\(without)g(suffix\))465 1711 y(#)i(that)f(are)g(part)g(of)h(the)f(program.)465 1810 y(OCamlProgram\(hor)o(se)o(fly)o(,)37 b(horsefly)k(main\))465 2010 y(#)i(Build)f(the)g(program)f(by)h(default)f(\(in)h(case)g(omake)g (is)h(called)465 2109 y(#)g(without)e(any)h(arguments\).)83 b(EXE)42 b(is)h(defined)e(as)h(.exe)g(on)h(Win32,)465 2209 y(#)g(otherwise)d(it)j(is)f(empty.)465 2309 y(.DEFAULT:)e (horsefly$\(EXE\))415 2484 y Fs(In)19 b(this)f(case,)i(most)e(of)g(the) h(con\014guration)e(here)h(is)g(de\014ned)h(in)f(the)h(\014le)g Fo(build/OCaml.om)p Fs(.)291 2584 y(In)29 b(this)g(particular)f (con\014guration,)g(\014les)h(in)g Fo(my_project/src/li)o(b)23 b Fs(are)28 b(compiled)h(ag-)291 2683 y(gressiv)n(ely)k(with)k(the)f (option)f Fo(-inline)41 b(10)p Fs(,)c(but)g(\014les)e(in)h Fo(my_project/src/li)o(b)30 b Fs(are)291 2783 y(compiled)d(normally)-7 b(.)291 2923 y @beginspecial @setspecial @endspecial 133 x Fl(3.4)135 b(Handling)45 b(new)g(languages)291 3238 y Fs(The)21 b(previous)g(t)n(w)n(o)f(examples)h(seem)h(to)f(b)r(e) h(easy)f(enough,)h(but)g(they)g(rely)f(on)g(the)h(OMak)n(e)291 3338 y(standard)g(library)h(\(the)h(\014les)g Fo(build/C)d Fs(and)i Fo(build/OCaml)p Fs(\))d(to)j(do)h(all)f(the)h(w)n(ork.)35 b(What)291 3437 y(happ)r(ens)g(if)i(w)n(e)e(w)n(an)n(t)g(to)h(write)f (a)g(build)i(con\014guration)d(for)h(a)g(language)f(that)i(is)g(not)291 3537 y(already)26 b(supp)r(orted)h(in)h(the)g(OMak)n(e)e(standard)h (library?)415 3636 y(F)-7 b(or)31 b(this)h(example,)h(let's)e(supp)r (ose)h(w)n(e)f(are)g(adopting)g(a)g(new)h(language.)48 b(The)31 b(lan-)291 3736 y(guage)24 b(uses)i(the)g(standard)f (compile/link)h(mo)r(del,)g(but)h(is)f(not)g(in)g(the)g(OMak)n(e)f (standard)291 3836 y(library)-7 b(.)35 b(Sp)r(eci\014cally)-7 b(,)28 b(let's)g(sa)n(y)e(w)n(e)h(ha)n(v)n(e)g(the)h(follo)n(wing)e (setup.)415 4011 y Fj(\017)41 b Fs(Source)22 b(\014les)g(are)g (de\014ned)h(in)g(\014les)f(with)i(a)e Fo(.cat)f Fs(su\016x)h(\(for)h (Categorical)d(Abstract)498 4111 y(T)-7 b(erminology\).)415 4274 y Fj(\017)41 b Fo(.cat)d Fs(\014les)h(are)f(compiled)h(with)g(the) h Fo(catc)d Fs(compiler)h(to)h(pro)r(duce)g Fo(.woof)e Fs(\014les)498 4373 y(\(Wic)n(k)n(ed)28 b(Ob)5 b(ject-Orien)n(ted)26 b(F)-7 b(ormat\).)415 4536 y Fj(\017)41 b Fo(.woof)23 b Fs(\014les)i(are)g(link)n(ed)g(b)n(y)g(the)g Fo(catc)f Fs(compiler)h(with)g(the)h Fo(-c)e Fs(option)h(to)g(pro)r(duce)498 4636 y(a)35 b Fo(.dog)f Fs(executable)h(\(Digital)h(Ob)5 b(ject)36 b(Group\).)60 b(The)36 b Fo(catc)e Fs(also)g(de\014nes)i(a)f Fo(-a)498 4736 y Fs(option)27 b(to)h(com)n(bine)f(sev)n(eral)f Fo(.woof)f Fs(\014les)j(in)n(to)f(a)h(library)-7 b(.)415 4899 y Fj(\017)41 b Fs(Eac)n(h)30 b Fo(.cat)f Fs(can)h(refer)h(to)f (other)h(source)e(\014les.)47 b(If)31 b(a)f(source)g(\014le)h Fo(a.cat)e Fs(con)n(tains)498 4998 y(a)k(line)h Fo(open)42 b(b)p Fs(,)34 b(then)g Fo(a.cat)e Fs(dep)r(ends)i(on)f(the)h(\014le)f Fo(b.woof)p Fs(,)g(and)g Fo(a.cat)f Fs(m)n(ust)p eop end %%Page: 36 36 TeXDict begin 36 35 bop 739 282 a @beginspecial @setspecial @endspecial Fs(36)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)946 515 y Fs(b)r(e)g(recompiled)e(if)h Fo(b.woof)e Fs(c)n(hanges.)35 b(The)27 b Fo(catc)f Fs(function)h(tak)n (es)f(a)h Fo(-I)f Fs(option)g(to)946 615 y(de\014ne)i(a)f(searc)n(h)g (path)g(for)g(dep)r(endencies.)863 764 y(T)-7 b(o)28 b(de\014ne)f(a)h(build)g(con\014guration,)e(w)n(e)h(ha)n(v)n(e)g(to)g (do)g(three)h(things.)739 794 y @beginspecial @setspecial @endspecial 840 904 a(1.)41 b(De\014ne)d(a)g Fo(.SCANNER)c Fs(rule)j(for)g(disco)n(v)n(ering)e(dep)r(endency)j(information)f(for)g (the)946 1004 y(source)27 b(\014les.)739 1030 y @beginspecial @setspecial @endspecial 840 1156 a(2.)41 b(De\014ne)29 b(a)e(generic)f(rule)i(for)f(compiling)g(a)g Fo(.cat)f Fs(\014le)i(to)f(a)h Fo(.woof)d Fs(\014le.)739 1199 y @beginspecial @setspecial @endspecial 840 1309 a(3.)41 b(De\014ne)d(a)g(rule)f(\(as)g(a)g(function\))h(for)f(linking)g Fo(.woof)f Fs(\014les)h(to)h(pro)r(duce)f(a)g Fo(.dog)946 1409 y Fs(executable.)863 1548 y(Initially)-7 b(,)28 b(these)g(de\014nitions)g(will)f(b)r(e)h(placed)g(in)g(the)g(pro)5 b(ject)26 b(ro)r(ot)h Fo(OMakefile)p Fs(.)739 1675 y @beginspecial @setspecial @endspecial 100 x Fk(3.4.1)112 b(De\014ning)39 b(a)f(default)g(compilation)h(rule)739 1928 y Fs(Let's)d(start)f(with)h(part)g(2,)h(de\014ning)f(a)f(generic)g (compilation)g(rule.)61 b(W)-7 b(e'll)37 b(de\014ne)f(the)739 2028 y(build)24 b(rule)e(as)h(an)g Fi(implicit)32 b Fs(rule.)j(T)-7 b(o)23 b(handle)g(the)h(include)f(path,)h(w)n(e'll)f(de\014ne)h(a)e(v) -5 b(ariable)739 2128 y Fo(CAT_INCLUDES)22 b Fs(that)27 b(sp)r(eci\014es)g(the)h(include)f(path.)37 b(This)27 b(will)g(b)r(e)h(an)e(arra)n(y)f(of)i(directo-)739 2227 y(ries.)36 b(T)-7 b(o)26 b(de\014ne)h(the)f(options,)h(w)n(e'll)f(use)g (a)g(lazy)g(v)-5 b(ariable)25 b(\(Section)i @beginspecial @setspecial @endspecial(7.5)p @beginspecial @setspecial @endspecial(\).)36 b(In)27 b(case)e(there)739 2327 y(are)h(an)n(y)h (other)g(standard)g(\015ags,)g(w)n(e'll)g(de\014ne)h(a)f Fo(CAT_FLAGS)d Fs(v)-5 b(ariable.)870 2476 y Fo(#)43 b(Define)e(the)h(catc)g(command,)e(in)j(case)f(we)h(ever)f(want)g(to)h (override)d(it)870 2576 y(CATC)i(=)h(catc)870 2775 y(#)g(The)f(default) f(flags)g(are)i(empty)870 2875 y(CAT_FLAGS)d(=)870 3074 y(#)j(The)f(directories)d(in)k(the)f(include)f(path)h(\(empty)f(by)i (default\))870 3174 y(INCLUDES[])c(=)870 3373 y(#)k(Compute)e(the)h (include)f(options)f(from)i(the)h(include)d(path)870 3473 y(PREFIXED_INCLUD)o(ES[)o(])d(=)44 b($`\(mapprefix)38 b(-I,)43 b($\(INCLUDES\)\))870 3672 y(#)g(The)f(default)f(way)h(to)h (build)e(a)j(.woof)d(file)870 3772 y(\045.woof:)f(\045.cat)1044 3871 y($\(CATC\))h($\(PREFIXED_INCL)o(UDE)o(S\))c($\(CAT_FLAGS\))i(-c)j ($<)863 4021 y Fs(The)29 b(\014nal)g(part)f(is)h(the)g(build)h(rule)e (itself,)i(where)e(w)n(e)h(call)f(the)h Fo(catc)f Fs(compiler)g(with) 739 4120 y(the)j(include)f(path,)i(and)e(the)g Fo(CAT_FLAGS)d Fs(that)k(ha)n(v)n(e)e(b)r(een)i(de\014ned.)45 b(The)31 b Fo($<)e Fs(v)-5 b(ariable)739 4220 y(represen)n(ts)26 b(the)i(source)e(\014le.)739 4347 y @beginspecial @setspecial @endspecial 100 x Fk(3.4.2)112 b(De\014ning)39 b(a)f(rule)f(for)h (linking)739 4600 y Fs(F)-7 b(or)23 b(linking,)i(w)n(e'll)e(de\014ne)h (another)f(rule)h(describing)f(ho)n(w)g(to)h(p)r(erform)f(linking.)35 b(Instead)739 4700 y(of)20 b(de\014ning)f(an)h(implicit)g(rule,)h(w)n (e'll)f(de\014ne)g(a)f(function)h(that)g(describ)r(es)f(the)h(linking)g (step.)739 4799 y(The)33 b(function)g(will)g(tak)n(e)e(t)n(w)n(o)h (argumen)n(ts;)i(the)f(\014rst)f(is)h(the)g(name)f(of)h(the)g (executable)739 4899 y(\(without)27 b(su\016x\),)g(and)g(the)g(second)e (is)i(the)g(\014les)f(to)h(link)f(\(also)g(without)h(su\016xes\).)37 b(Here)739 4998 y(is)27 b(the)h(co)r(de)g(fragmen)n(t.)p eop end %%Page: 37 37 TeXDict begin 37 36 bop 291 282 a @beginspecial @setspecial @endspecial Fp(3.4.)63 b(HANDLING)29 b(NEW)f(LANGUA)n(GES)1338 b Fs(37)465 515 y Fo(#)43 b(Optional)d(link)i(options)465 615 y(CAT_LINK_FLAGS)c(=)465 814 y(#)43 b(The)f(function)f(that)h (defines)e(how)j(to)f(build)g(a)h(.dog)f(program)465 914 y(CatProgram\(progr)o(am)o(,)c(files\))j(=)639 1013 y(#)i(Add)g(the)f(suffixes)639 1113 y(file_names)e(=)j($\(addsuffix)c (.woof,)i($\(files\)\))639 1213 y(prog_name)f(=)j($\(addsuffix)c(.dog,) j($\(files\)\))639 1412 y(#)h(The)g(build)e(rule)639 1512 y($\(prog_name\):)d($\(file_names\))814 1611 y($\(CATC\))i ($\(PREFIXED_INCLUD)o(ES)o(\))e($\(CAT_FLAGS\))g($\(CAT_LINK_FLAGS\))f (-o)43 b($@)f($+)639 1810 y(#)h(Return)f(the)g(program)f(name)639 1910 y(value)h($\(prog_name\))415 2064 y Fs(The)30 b Fo(CAT_LINK_FLAGS)23 b Fs(v)-5 b(ariable)29 b(is)g(de\014ned)h(just)g (in)f(case)g(w)n(e)g(w)n(an)n(t)f(to)i(pass)e(addi-)291 2164 y(tional)23 b(\015ags)f(sp)r(eci\014c)i(to)f(the)h(link)f(step.)36 b(No)n(w)23 b(that)g(this)h(function)g(is)f(de\014ned,)i(whenev)n(er) 291 2263 y(w)n(e)20 b(w)n(an)n(t)f(to)i(de\014ne)g(a)f(rule)g(for)g (building)g(a)g(program,)g(w)n(e)g(simply)h(call)f(the)h(rule.)34 b(The)21 b(pre-)291 2363 y(vious)g(implicit)j(rule)e(sp)r(eci\014es)g (ho)n(w)g(to)h(compile)f(eac)n(h)g(source)f(\014le,)j(and)e(the)h Fo(CatProgram)291 2462 y Fs(function)28 b(sp)r(eci\014es)f(ho)n(w)g(to) h(build)g(the)g(executable.)465 2616 y Fo(#)43 b(Build)f(a)h(rover.dog) d(program)g(from)i(the)h(source)465 2716 y(#)g(files)f(neko.cat)e(and)i (chat.cat.)465 2816 y(#)h(Compile)e(it)i(by)f(default.)465 2915 y(.DEFAULT:)e($\(CatProgram)e(rover,)k(neko)f(chat\))291 3045 y @beginspecial @setspecial @endspecial 98 x Fk(3.4.3)112 b(Dep)s(endency)39 b(scanning)291 3296 y Fs(That's)32 b(it,)i(almost.)51 b(The)33 b(part)f(w)n(e)g(left)h(out)f(w)n(as)g (automated)g(dep)r(endency)h(scanning.)291 3396 y(This)27 b(is)g(one)g(of)g(the)h(nicer)e(features)h(of)g(OMak)n(e,)f(and)h(one)g (that)h(mak)n(es)e(build)i(sp)r(eci\014ca-)291 3495 y(tions)j(easier)e (to)i(write)g(and)g(more)g(robust.)47 b(Strictly)31 b(sp)r(eaking,)g (it)h(isn't)f(required,)g(but)291 3595 y(y)n(ou)26 b(de\014nitely)i(w)n (an)n(t)f(to)h(do)f(it.)415 3694 y(The)d(mec)n(hanism)f(is)g(to)g (de\014ne)h(a)f Fo(.SCANNER)e Fs(rule,)j(whic)n(h)f(is)h(lik)n(e)f(a)g (normal)f(rule,)i(but)291 3794 y(it)j(sp)r(eci\014es)h(ho)n(w)e(to)i (compute)f(dep)r(endencies,)h(not)f(the)h(target)e(itself.)38 b(In)27 b(this)h(case,)e(w)n(e)291 3894 y(w)n(an)n(t)h(to)g(de\014ne)h (a)f Fo(.SCANNER)d Fs(rule)k(of)f(the)h(follo)n(wing)f(form.)465 4048 y Fo(.SCANNER:)40 b(\045.woof:)g(\045.cat)639 4147 y()415 4301 y Fs(This)29 b(rule)g(sp)r(eci\014es)g(that)h(a)e Fo(.woof)g Fs(\014le)h(ma)n(y)f(ha)n(v)n(e)g(additional)h(dep)r (endencies)h(that)291 4401 y(can)21 b(b)r(e)h(extracted)f(from)g(the)h (corresp)r(onding)e Fo(.cat)g Fs(\014le)i(b)n(y)f(executing)h(the)g Fo()p Fs(.)291 4500 y(The)30 b Fi(r)l(esult)38 b Fs(of)30 b(executing)h(the)f Fo()d Fs(should)j(b)r(e)h(a)f (sequence)g(of)h(dep)r(endencies)291 4600 y(in)c(OMak)n(e)g(format,)g (prin)n(ted)g(to)h(the)g(standard)e(output.)415 4700 y(As)31 b(w)n(e)f(men)n(tioned,)i(eac)n(h)d Fo(.cat)h Fs(\014le)g(sp)r(eci\014es)h(dep)r(endencies)g(on)f Fo(.woof)f Fs(\014les)h(with)291 4799 y(an)25 b Fo(open)g Fs(directiv)n(e.)36 b(F)-7 b(or)25 b(example,)i(if)f(the)h Fo(neko.cat)c Fs(\014le)j(con)n(tains)f(a)h(line)g Fo(open)42 b(chat)p Fs(,)291 4899 y(then)33 b Fo(neko.woof)28 b Fs(dep)r(ends)33 b(on)g Fo(chat.woof)p Fs(.)47 b(In)33 b(this)g(case,)g(the)g Fo()28 b Fs(should)291 4998 y(prin)n(t)f(the)h(follo)n(wing)f (line.)p eop end %%Page: 38 38 TeXDict begin 38 37 bop 739 282 a @beginspecial @setspecial @endspecial Fs(38)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)913 515 y Fo(neko.woof:)40 b(chat.woof)863 711 y Fs(F)-7 b(or)31 b(an)g(analogy)f(that)h(migh)n(t)h(mak)n(e)e (this)i(clearer,)f(consider)f(the)i(C)f(programming)739 811 y(language,)24 b(where)h(a)g Fo(.o)f Fs(\014le)h(is)h(pro)r(duced)e (b)n(y)h(compiling)g(a)g Fo(.c)g Fs(\014le.)36 b(If)25 b(a)g(\014le)h Fo(foo.c)d Fs(con-)739 910 y(tains)h(a)g(line)g(lik)n(e) g Fo(#include)40 b("fum.h")p Fs(,)22 b(then)j Fo(foo.c)d Fs(should)i(b)r(e)h(recompiled)e(whenev)n(er)739 1010 y Fo(fum.h)f Fs(c)n(hanges.)34 b(That)23 b(is,)i(the)f(\014le)g Fo(foo.o)d Fi(dep)l(ends)32 b Fs(on)23 b(the)h(\014le)g Fo(fum.h)p Fs(.)34 b(In)24 b(the)g(OMak)n(e)739 1110 y(parlance,)29 b(this)g(is)h(called)f(an)g Fi(implicit)39 b Fs(dep)r(endency)-7 b(,)30 b(and)f(the)h Fo(.SCANNER)c()739 1209 y Fs(w)n(ould)h(prin)n(t)h(a)f(line)h(lik)n(e)f(the)h(follo)n (wing.)913 1409 y Fo(foo.o:)41 b(fum.h)863 1605 y Fs(No)n(w,)20 b(returning)e(to)g(the)h(animal)f(w)n(orld,)h(to)f(compute)h(the)f(dep) r(endencies)h(of)f Fo(neko.woof)p Fs(,)739 1704 y(w)n(e)g(should)g (scan)g Fo(neko.cat)p Fs(,)f(line-b)n(y-line,)i(lo)r(oking)f(for)g (lines)g(of)g(the)h(form)f Fo(open)42 b()p Fs(.)739 1804 y(W)-7 b(e)28 b(could)f(do)g(this)g(b)n(y)g(writing)g(a)g (program,)e(but)j(it)g(is)f(easy)f(enough)h(to)g(do)g(it)h(in)f Fo(omake)739 1903 y Fs(itself.)50 b(W)-7 b(e)32 b(can)g(use)f(the)i (builtin)f @beginspecial @setspecial @endspecial Fo(awk)f Fs(function)p @beginspecial @setspecial @endspecial 33 w(to)g(scan)g(the)i(source)d(\014le.)50 b(One)32 b(sligh)n(t)739 2003 y(complication)d(is)i(that)f(the)h(dep)r(endencies)f(dep)r(end)h (on)f(the)h Fo(INCLUDE)c Fs(path.)46 b(W)-7 b(e'll)30 b(use)739 2103 y(the)e @beginspecial @setspecial @endspecial Fo(find-in-path)23 b Fs(function)p @beginspecial @setspecial @endspecial 28 w(to)k(\014nd)h(them.)38 b(Here)27 b(w)n(e)g(go.)913 2302 y Fo(.SCANNER:)40 b(\045.woof:)h(\045.cat)1088 2402 y(section)1262 2501 y(#)i(Scan)f(the)g(file)1262 2601 y(deps[])f(=)1262 2700 y(awk\($<\))1262 2800 y(case)h($'^open')1436 2900 y(deps[])f(+=)i($2)1436 2999 y(export)1262 3199 y(#)g(Remove)e(duplicates,)e(and)k(find)f(the)g(files)f(in)i(the)f (include)f(path)1262 3298 y(deps)h(=)h($\(find-in-path)38 b($\(INCLUDES\),)g($\(set)k($\(deps\)\)\))1262 3497 y(#)h(Print)f(the)g (dependencies)1262 3597 y(println\($"$@:)c($\(deps\)"\))863 3793 y Fs(Let's)21 b(lo)r(ok)f(at)g(the)h(parts.)34 b(First,)21 b(the)g(en)n(tire)f(b)r(o)r(dy)h(is)f(de\014ned)h(in)g(a)f Fo(section)e Fs(b)r(ecause)739 3893 y(w)n(e)27 b(are)g(computing)g(it)h (in)n(ternally)-7 b(,)27 b(not)h(as)f(a)g(sequence)g(of)h(shell)f (commands.)863 3996 y(W)-7 b(e)38 b(use)f(the)h Fo(deps)d Fs(v)-5 b(ariable)36 b(to)h(collect)g(all)g(the)h(dep)r(endencies.)66 b(The)37 b Fo(awk)f Fs(func-)739 4095 y(tion)h(scans)g(the)h(source)e (\014le)h(\()p Fo($<)p Fs(\))h(line-b)n(y-line.)65 b(F)-7 b(or)37 b(lines)g(that)h(matc)n(h)f(the)h(regular)739 4195 y(expression)31 b Fo(^open)h Fs(\(meaning)g(that)i(the)f(line)h(b) r(egins)e(with)i(the)g(w)n(ord)d Fo(open)p Fs(\),)j(w)n(e)e(add)739 4294 y(the)26 b(second)f(w)n(ord)g(on)h(the)g(line)g(to)g(the)g Fo(deps)e Fs(v)-5 b(ariable.)36 b(F)-7 b(or)25 b(example,)h(if)g(the)g (input)h(line)739 4394 y(is)i Fo(open)42 b(chat)p Fs(,)28 b(then)i(w)n(e)f(w)n(ould)g(add)g(the)h Fo(chat)d Fs(string)i(to)g(the) h Fo(deps)d Fs(arra)n(y)-7 b(.)40 b(All)30 b(other)739 4494 y(lines)d(in)h(the)g(source)f(\014le)g(are)g(ignored.)863 4597 y(Next,)34 b(the)e Fo($\(set)42 b($\(deps\)\))28 b Fs(expression)j(remo)n(v)n(es)f(an)n(y)h(duplicate)h(v)-5 b(alues)32 b(in)g(the)739 4696 y Fo(deps)21 b Fs(arra)n(y)f(\(sorting)i (the)g(arra)n(y)f(alphab)r(etically)h(in)g(the)h(pro)r(cess\).)35 b(The)22 b Fo(find-in-path)739 4796 y Fs(function)28 b(then)g(\014nds)g(the)g(actual)f(lo)r(cation)g(of)h(eac)n(h)e(\014le)i (in)g(the)g(include)g(path.)863 4899 y(The)i(\014nal)f(step)h(is)g (prin)n(t)f(the)h(result)f(as)g(the)h(string)f Fo($"$@:)41 b($\(deps\)")27 b Fs(The)i(quota-)739 4998 y(tions)e(are)g(added)g(to)h (\015atten)g(the)g Fo(deps)e Fs(arra)n(y)f(to)i(a)h(simple)f(string.)p eop end %%Page: 39 39 TeXDict begin 39 38 bop 291 282 a @beginspecial @setspecial @endspecial Fp(3.4.)63 b(HANDLING)29 b(NEW)f(LANGUA)n(GES)1338 b Fs(39)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(3.4.4)112 b(Pulling)38 b(it)f(all)h(together)291 669 y Fs(T)-7 b(o)31 b(complete)i(the)f(example,)h(let's)g(pull)g(it)f (all)g(together)g(in)n(to)g(a)g(single)f(pro)5 b(ject,)33 b(m)n(uc)n(h)291 768 y(lik)n(e)27 b(our)g(previous)f(example.)465 950 y Fo(my_project/)465 1049 y(|-->)42 b(OMakeroot)465 1149 y(|-->)g(OMakefile)465 1248 y(`-->)g(src/)683 1348 y(|--->)f(OMakefile)683 1448 y(|--->)g(lib/)683 1547 y(|)217 b(|--->)42 b(OMakefile)683 1647 y(|)217 b(|--->)42 b(neko.cat)683 1747 y(|)217 b(`--->)42 b(chat.cat)683 1846 y(`--->)f(main/)944 1946 y(|--->)h(OMakefile)944 2045 y(`--->)g(main.cat)415 2227 y Fs(The)19 b(listing)f(for)g(the)h (en)n(tire)f(pro)5 b(ject)18 b(is)h(as)f(follo)n(ws.)32 b(Here,)21 b(w)n(e)d(also)f(include)i(a)f(function)291 2326 y Fo(CatLibrary)23 b Fs(to)28 b(link)f(sev)n(eral)f Fo(.woof)g Fs(\014les)h(in)n(to)h(a)f(library)-7 b(.)291 2508 y Fo(my_project/OMak)o(ero)o(ot)o(:)465 2607 y(#)43 b(Process)e(the)h(command-line)d(vars)465 2707 y(DefineCommandVar)o (s\()o(\))465 2906 y(#)k(Include)e(the)h(OMakefile)e(in)j(this)f (directory.)465 3006 y(.SUBDIRS:)e(.)291 3205 y(my_project/OMak)o(efi)o (le)o(:)421 3305 y(#################)o(##)o(###)o(##)o(###)o(##)o(###)o (##)o(##)o(###)o(##)o(###)o(##)o(##)o(###)o(##)o(###)o(##)o(###)o(##)o (##)o(###)o(##)o(##)421 3404 y(#)k(Standard)c(config)h(for)h(compiling) e(.cat)i(files)421 3504 y(#)421 3703 y(#)i(Define)d(the)h(catc)g (command,)e(in)j(case)f(we)h(ever)f(want)f(to)i(override)e(it)421 3803 y(CATC)h(=)h(catc)421 4002 y(#)h(The)e(default)f(flags)g(are)h (empty)421 4102 y(CAT_FLAGS)e(=)421 4301 y(#)k(The)e(directories)d(in)k (the)f(include)f(path)h(\(empty)f(by)h(default\))421 4401 y(INCLUDES[])e(=)421 4600 y(#)k(Compute)c(the)j(include)d(options) h(from)h(the)g(include)f(path)421 4700 y(PREFIXED_INCLUDES)o([])c(=)43 b($`\(mapprefix)c(-I,)j($\(INCLUDES\)\))421 4899 y(#)i(Dependency)39 b(scanner)i(for)h(.cat)g(files)421 4998 y(.SCANNER:)e(\045.woof:)h (\045.cat)p eop end %%Page: 40 40 TeXDict begin 40 39 bop 739 282 a @beginspecial @setspecial @endspecial Fs(40)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)1088 515 y Fo(section)1262 615 y(#)43 b(Scan)f(the)g(file)1262 715 y(deps[])f(=)1262 814 y(awk\($<\))1262 914 y(case)h($'^open')1436 1013 y(deps[])f(+=)i($2)1436 1113 y(export)1262 1312 y(#)g(Remove)e(duplicates,)e(and)k(find)f(the)g (files)f(in)i(the)f(include)f(path)1262 1412 y(deps)h(=)h ($\(find-in-path)38 b($\(INCLUDES\),)g($\(set)k($\(deps\)\)\))1262 1611 y(#)h(Print)f(the)g(dependencies)1262 1711 y(println\($"$@:)c ($\(deps\)"\))870 1910 y(#)43 b(The)f(default)f(way)h(to)h(compile)e(a) i(.cat)f(file)870 2010 y(\045.woof:)e(\045.cat)1044 2109 y($\(CATC\))h($\(PREFIXED_INCL)o(UDE)o(S\))c($\(CAT_FLAGS\))i(-c)j($<) 870 2309 y(#)h(Optional)d(link)i(options)870 2408 y(CAT_LINK_FLAGS)37 b(=)870 2607 y(#)43 b(Build)e(a)j(library)c(for)j(several)d(.woof)i (files)870 2707 y(CatLibrary\(lib,)37 b(files\))k(=)1044 2807 y(#)i(Add)g(the)f(suffixes)1044 2906 y(file_names)d(=)44 b($\(addsuffix)39 b(.woof,)i($\(files\)\))1044 3006 y(lib_name)f(=)j ($\(addsuffix)c(.woof,)j($\(lib\)\))1044 3205 y(#)h(The)g(build)e(rule) 1044 3305 y($\(lib_name\):)e($\(file_names\))1218 3404 y($\(CATC\))i($\(PREFIXED_INCLU)o(DES)o(\))c($\(CAT_FLAGS\))i ($\(CAT_LINK_FLAGS)o(\))f(-a)k($@)h($+)1044 3604 y(#)g(Return)e(the)i (program)d(name)1044 3703 y(value)i($\(lib_name\))870 3903 y(#)h(The)f(function)e(that)i(defines)f(how)h(to)h(build)f(a)h (.dog)f(program)870 4002 y(CatProgram\(prog)o(ram)o(,)37 b(files\))k(=)1044 4102 y(#)i(Add)g(the)f(suffixes)1044 4201 y(file_names)d(=)44 b($\(addsuffix)39 b(.woof,)i($\(files\)\))1044 4301 y(prog_name)f(=)j($\(addsuffix)c(.dog,)j($\(program\)\))1044 4500 y(#)h(The)g(build)e(rule)1044 4600 y($\(prog_name\):)d ($\(file_names\))1218 4700 y($\(CATC\))j($\(PREFIXED_INCLU)o(DES)o(\))c ($\(CAT_FLAGS\))i($\(CAT_LINK_FLAGS)o(\))f(-o)k($@)h($+)1044 4899 y(#)g(Return)e(the)i(program)d(name)1044 4998 y(value)i ($\(prog_name\))p eop end %%Page: 41 41 TeXDict begin 41 40 bop 291 282 a @beginspecial @setspecial @endspecial Fp(3.5.)63 b(COLLAPSING)28 b(THE)f(HIERAR)n(CHY,)h (.SUBDIRS)h(BODIES)498 b Fs(41)421 615 y Fo(#################)o(##)o (###)o(##)o(###)o(##)o(###)o(##)o(##)o(###)o(##)o(###)o(##)o(##)o(###)o (##)o(###)o(##)o(###)o(##)o(##)o(###)o(##)o(##)421 715 y(#)44 b(Now)e(the)g(program)f(proper)421 814 y(#)421 1013 y(#)j(Include)c(the)j(src)f(subdirectory)421 1113 y(.SUBDIRS:)e(src)291 1312 y(my_project/src/)o(OMa)o(ke)o(fi)o(le:)421 1412 y(.SUBDIRS:)g(lib)j(main)291 1611 y(my_project/src/)o(lib)o(/O)o (Ma)o(kef)o(il)o(e:)421 1711 y(CatLibrary\(cats,)37 b(neko)42 b(chat\))291 1910 y(my_project/src/)o(mai)o(n/)o(OM)o(ake)o(fi)o(le:) 421 2010 y(#)i(Allow)d(includes)f(from)i(the)h(../lib)e(directory)421 2109 y(INCLUDES[])f(+=)j(../lib)421 2309 y(#)h(Build)d(the)h(program) 421 2408 y(.DEFAULT:)e($\(CatProgram)f(main,)i(main)h(../cats\))415 2570 y Fs(Some)19 b(notes.)33 b(The)19 b(con\014guration)e(in)i(the)g (pro)5 b(ject)18 b Fo(OMakeroot)d Fs(de\014nes)k(the)g(standard)291 2669 y(con\014guration,)25 b(including)i(the)g(dep)r(endency)h (scanner,)e(the)h(default)g(rule)g(for)f(compiling)291 2769 y(source)g(\014les,)i(and)f(functions)h(for)f(building)h (libraries)e(and)h(programs.)415 2869 y(These)j(rules)g(and)h (functions)g(are)e(inherited)i(b)n(y)f(sub)r(directories,)g(so)g(the)h Fo(.SCANNER)291 2968 y Fs(and)d(build)i(rules)f(are)f(used)h (automatically)f(in)h(eac)n(h)f(sub)r(directory)-7 b(,)29 b(so)f(y)n(ou)h(don't)g(need)291 3068 y(to)e(rep)r(eat)g(them.)291 3197 y @beginspecial @setspecial @endspecial 100 x Fk(3.4.5)112 b(Finishing)39 b(up)291 3450 y Fs(A)n(t)27 b(this)h(p)r(oin)n(t)g(w)n (e)f(are)g(done,)g(but)i(there)e(are)g(a)g(few)h(things)f(w)n(e)g(can)h (consider.)415 3549 y(First,)22 b(the)e(rules)f(for)h(building)g(cat)g (programs)d(is)j(de\014ned)h(in)f(the)g(pro)5 b(ject)19 b Fo(OMakefile)p Fs(.)291 3649 y(If)f(y)n(ou)g(had)g(another)g(cat)g (pro)5 b(ject)17 b(somewhere,)j(y)n(ou)d(w)n(ould)h(need)h(to)f(cop)n (y)f(the)i Fo(OMakeroot)291 3749 y Fs(\(and)k(mo)r(dify)g(it)h(as)e (needed\).)36 b(Instead)23 b(of)g(that,)h(y)n(ou)e(should)h(consider)f (mo)n(ving)g(the)i(con-)291 3848 y(\014guration)h(to)h(a)h(shared)e (library)g(directory)-7 b(,)26 b(in)h(a)f(\014le)h(lik)n(e)f Fo(Cat.om)p Fs(.)34 b(That)26 b(w)n(a)n(y)-7 b(,)26 b(instead)291 3948 y(of)19 b(cop)n(ying)g(the)h(co)r(de,)h(y)n(ou)e(could)h(include)g (the)g(shared)f(cop)n(y)g(with)h(an)g(OMak)n(e)e(command)291 4048 y Fo(open)42 b(Cat)p Fs(.)33 b(The)20 b(share)g(directory)f (should)h(b)r(e)h(added)f(to)g(y)n(our)f Fo(OMAKEPATH)e Fs(en)n(vironmen)n(t)291 4147 y(v)-5 b(ariable)26 b(to)i(ensure)f(that) g Fo(omake)f Fs(kno)n(ws)h(ho)n(w)g(to)g(\014nd)h(it.)415 4247 y(Better)37 b(y)n(et,)i(if)e(y)n(ou)f(are)g(happ)n(y)h(with)g(y)n (our)f(w)n(ork,)h(consider)f(submitting)i(it)f(as)f(a)291 4346 y(standard)c(con\014guration)g(\(b)n(y)h(sending)g(a)g(request)g (to)g Fo(omake@metaprl.org)o Fs(\))28 b(so)33 b(that)291 4446 y(others)26 b(can)i(mak)n(e)e(use)i(of)f(it)h(to)r(o.)291 4568 y @beginspecial @setspecial @endspecial 149 x Fl(3.5)135 b(Collapsing)44 b(the)f(hierarc)l(h)l(y)-11 b(,)43 b(.SUBDIRS)g(b)t(o)t (dies)291 4899 y Fs(Some)31 b(pro)5 b(jects)31 b(ha)n(v)n(e)g(man)n(y)g (sub)r(directories)g(that)h(all)g(ha)n(v)n(e)f(the)h(same)f (con\014guration.)291 4998 y(F)-7 b(or)31 b(instance,)h(supp)r(ose)g(y) n(ou)f(ha)n(v)n(e)g(a)g(pro)5 b(ject)31 b(with)i(man)n(y)e(sub)r (directories,)h(eac)n(h)f(con-)p eop end %%Page: 42 42 TeXDict begin 42 41 bop 739 282 a @beginspecial @setspecial @endspecial Fs(42)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)739 515 y Fs(taining)j(a)g(set)g(of)g(images)f(that) h(are)f(to)h(b)r(e)h(comp)r(osed)f(in)n(to)f(a)h(w)n(eb)g(page.)47 b(Apart)31 b(from)739 615 y(the)d(sp)r(eci\014c)g(images,)e(the)i (con\014guration)e(of)i(eac)n(h)f(\014le)g(is)h(the)g(same.)863 717 y(T)-7 b(o)39 b(mak)n(e)f(this)i(more)e(concrete,)j(supp)r(ose)e (the)h(pro)5 b(ject)38 b(has)h(four)f(sub)r(directories)739 817 y Fo(page1)p Fs(,)k Fo(page2)p Fs(,)g Fo(page3)p Fs(,)g(and)e Fo(page4)p Fs(.)74 b(Eac)n(h)40 b(con)n(tains)f(t)n(w)n(o) h(\014les)h Fo(image1.jpg)36 b Fs(and)739 916 y Fo(image2.jpg)23 b Fs(that)28 b(are)f(part)g(of)h(a)f(w)n(eb)g(page)g(generated)f(b)n(y) i(a)f(program)e Fo(genhtml)p Fs(.)863 1019 y(Instead)32 b(of)g(of)g(de\014ning)g(a)f Fo(OMakefile)d Fs(in)k(eac)n(h)f (directory)-7 b(,)32 b(w)n(e)g(can)f(de\014ne)h(it)g(as)g(a)739 1118 y(b)r(o)r(dy)c(to)f(the)h Fo(.SUBDIRS)d Fs(command.)913 1314 y Fo(.SUBDIRS:)40 b(page1)i(page2)f(page3)h(page4)1088 1414 y(index.html:)d(image1.jpg)g(image2jpg)1262 1513 y(genhtml)i($+)h(>)i($@)863 1706 y Fs(The)23 b(b)r(o)r(dy)g(of)g(the)g Fo(.SUBDIRS)d Fs(is)j(in)n(terpreted)f(exactly)g(as)g(if)i(it)f(w)n (ere)f(the)h Fo(OMakefile)p Fs(,)739 1806 y(and)28 b(it)g(can)f(con)n (tain)g(an)n(y)g(of)h(the)g(normal)f(statemen)n(ts.)37 b(The)28 b(b)r(o)r(dy)g(is)f(ev)-5 b(aluated)28 b Fi(in)i(the)739 1906 y(sub)l(dir)l(e)l(ctory)f Fs(for)20 b(eac)n(h)g(of)h(the)g(sub)r (directories.)33 b(W)-7 b(e)22 b(can)e(see)g(this)h(if)h(w)n(e)e(add)h (a)f(statemen)n(t)739 2005 y(that)28 b(prin)n(ts)f(the)h(curren)n(t)f (directory)f(\()p Fo($\(CWD\))p Fs(\).)913 2201 y Fo(.SUBDIRS:)40 b(page1)i(page2)f(page3)h(page4)1088 2300 y(println\($\(absna)o(me)37 b($\(CWD\)\)\))1088 2400 y(index.html:)i(image1.jpg)g(image2jpg)1262 2500 y(genhtml)i($+)h(>)i($@)826 2599 y(#)f(prints)913 2699 y(/home/jyh/.../pag)o(e1)913 2799 y(/home/jyh/.../pag)o(e2)913 2898 y(/home/jyh/.../pag)o(e3)913 2998 y(/home/jyh/.../pag)o(e4)739 3144 y @beginspecial @setspecial @endspecial 100 x Fk(3.5.1)112 b(Using)39 b(glob)e(patterns)739 3402 y Fs(Of)g(course,)i(this)e(sp)r (eci\014cation)g(is)g(quite)h(rigid.)65 b(In)37 b(practice,)i(it)f(is)f (lik)n(ely)g(that)g(eac)n(h)739 3502 y(sub)r(directory)31 b(will)i(ha)n(v)n(e)e(a)h(di\013eren)n(t)h(set)f(of)h(images,)f(and)h (all)f(should)g(b)r(e)h(included)g(in)739 3601 y(the)e(w)n(eb)f(page.) 44 b(One)29 b(of)i(the)f(easier)f(solutions)h(is)g(to)g(use)g(one)g(of) g(the)h(directory-listing)739 3701 y(functions,)26 b(lik)n(e)f @beginspecial @setspecial @endspecial Fo(glob)p @beginspecial @setspecial @endspecial 23 w Fs(or)g @beginspecial @setspecial @endspecial Fo(ls)p @beginspecial @setspecial @endspecial Fs(.)35 b(The)25 b Fo(glob)f Fs(function)i(tak)n(es)e(a)h(shell)g (pattern,)h(and)f(returns)739 3801 y(an)i(arra)n(y)e(of)j(\014le)g (with)g(matc)n(hing)f(\014lenames)g(in)h(the)g(curren)n(t)f(directory) -7 b(.)913 3996 y Fo(.SUBDIRS:)40 b(page1)i(page2)f(page3)h(page4)1088 4096 y(IMAGES)f(=)i($\(glob)e(*.jpg\))1088 4196 y(index.html:)e ($\(IMAGES\))1262 4295 y(genhtml)i($+)h(>)i($@)739 4441 y @beginspecial @setspecial @endspecial 101 x Fk(3.5.2)112 b(Simpli\014ed)40 b(sub-con\014gurations)739 4700 y Fs(Another)29 b(option)g(is)h(to)f(add)h(a)f(con\014guration)f(\014le)i(in)f(eac)n(h) g(of)h(the)f(sub)r(directories)g(that)739 4799 y(de\014nes)h (directory-sp)r(eci\014c)f(information.)44 b(F)-7 b(or)30 b(this)h(example,)f(w)n(e)g(migh)n(t)h(de\014ne)f(a)g(\014le)739 4899 y Fo(BuildInfo.om)22 b Fs(in)k(eac)n(h)g(of)h(the)f(sub)r (directories)g(that)h(de\014nes)f(a)g(list)h(of)g(images)e(in)i(that) 739 4998 y(directory)-7 b(.)36 b(The)27 b Fo(.SUBDIRS)e Fs(line)i(is)h(similar,)f(but)h(w)n(e)f(include)h(the)g(BuildInfo)g (\014le.)p eop end %%Page: 43 43 TeXDict begin 43 42 bop 291 282 a @beginspecial @setspecial @endspecial Fp(3.5.)63 b(COLLAPSING)28 b(THE)f(HIERAR)n(CHY,)h (.SUBDIRS)h(BODIES)498 b Fs(43)465 515 y Fo(.SUBDIRS:)40 b(page1)h(page2)h(page3)f(page4)639 615 y(include)g(BuildInfo)127 b(#)43 b(Defines)e(the)h(IMAGES)f(variable)639 814 y(index.html:)e ($\(IMAGES\))814 914 y(genhtml)h($+)j(>)g($@)415 1120 y Fs(Where)28 b(w)n(e)f(migh)n(t)g(ha)n(v)n(e)g(the)h(follo)n(wing)e (con\014gurations.)421 1332 y Fo(page1/BuildInfo.o)o(m:)596 1431 y(IMAGES[])40 b(=)j(image.jpg)421 1531 y(page2/BuildInfo.o)o(m:) 596 1631 y(IMAGES[])d(=)j(../common/header.)o(jp)o(g)37 b(winlogo.jpg)421 1730 y(page3/BuildInfo.o)o(m:)596 1830 y(IMAGES[])j(=)j(../common/header.)o(jp)o(g)37 b(unixlogo.jpg)i (daemon.jpg)421 1929 y(page4/BuildInfo.o)o(m:)596 2029 y(IMAGES[])h(=)j(fee.jpg)e(fi.jpg)g(foo.jpg)g(fum.jpg)291 2189 y @beginspecial @setspecial @endspecial 103 x Fk(3.5.3)112 b(Computing)38 b(the)g(sub)s(directory)g(list)291 2457 y Fs(The)25 b(other)h(hardco)r(ded)f(sp)r(eci\014cation)g(is)h(the)g (list)g(of)g(sub)r(directories)e Fo(page1)p Fs(,)g(...,)j Fo(page4)p Fs(.)291 2556 y(Rather)i(than)g(editing)h(the)g(pro)5 b(ject)29 b Fo(OMakefile)d Fs(eac)n(h)j(time)h(a)f(directory)g(is)g (added,)h(w)n(e)291 2656 y(could)d(compute)h(it)g(\(again)e(with)i Fo(glob)p Fs(\).)465 2868 y Fo(.SUBDIRS:)40 b($\(glob)h(page*\))639 2967 y(index.html:)e($\(glob)i(*.jpg\))814 3067 y(genhtml)f($+)j(>)g ($@)415 3273 y Fs(Alternately)-7 b(,)37 b(the)f(directory)d(structure)i (ma)n(y)f(b)r(e)i(hierarc)n(hical.)57 b(Instead)35 b(of)g(using)291 3373 y Fo(glob)p Fs(,)e(w)n(e)g(could)g(use)g(the)g Fo(subdirs)e Fs(function,)k(returns)e(eac)n(h)f(of)h(the)h(directories)e(in)h(a)291 3472 y(hierarc)n(h)n(y)-7 b(.)34 b(F)-7 b(or)27 b(example,)g(this)g(is) h(the)f(result)g(of)g(ev)-5 b(aluating)27 b(the)g Fo(subdirs)e Fs(function)j(in)291 3572 y(the)33 b(omak)n(e)f(pro)5 b(ject)32 b(ro)r(ot.)52 b(The)33 b Fo(P)f Fs(option,)i(passed)f(as)f (the)h(\014rst)g(argumen)n(t,)g(sp)r(eci\014es)291 3671 y(that)27 b(the)h(listing)g(is)f(\\prop)r(er,")f(it)i(should)g(not)f (include)h(the)g Fo(omake)e Fs(directory)g(itself.)465 3883 y Fo(osh>)42 b(subdirs\(P,)d(.\))465 3983 y(-)k(:)g()415 4587 y Fs(Using)27 b Fo(subdirs)p Fs(,)e(our)i(example)g(is)h(no)n(w)f(as)g(follo)n(ws.)465 4799 y Fo(.SUBDIRS:)40 b($\(subdirs)g(P,)i(.\))639 4899 y(index.html:)d($\(glob)i(*.jpg\))814 4998 y(genhtml)f($+)j(>)g($@)p eop end %%Page: 44 44 TeXDict begin 44 43 bop 739 282 a @beginspecial @setspecial @endspecial Fs(44)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)863 515 y Fs(In)g(this)g(case,)f Fi(every)36 b Fs(sub)r(directory)26 b(will)i(b)r(e)g(included)g(in)g(the)g(pro)5 b(ject.)863 615 y(If)29 b(w)n(e)e(are)g(using)h(the)g Fo(BuildInfo.om)23 b Fs(option.)37 b(Instead)28 b(of)f(including)h(ev)n (ery)f(sub)r(di-)739 715 y(rectory)-7 b(,)26 b(w)n(e)g(could)h(include) g(only)g(those)g(that)g(con)n(tain)f(a)h Fo(BuildInfo.om)22 b Fs(\014le.)37 b(F)-7 b(or)26 b(this)739 814 y(purp)r(ose,)h(w)n(e)h (can)g(use)f(the)i Fo(find)d Fs(function,)j(whic)n(h)f(tra)n(v)n(erses) d(the)k(directory)d(hierarc)n(h)n(y)739 914 y(lo)r(oking)d(for)h (\014les)h(that)g(matc)n(h)f(a)g(test)h(expression.)34 b(In)25 b(our)f(case,)g(w)n(e)g(w)n(an)n(t)g(to)h(searc)n(h)e(for)739 1013 y(\014les)k(with)i(the)e(name)h Fo(BuildInfo.om)p Fs(.)k(Here)27 b(is)h(an)f(example)g(call.)913 1191 y Fo(osh>)42 b(FILES)g(=)h($\(find)e(.)i(-name)f(BuildInfo.om\))913 1291 y(-)h(:)h()913 1689 y(osh>)f(DIRS)g(=)h($\(dirof)e($\(FILES\)\))913 1789 y(-)i(:)h()863 2266 y Fs(In)31 b(this)f(example,)g (there)g(are)f(three)h Fo(BuildInfo.om)25 b Fs(\014les,)31 b(in)f(the)h Fo(doc/html)p Fs(,)c Fo(src)p Fs(,)739 2365 y(and)k Fo(tests/simple)c Fs(directories.)48 b(The)32 b Fo(dirof)d Fs(function)j(returns)f(the)h(directories)f(for)739 2465 y(eac)n(h)c(of)g(the)h(\014les.)863 2564 y(Returning)g(to)f(our)g (original)f(example,)h(w)n(e)h(mo)r(dify)g(it)g(as)f(follo)n(ws.)913 2742 y Fo(.SUBDIRS:)40 b($\(dirof)h($\(find)g(.)i(-name)f (BuildInfo.om\)\))1088 2842 y(include)e(BuildInfo)127 b(#)43 b(Defines)e(the)i(IMAGES)e(variable)1088 3041 y(index.html:)e($\(IMAGES\))1262 3141 y(genhtml)i($+)h(>)i($@)739 3275 y @beginspecial @setspecial @endspecial 97 x Fk(3.5.4)112 b(T)-9 b(emp)s(orary)38 b(directories)739 3526 y Fs(Sometimes,)e(y)n (our)d(pro)5 b(ject)34 b(ma)n(y)g(include)h(temp)r(orary)e (directories{directories)e(where)739 3625 y(y)n(ou)17 b(place)h(in)n(termediate)g(results.)34 b(these)18 b(directories)f(are) g(deleted)i(whenev)n(er)f(the)g(pro)5 b(ject)739 3725 y(is)22 b(clean)n(up)f(up.)35 b(This)22 b(means,)h(in)f(particular,)g (that)g(y)n(ou)f(can't)h(place)g(an)f Fo(OMakefile)d Fs(in)23 b(a)739 3824 y(temp)r(orary)h(directory)-7 b(,)25 b(b)r(ecause)g(it)h(will)f(b)r(e)h(remo)n(v)n(ed)e(when)i(the)f (directory)f(is)i(remo)n(v)n(ed.)863 3924 y(Instead,)e(if)f(y)n(ou)f (need)h(to)f(de\014ne)h(a)f(con\014guration)f(for)i(an)n(y)e(of)i (these)g(directories,)f(y)n(ou)739 4024 y(will)28 b(need)f(to)h (de\014ne)g(it)g(using)f(a)g Fo(.SUBDIRS)e Fs(b)r(o)r(dy)-7 b(.)913 4201 y Fo(section)1088 4301 y(CREATE_SUBDIRS)37 b(=)44 b(true)1088 4500 y(.SUBDIRS:)39 b(tmp)1262 4600 y(#)k(Compute)e(an)i(MD5)f(digest)1262 4700 y(\045.digest:)e (\045.comments)1393 4799 y(echo)i($\(digest)e($<\))i(>)h($@)1262 4998 y(#)g(Extract)e(comments)f(from)i(the)g(source)f(files)p eop end %%Page: 45 45 TeXDict begin 45 44 bop 291 282 a @beginspecial @setspecial @endspecial Fp(3.5.)63 b(COLLAPSING)28 b(THE)f(HIERAR)n(CHY,)h (.SUBDIRS)h(BODIES)498 b Fs(45)814 515 y Fo(\045.comments:)39 b(../src/\045.src)944 615 y(grep)j('^#')g($<)h(>)g($@)814 814 y(.DEFAULT:)c(foo.digest)465 1013 y(.PHONY:)i(clean)465 1213 y(clean:)639 1312 y(rm)i(-rf)f(tmp)415 1495 y Fs(In)c(this)g (example,)i(w)n(e)d(de\014ne)h(the)g Fo(CREATE_SUBDIRS)33 b Fs(v)-5 b(ariable)36 b(as)h(true,)k(so)c(that)291 1595 y(the)d Fo(tmp)f Fs(directory)f(will)i(b)r(e)g(created)f(if)i(it)f(do)r (es)g(not)f(exist.)56 b(The)34 b Fo(.SUBDIRS)d Fs(b)r(o)r(dy)j(in)291 1694 y(this)e(example)g(is)h(a)f(bit)h(con)n(triv)n(ed,)f(but)h(it)g (illustrates)f(the)h(kind)f(of)h(sp)r(eci\014cation)f(y)n(ou)291 1794 y(migh)n(t)c(exp)r(ect.)38 b(The)28 b Fo(clean)e Fs(phon)n(y-target)g(indicates)i(that)g(the)h Fo(tmp)d Fs(directory)h(should)291 1893 y(b)r(e)h(remo)n(v)n(ed)e(when)h(the)h (pro)5 b(ject)27 b(is)h(cleaned)f(up.)p eop end %%Page: 46 46 TeXDict begin 46 45 bop 739 282 a @beginspecial @setspecial @endspecial Fs(46)865 b Fp(CHAPTER)27 b(3.)64 b(ADDITIONAL)29 b(BUILD)f(EXAMPLES)p eop end %%Page: 47 47 TeXDict begin 47 46 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 708 x Fm(Chapter)64 b(4)291 1557 y Fr(OMak)-6 b(e)76 b(concepts)i(and)f(syn)-6 b(tax)291 1990 y Fs(Pro)5 b(jects)25 b(are)h(sp)r(eci\014ed)h(to)g Fo(omake)d Fs(with)k Fo(OMakefile)p Fs(s.)33 b(The)26 b Fo(OMakefile)e Fs(has)i(a)g(format)291 2090 y(similar)21 b(to)i(a)f Fo(Makefile)p Fs(.)32 b(An)23 b Fo(OMakefile)c Fs(has)j(three)h(main)f(kinds)h(of)f(syn)n(tactic)g (ob)5 b(jects:)291 2189 y(v)-5 b(ariable)26 b(de\014nitions,)i (function)g(de\014nitions,)g(and)f(rule)h(de\014nitions.)291 2338 y @beginspecial @setspecial @endspecial 135 x Fl(4.1)135 b(V)-11 b(ariables)291 2658 y Fs(V)k(ariables)30 b(are)h(de\014ned)g (with)i(the)e(follo)n(wing)g(syn)n(tax.)48 b(The)31 b(name)h(is)f(an)n (y)g(sequence)g(of)291 2758 y(alphan)n(umeric)26 b(c)n(haracters,)f (underscore)h Fo(_)p Fs(,)i(and)f(h)n(yphen)h Fo(-)p Fs(.)421 2949 y Fo()41 b(=)j()415 3139 y Fs(V)-7 b(alues)20 b(are)g(de\014ned)g(as)g(a)g(sequence)g(of)g (literal)g(c)n(haracters)e(and)i(v)-5 b(ariable)19 b(expansions.)291 3238 y(A)k(v)-5 b(ariable)23 b(expansion)f(has)h(the)h(form)f Fo($\(\))p Fs(,)e(whic)n(h)i(represen)n(ts)f(the)i(v)-5 b(alue)23 b(of)h(the)291 3338 y Fo()h Fs(v)-5 b(ariable)26 b(in)i(the)g(curren)n(t)f(en)n(vironmen)n(t.)36 b(Some)27 b(examples)g(are)g(sho)n(wn)g(b)r(elo)n(w.)421 3529 y Fo(CC)43 b(=)g(gcc)421 3629 y(CFLAGS)e(=)j(-Wall)d(-g)421 3729 y(COMMAND)g(=)i($\(CC\))f($\(CFLAGS\))e(-O2)415 3918 y Fs(In)19 b(this)f(example,)i(the)f(v)-5 b(alue)18 b(of)h(the)f Fo(COMMAND)e Fs(v)-5 b(ariable)17 b(is)h(the)h(string)f Fo(gcc)42 b(-Wall)g(-g)g(-O2)p Fs(.)415 4020 y(Unlik)n(e)24 b Fo(make)p Fs(\(1\),)e(v)-5 b(ariable)23 b(expansion)f(is)i Fi(e)l(ager)33 b Fs(and)23 b Fi(pur)l(e)30 b Fs(\(see)23 b(also)f(the)i(section)f(on)291 4119 y(Scoping\).)41 b(That)29 b(is,)g(v)-5 b(ariable)29 b(v)-5 b(alues)28 b(are)h(expanded)f(immediately)i(and)f(new)g(v)-5 b(ariable)291 4219 y(de\014nitions)25 b(do)g(not)g(a\013ect)g(old)g(ones.)36 b(F)-7 b(or)24 b(example,)h(supp)r(ose)g(w)n(e)g(extend)g(the)h (previous)291 4319 y(example)h(with)h(follo)n(wing)e(v)-5 b(ariable)27 b(de\014nitions.)421 4510 y Fo(X)44 b(=)f($\(COMMAND\))421 4610 y(COMMAND)e(=)i($\(COMMAND\))d(-O3)421 4709 y(Y)k(=)f ($\(COMMAND\))415 4899 y Fs(In)27 b(this)g(example,)f(the)h(v)-5 b(alue)27 b(of)f(the)h Fo(X)f Fs(v)-5 b(ariable)26 b(is)h(the)g(string) e Fo(gcc)43 b(-Wall)e(-g)i(-O2)291 4998 y Fs(as)27 b(b)r(efore,)g(and)g (the)h(v)-5 b(alue)28 b(of)f(the)h Fo(Y)g Fs(v)-5 b(ariable)26 b(is)i Fo(gcc)42 b(-Wall)f(-g)i(-O2)g(-O3)p Fs(.)1681 5208 y(47)p eop end %%Page: 48 48 TeXDict begin 48 47 bop 739 282 a @beginspecial @setspecial @endspecial Fs(48)796 b Fp(CHAPTER)27 b(4.)64 b(OMAKE)27 b(CONCEPTS)f(AND)j(SYNT)-7 b(AX)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(4.2)135 b(Adding)44 b(to)i(a)f(v)-7 b(ariable)46 b(de\014nition)739 698 y Fs(V)-7 b(ariables)23 b(de\014nitions)i(ma)n(y)f(also)g(use)g(the)h(+=)f(op)r(erator,)g(whic) n(h)g(adds)h(the)g(new)f(text)h(to)739 798 y(an)i(existing)g (de\014nition.)38 b(The)27 b(follo)n(wing)g(t)n(w)n(o)g(de\014nitions)g (are)g(equiv)-5 b(alen)n(t.)870 984 y Fo(#)43 b(Add)f(options)f(to)i (the)f(CFLAGS)f(variable)870 1083 y(CFLAGS)g(=)i($\(CFLAGS\))d(-Wall)h (-g)870 1283 y(#)i(The)f(following)e(definition)f(is)k(equivalent)870 1382 y(CFLAGS)e(+=)i(-Wall)e(-g)739 1529 y @beginspecial @setspecial @endspecial 131 x Fl(4.3)135 b(Arra)l(ys)739 1843 y Fs(Arra)n(ys)26 b(can)i(b)r(e)h(de\014ned)g(b)n(y)f(app)r (ending)g(the)h Fo([])f Fs(sequence)g(to)g(the)h(v)-5 b(ariable)27 b(name)h(and)739 1943 y(de\014ning)18 b(initial)h(v)-5 b(alues)18 b(for)g(the)h(elemen)n(ts)f(as)g(separate)f(lines.)34 b(Whitespace)19 b(is)f(signi\014can)n(t)739 2043 y(on)27 b(eac)n(h)g(line.)37 b(The)28 b(follo)n(wing)e(co)r(de)i(sequence)f (prin)n(ts)g Fo(c)43 b(d)g(e)p Fs(.)913 2229 y Fo(X[])g(=)1088 2328 y(a)g(b)1088 2428 y(c)g(d)g(e)1088 2527 y(f)913 2727 y(println\($\(nth)38 b(2,)43 b($\(X\)\)\))739 2873 y @beginspecial @setspecial @endspecial 132 x Fl(4.4)135 b(Sp)t(ecial)45 b(c)l(haracters)h(and)f(quoting)739 3188 y Fs(The)27 b(follo)n(wing)e(c)n(haracters)f(are)i(sp)r(ecial)g(to)h Fo(omake)p Fs(:)34 b Fo($\(\):,=#\\)p Fs(.)f(T)-7 b(o)27 b(treat)f(an)n(y)g(of)g(these)739 3287 y(c)n(haracters)e(as)h(normal)g (text,)h(they)h(should)e(b)r(e)i(escap)r(ed)e(with)i(the)f(bac)n (kslash)e(c)n(haracter)739 3387 y Fo(\\)p Fs(.)913 3573 y Fo(DOLLAR)41 b(=)j(\\$)863 3758 y Fs(Newlines)26 b(ma)n(y)f(also)g(b) r(e)h(escap)r(ed)g(with)g(a)g(bac)n(kslash)e(to)h(concatenate)g(sev)n (eral)f(lines.)913 3944 y Fo(FILES)42 b(=)h(a.c\\)1262 4044 y(b.c\\)1262 4143 y(c.c)863 4328 y Fs(Note)38 b(that)g(the)f(bac)n (kslash)f(is)i Fi(not)45 b Fs(an)37 b(escap)r(e)g(for)g(an)n(y)f(other) h(c)n(haracter,)h(so)f(the)739 4428 y(follo)n(wing)25 b(w)n(orks)g(as)h(exp)r(ected)g(\(that)h(is,)g(it)g(preserv)n(es)d(the) j(bac)n(kslashes)d(in)j(the)g(string\).)913 4614 y Fo(DOSTARGET)40 b(=)j(C:\\WINDOWS\\contro)o(l.)o(ini)863 4799 y Fs(An)23 b(alternativ)n(e)e(mec)n(hanism)h(for)f(quoting)h(sp)r(ecial)g(text)g (is)h(the)f(use)g Fo($"...")e Fs(escap)r(es.)739 4899 y(The)34 b(n)n(um)n(b)r(er)h(of)f(double-quotations)f(is)h(arbitrary)-7 b(.)56 b(The)34 b(outermost)g(quotations)f(are)739 4998 y(not)27 b(included)i(in)e(the)h(text.)p eop end %%Page: 49 49 TeXDict begin 49 48 bop 291 282 a @beginspecial @setspecial @endspecial Fp(4.5.)63 b(FUNCTION)28 b(DEFINITIONS)1546 b Fs(49)465 515 y Fo(A)43 b(=)g($""String)d(containing)g("quoted)g (text")i("")465 615 y(B)h(=)g($"""Multi-line)639 715 y(text.)639 814 y(The)g(#)g(character)d(is)i(not)h(special""")291 954 y @beginspecial @setspecial @endspecial 131 x Fl(4.5)135 b(F)-11 b(unction)44 b(de\014nitions)291 1267 y Fs(F)-7 b(unctions)27 b(are)g(de\014ned)h(using)f(the)h(follo)n(wing)f(syn)n (tax.)421 1430 y Fo(\(\))37 b(=)552 1530 y()415 1693 y Fs(The)22 b(parameters)f(are)g(a)h (comma-separated)d(list)k(of)f(iden)n(ti\014ers,)h(and)f(the)g(b)r(o)r (dy)h(m)n(ust)291 1792 y(b)r(e)e(placed)f(on)g(a)h(separate)e(set)i(of) f(lines)h(that)g(are)f(inden)n(ted)h(from)f(the)h(function)h (de\014nition)291 1892 y(itself.)47 b(F)-7 b(or)30 b(example,)h(the)g (follo)n(wing)f(text)h(de\014nes)g(a)g(function)g(that)g(concatenates)f (its)291 1992 y(argumen)n(ts,)c(separating)g(them)i(with)g(a)f(colon.) 465 2155 y Fo(ColonFun\(a,)39 b(b\))k(=)639 2254 y (return\($\(a\):$\(b\)\))415 2417 y Fs(The)30 b Fo(return)d Fs(expression)g(can)i(b)r(e)h(used)g(to)f(return)g(a)g(v)-5 b(alue)29 b(from)g(the)h(function.)43 b(A)291 2517 y Fo(return)19 b Fs(statemen)n(t)k(is)f(not)g(required;)h(if)g(it)f(is)g (omitted,)i(the)f(returned)e(v)-5 b(alue)22 b(is)g(the)h(v)-5 b(alue)291 2617 y(of)26 b(the)h(last)g(expression)e(in)i(the)g(b)r(o)r (dy)g(to)f(b)r(e)i(ev)-5 b(aluated.)36 b(NOTE:)26 b(as)g(of)h(v)n (ersion)e Fo(0.9.6)p Fs(,)291 2716 y Fo(return)j Fs(is)j(a)g(con)n (trol)f(op)r(eration,)h(causing)g(the)g(function)h(to)f(immediately)g (return.)48 b(In)291 2816 y(the)24 b(follo)n(wing)e(example,)i(when)g (the)g(argumen)n(t)e Fo(a)i Fs(is)f(true,)h(the)g(function)h Fo(f)e Fs(immediately)291 2915 y(returns)j(the)i(v)-5 b(alue)28 b(1)f(without)h(ev)-5 b(aluating)27 b(the)h(prin)n(t)g (statemen)n(t.)465 3078 y Fo(f\(a\))42 b(=)596 3178 y(if)g($\(a\))726 3278 y(return)g(1)596 3377 y(println\(The)d(argument)h(is)j(false\))596 3477 y(return)e(0)415 3640 y Fs(In)27 b(man)n(y)f(cases,)g(y)n(ou)g(ma) n(y)f(wish)i(to)g(return)f(a)g(v)-5 b(alue)26 b(from)h(a)f(section)g (or)g(co)r(de)g(blo)r(c)n(k)291 3740 y(without)36 b(returning)g(from)g (the)h(function.)64 b(In)37 b(this)f(case,)i(y)n(ou)e(w)n(ould)g(use)g (the)h Fo(value)291 3839 y Fs(op)r(erator.)d(In)26 b(fact,)h(the)f Fo(value)e Fs(op)r(erator)g(is)i(not)g(limited)g(to)g(functions,)h(it)f (can)g(b)r(e)g(used)291 3939 y(an)n(y)j(place)h(where)g(a)g(v)-5 b(alue)30 b(is)h(required.)44 b(In)30 b(the)h(follo)n(wing)f (de\014nition,)h(the)g(v)-5 b(ariable)29 b Fo(X)291 4038 y Fs(is)34 b(de\014ned)h(as)f(1)h(or)f(2,)i(dep)r(ending)f(on)f(the)h (v)-5 b(alue)35 b(of)g Fh(a)p Fs(,)h(then)g(result)e(is)h(prin)n(ted,)h (and)291 4138 y(returned)27 b(from)g(the)h(function.)465 4301 y Fo(f_value\(a\))39 b(=)596 4401 y(X)k(=)726 4500 y(if)g($\(a\))857 4600 y(value)f(1)726 4700 y(else)857 4799 y(value)g(2)596 4899 y(println\(The)d(value)i(of)i(X)g(is)g ($\(X\)\))596 4998 y(value)e($\(X\))p eop end %%Page: 50 50 TeXDict begin 50 49 bop 739 282 a @beginspecial @setspecial @endspecial Fs(50)796 b Fp(CHAPTER)27 b(4.)64 b(OMAKE)27 b(CONCEPTS)f(AND)j(SYNT)-7 b(AX)863 515 y Fs(F)g(unctions)21 b(are)e(called)g(using)h(the)g(GNU-mak)n(e)g(syn)n(tax,)h Fo($\()40 b()26 b Fs(is)j(a)f(comma-separated)e(list)j(of)f(v)-5 b(alues.)40 b(F)-7 b(or)28 b(example,)g(in)h(the)g(follo)n(wing)e(pro-) 739 715 y(gram,)f(the)i(v)-5 b(ariable)27 b Fo(X)g Fs(con)n(tains)g (the)h(v)-5 b(alue)27 b Fo(foo:bar)p Fs(.)870 894 y Fo(X)43 b(=)g($\(ColonFun)c(foo,)j(bar\))863 1073 y Fs(If)24 b(the)f(v)-5 b(alue)22 b(of)h(a)f(function)h(is)g(not)f(needed,)i(the)f (function)h(ma)n(y)e(also)f(b)r(e)i(called)g(using)739 1173 y(standard)j(function)i(call)g(notation.)36 b(F)-7 b(or)27 b(example,)g(the)h(follo)n(wing)e(program)g(prin)n(ts)h(the)739 1272 y(string)g(\\She)g(sa)n(ys:)36 b(Hello)27 b(w)n(orld".)913 1452 y Fo(Printer\(name\))38 b(=)1088 1551 y(println\($\(name\))f (says:)k(Hello)h(world\))913 1750 y(Printer\(She\))739 1882 y @beginspecial @setspecial @endspecial 142 x Fl(4.6)135 b(Commen)l(ts)739 2206 y Fs(Commen)n(ts)27 b(b)r(egin)h(with)g(the)g Fo(#)f Fs(c)n(haracter)f(and)h(con)n(tin)n(ue)g(to)h(the)g(end)g(of)f (the)h(line.)739 2347 y @beginspecial @setspecial @endspecial 133 x Fl(4.7)135 b(File)46 b(inclusion)739 2662 y Fs(Files)30 b(ma)n(y)e(b)r(e)i(included)h(with)f(the)g Fo(include)c Fs(or)j Fo(open)f Fs(form.)43 b(The)29 b(included)h(\014le)g(m)n(ust) 739 2762 y(use)d(the)h(same)f(syn)n(tax)g(as)g(an)g Fo(OMakefile)p Fs(.)913 2941 y Fo(include)41 b($\(Config_file\))863 3120 y Fs(The)24 b Fo(open)e Fs(op)r(eration)h(is)g(similar)g(to)g(an)h Fo(include)p Fs(,)d(but)k(the)f(\014le)f(is)h(included)g(at)f(most)739 3220 y(once.)913 3383 y Fo(open)42 b(Config)913 3582 y(#)h(Repeated)e(opens)g(are)i(ignored,)d(so)j(this)913 3682 y(#)g(line)f(has)h(no)f(effect.)913 3782 y(open)g(Config)863 3945 y Fs(If)36 b(the)f(\014le)f(sp)r(eci\014ed)h(is)g(not)f(an)h (absolute)f(\014lenmame,)i(b)r(oth)f Fo(include)d Fs(and)j Fo(open)739 4045 y Fs(op)r(erations)30 b(searc)n(h)g(for)i(the)g (\014le)g(based)f(on)g(the)h @beginspecial @setspecial @endspecial Fo(OMAKEPATH)c Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial(.)48 b(In)32 b(case)f(of)h(the)739 4144 y Fo(open)21 b Fs(directiv)n(e,)i(the)g(searc)n(h)f(is)g(p)r (erformed)h(at)f Fi(p)l(arse)30 b Fs(time,)25 b(and)d(the)h(argumen)n (t)f(to)h Fo(open)739 4244 y Fs(ma)n(y)k(not)g(con)n(tain)g(an)n(y)g (expressions.)739 4384 y @beginspecial @setspecial @endspecial 134 x Fl(4.8)135 b(Scoping,)45 b(sections)739 4700 y Fs(Scop)r(es)20 b(in)h Fo(omake)e Fs(are)g(de\014ned)i(b)n(y)g(inden)n (tation)f(lev)n(el.)34 b(When)21 b(inden)n(tation)g(is)f(increased,)739 4799 y(suc)n(h)27 b(as)g(in)h(the)g(b)r(o)r(dy)g(of)f(a)h(function,)g (a)f(new)h(scop)r(e)f(is)g(in)n(tro)r(duced.)863 4899 y(The)f Fo(section)c Fs(form)j(can)g(also)f(b)r(e)i(used)f(to)g (de\014ne)g(a)g(new)g(scop)r(e.)36 b(F)-7 b(or)25 b(example,)g(the)739 4998 y(follo)n(wing)h(co)r(de)i(prin)n(ts)f(the)h(line)g Fo(X)43 b(=)g(2)p Fs(,)28 b(follo)n(w)n(ed)e(b)n(y)h(the)h(line)g Fo(X)43 b(=)h(1)p Fs(.)p eop end %%Page: 51 51 TeXDict begin 51 50 bop 291 282 a @beginspecial @setspecial @endspecial Fp(4.8.)63 b(SCOPING,)28 b(SECTIONS)1726 b Fs(51)465 515 y Fo(X)43 b(=)g(1)465 615 y(section)639 715 y(X)g(=)h(2)639 814 y(println\(X)c(=)j($\(X\)\))465 1013 y(println\(X)d(=)j($\(X\)\))415 1243 y Fs(This)29 b(result)f(ma)n(y)f(seem)i(surprising{the)e(v)-5 b(ariable)27 b(de\014nition)i(within)g(the)g Fo(section)291 1343 y Fs(is)e(not)h(visible)f(outside)h(the)g(scop)r(e)f(of)g(the)h Fo(section)p Fs(.)415 1454 y(The)33 b Fo(export)e Fs(form,)k(whic)n(h)e (will)g(b)r(e)h(describ)r(ed)f(in)h(detail)f(in)g(Section)h @beginspecial @setspecial @endspecial(6.3)p @beginspecial @setspecial @endspecial(,)g(can)f(b)r(e)291 1554 y(used)e(to)h(circum)n (v)n(en)n(t)e(this)i(restriction)f(b)n(y)g(exp)r(orting)g(v)-5 b(ariable)31 b(v)-5 b(alues)31 b(from)h(an)f(inner)291 1653 y(scop)r(e.)51 b(F)-7 b(or)32 b(example,)h(if)g(w)n(e)f(mo)r(dify) h(the)g(previous)f(example)g(b)n(y)g(adding)g(an)g Fo(export)291 1753 y Fs(expression,)25 b(the)h(new)h(v)-5 b(alue)26 b(for)f(the)i Fo(X)f Fs(v)-5 b(ariable)25 b(is)h(retained,)g(and)g(the) h(co)r(de)f(prin)n(ts)g(the)291 1853 y(line)h Fo(X)44 b(=)f(2)27 b Fs(t)n(wice.)465 2094 y Fo(X)43 b(=)g(1)465 2194 y(section)639 2293 y(X)g(=)h(2)639 2393 y(println\(X)c(=)j ($\(X\)\))639 2493 y(export)465 2692 y(println\(X)d(=)j($\(X\)\))415 2922 y Fs(There)21 b(are)f(also)g(cases)h(where)f(separate)g(scoping)g (is)i(quite)f(imp)r(ortan)n(t.)35 b(F)-7 b(or)20 b(example,)291 3021 y(eac)n(h)37 b Fo(OMakefile)d Fs(is)k(ev)-5 b(aluated)38 b(in)g(its)h(o)n(wn)e(scop)r(e.)68 b(Since)38 b(eac)n(h)f(part)h(of)g (a)g(pro)5 b(ject)291 3121 y(ma)n(y)27 b(ha)n(v)n(e)g(its)h(o)n(wn)f (con\014guration,)g(it)h(is)g(imp)r(ortan)n(t)g(that)g(v)-5 b(ariable)27 b(de\014nitions)h(in)g(one)291 3220 y Fo(OMakefile)c Fs(do)j(not)g(a\013ect)h(the)g(de\014nitions)g(in)g(another.)415 3332 y(T)-7 b(o)24 b(giv)n(e)f(another)h(example,)g(in)h(some)f(cases)f (it)h(is)h(con)n(v)n(enien)n(t)e(to)h(sp)r(ecify)g(a)g(separate)291 3431 y(set)32 b(of)h(v)-5 b(ariables)31 b(for)h(di\013eren)n(t)h(build) h(targets.)51 b(A)33 b(frequen)n(t)f(idiom)h(in)g(this)g(case)e(is)i (to)291 3531 y(use)27 b(the)h Fo(section)d Fs(command)i(to)g(de\014ne)h (a)f(separate)g(scop)r(e.)421 3773 y Fo(section)552 3872 y(CFLAGS)41 b(+=)i(-g)552 3972 y(\045.c:)f(\045.y)726 4071 y($\(YACC\))f($<)552 4171 y(.SUBDIRS:)f(foo)421 4370 y(.SUBDIRS:)g(bar)j(baz)415 4600 y Fs(In)31 b(this)g(example,)h (the)f Fo(-g)f Fs(option)h(is)g(added)g(to)f(the)i Fo(CFLAGS)c Fs(v)-5 b(ariable)30 b(b)n(y)h(the)g Fo(foo)291 4700 y Fs(sub)r(directory)-7 b(,)36 b(but)g(not)g(b)n(y)f(the)h Fo(bar)e Fs(and)h Fo(baz)f Fs(directories.)59 b(The)36 b(implicit)g(rules)f(are)291 4799 y(scop)r(ed)26 b(as)g(w)n(ell)g(and)h (in)g(this)g(example,)f(the)h(newly)g(added)f(y)n(acc)g(rule)g(will)h (b)r(e)g(inherited)291 4899 y(b)n(y)35 b(the)h Fo(foo)f Fs(sub)r(directory)-7 b(,)37 b(but)f(not)g(b)n(y)g(the)g Fo(bar)e Fs(and)i Fo(baz)f Fs(ones;)k(furthermore)c(this)291 4998 y(implicit)28 b(rule)f(will)h(not)g(b)r(e)g(in)g(scop)r(e)f(in)h (the)g(curren)n(t)e(directory)-7 b(.)p eop end %%Page: 52 52 TeXDict begin 52 51 bop 739 282 a @beginspecial @setspecial @endspecial Fs(52)796 b Fp(CHAPTER)27 b(4.)64 b(OMAKE)27 b(CONCEPTS)f(AND)j(SYNT)-7 b(AX)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(4.9)135 b(Conditionals)739 699 y Fs(T)-7 b(op)27 b(lev)n(el)g(conditionals)g(ha)n(v)n(e)f(the)i (follo)n(wing)f(form.)913 886 y Fo(if)43 b()1044 985 y()913 1085 y(elseif)e()1044 1185 y()913 1284 y(else)1044 1384 y()863 1570 y Fs(The)30 b Fo()c Fs(expression)i(is)h(ev)-5 b(aluated,)29 b(and)g(if)h(it)f(ev)-5 b(aluates)29 b(to)g(a)g Fi(true)34 b Fs(v)-5 b(alue)29 b(\(see)739 1670 y(Section)f @beginspecial @setspecial @endspecial(9.2)p @beginspecial @setspecial @endspecial 27 w(for)f(more)g(information)g(on)g(logical)g (v)-5 b(alues,)27 b(and)h(Bo)r(olean)e(functions\),)j(the)739 1769 y(co)r(de)i(for)g(the)h Fo()27 b Fs(is)k(ev)-5 b(aluated;)33 b(otherwise)e(the)h(remaining)f(clauses)f(are)739 1869 y(ev)-5 b(aluated.)47 b(There)31 b(ma)n(y)f(b)r(e)i(m)n(ultiple)g Fo(elseif)d Fs(clauses;)j(b)r(oth)f(the)h Fo(elseif)d Fs(and)i Fo(else)739 1968 y Fs(clauses)26 b(are)f(optional.)36 b(Note)27 b(that)g(the)g(clauses)f(are)g(inden)n(ted,)h(so)f(they)h(in) n(tro)r(duce)f(new)739 2068 y(scop)r(es.)863 2169 y(When)i(view)n(ed)e (as)h(a)f(predicate,)h(a)f(v)-5 b(alue)27 b(corresp)r(onds)e(to)i(the)g (Bo)r(olean)f Fi(false)p Fs(,)j(if)e(its)739 2268 y(string)i(represen)n (tation)e(is)j(the)g(empt)n(y)f(string,)h(or)e(one)h(of)h(the)g (strings)e Fo(false)p Fs(,)g Fo(no)p Fs(,)h Fo(nil)p Fs(,)739 2368 y Fo(undefined)p Fs(,)24 b(or)j Fo(0)p Fs(.)36 b(All)28 b(other)f(v)-5 b(alues)27 b(are)g Fi(true)p Fs(.)863 2468 y(The)e(follo)n(wing)e(example)h(illustrates)g(a)g(t)n (ypical)g(use)g(of)h(a)f(conditional.)35 b(The)25 b Fo(OSTYPE)739 2568 y Fs(v)-5 b(ariable)26 b(is)i(the)g(curren)n(t)f(mac)n(hine)g(arc) n(hitecture.)913 2755 y Fo(#)43 b(Common)f(suffixes)e(for)i(files)913 2855 y(if)h($\(equal)e($\(OSTYPE\),)e(Win32\))1044 2954 y(EXT_LIB)i(=)i(.lib)1044 3054 y(EXT_OBJ)e(=)i(.obj)1044 3153 y(EXT_ASM)e(=)i(.asm)1044 3253 y(EXE)f(=)i(.exe)1044 3353 y(export)913 3452 y(elseif)d($\(mem)h($\(OSTYPE\),)d(Unix)j (Cygwin\))1044 3552 y(EXT_LIB)f(=)i(.a)1044 3652 y(EXT_OBJ)e(=)i(.o) 1044 3751 y(EXT_ASM)e(=)i(.s)1044 3851 y(EXE)f(=)1044 3950 y(export)913 4050 y(else)1044 4150 y(#)h(Abort)f(on)g(other)g (architectures)1044 4249 y(eprintln\(OS)d(type)j($\(OSTYPE\))e(is)j (not)f(recognized\))1044 4349 y(exit\(1\))739 4485 y @beginspecial @setspecial @endspecial 143 x Fl(4.10)135 b(Matc)l(hing)739 4812 y Fs(P)n(attern)26 b(matc)n(hing)h(is)h(p)r (erformed)f(with)h(the)g Fo(switch)d Fs(and)j Fo(match)d Fs(forms.)913 4998 y Fo(switch)41 b()p eop end %%Page: 53 53 TeXDict begin 53 52 bop 291 282 a @beginspecial @setspecial @endspecial Fp(4.10.)63 b(MA)-7 b(TCHING)2076 b Fs(53)465 515 y Fo(case)42 b()639 615 y()465 715 y(case)g()639 814 y()465 914 y(...)465 1013 y(default)596 1113 y()415 1323 y Fs(The)28 b(n)n(um)n(b)r(er)h(of)f(cases)f(is)h(arbitrary)-7 b(.)37 b(The)29 b Fo(default)c Fs(clause)j(is)g(optional;)g(ho)n(w)n (ev)n(er,)291 1423 y(if)g(it)g(is)f(used)h(it)g(should)f(b)r(e)h(the)g (last)f(clause)g(in)h(the)g(pattern)g(matc)n(h.)415 1529 y(F)-7 b(or)27 b Fo(switch)p Fs(,)e(the)j(string)f(is)h(compared)e (with)i(the)g(patterns)f(literally)-7 b(.)465 1746 y Fo(switch)41 b($\(HOST\))465 1846 y(case)h(mymachine)639 1946 y(println\(Building)37 b(on)43 b(mymachine\))465 2045 y(default)639 2145 y(println\(Building)37 b(on)43 b(some)f(other)f(machine\))415 2355 y Fs(P)n(atterns)34 b(need)i(not)g(b)r(e)g(constan)n(t)e(strings.)60 b(The)36 b(follo)n(wing)e(function)j(tests)e(for)g(a)291 2455 y(literal)28 b(matc)n(h)g(against)g Fo(pattern1)p Fs(,)d(and)k(a)f (matc)n(h)h(against)e Fo(pattern2)f Fs(with)j Fo(##)f Fs(delim-)291 2554 y(iters.)421 2771 y Fo(Switch2\(s,)40 b(pattern1,)g(pattern2\))g(=)552 2871 y(switch)h($\(s\))552 2970 y(case)h($\(pattern1\))726 3070 y(println\(Pattern1\))552 3170 y(case)g($"##$\(pattern2\)#)o(#")726 3269 y(println\(Pattern2\)) 552 3369 y(default)726 3469 y(println\(Neither)c(pattern)j(matched\)) 415 3679 y Fs(F)-7 b(or)41 b Fo(match)f Fs(the)i(patterns)f(are)g Fo(egrep)p Fs(\(1\)-st)n(yle)d(regular)i(expressions.)78 b(The)41 b(n)n(u-)291 3778 y(meric)32 b(v)-5 b(ariables)32 b Fo($1,)42 b($2,)g(...)32 b Fs(can)g(b)r(e)i(used)e(to)h(retriev)n(e)f (v)-5 b(alues)32 b(that)h(are)f(matc)n(hed)291 3878 y(b)n(y)27 b Fo(\\\(...\\\))e Fs(expressions.)465 4095 y Fo(match)41 b($\(NODENAME\)@$\(SYS)o(NAM)o(E\))o(@$\()o(RE)o(LE)o(ASE)o(\))465 4195 y(case)h($"mymachine.*@\\\()o(.*)o(\\\)@)o(\\\()o(.*\\)o(\)")639 4294 y(println\(Compiling)37 b(on)43 b(mymachine;)c(sysname)i($1)h(and) h(release)e($2)h(are)h(ignored\))465 4493 y(case)f($".*@Linux@.*2\\.)o (4\\)o(.\\\()o(.*)o(\\\)")639 4593 y(println\(Compiling)37 b(on)43 b(a)g(Linux)e(2.4)i(system;)d(subrelease)g(is)j($1\))465 4792 y(default)639 4892 y(eprintln\(Machine)37 b(configuration)h(not)43 b(implemented\))639 4992 y(exit\(1\))p eop end %%Page: 54 54 TeXDict begin 54 53 bop 739 282 a @beginspecial @setspecial @endspecial Fs(54)796 b Fp(CHAPTER)27 b(4.)64 b(OMAKE)27 b(CONCEPTS)f(AND)j(SYNT)-7 b(AX)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(4.11)135 b(Ob)7 b(jects)739 698 y Fs(OMak)n(e)24 b(is)i(an)f(ob)5 b(ject-orien)n(ted)24 b(language.)34 b(Generally)25 b(sp)r(eaking,)g(an)g(ob)5 b(ject)26 b(is)f(a)g(v)-5 b(alue)739 798 y(that)37 b(con)n(tains)e (\014elds)i(and)f(metho)r(ds.)64 b(An)37 b(ob)5 b(ject)36 b(is)h(de\014ned)g(with)g(a)f Fo(.)g Fs(su\016x)h(for)f(a)739 897 y(v)-5 b(ariable.)58 b(F)-7 b(or)34 b(example,)i(the)f(follo)n (wing)f(ob)5 b(ject)35 b(migh)n(t)g(b)r(e)g(used)g(to)f(sp)r(ecify)i(a) e(p)r(oin)n(t)739 997 y(\(1)p Fh(;)14 b Fs(5\))27 b(on)g(the)h(t)n(w)n (o-dimensional)e(plane.)913 1181 y Fo(Coord.)41 b(=)1088 1281 y(x)i(=)g(1)1088 1381 y(y)g(=)g(5)1088 1480 y(print\(message\))37 b(=)1218 1580 y(println\($"$\(messa)o(ge)o(\):)g(the)43 b(point)e(is)i(\($\(x\),)e($\(y\)"\))913 1779 y(#)i(Define)f(X)h(to)f (be)h(5)913 1879 y(X)g(=)h($\(Coord.x\))913 2078 y(#)f(This)f(prints)f (the)i(string,)d("Hi:)i(the)h(point)e(is)i(\(1,)f(5\)")913 2178 y(Coord.print\(Hi\))863 2362 y Fs(The)23 b(\014elds)f Fo(x)g Fs(and)g Fo(y)f Fs(represen)n(t)g(the)i(co)r(ordinates)e(of)h (the)g(p)r(oin)n(t.)35 b(The)23 b(metho)r(d)f Fo(print)739 2462 y Fs(prin)n(ts)27 b(out)h(the)g(p)r(osition)f(of)h(the)g(p)r(oin)n (t.)739 2605 y @beginspecial @setspecial @endspecial 133 x Fl(4.12)135 b(Classes)739 2921 y Fs(W)-7 b(e)33 b(can)f(also)f(de\014ne)i Fi(classes)p Fs(.)53 b(F)-7 b(or)32 b(example,)h(supp)r(ose)f(w)n(e)g(wish)h(to)f(de\014ne)h(a)f (generic)739 3021 y Fo(Point)d Fs(class)h(with)i(some)f(metho)r(ds)g (to)g(create,)h(mo)n(v)n(e,)f(and)g(prin)n(t)g(a)g(p)r(oin)n(t.)48 b(A)31 b(class)f(is)739 3120 y(really)c(just)j(an)e(ob)5 b(ject)27 b(with)h(a)g(name,)f(de\014ned)h(with)g(the)g Fo(class)e Fs(directiv)n(e.)913 3305 y Fo(Point.)41 b(=)1088 3404 y(class)g(Point)1088 3604 y(#)i(Default)d(values)i(for)g(the)g (fields)1088 3703 y(x)h(=)g(0)1088 3803 y(y)g(=)g(0)1088 4002 y(#)g(Create)e(a)i(new)f(point)g(from)g(the)g(coordinates)1088 4102 y(new\(x,)f(y\))h(=)1218 4201 y(this.x)f(=)j($\(x\))1218 4301 y(this.y)d(=)j($\(y\))1218 4401 y(return)d($\(this\))1088 4600 y(#)i(Move)f(the)g(point)g(to)g(the)h(right)1088 4700 y(move-right\(\))38 b(=)1218 4799 y(x)44 b(=)f($\(add)e($\(x\),)h (1\))1218 4899 y(return)f($\(this\))p eop end %%Page: 55 55 TeXDict begin 55 54 bop 291 282 a @beginspecial @setspecial @endspecial Fp(4.13.)63 b(INHERIT)-7 b(ANCE)1950 b Fs(55)639 515 y Fo(#)43 b(Print)f(the)g(point)639 615 y(print\(\))f(=)770 715 y(println\($"The)d(point)k(is)h(\($\(x\),)e($\(y\)"\))465 914 y(p1)i(=)g($\(Point.new)c(1,)k(5\))465 1013 y(p2)g(=)g ($\(p1.move-right\))465 1213 y(#)g(Prints)e("The)h(point)g(is)g(\(1,)h (5\)")465 1312 y(p1.print\(\))465 1512 y(#)g(Prints)e("The)h(point)g (is)g(\(2,)h(5\)")465 1611 y(p2.print\(\))415 1814 y Fs(Note)28 b(that)g(the)h(v)-5 b(ariable)27 b Fo($\(this\))e Fs(is)j(used)g(to)g(refer)f(to)h(the)g(curren)n(t)f(ob)5 b(ject.)38 b(Also,)291 1913 y(classes)c(and)i(ob)5 b(jects)36 b(are)f Fi(functional)9 b Fs(|the)36 b Fo(new)f Fs(and)h Fo(move-right)c Fs(metho)r(ds)k(return)291 2013 y(new)26 b(ob)5 b(jects.)35 b(In)27 b(this)f(example,)g(the)g(ob)5 b(ject)26 b Fo(p2)f Fs(is)h(a)f(di\013eren)n(t)h(ob)5 b(ject)26 b(from)f Fo(p1)p Fs(,)h(whic)n(h)291 2113 y(retains)g(the)i (original)e(\(1)p Fh(;)14 b Fs(5\))28 b(co)r(ordinates.)291 2280 y @beginspecial @setspecial @endspecial 134 x Fl(4.13)135 b(Inheritance)291 2605 y Fs(Classes)33 b(and)h(ob)5 b(jects)34 b(supp)r(ort)g(inheritance)g(\(including)h(m)n(ultiple)g(inheritance\)) f(with)291 2705 y(the)26 b Fo(extends)d Fs(directiv)n(e.)35 b(The)26 b(follo)n(wing)f(de\014nition)h(of)g Fo(Point3D)d Fs(de\014nes)j(a)f(p)r(oin)n(t)h(with)291 2804 y Fo(x)p Fs(,)j Fo(y)p Fs(,)h(and)f Fo(z)g Fs(\014elds.)42 b(The)30 b(new)f(ob)5 b(ject)29 b(inherits)h(all)f(of)g(the)h(metho)r(ds)g(and)f (\014elds)g(of)h(the)291 2904 y(paren)n(t)c(classes/ob)5 b(jects.)465 3111 y Fo(Z.)43 b(=)596 3211 y(z)g(=)g(0)465 3410 y(Point3D.)d(=)596 3510 y(extends)g($\(Point\))596 3610 y(extends)g($\(Z\))596 3709 y(class)h(Point3D)596 3908 y(print\(\))f(=)726 4008 y(println\($"The)f(3D)j(point)g(is)h (\($\(x\),)e($\(y\),)g($\(z\)\)"\))465 4207 y(#)i(The)f("new")g(method) f(was)h(not)h(redefined,)c(so)k(this)465 4307 y(#)g(defines)e(a)i(new)f (point)g(\(1,)g(5,)h(0\).)465 4407 y(p)g(=)g($\(Point3D.new)38 b(1,)43 b(5\))291 4572 y @beginspecial @setspecial @endspecial 136 x Fl(4.14)135 b(static.)291 4899 y Fs(The)37 b Fo(static.)d Fs(ob)5 b(ject)36 b(is)h(used)g(to)g(sp)r(ecify)g(v)-5 b(alues)37 b(that)g(are)f(p)r(ersisten)n(t)g(across)f(runs)291 4998 y(of)j(OMak)n(e.)67 b(They)38 b(are)f(frequen)n(tly)h(used)g(for)g (con\014guring)f(a)g(pro)5 b(ject.)68 b(Con\014guring)p eop end %%Page: 56 56 TeXDict begin 56 55 bop 739 282 a @beginspecial @setspecial @endspecial Fs(56)796 b Fp(CHAPTER)27 b(4.)64 b(OMAKE)27 b(CONCEPTS)f(AND)j(SYNT)-7 b(AX)739 515 y Fs(a)33 b(pro)5 b(ject)34 b(can)f(b)r(e)i(exp)r(ensiv)n(e,)g(so)e(the)h Fo(static.)d Fs(ob)5 b(ject)34 b(ensure)g(that)g(the)g(con\014gura-)739 615 y(tion)k(is)g(p)r(erformed)g(just)h(once.)68 b(In)39 b(the)f(follo)n(wing)f(\(somewhat)h(trivial\))g(example,)j(a)739 715 y Fo(static)32 b Fs(section)i(is)h(used)f(to)h(determine)f(if)h (the)g(L)2364 698 y Fn(A)2401 715 y Fs(T)2447 732 y(E)2493 715 y(X)g(command)f(is)h(a)n(v)-5 b(ailable.)56 b(The)739 814 y Fo($\(where)41 b(latex\))25 b Fs(function)k(returns)e(the)h(full) h(pathname)f(for)f Fo(latex)p Fs(,)f(or)h Fo(false)f Fs(if)j(the)739 914 y(command)e(is)h(not)f(found.)870 1076 y Fo(static.)40 b(=)1000 1176 y(LATEX_ENABLED)f(=)k(false)1000 1276 y(print\(---)d(Determining)f(if)k(LaTeX)f(is)g(installed)e(\))1000 1375 y(if)j($\(where)e(latex\))1175 1475 y(LATEX_ENABLED)d(=)43 b(true)1175 1575 y(export)1000 1774 y(if)g($\(LATEX_ENABLED\))1131 1873 y(println\($'\(enable)o(d\))o('\))1000 1973 y(else)1131 2073 y(println\($'\(disabl)o(ed)o(\)')o(\))863 2235 y Fs(The)28 b(OMak)n(e)e(standard)h(library)f(pro)n(vides)g(a)h(n)n(um)n (b)r(er)g(of)h(useful)g(functions)f(for)g(pro-)739 2335 y(gramming)j(the)i Fo(static.)c Fs(tests,)33 b(as)e(describ)r(ed)g(in)h (Chapter)f @beginspecial @setspecial @endspecial(14)p @beginspecial @setspecial @endspecial(.)47 b(Using)31 b(the)h(standard)739 2435 y(library)-7 b(,)26 b(the)i(ab)r(o)n(v)n(e)f (can)g(b)r(e)h(rewritten)f(as)870 2597 y Fo(open)42 b(configure/Confi)o (gur)o(e)870 2697 y(static.)e(=)1000 2797 y(LATEX_ENABLED)f(=)k ($\(CheckProg)c(latex\))863 2959 y Fs(As)25 b(a)g(matter)g(of)g(st)n (yle,)g(a)f Fo(static.)e Fs(section)j(that)g(is)g(used)g(for)f (con\014guration)f(should)739 3059 y(prin)n(t)35 b(what)h(it)g(is)f (doing)g(using)g(the)h @beginspecial @setspecial @endspecial Fo(ConfMsgChecking)p @beginspecial @setspecial @endspecial 29 w Fs(and)g @beginspecial @setspecial @endspecial Fo(ConfMsgResult)p @beginspecial @setspecial @endspecial 30 w Fs(func-)739 3158 y(tions)26 b(\(of)g(course,)g(most)g(of)g(help)r(er)g(functions)h (in)f(the)h(standard)e(library)g(w)n(ould)h(do)g(that)739 3258 y(automatically\).)739 3392 y @beginspecial @setspecial @endspecial 95 x Fk(4.14.1)112 b(.ST)-9 b(A)g(TIC)739 3640 y Fi(This)31 b(fe)l(atur)l(e)e(was)i(intr)l(o)l(duc)l(e)l(d)e(in)h (version)h(0.9.8.5.)863 3740 y Fs(There)k(is)f(also)g(a)g(rule)g(form)g (of)h(static)f(section.)58 b(The)35 b(syn)n(tax)e(can)h(b)r(e)h(an)n(y) f(of)h(the)739 3840 y(follo)n(wing)26 b(three)i(forms.)913 4002 y Fo(#)43 b(Export)f(all)g(variables)e(defined)g(by)j(the)g(body) 913 4102 y(.STATIC:)1088 4201 y()913 4401 y(#)g(Specify)e (file-dependencie)o(s)913 4500 y(.STATIC:)g()1088 4600 y()913 4799 y(#)i(Specify)e(which)h(variables)d(to)k (export,)e(as)i(well)f(as)g(file)g(dependencies)913 4899 y(.STATIC:)f(:)f()1088 4998 y()p eop end %%Page: 57 57 TeXDict begin 57 56 bop 291 282 a @beginspecial @setspecial @endspecial Fp(4.14.)63 b(ST)-7 b(A)g(TIC.)2219 b Fs(57)415 515 y(The)29 b Fo()e Fs(are)h(the)i(v)-5 b(ariable)28 b(names)g(to)h(b)r(e)h(de\014ned,)g(the)f Fo()24 b Fs(are)291 615 y(\014le)f(dep)r(endencies|the)g(rule)f(is)h(re-ev)-5 b(aluated)22 b(if)h(one)f(of)h(the)g(dep)r(endencies)g(is)g(c)n (hanged.)291 715 y(The)k Fo()d Fs(and)j Fo()21 b Fs(can)26 b(b)r(e)i(omitted;)f(if)h(so,)e(all)h(v)-5 b(ariables)25 b(de\014ned)j(in)291 814 y(the)g Fo()d Fs(are)h(exp)r(orted.)415 915 y(F)-7 b(or)34 b(example,)i(the)f (\014nal)g(example)f(of)h(the)g(previous)f(section)g(can)g(also)g(b)r (e)h(imple-)291 1014 y(men)n(ted)27 b(as)g(follo)n(ws.)465 1200 y Fo(open)42 b(configure/Config)o(ur)o(e)465 1300 y(.STATIC:)639 1400 y(LATEX_ENABLED)c(=)44 b($\(CheckProg)39 b(latex\))291 1585 y Fs(The)30 b(e\013ect)h(is)g(m)n(uc)n(h)f(the)h (same)f(as)g(using)g Fo(static.)e Fs(\(instead)i(of)h Fo(.STATIC)p Fs(\).)d(Ho)n(w)n(ev)n(er,)291 1685 y(in)f(most)h(cases)e Fo(.STATIC)f Fs(is)j(preferred,)e(for)h(t)n(w)n(o)g(reasons.)415 1785 y(First,)32 b(a)e Fo(.STATIC)e Fs(section)j(is)g(lazy)-7 b(,)31 b(meaning)f(that)h(it)h(is)e(not)h(ev)-5 b(aluated)31 b(un)n(til)g(one)291 1885 y(of)41 b(its)g(v)-5 b(ariables)41 b(is)g(resolv)n(ed.)76 b(In)42 b(this)g(example,)i(if)e Fo($\(LATEX_ENABLED\))35 b Fs(is)41 b(nev)n(er)291 1984 y(ev)-5 b(aluated,)25 b(the)h(section)f(need)h(nev)n(er)e(b)r(e)i(ev)-5 b(aluated)25 b(either.)36 b(This)26 b(is)f(in)h(con)n(trast)e(to)i(the) 291 2084 y Fo(static.)e Fs(section,)k(whic)n(h)f(alw)n(a)n(ys)f(ev)-5 b(aluates)27 b(its)h(b)r(o)r(dy)f(at)h(least)f(once.)415 2184 y(A)c(second)f(reason)e(is)j(that)f(a)g Fo(.STATIC)e Fs(section)i(allo)n(ws)f(for)h(\014le)g(dep)r(endencies,)i(whic)n(h)291 2284 y(are)36 b(useful)i(when)f(the)h Fo(.STATIC)d Fs(section)i(is)g (used)g(for)g(memoization.)66 b(F)-7 b(or)36 b(example,)291 2384 y(supp)r(ose)c(w)n(e)g(wish)h(to)f(create)g(a)g(dictionary)g(from) g(a)h(table)f(that)h(has)f(k)n(ey-v)-5 b(alue)32 b(pairs.)291 2483 y(By)g(using)h(a)f Fo(.STATIC)e Fs(section,)k(w)n(e)f(can)g(p)r (erform)f(this)h(computation)g(only)f(when)i(the)291 2583 y(input)24 b(\014le)f(c)n(hanges)f(\(not)h(on)g(ev)n(ery)f(fun)i (of)f Fo(omake)p Fs(\).)34 b(In)23 b(the)h(follo)n(wing)e(example)h (the)g @beginspecial @setspecial @endspecial Fo(awk)291 2683 y Fs(function)p @beginspecial @setspecial @endspecial 28 w(is)k(used)g(to)h(parse)e(the)i(\014le)f Fo(table-file)p Fs(.)33 b(When)28 b(a)f(line)h(is)f(encoun)n(tered)f(with)291 2782 y(the)i(form)f Fi(key)51 b Fo(=)44 b Fi(value)p Fs(,)28 b(the)g(k)n(ey/v)-5 b(alue)26 b(pair)h(is)g(added)h(the)g(the)g Fo(TABLE)p Fs(.)465 2969 y Fo(.STATIC:)40 b(table-file)639 3068 y(TABLE)i(=)h($\(Map\))639 3168 y(awk\(table-file\))639 3267 y(case)f($'^\\\([[:alnum:]]+)o(\\\))37 b(*=)43 b(*\\\(.*\\\)')814 3367 y(TABLE)e(=)i($\(TABLE.add)c($1,)k($2\))814 3467 y(export)415 3652 y Fs(It)24 b(is)g(appropriate)e(to)i(think)g(of)g(a)f Fo(.STATIC)e Fs(section)j(as)f(a)g(rule)h(that)g(m)n(ust)g(b)r(e)g (recom-)291 3752 y(puted)34 b(whenev)n(er)f(the)h(dep)r(endencies)g(of) f(the)i(rule)e(c)n(hange.)54 b(The)34 b(targets)e(of)i(the)g(rule)291 3851 y(are)26 b(the)i(v)-5 b(ariables)26 b(it)i(exp)r(orts)f(\(in)i (this)e(case,)g(the)h Fo(TABLE)e Fs(v)-5 b(ariable\).)291 3992 y @beginspecial @setspecial @endspecial 79 x Fq(4.14.1.1)92 b(.MEMO)291 4226 y Fs(A)30 b Fo(.MEMO)f Fs(rule)g(is)i(just)g(lik)n(e)e (a)h Fo(.STATIC)e Fs(rule,)i(except)h(that)f(the)h(results)f(are)f(not) h(sa)n(v)n(ed)291 4325 y(b)r(et)n(w)n(een)d(indep)r(enden)n(t)i(runs)e (of)g Fo(omake)p Fs(.)291 4461 y @beginspecial @setspecial @endspecial 84 x Fq(4.14.1.2)92 b(:k)m(ey:)291 4700 y Fs(The)23 b Fo(.STATIC)d Fs(and)j Fo(.MEMO)f Fs(rules)g(also)g(accept)h (a)g Fo(:key:)e Fs(v)-5 b(alue,)24 b(whic)n(h)g(sp)r(eci\014es)f(a)g (\\k)n(ey")291 4799 y(asso)r(ciated)29 b(with)j(the)f(v)-5 b(alues)31 b(b)r(eing)g(computed.)47 b(It)31 b(is)g(useful)g(to)g (think)g(of)g(a)g Fo(.STATIC)291 4899 y Fs(rule)j(as)h(a)f(dictionary)g (that)i(asso)r(ciates)d(k)n(eys)h(with)i(their)f(v)-5 b(alues.)59 b(When)35 b(a)g Fo(.STATIC)291 4998 y Fs(rule)27 b(is)g(ev)-5 b(aluated,)27 b(the)h(result)f(is)g(sa)n(v)n(ed)f(in)i (the)f(table)h(with)g(the)f Fo(:key:)f Fs(de\014ned)h(b)n(y)h(the)p eop end %%Page: 58 58 TeXDict begin 58 57 bop 739 282 a @beginspecial @setspecial @endspecial Fs(58)796 b Fp(CHAPTER)27 b(4.)64 b(OMAKE)27 b(CONCEPTS)f(AND)j(SYNT)-7 b(AX)739 515 y Fs(rule)28 b(\(if)h(a)e Fo(:key:)f Fs(is)j(not)f(sp)r(eci\014ed,)g(a)g(default)h (k)n(ey)e(is)h(used)g(instead\).)39 b(In)28 b(other)g(w)n(ords,)739 615 y(a)f(rule)h(is)g(lik)n(e)g(a)f(function.)39 b(The)28 b Fo(:key:)e Fs(sp)r(eci\014es)i(the)g(function)h(\\argumen)n(t",)d (and)i(the)739 715 y(rule)f(b)r(o)r(dy)h(computes)f(the)h(result.)863 814 y(T)-7 b(o)28 b(illustrate,)f(let's)h(use)f(a)g Fo(.MEMO)f Fs(rule)h(to)h(implemen)n(t)g(a)f(Fib)r(onacci)g(function.)913 994 y Fo(fib\(i\))41 b(=)1088 1093 y(i)i(=)g($\(int)e($i\))1088 1193 y(.MEMO:)g(:key:)g($i)1262 1292 y(println\($"Comput)o(in)o(g)d (fib\($i\)..."\))1262 1392 y(result)j(=)1436 1492 y(if)i($\(or)f($\(eq) g($i,)g(0\),)h($\(eq)f($i,)g(1\)\))1611 1591 y(value)f($i)1436 1691 y(else)1611 1791 y(add\($\(fib)e($\(sub)j($i,)g(1\)\),)g($\(fib)g ($\(sub)f($i,)i(2\)\)\))1088 1890 y(value)e($\(result\))913 2089 y(println\($"fib\(10\))c(=)43 b($\(fib)e(10\)"\))913 2189 y(println\($"fib\(12\))c(=)43 b($\(fib)e(12\)"\))739 2368 y Fs(When)28 b(this)g(script)f(is)h(run,)f(it)h(pro)r(duces)f(the) h(follo)n(wing)f(output.)913 2548 y Fo(Computing)40 b(fib\(10\)...)913 2647 y(Computing)g(fib\(9\)...)913 2747 y(Computing)g(fib\(8\)...)913 2847 y(Computing)g(fib\(7\)...)913 2946 y(Computing)g(fib\(6\)...)913 3046 y(Computing)g(fib\(5\)...)913 3145 y(Computing)g(fib\(4\)...)913 3245 y(Computing)g(fib\(3\)...)913 3345 y(Computing)g(fib\(2\)...)913 3444 y(Computing)g(fib\(1\)...)913 3544 y(Computing)g(fib\(0\)...)913 3644 y(fib\(10\))h(=)i(55)913 3743 y(Computing)d(fib\(12\)...)913 3843 y(Computing)g(fib\(11\)...)913 3942 y(fib\(12\))h(=)i(144)739 4122 y Fs(Note)32 b(that)f(the)h(Fib)r(onacci)g(computation)f(is)h(p)r (erformed)f(just)h(once)f(for)g(eac)n(h)g(v)-5 b(alue)31 b(of)739 4221 y(the)26 b(argumen)n(t,)e(rather)g(than)i(an)f(exp)r (onen)n(tial)g(n)n(um)n(b)r(er)g(of)g(times.)36 b(In)26 b(other)e(w)n(ords,)h(the)739 4321 y Fo(.MEMO)20 b Fs(rule)h(has)h(p)r (erformed)f(a)h(memoization,)g(hence)g(the)h(name.)34 b(Note)22 b(that)h(if)f Fo(.STATIC)739 4421 y Fs(w)n(ere)27 b(used)g(instead,)h(the)g(v)-5 b(alues)27 b(w)n(ould)g(b)r(e)h(sa)n(v)n (ed)e(across)g(runs)h(of)g Fo(omake)p Fs(.)863 4520 y(As)34 b(a)g(general)e(guideline,)k(whenev)n(er)d(y)n(ou)g(use)h(a)f Fo(.STATIC)e Fs(or)i Fo(.MEMO)f Fs(rule)i(within)739 4620 y(a)d(function)h(b)r(o)r(dy)-7 b(,)34 b(y)n(ou)c(will)i(usually)g (w)n(an)n(t)f(to)g(use)h(a)f Fo(:key:)f Fs(v)-5 b(alue)31 b(to)h(index)f(the)i(rule)739 4720 y(b)n(y)c(the)h(function)g(argumen)n (t.)42 b(Ho)n(w)n(ev)n(er,)28 b(this)i(is)g(not)f(required.)42 b(In)30 b(the)g(follo)n(wing,)f(the)739 4819 y Fo(.STATIC)c Fs(rule)i(is)g(used)h(to)f(p)r(erform)h(some)f(exp)r(ensiv)n(e)g (computation)g(once.)913 4998 y Fo(f\(x\))42 b(=)p eop end %%Page: 59 59 TeXDict begin 59 58 bop 291 282 a @beginspecial @setspecial @endspecial Fp(4.15.)63 b(CONST)-7 b(ANTS)2030 b Fs(59)639 515 y Fo(.STATIC:)814 615 y(y)43 b(=)g($\(expensive-comp)o(uta)o(ti)o (on)o(\))639 715 y(add\($x,)e($y\))415 892 y Fs(Additonal)35 b(care)e(should)h(b)r(e)h(tak)n(en)f(for)g(recursiv)n(e)f(functions,)j (lik)n(e)e(the)h(Fib)r(onacci)291 992 y(function.)53 b(If)33 b(the)g Fo(:key:)e Fs(is)i(omitted,)h(then)g(the)f(rule)f(w)n (ould)h(b)r(e)g(de\014ned)g(in)g(terms)g(of)291 1092 y(itself,)40 b(resulting)d(in)h(a)f(cyclic)h(dep)r(endency)-7 b(.)67 b(Here)37 b(is)h(the)g(output)g(of)f(the)h(Fib)r(onacci)291 1191 y(program)25 b(with)j(an)g(omitted)g Fo(:key:)p Fs(.)465 1369 y Fo(Computing)40 b(fib\(10\)...)465 1468 y(Computing)g(fib\(8\)...)465 1568 y(Computing)g(fib\(6\)...)465 1668 y(Computing)g(fib\(4\)...)465 1767 y(Computing)g(fib\(2\)...)465 1867 y(Computing)g(fib\(0\)...)465 1967 y(fib\(10\))h(=)i(0)465 2066 y(fib\(12\))e(=)i(0)291 2244 y Fs(The)24 b(reason)e(for)h(this)h (b)r(eha)n(vior)f(is)h(that)g(the)g Fo(result)e Fs(v)-5 b(alue)24 b(is)f(not)h(sa)n(v)n(ed)f(un)n(til)h(the)h(base)291 2344 y(case)34 b Fo(i)44 b(=)f(0)g(||)g(i)g(=)g(1)35 b Fs(is)h(reac)n(hed,)h(so)e Fo(fib)f Fs(calls)h(itself)i(recursiv)n (ely)c(un)n(til)j(reac)n(hing)291 2443 y Fo(fib\(0\))p Fs(,)25 b(whereup)r(on)i(the)h Fo(result)d Fs(v)-5 b(alue)28 b(is)f(\014xed)h(at)f(0.)415 2543 y(In)h(an)n(y)f(case,)g(recursiv)n(e) f(de\014nitions)i(are)f(p)r(erfectly)h(acceptable,)f(but)h(y)n(ou)f (will)h(usu-)291 2642 y(ally)j(w)n(an)n(t)h(a)g Fo(:key:)f Fs(argumen)n(t)g(so)h(that)g(eac)n(h)g(recursiv)n(e)f(call)h(has)f(a)h (di\013eren)n(t)h Fo(:key:)p Fs(.)291 2742 y(In)f(most)f(cases,)h(this) g(means)f(that)h(the)g Fo(:key:)e Fs(should)i(include)g(all)f(argumen)n (ts)g(to)h(the)291 2842 y(function.)291 2966 y @beginspecial @setspecial @endspecial 149 x Fl(4.15)135 b(Constan)l(ts)291 3297 y Fs(In)n(ternally)-7 b(,)26 b(OMak)n(e)h(represen)n(ts)f(v)-5 b(alues)27 b(in)h(sev)n(eral)e(forms,)h(whic)n(h)g(w)n(e)h(list)f (here.)415 3475 y Fj(\017)41 b Fs(in)n(t)592 3655 y Fq({)g Fs(Constructor:)35 b Fo($\(int)42 b(\))26 b @beginspecial @setspecial @endspecial Fs(9.4.1)p @beginspecial @setspecial @endspecial(.)592 3786 y Fq({)41 b Fs(Ob)5 b(ject:)37 b Fo(Int)26 b @beginspecial @setspecial @endspecial Fs(12.1.4)p @beginspecial @setspecial @endspecial(.)592 3916 y Fq({)41 b Fs(An)d(in)n(teger)f(is)h(a)f(represen)n(ted)g(with)h(\014nite)h (precision)e(using)g(the)i(OCaml)681 4016 y(represen)n(tation)d(\(31)h (bits)i(on)f(a)f(32)g(platform,)k(and)c(63)h(bits)g(on)g(a)f(64)g(bit) 681 4116 y(platform\).)592 4247 y Fq({)k Fs(See)27 b(also:)36 b(arithmetic)28 b @beginspecial @setspecial @endspecial(9.4.3)p @beginspecial @setspecial @endspecial(.)415 4426 y Fj(\017)41 b Fs(\015oat)592 4606 y Fq({)g Fs(Constructor:)35 b Fo($\(float)41 b(\))26 b @beginspecial @setspecial @endspecial Fs(9.4.2)p @beginspecial @setspecial @endspecial(.)592 4737 y Fq({)41 b Fs(Ob)5 b(ject:)37 b Fo(Float)25 b @beginspecial @setspecial @endspecial Fs(12.1.5)p @beginspecial @setspecial @endspecial(.)592 4868 y Fq({)41 b Fs(A)28 b(\015oat)f(is)g(a)g(\015oating-p)r(oin)n(t)g (v)-5 b(alue,)28 b(represen)n(ted)e(in)i(IEEE)e(64-bit)h(format.)592 4998 y Fq({)41 b Fs(See)27 b(also:)36 b(arithmetic)28 b @beginspecial @setspecial @endspecial(9.4.3)p @beginspecial @setspecial @endspecial(.)p eop end %%Page: 60 60 TeXDict begin 60 59 bop 739 282 a @beginspecial @setspecial @endspecial Fs(60)796 b Fp(CHAPTER)27 b(4.)64 b(OMAKE)27 b(CONCEPTS)f(AND)j(SYNT)-7 b(AX)863 515 y Fj(\017)41 b Fs(arra)n(y)1040 700 y Fq({)g Fs(Constructor:)36 b Fo($\(array)k(,)i(...,)g(\))25 b @beginspecial @setspecial @endspecial Fs(9.3.1)p @beginspecial @setspecial @endspecial(.)1040 833 y Fq({)41 b Fs(Ob)5 b(ject:)37 b Fo(Array)25 b @beginspecial @setspecial @endspecial Fs(12.1.7)p @beginspecial @setspecial @endspecial(.)1040 966 y Fq({)41 b Fs(An)35 b(arra)n(y)d(is)j(a)f(\014nite)h(list)g(of)f (v)-5 b(alues.)58 b(Arra)n(ys)32 b(are)i(also)g(de\014ned)g(with)i(an) 1129 1066 y(arra)n(y)25 b(de\014nition)1303 1216 y Fo(X[])43 b(=)1478 1316 y()1478 1416 y(...)1478 1515 y()1040 1666 y Fq({)e Fs(See)28 b(also:)35 b Fo(nth)27 b @beginspecial @setspecial @endspecial Fs(9.3.5)p @beginspecial @setspecial @endspecial(,)f Fo(nth-tl)g @beginspecial @setspecial @endspecial Fs(9.3.8)p @beginspecial @setspecial @endspecial(,)g Fo(length)f @beginspecial @setspecial @endspecial Fs(9.3.4)p @beginspecial @setspecial @endspecial(,)h Fh(:)14 b(:)g(:)863 1850 y Fj(\017)41 b Fs(string)1040 2034 y Fq({)g Fs(Ob)5 b(ject:)37 b Fo(String)25 b @beginspecial @setspecial @endspecial Fs(12.1.8)p @beginspecial @setspecial @endspecial(.)1040 2168 y Fq({)41 b Fs(By)26 b(default,)g(all)g(constan)n(t)f(c)n (haracter)f(sequences)h(represen)n(t)f(strings,)i(so)f(the)1129 2267 y(simple)30 b(w)n(a)n(y)f(to)g(construct)h(a)f(string)g(is)h(to)f (write)h(it)g(do)n(wn.)43 b(In)n(ternally)-7 b(,)30 b(the)1129 2367 y(string)f(ma)n(y)f(b)r(e)h(parsed)g(as)f(sev)n(eral)f(pieces.)42 b(A)29 b(string)f(often)i(represen)n(ts)e(an)1129 2466 y(arra)n(y)d(of)j(v)-5 b(alues)27 b(separated)f(b)n(y)i(whitespace.) 1303 2617 y Fo(osh>S)42 b(=)h(This)f(is)h(a)g(string)1303 2716 y(-)h(:)f()1434 3513 y(:)f(Sequence)1303 3613 y(osh>length\($S\))1303 3713 y(-)h(:)f(4)g(:)g(Int)1040 3863 y Fq({)e Fs(A)23 b Fi(data)30 b Fs(string)21 b(is)i(a)f(string)f(where)h(whitespace)g (is)h(signi\014can)n(t.)34 b(It)23 b(represen)n(ts)1129 3963 y(a)38 b(single)f(v)-5 b(alue,)40 b(not)e(an)g(arra)n(y)-7 b(.)65 b(The)38 b(constructors)e(are)h(the)h(quotations)1129 4062 y Fo($"...")25 b Fs(and)j Fo($'...')p Fs(.)1303 4230 y Fo(osh>S)42 b(=)h($'''This)d(is)j(a)g(string''')1303 4329 y(-)h(:)f()d(:)j(String)1040 4497 y Fq({)e Fs(See)28 b(also:)35 b(Quoted)28 b(strings)e @beginspecial @setspecial @endspecial(7.2)p @beginspecial @setspecial @endspecial(.)863 4681 y Fj(\017)41 b Fs(\014le)1040 4865 y Fq({)g Fs(Constructor:)36 b Fo($\(file)41 b(\))24 b @beginspecial @setspecial @endspecial Fs(10.1.1)p @beginspecial @setspecial @endspecial(.)1040 4998 y Fq({)41 b Fs(Ob)5 b(ject:)37 b Fo(File)26 b @beginspecial @setspecial @endspecial Fs(12.1.13)p @beginspecial @setspecial @endspecial(.)p eop end %%Page: 61 61 TeXDict begin 61 60 bop 291 282 a @beginspecial @setspecial @endspecial Fp(4.15.)63 b(CONST)-7 b(ANTS)2030 b Fs(61)592 515 y Fq({)41 b Fs(A)30 b(\014le)g(ob)5 b(ject)29 b(represen)n(ts)f (the)j(abstract)d(name)i(for)f(a)g(\014le.)44 b(The)29 b(\014le)h(ob)5 b(ject)681 615 y(can)20 b(b)r(e)h(view)n(ed)f(as)g(an)g (absolute)g(name;)j(the)e(string)f(represen)n(tation)e(dep)r(ends)681 715 y(on)27 b(the)h(curren)n(t)f(directory)-7 b(.)855 885 y Fo(osh>name)40 b(=)k($\(file)d(foo\))855 985 y(-)i(:)g (/Users/jyh/projec)o(ts/)o(om)o(ake)o(/0)o(.9)o(.8.)o(x/)o(foo)37 b(:)43 b(File)855 1084 y(osh>echo)d($\(name\))855 1184 y(foo)855 1283 y(osh>cd)h(..)855 1383 y(-)i(:)g(/Users/jyh/projec)o (ts/)o(om)o(ake)37 b(:)43 b(Dir)855 1483 y(osh>echo)d($\(name\))855 1582 y(0.9.8.x/foo)592 1753 y Fq({)h Fs(See)27 b(also:)36 b Fo(vmount)25 b @beginspecial @setspecial @endspecial Fs(10.6.1)p @beginspecial @setspecial @endspecial(.)415 1941 y Fj(\017)41 b Fs(directory)592 2129 y Fq({)g Fs(Constructor:)35 b Fo($\(dir)42 b(\))24 b @beginspecial @setspecial @endspecial Fs(10.1.1)p @beginspecial @setspecial @endspecial(.)592 2264 y Fq({)41 b Fs(Ob)5 b(ject:)37 b Fo(Dir)26 b @beginspecial @setspecial @endspecial Fs(12.1.14)p @beginspecial @setspecial @endspecial(.)592 2399 y Fq({)41 b Fs(A)28 b(directory)e(ob)5 b(ject)27 b(is)h(lik)n(e)f(a)g(\014le)h(ob)5 b(ject,)27 b(but)i(it)f(represen)n(ts)e(a)h(directory)-7 b(.)415 2587 y Fj(\017)41 b Fs(map)28 b(\(dictionary\))592 2757 y Fq({)41 b Fs(Ob)5 b(ject:)37 b Fo(Map)26 b @beginspecial @setspecial @endspecial Fs(12.1.2)p @beginspecial @setspecial @endspecial(.)592 2892 y Fq({)41 b Fs(A)36 b(map/dictionary)e(is)h(a)g (table)h(that)g(maps)f(v)-5 b(alues)35 b(to)h(v)-5 b(alues.)60 b(The)36 b Fo(Map)681 2991 y Fs(ob)5 b(ject)33 b(is)g(the)h(empt)n(y)f (map.)54 b(The)33 b(data)g(structure)f(is)i(p)r(ersisten)n(t,)g(and)f (all)681 3091 y(op)r(erations)d(are)g(pure)g(and)h(functional.)48 b(The)31 b(sp)r(ecial)g(syn)n(tax)f Fo($|key|)e Fs(can)681 3191 y(b)r(e)g(used)f(for)g(k)n(eys)g(that)h(are)f(strings.)855 3361 y Fo(osh>table)40 b(=)j($\(Map\))855 3461 y(osh>table)d(=)j ($\(table.add)c(x,)k(int\))855 3560 y(osh>table.)d(+=)1204 3660 y($|y|)i(=)h(int)855 3760 y(osh>table.find\(y\))855 3859 y(-)g(:)g("int")f(:)h(Sequence)415 4030 y Fj(\017)e Fs(c)n(hannel)592 4218 y Fq({)g Fs(Constructor:)35 b Fo($\(fopen)41 b(,)e(\))25 b @beginspecial @setspecial @endspecial Fs(10.8.4)p @beginspecial @setspecial @endspecial(.)592 4353 y Fq({)41 b Fs(Ob)5 b(jects:)36 b Fo(InChannel)24 b @beginspecial @setspecial @endspecial Fs(12.1.16)p @beginspecial @setspecial @endspecial(,)i Fo(OutChannel)d @beginspecial @setspecial @endspecial Fs(12.1.17)p @beginspecial @setspecial @endspecial(.)592 4487 y Fq({)41 b Fs(Channels)27 b(are)g(used)g(for)g(bu\013ered)h (input/output.)415 4676 y Fj(\017)41 b Fs(function)592 4864 y Fq({)g Fs(Constructor:)35 b Fo($\(fun)42 b(,)e(\)) 24 b @beginspecial @setspecial @endspecial Fs(9.5.1)p @beginspecial @setspecial @endspecial(.)592 4998 y Fq({)41 b Fs(Ob)5 b(ject:)37 b Fo(Fun)26 b @beginspecial @setspecial @endspecial Fs(12.1.9)p @beginspecial @setspecial @endspecial(.)p eop end %%Page: 62 62 TeXDict begin 62 61 bop 739 282 a @beginspecial @setspecial @endspecial Fs(62)796 b Fp(CHAPTER)27 b(4.)64 b(OMAKE)27 b(CONCEPTS)f(AND)j(SYNT)-7 b(AX)1040 515 y Fq({)41 b Fs(F)-7 b(unctions)28 b(can)f(b)r(e)h(de\014ned)g(in)g(sev)n(eral)e(w)n (a)n(ys.)1201 648 y Fj(\003)41 b Fs(As)28 b(an)f(anon)n(ymous)f (function,)1459 764 y Fo($\(fun)41 b(i,)i(j,)g($\(add)e($i,)i($j\)\)) 1201 881 y Fj(\003)e Fs(As)28 b(a)f(named)h(function,)1459 997 y Fo(f\(i,)42 b(j\))g(=)1633 1096 y(add\($i,)f($j\))1201 1213 y Fj(\003)g Fi(This)c(fe)l(atur)l(e)f(wil)t(l)h(b)l(e)f(intr)l(o)l (duc)l(e)l(d)g(in)f(version)i(0.9.9.0.)p Fs(As)h(an)c(anon)n(y-)1284 1312 y(mous)28 b(function)g(argumen)n(t.)1459 1429 y Fo(osh>foreach\(i)38 b(=>)43 b($\(add)e($i,)i(1\),)f(1)h(2)g(3\))1459 1528 y(-)g(:)g()g(:)g(Array)863 1711 y Fj(\017)e Fs(lexer)1040 1893 y Fq({)g Fs(Ob)5 b(ject:)37 b Fo(Lexer)25 b @beginspecial @setspecial @endspecial Fs(10.11.9)p @beginspecial @setspecial @endspecial(.)1040 2026 y Fq({)41 b Fs(This)28 b(ob)5 b(ject)27 b(represen)n(ts)f(a)h (lexer.)863 2209 y Fj(\017)41 b Fs(parser)1040 2392 y Fq({)g Fs(Ob)5 b(ject:)37 b Fo(Parser)25 b @beginspecial @setspecial @endspecial Fs(10.11.13)p @beginspecial @setspecial @endspecial(.)1040 2524 y Fq({)41 b Fs(This)28 b(ob)5 b(ject)27 b(represen)n(ts)f(a)h(parser.)p eop end %%Page: 63 63 TeXDict begin 63 62 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(5)291 1553 y Fr(V)-19 b(ariables)76 b(and)h(Naming)291 1985 y Fs(During)26 b(ev)-5 b(aluation,)26 b(there)h(are)e(three)i(di\013eren)n(t)f(kinds)h(of)g(namespaces.)35 b(V)-7 b(ariables)25 b(can)291 2084 y(b)r(e)34 b Fi(private)p Fs(,)j(or)c(they)h(ma)n(y)f(refer)g(to)h(\014elds)g(in)g(the)g(curren)n (t)f Fi(this)41 b Fs(ob)5 b(ject,)35 b(or)e(they)h(can)291 2184 y(b)r(e)f(part)f(of)h(the)g Fi(glob)l(al)43 b Fs(namespace.)52 b(The)33 b(namespace)f(can)g(b)r(e)h(sp)r(eci\014ed)h(directly)e(b)n(y) 291 2284 y(including)d(an)f(explicit)h(quali\014er)f(b)r(efore)h(the)g (v)-5 b(ariable)28 b(name.)40 b(The)29 b(three)f(namespaces)291 2383 y(are)e(separate;)g(a)i(v)-5 b(ariable)26 b(can)h(b)r(e)h(b)r (ound)g(in)g(one)f(or)g(more)g(sim)n(ultaneously)-7 b(.)465 2566 y Fo(#)43 b(private)e(namespace)465 2666 y(private.X)f(=)j(1)465 2765 y(#)g(current)e(object)465 2865 y(this.X)g(=)i(2)465 2965 y(#)g(public,)e(globally)f(defined)465 3064 y(global.X)g(=)j(3)291 3208 y @beginspecial @setspecial @endspecial 131 x Fl(5.1)135 b(priv)-7 b(ate.)291 3521 y Fs(The)22 b Fo(private.)e Fs(quali\014er)h(is)i(used)f(to)h(de\014ne)f(v)-5 b(ariables)22 b(that)h(are)e(priv)-5 b(ate)22 b(to)h(the)g(curren)n(t)291 3620 y(\014le/scop)r(e.)55 b(The)34 b(v)-5 b(alues)33 b(are)g(not)h(accessible)f(outside)h(the)h(scop)r(e.)55 b(Priv)-5 b(ate)33 b(v)-5 b(ariables)291 3720 y(are)26 b(statically)h(\(lexically\))h(scop)r(ed.)465 3903 y Fo(Obj.)42 b(=)596 4002 y(private.X)e(=)j(1)596 4201 y(print\(\))d(=)726 4301 y(println\(The)f(value)j(of)h(X)g(is:)f($X\)) 465 4500 y(#)h(Prints:)465 4600 y(#)174 b(The)42 b(private)f(value)g (of)i(X)g(is:)g(1)465 4700 y(Obj.print\(\))465 4899 y(#)g(This)f(is)h (an)g(error--X)d(is)j(private)d(in)j(Obj)465 4998 y(y)g(=)g($\(Obj.X\)) 1681 5208 y Fs(63)p eop end %%Page: 64 64 TeXDict begin 64 63 bop 739 282 a @beginspecial @setspecial @endspecial Fs(64)1121 b Fp(CHAPTER)28 b(5.)64 b(V)-9 b(ARIABLES)27 b(AND)i(NAMING)863 515 y Fs(In)f(addition,)g(priv)-5 b(ate)27 b(de\014nitions)h(do)f(not)h(a\013ect)f(the)h(global)f(v)-5 b(alue)27 b(of)h(a)f(v)-5 b(ariable.)870 699 y Fo(#)43 b(The)f(public)f(value)h(of)h(x)g(is)f(1)870 799 y(x)h(=)g(1)870 998 y(#)g(This)f(object)f(uses)h(a)h(private)e(value)g(of)i(x)870 1098 y(Obj.)f(=)1044 1198 y(private.x)e(=)j(2)1044 1397 y(print\(\))e(=)1175 1496 y(x)i(=)g(3)1175 1596 y(println\(The)c (private)h(value)i(of)h(x)g(is:)f($x\))1175 1696 y(println\(The)d (public)i(value)g(of)i(x)g(is:)g($\(public.x\)\))1175 1795 y(f\(\))870 1995 y(#)g(Prints:)870 2094 y(#)174 b(The)42 b(private)f(value)g(of)i(x)g(is:)f(3)870 2194 y(#)174 b(The)42 b(public)f(value)h(of)g(x)h(is:)g(1)870 2293 y(Obj.print\(\))863 2477 y Fs(Priv)-5 b(ate)27 b(v)-5 b(ariables)26 b(ha)n(v)n(e)h(t)n(w)n(o)g(additional)g(prop)r(erties.) 739 2544 y @beginspecial @setspecial @endspecial 840 2661 a(1.)41 b(Priv)-5 b(ate)27 b(v)-5 b(ariables)26 b(are)h(lo)r(cal)g(to)h(the)f(\014le)h(in)g(whic)n(h)g(they)f(are)g (de\014ned.)739 2711 y @beginspecial @setspecial @endspecial 840 2828 a(2.)41 b(Priv)-5 b(ate)35 b(v)-5 b(ariables)34 b(are)g(not)h(exp)r(orted)g(b)n(y)g(the)h Fo(export)c Fs(directiv)n(e,)37 b(unless)e(they)946 2928 y(are)27 b(men)n(tioned)h(explicitly)-7 b(.)1252 3145 y Fo(private.)40 b(=)1382 3245 y(FLAG)i(=)h(true)1252 3444 y(section)1382 3544 y(FLAG)f(=)h(false)1382 3643 y(export)1252 3843 y(#)g(FLAG)f(is)g(still)g(true)1252 3942 y(section)1382 4042 y(FLAG)g(=)h(false)1382 4141 y(export)e(FLAG)1252 4341 y(#)i(FLAG)f(is)g(now)h(false)739 4567 y @beginspecial @setspecial @endspecial 149 x Fl(5.2)135 b(this.)739 4899 y Fs(The)30 b Fo(this.)e Fs(quali\014er)h(is)h(used)g(to)g (de\014ne)g(\014elds)g(that)g(are)f(lo)r(cal)h(to)g(an)g(ob)5 b(ject.)43 b(Ob)5 b(ject)739 4998 y(v)-5 b(ariables)26 b(are)h(dynamically)g(scop)r(ed.)p eop end %%Page: 65 65 TeXDict begin 65 64 bop 291 282 a @beginspecial @setspecial @endspecial Fp(5.3.)63 b(GLOBAL.)2210 b Fs(65)465 515 y Fo(X)43 b(=)g(1)465 615 y(f\(\))f(=)596 715 y(println\(The)d(public)i (value)g(of)i(X)g(is:)g($\(X\)\))465 914 y(#)g(Prints:)465 1013 y(#)174 b(The)42 b(public)f(value)h(of)h(X)g(is:)f(2)465 1113 y(section)596 1213 y(X)h(=)g(2)596 1312 y(f\(\))465 1512 y(#)g(X)g(is)g(a)g(protected)d(field)i(in)g(the)h(object)465 1611 y(Obj.)f(=)596 1711 y(this.X)f(=)i(3)596 1910 y(print\(\))d(=)726 2010 y(println\(The)f(value)j(of)h(this.X)e(is:)h($\(X\)\))726 2109 y(f\(\))465 2309 y(#)h(Prints:)465 2408 y(#)174 b(The)42 b(value)g(of)g(this.X)g(is:)g(3)465 2508 y(#)174 b(The)42 b(public)f(value)h(of)h(X)g(is:)f(1)465 2607 y(Obj.print\(\))465 2807 y(#)h(This)f(is)h(legal,)e(it)i(defines)d(Y)k (as)e(3)465 2906 y(Y)h(=)g($\(Obj.X\))415 3078 y Fs(In)36 b(general,)h(it)g(is)f(a)f(go)r(o)r(d)h(idea)g(to)g(de\014ne)g(ob)5 b(ject)36 b(v)-5 b(ariables)34 b(as)i(protected.)62 b(The)291 3177 y(resulting)21 b(co)r(de)g(is)g(more)g(mo)r(dular)g(b)r(ecause)g (v)-5 b(ariables)21 b(in)g(y)n(our)g(ob)5 b(ject)21 b(will)h(not)f(pro) r(duce)291 3277 y(unexp)r(ected)28 b(clashes)e(with)j(v)-5 b(ariables)26 b(de\014ned)i(in)g(other)f(parts)g(of)g(the)h(pro)5 b(ject.)291 3416 y @beginspecial @setspecial @endspecial 133 x Fl(5.3)135 b(global.)291 3731 y Fs(The)23 b Fo(global.)d Fs(quali\014er)i(is)h(used)g(to)g(sp)r(ecify)g(global)f (dynamically-scop)r(ed)g(v)-5 b(ariables.)34 b(In)291 3831 y(the)29 b(follo)n(wing)f(example,)h(the)h Fo(global.)c Fs(de\014nition)k(sp)r(eci\014es)f(that)g(the)h(binding)f Fo(X)43 b(=)g(4)291 3931 y Fs(is)34 b(to)h(b)r(e)h(dynamically)e(scop)r (ed.)58 b(Global)35 b(v)-5 b(ariables)33 b Fi(ar)l(e)k(not)43 b Fs(de\014ned)35 b(as)f(\014elds)h(of)g(an)291 4030 y(ob)5 b(ject.)465 4201 y Fo(X)43 b(=)g(1)465 4301 y(f\(\))f(=)596 4401 y(println\(The)d(global)i(value)g(of)i(X)g(is:)g($\(X\)\))465 4600 y(#)g(Prints:)465 4700 y(#)174 b(The)42 b(global)f(value)h(of)h(X) g(is:)f(2)465 4799 y(section)596 4899 y(X)h(=)g(2)596 4998 y(f\(\))p eop end %%Page: 66 66 TeXDict begin 66 65 bop 739 282 a @beginspecial @setspecial @endspecial Fs(66)1121 b Fp(CHAPTER)28 b(5.)64 b(V)-9 b(ARIABLES)27 b(AND)i(NAMING)913 615 y Fo(Obj.)42 b(=)1044 715 y(protected.X)d(=)k(3)1044 914 y(print\(\))e(=)1175 1013 y(println\(The)e(protected)h(value)h(of)i(X)g(is:)f($\(X\)\))1175 1113 y(global.X)e(=)j(4)1175 1213 y(f\(\))913 1412 y(#)g(Prints:)913 1512 y(#)174 b(The)43 b(protected)c(value)j(of)h(X)g(is:)f(3)913 1611 y(#)174 b(The)43 b(global)e(value)g(of)i(X)g(is:)f(4)913 1711 y(Obj.print\(\))739 1854 y @beginspecial @setspecial @endspecial 131 x Fl(5.4)135 b(protected.)739 2167 y Fs(In)28 b(OMak)n(e)e(0.9.8,)g Fo(protected)e Fs(is)k(a)f(synon)n(ym)g (for)g Fo(this)p Fs(.)913 2348 y Fo(osh>protected.x)38 b(=)43 b(1)913 2448 y(-)g(:)h("1")e(:)h(Sequence)913 2547 y(osh>value)d($\(this.x\))913 2647 y(-)j(:)h("1")e(:)h(Sequence) 739 2828 y Fs(In)27 b(0.9.9,)f(this)h(will)g(c)n(hange,)f(so)g(that)h (the)h(quali\014er)e Fo(protected)d Fs(means)k(\(in)g(0.9.9\))f(that) 739 2927 y(a)f(v)-5 b(ariable)25 b(is)g(lo)r(cal)h(to)f(the)h(curren)n (t)f(ob)5 b(ject)26 b(or)e(\014le,)j(and)e(ma)n(y)g(not)h(b)r(e)g (accessed)e(outside)739 3027 y(it.)739 3152 y @beginspecial @setspecial @endspecial 149 x Fl(5.5)135 b(public.)739 3483 y Fs(In)28 b(OMak)n(e)e(0.9.8,)g Fo(public)g Fs(is)h(a)g(synon)n (ym)g(for)g Fo(global)p Fs(.)913 3664 y Fo(osh>public.x)39 b(=)k(1)913 3764 y(-)g(:)h("1")e(:)h(Sequence)913 3863 y(osh>value)d($\(global.x\))913 3963 y(-)j(:)h("1")e(:)h(Sequence)739 4144 y Fs(In)31 b(0.9.9,)g(this)h(will)f(c)n(hange,)g(so)g(that)g(the)h (quali\014er)e Fo(public)f Fs(means)i(\(in)h(0.9.9\))e(that)i(a)739 4244 y(v)-5 b(ariable)26 b(is)i(to)f(b)r(e)h(accessible)f(from)g (outside)h(the)g(curren)n(t)e(\014le)i(or)f(ob)5 b(ject.)739 4384 y @beginspecial @setspecial @endspecial 134 x Fl(5.6)135 b(Quali\014ed)46 b(blo)t(c)l(ks)739 4700 y Fs(If)24 b(sev)n(eral)d (quali\014ed)i(v)-5 b(ariables)22 b(are)g(de\014ned)i(sim)n (ultaneously)-7 b(,)23 b(a)g(blo)r(c)n(k)g(form)g(of)g(quali\014er)739 4799 y(can)30 b(b)r(e)i(de\014ned.)47 b(The)31 b(syn)n(tax)f(is)h (similar)f(to)h(an)g(ob)5 b(ject)30 b(de\014nition,)j(where)d(the)h (name)739 4899 y(of)e(the)h(ob)5 b(ject)29 b(is)h(the)g(quali\014er)e (itself.)43 b(F)-7 b(or)29 b(example,)h(the)f(follo)n(wing)g(program)e (de\014nes)739 4998 y(t)n(w)n(o)g(priv)-5 b(ate)27 b(v)-5 b(ariables)26 b Fo(X)i Fs(and)f Fo(Y)p Fs(.)p eop end %%Page: 67 67 TeXDict begin 67 66 bop 291 282 a @beginspecial @setspecial @endspecial Fp(5.7.)63 b(DECLARE)2176 b Fs(67)465 515 y Fo(private.)40 b(=)639 615 y(X)j(=)h(1)639 715 y(Y)f(=)h(2)291 902 y Fs(The)23 b(quali\014er)g(sp)r(eci\014es)g(a)g(default)h (namespace)f(for)g(new)g(de\014nitions)h(in)g(the)g(blo)r(c)n(k.)35 b(The)291 1002 y(con)n(ten)n(ts)27 b(of)g(the)h(blo)r(c)n(k)f(is)h (otherwise)e(completely)i(general.)465 1190 y Fo(private.)40 b(=)639 1290 y(X)j(=)h(1)639 1390 y(Y)f(=)h(2)639 1489 y(public.Z)d(=)i($\(add)e($X,)i($Y\))639 1589 y(#)g(Prints)f("The)f (value)h(of)h(Z)g(is)g(3")639 1689 y(echo)f(The)h(value)e(of)i(Z)g(is)g ($Z)291 1826 y @beginspecial @setspecial @endspecial 144 x Fl(5.7)135 b(declare)291 2154 y Fs(When)28 b(a)g(v)-5 b(ariable)26 b(name)i(is)g(unquali\014ed,)g(its)g(namespace)f(is)h (determined)g(b)n(y)g(the)g(most)291 2253 y(recen)n(t)39 b(de\014nition)i(or)e(declaration)g(that)h(is)g(in)g(scop)r(e)g(for)g (that)g(v)-5 b(ariable.)74 b(W)-7 b(e)40 b(ha)n(v)n(e)291 2353 y(already)30 b(seen)h(this)i(in)f(the)g(examples,)g(where)f(a)h(v) -5 b(ariable)31 b(de\014nition)h(is)g(quali\014ed,)g(but)291 2453 y(the)g(subsequen)n(t)f(uses)g(are)g(not)g(quali\014ed)h (explicitly)-7 b(.)49 b(In)32 b(the)g(follo)n(wing)e(example,)j(the)291 2552 y(\014rst)d(o)r(ccurrence)f(of)h Fo($X)g Fs(refers)f(to)h(the)h Fi(private)38 b Fs(de\014nition,)32 b(b)r(ecause)d(that)i(is)f(the)h (most)291 2652 y(recen)n(t.)47 b(The)31 b(public)h(de\014nition)f(of)g Fo(X)g Fs(is)g(still)h Fo(0)p Fs(,)g(but)f(the)h(v)-5 b(ariable)30 b(m)n(ust)i(b)r(e)f(quali\014ed)291 2752 y(explicitly)-7 b(.)465 2940 y Fo(public.X)40 b(=)j(0)465 3040 y(private.X)d(=)j(1)465 3239 y(public.print\(\))38 b(=)639 3339 y(println\(The)h(value)j(of)h(private.X)c(is:)k($X\))639 3438 y(println\(The)c(value)j(of)h(public.X)d(is:)i($\(public.X\)\))291 3626 y Fs(Sometimes)18 b(it)i(can)e(b)r(e)h(useful)g(to)g(declare)f(a)g (v)-5 b(ariable)18 b(without)h(de\014ning)g(it.)34 b(F)-7 b(or)18 b(example,)291 3726 y(w)n(e)23 b(migh)n(t)h(ha)n(v)n(e)f(a)h (function)h(that)f(uses)g(a)f(v)-5 b(ariable)24 b Fo(X)f Fs(that)i(is)f(to)g(b)r(e)g(de\014ned)h(later)e(in)i(the)291 3825 y(program.)34 b(The)28 b Fo(declare)d Fs(directiv)n(e)i(can)g(b)r (e)h(used)g(for)f(this.)465 4014 y Fo(declare)41 b(public.X)465 4213 y(public.print\(\))d(=)639 4313 y(println\(The)h(value)j(of)h(X)g (is)g($X\))465 4512 y(#)g(Prints)e("The)h(value)g(of)g(X)i(is)e(2")465 4612 y(X)h(=)g(2)465 4711 y(print\(\))415 4899 y Fs(Finally)-7 b(,)30 b(what)g(ab)r(out)f(v)-5 b(ariables)28 b(that)i(are)e(used)i (but)g(not)g(explicitly)f(quali\014ed?)43 b(In)291 4998 y(this)27 b(case,)g(the)h(follo)n(wing)f(rules)g(are)f(used.)p eop end %%Page: 68 68 TeXDict begin 68 67 bop 739 282 a @beginspecial @setspecial @endspecial Fs(68)1121 b Fp(CHAPTER)28 b(5.)64 b(V)-9 b(ARIABLES)27 b(AND)i(NAMING)863 515 y Fj(\017)41 b Fs(If)28 b(the)g(v)-5 b(ariable)27 b(is)h(a)f(function)h(parameter,)e(it)i(is)g (priv)-5 b(ate.)863 681 y Fj(\017)41 b Fs(If)28 b(the)g(v)-5 b(ariable)27 b(is)h(de\014ned)f(in)h(an)g(ob)5 b(ject,)27 b(it)h(is)g(quali\014ed)f(with)h Fo(this.)p Fs(.)863 847 y Fj(\017)41 b Fs(Otherwise,)27 b(the)h(v)-5 b(ariable)27 b(is)g(public.)p eop end %%Page: 69 69 TeXDict begin 69 68 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 709 x Fm(Chapter)64 b(6)291 1558 y Fr(Expressions)75 b(and)j(v)-13 b(alues)291 1993 y Fo(omake)36 b Fs(pro)n(vides)i(a)g (full)i(programming-language)34 b(including)39 b(man)n(y)f(system)h (and)f(IO)291 2092 y(functions.)j(The)30 b(language)d(is)i(ob)5 b(ject-orien)n(ted)28 b({)h(ev)n(erything)f(is)h(an)f(ob)5 b(ject,)30 b(including)291 2192 y(the)g(base)f(v)-5 b(alues)29 b(lik)n(e)g(n)n(um)n(b)r(ers)g(and)h(strings.)42 b(Ho)n(w)n(ev)n(er,)28 b(the)i Fo(omake)e Fs(language)g(di\013ers)291 2292 y(from)f(other)g (scripting)g(languages)f(in)h(three)h(main)f(resp)r(ects.)415 2485 y Fj(\017)41 b Fs(Scoping)27 b(is)h(dynamic.)415 2662 y Fj(\017)41 b Fs(Apart)22 b(from)f(IO,)h(the)g(language)e(is)i (en)n(tirely)f(functional)h({)f(there)h(is)f(no)h(assignmen)n(t)498 2761 y(op)r(erator)k(in)i(the)g(language.)415 2938 y Fj(\017)41 b Fs(Ev)-5 b(aluation)29 b(is)h(normally)e(eager)g({)i(that) g(is,)g(expressions)e(are)h(ev)-5 b(aluated)30 b(as)f(so)r(on)498 3038 y(as)e(they)h(are)e(encoun)n(tered.)415 3231 y(T)-7 b(o)37 b(illustrate)h(these)f(features,)j(w)n(e)d(will)h(use)f(the)h Fo(osh)p Fs(\(1\))f(omak)n(e)f(program)g(shell.)291 3331 y(The)28 b Fo(osh)p Fs(\(1\))f(program)g(pro)n(vides)g(a)h(toplo)r(op,) g(where)g(expressions)e(can)i(b)r(e)h(en)n(tered)f(and)291 3430 y(the)37 b(result)f(prin)n(ted.)64 b Fo(osh)p Fs(\(1\))36 b(normally)f(in)n(terprets)h(input)i(as)e(command)g(text)h(to)g(b)r(e) 291 3530 y(executed)28 b(b)n(y)g(the)g(shell,)h(so)f(in)g(man)n(y)g (cases)f(w)n(e)h(will)g(use)g(the)h Fo(value)d Fs(form)i(to)g(ev)-5 b(aluate)291 3630 y(an)27 b(expression)f(directly)-7 b(.)465 3826 y Fo(osh>)42 b(1)465 3925 y(***)g(omake)g(error:)f(File)h (-:)h(line)f(1,)g(characters)e(0-1)i(command)f(not)h(found:)f(1)465 4025 y(osh>)h(value)f(1)465 4124 y(-)i(:)g("1")g(:)g(Sequence)465 4224 y(osh>)f(ls)h(-l)f(omake)465 4324 y(-rwxrwxr-x)83 b(1)43 b(jyh)f(jyh)h(1662189)e(Aug)h(25)h(10:24)e(omake*)291 4479 y @beginspecial @setspecial @endspecial 133 x Fl(6.1)135 b(Dynamic)45 b(scoping)291 4799 y Fs(Dynamic)27 b(scoping)g(means)g (that)h(the)f(v)-5 b(alue)28 b(of)f(a)g(v)-5 b(ariable)27 b(is)g(determined)h(b)n(y)f(the)h(most)291 4899 y(recen)n(t)g(binding)g (of)h(the)g(v)-5 b(ariable)27 b(in)i(scop)r(e)g(at)f(run)n(time.)40 b(Consider)27 b(the)i(follo)n(wing)f(pro-)291 4998 y(gram.)1681 5208 y(69)p eop end %%Page: 70 70 TeXDict begin 70 69 bop 739 282 a @beginspecial @setspecial @endspecial Fs(70)1041 b Fp(CHAPTER)28 b(6.)64 b(EXPRESSIONS)26 b(AND)j(V)-9 b(ALUES)913 515 y Fo(OPTIONS)41 b(=)i(a)g(b)g(c)913 615 y(f\(\))g(=)1044 715 y(println\(OPTIONS)37 b(=)44 b($\(OPTIONS\)\))913 814 y(g\(\))f(=)1044 914 y(OPTIONS)e(=)i(d)g(e)g (f)1044 1013 y(f\(\))863 1210 y Fs(If)26 b Fo(f\(\))e Fs(is)h(called)g(without)g(rede\014ning)g(the)g Fo(OPTIONS)e Fs(v)-5 b(ariable,)24 b(the)i(function)f(should)739 1309 y(prin)n(t)i(the)h(string)f Fo(OPTIONS)41 b(=)i(a)g(b)g(c)p Fs(.)863 1413 y(In)33 b(con)n(trast,)e(the)h(function)h Fo(g\(\))e Fs(rede\014nes)g(the)h Fo(OPTIONS)d Fs(v)-5 b(ariable)31 b(and)h(ev)-5 b(aluates)739 1512 y Fo(f\(\))26 b Fs(in)i(that)g(scop)r(e,)f(whic)n(h)h(no)n(w)f(prin)n(ts)g(the)h (string)f Fo(OPTIONS)41 b(=)i(d)g(e)g(f)p Fs(.)863 1615 y(The)23 b(b)r(o)r(dy)f(of)h Fo(g)f Fs(de\014nes)g(a)g(lo)r(cal)g(scop) r(e)g({)g(the)h(rede\014nition)f(of)g(the)h Fo(OPTIONS)c Fs(v)-5 b(ariable)739 1715 y(is)27 b(lo)r(cal)g(to)h Fo(g)f Fs(and)h(do)r(es)f(not)g(p)r(ersist)h(after)f(the)h(function)g (terminates.)913 1915 y Fo(osh>)42 b(g\(\))913 2014 y(OPTIONS)f(=)i(d)g (e)g(f)913 2114 y(osh>)f(f\(\))913 2214 y(OPTIONS)f(=)i(a)g(b)g(c)863 2410 y Fs(Dynamic)29 b(scoping)f(can)h(b)r(e)g(tremendously)f(helpful)i (for)e(simplifying)h(the)g(co)r(de)g(in)g(a)739 2510 y(pro)5 b(ject.)57 b(F)-7 b(or)33 b(example,)j(the)f Fo(OMakeroot)c Fs(\014le)j(de\014nes)h(a)f(set)g(of)h(functions)g(and)f (rules)739 2609 y(for)24 b(building)i(pro)5 b(jects)23 b(using)i(suc)n(h)g(v)-5 b(ariables)23 b(as)i Fo(CC)p Fs(,)f Fo(CFLAGS)p Fs(,)e(etc.)37 b(Ho)n(w)n(ev)n(er,)23 b(di\013eren)n(t)739 2709 y(parts)32 b(of)g(a)g(pro)5 b(ject)32 b(ma)n(y)g(need)h(di\013eren)n(t)f(v)-5 b(alues)33 b(for)f(these)g(v)-5 b(ariables.)51 b(F)-7 b(or)32 b(example,)739 2808 y(w)n(e)g(ma)n(y)f(ha)n(v)n(e)g(a)g(sub)r(directory)g(called)h Fo(opt)f Fs(where)g(w)n(e)h(w)n(an)n(t)f(to)h(use)g(the)h Fo(-03)d Fs(option,)739 2908 y(and)c(a)h(sub)r(directory)f(called)g Fo(debug)f Fs(where)h(w)n(e)g(w)n(an)n(t)g(to)h(use)g(the)g Fo(-g)f Fs(option.)36 b(Dynamic)739 3008 y(scoping)26 b(allo)n(ws)f(us)i(to)g(rede\014ne)g(these)g(v)-5 b(ariables)26 b(in)h(the)g(parts)f(of)h(the)h(pro)5 b(ject)26 b(without)739 3107 y(ha)n(ving)g(to)i(rede\014ne)f(the)h(functions)g(that)g(use)f (them.)913 3307 y Fo(section)1044 3407 y(CFLAGS)41 b(=)i(-O3)1044 3506 y(.SUBDIRS:)d(opt)913 3606 y(section)1044 3706 y(CFLAGS)h(=)i(-g) 1044 3805 y(.SUBDIRS:)d(debug)863 4002 y Fs(Ho)n(w)n(ev)n(er,)25 b(dynamic)h(scoping)f(also)g(has)g(dra)n(wbac)n(ks.)34 b(First,)27 b(it)f(can)g(b)r(ecome)g(confus-)739 4101 y(ing:)36 b(y)n(ou)27 b(migh)n(t)g(ha)n(v)n(e)f(a)h(v)-5 b(ariable)26 b(that)h(is)g(in)n(tended)h(to)f(b)r(e)h(priv)-5 b(ate,)27 b(but)g(it)h(is)f(acciden-)739 4201 y(tally)33 b(rede\014ned)g(elsewhere.)53 b(F)-7 b(or)32 b(example,)i(y)n(ou)f (migh)n(t)g(ha)n(v)n(e)f(the)h(follo)n(wing)f(co)r(de)h(to)739 4301 y(construct)27 b(searc)n(h)f(paths.)870 4500 y Fo(PATHSEP)40 b(=)k(:)870 4600 y(make-path\(dirs\))37 b(=)1000 4700 y(return)42 b($\(concat)e($\(PATHSEP\),)f($\(dirs\)\))870 4899 y(make-path\(/bin)e(/usr/bin)k(/usr/X11R6/bin\))870 4998 y(-)i(:)g("/bin:/usr/bin:/)o(usr)o(/X)o(11)o(R6/)o(bi)o(n")37 b(:)43 b(String)p eop end %%Page: 71 71 TeXDict begin 71 70 bop 291 282 a @beginspecial @setspecial @endspecial Fp(6.2.)63 b(FUNCTIONAL)29 b(EV)-9 b(ALUA)i(TION)1432 b Fs(71)415 515 y(Ho)n(w)n(ev)n(er,)24 b(elsewhere)g(in)h(the)h(pro)5 b(ject,)25 b(the)g Fo(PATHSEP)e Fs(v)-5 b(ariable)24 b(is)h(rede\014ned)g(as)f(a)h(di-)291 615 y(rectory)16 b(separator)h Fo(/)p Fs(,)i(and)g(y)n(our)e(function)i(suddenly)f (returns)g(the)h(string)e Fo(/bin//usr/bin//us)o(r/)o(X11)o(R6)o(/bi)o (n)p Fs(,)291 715 y(ob)n(viously)26 b(not)h(what)h(y)n(ou)f(w)n(an)n (t.)415 819 y(The)f Fo(private)e Fs(blo)r(c)n(k)i(is)g(used)g(to)g (solv)n(e)f(this)i(problem.)36 b(V)-7 b(ariables)25 b(that)h(are)g (de\014ned)291 918 y(in)38 b(a)g Fo(private)d Fs(blo)r(c)n(k)j(use)g (static)g(scoping)g({)g(that)g(is,)j(the)e(v)-5 b(alue)38 b(of)g(the)h(v)-5 b(ariable)37 b(is)291 1018 y(determined)27 b(b)n(y)h(the)g(most)f(recen)n(t)g(de\014nition)h(in)g(scop)r(e)f(in)h (the)g(source)e(text.)421 1223 y Fo(private)552 1323 y(PATHSEP)41 b(=)i(:)421 1422 y(make-path\(dirs\))38 b(=)552 1522 y(return)j($\(concat)f($\(PATHSEP\),)g($\(dirs\)\))421 1721 y(PATHSEP)h(=)i(/)421 1821 y(make-path\(/bin)38 b(/usr/bin)i(/usr/X11R6/bin\))421 1920 y(-)k(:)f("/bin:/usr/bin:)o(/us) o(r/)o(X11)o(R6)o(/bi)o(n")37 b(:)43 b(String)291 2083 y @beginspecial @setspecial @endspecial 136 x Fl(6.2)135 b(F)-11 b(unctional)45 b(ev)-7 b(aluation)291 2409 y Fs(Apart)27 b(from)g(I/O,)g Fo(omake)f Fs(programs)f(are)i(en)n(tirely) g(functional.)37 b(This)27 b(has)g(t)n(w)n(o)g(parts:)415 2610 y Fj(\017)41 b Fs(There)27 b(is)h(no)f(assignmen)n(t)g(op)r (erator.)415 2794 y Fj(\017)41 b Fs(F)-7 b(unctions)24 b(are)e(v)-5 b(alues,)24 b(and)f(ma)n(y)f(b)r(e)i(passed)e(as)h (argumen)n(ts,)f(and)h(returned)g(from)498 2893 y(functions)28 b(just)g(lik)n(e)f(an)n(y)g(other)g(v)-5 b(alue.)415 3094 y(The)38 b(second)f(item)i(is)f(straigh)n(tforw)n(ard.)64 b(F)-7 b(or)38 b(example,)i(the)e(follo)n(wing)f(program)291 3193 y(de\014nes)27 b(an)g(incremen)n(t)h(function)g(b)n(y)f(returning) g(a)g(function)i(v)-5 b(alue.)421 3399 y Fo(incby\(n\))41 b(=)552 3498 y(g\(i\))h(=)683 3598 y(return)f($\(add)g($\(i\),)h ($\(n\)\))552 3697 y(return)f($\(g\))421 3897 y(f)j(=)f($\(incby)d(5\)) 421 4096 y(value)i($\(f)g(3\))421 4196 y(-)i(:)f(8)g(:)g(Int)415 4396 y Fs(The)22 b(\014rst)f(item)h(ma)n(y)f(b)r(e)h(the)g(most)g (confusing)f(initially)-7 b(.)35 b(Without)23 b(assignmen)n(t,)f(ho)n (w)291 4496 y(is)29 b(it)g(p)r(ossible)g(for)g(a)g(subpro)5 b(ject)29 b(to)g(mo)r(dify)h(the)f(global)f(b)r(eha)n(vior)g(of)i(the)f (pro)5 b(ject?)42 b(In)291 4595 y(fact,)35 b(the)e(omission)g(is)g(in)n (ten)n(tional.)54 b(Build)34 b(scripts)f(are)f(m)n(uc)n(h)h(easier)f (to)i(write)f(when)291 4695 y(there)27 b(is)g(a)h(guaran)n(tee)d(that)j (subpro)5 b(jects)27 b(do)g(not)h(in)n(terfere)f(with)h(one)f(another.) 415 4799 y(Ho)n(w)n(ev)n(er,)d(there)h(are)f(times)i(when)f(a)g(subpro) 5 b(ject)24 b(needs)h(to)g(propagate)f(information)291 4899 y(bac)n(k)19 b(to)i(its)f(paren)n(t)g(ob)5 b(ject,)22 b(or)e(when)g(an)h(inner)f(scop)r(e)g(needs)h(to)f(propagate)f (information)291 4998 y(bac)n(k)26 b(to)i(the)g(outer)f(scop)r(e.)p eop end %%Page: 72 72 TeXDict begin 72 71 bop 739 282 a @beginspecial @setspecial @endspecial Fs(72)1041 b Fp(CHAPTER)28 b(6.)64 b(EXPRESSIONS)26 b(AND)j(V)-9 b(ALUES)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(6.3)135 b(Exp)t(orting)46 b(the)f(en)l(vironmen)l (t)739 703 y Fs(The)22 b Fo(export)d Fs(directiv)n(e)i(can)h(b)r(e)g (used)g(to)g(propagate)e(all)h(or)g(part)h(of)f(an)h(inner)g(scop)r(e)f (bac)n(k)739 803 y(to)j(its)h(paren)n(t.)35 b(If)24 b(used)h(without)f (argumen)n(ts,)g(the)h(en)n(tire)e(scop)r(e)h(is)g(propagated)f(bac)n (k)g(to)739 903 y(the)31 b(paren)n(t;)h(otherwise)e(the)i(argumen)n(ts) d(sp)r(ecify)j(whic)n(h)f(part)f(of)h(the)g(en)n(vironmen)n(t)f(to)739 1002 y(propagate.)40 b(The)30 b(most)f(common)g(usage)f(is)h(to)h(exp)r (ort)f(some)f(or)h(all)g(of)g(the)h(de\014nitions)739 1102 y(in)i(a)f(conditional)g(blo)r(c)n(k.)48 b(In)32 b(the)g(follo)n(wing)e(example,)i(the)g(v)-5 b(ariable)31 b Fo(B)g Fs(is)g(b)r(ound)h(to)g(2)739 1202 y(after)27 b(the)h(conditional.)36 b(The)28 b Fo(A)f Fs(v)-5 b(ariable)27 b(is)g(not)h(rede\014ned.)913 1401 y Fo(if)43 b($\(test\))1044 1501 y(A)g(=)g(1)1044 1601 y(B)g(=)g($\(add)f($\(A\),)f(1\))1044 1700 y(export)g(B)913 1800 y(else)1044 1899 y(B)i(=)g(2)1044 1999 y(export)863 2195 y Fs(If)31 b(the)g Fo(export)d Fs(directiv)n(e)i(is)g(used)g(without)h(an)f(argumen)n(t,)g(all)g(of)g (the)h(follo)n(wing)e(is)739 2295 y(exp)r(orted:)863 2471 y Fj(\017)41 b Fs(The)34 b(v)-5 b(alues)32 b(of)h(all)g(the)g (dynamically)f(scop)r(ed)h(v)-5 b(ariables)32 b(\(as)h(describ)r(ed)f (in)i(Sec-)946 2571 y(tion)28 b @beginspecial @setspecial @endspecial(5.5)p @beginspecial @setspecial @endspecial(\).)863 2751 y Fj(\017)41 b Fs(The)28 b(curren)n(t)f(w)n(orking)f(directory)-7 b(.)863 2930 y Fj(\017)41 b Fs(The)28 b(curren)n(t)f(Unix)h(en)n (vironmen)n(t.)863 3110 y Fj(\017)41 b Fs(The)19 b(curren)n(t)e (implicit)j(rules)d(and)i(implicit)g(dep)r(endencies)f(\(see)h(also)e (Section)h @beginspecial @setspecial @endspecial(8.11.1)p @beginspecial @setspecial @endspecial(\).)863 3290 y Fj(\017)41 b Fs(The)19 b(curren)n(t)e(set)i(of)f(\\phon)n(y")f(target)g (declarations)g(\(see)h(Sections)h @beginspecial @setspecial @endspecial(8.10)p @beginspecial @setspecial @endspecial 17 w(and)f @beginspecial @setspecial @endspecial(8.11.3)p @beginspecial @setspecial @endspecial(\).)863 3466 y(If)31 b(the)g Fo(export)c Fs(directiv)n(e)j(is)g(used)g(with)h(an)e(argumen)n (t,)h(the)h(argumen)n(t)e(expression)739 3565 y(is)e(ev)-5 b(aluated)28 b(and)f(the)h(resulting)f(v)-5 b(alue)28 b(is)f(in)n(terpreted)g(as)g(follo)n(ws:)863 3742 y Fj(\017)41 b Fs(If)28 b(the)g(v)-5 b(alue)28 b(is)f(empt)n(y)-7 b(,)28 b(ev)n(erything)f(is)g(exp)r(orted,)g(as)g(describ)r(ed)h(ab)r (o)n(v)n(e.)863 3921 y Fj(\017)41 b Fs(If)26 b(the)g(v)-5 b(alue)26 b(represen)n(ts)e(a)h(en)n(vironmen)n(t)f(\(or)h(a)g(partial) g(en)n(vironmen)n(t\))g(captured)946 4021 y(using)g(the)g @beginspecial @setspecial @endspecial Fo(export)d Fs(function)p @beginspecial @setspecial @endspecial(,)k(then)f(the)g(corresp)r (onding)e(en)n(vironmen)n(t)g(or)h(partial)946 4121 y(en)n(vironmen)n (t)j(is)h(exp)r(orted.)863 4300 y Fj(\017)41 b Fs(Otherwise,)25 b(the)g(v)-5 b(alue)25 b(m)n(ust)g(b)r(e)h(a)e(sequence)g(of)h(strings) f(sp)r(ecifying)h(whic)n(h)g(items)946 4400 y(are)i(to)h(b)r(e)g (propagated)d(bac)n(k.)36 b(The)28 b(follo)n(wing)f(strings)f(ha)n(v)n (e)h(sp)r(ecial)g(meaning:)1040 4580 y Fq({)41 b Fo(.RULE)26 b Fs(|)h(implicit)i(rules)e(and)g(implicit)i(dep)r(endencies.)1040 4719 y Fq({)41 b Fo(.PHONY)25 b Fs(|)j(the)g(set)g(of)f(\\phon)n(y")f (target)h(declarations.)946 4899 y(All)f(other)f(strings)f(are)h(in)n (terpreted)g(as)f(names)h(of)h(the)f(v)-5 b(ariables)24 b(that)i(need)g(to)f(b)r(e)946 4998 y(propagated)h(bac)n(k.)p eop end %%Page: 73 73 TeXDict begin 73 72 bop 291 282 a @beginspecial @setspecial @endspecial Fp(6.3.)63 b(EXPOR)-7 b(TING)27 b(THE)h(ENVIR)n(ONMENT)1190 b Fs(73)415 515 y(F)-7 b(or)34 b(example,)i(in)e(the)h(follo)n(wing)e (\(somewhat)h(arti\014cial\))g(example,)h(the)g(v)-5 b(ariables)291 615 y Fo(A)28 b Fs(and)h Fo(B)g Fs(will)h(b)r(e)f(exp)r (orted,)g(and)g(the)h(implicit)g(rule)f(will)g(remain)g(in)g(the)h(en)n (vironmen)n(t)291 715 y(after)19 b(the)g(section)g(ends,)i(but)f(the)g (v)-5 b(ariable)19 b Fo(TMP)f Fs(and)h(the)h(target)e Fo(tmp_phony)e Fs(will)k(remain)291 814 y(unc)n(hanged.)291 990 y Fo(section)421 1089 y(A)44 b(=)f(1)421 1189 y(B)h(=)f(2)421 1288 y(TMP)g(=)g($\(add)e($\(A\),)h($\(B\)\))421 1488 y(.PHONY:)f(tmp_phony)421 1687 y(tmp_phony:)552 1787 y(prepare_foo)421 1986 y(\045.foo:)g(\045.bar)h(tmp_phony)552 2086 y(compute_foo)d($\(TMP\))i($<)i($@)421 2185 y(export)e(A)j(B)f (.RULE)291 2319 y @beginspecial @setspecial @endspecial 97 x Fk(6.3.1)112 b(Exp)s(ort)37 b(regions)291 2570 y Fi(This)31 b(fe)l(atur)l(e)e(was)h(intr)l(o)l(duc)l(e)l(d)g(in)g (version)h(0.9.8.5.)415 2669 y Fs(The)38 b Fo(export)d Fs(directiv)n(e)j(do)r(es)f(not)h(need)g(to)g(o)r(ccur)f(at)h(the)g (end)g(of)g(a)f(blo)r(c)n(k.)67 b(An)291 2769 y(exp)r(ort)32 b(is)i(v)-5 b(alid)33 b(from)g(the)h(p)r(oin)n(t)g(where)e(it)i(is)f (sp)r(eci\014ed)h(to)f(the)h(end)g(of)f(the)h(blo)r(c)n(k)f(in)291 2868 y(whic)n(h)e(it)h(is)g(con)n(tained.)48 b(In)32 b(other)f(w)n(ords,)h(the)g(exp)r(ort)f(is)g(used)h(in)g(the)g(program) e(that)291 2968 y(follo)n(ws)i(it.)54 b(This)33 b(can)g(b)r(e)h(esp)r (ecially)f(useful)h(for)e(reducing)h(the)h(amoun)n(t)e(of)i(co)r(de)f (y)n(ou)291 3068 y(ha)n(v)n(e)c(to)h(write.)45 b(In)30 b(the)h(follo)n(wing)e(example,)i(the)g(v)-5 b(ariable)29 b Fo(CFLAGS)f Fs(is)i(exp)r(orted)g(from)291 3167 y(the)e(b)r(oth)g (branc)n(hes)e(of)h(the)h(conditional.)465 3343 y Fo(export)41 b(CFLAGS)465 3442 y(if)i($\(equal)d($\(OSTYPE\),)g(Win32\))639 3542 y(CFLAGS)h(+=)i(/DWIN32)465 3642 y(else)639 3741 y(CFLAGS)e(+=)i(-UWIN32)291 3856 y @beginspecial @setspecial @endspecial 116 x Fk(6.3.2)112 b(Returning)37 b(v)-6 b(alues)39 b(from)f(exp)s(orted)g(regions)291 4126 y Fi(This)31 b(fe)l(atur)l(e)e(was)h(intr)l(o)l(duc)l(e)l(d)g(in)g (version)h(0.9.8.5.)415 4225 y Fs(The)23 b(use)h(of)f(exp)r(ort)g(do)r (es)g(not)g(a\013ect)g(the)h(v)-5 b(alue)23 b(returned)g(b)n(y)g(a)g (blo)r(c)n(k.)35 b(The)23 b(v)-5 b(alue)23 b(is)291 4325 y(computed)j(as)f(usual,)h(as)g(the)g(v)-5 b(alue)26 b(of)g(the)h(last)e(statemen)n(t)h(in)h(the)f(blo)r(c)n(k,)g(ignoring)f (the)291 4425 y(exp)r(ort.)41 b(F)-7 b(or)28 b(example,)i(supp)r(ose)f (w)n(e)f(wish)i(to)f(implemen)n(t)h(a)e(table)h(that)h(maps)f(strings) 291 4524 y(to)e(unique)h(in)n(tegers.)36 b(Consider)26 b(the)i(follo)n(wing)f(program.)465 4700 y Fo(#)43 b(Empty)f(map)465 4799 y(table)f(=)j($\(Map\))465 4998 y(#)f(Add)f(an)h(entry)f(to)g(the) h(table)p eop end %%Page: 74 74 TeXDict begin 74 73 bop 739 282 a @beginspecial @setspecial @endspecial Fs(74)1041 b Fp(CHAPTER)28 b(6.)64 b(EXPRESSIONS)26 b(AND)j(V)-9 b(ALUES)913 515 y Fo(intern\(s\))40 b(=)1088 615 y(export)1088 715 y(if)i($\(table.mem)d($s\))1262 814 y(table.find\($s\))1088 914 y(else)1262 1013 y(private.i)h(=)j ($\(table.length\))1262 1113 y(table)e(=)j($\(table.add)39 b($s,)j($i\))1262 1213 y(value)f($i)913 1412 y(intern\(foo\))913 1512 y(intern\(boo\))913 1611 y(intern\(moo\))913 1711 y(#)i(Prints)f("boo)f(=)j(1")913 1810 y(println\($"boo)38 b(=)44 b($\(intern)c(boo\)"\))739 1970 y Fs(Giv)n(en)21 b(a)g(string)g Fo(s)p Fs(,)h(the)g(function)g Fo(intern)d Fs(returns)h(either)i(the)f(v)-5 b(alue)22 b(already)e(asso)r(ciated) 739 2069 y(with)27 b Fo(s)p Fs(,)f(or)f(assigns)g(a)h(new)g(v)-5 b(alue.)36 b(In)27 b(the)f(latter)g(case,)g(the)g(table)g(is)g(up)r (dated)h(with)g(the)739 2169 y(new)c(v)-5 b(alue.)35 b(The)22 b Fo(export)f Fs(at)h(the)h(b)r(eginning)g(of)f(the)h (function)g(means)f(that)h(the)g(v)-5 b(ariable)739 2269 y Fo(table)30 b Fs(is)i(to)g(b)r(e)g(exp)r(orted.)50 b(The)33 b(bindings)f(for)f Fo(s)h Fs(and)g Fo(i)g Fs(are)f(not)h(exp)r (orted,)h(b)r(ecause)739 2368 y(they)28 b(are)e(priv)-5 b(ate.)863 2468 y(Ev)g(aluation)28 b(in)i Fo(omake)d Fs(is)i(eager.)40 b(That)29 b(is,)g(expressions)e(are)h(ev)-5 b(aluated)29 b(as)g(so)r(on)f(as)739 2568 y(they)c(are)f(encoun)n (tered)h(b)n(y)f(the)i(ev)-5 b(aluator.)34 b(One)24 b(e\013ect)h(of)f (this)g(is)g(that)g(the)h(righ)n(t-hand-)739 2667 y(side)i(of)h(a)f(v) -5 b(ariable)27 b(de\014nition)h(is)f(expanded)g(when)h(the)g(v)-5 b(ariable)27 b(is)g(de\014ned.)913 2827 y Fo(osh>)42 b(A)h(=)h(1)913 2926 y(-)f(:)h("1")913 3026 y(osh>)e(A)h(=)h ($\(A\)$\(A\))913 3126 y(-)f(:)h("11")863 3285 y Fs(In)19 b(the)g(second)f(de\014nition,)j Fo(A)43 b(=)g($\(A\)$\(A\))p Fs(,)15 b(the)k(righ)n(t-hand-side)e(is)h(ev)-5 b(aluated)18 b(\014rst,)739 3385 y(pro)r(ducing)29 b(the)i(sequence)e Fo(11)p Fs(.)44 b(Then)30 b(the)h(v)-5 b(ariable)29 b Fo(A)g Fs(is)h Fi(r)l(e)l(de\014ne)l(d)39 b Fs(as)30 b(the)g(new)g(v)-5 b(alue.)739 3484 y(When)25 b(com)n(bined)f(with)h (dynamic)f(scoping,)g(this)h(has)f(man)n(y)g(of)g(the)h(same)e(prop)r (erties)h(as)739 3584 y(con)n(v)n(en)n(tional)i(imp)r(erativ)n(e)h (programming.)913 3743 y Fo(osh>)42 b(A)h(=)h(1)913 3843 y(-)f(:)h("1")913 3942 y(osh>)e(printA\(\))e(=)1088 4042 y(println\($"A)f(=)k($A"\))913 4142 y(osh>)f(A)h(=)h($\(A\)$\(A\))913 4241 y(-)f(:)h("11")913 4341 y(osh>)e(printA\(\))913 4441 y(11)863 4600 y Fs(In)31 b(this)h(example,)f(the)g(prin)n(t)g (function)g(is)g(de\014ned)g(in)g(the)g(scop)r(e)f(of)h Fo(A)p Fs(.)g(When)g(it)g(is)739 4700 y(called)c(on)g(the)h(last)g (line,)g(the)g(dynamic)f(v)-5 b(alue)27 b(of)h Fo(A)f Fs(is)h Fo(11)p Fs(,)f(whic)n(h)g(is)h(what)f(is)h(prin)n(ted.)863 4799 y(Ho)n(w)n(ev)n(er,)d(dynamic)h(scoping)g(and)g(imp)r(erativ)n(e)g (programming)e(should)i(not)g(b)r(e)h(con-)739 4899 y(fused.)37 b(The)25 b(follo)n(wing)g(example)g(illustrates)h(a)f(di\013erence.)36 b(The)26 b(second)f Fo(printA)f Fs(is)h(not)739 4998 y(in)g(the)g(scop)r(e)f(of)h(the)g(de\014nition)g Fo(A)43 b(=)g(x$\(A\)$\(A\)x)p Fs(,)21 b(so)j(it)h(prin)n(ts)f(the)h(original)e (v)-5 b(alue,)26 b Fo(1)p Fs(.)p eop end %%Page: 75 75 TeXDict begin 75 74 bop 291 282 a @beginspecial @setspecial @endspecial Fp(6.4.)63 b(OBJECTS)2198 b Fs(75)465 515 y Fo(osh>)42 b(A)h(=)g(1)465 615 y(-)g(:)g("1")465 715 y(osh>)f(printA\(\))e(=)639 814 y(println\($"A)f(=)k($A"\))465 914 y(osh>)f(section)857 1013 y(A)h(=)h(x$\(A\)$\(A\)x)857 1113 y(printA\(\))465 1213 y(x11x)465 1312 y(osh>)e(printA\(\))465 1412 y(1)415 1561 y Fs(See)25 b(also)f(Section)h @beginspecial @setspecial @endspecial(7.5)p @beginspecial @setspecial @endspecial 24 w(for)f(further)h(w)n(a)n(ys)e(to)i(con)n(trol)f(the)h (ev)-5 b(aluation)24 b(order)g(through)291 1660 y(the)k(use)f(of)h (\\lazy")e(expressions.)291 1796 y @beginspecial @setspecial @endspecial 133 x Fl(6.4)135 b(Ob)7 b(jects)291 2111 y Fo(omake)29 b Fs(is)j(an)g(ob)5 b(ject-orien)n(ted)30 b(language.)48 b(Ev)n(erything)30 b(is)h(an)h(ob)5 b(ject,)33 b(including)f(base)291 2210 y(v)-5 b(alues)25 b(lik)n(e)g(n)n(um)n(b)r (ers)f(and)i(strings.)35 b(In)25 b(man)n(y)g(pro)5 b(jects,)25 b(this)h(ma)n(y)e(not)i(b)r(e)f(so)g(apparen)n(t)291 2310 y(b)r(ecause)j(most)h(ev)-5 b(aluation)29 b(o)r(ccurs)f(in)i(the)g (default)f(toplev)n(el)g(ob)5 b(ject,)29 b(the)h Fo(Pervasives)291 2410 y Fs(ob)5 b(ject,)27 b(and)g(few)h(other)f(ob)5 b(jects)27 b(are)g(ev)n(er)g(de\014ned.)415 2509 y(Ho)n(w)n(ev)n(er,)22 b(ob)5 b(jects)21 b(pro)n(vide)g(additional)h(means)g(for)g(data)f (structuring,)i(and)f(in)g(some)291 2609 y(cases)k(judicious)i(use)f (of)h(ob)5 b(jects)27 b(ma)n(y)g(simplify)h(y)n(our)e(pro)5 b(ject.)415 2709 y(Ob)g(jects)32 b(are)f(de\014ned)h(with)g(the)h (follo)n(wing)e(syn)n(tax.)49 b(This)32 b(de\014nes)g Fo(name)e Fs(to)i(b)r(e)g(an)291 2808 y(ob)5 b(ject)27 b(with)h(sev)n(eral)e(metho)r(ds)i(an)f(v)-5 b(alues.)465 2957 y Fo(name.)41 b(=)915 b(#)44 b(+=)e(may)h(be)f(used)g(as)h(well) 596 3057 y(extends)d(parent-object)169 b(#)44 b(optional)596 3156 y(class)d(class-name)388 b(#)44 b(optional)596 3355 y(#)f(Fields)596 3455 y(X)g(=)g(value)596 3555 y(Y)g(=)g(value)596 3754 y(#)g(Methods)596 3854 y(f\(args\))d(=)726 3953 y(body)596 4053 y(g\(arg\))h(=)726 4152 y(body)415 4301 y Fs(An)35 b Fo(extends)d Fs(directiv)n(e)j(sp)r(eci\014es)f(that)h (this)h(ob)5 b(ject)34 b(inherits)h(from)f(the)i(sp)r(eci\014ed)291 4401 y Fo(parent-object)p Fs(.)53 b(The)35 b(ob)5 b(ject)34 b(ma)n(y)g(ha)n(v)n(e)g(an)n(y)g(n)n(um)n(b)r(er)g(of)h Fo(extends)d Fs(directiv)n(es.)57 b(If)291 4500 y(there)27 b(is)g(more)g(than)h(on)f Fo(extends)e Fs(directiv)n(e,)i(then)h (\014elds)f(and)g(metho)r(ds)h(are)f(inherited)291 4600 y(from)22 b(all)g(paren)n(t)g(ob)5 b(jects.)35 b(If)23 b(there)g(are)f(name)g(con\015icts,)i(the)f(later)f(de\014nitions)h(o)n (v)n(erride)291 4700 y(the)28 b(earlier)e(de\014nitions.)415 4799 y(The)f Fo(class)e Fs(directiv)n(e)h(is)h(optional.)35 b(If)25 b(sp)r(eci\014ed,)h(it)g(de\014nes)e(a)h(name)g(for)f(the)h(ob) 5 b(ject)291 4899 y(that)37 b(can)g(b)r(e)g(used)g(in)h Fo(instanceof)33 b Fs(op)r(erations,)38 b(as)f(w)n(ell)g(as)f Fo(::)h Fs(scoping)f(directiv)n(es)291 4998 y(discussed)27 b(b)r(elo)n(w.)p eop end %%Page: 76 76 TeXDict begin 76 75 bop 739 282 a @beginspecial @setspecial @endspecial Fs(76)1041 b Fp(CHAPTER)28 b(6.)64 b(EXPRESSIONS)26 b(AND)j(V)-9 b(ALUES)863 515 y Fs(The)40 b(b)r(o)r(dy)f(of)g(the)h(ob)5 b(ject)39 b(is)g(actually)f(an)h(arbitrary)e(program.)69 b(The)40 b(v)-5 b(ariables)739 615 y(de\014ned)26 b(in)g(the)g(b)r(o)r (dy)g(of)f(the)h(ob)5 b(ject)26 b(b)r(ecome)f(its)h(\014elds,)g(and)g (the)g(functions)g(de\014ned)g(in)739 715 y(the)i(b)r(o)r(dy)g(b)r (ecome)f(its)h(metho)r(ds.)739 850 y @beginspecial @setspecial @endspecial 133 x Fl(6.5)135 b(Field)45 b(and)g(metho)t(d)g(calls)739 1165 y Fs(The)34 b(\014elds)f(and)g(metho)r(ds)h(of)g(an)f(ob)5 b(ject)33 b(are)g(named)g(using)h Fo(object.name)29 b Fs(notation.)739 1265 y(F)-7 b(or)27 b(example,)g(let's)h(de\014ne)g(a) f(one-dimensional)f(p)r(oin)n(t)i(v)-5 b(alue.)870 1412 y Fo(Point.)41 b(=)1000 1512 y(class)h(Point)1000 1711 y(#)i(Default)c(value)1000 1810 y(x)k(=)f($\(int)e(0\))1000 2010 y(#)j(Create)d(a)i(new)f(point)1000 2109 y(new\(x\))g(=)1131 2209 y(x)h(=)h($\(int)d($\(x\)\))1131 2309 y(return)g($\(this\))1000 2508 y(#)j(Move)e(by)g(one)1000 2607 y(move\(\))g(=)1131 2707 y(x)h(=)h($\(add)d($\(x\),)h(1\))1131 2807 y(return)f($\(this\)) 870 3006 y(osh>)h(p1)g(=)i($\(Point.new)39 b(15\))870 3106 y(osh>)j(value)f($\(p1.x\))870 3205 y(-)i(:)g(15)g(:)g(Int)870 3404 y(osh>)f(p2)g(=)i($\(p1.move\))870 3504 y(osh>)e(value)f ($\(p2.x\))870 3604 y(-)i(:)g(16)g(:)g(Int)863 3751 y Fs(The)c Fo($\(this\))e Fs(v)-5 b(ariable)38 b(alw)n(a)n(ys)f(represen) n(ts)g(the)j(curren)n(t)e(ob)5 b(ject.)70 b(The)39 b(expres-)739 3851 y(sion)31 b Fo($\(p1.x\))d Fs(fetc)n(hes)k(the)f(v)-5 b(alue)32 b(of)f(the)h Fo(x)f Fs(\014eld)g(in)h(the)g Fo(p1)e Fs(ob)5 b(ject.)48 b(The)32 b(expression)739 3950 y Fo($\(Point.new)39 b(15\))d Fs(represen)n(ts)g(a)h(metho)r(d)h (call)f(to)g(the)h Fo(new)e Fs(metho)r(d)i(of)f(the)h Fo(Point)739 4050 y Fs(ob)5 b(ject,)30 b(whic)n(h)f(returns)g(a)f(new)i (ob)5 b(ject)29 b(with)h(15)e(as)h(its)h(initial)f(v)-5 b(alue.)42 b(The)30 b(expression)739 4150 y Fo($\(p1.move\))23 b Fs(is)28 b(also)e(a)i(metho)r(d)g(call,)f(whic)n(h)h(returns)e(a)i (new)f(ob)5 b(ject)28 b(at)f(p)r(osition)g(16.)863 4249 y(Note)h(that)g(ob)5 b(jects)27 b(are)g(functional)g(|)h(it)g(is)f(not) h(p)r(ossible)f(to)h(mo)r(dify)g(the)g(\014elds)f(or)739 4349 y(metho)r(ds)d(of)h(an)f(existing)g(ob)5 b(ject)24 b(in)g(place.)36 b(Th)n(us,)24 b(the)h Fo(new)e Fs(and)h Fo(move)f Fs(metho)r(ds)i(return)739 4449 y(new)j(ob)5 b(jects.)739 4584 y @beginspecial @setspecial @endspecial 133 x Fl(6.6)135 b(Metho)t(d)45 b(o)l(v)l(erride)739 4899 y Fs(Supp)r(ose)29 b(w)n(e)h(wish)f(to)g(create)g(a)g(new)h(ob)5 b(ject)29 b(that)h(mo)n(v)n(es)e(b)n(y)h(2)g(units,)i(instead)e(of)h (just)739 4998 y(1.)36 b(W)-7 b(e)28 b(can)g(do)f(it)h(b)n(y)f(o)n(v)n (erriding)e(the)j Fo(move)e Fs(metho)r(d.)p eop end %%Page: 77 77 TeXDict begin 77 76 bop 291 282 a @beginspecial @setspecial @endspecial Fp(6.7.)63 b(SUPER)27 b(CALLS)2006 b Fs(77)421 515 y Fo(Point2.)41 b(=)552 615 y(extends)g($\(Point\))552 814 y(#)i(Override)e(the)h(move)g(method)552 914 y(move\(\))f(=)683 1013 y(x)i(=)g($\(add)f($\(x\),)f(2\))683 1113 y(return)g($\(this\))421 1312 y(osh>)h(p2)h(=)g($\(Point2.new)c(15\))421 1412 y(osh>)j(p3)h(=)g($\(p2.move\))421 1512 y(osh>)f(value)g($\(p3.x\))421 1611 y(-)i(:)f(17)f(:)i(Int)415 1794 y Fs(Ho)n(w)n(ev)n(er,)26 b(b)n(y)h(doing)g(this,)h(w)n(e)f(ha)n(v)n(e)g(completely)g(replaced)g (the)h(old)f Fo(move)f Fs(metho)r(d.)291 1935 y @beginspecial @setspecial @endspecial 133 x Fl(6.7)135 b(Sup)t(er)44 b(calls)291 2250 y Fs(Supp)r(ose)25 b(w)n(e)g(wish)h(to)f(de\014ne)h(a) f(new)h Fo(move)e Fs(metho)r(d)i(that)g(just)g(calls)f(the)h(old)f(one) g(t)n(wice.)291 2350 y(W)-7 b(e)34 b(can)g(refer)g(to)g(the)g(old)g (de\014nition)h(of)f(mo)n(v)n(e)f(using)h(a)g(sup)r(er)g(call,)i(whic)n (h)e(uses)g(the)291 2449 y(notation)25 b Fo($\(classname::na)o(me)37 b(\))p Fs(.)c(The)26 b Fo(classname)c Fs(should)j(b)r(e)h(the)g (name)f(of)291 2549 y(the)31 b(sup)r(erclass,)g(and)g Fo(name)f Fs(the)h(\014eld)h(or)e(metho)r(d)i(to)f(b)r(e)h(referenced.) 46 b(An)32 b(alternativ)n(e)291 2649 y(w)n(a)n(y)26 b(of)h(de\014ning)h (the)g Fo(Point2)d Fs(ob)5 b(ject)28 b(is)f(then)h(as)f(follo)n(ws.)421 2831 y Fo(Point2.)41 b(=)552 2931 y(extends)g($\(Point\))552 3130 y(#)i(Call)f(the)h(old)f(method)f(twice)552 3230 y(move\(\))g(=)683 3330 y(this)h(=)h($\(Point::move\))683 3429 y(return)e($\(Point::move\))415 3612 y Fs(Note)26 b(that)g(the)g(\014rst)g(call)f(to)h Fo($\(Point::move\))20 b Fs(rede\014nes)25 b(the)i(curren)n(t)e(ob)5 b(ject)25 b(\(the)291 3711 y Fo(this)37 b Fs(v)-5 b(ariable\).)71 b(This)40 b(is)f(b)r(ecause)g(the)g(metho)r(d)h(returns)f(a)f(new)i(ob) 5 b(ject,)42 b(whic)n(h)d(is)291 3811 y(re-used)26 b(for)h(the)h (second)f(call.)p eop end %%Page: 78 78 TeXDict begin 78 77 bop 739 282 a @beginspecial @setspecial @endspecial Fs(78)1041 b Fp(CHAPTER)28 b(6.)64 b(EXPRESSIONS)26 b(AND)j(V)-9 b(ALUES)p eop end %%Page: 79 79 TeXDict begin 79 78 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(7)291 1553 y Fr(Additional)77 b(language)291 1802 y(examples)291 2234 y Fs(In)37 b(this)h(section,)i(w)n(e'll)e (explore)e(the)i(core)f(language)f(through)h(a)g(series)g(of)h (examples)291 2333 y(\(examples)27 b(of)g(the)h(build)g(system)g(are)e (the)i(topic)g(of)g(the)g(Chapter)f @beginspecial @setspecial @endspecial(3)p @beginspecial @setspecial @endspecial(\).)415 2433 y(F)-7 b(or)36 b(most)g(of)h(these)f(examples,)i(w)n(e'll)f(use)f (the)h Fo(osh)e Fs(command)h(in)n(terpreter.)63 b(F)-7 b(or)291 2533 y(simplicit)n(y)g(,)27 b(the)h(v)-5 b(alues)28 b(prin)n(ted)f(b)n(y)g Fo(osh)g Fs(ha)n(v)n(e)f(b)r(een)i(abbreviated.) 291 2674 y @beginspecial @setspecial @endspecial 133 x Fl(7.1)135 b(Strings)45 b(and)g(arra)l(ys)291 2989 y Fs(The)24 b(basic)h(OMak)n(e)e(v)-5 b(alues)24 b(are)g(strings,)h (sequences,)f(and)h(arra)n(ys)d(of)j(v)-5 b(alues.)35 b(Sequences)291 3089 y(are)h(lik)n(e)g(arra)n(ys)f(of)i(v)-5 b(alues)36 b(separated)g(b)n(y)h(whitespace;)k(the)d(sequences)e(are)g (split)h(on)291 3188 y(demand)27 b(b)n(y)h(functions)f(that)h(exp)r (ect)g(arra)n(ys.)421 3371 y Fo(osh>)42 b(X)h(=)h(1)f(2)421 3471 y(-)h(:)f("1)f(2")h(:)g(Sequence)421 3570 y(osh>)f(addsuffix\(.c,) c($X\))421 3670 y(-)44 b(:)f()g(:)h(Array)415 3853 y Fs(Sometimes)23 b(y)n(ou)f(w)n(an)n(t)h(to)f(de\014ne)i(an)e (arra)n(y)f(explicitly)-7 b(.)36 b(F)-7 b(or)22 b(this,)i(use)f(the)g Fo([])g Fs(brac)n(k-)291 3952 y(ets)k(after)g(the)h(v)-5 b(ariable)27 b(name,)g(and)h(list)g(eac)n(h)f(arra)n(y)e(en)n(try)i(on) g(a)g(single)g(inden)n(ted)h(line.)421 4135 y Fo(osh>)42 b(A[])h(=)770 4235 y(Hello)f(world)770 4334 y($\(getenv)e(HOME\))421 4434 y(-)k(:)f()e(:)k(Array)415 4617 y Fs(One)29 b(cen)n(tral)f(prop)r(ert)n(y)g(of)h(arra)n(ys)e(is)i (that)h(whitespace)e(in)i(the)f(elemen)n(ts)g(is)h(signi\014-)291 4716 y(can)n(t.)36 b(This)28 b(can)f(b)r(e)h(useful,)g(esp)r(ecially)f (for)g(\014lenames)g(that)h(con)n(tain)f(whitespace.)421 4899 y Fo(#)44 b(List)d(the)i(current)d(files)i(in)h(the)f(directory) 465 4998 y(osh>)g(ls)h(-Q)1681 5208 y Fs(79)p eop end %%Page: 80 80 TeXDict begin 80 79 bop 739 282 a @beginspecial @setspecial @endspecial Fs(80)646 b Fp(CHAPTER)27 b(7.)64 b(ADDITIONAL)29 b(LANGUA)n(GE)f(EXAMPLES)913 515 y Fo("fee")85 b("fi")h("foo")f("fum") 913 615 y(osh>)42 b(NAME[])f(=)1262 715 y(Hello)g(world)913 814 y(-)i(:)h()f(:)k(Array)913 914 y(osh>)e(touch)g($\(NAME\))913 1013 y(osh>)g(ls)h(-Q)913 1113 y("fee")85 b("fi")h("foo")f("fum")g("Hello)41 b(world")739 1236 y @beginspecial @setspecial @endspecial 149 x Fl(7.2)135 b(Quoted)45 b(strings)739 1567 y Fs(A)37 b Fo(String)d Fs(is)i(a)g(single)g(v)-5 b(alue;)41 b(whitespace)36 b(is)h(signi\014can)n(t)e(in)i(a)f(string.)63 b(Strings)36 b(are)739 1667 y(in)n(tro)r(duced)d(with)g(quotes.)53 b(There)32 b(are)g(four)h(kinds)f(of)h(quoted)g(elemen)n(ts;)j(the)d (kind)g(is)739 1766 y(determined)26 b(b)n(y)g(the)h(op)r(ening)f (quote.)36 b(The)26 b(sym)n(b)r(ols)f Fo(')h Fs(\(single-quote\))g(and) g Fo(")f Fs(\(double-)739 1866 y(quote\))c(in)n(tro)r(duce)f(the)i (normal)d(shell-st)n(yle)i(quoted)f(elemen)n(ts.)35 b(The)21 b(quotation)f(sym)n(b)r(ols)739 1965 y(are)26 b Fi(include)l(d)36 b Fs(in)27 b(the)g(result)g(string.)36 b(V)-7 b(ariables)25 b(are)h(alw)n(a)n(ys)f(expanded)i(within)g(a)g(quote)739 2065 y(of)j(this)g(kind.)45 b(Note)30 b(that)h(the)f Fo(osh)p Fs(\(1\))f(\(Chapter)h @beginspecial @setspecial @endspecial(15)p @beginspecial @setspecial @endspecial(\))g(prin)n(ter) f(escap)r(es)g(double-quotes)739 2165 y(within)35 b(the)g(string;)j (these)d(are)f(only)g(for)g(prin)n(ting,)i(they)f(are)f(not)h(part)f (of)h(the)g(string)739 2264 y(itself.)913 2433 y Fo(osh>)42 b(A)h(=)h('Hello)d("world"')913 2532 y(-)i(:)h("'Hello)c(\\"world\\"'") f(:)k(String)913 2632 y(osh>)f(B)h(=)h("$\(A\)")913 2731 y(-)f(:)h("\\"'Hello)39 b(\\"world\\"'\\"")g(:)k(String)913 2831 y(osh>)f(C)h(=)h('Hello)d(\\'world\\'')913 2931 y(-)i(:)h("'Hello)c('world''")g(:)j(String)863 3099 y Fs(A)22 b(second)e(kind)h(of)g(quote)g(is)g(in)n(tro)r(duced)f(with)i (the)f Fo($')f Fs(and)h Fo($")f Fs(quotes.)34 b(The)21 b(n)n(um)n(b)r(er)739 3199 y(of)g(op)r(ening)f(and)h(closing)f(quote)h (sym)n(b)r(ols)f(is)h(arbitrary)-7 b(.)33 b(These)20 b(quotations)g(ha)n(v)n(e)g(sev)n(eral)739 3298 y(prop)r(erties:)863 3453 y Fj(\017)41 b Fs(The)28 b(quote)f(delimiters)h(are)f(not)g(part)g (of)h(the)g(string.)863 3613 y Fj(\017)41 b Fs(Bac)n(kslash)26 b Fo(\\)h Fs(sym)n(b)r(ols)g(within)h(the)g(string)f(are)g(treated)g (as)g(normal)g(c)n(haracters.)863 3773 y Fj(\017)41 b Fs(The)28 b(strings)f(ma)n(y)g(span)g(sev)n(eral)f(lines.)863 3934 y Fj(\017)41 b Fs(V)-7 b(ariables)24 b(are)f(expanded)h(within)h Fo($")f Fs(sequences,)g(but)h(not)f(within)h Fo($')f Fs(sequences.)913 4102 y Fo(osh>)42 b(A)h(=)h($'''Here)c($\(IS\))h(an)i ('''')f(\\\(example\\\))d(string[''')913 4201 y(-)k(:)h("Here)d ($\(IS\))h(an)g('''')g(\\\\\(example\\\\\))d(string[")h(:)j(String)913 4301 y(osh>)f(B)h(=)h($""""A)d(is)h("$\(A\)")f("""")913 4401 y(-)i(:)h("A)e(is)h(\\"Here)e($\(IS\))h(an)g('''')g (\\\\\(example\\\\\))d(string[\\")g(")44 b(:)f(String)913 4500 y(osh>)f(value)g($\(A.length\))913 4600 y(-)h(:)h(38)e(:)i(Int)913 4700 y(osh>)e(value)g($\(A.nth)e(5\))913 4799 y(-)j(:)h("$")e(:)h (String)913 4899 y(osh>)f(value)g($\(A.rev\))913 4998 y(-)h(:)h("[gnirts)c(\)\\\\elpmaxe\(\\\\)e('''')k(na)h(\)SI\($)e(ereH") h(:)h(String)p eop end %%Page: 81 81 TeXDict begin 81 80 bop 291 282 a @beginspecial @setspecial @endspecial Fp(7.3.)63 b(FILES)28 b(AND)g(DIRECTORIES)1516 b Fs(81)415 515 y(Strings)24 b(and)h(sequences)f(b)r(oth)h(ha)n(v)n(e)e (the)j(prop)r(ert)n(y)d(that)i(they)g(can)f(b)r(e)h(merged)f(with)291 615 y(adjacen)n(t)j(non-whitespace)f(text.)465 764 y Fo(osh>)42 b(A)h(=)g(a)g(b)h(c)465 864 y(-)f(:)g("a)g(b)g(c")g(:)g (Sequence)465 963 y(osh>)f(B)h(=)g($\(A\).c)465 1063 y(-)g(:)g()d(:)j(Sequence)465 1162 y(osh>)f(value)f($\(nth)h(2,)h ($\(B\)\))465 1262 y(-)g(:)g("c.c")f(:)h(String)465 1362 y(osh>)f(value)f($\(length)g($\(B\)\))465 1461 y(-)i(:)g(3)g(:)h(Int) 415 1610 y Fs(Arra)n(ys)27 b(are)g(di\013eren)n(t.)39 b(The)29 b(elemen)n(ts)f(of)g(an)g(arra)n(y)e(are)i(nev)n(er)f(merged)h (with)h(adja-)291 1710 y(cen)n(t)f(text)i(of)f(an)n(y)f(kind.)41 b(Arra)n(ys)27 b(are)h(de\014ned)h(b)n(y)f(adding)h(square)e(brac)n(k)n (ets)h Fo([])g Fs(after)g(a)291 1810 y(v)-5 b(ariable)27 b(name)h(and)h(de\014ning)g(the)f(elemen)n(ts)h(with)g(an)f(inden)n (ted)h(b)r(o)r(dy)-7 b(.)40 b(The)29 b(elemen)n(ts)291 1909 y(ma)n(y)d(include)i(whitespace.)465 2058 y Fo(osh>)42 b(A[])g(=)814 2158 y(a)h(b)814 2257 y(foo)f(bar)465 2357 y(-)h(:)g()770 2656 y(:)g(Array)465 2756 y(osh>)f(echo)g($\(A\).c)465 2855 y(a)h(b)g(foo)g(bar)f(.c)465 2955 y(osh>)g(value)f($\(A.length\))465 3054 y(-)i(:)g(2)g(:)h(Int)465 3154 y(osh>)e(value)f($\(A.nth)g(1\))465 3254 y(-)i(:)g("foo)f(bar")g (:)h(Sequence)415 3403 y Fs(Arra)n(ys)32 b(are)h(quite)h(helpful)g(on)f (systems)h(where)f(\014lenames)g(often)h(con)n(tain)f(whites-)291 3502 y(pace.)465 3651 y Fo(osh>)42 b(FILES[])f(=)857 3751 y(c:\\Documents)e(and)j(Settings\\jyh\\one)37 b(file)857 3851 y(c:\\Program)j(Files\\omake\\sec)o(ond)d(file)465 4050 y(osh>)42 b(CFILES)f(=)i($\(addsuffix)c(.c,)k($\(FILES\)\))465 4149 y(osh>)f(echo)g($\(CFILES\))465 4249 y(c:\\Documents)d(and)j (Settings\\jyh\\one)37 b(file.c)k(c:\\Program)e(Files\\omake\\secon)o (d)f(file.c)291 4387 y @beginspecial @setspecial @endspecial 131 x Fl(7.3)135 b(Files)45 b(and)g(directories)291 4700 y Fs(OMak)n(e)37 b(pro)5 b(jects)39 b(usually)f(span)h(m)n(ultiple)h (directories,)h(and)e(di\013eren)n(t)g(parts)f(of)i(the)291 4799 y(pro)5 b(ject)30 b(execute)g(commands)g(in)h(di\013eren)n(t)g (directories.)45 b(There)30 b(is)h(a)f(need)h(to)f(de\014ne)h(a)291 4899 y(lo)r(cation-indep)r(enden)n(t)c(name)g(for)g(a)h(\014le)f(or)g (directory)-7 b(.)415 4998 y(This)28 b(is)f(done)g(with)i(the)f Fo($\(file)41 b(\))24 b Fs(and)j Fo($\(dir)42 b(\))24 b Fs(functions.)p eop end %%Page: 82 82 TeXDict begin 82 81 bop 739 282 a @beginspecial @setspecial @endspecial Fs(82)646 b Fp(CHAPTER)27 b(7.)64 b(ADDITIONAL)29 b(LANGUA)n(GE)f(EXAMPLES)870 515 y Fo(osh>)42 b(mkdir)f(tmp)870 615 y(osh>)h(F)h(=)g($\(file)e(fee\))870 715 y(osh>)h(section:)1262 814 y(cd)h(tmp)1262 914 y(echo)f($F)870 1013 y(../fee)870 1113 y(osh>)g(echo)g($F)870 1213 y(fee)863 1411 y Fs(Note)37 b(the)g(use)f(of)g(a)g Fo(section:)d Fs(to)j(limit)h(the)g(scop)r(e)f (of)g(the)h Fo(cd)e Fs(command.)63 b(The)739 1511 y(section)30 b(temp)r(orarily)g(c)n(hanges)f(to)h(the)h Fo(tmp)f Fs(directory)f (where)h(the)h(name)g(of)g(the)g(\014le)f(is)739 1611 y Fo(../fee)p Fs(.)j(Once)25 b(the)g(section)g(completes,)g(w)n(e)g (are)f(still)h(in)g(the)g(curren)n(t)f(directory)-7 b(,)25 b(where)739 1710 y(the)j(name)f(of)h(the)g(\014le)g(is)f Fo(fee)p Fs(.)863 1814 y(One)38 b(common)f(w)n(a)n(y)g(to)h(use)f(the)i (\014le)f(functions)g(is)g(to)g(de\014ne)g(prop)r(er)f(\014le)h(names) 739 1913 y(in)c(y)n(our)f(pro)5 b(ject)33 b Fo(OMakefile)p Fs(,)g(so)g(that)h(references)f(within)i(the)g(v)-5 b(arious)32 b(parts)i(of)g(the)739 2013 y(pro)5 b(ject)27 b(will)h(refer)e(to)i (the)g(same)f(\014le.)913 2216 y Fo(osh>)42 b(cat)h(OMakefile)913 2315 y(ROOT)f(=)h($\(dir)f(.\))913 2415 y(TMP)86 b(=)43 b($\(dir)f(tmp\))913 2514 y(BIN)86 b(=)43 b($\(dir)f(bin\))913 2614 y(...)739 2756 y @beginspecial @setspecial @endspecial 154 x Fl(7.4)135 b(Iteration,)47 b(mapping,)f(and)e(foreac)l(h)739 3099 y Fs(Most)27 b(builtin)i(functions)f(op)r(erate)e(transparen)n (tly)g(on)i(arra)n(ys.)913 3302 y Fo(osh>)42 b(addprefix\(-D,)c(DEBUG)k (WIN32\))913 3401 y(-)h(:)h(-DDEBUG)c(-DWIN32)h(:)i(Array)913 3501 y(osh>)f(mapprefix\(-I,)c(/etc)k(/tmp\))913 3600 y(-)h(:)h(-I)e(/etc)g(-I)h(/tmp)f(:)h(Array)913 3700 y(osh>)f(uppercase\(fee)c(fi)43 b(foo)f(fum\))913 3800 y(-)h(:)h(FEE)e(FI)h(FOO)f(FUM)g(:)i(Array)863 3998 y Fs(The)19 b Fo(mapprefix)c Fs(and)j Fo(addprefix)d Fs(functions)j(are)g (sligh)n(tly)f(di\013eren)n(t)i(\(the)g Fo(addsuffix)739 4098 y Fs(and)28 b Fo(mapsuffix)d Fs(functions)k(are)e(similar\).)39 b(The)29 b Fo(addprefix)c Fs(adds)j(the)h(prefex)f(to)g(eac)n(h)739 4197 y(arra)n(y)19 b(elemen)n(t.)35 b(The)21 b Fo(mapprefix)c Fs(doubles)k(the)h(length)f(of)g(the)h(arra)n(y)-7 b(,)20 b(adding)h(the)h(pre\014x)739 4297 y(as)27 b(a)g(new)h(arra)n(y)d (elemen)n(t)j(b)r(efore)f(eac)n(h)g(of)g(the)h(original)e(elemen)n(ts.) 863 4401 y(Ev)n(en)j(though)g(most)g(functions)h(w)n(ork)e(on)h(arra)n (ys,)e(there)i(are)f(times)i(when)f(y)n(ou)g(will)739 4500 y(w)n(an)n(t)i(to)h(do)g(it)g(y)n(ourself.)49 b(The)32 b Fo(foreach)d Fs(function)j(is)g(the)h(w)n(a)n(y)d(to)i(go.)49 b(The)32 b Fo(foreach)739 4600 y Fs(function)d(has)e(t)n(w)n(o)g (forms,)h(but)h(the)f(form)g(with)g(a)g(b)r(o)r(dy)g(is)g(most)g (useful.)39 b(In)28 b(this)h(form,)739 4700 y(the)23 b(function)h(tak)n(es)e(t)n(w)n(o)g(argumen)n(ts)f(and)i(a)f(b)r(o)r (dy)-7 b(.)36 b(The)23 b(second)f(argumen)n(t)g(is)h(an)f(arra)n(y)-7 b(,)739 4799 y(and)30 b(the)g(\014rst)f(is)h(a)f(v)-5 b(ariable.)43 b(The)29 b(b)r(o)r(dy)i(is)e(ev)-5 b(aluated)30 b(once)f(for)g(eac)n(h)g(elemen)n(t)h(of)g(the)739 4899 y(arra)n(y)-7 b(,)34 b(where)f(the)i(v)-5 b(ariable)33 b(is)h(b)r(ound)h(to)f(the)g(elemen)n(t.)57 b(Let's)34 b(de\014ne)h(a)f(function)g(to)739 4998 y(add)27 b(1)h(to)f(eac)n(h)g (elemen)n(t)h(of)f(an)g(arra)n(y)f(of)h(n)n(um)n(b)r(ers.)p eop end %%Page: 83 83 TeXDict begin 83 82 bop 291 282 a @beginspecial @setspecial @endspecial Fp(7.5.)63 b(LAZY)28 b(EXPRESSIONS)1744 b Fs(83)421 515 y Fo(osh>)42 b(add1\(l\))f(=)814 615 y(foreach\(i,)e ($l\):)988 715 y(add\($i,)i(1\))421 814 y(osh>)h(add1\(7)f(21)i(75\)) 421 914 y(-)h(:)f(8)g(22)g(76)f(:)i(Array)415 1063 y Fs(Sometimes)25 b(y)n(ou)g(ha)n(v)n(e)f(an)h(arra)n(y)e(of)i (\014lenames,)h(and)f(y)n(ou)f(w)n(an)n(t)h(to)g(de\014ne)h(a)e(rule)h (for)291 1163 y(eac)n(h)f(of)i(them.)36 b(Rules)26 b(are)e(not)i(sp)r (ecial,)f(y)n(ou)g(can)g(de\014ne)h(them)g(an)n(ywhere)e(a)h(statemen)n (t)291 1262 y(is)f(exp)r(ected.)36 b(Sa)n(y)23 b(w)n(e)h(w)n(an)n(t)g (to)g(write)g(a)g(function)h(that)f(describ)r(es)g(ho)n(w)f(to)i(pro)r (cess)e(eac)n(h)291 1362 y(\014le,)k(placing)g(the)h(result)g(in)g(the) f Fo(tmp/)g Fs(directory)-7 b(.)421 1511 y Fo(TMP)43 b(=)g($\(dir)e(tmp\))421 1710 y(my-special-rule\(f)o(il)o(es\))c(=)552 1810 y(foreach\(name,)h($\(files\)\))683 1909 y($\(TMP\)/$\(name\):)f ($\(name\))814 2009 y(process)j($<)j(>)g($@)415 2158 y Fs(Later,)25 b(in)h(some)f(other)g(part)g(of)g(the)h(pro)5 b(ject,)25 b(w)n(e)h(ma)n(y)e(decide)i(that)g(w)n(e)f(w)n(an)n(t)g(to)g (use)291 2258 y(this)i(function)i(to)e(pro)r(cess)g(some)g(\014les.)421 2407 y Fo(#)44 b(These)d(are)h(the)h(files)e(to)i(process)e(in)h (src/lib)421 2507 y(MY_SPECIAL_FILES[)o(])37 b(=)596 2606 y(fee.src)596 2706 y(fi.src)596 2805 y(file)42 b(with)g(spaces)f (in)h(its)h(name.src)421 2905 y(my-special-rule\($)o(\(M)o(Y_S)o(PE)o (CIA)o(L_)o(FIL)o(ES)o(\)\))415 3054 y Fs(The)d(result)f(of)h(calling)f Fo(my-special-rule)33 b Fs(is)40 b(exactly)f(the)h(same)f(as)g(if)h(w)n (e)f(had)291 3154 y(written)27 b(the)h(follo)n(wing)f(three)g(rules)g (explicitly)-7 b(.)465 3303 y Fo($\(TMP\)/fee.src:)37 b(fee.src)639 3402 y(process)k(fee)h(>)h($@)465 3502 y($\(TMP\)/fi.src:)38 b(fi.src)639 3602 y(process)j(fi.src)g(>)i($@)465 3701 y($\(TMP\)/$"file)38 b(with)k(spaces)f(in)i(its)f(name.src":)e ($"file)h(with)h(spaces)f(in)i(its)f(name.src")639 3801 y(process)f($<)i(>)g($@)415 3950 y Fs(Of)21 b(course,)f(writing)g (these)h(rules)f(is)g(not)g(nearly)g(as)g(pleasan)n(t)f(as)h(calling)f (the)i(function.)291 4050 y(The)f(usual)g(prop)r(erties)g(of)h (function)g(abstraction)e(giv)n(e)h(us)g(the)h(usual)f(b)r(ene\014ts.) 35 b(The)21 b(co)r(de)291 4149 y(is)h(less)g(redundan)n(t,)h(and)g (there)f(is)g(a)h(single)f(lo)r(cation)f(\(the)j Fo(my-special-rule)16 b Fs(function\))291 4249 y(that)21 b(de\014nes)g(the)h(build)g(rule.)34 b(Later,)22 b(if)f(w)n(e)g(w)n(an)n(t)g(to)g(mo)r(dify/up)r(date)g(the) h(rule,)g(w)n(e)f(need)291 4349 y(do)27 b(so)g(in)h(only)f(one)g(lo)r (cation.)291 4484 y @beginspecial @setspecial @endspecial 133 x Fl(7.5)135 b(Lazy)45 b(expressions)291 4799 y Fs(Ev)-5 b(aluation)33 b(in)i Fo(omake)d Fs(is)j(normally)e(eager.)56 b(That)34 b(is,)i(expressions)d(are)g(ev)-5 b(aluated)35 b(as)291 4899 y(so)r(on)e(as)g(they)h(are)f(encoun)n(tered)f(b)n(y)i (the)g(ev)-5 b(aluator.)54 b(One)34 b(e\013ect)g(of)g(this)g(is)f(that) i(the)291 4998 y(righ)n(t-hand-side)21 b(of)j(a)f(v)-5 b(ariable)22 b(de\014nition)i(is)f(expanded)g(when)h(the)g(v)-5 b(ariable)22 b(is)h(de\014ned.)p eop end %%Page: 84 84 TeXDict begin 84 83 bop 739 282 a @beginspecial @setspecial @endspecial Fs(84)646 b Fp(CHAPTER)27 b(7.)64 b(ADDITIONAL)29 b(LANGUA)n(GE)f(EXAMPLES)863 515 y Fs(There)21 b(are)g(t)n(w)n(o)f(w)n (a)n(ys)g(to)h(con)n(trol)f(this)i(b)r(eha)n(vior.)33 b(The)22 b Fo($`\(v\))d Fs(form)i(in)n(tro)r(duces)g(lazy)739 615 y(b)r(eha)n(vior,)31 b(and)h(the)g Fo($,\(v\))d Fs(form)i(restores) f(eager)g(b)r(eha)n(vior.)48 b(Consider)30 b(the)i(follo)n(wing)739 715 y(sequence.)913 886 y Fo(osh>)42 b(A)h(=)h(1)913 985 y(-)f(:)h("1")e(:)h(Sequence)913 1085 y(osh>)f(B)h(=)h(2)913 1184 y(-)f(:)h("2")e(:)h(Sequence)913 1284 y(osh>)f(C)h(=)h($`\(add)d ($\(A\),)g($,\(B\)\))913 1384 y(-)i(:)h($\(apply)c(add)j($\(apply)d (A\))j("2")f(:)i(Sequence\))913 1483 y(osh>)e(println\(C)e(=)j ($\(C\)\))913 1583 y(C)g(=)h(3)913 1683 y(osh>)e(A)h(=)h(5)913 1782 y(-)f(:)h("5")e(:)h(Sequence)913 1882 y(osh>)f(B)h(=)h(6)913 1981 y(-)f(:)h("6")e(:)h(Sequence)913 2081 y(osh>)f(println\(C)e(=)j ($\(C\)\))913 2181 y(C)g(=)h(7)863 2352 y Fs(The)34 b(de\014nition)f Fo(C)44 b(=)f($`\(add)e($\(A\),)g($,\(B\)\))31 b Fs(de\014nes)i(a)g (lazy)g(application.)53 b(The)739 2451 y Fo(add)32 b Fs(function)h(is)g(not)h(applied)f(in)g(this)g(case)g(un)n(til)g(its)g (v)-5 b(alue)33 b(is)g(needed.)54 b(Within)34 b(this)739 2551 y(expression,)22 b(the)i(v)-5 b(alue)22 b Fo($,\(B\))f Fs(sp)r(eci\014es)i(that)g Fo(B)g Fs(is)g(to)g(b)r(e)g(ev)-5 b(aluated)23 b(immediately)-7 b(,)24 b(ev)n(en)739 2651 y(though)j(it)h(is)g(de\014ned)g(in)g(a)f(lazy)g(expression.)863 2750 y(The)g(\014rst)f(time)i(that)e(w)n(e)h(prin)n(t)f(the)h(v)-5 b(alue)27 b(of)f Fo(C)p Fs(,)g(it)h(ev)-5 b(aluates)26 b(to)h(3)f(since)g Fo(A)h Fs(is)f(1)g(and)739 2850 y Fo(B)34 b Fs(is)h(2.)59 b(The)35 b(second)f(time)i(w)n(e)e(ev)-5 b(aluate)35 b Fo(C)p Fs(,)f(it)i(ev)-5 b(aluates)34 b(to)h(7)f(b)r (ecause)h Fo(A)f Fs(has)h(b)r(een)739 2949 y(rede\014ned)29 b(to)h Fo(5)p Fs(.)43 b(The)30 b(second)f(de\014nition)h(of)g Fo(B)f Fs(has)h(no)f(e\013ect,)i(since)f(it)g(w)n(as)f(ev)-5 b(aluated)739 3049 y(at)27 b(de\014nition)h(time.)739 3163 y @beginspecial @setspecial @endspecial 116 x Fk(7.5.1)112 b(A)37 b(larger)h(example)h(of)f(lazy)g(expressions)739 3433 y Fs(Lazy)33 b(expressions)e(are)i(not)g(ev)-5 b(aluated)33 b(un)n(til)h(their)g(result)f(is)g(needed.)55 b(Some)33 b(p)r(eople,)739 3532 y(including)f(this)h(author,)f(fro)n(wn)f(on)h(o) n(v)n(eruse)e(of)i(lazy)g(expressions,)f(mainly)h(b)r(ecause)g(it)739 3632 y(is)25 b(di\016cult)i(to)e(kno)n(w)g(when)g(ev)-5 b(aluation)25 b(actually)g(happ)r(ens.)36 b(Ho)n(w)n(ev)n(er,)24 b(there)i(are)e(cases)739 3732 y(where)j(they)h(pa)n(y)f(o\013.)863 3831 y(One)35 b(example)f(comes)g(from)g(option)h(pro)r(cessing.)56 b(Consider)34 b(the)h(sp)r(eci\014cation)f(of)739 3931 y(\\include")k(directories)f(on)h(the)h(command)f(line)h(for)f(a)g(C)h (compiler.)69 b(If)39 b(w)n(e)f(w)n(an)n(t)g(to)739 4030 y(include)28 b(\014les)f(from)g(/home/jyh/include)f(and)h(../fo)r(o,)g (w)n(e)g(sp)r(ecify)g(it)h(on)f(the)h(command)739 4130 y(line)g(with)g(the)g(options)f Fo(-I/home/jyh/incl)o(ud)o(e)38 b(-I../foo)p Fs(.)863 4230 y(Supp)r(ose)22 b(w)n(e)f(w)n(an)n(t)g(to)g (de\014ne)h(a)f(generic)f(rule)h(for)g(building)h(C)f(\014les.)35 b(W)-7 b(e)22 b(could)f(de\014ne)739 4329 y(a)33 b Fo(INCLUDES)d Fs(arra)n(y)h(to)j(sp)r(ecify)g(the)g(directories)e(to)h(b)r(e)h (included,)i(and)d(then)h(de\014ne)g(a)739 4429 y(generic)26 b(implicit)j(rule)e(in)h(our)f(ro)r(ot)g(OMak)n(e\014le.)913 4600 y Fo(#)43 b(Generic)e(way)h(to)h(compile)e(C)i(files.)913 4700 y(CFLAGS)e(=)j(-g)913 4799 y(INCLUDES[])c(=)913 4899 y(\045.o:)i(\045.c)1044 4998 y($\(CC\))g($\(CFLAGS\))d ($\(INCLUDES\))g(-c)k($<)p eop end %%Page: 85 85 TeXDict begin 85 84 bop 291 282 a @beginspecial @setspecial @endspecial Fp(7.5.)63 b(LAZY)28 b(EXPRESSIONS)1744 b Fs(85)465 615 y Fo(#)43 b(The)f(src)h(directory)d(builds)h(my_widget+)e (from)j(4)h(source)e(files.)465 715 y(#)i(It)g(reads)e(include)g(files) h(from)g(the)g(include)f(directory.)465 814 y(.SUBDIRS:)f(src)639 914 y(FILES)i(=)h(fee)f(fi)h(foo)f(fum)639 1013 y(OFILES)f(=)j ($\(addsuffix)39 b(.o,)j($\(FILES\)\))639 1113 y(INCLUDES[])e(+=)i (-I../include)639 1213 y(my_widget:)e($\(OFILES\))770 1312 y($\(CC\))i($\(CFLAGS\))d(-o)k($@)g($\(OFILES\))415 1550 y Fs(But)37 b(this)g(is)f(not)h(quite)f(righ)n(t.)63 b(The)37 b(problem)f(is)g(that)h(INCLUDES)g(is)f(an)g(arra)n(y)291 1650 y(of)h(options,)i(not)e(directories.)65 b(If)37 b(w)n(e)g(later)g(w)n(an)n(ted)f(to)i(reco)n(v)n(er)c(the)k (directories,)g(w)n(e)291 1749 y(w)n(ould)i(ha)n(v)n(e)g(to)i(strip)f (the)g(leading)g Fo(-I)f Fs(pre\014x,)45 b(whic)n(h)c(is)g(a)g(hassle.) 77 b(F)-7 b(urthermore,)291 1849 y(w)n(e)33 b(aren't)h(using)f(prop)r (er)g(names)h(for)f(the)h(directories.)55 b(The)34 b(solution)f(here)g (is)h(to)g(use)291 1948 y(a)j(lazy)g(expression.)66 b(W)-7 b(e'll)39 b(de\014ne)f(INCLUDES)g(as)f(a)h(directory)f(arra)n(y)-7 b(,)38 b(and)f(a)h(new)291 2048 y(v)-5 b(ariable)27 b Fo(PREFIXED_INCLUD)o(ES)22 b Fs(that)28 b(adds)g(the)g(-I)g(pre\014x.) 38 b(The)28 b Fo(PREFIXED_INCLUDE)o(S)291 2148 y Fs(is)35 b(computed)g(lazily)-7 b(,)36 b(ensuring)f(that)g(the)g(v)-5 b(alue)35 b(uses)g(the)g(most)g(recen)n(t)g(v)-5 b(alue)35 b(of)g(the)291 2247 y(INCLUDES)28 b(v)-5 b(ariable.)465 2499 y Fo(#)43 b(Generic)e(way)h(to)h(compile)e(C)i(files.)465 2598 y(CFLAGS)e(=)i(-g)465 2698 y(INCLUDES[])c(=)465 2797 y(PREFIXED_INCLUDE)o(S[)o(])f(=)43 b($`\(addprefix)38 b(-I,)43 b($\(INCLUDES\)\))465 2897 y(\045.o:)f(\045.c)596 2997 y($\(CC\))f($\(CFLAGS\))f($\(PREFIXED_INCLU)o(DES)o(\))d(-c)43 b($<)465 3196 y(#)g(For)f(this)g(example,)f(we)h(define)g(a)h(proper)e (name)h(for)g(the)g(include)f(directory)465 3296 y(STDINCLUDE)e(=)44 b($\(dir)d(include\))465 3495 y(#)i(The)f(src)h(directory)d(builds)h (my_widget+)e(from)j(4)h(source)e(files.)465 3594 y(#)i(It)g(reads)e (include)g(files)h(from)g(the)g(include)f(directory.)465 3694 y(.SUBDIRS:)f(src)639 3794 y(FILES)i(=)h(fee)f(fi)h(foo)f(fum)639 3893 y(OFILES)f(=)j($\(addsuffix)39 b(.o,)j($\(FILES\)\))639 3993 y(INCLUDES[])e(+=)i($\(STDINCLUDE\))639 4093 y(my_widget:)e ($\(OFILES\))770 4192 y($\(CC\))i($\(CFLAGS\))d(-o)k($@)g($\(OFILES\)) 415 4430 y Fs(Note)c(that)g(there)g(is)g(a)f(close)h(connection)f(b)r (et)n(w)n(een)h(lazy)f(v)-5 b(alues)39 b(and)g(functions.)291 4529 y(In)c(the)g(example)g(ab)r(o)n(v)n(e,)h(w)n(e)f(could)g(equiv)-5 b(alen)n(tly)34 b(de\014ne)i Fo(PREFIXED_INCLUD)o(ES)29 b Fs(as)34 b(a)291 4629 y(function)28 b(with)g(zero)e(argumen)n(ts.)465 4880 y Fo(PREFIXED_INCLUDE)o(S\()o(\))38 b(=)639 4980 y(addprefix\(-I,)g($\(INCLUDES\)\))p eop end %%Page: 86 86 TeXDict begin 86 85 bop 739 282 a @beginspecial @setspecial @endspecial Fs(86)646 b Fp(CHAPTER)27 b(7.)64 b(ADDITIONAL)29 b(LANGUA)n(GE)f(EXAMPLES)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(7.6)135 b(Scoping)45 b(and)g(exp)t(orts)739 697 y Fs(The)30 b(OMak)n(e)e(language)g(is)h(functional)h(\(apart)f (from)g(IO)g(and)g(shell)h(commands\).)42 b(This)739 797 y(comes)23 b(in)h(t)n(w)n(o)f(parts:)34 b(functions)24 b(are)f(\014rst-class,)g(and)h(v)-5 b(ariables)22 b(are)h(imm)n(utable) h(\(there)739 896 y(is)f(no)h(assignmen)n(t)e(op)r(erator\).)35 b(The)23 b(latter)h(prop)r(ert)n(y)e(ma)n(y)h(seem)h(strange)e(to)h (users)g(used)739 996 y(to)h(GNU)h(mak)n(e,)f(but)h(it)f(is)g(actually) g(a)f(cen)n(tral)g(p)r(oin)n(t)i(of)f(OMak)n(e.)34 b(Since)24 b(v)-5 b(ariables)23 b(can't)739 1096 y(b)r(e)35 b(mo)r(di\014ed,)i(it) e(is)f(imp)r(ossible)h(\(or)f(at)h(least)f(hard\))g(for)g(one)h(part)f (of)g(the)h(pro)5 b(ject)34 b(to)739 1195 y(in)n(terfere)27 b(with)h(another.)863 1295 y(T)-7 b(o)27 b(b)r(e)g(sure,)g(pure)g (functional)g(programming)e(can)h(b)r(e)i(a)n(wkw)n(ard.)34 b(In)27 b(OMak)n(e,)f(eac)n(h)739 1395 y(new)f(inden)n(tation)g(lev)n (el)f(in)n(tro)r(duces)g(a)h(new)g(scop)r(e,)g(and)f(new)h (de\014nitions)g(in)h(that)f(scop)r(e)739 1494 y(are)32 b(lost)h(when)h(the)f(scop)r(e)g(ends.)54 b(If)34 b(OMak)n(e)e(w)n(ere) g(o)n(v)n(erly)f(strict)j(ab)r(out)f(scoping,)h(w)n(e)739 1594 y(w)n(ould)27 b(wind)h(up)g(with)g(a)f(lot)h(of)f(con)n(v)n (oluted)g(co)r(de.)870 1777 y Fo(osh>)42 b(X)h(=)g(1)870 1876 y(osh>)f(setenv\(BOO,)d(12\))870 1976 y(osh>)j(if)g($\(equal)f ($\(OSTYPE\),)e(Win32\))1262 2076 y(setenv\(BOO,)g(17\))1262 2175 y(X)k(=)g(2)870 2275 y(osh>)f(println\($X)d($\(getenv)h(BOO\)\)) 870 2374 y(1)j(12)863 2557 y Fs(The)35 b Fo(export)c Fs(command)j(presen)n(ts)f(a)h(w)n(a)n(y)f(out.)56 b(It)35 b(tak)n(es)e(care)g(of)h(\\exp)r(orting")f(a)739 2657 y(v)-5 b(alue)27 b(\(or)f(the)h(en)n(tire)f(v)-5 b(ariable)26 b(en)n(vironmen)n(t\))g(from)g(an)h(inner)f(scop)r(e)g(to)h(an)f(outer) h(one.)870 2840 y Fo(osh>)42 b(X)h(=)g(1)870 2939 y(osh>)f (setenv\(BOO,)d(12\))870 3039 y(osh>)j(if)g($\(equal)f($\(OSTYPE\),)e (Win32\))1262 3139 y(setenv\(BOO,)g(17\))1262 3238 y(X)k(=)g(2)1262 3338 y(export)870 3437 y(osh>)f(println\($X)d($\(getenv)h(BOO\)\))870 3537 y(2)j(17)863 3720 y Fs(Exp)r(orts)29 b(are)h(esp)r(ecially)f (useful)i(in)f(lo)r(op)g(to)g(exp)r(ort)g(v)-5 b(alues)29 b(from)h(one)g(iteration)f(of)739 3819 y(a)e(lo)r(op)g(to)h(the)g (next.)870 4002 y Fo(#)43 b(Ok,)f(let's)g(try)g(to)h(add)f(up)h(the)f (elements)f(of)h(the)h(array)870 4102 y(osh>sum\(l\))c(=)1218 4201 y(total)j(=)h(0)1218 4301 y(foreach\(i,)d($l\))1393 4401 y(total)h(=)i($\(add)f($\(total\),)e($i\))1218 4500 y(value)i($\(total\))870 4600 y(osh>sum\(1)e(2)j(3\))870 4700 y(-)g(:)g(0)g(:)g(Int)870 4899 y(#)g(Oops,)e(that)h(didn't)f (work!)870 4998 y(osh>sum\(l\))e(=)p eop end %%Page: 87 87 TeXDict begin 87 86 bop 291 282 a @beginspecial @setspecial @endspecial Fp(7.7.)63 b(SHELL)28 b(ALIASES)1936 b Fs(87)770 515 y Fo(total)42 b(=)h(0)770 615 y(foreach\(i,)c($l\))944 715 y(total)j(=)h($\(add)f($\(total\),)d($i\))944 814 y(export)770 914 y(value)j($\(total\))421 1013 y(osh>sum\(1)e(2)j(3\)) 421 1113 y(-)h(:)f(6)g(:)g(Int)415 1299 y Fs(A)28 b Fo(while)e Fs(lo)r(op)h(is)g(another)g(form)g(of)h(lo)r(op,)f(with)h(an)f (auto-exp)r(ort.)465 1486 y Fo(osh>i)41 b(=)j(0)465 1585 y(osh>total)c(=)j(0)465 1685 y(osh>while)d($\(lt)i($i,)g(10\))814 1784 y(total)f(=)i($\(add)f($\(total\),)e($i\))814 1884 y(i)j(=)g($\(add)e($i,)i(1\))465 1984 y(osh>println\($\(to)o(ta)o (l\)\))465 2083 y(45)291 2212 y @beginspecial @setspecial @endspecial 150 x Fl(7.7)135 b(Shell)45 b(aliases)291 2546 y Fs(Sometimes)22 b(y)n(ou)g(ma)n(y)h(w)n(an)n(t)f(to)h(de\014ne)g (an)f Fi(alias)p Fs(,)k(an)c(OMak)n(e)g(command)g(that)h(masquer-)291 2645 y(ades)32 b(as)h(a)g(real)g(shell)h(command.)54 b(Y)-7 b(ou)34 b(can)f(do)g(this)h(b)n(y)f(adding)g(y)n(our)f(function) i(as)f(a)291 2745 y(metho)r(d)28 b(to)f(the)h Fo(Shell)e Fs(ob)5 b(ject.)415 2845 y(F)-7 b(or)30 b(an)f(example,)i(supp)r(ose)e (w)n(e)h(use)g(the)g Fo(awk)f Fs(function)i(to)e(prin)n(t)h(out)g(all)g (the)h(com-)291 2945 y(men)n(ts)c(in)h(a)f(\014le.)465 3132 y Fo(osh>cat)41 b(comment.om)465 3231 y(#)i(Comment)e(function)465 3331 y(comments\(filenam)o(e\))c(=)639 3430 y(awk\($\(filename\)\))639 3530 y(case)42 b($'^#')814 3630 y(println\($0\))465 3729 y(#)h(File)f(finished)465 3829 y(osh>include)d(comment)465 3929 y(osh>comments\(com)o(me)o(nt.)o(om)o(\))465 4028 y(#)k(Comment)e(function)465 4128 y(#)i(File)f(finished)415 4314 y Fs(T)-7 b(o)33 b(add)g(it)h(as)f(an)g(alias,)h(add)f(the)h (metho)r(d)g(\(using)f(+=)g(to)g(preserv)n(e)f(the)h(existing)291 4413 y(en)n(tries)26 b(in)i(the)g(Shell\).)421 4600 y Fo(osh>Shell.)40 b(+=)770 4700 y(printcom\(argv\))e(=)944 4799 y(comments\($\(nth)g(0,)43 b($\(argv\)\)\))421 4899 y(osh>printcom)c(comment.om)g(>)44 b(output.txt)421 4998 y(osh>cat)d(output.txt)p eop end %%Page: 88 88 TeXDict begin 88 87 bop 739 282 a @beginspecial @setspecial @endspecial Fs(88)646 b Fp(CHAPTER)27 b(7.)64 b(ADDITIONAL)29 b(LANGUA)n(GE)f(EXAMPLES)870 515 y Fo(#)43 b(Comment)e(function)870 615 y(#)i(File)f(finished)863 798 y Fs(A)f(shell)f(command)g(is)g (passed)f(an)h(arra)n(y)e(of)i(argumen)n(ts)f Fo(argv)p Fs(.)73 b(This)40 b(do)r(es)f Fi(not)739 897 y Fs(include)28 b(the)g(name)f(of)h(the)g(alias.)739 1022 y @beginspecial @setspecial @endspecial 150 x Fl(7.8)135 b(Input/output)45 b(redirection)h(on)f(the)g(c)l(heap)739 1354 y Fs(As)19 b(it)h(turns)f(out,)i(scoping)e(also)f(pro)n(vides)g(a)h(nice)g (alternate)g(w)n(a)n(y)f(to)h(p)r(erform)g(redirection.)739 1453 y(Supp)r(ose)f(y)n(ou)g(ha)n(v)n(e)g(already)f(written)h(a)h(lot)f (of)g(co)r(de)h(that)g(prin)n(ts)f(to)g(the)h(standard)f(output)739 1553 y(c)n(hannel,)27 b(but)i(no)n(w)e(y)n(ou)g(decide)h(y)n(ou)f(w)n (an)n(t)h(to)f(redirect)h(it.)38 b(One)27 b(w)n(a)n(y)g(to)h(do)f(it)i (is)f(using)739 1652 y(the)36 b(tec)n(hnique)f(in)g(the)h(previous)e (example:)52 b(de\014ne)36 b(y)n(our)e(function)i(as)e(an)h(alias,)h (and)739 1752 y(then)28 b(use)f(shell)h(redirection)f(to)g(place)g(the) h(output)g(where)f(y)n(ou)g(w)n(an)n(t.)863 1852 y(There)36 b(is)g(an)g(alternate)f(metho)r(d)i(that)g(is)f(easier)f(in)h(some)g (cases.)61 b(The)37 b(v)-5 b(ariables)739 1951 y Fo(stdin)p Fs(,)43 b Fo(stdout)p Fs(,)f(and)g Fo(stderr)d Fs(de\014ne)i(the)h (standard)f(I/O)f(c)n(hannels.)78 b(T)-7 b(o)41 b(redirect)739 2051 y(output,)33 b(rede\014ne)e(these)h(v)-5 b(ariables)30 b(as)h(y)n(ou)f(see)i(\014t.)49 b(Of)31 b(course,)h(y)n(ou)e(w)n(ould)h (normally)739 2151 y(do)c(this)h(in)g(a)f(nested)h(scop)r(e,)f(so)g (that)h(the)g(outer)f(c)n(hannels)g(are)f(not)i(a\013ected.)913 2333 y Fo(osh>f\(\))41 b(=)1262 2433 y(println\(Hello)d(world\))913 2533 y(osh>f\(\))913 2632 y(Hello)k(world)913 2732 y(osh>section:)1262 2831 y(stdout)f(=)i($\(fopen)e(output.txt,)e(w\))1262 2931 y(f\(\))1262 3031 y(close\($\(stdout\)\))913 3130 y(osh>cat)i(output.txt)913 3230 y(Hello)h(world)863 3413 y Fs(This)30 b(also)e(w)n(orks)f(for)i(shell)g(commands.)42 b(If)29 b(y)n(ou)g(lik)n(e)g(to)g(gam)n(ble,)g(y)n(ou)f(can)h(try)g (the)739 3512 y(follo)n(wing)d(example.)913 3695 y Fo(osh>f\(\))41 b(=)1262 3794 y(println\(Hello)d(world\))913 3894 y(osh>f\(\))913 3994 y(Hello)k(world)913 4093 y(osh>section:)1262 4193 y(stdout)f(=)i($\(fopen)e(output.txt,)e(w\))1262 4293 y(f\(\))1262 4392 y(cat)j(output.txt)1262 4492 y(close\($\(stdout\)\)) 913 4591 y(osh>cat)f(output.txt)913 4691 y(Hello)h(world)913 4791 y(Hello)g(world)p eop end %%Page: 89 89 TeXDict begin 89 88 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(8)291 1553 y Fr(Rules)291 1985 y Fs(Rules)30 b(are)g(used)h(b)n(y)f(OMak)n(e)f(to)i(sp)r(ecify)g(ho)n (w)f(to)g(build)i(\014les.)46 b(A)n(t)30 b(its)h(simplest,)h(a)e(rule) 291 2084 y(has)d(the)h(follo)n(wing)e(form.)465 2262 y Fo(:)40 b()639 2361 y()415 2538 y Fs(The)29 b Fo()c Fs(is)j(the)h(name)f(of)h(a)f(\014le)g (to)h(b)r(e)f(built.)41 b(The)28 b Fo()23 b Fs(are)k(a)291 2638 y(list)g(of)h(\014les)f(that)h(are)e(needed)i(b)r (efore)f(the)h Fo()c Fs(can)j(b)r(e)h(built.)37 b(The)28 b Fo()291 2738 y Fs(are)18 b(a)g(list)i(of)f(inden)n (ted)g(lines)g(sp)r(ecifying)g(commands)g(to)g(build)g(the)h(target.)33 b(F)-7 b(or)18 b(example,)291 2837 y(the)28 b(follo)n(wing)e(rule)h(sp) r(eci\014es)h(ho)n(w)f(to)g(compile)h(a)f(\014le)h Fo(hello.c)p Fs(.)465 3014 y Fo(hello.o:)40 b(hello.c)639 3114 y($\(CC\))i ($\(CFLAGS\))e(-c)i(-o)h(hello.o)e(hello.c)415 3291 y Fs(This)33 b(rule)g(states)f(that)i(the)f Fo(hello.o)d Fs(\014le)k(dep)r(ends)f(on)g(the)g Fo(hello.c)e Fs(\014le.)53 b(If)34 b(the)291 3391 y Fo(hello.c)15 b Fs(\014le)k(has)e(c)n(hanged,) j(the)e(command)g Fo($\(CC\))42 b($\(CFLAGS\))e(-c)j(-o)f(hello.o)f (hello.c)291 3491 y Fs(is)27 b(to)h(b)r(e)g(executed)f(to)h(up)r(date)g (the)g(target)e(\014le)i Fo(hello.o)p Fs(.)415 3590 y(A)20 b(rule)g(can)f(ha)n(v)n(e)g(an)h(arbitrary)d(n)n(um)n(b)r(er)j(of)g (commands.)33 b(The)20 b(individual)g(command)291 3690 y(lines)25 b(are)g(executed)h(indep)r(enden)n(tly)g(b)n(y)f(the)h (command)g(shell.)36 b(The)26 b(commands)f(do)g(not)291 3789 y(ha)n(v)n(e)f(to)i(b)r(egin)g(with)h(a)f(tab,)g(but)h(they)f(m)n (ust)g(b)r(e)h(inden)n(ted)f(from)g(the)g(dep)r(endency)h(line.)415 3889 y(In)g(addition)g(to)g(normal)g(v)-5 b(ariables,)26 b(the)h(follo)n(wing)f(sp)r(ecial)h(v)-5 b(ariables)26 b(ma)n(y)g(b)r(e)i(used)291 3989 y(in)f(the)h(b)r(o)r(dy)g(of)g(a)f (rule.)415 4166 y Fj(\017)41 b Fo($*)p Fs(:)36 b(the)28 b(target)f(name,)g(without)h(a)g(su\016x.)415 4330 y Fj(\017)41 b Fo($@)p Fs(:)36 b(the)28 b(target)f(name.)415 4494 y Fj(\017)41 b Fo($^)p Fs(:)36 b(a)27 b(list)h(of)g(the)g (sources,)e(in)i(alphab)r(etical)f(order,)f(with)i(duplicates)g(remo)n (v)n(ed.)415 4657 y Fj(\017)41 b Fo($+)p Fs(:)36 b(all)28 b(the)g(sources,)e(in)i(the)g(original)e(order.)415 4821 y Fj(\017)41 b Fo($<)p Fs(:)36 b(the)28 b(\014rst)g(source.)415 4998 y(F)-7 b(or)27 b(example,)g(the)h(ab)r(o)n(v)n(e)f Fo(hello.c)d Fs(rule)k(ma)n(y)e(b)r(e)i(simpli\014ed)h(as)d(follo)n (ws.)1681 5208 y(89)p eop end %%Page: 90 90 TeXDict begin 90 89 bop 739 282 a @beginspecial @setspecial @endspecial Fs(90)1929 b Fp(CHAPTER)27 b(8.)65 b(R)n(ULES)913 515 y Fo(hello.o:)41 b(hello.c)1088 615 y($\(CC\))g($\(CFLAGS\))f(-c)j (-o)f($@)h($<)863 787 y Fs(Unlik)n(e)30 b(normal)e(v)-5 b(alues,)29 b(the)g(v)-5 b(ariables)28 b(in)h(a)g(rule)g(b)r(o)r(dy)g (are)f(expanded)h(lazily)-7 b(,)29 b(and)739 886 y(binding)36 b(is)f(dynamic.)61 b(The)36 b(follo)n(wing)f(function)h(de\014nition)g (illustrates)f(some)g(of)h(the)739 986 y(issues.)913 1158 y Fo(CLibrary\(name,)i(files\))j(=)1088 1258 y(OFILES)g(=)i ($\(addsuffix)c(.o,)j($\(files\)\))1088 1457 y($\(name\).a:)d ($\(OFILES\))1262 1557 y($\(AR\))i(cq)i($@)g($\(OFILES\))863 1728 y Fs(This)32 b(function)h(de\014nes)f(a)f(rule)h(to)g(build)h(a)e (program)f(called)i Fo($\(name\))d Fs(from)i(a)h(list)739 1828 y(of)d Fo(.o)f Fs(\014les.)41 b(The)29 b(\014les)g(in)h(the)f (argumen)n(t)f(are)g(sp)r(eci\014ed)h(without)h(a)e(su\016x,)i(so)e (the)h(\014rst)739 1928 y(line)f(of)h(the)f(function)h(de\014nition)g (de\014nes)f(a)g(v)-5 b(ariable)28 b Fo(OFILES)d Fs(that)k(adds)f(the)h Fo(.o)e Fs(su\016x)739 2027 y(to)h(eac)n(h)f(of)h(the)g(\014le)g (names.)38 b(The)28 b(next)g(step)g(de\014nes)g(a)g(rule)f(to)h(build)h (a)e(target)h(library)739 2127 y Fo($\(name\).a)e Fs(from)j(the)i Fo($\(OFILES\))26 b Fs(\014les.)43 b(The)30 b(expression)e Fo($\(AR\))g Fs(is)i(ev)-5 b(aluated)29 b(when)739 2227 y(the)d(function)g(is)g(called,)g(and)g(the)g(v)-5 b(alue)25 b(of)h(the)g(v)-5 b(ariable)25 b Fo(AR)g Fs(is)h(tak)n(en)f(from)g(the) h(caller's)739 2326 y(scop)r(e)h(\(see)h(also)e(the)i(section)f(on)h (Scoping\).)739 2470 y @beginspecial @setspecial @endspecial 129 x Fl(8.1)135 b(Implicit)46 b(rules)739 2781 y Fs(Rules)38 b(ma)n(y)g(also)f(b)r(e)i(implicit.)70 b(That)39 b(is,)i(the)d(\014les) h(ma)n(y)e(b)r(e)i(sp)r(eci\014ed)g(b)n(y)f(wildcard)739 2880 y(patterns.)e(The)27 b(wildcard)g(c)n(haracter)e(is)i Fo(\045)p Fs(.)36 b(F)-7 b(or)27 b(example,)g(the)g(follo)n(wing)g (rule)f(sp)r(eci\014es)739 2980 y(a)h(default)h(rule)f(for)g(building)h Fo(.o)f Fs(\014les.)913 3152 y Fo(\045.o:)42 b(\045.c)1088 3252 y($\(CC\))f($\(CFLAGS\))f(-c)j(-o)f($@)h($*.c)863 3423 y Fs(This)28 b(rule)f(is)h(a)f(template)h(for)f(building)h(an)f (arbitrary)f Fo(.o)g Fs(\014le)i(from)g(a)f Fo(.c)g Fs(\014le.)863 3523 y(By)37 b(default,)i(implicit)f(rules)e(are)g(only)g(used)h(for)f (the)h(targets)e(in)i(the)g(curren)n(t)f(di-)739 3623 y(rectory)-7 b(.)37 b(Ho)n(w)n(ev)n(er)26 b(sub)r(directories)h (included)h(via)g(the)g Fo(.SUBDIRS)d Fs(rules)j(inherit)g(all)g(the) 739 3722 y(implicit)g(rules)f(that)h(are)f(in)h(scop)r(e)f(\(see)g (also)g(the)h(section)f(on)g(Scoping\).)739 3866 y @beginspecial @setspecial @endspecial 129 x Fl(8.2)135 b(Bounded)44 b(implicit)i(rules)739 4177 y Fs(Implicit)26 b(rules)f(ma)n(y)g(sp)r (ecify)h(the)g(set)g(of)f(\014les)h(they)g(apply)f(to.)36 b(The)26 b(follo)n(wing)f(syn)n(tax)f(is)739 4277 y(used.)913 4448 y Fo(:)40 b(:)f()1088 4548 y()863 4720 y Fs(F)-7 b(or)27 b(example,)h(the)g(follo)n (wing)e(rule)h(applies)h(only)f(to)g(the)h(\014les)g Fo(a.o)e Fs(and)i Fo(b.o)p Fs(.)870 4892 y Fo(a.o)42 b(b.o:)g(\045.o:)g(\045.c)1088 4992 y($\(CC\))f($\(CFLAGS\))f (-DSPECIAL)g(-c)j($*.c)p eop end %%Page: 91 91 TeXDict begin 91 90 bop 291 282 a @beginspecial @setspecial @endspecial Fp(8.3.)63 b(SECTION)2208 b Fs(91)291 432 y @beginspecial @setspecial @endspecial 83 x Fl(8.3)135 b(section)291 598 y @beginspecial @setspecial @endspecial 99 x Fs(F)-7 b(requen)n(tly)g(,)24 b(the)g(commands)f(in)h(a)f(rule)g (b)r(o)r(dy)h(are)f(expressions)f(to)i(b)r(e)g(ev)-5 b(aluated)23 b(b)n(y)h(the)291 797 y(shell.)36 b Fo(omake)26 b Fs(also)h(allo)n(ws)f(expressions)g(to)h(b)r(e)h(ev)-5 b(aluated)27 b(b)n(y)i Fo(omake)c Fs(itself.)415 896 y(The)36 b(syn)n(tax)g(of)g(these)g(\\computed)g(rules")f(uses)h(the)h Fo(section)c Fs(expression.)62 b(The)291 996 y(follo)n(wing)26 b(rule)h(uses)h(the)g Fo(omake)d Fs(IO)i(functions)h(to)g(pro)r(duce)f (the)h(target)f Fo(hello.c)p Fs(.)465 1155 y Fo(hello.c:)639 1255 y(section)814 1354 y(FP)42 b(=)i(fopen\(hello.c,)37 b(w\))814 1454 y(fprintln\($\(FP\),)g($""#include)i()h(int)i (main\(\))f({)j(printf\("Hello)38 b(world\\n"\);)h(}""\))814 1554 y(close\($\(FP\)\))415 1713 y Fs(This)26 b(example)f(uses)h(the)g (quotation)f Fo($""..."")d Fs(\(see)k(also)f(Section)g @beginspecial @setspecial @endspecial(B.1.6)p @beginspecial @setspecial @endspecial(\))h(to)f(quote)291 1812 y(the)31 b(text)h(b)r(eing)f(prin)n(ted.)48 b(These)31 b(quotes)g(are)f(not)i (included)g(in)f(the)h(output)g(\014le.)48 b(The)291 1912 y Fo(fopen)p Fs(,)32 b Fo(fprintln)p Fs(,)e(and)j Fo(close)e Fs(functions)i(p)r(erform)f(\014le)h(IO)f(as)g(discussed)g (in)h(the)g(IO)291 2012 y(section.)415 2111 y(In)j(addition,)h (commands)e(that)g(are)g(function)h(calls,)h(or)d(sp)r(ecial)h (expressions,)h(are)291 2211 y(in)n(terpreted)30 b(correctly)-7 b(.)43 b(Since)31 b(the)g Fo(fprintln)c Fs(function)k(can)f(tak)n(e)g (a)g(\014le)g(directly)-7 b(,)32 b(the)291 2311 y(ab)r(o)n(v)n(e)26 b(rule)h(can)g(b)r(e)h(abbreviated)f(as)g(follo)n(ws.)465 2470 y Fo(hello.c:)596 2569 y(fprintln\($@,)38 b($""#include)h ()h(int)j(main\(\))e({)i(printf\("Hello)38 b(world\\n"\);)h (}""\))291 2709 y @beginspecial @setspecial @endspecial 131 x Fl(8.4)135 b(section)46 b(rule)291 2922 y @beginspecial @setspecial @endspecial 100 x Fs(Rules)30 b(can)g(also)f(b)r(e)i (computed)g(using)f(the)g Fo(section)41 b(rule)29 b Fs(form,)i(where)f (a)g(rule)g(b)r(o)r(dy)291 3121 y(is)25 b(exp)r(ected)g(instead)h(of)f (an)g(expression.)35 b(In)25 b(the)h(follo)n(wing)e(rule,)i(the)f (\014le)h Fo(a.c)e Fs(is)h(copied)291 3221 y(on)n(to)37 b(the)h Fo(hello.c)d Fs(\014le)i(if)i(it)f(exists,)i(otherwise)d Fo(hello.c)e Fs(is)i(created)g(from)h(the)g(\014le)291 3321 y Fo(default.c)p Fs(.)465 3480 y Fo(hello.c:)639 3579 y(section)j(rule)770 3679 y(if)i($\(target-exists)37 b(a.c\))901 3779 y(hello.c:)j(a.c)1032 3878 y(cat)i(a.c)g(>)h(hello.c) 770 3978 y(else)901 4077 y(hello.c:)d(default.c)1032 4177 y(cp)i(default.c)e(hello.c)291 4317 y @beginspecial @setspecial @endspecial 131 x Fl(8.5)135 b(Sp)t(ecial)45 b(dep)t(endencies)291 4553 y @beginspecial @setspecial @endspecial 93 x Fk(8.5.1)112 b(:exists:)291 4799 y Fs(In)32 b(some)f(cases,)h(the)h(con)n(ten)n(ts)e(of)h(a)g(dep)r(endency)g(do)g (not)g(matter,)h(only)f(whether)g(the)291 4899 y(\014le)41 b(exists)f(or)h(not.)77 b(In)41 b(this)g(case,)j(the)d Fo(:exists:)d Fs(quali\014er)i(can)h(b)r(e)g(used)g(for)g(the)291 4998 y(dep)r(endency)-7 b(.)p eop end %%Page: 92 92 TeXDict begin 92 91 bop 739 282 a @beginspecial @setspecial @endspecial Fs(92)1929 b Fp(CHAPTER)27 b(8.)65 b(R)n(ULES)913 515 y Fo(foo.c:)41 b(a.c)i(:exists:)d(.flag)1044 615 y(if)j($\(test)e(-e)i(.flag\))1218 715 y($\(CP\))f(a.c)g($@)739 877 y @beginspecial @setspecial @endspecial 118 x Fk(8.5.2)112 b(:e\013ects:)739 1165 y Fs(Some)31 b(commands)g(pro)r(duce)g(\014les)h (b)n(y)f(side-e\013ect.)49 b(F)-7 b(or)31 b(example,)h(the)g Fo(latex)p Fs(\(1\))e(com-)739 1265 y(mand)25 b(pro)r(duces)f(a)h Fo(.aux)f Fs(\014le)h(as)f(a)h(side-e\013ect)g(of)g(pro)r(ducing)g(a)g Fo(.dvi)e Fs(\014le.)36 b(In)26 b(this)f(case,)739 1364 y(the)33 b Fo(:effects:)c Fs(quali\014er)j(can)g(b)r(e)h(used)g(to)f (list)h(the)g(side-e\013ect)g(explicitly)-7 b(.)52 b Fo(omake)30 b Fs(is)739 1464 y(careful)j(to)g(a)n(v)n(oid)f(sim)n (ultaneously)g(running)h(programs)f(that)h(ha)n(v)n(e)g(o)n(v)n (erlapping)e(side-)739 1563 y(e\013ects.)913 1791 y Fo(paper.dvi:)40 b(paper.tex)g(:effects:)f(paper.aux)1088 1891 y(latex)i(paper)739 2064 y @beginspecial @setspecial @endspecial 107 x Fk(8.5.3)112 b(:v)-6 b(alue:)739 2341 y Fs(The)27 b Fo(:value:)d Fs(dep)r(endency)j (is)g(used)f(to)h(sp)r(ecify)g(that)g(the)g(rule)g(execution)f(dep)r (ends)i(on)739 2441 y(the)g(v)-5 b(alue)27 b(of)h(an)f(expression.)36 b(F)-7 b(or)27 b(example,)g(the)h(follo)n(wing)e(rule)913 2669 y Fo(a:)43 b(b)g(c)g(:value:)e($\(X\))1088 2768 y(...)863 2987 y Fs(sp)r(eci\014es)g(that)g(\\a")e(should)i(b)r(e)g (recompiled)f(if)i(the)f(v)-5 b(alue)40 b(of)h Fo($\(X\))e Fs(c)n(hanges)h(\(X)739 3087 y(do)r(es)29 b(not)g(ha)n(v)n(e)e(to)i(b)r (e)h(a)e(\014lename\).)42 b(This)29 b(is)g(in)n(tended)g(to)g(allo)n(w) f(greater)f(con)n(trol)h(o)n(v)n(er)739 3187 y(dep)r(endencies.)863 3295 y(In)41 b(addition,)i(it)e(can)f(b)r(e)h(used)f(instead)g(of)g (other)g(kinds)g(of)h(dep)r(endencies.)75 b(F)-7 b(or)739 3395 y(example,)27 b(the)h(follo)n(wing)f(rule:)913 3623 y Fo(a:)43 b(b)g(:exists:)d(c)1088 3722 y(commands)863 3941 y Fs(is)28 b(the)g(same)f(as)913 4169 y Fo(a:)43 b(b)g(:value:)e($\(target-exists)c(c\))1088 4269 y(commands)863 4487 y Fs(Notes:)863 4681 y Fj(\017)k Fs(The)28 b(v)-5 b(alues)27 b(are)g(arbitrary)e(\(they)k(are)d(not)i(limited)g(to)g(v)-5 b(ariables\))863 4883 y Fj(\017)41 b Fs(The)23 b(v)-5 b(alues)23 b(are)e(ev)-5 b(aluated)23 b(at)g(rule)f(expansion)g(time,)i (so)e(expressions)f(con)n(taining)946 4982 y(v)-5 b(ariables)27 b(lik)n(e)g Fo($@)p Fs(,)g Fo($^)p Fs(,)g(etc)h(are)e(legal.)p eop end %%Page: 93 93 TeXDict begin 93 92 bop 291 282 a @beginspecial @setspecial @endspecial Fp(8.6.)63 b Fg(.SCANNER)25 b Fp(R)n(ULES)1935 b Fs(93)291 432 y @beginspecial @setspecial @endspecial 83 x Fl(8.6)135 b Ff(.SCANNER)41 b Fl(rules)291 697 y Fs(Scanner)17 b(rules)h(de\014ne)h(a)f(w)n(a)n(y)f(to)h(sp)r(ecify)h (automatic)e(dep)r(endency)i(scanning.)33 b(A)19 b Fo(.SCANNER)291 797 y Fs(rule)27 b(has)g(the)h(follo)n(wing)e(form.)465 961 y Fo(.SCANNER:)40 b(target:)g(dependencies)639 1060 y(commands)415 1225 y Fs(The)29 b(rule)f(is)g(used)h(to)f(compute)h (additional)f(dep)r(endencies)g(that)h(migh)n(t)g(b)r(e)g(de\014ned)291 1324 y(in)h(the)g(source)f(\014les)h(for)g(the)h(sp)r(eci\014ed)f (target.)44 b(The)30 b(result)g(of)g(executing)f(the)i(scanner)291 1424 y(commands)21 b Fi(must)30 b Fs(b)r(e)22 b(a)g(sequence)g(of)h (dep)r(endencies)f(in)h(OMak)n(e)e(format,)i(prin)n(ted)f(to)h(the)291 1523 y(standard)28 b(output.)42 b(F)-7 b(or)28 b(example,)h(on)g(GNU)h (systems)e(the)i Fo(gcc)42 b(-MM)g(foo.c)28 b Fs(pro)r(duces)291 1623 y(dep)r(endencies)f(for)h(the)g(\014le)f Fo(foo.c)f Fs(\(based)h(on)h Fo(#include)c Fs(information\).)415 1723 y(W)-7 b(e)33 b(can)f(use)g(this)g(to)g(sp)r(ecify)h(a)f(scanner)f (for)h(C)g(\014les)g(that)h(adds)f(the)g(scanned)g(de-)291 1822 y(p)r(endencies)k(for)f(the)h Fo(.o)f Fs(\014le.)62 b(The)36 b(follo)n(wing)f(scanner)g(sp)r(eci\014es)g(that)i(dep)r (endencies)291 1922 y(for)f(a)g(\014le,)j(sa)n(y)d Fo(foo.o)f Fs(can)h(b)r(e)h(computed)g(b)n(y)g(running)f Fo(gcc)43 b(-MM)f(foo.c)p Fs(.)62 b(F)-7 b(urther-)291 2022 y(more,)33 b Fo(foo.c)d Fs(is)i(a)g(dep)r(endency)-7 b(,)35 b(so)c(the)i(scanner)f (should)g(b)r(e)h(recomputed)f(whenev)n(er)291 2121 y(the)c Fo(foo.c)d Fs(\014le)j(c)n(hanges.)465 2285 y Fo(.SCANNER:)40 b(\045.o:)i(\045.c)639 2385 y(gcc)h(-MM)f($<)415 2549 y Fs(Let's)28 b(supp)r(ose)f(that)h(the)g(command)f Fo(gcc)42 b(-MM)h(foo.c)25 b Fs(prin)n(ts)j(the)g(follo)n(wing)e(line.)465 2713 y Fo(foo.o:)41 b(foo.h)h(/usr/include/st)o(dio)o(.h)415 2877 y Fs(The)22 b(result)f(is)h(that)g(the)g(\014les)g Fo(foo.h)d Fs(and)j Fo(/usr/include/std)o(io)o(.h)15 b Fs(are)21 b(considered)291 2977 y(to)26 b(b)r(e)h(dep)r(endencies)g (of)f Fo(foo.o)p Fs(|that)f(is,)i Fo(foo.o)d Fs(should)i(b)r(e)h (rebuilt)g(if)g(either)f(of)h(these)291 3076 y(\014les)g(c)n(hanges.) 415 3176 y(This)e(w)n(orks,)f(to)h(an)f(exten)n(t.)36 b(One)25 b(nice)g(feature)f(is)h(that)g(the)h(scanner)e(will)h(b)r(e)g (re-run)291 3276 y(whenev)n(er)32 b(the)h Fo(foo.c)e Fs(\014le)j(c)n(hanges.)52 b(Ho)n(w)n(ev)n(er,)33 b(one)f(problem)h(is) g(that)h(dep)r(endencies)291 3375 y(in)28 b(C)g(are)f Fi(r)l(e)l(cursive)p Fs(.)39 b(That)28 b(is,)g(if)h(the)f(\014le)h Fo(foo.h)d Fs(is)i(mo)r(di\014ed,)g(it)h(migh)n(t)f(include)g(other)291 3475 y(\014les,)g(establishing)g(further)g(dep)r(endencies.)39 b(What)29 b(w)n(e)f(need)h(is)f(to)g(re-run)f(the)i(scanner)291 3574 y(if)f Fo(foo.h)d Fs(c)n(hanges)h(to)r(o.)415 3674 y(W)-7 b(e)30 b(can)f(do)g(this)h(with)g(a)f Fi(value)36 b Fs(dep)r(endency)-7 b(.)43 b(The)30 b(v)-5 b(ariable)28 b Fo($&)h Fs(is)g(de\014ned)h(as)f(the)291 3774 y(dep)r(endency)f (results)f(from)h(an)n(y)f(previous)f(scan.)37 b(W)-7 b(e)28 b(can)g(add)g(these)f(as)h(dep)r(endencies)291 3873 y(using)f(the)h Fo(digest)d Fs(function,)j(whic)n(h)g(computes)f (an)h(MD5)f(digest)h(of)f(the)h(\014les.)465 4037 y Fo(.SCANNER:)40 b(\045.o:)i(\045.c)g(:value:)f($\(digest)f($&\))639 4137 y(gcc)j(-MM)f($<)415 4301 y Fs(No)n(w,)21 b(when)f(the)g(\014le)g Fo(foo.h)e Fs(c)n(hanges,)i(its)g(digest)g(will)g(also)f(c)n(hange,)h (and)g(the)g(scanner)291 4401 y(will)27 b(b)r(e)h(re-run)f(b)r(ecause)g (of)h(the)g(v)-5 b(alue)27 b(dep)r(endency)h(\(since)g Fo($&)f Fs(will)g(include)h Fo(foo.h)p Fs(\).)415 4500 y(This)38 b(still)h(is)f(not)h(quite)f(righ)n(t.)69 b(The)38 b(problem)g(is)g(that)h(the)f(C)h(compiler)e(uses)h(a)291 4600 y Fi(se)l(ar)l(ch-p)l(ath)j Fs(for)33 b(include)h(\014les.)54 b(There)33 b(ma)n(y)g(b)r(e)h(sev)n(eral)e(v)n(ersions)g(of)h(the)h (\014le)g Fo(foo.h)p Fs(,)291 4700 y(and)e(the)h(one)f(that)g(is)g(c)n (hosen)g(dep)r(ends)h(on)f(the)h(include)f(path.)52 b(What)32 b(w)n(e)g(need)h(is)f(to)291 4799 y(base)27 b(the)h(dep)r(endencies)f (on)h(the)g(searc)n(h)e(path.)415 4899 y(The)20 b Fo($\(digest-in-path) o(-o)o(pti)o(on)o(al)37 b(...\))18 b Fs(function)i(computes)g(the)g (digest)f(based)291 4998 y(on)27 b(a)g(searc)n(h)f(path,)i(giving)f(us) g(a)g(solution)h(that)f(w)n(orks.)p eop end %%Page: 94 94 TeXDict begin 94 93 bop 739 282 a @beginspecial @setspecial @endspecial Fs(94)1929 b Fp(CHAPTER)27 b(8.)65 b(R)n(ULES)913 515 y Fo(.SCANNER:)40 b(\045.o:)i(\045.c)g(:value:)f($\(digest-in-path) o(-op)o(ti)o(ona)o(l)c($\(INCLUDES\),)i($&\))1044 615 y(gcc)j(-MM)h($\(addprefix)c(-I,)j($\(INCLUDES\)\))d($<)863 774 y Fs(The)33 b(standard)f(output)h(of)f(the)h(scanner)f(rules)g (will)h(b)r(e)g(captured)f(b)n(y)g(OMak)n(e)f(and)739 874 y(is)f(not)g(allo)n(w)n(ed)f(to)h(con)n(tain)f(an)n(y)g(con)n(ten)n (t)h(that)g(OMak)n(e)f(will)i(not)f(b)r(e)g(able)g(to)g(parse)f(as)739 973 y(a)i(dep)r(endency)-7 b(.)48 b(The)32 b(output)f(is)h(allo)n(w)n (ed)e(to)h(con)n(tain)f(dep)r(endency)i(sp)r(eci\014cations)f(for)739 1073 y(unrelated)21 b(targets,)h(ho)n(w)n(ev)n(er)e(suc)n(h)i(dep)r (endencies)g(will)g(b)r(e)g(ignored.)34 b(The)22 b(scanner)f(rules)739 1172 y(are)27 b(allo)n(w)n(ed)g(to)h(pro)r(duce)f(arbitrary)f(output)j (on)f(the)g(standard)g(error)e(c)n(hannel)h(|)i(suc)n(h)739 1272 y(output)f(will)g(b)r(e)g(handled)g(in)g(the)g(same)g(w)n(a)n(y)e (as)h(the)h(output)h(of)e(the)h(ordinary)e(rules)i(\(in)739 1372 y(other)21 b(w)n(ords,)h(it)h(will)f(b)r(e)h(presen)n(ted)e(to)h (the)h(user,)f(when)g(dictated)h(b)n(y)f(the)g Fo(--output-)p Fh(:)14 b(:)g(:)739 1471 y Fs(options)27 b(enabled\).)863 1571 y(Additional)h(examples)f(of)h(the)g Fo(.SCANNER)c Fs(rules)j(can)g(b)r(e)h(found)g(in)g(Section)g @beginspecial @setspecial @endspecial(3.4.3)p @beginspecial @setspecial @endspecial(.)739 1699 y @beginspecial @setspecial @endspecial 100 x Fk(8.6.1)112 b(Named)39 b(scanners,)f(and)h(the)e Fe(:scanner:)52 b Fk(dep)s(endencies)739 1952 y Fs(Sometimes)22 b(it)g(ma)n(y)f(b)r(e)h(useful)h(to)e(sp)r(ecify)i(explicitly)f(whic)n (h)f(scanner)g(should)h(b)r(e)g(used)g(in)739 2052 y(a)g(rule.)35 b(F)-7 b(or)22 b(example,)i(w)n(e)e(migh)n(t)h(compile)f Fo(.c)g Fs(\014les)h(with)g(di\013eren)n(t)g(options,)g(or)f(\(hea)n(v) n(en)739 2152 y(help)j(us\))h(w)n(e)e(ma)n(y)h(b)r(e)g(using)g(b)r(oth) g Fo(gcc)f Fs(and)h(the)g(Microsoft)f(Visual)h(C++)g(compiler)f Fo(cl)p Fs(.)739 2251 y(In)31 b(general,)f(the)h(target)f(of)h(a)f Fo(.SCANNER)d Fs(is)k(not)g(tied)g(to)g(a)f(particular)f(target,)i(and) g(w)n(e)739 2351 y(ma)n(y)c(name)g(it)h(as)f(w)n(e)g(lik)n(e.)913 2510 y Fo(.SCANNER:)40 b(scan-gcc-\045.c:)e(\045.c)43 b(:value:)d($\(digest-in-path-)o(op)o(tio)o(na)o(l)e($\(INCLUDES\),)g ($&\))1088 2610 y(gcc)k(-MM)g($\(addprefix)d(-I,)k($\(INCLUDES\)\))38 b($<)913 2809 y(.SCANNER:)i(scan-cl-\045.c:)f(\045.c)j(:value:)f ($\(digest-in-path)o(-o)o(pt)o(ion)o(al)c($\(INCLUDES\),)i($&\))1088 2908 y(cl)j(--scan-dependenci)o(es)o(-or)o(-s)o(ome)o(th)o(ing)37 b($\(addprefix)i(/I,)j($\(INCLUDES\)\))d($<)863 3067 y Fs(The)d(next)f(step)h(is)f(to)g(de\014ne)h(explicit)f(scanner)f(dep) r(endencies.)61 b(The)35 b Fo(:scanner:)739 3167 y Fs(dep)r(endency)25 b(is)f(used)g(for)g(this.)36 b(In)24 b(this)h(case,)f(the)h(scanner)e (dep)r(endencies)i(are)e(sp)r(eci\014ed)739 3267 y(explicitly)-7 b(.)913 3426 y Fo($\(GCC_FILES\):)38 b(\045.o:)k(\045.c)h(:scanner:)d (scan-gcc-\045c)1088 3525 y(gcc)i(...)913 3725 y($\(CL_FILES\):)d (\045.obj:)i(\045.c)h(:scanner:)e(scan-cl-\045c)1088 3824 y(cl)i(...)863 3983 y Fs(Explicit)33 b Fo(:scanner:)c Fs(scanner)j(sp)r(eci\014cation)h(ma)n(y)f(also)g(b)r(e)h(used)g(to)g (state)f(that)i(a)739 4083 y(single)22 b Fo(.SCANNER)d Fs(rule)j(should)g(b)r(e)h(used)f(to)g(generate)f(dep)r(endencies)i (for)f(more)f(than)i(one)739 4182 y(target.)36 b(F)-7 b(or)27 b(example,)913 4341 y Fo(.SCANNER:)40 b(scan-all-c:)f ($\(GCC_FILES\))g(:value:)h($\(digest-in-path-)o(opt)o(io)o(nal)d ($\(INCLUDES\),)h($&\))1088 4441 y(gcc)k(-MM)g($\(addprefix)d(-I,)k ($\(INCLUDES\)\))38 b($\(GCC_FILES\))913 4640 y($\(GCC_FILES\):)g (\045.o:)k(\045.c)h(:scanner:)d(scan-all-c)1088 4740 y(...)863 4899 y Fs(The)30 b(ab)r(o)n(v)n(e)e(has)g(the)i(adv)-5 b(an)n(tage)27 b(of)j(only)e(running)i Fo(gcc)e Fs(once)h(and)g(a)g (disadv)-5 b(an)n(tage)739 4998 y(that)25 b(when)g(a)f(single)g(source) g(\014le)h(c)n(hanges,)f(all)g(the)h(\014les)g(will)g(end)g(up)g(b)r (eing)g(re-scanned.)p eop end %%Page: 95 95 TeXDict begin 95 94 bop 291 282 a @beginspecial @setspecial @endspecial Fp(8.7.)63 b(.DEF)-9 b(A)n(UL)i(T)2173 b Fs(95)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(8.6.2)112 b(Notes)291 670 y Fs(In)33 b(most)h(cases,)g(y)n(ou)f (w)n(on't)h(need)f(to)h(de\014ne)g(scanners)e(of)i(y)n(our)e(o)n(wn.)55 b(The)34 b(standard)291 769 y(installation)18 b(includes)h(default)g (scanners)f(\(b)r(oth)h(explicitly)g(and)g(implicitly)g(named)g(ones\)) 291 869 y(for)27 b(C,)g(OCaml,)g(and)h(L)1021 852 y Fn(A)1058 869 y Fs(T)1104 887 y(E)1150 869 y(X)g(\014les.)415 969 y(The)c @beginspecial @setspecial @endspecial Fo(SCANNER)p 895 969 27 4 v 29 w(MODE)e Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial 23 w(con)n(trols)22 b(the)i(usage)f(of)h (implicit)h(scanner)e(dep)r(enden-)291 1069 y(cies.)415 1169 y(The)39 b(explicit)g Fo(:scanner:)c Fs(dep)r(endencies)j(reduce)h (the)g(c)n(hances)e(of)i(scanner)e(mis-)291 1269 y(sp)r (eci\014cations.)69 b(In)39 b(large)f(complicated)g(pro)5 b(jects)38 b(it)h(migh)n(t)g(b)r(e)g(a)g(go)r(o)r(d)f(idea)g(to)h(set) 291 1368 y Fo(SCANNER_MODE)28 b Fs(to)34 b Fo(error)e Fs(and)h(use)h(only)f(the)h(named)g Fo(.SCANNER)c Fs(rules)j(and)h (explicit)291 1468 y Fo(:scanner:)24 b Fs(sp)r(eci\014cations.)291 1612 y @beginspecial @setspecial @endspecial 134 x Fl(8.7)135 b(.DEF)-15 b(A)l(UL)k(T)291 1929 y Fs(The)34 b Fo(.DEFAULT)d Fs(target)i(sp)r(eci\014es)i(a)e(target)h(to)g(b)r(e)h(built)g(b)n(y)f (default)g(if)42 b Fo(omake)32 b Fs(is)i(run)291 2029 y(without)19 b(explicit)h(targets.)33 b(The)20 b(follo)n(wing)e(rule)h (instructs)g Fo(omake)f Fs(to)h(build)h(the)g(program)291 2128 y Fo(hello)25 b Fs(b)n(y)i(default)421 2314 y Fo(.DEFAULT:)40 b(hello)291 2442 y @beginspecial @setspecial @endspecial 150 x Fl(8.8)135 b(.SUBDIRS)291 2775 y Fs(The)20 b Fo(.SUBDIRS)d Fs(target)j(is)g(used)g(to)h(sp)r(ecify)f(a)g(set)h(of)f(sub)r (directories)f(that)i(are)e(part)h(of)h(the)291 2875 y(pro)5 b(ject.)38 b(Eac)n(h)27 b(sub)r(directory)h(should)g(ha)n(v)n (e)f(its)i(o)n(wn)f Fo(OMakefile)p Fs(,)d(whic)n(h)j(is)g(ev)-5 b(aluated)291 2974 y(in)27 b(the)h(con)n(text)g(of)f(the)h(curren)n(t)f (en)n(vironmen)n(t.)421 3160 y Fo(.SUBDIRS:)40 b(src)j(doc)f(tests)415 3345 y Fs(This)29 b(rule)g(sp)r(eci\014es)h(that)f(the)h Fo(OMakefile)p Fs(s)25 b(in)30 b(eac)n(h)e(of)i(the)f Fo(src)p Fs(,)g Fo(doc)p Fs(,)g(and)g Fo(tests)291 3445 y Fs(directories)d(should)h(b)r(e)h(read.)415 3545 y(In)34 b(some)f(cases,)h(esp)r(ecially)f(when)h(the)g Fo(OMakefile)p Fs(s)c(are)j(v)n(ery)f(similar)h(in)h(a)f(large)291 3645 y(n)n(um)n(b)r(er)f(of)h(sub)r(directories,)g(it)g(is)g(incon)n(v)n (enien)n(t)f(to)h(ha)n(v)n(e)e(a)i(separate)e Fo(OMakefile)e Fs(for)291 3744 y(eac)n(h)24 b(directory)-7 b(.)35 b(If)25 b(the)h Fo(.SUBDIRS)c Fs(rule)i(has)h(a)g(b)r(o)r(dy)-7 b(,)26 b(the)f(b)r(o)r(dy)g(is)g(used)h(instead)e(of)i(the)291 3844 y Fo(OMakefile)p Fs(.)421 4030 y Fo(.SUBDIRS:)40 b(src1)i(src2)g(src3)552 4129 y(println\(Subdirec)o(tor)o(y)37 b($\(CWD\)\))552 4229 y(.DEFAULT:)j(lib.a)415 4414 y Fs(In)32 b(this)f(case,)g(the)h Fo(src1)p Fs(,)f Fo(src2)p Fs(,)f(and)h Fo(src3)f Fs(\014les)h(do)g(not)g(need)g Fo(OMakefile)p Fs(s.)44 b(F)-7 b(ur-)291 4514 y(thermore,)26 b(if)i(one)g(exists,)f(it)h(is)f(ignored.)36 b(The)28 b(follo)n(wing)e(includes)i(the)g(\014le)g(if)g(it)g(exists.)421 4700 y Fo(.SUBDIRS:)40 b(src1)i(src2)g(src3)596 4799 y(if)g($\(file-exists)d(OMakefile\))726 4899 y(include)i(OMakefile)596 4998 y(.DEFAULT:)f(lib.a)p eop end %%Page: 96 96 TeXDict begin 96 95 bop 739 282 a @beginspecial @setspecial @endspecial Fs(96)1929 b Fp(CHAPTER)27 b(8.)65 b(R)n(ULES)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(8.9)135 b(.INCLUDE)739 697 y Fs(The)22 b Fo(.INCLUDE)d Fs(target)i(is)h(lik)n (e)f(the)i Fo(include)c Fs(directiv)n(e,)k(but)f(it)h(sp)r(eci\014es)e (a)h(rule)g(to)g(build)739 797 y(the)28 b(\014le)g(if)g(it)g(do)r(es)f (not)h(exist.)870 951 y Fo(.INCLUDE:)40 b(config)1044 1050 y(echo)i("CONFIG_READ)d(=)k(true")e(>)i(config)913 1250 y(echo)f(CONFIG_READ)d(is)k($\(CONFIG_READ\))863 1404 y Fs(Y)-7 b(ou)28 b(ma)n(y)f(also)f(sp)r(ecify)i(dep)r(endencies)g (to)g(an)f Fo(.INCLUDE)d Fs(rule.)870 1558 y Fo(.INCLUDE:)40 b(config:)g(config.defaults)1000 1657 y(cp)j(config.defaults)38 b(config)863 1811 y Fs(A)27 b(w)n(ord)e(of)h(caution)f(is)h(in)g(order) f(here.)36 b(The)26 b(usual)f(p)r(olicy)h(is)g(used)g(for)f (determining)739 1911 y(when)j(the)g(rule)f(is)g(out-of-date.)36 b(The)28 b(rule)f(is)h(executed)f(if)h(an)n(y)f(of)h(the)g(follo)n (wing)e(hold.)863 2065 y Fj(\017)41 b Fs(the)28 b(target)f(do)r(es)g (not)h(exist,)863 2219 y Fj(\017)41 b Fs(the)28 b(rule)g(has)f(nev)n (er)f(b)r(een)i(executed)g(b)r(efore,)863 2374 y Fj(\017)41 b Fs(an)n(y)20 b(of)f(the)i(follo)n(wing)d(ha)n(v)n(e)h(c)n(hanged)g (since)g(the)i(last)e(time)i(the)f(rule)f(w)n(as)g(executed,)1040 2529 y Fq({)41 b Fs(the)28 b(target,)1040 2650 y Fq({)41 b Fs(the)28 b(dep)r(endencies,)1040 2771 y Fq({)41 b Fs(the)28 b(commands-text.)863 2925 y(In)20 b(some)g(of)f(the)i(cases,) f(this)g(will)g(mean)g(that)g(the)g(rule)g(is)f(executed)h(ev)n(en)g (if)g(the)g(target)739 3025 y(\014le)31 b(already)f(exists.)47 b(If)31 b(the)h(target)e(is)h(a)f(\014le)i(that)f(y)n(ou)f(exp)r(ect)i (to)f(edit)g(b)n(y)g(hand)g(\(and)739 3125 y(therefore)d(y)n(ou)h (don't)g(w)n(an)n(t)f(to)h(o)n(v)n(erwrite)f(it\),)i(y)n(ou)e(should)h (mak)n(e)f(the)i(rule)f(ev)-5 b(aluation)739 3224 y(conditional)27 b(on)g(whether)h(the)g(target)e(already)g(exists.)870 3378 y Fo(.INCLUDE:)40 b(config:)g(config.defaults)1044 3478 y(#)j(Don't)f(overwrite)e(my)i(carefully)e(hand-edited)f(file)1044 3578 y(if)k($\(not)e($\(file-exists)d(config\)\))1175 3677 y(cp)43 b(config.defaults)37 b(config)739 3816 y @beginspecial @setspecial @endspecial 131 x Fl(8.10)135 b(.PHONY)739 4129 y Fs(A)28 b(\\phon)n(y")d(target)i(is)g(a)g(target)f (that)i(is)f(not)g(a)g(real)f(\014le,)i(but)g(exists)f(to)g(collect)g (a)g(set)g(of)739 4228 y(dep)r(endencies.)35 b(Phon)n(y)19 b(targets)g(are)h(sp)r(eci\014ed)h(with)g(the)f Fo(.PHONY)f Fs(rule.)34 b(In)20 b(the)h(follo)n(wing)739 4328 y(example,)j(the)f Fo(install)e Fs(target)h(do)r(es)h(not)g(corresp)r(ond)f(to)h(a)g (\014le,)h(but)g(it)g(corresp)r(onds)d(to)739 4428 y(some)30 b(commands)g(that)h(should)g(b)r(e)g(run)g(whenev)n(er)e(the)j Fo(install)27 b Fs(target)j(is)h(built)g(\(for)739 4527 y(example,)c(b)n(y)g(running)h Fo(omake)41 b(install)p Fs(\).)870 4681 y Fo(.PHONY:)f(install)870 4880 y(install:)g (myprogram.exe)1000 4980 y(cp)j(myprogram.exe)38 b(/usr/bin)p eop end %%Page: 97 97 TeXDict begin 97 96 bop 291 282 a @beginspecial @setspecial @endspecial Fp(8.11.)63 b(R)n(ULE)27 b(SCOPING)1904 b Fs(97)291 432 y @beginspecial @setspecial @endspecial 83 x Fl(8.11)135 b(Rule)46 b(scoping)291 699 y Fs(As)28 b(w)n(e)g(ha)n(v)n(e)f(men)n(tioned)i(b)r(efore,)f Fo(omake)f Fs(is)h(a)g Fi(sc)l(op)l(e)l(d)38 b Fs(language.)g(This)28 b(pro)n(vides)f(great)291 799 y(\015exibilit)n(y|di\013eren)n(t)20 b(parts)g(of)g(the)h(pro)5 b(ject)20 b(can)g(de\014ne)h(di\013eren)n(t) f(con\014gurations)f(with-)291 899 y(out)26 b(in)n(terfering)g(with)g (one)g(another)g(\(for)g(example,)g(one)g(part)g(of)h(the)f(pro)5 b(ject)26 b(migh)n(t)h(b)r(e)291 998 y(compiled)g(with)h Fo(CFLAGS=-O3)c Fs(and)j(another)g(with)h Fo(CFLAGS=-g)p Fs(\).)415 1099 y(But)k(ho)n(w)f(is)h(the)g(scop)r(e)g(for)f(a)h (target)e(\014le)i(selected?)50 b(Supp)r(ose)32 b(w)n(e)f(are)g (building)h(a)291 1199 y(\014le)27 b Fo(dir/foo.o)p Fs(.)34 b Fo(omake)25 b Fs(uses)i(the)h(follo)n(wing)f(rules)g(to)g(determine)h (the)g(scop)r(e.)415 1386 y Fj(\017)41 b Fs(First,)34 b(if)g(there)f(is)f(an)h Fi(explicit)42 b Fs(rule)32 b(for)h(building)g Fo(dir/foo.o)c Fs(\(a)k(rule)g(with)g(no)498 1485 y(wildcards\),)25 b(the)g(con)n(text)f(for)g(that)h(rule)f (determines)g(the)h(scop)r(e)g(for)f(building)h(the)498 1585 y(target.)415 1756 y Fj(\017)41 b Fs(Otherwise,)25 b(the)h(directory)f Fo(dir/)f Fs(m)n(ust)h(b)r(e)h(part)f(of)h(the)g (pro)5 b(ject.)35 b(This)26 b(normally)498 1855 y(means)32 b(that)g(a)g(con\014guration)f(\014le)h Fo(dir/OMakefile)27 b Fs(exists)32 b(\(although,)h(see)f(the)498 1955 y Fo(.SUBDIRS)21 b Fs(section)i(for)h(another)f(w)n(a)n(y)g(to)g(sp)r(ecify)i(the)f Fo(OMakefile)p Fs(\).)32 b(In)24 b(this)h(case,)498 2054 y(the)j(scop)r(e)f(of)h(the)g(target)e(is)i(the)g(scop)r(e)f(at)h(the)g (end)f(of)h(the)g Fo(dir/OMakefile)p Fs(.)415 2242 y(T)-7 b(o)33 b(illustrate)f(rule)h(scoping,)g(let's)g(go)f(bac)n(k)g(to)g (the)i(example)e(of)h(a)f(\\Hello)g(w)n(orld")291 2341 y(program)c(with)k(t)n(w)n(o)e(\014les.)47 b(Here)30 b(is)h(an)g(example)f Fo(OMakefile)d Fs(\(the)32 b(t)n(w)n(o)e (de\014nitions)h(of)291 2441 y Fo(CFLAGS)25 b Fs(are)h(for)h (illustration\).)465 2629 y Fo(#)43 b(The)f(executable)e(is)j(compiled) d(with)i(debugging)465 2729 y(CFLAGS)f(=)i(-g)465 2829 y(hello:)e(hello_code.o)e(hello_lib.o)596 2928 y($\(CC\))i($\(CFLAGS\)) f(-o)j($@)g($+)465 3127 y(#)g(Redefine)d(CFLAGS)465 3227 y(CFLAGS)h(+=)i(-O3)415 3414 y Fs(In)24 b(this)h(pro)5 b(ject,)24 b(the)h(target)e Fo(hello)f Fs(is)i Fi(explicit)p Fs(.)37 b(The)24 b(scop)r(e)g(of)g(the)h Fo(hello)d Fs(target)h(is)291 3514 y(the)h(line)g(b)r(eginning)g(with)h Fo(hello:)p Fs(,)d(where)i(the)g(v)-5 b(alue)24 b(of)g Fo(CFLAGS)e Fs(is)i Fo(-g)p Fs(.)35 b(The)24 b(other)g(t)n(w)n(o)291 3613 y(targets,)31 b Fo(hello_code.o)26 b Fs(and)31 b Fo(hello_lib.o)26 b Fs(do)31 b(not)g(app)r(ear)g(as)f(explicit)i (targets,)f(so)291 3713 y(their)24 b(scop)r(e)f(is)h(at)g(the)g(end)h (of)f(the)g Fo(OMakefile)p Fs(,)d(where)j(the)g Fo(CFLAGS)e Fs(v)-5 b(ariable)23 b(is)h(de\014ned)291 3813 y(to)32 b(b)r(e)i Fo(-g)43 b(-O3)p Fs(.)51 b(That)33 b(is,)i Fo(hello)30 b Fs(will)k(b)r(e)f(link)n(ed)g(with)g Fo(CFLAGS=-g)d Fs(and)i(the)i Fo(.o)e Fs(\014les)291 3912 y(will)27 b(b)r(e)h(compiled)g(with)g Fo(CFLAGS=-g)40 b(-O3)p Fs(.)415 4013 y(W)-7 b(e)34 b(can)g(c)n(hange)f(this)h(b)r(eha)n(vior)f(for)g (an)n(y)g(of)h(the)h(targets)d(b)n(y)i(sp)r(ecifying)g(them)h(as)291 4113 y(explicit)27 b(targets.)36 b(F)-7 b(or)26 b(example,)h(supp)r (ose)g(w)n(e)g(wish)g(to)h(compile)f Fo(hello_lib.o)c Fs(with)k(a)291 4212 y(prepro)r(cessor)e(v)-5 b(ariable)26 b Fo(LIBRARY)p Fs(.)465 4401 y Fo(#)43 b(The)f(executable)e(is)j (compiled)d(with)i(debugging)465 4500 y(CFLAGS)f(=)i(-g)465 4600 y(hello:)e(hello_code.o)e(hello_lib.o)596 4700 y($\(CC\))i ($\(CFLAGS\))f(-o)j($@)g($+)465 4899 y(#)g(Compile)e(hello_lib.o)e (with)j(CFLAGS)f(=)i(-g)g(-DLIBRARY)465 4998 y(section)p eop end %%Page: 98 98 TeXDict begin 98 97 bop 739 282 a @beginspecial @setspecial @endspecial Fs(98)1929 b Fp(CHAPTER)27 b(8.)65 b(R)n(ULES)1088 515 y Fo(CFLAGS)41 b(+=)h(-DLIBRARY)1088 615 y(hello_lib.o:)913 814 y(#)h(Redefine)e(CFLAGS)913 914 y(CFLAGS)g(+=)i(-O3)863 1095 y Fs(In)h(this)g(case,)i Fo(hello_lib.o)39 b Fs(is)44 b(also)e(men)n(tioned)i(as)e(an)i(explicit)f(target,)k(in)d(a)739 1194 y(scop)r(e)30 b(where)f Fo(CFLAGS=-g)40 b(-DLIBRARY)p Fs(.)27 b(Since)j(no)g(rule)g(b)r(o)r(dy)h(is)f(sp)r(eci\014ed,)h(it)g (is)f(com-)739 1294 y(piled)41 b(using)g(the)h(usual)e(implicit)i(rule) f(for)g(building)g Fo(.o)g Fs(\014les)g(\(in)g(a)g(con)n(text)g(where) 739 1394 y Fo(CFLAGS=-g)f(-DLIBRARY)p Fs(\).)739 1530 y @beginspecial @setspecial @endspecial 96 x Fk(8.11.1)112 b(Scoping)39 b(of)e(implicit)h(rules)739 1779 y Fs(Implicit)d(rules)e (\(rules)g(con)n(taining)g(wildcard)g(patterns\))h(are)f Fi(not)42 b Fs(global,)34 b(they)g(follo)n(w)739 1879 y(the)28 b(normal)f(scoping)g(con)n(v)n(en)n(tion.)37 b(This)28 b(allo)n(ws)f(di\013eren)n(t)h(parts)f(of)h(a)g(pro)5 b(ject)27 b(to)h(ha)n(v)n(e)739 1978 y(di\013eren)n(t)i(sets)f(of)h (implicit)g(rules.)42 b(If)30 b(w)n(e)g(lik)n(e,)f(w)n(e)h(can)f(mo)r (dify)h(the)g(example)f(ab)r(o)n(v)n(e)f(to)739 2078 y(pro)n(vide)e(a)i(new)f(implicit)i(rule)e(for)g(building)h Fo(hello_lib.o)p Fs(.)913 2259 y Fo(#)43 b(The)g(executable)c(is)k (compiled)d(with)i(debugging)913 2358 y(CFLAGS)f(=)j(-g)913 2458 y(hello:)d(hello_code.o)e(hello_lib.o)1044 2558 y($\(CC\))j($\(CFLAGS\))d(-o)k($@)g($+)913 2757 y(#)g(Compile)e (hello_lib.o)e(with)j(CFLAGS)f(=)i(-g)g(-DLIBRARY)913 2857 y(section)1088 2956 y(\045.o:)f(\045.c)1262 3056 y($\(CC\))f($\(CFLAGS\))f(-DLIBRARY)g(-c)j($<)1088 3155 y(hello_lib.o:)913 3355 y(#)g(Redefine)e(CFLAGS)913 3454 y(CFLAGS)g(+=)i(-O3)863 3635 y Fs(In)c(this)g(case,)i(the)e(target)f Fo(hello_lib.o)d Fs(is)j(built)i(in)f(a)f(scop)r(e)h(with)g(a)f(new)h (im-)739 3735 y(plicit)h(rule)f(for)g(building)g Fo(\045.o)g Fs(\014les.)72 b(The)39 b(implicit)h(rule)f(adds)g(the)h Fo(-DLIBRARY)c Fs(op-)739 3834 y(tion.)46 b(This)31 b(implicit)g(rule)g (is)f(de\014ned)h(only)f(for)g(the)i(target)d Fo(hello_lib.o)p Fs(;)f(the)j(target)739 3934 y Fo(hello_code.o)23 b Fs(is)k(built)h(as) f(normal.)739 4058 y @beginspecial @setspecial @endspecial 108 x Fk(8.11.2)112 b(Scoping)39 b(of)47 b Fe(.SCANNER)40 b Fk(rules)739 4319 y Fs(Scanner)26 b(rules)f(are)h(scop)r(ed)g(the)h (same)e(w)n(a)n(y)h(as)f(normal)h(rules.)36 b(If)26 b(the)h Fo(.SCANNER)c Fs(rule)j(is)739 4419 y(explicit)j(\(con)n(taining)g(no)g (wildcard)g(patterns\),)g(then)h(the)g(scop)r(e)e(of)i(the)f(scan)g (target)f(is)739 4519 y(the)d(same)g(as)f(the)h(the)h(rule.)35 b(If)26 b(the)f Fo(.SCANNER)d Fs(rule)i(is)h(implicit,)h(then)g(the)f (en)n(vironmen)n(t)739 4618 y(is)i(tak)n(en)g(from)h(the)g Fo(:scanner:)c Fs(dep)r(endency)-7 b(.)913 4799 y Fo(#)43 b(The)g(executable)c(is)k(compiled)d(with)i(debugging)913 4899 y(CFLAGS)f(=)j(-g)913 4998 y(hello:)d(hello_code.o)e(hello_lib.o)p eop end %%Page: 99 99 TeXDict begin 99 98 bop 291 282 a @beginspecial @setspecial @endspecial Fp(8.11.)63 b(R)n(ULE)27 b(SCOPING)1904 b Fs(99)596 515 y Fo($\(CC\))41 b($\(CFLAGS\))f(-o)j($@)g($+)465 715 y(#)g(scanner)e(for)h(.c)h(files)465 814 y(.SCANNER:)d (scan-c-\045.c:)f(\045.c)596 914 y($\(CC\))i($\(CFLAGS\))f(-MM)i($<)465 1113 y(#)h(Compile)e(hello_lib.o)e(with)j(CFLAGS)f(=)i(-g)g(-DLIBRARY) 465 1213 y(section)639 1312 y(CFLAGS)e(+=)i(-DLIBRARY)639 1412 y(hello_lib.o:)c(hello_lib.c)g(:scanner:)h(scan-c-hello_lib)o(.c) 770 1512 y($\(CC\))i($\(CFLAGS\))d(-c)k($<)465 1711 y(#)g(Compile)e (hello_code.c)d(with)k(CFLAGS)f(=)j(-g)e(-O3)465 1810 y(section)639 1910 y(CFLAGS)f(+=)i(-O3)639 2010 y(hello_code.o:)38 b(hello_code.c)h(:scanner:)h(scan-c-hello_cod)o(e.c)770 2109 y($\(CC\))i($\(CFLAGS\))d(-c)k($<)415 2287 y Fs(Again,)27 b(this)g(is)g(for)g(illustration|it)f(is)h(unlik)n(ely)g(y)n(ou)f(w)n (ould)h(need)g(to)g(write)g(a)g(com-)291 2387 y(plicated)33 b(con\014guration)f(lik)n(e)h(this!)55 b(In)33 b(this)h(case,)g(the)g Fo(.SCANNER)c Fs(rule)j(sp)r(eci\014es)h(that)291 2486 y(the)23 b(C-compiler)e(should)i(b)r(e)g(called)g(with)g(the)g Fo(-MM)e Fs(\015ag)h(to)h(compute)g(dep)r(endencies.)36 b(F)-7 b(or)291 2586 y(the)26 b(target)e Fo(hello_lib.o)p Fs(,)e(the)k(scanner)e(is)i(called)f(with)h Fo(CFLAGS=-g)40 b(-DLIBRARY)p Fs(,)22 b(and)291 2686 y(for)27 b Fo(hello_code.o)22 b Fs(it)28 b(is)g(called)f(with)h Fo(CFLAGS=-g)40 b(-O3)p Fs(.)291 2819 y @beginspecial @setspecial @endspecial 98 x Fk(8.11.3)112 b(Scoping)38 b(for)g Fe(.PHONY)h Fk(targets)291 3070 y Fs(Phon)n(y)j(targets)h(\(targets)g(that)i(do)e(not)h(corresp)r (ond)f(to)g(\014les\))i(are)e(de\014ned)h(with)g(a)291 3170 y Fo(.PHONY:)36 b Fs(rule.)70 b(Phon)n(y)38 b(targets)g(are)f (scop)r(ed)i(as)f(usual.)71 b(The)39 b(follo)n(wing)f(illustrates)291 3270 y(a)27 b(common)g(mistak)n(e,)g(where)g(the)h Fo(.PHONY)d Fs(target)i(is)g(declared)g Fi(after)37 b Fs(it)28 b(is)g(used.)465 3447 y Fo(#)43 b(!!This)e(example)g(is)i(broken!!)465 3547 y(all:)f(hello)465 3746 y(hello:)f(hello_code.o)e(hello_lib.o)639 3846 y($\(CC\))j($\(CFLAGS\))e(-o)i($@)h($+)465 4045 y(.PHONY:)e(all)415 4223 y Fs(This)34 b(do)r(esn't)h(w)n(ork)e(as)h (exp)r(ected)g(b)r(ecause)g(the)h Fo(.PHONY)d Fs(declaration)h(o)r (ccurs)g(to)r(o)291 4323 y(late.)43 b(The)30 b(prop)r(er)f(w)n(a)n(y)g (to)g(write)h(this)g(example)g(is)f(to)h(place)g(the)g Fo(.PHONY)d Fs(declaration)291 4422 y(\014rst.)465 4600 y Fo(#)43 b(Phony)f(targets)e(must)i(be)h(declared)d(before)h(being)h (used)465 4700 y(.PHONY:)f(all)465 4899 y(all:)h(hello)p eop end %%Page: 100 100 TeXDict begin 100 99 bop 739 282 a @beginspecial @setspecial @endspecial Fs(100)1887 b Fp(CHAPTER)27 b(8.)65 b(R)n(ULES)913 515 y Fo(hello:)41 b(hello_code.o)e(hello_lib.o)1088 615 y($\(CC\))i($\(CFLAGS\))f(-o)j($@)f($+)863 763 y Fs(Phon)n(y)26 b(targets)f(are)h(passed)g(to)g(sub)r(directories.)36 b(As)27 b(a)f(practical)f(matter,)i(it)g(is)f(wise)739 862 y(to)38 b(declare)e(all)i Fo(.PHONY)d Fs(targets)i(in)h(y)n(our)e (ro)r(ot)h Fo(OMakefile)p Fs(,)g(b)r(efore)g(an)n(y)g Fo(.SUBDIRS)p Fs(.)739 962 y(This)f(will)h(ensure)f(that)g(1\))h(they)f (are)g(considered)f(as)h(phon)n(y)g(targets)f(in)i(eac)n(h)e(of)i(the) 739 1062 y(sub)r(directories,)26 b(and)i(2\))f(y)n(ou)g(can)g(build)i (them)f(from)f(the)h(pro)5 b(ject)27 b(ro)r(ot.)913 1210 y Fo(.PHONY:)41 b(all)h(install)f(clean)913 1409 y(.SUBDIRS:)f(src)i (lib)h(clib)863 1557 y Fs(Note)19 b(that)f(when)h(a)f Fo(.PHONY)e Fs(target)h(is)i(inherited)f(b)n(y)g(a)g(sub)r(directory)g (via)f(a)h Fo(.SUBDIRS)p Fs(,)739 1656 y(a)i(whole)h(hierarc)n(h)n(y)e (of)i Fo(.PHONY)d Fs(targets)i(\(that)h(are)f(a)h(part)f(of)h(the)h (global)d(one\))i(is)g(created,)739 1756 y(as)27 b(describ)r(ed)g(in)h (Section)g @beginspecial @setspecial @endspecial(8.12.2)p @beginspecial @setspecial @endspecial 25 w(b)r(elo)n(w.)739 1875 y @beginspecial @setspecial @endspecial 149 x Fl(8.12)135 b(Running)45 b(OMak)l(e)h(from)f(a)g(sub)t(directory)739 2206 y Fs(Running)33 b Fo(omake)41 b(foo)31 b Fs(asks)g(OMak)n(e)h(to)g (build)h(the)f(\014le)h Fo(foo)e Fs(in)i(con)n(text)f(of)g(the)h Fi(whole)739 2306 y Fs(pro)5 b(ject,)36 b(ev)n(en)e(when)g(running)h (from)f(a)g(sub)r(directory)g(of)g(the)h(pro)5 b(ject.)58 b(Therefore,)35 b(if)739 2406 y Fo(bar/baz)28 b Fs(is)k(a)e(regular)g (target)g(\(not)i(a)f Fo(.PHONY)e Fs(one\),)j(then)g(running)f Fo(omake)41 b(bar/baz)739 2505 y Fs(and)27 b(running)h Fo(\(cd)42 b(bar;)g(omake)f(baz\))26 b Fs(are)h(usually)g(equiv)-5 b(alen)n(t.)863 2605 y(There)28 b(are)e(t)n(w)n(o)h(notew)n(orth)n(y)f (exceptions)h(to)h(the)g(ab)r(o)n(v)n(e)e(rule:)863 2743 y Fj(\017)41 b Fs(If)28 b(the)g(sub)r(directory)e(is)i(not)f(a)g(part)g (of)g(the)h(pro)5 b(ject)27 b(\(there)g(is)g(no)g Fo(.SUBDIRS)p Fs(\))e(for)946 2843 y(it,)k(then)f(OMak)n(e)e(will)i(complain)f(if)h (y)n(ou)f(try)g(to)h(run)f(it)h(in)g(that)g(directory)-7 b(.)863 2995 y Fj(\017)41 b Fs(If)30 b(a)e(sub)r(directory)g(con)n (tains)g(an)h Fo(OMakeroot)c Fs(of)k(its)g(o)n(wn,)g(this)g(w)n(ould)g (designate)946 3094 y(the)f(sub)r(directory)d(as)i(a)f(separate)f(pro)5 b(ject)26 b(\(whic)n(h)h(is)g(usually)f(a)h(bad)f(idea)h(and)f(is)946 3194 y(not)i(recommended\).)739 3325 y @beginspecial @setspecial @endspecial 95 x Fk(8.12.1)112 b(Phon)m(y)38 b(targets)f(in)h(a)g(sub)s(directory)739 3574 y Fs(Supp)r(ose)26 b(y)n(ou)g(ha)n(v)n(e)f(a)h Fo(.PHONY:)40 b(clean)25 b Fs(declared)g(in)i(y)n(our)e(ro)r(ot)g Fo(OMakefile)e Fs(and)j(b)r(oth)739 3673 y(the)34 b(ro)r(ot)e Fo(OMakefile)e Fs(and)j(the)g Fo(OMakefile)d Fs(in)j(some)g(of)g(the)h(sub)r (directories)e(con)n(tain)739 3773 y Fo(clean:)25 b Fs(rules.)36 b(In)28 b(this)g(case)863 3911 y Fj(\017)41 b Fs(Running)23 b Fo(omake)41 b(clean)20 b Fs(in)i(the)h(ro)r(ot)e(directory)f(will)j (execute)e(all)h(the)g(rules)g(\(eac)n(h)946 4011 y(in)28 b(the)g(appropriate)e(directory\);)863 4163 y Fj(\017)41 b Fs(Running)30 b Fo(omake)41 b(clean)27 b Fs(in)i(the)h(sub)r (directory)e(will)h(execute)g(just)g(its)g(lo)r(cal)g(one,)946 4263 y(as)e(w)n(ell)h(as)f(the)h(ones)f(from)g(the)h(sub)r(directories) e(of)i(the)g(curren)n(t)f(directory)-7 b(.)863 4401 y(The)19 b(ab)r(o)n(v)n(e)e(equally)h(applies)g(to)g(the)h(built-in)g Fo(.PHONY)d Fs(targets,)j(including)f @beginspecial @setspecial @endspecial Fo(.DEFAULT)p @beginspecial @setspecial @endspecial Fs(.)739 4500 y(Namely)-7 b(,)38 b(if)e(OMak)n(e)e(is)i(executed)g (\(without)g(argumen)n(t\))f(in)h(the)g(ro)r(ot)f(directory)g(of)h(a) 739 4600 y(pro)5 b(ject,)39 b(all)e(the)h Fo(.DEFAULT)c Fs(targets)j(in)g(the)h(pro)5 b(ject)37 b(will)h(b)r(e)g(built.)67 b(On)37 b(the)h(other)739 4700 y(hand,)27 b(when)h(OMak)n(e)e(is)h (executed)g(\(without)h(argumen)n(t\))e(in)i(a)f(sub)r(directory)-7 b(,)26 b(only)h(the)739 4799 y Fo(.DEFAULT)d Fs(targets)j(de\014ned)h (in)g(and)f(under)g(that)h(sub)r(directory)f(will)h(b)r(e)g(built.)863 4899 y(The)34 b(follo)n(wing)f(Section)h(explains)g(the)g(underlying)g (seman)n(tics)f(that)h(giv)n(es)f(rise)g(to)739 4998 y(the)28 b(ab)r(o)n(v)n(e)e(b)r(eha)n(vior.)p eop end %%Page: 101 101 TeXDict begin 101 100 bop 291 282 a @beginspecial @setspecial @endspecial Fp(8.13.)63 b(P)-7 b(A)g(THNAMES)28 b(IN)g(R)n(ULES)1550 b Fs(101)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(8.12.2)112 b(Hierarc)m(h)m(y)37 b(of)48 b Fe(.PHONY)39 b Fk(targets)291 669 y Fs(When)28 b(the)g(the)g(ro)r(ot)e Fo(OMakefile)e Fs(con)n(tains)j(a)g Fo(.PHONY:)41 b(clean)26 b Fs(directiv)n(e,)h(it)h(creates:)415 810 y Fj(\017)41 b Fs(A)28 b(\\global")e(phon)n(y)h(target)f Fo(/.PHONY/clean)d Fs(\(note)k(the)h(leading)f(\\)p Fo(/)p Fs("\);)415 964 y Fj(\017)41 b Fs(A)19 b(\\relativ)n(e")d(phon)n(y)i(target)f(attac)n (hed)h(to)g(the)h(curren)n(t)f(directory)f(|)h Fo(.PHONY/clean)498 1064 y Fs(\(note)28 b(the)g(lac)n(k)f(of)g(the)h(leading)f(\\)p Fo(/)p Fs("\);)415 1218 y Fj(\017)41 b Fs(A)28 b(dep)r(endency)g Fo(/.PHONY/clean:)38 b(.PHONY/clean)p Fs(.)415 1360 y(All)19 b(the)g Fo(clean:)41 b(...)17 b Fs(rules)h(in)g(the)h(ro)r(ot)f Fo(OMakefile)d Fs(follo)n(wing)i(this)h Fo(.PHONY:)41 b(clean)291 1459 y Fs(declaration)26 b(w)n(ould)h(b)r(e)h(in)n (terpreted)f(as)g(rules)g(for)g(the)h Fo(.PHONY/clean)23 b Fs(target.)415 1559 y(No)n(w)i(when)h(OMak)n(e)e(then)i(comes)f (across)f(a)h Fo(.SUBDIRS:)40 b(foo)24 b Fs(directiv)n(e)h(\(when)h(it) g(is)291 1659 y(in)h(scop)r(e)h(of)f(the)h(ab)r(o)n(v)n(e)e Fo(.PHONY:)41 b(clean)26 b Fs(declaration\),)g(it)i(do)r(es)f(the)h (follo)n(wing:)415 1800 y Fj(\017)41 b Fs(Creates)27 b(a)g(new)g Fo(.PHONY/foo/clean)22 b Fs(\\relativ)n(e")j(phon)n(y)i (target;)415 1954 y Fj(\017)41 b Fs(Creates)27 b(the)h(dep)r(endency)g Fo(.PHONY/clean:)38 b(.PHONY/foo/clean)o Fs(;)415 2108 y Fj(\017)j Fs(Pro)r(cesses)16 b(the)j(b)r(o)r(dy)g(of)f(the)h Fo(.SUBDIRS:)40 b(foo)17 b Fs(directiv)n(e,)j(or)d(reads)g(the)i Fo(foo/OMakefile)498 2208 y Fs(\014le,)31 b(if)g(the)f(b)r(o)r(dy)h(is) e(empt)n(y)-7 b(.)45 b(While)31 b(doing)e(that,)i(it)g(in)n(terprets)e (its)h(instructions)498 2307 y(relativ)n(e)e(to)h(the)g Fo(foo)f Fs(directory)-7 b(.)40 b(In)30 b(particular,)e(all)h(the)g Fo(clean:)41 b(...)28 b Fs(rules)h(will)498 2407 y(b)r(e)f(tak)n(en)f (to)h(apply)f(to)g Fo(.PHONY/foo/clean)p Fs(.)415 2549 y(No)n(w)32 b(when)h(y)n(ou)e(run)h Fo(omake)42 b(clean)30 b Fs(in)j(the)g(ro)r(ot)e(directory)g(of)i(the)f(pro)5 b(ject,)33 b(it)g(is)291 2649 y(in)n(terpreted)22 b(as)f Fo(omake)42 b(.PHONY/clean)17 b Fs(\(similar)22 b(to)h(ho)n(w)f(it)h (happ)r(ens)f(with)h(the)g(normal)291 2748 y(targets\),)28 b(so)f(b)r(oth)i(the)g(rules)f(for)g Fo(.PHONY/clean)c Fs(are)k(executed)g(and)h(the)g(rules)f(for)g(its)291 2848 y(dep)r(endency)36 b Fo(.PHONY/foo/clea)o(n)p Fs(.)55 b(Running)36 b Fo(\(cd)42 b(foo;)g(omake)g(clean\))33 b Fs(is,)k(as)e(for)291 2947 y(normal)21 b(targets,)h(equiv)-5 b(alen)n(t)22 b(to)g(running)f Fo(omake)42 b(.PHONY/foo/clean)16 b Fs(and)22 b(only)f(those)291 3047 y(rules)27 b(that)g(apply)h(to)f Fo(.PHONY/foo/clean)21 b Fs(will)28 b(b)r(e)g(executed.)291 3183 y @beginspecial @setspecial @endspecial 133 x Fl(8.13)135 b(P)l(athnames)46 b(in)f(rules)291 3498 y Fs(In)21 b(rules,)i(the)f (targets)e(and)i(dep)r(endencies)g(are)e(\014rst)i(translated)f(to)g Fi(\014le)28 b Fs(v)-5 b(alues)21 b(\(as)h(in)g(the)291 3598 y @beginspecial @setspecial @endspecial Fo(file)h Fs(function)p @beginspecial @setspecial @endspecial(\).)36 b(They)25 b(are)e(then)j(translated)d(to)i(strings)f(for)g(the)h (command)f(line.)36 b(This)291 3697 y(can)d(cause)h(some)f(unexp)r (ected)i(b)r(eha)n(vior.)54 b(In)35 b(the)f(follo)n(wing)f(example,)i (the)g @beginspecial @setspecial @endspecial Fo(absname)291 3797 y Fs(function)p @beginspecial @setspecial @endspecial 36 w(is)h(the)h(absolute)e(pathname)h(for)g(the)h(\014le)f Fo(a)p Fs(,)i(but)f(the)f(rule)g(still)h(prin)n(ts)f(the)291 3897 y(relativ)n(e)26 b(pathname.)465 4049 y Fo(.PHONY:)41 b(demo)465 4149 y(demo:)g($\(absname)f(a\))639 4248 y(echo)i($<)465 4448 y(#)h(omake)f(demo)465 4547 y(a)415 4700 y Fs(There)22 b(is)g(arguably)f(a)h(go)r(o)r(d)f(reason)g(for)h(this.)35 b(On)22 b(Win32)g(systems,)h(the)g Fo(/)f Fs(c)n(haracter)291 4799 y(is)28 b(view)n(ed)h(as)f(an)g(\\option)g(sp)r(eci\014er.")40 b(The)29 b(pathname)g(separator)d(is)j(the)g Fo(\\)g Fs(c)n(haracter.)291 4899 y(OMak)n(e)e(translates)h(the)i(\014lenames)f (automatically)f(so)g(that)h(things)g(w)n(ork)f(as)h(exp)r(ected)291 4998 y(on)e(b)r(oth)h(systems.)p eop end %%Page: 102 102 TeXDict begin 102 101 bop 739 282 a @beginspecial @setspecial @endspecial Fs(102)1887 b Fp(CHAPTER)27 b(8.)65 b(R)n(ULES)870 515 y Fo(demo:)41 b(a/b)1044 615 y(echo)h($<)870 814 y(#)h(omake)e(demo)h(\(on)h(a)g(Unix)f(system\))870 914 y(a/b)870 1013 y(#)h(omake)e(demo)h(\(on)h(a)g(Win32)e(system\))870 1113 y(a\\b)863 1296 y Fs(Sometimes)c(y)n(ou)e(ma)n(y)g(wish)h(that)h (target)e(strings)g(to)h(b)r(e)h(passed)e(literally)h(to)g(the)739 1395 y(commands)27 b(in)h(the)g(rule.)36 b(One)28 b(w)n(a)n(y)e(to)h (do)h(this)g(is)f(to)h(sp)r(ecify)f(them)i(literally)-7 b(.)913 1578 y Fo(SRC)43 b(=)g(a/b)f($\(absname)e(c/d\))913 1678 y(demo:)i($\(SRC\))1088 1777 y(echo)g($\(SRC\))913 1976 y(#)h(omake)f(demo)g(\(on)g(a)h(Win32)f(system\))913 2076 y(a/b)h(c:\\...\\c\\d)863 2259 y Fs(Alternately)-7 b(,)23 b(y)n(ou)d(migh)n(t)h(wish)g(that)h(\014lenames)e(b)r(e)i (automatically)e(expanded)h(to)g(ab-)739 2358 y(solute)28 b(pathnames.)39 b(F)-7 b(or)28 b(example,)h(this)f(migh)n(t)h(b)r(e)g (useful)g(when)f(parsing)g(the)h(OMak)n(e)739 2458 y(output)36 b(to)g(lo)r(ok)f(for)h(errors.)60 b(F)-7 b(or)35 b(this,)j(y)n(ou)e (can)f(use)h(the)g Fo(--absname)d Fs(option)i(\(Sec-)739 2558 y(tion)26 b @beginspecial @setspecial @endspecial(A.3.20)p @beginspecial @setspecial @endspecial(\).)35 b(If)27 b(y)n(ou)e(call)h Fo(omake)d Fs(with)k(the)f Fo(--absname)c Fs(option,)k(all)g(\014lenames)g(will)g(b)r(e)739 2657 y(expanded)h(to)h(absolute)f(names.)913 2840 y Fo(#)43 b(omake)f(--absname)e(demo)i(\(on)g(a)h(Unix)f(system\))913 2940 y(/home/.../a/b)c(/home/.../c/d)863 3122 y Fs(Alternately)-7 b(,)30 b(the)g Fo(--absname)25 b Fs(option)k(is)g(scop)r(ed.)42 b(If)30 b(y)n(ou)e(w)n(an)n(t)h(to)g(use)g(it)h(for)f(only)739 3222 y(a)e(few)h(rules,)f(y)n(ou)g(can)g(use)h(the)g @beginspecial @setspecial @endspecial Fo(OMakeFlags)23 b Fs(function)p @beginspecial @setspecial @endspecial 28 w(to)28 b(con)n(trol)e(ho)n(w)h(it)h(is)f(applied.)870 3404 y Fo(section)1000 3504 y(OMakeFlags\(--absn)o(ame)o(\))1000 3604 y(demo:)42 b(a)1175 3703 y(echo)g($<)870 3903 y(#)h(omake)e(demo) 870 4002 y(/home/.../a)863 4185 y Fq(N.B.)27 b Fs(The)g Fo(--absname)d Fs(option)k(is)f(curren)n(tly)g(an)g(exp)r(erimen)n(tal) g(feature.)p eop end %%Page: 103 103 TeXDict begin 103 102 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 709 x Fm(Chapter)64 b(9)291 1559 y Fr(Base)77 b(library)291 1932 y @beginspecial @setspecial @endspecial 112 x Fl(9.1)135 b(Builtin)45 b(v)-7 b(ariables)291 2129 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 103 x Fq(OMAKE)p 670 2232 29 4 v 33 w(VERSION)82 b Fs(V)-7 b(ersion)27 b(of)h(OMak)n(e.)291 2361 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 103 x Fq(STDLIB)84 b Fs(The)35 b(directory)g(where)g(the)h(OMak)n(e)e (standard)h(library)f(\014les)h(reside.)61 b(A)n(t)291 2564 y(startup,)27 b(the)h(default)g(v)-5 b(alue)27 b(is)h(determined)g (as)f(follo)n(ws.)415 2739 y Fj(\017)41 b Fs(The)30 b(v)-5 b(alue)29 b(of)g(the)h Fo(OMAKELIB)d Fs(en)n(vironmen)n(t)h(v)-5 b(ariable,)29 b(if)h(set)g(\(m)n(ust)f(con)n(tain)g(an)498 2839 y(absolute)e(path,)h(if)g(set\),)g(otherwise)415 3017 y Fj(\017)41 b Fs(On)18 b(Windo)n(ws,)i(the)f(registry)e(k)n(eys)g Fo(HKEY_CURRENT_USER)o(\\S)o(OF)o(TWA)o(RE)o(\\Me)o(ta)o(PRL)o(\\O)o (Ma)o(ke\\)o(OM)o(AKE)o(LI)o(B)498 3117 y Fs(and)h Fo (HKEY_LOCAL_MACHIN)o(E\\)o(SOF)o(TW)o(ARE)o(\\M)o(eta)o(PR)o(L\\)o(OMa) o(ke)o(\\OM)o(AK)o(EL)o(IB)12 b Fs(are)17 b(lo)r(ok)n(ed)498 3217 y(up)28 b(and)f(the)h(v)-5 b(alue)28 b(is)f(used,)h(if)g(exist.) 415 3395 y Fj(\017)41 b Fs(Otherwise)27 b(a)g(compile-time)h(default)g (it)g(used.)291 3571 y(The)f(curren)n(t)g(default)h(v)-5 b(alue)27 b(ma)n(y)g(b)r(e)h(accessed)f(b)n(y)g(running)g Fo(omake)42 b(--version)291 3716 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 87 x Fq(OMAKEP)-8 b(A)g(TH)82 b Fs(An)35 b(arra)n(y)d(of)i(directories)f (sp)r(ecifying)h(the)h(lo)r(okup)e(path)i(for)f(the)291 3903 y Fo(include)24 b Fs(and)j Fo(open)f Fs(directiv)n(es)g(\(see)h (Section)h @beginspecial @setspecial @endspecial(4.7)p @beginspecial @setspecial @endspecial(\).)36 b(The)27 b(default)h(v)-5 b(alue)27 b(is)g(an)g(arra)n(y)e(of)291 4002 y(t)n(w)n(o)h(elemen)n(ts)i(|)g Fo(.)f Fs(and)g Fo($\(STDLIB\))p Fs(.)291 4139 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 96 x Fq(OSTYPE)83 b Fs(Set)41 b(to)f(the)h(mac)n(hine)f(arc)n(hitecture)f Fo(omake)g Fs(is)h(running)g(on.)75 b(P)n(ossible)291 4334 y(v)-5 b(alues)28 b(are)g Fo(Unix)g Fs(\(for)h(all)f(Unix)i(v)n (ersions,)e(including)h(Lin)n(ux)g(and)g(Mac)f(OS)h(X\),)h Fo(Win32)291 4434 y Fs(\(for)36 b(MS-Windo)n(ws,)k(OMak)n(e)35 b(compiled)i(with)h(MSV)n(C++)e(or)h(Mingw\),)i(and)e Fo(Cygwin)291 4534 y Fs(\(for)27 b(MS-Windo)n(ws,)g(OMak)n(e)f (compiled)i(with)g(Cygwin\).)291 4684 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(SYSNAME)82 b Fs(The)28 b(name)f(of)h(the)g(op)r(erating)e (system)i(for)f(the)h(curren)n(t)e(mac)n(hine.)291 4912 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 86 x Fq(NODENAME)81 b Fs(The)28 b(hostname)f(of)h(the)g(curren)n(t)e(mac)n(hine.)1660 5208 y(103)p eop end %%Page: 104 104 TeXDict begin 104 103 bop 739 282 a @beginspecial @setspecial @endspecial Fs(104)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)739 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OS)p 870 515 29 4 v 34 w(VERSION)82 b Fs(The)28 b(op)r(erating)e(system)i (release.)739 688 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 93 x Fq(MA)m(CHINE)82 b Fs(The)28 b(mac)n(hine)f(arc)n(hitecture,)g(e.g.)g Fo(i386)p Fs(,)f Fo(sparc)p Fs(,)g(etc.)739 956 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 91 x Fq(HOST)83 b Fs(Same)27 b(as)g Fo(NODENAME)p Fs(.)739 1204 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 109 x Fq(USER)83 b Fs(The)27 b(login)g(name)h(of)f(the)h(user)f(executing)h(the)g(pro)r(cess.)739 1486 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 93 x Fq(HOME)82 b Fs(The)27 b(home)h(directory) e(of)i(the)g(user)f(executing)g(the)h(pro)r(cess.)739 1751 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 93 x Fq(PID)84 b Fs(The)27 b(OMak)n(e)g(pro)r (cess)f(id.)739 2017 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 93 x Fq(T)-8 b(AR)m(GETS)84 b Fs(The)30 b(command-line)g(target)f(strings.)45 b(F)-7 b(or)29 b(example,)i(if)g(OMak)n(e)e(is)h(in-)739 2210 y(v)n(ok)n(ed)c(with)i(the)g(follo)n(wing)f(command)g(line,)1000 2414 y Fo(omake)42 b(CFLAGS=1)e(foo)j(bar.c)863 2608 y Fs(then)29 b Fo(TARGETS)24 b Fs(is)k(de\014ned)g(as)f Fo(foo)42 b(bar.c)p Fs(.)739 2765 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 109 x Fq(BUILD)p 1052 2874 V 35 w(SUMMAR)-8 b(Y)83 b Fs(The)41 b Fo(BUILD_SUMMARY)35 b Fs(v)-5 b(ariable)40 b(refers)g(to)g(the)h (\014le)g(that)739 2973 y Fo(omake)22 b Fs(uses)i(to)g(summarize)f(a)g (build)i(\(the)g(message)d(that)j(is)f(prin)n(ted)g(at)g(the)g(v)n(ery) f(end)h(of)739 3073 y(a)i(build\).)37 b(The)27 b(\014le)f(is)h(empt)n (y)f(when)h(the)g(build)g(starts.)35 b(If)27 b(y)n(ou)f(wish)g(to)h (add)f(additional)739 3173 y(messages)g(to)h(the)h(build)g(summary)-7 b(,)27 b(y)n(ou)g(can)g(edit/mo)r(dify)h(this)g(\014le)g(during)f(the)h (build.)863 3282 y(F)-7 b(or)28 b(example,)h(if)g(y)n(ou)f(w)n(an)n(t)g (to)g(p)r(oin)n(t)h(out)f(that)h(some)f(action)g(w)n(as)g(tak)n(en,)g (y)n(ou)g(can)739 3381 y(app)r(end)g(a)f(message)f(to)i(the)g(build)g (summary)-7 b(.)870 3611 y Fo(foo:)42 b(boo)1044 3711 y(echo)g("The)g(file)g(foo)g(was)g(built")g(>>)g($\(BUILD_SUMMARY\)) 1044 3810 y(...build)e(foo...)739 3967 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 109 x Fq(VERBOSE)82 b Fs(Whether)33 b(certain)f(commands)g(should)h(b)r (e)g(v)n(erb)r(ose.)52 b(A)33 b(b)r(o)r(olean)f(\015ag)739 4176 y(that)i(is)f Fo(false)e Fs(b)n(y)j(default)g(and)f(is)g(set)h(to) f Fo(true)f Fs(when)h(OMak)n(e)g(is)g(in)n(v)n(ok)n(ed)f(with)i(the)739 4275 y Fo(--verbose)24 b Fs(option.)739 4457 y @beginspecial @setspecial @endspecial 143 x Fl(9.2)135 b(Logic,)46 b(Bo)t(olean)f(functions,)h(and)e(con)l(trol)i(\015o)l(w)739 4799 y Fs(Bo)r(olean)29 b(v)-5 b(alues)31 b(in)f(omak)n(e)g(are)f (represen)n(ted)h(b)n(y)g(case-insensitiv)n(e)f(strings.)45 b(The)31 b Fi(false)739 4899 y Fs(v)-5 b(alue)33 b(can)g(b)r(e)g (represen)n(ted)f(b)n(y)h(the)h(strings)e Fo(false)p Fs(,)h Fo(no)p Fs(,)h Fo(nil)p Fs(,)f Fo(undefined)d Fs(or)i Fo(0)p Fs(,)i(and)739 4998 y(ev)n(erything)26 b(else)i(is)f(true.)p eop end %%Page: 105 105 TeXDict begin 105 104 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.2.)63 b(LOGIC,)28 b(BOOLEAN)e(FUNCTIONS,)i(AND)h (CONTR)n(OL)e(FLO)n(W)303 b Fs(105)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.2.1)112 b(not)291 575 y @beginspecial @setspecial @endspecial 421 681 a Fo($\(not)42 b(e\))h(:)g(String)552 781 y(e)g(:)g(String)415 991 y Fs(The)28 b Fo(not)e Fs(function)i(negates)f(a)g(Bo)r(olean)g(v)-5 b(alue.)415 1097 y(F)e(or)18 b(example,)i Fo($\(not)41 b(false\))16 b Fs(expands)i(to)g(the)h(string)f Fo(true)p Fs(,)g(and)h Fo($\(not)41 b(hello)h(world\))291 1197 y Fs(expands)27 b(to)g Fo(false)p Fs(.)291 1359 y @beginspecial @setspecial @endspecial 107 x Fk(9.2.2)112 b(equal)291 1545 y @beginspecial @setspecial @endspecial 421 1632 a Fo($\(equal)41 b(e1,)h(e2\))h(:)g(String)552 1731 y(e1)g(:)g(String) 552 1831 y(e2)g(:)g(String)415 2041 y Fs(The)28 b Fo(equal)d Fs(function)k(tests)e(for)g(equalit)n(y)g(of)h(t)n(w)n(o)f(v)-5 b(alues.)415 2147 y(F)e(or)18 b(example)g Fo($\(equal)40 b(a,)j(b\))18 b Fs(expands)g(to)g Fo(false)p Fs(,)g(and)g Fo($\(equal)41 b(hello)h(world,)f(hello)g(world\))291 2247 y Fs(expands)27 b(to)g Fo(true)p Fs(.)291 2409 y @beginspecial @setspecial @endspecial 107 x Fk(9.2.3)112 b(and)291 2575 y @beginspecial @setspecial @endspecial 465 2682 a Fo($\(and)41 b(e1,)i(...,)f(en\))g(:)h(String)596 2781 y(e1,)f(...,)g(en:)g(Sequence)415 2991 y Fs(The)28 b Fo(and)e Fs(function)i(ev)-5 b(aluates)27 b(to)h(the)g(conjunction)f (of)h(its)g(argumen)n(ts.)415 3098 y(F)-7 b(or)27 b(example,)g(in)h (the)g(follo)n(wing)f(co)r(de,)g Fo(X)g Fs(is)h(true,)f(and)h Fo(Y)f Fs(is)h(false.)465 3315 y Fo(A)43 b(=)g(a)465 3414 y(B)g(=)g(b)465 3514 y(X)g(=)g($\(and)f($\(equal)e($\(A\),)i(a\))h (true)f($\(equal)e($\(B\),)i(b\)\))465 3614 y(Y)h(=)g($\(and)f ($\(equal)e($\(A\),)i(a\))h(true)f($\(equal)e($\(A\),)i($\(B\)\)\))291 3778 y @beginspecial @setspecial @endspecial 104 x Fk(9.2.4)112 b(or)291 3942 y @beginspecial @setspecial @endspecial 421 4048 a Fo($\(or)42 b(e1,)h(...,)f(en\))g(:)h(String)552 4148 y(e1,)f(...,)g(en:)h(String)e(Sequence)415 4358 y Fs(The)28 b Fo(or)f Fs(function)h(ev)-5 b(aluates)27 b(to)g(the)h(disjunction)g(of)g(its)g(argumen)n(ts.)415 4464 y(F)-7 b(or)27 b(example,)g(in)h(the)g(follo)n(wing)f(co)r(de,)g Fo(X)g Fs(is)h(true,)f(and)h Fo(Y)f Fs(is)h(false.)465 4681 y Fo(A)43 b(=)g(a)465 4781 y(B)g(=)g(b)465 4880 y(X)g(=)g($\(or)f($\(equal)f($\(A\),)g(a\))i(false)f($\(equal)e ($\(A\),)i($\(B\)\)\))465 4980 y(Y)h(=)g($\(or)f($\(equal)f($\(A\),)g ($\(B\)\))h($\(equal)f($\(A\),)g(b\)\))p eop end %%Page: 106 106 TeXDict begin 106 105 bop 739 282 a @beginspecial @setspecial @endspecial Fs(106)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.2.5)112 b(if)739 569 y @beginspecial @setspecial @endspecial 913 669 a Fo($\(if)42 b(e1,)h(e2[,)e(e3]\))h(:)i(value)1044 768 y(e1)f(:)g(String)1044 868 y(e2,)f(e3)h(:)g(value)863 1033 y Fs(The)c Fo(if)e Fs(function)i(represen)n(ts)d(a)i(conditional)f (based)h(on)g(a)g(Bo)r(olean)f(v)-5 b(alue.)68 b(F)-7 b(or)739 1132 y(example)27 b Fo($\(if)42 b($\(equal)f(a,)h(b\),)h(c,)g (d\))26 b Fs(ev)-5 b(aluates)27 b(to)h Fo(d)p Fs(.)863 1232 y(Conditionals)f(ma)n(y)g(also)g(b)r(e)h(declared)e(with)i(an)g (alternate)e(syn)n(tax.)870 1397 y Fo(if)42 b(e1)1000 1497 y(body1)870 1596 y(elseif)f(e2)1000 1696 y(body2)870 1795 y(...)870 1895 y(else)1000 1995 y(bodyn)863 2160 y Fs(If)26 b(the)f(expression)f Fo(e1)g Fs(is)h(not)g(false,)h(then)f (the)h(expressions)d(in)i Fo(body1)e Fs(are)i(ev)-5 b(aluated)739 2259 y(and)39 b(the)g(result)f(is)h(returned)f(as)g(the)i(v)-5 b(alue)38 b(of)h(the)g(conditional.)70 b(Otherwise,)41 b(if)e Fo(e1)739 2359 y Fs(ev)-5 b(aluates)31 b(to)h(false,)g(the)h(ev) -5 b(aluation)31 b(con)n(tin)n(ues)g(with)h(the)g Fo(e2)f Fs(expression.)48 b(If)33 b(none)e(of)739 2458 y(the)c(conditional)f (expressions)e(is)j(true,)f(then)h(the)g(expressions)e(in)i Fo(bodyn)d Fs(are)i(ev)-5 b(aluated)739 2558 y(and)27 b(the)h(result)g(is)f(returned)g(as)g(the)h(v)-5 b(alue)28 b(of)f(the)h(conditional.)863 2658 y(There)g(can)f(b)r(e)h(an)n(y)f(n)n (um)n(b)r(er)g(of)g Fo(elseif)f Fs(clauses;)g(the)i Fo(else)e Fs(clause)h(is)h(optional.)863 2757 y(Note)g(that)h(eac)n(h)e(branc)n (h)g(of)h(the)g(conditional)f(de\014nes)h(its)g(o)n(wn)g(scop)r(e,)f (so)h(v)-5 b(ariables)739 2857 y(de\014ned)33 b(in)g(the)h(branc)n(hes) d(are)h(normally)g(not)h(visible)g(outside)g(the)g(conditional.)52 b(The)739 2957 y Fo(export)27 b Fs(command)j(ma)n(y)f(b)r(e)h(used)g (to)f(exp)r(ort)h(the)g(v)-5 b(ariables)28 b(de\014ned)i(in)g(a)g(scop) r(e.)43 b(F)-7 b(or)739 3056 y(example,)32 b(the)h(follo)n(wing)d (expression)h(represen)n(ts)f(a)i(common)f(idiom)h(for)f(de\014ning)h (the)739 3156 y(C)c(compiler)e(con\014guration.)870 3321 y Fo(if)42 b($\(equal)f($\(OSTYPE\),)f(Win32\))1000 3420 y(CC)j(=)g(cl)1000 3520 y(CFLAGS)f(+=)g(/DWIN32)1000 3620 y(export)870 3719 y(else)1000 3819 y(CC)h(=)g(gcc)1000 3919 y(CFLAGS)f(+=)g(-g)h(-O2)1000 4018 y(export)739 4150 y @beginspecial @setspecial @endspecial 97 x Fk(9.2.6)112 b(switc)m(h,)38 b(matc)m(h)739 4320 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 81 x Fs(The)28 b Fo(switch)d Fs(and)i Fo(match)f Fs(functions)i(p)r (erform)f(pattern)g(matc)n(hing.)863 4500 y Fo($\(switch)41 b(,)g(,)d(,)i(...,)i(,)c (\))739 4600 y($\(match)j(,)g(,)d(,)i (...,)i(,)c(\))863 4700 y Fs(The)32 b(n)n(um)n(b)r(er)g(of)f Fo(/)25 b Fs(pairs)31 b(is)g(arbitrary)-7 b(.)47 b(They)32 b(strictly)f(alter-)739 4799 y(nate;)c(the)h(total)g(n)n(um)n(b)r(er)f(of)h(argumen)n(ts)e(to)h Fo()e Fs(m)n(ust)j(b)r(e)g(o)r(dd.)863 4899 y(The)37 b Fo()d Fs(is)i(ev)-5 b(aluated)36 b(to)g(a)g(string,)i(and)e (compared)f(with)i Fo()p Fs(.)59 b(If)739 4998 y(it)38 b(matc)n(hes,)i(the)e(result)g(of)g(the)g(expression)e(is) i Fo()p Fs(.)64 b(Otherwise)37 b(ev)-5 b(aluation)p eop end %%Page: 107 107 TeXDict begin 107 106 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.2.)63 b(LOGIC,)28 b(BOOLEAN)e(FUNCTIONS,)i(AND)h (CONTR)n(OL)e(FLO)n(W)303 b Fs(107)291 515 y(con)n(tin)n(ues)35 b(with)i(the)f(remaining)f(patterns)h(un)n(til)h(a)f(matc)n(h)g(is)g (found.)63 b(If)36 b(no)g(pattern)291 615 y(matc)n(hes,)27 b(the)h(v)-5 b(alue)27 b(is)h(the)g(empt)n(y)f(string.)415 715 y(The)g Fo(switch)e Fs(function)i(uses)g(string)f(comparison)g(to)g (compare)g(the)h(argumen)n(t)f(with)291 814 y(the)e(patterns.)36 b(F)-7 b(or)23 b(example,)i(the)g(follo)n(wing)e(expression)g (de\014nes)h(the)h Fo(FILE)e Fs(v)-5 b(ariable)23 b(to)291 914 y(b)r(e)29 b(either)g Fo(foo)p Fs(,)g Fo(bar)p Fs(,)g(or)f(the)i (empt)n(y)f(string,)g(dep)r(ending)h(on)f(the)g(v)-5 b(alue)29 b(of)h(the)f Fo(OSTYPE)291 1013 y Fs(v)-5 b(ariable.)465 1172 y Fo(FILE)42 b(=)h($\(switch)d($\(OSTYPE\),)g(Win32,)h(foo,)h (Unix,)f(bar\))415 1331 y Fs(The)23 b Fo(match)d Fs(function)j(uses)f (regular)e(expression)h(patterns)h(\(see)g(the)h Fo(grep)e Fs(function\).)291 1431 y(If)38 b(a)f(matc)n(h)g(is)g(found,)k(the)d(v) -5 b(ariables)36 b Fo($1,)42 b($2,)h(...)36 b Fs(are)h(b)r(ound)h(to)f (the)h(substrings)291 1531 y(matc)n(hed)f(b)r(et)n(w)n(een)h Fo(\\\()f Fs(and)g Fo(\\\))g Fs(delimiters.)67 b(The)38 b Fo($0)f Fs(v)-5 b(ariable)37 b(con)n(tains)f(the)i(en)n(tire)291 1630 y(matc)n(h,)23 b(and)e Fo($*)h Fs(is)f(an)h(arra)n(y)e(of)i(the)g (matc)n(hed)g(substrings.)34 b(to)22 b(the)g(matc)n(hed)g(substrings.) 465 1789 y Fo(FILE)42 b(=)h($\(match)e(foo_xyz/bar.a,)d (foo_\\\\\\\(.*\\\\\\\)/)o(\\\\)o(\\\(.)o(*\\)o(\\\\\))o(\\.)o(a,)f (foo_$2/$1.o\))415 1948 y Fs(The)25 b Fo(switch)e Fs(and)i Fo(match)e Fs(functions)j(also)e(ha)n(v)n(e)g(an)g(alternate)h(\(more)f (usable\))h(form.)421 2107 y Fo(match)42 b(e)421 2207 y(case)g(pattern1)552 2306 y(body1)421 2406 y(case)g(pattern2)552 2506 y(body2)421 2605 y(...)421 2705 y(default)552 2805 y(bodyd)415 2964 y Fs(If)37 b(the)f(v)-5 b(alue)36 b(of)g(expression)f Fo(e)h Fs(matc)n(hes)g Fo(pattern_i)c Fs(and)k(no)g(previous)f (pattern,)291 3063 y(then)28 b Fo(body_i)e Fs(is)i(ev)-5 b(aluated)28 b(and)g(returned)g(as)f(the)i(result)f(of)g(the)g Fo(match)p Fs(.)37 b(The)28 b Fo(switch)291 3163 y Fs(function)40 b(uses)g(string)g(comparison;)45 b(the)c Fo(match)d Fs(function)j(uses) f(regular)e(expression)291 3262 y(matc)n(hing.)421 3421 y Fo(match)k($\(FILE\))421 3521 y(case)g($".*\\\(\\.[^\\/.]*\\\))o(") 552 3621 y(println\(The)d(string)i($\(FILE\))g(has)h(suffix)f($1\))421 3720 y(default)552 3820 y(println\(The)e(string)i($\(FILE\))g(has)h(no) h(suffix\))291 3950 y @beginspecial @setspecial @endspecial 98 x Fk(9.2.7)112 b(try)291 4121 y @beginspecial @setspecial @endspecial 421 4201 a Fo(try)552 4301 y(try-body)421 4401 y(catch)42 b(class1\(v1\))552 4500 y(catch-body)421 4600 y(when)g(expr)552 4700 y(when-body)421 4799 y(...)421 4899 y(finally)552 4998 y(finally-body)p eop end %%Page: 108 108 TeXDict begin 108 107 bop 739 282 a @beginspecial @setspecial @endspecial Fs(108)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)863 515 y Fs(The)32 b Fo(try)e Fs(form)i(is)f(used)g (for)g(exception)h(handling.)48 b(First,)32 b(the)g(expressions)e(in)i (the)739 615 y Fo(try-body)24 b Fs(are)j(ev)-5 b(aluated.)863 715 y(If)41 b(ev)-5 b(aluation)39 b(results)g(in)i(a)e(v)-5 b(alue)40 b Fo(v)f Fs(without)i(raising)d(an)i(exception,)i(then)f(the) 739 814 y(expressions)30 b(in)h(the)h Fo(finally-body)27 b Fs(are)j(ev)-5 b(aluated)31 b(and)g(the)h(v)-5 b(alue)32 b Fo(v)f Fs(is)g(returned)g(as)739 914 y(the)d(result.)863 1013 y(If)k(ev)-5 b(aluation)31 b(of)h(the)g Fo(try-body)c Fs(results)j(in)h(a)f(exception)g(ob)5 b(ject)32 b Fo(obj)p Fs(,)f(the)h Fo(catch)739 1113 y Fs(clauses)22 b(are)h(examined)g(in)h (order.)34 b(When)24 b(examining)f Fo(catch)e Fs(clause)i Fo(catch)41 b(class\(v\))p Fs(,)739 1213 y(if)27 b(the)h(exception)f (ob)5 b(ject)27 b Fo(obj)e Fs(is)i(an)g(instance)g(of)g(the)h(class)e (name)h Fo(class)p Fs(,)e(the)i(v)-5 b(ariable)739 1312 y Fo(v)28 b Fs(is)g(b)r(ound)h(to)g(the)g(exception)f(ob)5 b(ject,)28 b(and)h(the)f(expressions)f(in)i(the)g Fo(catch-body)24 b Fs(are)739 1412 y(ev)-5 b(aluated.)863 1512 y(If)31 b(a)f Fo(when)f Fs(clause)g(is)h(encoun)n(tered)g(while)g(a)g Fo(catch)e Fs(b)r(o)r(dy)j(is)f(b)r(eing)g(ev)-5 b(aluated,)31 b(the)739 1611 y(predicate)c Fo(expr)g Fs(is)h(ev)-5 b(aluated.)38 b(If)29 b(the)f(result)g(is)g(true,)g(ev)-5 b(aluation)28 b(con)n(tin)n(ues)f(with)i(the)739 1711 y(expressions)g(in)i(the)h Fo(when-body)p Fs(.)43 b(Otherwise,)31 b(the)g(next)g Fo(catch)e Fs(clause)h(is)h(considered)739 1810 y(for)c(ev)-5 b(aluation.)863 1910 y(If)20 b(ev)-5 b(aluation)19 b(of)g(a)g Fo(catch-body)d Fs(or)i Fo(when-body)e Fs(completes)j(successfully)-7 b(,)21 b(returning)739 2010 y(a)34 b(v)-5 b(alue)34 b Fo(v)p Fs(,)i(without)e(encoun)n(tering) g(another)f Fo(when)g Fs(clause,)i(then)g(the)f(expressions)f(in)739 2109 y(the)28 b Fo(finally-body)23 b Fs(are)j(ev)-5 b(aluated)27 b(and)h(the)g(v)-5 b(alue)27 b Fo(v)h Fs(is)f(returned)g(as)g(the)h (result.)863 2209 y(There)g(can)f(b)r(e)h(an)n(y)f(n)n(um)n(b)r(er)g (of)g Fo(catch)f Fs(clauses;)h(the)h Fo(finally)d Fs(clause)h(is)i (optional.)739 2338 y @beginspecial @setspecial @endspecial 98 x Fk(9.2.8)112 b(raise)739 2490 y @beginspecial @setspecial @endspecial 870 2589 a Fo(raise)41 b(exn)1000 2689 y(exn)i(:)g (Exception)863 2840 y Fs(The)28 b Fo(raise)e Fs(function)j(raises)d(an) h(exception.)38 b(The)27 b Fo(exn)g Fs(ob)5 b(ject)28 b(can)f(b)r(e)h(an)n(y)f(ob)5 b(ject.)739 2940 y(Ho)n(w)n(ev)n(er,)26 b(the)i(normal)e(con)n(v)n(en)n(tion)g(is)i(to)f(raise)g(an)g @beginspecial @setspecial @endspecial Fo(Exception)d Fs(ob)5 b(ject)p @beginspecial @setspecial @endspecial(.)863 3039 y(If)30 b(the)g(exception)e(is)h(nev)n(er)g(caugh)n(t,)f(the)i (whole)f(ob)5 b(ject)29 b(will)g(b)r(e)h(v)n(erb)r(osely)d(prin)n(ted) 739 3139 y(in)h(the)h(error)e(message.)37 b(Ho)n(w)n(ev)n(er,)27 b(if)h(the)h(ob)5 b(ject)28 b(is)g(an)g Fo(Exception)d Fs(one)j(and)g(con)n(tains)739 3238 y(a)f Fo(message)e Fs(\014eld,)j(only)f(that)h(\014eld)g(will)g(b)r(e)g(included)g(in)g (the)g(error)d(message.)739 3368 y @beginspecial @setspecial @endspecial 97 x Fk(9.2.9)112 b(exit)739 3519 y @beginspecial @setspecial @endspecial 870 3619 a Fo(exit\(code\))1000 3718 y(code)42 b(:)i(Int)863 3869 y Fs(The)28 b Fo(exit)e Fs(function)i(terminates)f Fo(omake)f Fs(abnormally)-7 b(.)863 3969 y Fo($\(exit)42 b(\))863 4069 y Fs(The)26 b Fo(exit)d Fs(function)j(tak)n(es)e(one)g(in)n(teger)g(argumen)n(t,)h (whic)n(h)g(is)g(exit)g(co)r(de.)36 b(Non-zero)739 4168 y(v)-5 b(alues)27 b(indicate)h(abnormal)e(termination.)739 4279 y @beginspecial @setspecial @endspecial 116 x Fk(9.2.10)112 b(de\014ned)739 4449 y @beginspecial @setspecial @endspecial 870 4548 a Fo($\(defined)40 b(sequence\))f(:)44 b(String)1000 4648 y(sequence)d(:)i(Sequence)863 4799 y Fs(The)d Fo(defined)d Fs(function)j(test)g(whether)g(all)f(the)i(v)-5 b(ariables)38 b(in)i(the)g(sequence)f(are)739 4899 y(curren)n(tly)26 b(de\014ned.)37 b(F)-7 b(or)27 b(example,)g(the)g(follo)n(wing)f(co)r (de)h(de\014nes)h(the)f Fo(X)g Fs(v)-5 b(ariable)26 b(if)i(it)f(is)739 4998 y(not)g(already)g(de\014ned.)p eop end %%Page: 109 109 TeXDict begin 109 108 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.2.)63 b(LOGIC,)28 b(BOOLEAN)e(FUNCTIONS,)i(AND)h (CONTR)n(OL)e(FLO)n(W)303 b Fs(109)465 515 y Fo(if)43 b($\(not)e($\(defined)f(X\)\))596 615 y(X)j(=)g(a)g(b)g(c)596 715 y(export)415 933 y Fs(It)28 b(is)g(acceptable)e(to)i(use)f (quali\014ed)h(names.)465 1161 y Fo($\(defined)40 b(X.a.b\))465 1261 y($\(defined)g(public.X\))291 1435 y @beginspecial @setspecial @endspecial 106 x Fk(9.2.11)112 b(de\014ned-en)m(v)291 1603 y @beginspecial @setspecial @endspecial 421 1712 a Fo($\(defined-env)39 b(sequence\))g(:)44 b(String)552 1811 y(sequence)c(:)k(String)415 2030 y Fs(The)26 b Fo(defined-env)c Fs(function)k(tests)h(whether)e(a)h(v)-5 b(ariable)25 b(is)h(de\014ned)h(as)e(part)h(of)g(the)291 2130 y(pro)r(cess)g(en)n (vironmen)n(t.)415 2238 y(F)-7 b(or)29 b(example,)i(the)f(follo)n(wing) f(co)r(de)g(adds)h(the)g Fo(-g)f Fs(compile)h(option)g(if)g(the)g(en)n (viron-)291 2338 y(men)n(t)d(v)-5 b(ariable)27 b Fo(DEBUG)f Fs(is)h(de\014ned.)291 2566 y Fo(if)42 b($\(defined-env)d(DEBUG\))465 2666 y(CFLAGS)i(+=)i(-g)465 2765 y(export)291 2939 y @beginspecial @setspecial @endspecial 107 x Fk(9.2.12)112 b(geten)m(v)291 3126 y @beginspecial @setspecial @endspecial 421 3216 a Fo($\(getenv)41 b(name\))g(:)i(String)421 3315 y($\(getenv)e(name,)g(default\))f(:)k(String)415 3534 y Fs(The)30 b Fo(getenv)d Fs(function)k(gets)e(the)h(v)-5 b(alue)30 b(of)g(a)f(v)-5 b(ariable)29 b(from)h(the)g(pro)r(cess)e(en)n (viron-)291 3634 y(men)n(t.)37 b(The)27 b(function)i(tak)n(es)d(one)h (or)g(t)n(w)n(o)g(argumen)n(ts.)415 3743 y(In)e(the)g(single)f(argumen) n(t)g(form,)h(an)f(exception)g(is)h(raised)f(if)h(the)g(v)-5 b(ariable)23 b(v)-5 b(ariable)24 b(is)291 3842 y(not)c(de\014ned)i(in)f (the)g(en)n(vironmen)n(t.)34 b(In)21 b(the)g(t)n(w)n(o-argumen)n(t)e (form,)j(the)f(second)f(argumen)n(t)291 3942 y(is)27 b(returned)g(as)g(the)h(result)f(if)i(the)f(v)-5 b(alue)27 b(is)g(not)h(de\014ned.)415 4051 y(F)-7 b(or)19 b(example,)i(the)f (follo)n(wing)f(co)r(de)g(de\014nes)h(the)g(v)-5 b(ariable)19 b Fo(X)g Fs(to)h(b)r(e)g(a)f(space-separated)291 4150 y(list)f(of)h(elemen)n(ts)f(of)g(the)h Fo(PATH)e Fs(en)n(vironmen)n(t)g (v)-5 b(ariable)17 b(if)i(it)g(is)f(de\014ned,)j(and)d(to)g Fo(/bin)42 b(/usr/bin)291 4250 y Fs(otherwise.)465 4478 y Fo(X)h(=)g($\(split)e($\(PATHSEP\),)e($\(getenv)h(PATH,)i (/bin:/usr/bin\)\))415 4697 y Fs(Y)-7 b(ou)28 b(ma)n(y)f(also)f(use)i (the)g(alternate)e(form.)509 4899 y Fo(getenv\(NAME\))683 4998 y(default)p eop end %%Page: 110 110 TeXDict begin 110 109 bop 739 282 a @beginspecial @setspecial @endspecial Fs(110)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.2.13)112 b(seten)m(v)739 569 y @beginspecial @setspecial @endspecial 870 669 a Fo(setenv\(name,)38 b(value\))1000 768 y(name)k(:)i(String)1000 868 y(value)e(:)h(String) 863 1051 y Fs(The)25 b Fo(setenv)c Fs(function)k(sets)f(the)g(v)-5 b(alue)24 b(of)g(a)g(v)-5 b(ariable)23 b(in)h(the)g(pro)r(cess)f(en)n (vironmen)n(t.)739 1151 y(En)n(vironmen)n(t)j(v)-5 b(ariables)26 b(are)h(scop)r(ed)g(lik)n(e)h(normal)e(v)-5 b(ariables.)739 1283 y @beginspecial @setspecial @endspecial 100 x Fk(9.2.14)112 b(unseten)m(v)739 1437 y @beginspecial @setspecial @endspecial 870 1537 a Fo(unsetenv\(names\))1000 1636 y(names)42 b(:)h(String)e(Array)863 1819 y Fs(The)31 b Fo(unsetenv)d Fs(function)j(remo)n(v)n(es)e(some)h(v)-5 b(ariable)30 b(de\014nitions)h(from)f(the)h(pro)r(cess)739 1919 y(en)n(vironmen)n (t.)36 b(En)n(vironmen)n(t)26 b(v)-5 b(ariables)26 b(are)h(scop)r(ed)g (lik)n(e)g(normal)g(v)-5 b(ariables.)739 2052 y @beginspecial @setspecial @endspecial 100 x Fk(9.2.15)112 b(get-registry)739 2225 y @beginspecial @setspecial @endspecial 870 2305 a Fo(get-registry\(hk)o(ey,)37 b(key,)42 b(field\))f(:)i(String)870 2405 y(get-registry\(hk)o(ey,)37 b(key,)42 b(field,)f(default\))f(:)j (String)1044 2505 y(hkey)f(:)h(String)1044 2604 y(key)f(:)i(String)1044 2704 y(field)e(:)h(String)863 2887 y Fs(The)23 b Fo(get-registry)18 b Fs(function)23 b(retriev)n(es)e(a)h(string)g(v)-5 b(alue)23 b(from)f(the)h(system)g(registry)739 2987 y(on)k(Win32.)37 b(On)27 b(other)g(arc)n(hitectures,)f(there)i(is)f(no)g(registry)-7 b(.)863 3086 y(The)22 b Fo(hive)e Fs(\(I)h(think)h(that)g(is)f(the)g (righ)n(t)g(w)n(ord\),)h(indicates)f(whic)n(h)g(part)g(of)g(the)h (registry)739 3186 y(to)27 b(use.)37 b(It)28 b(should)f(b)r(e)h(one)g (of)f(the)h(follo)n(wing)f(v)-5 b(alues.)863 3369 y Fj(\017)41 b Fo(HKEY_CLASSES_ROOT)863 3535 y Fj(\017)g Fo(HKEY_CURRENT_CONF)o(IG) 863 3702 y Fj(\017)g Fo(HKEY_CURRENT_USER)863 3868 y Fj(\017)g Fo(HKEY_LOCAL_MACHIN)o(E)863 4034 y Fj(\017)g Fo(HKEY_USERS)739 4217 y Fs(Refer)27 b(to)h(the)g(Microsoft)e(do)r (cumen)n(tation)i(if)g(y)n(ou)f(w)n(an)n(t)g(to)g(kno)n(w)g(what)g (these)h(mean.)863 4317 y(The)d Fo(key)f Fs(is)g(the)h(\014eld)g(y)n (ou)f(w)n(an)n(t)g(to)g(get)h(from)f(the)h(registry)-7 b(.)35 b(It)25 b(should)f(ha)n(v)n(e)f(a)i(form)739 4417 y(lik)n(e)32 b Fo(A\\B\\C)e Fs(\(if)j(y)n(ou)e(use)h(forw)n(ard)e (slashes,)i(they)h(will)f(b)r(e)g(con)n(v)n(erted)f(to)h(bac)n (kslashes\).)739 4516 y(The)c(\014eld)f(is)h(the)g(sub-\014eld)f(of)h (the)g(k)n(ey)-7 b(.)863 4616 y(In)31 b(the)g(4-argumen)n(t)e(form,)i (the)g Fo(default)d Fs(is)j(returned)f(on)g(failure.)46 b(Y)-7 b(ou)30 b(ma)n(y)g(also)739 4716 y(use)d(the)h(alternate)f (form.)913 4899 y Fo(get-registry\(hkey)o(,)37 b(key,)42 b(field\))1044 4998 y(default)p eop end %%Page: 111 111 TeXDict begin 111 110 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.3.)63 b(ARRA)-7 b(YS)29 b(AND)g(SEQUENCES)1442 b Fs(111)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.2.16)112 b(getv)-6 b(ar)291 588 y @beginspecial @setspecial @endspecial 421 669 a Fo($\(getvar)41 b(name\))g(:)i (String)415 826 y Fs(The)28 b Fo(getvar)d Fs(function)j(gets)f(the)h(v) -5 b(alue)28 b(of)f(a)g(v)-5 b(ariable.)415 926 y(An)28 b(exception)f(is)h(raised)e(if)j(the)f(v)-5 b(ariable)26 b(v)-5 b(ariable)27 b(is)g(not)h(de\014ned.)415 1025 y(F)-7 b(or)27 b(example,)g(the)h(follo)n(wing)f(co)r(de)g(de\014nes)h (X)g(to)f(b)r(e)h(the)g(string)f(ab)r(c.)465 1183 y Fo(NAME)42 b(=)h(foo)465 1282 y(foo_1)e(=)j(abc)465 1382 y(X)f(=)g($\(getvar)e ($\(NAME\)_1\))415 1540 y Fs(It)28 b(is)g(acceptable)e(to)i(use)f (quali\014ed)h(names.)465 1697 y Fo($\(getvar)40 b(X.a.b\))291 1827 y @beginspecial @setspecial @endspecial 98 x Fk(9.2.17)112 b(setv)-6 b(ar)291 1979 y @beginspecial @setspecial @endspecial 421 2078 a Fo(setvar\(name,)39 b(value\))552 2178 y(name)j(:)h(String) 552 2278 y(value)f(:)h(String)415 2435 y Fs(The)22 b Fo(setvar)e Fs(function)j(de\014nes)f(a)f(new)h(v)-5 b(ariable.)34 b(F)-7 b(or)22 b(example,)h(the)f(follo)n(wing)f(co)r(de) 291 2535 y(de\014nes)27 b(the)h(v)-5 b(ariable)27 b Fo(X)g Fs(to)g(b)r(e)h(the)g(string)f Fo(abc)p Fs(.)421 2692 y Fo(NAME)42 b(=)h(X)421 2792 y(setvar\($\(NAME\),)38 b(abc\))415 2949 y Fs(It)28 b(is)g(acceptable)e(to)i(use)f(quali\014ed) h(names.)465 3107 y Fo(setvar\(public.X,)37 b(abc\))291 3246 y @beginspecial @setspecial @endspecial 131 x Fl(9.3)135 b(Arra)l(ys)45 b(and)g(sequences)291 3483 y @beginspecial @setspecial @endspecial 93 x Fk(9.3.1)112 b(arra)m(y)291 3649 y @beginspecial @setspecial @endspecial 465 3729 a Fo($\(array)41 b(elements\))e(:)44 b(Array)596 3829 y(elements)c(:)j(Sequence)415 3986 y Fs(The)38 b Fo(array)d Fs(function)k(creates)d(an)h(arra)n(y)e(from)j(a)f(sequence.)66 b(If)38 b(the)g Fo()e Fs(is)h(a)291 4086 y(string,)31 b(the)h(elemen)n(ts)f(of)h(the)f(arra)n(y)e(are)i(the)h (whitespace-separated)d(elemen)n(ts)i(of)h(the)291 4185 y(string,)27 b(resp)r(ecting)g(quotes.)415 4285 y(In)h(addition,)f (arra)n(y)f(v)-5 b(ariables)26 b(can)h(b)r(e)h(declared)f(as)g(follo)n (ws.)465 4442 y Fo(A[])42 b(=)596 4542 y()596 4642 y(...)596 4741 y()415 4899 y Fs(In)30 b(this)h(case,)f(the)g (elemen)n(ts)g(of)g(the)h(arra)n(y)d(are)h(exactly)g Fo()p Fs(,)g(...,)i Fo()p Fs(,)d(and)291 4998 y(whitespace)f(is)g(preserv)n(ed)f(literally)-7 b(.)p eop end %%Page: 112 112 TeXDict begin 112 111 bop 739 282 a @beginspecial @setspecial @endspecial Fs(112)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.2)112 b(split)739 588 y @beginspecial @setspecial @endspecial 870 669 a Fo($\(split)40 b(sep,)i(elements\))e(:)j(Array) 1000 768 y(sep)g(:)g(String)1000 868 y(elements)e(:)i(Sequence)863 1011 y Fs(The)23 b Fo(split)e Fs(function)i(tak)n(es)e(t)n(w)n(o)h (argumen)n(ts,)h(a)f(string)g(of)g(separators,)f(and)i(a)f(string)739 1111 y(argumen)n(t.)49 b(The)33 b(result)e(is)i(an)e(arra)n(y)f(of)i (elemen)n(ts)g(determined)h(b)n(y)f(splitting)g(the)h(ele-)739 1210 y(men)n(ts)28 b(b)n(y)f(all)g(o)r(ccurrence)f(of)i(the)g (separator)d(in)j(the)g Fo(elements)c Fs(sequence.)863 1310 y(F)-7 b(or)27 b(example,)g(in)h(the)f(follo)n(wing)f(co)r(de,)i (the)f Fo(X)g Fs(v)-5 b(ariable)26 b(is)i(de\014ned)f(to)g(b)r(e)h(the) g(arra)n(y)739 1409 y Fo(/bin)42 b(/usr/bin)e(/usr/local/bin)p Fs(.)913 1552 y Fo(PATH)i(=)h(/bin:/usr/bin:/us)o(r/)o(loc)o(al)o(/bi)o (n)913 1652 y(X)g(=)h($\(split)c(:,)j($\(PATH\)\))863 1795 y Fs(The)25 b Fo(sep)e Fs(argumen)n(t)h(ma)n(y)f(b)r(e)i(omitted.) 36 b(In)25 b(this)g(case)e Fo(split)g Fs(breaks)g(its)i(argumen)n(ts) 739 1895 y(along)h(the)i(white)g(space.)36 b(Quotations)27 b(are)f(not)i(split.)739 2020 y @beginspecial @setspecial @endspecial 100 x Fk(9.3.3)112 b(concat)739 2174 y @beginspecial @setspecial @endspecial 870 2274 a Fo($\(concat)40 b(sep,)i(elements\)) e(:)j(String)1000 2373 y(sep)g(:)g(String)1000 2473 y(elements)e(:)i (Sequence)863 2616 y Fs(The)20 b Fo(concat)e Fs(function)i(tak)n(es)f (t)n(w)n(o)g(argumen)n(ts,)h(a)f(separator)f(string,)j(and)e(a)h (sequence)739 2716 y(of)g(elemen)n(ts.)34 b(The)21 b(result)f(is)g(a)g (string)f(formed)h(b)n(y)g(concatenating)g(the)g(elemen)n(ts,)i (placing)739 2815 y(the)28 b(separator)d(b)r(et)n(w)n(een)j(adjacen)n (t)f(elemen)n(ts.)863 2915 y(F)-7 b(or)26 b(example,)g(in)g(the)g (follo)n(wing)f(co)r(de,)h(the)g Fo(X)g Fs(v)-5 b(ariable)25 b(is)g(de\014ned)i(to)e(b)r(e)i(the)f(string)739 3015 y Fo(foo_x_bar_x_baz)p Fs(.)913 3158 y Fo(X)43 b(=)h(foo)86 b(bar)216 b(baz)913 3257 y(Y)43 b(=)h($\(concat)c(_x_,)i($\(X\)\))739 3378 y @beginspecial @setspecial @endspecial 105 x Fk(9.3.4)112 b(length)739 3556 y @beginspecial @setspecial @endspecial 870 3636 a Fo($\(length)40 b(sequence\))g(:)j(Int)1000 3736 y(sequence)e(:)i(Sequence)863 3879 y Fs(The)28 b Fo(length)d Fs(function)j(returns)f(the)h(n)n(um)n(b)r(er)g(of)f (elemen)n(ts)h(in)g(its)f(argumen)n(t.)863 3978 y(F)-7 b(or)27 b(example,)h(the)g(expression)e Fo($\(length)40 b(a)87 b(b)43 b("c)g(d"\))26 b Fs(ev)-5 b(aluates)27 b(to)h(3.)739 4106 y @beginspecial @setspecial @endspecial 98 x Fk(9.3.5)112 b(n)m(th)739 4258 y @beginspecial @setspecial @endspecial 870 4357 a Fo($\(nth)41 b(i,)i(sequence\))d(:)j(value)1000 4457 y(i)h(:)f(Int)1000 4557 y(sequence)e(:)i(Sequence)870 4656 y(raises)e(RuntimeException)863 4799 y Fs(The)28 b Fo(nth)f Fs(function)h(returns)f(the)i(n)n(th)f(elemen)n(t)g(of)f (its)h(argumen)n(t,)f(treated)g(as)h(a)f(list.)739 4899 y(Coun)n(ting)g(starts)g(at)g(0.)37 b(An)28 b(exception)f(is)h(raised)e (if)i(the)g(index)g(is)f(not)h(in)g(b)r(ounds.)863 4998 y(F)-7 b(or)27 b(example,)h(the)g(expression)e Fo($\(nth)41 b(1,)i(a)g("b)g(c")g(d\))27 b Fs(ev)-5 b(aluates)26 b(to)i Fo("b)43 b(c")p Fs(.)p eop end %%Page: 113 113 TeXDict begin 113 112 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.3.)63 b(ARRA)-7 b(YS)29 b(AND)g(SEQUENCES)1442 b Fs(113)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.6)112 b(replace-n)m(th)291 588 y @beginspecial @setspecial @endspecial 421 669 a Fo($\(replace-nth)39 b(i,)j(sequence,)e(x\))j(:)g(value)552 768 y(i)g(:)g(Int)552 868 y(sequence)d(:)k(Sequence)552 967 y(x)f(:)g(value)421 1067 y(raises)e(RuntimeException)415 1239 y Fs(The)29 b Fo(replace-nth)24 b Fs(function)29 b(replaces)e(the)i(n)n(th)g (elemen)n(t)g(of)f(its)h(argumen)n(t)e(with)i(a)291 1339 y(new)e(v)-5 b(alue)28 b Fo(x)p Fs(.)37 b(Coun)n(ting)28 b(starts)f(at)g(0.)37 b(An)29 b(exception)e(is)h(raised)f(if)h(the)g (index)g(is)g(not)g(in)291 1438 y(b)r(ounds.)415 1538 y(F)-7 b(or)34 b(example,)h(the)f(expression)f Fo($\(replace-nth)38 b(1,)43 b(a)g("b)g(c")g(d,)f(x\))34 b Fs(ev)-5 b(aluates)291 1638 y(to)27 b Fo(a)43 b(x)g(d)p Fs(.)291 1752 y @beginspecial @setspecial @endspecial 116 x Fk(9.3.7)112 b(n)m(th-hd)291 1922 y @beginspecial @setspecial @endspecial 421 2021 a Fo($\(nth-hd)41 b(i,)h(sequence\))e(:)j(value)552 2121 y(i)g(:)g(Int)552 2221 y(sequence)d(:)k(Sequence)421 2320 y(raises)d(RuntimeException)415 2492 y Fs(The)25 b Fo(nth-hd)d Fs(function)j(returns)e(the)i(\014rst)g Fo(i)f Fs(elemen)n(ts)g(of)g(the)h(sequence.)36 b(An)25 b(excep-)291 2592 y(tion)i(is)h(raised)e(if)i(the)g(sequence)f(is)h (not)f(at)h(least)f Fo(i)g Fs(elemen)n(ts)h(long.)415 2691 y(F)-7 b(or)18 b(example,)i(the)e(expression)f Fo($\(nth-hd)41 b(2,)h(a)i("b)e(c")h(d\))18 b Fs(ev)-5 b(aluates)17 b(to)i Fo(a)43 b("b)g(c")p Fs(.)291 2822 y @beginspecial @setspecial @endspecial 100 x Fk(9.3.8)112 b(n)m(th-tl)291 2976 y @beginspecial @setspecial @endspecial 421 3075 a Fo($\(nth-tl)41 b(i,)h(sequence\))e(:)j(value)552 3175 y(i)g(:)g(Int)552 3274 y(sequence)d(:)k(Sequence)421 3374 y(raises)d(RuntimeException)415 3546 y Fs(The)28 b Fo(nth-tl)e Fs(function)j(skips)f Fo(i)g Fs(elemen)n(ts)g(of)g(the)g(sequence)g(and)g(returns)g(the)g (rest.)291 3646 y(An)g(exception)f(is)g(raised)g(if)h(the)g(sequence)f (is)h(not)f(at)h(least)f Fo(i)g Fs(elemen)n(ts)h(long.)415 3745 y(F)-7 b(or)18 b(example,)i(the)e(expression)f Fo($\(nth-tl)41 b(1,)h(a)i("b)e(c")h(d\))18 b Fs(ev)-5 b(aluates)17 b(to)i Fo("b)42 b(c")h(d)p Fs(.)291 3876 y @beginspecial @setspecial @endspecial 100 x Fk(9.3.9)112 b(subrange)291 4049 y @beginspecial @setspecial @endspecial 421 4129 a Fo($\(subrange)40 b(off,)i(len,)g(sequent\))e(:)j(value)552 4229 y(off)f(:)i(Int)552 4328 y(len)e(:)i(Int)552 4428 y(sequence)c(:)k(Sequence)421 4528 y(raises)d(RuntimeException)415 4700 y Fs(The)26 b Fo(subrange)c Fs(function)k(returns)f(a)g(subrange)f(of)h(the)h (sequence.)36 b(Coun)n(ting)25 b(starts)291 4799 y(at)i(0.)37 b(An)28 b(exception)f(is)g(raised)g(if)h(the)g(sp)r(eci\014ed)g(range)e (is)i(not)f(in)h(b)r(ounds.)415 4899 y(F)-7 b(or)23 b(example,)h(the)g (expression)e Fo($\(subrange)39 b(1,)k(2,)g(a)g("b)g(c")f(d)i(e\))22 b Fs(ev)-5 b(aluates)23 b(to)291 4998 y Fo("b)42 b(c")h(d)p Fs(.)p eop end %%Page: 114 114 TeXDict begin 114 113 bop 739 282 a @beginspecial @setspecial @endspecial Fs(114)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.10)112 b(rev)739 570 y @beginspecial @setspecial @endspecial 913 670 a Fo($\(rev)42 b(sequence\))e(:)j(Sequence)1044 770 y(sequence)d(:)j(Sequence)863 957 y Fs(The)33 b Fo(rev)e Fs(function)h(returns)g(the)g(elemen)n(ts)g(of)g(a)g(sequence)f(in)i (rev)n(erse)d(order.)49 b(F)-7 b(or)739 1056 y(example,)27 b(the)h(expression)e Fo($\(rev)42 b(a)h("b)g(c")f(d\))27 b Fs(ev)-5 b(aluates)27 b(to)h Fo(d)43 b("b)g(c")f(a)p Fs(.)739 1193 y @beginspecial @setspecial @endspecial 101 x Fk(9.3.11)112 b(join)739 1368 y @beginspecial @setspecial @endspecial 870 1449 a Fo($\(join)41 b(sequence1,)e(sequence2\))h(:)j (Sequence)1000 1549 y(sequence1)d(:)j(Sequence)1000 1649 y(sequence2)d(:)j(Sequence)863 1835 y Fs(The)37 b Fo(join)d Fs(function)j(joins)f(together)f(the)h(elemen)n(ts)g(of)g(the)h(t)n(w)n (o)e(sequences.)62 b(F)-7 b(or)739 1935 y(example,)22 b Fo($\(join)41 b(a)i(b)g(c,)g(.c)g(.cpp)e(.h\))20 b Fs(ev)-5 b(aluates)20 b(to)h Fo(a.c)42 b(b.cpp)f(c.h)p Fs(.)34 b(If)21 b(the)g(t)n(w)n(o)739 2035 y(input)30 b(sequences)e(ha)n(v)n(e)g(di\013eren)n(t)h(lengths,)g(the)g(remainder) f(of)h(the)g(longer)f(sequence)g(is)739 2134 y(copied)f(at)h(the)g(end) f(of)h(the)g(output)g(unmo)r(di\014ed.)739 2271 y @beginspecial @setspecial @endspecial 101 x Fk(9.3.12)112 b(string)739 2446 y @beginspecial @setspecial @endspecial 870 2527 a Fo($\(string)40 b(sequence\))g(:)j(String)1000 2627 y(sequence)e(:)i(Sequence)863 2814 y Fs(The)27 b Fo(string)e Fs(function)i(\015attens)g(a)f(sequence)g(in)n(to)h(a)f(single)h (string.)36 b(This)26 b(is)h(similar)739 2913 y(to)37 b(the)g Fo(concat)e Fs(function,)40 b(but)d(the)g(elemen)n(ts)g(are)f (separated)g(b)n(y)h(whitespace.)64 b(The)739 3013 y(result)27 b(is)h(treated)f(as)g(a)g(unit;)h(whitespace)g(is)f(signi\014can)n(t.) 739 3150 y @beginspecial @setspecial @endspecial 101 x Fk(9.3.13)112 b(string-length)739 3325 y @beginspecial @setspecial @endspecial 870 3406 a Fo($\(string-length)37 b(sequence\))j(:)j(Int)1000 3506 y(sequence)e(:)i(Sequence)863 3692 y Fs(The)21 b Fo(string-lenght)15 b Fs(returns)20 b(a)g(length)h(\(n)n(um)n(b)r(er)f(of)g(c)n(haracters\))f(in)i(its)f (argumen)n(t.)739 3792 y(If)27 b(the)f(argumen)n(t)g(is)g(a)g (sequence,)g(it)h(\015attens)f(it,)i(so)d Fo($\(string-length)38 b(sequence\))22 b Fs(is)739 3892 y(equiv)-5 b(alen)n(t)27 b(to)h Fo($\(string-length)37 b($\(string)j(sequence\)\))p Fs(.)739 4031 y @beginspecial @setspecial @endspecial 98 x Fk(9.3.14)112 b(string-escap)s(ed,)30 b(o)s(caml-escap)s(ed,)g(h)m (tml-escap)s(ed,)g(h)m(tml-)1137 4246 y(pre-escap)s(ed,)40 b(c-escap)s(ed,)f(id-escap)s(ed)739 4319 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 870 4401 a Fo($\(string-escape)o(d)f (sequence\))h(:)44 b(String)d(Array)870 4500 y($\(ocaml-escaped)c (sequence\))j(:)j(String)e(Array)870 4600 y($\(html-escaped)c (sequence\))j(:)j(String)f(Array)870 4700 y($\(html-pre-esca)o(ped)37 b(sequence\))j(:)j(String)e(Array)870 4799 y($\(c-escaped)e(sequence\)) h(:)j(String)e(Array)870 4899 y($\(hex-escaped)d(sequence\))i(:)j (StringArray)1000 4998 y(sequence)e(:)i(Array)p eop end %%Page: 115 115 TeXDict begin 115 114 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.3.)63 b(ARRA)-7 b(YS)29 b(AND)g(SEQUENCES)1442 b Fs(115)415 515 y(The)34 b Fo(string-escaped)28 b Fs(function)34 b(con)n(v)n(erts)e(eac)n(h)h(elemen)n(t)h(of)g(its)g(argumen)n(t)f(to)g (a)291 615 y(string,)23 b(escaping)e(it,)j(if)f(it)h(con)n(tains)d(sym) n(b)r(ols)h(that)h(are)f(sp)r(ecial)g(to)h(OMak)n(e.)34 b(The)22 b(sp)r(ecial)291 715 y(c)n(haracters)34 b(include)j Fo(:\(\)\\,$'"#)c Fs(and)k(whitespace.)64 b(This)37 b(function)g(can)g (b)r(e)g(used)g(in)291 814 y(scanner)26 b(rules)h(to)h(escap)r(e)f (\014le)g(names)h(b)r(efore)f(prin)n(ting)g(then)h(to)g Fo(stdout)p Fs(.)415 914 y(The)38 b Fo(ocaml-escaped)33 b Fs(function)39 b(con)n(v)n(erts)d(eac)n(h)i(elemen)n(t)g(of)g(its)g (argumen)n(t)f(to)h(a)291 1013 y(string,)27 b(escaping)f(c)n(haracters) f(that)j(are)f(sp)r(ecial)g(to)h(OCaml.)415 1113 y(The)j Fo(c-escaped)d Fs(function)j(con)n(v)n(erts)e(a)i(string)f(to)h(a)g (form)g(that)g(can)g(b)r(e)g(used)g(as)f(a)291 1213 y(string)c(constan) n(t)h(in)h(C.)415 1312 y(The)f Fo(id-escaped)c Fs(function)k(turns)g(a) f(string)h(in)n(to)f(an)h(iden)n(ti\014er)f(that)i(ma)n(y)e(b)r(e)h (used)291 1412 y(in)g(OMak)n(e.)415 1512 y(The)i Fo(html-escaped)24 b Fs(function)30 b(turns)f(a)g(literal)f(string)h(in)n(to)g(a)f(form)h (acceptable)g(as)291 1611 y(HTML.)35 b(The)g Fo(html-pre-escape)o(d)29 b Fs(function)35 b(is)g(similar,)h(but)f(it)h(do)r(es)e(not)h (translate)291 1711 y(newlines)27 b(in)n(to)g Fo(
)p Fs(.)465 1879 y Fo(println\($\(string)37 b($\(string-escaped)g($"a)42 b(b")h($"y:z"\)\)\))465 1979 y(a\\)g(b)g(y\\:z)291 2111 y @beginspecial @setspecial @endspecial 98 x Fk(9.3.15)112 b(deco)s(de-uri,)39 b(enco)s(de-uri)291 2282 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 465 2362 a Fo($\(decode-uri)g(sequence\))g(:)44 b(sequence)639 2462 y(sequence)d(:)i(Sequence)415 2630 y Fs(These)38 b(t)n(w)n(o)g(functions)h(p)r(erform)f(URI)h(enco)r(ding,)i(where)d(sp) r(ecial)h(c)n(haracters)d(are)291 2730 y(represen)n(ted)26 b(b)n(y)h(hexadecimal)g(c)n(haracters.)465 2899 y Fo(osh>)42 b(s)h(=)g($\(encode-uri)c($'a)j(b~c'\))465 2998 y("a+b\0457ec")465 3098 y(osh>)g(decode-uri\($s\))465 3198 y("a)h(b~c")291 3311 y @beginspecial @setspecial @endspecial 116 x Fk(9.3.16)112 b(quote)291 3500 y @beginspecial @setspecial @endspecial 421 3581 a Fo($\(quote)41 b(sequence\))f(:)j(String)552 3680 y(sequence)d(:)k(Sequence)415 3849 y Fs(The)27 b Fo(quote)f Fs(function)i(\015attens)f(a)g(sequence)f(in)n(to)h(a)g (single)g(string)g(and)g(adds)f(quotes)291 3949 y(around)g(the)i (string.)36 b(Inner)28 b(quotation)f(sym)n(b)r(ols)f(are)h(escap)r(ed.) 415 4048 y(F)-7 b(or)18 b(example,)i(the)e(expression)f Fo($\(quote)41 b(a)i("b)g(c")g(d\))17 b Fs(ev)-5 b(aluates)18 b(to)g Fo("a)43 b(\\"b)f(c\\")h(d")p Fs(,)291 4148 y(and)27 b Fo($\(quote)41 b(abc\))26 b Fs(ev)-5 b(aluates)27 b(to)g Fo("abc")p Fs(.)291 4280 y @beginspecial @setspecial @endspecial 98 x Fk(9.3.17)112 b(quote-argv)291 4451 y @beginspecial @setspecial @endspecial 421 4531 a Fo($\(quote-argv)39 b(sequence\))h(:)j(String)552 4631 y(sequence)d(:)k(Sequence)415 4799 y Fs(The)29 b Fo(quote-argv)c Fs(function)30 b(\015attens)f(a)f (sequence)h(in)n(to)g(a)f(single)h(string,)f(and)h(adds)291 4899 y(quotes)20 b(around)g(the)h(string.)34 b(The)21 b(quotation)g(is)g(formed)f(so)h(that)g(a)g(command-line)f(parse)291 4998 y(can)27 b(separate)f(the)i(string)f(bac)n(k)g(in)n(to)g(its)h (comp)r(onen)n(ts.)p eop end %%Page: 116 116 TeXDict begin 116 115 bop 739 282 a @beginspecial @setspecial @endspecial Fs(116)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.18)112 b(h)m(tml-string)739 595 y @beginspecial @setspecial @endspecial 870 684 a Fo($\(html-string)38 b(sequence\))i(:)j(String)1000 784 y(sequence)e(:)i(Sequence)863 999 y Fs(The)32 b Fo(html-string)27 b Fs(function)k(\015attens)h(a)f (sequence)f(in)n(to)h(a)g(single)g(string,)h(and)f(es-)739 1099 y(cap)r(ed)23 b(sp)r(ecial)h(HTML)g(c)n(haracters.)33 b(This)24 b(is)f(similar)g(to)g(the)h Fo(concat)e Fs(function,)j(but)f (the)739 1199 y(elemen)n(ts)19 b(are)g(separated)f(b)n(y)h(whitespace.) 34 b(The)19 b(result)g(is)h(treated)f(as)g(a)g(unit;)k(whitespace)739 1298 y(is)k(signi\014can)n(t.)739 1466 y @beginspecial @setspecial @endspecial 108 x Fk(9.3.19)112 b(addsu\016x)739 1635 y @beginspecial @setspecial @endspecial 870 1743 a Fo($\(addsuffix)39 b(suffix,)h(sequence\))g(:)j(Array)1000 1843 y(suffix)f(:)h(String)1000 1942 y(sequence)e(:)i(Sequence)863 2158 y Fs(The)29 b Fo(addsuffix)c Fs(function)30 b(adds)e(a)g(su\016x)h (to)f(eac)n(h)g(comp)r(onen)n(t)h(of)f(sequence.)40 b(The)739 2258 y(n)n(um)n(b)r(er)27 b(of)g(elemen)n(ts)h(in)f(the)h(arra)n(y)d (is)i(exactly)g(the)h(same)e(as)h(the)h(n)n(um)n(b)r(er)f(of)g(elemen)n (ts)739 2357 y(in)h(the)g(sequence.)863 2465 y(F)-7 b(or)18 b(example,)i Fo($\(addsuffix)39 b(.c,)j(a)i(b)f("c)g(d"\))17 b Fs(ev)-5 b(aluates)17 b(to)i Fo(a.c)42 b(b.c)g("c)h(d".c)p Fs(.)739 2633 y @beginspecial @setspecial @endspecial 108 x Fk(9.3.20)112 b(mapsu\016x)739 2822 y @beginspecial @setspecial @endspecial 870 2910 a Fo($\(mapsuffix)39 b(suffix,)h(sequence\))g(:)j(Array)1000 3010 y(suffix)f(:)h(value)1000 3109 y(sequence)e(:)i(Sequence)863 3325 y Fs(The)29 b Fo(mapsuffix)c Fs(function)k(adds)f(a)g(su\016x)g(to)g(eac)n(h)g(comp)r (onen)n(t)g(of)h(sequence.)39 b(It)28 b(is)739 3425 y(similar)23 b(to)h Fo(addsuffix)p Fs(,)e(but)i(uses)g(arra)n(y)e(concatenation)h (instead)h(of)g(string)g(concatena-)739 3524 y(tion.)46 b(The)31 b(n)n(um)n(b)r(er)g(of)f(elemen)n(ts)h(in)g(the)g(arra)n(y)e (is)h(t)n(wice)h(the)g(n)n(um)n(b)r(er)g(of)f(elemen)n(ts)h(in)739 3624 y(the)d(sequence.)863 3732 y(F)-7 b(or)18 b(example,)i Fo($\(mapsuffix)39 b(.c,)j(a)i(b)f("c)g(d"\))17 b Fs(ev)-5 b(aluates)17 b(to)i Fo(a)43 b(.c)g(b)g(.c)g("c)f(d")h(.c)p Fs(.)739 3902 y @beginspecial @setspecial @endspecial 106 x Fk(9.3.21)112 b(addsu\016xes)739 4069 y @beginspecial @setspecial @endspecial 870 4177 a Fo($\(addsuffixes)38 b(suffixes,)i(sequence\))g(:)j(Array)1000 4276 y(suffixes)e(:)i (Sequence)1000 4376 y(sequence)e(:)i(Sequence)863 4592 y Fs(The)c Fo(addsuffixes)34 b Fs(function)40 b(adds)e(all)g(su\016xes) h(in)g(its)f(\014rst)h(argumen)n(t)e(to)i(eac)n(h)739 4691 y(comp)r(onen)n(t)d(of)h(a)f(sequence.)64 b(If)37 b Fo(suffixes)c Fs(has)j Fo(n)h Fs(elemen)n(ts,)i(and)d Fo(sequence)d Fs(has)k Fo(m)739 4791 y Fs(elemen)n(ts,)27 b(the)h(the)g(result)g(has)f Fo(n)43 b(*)g(m)27 b Fs(elemen)n(ts.)863 4899 y(F)-7 b(or)32 b(example,)i(the)e Fo($\(addsuffixes)39 b(.c)j(.o,)h(a)g(b)g(c\))32 b Fs(expressions)f(ev)-5 b(aluates)31 b(to)739 4998 y Fo(a.c)42 b(a.o)h(b.c)f(b.o)g(c.o)h(c.a)p Fs(.)p eop end %%Page: 117 117 TeXDict begin 117 116 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.3.)63 b(ARRA)-7 b(YS)29 b(AND)g(SEQUENCES)1442 b Fs(117)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.22)112 b(remo)m(v)m(epre\014x)291 589 y @beginspecial @setspecial @endspecial 421 671 a Fo($\(removeprefix)38 b(prefix,)j(sequence\))f(:)j(Array)552 771 y(prefix)e(:)i(String)552 870 y(sequence)d(:)k(Array)415 1058 y Fs(The)d Fo(removeprefix)36 b Fs(function)41 b(remo)n(v)n(es)e(a)h(pre\014x)g(from)g(eac)n(h)g (comp)r(onen)n(t)h(of)f(a)291 1158 y(sequence.)291 1296 y @beginspecial @setspecial @endspecial 101 x Fk(9.3.23)112 b(remo)m(v)m(esu\016x)291 1452 y @beginspecial @setspecial @endspecial 421 1553 a Fo($\(removesuffix)38 b(sequence\))i(:)j(Array) 552 1652 y(sequence)d(:)k(String)415 1840 y Fs(The)28 b Fo(removesuffix)23 b Fs(function)28 b(remo)n(v)n(es)e(the)i (su\016xes)f(from)g(eac)n(h)g(comp)r(onen)n(t)h(of)f(a)291 1940 y(sequence.)415 2041 y(F)-7 b(or)27 b(example,)g Fo($\(removesuffix)38 b(a.c)k(b.foo)g("c)h(d"\))26 b Fs(expands)h(to)h Fo(a)43 b(b)g("c)g(d")p Fs(.)291 2179 y @beginspecial @setspecial @endspecial 101 x Fk(9.3.24)112 b(replacesu\016xes)291 2354 y @beginspecial @setspecial @endspecial 421 2436 a Fo($\(replacesuffixes)37 b(old-suffixes,)h (new-suffixes,)g(sequence\))i(:)j(Array)552 2535 y(old-suffixes)c(:)k (Sequence)552 2635 y(new-suffixes)c(:)k(Sequence)552 2734 y(sequence)d(:)k(Sequence)415 2922 y Fs(The)39 b Fo(replacesuffixes)32 b Fs(function)40 b(mo)r(di\014es)e(the)h(su\016x) g(of)f(eac)n(h)g(comp)r(onen)n(t)h(in)291 3022 y(sequence.)68 b(The)39 b Fo(old-suffixes)33 b Fs(and)38 b Fo(new-suffixes)c Fs(sequences)j(should)h(ha)n(v)n(e)g(the)291 3122 y(same)27 b(length.)415 3222 y(F)-7 b(or)28 b(example,)h Fo($\(replacesuffixe)o (s)37 b(.h)43 b(.c,)g(.o)f(.o,)h(a.c)f(b.h)g(c.z\))27 b Fs(expands)291 3322 y(to)g Fo(a.o)42 b(b.o)h(c.z)p Fs(.)291 3444 y @beginspecial @setspecial @endspecial 117 x Fk(9.3.25)112 b(addpre\014x)291 3635 y @beginspecial @setspecial @endspecial 421 3717 a Fo($\(addprefix)39 b(prefix,)i(sequence\))f(:)j(Array)552 3817 y(prefix)e(:)i(String)552 3916 y(sequence)d(:)k(Sequence)415 4104 y Fs(The)38 b Fo(addprefix)c Fs(function)k(adds)g(a)f(pre\014x)g(to)h(eac)n(h)f(comp) r(onen)n(t)g(of)h(a)f(sequence.)291 4204 y(The)25 b(n)n(um)n(b)r(er)g (of)h(elemen)n(t)f(in)h(the)f(result)h(arra)n(y)d(is)i(exactly)g(the)g (same)g(as)g(the)h(n)n(um)n(b)r(er)f(of)291 4303 y(elemen)n(ts)i(in)h (the)g(argumen)n(t)e(sequence.)415 4404 y(F)-7 b(or)18 b(example,)i Fo($\(addprefix)39 b(foo/,)i(a)i(b)h("c)e(d"\))18 b Fs(ev)-5 b(aluates)17 b(to)i Fo(foo/a)41 b(foo/b)h(foo/"c)f(d")p Fs(.)291 4544 y @beginspecial @setspecial @endspecial 100 x Fk(9.3.26)112 b(mappre\014x)291 4718 y @beginspecial @setspecial @endspecial 421 4799 a Fo($\(mapprefix)39 b(prefix,)i(sequence\))f(:)j(Array)552 4899 y(prefix)e(:)i(String)552 4998 y(sequence)d(:)k(Sequence)p eop end %%Page: 118 118 TeXDict begin 118 117 bop 739 282 a @beginspecial @setspecial @endspecial Fs(118)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)863 515 y Fs(The)29 b Fo(mapprefix)c Fs(function)k(adds)f(a)g(pre\014x)g(to)g(eac)n(h)g(comp)r(onen)n(t)g (of)h(a)f(sequence.)39 b(It)739 615 y(is)29 b(similar)g(to)g Fo(addprefix)p Fs(,)d(but)k(arra)n(y)d(concatenation)h(is)h(used)h (instead)f(of)g(string)g(con-)739 715 y(catenation.)39 b(The)28 b(result)g(arra)n(y)e(con)n(tains)i(t)n(wice)g(as)g(man)n(y)f (elemen)n(ts)i(as)f(the)g(argumen)n(t)739 814 y(sequence.)863 914 y(F)-7 b(or)18 b(example,)i Fo($\(mapprefix)39 b(foo,)j(a)h(b)g("c) g(d"\))17 b Fs(expands)h(to)g Fo(foo)43 b(a)g(foo)f(b)h(foo)g("c)f(d")p Fs(.)739 1045 y @beginspecial @setspecial @endspecial 98 x Fk(9.3.27)112 b(add-wrapp)s(er)739 1216 y @beginspecial @setspecial @endspecial 870 1296 a Fo($\(add-wrapper)38 b(prefix,)j(suffix,)f(sequence\))g(:)j(Array)1000 1396 y(prefix)f(:)h(String)1000 1496 y(suffix)f(:)h(String)1000 1595 y(sequence)e(:)i(Sequence)863 1761 y Fs(The)29 b Fo(add-wrapper)24 b Fs(functions)k(adds)g(b)r(oth)h(a)e(pre\014x)h(and) g(a)g(su\016x)g(to)g(eac)n(h)g(comp)r(o-)739 1860 y(nen)n(t)18 b(of)h(a)f(sequence.)33 b(F)-7 b(or)18 b(example,)i(the)e(expression)f Fo($\(add-wrapper)39 b(dir/,)i(.c,)h(a)i(b\))739 1960 y Fs(ev)-5 b(aluates)28 b(to)h Fo(dir/a.c)40 b(dir/b.c)p Fs(.)e(String)28 b(concatenation)g(is)g(used.)40 b(The)29 b(arra)n(y)e(result)739 2060 y(has)g(the)h(same)f(n)n(um)n(b)r(er)g(of) h(elemen)n(ts)f(as)g(the)h(argumen)n(t)f(sequence.)739 2189 y @beginspecial @setspecial @endspecial 100 x Fk(9.3.28)112 b(set)739 2343 y @beginspecial @setspecial @endspecial 870 2442 a Fo($\(set)41 b(sequence\))f(:)j(Array)1000 2542 y(sequence)e(:)i(Sequence)863 2707 y Fs(The)28 b Fo(set)f Fs(function)h(sorts)e(a)h(set)h(of)g(string)e(comp)r(onen)n (ts,)i(eliminating)f(duplicates.)863 2807 y(F)-7 b(or)27 b(example,)h Fo($\(set)41 b(z)i(y)h(z)f("m)f(n")h(w)g(a\))27 b Fs(expands)g(to)h Fo("m)42 b(n")h(a)g(w)h(y)f(z)p Fs(.)739 2938 y @beginspecial @setspecial @endspecial 98 x Fk(9.3.29)112 b(mem)739 3090 y @beginspecial @setspecial @endspecial 870 3189 a Fo($\(mem)41 b(elem,)h(sequence\))e(:)j(Boolean)1000 3289 y(elem)f(:)i(String)1000 3389 y(sequence)d(:)i(Sequence)863 3554 y Fs(The)28 b Fo(mem)f Fs(function)h(tests)f(for)g(mem)n(b)r (ership)h(in)g(a)f(sequence.)863 3654 y(F)-7 b(or)18 b(example,)i Fo($\(mem)42 b("m)g(n",)h(y)g(z)g("m)g(n")g(w)g(a\))17 b Fs(ev)-5 b(aluates)18 b(to)g Fo(true)p Fs(,)h(while)g Fo($\(mem)41 b(m)i(n,)g(y)g(z)g("m)g(n")g(w)g(a\))739 3753 y Fs(ev)-5 b(aluates)27 b(to)g Fo(false)p Fs(.)739 3866 y @beginspecial @setspecial @endspecial 117 x Fk(9.3.30)112 b(in)m(tersection)739 4036 y @beginspecial @setspecial @endspecial 870 4136 a Fo($\(intersection)37 b(sequence1,)j (sequence2\))f(:)44 b(Array)1000 4235 y(sequence1)c(:)j(Sequence)1000 4335 y(sequence2)d(:)j(Sequence)863 4500 y Fs(The)d Fo(intersection)34 b Fs(function)39 b(tak)n(es)f(t)n(w)n(o)h(argumen)n(ts,)h(treats)f (them)g(as)f(sets)h(of)739 4600 y(strings,)31 b(and)h(computes)f(their) g(in)n(tersection.)48 b(The)32 b(order)e(of)h(the)h(result)f(is)h (unde\014ned,)739 4700 y(and)38 b(it)h(ma)n(y)e(con)n(tain)h (duplicates.)68 b(Use)39 b(the)f Fo(set)f Fs(function)i(to)f(sort)g (the)g(result)g(and)739 4799 y(eliminate)28 b(duplicates)f(in)h(the)g (result)f(if)h(desired.)863 4899 y(F)-7 b(or)31 b(example,)g(the)g (expression)e Fo($\(intersection)38 b(c)43 b(a)g(b)g(a,)g(b)g(a\))30 b Fs(ev)-5 b(aluates)30 b(to)739 4998 y Fo(a)43 b(b)g(a)p Fs(.)p eop end %%Page: 119 119 TeXDict begin 119 118 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.3.)63 b(ARRA)-7 b(YS)29 b(AND)g(SEQUENCES)1442 b Fs(119)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.31)112 b(in)m(tersects)291 569 y @beginspecial @setspecial @endspecial 421 669 a Fo($\(intersects)39 b(sequence1,)g(sequence2\))h(:)j(Boolean)552 768 y(sequence1)d(:)j (Sequence)552 868 y(sequence2)d(:)j(Sequence)415 1018 y Fs(The)25 b Fo(intersects)20 b Fs(function)25 b(tests)g(whether)f(t)n (w)n(o)g(sets)g(ha)n(v)n(e)g(a)g(non-empt)n(y)g(in)n(tersec-)291 1117 y(tion.)36 b(This)26 b(is)g(sligh)n(tly)f(more)g(e\016cien)n(t)i (than)f(computing)g(the)g(in)n(tersection)f(and)h(testing)291 1217 y(whether)h(it)h(is)g(empt)n(y)-7 b(.)415 1317 y(F)g(or)44 b(example,)49 b(the)c(expression)e Fo($\(intersects)c(a)k(b)g(c,)g(d)g (c)g(e\))h Fs(ev)-5 b(aluates)44 b(to)291 1416 y Fo(true)p Fs(,)26 b(and)h Fo($\(intersects)39 b(a)k(b)g(c)g(a,)g(d)g(e)g(f\))27 b Fs(ev)-5 b(aluates)27 b(to)h Fo(false)p Fs(.)291 1543 y @beginspecial @setspecial @endspecial 100 x Fk(9.3.32)112 b(set-di\013)291 1697 y @beginspecial @setspecial @endspecial 421 1796 a Fo($\(set-diff)40 b(sequence1,)f(sequence2\))h(:)j(Array)552 1896 y(sequence1)d(:)j(Sequence)552 1995 y(sequence2)d(:)j(Sequence)415 2145 y Fs(The)28 b Fo(set-diff)c Fs(function)k(tak)n(es)f(t)n(w)n(o)g (argumen)n(ts,)f(treats)h(them)h(as)f(sets)g(of)h(strings,)291 2245 y(and)39 b(computes)h(their)f(di\013erence)h(\(all)f(the)h(elemen) n(ts)g(of)f(the)h(\014rst)g(set)f(that)h(are)f(not)291 2345 y(presen)n(t)23 b(in)i(the)g(second)f(one\).)36 b(The)24 b(order)f(of)i(the)g(result)f(is)g(unde\014ned)i(and)e(it)h (ma)n(y)f(con-)291 2444 y(tain)f(duplicates.)36 b(Use)23 b(the)h Fo(set)e Fs(function)j(to)e(sort)g(the)h(result)f(and)g (eliminate)h(duplicates)291 2544 y(in)j(the)h(result)g(if)g(desired.) 415 2644 y(F)-7 b(or)44 b(example,)49 b(the)c(expression)e Fo($\(set-diff)c(c)44 b(a)f(b)g(a)g(e,)g(b)g(a\))h Fs(ev)-5 b(aluates)44 b(to)291 2743 y Fo(c)f(e)p Fs(.)291 2854 y @beginspecial @setspecial @endspecial 116 x Fk(9.3.33)112 b(\014lter)291 3024 y @beginspecial @setspecial @endspecial 421 3123 a Fo($\(filter)41 b(patterns,)e(sequence\))h(:)k(Array)552 3223 y(patterns)c(:)k(Sequence)552 3322 y(sequence)c(:)k(Sequence)415 3472 y Fs(The)24 b Fo(filter)d Fs(function)j(pic)n(ks)e(elemen)n(ts)i (from)f(a)g(sequence.)35 b(The)23 b(patterns)g(is)g(a)g(non-)291 3572 y(empt)n(y)i(sequence)h(of)f(patterns,)h(eac)n(h)f(ma)n(y)g(con)n (tain)g(one)g(o)r(ccurrence)f(of)i(the)g(wildcard)f Fo(\045)291 3672 y Fs(c)n(haracter.)415 3771 y(F)-7 b(or)18 b(example)g Fo($\(filter)40 b(\045.h)i(\045.o,)g(a.c)h(x.o)f(b.h)g(y.o)h("hello)e (world".c\))15 b Fs(ev)-5 b(al-)291 3871 y(uates)27 b(to)g Fo(x.o)43 b(b.h)f(y.o)p Fs(.)291 4000 y @beginspecial @setspecial @endspecial 98 x Fk(9.3.34)112 b(\014lter-out)291 4151 y @beginspecial @setspecial @endspecial 421 4251 a Fo($\(filter-out)39 b(patterns,)h(sequence\))g(:)j(Array)552 4350 y(patterns)d(:)k(Sequence)552 4450 y(sequence)c(:)k(Sequence)415 4600 y Fs(The)29 b Fo(filter-out)24 b Fs(function)30 b(remo)n(v)n(es)c(elemen)n(ts)j(from)f(a)g(sequence.)40 b(The)28 b(patterns)291 4700 y(is)33 b(a)g(non-empt)n(y)g(sequence)g (of)g(patterns,)i(eac)n(h)d(ma)n(y)h(con)n(tain)g(one)g(o)r(ccurrence)f (of)i(the)291 4799 y(wildcard)27 b Fo(\045)g Fs(c)n(haracter.)415 4899 y(F)-7 b(or)18 b(example)g Fo($\(filter-out)38 b(\045.c)43 b(\045.h,)f(a.c)g(x.o)g(b.h)h(y.o)f("hello)f(world".c\))291 4998 y Fs(ev)-5 b(aluates)26 b(to)i Fo(x.o)42 b(y.o)p Fs(.)p eop end %%Page: 120 120 TeXDict begin 120 119 bop 739 282 a @beginspecial @setspecial @endspecial Fs(120)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.35)112 b(capitalize)739 596 y @beginspecial @setspecial @endspecial 870 684 a Fo($\(capitalize)38 b(sequence\))i(:)j(Array)1000 784 y(sequence)e(:)i(Sequence)863 1000 y Fs(The)25 b Fo(capitalize)c Fs(function)26 b(capitalizes)e(eac)n (h)g(w)n(ord)f(in)i(a)g(sequence.)35 b(F)-7 b(or)25 b(example,)739 1100 y Fo($\(capitalize)39 b(through)h(the)j(looking)d(Glass\))16 b Fs(ev)-5 b(aluates)18 b(to)g Fo(Through)41 b(The)h(Looking)f(Glass)p Fs(.)739 1271 y @beginspecial @setspecial @endspecial 106 x Fk(9.3.36)112 b(uncapitalize)739 1458 y @beginspecial @setspecial @endspecial 870 1546 a Fo($\(uncapitalize)37 b(sequence\))j(:)j(Array)1000 1646 y(sequence)e(:)i(Sequence)863 1863 y Fs(The)28 b Fo(uncapitalize)23 b Fs(function)28 b(uncapitalizes)f(eac)n(h)g(w)n(ord)f(in)i(its)g(argumen)n(t.)863 1971 y(F)-7 b(or)26 b(example,)h Fo($\(uncapitalize)38 b(through)i(the)j(looking)d(Glass\))24 b Fs(ev)-5 b(aluates)26 b(to)739 2070 y Fo(through)41 b(the)h(looking)f(glass)p Fs(.)739 2241 y @beginspecial @setspecial @endspecial 107 x Fk(9.3.37)112 b(upp)s(ercase)739 2428 y @beginspecial @setspecial @endspecial 870 2517 a Fo($\(uppercase)39 b(sequence\))h(:)j(Array)1000 2616 y(sequence)e(:)i(Sequence)863 2833 y Fs(The)24 b Fo(uppercase)19 b Fs(function)24 b(con)n(v)n(erts)e (eac)n(h)g(w)n(ord)g(in)i(a)e(sequence)h(to)g(upp)r(ercase.)35 b(F)-7 b(or)739 2933 y(example,)20 b Fo($\(uppercase)39 b(through)h(the)j(looking)e(Glass\))15 b Fs(ev)-5 b(aluates)18 b(to)g Fo(THROUGH)41 b(THE)h(LOOKING)f(GLASS)p Fs(.)739 3104 y @beginspecial @setspecial @endspecial 106 x Fk(9.3.38)112 b(lo)m(w)m(ercase)739 3271 y @beginspecial @setspecial @endspecial 870 3379 a Fo($\(lowercase)39 b(sequence\))h(:)j(Array)1000 3479 y(sequence)e(:)i(Sequence)863 3695 y Fs(The)28 b Fo(lowercase)c Fs(function)k(reduces)f(eac)n(h)g(w)n(ord)f(in)i(its)g (argumen)n(t)f(to)g(lo)n(w)n(ercase.)863 3803 y(F)-7 b(or)18 b(example,)i Fo($\(lowercase)39 b(through)i(tHe)h(looking)f (Glass\))16 b Fs(ev)-5 b(aluates)17 b(to)i Fo(through)40 b(the)j(looking)d(glass)p Fs(.)739 3974 y @beginspecial @setspecial @endspecial 107 x Fk(9.3.39)112 b(system)739 4161 y @beginspecial @setspecial @endspecial 870 4250 a Fo(system\(s\))1000 4349 y(s)44 b(:)f(Sequence)863 4566 y Fs(The)27 b Fo(system)e Fs(function)j(is)f(used)g(to)f(ev)-5 b(aluate)27 b(a)g(shell)g(expression.)35 b(This)27 b(function)g(is)739 4665 y(used)g(in)n(ternally)g(b)n(y)i Fo(omake)c Fs(to)j(ev)-5 b(aluate)27 b(shell)h(commands.)863 4773 y(F)-7 b(or)18 b(example,)i(the)f(follo)n(wing)e(program)f(is)j(equiv)-5 b(alen)n(t)18 b(to)g(the)h(expression)e Fo(system\(ls)40 b(foo\))p Fs(.)870 4998 y Fo(ls)i(foo)p eop end %%Page: 121 121 TeXDict begin 121 120 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.3.)63 b(ARRA)-7 b(YS)29 b(AND)g(SEQUENCES)1442 b Fs(121)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.40)112 b(shell)291 569 y @beginspecial @setspecial @endspecial 421 669 a Fo($\(shell)41 b(command\))f(:)j(Array)421 768 y($\(shella)e(command\))f(:)j(Array)421 868 y($\(shell-code)c (command\))h(:)j(Int)552 967 y(command)e(:)i(Sequence)415 1148 y Fs(The)38 b Fo(shell)e Fs(function)j(ev)-5 b(aluates)38 b(a)f(command)h(using)g(the)g(command)g(shell,)j(and)291 1247 y(returns)26 b(the)i(whitespace-separated)e(w)n(ords)g(of)i(the)g (standard)e(output)i(as)f(the)h(result.)415 1347 y(The)23 b Fo(shella)e Fs(function)j(acts)f(similarly)-7 b(,)23 b(but)h(it)g(returns)e(the)i(lines)f(as)g(separate)f(items)291 1447 y(in)27 b(the)h(arra)n(y)-7 b(.)415 1546 y(The)25 b Fo(shell-code)c Fs(function)k(returns)f(the)h(exit)g(co)r(de.)36 b(The)25 b(output)g(is)g(not)f(div)n(erted.)415 1646 y(F)-7 b(or)18 b(example,)i(if)f(the)f(curren)n(t)g(directory)f(con)n (tains)g(the)i(\014les)f Fo(OMakeroot)p Fs(,)f Fo(OMakefile)p Fs(,)291 1746 y(and)29 b Fo(hello.c)p Fs(,)f(then)j Fo($\(shell)40 b(ls\))29 b Fs(ev)-5 b(aluates)29 b(to)h Fo(hello.c)41 b(OMakefile)f(OMakeroot)291 1845 y Fs(\(on)27 b(a)g(Unix)h(system\).) 291 1982 y @beginspecial @setspecial @endspecial 95 x Fk(9.3.41)112 b(exp)s(ort)291 2150 y @beginspecial @setspecial @endspecial 80 x Fs(The)19 b Fo(export)d Fs(function)k(allo)n(ws)d(one) i(to)f(capture)h(the)g(curren)n(t)f(en)n(vironmen)n(t)g(in)h(a)g(v)-5 b(ariable.)415 2330 y(F)e(or)27 b(example,)g(the)h(follo)n(wing)f(co)r (de:)291 2494 y Fo(A)43 b(=)g(1)291 2594 y(B)g(=)g(1)291 2694 y(C)g(=)g(1)291 2793 y(SAVE_ENV)d(=)j($\(export)d(A)j(B\))291 2893 y(A)g(=)g(2)291 2992 y(B)g(=)g(2)291 3092 y(C)g(=)g(2)291 3192 y(export)e($\(SAVE_ENV\))291 3291 y(println\($A)e($B)k($C\))291 3455 y Fs(will)27 b(prin)n(t)h Fo(1)43 b(1)g(2)p Fs(.)415 3555 y(The)32 b(argumen)n(ts)f(to)h(this)h(function)f(are)g(in)n (terpreted)f(the)i(exact)f(same)f(w)n(a)n(y)g(as)h(the)291 3655 y(argumen)n(ts)26 b(to)h(the)h Fo(export)d Fs(sp)r(ecial)j(form)f (\(see)h(Section)f @beginspecial @setspecial @endspecial(6.3)p @beginspecial @setspecial @endspecial(\).)36 b @beginspecial @setspecial @endspecial 291 3791 a @beginspecial @setspecial @endspecial 96 x Fk(9.3.42)112 b(while)291 3940 y @beginspecial @setspecial @endspecial 421 4040 a Fo(while)42 b()552 4140 y()415 4320 y Fs({or{)465 4500 y Fo(while)f()465 4600 y(case)h()596 4700 y()465 4799 y(...)465 4899 y(case)g()596 4998 y()p eop end %%Page: 122 122 TeXDict begin 122 121 bop 739 282 a @beginspecial @setspecial @endspecial Fs(122)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)913 515 y Fo(default)1044 615 y()863 838 y Fs(The)35 b(lo)r(op)e(is)h(executed)g(while)g(the)h(test)f(is)g (true.)56 b(In)35 b(the)f(\014rst)g(form,)h(the)g Fo()739 937 y Fs(is)d(executed)h(on)f(ev)n(ery)f(lo)r(op)i(iteration.)51 b(In)32 b(the)h(second)f(form,)i(the)f(b)r(o)r(dy)g Fo()c Fs(is)739 1037 y(selected,)37 b(as)e(the)h(\014rst)f(case)g(where)g (the)g(test)h Fo()d Fs(is)i(true.)61 b(If)35 b(none)h(apply)-7 b(,)37 b(the)739 1137 y(optional)f(default)h(case)f(is)h(ev)-5 b(aluated.)64 b(If)37 b(no)g(cases)e(are)h(true,)j(the)e(lo)r(op)g (exits.)64 b(The)739 1236 y(en)n(vironmen)n(t)27 b(is)g(automatically)f (exp)r(orted.)863 1346 y(Examples.)863 1456 y(Iterate)h(for)h Fo(i)f Fs(from)g Fo(0)g Fs(to)h Fo(9)p Fs(.)913 1689 y Fo(i)43 b(=)h(0)913 1788 y(while)e($\(lt)g($i,)g(10\))1044 1888 y(echo)g($i)1044 1988 y(i)h(=)g($\(add)f($i,)g(1\))863 2210 y Fs(The)28 b(follo)n(wing)f(example)g(is)g(equiv)-5 b(alen)n(t.)870 2443 y Fo(i)43 b(=)g(0)870 2543 y(while)e(true)870 2643 y(case)h($\(lt)g($i,)g(10\))1000 2742 y(echo)g($i)1000 2842 y(i)i(=)f($\(add)e($i,)i(1\))863 3065 y Fs(The)30 b(follo)n(wing)f(example)g(is)h(similar,)g(but)g(some)f(sp)r(ecial)h (cases)e(are)h(prin)n(ted.)43 b(v)-5 b(alue)739 3165 y(is)27 b(prin)n(ted.)913 3397 y Fo(i)43 b(=)h(0)913 3497 y(while)e($\(lt)g($i,)g(10\))913 3597 y(case)g($\(equal)f($i,)h (0\))1044 3696 y(echo)g(zero)913 3796 y(case)g($\(equal)f($i,)h(1\)) 1044 3896 y(echo)g(one)913 3995 y(default)1044 4095 y(echo)g($i)863 4318 y Fs(The)28 b @beginspecial @setspecial @endspecial Fo(break)e Fs(function)p @beginspecial @setspecial @endspecial 28 w(can)h(b)r(e)h(used)g(to)f(break)g(out)g(of)h(the)g Fo(while)d Fs(lo)r(op)j(early)-7 b(.)35 b @beginspecial @setspecial @endspecial 739 4493 a @beginspecial @setspecial @endspecial 111 x Fk(9.3.43)112 b(break)739 4666 y @beginspecial @setspecial @endspecial 870 4776 a Fo(break)863 4998 y Fs(T)-7 b(erminate)28 b(execution)f(of)g(the)h(innermost)g(lo)r(op,)f (returning)g(the)h(curren)n(t)e(state.)p eop end %%Page: 123 123 TeXDict begin 123 122 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.4.)63 b(ARITHMETIC)1988 b Fs(123)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.3.44)112 b(random,)39 b(random-init)291 588 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 465 669 a Fo(random-init\(i\))639 768 y(i)k(:)h(Int)465 868 y(random\(\))c(:)j(Int)415 1051 y Fs(Pro)r(duce)30 b(a)g(random)f(n)n (um)n(b)r(er.)46 b(The)30 b(n)n(um)n(b)r(ers)g(are)g(pseudo-random,)f (and)h(are)g(not)291 1151 y(cryptographically)25 b(secure.)415 1251 y(The)d(generator)d(is)j(initialized)f(form)h(semi-random)e (system)h(data.)35 b(Subsequen)n(t)21 b(runs)291 1350 y(should)e(pro)r(duce)g(di\013eren)n(t)h(results.)34 b(The)20 b Fo(rando-init)15 b Fs(function)21 b(can)e(b)r(e)h(used)g(to) f(return)291 1450 y(the)28 b(generator)d(to)i(a)h(kno)n(wn)f(state.)291 1592 y @beginspecial @setspecial @endspecial 133 x Fl(9.4)135 b(Arithmetic)291 1807 y @beginspecial @setspecial @endspecial 117 x Fk(9.4.1)112 b(in)m(t)291 1978 y @beginspecial @setspecial @endspecial 99 x Fs(The)27 b Fo(int)g Fs(function)h(can)f (b)r(e)h(used)g(to)f(create)g(in)n(tegers.)35 b(It)28 b(returns)f(an)h Fo(Int)e Fs(ob)5 b(ject.)415 2177 y Fo($\(int)42 b(17\))p Fs(.)291 2301 y @beginspecial @setspecial @endspecial 109 x Fk(9.4.2)112 b(\015oat)291 2464 y @beginspecial @setspecial @endspecial 100 x Fs(The)29 b Fo(float)e Fs(function)i(can)g(b)r(e)g(used)g(to)g(create)f(\015oating-p)r(oin)n (t)g(n)n(um)n(b)r(ers.)41 b(It)29 b(returns)f(a)291 2663 y Fo(Float)d Fs(ob)5 b(ject.)415 2763 y Fo($\(float)41 b(3.1415926\))p Fs(.)291 2887 y @beginspecial @setspecial @endspecial 109 x Fk(9.4.3)112 b(Basic)38 b(arithmetic)291 3050 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 100 x Fs(The)27 b(follo)n(wing)g(functions)h(can)f(b)r(e)h (used)f(to)h(p)r(erform)f(basic)g(arithmetic.)415 3333 y Fj(\017)41 b Fo($\(neg)h(\))p Fs(:)32 b(arithmetic)c(in)n(v) n(erse)415 3499 y Fj(\017)41 b Fo($\(add)h(\))p Fs(:)32 b(addition.)415 3666 y Fj(\017)41 b Fo($\(sub)h(\))p Fs(:)32 b(subtraction.)415 3832 y Fj(\017)41 b Fo($\(mul)h(\)) p Fs(:)32 b(m)n(ultiplication.)415 3999 y Fj(\017)41 b Fo($\(div)h(\))p Fs(:)32 b(division.)415 4166 y Fj(\017)41 b Fo($\(mod)h(\))p Fs(:)32 b(remainder.)415 4332 y Fj(\017)41 b Fo($\(lnot)g(\))p Fs(:)33 b(bit)n(wise)28 b(in)n(v)n(erse.)415 4499 y Fj(\017)41 b Fo($\(land)g(\))p Fs(:)33 b(bit)n(wise)28 b(and.)415 4665 y Fj(\017)41 b Fo($\(lor)h(\))p Fs(:)32 b(bit)n(wise)c(or.)415 4832 y Fj(\017)41 b Fo($\(lxor)g (\))p Fs(:)33 b(bit)n(wise)28 b(exclusiv)n(e-or.)415 4998 y Fj(\017)41 b Fo($\(lsl)h(\))p Fs(:)32 b(logical)27 b(shift)h(left.)p eop end %%Page: 124 124 TeXDict begin 124 123 bop 739 282 a @beginspecial @setspecial @endspecial Fs(124)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)863 515 y Fj(\017)41 b Fo($\(lsr)h(\))p Fs(:)33 b(logical)26 b(shift)i(righ)n(t.)863 691 y Fj(\017)41 b Fo($\(asr)h(\))p Fs(:)33 b(arithmetic)27 b(shift)i(righ)n (t.)863 866 y Fj(\017)41 b Fo($\(min)h(\))p Fs(:)33 b(smallest)27 b(elemen)n(t.)863 1042 y Fj(\017)41 b Fo($\(max)h(\))p Fs(:)33 b(largest)26 b(elemen)n(t.)739 1185 y @beginspecial @setspecial @endspecial 102 x Fk(9.4.4)112 b(Comparisons)739 1362 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fs(The)28 b(follo)n(wing)e(functions)i(can)f(b)r(e)h(used)g(to)f(p)r (erform)g(n)n(umerical)g(comparisons.)863 1637 y Fj(\017)41 b Fo($\(lt)h(\))p Fs(:)33 b(less)27 b(then.)863 1813 y Fj(\017)41 b Fo($\(le)h(\))p Fs(:)33 b(no)28 b(more)e(than.)863 1988 y Fj(\017)41 b Fo($\(eq)h(\))p Fs(:)33 b(equal.)863 2164 y Fj(\017)41 b Fo($\(ge)h(\))p Fs(:)33 b(no)28 b(less)f(than.)863 2339 y Fj(\017)41 b Fo($\(gt)h(\))p Fs(:)33 b(greater)26 b(than.)863 2515 y Fj(\017)41 b Fo($\(ult)h(\))p Fs(:)33 b(unsigned)27 b(less)g(than.)863 2690 y Fj(\017)41 b Fo($\(ule)h(\))p Fs(:)33 b(unsigned)27 b(greater)f(than.)863 2866 y Fj(\017)41 b Fo($\(uge)h(\))p Fs(:)33 b(unsigned)27 b(greater)f(than)i(or)e(equal.)863 3042 y Fj(\017)41 b Fo($\(ugt)h(\))p Fs(:)33 b(unsigned)27 b(greater)f(than.)739 3195 y @beginspecial @setspecial @endspecial 134 x Fl(9.5)135 b(First-class)46 b(functions)739 3413 y @beginspecial @setspecial @endspecial 119 x Fk(9.5.1)112 b(fun)739 3587 y @beginspecial @setspecial @endspecial 102 x Fs(The)28 b Fo(fun)e Fs(form)h(in)n(tro)r(duces)g(anon)n(ymous)f (functions.)863 3791 y Fo($\(fun)42 b(,)f(...,)h(,)g(\)) 863 3893 y Fs(The)25 b(last)f(argumen)n(t)g(is)g(the)h(b)r(o)r(dy)g(of) g(the)g(function.)36 b(The)25 b(other)f(argumen)n(ts)f(are)h(the)739 3993 y(parameter)i(names.)863 4095 y(The)i(three)f(follo)n(wing)g (de\014nitions)h(are)e(equiv)-5 b(alen)n(t.)913 4290 y Fo(F\(X,)42 b(Y\))h(=)1044 4389 y(return\($\(addsuff)o(ix)37 b($\(Y\),)42 b($\(X\)\)\))913 4588 y(F)h(=)h($\(fun)d(X,)i(Y,)g ($\(addsuffix)c($\(Y\),)i($\(X\)\)\))913 4788 y(F)i(=)1044 4887 y(fun\(X,)e(Y\))1175 4987 y(value)g($\(addsuffix)e($\(Y\),)j ($\(X\)\))p eop end %%Page: 125 125 TeXDict begin 125 124 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.5.)63 b(FIRST-CLASS)28 b(FUNCTIONS)1472 b Fs(125)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.5.2)112 b(apply)291 588 y @beginspecial @setspecial @endspecial 81 x Fs(The)27 b Fo(apply)f Fs(op)r(erator)g(is)h(used)h (to)f(apply)h(a)f(function.)415 768 y Fo($\(apply)41 b(,)g(\))415 868 y Fs(Supp)r(ose)28 b(w)n(e)f(ha)n(v)n(e)f (the)i(follo)n(wing)f(function)h(de\014nition.)465 1015 y Fo(F\(X,)42 b(Y\))h(=)596 1115 y(return\($\(addsuf)o(fix)37 b($\(Y\),)k($\(X\)\)\))415 1262 y Fs(The)28 b(the)g(t)n(w)n(o)f (expressions)e(b)r(elo)n(w)j(are)e(equiv)-5 b(alen)n(t.)465 1410 y Fo(X)43 b(=)g(F\(a)g(b)g(c,)g(.c\))465 1509 y(X)g(=)g($\(apply)e ($\(F\),)g(a)j(b)f(c,)g(.c\))291 1638 y @beginspecial @setspecial @endspecial 98 x Fk(9.5.3)112 b(apply)m(a)291 1809 y @beginspecial @setspecial @endspecial 80 x Fs(The)27 b Fo(applya)e Fs(op)r(erator)h(is)i(used)f(to)h(apply)f(a)g(function)h (to)g(an)f(arra)n(y)e(of)j(argumen)n(ts.)415 1989 y Fo($\(applya)40 b(,)h(\))415 2088 y Fs(F)-7 b(or)27 b(example,)g(in)h(the)g (follo)n(wing)f(program,)e(the)j(v)-5 b(alue)28 b(of)f Fo(Z)h Fs(is)f Fo(file.c)p Fs(.)465 2236 y Fo(F\(X,)42 b(Y\))h(=)596 2335 y(return\($\(addsuf)o(fix)37 b($\(Y\),)k($\(X\)\)\)) 465 2435 y(args[])g(=)596 2535 y(file)596 2634 y(.c)465 2734 y(Z)i(=)g($\(applya)e($\(F\),)g($\(args\)\))291 2862 y @beginspecial @setspecial @endspecial 98 x Fk(9.5.4)112 b(create-map,)39 b(create-lazy-map)291 3033 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fs(The)25 b Fo(create-map)d Fs(is)j(a)h(simpli\014ed)g(form)f(for) g(creating)g Fo(Map)f Fs(ob)5 b(jects.)36 b(The)26 b Fo(create-map)291 3213 y Fs(function)k(tak)n(es)f(an)h(ev)n(en)f(n)n (um)n(b)r(er)h(of)g(argumen)n(ts)e(that)j(sp)r(ecify)f(k)n(ey/v)-5 b(alue)29 b(pairs.)43 b(F)-7 b(or)291 3313 y(example,)27 b(the)h(follo)n(wing)e(v)-5 b(alues)28 b(are)e(equiv)-5 b(alen)n(t.)465 3460 y Fo(X)43 b(=)g($\(create-map)c(name1,)i(xxx,)h (name2,)f(yyy\))465 3659 y(X.)i(=)639 3759 y(extends)e($\(Map\))639 3859 y($|name1|)g(=)i(xxx)639 3958 y($|name2|)e(=)i(yyy)415 4106 y Fs(The)19 b Fo(create-lazy-map)12 b Fs(function)19 b(is)g(similar,)h(but)f(the)g(v)-5 b(alues)18 b(are)f(computed)i (lazily)-7 b(.)291 4205 y(The)27 b(follo)n(wing)g(t)n(w)n(o)g (de\014nitions)g(are)g(equiv)-5 b(alen)n(t.)465 4353 y Fo(Y)43 b(=)g($\(create-lazy-map)37 b(name1,)k($\(xxx\),)g(name2,)g ($\(yyy\)\))465 4552 y(Y.)i(=)639 4652 y(extends)e($\(Map\))639 4751 y($|name1|)g(=)i($`\(xxx\))639 4851 y($|name2|)e(=)i($`\(yyy\))415 4998 y Fs(The)28 b @beginspecial @setspecial @endspecial Fo(create-lazy-map)21 b Fs(function)p @beginspecial @setspecial @endspecial 28 w(is)28 b(used)f(in)h(rule)g(construction.)p eop end %%Page: 126 126 TeXDict begin 126 125 bop 739 282 a @beginspecial @setspecial @endspecial Fs(126)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(9.6)135 b(Iteration)47 b(and)d(mapping)739 630 y @beginspecial @setspecial @endspecial 105 x Fk(9.6.1)112 b(foreac)m(h)739 798 y @beginspecial @setspecial @endspecial 111 x Fs(The)28 b Fo(foreach)c Fs(function)k(maps)g(a)f(function)h(o)n (v)n(er)e(a)h(sequence.)913 1148 y Fo($\(foreach)40 b(,)h (\))913 1347 y(foreach\(,)d(\))1044 1447 y()863 1674 y Fs(F)-7 b(or)18 b(example,)i(the)f(follo)n (wing)e(program)f(de\014nes)j(the)g(v)-5 b(ariable)17 b Fo(X)h Fs(as)g(an)g(arra)n(y)e Fo(a.c)42 b(b.c)g(c.c)p Fs(.)913 1913 y Fo(X)h(=)1044 2013 y(foreach\(x,)c(a)44 b(b)f(c\))1175 2112 y(value)e($\(x\).c)913 2312 y(#)i(Equivalent)d (expression)913 2411 y(X)j(=)h($\(foreach)39 b($\(fun)j(x,)h ($\(x\).c\),)d(abc\))863 2639 y Fs(There)28 b(is)f(also)f(an)i (abbreviated)e(syn)n(tax.)863 2750 y(The)j Fo(export)e Fs(form)h(can)h(also)e(b)r(e)i(used)g(in)g(a)g Fo(foreach)d Fs(b)r(o)r(dy)-7 b(.)41 b(The)28 b(\014nal)h(v)-5 b(alue)29 b(of)g Fo(X)739 2849 y Fs(is)e Fo(a.c)43 b(b.c)f(c.c)p Fs(.)913 3088 y Fo(X)h(=)913 3188 y(foreach\(x,)d(a)j(b)g(c\))1044 3288 y(X)g(+=)g($\(x\).c)1044 3387 y(export)863 3615 y Fs(The)28 b @beginspecial @setspecial @endspecial Fo(break)e Fs(function)p @beginspecial @setspecial @endspecial 28 w(can)h(b)r(e)h(used)g(to)f(break)g(out)g(of)h(the)g(lo)r(op)f(early)-7 b(.)739 3805 y @beginspecial @setspecial @endspecial 144 x Fl(9.7)135 b(Bo)t(olean)46 b(tests)739 4041 y @beginspecial @setspecial @endspecial 127 x Fk(9.7.1)112 b(sequence-forall)739 4251 y @beginspecial @setspecial @endspecial 92 x Fs(The)41 b Fo(forall)e Fs(function)j(tests)f(whether)g(a)g(predicate)f(halds)h (for)g(eac)n(h)f(elemen)n(t)i(of)f(a)739 4442 y(sequence.)913 4681 y Fo($\(sequence-forall)c(,)k(\))913 4880 y(sequence-forall\(<)o(va)o(r>)c(=>)43 b(...,)f(\))1044 4980 y()p eop end %%Page: 127 127 TeXDict begin 127 126 bop 291 282 a @beginspecial @setspecial @endspecial Fp(9.7.)63 b(BOOLEAN)27 b(TESTS)1828 b Fs(127)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(9.7.2)112 b(sequence-exists)291 669 y Fs(The)39 b Fo(exists)e Fs(function)j (tests)g(whether)f(a)g(predicate)g(holds)g(for)g(some)f(elemen)n(t)i (of)f(a)291 768 y(sequence.)465 951 y Fo($\(sequence-exist)o(s)e (,)42 b(\))465 1150 y(sequence-exists\()o()37 b(=>)43 b(...,)f(\))596 1250 y()291 1384 y @beginspecial @setspecial @endspecial 98 x Fk(9.7.3)112 b(sequence-sort)291 1555 y @beginspecial @setspecial @endspecial 80 x Fs(The)27 b Fo(sort)e Fs(function)j(sorts)e(the)h (elemen)n(ts)g(in)g(an)g(arra)n(y)-7 b(,)25 b(giv)n(en)h(a)h (comparison)e(function.)291 1735 y(Giv)n(en)k(t)n(w)n(o)g(elemen)n(ts)h (\(x,)g(y\),)h(the)f(comparison)e(should)i(return)f(a)g(negativ)n(e)g (n)n(um)n(b)r(er)g(if)291 1835 y(x)e(<)h(y;)f(a)h(p)r(ositiv)n(e)f(n)n (um)n(b)r(er)g(if)h(x)g(>)g(y;)f(and)h(0)f(if)h(x)f(=)h(y)-7 b(.)465 2017 y Fo($\(sequence-sort)37 b(,)k(\))465 2216 y(sort\(,)e()i(=>)i(...,)f(\))596 2316 y()291 2451 y @beginspecial @setspecial @endspecial 98 x Fk(9.7.4)112 b(compare)291 2622 y @beginspecial @setspecial @endspecial 80 x Fs(The)27 b Fo(compare)d Fs(function)k(compares)d(t)n(w)n(o)i(v)-5 b(alues)27 b(\(x,)g(y\))g(generically)f(returning)g(a)h(nega-)291 2801 y(tiv)n(e)g(n)n(um)n(b)r(er)g(if)h(x)g(<)g(y;)f(a)g(p)r(ositiv)n (e)h(n)n(um)n(b)r(er)f(if)h(x)g(>)f(y;)h(and)f(0)h(if)g(x)f(=)g(y)-7 b(.)465 2984 y Fo($\(compare)40 b(x,)j(y\))f(:)h(Int)p eop end %%Page: 128 128 TeXDict begin 128 127 bop 739 282 a @beginspecial @setspecial @endspecial Fs(128)1531 b Fp(CHAPTER)27 b(9.)64 b(BASE)28 b(LIBRAR)-7 b(Y)p eop end %%Page: 129 129 TeXDict begin 129 128 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(10)291 1553 y Fr(File,)76 b(I/O)h(and)g(system) 291 1802 y(op)6 b(erations)291 2174 y @beginspecial @setspecial @endspecial 110 x Fl(10.1)135 b(File)46 b(names)291 2366 y @beginspecial @setspecial @endspecial 116 x Fk(10.1.1)112 b(\014le,)38 b(dir)291 2555 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 421 2635 a Fo($\(file)j(sequence\))f(:)j(File)f(Sequence)552 2735 y(sequence)e(:)k(Sequence)421 2835 y($\(dir)e(sequence\))e(:)j (Dir)f(Sequence)552 2934 y(sequence)e(:)k(Sequence)415 3102 y Fs(The)32 b Fo(file)f Fs(and)h Fo(dir)f Fs(functions)i(de\014ne) f(lo)r(cation-indep)r(enden)n(t)g(references)f(to)h(\014les)291 3201 y(and)c(directories.)40 b(In)29 b Fo(omake)p Fs(,)e(the)i (commands)g(to)g(build)g(a)g(target)f(are)f(executed)i(in)h(the)291 3301 y(target's)22 b(directory)-7 b(.)34 b(Since)24 b(there)f(ma)n(y)g (b)r(e)h(man)n(y)f(directories)f(in)i(an)f Fo(omake)f Fs(pro)5 b(ject,)24 b(the)291 3400 y(build)30 b(system)g(pro)n(vides)e (a)h(w)n(a)n(y)g(to)h(construct)f(a)g(reference)g(to)h(a)g(\014le)g(in) g(one)f(directory)-7 b(,)291 3500 y(and)26 b(use)g(it)h(in)f(another)f (without)i(explicitly)g(mo)r(difying)f(the)h(\014le)f(name.)36 b(The)27 b(functions)291 3600 y(ha)n(v)n(e)f(the)i(follo)n(wing)f(syn)n (tax,)f(where)h(the)h(name)g(should)f(refer)g(to)g(a)h(\014le)f(or)g (directory)-7 b(.)415 3699 y(F)g(or)26 b(example,)h(w)n(e)g(can)f (construct)h(a)f(reference)g(to)h(a)f(\014le)h Fo(foo)f Fs(in)h(the)h(curren)n(t)e(direc-)291 3799 y(tory)-7 b(.)421 3966 y Fo(FOO)43 b(=)g($\(file)e(foo\))421 4066 y(.SUBDIRS:)f(bar)415 4233 y Fs(If)35 b(the)g Fo(FOO)e Fs(v)-5 b(ariable)34 b(is)g(expanded)h(in)f(the)h Fo(bar)f Fs(sub)r(directory)-7 b(,)35 b(it)g(will)g(expand)f(to)291 4333 y Fo(../foo)p Fs(.)415 4433 y(These)18 b(commands)g(are)f(often)i (used)f(in)h(the)g(top-lev)n(el)e(OMak)n(e\014le)g(to)i(pro)n(vide)e (lo)r(cation-)291 4532 y(indep)r(enden)n(t)38 b(references)e(to)i (top-lev)n(el)e(directories,)j(so)e(that)h(build)g(commands)f(ma)n(y) 291 4632 y(refer)26 b(to)i(these)g(directories)e(as)h(if)h(they)g(w)n (ere)e(absolute.)421 4799 y Fo(ROOT)42 b(=)h($\(dir)f(.\))421 4899 y(LIB)86 b(=)43 b($\(dir)f(lib\))421 4998 y(BIN)86 b(=)43 b($\(dir)f(bin\))1660 5208 y Fs(129)p eop end %%Page: 130 130 TeXDict begin 130 129 bop 739 282 a @beginspecial @setspecial @endspecial Fs(130)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)863 515 y Fs(Once)35 b(these)g(v)-5 b(ariables)34 b(are)g(de\014ned,)k(they)d(can)g(b)r(e)g (used)g(in)h(build)f(commands)g(in)739 615 y(sub)r(directories)29 b(as)h(follo)n(ws,)g(where)g Fo($\(BIN\))e Fs(will)i(expand)h(to)f(the) h(lo)r(cation)e(of)i(the)f Fo(bin)739 715 y Fs(directory)c(relativ)n(e) h(to)g(the)h(command)f(b)r(eing)h(executed.)870 911 y Fo(install:)40 b(hello)739 1011 y(cp)j(hello)e($\(BIN\))739 1157 y @beginspecial @setspecial @endspecial 101 x Fk(10.1.2)112 b(tmp\014le)739 1333 y @beginspecial @setspecial @endspecial 913 1416 a Fo($\(tmpfile)40 b(prefix\))h(:)i(File)913 1516 y($\(tmpfile)d(prefix,)h(suffix\))f(:)k(File)1088 1616 y(prefix)d(:)i(String)1088 1715 y(suffix)e(:)i(String)863 1909 y Fs(The)d Fo(tmpfile)d Fs(function)j(returns)e(the)i(name)g(of)f (a)g(fresh)g(temp)r(orary)f(\014le)i(in)g(the)739 2009 y(temp)r(orary)26 b(directory)-7 b(.)739 2153 y @beginspecial @setspecial @endspecial 103 x Fk(10.1.3)112 b(in)739 2312 y @beginspecial @setspecial @endspecial 870 2414 a Fo($\(in)42 b(dir,)g(exp\))f(:)j(String)d(Array)1000 2514 y(dir)i(:)g(Dir)1000 2614 y(exp)g(:)g(expression)863 2807 y Fs(The)33 b Fo(in)e Fs(function)i(is)g(closely)e(related)h(to)g (the)h Fo(dir)e Fs(and)h Fo(file)f Fs(functions.)51 b(It)33 b(tak)n(es)739 2907 y(a)k(directory)f(and)h(an)g(expression,)i(and)e (ev)-5 b(aluates)36 b(the)i(expression)e(in)i(that)f(e\013ectiv)n(e)739 3007 y(directory)-7 b(.)41 b(F)-7 b(or)29 b(example,)h(one)f(common)g (w)n(a)n(y)f(to)i(install)f(a)g(\014le)h(is)f(to)h(de\014ne)g(a)f(sym)n (b)r(ol)739 3106 y(link,)36 b(where)d(the)i(v)-5 b(alue)34 b(of)g(the)g(link)h(is)f(relativ)n(e)f(to)h(the)g(directory)f(where)h (the)g(link)g(is)739 3206 y(created.)863 3308 y(The)28 b(follo)n(wing)f(commands)g(create)f(links)i(in)g(the)g Fo($\(LIB\))d Fs(directory)-7 b(.)913 3505 y Fo(FOO)43 b(=)g($\(file)e(foo\))913 3605 y(install:)1044 3704 y(ln)i(-s)g($\(in)e ($\(LIB\),)g($\(FOO\)\))g($\(LIB\)/foo)863 3898 y Fs(Note)25 b(that)f(the)g Fo(in)g Fs(function)g(only)g(a\013ects)g(the)g (expansion)f(of)h Fo(Node)f Fs(\()p Fo(File)f Fs(and)i Fo(Dir)p Fs(\))739 3998 y(v)-5 b(alues.)739 4126 y @beginspecial @setspecial @endspecial 119 x Fk(10.1.4)112 b(basename)739 4301 y @beginspecial @setspecial @endspecial 870 4403 a Fo($\(basename)39 b(files\))i(:)i(String)e(Sequence)1000 4503 y(files)h(:)h(String)e(Sequence)863 4697 y Fs(The)29 b Fo(basename)c Fs(function)30 b(returns)d(the)i(base)f(names)g(for)g (a)h(list)f(of)h(\014les.)40 b(The)28 b(base-)739 4796 y(name)f(is)h(the)g(\014lename)f(with)h(an)n(y)f(leading)g(directory)f (comp)r(onen)n(ts)i(remo)n(v)n(ed.)863 4899 y(F)-7 b(or)18 b(example,)i(the)f(expression)e Fo($\(basename)39 b(dir1/dir2/a.out)f (/etc/modules.co)o(nf)f(/foo.ml\))739 4998 y Fs(ev)-5 b(aluates)27 b(to)g Fo(a.out)42 b(modules.conf)c(foo.ml)p Fs(.)p eop end %%Page: 131 131 TeXDict begin 131 130 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.1.)63 b(FILE)27 b(NAMES)1981 b Fs(131)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.1.5)112 b(dirname)291 570 y @beginspecial @setspecial @endspecial 421 671 a Fo($\(dirname)40 b(files\))h(:)i(String)f(Sequence)552 771 y(files)g(:)h(String)e(Sequence)415 960 y Fs(The)c Fo(dirname)e Fs(function)j(returns)e(the)i(directory)e(name)h(for)g(a)f (list)i(of)f(\014les.)66 b(The)291 1059 y(directory)24 b(name)i(is)g(the)h(\014lename)f(with)g(the)h(basename)e(remo)n(v)n (ed.)35 b(If)27 b(a)e(name)h(do)r(es)g(not)291 1159 y(ha)n(v)n(e)g(a)h (directory)f(part,)i(the)g(directory)e(is)h(\\.")415 1260 y(F)-7 b(or)18 b(example,)i(the)e(expression)f Fo($\(dirname)40 b(dir1\\dir2\\a.out)e(/etc/modules.co)o(nf)f(/foo.ml)k(bar.ml\))291 1359 y Fs(ev)-5 b(aluates)26 b(to)i Fo(dir1/dir2)40 b(/etc)i(/)h(.)p Fs(.)415 1461 y Fq(Note)p Fs(:)62 b(this)41 b(function)g(is)f (di\013eren)n(t)h(from)f(the)h Fo(dirof)e Fs(function.)76 b(The)40 b(function)291 1560 y Fo(dirname)18 b Fs(is)i(simple)h(a)g (function)g(o)n(v)n(er)f(strings,)h(while)g Fo(dirof)e Fs(is)i(a)f(function)i(on)e(\014lenames.)291 1699 y @beginspecial @setspecial @endspecial 101 x Fk(10.1.6)112 b(ro)s(otname)291 1855 y @beginspecial @setspecial @endspecial 421 1957 a Fo($\(rootname)40 b(files\))h(:)i(String)e(Sequence)552 2056 y(files)h(:)h(String)e(Sequence)415 2245 y Fs(The)19 b Fo(rootname)d Fs(function)k(returns)e(the)i(ro)r(ot)e(name)h(for)g(a) f(list)i(of)f(\014les.)34 b(The)19 b(ro)r(otname)291 2344 y(is)27 b(the)h(\014lename)g(with)g(the)g(\014nal)f(su\016x)h (remo)n(v)n(ed.)415 2445 y(F)-7 b(or)18 b(example,)i(the)e(expression)f Fo($\(rootname)40 b(dir1/dir2/a.out)d(/etc/a.b.c)j(/foo.ml\))291 2545 y Fs(ev)-5 b(aluates)26 b(to)i Fo(dir1/dir2/a)39 b(/etc/a.b)h(/foo)p Fs(.)291 2675 y @beginspecial @setspecial @endspecial 110 x Fk(10.1.7)112 b(dirof)291 2840 y @beginspecial @setspecial @endspecial 421 2941 a Fo($\(dirof)41 b(files\))g(:)i(Dir)g (Sequence)552 3041 y(files)f(:)h(File)f(Sequence)415 3230 y Fs(The)28 b Fo(dirof)d Fs(function)k(returns)d(the)i(directory)f (for)g(eac)n(h)g(of)g(the)h(listed)g(\014les.)415 3331 y(F)-7 b(or)18 b(example,)i(the)e(expression)f Fo($\(dirof)41 b(dir/dir2/a.out)d(/etc/modules.con)o(f)f(/foo.ml\))291 3430 y Fs(ev)-5 b(aluates)26 b(to)i(the)g(directories)e Fo(dir1/dir2)40 b(/etc)i(/)p Fs(.)291 3560 y @beginspecial @setspecial @endspecial 111 x Fk(10.1.8)112 b(fullname)291 3725 y @beginspecial @setspecial @endspecial 421 3827 a Fo($\(fullname)40 b(files\))h(:)i(String)e(Sequence)552 3926 y(files)h(:)h(File)f(Sequence)415 4115 y Fs(The)23 b Fo(fullname)d Fs(function)j(returns)g(the)g(pathname)g(relativ)n(e)f (to)h(the)g(pro)5 b(ject)22 b(ro)r(ot)g(for)291 4214 y(eac)n(h)k(of)i(the)g(\014les)f(or)g(directories.)291 4337 y @beginspecial @setspecial @endspecial 118 x Fk(10.1.9)112 b(absname)291 4510 y @beginspecial @setspecial @endspecial 421 4611 a Fo($\(absname)40 b(files\))h(:)i(String)f(Sequence)552 4710 y(files)g(:)h(File)f(Sequence)415 4899 y Fs(The)26 b Fo(absname)c Fs(function)k(returns)f(the)h(absolute)e(pathname)i(for) f(eac)n(h)f(of)i(the)f(\014les)h(or)291 4998 y(directories.)p eop end %%Page: 132 132 TeXDict begin 132 131 bop 739 282 a @beginspecial @setspecial @endspecial Fs(132)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.1.10)112 b(homename)739 570 y @beginspecial @setspecial @endspecial 870 670 a Fo($\(homename)39 b(files\))i(:)i(String)e(Sequence)1000 770 y(files)h(:)h(File)f(Sequence)863 955 y Fs(The)30 b Fo(homename)d Fs(function)j(returns)f(the)i(name)e(of)h(a)g(\014le)g (in)g(tilde)g(form,)g(if)h(p)r(ossible.)739 1055 y(The)24 b(unexpanded)h(forms)f(are)f(computed)i(lazily:)35 b(the)25 b Fo(homename)c Fs(function)k(will)g(usually)739 1154 y(ev)-5 b(aluate)34 b(to)g(an)f(absolute)h(pathname)g(un)n(til)g(the)h (\014rst)f(tilde-expansion)f(for)g(the)i(same)739 1254 y(directory)-7 b(.)739 1389 y @beginspecial @setspecial @endspecial 101 x Fk(10.1.11)112 b(su\016x)739 1544 y @beginspecial @setspecial @endspecial 870 1645 a Fo($\(suffix)40 b(files\))h(:)i(String)e(Sequence)1000 1744 y(files)h(:)h (StringSequence)863 1930 y Fs(The)33 b Fo(suffix)d Fs(function)k (returns)d(the)i(su\016xes)g(for)f(a)g(list)h(of)f(\014les.)52 b(If)33 b(a)g(\014le)f(has)h(no)739 2030 y(su\016x,)28 b(the)f(function)i(returns)e(the)h(empt)n(y)f(string.)863 2130 y(F)-7 b(or)18 b(example,)i(the)f(expression)e Fo($\(suffix)40 b(dir1/dir2/a.out)d(/etc/a)k(/foo.ml\))739 2230 y Fs(ev)-5 b(aluates)27 b(to)g Fo(.out)42 b(.ml)p Fs(.)739 2358 y @beginspecial @setspecial @endspecial 150 x Fl(10.2)135 b(P)l(ath)46 b(searc)l(h)739 2591 y @beginspecial @setspecial @endspecial 117 x Fk(10.2.1)112 b(whic)m(h)739 2762 y @beginspecial @setspecial @endspecial 870 2862 a Fo($\(which)40 b(files\))h(:)j(File)e(Sequence)1000 2962 y(files)g(:)h(String)e (Sequence)863 3148 y Fs(The)26 b Fo(which)d Fs(function)j(searc)n(hes)e (for)g(executables)h(in)h(the)f(curren)n(t)g(command)g(searc)n(h)739 3247 y(path,)38 b(and)e(returns)f Fo(file)g Fs(v)-5 b(alues)35 b(for)h(eac)n(h)f(of)h(the)h(commands.)61 b(It)36 b(is)g(an)g(error)e (if)j(a)739 3347 y(command)27 b(is)h(not)f(found.)739 3466 y @beginspecial @setspecial @endspecial 117 x Fk(10.2.2)112 b(where)739 3637 y @beginspecial @setspecial @endspecial 101 x Fs(The)25 b Fo(where)f Fs(function)i(is)f(similar)f(to)h(whic)n (h,)h(except)g(it)f(returns)g(the)h(list)f(of)g(all)g(the)h(lo)r(ca-) 739 3837 y(tions)21 b(of)g(the)h(giv)n(en)e(executable)h(\(in)h(the)f (order)f(in)i(whic)n(h)f(the)g(corresp)r(onding)f(directories)739 3937 y(app)r(ear)i(in)i Fo($PATH)p Fs(\).)d(In)j(case)e(a)h(command)g (is)g(handled)g(in)n(ternally)g(b)n(y)g(the)g Fo(Shell)e Fs(ob)5 b(ject,)739 4037 y(the)28 b(\014rst)f(string)g(in)h(the)g (output)g(will)g(describ)r(e)f(the)h(command)f(as)g(a)g(built-in)i (function.)913 4223 y Fo(\045)43 b(where)f(echo)913 4322 y(echo)g(is)h(a)g(Shell)f(object)f(method)g(\(a)i(built-in)d (function\))913 4422 y(/bin/echo)739 4548 y @beginspecial @setspecial @endspecial 110 x Fk(10.2.3)112 b(rehash)739 4713 y @beginspecial @setspecial @endspecial 913 4813 a Fo(rehash\(\))863 4998 y Fs(The)28 b Fo(rehash)d Fs(function)j (resets)f(all)h(searc)n(h)e(paths.)p eop end %%Page: 133 133 TeXDict begin 133 132 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.2.)63 b(P)-7 b(A)g(TH)28 b(SEAR)n(CH)1903 b Fs(133)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.2.4)112 b(exists-in-path)291 588 y @beginspecial @setspecial @endspecial 421 669 a Fo($\(exists-in-path)37 b(files\))k(:)j(String)552 768 y(files)e(:)h(String)e(Sequence)415 918 y Fs(The)32 b Fo(exists-in-path)27 b Fs(function)32 b(tests)g(whether)g(all)g(executables)f(are)g(presen)n(t)h(in)291 1018 y(the)c(curren)n(t)e(searc)n(h)g(path.)291 1144 y @beginspecial @setspecial @endspecial 100 x Fk(10.2.5)112 b(digest,)38 b(digest-optional)291 1317 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 509 1398 a Fo($\(digest)i(files\))h(:)i(String)e(Array)639 1497 y(file)h(:)h(File)f(Array)509 1597 y(raises)f(RuntimeExceptio)o(n) 509 1796 y($\(digest-option)o(al)c(files\))k(:)i(String)e(Array)639 1896 y(file)h(:)h(File)f(Array)415 2046 y Fs(The)28 b Fo(digest)e Fs(and)i Fo(digest-optional)22 b Fs(functions)28 b(compute)g(MD5)g(digests)g(of)g(\014les.)291 2145 y(The)18 b Fo(digest)e Fs(function)j(raises)e(an)h(exception)g(if)h(a)f(\014le)g (do)r(es)g(no)g(exist.)34 b(The)19 b Fo(digest-optional)291 2245 y Fs(returns)26 b Fo(false)g Fs(if)i(a)f(\014le)h(do)r(es)f(no)h (exist.)36 b(MD5)28 b(digests)f(are)g(cac)n(hed.)291 2372 y @beginspecial @setspecial @endspecial 100 x Fk(10.2.6)112 b(\014nd-in-path,)40 b(\014nd-in-path-optional)291 2545 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 465 2625 a Fo($\(find-in-path)e(path,)j (files\))g(:)j(File)d(Array)596 2725 y(path)h(:)h(Dir)f(Array)596 2824 y(files)f(:)i(String)e(Array)465 2924 y(raises)g(RuntimeException) 465 3123 y($\(find-in-path-o)o(pt)o(ion)o(al)c(path,)42 b(files\))f(:)i(File)f(Array)415 3273 y Fs(The)36 b Fo(find-in-path)c Fs(function)37 b(searc)n(hes)d(for)i(the)h(\014les)f(in)g(a)g(searc)n (h)f(path.)63 b(Only)291 3373 y(the)38 b(tail)g(of)g(the)h(\014lename)f (is)g(signi\014can)n(t.)67 b(The)39 b Fo(find-in-path)33 b Fs(function)39 b(raises)d(an)291 3472 y(exception)k(if)h(the)g (\014le)g(can't)f(b)r(e)h(found.)77 b(The)40 b Fo(find-in-path-opti)o (on)o(al)34 b Fs(function)291 3572 y(silen)n(tly)27 b(remo)n(v)n(es)f (\014les)h(that)h(can't)g(b)r(e)g(found.)291 3699 y @beginspecial @setspecial @endspecial 100 x Fk(10.2.7)112 b(digest-in-path,)40 b(digest-in-path-optional)291 3872 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 465 3952 a Fo($\(digest-in-path)d(path,)k(files\))h(:)h(String/File)c (Array)596 4052 y(path)j(:)h(Dir)f(Array)596 4151 y(files)f(:)i(String) e(Array)465 4251 y(raises)g(RuntimeException)465 4450 y($\(digest-in-path)o(-o)o(pti)o(on)o(al)c(path,)42 b(files\))f(:)i (String/File)c(Array)415 4600 y Fs(The)e Fo(digest-in-path)31 b Fs(function)38 b(searc)n(hes)d(for)h(the)h(\014les)g(in)g(a)g(searc)n (h)e(path)i(and)291 4700 y(returns)18 b(the)i(\014le)g(and)f(digest)h (for)f(eac)n(h)f(\014le.)35 b(Only)19 b(the)h(tail)f(of)h(the)g (\014lename)f(is)h(signi\014can)n(t.)291 4799 y(The)38 b Fo(digest-in-path)32 b Fs(function)39 b(raises)d(an)i(exception)g(if) g(the)h(\014le)f(can't)g(b)r(e)h(found.)291 4899 y(The)32 b Fo(digest-in-path-op)o(tio)o(na)o(l)27 b Fs(function)33 b(silen)n(tly)g(remo)n(v)n(es)d(elemen)n(ts)j(that)g(can't)291 4998 y(b)r(e)28 b(found.)p eop end %%Page: 134 134 TeXDict begin 134 133 bop 739 282 a @beginspecial @setspecial @endspecial Fs(134)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(10.3)135 b(File)46 b(stats)739 598 y @beginspecial @setspecial @endspecial 116 x Fk(10.3.1)112 b(\014le-exists,)39 b(target-exists,)f(target-is-prop)s(er)739 787 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 870 867 a Fo($\(file-exists)g(files\))j(:)i(String)870 967 y($\(target-exists)37 b(files\))k(:)i(String)870 1067 y($\(target-is-pro)o(per)37 b(files\))k(:)i(String)1044 1166 y(files)f(:)h(File)f(Sequence)863 1350 y Fs(The)19 b Fo(file-exists)14 b Fs(function)19 b(c)n(hec)n(ks)e(whether)h(the)h (\014les)f(listed)h(exist.)34 b(The)18 b Fo(target-exists)739 1449 y Fs(function)26 b(is)g(similar)f(to)g(the)i Fo(file-exists)21 b Fs(function.)37 b(Ho)n(w)n(ev)n(er,)24 b(it)i(returns)f(true)h(if)g (the)739 1549 y(\014le)k(exists)f Fi(or)40 b Fs(if)30 b(it)g(can)g(b)r(e)g(built)g(b)n(y)g(the)g(curren)n(t)f(pro)5 b(ject.)43 b(The)30 b Fo(target-is-proper)739 1648 y Fs(returns)d(true)g(only)g(if)i(the)f(\014le)f(can)h(b)r(e)g(generated) e(in)i(the)g(curren)n(t)f(pro)5 b(ject.)739 1781 y @beginspecial @setspecial @endspecial 100 x Fk(10.3.2)112 b(stat-reset)739 1935 y @beginspecial @setspecial @endspecial 870 2035 a Fo($\(stat-reset)38 b(files\))j(:)j(String)1044 2135 y(files)e(:)h(File)f(Sequence)863 2318 y Fs(OMak)n(e)24 b(uses)g(a)g(stat-cac)n(he.)35 b(The)25 b Fo(stat-reset)20 b Fs(function)26 b(reset)e(the)h Fo(stat)e Fs(informa-)739 2417 y(tion)j(for)f(the)i(giv)n(en)e(\014les,)h(forcing)f(the)h Fo(stat)f Fs(information)g(to)h(b)r(e)g(recomputed)g(the)g(next)739 2517 y(time)i(it)g(is)g(requested.)739 2650 y @beginspecial @setspecial @endspecial 100 x Fk(10.3.3)112 b(\014lter-exists,)39 b(\014lter-targets,)e(\014lter-prop)s(er-targets)739 2823 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 870 2904 a Fo($\(filter-exists)g(files\))k(:)i(File)f(Sequence)870 3003 y($\(filter-target)o(s)c(files\))j(:)i(File)f(Sequence)870 3103 y($\(filter-proper)o(-ta)o(rg)o(ets)o(\))37 b(:)43 b(File)f(Sequence)1000 3202 y(files)g(:)h(File)f(Sequence)863 3386 y Fs(The)29 b Fo(filter-exists)p Fs(,)23 b Fo(filter-targets)p Fs(,)g(and)28 b Fo(filter-proper-tar)o(ge)o(ts)22 b Fs(func-)739 3485 y(tions)27 b(remo)n(v)n(e)f(\014les)i(from)f(a)g(list)h(of)g (\014les.)863 3652 y Fj(\017)41 b Fo(filter-exists)p Fs(:)32 b(the)c(result)f(is)h(the)g(list)g(of)f(\014les)h(that)g (exist.)863 3818 y Fj(\017)41 b Fo(filter-targets)p Fs(:)31 b(the)d(result)f(is)f(the)i(list)f(of)g(\014les)g(either)g(exist,)g(or) f(can)h(b)r(e)g(built)946 3918 y(b)n(y)h(the)g(curren)n(t)e(pro)5 b(ject.)863 4084 y Fj(\017)41 b Fo(filter-proper-tar)o(get)o(s)p Fs(:)29 b(the)d(result)e(is)h(the)g(list)g(of)g(\014les)g(that)g(can)f (b)r(e)h(built)h(in)946 4184 y(the)i(curren)n(t)f(pro)5 b(ject.)739 4317 y @beginspecial @setspecial @endspecial 84 x Fq(Creating)40 b(a)g(\\distclean")f(target)84 b Fs(One)34 b(w)n(a)n(y)f(to)h(create)g(a)g(simple)h(\\)p Fo(distclean)p Fs(")739 4500 y(rule)30 b(that)h(remo)n(v)n(es)e (generated)h(\014les)g(from)h(the)g(pro)5 b(ject)30 b(is)g(b)n(y)h (remo)n(ving)e(all)h(\014les)h(that)739 4600 y(can)c(b)r(e)h(built)g (in)g(the)g(curren)n(t)f(pro)5 b(ject.)863 4700 y Fq(CA)m(UTION:)35 b Fs(y)n(ou)e(should)g(b)r(e)h(careful)g(b)r(efore)f(y)n(ou)g(do)g (this.)56 b(The)34 b(rule)f(remo)n(v)n(es)739 4799 y Fi(any)k Fs(\014le)30 b(that)g(can)g Fi(p)l(otential)t(ly)38 b Fs(b)r(e)30 b(reconstructed.)42 b(There)30 b(is)f(no)h(c)n(hec)n(k)e (to)i(mak)n(e)f(sure)739 4899 y(that)h(the)g(commands)g(to)f(rebuild)h (the)h(\014le)f(w)n(ould)f(actually)g(succeed.)44 b(Also,)30 b(note)g(that)739 4998 y(no)d(\014le)h(outside)f(the)h(curren)n(t)f (pro)5 b(ject)27 b(will)h(b)r(e)g(deleted.)p eop end %%Page: 135 135 TeXDict begin 135 134 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.3.)63 b(FILE)27 b(ST)-7 b(A)g(TS)2024 b Fs(135)465 515 y Fo(.PHONY:)41 b(distclean)465 715 y(distclean:)639 814 y(rm)i($\(filter-proper-)o(tar)o(ge)o(ts)37 b($\(ls)42 b(R,)h(.\)\))415 967 y Fs(If)31 b(y)n(ou)f(use)h(CVS,)g(y)n (ou)f(ma)n(y)g(wish)h(to)g(utilize)g(the)g Fo(cvs_realclean)26 b Fs(program)j(that)291 1066 y(is)34 b(distributed)h(with)h(OMak)n(e)d (in)i(order)e(to)i(create)f(a)g(\\)p Fo(distclean)p Fs(")c(rule)k(that) h(w)n(ould)291 1166 y(delete)h(all)f(the)h(\014les)g(thare)f(are)g(not) h(kno)n(wn)f(to)h(CVS.)g(F)-7 b(or)35 b(example,)j(if)e(y)n(ou)f (already)291 1266 y(ha)n(v)n(e)23 b(a)h(more)g(traditional)g(\\)p Fo(clean)p Fs(")e(target)i(de\014ned)h(in)g(y)n(our)e(pro)5 b(ject,)25 b(and)f(if)i(y)n(ou)e(w)n(an)n(t)291 1365 y(the)k(\\)p Fo(distclean)p Fs(")23 b(rule)k(to)g(b)r(e)h(in)n (teractiv)n(e)f(b)n(y)g(default,)h(y)n(ou)f(can)g(write)h(the)g(follo)n (wing:)465 1518 y Fo(if)43 b($\(not)e($\(defined)f(FORCE_REALCLEAN\))o (\))639 1617 y(FORCE_REALCLEAN)e(=)43 b(false)639 1717 y(export)465 1916 y(distclean:)c(clean)639 2016 y(cvs_realclean)f ($\(if)k($\(FORCE_REALCLEAN)o(\),)37 b(-f\))42 b(-i)h(.omakedb)e(-i)h (.omakedb.lock)415 2168 y Fs(Y)-7 b(ou)27 b(can)f(add)h(more)f(\014les) g(that)h(y)n(ou)f(w)n(an)n(t)g(to)h(alw)n(a)n(ys)e(k)n(eep)h(\(suc)n(h) g(as)h(con\014guration)291 2268 y(\014les\))g(with)h(the)g(-i)g (option.)415 2367 y(Similarly)-7 b(,)34 b(if)f(y)n(ou)g(use)f(Sub)n(v)n (ersion,)h(y)n(ou)f(utilize)i(the)f Fo(build/svn_realcl)o(ea)o(n.o)o(m) 291 2467 y Fs(script)27 b(that)h(comes)f(with)h(OMak)n(e:)465 2619 y Fo(if)43 b($\(not)e($\(defined)f(FORCE_REALCLEAN\))o(\))639 2719 y(FORCE_REALCLEAN)e(=)43 b(false)639 2819 y(export)465 3018 y(open)f(build/svn_realcl)o(ea)o(n)465 3217 y(distclean:)d(clean) 639 3317 y(svn_realclean)f($\(if)k($\(FORCE_REALCLEAN)o(\),)37 b(-f\))42 b(-i)h(.omakedb)e(-i)h(.omakedb.lock)415 3469 y Fs(See)e(also)e(the)i @beginspecial @setspecial @endspecial Fo(dependencies-pro)o(pe)o(r)34 b Fs(function)p @beginspecial @setspecial @endspecial 40 w(for)39 b(an)g(alternate)f(metho)r(d)i(for) 291 3569 y(remo)n(ving)26 b(in)n(termediate)h(\014les.)291 3696 y @beginspecial @setspecial @endspecial 100 x Fk(10.3.4)112 b(\014nd-targets-in-path,)40 b(\014nd-targets-in-path-optional)291 3869 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 465 3949 a Fo($\(find-targets-i)o(n-)o(pat)o(h) d(path)42 b(files\))f(:)j(File)e(Array)465 4049 y($\(find-targets-i)o (n-)o(pat)o(h-)o(opt)o(io)o(nal)37 b(path,)k(files\))g(:)i(File)f (Array)639 4149 y(path)g(:)h(Dir)g(Array)639 4248 y(files)f(:)h(File)f (Sequence)415 4401 y Fs(The)26 b Fo(find-target-in-)o(pat)o(h)19 b Fs(function)26 b(searc)n(hes)e(for)h(targets)f(in)i(the)g(searc)n(h)e (path.)291 4500 y(F)-7 b(or)22 b(eac)n(h)f(\014le)i Fo(file)e Fs(in)i(the)g(\014le)f(list,)i(the)f(path)g(is)f(searc)n(hed)f(sequen)n (tially)h(for)g(a)g(directory)291 4600 y Fo(dir)k Fs(suc)n(h)h(that)h (the)g(target)f Fo(dir/file)d Fs(exists.)37 b(If)28 b(so,)f(the)h (\014le)f Fo(dir/file)e Fs(is)i(returned.)415 4700 y(F)-7 b(or)30 b(example,)h(supp)r(ose)f(y)n(ou)g(are)f(building)i(a)f(C)g (pro)5 b(ject,)31 b(and)f(pro)5 b(ject)30 b(con)n(tains)f(a)291 4799 y(sub)r(directory)35 b Fo(src/)g Fs(con)n(taining)h(only)g(the)h (\014les)f Fo(fee.c)f Fs(and)h Fo(foo.c)p Fs(.)62 b(The)37 b(follo)n(wing)291 4899 y(expression)23 b(ev)-5 b(aluates)25 b(to)f(the)i(\014les)f Fo(src/fee.o)c(src/foo.o)h Fs(ev)n(en)i(if)i (the)f(\014les)g(ha)n(v)n(e)f(not)291 4998 y(already)i(b)r(een)i (built.)p eop end %%Page: 136 136 TeXDict begin 136 135 bop 739 282 a @beginspecial @setspecial @endspecial Fs(136)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)913 515 y Fo ($\(find-targets-in)o(-p)o(ath)37 b(lib)42 b(src,)g(fee.o)g(foo.o\))913 715 y(#)h(Evaluates)d(to)913 814 y(src/fee.o)g(src/foo.o)863 987 y Fs(The)27 b Fo(find-targets-in)o(-pa)o(th)19 b Fs(function)27 b(raises)e(an)h(exception)f(if)i(the)g(\014le)f(can't)g (b)r(e)739 1087 y(found.)35 b(The)19 b Fo(find-targets-in-p)o(ath)o(-o) o(pti)o(on)o(al)13 b Fs(function)21 b(silen)n(tly)e(remo)n(v)n(es)f (targets)739 1187 y(that)28 b(can't)f(b)r(e)h(found.)913 1360 y Fo($\(find-targets-in)o(-p)o(ath)o(-o)o(pt)o(ion)o(al)37 b(lib)42 b(src,)g(fee.o)g(foo.o)f(fum.o\))913 1559 y(#)i(Evaluates)d (to)913 1659 y(src/fee.o)g(src/foo.o)739 1780 y @beginspecial @setspecial @endspecial 110 x Fk(10.3.5)112 b(\014nd-o)s (caml-targets-in-path-optional)739 1963 y @beginspecial @setspecial @endspecial 80 x Fs(The)36 b Fo(find-ocaml-targe)o(ts-)o (in)o(-pa)o(th)o(-o)o(pti)o(on)o(al)30 b Fs(function)37 b(is)f(v)n(ery)e(similar)i(to)g(the)739 2143 y @beginspecial @setspecial @endspecial Fo(find-targets-in-)o(pa)o(th-)o(op)o(tio)o(na) o(l)p @beginspecial @setspecial @endspecial 24 w Fs(one,)31 b(except)g(an)f(OCaml-st)n(yle)f(searc)n(h)g(is)h(used,)739 2242 y(where)f(for)g(ev)n(ery)g(elemen)n(t)h(of)f(the)h(searc)n(h)e (path)i(and)g(for)f(ev)n(ery)f(name)i(b)r(eing)g(searc)n(hed)739 2342 y(for,)35 b(\014rst)e(the)h(uncapitalized)g(v)n(ersion)e(is)i (tried)g(and)f(if)h(it)h(is)e(not)h(buildable,)i(then)e(the)739 2441 y(capitalized)27 b(v)n(ersion)f(is)i(tried)f(next.)739 2572 y @beginspecial @setspecial @endspecial 100 x Fk(10.3.6)112 b(\014le-sort)739 2726 y @beginspecial @setspecial @endspecial 870 2826 a Fo($\(file-sort)39 b(order,)i(files\))g(:)i(File)f(Sequence) 1000 2925 y(order)g(:)h(String)1000 3025 y(files)f(:)h(File)f(Sequence) 863 3198 y Fs(The)30 b Fo(file-sort)c Fs(function)k(sorts)f(a)g(list)h (of)g(\014lenames)f(b)n(y)g(build)i(order)d(augmen)n(ted)739 3298 y(b)n(y)35 b(a)g(set)h(of)f(sort)g(rules.)60 b(Sort)35 b(rules)g(are)g(declared)f(using)h(the)h Fo(.ORDER)d Fs(target.)60 b(The)739 3397 y Fo(.BUILDORDER)23 b Fs(de\014nes)28 b(the)g(default)g(order.)863 3497 y Fo($\(file-sort)39 b(,)i(\))863 3597 y Fs(F)-7 b(or)27 b(example,)h(supp)r (ose)f(w)n(e)g(ha)n(v)n(e)g(the)h(follo)n(wing)e(set)i(of)f(rules.)870 3770 y Fo(a:)42 b(b)i(c)870 3870 y(b:)e(d)870 3969 y(c:)g(d)870 4168 y(.DEFAULT:)e(a)j(b)g(c)g(d)1000 4268 y(echo)f($\(file-sort)d (.BUILDORDER,)g(a)k(b)g(c)h(d\))863 4441 y Fs(In)37 b(the)h(case,)g (the)f(sorter)f(pro)r(duces)g(the)h(result)f Fo(d)44 b(b)f(c)g(a)p Fs(.)64 b(That)37 b(is,)i(a)d(target)g(is)739 4541 y(sorted)24 b Fi(after)34 b Fs(its)25 b(dep)r(endencies.)36 b(The)24 b(sorter)g(is)g(frequen)n(tly)g(used)h(to)f(sort)g(\014les)g (that)h(are)739 4641 y(to)i(b)r(e)h(link)n(ed)g(b)n(y)f(their)h(dep)r (endencies)g(\(for)f(languages)f(where)h(this)h(matters\).)863 4740 y(There)g(are)e(three)h(imp)r(ortan)n(t)h(restrictions)e(to)i(the) g(sorter:)863 4899 y Fj(\017)41 b Fs(The)35 b(sorter)e(can)h(b)r(e)h (used)f(only)g(within)h(a)f(rule)h(b)r(o)r(dy)-7 b(.)57 b(The)35 b(reason)e(for)h(this)g(is)946 4998 y(that)28 b Fi(al)t(l)38 b Fs(dep)r(endencies)28 b(m)n(ust)f(b)r(e)h(kno)n(wn)f (b)r(efore)h(the)f(sort)g(is)h(p)r(erformed.)p eop end %%Page: 137 137 TeXDict begin 137 136 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.4.)63 b(GLOBBING)27 b(AND)i(FILE)e(LISTINGS)1193 b Fs(137)415 515 y Fj(\017)41 b Fs(The)28 b(sorter)e(can)h(only)g(sort) g(\014les)h(that)f(are)g(buildable)h(in)g(the)g(curren)n(t)e(pro)5 b(ject.)415 691 y Fj(\017)41 b Fs(The)28 b(sorter)e(will)i(fail)f(if)i (the)f(dep)r(endencies)f(are)g(cyclic.)291 834 y @beginspecial @setspecial @endspecial 86 x Fq(10.3.6.1)92 b(sort)32 b(rule)291 1077 y Fs(It)23 b(is)g(p)r(ossible)g(to)g(further)g (constrain)f(the)h(sorter)f(through)h(the)g(use)g(of)g(sort)f(rules.)35 b(A)24 b(sort)291 1177 y(rule)e(is)g(declared)g(in)g(t)n(w)n(o)g (steps.)35 b(The)23 b(target)e(m)n(ust)i(b)r(e)g(listed)g(as)e(an)i Fo(.ORDER)d Fs(target;)j(and)291 1277 y(then)28 b(a)f(set)g(of)h(sort)f (rules)g(m)n(ust)g(b)r(e)h(giv)n(en.)37 b(A)28 b(sort)e(rule)i (de\014nes)f(a)g(pattern)h(constrain)n(t.)421 1471 y Fo(.ORDER:)41 b(.MYORDER)421 1671 y(.MYORDER:)f(\045.foo:)h(\045.bar) 421 1770 y(.MYORDER:)f(\045.bar:)h(\045.baz)421 1970 y(.DEFAULT:)f(a.foo)i(b.bar)f(c.baz)h(d.baz)552 2069 y(echo)g($\(sort)f(.MYORDER,)f(a.foo)i(b.bar)f(c.baz)h(d.baz\))415 2261 y Fs(In)30 b(this)h(example,)f(the)g Fo(.MYORDER)d Fs(sort)i(rule)h(sp)r(eci\014es)f(that)i(an)n(y)e(\014le)h(with)g(a)g (su\016x)291 2361 y Fo(.foo)h Fs(should)h(b)r(e)i(placed)e(after)g(an)n (y)g(\014le)h(with)h(su\016x)e Fo(.bar)p Fs(,)h(and)g(an)n(y)f(\014le)h (with)g(su\016x)291 2461 y Fo(.bar)26 b Fs(should)h(b)r(e)h(placed)f (after)h(a)f(\014le)g(with)i(su\016x)e Fo(.baz)p Fs(.)415 2563 y(In)h(this)g(example,)f(the)h(result)f(of)h(the)g(sort)f(is)g Fo(d.baz)42 b(c.baz)f(b.bar)h(a.foo)p Fs(.)291 2705 y @beginspecial @setspecial @endspecial 103 x Fk(10.3.7)112 b(\014le-c)m(hec)m(k-sort)291 2864 y @beginspecial @setspecial @endspecial 421 2966 a Fo(file-check-sort\(f)o(il)o(es\))552 3065 y(files)42 b(:)h(File)f(Sequence)421 3165 y(raises)f (RuntimeException)415 3357 y Fs(The)24 b Fo(file-check-sort)18 b Fs(function)25 b(c)n(hec)n(ks)e(whether)h(a)g(list)g(of)g(\014les)g (is)g(in)h(sort)e(order.)291 3457 y(If)28 b(so,)f(the)h(list)f(is)h (returned)f(unc)n(hanged.)36 b(If)28 b(not,)g(the)g(function)g(raises)e (an)h(exception.)415 3559 y Fo($\(file-check-sor)o(t)38 b(,)i(\))291 3706 y @beginspecial @setspecial @endspecial 140 x Fl(10.4)135 b(Globbing)45 b(and)g(\014le)g(listings) 291 4033 y Fs(OMak)n(e)26 b(commands)h(are)g(\\glob-expanded")f(b)r (efore)h(b)r(eing)h(executed.)38 b(That)28 b(is,)f(names)291 4132 y(ma)n(y)19 b(con)n(tain)g Fi(p)l(atterns)26 b Fs(that)20 b(are)f(expanded)h(to)f(sequences)g(of)h(\014le)g(and)g(directory)e (names.)291 4232 y(The)39 b(syn)n(tax)f(follo)n(ws)h(the)g(standard)g (bash\(1\),)j(csh\(1\),)g(syn)n(tax,)f(with)f(the)g(follo)n(wing)291 4332 y(rules.)415 4524 y Fj(\017)h Fs(A)27 b Fi(p)l(athname)33 b Fs(is)27 b(a)f(sequence)g(of)g(directory)f(and)h(\014le)h(names)f (separated)f(b)n(y)h(one)g(of)498 4624 y(the)k Fo(/)f Fs(or)f Fo(\\)h Fs(c)n(haracters.)39 b(F)-7 b(or)28 b(example,)i(the)f (follo)n(wing)f(pathnames)h(refer)f(to)i(the)498 4723 y(same)d(\014le:)37 b Fo(/home/jyh/OMakefi)o(le)21 b Fs(and)27 b Fo(/home\\jyh/OMakefi)o(le)p Fs(.)415 4899 y Fj(\017)41 b Fs(Glob-expansion)e(is)h(p)r(erformed)g(on)g(the)g(comp) r(onen)n(ts)g(of)g(a)g(path.)74 b(If)41 b(a)f(path)498 4998 y(con)n(tains)18 b(o)r(ccurrences)g(of)g(sp)r(ecial)h(c)n (haracters)e(\(listed)i(b)r(elo)n(w\),)i(the)e(path)h(is)e(view)n(ed)p eop end %%Page: 138 138 TeXDict begin 138 137 bop 739 282 a @beginspecial @setspecial @endspecial Fs(138)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)946 515 y Fs(as)34 b(a)h(pattern)f(to)h(b)r(e)g(matc)n(hed)f(against)g(the)h(actual)f (\014les)g(in)h(the)g(system.)58 b(The)946 615 y(expansion)27 b(pro)r(duces)g(a)g(sequence)g(of)h(all)f(\014le/directory)f(names)h (that)h(matc)n(h.)946 748 y(F)-7 b(or)33 b(the)g(follo)n(wing)e (examples,)j(supp)r(ose)e(that)h(a)f(directory)g Fo(/dir)f Fs(con)n(tains)g(\014les)946 847 y(named)d Fo(a)p Fs(,)f Fo(-a)p Fs(,)g Fo(a.b)p Fs(,)g(and)g Fo(b.c)p Fs(.)946 1029 y Fo(*)42 b Fs(Matc)n(hes)c(an)n(y)h(sequence)g(of)h(zero-or-more) c(c)n(haracters.)71 b(F)-7 b(or)39 b(example,)j(the)1129 1129 y(pattern)28 b Fo(/dir/a*)c Fs(expands)j(to)h Fo(/dir/a)41 b(/dir/aa)g(/dir/a.b)p Fs(.)946 1261 y Fo(?)h Fs(Matc)n(hes)28 b(exactly)g(one)g(c)n(haracter.)39 b(The)29 b(pattern)g Fo(/dir/?a)d Fs(expands)i(the)h(\014le-)1129 1361 y(name)e Fo(/dir/-a)p Fs(.)946 1493 y Fo([...])40 b Fs(Square)f(brac)n(k)n(ets)g (denote)h(c)n(haracter)e(sets)i(and)g(ranges)e(in)j(the)g(ASCI)r(I)1129 1593 y(c)n(haracter)34 b(set.)61 b(The)35 b(pattern)h(ma)n(y)f(con)n (tain)f(individual)i(c)n(haracters)e Fh(c)h Fs(or)1129 1692 y(c)n(haracter)c(ranges)g Fh(c)1797 1704 y Fn(1)1835 1692 y Fo(-)p Fh(c)1915 1704 y Fn(2)1951 1692 y Fs(.)53 b(The)33 b(pattern)g(matc)n(hes)g(an)n(y)f(of)h(the)g(individual)1129 1792 y(c)n(haracters)24 b(sp)r(eci\014ed,)j(or)f(an)n(y)g(c)n (haracters)e(in)j(the)f(range.)36 b(A)26 b(leading)g(\\hat")1129 1892 y(in)n(v)n(erts)32 b(the)h(send)f(of)h(the)g(pattern.)52 b(T)-7 b(o)32 b(sp)r(ecify)h(a)g(pattern)f(that)h(con)n(tains)1129 1991 y(the)f(literal)g(c)n(haracters)d Fo(-)p Fs(,)k(the)f Fo(-)f Fs(should)h(o)r(ccur)f(as)g(the)i(\014rst)e(c)n(haracter)f(in) 1129 2091 y(the)e(range.)1357 2251 y(P)n(attern)346 b(Expansion)p 1308 2284 2118 4 v 1357 2354 a Fo(/dir/[a-b]*)139 b(/dir/a)41 b(/dir/a.b)f(/dir/b.c)1357 2453 y(/dir/[-a-b]*)95 b(/dir/a)41 b(/dir/-a)g(/dir/a.b)f(/dir/b.c)1357 2553 y(/dir/[-a]*)183 b(/dir/a)41 b(/dir/-a)g(/dir/a.b)946 2719 y Fj(f)p Fo(s1,...,sN)p Fj(g)c Fs(Braces)32 b(indicate)g(brace-expansion.)50 b(The)33 b(braces)f(delimit)h(a)g(se-)1129 2819 y(quence)c(of)f (strings)g(separated)f(b)n(y)i(commas.)39 b(Giv)n(en)29 b Fh(N)37 b Fs(strings,)28 b(the)i(result)1129 2918 y(pro)r(duces)d Fh(N)36 b Fs(copies)27 b(of)h(the)g(pattern,)f(one)h(for)f(eac)n(h)f (of)i(the)g(strings)f Fh(s)3394 2930 y Fd(i)3421 2918 y Fs(.)1684 3078 y(P)n(attern)477 b(Expansion)p 1635 3111 1464 4 v 1684 3181 a Fo(a{b,c,d})402 b(ab)42 b(ac)h(ad)1684 3281 y(a{b{c,d},e})270 b(abc)42 b(abd)g(ae)1684 3380 y(a{?{[A-Z],d},*})94 b(a?[A-Z])40 b(a?d)j(a*)1032 3542 y Fs(The)19 b(tilde)h(is)f(used)g(to)h(sp)r(ecify)f(home)g (directories.)33 b(Dep)r(ending)20 b(on)f(y)n(our)f(system,)1129 3642 y(these)28 b(migh)n(t)f(b)r(e)h(p)r(ossible)g(expansions.)1379 3802 y(P)n(attern)172 b(Expansion)p 1329 3835 2074 4 v 1379 3904 a Fo(~jyh)273 b(/home/jyh)1379 4004 y(~bob/*.c)97 b(c:\\Documents)38 b(and)k(Settings\\users\\bo)o(b)946 4166 y Fs(The)25 b Fo(\\)f Fs(c)n(haracter)e(is)i(b)r(oth)h(a)f (pathname)g(separator)e(and)i(an)g(escap)r(e)g(c)n(haracter.)34 b(If)1129 4265 y(follo)n(w)n(ed)c(b)n(y)h(a)g(sp)r(ecial)g(glob)g(c)n (haracter,)f(the)i Fo(\\)f Fs(c)n(hanges)f(the)i(sense)f(of)g(the)1129 4365 y(follo)n(wing)f(c)n(haracter)e(to)i(non-sp)r(ecial)g(status.)46 b(Otherwise,)30 b Fo(\\)g Fs(is)h(view)n(ed)f(as)1129 4465 y(a)d(pathname)h(separator.)1179 4708 y(P)n(attern)781 b(Expansion)p 1129 4741 2619 4 v 1179 4811 a Fo(~jyh/\\*)750 b(~jyh/*)26 b Fs(\()p Fo(*)h Fs(is)h(literal\))1179 4910 y Fo(/dir/\\[a-z?)574 b(/dir/[a-z?)24 b Fs(\()p Fo([)k Fs(is)f(literal,)g Fo(?)g Fs(is)h(a)f(pattern\).)1179 5010 y Fo(c:\\Program)39 b(Files\\[A-z])95 b(c:\\Program)40 b(Files[A-z]*)p eop end %%Page: 139 139 TeXDict begin 139 138 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.4.)63 b(GLOBBING)27 b(AND)i(FILE)e(LISTINGS)1193 b Fs(139)681 515 y(Note)24 b(that)g(the)h(\014nal)f(case)f(migh)n(t)h (b)r(e)g(considered)f(to)h(b)r(e)g(am)n(biguous)f(\(where)681 615 y Fo(\\)34 b Fs(should)g(b)r(e)h(view)n(ed)e(as)h(a)g(pathname)g (separator,)g(not)g(as)g(an)g(escap)r(e)f(for)681 715 y(the)e(subsequen)n(t)f Fo([)g Fs(c)n(haracter.)43 b(If)31 b(y)n(ou)f(w)n(an)n(t)g(to)g(a)n(v)n(oid)f(this)i(am)n(biguit)n(y)e(on) 681 814 y(Win32,)22 b(y)n(ou)d(should)i(use)f(the)h(forw)n(ard)e(slash) h Fo(/)h Fs(ev)n(en)f(for)g(Win32)g(pathnames)681 914 y(\(the)28 b Fo(/)f Fs(is)h(translated)f(to)g Fo(\\)g Fs(in)h(the)g(output\).)731 1143 y(P)n(attern)825 b(Expansion)p 681 1176 2684 4 v 731 1246 a Fo(c:/Program)39 b(Files/[A-z]*)95 b(c:\\Program)39 b(Files\\WindowsUpda)o(te)e(...)291 1388 y @beginspecial @setspecial @endspecial 77 x Fk(10.4.1)112 b(glob)291 1538 y @beginspecial @setspecial @endspecial 421 1618 a Fo($\(glob)41 b(strings\))g(:)i(Node)f(Array)552 1718 y(strings)f(:)i(String)e(Sequence)421 1818 y($\(glob)g(options,)g (strings\))f(:)j(Node)f(Array)552 1917 y(options)f(:)i(String)552 2017 y(strings)e(:)i(String)e(Sequence)415 2175 y Fs(The)28 b Fo(glob)e Fs(function)i(p)r(erforms)f(glob-expansion.)415 2274 y(The)h(.)37 b(and)27 b(..)37 b(en)n(tries)27 b(are)g(alw)n(a)n (ys)e(ignored.)415 2374 y(The)j(options)f(are:)291 2520 y Fq(b)41 b Fs(Do)28 b(not)f(p)r(erform)g Fo(csh)p Fs(\(1\)-st)n(yle)f (brace)h(expansion.)291 2676 y Fq(e)41 b Fs(The)28 b Fo(\\)f Fs(c)n(haracter)e(do)r(es)j(not)f(escap)r(e)g(sp)r(ecial)g(c)n (haracters.)291 2833 y Fq(n)41 b Fs(If)28 b(an)f(expansion)g(fails,)h (return)f(the)h(expansion)e(literally)h(instead)h(of)f(ab)r(orting.)291 2989 y Fq(i)41 b Fs(If)28 b(an)f(expansion)g(fails,)g(it)h(expands)f (to)h(nothing.)291 3145 y Fq(.)41 b Fs(Allo)n(w)27 b(wildcard)g (patterns)g(to)g(matc)n(h)h(\014les)f(b)r(eginning)h(with)g(a)f(.)291 3301 y Fq(A)41 b Fs(Return)28 b(all)f(\014les,)h(including)g(\014les)f (that)h(b)r(egin)g(with)g(a)f(.)291 3457 y Fq(F)41 b Fs(Matc)n(h)27 b(only)h(normal)e(\014les)i(\(an)n(y)f(\014le)h(that)f (is)h(not)g(a)f(directory\).)291 3613 y Fq(D)41 b Fs(Matc)n(h)28 b(only)f(directory)f(\014les.)291 3769 y Fq(C)41 b Fs(Ignore)26 b(\014les)i(according)e(to)h Fo(cvs)p Fs(\(1\))g(rules.)291 3925 y Fq(P)41 b Fs(Include)28 b(only)f(prop)r(er)g(sub)r(directories.) 415 4072 y(In)i(addition,)g(the)f(follo)n(wing)g(v)-5 b(ariables)27 b(ma)n(y)h(b)r(e)h(de\014ned)g(that)g(a\013ect)f(the)h(b) r(eha)n(vior)291 4171 y(of)e Fo(glob)p Fs(.)291 4329 y Fq(GLOB)p 569 4329 29 4 v 34 w(OPTIONS)42 b Fs(A)28 b(string)f(con)n(taining)f(default)i(options.)291 4485 y Fq(GLOB)p 569 4485 V 34 w(IGNORE)41 b Fs(A)33 b(list)h(of)f(shell)h (patterns)f(for)g(\014lenames)g(that)h Fo(glob)d Fs(should)j(ig-)498 4585 y(nore.)291 4741 y Fq(GLOB)p 569 4741 V 34 w(ALLO)m(W)42 b Fs(A)27 b(list)f(of)g(shell)g(patterns.)36 b(If)27 b(a)f(\014le)g(do)r(es)g(not)g(matc)n(h)g(a)g(pattern)g(in)498 4841 y Fo(GLOB_ALLOW)p Fs(,)e(it)k(is)f(ignored.)415 4998 y(The)h(returned)f(\014les)g(are)g(sorted)g(b)n(y)g(name.)p eop end %%Page: 140 140 TeXDict begin 140 139 bop 739 282 a @beginspecial @setspecial @endspecial Fs(140)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.4.2)112 b(ls)739 571 y @beginspecial @setspecial @endspecial 870 672 a Fo($\(ls)42 b(files\))f(:)i(Node)f(Array)1000 772 y(files)g(:)h(String)e(Sequence) 870 872 y($\(ls)h(options,)e(files\))h(:)i(Node)f(Array)1000 971 y(files)g(:)h(String)e(Sequence)863 1162 y Fs(The)28 b Fo(ls)f Fs(function)h(returns)f(the)h(\014lenames)f(in)h(a)f (directory)-7 b(.)863 1264 y(The)20 b(.)35 b(and)19 b(..)35 b(en)n(tries)19 b(are)g(alw)n(a)n(ys)e(ignored.)34 b(The)19 b(patterns)h(are)f(shell-st)n(yle)g(patterns,)739 1363 y(and)27 b(are)g(glob-expanded.)863 1465 y(The)19 b(options)g(include)g (all)g(of)g(the)g(options)f(to)h(the)g Fo(glob)f Fs(function,)j(plus)e (the)g(follo)n(wing.)739 1655 y Fq(R)41 b Fs(P)n(erform)26 b(a)h(recursiv)n(e)f(listing.)863 1846 y(The)33 b Fo(GLOB_ALLOW)28 b Fs(and)k Fo(GLOB_IGNORE)27 b Fs(v)-5 b(ariables)31 b(can)h(b)r(e)g(de\014ned)h(to)f(con)n(trol)f(the)739 1946 y(globbing)c(b)r(eha)n(vior.)35 b(The)28 b(returned)f(\014les)g (are)g(sorted)g(b)n(y)g(name.)739 2087 y @beginspecial @setspecial @endspecial 102 x Fk(10.4.3)112 b(sub)s(dirs)739 2244 y @beginspecial @setspecial @endspecial 870 2346 a Fo($\(subdirs)40 b(dirs\))h(:)i(Dir)g(Array)1000 2446 y(dirs)f(:)i(String)d(Sequence)870 2545 y($\(subdirs)f(options,)g (dirs\))h(:)i(Dir)g(Array)1000 2645 y(options)e(:)i(String)1000 2744 y(dirs)f(:)i(String)d(Sequence)863 2935 y Fs(The)32 b Fo(subdirs)c Fs(function)k(returns)f(all)g(the)h(sub)r(directories)e (of)i(a)f(list)g(of)h(directories,)739 3035 y(recursiv)n(ely)-7 b(.)863 3136 y(The)28 b(p)r(ossible)f(options)g(are)g(the)h(follo)n (wing:)739 3308 y Fq(A)42 b Fs(Return)27 b(directories)g(that)g(b)r (egin)h(with)g(a)f(.)739 3483 y Fq(C)41 b Fs(Ignore)27 b(\014les)g(according)f(to)h Fo(.cvsignore)d Fs(rules.)739 3657 y Fq(P)42 b Fs(Include)28 b(only)f(prop)r(er)f(sub)r(directories.) 739 3807 y @beginspecial @setspecial @endspecial 135 x Fl(10.5)135 b(Filesystem)47 b(op)t(erations)739 4049 y @beginspecial @setspecial @endspecial 95 x Fk(10.5.1)112 b(mkdir)739 4199 y @beginspecial @setspecial @endspecial 870 4301 a Fo(mkdir\(mode,)39 b(node...\))1000 4401 y(mode)j(:)i(Int) 1000 4500 y(node)e(:)i(Node)870 4600 y(raises)d(RuntimeException)870 4799 y(mkdir\(node...\))1000 4899 y(node)h(:)i(Node)870 4998 y(raises)d(RuntimeException)p eop end %%Page: 141 141 TeXDict begin 141 140 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.5.)63 b(FILESYSTEM)27 b(OPERA)-7 b(TIONS)1379 b Fs(141)415 515 y(The)24 b Fo(mkdir)e Fs(function)j(creates)d(a)i (directory)-7 b(,)23 b(or)g(a)h(set)g(of)g(directories.)34 b(The)24 b(follo)n(wing)291 615 y(options)j(are)f(supp)r(orted.)291 768 y Fq(-m)31 b(mo)s(de)40 b Fs(Sp)r(ecify)28 b(the)g(p)r(ermissions)f (of)h(the)g(created)e(directory)-7 b(.)291 927 y Fq(-p)41 b Fs(Create)27 b(paren)n(t)g(directories)f(if)i(they)g(do)f(not)h (exist.)291 1086 y Fq({)41 b Fs(In)n(terpret)27 b(the)h(remaining)e (names)i(literally)-7 b(.)291 1216 y @beginspecial @setspecial @endspecial 100 x Fk(10.5.2)112 b(Stat)291 1369 y @beginspecial @setspecial @endspecial 100 x Fs(The)24 b Fo(Stat)e Fs(ob)5 b(ject)24 b(represen)n(ts)e(an)i(information)f(ab)r(out)h(a)g (\014lesystem)f(no)r(de,)i(as)e(returned)291 1569 y(b)n(y)k(the)h Fo(stat)e Fs(and)h Fo(lstat)f Fs(functions.)37 b(It)28 b(con)n(tains)f(the)h(follo)n(wing)e(\014elds.)291 1734 y Fq(dev)41 b Fs(:)c(the)28 b(device)g(n)n(um)n(b)r(er.)291 1894 y Fq(ino)40 b Fs(:)d(the)28 b(ino)r(de)g(n)n(um)n(b)r(er.)291 2053 y Fq(kind)41 b Fs(:)53 b(the)36 b(kind)g(of)g(the)g(\014le,)i(one) d(of)h(the)g(follo)n(wing:)52 b Fo(REG)35 b Fs(\(regular)f(\014le\),)k Fo(DIR)d Fs(\(di-)498 2153 y(rectory\),)28 b Fo(CHR)g Fs(\(c)n(haracter)g(device\),)h Fo(BLK)f Fs(\(blo)r(c)n(k)h(device\),)h Fo(LNK)e Fs(\(sym)n(b)r(olic)g(link\),)498 2252 y Fo(FIFO)e Fs(\(named)i(pip)r(e\),)g Fo(SOCK)f Fs(\(so)r(c)n(k)n(et\).)291 2412 y Fq(p)s(erm)40 b Fs(:)d(access)27 b(righ)n(ts,)f(represen)n(ted)h (as)g(an)g(in)n(teger.)291 2571 y Fq(nlink)41 b Fs(:)c(n)n(um)n(b)r(er) 27 b(of)g(links.)291 2730 y Fq(uid)41 b Fs(:)c(user)27 b(id)g(of)h(the)g(o)n(wner.)291 2890 y Fq(gid)40 b Fs(:)d(group)27 b(id)h(of)f(the)h(\014le's)g(group.)291 3049 y Fq(rdev)42 b Fs(:)37 b(device)27 b(minor)g(n)n(um)n(b)r(er.)291 3208 y Fq(size)40 b Fs(:)d(size)28 b(in)g(b)n(ytes.)291 3368 y Fq(atime)40 b Fs(:)d(last)28 b(access)e(time,)i(as)f(a)g (\015oating)g(p)r(oin)n(t)h(n)n(um)n(b)r(er.)291 3527 y Fq(m)m(time)40 b Fs(:)d(last)27 b(mo)r(di\014cation)h(time,)g(as)f(a) g(\015oating)g(p)r(oin)n(t)g(n)n(um)n(b)r(er.)291 3686 y Fq(ctime)40 b Fs(:)d(last)28 b(status)f(c)n(hange)g(time,)h(as)f(a)g (\015oating)g(p)r(oin)n(t)g(n)n(um)n(b)r(er.)415 3852 y(Not)h(all)f(of)h(the)g(\014elds)f(will)h(ha)n(v)n(e)f(meaning)g(on)g (all)g(op)r(erating)g(systems.)291 3982 y @beginspecial @setspecial @endspecial 100 x Fk(10.5.3)112 b(stat,)37 b(lstat)291 4155 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 465 4235 a Fo($\(stat)k (node...\))f(:)j(Stat)596 4334 y(node)f(:)h(Node)f(or)g(Channel)465 4434 y($\(lstat)f(node...\))f(:)j(Stat)596 4534 y(node)f(:)h(Node)f(or) g(Channel)465 4633 y(raises)f(RuntimeException)415 4799 y Fs(The)26 b Fo(stat)f Fs(functions)h(return)f(\014le)i(information.) 35 b(If)27 b(the)f(\014le)g(is)g(a)g(sym)n(b)r(olic)f(link,)i(the)291 4899 y Fo(stat)f Fs(function)i(refers)f(to)g(the)i(destination)e(of)h (the)g(link;)g(the)g Fo(lstat)e Fs(function)i(refers)f(to)291 4998 y(the)h(link)f(itself.)p eop end %%Page: 142 142 TeXDict begin 142 141 bop 739 282 a @beginspecial @setspecial @endspecial Fs(142)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.5.4)112 b(unlink)739 569 y @beginspecial @setspecial @endspecial 870 669 a Fo($\(unlink)40 b(file...\))1000 768 y(file)i(:)i(File)870 868 y(#\(rm)e(file...\))1000 967 y(file)g(:)i(File)870 1067 y($\(rmdir)c(dir...\))1000 1167 y(dir)j(:)g(Dir)870 1266 y(raises)e(RuntimeException)863 1442 y Fs(The)30 b Fo(unlink)d Fs(and)i Fo(rm)g Fs(functions)h(remo)n(v)n(e)e(a)h (\014le.)43 b(The)29 b Fo(rmdir)f Fs(function)i(remo)n(v)n(es)e(a)739 1542 y(directory)-7 b(.)863 1642 y(The)28 b(follo)n(wing)f(options)g (are)f(supp)r(orted)i(for)f Fo(rm)g Fs(and)g Fo(rmdir)p Fs(.)739 1802 y Fq(-f)41 b Fs(ignore)27 b(nonexisten)n(t)g(\014les,)h (nev)n(er)e(prompt.)739 1966 y Fq(-i)41 b Fs(prompt)27 b(b)r(efore)g(remo)n(v)-5 b(al.)739 2129 y Fq(-r)42 b Fs(remo)n(v)n(e)25 b(the)j(con)n(ten)n(ts)f(of)h(directories)e (recursiv)n(ely)-7 b(.)739 2293 y Fq(-v)42 b Fs(explain)27 b(what)g(is)h(going)e(on.)739 2456 y Fq({)41 b Fs(the)28 b(rest)f(of)h(the)g(v)-5 b(alues)27 b(are)g(in)n(terpreted)g(literally) -7 b(.)739 2587 y @beginspecial @setspecial @endspecial 100 x Fk(10.5.5)112 b(rename)739 2741 y @beginspecial @setspecial @endspecial 913 2840 a Fo(rename\(old,)39 b(new\))1044 2940 y(old)j(:)i(Node)1044 3040 y(new)e(:)i(Node)913 3139 y(mv\(nodes...)39 b(dir\))1044 3239 y(nodes)j(:)h(Node)f(Sequence) 1044 3339 y(dir)130 b(:)43 b(Dir)913 3438 y(cp\(nodes...)c(dir\))1044 3538 y(nodes)j(:)h(Node)f(Sequence)1044 3637 y(dir)130 b(:)43 b(Dir)913 3737 y(raises)e(RuntimeException)863 3913 y Fs(The)30 b Fo(rename)e Fs(function)j(c)n(hanges)d(the)i(name)g (of)g(a)g(\014le)g(or)f(directory)g(named)h Fo(old)e Fs(to)739 4013 y Fo(new)p Fs(.)863 4112 y(The)j Fo(mv)e Fs(function)i(is)f(similar,)g(but)g(if)h Fo(new)e Fs(is)h(a)g (directory)-7 b(,)29 b(and)h(it)h(exists,)f(then)h(the)739 4212 y(\014les)24 b(sp)r(eci\014ed)h(b)n(y)f(the)h(sequence)f(are)g(mo) n(v)n(ed)g(in)n(to)g(the)h(directory)-7 b(.)34 b(If)25 b(not,)h(the)f(b)r(eha)n(vior)739 4312 y(of)30 b Fo(mv)f Fs(is)h(iden)n(tical)f(to)h Fo(rename)p Fs(.)41 b(The)30 b Fo(cp)f Fs(function)i(is)f(similar,)f(but)i(the)f(original)e(\014le)i (is)739 4411 y(not)d(remo)n(v)n(ed.)863 4511 y(The)h Fo(mv)f Fs(and)g Fo(cp)g Fs(functions)h(tak)n(e)f(the)h(follo)n(wing)f (options.)739 4672 y Fq(-f)41 b Fs(Do)28 b(not)g(prompt)f(b)r(efore)g (o)n(v)n(erwriting.)739 4835 y Fq(-i)41 b Fs(Prompt)27 b(b)r(efore)g(o)n(v)n(erwriting.)739 4998 y Fq(-v)42 b Fs(Explain)26 b(what)i(it)g(happ)r(ening.)p eop end %%Page: 143 143 TeXDict begin 143 142 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.5.)63 b(FILESYSTEM)27 b(OPERA)-7 b(TIONS)1379 b Fs(143)291 515 y Fq(-r)41 b Fs(Cop)n(y)27 b(the)h(con)n(ten)n(ts)f (of)g(directories)g(recursiv)n(ely)-7 b(.)291 685 y Fq({)41 b Fs(In)n(terpret)27 b(the)h(remaining)e(argumen)n(ts)h(literally)-7 b(.)291 822 y @beginspecial @setspecial @endspecial 101 x Fk(10.5.6)112 b(link)291 977 y @beginspecial @setspecial @endspecial 421 1078 a Fo(link\(src,)40 b(dst\))552 1177 y(src)i(:)i(Node)552 1277 y(dst)e(:)i(Node)421 1377 y(raises)d (RuntimeException)415 1563 y Fs(The)22 b Fo(link)f Fs(function)i (creates)e(a)h(hard)f(link)i(named)f Fo(dst)f Fs(to)h(the)g(\014le)h (or)e(directory)g Fo(src)p Fs(.)415 1664 y(Hard)27 b(links)h(ma)n(y)f (w)n(ork)f(under)h(Win32)g(when)h(NTFS)g(is)g(used.)415 1764 y(Normally)-7 b(,)27 b(only)g(the)h(sup)r(eruser)f(can)g(create)g (hard)g(links)g(to)h(directories.)291 1901 y @beginspecial @setspecial @endspecial 101 x Fk(10.5.7)112 b(symlink)291 2076 y @beginspecial @setspecial @endspecial 421 2157 a Fo(symlink\(src,)39 b(dst\))552 2256 y(src)j(:)i(Node)552 2356 y(dst)e(:)i(Node)421 2456 y(raises)d(RuntimeException)415 2642 y Fs(The)23 b Fo(symlink)d Fs(function)j(creates)f(a)g(sym)n(b)r (olic)g(link)h Fo(dst)f Fs(that)h(p)r(oin)n(ts)f(to)h(the)g Fo(src)f Fs(\014le.)415 2743 y(The)34 b(link)h(name)e(is)h(computed)h (relativ)n(e)e(to)h(the)g(target)g(directory)-7 b(.)55 b(F)-7 b(or)33 b(example,)291 2842 y(the)28 b(expression)e Fo($\(symlink)40 b(a/b,)h(c/d\))26 b Fs(creates)h(a)g(link)h(named)f Fo(c/d)43 b(->)f(../a/b)p Fs(.)415 2943 y(Sym)n(b)r(olic)33 b(links)f(are)f(not)i(supp)r(orted)f(in)h(Win32.)51 b(Consider)32 b(using)g(the)h Fo(ln-or-cp)291 3043 y(Shell)25 b Fs(alias)i(for)g (cross-platform)e(p)r(ortable)i(linking/cop)n(ying.)291 3184 y @beginspecial @setspecial @endspecial 96 x Fk(10.5.8)112 b(readlink)291 3334 y @beginspecial @setspecial @endspecial 421 3435 a Fo($\(readlink)40 b(node...\))g(:)j(Node)552 3535 y(node)f(:)h(Node)415 3721 y Fs(The)28 b Fo(readlink)c Fs(function)k(reads)f(the)h(v)-5 b(alue)27 b(of)h(a)f(sym)n(b)r(olic)g (link.)291 3858 y @beginspecial @setspecial @endspecial 101 x Fk(10.5.9)112 b(c)m(hmo)s(d)291 4013 y @beginspecial @setspecial @endspecial 421 4114 a Fo(chmod\(mode,)39 b(dst...\))552 4213 y(mode)j(:)h(Int)552 4313 y(dst)f(:)i(Node)e(or)g (Channel)421 4413 y(chmod\(mode)e(dst...\))552 4512 y(mode)i(:)h (String)552 4612 y(dst)f(:)i(Node)e(Sequence)421 4711 y(raises)f(RuntimeException)415 4898 y Fs(The)28 b Fo(chmod)d Fs(function)k(c)n(hanges)d(the)i(p)r(ermissions)e(of)i(the)g(targets.) 415 4998 y(Options:)p eop end %%Page: 144 144 TeXDict begin 144 143 bop 739 282 a @beginspecial @setspecial @endspecial Fs(144)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 515 y Fq(-v)42 b Fs(Explain)26 b(what)i(is)g(happ)r(ening.)739 670 y Fq(-r)42 b Fs(Change)26 b(\014les)i(and)f(directories)f(recursiv)n(ely) -7 b(.)739 825 y Fq(-f)41 b Fs(Con)n(tin)n(ue)28 b(on)f(errors.)739 979 y Fq({)41 b Fs(In)n(terpret)27 b(the)h(remaining)f(argumen)n(t)f (literally)-7 b(.)739 1107 y @beginspecial @setspecial @endspecial 100 x Fk(10.5.10)112 b(c)m(ho)m(wn)739 1260 y @beginspecial @setspecial @endspecial 870 1360 a Fo(chown\(uid,)39 b(gid,)j(node...\))1000 1460 y(uid)h(:)g(Int)1000 1559 y(gid)g(:)g(Int)1000 1659 y(node)f(:)i(Node)d(or)i(Channel)870 1758 y(chown\(uid,)c(node...\))1000 1858 y(uid)k(:)g(Int)1000 1958 y(node)f(:)i(Node)d(or)i(Channel)870 2057 y(raises)e (RuntimeException)863 2211 y Fs(The)30 b Fo(chown)e Fs(function)i(c)n (hanges)e(the)i(user)f(and)h(group)e(id)i(of)g(the)g(\014le.)43 b(If)30 b(the)g Fo(gid)e Fs(is)739 2311 y(not)f(sp)r(eci\014ed,)h(it)g (is)g(not)g(c)n(hanged.)35 b(If)28 b(either)g(id)g(is)f(-1,)g(that)h (id)g(is)f(not)h(c)n(hanged.)739 2439 y @beginspecial @setspecial @endspecial 100 x Fk(10.5.11)112 b(truncate)739 2592 y @beginspecial @setspecial @endspecial 870 2692 a Fo(truncate\(length)o(,)38 b(node...\))1044 2791 y(length)j(:)i(Int) 1044 2891 y(node)f(:)h(Node)f(or)h(Channel)870 2991 y(raises)e (RuntimeException)863 3145 y Fs(The)28 b Fo(truncate)c Fs(function)29 b(truncates)e(a)g(\014le)h(to)f(the)h(giv)n(en)f (length.)739 3272 y @beginspecial @setspecial @endspecial 100 x Fk(10.5.12)112 b(umask)739 3426 y @beginspecial @setspecial @endspecial 913 3526 a Fo($\(umask)41 b(mode\))g(:)j(Int) 1044 3625 y(mode)e(:)h(Int)913 3725 y(raises)e(RuntimeException)863 3879 y Fs(Sets)24 b(the)f(\014le)h(mo)r(de)f(creation)f(mask.)35 b(The)23 b(previous)f(mask)g(is)h(returned.)35 b(This)23 b(v)-5 b(alue)739 3979 y(is)27 b(not)h(scop)r(ed,)f(c)n(hanges)g(ha)n (v)n(e)f(global)g(e\013ect.)739 4115 y @beginspecial @setspecial @endspecial 133 x Fl(10.6)135 b(vmoun)l(t)739 4331 y @beginspecial @setspecial @endspecial 116 x Fk(10.6.1)112 b(vmoun)m(t)739 4500 y @beginspecial @setspecial @endspecial 913 4600 a Fo(vmount\(src,)39 b(dst\))1044 4700 y(src,)j(dst)g(:)h(Dir) 913 4799 y(vmount\(flags,)38 b(src,)k(dst\))1044 4899 y(flags)g(:)h(String)1044 4998 y(src,)f(dst)g(:)h(Dir)p eop end %%Page: 145 145 TeXDict begin 145 144 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.7.)63 b(FILE)27 b(PREDICA)-7 b(TES)1738 b Fs(145)415 515 y(\\Moun)n(t")32 b(the)h Fo(src)e Fs(directory)h(on)g (the)h Fo(dst)e Fs(directory)-7 b(.)51 b(This)33 b(is)f(a)h(virtual)f (moun)n(t,)291 615 y(c)n(hanging)g(the)i(b)r(eha)n(vior)e(of)i(the)g Fo($\(file)41 b(...\))32 b Fs(function.)56 b(When)34 b(the)g Fo($\(file)41 b(str\))291 715 y Fs(function)33 b(is)f(used,)i(the)f(resulting)f(\014le)h(is)g(tak)n(en)f(relativ)n(e)f (to)i(the)g Fo(src)e Fs(directory)g(if)j(the)291 814 y(\014le)27 b(exists.)37 b(Otherwise,)27 b(the)h(\014le)f(is)h(relativ) n(e)e(to)i(the)g(curren)n(t)e(directory)-7 b(.)415 915 y(The)26 b(main)f(purp)r(ose)g(of)g(the)h Fo(vmount)d Fs(function)j(is)f(to)g(supp)r(ort)h(m)n(ultiple)g(builds)f(with)291 1014 y(separate)h(con\014gurations)f(or)i(arc)n(hitectures.)415 1115 y(The)h(options)f(are)f(as)h(follo)n(ws.)291 1284 y Fq(l)41 b Fs(Create)26 b(sym)n(b)r(olic)h(links)h(to)f(\014les)h(in)g (the)g Fo(src)e Fs(directory)-7 b(.)291 1454 y Fq(c)42 b Fs(Cop)n(y)26 b(\014les)i(from)f(the)h Fo(src)e Fs(directory)-7 b(.)415 1623 y(Moun)n(t)28 b(op)r(erations)e(are)g(scop)r(ed.)291 1760 y @beginspecial @setspecial @endspecial 101 x Fk(10.6.2)112 b(add-pro)6 b(ject-directories)291 1935 y @beginspecial @setspecial @endspecial 465 2016 a Fo(add-project-dire)o(ct)o(ori)o(es) o(\(di)o(rs)o(\))596 2116 y(dirs)42 b(:)h(Dir)f(Array)415 2302 y Fs(Add)27 b(the)f(directories)f(to)h(the)g(set)g(of)g (directories)f(that)h(omak)n(e)f(considers)g(to)h(b)r(e)g(part)291 2402 y(of)d(the)g(pro)5 b(ject.)35 b(This)23 b(is)g(mainly)g(used)g(to) g(a)n(v)n(oid)f(omak)n(e)f(complaining)i(that)g(the)h(curren)n(t)291 2502 y(directory)i(is)h(not)h(part)f(of)h(the)g(pro)5 b(ject.)291 2638 y @beginspecial @setspecial @endspecial 101 x Fk(10.6.3)112 b(remo)m(v)m(e-pro)6 b(ject-directories)291 2813 y @beginspecial @setspecial @endspecial 465 2894 a Fo(remove-project-d)o(ir)o(ect)o(or)o(ies)o(\(d)o(irs)o(\))596 2994 y(dirs)42 b(:)h(Dir)f(Array)415 3181 y Fs(Remo)n(v)n(ed)27 b(the)h(directories)e(from)i(the)g(set)g(of)g(directories)e(that)i (omak)n(e)f(considers)f(to)291 3280 y(b)r(e)e(part)g(of)g(the)h(pro)5 b(ject.)35 b(This)24 b(is)h(mainly)f(used)g(to)g(cancel)g(a)g Fo(.SUBDIRS)d Fs(from)j(including)291 3380 y(a)j(directory)f(if)i(it)g (is)g(determined)f(that)h(the)g(directory)f(do)r(es)g(not)g(need)h(to)g (b)r(e)g(compiled.)291 3526 y @beginspecial @setspecial @endspecial 134 x Fl(10.7)135 b(File)46 b(predicates)291 3766 y @beginspecial @setspecial @endspecial 94 x Fk(10.7.1)112 b(test)291 3915 y @beginspecial @setspecial @endspecial 421 4015 a Fo(test\(exp\))40 b(:)j(Bool)552 4115 y(exp)f(:)i(String)d (Sequence)415 4302 y Fs(The)28 b Fi(expr)l(ession)34 b Fs(grammar)26 b(is)h(as)g(follo)n(ws:)415 4488 y Fj(\017)41 b Fo(!)27 b Fi(expr)l(ession)35 b Fs(:)i Fi(expr)l(ession)e Fs(is)27 b(not)h(true)415 4658 y Fj(\017)41 b Fi(expr)l(ession1)f Fo(-a)27 b Fi(expr)l(ession2)40 b Fs(:)d(b)r(oth)28 b(expressions)e (are)g(true)415 4828 y Fj(\017)41 b Fi(expr)l(ession1)f Fo(-o)27 b Fi(expr)l(ession2)40 b Fs(:)d(at)27 b(least)g(one)h (expression)e(is)h(true)415 4998 y Fj(\017)41 b Fo(\()27 b Fi(expr)l(ession)35 b Fo(\))27 b Fs(:)37 b Fi(expr)l(ession)e Fs(is)27 b(true)p eop end %%Page: 146 146 TeXDict begin 146 145 bop 739 282 a @beginspecial @setspecial @endspecial Fs(146)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)863 515 y Fs(The)28 b(base)f(expressions)f(are:)863 700 y Fj(\017)41 b Fo(-n)27 b Fi(string)35 b Fs(:)i(The)28 b Fi(string)35 b Fs(has)27 b(nonzero)f(length)863 868 y Fj(\017)41 b Fo(-z)27 b Fi(string)35 b Fs(:)i(The)28 b Fi(string)35 b Fs(has)27 b(zero)f(length)863 1036 y Fj(\017)41 b Fi(string)35 b Fo(=)28 b Fi(string)34 b Fs(:)j(The)28 b(strings)f(are)f(equal)863 1204 y Fj(\017)41 b Fi(string)35 b Fo(!=)27 b Fi(string)35 b Fs(:)i(The)28 b(strings)e(are)h(not)h(equal)863 1372 y Fj(\017)41 b Fi(int1)f Fo(-eq)26 b Fi(int2)39 b Fs(:)e(The)28 b(in)n(tegers)e(are)h(equal)863 1540 y Fj(\017)41 b Fi(int1)f Fo(-ne)26 b Fi(int2)39 b Fs(:)e(The)28 b(in)n(tegers)e(are)h(not)g (equal)863 1708 y Fj(\017)41 b Fi(int1)f Fo(-gt)26 b Fi(int2)39 b Fs(:)e Fi(int1)i Fs(is)28 b(larger)d(than)j Fi(int2)863 1876 y Fj(\017)41 b Fi(int1)f Fo(-ge)26 b Fi(int2)39 b Fs(:)e Fi(int2)i Fs(is)28 b(not)f(larger)f(than)i Fi(int1)863 2044 y Fj(\017)41 b Fi(int1)f Fo(-lt)26 b Fi(int2)39 b Fs(:)e Fi(int1)i Fs(is)28 b(smaller)e(than)i Fi(int2)863 2212 y Fj(\017)41 b Fi(int1)f Fo(-le)26 b Fi(int2)39 b Fs(:)e Fi(int1)i Fs(is)28 b(not)f(larger)f(than)i Fi(int2)863 2379 y Fj(\017)41 b Fi(\014le1)g Fo(-ef)27 b Fi(\014le2)40 b Fs(:)e(On)29 b(Unix,)g Fi(\014le1)40 b Fs(and)28 b Fi(\014le2)40 b Fs(ha)n(v)n(e)27 b(the)i(same)f(device)g (and)g(ino)r(de)946 2479 y(n)n(um)n(b)r(er.)37 b(On)27 b(Win32,)h Fi(\014le1)39 b Fs(and)28 b Fi(\014le2)39 b Fs(ha)n(v)n(e)26 b(the)i(same)f(name.)863 2647 y Fj(\017)41 b Fi(\014le1)f Fo(-nt)26 b Fi(\014le2)40 b Fs(:)d Fi(\014le1)i Fs(is)28 b(new)n(er)e(than)i Fi(\014le2)863 2815 y Fj(\017)41 b Fi(\014le1)f Fo(-ot)26 b Fi(\014le2)40 b Fs(:)d Fi(\014le1)i Fs(is)28 b(older)e(than)i Fi(\014le2)863 2983 y Fj(\017)41 b Fo(-b)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(is)f(a)g(blo)r(c)n (k)g(sp)r(ecial)h(\014le)863 3151 y Fj(\017)41 b Fo(-c)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(is)f(a)g(c)n(haracter)f(sp)r (ecial)h(\014le)863 3319 y Fj(\017)41 b Fo(-d)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(is)f(a)g(directory)863 3487 y Fj(\017)41 b Fo(-e)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(exists)863 3655 y Fj(\017)41 b Fo(-f)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(is)f(a)g(normal)g(\014le)863 3823 y Fj(\017)41 b Fo(-g)27 b Fi(\014le)34 b Fs(:)j(The)28 b(set)p Fo(-group-id)c Fs(bit)k(is)f(set)h(on)f(the)h(\014le)863 3991 y Fj(\017)41 b Fo(-G)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le's)f(group)g(is)g(the)h(curren)n(t)f(e\013ectiv)n(e)h(group)863 4159 y Fj(\017)41 b Fo(-h)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(is)f(a)g(sym)n(b)r(olic)g(link)h(\(also)f Fo(-L)p Fs(\))863 4327 y Fj(\017)41 b Fo(-k)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le's)f(stic)n(ky)g(bit)i(is)e(set)863 4495 y Fj(\017)41 b Fo(-L)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(is)f(a)g(sym)n(b)r(olic)g(link)h(\(also)f Fo(-h)p Fs(\))863 4663 y Fj(\017)41 b Fo(-O)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le's)f(o)n(wner)g(is)g(the)h(curren)n(t)f (e\013ectiv)n(e)h(user)863 4831 y Fj(\017)41 b Fo(-p)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(is)f(a)g(named)h(pip)r(e)863 4998 y Fj(\017)41 b Fo(-r)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)g(is)f(readable)p eop end %%Page: 147 147 TeXDict begin 147 146 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.7.)63 b(FILE)27 b(PREDICA)-7 b(TES)1738 b Fs(147)415 515 y Fj(\017)41 b Fo(-s)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)f(is)h(empt)n(y)415 675 y Fj(\017)41 b Fo(-S)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)f(is)h(a)f(so)r(c)n (k)n(et)415 835 y Fj(\017)41 b Fo(-u)27 b Fi(\014le)34 b Fs(:)j(The)28 b(set)p Fo(-user-id)c Fs(bit)k(is)g(set)f(on)g(the)h (\014le)415 995 y Fj(\017)41 b Fo(-w)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)f(is)h(writable)415 1155 y Fj(\017)41 b Fo(-x)27 b Fi(\014le)34 b Fs(:)j(The)28 b(\014le)f(is)h(executable) 415 1323 y(A)g Fi(string)35 b Fs(is)27 b(an)n(y)g(sequence)g(of)h(c)n (haracters;)d(leading)i Fo(-)g Fs(c)n(haracters)f(are)g(allo)n(w)n(ed.) 415 1423 y(An)k Fi(int)38 b Fs(is)30 b(a)f Fi(string)37 b Fs(that)30 b(can)g(b)r(e)g(in)n(terpreted)f(as)h(an)f(in)n(teger.)43 b(Unlik)n(e)30 b(traditional)291 1522 y(v)n(ersions)e(of)i(the)g(test)g (program,)f(the)h(leading)f(c)n(haracters)f(ma)n(y)h(sp)r(ecify)h(an)g (arit)n(y)-7 b(.)43 b(The)291 1622 y(pre\014x)32 b Fo(0b)g Fs(means)g(the)h(n)n(um)n(b)r(ers)f(is)h(in)g(binary;)h(the)f(pre\014x) f Fo(0o)g Fs(means)h(the)g(n)n(um)n(b)r(er)f(is)291 1722 y(in)27 b(o)r(ctal;)f(the)h(pre\014x)g Fo(0x)f Fs(means)g(the)h(n)n(um) n(b)r(er)g(is)f(in)h(hexadecimal.)36 b(An)27 b Fi(int)35 b Fs(can)26 b(also)g(b)r(e)291 1821 y(sp)r(eci\014ed)h(as)g Fo(-l)g Fi(string)p Fs(,)h(whic)n(h)f(ev)-5 b(aluates)27 b(to)h(the)g(length)f(of)h(the)g Fi(string)p Fs(.)415 1921 y(A)g Fi(\014le)34 b Fs(is)28 b(a)f Fi(string)35 b Fs(that)27 b(represen)n(ts)g(the)h(name)f(of)h(a)f(\014le.)415 2020 y(The)40 b(syn)n(tax)f(mirrors)f(that)i(of)g(the)g Fo(test)p Fs(\(1\))e(program.)72 b(If)40 b(y)n(ou)f(are)g(on)g(a)h (Unix)291 2120 y(system,)27 b(the)h(man)f(page)g(explains)g(more.)36 b(Here)28 b(are)e(some)h(examples.)465 2288 y Fo(#)43 b(Create)e(an)i(empty)e(file)465 2387 y(osh>)h(touch)f(foo)465 2487 y(#)i(Is)g(the)f(file)g(empty?)465 2587 y(osh>)g(test\(-e)f(foo\)) 465 2686 y(-)i(:)g(true)465 2786 y(osh>)f(test\(!)f(-e)i(foo\))465 2885 y(-)g(:)g(false)465 2985 y(#)g(Create)e(another)g(file)465 3085 y(osh>)h(touch)f(boo)465 3184 y(#)i(Is)g(the)f(newer)g(file)g (newer?)465 3284 y(osh>)g(test\(boo)e(-nt)i(foo\))465 3384 y(-)h(:)g(true)465 3483 y(#)g(A)g(more)f(complex)f(query)465 3583 y(#)i(boo)f(is)h(newer)f(than)g(foo,)g(and)g(foo)g(is)h(empty)465 3682 y(osh>)f(test\(\\\()f(boo)h(-nt)g(foo)h(\\\))f(-a)h(-e)g(foo\))465 3782 y(-)g(:)g(true)291 3896 y @beginspecial @setspecial @endspecial 116 x Fk(10.7.2)112 b(\014nd)291 4065 y @beginspecial @setspecial @endspecial 421 4165 a Fo(find\(exp\))40 b(:)j(Node)f(Array)552 4265 y(exp)g(:)i(String)d(Sequence)415 4432 y Fs(The)c Fo(find)e Fs(function)i(searc)n(hes)e(a)i(directory)e (recursiv)n(ely)-7 b(,)38 b(returning)e(the)h(\014les)f(for)291 4532 y(whic)n(h)27 b(the)h(expression)e(ev)-5 b(aluates)27 b(to)h(true.)415 4632 y(The)k(expression)e(argumen)n(t)h(uses)h(the)g (same)f(syn)n(tax)g(as)g(the)i Fo(test)d Fs(function,)j(with)291 4731 y(the)28 b(follo)n(wing)e(exceptions.)291 4785 y @beginspecial @setspecial @endspecial 392 4899 a(1.)41 b(The)32 b(expression)e(ma)n(y)h(b)r(egin)g(with)i(a)e(directory)-7 b(.)47 b(If)32 b(not)g(sp)r(eci\014ed,)h(the)f(curren)n(t)498 4998 y(directory)26 b(is)i(searc)n(hed.)p eop end %%Page: 148 148 TeXDict begin 148 147 bop 739 282 a @beginspecial @setspecial @endspecial Fs(148)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 840 515 a Fs(2.)41 b(The)28 b Fo({})f Fs(string)g(expands)g(to)g(the)h(curren)n(t)f(\014le)h(b)r (eing)g(examined.)863 705 y(The)j(syn)n(tax)e(of)i(the)f(expression)f (is)i(the)f(same)g(as)g Fo(test)p Fs(,)g(with)h(the)f(follo)n(wing)g (addi-)739 804 y(tions.)863 993 y Fj(\017)41 b Fo(-name)e Fi(string)48 b Fs(:)64 b(The)40 b(curren)n(t)g(\014le)h(matc)n(hes)f (the)i(glob)e(expression)f(\(see)i(Sec-)946 1093 y(tion)28 b @beginspecial @setspecial @endspecial(10.4)p @beginspecial @setspecial @endspecial(\).)863 1266 y Fj(\017)41 b Fo(-regex)26 b Fi(string)35 b Fs(:)h(The)28 b(curren)n(t)f(\014le)h(matc)n(hes)f (the)h(regular)d(expression)863 1455 y(The)31 b Fo(find)d Fs(function)j(p)r(erforms)f(a)f(recursiv)n(e)g(scan)g(of)i(all)f(sub)r (directories.)43 b(The)31 b(fol-)739 1554 y(lo)n(wing)26 b(call)i(is)f(b)r(eing)h(run)f(from)h(the)g(ro)r(ot)e(of)i(the)g Fo(omake)e Fs(source)g(directory)-7 b(.)913 1745 y Fo(osh>)42 b(find\(.)f(-name)h(fo*)g(\))913 1845 y(-)h(:)h()863 2433 y Fs(Another)34 b(example,)g(listing)g(only)f(those)g (\014les)g(that)h(are)e(normal)h(\014les)g(or)g(sym)n(b)r(olic)739 2532 y(links.)913 2723 y Fo(osh>)42 b(find\(.)f(-name)h(fo*)g(-a)h (\\\()g(-f)f({})h(-o)g(-L)g({})f(\\\)\))913 2823 y(-)h(:)h()739 3372 y @beginspecial @setspecial @endspecial 133 x Fl(10.8)135 b(IO)45 b(functions)739 3588 y @beginspecial @setspecial @endspecial 118 x Fk(10.8.1)112 b(Standard)39 b(c)m(hannels)739 3862 y Fs(The)28 b(follo)n(wing)e(v)-5 b(ariables)26 b(de\014ne)i(the)g(standard)f(c)n(hannels.)739 4002 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(stdin)739 4259 y Fo(stdin)41 b(:)j(InChannel)863 4430 y Fs(The)28 b(standard)f(input)h(c)n(hannel,)f (op)r(en)h(for)f(reading.)739 4570 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(stdout)739 4828 y Fo(stdout)41 b(:)i(OutChannel)863 4998 y Fs(The)28 b(standard)f(output)h(c)n(hannel,)f(op)r(en)h(for)f (writing.)p eop end %%Page: 149 149 TeXDict begin 149 148 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.8.)63 b(IO)27 b(FUNCTIONS)1881 b Fs(149)291 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(stderr)291 672 y Fo(stderr)41 b(:)i(OutChannel)415 828 y Fs(The)28 b(standard)e(error)g(c)n(hannel,)h (op)r(en)h(for)f(writing.)291 958 y @beginspecial @setspecial @endspecial 100 x Fk(10.8.2)112 b(op)s(en-in-string)291 1131 y @beginspecial @setspecial @endspecial 81 x Fs(The)32 b Fo(open-in-string)27 b Fs(treats)k(a)h(string)g(as)g(if)h(it)g(w)n (ere)e(a)h(\014le)h(and)f(returns)f(a)h(c)n(hannel)291 1311 y(for)27 b(reading.)421 1482 y Fo($\(open-in-string)37 b(s\))43 b(:)g(Channel)596 1581 y(s)g(:)g(String)291 1714 y @beginspecial @setspecial @endspecial 98 x Fk(10.8.3)112 b(op)s(en-out-string,)39 b(out-con)m(ten)m(ts)291 1885 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fs(The)24 b Fo(open-out-string)17 b Fs(creates)23 b(a)h(c)n(hannel)f(that)h(writes)g(to)g(a)f(string)g (instead)h(of)g(a)g(\014le.)291 2065 y(The)j(string)g(ma)n(y)g(b)r(e)h (retriev)n(ed)e(with)j(the)f Fo(out-contents)22 b Fs(function.)421 2235 y Fo($\(open-out-string)o(\))37 b(:)44 b(Channel)421 2335 y($\(out-contents)38 b(chan\))k(:)h(String)596 2434 y(chan)f(:)h(OutChannel)291 2548 y @beginspecial @setspecial @endspecial 117 x Fk(10.8.4)112 b(fop)s(en)291 2738 y @beginspecial @setspecial @endspecial 80 x Fs(The)27 b Fo(fopen)f Fs(function)i(op)r(ens)f(a)h(\014le)f(for)g(reading)g(or)g (writing.)421 2988 y Fo($\(fopen)41 b(file,)h(mode\))f(:)i(Channel)552 3088 y(file)f(:)h(File)552 3188 y(mode)f(:)h(String)415 3358 y Fs(The)31 b Fo(file)d Fs(is)j(the)f(name)g(of)h(the)g(\014le)f (to)g(b)r(e)h(op)r(ened.)45 b(The)31 b Fo(mode)e Fs(is)h(a)g(com)n (bination)291 3458 y(of)d(the)h(follo)n(wing)f(c)n(haracters.)291 3614 y Fq(r)41 b Fs(Op)r(en)28 b(the)g(\014le)g(for)f(reading;)f(it)i (is)g(an)f(error)f(if)i(the)g(\014le)g(do)r(es)f(not)h(exist.)291 3775 y Fq(w)41 b Fs(Op)r(en)28 b(the)g(\014le)f(for)h(writing;)f(the)h (\014le)g(is)f(created)g(if)h(it)g(do)r(es)f(not)h(exist.)291 3937 y Fq(a)41 b Fs(Op)r(en)28 b(the)g(\014le)g(in)g(app)r(end)g(mo)r (de;)f(the)h(\014le)g(is)g(created)e(if)j(it)f(do)r(es)f(not)g(exist.) 291 4098 y Fq(+)41 b Fs(Op)r(en)28 b(the)g(\014le)g(for)f(b)r(oth)h (reading)e(and)i(writing.)291 4259 y Fq(t)41 b Fs(Op)r(en)28 b(the)g(\014le)g(in)g(text)f(mo)r(de)h(\(default\).)291 4420 y Fq(b)41 b Fs(Op)r(en)28 b(the)g(\014le)g(in)f(binary)g(mo)r(de.) 291 4581 y Fq(n)41 b Fs(Op)r(en)28 b(the)g(\014le)g(in)f(non)n(blo)r(c) n(king)g(mo)r(de.)291 4743 y Fq(x)41 b Fs(F)-7 b(ail)28 b(if)g(the)g(\014le)g(already)e(exists.)415 4899 y(Binary)18 b(mo)r(de)i(is)f(not)h(signi\014can)n(t)e(on)h(Unix)h(systems,)h(where) d(text)i(and)f(binary)g(mo)r(des)291 4998 y(are)26 b(equiv)-5 b(alen)n(t.)p eop end %%Page: 150 150 TeXDict begin 150 149 bop 739 282 a @beginspecial @setspecial @endspecial Fs(150)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.8.5)112 b(close)739 569 y @beginspecial @setspecial @endspecial 913 669 a Fo($\(close)41 b(channel...\))1044 768 y(channel)g(:)i(Channel)863 932 y Fs(The)28 b Fo(close)e Fs(function)i(closes)e(a)i(\014le)f(that)h (w)n(as)f(previously)f(op)r(ened)i(with)g Fo(fopen)p Fs(.)739 1064 y @beginspecial @setspecial @endspecial 98 x Fk(10.8.6)112 b(read,)39 b(input-line)739 1235 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 870 1315 a Fo($\(read)i(channel,)f(amount\))h(:)i(String) 870 1414 y($\(input-line)38 b(channel\))j(:)i(String)1000 1514 y(channel)e(:)i(InChannel)1000 1614 y(amount)85 b(:)43 b(Int)870 1713 y(raises)e(RuntimeException)863 1878 y Fs(The)c Fo(read)d Fs(function)j(reads)e(up)h(to)g Fo(amount)e Fs(b)n(ytes)i(from)g(an)g(input)h(c)n(hannel,)g(and)739 1977 y(returns)e(the)i(data)e(that)h(w)n(as)f(read.)61 b(The)36 b Fo(input-line)c Fs(function)37 b(reads)e(a)g(line)i(from)739 2077 y(the)29 b(\014le)g(and)g(returns)f(the)h(line)g(read,)g(without)g (the)g(line)g(terminator.)40 b(If)29 b(an)g(end-of-\014le)739 2176 y(condition)e(is)h(reac)n(hed,)e(b)r(oth)i(functions)g(raise)f(a)g Fo(RuntimeExceptio)o(n)22 b Fs(exception.)739 2308 y @beginspecial @setspecial @endspecial 98 x Fk(10.8.7)112 b(write)739 2459 y @beginspecial @setspecial @endspecial 870 2559 a Fo($\(write)40 b(channel,)h(buffer,)f(offset,)h(amount\))g (:)i(String)1000 2659 y(channel)e(:)i(OutChannel)1000 2758 y(buffer)85 b(:)43 b(String)1000 2858 y(offset)85 b(:)43 b(Int)1000 2957 y(amount)85 b(:)43 b(Int)870 3057 y($\(write)d(channel,)h(buffer\))f(:)j(String)1000 3157 y(channel)e(:)i(OutChannel)1000 3256 y(buffer)85 b(:)43 b(String)870 3356 y(raises)e(RuntimeException)863 3520 y Fs(In)23 b(the)h(4-argumen)n(t)d(form,)i(the)g Fo(write)e Fs(function)j(writes)e(b)n(ytes)h(to)f(the)i(output)f(c)n(han-)739 3620 y(nel)j Fo(channel)d Fs(from)j(the)g Fo(buffer)p Fs(,)e(starting)h(at)g(p)r(osition)h Fo(offset)p Fs(.)34 b(Up)26 b(to)g Fo(amount)e Fs(b)n(ytes)739 3719 y(are)i(written.)38 b(The)27 b(function)h(returns)f(the)h(n)n(um)n(b)r(er)g(of)f(b)n(ytes)g (that)h(w)n(ere)f(written.)863 3819 y(The)h(3-argumen)n(t)e(form)h(is)h (similar,)e(but)j(the)f Fo(offset)d Fs(is)i(0.)863 3919 y(In)e(the)f(2-argumen)n(t)e(form,)j(the)f Fo(offset)e Fs(is)i(0,)g(and)g(the)h Fo(amount)d Fs(if)i(the)h(length)f(of)g(the) 739 4018 y Fo(buffer)p Fs(.)863 4118 y(If)c(an)g(end-of-\014le)f (condition)g(is)h(reac)n(hed,)f(the)h(function)h(raises)d(a)h Fo(RuntimeException)739 4218 y Fs(exception.)739 4347 y @beginspecial @setspecial @endspecial 100 x Fk(10.8.8)112 b(lseek)739 4500 y @beginspecial @setspecial @endspecial 913 4600 a Fo($\(lseek)41 b(channel,)f(offset,)h(whence\))g(:)i(Int) 1044 4700 y(channel)e(:)i(Channel)1044 4799 y(offset)85 b(:)43 b(Int)1044 4899 y(whence)85 b(:)43 b(String)913 4998 y(raises)e(RuntimeException)p eop end %%Page: 151 151 TeXDict begin 151 150 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.8.)63 b(IO)27 b(FUNCTIONS)1881 b Fs(151)415 515 y(The)28 b Fo(lseek)d Fs(function)j(rep)r(ositions)f(the)g (o\013set)h(of)f(the)h(c)n(hannel)f Fo(channel)e Fs(according)291 615 y(to)i(the)h Fo(whence)d Fs(directiv)n(e,)i(as)g(follo)n(ws:)291 780 y Fq(SEEK)p 551 780 29 4 v 33 w(SET)42 b Fs(The)28 b(o\013set)f(is)h(set)f(to)h Fo(offset)p Fs(.)291 939 y Fq(SEEK)p 551 939 V 33 w(CUR)42 b Fs(The)27 b(o\013set)h(is)f(set)h (to)g(its)f(curren)n(t)g(p)r(osition)g(plus)h Fo(offset)d Fs(b)n(ytes.)291 1098 y Fq(SEEK)p 551 1098 V 33 w(END)41 b Fs(The)28 b(o\013set)g(is)f(set)h(to)f(the)h(size)f(of)h(the)g (\014le)g(plus)g Fo(offset)d Fs(b)n(ytes.)415 1263 y(The)j Fo(lseek)d Fs(function)k(returns)d(the)i(new)g(p)r(osition)f(in)h(the)g (\014le.)291 1393 y @beginspecial @setspecial @endspecial 100 x Fk(10.8.9)112 b(rewind)291 1546 y @beginspecial @setspecial @endspecial 421 1646 a Fo(rewind\(channel...)o(\))552 1746 y(channel)41 b(:)i(Channel)415 1911 y Fs(The)24 b Fo(rewind)e Fs(function)i(set)g(the)g(curren)n(t)f(\014le)h(p)r (osition)g(to)g(the)g(b)r(eginning)g(of)f(the)i(\014le.)291 2040 y @beginspecial @setspecial @endspecial 100 x Fk(10.8.10)112 b(tell)291 2194 y @beginspecial @setspecial @endspecial 465 2293 a Fo($\(tell)41 b(channel...\))e(:)k(Int...)596 2393 y(channel)d(:)k(Channel)465 2493 y(raises)d(RuntimeException)415 2658 y Fs(The)28 b Fo(tell)e Fs(function)i(returns)f(the)h(curren)n(t)f (p)r(osition)g(of)h(the)g Fo(channel)p Fs(.)291 2787 y @beginspecial @setspecial @endspecial 100 x Fk(10.8.11)112 b(\015ush)291 2941 y @beginspecial @setspecial @endspecial 421 3040 a Fo($\(flush)41 b(channel...\))552 3140 y(channel)g(:)i (OutChannel)415 3305 y Fs(The)31 b Fo(flush)e Fs(function)i(can)g(b)r (e)g(used)g(only)g(on)f(\014les)h(that)g(are)f(op)r(en)h(for)f (writing.)47 b(It)291 3405 y(\015ushes)27 b(all)g(p)r(ending)h(data)f (to)h(the)g(\014le.)291 3534 y @beginspecial @setspecial @endspecial 100 x Fk(10.8.12)112 b(c)m(hannel-name)291 3688 y @beginspecial @setspecial @endspecial 421 3787 a Fo($\(channel-name)38 b(channel...\))h(:)k(String)552 3887 y(channel)e(:)i(Channel)415 4052 y Fs(The)36 b Fo(channel-name)30 b Fs(function)36 b(returns)f(the)h(name)f(that)h(is)f(asso)r(ciated)g (with)h(the)291 4152 y(c)n(hannel.)291 4265 y @beginspecial @setspecial @endspecial 116 x Fk(10.8.13)112 b(dup)291 4454 y @beginspecial @setspecial @endspecial 465 4534 a Fo($\(dup)41 b(channel\))g(:)i(Channel)596 4634 y(channel)d(:)k (Channel)465 4734 y(raises)d(RuntimeException)415 4899 y Fs(The)e Fo(dup)e Fs(function)i(returns)f(a)h(new)f(c)n(hannel)g (referencing)g(the)h(same)f(\014le)h(as)f(the)291 4998 y(argumen)n(t.)p eop end %%Page: 152 152 TeXDict begin 152 151 bop 739 282 a @beginspecial @setspecial @endspecial Fs(152)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.8.14)112 b(dup2)739 591 y @beginspecial @setspecial @endspecial 870 675 a Fo(dup2\(channel1,)37 b(channel2\))1000 775 y(channel1)k(:)i(Channel) 1000 874 y(channel2)e(:)i(Channel)870 974 y(raises)e(RuntimeException) 863 1171 y Fs(The)28 b Fo(dup2)e Fs(function)i(causes)f Fo(channel2)d Fs(to)k(refer)f(to)g(the)h(same)f(\014le)h(as)f Fo(channel1)p Fs(.)739 1321 y @beginspecial @setspecial @endspecial 101 x Fk(10.8.15)112 b(set-non)m(blo)s(c)m(k)739 1479 y @beginspecial @setspecial @endspecial 870 1582 a Fo(set-nonblock-mo)o(de\()o(mo)o(de,)37 b(channel...\))1000 1682 y(channel)k(:)i(Channel)1000 1781 y(mode)f(:)i(String)863 1978 y Fs(The)c Fo(set-nonblock-mo)o(de)33 b Fs(function)40 b(sets)f(the)g(non)n(blo)r(c)n(king)f(\015ag)h(on)f(the)i(giv)n(en)739 2078 y(c)n(hannel.)51 b(When)33 b(IO)f(is)g(p)r(erformed)g(on)g(the)h (c)n(hannel,)g(and)f(the)h(op)r(eration)e(cannot)h(b)r(e)739 2178 y(completed)c(immediately)-7 b(,)27 b(the)h(op)r(erations)f (raises)f(a)h Fo(RuntimeException)o Fs(.)739 2328 y @beginspecial @setspecial @endspecial 101 x Fk(10.8.16)112 b(set-close-on-exec-mo)s (de)739 2486 y @beginspecial @setspecial @endspecial 870 2589 a Fo(set-close-on-ex)o(ec-)o(mo)o(de\()o(mo)o(de)o(,)38 b(channel...\))1000 2689 y(channel)j(:)i(Channel)1000 2788 y(mode)f(:)i(String)870 2888 y(raises)d(RuntimeException)863 3085 y Fs(The)31 b Fo(set-close-on-exe)o(c-m)o(od)o(e)25 b Fs(function)31 b(sets)f(the)h(close-on-exec)d(\015ags)i(for)g(the)739 3184 y(giv)n(en)g(c)n(hannels.)46 b(If)31 b(the)h(close-on-exec)c (\015ag)i(is)h(set,)h(the)f(c)n(hannel)g(is)g(not)f(inherited)i(b)n(y) 739 3284 y(c)n(hild)c(pro)r(cesses.)35 b(Otherwise)27 b(it)h(is.)739 3432 y @beginspecial @setspecial @endspecial 103 x Fk(10.8.17)112 b(pip)s(e)739 3611 y @beginspecial @setspecial @endspecial 870 3695 a Fo($\(pipe\))40 b(:)k(Pipe)870 3795 y(raises)d(RuntimeException)863 3992 y Fs(The)34 b Fo(pipe)e Fs(function)i(creates)f(a)g Fo(Pipe)f Fs(ob)5 b(ject,)35 b(whic)n(h)f(has)f(t)n(w)n(o)g(\014elds.)55 b(The)34 b Fo(read)739 4091 y Fs(\014eld)f(is)g(a)f(c)n(hannel)h(that)g (is)f(op)r(ened)h(for)g(reading,)g(and)f(the)i Fo(write)c Fs(\014eld)k(is)e(a)h(c)n(hannel)739 4191 y(that)28 b(is)f(op)r(ened)h (for)f(writing.)739 4339 y @beginspecial @setspecial @endspecial 103 x Fk(10.8.18)112 b(mk\014fo)739 4499 y @beginspecial @setspecial @endspecial 870 4602 a Fo(mkfifo\(mode,)38 b(node...\))1000 4702 y(mode)k(:)i(Int)1000 4802 y(node)e(:)i(Node)863 4998 y Fs(The)28 b Fo(mkfifo)d Fs(function)j(creates)f(a)g(named)h(pip) r(e.)p eop end %%Page: 153 153 TeXDict begin 153 152 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.8.)63 b(IO)27 b(FUNCTIONS)1881 b Fs(153)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.8.19)112 b(select)291 577 y @beginspecial @setspecial @endspecial 421 685 a Fo($\(select)41 b(rfd...,)f(wfd...,)h(wfd...,)g(timeout\))f (:)j(Select)552 785 y(rfd)f(:)i(InChannel)552 884 y(wfd)e(:)i (OutChannel)552 984 y(efd)e(:)i(Channel)552 1084 y(timeout)d(:)i(float) 421 1183 y(raises)e(RuntimeException)415 1402 y Fs(The)26 b Fo(select)e Fs(function)j(p)r(olls)f(for)g(p)r(ossible)f(IO)h(on)g(a) g(set)g(of)g(c)n(hannels.)36 b(The)26 b Fo(rfd)f Fs(are)291 1501 y(a)k(sequence)g(of)h(c)n(hannels)f(for)g(reading,)g Fo(wfd)f Fs(are)h(a)g(sequence)h(of)f(c)n(hannels)g(for)g(writing,)291 1601 y(and)i Fo(efd)g Fs(are)f(a)i(sequence)f(of)h(c)n(hannels)f(to)g (p)r(oll)h(for)f(error)f(conditions.)49 b(The)32 b Fo(timeout)291 1701 y Fs(sp)r(eci\014es)27 b(the)h(maxim)n(um)f(amoun)n(t)h(of)f(time) h(to)g(w)n(ait)f(for)g(ev)n(en)n(ts.)415 1809 y(On)e(successful)f (return,)h Fo(select)d Fs(returns)i(a)h Fo(Select)d Fs(ob)5 b(ject,)25 b(whic)n(h)g(has)f(the)h(follo)n(w-)291 1909 y(ing)i(\014elds:)291 2102 y Fq(read)42 b Fs(An)28 b(arra)n(y)d(of)i(c) n(hannels)g(a)n(v)-5 b(ailable)27 b(for)g(reading.)291 2304 y Fq(write)41 b Fs(An)28 b(arra)n(y)d(of)j(c)n(hannels)e(a)n(v)-5 b(ailable)27 b(for)g(writing.)291 2505 y Fq(error)42 b Fs(An)28 b(arra)n(y)d(of)i(c)n(hannels)g(on)h(whic)n(h)f(an)g(error)f (has)h(o)r(ccurred.)291 2676 y @beginspecial @setspecial @endspecial 109 x Fk(10.8.20)112 b(lo)s(c)m(kf)291 2847 y @beginspecial @setspecial @endspecial 465 2955 a Fo(lockf\(channel,) 38 b(command,)i(len\))596 3055 y(channel)g(:)k(Channel)596 3154 y(command)c(:)k(String)596 3254 y(len)e(:)h(Int)465 3354 y(raises)e(RuntimeException)415 3572 y Fs(The)35 b Fo(lockf)e Fs(function)j(places)f(a)f(lo)r(c)n(k)h(on)g(a)f(region)g (of)h(the)h(c)n(hannel.)59 b(The)35 b(region)291 3672 y(starts)26 b(at)i(the)g(curren)n(t)f(p)r(osition)g(and)g(extends)h (for)f Fo(len)f Fs(b)n(ytes.)415 3780 y(The)i(p)r(ossible)f(v)-5 b(alues)27 b(for)g Fo(command)e Fs(are)i(the)h(follo)n(wing.)291 3973 y Fq(F)p 357 3973 29 4 v 34 w(ULOCK)42 b Fs(Unlo)r(c)n(k)27 b(a)g(region.)291 4175 y Fq(F)p 357 4175 V 34 w(LOCK)41 b Fs(Lo)r(c)n(k)27 b(a)g(region)g(for)g(writing;)g(blo)r(c)n(k)g(if)h (already)e(lo)r(c)n(k)n(ed.)291 4377 y Fq(F)p 357 4377 V 34 w(TLOCK)42 b Fs(Lo)r(c)n(k)27 b(a)g(region)f(for)h(writing;)g (fail)h(if)g(already)e(lo)r(c)n(k)n(ed.)291 4579 y Fq(F)p 357 4579 V 34 w(TEST)42 b Fs(T)-7 b(est)28 b(a)f(region)f(for)h(other)g (lo)r(c)n(ks.)291 4781 y Fq(F)p 357 4781 V 34 w(RLOCK)41 b Fs(Lo)r(c)n(k)27 b(a)g(region)f(for)h(reading;)g(blo)r(c)n(k)g(if)h (already)e(lo)r(c)n(k)n(ed.)291 4982 y Fq(F)p 357 4982 V 34 w(TRLOCK)41 b Fs(Lo)r(c)n(k)27 b(a)g(region)g(for)g(reading;)f (fail)i(is)f(already)g(lo)r(c)n(k)n(ed.)p eop end %%Page: 154 154 TeXDict begin 154 153 bop 739 282 a @beginspecial @setspecial @endspecial Fs(154)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.8.21)112 b(InetAddr)739 571 y @beginspecial @setspecial @endspecial 102 x Fs(The)33 b Fo(InetAddr)d Fs(ob)5 b(ject)33 b(describ)r(es)g(an)g(In)n(ternet)g (address.)53 b(It)33 b(con)n(tains)g(the)g(follo)n(wing)739 773 y(\014elds.)739 965 y Fq(addr)42 b Fo(String)p Fs(:)35 b(the)28 b(In)n(ternet)f(address.)739 1141 y Fq(p)s(ort)41 b Fo(Int)p Fs(:)36 b(the)28 b(p)r(ort)f(n)n(um)n(b)r(er.)739 1283 y @beginspecial @setspecial @endspecial 103 x Fk(10.8.22)112 b(Host)739 1442 y @beginspecial @setspecial @endspecial 102 x Fs(A)28 b Fo(Host)e Fs(ob)5 b(ject)27 b(con)n(tains)g(the)h (follo)n(wing)e(\014elds.)739 1736 y Fq(name)41 b Fo(String)p Fs(:)35 b(the)28 b(name)f(of)h(the)g(host.)739 1912 y Fq(aliases)40 b Fo(String)h(Array)p Fs(:)35 b(other)27 b(names)g(b)n(y)h(whic)n(h)f(the)h(host)g(is)f(kno)n(wn.)739 2088 y Fq(addrt)m(yp)s(e)43 b Fo(String)p Fs(:)34 b(the)28 b(preferred)f(so)r(c)n(k)n(et)f(domain.)739 2263 y Fq(addrs)42 b Fo(InetAddr)e(Array)p Fs(:)35 b(an)27 b(arra)n(y)f(of)h(In)n(ternet)h (addresses)e(b)r(elonging)h(to)g(the)h(host.)739 2408 y @beginspecial @setspecial @endspecial 101 x Fk(10.8.23)112 b(gethostb)m(yname)739 2584 y @beginspecial @setspecial @endspecial 870 2666 a Fo($\(gethostbyname)37 b(host...\))j(:)j (Host...)1000 2766 y(host)f(:)i(String)870 2866 y(raises)d (RuntimeException)863 3058 y Fs(The)34 b Fo(gethostbyname)28 b Fs(function)34 b(returns)f(a)g Fo(Host)f Fs(ob)5 b(ject)34 b(for)f(the)h(sp)r(eci\014ed)f(host.)739 3157 y(The)28 b Fo(host)e Fs(ma)n(y)g(sp)r(ecify)i(a)g(domain)f(name)g(or)g(an)g(In)n (ternet)h(address.)739 3300 y @beginspecial @setspecial @endspecial 103 x Fk(10.8.24)112 b(Proto)s(col)739 3458 y @beginspecial @setspecial @endspecial 102 x Fs(The)28 b Fo(Protocol)c Fs(ob)5 b(ject)27 b(represen)n(ts)f(a)i(proto)r(col)e (en)n(try)-7 b(.)36 b(It)28 b(has)f(the)h(follo)n(wing)f(\014elds.)739 3753 y Fq(name)41 b Fo(String)p Fs(:)35 b(the)28 b(canonical)e(name)h (of)h(the)g(proto)r(col.)739 3929 y Fq(aliases)40 b Fo(String)h(Array)p Fs(:)35 b(aliases)27 b(for)g(the)h(proto)r(col.)739 4104 y Fq(proto)41 b Fo(Int)p Fs(:)36 b(the)28 b(proto)r(col)e(n)n(um)n(b)r (er.)739 4247 y @beginspecial @setspecial @endspecial 103 x Fk(10.8.25)112 b(getprotob)m(yname)739 4425 y @beginspecial @setspecial @endspecial 870 4507 a Fo($\(getprotobynam)o(e)38 b(name...\))i(:)j(Protocol...)1000 4607 y(name)f(:)i(Int)e(or)h(String) 870 4707 y(raises)e(RuntimeException)863 4899 y Fs(The)33 b Fo(getprotobyname)27 b Fs(function)33 b(returns)f(a)g Fo(Protocol)e Fs(ob)5 b(ject)32 b(for)g(the)h(sp)r(eci\014ed)739 4998 y(proto)r(col.)j(The)27 b Fo(name)f Fs(ma)n(y)h(b)r(e)h(a)f(proto) r(col)g(name,)g(or)g(a)g(proto)r(col)f(n)n(um)n(b)r(er.)p eop end %%Page: 155 155 TeXDict begin 155 154 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.8.)63 b(IO)27 b(FUNCTIONS)1881 b Fs(155)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.8.26)112 b(Service)291 569 y @beginspecial @setspecial @endspecial 100 x Fs(The)27 b Fo(Service)e Fs(ob)5 b(ject)27 b(represen)n(ts)g(a)g (net)n(w)n(ork)f(service.)36 b(It)28 b(has)f(the)h(follo)n(wing)e (\014elds.)291 853 y Fq(name)41 b Fo(String)p Fs(:)34 b(the)28 b(name)g(of)f(the)h(service.)291 1020 y Fq(aliases)40 b Fo(String)h(Array)p Fs(:)35 b(aliases)26 b(for)h(the)h(service.)291 1187 y Fq(p)s(ort)41 b Fo(Int)p Fs(:)36 b(the)28 b(p)r(ort)f(n)n(um)n (b)r(er)g(of)h(the)g(service.)291 1355 y Fq(proto)41 b Fo(Protocol)p Fs(:)34 b(the)28 b(proto)r(col)e(for)h(the)h(service.) 291 1488 y @beginspecial @setspecial @endspecial 101 x Fk(10.8.27)112 b(getservb)m(yname)291 1662 y @beginspecial @setspecial @endspecial 421 1742 a Fo($\(getservbyname)38 b(service...\))h(:)k(Service...)552 1842 y(service)e(:)i(String)e(or)i (Int)421 1942 y(raises)e(RuntimeException)415 2125 y Fs(The)20 b Fo(getservbyname)14 b Fs(function)21 b(gets)e(the)h (information)g(for)f(a)g(net)n(w)n(ork)g(service.)33 b(The)291 2225 y Fo(service)24 b Fs(ma)n(y)j(b)r(e)h(sp)r(eci\014ed)g (as)f(a)g(service)g(name)g(or)g(n)n(um)n(b)r(er.)291 2359 y @beginspecial @setspecial @endspecial 100 x Fk(10.8.28)112 b(so)s(c)m(k)m(et)291 2513 y @beginspecial @setspecial @endspecial 421 2613 a Fo($\(socket)41 b(domain,)f(type,)i(protocol\))e (:)j(Channel)552 2712 y(domain)e(:)i(String)552 2812 y(type)f(:)h(String)552 2912 y(protocol)d(:)k(String)421 3011 y(raises)d(RuntimeException)415 3195 y Fs(The)28 b Fo(socket)d Fs(function)j(creates)f(an)g(un)n(b)r(ound)h(so)r(c)n(k)n (et.)415 3295 y(The)g(p)r(ossible)f(v)-5 b(alues)27 b(for)g(the)h (argumen)n(ts)f(are)f(as)h(follo)n(ws.)415 3395 y(The)h Fo(domain)d Fs(ma)n(y)i(ha)n(v)n(e)f(the)i(follo)n(wing)f(v)-5 b(alues.)291 3562 y Fq(PF)p 422 3562 29 4 v 34 w(UNIX)33 b(or)f(unix)41 b Fs(Unix)28 b(domain,)f(a)n(v)-5 b(ailable)27 b(only)g(on)g(Unix)h(systems.)291 3729 y Fq(PF)p 422 3729 V 34 w(INET)k(or)g(inet)41 b Fs(In)n(ternet)28 b(domain,)f(IPv4.) 291 3896 y Fq(PF)p 422 3896 V 34 w(INET6)32 b(or)g(inet6)41 b Fs(In)n(ternet)27 b(domain,)g(IPv6.)415 4063 y(The)h Fo(type)e Fs(ma)n(y)h(ha)n(v)n(e)f(the)i(follo)n(wing)f(v)-5 b(alues.)291 4230 y Fq(SOCK)p 566 4230 V 33 w(STREAM)32 b(or)g(stream)41 b Fs(Stream)27 b(so)r(c)n(k)n(et.)291 4397 y Fq(SOCK)p 566 4397 V 33 w(DGRAM)32 b(or)g(dgram)41 b Fs(Datagram)27 b(so)r(c)n(k)n(et.)291 4565 y Fq(SOCK)p 566 4565 V 33 w(RA)-11 b(W)32 b(or)g(ra)m(w)43 b Fs(Ra)n(w)27 b(so)r(c)n(k)n(et.)291 4732 y Fq(SOCK)p 566 4732 V 33 w(SEQP)-8 b(A)m(CKET)33 b(or)e(seqpac)m(k)m(et)44 b Fs(Sequenced)27 b(pac)n(k)n(ets)g(so)r(c)n(k)n(et)415 4899 y(The)f Fo(protocol)d Fs(is)j(an)f Fo(Int)g Fs(or)g Fo(String)f Fs(that)i(sp)r(eci\014es)g(a) f(proto)r(col)g(in)h(the)g(proto)r(cols)291 4998 y(database.)p eop end %%Page: 156 156 TeXDict begin 156 155 bop 739 282 a @beginspecial @setspecial @endspecial Fs(156)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.8.29)112 b(bind)739 574 y @beginspecial @setspecial @endspecial 870 680 a Fo(bind\(socket,)38 b(host,)k(port\))1000 780 y(socket)g(:)h (InOutChannel)1000 879 y(host)f(:)i(String)1000 979 y(port)e(:)i(Int) 870 1079 y(bind\(socket,)38 b(file\))1000 1178 y(socket)k(:)h (InOutChannel)1000 1278 y(file)f(:)i(File)870 1378 y(raise)d (RuntimeException)863 1585 y Fs(The)28 b Fo(bind)e Fs(function)i(binds) g(a)f(so)r(c)n(k)n(et)g(to)g(an)h(address.)863 1691 y(The)j(3-argumen)n (t)e(form)h(sp)r(eci\014es)g(an)h(In)n(ternet)f(connection,)h(the)g Fo(host)e Fs(sp)r(eci\014es)i(a)739 1791 y(host)c(name)h(or)e(IP)h (address,)g(and)g(the)h Fo(port)e Fs(is)i(a)f(p)r(ort)g(n)n(um)n(b)r (er.)863 1897 y(The)33 b(2-argumen)n(t)e(form)i(is)f(for)h Fo(Unix)e Fs(so)r(c)n(k)n(ets.)51 b(The)33 b Fo(file)e Fs(sp)r(eci\014es)i(the)g(\014lename)739 1996 y(for)27 b(the)h(address.)739 2139 y @beginspecial @setspecial @endspecial 123 x Fk(10.8.30)112 b(listen)739 2321 y @beginspecial @setspecial @endspecial 870 2427 a Fo(listen\(socket,)37 b(requests\))1000 2526 y(socket)42 b(:)h(InOutChannel)1000 2626 y(requests)e(:)i(Int)870 2726 y(raises)e(RuntimeException)863 2933 y Fs(The)22 b Fo(listen)e Fs(function)i(sets)g(up)g(the)h(so)r(c)n (k)n(et)e(for)g(receiving)g(up)h(to)g Fo(requests)c Fs(n)n(um)n(b)r(er) 739 3033 y(of)27 b(p)r(ending)h(connection)g(requests.)739 3192 y @beginspecial @setspecial @endspecial 107 x Fk(10.8.31)112 b(accept)739 3377 y @beginspecial @setspecial @endspecial 870 3464 a Fo($\(accept)40 b(socket\))h(:)i(InOutChannel)1000 3563 y(socket)f(:)h(InOutChannel)870 3663 y(raises)e(RuntimeException) 863 3871 y Fs(The)28 b Fo(accept)d Fs(function)j(accepts)f(a)h (connection)f(on)g(a)g(so)r(c)n(k)n(et.)739 4032 y @beginspecial @setspecial @endspecial 104 x Fk(10.8.32)112 b(connect)739 4195 y @beginspecial @setspecial @endspecial 913 4301 a Fo(connect\(socket,)38 b(addr,)j(port\))1044 4401 y(socket)g(:)i (InOutChannel)1044 4500 y(addr)f(:)h(String)1044 4600 y(port)f(:)h(int)913 4700 y(connect\(socket,)38 b(name\))1044 4799 y(socket)j(:)i(InOutChannel)1044 4899 y(name)f(:)h(File)913 4998 y(raise)f(RuntimeException)p eop end %%Page: 157 157 TeXDict begin 157 156 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.9.)63 b(PRINTING)28 b(FUNCTIONS)1548 b Fs(157)415 515 y(The)28 b Fo(connect)d Fs(function)j(connects)f(a)g (so)r(c)n(k)n(et)g(to)g(a)g(remote)g(address.)415 618 y(The)i(3-argumen)n(t)e(form)h(sp)r(eci\014es)h(an)f(In)n(ternet)h (connection.)40 b(The)29 b Fo(addr)e Fs(argumen)n(t)291 718 y(is)34 b(the)g(In)n(ternet)g(address)f(of)i(the)f(remote)g(host,)h (sp)r(eci\014ed)g(as)e(a)h(domain)g(name)g(or)f(IP)291 817 y(address.)i(The)28 b Fo(port)e Fs(argumen)n(t)g(is)i(the)g(p)r (ort)f(n)n(um)n(b)r(er.)415 920 y(The)22 b(2-argumen)n(t)e(form)h(is)h (for)f(Unix)h(so)r(c)n(k)n(ets.)34 b(The)21 b Fo(name)g Fs(argumen)n(t)f(is)i(the)g(\014lename)291 1020 y(of)27 b(the)h(so)r(c)n(k)n(et.)291 1149 y @beginspecial @setspecial @endspecial 119 x Fk(10.8.33)112 b(getc)m(har)291 1344 y @beginspecial @setspecial @endspecial 465 1427 a Fo($\(getc\))41 b(:)i(String)465 1527 y($\(getc)e(file\))h(:)h(String)596 1626 y(file)f(:)h(InChannel)d(or)i(File)465 1726 y(raises)f (RuntimeException)415 1921 y Fs(The)33 b Fo(getc)e Fs(function)j (returns)e(the)h(next)g(c)n(haracter)e(of)i(a)g(\014le.)53 b(If)33 b(the)g(argumen)n(t)f(is)291 2020 y(not)g(sp)r(eci\014ed,)i Fo(stdin)d Fs(is)i(used)f(as)g(input.)53 b(If)33 b(the)g(end)g(of)g (\014le)g(has)f(b)r(een)h(reac)n(hed,)g(the)291 2120 y(function)28 b(returns)f Fo(false)p Fs(.)291 2249 y @beginspecial @setspecial @endspecial 120 x Fk(10.8.34)112 b(gets)291 2444 y @beginspecial @setspecial @endspecial 421 2528 a Fo($\(gets\))41 b(:)i(String)421 2627 y($\(gets)e(channel\)) g(:)i(String)552 2727 y(channel)e(:)i(InChannel)d(or)j(File)421 2826 y(raises)e(RuntimeException)415 3021 y Fs(The)23 b Fo(gets)e Fs(function)i(returns)f(the)h(next)g(line)g(from)f(a)g (\014le.)36 b(The)22 b(function)i(returns)e(the)291 3121 y(empt)n(y)h(string)f(if)i(the)f(end)h(of)f(\014le)g(has)f(b)r(een)i (reac)n(hed.)34 b(The)23 b(line)g(terminator)f(is)h(remo)n(v)n(ed.)291 3266 y @beginspecial @setspecial @endspecial 103 x Fk(10.8.35)112 b(fgets)291 3445 y @beginspecial @setspecial @endspecial 421 3528 a Fo($\(fgets\))41 b(:)i(String)421 3628 y($\(fgets)e (channel\))f(:)j(String)552 3728 y(channel)e(:)i(InChannel)d(or)j(File) 421 3827 y(raises)e(RuntimeException)415 4022 y Fs(The)31 b Fo(fgets)e Fs(function)j(returns)e(the)i(next)f(line)h(from)e(a)h (\014le)g(that)h(has)e(b)r(een)i(op)r(ened)291 4122 y(for)i(reading)h (with)h Fo(fopen)p Fs(.)58 b(The)35 b(function)h(returns)f(the)h(empt)n (y)f(string)g(if)h(the)f(end)h(of)291 4221 y(\014le)29 b(has)f(b)r(een)i(reac)n(hed.)40 b(The)29 b(returned)f(string)h(is)g (returned)f(as)g(literal)h(data.)41 b(The)29 b(line)291 4321 y(terminator)d(is)i(not)f(remo)n(v)n(ed.)291 4459 y @beginspecial @setspecial @endspecial 153 x Fl(10.9)135 b(Prin)l(ting)46 b(functions)291 4720 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fs(Output)21 b(is)g(prin)n(ted)h(with)f (the)h Fo(print)d Fs(and)i Fo(println)e Fs(functions.)35 b(The)21 b Fo(println)d Fs(function)291 4899 y(adds)25 b(a)h(terminating)f(newline)i(to)f(the)g(v)-5 b(alue)26 b(b)r(eing)g(prin)n(ted,)g(the)h Fo(print)d Fs(function)i(do)r(es)291 4998 y(not.)p eop end %%Page: 158 158 TeXDict begin 158 157 bop 739 282 a @beginspecial @setspecial @endspecial Fs(158)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)913 515 y Fo(fprint\(,)38 b(\))913 615 y(print\(\))913 715 y(eprint\(\)) 913 814 y(fprintln\(,)f(\))913 914 y(println\(\)) 913 1013 y(eprintln\()o(\))863 1200 y Fs(The)32 b Fo(fprint)d Fs(functions)j(prin)n(t)f(to)g(a)g(\014le)h(that)f(has)g (b)r(een)h(previously)e(op)r(ened)i(with)739 1299 y Fo(fopen)p Fs(.)67 b(The)38 b Fo(print)e Fs(functions)j(prin)n(t)f(to)g(the)h (standard)e(output)i(c)n(hannel,)i(and)d(the)739 1399 y Fo(eprint)25 b Fs(functions)j(prin)n(t)f(to)h(the)g(standard)f(error) e(c)n(hannel.)739 1546 y @beginspecial @setspecial @endspecial 132 x Fl(10.10)136 b(V)-11 b(alue)45 b(prin)l(ting)g(functions)739 1784 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 78 x Fs(V)-7 b(alues)25 b(can)g(b)r(e)h(prin)n(ted)g(with)g(the)g Fo(printv)d Fs(and)i Fo(printvln)d Fs(functions.)37 b(The)25 b Fo(printvln)739 1961 y Fs(function)39 b(adds)f(a)h(terminating)f (newline)h(to)g(the)g(v)-5 b(alue)38 b(b)r(eing)h(prin)n(ted,)j(the)d Fo(printv)739 2061 y Fs(function)28 b(do)r(es)f(not.)913 2248 y Fo(fprintv\(,)38 b(\))913 2348 y (printv\(\))913 2447 y(eprintv\(\))913 2547 y(fprintvln\(,)f(\))913 2647 y(printvln\()o (\))913 2746 y(eprintvln\(\))863 2933 y Fs(The)28 b Fo(fprintv)d Fs(functions)j(prin)n(t)g(to)g(a)f(\014le)h(that)g(has)f (b)r(een)h(previously)f(op)r(ened)h(with)739 3032 y Fo(fopen)p Fs(.)57 b(The)35 b Fo(printv)e Fs(functions)i(prin)n(t)g(to)g(the)g (standard)f(output)i(c)n(hannel,)g(and)f(the)739 3132 y Fo(eprintv)25 b Fs(functions)j(prin)n(t)f(to)h(the)g(standard)e (error)g(c)n(hannel.)739 3270 y @beginspecial @setspecial @endspecial 99 x Fk(10.10.1)112 b(Miscellaneous)40 b(functions)739 3423 y @beginspecial @setspecial @endspecial 101 x Fq(10.10.1.1)92 b(set-c)m(hannel-line)913 3679 y Fo(set-channel-line\()o(ch)o(ann)o(el) o(,)37 b(filename,)j(line\))1088 3778 y(channel)g(:)j(Channel)1088 3878 y(filename)d(:)j(File)1088 3978 y(line)f(:)h(int)863 4164 y Fs(Set)28 b(the)g(line)g(n)n(um)n(b)r(er)g(information)e(for)i (the)g(c)n(hannel.)739 4293 y @beginspecial @setspecial @endspecial 150 x Fl(10.11)136 b(Higher-lev)l(el)47 b(IO)e(functions) 739 4550 y @beginspecial @setspecial @endspecial 93 x Fk(10.11.1)112 b(Regular)38 b(expressions)739 4798 y Fs(Man)n(y)25 b(of)h(the)h(higher-lev)n(el)d(functions)i(use)g(regular) e(expressions.)35 b(Regular)25 b(expressions)739 4898 y(are)h(de\014ned)i(b)n(y)g(strings)e(with)j(syn)n(tax)d(nearly)h(iden) n(tical)g(to)h Fo(awk)p Fs(\(1\).)863 4998 y(Strings)f(ma)n(y)g(con)n (tain)g(the)h(follo)n(wing)f(c)n(haracter)e(constan)n(ts.)p eop end %%Page: 159 159 TeXDict begin 159 158 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(159)415 515 y Fj(\017)41 b Fo(\\\\)27 b Fs(:)37 b(a)27 b(literal)g(bac)n(kslash.)415 684 y Fj(\017)41 b Fo(\\a)27 b Fs(:)37 b(the)28 b(alert)f(c)n(haracter)e Fo(^G)p Fs(.)415 853 y Fj(\017)41 b Fo(\\b)27 b Fs(:)37 b(the)28 b(bac)n(kspace)e(c)n(haracter)f Fo(^H)p Fs(.)415 1022 y Fj(\017)41 b Fo(\\f)27 b Fs(:)37 b(the)28 b(formfeed)f(c)n (haracter)f Fo(^L)p Fs(.)415 1191 y Fj(\017)41 b Fo(\\n)27 b Fs(:)37 b(the)28 b(newline)g(c)n(haracter)d Fo(^J)p Fs(.)415 1359 y Fj(\017)41 b Fo(\\r)27 b Fs(:)37 b(the)28 b(carriage)d(return)i(c)n(haracter)f Fo(^M)p Fs(.)415 1528 y Fj(\017)41 b Fo(\\t)27 b Fs(:)37 b(the)28 b(tab)g(c)n(haracter)d Fo(^I)p Fs(.)415 1697 y Fj(\017)41 b Fo(\\v)27 b Fs(:)37 b(the)28 b(v)n(ertical)e(tab)i(c)n(haracter.)415 1866 y Fj(\017)41 b Fo(\\xhh...)30 b Fs(:)47 b(the)33 b(c)n(haracter)e (represen)n(ted)h(b)n(y)g(the)h(string)f(of)h(hexadecimal)f(digits)498 1965 y Fo(h)p Fs(.)52 b(All)33 b(v)-5 b(alid)33 b(hexadecimal)e(digits) i(follo)n(wing)f(the)h(sequence)f(are)f(considered)h(to)498 2065 y(b)r(e)c(part)f(of)h(the)g(sequence.)415 2234 y Fj(\017)41 b Fo(\\ddd)26 b Fs(:)37 b(the)28 b(c)n(haracter)e(represen)n (ted)g(b)n(y)h(1,)h(2,)f(or)g(3)g(o)r(ctal)g(digits.)415 2419 y(Regular)d(expressions)f(are)h(de\014ned)h(using)g(the)g(sp)r (ecial)g(c)n(haracters)e Fo(.\\^$[\(\){}*?)p Fs(+.)415 2605 y Fj(\017)41 b Fo(c)27 b Fs(:)37 b(matc)n(hes)27 b(the)h(literal)f(c)n(haracter)f Fo(c)h Fs(if)h Fo(c)g Fs(is)f(not)h(a)f(sp)r(ecial)g(c)n(haracter.)415 2773 y Fj(\017)41 b Fo(\\c)27 b Fs(:)37 b(matc)n(hes)27 b(the)h(literal)f(c) n(haracter)f Fo(c)p Fs(,)h(ev)n(en)g(if)h Fo(c)f Fs(is)h(a)f(sp)r (ecial)g(c)n(haracter.)415 2942 y Fj(\017)41 b Fo(.)27 b Fs(:)37 b(matc)n(hes)27 b(an)n(y)g(c)n(haracter,)f(including)i (newline.)415 3111 y Fj(\017)41 b Fo(^)27 b Fs(:)37 b(matc)n(hes)27 b(the)h(b)r(eginning)g(of)f(a)h(line.)415 3280 y Fj(\017)41 b Fo($)27 b Fs(:)37 b(matc)n(hes)27 b(the)h(end)g(of)g(line.)415 3449 y Fj(\017)41 b Fo([abc...])24 b Fs(:)37 b(matc)n(hes)27 b(an)n(y)g(of)h(the)g(c)n(haracters)d Fo(abc...)415 3618 y Fj(\017)41 b Fo([^abc...])24 b Fs(:)37 b(matc)n(hes)27 b(an)n(y)g(c)n(haracter)e(except)j Fo(abc...)415 3786 y Fj(\017)41 b Fo(r1|r2)26 b Fs(:)37 b(matc)n(hes)27 b(either)g Fo(r1)g Fs(or)g Fo(r2)p Fs(.)415 3955 y Fj(\017)41 b Fo(r1r2)26 b Fs(:)37 b(matc)n(hes)27 b Fo(r1)g Fs(and)g(then)i Fo(r2)p Fs(.)415 4124 y Fj(\017)41 b Fo(r)p Fs(+)27 b(:)37 b(matc)n(hes)27 b(one)g(or)g(more)g(o)r(ccurrences)f(of)h Fo(r)p Fs(.)415 4293 y Fj(\017)41 b Fo(r*)27 b Fs(:)37 b(matc)n(hes)27 b(zero)f(or)h(more)g(o)r(ccurrences)f(of)i Fo(r)p Fs(.)415 4462 y Fj(\017)41 b Fo(r?)27 b Fs(:)37 b(matc)n(hes)27 b(zero)f(or)h(one)g(o)r(ccurrence)g(of)g Fo(r)p Fs(.)415 4630 y Fj(\017)41 b Fo(\(r\))27 b Fs(:)37 b(paren)n(theses)26 b(are)g(used)i(for)f(grouping;)f(matc)n(hes)h Fo(r)p Fs(.)415 4799 y Fj(\017)41 b Fo(\\\(r\\\))d Fs(:)62 b(also)39 b(de\014nes)h(grouping,)i(but)e(the)h(expression)d(matc)n (hed)i(within)h(the)498 4899 y(paren)n(theses)30 b(is)h(a)n(v)-5 b(ailable)30 b(to)g(the)i(output)g(pro)r(cessor)c(through)j(one)f(of)h (the)h(v)-5 b(ari-)498 4998 y(ables)27 b Fo($1)p Fs(,)g Fo($2)p Fs(,)g(...)p eop end %%Page: 160 160 TeXDict begin 160 159 bop 739 282 a @beginspecial @setspecial @endspecial Fs(160)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)863 515 y Fj(\017)41 b Fo(r{n})26 b Fs(:)37 b(matc)n(hes)27 b(exactly)g Fo(n)h Fs(o)r(ccurrences)e(of)h Fo(r)p Fs(.)863 699 y Fj(\017)41 b Fo(r{n,})26 b Fs(:)37 b(matc)n(hes)27 b Fo(n)g Fs(or)g(more)g(o)r (ccurrences)f(of)h Fo(r)p Fs(.)863 883 y Fj(\017)41 b Fo(r{n,m})26 b Fs(:)39 b(matc)n(hes)28 b(at)g(least)g Fo(n)g Fs(o)r(ccurrences)e(of)j Fo(r)p Fs(,)f(and)g(no)g(more)g(than)g Fo(m)g Fs(o)r(ccur-)946 983 y(rences.)863 1167 y Fj(\017)41 b Fo(\\y)p Fs(:)c(matc)n(hes)27 b(the)h(empt)n(y)f(string)g(at)h (either)f(the)h(b)r(eginning)g(or)e(end)i(of)g(a)f(w)n(ord.)863 1351 y Fj(\017)41 b Fo(\\B)p Fs(:)27 b(matc)n(hes)g(the)h(empt)n(y)g (string)f(within)h(a)f(w)n(ord.)863 1535 y Fj(\017)41 b Fo(\\<)p Fs(:)c(matc)n(hes)27 b(the)h(empt)n(y)f(string)g(at)h(the)g (b)r(eginning)f(of)h(a)f(w)n(ord.)863 1719 y Fj(\017)41 b Fo(\\>)p Fs(:)c(matc)n(hes)27 b(the)h(empt)n(y)f(string)g(at)h(the)g (end)f(of)h(a)f(w)n(ord.)863 1903 y Fj(\017)41 b Fo(\\w)p Fs(:)c(matc)n(hes)27 b(an)n(y)f(c)n(haracter)g(in)i(a)f(w)n(ord.)863 2087 y Fj(\017)41 b Fo(\\W)p Fs(:)27 b(matc)n(hes)g(an)n(y)g(c)n (haracter)f(that)i(do)r(es)f(not)g(o)r(ccur)g(within)i(a)e(w)n(ord.)863 2271 y Fj(\017)41 b Fo(\\`)p Fs(:)c(matc)n(hes)27 b(the)h(empt)n(y)f (string)g(at)h(the)g(b)r(eginning)f(of)h(a)f(\014le.)863 2455 y Fj(\017)41 b Fo(\\')p Fs(:)c(matc)n(hes)27 b(the)h(empt)n(y)f (string)g(at)h(the)g(end)f(of)h(a)f(\014le.)863 2656 y(Character)42 b(classes)f(can)i(b)r(e)g(used)g(to)g(sp)r(ecify)g(c)n (haracter)e(sequences)h(abstractly)-7 b(.)739 2755 y(Some)27 b(of)h(these)f(sequences)g(can)h(c)n(hange)e(dep)r(ending)i(on)f(y)n (our)g(LOCALE.)863 2956 y Fj(\017)41 b Fo([:alnum:])24 b Fs(Alphan)n(umeric)k(c)n(haracters.)863 3140 y Fj(\017)41 b Fo([:alpha:])24 b Fs(Alphab)r(etic)29 b(c)n(haracters.)863 3324 y Fj(\017)41 b Fo([:lower:])24 b Fs(Lo)n(w)n(ercase)h(alphab)r (etic)j(c)n(haracters.)863 3508 y Fj(\017)41 b Fo([:upper:])24 b Fs(Upp)r(ercase)j(alphab)r(etic)h(c)n(haracters.)863 3692 y Fj(\017)41 b Fo([:cntrl:])24 b Fs(Con)n(trol)j(c)n(haracters.) 863 3876 y Fj(\017)41 b Fo([:digit:])24 b Fs(Numeric)k(c)n(haracters.) 863 4060 y Fj(\017)41 b Fo([:xdigit:])24 b Fs(Numeric)k(and)f (hexadecimal)g(c)n(haracters.)863 4244 y Fj(\017)41 b Fo([:graph:])24 b Fs(Characters)i(that)i(are)f(prin)n(table)g(and)g (visible.)863 4428 y Fj(\017)41 b Fo([:print:])22 b Fs(Characters)h (that)j(are)e(prin)n(table,)h(whether)g(they)h(are)e(visible)h(or)f (not.)863 4612 y Fj(\017)41 b Fo([:punct:])24 b Fs(Punctuation)k(c)n (haracters.)863 4796 y Fj(\017)41 b Fo([:blank:])24 b Fs(Space)k(or)e(tab)i(c)n(haracters.)863 4980 y Fj(\017)41 b Fo([:space:])24 b Fs(Whitespace)k(c)n(haracters.)p eop end %%Page: 161 161 TeXDict begin 161 160 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(161)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.11.2)112 b(cat)291 569 y @beginspecial @setspecial @endspecial 465 669 a Fo(cat\(files\))39 b(:)44 b(Sequence)596 768 y(files)d(:)i(File)f(or)h(InChannel)d(Sequence)415 945 y Fs(The)27 b Fo(cat)e Fs(function)i(concatenates)f(the)h(output)g (from)f(m)n(ultiple)i(\014les)e(and)h(returns)e(it)291 1045 y(as)i(a)g(string.)291 1176 y @beginspecial @setspecial @endspecial 100 x Fk(10.11.3)112 b(grep)291 1349 y @beginspecial @setspecial @endspecial 421 1430 a Fo(grep\(pattern\))39 b(:)k(String)84 b(#)44 b(input)d(from)h(stdin,)f(default)g(options)552 1529 y(pattern)g(:)i(String)421 1629 y(grep\(pattern,)c(files\))i(:)i (String)85 b(#)43 b(default)d(options)552 1729 y(pattern)h(:)i(String) 552 1828 y(files)129 b(:)43 b(File)f(Sequence)421 1928 y(grep\(options,)d(pattern,)h(files\))h(:)i(String)509 2027 y(options)d(:)j(String)509 2127 y(pattern)d(:)j(String)509 2227 y(files)128 b(:)43 b(File)f(Sequence)415 2404 y Fs(The)27 b Fo(grep)f Fs(function)i(searc)n(hes)d(for)i(o)r(ccurrences) f(of)h(a)g(regular)e(expression)h Fo(pattern)291 2504 y Fs(in)36 b(a)g(set)g(of)g(\014les,)i(and)e(prin)n(ts)g(lines)g(that)h (matc)n(h.)62 b(This)36 b(is)h(lik)n(e)e(a)h(highly-simpli\014ed)291 2603 y(v)n(ersion)26 b(of)34 b Fo(grep)p Fs(\(1\).)415 2703 y(The)28 b(options)f(are:)291 2865 y Fq(q)41 b Fs(If)28 b(sp)r(eci\014ed,)g(the)g(output)h(from)e Fo(grep)f Fs(is)h(not)h (displa)n(y)n(ed.)291 3028 y Fq(h)41 b Fs(If)24 b(sp)r(eci\014ed,)g (output)g(lines)f(will)g(not)g(include)h(the)f(\014lename)g(\(default,) i(when)f(only)e(one)498 3128 y(input)29 b(\014le)e(is)h(giv)n(en\).)291 3292 y Fq(n)41 b Fs(If)31 b(sp)r(eci\014ed,)h(output)f(lines)f(include) h(the)g(\014lename)f(\(default,)i(when)f(more)f(than)g(one)498 3392 y(input)f(\014le)e(is)h(giv)n(en\).)291 3555 y Fq(v)41 b Fs(If)28 b(sp)r(eci\014ed,)g(searc)n(h)e(for)i(lines)f(without)h(a)f (matc)n(h)h(instead)f(of)h(lines)f(with)h(a)g(matc)n(h,)415 3717 y(The)g Fo(pattern)d Fs(is)i(a)g(regular)f(expression.)415 3817 y(If)g(successful)f(\()p Fo(grep)e Fs(found)j(a)f(matc)n(h\),)g (the)h(function)g(returns)e Fo(true)p Fs(.)35 b(Otherwise,)24 b(it)291 3916 y(returns)i Fo(false)p Fs(.)291 4032 y @beginspecial @setspecial @endspecial 116 x Fk(10.11.4)112 b(scan)291 4201 y @beginspecial @setspecial @endspecial 421 4301 a Fo(scan\(input-files\))421 4401 y(case)42 b(string1)552 4500 y(body1)421 4600 y(case)g(string2)552 4700 y(body2)421 4799 y(...)421 4899 y(default)552 4998 y(bodyd)p eop end %%Page: 162 162 TeXDict begin 162 161 bop 739 282 a @beginspecial @setspecial @endspecial Fs(162)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)863 515 y Fs(The)36 b Fo(scan)e Fs(function)i(pro)n(vides)f(input)h(pro)r(cessing)e(in)i (command-line)f(form.)61 b(The)739 615 y(function)30 b(tak)n(es)f(\014le/\014lename)h(argumen)n(ts.)42 b(If)30 b(called)g(with)g(no)g(argumen)n(ts,)f(the)h(input)739 715 y(is)h(tak)n(en)g(from)g Fo(stdin)p Fs(.)47 b(If)32 b(argumen)n(ts)e(are)g(pro)n(vided,)i(eac)n(h)e(sp)r(eci\014es)i(an)f Fo(InChannel)p Fs(,)739 814 y(or)c(the)h(name)f(of)h(a)f(\014le)g(for)h (input.)37 b(Output)28 b(is)g(alw)n(a)n(ys)e(to)h Fo(stdout)p Fs(.)863 915 y(The)36 b Fo(scan)f Fs(function)h(op)r(erates)f(b)n(y)h (reading)f(the)h(input)h(one)e(line)h(at)g(a)g(time,)i(and)739 1014 y(pro)r(cessing)26 b(it)i(according)e(to)h(the)h(follo)n(wing)f (algorithm.)863 1115 y(F)-7 b(or)27 b(eac)n(h)g(line,)h(the)f(record)f (is)i(\014rst)f(split)h(in)n(to)f(\014elds,)h(and)f(the)h(\014elds)f (are)g(b)r(ound)g(to)739 1215 y(the)e(v)-5 b(ariables)24 b Fo($1,)42 b($2,)g(...)p Fs(.)35 b(The)25 b(v)-5 b(ariable)24 b Fo($0)g Fs(is)h(de\014ned)g(to)g(b)r(e)g(the)g(en)n(tire)g(line,)g (and)739 1314 y Fo($*)32 b Fs(is)h(an)f(arra)n(y)f(of)h(all)h(the)g (\014eld)g(v)-5 b(alues.)53 b(The)32 b Fo($\(NF\))f Fs(v)-5 b(ariable)32 b(is)h(de\014ned)g(to)g(b)r(e)g(the)739 1414 y(n)n(um)n(b)r(er)27 b(of)h(\014elds.)863 1515 y(Next,)g(a)f(case) f(expression)g(is)h(selected.)36 b(If)28 b Fo(string_i)c Fs(matc)n(hes)i(the)i(tok)n(en)e Fo($1)p Fs(,)h(then)739 1614 y Fo(body_i)g Fs(is)i(ev)-5 b(aluated.)41 b(If)30 b(the)f(b)r(o)r(dy)h(ends)f(in)g(an)g Fo(export)p Fs(,)f(the)h(state)g (is)g(passed)g(to)g(the)739 1714 y(next)f(clause.)36 b(Otherwise)27 b(the)h(v)-5 b(alue)27 b(is)h(discarded.)863 1815 y(F)-7 b(or)30 b(example,)g(here)f(is)h(an)f Fo(scan)f Fs(function)j(that)f(acts)f(as)g(a)h(simple)g(command)f(pro-)739 1914 y(cessor.)913 2102 y Fo(calc\(\))41 b(=)1044 2202 y(i)i(=)g(0)1044 2302 y(scan\(script.in\))1044 2401 y(case)f(print)1175 2501 y(println\($i\))1044 2600 y(case)g(inc)1175 2700 y(i)h(=)g($\(add)f($i,)g(1\))1175 2800 y(export)1044 2899 y(case)g(dec)1175 2999 y(i)h(=)g($\(sub)f($i,)g(1\))1175 3099 y(export)1044 3198 y(case)g(addconst)1175 3298 y(i)h(=)g($\(add)f ($i,)g($2\))1175 3397 y(export)1044 3497 y(default)1175 3597 y(eprintln\($"Unkno)o(wn)37 b(command:)j($1"\))863 3784 y Fs(The)28 b Fo(scan)e Fs(function)i(also)f(supp)r(orts)g(sev)n (eral)f(options.)913 3972 y Fo(scan\(options,)38 b(files\))913 4071 y(...)739 4257 y Fq(A)k Fs(P)n(arse)19 b(eac)n(h)i(line)h(as)f(an) h(argumen)n(t)f(list,)i(where)e(argumen)n(ts)g(ma)n(y)g(b)r(e)h (quoted.)35 b(F)-7 b(or)21 b(ex-)946 4357 y(ample,)28 b(the)g(follo)n(wing)e(line)i(has)f(three)h(w)n(ords,)e(\\)p Fo(ls)p Fs(",)g(\\)p Fo(-l)p Fs(",)g(\\)p Fo(Program)40 b(Files)p Fs(".)1252 4578 y Fo(ls)i(-l)h("Program)d(Files")739 4899 y Fq(O)h Fs(P)n(arse)29 b(eac)n(h)i(line)g(using)g(white)h(space)f (as)f(the)i(separator,)e(using)h(the)h(usual)f(OMak)n(e)946 4998 y(algorithm)c(for)g(string)g(parsing.)35 b(This)28 b(is)f(the)h(default.)p eop end %%Page: 163 163 TeXDict begin 163 162 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(163)291 515 y Fq(x)41 b Fs(Once)29 b(eac)n(h)f(line)h(is)g(split,) g(reduce)g(eac)n(h)f(w)n(ord)g(using)g(the)h(hex)g(represen)n(tation.) 39 b(This)498 615 y(is)45 b(the)g(usual)g(hex)g(represen)n(tation)e (used)i(in)h(URL)f(sp)r(eci\014ers,)k(so)44 b(the)i(string)498 715 y(\\Program)36 b(Files")i(ma)n(y)h(b)r(e)g(alternately)f(represen)n (ted)g(in)h(the)g(form)g(Program-)498 814 y(Program+Files.)415 996 y(Note,)44 b(if)d(y)n(ou)e(w)n(an)n(t)h(to)g(redirect)g(the)h (output)g(to)f(a)g(\014le,)k(the)d(easiest)f(w)n(a)n(y)f(is)h(to)291 1096 y(rede\014ne)31 b(the)h Fo(stdout)e Fs(v)-5 b(ariable.)49 b(The)32 b Fo(stdout)d Fs(v)-5 b(ariable)31 b(is)h(scop)r(ed)f(the)i (same)e(w)n(a)n(y)g(as)291 1195 y(other)24 b(v)-5 b(ariables,)25 b(so)f(this)h(de\014nition)h(do)r(es)f(not)g(a\013ect)g(the)h(meaning)e (of)h Fo(stdout)e Fs(outside)291 1295 y(the)28 b Fo(calc)e Fs(function.)465 1477 y Fo(calc\(\))41 b(=)639 1577 y(stdout)g(=)j ($\(fopen)c(script.out,)f(w\))639 1676 y(scan\(script.in\))770 1776 y(...)639 1875 y(close\(stdout\))291 1998 y @beginspecial @setspecial @endspecial 110 x Fk(10.11.5)112 b(a)m(wk)291 2161 y @beginspecial @setspecial @endspecial 421 2261 a Fo(awk\(input-files\))421 2361 y(case)42 b(pattern1:)552 2460 y(body1)421 2560 y(case)g(pattern2:)552 2659 y(body2)421 2759 y(...)421 2859 y(default:)552 2958 y(bodyd)415 3140 y Fs(or)421 3322 y Fo(awk\(options,)d(input-files\))421 3422 y(case)j(pattern1:)552 3521 y(body1)421 3621 y(case)g(pattern2:) 552 3721 y(body2)421 3820 y(...)421 3920 y(default:)552 4020 y(bodyd)415 4201 y Fs(The)g Fo(awk)e Fs(function)i(pro)n(vides)e (input)i(pro)r(cessing)e(similar)h(to)g Fo(awk)p Fs(\(1\),)j(but)e (more)291 4301 y(limited.)47 b(The)31 b Fo(input-files)c Fs(argumen)n(t)i(is)i(a)g(sequence)f(of)h(v)-5 b(alues,)31 b(eac)n(h)f(sp)r(eci\014es)h(an)291 4401 y Fo(InChannel)p Fs(,)23 b(or)i(the)i(name)f(of)g(a)g(\014le)g(for)g(input.)37 b(If)27 b(called)f(with)h(no)f(options)g(and)g(no)g(\014le)291 4500 y(argumen)n(ts,)g(the)i(input)g(is)g(tak)n(en)f(from)g Fo(stdin)p Fs(.)35 b(Output)28 b(is)g(alw)n(a)n(ys)d(to)j Fo(stdout)p Fs(.)415 4600 y(The)37 b(v)-5 b(ariables)35 b Fo(RS)h Fs(and)g Fo(FS)g Fs(de\014ne)h(record)e(and)i(\014eld)g (separators)d(as)i(regular)e(ex-)291 4700 y(pressions.)47 b(The)31 b(default)h(v)-5 b(alue)32 b(of)f Fo(RS)g Fs(is)g(the)h (regular)e(expression)g Fo(\\r|\\n|\\r\\n)p Fs(.)45 b(The)291 4799 y(default)28 b(v)-5 b(alue)27 b(of)h Fo(FS)e Fs(is)i(the)g (regular)e(expression)g Fo([)43 b(\\t])p Fs(+.)415 4899 y(The)32 b Fo(awk)f Fs(function)h(op)r(erates)f(b)n(y)h(reading)e(the)j (input)f(one)g(record)e(at)i(a)g(time,)h(and)291 4998 y(pro)r(cessing)26 b(it)i(according)e(to)h(the)h(follo)n(wing)f (algorithm.)p eop end %%Page: 164 164 TeXDict begin 164 163 bop 739 282 a @beginspecial @setspecial @endspecial Fs(164)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)863 515 y Fs(F)g(or)37 b(eac)n(h)g(line,)j(the)d(record)f(is)h(\014rst)g(split)h(in)n(to)f (\014elds)g(using)g(the)h(\014eld)g(separator)739 615 y Fo(FS)p Fs(,)29 b(and)h(the)g(\014elds)g(are)f(b)r(ound)h(to)g(the)g (v)-5 b(ariables)28 b Fo($1,)43 b($2,)f(...)p Fs(.)h(The)29 b(v)-5 b(ariable)29 b Fo($0)g Fs(is)739 715 y(de\014ned)23 b(to)f(b)r(e)g(the)h(en)n(tire)f(line,)i(and)e Fo($*)f Fs(is)i(an)f(arra)n(y)e(of)i(all)g(the)h(\014eld)f(v)-5 b(alues.)35 b(The)22 b Fo($\(NF\))739 814 y Fs(v)-5 b(ariable)26 b(is)i(de\014ned)g(to)f(b)r(e)h(the)g(n)n(um)n(b)r(er)g(of)f(\014elds.) 863 915 y(Next,)22 b(the)d(cases)f(are)g(ev)-5 b(aluated)19 b(in)g(order.)33 b(F)-7 b(or)18 b(eac)n(h)g(case,)i(if)g(the)f(regular) f(expression)739 1015 y Fo(pattern_i)26 b Fs(matc)n(hes)i(the)i(record) e Fo($0)p Fs(,)h(then)h Fo(body_i)d Fs(is)i(ev)-5 b(aluated.)42 b(If)30 b(the)g(b)r(o)r(dy)f(ends)739 1114 y(in)36 b(an)f Fo(export)p Fs(,)h(the)g(state)f(is)h(passed)f(to)g(the)h(next)g (clause.)61 b(Otherwise)35 b(the)h(v)-5 b(alue)35 b(is)739 1214 y(discarded.)g(If)24 b(the)g(regular)e(expression)h(con)n(tains)g Fo(\\\(r\\\))f Fs(expression,)h(those)h(expression)739 1314 y(o)n(v)n(erride)h(the)j(\014elds)g Fo($1,)42 b($2,)h(...)p Fs(.)863 1414 y(F)-7 b(or)21 b(example,)i(here)e(is)h(an)f Fo(awk)f Fs(function)j(to)e(prin)n(t)h(the)g(text)g(b)r(et)n(w)n(een)f (t)n(w)n(o)g(delimiters)739 1514 y Fo(\\begin{})29 b Fs(and)35 b Fo(\\end{})p Fs(,)d(where)i(the)i Fo()c Fs(m)n(ust)j(b)r(elong)g(to)g(a)f(set)739 1614 y(passed)27 b(as)g(an)g(argumen)n(t)f(to)i(the)g Fo(filter)d Fs(function.)913 1803 y Fo(filter\(names\))38 b(=)1044 1902 y(print)k(=)h(false)1044 2102 y(awk\(Awk.in\))1044 2201 y(case)f($"^\\\\end\\{\\\([:al)o(ph)o(a:])o(+\\)o(\)\\})o(")1175 2301 y(if)h($\(mem)e($1,)h($\(names\)\))1306 2401 y(print)f(=)i(false) 1306 2500 y(export)1175 2600 y(export)1044 2699 y(default)1175 2799 y(if)g($\(print\))1306 2899 y(println\($0\))1044 2998 y(case)f($"^\\\\begin\\{\\\([:)o(al)o(pha)o(:])o(+\\\))o(\\})o(") 1175 3098 y(print)f(=)i($\(mem)f($1,)g($\(names\)\))1175 3198 y(export)863 3385 y Fs(Note,)i(if)d(y)n(ou)f(w)n(an)n(t)f(to)i (redirect)e(the)i(output)g(to)g(a)f(\014le,)j(the)e(easiest)f(w)n(a)n (y)f(is)h(to)739 3485 y(rede\014ne)31 b(the)i Fo(stdout)c Fs(v)-5 b(ariable.)49 b(The)32 b Fo(stdout)d Fs(v)-5 b(ariable)31 b(is)h(scop)r(ed)g(the)g(same)f(w)n(a)n(y)g(as)739 3585 y(other)24 b(v)-5 b(ariables,)25 b(so)f(this)i(de\014nition)f(do)r (es)g(not)g(a\013ect)g(the)h(meaning)f(of)g Fo(stdout)d Fs(outside)739 3684 y(the)28 b Fo(filter)d Fs(function.)913 3873 y Fo(filter\(names\))38 b(=)1088 3973 y(stdout)j(=)i($\(fopen)e (file.out,)e(w\))1088 4072 y(awk\(Awk.in\))1218 4172 y(...)1088 4272 y(close\(stdout\))863 4459 y Fs(Options.)739 4629 y Fq(b)i Fs(\\Break")c(when)j(ev)-5 b(aluating)38 b(cases.)71 b(Only)39 b(the)g(\014rst)g(case)f(that)i(matc)n(hes)e (will)i(b)r(e)946 4729 y(selected.)863 4899 y(The)28 b @beginspecial @setspecial @endspecial Fo(break)d Fs(function)p @beginspecial @setspecial @endspecial 28 w(can)i(b)r(e)h(used)f(to)g (ab)r(ort)g(the)h(lo)r(op,)f(exiting)g(the)g Fo(awk)g Fs(function)739 4998 y(immediately)-7 b(.)p eop end %%Page: 165 165 TeXDict begin 165 164 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(165)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.11.6)112 b(fsubst)291 569 y @beginspecial @setspecial @endspecial 421 669 a Fo(fsubst\(files\))421 768 y(case)42 b(pattern1)f([options])552 868 y(body1)421 967 y(case)h(pattern2)f([options])552 1067 y(body2)421 1167 y(...)421 1266 y(default)552 1366 y(bodyd)415 1520 y Fs(The)34 b Fo(fsubst)d Fs(function)k(pro)n(vides)d(a)i Fo(sed)p Fs(\(1\)-lik)n(e)e(substitution)i(function.)56 b(Similar)291 1620 y(to)24 b Fo(awk)p Fs(,)h(if)g Fo(fsubst)e Fs(is)h(called)h(with)g(no)g(argumen)n(ts,)f(the)h(input)h(is)f(tak)n (en)f(from)h Fo(stdin)p Fs(.)33 b(If)291 1719 y(argumen)n(ts)28 b(are)g(pro)n(vided,)i(eac)n(h)e(sp)r(eci\014es)i(an)f Fo(InChannel)p Fs(,)e(or)h(the)i(name)g(of)f(a)h(\014le)f(for)291 1819 y(input.)415 1919 y(The)g Fo(RS)e Fs(v)-5 b(ariable)28 b(de\014nes)h(a)f(regular)e(expression)h(that)i(determines)g(a)f (record)f(sepa-)291 2018 y(rator,)f(The)h(default)h(v)-5 b(alue)28 b(of)f Fo(RS)g Fs(is)h(the)g(regular)e(expression)g Fo(\\r|\\n|\\r\\n)p Fs(.)415 2118 y(The)i Fo(fsubst)d Fs(function)j(reads)f(the)h(\014le)f(one)h(record)e(at)h(a)g(time.)415 2217 y(F)-7 b(or)23 b(eac)n(h)g(record,)h(the)g(cases)e(are)h(ev)-5 b(aluated)24 b(in)g(order.)34 b(Eac)n(h)23 b(case)g(de\014nes)h(a)f (substi-)291 2317 y(tution)31 b(from)g(a)g(substring)f(matc)n(hing)h (the)g Fo(pattern)e Fs(to)i(replacemen)n(t)f(text)i(de\014ned)f(b)n(y) 291 2417 y(the)d(b)r(o)r(dy)-7 b(.)415 2516 y(Curren)n(tly)g(,)40 b(there)e(is)g(only)g(one)g(option:)58 b Fo(g)p Fs(.)68 b(If)39 b(sp)r(eci\014ed,)i(eac)n(h)c(clause)h(sp)r(eci\014es)291 2616 y(a)g(global)h(replacemen)n(t,)i(and)e(all)g(instances)g(of)g(the) h(pattern)f(de\014ne)g(a)g(substitution.)291 2716 y(Otherwise,)26 b(the)i(substitution)h(is)e(applied)h(only)f(once.)415 2815 y(Output)h(can)g(b)r(e)g(redirected)e(b)n(y)i(rede\014ning)f(the)h Fo(stdout)d Fs(v)-5 b(ariable.)415 2915 y(F)e(or)23 b(example,)h(the)f (follo)n(wing)g(program)e(replaces)h(all)h(o)r(ccurrences)f(of)h(an)g (expression)291 3014 y Fo(word.)i Fs(with)j(its)g(capitalized)f(form.) 465 3169 y Fo(section)596 3268 y(stdout)41 b(=)i($\(fopen)e(Subst.out,) e(w\))596 3368 y(fsubst\(Subst.in)o(\))596 3467 y(case)j ($"\\<\\\([[:alnum:)o(]]+)o(\\\))o(\\.")37 b(g)726 3567 y(value)42 b($\(capitalize)d($1\).)596 3667 y(close\(stdout\))291 3785 y @beginspecial @setspecial @endspecial 109 x Fk(10.11.7)112 b(lex)291 3948 y @beginspecial @setspecial @endspecial 421 4047 a Fo(lex\(files\))421 4147 y(case)42 b(pattern1)552 4247 y(body1)421 4346 y(case)g(pattern2)552 4446 y(body2)421 4546 y(...)421 4645 y(default)552 4745 y(bodyd)415 4899 y Fs(The)23 b Fo(lex)f Fs(function)i(pro)n(vides)d(a)i(simple)g (lexical-st)n(yle)e(scanner)h(function.)36 b(The)23 b(input)291 4998 y(is)31 b(a)f(sequence)h(of)g(\014les)g(or)g(c)n(hannels.)47 b(The)31 b(cases)f(sp)r(ecify)i(regular)d(expressions.)46 b(Eac)n(h)p eop end %%Page: 166 166 TeXDict begin 166 165 bop 739 282 a @beginspecial @setspecial @endspecial Fs(166)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 515 y Fs(time)26 b(the)g(input)g(is)f(read,)g(the)h(regular)d(expression)h(that)i(matc)n (hes)f(the)g Fi(longest)j(pr)l(e\014x)35 b Fs(of)739 615 y(the)28 b(input)g(is)g(selected,)f(and)h(the)g(b)r(o)r(dy)g(is)f (ev)-5 b(aluated.)863 715 y(If)27 b(t)n(w)n(o)e(clauses)g(b)r(oth)h (matc)n(h)f(the)h(same)g(input,)h(the)f Fi(last)34 b Fs(one)25 b(is)h(selected)g(for)f(execu-)739 814 y(tion.)50 b(The)33 b Fo(default)c Fs(case)i(matc)n(hes)h(the)g(regular)f (expression)f Fo(.)p Fs(;)35 b(y)n(ou)c(probably)g(w)n(an)n(t)739 914 y(to)c(place)h(it)g(\014rst)f(in)h(the)g(pattern)f(list.)863 1013 y(If)35 b(the)g(b)r(o)r(dy)g(end)f(with)h(an)f Fo(export)e Fs(directiv)n(e,)j(the)g(state)f(is)h(passed)e(to)h(the)h(next)739 1113 y(clause.)863 1213 y(F)-7 b(or)25 b(example,)h(the)g(follo)n(wing) f(program)e(collects)i(all)h(o)r(ccurrences)e(of)h(alphan)n(umeric)739 1312 y(w)n(ords)h(in)i(an)f(input)i(\014le.)913 1466 y Fo(collect-words\($\(f)o(il)o(es\))o(\))37 b(=)1044 1566 y(words[])k(=)1044 1665 y(lex\($\(files\)\))1044 1765 y(default)1175 1865 y(#)i(empty)1044 1964 y(case)f ($"[[:alnum:]]+")37 b(g)1175 2064 y(words[])j(+=)j($0)1175 2164 y(export)863 2317 y Fs(The)28 b Fo(default)d Fs(case,)i(if)h(one)f (exists,)g(matc)n(hes)g(single)g(c)n(haracters.)35 b(Since)863 2417 y(It)28 b(is)g(an)f(error)f(if)i(the)g(input)g(do)r(es)g(not)f (matc)n(h)h(an)n(y)e(of)i(the)g(regular)e(expressions.)863 2517 y(The)i @beginspecial @setspecial @endspecial Fo(break)e Fs(function)p @beginspecial @setspecial @endspecial 28 w(can)h(b)r(e)h(used)g(to)f(ab)r(ort)g(the)h(lo)r(op.)739 2644 y @beginspecial @setspecial @endspecial 100 x Fk(10.11.8)112 b(lex-searc)m(h)739 2798 y @beginspecial @setspecial @endspecial 870 2897 a Fo(lex-search\(file)o(s\))870 2997 y(case)42 b(pattern1)1000 3097 y(body1)870 3196 y(case)g(pattern2)1000 3296 y(body2)870 3396 y(...)870 3495 y(default)1000 3595 y(bodyd)863 3749 y Fs(The)31 b Fo(lex-search)26 b Fs(function)31 b(is)f(lik)n(e)h(the)f Fo(lex)g Fs(function,)h(but)g(input)g(that)g(do)r(es)f(not)739 3848 y(matc)n(h)21 b(an)n(y)f(of)h(the)g(regular)f(expressions)f(is)i (skipp)r(ed.)35 b(If)21 b(the)h(clauses)e(include)h(a)g Fo(default)739 3948 y Fs(case,)27 b(then)h(the)g Fo(default)d Fs(matc)n(hes)i(an)n(y)f(skipp)r(ed)i(text.)863 4048 y(F)-7 b(or)25 b(example,)h(the)g(follo)n(wing)f(program)e(collects)i (all)h(o)r(ccurrences)e(of)h(alphan)n(umeric)739 4147 y(w)n(ords)h(in)i(an)f(input)i(\014le,)f(skipping)f(an)n(y)g(other)g (text.)913 4301 y Fo(collect-words\($\(f)o(il)o(es\))o(\))37 b(=)1044 4401 y(words[])k(=)1044 4500 y(lex-search\($\(fil)o(es\))o(\)) 1044 4600 y(default)1175 4700 y(eprintln\(Skipped)c($0\))1044 4799 y(case)42 b($"[[:alnum:]]+")37 b(g)1175 4899 y(words[])j(+=)j($0) 1175 4998 y(export)p eop end %%Page: 167 167 TeXDict begin 167 166 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(167)415 515 y(The)28 b Fo(default)d Fs(case,)h(if)i(one)g(exists,) f(matc)n(hes)g(single)g(c)n(haracters.)35 b(Since)415 615 y(It)28 b(is)g(an)f(error)e(if)k(the)f(input)g(do)r(es)f(not)h (matc)n(h)f(an)n(y)g(of)h(the)g(regular)d(expressions.)415 715 y(The)j @beginspecial @setspecial @endspecial Fo(break)d Fs(function)p @beginspecial @setspecial @endspecial 29 w(can)i(b)r(e)h(used)f(to)h(ab)r(ort)f(the)h(lo)r(op.)291 843 y @beginspecial @setspecial @endspecial 100 x Fk(10.11.9)112 b(Lexer)291 996 y @beginspecial @setspecial @endspecial 100 x Fs(The)23 b Fo(Lexer)e Fs(ob)5 b(ject)24 b(de\014nes)f(a)g (facilit)n(y)g(for)g(lexical)g(analysis,)g(similar)g(to)g(the)h Fo(lex)p Fs(\(1\))e(and)291 1196 y Fo(flex)p Fs(\(1\))k(programs.)415 1295 y(In)39 b Fo(omake)p Fs(,)g(lexical)f(analyzers)f(can)h(b)r(e)h (constructed)f(dynamically)g(b)n(y)g(extending)291 1395 y(the)30 b Fo(Lexer)d Fs(class.)42 b(A)30 b(lexer)f(de\014nition)h (consists)e(of)i(a)f(set)g(of)h(directiv)n(es)f(sp)r(eci\014ed)g(with) 291 1494 y(metho)r(d)f(calls,)f(and)g(set)h(of)f(clauses)g(sp)r (eci\014ed)h(as)f(rules.)415 1594 y(F)-7 b(or)34 b(example,)i(consider) e(the)g(follo)n(wing)g(lexer)g(de\014nition,)j(whic)n(h)d(is)g(in)n (tended)h(for)291 1694 y(lexical)27 b(analysis)f(of)h(simple)h (arithmetic)g(expressions)d(for)j(a)f(desktop)g(calculator.)421 1852 y Fo(lexer1.)41 b(=)552 1951 y(extends)g($\(Lexer\))552 2151 y(other:)g(.)683 2250 y(eprintln\(Illegal)c(character:)i($*)k(\)) 683 2350 y(lex\(\))552 2549 y(white:)e($"[[:space:]]+")683 2649 y(lex\(\))552 2848 y(op:)h($"[-+*/\(\)]")683 2948 y(switch)f($*)683 3047 y(case)h(+)814 3147 y(Token.unit\($\(lo)o(c\),) 37 b(plus\))683 3246 y(case)42 b(-)814 3346 y(Token.unit\($\(lo)o(c\),) 37 b(minus\))683 3446 y(case)42 b(*)814 3545 y(Token.unit\($\(lo)o (c\),)37 b(mul\))683 3645 y(case)42 b(/)814 3745 y(Token.unit\($\(lo)o (c\),)37 b(div\))683 3844 y(case)42 b($"\(")814 3944 y(Token.unit\($\(lo)o(c\),)37 b(lparen\))683 4043 y(case)42 b($"\)")814 4143 y(Token.unit\($\(lo)o(c\),)37 b(rparen\))552 4342 y(number:)k($"[[:digit:]]+")683 4442 y(Token.pair\($\(loc)o(\),)c (exp,)42 b($\(int)f($*)i(\)\))552 4641 y(eof:)f($"\\'")683 4741 y(Token.unit\($\(loc)o(\),)37 b(eof\))415 4899 y Fs(This)25 b(program)e(de\014nes)i(an)f(ob)5 b(ject)25 b Fo(lexer1)d Fs(the)k(extends)f(the)g Fo(Lexer)e Fs(ob)5 b(ject,)25 b(whic)n(h)291 4998 y(de\014nes)i(lexing)g(en)n(vironmen)n (t.)p eop end %%Page: 168 168 TeXDict begin 168 167 bop 739 282 a @beginspecial @setspecial @endspecial Fs(168)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)863 515 y Fs(The)40 b(remainder)e(of)i(the)g(de\014nition)g(consists)f(of)g(a)g(set)h(of)f (clauses,)j(eac)n(h)d(with)h(a)739 615 y(metho)r(d)27 b(name)f(b)r(efore)g(the)h(colon;)f(a)g(regular)f(expression)g(after)h (the)h(colon;)f(and)g(in)h(this)739 715 y(case,)j(a)h(b)r(o)r(dy)-7 b(.)46 b(The)31 b(b)r(o)r(dy)f(is)h(optional,)g(if)g(it)g(is)f(not)h (sp)r(eci\014ed,)h(the)f(metho)r(d)g(with)g(the)739 814 y(giv)n(en)c(name)g(should)g(already)g(exist)g(in)h(the)g(lexer)f (de\014nition.)863 915 y Fi(NB)41 b Fs(The)32 b(clause)g(that)g(matc)n (hes)g(the)g Fi(longest)40 b Fs(pre\014x)32 b(of)g(the)h(input)g(is)f (selected.)50 b(If)739 1015 y(t)n(w)n(o)29 b(clauses)g(matc)n(h)g(the)h (same)f(input)i(pre\014x,)f(then)g(the)g Fi(last)38 b Fs(one)29 b(is)h(selected.)43 b(This)29 b(is)739 1115 y(unlik)n(e)e(most)h(standard)e(lexers,)h(but)h(mak)n(es)f(more)g (sense)g(for)g(extensible)g(grammars.)863 1216 y(The)e(\014rst)f (clause)g(matc)n(hes)g(an)n(y)g(input)h(that)g(is)f(not)h(matc)n(hed)f (b)n(y)g(the)h(other)f(clauses.)739 1315 y(In)34 b(this)h(case,)g(an)e (error)g(message)f(is)i(prin)n(ted)g(for)g(an)n(y)f(unkno)n(wn)h(c)n (haracter,)g(and)g(the)739 1415 y(input)20 b(is)f(skipp)r(ed.)35 b(Note)19 b(that)h(this)f(clause)g(is)g(selected)g(only)g(if)h(no)f (other)g(clause)g(matc)n(hes.)863 1516 y(The)32 b(second)g(clause)f(is) h(resp)r(onsible)f(for)g(ignoring)f(white)j(space.)49 b(If)32 b(whitespace)f(is)739 1616 y(found,)d(it)g(is)f(ignored,)g(and) g(the)h(lexer)f(is)h(called)f(recursiv)n(ely)-7 b(.)863 1717 y(The)34 b(third)g(clause)f(is)g(resp)r(onsible)g(for)g(the)h (arithmetic)g(op)r(erators.)53 b(It)34 b(mak)n(es)e(use)739 1816 y(of)f(the)g Fo(Token)e Fs(ob)5 b(ject,)31 b(whic)n(h)g(de\014nes) g(three)f(\014elds:)43 b(a)31 b Fo(loc)e Fs(\014eld)i(that)h(represen)n (ts)d(the)739 1916 y(source)d(lo)r(cation;)h(a)g Fo(name)p Fs(;)g(and)g(a)g Fo(value)p Fs(.)863 2017 y(The)k(lexer)f(de\014nes)g (the)h Fo(loc)e Fs(v)-5 b(ariable)29 b(to)h(b)r(e)h(the)g(lo)r(cation)f (of)g(the)h(curren)n(t)e(lexeme)739 2117 y(in)f(eac)n(h)f(of)g(the)h (metho)r(d)g(b)r(o)r(dies,)g(so)f(w)n(e)g(can)g(use)h(that)g(v)-5 b(alue)27 b(to)h(create)e(the)i(tok)n(ens.)863 2218 y(The)40 b Fo(Token.unit\($\(loc\))o(,)e(name\))f Fs(metho)r(d)k(constructs)e(a) h(new)g Fo(Token)d Fs(ob)5 b(ject)739 2318 y(with)28 b(the)g(giv)n(en)f(name,)g(and)h(a)f(default)h(v)-5 b(alue.)863 2419 y(The)19 b Fo(number)d Fs(clause)i(matc)n(hes)f(nonnegativ)n(e)g (in)n(teger)h(constan)n(ts.)33 b(The)18 b Fo(Token.pair\($\(loc)o(\),) 37 b(name,)42 b(value\))739 2518 y Fs(constructs)27 b(a)g(tok)n(en)g (with)h(the)g(giv)n(en)f(name)g(and)h(v)-5 b(alue.)863 2619 y(Lexer)18 b(ob)5 b(ject)18 b(op)r(erate)g(on)g Fo(InChannel)c Fs(ob)5 b(jects.)34 b(The)18 b(metho)r(d)h Fo(lexer1.lex-chann)o(el\()o(ch)o(an)o(nel)o(\))739 2719 y Fs(reads)26 b(the)i(next)g(tok)n(en)f(from)g(the)h(c)n(hannel)g (argumen)n(t.)739 2858 y @beginspecial @setspecial @endspecial 101 x Fk(10.11.10)112 b(Lexer)38 b(matc)m(hing)739 3115 y Fs(During)19 b(lexical)g(analysis,)h(clauses)f(are)f(selected)i(b)n (y)f(longest)f(matc)n(h.)34 b(That)20 b(is,)h(the)f(clause)739 3215 y(that)29 b(matc)n(hes)f(the)h(longest)f(sequence)g(of)h(input)h (c)n(haracters)c(is)j(c)n(hosen)f(for)g(ev)-5 b(aluation.)739 3315 y(If)33 b(no)f(clause)g(matc)n(hes,)h(the)g(lexer)f(raises)f(a)h Fo(RuntimeException)p Fs(.)45 b(If)33 b(more)f(than)h(one)739 3414 y(clause)24 b(matc)n(hes)h(the)h(same)e(amoun)n(t)h(of)g(input,)i (the)e(\014rst)g(one)g(is)g(c)n(hosen)f(for)h(ev)-5 b(aluation.)739 3553 y @beginspecial @setspecial @endspecial 102 x Fk(10.11.11)112 b(Extending)38 b(lexer)g(de\014nitions)739 3811 y Fs(Supp)r(ose)d(w)n (e)f(wish)h(to)f(augmen)n(t)g(the)h(lexer)f(example)g(so)g(that)h(it)g (ignores)f(commen)n(ts.)739 3910 y(W)-7 b(e)29 b(will)f(de\014ne)h (commen)n(ts)e(as)h(an)n(y)f(text)i(that)g(b)r(egins)f(with)h(the)f (string)g Fo(\(*)p Fs(,)f(ends)i(with)739 4010 y Fo(*\))p Fs(,)e(and)g(commen)n(ts)g(ma)n(y)g(b)r(e)h(nested.)863 4111 y(One)40 b(con)n(v)n(enien)n(t)f(w)n(a)n(y)g(to)g(do)h(this)g(is)g (to)g(de\014ne)g(a)f(separate)g(lexer)g(just)i(to)e(skip)739 4211 y(commen)n(ts.)870 4401 y Fo(lex-comment.)f(=)1000 4500 y(extends)j($\(Lexer\))1000 4700 y(level)h(=)h(0)1000 4899 y(other:)f(.)1131 4998 y(lex\(\))p eop end %%Page: 169 169 TeXDict begin 169 168 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(169)552 615 y Fo(term:)42 b($"[*][\)]")683 715 y(if)h($\(not)e ($\(eq)h($\(level\),)e(0\)\))814 814 y(level)h(=)i($\(sub)f ($\(level\),)e(1\))814 914 y(lex\(\))552 1113 y(next:)i($"[\(][*]")683 1213 y(level)f(=)j($\(add)d($\(level\),)f(1\))683 1312 y(lex\(\))552 1512 y(eof:)i($"\\'")683 1611 y(eprintln\(Untermi)o(na)o (ted)37 b(comment\))415 1792 y Fs(This)32 b(lexer)e(con)n(tains)h(a)g (\014eld)h Fo(level)d Fs(that)j(k)n(eeps)f(trac)n(k)f(of)i(the)g (nesting)f(lev)n(el.)48 b(On)291 1892 y(encoun)n(tering)27 b(a)i Fo(\(*)f Fs(string,)g(it)h(incremen)n(ts)g(the)g(lev)n(el,)g(and) f(for)h Fo(*\))p Fs(,)f(it)h(decremen)n(ts)g(the)291 1991 y(lev)n(el)e(if)h(nonzero,)e(and)i(con)n(tin)n(ues.)415 2091 y(Next,)33 b(w)n(e)e(need)g(to)h(mo)r(dify)g(our)e(previous)g (lexer)h(to)g(skip)h(commen)n(ts.)47 b(W)-7 b(e)32 b(can)f(do)291 2191 y(this)c(b)n(y)h(extending)f(the)h(lexer)f(ob)5 b(ject)28 b Fo(lexer1)d Fs(that)j(w)n(e)f(just)h(created.)421 2372 y Fo(lexer1.)41 b(+=)552 2471 y(comment:)f($"[\(][*]")683 2571 y(lex-comment.lex-)o(ch)o(ann)o(el)o(\($\()o(ch)o(an)o(nel)o(\)\)) 683 2670 y(lex\(\))415 2851 y Fs(The)27 b(b)r(o)r(dy)g(for)f(the)h (commen)n(t)g(clause)f(calls)g(the)h Fo(lex-comment)22 b Fs(lexer)k(when)h(a)g(com-)291 2951 y(men)n(t)g(is)h(encoun)n(tered,) f(and)g(con)n(tin)n(ues)g(lexing)g(when)h(that)g(lexer)f(returns.)291 3083 y @beginspecial @setspecial @endspecial 100 x Fk(10.11.12)112 b(Threading)39 b(the)e(lexer)h(ob)6 b(ject)291 3336 y Fs(Clause)34 b(b)r(o)r(dies)h(ma)n(y)g(also)f(end)h(with)h(an)f Fo(export)e Fs(directiv)n(e.)59 b(In)35 b(this)h(case)e(the)i(lexer)291 3436 y(ob)5 b(ject)39 b(itself)h(is)g(used)f(as)g(the)h(returned)g(tok) n(en.)72 b(If)40 b(used)g(with)g(the)g Fo(Parser)d Fs(ob)5 b(ject)291 3536 y(b)r(elo)n(w,)33 b(the)g(lexer)f(should)g(de\014ne)h (the)g Fo(loc)p Fs(,)g Fo(name)e Fs(and)h Fo(value)f Fs(\014elds)i(in)g(eac)n(h)e Fo(export)291 3635 y Fs(clause.)38 b(Eac)n(h)28 b(time)h(the)f Fo(Parser)f Fs(calls)g(the)i(lexer,)f(it)h (calls)f(it)h(with)g(the)g(lexer)e(returned)291 3735 y(from)g(the)h(previous)e(lex)i(in)n(v)n(o)r(cation.)291 3867 y @beginspecial @setspecial @endspecial 100 x Fk(10.11.13)112 b(P)m(arser)291 4021 y @beginspecial @setspecial @endspecial 99 x Fs(The)20 b Fo(Parser)d Fs(ob)5 b(ject)20 b(pro)n(vides)f(a)h (facilit)n(y)g(for)f(syn)n(tactic)h(analysis)f(based)g(on)h(con)n (text-free)291 4220 y(grammars.)415 4319 y Fo(Parser)c Fs(ob)5 b(jects)18 b(are)f(sp)r(eci\014ed)i(as)f(a)g(sequence)g(of)g (directiv)n(es,)h(sp)r(eci\014ed)g(with)g(metho)r(d)291 4419 y(calls;)27 b(and)g(pro)r(ductions,)g(sp)r(eci\014ed)h(as)f (rules.)415 4519 y(F)-7 b(or)22 b(example,)i(let's)f(\014nish)g (building)g(the)g(desktop)g(calculator)e(started)i(in)g(the)g Fo(Lexer)291 4618 y Fs(example.)421 4799 y Fo(parser1.)41 b(=)552 4899 y(extends)g($\(Parser\))p eop end %%Page: 170 170 TeXDict begin 170 169 bop 739 282 a @beginspecial @setspecial @endspecial Fs(170)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)1000 515 y Fo(#)1000 615 y(#)44 b(Use)e(the)g(main)g(lexer)1000 715 y(#)1000 814 y(lexer)g(=)h($\(lexer1\))1000 1013 y(#)1000 1113 y(#)h(Precedences,)38 b(in)43 b(ascending)d(order)1000 1213 y(#)1000 1312 y(left\(plus)g(minus\))1000 1412 y(left\(mul)h (div\))1000 1512 y(right\(uminus\))1000 1711 y(#)1000 1810 y(#)j(A)f(program)1000 1910 y(#)1000 2010 y(start\(prog\))1000 2209 y(prog:)f(exp)g(eof)1131 2309 y(return)f($1)1000 2508 y(#)1000 2607 y(#)j(Simple)d(arithmetic)e(expressions)1000 2707 y(#)1000 2807 y(exp:)j(minus)g(exp)g(:prec:)f(uminus)1131 2906 y(neg\($2\))1000 3106 y(exp:)h(exp)h(plus)f(exp)1131 3205 y(add\($1,)f($3\))1000 3404 y(exp:)h(exp)h(minus)e(exp)1131 3504 y(sub\($1,)g($3\))1000 3703 y(exp:)h(exp)h(mul)f(exp)1131 3803 y(mul\($1,)f($3\))1000 4002 y(exp:)h(exp)h(div)f(exp)1131 4102 y(div\($1,)f($3\))1000 4301 y(exp:)h(lparen)f(exp)i(rparen)1131 4401 y(return)e($2)863 4600 y Fs(P)n(arsers)22 b(are)h(de\014ned)h(as)g (extensions)f(of)h(the)h Fo(Parser)c Fs(class.)35 b(A)25 b Fo(Parser)c Fs(ob)5 b(ject)24 b(m)n(ust)739 4700 y(ha)n(v)n(e)36 b(a)g Fo(lexer)f Fs(\014eld.)65 b(The)38 b Fo(lexer)d Fs(is)h(not)h(required)f(to)h(b)r(e)h(a)e Fo(Lexer)f Fs(ob)5 b(ject,)39 b(but)f(it)739 4799 y(m)n(ust)f(pro)n(vide)g(a)g Fo(lexer.lex\(\))c Fs(metho)r(d)38 b(that)f(returns)g(a)g(tok)n(en)g (ob)5 b(ject)37 b(with)h Fo(name)739 4899 y Fs(and)30 b Fo(value)f Fs(\014elds.)45 b(F)-7 b(or)30 b(this)h(example,)g(w)n(e)f (use)g(the)h Fo(lexer1)d Fs(ob)5 b(ject)30 b(that)h(w)n(e)f(de\014ned) 739 4998 y(previously)-7 b(.)p eop end %%Page: 171 171 TeXDict begin 171 170 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(171)415 515 y(The)27 b(next)g(step)g(is)f(to)h(de\014ne)g (precedences)f(for)g(the)h(terminal)f(sym)n(b)r(ols.)36 b(The)27 b(prece-)291 615 y(dences)35 b(are)f(de\014ned)i(with)g(the)f Fo(left)p Fs(,)h Fo(right)p Fs(,)f(and)h Fo(nonassoc)c Fs(metho)r(ds)j(in)h(order)e(of)291 715 y(increasing)26 b(precedence.)415 816 y(The)g(grammar)f(m)n(ust)h(ha)n(v)n(e)f(at)h (least)g(one)g(start)g(sym)n(b)r(ol,)g(declared)f(with)i(the)g Fo(start)291 915 y Fs(metho)r(d.)415 1017 y(Next,)j(the)g(pro)r (ductions)e(in)i(the)f(grammar)f(are)g(listed)h(as)g(rules.)41 b(The)29 b(name)g(of)h(the)291 1116 y(pro)r(duction)25 b(is)g(listed)g(b)r(efore)g(the)h(colon,)f(and)g(a)g(sequence)g(of)g(v) -5 b(ariables)24 b(is)i(listed)f(to)h(the)291 1216 y(righ)n(t)35 b(of)h(the)g(colon.)61 b(The)36 b(b)r(o)r(dy)g(is)g(a)f(seman)n(tic)g (action)h(to)g(b)r(e)g(ev)-5 b(aluated)35 b(when)i(the)291 1316 y(pro)r(duction)27 b(is)g(recognized)f(as)h(part)g(of)h(the)g (input.)415 1417 y(In)38 b(this)f(example,)j(these)d(are)f(the)i(pro)r (ductions)f(for)g(the)g(arithmetic)h(expressions)291 1517 y(recognized)c(b)n(y)h(the)h(desktop)f(calculator.)59 b(The)35 b(seman)n(tic)g(action)g(p)r(erforms)g(the)h(cal-)291 1616 y(culation.)42 b(The)29 b(v)-5 b(ariables)28 b Fo($1,)43 b($2,)f(...)28 b Fs(corresp)r(ond)g(to)h(the)h(v)-5 b(alues)29 b(asso)r(ciated)f(with)291 1716 y(eac)n(h)e(of)i(the)g(v)-5 b(ariables)26 b(on)i(the)g(righ)n(t-hand-side)d(of)j(the)g(pro)r (duction.)291 1855 y @beginspecial @setspecial @endspecial 102 x Fk(10.11.14)112 b(Calling)39 b(the)e(parser)291 2113 y Fs(The)26 b(parser)f(is)h(called)g(with)h(the)g Fo($\(parser1.parse)o(-c)o(han)o(ne)o(l)38 b(start,)j(channel\))23 b Fs(or)291 2213 y Fo($\(parser1.parse)o(-fi)o(le)37 b(start,)k(file\))28 b Fs(functions.)46 b(The)30 b Fo(start)e Fs(argumen)n(t)h(is)i(the)291 2312 y(start)c(sym)n(b)r(ol,)g(and)g(the) h Fo(channel)d Fs(or)i Fo(file)f Fs(is)h(the)h(input)h(to)e(the)h (parser.)291 2452 y @beginspecial @setspecial @endspecial 102 x Fk(10.11.15)112 b(P)m(arsing)38 b(con)m(trol)291 2710 y Fs(The)27 b(parser)f(generator)f(generates)h(a)h(pushdo)n(wn)g (automation)g(based)g(on)g(LALR\(1\))g(ta-)291 2810 y(bles.)36 b(As)28 b(usual,)f(if)g(the)h(grammar)d(is)i(am)n(biguous,)f(this)i(ma) n(y)e(generate)g(shift/reduce)h(or)291 2909 y(reduce/reduce)32 b(con\015icts.)55 b(These)34 b(con\015icts)f(are)g(prin)n(ted)h(to)g (standard)e(output)j(when)291 3009 y(the)28 b(automaton)e(is)i (generated.)415 3110 y(By)f(default,)i(the)e(automaton)g(is)h(not)f (constructed)g(un)n(til)h(the)g(parser)e(is)i(\014rst)f(used.)415 3211 y(The)c Fo(build\(debug\))18 b Fs(metho)r(d)23 b(forces)f(the)h (construction)f(of)h(the)g(automaton.)34 b(While)291 3311 y(not)18 b(required,)h(it)g(is)f(wise)g(to)h(\014nish)f(eac)n(h)g (complete)g(parser)f(with)i(a)f(call)g(to)g(the)h Fo(build\(debug\))291 3411 y Fs(metho)r(d.)37 b(If)28 b(the)f Fo(debug)f Fs(v)-5 b(ariable)26 b(is)h(set,)h(this)g(also)e(prin)n(ts)h(with)h(parser)d (table)j(together)291 3510 y(with)g(an)n(y)f(con\015icts.)415 3611 y(The)32 b Fo(loc)f Fs(v)-5 b(ariable)31 b(is)h(de\014ned)h (within)g(action)e(b)r(o)r(dies,)j(and)e(represen)n(ts)f(the)h(input) 291 3711 y(range)26 b(for)h(all)g(tok)n(ens)g(on)g(the)h(righ)n (t-hand-side)e(of)i(the)g(pro)r(duction.)291 3851 y @beginspecial @setspecial @endspecial 101 x Fk(10.11.16)112 b(Extending)38 b(parsers)291 4109 y Fs(P)n(arsers)c(ma)n(y)i(also)g(b)r(e)i(extended)f (b)n(y)g(inheritance.)65 b(F)-7 b(or)37 b(example,)i(let's)e(extend)h (the)291 4208 y(grammar)25 b(so)i(that)h(it)g(also)f(recognizes)e(the)j Fo(<<)f Fs(and)h Fo(>>)e Fs(shift)j(op)r(erations.)415 4309 y(First,)g(w)n(e)g(extend)g(the)g(lexer)g(so)f(that)h(it)g (recognizes)f(these)g(tok)n(ens.)41 b(This)28 b(time,)i(w)n(e)291 4409 y(c)n(ho)r(ose)c(to)h(lea)n(v)n(e)g Fo(lexer1)e Fs(in)n(tact,)i(instead)h(of)f(using)h(the)g(+=)e(op)r(erator.)421 4600 y Fo(lexer2.)41 b(=)552 4700 y(extends)g($\(lexer1\))552 4899 y(lsl:)h($"<<")683 4998 y(Token.unit\($\(loc)o(\),)37 b(lsl\))p eop end %%Page: 172 172 TeXDict begin 172 171 bop 739 282 a @beginspecial @setspecial @endspecial Fs(172)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)1000 615 y Fo(asr:)42 b($">>")1131 715 y(Token.unit\($\(loc\))o(,)37 b(asr\))863 935 y Fs(Next,)31 b(w)n(e)e(extend)g(the)h(parser)e(to)h(handle)g (these)h(new)f(op)r(erators.)40 b(W)-7 b(e)30 b(in)n(tend)g(that)739 1035 y(the)21 b(bit)n(wise)f(op)r(erators)e(ha)n(v)n(e)h(lo)n(w)n(er)g (precedence)h(than)g(the)h(other)f(arithmetic)g(op)r(erators.)739 1134 y(The)28 b(t)n(w)n(o-argumen)n(t)d(form)i(of)h(the)g Fo(left)e Fs(metho)r(d)i(accomplishes)e(this.)870 1364 y Fo(parser2.)40 b(=)1000 1464 y(extends)h($\(parser1\))1000 1663 y(left\(plus,)f(lsl)i(lsr)h(asr\))1000 1863 y(lexer)f(=)h ($\(lexer2\))1000 2062 y(exp:)f(exp)h(lsl)f(exp)1131 2161 y(lsl\($1,)f($3\))1000 2361 y(exp:)h(exp)h(asr)f(exp)1131 2460 y(asr\($1,)f($3\))863 2681 y Fs(In)31 b(this)g(case,)f(w)n(e)g (use)g(the)h(new)f(lexer)g Fo(lexer2)p Fs(,)f(and)h(w)n(e)g(add)g(pro)r (ductions)g(for)g(the)739 2780 y(new)e(shift)g(op)r(erations.)739 2954 y @beginspecial @setspecial @endspecial 109 x Fk(10.11.17)112 b(P)m(asswd)739 3125 y @beginspecial @setspecial @endspecial 109 x Fs(The)20 b Fo(Passwd)e Fs(ob)5 b(ject)20 b(represen)n(ts)f(an)h (en)n(try)f(in)i(the)f(system's)g(user)f(database.)34 b(It)20 b(con)n(tains)739 3334 y(the)28 b(follo)n(wing)e(\014elds.)780 3554 y Fo(pw)p 873 3554 27 4 v 31 w(name)p Fs(:)35 b(the)28 b(login)f(name.)780 3758 y Fo(pw)p 873 3758 V 31 w(passwd)p Fs(:)34 b(the)28 b(encrypted)g(passw)n(ord.)780 3962 y Fo(pw)p 873 3962 V 31 w(uid)p Fs(:)36 b(user)27 b(id)g(of)h(the)g (user.)780 4166 y Fo(pw)p 873 4166 V 31 w(gid)p Fs(:)36 b(group)26 b(id)i(of)g(the)g(user.)780 4370 y Fo(pw)p 873 4370 V 31 w(gecos)p Fs(:)35 b(the)28 b(user)f(name)g(or)g(commen)n (t)g(\014eld.)780 4574 y Fo(pw)p 873 4574 V 31 w(dir)p Fs(:)36 b(the)28 b(user's)e(home)i(directory)-7 b(.)780 4778 y Fo(pw)p 873 4778 V 31 w(shell)p Fs(:)35 b(the)28 b(user's)f(default)h(shell.)863 4998 y(Not)g(all)f(the)h(\014elds)g (will)g(ha)n(v)n(e)e(meaning)h(on)h(all)f(op)r(erating)g(systems.)p eop end %%Page: 173 173 TeXDict begin 173 172 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(173)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.11.18)112 b(getp)m(wnam,)39 b(getp)m(wuid)291 591 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 465 674 a Fo($\(getpwnam)g(name...\))i(:)i (Passwd)596 774 y(name)f(:)h(String)465 873 y($\(getpwuid)c(uid...\))i (:)i(Passwd)596 973 y(uid)f(:)h(Int)465 1073 y(raises)e (RuntimeException)415 1267 y Fs(The)19 b Fo(getpwnam)c Fs(function)k(lo)r(oks)e(up)i(an)f(en)n(try)g(b)n(y)g(the)g(user's)g (login)g(and)g(the)h Fo(getpwuid)291 1367 y Fs(function)25 b(lo)r(oks)g(up)g(an)g(en)n(try)g(b)n(y)g(user's)f(n)n(umerical)h(id)g (\(uid\).)38 b(If)25 b(no)g(en)n(try)g(is)g(found,)h(an)291 1467 y(exception)h(will)h(b)r(e)g(raised.)291 1612 y @beginspecial @setspecial @endspecial 103 x Fk(10.11.19)112 b(getp)m(w)m(en)m(ts)291 1791 y @beginspecial @setspecial @endspecial 465 1874 a Fo($\(getpwents\))39 b(:)k(Array)415 2069 y Fs(The)32 b Fo(getpwents)27 b Fs(function)32 b(returns)f(an)g (arra)n(y)e(of)i Fo(Passwd)e Fs(ob)5 b(jects,)32 b(one)f(for)g(ev)n (ery)291 2168 y(user)36 b(fund)h(in)g(the)g(system)g(user)f(database.) 63 b(Note)37 b(that)g(dep)r(ending)g(on)g(the)g(op)r(erat-)291 2268 y(ing)31 b(system)h(and)g(on)g(the)g(setup)h(of)f(the)g(user)f (database,)h(the)h(returned)e(arra)n(y)f(ma)n(y)i(b)r(e)291 2368 y(incomplete)27 b(or)g(ev)n(en)g(empt)n(y)-7 b(.)291 2513 y @beginspecial @setspecial @endspecial 103 x Fk(10.11.20)112 b(Group)291 2692 y @beginspecial @setspecial @endspecial 83 x Fs(The)31 b Fo(Group)e Fs(ob)5 b(ject)31 b(represen)n(ts)f(an)g (en)n(try)h(in)g(the)h(system's)f(user)f(group)g(database.)47 b(It)291 2875 y(con)n(tains)26 b(the)i(follo)n(wing)f(\014elds.)332 3069 y Fo(gr)p 425 3069 27 4 v 31 w(name)p Fs(:)35 b(the)28 b(group)e(name.)332 3248 y Fo(gr)p 425 3248 V 31 w(group)p Fs(:)35 b(the)28 b(encrypted)f(passw)n(ord.)332 3426 y Fo(gr)p 425 3426 V 31 w(gid)p Fs(:)35 b(group)27 b(id)h(of)f(the)h (group.)332 3604 y Fo(gr)p 425 3604 V 31 w(mem)p Fs(:)35 b(the)28 b(group)f(mem)n(b)r(er's)g(user)g(names.)415 3799 y(Not)h(all)f(the)h(\014elds)g(will)g(ha)n(v)n(e)e(meaning)h(on)g (all)h(op)r(erating)e(systems.)291 3944 y @beginspecial @setspecial @endspecial 103 x Fk(10.11.21)112 b(getgrnam,)38 b(getgrgid)291 4123 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 465 4206 a Fo($\(getgrnam)h (name...\))i(:)i(Group)596 4306 y(name)f(:)h(String)465 4405 y($\(getgrgid)c(gid...\))i(:)i(Group)596 4505 y(gid)f(:)h(Int)465 4604 y(raises)e(RuntimeException)415 4799 y Fs(The)25 b Fo(getgrnam)d Fs(function)j(lo)r(oks)f(up)i(a)e(group)g(en)n(try)g(b) n(y)h(the)g(group's)f(name)h(and)g(the)291 4899 y Fo(getgrgid)c Fs(function)j(lo)r(oks)g(up)g(an)g(en)n(try)g(b)n(y)f(groups's)g(n)n (umerical)g(id)i(\(gid\).)36 b(If)25 b(no)e(en)n(try)291 4998 y(is)k(found,)h(an)f(exception)h(will)f(b)r(e)h(raised.)p eop end %%Page: 174 174 TeXDict begin 174 173 bop 739 282 a @beginspecial @setspecial @endspecial Fs(174)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.11.22)112 b(tgetstr)739 588 y @beginspecial @setspecial @endspecial 870 669 a Fo($\(tgetstr)40 b(id\))i(:)h(String)1000 768 y(id)g(:)g(String)863 930 y Fs(The)34 b Fo(tgetstr)c Fs(function)k(lo)r(oks)e(up)i(the)f (terminal)g(capabilit)n(y)g(with)g(the)h(indicated)739 1030 y Fo(id)p Fs(.)71 b(This)40 b(assumes)e(the)i(terminfo)f(to)g(lo)r (okup)g(is)h(giv)n(en)e(in)i(the)f Fo(TERM)f Fs(en)n(vironmen)n(t)739 1129 y(v)-5 b(ariable.)39 b(This)28 b(function)h(returns)f(an)g(empt)n (y)h(v)-5 b(alue)28 b(if)h(the)g(giv)n(en)f(terminal)g(capabilit)n(y) 739 1229 y(is)f(not)h(de\014ned.)863 1329 y(Note:)50 b(if)35 b(y)n(ou)e(in)n(tend)h(to)g(use)g(the)g(v)-5 b(alue)34 b(returned)g(b)n(y)g Fo(tgetstr)d Fs(inside)j(the)g(shell)739 1428 y @beginspecial @setspecial @endspecial Fo(prompt)p @beginspecial @setspecial @endspecial Fs(,)25 b(y)n(ou)i(need)h(to)f (wrap)g(it)h(using)f(the)h @beginspecial @setspecial @endspecial Fo(prompt-invisible)21 b Fs(function)p @beginspecial @setspecial @endspecial(.)739 1559 y @beginspecial @setspecial @endspecial 98 x Fk(10.11.23)112 b(xterm-escap)s(e-b)s(egin,)41 b(xterm-escap)s(e-end)739 1730 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 870 1810 a Fo($\(xterm-escape-)o(beg)o(in)o(\))d(:)43 b(String)870 1910 y($\(xterm-escape-)o(end)o(\))37 b(:)44 b(String)863 2072 y Fs(The)31 b Fo(xterm-escape-be)o(gin)23 b Fs(and)30 b Fo(xterm-escape-end)24 b Fs(functions)31 b(return)e(the)i(es-)739 2171 y(cap)r(e)i(sequences)g(that)g(can)h(b)r(e)f(used)h(to)f(set)g (the)h(XT)-7 b(erm)34 b(windo)n(w)f(title.)55 b(Will)34 b(return)739 2271 y(empt)n(y)28 b(v)-5 b(alues)27 b(if)h(this)g (capabilit)n(y)f(is)g(not)h(a)n(v)-5 b(ailable.)863 2371 y(Note:)37 b(if)27 b(y)n(ou)f(in)n(tend)h(to)f(use)h(these)f(strings)g (inside)h(the)g(shell)f @beginspecial @setspecial @endspecial Fo(prompt)p @beginspecial @setspecial @endspecial Fs(,)f(y)n(ou)h(need) g(to)739 2470 y(use)18 b Fo($\(prompt_invisib)o(le_)o(be)o(gin)o(\)$)o (\(xt)o(er)o(m-)o(esc)o(ap)o(e-b)o(eg)o(in)o(\))13 b Fs(and)18 b Fo($\(xterm-escape-e)o(nd)o(\)$)o(\(pr)o(om)o(pt_)o(in)o (vi)o(sib)o(le)o(_en)o(d\))o Fs(.)739 2601 y @beginspecial @setspecial @endspecial 98 x Fk(10.11.24)112 b(xterm-escap)s(e)739 2772 y @beginspecial @setspecial @endspecial 870 2852 a Fo($\(xterm-escape)37 b(s\))43 b(:)g(Sequence)863 3014 y Fs(When)28 b(the)f Fo(TERM)e Fs(en)n(vironmen)n(t)h(v)-5 b(ariable)26 b(indicates)h(that)g(the)g(XT)-7 b(erm)27 b(title)g(setting)739 3114 y(capabilit)n(y)17 b(is)i(a)n(v)-5 b(ailable,)19 b Fo($\(xterm-escape)38 b(s\))17 b Fs(is)h(equiv)-5 b(alen)n(t)19 b(to)f Fo($\(xterm-escape-b)o(eg)o(in\))o(s$)o(\(x)o(ter) o(m-)o(esc)o(ap)o(e-)o(end)o(\))p Fs(.)739 3213 y(Otherwise,)27 b(it)h(returns)f(an)g(empt)n(y)h(v)-5 b(alue.)863 3313 y(Note:)47 b(if)33 b(y)n(ou)e(in)n(tend)i(to)f(use)g(the)h(v)-5 b(alue)32 b(returned)g(b)n(y)g Fo(xterm-escape)27 b Fs(inside)33 b(the)739 3413 y(shell)27 b @beginspecial @setspecial @endspecial Fo(prompt)p @beginspecial @setspecial @endspecial Fs(,)f(y)n(ou)h(need)g(to)h(wrap)f(it)h(using)f(the)h @beginspecial @setspecial @endspecial Fo(prompt-invisible)21 b Fs(function)p @beginspecial @setspecial @endspecial(.)739 3544 y @beginspecial @setspecial @endspecial 97 x Fk(10.11.25)112 b(prompt-in)m(visible-b)s(egin,)41 b(prompt-in)m(visible-end)739 3714 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 870 3795 a Fo($\(prompt-invisi)o(ble)o(-b)o (egi)o(n\))c(:)43 b(String)870 3894 y($\(prompt-invisi)o(ble)o(-e)o (nd\))37 b(:)43 b(String)863 4056 y Fs(The)e Fo(prompt-invisible-)o (beg)o(in)34 b Fs(and)41 b Fo(prompt-invisible)o(-en)o(d)35 b Fs(functions)41 b(re-)739 4156 y(turn)34 b(the)h(escap)r(e)f (sequences)g(that)g(m)n(ust)h(used)f(to)g(mark)g(the)g(\\in)n(visible") g(sections)f(of)739 4255 y(the)28 b(shell)f @beginspecial @setspecial @endspecial Fo(prompt)p @beginspecial @setspecial @endspecial 26 w Fs(\(suc)n(h)g(as)g(v)-5 b(arious)26 b(escap)r(e)i(sequences\).)739 4389 y @beginspecial @setspecial @endspecial 95 x Fk(10.11.26)112 b(prompt-in)m(visible)739 4557 y @beginspecial @setspecial @endspecial 870 4637 a Fo($\(prompt-invisi)o(ble)37 b(s\))43 b(:)g(Sequence)863 4799 y Fs(The)19 b Fo(prompt-invisible)12 b Fs(will)18 b(wrap)g(its)g(argumen)n(t)g(with)h Fo($\(prompt-invisi)o(ble)o(-b)o (eg)o(in\))739 4899 y Fs(and)24 b Fo($\(prompt-invisibl)o(e-)o(end)o (\))p Fs(.)30 b(All)25 b(the)g(`in)n(visible")f(sections)g(of)g(the)h (shell)g @beginspecial @setspecial @endspecial Fo(prompt)p @beginspecial @setspecial @endspecial 739 4998 a Fs(\(suc)n(h)i(as)g(v) -5 b(arious)27 b(escap)r(e)g(sequences\))g(m)n(ust)h(b)r(e)g(wrapp)r (ed)f(this)h(w)n(a)n(y)-7 b(.)p eop end %%Page: 175 175 TeXDict begin 175 174 bop 291 282 a @beginspecial @setspecial @endspecial Fp(10.11.)62 b(HIGHER-LEVEL)27 b(IO)g(FUNCTIONS)1168 b Fs(175)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(10.11.27)112 b(gettimeofda)m(y)291 588 y @beginspecial @setspecial @endspecial 421 669 a Fo($\(gettimeofday\))38 b(:)43 b(Float)415 851 y Fs(The)21 b Fo(gettimeofday)c Fs(function)22 b(returns)e(the)i(time)f(of)h(da)n(y)e(in)h(seconds)g (since)g(Jan)n(uary)291 951 y(1,)27 b(1970.)p eop end %%Page: 176 176 TeXDict begin 176 175 bop 739 282 a @beginspecial @setspecial @endspecial Fs(176)567 b Fp(CHAPTER)27 b(10.)64 b(FILE,)27 b(I/O)g(AND)h(SYSTEM)g(OPERA)-7 b(TIONS)p eop end %%Page: 177 177 TeXDict begin 177 176 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 713 x Fm(Chapter)64 b(11)291 1567 y Fr(Shell)76 b(commands)291 2005 y Fs(Shell)34 b(commands)g(\(commands)g(to)g(b)r(e)h(executed)f(b) n(y)g(the)h(op)r(erating)e(system\))i(can)f(b)r(e)291 2105 y(freely)27 b(mixed)h(with)g(other)f(co)r(de.)415 2212 y Fq(NOTE)p Fs(:)32 b(the)h(syn)n(tax)e(and)h(shell)g(usage)f(is)h (iden)n(tical)g(on)g(all)g(platforms,)h(including)291 2311 y(Win32.)48 b(T)-7 b(o)31 b(a)n(v)n(oid)f(p)r(ortabilit)n(y)h (problems)f(on)i(Win32,)g(it)g(is)f(recommended)g(that)h(y)n(ou)291 2411 y(a)n(v)n(oid)26 b(the)i(use)f(of)h(the)g(nativ)n(e)f(shell)g(in)n (terpreter)g Fo(cmd)p Fs(.)465 2628 y Fo(LIB)42 b(=)h($\(dir)f(lib\)) 465 2727 y(println\(The)d(contents)h(of)j(the)f($\(LIB\))f(directory)f (is:\))465 2827 y(ls)j($\(LIB\))291 2989 y @beginspecial @setspecial @endspecial 149 x Fl(11.1)135 b(Simple)46 b(commands)291 3333 y Fs(The)31 b(syn)n(tax)g(of)g(shell)g(commands)g (is)g(similar)g(to)g(the)h(syn)n(tax)f(used)g(b)n(y)g(the)h(Unix)g (shell)291 3432 y Fo(bash)p Fs(.)69 b(In)39 b(general,)h(a)e(command)h (is)g(a)f Fi(pip)l(eline)p Fs(.)73 b(A)39 b(basic)f(command)g(is)h (part)g(of)f(a)291 3532 y(pip)r(eline.)53 b(It)33 b(is)f(sp)r (eci\014ed)h(with)g(the)h(name)e(of)h(an)f(executable)g(and)h(some)f (argumen)n(ts.)291 3632 y(Here)27 b(are)f(some)h(examples.)465 3849 y Fo(ls)465 3948 y(ls)43 b(-AF)f(.)465 4048 y(echo)g(Hello)f (world)415 4258 y Fs(The)23 b(command)g(is)f(found)i(using)e(the)h (curren)n(t)g(searc)n(h)e(path)i(in)g(the)g(v)-5 b(ariable)22 b Fo(PATH[])p Fs(,)291 4358 y(whic)n(h)27 b(should)g(de\014ne)h(an)g (arra)n(y)d(of)i(directories)g(con)n(taining)f(executables.)415 4464 y(A)i(command)f(ma)n(y)g(also)g(b)r(e)h(pre\014xed)f(b)n(y)g(en)n (vironmen)n(t)g(v)-5 b(ariable)26 b(de\014nitions.)465 4681 y Fo(#)43 b(Prints)e("Hello)g(world")465 4781 y(env)h(X="Hello)f (world")g(Y=2)h(printenv)e(X)465 4880 y(#)j(Pass)f(the)g(include)f (path)h(to)h(the)f(Visual)f(C++)465 4980 y(env)h(include="c:\\Progr)o (am)37 b(Files\\Microsoft)g(SDK\\include")i(cl)k(foo.cpp)1660 5208 y Fs(177)p eop end %%Page: 178 178 TeXDict begin 178 177 bop 739 282 a @beginspecial @setspecial @endspecial Fs(178)1314 b Fp(CHAPTER)27 b(11.)64 b(SHELL)27 b(COMMANDS)739 432 y @beginspecial @setspecial @endspecial 83 x Fl(11.2)135 b(Globbing)739 698 y Fs(Commands)36 b(ma)n(y)g(con)n(tain)h(wildcard)f(patterns.)64 b(A)38 b(pattern)e(sp)r(eci\014es)h(a)g(set)f(of)h(\014les)739 797 y(through)26 b(a)h(limited)g(kind)h(of)f(regular)e(expression.)35 b(P)n(atterns)26 b(are)g(expanded)g(b)r(efore)h(the)739 897 y(function)h(is)g(executed.)870 1081 y Fo(#)43 b(List)f(all)g (files)g(with)g(a)h(.c)f(suffix)870 1180 y(ls)g(*.c)870 1380 y(#)h(List)f(all)g(files)g(with)g(a)h(single)e(character)f (prefix,)g(and)j(.c)f(suffix)870 1479 y(ls)g(?.c)870 1678 y(#)h(Rename)e(the)h(file)g(hello.ml)e(to)j(foo.ml)870 1778 y(mv)f({hello,foo}.ml)863 1962 y Fs(A)21 b(comprehensiv)n(e)e (description)h(of)h(OMak)n(e)e(glob)g(patterns)h(is)h(giv)n(en)e(in)i (Section)f @beginspecial @setspecial @endspecial(10.4)p @beginspecial @setspecial @endspecial(.)739 2104 y @beginspecial @setspecial @endspecial 133 x Fl(11.3)135 b(Bac)l(kground)45 b(jobs)739 2420 y Fs(The)27 b(command)h(ma)n(y)e(also)h(b)r(e)h(placed) f(in)g(the)h(bac)n(kground)e(b)n(y)h(placing)g(an)g(amp)r(ersand)739 2519 y(after)g(the)i(command.)37 b(Con)n(trol)27 b(returns)g(to)h(the)g (shell)g(without)g(w)n(aiting)g(for)f(the)h(job)g(to)739 2619 y(complete.)37 b(The)27 b(job)h(con)n(tin)n(ues)f(to)g(run)h(in)g (the)g(bac)n(kground.)913 2803 y Fo(gcc)43 b(-o)f(hugeprogram)d(*.c)k (&)739 2947 y @beginspecial @setspecial @endspecial 131 x Fl(11.4)135 b(File)46 b(redirection)739 3261 y Fs(Input)28 b(and)f(output)i(can)e(b)r(e)h(redirected)e(to)i(\014les)f(b)n(y)g (using)h(the)g Fo(<)p Fs(,)f Fo(>)p Fs(,)g(and)g Fo(>&)g Fs(directiv)n(es)739 3360 y(after)g(the)h(command.)913 3544 y Fo(#)43 b(Write)f(to)h(the)f("foo")g(file)913 3644 y(echo)g(Hello)g(world)f(>)i(foo)913 3843 y(#)g(Redirect)e(input)g (from)h(the)g(foo)h(file)913 3943 y(cat)g(<)g(foo)913 4142 y(#)g(Redirect)e(standard)f(output)h(and)h(errors)g(to)g(the)h (foo)f(file)913 4242 y(gcc)h(-o)f(boo)h(*.c)f(>&)h(foo)739 4386 y @beginspecial @setspecial @endspecial 131 x Fl(11.5)135 b(Pip)t(elines)739 4700 y Fs(Pip)r(elines)27 b(are)f(sequences)g(of)h (commands,)f(where)h(the)g(output)h(from)f(eac)n(h)f(command)g(is)739 4799 y(sen)n(t)31 b(to)g(the)h(next.)48 b(Pip)r(elines)31 b(are)f(de\014ned)i(with)g(the)f Fo(|)g Fs(and)g Fo(|&)g Fs(syn)n(tax.)47 b(With)32 b Fo(|)f Fs(the)739 4899 y(output)j(is)f (redirected,)g(but)h(errors)d(are)h(not.)54 b(With)34 b Fo(|&)e Fs(b)r(oth)i(output)f(and)g(errors)e(are)739 4998 y(redirected.)p eop end %%Page: 179 179 TeXDict begin 179 178 bop 291 282 a @beginspecial @setspecial @endspecial Fp(11.6.)63 b(CONDITIONAL)28 b(EXECUTION)1350 b Fs(179)421 515 y Fo(#)44 b(Send)d(the)i(output)e(of)i(the)f(ls)h (command)d(to)j(the)g(printer)421 615 y(ls)g(*.c)f(|)i(lpr)421 814 y(#)g(Send)d(output)h(and)g(errors)f(to)i(jyh)f(as)h(email)421 914 y(gcc)g(-o)f(hugefile)f(*.c)h(|&)h(mail)f(jyh)291 1057 y @beginspecial @setspecial @endspecial 131 x Fl(11.6)135 b(Conditional)47 b(execution)291 1369 y Fs(Commands)30 b(ma)n(y)g(also)g(b)r(e)h(comp)r(osed)g(though)f(conditional)h(ev)-5 b(aluation)30 b(using)g(the)i Fo(||)291 1469 y Fs(and)g Fo(&&)g Fs(syn)n(tax.)52 b(Ev)n(ery)31 b(command)h(has)g(an)h(in)n (teger)e(exit)i(co)r(de,)h(whic)n(h)f(ma)n(y)f(b)r(e)h(zero)291 1569 y(or)g(some)g(other)h(in)n(teger.)56 b(A)34 b(command)g(is)g(said) g(to)g Fi(suc)l(c)l(e)l(e)l(d)43 b Fs(if)34 b(its)h(exit)f(co)r(de)g (is)g(zero.)291 1668 y(The)39 b(expression)e Fo(command1)k(&&)h (command2)36 b Fs(executes)j Fo(command2)d Fs(only)j(if)g Fo(command1)291 1768 y Fs(succeeds.)66 b(The)38 b(expression)f Fo(command1)j(||)j(command2)34 b Fs(executes)k Fo(command2)c Fs(only)j(if)291 1868 y Fo(command1)24 b Fs(fails.)421 2046 y Fo(#)44 b(Display)c(the)j(x/y)f(file)g(if)h(possible)421 2145 y(cd)g(x)g(&&)g(cat)f(y)421 2345 y(#)i(Run)e(foo.exe,)e(or)j (print)e(an)i(error)f(message)421 2444 y(\(test)g(-x)h(foo.exe)d(&&)j (foo.exe\))d(||)j(echo)f("foo.exe)e(is)j(not)f(executable")291 2576 y @beginspecial @setspecial @endspecial 142 x Fl(11.7)135 b(Grouping)291 2900 y Fs(P)n(aren)n(thesis)24 b(are)h(used)h(for)g (grouping)f(in)h(a)g(pip)r(eline)h(or)e(conditional)h(command.)36 b(In)27 b(the)291 3000 y(follo)n(wing)e(expression,)g(the)h Fo(test)f Fs(function)i(is)f(used)g(to)g(test)h(whether)f(the)g Fo(foo.exe)e Fs(\014le)291 3099 y(is)c(executable.)34 b(If)20 b(it)h(is,)h(the)e Fo(foo.exe)e Fs(\014le)i(is)g(executed.)35 b(If)20 b(the)h(\014le)f(is)g(not)h(executable)f(\(or)291 3199 y(if)25 b(the)h Fo(foo.exe)d Fs(command)i(fails\),)h(the)g (message)e Fo("foo.exe)40 b(is)j(not)f(executable")21 b Fs(is)291 3298 y(prin)n(ted.)421 3477 y Fo(#)44 b(Run)e(foo.exe,)e (or)j(print)e(an)i(error)f(message)421 3576 y(\(test)g(-x)h(foo.exe)d (&&)j(foo.exe\))d(||)j(echo)f("foo.exe)e(is)j(not)f(executable")291 3708 y @beginspecial @setspecial @endspecial 142 x Fl(11.8)135 b(What)45 b(is)h(a)f(shell)g(command?)291 4032 y Fs(Syn)n(tactially)-7 b(,)27 b(shell)g(commands)g(are)g(an)n(y)g(line)g(that)h(is)g(not)f (one)h(of)f(the)h(follo)n(wing:)415 4210 y Fj(\017)41 b Fs(A)28 b(v)-5 b(ariable)27 b(de\014nition)h(of)f(the)h(form)f Fo(VAR=string)415 4375 y Fj(\017)41 b Fs(A)28 b(function)g(call)f Fo(f\(...\))f Fs(or)g(metho)r(d)i(call)g Fo(o.f\(...\))415 4539 y Fj(\017)41 b Fs(A)28 b(rule)f(de\014nition)h(con)n(taining)f(a)g (colon)g Fo(string:)41 b(...)415 4703 y Fj(\017)g Fs(A)28 b(sp)r(ecial)f(command,)h(including)f(the)h(follo)n(wing:)592 4867 y Fq({)41 b Fo(if)i(...)592 4998 y Fq({)e Fo(switch)g(...)p eop end %%Page: 180 180 TeXDict begin 180 179 bop 739 282 a @beginspecial @setspecial @endspecial Fs(180)1314 b Fp(CHAPTER)27 b(11.)64 b(SHELL)27 b(COMMANDS)1040 515 y Fq({)41 b Fo(match)h(...)1040 654 y Fq({)f Fo(section)g(...)1040 792 y Fq({)g Fo(return)g(...)863 985 y Fs(Commands)d(ma)n(y)f(also)f(b)r(e)j(builtin)f(\(aliases\).)67 b(See)38 b(the)g(do)r(cumen)n(tation)g(for)f(the)739 1085 y @beginspecial @setspecial @endspecial Fo(Shell)26 b Fs(ob)5 b(ject)p @beginspecial @setspecial @endspecial 27 w(for)27 b(more)g(information.)739 1238 y @beginspecial @setspecial @endspecial 136 x Fl(11.9)135 b(Basic)46 b(builtin)f(functions)739 1458 y @beginspecial @setspecial @endspecial 119 x Fk(11.9.1)112 b(ec)m(ho)739 1633 y @beginspecial @setspecial @endspecial 102 x Fs(The)28 b Fo(echo)e Fs(function)i(prin)n(ts)f(a)g(string.)739 1931 y Fo($\(echo)41 b(\))739 2031 y(echo)h()739 2177 y @beginspecial @setspecial @endspecial 101 x Fk(11.9.2)112 b(cd)739 2333 y @beginspecial @setspecial @endspecial 103 x Fs(The)28 b Fo(cd)e Fs(function)j(c)n(hanges)d(the)i(curren)n(t)e (directory)-7 b(.)913 2632 y Fo(cd\(dir\))1044 2732 y(dir)42 b(:)i(Dir)863 2925 y Fs(The)28 b Fo(cd)f Fs(function)h(also)f(supp)r (orts)g(a)g(2-argumen)n(t)f(form:)913 3121 y Fo($\(cd)42 b(dir,)g(e\))1044 3221 y(dir)g(:)i(Dir)1044 3320 y(e)f(:)g(expression) 863 3514 y Fs(In)35 b(the)f(t)n(w)n(o-argumen)n(t)e(form,)j(expression) e Fo(e)g Fs(is)h(ev)-5 b(aluated)34 b(in)g(the)h(directory)d Fo(dir)p Fs(.)739 3613 y(The)c(curren)n(t)e(directory)h(is)g(not)h(c)n (hanged)e(otherwise.)863 3716 y(The)31 b(b)r(eha)n(vior)f(of)g(the)i Fo(cd)e Fs(function)h(can)f(b)r(e)i(c)n(hanged)d(with)j(the)f Fo(CDPATH)d Fs(v)-5 b(ariable,)739 3815 y(whic)n(h)25 b(sp)r(eci\014es)h(a)f(searc)n(h)f(path)i(for)f(directories.)35 b(This)25 b(is)g(normally)g(useful)h(only)f(in)h(the)739 3915 y Fo(osh)g Fs(command)i(in)n(terpreter.)913 4111 y Fo(CDPATH)41 b(:)j(Dir)e(Sequence)863 4304 y Fs(F)-7 b(or)23 b(example,)h(the)g(follo)n(wing)e(will)i(c)n(hange)e(directory) g(to)h(the)h(\014rst)f(directory)f Fo(./foo)p Fs(,)739 4404 y Fo(~/dir1/foo)p Fs(,)h Fo(~/dir2/foo)p Fs(.)913 4600 y Fo(CDPATH[])41 b(=)1044 4700 y(.)1044 4799 y($\(HOME\)/dir1)1044 4899 y($\(HOME\)/dir2)913 4998 y(cd)i(foo)p eop end %%Page: 181 181 TeXDict begin 181 180 bop 291 282 a @beginspecial @setspecial @endspecial Fp(11.10.)62 b(JOB)27 b(CONTR)n(OL)g(BUIL)-7 b(TIN)28 b(FUNCTIONS)942 b Fs(181)291 432 y @beginspecial @setspecial @endspecial 83 x Fl(11.10)135 b(Job)46 b(con)l(trol)f (builtin)h(functions)291 599 y @beginspecial @setspecial @endspecial 118 x Fk(11.10.1)112 b(jobs)291 791 y @beginspecial @setspecial @endspecial 82 x Fs(The)27 b Fo(jobs)f Fs(function)i(prin)n (ts)g(a)f(list)h(of)f(jobs.)415 974 y Fo(jobs)291 1116 y @beginspecial @setspecial @endspecial 100 x Fk(11.10.2)112 b(bg)291 1290 y @beginspecial @setspecial @endspecial 82 x Fs(The)27 b Fo(bg)g Fs(function)h(places)f(a)g(job)h(in)g(the)g (bac)n(kground.)415 1473 y Fo(bg)43 b()291 1615 y @beginspecial @setspecial @endspecial 100 x Fk(11.10.3)112 b(fg)291 1789 y @beginspecial @setspecial @endspecial 82 x Fs(The)27 b Fo(fg)g Fs(function)h(brings)f(a)g(job)h(to)f(the)h (foreground.)415 1972 y Fo(fg)43 b()291 2114 y @beginspecial @setspecial @endspecial 99 x Fk(11.10.4)112 b(stop)291 2288 y @beginspecial @setspecial @endspecial 82 x Fs(The)27 b Fo(stop)f Fs(function)i(susp)r(ends)g(a)f(job.)415 2471 y Fo(stop)42 b()291 2613 y @beginspecial @setspecial @endspecial 99 x Fk(11.10.5)112 b(w)m(ait)291 2767 y @beginspecial @setspecial @endspecial 102 x Fs(The)30 b Fo(wait)e Fs(function)j(w)n(aits)e(for)h(a)f(job)h(to)g(\014nish.)45 b(If)30 b(no)g(pro)r(cess)f(iden)n(ti\014ers)h(are)f(giv)n(en,)291 2968 y(the)f(shell)f(w)n(aits)g(for)g(all)g(jobs)h(to)f(complete.)415 3070 y Fo(wait)42 b()291 3211 y @beginspecial @setspecial @endspecial 100 x Fk(11.10.6)112 b(kill)291 3366 y @beginspecial @setspecial @endspecial 101 x Fs(The)27 b Fo(kill)f Fs(function)i(signals)f(a)g(job.)415 3568 y Fo(kill)42 b([signal])e()291 3719 y @beginspecial @setspecial @endspecial 133 x Fl(11.11)135 b(Command)46 b(history)291 3959 y @beginspecial @setspecial @endspecial 94 x Fk(11.11.1)112 b(history)291 4128 y @beginspecial @setspecial @endspecial 465 4210 a Fo($\(history-index\))37 b(:)43 b(Int)465 4309 y($\(history\))c(:)44 b(String)d(Sequence)465 4409 y(history-file)e(:)k(File)465 4509 y(history-length)38 b(:)43 b(Int)415 4698 y Fs(The)29 b(history)f(v)-5 b(ariables)28 b(manage)g(the)h(command-line)g(history)f(in)h Fo(osh)p Fs(.)40 b(They)29 b(ha)n(v)n(e)291 4798 y(no)e(e\013ect)h(in)g Fo(omake)p Fs(.)415 4899 y(The)40 b Fo(history-index)34 b Fs(v)-5 b(ariable)38 b(is)h(the)h(curren)n(t)e(index)i(in)n(to)f(the) g(command-line)291 4998 y(history)-7 b(.)36 b(The)27 b Fo(history)e Fs(v)-5 b(ariable)27 b(is)g(the)h(curren)n(t)f (command-line)g(history)-7 b(.)p eop end %%Page: 182 182 TeXDict begin 182 181 bop 739 282 a @beginspecial @setspecial @endspecial Fs(182)1314 b Fp(CHAPTER)27 b(11.)64 b(SHELL)27 b(COMMANDS)863 515 y Fs(The)h Fo(history-file)23 b Fs(v)-5 b(ariable)26 b(can)i(b)r(e)g(rede\014ned)f(if)h(y)n(ou)f(w)n(an)n(t)g (the)h(command-line)739 615 y(history)f(to)g(b)r(e)h(sa)n(v)n(ed.)36 b(The)27 b(default)h(v)-5 b(alue)28 b(is)f Fo(~/.omake/osh_hist)o(or)o (y)p Fs(.)863 715 y(The)41 b Fo(history-length)36 b Fs(v)-5 b(ariable)40 b(can)g(b)r(e)h(rede\014ned)g(to)g(sp)r(ecify)g(the)g (maxim)n(um)739 814 y(n)n(um)n(b)r(er)27 b(of)h(lines)f(in)h(the)g (history)f(that)h(y)n(ou)f(w)n(an)n(t)g(sa)n(v)n(ed.)35 b(The)28 b(default)g(v)-5 b(alue)27 b(is)h Fo(100)p Fs(.)p eop end %%Page: 183 183 TeXDict begin 183 182 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(12)291 1553 y Fr(The)77 b(standard)g(ob)13 b(jects)291 1985 y Fo(Pervasives)22 b Fs(de\014nes)27 b(the)h(ob)5 b(jects)26 b(that)h(are)f(de\014ned)i(in)f(all)g (programs.)34 b(The)27 b(follo)n(wing)291 2084 y(ob)5 b(jects)27 b(are)f(de\014ned.)291 2224 y @beginspecial @setspecial @endspecial 134 x Fl(12.1)135 b(P)l(erv)-7 b(asiv)l(es)46 b(ob)7 b(jects)291 2463 y @beginspecial @setspecial @endspecial 93 x Fk(12.1.1)112 b(Ob)6 b(ject)291 2629 y @beginspecial @setspecial @endspecial 80 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b(none.)415 2809 y(The)28 b Fo(Object)d Fs(ob)5 b(ject)27 b(is)h(the)g(ro)r(ot)f(ob)5 b(ject.)36 b(Ev)n(ery)26 b(class)h(is)g(a)g(sub)r(class)g(of)h Fo(Object)p Fs(.)415 2908 y(It)g(pro)n(vides)e(the)i(follo)n(wing)f(\014elds:)415 3083 y Fj(\017)41 b Fo($\(o.object-length)o(\))p Fs(:)31 b(the)d(n)n(um)n(b)r(er)f(of)h(\014elds)f(and)h(metho)r(ds)f(in)h(the)g (ob)5 b(ject.)415 3245 y Fj(\017)41 b Fo($\(o.object-mem)d(\))p Fs(:)c(returns)27 b Fo(true)e Fs(i\013)j(the)g Fo()d Fs(is)i(a)g(\014eld)g(or)f(metho)r(d)498 3345 y(of)i(the)g(ob)5 b(ject.)415 3508 y Fj(\017)41 b Fo($\(o.object-add)d(,)j (\))p Fs(:)34 b(adds)27 b(the)g(\014eld)h(to)g(the)f(ob)5 b(ject,)28 b(return-)498 3607 y(ing)g(a)f(new)g(ob)5 b(ject.)415 3770 y Fj(\017)41 b Fo($\(o.object-find)d(\))p Fs(:)32 b(fetc)n(hes)24 b(the)g(\014eld)g(or)f(metho)r(d)i(from)e(the)i (ob)5 b(ject;)24 b(it)498 3870 y(is)k(equiv)-5 b(alen)n(t)27 b(to)g Fo($\(o.\))p Fs(,)d(but)k(the)g(v)-5 b(ariable)27 b(can)g(b)r(e)h(non-constan)n(t.)415 4032 y Fj(\017)41 b Fo($\(o.object-map)d(\))p Fs(:)c(maps)27 b(a)g(function)h(o)n(v) n(er)d(the)j(ob)5 b(ject.)36 b(The)27 b(function)498 4132 y(should)37 b(tak)n(e)f(t)n(w)n(o)g(argumen)n(ts;)k(the)e(\014rst) e(is)h(a)g(\014eld)g(name,)i(the)e(second)g(is)g(the)498 4232 y(v)-5 b(alue)25 b(of)h(that)f(\014eld.)37 b(The)25 b(result)g(is)g(a)g(new)h(ob)5 b(ject)25 b(constructed)g(from)g(the)g (v)-5 b(alues)498 4331 y(returned)27 b(b)n(y)h(the)g(function.)415 4494 y Fj(\017)41 b Fo(o.object-foreach)p Fs(:)26 b(the)19 b Fo(object-foreach)12 b Fs(form)18 b(is)h(equiv)-5 b(alen)n(t)18 b(to)g Fo(object-map)p Fs(,)498 4593 y(but)28 b(with)g(altered)f(syn)n (tax.)629 4799 y Fo(o.object-foreach)o(\(<)o(var)o(1>)o(,)38 b(\))760 4899 y()1660 5208 y Fs(183)p eop end %%Page: 184 184 TeXDict begin 184 183 bop 739 282 a @beginspecial @setspecial @endspecial Fs(184)1027 b Fp(CHAPTER)27 b(12.)64 b(THE)27 b(ST)-7 b(AND)n(ARD)30 b(OBJECTS)946 515 y Fs(F)-7 b(or)27 b(example,)h(the)g(follo)n(wing)e(function)i(prin)n(ts)g(all)f(the)h (\014elds)f(of)h(an)f(ob)5 b(ject)28 b Fo(o)p Fs(.)1077 732 y Fo(PrintObject\(o\))38 b(=)1208 832 y(o.object-foreach)o(\(v,)f (x\))1339 932 y(println\($\(v\))h(=)44 b($\(x\)\))946 1248 y Fs(The)26 b Fo(export)c Fs(form)j(is)g(v)-5 b(alid)25 b(in)g(a)g Fo(object-foreach)19 b Fs(b)r(o)r(dy)-7 b(.)37 b(The)25 b(follo)n(wing)f(func-)946 1348 y(tion)k(collects)f(just)h (the)g(\014eld)g(names)f(of)h(an)f(ob)5 b(ject.)1077 1565 y Fo(FieldNames\(o\))38 b(=)1208 1664 y(names[])j(=)1208 1764 y(o.object-foreach)o(\(v,)c(x\))1339 1864 y(names[])j(+=)j($\(v\)) 1339 1963 y(export)1208 2063 y(return)e($\(names\))739 2280 y @beginspecial @setspecial @endspecial 116 x Fk(12.1.2)112 b(Map)739 2469 y @beginspecial @setspecial @endspecial 81 x Fs(P)n(aren)n(t)26 b(ob)5 b(jects:)36 b Fo(Object)p Fs(.)863 2650 y(A)f Fo(Map)d Fs(ob)5 b(ject)34 b(is)g(a)f(dictionary)g (from)g(v)-5 b(alues)34 b(to)g(v)-5 b(alues.)55 b(The)34 b Fo()e Fs(v)-5 b(alues)33 b(are)739 2749 y(restricted)g(to)h (simple)g(v)-5 b(alues:)50 b(in)n(tegers,)34 b(\015oating-p)r(oin)n(t)g (n)n(um)n(b)r(ers,)h(strings,)g(\014les,)g(di-)739 2849 y(rectories,)26 b(and)h(arra)n(ys)e(of)j(simple)g(v)-5 b(alues.)863 2949 y(The)28 b(Map)f(ob)5 b(ject)28 b(pro)n(vides)e(the)i (follo)n(wing)f(metho)r(ds.)863 3132 y Fj(\017)41 b Fo($\(o.length\))p Fs(:)33 b(the)28 b(n)n(um)n(b)r(er)f(of)h(items)g(in)f(the)h(map.)863 3299 y Fj(\017)41 b Fo($\(o.mem)g(\))p Fs(:)35 b(returns)27 b Fo(true)f Fs(i\013)i(the)g Fo()d Fs(is)j(de\014ned)g(in)g(the)g (map.)863 3466 y Fj(\017)41 b Fo($\(o.add)g(,)g(\))p Fs(:)i(adds)32 b(the)h(\014eld)f(to)h(the)f(map,)i(returning)d(a)h(new) 946 3566 y(map.)863 3733 y Fj(\017)41 b Fo($\(o.find)g(\))p Fs(:)34 b(fetc)n(hes)28 b(the)g(\014eld)g(from)f(the)h(map.)863 3900 y Fj(\017)41 b Fo($\(o.keys\))p Fs(:)46 b(fetc)n(hes)33 b(an)g(arra)n(y)f(of)h(all)g(the)h(k)n(eys)f(in)h(the)g(map,)h(in)f (alphab)r(etical)946 3999 y(order.)863 4166 y Fj(\017)41 b Fo($\(o.values\))p Fs(:)33 b(fetc)n(hes)27 b(an)h(arra)n(y)d(of)i (all)g(the)h(v)-5 b(alues)27 b(in)h(the)g(map,)f(in)h(the)g(alpha-)946 4266 y(b)r(etical)g(order)f(of)g(the)h(corresp)r(onding)e(k)n(eys.)863 4433 y Fj(\017)41 b Fo($\(o.map)g(\))p Fs(:)52 b(maps)36 b(a)g(function)h(o)n(v)n(er)e(the)i(map.)63 b(The)36 b(function)h(should)946 4533 y(tak)n(e)c(t)n(w)n(o)f(argumen)n(ts;)j (the)f(\014rst)f(is)g(a)f(\014eld)i(name,)g(the)g(second)f(is)g(the)g (v)-5 b(alue)33 b(of)946 4632 y(that)23 b(\014eld.)36 b(The)23 b(result)f(is)h(a)f(new)g(ob)5 b(ject)23 b(constructed)f(from) g(the)h(v)-5 b(alues)23 b(returned)946 4732 y(b)n(y)28 b(the)g(function.)863 4899 y Fj(\017)41 b Fo(o.foreach)p Fs(:)34 b(the)28 b Fo(foreach)d Fs(form)j(is)g(equiv)-5 b(alen)n(t)27 b(to)h Fo(map)p Fs(,)f(but)h(with)h(altered)e(syn-)946 4998 y(tax.)p eop end %%Page: 185 185 TeXDict begin 185 184 bop 291 282 a @beginspecial @setspecial @endspecial Fp(12.1.)63 b(PER)-9 b(V)g(ASIVES)27 b(OBJECTS)1565 b Fs(185)629 515 y Fo(o.foreach\()o(,)37 b(\))760 615 y()498 901 y Fs(F)-7 b(or)27 b(example,)g(the)h(follo)n(wing) f(function)h(prin)n(ts)f(all)h(the)g(\014elds)f(of)h(an)f(ob)5 b(ject)27 b Fo(o)p Fs(.)629 1087 y Fo(PrintObject\(o\))38 b(=)760 1187 y(o.foreach\(v,)g(x\))890 1286 y(println\($\(v\))h(=)k ($\(x\)\))498 1572 y Fs(The)d Fo(export)e Fs(form)i(is)g(v)-5 b(alid)40 b(in)h(a)f Fo(foreach)d Fs(b)r(o)r(dy)-7 b(.)75 b(The)40 b(follo)n(wing)f(function)498 1672 y(collects)27 b(just)h(the)g(\014eld)g(names)f(of)h(the)g(map.)629 1858 y Fo(FieldNames\(o\))38 b(=)760 1957 y(names)j(=)760 2057 y(o.foreach\(v,)d(x\))890 2157 y(names)k(+=)h($\(v\))890 2256 y(export)760 2356 y(return)e($\(names\))415 2642 y Fs(There)36 b(is)h(also)f(simpler)g(syn)n(tax)g(when)h(the)g(k)n(ey)f (is)h(a)f(string.)64 b(The)36 b(table)h(can)g(b)r(e)291 2741 y(de\014ned)30 b(using)f(de\014nitions)h(with)h(the)f(form)f Fo($|key|)f Fs(\(the)i(n)n(um)n(b)r(er)g(of)g(pip)r(e)g(sym)n(b)r(ols)f Fo(|)291 2841 y Fs(is)e(allo)n(w)n(ed)f(to)i(v)-5 b(ary\).)465 2999 y Fo($|key)41 b(1|)i(=)g(value1)465 3099 y($||key1|key2||)38 b(=)43 b(value2)172 b(#)43 b(The)f(key)h(is)f(key1|key2)465 3198 y(X)h(=)g($|key)f(1|)653 b(#)43 b(Define)e(X)i(to)g(be)g(the)f (value)g(of)g(field)g($|key)f(1|)415 3356 y Fs(The)36 b(usual)g(mo)r(di\014ers)g(are)f(also)g(allo)n(w)n(ed.)61 b(The)36 b(expression)f Fo($`|key|)e Fs(represen)n(ts)291 3456 y(lazy)27 b(ev)-5 b(aluation)27 b(of)g(the)h(k)n(ey)-7 b(,)27 b(and)h Fo($,|key|)c Fs(is)k(normal)e(ev)-5 b(aluation.)291 3586 y @beginspecial @setspecial @endspecial 98 x Fk(12.1.3)112 b(Num)m(b)s(er)291 3738 y @beginspecial @setspecial @endspecial 99 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Object)p Fs(.)415 3937 y(The)27 b Fo(Number)d Fs(ob)5 b(ject)27 b(is)f(the)h(paren)n(t)f(ob)5 b(ject)27 b(for)f(in)n(tegers)g(and)g (\015oating-p)r(oin)n(t)g(n)n(um-)291 4036 y(b)r(ers.)291 4148 y @beginspecial @setspecial @endspecial 117 x Fk(12.1.4)112 b(In)m(t)291 4318 y @beginspecial @setspecial @endspecial 100 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Number)p Fs(.)415 4517 y(The)28 b Fo(Int)e Fs(ob)5 b(ject)28 b(represen)n(ts)e (in)n(teger)g(v)-5 b(alues.)291 4646 y @beginspecial @setspecial @endspecial 100 x Fk(12.1.5)112 b(Float)291 4799 y @beginspecial @setspecial @endspecial 100 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Number)p Fs(.)415 4998 y(The)28 b Fo(Float)d Fs(ob)5 b(ject)28 b(represen)n(ts)e(\015oating-p)r(oin)n (t)g(n)n(um)n(b)r(ers.)p eop end %%Page: 186 186 TeXDict begin 186 185 bop 739 282 a @beginspecial @setspecial @endspecial Fs(186)1027 b Fp(CHAPTER)27 b(12.)64 b(THE)27 b(ST)-7 b(AND)n(ARD)30 b(OBJECTS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(12.1.6)112 b(Sequence)739 588 y @beginspecial @setspecial @endspecial 81 x Fs(P)n(aren)n(t)26 b(ob)5 b(jects:)36 b Fo(Object)p Fs(.)863 768 y(The)c Fo(Sequence)c Fs(ob)5 b(ject)31 b(represen)n(ts)e(a)i(generic)f(ob)5 b(ject)31 b(con)n(taining)f(sequen)n(tial)h(ele-)739 868 y(men)n(ts.)37 b(It)28 b(pro)n(vides)e(the)i(follo)n(wing)e(metho)r (ds.)863 1030 y Fj(\017)41 b Fo($\(s.length\))p Fs(:)33 b(the)28 b(n)n(um)n(b)r(er)f(of)h(elemen)n(ts)f(in)h(the)g(sequence.) 863 1187 y Fj(\017)41 b Fo($\(s.map)g(\))p Fs(:)47 b(maps)34 b(a)f(function)i(o)n(v)n(er)d(the)i(\014elds)g(in)g(the)h (sequence.)55 b(The)946 1287 y(function)37 b(should)f(tak)n(e)f(one)h (argumen)n(t.)61 b(The)37 b(result)e(is)h(a)g(new)g(sequence)g(con-)946 1387 y(structed)28 b(from)f(the)h(v)-5 b(alues)27 b(returned)h(b)n(y)f (the)h(function.)863 1544 y Fj(\017)41 b Fo(s.foreach)p Fs(:)34 b(the)28 b Fo(foreach)d Fs(form)j(is)g(equiv)-5 b(alen)n(t)27 b(to)h Fo(map)p Fs(,)f(but)h(with)h(altered)e(syn-)946 1644 y(tax.)1077 1835 y Fo(s.foreach\(\))1208 1935 y()946 2225 y Fs(F)-7 b(or)21 b(example,)h(the)f(follo)n(wing)f (function)h(prin)n(ts)g(all)f(the)i(elemen)n(ts)f(of)f(the)i(sequence.) 1077 2416 y Fo(PrintSequence\(s\))37 b(=)1208 2516 y(s.foreach\(x\)) 1339 2616 y(println\(Elem)h(=)44 b($\(x\)\))946 2906 y Fs(The)d Fo(export)c Fs(form)j(is)g(v)-5 b(alid)41 b(in)f(a)g Fo(foreach)d Fs(b)r(o)r(dy)-7 b(.)75 b(The)41 b(follo)n(wing)e(function)946 3006 y(coun)n(ts)28 b(the)f(n)n(um)n(b)r (er)h(of)f(zeros)g(in)g(the)h(sequence.)1077 3197 y Fo(Zeros\(s\))40 b(=)1208 3296 y(count)h(=)j($\(int)d(0\))1208 3396 y(s.foreach\(v\)) 1339 3496 y(if)h($\(equal)f($\(v\),)h(0\))1469 3595 y(count)g(=)h ($\(add)f($\(count\),)e(1\))1469 3695 y(export)1339 3795 y(export)1208 3894 y(return)h($\(count\))863 4185 y Fj(\017)g Fo($\(s.forall)f(\))p Fs(:)f(tests)30 b(whether)g(eac)n(h)g (elemen)n(t)g(of)g(the)g(sequence)g(sati\014es)946 4284 y(a)e(predicate.)863 4442 y Fj(\017)41 b Fo($\(s.exists)f(\))p Fs(:)31 b(tests)22 b(whether)g(the)g(sequence)f(con)n(tains)g(an)g (elemen)n(t)h(that)946 4542 y(satis\014es)27 b(a)g(predicate.)863 4700 y Fj(\017)41 b Fo($\(s.sort)g(\))p Fs(:)32 b(sorts)23 b(a)g(sequence.)35 b(The)24 b Fo()e Fs(is)h(a)h (comparison)e(function.)946 4799 y(It)h(tak)n(es)e(t)n(w)n(o)h(elemen)n (ts)g Fo(\(x,)42 b(y\))22 b Fs(of)g(the)g(sequence,)h(compares)e(them,) j(and)e(returns)946 4899 y(a)32 b(negativ)n(e)f(n)n(um)n(b)r(er)h(if)h Fh(x)e(<)g(y)s Fs(,)i(a)f(p)r(ositiv)n(e)f(n)n(um)n(b)r(er)h(if)h Fh(x)e(>)g(y)s Fs(,)i(and)f(zero)f(if)i(the)946 4998 y(t)n(w)n(o)27 b(elemen)n(ts)h(are)e(equal.)p eop end %%Page: 187 187 TeXDict begin 187 186 bop 291 282 a @beginspecial @setspecial @endspecial Fp(12.1.)63 b(PER)-9 b(V)g(ASIVES)27 b(OBJECTS)1565 b Fs(187)585 515 y Fo(osh>)42 b(items)g(=)h($\(int)e(0)j(3)f(-2\))585 615 y(osh>)f(items.forall\(x)c(=>)43 b($\(gt)f($x,)g(0\)\))585 715 y(-)h(:)h(bool)e(=)h(false)585 814 y(osh>)f(items.exists\(x)c(=>)43 b($\(gt)f($x,)g(0\)\))585 914 y(-)h(:)h(bool)e(=)h(true)585 1013 y(osh>)f(items.sort\($\(comp)o(ar)o(e\)\))585 1113 y(-)h(:)h(Array)d(=)i(-2)g(3)g(0)291 1331 y @beginspecial @setspecial @endspecial 117 x Fk(12.1.7)112 b(Arra)m(y)291 1521 y @beginspecial @setspecial @endspecial 81 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Sequence)p Fs(.)415 1702 y(The)24 b Fo(Array)f Fs(is)h(a)f(random-access)f(sequence.)35 b(It)25 b(pro)n(vides)e(the)h(follo)n(wing)f(additional)291 1802 y(metho)r(ds.)415 1986 y Fj(\017)41 b Fo($\(s.nth)g(\))p Fs(:)35 b(returns)27 b(elemen)n(t)h Fo(i)f Fs(of)h(the)g(sequence.)415 2154 y Fj(\017)41 b Fo($\(s.rev)g(\))p Fs(:)35 b(returns)27 b(the)h(rev)n(ersed)e(sequence.)291 2289 y @beginspecial @setspecial @endspecial 100 x Fk(12.1.8)112 b(String)291 2463 y @beginspecial @setspecial @endspecial 80 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Array)p Fs(.)291 2680 y @beginspecial @setspecial @endspecial 98 x Fk(12.1.9)112 b(F)-9 b(un)291 2832 y @beginspecial @setspecial @endspecial 101 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Object)p Fs(.)415 3033 y(The)28 b Fo(Fun)e Fs(ob)5 b(ject)28 b(pro)n(vides)e(the)i(follo)n(wing)e (metho)r(ds.)415 3200 y Fj(\017)41 b Fo($\(f.arity\))p Fs(:)33 b(the)28 b(arit)n(y)e(if)j(the)f(function.)291 3337 y @beginspecial @setspecial @endspecial 98 x Fk(12.1.10)112 b(Rule)291 3489 y @beginspecial @setspecial @endspecial 100 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Object)p Fs(.)415 3690 y(The)h Fo(Rule)e Fs(ob)5 b(ject)38 b(represen)n(ts)e(a)i (build)g(rule.)68 b(It)38 b(do)r(es)f(not)h(curren)n(tly)f(ha)n(v)n(e)g (an)n(y)291 3789 y(metho)r(ds.)291 3908 y @beginspecial @setspecial @endspecial 116 x Fk(12.1.11)112 b(T)-9 b(arget)291 4098 y @beginspecial @setspecial @endspecial 80 x Fs(P)n(aren)n(t)25 b(ob)5 b(ject:)37 b Fo(Object)p Fs(.)415 4279 y(The)28 b Fo(Target)d Fs(ob)5 b(ject)27 b(con)n(tains)g(information)g (collected)g(for)g(a)g(sp)r(eci\014c)h(target)f(\014le.)415 4463 y Fj(\017)41 b Fo(target)p Fs(:)35 b(the)28 b(target)e(\014le.)415 4631 y Fj(\017)41 b Fo(effects)p Fs(:)35 b(the)28 b(\014les)g(that)g (ma)n(y)g(b)r(e)g(mo)r(di\014ed)g(b)n(y)g(a)f(side-e\013ect)h(when)h (this)f(target)498 4731 y(is)g(built.)415 4899 y Fj(\017)41 b Fo(scanner_deps)p Fs(:)36 b(static)30 b(dep)r(endencies)g(that)g(m)n (ust)g(b)r(e)g(built)g(b)r(efore)g(this)g(target)498 4998 y(can)d(b)r(e)h(scanned.)p eop end %%Page: 188 188 TeXDict begin 188 187 bop 739 282 a @beginspecial @setspecial @endspecial Fs(188)1027 b Fp(CHAPTER)27 b(12.)64 b(THE)27 b(ST)-7 b(AND)n(ARD)30 b(OBJECTS)863 515 y Fj(\017)41 b Fo(static-deps)p Fs(:)33 b(statically-de\014ned)27 b(build)h(dep)r(endencies)g(of)f(this)h(target.)863 687 y Fj(\017)41 b Fo(build-deps)p Fs(:)51 b(all)37 b(the)g(build)g(dep)r (endencies)g(for)f(the)h(target,)i(including)d(static)946 786 y(and)28 b(scanned)f(dep)r(endencies.)863 958 y Fj(\017)41 b Fo(build-values)p Fs(:)32 b(all)c(the)g(v)-5 b(alue)27 b(dep)r(endencies)h(asso)r(ciated)e(with)i(the)g(build.)863 1129 y Fj(\017)41 b Fo(build-commands)p Fs(:)32 b(the)c(commands)f(to)g (build)h(the)g(target.)863 1301 y Fj(\017)41 b Fo(output-file)p Fs(:)30 b(if)24 b(output)f(w)n(as)e(div)n(erted)i(to)f(a)g(\014le,)i (with)f(one)g(of)f(the)h Fo(--output-*)946 1400 y Fs(options)k @beginspecial @setspecial @endspecial(A)p @beginspecial @setspecial @endspecial(,)h(this)g(\014eld)g(names)f(that)h(\014le.)37 b(Otherwise)27 b(it)h(is)g Fo(false)p Fs(.)863 1588 y(The)g(ob)5 b(ject)27 b(supp)r(orts)h(the)g(follo)n(wing)e(metho)r(ds.)863 1776 y Fj(\017)41 b Fo(find\(file\))p Fs(:)29 b(returns)17 b(a)h(T)-7 b(arget)17 b(ob)5 b(ject)19 b(for)e(the)i(giv)n(en)f (\014le.)34 b(Raises)17 b(a)h Fo(RuntimeException)946 1876 y Fs(if)29 b(the)f(sp)r(eci\014ed)f(target)g(is)h(not)f(part)g(of) h(the)g(pro)5 b(ject.)863 2047 y Fj(\017)41 b Fo(find-optional\(fil)o (e\))p Fs(:)61 b(returns)42 b(a)g Fo(Target)e Fs(ob)5 b(ject)43 b(for)f(the)h(giv)n(en)e(\014le,)47 b(or)946 2147 y Fo(false)26 b Fs(if)i(the)g(\014le)g(is)f(not)h(part)f(of)h(the) g(pro)5 b(ject.)863 2335 y(NOTE:)26 b(the)g(information)f(for)g(a)h (target)f(is)h(constructed)f(dynamically)-7 b(,)26 b(so)f(it)h(is)g(p)r (os-)739 2435 y(sible)h(that)g(the)h Fo(Target)c Fs(ob)5 b(ject)27 b(for)g(a)f(no)r(de)h(will)h(con)n(tain)e(di\013eren)n(t)h(v) -5 b(alues)27 b(in)g(di\013eren)n(t)739 2534 y(con)n(texts.)34 b(The)23 b(easiest)e(w)n(a)n(y)g(to)h(mak)n(e)f(sure)h(that)g(the)h Fo(Target)d Fs(information)h(is)h(complete)739 2634 y(is)30 b(to)g(compute)g(it)g(within)h(a)f(rule)f(b)r(o)r(dy)-7 b(,)32 b(where)d(the)h(rule)g(dep)r(ends)h(on)e(the)i(target)e(\014le,) 739 2734 y(or)e(the)h(dep)r(endencies)f(of)h(the)g(target)f(\014le.)739 2872 y @beginspecial @setspecial @endspecial 101 x Fk(12.1.12)112 b(No)s(de)739 3028 y @beginspecial @setspecial @endspecial 101 x Fs(P)n(aren)n(t)26 b(ob)5 b(jects:)36 b Fo(Object)p Fs(.)863 3230 y(The)e Fo(Node)e Fs(ob)5 b(ject)34 b(is)f(the)h(paren)n (t)f(ob)5 b(ject)34 b(for)f(\014les)g(and)h(directories.)54 b(It)34 b(supp)r(orts)739 3329 y(the)28 b(follo)n(wing)e(op)r (erations.)863 3500 y Fj(\017)41 b Fo($\(node.stat\))p Fs(:)32 b(returns)27 b(a)g Fo(stat)f Fs(ob)5 b(ject)28 b(for)f(the)h(\014le.)37 b(If)28 b(the)f(\014le)h(is)g(a)f(sym)n(b)r (olic)946 3599 y(link,)32 b(the)f Fo(stat)e Fs(information)h(is)h(for)f (the)h(destination)f(of)h(the)g(link,)g(not)g(the)g(link)946 3699 y(itself.)863 3870 y Fj(\017)41 b Fo($\(node.lstat\))p Fs(:)32 b(returns)27 b(a)g Fo(stat)f Fs(ob)5 b(ject)27 b(for)h(the)g(\014le)f(or)g(sym)n(b)r(olic)g(link.)863 4042 y Fj(\017)41 b Fo($\(node.unlink\))p Fs(:)32 b(remo)n(v)n(es)25 b(the)j(\014le.)863 4213 y Fj(\017)41 b Fo($\(node.rename)e(\))p Fs(:)34 b(renames)26 b(the)i(\014le.)863 4385 y Fj(\017)41 b Fo($\(node.link)e(\))p Fs(:)c(creates)26 b(a)h(hard)g(link)h Fo()d Fs(to)j(this)g(\014le.)863 4556 y Fj(\017)41 b Fo($\(node.symlink)d(\))p Fs(:)c(create)27 b(a)g(sym)n(b)r (olic)g(link)h Fo()e Fs(to)h(this)h(\014le.)863 4727 y Fj(\017)41 b Fo($\(node.chmod)e(\))p Fs(:)34 b(c)n(hange)27 b(the)h(p)r(ermission)f(of)g(this)h(\014le.)863 4899 y Fj(\017)41 b Fo($\(node.chown)e(,)i(\))p Fs(:)53 b(c)n(hange)35 b(the)i(o)n(wner)f(and)g(group)f(id)i(of)g(this) 946 4998 y(\014le.)p eop end %%Page: 189 189 TeXDict begin 189 188 bop 291 282 a @beginspecial @setspecial @endspecial Fp(12.1.)63 b(PER)-9 b(V)g(ASIVES)27 b(OBJECTS)1565 b Fs(189)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(12.1.13)112 b(File)291 570 y @beginspecial @setspecial @endspecial 101 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Node)p Fs(.)415 772 y(The)28 b(\014le)g(ob)5 b(ject)27 b(represen)n(ts)f(the)i(name)f(of)h(a)f(\014le.)291 910 y @beginspecial @setspecial @endspecial 102 x Fk(12.1.14)112 b(Dir)291 1067 y @beginspecial @setspecial @endspecial 101 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Node)p Fs(.)415 1269 y(The)28 b Fo(Dir)e Fs(ob)5 b(ject)28 b(represen)n(ts)e (the)i(name)f(of)h(a)f(directory)-7 b(.)291 1407 y @beginspecial @setspecial @endspecial 101 x Fk(12.1.15)112 b(Channel)291 1563 y @beginspecial @setspecial @endspecial 101 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Object)p Fs(.)415 1765 y(A)28 b Fo(Channel)d Fs(is)i(a)g(generic)g(IO)g(c)n(hannel.)37 b(It)28 b(pro)n(vides)e(the)i(follo)n(wing)e(metho)r(ds.)415 1935 y Fj(\017)41 b Fo($\(o.close\))p Fs(:)33 b(close)27 b(the)h(c)n(hannel.)415 2107 y Fj(\017)41 b Fo($\(o.name\))p Fs(:)33 b(returns)27 b(the)h(\014le)g(name)f(asso)r(ciated)g(with)h (the)g(c)n(hannel.)291 2236 y @beginspecial @setspecial @endspecial 111 x Fk(12.1.16)112 b(InChannel)291 2402 y @beginspecial @setspecial @endspecial 101 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Channel)p Fs(.)415 2604 y(A)26 b Fo(InChannel)d Fs(is)i(an)h(input)h(c)n(hannel.)35 b(The)26 b(v)-5 b(ariable)25 b Fo(stdin)f Fs(is)i(the)g(standard)f (input)291 2703 y(c)n(hannel.)415 2804 y(It)j(pro)n(vides)e(the)i (follo)n(wing)f(metho)r(ds.)415 2974 y Fj(\017)41 b Fo ($\(InChannel.fopen)c(\))p Fs(:)d(op)r(en)27 b(a)h(new)f(input)i (c)n(hannel.)415 3146 y Fj(\017)41 b Fo($\(InChannel.of-st)o(ri)o(ng)c (\))p Fs(:)c(op)r(en)28 b(a)f(new)h(input)g(c)n(hannel,)f (using)g(a)498 3246 y(string)g(as)g(input.)415 3417 y Fj(\017)41 b Fo($\(o.read)f(\))p Fs(:)63 b(reads)41 b(the)h(giv)n(en)g(n)n(um)n(b)r(er)g(of)g(c)n(haracters)e(from)i(the) 498 3517 y(c)n(hannel)415 3688 y Fj(\017)f Fo($\(o.readln\))p Fs(:)33 b(reads)26 b(a)h(line)h(from)f(the)h(c)n(hannel)291 3817 y @beginspecial @setspecial @endspecial 111 x Fk(12.1.17)112 b(OutChannel)291 3983 y @beginspecial @setspecial @endspecial 101 x Fs(P)n(aren)n(t)25 b(ob)5 b(ject:)37 b Fo(Channel)p Fs(.)415 4185 y(A)29 b Fo(OutChannel)c Fs(is)k(an)f(output)h(c)n (hannel.)40 b(The)29 b(v)-5 b(ariables)28 b Fo(stdout)e Fs(and)j Fo(stderr)d Fs(are)291 4285 y(the)i(standard)e(output)i(and)g (error)d(c)n(hannels.)415 4386 y(It)j(pro)n(vides)e(the)i(follo)n(wing) f(metho)r(ds.)415 4556 y Fj(\017)41 b Fo($\(OutChannel.fope)o(n)c (\))p Fs(:)d(op)r(en)28 b(a)f(new)h(output)g(c)n(hannel.)415 4727 y Fj(\017)41 b Fo($\(OutChannel.stri)o(ng)o(\))p Fs(:)31 b(op)r(en)c(a)g(new)h(output)g(c)n(hannel,)f(writing)g(to)g(a)h (string.)415 4899 y Fj(\017)41 b Fo($\(OutChannel.to-s)o(tr)o(in)o(g\)) p Fs(:)32 b(get)c(the)h(curren)n(t)f(string)g(of)g(output,)h(for)f(an)g (out-)498 4998 y(put)g(c)n(hannel)f(created)g(as)g Fo (OutChannel.open-s)o(tr)o(in)o(g)p Fs(.)p eop end %%Page: 190 190 TeXDict begin 190 189 bop 739 282 a @beginspecial @setspecial @endspecial Fs(190)1027 b Fp(CHAPTER)27 b(12.)64 b(THE)27 b(ST)-7 b(AND)n(ARD)30 b(OBJECTS)863 515 y Fj(\017)41 b Fo($\(OutChannel.appe)o(nd)c(\))p Fs(:)32 b(op)r(ens)22 b(a)g(new)h(output)g(c)n(hannel,)g(app)r(ending)946 615 y(to)28 b(the)g(\014le.)863 823 y Fj(\017)41 b Fo($\(c.flush\))p Fs(:)33 b(\015ush)28 b(the)g(output)g(c)n(hannel.)863 1030 y Fj(\017)41 b Fo($\(c.print)f(\))p Fs(:)34 b(prin)n(t)27 b(a)g(string)g(to)h(the)g(c)n(hannel.)863 1238 y Fj(\017)41 b Fo($\(c.println)e(\))p Fs(:)32 b(prin)n(t)24 b(a)g(string)f(to)h(the)g(c)n(hannel,)h(follo)n(w)n(ed)e (b)n(y)g(a)h(line)946 1337 y(terminator.)739 1498 y @beginspecial @setspecial @endspecial 127 x Fk(12.1.18)112 b(Lo)s(cation)739 1688 y @beginspecial @setspecial @endspecial 110 x Fs(P)n(aren)n(t)26 b(ob)5 b(jects:)36 b Fo(Location)p Fs(.)863 1908 y(The)28 b Fo(Location)c Fs(ob)5 b(ject)28 b(represen)n(ts)e(a)h(lo)r(cation)g (in)h(a)f(\014le.)739 2085 y @beginspecial @setspecial @endspecial 110 x Fk(12.1.19)112 b(Exception)739 2277 y @beginspecial @setspecial @endspecial 91 x Fs(P)n(aren)n(t)26 b(ob)5 b(jects:)36 b Fo(Object)p Fs(.)863 2478 y(The)c Fo(Exception)27 b Fs(ob)5 b(ject)31 b(is)g(used)h(as)e(the)i(base)e(ob) 5 b(ject)31 b(for)g(exceptions.)47 b(It)32 b(has)f(no)739 2577 y(\014elds.)739 2738 y @beginspecial @setspecial @endspecial 127 x Fk(12.1.20)112 b(Run)m(timeException)739 2947 y @beginspecial @setspecial @endspecial 91 x Fs(P)n(aren)n(t)26 b(ob)5 b(jects:)36 b Fo(Exception)p Fs(.)863 3148 y(The)k Fo(RuntimeExceptio)o(n)33 b Fs(ob)5 b(ject)39 b(represen)n(ts)f(an)g (exception)h(from)g(the)g(run)n(time)739 3247 y(system.)e(It)27 b(has)h(the)g(follo)n(wing)e(\014elds.)863 3471 y Fj(\017)41 b Fo(position)p Fs(:)60 b(a)40 b(string)g(represen)n(ting)f(the)h(lo)r (cation)g(where)g(the)h(exception)f(w)n(as)946 3571 y(raised.)863 3779 y Fj(\017)h Fo(message)p Fs(:)35 b(a)27 b(string)g(con)n(taining)f (the)i(exception)f(message.)739 3958 y @beginspecial @setspecial @endspecial 108 x Fk(12.1.21)112 b(Un)m(buildableException) 739 4148 y @beginspecial @setspecial @endspecial 91 x Fs(P)n(aren)n(t)26 b(ob)5 b(jects:)36 b Fo(Exception)p Fs(.)863 4349 y(The)d Fo(UnbuildableExcep)o(tio)o(n)26 b Fs(ob)5 b(ject)33 b(should)f(b)r(e)h(used)f(to)h(signal)e(that)i(a)f (target)739 4449 y(is)f(not)h(buildable.)48 b(It)32 b(will)f(b)r(e)h (caugh)n(t)f(b)n(y)g(functions)h(suc)n(h)f(as)f @beginspecial @setspecial @endspecial Fo(target-exists)p @beginspecial @setspecial @endspecial Fs(.)43 b(This)739 4548 y(exception)27 b(has)g(the)h(follo)n(wing)f(\014elds:)863 4772 y Fj(\017)41 b Fo(target)p Fs(:)35 b(indicates)27 b(whic)n(h)h(target)f(is)g(not)h (buildable.)863 4980 y Fj(\017)41 b Fo(message)p Fs(:)35 b(a)27 b(string)g(con)n(taining)f(the)i(exception)f(message.)p eop end %%Page: 191 191 TeXDict begin 191 190 bop 291 282 a @beginspecial @setspecial @endspecial Fp(12.1.)63 b(PER)-9 b(V)g(ASIVES)27 b(OBJECTS)1565 b Fs(191)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(12.1.22)112 b(Shell)291 569 y @beginspecial @setspecial @endspecial 101 x Fs(P)n(aren)n(t)25 b(ob)5 b(jects:)37 b Fo(Object)p Fs(.)415 770 y(The)h Fo(Shell)d Fs(ob)5 b(ject)37 b(con)n(tains)g(the)h(collection)f(of)g(builtin)i(functions)e (a)n(v)-5 b(ailable)37 b(as)291 869 y(shell)27 b(commands.)415 970 y(Y)-7 b(ou)23 b(can)g(de\014ne)g(aliases)e(b)n(y)i(extending)g (this)g(ob)5 b(ject)23 b(with)g(additional)g(metho)r(ds.)35 b(All)291 1069 y(metho)r(ds)d(in)h(this)g(class)e(are)h(called)g(with)h (one)f(argumen)n(t:)46 b(a)32 b(single)g(arra)n(y)e(con)n(taining)291 1169 y(an)d(argumen)n(t)f(list.)415 1354 y Fj(\017)41 b Fo(echo)498 1488 y Fs(The)28 b Fo(echo)e Fs(function)i(prin)n(ts)f (its)h(argumen)n(ts)e(to)i(the)g(standard)e(output)i(c)n(hannel.)415 1656 y Fj(\017)41 b Fo(jobs)498 1790 y Fs(The)28 b Fo(jobs)e Fs(metho)r(d)i(prin)n(ts)f(the)h(status)g(of)f(curren)n(tly)g(running)g (commands.)415 1958 y Fj(\017)41 b Fo(cd)498 2092 y Fs(The)f Fo(cd)f Fs(function)h(c)n(hanges)e(the)i(curren)n(t)f(directory)-7 b(.)71 b(Note)40 b(that)g(the)g(curren)n(t)498 2191 y(directory)27 b(follo)n(ws)g(the)h(usual)g(scoping)f(rules.)38 b(F)-7 b(or)27 b(example,)h(the)g(follo)n(wing)f(pro-)498 2291 y(gram)k(lists)g(the)i(\014les)e(in)h(the)g Fo(foo)f Fs(directory)-7 b(,)31 b(but)i(the)f(curren)n(t)f(directory)f(is)i(not) 498 2391 y(c)n(hanged.)629 2609 y Fo(section)760 2709 y(echo)42 b(Listing)e(files)i(in)h(the)f(foo)g(directory...)760 2809 y(cd)g(foo)760 2908 y(ls)629 3107 y(echo)g(Listing)f(files)g(in)i (the)f(current)f(directory...)629 3207 y(ls)415 3426 y Fj(\017)g Fo(bg)498 3560 y Fs(The)30 b Fo(bg)g Fs(metho)r(d)g(places) g(a)f(job)i(in)f(the)g(bac)n(kground.)43 b(The)30 b(job)g(is)g(resumed) g(if)g(it)498 3659 y(has)d(b)r(een)h(susp)r(ended.)415 3827 y Fj(\017)41 b Fo(fg)498 3961 y Fs(The)32 b Fo(fg)e Fs(metho)r(d)i(brings)f(a)g(job)g(to)g(the)h(foreground.)47 b(The)31 b(job)g(is)h(resumed)f(if)g(it)498 4061 y(has)c(b)r(een)h (susp)r(ended.)415 4229 y Fj(\017)41 b Fo(stop)498 4363 y Fs(The)28 b Fo(stop)e Fs(metho)r(d)i(susp)r(ends)g(a)f(running)g (job.)415 4531 y Fj(\017)41 b Fo(wait)498 4665 y Fs(The)26 b Fo(wait)f Fs(function)h(w)n(aits)f(for)h(a)f(running)h(job)g(to)g (terminate.)36 b(It)26 b(is)g(not)g(p)r(ossible)498 4765 y(to)i(w)n(ait)f(for)g(a)g(susp)r(ended)h(job.)498 4899 y(The)h(job)g(is)g(not)g(brough)n(t)f(to)h(the)h(foreground.)39 b(If)30 b(the)f Fo(wait)e Fs(is)i(in)n(terrupted,)h(the)498 4998 y(job)e(con)n(tin)n(ues)f(to)g(run)h(in)f(the)h(bac)n(kground.)p eop end %%Page: 192 192 TeXDict begin 192 191 bop 739 282 a @beginspecial @setspecial @endspecial Fs(192)1027 b Fp(CHAPTER)27 b(12.)64 b(THE)27 b(ST)-7 b(AND)n(ARD)30 b(OBJECTS)863 515 y Fj(\017)41 b Fo(kill)946 659 y Fs(The)28 b Fo(kill)e Fs(function)i(signal)f(a)g (job.)946 802 y Fo(kill)42 b([signal])f()p Fs(.)946 945 y(The)e(signals)e(are)h(either)g(n)n(umeric,)i(or)e(sym)n(b)r (olic.)69 b(The)38 b(sym)n(b)r(olic)g(signals)f(are)946 1045 y(named)28 b(as)f(follo)n(ws.)946 1188 y(ABR)-7 b(T,)35 b(ALRM,)g(HUP)-7 b(,)34 b(ILL,)h(KILL,)e(QUIT,)h(SEGV,)h(TERM,) f(USR1,)i(USR2,)946 1288 y(CHLD,)29 b(STOP)-7 b(,)27 b(TSTP)-7 b(,)27 b(TTIN,)h(TTOU,)f(VT)-7 b(ALRM,)29 b(PR)n(OF.)863 1475 y Fj(\017)41 b Fo(exit)946 1618 y Fs(The)28 b Fo(exit)e Fs(function)i(terminates)f(the)h(curren)n(t)f(session.)863 1805 y Fj(\017)41 b Fo(which)p Fs(,)26 b Fo(where)946 1948 y Fs(See)i(the)g(do)r(cumen)n(tation)f(for)g(the)h(corresp)r (onding)e(functions.)863 2135 y Fj(\017)41 b Fo(rehash)946 2279 y Fs(Reset)28 b(the)g(searc)n(h)e(path.)863 2466 y Fj(\017)41 b Fo(ln-or-cp)25 b Fi(sr)l(c)k Fs(dst)946 2609 y(Links)f(or)f(copies)g Fi(sr)l(c)j(to)g Fs(dst,)e(o)n(v)n (erwriting)d Fi(dst.)40 b(Namely,)31 b Fo(ln-or-cp)26 b Fi(would)31 b(\014rst)946 2709 y(delete)i(the)e Fs(dst)f(\014le)f (\(unless)h(it)g(is)f(a)g(directory\),)g(if)h(it)g(exists.)42 b(Next)30 b(it)g(w)n(ould)f(try)946 2808 y(to)g(create)e(a)h(sym)n(b)r (olic)g(link)g Fi(dst)i(p)l(oiting)i(to)e Fs(src)d(\(it)i(will)g(mak)n (e)e(all)h(the)h(necessary)946 2908 y(adjustmnen)n(ts)g(of)f(relativ)n (e)f(paths\).)39 b(If)29 b(sym)n(b)r(olic)f(link)g(can)g(not)g(b)r(e)h (created)f(\()p Fi(e.g.)946 3008 y Fs(the)33 b(OS)f(or)f(the)i (\014lesystem)f(do)r(es)g(not)g(supp)r(ort)g(sym)n(b)r(olic)g(links\),) h(it)g(will)f(try)g(to)946 3107 y(create)27 b(a)g(hard)g(link.)37 b(If)28 b(that)g(fails)g(to)r(o,)f(it)h(will)g(try)f(to)h(forcibly)f (cop)n(y)f Fi(sr)l(c)k(to)g Fs(dst.)863 3294 y Fj(\017)41 b Fo(history)946 3438 y Fs(Prin)n(t)27 b(the)h(curren)n(t)f (command-line)g(history)-7 b(.)863 3625 y Fj(\017)41 b Fo(digest)946 3768 y Fs(Prin)n(t)27 b(the)h(digests)f(of)h(the)g(giv) n(en)f(\014les.)863 3955 y Fj(\017)41 b Fs(Win32)28 b(functions.)946 4098 y(Win32)j(do)r(esn't)h(pro)n(vide)e(v)n(ery)g(man)n(y)h(programs)e (for)i(scripting,)h(except)f(for)g(the)946 4198 y(functions)i(that)f (are)e(builtin)j(to)f(the)g(DOS)g Fo(cmd.exe)p Fs(.)46 b(The)32 b(follo)n(wing)f(functions)946 4298 y(are)21 b(de\014ned)g(on)h(Win32)e(and)i(only)f(on)g(Win32.)34 b(On)21 b(other)g(systems,)h(it)g(is)f(exp)r(ected)946 4397 y(that)28 b(these)g(programs)d(already)h(exist.)1040 4606 y Fq({)41 b Fo(grep)1260 4793 y(grep)h([-q])g([-n])g(pattern)e (files...)1129 4980 y Fs(The)28 b Fo(grep)e Fs(function)i(calls)f(the)h Fo(omake)d(grep)i Fs(function.)p eop end %%Page: 193 193 TeXDict begin 193 192 bop 291 282 a @beginspecial @setspecial @endspecial Fp(12.1.)63 b(PER)-9 b(V)g(ASIVES)27 b(OBJECTS)1565 b Fs(193)415 515 y Fj(\017)41 b Fs(In)n(ternal)27 b(v)n(ersions)f(of)h (standard)g(system)g(commands.)498 648 y(By)k(default,)h Fo(omake)d Fs(uses)i(in)n(ternal)g(v)n(ersions)e(of)i(the)g(follo)n (wing)f(commands:)44 b Fo(cp)p Fs(,)498 748 y Fo(mv)p Fs(,)25 b Fo(cat)p Fs(,)f Fo(rm)p Fs(,)g Fo(mkdir)p Fs(,)f Fo(chmod)p Fs(,)h Fo(test)p Fs(,)f Fo(find)p Fs(.)35 b(If)25 b(y)n(ou)e(really)h(w)n(an)n(t)g(to)g(use)h(the)f(stan-)498 847 y(dard)31 b(system)g(v)n(ersions)e(of)j(these)f(commands,)h(set)f (the)h Fo(USE_SYSTEM_COMM)o(AND)o(S)498 947 y Fs(as)27 b(one)g(of)h(the)g(\014rst)f(de\014nitions)h(in)g(y)n(our)e Fo(OMakeroot)e Fs(\014le.)592 1130 y Fq({)41 b Fo(pwd)855 1296 y(pwd)681 1462 y Fs(The)27 b Fo(pwd)g Fs(alias)f(w)n(ould)i(prin)n (t)f(the)h(absolute)f(path)h(to)f(curren)n(t)g(directory)-7 b(.)592 1595 y Fq({)41 b Fo(mkdir)855 1761 y(mkdir)h([-m)g(])f ([-p])h(files)681 1927 y Fs(The)36 b Fo(mkdir)f Fs(function)i(is)f (used)h(to)f(create)f(directories.)63 b(The)36 b(-v)n(erb+-m+)681 2026 y(option)g(can)h(b)r(e)g(used)g(to)g(sp)r(ecify)h(the)f(p)r (ermission)f(mo)r(de)h(of)g(the)h(created)681 2126 y(directory)-7 b(.)35 b(If)28 b(the)g Fo(-p)f Fs(option)h(is)f(sp)r(eci\014ed,)h(the)g (full)g(path)g(is)f(created.)592 2259 y Fq({)41 b Fo(cp)592 2392 y Fq({)g Fo(mv)855 2558 y(cp)i([-f])f([-i])g([-v])g(src)g(dst)855 2657 y(cp)h([-f])f([-i])g([-v])g(files)f(dst)855 2757 y(mv)i([-f])f([-i])g([-v])g(src)g(dst)855 2857 y(mv)h([-f])f([-i])g ([-v])g(files)f(dst)681 3023 y Fs(The)36 b Fo(cp)f Fs(function)i (copies)e(a)h Fo(src)f Fs(\014le)h(to)g(a)f Fo(dst)g Fs(\014le,)k(o)n(v)n(erwriting)33 b(it)k(if)f(it)681 3122 y(already)27 b(exists.)41 b(If)29 b(more)f(than)i(one)e(source)g (\014le)h(is)g(sp)r(eci\014ed,)h(the)f(\014nal)g(\014le)681 3222 y(m)n(ust)23 b(b)r(e)g(a)f(directory)-7 b(,)22 b(and)h(the)g (source)e(\014les)i(are)e(copied)i(in)n(to)f(the)h(directory)-7 b(.)681 3363 y Fq(-f)41 b Fs(Cop)n(y)27 b(\014les)h(forcibly)-7 b(,)27 b(do)g(not)h(prompt.)681 3479 y Fq(-i)41 b Fs(Prompt)26 b(b)r(efore)i(remo)n(ving)e(destination)h(\014les.)681 3595 y Fq(-v)42 b Fs(Explain)26 b(what)i(is)f(happ)r(ening.)592 3737 y Fq({)41 b Fo(rm)812 3903 y(rm)h([-f])g([-i])g([-v])g([-r])g (files)812 4002 y(rmdir)f([-f])h([-i])g([-v])g([-r])g(dirs)681 4168 y Fs(The)27 b Fo(rm)g Fs(function)h(remo)n(v)n(es)e(a)h(set)g(of)h (\014les.)37 b(No)27 b(w)n(arnings)f(are)g(issued)i(if)g(the)681 4268 y(\014les)f(do)h(not)f(exist,)h(or)e(if)j(they)e(cannot)g(b)r(e)h (remo)n(v)n(ed.)681 4384 y(Options:)681 4517 y Fq(-f)41 b Fs(F)-7 b(orcibly)27 b(remo)n(v)n(e)f(\014les,)i(do)f(not)h(prompt.) 681 4633 y Fq(-i)41 b Fs(Prompt)26 b(b)r(efore)i(remo)n(v)-5 b(al.)681 4749 y Fq(-v)42 b Fs(Explain)26 b(what)i(is)f(happ)r(ening.) 681 4866 y Fq(-r)41 b Fs(Remo)n(v)n(e)27 b(con)n(ten)n(ts)g(of)g (directories)g(recursiv)n(ely)-7 b(.)592 4998 y Fq({)41 b Fo(chmod)p eop end %%Page: 194 194 TeXDict begin 194 193 bop 739 282 a @beginspecial @setspecial @endspecial Fs(194)1027 b Fp(CHAPTER)27 b(12.)64 b(THE)27 b(ST)-7 b(AND)n(ARD)30 b(OBJECTS)1303 515 y Fo(chmod)42 b([-r])g([-v])g([-f])g(mode)g(files)1129 681 y Fs(The)33 b Fo(chmod)e Fs(function)i(c)n(hanges)e(the)j(p)r(ermissions)d(on)i(a)f (set)h(of)g(\014les)f(or)g(di-)1129 781 y(rectories.)73 b(This)41 b(function)f(do)r(es)g(nothing)g(on)g(Win32.)75 b(The)40 b Fo(mode)f Fs(ma)n(y)1129 881 y(b)r(e)44 b(sp)r(eci\014ed)g (as)f(an)g(o)r(ctal)g(n)n(um)n(b)r(er,)k(or)c(in)h(sym)n(b)r(olic)f (form)g Fo([ugoa]*[)p Fs(-)1129 980 y(=][rwxXstugo]+.)35 b(See)28 b(the)g(man)f(page)g(for)g Fo(chmod)f Fs(for)h(details.)1129 1096 y(Options:)1129 1229 y Fq(-r)42 b Fs(Change)27 b(p)r(ermissions)f (of)i(all)f(\014les)h(in)f(a)h(directory)e(recursiv)n(ely)-7 b(.)1129 1346 y Fq(-v)42 b Fs(Explain)27 b(what)g(is)h(happ)r(ening.) 1129 1462 y Fq(-f)42 b Fs(Con)n(tin)n(ue)27 b(on)g(errors.)1040 1595 y Fq({)41 b Fo(cat)1260 1761 y(cat)h(files...)1129 1927 y Fs(The)28 b Fo(cat)e Fs(function)i(prin)n(ts)g(the)g(con)n(ten)n (ts)f(of)g(the)h(\014les)g(to)f(stdout)1040 2060 y Fq({)41 b Fo(test)1129 2176 y(test)26 b Fi(expr)l(ession)1129 2275 y Fo([)h Fi(expr)l(ession)35 b Fs(+]+)1129 2375 y Fo([)43 b(--help)1129 2475 y([)g(--version)1129 2690 y Fs(See)28 b(the)g(do)r(cumen)n(tation)f(for)g(the)h @beginspecial @setspecial @endspecial Fo(test)e Fs(function)p @beginspecial @setspecial @endspecial(.)1040 2823 y Fq({)41 b Fo(find)1129 2940 y(find)26 b Fi(expr)l(ession)1129 3056 y Fs(See)i(the)g(do)r(cumen)n(tation)f(for)g(the)h @beginspecial @setspecial @endspecial Fo(find)e Fs(function)p @beginspecial @setspecial @endspecial(.)p eop end %%Page: 195 195 TeXDict begin 195 194 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(13)291 1553 y Fr(Build)77 b(functions)g(and)h (utilities)291 1886 y @beginspecial @setspecial @endspecial 149 x Fl(13.1)135 b(Builtin)45 b(.PHONY)g(targets)291 2217 y Fs(The)27 b(complete)h(set)f(of)h(builtin)g Fo(.PHONY)e Fs(targets)g(include)i(the)g(follo)n(wing.)291 2401 y Fq(.PHONY)40 b Fs(Declares)27 b(new)g(phon)n(y)h(targets)e(\(Section)i @beginspecial @setspecial @endspecial(8.10)p @beginspecial @setspecial @endspecial(\).)291 2567 y Fq(.DEF)-11 b(A)m(UL)j(T)43 b Fs(Declare)27 b(the)h(default)g(build)g(targets)e(\(Section)i @beginspecial @setspecial @endspecial(8.7)p @beginspecial @setspecial @endspecial(\).)291 2734 y Fq(.SUBDIRS)41 b Fs(Include)28 b(a)f(directory)f(as)h(part)h(of)f(the)h(pro)5 b(ject)27 b(\(Section)h @beginspecial @setspecial @endspecial(8.8)p @beginspecial @setspecial @endspecial(\).)291 2901 y Fq(.SCANNER)40 b Fs(De\014ne)28 b(a)f(dep)r(endency)h(scanner)e (\(Section)i @beginspecial @setspecial @endspecial(8.8)p @beginspecial @setspecial @endspecial(\).)291 3068 y Fq(.INCLUDE)41 b Fs(Include)28 b(a)f(\014le)h(\(Section)g @beginspecial @setspecial @endspecial(8.9)p @beginspecial @setspecial @endspecial(\).)291 3234 y Fq(.ORDER)39 b Fs(De\014ne)29 b(a)e(\014le-dep)r(endency)h(ordering)e(rule)h (\(Section)h @beginspecial @setspecial @endspecial(10.3.6)p @beginspecial @setspecial @endspecial(\).)291 3401 y Fq(.BUILD)p 631 3401 29 4 v 35 w(BEGIN)41 b Fs(Commands)27 b(to)g(b)r(e)h(executed)g(at)f(the)h(b)r(eginning)g(of)f(a)h(build.)291 3568 y Fq(.BUILD)p 631 3568 V 35 w(SUCCESS)41 b Fs(Commands)27 b(to)h(b)r(e)g(executed)g(if)g(the)g(build)g(is)f(successful.)291 3735 y Fq(.BUILD)p 631 3735 V 35 w(F)-11 b(AILURE)42 b Fs(Commands)27 b(to)h(b)r(e)g(executed)f(if)h(the)g(build)h(fails.) 415 3918 y(The)38 b Fo(.BUILD)e Fs(targets)h(can)h(b)r(e)h(used)f(to)h (sp)r(ecify)f(commands)g(to)g(b)r(e)h(executed)f(at)291 4018 y(the)33 b(b)r(eginning)f(and)h(end)g(of)f(the)h(build.)53 b(The)33 b Fo(.BUILD_BEGIN)27 b Fs(target)32 b(is)h(built)g(at)g(the) 291 4117 y(b)r(eginning)e(of)h(a)f(pro)5 b(ject)31 b(build,)j(and)e (one)f(of)h Fo(.BUILD_FAILURE)26 b Fs(or)31 b Fo(.BUILD_SUCCESS)291 4217 y Fs(is)c(executed)h(when)f(the)h(build)h(terminates.)415 4317 y(F)-7 b(or)41 b(example,)j(the)d(follo)n(wing)f(set)h(of)g(rules) g(simply)g(prin)n(t)g(additional)g(messages)291 4416 y(ab)r(out)27 b(the)h(status)f(of)h(the)g(build.)421 4600 y Fo(.BUILD_BEGIN:)596 4700 y(echo)42 b(Build)f(starting)421 4899 y(.BUILD_SUCCESS:)596 4998 y(echo)h(The)g(build)f(was)i (successful)1660 5208 y Fs(195)p eop end %%Page: 196 196 TeXDict begin 196 195 bop 739 282 a @beginspecial @setspecial @endspecial Fs(196)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)870 615 y Fo(.BUILD_FAILURE:)1044 715 y(println\($"The)38 b(build)k(failed:)e($\(length)h ($\(find-build-ta)o(rge)o(ts)c(Failed\)\))j(targets)h(could)g(not)i(be) g(built"\))863 895 y Fs(Another)37 b(common)f(use)g(is)h(to)f(de\014ne) h(noti\014cations)f(to)h(b)r(e)g(p)r(erformed)f(when)h(the)739 994 y(build)31 b(completes.)46 b(F)-7 b(or)30 b(example,)h(the)g(follo) n(wing)f(rule)g(will)h(create)f(a)g(new)h(X)g(terminal)739 1094 y(displa)n(ying)26 b(the)i(summary)f(of)h(the)g(build)g(\(using)f (the)h @beginspecial @setspecial @endspecial Fo(BUILD)p 2704 1094 27 4 v 30 w(SUMMARY)c Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial(\).)913 1274 y Fo(.BUILD_FAILURE:)1088 1374 y(xterm)41 b(-e)i(vi)g($\(BUILD_SUMMARY)o(\))863 1554 y Fs(If)e(y)n(ou)e(do)g(not)h(wish)g(to)f(add)h(these)g(rules)f (directly)g(to)h(y)n(our)e(pro)5 b(ject)39 b(\(whic)n(h)h(is)739 1654 y(probably)35 b(a)g(go)r(o)r(d)g(idea)h(if)g(y)n(ou)g(w)n(ork)e (with)j(others\),)g(y)n(ou)e(can)h(de\014ne)g(them)g(in)g(y)n(our)739 1753 y Fo(.omakerc)24 b Fs(\(see)k(Section)f @beginspecial @setspecial @endspecial(A.8)p @beginspecial @setspecial @endspecial(\).)863 1853 y(The)41 b @beginspecial @setspecial @endspecial Fo(find-build-targe)o(ts)34 b Fs(function)p @beginspecial @setspecial @endspecial 41 w(is)40 b(useful)h(for)f (obtaining)g(a)f(\014rther)h(sum-)739 1952 y(mary)35 b(of)h(the)g(build.)62 b(Note)36 b(that)g(when)g(output)g(div)n (ersions)e(are)h(in)h(e\013ect)g(\(with)h(the)739 2052 y Fo(--output-*)20 b Fs(options)k(|)g(see)g(Chapter)g @beginspecial @setspecial @endspecial(A)p @beginspecial @setspecial @endspecial(\),)h(an)n(y)e(output)i(pro)r(duced)f(b)n(y)g (the)h(commands)739 2152 y(is)i(copied)g(to)g(a)f(\014le.)37 b(The)27 b(name)g(of)g(the)h(\014le)f(is)g(sp)r(eci\014ed)g(b)n(y)g (the)g Fo(output-file)c Fs(\014eld)k(of)739 2251 y(the)20 b @beginspecial @setspecial @endspecial Fo(Target)e Fs(ob)5 b(ject)p @beginspecial @setspecial @endspecial(.)34 b(Y)-7 b(ou)21 b(ma)n(y)e(\014nd)i(this)f(useful)h(in)f(de\014ning)g(custom)g (build)h(summaries.)739 2395 y @beginspecial @setspecial @endspecial 130 x Fl(13.2)135 b(Options)46 b(and)e(v)l(ersioning)739 2631 y @beginspecial @setspecial @endspecial 93 x Fk(13.2.1)112 b(OMak)m(eFlags)739 2797 y @beginspecial @setspecial @endspecial 870 2877 a Fo(OMakeFlags\(opti)o(ons)o(\))1000 2977 y(options)41 b(:)i(String)863 3157 y Fs(The)19 b Fo(OMakeFlags)14 b Fs(function)19 b(is)f(used)h(to)f(set)g Fo(omake)f Fs(options)h(from)g(within)h Fo(OMakefile)p Fs(s.)739 3257 y(The)28 b(options)f(ha)n(v)n(e)f(exactly)h(the)h(same)f (format)g(as)g(options)g(on)g(the)h(command)f(line.)863 3356 y(F)-7 b(or)21 b(example,)i(the)f(follo)n(wing)e(co)r(de)h(displa) n(ys)g(the)h(progress)d(bar)i(unless)g(the)h Fo(VERBOSE)739 3456 y Fs(en)n(vironmen)n(t)27 b(v)-5 b(ariable)26 b(is)i(de\014ned.) 913 3636 y Fo(if)43 b($\(not)f($\(defined-env)c(VERBOSE\)\))1088 3736 y(OMakeFlags\(-S)g(--progress\))1088 3835 y(export)739 3970 y @beginspecial @setspecial @endspecial 97 x Fk(13.2.2)112 b(OMak)m(eV)-9 b(ersion)739 4121 y @beginspecial @setspecial @endspecial 870 4221 a Fo(OMakeVersion\(ve)o(rsi)o(on)o(1\))870 4320 y(OMakeVersion\(ve)o(rsi)o(on)o(1,)37 b(version2\))1000 4420 y(version1,)j(version2)h(:)i(String)863 4600 y Fs(The)31 b Fo(OMakeVersion)25 b Fs(function)31 b(is)f(used)h(for)e(v)n(ersion)g (c)n(hec)n(king)g(in)i Fo(OMakefile)p Fs(s.)41 b(It)739 4700 y(tak)n(es)27 b(one)g(or)f(t)n(w)n(o)h(argumen)n(ts.)863 4799 y(In)19 b(the)g(one)f(argumen)n(t)f(form,)j(if)f(the)g Fo(omake)d Fs(v)n(ersion)h(n)n(um)n(b)r(er)h(is)g(less)g(than)h Fo()p Fs(,)739 4899 y(then)27 b(an)f(exception)g(is)g (raised.)35 b(In)27 b(the)g(t)n(w)n(o)e(argumen)n(t)g(form,)i(the)f(v)n (ersion)f(m)n(ust)i(lie)f(b)r(e-)739 4998 y(t)n(w)n(een)h Fo(version1)d Fs(and)k Fo(version2)p Fs(.)p eop end %%Page: 197 197 TeXDict begin 197 196 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.3.)63 b(EXAMINING)28 b(THE)g(DEPENDENCY)f(GRAPH)829 b Fs(197)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(13.2.3)112 b(cmp-v)m(ersions)291 590 y @beginspecial @setspecial @endspecial 421 673 a Fo($\(cmp-versions)38 b(version1,)i(version2\))552 773 y(version1,)g(version2)g(:)j(String) 415 965 y Fs(The)e Fo(cmp-versions\\)36 b Fs(functions)41 b(can)g(b)r(e)g(used)g(to)g(compare)f(arbitrary)e(v)n(ersion)291 1064 y(strings.)52 b(It)34 b(returns)e(0)h(when)h(the)f(t)n(w)n(o)g(v)n (ersion)e(strings)i(are)f(equal,)i(a)f(negativ)n(e)f(n)n(um-)291 1164 y(b)r(er)h(when)h(the)g(\014rst)f(string)g(represen)n(ts)f(an)i (earlier)e(v)n(ersion,)h(and)h(a)f(p)r(ositiv)n(e)g(n)n(um)n(b)r(er)291 1263 y(otherwise.)291 1390 y @beginspecial @setspecial @endspecial 118 x Fk(13.2.4)112 b(De\014neCommandV)-9 b(ars)291 1564 y @beginspecial @setspecial @endspecial 421 1666 a Fo(DefineCommandVars)o(\(\))415 1858 y Fs(The)22 b Fo(DefineCommandVar)o(s)16 b Fs(function)22 b(rede\014nes)g(the)g(v) -5 b(ariables)21 b(passed)g(on)g(the)i(com-)291 1958 y(mandline.)61 b(V)-7 b(ariables)35 b(de\014nitions)h(are)e(passed)h (on)h(the)g(command)f(line)h(in)g(the)g(form)291 2057 y Fo(name=value)p Fs(.)68 b(This)40 b(function)g(is)f(primarily)f(for)h (in)n(ternal)g(use)g(b)n(y)i Fo(omake)c Fs(to)j(de\014ne)291 2157 y(these)27 b(v)-5 b(ariables)27 b(for)g(the)h(\014rst)f(time.)291 2292 y @beginspecial @setspecial @endspecial 152 x Fl(13.3)135 b(Examining)46 b(the)f(dep)t(endency)f(graph)291 2552 y @beginspecial @setspecial @endspecial 95 x Fk(13.3.1)112 b(dep)s(endencies,)30 b(dep)s(endencies-all,)h(dep)s(endencies-prop)s (er)291 2722 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 421 2804 a Fo($\(dependencies)38 b(targets\))i(:)k(File)e (Array)421 2904 y($\(dependencies-al)o(l)37 b(targets\))k(:)i(File)f (Array)421 3004 y($\(dependencies-pr)o(op)o(er)37 b(targets\))k(:)i (File)f(Array)552 3103 y(targets)f(:)i(File)f(Array)421 3203 y(raises)f(RuntimeException)415 3395 y Fs(The)35 b Fo(dependencies)30 b Fs(function)35 b(returns)g(the)g(set)g(of)g (immediate)g(dep)r(endencies)g(of)291 3495 y(the)24 b(giv)n(en)f (targets.)34 b(This)24 b(function)h(can)e(only)h(b)r(e)g(used)g(within) h(a)e(rule)h(b)r(o)r(dy)g(and)g(all)g(the)291 3594 y(argumen)n(ts)k(to) h(the)h Fo(dependency)c Fs(function)k(m)n(ust)g(also)f(b)r(e)h(dep)r (endencies)g(of)f(this)h(rule.)291 3694 y(This)24 b(restriction)g (ensures)g(that)h(all)f(the)i(dep)r(endencies)f(are)e(kno)n(wn)h(when)h (this)g(function)291 3794 y(is)i(executed.)415 3896 y(The)d Fo(dependencies-all)17 b Fs(function)25 b(is)e(similar,)h(but)h(it)f (expands)f(the)i(dep)r(endencies)291 3995 y(recursiv)n(ely)-7 b(,)22 b(returning)h(all)g(of)g(the)h(dep)r(endencies)g(of)f(a)g (target,)g(not)h(just)g(the)g(immediate)291 4095 y(ones.)415 4197 y(The)29 b Fo(dependencies-pr)o(ope)o(r)22 b Fs(function)30 b(returns)d(all)i(recursiv)n(e)d(dep)r(endencies,)j(ex-)291 4296 y(cept)j(the)g(dep)r(endencies)h(that)f(are)f(leaf)h(targets.)49 b(A)32 b(leaf)g(target)f(is)h(a)g(target)f(that)h(has)291 4396 y(no)27 b(dep)r(endencies)h(and)g(no)g(build)g(commands;)g(a)f (leaf)h(target)f(corresp)r(onds)f(to)i(a)f(source)291 4496 y(\014le)g(in)h(the)g(curren)n(t)f(pro)5 b(ject.)415 4598 y(In)21 b(all)g(three)f(functions,)j(\014les)e(that)g(are)f(not)h (part)f(of)h(the)g(curren)n(t)f(pro)5 b(ject)20 b(are)g(silen)n(tly)291 4697 y(discarded.)35 b(All)25 b(three)g(functions)g(will)h(return)e (phon)n(y)h(and)g(scanner)f(targets)g(along)f(with)291 4797 y(the)28 b(\\real")d(ones.)415 4899 y(One)34 b(purp)r(ose)f(of)g (the)i Fo(dependencies-pr)o(ope)o(r)28 b Fs(function)34 b(is)f(for)h(\\clean")e(targets.)291 4998 y(F)-7 b(or)20 b(example,)j(one)e(w)n(a)n(y)f(to)h(delete)h(all)f(in)n(termediate)g (\014les)g(in)h(a)f(build)h(is)g(with)f(a)h(rule)f(that)p eop end %%Page: 198 198 TeXDict begin 198 197 bop 739 282 a @beginspecial @setspecial @endspecial Fs(198)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)739 515 y Fs(uses)g(the)g Fo(dependencies-prop)o(er)o Fs(.)36 b(Note)30 b(ho)n(w)n(ev)n(er,)d (that)j(the)f(rule)g(requires)f(building)739 615 y(the)g(pro)5 b(ject)27 b(b)r(efore)g(it)h(can)f(b)r(e)h(deleted.)913 844 y Fo(.PHONY:)41 b(clean)913 1043 y(APP)i(=)g(...)216 b(#)44 b(the)e(name)g(of)h(the)f(target)f(application)913 1143 y(clean:)g($\(APP\))1044 1242 y(rm)i(-f)g($\(dependencies-)o(pr)o (ope)o(r)37 b($\(APP\)\))863 1462 y Fs(Also)h(note)f(that)h(the)g Fo(dependencies-pr)o(op)o(er)31 b Fs(function)38 b(will)g(return)f(the) h(phon)n(y)739 1561 y(and)27 b(scanner)g(targets)f(in)i(addition)g(to)f (real)g(one.)863 1670 y(F)-7 b(or)18 b(other)g(\(p)r(ossibly)g(b)r (etter\))h(alternativ)n(es,)g(see)f(Section)g @beginspecial @setspecial @endspecial(10.3.3)p @beginspecial @setspecial @endspecial 17 w(and)g @beginspecial @setspecial @endspecial Fo(filter-proper-tar)o(ge)o(ts)739 1770 y Fs(function)p @beginspecial @setspecial @endspecial(.)739 1926 y @beginspecial @setspecial @endspecial 125 x Fk(13.3.2)112 b(target)739 2132 y @beginspecial @setspecial @endspecial 870 2222 a Fo($\(target)40 b(targets\))g(:)j(Target)e(Array)1000 2321 y(targets)g(:)i(File)f(Sequence)870 2421 y(raises)f (RuntimeException)863 2641 y Fs(The)31 b Fo(target)c Fs(function)k(returns)e(the)i(T)-7 b(arget)28 b(ob)5 b(ject)30 b(asso)r(ciated)f(with)i(eac)n(h)e(of)h(the)739 2740 y(targets.)36 b(See)27 b(the)h Fo(Target)d Fs(ob)5 b(ject)28 b(for)f(more)g(information.)739 2915 y @beginspecial @setspecial @endspecial 107 x Fk(13.3.3)112 b(\014nd-build-targets)739 3103 y @beginspecial @setspecial @endspecial 913 3192 a Fo($\(find-build-targ)o(et)o(s)38 b(tag\))j(:)j(Target)d(Array)1044 3292 y(tag)h(:)i(Succeeded)39 b(|)44 b(Failed)863 3511 y Fs(The)39 b Fo(find-build-targ)o(et)o(s)32 b Fs(allo)n(w)37 b(the)i(results)e(of)h(the)g(build)h(to)f(b)r(e)g(examined.)739 3611 y(The)h Fo(tag)f Fs(m)n(ust)h(sp)r(eci\014es)g(whic)n(h)g(targets) e(are)h(to)h(b)r(e)g(returned;)45 b(the)39 b(comparison)e(is)739 3711 y(case-insensitiv)n(e.)739 3930 y Fq(Succeeded)42 b Fs(The)27 b(list)h(of)g(targets)e(that)i(w)n(ere)f(built)h (successfully)-7 b(.)739 4133 y Fq(F)f(ailed)41 b Fs(The)27 b(list)h(of)g(targets)e(that)i(could)g(not)f(b)r(e)h(built.)863 4353 y(These)20 b(are)f(used)h(mainly)g(in)g(conjuction)g(with)g(the)h Fo(.BUILD_SUCCESS)14 b Fs(\(Section)20 b @beginspecial @setspecial @endspecial(13.1)p @beginspecial @setspecial @endspecial(\))739 4452 y(and)35 b Fo(.BUILD_FAILURE)30 b Fs(\(Section)36 b @beginspecial @setspecial @endspecial(13.1)p @beginspecial @setspecial @endspecial(\))f(phon)n(y)g(targets.)60 b(F)-7 b(or)35 b(example,)j(adding)d(the)739 4552 y(follo)n(wing)23 b(to)i(y)n(our)e(pro)5 b(ject)24 b Fo(OMakefile)d Fs(will)k(prin)n(t)f (the)h(n)n(um)n(b)r(er)f(of)h(targets)e(that)i(failed)739 4652 y(\(if)j(the)g(build)g(failed\).)913 4880 y Fo(.BUILD_FAILURE:) 1088 4980 y(echo)42 b("Failed)e(target)h(count:)g($\(length)g ($\(find-build-ta)o(rge)o(ts)c(Failed\)\)")p eop end %%Page: 199 199 TeXDict begin 199 198 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.3.)63 b(EXAMINING)28 b(THE)g(DEPENDENCY)f(GRAPH)829 b Fs(199)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(13.3.4)112 b(pro)6 b(ject-directories)291 588 y @beginspecial @setspecial @endspecial 421 669 a Fo ($\(project-directo)o(ri)o(es\))37 b(:)43 b(Dir)f(Array)415 836 y Fs(The)34 b Fo(project-director)o(ie)o(s)28 b Fs(function)34 b(returns)f(the)h(list)g(of)g(all)f(directories)g(that)291 935 y(are)26 b(considered)h(to)g(b)r(e)h(part)f(of)h(the)g(pro)5 b(ject.)415 1035 y(T)-7 b(o)23 b(get)f(the)i(complete)f(directory)e (list,)j(this)g(function)f(should)g(b)r(e)g(called)g(from)f(within)291 1134 y(a)27 b(rule)g(b)r(o)r(dy)-7 b(.)291 1264 y @beginspecial @setspecial @endspecial 100 x Fk(13.3.5)112 b(rule)291 1418 y @beginspecial @setspecial @endspecial 99 x Fs(The)27 b Fo(rule)f Fs(function)i(is)f(called)g(whenev)n(er)f(a)h(build)h(rule) f(is)g(de\014ned.)38 b(It)27 b(is)h(unlik)n(ely)f(that)291 1617 y(y)n(ou)f(will)i(need)g(to)f(rede\014ne)h(this)g(function,)g (except)f(in)h(v)n(ery)f(exceptional)g(cases.)421 1784 y Fo(rule\(multiple,)38 b(target,)j(pattern,)f(sources,)g(options,)h (body\))g(:)i(Rule)552 1884 y(multiple)d(:)k(String)552 1983 y(target)128 b(:)44 b(Sequence)552 2083 y(pattern)84 b(:)44 b(Sequence)552 2183 y(sources)84 b(:)44 b(Sequence)552 2282 y(options)84 b(:)44 b(Array)552 2382 y(body)216 b(:)44 b(Body)415 2549 y Fs(The)28 b Fo(rule)e Fs(function)i(is)f (called)h(when)f(a)h(rule)f(is)g(ev)-5 b(aluated.)291 2716 y Fq(m)m(ultiple)40 b Fs(A)25 b(Bo)r(olean)f(v)-5 b(alue)26 b(indicating)f(whether)g(the)h(rule)f(w)n(as)f(de\014ned)i (with)f(a)g(dou-)498 2816 y(ble)j(colon)f Fo(::)p Fs(.)291 2975 y Fq(target)42 b Fs(The)27 b(sequence)g(of)h(target)f(names.)291 3135 y Fq(pattern)42 b Fs(The)32 b(sequence)f(of)h(patterns.)49 b(This)31 b(sequence)g(will)h(b)r(e)h(empt)n(y)e(for)h(t)n(w)n(o-part) 498 3235 y(rules.)291 3395 y Fq(sources)41 b Fs(The)27 b(sequence)g(of)h(dep)r(endencies.)291 3554 y Fq(options)40 b Fs(An)28 b(arra)n(y)e(of)h(options.)37 b(Eac)n(h)27 b(option)g(is)h(represen)n(ted)e(as)h(a)h @beginspecial @setspecial @endspecial Fo(Map)e Fs(ob)5 b(ject)p @beginspecial @setspecial @endspecial 28 w(asso-)498 3654 y(ciating)27 b(eac)n(h)g(sp)r(eci\014ed)h(option)f(with)h(a)f(v)-5 b(alue.)291 3814 y Fq(b)s(o)s(dy)41 b Fs(The)27 b(b)r(o)r(dy)h (expression)e(of)i(the)g(rule.)415 3981 y(Consider)f(the)h(follo)n (wing)e(rule.)421 4148 y Fo(target:)41 b(pattern:)f(sources)h(:name1:)g (option1)f(:name2:)h(option2)552 4247 y(expr1)552 4347 y(expr2)415 4514 y Fs(This)24 b(expression)e(represen)n(ts)g(the)i (follo)n(wing)f(function)h(call,)g(where)f(square)g(brac)n(k)n(ets)291 4614 y(are)j(used)i(to)f(indicate)h(arra)n(ys,)d(and)i(the)h(curly)f (brac)n(k)n(ets)f(represen)n(t)h(a)g @beginspecial @setspecial @endspecial Fo(Map)f Fs(ob)5 b(ject)p @beginspecial @setspecial @endspecial(.)421 4781 y Fo(rule\(false,)39 b(target,)i(pattern,)f (sources,)639 4880 y({)j($|:name1:|)d(=)j(option1;)d($|:name2:|)g(=)j (option2)e(})639 4980 y([expr1;)g(expr2]\))p eop end %%Page: 200 200 TeXDict begin 200 199 bop 739 282 a @beginspecial @setspecial @endspecial Fs(200)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(13.3.6)112 b(build)739 569 y @beginspecial @setspecial @endspecial 913 669 a Fo(build\(targets)38 b(:)44 b(File)e(Array\))f(:)i(bool)863 847 y Fs(Build)29 b(the)g(giv)n(en)f(targets.)38 b(The)29 b(v)-5 b(alue)28 b(is)h(true)f(i\013)h(the)g(build)g(w)n(as)f (successful.)39 b(This)739 946 y(function)28 b(can)f(b)r(e)h(used)g (only)f(in)h Fo(osh)p Fs(.)739 1087 y @beginspecial @setspecial @endspecial 133 x Fl(13.4)135 b(The)45 b(OMak)l(ero)t(ot)h(\014le)739 1402 y Fs(The)20 b(standard)e Fo(OMakeroot)e Fs(\014le)k(de\014nes)g (the)g(functions)g(are)f(rules)g(for)g(building)h(standard)739 1502 y(pro)5 b(jects.)739 1633 y @beginspecial @setspecial @endspecial 100 x Fk(13.4.1)112 b(V)-9 b(ariables)739 1787 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 100 x Fq(R)m(OOT)83 b Fs(The)27 b(ro)r(ot)g(directory)f(of)i(the)g(curren)n(t)f(pro)5 b(ject.)739 2018 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(CWD)83 b Fs(The)24 b(curren)n(t)f(w)n(orking)g(directory)g(\(the)i(directory)e (is)h(set)g(for)f(eac)n(h)h Fo(OMakefile)739 2201 y Fs(in)k(the)g(pro)5 b(ject\).)739 2337 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(EMPTY)83 b Fs(The)28 b(empt)n(y)f(string.)739 2548 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(STDR)m(OOT)83 b Fs(The)28 b(name)f(of)h(the)g(standard)f (installed)g Fo(OMakeroot)d Fs(\014le.)739 2747 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 99 x Fq(ABOR)-8 b(T)p 1087 2846 29 4 v 34 w(ON)p 1268 2846 V 34 w(COMMAND)p 1845 2846 V 33 w(ERR)m(OR)82 b Fs(If)33 b(set)f(to)g(true,)h(the)g(construction)e(of)i(a)739 2946 y(target)c(should)h(b)r(e)h(ab)r(orted)e(whenev)n(er)h(one)f(of)i (the)f(commands)g(to)g(build)h(it)f(fail.)45 b(This)739 3046 y(defaults)28 b(to)f(true,)h(and)f(should)h(normally)e(b)r(e)i (left)g(that)g(w)n(a)n(y)-7 b(.)739 3177 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(SCANNER)p 1224 3261 V 33 w(MODE)83 b Fs(This)34 b(v)-5 b(ariable)34 b(should)h(b)r(e)g(de\014ned)h(as)e(one)g(of)h (four)g(v)-5 b(alues)739 3360 y(\(defaults)28 b(to)f Fo(enabled)p Fs(\).)739 3523 y Fq(enabled)41 b Fs(Allo)n(w)32 b(the)i(use)e(of)h(default)g Fo(.SCANNER)d Fs(rules.)52 b(Whenev)n(er)32 b(a)g(rule)h(do)r(es)f(not)946 3623 y(sp)r(ecify)i(a)e Fo(:scanner:)d Fs(dep)r(endency)34 b(explicitly)-7 b(,)34 b(try)f(to)f(\014nd)i(a)e Fo(.SCANNER)e Fs(with)946 3722 y(the)e(same)f(target)g(name.)739 3886 y Fq(disabled)40 b Fs(Nev)n(er)27 b(use)h(default)g Fo(.SCANNER)c Fs(rules.)739 4051 y Fq(w)m(arning)42 b Fs(Allo)n(w)19 b(the)i(use)e(of)h(default)g Fo(.SCANNER)d Fs(rules,)k(but)g(prin)n(t)e (a)h(w)n(arning)e(whenev)n(er)946 4150 y(one)28 b(is)f(selected.)739 4315 y Fq(error)42 b Fs(Do)24 b(not)g(allo)n(w)e(the)j(use)e(of)h (default)h Fo(.SCANNER)20 b Fs(rules.)35 b(If)25 b(a)e(rule)h(do)r(es)f (not)h(sp)r(ecify)946 4414 y(a)k Fo(:scanner:)c Fs(dep)r(endency)-7 b(,)28 b(and)f(there)h(is)f(a)h(default)g Fo(.SCANNER)c Fs(rule,)k(the)g(build)946 4514 y(will)g(terminate)g(abnormally)-7 b(.)739 4646 y @beginspecial @setspecial @endspecial 100 x Fk(13.4.2)112 b(System)39 b(v)-6 b(ariables)739 4819 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fq(INST)e(ALL)84 b Fs(The)44 b(command)f(to)g(install)h(a)f(program)e(\()p Fo(install)g Fs(on)i Fo(Unix)p Fs(,)j Fo(cp)d Fs(on)739 4998 y Fo(Win32)p Fs(\).)p eop end %%Page: 201 201 TeXDict begin 201 200 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.5.)63 b(BUILDING)28 b(C)g(AND)h(C++)d(CODE)1288 b Fs(201)291 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(P)-8 b(A)g(THSEP)83 b Fs(The)28 b(normal)f(path)g(separator)f(\()p Fo(:)h Fs(on)g Fo(Unix)p Fs(,)f Fo(;)i Fs(on)f Fo(Win32)p Fs(\).)291 663 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 81 x Fq(DIRSEP)83 b Fs(The)27 b(normal)g(directory)f(separator)g(\()p Fo(/)h Fs(on)g Fo(Unix)p Fs(,)f Fo(\\)i Fs(on)f Fo(Win32)p Fs(\).)291 891 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(EXT)p 498 973 29 4 v 34 w(OBJ)83 b Fs(File)31 b(su\016x)g(for)g(an)f(ob)5 b(ject)31 b(\014le)g(\(default)h(is)e Fo(.o)g Fs(on)h Fo(Unix)p Fs(,)f(and)h Fo(.obj)e Fs(on)291 1072 y Fo(Win32)p Fs(\).)291 1220 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 81 x Fq(EXT)p 498 1301 V 34 w(LIB)84 b Fs(File)28 b(su\016x)g(for)g(a)f(static)h(library) f(\(default)h(is)g Fo(.a)g Fs(on)f Fo(Unix)p Fs(,)g(and)h Fo(.lib)e Fs(on)291 1400 y Fo(Win32)p Fs(\).)291 1548 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 81 x Fq(EXT)p 498 1629 V 34 w(DLL)84 b Fs(File)29 b(su\016x)g(for)f(a)g(shared)g(library)g(\(default)h(is)g Fo(.so)e Fs(on)i Fo(Unix)p Fs(,)e(and)h Fo(.dll)291 1729 y Fs(on)f Fo(Win32)p Fs(\).)291 1876 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 81 x Fq(EXT)p 498 1957 V 34 w(ASM)83 b Fs(File)31 b(su\016x)f(for)f(an) h(assem)n(bly)f(\014le)i(\(default)g(is)f Fo(.s)f Fs(on)h Fo(Unix)p Fs(,)f(and)h Fo(.asm)291 2057 y Fs(on)d Fo(Win32)p Fs(\).)291 2204 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(EXE)82 b Fs(File)23 b(su\016x)e(for)h(executables)f(\(default)i(is)f(empt)n(y) g(for)f Fo(Unix)p Fs(,)h(and)g Fo(.exe)e Fs(on)i Fo(Win32)291 2385 y Fs(and)27 b Fo(Cygwin)p Fs(\).)291 2542 y @beginspecial @setspecial @endspecial 131 x Fl(13.5)135 b(Building)45 b(C)g(and)g(C++)f(co)t(de)291 2859 y Fs(OMak)n(e)24 b(pro)n(vides)f (extensiv)n(e)i(supp)r(ort)g(for)g(building)g(C)h(and)f(C++)f (programs.)34 b(In)25 b(order)291 2959 y(to)i(use)g(the)h(functions)g (de\014ned)g(in)g(this)g(section,)f(y)n(ou)g(need)h(to)f(mak)n(e)g (sure)g(the)h(line)291 3134 y Fo(open)42 b(build/C)291 3308 y Fs(is)27 b(presen)n(t)g(in)h(y)n(our)e Fo(OMakeroot)e Fs(\014le.)291 3450 y @beginspecial @setspecial @endspecial 103 x Fk(13.5.1)112 b(Auto)s(con\014guration)38 b(v)-6 b(ariables)291 3711 y Fs(These)36 b(v)-5 b(ariables)35 b(will)i(get)g(de\014ned)g(based)f(on)g(the)h(\\auto)r(conf-st)n(yle")e Fo(static.)f Fs(tests)291 3810 y(executed)22 b(when)h(y)n(ou)f(run)h (OMak)n(e)e(for)i(the)g(\014rst)f(time.)36 b(Y)-7 b(ou)23 b(can)f(use)h(them)g(to)g(con\014gure)291 3910 y(y)n(our)j(pro)5 b(ject)27 b(accordingly)-7 b(,)26 b(and)h(y)n(ou)g(should)g(not)h (rede\014ne)f(them.)415 4012 y(Y)-7 b(ou)26 b(can)g(use)f(the)i Fo(--configure)21 b Fs(command)k(line)i(option)e(\(Section)h @beginspecial @setspecial @endspecial(A.3.9)p @beginspecial @setspecial @endspecial(\))g(to)g(force)291 4112 y(re-execution)g(of)i (all)f(the)h(tests.)415 4214 y(A)41 b(di\013eren)n(t)f(set)g(of)g(auto) r(con\014guration)f(tests)h(is)g(p)r(erformed)g(dep)r(ending)h(on)f (the)291 4313 y(build)30 b(en)n(vironmen)n(t)f(in)n(v)n(olv)n(ed)g(|)h (one)f(set)i(of)e(tests)i(w)n(ould)e(b)r(e)i(p)r(erformed)e(in)h(a)g Fo(Win32)291 4413 y Fs(en)n(vironmen)n(t,)f(and)h(another)f(|)h(in)h(a) e(Unix-lik)n(e)h(en)n(vironmen)n(t)f(\(including)i(Lin)n(ux,)f(OS)291 4512 y(X)e(and)f(Cygwin\).)291 4660 y @beginspecial @setspecial @endspecial 81 x Fq(13.5.1.1)92 b(Unix-lik)m(e)32 b(systems)291 4813 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 86 x(GCC)p 510 4899 V 34 w(F)m(OUND)83 b Fs(A)28 b(b)r(o)r(olean)f(\015ag)f(sp)r(ecifying)h(whether)g(the)h Fo(gcc)e Fs(binary)g(w)n(as)h(found)291 4998 y(in)g(y)n(our)g(path.)p eop end %%Page: 202 202 TeXDict begin 202 201 bop 739 282 a @beginspecial @setspecial @endspecial Fs(202)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)739 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(GXX)p 964 515 29 4 v 35 w(F)m(OUND)83 b Fs(A)27 b(b)r(o)r(olean)f(\015ag)g(sp)r(ecifying)g(whether)h(the)f Fo(g++)g Fs(binary)f(w)n(as)h(found)739 615 y(in)i(y)n(our)e(path.)739 751 y @beginspecial @setspecial @endspecial 84 x Fq(13.5.1.2)93 b(Win32)739 889 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 101 x(CL)p 871 990 V 35 w(F)m(OUND)83 b Fs(A)31 b(b)r(o)r(olean)f(\015ag)g(sp)r (ecifying)g(whether)h(the)g Fo(cl)f Fs(binary)g(w)n(as)f(found)i(in)739 1089 y(y)n(our)26 b(path.)739 1225 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(LIB)p 906 1310 V 35 w(F)m(OUND)83 b Fs(A)34 b(b)r(o)r(olean)e (\015ag)g(sp)r(ecifying)h(whether)g(the)g Fo(lib)f Fs(binary)g(w)n(as)g (found)739 1409 y(in)c(y)n(our)e(path.)739 1545 y @beginspecial @setspecial @endspecial 101 x Fk(13.5.2)112 b(C)38 b(and)g(C++)g (con\014guration)g(v)-6 b(ariables)739 1801 y Fs(The)28 b(follo)n(wing)e(v)-5 b(ariables)26 b(can)i(b)r(e)g(rede\014ned)f(in)h (y)n(our)e(pro)5 b(ject.)739 1937 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(CC)83 b Fs(The)38 b(name)h(of)f(the)h(C)g(compiler)f(\(on)g Fo(Unix)f Fs(it)i(defaults)g(to)g Fo(gcc)e Fs(when)i Fo(gcc)e Fs(is)739 2121 y(presen)n(t)27 b(and)g(to)h Fo(cc)f Fs(otherwise;)f(on)i Fo(Win32)d Fs(defaults)j(to)g Fo(cl)42 b(/nologo)p Fs(\).)739 2261 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fq(CXX)83 b Fs(The)30 b(name)g(of)g(the)h(C++)e(compiler)h(\(on)g Fo(Unix)e Fs(it)j(defaults)f(to)g Fo(gcc)f Fs(when)h Fo(gcc)739 2440 y Fs(is)d(presen)n(t)g(and)h(to)f Fo(c)p Fs(++)g(otherwise;)f(on)i Fo(Win32)d Fs(defaults)j(to)g Fo(cl)42 b(/nologo)p Fs(\).)739 2581 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(CPP)83 b Fs(The)33 b(name)g(of)f(the)h(C)g(prepro)r(cessor)d (\(defaults)j(to)g Fo(cpp)e Fs(on)h Fo(Unix)p Fs(,)h(and)f Fo(cl)43 b(/E)739 2760 y Fs(on)27 b Fo(Win32)p Fs(\).)739 2901 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(CFLA)m(GS)84 b Fs(Compilation)40 b(\015ags)f(to)i(pass)e(to)i(the)g(C)f(compiler)g(\(default)h(empt)n(y) g(on)739 3080 y Fo(Unix)p Fs(,)26 b(and)h Fo(/DWIN32)e Fs(on)i Fo(Win32)p Fs(\).)739 3220 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fq(CXXFLA)m(GS)84 b Fs(Compilation)24 b(\015ags)f(to)i(pass)e(to)h (the)h(C++)e(compiler)h(\(default)h(empt)n(y)739 3400 y(on)i Fo(Unix)p Fs(,)f(and)i Fo(/DWIN32)c Fs(on)k Fo(Win32)p Fs(\).)739 3540 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fq(INCLUDES)84 b Fs(Additional)23 b(directories)f(that)i(sp)r(ecify)f(the)h(searc)n(h) e(path)h(to)g(the)h(C)f(and)739 3719 y(C++)33 b(compilers)f(\(default)j (is)e Fo(.)p Fs(\).)55 b(The)33 b(directories)f(are)h(passed)g(to)g (the)h(C)g(and)f(C++)739 3819 y(compilers)e(with)h(the)g Fo(-I)f Fs(option.)49 b(The)31 b(include)i(path)e(with)i Fo(-I)d Fs(pre\014xes)h(is)h(de\014ned)g(in)739 3919 y(the)c Fo(PREFIXED_INCLUDE)o(S)22 b Fs(v)-5 b(ariable.)739 4046 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 93 x Fq(LIBS)84 b Fs(Additional)21 b(libraries)e(needed)i(when)h(building)f(a)f(program)f(\(default)j(is)f (empt)n(y\).)739 4279 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fq(CCOUT)83 b Fs(The)42 b(option)e(to)h(use)g(for)g(sp)r(ecifying)g(the)g(output)h (\014le)f(in)g(C)g(and)g(C++)739 4459 y(compilers)27 b(\(defaults)h(to)f Fo(-o)g Fs(on)g Fo(Unix)f Fs(and)i Fo(/Fo)e Fs(on)h Fo(Win32)p Fs(\).)739 4599 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fq(AS)83 b Fs(The)28 b(name)f(of)h(the)g(assem)n(bler)e (\(defaults)i(to)f Fo(as)g Fs(on)g Fo(Unix)p Fs(,)g(and)g Fo(ml)g Fs(on)g Fo(Win32)p Fs(\).)739 4819 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fq(ASFLA)m(GS)84 b Fs(Flags)35 b(to)h(pass)f(to)h(the)g(assem)n (bler)f(\(default)h(is)g(empt)n(y)g(on)g Fo(Unix)p Fs(,)g(and)739 4998 y Fo(/c)43 b(/coff)25 b Fs(on)j Fo(Win32)p Fs(\).)p eop end %%Page: 203 203 TeXDict begin 203 202 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.5.)63 b(BUILDING)28 b(C)g(AND)h(C++)d(CODE)1288 b Fs(203)291 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(ASOUT)83 b Fs(The)24 b(option)g(string)f(that)h(sp)r(eci\014es)g(the)g(output)g (\014le)g(for)g Fo(AS)f Fs(\(defaults)h(to)g Fo(-o)291 615 y Fs(on)j Fo(Unix)f Fs(and)h Fo(/Fo)g Fs(on)g Fo(Win32)p Fs(\).)291 780 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(AR)82 b Fs(The)28 b(name)g(of)g(the)h(program)c(to)j(create)f(static)h (libraries)f(\(defaults)h(to)g Fo(ar)43 b(cq)27 b Fs(on)291 965 y Fo(Unix)p Fs(,)f(and)h Fo(lib)g Fs(on)g Fo(Win32)p Fs(\).)291 1130 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(LD)83 b Fs(The)28 b(name)f(of)h(the)g(link)n(er)f(\(defaults)h(to)f Fo(ld)g Fs(on)g Fo(Unix)p Fs(,)f(and)i Fo(cl)f Fs(on)g Fo(Win32)p Fs(\).)291 1381 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(LDFLA)m(GS)84 b Fs(Options)27 b(to)h(pass)f(to)g(the)h(link)n(er)f (\(default)h(is)g(empt)n(y\).)291 1631 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(LDFLA)m(GS)p 741 1716 29 4 v 36 w(DLL)84 b Fs(Options)31 b(to)g(pass)g(to)h(the)g(link)n(er)e(when)i(compiling)f(a)g(shared)g (li-)291 1816 y(brary)26 b(\(defaults)i(to)f Fo(-shared)e Fs(on)i Fo(Unix)f Fs(and)i Fo(/DLL)e Fs(on)h Fo(Win32)p Fs(\).)291 1981 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(LDOUT)84 b Fs(The)20 b(option)g(to)g(use)g(for)g(sp)r(ecifying)h(the)f(output)h (\014le)f(in)h(C)f(and)g(C++)g(link)n(ers)291 2166 y(\(defaults)28 b(to)f Fo(-o)g Fs(on)g Fo(Unix)f Fs(and)i Fo(/Fe)e Fs(on)h Fo(Win32)p Fs(\).)291 2331 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 86 x Fq(Y)-8 b(A)m(CC)83 b Fs(The)19 b(name)g(of)f(the)h Fo(yacc)f Fs(parser)f(generator)f(\(default)k(is)e Fo(yacc)f Fs(on)i Fo(Unix)p Fs(,)g(empt)n(y)291 2516 y(on)27 b Fo(Win32)p Fs(\).)291 2681 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 86 x Fq(LEX)83 b Fs(The)27 b(name)g(of)h(the)f Fo(lex)f Fs(lexer)h(generator)e(\(default)j(is)f Fo(lex)f Fs(on)h Fo(Unix)p Fs(,)f(empt)n(y)h(on)291 2866 y Fo(Win32)p Fs(\).)291 3031 y @beginspecial @setspecial @endspecial 102 x Fk(13.5.3)112 b(Generated)38 b(C)g(\014les)291 3299 y Fs(Because)23 b(the)i(C)g(scanners)e(do)h(not)g(normally)g(kno)n (w)f(an)n(ything)h(ab)r(out)h(generated)e(source)291 3398 y(\014les)29 b(\(suc)n(h)h(as)f(generated)g(header)g(\014les\),)h (these)g(\014les)g(ma)n(y)f(need)g(to)h(b)r(e)g(created)f(b)r(efore)291 3498 y(running)e(the)h(scanner.)291 3658 y @beginspecial @setspecial @endspecial 90 x Fq(13.5.3.1)92 b(CGeneratedFiles,)30 b(Lo)s(calCGeneratedFiles)291 3824 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 90 x Fo(CGeneratedFiles)o(\(fi)o(le)o(s\))291 4013 y(LocalCGenerated)o (Fil)o(es)o(\(f)o(ile)o(s\))415 4222 y Fs(The)37 b Fo(CGeneratedFiles) 31 b Fs(and)36 b Fo(LocalCGeneratedFi)o(le)o(s)31 b Fs(functions)37 b(sp)r(ecify)g(\014les)291 4322 y(that)28 b(need)g(to)f(b)r(e)i (generated)d(b)r(efore)i(an)n(y)f(C)h(\014les)f(are)g(scanned)g(for)h (dep)r(endencies.)38 b(F)-7 b(or)291 4421 y(example,)27 b(if)h Fo(config.h)c Fs(and)k Fo(inputs.h)c Fs(are)j(b)r(oth)h (generated)e(\014les,)i(sp)r(ecify:)291 4614 y Fo(CGeneratedFiles)o (\(co)o(nf)o(ig)o(.h)37 b(inputs.h\))415 4799 y Fs(The)27 b Fo(CGeneratedFiles)21 b Fs(function)27 b(is)g Fi(glob)l(al)37 b Fs(|)26 b(its)h(argumen)n(ts)f(will)h(b)r(e)g(generated)291 4899 y(b)r(efore)k(an)n(y)g(C)g(\014les)h(an)n(ywhere)e(in)i(the)f(pro) 5 b(ject)31 b(are)g(scanned)g(for)g(dep)r(endencies.)49 b(The)291 4998 y Fo(LocalCGenerated)o(Fil)o(es)21 b Fs(function)28 b(follo)n(ws)f(the)h(normal)e(scoping)h(rules)g(of)h(OMak)n(e.)p eop end %%Page: 204 204 TeXDict begin 204 203 bop 739 282 a @beginspecial @setspecial @endspecial Fs(204)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(13.5.4)112 b(Building)39 b(C)e(programs)h(and)h(Libraries)739 589 y @beginspecial @setspecial @endspecial 81 x Fq(13.5.4.1)93 b(StaticCLibrary,)33 b(DynamicCLibrary)739 740 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fs(The)23 b Fo(StaticCLibrary)18 b Fs(builds)24 b(a)e(static)i (library)e(and)h(the)g Fo(DynamicCLibrary)18 b Fs(function)739 924 y(builds)28 b(a)f(shared)g(library)f(\(DLL\).)739 1110 y Fo(StaticCLibrary\(<)o(ta)o(rge)o(t>)o(,)38 b(\))739 1209 y(DynamicCLibrary\()o(,)f(\))863 1394 y Fs(The)24 b Fo()c Fs(do)r(es)j Fi(not)30 b Fs(include)24 b(the)f(library)f(su\016x,)i(and)g(The)f Fo()d Fs(list)k(do)r(es)739 1494 y(not)31 b(include)h(the)f(ob)5 b(ject)31 b(su\016x.)48 b(These)31 b(are)f(obtained)h(from)g(the)g @beginspecial @setspecial @endspecial Fo(EXT)p 3058 1494 27 4 v 31 w(LIB)p @beginspecial @setspecial @endspecial 30 w Fs(\()p @beginspecial @setspecial @endspecial Fo(EXT)p 3415 1494 V 30 w(DLL)p @beginspecial @setspecial @endspecial Fs(\))739 1594 y(and)c @beginspecial @setspecial @endspecial Fo(EXT)p 1037 1594 V 30 w(OBJ)p @beginspecial @setspecial @endspecial 27 w Fs(v)-5 b(ariables.)863 1694 y(This)28 b(function)g(returns)f(the)h(library)e(\014lename.)863 1794 y(The)19 b(follo)n(wing)e(command)h(builds)h(the)g(library)e Fo(libfoo.a)e Fs(from)j(the)h(\014les)f Fo(a.o)42 b(b.o)h(c.o)739 1894 y Fs(on)19 b Fo(Unix)p Fs(,)h(or)f(the)h(library)e Fo(libfoo.lib)e Fs(from)j(the)h(\014les)g Fo(a.obj)42 b(b.obj)f(c.obj)18 b Fs(on)h Fo(Win32)p Fs(.)739 2080 y Fo(StaticCLibrary\(l)o(ib)o(foo)o(,)37 b(a)44 b(b)f(c\))739 2179 y(.DEFAULT:)d($\(StaticCLibrary)d(libbar,)j(a)k(b)f(c)g(d\))739 2316 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(CDLL)p 1001 2398 29 4 v 35 w(IMPLIES)p 1437 2398 V 35 w(ST)-8 b(A)g(TIC)84 b Fs(If)19 b(the)g Fo(CDLL_IMPLIES_STA)o(TIC)12 b Fs(v)-5 b(ariable)17 b(is)h(enabled)739 2498 y(\(this)27 b(is)f(default)g(on)g Fo(Win32)p Fs(\),)f(all)g(the)i Fo(DynamicC)c Fs(functions)j(w)n(ould)g (assume)f(that)h(creat-)739 2598 y(ing)h(a)g(shared)g(library)f (automatically)h(created)g(a)g(static)g(one.)739 2733 y @beginspecial @setspecial @endspecial 84 x Fq(13.5.4.2)93 b(StaticCLibraryCop)m(y,)33 b(DynamicCLibraryCop)m(y)739 2887 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fs(The)28 b Fo(StaticCLibraryC)o(opy)21 b Fs(and)28 b Fo(DynamicCLibrary)o(Co)o(py)21 b Fs(functions)28 b(cop)n(y)f(a)h(library)739 3071 y(to)f(an)h(install)f(lo)r(cation.)739 3256 y Fo(StaticCLibraryCo)o(py)o(\(,)37 b(,)k(\)) 739 3356 y(DynamicCLibraryC)o(op)o(y\(<)o(ta)o(g>,)c(,)k(\)) 863 3541 y Fs(The)34 b Fo()d Fs(is)i(the)h(name)f(of)g(a)g(target) f(\(t)n(ypically)h(a)g Fo(.PHONY)e Fs(target\);)36 b(the)d Fo()739 3641 y Fs(is)27 b(the)i(installation)e(directory)-7 b(,)26 b(and)i Fo()d Fs(is)j(the)g(library)e(to)i(b)r(e)g(copied)f (\(without)i(the)739 3741 y(library)d(su\016x\).)863 3841 y(This)i(function)g(returns)f(the)h(\014lename)g(of)f(the)h (library)e(in)i(the)g(target)f(directory)-7 b(.)863 3941 y(F)g(or)21 b(example,)h(the)f(follo)n(wing)f(co)r(de)h(copies)g(the)g (library)f Fo(libfoo.a)e Fs(to)j(the)g Fo(/usr/lib)739 4041 y Fs(directory)-7 b(.)739 4226 y Fo(.PHONY:)41 b(install)739 4426 y(StaticCLibraryCo)o(py)o(\(in)o(st)o(all)o(,)c(/usr/lib,)j (libfoo\))739 4563 y @beginspecial @setspecial @endspecial 82 x Fq(13.5.4.3)93 b(StaticCLibraryInstall,)33 b (DynamicCLibraryInstall)739 4715 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fs(The)26 b Fo(StaticCLibraryIn)o(sta)o(ll)20 b Fs(and)25 b Fo(DynamicCLibraryIn)o(sta)o(ll)20 b Fs(functions)26 b(build)h(a)739 4899 y(library)-7 b(,)39 b(and)f(set)g(the)g(install)g (lo)r(cation)g(in)g(one)f(step.)69 b(Return)38 b(the)g(\014lename)g(of) g(the)739 4998 y(library)26 b(in)i(the)g(target)f(directory)-7 b(.)p eop end %%Page: 205 205 TeXDict begin 205 204 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.5.)63 b(BUILDING)28 b(C)g(AND)h(C++)d(CODE)1288 b Fs(205)291 515 y Fo(StaticCLibraryI)o(nst)o(al)o(l\()o()o(,) 38 b(,)j(,)e(\))291 615 y(DynamicCLibrary)o(Ins)o (ta)o(ll)o(\(,)e(,)k(,)f(\))291 769 y(StaticCLibraryI)o(nst)o(al)o(l\()o(ins)o(ta)o(ll,)d(/usr/lib,)j (libfoo,)g(a)j(b)h(c\))291 899 y @beginspecial @setspecial @endspecial 81 x Fq(13.5.4.4)92 b(StaticCOb)5 b(ject,)33 b(StaticCOb)5 b(jectCop)m(y,)33 b(StaticCOb)5 b(jectInstall)291 1050 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fs(These)18 b(functions)g(mirror)f(the)i Fo(StaticCLibrary)p Fs(,)14 b Fo(StaticCLibraryCop)o(y)p Fs(,)g(and)19 b Fo(StaticCLibraryI)o(nst)o(al)o(l)291 1233 y Fs(functions,)35 b(but)f(they)g(build)g(an)f Fi(obje)l(ct)42 b Fs(\014le)34 b(\(a)f Fo(.o)g Fs(\014le)h(on)f Fo(Unix)p Fs(,)g(and)h(a)f Fo(.obj)f Fs(\014le)h(on)291 1333 y Fo(Win32)p Fs(\).)291 1465 y @beginspecial @setspecial @endspecial 79 x Fq(13.5.4.5)92 b(CProgram)291 1614 y @beginspecial @setspecial @endspecial 83 x Fs(The)18 b Fo(CProgram)e Fs(function)j(builds)g(a)f(C)h(program)d (from)i(a)h(set)f(of)h(ob)5 b(ject)18 b(\014les)h(and)f(libraries.)415 1797 y Fo(CProgram\(,)37 b(\))415 1896 y Fs(The)f Fo()d Fs(argumen)n(t)i(sp)r(eci\014es)g(the)h(name)g(of) g(the)g(program)d(to)j(b)r(e)g(built;)41 b(the)291 1996 y Fo()35 b Fs(argumen)n(t)i(sp)r(eci\014es)i(the)f(\014les)h(to) f(b)r(e)h(link)n(ed.)69 b(The)38 b(function)h(returns)f(the)291 2096 y(\014lename)27 b(of)h(the)g(executable.)415 2195 y(Additional)g(options)f(can)g(b)r(e)h(passed)f(through)g(the)h(follo)n (wing)e(v)-5 b(ariables.)291 2339 y Fq(CFLA)m(GS)42 b Fs(Flags)27 b(used)g(b)n(y)h(the)g(C)f(compiler)g(during)g(the)h(link)g (step.)291 2494 y Fq(LDFLA)m(GS)43 b Fs(Flags)27 b(to)g(pass)g(to)g (the)h(loader.)291 2648 y Fq(LIBS)42 b Fs(Additional)27 b(libraries)g(to)g(b)r(e)h(link)n(ed.)415 2792 y(F)-7 b(or)39 b(example,)k(the)e(follo)n(wing)e(co)r(de)g(sp)r(eci\014es)h (that)h(the)f(program)e Fo(foo)h Fs(is)h(to)g(b)r(e)291 2891 y(pro)r(duced)27 b(b)n(y)g(linking)h(the)g(\014les)f Fo(bar.o)f Fs(and)h Fo(baz.o)f Fs(and)h(libraries)f Fo(libfoo.a)p Fs(.)291 3046 y Fo(section)421 3146 y(LIBS)42 b(=)h(libfoo)421 3245 y(LDFLAGS)e(+=)i(-lbar)421 3345 y(CProgram\(foo,)c(bar)j(baz\))291 3475 y @beginspecial @setspecial @endspecial 81 x Fq(13.5.4.6)92 b(CProgramCop)m(y)291 3626 y @beginspecial @setspecial @endspecial 83 x Fs(The)27 b Fo(CProgramCopy)c Fs(function)28 b(copies)f(a)g(\014le)h(to)f(an)h(install)f(lo)r(cation.)415 3809 y Fo(CProgramCopy\(,)37 b(,)k(\))291 3963 y(CProgramCopy\(in)o(sta)o(ll)o(,)c(/usr/bin,)j(foo\))291 4093 y @beginspecial @setspecial @endspecial 81 x Fq(13.5.4.7)92 b(CProgramInstall)291 4244 y @beginspecial @setspecial @endspecial 83 x Fs(The)28 b Fo(CProgramInstall)22 b Fs(function)29 b(sp)r(eci\014es)f(a)g(program)e(to)i(build,)h(and)f(a)f (lo)r(cation)h(to)291 4427 y(install,)f(sim)n(ultaneously)-7 b(.)415 4527 y Fo(CProgramInstall\()o()o(,)38 b(,)j(,)f(\))291 4681 y(section)421 4781 y(LIBS)i(=)h(libfoo)421 4880 y(LDFLAGS)e(+=)i(-lbar)421 4980 y(CProgramInstall\(i)o(ns)o(tal)o(l,)37 b(/usr/bin,)j(foo,)i(bar)g (baz\))p eop end %%Page: 206 206 TeXDict begin 206 205 bop 739 282 a @beginspecial @setspecial @endspecial Fs(206)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)739 432 y @beginspecial @setspecial @endspecial 83 x Fq(13.5.4.8)93 b(CXXProgram,)32 b(CXXProgramInstall)739 586 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fs(The)h Fo(CXXProgram)c Fs(and)k Fo(CXXProgramInstal)o(l)27 b Fs(functions)33 b(are)f(equiv)-5 b(alen)n(t)33 b(to)g(their)g(C)739 770 y(coun)n(terparts,)19 b(except)g(that)g(w)n(ould)f(use)h Fo($\(CXX\))d Fs(and)j Fo($\(CXXFLAGS\))14 b Fs(for)19 b(linking)f(instead)739 869 y(of)27 b Fo($\(CC\))f Fs(and)h Fo($\(CFLAGS\))p Fs(.)739 995 y @beginspecial @setspecial @endspecial 94 x Fq(13.5.4.9)93 b(StaticCXXLibrary,)41 b(StaticCXXLibraryCop)m(y)-8 b(,)42 b(StaticCXXLi-)1153 1188 y(braryInstall,)23 b(DynamicCXXLibrary)-8 b(,)26 b(DynamicCXXLibraryCop)m(y)-8 b(,)1153 1288 y(DynamicCXXLibraryInstall) 739 1358 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fs(Similarly)h(,)24 b(the)f(six)g Fo(CXXLibrary)c Fs(functions)k(the) h(C++)e(equiv)-5 b(alen)n(ts)23 b(of)g(the)g(corresp)r(ond-)739 1542 y(ing)k Fo(CLibrary)e Fs(functions.)739 1689 y @beginspecial @setspecial @endspecial 132 x Fl(13.6)135 b(Building)45 b(OCaml)h(co)t(de)739 2004 y Fs(OMak)n(e)25 b(pro)n(vides)h(extensiv)n (e)g(supp)r(ort)g(for)h(building)g(OCaml)f(co)r(de,)g(including)h(supp) r(ort)739 2104 y(for)g(to)r(ols)g(lik)n(e)g Fo(ocamlfind)p Fs(,)d Fo(ocamlyacc)g Fs(and)j Fo(menhir)p Fs(.)35 b(In)27 b(order)f(to)i(use)f(the)h(functions)739 2203 y(de\014ned)g(in)g(this)g (section,)f(y)n(ou)g(need)g(to)h(mak)n(e)f(sure)g(the)h(line)739 2372 y Fo(open)42 b(build/OCaml)739 2540 y Fs(is)27 b(presen)n(t)g(in)h (y)n(our)f Fo(OMakeroot)c Fs(\014le.)739 2676 y @beginspecial @setspecial @endspecial 101 x Fk(13.6.1)112 b(Auto)s(con\014guration)26 b(v)-6 b(ariables)26 b(for)f(OCaml)h(compilation)739 2931 y Fs(These)35 b(v)-5 b(ariables)35 b(will)g(get)h(de\014ned)g (based)f(on)g(the)h(\\auto)r(conf-st)n(yle")e(tests)h(executed)739 3031 y(when)e(y)n(ou)g(run)g(OMak)n(e)f(for)g(the)i(\014rst)f(time.)54 b(Y)-7 b(ou)34 b(can)e(use)i(them)f(to)g(con\014gure)f(y)n(our)739 3130 y(pro)5 b(ject)27 b(accordingly)-7 b(,)26 b(and)h(y)n(ou)g(should) g(not)h(rede\014ne)f(them.)863 3231 y(Y)-7 b(ou)26 b(can)g(use)g(the)g Fo(--configure)21 b Fs(command)26 b(line)g(option)f(\(Section)i @beginspecial @setspecial @endspecial(A.3.9)p @beginspecial @setspecial @endspecial(\))e(to)h(force)739 3330 y(re-execution)g(of)i (all)f(the)h(tests.)739 3450 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 100 x Fq(OCAMLOPT)p 1309 3550 29 4 v 35 w(EXISTS)83 b Fs(T)-7 b(rue)37 b(when)g Fo(ocamlopt)c Fs(\(or)k Fo(ocamlopt.opt)p Fs(\))32 b(is)k(a)n(v)-5 b(ail-)739 3650 y(able)27 b(on)g(y)n(our)g (mac)n(hine.)739 3785 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(OCAMLFIND)p 1350 3869 V 34 w(EXISTS)84 b Fs(T)-7 b(rue)27 b(when)g(the)g(o)r (caml\014nd)f(is)h(a)n(v)-5 b(ailable)26 b(on)g(y)n(our)g(ma-)739 3969 y(c)n(hines.)739 4088 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 101 x Fq(OCAMLDEP)p 1307 4189 V 34 w(MODULES)p 1823 4189 V 35 w(A)-11 b(V)g(AILABLE)85 b Fs(T)-7 b(rue)18 b(when)h(a)f(v)n (ersion)f(of)h Fo(ocamldep)739 4288 y Fs(that)28 b(understands)f(the)h Fo(-modules)c Fs(option)j(is)h(a)n(v)-5 b(ailable)26 b(on)i(y)n(our)e(mac)n(hine.)739 4424 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(MENHIR)p 1157 4508 V 33 w(A)-11 b(V)g(AILABLE)85 b Fs(T)-7 b(rue)35 b(when)g(the)h(Menhir)f(parser-generator)c(is)k(a)n (v)-5 b(ail-)739 4608 y(able)27 b(on)g(y)n(our)g(mac)n(hine.)739 4743 y @beginspecial @setspecial @endspecial 101 x Fk(13.6.2)112 b(Con\014guration)39 b(v)-6 b(ariables)39 b(for)e(OCaml)i(compilation) 739 4998 y Fs(The)28 b(follo)n(wing)e(v)-5 b(ariables)26 b(can)i(b)r(e)g(rede\014ned)f(in)h(y)n(our)e(pro)5 b(ject.)p eop end %%Page: 207 207 TeXDict begin 207 206 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.6.)63 b(BUILDING)28 b(OCAML)g(CODE)1465 b Fs(207)291 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(USE)p 486 515 29 4 v 34 w(OCAMLFIND)83 b Fs(Whether)27 b(to)f(use)g(the)g Fo(ocamlfind)d Fs(utilit)n(y)k(\(default)g Fo(false)p Fs(\))291 668 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(OCAMLC)82 b Fs(The)37 b(OCaml)g(b)n(yteco)r(de)f(compiler)g(\(default)i Fo(ocamlc.opt)33 b Fs(if)k(it)g(exists)291 850 y(and)27 b Fo(USE_OCAMLFIND)22 b Fs(is)28 b(not)f(set,)h(otherwise)f Fo(ocamlc)p Fs(\).)291 1002 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OCAMLOPT)83 b Fs(The)26 b(OCaml)g(nativ)n(e-co)r(de)e(compiler)i (\(default)h Fo(ocamlopt.opt)21 b Fs(if)26 b(it)291 1184 y(exists)h(and)g Fo(USE_OCAMLFIND)c Fs(is)k(not)h(set,)f(otherwise)g Fo(ocamlopt)p Fs(\).)291 1337 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(CAMLP4)83 b Fs(The)27 b Fo(camlp4)f Fs(prepro)r(cessor)f (\(default)j Fo(camlp4)p Fs(\).)291 1571 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OCAMLLEX)83 b Fs(The)28 b(OCaml)e(lexer)h(generator)f (\(default)i Fo(ocamllex)p Fs(\).)291 1806 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OCAMLLEXFLA)m(GS)84 b Fs(The)28 b(\015ags)e(to)i(pass)e(to)i Fo(ocamllex)c Fs(\(default)29 b Fo(-q)p Fs(\).)291 2041 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OCAML)-8 b(Y)g(A)m(CC)83 b Fs(The)28 b(OCaml)f(parser)f(generator)f(\(default)k Fo(ocamlyacc)p Fs(\).)291 2276 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(OCAML)-8 b(Y)g(A)m(CCFLA)m(GS)84 b Fs(Additional)28 b(options)f(to)h(pass)e(to)i Fo($\(OCAMLYACC\))p Fs(.)291 2506 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 87 x Fq(OCAMLDEP)83 b Fs(The)27 b(OCaml)g(dep)r(endency)h(analyzer)e(\(default)j Fo(ocamldep)p Fs(\).)291 2746 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(OCAMLDEP)p 859 2828 V 34 w(MODULES)83 b Fs(The)38 b(OCaml)e(dep)r(endency)i (analyzer)e(that)h(under-)291 2928 y(stands)g(the)h Fo(-module)d Fs(option)j(\(default)g Fo(ocamldep)p Fs(,)f(if)i Fo(ocamldep)h (-modules)35 b Fs(w)n(orks,)291 3027 y(or)21 b Fo(ocamlrun)40 b(ocamldep-omake)p Fs(,)18 b(if)k Fo(ocamlrun)41 b(ocamldep-omake)d (-modules)19 b Fs(w)n(orks,)291 3127 y(and)27 b(empt)n(y)h(when)f (neither)h(w)n(orks\).)291 3279 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OCAMLDEP)p 859 3362 V 34 w(MODULES)p 1375 3362 V 35 w(ENABLED)83 b Fs(Instead)42 b(of)h(using)g Fo(OCAMLDEP)d Fs(in)j(a)291 3461 y(traditional)31 b Fo(make)p Fs(-st)n(yle)e (fashion,)k(run)e Fo($\(OCAMLDEP_MODULE)o(S\))37 b(-modules)29 b Fs(and)i(then)291 3561 y(p)r(ostpro)r(cess)39 b(the)i(output)h(in)n (ternally)d(to)i(disco)n(v)n(er)e(all)h(the)h(relev)-5 b(an)n(t)40 b(generated)g Fo(.ml)291 3661 y Fs(and)25 b Fo(.mli)f Fs(\014les.)36 b(See)26 b(Section)g @beginspecial @setspecial @endspecial(13.6.5)p @beginspecial @setspecial @endspecial 24 w(for)f(more)g(information)g(on)g(in)n(teractions)g(b)r (et)n(w)n(een)291 3760 y(OMak)n(e,)19 b Fo(OCAMLDEP)c Fs(and)j(generated)f(\014les.)34 b(Set)19 b(to)f Fo($\(OCAMLDEP_MODUL)o (ES)o(_AV)o(AI)o(LA)o(BLE)o(\))291 3860 y Fs(b)n(y)27 b(default.)291 4008 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 87 x Fq(OCAMLMKTOP)82 b Fs(The)28 b(OCaml)f(toplo)r(op)g(compiler)g(\(default)h Fo(ocamlmktop)p Fs(\).)291 4247 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OCAMLLINK)83 b Fs(The)27 b(OCaml)g(b)n(yteco)r(de)h(link)n(er)e (\(default)j Fo($\(OCAMLC\))p Fs(\).)291 4482 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(OCAMLOPTLINK)83 b Fs(The)28 b(OCaml)f(nativ)n(e-co)r(de)f(link) n(er)h(\(default)h Fo($\(OCAMLOPT\))p Fs(\).)291 4717 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fq(OCAMLINCLUDES)83 b Fs(Searc)n(h)26 b(path)h(to)g(pass)f(to)h(the)h(OCaml)e(compilers)g(\(default)291 4899 y Fo(.)p Fs(\).)33 b(The)19 b(searc)n(h)e(path)h(with)h(the)g Fo(-I)e Fs(pre\014x)h(is)h(de\014ned)f(b)n(y)g(the)h Fo(PREFIXED_OCAMLINC)o(LU)o(DE)o(S)291 4998 y Fs(v)-5 b(ariable.)p eop end %%Page: 208 208 TeXDict begin 208 207 bop 739 282 a @beginspecial @setspecial @endspecial Fs(208)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)739 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OCAMLFIND)83 b Fs(The)21 b Fo(ocamlfind)d Fs(utilit)n(y)k (\(default)g Fo(ocamlfind)c Fs(if)k Fo(USE_OCAMLFIND)739 615 y Fs(is)27 b(set,)h(otherwise)f(empt)n(y\).)739 751 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 78 x Fq(OCAMLFINDFLA)m(GS)84 b Fs(The)19 b(\015ags)e(to)h(pass)g(to)g Fo(ocamlfind)d Fs(\(default)k(empt)n(y)-7 b(,)20 b Fo(USE_OCAMLFIND)739 929 y Fs(m)n(ust)28 b(b)r(e)g(set\).)739 1065 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(OCAMLP)-8 b(A)m(CKS)83 b Fs(P)n(ac)n(k)-5 b(age)16 b(names)i(to)h(pass)e(to)h Fo(ocamlfind)d Fs(\()p Fo(USE_OCAMLFIND)e Fs(m)n(ust)739 1243 y(b)r(e)28 b(set\).)739 1379 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(BYTE)p 1014 1458 29 4 v 35 w(ENABLED)82 b Fs(Flag)37 b(indicating)g(whether)g(to)g(use)g(the)h(b)n(yteco)r(de)f(compiler)739 1557 y(\(default)28 b Fo(true)p Fs(,)e(when)i(no)f Fo(ocamlopt)e Fs(found,)j Fo(false)d Fs(otherwise\).)739 1693 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(NA)-8 b(TIVE)p 1121 1772 V 35 w(ENABLED)83 b Fs(Flag)27 b(indicating)h(whether)f(to)h(use)g(the)g(nativ)n(e-co)r(de) f(com-)739 1871 y(piler)18 b(\(default)h Fo(true)p Fs(,)g(when)f(o)r (camlopt)g(is)g(found,)j Fo(false)16 b Fs(otherwise\).)34 b(Both)18 b Fo(BYTE_ENABLED)739 1971 y Fs(and)27 b Fo(NATIVE_ENABLED)22 b Fs(can)27 b(b)r(e)h(set)g(to)f(true;)h(at)g(least)f(one)g(should)g(b) r(e)h(set)g(to)f(true.)739 2102 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(MENHIR)p 1157 2186 V 33 w(ENABLED)83 b Fs(De\014ne)21 b(this)f(as)g Fo(true)f Fs(if)h(y)n(ou)g(wish)g(to)g(use)h Fo(menhir)c Fs(instead)739 2285 y(of)27 b Fo(ocamlyacc)d Fs(\(default)29 b Fo(false)p Fs(\).)739 2421 y @beginspecial @setspecial @endspecial 95 x Fk(13.6.3)112 b(OCaml)39 b(command)g(\015ags)739 2670 y Fs(The)33 b(follo)n(wing)e(v)-5 b(ariables)32 b(sp)r(ecify)h Fi(additional)44 b Fs(options)32 b(to)h(b)r(e)g(passed)f(to)h(the)g(OCaml)739 2769 y(to)r(ols.)739 2884 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 100 x Fq(OCAMLDEPFLA)m(GS)84 b Fs(Flags)27 b(to)g(pass)g(to)h Fo(OCAMLDEP)c Fs(and)j Fo(OCAMLDEP_MODULES)p Fs(.)739 3115 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(OCAMLPPFLA)m(GS)84 b Fs(Flags)27 b(to)h(pass)e(to)i Fo(CAMLP4)p Fs(.)739 3329 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(OCAMLCFLA)m(GS)84 b Fs(Flags)27 b(to)g(pass)g(to)g(the)h(b)n (yte-co)r(de)f(compiler)g(\(default)i Fo(-g)p Fs(\).)739 3548 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(OCAMLOPTFLA)m(GS)84 b Fs(Flags)40 b(to)h(pass)f(to)h(the)g(nativ)n(e-co)r(de)f(compiler)g (\(default)739 3727 y(empt)n(y\).)739 3862 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(OCAMLFLA)m(GS)84 b Fs(Flags)26 b(to)h(pass)f(to)h(either)f (compiler)h(\(default)g Fo(-warn-error)39 b(A)p Fs(\).)739 4077 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(OCAML)p 1106 4156 V 34 w(BYTE)p 1409 4156 V 35 w(LINK)p 1687 4156 V 34 w(FLA)m(GS)85 b Fs(Flags)25 b(to)i(pass)e(to)i(the)g(b)n(yte-co)r(de)e(link)n(er)h (\(de-)739 4255 y(fault)i(empt)n(y\).)739 4391 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(OCAML)p 1106 4470 V 34 w(NA)-8 b(TIVE)p 1516 4470 V 35 w(LINK)p 1794 4470 V 35 w(FLA)m(GS)84 b Fs(Flags)25 b(to)h(pass)f(to)h(the)h(nativ)n(e-co)r(de)e(link)n(er)739 4569 y(\(default)j(empt)n(y\).)739 4705 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(OCAML)p 1106 4784 V 34 w(LINK)p 1383 4784 V 35 w(FLA)m(GS)84 b Fs(Flags)27 b(to)g(pass)g(to)g(either)h(link)n(er.)739 4915 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(MENHIR)p 1157 4998 V 33 w(FLA)m(GS)84 b Fs(Additional)28 b(\015ags)e(to)i(pass)f(to)g Fo(menhir)p Fs(.)p eop end %%Page: 209 209 TeXDict begin 209 208 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.6.)63 b(BUILDING)28 b(OCAML)g(CODE)1465 b Fs(209)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(13.6.4)112 b(Library)38 b(v)-6 b(ariables)291 671 y Fs(The)27 b(follo)n(wing)g(v)-5 b(ariables)26 b(are)h(used)g (during)g(linking.)291 810 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(OCAML)p 658 895 29 4 v 34 w(LIBS)83 b Fs(Libraries)32 b(to)i(pass)f(to)g(the)h(link)n(er.)54 b(These)34 b(libraries)e(b)r (ecome)h(de-)291 994 y(p)r(endencies)27 b(of)h(the)g(link)g(step.)291 1133 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(OCAML)p 658 1217 V 34 w(OTHER)p 1040 1217 V 33 w(LIBS)84 b Fs(Additional)34 b(libraries)e(to)i(pass)f(to)g(the)i(link)n(er.)54 b(These)291 1317 y(libraries)31 b(are)h Fi(not)40 b Fs(included)33 b(as)f(dep)r(endencies)h(to)g(the)g(link)g(step.)52 b(T)n(ypical)32 b(use)h(is)f(for)291 1417 y(the)c(OCaml)f(standard)f(libraries)g(lik)n (e)i Fo(unix)e Fs(or)g Fo(str)p Fs(.)291 1539 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 101 x Fq(OCAML)p 658 1640 V 34 w(CLIBS)83 b Fs(C)28 b(libraries)e(to)i (pass)f(to)g(the)h(link)n(er.)291 1778 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(OCAML)p 658 1863 V 34 w(LIB)p 853 1863 V 35 w(FLA)m(GS)84 b Fs(Extra)26 b(\015ags)h(for)g(the)h(library)e(link)n(er.)291 2002 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fq(ABOR)-8 b(T)p 639 2087 V 34 w(ON)p 820 2087 V 34 w(DEPENDENCY)p 1545 2087 V 33 w(ERR)m(ORS)82 b Fs(OCaml)18 b(link)n(er)g(requires)f(the)h(OCaml) 291 2186 y(\014les)29 b(to)g(b)r(e)h(listed)f(in)h(dep)r(endency)g (order.)41 b(Normally)-7 b(,)28 b(all)i(the)f(functions)h(presen)n(ted) f(in)291 2286 y(this)f(section)h(will)f(automatically)g(sort)f(the)i (list)g(of)g(OCaml)f(mo)r(dules)g(passed)g(in)h(as)f(the)291 2386 y Fo()e Fs(argumen)n(t.)39 b(Ho)n(w)n(ev)n(er,)28 b(this)h(v)-5 b(ariable)28 b(is)h(set)g(to)f Fo(true)p Fs(,)g(the)h(order)f(of)h(the)g(\014les)291 2485 y(passed)24 b(in)n(to)i(these)f(function)h(will)g(b)r(e)g(left)g(as)f(is,)h(but)g (OMak)n(e)e(will)i(ab)r(ort)f(with)h(an)f(error)291 2585 y(message)h(if)i(the)g(order)e(is)i(illegal.)291 2723 y @beginspecial @setspecial @endspecial 102 x Fk(13.6.5)112 b(Generated)38 b(OCaml)h(Files)291 2981 y Fs(As)30 b(of)g(OCaml)g(v)n (ersion)f(3.09.2,)g(the)h(standard)g Fo(ocamldep)d Fs(scanner)i(is)h (\\brok)n(en".)43 b(The)291 3080 y(main)24 b(issue)h(is)g(that)g(it)g (\014nds)g(only)f(those)h(dep)r(endencies)g(that)g(already)e(exist.)36 b(If)25 b Fo(foo.ml)291 3180 y Fs(con)n(tains)h(a)h(dep)r(endency)h(on) g Fo(Bar)p Fs(,)291 3352 y Fo(foo.ml:)421 3451 y(open)42 b(Bar)291 3622 y Fs(then)c(the)g(default)h Fo(ocamldep)34 b Fs(will)39 b(only)e(\014nd)i(the)f(dep)r(endency)g(if)h(a)e(\014le)h Fo(bar.ml)e Fs(or)291 3721 y Fo(bar.ml)31 b Fs(exists)j(in)g(the)g (include)g(path.)56 b(It)34 b(will)h(not)f(\014nd)g(\(or)f(prin)n(t\))h (the)h(dep)r(endency)291 3821 y(if,)c(for)e(example,)i(only)e Fo(bar.mly)f Fs(exists)h(at)h(the)h(time)f Fo(ocamldep)d Fs(is)j(run,)h(ev)n(en)e(though)291 3920 y Fo(bar.ml)c Fs(and)i Fo(bar.mli)e Fs(can)i(b)r(e)h(generated)f(from)g Fo(bar.mly)p Fs(.)415 4022 y(OMak)n(e)i(curren)n(tly)f(pro)n(vides)h(t) n(w)n(o)g(metho)r(ds)h(for)f(addressing)f(this)i(problem)f(|)h(one)291 4121 y(that)18 b(requires)f(man)n(ually)h(sp)r(ecifying)g(the)h (generated)e(\014les,)j(and)f(an)f(exp)r(erimen)n(tal)f(metho)r(d)291 4221 y(for)g(disco)n(v)n(ering)g(suc)n(h)h(\\hidden")f(dep)r(endencies) i(automatically)-7 b(.)33 b(The)18 b @beginspecial @setspecial @endspecial Fo(OCAMLDEP)p 2906 4221 27 4 v 28 w(MODULES)p 3242 4221 V 29 w(ENABLED)291 4320 y Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial 24 w(con)n(trols)25 b(whic)n(h)g(metho)r(d)i(is)e(going)g(to)h(b)r(e)g(used.)36 b(When)27 b(this)f(v)-5 b(ariable)24 b(is)i(false,)291 4420 y(the)i(man)n(ual)g(sp)r(eci\014cations)f(are)g(exp)r(ected)i(and) f(when)g(it)h(is)f(true,)g(the)h(automated)e(dis-)291 4520 y(co)n(v)n(ery)e(will)j(b)r(e)g(attempted.)291 4658 y @beginspecial @setspecial @endspecial 85 x Fq(13.6.5.1)92 b(OCamlGeneratedFiles,)30 b(Lo)s(calOCamlGeneratedFiles)291 4814 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 85 x Fo(OCamlGeneratedF)o(ile)o(s\()o(fi)o(les) o(\))291 4998 y(LocalOCamlGener)o(ate)o(dF)o(il)o(es\()o(fi)o(les)o(\)) p eop end %%Page: 210 210 TeXDict begin 210 209 bop 739 282 a @beginspecial @setspecial @endspecial Fs(210)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)863 515 y Fs(When)e(the)f @beginspecial @setspecial @endspecial Fo(OCAMLDEP)p 1602 515 27 4 v 28 w(MODULES)p 1938 515 V 28 w(ENABLED)d Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial 25 w(v)g(ariable)25 b(is)g(set)h(to)g Fo(false)p Fs(,)e(the)739 615 y Fo(OCamlGeneratedFi)o(le)o(s)e Fs(and)28 b Fo(LocalOCamlGenera)o (te)o(dFi)o(le)o(s)22 b Fs(functions)28 b(sp)r(ecify)g(\014les)739 715 y(that)d(need)f(to)h(b)r(e)g(generated)e(b)r(efore)h(an)n(y)g (OCaml)g(\014les)g(are)g(scanned)g(for)g(dep)r(endencies.)739 814 y(F)-7 b(or)27 b(example,)g(if)h Fo(parser.ml)c Fs(and)k Fo(lexer.ml)c Fs(are)j(b)r(oth)h(generated)e(\014les,)i(sp)r(ecify:)739 993 y Fo(OCamlGeneratedFi)o(le)o(s\(p)o(ar)o(ser)o(.m)o(l)37 b(lexer.ml\))863 1169 y Fs(The)30 b Fo(OCamlGeneratedF)o(ile)o(s)23 b Fs(function)30 b(is)f Fi(glob)l(al)39 b Fs(|)30 b(its)f(argumen)n(ts) f(will)h(b)r(e)h(gen-)739 1268 y(erated)g(b)r(efore)g(an)n(y)g(OCaml)g (\014les)h(an)n(ywhere)e(in)i(the)g(pro)5 b(ject)30 b(are)g(scanned)g (for)g(dep)r(en-)739 1368 y(dencies.)40 b(The)29 b Fo(LocalOCamlGenera) o(ted)o(Fi)o(les)22 b Fs(function)29 b(follo)n(ws)f(the)h(normal)f (scoping)739 1468 y(rules)f(of)g(OMak)n(e.)863 1570 y(These)33 b(functions)g(ha)n(v)n(e)f(no)h(e\013ect)g(when)g(the)h @beginspecial @setspecial @endspecial Fo(OCAMLDEP)p 2742 1570 V 28 w(MODULES)p 3078 1570 V 28 w(ENABLED)c Fs(v)-5 b(ari-)739 1670 y(able)p @beginspecial @setspecial @endspecial 27 w(is)28 b(true.)739 1800 y @beginspecial @setspecial @endspecial 103 x Fq(13.6.5.2)93 b(Automatic)35 b(disco)m(v)m(ery)h(of) g(generated)f(\014les)f(during)h(dep)s(endency)1153 2002 y(analysis)739 2162 y Fs(Ha)n(ving)22 b(to)h(sp)r(ecify)h(the)f (generated)g(\014les)g(man)n(ualy)f(when)h(OMak)n(e)f(could)h(disco)n (v)n(er)f(them)739 2261 y(automatically)d(is)i(ob)n(viously)e(sub)r (optimal.)35 b(T)-7 b(o)20 b(address)f(this,)k(w)n(e)d(tell)h Fo(ocamldep)c Fs(to)k Fi(only)739 2361 y Fs(\014nd)k(the)f(free)g(mo)r (dule)h(names)f(in)g(a)g(\014le)h(and)f(then)h(p)r(ost-pro)r(cess)d (the)j(results)f(in)n(ternally)-7 b(.)863 2464 y(This)19 b(automated)f(functionalit)n(y)g(is)g(enabled)g(when)h(the)g @beginspecial @setspecial @endspecial Fo(OCAMLDEP)p 2995 2464 V 28 w(MODULES)p 3331 2464 V 28 w(ENABLED)739 2563 y Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial 23 w(is)24 b(set)g(to)g Fo(true)p Fs(.)34 b(By)24 b(default,)h @beginspecial @setspecial @endspecial Fo(OCAMLDEP)p 2367 2563 V 29 w(MODULES)p 2704 2563 V 28 w(ENABLED)c Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial 23 w(will)25 b(b)r(e)739 2663 y(set)j(to)f Fo($\(OCAMLDEP_MODUL)o(ES_)o (AV)o(AI)o(LAB)o(LE)o(\))p Fs(.)863 2766 y(Note)37 b(that)g(the)h Fo(ocamldep)33 b Fs(functionalit)n(y)k(this)g(relies)f(up)r(on)h(is)g (only)g(included)g(in)739 2865 y(the)26 b(OCaml)g(v)n(ersion)e(3.10)h (and)h(higher.)35 b(T)-7 b(emp)r(orarily)g(,)25 b(w)n(e)h(distribute)g (a)g(b)n(yteco)r(de)g(v)n(er-)739 2965 y(sion)c Fo(ocamldep-omake)17 b Fs(of)23 b(the)g(appropriately)e(mo)r(di\014ed)i Fo(ocamldep)p Fs(.)32 b(The)23 b(appropriate)739 3065 y Fo(ocamldep)15 b Fs(will)k(b)r(e)f(disco)n(v)n(ered)f(automatically)g(|)i(see)f(and)g (the)h @beginspecial @setspecial @endspecial Fo(OCAMLDEP)p 3132 3065 V 28 w(MODULES)p 3468 3065 V 28 w(AVAILABLE)p @beginspecial @setspecial @endspecial 739 3164 a Fs(and)27 b @beginspecial @setspecial @endspecial Fo(OCAMLDEP)p 1257 3164 V 28 w(MODULES)p @beginspecial @setspecial @endspecial 25 w Fs(v)-5 b(ariables)26 b(will)i(b)r(e)g(set)g (accordingly)-7 b(.)739 3310 y @beginspecial @setspecial @endspecial 104 x Fk(13.6.6)112 b(Using)39 b(the)e(Menhir)h(parser)g (generator)739 3573 y Fs(Menhir)d(is)h(a)f(parser)f(generator)f(that)j (is)f(mostly)g(compatible)h(with)g Fo(ocamlyacc)p Fs(,)e(but)739 3673 y(with)g(man)n(y)e(impro)n(v)n(emen)n(ts.)52 b(A)34 b(few)f(of)g(these)h(are)e(listed)h(here)g(\(excerpted)g(from)g(the)739 3772 y(Menhir)27 b(home)h(page)f @beginspecial @setspecial @endspecial Fo(http://cristal.)o(in)o(ria)o(.f)o(r/)2495 3751 y Fc(\030)2540 3772 y Fo(fpottier/menhir/)p @beginspecial @setspecial @endspecial Fs(\).)863 3968 y Fj(\017)41 b Fs(Menhir's)23 b(explanations)e(are)g(b)r(eliev)n(ed)i(to)f(b)r(e)h (understandable)e(b)n(y)i(mere)f(h)n(umans.)863 4146 y Fj(\017)41 b Fs(Menhir)36 b(allo)n(ws)e(grammar)g(sp)r (eci\014cations)h(to)g(b)r(e)h(split)g(o)n(v)n(er)e(m)n(ultiple)i (\014les.)61 b(It)946 4246 y(also)27 b(allo)n(ws)f(sev)n(eral)g (grammars)f(to)j(share)e(a)h(single)h(set)f(of)h(tok)n(ens.)863 4425 y Fj(\017)41 b Fs(Menhir)c(is)f(able)g(to)g(pro)r(duce)g(parsers)e (that)j(are)e(parameterized)g(b)n(y)h(Ob)5 b(jectiv)n(e)946 4525 y(Caml)28 b(mo)r(dules.)409 4703 y(Added)g(b)n(y)g(jyh)41 b(With)31 b(the)f Fo(--infer)e Fs(option,)i(Menhir)g(can)f(t)n(yp)r(ec) n(hec)n(k)g(the)h(seman)n(tic)g(actions)f(in)946 4803 y(y)n(our)e(grammar)e(at)j Fi(gener)l(ation)35 b Fs(time.)863 4998 y(What)28 b(do)g(y)n(ou)e(need)i(to)g(do)f(to)g(use)h(Menhir)f (instead)h(of)f Fo(ocamlyacc)p Fs(?)p eop end %%Page: 211 211 TeXDict begin 211 210 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.6.)63 b(BUILDING)28 b(OCAML)g(CODE)1465 b Fs(211)291 432 y @beginspecial @setspecial @endspecial 392 515 a(1.)41 b(Place)31 b(the)i(follo)n(wing)f(de\014nition)g(b)r (efore)h(the)f(relev)-5 b(an)n(t)32 b(section)g(of)g(y)n(our)g(pro)5 b(ject)498 615 y(\(or)24 b(at)g(the)h(top)f(of)g(y)n(our)f(pro)5 b(ject)24 b Fo(OMakefile)d Fs(if)k(y)n(ou)e(w)n(an)n(t)h(to)g(use)g (Menhir)h(ev)n(ery-)498 715 y(where\).)629 890 y Fo(MENHIR_ENABLED)38 b(=)43 b(true)291 947 y @beginspecial @setspecial @endspecial 392 1065 a Fs(2.)e(Optionally)-7 b(,)22 b(add)f(an)n(y)g(desired)g (Menhir)g(options)g(to)h(the)f Fo(MENHIR_FLAGS)c Fs(v)-5 b(ariable.)629 1241 y Fo(MENHIR_FLAGS)39 b(+=)j(--infer)415 1416 y Fs(With)29 b(this)e(setup,)h(an)n(y)f(\014le)h(with)g(a)f Fo(.mly)f Fs(su\016x)i(will)g(b)r(e)g(compiled)f(with)h(Menhir.)415 1516 y(If)e(y)n(our)f(grammar)f(is)h(split)i(across)c(sev)n(eral)h (\014les,)j(y)n(ou)e(need)h(to)f(sp)r(ecify)h(it)h(explicitly)-7 b(,)291 1616 y(using)27 b(the)h Fo(MenhirMulti)23 b Fs(function.)465 1765 y Fo(MenhirMulti\(targ)o(et)o(,)38 b(sources\))639 1864 y(target)j(:)j(filename,)39 b(without)i(suffix)639 1964 y(sources)g(:)i(the)f(files)g(that)g(define)f(the)h(grammar,)f (without)f(suffixes)415 2113 y Fs(F)-7 b(or)18 b(example,)i(if)f(y)n (ou)e(w)n(an)n(t)h(to)g(generate)f(the)i(parser)e(\014les)h Fo(parse.ml)d Fs(and)j Fo(parse.mli)p Fs(,)291 2213 y(from)25 b(the)g(grammar)e(sp)r(eci\014ed)j(in)g(\014les)f Fo(a.mly)e Fs(and)i Fo(b.mly)p Fs(,)f(y)n(ou)g(w)n(ould)h(use)g(the)h(follo)n(w-) 291 2312 y(ing.)465 2461 y Fo(MenhirMulti\(pars)o(e,)37 b(a)43 b(b\))291 2590 y @beginspecial @setspecial @endspecial 81 x Fq(13.6.6.1)92 b(OCamlLibrary)291 2741 y @beginspecial @setspecial @endspecial 83 x Fs(The)27 b Fo(OCamlLibrary)c Fs(function)28 b(builds)g(an)f(OCaml)g(library)-7 b(.)415 2924 y Fo(OCamlLibrary\(,)37 b(\))415 3024 y Fs(The)28 b Fo()c Fs(and)j Fo()e Fs(are)i(listed)g Fi(without)36 b Fs(su\016xes.)415 3123 y(This)31 b(function)h(returns)e(the)i(list)f(of)g(all)g(the)g(targets) f(that)i(it)f(de\014nes)g(the)h(rules)e(for)291 3223 y(\(including)e(the)g Fo($\(name\)$\(EXT_LI)o(B\))21 b Fs(\014le)28 b(when)g Fo(NATIVE_ENABLED)22 b Fs(is)27 b(set\).)415 3323 y(The)33 b(follo)n(wing)e(co)r(de)i(builds)g(the)g Fo(libfoo.cmxa)28 b Fs(library)k(from)g(the)h(\014les)g Fo(foo.cmx)291 3422 y Fs(and)h Fo(bar.cmx)d Fs(\(if)k Fo(NATIVE_ENABLED)28 b Fs(is)35 b(set\),)h(and)e Fo(libfoo.cma)c Fs(from)k Fo(foo.cmo)d Fs(and)291 3522 y Fo(bar.cmo)24 b Fs(\(if)29 b Fo(BYTE_ENABLED)22 b Fs(is)28 b(set\).)291 3671 y Fo(OCamlLibrary\(li)o(bfo)o(o,)37 b(foo)42 b(bar\))291 3800 y @beginspecial @setspecial @endspecial 81 x Fq(13.6.6.2)92 b(OCamlP)m(ac)m(k)-5 b(age)291 3951 y @beginspecial @setspecial @endspecial 83 x Fs(The)27 b Fo(OCamlPackage)c Fs(function)28 b(builds)g(an)f(OCaml)g(pac)n(k)-5 b(age.)415 4134 y Fo(OCamlPackage\()o(,)37 b(\))415 4233 y Fs(The)21 b Fo()d Fs(and)j Fo()d Fs(are)i(listed)h Fi(without)29 b Fs(su\016xes.)34 b(The)21 b Fo()d Fs(m)n(ust)j(ha)n(v)n(e)291 4333 y(b)r(een)28 b(compiled)f(with)h(the)g Fo(-for-pack)40 b()25 b Fs(\015ag)i(to)g(the)h(OCaml)f (compiler.)415 4433 y(This)k(function)h(returns)e(the)i(list)f(of)g (all)g(the)g(targets)f(that)i(it)f(de\014nes)g(the)h(rules)e(for)291 4532 y(\(including)e(the)g Fo($\(name\)$\(EXT_LI)o(B\))21 b Fs(\014le)28 b(when)g Fo(NATIVE_ENABLED)22 b Fs(is)27 b(set\).)415 4632 y(The)19 b(follo)n(wing)e(co)r(de)h(builds)h(the)f Fo(libfoo.cmx)d Fs(pac)n(k)-5 b(age)17 b(from)h(the)g(\014les)h Fo(package.cmx)291 4731 y Fs(and)29 b Fo(bar.cmx)e Fs(\(if)k Fo(NATIVE_ENABLED)24 b Fs(is)30 b(set\),)h(and)f Fo(package.cmo)25 b Fs(from)30 b Fo(foo.cmo)d Fs(and)291 4831 y Fo(bar.cmo)d Fs(\(if)29 b Fo(BYTE_ENABLED)22 b Fs(is)28 b(set\).)291 4980 y Fo(OCamlPackage\(pa)o(cka)o(ge)o(,)37 b(foo)43 b(bar\))p eop end %%Page: 212 212 TeXDict begin 212 211 bop 739 282 a @beginspecial @setspecial @endspecial Fs(212)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)739 432 y @beginspecial @setspecial @endspecial 83 x Fq(13.6.6.3)93 b(OCamlLibraryCop)m(y)739 585 y @beginspecial @setspecial @endspecial 84 x Fs(The)28 b Fo(OCamlLibraryCop)o(y)22 b Fs(function)28 b(copies)f(a)g(library)f (to)i(an)f(install)g(lo)r(cation.)863 768 y Fo(OCamlLibraryCopy\()o ()o(,)37 b(,)j(,)g(\))863 868 y Fs(The)25 b Fo()18 b Fs(sp)r(ecify)24 b(additional)g(in)n(terface)g(\014les)g(to)g(b)r(e)g(copied)g(if)h(the) 739 967 y Fo(INSTALL_INTERFAC)o(ES)c Fs(v)-5 b(ariable)27 b(is)g(true.)739 1087 y @beginspecial @setspecial @endspecial 92 x Fq(13.6.6.4)93 b(OCamlLibraryInstall)739 1249 y @beginspecial @setspecial @endspecial 83 x Fs(The)28 b Fo(OCamlLibraryIns)o(tal)o(l)21 b Fs(function)29 b(builds)f(a)f (library)f(and)h(copies)g(it)h(to)g(an)f(install)739 1432 y(lo)r(cation)g(in)h(one)f(step.)863 1532 y Fo(OCamlLibraryInsta)o (ll\()o(,)37 b(,)j(,)g(\))739 1662 y @beginspecial @setspecial @endspecial 81 x Fq(13.6.6.5)93 b(OCamlProgram)739 1813 y @beginspecial @setspecial @endspecial 84 x Fs(The)36 b Fo(OCamlProgram)30 b Fs(function)37 b(builds)f(an)f(OCaml)g(program.)59 b(It)36 b(returns)f(the)i(arra)n(y) 739 1996 y(with)k(all)f(the)h(targets)f(for)g(whic)n(h)g(it)h(has)f (de\014ned)h(the)g(rules)f(\()p Fo($\(name\)$\(EXE\))35 b Fs(and)739 2096 y Fo($\(name\).run)40 b Fs(and/or)i Fo($\(name\).opt)p Fs(,)i(dep)r(ending)h(on)f(the)h Fo(NATIVE_ENABLED) 38 b Fs(and)739 2195 y Fo(BYTE_ENABLED)23 b Fs(v)-5 b(ariables\).)863 2295 y Fo(OCamlProgram\(,)37 b(\))863 2395 y Fs(Additional)28 b(v)-5 b(ariables)27 b(used:)739 2542 y @beginspecial @setspecial @endspecial Fo(OCAML)p 964 2542 27 4 v 29 w(LIBS)p @beginspecial @setspecial @endspecial 40 w Fs(Additional)d(libraries)d(passed)i(to)g(the)h(link)n (er,)f(without)h(su\016x.)35 b(These)23 b(\014les)946 2641 y(b)r(ecome)28 b(dep)r(endencies)g(of)f(the)h(target)f(program.) 739 2798 y @beginspecial @setspecial @endspecial Fo(OCAML)p 964 2798 V 29 w(OTHER)p 1213 2798 V 30 w(LIBS)p @beginspecial @setspecial @endspecial 39 w Fs(Additional)19 b(libraries)e(passed)h (to)g(the)h(link)n(er,)g(without)g(su\016x.)34 b(These)946 2898 y(\014les)28 b(do)f Fi(not)36 b Fs(b)r(ecome)27 b(dep)r(endencies)h(of)f(the)h(target)f(program.)739 3054 y @beginspecial @setspecial @endspecial Fo(OCAML)p 964 3054 V 29 w(CLIBS)p @beginspecial @setspecial @endspecial 40 w Fs(C)g(libraries)f(to)i(pass)f(to)g(the)h(link)n(er.)739 3211 y @beginspecial @setspecial @endspecial Fo(OCAML)p 964 3211 V 29 w(BYTE)p 1169 3211 V 30 w(LINK)p 1375 3211 V 30 w(FLAGS)p @beginspecial @setspecial @endspecial 39 w Fs(Flags)f(to)g(pass)g(to)h(the)g(b)n(yteco)r(de)f(link)n(er.)739 3367 y @beginspecial @setspecial @endspecial Fo(OCAML)p 964 3367 V 29 w(NATIVE)p 1257 3367 V 29 w(LINK)p 1462 3367 V 30 w(FLAGS)p @beginspecial @setspecial @endspecial 39 w Fs(Flags)g(to)g(pass)g(to)h(the)g(nativ)n(e)f(co)r(de)g(link)n (er.)739 3524 y @beginspecial @setspecial @endspecial Fo(OCAML)p 964 3524 V 29 w(LINK)p 1169 3524 V 30 w(FLAGS)p @beginspecial @setspecial @endspecial 39 w Fs(Flags)g(to)h(pass)e(to)i (b)r(oth)g(link)n(ers.)739 3652 y @beginspecial @setspecial @endspecial 83 x Fq(13.6.6.6)93 b(OCamlProgramCop)m(y)739 3805 y @beginspecial @setspecial @endspecial 84 x Fs(The)30 b Fo(OCamlProgramCopy)24 b Fs(function)30 b(copies)g(an)g(OCaml)f (program)f(to)i(an)g(install)g(lo)r(ca-)739 3988 y(tion.)863 4088 y Fo(OCamlProgramCopy\()o()o(,)37 b(,)j(\)) 863 4188 y Fs(Additional)28 b(v)-5 b(ariables)27 b(used:)739 4335 y Fq(NA)-8 b(TIVE)p 1121 4335 29 4 v 35 w(ENABLED)41 b Fs(If)26 b(the)g @beginspecial @setspecial @endspecial Fo(NATIVE)p 2153 4335 27 4 v 29 w(ENABLED)d Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial 24 w(is)25 b(set,)h(the)g(nativ)n (e-co)r(de)946 4434 y(executable)i(is)f(copied;)g(otherwise)g(the)h(b)n (yte-co)r(de)f(executable)g(is)h(copied.)739 4563 y @beginspecial @setspecial @endspecial 83 x Fq(13.6.6.7)93 b(OCamlProgramInstall)739 4716 y @beginspecial @setspecial @endspecial 83 x Fs(The)19 b Fo(OCamlProgramInst)o(al)o(l)13 b Fs(function)20 b(builds)f(a)g (programs)d(and)j(copies)f(it)i(to)f(an)f(install)739 4899 y(lo)r(cation)27 b(in)h(one)f(step.)863 4998 y Fo (OCamlProgramInsta)o(ll\()o(,)37 b(,)j(,)h (\))p eop end %%Page: 213 213 TeXDict begin 213 212 bop 291 282 a @beginspecial @setspecial @endspecial Fp(13.7.)63 b(BUILDING)28 b(L)999 265 y Fb(A)1033 282 y Fp(T)1079 300 y(E)1125 282 y(X)g(FILES)1576 b Fs(213)291 432 y @beginspecial @setspecial @endspecial 83 x Fl(13.7)135 b(Building)47 b(L)1243 490 y Fq(A)1295 515 y Fl(T)1367 542 y(E)1437 515 y(X)d(\014les)291 706 y Fs(OMak)n(e)31 b(pro)n(vides)f(supp)r(ort)i(for)g(building)i(L)1711 689 y Fn(A)1748 706 y Fs(T)1794 724 y(E)1840 706 y(X)e(do)r(cumen)n (ts,)i(including)e(supp)r(ort)g(for)291 806 y(automatically)27 b(running)h(BiBT)-7 b(ex)27 b(and)h(for)g(pro)r(ducing)g(P)n(ostScript) f(and)h(PDF)g(\014les.)39 b(In)291 906 y(order)22 b(to)h(use)g(the)h (functions)g(de\014ned)g(in)g(this)g(section,)g(y)n(ou)e(need)i(to)f (mak)n(e)g(sure)g(the)h(line)291 1092 y Fo(open)42 b(build/LaTeX)291 1273 y Fs(is)27 b(presen)n(t)g(in)h(y)n(our)e Fo(OMakeroot)e Fs(\014le.)291 1426 y @beginspecial @setspecial @endspecial 105 x Fk(13.7.1)112 b(Con\014guration)39 b(v)-6 b(ariables)291 1694 y Fs(The)27 b(follo)n(wing)g(v)-5 b(ariables)26 b(can)h(b)r(e)h(mo)r(di\014ed)g(in)g(y)n(our)e(pro)5 b(ject.)291 1848 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 88 x Fq(LA)-8 b(TEX)84 b Fs(The)27 b(L)889 1919 y Fn(A)926 1936 y Fs(T)972 1954 y(E)1018 1936 y(X)h(command)f(\(default)i Fo(latex)p Fs(\).)291 2094 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(TETEX2)p 675 2178 29 4 v 34 w(ENABLED)83 b Fs(Flag)33 b(indicating)g(whether)g (to)h(use)f(adv)-5 b(anced)33 b(L)2815 2161 y Fn(A)2852 2178 y Fs(T)2898 2196 y(E)2944 2178 y(X)h(op-)291 2278 y(tions)h(presen)n(t)f(in)i(T)-7 b(eT)g(eX)35 b(v.2)g(\(default)h(v)-5 b(alue)35 b(is)g(determined)h(the)f(\014rst)g(time)h(omak)n(e)291 2377 y(reads)26 b Fo(LaTeX.src)e Fs(and)j(dep)r(ends)h(on)g(the)g(v)n (ersion)e(of)34 b(L)2074 2360 y Fn(A)2111 2377 y Fs(T)2157 2395 y(E)2203 2377 y(X)28 b(y)n(ou)e(ha)n(v)n(e)h(installed\).)291 2536 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(LA)-8 b(TEXFLA)m(GS)85 b Fs(The)33 b(L)1210 2603 y Fn(A)1247 2620 y Fs(T)1293 2637 y(E)1339 2620 y(X)h(\015ags)e(\(defaults)i(dep)r(end)h(on)e(the)h Fo(TETEX2_ENABLED)291 2719 y Fs(v)-5 b(ariable\))291 2878 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(BIBTEX)83 b Fs(The)28 b(BibT)-7 b(eX)27 b(command)h(\(default)g Fo(bibtex)p Fs(\).)291 3120 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(MAKEINDEX)82 b Fs(The)28 b(command)f(to)g(build)i(an)e(index)h(\(default)g Fo(makeindex)p Fs(\).)291 3362 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(D)m(VIPS)84 b Fs(The)28 b Fo(.dvi)e Fs(to)h(P)n(ostScript)f(con)n (v)n(erter)g(\(default)i Fo(dvips)p Fs(\).)291 3604 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(D)m(VIPSFLA)m(GS)85 b Fs(Flags)27 b(to)g(pass)g(to)g Fo(dvips)f Fs(\(default)i Fo(-t)43 b(letter)p Fs(\).)291 3846 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(D)m(VIPDFM)84 b Fs(The)27 b Fo(.dvi)f Fs(to)i Fo(.pdf)e Fs(con)n(v)n(erter)f(\(default)k Fo(dvipdfm)p Fs(\).)291 4088 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(D)m(VIPDFMFLA)m(GS)85 b Fs(Flags)27 b(to)g(pass)g(to)g Fo(dvipdfm)e Fs(\(default)j Fo(-p)43 b(letter)p Fs(\).)291 4331 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(PDFLA)-8 b(TEX)84 b Fs(The)28 b Fo(.latex)d Fs(to)i Fo(.pdf)f Fs(con)n(v)n(erter)g(\(default)i Fo(pdflatex)p Fs(\).)291 4573 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(PDFLA)-8 b(TEXFLA)m(GS)85 b Fs(Flags)21 b(to)g(pass)g(to)g(p)r(d\015atex)h (\(default)g(is)f Fo($`\(LATEXFLAGS\))p Fs(\).)291 4815 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(USEPDFLA)-8 b(TEX)84 b Fs(Flag)18 b(indicating)g(whether)h(to)f(use)g(p)r(d\015atex)h (instead)f(of)g(dvip)r(dfm)291 4998 y(to)27 b(generate)f(the)i Fo(.pdf)e Fs(do)r(cumen)n(t)i(\(default)h Fo(false)p Fs(\).)p eop end %%Page: 214 214 TeXDict begin 214 213 bop 739 282 a @beginspecial @setspecial @endspecial Fs(214)656 b Fp(CHAPTER)27 b(13.)64 b(BUILD)28 b(FUNCTIONS)g(AND)h(UTILITIES)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(13.7.2)112 b(Building)40 b(L)1619 493 y Fa(A)1663 515 y Fk(T)1722 537 y(E)1782 515 y(X)d(do)s(cumen)m(ts)739 591 y @beginspecial @setspecial @endspecial 78 x Fq(13.7.2.1)93 b(LaT)-8 b(eXDo)s(cumen)m(t)739 722 y @beginspecial @setspecial @endspecial 100 x Fs(The)28 b Fo(LaTeXDocument)22 b Fs(pro)r(duces)27 b(a)g(L)1944 805 y Fn(A)1981 822 y Fs(T)2027 840 y(E)2073 822 y(X)h(do)r(cumen)n(t.) 863 921 y Fo(LaTeXDocument\()o(,)37 b(\))863 1021 y Fs(The)i(do)r(cumen)n(t)g Fo()d Fs(and)i Fo()c Fs(are)k(listed)g(without)h(su\016xes.)69 b(This)739 1121 y(function)28 b(returns)f(the)h(\014lenames)f(for)g (the)h(generated)f Fo(.ps)f Fs(and)i Fo(.pdf)e Fs(\014les.)863 1220 y(Additional)i(v)-5 b(ariables)27 b(used:)739 1336 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 100 x Fq(TEXINPUTS)84 b Fs(The)43 b(L)1600 1419 y Fn(A)1637 1436 y Fs(T)1683 1454 y(E)1728 1436 y(X)g(searc)n(h)d(path)j(\(an)f(arra)n(y)d(of)j(directories,)j (default)d(is)739 1536 y(tak)n(en)27 b(from)g(the)h Fo(TEXINPUTS)c Fs(en)n(vironmen)n(t)j(v)-5 b(ariable\).)739 1673 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(TEXDEPS)83 b Fs(Additional)28 b(\014les)g(this)g(do)r(cumen)n (t)g(dep)r(ends)g(on.)739 1884 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(TEXV)-11 b(ARS)84 b Fs(An)44 b(arra)n(y)f(of)h(names)g(of)g(the)h (en)n(vironmen)n(t)e(v)-5 b(ariables)43 b(that)i(are)e(to)739 2067 y(b)r(e)37 b(up)r(dated)g(based)f(on)g(the)h(v)-5 b(alue)37 b(of)f(OMak)n(e's)g Fo(TEXINPUTS)c Fs(v)-5 b(ariable.)63 b(Defaults)37 b(to)739 2167 y Fo(TEXINPUTS)24 b(BIBINPUTS)g(BSTINPUTS)p Fs(.)739 2283 y @beginspecial @setspecial @endspecial 99 x Fq(13.7.2.2)93 b(T)-8 b(eX)m (GeneratedFiles,)31 b(Lo)s(calT)-8 b(eX)m(GeneratedFiles)739 2452 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fo(TeXGeneratedFile)o(s\()o(fil)o(es)o(\)) 739 2635 y(LocalTeXGenerate)o(dF)o(ile)o(s\()o(fil)o(es)o(\))863 2818 y Fs(The)38 b Fo(TeXGeneratedFil)o(es)31 b Fs(and)37 b Fo(LocalTeXGenerat)o(ed)o(Fil)o(es)31 b Fs(functions)37 b(sp)r(ecify)739 2918 y(\014les)h(that)g(need)g(to)f(b)r(e)i(generated) d(b)r(efore)i(an)n(y)g(L)2383 2900 y Fn(A)2420 2918 y Fs(T)2466 2935 y(E)2512 2918 y(X\014les)g(are)e(scanned)i(for)f(dep)r (en-)739 3017 y(dencies.)i(F)-7 b(or)27 b(example,)i(if)f Fo(config.tex)d Fs(and)j Fo(inputs.tex)c Fs(are)j(b)r(oth)i(generated)e (\014les,)739 3117 y(sp)r(ecify:)913 3283 y Fo(TeXGeneratedFiles)o(\(c) o(onf)o(ig)o(.t)o(ex)37 b(inputs.tex\))863 3449 y Fs(The)31 b Fo(TeXGeneratedFiles)25 b Fs(function)31 b(is)g Fi(glob)l(al)41 b Fs(|)31 b(its)g(argumen)n(ts)f(will)h(b)r(e)h(gener-)739 3548 y(ated)i(b)r(efore)h(an)n(y)e(T)-7 b(eX)35 b(\014les)g(an)n (ywhere)e(in)i(the)f(pro)5 b(ject)34 b(are)g(scanned)g(for)g(dep)r (enden-)739 3648 y(cies.)45 b(The)30 b Fo(LocalTeXGenerated)o(Fil)o(es) 24 b Fs(function)31 b(follo)n(ws)e(the)i(normal)e(scoping)h(rules)739 3748 y(of)d(OMak)n(e.)739 3864 y @beginspecial @setspecial @endspecial 100 x Fq(13.7.2.3)93 b(LaT)-8 b(eXDo)s(cumen)m(tCop)m(y)739 4033 y @beginspecial @setspecial @endspecial 84 x Fs(The)28 b Fo(LaTeXDocumentCo)o(py)21 b Fs(copies)27 b(the)h(do)r(cumen)n(t)g (to)f(an)h(install)f(lo)r(cation.)863 4216 y Fo(LaTeXDocumentCopy)o (\(,)37 b(,)j(,)e(\))863 4316 y Fs(This)28 b(function)g(copies)f(just)h(the)g Fo(.pdf)e Fs(and)i Fo(.ps)e Fs(\014les.)739 4451 y @beginspecial @setspecial @endspecial 81 x Fq(13.7.2.4)93 b(LaT)-8 b(eXDo)s(cumen)m(tInstall)739 4585 y @beginspecial @setspecial @endspecial 100 x Fs(The)25 b Fo(LaTeXDocumentIn)o(sta)o(ll)18 b Fs(builds)25 b(a)g(do)r(cumen)n(t)g(and)f(copies)g(it)h(to)g(an)g (install)f(lo)r(ca-)739 4785 y(tion)k(in)f(one)h(step.)863 4884 y Fo(LaTeXDocumentInst)o(all)o(\(<)o(ta)o(g>,)37 b(,)j(,)d(,)j(\))p eop end %%Page: 215 215 TeXDict begin 215 214 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(14)291 1554 y Fr(Auto)6 b(con\014guration)80 b(functions)291 1803 y(and)d(v)-13 b(ariables)291 2235 y Fs(OMak)n(e)25 b(standard)g(library)h(pro)n(vides)f(a)h(n)n(um)n(b)r (er)g(of)h(functions)g(and)f(v)-5 b(ariables)26 b(in)n(tended)291 2335 y(to)d(help)h(one)f(write)h(build)g(sp)r(eci\014cations)f(that)h (need)g(to)f(b)r(e)h(capable)f(of)h(auto)r(con\014guring)291 2434 y(itself)k(to)f(adjust)h(to)f(di\013eren)n(t)h(build)g(en)n (vironmen)n(ts.)291 2577 y @beginspecial @setspecial @endspecial 134 x Fl(14.1)135 b(General-purp)t(ose)30 b(auto)t(con\014guration)h(functions)291 2894 y Fs(The)d(follo)n(wing)f (general-purp)r(ose)f(functions)j(can)f(b)r(e)h(used)f(to)h(disco)n(v)n (er)d(the)j(prop)r(erties)291 2993 y(of)22 b(y)n(our)g(build)i(en)n (vironmen)n(t)e(in)h(a)f(fashion)h(similar)f(to)h(the)g(one)g(used)g(b) n(y)f(GNU)i(auto)r(conf)291 3093 y(to)r(ol)29 b(y)n(ou)f(ma)n(y)h(b)r (e)h(familiar)e(with.)43 b(It)29 b(is)h(recommended)e(that)i(these)f (function)h(b)r(e)g(used)291 3193 y(from)d(an)g(appropriate)f Fo(static.)f Fs(blo)r(c)n(k)i(\(see)g(Section)h @beginspecial @setspecial @endspecial(4.14)p @beginspecial @setspecial @endspecial 26 w(for)f(more)g(information\).)415 3293 y(In)c(order)e(to)i(use)f(the)i(follo)n(wing)d(general-purp)r(ose)g (functions,)j(y)n(ou)e(need)g(to)h(ha)n(v)n(e)f(the)291 3392 y(line)291 3560 y Fo(open)42 b(configure/Confi)o(gu)o(re)291 3727 y Fs(included)28 b(in)g(y)n(our)e Fo(OMakefile)e Fs(or)j Fo(OMakeroot)p Fs(.)291 3861 y @beginspecial @setspecial @endspecial 101 x Fk(14.1.1)112 b(ConfMsgChec)m(king,)39 b(ConfMsgResult)291 4035 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 81 x Fo(ConfMsgChecking)o(\(\))291 4216 y(...)291 4315 y(ConfMsgResult\(<)o(msg)o(>\))291 4500 y Fs(The)18 b Fo(ConfMsgChecking)12 b Fs(function)19 b(output)g(message)e(of)h(the) h(form)f Fo(---)43 b(Checking)d(...)59 b Fi(with-)291 4599 y(out)33 b Fs(an)n(y)26 b(trailing)f(newline.)37 b(After)26 b(the)h(test)f(adv)n(ertized)f(b)n(y)h Fo(ConfMsgChecking)20 b Fs(is)26 b(p)r(er-)291 4699 y(formed,)h(the)h Fo(ConfMsgResult)22 b Fs(function)28 b(should)g(b)r(e)g(used)f(to)h(output)g(the)g(result.) 415 4799 y(In)k(certain)g(cases)e(users)h(ma)n(y)h(w)n(an)n(t)f(to)h (rede\014ne)f(these)h(function)h(|)f(for)f(example,)291 4898 y(to)c(use)g(a)h(di\013eren)n(t)f(output)i(formatting)e(and/or)f (to)h(cop)n(y)g(the)h(messages)e(to)h(a)g(log)g(\014le.)415 4998 y(Example:)1660 5208 y(215)p eop end %%Page: 216 216 TeXDict begin 216 215 bop 739 282 a @beginspecial @setspecial @endspecial Fs(216)p Fp(CHAPTER)16 b(14.)52 b(A)n(UTOCONFIGURA)-7 b(TION)19 b(FUNCTIONS)g(AND)g(V)-9 b(ARIABLES)739 515 y Fo(static.)41 b(=)870 615 y(ConfMsgChecking)o(\(wh)o(ic)o(h)d(foo)k (to)h(use\))870 715 y(foo)f(=)h(...)870 814 y(ConfMsgResult\($)o(\(fo)o (o\))o(\))739 942 y @beginspecial @setspecial @endspecial 98 x Fk(14.1.2)112 b(ConfMsgW)-9 b(arn,)39 b(ConfMsgError)739 1113 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fo(ConfMsgWarn\(\))739 1293 y(ConfMsgError\()o(\))863 1437 y Fs(Prin)n(t)24 b(a)f(w)n(arning)g(or)g(an)h(error)e(message)g(resp)r(ectiv)n(ely)-7 b(.)35 b Fo(ConfMsgError)19 b Fs(w)n(ould)24 b(then)739 1536 y(ab)r(ort)j(OMak)n(e.)739 1646 y @beginspecial @setspecial @endspecial 116 x Fk(14.1.3)112 b(ConfMsgY)-9 b(esNo,)38 b(ConfMsgF)-9 b(ound)739 1835 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fo(flag)42 b(=)h($\(ConfMsgYesNo)38 b()739 2015 y(flag)h(=)h($\(ConfMsgFound)38 b()863 2159 y Fs(The)h Fo(ConfMsgFound)36 b Fs(function)42 b(exp)r(ects)g(to)f (receiv)n(e)f(a)h(b)r(o)r(olean)g(\015ag)f(describing)739 2259 y(whether)20 b(a)f(test)h(previously)f(announced)g(using)h(the)g @beginspecial @setspecial @endspecial Fo(ConfMsgChecking)13 b Fs(function)p @beginspecial @setspecial @endspecial 21 w(found)739 2358 y(what)43 b(it)h(w)n(as)f(lo)r(oking)f(for.)84 b Fo(ConfMsgFound)38 b Fs(will)44 b(output)g(the)g(appropriate)e (result)739 2458 y(\(\\found")34 b(or)f(\\NOT)h(found"\))h(using)f(the) h @beginspecial @setspecial @endspecial Fo(ConfMsgResult)29 b Fs(function)p @beginspecial @setspecial @endspecial 35 w(and)34 b(return)g(its)739 2558 y(argumen)n(t)26 b(bac)n(k.)863 2657 y(The)d Fo(ConfMsgYesNo)18 b Fs(function)23 b(is)f(similar,)h(outputting)g(a)f(simple)g(\(\\y)n(es")f(or)h (\\NO"\).)739 2788 y @beginspecial @setspecial @endspecial 95 x Fk(14.1.4)112 b(T)-9 b(ryCompileC,)38 b(T)-9 b(ryLinkC,)38 b(T)-9 b(ryRunC)739 2956 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 80 x Fo(success)41 b(=)i($\(TryCompileC)38 b(\))739 3136 y(success)j(=)i($\(TryLinkC)c(\)) 739 3236 y(success)i(=)i($\(TryRunC)d(\))863 3380 y Fs(Giv)n(en)32 b(the)f Fi(text)39 b Fs(of)31 b(a)g(C)g(program,) g(the)h Fo(TryCompileC)p Fs(,)27 b Fo(TryLinkC)p Fs(,)h(and)j Fo(TryRunC)739 3479 y Fs(functions)c(w)n(ould)f(try)g(to)h(compile)f(/) h(compile)f(and)h(link)g(/)f(compile,)h(link,)g(and)f(run,)h(the)739 3579 y(giv)n(en)33 b(program)e(and)i(return)h(a)f(b)r(o)r(olean)g (\015ag)f(indicating)i(whether)f(the)h(attempt)g(w)n(as)739 3678 y(successful.)863 3778 y Fo(TryCompileC)25 b Fs(will)30 b(use)g(the)g @beginspecial @setspecial @endspecial Fo(CC)p @beginspecial @setspecial @endspecial Fs(,)e @beginspecial @setspecial @endspecial Fo(CFLAGS)p @beginspecial @setspecial @endspecial 28 w Fs(and)h @beginspecial @setspecial @endspecial Fo(INCLUDES)p @beginspecial @setspecial @endspecial 26 w Fs(v)-5 b(ariables)28 b(to)i(run)f(the)h(C)739 3878 y(compiler.)36 b Fo(TryLinkC)25 b Fs(and)i Fo(TryRunC)e Fs(will)j(also)f(use)g(the)h @beginspecial @setspecial @endspecial Fo(LDFLAGS)d Fs(v)-5 b(ariable)p @beginspecial @setspecial @endspecial 27 w(to)27 b(run)h(the)739 3977 y(C)h(compiler)f(and)h(link)n(er.)40 b(Ho)n(w)n(ev)n(er,)27 b(the)j(\015ags)e(lik)n(e)g Fo(/WX)p Fs(,)g Fo(-Werror)e Fs(and)j Fo(-warn-error)739 4077 y Fs(will)f(b)r(e)g(not)f(b)r(e)h (passed)f(to)h(the)g(compiler,)f(ev)n(en)g(if)h(they)g(o)r(ccur)f(in)g Fo(CFLAGS)p Fs(.)863 4177 y(These)f(functions)h(are)e(silen)n(t)h(and)f (should)h(normally)f(b)r(e)i(used)f(with)g(an)g(appropriate)739 4276 y @beginspecial @setspecial @endspecial Fo(ConfMsgChecking)p @beginspecial @setspecial @endspecial 21 w Fh(:)14 b(:)g(:)28 b @beginspecial @setspecial @endspecial Fo(ConfMsgResult)p @beginspecial @setspecial @endspecial Fs(.)739 4404 y @beginspecial @setspecial @endspecial 98 x Fk(14.1.5)112 b(RunCProg)739 4575 y @beginspecial @setspecial @endspecial 80 x Fo(output)41 b(=)i($\(RunCProg)d(\))863 4799 y(RunCProg)35 b Fs(is)i(similar)g(to)h(the)f @beginspecial @setspecial @endspecial Fo(RunCProg)e Fs(function)p @beginspecial @setspecial @endspecial(,)41 b(except)c(that)h(it)g(returns)f(the)739 4899 y(output)h(of)g(the)h(function)f(\(will)h(return)f Fo(false)e Fs(if)i(the)h(program)d(fails)h(to)h(compile)g(or)739 4998 y(run\).)p eop end %%Page: 217 217 TeXDict begin 217 216 bop 291 282 a @beginspecial @setspecial @endspecial Fp(14.2.)63 b(TRANSLA)-7 b(TING)29 b Fg(AUTOCONF)24 b Fp(SCRIPTS)1124 b Fs(217)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(14.1.6)112 b(Chec)m(kCHeader,)38 b(V)-9 b(erb)s(oseChec)m(kCHeader)291 590 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 81 x Fo(success)40 b(=)j($\(CheckCHeader)38 b(\))291 771 y(success)i(=)j($\(VerboseCheckCHe)o(ade)o(r)37 b(\))415 960 y Fs(Use)26 b(the)g @beginspecial @setspecial @endspecial Fo(TryCompileC)c Fs(function)p @beginspecial @setspecial @endspecial 26 w(to)k(c)n(hec)n(k)f(whether)g(y)n(our)g(C)h(compiler)f (can)g(lo)r(cate)291 1060 y(and)h(pro)r(cess)f(the)i(sp)r(eci\014ed)g (headers)e(\014les.)37 b(Will)27 b(incude)g Fo()c Fs(b)r(efore)j(including)291 1159 y(the)i(header)e(\014les.)415 1260 y(Both)c(functions)h(return)f(a)g(b)r(o)r(olean)g(v)-5 b(alue.)35 b(The)22 b Fo(CheckCHeader)c Fs(function)23 b(is)f(silen)n(t;)291 1360 y(the)c Fo(VerboseCheckCHead)o(er)12 b Fs(function)19 b(will)f(use)h(the)f @beginspecial @setspecial @endspecial Fo(ConfMsgChecking)p @beginspecial @setspecial @endspecial 13 w Fs(and)g @beginspecial @setspecial @endspecial Fo(ConfMsgResult)p @beginspecial @setspecial @endspecial 291 1460 a Fs(functions)27 b(to)h(describ)r(e)f(the)h(test)g(and)g(the) g(outcome.)415 1561 y(Example:)291 1733 y Fo(static.)40 b(=)421 1833 y(NCURSES_H_AVAILAB)o(LE)d(=)43 b($\(VerboseCheckCHe)o(ad) o(er)37 b(ncurses.h\))291 1964 y @beginspecial @setspecial @endspecial 109 x Fk(14.1.7)112 b(Chec)m(kCLib,)38 b(V)-9 b(erb)s(oseChec)m(kCLib)291 2148 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 82 x Fo(success)40 b(=)j($\(CheckCLib)c(,)i(\))291 2329 y(success)f(=)j($\(VerboseCheckCLi)o(b)38 b(,)i (\))415 2518 y Fs(Use)24 b(the)h @beginspecial @setspecial @endspecial Fo(TryLinkC)c Fs(function)p @beginspecial @setspecial @endspecial 25 w(to)k(c)n(hec)n(k)e(whether)h(y)n(our)f(C)i (compiler)e(and)i(link)n(er)e(can)291 2618 y(\014nd)28 b(the)h(named)f(functions)h(when)f(linking)g(with)h(the)g(named)f (libraries.)37 b(Will)29 b(pass)f(the)291 2717 y Fo()d Fs(to)i(the)h(compiler)f(using)g(the)h Fo(-l)f Fs(\015ag.)415 2819 y(Both)21 b(functions)h(return)f(a)g(b)r(o)r(olean)g(v)-5 b(alue.)35 b(The)22 b Fo(CheckCLib)c Fs(function)k(is)f(silen)n(t;)j (the)291 2918 y Fo(VerboseCheckCHe)o(ade)o(r)12 b Fs(function)19 b(will)g(use)f(the)h @beginspecial @setspecial @endspecial Fo(ConfMsgChecking)o @beginspecial @setspecial @endspecial 13 w Fs(and)f @beginspecial @setspecial @endspecial Fo(ConfMsgResult)p @beginspecial @setspecial @endspecial 291 3018 a Fs(functions)27 b(to)h(describ)r(e)f(the)h(test)g(and)g(the)g(outcome.)415 3119 y(Example:)291 3291 y Fo(static.)40 b(=)465 3391 y(NCURSES_LIB_AVAI)o(LA)o(BLE)d(=)43 b($\(VerboseCheckCL)o(ib)37 b(ncurses,)j(initscr)h(setupterm)f(tigetstr\))291 3532 y @beginspecial @setspecial @endspecial 100 x Fk(14.1.8)112 b(Chec)m(kProg)291 3706 y @beginspecial @setspecial @endspecial 82 x Fo(success)40 b(=)j($\(CheckProg)c(\))415 3889 y Fs(Chec)n(ks)j(whether)g(the)h(program)d Fo()g Fs(exists)i(in)h(y)n(our)e(path.)81 b(Will)43 b(use)g(the)291 3989 y @beginspecial @setspecial @endspecial Fo(ConfMsgChecking)o @beginspecial @setspecial @endspecial 29 w Fs(and)35 b @beginspecial @setspecial @endspecial Fo(ConfMsgResult)p @beginspecial @setspecial @endspecial 29 w Fs(functions)g(to)g(describ) r(e)g(the)g(test)g(and)g(the)291 4088 y(outcome.)291 4220 y @beginspecial @setspecial @endspecial 151 x Fl(14.2)135 b(T)-11 b(ranslating)48 b Ff(autoconf)41 b Fl(scripts)291 4556 y Fs(Some)32 b(of)g(the)h(functions)g(describ)r(ed)f(ab)r(o)n(v)n (e)f(are)h(v)n(ery)f(similar)h(to)g(the)h(ones)f(presen)n(t)g(in)291 4655 y Fo(autoconf)p Fs(.)h(Belo)n(w)27 b(is)g(a)h(brief)f(translation) g(table)g(for)g(suc)n(h)g(functions.)332 4826 y Fo(AC)p 425 4826 27 4 v 31 w(MSG)p 588 4826 V 30 w(CHECKING)d Fs(is)k(v)n(ery)e(similar)h(to)g @beginspecial @setspecial @endspecial Fo(ConfMsgChecking)22 b Fs(function)p @beginspecial @setspecial @endspecial(.)332 4998 y Fo(AC)p 425 4998 V 31 w(MSG)p 588 4998 V 30 w(RESULT)j Fs(is)i(v)n(ery)g(similar)g(to)g @beginspecial @setspecial @endspecial Fo(ConfMsgResult)22 b Fs(function)p @beginspecial @setspecial @endspecial(.)p eop end %%Page: 218 218 TeXDict begin 218 217 bop 739 282 a @beginspecial @setspecial @endspecial Fs(218)p Fp(CHAPTER)16 b(14.)52 b(A)n(UTOCONFIGURA)-7 b(TION)19 b(FUNCTIONS)g(AND)g(V)-9 b(ARIABLES)780 515 y Fo(AC)p 873 515 27 4 v 31 w(MSG)p 1036 515 V 30 w(WARN)26 b Fs(is)i(v)n(ery)e(similar)h(to)g @beginspecial @setspecial @endspecial Fo(ConfMsgWarn)c Fs(function)p @beginspecial @setspecial @endspecial(.)780 682 y Fo(AC)p 873 682 V 31 w(MSG)p 1036 682 V 30 w(ERROR)j Fs(is)h(v)n(ery)g(similar)f(to)i @beginspecial @setspecial @endspecial Fo(ConfMsgError)23 b Fs(function)p @beginspecial @setspecial @endspecial(.)780 850 y Fo(AC)p 873 850 V 31 w(TRY)p 1036 850 V 30 w(COMPILE)41 b Fs(is)i(somewhat)g(similar)g(to)h @beginspecial @setspecial @endspecial Fo(TryCompileC)39 b Fs(function)p @beginspecial @setspecial @endspecial(,)48 b(except)c(the)946 949 y @beginspecial @setspecial @endspecial Fo(TryCompileC)22 b Fs(function)p @beginspecial @setspecial @endspecial 26 w(returns)j(a)g(b)r(o)r(olean)g(v)-5 b(alue)25 b(and)h(only)f(w)n (orks)f(for)h Fo(C)p Fs(.)g(Sim-)946 1049 y(ilarly)-7 b(,)780 1216 y Fo(AC)p 873 1216 V 31 w(TRY)p 1036 1216 V 30 w(LINK)26 b Fs(is)i(appro)n(ximated)e(b)n(y)h @beginspecial @setspecial @endspecial Fo(TryLinkC)d Fs(function)p @beginspecial @setspecial @endspecial(,)29 b(and)780 1383 y Fo(AC)p 873 1383 V 31 w(TRY)p 1036 1383 V 30 w(RUN)e Fs(is)g(appro)n(ximated)f (b)n(y)h @beginspecial @setspecial @endspecial Fo(TryRunC)e Fs(function)p @beginspecial @setspecial @endspecial(.)739 1528 y @beginspecial @setspecial @endspecial 131 x Fl(14.3)135 b(Prede\014ned)45 b(con\014guration)g(tests)739 1842 y Fs(A)24 b(n)n(um)n(b)r(er)g(of)g(con\014guration)e(tests)i(are)f (already)f(included)i(in)g(the)h(standard)e(library)-7 b(.)34 b(In)739 1941 y(order)21 b(to)i(use)g(them)g(in)h(y)n(our)d(pro) 5 b(ject,)24 b(simply)e Fo(open)g Fs(\(see)h(Section)g @beginspecial @setspecial @endspecial(4.7)p @beginspecial @setspecial @endspecial(\))f(the)h(corresp)r(ond-)739 2041 y(ing)28 b(build)i(\014le)f(in)g(y)n(our)e Fo(OMakefile)f Fs(and)i(the)h(tests)g(will)g(run)g(the)g(\014rst)g(time)g(OMak)n(e)e (is)739 2140 y(executed.)37 b(Note)27 b(that)h(it)g(is)f(not)g(a)g (problem)g(to)g Fo(open)f Fs(these)h(\014les)h(from)f(more)f(than)i (one)739 2240 y(place)f(in)h(y)n(our)e(pro)5 b(ject)27 b(|)h(if)g(y)n(ou)f(do)g(that,)h(the)g(test)g(will)g(still)g(run)f (only)g(once.)739 2374 y @beginspecial @setspecial @endspecial 100 x Fk(14.3.1)112 b(NCurses)38 b(library)g(con\014guration)739 2628 y Fs(Add)j Fo(open)h(configure/ncurs)o(es)34 b Fs(line)40 b(to)g(y)n(our)f Fo(OMakefile)e Fs(to)j(get)g(access)f(to)h(the)739 2727 y(follo)n(wing)26 b(auto)r(con\014guration)g(v)-5 b(ariables.)739 2861 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(NCURSES)p 1203 2945 29 4 v 34 w(A)-11 b(V)g(AILABLE)85 b Fs(A)27 b(b)r(o)r(olean)f(\015ag)g(that)h(w)n(ould)f(b)r(e)h(set)g(when)g(b)r (oth)g(the)739 3044 y Fo(curses.h)d Fs(header,)j(the)h Fo(term.h)d Fs(header,)i(and)g(the)h Fo(ncurses)d Fs(library)i(v)n(ery) f(found.)739 3178 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(NCURSES)p 1203 3262 V 34 w(TERMH)p 1604 3262 V 33 w(IN)p 1748 3262 V 35 w(NCURSES)82 b Fs(A)44 b(b)r(o)r(olean)e(\015ag)h(that)g(w)n(ould) g(b)r(e)g(set)739 3361 y(when)28 b Fo(term.h)d Fs(has)i(to)g(b)r(e)h (included)g(as)f Fo()21 b Fs(instead)28 b(of)f Fo()p Fs(.)739 3486 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 93 x Fq(NCURSES)p 1203 3579 V 34 w(CFLA)m(GS)84 b Fs(The)19 b Fo(CFLAGS)d Fs(to)j(use)g(when)g(compiling)f(ncurses)g(co)r(de.)34 b(Will)739 3678 y(include)19 b Fo(-DNCURSES)14 b Fs(and)19 b Fo(-DTERMH_IN_NCUR)o(SES)o Fs(,)13 b(resp)r(ectiv)n(ely)k(when)i Fo(NCURSES_AVAILAB)o(LE)739 3778 y Fs(and)27 b Fo(NCURSES_TERMH_IN_)o (NC)o(URS)o(ES)21 b Fs(are)27 b(true.)739 3903 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 92 x Fq(NCURSES)p 1203 3995 V 34 w(CLIBS)83 b Fs(The)38 b Fo(LDFLAGS)c Fs(to)j(use)g(when)h(linking)f(ncurses)f(co)r(de.)66 b(Will)739 4095 y(normally)18 b(con)n(tain)h Fo(-lncurses)d Fs(when)k(ncurses)f(is)h(found)g(and)f(remain)g(empt)n(y)h(otherwise.) 739 4228 y @beginspecial @setspecial @endspecial 101 x Fk(14.3.2)112 b(ReadLine)39 b(library)f(con\014guration)739 4482 y Fs(Add)e Fo(open)42 b(configure/readlin)o(e)30 b Fs(line)36 b(to)f(y)n(our)g Fo(OMakefile)d Fs(to)k(get)g(access)e(to) i(the)739 4582 y(follo)n(wing)26 b(auto)r(con\014guration)g(v)-5 b(ariables.)739 4715 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 84 x Fq(READLINE)p 1256 4799 V 34 w(A)-11 b(V)g(AILABLE)85 b Fs(A)38 b(b)r(o)r(olean)g (\015ag)f(that)h(w)n(ould)f(b)r(e)h(set)g(when)g(b)r(oth)739 4899 y(the)d Fo(readline/readlin)o(e.)o(h)29 b Fs(header,)35 b(the)g Fo(readline/history)o(.h)28 b Fs(header,)35 b(and)g(the)739 4998 y Fo(readline)24 b Fs(library)j(v)n(ery)f(found.)p eop end %%Page: 219 219 TeXDict begin 219 218 bop 291 282 a @beginspecial @setspecial @endspecial Fp(14.3.)63 b(PREDEFINED)27 b(CONFIGURA)-7 b(TION)28 b(TESTS)888 b Fs(219)291 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(READLINE)p 808 515 29 4 v 34 w(GNU)83 b Fs(A)24 b(b)r(o)r(olean)f(\015ag)g(that)h(w)n(ould)f(b)r(e)h(set)g(when)g(the)g (GNU)g(v)n(ersion)291 615 y(of)j(the)h(readline)f(library)f(is)i(found) g(\(as)f(opp)r(osed)g(to)g(the)h(BSD)g(one\).)291 752 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 79 x Fq(READLINE)p 808 831 V 34 w(CFLA)m(GS)84 b Fs(The)35 b Fo(CFLAGS)d Fs(to)j(use)g(when)g (compiling)g(readline)f(co)r(de.)291 930 y(Will)19 b(include)f Fo(-DREADLINE_ENABLE)o(D)12 b Fs(and)18 b Fo(-DREADLINE_GNU)p Fs(,)13 b(resp)r(ectiv)n(ely)18 b(when)g Fo(READLINE_AVAILABL)o(E)291 1030 y Fs(and)27 b Fo(READLINE_GNU)c Fs(are)j(true.)291 1154 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 92 x Fq(READLINE)p 808 1246 V 34 w(CLIBS)83 b Fs(The)30 b Fo(LDFLAGS)d Fs(to)i(use)h(when)g(linking)f (readline)g(co)r(de.)43 b(Will)291 1345 y(normally)34 b(con)n(tain)h Fo(-lncurses)40 b(-lreadline)32 b Fs(when)k(readline)f (is)h(found)g(and)g(remain)291 1445 y(empt)n(y)27 b(otherwise.)291 1577 y @beginspecial @setspecial @endspecial 100 x Fk(14.3.3)112 b(Snprin)m(tf)38 b(con\014guration)291 1831 y Fs(Add)e Fo(open)42 b(configure/snprin)o(tf)29 b Fs(line)36 b(to)g(y)n(our)f Fo(OMakefile)d Fs(to)k(get)f(access)g(to)h(the)291 1930 y(follo)n(wing)26 b(auto)r(con\014guration)g(v)-5 b(ariables.)291 2063 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(SNPRINTF)p 799 2146 V 34 w(A)-11 b(V)g(AILABLE)85 b Fs(A)19 b(b)r(o)r(olean)f(\015ag)f (telling)i(whether)f(the)h(snprin)n(tf)f(func-)291 2246 y(tion)27 b(is)h(a)n(v)-5 b(ailable)26 b(in)i(the)g(standard)e(C)i (library)-7 b(.)p eop end %%Page: 220 220 TeXDict begin 220 219 bop 739 282 a @beginspecial @setspecial @endspecial Fs(220)p Fp(CHAPTER)16 b(14.)52 b(A)n(UTOCONFIGURA)-7 b(TION)19 b(FUNCTIONS)g(AND)g(V)-9 b(ARIABLES)p eop end %%Page: 221 221 TeXDict begin 221 220 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(Chapter)64 b(15)291 1553 y Fr(The)77 b(OSH)g(shell)291 1985 y Fs(OMak)n(e)34 b(also)h(includes)h(a)f(standalone)g (command-line)g(in)n(terpreter)f Fo(osh)h Fs(that)h(can)g(b)r(e)291 2084 y(used)30 b(as)g(an)g(in)n(teractiv)n(e)g(shell.)46 b(The)31 b(shell)f(uses)g(the)h(same)f(syn)n(tax,)h(and)f(pro)n(vides)g (the)291 2184 y(same)d(features)g(on)g(all)g(platforms)g Fo(omake)f Fs(supp)r(orts,)h(including)h(Win32.)291 2322 y @beginspecial @setspecial @endspecial 133 x Fl(15.1)135 b(Startup)291 2637 y Fs(On)32 b(startup,)h Fo(osh)e Fs(reads)g(the)h (\014le)h Fo(~/.oshrc)c Fs(if)j(it)h(exists.)50 b(The)33 b(syn)n(tax)e(of)h(this)h(\014le)f(is)291 2737 y(the)c(same)f(as)g(an)g Fo(OMakefile)p Fs(.)33 b(The)28 b(follo)n(wing)e(additional)h(v)-5 b(ariables)27 b(are)f(signi\014can)n(t.)291 2866 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(prompt)82 b Fs(The)26 b Fo(prompt)c Fs(v)-5 b(ariable)24 b(sp)r(eci\014es)h(the)h(command-line)e(prompt.)36 b(It)25 b(can)g(b)r(e)g(a)291 3049 y(simple)i(string.)465 3213 y Fo(prompt)41 b(=)i(osh>)415 3377 y Fs(Or)27 b(y)n(ou)g(ma)n(y)g(c)n (ho)r(ose)f(to)h(de\014ne)h(it)g(as)f(a)g(function)i(of)e(no)g(argumen) n(ts.)465 3541 y Fo(prompt\(\))40 b(=)639 3640 y(return)h ($"<$\(USER\):$\(HOST)o(\))d($\(homename)h($\(CWD\)\)>")415 3804 y Fs(An)28 b(example)f(of)h(the)g(latter)f(prompt)h(is)f(as)g (follo)n(ws.)465 3968 y Fo(cd)42 b(links/omake)465 4067 y()415 4231 y Fs(If)31 b(y)n(ou)e(include)i(an)n(y)e("in) n(visible")g(text)i(in)g(the)f(prompt)g(\(suc)n(h)h(as)e(v)-5 b(arious)29 b(terminal)291 4331 y(escap)r(e)18 b(sequences\),)i(they)e (m)n(ust)h(b)r(e)g(wrapp)r(ed)f(using)g(the)h @beginspecial @setspecial @endspecial Fo(prompt-invisible)12 b Fs(function)p @beginspecial @setspecial @endspecial(.)291 4431 y(F)-7 b(or)24 b(example,)i(to)f(create)g(a)g(b)r(old)h(prompt)f(on)g (terminals)g(that)h(supp)r(ort)f(it,)h(y)n(ou)f(can)g(use)291 4530 y(the)j(follo)n(wing.)465 4681 y Fo(prompt)41 b(=)596 4781 y(bold-begin)e(=)k($\(prompt-invisibl)o(e)37 b($\(tgetstr)j (bold\)\))596 4880 y(bold-end)g(=)j($\(prompt-invisibl)o(e)37 b($\(tgetstr)j(sgr0\)\))596 4980 y(value)h($\(bold-begin\)$"os)o(h>)o ("$\()o(bo)o(ld)o(-en)o(d\))1660 5208 y Fs(221)p eop end %%Page: 222 222 TeXDict begin 222 221 bop 739 282 a @beginspecial @setspecial @endspecial Fs(222)1446 b Fp(CHAPTER)27 b(15.)63 b(THE)28 b(OSH)f(SHELL)739 432 y @beginspecial @setspecial @endspecial @beginspecial @setspecial @endspecial 83 x Fq(ignoreeof)82 b Fs(If)39 b(the)h Fo(ignoreeof)c Fs(is)j Fo(true)p Fs(,)i(then)e Fo(osh)f Fs(will)i(not)f(exit)h(on)f(a)g(terminal)739 615 y(end-of-\014le)27 b(\(usually)g Fo(^D)g Fs(on)h(Unix)g(systems\).) 739 761 y @beginspecial @setspecial @endspecial 128 x Fl(15.2)135 b(Aliases)739 1071 y Fs(Command)33 b(aliases)f(are)g (de\014ned)i(b)n(y)f(adding)f(functions)i(to)f(the)h Fo(Shell.)d Fs(ob)5 b(ject.)53 b(The)739 1171 y(follo)n(wing)26 b(alias)h(adds)g(the)h Fo(-AF)f Fs(option)g(to)g(the)h Fo(ls)f Fs(command.)913 1354 y Fo(Shell.)41 b(+=)1044 1453 y(ls\(argv\))f(=)1175 1553 y("ls")i(-AF)g($\(argv\))863 1735 y Fs(Quoted)d(commands)f(do)h(not)g(undergo)e(alias)h(expansion.) 70 b(The)39 b(quotation)f Fo("ls")739 1835 y Fs(prev)n(en)n(ts)26 b(the)i(alias)f(from)g(b)r(eing)h(recursiv)n(e.)739 1976 y @beginspecial @setspecial @endspecial 134 x Fl(15.3)135 b(In)l(teractiv)l(e)47 b(syn)l(tax)739 2292 y Fs(The)28 b(in)n(teractiv)n(e)f(syn)n(tax)g(in)h Fo(osh)f Fs(is)g(the)i(same)e (as)g(the)i(syn)n(tax)e(of)h(an)f Fo(OMakefile)p Fs(,)e(with)739 2391 y(one)h(exception)f(in)i(regard)d(to)i(inden)n(tation.)36 b(The)26 b(line)h(b)r(efore)e(an)h(inden)n(ted)h(blo)r(c)n(k)e(m)n(ust) 739 2491 y(ha)n(v)n(e)31 b(a)h(colon)g(at)g(the)h(end)g(of)g(the)g (line.)51 b(A)33 b(blo)r(c)n(k)f(is)h(terminated)f(with)h(a)f Fo(.)h Fs(on)f(a)g(line)739 2590 y(b)n(y)g(itself,)j(or)d Fo(^D)p Fs(.)g(In)h(the)g(follo)n(wing)e(example,)j(the)f(\014rst)f (line)h Fo(if)43 b(true)31 b Fs(has)h(no)h(b)r(o)r(dy)-7 b(,)739 2690 y(b)r(ecause)27 b(there)g(is)h(no)f(colon.)870 2873 y Fo(#)43 b(The)f(following)e(if)j(has)f(no)h(body)870 2972 y(osh>if)e(true)870 3072 y(#)i(The)f(following)e(if)j(has)f(a)h (body)870 3172 y(osh>if)e(true:)870 3271 y(if>)304 b(if)42 b(true:)870 3371 y(if>)434 b(println\(Hello)38 b(world\))870 3470 y(if>)434 b(.)870 3570 y(Hello)41 b(world)863 3753 y Fs(Note)25 b(that)h Fo(osh)d Fs(mak)n(es)h(some)g(e\013ort)h(to)g(mo) r(dify)g(the)g(prompt)g(while)g(in)g(an)g(inden)n(ted)739 3852 y(b)r(o)r(dy)-7 b(,)28 b(and)f(it)h(auto-inden)n(ts)f(the)h(text.) 863 3952 y(The)g(colon)f(signi\014er)g(is)g(also)g(allo)n(w)n(ed)f(in)i (\014les,)f(although)g(it)h(is)g(not)f(required.)p eop end %%Page: 223 223 TeXDict begin 223 222 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 708 x Fm(App)5 b(endix)64 b(A)291 1556 y Fr(Synopsis)291 2001 y Fo(omake)17 b Fs([)p Fo(-j)43 b()p Fs(])17 b([)p Fo(-k)p Fs(])j([)p Fo(-p)p Fs(])f([)p Fo(-P)p Fs(])g([)p Fo(-n)p Fs(])h([)p Fo(-s)p Fs(])f([)p Fo(-S)p Fs(])g([)p Fo(-w)p Fs(])g([)p Fo(-t)p Fs(])h([)p Fo(-u)p Fs(])f([)p Fo(-U)p Fs(])g([)p Fo(-R)p Fs(])g([)p Fo(--verbose)p Fs(])291 2101 y([)p Fo(--project)p Fs(])14 b([)p Fo(--depend)p Fs(])i([)p Fo(--progress)p Fs(])e([)p Fo(--print-status)p Fs(])f([)p Fo(--print-exit)p Fs(])h([)p Fo(--print-depende)o(nci)o(es)o Fs(])291 2200 y([)p Fo(--show-dependen)o(cie)o(s)37 b()p Fs(])16 b([)p Fo(--all-dependenc)o(ies)o Fs(])d([)p Fo (--verbose-depend)o(en)o(ci)o(es)p Fs(])291 2300 y([)p Fo(--force-dotomak)o(e)p Fs(])30 b([)p Fo(--dotomake)40 b()p Fs(])34 b([)p Fo(--flush-includes)o Fs(])c([)p Fo(--configure)p Fs(])291 2399 y([)p Fo(--save-interval)37 b()p Fs(])15 b([)p Fo(--install)p Fs(])g([)p Fo(--install-all)p Fs(])e([)p Fo(--install-force)p Fs(])291 2499 y([)p Fo(--version)p Fs(])h([)p Fo(--absname)p Fs(])h([)p Fo(--output-normal)p Fs(])e([)p Fo(--output-postpo)o(ne)p Fs(])f([)p Fo(--output-only-err)o(or)o(s)p Fs(])291 2599 y([)p Fo(--output-at-end)o Fs(])22 b Fo(filename...)33 b Fs([)p Fo(var-definition.)o(..)p Fs(])291 2752 y @beginspecial @setspecial @endspecial 130 x Fl(A.1)134 b(General)46 b(usage)291 3067 y Fs(F)-7 b(or)36 b(Bo)r(olean)f(options)h(\(for)g (example,)j Fo(-s)p Fs(,)f Fo(--progress)p Fs(,)d(etc.\))64 b(the)37 b(option)g(can)f(in-)291 3167 y(clude)h(a)f(pre\014x)h Fo(--no)p Fs(,)g(whic)n(h)g(in)n(v)n(erts)f(the)i(usual)e(sense)h(of)f (the)i(option.)64 b(F)-7 b(or)37 b(exam-)291 3267 y(ple,)43 b(the)e(option)f Fo(--progress)c Fs(means)k(\\prin)n(t)f(a)h(progress)e (bar,")k(while)f(the)f(option)291 3366 y Fo(--no--progress)21 b Fs(means)28 b(\\do)e(not)i(prin)n(t)f(a)h(progress)d(bar.")415 3467 y(If)31 b(m)n(ultiple)g(instances)f(of)g(an)h(option)f(are)f(sp)r (eci\014ed,)j(the)f(\014nal)f(option)g(determines)291 3567 y(the)22 b(b)r(eha)n(vior)f(of)h(OMak)n(e.)34 b(In)23 b(the)f(follo)n(wing)f(command)h(line,)i(the)f(\014nal)f Fo(--no-S)e Fs(cancels)291 3667 y(the)28 b(earlier)e Fo(-S)p Fs(.)465 3858 y Fo(\045)43 b(omake)f(-S)g(--progress)e(--no-S) 291 4009 y @beginspecial @setspecial @endspecial 132 x Fl(A.2)134 b(Output)45 b(con)l(trol)291 4248 y @beginspecial @setspecial @endspecial 95 x Fk(A.2.1)112 b Fe(-s)291 4499 y Fo(-s)415 4601 y Fs(Nev)n(er)27 b(not)g(prin)n(t)h(commands)f (as)g(they)h(are)e(executed)i(\(b)r(e)g(\\silen)n(t"\).)291 4745 y @beginspecial @setspecial @endspecial 97 x Fk(A.2.2)112 b Fe(-S)291 4998 y Fo(-S)1660 5208 y Fs(223)p eop end %%Page: 224 224 TeXDict begin 224 223 bop 739 282 a @beginspecial @setspecial @endspecial Fs(224)1706 b Fp(APPENDIX)28 b(A.)55 b(SYNOPSIS)863 515 y Fs(Do)35 b(not)f(prin)n(t)g(commands)f(as)h(they)g(are)f (executed)h Fi(unless)41 b Fs(they)34 b(pro)r(duce)g(output)739 615 y(and/or)26 b(fail.)37 b(This)27 b(is)h(the)g(default.)739 750 y @beginspecial @setspecial @endspecial 96 x Fk(A.2.3)112 b Fe(-w)739 999 y Fo(-w)863 1099 y Fs(Prin)n(t)23 b(directory)g (information)f(in)i Fo(make)e Fs(format)h(as)g(commands)g(are)g (executed.)35 b(This)739 1198 y(is)40 b(mainly)g(useful)h(for)f (editors)f(that)i(exp)r(ect)f Fo(make)p Fs(-st)n(yle)e(directory)h (information)h(for)739 1298 y(determining)27 b(the)h(lo)r(cation)f(of)h (errors.)739 1429 y @beginspecial @setspecial @endspecial 100 x Fk(A.2.4)112 b Fe(--progress)739 1682 y Fo(--progress)863 1782 y Fs(Prin)n(t)42 b(a)f(progress)e(indicator.)79 b(This)42 b(option)g(is)f(enabled)h(b)n(y)g(default)g(when)g(the)739 1882 y(OMak)n(e's)29 b(output)i(\()p Fo(stdout)p Fs(\))d(is)j(on)f(a)g (terminal)g(and)h(disabled)f(b)n(y)g(default)h(\(except)g(on)739 1981 y(Windo)n(ws\))c(when)h(the)g(OMak)n(e's)e(output)i(is)g (redirected.)739 2117 y @beginspecial @setspecial @endspecial 95 x Fk(A.2.5)112 b Fe(--print-status)739 2366 y Fo(--print-status)863 2465 y Fs(Prin)n(t)27 b(status)h(lines)f(\(the)h Fo(+)g Fs(and)f Fo(-)g Fs(lines\).)739 2601 y @beginspecial @setspecial @endspecial 95 x Fk(A.2.6)112 b Fe(--print-exit)739 2849 y Fo(--print-exit)863 2949 y Fs(Prin)n(t)27 b(termination)h(co)r (des)f(when)g(commands)g(complete.)739 3080 y @beginspecial @setspecial @endspecial 100 x Fk(A.2.7)112 b Fe(--verbose)739 3333 y Fo(--verbose)863 3433 y Fs(Mak)n(e)18 b(OMak)n(e)f(v)n(ery)g(v)n (erb)r(ose.)33 b(This)18 b(option)g(is)g(equiv)-5 b(alen)n(t)18 b(to)h Fo(--no-S)41 b(--print-status)c(--print-exit)i(VERBOSE=true)739 3566 y @beginspecial @setspecial @endspecial 98 x Fk(A.2.8)112 b Fe(--output-normal)739 3817 y Fo(--output-normal)863 3917 y Fs(As)44 b(rule)f(commands)g(are)g(executed,)48 b(rela)n(y)42 b(their)i(output)g(to)f(the)h(OMak)n(e)f(out-)739 4016 y(put)h(righ)n(t)f(a)n(w)n(a)n(y)-7 b(.)83 b(This)43 b(is)h(enabled)f(b)n(y)g(default,)48 b(unless)c Fo(--output-postpo)o (ne)37 b Fs(or)739 4116 y Fo(--output-only-er)o(ro)o(rs)21 b Fs(is)28 b(enabled.)739 4249 y @beginspecial @setspecial @endspecial 98 x Fk(A.2.9)112 b Fe(--output-postpone)739 4500 y Fo(--output-postpon)o(e)863 4600 y Fs(When)41 b(a)f(rule)f(\014nishes,)44 b(prin)n(t)39 b(the)i(output)g(as)e(a)h (single)f(blo)r(c)n(k.)74 b(This)40 b(is)g(useful)739 4700 y(in)d(com)n(bination)f Fo(-j)f Fs(option)i(\(see)f(Section)h @beginspecial @setspecial @endspecial(A.3.12)p @beginspecial @setspecial @endspecial(\),)h(where)e(the)h(output)g(of)g(m)n(ultiple) 739 4799 y(subpro)r(cesses)25 b(can)h(b)r(e)g(garbled.)36 b(The)26 b(div)n(ersion)f(is)h(prin)n(ted)h(as)e(a)h(single)g(coheren)n (t)f(unit.)863 4899 y(Note)19 b(that)f(enabling)g Fo(--output-postpone) 12 b Fs(will)18 b(b)n(y)g(default)h(disable)f(the)h Fo(--output-normal) 739 4998 y Fs(option.)34 b(This)19 b(migh)n(t)h(b)r(e)g(problematic)e (if)i(y)n(ou)f(ha)n(v)n(e)f(a)h(command)h(that)f(decides)h(to)f(ask)g (for)p eop end %%Page: 225 225 TeXDict begin 225 224 bop 291 282 a @beginspecial @setspecial @endspecial Fp(A.2.)64 b(OUTPUT)27 b(CONTR)n(OL)1709 b Fs(225)291 515 y(in)n(teractiv)n(e)17 b(input.)34 b(If)19 b(the)g Fo(--output-postpon)o(e)12 b Fs(is)19 b(enabled,)h(but)f(the)f Fo(--output-normal)291 615 y Fs(is)31 b(not,)i(the)f(prompt)f(of)h(suc) n(h)f(a)g(command)g(will)h(not)g(b)r(e)g(visible)f(and)h(it)g(ma)n(y)f (b)r(e)h(hard)291 715 y(to)26 b(\014gure)f(out)h(wh)n(y)g(the)h(build)g (app)r(ears)e(\\stuc)n(k".)35 b(Y)-7 b(ou)26 b(migh)n(t)g(also)f (consider)h(using)g(the)291 814 y Fo(--progress)17 b Fs(\015ag)k(\(see)h(Section)g @beginspecial @setspecial @endspecial(A.2.4)p @beginspecial @setspecial @endspecial(\))g(so)f (that)h(y)n(ou)f(can)h(see)f(when)h(the)g(build)h(is)f(activ)n(e.)291 947 y @beginspecial @setspecial @endspecial 95 x Fk(A.2.10)112 b Fe(--output-only-errors)291 1195 y Fo(--output-only-e)o(rro)o(rs)415 1295 y Fs(Similar)20 b(to)f Fo(--output-postpone)o Fs(,)d(except)j (that)i(the)f(p)r(ostp)r(oned)g(output)g(from)g(com-)291 1394 y(mands)33 b(that)g(w)n(ere)g(successful)g(will)h(b)r(e)f (discarded.)54 b(This)33 b(can)g(b)r(e)h(useful)g(in)g(reducing)291 1494 y(un)n(w)n(an)n(ted)26 b(output)j(so)e(that)g(y)n(ou)g(can)g (concen)n(trate)g(on)g(an)n(y)g(errors.)291 1622 y @beginspecial @setspecial @endspecial 100 x Fk(A.2.11)112 b Fe(--output-at-end)291 1875 y Fo(--output-at-end)415 1975 y Fs(If)22 b(an)n(y)f (rules/commands)e(fail,)k(re-prin)n(t)d(the)i(output)g(of)g(the)f (failed)h(commands)f(when)291 2074 y(OMak)n(e)29 b(\014nishes)i(the)g (build.)46 b(This)31 b(is)g(esp)r(ecially)f(useful)h(when)g(an)n(y)f (of)g(the)h Fo(-k)p Fs(,)g Fo(-p)p Fs(,)g(or)291 2174 y Fo(-P)26 b Fs(options)h(are)g(enabled.)415 2274 y(This)20 b(option)g(is)g(o\013)g(b)n(y)g(default.)35 b(Ho)n(w)n(ev)n(er,)19 b(when)h Fo(-k)g Fs(is)g(enabled)g(|)g(either)g(explicitly)291 2373 y(or)i(via)h(one)g(of)h(the)f Fo(-p)p Fs(/)p Fo(-P)f Fs(options)h(|)g Fo(--output-at-end)17 b Fs(will)24 b(b)r(e)g(enabled)f (b)n(y)g(default.)291 2506 y @beginspecial @setspecial @endspecial 95 x Fk(A.2.12)112 b Fe(-o)291 2754 y Fo(-o)42 b([01jwWpPxXsS])415 2854 y Fs(F)-7 b(or)35 b(brevit)n(y)-7 b(,)37 b(the)f Fo(-o)f Fs(option)h(is)f(also)g(pro)n(vided)g(to)g (duplicate)h(the)g(ab)r(o)n(v)n(e)e(output)291 2954 y(options.)h(The)25 b Fo(-o)f Fs(option)g(tak)n(es)g(a)g(argumen)n(t)g(consisting)f(of)i(a) f(sequence)h(of)f(c)n(haracters.)291 3053 y(The)f(c)n(haracters)e(are)h (read)g(from)h(left-to-righ)n(t;)g(eac)n(h)g(sp)r(eci\014es)g(a)g(set)g (of)g(output)g(options.)291 3153 y(In)32 b(general,)g(an)g(upp)r (ercase)f(c)n(haracter)f(turns)i(the)h(option)f Fi(on)6 b Fs(;)35 b(a)c(lo)n(w)n(ercase)f(c)n(haracter)291 3253 y(turns)d(the)h(option)f Fi(o\013)p Fs(.)291 3409 y Fq(0)41 b Fs(Equiv)-5 b(alen)n(t)27 b(to)g Fo(-s)43 b(--output-only-er)o(ror)o (s)37 b(--no-progress)498 3536 y Fs(This)f(option)f(sp)r(eci\014es)h (that)g Fo(omake)e Fs(should)i(b)r(e)g(as)f(quiet)h(as)f(p)r(ossible.) 61 b(If)37 b(an)n(y)498 3636 y(errors)24 b(o)r(ccur)i(during)g(the)h (build,)g(the)g(output)g(is)f(dela)n(y)n(ed)g(un)n(til)g(the)h(build)g (termi-)498 3735 y(nates.)37 b(Output)28 b(from)f(successful)g (commands)g(is)h(discarded.)291 3891 y Fq(1)41 b Fs(Equiv)-5 b(alen)n(t)27 b(to)g Fo(-S)43 b(--progress)c(--output-only-err)o(ors) 498 4018 y Fs(This)23 b(is)f(a)g(sligh)n(tly)g(more)g(relaxed)f(v)n (ersion)g(of)h(\\quiet")g(output.)36 b(The)22 b(output)h(from)498 4118 y(successful)32 b(commands)g(is)g(discarded.)51 b(The)33 b(output)g(from)f(failed)g(commands)g(is)498 4217 y(prin)n(ted)23 b(immediately)g(after)f(the)h(command)g(complete.) 35 b(The)23 b(output)g(from)g(failed)498 4317 y(commands)k(is)g(displa) n(y)n(ed)g(t)n(wice:)36 b(once)27 b(immediately)h(after)f(the)h (command)f(com-)498 4417 y(pletes,)32 b(and)f(again)f(when)i(the)f (build)h(completes.)47 b(A)32 b(progress)d(bar)h(is)h(displa)n(y)n(ed) 498 4516 y(so)g(that)g(y)n(ou)f(kno)n(w)h(when)g(the)h(build)f(is)g (activ)n(e.)47 b(Include)32 b(the)f(`)p Fo(p)p Fs(')g(option)g(if)h(y)n (ou)498 4616 y(w)n(an)n(t)27 b(to)h(turn)f(o\013)h(the)g(progress)d (bar)i(\(for)g(example)g Fo(omake)42 b(-o)h(1p)p Fs(\).)291 4771 y Fq(2)e Fs(Equiv)-5 b(alen)n(t)27 b(to)g Fo(--progress)40 b(--output-postpo)o(ne)498 4899 y Fs(The)35 b(is)f(ev)n(en)g(more)g (relaxed,)h(output)g(from)f(successful)g(commands)g(is)g(prin)n(ted.) 498 4998 y(This)28 b(is)f(often)h(useful)g(for)f(dein)n(terlea)n(ving)f (the)i(output)g(when)g(using)f Fo(-j)p Fs(.)p eop end %%Page: 226 226 TeXDict begin 226 225 bop 739 282 a @beginspecial @setspecial @endspecial Fs(226)1706 b Fp(APPENDIX)28 b(A.)55 b(SYNOPSIS)739 515 y Fq(W)41 b Fs(Equiv)-5 b(alen)n(t)27 b(to)h Fo(-w)739 722 y Fq(w)41 b Fs(Equiv)-5 b(alen)n(t)27 b(to)h Fo(--no-w)739 929 y Fq(P)42 b Fs(Equiv)-5 b(alen)n(t)27 b(to)g Fo(--progress)739 1136 y Fq(p)41 b Fs(Equiv)-5 b(alen)n(t)27 b(to)h Fo(--no--progress)739 1344 y Fq(X)42 b Fs(Equiv)-5 b(alen)n(t)27 b(to)g Fo(--print-exit)739 1551 y Fq(x)42 b Fs(Equiv)-5 b(alen)n(t)27 b(to)g Fo(--no-print-exit) 739 1758 y Fq(S)41 b Fs(Equiv)-5 b(alen)n(t)27 b(to)h Fo(-S)739 1965 y Fq(s)41 b Fs(Equiv)-5 b(alen)n(t)27 b(to)g Fo(--no-S)739 2150 y @beginspecial @setspecial @endspecial 144 x Fl(A.3)135 b(Build)44 b(options)739 2408 y @beginspecial @setspecial @endspecial 103 x Fk(A.3.1)112 b Fe(-k)739 2683 y Fo(-k)863 2793 y Fs(Do)27 b(not)f(ab)r(ort)g(when)h (a)f(build)h(command)f(fails;)g(con)n(tin)n(ue)g(to)h(build)g(as)e(m)n (uc)n(h)h(of)h(the)739 2893 y(pro)5 b(ject)27 b(as)f(p)r(ossible.)37 b(This)27 b(option)g(is)h(implied)g(b)n(y)f(b)r(oth)h Fo(-p)e Fs(and)i Fo(-P)e Fs(options.)36 b(In)28 b(turn,)739 2993 y(this)g(option)f(w)n(ould)g(imply)h(the)g Fo(--output-at-end)22 b Fs(option.)739 3171 y @beginspecial @setspecial @endspecial 108 x Fk(A.3.2)112 b Fe(-n)739 3452 y Fo(-n)863 3562 y Fs(This)28 b(can)f(b)r(e)h(used)g(to)f(see)g(what)h(w)n(ould)f(happ)r (en)h(if)g(the)g(pro)5 b(ject)27 b(w)n(ere)g(to)g(b)r(e)h(built.)739 3738 y @beginspecial @setspecial @endspecial 110 x Fk(A.3.3)112 b Fe(-p)739 4021 y Fo(-p)863 4131 y Fs(W)-7 b(atc)n(h)32 b(the)f(\014lesystem)g(for)g(c)n(hanges,)g(and)g(con)n(tin)n(ue)g(the)h (build)f(un)n(til)h(it)g(succeeds.)739 4230 y(If)c(this)f(option)g(is)h (sp)r(eci\014ed,)f Fo(omake)f Fs(will)h(restart)g(the)g(build)h(whenev) n(er)f(source)f(\014les)h(are)739 4330 y(mo)r(di\014ed.)37 b(Implies)28 b Fo(-k)p Fs(.)739 4506 y @beginspecial @setspecial @endspecial 111 x Fk(A.3.4)112 b Fe(-P)739 4789 y Fo(-P)863 4899 y Fs(W)-7 b(atc)n(h)32 b(the)g(\014lesystem)f (for)g(c)n(hanges)f(forev)n(er.)47 b(If)31 b(this)h(option)f(is)h(sp)r (eci\014ed,)g Fo(omake)739 4998 y Fs(will)c(restart)e(the)i(build)g (whenev)n(er)f(source)f(\014les)i(are)e(mo)r(di\014ed.)38 b(Implies)27 b Fo(-k)p Fs(.)p eop end %%Page: 227 227 TeXDict begin 227 226 bop 291 282 a @beginspecial @setspecial @endspecial Fp(A.3.)64 b(BUILD)28 b(OPTIONS)1846 b Fs(227)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(A.3.5)112 b Fe(-R)291 690 y Fo(-R)415 801 y Fs(Ignore)32 b(the)i(curren)n(t)f (directory)f(and)i(build)g(the)g(pro)5 b(ject)33 b(from)g(its)h(ro)r (ot)f(directory)-7 b(.)291 900 y(When)34 b Fo(omake)e Fs(is)i(run)f(in)i(a)e(sub)r(directory)g(of)h(a)f(pro)5 b(ject)34 b(and)f(no)h(explicit)g(targets)f(are)291 1000 y(giv)n(en)21 b(on)h(the)h(command)f(line,)i(it)f(w)n(ould)f(normally)f (only)h(build)h(\014les)g(within)g(the)g(curren)n(t)291 1100 y(directory)k(and)h(its)h(sub)r(directories)f(\(more)g(precisely) -7 b(,)28 b(it)h(builds)g(all)f(the)h Fo(.DEFAULT)d Fs(tar-)291 1199 y(gets)21 b(in)h(the)g(curren)n(t)f(directory)f(and)i(its)f(sub)r (directories\).)35 b(If)22 b(the)g Fo(-R)f Fs(option)g(is)h(sp)r (eci\014ed,)291 1299 y(the)28 b(build)g(is)f(p)r(erformed)g(as)g(if)35 b Fo(omake)25 b Fs(w)n(ere)i(run)h(in)f(the)h(pro)5 b(ject)27 b(ro)r(ot.)415 1410 y(In)j(other)g(w)n(ords,)f(with)i(the)f Fo(-R)f Fs(option,)i(all)e(the)i(relativ)n(e)e(targets)g(sp)r (eci\014ed)h(on)g(the)291 1510 y(command)39 b(line)i(will)f(b)r(e)h (tak)n(en)e(relativ)n(e)g(to)h(the)h(pro)5 b(ject)39 b(ro)r(ot)h(\(instead)g(of)g(relativ)n(e)291 1609 y(to)d(the)g(curren)n (t)g(directory\).)64 b(When)38 b(no)f(targets)f(are)g(giv)n(en)g(on)h (the)h(command)f(line,)291 1709 y(all)30 b(the)i Fo(.DEFAULT)c Fs(targets)i(in)h(the)g(pro)5 b(ject)31 b(will)g(b)r(e)h(built)f (\(regardless)e(of)i(the)h(curren)n(t)291 1808 y(directory\).)291 1994 y @beginspecial @setspecial @endspecial 107 x Fk(A.3.6)112 b Fe(-t)291 2276 y Fo(-t)415 2387 y Fs(Up)r(date)24 b(the)h Fo(omake)c Fs(database)i(to)h(force)f(the)h(pro)5 b(ject)23 b(to)h(b)r(e)g(considered)f(up-to-date.)291 2568 y @beginspecial @setspecial @endspecial 111 x Fk(A.3.7)112 b Fe(-U)291 2854 y Fo(-U)415 2965 y Fs(Do)28 b(not)h(trust)f(cac)n(hed)g(build)h (information.)38 b(This)29 b(will)f(force)g(the)g(en)n(tire)g(pro)5 b(ject)28 b(to)291 3065 y(b)r(e)g(rebuilt.)291 3230 y @beginspecial @setspecial @endspecial 127 x Fk(A.3.8)112 b Fe(--depend)291 3532 y Fo(--depend)415 3643 y Fs(Do)39 b(not)h(trust)f(cac)n(hed)f(dep)r(endency)i(information.)71 b(This)39 b(will)h(force)e(\014les)h(to)h(b)r(e)291 3742 y(rescanned)26 b(for)h(dep)r(endency)h(information.)291 3924 y @beginspecial @setspecial @endspecial 111 x Fk(A.3.9)112 b Fe(--configure)291 4210 y Fo(--configure)415 4321 y Fs(Re-run)26 b Fo(static.)e Fs(sections)i(of)h(the)g(included)g(omak)n (e)f(\014les,)h(instead)f(of)h(trusting)g(the)291 4420 y(cac)n(hed)f(results.)291 4585 y @beginspecial @setspecial @endspecial 128 x Fk(A.3.10)112 b Fe(--force-dotomake)291 4887 y Fo(--force-dotomak)o(e)415 4998 y Fs(Alw)n(a)n(ys)27 b(use)g(the)h Fo($HOME/.omake)23 b Fs(for)k(the)h Fo(.omc)e Fs(cac)n(he)g(\014les.)p eop end %%Page: 228 228 TeXDict begin 228 227 bop 739 282 a @beginspecial @setspecial @endspecial Fs(228)1706 b Fp(APPENDIX)28 b(A.)55 b(SYNOPSIS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(A.3.11)112 b Fe(--dotomake)739 681 y Fo(--dotomake)39 b()863 788 y Fs(Use)32 b(the)g(sp)r(eci\014ed)f(directory)f(instead)h(of)h (the)f Fo($HOME/.omake)c Fs(for)k(the)g(placemen)n(t)739 888 y(of)c(the)h Fo(.omc)e Fs(cac)n(he)h(\014les.)739 1034 y @beginspecial @setspecial @endspecial 123 x Fk(A.3.12)112 b Fe(-j)739 1323 y Fo(-j)43 b()863 1429 y Fs(Run)31 b(m)n(ultiple)g(build)g(commands)f(in)g(parallel.)44 b(The)30 b Fo(count)f Fs(sp)r(eci\014es)h(a)g(b)r(ound)h(on)739 1529 y(the)k(n)n(um)n(b)r(er)f(of)h(commands)f(to)g(run)h(sim)n (ultaneously)-7 b(.)57 b(In)34 b(addition,)j(the)e(coun)n(t)f(ma)n(y) 739 1629 y(sp)r(ecify)f(serv)n(ers)e(for)h(remote)g(execution)h(of)g (commands)f(in)h(the)h(form)e Fo(server=count)p Fs(.)739 1728 y(F)-7 b(or)40 b(example,)j(the)e(option)f Fo(-j)j (2:small.host.or)o(g=1)o(:l)o(arg)o(e.)o(ho)o(st.)o(or)o(g=4)34 b Fs(w)n(ould)739 1828 y(sp)r(ecify)19 b(that)g(up)g(to)g(2)f(jobs)h (can)g(b)r(e)g(executed)g(lo)r(cally)-7 b(,)20 b(1)e(on)h(the)g(serv)n (er)e Fo(small.host.org)739 1928 y Fs(and)33 b(4)f(on)h Fo(large.host.org)p Fs(.)47 b(Eac)n(h)32 b(remote)h(serv)n(er)e(m)n (ust)i(use)g(the)g(same)f(\014lesystem)739 2027 y(lo)r(cation)27 b(for)g(the)h(pro)5 b(ject.)863 2134 y(Remote)29 b(execution)f(is)g (curren)n(tly)g(an)g(exp)r(erimen)n(tal)g(feature.)39 b(Remote)29 b(\014lesystems)739 2233 y(lik)n(e)e(NFS)h(do)g(not)f(pro)n (vide)g(adequate)g(\014le)g(consistency)g(for)g(this)h(to)g(w)n(ork.) 739 2396 y @beginspecial @setspecial @endspecial 107 x Fk(A.3.13)112 b Fe(--print-dependencies)739 2669 y Fo(--print-dependen)o(ci)o(es)863 2775 y Fs(Prin)n(t)27 b(dep)r(endency)h(information)f(for)g(the)h(targets)f(on)g(the)h (command)f(line.)739 2937 y @beginspecial @setspecial @endspecial 107 x Fk(A.3.14)112 b Fe(--show-dependencies)739 3211 y Fo(--show-dependenc)o(ie)o(s)38 b()863 3317 y Fs(Prin)n(t)27 b(dep)r(endency)h(information)f Fi(if)46 b Fs(the)28 b Fo(target)e Fs(is)h(built.)739 3481 y @beginspecial @setspecial @endspecial 105 x Fk(A.3.15)112 b Fe(--all-dependencies)739 3752 y Fo(--all-dependenci)o(es)863 3859 y Fs(If)38 b(either)e(of)h(the)g(options)f Fo(--print-dependen)o (ci)o(es)30 b Fs(or)36 b Fo(--show-dependenc)o(ies)739 3959 y Fs(is)f(in)g(e\013ect,)j(prin)n(t)d(transitiv)n(e)f(dep)r (endencies.)59 b(That)35 b(is,)i(prin)n(t)e(all)g(dep)r(endencies)g (re-)739 4058 y(cursiv)n(ely)-7 b(.)49 b(If)33 b(neither)f(option)g Fo(--print-dependen)o(ci)o(es)p Fs(,)27 b Fo(--show-dependenc)o(ies)e Fs(is)739 4158 y(sp)r(eci\014ed,)j(this)g(option)f(has)g(no)g (e\013ect.)739 4320 y @beginspecial @setspecial @endspecial 107 x Fk(A.3.16)112 b Fe(--verbose-dependencies)739 4593 y Fo(--verbose-depend)o(en)o(cie)o(s)863 4700 y Fs(If)38 b(either)e(of)h(the)g(options)f Fo(--print-dependen)o(ci)o(es)30 b Fs(or)36 b Fo(--show-dependenc)o(ies)739 4799 y Fs(is)h(in)h (e\013ect,)i(also)c(prin)n(t)i(listings)f(for)g(eac)n(h)f(dep)r (endency)-7 b(.)67 b(The)37 b(output)h(is)f(v)n(ery)g(v)n(er-)739 4899 y(b)r(ose,)d(consider)e(redirecting)g(to)h(a)f(\014le.)53 b(If)34 b(neither)f(option)f Fo(--print-dependenc)o(ies)o Fs(,)739 4998 y Fo(--show-dependenc)o(ie)o(s)22 b Fs(is)27 b(sp)r(eci\014ed,)h(this)g(option)f(has)g(no)h(e\013ect.)p eop end %%Page: 229 229 TeXDict begin 229 228 bop 291 282 a @beginspecial @setspecial @endspecial Fp(A.4.)64 b(ADDITIONAL)29 b(OPTIONS)1562 b Fs(229)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(A.3.17)112 b Fe(--install)291 676 y Fo(--install)415 780 y Fs(Install)38 b(default)h(\014les)f Fo(OMakefile)c Fs(and)k Fo(OMakeroot)c Fs(in)n(to)k(the)h(curren)n(t)e(directory)-7 b(.)291 879 y(Y)g(ou)27 b(w)n(ould)g(t)n(ypically)g(do)h(this)g(to)f (start)g(a)g(pro)5 b(ject)27 b(in)h(the)g(curren)n(t)f(directory)-7 b(.)291 1029 y @beginspecial @setspecial @endspecial 104 x Fk(A.3.18)112 b Fe(--install-all)291 1293 y Fo(--install-all)415 1397 y Fs(In)45 b(addition)f(to)g(installing)g(\014les)g Fo(OMakefile)d Fs(and)j Fo(OMakeroot)p Fs(,)h(install)f(default)291 1497 y Fo(OMakefile)p Fs(s)31 b(in)n(to)36 b(eac)n(h)f(sub)r(directory) f(of)i(the)g(curren)n(t)f(directory)-7 b(.)59 b Fo(cvs)p Fs(\(1\))35 b(rules)g(are)291 1596 y(used)25 b(for)g(\014ltering)g(the) g(sub)r(directory)g(list.)36 b(F)-7 b(or)25 b(example,)g Fo(OMakefile)p Fs(s)d(are)i(not)h(copied)291 1696 y(in)n(to)i (directories)f(called)h Fo(CVS)p Fs(,)g Fo(RCCS)p Fs(,)f(etc.)291 1845 y @beginspecial @setspecial @endspecial 105 x Fk(A.3.19)112 b Fe(--install-force)291 2110 y Fo(--install-force)415 2214 y Fs(Normally)-7 b(,)34 b Fo(omake)d Fs(will)j(prompt)f(b)r(efore) g(it)h(o)n(v)n(erwrites)d(an)n(y)h(existing)i Fo(OMakefile)p Fs(.)291 2313 y(If)28 b(this)f(option)h(is)f(giv)n(en,)g(all)g(\014les) h(are)f(forcibly)g(o)n(v)n(erwritten)e(without)k(prompting.)291 2463 y @beginspecial @setspecial @endspecial 104 x Fk(A.3.20)112 b Fe(--absname)291 2728 y Fo(--absname)415 2831 y Fs(Filenames)27 b(should)h(expand)f(to)h(absolute)f(pathnames.)415 2935 y Fq(N.B.)f Fs(This)i(is)g(an)f(exp)r(erimen)n(tal)g(option.)36 b(It)28 b(ma)n(y)f(b)r(ecome)h(deprecated.)291 3084 y @beginspecial @setspecial @endspecial 104 x Fk(A.3.21)112 b Fe(variable)53 b(definition)291 3349 y Fo(name=[value])415 3453 y(omake)16 b Fs(v)-5 b(ariables)18 b(can)g(also)f(b)r(e)i (de\014ned)f(on)g(the)h(command)f(line)h(in)f(the)h(form)f Fo(name=value)p Fs(.)291 3552 y(F)-7 b(or)29 b(example,)i(the)f Fo(CFLAGS)e Fs(v)-5 b(ariable)29 b(migh)n(t)h(b)r(e)h(de\014ned)g(on)f (the)g(command)g(line)g(with)291 3652 y(the)e(argumen)n(t)e Fo(CFLAGS="-Wall)38 b(-g")p Fs(.)291 3813 y @beginspecial @setspecial @endspecial 135 x Fl(A.4)134 b(Additional)46 b(options)291 4137 y Fs(In)26 b(addition,)g Fo(omake)f Fs(supp)r(orts)g(a)h(n)n(um)n(b)r(er)g(of)g(debugging)f(\015ags)g(on)h (the)h(command)f(line.)291 4237 y(Run)i Fo(omake)41 b(--help)25 b Fs(to)j(get)f(a)g(summary)g(of)h(these)f(\015ags.)291 4397 y @beginspecial @setspecial @endspecial 135 x Fl(A.5)134 b(En)l(vironmen)l(t)46 b(v)-7 b(ariables)291 4618 y @beginspecial @setspecial @endspecial 120 x Fk(A.5.1)112 b Fe(OMAKEFLAGS)291 4899 y Fs(If)33 b(de\014nes,)h(the)g Fo(OMAKEFLAGS)28 b Fs(should)33 b(sp)r(ecify)g(a)g(set)g(of)g(options)f(exactly)g(as)h (they)g(are)291 4998 y(sp)r(eci\014ed)27 b(on)h(the)g(command)f(line.)p eop end %%Page: 230 230 TeXDict begin 230 229 bop 739 282 a @beginspecial @setspecial @endspecial Fs(230)1706 b Fp(APPENDIX)28 b(A.)55 b(SYNOPSIS)739 432 y @beginspecial @setspecial @endspecial 83 x Fk(A.5.2)112 b Fe(OMAKELIB)739 680 y Fs(If)43 b(de\014ned,)48 b(the)43 b Fo(OMAKELIB)d Fs(en)n(vironmen)n(t)i(v)-5 b(ariable)42 b(should)h(refer)g(to)g(the)g(installed)739 780 y(lo)r(cation)37 b(of)h(the)g(OMak)n(e)f(standard)f(library)-7 b(.)67 b(This)38 b(is)f(the)i(directory)d(that)i(con)n(tains)739 879 y Fo(Pervasives.om)13 b Fs(etc.)34 b(On)18 b(a)g(Unix)h(system,)h (this)e(is)h(often)f Fo(/usr/lib/omake)13 b Fs(or)k Fo (/usr/local/lib/om)o(ake)o Fs(,)739 979 y(and)27 b(on)h(Win32)f (systems)g(it)h(is)f(often)h Fo(c:\\Program)40 b(Files\\OMake\\lib)p Fs(.)863 1085 y(If)30 b(not)g(de\014ned,)g Fo(omake)e Fs(uses)h(the)g(default)h(con\014gured)f(lo)r(cation.)42 b(Y)-7 b(ou)29 b(should)g(nor-)739 1184 y(mally)e(lea)n(v)n(e)f(this)i (unset.)739 1352 y @beginspecial @setspecial @endspecial 139 x Fl(A.6)135 b(F)-11 b(unctions)739 1579 y @beginspecial @setspecial @endspecial 122 x Fk(A.6.1)112 b Fe(OMakeFlags)739 1866 y Fs(The)30 b Fo(OMakeFlags)c Fs(function)31 b(can)f(b)r(e)g(used) h(within)f(an)g Fo(OMakefile)d Fs(to)j(mo)r(dify)h(the)f(set)739 1965 y(of)24 b(options.)35 b(The)23 b(options)g(should)h(b)r(e)g(sp)r (eci\014ed)g(exactly)f(as)g(they)h(are)e(on)i(the)g(command)739 2065 y(line.)45 b(F)-7 b(or)29 b(example,)i(if)g(y)n(ou)e(w)n(an)n(t)h (some)f(sp)r(eci\014c)i(pro)5 b(ject)29 b(to)h(b)r(e)h(silen)n(t)f(and) g(displa)n(y)g(a)739 2165 y(progress)25 b(bar,)i(y)n(ou)g(can)g(add)g (the)h(follo)n(wing)f(line)h(to)f(y)n(our)g Fo(OMakefile)p Fs(.)913 2378 y Fo(OMakeFlags\(-S)38 b(--progress\))863 2585 y Fs(F)-7 b(or)27 b(options)g(where)g(it)h(mak)n(es)e(sense,)h (the)h(options)f(are)f(scop)r(ed)h(lik)n(e)g(v)-5 b(ariables.)36 b(F)-7 b(or)739 2684 y(example,)36 b(if)f(y)n(ou)f(w)n(an)n(t)g(OMak)n (e)g(to)g(b)r(e)h(silen)n(t)g(for)f(a)h(single)f(rule)g(\(instead)h(of) g(for)f(the)739 2784 y(en)n(tire)27 b(pro)5 b(ject\),)27 b(y)n(ou)g(can)g(use)h(scoping)e(the)i(restrict)f(the)h(range)e(of)i (the)g(option.)913 2997 y Fo(section)1088 3097 y(#)43 b(Do)g(not)f(display)f(command)f(output)h(when)h(foo)h(is)f (constructed)1088 3197 y(OMakeFlags\(-S\))1088 3396 y(foo:)g(fee)1218 3495 y(echo)g("This)g(is)h(a)g(generated)d(file")h(>)i(foo)1218 3595 y(cat)g(fee)f(>>)h(foo)1218 3695 y(chmod)f(555)g(foo)739 3846 y @beginspecial @setspecial @endspecial 156 x Fl(A.7)135 b(Option)45 b(pro)t(cessing)739 4195 y Fs(When)28 b Fo(omake)e Fs(is)h(in)n(v)n(ok)n(ed,)f(the)i(options)f(are)g(pro)r(cessed)f(in)i (the)g(follo)n(wing)f(order.)739 4273 y @beginspecial @setspecial @endspecial 840 4402 a(1.)41 b(All)27 b(options)f(sp)r (eci\014ed)g(b)n(y)g(the)g Fo(OMAKEFLAGS)c Fs(en)n(vironmen)n(t)k(v)-5 b(ariable)25 b(are)g(de\014ned)946 4502 y(globally)-7 b(.)739 4563 y @beginspecial @setspecial @endspecial 840 4692 a(2.)41 b(All)29 b(options)e(from)g(the)h(command)f(line)h (are)e(de\014ned)i(globally)-7 b(.)739 4754 y @beginspecial @setspecial @endspecial 840 4883 a(3.)41 b(An)n(y)30 b(individual)h(calls)e(the)h(the)h Fo(OMakeFlags)26 b Fs(function)31 b(mo)r(dify)f(the)g(options)g(lo-)946 4982 y(cally)-7 b(.)p eop end %%Page: 231 231 TeXDict begin 231 230 bop 291 282 a @beginspecial @setspecial @endspecial Fp(A.8.)64 b(.OMAKER)n(C)2058 b Fs(231)291 432 y @beginspecial @setspecial @endspecial 83 x Fl(A.8)134 b(.omak)l(erc)291 697 y Fs(If)23 b(the)h Fo($\(HOME\)/.omakerc)17 b Fs(exists,)23 b(it)h(is)f(read)f(b)r(efore)h(an)n(y)g(of)g(the)h Fo(OMakefiles)19 b Fs(in)k(y)n(our)291 797 y(pro)5 b(ject.)33 b(The)19 b Fo(.omakerc)d Fs(\014le)j(is)g(frequen)n(tly)g(used)g(for)f (user-sp)r(eci\014c)g(customization.)34 b(F)-7 b(or)291 896 y(example,)34 b(instead)f(of)g(de\014ning)g(the)g Fo(OMAKEFLAGS)c Fs(en)n(vironmen)n(t)j(v)-5 b(ariable,)34 b(y)n(ou)e(could)291 996 y(add)27 b(a)g(line)h(to)f(y)n(our)g Fo(.omakerc)p Fs(.)465 1179 y Fo($\(HOME\)/.omakerc)o(:)639 1278 y(#)43 b(My)g(private)e(options)639 1378 y(OMakeFlags\(-S)d (--progress\))p eop end %%Page: 232 232 TeXDict begin 232 231 bop 739 282 a @beginspecial @setspecial @endspecial Fs(232)1706 b Fp(APPENDIX)28 b(A.)55 b(SYNOPSIS)p eop end %%Page: 233 233 TeXDict begin 233 232 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 707 x Fm(App)5 b(endix)64 b(B)291 1554 y Fr(OMak)-6 b(e)76 b(grammar)291 1927 y @beginspecial @setspecial @endspecial 110 x Fl(B.1)134 b(OMak)l(e)46 b(lexical)g(con)l(v)l(en)l(tions)291 2220 y Fs(The)21 b(OMak)n(e)e(language)h(is)g(based)h(on)f(the)i (language)d(for)i(GNU/BSD)g(mak)n(e,)h(where)e(there)291 2319 y(are)29 b(few)j(lexical)e(con)n(v)n(en)n(tions.)45 b(Strictly)31 b(sp)r(eaking,)f(there)h(are)f(no)g(k)n(eyw)n(ords,)g (and)h(few)291 2419 y(sp)r(ecial)c(sym)n(b)r(ols.)291 2554 y @beginspecial @setspecial @endspecial 101 x Fk(B.1.1)112 b(Commen)m(ts)291 2809 y Fs(Commen)n(ts)36 b(b)r(egin)h(with)g(the)g Fo(#)f Fs(c)n(haracter)e(and)j(con)n(tin)n(ue)f(to)g(the)h (end-of-line.)64 b(T)-7 b(ext)291 2909 y(within)28 b(a)f(commen)n(t)h (is)f(unrestricted.)415 3009 y(Examples.)421 3195 y Fo(#)44 b(This)d(is)i(a)g(comment)421 3295 y(#)h(This)d($comment)g(contains)f (a)j(quote)f(")h(character)291 3432 y @beginspecial @setspecial @endspecial 99 x Fk(B.1.2)112 b(Sp)s(ecial)38 b(c)m(haracters)291 3685 y Fs(The)27 b(follo)n(wing)g(c)n(haracters)e(are)i(sp)r(ecial)g (in)h(some)f(con)n(texts.)421 3871 y Fo($)174 b(\()g(\))g(,)g(.)130 b(=)174 b(:)g(")g(')g(`)g(\\)g(#)415 4056 y Fj(\017)41 b Fo($)27 b Fs(is)h(used)f(to)h(denote)f(a)h(v)-5 b(ariable)26 b(reference,)h(or)g(function)h(application.)415 4224 y Fj(\017)41 b Fs(P)n(aren)n(theses)25 b Fo(\))p Fs(,)j Fo(\()f Fs(are)g(argumen)n(t)f(delimin)n(ters.)415 4393 y Fj(\017)41 b Fs(The)28 b(command)f Fo(,)g Fs(is)h(an)f(argumen)n(t)g (separator.)415 4562 y Fj(\017)41 b Fs(The)28 b(p)r(erio)r(d)f(sym)n(b) r(ol)g Fo(.)h Fs(is)f(a)g(name)h(separator.)415 4730 y Fj(\017)41 b Fs(The)28 b(equalit)n(y)f(sym)n(b)r(ol)g Fo(=)g Fs(denotes)g(a)h(de\014nition.)415 4899 y Fj(\017)41 b Fs(The)32 b(colon)e(sym)n(b)r(ol)h Fo(:)g Fs(is)g(used)h(to)f(denote) g(rules,)h(and)f(\(optionally\))h(to)f(indicate)498 4998 y(that)d(an)f(expression)f(is)i(follo)n(w)n(ed)e(b)n(y)i(an)f(inden)n (ted)h(b)r(o)r(dy)-7 b(.)1660 5208 y(233)p eop end %%Page: 234 234 TeXDict begin 234 233 bop 739 282 a @beginspecial @setspecial @endspecial Fs(234)1308 b Fp(APPENDIX)27 b(B.)55 b(OMAKE)27 b(GRAMMAR)863 515 y Fj(\017)41 b Fs(The)28 b(quotation)f(sym)n(b)r(ols) g Fo(")g Fs(and)h Fo(')f Fs(delimit)h(c)n(haracter)e(strings.)863 691 y Fj(\017)41 b Fs(The)28 b(sym)n(b)r(ol)f Fo(#)g Fs(is)h(the)g(\014rst)f(c)n(haracter)f(of)h(a)h(constan)n(t.)863 867 y Fj(\017)41 b Fs(The)22 b(escap)r(e)f(sym)n(b)r(ol)g Fo(\\)g Fs(is)g(sp)r(ecial)g Fi(only)k(when)j Fs(follo)n(w)n(ed)20 b(b)n(y)h(another)g(sp)r(ecial)g(c)n(har-)946 966 y(acter.)40 b(In)29 b(this)g(case,)f(the)h(sp)r(ecial)g(status)f(of)h(the)g(second) f(c)n(haracter)f(is)i(remo)n(v)n(ed,)946 1066 y(and)k(the)g(sequence)g (denotes)f(the)h(second)f(c)n(haracter.)51 b(Otherwise,)33 b(the)g Fo(\\)g Fs(is)f(not)946 1166 y(sp)r(ecial.)946 1303 y(Examples:)1040 1498 y Fq({)41 b Fo(\\$)p Fs(:)36 b(the)28 b Fo($)f Fs(c)n(haracter)f(\(as)h(a)g(normal)g(c)n (haracter\).)1040 1636 y Fq({)41 b Fo(\\#)p Fs(:)36 b(the)28 b Fo(#)f Fs(c)n(haracter)f(\(as)h(a)g(normal)g(c)n(haracter\).)1040 1774 y Fq({)41 b Fo(\\\\)p Fs(:)36 b(the)28 b Fo(\\)f Fs(c)n(haracter)f(\(as)h(a)g(normal)g(c)n(haracter\).)1040 1911 y Fq({)41 b Fo(c\\:\\Windows\\moo\\)o(#bo)o(o)p Fs(:)31 b(the)d(string)f Fo(c:\\Windows\\moo#)o(boo)o Fs(.)739 2054 y @beginspecial @setspecial @endspecial 103 x Fk(B.1.3)112 b(Iden)m(ti\014ers)739 2315 y Fs(Iden)n(ti\014ers)24 b(\(v)-5 b(ariable)25 b(names\))f(are)g(dra)n(wn)g(from)h(the)g(ASCI)r (I)h(alphan)n(umeric)e(c)n(haracters)739 2414 y(as)c(w)n(ell)g(as)f Fo(_)p Fs(,)j Fo(-)p Fs(,)f Fo(~)p Fs(,)h Fo(@)p Fs(.)34 b(Case)19 b(is)h(signi\014can)n(t;)i(the)f(follo)n(wing)e(iden)n (ti\014ers)h(are)f(distinct:)34 b Fo(FOO)p Fs(,)739 2514 y Fo(Foo)p Fs(,)29 b Fo(foo)p Fs(.)43 b(The)30 b(iden)n(ti\014er)g(ma)n (y)g(b)r(egin)g(with)g(an)n(y)f(of)h(the)h(v)-5 b(alid)30 b(c)n(haracters,)e(including)739 2613 y(digits.)863 2715 y(Using)40 b Fo(egrep)f Fs(notation,)j(the)f(regular)d(expression)h (for)h(iden)n(ti\014ers)f(is)h(de\014ned)h(as)739 2815 y(follo)n(ws.)913 3010 y Fo(identifier)f(::=)i([-@~_A-Za-z0-9]+)863 3202 y Fs(The)28 b(follo)n(wing)f(are)f(legal)h(iden)n(ti\014ers.)913 3397 y Fo(Xyz)173 b(hello_world)d(seventy@nine)913 3497 y(79-32)85 b(Gnus~Gnats)214 b(CFLAGS)863 3689 y Fs(The)28 b(follo)n(wing)f(are)f(not)i(legal)f(iden)n(ti\014ers.)913 3884 y Fo(x+y)173 b(hello&world)739 4029 y @beginspecial @setspecial @endspecial 100 x Fk(B.1.4)112 b(Command)39 b(iden)m(ti\014ers)739 4287 y Fs(The)26 b(follo)n(wing)e(w)n(ords)g(ha) n(v)n(e)h(sp)r(ecial)g(signi\014cance)f(when)i(they)g(o)r(ccur)f(as)g (the)h Fi(\014rst)32 b Fs(w)n(ord)739 4387 y(of)27 b(a)h(program)d (line.)37 b(They)28 b(are)e(not)i(otherwise)f(sp)r(ecial.)913 4582 y Fo(case)217 b(catch)85 b(class)172 b(declare)f(default)913 4681 y(do)305 b(else)129 b(elseif)f(export)215 b(extends)913 4781 y(finally)85 b(if)217 b(import)128 b(include)171 b(match)913 4880 y(open)217 b(raise)85 b(return)128 b(section)171 b(switch)913 4980 y(try)261 b(value)85 b(when)216 b(while)p eop end %%Page: 235 235 TeXDict begin 235 234 bop 291 282 a @beginspecial @setspecial @endspecial Fp(B.1.)64 b(OMAKE)26 b(LEXICAL)i(CONVENTIONS)1143 b Fs(235)291 432 y @beginspecial @setspecial @endspecial 83 x Fk(B.1.5)112 b(V)-9 b(ariable)38 b(references)291 672 y Fs(A)j(v)-5 b(ariable)39 b(reference)h(is)h(denoted)f(with)i(the) f Fo($)f Fs(sp)r(ecial)g(c)n(haracter)f(follo)n(w)n(ed)h(b)n(y)g(an)291 772 y(iden)n(ti\014er.)34 b(If)19 b(the)h(iden)n(ti\014er)f(name)g(has) g(more)f(than)h(one)g(c)n(haracter,)g(it)h(m)n(ust)f(b)r(e)h(enclosed) 291 872 y(in)30 b(paren)n(theses.)42 b(The)30 b(paren)n(thesized)f(v)n (ersion)g(is)h(most)f(common.)44 b(The)30 b(follo)n(wing)f(are)291 971 y(legal)d(v)-5 b(ariable)27 b(references.)465 1164 y Fo($\(Xyz\))172 b($\(hello_world\))125 b($\(seventy@nine\))465 1263 y($\(79-32\))84 b($\(Gnus~Gnats\))169 b($\(CFLAGS\))415 1454 y Fs(Single-c)n(haracter)22 b(references)i(also)f(include)j(sev)n (eral)d(additional)h(iden)n(ti\014ers,)h(includ-)291 1554 y(ing)i Fo(&*<^?][)p Fs(.)34 b(The)28 b(follo)n(wing)e(are)h (legal)g(single-c)n(haracter)d(references.)421 1746 y Fo($@)130 b($&)g($*)g($<)g($^)g($+)g($?)g($[)g($])421 1846 y($A)g($_)g($a)g($b)g($x)g($1)g($2)g($3)415 2037 y Fs(Note)28 b(that)g(a)f(non-paren)n(thesized)f(v)-5 b(ariable)26 b(reference)h(is)g(limited)i(to)e(a)g(single)g(c)n(har-) 291 2136 y(acter,)d(ev)n(en)f(if)i(it)f(is)g(follo)n(w)n(ed)f(b)n(y)h (additional)g(legal)f(iden)n(ti\014er)h(c)n(harqcters.)33 b(Supp)r(ose)25 b(the)291 2236 y(v)-5 b(alue)27 b(of)h(the)g Fo($x)e Fs(v)-5 b(ariable)27 b(is)g(17.)36 b(The)28 b(follo)n(wing)f (examples)g(illustrate)g(ev)-5 b(aluation.)465 2429 y Fo($x)479 b(evaluates)39 b(to)174 b(17)465 2528 y(foo$xbar)215 b(evaluates)39 b(to)174 b(foo17bar)465 2628 y(foo$\(x\)bar)127 b(evaluates)39 b(to)174 b(foo17bar)415 2818 y Fs(The)26 b(sp)r(ecial)g(sequence)g Fo($$)g Fs(represen)n(ts)f(the)h(c)n (haracter)f(literal)g Fo($)p Fs(.)37 b(That)26 b(is,)g(the)h(t)n(w)n (o-)291 2918 y(c)n(haracter)e(sequences)i Fo(\\$)g Fs(and)g Fo($$)g Fs(are)g(normally)f(equaliv)-5 b(alen)n(t.)291 3059 y @beginspecial @setspecial @endspecial 102 x Fk(B.1.6)112 b(String)37 b(constan)m(ts)291 3318 y Fs(Literal)f(strings)f(are)h (de\014ned)h(with)g(matc)n(hing)f(string)g(delimiters.)64 b(A)37 b(left)g(string)f(de-)291 3418 y(limiter)28 b(b)r(egins)g(with)h (the)g(dollar-sign)d Fo($)p Fs(,)i(and)h(a)f(non-zero)e(n)n(um)n(b)r (er)i(of)h(single-quote)e(or)291 3517 y(double-quote)f(c)n(haracters.) 34 b(The)27 b(string)g(is)g(terminated)g(with)g(a)g(matc)n(hing)f (sequence)h(of)291 3617 y(quotation)d(sym)n(b)r(ols.)36 b(The)25 b(delimiter)h(quotation)e(ma)n(y)h(not)g(b)r(e)h(mixed;)g(it)g (m)n(ust)g(con)n(tain)291 3717 y(only)21 b(single-quote)g(c)n (haracters,)f(or)h(double-quote)h(c)n(haracters.)32 b(The)22 b(follo)n(wing)f(are)g(legal)291 3816 y(strings.)465 4009 y Fo($'Hello)41 b(world')465 4108 y($"""printf\("Hell)o(o)c (world\\n"\)""")465 4208 y($'''')291 4308 y(Large)k("block")g(of)291 4407 y(text)h(#)h(spanning)d(''multiple'')f(lines'''')415 4598 y Fs(The)28 b(string)g(delimiters)f(are)h Fi(not)35 b Fs(included)29 b(in)f(the)g(string)g(constan)n(t.)37 b(In)28 b(the)h(single-)291 4698 y(quote)36 b(form,)j(the)e(con)n(ten)n (ts)f(of)h(the)g(string)f(are)g(in)n(terpreted)g(v)n(erbatim{there)f (are)h(no)291 4797 y(sp)r(ecial)27 b(c)n(haracters.)415 4899 y(The)h(double-quote)f(form)h(p)r(ermits)g(expression)f(ev)-5 b(aluation)27 b(within)i(the)g(string,)e(de-)291 4998 y(noted)g(with)h(the)g Fo($)g Fs(sym)n(b)r(ol.)36 b(The)28 b(follo)n(wing)e(are)h(some)g(examples.)p eop end %%Page: 236 236 TeXDict begin 236 235 bop 739 282 a @beginspecial @setspecial @endspecial Fs(236)1308 b Fp(APPENDIX)27 b(B.)55 b(OMAKE)27 b(GRAMMAR)913 515 y Fo(X)43 b(=)h(Hello)913 615 y(Y)f(=)h($""$X)d (world"")564 b(#)43 b(Hello)f(world)913 715 y(Z)h(=)h($'''$X)d (world''')476 b(#)43 b($X)g(world)913 814 y(I)g(=)h(3)913 914 y(W)f(=)h($"6)e(>)h($\(add)f($I,)g(2\)")304 b(#)43 b(6)g(>)g(5)863 1056 y Fs(Note)33 b(that)f(quotation)f(sym)n(b)r(ols)h (without)g(a)g(leading)f Fo($)h Fs(are)f(not)h(treated)g(sp)r(ecially) 739 1156 y(b)n(y)27 b(OMak)n(e.)36 b(The)27 b(quotation)g(sym)n(b)r (ols)g(is)h(included)g(in)g(the)g(sequence.)913 1298 y Fo(osh>println\('Hell)o(o)37 b(world'\))913 1398 y('Hello)k(world') 913 1497 y(osh>println\($'Hel)o(lo)c(world'\))913 1597 y(Hello)42 b(world)913 1697 y(osh>X)g(=)h(Hello)913 1796 y(-)g(:)h("Hello")c(:)j(Sequence)913 1896 y(osh>println\('$X)38 b(world'\))913 1996 y(Hello)k(world)739 2114 y @beginspecial @setspecial @endspecial 149 x Fl(B.2)135 b(The)44 b(OMak)l(e)h(grammar) 739 2445 y Fs(OMak)n(e)28 b(programs)f(are)h(constructed)h(from)g (expressions)f(and)h(statemen)n(ts.)42 b(Generally)-7 b(,)739 2545 y(an)24 b(input)g(program)e(consists)i(of)f(a)h(sequence)g (of)f(statemen)n(ts,)i(eac)n(h)e(of)h(whic)n(h)g(consists)f(of)739 2644 y(one)e(or)h(more)f(lines.)35 b(Inden)n(tation)21 b(is)h(signi\014can)n(t{if)f(a)h(statemen)n(t)g(consists)f(of)h(more)f (than)739 2744 y(one)28 b(line,)i(the)f(second)f(and)h(remaining)f (lines)h(\(called)g(the)g Fi(b)l(o)l(dy)7 b Fs(\))31 b(are)c(usually)i(inden)n(ted)739 2844 y(relativ)n(e)d(to)i(the)g (\014rst)f(line.)739 2953 y @beginspecial @setspecial @endspecial 116 x Fk(B.2.1)112 b(Expressions)739 3222 y Fs(The)28 b(follo)n(wing)e(table)i(lists)f(the)h(syn)n(tax)f(for)g (expressions.)977 3316 y Fi(expr)109 b Fs(::=)1450 3416 y Fi(\(empty\))1450 3516 y Fs({)27 b(T)-7 b(ext)28 b(\(see)g(note\)) 1254 3615 y(|)113 b Fi(text)1254 3715 y Fs(|)g Fi(string-liter)l(al) 1450 3815 y Fs({)27 b(Applications)1254 3914 y(|)113 b Fi(dol)t(lar)39 b Fo()1254 4014 y Fs(|)113 b Fi(dol)t(lar)39 b Fo(\()27 b Fi(p)l(athid)38 b(ar)l(gs)d Fo(\))1450 4113 y Fs({)27 b(Concatenation)1254 4213 y(|)113 b Fi(expr)37 b(expr)922 4412 y(dol)t(lar)111 b Fs(::=)99 b Fo($)28 b Fs(|)f Fo($`)g Fs(|)h Fo($,)913 4512 y Fi(p)l(athid)110 b Fs(::=)1450 4612 y Fi(id)1254 4711 y Fs(|)j Fi(p)l(athid)38 b Fo(.)27 b Fi(id)1022 4910 y(ar)l(g)107 b Fs(::=)99 b Fi(expr)37 b Fs({)27 b(excluding)h(sp)r(ecial)f(c)n(haracters)e Fo(\)\(,)p Fs(\))988 5010 y Fi(ar)l(gs)107 b Fs(::=)99 b Fi(\(empty\))31 b Fs(|)d Fi(ar)l(g)p Fs(,)g(...,)g Fi(ar)l(g)p eop end %%Page: 237 237 TeXDict begin 237 236 bop 291 282 a @beginspecial @setspecial @endspecial Fp(B.2.)64 b(THE)27 b(OMAKE)g(GRAMMAR)1507 b Fs(237)415 515 y(An)24 b Fi(expr)l(ession)31 b Fs(is)24 b(a)f(sequence)g(comp)r(osed)g(of)h(text,)h(string-literals,)e(v)-5 b(ariables)22 b(refer-)291 615 y(ences)i(and)g(function)h (applications.)35 b(T)-7 b(ext)25 b(is)f(an)n(y)g(sequence)g(of)h (non-sp)r(ecial)e(c)n(haracters.)291 863 y @beginspecial @setspecial @endspecial 110 x Fq(B.2.1.1)93 b(Inline)31 b(applications)291 1177 y Fs(An)f Fi(applic)l(ation)39 b Fs(is)30 b(the)g(application)f(of)h(a)g(function)g(to)g(zero-or-more) c(argumen)n(ts.)43 b(In-)291 1276 y(line)35 b(applications)g(b)r(egin)h (with)g(one)f(of)h(the)g(\\dollar")d(sequences)i Fo($)p Fs(,)i Fo($`)p Fs(,)g(or)e Fo($,)p Fs(.)60 b(The)291 1376 y(application)26 b(itself)h(is)g(sp)r(eci\014ed)g(as)f(a)g(single) h(c)n(haracter)d(\(in)k(whic)n(h)f(case)f(it)h(is)g(a)f(v)-5 b(ariable)291 1476 y(reference\),)24 b(or)f(it)h(is)g(a)g(paren)n (thesized)f(list)h(including)g(a)g(function)h(iden)n(ti\014er)f Fi(p)l(athid)p Fs(,)i(and)291 1575 y(zero-or-more)e(comma-separated)j (argumen)n(ts)g Fi(ar)l(gs)p Fs(.)39 b(The)29 b(argumen)n(ts)e(are)g (themselv)n(es)291 1675 y(a)36 b(v)-5 b(arian)n(t)37 b(of)g(the)g(expressions)f(where)g(the)i(sp)r(ecial)f(c)n(haracter)e Fo(\)\(,)h Fs(are)g(not)h(allo)n(w)n(ed)291 1774 y(\(though)d(an)n(y)g (of)h(these)g(ma)n(y)f(b)r(e)h(made)g(non-sp)r(ecial)f(with)h(the)g Fo(\\)f Fs(escap)r(e)h(c)n(haracter\).)291 1874 y(The)27 b(follo)n(wing)g(are)f(some)h(examples)g(of)h(v)-5 b(alid)27 b(expressions.)415 2164 y Fj(\017)41 b Fo(xyz)h(abc)498 2351 y Fs(The)28 b(text)g(sequence)f(\\)p Fo(xyz)42 b(abc)p Fs(")415 2624 y Fj(\017)f Fo(xyz$wabc)498 2811 y Fs(A)28 b(text)g(sequence)f(con)n(taining)g(a)g(reference)g(to)g(the)h(v)-5 b(ariable)27 b Fo(w)p Fs(.)415 3085 y Fj(\017)41 b Fo($\(addsuffix)e (.c,)k($\(FILES\)\))498 3271 y Fs(An)36 b(application)f(of)g(the)h (function)g Fo(addsuffix)p Fs(,)e(with)i(\014rst)f(argumen)n(t)f Fo(.c)p Fs(,)j(and)498 3371 y(second)27 b(argumen)n(t)g Fo($\(FILES\))p Fs(.)415 3644 y Fj(\017)41 b Fo($\(a.b.c)g(12\))498 3831 y Fs(This)30 b(is)h(a)f(metho)r(d)h(call.)45 b(The)30 b(v)-5 b(ariable)29 b Fo(a)h Fs(m)n(ust)h(ev)-5 b(aluate)30 b(to)g(an)g(ob)5 b(ject)30 b(with)h(a)498 3931 y(\014eld)e Fo(b)p Fs(,)f(whic)n(h)g(m)n(ust)h(b)r(e)g(an)f(ob)5 b(ject)28 b(with)h(a)f(metho)r(d)h Fo(c)p Fs(.)39 b(This)28 b(metho)r(d)h(is)f(called)498 4030 y(with)g(argumen)n(t)f Fo(12)p Fs(.)415 4321 y(The)33 b(additional)e(dollar)h(sequences)f(sp)r (ecify)i(ev)-5 b(aluation)32 b(order,)g Fo($`)g Fs(\(lazy\))g(and)h Fo($,)291 4420 y Fs(\(eager\),)26 b(as)h(discussed)g(in)h(the)g (section)f(on)h(dollar)e(mo)r(di\014ers)h(\(Section)h @beginspecial @setspecial @endspecial(B.3)p @beginspecial @setspecial @endspecial(\).)291 4673 y @beginspecial @setspecial @endspecial 122 x Fk(B.2.2)112 b(Statemen)m(ts)38 b(and)g(programs)291 4998 y Fs(The)27 b(follo)n(wing)g(table)g(lists)h (the)g(syn)n(tax)f(of)g(statemen)n(ts)g(and)h(programs.)p eop end %%Page: 238 238 TeXDict begin 238 237 bop 739 282 a @beginspecial @setspecial @endspecial Fs(238)1308 b Fp(APPENDIX)27 b(B.)55 b(OMAKE)27 b(GRAMMAR)1179 502 y Fi(p)l(ar)l(ams)107 b Fs(::=)99 b Fi(\(empty\))31 b Fs(|)d Fi(id)p Fs(,)h(...,)e Fi(id)1229 701 y(tar)l(get)107 b Fs(::=)99 b Fi(expr)37 b Fs({)27 b(excluding)g(sp)r(ecial)h(c)n(haracter)d Fo(:)1144 901 y Fi(pr)l(o)l(gr)l(am)107 b Fs(::=)99 b Fi(stmt)35 b Fo()25 b Fs(...)37 b Fo()26 b Fi(stmt)1276 1100 y(stmt)107 b Fs(::=)1751 1199 y({)27 b(Sp)r(ecial)h(forms)1555 1299 y(|)113 b Fo(command)25 b Fi(expr)37 b(optc)l(olon-b)l(o)l(dy)1555 1399 y Fs(|)113 b Fo(command)25 b Fs(\()j Fi(ar)l(gs)35 b Fs(\))28 b Fi(optc)l(olon-b)l(o)l(dy)1555 1498 y Fs(|)113 b Fo(catch)26 b Fi(id)37 b Fs(\()28 b Fi(id)37 b Fs(\))28 b Fi(optc)l(olon-b)l(o)l(dy)1555 1598 y Fs(|)113 b Fo(class)26 b Fi(id)37 b Fs(...)g Fi(id)1751 1797 y Fs({)27 b(V)-7 b(ariable)27 b(de\014nitions)1555 1897 y(|)113 b Fi(p)l(athid)38 b Fj(f)p Fs(+)p Fj(g)p Fs(=)26 b Fi(expr)1555 1996 y Fs(|)113 b Fi(p)l(athid)38 b Fj(f)p Fs(+)p Fj(g)p Fs(=)26 b Fo()f Fi(indente)l(d-b)l(o)l(dy)1555 2096 y Fs(|)113 b Fi(p)l(athid)9 b Fo([])28 b Fj(f)p Fs(+)p Fj(g)p Fs(=)e Fi(expr)1555 2196 y Fs(|)113 b Fi(p)l(athid)9 b Fo([])28 b Fj(f)p Fs(+)p Fj(g)p Fs(=)e Fo()g Fi(indente)l(d-exprs)1751 2395 y Fs({)h(F)-7 b(unctions)1555 2495 y(|)113 b Fi(p)l(athid)9 b Fs(\()p Fi(ar)l(gs)e Fs(\))30 b Fi(optc)l(olon-b)l(o)l(dy)1555 2594 y Fs(|)113 b Fi(p)l(athid)9 b Fs(\()p Fi(p)l(ar)l(ams)e Fs(\))30 b(=)d Fo()f Fi(indente)l(d-b)l(o)l(dy)1751 2793 y Fs({)h(Ob)5 b(jects)1555 2893 y(|)113 b Fi(p)l(athid)38 b Fo(.)27 b Fj(f)p Fs(+)p Fj(g)p Fs(=)f Fo()g Fi(indente)l(d-b)l (o)l(dy)1751 3092 y Fs({)h(Rules)1555 3192 y(|)113 b Fi(tar)l(get)35 b Fo(:)i Fi(tar)l(get)e(rule-options)g Fo()26 b Fi(indente)l(d-b)l(o)l(dy)1555 3292 y Fs(|)113 b Fi(tar)l(get)35 b Fo(::)i Fi(tar)l(get)e(rule-options)g Fo()26 b Fi(indente)l(d-b)l(o)l(dy)1555 3391 y Fs(|)113 b Fi(tar)l(get)35 b Fo(:)i Fi(tar)l(get)e Fo(:)i Fi(tar)l(get)e (rule-options)g Fo()26 b Fi(indente)l(d-b)l(o)l(dy)1555 3491 y Fs(|)113 b Fi(tar)l(get)35 b Fo(::)i Fi(tar)l(get)e Fo(:)h Fi(tar)l(get)g(rule-options)f Fo()25 b Fi(indente)l(d-b)l (o)l(dy)1751 3690 y Fs({)i(Shell)h(commands)1555 3790 y(|)113 b Fi(expr)946 3989 y(indente)l(d-b)l(o)l(dy)108 b Fs(::=)99 b Fi(\(empty\))1555 4089 y Fs(|)113 b Fi(indente)l(d-stmt) 35 b Fo()25 b Fs(...)38 b Fo()25 b Fi(indente)l(d-stmt)913 4288 y(indente)l(d-exprs)107 b Fs(::=)99 b Fi(\(empty\))1555 4387 y Fs(|)113 b Fi(indente)l(d-expr)37 b Fo()26 b Fs(...)37 b Fo()25 b Fi(indente)l(d-expr)950 4587 y(optc)l(olon-b)l(o)l(dy)109 b Fs(::=)99 b Fi(\(empty\))1555 4686 y Fs(|)113 b Fo()26 b Fi(indente)l(d-b)l(o)l(dy)1555 4786 y Fs(|)113 b Fo(:)37 b()25 b Fi(indente)l(d-b)l(o)l(dy)1039 4985 y(rule-option)107 b Fs(::=)99 b Fi(:id:)44 b(tar)l(get)1005 5085 y(rule-options)107 b Fs(::=)99 b Fi(\(empty\))1555 5184 y Fs(|)113 b Fi(rule-options)35 b(rule-option)p eop end %%Page: 239 239 TeXDict begin 239 238 bop 291 282 a @beginspecial @setspecial @endspecial Fp(B.2.)64 b(THE)27 b(OMAKE)g(GRAMMAR)1507 b Fs(239)291 432 y @beginspecial @setspecial @endspecial 83 x Fq(B.2.2.1)93 b(Sp)s(ecial)31 b(forms)291 669 y Fs(The)c(sp)r(ecial)h(forms)f(include)g(the)h(follo)n(wing.)415 768 y Fq(Conditionals)23 b Fs(\(see)h(the)g(section)g(on)g (conditionals)f(|)h(Section)g @beginspecial @setspecial @endspecial(4.9)p @beginspecial @setspecial @endspecial(\).)35 b(The)24 b Fo(if)g Fs(com-)291 868 y(mand)f(should)h(b)r(e)g(follo)n(w) n(ed)f(b)n(y)h(an)f(expression)f(that)j(represen)n(ts)d(the)i (condition,)h(and)e(an)291 967 y(inden)n(ted)28 b(b)r(o)r(dy)-7 b(.)37 b(The)27 b(conditional)g(ma)n(y)g(b)r(e)h(follo)n(w)n(ed)f(b)n (y)g Fo(elseif)e Fs(and)j Fo(else)e Fs(blo)r(c)n(ks.)465 1136 y Fo(if)43 b(expr)639 1236 y(indented-body)465 1335 y(elseif)e(expr)639 1435 y(indented-body)465 1535 y(...)465 1634 y(else)639 1734 y(indented-body)415 1902 y Fq(matc)m(hing)32 b Fs(\(see)d(the)h(section)g(on)f(matc)n(hing)h(|)g(Section)f @beginspecial @setspecial @endspecial(4.10)p @beginspecial @setspecial @endspecial(\).)43 b(The)30 b Fo(switch)d Fs(and)291 2002 y Fo(match)f Fs(commands)i(p)r(erform)g(pattern-matc)n (hing.)38 b(All)29 b(cases)e(are)h(optional.)39 b(Eac)n(h)27 b(case)291 2102 y(ma)n(y)f(include)i Fo(when)e Fs(clauses)h(that)h(sp)r (ecify)g(additional)f(matc)n(hing)g(conditions.)465 2270 y Fo(match\(expr\))465 2370 y(case)42 b(expr)596 2469 y(indented-body)465 2569 y(when)g(expr)596 2669 y(indented-body)465 2768 y(...)465 2868 y(case)g(expr)596 2968 y(indented-body)465 3067 y(default)596 3167 y(indented-body)415 3335 y Fq(Exceptions)26 b Fs(\(see)f(also)g(the)i @beginspecial @setspecial @endspecial Fo(try)e Fs(function)p @beginspecial @setspecial @endspecial 26 w(do)r(cumen)n(tation\).)36 b(The)26 b Fo(try)f Fs(command)291 3435 y(in)n(tro)r(duces)30 b(an)g(exception)h(handler.)46 b(Eac)n(h)30 b Fo(name)f Fs(is)i(the)h(name)e(of)h(a)g(class.)46 b(All)31 b(cases,)291 3535 y(including)d Fo(catch)p Fs(,)f Fo(default)p Fs(,)e(and)k Fo(finally)c Fs(are)i(optional.)39 b(The)28 b Fo(catch)f Fs(and)h Fo(default)291 3634 y Fs(clauses)e(con)n(tain)h(optional)g Fo(when)f Fs(clauses.)465 3803 y Fo(try)639 3903 y(indented-body)465 4002 y(catch)41 b(name1\(id1\))639 4102 y(indented-body)465 4201 y(when)h(expr)639 4301 y(indented-body)465 4401 y(...)465 4500 y(catch)f(nameN\(idN\))639 4600 y(indented-body)465 4700 y(default)639 4799 y(indented-body)465 4899 y(finally)639 4998 y(indented-body)p eop end %%Page: 240 240 TeXDict begin 240 239 bop 739 282 a @beginspecial @setspecial @endspecial Fs(240)1308 b Fp(APPENDIX)27 b(B.)55 b(OMAKE)27 b(GRAMMAR)863 515 y Fs(The)h Fo(raise)e Fs(command)h(is)g(used)h(to)f (raise)g(an)g(exception.)913 700 y Fo(raise)42 b(expr)863 885 y Fq(section)18 b Fs(\(see)h(the)g Fo(section)d Fs(description)i (in)h(Section)g @beginspecial @setspecial @endspecial(4.8)p @beginspecial @setspecial @endspecial(\).)33 b(The)19 b Fo(section)d Fs(command)739 984 y(in)n(tro)r(duces)27 b(a)g(new)h(scop)r(e.)913 1169 y Fo(section)1088 1269 y(indented-body)863 1453 y Fq(include,)j(op)s(en)c Fs(\(see)g(also)f (Section)i @beginspecial @setspecial @endspecial(4.7)p @beginspecial @setspecial @endspecial(\).)36 b(The)28 b Fo(include)c Fs(command)j(p)r(erforms)g(\014le)739 1553 y(inclusion.)37 b(The)27 b(expression)f(should)i(ev)-5 b(aluate)27 b(to)g(a)h(\014le)f(name.)863 1653 y(The)42 b Fo(open)d Fs(form)i(is)g(lik)n(e)g(include,)k(but)d(it)g(p)r(erforms) f(the)g(inclusion)g(only)g(if)h(the)739 1753 y(inclusion)35 b(has)f(not)h(already)f(b)r(een)h(p)r(erformed.)59 b(The)35 b Fo(open)e Fs(form)i(is)g(usually)f(used)h(to)739 1852 y(include)28 b(library)e(\014les.)37 b([jyh{)27 b(this)h(b)r(eha)n (vior)f(will)g(c)n(hange)g(in)h(subsequen)n(t)f(revisions.])913 2037 y Fo(include)41 b(expr)913 2137 y(open)h(expr)863 2321 y Fq(return)32 b Fs(\(see)e(the)h(description)f(of)h(functions)g (in)f(Section)h @beginspecial @setspecial @endspecial(4.5)p @beginspecial @setspecial @endspecial(\).)45 b(The)31 b Fo(return)d Fs(com-)739 2421 y(mand)g(terminates)f(execution)g(and)g (returns)g(a)h(v)-5 b(alue)27 b(from)g(a)g(function.)913 2606 y Fo(return)41 b(expr)863 2790 y Fq(v)-5 b(alue)24 b Fs(\(see)f(the)h(description)f(of)h(functions)f(in)h(Section)g @beginspecial @setspecial @endspecial(4.5)p @beginspecial @setspecial @endspecial(\).)35 b(The)23 b Fo(value)f Fs(command)739 2890 y(is)27 b(an)h(iden)n(tit)n(y)-7 b(.)37 b(Syn)n(tactically)-7 b(,)27 b(it)h(is)f(used)h(to)f(co)r(erce)g (a)g(n)h(expression)e(to)h(a)h(statemen)n(t.)913 3075 y Fo(value)42 b(expr)863 3259 y Fq(exp)s(ort)30 b Fs(\(see)g(the)h (section)e(on)h(scoping)f(|)h(Section)g @beginspecial @setspecial @endspecial(6.3)p @beginspecial @setspecial @endspecial(\).)43 b(The)30 b Fo(export)e Fs(command)739 3359 y(exp)r(orts)37 b(a)h(en)n(vironmen)n(t)f(from)h(a)g(nested)g(blo) r(c)n(k.)68 b(If)38 b(no)g(argumen)n(ts)f(are)g(giv)n(en,)j(the)739 3459 y(en)n(tire)22 b(en)n(vironmen)n(t)g(is)h(exp)r(orted.)35 b(Otherwise,)23 b(the)h(exp)r(ort)e(is)h(limited)h(to)f(the)g(sp)r (eci\014ed)739 3558 y(iden)n(ti\014ers.)913 3743 y Fo(export)41 b(expr)863 3928 y Fq(while)32 b Fs(\(see)h(also)f(the)i @beginspecial @setspecial @endspecial Fo(while)d Fs(function)p @beginspecial @setspecial @endspecial 33 w(description\).)53 b(The)34 b Fo(while)d Fs(command)h(in-)739 4027 y(tro)r(duces)27 b(a)g Fo(while)f Fs(lo)r(op.)913 4212 y Fo(while)42 b(expr)1088 4312 y(indented-body)863 4496 y Fq(class,)j(extends)37 b Fs(\(see)g(the)h(section)f(on)f(ob)5 b(jects)37 b(|)g(Section)g @beginspecial @setspecial @endspecial(4.11)p @beginspecial @setspecial @endspecial(\).)65 b(The)37 b Fo(class)739 4596 y Fs(command)27 b(sp)r(eci\014es)g(an)h(iden)n(ti\014er)f(for)g (an)g(ob)5 b(ject.)37 b(The)28 b Fo(extends)c Fs(command)j(sp)r (eci\014es)739 4695 y(a)g(paren)n(t)g(ob)5 b(ject.)913 4880 y Fo(class)42 b(id)913 4980 y(extends)f(expr)p eop end %%Page: 241 241 TeXDict begin 241 240 bop 291 282 a @beginspecial @setspecial @endspecial Fp(B.2.)64 b(THE)27 b(OMAKE)g(GRAMMAR)1507 b Fs(241)291 432 y @beginspecial @setspecial @endspecial 83 x Fq(B.2.2.2)93 b(V)-8 b(ariable)32 b(de\014nitions)291 669 y Fs(See)d(the)g(section)g(on)g(v)-5 b(ariables)28 b(\(Section)h @beginspecial @setspecial @endspecial(4.1)p @beginspecial @setspecial @endspecial(\).)41 b(The)29 b(simplest)h(v)-5 b(ariable)28 b(de\014nition)h(has)291 768 y(the)k(follo)n(wing)e(syn)n(tax.)52 b(The)33 b Fo(=)f Fs(form)h(is)f(a)h(new)g(de\014nition.)53 b(The)32 b(+=)g(form)h(app)r (ends)291 868 y(the)28 b(v)-5 b(alue)27 b(to)h(an)f(existing)g (de\014nition.)465 1047 y Fo(id)43 b(=)g(expr)465 1146 y(id)g(+=)f(expr)465 1345 y(osh>)g(X)h(=)g(1)465 1445 y(-)g(:)g("1")g(:)g(Sequence)465 1545 y(osh>)f(X)h(+=)g(7)465 1644 y(-)g(:)g("1")g(")g(")g("7")f(:)h(Sequence)415 1823 y Fs(A)34 b(m)n(ulti-line)f(form)g(is)h(allo)n(w)n(ed,)f(where)g(the)g (v)-5 b(alue)34 b(is)f(computed)g(b)n(y)g(an)h(inden)n(ted)291 1923 y(b)r(o)r(dy)-7 b(.)465 2101 y Fo(id)43 b({+}=)639 2201 y(indented-body)465 2400 y(osh>)f(X)h(=)857 2500 y(Y)g(=)h(HOME)857 2600 y(println\(Y)c(is)j($Y\))857 2699 y(getenv\($Y\))465 2799 y(Y)g(is)g(HOME)465 2898 y(-)g(:)g("/home/jyh")c(:)k(Sequence)415 3077 y Fs(The)31 b(name)f(ma)n(y)g(b)r(e)i(quali\014ed)e(qith)h(one)g(of)f(the)h Fo(public)p Fs(,)f Fo(prtected)p Fs(,)e(or)i Fo(private)291 3177 y Fs(mo)r(di\014ers.)68 b(Public)38 b(v)-5 b(ariables)37 b(are)g(dynamically)h(scop)r(ed.)69 b(Protected)37 b(v)-5 b(ariables)37 b(are)291 3276 y(\014elds)27 b(in)h(the)g(curren)n(t)f (ob)5 b(ject.)36 b(Priv)-5 b(ate)27 b(v)-5 b(ariables)26 b(are)h(statically)g(scop)r(ed.)415 3376 y([jyh:)52 b(revision)34 b(0.9.9)g(in)n(tro)r(duces)g(mo)r(dular)h(namespaces;)i(the)e(meaning)g (of)g(these)291 3476 y(quali\014ers)26 b(is)i(sligh)n(tly)f(c)n (hanged.])465 3654 y Fo(public.X)40 b(=)j($\(addsuffix)c(.c,)k(1)g(2)g (3\))465 3754 y(protected.Y)c(=)k($\(getenv)d(HOME\))465 3854 y(private.Z)g(=)j($"Hello)e(world")291 3988 y @beginspecial @setspecial @endspecial 81 x Fq(B.2.2.3)93 b(Applications)31 b(and)h(function)g(de\014nitions)291 4222 y Fs(See)d(the)g(section)g (on)f(functions)h(\(Section)h @beginspecial @setspecial @endspecial(4.5)p @beginspecial @setspecial @endspecial(\).)40 b(A)30 b(function-application)e(statemen)n(t)h(is)291 4322 y(sp)r(eci\014ed)g(as)f(a)g(function)i(name,)f(follo)n(w)n(ed)f(a) g(paren)n(thesized)g(list)h(of)g(comma-separated)291 4421 y(argumen)n(ts.)465 4600 y Fo(osh>)42 b(println\($"Hello)37 b(world"\))465 4799 y(osh>)42 b(FILES)f(=)j(1)f(2)g(3)465 4899 y(-)g(:)g(1)g(2)h(3)465 4998 y(osh>)e(addsuffix\(.c,)c ($\(FILES\)\))p eop end %%Page: 242 242 TeXDict begin 242 241 bop 739 282 a @beginspecial @setspecial @endspecial Fs(242)1308 b Fp(APPENDIX)27 b(B.)55 b(OMAKE)27 b(GRAMMAR)913 515 y Fo(-)43 b(:)h(1.c)e(2.c)g(3.c)913 715 y(#)h(The)g(following)d(forms)h(are)h(equivalent)913 814 y(osh>)g(value)g($\(println)e($"Hello)g(world"\))913 914 y(osh>)i(value)g($\(addsuffix)d(.c,)j($\(FILES\)\))913 1013 y(-)h(:)h(1.c)e(2.c)g(3.c)863 1179 y Fs(If)37 b(the)g(function)g (application)e(has)h(a)g(b)r(o)r(dy)-7 b(,)39 b(the)e(b)r(o)r(dy)f(is)h (passed)e(\(lazily\))i(to)f(the)739 1279 y(function)g(as)g(its)g (\014rst)f(argumen)n(t.)61 b([jyh:)54 b(in)36 b(revision)f(0.9.8)f (supp)r(ort)i(is)g(incomplete.])739 1379 y(When)26 b(using)f Fo(osh)p Fs(,)g(the)h(application)f(m)n(ust)h(b)r(e)g(follo)n(w)n(ed)e (b)n(y)i(a)f(colon)g Fo(:)g Fs(to)g(indicate)h(that)739 1478 y(the)i(application)f(has)g(a)g(b)r(o)r(dy)-7 b(.)913 1644 y Fo(#)43 b(In)g(its)g(3-argument)c(form,)i(the)i(foreach)e (function)f(takes)913 1744 y(#)j(a)h(body,)d(a)i(variable,)d(and)i(an)h (array.)85 b(The)42 b(body)g(is)h(evaluated)913 1843 y(#)g(for)g(each)f(element)e(of)j(the)f(array,)g(with)g(the)g(variable) e(bound)i(to)913 1943 y(#)h(the)g(element)d(value.)913 2043 y(#)913 2142 y(#)j(The)g(colon)e(is)i(required)d(only)i(for)h (interactive)c(sessions.)913 2242 y(osh>)j(foreach\(x,)e(1)j(2)g(3\):) 1262 2341 y(add\($x,)e(1\))913 2441 y(-)i(:)h(2)f(3)g(4)863 2607 y Fs(F)-7 b(unctions)25 b(are)f(de\014ned)i(in)f(a)f(similar)g (form,)h(where)g(the)g(parameter)e(list)i(is)g(sp)r(eci\014ed)739 2707 y(as)19 b(a)g(comma-separated)f(list)i(of)g(iden)n(ti\014ers,)h (and)e(the)i(b)r(o)r(dy)f(of)f(the)i(function)f(is)g(inden)n(ted.)913 2872 y Fo(osh>)42 b(f\(i,)g(j\))h(=)1262 2972 y(add\($i,)e($j\))913 3072 y(-)i(:)h()913 3171 y(osh>)g(f\(3,)g(7\))913 3271 y(-)h(:)h(10)e(:)i(Int)739 3384 y @beginspecial @setspecial @endspecial 100 x Fq(B.2.2.4)93 b(Ob)5 b(jects)739 3637 y Fs(See)32 b(the)h(section)f(on)f(ob)5 b(jects)32 b(\(Section)h @beginspecial @setspecial @endspecial(4.11)p @beginspecial @setspecial @endspecial(\).)49 b(Ob)5 b(jects)32 b(are)f(de\014ned)i(as)e(an)h(iden)n(ti\014er)739 3737 y(with)c(a)f(terminal)h(p)r(erio)r(d.)36 b(The)28 b(b)r(o)r(dy)g(of)f (the)h(ob)5 b(ject)28 b(is)f(inden)n(ted.)913 3903 y Fo(Obj.)42 b(=)1088 4002 y(class)f(Obj)1088 4201 y(X)i(=)g(1)1088 4301 y(Y)g(=)g($\(sub)e($X,)i(12\))1088 4401 y(new\(i,)e(j\))h(=)1218 4500 y(X)i(=)f($i)1218 4600 y(Y)h(=)f($j)1218 4700 y(value)f($\(this\)) 1088 4799 y(F\(\))g(=)1218 4899 y(add\($X,)f($Y\))1088 4998 y(println\($Y\))p eop end %%Page: 243 243 TeXDict begin 243 242 bop 291 282 a @beginspecial @setspecial @endspecial Fp(B.2.)64 b(THE)27 b(OMAKE)g(GRAMMAR)1507 b Fs(243)415 515 y(The)34 b(b)r(o)r(dy)h(of)f(the)h(ob)5 b(ject)34 b(has)g(the)h(usual)f(form)g(of)g(an)g(inden)n(ted)h(b)r(o)r (dy)-7 b(,)36 b(but)f(new)291 615 y(v)-5 b(ariable)31 b(de\014nitions)h(are)f(added)h(to)g(the)h(ob)5 b(ject,)33 b(not)f(the)h(global)e(en)n(vironmen)n(t.)50 b(The)291 715 y(ob)5 b(ject)27 b(de\014nition)h(ab)r(o)n(v)n(e)f(de\014nes)h(an)f (ob)5 b(ject)28 b(with)g(\(at)g(least\))g(the)g(\014elds)g Fo(X)g Fs(and)f Fo(Y)p Fs(,)h(and)291 814 y(metho)r(ds)23 b Fo(new)f Fs(and)h Fo(F)p Fs(.)f(The)i(name)e(of)i(the)f(ob)5 b(ject)23 b(is)g(de\014ned)g(with)h(the)f Fo(class)e Fs(command)291 914 y(as)27 b Fo(Obj)p Fs(.)415 1013 y(The)41 b Fo(Obj)e Fs(itself)i(has)f(\014elds)h Fo(X)i(=)g(1)e Fs(and)f Fo(Y)j(=)g(-11)p Fs(.)75 b(The)41 b Fo(new)e Fs(metho)r(d)i(has)g(the)291 1113 y(t)n(ypical)33 b(form)h(of)g(a)f (constructor-st)n(yle)f(metho)r(d,)k(where)d(the)i(\014elds)f(of)g(the) g(ob)5 b(ject)34 b(are)291 1213 y(initialized)f(to)g(new)g(v)-5 b(alues,)35 b(and)e(the)g(new)h(ob)5 b(ject)33 b(returned)f(\()p Fo($\(this\))f Fs(refers)h(to)i(the)291 1312 y(curren)n(t)26 b(ob)5 b(ject\).)415 1412 y(The)28 b Fo(F)f Fs(metho)r(d)h(returns)f (the)h(sum)g(of)f(the)h(t)n(w)n(o)f(\014elds)h Fo(X)f Fs(and)g Fo(Y)p Fs(.)415 1512 y(When)f(used)g(in)f(an)h(ob)5 b(ject)25 b(de\014nition,)h(the)g(+=)f(form)g(adds)g(the)h(new)f (de\014nitions)h(to)291 1611 y(an)h(existing)g(ob)5 b(ject.)421 1769 y Fo(pair.)42 b(=)552 1869 y(x)h(=)g(1)552 1968 y(y)g(=)g(2)421 2168 y(pair.)f(+=)552 2267 y(y)h(=)g($\(add)f($y,)g (3\))421 2367 y(#)i(pair)d(now)i(has)f(fields)f(\(x)i(=)g(1,)g(and)f(y) h(=)h(5\))415 2525 y Fs(The)27 b Fo(extends)c Fs(form)j(sp)r(eci\014es) g(inheritance.)36 b(Multiple)27 b(inheritance)f(is)h(allo)n(w)n(ed.)35 b(A)n(t)291 2624 y(ev)-5 b(aluation)31 b(time,)i(the)f Fo(extends)d Fs(directiv)n(e)j(p)r(erforms)f(inclusion)g(of)h(the)g(en) n(tire)g(paren)n(t)291 2724 y(ob)5 b(ject.)421 2882 y Fo(pair.)42 b(=)552 2981 y(x)h(=)g(1)552 3081 y(y)g(=)g(2)421 3280 y(depth.)e(=)552 3380 y(z)i(=)g(3)552 3480 y(zoom\(dz\))d(=)683 3579 y(z)j(=)g($\(add)f($z,)g($\(dz\)\))683 3679 y(return)f($\(this\)) 421 3878 y(triple.)g(=)552 3978 y(extends)g($\(pair\))552 4077 y(extends)g($\(depth\))552 4277 y(crazy\(\))g(=)683 4376 y(zoom\($\(mul)e($x,)k($y\)\))415 4534 y Fs(In)38 b(this)f(example,)i(the)f Fo(triple)d Fs(ob)5 b(ject)37 b(has)g(three)g(\014elds)g(x,)j(y)-7 b(,)39 b(and)e(z;)43 b(and)37 b(t)n(w)n(o)291 4634 y(metho)r(ds)27 b Fo(zoom)f Fs(and)i Fo(crazy)p Fs(.)291 4764 y @beginspecial @setspecial @endspecial 81 x Fq(B.2.2.5)93 b(Rules)291 4998 y Fs(See)27 b(the)h(c)n(hapter)f(on)g(rules)g(\(Chapter)h @beginspecial @setspecial @endspecial(8)p @beginspecial @setspecial @endspecial(\).)36 b(A)28 b(rule)g(has)f(the)h(follo)n(wing)e(parts.)p eop end %%Page: 244 244 TeXDict begin 244 243 bop 739 282 a @beginspecial @setspecial @endspecial Fs(244)1308 b Fp(APPENDIX)27 b(B.)55 b(OMAKE)27 b(GRAMMAR)739 432 y @beginspecial @setspecial @endspecial 840 515 a Fs(1.)41 b(A)28 b(sequence)f(of)h(targets;)739 566 y @beginspecial @setspecial @endspecial 840 685 a(2.)41 b(one)28 b(or)e(t)n(w)n(o)h(colons;)739 736 y @beginspecial @setspecial @endspecial 840 854 a(3.)41 b(a)28 b(sequence)f(of)g Fi(dep)l(endencies)37 b Fs(and)27 b Fi(rule)j(options)7 b Fs(;)739 905 y @beginspecial @setspecial @endspecial 840 1023 a(4.)41 b(and)28 b(an)f(inden)n(ted)h(b)r(o)r(dy)-7 b(.)863 1192 y(The)35 b(targets)e(are)h(the)h(\014les)f(to)h(b)r(e)g (built,)i(and)d(the)h(dep)r(endencies)g(are)e(the)i(\014les)g(it)739 1291 y(dep)r(ends)28 b(on.)36 b(If)28 b(t)n(w)n(o)f(colons)f(are)g(sp)r (eci\014ed,)i(it)g(indicates)f(that)h(there)f(ma)n(y)g(b)r(e)h(m)n (ultiple)739 1391 y(rules)f(to)g(build)i(the)f(giv)n(en)e(targets;)h (otherwise)f(only)i(one)f(rule)g(is)h(allo)n(w)n(ed.)863 1491 y(If)33 b(the)g(target)e(con)n(tains)g(a)h Fo(\045)g Fs(c)n(haracter,)g(the)g(rule)g(is)g(called)g Fi(implicit)p Fs(,)k(and)c(is)g(con-)739 1591 y(sidered)d(whenev)n(er)g(a)h(\014le)g (matc)n(hing)f(that)i(pattern)e(is)h(to)g(b)r(e)h(built.)44 b(F)-7 b(or)30 b(example,)g(the)739 1691 y(follo)n(wing)c(rule)i(sp)r (eci\014es)f(a)g(default)h(rule)g(for)f(compiling)g(OCaml)g(\014les.) 913 1877 y Fo(\045.cmo:)41 b(\045.ml)h(\045.mli)1044 1977 y($\(OCAMLC\))e(-c)j($<)863 2163 y Fs(This)21 b(rule)g(w)n(ould)f (b)r(e)i(consulted)f(as)f(a)g(default)i(w)n(a)n(y)d(of)i(building)h(an) n(y)e(\014le)h(with)g(a)g Fo(.cmo)739 2263 y Fs(su\016x.)53 b(The)34 b(dep)r(endencies)f(list)h(is)f(also)f(constructed)g(based)h (on)g(the)g(pattern)g(matc)n(h.)739 2362 y(F)-7 b(or)23 b(example,)i(if)f(this)h(rule)f(w)n(ere)f(used)h(to)g(build)h(a)e (\014le)i Fo(foo.cmo)p Fs(,)d(then)i(the)h(dep)r(endency)739 2462 y(list)j(w)n(ould)f(b)r(e)h Fo(foo.ml)41 b(foo.mli)p Fs(.)863 2562 y(There)28 b(is)g(also)g(a)g(three-part)f(v)n(ersion)g (of)h(a)g(rule,)g(where)g(the)h(rule)f(sp)r(eci\014cation)g(has)739 2662 y(three)f(parts.)913 2849 y Fo(targets)41 b(:)i(patterns)d(:)k (dependencies)38 b(rule-options)1044 2948 y(indented-body)863 3134 y Fs(In)23 b(this)g(case,)g(the)g(patterns)f Fi(must)29 b Fs(con)n(tain)22 b(a)g(single)g Fo(\045)h Fs(c)n(haracter.)33 b(Three-part)21 b(rules)739 3234 y(are)32 b(also)f(considered)h Fi(implicit)p Fs(.)54 b(F)-7 b(or)33 b(example,)g(the)g(follo)n(wing)f (de\014nes)h(a)f(default)i(rule)739 3333 y(for)27 b(the)h Fo(clean)e Fs(target.)913 3520 y Fo(.PHONY:)41 b(clean)913 3719 y(clean:)g(\045:)1088 3819 y(rm)h(-f)h(*$\(EXT_OBJ\))c (*$\(EXT_LIB\))863 4005 y Fs(Three-part)e(implicit)j(rules)d(are)h (inherited)g(b)n(y)g(the)h(sub)r(directories)e(in)i(the)g(exact)739 4105 y(same)27 b(w)n(a)n(y)f(as)h(with)h(the)g(usual)g(t)n(w)n(o-part)d (implicit)k(rules.)863 4205 y(There)f(are)e(sev)n(eral)g(sp)r(ecial)h (targets,)g(including)g(the)h(follo)n(wing.)863 4391 y Fj(\017)41 b Fo(.PHONY)19 b Fs(:)i(declare)f(a)g(\\phon)n(y")g (target.)33 b(That)21 b(is,)h(the)g(target)d(do)r(es)i(not)g(corresp)r (ond)946 4491 y(to)28 b(a)f(\014le.)863 4660 y Fj(\017)41 b Fo(.ORDER)26 b Fs(:)h(declare)g(a)g(rule)g(for)g(dep)r(endency)i (ordering.)863 4829 y Fj(\017)41 b Fo(.INCLUDE)25 b Fs(:)j(de\014ne)f (a)h(rule)f(to)g(generate)g(a)g(\014le)h(for)f(textual)g(inclusion.)863 4998 y Fj(\017)41 b Fo(.SUBDIRS)25 b Fs(:)j(sp)r(ecify)f(sub)r (directories)g(that)h(are)e(part)i(of)f(the)h(pro)5 b(ject.)p eop end %%Page: 245 245 TeXDict begin 245 244 bop 291 282 a @beginspecial @setspecial @endspecial Fp(B.2.)64 b(THE)27 b(OMAKE)g(GRAMMAR)1507 b Fs(245)415 515 y Fj(\017)41 b Fo(.SCANNER)24 b Fs(:)k(de\014ne)g(a)f (rule)h(for)f(dep)r(endency)h(scanning.)415 692 y(There)f(are)g(sev)n (eral)f(rule)h(options.)415 869 y Fj(\017)41 b Fo(:optional:)f (dependencies)25 b Fs(the)31 b(subsequen)n(t)f(dep)r(endencies)h(are)e (optional,)h(it)498 969 y(is)e(acceptable)f(if)h(they)f(do)h(not)f (exist.)415 1132 y Fj(\017)41 b Fo(:exists:)f(dependencies)e Fs(the)43 b(subsequen)n(t)g(dep)r(endencies)g(m)n(ust)g(exist,)j(but) 498 1232 y(c)n(hanges)26 b(to)i(not)f(a\013ect)h(whether)g(this)f(rule) h(is)f(considered)g(out-of-date.)415 1396 y Fj(\017)41 b Fo(:effects:)f(targets)22 b Fs(the)k(subsequen)n(t)f(\014les)g(are)f (side-e\013ects)h(of)h(the)f(rule.)36 b(That)498 1495 y(is,)24 b(they)f(ma)n(y)g(b)r(e)h(created)e(and/or)f(mo)r(di\014ed)j (while)f(the)h(rule)f(is)g(executing.)35 b(Rules)498 1595 y(with)28 b(o)n(v)n(erlapping)e(side-e\013ects)h(are)f(nev)n(er)h (executed)h(in)g(parallel.)415 1759 y Fj(\017)41 b Fo(:scanner:)f(name) 29 b Fs(the)i(subsequen)n(t)f(name)g(is)h(the)f(name)h(of)f(the)h Fo(.SCANNER)c Fs(rule)498 1858 y(for)g(the)h(target)f(to)g(b)r(e)h (built.)415 2022 y Fj(\017)41 b Fo(:value:)g(expr)29 b Fs(the)i Fo(expr)d Fs(is)j(a)f(\\v)-5 b(alue")29 b(dep)r(endency)-7 b(.)46 b(The)30 b(rule)h(is)f(considered)498 2122 y(out-of-date)d (whenev)n(er)f(the)i(v)-5 b(alue)28 b(of)f(the)h Fo(expr)e Fs(c)n(hanges.)415 2298 y(Sev)n(eral)g(v)-5 b(ariables)27 b(are)f(de\014ned)i(during)f(rule)h(ev)-5 b(aluation.)415 2475 y Fj(\017)41 b Fo($*)27 b Fs(:)37 b(the)28 b(name)f(of)h(the)g (target)f(with)h(the)g(outermost)e(su\016x)i(remo)n(v)n(ed.)415 2639 y Fj(\017)41 b Fo($>)27 b Fs(:)37 b(the)28 b(name)f(of)h(the)g (target)f(with)h(all)f(su\016xes)g(remo)n(v)n(ed.)415 2803 y Fj(\017)41 b Fo($@)27 b Fs(:)37 b(the)28 b(name)f(of)h(the)g (target.)415 2966 y Fj(\017)41 b Fo($^)30 b Fs(:)43 b(the)32 b(explicit)f(\014le)g(dep)r(endencies,)h(sorted)e(alphab)r(etically)-7 b(,)31 b(with)g(duplicates)498 3066 y(remo)n(v)n(ed.)415 3230 y Fj(\017)41 b Fo($+)27 b Fs(:)37 b(all)27 b(explicit)h(\014le)g (dep)r(endencies,)g(with)g(order)e(preserv)n(ed.)415 3393 y Fj(\017)41 b Fo($<)27 b Fs(:)37 b(the)28 b(\014rst)f(explicit)h (\014le)g(dep)r(endency)-7 b(.)415 3557 y Fj(\017)41 b Fo($&)27 b Fs(:)37 b(the)28 b(free)f(v)-5 b(alues)27 b(of)h(the)g(rule)f(\(often)h(used)g(in)g Fo(:value:)d Fs(dep)r(endencies\).)291 3693 y @beginspecial @setspecial @endspecial 79 x Fq(B.2.2.6)93 b(Shell)30 b(commands)291 3925 y Fs(See)d(the)h(c)n(hapter)f(on)g(shell)h(commands)f(\(Chapter)g @beginspecial @setspecial @endspecial(11)p @beginspecial @setspecial @endspecial(\).)415 4025 y(While)36 b(it)g(is)g(p)r (ossible)f(to)g(giv)n(e)g(a)g(precise)g(sp)r(eci\014cation)g(of)h (shell)g(commands,)h(the)291 4124 y(informal)27 b(description)h(is)g (simpler.)39 b(An)n(y)28 b(non-empt)n(y)g(statemen)n(t)g(where)g(eac)n (h)f(pre\014x)h(is)291 4224 y Fi(not)34 b Fs(one)25 b(of)i(the)f(other) g(statemen)n(ts,)g(is)h(considered)e(to)h(b)r(e)h(a)f(shell)g(command.) 36 b(Here)26 b(are)291 4324 y(some)h(examples.)465 4500 y Fo(ls)1437 b(--)43 b(shell)f(command)465 4600 y(echo)g(Hello)f(world) h(>)h(/dev/null)301 b(--)43 b(shell)f(command)465 4700 y(echo\(Hello)d(world\))782 b(--)43 b(function)d(application)465 4799 y(echo\(Hello)f(world\))i(>)j(/dev/null)257 b(--)43 b(syntax)e(error)465 4899 y(echo)h(Hello:)f(world)782 b(--)43 b(rule)465 4998 y(X=1)f(getenv)f(X)1002 b(--)43 b(variable)d(definition)p eop end %%Page: 246 246 TeXDict begin 246 245 bop 739 282 a @beginspecial @setspecial @endspecial Fs(246)1308 b Fp(APPENDIX)27 b(B.)55 b(OMAKE)27 b(GRAMMAR)913 515 y Fo(env)43 b(X=1)f(getenv)f(X)828 b(--)43 b(shell)e(command)913 615 y(if)i(true)1219 b(--)43 b(special)d(form)913 715 y(\\if)j(true)1175 b(--)43 b(shell)e(command) 913 814 y("if")h(true)1132 b(--)43 b(shell)e(command)739 943 y @beginspecial @setspecial @endspecial 150 x Fl(B.3)135 b(Dollar)46 b(mo)t(di\014ers)739 1276 y Fs(Inline)39 b(applications)f(ha)n(v)n(e)f(a)h(function)h(and)g(zero-or-more)c (argumen)n(ts.)68 b(Ev)-5 b(aluation)739 1376 y(is)33 b(normally)f(strict:)49 b(when)33 b(an)h(application)e(is)i(ev)-5 b(aluated,)34 b(the)g(function)g(iden)n(ti\014er)f(is)739 1475 y(ev)-5 b(aluated)31 b(to)g(a)f(function,)j(the)e(argumen)n(ts)f (are)g(then)i(ev)-5 b(aluated)30 b(and)h(the)h(function)f(is)739 1575 y(called)c(with)h(the)g(ev)-5 b(aluated)28 b(argumen)n(ts.)863 1675 y(The)c(additional)e(\\dollar")f(sequences)h(sp)r(ecify)h (additional)g(con)n(trol)f(o)n(v)n(er)f(ev)-5 b(aluation.)739 1775 y(The)31 b(tok)n(en)g Fo($`)g Fs(de\014nes)g(a)g(\\lazy")e (application,)j(where)f(ev)-5 b(aluation)31 b(is)g(dela)n(y)n(ed)f(un)n (til)i(a)739 1875 y(v)-5 b(alue)34 b(is)g(required.)57 b(The)34 b Fo($,)g Fs(sequence)f(p)r(erforms)h(an)g(\\eager")e (application)i(within)h(a)739 1974 y(lazy)27 b(con)n(text.)863 2075 y(T)-7 b(o)43 b(illustrate,)i(consider)d(the)h(expression)e Fo($\(addsuffix)e(.c,)j($\(FILES\)\))p Fs(.)d(The)739 2174 y Fo(addsuffix)28 b Fs(function)k(app)r(ends)g(its)g(\014rst)g (argumen)n(t)e(to)i(eac)n(h)f(v)-5 b(alue)31 b(in)h(its)g(second)f(ar-) 739 2274 y(gumen)n(t.)37 b(The)27 b(follo)n(wing)g Fo(osh)f Fs(in)n(teraction)h(demonstrates)f(the)i(normal)f(baha)n(vior.)739 2461 y Fo(osh>)42 b(FILES[])f(=)i(a)g(b)g(c)739 2560 y(-)g(:)g()739 2660 y(osh>)f(X)h(=)g($\(addsuffix)c (.c,)k($\(FILES\)\))739 2759 y(-)g(:)g()739 2859 y(osh>)h(FILES[])f(=)i(1)g(2)g(3)g(#)g(redefine)e(FILES)739 2959 y(-)i(:)g()739 3058 y(osh>)f(println\($"$X"\)) 81 b(#)43 b(force)f(the)g(evaluation)e(and)i(print)739 3158 y(a.c)g(b.c)h(c.c)863 3344 y Fs(When)31 b(the)g(lazy)e(op)r (erator)g Fo($`)g Fs(is)h(used)h(instead,)f(ev)-5 b(aluation)30 b(is)g(dela)n(y)n(ed)f(un)n(til)i(it)f(is)739 3443 y(prin)n(ted.)k(In) 19 b(the)h(follo)n(wing)e(sample,)i(the)g(v)-5 b(alue)19 b(for)g Fo(X)f Fs(has)h(c)n(hanged)f(to)h(the)h Fo($\(apply)40 b(..\))739 3543 y Fs(form,)27 b(but)h(otherwise)f(the)h(result)f(is)h (unc)n(hanged)f(b)r(ecause)g(it)h(it)g(prin)n(ted)f(immediately)-7 b(.)739 3730 y Fo(osh>)42 b(FILES[])f(=)i(a)g(b)g(c)739 3829 y(-)g(:)g()739 3929 y(osh>)f(SUF)g(=)h(.c)739 4028 y(-)g(:)g(".c")739 4128 y(osh>)f(X)h(=)g($`\(addsuffix)c ($\(SUF\),)h($\(FILES\)\))739 4228 y(-)j(:)g($\(apply)e (global.addsuffix)c(...\))739 4327 y(osh>)42 b(println\($"$X"\))81 b(#)43 b(force)f(the)g(evaluation)e(and)i(print)739 4427 y(a.c)g(b.c)h(c.c)863 4613 y Fs(Ho)n(w)n(ev)n(er,)27 b(consider)g(what)h(happ)r(ens)g(if)h(w)n(e)f(rede\014ne)f(the)i Fo(FILES)d Fs(v)-5 b(ariable)27 b(after)h(the)739 4712 y(de\014nition)h(for)g Fo(X)p Fs(.)g(In)g(the)g(follo)n(wing)f(sample,) h(the)h(result)f(c)n(hanges)e(b)r(ecause)i(ev)-5 b(aluation)739 4812 y(o)r(ccurs)27 b Fi(after)37 b Fs(the)28 b(v)-5 b(alues)27 b(for)g Fo(FILES)f Fs(has)h(b)r(een)h(rede\014ned.)739 4998 y Fo(osh>)42 b(FILES[])f(=)i(a)g(b)g(c)p eop end %%Page: 247 247 TeXDict begin 247 246 bop 291 282 a @beginspecial @setspecial @endspecial Fp(B.3.)64 b(DOLLAR)27 b(MODIFIERS)1664 b Fs(247)291 515 y Fo(-)43 b(:)g()291 615 y(osh>)f(SUF)g(=)h(.c)291 715 y(-)g(:)g(".c")291 814 y(osh>)f(X)h(=)g($`\(addsuffix)38 b($\(SUF\),)j($\(FILES\)\))291 914 y(-)i(:)g($\(apply)e(global.addsuffi)o(x)d(...\))291 1013 y(osh>)k(SUF)g(=)h(.x)291 1113 y(osh>)f(FILES[])e(=)j(1)h(2)f(3) 291 1213 y(osh>)f(println\($"$X"\))81 b(#)43 b(force)f(the)g (evaluation)d(and)k(print)291 1312 y(1.x)f(2.x)g(3.x)415 1495 y Fs(In)25 b(some)f(cases,)h(more)f(explicit)h(con)n(trol)f(is)g (desired)h(o)n(v)n(er)e(ev)-5 b(aluation.)35 b(F)-7 b(or)24 b(example,)291 1595 y(w)n(e)g(ma)n(y)h(wish)g(to)g(ev)-5 b(aluate)25 b Fo(SUF)f Fs(early)-7 b(,)25 b(but)h(allo)n(w)e(for)h(c)n (hanges)f(to)h(the)h Fo(FILES)d Fs(v)-5 b(ariable.)291 1694 y(The)27 b Fo($,\(SUF\))e Fs(expression)h(forces)h(early)f(ev)-5 b(aluation.)291 1877 y Fo(osh>)42 b(FILES[])e(=)j(a)h(b)f(c)291 1976 y(-)g(:)g()291 2076 y(osh>)f(SUF)g(=)h(.c)291 2176 y(-)g(:)g(".c")291 2275 y(osh>)f(X)h(=)g($`\(addsuffix)38 b($,\(SUF\),)j($\(FILES\)\))291 2375 y(-)i(:)g($\(apply)e (global.addsuffi)o(x)d(...\))291 2475 y(osh>)k(SUF)g(=)h(.x)291 2574 y(osh>)f(FILES[])e(=)j(1)h(2)f(3)291 2674 y(osh>)f (println\($"$X"\))81 b(#)43 b(force)f(the)g(evaluation)d(and)k(print) 291 2773 y(1.c)f(2.c)g(3.c)p eop end %%Page: 248 248 TeXDict begin 248 247 bop 739 282 a @beginspecial @setspecial @endspecial 709 x Fr(Index)739 1506 y Fs({absname,)26 b @beginspecial @setspecial @endspecial(229)p @beginspecial @setspecial @endspecial 739 1605 a({all-dep)r(endencies,)h @beginspecial @setspecial @endspecial(228)p @beginspecial @setspecial @endspecial 739 1705 a({con\014gure,)f @beginspecial @setspecial @endspecial(227)p @beginspecial @setspecial @endspecial 739 1805 a({dep)r(end,)i @beginspecial @setspecial @endspecial(227)p @beginspecial @setspecial @endspecial 739 1905 a({dotomak)n(e,)e @beginspecial @setspecial @endspecial(228)p @beginspecial @setspecial @endspecial 739 2005 a({force-dotomak)n(e,)f @beginspecial @setspecial @endspecial(227)p @beginspecial @setspecial @endspecial 739 2104 a({install,)i @beginspecial @setspecial @endspecial(229)p @beginspecial @setspecial @endspecial 739 2204 a({install-all,)f @beginspecial @setspecial @endspecial(229)p @beginspecial @setspecial @endspecial 739 2304 a({install-force,)g @beginspecial @setspecial @endspecial(229)p @beginspecial @setspecial @endspecial 739 2404 a({output-at-end,)h @beginspecial @setspecial @endspecial(225)p @beginspecial @setspecial @endspecial 739 2504 a({output-normal,)f @beginspecial @setspecial @endspecial(224)p @beginspecial @setspecial @endspecial 739 2603 a({output-only-errors,)e @beginspecial @setspecial @endspecial(225)p @beginspecial @setspecial @endspecial 739 2703 a({output-p)r(ostp)r(one,)j @beginspecial @setspecial @endspecial(224)p @beginspecial @setspecial @endspecial 739 2803 a({prin)n(t-dep)r(endencies,)g @beginspecial @setspecial @endspecial(228)p @beginspecial @setspecial @endspecial 739 2903 a({prin)n(t-exit,)g @beginspecial @setspecial @endspecial(224)p @beginspecial @setspecial @endspecial 739 3003 a({prin)n(t-status,)f @beginspecial @setspecial @endspecial(224)p @beginspecial @setspecial @endspecial 739 3102 a({progress,)f @beginspecial @setspecial @endspecial(224)p @beginspecial @setspecial @endspecial 739 3202 a({sho)n(w-dep)r(endencies,)h @beginspecial @setspecial @endspecial(228)p @beginspecial @setspecial @endspecial 739 3302 a({v)n(erb)r(ose,)g @beginspecial @setspecial @endspecial(224)p @beginspecial @setspecial @endspecial 739 3402 a({v)n(erb)r(ose-dep)r(endencies,)g @beginspecial @setspecial @endspecial(228)p @beginspecial @setspecial @endspecial 739 3502 a(-P)-7 b(,)27 b @beginspecial @setspecial @endspecial(226)p @beginspecial @setspecial @endspecial 739 3601 a(-R,)g @beginspecial @setspecial @endspecial(227)p @beginspecial @setspecial @endspecial 739 3701 a(-S,)g @beginspecial @setspecial @endspecial(223)p @beginspecial @setspecial @endspecial 739 3801 a(-U,)h @beginspecial @setspecial @endspecial(227)p @beginspecial @setspecial @endspecial 739 3901 a(-j,)g @beginspecial @setspecial @endspecial(228)p @beginspecial @setspecial @endspecial 739 4001 a(-k,)f @beginspecial @setspecial @endspecial(226)p @beginspecial @setspecial @endspecial 739 4100 a(-n,)g @beginspecial @setspecial @endspecial(226)p @beginspecial @setspecial @endspecial 739 4200 a(-o,)g @beginspecial @setspecial @endspecial(225)p @beginspecial @setspecial @endspecial 739 4300 a(-p,)g @beginspecial @setspecial @endspecial(226)p @beginspecial @setspecial @endspecial 739 4400 a(-s,)g @beginspecial @setspecial @endspecial(223)p @beginspecial @setspecial @endspecial 739 4499 a(-t,)h @beginspecial @setspecial @endspecial(227)p @beginspecial @setspecial @endspecial 739 4599 a(-w,)f @beginspecial @setspecial @endspecial(224)p @beginspecial @setspecial @endspecial 739 4699 a(.BUILDORDER,)h @beginspecial @setspecial @endspecial(136)p @beginspecial @setspecial @endspecial 739 4799 a(.BUILD)p 1033 4799 25 4 v 30 w(BEGIN,)g @beginspecial @setspecial @endspecial(195)p @beginspecial @setspecial @endspecial 739 4899 a(.BUILD)p 1033 4899 V 30 w(F)-9 b(AILURE,)28 b @beginspecial @setspecial @endspecial(195)p @beginspecial @setspecial @endspecial 739 4998 a(.BUILD)p 1033 4998 V 30 w(SUCCESS,)g @beginspecial @setspecial @endspecial(195)p @beginspecial @setspecial @endspecial 2316 1506 a(.DEF)-9 b(A)n(UL)i(T,)28 b @beginspecial @setspecial @endspecial(95)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(100)p @beginspecial @setspecial @endspecial 2316 1606 a(.INCLUDE,)h @beginspecial @setspecial @endspecial(96)p @beginspecial @setspecial @endspecial 2316 1706 a(.MEMO,)f @beginspecial @setspecial @endspecial(57)p @beginspecial @setspecial @endspecial 2316 1806 a(.ORDER,)h @beginspecial @setspecial @endspecial(136)p @beginspecial @setspecial @endspecial 2316 1906 a(.PHONY,)g @beginspecial @setspecial @endspecial(72)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(96)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(99)p @beginspecial @setspecial @endspecial({)p @beginspecial @setspecial @endspecial(101)p @beginspecial @setspecial @endspecial 2316 2006 a(.R)n(ULE,)h @beginspecial @setspecial @endspecial(72)p @beginspecial @setspecial @endspecial 2316 2106 a(.SCANNER,)h @beginspecial @setspecial @endspecial(37)p @beginspecial @setspecial @endspecial(,)d @beginspecial @setspecial @endspecial(93)p @beginspecial @setspecial @endspecial(,)h @beginspecial @setspecial @endspecial(98)p @beginspecial @setspecial @endspecial 2316 2206 a(.ST)-7 b(A)g(TIC,)29 b @beginspecial @setspecial @endspecial(56)p @beginspecial @setspecial @endspecial 2316 2306 a(.SUBDIRS,)g @beginspecial @setspecial @endspecial(30)p @beginspecial @setspecial @endspecial(,)e @beginspecial @setspecial @endspecial(95)p @beginspecial @setspecial @endspecial 2316 2406 a(.SUBDIRS)i(b)r(o)r(dies,)f @beginspecial @setspecial @endspecial(41)p @beginspecial @setspecial @endspecial 2316 2506 a(.omak)n(erc,)e @beginspecial @setspecial @endspecial(231)p @beginspecial @setspecial @endspecial 2316 2607 a(:e\013ects:,)i @beginspecial @setspecial @endspecial(92)p @beginspecial @setspecial @endspecial 2316 2707 a(:exists:,)g @beginspecial @setspecial @endspecial(91)p @beginspecial @setspecial @endspecial 2316 2807 a(:k)n(ey:,)f @beginspecial @setspecial @endspecial(57)p @beginspecial @setspecial @endspecial 2316 2907 a(:scanner:,)g @beginspecial @setspecial @endspecial(94)p @beginspecial @setspecial @endspecial 2316 3007 a(:v)-5 b(alue:,)28 b @beginspecial @setspecial @endspecial(92)p @beginspecial @setspecial @endspecial 2316 3107 a($&,)f @beginspecial @setspecial @endspecial(245)p @beginspecial @setspecial @endspecial 2316 3207 a($*,)g @beginspecial @setspecial @endspecial(89)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(245)p @beginspecial @setspecial @endspecial 2316 3307 a($+,)g @beginspecial @setspecial @endspecial(89)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(245)p @beginspecial @setspecial @endspecial 2316 3407 a($<,)h @beginspecial @setspecial @endspecial(89)p @beginspecial @setspecial @endspecial(,)e @beginspecial @setspecial @endspecial(245)p @beginspecial @setspecial @endspecial 2316 3507 a($>,)i @beginspecial @setspecial @endspecial(245)p @beginspecial @setspecial @endspecial 2316 3607 a($@,)f @beginspecial @setspecial @endspecial(89)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(245)p @beginspecial @setspecial @endspecial 2316 3708 a($^,)g @beginspecial @setspecial @endspecial(89)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(245)p @beginspecial @setspecial @endspecial 2316 3898 a(ABOR)-7 b(T)p 2621 3898 V 30 w(ON)p 2778 3898 V 30 w(COMMAND)p 3272 3898 V 30 w(ERR)n(OR,)2648 3998 y @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 2316 4098 a(ABOR)g(T)p 2621 4098 V 30 w(ON)p 2778 4098 V 30 w(DEPENDENCY)p 3408 4098 V 29 w(ERR)n(ORS,)2648 4198 y @beginspecial @setspecial @endspecial(209)p @beginspecial @setspecial @endspecial 2316 4298 a(absname,)27 b @beginspecial @setspecial @endspecial(131)p @beginspecial @setspecial @endspecial 2316 4398 a(A)n(C)p 2441 4398 V 30 w(MSG)p 2658 4398 V 30 w(CHECKING,)h @beginspecial @setspecial @endspecial(217)p @beginspecial @setspecial @endspecial 2316 4498 a(A)n(C)p 2441 4498 V 30 w(MSG)p 2658 4498 V 30 w(ERR)n(OR,)f @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 2316 4598 a(A)n(C)p 2441 4598 V 30 w(MSG)p 2658 4598 V 30 w(RESUL)-7 b(T,)28 b @beginspecial @setspecial @endspecial(217)p @beginspecial @setspecial @endspecial 2316 4698 a(A)n(C)p 2441 4698 V 30 w(MSG)p 2658 4698 V 30 w(W)-9 b(ARN,)29 b @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 2316 4798 a(A)n(C)p 2441 4798 V 30 w(TR)-7 b(Y)p 2647 4798 V 30 w(COMPILE,)27 b @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 2316 4898 a(A)n(C)p 2441 4898 V 30 w(TR)-7 b(Y)p 2647 4898 V 30 w(LINK,)28 b @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 2316 4998 a(A)n(C)p 2441 4998 V 30 w(TR)-7 b(Y)p 2647 4998 V 30 w(R)n(UN,)29 b @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 2109 5208 a(248)p eop end %%Page: 249 249 TeXDict begin 249 248 bop 291 282 a @beginspecial @setspecial @endspecial Fp(INDEX)2465 b Fs(249)291 515 y(accept,)27 b @beginspecial @setspecial @endspecial(156)p @beginspecial @setspecial @endspecial 291 615 a(add,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 291 715 a(add-pro)5 b(ject-directories,)24 b @beginspecial @setspecial @endspecial(145)p @beginspecial @setspecial @endspecial 291 815 a(add-wrapp)r(er,)i @beginspecial @setspecial @endspecial(118)p @beginspecial @setspecial @endspecial 291 916 a(addpre\014x,)h @beginspecial @setspecial @endspecial(117)p @beginspecial @setspecial @endspecial 291 1016 a(addsu\016x,)g @beginspecial @setspecial @endspecial(116)p @beginspecial @setspecial @endspecial 291 1116 a(addsu\016xes,)g @beginspecial @setspecial @endspecial(116)p @beginspecial @setspecial @endspecial 291 1216 a(aliases,)f @beginspecial @setspecial @endspecial(222)p @beginspecial @setspecial @endspecial 291 1316 a(and,)h @beginspecial @setspecial @endspecial(105)p @beginspecial @setspecial @endspecial 291 1416 a(apply)-7 b(,)27 b @beginspecial @setspecial @endspecial(125)p @beginspecial @setspecial @endspecial 291 1516 a(apply)n(a,)f @beginspecial @setspecial @endspecial(125)p @beginspecial @setspecial @endspecial 291 1616 a(AR,)i @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 291 1716 a(Arra)n(y)-7 b(,)26 b @beginspecial @setspecial @endspecial(187)p @beginspecial @setspecial @endspecial 291 1816 a(arra)n(y)-7 b(,)25 b @beginspecial @setspecial @endspecial(111)p @beginspecial @setspecial @endspecial 291 1916 a(arra)n(ys,)g @beginspecial @setspecial @endspecial(48)p @beginspecial @setspecial @endspecial 291 2016 a(AS,)j @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 291 2116 a(ASFLA)n(GS,)g @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 291 2216 a(ASOUT,)g @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 291 2316 a(asr,)e @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 291 2416 a(a)n(wk,)g @beginspecial @setspecial @endspecial(38)p @beginspecial @setspecial @endspecial(,)h @beginspecial @setspecial @endspecial(163)p @beginspecial @setspecial @endspecial 291 2607 a(basename,)f @beginspecial @setspecial @endspecial(130)p @beginspecial @setspecial @endspecial 291 2707 a(bg,)h @beginspecial @setspecial @endspecial(181)p @beginspecial @setspecial @endspecial 291 2807 a(BIBTEX,)g @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 291 2907 a(bind,)h @beginspecial @setspecial @endspecial(156)p @beginspecial @setspecial @endspecial 291 3007 a(break,)e @beginspecial @setspecial @endspecial(122)p @beginspecial @setspecial @endspecial 291 3107 a(build,)i @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 291 3207 a(build)g(mo)r(del,)g @beginspecial @setspecial @endspecial(29)p @beginspecial @setspecial @endspecial 291 3307 a(BUILD)p 562 3307 25 4 v 30 w(SUMMAR)-7 b(Y,)29 b @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 291 3407 a(BYTE)p 534 3407 V 29 w(ENABLED,)e @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 291 3598 a(c-escap)r(ed,)f @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 291 3698 a(CAMLP4,)h @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 291 3798 a(capitalize,)g @beginspecial @setspecial @endspecial(120)p @beginspecial @setspecial @endspecial 291 3898 a(case,)f @beginspecial @setspecial @endspecial(106)p @beginspecial @setspecial @endspecial 291 3998 a(cat,)h @beginspecial @setspecial @endspecial(161)p @beginspecial @setspecial @endspecial 291 4098 a(cats)g(and)g(dogs,)g @beginspecial @setspecial @endspecial(35)p @beginspecial @setspecial @endspecial 291 4198 a(CC,)g @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 291 4298 a(CCOUT,)g @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 291 4398 a(cd,)g @beginspecial @setspecial @endspecial(180)p @beginspecial @setspecial @endspecial 291 4498 a(CDLL)p 523 4498 V 30 w(IMPLIES)p 901 4498 V 29 w(ST)-7 b(A)g(TIC,)28 b @beginspecial @setspecial @endspecial(204)p @beginspecial @setspecial @endspecial 291 4598 a(CFLA)n(GS,)g @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 291 4698 a(CGeneratedFiles,)f @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 291 4798 a(Channel,)g @beginspecial @setspecial @endspecial(189)p @beginspecial @setspecial @endspecial 291 4898 a(c)n(hannel-name,)f @beginspecial @setspecial @endspecial(151)p @beginspecial @setspecial @endspecial 291 4998 a(Chec)n(kCHeader,)g @beginspecial @setspecial @endspecial(217)p @beginspecial @setspecial @endspecial 1868 515 a(Chec)n(kCLib,)h @beginspecial @setspecial @endspecial(217)p @beginspecial @setspecial @endspecial 1868 615 a(Chec)n(kProg,)e @beginspecial @setspecial @endspecial(217)p @beginspecial @setspecial @endspecial 1868 715 a(c)n(hmo)r(d,)j @beginspecial @setspecial @endspecial(143)p @beginspecial @setspecial @endspecial 1868 815 a(c)n(ho)n(wn,)f @beginspecial @setspecial @endspecial(144)p @beginspecial @setspecial @endspecial 1868 915 a(CL)p 1985 915 V 30 w(F)n(OUND,)h @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 1868 1015 a(class,)f @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 1868 1115 a(classes,)f @beginspecial @setspecial @endspecial(54)p @beginspecial @setspecial @endspecial 1868 1215 a(close,)h @beginspecial @setspecial @endspecial(150)p @beginspecial @setspecial @endspecial 1868 1314 a(cmp-v)n(ersions,)f @beginspecial @setspecial @endspecial(197)p @beginspecial @setspecial @endspecial 1868 1414 a(compare,)g @beginspecial @setspecial @endspecial(127)p @beginspecial @setspecial @endspecial 1868 1514 a(concat,)h @beginspecial @setspecial @endspecial(112)p @beginspecial @setspecial @endspecial 1868 1614 a(conditionals,)g @beginspecial @setspecial @endspecial(52)p @beginspecial @setspecial @endspecial 1868 1714 a(ConfMsgChec)n(king,)f @beginspecial @setspecial @endspecial(215)p @beginspecial @setspecial @endspecial 1868 1814 a(ConfMsgError,)f @beginspecial @setspecial @endspecial(216)p @beginspecial @setspecial @endspecial 1868 1914 a(ConfMsgF)-7 b(ound,)27 b @beginspecial @setspecial @endspecial(216)p @beginspecial @setspecial @endspecial 1868 2014 a(ConfMsgResult,)g @beginspecial @setspecial @endspecial(215)p @beginspecial @setspecial @endspecial 1868 2114 a(ConfMsgW)-7 b(arn,)27 b @beginspecial @setspecial @endspecial(216)p @beginspecial @setspecial @endspecial 1868 2214 a(ConfMsgY)-7 b(esNo,)27 b @beginspecial @setspecial @endspecial(216)p @beginspecial @setspecial @endspecial 1868 2313 a(connect,)g @beginspecial @setspecial @endspecial(156)p @beginspecial @setspecial @endspecial 1868 2413 a(constan)n(ts,)g @beginspecial @setspecial @endspecial(59)p @beginspecial @setspecial @endspecial 1868 2513 a(CPP)-7 b(,)27 b @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 1868 2613 a(CProgram,)e @beginspecial @setspecial @endspecial(205)p @beginspecial @setspecial @endspecial 1868 2713 a(CProgramCop)n(y)-7 b(,)24 b @beginspecial @setspecial @endspecial(205)p @beginspecial @setspecial @endspecial 1868 2813 a(CProgramInstall,)h @beginspecial @setspecial @endspecial(205)p @beginspecial @setspecial @endspecial 1868 2913 a(create-lazy-map,)g @beginspecial @setspecial @endspecial(125)p @beginspecial @setspecial @endspecial 1868 3013 a(create-map,)h @beginspecial @setspecial @endspecial(125)p @beginspecial @setspecial @endspecial 1868 3113 a(CWD,)i @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 1868 3213 a(CXX,)g @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 1868 3312 a(CXXFLA)n(GS,)h @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 1868 3412 a(CXXProgram,)c @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 1868 3512 a(CXXProgramInstall,)g @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 1868 3700 a(declare,)i @beginspecial @setspecial @endspecial(67)p @beginspecial @setspecial @endspecial 1868 3800 a(deco)r(de-uri,)g @beginspecial @setspecial @endspecial(115)p @beginspecial @setspecial @endspecial 1868 3900 a(default,)h @beginspecial @setspecial @endspecial(106)p @beginspecial @setspecial @endspecial 1868 3999 a(De\014neCommandV)-7 b(ars,)27 b @beginspecial @setspecial @endspecial(197)p @beginspecial @setspecial @endspecial 1868 4099 a(de\014ned,)h @beginspecial @setspecial @endspecial(108)p @beginspecial @setspecial @endspecial 1868 4199 a(de\014ned-en)n(v,)f @beginspecial @setspecial @endspecial(109)p @beginspecial @setspecial @endspecial 1868 4299 a(dep)r(endencies,)h @beginspecial @setspecial @endspecial(197)p @beginspecial @setspecial @endspecial 1868 4399 a(dep)r(endencies-all,)f @beginspecial @setspecial @endspecial(197)p @beginspecial @setspecial @endspecial 1868 4499 a(dep)r(endencies-prop)r(er,)g @beginspecial @setspecial @endspecial(197)p @beginspecial @setspecial @endspecial 1868 4599 a(digest,)g @beginspecial @setspecial @endspecial(133)p @beginspecial @setspecial @endspecial 1868 4699 a(digest-in-path,)g @beginspecial @setspecial @endspecial(133)p @beginspecial @setspecial @endspecial 1868 4799 a(digest-in-path-optional,)f @beginspecial @setspecial @endspecial(133)p @beginspecial @setspecial @endspecial 1868 4899 a(digest-optional,)g @beginspecial @setspecial @endspecial(133)p @beginspecial @setspecial @endspecial 1868 4998 a(Dir,)i @beginspecial @setspecial @endspecial(189)p @beginspecial @setspecial @endspecial eop end %%Page: 250 250 TeXDict begin 250 249 bop 739 282 a @beginspecial @setspecial @endspecial Fs(250)2464 b Fp(INDEX)739 515 y Fs(dir,)27 b @beginspecial @setspecial @endspecial(129)p @beginspecial @setspecial @endspecial 739 615 a(dirname,)g @beginspecial @setspecial @endspecial(131)p @beginspecial @setspecial @endspecial 739 715 a(dirof,)g @beginspecial @setspecial @endspecial(131)p @beginspecial @setspecial @endspecial 739 815 a(DIRSEP)-7 b(,)27 b @beginspecial @setspecial @endspecial(201)p @beginspecial @setspecial @endspecial 739 916 a(div,)h @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 739 1016 a(dup,)g @beginspecial @setspecial @endspecial(151)p @beginspecial @setspecial @endspecial 739 1116 a(dup2,)g @beginspecial @setspecial @endspecial(152)p @beginspecial @setspecial @endspecial 739 1216 a(D)n(VIPDFM,)g @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 739 1316 a(D)n(VIPDFMFLA)n(GS,)h @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 739 1416 a(D)n(VIPS,)f @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 739 1516 a(D)n(VIPSFLA)n(GS,)g @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 739 1616 a(DynamicCLibrary)-7 b(,)26 b @beginspecial @setspecial @endspecial(204)p @beginspecial @setspecial @endspecial 739 1716 a(DynamicCLibraryCop)n (y)-7 b(,)25 b @beginspecial @setspecial @endspecial(204)p @beginspecial @setspecial @endspecial 739 1816 a (DynamicCLibraryInstall,)h @beginspecial @setspecial @endspecial(204)p @beginspecial @setspecial @endspecial 739 1916 a(DynamicCXXLibrary)-7 b(,)27 b @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 739 2016 a(DynamicCXXLibraryCop)n(y)-7 b(,)26 b @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 739 2116 a(DynamicCXXLibraryInstall,)g @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 739 2307 a(ec)n(ho,)h @beginspecial @setspecial @endspecial(180)p @beginspecial @setspecial @endspecial 739 2407 a(else,)g @beginspecial @setspecial @endspecial(106)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(239)p @beginspecial @setspecial @endspecial 739 2507 a(elseif,)h @beginspecial @setspecial @endspecial(106)p @beginspecial @setspecial @endspecial(,)e @beginspecial @setspecial @endspecial(239)p @beginspecial @setspecial @endspecial 739 2607 a(EMPTY,)h @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 739 2707 a(enco)r(de-uri,)g @beginspecial @setspecial @endspecial(115)p @beginspecial @setspecial @endspecial 739 2807 a(eprin)n(t,)g @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 739 2907 a(eprin)n(tln,)h @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 739 3007 a(eprin)n(tv,)f @beginspecial @setspecial @endspecial(158)p @beginspecial @setspecial @endspecial 739 3107 a(eprin)n(tvln,)g @beginspecial @setspecial @endspecial(158)p @beginspecial @setspecial @endspecial 739 3207 a(eq,)g @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 739 3307 a(equal,)g @beginspecial @setspecial @endspecial(105)p @beginspecial @setspecial @endspecial 739 3407 a(Exception,)g @beginspecial @setspecial @endspecial(190)p @beginspecial @setspecial @endspecial 739 3507 a(EXE,)g @beginspecial @setspecial @endspecial(201)p @beginspecial @setspecial @endspecial 739 3607 a(exists-in-path,)g @beginspecial @setspecial @endspecial(133)p @beginspecial @setspecial @endspecial 739 3707 a(exit,)h @beginspecial @setspecial @endspecial(108)p @beginspecial @setspecial @endspecial 739 3808 a(exp)r(ort,)f @beginspecial @setspecial @endspecial(72)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(121)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 739 3908 a(EXT)p 923 3908 25 4 v 30 w(ASM,)i @beginspecial @setspecial @endspecial(201)p @beginspecial @setspecial @endspecial 739 4008 a(EXT)p 923 4008 V 30 w(DLL,)f @beginspecial @setspecial @endspecial(201)p @beginspecial @setspecial @endspecial 739 4108 a(EXT)p 923 4108 V 30 w(LIB,)g @beginspecial @setspecial @endspecial(201)p @beginspecial @setspecial @endspecial 739 4208 a(EXT)p 923 4208 V 30 w(OBJ,)f @beginspecial @setspecial @endspecial(201)p @beginspecial @setspecial @endspecial 739 4308 a(extends,)i @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 739 4498 a(fg,)g @beginspecial @setspecial @endspecial(181)p @beginspecial @setspecial @endspecial 739 4598 a(fgets,)f @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 739 4698 a(File,)h @beginspecial @setspecial @endspecial(189)p @beginspecial @setspecial @endspecial 739 4798 a(\014le,)g @beginspecial @setspecial @endspecial(129)p @beginspecial @setspecial @endspecial 739 4898 a(\014le-c)n(hec)n(k-sort,)d @beginspecial @setspecial @endspecial(137)p @beginspecial @setspecial @endspecial 739 4998 a(\014le-exists,)i @beginspecial @setspecial @endspecial(134)p @beginspecial @setspecial @endspecial 2316 515 a(\014le-sort,)g @beginspecial @setspecial @endspecial(136)p @beginspecial @setspecial @endspecial 2316 615 a(\014lter,)h @beginspecial @setspecial @endspecial(119)p @beginspecial @setspecial @endspecial 2316 715 a(\014lter-exists,)f @beginspecial @setspecial @endspecial(134)p @beginspecial @setspecial @endspecial 2316 815 a(\014lter-out,)h @beginspecial @setspecial @endspecial(119)p @beginspecial @setspecial @endspecial 2316 915 a(\014lter-prop)r(er-targets,)d @beginspecial @setspecial @endspecial(134)p @beginspecial @setspecial @endspecial 2316 1015 a(\014lter-targets,)h @beginspecial @setspecial @endspecial(134)p @beginspecial @setspecial @endspecial 2316 1115 a(\014nd,)i @beginspecial @setspecial @endspecial(147)p @beginspecial @setspecial @endspecial 2316 1215 a(\014nd-build-targets,)f @beginspecial @setspecial @endspecial(198)p @beginspecial @setspecial @endspecial 2316 1315 a(\014nd-in-path,)h @beginspecial @setspecial @endspecial(133)p @beginspecial @setspecial @endspecial 2316 1414 a(\014nd-in-path-optional,)f @beginspecial @setspecial @endspecial(133)p @beginspecial @setspecial @endspecial 2316 1514 a(\014nd-o)r(caml-targets-in-path-optional,)2648 1614 y @beginspecial @setspecial @endspecial(136)p @beginspecial @setspecial @endspecial 2316 1714 a(\014nd-targets-in-path,)f @beginspecial @setspecial @endspecial(135)p @beginspecial @setspecial @endspecial 2316 1814 a(\014nd-targets-in-path-optional,)f @beginspecial @setspecial @endspecial(135)p @beginspecial @setspecial @endspecial 2316 1914 a(Float,)j @beginspecial @setspecial @endspecial(185)p @beginspecial @setspecial @endspecial 2316 2014 a(\015oat,)f @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 2316 2113 a(\015ush,)h @beginspecial @setspecial @endspecial(151)p @beginspecial @setspecial @endspecial 2316 2213 a(fop)r(en,)g @beginspecial @setspecial @endspecial(149)p @beginspecial @setspecial @endspecial 2316 2313 a(foreac)n(h,)f @beginspecial @setspecial @endspecial(126)p @beginspecial @setspecial @endspecial 2316 2413 a(fprin)n(t,)h @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 2316 2513 a(fprin)n(tln,)g @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 2316 2613 a(fprin)n(tv,)g @beginspecial @setspecial @endspecial(158)p @beginspecial @setspecial @endspecial 2316 2713 a(fprin)n(tvln,)g @beginspecial @setspecial @endspecial(158)p @beginspecial @setspecial @endspecial 2316 2813 a(fsubst,)g @beginspecial @setspecial @endspecial(165)p @beginspecial @setspecial @endspecial 2316 2913 a(fullname,)g @beginspecial @setspecial @endspecial(131)p @beginspecial @setspecial @endspecial 2316 3013 a(F)-7 b(un,)29 b @beginspecial @setspecial @endspecial(187)p @beginspecial @setspecial @endspecial 2316 3113 a(fun,)g @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 2316 3212 a(functions,)f @beginspecial @setspecial @endspecial(49)p @beginspecial @setspecial @endspecial 2316 3400 a(GCC)p 2506 3400 V 30 w(F)n(OUND,)g @beginspecial @setspecial @endspecial(201)p @beginspecial @setspecial @endspecial 2316 3500 a(ge,)f @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 2316 3600 a(get-registry)-7 b(,)26 b @beginspecial @setspecial @endspecial(110)p @beginspecial @setspecial @endspecial 2316 3700 a(getc)n(har,)g @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 2316 3800 a(geten)n(v,)h @beginspecial @setspecial @endspecial(109)p @beginspecial @setspecial @endspecial 2316 3900 a(getgrgid,)f @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 2316 3999 a(getgrnam,)h @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 2316 4099 a(gethostb)n(yname,)g @beginspecial @setspecial @endspecial(154)p @beginspecial @setspecial @endspecial 2316 4199 a(getprotob)n(yname,)f @beginspecial @setspecial @endspecial(154)p @beginspecial @setspecial @endspecial 2316 4299 a(getp)n(w)n(en)n(ts,)h @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 2316 4399 a(getp)n(wnam,)g @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 2316 4499 a(getp)n(wuid,)h @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 2316 4599 a(gets,)f @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 2316 4699 a(getservb)n(yname,)f @beginspecial @setspecial @endspecial(155)p @beginspecial @setspecial @endspecial 2316 4799 a(gettimeofda)n(y)-7 b(,)27 b @beginspecial @setspecial @endspecial(175)p @beginspecial @setspecial @endspecial 2316 4899 a(getv)-5 b(ar,)27 b @beginspecial @setspecial @endspecial(111)p @beginspecial @setspecial @endspecial 2316 4998 a(glob,)g @beginspecial @setspecial @endspecial(139)p @beginspecial @setspecial @endspecial eop end %%Page: 251 251 TeXDict begin 251 250 bop 291 282 a @beginspecial @setspecial @endspecial Fp(INDEX)2465 b Fs(251)291 515 y(global.,)26 b @beginspecial @setspecial @endspecial(65)p @beginspecial @setspecial @endspecial 291 615 a(gr)p 371 615 25 4 v 28 w(gid,)i @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 291 715 a(gr)p 371 715 V 28 w(group,)f @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 291 814 a(gr)p 371 814 V 28 w(mem,)h @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 291 914 a(gr)p 371 914 V 28 w(name,)g @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 291 1013 a(grep,)e @beginspecial @setspecial @endspecial(161)p @beginspecial @setspecial @endspecial 291 1113 a(Group,)h @beginspecial @setspecial @endspecial(173)p @beginspecial @setspecial @endspecial 291 1213 a(gt,)g @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 291 1312 a(GXX)p 485 1312 V 30 w(F)n(OUND,)h @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 291 1492 a(history)-7 b(,)26 b @beginspecial @setspecial @endspecial(181)p @beginspecial @setspecial @endspecial 291 1591 a(HOME,)h @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 291 1691 a(homename,)g @beginspecial @setspecial @endspecial(132)p @beginspecial @setspecial @endspecial 291 1791 a(HOST,)g @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 291 1890 a(Host,)g @beginspecial @setspecial @endspecial(154)p @beginspecial @setspecial @endspecial 291 1990 a(h)n(tml-escap)r(ed,)g @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 291 2089 a(h)n(tml-pre-escap)r(ed,)f @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 291 2189 a(h)n(tml-string,)h @beginspecial @setspecial @endspecial(116)p @beginspecial @setspecial @endspecial 291 2368 a(id-escap)r(ed,)g @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 291 2468 a(if,)h @beginspecial @setspecial @endspecial(52)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(106)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(239)p @beginspecial @setspecial @endspecial 291 2568 a(ignoreeof,)g @beginspecial @setspecial @endspecial(222)p @beginspecial @setspecial @endspecial 291 2667 a(in,)h @beginspecial @setspecial @endspecial(130)p @beginspecial @setspecial @endspecial 291 2767 a(InChannel,)g @beginspecial @setspecial @endspecial(189)p @beginspecial @setspecial @endspecial 291 2866 a(include,)h @beginspecial @setspecial @endspecial(50)p @beginspecial @setspecial @endspecial(,)e @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 291 2966 a(INCLUDES,)i @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 291 3066 a(InetAddr,)g @beginspecial @setspecial @endspecial(154)p @beginspecial @setspecial @endspecial 291 3165 a(inheritance,)f @beginspecial @setspecial @endspecial(55)p @beginspecial @setspecial @endspecial 291 3265 a(input-line,)h @beginspecial @setspecial @endspecial(150)p @beginspecial @setspecial @endspecial 291 3365 a(INST)-7 b(ALL,)28 b @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 291 3464 a(In)n(t,)f @beginspecial @setspecial @endspecial(185)p @beginspecial @setspecial @endspecial 291 3564 a(in)n(t,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 291 3663 a(in)n(tersection,)f @beginspecial @setspecial @endspecial(118)p @beginspecial @setspecial @endspecial 291 3763 a(in)n(tersects,)g @beginspecial @setspecial @endspecial(119)p @beginspecial @setspecial @endspecial 291 3942 a(jobs,)h @beginspecial @setspecial @endspecial(181)p @beginspecial @setspecial @endspecial 291 4042 a(join,)g @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 291 4221 a(kill,)g @beginspecial @setspecial @endspecial(181)p @beginspecial @setspecial @endspecial 291 4401 a(land,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 291 4500 a(LA)-7 b(TEX,)27 b @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 291 4600 a(LaT)-7 b(eXDo)r(cumen)n(t,)27 b @beginspecial @setspecial @endspecial(214)p @beginspecial @setspecial @endspecial 291 4700 a(LaT)-7 b(eXDo)r(cumen)n(tCop)n(y)g(,)27 b @beginspecial @setspecial @endspecial(214)p @beginspecial @setspecial @endspecial 291 4799 a(LaT)-7 b(eXDo)r(cumen)n(tInstall,)27 b @beginspecial @setspecial @endspecial(214)p @beginspecial @setspecial @endspecial 291 4899 a(LA)-7 b(TEXFLA)n(GS,)28 b @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 291 4998 a(LD,)g @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 1868 515 a(LDFLA)n(GS,)g @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 1868 615 a(LDFLA)n(GS)p 2265 615 V 31 w(DLL,)f @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 1868 715 a(LDOUT,)h @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 1868 815 a(le,)g @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 1868 915 a(length,)g @beginspecial @setspecial @endspecial(112)p @beginspecial @setspecial @endspecial 1868 1015 a(LEX,)f @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 1868 1115 a(lex,)h @beginspecial @setspecial @endspecial(165)p @beginspecial @setspecial @endspecial 1868 1215 a(lex-searc)n(h,)e @beginspecial @setspecial @endspecial(166)p @beginspecial @setspecial @endspecial 1868 1314 a(Lexer,)h @beginspecial @setspecial @endspecial(167)p @beginspecial @setspecial @endspecial 1868 1414 a(LIB)p 2014 1414 V 30 w(F)n(OUND,)h @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 1868 1514 a(LIBS,)g @beginspecial @setspecial @endspecial(202)p @beginspecial @setspecial @endspecial 1868 1614 a(link,)g @beginspecial @setspecial @endspecial(143)p @beginspecial @setspecial @endspecial 1868 1714 a(link-order)e(sorting,)g @beginspecial @setspecial @endspecial(136)p @beginspecial @setspecial @endspecial 1868 1814 a(listen,)i @beginspecial @setspecial @endspecial(156)p @beginspecial @setspecial @endspecial 1868 1914 a(lnot,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 1868 2014 a(Lo)r(calCGeneratedFiles,)e @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial 1868 2114 a(Lo)r(calOCamlGeneratedFiles,)g @beginspecial @setspecial @endspecial(209)p @beginspecial @setspecial @endspecial 1868 2214 a(Lo)r(calT)-7 b(eX)n (GeneratedFiles,)26 b @beginspecial @setspecial @endspecial(214)p @beginspecial @setspecial @endspecial 1868 2313 a(Lo)r(cation,)h @beginspecial @setspecial @endspecial(190)p @beginspecial @setspecial @endspecial 1868 2413 a(lo)r(c)n(kf,)g @beginspecial @setspecial @endspecial(153)p @beginspecial @setspecial @endspecial 1868 2513 a(lor,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 1868 2613 a(lo)n(w)n(ercase,)e @beginspecial @setspecial @endspecial(120)p @beginspecial @setspecial @endspecial 1868 2713 a(ls,)j @beginspecial @setspecial @endspecial(140)p @beginspecial @setspecial @endspecial 1868 2813 a(lseek,)f @beginspecial @setspecial @endspecial(150)p @beginspecial @setspecial @endspecial 1868 2913 a(lsl,)h @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 1868 3013 a(lsr,)f @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 1868 3113 a(lstat,)h @beginspecial @setspecial @endspecial(141)p @beginspecial @setspecial @endspecial 1868 3213 a(lt,)g @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 1868 3312 a(lxor,)f @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 1868 3500 a(MA)n(CHINE,)h @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 1868 3600 a(MAKEINDEX,)g @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 1868 3700 a(Map,)f @beginspecial @setspecial @endspecial(184)p @beginspecial @setspecial @endspecial 1868 3800 a(mappre\014x,)g @beginspecial @setspecial @endspecial(117)p @beginspecial @setspecial @endspecial 1868 3900 a(mapsu\016x,)g @beginspecial @setspecial @endspecial(116)p @beginspecial @setspecial @endspecial 1868 3999 a(matc)n(h,)g @beginspecial @setspecial @endspecial(52)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(106)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(239)p @beginspecial @setspecial @endspecial 1868 4099 a(max,)h @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 1868 4199 a(mem,)h @beginspecial @setspecial @endspecial(118)p @beginspecial @setspecial @endspecial 1868 4299 a(MENHIR)p 2221 4299 V 30 w(A)-9 b(V)g(AILABLE,)28 b @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 1868 4399 a(MENHIR)p 2221 4399 V 30 w(ENABLED,)g @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 1868 4499 a(MENHIR)p 2221 4499 V 30 w(FLA)n(GS,)g @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 1868 4599 a(min,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 1868 4699 a(mkdir,)f @beginspecial @setspecial @endspecial(140)p @beginspecial @setspecial @endspecial 1868 4799 a(mk\014fo,)h @beginspecial @setspecial @endspecial(152)p @beginspecial @setspecial @endspecial 1868 4899 a(mo)r(d,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 1868 4998 a(m)n(ul,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial eop end %%Page: 252 252 TeXDict begin 252 251 bop 739 282 a @beginspecial @setspecial @endspecial Fs(252)2464 b Fp(INDEX)739 515 y Fs(NA)-7 b(TIVE)p 1070 515 25 4 v 30 w(ENABLED,)27 b @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 615 a(NCURSES)p 1138 615 V 30 w(A)-9 b(V)g(AILABLE,)28 b @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 739 715 a(NCURSES)p 1138 715 V 30 w(CFLA)n(GS,)g @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 739 815 a(NCURSES)p 1138 815 V 30 w(CLIBS,)g @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 739 915 a(NCURSES)p 1138 915 V 30 w(TERMH)p 1484 915 V 30 w(IN)p 1606 915 V 30 w(NCURSES,)1071 1015 y @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 739 1114 a(neg,)f @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 739 1214 a(No)r(de,)h @beginspecial @setspecial @endspecial(188)p @beginspecial @setspecial @endspecial 739 1314 a(NODENAME,)g @beginspecial @setspecial @endspecial(103)p @beginspecial @setspecial @endspecial 739 1414 a(not,)g @beginspecial @setspecial @endspecial(105)p @beginspecial @setspecial @endspecial 739 1514 a(n)n(th,)g @beginspecial @setspecial @endspecial(112)p @beginspecial @setspecial @endspecial 739 1614 a(n)n(th-hd,)g @beginspecial @setspecial @endspecial(113)p @beginspecial @setspecial @endspecial 739 1714 a(n)n(th-tl,)g @beginspecial @setspecial @endspecial(113)p @beginspecial @setspecial @endspecial 739 1814 a(Num)n(b)r(er,)g @beginspecial @setspecial @endspecial(185)p @beginspecial @setspecial @endspecial 739 2002 a(Ob)5 b(ject,)27 b @beginspecial @setspecial @endspecial(183)p @beginspecial @setspecial @endspecial 739 2102 a(ob)5 b(jects,)27 b @beginspecial @setspecial @endspecial(54)p @beginspecial @setspecial @endspecial 739 2201 a(o)r(caml-escap)r(ed,)f @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 739 2301 a(OCAML)p 1059 2301 V 30 w(BYTE)p 1327 2301 V 29 w(LINK)p 1565 2301 V 30 w(FLA)n(GS,)18 b @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 2401 a(OCAML)p 1059 2401 V 30 w(CLIBS,)27 b @beginspecial @setspecial @endspecial(209)p @beginspecial @setspecial @endspecial 739 2501 a(OCAML)p 1059 2501 V 30 w(LIB)p 1230 2501 V 29 w(FLA)n(GS,)h @beginspecial @setspecial @endspecial(209)p @beginspecial @setspecial @endspecial 739 2601 a(OCAML)p 1059 2601 V 30 w(LIBS,)f @beginspecial @setspecial @endspecial(209)p @beginspecial @setspecial @endspecial 739 2701 a(OCAML)p 1059 2701 V 30 w(LINK)p 1298 2701 V 29 w(FLA)n(GS,)h @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 2801 a(OCAML)p 1059 2801 V 30 w(NA)-7 b(TIVE)p 1415 2801 V 30 w(LINK)p 1654 2801 V 29 w(FLA)n(GS,)19 b @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 2901 a(OCAML)p 1059 2901 V 30 w(OTHER)p 1394 2901 V 29 w(LIBS,)27 b @beginspecial @setspecial @endspecial(209)p @beginspecial @setspecial @endspecial 739 3001 a(OCAMLC,)g @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 739 3101 a(OCAMLCFLA)n(GS,)h @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 3201 a(OCAMLDEP)-7 b(,)27 b @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 739 3301 a(o)r(camldep-omak)n(e,)f @beginspecial @setspecial @endspecial(210)p @beginspecial @setspecial @endspecial 739 3400 a(OCAMLDEP)p 1236 3400 V 29 w(MODULES,)i @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 739 3500 a(OCAMLDEP)p 1236 3500 V 29 w(MODULES)p 1686 3500 V 30 w(A)-9 b(V)g(AILABLE,)1071 3600 y @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 739 3700 a(OCAMLDEP)p 1236 3700 V 29 w(MODULES)p 1686 3700 V 30 w(ENABLED,)1071 3800 y @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 739 3899 a(OCAMLDEPFLA)n(GS,)27 b @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 3999 a(OCAMLFIND,)h @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 4099 a(OCAMLFIND)p 1268 4099 V 30 w(EXISTS,)g @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 739 4199 a(OCAMLFINDFLA)n(GS,)h @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 4299 a(OCAMLFLA)n(GS,)f @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 739 4399 a(OCamlGeneratedFiles,)e @beginspecial @setspecial @endspecial(209)p @beginspecial @setspecial @endspecial 739 4499 a(OCAMLINCLUDES,)i @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 739 4599 a(OCAMLLEX,)f @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 739 4699 a(OCAMLLEXFLA)n(GS,)g @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 739 4799 a(OCamlLibrary)-7 b(,)25 b @beginspecial @setspecial @endspecial(211)p @beginspecial @setspecial @endspecial 739 4899 a(OCamlLibraryCop)n(y)-7 b(,)25 b @beginspecial @setspecial @endspecial(212)p @beginspecial @setspecial @endspecial 739 4998 a(OCamlLibraryInstall,)g @beginspecial @setspecial @endspecial(212)p @beginspecial @setspecial @endspecial 2316 515 a(OCAMLLINK,)j @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 2316 615 a(OCAMLMKTOP)-7 b(,)27 b @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 2316 715 a(OCAMLOPT,)g @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 2316 815 a(OCAMLOPT)p 2818 815 V 29 w(EXISTS,)h @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 2316 915 a(OCAMLOPTFLA)n(GS,)f @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 2316 1015 a(OCAMLOPTLINK,)g @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 2316 1115 a(OCamlP)n(ac)n(k)-5 b(age,)25 b @beginspecial @setspecial @endspecial(211)p @beginspecial @setspecial @endspecial 2316 1215 a(OCAMLP)-7 b(A)n(CKS,)27 b @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 2316 1314 a(OCAMLPPFLA)n(GS,)g @beginspecial @setspecial @endspecial(208)p @beginspecial @setspecial @endspecial 2316 1414 a(OCamlProgram,)e @beginspecial @setspecial @endspecial(212)p @beginspecial @setspecial @endspecial 2316 1514 a(OCamlProgramCop)n(y)-7 b(,)24 b @beginspecial @setspecial @endspecial(212)p @beginspecial @setspecial @endspecial 2316 1614 a(OCamlProgramInstall,)g @beginspecial @setspecial @endspecial(212)p @beginspecial @setspecial @endspecial 2316 1714 a(OCAML)-7 b(Y)g(A)n(CC,)28 b @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 2316 1814 a(OCAML)-7 b(Y)g(A)n(CCFLA)n(GS,)28 b @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 2316 1914 a(OMAKE)p 2646 1914 V 29 w(VERSION,)g @beginspecial @setspecial @endspecial(103)p @beginspecial @setspecial @endspecial 2316 2014 a(OMak)n(e\014le,)f @beginspecial @setspecial @endspecial(26)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(30)p @beginspecial @setspecial @endspecial 2316 2114 a(OMAKEFLA)n(GS,)h @beginspecial @setspecial @endspecial(229)p @beginspecial @setspecial @endspecial 2316 2214 a(OMak)n(eFlags,)f @beginspecial @setspecial @endspecial(196)p @beginspecial @setspecial @endspecial 2316 2313 a(OMAKELIB,)h @beginspecial @setspecial @endspecial(230)p @beginspecial @setspecial @endspecial 2316 2413 a(OMAKEP)-7 b(A)g(TH,)27 b @beginspecial @setspecial @endspecial(103)p @beginspecial @setspecial @endspecial 2316 2513 a(OMak)n(ero)r(ot,)f @beginspecial @setspecial @endspecial(26)p @beginspecial @setspecial @endspecial(,)h @beginspecial @setspecial @endspecial(30)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 2316 2613 a(OMak)n(eV)-7 b(ersion,)26 b @beginspecial @setspecial @endspecial(196)p @beginspecial @setspecial @endspecial 2316 2713 a(op)r(en,)i @beginspecial @setspecial @endspecial(50)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 2316 2813 a(op)r(en-in-string,)g @beginspecial @setspecial @endspecial(149)p @beginspecial @setspecial @endspecial 2316 2913 a(op)r(en-out-string,)g @beginspecial @setspecial @endspecial(149)p @beginspecial @setspecial @endspecial 2316 3013 a(or,)g @beginspecial @setspecial @endspecial(105)p @beginspecial @setspecial @endspecial 2316 3113 a(OS)p 2432 3113 V 30 w(VERSION,)g @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 2316 3213 a(OSTYPE,)g @beginspecial @setspecial @endspecial(103)p @beginspecial @setspecial @endspecial 2316 3312 a(out-con)n(ten)n(ts,)g @beginspecial @setspecial @endspecial(149)p @beginspecial @setspecial @endspecial 2316 3412 a(OutChannel,)h @beginspecial @setspecial @endspecial(189)p @beginspecial @setspecial @endspecial 2316 3600 a(P)n(arser,)d @beginspecial @setspecial @endspecial(169)p @beginspecial @setspecial @endspecial 2316 3700 a(P)n(asswd,)h @beginspecial @setspecial @endspecial(172)p @beginspecial @setspecial @endspecial 2316 3800 a(P)-7 b(A)g(THSEP)g(,)27 b @beginspecial @setspecial @endspecial(201)p @beginspecial @setspecial @endspecial 2316 3900 a(PDFLA)-7 b(TEX,)28 b @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 2316 3999 a(PDFLA)-7 b(TEXFLA)n(GS,)28 b @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 2316 4099 a(PID,)g @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 2316 4199 a(pip)r(e,)h @beginspecial @setspecial @endspecial(152)p @beginspecial @setspecial @endspecial 2316 4299 a(prin)n(t,)f @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 2316 4399 a(prin)n(tln,)g @beginspecial @setspecial @endspecial(157)p @beginspecial @setspecial @endspecial 2316 4499 a(prin)n(tv,)g @beginspecial @setspecial @endspecial(158)p @beginspecial @setspecial @endspecial 2316 4599 a(prin)n(tvln,)g @beginspecial @setspecial @endspecial(158)p @beginspecial @setspecial @endspecial 2316 4699 a(priv)-5 b(ate.,)28 b @beginspecial @setspecial @endspecial(63)p @beginspecial @setspecial @endspecial 2316 4799 a(pro)5 b(ject-directories,)25 b @beginspecial @setspecial @endspecial(199)p @beginspecial @setspecial @endspecial 2316 4899 a(prompt,)j @beginspecial @setspecial @endspecial(221)p @beginspecial @setspecial @endspecial 2316 4998 a(prompt-in)n(visible,)f @beginspecial @setspecial @endspecial(174)p @beginspecial @setspecial @endspecial eop end %%Page: 253 253 TeXDict begin 253 252 bop 291 282 a @beginspecial @setspecial @endspecial Fp(INDEX)2465 b Fs(253)291 515 y(prompt-in)n(visible-b)r (egin,)26 b @beginspecial @setspecial @endspecial(174)p @beginspecial @setspecial @endspecial 291 615 a(prompt-in)n (visible-end,)g @beginspecial @setspecial @endspecial(174)p @beginspecial @setspecial @endspecial 291 715 a(protected.,)h @beginspecial @setspecial @endspecial(66)p @beginspecial @setspecial @endspecial 291 815 a(Proto)r(col,)e @beginspecial @setspecial @endspecial(154)p @beginspecial @setspecial @endspecial 291 916 a(public.,)j @beginspecial @setspecial @endspecial(66)p @beginspecial @setspecial @endspecial 291 1016 a(p)n(w)p 400 1016 25 4 v 29 w(dir,)g @beginspecial @setspecial @endspecial(172)p @beginspecial @setspecial @endspecial 291 1116 a(p)n(w)p 400 1116 V 29 w(gecos,)f @beginspecial @setspecial @endspecial(172)p @beginspecial @setspecial @endspecial 291 1216 a(p)n(w)p 400 1216 V 29 w(gid,)h @beginspecial @setspecial @endspecial(172)p @beginspecial @setspecial @endspecial 291 1316 a(p)n(w)p 400 1316 V 29 w(name,)g @beginspecial @setspecial @endspecial(172)p @beginspecial @setspecial @endspecial 291 1416 a(p)n(w)p 400 1416 V 29 w(passwd,)f @beginspecial @setspecial @endspecial(172)p @beginspecial @setspecial @endspecial 291 1516 a(p)n(w)p 400 1516 V 29 w(shell,)h @beginspecial @setspecial @endspecial(172)p @beginspecial @setspecial @endspecial 291 1616 a(p)n(w)p 400 1616 V 29 w(uid,)g @beginspecial @setspecial @endspecial(172)p @beginspecial @setspecial @endspecial 291 1806 a(quotations,)e @beginspecial @setspecial @endspecial(48)p @beginspecial @setspecial @endspecial 291 1906 a(quote,)h @beginspecial @setspecial @endspecial(115)p @beginspecial @setspecial @endspecial 291 2006 a(quote-argv,)e @beginspecial @setspecial @endspecial(115)p @beginspecial @setspecial @endspecial 291 2106 a(quoted)i(strings,)g @beginspecial @setspecial @endspecial(80)p @beginspecial @setspecial @endspecial 291 2297 a(raise,)f @beginspecial @setspecial @endspecial(108)p @beginspecial @setspecial @endspecial 291 2397 a(random,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 291 2497 a(random-init,)g @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 291 2597 a(read,)g @beginspecial @setspecial @endspecial(150)p @beginspecial @setspecial @endspecial 291 2697 a(READLINE)p 740 2697 V 29 w(A)-9 b(V)g(AILABLE,)28 b @beginspecial @setspecial @endspecial(218)p @beginspecial @setspecial @endspecial 291 2797 a(READLINE)p 740 2797 V 29 w(CFLA)n(GS,)g @beginspecial @setspecial @endspecial(219)p @beginspecial @setspecial @endspecial 291 2897 a(READLINE)p 740 2897 V 29 w(CLIBS,)g @beginspecial @setspecial @endspecial(219)p @beginspecial @setspecial @endspecial 291 2997 a(READLINE)p 740 2997 V 29 w(GNU,)h @beginspecial @setspecial @endspecial(219)p @beginspecial @setspecial @endspecial 291 3097 a(readlink,)d @beginspecial @setspecial @endspecial(143)p @beginspecial @setspecial @endspecial 291 3197 a(regular)f(expressions,)h @beginspecial @setspecial @endspecial(158)p @beginspecial @setspecial @endspecial 291 3297 a(rehash,)g @beginspecial @setspecial @endspecial(132)p @beginspecial @setspecial @endspecial 291 3398 a(remo)n(v)n(e-pro)5 b(ject-directories,)23 b @beginspecial @setspecial @endspecial(145)p @beginspecial @setspecial @endspecial 291 3498 a(remo)n(v)n(epre\014x,)i @beginspecial @setspecial @endspecial(117)p @beginspecial @setspecial @endspecial 291 3598 a(remo)n(v)n(esu\016x,)g @beginspecial @setspecial @endspecial(117)p @beginspecial @setspecial @endspecial 291 3698 a(rename,)h @beginspecial @setspecial @endspecial(142)p @beginspecial @setspecial @endspecial 291 3798 a(replace-n)n(th,)g @beginspecial @setspecial @endspecial(113)p @beginspecial @setspecial @endspecial 291 3898 a(replacesu\016xes,)g @beginspecial @setspecial @endspecial(117)p @beginspecial @setspecial @endspecial 291 3998 a(return,)h @beginspecial @setspecial @endspecial(49)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 291 4098 a(rev,)g @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 291 4198 a(rewind,)g @beginspecial @setspecial @endspecial(151)p @beginspecial @setspecial @endspecial 291 4298 a(R)n(OOT,)f @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 291 4398 a(ro)r(otname,)g @beginspecial @setspecial @endspecial(131)p @beginspecial @setspecial @endspecial 291 4498 a(Rule,)i @beginspecial @setspecial @endspecial(187)p @beginspecial @setspecial @endspecial 291 4598 a(rule,)f @beginspecial @setspecial @endspecial(199)p @beginspecial @setspecial @endspecial 291 4698 a(rule,)g(options,)g @beginspecial @setspecial @endspecial(91)p @beginspecial @setspecial @endspecial 291 4798 a(rule,)g(scoping,)g @beginspecial @setspecial @endspecial(97)p @beginspecial @setspecial @endspecial 291 4898 a(rules,)g(b)r(ounded)h(implicit,)g @beginspecial @setspecial @endspecial(90)p @beginspecial @setspecial @endspecial 291 4998 a(rules,)f(implicit,)h @beginspecial @setspecial @endspecial(90)p @beginspecial @setspecial @endspecial 1868 515 a(RunCProg,)e @beginspecial @setspecial @endspecial(216)p @beginspecial @setspecial @endspecial 1868 615 a(Run)n(timeException,)h @beginspecial @setspecial @endspecial(190)p @beginspecial @setspecial @endspecial 1868 803 a(scan,)g @beginspecial @setspecial @endspecial(161)p @beginspecial @setspecial @endspecial 1868 903 a(SCANNER)p 2283 903 V 30 w(MODE,)h @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 1868 1002 a(section,)f @beginspecial @setspecial @endspecial(50)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(91)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 1868 1102 a(section)g(rule,)h @beginspecial @setspecial @endspecial(91)p @beginspecial @setspecial @endspecial 1868 1202 a(select,)g @beginspecial @setspecial @endspecial(153)p @beginspecial @setspecial @endspecial 1868 1302 a(Sequence,)g @beginspecial @setspecial @endspecial(186)p @beginspecial @setspecial @endspecial 1868 1402 a(sequence-forall,)e @beginspecial @setspecial @endspecial(126)p @beginspecial @setspecial @endspecial 1868 1502 a(sequence-sort,)g @beginspecial @setspecial @endspecial(127)p @beginspecial @setspecial @endspecial 1868 1602 a(Service,)h @beginspecial @setspecial @endspecial(155)p @beginspecial @setspecial @endspecial 1868 1702 a(set,)h @beginspecial @setspecial @endspecial(118)p @beginspecial @setspecial @endspecial 1868 1802 a(set-close-on-exec-mo)r(de,)d @beginspecial @setspecial @endspecial(152)p @beginspecial @setspecial @endspecial 1868 1902 a(set-di\013,)j @beginspecial @setspecial @endspecial(119)p @beginspecial @setspecial @endspecial 1868 2001 a(set-non)n(blo)r(c)n(k,)e @beginspecial @setspecial @endspecial(152)p @beginspecial @setspecial @endspecial 1868 2101 a(seten)n(v,)h @beginspecial @setspecial @endspecial(110)p @beginspecial @setspecial @endspecial 1868 2201 a(setv)-5 b(ar,)27 b @beginspecial @setspecial @endspecial(111)p @beginspecial @setspecial @endspecial 1868 2301 a(Shell,)h @beginspecial @setspecial @endspecial(191)p @beginspecial @setspecial @endspecial 1868 2401 a(shell,)g @beginspecial @setspecial @endspecial(121)p @beginspecial @setspecial @endspecial 1868 2501 a(SNPRINTF)p 2305 2501 V 30 w(A)-9 b(V)g(AILABLE,)28 b @beginspecial @setspecial @endspecial(219)p @beginspecial @setspecial @endspecial 1868 2601 a(so)r(c)n(k)n(et,)f @beginspecial @setspecial @endspecial(155)p @beginspecial @setspecial @endspecial 1868 2701 a(sorting)f(\(link-order\),)h @beginspecial @setspecial @endspecial(136)p @beginspecial @setspecial @endspecial 1868 2801 a(split,)h @beginspecial @setspecial @endspecial(112)p @beginspecial @setspecial @endspecial 1868 2901 a(Stat,)g @beginspecial @setspecial @endspecial(141)p @beginspecial @setspecial @endspecial 1868 3000 a(stat,)g @beginspecial @setspecial @endspecial(141)p @beginspecial @setspecial @endspecial 1868 3100 a(stat-reset,)f @beginspecial @setspecial @endspecial(134)p @beginspecial @setspecial @endspecial 1868 3200 a(static.,)h @beginspecial @setspecial @endspecial(55)p @beginspecial @setspecial @endspecial 1868 3300 a(StaticCLibrary)-7 b(,)26 b @beginspecial @setspecial @endspecial(204)p @beginspecial @setspecial @endspecial 1868 3400 a(StaticCLibraryCop)n(y)-7 b(,)25 b @beginspecial @setspecial @endspecial(204)p @beginspecial @setspecial @endspecial 1868 3500 a(StaticCLibraryInstall,)h @beginspecial @setspecial @endspecial(204)p @beginspecial @setspecial @endspecial 1868 3600 a(StaticCOb)5 b(ject,)28 b @beginspecial @setspecial @endspecial(205)p @beginspecial @setspecial @endspecial 1868 3700 a(StaticCOb)5 b(jectCop)n(y)-7 b(,)27 b @beginspecial @setspecial @endspecial(205)p @beginspecial @setspecial @endspecial 1868 3800 a(StaticCOb)5 b(jectInstall,)27 b @beginspecial @setspecial @endspecial(205)p @beginspecial @setspecial @endspecial 1868 3900 a(StaticCXXLibrary)-7 b(,)27 b @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 1868 3999 a(StaticCXXLibraryCop)n (y)-7 b(,)26 b @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 1868 4099 a (StaticCXXLibraryInstall,)h @beginspecial @setspecial @endspecial(206)p @beginspecial @setspecial @endspecial 1868 4199 a(stderr,)g @beginspecial @setspecial @endspecial(149)p @beginspecial @setspecial @endspecial 1868 4299 a(stdin,)h @beginspecial @setspecial @endspecial(148)p @beginspecial @setspecial @endspecial 1868 4399 a(STDLIB,)g @beginspecial @setspecial @endspecial(103)p @beginspecial @setspecial @endspecial 1868 4499 a(stdout,)g @beginspecial @setspecial @endspecial(148)p @beginspecial @setspecial @endspecial 1868 4599 a(STDR)n(OOT,)f @beginspecial @setspecial @endspecial(200)p @beginspecial @setspecial @endspecial 1868 4699 a(stop,)g @beginspecial @setspecial @endspecial(181)p @beginspecial @setspecial @endspecial 1868 4799 a(String,)g @beginspecial @setspecial @endspecial(187)p @beginspecial @setspecial @endspecial 1868 4899 a(string,)g @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 1868 4998 a(string-escap)r(ed,)f @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial eop end %%Page: 254 254 TeXDict begin 254 253 bop 739 282 a @beginspecial @setspecial @endspecial Fs(254)2464 b Fp(INDEX)739 515 y Fs(string-length,)27 b @beginspecial @setspecial @endspecial(114)p @beginspecial @setspecial @endspecial 739 615 a(sub,)h @beginspecial @setspecial @endspecial(123)p @beginspecial @setspecial @endspecial 739 716 a(sub)r(dirs,)f @beginspecial @setspecial @endspecial(140)p @beginspecial @setspecial @endspecial 739 816 a(subrange,)f @beginspecial @setspecial @endspecial(113)p @beginspecial @setspecial @endspecial 739 916 a(su\016x,)i @beginspecial @setspecial @endspecial(132)p @beginspecial @setspecial @endspecial 739 1016 a(switc)n(h,)f @beginspecial @setspecial @endspecial(52)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(106)p @beginspecial @setspecial @endspecial 739 1116 a(symlink,)g @beginspecial @setspecial @endspecial(143)p @beginspecial @setspecial @endspecial 739 1216 a(SYSNAME,)h @beginspecial @setspecial @endspecial(103)p @beginspecial @setspecial @endspecial 739 1317 a(system,)f @beginspecial @setspecial @endspecial(120)p @beginspecial @setspecial @endspecial 739 1509 a(T)-7 b(arget,)26 b @beginspecial @setspecial @endspecial(187)p @beginspecial @setspecial @endspecial 739 1609 a(target,)h @beginspecial @setspecial @endspecial(198)p @beginspecial @setspecial @endspecial 739 1709 a(target-exists,)f @beginspecial @setspecial @endspecial(134)p @beginspecial @setspecial @endspecial 739 1809 a(target-is-prop)r(er,)f @beginspecial @setspecial @endspecial(134)p @beginspecial @setspecial @endspecial 739 1910 a(T)-7 b(AR)n(GETS,)27 b @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 739 2010 a(tell,)h @beginspecial @setspecial @endspecial(151)p @beginspecial @setspecial @endspecial 739 2110 a(test,)g @beginspecial @setspecial @endspecial(145)p @beginspecial @setspecial @endspecial 739 2210 a(TETEX2)p 1082 2210 25 4 v 28 w(ENABLED,)g @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 739 2310 a(TEXDEPS,)f @beginspecial @setspecial @endspecial(214)p @beginspecial @setspecial @endspecial 739 2410 a(T)-7 b(eX)n(GeneratedFiles,)27 b @beginspecial @setspecial @endspecial(214)p @beginspecial @setspecial @endspecial 739 2511 a(TEXINPUTS,)g @beginspecial @setspecial @endspecial(214)p @beginspecial @setspecial @endspecial 739 2611 a(TEXV)-9 b(ARS,)28 b @beginspecial @setspecial @endspecial(214)p @beginspecial @setspecial @endspecial 739 2711 a(tgetstr,)f @beginspecial @setspecial @endspecial(174)p @beginspecial @setspecial @endspecial 739 2811 a(this.,)h @beginspecial @setspecial @endspecial(64)p @beginspecial @setspecial @endspecial 739 2911 a(tmp\014le,)g @beginspecial @setspecial @endspecial(130)p @beginspecial @setspecial @endspecial 739 3011 a(truncate,)f @beginspecial @setspecial @endspecial(144)p @beginspecial @setspecial @endspecial 739 3112 a(try)-7 b(,)27 b @beginspecial @setspecial @endspecial(107)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(239)p @beginspecial @setspecial @endspecial 739 3212 a(T)-7 b(ryCompileC,)27 b @beginspecial @setspecial @endspecial(216)p @beginspecial @setspecial @endspecial 739 3312 a(T)-7 b(ryLinkC,)27 b @beginspecial @setspecial @endspecial(216)p @beginspecial @setspecial @endspecial 739 3412 a(T)-7 b(ryRunC,)27 b @beginspecial @setspecial @endspecial(216)p @beginspecial @setspecial @endspecial 739 3604 a(uge,)g @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 739 3704 a(ugt,)h @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 739 3805 a(ule,)g @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 739 3905 a(ult,)g @beginspecial @setspecial @endspecial(124)p @beginspecial @setspecial @endspecial 739 4005 a(umask,)f @beginspecial @setspecial @endspecial(144)p @beginspecial @setspecial @endspecial 739 4105 a(Un)n(buildableException,)g @beginspecial @setspecial @endspecial(190)p @beginspecial @setspecial @endspecial 739 4205 a(uncapitalize,)g @beginspecial @setspecial @endspecial(120)p @beginspecial @setspecial @endspecial 739 4305 a(unlink,)h @beginspecial @setspecial @endspecial(142)p @beginspecial @setspecial @endspecial 739 4406 a(unseten)n(v,)f @beginspecial @setspecial @endspecial(110)p @beginspecial @setspecial @endspecial 739 4506 a(upp)r(ercase,)g @beginspecial @setspecial @endspecial(120)p @beginspecial @setspecial @endspecial 739 4606 a(USE)p 909 4606 V 30 w(OCAMLFIND,)h @beginspecial @setspecial @endspecial(207)p @beginspecial @setspecial @endspecial 739 4706 a(USEPDFLA)-7 b(TEX,)28 b @beginspecial @setspecial @endspecial(213)p @beginspecial @setspecial @endspecial 739 4806 a(USER,)g @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 739 4998 a(v)-5 b(alue,)27 b @beginspecial @setspecial @endspecial(49)p @beginspecial @setspecial @endspecial(,)g @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 2316 515 a(v)-5 b(ariable)27 b(de\014nition,)h @beginspecial @setspecial @endspecial(229)p @beginspecial @setspecial @endspecial 2316 615 a(VERBOSE,)f @beginspecial @setspecial @endspecial(104)p @beginspecial @setspecial @endspecial 2316 715 a(V)-7 b(erb)r(oseChec)n(kCHeader,)26 b @beginspecial @setspecial @endspecial(217)p @beginspecial @setspecial @endspecial 2316 814 a(V)-7 b(erb)r(oseChec)n(kCLib,)27 b @beginspecial @setspecial @endspecial(217)p @beginspecial @setspecial @endspecial 2316 914 a(vmoun)n(t,)h @beginspecial @setspecial @endspecial(27)p @beginspecial @setspecial @endspecial(,)f @beginspecial @setspecial @endspecial(144)p @beginspecial @setspecial @endspecial 2316 1096 a(w)n(ait,)h @beginspecial @setspecial @endspecial(181)p @beginspecial @setspecial @endspecial 2316 1196 a(where,)f @beginspecial @setspecial @endspecial(132)p @beginspecial @setspecial @endspecial 2316 1296 a(whic)n(h,)h @beginspecial @setspecial @endspecial(132)p @beginspecial @setspecial @endspecial 2316 1395 a(while,)g @beginspecial @setspecial @endspecial(121)p @beginspecial @setspecial @endspecial(,)e @beginspecial @setspecial @endspecial(240)p @beginspecial @setspecial @endspecial 2316 1495 a(write,)i @beginspecial @setspecial @endspecial(150)p @beginspecial @setspecial @endspecial 2316 1678 a(xterm-escap)r(e,)f @beginspecial @setspecial @endspecial(174)p @beginspecial @setspecial @endspecial 2316 1777 a(xterm-escap)r(e-b)r(egin,)g @beginspecial @setspecial @endspecial(174)p @beginspecial @setspecial @endspecial 2316 1877 a(xterm-escap)r(e-end,)g @beginspecial @setspecial @endspecial(174)p @beginspecial @setspecial @endspecial 2316 2060 a(Y)-7 b(A)n(CC,)28 b @beginspecial @setspecial @endspecial(203)p @beginspecial @setspecial @endspecial eop end %%Page: 255 255 TeXDict begin 255 254 bop 291 282 a @beginspecial @setspecial @endspecial 150 x @beginspecial @setspecial @endspecial 706 x Fm(App)5 b(endix)64 b(C)291 1553 y Fr(References)291 1885 y @beginspecial @setspecial @endspecial 150 x Fl(C.1)135 b(See)45 b(Also)291 2216 y Fs(omak)n(e\(1\))26 b(\(Chapter)h @beginspecial @setspecial @endspecial(1)p @beginspecial @setspecial @endspecial(\),)h(osh\(1\))f(\(Chapter)g @beginspecial @setspecial @endspecial(15)p @beginspecial @setspecial @endspecial(\),)g(mak)n(e\(1\))291 2362 y @beginspecial @setspecial @endspecial 129 x Fl(C.2)135 b(V)-11 b(ersion)291 2673 y Fs(V)k(ersion:)36 b(0.9.8.5)26 b(of)h(August)h(7,)f(2007.)291 2814 y @beginspecial @setspecial @endspecial 133 x Fl(C.3)135 b(License)45 b(and)g(Cop)l(yrigh)l(t)314 3126 y Fs(c)291 3129 y Fj(\015)27 b Fs(2003-2006,)d(Mo)5 b(ja)n(v)n(e)26 b(Group,)h(Caltec)n(h)415 3229 y(This)22 b(program)f(is)h(free)g(soft)n(w)n(are;)g(y)n(ou)g(can)g(redistribute)g (it)h(and/or)d(mo)r(dify)j(it)g(under)291 3328 y(the)g(terms)h(of)f (the)h(GNU)g(General)f(Public)g(License)g(as)g(published)h(b)n(y)f(the) h(F)-7 b(ree)23 b(Soft)n(w)n(are)291 3428 y(F)-7 b(oundation;)27 b(v)n(ersion)f(2)h(of)h(the)g(License.)415 3527 y(This)20 b(program)d(is)j(distributed)g(in)g(the)g(hop)r(e)g(that)g(it)g(will)f (b)r(e)i(useful,)g(but)g(WITHOUT)291 3627 y(ANY)27 b(W)-9 b(ARRANTY;)27 b(without)g(ev)n(en)e(the)i(implied)f(w)n(arran)n(t)n(y)e (of)i(MER)n(CHANT)-7 b(ABIL-)291 3727 y(ITY)35 b(or)g(FITNESS)h(F)n(OR) f(A)h(P)-7 b(AR)g(TICULAR)36 b(PURPOSE.)e(See)i(the)f(GNU)i(General)291 3826 y(Public)27 b(License)g(for)g(more)g(details.)415 3926 y(Y)-7 b(ou)30 b(should)f(ha)n(v)n(e)f(receiv)n(ed)h(a)g(cop)n(y)f (of)i(the)g(GNU)g(General)f(Public)g(License)g(along)291 4026 y(with)23 b(this)h(program;)f(if)h(not,)g(write)f(to)h(the)f(F)-7 b(ree)23 b(Soft)n(w)n(are)f(F)-7 b(oundation,)24 b(Inc.,)h(675)d(Mass) 291 4125 y(Av)n(e,)27 b(Cam)n(bridge,)f(MA)i(02139,)e(USA.)291 4266 y @beginspecial @setspecial @endspecial 134 x Fl(C.4)135 b(Author)291 4582 y Fs(Jason)26 b(Hic)n(k)n(ey)-7 b(,)27 b(Aleksey)g(Nogin,)g Fi(et.)39 b(al.)291 4681 y Fs(Caltec)n(h)27 b(256-80)291 4781 y(P)n(asadena,)e(CA)j(91125,)d(USA)291 4880 y(Email:)36 b Fo(omake-devel@meta)o(pr)o(l.o)o(rg)291 4980 y Fs(WWW:)28 b @beginspecial @setspecial @endspecial Fo(http://www.cs.cal)o(te)o(ch.)o(ed)o(u/)1737 4959 y Fc(\030)1782 4980 y Fo(jyh)p @beginspecial @setspecial @endspecial 27 w Fs(and)f @beginspecial @setspecial @endspecial Fo(http://nogin.org/)o @beginspecial @setspecial @endspecial 1660 5208 a Fs(255)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF omake-0.9.8.5/doc/ps/omake-doc.dvi0000664000152300015230000334205410656155147014712 0ustar jyhjyh÷ƒ’À;èLaTeX Output (built with OMake)‹ÿÿÿÿïzpdf:docinfo << /Title () /Subject () /Creator (LaTeX with hyperref package) /Author () /Producer (dvipdfm) /Keywords () >> s\È ý®£8‘#ï.pdf:dest (page.1) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ò.pdf:obj @OBJpdfdocencoding << /Type /Encoding /Differences [24 /breve /caron /circumflex /dotaccent /hungarumlaut /ogonek /ring /tilde 39 /quotesingle 96 /grave 128 /bullet /dagger /daggerdbl /ellipsis /emdash /endash /florin /fraction /guilsinglleft /guilsinglright /minus /perthousand /quotedblbase /quotedblleft /quotedblright /quoteleft /quoteright /quotesinglbase /trademark /fi /fl /Lslash /OE /Scaron /Ydieresis /Zcaron /dotlessi /lslash /oe /scaron /zcaron 164 /currency 166 /brokenbar 168 /dieresis /copyright /ordfeminine 172 /logicalnot /.notdef /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu 183 /periodcentered /cedilla /onesuperior /ordmasculine 188 /onequarter /onehalf /threequarters 192 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] >> ïWpdf:obj @OBJZaDb << /Type /Font /Subtype /Type1 /Name /ZaDb /BaseFont /ZapfDingbats >> ïqpdf:obj @OBJHelv << /Type /Font /Subtype /Type1 /Name /Helv /BaseFont /Helvetica /Encoding @OBJpdfdocencoding >> ïDpdf:outline 0 << /Title (Guide) /A << /S /GoTo /D (chapter.1) >> >> ïUpdf:outline 0 << /Title (OMake quickstart guide) /A << /S /GoTo /D (chapter.2) >> >> ïLpdf:outline 1 << /Title (Description) /A << /S /GoTo /D (section.2.1) >> >> ïcpdf:outline 2 << /Title (Automatic dependency analysis) /A << /S /GoTo /D (subsection.2.1.1) >> >> ïgpdf:outline 2 << /Title (Content-based dependency analysis) /A << /S /GoTo /D (subsection.2.1.2) >> >> ïepdf:outline 1 << /Title (For users already familiar with make) /A << /S /GoTo /D (section.2.2) >> >> ï[pdf:outline 1 << /Title (Building a small C program) /A << /S /GoTo /D (section.2.3) >> >> ïPpdf:outline 1 << /Title (Larger projects) /A << /S /GoTo /D (section.2.4) >> >> ïOpdf:outline 1 << /Title (Subdirectories) /A << /S /GoTo /D (section.2.5) >> >> ïYpdf:outline 1 << /Title (Other things to consider) /A << /S /GoTo /D (section.2.6) >> >> ïXpdf:outline 1 << /Title (Building OCaml programs) /A << /S /GoTo /D (section.2.7) >> >> ïbpdf:outline 1 << /Title (The OMakefile and OMakeroot files) /A << /S /GoTo /D (section.2.8) >> >> ïYpdf:outline 1 << /Title (Multiple version support) /A << /S /GoTo /D (section.2.9) >> >> ïGpdf:outline 1 << /Title (Notes) /A << /S /GoTo /D (section.2.10) >> >> ïXpdf:outline 0 << /Title (Additional build examples) /A << /S /GoTo /D (chapter.3) >> >> ïXpdf:outline 1 << /Title (OMakeroot vs. OMakefile) /A << /S /GoTo /D (section.3.1) >> >> ïUpdf:outline 1 << /Title (An example C project) /A << /S /GoTo /D (section.3.2) >> >> ïYpdf:outline 1 << /Title (An example OCaml project) /A << /S /GoTo /D (section.3.3) >> >> ïWpdf:outline 1 << /Title (Handling new languages) /A << /S /GoTo /D (section.3.4) >> >> ïipdf:outline 2 << /Title (Defining a default compilation rule) /A << /S /GoTo /D (subsection.3.4.1) >> >> ïapdf:outline 2 << /Title (Defining a rule for linking) /A << /S /GoTo /D (subsection.3.4.2) >> >> ïYpdf:outline 2 << /Title (Dependency scanning) /A << /S /GoTo /D (subsection.3.4.3) >> >> ï]pdf:outline 2 << /Title (Pulling it all together) /A << /S /GoTo /D (subsection.3.4.4) >> >> ïRpdf:outline 2 << /Title (Finishing up) /A << /S /GoTo /D (subsection.3.4.5) >> >> ïjpdf:outline 1 << /Title (Collapsing the hierarchy, .SUBDIRS bodies) /A << /S /GoTo /D (section.3.5) >> >> ïYpdf:outline 2 << /Title (Using glob patterns) /A << /S /GoTo /D (subsection.3.5.1) >> >> ïcpdf:outline 2 << /Title (Simplified sub-configurations) /A << /S /GoTo /D (subsection.3.5.2) >> >> ïepdf:outline 2 << /Title (Computing the subdirectory list) /A << /S /GoTo /D (subsection.3.5.3) >> >> ï[pdf:outline 2 << /Title (Temporary directories) /A << /S /GoTo /D (subsection.3.5.4) >> >> ïXpdf:outline 0 << /Title (OMake concepts and syntax) /A << /S /GoTo /D (chapter.4) >> >> ïJpdf:outline 1 << /Title (Variables) /A << /S /GoTo /D (section.4.1) >> >> ï`pdf:outline 1 << /Title (Adding to a variable definition) /A << /S /GoTo /D (section.4.2) >> >> ïGpdf:outline 1 << /Title (Arrays) /A << /S /GoTo /D (section.4.3) >> >> ï_pdf:outline 1 << /Title (Special characters and quoting) /A << /S /GoTo /D (section.4.4) >> >> ïUpdf:outline 1 << /Title (Function definitions) /A << /S /GoTo /D (section.4.5) >> >> ïIpdf:outline 1 << /Title (Comments) /A << /S /GoTo /D (section.4.6) >> >> ïOpdf:outline 1 << /Title (File inclusion) /A << /S /GoTo /D (section.4.7) >> >> ïRpdf:outline 1 << /Title (Scoping, sections) /A << /S /GoTo /D (section.4.8) >> >> ïMpdf:outline 1 << /Title (Conditionals) /A << /S /GoTo /D (section.4.9) >> >> ïJpdf:outline 1 << /Title (Matching) /A << /S /GoTo /D (section.4.10) >> >> ïIpdf:outline 1 << /Title (Objects) /A << /S /GoTo /D (section.4.11) >> >> ïIpdf:outline 1 << /Title (Classes) /A << /S /GoTo /D (section.4.12) >> >> ïMpdf:outline 1 << /Title (Inheritance) /A << /S /GoTo /D (section.4.13) >> >> ïIpdf:outline 1 << /Title (static.) /A << /S /GoTo /D (section.4.14) >> >> ïNpdf:outline 2 << /Title (.STATIC) /A << /S /GoTo /D (subsection.4.14.1) >> >> ïQpdf:outline 3 << /Title (.MEMO) /A << /S /GoTo /D (subsubsection.4.14.1.1) >> >> ïQpdf:outline 3 << /Title (:key:) /A << /S /GoTo /D (subsubsection.4.14.1.2) >> >> ïKpdf:outline 1 << /Title (Constants) /A << /S /GoTo /D (section.4.15) >> >> ïSpdf:outline 0 << /Title (Variables and Naming) /A << /S /GoTo /D (chapter.5) >> >> ïIpdf:outline 1 << /Title (private.) /A << /S /GoTo /D (section.5.1) >> >> ïFpdf:outline 1 << /Title (this.) /A << /S /GoTo /D (section.5.2) >> >> ïHpdf:outline 1 << /Title (global.) /A << /S /GoTo /D (section.5.3) >> >> ïKpdf:outline 1 << /Title (protected.) /A << /S /GoTo /D (section.5.4) >> >> ïHpdf:outline 1 << /Title (public.) /A << /S /GoTo /D (section.5.5) >> >> ïQpdf:outline 1 << /Title (Qualified blocks) /A << /S /GoTo /D (section.5.6) >> >> ïHpdf:outline 1 << /Title (declare) /A << /S /GoTo /D (section.5.7) >> >> ïUpdf:outline 0 << /Title (Expressions and values) /A << /S /GoTo /D (chapter.6) >> >> ïPpdf:outline 1 << /Title (Dynamic scoping) /A << /S /GoTo /D (section.6.1) >> >> ïVpdf:outline 1 << /Title (Functional evaluation) /A << /S /GoTo /D (section.6.2) >> >> ïZpdf:outline 1 << /Title (Exporting the environment) /A << /S /GoTo /D (section.6.3) >> >> ïTpdf:outline 2 << /Title (Export regions) /A << /S /GoTo /D (subsection.6.3.1) >> >> ïlpdf:outline 2 << /Title (Returning values from exported regions) /A << /S /GoTo /D (subsection.6.3.2) >> >> ïHpdf:outline 1 << /Title (Objects) /A << /S /GoTo /D (section.6.4) >> >> ïWpdf:outline 1 << /Title (Field and method calls) /A << /S /GoTo /D (section.6.5) >> >> ïPpdf:outline 1 << /Title (Method override) /A << /S /GoTo /D (section.6.6) >> >> ïLpdf:outline 1 << /Title (Super calls) /A << /S /GoTo /D (section.6.7) >> >> ï[pdf:outline 0 << /Title (Additional language examples) /A << /S /GoTo /D (chapter.7) >> >> ïSpdf:outline 1 << /Title (Strings and arrays) /A << /S /GoTo /D (section.7.1) >> >> ïOpdf:outline 1 << /Title (Quoted strings) /A << /S /GoTo /D (section.7.2) >> >> ïVpdf:outline 1 << /Title (Files and directories) /A << /S /GoTo /D (section.7.3) >> >> ï`pdf:outline 1 << /Title (Iteration, mapping, and foreach) /A << /S /GoTo /D (section.7.4) >> >> ïQpdf:outline 1 << /Title (Lazy expressions) /A << /S /GoTo /D (section.7.5) >> >> ïjpdf:outline 2 << /Title (A larger example of lazy expressions) /A << /S /GoTo /D (subsection.7.5.1) >> >> ïTpdf:outline 1 << /Title (Scoping and exports) /A << /S /GoTo /D (section.7.6) >> >> ïNpdf:outline 1 << /Title (Shell aliases) /A << /S /GoTo /D (section.7.7) >> >> ïfpdf:outline 1 << /Title (Input/output redirection on the cheap) /A << /S /GoTo /D (section.7.8) >> >> ïDpdf:outline 0 << /Title (Rules) /A << /S /GoTo /D (chapter.8) >> >> ïOpdf:outline 1 << /Title (Implicit rules) /A << /S /GoTo /D (section.8.1) >> >> ïWpdf:outline 1 << /Title (Bounded implicit rules) /A << /S /GoTo /D (section.8.2) >> >> ïHpdf:outline 1 << /Title (section) /A << /S /GoTo /D (section.8.3) >> >> ïMpdf:outline 1 << /Title (section rule) /A << /S /GoTo /D (section.8.4) >> >> ïUpdf:outline 1 << /Title (Special dependencies) /A << /S /GoTo /D (section.8.5) >> >> ïNpdf:outline 2 << /Title (:exists:) /A << /S /GoTo /D (subsection.8.5.1) >> >> ïOpdf:outline 2 << /Title (:effects:) /A << /S /GoTo /D (subsection.8.5.2) >> >> ïMpdf:outline 2 << /Title (:value:) /A << /S /GoTo /D (subsection.8.5.3) >> >> ïOpdf:outline 1 << /Title (.SCANNER rules) /A << /S /GoTo /D (section.8.6) >> >> ïtpdf:outline 2 << /Title (Named scanners, and the :scanner: dependencies) /A << /S /GoTo /D (subsection.8.6.1) >> >> ïKpdf:outline 2 << /Title (Notes) /A << /S /GoTo /D (subsection.8.6.2) >> >> ïIpdf:outline 1 << /Title (.DEFAULT) /A << /S /GoTo /D (section.8.7) >> >> ïIpdf:outline 1 << /Title (.SUBDIRS) /A << /S /GoTo /D (section.8.8) >> >> ïIpdf:outline 1 << /Title (.INCLUDE) /A << /S /GoTo /D (section.8.9) >> >> ïHpdf:outline 1 << /Title (.PHONY) /A << /S /GoTo /D (section.8.10) >> >> ïNpdf:outline 1 << /Title (Rule scoping) /A << /S /GoTo /D (section.8.11) >> >> ï`pdf:outline 2 << /Title (Scoping of implicit rules) /A << /S /GoTo /D (subsection.8.11.1) >> >> ï`pdf:outline 2 << /Title (Scoping of .SCANNER rules) /A << /S /GoTo /D (subsection.8.11.2) >> >> ïapdf:outline 2 << /Title (Scoping for .PHONY targets) /A << /S /GoTo /D (subsection.8.11.3) >> >> ïcpdf:outline 1 << /Title (Running OMake from a subdirectory) /A << /S /GoTo /D (section.8.12) >> >> ïfpdf:outline 2 << /Title (Phony targets in a subdirectory) /A << /S /GoTo /D (subsection.8.12.1) >> >> ïbpdf:outline 2 << /Title (Hierarchy of .PHONY targets) /A << /S /GoTo /D (subsection.8.12.2) >> >> ïTpdf:outline 1 << /Title (Pathnames in rules) /A << /S /GoTo /D (section.8.13) >> >> ïKpdf:outline 0 << /Title (Base library) /A << /S /GoTo /D (chapter.9) >> >> ïRpdf:outline 1 << /Title (Builtin variables) /A << /S /GoTo /D (section.9.1) >> >> ïkpdf:outline 1 << /Title (Logic, Boolean functions, and control flow) /A << /S /GoTo /D (section.9.2) >> >> ïIpdf:outline 2 << /Title (not) /A << /S /GoTo /D (subsection.9.2.1) >> >> ïKpdf:outline 2 << /Title (equal) /A << /S /GoTo /D (subsection.9.2.2) >> >> ïIpdf:outline 2 << /Title (and) /A << /S /GoTo /D (subsection.9.2.3) >> >> ïHpdf:outline 2 << /Title (or) /A << /S /GoTo /D (subsection.9.2.4) >> >> ïHpdf:outline 2 << /Title (if) /A << /S /GoTo /D (subsection.9.2.5) >> >> ïSpdf:outline 2 << /Title (switch, match) /A << /S /GoTo /D (subsection.9.2.6) >> >> ïIpdf:outline 2 << /Title (try) /A << /S /GoTo /D (subsection.9.2.7) >> >> ïKpdf:outline 2 << /Title (raise) /A << /S /GoTo /D (subsection.9.2.8) >> >> ïJpdf:outline 2 << /Title (exit) /A << /S /GoTo /D (subsection.9.2.9) >> >> ïNpdf:outline 2 << /Title (defined) /A << /S /GoTo /D (subsection.9.2.10) >> >> ïRpdf:outline 2 << /Title (defined-env) /A << /S /GoTo /D (subsection.9.2.11) >> >> ïMpdf:outline 2 << /Title (getenv) /A << /S /GoTo /D (subsection.9.2.12) >> >> ïMpdf:outline 2 << /Title (setenv) /A << /S /GoTo /D (subsection.9.2.13) >> >> ïOpdf:outline 2 << /Title (unsetenv) /A << /S /GoTo /D (subsection.9.2.14) >> >> ïSpdf:outline 2 << /Title (get-registry) /A << /S /GoTo /D (subsection.9.2.15) >> >> ïMpdf:outline 2 << /Title (getvar) /A << /S /GoTo /D (subsection.9.2.16) >> >> ïMpdf:outline 2 << /Title (setvar) /A << /S /GoTo /D (subsection.9.2.17) >> >> ïUpdf:outline 1 << /Title (Arrays and sequences) /A << /S /GoTo /D (section.9.3) >> >> ïKpdf:outline 2 << /Title (array) /A << /S /GoTo /D (subsection.9.3.1) >> >> ïKpdf:outline 2 << /Title (split) /A << /S /GoTo /D (subsection.9.3.2) >> >> ïLpdf:outline 2 << /Title (concat) /A << /S /GoTo /D (subsection.9.3.3) >> >> ïLpdf:outline 2 << /Title (length) /A << /S /GoTo /D (subsection.9.3.4) >> >> ïIpdf:outline 2 << /Title (nth) /A << /S /GoTo /D (subsection.9.3.5) >> >> ïQpdf:outline 2 << /Title (replace-nth) /A << /S /GoTo /D (subsection.9.3.6) >> >> ïLpdf:outline 2 << /Title (nth-hd) /A << /S /GoTo /D (subsection.9.3.7) >> >> ïLpdf:outline 2 << /Title (nth-tl) /A << /S /GoTo /D (subsection.9.3.8) >> >> ïNpdf:outline 2 << /Title (subrange) /A << /S /GoTo /D (subsection.9.3.9) >> >> ïJpdf:outline 2 << /Title (rev) /A << /S /GoTo /D (subsection.9.3.10) >> >> ïKpdf:outline 2 << /Title (join) /A << /S /GoTo /D (subsection.9.3.11) >> >> ïMpdf:outline 2 << /Title (string) /A << /S /GoTo /D (subsection.9.3.12) >> >> ïTpdf:outline 2 << /Title (string-length) /A << /S /GoTo /D (subsection.9.3.13) >> >> ï›pdf:outline 2 << /Title (string-escaped, ocaml-escaped, html-escaped, html-pre-escaped, c-escaped, id-escaped) /A << /S /GoTo /D (subsection.9.3.14) >> >> ï]pdf:outline 2 << /Title (decode-uri, encode-uri) /A << /S /GoTo /D (subsection.9.3.15) >> >> ïLpdf:outline 2 << /Title (quote) /A << /S /GoTo /D (subsection.9.3.16) >> >> ïQpdf:outline 2 << /Title (quote-argv) /A << /S /GoTo /D (subsection.9.3.17) >> >> ïRpdf:outline 2 << /Title (html-string) /A << /S /GoTo /D (subsection.9.3.18) >> >> ïPpdf:outline 2 << /Title (addsuffix) /A << /S /GoTo /D (subsection.9.3.19) >> >> ïPpdf:outline 2 << /Title (mapsuffix) /A << /S /GoTo /D (subsection.9.3.20) >> >> ïRpdf:outline 2 << /Title (addsuffixes) /A << /S /GoTo /D (subsection.9.3.21) >> >> ïSpdf:outline 2 << /Title (removeprefix) /A << /S /GoTo /D (subsection.9.3.22) >> >> ïSpdf:outline 2 << /Title (removesuffix) /A << /S /GoTo /D (subsection.9.3.23) >> >> ïVpdf:outline 2 << /Title (replacesuffixes) /A << /S /GoTo /D (subsection.9.3.24) >> >> ïPpdf:outline 2 << /Title (addprefix) /A << /S /GoTo /D (subsection.9.3.25) >> >> ïPpdf:outline 2 << /Title (mapprefix) /A << /S /GoTo /D (subsection.9.3.26) >> >> ïRpdf:outline 2 << /Title (add-wrapper) /A << /S /GoTo /D (subsection.9.3.27) >> >> ïJpdf:outline 2 << /Title (set) /A << /S /GoTo /D (subsection.9.3.28) >> >> ïJpdf:outline 2 << /Title (mem) /A << /S /GoTo /D (subsection.9.3.29) >> >> ïSpdf:outline 2 << /Title (intersection) /A << /S /GoTo /D (subsection.9.3.30) >> >> ïQpdf:outline 2 << /Title (intersects) /A << /S /GoTo /D (subsection.9.3.31) >> >> ïOpdf:outline 2 << /Title (set-diff) /A << /S /GoTo /D (subsection.9.3.32) >> >> ïMpdf:outline 2 << /Title (filter) /A << /S /GoTo /D (subsection.9.3.33) >> >> ïQpdf:outline 2 << /Title (filter-out) /A << /S /GoTo /D (subsection.9.3.34) >> >> ïQpdf:outline 2 << /Title (capitalize) /A << /S /GoTo /D (subsection.9.3.35) >> >> ïSpdf:outline 2 << /Title (uncapitalize) /A << /S /GoTo /D (subsection.9.3.36) >> >> ïPpdf:outline 2 << /Title (uppercase) /A << /S /GoTo /D (subsection.9.3.37) >> >> ïPpdf:outline 2 << /Title (lowercase) /A << /S /GoTo /D (subsection.9.3.38) >> >> ïMpdf:outline 2 << /Title (system) /A << /S /GoTo /D (subsection.9.3.39) >> >> ïLpdf:outline 2 << /Title (shell) /A << /S /GoTo /D (subsection.9.3.40) >> >> ïMpdf:outline 2 << /Title (export) /A << /S /GoTo /D (subsection.9.3.41) >> >> ïLpdf:outline 2 << /Title (while) /A << /S /GoTo /D (subsection.9.3.42) >> >> ïLpdf:outline 2 << /Title (break) /A << /S /GoTo /D (subsection.9.3.43) >> >> ïZpdf:outline 2 << /Title (random, random-init) /A << /S /GoTo /D (subsection.9.3.44) >> >> ïKpdf:outline 1 << /Title (Arithmetic) /A << /S /GoTo /D (section.9.4) >> >> ïIpdf:outline 2 << /Title (int) /A << /S /GoTo /D (subsection.9.4.1) >> >> ïKpdf:outline 2 << /Title (float) /A << /S /GoTo /D (subsection.9.4.2) >> >> ïVpdf:outline 2 << /Title (Basic arithmetic) /A << /S /GoTo /D (subsection.9.4.3) >> >> ïQpdf:outline 2 << /Title (Comparisons) /A << /S /GoTo /D (subsection.9.4.4) >> >> ïVpdf:outline 1 << /Title (First-class functions) /A << /S /GoTo /D (section.9.5) >> >> ïIpdf:outline 2 << /Title (fun) /A << /S /GoTo /D (subsection.9.5.1) >> >> ïKpdf:outline 2 << /Title (apply) /A << /S /GoTo /D (subsection.9.5.2) >> >> ïLpdf:outline 2 << /Title (applya) /A << /S /GoTo /D (subsection.9.5.3) >> >> ïapdf:outline 2 << /Title (create-map, create-lazy-map) /A << /S /GoTo /D (subsection.9.5.4) >> >> ïVpdf:outline 1 << /Title (Iteration and mapping) /A << /S /GoTo /D (section.9.6) >> >> ïMpdf:outline 2 << /Title (foreach) /A << /S /GoTo /D (subsection.9.6.1) >> >> ïNpdf:outline 1 << /Title (Boolean tests) /A << /S /GoTo /D (section.9.7) >> >> ïUpdf:outline 2 << /Title (sequence-forall) /A << /S /GoTo /D (subsection.9.7.1) >> >> ïUpdf:outline 2 << /Title (sequence-exists) /A << /S /GoTo /D (subsection.9.7.2) >> >> ïSpdf:outline 2 << /Title (sequence-sort) /A << /S /GoTo /D (subsection.9.7.3) >> >> ïMpdf:outline 2 << /Title (compare) /A << /S /GoTo /D (subsection.9.7.4) >> >> ï_pdf:outline 0 << /Title (File, I/O and system operations) /A << /S /GoTo /D (chapter.10) >> >> ïLpdf:outline 1 << /Title (File names) /A << /S /GoTo /D (section.10.1) >> >> ïPpdf:outline 2 << /Title (file, dir) /A << /S /GoTo /D (subsection.10.1.1) >> >> ïNpdf:outline 2 << /Title (tmpfile) /A << /S /GoTo /D (subsection.10.1.2) >> >> ïIpdf:outline 2 << /Title (in) /A << /S /GoTo /D (subsection.10.1.3) >> >> ïOpdf:outline 2 << /Title (basename) /A << /S /GoTo /D (subsection.10.1.4) >> >> ïNpdf:outline 2 << /Title (dirname) /A << /S /GoTo /D (subsection.10.1.5) >> >> ïOpdf:outline 2 << /Title (rootname) /A << /S /GoTo /D (subsection.10.1.6) >> >> ïLpdf:outline 2 << /Title (dirof) /A << /S /GoTo /D (subsection.10.1.7) >> >> ïOpdf:outline 2 << /Title (fullname) /A << /S /GoTo /D (subsection.10.1.8) >> >> ïNpdf:outline 2 << /Title (absname) /A << /S /GoTo /D (subsection.10.1.9) >> >> ïPpdf:outline 2 << /Title (homename) /A << /S /GoTo /D (subsection.10.1.10) >> >> ïNpdf:outline 2 << /Title (suffix) /A << /S /GoTo /D (subsection.10.1.11) >> >> ïMpdf:outline 1 << /Title (Path search) /A << /S /GoTo /D (section.10.2) >> >> ïLpdf:outline 2 << /Title (which) /A << /S /GoTo /D (subsection.10.2.1) >> >> ïLpdf:outline 2 << /Title (where) /A << /S /GoTo /D (subsection.10.2.2) >> >> ïMpdf:outline 2 << /Title (rehash) /A << /S /GoTo /D (subsection.10.2.3) >> >> ïUpdf:outline 2 << /Title (exists-in-path) /A << /S /GoTo /D (subsection.10.2.4) >> >> ï^pdf:outline 2 << /Title (digest, digest-optional) /A << /S /GoTo /D (subsection.10.2.5) >> >> ïjpdf:outline 2 << /Title (find-in-path, find-in-path-optional) /A << /S /GoTo /D (subsection.10.2.6) >> >> ïnpdf:outline 2 << /Title (digest-in-path, digest-in-path-optional) /A << /S /GoTo /D (subsection.10.2.7) >> >> ïLpdf:outline 1 << /Title (File stats) /A << /S /GoTo /D (section.10.3) >> >> ïspdf:outline 2 << /Title (file-exists, target-exists, target-is-proper) /A << /S /GoTo /D (subsection.10.3.1) >> >> ïQpdf:outline 2 << /Title (stat-reset) /A << /S /GoTo /D (subsection.10.3.2) >> >> ï{pdf:outline 2 << /Title (filter-exists, filter-targets, filter-proper-targets) /A << /S /GoTo /D (subsection.10.3.3) >> >> ïzpdf:outline 2 << /Title (find-targets-in-path, find-targets-in-path-optional) /A << /S /GoTo /D (subsection.10.3.4) >> >> ïjpdf:outline 2 << /Title (find-ocaml-targets-in-path-optional) /A << /S /GoTo /D (subsection.10.3.5) >> >> ïPpdf:outline 2 << /Title (file-sort) /A << /S /GoTo /D (subsection.10.3.6) >> >> ïUpdf:outline 3 << /Title (sort rule) /A << /S /GoTo /D (subsubsection.10.3.6.1) >> >> ïVpdf:outline 2 << /Title (file-check-sort) /A << /S /GoTo /D (subsection.10.3.7) >> >> ï\pdf:outline 1 << /Title (Globbing and file listings) /A << /S /GoTo /D (section.10.4) >> >> ïKpdf:outline 2 << /Title (glob) /A << /S /GoTo /D (subsection.10.4.1) >> >> ïIpdf:outline 2 << /Title (ls) /A << /S /GoTo /D (subsection.10.4.2) >> >> ïNpdf:outline 2 << /Title (subdirs) /A << /S /GoTo /D (subsection.10.4.3) >> >> ïWpdf:outline 1 << /Title (Filesystem operations) /A << /S /GoTo /D (section.10.5) >> >> ïLpdf:outline 2 << /Title (mkdir) /A << /S /GoTo /D (subsection.10.5.1) >> >> ïKpdf:outline 2 << /Title (Stat) /A << /S /GoTo /D (subsection.10.5.2) >> >> ïRpdf:outline 2 << /Title (stat, lstat) /A << /S /GoTo /D (subsection.10.5.3) >> >> ïMpdf:outline 2 << /Title (unlink) /A << /S /GoTo /D (subsection.10.5.4) >> >> ïMpdf:outline 2 << /Title (rename) /A << /S /GoTo /D (subsection.10.5.5) >> >> ïKpdf:outline 2 << /Title (link) /A << /S /GoTo /D (subsection.10.5.6) >> >> ïNpdf:outline 2 << /Title (symlink) /A << /S /GoTo /D (subsection.10.5.7) >> >> ïOpdf:outline 2 << /Title (readlink) /A << /S /GoTo /D (subsection.10.5.8) >> >> ïLpdf:outline 2 << /Title (chmod) /A << /S /GoTo /D (subsection.10.5.9) >> >> ïMpdf:outline 2 << /Title (chown) /A << /S /GoTo /D (subsection.10.5.10) >> >> ïPpdf:outline 2 << /Title (truncate) /A << /S /GoTo /D (subsection.10.5.11) >> >> ïMpdf:outline 2 << /Title (umask) /A << /S /GoTo /D (subsection.10.5.12) >> >> ïHpdf:outline 1 << /Title (vmount) /A << /S /GoTo /D (section.10.6) >> >> ïMpdf:outline 2 << /Title (vmount) /A << /S /GoTo /D (subsection.10.6.1) >> >> ï^pdf:outline 2 << /Title (add-project-directories) /A << /S /GoTo /D (subsection.10.6.2) >> >> ïapdf:outline 2 << /Title (remove-project-directories) /A << /S /GoTo /D (subsection.10.6.3) >> >> ïQpdf:outline 1 << /Title (File predicates) /A << /S /GoTo /D (section.10.7) >> >> ïKpdf:outline 2 << /Title (test) /A << /S /GoTo /D (subsection.10.7.1) >> >> ïKpdf:outline 2 << /Title (find) /A << /S /GoTo /D (subsection.10.7.2) >> >> ïNpdf:outline 1 << /Title (IO functions) /A << /S /GoTo /D (section.10.8) >> >> ïXpdf:outline 2 << /Title (Standard channels) /A << /S /GoTo /D (subsection.10.8.1) >> >> ïUpdf:outline 2 << /Title (open-in-string) /A << /S /GoTo /D (subsection.10.8.2) >> >> ïdpdf:outline 2 << /Title (open-out-string, out-contents) /A << /S /GoTo /D (subsection.10.8.3) >> >> ïLpdf:outline 2 << /Title (fopen) /A << /S /GoTo /D (subsection.10.8.4) >> >> ïLpdf:outline 2 << /Title (close) /A << /S /GoTo /D (subsection.10.8.5) >> >> ïWpdf:outline 2 << /Title (read, input-line) /A << /S /GoTo /D (subsection.10.8.6) >> >> ïLpdf:outline 2 << /Title (write) /A << /S /GoTo /D (subsection.10.8.7) >> >> ïLpdf:outline 2 << /Title (lseek) /A << /S /GoTo /D (subsection.10.8.8) >> >> ïMpdf:outline 2 << /Title (rewind) /A << /S /GoTo /D (subsection.10.8.9) >> >> ïLpdf:outline 2 << /Title (tell) /A << /S /GoTo /D (subsection.10.8.10) >> >> ïMpdf:outline 2 << /Title (flush) /A << /S /GoTo /D (subsection.10.8.11) >> >> ïTpdf:outline 2 << /Title (channel-name) /A << /S /GoTo /D (subsection.10.8.12) >> >> ïKpdf:outline 2 << /Title (dup) /A << /S /GoTo /D (subsection.10.8.13) >> >> ïLpdf:outline 2 << /Title (dup2) /A << /S /GoTo /D (subsection.10.8.14) >> >> ïTpdf:outline 2 << /Title (set-nonblock) /A << /S /GoTo /D (subsection.10.8.15) >> >> ï^pdf:outline 2 << /Title (set-close-on-exec-mode) /A << /S /GoTo /D (subsection.10.8.16) >> >> ïLpdf:outline 2 << /Title (pipe) /A << /S /GoTo /D (subsection.10.8.17) >> >> ïNpdf:outline 2 << /Title (mkfifo) /A << /S /GoTo /D (subsection.10.8.18) >> >> ïNpdf:outline 2 << /Title (select) /A << /S /GoTo /D (subsection.10.8.19) >> >> ïMpdf:outline 2 << /Title (lockf) /A << /S /GoTo /D (subsection.10.8.20) >> >> ïPpdf:outline 2 << /Title (InetAddr) /A << /S /GoTo /D (subsection.10.8.21) >> >> ïLpdf:outline 2 << /Title (Host) /A << /S /GoTo /D (subsection.10.8.22) >> >> ïUpdf:outline 2 << /Title (gethostbyname) /A << /S /GoTo /D (subsection.10.8.23) >> >> ïPpdf:outline 2 << /Title (Protocol) /A << /S /GoTo /D (subsection.10.8.24) >> >> ïVpdf:outline 2 << /Title (getprotobyname) /A << /S /GoTo /D (subsection.10.8.25) >> >> ïOpdf:outline 2 << /Title (Service) /A << /S /GoTo /D (subsection.10.8.26) >> >> ïUpdf:outline 2 << /Title (getservbyname) /A << /S /GoTo /D (subsection.10.8.27) >> >> ïNpdf:outline 2 << /Title (socket) /A << /S /GoTo /D (subsection.10.8.28) >> >> ïLpdf:outline 2 << /Title (bind) /A << /S /GoTo /D (subsection.10.8.29) >> >> ïNpdf:outline 2 << /Title (listen) /A << /S /GoTo /D (subsection.10.8.30) >> >> ïNpdf:outline 2 << /Title (accept) /A << /S /GoTo /D (subsection.10.8.31) >> >> ïOpdf:outline 2 << /Title (connect) /A << /S /GoTo /D (subsection.10.8.32) >> >> ïOpdf:outline 2 << /Title (getchar) /A << /S /GoTo /D (subsection.10.8.33) >> >> ïLpdf:outline 2 << /Title (gets) /A << /S /GoTo /D (subsection.10.8.34) >> >> ïMpdf:outline 2 << /Title (fgets) /A << /S /GoTo /D (subsection.10.8.35) >> >> ïTpdf:outline 1 << /Title (Printing functions) /A << /S /GoTo /D (section.10.9) >> >> ï[pdf:outline 1 << /Title (Value printing functions) /A << /S /GoTo /D (section.10.10) >> >> ï_pdf:outline 2 << /Title (Miscellaneous functions) /A << /S /GoTo /D (subsection.10.10.1) >> >> ï]pdf:outline 3 << /Title (set-channel-line) /A << /S /GoTo /D (subsubsection.10.10.1.1) >> >> ï\pdf:outline 1 << /Title (Higher-level IO functions) /A << /S /GoTo /D (section.10.11) >> >> ï[pdf:outline 2 << /Title (Regular expressions) /A << /S /GoTo /D (subsection.10.11.1) >> >> ïKpdf:outline 2 << /Title (cat) /A << /S /GoTo /D (subsection.10.11.2) >> >> ïLpdf:outline 2 << /Title (grep) /A << /S /GoTo /D (subsection.10.11.3) >> >> ïLpdf:outline 2 << /Title (scan) /A << /S /GoTo /D (subsection.10.11.4) >> >> ïKpdf:outline 2 << /Title (awk) /A << /S /GoTo /D (subsection.10.11.5) >> >> ïNpdf:outline 2 << /Title (fsubst) /A << /S /GoTo /D (subsection.10.11.6) >> >> ïKpdf:outline 2 << /Title (lex) /A << /S /GoTo /D (subsection.10.11.7) >> >> ïRpdf:outline 2 << /Title (lex-search) /A << /S /GoTo /D (subsection.10.11.8) >> >> ïMpdf:outline 2 << /Title (Lexer) /A << /S /GoTo /D (subsection.10.11.9) >> >> ïWpdf:outline 2 << /Title (Lexer matching) /A << /S /GoTo /D (subsection.10.11.10) >> >> ïdpdf:outline 2 << /Title (Extending lexer definitions) /A << /S /GoTo /D (subsection.10.11.11) >> >> ïcpdf:outline 2 << /Title (Threading the lexer object) /A << /S /GoTo /D (subsection.10.11.12) >> >> ïOpdf:outline 2 << /Title (Parser) /A << /S /GoTo /D (subsection.10.11.13) >> >> ï[pdf:outline 2 << /Title (Calling the parser) /A << /S /GoTo /D (subsection.10.11.14) >> >> ïXpdf:outline 2 << /Title (Parsing control) /A << /S /GoTo /D (subsection.10.11.15) >> >> ïZpdf:outline 2 << /Title (Extending parsers) /A << /S /GoTo /D (subsection.10.11.16) >> >> ïOpdf:outline 2 << /Title (Passwd) /A << /S /GoTo /D (subsection.10.11.17) >> >> ï[pdf:outline 2 << /Title (getpwnam, getpwuid) /A << /S /GoTo /D (subsection.10.11.18) >> >> ïRpdf:outline 2 << /Title (getpwents) /A << /S /GoTo /D (subsection.10.11.19) >> >> ïNpdf:outline 2 << /Title (Group) /A << /S /GoTo /D (subsection.10.11.20) >> >> ï[pdf:outline 2 << /Title (getgrnam, getgrgid) /A << /S /GoTo /D (subsection.10.11.21) >> >> ïPpdf:outline 2 << /Title (tgetstr) /A << /S /GoTo /D (subsection.10.11.22) >> >> ïmpdf:outline 2 << /Title (xterm-escape-begin, xterm-escape-end) /A << /S /GoTo /D (subsection.10.11.23) >> >> ïUpdf:outline 2 << /Title (xterm-escape) /A << /S /GoTo /D (subsection.10.11.24) >> >> ïupdf:outline 2 << /Title (prompt-invisible-begin, prompt-invisible-end) /A << /S /GoTo /D (subsection.10.11.25) >> >> ïYpdf:outline 2 << /Title (prompt-invisible) /A << /S /GoTo /D (subsection.10.11.26) >> >> ïUpdf:outline 2 << /Title (gettimeofday) /A << /S /GoTo /D (subsection.10.11.27) >> >> ïNpdf:outline 0 << /Title (Shell commands) /A << /S /GoTo /D (chapter.11) >> >> ïQpdf:outline 1 << /Title (Simple commands) /A << /S /GoTo /D (section.11.1) >> >> ïJpdf:outline 1 << /Title (Globbing) /A << /S /GoTo /D (section.11.2) >> >> ïQpdf:outline 1 << /Title (Background jobs) /A << /S /GoTo /D (section.11.3) >> >> ïRpdf:outline 1 << /Title (File redirection) /A << /S /GoTo /D (section.11.4) >> >> ïKpdf:outline 1 << /Title (Pipelines) /A << /S /GoTo /D (section.11.5) >> >> ïWpdf:outline 1 << /Title (Conditional execution) /A << /S /GoTo /D (section.11.6) >> >> ïJpdf:outline 1 << /Title (Grouping) /A << /S /GoTo /D (section.11.7) >> >> ïZpdf:outline 1 << /Title (What is a shell command?) /A << /S /GoTo /D (section.11.8) >> >> ïYpdf:outline 1 << /Title (Basic builtin functions) /A << /S /GoTo /D (section.11.9) >> >> ïKpdf:outline 2 << /Title (echo) /A << /S /GoTo /D (subsection.11.9.1) >> >> ïIpdf:outline 2 << /Title (cd) /A << /S /GoTo /D (subsection.11.9.2) >> >> ï`pdf:outline 1 << /Title (Job control builtin functions) /A << /S /GoTo /D (section.11.10) >> >> ïLpdf:outline 2 << /Title (jobs) /A << /S /GoTo /D (subsection.11.10.1) >> >> ïJpdf:outline 2 << /Title (bg) /A << /S /GoTo /D (subsection.11.10.2) >> >> ïJpdf:outline 2 << /Title (fg) /A << /S /GoTo /D (subsection.11.10.3) >> >> ïLpdf:outline 2 << /Title (stop) /A << /S /GoTo /D (subsection.11.10.4) >> >> ïLpdf:outline 2 << /Title (wait) /A << /S /GoTo /D (subsection.11.10.5) >> >> ïLpdf:outline 2 << /Title (kill) /A << /S /GoTo /D (subsection.11.10.6) >> >> ïRpdf:outline 1 << /Title (Command history) /A << /S /GoTo /D (section.11.11) >> >> ïOpdf:outline 2 << /Title (history) /A << /S /GoTo /D (subsection.11.11.1) >> >> ïTpdf:outline 0 << /Title (The standard objects) /A << /S /GoTo /D (chapter.12) >> >> ïTpdf:outline 1 << /Title (Pervasives objects) /A << /S /GoTo /D (section.12.1) >> >> ïMpdf:outline 2 << /Title (Object) /A << /S /GoTo /D (subsection.12.1.1) >> >> ïJpdf:outline 2 << /Title (Map) /A << /S /GoTo /D (subsection.12.1.2) >> >> ïMpdf:outline 2 << /Title (Number) /A << /S /GoTo /D (subsection.12.1.3) >> >> ïJpdf:outline 2 << /Title (Int) /A << /S /GoTo /D (subsection.12.1.4) >> >> ïLpdf:outline 2 << /Title (Float) /A << /S /GoTo /D (subsection.12.1.5) >> >> ïOpdf:outline 2 << /Title (Sequence) /A << /S /GoTo /D (subsection.12.1.6) >> >> ïLpdf:outline 2 << /Title (Array) /A << /S /GoTo /D (subsection.12.1.7) >> >> ïMpdf:outline 2 << /Title (String) /A << /S /GoTo /D (subsection.12.1.8) >> >> ïJpdf:outline 2 << /Title (Fun) /A << /S /GoTo /D (subsection.12.1.9) >> >> ïLpdf:outline 2 << /Title (Rule) /A << /S /GoTo /D (subsection.12.1.10) >> >> ïNpdf:outline 2 << /Title (Target) /A << /S /GoTo /D (subsection.12.1.11) >> >> ïLpdf:outline 2 << /Title (Node) /A << /S /GoTo /D (subsection.12.1.12) >> >> ïLpdf:outline 2 << /Title (File) /A << /S /GoTo /D (subsection.12.1.13) >> >> ïKpdf:outline 2 << /Title (Dir) /A << /S /GoTo /D (subsection.12.1.14) >> >> ïOpdf:outline 2 << /Title (Channel) /A << /S /GoTo /D (subsection.12.1.15) >> >> ïQpdf:outline 2 << /Title (InChannel) /A << /S /GoTo /D (subsection.12.1.16) >> >> ïRpdf:outline 2 << /Title (OutChannel) /A << /S /GoTo /D (subsection.12.1.17) >> >> ïPpdf:outline 2 << /Title (Location) /A << /S /GoTo /D (subsection.12.1.18) >> >> ïQpdf:outline 2 << /Title (Exception) /A << /S /GoTo /D (subsection.12.1.19) >> >> ïXpdf:outline 2 << /Title (RuntimeException) /A << /S /GoTo /D (subsection.12.1.20) >> >> ï\pdf:outline 2 << /Title (UnbuildableException) /A << /S /GoTo /D (subsection.12.1.21) >> >> ïMpdf:outline 2 << /Title (Shell) /A << /S /GoTo /D (subsection.12.1.22) >> >> ï]pdf:outline 0 << /Title (Build functions and utilities) /A << /S /GoTo /D (chapter.13) >> >> ïXpdf:outline 1 << /Title (Builtin .PHONY targets) /A << /S /GoTo /D (section.13.1) >> >> ïXpdf:outline 1 << /Title (Options and versioning) /A << /S /GoTo /D (section.13.2) >> >> ïQpdf:outline 2 << /Title (OMakeFlags) /A << /S /GoTo /D (subsection.13.2.1) >> >> ïSpdf:outline 2 << /Title (OMakeVersion) /A << /S /GoTo /D (subsection.13.2.2) >> >> ïSpdf:outline 2 << /Title (cmp-versions) /A << /S /GoTo /D (subsection.13.2.3) >> >> ïXpdf:outline 2 << /Title (DefineCommandVars) /A << /S /GoTo /D (subsection.13.2.4) >> >> ï`pdf:outline 1 << /Title (Examining the dependency graph) /A << /S /GoTo /D (section.13.3) >> >> ïzpdf:outline 2 << /Title (dependencies, dependencies-all, dependencies-proper) /A << /S /GoTo /D (subsection.13.3.1) >> >> ïMpdf:outline 2 << /Title (target) /A << /S /GoTo /D (subsection.13.3.2) >> >> ïYpdf:outline 2 << /Title (find-build-targets) /A << /S /GoTo /D (subsection.13.3.3) >> >> ïZpdf:outline 2 << /Title (project-directories) /A << /S /GoTo /D (subsection.13.3.4) >> >> ïKpdf:outline 2 << /Title (rule) /A << /S /GoTo /D (subsection.13.3.5) >> >> ïLpdf:outline 2 << /Title (build) /A << /S /GoTo /D (subsection.13.3.6) >> >> ïTpdf:outline 1 << /Title (The OMakeroot file) /A << /S /GoTo /D (section.13.4) >> >> ïPpdf:outline 2 << /Title (Variables) /A << /S /GoTo /D (subsection.13.4.1) >> >> ïWpdf:outline 2 << /Title (System variables) /A << /S /GoTo /D (subsection.13.4.2) >> >> ïYpdf:outline 1 << /Title (Building C and C++ code) /A << /S /GoTo /D (section.13.5) >> >> ïbpdf:outline 2 << /Title (Autoconfiguration variables) /A << /S /GoTo /D (subsection.13.5.1) >> >> ï]pdf:outline 3 << /Title (Unix-like systems) /A << /S /GoTo /D (subsubsection.13.5.1.1) >> >> ïQpdf:outline 3 << /Title (Win32) /A << /S /GoTo /D (subsubsection.13.5.1.2) >> >> ïhpdf:outline 2 << /Title (C and C++ configuration variables) /A << /S /GoTo /D (subsection.13.5.2) >> >> ïXpdf:outline 2 << /Title (Generated C files) /A << /S /GoTo /D (subsection.13.5.3) >> >> ïqpdf:outline 3 << /Title (CGeneratedFiles, LocalCGeneratedFiles) /A << /S /GoTo /D (subsubsection.13.5.3.1) >> >> ïhpdf:outline 2 << /Title (Building C programs and Libraries) /A << /S /GoTo /D (subsection.13.5.4) >> >> ïkpdf:outline 3 << /Title (StaticCLibrary, DynamicCLibrary) /A << /S /GoTo /D (subsubsection.13.5.4.1) >> >> ïspdf:outline 3 << /Title (StaticCLibraryCopy, DynamicCLibraryCopy) /A << /S /GoTo /D (subsubsection.13.5.4.2) >> >> ïypdf:outline 3 << /Title (StaticCLibraryInstall, DynamicCLibraryInstall) /A << /S /GoTo /D (subsubsection.13.5.4.3) >> >> ï‚pdf:outline 3 << /Title (StaticCObject, StaticCObjectCopy, StaticCObjectInstall) /A << /S /GoTo /D (subsubsection.13.5.4.4) >> >> ïTpdf:outline 3 << /Title (CProgram) /A << /S /GoTo /D (subsubsection.13.5.4.5) >> >> ïXpdf:outline 3 << /Title (CProgramCopy) /A << /S /GoTo /D (subsubsection.13.5.4.6) >> >> ï[pdf:outline 3 << /Title (CProgramInstall) /A << /S /GoTo /D (subsubsection.13.5.4.7) >> >> ïipdf:outline 3 << /Title (CXXProgram, CXXProgramInstall) /A << /S /GoTo /D (subsubsection.13.5.4.8) >> >> ïÏpdf:outline 3 << /Title (StaticCXXLibrary, StaticCXXLibraryCopy, StaticCXXLibraryInstall, DynamicCXXLibrary, DynamicCXXLibraryCopy, DynamicCXXLibraryInstall) /A << /S /GoTo /D (subsubsection.13.5.4.9) >> >> ïUpdf:outline 1 << /Title (Building OCaml code) /A << /S /GoTo /D (section.13.6) >> >> ïxpdf:outline 2 << /Title (Autoconfiguration variables for OCaml compilation) /A << /S /GoTo /D (subsection.13.6.1) >> >> ïtpdf:outline 2 << /Title (Configuration variables for OCaml compilation) /A << /S /GoTo /D (subsection.13.6.2) >> >> ïZpdf:outline 2 << /Title (OCaml command flags) /A << /S /GoTo /D (subsection.13.6.3) >> >> ïXpdf:outline 2 << /Title (Library variables) /A << /S /GoTo /D (subsection.13.6.4) >> >> ï\pdf:outline 2 << /Title (Generated OCaml Files) /A << /S /GoTo /D (subsection.13.6.5) >> >> ïypdf:outline 3 << /Title (OCamlGeneratedFiles, LocalOCamlGeneratedFiles) /A << /S /GoTo /D (subsubsection.13.6.5.1) >> >> ïpdf:outline 3 << /Title (Automatic discovery of generated files during dependency analysis) /A << /S /GoTo /D (subsubsection.13.6.5.2) >> >> ïhpdf:outline 2 << /Title (Using the Menhir parser generator) /A << /S /GoTo /D (subsection.13.6.6) >> >> ïXpdf:outline 3 << /Title (OCamlLibrary) /A << /S /GoTo /D (subsubsection.13.6.6.1) >> >> ïXpdf:outline 3 << /Title (OCamlPackage) /A << /S /GoTo /D (subsubsection.13.6.6.2) >> >> ï\pdf:outline 3 << /Title (OCamlLibraryCopy) /A << /S /GoTo /D (subsubsection.13.6.6.3) >> >> ï_pdf:outline 3 << /Title (OCamlLibraryInstall) /A << /S /GoTo /D (subsubsection.13.6.6.4) >> >> ïXpdf:outline 3 << /Title (OCamlProgram) /A << /S /GoTo /D (subsubsection.13.6.6.5) >> >> ï\pdf:outline 3 << /Title (OCamlProgramCopy) /A << /S /GoTo /D (subsubsection.13.6.6.6) >> >> ï_pdf:outline 3 << /Title (OCamlProgramInstall) /A << /S /GoTo /D (subsubsection.13.6.6.7) >> >> ïVpdf:outline 1 << /Title (Building LaTeX files) /A << /S /GoTo /D (section.13.7) >> >> ï^pdf:outline 2 << /Title (Configuration variables) /A << /S /GoTo /D (subsection.13.7.1) >> >> ï_pdf:outline 2 << /Title (Building LaTeX documents) /A << /S /GoTo /D (subsection.13.7.2) >> >> ïYpdf:outline 3 << /Title (LaTeXDocument) /A << /S /GoTo /D (subsubsection.13.7.2.1) >> >> ïupdf:outline 3 << /Title (TeXGeneratedFiles, LocalTeXGeneratedFiles) /A << /S /GoTo /D (subsubsection.13.7.2.2) >> >> ï]pdf:outline 3 << /Title (LaTeXDocumentCopy) /A << /S /GoTo /D (subsubsection.13.7.2.3) >> >> ï`pdf:outline 3 << /Title (LaTeXDocumentInstall) /A << /S /GoTo /D (subsubsection.13.7.2.4) >> >> ïipdf:outline 0 << /Title (Autoconfiguration functions and variables) /A << /S /GoTo /D (chapter.14) >> >> ïmpdf:outline 1 << /Title (General-purpose autoconfiguration functions) /A << /S /GoTo /D (section.14.1) >> >> ïepdf:outline 2 << /Title (ConfMsgChecking, ConfMsgResult) /A << /S /GoTo /D (subsection.14.1.1) >> >> ï`pdf:outline 2 << /Title (ConfMsgWarn, ConfMsgError) /A << /S /GoTo /D (subsection.14.1.2) >> >> ïapdf:outline 2 << /Title (ConfMsgYesNo, ConfMsgFound) /A << /S /GoTo /D (subsection.14.1.3) >> >> ïepdf:outline 2 << /Title (TryCompileC, TryLinkC, TryRunC) /A << /S /GoTo /D (subsection.14.1.4) >> >> ïOpdf:outline 2 << /Title (RunCProg) /A << /S /GoTo /D (subsection.14.1.5) >> >> ïhpdf:outline 2 << /Title (CheckCHeader, VerboseCheckCHeader) /A << /S /GoTo /D (subsection.14.1.6) >> >> ïbpdf:outline 2 << /Title (CheckCLib, VerboseCheckCLib) /A << /S /GoTo /D (subsection.14.1.7) >> >> ïPpdf:outline 2 << /Title (CheckProg) /A << /S /GoTo /D (subsection.14.1.8) >> >> ï^pdf:outline 1 << /Title (Translating autoconf scripts) /A << /S /GoTo /D (section.14.2) >> >> ï`pdf:outline 1 << /Title (Predefined configuration tests) /A << /S /GoTo /D (section.14.3) >> >> ïdpdf:outline 2 << /Title (NCurses library configuration) /A << /S /GoTo /D (subsection.14.3.1) >> >> ïepdf:outline 2 << /Title (ReadLine library configuration) /A << /S /GoTo /D (subsection.14.3.2) >> >> ï]pdf:outline 2 << /Title (Snprintf configuration) /A << /S /GoTo /D (subsection.14.3.3) >> >> ïMpdf:outline 0 << /Title (The OSH shell) /A << /S /GoTo /D (chapter.15) >> >> ïIpdf:outline 1 << /Title (Startup) /A << /S /GoTo /D (section.15.1) >> >> ïIpdf:outline 1 << /Title (Aliases) /A << /S /GoTo /D (section.15.2) >> >> ïTpdf:outline 1 << /Title (Interactive syntax) /A << /S /GoTo /D (section.15.3) >> >> ïHpdf:outline 0 << /Title (Synopsis) /A << /S /GoTo /D (appendix.A) >> >> ïNpdf:outline 1 << /Title (General usage) /A << /S /GoTo /D (section.A.1) >> >> ïOpdf:outline 1 << /Title (Output control) /A << /S /GoTo /D (section.A.2) >> >> ïHpdf:outline 2 << /Title (-s) /A << /S /GoTo /D (subsection.A.2.1) >> >> ïHpdf:outline 2 << /Title (-S) /A << /S /GoTo /D (subsection.A.2.2) >> >> ïHpdf:outline 2 << /Title (-w) /A << /S /GoTo /D (subsection.A.2.3) >> >> ïPpdf:outline 2 << /Title (--progress) /A << /S /GoTo /D (subsection.A.2.4) >> >> ïTpdf:outline 2 << /Title (--print-status) /A << /S /GoTo /D (subsection.A.2.5) >> >> ïRpdf:outline 2 << /Title (--print-exit) /A << /S /GoTo /D (subsection.A.2.6) >> >> ïOpdf:outline 2 << /Title (--verbose) /A << /S /GoTo /D (subsection.A.2.7) >> >> ïUpdf:outline 2 << /Title (--output-normal) /A << /S /GoTo /D (subsection.A.2.8) >> >> ïWpdf:outline 2 << /Title (--output-postpone) /A << /S /GoTo /D (subsection.A.2.9) >> >> ï[pdf:outline 2 << /Title (--output-only-errors) /A << /S /GoTo /D (subsection.A.2.10) >> >> ïVpdf:outline 2 << /Title (--output-at-end) /A << /S /GoTo /D (subsection.A.2.11) >> >> ïIpdf:outline 2 << /Title (-o) /A << /S /GoTo /D (subsection.A.2.12) >> >> ïNpdf:outline 1 << /Title (Build options) /A << /S /GoTo /D (section.A.3) >> >> ïHpdf:outline 2 << /Title (-k) /A << /S /GoTo /D (subsection.A.3.1) >> >> ïHpdf:outline 2 << /Title (-n) /A << /S /GoTo /D (subsection.A.3.2) >> >> ïHpdf:outline 2 << /Title (-p) /A << /S /GoTo /D (subsection.A.3.3) >> >> ïHpdf:outline 2 << /Title (-P) /A << /S /GoTo /D (subsection.A.3.4) >> >> ïHpdf:outline 2 << /Title (-R) /A << /S /GoTo /D (subsection.A.3.5) >> >> ïHpdf:outline 2 << /Title (-t) /A << /S /GoTo /D (subsection.A.3.6) >> >> ïHpdf:outline 2 << /Title (-U) /A << /S /GoTo /D (subsection.A.3.7) >> >> ïNpdf:outline 2 << /Title (--depend) /A << /S /GoTo /D (subsection.A.3.8) >> >> ïQpdf:outline 2 << /Title (--configure) /A << /S /GoTo /D (subsection.A.3.9) >> >> ïWpdf:outline 2 << /Title (--force-dotomake) /A << /S /GoTo /D (subsection.A.3.10) >> >> ïQpdf:outline 2 << /Title (--dotomake) /A << /S /GoTo /D (subsection.A.3.11) >> >> ïIpdf:outline 2 << /Title (-j) /A << /S /GoTo /D (subsection.A.3.12) >> >> ï[pdf:outline 2 << /Title (--print-dependencies) /A << /S /GoTo /D (subsection.A.3.13) >> >> ïZpdf:outline 2 << /Title (--show-dependencies) /A << /S /GoTo /D (subsection.A.3.14) >> >> ïYpdf:outline 2 << /Title (--all-dependencies) /A << /S /GoTo /D (subsection.A.3.15) >> >> ï]pdf:outline 2 << /Title (--verbose-dependencies) /A << /S /GoTo /D (subsection.A.3.16) >> >> ïPpdf:outline 2 << /Title (--install) /A << /S /GoTo /D (subsection.A.3.17) >> >> ïTpdf:outline 2 << /Title (--install-all) /A << /S /GoTo /D (subsection.A.3.18) >> >> ïVpdf:outline 2 << /Title (--install-force) /A << /S /GoTo /D (subsection.A.3.19) >> >> ïPpdf:outline 2 << /Title (--absname) /A << /S /GoTo /D (subsection.A.3.20) >> >> ïZpdf:outline 2 << /Title (variable definition) /A << /S /GoTo /D (subsection.A.3.21) >> >> ïSpdf:outline 1 << /Title (Additional options) /A << /S /GoTo /D (section.A.4) >> >> ïVpdf:outline 1 << /Title (Environment variables) /A << /S /GoTo /D (section.A.5) >> >> ïPpdf:outline 2 << /Title (OMAKEFLAGS) /A << /S /GoTo /D (subsection.A.5.1) >> >> ïNpdf:outline 2 << /Title (OMAKELIB) /A << /S /GoTo /D (subsection.A.5.2) >> >> ïJpdf:outline 1 << /Title (Functions) /A << /S /GoTo /D (section.A.6) >> >> ïPpdf:outline 2 << /Title (OMakeFlags) /A << /S /GoTo /D (subsection.A.6.1) >> >> ïRpdf:outline 1 << /Title (Option processing) /A << /S /GoTo /D (section.A.7) >> >> ïIpdf:outline 1 << /Title (.omakerc) /A << /S /GoTo /D (section.A.8) >> >> ïMpdf:outline 0 << /Title (OMake grammar) /A << /S /GoTo /D (appendix.B) >> >> ïZpdf:outline 1 << /Title (OMake lexical conventions) /A << /S /GoTo /D (section.B.1) >> >> ïNpdf:outline 2 << /Title (Comments) /A << /S /GoTo /D (subsection.B.1.1) >> >> ïXpdf:outline 2 << /Title (Special characters) /A << /S /GoTo /D (subsection.B.1.2) >> >> ïQpdf:outline 2 << /Title (Identifiers) /A << /S /GoTo /D (subsection.B.1.3) >> >> ïYpdf:outline 2 << /Title (Command identifiers) /A << /S /GoTo /D (subsection.B.1.4) >> >> ïYpdf:outline 2 << /Title (Variable references) /A << /S /GoTo /D (subsection.B.1.5) >> >> ïVpdf:outline 2 << /Title (String constants) /A << /S /GoTo /D (subsection.B.1.6) >> >> ïRpdf:outline 1 << /Title (The OMake grammar) /A << /S /GoTo /D (section.B.2) >> >> ïQpdf:outline 2 << /Title (Expressions) /A << /S /GoTo /D (subsection.B.2.1) >> >> ï^pdf:outline 3 << /Title (Inline applications) /A << /S /GoTo /D (subsubsection.B.2.1.1) >> >> ï]pdf:outline 2 << /Title (Statements and programs) /A << /S /GoTo /D (subsection.B.2.2) >> >> ïXpdf:outline 3 << /Title (Special forms) /A << /S /GoTo /D (subsubsection.B.2.2.1) >> >> ï_pdf:outline 3 << /Title (Variable definitions) /A << /S /GoTo /D (subsubsection.B.2.2.2) >> >> ïppdf:outline 3 << /Title (Applications and function definitions) /A << /S /GoTo /D (subsubsection.B.2.2.3) >> >> ïRpdf:outline 3 << /Title (Objects) /A << /S /GoTo /D (subsubsection.B.2.2.4) >> >> ïPpdf:outline 3 << /Title (Rules) /A << /S /GoTo /D (subsubsection.B.2.2.5) >> >> ïYpdf:outline 3 << /Title (Shell commands) /A << /S /GoTo /D (subsubsection.B.2.2.6) >> >> ïQpdf:outline 1 << /Title (Dollar modifiers) /A << /S /GoTo /D (section.B.3) >> >> ïJpdf:outline 0 << /Title (References) /A << /S /GoTo /D (appendix.C) >> >> ïIpdf:outline 1 << /Title (See Also) /A << /S /GoTo /D (section.C.1) >> >> ïHpdf:outline 1 << /Title (Version) /A << /S /GoTo /D (section.C.2) >> >> ïVpdf:outline 1 << /Title (License and Copyright) /A << /S /GoTo /D (section.C.3) >> >> ïGpdf:outline 1 << /Title (Author) /A << /S /GoTo /D (section.C.4) >> >> ï@pdf:docview <>ï1pdf:dest (Doc-Start) [@thispage /XYZ @xpos @ypos] Ôÿÿ‘þsóDÓítG®G®cmr17¹The–7tOMakšŒqe“user“guide“and“reference“man˜ualŽŸ,‘Oâ óX«Q cmr12ºJason›ê¨Hic•¬rk“ey‘ÿV,˜Aleksey˜Nogin,˜ó›»ˆ@ cmti12Ãet.‘fial.ŽŽŽŽŽŸ’…ÊóºAugust–ê¨7,“2007ŽŽŽŒ‹. s\È ý®£8‘Yï.pdf:dest (page.2) [@thispage /XYZ @xpos @ypos]óKñ`y cmr10²2ŽŽ 8G ýÚŽŽŒ‹¯T s\È ý®£8‘#ï.pdf:dest (page.3) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚŸ[w‘#óÂÖN áH cmbx12ÆCon–ÿ8õten“tsŽ‘#Ÿ(ï2pdf:dest (chapter*.1) [@thispage /XYZ @xpos @ypos]¤2ðïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.1) >> >> óò"V cmbx10Ç1Ž‘Guideïpdf:eann’ 7*15ŽŽ¡ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.2) >> >> 2Ž‘OMak•®9e›ÕTquic“kstart˜guideïpdf:eann’ÅZ17ŽŽ¤ Q‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.1) >> >> ²2.1Ž‘Descriptionïpdf:eann‘c*‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡17ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.2.1.1) >> >> 2.1.1Ž‘ Automatic–UUdepGendency“analysisïpdf:eann‘V‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡17ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.2.1.2) >> >> 2.1.2Ž‘ Con•¸ãten“t-based–UUdepGendency“analysisïpdf:eann‘©º‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡17ŽŽ© QÑïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.2) >> >> 2.2Ž‘F‘ÿ*ªor–UUusers“already“familiar“with“mak¸ãeïpdf:eann‘M^‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡18ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.3) >> >> 2.3Ž‘Building–UUa“small“C“programïpdf:eann‘"Û‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡18ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.4) >> >> 2.4Ž‘Larger‘UUpro‘Ž8jectsïpdf:eann‘8p‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡20ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.5) >> >> 2.5Ž‘SubGdirectoriesïpdf:eann‘ Ë‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡20ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.6) >> >> 2.6Ž‘Other–UUthings“to“considerïpdf:eann‘ñ(‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡24ŽŽ¦‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.7) >> >> 2.7Ž‘Building–UUOCaml“programsïpdf:eann‘p‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡24ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.8) >> >> 2.8Ž‘The–UUOMakš¸ãe le“and“OMak˜eroGot“ lesïpdf:eann‘0í‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡26ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.9) >> >> 2.9Ž‘Multiple–UUv¸ãersion“suppGortïpdf:eann‘Ô´‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡27ŽŽ¡‘ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.2.10) >> >> 2.10Ž‘Notesïpdf:eann‘8™‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡27ŽŽŸ2ðïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.3) >> >> Ç3Ž‘Additional–ÕTbuild“examplesïpdf:eann’º29ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.3.1) >> >> ²3.1Ž‘OMak•¸ãeroGot‘UUvs.‘qÇOMak“e leïpdf:eann‘"ä‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡31ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.3.2) >> >> 3.2Ž‘An–UUexample“C“pro‘Ž8jectïpdf:eann‘‡‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡31ŽŽ¦‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.3.3) >> >> 3.3Ž‘An–UUexample“OCaml“pro‘Ž8jectïpdf:eann‘x3‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡33ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.3.4) >> >> 3.4Ž‘Handling–UUnew“languagesïpdf:eann‘âí‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡35ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.4.1) >> >> 3.4.1Ž‘ De ning–UUa“default“compilation“ruleïpdf:eann‘›~‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡36ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.4.2) >> >> 3.4.2Ž‘ De ning–UUa“rule“for“linkingïpdf:eann‘iâ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡36ŽŽ¦‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.4.3) >> >> 3.4.3Ž‘ DepGendency‘UUscanningïpdf:eann‘¿J‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡37ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.4.4) >> >> 3.4.4Ž‘ Pulling–UUit“all“togetherïpdf:eann‘I‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡39ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.4.5) >> >> 3.4.5Ž‘ Finishing‘UUupïpdf:eann‘M«‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡41ŽŽ¡‘ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.3.5) >> >> 3.5Ž‘Collapsing–UUthe“hierarc•¸ãh“y‘ÿ*ª,–UU.SUBDIRS“b•Go“diesïpdf:eann‘M=‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡41ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.5.1) >> >> 3.5.1Ž‘ Using–UUglob“patternsïpdf:eann‘[Ä‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡42ŽŽ¦‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.5.2) >> >> 3.5.2Ž‘ Simpli ed‘UUsub-con gurationsïpdf:eann‘ø ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡42ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.5.3) >> >> 3.5.3Ž‘ Computing–UUthe“subGdirectory“listïpdf:eann‘ O‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡43ŽŽ¡‘&ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.3.5.4) >> >> 3.5.4Ž‘ T‘ÿ*ªempGorary‘UUdirectoriesïpdf:eann‘„‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡44ŽŽŽŸK’Í3ŽŽŒ‹¯é s\È ý®£8‘Yï.pdf:dest (page.4) [@thispage /XYZ @xpos @ypos]²4’1¿óp®0J cmsl10ÄCONTENTSŽŽ 8G ýÚŸ ‘Yïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.4) >> >> Ç4Ž‘OMakš®9e–ÕTconcepts“and“syn˜taxïpdf:eann’°¡K47ŽŽ¤ "é‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.1) >> >> ²4.1Ž‘V‘ÿ*ªariablesïpdf:eann‘xˆ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡47ŽŽ© "è‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.2) >> >> 4.2Ž‘Adding–UUto“a“v‘ÿqÇariable“de nitionïpdf:eann‘iæ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡48ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.3) >> >> 4.3Ž‘Arra¸ãysïpdf:eann‘¸˜‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡48ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.4) >> >> 4.4Ž‘SpGecial–UUc¸ãharacters“and“quotingïpdf:eann‘›±‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡48ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.5) >> >> 4.5Ž‘F‘ÿ*ªunction‘UUde nitionsïpdf:eann‘[á‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡49ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.6) >> >> 4.6Ž‘Commen¸ãtsïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡50ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.7) >> >> 4.7Ž‘File‘UUinclusionïpdf:eann‘Ü‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡50ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.8) >> >> 4.8Ž‘Scoping,‘UUsectionsïpdf:eann‘ª-‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡50ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.9) >> >> 4.9Ž‘Conditionalsïpdf:eannFµ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡52ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.10) >> >> 4.10Ž‘Matc¸ãhingïpdf:eann‘qj‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡52ŽŽ¦‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.11) >> >> 4.11Ž‘Ob‘Ž8jectsïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡54ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.12) >> >> 4.12Ž‘Classesïpdf:eann‘¸š‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡54ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.13) >> >> 4.13Ž‘Inheritanceïpdf:eann‘#*‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡55ŽŽ¦‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.14) >> >> 4.14Ž‘static.ïpdf:eann‘FÑ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡55ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.4.14.1) >> >> 4.14.1Ž‘ .ST–ÿ*ªA“TICïpdf:eann‘8k‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡56ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.4.14.1.1) >> >> 4.14.1.1Ž‘).MEMOïpdf:eann‘³‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡57ŽŽ¦’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.4.14.1.2) >> >> 4.14.1.2Ž‘):k¸ãey:ïpdf:eann‘ñ6‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡57ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.15) >> >> 4.15Ž‘Constan¸ãtsïpdf:eann‘Ôù‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡59ŽŽŸ:/‘Yïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.5) >> >> Ç5Ž‘V‘ÿ «ariables–ÕTand“Namingïpdf:eann’θ¸63ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.5.1) >> >> ²5.1Ž‘priv‘ÿqÇate.ïpdf:eann‘±r‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡63ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.5.2) >> >> 5.2Ž‘this.ïpdf:eann‘FÙ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡64ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.5.3) >> >> 5.3Ž‘global.ïpdf:eann‘$‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡65ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.5.4) >> >> 5.4Ž‘protected.ïpdf:eann‘£2‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡66ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.5.5) >> >> 5.5Ž‘public.ïpdf:eann‘ì‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡66ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.5.6) >> >> 5.6Ž‘Quali ed‘UUbloGc¸ãksïpdf:eann‘ú‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡66ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.5.7) >> >> 5.7Ž‘declareïpdf:eann‘j`‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡67ŽŽŸ:/‘Yïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.6) >> >> Ç6Ž‘Expressions–ÕTand“v‘ÿ\raluesïpdf:eann’˨69ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.1) >> >> ²6.1Ž‘Dynamic‘UUscopingïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡69ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.2) >> >> 6.2Ž‘F‘ÿ*ªunctional‘UUev‘ÿqÇaluationïpdf:eann‘±,‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡71ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.3) >> >> 6.3Ž‘ExpGorting–UUthe“en•¸ãvironmen“tïpdf:eann‘†i‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡72ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.6.3.1) >> >> 6.3.1Ž‘ ExpGort‘UUregionsïpdf:eann‘M£‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡73ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.6.3.2) >> >> 6.3.2Ž‘ Returning–UUv‘ÿqÇalues“from“expGorted“regionsïpdf:eann‘¾õ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡73ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.4) >> >> 6.4Ž‘Ob‘Ž8jectsïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡75ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.5) >> >> 6.5Ž‘Field–UUand“methoGd“callsïpdf:eann‘Í ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡76ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.6) >> >> 6.6Ž‘MethoGd‘UUo•¸ãv“errideïpdf:eann‘ª-‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡76ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.7) >> >> 6.7Ž‘SupGer‘UUcallsïpdf:eann‘¿œ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡77ŽŽŸ:0‘Yïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.7) >> >> Ç7Ž‘Additional–ÕTlanguage“examplesïpdf:eann’§¿â79ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.1) >> >> ²7.1Ž‘Strings–UUand“arra¸ãysïpdf:eann‘?y‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡79ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.2) >> >> 7.2Ž‘Quoted‘UUstringsïpdf:eann‘MÑü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡80ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.3) >> >> 7.3Ž‘Files–UUand“directoriesïpdf:eann‘Ûå‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡81ŽŽ¦‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.4) >> >> 7.4Ž‘Iteration,–UUmapping,“and“foreac¸ãhïpdf:eann‘8‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡82ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.5) >> >> 7.5Ž‘Lazy‘UUexpressionsïpdf:eann‘¼‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡83ŽŽŽŽŒ‹Ú s\È ý®£8‘#ï.pdf:dest (page.5) [@thispage /XYZ @xpos @ypos]ÄCONTENTS’1¿²5ŽŽ 8G ýÚŸ ‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.7.5.1) >> >> 7.5.1Ž‘ A–UUlarger“example“of“lazy“expressionsïpdf:eann‘鳑ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡84ŽŽ¤ ‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.6) >> >> 7.6Ž‘Scoping–UUand“expGortsïpdf:eann‘?o‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡86ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.7) >> >> 7.7Ž‘Shell‘UUaliasesïpdf:eann‘ÿœ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡87ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.8) >> >> 7.8Ž‘Input/output–UUredirection“on“the“c¸ãheapïpdf:eann‘)Ç‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡88ŽŽ©&€‘#ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.8) >> >> Ç8Ž‘Rulesïpdf:eann’"|$89ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.1) >> >> ²8.1Ž‘Implicit‘UUrulesïpdf:eann‘øw‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡90ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.2) >> >> 8.2Ž‘Bounded–UUimplicit“rulesïpdf:eann‘›Ù‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡90ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.3) >> >> 8.3Ž‘sectionïpdf:eann‘ñ|‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡91ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.4) >> >> 8.4Ž‘section‘UUruleïpdf:eann‘?‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡91ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.5) >> >> 8.5Ž‘Sp•Gecial‘UUdep“endenciesïpdf:eann‘ «‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡91ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.5.1) >> >> 8.5.1Ž‘ :exists:ïpdf:eann‘F²‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡91ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.5.2) >> >> 8.5.2Ž‘ :e ects:ïpdf:eann‘Tä‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡92ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.5.3) >> >> 8.5.3Ž‘ :v‘ÿqÇalue:ïpdf:eann‘ Í‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡92ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.6) >> >> 8.6Ž‘óßê> >> 8.6.1Ž‘ Named–UUscanners,“and“the“È:scanner:‘qDzdepGendenciesïpdf:eann‘Z‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡94ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.6.2) >> >> 8.6.2Ž‘ Notesïpdf:eann‘Tì‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡95ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.7) >> >> 8.7Ž‘.DEF‘þãA¸ãUL‘ÿ*ªTïpdf:eann‘Tò‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡95ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.8) >> >> 8.8Ž‘.SUBDIRSïpdf:eannx†‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡95ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.9) >> >> 8.9Ž‘.INCLUDEïpdf:eann‘¸‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡96ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.10) >> >> 8.10Ž‘.PHONYïpdf:eann‘±j‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡96ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.11) >> >> 8.11Ž‘Rule‘UUscopingïpdf:eann‘\‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡97ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.11.1) >> >> 8.11.1Ž‘ Scoping–UUof“implicit“rulesïpdf:eann‘ø$‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡98ŽŽŸ ‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.11.2) >> >> 8.11.2Ž‘ Scoping–UUof‘rÈ.SCANNER“²rulesïpdf:eann‘M‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡98ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.11.3) >> >> 8.11.3Ž‘ Scoping–UUfor“È.PHONY“²targetsïpdf:eann‘ÿG‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘¡99ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.12) >> >> 8.12Ž‘Running–UUOMak¸ãe“from“a“subGdirectoryïpdf:eann‘F?‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  100ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.12.1) >> >> 8.12.1Ž‘ Phon¸ãy–UUtargets“in“a“subGdirectoryïpdf:eann‘Æ;‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  100ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.12.2) >> >> 8.12.2Ž‘ Hierarc•¸ãh“y–UUof‘rÈ.PHONY“²targetsïpdf:eann‘¿H‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  101ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.13) >> >> 8.13Ž‘P¸ãathnames–UUin“rulesïpdf:eann‘³‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  101ŽŽ¦‘#ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.9) >> >> Ç9Ž‘Base‘ÕTlibraryïpdf:eann’ûmú103ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.9.1) >> >> ²9.1Ž‘Builtin‘UUv‘ÿqÇariablesïpdf:eann‘Æœ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  103ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.9.2) >> >> 9.2Ž‘Logic,–UUBoGolean“functions,“and“conš¸ãtrol“ o˜wïpdf:eann‘&‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  104ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.1) >> >> 9.2.1Ž‘ notïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  105ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.2) >> >> 9.2.2Ž‘ equalïpdf:eannFº‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  105ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.3) >> >> 9.2.3Ž‘ andïpdf:eann‘8‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  105ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.4) >> >> 9.2.4Ž‘ orïpdf:eann‘£5‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  105ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.5) >> >> 9.2.5Ž‘ ifïpdf:eann‘ñu‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  106ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.6) >> >> 9.2.6Ž‘ switc•¸ãh,‘UUmatc“hïpdf:eann‘›ç‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  106ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.7) >> >> 9.2.7Ž‘ tryïpdf:eann‘x‰‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  107ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.8) >> >> 9.2.8Ž‘ raiseïpdf:eann‘?Ÿ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  108ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.9) >> >> 9.2.9Ž‘ exitïpdf:eann‘ñe‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  108ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.10) >> >> 9.2.10Ž‘ de nedïpdf:eann‘ƪ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  108ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.11) >> >> 9.2.11Ž‘ de ned-en¸ãvïpdf:eann‘ÿ}‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  109ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.12) >> >> 9.2.12Ž‘ geten¸ãvïpdf:eann‘Ʋ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  109ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.13) >> >> 9.2.13Ž‘ seten¸ãvïpdf:eann‘Ôì‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  110ŽŽŽŽŒ‹ ß s\È ý®£8‘Yï.pdf:dest (page.6) [@thispage /XYZ @xpos @ypos]²6’1¿ÄCONTENTSŽŽ 8G ýÚŸ ‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.14) >> >> ²9.2.14Ž‘ unseten¸ãvïpdf:eann‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  110ŽŽ¤ ‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.15) >> >> 9.2.15Ž‘ get-registryïpdf:eann‘›ï‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  110ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.16) >> >> 9.2.16Ž‘ getv‘ÿqÇarïpdf:eann‘##‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  111ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.2.17) >> >> 9.2.17Ž‘ setv‘ÿqÇarïpdf:eann‘1]‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  111ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.9.3) >> >> 9.3Ž‘Arra¸ãys–UUand“sequencesïpdf:eannæ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  111ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.1) >> >> 9.3.1Ž‘ arra¸ãyïpdf:eann‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  111ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.2) >> >> 9.3.2Ž‘ splitïpdf:eann‘c,‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  112ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.3) >> >> 9.3.3Ž‘ concatïpdf:eann‘Ʋ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  112ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.4) >> >> 9.3.4Ž‘ lengthïpdf:eann‘ã#‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  112ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.5) >> >> 9.3.5Ž‘ n¸ãthïpdf:eann‘Ôû‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  112ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.6) >> >> 9.3.6Ž‘ replace-n¸ãthïpdf:eann‘Í·‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  113ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.7) >> >> 9.3.7Ž‘ n¸ãth-hdïpdf:eann‘ñ\‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  113ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.8) >> >> 9.3.8Ž‘ n¸ãth-tlïpdf:eann‘c$‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  113ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.9) >> >> 9.3.9Ž‘ subrangeïpdf:eann‘±L‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  113ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.10) >> >> 9.3.10Ž‘ revïpdf:eann‘êQ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  114ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.11) >> >> 9.3.11Ž‘ joinïpdf:eann‘ñd‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  114ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.12) >> >> 9.3.12Ž‘ stringïpdf:eann‘²‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  114ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.13) >> >> 9.3.13Ž‘ string-lengthïpdf:eann‘”É‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  114ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.14) >> >> 9.3.14Ž‘ string-escap•Ged,›qÇo“caml-escap“ed,˜h¸ãtml-escap“ed,˜h¸ãtml-pre-escap“ed,Ž¡’Ÿc-escap•Ged,‘UUid-escap“edïpdf:eannq‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  114ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.15) >> >> 9.3.15Ž‘ deco•Gde-uri,‘UUenco“de-uriïpdf:eann‘bÚ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  115ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.16) >> >> 9.3.16Ž‘ quoteïpdf:eann‘ñ]‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  115ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.17) >> >> 9.3.17Ž‘ quote-argvïpdf:eann‘¿|‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  115ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.18) >> >> 9.3.18Ž‘ h¸ãtml-stringïpdf:eann‘¿|‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  116ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.19) >> >> 9.3.19Ž‘ addsuxïpdf:eann‘qJ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  116ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.20) >> >> 9.3.20Ž‘ mapsuxïpdf:eann‘ª-‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  116ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.21) >> >> 9.3.21Ž‘ addsuxesïpdf:eann‘ÔÑ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  116ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.22) >> >> 9.3.22Ž‘ remo•¸ãv“epre xïpdf:eann‘›æ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  117ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.23) >> >> 9.3.23Ž‘ remo•¸ãv“esuxïpdf:eannx_‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  117ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.24) >> >> 9.3.24Ž‘ replacesuxesïpdf:eann#‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  117ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.25) >> >> 9.3.25Ž‘ addpre xïpdf:eann‘ͼ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  117ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.26) >> >> 9.3.26Ž‘ mappre xïpdf:eann‘Ÿ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  117ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.27) >> >> 9.3.27Ž‘ add-wrappGerïpdf:eann‘ã‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  118ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.28) >> >> 9.3.28Ž‘ setïpdf:eann‘FÄ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  118ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.29) >> >> 9.3.29Ž‘ memïpdf:eann‘8‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  118ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.30) >> >> 9.3.30Ž‘ in¸ãtersectionïpdf:eann‘Ó‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  118ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.31) >> >> 9.3.31Ž‘ in¸ãtersectsïpdf:eann‘±O‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  119ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.32) >> >> 9.3.32Ž‘ set-di ïpdf:eann‘Të‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  119ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.33) >> >> 9.3.33Ž‘  lterïpdf:eann‘¿ž‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  119ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.34) >> >> 9.3.34Ž‘  lter-outïpdf:eann‘†©‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  119ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.35) >> >> 9.3.35Ž‘ capitalizeïpdf:eann‘¾‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  120ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.36) >> >> 9.3.36Ž‘ uncapitalizeïpdf:eann‘8_‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  120ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.37) >> >> 9.3.37Ž‘ uppGercaseïpdf:eann‘†¢‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  120ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.38) >> >> 9.3.38Ž‘ lo•¸ãw“ercaseïpdf:eann‘¥‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  120ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.39) >> >> 9.3.39Ž‘ systemïpdf:eann‘F²‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  120ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.40) >> >> 9.3.40Ž‘ shellïpdf:eann‘Ôô‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  121ŽŽŽŽŒ‹h‰ s\È ý®£8‘#ï.pdf:dest (page.7) [@thispage /XYZ @xpos @ypos]ÄCONTENTS’1¿²7ŽŽ 8G ýÚŸ ‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.41) >> >> 9.3.41Ž‘ expGortïpdf:eann‘¿”‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  121ŽŽ¤ v‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.42) >> >> 9.3.42Ž‘ whileïpdf:eann‘בü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  121ŽŽ© w‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.43) >> >> 9.3.43Ž‘ breakïpdf:eann‘ê@‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  122ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.44) >> >> 9.3.44Ž‘ random,‘UUrandom-initïpdf:eann‘)ù‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  123ŽŽ¦‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.9.4) >> >> 9.4Ž‘Arithmeticïpdf:eann¿‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  123ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.4.1) >> >> 9.4.1Ž‘ in¸ãtïpdf:eann‘œ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  123ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.4.2) >> >> 9.4.2Ž‘  oatïpdf:eann‘ã+‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  123ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.4.3) >> >> 9.4.3Ž‘ Basic‘UUarithmeticïpdf:eann‘*‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  123ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.4.4) >> >> 9.4.4Ž‘ Comparisonsïpdf:eann‘øW‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  124ŽŽ¦‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.9.5) >> >> 9.5Ž‘First-class‘UUfunctionsïpdf:eann‘›ä‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  124ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.5.1) >> >> 9.5.1Ž‘ funïpdf:eann‘c3‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  124ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.5.2) >> >> 9.5.2Ž‘ applyïpdf:eann‘ñ[‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  125ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.5.3) >> >> 9.5.3Ž‘ apply¸ãaïpdf:eann‘8w‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  125ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.5.4) >> >> 9.5.4Ž‘ create-map,‘UUcreate-lazy-mapïpdf:eann‘ÆO‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  125ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.9.6) >> >> 9.6Ž‘Iteration–UUand“mappingïpdf:eann‘[בü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  126ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.6.1) >> >> 9.6.1Ž‘ foreac¸ãhïpdf:eann‘¿Ž‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  126ŽŽ¦‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.9.7) >> >> 9.7Ž‘BoGolean‘UUtestsïpdf:eann‘†¯‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  126ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.7.1) >> >> 9.7.1Ž‘ sequence-forallïpdf:eann‘Š‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  126ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.7.2) >> >> 9.7.2Ž‘ sequence-existsïpdf:eann‘FŒ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  127ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.7.3) >> >> 9.7.3Ž‘ sequence-sortïpdf:eann‘”‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  127ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.7.4) >> >> 9.7.4Ž‘ compareïpdf:eann‘1T‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  127ŽŽŸ‘#ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.10) >> >> Ç10Ž‘File,–ÕTI/O“and“system“opQÇerationsïpdf:eann’—X129ŽŽ¦‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.1) >> >> ²10.1Ž‘File‘UUnamesïpdf:eannjN‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  129ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.1) >> >> 10.1.1Ž‘  le,‘UUdirïpdf:eann‘¿Ž‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  129ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.2) >> >> 10.1.2Ž‘ tmp leïpdf:eann‘Í‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  130ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.3) >> >> 10.1.3Ž‘ inïpdf:eann‘8Š‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  130ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.4) >> >> 10.1.4Ž‘ basenameïpdf:eann‘c‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  130ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.5) >> >> 10.1.5Ž‘ dirnameïpdf:eann‘MÅ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  131ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.6) >> >> 10.1.6Ž‘ roGotnameïpdf:eann‘?ƒ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  131ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.7) >> >> 10.1.7Ž‘ dirofïpdf:eann‘¹‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  131ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.8) >> >> 10.1.8Ž‘ fullnameïpdf:eann‘c‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  131ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.9) >> >> 10.1.9Ž‘ absnameïpdf:eann‘ Å‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  131ŽŽ¦‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.10) >> >> 10.1.10Ž‘ homenameïpdf:eann‘Ƙ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  132ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.11) >> >> 10.1.11Ž‘ suxïpdf:eann8€‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  132ŽŽ¦‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.2) >> >> 10.2Ž‘P•¸ãath‘UUsearc“hïpdf:eann‘ÿ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  132ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.2.1) >> >> 10.2.1Ž‘ whic¸ãhïpdf:eann‘Ôì‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  132ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.2.2) >> >> 10.2.2Ž‘ whereïpdf:eann‘†´‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  132ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.2.3) >> >> 10.2.3Ž‘ rehashïpdf:eann‘±]‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  132ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.2.4) >> >> 10.2.4Ž‘ exists-in-pathïpdf:eann‘ñ;‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  133ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.2.5) >> >> 10.2.5Ž‘ digest,‘UUdigest-optionalïpdf:eann‘âבü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  133ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.2.6) >> >> 10.2.6Ž‘  nd-in-path,‘UU nd-in-path-optionalïpdf:eann‘7î‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  133ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.2.7) >> >> 10.2.7Ž‘ digest-in-path,‘UUdigest-in-path-optionalïpdf:eann‘⊑ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  133ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.3) >> >> 10.3Ž‘File‘UUstatsïpdf:eann‘Á‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  134ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.3.1) >> >> 10.3.1Ž‘  le-exists,–UUtarget-exists,“target-is-propGerïpdf:eann‘TO‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  134ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.3.2) >> >> 10.3.2Ž‘ stat-resetïpdf:eann‘øk‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  134ŽŽŽŽŒ‹· s\È ý®£8‘Yï.pdf:dest (page.8) [@thispage /XYZ @xpos @ypos]²8’1¿ÄCONTENTSŽŽ 8G ýÚŸ ‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.3.3) >> >> ²10.3.3Ž‘  lter-exists,–UU lter-targets,“ lter-propGer-targetsïpdf:eann‘Í‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  134ŽŽ¤ ‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.3.4) >> >> 10.3.4Ž‘  nd-targets-in-path,‘UU nd-targets-in-path-optionalïpdf:eann‘›:‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  135ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.3.5) >> >> 10.3.5Ž‘  nd-oGcaml-targets-in-path-optionalïpdf:eann‘i¶‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  136ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.3.6) >> >> 10.3.6Ž‘  le-sortïpdf:eann‘«‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  136ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.10.3.6.1) >> >> 10.3.6.1Ž‘)sort‘UUruleïpdf:eann‘Æu‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  137ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.3.7) >> >> 10.3.7Ž‘  le-c•¸ãhec“k-sortïpdf:eann‘j"‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  137ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.4) >> >> 10.4Ž‘Globbing–UUand“ le“listingsïpdf:eann&{‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  137ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.4.1) >> >> 10.4.1Ž‘ globïpdf:eann‘ÿ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  139ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.4.2) >> >> 10.4.2Ž‘ lsïpdf:eann‘ è‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  140ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.4.3) >> >> 10.4.3Ž‘ subGdirsïpdf:eann‘[ÿ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  140ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.5) >> >> 10.5Ž‘Filesystem‘UUopGerationsïpdf:eann‘ñ/‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  140ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.1) >> >> 10.5.1Ž‘ mkdirïpdf:eann‘?”‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  140ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.2) >> >> 10.5.2Ž‘ Statïpdf:eann‘ÿ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  141ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.3) >> >> 10.5.3Ž‘ stat,‘UUlstatïpdf:eann‘TÚ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  141ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.4) >> >> 10.5.4Ž‘ unlinkïpdf:eann‘œ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  142ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.5) >> >> 10.5.5Ž‘ renameïpdf:eann‘1U‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  142ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.6) >> >> 10.5.6Ž‘ linkïpdf:eann‘ñd‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  143ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.7) >> >> 10.5.7Ž‘ symlinkïpdf:eann‘ñR‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  143ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.8) >> >> 10.5.8Ž‘ readlinkïpdf:eann‘”á‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  143ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.9) >> >> 10.5.9Ž‘ c¸ãhmoGdïpdf:eann‘8x‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  143ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.10) >> >> 10.5.10Ž‘ c•¸ãho“wnïpdf:eann‘ã%‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  144ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.11) >> >> 10.5.11Ž‘ truncateïpdf:eann‘1T‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  144ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.5.12) >> >> 10.5.12Ž‘ umaskïpdf:eann‘ÿ”‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  144ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.6) >> >> 10.6Ž‘vmoun¸ãtïpdf:eann‘qq‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  144ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.6.1) >> >> 10.6.1Ž‘ vmoun¸ãtïpdf:eann‘Ä‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  144ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.6.2) >> >> 10.6.2Ž‘ add-pro‘Ž8ject-directoriesïpdf:eann‘[¾‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  145ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.6.3) >> >> 10.6.3Ž‘ remo•¸ãv“e-pro‘Ž8ject-directoriesïpdf:eann‘)è‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  145ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.7) >> >> 10.7Ž‘File‘UUpredicatesïpdf:eann‘ Å‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  145ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.7.1) >> >> 10.7.1Ž‘ testïpdf:eann‘*J‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  145ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.7.2) >> >> 10.7.2Ž‘  ndïpdf:eann‘ªH‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  147ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.8) >> >> 10.8Ž‘IO‘UUfunctionsïpdf:eann‘Ôï‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  148ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.1) >> >> 10.8.1Ž‘ Standard‘UUc¸ãhannelsïpdf:eann‘1!‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  148ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.2) >> >> 10.8.2Ž‘ opGen-in-stringïpdf:eann‘M¬‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  149ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.3) >> >> 10.8.3Ž‘ opGen-out-string,‘UUout-con•¸ãten“tsïpdf:eann‘"·‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  149ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.4) >> >> 10.8.4Ž‘ fopGenïpdf:eann‘8x‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  149ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.5) >> >> 10.8.5Ž‘ closeïpdf:eann‘¸ƒ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  150ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.6) >> >> 10.8.6Ž‘ read,‘UUinput-lineïpdf:eann‘¿k‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  150ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.7) >> >> 10.8.7Ž‘ writeïpdf:eann‘ô‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  150ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.8) >> >> 10.8.8Ž‘ lseekïpdf:eann‘qf‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  150ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.9) >> >> 10.8.9Ž‘ rewindïpdf:eann‘£$‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  151ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.10) >> >> 10.8.10Ž‘ tellïpdf:eann‘ªQ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  151ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.11) >> >> 10.8.11Ž‘  ushïpdf:eann‘¸‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  151ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.12) >> >> 10.8.12Ž‘ c¸ãhannel-nameïpdf:eann‘t‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  151ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.13) >> >> 10.8.13Ž‘ dupïpdf:eann‘ªH‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  151ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.14) >> >> 10.8.14Ž‘ dup2ïpdf:eann‘ªG‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  152ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.15) >> >> 10.8.15Ž‘ set-non•¸ãbloGc“kïpdf:eann‘¸X‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  152ŽŽŽŽŒ‹ „ s\È ý®£8‘#ï.pdf:dest (page.9) [@thispage /XYZ @xpos @ypos]ÄCONTENTS’1¿²9ŽŽ 8G ýÚŸ ‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.16) >> >> 10.8.16Ž‘ set-close-on-exec-moGdeïpdf:eann‘À‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  152ŽŽ¤ ‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.17) >> >> 10.8.17Ž‘ pipGeïpdf:eann‘¸‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  152ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.18) >> >> 10.8.18Ž‘ mk foïpdf:eann‘ã!‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  152ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.19) >> >> 10.8.19Ž‘ selectïpdf:eann‘*C‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  153ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.20) >> >> 10.8.20Ž‘ loGc¸ãkfïpdf:eann‘ƹ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  153ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.21) >> >> 10.8.21Ž‘ InetAddrïpdf:eann‘£‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  154ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.22) >> >> 10.8.22Ž‘ Hostïpdf:eann‘ÿž‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  154ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.23) >> >> 10.8.23Ž‘ gethostb¸ãynameïpdf:eann‘bø‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  154ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.24) >> >> 10.8.24Ž‘ ProtoGcolïpdf:eann‘ƨ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  154ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.25) >> >> 10.8.25Ž‘ getprotob¸ãynameïpdf:eann‘1(‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  154ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.26) >> >> 10.8.26Ž‘ Serviceïpdf:eann?–‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  155ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.27) >> >> 10.8.27Ž‘ getservb¸ãynameïpdf:eann‘12‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  155ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.28) >> >> 10.8.28Ž‘ soGc•¸ãk“etïpdf:eann‘c%‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  155ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.29) >> >> 10.8.29Ž‘ bindïpdf:eann‘ã+‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  156ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.30) >> >> 10.8.30Ž‘ listenïpdf:eann‘¸z‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  156ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.31) >> >> 10.8.31Ž‘ acceptïpdf:eann‘Tì‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  156ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.32) >> >> 10.8.32Ž‘ connectïpdf:eann‘Ç‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  156ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.33) >> >> 10.8.33Ž‘ getc¸ãharïpdf:eann‘ê9‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  157ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.34) >> >> 10.8.34Ž‘ getsïpdf:eann‘ Ø‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  157ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.35) >> >> 10.8.35Ž‘ fgetsïpdf:eann‘ÿž‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  157ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.9) >> >> 10.9Ž‘Prin¸ãting‘UUfunctionsïpdf:eann‘TÍ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  157ŽŽ¡‘2ïkpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.10) >> >> 10.10Ž‘V‘ÿ*ªalue–UUprin¸ãting“functionsïpdf:eann‘"í‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  158ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.10.1) >> >> 10.10.1Ž‘ Miscellaneous‘UUfunctionsïpdf:eann‘ñ ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  158ŽŽ¡‘iïupdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.10.10.1.1) >> >> 10.10.1.1Ž‘)set-c¸ãhannel-lineïpdf:eannT•‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  158ŽŽ¡‘2ïkpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.11) >> >> 10.11Ž‘Higher-lev¸ãel–UUIO“functionsïpdf:eann‘¿Y‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  158ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.1) >> >> 10.11.1Ž‘ Regular‘UUexpressionsïpdf:eann‘"ã‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  158ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.2) >> >> 10.11.2Ž‘ catïpdf:eann‘8Š‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  161ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.3) >> >> 10.11.3Ž‘ grepïpdf:eann‘jI‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  161ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.4) >> >> 10.11.4Ž‘ scanïpdf:eann‘c-‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  161ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.5) >> >> 10.11.5Ž‘ a¸ãwkïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  163ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.6) >> >> 10.11.6Ž‘ fsubstïpdf:eann‘*@‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  165ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.7) >> >> 10.11.7Ž‘ lexïpdf:eann‘ ß‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  165ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.8) >> >> 10.11.8Ž‘ lex-searc¸ãhïpdf:eann‘ÍÀ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  166ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.9) >> >> 10.11.9Ž‘ Lexerïpdf:eann‘Ƴ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  167ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.10) >> >> 10.11.10Ž‘ Lexer‘UUmatc¸ãhingïpdf:eann‘ ¤‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  168ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.11) >> >> 10.11.11Ž‘ Extending–UUlexer“de nitionsïpdf:eann‘ÿ/‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  168ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.12) >> >> 10.11.12Ž‘ Threading–UUthe“lexer“ob‘Ž8jectïpdf:eann‘¸‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  169ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.13) >> >> 10.11.13Ž‘ P¸ãarserïpdf:eann‘\ ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  169ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.14) >> >> 10.11.14Ž‘ Calling–UUthe“parserïpdf:eann‘Αü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  171ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.15) >> >> 10.11.15Ž‘ P•¸ãarsing‘UUcon“trolïpdf:eann‘¢ú‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  171ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.16) >> >> 10.11.16Ž‘ Extending‘UUparsersïpdf:eann‘¢é‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  171ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.17) >> >> 10.11.17Ž‘ P¸ãasswdïpdf:eann‘±V‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  172ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.18) >> >> 10.11.18Ž‘ getp•¸ãwnam,‘UUgetp“wuidïpdf:eann‘Æn‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  173ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.19) >> >> 10.11.19Ž‘ getp•¸ãw“en“tsïpdf:eann‘À‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  173ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.20) >> >> 10.11.20Ž‘ Groupïpdf:eann‘<‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  173ŽŽ¡‘Iïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.21) >> >> 10.11.21Ž‘ getgrnam,‘UUgetgrgidïpdf:eann‘¸<‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  173ŽŽŽŽŒ‹ P¾ s\È ý®£8‘Yï/pdf:dest (page.10) [@thispage /XYZ @xpos @ypos]²10’1¾ÄCONTENTSŽŽ 8G ýÚŸ ‘ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.22) >> >> ²10.11.22Ž‘ tgetstrïpdf:eann‘#$‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  174ŽŽ¤ ‘ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.23) >> >> 10.11.23Ž‘ xterm-escap•Ge-b“egin,‘UUxterm-escap“e-endïpdf:eann‘:‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  174ŽŽ¡‘ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.24) >> >> 10.11.24Ž‘ xterm-escapGeïpdf:eann‘ê ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  174ŽŽ¡‘ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.25) >> >> 10.11.25Ž‘ prompt-in•¸ãvisible-bGegin,‘UUprompt-in“visible-endïpdf:eannS‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  174ŽŽ¡‘ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.26) >> >> 10.11.26Ž‘ prompt-in¸ãvisibleïpdf:eann‘”·‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  174ŽŽ¡‘ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.27) >> >> 10.11.27Ž‘ gettimeofda¸ãyïpdf:eann‘ÔÇ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  175ŽŽ©&€‘Yïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.11) >> >> Ç11Ž‘Shell‘ÕTcommandsïpdf:eann’çŒ:177ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.1) >> >> ²11.1Ž‘Simple‘UUcommandsïpdf:eann‘x‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  177ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.2) >> >> 11.2Ž‘Globbingïpdf:eann‘|‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  178ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.3) >> >> 11.3Ž‘Bac¸ãkground‘UUjobsïpdf:eann‘ª*‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  178ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.4) >> >> 11.4Ž‘File‘UUredirectionïpdf:eann‘MÄ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  178ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.5) >> >> 11.5Ž‘PipGelinesïpdf:eannjV‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  178ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.6) >> >> 11.6Ž‘Conditional‘UUexecutionïpdf:eann‘*‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  179ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.7) >> >> 11.7Ž‘Groupingïpdf:eann‘X†‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  179ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.8) >> >> 11.8Ž‘What–UUis“a“shell“command?ïpdf:eann‘T­‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  179ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.9) >> >> 11.9Ž‘Basic–UUbuiltin“functionsïpdf:eann‘j‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  180ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.9.1) >> >> 11.9.1Ž‘ ec¸ãhoïpdf:eann‘*J‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  180ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.9.2) >> >> 11.9.2Ž‘ cdïpdf:eann‘à‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  180ŽŽ¡‘hïkpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.10) >> >> 11.10Ž‘Job–UUcon¸ãtrol“builtin“functionsïpdf:eann‘©÷‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.10.1) >> >> 11.10.1Ž‘ jobsïpdf:eann‘ƺ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.10.2) >> >> 11.10.2Ž‘ bgïpdf:eann‘ÿ¦‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.10.3) >> >> 11.10.3Ž‘ fgïpdf:eann‘¦‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽŸ ‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.10.4) >> >> 11.10.4Ž‘ stopïpdf:eann‘ñe‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.10.5) >> >> 11.10.5Ž‘ w¸ãaitïpdf:eann‘¸‚‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.10.6) >> >> 11.10.6Ž‘ killïpdf:eann‘ñl‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽ¡‘hïkpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.11.11) >> >> 11.11Ž‘Command‘UUhistoryïpdf:eann‘¿w‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.11.11.1) >> >> 11.11.1Ž‘ historyïpdf:eann‘¿”‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  181ŽŽ¦‘Yïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.12) >> >> Ç12Ž‘The–ÕTstandard“ob‘£Žjectsïpdf:eann’ͦ”183ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.12.1) >> >> ²12.1Ž‘P•¸ãerv‘ÿqÇasiv“es‘UUob‘Ž8jectsïpdf:eann‘}‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  183ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.1) >> >> 12.1.1Ž‘ Ob‘Ž8jectïpdf:eann‘c$‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  183ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.2) >> >> 12.1.2Ž‘ Mapïpdf:eann‘œ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  184ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.3) >> >> 12.1.3Ž‘ Num¸ãbGerïpdf:eann‘”â‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  185ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.4) >> >> 12.1.4Ž‘ In¸ãtïpdf:eann‘ÆÃ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  185ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.5) >> >> 12.1.5Ž‘ Floatïpdf:eann#*‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  185ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.6) >> >> 12.1.6Ž‘ Sequenceïpdf:eann‘ñN‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  186ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.7) >> >> 12.1.7Ž‘ Arra¸ãyïpdf:eann‘Ʋ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  187ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.8) >> >> 12.1.8Ž‘ Stringïpdf:eann‘j?‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  187ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.9) >> >> 12.1.9Ž‘ F‘ÿ*ªunïpdf:eann‘†º‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  187ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.10) >> >> 12.1.10Ž‘ Ruleïpdf:eann‘1f‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  187ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.11) >> >> 12.1.11Ž‘ T‘ÿ*ªargetïpdf:eann‘xz‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  187ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.12) >> >> 12.1.12Ž‘ NoGdeïpdf:eann‘Ö‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  188ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.13) >> >> 12.1.13Ž‘ Fileïpdf:eann‘Íבü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  189ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.14) >> >> 12.1.14Ž‘ Dirïpdf:eann‘8Š‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  189ŽŽ¡‘ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.15) >> >> 12.1.15Ž‘ Channelïpdf:eann‘Æ©‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  189ŽŽŽŽŒ‹ Ÿd s\È ý®£8‘#ï/pdf:dest (page.11) [@thispage /XYZ @xpos @ypos]ÄCONTENTS’1¾²11ŽŽ 8G ýÚŸ ‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.16) >> >> 12.1.16Ž‘ InChannelïpdf:eann‘c‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  189ŽŽ¤ —‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.17) >> >> 12.1.17Ž‘ OutChannelïpdf:eann‘ì‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  189ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.18) >> >> 12.1.18Ž‘ LoGcationïpdf:eann‘±R‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  190ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.19) >> >> 12.1.19Ž‘ Exceptionïpdf:eann‘ê.‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  190ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.20) >> >> 12.1.20Ž‘ Run¸ãtimeExceptionïpdf:eann‘*‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  190ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.21) >> >> 12.1.21Ž‘ Un¸ãbuildableExceptionïpdf:eann‘”œ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  190ŽŽ¡‘Iïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.22) >> >> 12.1.22Ž‘ Shellïpdf:eann‘8‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  191ŽŽŸý‘#ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.13) >> >> Ç13Ž‘Build–ÕTfunctions“and“utilitiesïpdf:eann’«ßƒ195ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.1) >> >> ²13.1Ž‘Builtin–UU.PHONY“targetsïpdf:eann‘¿^‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  195ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.2) >> >> 13.2Ž‘Options–UUand“v¸ãersioningïpdf:eann‘¿f‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  196ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.2.1) >> >> 13.2.1Ž‘ OMak¸ãeFlagsïpdf:eann‘”È‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  196ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.2.2) >> >> 13.2.2Ž‘ OMak¸ãeV‘ÿ*ªersionïpdf:eann‘M¥‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  196ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.2.3) >> >> 13.2.3Ž‘ cmp-v¸ãersionsïpdf:eann‘øY‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  197ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.2.4) >> >> 13.2.4Ž‘ De neCommandV‘ÿ*ªarsïpdf:eann‘)ü‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  197ŽŽ© ˜‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.3) >> >> 13.3Ž‘Examining–UUthe“depGendency“graphïpdf:eann‘k‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  197ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.3.1) >> >> 13.3.1Ž‘ dep•Gendencies,›UUdep“endencies-all,˜dep“endencies-prop“erïpdf:eann‘7£‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ‘  197ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.3.2) >> >> 13.3.2Ž‘ targetïpdf:eann‘øy‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  198ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.3.3) >> >> 13.3.3Ž‘  nd-build-targetsïpdf:eann‘"ð‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  198ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.3.4) >> >> 13.3.4Ž‘ pro‘Ž8ject-directoriesïpdf:eann‘?^‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  199ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.3.5) >> >> 13.3.5Ž‘ ruleïpdf:eann‘£-‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  199ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.3.6) >> >> 13.3.6Ž‘ buildïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  200ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.4) >> >> 13.4Ž‘The–UUOMak¸ãeroGot“ leïpdf:eannM²‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  200ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.4.1) >> >> 13.4.1Ž‘ V‘ÿ*ªariablesïpdf:eann‘”Û‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  200ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.4.2) >> >> 13.4.2Ž‘ System‘UUv‘ÿqÇariablesïpdf:eann‘ÛÔ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  200ŽŽ¡‘2ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.5) >> >> 13.5Ž‘Building–UUC“and“C++“coGdeïpdf:eann‘M‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  201ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.5.1) >> >> 13.5.1Ž‘ AutoGcon guration‘UUv‘ÿqÇariablesïpdf:eann‘,‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  201ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.1.1) >> >> 13.5.1.1Ž‘)Unix-lik¸ãe‘UUsystemsïpdf:eann‘⼑ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  201ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.1.2) >> >> 13.5.1.2Ž‘)Win32ïpdf:eannbô‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  202ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.5.2) >> >> 13.5.2Ž‘ C–UUand“C++“con guration“v‘ÿqÇariablesïpdf:eann‘·ð‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  202ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.5.3) >> >> 13.5.3Ž‘ Generated–UUC“ lesïpdf:eann‘.‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  203ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.3.1) >> >> 13.5.3.1Ž‘)CGeneratedFiles,‘UULoGcalCGeneratedFilesïpdf:eann‘T ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  203ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.5.4) >> >> 13.5.4Ž‘ Building–UUC“programs“and“Librariesïpdf:eann‘F‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  204ŽŽ¦‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.1) >> >> 13.5.4.1Ž‘)StaticCLibrary,‘UUDynamicCLibraryïpdf:eann‘金ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  204ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.2) >> >> 13.5.4.2Ž‘)StaticCLibraryCop•¸ãy,‘UUDynamicCLibraryCop“yïpdf:eann‘Å‘ü.ŽŽ‘Ç‘ü.ŽŽ‘  204ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.3) >> >> 13.5.4.3Ž‘)StaticCLibraryInstall,‘UUDynamicCLibraryInstallïpdf:eann‘> ‘ü.ŽŽ‘  204ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.4) >> >> 13.5.4.4Ž‘)StaticCOb–Ž8ject,‘GStaticCOb“jectCop¸ãy‘ÿ*ª,‘GStaticCOb-Ž© ’’jectInstallïpdf:eann‘*‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  205ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.5) >> >> 13.5.4.5Ž‘)CProgramïpdf:eann‘"Ü‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  205ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.6) >> >> 13.5.4.6Ž‘)CProgramCop¸ãyïpdf:eann‘°û‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  205ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.7) >> >> 13.5.4.7Ž‘)CProgramInstallïpdf:eann‘éÞ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  205ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.8) >> >> 13.5.4.8Ž‘)CXXProgram,‘UUCXXProgramInstallïpdf:eann‘)‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  206ŽŽ¡‘iïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.5.4.9) >> >> 13.5.4.9Ž‘)StaticCXXLibrary,–qÇStaticCXXLibraryCop¸ãy‘ÿ*ª,“Stat-ަ’’icCXXLibraryInstall,–qÇDynamicCXXLibrary‘ÿ*ª,“Dy-ަ’’namicCXXLibraryCop¸ãy‘ÿ*ª,‘qÇDynamicCXXLibraryIn-ަ’’stallïpdf:eann‘ÔÅ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  206ŽŽŽŽŒ‹ ê s\È ý®£8‘Yï/pdf:dest (page.12) [@thispage /XYZ @xpos @ypos]²12’1¾ÄCONTENTSŽŽ 8G ýÚŸ ‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.6) >> >> ²13.6Ž‘Building–UUOCaml“coGdeïpdf:eann‘j‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  206ŽŽ¤ 0‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.6.1) >> >> 13.6.1Ž‘ AutoGcon guration–UUv‘ÿqÇariables“for“OCaml“compilationïpdf:eannif‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  206ŽŽ© 1‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.6.2) >> >> 13.6.2Ž‘ Con guration–UUv‘ÿqÇariables“for“OCaml“compilationïpdf:eann‘M‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  206ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.6.3) >> >> 13.6.3Ž‘ OCaml–UUcommand“ agsïpdf:eann‘›¹‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  208ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.6.4) >> >> 13.6.4Ž‘ Library‘UUv‘ÿqÇariablesïpdf:eann‘›Ó‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  209ŽŽ¦‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.6.5) >> >> 13.6.5Ž‘ Generated–UUOCaml“Filesïpdf:eann‘‰î‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  209ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.5.1) >> >> 13.6.5.1Ž‘)OCamlGeneratedFiles,‘¿ÓLoGcalOCamlGenerated-Ž© ’ÈFilesïpdf:eann‘¿p‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  209ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.5.2) >> >> 13.6.5.2Ž‘)Automatic›Sàdisco•¸ãv“ery˜of‘Ságenerated˜ les˜duringަ’ÈdepGendency‘UUanalysisïpdf:eann‘#‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  210ŽŽ© 1‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.6.6) >> >> 13.6.6Ž‘ Using–UUthe“Menhir“parser“generatorïpdf:eann‘0Ù‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  210ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.6.1) >> >> 13.6.6.1Ž‘)OCamlLibraryïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  211ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.6.2) >> >> 13.6.6.2Ž‘)OCamlP•¸ãac“k‘ÿqÇageïpdf:eann‘éç‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  211ŽŽ¦’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.6.3) >> >> 13.6.6.3Ž‘)OCamlLibraryCop¸ãyïpdf:eann‘¢¯‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  212ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.6.4) >> >> 13.6.6.4Ž‘)OCamlLibraryInstallïpdf:eann‘¢§‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  212ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.6.5) >> >> 13.6.6.5Ž‘)OCamlProgramïpdf:eann‘”ˆ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  212ŽŽ¦’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.6.6) >> >> 13.6.6.6Ž‘)OCamlProgramCop¸ãyïpdf:eann‘"§‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  212ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.6.6.7) >> >> 13.6.6.7Ž‘)OCamlProgramInstallïpdf:eann‘[Š‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  212ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.7) >> >> 13.7Ž‘Building‘xâLŸýó5‘üffóÙ“ Rcmr7±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX‘UU lesïpdf:eann*ë‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  213ŽŽ¦‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.7.1) >> >> 13.7.1Ž‘ Con guration‘UUv‘ÿqÇariablesïpdf:eann‘bÍ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  213ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.13.7.2) >> >> 13.7.2Ž‘ Building‘xâLŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX‘UUdoGcumen¸ãtsïpdf:eannc‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  214ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.7.2.1) >> >> 13.7.2.1Ž‘)LaT‘ÿ*ªeXDoGcumen¸ãtïpdf:eann‘8‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  214ŽŽ¦’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.7.2.2) >> >> 13.7.2.2Ž‘)T–ÿ*ªeXš¸ãGeneratedFiles,‘UULoGcalT“eX˜GeneratedFilesïpdf:eann‘þµ‘ü.ŽŽ‘Ç‘ü.ŽŽ‘  214ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.7.2.3) >> >> 13.7.2.3Ž‘)LaT‘ÿ*ªeXDoGcumen•¸ãtCop“yïpdf:eann‘Æ8‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  214ŽŽ¡’Ÿïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.13.7.2.4) >> >> 13.7.2.4Ž‘)LaT‘ÿ*ªeXDoGcumen¸ãtInstallïpdf:eann‘Æ0‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  214ŽŽŸ(R‘Yïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.14) >> >> Ç14Ž‘AutoQÇcon guration–ÕTfunctions“and“v‘ÿ\rariablesïpdf:eann‘e¬215ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.14.1) >> >> ²14.1Ž‘General-purp•Gose›UUauto“con guration˜functionsïpdf:eannWã‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  215ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.1.1) >> >> 14.1.1Ž‘ ConfMsgChec¸ãking,‘UUConfMsgResultïpdf:eann‘”d‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  215ŽŽ¦‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.1.2) >> >> 14.1.2Ž‘ ConfMsgW‘ÿ*ªarn,‘UUConfMsgErrorïpdf:eann‘¿&‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  216ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.1.3) >> >> 14.1.3Ž‘ ConfMsgY–ÿ*ªesNo,‘UUConfMsgF“oundïpdf:eann‘s‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  216ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.1.4) >> >> 14.1.4Ž‘ T–ÿ*ªryCompileC,›UUT“ryLinkC,˜T“ryRunCïpdf:eannwó‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  216ŽŽ¦‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.1.5) >> >> 14.1.5Ž‘ RunCProgïpdf:eann?„‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  216ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.1.6) >> >> 14.1.6Ž‘ Chec•¸ãkCHeader,‘UUV‘ÿ*ªerbGoseChec“kCHeaderïpdf:eann‘?‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  217ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.1.7) >> >> 14.1.7Ž‘ Chec•¸ãkCLib,‘UUV‘ÿ*ªerbGoseChec“kCLibïpdf:eann‘°ê‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  217ŽŽ¦‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.1.8) >> >> 14.1.8Ž‘ Chec¸ãkProgïpdf:eann‘ ¶‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  217ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.14.2) >> >> 14.2Ž‘T‘ÿ*ªranslating‘xâÈautoconf‘UU²scriptsïpdf:eann‘„‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  217ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.14.3) >> >> 14.3Ž‘Prede ned–UUcon guration“testsïpdf:eann‘Í€‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  218ŽŽ¦‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.3.1) >> >> 14.3.1Ž‘ NCurses–UUlibrary“con gurationïpdf:eann‘`‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  218ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.3.2) >> >> 14.3.2Ž‘ ReadLine–UUlibrary“con gurationïpdf:eann‘x‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  218ŽŽ¡‘ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.14.3.3) >> >> 14.3.3Ž‘ Snprin¸ãtf‘UUcon gurationïpdf:eann‘ñ ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  219ŽŽŸ(R‘Yïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.15) >> >> Ç15Ž‘The–ÕTOSH“shellïpdf:eann’îÏÄ221ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.15.1) >> >> ²15.1Ž‘Startupïpdf:eann‘jU‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  221ŽŽ¦‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.15.2) >> >> 15.2Ž‘Aliasesïpdf:eann‘œ'‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  222ŽŽ¡‘hïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.15.3) >> >> 15.3Ž‘In•¸ãteractiv“e‘UUsyn“taxïpdf:eann‘¿z‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  222ŽŽŽŽŒ‹ ( s\È ý®£8‘#ï/pdf:dest (page.13) [@thispage /XYZ @xpos @ypos]ÄCONTENTS’1¾²13ŽŽ 8G ýÚŸ ‘#ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (appendix.A) >> >> ÇAŽ‘Synopsisïpdf:eann’ `223ŽŽ¤ EÑ‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.1) >> >> ²A.1Ž‘General‘UUusageïpdf:eann‘Øx‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  223ŽŽ© EÒ‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.2) >> >> A.2Ž‘Output‘UUcon¸ãtrolïpdf:eann‘¥‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  223ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.1) >> >> A.2.1Ž‘ È-sïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  223ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.2) >> >> A.2.2Ž‘ È-Sïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  223ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.3) >> >> A.2.3Ž‘ È-wïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  224ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.4) >> >> A.2.4Ž‘ È--progressïpdf:eann‘ñh‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  224ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.5) >> >> A.2.5Ž‘ È--print-statusïpdf:eann‘F³‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  224ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.6) >> >> A.2.6Ž‘ È--print-exitïpdf:eann‘ÿ˜‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  224ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.7) >> >> A.2.7Ž‘ È--verboseïpdf:eann‘1e‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  224ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.8) >> >> A.2.8Ž‘ È--output-normalïpdf:eann‘ÍË‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  224ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.9) >> >> A.2.9Ž‘ È--output-postponeïpdf:eann‘æ‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  224ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.10) >> >> A.2.10Ž‘ È--output-only-errorsïpdf:eann‘ã‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  225ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.11) >> >> A.2.11Ž‘ È--output-at-endïpdf:eann‘ÍË‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  225ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.12) >> >> A.2.12Ž‘ È-oïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  225ŽŽ¦‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.3) >> >> A.3Ž‘Build‘UUoptionsïpdf:eann‘MÉ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  226ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.1) >> >> A.3.1Ž‘ È-kïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  226ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.2) >> >> A.3.2Ž‘ È-nïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  226ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.3) >> >> A.3.3Ž‘ È-pïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  226ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.4) >> >> A.3.4Ž‘ È-Pïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  226ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.5) >> >> A.3.5Ž‘ È-Rïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  227ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.6) >> >> A.3.6Ž‘ È-tïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  227ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.7) >> >> A.3.7Ž‘ È-Uïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  227ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.8) >> >> A.3.8Ž‘ È--dependïpdf:eann‘ªM‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  227ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.9) >> >> A.3.9Ž‘ È--configureïpdf:eann‘x€‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  227ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.10) >> >> A.3.10Ž‘ È--force-dotomakeïpdf:eann‘Αü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  227ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.11) >> >> A.3.11Ž‘ È--dotomakeïpdf:eann‘ñh‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  228ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.12) >> >> A.3.12Ž‘ È-jïpdf:eann‘ ç‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  228ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.13) >> >> A.3.13Ž‘ È--print-dependenciesïpdf:eann‘ã‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  228ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.14) >> >> A.3.14Ž‘ È--show-dependenciesïpdf:eann‘\‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  228ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.15) >> >> A.3.15Ž‘ È--all-dependenciesïpdf:eann‘›þ‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  228ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.16) >> >> A.3.16Ž‘ È--verbose-dependenciesïpdf:eann‘*4‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  228ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.17) >> >> A.3.17Ž‘ È--installïpdf:eann‘1e‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  229ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.18) >> >> A.3.18Ž‘ È--install-allïpdf:eann‘¿›‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  229ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.19) >> >> A.3.19Ž‘ È--install-forceïpdf:eann‘ÍË‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  229ŽŽ¦‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.20) >> >> A.3.20Ž‘ È--absnameïpdf:eann‘1e‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  229ŽŽ¡‘Iïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.21) >> >> A.3.21Ž‘ Èvariable‘?ýdefinitionïpdf:eann‘\‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  229ŽŽ¦‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.4) >> >> A.4Ž‘Additional‘UUoptionsïpdf:eann‘ÿv‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  229ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.5) >> >> A.5Ž‘En•¸ãvironmen“t‘UUv‘ÿqÇariablesïpdf:eann‘øJ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  229ŽŽ¦‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.5.1) >> >> A.5.1Ž‘ ÈOMAKEFLAGSïpdf:eann‘ñh‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  229ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.5.2) >> >> A.5.2Ž‘ ÈOMAKELIBïpdf:eann‘ªM‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  230ŽŽ¦‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.6) >> >> A.6Ž‘F‘ÿ*ªunctionsïpdf:eann‘#1‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  230ŽŽ¡‘Iïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.6.1) >> >> A.6.1Ž‘ ÈOMakeFlagsïpdf:eann‘ñh‘ü².ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  230ŽŽ¦‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.7) >> >> A.7Ž‘Option‘UUproGcessingïpdf:eann‘±@‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  230ŽŽ¡‘2ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.8) >> >> A.8Ž‘.omak¸ãercïpdf:eann‘Ü‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  231ŽŽŽŽŒ‹c¤ s\È ý®£8‘Yï/pdf:dest (page.14) [@thispage /XYZ @xpos @ypos]²14’1¾ÄCONTENTSŽŽ 8G ýÚŸ ‘Yïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (appendix.B) >> >> ÇBŽ‘OMak®9e‘ÕTgrammarïpdf:eann’ã.^233ŽŽ¤ ‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.B.1) >> >> ²B.1Ž‘OMakš¸ãe–UUlexical“con˜v˜en˜tionsïpdf:eann‘bæ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  233ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.1.1) >> >> B.1.1Ž‘ Commen¸ãtsïpdf:eann8h‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  233ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.1.2) >> >> B.1.2Ž‘ SpGecial‘UUc¸ãharactersïpdf:eann‘Ï‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  233ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.1.3) >> >> B.1.3Ž‘ Iden¸ãti ersïpdf:eann‘?†‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  234ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.1.4) >> >> B.1.4Ž‘ Command‘UUiden¸ãti ersïpdf:eann‘iü‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  234ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.1.5) >> >> B.1.5Ž‘ V‘ÿ*ªariable‘UUreferencesïpdf:eann‘xB‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  235ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.1.6) >> >> B.1.6Ž‘ String‘UUconstan¸ãtsïpdf:eann‘Íœ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  235ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.B.2) >> >> B.2Ž‘The–UUOMak¸ãe“grammarïpdf:eann‘8L‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  236ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.2.1) >> >> B.2.1Ž‘ Expressionsïpdf:eann‘F™‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  236ŽŽ¡’Ÿïspdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.B.2.1.1) >> >> B.2.1.1Ž‘)Inline‘UUapplicationsïpdf:eann‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  237ŽŽ¡‘ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.2.2) >> >> B.2.2Ž‘ Statemen¸ãts–UUand“programsïpdf:eann‘q‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  237ŽŽ¡’Ÿïspdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.B.2.2.1) >> >> B.2.2.1Ž‘)SpGecial‘UUformsïpdf:eann‘± ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  239ŽŽ¡’Ÿïspdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.B.2.2.2) >> >> B.2.2.2Ž‘)V‘ÿ*ªariable‘UUde nitionsïpdf:eann‘°ë‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  241ŽŽ¡’Ÿïspdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.B.2.2.3) >> >> B.2.2.3Ž‘)Applications–UUand“function“de nitionsïpdf:eann‘7°‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  241ŽŽ¡’Ÿïspdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.B.2.2.4) >> >> B.2.2.4Ž‘)Ob‘Ž8jectsïpdf:eann‘Ò‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  242ŽŽ¡’Ÿïspdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.B.2.2.5) >> >> B.2.2.5Ž‘)Rulesïpdf:eann‘ê‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  243ŽŽ¡’Ÿïspdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsubsection.B.2.2.6) >> >> B.2.2.6Ž‘)Shell‘UUcommandsïpdf:eann‘ m‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  245ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.B.3) >> >> B.3Ž‘Dollar‘UUmoGdi ersïpdf:eann‘£‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  246ŽŽŸ‘Yïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (appendix.C) >> >> ÇCŽ‘Referencesïpdf:eann’Á‚255ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.C.1) >> >> ²C.1Ž‘See‘UUAlsoïpdf:eann‘ÆÊ‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  255ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.C.2) >> >> C.2Ž‘V‘ÿ*ªersionïpdf:eann‘x‘‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  255ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.C.3) >> >> C.3Ž‘License–UUand“Cop•¸ãyrigh“tïpdf:eann‘¸M‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  255ŽŽ¡‘hïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.C.4) >> >> C.4Ž‘Authorïpdf:eann‘•‘ü.ŽŽ–Ç‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘  255ŽŽŽŽŒ‹®µ s\È ý®£8‘#ï/pdf:dest (page.15) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï1pdf:dest (chapter.1) [@thispage /XYZ @xpos @ypos]ŸUóÂÖN ½q cmbx12ÊChapter‘Ç 1ŽŸ2ÆGuideŽŸ4²If–‚yš¸ãou“are‘‚new“to“OMak˜e,‘0y˜ou“the“ïxpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [0 1 1] /A << /S /URI /URI (file:omake-quickstart.html) >> >>omak˜e-quic˜kstartïpdf:eann“presen˜ts‘‚a“short“in˜troGduc-ޤ tion–½that›¾describGes“ho¸ãw˜to“set˜up“a˜pro‘Ž8ject.‘ŒThe˜ï|pdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [0 1 1] /A << /S /URI /URI (file:omake-build-examples.html) >> >>omakš¸ãe-build-examplesïpdf:eann“giv˜esŽ¡larger–É­examples›É®of“build“pro‘Ž8jects,‘æÃand“ïpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [0 1 1] /A << /S /URI /URI (file:omake-language-examples.html) >> >>omak•¸ãe-language-examplesïpdf:eann˜presen“ts‘É­pro-Ž¡gramming‘UUexamples.ŽŸË ÇQuic®9kstart‘ÕTïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.2) >> >> 2ïpdf:eannŽŽ‘Cy'²A–UUquic¸ãkstart“guide“to“using‘xâÈomake².ޤ„jÇBuild–ÕTexamples“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.3) >> >> 3ïpdf:eannŽŽ‘[ªæ²Adv‘ÿqÇanced–UUbuild“examples.Ž¡ÇThe–ÕTOMak®9e“language“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.4) >> >> 4ïpdf:eannŽŽ‘yÿÔ²The–_)Èomake›_(²language,‘ažincluding“a“description˜of“ob-Ž© ‘jects,–UUexpressions,“and“v‘ÿqÇalues.Ž¡ÇV‘ÿ «ariables–ÕTand“naming“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.5) >> >> 5ïpdf:eannŽŽ‘{À,²V‘ÿ*ªariables,–UUnames,“and“en•¸ãvironmen“ts.Ž¡ÇLanguage–ÕTdiscussion“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.6) >> >> 6ïpdf:eannŽŽ‘t:²F‘ÿ*ªurther– discussion“on“the“language,‘A9including“scop-ަ‘ing,–UUev‘ÿqÇaluation,“and“ob‘Ž8jects.ŽŸ„iÇLanguage–ÕTexamples“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.7) >> >> 7ïpdf:eannŽŽ‘o÷N²Additional–UUlanguage“examples.Ž¡ÇBuild–ÕTrules“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.8) >> >> 8ïpdf:eannŽŽ‘EãÓ²De ning–UUand“using“rules“to“build“programs.Ž¡ÇBase–ÕTbuiltin“functions“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.9) >> >> 9ïpdf:eannŽŽ‘|Ë4²F‘ÿ*ªunctions–,and›,v‘ÿqÇariables“in“the“core˜standard“li-ަ‘brary‘ÿ*ª.Ž¡ÇSystem–ÕTfunctions“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.10) >> >> 10ïpdf:eannŽŽ‘j;<²F‘ÿ*ªunctions–8ãon“ les,–qÇinput/output,“and–8ãsystem“commands.Ž¡ÇShell–ÕTcommands“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.11) >> >> 11ïpdf:eannŽŽ‘e‰²Using–UUthe“Èomake“²shell“for“command-line“in¸ãterpretation.Ž¡ÇThe–ÕTstandard“ob‘£Žjects“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.12) >> >> 12ïpdf:eannŽŽ‘nÁ²P•¸ãerv‘ÿqÇasiv“es–UUde nes“the“built-in“ob‘Ž8jects.Ž¡ÇStandard–ÕTbuild“de nitions“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.13) >> >> 13ïpdf:eannŽŽ’—y ²The–8ãbuild“spGeci cations“for“programming“lan-ަ‘guages–UUin“the“OMak¸ãe“standard“library‘ÿ*ª.Ž¡ÇStandard–ÕTautoQÇcon guration“functions“and“v‘ÿ\rariables“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.14) >> >> 14ïpdf:eannŽŽ’£²The–8ãutilities“pro•¸ãv“oGdedަ‘bš¸ãy–6the“OMak˜e“standard“library‘7to“simplify“programming“of“autoGcon gu-ަ‘ration‘UUtests.ŽŽŸK’Êÿ15ŽŽŒ‹ÓM s\È ý®£8‘Yï/pdf:dest (page.16) [@thispage /XYZ @xpos @ypos]²16’èJŸÄCHAPTER‘UU1.‘ÇGUIDEŽŽ 8G ýÚŸ ‘YÇThe›ÕTin•®9teractiv“e˜command˜in“terpreter˜ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.15) >> >> 15ïpdf:eannŽŽ’(£K²The–8ãÈosh“²command-line“in¸ãterpreter.Ž©‘YÇAppQÇendicesŽ’—óÕOMak®9e–ÕTcommand-line“options“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (appendix.A) >> >> Aïpdf:eannŽŽ’@-²Command-line–,6options“forޤ ’ˆÈomake².ŽŸ‘rÇThe–ÕTOMak®9e“language“grammar“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (appendix.B) >> >> Bïpdf:eannŽŽ’Õ²A‘]µmore–]óprecise“spGeci cation‘]ôof“theŽ¡’ˆOMak¸ãe‘UUlanguage.ަ‘Yïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [0 1 1] /A << /S /URI /URI (file:omake-doc.html) >> >>ÇAll–ÕTthe“doQÇcumen®9tation“on“a“single“pageïpdf:eannŽŽ’$/²All–“„the“OMak•¸ãe‘“…doGcumen“tation‘“„inŽ¡‘ra–UUsingle“page.ŽŽŽŒ‹â° s\È ý®£8‘#ï/pdf:dest (page.17) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï1pdf:dest (chapter.2) [@thispage /XYZ @xpos @ypos]ŸU8?ÊChapter‘Ç 2ŽŸ28?ÆOMak–ÿ8õe› T{quic“kstart˜guideŽŸ,Öwï3pdf:dest (section.2.1) [@thispage /XYZ @xpos @ypos]Ÿ aÈó!ÂÖN ff cmbx12Ì2.1Ž‘$æcDescriptionŽŸOÉÈomake–îϲis“designed“for‘îÎbuilding“pro‘Ž8jects“that“mighš¸ãt“ha˜v˜e“source‘îÎ les“in“sev˜eralޤ directories.‘i’Pro‘Ž8jects–§îare“normally“spGeci ed‘§íusing“an“ÈOMakefile“²in“eac¸ãh“of“theŽ¡pro›Ž8ject–²6directories,‘Énand“an“ÈOMakeroot“² le“in‘²5the“roGot“directory“of“the“pro˜ject.Ž¡The–ÈpÈOMakeroot“² le“spšGeci es“general“build“rules,‘äžand“the“ÈOMakefile²s“sp˜ecify“theŽ¡build–1^parameters›1_spGeci c“to˜eac¸ãh“of˜the“subGdirectories.‘äWhen“Èomake“²runs,‘haitŽ¡w¸ãalks–•2the“con guration“tree,‘¥)ev‘ÿqÇaluating‘•3rules“from“all“of“the“ÈOMakefile²s.‘1^TheŽ¡pro‘Ž8ject–UUis“then“built“from“the“en¸ãtire“collection“of“build“rules.Ž©â(ï8pdf:dest (subsection.2.1.1) [@thispage /XYZ @xpos @ypos]Ÿ Fxó"ÂÖN  cmbx12Í2.1.1Ž‘)@Automatic–€dep`endency“analysisŽŸÞ²DepGendency–ùªanalysis›ù«has“alw•¸ãa“ys˜bGeen–ùªproblematic˜with“the˜Èmake²(1)“program.Ž¡Èomake–¢ê²addresses›¢ëthis“b¸ãy“adding˜the“È.SCANNER‘¢½²target,‘Æšwhic¸ãh“spGeci es˜a“commandŽ¡to–UUprošGduce“dep˜endencies.‘qÇF‘ÿ*ªor“example,“the“follo¸ãwing“ruleŽŸ;‘ÿôÈ.SCANNER:–?ý%.o:“%.cŽ¡‘)ÿè$(CC)–?ý$(INCLUDE)“-MM“$<ŽŸàü‘²is–šithe“standard›šhw•¸ãa“y–šito“generate“depGendencies“for˜È.c“² les.‘AÈomake“²will“auto-Ž¡matically–UUrun“the“scanner“when“it“needs“to“determine“depGendencies“for“a“ le.ަï8pdf:dest (subsection.2.1.2) [@thispage /XYZ @xpos @ypos]Ÿ FxÍ2.1.2Ž‘)@Con• ten“t-based–€dep`endency“analysisŽŸÞ²DepGendency–Ñ analysis›Ñin“omak¸ãe“uses˜MD5“digests“to“determine˜whether“ lesŽ¡ha•¸ãv“e›Óc“hanged.‘€@After‘Òeac“h˜run,‘0²Èomake˜²stores–Òthe˜depGendency˜information“in˜aŽ¡ le–.ºcalled›.»È.omakedb“²in“the“pro‘Ž8ject˜roGot“directory‘ÿ*ª.‘ý÷When“a“rule˜is“consideredŽ¡for–bexecution,‘¥4the“command“is›bnot“executed“if˜the“target,‘¥3depGendencies,‘¥4andŽ¡command–˜âsequence“are“unc¸ãhanged“since“the“last‘˜ãrun“of‘_ÿÈomake².‘> >> ÈStaticCLibraryïpdf:eann“²andŽ¡‘ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:CProgram) >> >> ÈCProgramïpdf:eann²),–UUdescribšGed“in“Chapter“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.13) >> >> 13ïpdf:eann,“to“sp˜ecify“these“builds“more“simply‘ÿ*ª.Ž©¼J‘¸ŽŽŽ‘²Implicit–­rules›­using“È.SUFFIXES‘¬ù²and“the˜È.suf1.suf2:“²are˜not“suppGorted.Ž¡‘Y‘ÿ*ªou–UUshould“use“wildcard“patterns“instead“È%.suf2:‘?ý%.suf1².ŽŸ¼I‘¸ŽŽŽ‘²Scoping›æis‘æŽsigni can•¸ãt:‘:cy“ou˜should–æŽde ne˜v‘ÿqÇariables“and˜È.PHONY‘ær²targets˜(seeŽ¡‘Section–UUïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.10) >> >> 8.10ïpdf:eann)“bGefore“they“are“used.ަ‘¸ŽŽŽ‘²Sub•Gdirectories›íare‘í incorp“orated˜in¸ãto–í a˜pro‘Ž8ject“using˜the“È.SUBDIRS:˜²targetŽ¡‘(see–UUSection“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.8) >> >> 8.8ïpdf:eann).ŽŸtï3pdf:dest (section.2.3) [@thispage /XYZ @xpos @ypos]Ÿ€Ì2.3Ž‘$æcBuilding–ffa“small“C“programŽŸç²T‘ÿ*ªo–­Ústart“a“new“pro›Ž8ject,‘ÏYthe“easiest“methoGd“is‘­Ùto“c¸ãhange“directories“to“the“pro˜jectŽ¡roGot–UUand“use“the“command“Èomake‘?ý--install“²to“install“default“ÈOMakefile²s.Ž©V¸‘ÿôÈ$–?ýcd“~/newprojectŽ¡‘ÿô$–?ýomake“--installŽ¡‘ÿô***–?ýomake:“creating“OMakerootŽ¡‘ÿô***–?ýomake:“creating“OMakefileŽ¡‘ÿô***–?ýomake:“project“files“OMakefile“and“OMakeroot“have“been“installedŽ¡‘ÿô***–?ýomake:“you“should“edit“these“files“before“continuingަ‘²The–Žödefault“ÈOMakefile‘Ž÷²con¸ãtains“sections“for“building“C‘ަand“OCaml“pro-Ž¡grams.‘qÇF‘ÿ*ªor–UUnoš¸ãw,“w˜e'll“build“a“simple“C“pro‘Ž8ject.Ž¡‘SuppGose–­Ewš¸ãe“ha˜v˜e‘­Da“C‘­ le“called“Èhello_code.c“²con˜taining‘­Dthe“follo˜wing“coGde:ަ‘ÿôÈ#include‘?ýŽ¡¡‘ÿôint–?ýmain(int“argc,“char“**argv)Ž¡‘ÿô{Ž¡‘)ÿèprintf("Hello‘?ýworld\n");Ž¡‘)ÿèreturn‘?ý0;Ž¡‘ÿô}ަ‘²T‘ÿ*ªo–8ãbuild“the“program“a“program“Èhello“²from“this“ le,‘qÇw¸ãe“can“use“the“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:CProgram) >> >> ÈCProgramŽ¡²functionïpdf:eann.‘fThe–2;ÈOMakefile›2<²con¸ãtains“just˜one“line“that˜spGeci es“that˜the“programŽ¡Èhello–¶[²is“to“bšGe‘¶Zbuilt“from“the“source“co˜de“in“the‘¶ZÈhello_code.c“² le“(note“thatŽ¡ le–UUsuxes“are“not“passed“to“these“functions).ަ‘ÿôÈCProgram(hello,‘?ýhello_code)ŽŽŽŒ‹ð¼ s\È ý®£8‘#ï/pdf:dest (page.19) [@thispage /XYZ @xpos @ypos]Ä2.3.‘ÇBUILDING–UUA“SMALL“C“PR¸ãOGRAM’N#²19ŽŽ 8G ýÚŸ ‘2No•¸ãw›Bw“e˜can–Crun˜Èomake˜²to˜build˜the˜pro‘Ž8ject.‘_lNote˜that˜the˜ rst“time˜w¸ãe˜runޤ ‘#Èomake²,‘3óit–nbGoth›mscans“the˜Èhello_code.c“² le˜for“depGendencies,‘3óand“compiles˜itŽ¡‘#using–¦Ýthe›¦ÞÈcc“²compiler.‘faThe“status˜line“prin¸ãted˜at“the˜end“indicates˜hoš¸ãw“man˜yŽ¡‘# les‘É`w•¸ãere›Éascanned,‘&bho“w˜man“y‘É`w“ere˜built,‘&band˜ho“w›É`man“y˜MD5‘Éadigests˜w“ereŽ¡‘#computed.Ž©‘7ÿôÈ$–?ýomake“helloŽ¡‘7ÿô***–?ýomake:“reading“OMakefilesŽ¡‘7ÿô***–?ýomake:“finished“reading“OMakefiles“(0.0“sec)Ž¡‘7ÿô-–?ýscan“.“hello_code.oŽ¡‘7ÿô+–?ýcc“-I.“-MM“hello_code.cŽ¡‘7ÿô-–?ýbuild“.“hello_code.oŽ¡‘7ÿô+–?ýcc“-I.“-c“-o“hello_code.o“hello_code.cŽ¡‘7ÿô-–?ýbuild“.“helloŽ¡‘7ÿô+–?ýcc“-o“hello“hello_code.oŽ¡‘7ÿô***–?ýomake:“done“(0.5“sec,“1/6“scans,“2/6“rules,“5/22“digests)Ž¡‘7ÿô$‘?ýomakeŽ¡‘7ÿô***–?ýomake:“reading“OMakefilesŽ¡‘7ÿô***–?ýomake:“finished“reading“OMakefiles“(0.1“sec)Ž¡‘7ÿô***–?ýomake:“done“(0.1“sec,“0/4“scans,“0/4“rules,“0/9“digests)ަ‘2²If–¸-wš¸ãe“w˜an˜t‘¸.to“c˜hange“the“compile–¸.options,‘×›w˜e“can–¸-rede ne“the“ÈCC‘¸²and“ÈCFLAGSŽ¡‘#²v‘ÿqÇariables›íó#ý': cmti10Îb–ÿ}'efor“e‘NH²the–ìÈCProgram˜²line.‘/PIn“this˜example,‘µÏw¸ãe˜will˜use“the˜Ègcc˜²compilerŽ¡‘#with–·Ûthe›·ÜÈ-g“²option.‘=JIn“addition,‘×Zw¸ãe˜will“spGecify˜a“È.DEFAULT‘·³²target˜to“bGe˜built“b¸ãyŽ¡‘#default.‘[ÑThe–£XÈEXE‘£E²v‘ÿqÇariable“is“de ned›£Yto“bGe“È.exe˜²on“ÈWin32“²systems;‘ÊZit˜is“empt¸ãyŽ¡‘#otherwise.ަ‘7ÿôÈCC–?ý=“gccŽ¡‘7ÿôCFLAGS–?ý+=“-gŽ¡‘7ÿôCProgram(hello,‘?ýhello_code)Ž¡‘7ÿô.DEFAULT:‘?ýhello$(EXE)ަ‘2²Here–UUis“the“correspGonding“run“for“Èomake².ަ‘7ÿôÈ$‘?ýomakeŽ¡‘7ÿô***–?ýomake:“reading“OMakefilesŽ¡‘7ÿô***–?ýomake:“finished“reading“OMakefiles“(0.0“sec)Ž¡‘7ÿô-–?ýscan“.“hello_code.oŽ¡‘7ÿô+–?ýgcc“-g“-I.“-MM“hello_code.cŽ¡‘7ÿô-–?ýbuild“.“hello_code.oŽ¡‘7ÿô+–?ýgcc“-g“-I.“-c“-o“hello_code.o“hello_code.cŽ¡‘7ÿô-–?ýbuild“.“helloŽ¡‘7ÿô+–?ýgcc“-g“-o“hello“hello_code.oŽ¡‘7ÿô***–?ýomake:“done“(0.4“sec,“1/7“scans,“2/7“rules,“3/22“digests)ަ‘2²W‘ÿ*ªe–žãcan,›±Fof“course,˜include“mš¸ãultiple“ les“in“the“program.‘NpSuppGose“w˜e“writeŽ¡‘#a–UUnew“ le“Èhello_helper.c².‘qÇW‘ÿ*ªe“wš¸ãould“include“this“in“the“pro‘Ž8ject“as“follo˜ws.ŽŽŽŒ‹ýÑ s\È ý®£8‘Yï/pdf:dest (page.20) [@thispage /XYZ @xpos @ypos]²20‘wƒvÄCHAPTER–UU2.‘ÇOMAKE“QUICKST–ÿ*ªAR“T‘UUGUIDEŽŽ 8G ýÚŸ ‘mÿôÈCC–?ý=“gccޤ ‘mÿôCFLAGS–?ý+=“-gŽ¡‘mÿôCProgram(hello,–?ýhello_code“hello_helper)Ž¡‘mÿô.DEFAULT:‘?ýhello$(EXE)Ž‘Y©¤ï3pdf:dest (section.2.4) [@thispage /XYZ @xpos @ypos]ŸV‹Ì2.4Ž‘$æcLarger‘ffpro‘æfjectsŽŸ8òAs–Jåthe“pro‘Ž8ject“groš¸ãws‘Jäit“is“lik˜ely“that“w˜e“will“w˜an˜t“to‘Jäbuild“libraries“of“coGde.Ž¡Libraries–`Gcan›`FbGe“built˜using“the˜ÈStaticCLibrary“²function.‘’›Here“is˜an“exampleŽ¡of–UUan“ÈOMakefile“²with“t•¸ãw“o‘UUlibraries.ŽŸÛa‘ÿôÈCC–?ý=“gccŽ¡‘ÿôCFLAGS–?ý+=“-gŽ¡¡‘ÿôFOO_FILES–?ý=“foo_a“foo_bŽ¡‘ÿôBAR_FILES–?ý=“bar_a“bar_b“bar_cŽ¡¡‘ÿôStaticCLibrary(libfoo,‘?ý$(FOO_FILES))Ž¡‘ÿôStaticCLibrary(libbar,‘?ý$(BAR_FILES))Ž¡¡‘ÿô#–?ýThe“hello“program“is“linked“with“both“librariesŽ¡‘ÿôLIBS–?ý=“libfoo“libbarŽ¡‘ÿôCProgram(hello,–?ýhello_code“hello_helper)Ž¡¡‘ÿô.DEFAULT:‘?ýhello$(EXE)ަï3pdf:dest (section.2.5) [@thispage /XYZ @xpos @ypos]ŸV‹Ì2.5Ž‘$æcSubs3directoriesŽŸ8òAs–Ú°the‘Ú¯pro‘Ž8ject“groš¸ãws“ev˜en“further,‘<it›Ú¯is“a“go•Go“d˜idea–Ú°to“split“it˜inš¸ãto“sev˜eralŽ¡directories.‘qÇSuppGose–UUwš¸ãe“place“the“Èlibfoo“²and“Èlibbar“²in˜to“subGdirectories.Ž© +à‘In–Xeacš¸ãh“subGdirectory‘ÿ*ª,‘Y[w˜e‘XŽde ne“an“ÈOMakefile“²for“that“directory–ÿ*ª.‘{pF“or‘Xexam-Ž¡ple,–UUhere“is“an“example“ÈOMakefile“²for“the“Èfoo“²subGdirectory‘ÿ*ª.ŽŸÛ`‘ÿôÈINCLUDES–?ý+=“..“../barŽ¡¡‘ÿôFOO_FILES–?ý=“foo_a“foo_bŽ¡‘ÿôStaticCLibrary(libfoo,‘?ý$(FOO_FILES))ŽŸ¯‘²Note–the›the“ÈINCLUDES‘²v‘ÿqÇariable“is˜de ned“to“include˜the“other˜directories“inŽ¡the‘UUpro‘Ž8ject.ަ‘No¸ãw,‘the›ƒ|next–ƒ}step“is“to˜link“the“subGdirectories“in¸ãto˜the“main“pro‘Ž8ject.‘ü>TheŽ¡pro‘Ž8ject–UUÈOMakefile“²should“bšGe“mo˜di ed“to“include“a“È.SUBDIRS:“²target.ŽŸÛ`‘ÿôÈ#–?ýProject“configurationŽ¡‘ÿôCC–?ý=“gccŽŽŽŒ‹~ s\È ý®£8‘#ï/pdf:dest (page.21) [@thispage /XYZ @xpos @ypos]Ä2.5.‘ÇSUBDIRECTORIES’ÜŽ)²21ŽŽ 8G ýÚŸ ‘7ÿôÈCFLAGS–?ý+=“-gޤ ¡‘7ÿô#‘?ýSubdirectoriesŽ¡‘7ÿô.SUBDIRS:–?ýfoo“barŽ¡¡‘7ÿô#–?ýThe“libraries“are“now“in“subdirectoriesŽ¡‘7ÿôLIBS–?ý=“foo/libfoo“bar/libbarŽ¡¡‘7ÿôCProgram(hello,–?ýhello_code“hello_helper)Ž¡¡‘7ÿô.DEFAULT:‘?ýhello$(EXE)Ž©‘2²Note–òZthat“the“v‘ÿqÇariables“ÈCC›ñð²and“ÈCFLAGS˜²are“de ned“Îb–ÿ}'efor“e‘²µ²the‘òZÈ.SUBDIRSŽ¡‘#²target.‘ƒ.These–["v‘ÿqÇariables“remain“de ned‘[!in“the“subGdirectories,‘œ•so“that“ÈlibfooŽ¡‘#²and–UUÈlibbar“²use“Ègcc‘?ý-g².Ž¡‘2If–Ä3the“t•¸ãw“o›Ä2directories–Ä3are“to“bGe“con gured˜di eren•¸ãtly‘ÿ*ª,‘ßëw“e˜ha“v“e›Ä3t“w“o˜c“hoices.Ž¡‘#The–“dÈOMakefile›“c²in“eac¸ãh“subGdirectory˜can“b•Ge˜mo“di ed–“dwith“its˜con guration“(thisŽ¡‘#is–Kñhoš¸ãw‘Kòit“w˜ould“normally“bGe‘Kòdone).‘n¦Alternativ˜ely‘ÿ*ª,‘MÒw˜e“can“also“place‘Kòthe“c˜hangeŽ¡‘#in–UUthe“roGot“ÈOMakefile².ަ‘7ÿôÈ#–?ýDefault“project“configurationŽ¡‘7ÿôCC–?ý=“gccŽ¡‘7ÿôCFLAGS–?ý+=“-gŽ¡¡‘7ÿô#–?ýlibfoo“uses“the“default“configurationŽ¡‘7ÿô.SUBDIRS:‘?ýfooŽ¡¡‘7ÿô#–?ýlibbar“uses“the“optimizing“compilerŽ¡‘7ÿôCFLAGS–?ý+=“-O3Ž¡‘7ÿô.SUBDIRS:‘?ýbarŽ¡¡‘7ÿô#–?ýMain“programŽ¡‘7ÿôLIBS–?ý=“foo/libfoo“bar/libbarŽ¡‘7ÿôCProgram(hello,–?ýhello_code“hello_helper)Ž¡¡‘7ÿô.DEFAULT:‘?ýhello$(EXE)ަ‘2²Note–+that“the“w•¸ãa“y›+w“e‘+Œha“v“e˜spGeci ed˜it,‘athe˜ÈCFLAGS‘+U²v‘ÿqÇariable˜also˜con“tainsŽ¡‘#the–ŠÈ-O3“²option“for›Šthe“ÈCProgram²,‘—Hand˜Èhello_code.c“²and“Èhello_helper.c“² leŽ¡‘#will–ß?bšGoth“b˜e“compiled“with“the›ß@È-O3“²option.‘JjIf“w•¸ãe˜w“an“t–ß?to“makš¸ãe“the“c˜hange“trulyŽ¡‘#lošGcal–5eto“Èlibbar²,‘mhw¸ãe“can“put“the“Èbar“²sub˜directory“in‘5dits“o¸ãwn“scop˜e“using“theŽ¡‘#Èsection‘UU²form.ަ‘7ÿôÈ#–?ýDefault“project“configurationŽ¡‘7ÿôCC–?ý=“gccŽ¡‘7ÿôCFLAGS–?ý+=“-gŽ¡ŽŽŒ‹_ s\È ý®£8‘Yï/pdf:dest (page.22) [@thispage /XYZ @xpos @ypos]²22‘wƒvÄCHAPTER–UU2.‘ÇOMAKE“QUICKST–ÿ*ªAR“T‘UUGUIDEŽŽ 8G ýÚŸ ‘mÿôÈ#–?ýlibfoo“uses“the“default“configurationޤ ‘mÿô.SUBDIRS:‘?ýfooŽ¡¡‘mÿô#–?ýlibbar“uses“the“optimizing“compilerŽ¡‘mÿôsectionŽ¡’‚ÿèCFLAGS–?ý+=“-O3Ž¡’‚ÿè.SUBDIRS:‘?ýbarŽ¡¡‘mÿô#–?ýMain“program“does“not“use“the“optimizing“compilerŽ¡‘mÿôLIBS–?ý=“foo/libfoo“bar/libbarŽ¡‘mÿôCProgram(hello,–?ýhello_code“hello_helper)Ž¡¡‘mÿô.DEFAULT:‘?ýhello$(EXE)ŽŸÇ‘h²Later,‘ú suppšGose–ãSw¸ãe“decide“to“p˜ort“this“pro‘Ž8ject“to“ÈWin32²,‘ú and“wš¸ãe“disco˜v˜er“thatŽ¡‘Ywš¸ãe–UUneed“di eren˜t“compiler“ ags“and“an“additional“library‘ÿ*ª.ŽŸ8ä‘mÿôÈ#–?ýDefault“project“configurationŽ¡‘mÿôif–?ý$(equal“$(OSTYPE),“Win32)Ž¡’‚ÿèCC–?ý=“cl“/nologoŽ¡’‚ÿèCFLAGS–?ý+=“/DWIN32“/MTŽ¡’‚ÿèexportŽ¡‘mÿôelseŽ¡’‚ÿèCC–?ý=“gccŽ¡’‚ÿèCFLAGS–?ý+=“-gŽ¡’‚ÿèexportŽ¡¡‘mÿô#–?ýlibfoo“uses“the“default“configurationŽ¡‘mÿô.SUBDIRS:‘?ýfooŽ¡¡‘mÿô#–?ýlibbar“uses“the“optimizing“compilerŽ¡‘mÿôsectionŽ¡’‚ÿèCFLAGS–?ý+=“$(if“$(equal“$(OSTYPE),“Win32),“$(EMPTY),“-O3)Ž¡’‚ÿè.SUBDIRS:‘?ýbarŽ¡¡‘mÿô#–?ýDefault“librariesŽ¡‘mÿôLIBS–?ý=“foo/libfoo“bar/libbarŽ¡¡‘mÿô#–?ýWe“need“libwin32“only“on“Win32Ž¡‘mÿôif–?ý$(equal“$(OSTYPE),“Win32)Ž¡‘}¿ëLIBS–?ý+=“win32/libwin32Ž¡¡‘}¿ë.SUBDIRS:‘?ýwin32Ž¡‘}¿ëexportŽ¡¡‘mÿô#–?ýMain“program“does“not“use“the“optimizing“compilerŽŽŽŒ‹ s\È ý®£8‘#ï/pdf:dest (page.23) [@thispage /XYZ @xpos @ypos]Ä2.5.‘ÇSUBDIRECTORIES’ÜŽ)²23ŽŽ 8G ýÚŸ ‘7ÿôÈCProgram(hello,–?ýhello_code“hello_helper)ޤ ¡‘7ÿô.DEFAULT:‘?ýhello$(EXE)ŽŸ™š‘2²Note–ÿþthe“use›ÿÿof“the“Èexport“²directiv¸ães˜to“expGort“the˜v‘ÿqÇariable“de nitions“fromŽ¡‘#the–Œif-statemen¸ãts.‘#mV‘ÿ*ªariables›in“Èomake˜²are“Îsc–ÿ}'op“e“d‘‰²|v‘ÿqÇariables–Œin˜nested“bloGc¸ãksŽ¡‘#(bloGcš¸ãks–áuwith“greater“inden˜tation),‘D|are“not“normally“de ned“in“outer“bloGc˜ks.Ž¡‘#The–1 Èexport“²directiv¸ãe“spšGeci es“that“the‘1v‘ÿqÇariable“de nitions“in“the“nested“blo˜c¸ãksŽ¡‘#should–UUbšGe“exp˜orted“to“their“paren¸ãt“blo˜c¸ãk.ŽŸ ff‘2Finally‘ÿ*ª,–QCfor›P>this‘P?example,“w•¸ãe˜decide‘P?to˜cop“y–P?all˜libraries“in¸ãto˜a“common˜ÈlibŽ¡‘#²directory–ÿ*ª.‘€=W“e›Ñ rst–Òde ne“a˜directory“v‘ÿqÇariable,‘0±and˜replace“oGccurrences˜of“theŽ¡‘#Èlib–UU²string“with“the“v‘ÿqÇariable.ŽŸ‘7ÿôÈ#–?ýThe“common“lib“directoryŽ¡‘7ÿôLIB–?ý=“$(dir“lib)Ž¡¡‘7ÿô#–?ýphony“target“to“build“just“the“librariesŽ¡‘7ÿô.PHONY:‘?ýmakelibsŽ¡¡‘7ÿô#–?ýDefault“project“configurationŽ¡‘7ÿôif–?ý$(equal“$(OSTYPE),“Win32)Ž¡‘LÿèCC–?ý=“cl“/nologoŽ¡‘LÿèCFLAGS–?ý+=“/DWIN32“/MTŽ¡‘LÿèexportŽ¡‘7ÿôelseŽ¡‘LÿèCC–?ý=“gccŽ¡‘LÿèCFLAGS–?ý+=“-gŽ¡‘LÿèexportŽ¡¡‘7ÿô#–?ýlibfoo“uses“the“default“configurationŽ¡‘7ÿô.SUBDIRS:‘?ýfooŽ¡¡‘7ÿô#–?ýlibbar“uses“the“optimizing“compilerŽ¡‘7ÿôsectionŽ¡‘LÿèCFLAGS–?ý+=“$(if“$(equal“$(OSTYPE),“Win32),“$(EMPTY),“-O3)Ž¡‘Lÿè.SUBDIRS:‘?ýbarŽ¡¡‘7ÿô#–?ýDefault“librariesŽ¡‘7ÿôLIBS–?ý=“$(LIB)/libfoo“$(LIB)/libbarŽ¡¡‘7ÿô#–?ýWe“need“libwin32“only“on“Win32Ž¡‘7ÿôif–?ý$(equal“$(OSTYPE),“Win32)Ž¡‘G¿ëLIBS–?ý+=“$(LIB)/libwin32Ž¡¡‘G¿ë.SUBDIRS:‘?ýwin32Ž¡‘G¿ëexportŽŽŽŒ‹Ï s\È ý®£8‘Yï/pdf:dest (page.24) [@thispage /XYZ @xpos @ypos]²24‘wƒvÄCHAPTER–UU2.‘ÇOMAKE“QUICKST–ÿ*ªAR“T‘UUGUIDEŽŽ 8G ýÚŸ ¤ ‘mÿôÈ#–?ýMain“program“does“not“use“the“optimizing“compilerŽ¡‘mÿôCProgram(hello,–?ýhello_code“hello_helper)Ž¡¡‘mÿô.DEFAULT:‘?ýhello$(EXE)Ž© q‘h²In–OÈeacš¸ãh“sub•Gdirectory‘ÿ*ª,‘Îdw˜e‘OÉmo“dify–OÈthe“ÈOMakefile²s“in“the“library“directo-Ž¡‘Yries–î?to›î@install“them˜in¸ãto“the“È$(LIB)‘íÖ²directory‘ÿ*ª.‘ <†Here˜is“the˜relev‘ÿqÇanš¸ãt“c˜hangeŽ¡‘Yto‘UUÈfoo/OMakefile².ŽŸM ‘mÿôÈINCLUDES–?ý+=“..“../barŽ¡¡‘mÿôFOO_FILES–?ý=“foo_a“foo_bŽ¡‘mÿôStaticCLibraryInstall(makelib,–?ý$(LIB),“libfoo,“$(FOO_FILES))ަ‘h²Directory–‘-(and›‘, le“names)˜ev‘ÿqÇaluate“to“relativ¸ãe˜pathnames.‘%NWithin˜the“ÈfooŽ¡‘Y²directory‘ÿ*ª,–UUthe“È$(LIB)“²v›ÿqÇariable“ev˜aluates“to“È../lib².ŽŸ Bœ‘hAs›Êanother–Ëexample,‘æinstead“of˜de ning“the˜ÈINCLUDES‘¶²v‘ÿqÇariable“separately˜inŽ¡‘Yeacš¸ãh–UUsubGdirectory‘ÿ*ª,“w˜e“can“de ne“it“in“the“toplev˜el“as“follo˜ws.ŽŸM ‘mÿôÈINCLUDES–?ý=“$(ROOT)“$(dir“foo“bar“win32)ަ‘h²In–8ãthe“Èfoo“²directory‘ÿ*ª,‘qÇthe“ÈINCLUDES‘8›²v›ÿqÇariable“will“ev˜aluate“to“the“string“È..–?ý.“../bar“../win32².Ž¡‘YIn–ø¸the›ø·Èbar“²directory‘ÿ*ª,‘ >it˜w¸ãould“bGe“È..–?ý../foo“.“../win32².‘RèIn–ø¸the˜roGot“directoryŽ¡‘Yit–UUw¸ãould“bGe“È.–?ýfoo“bar“win32².Ž‘YŸ0Žï3pdf:dest (section.2.6) [@thispage /XYZ @xpos @ypos]ŸBÌ2.6Ž‘$æcOther–ffthings“to“considerŽŸcÈomake–®º²also“handles“recursiv¸ãe“sub•Gdirectories.‘}öF‘ÿ*ªor‘®»example,‘Åsupp“ose–®ºthe“Èfoo“²di-Ž¡rectory–ð\itself“conš¸ãtains“sev˜eral“subGdirectories.‘BÛThe“Èfoo/OMakefile“²w˜ould“thenŽ¡conš¸ãtain–Ë‹its“o˜wn‘ËŠÈ.SUBDIRS‘Ëm²target,‘éand“eac˜h“of“its‘ËŠsubGdirectories“w˜ould“con˜tainŽ¡its–UUo¸ãwn“ÈOMakefile².ŽŸ0ï3pdf:dest (section.2.7) [@thispage /XYZ @xpos @ypos]ŸBœÌ2.7Ž‘$æcBuilding–ffOCaml“programsŽŸc²By–rfdefault,‘¹«Èomake“²is“also“con gured›rgwith“functions“for“building˜OCaml“pro-Ž¡grams.‘‹\The–³1functions“for›³2OCaml“program“use“the˜ÈOCaml“²pre x.‘‹\F‘ÿ*ªor“example,Ž¡suppGose–pýwš¸ãe“reconstruct‘püthe“previous“example“in“OCaml,‘ž¨and“w˜e“ha˜v˜e‘püa“ le“calledŽ¡Èhello_code.ml–UU²that“conš¸ãtains“the“follo˜wing“coGde.ŽŸM ‘¿÷Èopen‘?ýPrintfŽ¡¡‘¿÷let–?ý()“=“printf“"Hello“world\n"ަ‘²An–UUexample“ÈOMakefile“²for“this“simple“pro‘Ž8ject“wš¸ãould“con˜tain“the“follo˜wing.ŽŽŽŒ‹#í s\È ý®£8‘#ï/pdf:dest (page.25) [@thispage /XYZ @xpos @ypos]Ä2.7.‘ÇBUILDING–UUOCAML“PR¸ãOGRAMS’œñ±²25ŽŽ 8G ýÚŸ ‘7ÿôÈ#–?ýUse“the“byte-code“compilerޤ ‘7ÿôBYTE_ENABLED–?ý=“trueŽ¡‘7ÿôNATIVE_ENABLED–?ý=“falseŽ¡‘7ÿôOCAMLCFLAGS–?ý+=“-gŽ¡¡‘7ÿô#–?ýBuild“the“programŽ¡‘7ÿôOCamlProgram(hello,‘?ýhello_code)Ž¡‘7ÿô.DEFAULT:‘?ýhello.runŽŸÇ‘2²Next,‘ZÚsuppGose–YÀthe‘Y¿wš¸ãe“ha˜v˜e“t˜w˜o›Y¿library“subGdirectories:‘zœthe˜Èfoo“²subGdirectoryŽ¡‘#is–h%written“in“C,“the›h$Èbar“²directory“is“written“in“OCaml,‘lÙand˜w¸ãe“need“to“use“theŽ¡‘#standard–UUOCaml“ÈUnix“²moGdule.ŽŸ8ä‘7ÿôÈ#–?ýDefault“project“configurationŽ¡‘7ÿôif–?ý$(equal“$(OSTYPE),“Win32)Ž¡‘LÿèCC–?ý=“cl“/nologoŽ¡‘LÿèCFLAGS–?ý+=“/DWIN32“/MTŽ¡‘LÿèexportŽ¡‘7ÿôelseŽ¡‘LÿèCC–?ý=“gccŽ¡‘LÿèCFLAGS–?ý+=“-gŽ¡‘LÿèexportŽ¡¡‘7ÿô#–?ýUse“the“byte-code“compilerŽ¡‘7ÿôBYTE_ENABLED–?ý=“trueŽ¡‘7ÿôNATIVE_ENABLED–?ý=“falseŽ¡‘7ÿôOCAMLCFLAGS–?ý+=“-gŽ¡¡‘7ÿô#–?ýlibrary“subdirectoriesŽ¡‘7ÿôINCLUDES–?ý+=“$(dir“foo“bar)Ž¡‘7ÿôOCAMLINCLUDES–?ý+=“$(dir“foo“bar)Ž¡‘7ÿô.SUBDIRS:–?ýfoo“barŽ¡¡‘7ÿô#–?ýC“librariesŽ¡‘7ÿôLIBS–?ý=“foo/libfooŽ¡¡‘7ÿô#–?ýOCaml“librariesŽ¡‘7ÿôOCAML_LIBS–?ý=“bar/libbarŽ¡¡‘7ÿô#–?ýAlso“use“the“Unix“moduleŽ¡‘7ÿôOCAML_OTHER_LIBS–?ý=“unixŽ¡¡‘7ÿô#–?ýThe“main“programŽ¡‘7ÿôOCamlProgram(hello,–?ýhello_code“hello_helper)Ž¡¡‘7ÿô.DEFAULT:‘?ýhelloŽŽŽŒ‹-¢ s\È ý®£8‘Yï/pdf:dest (page.26) [@thispage /XYZ @xpos @ypos]²26‘wƒvÄCHAPTER–UU2.‘ÇOMAKE“QUICKST–ÿ*ªAR“T‘UUGUIDEŽŽ 8G ýÚŸ ‘h²The–UUÈfoo/OMakefile“²w¸ãould“bGe“con gured“as“a“C“library‘ÿ*ª.ޤ‘mÿôÈFOO_FILES–?ý=“foo_a“foo_bŽ© ‘mÿôStaticCLibrary(libfoo,‘?ý$(FOO_FILES))ŽŸBx‘h²The–UUÈbar/OMakefile“²w¸ãould“build“an“ML“library‘ÿ*ª.Ž¡‘h¿÷ÈBAR_FILES–?ý=“bar_a“bar_b“bar_cަ‘h¿÷OCamlLibrary(libbar,‘?ý$(BAR_FILES))Ž‘YŸÌÞï3pdf:dest (section.2.8) [@thispage /XYZ @xpos @ypos]Ÿ—ºÌ2.8Ž‘$æcThe–ffOMakšŒÌe le“and“OMak˜eros3ot“ lesŽŸk\ÈOMake‘вuses–]Žthe›]ÈOMakefile“²and˜ÈOMakeroot“² les˜for“con guring˜a“pro‘Ž8ject.‘ŠpTheަsyn¸ãtax–lof›lthese“ les“is˜the“same,‘±Äbut“their˜role“is“sligh•¸ãtly˜di eren“t.‘¶F‘ÿ*ªor‘loneަthing,‘ êevš¸ãery–è2pro‘Ž8ject“m˜ust‘è3ha˜v˜e“exactly›è3one“ÈOMakeroot“² le˜in“the˜pro‘Ž8ject“roGotަdirectory‘ÿ*ª.‘]§This–ô le“servš¸ães“to“iden˜tify“the“pro‘Ž8ject“roGot,‘%and“it“con˜tains“coGde“thatަsets–5cup›5bthe“pro‘Ž8ject.‘ïIn“con•¸ãtrast,‘mfa˜m“ulti-directory–5cpro‘Ž8ject˜will“often˜ha•¸ãv“e‘5canަÈOMakefile–e"²in“eacš¸ãh“of“the“pro‘Ž8ject‘e#sub•Gdirectories,‘©sp“ecifying–e"ho˜w“to“build“theަ les–UUin“that“subGdirectory‘ÿ*ª.ŽŸ О‘Normally‘ÿ*ª,‘®the–ìÅÈOMakeroot›ìIJ le“is˜bGoilerplate.‘NíThe˜follo¸ãwing“listing˜is“a˜t¸ãypicalަexample.Ž¡‘ÿôÈinclude‘?ý$(STDLIB)/build/Commonަ‘ÿôinclude‘?ý$(STDLIB)/build/Cަ‘ÿôinclude‘?ý$(STDLIB)/build/OCamlަ‘ÿôinclude‘?ý$(STDLIB)/build/LaTeXަ¦‘ÿô#–?ýRedefine“the“command-line“variablesަ‘ÿôDefineCommandVars(.)ަ¦‘ÿô#–?ýThe“current“directory“is“part“of“the“projectަ‘ÿô.SUBDIRS:‘?ý.ŽŸBx‘²The–SèÈinclude“²lines“include“the“standard‘Sçcon guration“ les“needed“for“theަpro‘Ž8ject.‘zùThe–È$(STDLIB)‘ã²represen¸ãts“the›Èomake“²library˜directory‘ÿ*ª.‘zùThe“only˜re-ަquired–ôcon guration“ le‘ôis“ÈCommon².‘NThe“others“are“optional;‘C|for“example,‘ÊtheަÈ$(STDLIB)/build/OCaml–˜² le›™is“needed˜only“when˜the“pro‘Ž8ject˜con¸ãtains“programsަwritten–UUin“OCaml.ޤ О‘The–p5ÈDefineCommandVars“²function“de nes“an¸ãy‘p4v‘ÿqÇariables“spGeci ed“on“the“com-ަmand–“üline“(as›“ýargumen¸ãts“of“the“form˜ÈVAR=²).‘1TThe“È.SUBDIRS‘“̲line“spGeci esަthat–÷Ëthe“curren¸ãt“directory“is“part“of‘÷Êthe“pro‘Ž8ject“(so“the“ÈOMakefile“²should“bGeަread).Ž¡‘Normally‘ÿ*ª,‘ü€the–æJÈOMakeroot“² le“should“bšGe“small“and“pro‘Ž8ject-indep˜enden•¸ãt.‘LÄAn“yަpro‘Ž8ject-spšGeci c–‰>con guration“should“b˜e“placed‘‰=in“the“ÈOMakefiles“²of“the“pro‘Ž8ject.ŽŽŽŒ‹3@ s\È ý®£8‘#ï/pdf:dest (page.27) [@thispage /XYZ @xpos @ypos]Ä2.9.‘ÇMUL›ÿ*ªTIPLE–UUVERSION“SUPPOR˜T’ꔲ27ŽŽ 8G ýÚ‘#ï3pdf:dest (section.2.9) [@thispage /XYZ @xpos @ypos]Ÿ Ì2.9Ž‘$æcMultiple–ffvŒÌersion“supps3ortŽŸ×»²OMak•¸ãe›Võv“ersion‘VöÈ0.9.6˜²in“tro•Gduced˜preliminary‘Vösupp“ort˜for˜m•¸ãultiple,‘‰Ösim“ultaneousޤ v¸ãersions–ðÍof›ðÌa“pro‘Ž8ject.‘PDV‘ÿ*ªersioning˜uses“the“Èvmount(dir1,‘?ýdir2)˜²function,‘èwhic¸ãhŽ¡de nes–q?a›q@\virtual“moun¸ãt"˜of“directory“Èdir1˜²o•¸ãv“er‘q?directory˜Èdir2².‘ņA‘pö\virtualŽ¡mounš¸ãt"–¢is“lik˜e“a‘¢transparen˜t“moun˜t“in“Unix,‘µAwhere“the‘¢ les“from“Èdir1“²appGearŽ¡in–´Âthe“Èdir2“²namespace,‘Ìžbut“new“ les“are“created“in“Èdir2².‘More“precisely‘ÿ*ª,‘ÌtheŽ¡ lename–ƒÈdir2/foo›‚²refers“to:‘Ê"a)“the˜ le“Èdir1/foo“²if˜it“exists,‘,Žor˜b)“Èdir2/fooŽ¡²otherwise.Ž© K‘The–"]Èvmount“²function“makš¸ães‘"^it“easy“to“spGecify“m˜ultiple“v˜ersions‘"^of“a“pro‘Ž8ject.Ž¡SuppGose–"Ôwš¸ãe“ha˜v˜e“a“pro‘Ž8ject“where“the“source“ les“are“in“the“directory“Èsrc/²,‘,îandŽ¡w•¸ãe›Sdw“an“t˜to˜compile‘Sct“w“o˜v“ersions,‘†ûone˜with˜debugging‘ScsuppGort˜and˜one˜optimized.Ž¡W‘ÿ*ªe›wcreate‘vt•¸ãw“o˜directories,–I?Èdebug‘v²and˜Èopt²,“and–vmoun¸ãt˜the˜Èsrc“²directory˜o•¸ãv“erŽ¡them.ŽŸ†w‘ÿôÈsectionŽ¡‘)ÿèCFLAGS–?ý+=“-gŽ¡‘)ÿèvmount(-l,–?ýsrc,“debug)Ž¡‘)ÿè.SUBDIRS:‘?ýdebugŽ¡¡‘ÿôsectionŽ¡‘)ÿèCFLAGS–?ý+=“-O3Ž¡‘)ÿèvmount(-l,–?ýsrc,“opt)Ž¡‘)ÿè.SUBDIRS:‘?ýoptŽŸ+‘²Here,‘Íw¸ãe›µare–µusing“Èsection˜²bloGc¸ãks“to˜de ne“the˜scopGe“of˜the“Èvmount²|y¸ãouŽ¡maš¸ãy–UUnot“need“them“in“y˜our“pro‘Ž8ject.ަ‘The–{aÈ-l“²option“is“optional.‘)!It“spGeci es“that‘{b les“form“the“Èsrc“²directory“shouldŽ¡bGe›üBlink•¸ãed‘üCin“to˜the˜target–üCdirectories˜(or˜copied,‘%þif˜the˜system“is˜Win32).‘fTheŽ¡links–åare“added“as“ les“are“referenced.‘Z÷If‘æno“options“are“giv¸ãen,‘•then“ les“are“notŽ¡copied–:©or›:¨link¸ãed,‘?þbut“ lenames“are˜translated“to˜refer“directly˜to“the˜Èsrc/“² les.ަ‘No¸ãw,›ßßwhen–Ä*a“ le“is“referenced“in“the“Èdebug“²directory‘ÿ*ª,˜it“is“link¸ãed“from“theŽ¡Èsrc–J|²directory“if“it›J{exists.‘n*F‘ÿ*ªor“example,‘L§when“the˜ le“Èdebug/OMakefile“²is“read,Ž¡the–UUÈsrc/OMakefile“²is“linkš¸ãed“in˜to“the“Èdebug/“²directory‘ÿ*ª.ަ‘The–QÈvmount“²mošGdel“is“fairly“transparen¸ãt.‘p\The“ÈOMakefile²s“can“b˜e“written“ÎasŽ¡if‘<š²referring–to“ les“in“the“Èsrc/‘²directory|they“need“not“bGe“a•¸ãw“are–of“moun¸ãting.Ž¡Ho•¸ãw“ev“er,–UUthere“are“a“few“pGoinš¸ãts“to“k˜eep“in“mind.ŽŸ08ï4pdf:dest (section.2.10) [@thispage /XYZ @xpos @ypos]Ÿ„Ì2.10Ž‘,ÿüNotesŽŸ×»‘¸ŽŽŽ‘²When–using“the“Èvmount“²function›for“v¸ãersioning,‘âit˜wise“to“k¸ãeep“the“sourceŽ¡‘ les–ýVdistinct“from‘ýUthe“compiled“v¸ãersions.‘TrF‘ÿ*ªor“example,‘ïsuppGose“the“sourceŽ¡‘directory–s†con¸ãtained›s…a“ le“Èsrc/foo.o².‘ÌYWhen˜moun¸ãted,‘{the“Èfoo.o˜² le“willŽ¡‘bGe–íœthe›ísame“in“all˜v•¸ãersions,‘®whic“h–íœis“probably˜not“what“y•¸ãou˜w“an“t.‘:It‘íœisŽ¡‘bGetter–UUto“kš¸ãeep“the“Èsrc/“²directory“pristine,“con˜taining“no“compiled“coGde.ŽŽŽŒ‹=¨ s\È ý®£8‘Yï/pdf:dest (page.28) [@thispage /XYZ @xpos @ypos]²28‘wƒvÄCHAPTER–UU2.‘ÇOMAKE“QUICKST–ÿ*ªAR“T‘UUGUIDEŽŽ 8G ýÚŸ ‘h¸ŽŽŽ‘r²When–hKusing“the‘hLÈvmount‘?ý-l“²option,‘m les“are“linkš¸ãed“in˜to‘hLthe“v˜ersion“direc-ޤ ‘rtory–$only“if“they“are“referenced“in‘$the“pro‘Ž8ject.‘Þ F‘ÿ*ªunctions“that“examineŽ¡‘rthe–UU lesystem“(likš¸ãe“È$(ls‘?ý...)²)“ma˜y“prošGduce“unexp˜ected“results.ŽŽŽŒ‹JO s\È ý®£8‘#ï/pdf:dest (page.29) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï1pdf:dest (chapter.3) [@thispage /XYZ @xpos @ypos]ŸU€ÊChapter‘Ç 3ŽŸ2€ÆAdditional– T{build“examplesŽŸ4€²Let's–êexplain“the›êOMak¸ãe“build“moGdel“a“bit˜more.‘NOne“issue˜that“dominates“thisޤ discussion–—Üis›—Ýthat“OMak¸ãe“is“based˜on“global“pro‘Ž8ject˜analysis.‘9\That˜means“y¸ãouŽ¡de ne–¯)a“con guration“for“the“Îentir‘ÿ}'e‘oƒ²pro‘Ž8ject,‘Ðfand‘¯(yš¸ãou“run“Îone‘o„²instance“of“omak˜e.Ž© €‘F›ÿ*ªor–.5single-directory“pro‘Ž8jects“this“doGesn't“mean‘.4m•¸ãuc“h.‘ügF˜or‘.5m“ulti-directoryŽ¡pro‘Ž8jects–ÇXit“means“a“lot.‘ÇÑWith“GNU‘Ç;mak•¸ãe,‘ãØy“ou‘ÇYw“ould–ÇXusually“in•¸ãv“ok“e–ÇXthe“ÈmakeŽ¡²program–Ïürecursivš¸ãely‘Ïûfor“eac˜h›Ïûdirectory“in“the˜pro‘Ž8ject.‘ETF‘ÿ*ªor“example,‘ê§suppGose“y¸ãouŽ¡had–¼@a“pro›Ž8ject‘¼?with“some“pro˜ject“roGot“directory‘ÿ*ª,‘ÚÞcon¸ãtaining“a‘¼?directory“of“sourcesŽ¡Èsrc²,‘*ìwhicš¸ãh– Qin“turn“con˜tains“subGdirectories“Èlib“²and“Èmain².‘`So“y˜our“pro‘Ž8ject“loGoksŽ¡lik¸ãe–UUthis“nice“piece“of“ASCIGI“art.ŽŸ€‘ÿôÈmy_project/Ž¡‘ÿô|-->‘?ýMakefileŽ¡‘ÿô`-->‘?ýsrc/Ž¡‘/?å|--->‘?ýMakefileŽ¡‘/?å|--->‘?ýlib/Ž¡‘/?å|‘?ñ|--->‘?ýMakefileŽ¡‘/?å|‘?ñ`--->–?ýsource“files...Ž¡‘/?å`--->‘?ýmain/Ž¡‘N¿Ó|--->‘?ýMakefileŽ¡‘N¿Ó`--->–?ýsource“files...ŽŸ‘²T•¸ãypically‘ÿ*ª,›qÇwith‘8ãGNU‘8›mak“e,˜y“ou›8ãw“ould˜start˜an˜instance˜of˜Èmake˜²in˜Èmy_project/²;Ž¡this–M’w¸ãould›M“in“term“start“an˜instance“of“Èmake“²in˜the“Èsrc/“²directory;‘¥~and˜this“w¸ãouldŽ¡start–s,new›s-instances“in˜Èlib/“²and˜Èmain/².‘ËMBasically‘ÿ*ª,‘z£yš¸ãou“coun˜t›s-up“the˜n•¸ãum“bGer‘s,ofŽ¡ÈMakefile²s–ôin“the›ôpro‘Ž8ject,‘and“that˜is“the“n•¸ãum“bGer–ôof“instances˜of“Èmake“²proGcessesŽ¡that–UUwill“bGe“created.ަ‘The›ø;n•¸ãum“b•Ger‘ø:of˜pro“cesses˜is–ø:no˜big“deal˜with˜toGdaš¸ãy's“mac˜hines‘ø;(sometimesŽ¡con¸ãtrary–Úthe›Ûthe“author's˜opinion,‘&w¸ãe˜no“longer˜liv¸ãe“in˜the“1970s).‘VŸThe“problemŽ¡with–rîthe‘rïscš¸ãheme“w˜as“that‘rïeac˜h“Èmake“²proGcess“had‘rïa“separate“con guration,‘zUandŽ¡it–ù¥toGok›ù¤a“lot“of˜wš¸ãork“to“mak˜e‘ù¤sure“that“ev˜erything‘ù¤w˜as“consisten˜t.‘S7F‘ÿ*ªurthermore,Ž¡suppGose–the›programmer“runs˜Èmake“²in“the˜Èmain/“²directory‘ÿ*ª,‘«but˜the“Èlib/˜²is“out-ŽŽŸK’Êÿ29ŽŽŒ‹L1 s\È ý®£8‘Yï/pdf:dest (page.30) [@thispage /XYZ @xpos @ypos]²30‘hNÄCHAPTER–UU3.‘ÇADDITIONAL“BUILD“EXAMPLESŽŽ 8G ýÚŸ ‘Y²of-date.‘_!In–cthis“case,‘(”Èmake“²wš¸ãould“happily“crank“a˜w˜a˜y‘ÿ*ª,‘(”pGerhaps“trying“to“rebuildޤ ‘Y les–UUin“Èlib/²,“pGerhaps“just“giving“up.Ž© hº‘hWith–]ÎOMakš¸ãe‘]Ïthis“c˜hanges‘]Ïen˜tirely–ÿ*ª.‘‹3W“ell,‘_ínot‘]Ïen˜tirely“.‘‹3The‘]Ïsource‘]ÎstructureŽ¡‘Yis–UUquite“similar,“w¸ãe“merely“add“some“Os“to“the“ASCIGI“art.ŽŸ £‘mÿôÈmy_project/Ž¡‘mÿô|-->–?ýOMakeroot‘¿÷(or“Root.om)Ž¡‘mÿô|-->‘?ýOMakefileŽ¡‘mÿô`-->‘?ýsrc/Ž¡’ˆ?å|--->‘?ýOMakefileŽ¡’ˆ?å|--->‘?ýlib/Ž¡’ˆ?å|‘?ñ|--->‘?ýOMakefileŽ¡’ˆ?å|‘?ñ`--->–?ýsource“files...Ž¡’ˆ?å`--->‘?ýmain/Ž¡’§¿Ó|--->‘?ýOMakefileŽ¡’§¿Ó`--->–?ýsource“files...ŽŸ¢é‘h²The–8ãrole“of“eacš¸ãh“È/OMakefile“²pla˜ys“the“same“role“as“eac˜h“È/Makefile²:Ž¡‘Yit– †describGes› ‡ho¸ãw“to˜build“the˜source“ les˜in“Ȳ.‘Y.The“OMak¸ãe le˜retains“m•¸ãuc“hŽ¡‘Yof–UUsynš¸ãtax“and“structure“of“the“Mak˜e le,“but“in“most“cases“it“is“m˜uc˜h“simpler.ަ‘hOne–Чminor›Ѝdi erence“is˜the“presence˜of“the“OMak¸ãeroGot˜in“the˜pro‘Ž8ject“roGot.Ž¡‘YThe–&main›%purpGose“of˜this“ le˜is“to˜indicate“where“the˜pro‘Ž8ject“roGot˜Îis‘àG²in˜the“ rstŽ¡‘Yplace–T(in“case›TÈomake“²is“in•¸ãv“ok“ed–Tfrom˜a“subGdirectory).‘q\The˜ÈOMakeroot“²serv¸ães“asŽ¡‘Ythe›5b•Go“otstrap–5 le;‘?Ñomak¸ãe“starts˜b¸ãy˜reading˜this“ le˜ rst.‘gOtherwise,‘;‚the˜syn¸ãtaxŽ¡‘Yand–UUev‘ÿqÇaluation“of“ÈOMakeroot“²is“no“di erenš¸ãt“from“an˜y“other“ÈOMakefile².ަ‘hThe–ÊoÎbig‘¬ì²di erence“is“that“OMak¸ãe“pGerforms“a“Îglob‘ÿ}'al‘Òø²analysis.‘ÑHere“is“whatŽ¡‘YhappGens–UUwhen“Èomake“²starts.Ž‘YŸÃ<ï.pdf:dest (Item.1) [@thispage /XYZ @xpos @ypos]©ß­‘ 8ä1.ŽŽŽ‘omakš¸ãe–UUloGcates“that“OMak˜eroGot“ le,“and“reads“it.ŽŸÃ;ï.pdf:dest (Item.2) [@thispage /XYZ @xpos @ypos]Ÿß®‘ 8ä2.ŽŽŽ‘Eac•¸ãh›f²OMak“e le‘f³pGoin“ts˜to˜its‘f³subGdirectory˜OMak“e les˜using‘f³the˜.SUBDIRSŽ¡‘target.‘qÇF‘ÿ*ªor–UUexample,“Èmy_project/OMakefile“²has“a“rule,ޤ £‘-ÿöÈ.SUBDIRS:‘?ýsrcŽŸ ¢‘²and–UUthe“Èmy_project/src/OMakefile“²has“a“rule,Ž¡‘-ÿöÈ.SUBDIRS:–?ýlib“mainŽ¡‘omake–@²uses“these“rules“to“read“and‘@ev‘ÿqÇaluate“ev¸ãery“ÈOMakefile“²in“the“pro‘Ž8ject.ޤ ‘Reading–UUand“ev‘ÿqÇaluation“is“fast.‘qÇThis“part“of“the“proGcess“is“c¸ãheap.ŽŸÃ<ï.pdf:dest (Item.3) [@thispage /XYZ @xpos @ypos]¦‘ 8ä3.ŽŽŽ‘Noš¸ãw–Ÿ™that“the“en˜tire“con guration“is“read,‘ÃòÈomake“²determines“whic˜h“ les“areŽ¡‘out-of-date–þÓ(using“a“global›þÔanalysis),‘)2and“starts“the“build˜proGcess.‘nAThisŽ¡‘ma•¸ãy›UUtak“e˜a˜while,˜dep•Gending˜on˜what˜exactly˜needs˜to˜b“e˜done.ŽŽŽŒ‹U¤ s\È ý®£8‘#ï/pdf:dest (page.31) [@thispage /XYZ @xpos @ypos]Ä3.1.‘ÇOMAKER¸ãOOT–UUVS.“OMAKEFILE’ž²31ŽŽ 8G ýÚŸ ‘2There– †are‘ …sevš¸ãeral“adv‘ÿqÇan˜tages› …to“this“moGdel.‘X×First,‘|since“analysis˜is“global,‘|itޤ ‘#is›–Im•¸ãuc“h––Heasier˜to“ensure˜that˜the“build˜con guration“is˜consisten¸ãt{after“all,‘¼thereŽ¡‘#is–j%only“one“con guration.‘°7Another‘j&bGene t“is“that“the“build“con guration“is“in-Ž¡‘#herited,‘ and› ¼can– »bGe“re-used,‘do¸ãwn“the˜hierarc•¸ãh“y›ÿ*ª.‘YéT“ypically˜,‘ the‘ ¼roGot‘ »ÈOMakefileŽ¡‘#²de nes–h some“standard“bGoilerplate›h and“con guration,‘¬¹and˜this“is“inherited“b¸ãyŽ¡‘#subšGdirectories–½that“t•¸ãw“eak–½and“mo˜dify“it“(but‘¼do“not“need“to“restate“it“en¸ãtirely).Ž¡‘#The–,disadv‘ÿqÇan¸ãtage›+of“course˜is“space,‘J since“this˜is“global˜analysis“after˜all.‘½KInŽ¡‘#practice–TErarely“seems“to“bGe“a“concern;‘Ó¾omakš¸ãe“tak˜es“up“m˜uc˜h“less“space“thanŽ¡‘#y•¸ãour›UUw“eb˜bro“wser˜ev“en˜on˜large˜pro‘Ž8jects.Ž© |‘2Some–UUnotes“to“the“GNU/BSD“mak¸ãe“user.ŽŸ+t‘2¸ŽŽŽ‘<²OMakš¸ãe les–í5are“a“lot“lik˜e‘í4Mak˜e les.‘OThe“syn˜tax“is“similar,‘and“there“man˜yŽ¡‘<of–äthe›äbuiltin“functions˜are“similar.‘Ho•¸ãw“ev“er,‘Åthe˜t“w“o–äbuild˜systems“areŽ¡‘<not–w‘?ýOMakerootŽ¡‘mÿô|-->‘?ýOMakefileŽ¡‘mÿô`-->‘?ýsrc/Ž¡’ˆ?å|--->‘?ýOMakefileŽ¡’ˆ?å|--->‘?ýlib/Ž¡’ˆ?å|‘?ñ|--->‘?ýOMakefileŽ¡’ˆ?å|‘?ñ|--->‘?ýouch.cŽ¡’ˆ?å|‘?ñ|--->‘?ýouch.hŽ¡’ˆ?å|‘?ñ`--->‘?ýbandaid.cŽ¡’ˆ?å`--->‘?ýmain/Ž¡’§¿Ó|--->‘?ýOMakefileŽ¡’§¿Ó|--->‘?ýhorsefly.cŽ¡’§¿Ó|--->‘?ýhorsefly.hŽ¡’§¿Ó`--->‘?ýmain.cŽŸÇ‘h²Here–UUis“an“example“listing.ŽŸ8ä‘YÈmy_project/OMakeroot:Ž¡‘mÿô#–?ýInclude“the“standard“configuration“for“C“applicationsŽ¡‘mÿôopen‘?ýbuild/CŽ¡¡‘mÿô#–?ýProcess“the“command-line“varsŽ¡‘mÿôDefineCommandVars()Ž¡¡‘mÿô#–?ýInclude“the“OMakefile“in“this“directory.Ž¡‘mÿô.SUBDIRS:‘?ý.Ž¡¡‘Ymy_project/OMakefile:Ž¡‘mÿô#–?ýSet“up“the“standard“configurationŽ¡‘mÿôCFLAGS–?ý+=“-gŽ¡¡‘mÿô#–?ýInclude“the“src“subdirectoryŽ¡‘mÿô.SUBDIRS:‘?ýsrcŽ¡¡‘Ymy_project/src/OMakefile:Ž¡‘mÿô#–?ýAdd“any“extra“options“you“likeŽ¡‘mÿôCFLAGS–?ý+=“-O2Ž¡¡‘mÿô#–?ýInclude“the“subdirectoriesŽ¡‘mÿô.SUBDIRS:–?ýlib“mainŽ¡¡‘Ymy_project/src/lib/OMakefile:Ž¡‘mÿô#–?ýBuild“the“library“as“a“static“library.Ž¡‘mÿô#–?ýThis“builds“libbug.a“on“Unix/OSX,“or“libbug.lib“on“Win32.Ž¡‘mÿô#–?ýNote“that“the“source“files“are“listed“_without_“suffix.ŽŽŽŒ‹!nó s\È ý®£8‘#ï/pdf:dest (page.33) [@thispage /XYZ @xpos @ypos]Ä3.3.‘ÇAN–UUEXAMPLE“OCAML“PR¸ãOJECT’•ÜZ²33ŽŽ 8G ýÚŸ ‘7ÿôÈStaticCLibrary(libbug,–?ýouch“bandaid)ޤ ¡‘#my_project/src/main/OMakefile:Ž¡‘7ÿô#–?ýSome“files“include“the“.h“files“in“../libŽ¡‘7ÿôINCLUDES–?ý+=“../libŽ¡¡‘7ÿô#–?ýIndicate“which“libraries“we“want“to“link“against.Ž¡‘7ÿôLIBS[]‘?ý+=Ž¡‘Lÿè../lib/libbugŽ¡¡‘7ÿô#–?ýBuild“the“program.Ž¡‘7ÿô#–?ýBuilds“horsefly.exe“on“Win32,“and“horsefly“on“Unix.Ž¡‘7ÿô#–?ýThe“first“argument“is“the“name“of“the“executable.Ž¡‘7ÿô#–?ýThe“second“argument“is“an“array“of“object“files“(without“suffix)Ž¡‘7ÿô#–?ýthat“are“part“of“the“program.Ž¡‘7ÿôCProgram(horsefly,–?ýhorsefly“main)Ž¡¡‘7ÿô#–?ýBuild“the“program“by“default“(in“case“omake“is“calledŽ¡‘7ÿô#–?ýwithout“any“arguments).‘ úEXE“is“defined“as“.exe“on“Win32,Ž¡‘7ÿô#–?ýotherwise“it“is“empty.Ž¡‘7ÿô.DEFAULT:‘?ýhorsefly$(EXE)ŽŸI¢‘2²Most–of“the“con guration›here“is“de ned“in“the“ le˜Èbuild/C.om“²(whic¸ãh“isŽ¡‘#part–of“the›OMak¸ãe“distribution).‘V´This˜ le“tak¸ães“care“of“a˜lot“of“w¸ãork,‘Yincluding:Ž©n‘2¸ŽŽŽ‘<²De ning–—¹the“ÈStaticCLibrary“²and“ÈCProgram“²functions,‘½¦whic¸ãh“describGe“theŽ¡‘<canonical›UUw•¸ãa“y˜to˜build˜C˜libraries˜and˜programs.ŽŸ· ‘2¸ŽŽŽ‘<²De ning–r a‘r!mecš¸ãhanism“for“Îsc‘ÿ}'anning‘Tž²eac˜h“of›r!the“source“programs˜to“disco•¸ãv“erŽ¡‘<depGendencies.‘qÇThat–UUis,“it“de nes“.SCANNER“rules“for“C“source“ les.ަ‘2V‘ÿ*ªariables–áare“inherited‘ádoš¸ãwn“the“hierarc˜h˜y‘ÿ*ª,›Dso“for“example,˜the“v‘ÿqÇalue“ofŽ¡‘#CFLAš¸ãGS–UUin“src/main/OMak˜e le“is“\È-g‘?ý-O2²".Ž‘#Ÿr\ï3pdf:dest (section.3.3) [@thispage /XYZ @xpos @ypos]Ÿ€Ì3.3Ž‘$æcAn–ffexample“OCaml“pro‘æfjectŽŸç²Let's–˜ýrepGeat›˜üthe“example,‘¾¨assuming“w¸ãe˜are“using“OCaml˜instead“of“C.˜This“time,Ž¡the–UUdirectory“tree“loGoks“lik¸ãe“this.ŽŸI¢‘ÿôÈmy_project/Ž¡‘ÿô|-->‘?ýOMakerootŽ¡‘ÿô|-->‘?ýOMakefileŽ¡‘ÿô`-->‘?ýsrc/Ž¡‘/?å|--->‘?ýOMakefileŽ¡‘/?å|--->‘?ýlib/Ž¡‘/?å|‘?ñ|--->‘?ýOMakefileŽ¡‘/?å|‘?ñ|--->‘?ýouch.mlŽŽŽŒ‹"tt s\È ý®£8‘Yï/pdf:dest (page.34) [@thispage /XYZ @xpos @ypos]²34‘hNÄCHAPTER–UU3.‘ÇADDITIONAL“BUILD“EXAMPLESŽŽ 8G ýÚŸ ’ˆ?åÈ|‘?ñ|--->‘?ýouch.mliޤ ’ˆ?å|‘?ñ`--->‘?ýbandaid.mlŽ¡’ˆ?å`--->‘?ýmain/Ž¡’§¿Ó|--->‘?ýOMakefileŽ¡’§¿Ó|--->‘?ýhorsefly.mlŽ¡’§¿Ó|--->‘?ýhorsefly.mliŽ¡’§¿Ó`--->‘?ýmain.mlŽŸÇ‘h²The–UUlisting“is“only“a“bit“di eren¸ãt.ŽŸ8ä‘YÈmy_project/OMakeroot:Ž¡‘mÿô#–?ýInclude“the“standard“configuration“for“OCaml“applicationsŽ¡‘mÿôopen‘?ýbuild/OCamlŽ¡¡‘mÿô#–?ýProcess“the“command-line“varsŽ¡‘mÿôDefineCommandVars()Ž¡¡‘mÿô#–?ýInclude“the“OMakefile“in“this“directory.Ž¡‘mÿô.SUBDIRS:‘?ý.Ž¡¡‘Ymy_project/OMakefile:Ž¡‘mÿô#–?ýSet“up“the“standard“configurationŽ¡‘mÿôOCAMLFLAGS–?ý+=“-WaŽ¡¡‘mÿô#–?ýDo“we“want“to“use“the“bytecode“compiler,Ž¡‘mÿô#–?ýor“the“native-code“one?‘ úLet's“use“both“forŽ¡‘mÿô#–?ýthis“example.Ž¡‘mÿôNATIVE_ENABLED–?ý=“trueŽ¡‘mÿôBYTE_ENABLED–?ý=“trueŽ¡¡‘mÿô#–?ýInclude“the“src“subdirectoryŽ¡‘mÿô.SUBDIRS:‘?ýsrcŽ¡¡‘Ymy_project/src/OMakefile:Ž¡‘mÿô#–?ýInclude“the“subdirectoriesŽ¡‘mÿô.SUBDIRS:–?ýlib“mainŽ¡¡‘Ymy_project/src/lib/OMakefile:Ž¡‘mÿô#–?ýLet's“do“aggressive“inlining“on“native“codeŽ¡‘mÿôOCAMLOPTFLAGS–?ý+=“-inline“10Ž¡¡‘mÿô#–?ýBuild“the“library“as“a“static“library.Ž¡‘mÿô#–?ýThis“builds“libbug.a“on“Unix/OSX,“or“libbug.lib“on“Win32.Ž¡‘mÿô#–?ýNote“that“the“source“files“are“listed“_without_“suffix.Ž¡‘mÿôOCamlLibrary(libbug,–?ýouch“bandaid)Ž¡ŽŽŒ‹#|Ý s\È ý®£8‘#ï/pdf:dest (page.35) [@thispage /XYZ @xpos @ypos]Ä3.4.‘ÇHANDLING–UUNEW“LANGUA¸ãGES’¡ •²35ŽŽ 8G ýÚŸ ‘#Èmy_project/src/main/OMakefile:ޤ ‘7ÿô#–?ýThese“files“depend“on“the“interfaces“in“../libŽ¡‘7ÿôOCAMLINCLUDES–?ý+=“../libŽ¡¡‘7ÿô#–?ýIndicate“which“libraries“we“want“to“link“against.Ž¡‘7ÿôOCAML_LIBS[]‘?ý+=Ž¡‘Lÿè../lib/libbugŽ¡¡‘7ÿô#–?ýBuild“the“program.Ž¡‘7ÿô#–?ýBuilds“horsefly.exe“on“Win32,“and“horsefly“on“Unix.Ž¡‘7ÿô#–?ýThe“first“argument“is“the“name“of“the“executable.Ž¡‘7ÿô#–?ýThe“second“argument“is“an“array“of“object“files“(without“suffix)Ž¡‘7ÿô#–?ýthat“are“part“of“the“program.Ž¡‘7ÿôOCamlProgram(horsefly,–?ýhorsefly“main)Ž¡¡‘7ÿô#–?ýBuild“the“program“by“default“(in“case“omake“is“calledŽ¡‘7ÿô#–?ýwithout“any“arguments).‘ úEXE“is“defined“as“.exe“on“Win32,Ž¡‘7ÿô#–?ýotherwise“it“is“empty.Ž¡‘7ÿô.DEFAULT:‘?ýhorsefly$(EXE)Ž©_‘2²In–8ãthis“case,‘qÇmost“of“the“con guration“here“is“de ned“in“the“ le“Èbuild/OCaml.om².Ž¡‘#In–ƒxthis“particular“con guration,‘ les“in“Èmy_project/src/lib“²are“compiled“ag-Ž¡‘#gressiv¸ãely–Swith›S the“option˜È-inline‘?ý10²,‘’|but˜ les“in˜Èmy_project/src/lib“²areŽ¡‘#compiled‘UUnormally‘ÿ*ª.Ž‘#Ÿܯï3pdf:dest (section.3.4) [@thispage /XYZ @xpos @ypos]Ÿ9Ì3.4Ž‘$æcHandling–ffnew“languagesŽŸç²The››Ðprevious‘›Ñt•¸ãw“o˜examples˜seem˜to–›ÑbGe˜easy˜enough,‘Àìbut˜they˜rely˜on“the˜OMak¸ãeŽ¡standard–Þ"library›Þ#(the“ les˜Èbuild/C‘Þ²and“Èbuild/OCaml²)˜to“do“all˜the“w¸ãork.‘J WhatŽ¡happGens–O¼if‘O»wš¸ãe“w˜an˜t“to“write›O»a“build“con guration˜for“a“language“that˜is“notŽ¡already–UUsuppGorted“in“the“OMak¸ãe“standard“library?Ž¡‘F‘ÿ*ªor–Ô“this“example,‘ôblet's“suppGose“w¸ãe“are“adopting“a‘Ô’new“language.‘ïThe“lan-Ž¡guage–#çuses›#æthe“standard“compile/link˜moGdel,‘-Êbut“is˜not“in“the˜OMak¸ãe“standardŽ¡library–ÿ*ª.‘qÇSpGeci cally“,–UUlet's“saš¸ãy“w˜e“ha˜v˜e“the“follo˜wing“setup.ަ‘¸ŽŽŽ‘²Source–»Ø les“are“de ned“in“ les‘»×with“a“È.cat“²sux“(for“Categorical“AbstractŽ¡‘T‘ÿ*ªerminology).Ž©¥À‘¸ŽŽŽ‘È.cat–¶O² les›¶Nare“compiled˜with“the˜Ècatc“²compiler˜to“proGduce˜È.woof“² lesŽ¡‘(Wic•¸ãk“ed›UUOb‘Ž8ject-Orien“ted˜F‘ÿ*ªormat).ŽŸ¥¿‘¸ŽŽŽ‘È.woof– ² les› are“link•¸ãed˜b“y– the“Ècatc˜²compiler“with“the˜È-c“²option˜to“proGduceŽ¡‘a–JÈ.dog›J²executable“(Digital˜Ob‘Ž8ject“Group).‘P$The“Ècatc˜²also“de nes˜a“È-aŽ¡‘²option–UUto“comš¸ãbine“sev˜eral“È.woof“² les“in˜to“a“library‘ÿ*ª.ަ‘¸ŽŽŽ‘²Eac¸ãh–¹]È.cat“²can›¹\refer“to“other“source“ les.‘ÞIf“a“source˜ le“Èa.cat“²con¸ãtainsŽ¡‘a– Aline› @Èopen‘?ýb²,‘7|then“Èa.cat˜²depGends“on“the˜ le“Èb.woof²,‘7|and˜Èa.cat“²m¸ãustŽŽŽŒ‹$‚É s\È ý®£8‘Yï/pdf:dest (page.36) [@thispage /XYZ @xpos @ypos]²36‘hNÄCHAPTER–UU3.‘ÇADDITIONAL“BUILD“EXAMPLESŽŽ 8G ýÚŸ ‘r²bGe–@¡recompiled›@¢if“Èb.woof“²c¸ãhanges.‘jàThe˜Ècatc“²function“tak¸ães“a˜È-I‘@œ²option“toޤ ‘rde ne–UUa“searc¸ãh“path“for“depGendencies.ŽŸY‘hT‘ÿ*ªo–UUde ne“a“build“con guration,“wš¸ãe“ha˜v˜e“to“do“three“things.Ž‘YŸbï.pdf:dest (Item.4) [@thispage /XYZ @xpos @ypos]© B‘ 8ä1.ŽŽŽ‘De ne–†Ya›†ZÈ.SCANNER‘† ²rule“for“disco•¸ãv“ering˜depGendency–†Yinformation˜for“theŽ¡‘source‘UU les.ŽŸ3Þï.pdf:dest (Item.5) [@thispage /XYZ @xpos @ypos]Ÿ3ß‘ 8ä2.ŽŽŽ‘De ne–UUa“generic“rule“for“compiling“a“È.cat“² le“to“a“È.woof“² le.ŽŸ%¥ï.pdf:dest (Item.6) [@thispage /XYZ @xpos @ypos]¦‘ 8ä3.ŽŽŽ‘De ne–†a›†rule“(as“a˜function)“for“linking“È.woof˜² les“to“proGduce˜a“È.dogŽ¡‘²executable.ŽŸÏz‘Initially‘ÿ*ª,–UUthese“de nitions“will“bšGe“placed“in“the“pro‘Ž8ject“ro˜ot“ÈOMakefile².Ž©@7ï8pdf:dest (subsection.3.4.1) [@thispage /XYZ @xpos @ypos]Ÿ 9Í3.4.1Ž‘)@De ning–€a“default“compilation“ruleŽŸuT²Let's–RTstart“with“part“2,‘‘“de ning“a“generic“compilation“rule.‘hÃW‘ÿ*ªe'll“de ne“theŽ¡build–ʽrule›ʾas“an˜Îimplicit‘½•²rule.‘C•T‘ÿ*ªo˜handle“the˜include“path,‘ævw¸ãe'll“de ne˜a“v‘ÿqÇariableŽ¡ÈCAT_INCLUDES‘Da²that–DespšGeci es“the“include“path.‘l!This“will“b˜e“an“arra¸ãy“of“directo-Ž¡ries.‘f-T‘ÿ*ªo–2‡de ne›2†the“options,‘9}w¸ãe'll“use“a˜lazy“v‘ÿqÇariable“(Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.5) >> >> 7.5ïpdf:eann).‘f-In˜case“thereŽ¡are–UUanš¸ãy“other“standard“ ags,“w˜e'll“de ne“a“ÈCAT_FLAGS“²v‘ÿqÇariable.ŽŸX‘¿÷È#–?ýDefine“the“catc“command,“in“case“we“ever“want“to“override“itŽ¡‘¿÷CATC–?ý=“catcŽ¡¡‘¿÷#–?ýThe“default“flags“are“emptyŽ¡‘¿÷CAT_FLAGS‘?ý=Ž¡¡‘¿÷#–?ýThe“directories“in“the“include“path“(empty“by“default)Ž¡‘¿÷INCLUDES[]‘?ý=Ž¡¡‘¿÷#–?ýCompute“the“include“options“from“the“include“pathŽ¡‘¿÷PREFIXED_INCLUDES[]–?ý=“$`(mapprefix“-I,“$(INCLUDES))Ž¡¡‘¿÷#–?ýThe“default“way“to“build“a“.woof“fileŽ¡‘¿÷%.woof:‘?ý%.catŽ¡‘$¿ë$(CATC)–?ý$(PREFIXED_INCLUDES)“$(CAT_FLAGS)“-c“$<ŽŸY‘²The–{A nal“part“is›{@the“build“rule“itself,‘„¼where“w¸ãe“call˜the“Ècatc“²compiler“withŽ¡the–ª,include“path,‘¿band“the“ÈCAT_FLAGS‘ª²that“ha•¸ãv“e–ª,bGeen“de ned.‘pMThe“È$<“²v‘ÿqÇariableŽ¡represen¸ãts–UUthe“source“ le.ަï8pdf:dest (subsection.3.4.2) [@thispage /XYZ @xpos @ypos]Ÿ 9Í3.4.2Ž‘)@De ning–€a“rule“for“linkingŽŸuT²F‘ÿ*ªor–á‡linking,‘ø°w¸ãe'll›á†de ne“another˜rule“describing˜ho¸ãw“to˜pGerform“linking.‘K-InsteadŽ¡of–aüde ning›aýan“implicit“rule,‘’¨w¸ãe'll“de ne“a˜function“that“describGes“the˜linking“step.Ž¡The–ï"function“will“takš¸ãe“t˜w˜o‘ï!argumen˜ts;‘< the“ rst“is‘ï!the“name“of“the“executableŽ¡(without–5sux),‘;ˆand“the“second›5is“the“ les˜to“link˜(also“without“suxes).‘gHereŽ¡is–UUthe“coGde“fragmen¸ãt.ŽŽŽŒ‹%£ s\È ý®£8‘#ï/pdf:dest (page.37) [@thispage /XYZ @xpos @ypos]Ä3.4.‘ÇHANDLING–UUNEW“LANGUA¸ãGES’¡ •²37ŽŽ 8G ýÚŸ ‘7ÿôÈ#–?ýOptional“link“optionsޤ ‘7ÿôCAT_LINK_FLAGS‘?ý=Ž¡¡‘7ÿô#–?ýThe“function“that“defines“how“to“build“a“.dog“programŽ¡‘7ÿôCatProgram(program,–?ýfiles)“=Ž¡‘Lÿè#–?ýAdd“the“suffixesŽ¡‘Lÿèfile_names–?ý=“$(addsuffix“.woof,“$(files))Ž¡‘Lÿèprog_name–?ý=“$(addsuffix“.dog,“$(files))Ž¡¡‘Lÿè#–?ýThe“build“ruleŽ¡‘Lÿè$(prog_name):‘?ý$(file_names)Ž¡‘aÿÜ$(CATC)–?ý$(PREFIXED_INCLUDES)“$(CAT_FLAGS)“$(CAT_LINK_FLAGS)“-o“$@“$+Ž¡¡‘Lÿè#–?ýReturn“the“program“nameŽ¡‘Lÿèvalue‘?ý$(prog_name)ŽŸ‰K‘2²The–ŒtÈCAT_LINK_FLAGS‘Œf²v‘ÿqÇariable›Œuis“de ned“just“in˜case“wš¸ãe“w˜an˜t“to‘Œupass“addi-Ž¡‘#tional–ÓÌ ags›ÓËspGeci c“to˜the“link“step.‘F™No¸ãw“that˜this“function˜is“de ned,‘í´whenev¸ãerŽ¡‘#w•¸ãe›yiw“an“t˜to˜de ne˜a‘yjrule˜for˜building˜a˜program,‘¥fw“e˜simply˜call˜the˜rule.‘(yThe˜pre-Ž¡‘#vious–¸¦implicit›¸¥rule“spGeci es˜ho¸ãw“to˜compile“eac¸ãh˜source“ le,‘×üand˜the“ÈCatProgramŽ¡‘#²function–UUspGeci es“ho¸ãw“to“build“the“executable.Ž©‰J‘7ÿôÈ#–?ýBuild“a“rover.dog“program“from“the“sourceŽ¡‘7ÿô#–?ýfiles“neko.cat“and“chat.cat.Ž¡‘7ÿô#–?ýCompile“it“by“default.Ž¡‘7ÿô.DEFAULT:–?ý$(CatProgram“rover,“neko“chat)Ž‘#Ÿžfï8pdf:dest (subsection.3.4.3) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ3.4.3Ž‘)@Dep`endency‘€scanningŽŸuT²That's–ì!it,‘Ôalmost.‘6,The“part“wš¸ãe“left“out‘ì"w˜as“automated“depGendency“scanning.Ž¡This–Iüis“one“of›Iýthe“nicer“features“of“OMak¸ãe,‘LAand“one˜that“mak¸ães“build“spGeci ca-Ž¡tions–¯easier›°to“write˜and“more˜robust.‘¹ÖStrictly“spGeaking,‘Þit˜isn't“required,‘ÞbutŽ¡yš¸ãou–UUde nitely“w˜an˜t“to“do“it.Ž¡‘The–×Tmec¸ãhanism›×Sis“to˜de ne“a“È.SCANNER‘×3²rule,‘ðˆwhic¸ãh˜is“lik¸ãe“a˜normal“rule,‘ð‡butŽ¡it–M“spšGeci es“ho¸ãw“to‘M”compute“dep˜endencies,›O not“the“target“itself.‘o1In‘M”this“case,˜w¸ãeŽ¡w•¸ãan“t–UUto“de ne“a“È.SCANNER“²rule“of“the“follo¸ãwing“form.ަ‘ÿôÈ.SCANNER:–?ý%.woof:“%.catŽ¡‘)ÿ莟‰K‘²This–†urule“spGeci es“that“a“È.woof‘†t² le“maš¸ãy“ha˜v˜e“additional“depGendencies“thatŽ¡can–ŸbGe›Ÿ extracted“from“the˜correspGonding“È.cat˜² le“b¸ãy“executing˜the“Ȳ.Ž¡The–¯Îr‘ÿ}'esult‘¡ñ²of“executing›¯the“Ș²should“bGe˜a“sequence˜of“depGendenciesŽ¡in–UUOMakš¸ãe“format,“prin˜ted“to“the“standard“output.Ž¡‘As–³„wš¸ãe“men˜tioned,‘Ëeac˜h‘³…È.cat“² le“spšGeci es“dep˜endencies“on‘³…È.woof“² les“withŽ¡an–)êÈopen›)é²directiv¸ãe.‘cNF‘ÿ*ªor“example,‘2˜if“the˜Èneko.cat“² le˜con¸ãtains“a˜line“Èopen‘?ýchat²,Ž¡then–ìHÈneko.woof›ìI²depGends“on“Èchat.woof².‘6¢In“this“case,‘the˜È“²shouldŽ¡prinš¸ãt–UUthe“follo˜wing“line.ŽŽŽŒ‹&™„ s\È ý®£8‘Yï/pdf:dest (page.38) [@thispage /XYZ @xpos @ypos]²38‘hNÄCHAPTER–UU3.‘ÇADDITIONAL“BUILD“EXAMPLESŽŽ 8G ýÚŸ ‘mÿôÈneko.woof:‘?ýchat.woofŽŸ™š‘h²F‘ÿ*ªor–ÊDan“analogy‘ÊEthat“mighš¸ãt“mak˜e“this–ÊEclearer,‘çconsider“the‘ÊDC‘Ê&programmingޤ ‘Ylanguage,‘where› €a– È.o“² le“is“proGduced˜b¸ãy“compiling“a“È.c“² le.‘Y€If“a˜ le“Èfoo.c“²con-Ž¡‘Ytains–ì"a“line›ì!lik¸ãe“È#include‘?ý"fum.h"²,‘,then“Èfoo.c“²should˜bGe“recompiled“whenev¸ãerŽ¡‘YÈfum.h–Ûà²c¸ãhanges.›IKThat“is,‘ô+the“ le“Èfoo.o“Îdep‘ÿ}'ends‘®²on‘Ûáthe“ le“Èfum.h².˜In“the“OMak¸ãeŽ¡‘Yparlance,›šÒthis–Œìis“called“an‘ŒíÎimplicit‘IJdepGendency‘ÿ*ª,˜and“the“È.SCANNER‘ŒÞŽ¡‘Y²w•¸ãould›UUprin“t˜a˜line˜lik“e˜the˜follo“wing.Ž©‘mÿôÈfoo.o:‘?ýfum.hŽŸ™™‘h²Noš¸ãw,‘qÇreturning–8ãto“the“animal“w˜orld,‘qÇto“compute“the“depGendencies“of“Èneko.woof²,Ž¡‘Ywš¸ãe–8ãshould“scan“Èneko.cat²,–qÇline-b˜y-line,“loGoking–8ãfor“lines“of“the“form“Èopen‘?ý².Ž¡‘YW‘ÿ*ªe–K+could“do“this“b¸ãy“writing“a“program,‘M4but“it“is“easy“enough“to“do“it“in“ÈomakeŽ¡‘Y²itself.‘û>W‘ÿ*ªe–Ø}can“use“the›Ø|builtin“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:awk) >> >> Èawk“²functionïpdf:eann“to“scan˜the“source“ le.‘û>One“sligh¸ãtŽ¡‘Ycomplication–§ïis“that‘§îthe“depšGendencies“dep˜end“on“the‘§îÈINCLUDE‘§Ú²path.‘i”W‘ÿ*ªe'll“useŽ¡‘Ythe–UUïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:find-in-path) >> >> Èfind-in-path“²functionïpdf:eann“to“ nd“them.‘qÇHere“w¸ãe“go.ަ‘mÿôÈ.SCANNER:–?ý%.woof:“%.catŽ¡’‚ÿèsectionŽ¡’—ÿÜ#–?ýScan“the“fileŽ¡’—ÿÜdeps[]‘?ý=Ž¡’—ÿÜawk($<)Ž¡’—ÿÜcase‘?ý$'^open'Ž¡’¬ÿÐdeps[]–?ý+=“$2Ž¡’¬ÿÐexportŽ¡¡’—ÿÜ#–?ýRemove“duplicates,“and“find“the“files“in“the“include“pathŽ¡’—ÿÜdeps–?ý=“$(find-in-path“$(INCLUDES),“$(set“$(deps)))Ž¡¡’—ÿÜ#–?ýPrint“the“dependenciesŽ¡’—ÿÜprintln($"$@:‘?ý$(deps)")ŽŸ™š‘h²Let's–ylošGok‘y€at“the“parts.‘(€First,‘¥xthe“en¸ãtire“b˜o˜dy›y€is“de ned“in“a˜Èsection“²bGecauseŽ¡‘Ywš¸ãe–UUare“computing“it“in˜ternally‘ÿ*ª,“not“as“a“sequence“of“shell“commands.Ž© ff‘hW‘ÿ*ªe–|óuse“the›|ôÈdeps“²v‘ÿqÇariable“to“collect˜all“the“depGendencies.‘è¢The“Èawk“²func-Ž¡‘Ytion–ƒŒscans“the“source“ le“(È$<²)“line-bš¸ãy-line.‘ülF‘ÿ*ªor“lines“that“matc˜h“the“regularŽ¡‘Yexpression–þBÈ^open›þA²(meaning“that˜the“line˜bGegins“with˜the“w•¸ãord˜Èopen²),‘(|w“e‘þBaddŽ¡‘Ythe–þsecond“w¸ãord“on“the‘ýline“to“the“Èdeps“²v‘ÿqÇariable.‘_ÿF‘ÿ*ªor“example,‘*©if“the“input“lineŽ¡‘Yis–‰jÈopen‘?ýchat²,‘–othen“wš¸ãe“w˜ould“add“the“Èchat“²string“to‘‰ithe“Èdeps“²arra˜y‘ÿ*ª.‘All“otherŽ¡‘Ylines–UUin“the“source“ le“are“ignored.ŽŸ fg‘hNext,‘üŒthe–ÛÈ$(set‘?ý$(deps))›Û²expression“remo•¸ãv“es˜an“y–Ûduplicate“v‘ÿqÇalues˜in“theŽ¡‘YÈdeps–¸c²arraš¸ãy“(sorting“the“arra˜y“alphabšGetically“in‘¸bthe“pro˜cess).‘=wThe“Èfind-in-pathŽ¡‘Y²function–UUthen“ nds“the“actual“loGcation“of“eac¸ãh“ le“in“the“include“path.ަ‘hThe–‘1 nal›‘0step“is“prin¸ãt˜the“result“as˜the“string“È$"$@:‘?ý$(deps)"˜²The“quota-Ž¡‘Ytions–UUare“added“to“ atten“the“Èdeps“²arra¸ãy“to“a“simple“string.ŽŽŽŒ‹'¤– s\È ý®£8‘#ï/pdf:dest (page.39) [@thispage /XYZ @xpos @ypos]Ä3.4.‘ÇHANDLING–UUNEW“LANGUA¸ãGES’¡ •²39ŽŽ 8G ýÚ‘#ï8pdf:dest (subsection.3.4.4) [@thispage /XYZ @xpos @ypos]Ÿ Í3.4.4Ž‘)@Pulling–€it“all“togetherŽŸuT²T‘ÿ*ªo–å§complete›å¦the“example,‘ »let's“pull˜it“all˜together“in¸ãto“a˜single“pro‘Ž8ject,‘ »m•¸ãuc“hޤ lik¸ãe–UUour“previous“example.Ž©Øä‘ÿôÈmy_project/Ž¡‘ÿô|-->‘?ýOMakerootŽ¡‘ÿô|-->‘?ýOMakefileŽ¡‘ÿô`-->‘?ýsrc/Ž¡‘/?å|--->‘?ýOMakefileŽ¡‘/?å|--->‘?ýlib/Ž¡‘/?å|‘?ñ|--->‘?ýOMakefileŽ¡‘/?å|‘?ñ|--->‘?ýneko.catŽ¡‘/?å|‘?ñ`--->‘?ýchat.catŽ¡‘/?å`--->‘?ýmain/Ž¡‘N¿Ó|--->‘?ýOMakefileŽ¡‘N¿Ó`--->‘?ýmain.catަ‘²The–?listing›?for“the˜en¸ãtire“pro‘Ž8ject“is˜as“follo•¸ãws.‘Here,‘v®w“e˜also–?include˜a“functionŽ¡ÈCatLibrary–UU²to“link“sevš¸ãeral“È.woof“² les“in˜to“a“library‘ÿ*ª.ަÈmy_project/OMakeroot:Ž¡‘ÿô#–?ýProcess“the“command-line“varsŽ¡‘ÿôDefineCommandVars()Ž¡¡‘ÿô#–?ýInclude“the“OMakefile“in“this“directory.Ž¡‘ÿô.SUBDIRS:‘?ý.Ž¡¡my_project/OMakefile:Ž¡‘¿÷########################################################################Ž¡‘¿÷#–?ýStandard“config“for“compiling“.cat“filesŽ¡‘¿÷#Ž¡¡‘¿÷#–?ýDefine“the“catc“command,“in“case“we“ever“want“to“override“itŽ¡‘¿÷CATC–?ý=“catcŽ¡¡‘¿÷#–?ýThe“default“flags“are“emptyŽ¡‘¿÷CAT_FLAGS‘?ý=Ž¡¡‘¿÷#–?ýThe“directories“in“the“include“path“(empty“by“default)Ž¡‘¿÷INCLUDES[]‘?ý=Ž¡¡‘¿÷#–?ýCompute“the“include“options“from“the“include“pathŽ¡‘¿÷PREFIXED_INCLUDES[]–?ý=“$`(mapprefix“-I,“$(INCLUDES))Ž¡¡‘¿÷#–?ýDependency“scanner“for“.cat“filesŽ¡‘¿÷.SCANNER:–?ý%.woof:“%.catŽŽŽŒ‹(±{ s\È ý®£8‘Yï/pdf:dest (page.40) [@thispage /XYZ @xpos @ypos]²40‘hNÄCHAPTER–UU3.‘ÇADDITIONAL“BUILD“EXAMPLESŽŽ 8G ýÚŸ ’‚ÿèÈsectionޤ ’—ÿÜ#–?ýScan“the“fileŽ¡’—ÿÜdeps[]‘?ý=Ž¡’—ÿÜawk($<)Ž¡’—ÿÜcase‘?ý$'^open'Ž¡’¬ÿÐdeps[]–?ý+=“$2Ž¡’¬ÿÐexportŽ¡¡’—ÿÜ#–?ýRemove“duplicates,“and“find“the“files“in“the“include“pathŽ¡’—ÿÜdeps–?ý=“$(find-in-path“$(INCLUDES),“$(set“$(deps)))Ž¡¡’—ÿÜ#–?ýPrint“the“dependenciesŽ¡’—ÿÜprintln($"$@:‘?ý$(deps)")Ž¡¡‘h¿÷#–?ýThe“default“way“to“compile“a“.cat“fileŽ¡‘h¿÷%.woof:‘?ý%.catŽ¡‘}¿ë$(CATC)–?ý$(PREFIXED_INCLUDES)“$(CAT_FLAGS)“-c“$<Ž¡¡‘h¿÷#–?ýOptional“link“optionsŽ¡‘h¿÷CAT_LINK_FLAGS‘?ý=Ž¡¡‘h¿÷#–?ýBuild“a“library“for“several“.woof“filesŽ¡‘h¿÷CatLibrary(lib,–?ýfiles)“=Ž¡‘}¿ë#–?ýAdd“the“suffixesŽ¡‘}¿ëfile_names–?ý=“$(addsuffix“.woof,“$(files))Ž¡‘}¿ëlib_name–?ý=“$(addsuffix“.woof,“$(lib))Ž¡¡‘}¿ë#–?ýThe“build“ruleŽ¡‘}¿ë$(lib_name):‘?ý$(file_names)Ž¡’’¿ß$(CATC)–?ý$(PREFIXED_INCLUDES)“$(CAT_FLAGS)“$(CAT_LINK_FLAGS)“-a“$@“$+Ž¡¡‘}¿ë#–?ýReturn“the“program“nameŽ¡‘}¿ëvalue‘?ý$(lib_name)Ž¡¡‘h¿÷#–?ýThe“function“that“defines“how“to“build“a“.dog“programŽ¡‘h¿÷CatProgram(program,–?ýfiles)“=Ž¡‘}¿ë#–?ýAdd“the“suffixesŽ¡‘}¿ëfile_names–?ý=“$(addsuffix“.woof,“$(files))Ž¡‘}¿ëprog_name–?ý=“$(addsuffix“.dog,“$(program))Ž¡¡‘}¿ë#–?ýThe“build“ruleŽ¡‘}¿ë$(prog_name):‘?ý$(file_names)Ž¡’’¿ß$(CATC)–?ý$(PREFIXED_INCLUDES)“$(CAT_FLAGS)“$(CAT_LINK_FLAGS)“-o“$@“$+Ž¡¡‘}¿ë#–?ýReturn“the“program“nameŽ¡‘}¿ëvalue‘?ý$(prog_name)ŽŽŽŒ‹)¸ s\È ý®£8‘#ï/pdf:dest (page.41) [@thispage /XYZ @xpos @ypos]Ä3.5.‘ÇCOLLAPSING–UUTHE“HIERAR¸ãCHY,“.SUBDIRS“BODIES‘<¥²41ŽŽ 8G ýÚŸ ¤ ‘2¿÷È########################################################################Ž¡‘2¿÷#–?ýNow“the“program“properŽ¡‘2¿÷#Ž¡¡‘2¿÷#–?ýInclude“the“src“subdirectoryŽ¡‘2¿÷.SUBDIRS:‘?ýsrcŽ¡¡‘#my_project/src/OMakefile:Ž¡‘2¿÷.SUBDIRS:–?ýlib“mainŽ¡¡‘#my_project/src/lib/OMakefile:Ž¡‘2¿÷CatLibrary(cats,–?ýneko“chat)Ž¡¡‘#my_project/src/main/OMakefile:Ž¡‘2¿÷#–?ýAllow“includes“from“the“../lib“directoryŽ¡‘2¿÷INCLUDES[]–?ý+=“../libŽ¡¡‘2¿÷#–?ýBuild“the“programŽ¡‘2¿÷.DEFAULT:–?ý$(CatProgram“main,“main“../cats)ŽŸt‘2²Some–C notes.‘ZThe“con guration“in“the“pro‘Ž8ject‘C ÈOMakeroot“²de nes“the“standardŽ¡‘#con guration,‘Dincluding–?Ðthe“depGendency“scanner,‘Dthe“default“rule“for“compilingŽ¡‘#source–UU les,“and“functions“for“building“libraries“and“programs.Ž¡‘2These–°7rules“and›°6functions“are“inherited“b¸ãy˜subGdirectories,‘Æïso“the“È.SCANNERŽ¡‘#²and–‚™build“rules“are“used“automatically“in“eacš¸ãh“subGdirectory‘ÿ*ª,‘êso“y˜ou“don't“needŽ¡‘#to–UUrepGeat“them.Ž‘#Ÿ¹ï8pdf:dest (subsection.3.4.5) [@thispage /XYZ @xpos @ypos]Ÿ 9Í3.4.5Ž‘)@Finishing‘€upŽŸuT²Aš¸ãt–UUthis“pGoin˜t“w˜e“are“done,“but“there“are“a“few“things“w˜e“can“consider.Ž¡‘First,‘™Othe–jMrules›jNfor“building“cat“programs˜is“de ned“in“the˜pro‘Ž8ject“ÈOMakefile².Ž¡If–8ãyš¸ãou“had“another“cat“pro‘Ž8ject“somewhere,‘qÇy˜ou“w˜ould“need“to“cop˜y“the“ÈOMakerootŽ¡²(and–É>moGdify›É?it“as˜needed).‘CInstead“of˜that,‘åCy¸ãou“should˜consider“mo¸ãving˜the“con-Ž¡ guration–5&to›5%a“shared“library˜directory‘ÿ*ª,‘;–in˜a“ le“lik•¸ãe˜ÈCat.om².‘g That˜w“a“y‘ÿ*ª,‘;–insteadŽ¡of–dÃcopš¸ãying‘dÄthe“coGde,‘”áy˜ou“could“include“the‘dÄshared“cop˜y“with“an‘dÄOMak˜e“commandŽ¡Èopen‘?ýCat².‘'¢The–vãshare“directory›väshould“bGe“added“to˜yš¸ãour“ÈOMAKEPATH‘v«²en˜vironmen˜tŽ¡v‘ÿqÇariable–UUto“ensure“that“Èomake“²knoš¸ãws“ho˜w“to“ nd“it.Ž¡‘Better›sßy•¸ãet,‘»‚if‘sày“ou˜are˜happ“y‘sàwith˜y“our›sàw“ork,‘»consider˜submitting–sßit˜as“aŽ¡standard–écon guration›è(b¸ãy“sending˜a“request˜to“Èomake@metaprl.org²)˜so“thatŽ¡others–UUcan“mak¸ãe“use“of“it“toGo.ŽŸ¡€ï3pdf:dest (section.3.5) [@thispage /XYZ @xpos @ypos]ŸÌ3.5Ž‘$æcCollapsing–Âthe“hierarc•ŒÌh“y‘þ¦f,‘).SUBDIRS‘¯b•s3o“diesŽŸç²Some›Ûpro‘Ž8jects‘Ûha•¸ãv“e˜man“y˜subGdirectories‘Ûthat˜all˜ha“v“e˜the‘Ûsame˜con guration.Ž¡F‘ÿ*ªor–×Ëinstance,‘øisuppGose“yš¸ãou“ha˜v˜e“a“pro‘Ž8ject“with“man˜y“subGdirectories,‘øieac˜h“con-ŽŽŽŒ‹*¾2 s\È ý®£8‘Yï/pdf:dest (page.42) [@thispage /XYZ @xpos @ypos]²42‘hNÄCHAPTER–UU3.‘ÇADDITIONAL“BUILD“EXAMPLESŽŽ 8G ýÚŸ ‘Y²taining–€a“set›Âof“images“that“are“to“b•Ge˜comp“osed–€inš¸ãto“a“w˜eb“page.‘¹GApart“fromޤ ‘Ythe–UUspGeci c“images,“the“con guration“of“eac¸ãh“ le“is“the“same.ŽŸ Pg‘hT‘ÿ*ªo–¸‡mak¸ãe›¸ˆthis“more˜concrete,‘SsuppGose“the˜pro‘Ž8ject“has˜four“subGdirectoriesŽ¡‘YÈpage1²,–LÈpage2²,‘LÈpage3²,“and–ç|Èpage4².‘ (9Eacš¸ãh“con˜tains–ç{t˜w˜o“ les‘ç|Èimage1.jpg“²andŽ¡‘YÈimage2.jpg–UU²that“are“part“of“a“wš¸ãeb“page“generated“b˜y“a“program“Ègenhtml².ŽŸ Ph‘hInstead–Ø“of›Ø”of“de ning˜a“ÈOMakefile“²in˜eacš¸ãh“directory‘ÿ*ª,‘ùcw˜e“can›Ø”de ne“it˜as“aŽ¡‘Yb•Go“dy–UUto“the“È.SUBDIRS“²command.Ž©’‘mÿôÈ.SUBDIRS:–?ýpage1“page2“page3“page4Ž¡’‚ÿèindex.html:–?ýimage1.jpg“image2jpgŽ¡’—ÿÜgenhtml–?ý$+“>“$@ŽŸAž‘h²The›Á©b•Go“dy–Á¨of˜the˜È.SUBDIRS‘Áƒ²is˜in¸ãterpreted˜exactly“as˜if˜it˜w¸ãere“the˜ÈOMakefile²,Ž¡‘Yand–ZÆit‘ZÇcan“conš¸ãtain“an˜y“of‘ZÇthe“normal“statemen˜ts.‘‚The“b•Go“dy‘ZÇis–ZÆev‘ÿqÇaluated“Îin‘˜étheŽ¡‘Ysub–ÿ}'dir“e“ctory‘f²for›ƒšeac¸ãh–ƒ™of“the˜subGdirectories.‘+ÞW‘ÿ*ªe“can˜see“this˜if“w¸ãe“add˜a“statemen¸ãtŽ¡‘Ythat–UUprinš¸ãts“the“curren˜t“directory“(È$(CWD)²).ަ‘mÿôÈ.SUBDIRS:–?ýpage1“page2“page3“page4Ž¡’‚ÿèprintln($(absname‘?ý$(CWD)))Ž¡’‚ÿèindex.html:–?ýimage1.jpg“image2jpgŽ¡’—ÿÜgenhtml–?ý$+“>“$@Ž¡‘cú#‘?ýprintsŽ¡‘mÿô/home/jyh/.../page1Ž¡‘mÿô/home/jyh/.../page2Ž¡‘mÿô/home/jyh/.../page3Ž¡‘mÿô/home/jyh/.../page4Ž‘YŸ‘Iï8pdf:dest (subsection.3.5.1) [@thispage /XYZ @xpos @ypos]Ÿ ƒÍ3.5.1Ž‘)@Using–€glob“patternsŽ© ÷²Of–~(course,‘È\this›~'spGeci cation“is“quite˜rigid.‘ì@In˜practice,‘È\it“is“lik¸ãely˜that“eac¸ãhŽ¡subGdirectory›ëwill‘ëha•¸ãv“e˜a˜di eren“t–ëset˜of“images,‘|and“all˜should˜bGe“included˜inŽ¡the–§Œw¸ãeb“page.‘hkOne“of›§‹the“easier“solutions“is˜to“use“one“of˜the“directory-listingŽ¡functions,‘,lik¸ãe– ¡ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:glob) >> >> Èglobïpdf:eann› ¢²or“ïdpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ls) >> >> Èlsïpdf:eann².‘YŒThe“Èglob˜²function“tak¸ães˜a“shell˜pattern,‘,and“returnsŽ¡an–UUarraš¸ãy“of“ le“with“matc˜hing“ lenames“in“the“curren˜t“directory‘ÿ*ª.ŽŸ’‘ÿôÈ.SUBDIRS:–?ýpage1“page2“page3“page4Ž¡‘)ÿèIMAGES–?ý=“$(glob“*.jpg)Ž¡‘)ÿèindex.html:‘?ý$(IMAGES)Ž¡‘>ÿÜgenhtml–?ý$+“>“$@ŽŸ‘Hï8pdf:dest (subsection.3.5.2) [@thispage /XYZ @xpos @ypos]Ÿ „Í3.5.2Ž‘)@Simpli ed‘€sub-con gurationsަ²Another–‘~option›‘}is“to˜add“a˜con guration“ le˜in“eac¸ãh˜of“the˜subGdirectories“thatŽ¡de nes–©~directory-spGeci c“information.‘nBF‘ÿ*ªor‘©}this“example,‘¾ˆwš¸ãe“migh˜t“de ne“a“ leŽ¡ÈBuildInfo.om–4ƒ²in›4„eac¸ãh“of˜the“subGdirectories“that˜de nes“a“list˜of“images˜in“thatŽ¡directory‘ÿ*ª.‘qÇThe–UUÈ.SUBDIRS“²line“is“similar,“but“w¸ãe“include“the“BuildInfo“ le.ŽŽŽŒ‹+Ȭ s\È ý®£8‘#ï/pdf:dest (page.43) [@thispage /XYZ @xpos @ypos]Ä3.5.‘ÇCOLLAPSING–UUTHE“HIERAR¸ãCHY,“.SUBDIRS“BODIES‘<¥²43ŽŽ 8G ýÚŸ ‘7ÿôÈ.SUBDIRS:–?ýpage1“page2“page3“page4ޤ ‘Lÿèinclude–?ýBuildInfo‘¿÷#“Defines“the“IMAGES“variableŽ¡¡‘Lÿèindex.html:‘?ý$(IMAGES)Ž¡‘aÿÜgenhtml–?ý$+“>“$@ŽŸÐA‘2²Where–UUwš¸ãe“migh˜t“ha˜v˜e“the“follo˜wing“con gurations.ŽŸ„P‘2¿÷Èpage1/BuildInfo.om:Ž¡‘G¿ëIMAGES[]–?ý=“image.jpgŽ¡‘2¿÷page2/BuildInfo.om:Ž¡‘G¿ëIMAGES[]–?ý=“../common/header.jpg“winlogo.jpgŽ¡‘2¿÷page3/BuildInfo.om:Ž¡‘G¿ëIMAGES[]–?ý=“../common/header.jpg“unixlogo.jpg“daemon.jpgŽ¡‘2¿÷page4/BuildInfo.om:Ž¡‘G¿ëIMAGES[]–?ý=“fee.jpg“fi.jpg“foo.jpg“fum.jpgŽ‘#Ÿ>_ï8pdf:dest (subsection.3.5.3) [@thispage /XYZ @xpos @ypos]Ÿ {,Í3.5.3Ž‘)@Computing–€the“sub`directory“listŽŸÄq²The–ûother‘úhardcošGded“sp˜eci cation“is›úthe“list“of˜subGdirectories“Èpage1²,–(@...,“Èpage4².Ž¡Rather–”than›”editing“the˜pro‘Ž8ject“ÈOMakefile˜²eac¸ãh“time˜a“directory˜is“added,‘£³w¸ãeŽ¡could–UUcompute“it“(again“with“Èglob²).Ž©„Q‘ÿôÈ.SUBDIRS:–?ý$(glob“page*)Ž¡‘)ÿèindex.html:–?ý$(glob“*.jpg)Ž¡‘>ÿÜgenhtml–?ý$+“>“$@ŽŸÐ@‘²Alternately‘ÿ*ª,‘wJthe–=Mdirectory“structure‘=Lmaš¸ãy“bGe“hierarc˜hical.‘)®Instead‘=Lof“usingŽ¡Èglob²,›/Gw¸ãe–°could“use“the‘±Èsubdirs“²function,˜returns“eac¸ãh“of“the‘±directories“in“aŽ¡hierarc•¸ãh“y–ÿ*ª.‘mñF“or–IÕexample,‘L!this›IÔis“the˜result˜of“ev‘ÿqÇaluating˜the˜Èsubdirs“²function˜inŽ¡the–ù omak¸ãe›ù¡pro‘Ž8ject“roGot.‘^©The“ÈP‘ùv²option,‘"³passed“as“the˜ rst“argumen¸ãt,‘"³spGeci esŽ¡that–UUthe“listing“is“\propGer,"“it“should“not“include“the“Èomake“²directory“itself.ަ‘ÿôÈosh>–?ýsubdirs(P,“.)Ž¡‘ÿô-–?ý:“ÿÜ/home/jyh/.../omake/mk–?ý:“DirŽ¡‘>ÿÜ/home/jyh/.../omake/RPM–?ý:“DirŽ¡‘>ÿÜ...Ž¡‘>ÿÜ/home/jyh/.../omake/osx_resources–?ý:“Dir>ŽŸÐ@‘²Using–UUÈsubdirs²,“our“example“is“noš¸ãw“as“follo˜ws.ަ‘ÿôÈ.SUBDIRS:–?ý$(subdirs“P,“.)Ž¡‘)ÿèindex.html:–?ý$(glob“*.jpg)Ž¡‘>ÿÜgenhtml–?ý$+“>“$@ŽŽŽŒ‹,Ô² s\È ý®£8‘Yï/pdf:dest (page.44) [@thispage /XYZ @xpos @ypos]²44‘hNÄCHAPTER–UU3.‘ÇADDITIONAL“BUILD“EXAMPLESŽŽ 8G ýÚŸ ‘h²In–UUthis“case,“Îevery‘7Ò²subšGdirectory“will“b˜e“included“in“the“pro‘Ž8ject.ޤ ‘hIf–\þwš¸ãe“are“using“the“ÈBuildInfo.om“²option.‘ˆÁInstead“of“including“ev˜ery“subGdi-Ž¡‘Yrectory‘ÿ*ª,‘Fwš¸ãe–B,could“include“only“those‘B-that“con˜tain“a“ÈBuildInfo.om“² le.‘kdF‘ÿ*ªor“thisŽ¡‘YpurpGose,›dw¸ãe–acan“use“the“Èfind“²function,˜whicš¸ãh“tra˜v˜erses“the“directory“hierarc˜h˜yŽ¡‘YloGoking–÷–?ýFILES“=“$(find“.“-name“BuildInfo.om)Ž¡‘mÿô-–?ý:“Ž¡‘mÿôosh>–?ýDIRS“=“$(dirof“$(FILES))Ž¡‘mÿô-–?ý:“ŽŸi˜‘h²In›¡›this–¡šexample,‘´­there“are˜three˜ÈBuildInfo.om“² les,–´¬in˜the˜Èdoc/html²,“Èsrc²,Ž¡‘Yand–ÒÁÈtests/simple›Ò²directories.‘ê The“Èdirof˜²function“returns“the˜directories“forŽ¡‘Yeac¸ãh–UUof“the“ les.Ž¡‘hReturning–UUto“our“original“example,“wš¸ãe“moGdify“it“as“follo˜ws.ަ‘mÿôÈ.SUBDIRS:–?ý$(dirof“$(find“.“-name“BuildInfo.om))Ž¡’‚ÿèinclude–?ýBuildInfo‘¿÷#“Defines“the“IMAGES“variableŽ¡¡’‚ÿèindex.html:‘?ý$(IMAGES)Ž¡’—ÿÜgenhtml–?ý$+“>“$@Ž‘YŸ3ï8pdf:dest (subsection.3.5.4) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ3.5.4Ž‘)@T‘þàemp`orary‘€directoriesŽŸuT²Sometimes,‘\èy•¸ãour›(1pro‘Ž8ject‘(2ma“y˜include˜tempGorary‘(2directories{directories˜whereŽ¡yš¸ãou–8ãplace“in˜termediate“results.‘÷these“directories“are“deleted“whenev˜er“the“pro‘Ž8jectŽ¡is–¥ïclean¸ãup“up.‘7PThis“means,›Éin“particular,˜that“y¸ãou“can't“place‘¥ðan“ÈOMakefile“²in“aŽ¡temp•Gorary›(directory‘ÿ*ª,‘˜b“ecause‘)it˜will˜b“e‘)remo•¸ãv“ed˜when–)the˜directory“is˜remo•¸ãv“ed.Ž¡‘Instead,‘Ûkif–¼ðy¸ãou›¼ñneed“to“de ne“a˜con guration“for“an¸ãy“of˜these“directories,‘Ûky¸ãouŽ¡will–UUneed“to“de ne“it“using“a“È.SUBDIRS“²b•Go“dy‘ÿ*ª.ަ‘ÿôÈsectionŽ¡‘)ÿèCREATE_SUBDIRS–?ý=“trueŽ¡¡‘)ÿè.SUBDIRS:‘?ýtmpŽ¡‘>ÿÜ#–?ýCompute“an“MD5“digestŽ¡‘>ÿÜ%.digest:‘?ý%.commentsŽ¡‘N¿Óecho–?ý$(digest“$<)“>“$@Ž¡¡‘>ÿÜ#–?ýExtract“comments“from“the“source“filesŽŽŽŒ‹-ÜÑ s\È ý®£8‘#ï/pdf:dest (page.45) [@thispage /XYZ @xpos @ypos]Ä3.5.‘ÇCOLLAPSING–UUTHE“HIERAR¸ãCHY,“.SUBDIRS“BODIES‘<¥²45ŽŽ 8G ýÚŸ ‘aÿÜÈ%.comments:‘?ý../src/%.srcޤ ‘q¿Ógrep–?ý'^#'“$<“>“$@Ž¡¡‘aÿÜ.DEFAULT:‘?ýfoo.digestŽ¡¡‘7ÿô.PHONY:‘?ýcleanŽ¡¡‘7ÿôclean:Ž¡‘Lÿèrm–?ý-rf“tmpŽŸ‘2²In–ŽAthis“example,›Ü|w¸ãe“de ne“the“ÈCREATE_SUBDIRS‘ñ²v‘ÿqÇariable“as“true,˜so“thatŽ¡‘#the–<Ètmp“²directory“will‘;bšGe“created“if“it“do˜es“not“exist.‘´{The“È.SUBDIRS‘ ²b˜o˜dy“inŽ¡‘#this–ê…example“is“a›ê„bit“con•¸ãtriv“ed,‘Ñbut–ê…it“illustrates“the˜kind“of“spGeci cation“y¸ãouŽ¡‘#mighš¸ãt–aÆexpGect.‘—The“Èclean“²phon˜y-target›aÅindicates“that“the“Ètmp˜²directory“shouldŽ¡‘#bGe›UUremo•¸ãv“ed˜when˜the˜pro‘Ž8ject˜is˜cleaned˜up.ŽŽŽŒ‹.ç s\È ý®£8‘Yï/pdf:dest (page.46) [@thispage /XYZ @xpos @ypos]²46‘hNÄCHAPTER–UU3.‘ÇADDITIONAL“BUILD“EXAMPLESŽŽ 8G ýÚŽŽŒ‹/ê= s\È ý®£8‘#ï/pdf:dest (page.47) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï1pdf:dest (chapter.4) [@thispage /XYZ @xpos @ypos]ŸU5ÙÊChapter‘Ç 4ŽŸ25ØÆOMak›ÿ8õe– F¼concepts‘ F½and“syn˜taxŽŸ45Ù²Pro‘Ž8jects–>¤are“spGeci ed“to“Èomake“²with“ÈOMakefile²s.‘j7The“ÈOMakefile“²has“a“formatޤ similar–»to“a›»žÈMakefile².‘>ŠAn“ÈOMakefile“²has“three“main“kinds˜of“syn¸ãtactic“ob‘Ž8jects:Ž¡v‘ÿqÇariable–UUde nitions,“function“de nitions,“and“rule“de nitions.ŽŸëaï3pdf:dest (section.4.1) [@thispage /XYZ @xpos @ypos]ŸDÌ4.1Ž‘$æcV‘þ¦fariablesŽŸKQ²V‘ÿ*ªariables–Ï:are“de ned“with“the“folloš¸ãwing“syn˜tax.‘ßvThe“name“is“an˜y“sequence“ofŽ¡alphan•¸ãumeric›UUc“haracters,˜underscore˜È_²,˜and˜h“yphen˜È-².Ž© ;‘¿÷È–?ý=“ŽŸ×c‘²V‘ÿ*ªalues–tÿare“de ned“as“a“sequence‘uof“literal“c¸ãharacters“and“v‘ÿqÇariable“expansions.Ž¡A‘ÔÚv‘ÿqÇariable–Ôûexpansion›Ôúhas“the“form˜È$()²,‘î§whic•¸ãh˜represen“ts–Ôûthe“v‘ÿqÇalue˜of“theŽ¡È–UU²v‘ÿqÇariable“in“the“currenš¸ãt“en˜vironmen˜t.‘qÇSome“examples“are“sho˜wn“bGelo˜w.ަ‘¿÷ÈCC–?ý=“gccŽ¡‘¿÷CFLAGS–?ý=“-Wall“-gŽ¡‘¿÷COMMAND–?ý=“$(CC)“$(CFLAGS)“-O2ŽŸ×c‘²In–8ãthis“example,‘qÇthe“v›ÿqÇalue“of“the“ÈCOMMAND‘8›²v˜ariable“is“the“string“Ègcc–?ý-Wall“-g“-O2².ŽŸ 5Ø‘Unlik¸ãe–ÔÚÈmake²(1),‘îŒv‘ÿqÇariable‘ÔÛexpansion“is“Îe›ÿ}'ager‘èg²and“Îpur˜e‘•5²(see“also“the“section“onŽ¡Scoping).‘GThat–…€is,‘‘Šv›ÿqÇariable“v˜alues“are›…expanded“immediately“and˜new“v‘ÿqÇariableŽ¡de nitions– –do› —not“a ect“old“ones.‘XÝF‘ÿ*ªor˜example,‘‰suppGose“w¸ãe“extend˜the“previousŽ¡example–UUwith“follo¸ãwing“v‘ÿqÇariable“de nitions.ަ‘¿÷ÈX–?ý=“$(COMMAND)Ž¡‘¿÷COMMAND–?ý=“$(COMMAND)“-O3Ž¡‘¿÷Y–?ý=“$(COMMAND)ŽŸ×c‘²In–6œthis›6›example,‘<Áthe“v‘ÿqÇalue˜of“the“ÈX‘6“²v‘ÿqÇariable“is“the˜string“Ègcc–?ý-Wall“-g“-O2Ž¡²as–UUbGefore,“and“the“v›ÿqÇalue“of“the“ÈY“²v˜ariable“is“Ègcc–?ý-Wall“-g“-O2“-O3².ŽŽŸK’Êÿ47ŽŽŒ‹0êî s\È ý®£8‘Yï/pdf:dest (page.48) [@thispage /XYZ @xpos @ypos]²48‘_øÇÄCHAPTER–UU4.‘ÇOMAKE“CONCEPTS“AND“SYNT‘ÿ*ªAXŽŽ 8G ýÚ‘Yï3pdf:dest (section.4.2) [@thispage /XYZ @xpos @ypos]Ÿ Ì4.2Ž‘$æcAdding–ffto“a“v‘ÿ™ariable“de nitionŽ© M²V‘ÿ*ªariables–úÄde nitions›úÃma¸ãy“also“use˜the“+=“opGerator,‘ áwhic¸ãh˜adds“the“new˜text“toޤ an–UUexisting“de nition.‘qÇThe“folloš¸ãwing“t˜w˜o“de nitions“are“equiv‘ÿqÇalen˜t.ŽŸcï‘¿÷È#–?ýAdd“options“to“the“CFLAGS“variableŽ¡‘¿÷CFLAGS–?ý=“$(CFLAGS)“-Wall“-gŽ¡¡‘¿÷#–?ýThe“following“definition“is“equivalentŽ¡‘¿÷CFLAGS–?ý+=“-Wall“-gŽŸ µï3pdf:dest (section.4.3) [@thispage /XYZ @xpos @ypos]ŸÛÌ4.3Ž‘$æcArraŒÌysަ²Arraš¸ãys–mðcan“bGe“de ned“b˜y“appGending“the‘mñÈ[]“²sequence“to“the“v‘ÿqÇariable“name“andŽ¡de ning–<‹initial“v‘ÿqÇalues“for“the“elemenš¸ãts“as“separate“lines.‘/Whitespace“is“signi can˜tŽ¡on–UUeacš¸ãh“line.‘qÇThe“follo˜wing“coGde“sequence“prin˜ts“Èc–?ýd“e².ŽŸcï‘ÿôÈX[]‘?ý=Ž¡‘)ÿèa‘?ýbŽ¡‘)ÿèc–?ýd“eŽ¡‘)ÿèfŽ¡¡‘ÿôprintln($(nth–?ý2,“$(X)))ŽŸ µï3pdf:dest (section.4.4) [@thispage /XYZ @xpos @ypos]ŸÛÌ4.4Ž‘$æcSps3ecial–ffcŒÌharacters“and“quotingަ²The›6|follo•¸ãwing‘6}c“haracters˜are˜spGecial˜to‘6}Èomake²:‘bZÈ$():,=#\².‘gT‘ÿ*ªo˜treat˜an“y‘6}of˜theseŽ¡c¸ãharacters–"žas›"Ÿnormal“text,‘,Äthey“should˜bšGe“escap˜ed›"Ÿwith“the˜bacš¸ãkslash“c˜haracterŽ¡È\².ŽŸcï‘ÿôÈDOLLAR–?ý=“\$Ž©Oò‘²Newlines–_ma¸ãy“also“bšGe“escap˜ed“with‘^a“bacš¸ãkslash“to“concatenate“sev˜eral“lines.ŽŸcî‘ÿôÈFILES–?ý=“a.c\Ž¡‘>ÿÜb.c\Ž¡‘>ÿÜc.cަ‘²Note–…that›…the“bac¸ãkslash˜is“Înot‘wÚ²an“escapGe˜for“an¸ãy˜other“c¸ãharacter,‘Ðíso“theŽ¡follo•¸ãwing›/õw“orks˜as˜expGected˜(that˜is,‘7nit˜preserv“es˜the˜bac“kslashes˜in˜the˜string).ŽŸcî‘ÿôÈDOSTARGET–?ý=“C:\WINDOWS\control.iniަ‘²An–®Šalternativš¸ãe“mec˜hanism“for“quoting“spšGecial“text“is“the“use“È$"..."“²escap˜es.Ž¡The›(n•¸ãum“bGer–(of˜double-quotations“is˜arbitrary‘ÿ*ª.‘éùThe˜outermost“quotations˜areŽ¡not–UUincluded“in“the“text.ŽŽŽŒ‹1ò³ s\È ý®£8‘#ï/pdf:dest (page.49) [@thispage /XYZ @xpos @ypos]Ä4.5.‘ÇFUNCTION‘UUDEFINITIONS’º]²49ŽŽ 8G ýÚŸ ‘7ÿôÈA–?ý=“$""String“containing“"quoted“text"“""ޤ ‘7ÿôB–?ý=“$"""Multi-lineŽ¡‘Lÿètext.Ž¡‘LÿèThe–?ý#“character“is“not“special"""Ž‘#ŸâTï3pdf:dest (section.4.5) [@thispage /XYZ @xpos @ypos]ŸÇÌ4.5Ž‘$æcF‘þ¦function‘ffde nitionsŽŸç²F‘ÿ*ªunctions–UUare“de ned“using“the“folloš¸ãwing“syn˜tax.Ž©¢5‘¿÷È()‘?ý=Ž¡‘¢6‘²The–­kparameters›­jare“a“comma-separated˜list“of“iden¸ãti ers,‘Ïand“the˜b•Go“dy‘­km¸ãustŽ¡bGe–€placed›€~on“a“separate“set˜of“lines“that˜are“inden¸ãted“from“the˜function“de nitionŽ¡itself.‘6F‘ÿ*ªor–¹%example,‘Òthe“follo¸ãwing›¹$text“de nes“a“function˜that“concatenates“itsŽ¡argumen¸ãts,–UUseparating“them“with“a“colon.ަ‘ÿôÈColonFun(a,–?ýb)“=Ž¡‘)ÿèreturn($(a):$(b))ަ‘²The–ŒRÈreturn“²expression“can›ŒSbGe“used“to“return“a“v‘ÿqÇalue“from“the˜function.‘¾AŽ¡Èreturn–®v²statemen¸ãt›®wis“not˜required;‘æif“it“is˜omitted,‘ÏÖthe“returned˜v‘ÿqÇalue“is˜the“v‘ÿqÇalueŽ¡of–9—the›9˜last“expression˜in“the˜b•Go“dy‘9—to˜b“e–9—ev‘ÿqÇaluated.‘hˆNOTE:˜as“of˜v¸ãersion“È0.9.6²,Ž¡Èreturn–Äõ²is“a“con¸ãtrol“opGeration,‘àÝcausing‘Äôthe“function“to“immediately“return.‘À§InŽ¡the–Ù}folloš¸ãwing“example,‘òBwhen“the“argumen˜t“Èa“²is“true,‘òBthe“function“Èf“²immediatelyŽ¡returns–UUthe“v›ÿqÇalue“1“without“ev˜aluating“the“prinš¸ãt“statemen˜t.ަ‘ÿôÈf(a)‘?ý=Ž¡‘$¿ëif‘?ý$(a)Ž¡‘4âreturn‘?ý1Ž¡‘$¿ëprintln(The–?ýargument“is“false)Ž¡‘$¿ëreturn‘?ý0ŽŸ¢6‘²In›7ˆman•¸ãy‘7‰cases,‘=~y“ou˜ma“y˜wish˜to–7‰return˜a˜v‘ÿqÇalue“from˜a˜section˜or“co•Gde˜blo“c¸ãkŽ¡without–eËreturning›eÌfrom“the“function.‘£*In˜this“case,‘©éyš¸ãou“w˜ould“use‘eÌthe“ÈvalueŽ¡²opšGerator.‘`]In‘!fact,‘+Šthe–!Èvalue“²op˜erator›!is“not“limited˜to“functions,‘+Šit“can˜bGe“usedŽ¡anš¸ãy–«—place“where‘«–a“v‘ÿqÇalue“is“required.‘tŒIn“the“follo˜wing‘«–de nition,‘Á'the“v‘ÿqÇariable“ÈXŽ¡²is–1Šde ned“as›1‰1“or“2,‘h—depGending˜on“the“v‘ÿqÇalue“of˜ó  b> cmmi10µa²,‘h—then“result“is˜prin¸ãted,‘h—andŽ¡returned–UUfrom“the“function.ަ‘ÿôÈf_value(a)‘?ý=Ž¡‘$¿ëX‘?ý=Ž¡‘4âif‘?ý$(a)Ž¡‘D?Ùvalue‘?ý1Ž¡‘4âelseŽ¡‘D?Ùvalue‘?ý2Ž¡‘$¿ëprintln(The–?ývalue“of“X“is“$(X))Ž¡‘$¿ëvalue‘?ý$(X)ŽŽŽŒ‹2úà s\È ý®£8‘Yï/pdf:dest (page.50) [@thispage /XYZ @xpos @ypos]²50‘_øÇÄCHAPTER–UU4.‘ÇOMAKE“CONCEPTS“AND“SYNT‘ÿ*ªAXŽŽ 8G ýÚŸ ‘h²F‘ÿ*ªunctions–käare›kåcalled“using˜the“GNU-makš¸ãe“syn˜tax,–š•È$(‘?ý–sE²is›sDa“comma-separated“list“of˜v‘ÿqÇalues.‘Ë–F‘ÿ*ªor“example,‘zÁin“the˜follo¸ãwing“pro-Ž¡‘Ygram,–UUthe“v›ÿqÇariable“ÈX“²con¸ãtains“the“v˜alue“Èfoo:bar².ޤ—‘h¿÷ÈX–?ý=“$(ColonFun“foo,“bar)Ž¡‘h²If–½}the“v‘ÿqÇalue›½~of“a“function“is˜not“needed,‘ÛÜthe“function“ma¸ãy“also˜bGe“called“usingޤ ‘Ystandard–R2function›R3call“notation.‘p¼F‘ÿ*ªor“example,‘RÓthe˜follo¸ãwing“program˜prin¸ãts“theŽ¡‘Ystring–UU\She“saš¸ãys:‘qÇHello“w˜orld".Ž©—‘mÿôÈPrinter(name)‘?ý=Ž¡’‚ÿèprintln($(name)–?ýsays:“Hello“world)Ž¡¡‘mÿôPrinter(She)Ž‘YŸÕï3pdf:dest (section.4.6) [@thispage /XYZ @xpos @ypos]Ÿ*­Ì4.6Ž‘$æcCommenŒÌtsޤç²Commenš¸ãts–UUbGegin“with“the“È#“²c˜haracter“and“con˜tin˜ue“to“the“end“of“the“line.ŽŸñzï3pdf:dest (section.4.7) [@thispage /XYZ @xpos @ypos]Ÿ9Ì4.7Ž‘$æcFile‘ffinclusionŽ¡²Files–’öma¸ãy›’÷bGe“included“with˜the“Èinclude“²or˜Èopen“²form.‘*«The“included˜ le“m¸ãustޤ use–UUthe“same“syn¸ãtax“as“an“ÈOMakefile².ަ‘ÿôÈinclude‘?ý$(Config_file)ަ‘²The–Ú-Èopen“²opGeration“is›Ú.similar“to“an“Èinclude²,‘òÏbut“the“ le˜is“included“at“mostŽ¡once.Ž©¬‘ÿôÈopen‘?ýConfigŽ¡¡‘ÿô#–?ýRepeated“opens“are“ignored,“so“thisŽ¡‘ÿô#–?ýline“has“no“effect.Ž¡‘ÿôopen‘?ýConfigަ‘²If–/the“ le“spšGeci ed“is‘/not“an“absolute“ lenmame,‘eqb˜oth“Èinclude“²and“ÈopenŽ¡²opGerations–Óësearc¸ãh“for“the“ le“based‘Óêon“the“ïkpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OMAKEPATH) >> >> ÈOMAKEPATH‘Ó˲v‘ÿqÇariableïpdf:eann.‘íˆIn“case“of“theŽ¡Èopen–ÁT²directivš¸ãe,‘Þíthe“searc˜h›ÁSis“pGerformed“at˜Îp‘ÿ}'arse‘¯²time,‘Þîand˜the“argumen¸ãt˜to“ÈopenŽ¡²maš¸ãy–UUnot“con˜tain“an˜y“expressions.ŽŸñzï3pdf:dest (section.4.8) [@thispage /XYZ @xpos @ypos]Ÿ9Ì4.8Ž‘$æcScoping,‘ffsectionsŽŸç²ScopGes–}íin“Èomake“²are“de ned“bš¸ãy“inden˜tation“lev˜el.‘)úWhen“inden˜tation“is“increased,Ž¡sucš¸ãh–UUas“in“the“b•Go“dy–UUof“a“function,“a“new“scopGe“is“in˜troGduced.Ž¡‘The– ±Èsection“²form“can“also“bšGe“used“to“de ne“a“new“scop˜e.‘Y;F‘ÿ*ªor“example,‘ltheŽ¡folloš¸ãwing–UUcoGde“prin˜ts“the“line“ÈX–?ý=“2²,–UUfollo˜w˜ed“b˜y“the“line“ÈX–?ý=“1².ŽŽŽŒ‹37 s\È ý®£8‘#ï/pdf:dest (page.51) [@thispage /XYZ @xpos @ypos]Ä4.8.‘ÇSCOPING,‘UUSECTIONS’Ïü`²51ŽŽ 8G ýÚŸ ‘7ÿôÈX–?ý=“1ޤ ‘7ÿôsectionŽ¡‘LÿèX–?ý=“2Ž¡‘Lÿèprintln(X–?ý=“$(X))Ž¡¡‘7ÿôprintln(X–?ý=“$(X))Ž©ª«‘2²This–ofresult›ogma¸ãy“seem˜surprising{the“v‘ÿqÇariable˜de nition“within˜the“ÈsectionŽ¡‘#²is–UUnot“visible“outside“the“scopGe“of“the“Èsection².ŽŸ jª‘2The›6Èexport–5²form,‘/îwhic¸ãh“will˜bšGe“describ˜ed›6in“detail˜in“Section˜ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.3) >> >> 6.3ïpdf:eann,‘/ícan˜bGeŽ¡‘#used›Óato‘Ó`circum•¸ãv“en“t˜this˜restriction˜b“y‘Ó`expGorting˜v–ÿqÇariable˜v“alues˜from‘Ó`an˜innerŽ¡‘#scopšGe.‘:^F‘ÿ*ªor–íˆexample,‘“if“w¸ãe‘í‡mo˜dify“the–í‡previous“example›íˆb¸ãy“adding˜an“ÈexportŽ¡‘#²expression,‘3the–*snew“v›ÿqÇalue“for“the“ÈX‘*i²v˜ariable“is“retained,‘3and“the“coGde“prin¸ãts“theŽ¡‘#line›UUÈX–?ý=“2˜²t¸ãwice.ŽŸV‘7ÿôÈX–?ý=“1Ž¡‘7ÿôsectionŽ¡‘LÿèX–?ý=“2Ž¡‘Lÿèprintln(X–?ý=“$(X))Ž¡‘LÿèexportŽ¡¡‘7ÿôprintln(X–?ý=“$(X))ŽŸªª‘2²There–’‘are“also“cases“where“separate“scoping“is“quite“impGortan¸ãt.‘0ÜF‘ÿ*ªor“example,Ž¡‘#eac¸ãh–˜-ÈOMakefile›˜.²is“ev‘ÿqÇaluated“in“its˜oš¸ãwn“scopGe.‘:PSince“eac˜h“part“of‘˜.a“pro‘Ž8jectŽ¡‘#ma•¸ãy›a‚ha“v“e˜its˜o“wn˜con guration,‘dit˜is˜impGortan“t˜that˜v‘ÿqÇariable˜de nitions˜in˜oneŽ¡‘#ÈOMakefile–UU²do“not“a ect“the“de nitions“in“another.ŽŸ j«‘2T‘ÿ*ªo–ïgiv¸ãe›ïanother“example,‘‹in“some˜cases“it˜is“con•¸ãv“enien“t˜to–ïspGecify˜a“separateŽ¡‘#set–ò9of“v‘ÿqÇariables‘ò8for“di erenš¸ãt“build“targets.‘HrA‘òfrequen˜t“idiom“in“this‘ò8case“is“toŽ¡‘#use–UUthe“Èsection“²command“to“de ne“a“separate“scopGe.ŽŸU‘2¿÷ÈsectionŽ¡‘BîCFLAGS–?ý+=“-gŽ¡‘Bî%.c:‘?ý%.yŽ¡‘Wâ$(YACC)‘?ý$<Ž¡‘Bî.SUBDIRS:‘?ýfooŽ¡¡‘2¿÷.SUBDIRS:–?ýbar“bazަ‘2²In–¼$this›¼#example,‘Õ×the“È-g“²option˜is“added“to˜the“ÈCFLAGS‘¼ ²v‘ÿqÇariable“b¸ãy˜the“ÈfooŽ¡‘#²subGdirectory‘ÿ*ª,‘ƒ=but–FÛnot“b¸ãy“the›FÜÈbar“²and“Èbaz“²directories.‘FZThe“implicit˜rules“areŽ¡‘#scopGed–7oas“w¸ãell›7pand“in“this“example,‘=jthe˜newly“added“y¸ãacc“rule˜will“bGe“inheritedŽ¡‘#bš¸ãy–Q¶the“Èfoo‘Qµ²subGdirectory‘ÿ*ª,‘Îbut“not“b˜y“the‘QµÈbar“²and“Èbaz“²ones;‘Ïæfurthermore“thisŽ¡‘#implicit–UUrule“will“not“bšGe“in“scop˜e“in“the“curren¸ãt“directory‘ÿ*ª.ŽŽŽŒ‹4 ü s\È ý®£8‘Yï/pdf:dest (page.52) [@thispage /XYZ @xpos @ypos]²52‘_øÇÄCHAPTER–UU4.‘ÇOMAKE“CONCEPTS“AND“SYNT‘ÿ*ªAXŽŽ 8G ýÚ‘Yï3pdf:dest (section.4.9) [@thispage /XYZ @xpos @ypos]Ÿ Ì4.9Ž‘$æcConditionalsŽŸ±²T‘ÿ*ªop–UUlevš¸ãel“conditionals“ha˜v˜e“the“follo˜wing“form.ŽŸ…6‘ÿôÈif‘?ýޤ ‘$¿ëŽ¡‘ÿôelseif‘?ýŽ¡‘$¿ëŽ¡‘ÿôelseŽ¡‘$¿ëŽŸj“‘²The–„mÈ“²expression“is“ev›ÿqÇaluated,‘3and“if“it“ev˜aluates“to“a“Îtrue‘DȲv˜alue“(seeŽ¡Section–ZCïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.9.2) >> >> 9.2ïpdf:eann“for“more“information“on‘ZDlogical“v‘ÿqÇalues,‘[~and“BoGolean“functions),‘[theŽ¡coGde–Ïëfor“the“È“²is“ev‘ÿqÇaluated;‘ 7otherwise“the“remaining“clauses“areŽ¡ev‘ÿqÇaluated.‘¿:There–Ä{maš¸ãy“bGe‘Ä|m˜ultiple“Èelseif“²clauses;‘übGoth“the“Èelseif‘Ä|²and“ÈelseŽ¡²clauses›9Ûare–9Úoptional.‘hŸNote“that˜the˜clauses˜are“inden¸ãted,‘?Zso˜they“in¸ãtroGduce˜newŽ¡scopGes.ŽŸ ¤‘When–Auview¸ãed“as›Ava“predicate,‘Eoa“v‘ÿqÇalue“correspGonds“to˜the“BoGolean“Îfalse²,‘Eoif“itsŽ¡string–Arepresen¸ãtation›Bis“the˜empt¸ãy“string,‘¼or˜one“of“the˜strings“Èfalse²,‘½Èno²,‘¼Ènil²,Ž¡Èundefined²,–UUor“È0².‘qÇAll“other“v‘ÿqÇalues“are“Îtrue².ŽŸ ¥‘The–ôKfolloš¸ãwing“example“illustrates“a“t˜ypical“use“of“a“conditional.‘QnThe“ÈOSTYPEŽ¡²v‘ÿqÇariable–UUis“the“currenš¸ãt“mac˜hine“arc˜hitecture.Ž©…7‘ÿôÈ#–?ýCommon“suffixes“for“filesŽ¡‘ÿôif–?ý$(equal“$(OSTYPE),“Win32)Ž¡‘$¿ëEXT_LIB–?ý=“.libŽ¡‘$¿ëEXT_OBJ–?ý=“.objŽ¡‘$¿ëEXT_ASM–?ý=“.asmŽ¡‘$¿ëEXE–?ý=“.exeŽ¡‘$¿ëexportŽ¡‘ÿôelseif–?ý$(mem“$(OSTYPE),“Unix“Cygwin)Ž¡‘$¿ëEXT_LIB–?ý=“.aŽ¡‘$¿ëEXT_OBJ–?ý=“.oŽ¡‘$¿ëEXT_ASM–?ý=“.sŽ¡‘$¿ëEXE‘?ý=Ž¡‘$¿ëexportŽ¡‘ÿôelseŽ¡‘$¿ë#–?ýAbort“on“other“architecturesŽ¡‘$¿ëeprintln(OS–?ýtype“$(OSTYPE)“is“not“recognized)Ž¡‘$¿ëexit(1)ŽŸYÍï4pdf:dest (section.4.10) [@thispage /XYZ @xpos @ypos]ŸERÌ4.10Ž‘,ÿüMatcŒÌhingŽŸ°²P•¸ãattern›UUmatc“hing˜is˜pGerformed˜with˜the˜Èswitch˜²and˜Èmatch˜²forms.ަ‘ÿôÈswitch‘?ýŽŽŽŒ‹5œ s\È ý®£8‘#ï/pdf:dest (page.53) [@thispage /XYZ @xpos @ypos]Ä4.10.‘ÇMA‘ÿ*ªTCHING’ùî.²53ŽŽ 8G ýÚŸ ‘7ÿôÈcase‘?ýޤ ‘Lÿ莡‘7ÿôcase‘?ýŽ¡‘Lÿ莡‘7ÿô...Ž¡‘7ÿôdefaultŽ¡‘G¿ëŽŸO=‘2²The›ktn•¸ãum“bGer˜of˜cases˜is‘kuarbitrary‘ÿ*ª.‘´$The˜Èdefault˜²clause˜is˜optional;‘v„ho“w“ev“er,Ž¡‘#if–UUit“is“used“it“should“bGe“the“last“clause“in“the“pattern“matc¸ãh.ŽŸ ÓБ2F›ÿ*ªor–UUÈswitch²,“the“string“is“compared“with“the“patterns“literally˜.Ž©# ‘7ÿôÈswitch‘?ý$(HOST)Ž¡‘7ÿôcase‘?ýmymachineŽ¡‘Lÿèprintln(Building–?ýon“mymachine)Ž¡‘7ÿôdefaultŽ¡‘Lÿèprintln(Building–?ýon“some“other“machine)ŽŸO>‘2²P¸ãatterns–Kzneed›Kynot“bGe˜constanš¸ãt“strings.‘T5The“follo˜wing›Kyfunction“tests˜for“aŽ¡‘#literal–v×matc¸ãh›vØagainst“Èpattern1²,‘9and“a˜matc¸ãh“against˜Èpattern2“²with˜È##“²delim-Ž¡‘#iters.ަ‘2¿÷ÈSwitch2(s,–?ýpattern1,“pattern2)“=Ž¡‘Bîswitch‘?ý$(s)Ž¡‘Bîcase‘?ý$(pattern1)Ž¡‘Wâprintln(Pattern1)Ž¡‘Bîcase‘?ý$"##$(pattern2)##"Ž¡‘Wâprintln(Pattern2)Ž¡‘BîdefaultŽ¡‘Wâprintln(Neither–?ýpattern“matched)ŽŸO=‘2²F‘ÿ*ªor–ÒÈmatch›Ѳthe“patterns“are˜Èegrep²(1)-st¸ãyle“regular˜expressions.‘ ƒ=The“n¸ãu-Ž¡‘#meric–öóv›ÿqÇariables“È$1,–?ý$2,“...‘öô²can–öóbGe“used“to“retriev¸ãe“v˜alues‘öôthat“are“matc¸ãhedŽ¡‘#b¸ãy–UUÈ\(...\)“²expressions.ŽŸ# ‘7ÿôÈmatch‘?ý$(NODENAME)@$(SYSNAME)@$(RELEASE)Ž¡‘7ÿôcase‘?ý$"mymachine.*@\(.*\)@\(.*\)"Ž¡‘Lÿèprintln(Compiling–?ýon“mymachine;“sysname“$1“and“release“$2“are“ignored)Ž¡¡‘7ÿôcase‘?ý$".*@Linux@.*2\.4\.\(.*\)"Ž¡‘Lÿèprintln(Compiling–?ýon“a“Linux“2.4“system;“subrelease“is“$1)Ž¡¡‘7ÿôdefaultŽ¡‘Lÿèeprintln(Machine–?ýconfiguration“not“implemented)Ž¡‘Lÿèexit(1)ŽŽŽŒ‹6 " s\È ý®£8‘Yï/pdf:dest (page.54) [@thispage /XYZ @xpos @ypos]²54‘_øÇÄCHAPTER–UU4.‘ÇOMAKE“CONCEPTS“AND“SYNT‘ÿ*ªAXŽŽ 8G ýÚ‘Yï4pdf:dest (section.4.11) [@thispage /XYZ @xpos @ypos]Ÿ Ì4.11Ž‘,ÿüOb‘æfjectsŽ©þb²OMakš¸ãe–Ïis‘Îan“ob‘Ž8ject-orien˜ted“language.‘\šGenerally“spGeaking,‘"ƒan“ob‘Ž8ject“is‘Îa“v‘ÿqÇalueޤ that–hácon¸ãtains“ elds“and“methoGds.‘¬kAn‘hâob‘Ž8ject“is“de ned“with“a“È.“²sux“for“aŽ¡v‘ÿqÇariable.‘îF‘ÿ*ªor–5bexample,‘methe“folloš¸ãwing“ob‘Ž8ject“migh˜t“bšGe“used“to“sp˜ecify“a“p˜oin¸ãtŽ¡(1µ;‘ª¨²5)–UUon“the“t•¸ãw“o-dimensional‘UUplane.ŽŸ>Š‘ÿôÈCoord.‘?ý=Ž¡‘)ÿèx–?ý=“1Ž¡‘)ÿèy–?ý=“5Ž¡‘)ÿèprint(message)‘?ý=Ž¡‘9¿ßprintln($"$(message):–?ýthe“point“is“($(x),“$(y)")Ž¡¡‘ÿô#–?ýDefine“X“to“be“5Ž¡‘ÿôX–?ý=“$(Coord.x)Ž¡¡‘ÿô#–?ýThis“prints“the“string,“"Hi:“the“point“is“(1,“5)"Ž¡‘ÿôCoord.print(Hi)ŽŸ2‘²The–¬ø elds“Èx“²and“Èy‘¬÷²represen¸ãt“the“cošGordinates“of“the“p˜oin¸ãt.‘9¨The“metho˜d“ÈprintŽ¡²prin¸ãts–UUout“the“pšGosition“of“the“p˜oin¸ãt.ŽŸ9eï4pdf:dest (section.4.12) [@thispage /XYZ @xpos @ypos]Ÿ»Ì4.12Ž‘,ÿüClassesަ²W‘ÿ*ªe–ípcan›íoalso“de ne˜Îclasses².‘:F‘ÿ*ªor“example,‘vsuppGose˜w¸ãe“wish˜to“de ne˜a“genericŽ¡ÈPoint–Äõ²class“with‘Äösome“methoGds“to“create,‘àÞmo•¸ãv“e,‘àÝand›Äõprin“t˜a‘ÄöpGoin“t.‘À§A‘ÄÙclass˜isŽ¡really–UUjust“an“ob‘Ž8ject“with“a“name,“de ned“with“the“Èclass“²directiv¸ãe.ŽŸ>Š‘ÿôÈPoint.‘?ý=Ž¡‘)ÿèclass‘?ýPointŽ¡¡‘)ÿè#–?ýDefault“values“for“the“fieldsŽ¡‘)ÿèx–?ý=“0Ž¡‘)ÿèy–?ý=“0Ž¡¡‘)ÿè#–?ýCreate“a“new“point“from“the“coordinatesŽ¡‘)ÿènew(x,–?ýy)“=Ž¡‘9¿ßthis.x–?ý=“$(x)Ž¡‘9¿ßthis.y–?ý=“$(y)Ž¡‘9¿ßreturn‘?ý$(this)Ž¡¡‘)ÿè#–?ýMove“the“point“to“the“rightŽ¡‘)ÿèmove-right()‘?ý=Ž¡‘9¿ßx–?ý=“$(add“$(x),“1)Ž¡‘9¿ßreturn‘?ý$(this)Ž¡ŽŽŒ‹7'* s\È ý®£8‘#ï/pdf:dest (page.55) [@thispage /XYZ @xpos @ypos]Ä4.13.‘ÇINHERIT‘ÿ*ªANCE’êÜe²55ŽŽ 8G ýÚŸ ‘LÿèÈ#–?ýPrint“the“pointޤ ‘Lÿèprint()‘?ý=Ž¡‘\¿ßprintln($"The–?ýpoint“is“($(x),“$(y)")Ž¡¡‘7ÿôp1–?ý=“$(Point.new“1,“5)Ž¡‘7ÿôp2–?ý=“$(p1.move-right)Ž¡¡‘7ÿô#–?ýPrints“"The“point“is“(1,“5)"Ž¡‘7ÿôp1.print()Ž¡¡‘7ÿô#–?ýPrints“"The“point“is“(2,“5)"Ž¡‘7ÿôp2.print()ŽŸhÙ‘2²Note–a¨that“the“v‘ÿqÇariable“È$(this)“²is“used“to‘a§refer“to“the“curren¸ãt“ob‘Ž8ject.‘–ÀAlso,Ž¡‘#classes–Y$and“ob‘Ž8jects›Y#are“Îfunctional‘‰²|the“Ènew“²and˜Èmove-right“²methoGds“returnŽ¡‘#new–!¤ob›Ž8jects.‘`In“this‘!¥example,‘+ûthe“ob˜ject“Èp2›!¥²is“a˜di eren¸ãt“ob‘Ž8ject˜from“Èp1²,‘+ûwhic¸ãhŽ¡‘#retains–UUthe“original“(1µ;‘ª¨²5)“coGordinates.Ž‘#Ÿ)»ï4pdf:dest (section.4.13) [@thispage /XYZ @xpos @ypos]Ÿ6Ì4.13Ž‘,ÿüInheritanceŽ©²Classes–'ûand›'úob‘Ž8jects“suppGort“inheritance˜(including“m¸ãultiple˜inheritance)“withŽ¡the–úÈextends‘ù²directivš¸ãe.‘_©The“follo˜wing“de nition›ùof“ÈPoint3D‘ì²de nes“a˜pGoin¸ãt“withŽ¡Èx²,‘š„Èy²,‘šƒand–Œ®Èz“² elds.‘ÐThe“new“ob‘Ž8ject›Œ­inherits“all˜of“the“methoGds˜and“ elds˜of“theŽ¡paren¸ãt‘UUclasses/ob‘Ž8jects.ŽŸ‘ÿôÈZ.‘?ý=Ž¡‘$¿ëz–?ý=“0Ž¡¡‘ÿôPoint3D.‘?ý=Ž¡‘$¿ëextends‘?ý$(Point)Ž¡‘$¿ëextends‘?ý$(Z)Ž¡‘$¿ëclass‘?ýPoint3DŽ¡¡‘$¿ëprint()‘?ý=Ž¡‘4âprintln($"The–?ý3D“point“is“($(x),“$(y),“$(z))")Ž¡¡‘ÿô#–?ýThe“"new"“method“was“not“redefined,“so“thisŽ¡‘ÿô#–?ýdefines“a“new“point“(1,“5,“0).Ž¡‘ÿôp–?ý=“$(Point3D.new“1,“5)ŽŸâŸï4pdf:dest (section.4.14) [@thispage /XYZ @xpos @ypos]ŸaRÌ4.14Ž‘,ÿüstatic.ަ²The–t½Èstatic.“²ob‘Ž8ject“is›t¼used“to“spGecify“v‘ÿqÇalues“that“are˜pGersisten¸ãt“across“runsŽ¡of–›jOMakš¸ãe.‘DThey“are‘›kfrequen˜tly“used“for››kcon guring“a˜pro‘Ž8ject.‘DCon guringŽŽŽŒ‹8.d s\È ý®£8‘Yï/pdf:dest (page.56) [@thispage /XYZ @xpos @ypos]²56‘_øÇÄCHAPTER–UU4.‘ÇOMAKE“CONCEPTS“AND“SYNT‘ÿ*ªAXŽŽ 8G ýÚŸ ‘Y²a–Špro‘Ž8ject“can‘‰bšGe“exp˜ensiv¸ãe,‘J—so›‰the“Èstatic.“²ob‘Ž8ject“ensure˜that“the“con gura-ޤ ‘Ytion–²section›,=is“used“to˜determine“if˜the“LŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX“command˜is“a¸ãv‘ÿqÇailable.‘öTheŽ¡‘YÈ$(where‘?ýlatex)–`º²function›`¹returns“the“full“pathname˜for“Èlatex²,‘c“or“Èfalse˜²if“theŽ¡‘Ycommand–UUis“not“found.Ž©—¸‘h¿÷Èstatic.‘?ý=Ž¡‘xîLATEX_ENABLED–?ý=“falseŽ¡‘xîprint(---–?ýDetermining“if“LaTeX“is“installed“)Ž¡‘xîif–?ý$(where“latex)Ž¡’âLATEX_ENABLED–?ý=“trueŽ¡’âexportŽ¡¡‘xîif‘?ý$(LATEX_ENABLED)Ž¡’ˆ?åprintln($'(enabled)')Ž¡‘xîelseŽ¡’ˆ?åprintln($'(disabled)')ަ‘h²The–ROMakš¸ãe‘Rstandard“library“pro˜vides“a‘Rn˜um˜bGer“of“useful“functions‘Rfor“pro-Ž¡‘Ygramming–Ëðthe›ËïÈstatic.“²tests,‘é–as“describGed˜in“Chapter“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.14) >> >> 14ïpdf:eann.‘Õ—Using˜the“standardŽ¡‘Ylibrary‘ÿ*ª,–UUthe“abšGo•¸ãv“e–UUcan“b˜e“rewritten“asަ‘h¿÷Èopen‘?ýconfigure/ConfigureŽ¡‘h¿÷static.‘?ý=Ž¡‘xîLATEX_ENABLED–?ý=“$(CheckProg“latex)ަ‘h²As–a“matter“of“st¸ãyle,‘a‘Èstatic.“²section“that“is“used“for“con guration“shouldŽ¡‘Yprin¸ãt–IEwhat›IDit“is˜doing“using˜the“ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgChecking) >> >> ÈConfMsgCheckingïpdf:eann˜²and“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgResult) >> >> ÈConfMsgResultïpdf:eann˜²func-Ž¡‘Ytions–+§(of“course,‘3ýmost›+¦of“helpGer“functions“in“the“standard˜library“w¸ãould“do“thatŽ¡‘Yautomatically).Ž‘YŸï9pdf:dest (subsection.4.14.1) [@thispage /XYZ @xpos @ypos]Ÿ €Í4.14.1Ž‘0.ST–þàA“TICŽŸuTÎThis›“çfe–ÿ}'atur“e˜was˜intr“o“duc“e“d˜in˜version˜0.9.8.5.Ž¡‘²There–-–is“also“a“rule“form“of“static“section.‘úŠThe“synš¸ãtax“can“bGe“an˜y“of“theŽ¡follo¸ãwing–UUthree“forms.ަ‘ÿôÈ#–?ýExport“all“variables“defined“by“the“bodyŽ¡‘ÿô.STATIC:Ž¡‘)ÿ莡¡‘ÿô#–?ýSpecify“file-dependenciesŽ¡‘ÿô.STATIC:‘?ýŽ¡‘)ÿ莡¡‘ÿô#–?ýSpecify“which“variables“to“export,“as“well“as“file“dependenciesŽ¡‘ÿô.STATIC:–?ý:“Ž¡‘)ÿèŽŽŽŒ‹95Ç s\È ý®£8‘#ï/pdf:dest (page.57) [@thispage /XYZ @xpos @ypos]Ä4.14.‘ÇST–ÿ*ªA“TIC.’ 8Û²57ŽŽ 8G ýÚŸ ‘2The–„ÁÈ›„À²are“the“v‘ÿqÇariable“names˜to“bGe“de ned,‘œthe˜È“²areޤ ‘# le–À¢depšGendencies|the“rule“is“re-ev‘ÿqÇaluated“if“one“of“the“dep˜endencies“is“c¸ãhanged.Ž¡‘#The–?£È“²and›?¤È“²can“bGe“omitted;‘Fßif“so,‘Cúall˜v‘ÿqÇariables“de ned“inŽ¡‘#the–UUÈ“²are“expGorted.Ž© q‘2F‘ÿ*ªor–0+example,‘fàthe“ nal‘0,example“of“the“previous“section“can“also“bGe“imple-Ž¡‘#menš¸ãted–UUas“follo˜ws.ŽŸp5‘7ÿôÈopen‘?ýconfigure/ConfigureŽ¡‘7ÿô.STATIC:Ž¡‘LÿèLATEX_ENABLED–?ý=“$(CheckProg“latex)ŽŸYÄ‘#²The–°e ect›°is“m•¸ãuc“h–°the“same˜as“using“Èstatic.“²(instead˜of“È.STATIC²).“Ho•¸ãw“ev“er,Ž¡‘#in–UUmost“cases“È.STATIC“²is“preferred,“for“t•¸ãw“o‘UUreasons.ަ‘2First,‘Ôja–»È.STATIC‘ºå²section“is–ºÿlazy‘ÿ*ª,‘Ôkmeaning“that›»it“is˜not˜ev‘ÿqÇaluated“un¸ãtil˜oneŽ¡‘#of–ýäits“v‘ÿqÇariables“is‘ýåresolvš¸ãed.‘ ktIn“this“example,‘hif“È$(LATEX_ENABLED)‘ýw²is“nev˜erŽ¡‘#ev›ÿqÇaluated,‘!Gthe–Dsection“need“nev¸ãer“bGe“ev˜aluated“either.‘\This“is“in“con¸ãtrast“to“theŽ¡‘#Èstatic.–UU²section,“whicš¸ãh“alw˜a˜ys“ev‘ÿqÇaluates“its“b•Go“dy–UUat“least“once.ŽŸ p‘2A›´Ksecond–´treason“is“that“a“È.STATIC˜²section“alloš¸ãws“for“ le“depGendencies,‘Ô¡whic˜hŽ¡‘#are–‚Áuseful“when“the“È.STATIC‘‚s²section“is“used“for“memoization.‘ú F‘ÿ*ªor“example,Ž¡‘#suppGose–ñÄw¸ãe“wish“to›ñÃcreate“a“dictionary“from“a“table˜that“has“k¸ãey-v‘ÿqÇalue“pairs.Ž¡‘#By–ú4using“a›ú3È.STATIC‘ú ²section,‘#kw¸ãe“can“pGerform“this“computation˜only“when“theŽ¡‘#input–ÍT le“cš¸ãhanges“(not“on“ev˜ery“fun“of“Èomake²).‘DqIn“the“follo˜wing“example“the“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:awk) >> >> ÈawkŽ¡‘#²functionïpdf:eann–O‘is“used“to“parse“the“ le‘O’Ètable-file².‘oÛWhen“a“line“is“encoun¸ãtered“withŽ¡‘#the–UUform“Îkey‘"zÈ=‘?ýÎvalue²,“the“k¸ãey/v‘ÿqÇalue“pair“is“added“the“the“ÈTABLE².ŽŸp5‘7ÿôÈ.STATIC:‘?ýtable-fileŽ¡‘LÿèTABLE–?ý=“$(Map)Ž¡‘Lÿèawk(table-file)Ž¡‘Lÿècase–?ý$'^\([[:alnum:]]+\)“*=“*\(.*\)'Ž¡‘aÿÜTABLE–?ý=“$(TABLE.add“$1,“$2)Ž¡‘aÿÜexportŽŸYÄ‘2²It–á0is›á1appropriate“to“think“of˜a“È.STATIC‘á²section“as˜a“rule“that“m¸ãust˜bGe“recom-Ž¡‘#puted–Gwhenev¸ãer›Fthe“depGendencies˜of“the˜rule“c¸ãhange.‘¨›The“targets˜of“the˜ruleŽ¡‘#are–UUthe“v›ÿqÇariables“it“expGorts“(in“this“case,“the“ÈTABLE“²v˜ariable).Ž‘#ŸÞÕï>pdf:dest (subsubsection.4.14.1.1) [@thispage /XYZ @xpos @ypos]Ÿ –qÇ4.14.1.1Ž‘1ÕD.MEMOŽ©Ÿ²A–¨EÈ.MEMO“²rule–¨[is›¨Zjust“lik¸ãe˜a˜È.STATIC‘¨E²rule,‘½except“that˜the“results˜are“not˜sa•¸ãv“edŽ¡bšGet•¸ãw“een‘UUindep˜enden“t–UUruns“of“Èomake².ŽŸPœï>pdf:dest (subsubsection.4.14.1.2) [@thispage /XYZ @xpos @ypos]Ÿ $ªÇ4.14.1.2Ž‘1ÕD:k®9ey:ަ²The–ÎëÈ.STATIC‘ÎȲand“È.MEMO‘Îɲrules›Îêalso“accept“a˜È:key:“²v‘ÿqÇalue,‘éÍwhic¸ãh“spGeci es˜a“\k¸ãey"Ž¡assošGciated–¼4with‘¼3the“v‘ÿqÇalues“b˜eing“computed.‘¦cIt“is›¼3useful“to“think“of˜a“È.STATICŽ¡²rule–:ëas›:êa“dictionary˜that“assoGciates˜k¸ãeys“with˜their“v‘ÿqÇalues.‘"‡When“a˜È.STATICŽ¡²rule–Nis“ev‘ÿqÇaluated,‘Othe“result›Nis“sa•¸ãv“ed–Nin“the“table“with“the˜È:key:“²de ned“b¸ãy“theŽŽŽŒ‹:?Í s\È ý®£8‘Yï/pdf:dest (page.58) [@thispage /XYZ @xpos @ypos]²58‘_øÇÄCHAPTER–UU4.‘ÇOMAKE“CONCEPTS“AND“SYNT‘ÿ*ªAXŽŽ 8G ýÚŸ ‘Y²rule–eÑ(if›eÒa“È:key:“²is“not˜spGeci ed,‘iða“default˜k¸ãey“is“used˜instead).‘£;In˜other“w¸ãords,ޤ ‘Ya–aërule›aêis“lik¸ãe“a“function.‘—ˆThe˜È:key:“²spGeci es“the˜function“\argumen¸ãt",‘eand“theŽ¡‘Yrule›UUb•Go“dy˜computes˜the˜result.Ž¡‘hT‘ÿ*ªo–UUillustrate,“let's“use“a“È.MEMO“²rule“to“implemen¸ãt“a“FibGonacci“function.Ž©™š‘mÿôÈfib(i)‘?ý=Ž¡’‚ÿèi–?ý=“$(int“$i)Ž¡’‚ÿè.MEMO:–?ý:key:“$iŽ¡’—ÿÜprintln($"Computing‘?ýfib($i)...")Ž¡’—ÿÜresult‘?ý=Ž¡’¬ÿÐif–?ý$(or“$(eq“$i,“0),“$(eq“$i,“1))Ž¡’ÁÿÄvalue‘?ý$iŽ¡’¬ÿÐelseŽ¡’ÁÿÄadd($(fib–?ý$(sub“$i,“1)),“$(fib“$(sub“$i,“2)))Ž¡’‚ÿèvalue‘?ý$(result)Ž¡¡‘mÿôprintln($"fib(10)–?ý=“$(fib“10)")Ž¡‘mÿôprintln($"fib(12)–?ý=“$(fib“12)")ŽŸ™™‘Y²When–UUthis“script“is“run,“it“proGduces“the“follo¸ãwing“output.ަ‘mÿôÈComputing‘?ýfib(10)...Ž¡‘mÿôComputing‘?ýfib(9)...Ž¡‘mÿôComputing‘?ýfib(8)...Ž¡‘mÿôComputing‘?ýfib(7)...Ž¡‘mÿôComputing‘?ýfib(6)...Ž¡‘mÿôComputing‘?ýfib(5)...Ž¡‘mÿôComputing‘?ýfib(4)...Ž¡‘mÿôComputing‘?ýfib(3)...Ž¡‘mÿôComputing‘?ýfib(2)...Ž¡‘mÿôComputing‘?ýfib(1)...Ž¡‘mÿôComputing‘?ýfib(0)...Ž¡‘mÿôfib(10)–?ý=“55Ž¡‘mÿôComputing‘?ýfib(12)...Ž¡‘mÿôComputing‘?ýfib(11)...Ž¡‘mÿôfib(12)–?ý=“144ŽŸ™™‘Y²Note–Дthat“the‘ГFibšGonacci“computation“is“p˜erformed›Гjust“once“for“eac¸ãh˜v‘ÿqÇalue“ofŽ¡‘Ythe– Æargumenš¸ãt,‘rather“than“an‘ ÅexpGonen˜tial“n˜um˜bGer“of› Åtimes.‘YíIn“other˜w¸ãords,‘theŽ¡‘YÈ.MEMO‘¦Î²rule–¦úhas“pGerformed“a“memoization,‘ÉÚhence“the“name.‘7©Note“that“if“È.STATICŽ¡‘Y²wš¸ãere–UUused“instead,“the“v‘ÿqÇalues“w˜ould“bGe“sa˜v˜ed“across“runs“of“Èomake².Ž¡‘hAs–Aa“general“guideline,‘G¼whenevš¸ãer“y˜ou“use“a‘BÈ.STATIC›²or“È.MEMO˜²rule“withinŽ¡‘Ya›Ó:function‘Ó;b•Go“dy‘ÿ*ª,‘ò³y•¸ãou˜will˜usually‘Ó;w“an“t˜to˜use˜a–Ó;È:key:˜²v‘ÿqÇalue˜to˜index“the˜ruleŽ¡‘Ybš¸ãy–’…the‘’†function“argumen˜t.‘)YHo˜w˜ev˜er,‘¡Òthis“is“not–’†required.‘)XIn“the‘’…follo˜wing,‘¡ÒtheŽ¡‘YÈ.STATIC–UU²rule“is“used“to“pšGerform“some“exp˜ensiv¸ãe“computation“once.ަ‘mÿôÈf(x)‘?ý=ŽŽŽŒ‹;M  s\È ý®£8‘#ï/pdf:dest (page.59) [@thispage /XYZ @xpos @ypos]Ä4.15.‘ÇCONST‘ÿ*ªANTS’ôqº²59ŽŽ 8G ýÚŸ ‘LÿèÈ.STATIC:ޤ ‘aÿÜy–?ý=“$(expensive-computation)Ž¡‘Lÿèadd($x,‘?ý$y)Ž©g÷‘2²Additonal–(êcare›(ëshould“bGe˜tak¸ãen“for˜recursivš¸ãe“functions,‘]Ðlik˜e‘(ëthe“FibGonacciŽ¡‘#function.‘V2If›öÍthe–öÎÈ:key:“²is“omitted,‘,then“the“rule“w¸ãould“bGe˜de ned“in“terms“ofŽ¡‘#itself,‘Ö1resulting–‰8in›‰9a“cyclic˜depGendency‘ÿ*ª.‘ qHere˜is“the˜output“of˜the“FibGonacciŽ¡‘#program–UUwith“an“omitted“È:key:².ަ‘7ÿôÈComputing‘?ýfib(10)...Ž¡‘7ÿôComputing‘?ýfib(8)...Ž¡‘7ÿôComputing‘?ýfib(6)...Ž¡‘7ÿôComputing‘?ýfib(4)...Ž¡‘7ÿôComputing‘?ýfib(2)...Ž¡‘7ÿôComputing‘?ýfib(0)...Ž¡‘7ÿôfib(10)–?ý=“0Ž¡‘7ÿôfib(12)–?ý=“0ަ‘#²The–äreason“for›äthis“bGeha¸ãvior“is“that“the˜Èresult“²v‘ÿqÇalue“is“not“sa•¸ãv“ed˜un“til–äthe“baseŽ¡‘#case›OËÈi–?ý=“0“||“i“=“1–O̲is˜reac¸ãhed,‘Žhso“Èfib˜²calls˜itself˜recursivš¸ãely“un˜til‘OËreac˜hingŽ¡‘#Èfib(0)²,–UUwhereupGon“the“Èresult“²v‘ÿqÇalue“is“ xed“at“0.Ž¡‘2In›ZDan•¸ãy‘ZEcase,‘[€recursiv“e˜de nitions–ZEare˜pGerfectly“acceptable,‘[€but˜y¸ãou“will˜usu-Ž¡‘#ally›éw•¸ãan“t–éa˜È:key:“²argumen¸ãt˜so˜that“eac•¸ãh˜recursiv“e˜call–éhas˜a“di eren¸ãt˜È:key:².Ž¡‘#In–Ö"most›Ö!cases,‘öUthis“means˜that“the“È:key:“²should˜include“all“argumen¸ãts˜to“theŽ¡‘#function.Ž‘#Ÿ÷•ï4pdf:dest (section.4.15) [@thispage /XYZ @xpos @ypos]ŸÌ4.15Ž‘,ÿüConstanŒÌtsŽŸç²In•¸ãternally‘ÿ*ª,›UUOMak“e˜represen“ts˜v‘ÿqÇalues˜in˜sev“eral˜forms,˜whic“h˜w“e˜list˜here.ަ‘¸ŽŽŽ‘²in¸ãtŽŸ¤È‘$@Ç{ŽŽŽ‘/²Constructor:‘qÇÈ$(int‘?ý)‘UUïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.4.1) >> >> ²9.4.1ïpdf:eann.Ž©Ã/‘$@Ç{ŽŽŽ‘/²Ob‘Ž8ject:‘qÇÈInt‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.4) >> >> ²12.1.4ïpdf:eann.ŽŸÃ0‘$@Ç{ŽŽŽ‘/²An–’zinš¸ãteger“is‘’ya“represen˜ted“with“ nite“precision‘’yusing“the“OCamlŽ¡‘/represen¸ãtation––Ì(31“bits“on“a“32“platform,‘ç)and“63“bits“on“a“64“bitŽ¡‘/platform).ަ‘$@Ç{ŽŽŽ‘/²See–UUalso:‘qÇarithmetic“ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.4.3) >> >> 9.4.3ïpdf:eann.ŽŸ¤È‘¸ŽŽŽ‘² oatŽŸ¤Ç‘$@Ç{ŽŽŽ‘/²Constructor:‘qÇÈ$(float‘?ý)‘UUïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.4.2) >> >> ²9.4.2ïpdf:eann.ޤÃ0‘$@Ç{ŽŽŽ‘/²Ob‘Ž8ject:‘qÇÈFloat‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.5) >> >> ²12.1.5ïpdf:eann.ަ‘$@Ç{ŽŽŽ‘/²A–UU oat“is“a“ oating-pGoinš¸ãt“v‘ÿqÇalue,“represen˜ted“in“IEEE“64-bit“format.Ž¡‘$@Ç{ŽŽŽ‘/²See–UUalso:‘qÇarithmetic“ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.4.3) >> >> 9.4.3ïpdf:eann.ŽŽŽŒ‹<Uì s\È ý®£8‘Yï/pdf:dest (page.60) [@thispage /XYZ @xpos @ypos]²60‘_øÇÄCHAPTER–UU4.‘ÇOMAKE“CONCEPTS“AND“SYNT‘ÿ*ªAXŽŽ 8G ýÚŸ ‘h¸ŽŽŽ‘r²arra¸ãyŽŸ0M‘}@Ç{ŽŽŽ’ˆ²Constructor:‘qÇÈ$(array–?ý,“...,“)‘UUïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.1) >> >> ²9.3.1ïpdf:eann.ŽŸR‘}@Ç{ŽŽŽ’ˆ²Ob‘Ž8ject:‘qÇÈArray‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.7) >> >> ²12.1.7ïpdf:eann.ŽŸS‘}@Ç{ŽŽŽ’ˆ²An–,arraš¸ãy“is‘,a“ nite“list“of“v‘ÿqÇalues.‘öArra˜ys“are“also‘,de ned“with“anޤ ’ˆarra¸ãy‘UUde nitionŽ©û’œÿöÈX[]‘?ý=Ž¡’±ÿꎡ’±ÿê...Ž¡’±ÿꎦ‘}@Ç{ŽŽŽ’ˆ²See–UUalso:‘qÇÈnth“ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.5) >> >> ²9.3.5ïpdf:eann,“Ènth-tl“ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.8) >> >> ²9.3.8ïpdf:eann,“Èlength“ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.3.4) >> >> ²9.3.4ïpdf:eann,“µ:–ª¨:“:ŽŽ¤0M‘h¸ŽŽŽ‘r²stringŽ¡‘}@Ç{ŽŽŽ’ˆ²Ob‘Ž8ject:‘qÇÈString‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.8) >> >> ²12.1.8ïpdf:eann.ŽŸS‘}@Ç{ŽŽŽ’ˆ²By–¿default,‘)©all“constan•¸ãt›¾c“haracter‘¿sequences˜represen“t–¿strings,‘)©so“theޤ ’ˆsimple›™1w•¸ãa“y˜to–™0construct˜a˜string˜is˜to“write˜it˜do•¸ãwn.‘=ZIn“ternally‘ÿ*ª,‘ª(theŽ¡’ˆstring–„_ma¸ãy›„^bGe“parsed“as˜sev¸ãeral“pieces.‘þäA‘„Rstring“often˜represen¸ãts“anŽ¡’ˆarraš¸ãy–UUof“v‘ÿqÇalues“separated“b˜y“whitespace.ަ’œÿöÈosh>S–?ý=“This“is“a“stringŽ¡’œÿö-–?ý:“Ž¡’¬¿í:‘?ýSequenceŽ¡’œÿöosh>length($S)Ž¡’œÿö-–?ý:“4“:“Intަ‘}@Ç{ŽŽŽ’ˆ²A‘µaÎdata‘yì²string–µ‰is“a“string“where“whitespace“is“signi canš¸ãt.‘<ƒIt“represen˜tsŽ¡’ˆa–‘±single›‘²v‘ÿqÇalue,‘àÈnot“an˜arra¸ãy‘ÿ*ª.‘&ÜThe˜constructors“are˜the“quotationsŽ¡’ˆÈ$"..."–UU²and“È$'...'².Ž©&¤’œÿöÈosh>S–?ý=“$'''This“is“a“string'''Ž¡’œÿö-–?ý:““:“Stringަ‘}@Ç{ŽŽŽ’ˆ²See–UUalso:‘qÇQuoted“strings“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.2) >> >> 7.2ïpdf:eann.ŽŸ0N‘h¸ŽŽŽ‘r² leŽŸ0M‘}@Ç{ŽŽŽ’ˆ²Constructor:‘qÇÈ$(file‘?ý)‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.1) >> >> ²10.1.1ïpdf:eann.ŽŸR‘}@Ç{ŽŽŽ’ˆ²Ob‘Ž8ject:‘qÇÈFile‘UUïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.13) >> >> ²12.1.13ïpdf:eann.ŽŽŽŒ‹=aè s\È ý®£8‘#ï/pdf:dest (page.61) [@thispage /XYZ @xpos @ypos]Ä4.15.‘ÇCONST‘ÿ*ªANTS’ôqº²61ŽŽ 8G ýÚŸ ‘G@Ç{ŽŽŽ‘R²A‘–H le––Xob‘Ž8ject“represen¸ãts“the›–Yabstract“name“for“a˜ le.‘4ÐThe˜ le“ob‘Ž8jectޤ ‘Rcan–|NbGe›|Oview¸ãed“as˜an“absolute˜name;‘Ħthe“string˜represen¸ãtation“depGendsŽ¡‘Ron–UUthe“curren¸ãt“directory‘ÿ*ª.Ž©„!‘fÿöÈosh>name–?ý=“$(file“foo)Ž¡‘fÿö-–?ý:“/Users/jyh/projects/omake/0.9.8.x/foo“:“FileŽ¡‘fÿöosh>echo‘?ý$(name)Ž¡‘fÿöfooŽ¡‘fÿöosh>cd‘?ý..Ž¡‘fÿö-–?ý:“/Users/jyh/projects/omake“:“DirŽ¡‘fÿöosh>echo‘?ý$(name)Ž¡‘fÿö0.9.8.x/fooަ‘G@Ç{ŽŽŽ‘R²See–UUalso:‘qÇÈvmount“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.6.1) >> >> ²10.6.1ïpdf:eann.ޤ¥)‘2¸ŽŽŽ‘<²directoryŽŸ¥*‘G@Ç{ŽŽŽ‘R²Constructor:‘qÇÈ$(dir‘?ý)‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.1.1) >> >> ²10.1.1ïpdf:eann.ŽŸB‘G@Ç{ŽŽŽ‘R²Ob‘Ž8ject:‘qÇÈDir‘UUïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.14) >> >> ²12.1.14ïpdf:eann.ŽŸB‘G@Ç{ŽŽŽ‘R²A–UUdirectory“ob›Ž8ject“is“lik¸ãe“a“ le“ob˜ject,“but“it“represen¸ãts“a“directory‘ÿ*ª.Ž¡‘2¸ŽŽŽ‘<²map‘UU(dictionary)ަ‘G@Ç{ŽŽŽ‘R²Ob‘Ž8ject:‘qÇÈMap‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.2) >> >> ²12.1.2ïpdf:eann.ŽŸB‘G@Ç{ŽŽŽ‘R²A‘LXmap/dictionary–L—is“a“table›L˜that“maps“v‘ÿqÇalues˜to“v‘ÿqÇalues.‘WŽThe“ÈMapޤ ‘R²ob‘Ž8ject–¿is“the“emptš¸ãy“map.‘}The“data“structure“is“pGersisten˜t,‘/Yand“allŽ¡‘RopšGerations–¿þare“pure‘¿ÿand“functional.‘±ÂThe“sp˜ecial‘¿ÿsyn¸ãtax“È$|key|“²canŽ¡‘RbGe–UUused“for“k¸ãeys“that“are“strings.ަ‘fÿöÈosh>table–?ý=“$(Map)Ž¡‘fÿöosh>table–?ý=“$(table.add“x,“int)Ž¡‘fÿöosh>table.‘?ý+=Ž¡’ÿÞ$|y|–?ý=“intŽ¡‘fÿöosh>table.find(y)Ž¡‘fÿö-–?ý:“"int"“:“Sequenceަ‘2¸ŽŽŽ‘<²c¸ãhannelޤ¥)‘G@Ç{ŽŽŽ‘R²Constructor:‘qÇÈ$(fopen–?ý,“)‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.8.4) >> >> ²10.8.4ïpdf:eann.ŽŸB‘G@Ç{ŽŽŽ‘R²Ob‘Ž8jects:‘qÇÈInChannel–UUïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.16) >> >> ²12.1.16ïpdf:eann,“ÈOutChannel“ïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.17) >> >> ²12.1.17ïpdf:eann.Ž©B‘G@Ç{ŽŽŽ‘R²Channels–UUare“used“for“bu ered“input/output.Ž¡‘2¸ŽŽŽ‘<²functionŽ¡‘G@Ç{ŽŽŽ‘R²Constructor:‘qÇÈ$(fun–?ý,“)‘UUïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.9.5.1) >> >> ²9.5.1ïpdf:eann.ަ‘G@Ç{ŽŽŽ‘R²Ob‘Ž8ject:‘qÇÈFun‘UUïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.12.1.9) >> >> ²12.1.9ïpdf:eann.ŽŽŽŒ‹>mÍ s\È ý®£8‘Yï/pdf:dest (page.62) [@thispage /XYZ @xpos @ypos]²62‘_øÇÄCHAPTER–UU4.‘ÇOMAKE“CONCEPTS“AND“SYNT‘ÿ*ªAXŽŽ 8G ýÚŸ ‘}@Ç{ŽŽŽ’ˆ²F‘ÿ*ªunctions–UUcan“bGe“de ned“in“sevš¸ãeral“w˜a˜ys.ŽŸ’³2¸ŽŽŽ’š³3²As–UUan“anon¸ãymous“function,ޤ’¯³'È$(fun–?ýi,“j,“$(add“$i,“$j))Ž¡’³2¸ŽŽŽ’š³3²As–UUa“named“function,Ž¡’¯³'Èf(i,–?ýj)“=Ž© ’ijadd($i,‘?ý$j)Ž¡’³2¸ŽŽŽ’š³3ÎThis›Mƒfe–ÿ}'atur“e‘M„wil‘‚Øl˜b“e˜intr“o“duc“e“d˜in‘M„version˜0.9.9.0.²As–an“anon¸ãy-ަ’š³3mous–UUfunction“argumen¸ãt.Ž¡’¯³'Èosh>foreach(i–?ý=>“$(add“$i,“1),“1“2“3)ަ’¯³'-–?ý:““:“Arrayޤ‘h¸ŽŽŽ‘r²lexerŽ¡‘}@Ç{ŽŽŽ’ˆ²Ob‘Ž8ject:‘qÇÈLexer‘UUïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.9) >> >> ²10.11.9ïpdf:eann.Ž©‘}@Ç{ŽŽŽ’ˆ²This–UUob‘Ž8ject“represen¸ãts“a“lexer.Ž¡‘h¸ŽŽŽ‘r²parserŽ¡‘}@Ç{ŽŽŽ’ˆ²Ob‘Ž8ject:‘qÇÈParser‘UUïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.11.13) >> >> ²10.11.13ïpdf:eann.ަ‘}@Ç{ŽŽŽ’ˆ²This–UUob‘Ž8ject“represen¸ãts“a“parser.ŽŽŽŒ‹?yë s\È ý®£8‘#ï/pdf:dest (page.63) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï1pdf:dest (chapter.5) [@thispage /XYZ @xpos @ypos]ŸUZÊChapter‘Ç 5ŽŸ2[ÆV‘ýªáariables– T{and“NamingŽŸ4Z²During–6óev‘ÿqÇaluation,‘=there“are“three‘6ôdi eren¸ãt“kinds“of“namespaces.‘g§V‘ÿ*ªariables“canޤ bGe–"Îprivate²,‘FUor›#they“ma¸ãy“refer“to“ elds˜in“the“curren¸ãt“Îthis‘èC²ob‘Ž8ject,‘FVor“they“canŽ¡bGe–÷Þpart›÷Ýof“the“Îglob‘ÿ}'al‘f²namespace.‘YaThe“namespace˜can“bšGe“sp˜eci ed‘÷Ýdirectly“b¸ãyŽ¡including–zan›zexplicit“quali er“bGefore“the˜v‘ÿqÇariable“name.‘ßöThe“three“namespacesŽ¡are–UUseparate;“a“v‘ÿqÇariable“can“bšGe“b˜ound“in“one“or“more“sim¸ãultaneously‘ÿ*ª.ŽŸÅ‘ÿôÈ#–?ýprivate“namespaceŽ¡‘ÿôprivate.X–?ý=“1Ž¡‘ÿô#–?ýcurrent“objectŽ¡‘ÿôthis.X–?ý=“2Ž¡‘ÿô#–?ýpublic,“globally“definedŽ¡‘ÿôglobal.X–?ý=“3ŽŸL.ï3pdf:dest (section.5.1) [@thispage /XYZ @xpos @ypos]ŸÇvÌ5.1Ž‘$æcpriv‘ÿ™ate.ŽŸçIJThe–¹ûÈprivate.›¹ú²quali er“is“used˜to“de ne“v‘ÿqÇariables“that˜are“priv‘ÿqÇate“to˜the“curren¸ãtŽ¡ le/scopšGe.‘ÀýThe‘fv‘ÿqÇalues–gare“not“accessible“outside“the“scop˜e.‘ÀüPriv›ÿqÇate“v˜ariablesŽ¡are–UUstatically“(lexically)“scopGed.ŽŸÄ‘ÿôÈObj.‘?ý=Ž¡‘$¿ëprivate.X–?ý=“1Ž¡¡‘$¿ëprint()‘?ý=Ž¡‘4âprintln(The–?ývalue“of“X“is:“$X)Ž¡¡‘ÿô#‘?ýPrints:Ž¡–ÿô#“The–?ýprivate“value“of“X“is:“1Ž¡‘ÿôObj.print()Ž¡¡‘ÿô#–?ýThis“is“an“error--X“is“private“in“ObjŽ¡‘ÿôy–?ý=“$(Obj.X)ŽŽŸK’Êÿ²63ŽŽŒ‹@~· s\È ý®£8‘Yï/pdf:dest (page.64) [@thispage /XYZ @xpos @ypos]²64’‡5?ÄCHAPTER–UU5.‘ÇV‘þãARIABLES“AND“NAMINGŽŽ 8G ýÚŸ ‘h²In–UUaddition,“priv›ÿqÇate“de nitions“do“not“a ect“the“global“v˜alue“of“a“v˜ariable.ŽŸ-‘h¿÷È#–?ýThe“public“value“of“x“is“1ޤ ‘h¿÷x–?ý=“1Ž¡¡‘h¿÷#–?ýThis“object“uses“a“private“value“of“xŽ¡‘h¿÷Obj.‘?ý=Ž¡‘}¿ëprivate.x–?ý=“2Ž¡¡‘}¿ëprint()‘?ý=Ž¡’âx–?ý=“3Ž¡’âprintln(The–?ýprivate“value“of“x“is:“$x)Ž¡’âprintln(The–?ýpublic“value“of“x“is:“$(public.x))Ž¡’âf()Ž¡¡‘h¿÷#‘?ýPrints:Ž¡‘h¿÷#‘ÿôThe–?ýprivate“value“of“x“is:“3Ž¡‘h¿÷#‘ÿôThe–?ýpublic“value“of“x“is:“1Ž¡‘h¿÷Obj.print()ŽŸ$‘h²Priv–ÿqÇate›UUv“ariables˜ha•¸ãv“e˜t“w“o˜additional˜propGerties.Ž‘YŸÒï.pdf:dest (Item.7) [@thispage /XYZ @xpos @ypos]¤ D‘ 8ä1.ŽŽŽ‘Priv–ÿqÇate›UUv“ariables˜are˜loGcal˜to˜the˜ le˜in˜whic¸ãh˜they˜are˜de ned.ŽŸÒï.pdf:dest (Item.8) [@thispage /XYZ @xpos @ypos]¡‘ 8ä2.ŽŽŽ‘Priv–ÿqÇate›A5v“ariables˜are˜not˜expGorted˜b•¸ãy˜the˜Èexport‘A4²directiv“e,‘|-unless˜theyޤ ‘are–UUmen¸ãtioned“explicitly‘ÿ*ª.ŽŸ-‘=¿íÈprivate.‘?ý=Ž¡‘MäFLAG–?ý=“trueŽ¡¡‘=¿ísectionŽ¡‘MäFLAG–?ý=“falseŽ¡‘MäexportŽ¡¡‘=¿í#–?ýFLAG“is“still“trueŽ¡‘=¿ísectionŽ¡‘MäFLAG–?ý=“falseŽ¡‘Mäexport‘?ýFLAGŽ¡¡‘=¿í#–?ýFLAG“is“now“falseŽ¡Ÿ8›ï3pdf:dest (section.5.2) [@thispage /XYZ @xpos @ypos]Ÿ Ì5.2Ž‘$æcthis.ŽŸ÷å²The–ŸÈthis.“²quali er“is“used›ŸŒto“de ne“ elds“that“are“loGcal“to“an˜ob–Ž8ject.‘PoOb“jectŽ¡v‘ÿqÇariables–UUare“dynamically“scopGed.ŽŽŽŒ‹A„¥ s\È ý®£8‘#ï/pdf:dest (page.65) [@thispage /XYZ @xpos @ypos]Ä5.3.‘ÇGLOBAL.’ .-²65ŽŽ 8G ýÚŸ ‘7ÿôÈX–?ý=“1ޤ ‘7ÿôf()‘?ý=Ž¡‘G¿ëprintln(The–?ýpublic“value“of“X“is:“$(X))Ž¡¡‘7ÿô#‘?ýPrints:Ž¡‘7ÿô#‘ÿôThe–?ýpublic“value“of“X“is:“2Ž¡‘7ÿôsectionŽ¡‘G¿ëX–?ý=“2Ž¡‘G¿ëf()Ž¡¡‘7ÿô#–?ýX“is“a“protected“field“in“the“objectŽ¡‘7ÿôObj.‘?ý=Ž¡‘G¿ëthis.X–?ý=“3Ž¡¡‘G¿ëprint()‘?ý=Ž¡‘Wâprintln(The–?ývalue“of“this.X“is:“$(X))Ž¡‘Wâf()Ž¡¡‘7ÿô#‘?ýPrints:Ž¡‘7ÿô#‘ÿôThe–?ývalue“of“this.X“is:“3Ž¡‘7ÿô#‘ÿôThe–?ýpublic“value“of“X“is:“1Ž¡‘7ÿôObj.print()Ž¡¡‘7ÿô#–?ýThis“is“legal,“it“defines“Y“as“3Ž¡‘7ÿôY–?ý=“$(Obj.X)Ž©¡º‘2²In–Zëgeneral,‘œQit“is›Zìa“go•Go“d–Zëidea“to˜de ne“ob‘Ž8ject“v‘ÿqÇariables˜as“protected.‘‚ŠTheŽ¡‘#resulting–›?coGde››>is“more˜mošGdular“b˜ecause››>v‘ÿqÇariables“in“y¸ãour˜ob‘Ž8ject“will˜not“proGduceŽ¡‘#unexpGected–UUclashes“with“v‘ÿqÇariables“de ned“in“other“parts“of“the“pro‘Ž8ject.Ž‘#ŸÇ8ï3pdf:dest (section.5.3) [@thispage /XYZ @xpos @ypos]Ÿ9Ì5.3Ž‘$æcglobal.ŽŸç²The–È_Èglobal.›È`²quali er“is“used“to˜spšGecify“global“dynamically-scop˜ed“v‘ÿqÇariables.‘BËInŽ¡the–„‚follo¸ãwing“example,‘Nthe“Èglobal.“²de nition“spGeci es“that‘„ƒthe“binding“ÈX–?ý=“4Ž¡²is–7to“bšGe‘7‚dynamically“scop˜ed.‘KGlobal›7‚v‘ÿqÇariables“Îar‘ÿ}'e‘cûnot‘*Y²de ned“as˜ elds“of“anŽ¡ob‘Ž8ject.ަ‘ÿôÈX–?ý=“1Ž¡‘ÿôf()‘?ý=Ž¡‘$¿ëprintln(The–?ýglobal“value“of“X“is:“$(X))Ž¡¡‘ÿô#‘?ýPrints:Ž¡–ÿô#“The–?ýglobal“value“of“X“is:“2Ž¡‘ÿôsectionŽ¡‘$¿ëX–?ý=“2Ž¡‘$¿ëf()ŽŽŽŒ‹BŠÓ s\È ý®£8‘Yï/pdf:dest (page.66) [@thispage /XYZ @xpos @ypos]²66’‡5?ÄCHAPTER–UU5.‘ÇV‘þãARIABLES“AND“NAMINGŽŽ 8G ýÚŸ ¤ ‘mÿôÈObj.‘?ý=Ž¡‘}¿ëprotected.X–?ý=“3Ž¡¡‘}¿ëprint()‘?ý=Ž¡’âprintln(The–?ýprotected“value“of“X“is:“$(X))Ž¡’âglobal.X–?ý=“4Ž¡’âf()Ž¡¡‘mÿô#‘?ýPrints:Ž¡‘mÿô#‘ÿôThe–?ýprotected“value“of“X“is:“3Ž¡‘mÿô#‘ÿôThe–?ýglobal“value“of“X“is:“4Ž¡‘mÿôObj.print()Ž‘YŸA¶ï3pdf:dest (section.5.4) [@thispage /XYZ @xpos @ypos]ŸÇÌ5.4Ž‘$æcprotected.Ž©ç²In–UUOMakš¸ãe“0.9.8,“Èprotected“²is“a“synon˜ym“for“Èthis².ŽŸÌ‘ÿôÈosh>protected.x–?ý=“1Ž¡‘ÿô-–?ý:“"1"“:“SequenceŽ¡‘ÿôosh>value‘?ý$(this.x)Ž¡‘ÿô-–?ý:“"1"“:“SequenceŽŸÌ²In–?â0.9.9,‘D,this“will“c¸ãhange,‘D-so“that“the“quali er“Èprotected“²means“(in“0.9.9)“thatŽ¡a–´v‘ÿqÇariable“is›µloGcal“to“the“curren¸ãt“ob‘Ž8ject˜or“ le,‘&nand“ma¸ãy“not˜bGe“accessed“outsideŽ¡it.ŽŸÑï3pdf:dest (section.5.5) [@thispage /XYZ @xpos @ypos]ŸÌ5.5Ž‘$æcpublic.ަ²In–UUOMakš¸ãe“0.9.8,“Èpublic“²is“a“synon˜ym“for“Èglobal².ŽŸÌ‘ÿôÈosh>public.x–?ý=“1Ž¡‘ÿô-–?ý:“"1"“:“SequenceŽ¡‘ÿôosh>value‘?ý$(global.x)Ž¡‘ÿô-–?ý:“"1"“:“SequenceŽŸÌ²In–Å¢0.9.9,‘á¶this“will“c¸ãhange,‘áµso“that›Å£the“quali er“Èpublic“²means“(in˜0.9.9)“that“aŽ¡v‘ÿqÇariable–UUis“to“bGe“accessible“from“outside“the“curren¸ãt“ le“or“ob‘Ž8ject.ŽŸú™ï3pdf:dest (section.5.6) [@thispage /XYZ @xpos @ypos]Ÿ9Ì5.6Ž‘$æcQuali ed‘ffblos3cŒÌksަ²If–ϧsev¸ãeral›Ϩquali ed“v‘ÿqÇariables“are˜de ned“simš¸ãultaneously‘ÿ*ª,‘êda“bloGc˜k“form‘Ϩof“quali erŽ¡can›¼×bGe–¼Øde ned.‘¨NThe“syn¸ãtax˜is˜similar“to˜an“ob‘Ž8ject˜de nition,‘Ö¸where“the˜nameŽ¡of–޵the›޶ob‘Ž8ject“is˜the“quali er˜itself.‘èF‘ÿ*ªor˜example,‘the“follo¸ãwing˜program“de nesŽ¡t•¸ãw“o–UUpriv›ÿqÇate“v˜ariables“ÈX“²and“ÈY².ŽŽŽŒ‹C‘ s\È ý®£8‘#ï/pdf:dest (page.67) [@thispage /XYZ @xpos @ypos]Ä5.7.‘ÇDECLARE’K²67ŽŽ 8G ýÚŸ ‘7ÿôÈprivate.‘?ý=ޤ ‘LÿèX–?ý=“1Ž¡‘LÿèY–?ý=“2Ž©–°‘#²The–×Ôquali er“spšGeci es“a“default‘×Õnamespace“for“new“de nitions“in“the“blo˜c¸ãk.‘GòTheŽ¡‘#con•¸ãten“ts–UUof“the“bloGc¸ãk“is“otherwise“completely“general.ŽŸ¼]‘7ÿôÈprivate.‘?ý=Ž¡‘LÿèX–?ý=“1Ž¡‘LÿèY–?ý=“2Ž¡‘Lÿèpublic.Z–?ý=“$(add“$X,“$Y)Ž¡‘Lÿè#–?ýPrints“"The“value“of“Z“is“3"Ž¡‘Lÿèecho–?ýThe“value“of“Z“is“$ZŽ‘#Ÿ‰Kï3pdf:dest (section.5.7) [@thispage /XYZ @xpos @ypos]ŸPXÌ5.7Ž‘$æcdeclareŽŸ-7²When–_Åa›_Äv‘ÿqÇariable“name“is˜unquali ed,‘baits“namespace˜is“determined“b¸ãy˜the“mostŽ¡recen¸ãt–×Ýde nition›×Üor“declaration˜that“is˜in“scopGe˜for“that˜v‘ÿqÇariable.‘ù^W‘ÿ*ªe˜ha•¸ãv“eŽ¡already–טseen›×™this“in˜the“examples,‘ø)where“a˜v‘ÿqÇariable“de nition˜is“quali ed,‘ø)butŽ¡the–ÑLsubsequen¸ãt›ÑKuses“are“not˜quali ed“explicitly‘ÿ*ª.‘å«In“the˜follo¸ãwing“example,‘ðItheŽ¡ rst–ª¤oGccurrence›ª¥of“È$X‘ª²refers“to˜the“Îprivate‘k²de nition,‘¿øbGecause˜that“is˜the“mostŽ¡recenš¸ãt.‘¿;The–Ä|public“de nition“of“ÈX‘Ä_²is“still“È0²,‘àEbut“the“v‘ÿqÇariable‘Ä{m˜ust“bGe“quali edŽ¡explicitly‘ÿ*ª.ŽŸ¼\‘ÿôÈpublic.X–?ý=“0Ž¡‘ÿôprivate.X–?ý=“1Ž¡¡‘ÿôpublic.print()‘?ý=Ž¡‘)ÿèprintln(The–?ývalue“of“private.X“is:“$X)Ž¡‘)ÿèprintln(The–?ývalue“of“public.X“is:“$(public.X))ަ²Sometimes–E,it›E-can“bGe˜useful“to˜declare“a˜v‘ÿqÇariable“without˜de ning“it.‘F‘ÿ*ªor“example,Ž¡w•¸ãe›éÔmigh“t‘éÓha“v“e˜a˜function˜that–éÓuses˜a˜v‘ÿqÇariable“ÈX‘é¹²that˜is“to˜bGe˜de ned˜later“in˜theŽ¡program.‘qÇThe–UUÈdeclare“²directiv¸ãe“can“bGe“used“for“this.ŽŸ¼]‘ÿôÈdeclare‘?ýpublic.XŽ¡¡‘ÿôpublic.print()‘?ý=Ž¡‘)ÿèprintln(The–?ývalue“of“X“is“$X)Ž¡¡‘ÿô#–?ýPrints“"The“value“of“X“is“2"Ž¡‘ÿôX–?ý=“2Ž¡‘ÿôprint()ަ‘²Finally‘ÿ*ª,‘žpwhat›ÒabGout–Ñv‘ÿqÇariables“that˜are“used“but“not˜explicitly“quali ed?‘!‘?ý1Ž¡‘ÿô***–?ýomake“error:“File“-:“line“1,“characters“0-1“command“not“found:“1Ž¡‘ÿôosh>–?ývalue“1Ž¡‘ÿô-–?ý:“"1"“:“SequenceŽ¡‘ÿôosh>–?ýls“-l“omakeŽ¡‘ÿô-rwxrwxr-x‘ ú1–?ýjyh“jyh“1662189“Aug“25“10:24“omake*ŽŸ­Lï3pdf:dest (section.6.1) [@thispage /XYZ @xpos @ypos]ŸzÌ6.1Ž‘$æcDynamic‘ffscopingŽŸ€f²Dynamic–R–scoping›R•means“that˜the“v‘ÿqÇalue˜of“a˜v‘ÿqÇariable“is˜determined“b¸ãy˜the“mostŽ¡recenš¸ãt–tNbinding“of“the“v‘ÿqÇariable“in“scopGe‘tOat“run˜time.‘βConsider“the“follo˜wing“pro-Ž¡gram.ŽŽŸK’Êÿ69ŽŽŒ‹F¢ s\È ý®£8‘Yï/pdf:dest (page.70) [@thispage /XYZ @xpos @ypos]²70‘}ŽÄCHAPTER–UU6.‘ÇEXPRESSIONS“AND“V‘þãALUESŽŽ 8G ýÚŸ ‘mÿôÈOPTIONS–?ý=“a“b“cޤ ‘mÿôf()‘?ý=Ž¡‘}¿ëprintln(OPTIONS–?ý=“$(OPTIONS))Ž¡‘mÿôg()‘?ý=Ž¡‘}¿ëOPTIONS–?ý=“d“e“fŽ¡‘}¿ëf()Ž©§¹‘h²If–õÈf()›ö²is“called˜without“rede ning˜the“ÈOPTIONS‘â²v‘ÿqÇariable,‘‘?ýg()Ž¡‘mÿôOPTIONS–?ý=“d“e“fŽ¡‘mÿôosh>‘?ýf()Ž¡‘mÿôOPTIONS–?ý=“a“b“cަ‘h²Dynamic–z*scoping“can›z+bGe“tremendously“helpful“for“simplifying“the˜coGde“in“aŽ¡‘Ypro‘Ž8ject.‘ë F‘ÿ*ªor–(kexample,‘]1the“ÈOMakeroot“² le“de nes›(la“set“of“functions˜and“rulesŽ¡‘Yfor–9building›:pro‘Ž8jects“using“suc¸ãh˜v‘ÿqÇariables“as“ÈCC²,˜ÈCFLAGS²,“etc.‘ViHo•¸ãw“ev“er,‘¥di eren“tŽ¡‘Yparts–î6of“a‘î5pro‘Ž8ject“maš¸ãy“need“di eren˜t“v›ÿqÇalues‘î5for“these“v˜ariables.‘> >> 5.5ïpdf:eann).ŽŸ¤‘¸ŽŽŽ‘²The–UUcurrenš¸ãt“w˜orking“directory‘ÿ*ª.ޤ¤‘¸ŽŽŽ‘²The–UUcurrenš¸ãt“Unix“en˜vironmen˜t.Ž¡‘¸ŽŽŽ‘²The–8ãcurren¸ãt“implicit“rules“and“implicit“depGendencies“(see“also“Section“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.11.1) >> >> 8.11.1ïpdf:eann).Ž¡‘¸ŽŽŽ‘²The–8ãcurrenš¸ãt“set“of“\phon˜y"“target“declarations“(see“Sections“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.10) >> >> 8.10ïpdf:eann“and“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.11.3) >> >> 8.11.3ïpdf:eann).ަ‘If–£µthe“Èexport‘£¶²directivš¸ãe“is“used“with“an“argumen˜t,‘·Nthe“argumen˜t“expressionŽŸ is–UUev›ÿqÇaluated“and“the“resulting“v˜alue“is“inš¸ãterpreted“as“follo˜ws:ަ‘¸ŽŽŽ‘²If–UUthe“v‘ÿqÇalue“is“emptš¸ãy‘ÿ*ª,“ev˜erything“is“expšGorted,“as“describ˜ed“ab˜o•¸ãv“e.Ž¡‘¸ŽŽŽ‘²If–›the“v‘ÿqÇalue“represenš¸ãts“a“en˜vironmen˜t“(or“a“partial“en˜vironmen˜t)“capturedޤ ‘using–úthe›úïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:export) >> >> Èexport“²functionïpdf:eann,‘ Fthen˜the“correspGonding“en•¸ãvironmen“t˜or‘úpartialŽ¡‘en•¸ãvironmen“t–UUis“expGorted.ŽŸ¤‘¸ŽŽŽ‘²Otherwise,‘ôthe–[v‘ÿqÇalue“m¸ãust“bGe›\a“sequence“of“strings˜spGecifying“whic¸ãh“itemsŽ¡‘are–UUto“bGe“propagated“bacš¸ãk.‘qÇThe“follo˜wing“strings“ha˜v˜e“spGecial“meaning:ޤ¤‘$@Ç{ŽŽŽ‘/È.RULE–UU²|“implicit“rules“and“implicit“depGendencies.ŽŸÒ‘$@Ç{ŽŽŽ‘/È.PHONY–UU²|“the“set“of“\phon¸ãy"“target“declarations.Ž¡‘All–fother“strings“are“in¸ãterpreted“as“names‘eof“the“v‘ÿqÇariables“that“need“to“bGeŽŸ ‘propagated‘UUbac¸ãk.ŽŽŽŒ‹I¼· s\È ý®£8‘#ï/pdf:dest (page.73) [@thispage /XYZ @xpos @ypos]Ä6.3.‘ÇEXPOR‘ÿ*ªTING–UUTHE“ENVIR¸ãONMENT’g²73ŽŽ 8G ýÚŸ ‘2F‘ÿ*ªor–%iexample,‘Ymin›%hthe“follo¸ãwing˜(somewhat“arti cial)˜example,‘Ymthe“v‘ÿqÇariablesޤ ‘#ÈA‘†/²and–†<ÈB‘†0²will“bšGe“exp˜orted,‘’uand“the“implicit“rule“will“remain“in“the“en•¸ãvironmen“tŽ¡‘#after–Xthe“section“ends,‘Нbut“the“v‘ÿqÇariable“ÈTMP‘WIJand“the“target“Ètmp_phony“²will“remainŽ¡‘#unc¸ãhanged.ŽŸ!Ñ‘#ÈsectionŽ¡‘2¿÷A–?ý=“1Ž¡‘2¿÷B–?ý=“2Ž¡‘2¿÷TMP–?ý=“$(add“$(A),“$(B))Ž¡¡‘2¿÷.PHONY:‘?ýtmp_phonyŽ¡¡‘2¿÷tmp_phony:Ž¡‘Bîprepare_fooŽ¡¡‘2¿÷%.foo:–?ý%.bar“tmp_phonyŽ¡‘Bîcompute_foo–?ý$(TMP)“$<“$@Ž¡‘2¿÷export–?ýA“B“.RULEŽ‘#ŸÖï8pdf:dest (subsection.6.3.1) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ6.3.1Ž‘)@Exp`ort‘€regionsŽ©uTÎThis›“çfe–ÿ}'atur“e˜was˜intr“o“duc“e“d˜in˜version˜0.9.8.5.Ž¡‘²The–‘ÆÈexport“²directiv¸ãe“došGes‘‘Çnot“need“to“o˜ccur“at“the“end“of‘‘Ça“blo˜c¸ãk.‘'AnŽ¡expGort–Œis›‹v‘ÿqÇalid“from˜the“pGoin¸ãt˜where“it˜is“spGeci ed˜to“the˜end“of˜the“bloGc¸ãk˜inŽ¡whicš¸ãh–Òëit‘Òêis“con˜tained.‘êˆIn‘Òêother“w˜ords,‘òPthe›ÒêexpGort“is“used˜in“the˜program“thatŽ¡follo¸ãws–»it.‘øThis‘ºcan“bšGe“esp˜ecially›ºuseful“for“reducing˜the“amoun¸ãt“of˜coGde“y¸ãouŽ¡ha•¸ãv“e–ª+to“write.‘pHIn“the‘ª*follo¸ãwing“example,‘¿`the“v‘ÿqÇariable“ÈCFLAGS‘ª²is“expGorted“fromŽ¡the–UUbGoth“branc¸ãhes“of“the“conditional.ŽŸ!Ò‘ÿôÈexport‘?ýCFLAGSŽ¡‘ÿôif–?ý$(equal“$(OSTYPE),“Win32)Ž¡‘)ÿèCFLAGS–?ý+=“/DWIN32Ž¡‘ÿôelseŽ¡‘)ÿèCFLAGS–?ý+=“-UWIN32ŽŸ ×òï8pdf:dest (subsection.6.3.2) [@thispage /XYZ @xpos @ypos]ŸÍ6.3.2Ž‘)@Returning–€v‘ÿ@alues“from“exp`orted“regionsަÎThis›“çfe–ÿ}'atur“e˜was˜intr“o“duc“e“d˜in˜version˜0.9.8.5.Ž¡‘²The–ÏÝuse‘ÏÞof“expšGort“do˜es“not›ÏÞa ect“the“v‘ÿqÇalue˜returned“bš¸ãy“a“bloGc˜k.‘EJThe‘ÏÞv‘ÿqÇalue“isŽ¡computed–%½as“usual,‘/Bas“the“v‘ÿqÇalue“of“the“last“statemenš¸ãt“in“the“bloGc˜k,‘/Bignoring“theŽ¡exp•Gort.‘tF‘ÿ*ªor›‡9example,‘“²supp“ose˜w•¸ãe˜wish‘‡:to˜implemen“t˜a˜table‘‡:that˜maps˜stringsŽ¡to–UUunique“inš¸ãtegers.‘qÇConsider“the“follo˜wing“program.ŽŸ!Ñ‘ÿôÈ#–?ýEmpty“mapŽ¡‘ÿôtable–?ý=“$(Map)Ž¡¡‘ÿô#–?ýAdd“an“entry“to“the“tableŽŽŽŒ‹JÉ] s\È ý®£8‘Yï/pdf:dest (page.74) [@thispage /XYZ @xpos @ypos]²74‘}ŽÄCHAPTER–UU6.‘ÇEXPRESSIONS“AND“V‘þãALUESŽŽ 8G ýÚŸ ‘mÿôÈintern(s)‘?ý=ޤ ’‚ÿèexportŽ¡’‚ÿèif–?ý$(table.mem“$s)Ž¡’—ÿÜtable.find($s)Ž¡’‚ÿèelseŽ¡’—ÿÜprivate.i–?ý=“$(table.length)Ž¡’—ÿÜtable–?ý=“$(table.add“$s,“$i)Ž¡’—ÿÜvalue‘?ý$iŽ¡¡‘mÿôintern(foo)Ž¡‘mÿôintern(boo)Ž¡‘mÿôintern(moo)Ž¡‘mÿô#–?ýPrints“"boo“=“1"Ž¡‘mÿôprintln($"boo–?ý=“$(intern“boo)")Ž©33‘Y²Giv¸ãen–•ca“string›•dÈs²,‘»Çthe“function“Èintern“²returns“either“the˜v‘ÿqÇalue“already“assoGciatedŽ¡‘Ywith–)þÈs²,‘2¨or“assigns›)ýa“new˜v‘ÿqÇalue.‘cUIn“the˜latter“case,‘2¨the“table˜is“upGdated˜with“theŽ¡‘Ynew–»av›ÿqÇalue.‘>vThe“Èexport“²at“the“bGeginning“of“the“function“means“that“the“v˜ariableŽ¡‘YÈtable–à ²is“to“bšGe“exp˜orted.‘îThe“bindings“for“Ès“²and“Èi“²are‘à not“exp˜orted,‘»b˜ecauseŽ¡‘Ythey–UUare“priv‘ÿqÇate.Ž¡‘hEv›ÿqÇaluation–‚½in“Èomake“²is“eager.‘ùÿThat“is,‘Žexpressions“are“ev˜aluated“as“soGon“asŽ¡‘Ythey–èìare‘èíencounš¸ãtered“b˜y“the›èíev‘ÿqÇaluator.‘M¤One“e ect“of˜this“is“that˜the“righ¸ãt-hand-Ž¡‘Yside–UUof“a“v›ÿqÇariable“de nition“is“expanded“when“the“v˜ariable“is“de ned.ަ‘mÿôÈosh>–?ýA“=“1Ž¡‘mÿô-–?ý:“"1"Ž¡‘mÿôosh>–?ýA“=“$(A)$(A)Ž¡‘mÿô-–?ý:“"11"ŽŸ34‘h²In–<the“second›< de nition,‘t]ÈA–?ý=“$(A)$(A)²,–<the“righ¸ãt-hand-side˜is“ev‘ÿqÇaluated“ rst,Ž¡‘YproGducing–¡óthe›¡òsequence“È11².‘W Then“the˜v‘ÿqÇariable“ÈA‘¡ß²is˜Îr–ÿ}'e“de ne“d‘ª|²as–¡óthe˜new“v‘ÿqÇalue.Ž¡‘YWhen–ò|comš¸ãbined‘ò}with“dynamic“scoping,‘Bthis“has“man˜y›ò}of“the“same˜propGerties“asŽ¡‘Ycon•¸ãv“en“tional›UUimpGerativ“e˜programming.ަ‘mÿôÈosh>–?ýA“=“1Ž¡‘mÿô-–?ý:“"1"Ž¡‘mÿôosh>–?ýprintA()“=Ž¡’‚ÿèprintln($"A–?ý=“$A")Ž¡‘mÿôosh>–?ýA“=“$(A)$(A)Ž¡‘mÿô-–?ý:“"11"Ž¡‘mÿôosh>‘?ýprintA()Ž¡‘mÿô11ަ‘h²In–¸.this“example,‘Ðäthe“prin¸ãt“function“is‘¸/de ned“in“the“scopGe“of“ÈA².“When“it“isŽ¡‘Ycalled–UUon“the“last“line,“the“dynamic“v‘ÿqÇalue“of“ÈA“²is“È11²,“whicš¸ãh“is“what“is“prin˜ted.Ž¡‘hHo•¸ãw“ev“er,‘6Idynamic›.‡scoping–.†and“impGerativ¸ãe˜programming“should“not˜bGe“con-Ž¡‘Yfused.‘_$The›mfollo¸ãwing–lexample“illustrates˜a“di erence.‘_%The“second“ÈprintA‘_²is“notŽ¡‘Yin–ùXthe“scopGe“of›ùWthe“de nition“ÈA–?ý=“x$(A)$(A)x²,‘ ¾so–ùXit“prin¸ãts˜the“original“v‘ÿqÇalue,‘ ¾È1².ŽŽŽŒ‹KÒf s\È ý®£8‘#ï/pdf:dest (page.75) [@thispage /XYZ @xpos @ypos]Ä6.4.‘ÇOBJECTS’Üf²75ŽŽ 8G ýÚŸ ‘7ÿôÈosh>–?ýA“=“1ޤ ‘7ÿô-–?ý:“"1"Ž¡‘7ÿôosh>–?ýprintA()“=Ž¡‘Lÿèprintln($"A–?ý=“$A")Ž¡‘7ÿôosh>‘?ýsectionŽ¡‘g?ÙA–?ý=“x$(A)$(A)xŽ¡‘g?ÙprintA()Ž¡‘7ÿôx11xŽ¡‘7ÿôosh>‘?ýprintA()Ž¡‘7ÿô1Ž©é#‘2²See–Ãalso›ÄSection“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.7.5) >> >> 7.5ïpdf:eann˜for“further“w•¸ãa“ys˜to‘Ãcon“trol˜the–Ãev‘ÿqÇaluation˜order“throughŽ¡‘#the–UUuse“of“\lazy"“expressions.Ž‘#ŸOBï3pdf:dest (section.6.4) [@thispage /XYZ @xpos @ypos]Ÿ9Ì6.4Ž‘$æcOb‘æfjectsŽŸçÈomake–Ö2²is“an“ob‘Ž8ject-orien•¸ãted›Ö3language.‘ô^Ev“erything–Ö2is“an˜ob‘Ž8ject,‘öiincluding“baseŽ¡v‘ÿqÇalues›)lik•¸ãe‘*n“um“bGers˜and˜strings.‘Z¹In˜man“y˜pro‘Ž8jects,‘ÿthis‘*ma“y˜not˜bGe‘*so˜apparen“tŽ¡bšGecause–‡úmost“ev‘ÿqÇaluation‘‡ùo˜ccurs“in“the“default“toplev¸ãel‘‡ùob‘Ž8ject,‘”£the“ÈPervasivesŽ¡²ob›Ž8ject,–UUand“few“other“ob˜jects“are“ev¸ãer“de ned.Ž¡‘Ho•¸ãw“ev“er,‘Ñ,ob‘Ž8jects›°!pro“vide˜additional–°"means˜for˜data“structuring,‘Ñ+and“in˜someŽ¡cases–UUjudicious“use“of“ob‘Ž8jects“maš¸ãy“simplify“y˜our“pro‘Ž8ject.Ž¡‘Ob‘Ž8jects–Ûîare“de ned“with“the“folloš¸ãwing“syn˜tax.‘‘This“de nes“Èname“²to“bGe“anŽ¡ob‘Ž8ject–UUwith“sev¸ãeral“methoGds“an“v‘ÿqÇalues.ŽŸé$‘ÿôÈname.–?ý=‘n?Á#“+=“may“be“used“as“wellŽ¡‘$¿ëextends–?ýparent-object‘ÿô#“optionalŽ¡‘$¿ëclass–?ýclass-name‘/?å#“optionalŽ¡¡‘$¿ë#‘?ýFieldsŽ¡‘$¿ëX–?ý=“valueŽ¡‘$¿ëY–?ý=“valueŽ¡¡‘$¿ë#‘?ýMethodsŽ¡‘$¿ëf(args)‘?ý=Ž¡‘4âbodyŽ¡‘$¿ëg(arg)‘?ý=Ž¡‘4âbodyަ‘²An–4žÈextends“²directiv¸ãe›4ŸspGeci es“that“this“ob‘Ž8ject“inherits˜from“the“spGeci edŽ¡Èparent-object².‘ 0The–2Îob‘Ž8ject‘2Ímaš¸ãy“ha˜v˜e–2Ían˜y“n˜um˜bGer›2Îof“Èextends˜²directiv¸ães.‘ 0IfŽ¡there–Rëis“more“than›Rêon“Èextends“²directiv¸ãe,‘Sgthen“ elds˜and“methoGds“are“inheritedŽ¡from–Àall“parenš¸ãt“ob‘Ž8jects.‘@+If“there“are“name“con icts,‘ÞDthe“later“de nitions“o˜v˜errideŽ¡the–UUearlier“de nitions.Ž¡‘The–„Èclass›…²directiv¸ãe“is˜optional.‘U×If“spGeci ed,‘Hit“de nes“a˜name“for˜the“ob‘Ž8jectŽ¡that–|;can›|:bGe“used˜in“Èinstanceof˜²opGerations,‘Åôas“w¸ãell˜as“È::˜²scoping“directiv¸ãesŽ¡discussed‘UUbGelo¸ãw.ŽŽŽŒ‹LÛç s\È ý®£8‘Yï/pdf:dest (page.76) [@thispage /XYZ @xpos @ypos]²76‘}ŽÄCHAPTER–UU6.‘ÇEXPRESSIONS“AND“V‘þãALUESŽŽ 8G ýÚŸ ‘h²The›¸àb•Go“dy˜of˜the˜ob‘Ž8ject˜is˜actually‘¸áan˜arbitrary˜program.‘œhThe˜v‘ÿqÇariablesޤ ‘Yde ned–Œin›‹the“b•Go“dy–Œof“the˜ob‘Ž8ject“bGecome“its˜ elds,‘%and“the“functions˜de ned“inŽ¡‘Ythe›UUb•Go“dy˜b“ecome˜its˜metho“ds.Ž‘YŸHŠï3pdf:dest (section.6.5) [@thispage /XYZ @xpos @ypos]Ÿ9Ì6.5Ž‘$æcField–ffand“methos3d“callsŽŸç²The– í elds› îand“methoGds˜of“an˜ob‘Ž8ject“are˜named“using˜Èobject.name“²notation.Ž¡F‘ÿ*ªor–UUexample,“let's“de ne“a“one-dimensional“pGoin¸ãt“v‘ÿqÇalue.Ž©Â"‘¿÷ÈPoint.‘?ý=Ž¡‘îclass‘?ýPointŽ¡¡‘î#–?ýDefault“valueŽ¡‘îx–?ý=“$(int“0)Ž¡¡‘î#–?ýCreate“a“new“pointŽ¡‘înew(x)‘?ý=Ž¡‘/?åx–?ý=“$(int“$(x))Ž¡‘/?åreturn‘?ý$(this)Ž¡¡‘î#–?ýMove“by“oneŽ¡‘îmove()‘?ý=Ž¡‘/?åx–?ý=“$(add“$(x),“1)Ž¡‘/?åreturn‘?ý$(this)Ž¡¡‘¿÷osh>–?ýp1“=“$(Point.new“15)Ž¡‘¿÷osh>–?ývalue“$(p1.x)Ž¡‘¿÷-–?ý:“15“:“IntŽ¡¡‘¿÷osh>–?ýp2“=“$(p1.move)Ž¡‘¿÷osh>–?ývalue“$(p2.x)Ž¡‘¿÷-–?ý:“16“:“Intަ‘²The–´]È$(this)›´\²v‘ÿqÇariable“alw•¸ãa“ys‘´]represen“ts˜the‘´]curren“t˜ob‘Ž8ject.‘ŽÞThe‘´]expres-Ž¡sion–ÉUÈ$(p1.x)›ÉV²fetc¸ãhes“the“v‘ÿqÇalue“of˜the“Èx“² eld“in˜the“Èp1“²ob‘Ž8ject.‘ÍÈThe“expressionŽ¡È$(Point.new‘?ý15)–ƒ?²represen¸ãts›ƒ@a“methoGd˜call“to˜the“Ènew˜²methoGd“of˜the“ÈPointŽ¡²ob›Ž8ject,‘™…whic¸ãh–‹áreturns“a‘‹ânew“ob˜ject›‹âwith“15˜as“its˜initial“v‘ÿqÇalue.‘mThe“expressionŽ¡È$(p1.move)–UU²is“also“a“methošGd“call,“whic¸ãh“returns“a“new“ob‘Ž8ject“at“p˜osition“16.Ž¡‘Note–TNthat“ob‘Ž8jects“are›TOfunctional“|“it“is“not“pGossible“to˜moGdify“the“ elds“orŽ¡methoGds–ïïof›ïðan“existing˜ob‘Ž8ject“in“place.‘OûTh¸ãus,‘7the“Ènew˜²and“Èmove˜²methoGds“returnŽ¡new‘UUob‘Ž8jects.ŽŸHŠï3pdf:dest (section.6.6) [@thispage /XYZ @xpos @ypos]Ÿ9Ì6.6Ž‘$æcMethos3d‘ffo•ŒÌv“errideŽŸç²SuppGose–‹w¸ãe“wish›Œto“create“a“new“ob‘Ž8ject“that˜mo•¸ãv“es›‹b“y˜2˜units,‘ŸYinstead˜of˜justŽ¡1.‘qÇW‘ÿ*ªe–UUcan“do“it“bš¸ãy“o˜v˜erriding“the“Èmove“²methoGd.ŽŽŽŒ‹MåB s\È ý®£8‘#ï/pdf:dest (page.77) [@thispage /XYZ @xpos @ypos]Ä6.7.‘ÇSUPER‘UUCALLS’ñ‡²77ŽŽ 8G ýÚŸ ‘2¿÷ÈPoint2.‘?ý=ޤ ‘Bîextends‘?ý$(Point)Ž¡¡‘Bî#–?ýOverride“the“move“methodŽ¡‘Bîmove()‘?ý=Ž¡‘R?åx–?ý=“$(add“$(x),“2)Ž¡‘R?åreturn‘?ý$(this)Ž¡¡‘2¿÷osh>–?ýp2“=“$(Point2.new“15)Ž¡‘2¿÷osh>–?ýp3“=“$(p2.move)Ž¡‘2¿÷osh>–?ývalue“$(p3.x)Ž¡‘2¿÷-–?ý:“17“:“IntŽ©‘2²Ho•¸ãw“ev“er,›UUb“y˜doing˜this,˜w“e˜ha“v“e˜completely˜replaced˜the˜old˜Èmove˜²methoGd.Ž‘#Ÿ‹ï3pdf:dest (section.6.7) [@thispage /XYZ @xpos @ypos]Ÿ9Ì6.7Ž‘$æcSups3er‘ffcallsŽŸç²SuppšGose–Íw¸ãe“wish“to“de ne“a“new“Èmove“²metho˜d“that“just“calls“the“old“one“t¸ãwice.Ž¡W‘ÿ*ªe–"can“refer›"to“the“old“de nition˜of“mo•¸ãv“e–"using“a˜supGer“call,‘U4whic¸ãh“uses“theŽ¡notation–pÈ$(classname::name‘?ý)².‘[ÐThe›oÈclassname“²should˜bGe“the˜name“ofŽ¡the–ÄœsupšGerclass,‘àmand“Èname“²the“ eld‘Ä›or“metho˜d“to“b˜e“referenced.‘¿›An“alternativ¸ãeŽ¡w•¸ãa“y–UUof“de ning“the“ÈPoint2“²ob‘Ž8ject“is“then“as“follo¸ãws.ަ‘¿÷ÈPoint2.‘?ý=Ž¡‘îextends‘?ý$(Point)Ž¡¡‘î#–?ýCall“the“old“method“twiceŽ¡‘îmove()‘?ý=Ž¡‘/?åthis–?ý=“$(Point::move)Ž¡‘/?åreturn‘?ý$(Point::move)ަ‘²Note– that“the“ rst“call“to‘ È$(Point::move)“²rede nes“the“curren¸ãt“ob‘Ž8ject“(theŽ¡Èthis–½ ²v‘ÿqÇariable).‘©(This“is‘½bšGecause“the“metho˜d“returns“a“new“ob‘Ž8ject,‘whic¸ãh“isŽ¡re-used–UUfor“the“second“call.ŽŽŽŒ‹NíÍ s\È ý®£8‘Yï/pdf:dest (page.78) [@thispage /XYZ @xpos @ypos]²78‘}ŽÄCHAPTER–UU6.‘ÇEXPRESSIONS“AND“V‘þãALUESŽŽ 8G ýÚŽŽŒ‹Oó¦ s\È ý®£8‘#ï/pdf:dest (page.79) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï1pdf:dest (chapter.7) [@thispage /XYZ @xpos @ypos]ŸU5ÊChapter‘Ç 7ŽŸ26ÆAdditional‘ T{languageŽŸexamplesŽŸ45²In–Œxthis“section,‘Ú@w¸ãe'll“explore“the“core“language“through“a“series“of“examplesޤ (examples–UUof“the“build“system“are“the“topic“of“the“Chapter“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.3) >> >> 3ïpdf:eann).ŽŸ 6‘F‘ÿ*ªor–g most›g of“these“examples,‘«vw¸ãe'll˜use“the“Èosh˜²command“in¸ãterpreter.‘¦äF‘ÿ*ªorŽ¡simplicitš¸ãy‘ÿ*ª,–UUthe“v‘ÿqÇalues“prin˜ted“b˜y“Èosh“²ha˜v˜e“bGeen“abbreviated.ŽŸqï3pdf:dest (section.7.1) [@thispage /XYZ @xpos @ypos]ŸnÌ7.1Ž‘$æcStrings–ffand“arraŒÌysŽŸç~²The–ýûbasic“OMakš¸ãe“v‘ÿqÇalues“are“strings,–tsequences,“and–ýûarra˜ys“of“v‘ÿqÇalues.‘T©SequencesŽ¡are›xlik•¸ãe‘xarra“ys˜of˜v‘ÿqÇalues˜separated‘xb“y˜whitespace;‘ _the˜sequences˜are‘xsplit˜onŽ¡demand–UUbš¸ãy“functions“that“expGect“arra˜ys.ŽŸ ‘¿÷Èosh>–?ýX“=“1“2Ž¡‘¿÷-–?ý:“"1“2"“:“SequenceŽ¡‘¿÷osh>–?ýaddsuffix(.c,“$X)Ž¡‘¿÷-–?ý:““:“ArrayŽŸÕ‘²Sometimes›Æèy•¸ãou‘Æçw“an“t˜to–Æçde ne˜an“arra¸ãy˜explicitly–ÿ*ª.‘BNF“or–Æçthis,‘ãduse˜the“È[]˜²brac¸ãk-Ž¡ets–UUafter“the“v‘ÿqÇariable“name,“and“list“eacš¸ãh“arra˜y“en˜try“on“a“single“inden˜ted“line.Ž© ‘¿÷Èosh>–?ýA[]“=Ž¡‘9¿ßHello‘?ýworldŽ¡‘9¿ß$(getenv‘?ýHOME)Ž¡‘¿÷-–?ý:““:“ArrayŽŸÖ‘²One›†‚cen•¸ãtral‘†propGert“y˜of˜arra“ys–†is˜that˜whitespace“in˜the˜elemen¸ãts“is˜signi -Ž¡can¸ãt.‘qÇThis–UUcan“bšGe“useful,“esp˜ecially“for“ lenames“that“con¸ãtain“whitespace.ަ‘¿÷È#–?ýList“the“current“files“in“the“directoryŽ¡‘ÿôosh>–?ýls“-QŽŽŸK’Êÿ²79ŽŽŒ‹PôX s\È ý®£8‘Yï/pdf:dest (page.80) [@thispage /XYZ @xpos @ypos]²80‘MêŒÄCHAPTER–UU7.‘ÇADDITIONAL“LANGUA¸ãGE“EXAMPLESŽŽ 8G ýÚŸ ‘mÿôÈ"fee"– ú"fi"“"foo"“"fum"ޤ ‘mÿôosh>–?ýNAME[]“=Ž¡’—ÿÜHello‘?ýworldŽ¡‘mÿô-–?ý:““:“ArrayŽ¡‘mÿôosh>–?ýtouch“$(NAME)Ž¡‘mÿôosh>–?ýls“-QŽ¡‘mÿô"fee"– ú"fi"“"foo"“"fum"“"Hello‘?ýworld"Ž‘YŸÅJï3pdf:dest (section.7.2) [@thispage /XYZ @xpos @ypos]ŸÌ7.2Ž‘$æcQuoted‘ffstringsŽŸç²A‘gáÈString–h(²is‘h)a“single“v‘ÿqÇalue;‘ñ’whitespace“is“signi can¸ãt“in“a“string.‘ªAStrings“areŽ¡in¸ãtroGduced–ûwith›ûquotes.‘c There“are˜four“kinds“of˜quoted“elemen¸ãts;‘Möthe˜kind“isŽ¡determined–(—b¸ãy›(–the“op•Gening˜quote.‘bÝThe˜sym¸ãb“ols–(—È'˜²(single-quote)“and˜È"“²(double-Ž¡quote)–†Îinš¸ãtroGduce‘†Ïthe“normal“shell-st˜yle“quoted–†Ïelemen˜ts.‘,ïThe“quotation‘†Îsym˜bGolsŽ¡are–<ÛÎinclude‘ÿ}'d‘Ed²in“the“result“string.‘ižV‘ÿ*ªariables“are“alw•¸ãa“ys–<Ûexpanded“within“a“quoteŽ¡of–£this›¢ÿkind.‘ZÇNote“that˜the“Èosh²(1)“(Chapter˜ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.15) >> >> 15ïpdf:eann)“prin¸ãter˜escapGes“double-quotesŽ¡within–1¥the“string;‘ŸÎthese“are“only“for›1¦prin¸ãting,‘h¹they“are“not“part˜of“the“stringŽ¡itself.Ž©Cì‘ÿôÈosh>–?ýA“=“'Hello“"world"'Ž¡‘ÿô-–?ý:“"'Hello“\"world\"'"“:“StringŽ¡‘ÿôosh>–?ýB“=“"$(A)"Ž¡‘ÿô-–?ý:“"\"'Hello“\"world\"'\""“:“StringŽ¡‘ÿôosh>–?ýC“=“'Hello“\'world\''Ž¡‘ÿô-–?ý:“"'Hello“'world''"“:“StringŽŸC둲A‘ˆWsecond–ˆŠkind“of›ˆ‹quote“is“in¸ãtroGduced˜with“the˜È$'“²and“È$"˜²quotes.‘-„The“n•¸ãum“bGerŽ¡of–ˆ>opGening›ˆ=and“closing˜quote“sym¸ãbGols˜is“arbitrary‘ÿ*ª.‘-jThese“quotations˜ha•¸ãv“e‘ˆ>sev“eralŽ¡propGerties:ŽŸœ½‘¸ŽŽŽ‘²The–UUquote“delimiters“are“not“part“of“the“string.ޤN^‘¸ŽŽŽ‘²Bacš¸ãkslash–UUÈ\“²sym˜bGols“within“the“string“are“treated“as“normal“c˜haracters.ŽŸN_‘¸ŽŽŽ‘²The–UUstrings“maš¸ãy“span“sev˜eral“lines.Ž¡‘¸ŽŽŽ‘²V‘ÿ*ªariables–ñ0are“expanded“within›ñ1È$"“²sequences,‘7but˜not“within“È$'“²sequences.ަ‘ÿôÈosh>–?ýA“=“$'''Here“$(IS)“an“''''“\(example\)“string['''ޤ ‘ÿô-–?ý:“"Here“$(IS)“an“''''“\\(example\\)“string["“:“StringŽ¡‘ÿôosh>–?ýB“=“$""""A“is“"$(A)"“""""Ž¡‘ÿô-–?ý:“"A“is“\"Here“$(IS)“an“''''“\\(example\\)“string[\"“"“:“StringŽ¡‘ÿôosh>–?ývalue“$(A.length)Ž¡‘ÿô-–?ý:“38“:“IntŽ¡‘ÿôosh>–?ývalue“$(A.nth“5)Ž¡‘ÿô-–?ý:“"$"“:“StringŽ¡‘ÿôosh>–?ývalue“$(A.rev)Ž¡‘ÿô-–?ý:“"[gnirts“)\\elpmaxe(\\“''''“na“)SI($“ereH"“:“StringŽŽŽŒ‹Qû‚ s\È ý®£8‘#ï/pdf:dest (page.81) [@thispage /XYZ @xpos @ypos]Ä7.3.‘ÇFILES–UUAND“DIRECTORIES’¶£{²81ŽŽ 8G ýÚŸ ‘2Strings–ünand“sequences‘üobšGoth“ha•¸ãv“e–ünthe“prop˜ert¸ãy‘üothat“they“can“b˜e‘üomerged“withޤ ‘#adjacen¸ãt–UUnon-whitespace“text.Ž©ñû‘7ÿôÈosh>–?ýA“=“a“b“cŽ¡‘7ÿô-–?ý:“"a“b“c"“:“SequenceŽ¡‘7ÿôosh>–?ýB“=“$(A).cŽ¡‘7ÿô-–?ý:““:“SequenceŽ¡‘7ÿôosh>–?ývalue“$(nth“2,“$(B))Ž¡‘7ÿô-–?ý:“"c.c"“:“StringŽ¡‘7ÿôosh>–?ývalue“$(length“$(B))Ž¡‘7ÿô-–?ý:“3“:“IntŽŸñú‘2²Arraš¸ãys–m2are“di eren˜t.‘¹_The“elemen˜ts“of“an“arra˜y“are‘m3nev˜er“merged“with“adja-Ž¡‘#cenš¸ãt–}Stext“of“an˜y“kind.‘éÁArra˜ys‘}Tare“de ned“b˜y“adding“square“brac˜k˜ets“È[]“²after“aŽ¡‘#v‘ÿqÇariable–shname“and›sgde ning“the“elemen¸ãts“with˜an“indenš¸ãted“b•Go“dy‘ÿ*ª.‘ËÿThe‘shelemen˜tsŽ¡‘#ma¸ãy–UUinclude“whitespace.ަ‘7ÿôÈosh>–?ýA[]“=Ž¡‘aÿÜa‘?ýbŽ¡‘aÿÜfoo‘?ýbarŽ¡‘7ÿô-–?ý:“Ž¡‘\¿ß:‘?ýArrayŽ¡‘7ÿôosh>–?ýecho“$(A).cŽ¡‘7ÿôa–?ýb“foo“bar“.cŽ¡‘7ÿôosh>–?ývalue“$(A.length)Ž¡‘7ÿô-–?ý:“2“:“IntŽ¡‘7ÿôosh>–?ývalue“$(A.nth“1)Ž¡‘7ÿô-–?ý:“"foo“bar"“:“SequenceŽŸñú‘2²Arra¸ãys– are›quite“helpful˜on“systems“where˜ lenames“often˜con¸ãtain“whites-Ž¡‘#pace.ަ‘7ÿôÈosh>–?ýFILES[]“=Ž¡‘g?Ùc:\Documents–?ýand“Settings\jyh\one“fileŽ¡‘g?Ùc:\Program–?ýFiles\omake\second“fileŽ¡¡‘7ÿôosh>–?ýCFILES“=“$(addsuffix“.c,“$(FILES))Ž¡‘7ÿôosh>–?ýecho“$(CFILES)Ž¡‘7ÿôc:\Documents–?ýand“Settings\jyh\one“file.c“c:\Program“Files\omake\second“file.cŽ‘#Ÿ—äï3pdf:dest (section.7.3) [@thispage /XYZ @xpos @ypos]ŸÇÌ7.3Ž‘$æcFiles–ffand“directoriesŽŸç²OMak¸ãe–º›pro‘Ž8jects›ºœusually“span˜m¸ãultiple“directories,‘íand˜di eren¸ãt“parts˜of“theŽ¡pro‘Ž8ject–µSexecute›µRcommands“in“di eren¸ãt“directories.‘‘ÀThere˜is“a“need“to˜de ne“aŽ¡lo•Gcation-indep“enden¸ãt–UUname“for“a“ le“or“directory‘ÿ*ª.Ž¡‘This–UUis“done“with“the“È$(file›?ý)“²and“È$(dir˜)“²functions.ŽŽŽŒ‹RÇ s\È ý®£8‘Yï/pdf:dest (page.82) [@thispage /XYZ @xpos @ypos]²82‘MêŒÄCHAPTER–UU7.‘ÇADDITIONAL“LANGUA¸ãGE“EXAMPLESŽŽ 8G ýÚŸ ‘h¿÷Èosh>–?ýmkdir“tmpޤ ‘h¿÷osh>–?ýF“=“$(file“fee)Ž¡‘h¿÷osh>‘?ýsection:Ž¡’—ÿÜcd‘?ýtmpŽ¡’—ÿÜecho‘?ý$FŽ¡‘h¿÷../feeŽ¡‘h¿÷osh>–?ýecho“$FŽ¡‘h¿÷feeŽŸë‘h²Note–b«the›bªuse“of˜a“Èsection:˜²to“limit˜the“scopGe˜of“the˜Ècd“²command.‘™ÇTheŽ¡‘Ysection–³itempGorarily“c¸ãhanges“to“the“Ètmp“²directory“where“the“name“of“the“ le“isŽ¡‘YÈ../fee².‘VvOnce›`the–asection“completes,‘Åw¸ãe“are˜still“in“the˜curren¸ãt“directory‘ÿ*ª,‘ÅwhereŽ¡‘Ythe–UUname“of“the“ le“is“Èfee².ŽŸ zÄ‘hOne–’–common“w•¸ãa“y›’—to–’–use“the“ le˜functions“is“to“de ne˜propGer“ le“namesŽ¡‘Yin–šy¸ãour››pro‘Ž8ject“ÈOMakefile²,‘O¬so“that˜references“within“the˜v‘ÿqÇarious“parts˜of“theŽ¡‘Ypro‘Ž8ject–UUwill“refer“to“the“same“ le.Ž©eÔ‘mÿôÈosh>–?ýcat“OMakefileŽ¡‘mÿôROOT–?ý=“$(dir“.)Ž¡‘mÿôTMP‘ ú=–?ý$(dir“tmp)Ž¡‘mÿôBIN‘ ú=–?ý$(dir“bin)Ž¡‘mÿô...Ž‘YŸ"Wï3pdf:dest (section.7.4) [@thispage /XYZ @xpos @ypos]ŸzÄÌ7.4Ž‘$æcIteration,–ffmapping,“and“foreacŒÌhŽŸË•²Most–UUbuiltin“functions“opGerate“transparenš¸ãtly“on“arra˜ys.ަ‘ÿôÈosh>–?ýaddprefix(-D,“DEBUG“WIN32)Ž¡‘ÿô-–?ý:“-DDEBUG“-DWIN32“:“ArrayŽ¡‘ÿôosh>–?ýmapprefix(-I,“/etc“/tmp)Ž¡‘ÿô-–?ý:“-I“/etc“-I“/tmp“:“ArrayŽ¡‘ÿôosh>–?ýuppercase(fee“fi“foo“fum)Ž¡‘ÿô-–?ý:“FEE“FI“FOO“FUM“:“ArrayŽŸë‘²The–8ãÈmapprefix“²and“Èaddprefix“²functions“are“slighš¸ãtly“di eren˜t“(the“ÈaddsuffixŽ¡²and–p%Èmapsuffix“²functions›p$are“similar).‘Â6The“Èaddprefix“²adds“the˜prefex“to“eac¸ãhŽ¡arra•¸ãy›šelemen“t.‘04The˜Èmapprefix˜²doubles–›the˜length˜of˜the“arra¸ãy‘ÿ*ª,‘·óadding˜the˜pre xŽ¡as–UUa“new“arraš¸ãy“elemen˜t“bGefore“eac˜h“of“the“original“elemen˜ts.ŽŸ zÄ‘Evš¸ãen–Šºthough“most‘йfunctions“w˜ork“on“arra˜ys,‘˜there“are“times‘йwhen“y˜ou“willŽ¡w•¸ãan“t–ÛCto“do“it“yš¸ãourself.‘The“Èforeach“²function“is“the“w˜a˜y“to‘ÛBgo.‘‘The“ÈforeachŽ¡²function–cÀhas“t•¸ãw“o–cÀforms,‘g[but“the“form“with“a“b•Go“dy–cÀis‘cÁmost“useful.‘In“this“form,Ž¡the–Äfunction‘Ätakš¸ães“t˜w˜o‘Äargumen˜ts“and›Äa“b•Go“dy‘ÿ*ª.‘AWThe–Äsecond˜argumen¸ãt“is˜an“arra¸ãy‘ÿ*ª,Ž¡and–˜«the›˜¬ rst“is˜a“v‘ÿqÇariable.‘;ËThe“b•Go“dy˜is–˜«ev‘ÿqÇaluated˜once“for˜eacš¸ãh“elemen˜t‘˜¬of“theŽ¡arraš¸ãy‘ÿ*ª,‘T where–!the“v‘ÿqÇariable“is‘!bGound“to“the“elemen˜t.‘ÕLet's“de ne‘!a“function“toŽ¡add–UU1“to“eacš¸ãh“elemen˜t“of“an“arra˜y“of“n˜um˜bGers.ŽŽŽŒ‹S ü s\È ý®£8‘#ï/pdf:dest (page.83) [@thispage /XYZ @xpos @ypos]Ä7.5.‘ÇLAZY‘UUEXPRESSIONS’Ò#|²83ŽŽ 8G ýÚŸ ‘2¿÷Èosh>–?ýadd1(l)“=ޤ ‘aÿÜforeach(i,‘?ý$l):Ž¡‘vÿÐadd($i,‘?ý1)Ž¡‘2¿÷osh>–?ýadd1(7“21“75)Ž¡‘2¿÷-–?ý:“8“22“76“:“ArrayŽ©õã‘2²Sometimes›6y•¸ãou‘5ha“v“e˜an˜arra“y‘5of˜ lenames,‘oand˜y“ou˜w“an“t–5to˜de ne˜a“rule˜forŽ¡‘#eacš¸ãh–of“them.‘[³Rules‘are“not“spGecial,‘ Xy˜ou“can‘de ne“them“an˜ywhere“a“statemen˜tŽ¡‘#is–îdexpGected.‘OvSaš¸ãy“w˜e“w˜an˜t›îcto“write“a˜function“that˜describGes“ho¸ãw“to˜proGcess“eac¸ãhŽ¡‘# le,–UUplacing“the“result“in“the“Ètmp/“²directory‘ÿ*ª.ŽŸõä‘2¿÷ÈTMP–?ý=“$(dir“tmp)Ž¡¡‘2¿÷my-special-rule(files)‘?ý=Ž¡‘Bîforeach(name,‘?ý$(files))Ž¡‘R?å$(TMP)/$(name):‘?ý$(name)Ž¡‘aÿÜprocess–?ý$<“>“$@ަ‘2²Later,‘!in–‹some“other›Œpart“of“the˜pro‘Ž8ject,‘!€w•¸ãe˜ma“y–‹decide˜that“wš¸ãe“w˜an˜t‘Œto“useŽ¡‘#this–UUfunction“to“proGcess“some“ les.ŽŸõä‘2¿÷È#–?ýThese“are“the“files“to“process“in“src/libŽ¡‘2¿÷MY_SPECIAL_FILES[]‘?ý=Ž¡‘G¿ëfee.srcŽ¡‘G¿ëfi.srcŽ¡‘G¿ëfile–?ýwith“spaces“in“its“name.srcŽ¡‘2¿÷my-special-rule($(MY_SPECIAL_FILES))ަ‘2²The–ÈMresult›ÈNof“calling˜Èmy-special-rule“²is˜exactly“the“same˜as“if˜w¸ãe“hadŽ¡‘#written–UUthe“follo¸ãwing“three“rules“explicitly‘ÿ*ª.ŽŸõä‘7ÿôÈ$(TMP)/fee.src:‘?ýfee.srcŽ¡‘Lÿèprocess–?ýfee“>“$@Ž¡‘7ÿô$(TMP)/fi.src:‘?ýfi.srcŽ¡‘Lÿèprocess–?ýfi.src“>“$@Ž¡‘7ÿô$(TMP)/$"file–?ýwith“spaces“in“its“name.src":“$"file“with“spaces“in“its“name.src"Ž¡‘Lÿèprocess–?ý$<“>“$@ަ‘2²Of–x6course,‘¤owriting“these›x5rules“is“not˜nearly“as˜pleasan¸ãt“as“calling˜the“function.Ž¡‘#The–|Ùusual“propšGerties“of“function‘|Øabstraction“giv¸ãe“us“the“usual“b˜ene ts.‘)žThe“co˜deŽ¡‘#is›¹Jless–¹Iredundan¸ãt,‘Ø€and“there˜is˜a“single˜loGcation˜(the“Èmy-special-rule˜²function)Ž¡‘#that–bde nes‘athe“build“rule.‘/ËLater,‘¶ùif“wš¸ãe“w˜an˜t›ato“mo•Gdify/up“date–bthe˜rule,‘¶ùw¸ãe“needŽ¡‘#do–UUso“in“only“one“loGcation.Ž‘#ŸQtï3pdf:dest (section.7.5) [@thispage /XYZ @xpos @ypos]Ÿ9Ì7.5Ž‘$æcLazy‘ffexpressionsŽŸç²Ev‘ÿqÇaluation–(Èin“Èomake›(Dzis“normally“eager.‘ìThat“is,‘]¥expressions˜are“ev‘ÿqÇaluated“asŽ¡soGon–ýas›þthey“are˜encounš¸ãtered“b˜y“the›þev‘ÿqÇaluator.‘­ÀOne“e ect˜of“this“is˜that“theŽ¡righ¸ãt-hand-side–Ô¬of›Ô«a“v‘ÿqÇariable˜de nition“is˜expanded“when˜the“v‘ÿqÇariable˜is“de ned.ŽŽŽŒ‹T s\È ý®£8‘Yï/pdf:dest (page.84) [@thispage /XYZ @xpos @ypos]²84‘MêŒÄCHAPTER–UU7.‘ÇADDITIONAL“LANGUA¸ãGE“EXAMPLESŽŽ 8G ýÚŸ ‘h²There–”³are“t•¸ãw“o›”³w“a“ys‘”²to˜con“trol˜this˜bGeha“vior.‘1’The‘”²È$`(v)˜²form˜in“troGduces˜lazyޤ ‘YbšGeha¸ãvior,‘ï(and–Ðdthe“È$,(v)“²form“restores“eager“b˜ehaš¸ãvior.‘âôConsider“the“follo˜wingŽ¡‘Ysequence.Ž©˜Æ‘mÿôÈosh>–?ýA“=“1Ž¡‘mÿô-–?ý:“"1"“:“SequenceŽ¡‘mÿôosh>–?ýB“=“2Ž¡‘mÿô-–?ý:“"2"“:“SequenceŽ¡‘mÿôosh>–?ýC“=“$`(add“$(A),“$,(B))Ž¡‘mÿô-–?ý:“$(apply“add“$(apply“A)“"2"“:“Sequence)Ž¡‘mÿôosh>–?ýprintln(C“=“$(C))Ž¡‘mÿôC–?ý=“3Ž¡‘mÿôosh>–?ýA“=“5Ž¡‘mÿô-–?ý:“"5"“:“SequenceŽ¡‘mÿôosh>–?ýB“=“6Ž¡‘mÿô-–?ý:“"6"“:“SequenceŽ¡‘mÿôosh>–?ýprintln(C“=“$(C))Ž¡‘mÿôC–?ý=“7ŽŸ˜Ç‘h²The–ýde nition“ÈC–?ý=“$`(add“$(A),“$,(B))‘вde nes–ýa“lazy“application.‘}¿TheŽ¡‘YÈadd–þ©²function›þ¨is“not“applied˜in“this˜case“un¸ãtil“its˜v‘ÿqÇalue“is“needed.‘mÁWithin“thisŽ¡‘Yexpression,‘âthe–ÅJv‘ÿqÇalue“È$,(B)›Å&²spGeci es“that“ÈB˜²is“to“bGe“ev‘ÿqÇaluated“immediately‘ÿ*ª,‘âev¸ãenŽ¡‘Ythough–UUit“is“de ned“in“a“lazy“expression.Ž¡‘hThe–6ƒ rst›6„time“that˜wš¸ãe“prin˜t›6„the“v‘ÿqÇalue“of˜ÈC²,“it˜ev‘ÿqÇaluates“to˜3“since˜ÈA‘6{²is˜1“andŽ¡‘YÈB‘7²is–7¹2.‘ôThe“second“time›7ºw¸ãe“ev‘ÿqÇaluate“ÈC²,˜it“ev‘ÿqÇaluates“to“7˜bšGecause“ÈA‘7²has“b˜eenŽ¡‘Yrede ned–˜Ito›˜HÈ5².‘:¢The“second˜de nition“of˜ÈB‘˜8²has˜no“e ect,‘©since“it˜w¸ãas“ev‘ÿqÇaluatedŽ¡‘Yat–UUde nition“time.Ž‘YŸ ÀYï8pdf:dest (subsection.7.5.1) [@thispage /XYZ @xpos @ypos]ŸÍ7.5.1Ž‘)@A–€larger“example“of“lazy“expressionsŽŸuT²Lazy– aexpressions› bare“not˜ev‘ÿqÇaluated“un¸ãtil˜their“result˜is“needed.‘íSome“pGeople,Ž¡including–ßÕthis›ßÔauthor,‘tfro¸ãwn“on˜o•¸ãv“eruse–ßÕof˜lazy“expressions,‘tmainly˜bGecause“itŽ¡is–udicult“to“knoš¸ãw“when‘vev‘ÿqÇaluation“actually“happGens.‘\|Ho˜w˜ev˜er,‘"–?ýX“=“1Ž¡‘¿÷osh>–?ýsetenv(BOO,“12)Ž¡‘¿÷osh>–?ýif“$(equal“$(OSTYPE),“Win32)Ž¡‘>ÿÜsetenv(BOO,‘?ý17)Ž¡‘>ÿÜX–?ý=“2Ž¡‘¿÷osh>–?ýprintln($X“$(getenv“BOO))Ž¡‘¿÷1‘?ý12ŽŸÚ‘²The–ûÈexport›ú²command“presen¸ãts“a˜w•¸ãa“y‘ûout.‘θIt˜tak“es–ûcare“of˜\expGorting"“aŽ¡v›ÿqÇalue–:„(or“the“en¸ãtire‘:…v˜ariable“en•¸ãvironmen“t)–:„from“an“inner“scopGe‘:…to“an“outer“one.ަ‘¿÷Èosh>–?ýX“=“1Ž¡‘¿÷osh>–?ýsetenv(BOO,“12)Ž¡‘¿÷osh>–?ýif“$(equal“$(OSTYPE),“Win32)Ž¡‘>ÿÜsetenv(BOO,‘?ý17)Ž¡‘>ÿÜX–?ý=“2Ž¡‘>ÿÜexportŽ¡‘¿÷osh>–?ýprintln($X“$(getenv“BOO))Ž¡‘¿÷2‘?ý17ŽŸÚ‘²Exp•Gorts›£Šare‘£‹esp“ecially˜useful˜in˜lo“op˜to‘£‹exp“ort˜v‘ÿqÇalues˜from‘£‹one˜iteration˜ofŽ¡a–UUloGop“to“the“next.ަ‘¿÷È#–?ýOk,“let's“try“to“add“up“the“elements“of“the“arrayŽ¡‘¿÷osh>sum(l)‘?ý=Ž¡‘9¿ßtotal–?ý=“0Ž¡‘9¿ßforeach(i,‘?ý$l)Ž¡‘N¿Ótotal–?ý=“$(add“$(total),“$i)Ž¡‘9¿ßvalue‘?ý$(total)Ž¡‘¿÷osh>sum(1–?ý2“3)Ž¡‘¿÷-–?ý:“0“:“IntŽ¡¡‘¿÷#–?ýOops,“that“didn't“work!Ž¡‘¿÷osh>sum(l)‘?ý=ŽŽŽŒ‹W5Q s\È ý®£8‘#ï/pdf:dest (page.87) [@thispage /XYZ @xpos @ypos]Ä7.7.‘ÇSHELL‘UUALIASES’é1·²87ŽŽ 8G ýÚŸ ‘\¿ßÈtotal–?ý=“0ޤ ‘\¿ßforeach(i,‘?ý$l)Ž¡‘q¿Ótotal–?ý=“$(add“$(total),“$i)Ž¡‘q¿ÓexportŽ¡‘\¿ßvalue‘?ý$(total)Ž¡‘2¿÷osh>sum(1–?ý2“3)Ž¡‘2¿÷-–?ý:“6“:“IntŽŸc{‘2²A–UUÈwhile“²lošGop“is“another“form“of“lo˜op,“with“an“auto-exp˜ort.ŽŸ|[‘7ÿôÈosh>i–?ý=“0Ž¡‘7ÿôosh>total–?ý=“0Ž¡‘7ÿôosh>while–?ý$(lt“$i,“10)Ž¡‘aÿÜtotal–?ý=“$(add“$(total),“$i)Ž¡‘aÿÜi–?ý=“$(add“$i,“1)Ž¡‘7ÿôosh>println($(total))Ž¡‘7ÿô45Ž‘#Ÿ|Øï3pdf:dest (section.7.7) [@thispage /XYZ @xpos @ypos]ŸßÌ7.7Ž‘$æcShell‘ffaliasesŽŸd²Sometimes–Ãyš¸ãou“ma˜y“w˜an˜t“to“de ne“an“Îalias²,‘à]an“OMak˜e“command“that“masquer-Ž¡ades– Šas“a“real“shell› ‰command.‘—fY‘ÿ*ªou“can“do“this“b¸ãy˜adding“y¸ãour“function“as“aŽ¡methoGd–UUto“the“ÈShell“²ob‘Ž8ject.ŽŸ ß‘F‘ÿ*ªor– .an“example,‘²äsuppGose“wš¸ãe‘ -use“the“Èawk“²function“to“prin˜t‘ -out“all“the“com-Ž¡men¸ãts–UUin“a“ le.Ž©|Z‘ÿôÈosh>cat‘?ýcomment.omŽ¡‘ÿô#–?ýComment“functionŽ¡‘ÿôcomments(filename)‘?ý=Ž¡‘)ÿèawk($(filename))Ž¡‘)ÿècase‘?ý$'^#'Ž¡‘>ÿÜprintln($0)Ž¡‘ÿô#–?ýFile“finishedŽ¡‘ÿôosh>include‘?ýcommentŽ¡‘ÿôosh>comments(comment.om)Ž¡‘ÿô#–?ýComment“functionŽ¡‘ÿô#–?ýFile“finishedŽŸc|‘²T‘ÿ*ªo–ùadd“it“as“an“alias,‘4¢add“the“methoGd‘ú(using“+=“to“preserv¸ãe“the“existingŽ¡en¸ãtries–UUin“the“Shell).ަ‘¿÷Èosh>Shell.‘?ý+=Ž¡‘9¿ßprintcom(argv)‘?ý=Ž¡‘N¿Ócomments($(nth–?ý0,“$(argv)))Ž¡‘¿÷osh>printcom–?ýcomment.om“>“output.txtŽ¡‘¿÷osh>cat‘?ýoutput.txtŽŽŽŒ‹X>& s\È ý®£8‘Yï/pdf:dest (page.88) [@thispage /XYZ @xpos @ypos]²88‘MêŒÄCHAPTER–UU7.‘ÇADDITIONAL“LANGUA¸ãGE“EXAMPLESŽŽ 8G ýÚŸ ‘h¿÷È#–?ýComment“functionޤ ‘h¿÷#–?ýFile“finishedŽ©‘h²A‘ׂshell–×åcommand›׿is“passed˜an“arra¸ãy˜of“argumen¸ãts˜Èargv².‘ùxThis˜doGes“ÎnotŽ¡‘Y²include–UUthe“name“of“the“alias.Ž‘YŸÄï3pdf:dest (section.7.8) [@thispage /XYZ @xpos @ypos]ŸÌ7.8Ž‘$æcInput/output–ffredirection“on“the“cŒÌheapŽŸç²As–Wnit›Woturns“out,‘Š6scoping˜also“pro¸ãvides“a“nice˜alternate“w•¸ãa“y–Wnto˜pGerform“redirection.Ž¡SuppGose–=ôyš¸ãou“ha˜v˜e›=õalready“written“a“lot“of˜coGde“that“prin¸ãts“to˜the“standard“outputŽ¡c•¸ãhannel,‘abut›^­no“w˜y“ou˜decide˜y“ou˜w“an“t˜to˜redirect‘^®it.‘ÏOne˜w“a“y˜to˜do˜it˜is˜usingŽ¡the–B‰tecš¸ãhnique“in‘BŠthe“previous“example:‘L0de ne“y˜our“function“as‘BŠan“alias,‘}ÖandŽ¡then–UUuse“shell“redirection“to“place“the“output“where“yš¸ãou“w˜an˜t.Ž¡‘There–^wis›^xan“alternate˜methoGd“that˜is“easier“in˜some“cases.‘/The“v‘ÿqÇariablesŽ¡Èstdin²,‘j¸Èstdout²,‘j·and– Èstderr“²de ne“the‘ standard“I/O‘ÿc¸ãhannels.‘ qèT‘ÿ*ªo“redirectŽ¡output,‘ìrede ne‘Íøthese–Í÷v‘ÿqÇariables“as“yš¸ãou“see“ t.‘Û­Of“course,‘ì y˜ou“w˜ould“normallyŽ¡do–UUthis“in“a“nested“scopGe,“so“that“the“outer“c¸ãhannels“are“not“a ected.ަ‘ÿôÈosh>f()‘?ý=Ž¡‘>ÿÜprintln(Hello‘?ýworld)Ž¡‘ÿôosh>f()Ž¡‘ÿôHello‘?ýworldŽ¡‘ÿôosh>section:Ž¡‘>ÿÜstdout–?ý=“$(fopen“output.txt,“w)Ž¡‘>ÿÜf()Ž¡‘>ÿÜclose($(stdout))Ž¡‘ÿôosh>cat‘?ýoutput.txtŽ¡‘ÿôHello‘?ýworldަ‘²This–ˆ†also“wš¸ãorks“for‘ˆ…shell“commands.‘ ZIf“y˜ou“lik˜e“to‘ˆ…gam˜ble,‘•Ry˜ou“can“try“theŽ¡follo¸ãwing‘UUexample.ަ‘ÿôÈosh>f()‘?ý=Ž¡‘>ÿÜprintln(Hello‘?ýworld)Ž¡‘ÿôosh>f()Ž¡‘ÿôHello‘?ýworldŽ¡‘ÿôosh>section:Ž¡‘>ÿÜstdout–?ý=“$(fopen“output.txt,“w)Ž¡‘>ÿÜf()Ž¡‘>ÿÜcat‘?ýoutput.txtŽ¡‘>ÿÜclose($(stdout))Ž¡‘ÿôosh>cat‘?ýoutput.txtŽ¡‘ÿôHello‘?ýworldŽ¡‘ÿôHello‘?ýworldŽŽŽŒ‹YD€ s\È ý®£8‘#ï/pdf:dest (page.89) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï1pdf:dest (chapter.8) [@thispage /XYZ @xpos @ypos]ŸUÊChapter‘Ç 8ŽŸ2ÆRulesŽŸ4²Rules–³ºare“used“bš¸ãy“OMak˜e‘³»to“spGecify“ho˜w“to“build“ les.‘ŒöA˜t‘³»its“simplest,‘ËSa“ruleޤ has–UUthe“follo¸ãwing“form.Ž©W”‘ÿôÈ:‘?ýŽ¡‘)ÿ莦‘²The–o‘È“²is›othe“name“of“a“ le“to˜bGe“built.‘À{The˜È“²are“aŽ¡list–P»of›Pº les“that˜are“needed˜bGefore“the“Ș²can“bGe˜built.‘p>The“ÈŽ¡²are–Nfa“list“of“inden¸ãted‘Nglines“spGecifying“commands“to“build“the“target.‘#F‘ÿ*ªor“example,Ž¡the–UUfolloš¸ãwing“rule“spGeci es“ho˜w“to“compile“a“ le“Èhello.c².ŽŸW•‘ÿôÈhello.o:‘?ýhello.cŽ¡‘)ÿè$(CC)–?ý$(CFLAGS)“-c“-o“hello.o“hello.cަ‘²This–ý¢rule“states“that‘ý£the“Èhello.o“² le“depGends“on“the“Èhello.c“² le.‘j¯If“theŽ¡Èhello.c–8ã² le“has“c¸ãhanged,‘qÇthe“command“È$(CC)–?ý$(CFLAGS)“-c“-o“hello.o“hello.cŽ¡²is–UUto“bšGe“executed“to“up˜date“the“target“ le“Èhello.o².Ž¡‘A‘fNrule–f‹can“ha•¸ãv“e›fŠan–f‹arbitrary“n•¸ãum“bGer˜of–f‹commands.‘"/The˜individual“commandŽ¡lines–rare“executed“indepGendenš¸ãtly“b˜y“the“command“shell.‘]ÑThe“commands“do“notŽ¡ha•¸ãv“e–%fto›%ebGegin“with“a˜tab,‘.übut“they“m¸ãust“bGe˜inden¸ãted“from“the˜depGendency“line.Ž¡‘In–G}addition“to‘G~normal“v›ÿqÇariables,‘JBthe“follo¸ãwing“spGecial“v˜ariables‘G~ma¸ãy“bGe“usedŽ¡in–UUthe“b•Go“dy–UUof“a“rule.ަ‘¸ŽŽŽ‘È$*²:‘qÇthe–UUtarget“name,“without“a“sux.ޤ¼¢‘¸ŽŽŽ‘È$@²:‘qÇthe–UUtarget“name.ŽŸ¼¡‘¸ŽŽŽ‘È$^²:‘qÇa–UUlist“of“the“sources,“in“alphabGetical“order,“with“duplicates“remo•¸ãv“ed.Ž¡‘¸ŽŽŽ‘È$+²:‘qÇall–UUthe“sources,“in“the“original“order.Ž¡‘¸ŽŽŽ‘È$<²:‘qÇthe–UU rst“source.ަ‘F‘ÿ*ªor–UUexample,“the“abšGo•¸ãv“e–UUÈhello.c“²rule“ma¸ãy“b˜e“simpli ed“as“follo¸ãws.ŽŽŸK’Êÿ89ŽŽŒ‹ZLY s\È ý®£8‘Yï/pdf:dest (page.90) [@thispage /XYZ @xpos @ypos]²90’èôÄCHAPTER‘UU8.‘ÇR¸ãULESŽŽ 8G ýÚŸ ‘mÿôÈhello.o:‘?ýhello.cޤ ’‚ÿè$(CC)–?ý$(CFLAGS)“-c“-o“$@“$<Ž©µZ‘h²Unlik¸ãe‘ƒønormal–ƒ÷v›ÿqÇalues,‘¡the“v˜ariables–ƒøin“a›ƒ÷rule“b•Go“dy˜are–ƒøexpanded“lazily‘ÿ*ª,‘ andŽ¡‘Ybinding›NÍis–NÌdynamic.‘^.The“follo¸ãwing˜function“de nition˜illustrates“some˜of“theŽ¡‘Yissues.ަ‘mÿôÈCLibrary(name,–?ýfiles)“=Ž¡’‚ÿèOFILES–?ý=“$(addsuffix“.o,“$(files))Ž¡¡’‚ÿè$(name).a:‘?ý$(OFILES)Ž¡’—ÿÜ$(AR)–?ýcq“$@“$(OFILES)ަ‘h²This–Üpfunction›Üqde nes“a˜rule“to˜build“a˜program“called˜È$(name)“²from˜a“listŽ¡‘Yof›oÈ.o–p² les.‘öThe“ les˜in“the˜argumen¸ãt˜are“spGeci ed˜without“a˜sux,‘Œvso“the˜ rstŽ¡‘Yline–kÂof“the›kÁfunction“de nition“de nes“a˜v‘ÿqÇariable“ÈOFILES‘k¼²that“adds˜the“È.o“²suxŽ¡‘Yto–a-eac¸ãh“of“the“ le“names.‘•OThe‘a.next“step“de nes“a“rule“to“build“a“target“libraryŽ¡‘YÈ$(name).a–˜R²from›˜Sthe“È$(OFILES)‘˜A² les.‘:¿The˜expression“È$(AR)‘˜A²is˜ev‘ÿqÇaluated“whenŽ¡‘Ythe–function›is“called,‘([and“the˜v‘ÿqÇalue“of˜the“v‘ÿqÇariable“ÈAR‘²is˜tak¸ãen“from˜the“caller'sŽ¡‘YscopGe–UU(see“also“the“section“on“Scoping).Ž‘YŸXÓï3pdf:dest (section.8.1) [@thispage /XYZ @xpos @ypos]Ÿ€Ì8.1Ž‘$æcImplicit‘ffrulesŽŸç²Rules–¢Cma¸ãy›¢Dalso“bGe“implicit.‘X’That˜is,‘õ~the“ les˜ma¸ãy“bšGe“sp˜eci ed‘¢Db¸ãy“wildcardŽ¡patterns.›mDThe–GÌwildcard‘GÍc¸ãharacter“is“È%².˜F‘ÿ*ªor“example,‘Jthe‘GÍfollo¸ãwing“rule“spGeci esŽ¡a–UUdefault“rule“for“building“È.o“² les.ަ‘ÿôÈ%.o:‘?ý%.cŽ¡‘)ÿè$(CC)–?ý$(CFLAGS)“-c“-o“$@“$*.cŽŸµY‘²This–UUrule“is“a“template“for“building“an“arbitrary“È.o“² le“from“a“È.c“² le.Ž¡‘By–ndefault,‘´.implicit“rules›nare“only“used˜for“the“targets˜in“the˜curren¸ãt“di-Ž¡rectory‘ÿ*ª.‘ž8Ho•¸ãw“ev“er›d&subGdirectories–d%included“via˜the“È.SUBDIRS‘d"²rules“inherit˜all“theŽ¡implicit–UUrules“that“are“in“scopGe“(see“also“the“section“on“Scoping).ŽŸXÓï3pdf:dest (section.8.2) [@thispage /XYZ @xpos @ypos]Ÿ€Ì8.2Ž‘$æcBounded–ffimplicit“rulesŽŸç²Implicit–rules› ma¸ãy“spGecify˜the“set“of˜ les“they˜apply“to.‘]¯The“follo•¸ãwing˜syn“tax‘isŽ¡used.ަ‘ÿôÈ:–?ý:“Ž¡‘)ÿ莦‘²F‘ÿ*ªor–UUexample,“the“follo¸ãwing“rule“applies“only“to“the“ les“Èa.o“²and“Èb.o².ަ‘¿÷Èa.o–?ýb.o:“%.o:“%.cŽ¡‘)ÿè$(CC)–?ý$(CFLAGS)“-DSPECIAL“-c“$*.cŽŽŽŒ‹[T6 s\È ý®£8‘#ï/pdf:dest (page.91) [@thispage /XYZ @xpos @ypos]Ä8.3.‘ÇSECTION’ øÙ²91ŽŽ 8G ýÚ‘#ï3pdf:dest (section.8.3) [@thispage /XYZ @xpos @ypos]Ÿ Ì8.3Ž‘$æcsectionŽŸ çï3pdf:dest (fun:section) [@thispage /XYZ @xpos @ypos]¤ ²F–ÿ*ªrequen¸ãtly“,‘ôáthe–ÜÃcommands›ÜÄin“a˜rule“b•Go“dy˜are–ÜÃexpressions˜to“bGe˜ev‘ÿqÇaluated“b¸ãy˜theŽ¡shell.‘qÇÈomake–UU²also“alloš¸ãws“expressions“to“bGe“ev‘ÿqÇaluated“b˜y‘xâÈomake“²itself.Ž¡‘The–`—syn¸ãtax“of“these‘`–\computed“rules"“uses“the“Èsection“²expression.‘“ŒTheŽ¡follo¸ãwing–UUrule“uses“the“Èomake“²IO“functions“to“proGduce“the“target“Èhello.c².Ž©*å‘ÿôÈhello.c:Ž¡‘)ÿèsectionŽ¡‘>ÿÜFP–?ý=“fopen(hello.c,“w)Ž¡‘>ÿÜfprintln($(FP),–?ý$""#include““int“main()“{“printf("Hello“world\n");“}"")Ž¡‘>ÿÜclose($(FP))ަ‘²This–example“uses›the“quotation“È$""...""“²(see“also“Section˜ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.B.1.6) >> >> B.1.6ïpdf:eann)“to“quoteŽ¡the–Çðtext“bGeing“prin¸ãted.‘É™These“quotes“are“not“included“in“the‘Çñoutput“ le.‘ɘTheŽ¡Èfopen²,– Èfprintln²,“and–ò^Èclose“²functions“pGerform“ le“IO‘ò5as“discussed“in“the“IOŽ¡section.Ž¡‘In–Faddition,›‚Kcommands“that‘Fare“function“calls,˜or“spGecial‘Fexpressions,‘‚LareŽ¡in¸ãterpreted–¬Ïcorrectly‘ÿ*ª.‘x7Since“the›¬ÐÈfprintln“²function“can˜tak¸ãe“a˜ le“directly‘ÿ*ª,‘®theŽ¡abšGo•¸ãv“e–UUrule“can“b˜e“abbreviated“as“follo¸ãws.ŽŸ*ä‘ÿôÈhello.c:Ž¡‘$¿ëfprintln($@,–?ý$""#include““int“main()“{“printf("Hello“world\n");“}"")ŽŸÍÈï3pdf:dest (section.8.4) [@thispage /XYZ @xpos @ypos]ŸÇÌ8.4Ž‘$æcsection‘ffruleŽŸ çï8pdf:dest (fun:section rule) [@thispage /XYZ @xpos @ypos]¡²Rules–«?can›«@also“bGe˜computed“using“the˜Èsection‘?ýrule“²form,‘Àºwhere“a˜rule“b•Go“dyŽ¡is–zexpGected“instead“of“an“expression.‘Z~In“the“follo¸ãwing“rule,‘sthe“ le“Èa.c“²is“copiedŽ¡on¸ãto–Ž:the“Èhello.c“² le“if“it“exists,‘Üsotherwise“Èhello.c“²is“created“from“the“ leŽ¡Èdefault.c².ަ‘ÿôÈhello.c:Ž¡‘)ÿèsection‘?ýruleŽ¡‘9¿ßif–?ý$(target-exists“a.c)Ž¡‘IÖhello.c:‘?ýa.cŽ¡‘Y?Ícat–?ýa.c“>“hello.cŽ¡‘9¿ßelseŽ¡‘IÖhello.c:‘?ýdefault.cŽ¡‘Y?Ícp–?ýdefault.c“hello.cŽŸÍÈï3pdf:dest (section.8.5) [@thispage /XYZ @xpos @ypos]ŸÇÌ8.5Ž‘$æcSp•s3ecial‘ffdep“endenciesŽŸ ³çï8pdf:dest (subsection.8.5.1) [@thispage /XYZ @xpos @ypos]Ÿ 34Í8.5.1Ž‘)@:exists:ŽŸuT²In–ÞGsome“cases,‘ƒthe›ÞFcon•¸ãten“ts–ÞGof“a“depGendency“do“not˜matter,‘ƒonly“whether“theŽ¡ le–òßexists“or–òÞnot.‘ JeIn“this›òßcase,‘ZAthe“È:exists:˜²quali er˜can˜bGe“used˜for˜theŽ¡depGendency‘ÿ*ª.ŽŽŽŒ‹\]ú s\È ý®£8‘Yï/pdf:dest (page.92) [@thispage /XYZ @xpos @ypos]²92’èôÄCHAPTER‘UU8.‘ÇR¸ãULESŽŽ 8G ýÚŸ ‘mÿôÈfoo.c:–?ýa.c“:exists:“.flagޤ ‘}¿ëif–?ý$(test“-e“.flag)Ž¡’’¿ß$(CP)–?ýa.c“$@Ž‘YŸƒ‰ï8pdf:dest (subsection.8.5.2) [@thispage /XYZ @xpos @ypos]ŸA`Í8.5.2Ž‘)@:e ects:Ž©|²Some–Ðdcommands“proGduce‘Ðe les“b¸ãy“side-e ect.‘âõF‘ÿ*ªor“example,‘ï(the“Èlatex²(1)“com-Ž¡mand–íproGduces›îa“È.aux“² le˜as“a“side-e ect˜of“proGducing“a˜È.dvi“² le.‘XOIn˜this“case,Ž¡the–ðBÈ:effects:“²quali er“can“bGe“used“to“list‘ðAthe“side-e ect“explicitly‘ÿ*ª.‘BŽÈomake“²isŽ¡careful›¬to‘«a•¸ãv“oid˜sim“ultaneously˜running‘«programs˜that˜ha“v“e‘«o“v“erlapping˜side-Ž¡e ects.ŽŸq‹‘ÿôÈpaper.dvi:–?ýpaper.tex“:effects:“paper.auxŽ¡‘)ÿèlatex‘?ýpaperŽŸçï8pdf:dest (subsection.8.5.3) [@thispage /XYZ @xpos @ypos]Ÿ ÝÒÍ8.5.3Ž‘)@:v‘ÿ@alue:ަ²The–üit“can›ÝbGe“used˜instead“of“other˜kinds“of˜depGendencies.‘ ôF‘ÿ*ªorŽ¡example,–UUthe“follo¸ãwing“rule:ަ‘ÿôÈa:–?ýb“:exists:“cŽ¡‘)ÿècommandsŽŸZÖ‘²is–UUthe“same“asަ‘ÿôÈa:–?ýb“:value:“$(target-exists“c)Ž¡‘)ÿècommandsŽŸZÕ‘²Notes:ŽŸD ‘¸ŽŽŽ‘²The–UUv›ÿqÇalues“are“arbitrary“(they“are“not“limited“to“v˜ariables)ŽŸZÖ‘¸ŽŽŽ‘²The–Àv›ÿqÇalues“are‘À‘ev˜aluated“at“rule“expansion“time,‘ÞRso“expressions“con¸ãtainingŽ¡‘v‘ÿqÇariables–UUlik¸ãe“È$@²,“È$^²,“etc“are“legal.ŽŽŽŒ‹]h† s\È ý®£8‘#ï/pdf:dest (page.93) [@thispage /XYZ @xpos @ypos]Ä8.6.‘Çó%ßê> >> 3.4.3ïpdf:eann.Ž‘YŸrGï8pdf:dest (subsection.8.6.1) [@thispage /XYZ @xpos @ypos]Ÿ 9Í8.6.1Ž‘)@Named–€scanners,“and“the“ó&߆µT cmtt12Ñ:scanner:‘Ídep`endenciesŽŸuT²Sometimes–¤£it“ma¸ãy‘¤¢bšGe“useful“to“sp˜ecify›¤¢explicitly“whic¸ãh“scanner“should˜bGe“used“inŽ¡a–¿Àrule.‘?ëF‘ÿ*ªor“example,‘Ý«wš¸ãe“migh˜t“compile‘¿¿È.c“² les“with“di eren˜t“options,‘Ý«or“(hea˜v˜enŽ¡help–˜us)‘™wš¸ãe“ma˜y›™bGe“using˜bGoth“Ègcc˜²and“the˜Microsoft“Visual˜C++“compiler˜Ècl².Ž¡In–¶$general,‘ÎWthe“target›¶#of“a˜È.SCANNER‘¶ ²is“not“tied˜to“a˜particular“target,‘ÎWand“w¸ãeŽ¡maš¸ãy–UUname“it“as“w˜e“lik˜e.ަ‘ÿôÈ.SCANNER:–?ýscan-gcc-%.c:“%.c“:value:“$(digest-in-path-optional“$(INCLUDES),“$&)Ž¡‘)ÿègcc–?ý-MM“$(addprefix“-I,“$(INCLUDES))“$<Ž¡¡‘ÿô.SCANNER:–?ýscan-cl-%.c:“%.c“:value:“$(digest-in-path-optional“$(INCLUDES),“$&)Ž¡‘)ÿècl–?ý--scan-dependencies-or-something“$(addprefix“/I,“$(INCLUDES))“$<ަ‘²The–B_next›B^step“is“to˜de ne“explicit“scanner˜depGendencies.‘8äThe“È:scanner:Ž¡²depGendency–ïÃis›ïÄused“for˜this.‘OìIn˜this“case,‘the˜scanner“depGendencies˜are“spGeci edŽ¡explicitly‘ÿ*ª.ŽŸ&‘ÿôÈ$(GCC_FILES):–?ý%.o:“%.c“:scanner:“scan-gcc-%cŽ¡‘)ÿègcc‘?ý...Ž¡¡‘ÿô$(CL_FILES):–?ý%.obj:“%.c“:scanner:“scan-cl-%cŽ¡‘)ÿècl‘?ý...ަ‘²Explicit–øãÈ:scanner:“²scanner‘øâspšGeci cation“ma¸ãy“also“b˜e“used“to‘øâstate“that“aŽ¡single–²ùÈ.SCANNER‘²Ð²rule“should“bšGe“used‘²øto“generate“dep˜endencies“for“more“than“oneŽ¡target.‘qÇF‘ÿ*ªor‘UUexample,ŽŸ&‘ÿôÈ.SCANNER:–?ýscan-all-c:“$(GCC_FILES)“:value:“$(digest-in-path-optional“$(INCLUDES),“$&)Ž¡‘)ÿègcc–?ý-MM“$(addprefix“-I,“$(INCLUDES))“$(GCC_FILES)Ž¡¡‘ÿô$(GCC_FILES):–?ý%.o:“%.c“:scanner:“scan-all-cŽ¡‘)ÿè...ަ‘²The›†‚abGo•¸ãv“e˜has˜the‘†adv‘ÿqÇan“tage˜of˜only˜running‘ªÈgcc˜²once‘†and˜a˜disadv‘ÿqÇan“tageŽ¡that–ü±when“a“single“source“ le“c¸ãhanges,‘kall“the“ les“will“end“up“bGeing“re-scanned.ŽŽŽŒ‹_}; s\È ý®£8‘#ï/pdf:dest (page.95) [@thispage /XYZ @xpos @ypos]Ä8.7.‘Ç.DEF‘þãA¸ãUL‘ÿ*ªT’ª¡²95ŽŽ 8G ýÚ‘#ï8pdf:dest (subsection.8.6.2) [@thispage /XYZ @xpos @ypos]Ÿ Í8.6.2Ž‘)@NotesŽŸ™¥²In–-most“cases,‘Acyš¸ãou“w˜on't“need“to“de ne“scanners“of“y˜our“o˜wn.‘¨OThe“standardޤ installation–Gáincludes“default“scanners“(bGoth‘Gàexplicitly“and“implicitly“named“ones)Ž¡for–UUC,“OCaml,“and“LŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX“ les.ŽŸ ƒ‘The–ã‚ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:SCANNER_MODE) >> >> ÈSCANNER‘¡E‰ff&fŽ‘Ç«MODE‘ãd²v‘ÿqÇariableïpdf:eann“con¸ãtrols“the›ãusage“of“implicit˜scanner“depGenden-Ž¡cies.ŽŸ „‘The–¨Lexplicit“È:scanner:“²depGendencies“reduce“the“c¸ãhances“of“scanner“mis-Ž¡spšGeci cations.‘}ðIn–®¸large“complicated“pro‘Ž8jects“it‘®·migh¸ãt“b˜e“a“go˜o˜d“idea“to“setŽ¡ÈSCANNER_MODE›¬²to–ÜÈerror“²and“use“only“the“named“È.SCANNER˜²rules“and“explicitŽ¡È:scanner:‘UU²spGeci cations.ŽŸWï3pdf:dest (section.8.7) [@thispage /XYZ @xpos @ypos]Ÿ!½Ì8.7Ž‘$æc.DEF‘þ33AŒÌUL‘þ¦fTŽ© l²The–#’È.DEFAULT‘#^²target“spGeci es›#“a“target“to˜bGe“built˜b¸ãy“default˜if‘ê¯Èomake˜²is“runŽ¡without›Ytexplicit–Ystargets.‘ÒThe“follo¸ãwing˜rule“instructs˜Èomake“²to˜build“the˜programŽ¡Èhello–UU²b¸ãy“defaultŽŸa‘‘¿÷È.DEFAULT:‘?ýhelloŽŸeÈï3pdf:dest (section.8.8) [@thispage /XYZ @xpos @ypos]Ÿ„Ì8.8Ž‘$æc.SUBDIRSަ²The–wÈ.SUBDIRS‘vɲtarget“is“used“to“spšGecify“a“set“of“sub˜directories“that“are“part“of“theŽ¡pro‘Ž8ject.‘¼¨Eacš¸ãh–nKsubGdirectory“should‘nJha˜v˜e“its“o˜wn–nJÈOMakefile²,‘t‰whic˜h“is‘nKev‘ÿqÇaluatedŽ¡in–UUthe“conš¸ãtext“of“the“curren˜t“en˜vironmen˜t.ŽŸa‘‘¿÷È.SUBDIRS:–?ýsrc“doc“testsŽ©N‘²This–ŠŒrule›Š‹spGeci es“that“the˜ÈOMakefile²s“in“eac¸ãh˜of“the“Èsrc²,–—ÙÈdoc²,“and‘ŠŒÈtestsŽ¡²directories–UUshould“bGe“read.ŽŸ ƒ‘In–Ösome›Õcases,‘?µespGecially“when˜the“ÈOMakefile²s˜are“v¸ãery˜similar“in˜a“largeŽ¡n•¸ãum“bšGer–÷&of“sub˜directories,‘šit“is“incon•¸ãv“enien“t‘÷%to›÷&ha“v“e˜a˜separate˜ÈOMakefile˜²forŽ¡eac¸ãh–Zdirectory‘ÿ*ª.‘XIf“the›[È.SUBDIRS‘G²rule“has˜a“b•Go“dy‘ÿ*ª,‘Àthe˜b“o“dy–Zis˜used“instead˜of“theŽ¡ÈOMakefile².ŽŸa’‘¿÷È.SUBDIRS:–?ýsrc1“src2“src3Ž¡‘îprintln(Subdirectory‘?ý$(CWD))Ž¡‘î.DEFAULT:‘?ýlib.aަ‘²In–ÄÝthis“case,›à¿the“Èsrc1²,˜Èsrc2²,˜and“Èsrc3“² les“do‘ÄÞnot“need“ÈOMakefile²s.‘À_F‘ÿ*ªur-Ž¡thermore,–UUif“one“exists,“it“is“ignored.‘qÇThe“follo¸ãwing“includes“the“ le“if“it“exists.ŽŸa‘‘¿÷È.SUBDIRS:–?ýsrc1“src2“src3Ž¡‘$¿ëif–?ý$(file-exists“OMakefile)Ž¡‘4âinclude‘?ýOMakefileŽ¡‘$¿ë.DEFAULT:‘?ýlib.aŽŽŽŒ‹`‰Ð s\È ý®£8‘Yï/pdf:dest (page.96) [@thispage /XYZ @xpos @ypos]²96’èôÄCHAPTER‘UU8.‘ÇR¸ãULESŽŽ 8G ýÚ‘Yï3pdf:dest (section.8.9) [@thispage /XYZ @xpos @ypos]Ÿ Ì8.9Ž‘$æc.INCLUDEŽŸç²The–©>È.INCLUDE‘©²target“is“lik¸ãe›©=the“Èinclude˜²directiv¸ãe,‘Ë©but˜it“spGeci es˜a“rule˜to“buildޤ the–UU le“if“it“doGes“not“exist.Ž©Œº‘¿÷È.INCLUDE:‘?ýconfigŽ¡‘$¿ëecho–?ý"CONFIG_READ“=“true"“>“configŽ¡¡‘ÿôecho–?ýCONFIG_READ“is“$(CONFIG_READ)ŽŸŒ¹‘²Y‘ÿ*ªou–UUma¸ãy“also“spšGecify“dep˜endencies“to“an“È.INCLUDE“²rule.ަ‘¿÷È.INCLUDE:–?ýconfig:“config.defaultsŽ¡‘îcp–?ýconfig.defaults“configŽŸŒ¹‘²A‘#$w¸ãord–#1of›#2caution“is“in“order“here.‘aThe˜usual“pGolicy“is“used“for“determiningŽ¡when–UUthe“rule“is“out-of-date.‘qÇThe“rule“is“executed“if“anš¸ãy“of“the“follo˜wing“hold.ަ‘¸ŽŽŽ‘²the–UUtarget“doGes“not“exist,ŽŸž°‘¸ŽŽŽ‘²the–UUrule“has“nev¸ãer“bšGeen“executed“b˜efore,ޤž±‘¸ŽŽŽ‘²anš¸ãy–fGof‘fHthe“follo˜wing“ha˜v˜e‘fHc˜hanged“since“the“last›fHtime“the“rule˜w¸ãas“executed,Ž¡‘$@Ç{ŽŽŽ‘/²the‘UUtarget,ŽŸž°‘$@Ç{ŽŽŽ‘/²the‘UUdepGendencies,ŽŸž±‘$@Ç{ŽŽŽ‘/²the‘UUcommands-text.ŽŸŒ¹‘In–eãsome“of“the“cases,‘•Çthis“will“mean‘eâthat“the“rule“is“executed“ev¸ãen“if“the“targetޤ le›ÀÈalready–ÀÇexists.‘´ If“the˜target˜is˜a“ le˜that˜y¸ãou“expGect˜to˜edit˜b¸ãy“hand˜(andŽ¡therefore–…€yš¸ãou“don't“w˜an˜t“to“o˜v˜erwrite“it),‘‘‹y˜ou“should“mak˜e“the“rule“ev‘ÿqÇaluationŽ¡conditional–UUon“whether“the“target“already“exists.ަ‘¿÷È.INCLUDE:–?ýconfig:“config.defaultsŽ¡‘$¿ë#–?ýDon't“overwrite“my“carefully“hand-edited“fileŽ¡‘$¿ëif–?ý$(not“$(file-exists“config))Ž¡‘4âcp–?ýconfig.defaults“configŽŸ²Šï4pdf:dest (section.8.10) [@thispage /XYZ @xpos @ypos]ŸÇÌ8.10Ž‘,ÿü.PHONYŽŸç²A‘L \phon¸ãy"–L#target“is“a“target›L"that“is“not“a“real“ le,‘Mùbut“exists“to“collect˜a“set“ofŽ¡depšGendencies.‘(¶Phon¸ãy–z!targets“are“sp˜eci ed“with“the“È.PHONY‘yê²rule.‘(¶In“the“follo¸ãwingŽ¡example,‘êÆthe–Ð#Èinstall“²target›Ð"doGes“not˜correspGond“to˜a“ le,‘êÆbut“it˜correspGonds“toŽ¡some–·commands“that“should“bGe“run“whenev¸ãer‘·the“Èinstall“²target“is“built“(forŽ¡example,–UUb¸ãy“running“Èomake‘?ýinstall²).ަ‘¿÷È.PHONY:‘?ýinstallŽ¡¡‘¿÷install:‘?ýmyprogram.exeŽ¡‘îcp–?ýmyprogram.exe“/usr/binŽŽŽŒ‹a”} s\È ý®£8‘#ï/pdf:dest (page.97) [@thispage /XYZ @xpos @ypos]Ä8.11.‘ÇR¸ãULE‘UUSCOPING’å_ò²97ŽŽ 8G ýÚ‘#ï4pdf:dest (section.8.11) [@thispage /XYZ @xpos @ypos]Ÿ Ì8.11Ž‘,ÿüRule‘ffscopingŽŸ(z²As–owš¸ãe“ha˜v˜e“men˜tioned“bGefore,‘u…Èomake“²is‘oa“Îsc–ÿ}'op“e“d‘wž²language.‘¿This–opro˜vides“greatޤ exibilit•¸ãy|di eren“t–xÞparts›xßof“the˜pro‘Ž8ject“can˜de ne“di eren¸ãt˜con gurations“with-Ž¡out–0§inš¸ãterfering“with“one“another“(for“example,‘7ýone“part“of“the“pro‘Ž8ject“migh˜t“bGeŽ¡compiled–UUwith“ÈCFLAGS=-O3“²and“another“with“ÈCFLAGS=-g²).ŽŸ # ‘But–×þho¸ãw›×ýis“the“scopGe˜for“a“target“ le˜selected?‘ùÁSuppGose“w¸ãe“are˜building“aŽ¡ le–UUÈdir/foo.o².‘qÇÈomake“²uses“the“follo¸ãwing“rules“to“determine“the“scopGe.Ž©Œ‘¸ŽŽŽ‘²First,‘"Éif›ù³there–ù²is“an˜Îexplicit‘슲rule“for˜building“Èdir/foo.o“²(a“rule˜with“noŽ¡‘wildcards),‘ the–øzcon¸ãtext›ø{for“that“rule˜determines“the˜scopGe“for˜building“theŽ¡‘target.ŽŸŒ‘¸ŽŽŽ‘²Otherwise,‘#ìthe–‘directory›’Èdir/“²m¸ãust˜bGe“part˜of“the˜pro‘Ž8ject.‘]1This“normallyŽ¡‘means–âÊthat“a“con guration“ le‘âÉÈdir/OMakefile“²exists“(although,‘'see“theŽ¡‘È.SUBDIRS‘å²section–å.for“another“w•¸ãa“y–å.to“spGecify‘å/the“ÈOMakefile²).‘LeIn“this“case,Ž¡‘the–UUscopšGe“of“the“target“is“the“scop˜e“at“the“end“of“the“Èdir/OMakefile².ަ‘T‘ÿ*ªo–öÝillustrate›öÞrule“scoping,‘?let's“go˜bac¸ãk“to“the˜example“of“a˜\Hello“w¸ãorld"Ž¡program–ºëwith“t•¸ãw“o–ºë les.‘¢‰Here‘ºìis“an“example“ÈOMakefile“²(the“t•¸ãw“o–ºëde nitions“ofŽ¡ÈCFLAGS–UU²are“for“illustration).ŽŸ¯¡‘ÿôÈ#–?ýThe“executable“is“compiled“with“debuggingŽ¡‘ÿôCFLAGS–?ý=“-gŽ¡‘ÿôhello:–?ýhello_code.o“hello_lib.oŽ¡‘$¿ë$(CC)–?ý$(CFLAGS)“-o“$@“$+Ž¡¡‘ÿô#–?ýRedefine“CFLAGSŽ¡‘ÿôCFLAGS–?ý+=“-O3ަ‘²In–ënthis“pro‘Ž8ject,‘œthe“target“Èhello‘ëo²is“Îexplicit².‘NzThe“scopGe“of“the“Èhello“²target“isŽ¡the–éline›é bGeginning“with“Èhello:²,‘þµwhere“the“v‘ÿqÇalue˜of“ÈCFLAGS‘èò²is“È-g².‘M°The˜other“t•¸ãw“oŽ¡targets,›ÞÈhello_code.o–òand“Èhello_lib.o“²do“not“appGear“as“explicit“targets,˜soŽ¡their–çscopGe›çis“at˜the“end“of˜the“ÈOMakefile²,‘ý where“the˜ÈCFLAGS‘æö²v‘ÿqÇariable˜is“de nedŽ¡to–úÂbšGe“È-g‘?ý-O3².‘bThat“is,‘$Èhello“²will“b˜e“link¸ãed“with‘úÃÈCFLAGS=-g“²and“the“È.o“² lesŽ¡will–UUbGe“compiled“with“ÈCFLAGS=-g‘?ý-O3².ŽŸ # ‘W‘ÿ*ªe–²can›³c¸ãhange“this˜bGehaš¸ãvior“for“an˜y›³of“the“targets˜b¸ãy“spGecifying˜them“asŽ¡explicit–K‚targets.‘nF‘ÿ*ªor“example,‘MysuppGose“w¸ãe“wish“to‘Kƒcompile“Èhello_lib.o“²with“aŽ¡preproGcessor–UUv‘ÿqÇariable“ÈLIBRARY².ŽŸ¯¡‘ÿôÈ#–?ýThe“executable“is“compiled“with“debuggingŽ¡‘ÿôCFLAGS–?ý=“-gŽ¡‘ÿôhello:–?ýhello_code.o“hello_lib.oŽ¡‘$¿ë$(CC)–?ý$(CFLAGS)“-o“$@“$+Ž¡¡‘ÿô#–?ýCompile“hello_lib.o“with“CFLAGS“=“-g“-DLIBRARYŽ¡‘ÿôsectionŽŽŽŒ‹bê s\È ý®£8‘Yï/pdf:dest (page.98) [@thispage /XYZ @xpos @ypos]²98’èôÄCHAPTER‘UU8.‘ÇR¸ãULESŽŽ 8G ýÚŸ ’‚ÿèÈCFLAGS–?ý+=“-DLIBRARYޤ ’‚ÿèhello_lib.o:Ž¡¡‘mÿô#–?ýRedefine“CFLAGSŽ¡‘mÿôCFLAGS–?ý+=“-O3Ž©ÊÏ‘h²In–>”this›>•case,‘¸ãÈhello_lib.o“²is˜also“men¸ãtioned“as˜an“explicit“target,‘¸äin“aŽ¡‘YscopGe–¦ãwhere›¦âÈCFLAGS=-g‘?ý-DLIBRARY².“Since˜no“rule˜b•Go“dy‘¦ãis˜sp“eci ed,‘»Fit˜is‘¦ãcom-Ž¡‘Ypiled–ö±using“the›ö°usual“implicit“rule“for˜building“È.o“² les“(in˜a“con¸ãtext“whereŽ¡‘YÈCFLAGS=-g‘?ý-DLIBRARY²).Ž‘YŸuï9pdf:dest (subsection.8.11.1) [@thispage /XYZ @xpos @ypos]Ÿ €Í8.11.1Ž‘0Scoping–€of“implicit“rulesŽŸuT²Implicit–Çrules“(rules›Æcon¸ãtaining“wildcard“patterns)“are˜Înot‘ Ÿ²global,‘G#they“follo¸ãwŽ¡the–c‹normal“scoping“con•¸ãv“en“tion.‘œjThis›c‹allo“ws˜di eren“t˜parts˜of‘cŒa˜pro‘Ž8ject˜to˜ha“v“eŽ¡di eren¸ãt–“wsets›“vof“implicit˜rules.‘,,If“w•¸ãe˜lik“e,‘¢ÿw“e–“wcan“moGdify˜the“example˜abGo•¸ãv“e‘“wtoŽ¡pro¸ãvide–UUa“new“implicit“rule“for“building“Èhello_lib.o².ަ‘ÿôÈ#–?ýThe“executable“is“compiled“with“debuggingŽ¡‘ÿôCFLAGS–?ý=“-gŽ¡‘ÿôhello:–?ýhello_code.o“hello_lib.oŽ¡‘$¿ë$(CC)–?ý$(CFLAGS)“-o“$@“$+Ž¡¡‘ÿô#–?ýCompile“hello_lib.o“with“CFLAGS“=“-g“-DLIBRARYŽ¡‘ÿôsectionŽ¡‘)ÿè%.o:‘?ý%.cŽ¡‘>ÿÜ$(CC)–?ý$(CFLAGS)“-DLIBRARY“-c“$<Ž¡‘)ÿèhello_lib.o:Ž¡¡‘ÿô#–?ýRedefine“CFLAGSŽ¡‘ÿôCFLAGS–?ý+=“-O3ަ‘²In–®©this“case,‘þthe“target“Èhello_lib.o“²is“built“in‘®ªa“scopGe“with“a“new“im-Ž¡plicit–À‰rule“for“building“È%.o“² les.‘³bThe“implicit“rule“adds“the“È-DLIBRARY‘À+²op-Ž¡tion.‘»This–³üimplicit“rule“is›³ûde ned“only“for“the˜target“Èhello_lib.o²;‘ãOthe“targetŽ¡Èhello_code.o–UU²is“built“as“normal.ŽŸèšï9pdf:dest (subsection.8.11.2) [@thispage /XYZ @xpos @ypos]Ÿ tÍ8.11.2Ž‘0Scoping–€of‘º«Ñ.SCANNER“ÍrulesŽŸuT²Scanner–0rules“are“scopGed‘0the“same“w•¸ãa“y–0as“normal“rules.‘eVIf“the“È.SCANNER‘/÷²rule“isŽ¡explicit–ˆü(con¸ãtaining“no“wildcard›ˆûpatterns),‘•æthen“the“scopGe“of˜the“scan“target“isŽ¡the–”same›“as“the˜the“rule.‘V†If“the˜È.SCANNER‘²rule“is˜implicit,‘îthen˜the“en•¸ãvironmen“tŽ¡is–UUtak¸ãen“from“the“È:scanner:“²depGendency‘ÿ*ª.ަ‘ÿôÈ#–?ýThe“executable“is“compiled“with“debuggingŽ¡‘ÿôCFLAGS–?ý=“-gŽ¡‘ÿôhello:–?ýhello_code.o“hello_lib.oŽŽŽŒ‹c©x s\È ý®£8‘#ï/pdf:dest (page.99) [@thispage /XYZ @xpos @ypos]Ä8.11.‘ÇR¸ãULE‘UUSCOPING’å_ò²99ŽŽ 8G ýÚŸ ‘G¿ëÈ$(CC)–?ý$(CFLAGS)“-o“$@“$+ޤ ¡‘7ÿô#–?ýscanner“for“.c“filesŽ¡‘7ÿô.SCANNER:–?ýscan-c-%.c:“%.cŽ¡‘G¿ë$(CC)–?ý$(CFLAGS)“-MM“$<Ž¡¡‘7ÿô#–?ýCompile“hello_lib.o“with“CFLAGS“=“-g“-DLIBRARYŽ¡‘7ÿôsectionŽ¡‘LÿèCFLAGS–?ý+=“-DLIBRARYŽ¡‘Lÿèhello_lib.o:–?ýhello_lib.c“:scanner:“scan-c-hello_lib.cŽ¡‘\¿ß$(CC)–?ý$(CFLAGS)“-c“$<Ž¡¡‘7ÿô#–?ýCompile“hello_code.c“with“CFLAGS“=“-g“-O3Ž¡‘7ÿôsectionŽ¡‘LÿèCFLAGS–?ý+=“-O3Ž¡‘Lÿèhello_code.o:–?ýhello_code.c“:scanner:“scan-c-hello_code.cŽ¡‘\¿ß$(CC)–?ý$(CFLAGS)“-c“$<Ž©i—‘2²Again,‘G‹this‘Dis–Dfor“illustration|it“is“unlikš¸ãely“y˜ou“w˜ould“need“to“write“a“com-Ž¡‘#plicated– ¬con guration› «lik¸ãe“this!‘ŽËIn“this“case,‘6Áthe˜È.SCANNER‘ ~²rule˜spGeci es“thatŽ¡‘#the–ÀC-compiler›Àshould“bGe˜called“with˜the“È-MM‘¿Û² ag˜to“compute˜depGendencies.‘@F‘ÿ*ªorŽ¡‘#the–ótarget“Èhello_lib.o²,‘$:the“scanner“is‘ôcalled“with“ÈCFLAGS=-g‘?ý-DLIBRARY²,“andŽ¡‘#for–UUÈhello_code.o“²it“is“called“with“ÈCFLAGS=-g‘?ý-O3².Ž‘#Ÿ3ï9pdf:dest (subsection.8.11.3) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ8.11.3Ž‘0Scoping–€for“Ñ.PHONY“ÍtargetsŽŸuT²Phon¸ãy–N5targets›N6(targets“that˜do“not˜correspGond“to“ les)˜are“de ned˜with“aŽ¡È.PHONY:–±Æ²rule.›‡Phon¸ãy“targets“are“scopGed“as“usual.˜The“follo¸ãwing“illustratesŽ¡a–UUcommon“mistak¸ãe,“where“the“È.PHONY“²target“is“declared“Îafter‘hâ²it“is“used.ަ‘ÿôÈ#–?ý!!This“example“is“broken!!Ž¡‘ÿôall:‘?ýhelloŽ¡¡‘ÿôhello:–?ýhello_code.o“hello_lib.oŽ¡‘)ÿè$(CC)–?ý$(CFLAGS)“-o“$@“$+Ž¡¡‘ÿô.PHONY:‘?ýallŽŸi˜‘²This–%´došGesn't“w¸ãork‘%µas“exp˜ected“b˜ecause“the“È.PHONY‘%²declaration“o˜ccurs“to˜oŽ¡late.‘DEThe–›propGer“w•¸ãa“y–›to“write“this“example“is“to“place“the“È.PHONY‘›m²declarationŽ¡ rst.ަ‘ÿôÈ#–?ýPhony“targets“must“be“declared“before“being“usedŽ¡‘ÿô.PHONY:‘?ýallŽ¡¡‘ÿôall:‘?ýhelloŽ¡ŽŽŒ‹d²Ç s\È ý®£8‘Yï0pdf:dest (page.100) [@thispage /XYZ @xpos @ypos]²100’ãóÄCHAPTER‘UU8.‘ÇR¸ãULESŽŽ 8G ýÚŸ ‘mÿôÈhello:–?ýhello_code.o“hello_lib.oޤ ’‚ÿè$(CC)–?ý$(CFLAGS)“-o“$@“$+Ž©ÏE‘h²Phon¸ãy–7Mtargets“are“passed“to“subGdirectories.‘gÄAs“a“practical“matter,‘=Nit“is“wiseŽ¡‘Yto–Žædeclare›Žåall“È.PHONY‘Ž•²targets˜in“y¸ãour“ro•Got˜ÈOMakefile²,‘ÝJb“efore˜an¸ãy‘ŽæÈ.SUBDIRS².Ž¡‘YThis–e”will›e“ensure“that“1)˜they“are“considered˜as“phon¸ãy˜targets“in“eac¸ãh˜of“theŽ¡‘YsubšGdirectories,–UUand“2)“y¸ãou“can“build“them“from“the“pro‘Ž8ject“ro˜ot.ަ‘mÿôÈ.PHONY:–?ýall“install“cleanŽ¡¡‘mÿô.SUBDIRS:–?ýsrc“lib“clibަ‘h²Note–8ãthat“when“a“È.PHONY‘8›²target“is“inherited“b¸ãy“a“subGdirectory“via“a“È.SUBDIRS²,Ž¡‘Ya–‡˜whole“hierarc•¸ãh“y›‡—of–‡˜È.PHONY‘‡d²targets“(that“are˜a“part“of“the“global˜one)“is“created,Ž¡‘Yas–UUdescribšGed“in“Section“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.8.12.2) >> >> 8.12.2ïpdf:eann“b˜elo¸ãw.Ž‘YŸYï4pdf:dest (section.8.12) [@thispage /XYZ @xpos @ypos]ŸÌ8.12Ž‘,ÿüRunning–ffOMakŒÌe“from“a“subs3directoryŽŸç²Running–è Èomake‘?ýfoo›è ²asks“OMak¸ãe˜to“build˜the“ le˜Èfoo“²in˜con¸ãtext“of˜the“ÎwholeŽ¡²pro‘Ž8ject,‘cGev¸ãen›-Iwhen–-Jrunning“from“a“subGdirectory˜of“the“pro‘Ž8ject.‘ù¥Therefore,‘cGifŽ¡Èbar/baz–Ç$²is›Ç#a“regular˜target“(not“a˜È.PHONY‘Dzone),‘ã—then˜running“Èomake‘?ýbar/bazŽ¡²and–UUrunning“È(cd–?ýbar;“omake“baz)–UU²are“usually“equiv‘ÿqÇalen¸ãt.Ž¡‘There–UUare“t•¸ãw“o›UUnotew“orth“y˜exceptions˜to˜the˜abGo“v“e˜rule:Ž©¥Ñ‘¸ŽŽŽ‘²If–N8the“subGdirectory“is›N9not“a“part“of“the“pro‘Ž8ject“(there“is˜no“È.SUBDIRS²)‘N6forŽ¡‘it,–UUthen“OMakš¸ãe“will“complain“if“y˜ou“try“to“run“it“in“that“directory‘ÿ*ª.ŽŸRé‘¸ŽŽŽ‘²If–®a“subGdirectory›¯con¸ãtains“an“ÈOMakeroot“²of˜its“oš¸ãwn,‘ŠEthis“w˜ould“designateŽ¡‘the–<)subGdirectory›<(as“a˜separate“pro‘Ž8ject“(whic¸ãh˜is“usually“a˜bad“idea˜and“isŽ¡‘not‘UUrecommended).ŽŸÅxï9pdf:dest (subsection.8.12.1) [@thispage /XYZ @xpos @ypos]Ÿ €Í8.12.1Ž‘0Phon y–€targets“in“a“sub`directoryŽŸuT²SuppGose–,žyš¸ãou“ha˜v˜e‘,Ÿa“È.PHONY:‘?ýclean“²declared“in“y˜our“rošGot‘,ŸÈOMakefile“²and“b˜othŽ¡the–>roGot›=ÈOMakefile“²and“the˜ÈOMakefile“²in˜some“of“the˜subGdirectories“con¸ãtainŽ¡Èclean:–UU²rules.‘qÇIn“this“caseަ‘¸ŽŽŽ‘²Running–¦ÊÈomake‘?ýclean›¦É²in“the“roGot˜directory“will˜execute“all“the˜rules“(eac¸ãhŽ¡‘in–UUthe“appropriate“directory);ŽŸRè‘¸ŽŽŽ‘²Running–~”Èomake‘?ýclean›~“²in“the“subGdirectory“will˜execute“just“its˜loGcal“one,Ž¡‘as–UUwš¸ãell“as“the“ones“from“the“subGdirectories“of“the“curren˜t“directory‘ÿ*ª.ަ‘The›9¥abGo•¸ãv“e–9¦equally˜applies˜to˜the“built-in˜È.PHONY‘9]²targets,‘rcincluding˜ïmpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (target:.DEFAULT) >> >> È.DEFAULTïpdf:eann².Ž¡Namely‘ÿ*ª,‘> >> Èfile–ùR²functionïpdf:eann).‘SThey“are›ùSthen“translated“to˜strings“for˜the“command“line.‘SThisŽ¡can–Ücause‘Ûsome“unexpšGected“b˜ehaš¸ãvior.‘Å[In“the‘Ûfollo˜wing“example,‘M}the“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:absname) >> >> ÈabsnameŽ¡²functionïpdf:eann–]Îis›]Ïthe“absolute“pathname˜for“the“ le˜Èa²,‘Ÿìbut˜the“rule“still˜prin¸ãts“theŽ¡relativ¸ãe‘UUpathname.Ž©ZD‘ÿôÈ.PHONY:‘?ýdemoŽ¡‘ÿôdemo:–?ý$(absname“a)Ž¡‘)ÿèecho‘?ý$<Ž¡¡‘ÿô#–?ýomake“demoŽ¡‘ÿôaަ‘²There–²úis“arguably“a“go•Go“d–²úreason“for–²ùthis.‘;ªOn“Win32–²úsystems,‘Ósthe“È/“²c¸ãharacterŽ¡is–{íview¸ãed“as“an›{î\option“spGeci er."‘åThe“pathname“separator˜is“the“È\“²c¸ãharacter.Ž¡OMak¸ãe–„@translates›„?the“ lenames“automatically“so˜that“things“w¸ãork˜as“expGectedŽ¡on–UUbGoth“systems.ŽŽŽŒ‹fȺ s\È ý®£8‘Yï0pdf:dest (page.102) [@thispage /XYZ @xpos @ypos]²102’ãóÄCHAPTER‘UU8.‘ÇR¸ãULESŽŽ 8G ýÚŸ ‘h¿÷Èdemo:‘?ýa/bޤ ‘}¿ëecho‘?ý$<Ž¡¡‘h¿÷#–?ýomake“demo“(on“a“Unix“system)Ž¡‘h¿÷a/bŽ¡‘h¿÷#–?ýomake“demo“(on“a“Win32“system)Ž¡‘h¿÷a\bŽ©‘h²Sometimes–]yš¸ãou“ma˜y“wish“that“target“strings“to“bGe“passed“literally“to“theŽ¡‘Ycommands–UUin“the“rule.‘qÇOne“w•¸ãa“y–UUto“do“this“is“to“spGecify“them“literally‘ÿ*ª.ަ‘mÿôÈSRC–?ý=“a/b“$(absname“c/d)Ž¡‘mÿôdemo:‘?ý$(SRC)Ž¡’‚ÿèecho‘?ý$(SRC)Ž¡¡‘mÿô#–?ýomake“demo“(on“a“Win32“system)Ž¡‘mÿôa/b‘?ýc:\...\c\dަ‘h²Alternately‘ÿ*ª,‘µ®y•¸ãou›Åmigh“t–Äwish˜that“ lenames“bGe˜automatically“expanded˜to“ab-Ž¡‘Ysolute–qÄpathnames.‘ÇF‘ÿ*ªor“example,‘xßthis“migh¸ãt›qÃbGe“useful˜when“parsing˜the“OMak¸ãeŽ¡‘Youtput–W2to“loGok“for›W3errors.‘w^F‘ÿ*ªor“this,‘—©y¸ãou“can“use˜the“È--absname“²option“(Sec-Ž¡‘Ytion–!Âïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.20) >> >> A.3.20ïpdf:eann).‘`—If“y¸ãou›!Ãcall“Èomake“²with˜the“È--absname˜²option,‘,all“ lenames˜will“bGeŽ¡‘Yexpanded–UUto“absolute“names.ަ‘mÿôÈ#–?ýomake“--absname“demo“(on“a“Unix“system)Ž¡‘mÿô/home/.../a/b‘?ý/home/.../c/dަ‘h²Alternately‘ÿ*ª,‘–the–‰È--absname“²option“is“scopGed.‘ If“yš¸ãou“w˜an˜t‘‰to“use“it“for“onlyŽ¡‘Ya–UUfew“rules,“yš¸ãou“can“use“the“ïlpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:OMakeFlags) >> >> ÈOMakeFlags“²functionïpdf:eann“to“con˜trol“ho˜w“it“is“applied.ަ‘h¿÷ÈsectionŽ¡‘xîOMakeFlags(--absname)Ž¡‘xîdemo:‘?ýaŽ¡’âecho‘?ý$<Ž¡¡‘h¿÷#–?ýomake“demoŽ¡‘h¿÷/home/.../aަ‘hÇN.B.–UU²The“È--absname“²option“is“currenš¸ãtly“an“expGerimen˜tal“feature.ŽŽŽŒ‹gÖ s\È ý®£8‘#ï0pdf:dest (page.103) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï1pdf:dest (chapter.9) [@thispage /XYZ @xpos @ypos]ŸU`¡ÊChapter‘Ç 9ŽŸ2`¡ÆBase‘ T{libraryŽŸ,Öwï3pdf:dest (section.9.1) [@thispage /XYZ @xpos @ypos]Ÿ Š)Ì9.1Ž‘$æcBuiltin‘ffv‘ÿ™ariablesŽŸ :Pï2pdf:dest (section*.2) [@thispage /XYZ @xpos @ypos]ï9pdf:dest (var:OMAKE_VERSION) [@thispage /XYZ @xpos @ypos]¤ `¡ÇOMAKE‘°¡‰ffs4Ž‘#ÕVERSION‘ ²V‘ÿ*ªersion–UUof“OMak¸ãe.ŽŸž?ï2pdf:dest (section*.3) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (var:STDLIB) [@thispage /XYZ @xpos @ypos]¡ÇSTDLIB‘ ²The–K¡directory›K¢where“the“OMak¸ãe“standard˜library“ les“reside.‘T¬A¸ãtޤ startup,–UUthe“default“v‘ÿqÇalue“is“determined“as“follo¸ãws.ŽŸ!ã‘¸ŽŽŽ‘²The–}v‘ÿqÇalue›|of“the˜ÈOMAKELIB‘n²en•¸ãvironmen“t˜v‘ÿqÇariable,‘žif˜set‘}(m“ust˜con“tain‘}anŽ¡‘absolute–UUpath,“if“set),“otherwiseŽ©‚ƒ‘¸ŽŽŽ‘²On–8ãWindoš¸ãws,‘qÇthe“registry“k˜eys“ÈHKEY_CURRENT_USER\SOFTWARE\MetaPRL\OMake\OMAKELIBŽ¡‘²and–8ãÈHKEY_LOCAL_MACHINE\SOFTWARE\MetaPRL\OMake\OMAKELIB‘8›²are“loGok¸ãedŽ¡‘up–UUand“the“v‘ÿqÇalue“is“used,“if“exist.ަ‘¸ŽŽŽ‘²Otherwise–UUa“compile-time“default“it“used.ŽŸ!ãThe–UUcurrenš¸ãt“default“v‘ÿqÇalue“ma˜y“bGe“accessed“b˜y“running“Èomake‘?ý--versionŽ©ï2pdf:dest (section*.4) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (var:OMAKEPATH) [@thispage /XYZ @xpos @ypos]Ÿ nÚÇOMAKEP–ÿ «A“TH‘ ²An–!“arra¸ãy›!”of“directories˜spGecifying“the˜loGokup“path˜for“theŽ¡Èinclude–Jô²and›JõÈopen“²directiv¸ães“(see“Section˜ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.7) >> >> 4.7ïpdf:eann).‘nQThe˜default“v‘ÿqÇalue“is“an˜arra¸ãy“ofŽ¡t•¸ãw“o›UUelemen“ts˜|˜È.˜²and˜È$(STDLIB)².ŽŸs•ï2pdf:dest (section*.5) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (var:OSTYPE) [@thispage /XYZ @xpos @ypos]Ÿ ‹KÇOSTYPE‘ ²Set–âCto›âDthe“mac•¸ãhine˜arc“hitecture–âCÈomake˜²is“running˜on.‘ ’P¸ãossibleŽ¡v‘ÿqÇalues–‚óare›‚ôÈUnix“²(for˜all“Unix˜vš¸ãersions,‘Ž[including“Lin˜ux›‚ôand“Mac˜OS‘‚èX),“ÈWin32Ž¡²(for›zÀMS-Windo•¸ãws,‘ÄOMak“e˜compiled˜with‘zÁMSV“C++˜or˜Mingw),‘Äand˜ÈCygwinŽ¡²(for–UUMS-Windoš¸ãws,“OMak˜e“compiled“with“Cygwin).ŽŸ@ï2pdf:dest (section*.6) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:SYSNAME) [@thispage /XYZ @xpos @ypos]Ÿ à¡ÇSYSNAME‘ ²The–UUname“of“the“opGerating“system“for“the“currenš¸ãt“mac˜hine.ަï2pdf:dest (section*.7) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (var:NODENAME) [@thispage /XYZ @xpos @ypos]Ÿ nÚÇNODENAME‘ ²The–UUhostname“of“the“currenš¸ãt“mac˜hine.ŽŽŸK’Çÿÿ103ŽŽŒ‹hÝR s\È ý®£8‘Yï0pdf:dest (page.104) [@thispage /XYZ @xpos @ypos]²104’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚ‘Yï2pdf:dest (section*.8) [@thispage /XYZ @xpos @ypos]ï6pdf:dest (var:OS_VERSION) [@thispage /XYZ @xpos @ypos]Ÿ ÇOS‘°¡‰ffs4Ž‘#ÕVERSION‘ ²The–UUopGerating“system“release.ޤÓ]ï2pdf:dest (section*.9) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:MACHINE) [@thispage /XYZ @xpos @ypos]© 0ÞÇMA®9CHINE‘ ²The–UUmacš¸ãhine“arc˜hitecture,“e.g.“Èi386²,“Èsparc²,“etc.ŽŸzï3pdf:dest (section*.10) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (var:HOST) [@thispage /XYZ @xpos @ypos]Ÿ éÁÇHOST‘ ²Same–UUas“ÈNODENAME².ŽŸá–ï3pdf:dest (section*.11) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (var:USER) [@thispage /XYZ @xpos @ypos]Ÿ "¥ÇUSER‘ ²The–UUlogin“name“of“the“user“executing“the“proGcess.Ž¡ï3pdf:dest (section*.12) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (var:HOME) [@thispage /XYZ @xpos @ypos]¤ 0ÝÇHOME‘ ²The–UUhome“directory“of“the“user“executing“the“proGcess.ŽŸÓ^ï3pdf:dest (section*.13) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (var:PID) [@thispage /XYZ @xpos @ypos]¡ÇPID‘ ²The–UUOMak¸ãe“proGcess“id.ŽŸÓ]ï3pdf:dest (section*.14) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:TARGETS) [@thispage /XYZ @xpos @ypos]¦ÇT‘ÿ «AR®9GETS‘ ²The–ª©command-line“target›ªªstrings.‘qÃF‘ÿ*ªor“example,‘¿þif˜OMak¸ãe“is“in-ޤ v•¸ãok“ed–UUwith“the“follo¸ãwing“command“line,ŽŸŠ“‘îÈomake–?ýCFLAGS=1“foo“bar.cŽŸg푲then–UUÈTARGETS“²is“de ned“as“Èfoo‘?ýbar.c².ŽŸá—ï3pdf:dest (section*.15) [@thispage /XYZ @xpos @ypos]ï9pdf:dest (var:BUILD_SUMMARY) [@thispage /XYZ @xpos @ypos]Ÿ "¤ÇBUILD‘°¡‰ffs4Ž‘#ÕSUMMAR‘ÿ «Y‘ ²The–ç«ÈBUILD_SUMMARY‘çD²v‘ÿqÇariable“refers“to‘ç¬the“ le“thatŽ¡Èomake–èJ²uses›èKto“summarize“a“build˜(the“message“that“is˜prinš¸ãted“at“the“v˜ery‘èKend“ofŽ¡a–1kbuild).‘eÎThe“ le“is“emptš¸ãy“when“the‘1jbuild“starts.‘eÏIf“y˜ou‘1jwish“to“add“additionalŽ¡messages–Tto›Tthe“build˜summary‘ÿ*ª,‘T[y¸ãou“can˜edit/moGdify“this˜ le“during˜the“build.Ž© "¥‘F‘ÿ*ªor–r¿example,‘zif“yš¸ãou“w˜an˜t“to“pGoin˜t“out“that“some“action“w˜as“tak˜en,‘zy˜ou“canŽ¡appGend–UUa“message“to“the“build“summary‘ÿ*ª.ŽŸ­7‘¿÷Èfoo:‘?ýbooŽ¡‘$¿ëecho–?ý"The“file“foo“was“built"“>>“$(BUILD_SUMMARY)Ž¡‘$¿ë...build‘?ýfoo...ŽŸá–ï3pdf:dest (section*.16) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:VERBOSE) [@thispage /XYZ @xpos @ypos]¦ÇVERBOSE‘ ²Whether–÷zcertain“commands‘÷yshould“bšGe“v¸ãerb˜ose.‘X5A‘÷Pb˜o˜olean“ agŽ¡that– ôis“Èfalse“²bš¸ãy“default“and“is“set‘ õto“Ètrue“²when“OMak˜e“is“in˜v˜ok˜ed“with“theŽ¡È--verbose‘UU²option.ŽŸæëï3pdf:dest (section.9.2) [@thispage /XYZ @xpos @ypos]Ÿ0ÞÌ9.2Ž‘$æcLogic,–ffBos3olean“functions,“and“conšŒÌtrol“ o˜wŽŸ²BoGolean–²Öv‘ÿqÇalues“in“omakš¸ãe‘²Õare“represen˜ted“b˜y“case-insensitiv˜e“strings.‘ŠIThe“ÎfalseŽ¡²v‘ÿqÇalue– can‘ bGe“represenš¸ãted“b˜y› the“strings˜Èfalse²,–-8Èno²,“Ènil²,“Èundefined‘ ²or˜È0²,“andŽ¡ev¸ãerything–UUelse“is“true.ŽŽŽŒ‹i纠s\È ý®£8‘#ï0pdf:dest (page.105) [@thispage /XYZ @xpos @ypos]Ä9.2.‘ÇLOGIC,–UUBOOLEAN“FUNCTIONS,“AND“CONTRš¸ãOL“FLO˜W‘$˜¼²105ŽŽ 8G ýÚ‘#ï8pdf:dest (subsection.9.2.1) [@thispage /XYZ @xpos @ypos]Ÿ Í9.2.1Ž‘)@notŽŸ*ôï/pdf:dest (fun:not) [@thispage /XYZ @xpos @ypos]¤ Òí‘¿÷È$(not–?ýe)“:“StringŽ© ‘îe–?ý:“StringŽŸK³‘²The–UUÈnot“²function“negates“a“BoGolean“v‘ÿqÇalue.Ž¡‘F‘ÿ*ªor–8ãexample,›qÇÈ$(not‘?ýfalse)“²expands“to“the“string“Ètrue²,˜and“È$(not–?ýhello“world)ަ²expands–UUto“Èfalse².ŽŸ|"ï8pdf:dest (subsection.9.2.2) [@thispage /XYZ @xpos @ypos]Ÿ á&Í9.2.2Ž‘)@equalŽŸ €Hï1pdf:dest (fun:equal) [@thispage /XYZ @xpos @ypos]Ÿ }™‘¿÷È$(equal–?ýe1,“e2)“:“Stringަ‘îe1–?ý:“Stringަ‘îe2–?ý:“StringŽŸK³‘²The–UUÈequal“²function“tests“for“equalitš¸ãy“of“t˜w˜o“v‘ÿqÇalues.Ž¡‘F‘ÿ*ªor–8ãexample“È$(equal–?ýa,“b)–8ã²expands“to“Èfalse²,‘qÇand“È$(equal–?ýhello“world,“hello“world)ަ²expands–UUto“Ètrue².ŽŸ|"ï8pdf:dest (subsection.9.2.3) [@thispage /XYZ @xpos @ypos]Ÿ á&Í9.2.3Ž‘)@andŽŸ*ôï/pdf:dest (fun:and) [@thispage /XYZ @xpos @ypos]¡‘ÿôÈ$(and–?ýe1,“...,“en)“:“Stringަ‘$¿ëe1,–?ý...,“en:“SequenceŽŸK³‘²The–UUÈand“²function“ev‘ÿqÇaluates“to“the“conjunction“of“its“argumen¸ãts.Ž¡‘F‘ÿ*ªor–UUexample,“in“the“follo¸ãwing“coGde,“ÈX“²is“true,“and“ÈY“²is“false.ŽŸ ‘ÿôÈA–?ý=“aަ‘ÿôB–?ý=“bަ‘ÿôX–?ý=“$(and“$(equal“$(A),“a)“true“$(equal“$(B),“b))ަ‘ÿôY–?ý=“$(and“$(equal“$(A),“a)“true“$(equal“$(A),“$(B)))ŽŸÃ?ï8pdf:dest (subsection.9.2.4) [@thispage /XYZ @xpos @ypos]Ÿ š Í9.2.4Ž‘)@orŽŸ*ôï.pdf:dest (fun:or) [@thispage /XYZ @xpos @ypos]¡‘¿÷È$(or–?ýe1,“...,“en)“:“Stringަ‘îe1,–?ý...,“en:“String“SequenceŽŸK³‘²The–UUÈor“²function“ev‘ÿqÇaluates“to“the“disjunction“of“its“argumen¸ãts.Ž¡‘F‘ÿ*ªor–UUexample,“in“the“follo¸ãwing“coGde,“ÈX“²is“true,“and“ÈY“²is“false.ŽŸ ‘ÿôÈA–?ý=“aަ‘ÿôB–?ý=“bަ‘ÿôX–?ý=“$(or“$(equal“$(A),“a)“false“$(equal“$(A),“$(B)))ަ‘ÿôY–?ý=“$(or“$(equal“$(A),“$(B))“$(equal“$(A),“b))ŽŽŽŒ‹jó¦ s\È ý®£8‘Yï0pdf:dest (page.106) [@thispage /XYZ @xpos @ypos]²106’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚ‘Yï8pdf:dest (subsection.9.2.5) [@thispage /XYZ @xpos @ypos]Ÿ Í9.2.5Ž‘)@ifŽŸuTï.pdf:dest (fun:if) [@thispage /XYZ @xpos @ypos]¤ ‘ÿôÈ$(if–?ýe1,“e2[,“e3])“:“valueŽ¡‘$¿ëe1–?ý:“StringŽ¡‘$¿ëe2,–?ýe3“:“valueŽ©ÝR‘²The–™³Èif“²function“represen¸ãts“a“conditional“based‘™²on“a“BoGolean“v‘ÿqÇalue.‘>áF‘ÿ*ªorŽ¡example›UUÈ$(if–?ý$(equal“a,“b),“c,“d)˜²ev‘ÿqÇaluates˜to˜Èd².Ž¡‘Conditionals–UUmaš¸ãy“also“bGe“declared“with“an“alternate“syn˜tax.ަ‘¿÷Èif‘?ýe1Ž¡‘îbody1Ž¡‘¿÷elseif‘?ýe2Ž¡‘îbody2Ž¡‘¿÷...Ž¡‘¿÷elseŽ¡‘îbodynަ‘²If–the“expression›ŽÈe1“²is“not“false,‘then“the“expressions“in˜Èbody1“²are“ev‘ÿqÇaluatedŽ¡and–®cthe›®dresult“is˜returned“as˜the“v‘ÿqÇalue˜of“the˜conditional.‘|òOtherwise,‘§if“Èe1Ž¡²ev›ÿqÇaluates–×’to‘בfalse,‘ø!the“ev˜aluation›בcon•¸ãtin“ues–×’with“the˜Èe2“²expression.‘ø}If˜none“ofŽ¡the–2nconditional›2mexpressions“is˜true,‘9ithen˜the“expressions˜in“Èbodyn˜²are“ev‘ÿqÇaluatedŽ¡and–UUthe“result“is“returned“as“the“v‘ÿqÇalue“of“the“conditional.Ž¡‘There–UUcan“bGe“anš¸ãy“n˜um˜bGer“of“Èelseif“²clauses;“the“Èelse“²clause“is“optional.Ž¡‘Note–_Åthat“eacš¸ãh“branc˜h“of“the“conditional“de nes“its“o˜wn“scopGe,‘baso“v‘ÿqÇariablesŽ¡de ned–ùøin“the“branc¸ãhes›ùùare“normally“not“visible“outside“the˜conditional.‘_°TheŽ¡Èexport–˜¥²command›˜¦ma¸ãy“bGe“used“to˜expGort“the“v‘ÿqÇariables“de ned˜in“a“scopGe.‘;¸F‘ÿ*ªorŽ¡example,‘øYthe‘×¾folloš¸ãwing–׿expression“represen˜ts›×¾a“common˜idiom“for˜de ning“theŽ¡C–UUcompiler“con guration.ަ‘¿÷Èif–?ý$(equal“$(OSTYPE),“Win32)Ž¡‘îCC–?ý=“clŽ¡‘îCFLAGS–?ý+=“/DWIN32Ž¡‘îexportŽ¡‘¿÷elseŽ¡‘îCC–?ý=“gccŽ¡‘îCFLAGS–?ý+=“-g“-O2Ž¡‘îexportŽŸØôï8pdf:dest (subsection.9.2.6) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.2.6Ž‘)@switc• h,‘€matc“hŽŸʨï2pdf:dest (fun:switch) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (fun:match) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–UUÈswitch“²and“Èmatch“²functions“pGerform“pattern“matc¸ãhing.Ž¡‘È$(switch–?ý,“,“,“...,“,“)Ž¡$(match–?ý,“,“,“...,“,“)Ž¡‘²The›ÒÁn•¸ãum“bGer–ÒÂof˜È/˜²pairs“is˜arbitrary‘ÿ*ª.‘ê They“strictly˜alter-Ž¡nate;–UUthe“total“n•¸ãum“bGer–UUof“argumenš¸ãts“to“È“²m˜ust“bšGe“o˜dd.Ž¡‘The–a¯È›a®²is“ev‘ÿqÇaluated“to˜a“string,‘¤Åand“compared˜with“Ȳ.‘–ÔIfŽ¡it–‘matc¸ãhes,‘àthe“result›‘ of“the˜expression“is“Ȳ.‘%'Otherwise“ev‘ÿqÇaluationŽŽŽŒ‹kû s\È ý®£8‘#ï0pdf:dest (page.107) [@thispage /XYZ @xpos @ypos]Ä9.2.‘ÇLOGIC,–UUBOOLEAN“FUNCTIONS,“AND“CONTRš¸ãOL“FLO˜W‘$˜¼²107ŽŽ 8G ýÚŸ ‘#con•¸ãtin“ues–]õwith›]ôthe“remaining“patterns˜un¸ãtil“a˜matc¸ãh“is“found.‘‹¦If˜no“patternޤ ‘#matcš¸ãhes,–UUthe“v‘ÿqÇalue“is“the“empt˜y“string.Ž¡‘2The–BÖÈswitch“²function›B×uses“string“comparison“to“compare˜the“argumen¸ãt“withŽ¡‘#the–ðûpatterns.‘PTF‘ÿ*ªor“example,‘ the“follo¸ãwing“expression“de nes“the“ÈFILE‘ðâ²v‘ÿqÇariable“toŽ¡‘#bšGe–ˆëeither“Èfoo²,–•ÑÈbar²,“or–ˆëthe‘ˆìempt¸ãy“string,‘•Ñdep˜ending“on“the“v‘ÿqÇalue‘ˆìof“the“ÈOSTYPEŽ¡‘#²v‘ÿqÇariable.Ž©&‘7ÿôÈFILE–?ý=“$(switch“$(OSTYPE),“Win32,“foo,“Unix,“bar)ŽŸ&‘2²The–³éÈmatch›³è²function“uses˜regular“expression“patterns˜(see“the˜Ègrep“²function).Ž¡‘#If–‡Öa“matc¸ãh“is“found,‘Ôvthe‘‡Õv‘ÿqÇariables“È$1,–?ý$2,“...–‡Ö²are“bGound“to“the“substringsŽ¡‘#matc•¸ãhed›Œ”bGet“w“een–Œ“È\(˜²and“È\)˜²delimiters.‘ƒThe˜È$0“²v‘ÿqÇariable˜con¸ãtains“the˜en¸ãtireŽ¡‘#matc¸ãh,‘ÊŠand›§ØÈ$*–§×²is“an˜arra¸ãy“of“the˜matc¸ãhed“substrings.‘7óto“the˜matc¸ãhed“substrings.ަ‘7ÿôÈFILE–?ý=“$(match“foo_xyz/bar.a,“foo_\\\(.*\\\)/\\\(.*\\\)\.a,“foo_$2/$1.o)ŽŸ&‘2²The– Èswitch› ²and“Èmatch“²functions˜also“ha•¸ãv“e˜an– alternate“(more˜usable)“form.ަ‘2¿÷Èmatch‘?ýeŽ¡‘2¿÷case‘?ýpattern1Ž¡‘Bîbody1Ž¡‘2¿÷case‘?ýpattern2Ž¡‘Bîbody2Ž¡‘2¿÷...Ž¡‘2¿÷defaultŽ¡‘Bîbodydަ‘2²If–]¼the›]½v‘ÿqÇalue“of“expression˜Èe“²matc¸ãhes˜Èpattern_i“²and“no˜previous“pattern,Ž¡‘#then–g[Èbody_i›gZ²is“ev‘ÿqÇaluated˜and“returned˜as“the˜result“of˜the“Èmatch².‘§×The“ÈswitchŽ¡‘#²function–Ýuses“string›ÝŽcomparison;‘¡¬the“Èmatch“²function˜uses“regular“expressionŽ¡‘#matc¸ãhing.ŽŸ&‘2¿÷Èmatch‘?ý$(FILE)Ž¡‘2¿÷case‘?ý$".*\(\.[^\/.]*\)"Ž¡‘Bîprintln(The–?ýstring“$(FILE)“has“suffix“$1)Ž¡‘2¿÷defaultŽ¡‘Bîprintln(The–?ýstring“$(FILE)“has“no“suffix)Ž‘#Ÿ¹cï8pdf:dest (subsection.9.2.7) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.2.7Ž‘)@tryŽŸʨï/pdf:dest (fun:try) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷ÈtryŽ¡‘îtry-bodyŽ¡‘¿÷catch‘?ýclass1(v1)Ž¡‘îcatch-bodyŽ¡‘¿÷when‘?ýexprŽ¡‘îwhen-bodyŽ¡‘¿÷...Ž¡‘¿÷finallyŽ¡‘îfinally-bodyŽŽŽŒ‹lU s\È ý®£8‘Yï0pdf:dest (page.108) [@thispage /XYZ @xpos @ypos]²108’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚŸ ‘h²The–ÎÈtry“²form“is‘Îused“for“exception“handling.‘Ü First,‘ìGthe“expressions“in“theޤ ‘YÈtry-body–UU²are“ev‘ÿqÇaluated.Ž¡‘hIf–Ðcev›ÿqÇaluation“results“in“a“v˜alue“Èv“²without“raising“an“exception,‘/&then“theŽ¡‘Yexpressions–ËCin“the“Èfinally-body“²are“ev›ÿqÇaluated“and“the“v˜alue“Èv“²is“returned“asŽ¡‘Ythe‘UUresult.Ž¡‘hIf–ÏÓev‘ÿqÇaluation“of“the“Ètry-body“²results“in“a“exception“ob‘Ž8ject‘ÏÔÈobj²,‘îrthe“ÈcatchŽ¡‘Y²clauses–ÕYare›ÕXexamined“in˜order.‘GWhen˜examining“Ècatch˜²clause“Ècatch‘?ýclass(v)²,Ž¡‘Yif–E[the“exception“ob‘Ž8ject“Èobj“²is“an“instance‘E\of“the“class“name“Èclass²,‘Hthe“v‘ÿqÇariableŽ¡‘YÈv–p´²is“bGound›pµto“the“exception“ob‘Ž8ject,‘wand“the“expressions“in˜the“Ècatch-body“²areŽ¡‘Yev‘ÿqÇaluated.Ž¡‘hIf–¦èa›¦éÈwhen“²clause˜is“encoun¸ãtered“while˜a“Ècatch˜²b•Go“dy–¦èis“bGeing˜ev‘ÿqÇaluated,‘»MtheŽ¡‘Ypredicate–eËÈexpr“²is›eÌev‘ÿqÇaluated.‘£)If“the“result˜is“true,‘ièev‘ÿqÇaluation˜con•¸ãtin“ues–eËwith“theŽ¡‘Yexpressions–¼in“the“Èwhen-body².‘¦ Otherwise,‘ÕÇthe“next“Ècatch“²clause“is“consideredŽ¡‘Yfor‘UUev‘ÿqÇaluation.Ž¡‘hIf–Y9ev‘ÿqÇaluation›Y:of“a“Ècatch-body˜²or“Èwhen-body“²completes“successfully‘ÿ*ª,‘‹¦returningŽ¡‘Ya–#Ûv‘ÿqÇalue›#ÜÈv²,‘W}without“encoun¸ãtering“another˜Èwhen“²clause,‘W}then“the˜expressions“inŽ¡‘Ythe–UUÈfinally-body“²are“ev›ÿqÇaluated“and“the“v˜alue“Èv“²is“returned“as“the“result.Ž¡‘hThere–UUcan“bGe“anš¸ãy“n˜um˜bGer“of“Ècatch“²clauses;“the“Èfinally“²clause“is“optional.Ž‘Y©°ï8pdf:dest (subsection.9.2.8) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.2.8Ž‘)@raiseŽŸuTï1pdf:dest (fun:raise) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èraise‘?ýexnŽ¡‘îexn–?ý:“ExceptionŽŸ3à‘²The–[ïÈraise“²function“raises“an“exception.‘…–The“Èexn“²ob›Ž8ject“can“bGe“an¸ãy“ob˜ject.Ž¡Ho•¸ãw“ev“er,–UUthe“normal“con•¸ãv“en“tion–UUis“to“raise“an“ïkpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (obj:Exception) >> >> ÈException“²ob‘Ž8jectïpdf:eann.Ž¡‘If–…the›…€exception“is“nev•¸ãer˜caugh“t,‘‘Œthe–…whole˜ob‘Ž8ject“will“b•Ge˜vš¸ãerb“osely‘…prin˜tedŽ¡in–k@the›k?error“message.‘³†Ho•¸ãw“ev“er,‘p»if˜the–k@ob‘Ž8ject˜is“an˜ÈException“²one˜and“con¸ãtainsŽ¡a–UUÈmessage“² eld,“only“that“ eld“will“bGe“included“in“the“error“message.ަï8pdf:dest (subsection.9.2.9) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.2.9Ž‘)@exitŽ©uTï0pdf:dest (fun:exit) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èexit(code)Ž¡‘îcode–?ý:“IntŽŸ3à‘²The–UUÈexit“²function“terminates“Èomake“²abnormally‘ÿ*ª.Ž¡‘È$(exit‘?ý)Ž¡‘²The–Èexit›²function“tak¸ães“one˜inš¸ãteger“argumen˜t,‘ãwhic˜h“is“exit‘coGde.‘WXNon-zeroŽ¡v‘ÿqÇalues–UUindicate“abnormal“termination.ŽŸ VÌï9pdf:dest (subsection.9.2.10) [@thispage /XYZ @xpos @ypos]ŸÍ9.2.10Ž‘0de nedަï3pdf:dest (fun:defined) [@thispage /XYZ @xpos @ypos]¡‘¿÷È$(defined–?ýsequence)“:“StringŽ¡‘îsequence–?ý:“SequenceŽŸ3à‘²The–ÊýÈdefined›Êü²function“test“whether˜all“the˜v‘ÿqÇariables“in“the˜sequence“areŽ¡currenš¸ãtly–Hmde ned.‘mzF‘ÿ*ªor‘Hnexample,‘Kthe“follo˜wing›HncoGde“de nes˜the“ÈX‘Hk²v‘ÿqÇariable“if˜it“isŽ¡not–UUalready“de ned.ŽŽŽŒ‹m7 s\È ý®£8‘#ï0pdf:dest (page.109) [@thispage /XYZ @xpos @ypos]Ä9.2.‘ÇLOGIC,–UUBOOLEAN“FUNCTIONS,“AND“CONTRš¸ãOL“FLO˜W‘$˜¼²109ŽŽ 8G ýÚŸ ‘7ÿôÈif–?ý$(not“$(defined“X))ޤ ‘G¿ëX–?ý=“a“b“cŽ¡‘G¿ëexportŽ©]8‘2²It–UUis“acceptable“to“use“quali ed“names.ŽŸt†‘7ÿôÈ$(defined‘?ýX.a.b)Ž¡‘7ÿô$(defined‘?ýpublic.X)Ž‘#Ÿé©ï9pdf:dest (subsection.9.2.11) [@thispage /XYZ @xpos @ypos]Ÿ ÞjÍ9.2.11Ž‘0de ned-en vŽŸeÕï7pdf:dest (fun:defined-env) [@thispage /XYZ @xpos @ypos]Ÿ N‘¿÷È$(defined-env–?ýsequence)“:“StringŽ¡‘îsequence–?ý:“Stringަ‘²The–%íÈdefined-env“²function“tests“whether“a“v‘ÿqÇariable‘%îis“de ned“as“part“of“theŽ¡proGcess‘UUen•¸ãvironmen“t.ŽŸ N‘F‘ÿ*ªor–œ¹example,‘®’the“folloš¸ãwing“coGde“adds“the‘œºÈ-g“²compile“option“if“the“en˜viron-Ž¡men¸ãt–UUv‘ÿqÇariable“ÈDEBUG“²is“de ned.ŽŸt†Èif–?ý$(defined-env“DEBUG)Ž¡‘ÿôCFLAGS–?ý+=“-gŽ¡‘ÿôexportŽŸé©ï9pdf:dest (subsection.9.2.12) [@thispage /XYZ @xpos @ypos]Ÿ ÞjÍ9.2.12Ž‘0geten vŽŸ »)ï2pdf:dest (fun:getenv) [@thispage /XYZ @xpos @ypos]Ÿ Áú‘¿÷È$(getenv–?ýname)“:“StringŽ¡‘¿÷$(getenv–?ýname,“default)“:“Stringަ‘²The–šÈgetenv›š²function“gets“the˜v‘ÿqÇalue“of“a˜v‘ÿqÇariable“from“the˜proGcess“en¸ãviron-Ž¡menš¸ãt.‘qÇThe–UUfunction“tak˜es“one“or“t˜w˜o“argumen˜ts.Ž© N‘In–úÄthe›úÃsingle“argumen¸ãt“form,‘ áan˜exception“is“raised˜if“the“v–ÿqÇariable˜v“ariable‘úÄisŽ¡not–…™de ned›…˜in“the“en•¸ãvironmen“t.‘,ˆIn–…™the“t•¸ãw“o-argumen“t–…™form,‘¯%the˜second“argumen¸ãtŽ¡is–UUreturned“as“the“result“if“the“v‘ÿqÇalue“is“not“de ned.ަ‘F‘ÿ*ªor–b{example,‘“ the“follo¸ãwing›bzcoGde“de nes˜the“v‘ÿqÇariable˜ÈX‘b=²to“bGe˜a“space-separatedŽ¡list–8ãof“elemenš¸ãts“of“the“ÈPATH‘8›²en˜vironmen˜t“v‘ÿqÇariable“if“it“is“de ned,‘qÇand“to“È/bin‘?ý/usr/binŽ¡²otherwise.ŽŸt†‘ÿôÈX–?ý=“$(split“$(PATHSEP),“$(getenv“PATH,“/bin:/usr/bin))ŽŸ]8‘²Y‘ÿ*ªou–UUma¸ãy“also“use“the“alternate“form.ŽŸ]8‘?ñÈgetenv(NAME)Ž¡‘/?ådefaultŽŽŽŒ‹nm s\È ý®£8‘Yï0pdf:dest (page.110) [@thispage /XYZ @xpos @ypos]²110’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚ‘Yï9pdf:dest (subsection.9.2.13) [@thispage /XYZ @xpos @ypos]Ÿ Í9.2.13Ž‘0seten vŽ©w«ï2pdf:dest (fun:setenv) [@thispage /XYZ @xpos @ypos]Ÿ ¸‘¿÷Èsetenv(name,‘?ývalue)ޤ ‘îname–?ý:“StringŽ¡‘îvalue–?ý:“StringŽŸ ß‘²The–ç²Èsetenv›ç³²function“sets˜the“v‘ÿqÇalue˜of“a˜v‘ÿqÇariable“in˜the“proGcess˜en•¸ãvironmen“t.Ž¡En•¸ãvironmen“t–UUv›ÿqÇariables“are“scopGed“lik¸ãe“normal“v˜ariables.ŽŸû°ï9pdf:dest (subsection.9.2.14) [@thispage /XYZ @xpos @ypos]Ÿ ñÍ9.2.14Ž‘0unseten vަï4pdf:dest (fun:unsetenv) [@thispage /XYZ @xpos @ypos]Ÿ ¸‘¿÷Èunsetenv(names)Ž¡‘înames–?ý:“String“ArrayŽ© ß‘²The–·NÈunsetenv“²function›·Mremo•¸ãv“es–·Nsome“v‘ÿqÇariable“de nitions˜from“the“proGcessŽ¡en•¸ãvironmen“t.‘qÇEn“vironmen“t–UUv›ÿqÇariables“are“scopGed“lik¸ãe“normal“v˜ariables.ŽŸû±ï9pdf:dest (subsection.9.2.15) [@thispage /XYZ @xpos @ypos]Ÿ ðÍ9.2.15Ž‘0get-registryŽŸÌÿï8pdf:dest (fun:get-registry) [@thispage /XYZ @xpos @ypos]Ÿ ­d‘¿÷Èget-registry(hkey,–?ýkey,“field)“:“StringŽ¡‘¿÷get-registry(hkey,–?ýkey,“field,“default)“:“StringŽ¡‘$¿ëhkey–?ý:“StringŽ¡‘$¿ëkey–?ý:“StringŽ¡‘$¿ëfield–?ý:“Stringަ‘²The–½(Èget-registry“²function“retriev¸ães“a“string‘½)v‘ÿqÇalue“from“the“system“registryŽ¡on–UUWin32.‘qÇOn“other“arc¸ãhitectures,“there“is“no“registry‘ÿ*ª.ŽŸ ¸‘The›“Èhive–“²(I‘’áthink“that˜is“the˜righš¸ãt“w˜ord),‘¹íindicates‘“whic˜h“part›“of“the˜registryŽ¡to–UUuse.‘qÇIt“should“bGe“one“of“the“follo¸ãwing“v‘ÿqÇalues.ަ‘¸ŽŽŽ‘ÈHKEY_CLASSES_ROOTޤ ß‘¸ŽŽŽ‘ÈHKEY_CURRENT_CONFIGŽ¡‘¸ŽŽŽ‘ÈHKEY_CURRENT_USERŽ¡‘¸ŽŽŽ‘ÈHKEY_LOCAL_MACHINEŽ¡‘¸ŽŽŽ‘ÈHKEY_USERSަ²Refer–UUto“the“Microsoft“doGcumenš¸ãtation“if“y˜ou“w˜an˜t“to“kno˜w“what“these“mean.ŽŸ ¸‘The–ù÷Èkey›ùö²is“the“ eld˜yš¸ãou“w˜an˜t›ùöto“get“from˜the“registry‘ÿ*ª.‘SRIt“should“ha•¸ãv“e˜a‘ù÷formޤ likš¸ãe–ßÈA\B\C‘ß\²(if“y˜ou“use“forw˜ard“slashes,‘ they“will“bGe‘߀con˜v˜erted“to“bac˜kslashes).Ž¡The–UU eld“is“the“sub- eld“of“the“k¸ãey‘ÿ*ª.ŽŸ ·‘In–³%the“4-argumen¸ãt›³&form,‘Ê™the“Èdefault“²is“returned˜on“failure.‘‹8Y‘ÿ*ªou“ma¸ãy“alsoŽ¡use–UUthe“alternate“form.ŽŸ —‘ÿôÈget-registry(hkey,–?ýkey,“field)Ž¡‘$¿ëdefaultŽŽŽŒ‹o$_ s\È ý®£8‘#ï0pdf:dest (page.111) [@thispage /XYZ @xpos @ypos]Ä9.3.‘ÇARRA‘ÿ*ªYS–UUAND“SEQUENCES’­ãy²111ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.9.2.16) [@thispage /XYZ @xpos @ypos]Ÿ Í9.2.16Ž‘0getv‘ÿ@arŽŸʨï2pdf:dest (fun:getvar) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(getvar–?ýname)“:“StringŽ©ù‘²The–UUÈgetvar“²function“gets“the“v›ÿqÇalue“of“a“v˜ariable.ޤ ‘An–UUexception“is“raised“if“the“v›ÿqÇariable“v˜ariable“is“not“de ned.Ž¡‘F‘ÿ*ªor–UUexample,“the“follo¸ãwing“cošGde“de nes“X“to“b˜e“the“string“ab˜c.ŽŸù‘ÿôÈNAME–?ý=“fooŽ¡‘ÿôfoo_1–?ý=“abcŽ¡‘ÿôX–?ý=“$(getvar“$(NAME)_1)ަ‘²It–UUis“acceptable“to“use“quali ed“names.ŽŸù‘ÿôÈ$(getvar‘?ýX.a.b)ŽŸ±¦ï9pdf:dest (subsection.9.2.17) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.2.17Ž‘0setv‘ÿ@arŽŸuTï2pdf:dest (fun:setvar) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èsetvar(name,‘?ývalue)Ž¡‘îname–?ý:“StringŽ¡‘îvalue–?ý:“Stringަ‘²The–ªÌÈsetvar›ªÍ²function“de nes˜a“new˜v‘ÿqÇariable.‘8ïF‘ÿ*ªor“example,‘Ìèthe˜follo¸ãwing“coGdeŽ¡de nes–UUthe“v‘ÿqÇariable“ÈX“²to“bGe“the“string“Èabc².ŽŸù‘¿÷ÈNAME–?ý=“XŽ¡‘¿÷setvar($(NAME),‘?ýabc)ަ‘²It–UUis“acceptable“to“use“quali ed“names.ަ‘ÿôÈsetvar(public.X,‘?ýabc)ŽŸÅ3ï3pdf:dest (section.9.3) [@thispage /XYZ @xpos @ypos]ŸÇÌ9.3Ž‘$æcArraŒÌys–ffand“sequencesŽŸ ³çï8pdf:dest (subsection.9.3.1) [@thispage /XYZ @xpos @ypos]Ÿ 34Í9.3.1Ž‘)@arra yŽŸʨï1pdf:dest (fun:array) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘ÿôÈ$(array–?ýelements)“:“ArrayŽ¡‘$¿ëelements–?ý:“Sequenceަ‘²The–‰{Èarray›‰|²function“creates“an˜arra¸ãy“from“a˜sequence.‘:If“the“Ș²is“aŽ¡string,‘ç~the–ÊBelemenš¸ãts“of‘ÊCthe“arra˜y“are‘ÊCthe“whitespace-separated“elemen˜ts‘ÊCof“theŽ¡string,–UUrespGecting“quotes.Ž¡‘In–UUaddition,“arraš¸ãy“v‘ÿqÇariables“can“bGe“declared“as“follo˜ws.ŽŸù‘ÿôÈA[]‘?ý=Ž¡‘$¿ëŽ¡‘$¿ë...Ž¡‘$¿ëަ‘²In›£ this–£ case,‘¶{the“elemen¸ãts˜of“the˜arra¸ãy˜are“exactly˜È²,–¶z...,‘¶{Ȳ,“andŽ¡whitespace–UUis“preserv¸ãed“literally‘ÿ*ª.ŽŽŽŒ‹p-Ñ s\È ý®£8‘Yï0pdf:dest (page.112) [@thispage /XYZ @xpos @ypos]²112’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚ‘Yï8pdf:dest (subsection.9.3.2) [@thispage /XYZ @xpos @ypos]Ÿ Í9.3.2Ž‘)@splitŽŸʨï1pdf:dest (fun:split) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(split–?ýsep,“elements)“:“Arrayޤ ‘îsep–?ý:“StringŽ¡‘îelements–?ý:“SequenceŽ©íThe˜spGecialŽ¡‘#c¸ãharacters–q/include“È:()\,$'"#“²and“whitespace.‘ÅTThis“function“can“bGe“used“inŽ¡‘#scanner–UUrules“to“escapšGe“ le“names“b˜efore“prin¸ãting“then“to“Èstdout².Ž¡‘2The–šQÈocaml-escaped‘šP²function“con•¸ãv“erts›šQeac“h˜elemen“t‘šPof˜its˜argumen“t‘šPto˜aŽ¡‘#string,–UUescaping“c¸ãharacters“that“are“spGecial“to“OCaml.Ž¡‘2The–¾ûÈc-escaped›¾ü²function“con•¸ãv“erts˜a–¾ûstring˜to“a“form˜that“can˜bGe“used˜as“aŽ¡‘#string–UUconstan¸ãt“in“C.Ž¡‘2The–>8Èid-escaped›>9²function“turns“a˜string“in¸ãto“an˜idenš¸ãti er“that“ma˜y‘>9bGe“usedŽ¡‘#in‘UUOMak¸ãe.Ž¡‘2The–ƒáÈhtml-escaped“²function›ƒâturns“a“literal“string“in¸ãto“a˜form“acceptable“asŽ¡‘#HTML.–4 The“Èhtml-pre-escaped›4 ²function“is“similar,‘k·but“it˜doGes“not“translateŽ¡‘#newlines–UUin¸ãto“È
².Ž©Mî‘7ÿôÈprintln($(string–?ý$(string-escaped“$"a“b"“$"y:z")))Ž¡‘7ÿôa\–?ýb“y\:zŽ‘#ŸìYï9pdf:dest (subsection.9.3.15) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.3.15Ž‘0deco•`de-uri,‘€enco“de-uriŽŸʨï6pdf:dest (fun:decode-uri) [@thispage /XYZ @xpos @ypos]ï6pdf:dest (fun:encode-uri) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘ÿôÈ$(decode-uri–?ýsequence)“:“sequenceŽ¡‘)ÿèsequence–?ý:“Sequenceަ‘²These›¨bt•¸ãw“o˜functions‘¨cp•Gerform˜URI‘¨ enco“ding,‘ý%where‘¨csp“ecial˜c¸ãharacters˜areŽ¡represen•¸ãted›UUb“y˜hexadecimal˜c“haracters.ŽŸMí‘ÿôÈosh>–?ýs“=“$(encode-uri“$'a“b~c')Ž¡‘ÿô"a+b%7ec"Ž¡‘ÿôosh>‘?ýdecode-uri($s)Ž¡‘ÿô"a‘?ýb~c"ŽŸ ³uï9pdf:dest (subsection.9.3.16) [@thispage /XYZ @xpos @ypos]ŸÍ9.3.16Ž‘0quoteŽŸʨï1pdf:dest (fun:quote) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(quote–?ýsequence)“:“StringŽ¡‘îsequence–?ý:“Sequenceަ‘²The–J©Èquote“²function“ attens“a“sequence‘J¨in¸ãto“a“single“string“and“adds“quotesŽ¡around–UUthe“string.‘qÇInner“quotation“sym¸ãbšGols“are“escap˜ed.Ž¡‘F‘ÿ*ªor–8ãexample,‘qÇthe“expression“È$(quote–?ýa“"b“c"“d)–8ã²ev‘ÿqÇaluates“to“È"a–?ý\"b“c\"“d"²,Ž¡and–UUÈ$(quote‘?ýabc)“²ev‘ÿqÇaluates“to“È"abc"².ŽŸìYï9pdf:dest (subsection.9.3.17) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.3.17Ž‘0quote-argvŽŸʨï6pdf:dest (fun:quote-argv) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(quote-argv–?ýsequence)“:“StringŽ¡‘îsequence–?ý:“Sequenceަ‘²The–€òÈquote-argv›€ó²function“ attens˜a“sequence˜in¸ãto“a“single˜string,‘‹Úand“addsŽ¡quotes–Šaround“the“string.‘.The“quotation“is“formed“so‘Šthat“a“command-line“parseŽ¡can–UUseparate“the“string“bacš¸ãk“in˜to“its“compGonen˜ts.ŽŽŽŒ‹tV^ s\È ý®£8‘Yï0pdf:dest (page.116) [@thispage /XYZ @xpos @ypos]²116’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚ‘Yï9pdf:dest (subsection.9.3.18) [@thispage /XYZ @xpos @ypos]Ÿ Í9.3.18Ž‘0h tml-stringŽŸ ¦1ï7pdf:dest (fun:html-string) [@thispage /XYZ @xpos @ypos]Ÿ © ‘¿÷È$(html-string–?ýsequence)“:“Stringޤ ‘îsequence–?ý:“SequenceŽ©ûБ²The–ÇÈhtml-string›Ç²function“ attens“a“sequence˜in¸ãto“a“single“string,‘ãŽand“es-Ž¡cap•Ged›Ú´sp“ecial˜HTML‘Ú•c¸ãharacters.‘HæThis˜is˜similar˜to˜the˜Èconcat˜²function,‘ó:but˜theŽ¡elemenš¸ãts–Z~are“separated“b˜y“whitespace.‘+The“result“is“treated“as“a“unit;‘®whitespaceŽ¡is‘UUsigni can¸ãt.ŽŸ9³ï9pdf:dest (subsection.9.3.19) [@thispage /XYZ @xpos @ypos]Ÿ -Í9.3.19Ž‘0addsuxŽŸPÝï5pdf:dest (fun:addsuffix) [@thispage /XYZ @xpos @ypos]Ÿ þô‘¿÷È$(addsuffix–?ýsuffix,“sequence)“:“ArrayŽ¡‘îsuffix–?ý:“StringŽ¡‘îsequence–?ý:“Sequenceަ‘²The–wËÈaddsuffix“²function“adds“a“sux“to‘wÊeacš¸ãh“compGonen˜t“of“sequence.‘Ù)TheŽ¡n•¸ãum“bGer–N6of“elemenš¸ãts“in“the“arra˜y“is“exactly‘N7the“same“as“the“n˜um˜bGer“of“elemen˜tsŽ¡in–UUthe“sequence.ŽŸ þô‘F‘ÿ*ªor›8ãexample,‘qÇÈ$(addsuffix–?ý.c,“a“b“"c“d")˜²ev‘ÿqÇaluates˜to˜Èa.c“b.c“"c“d".c².ŽŸ9³ï9pdf:dest (subsection.9.3.20) [@thispage /XYZ @xpos @ypos]Ÿ -Í9.3.20Ž‘0mapsuxŽŸ ¦1ï5pdf:dest (fun:mapsuffix) [@thispage /XYZ @xpos @ypos]Ÿ © ‘¿÷È$(mapsuffix–?ýsuffix,“sequence)“:“ArrayŽ¡‘îsuffix–?ý:“valueŽ¡‘îsequence–?ý:“Sequenceަ‘²The–o<Èmapsuffix›o=²function“adds˜a“sux˜to“eacš¸ãh“compGonen˜t‘o=of“sequence.‘¿~It“isŽ¡similar–ìto“Èaddsuffix²,‘(but“uses“arra¸ãy“concatenation“instead“of“string“concatena-Ž¡tion.‘—The›·n•¸ãum“bGer˜of˜elemen“ts˜in‘·the˜arra“y˜is˜t“wice˜the˜n“um“bGer˜of˜elemen“ts˜inŽ¡the‘UUsequence.ޤ þô‘F‘ÿ*ªor›8ãexample,‘qÇÈ$(mapsuffix–?ý.c,“a“b“"c“d")˜²ev‘ÿqÇaluates˜to˜Èa“.c“b“.c“"c“d"“.c².ŽŸ€Ðï9pdf:dest (subsection.9.3.21) [@thispage /XYZ @xpos @ypos]Ÿ ÆÍ9.3.21Ž‘0addsuxesŽŸPÝï7pdf:dest (fun:addsuffixes) [@thispage /XYZ @xpos @ypos]¡‘¿÷È$(addsuffixes–?ýsuffixes,“sequence)“:“Arrayޤ ‘îsuffixes–?ý:“SequenceŽ¡‘îsequence–?ý:“Sequenceަ‘²The–«PÈaddsuffixes›«Q²function“adds“all“suxes˜in“its“ rst“argumen¸ãt˜to“eac¸ãhŽ¡compGonen¸ãt–lÌof›lËa“sequence.‘¸*If“Èsuffixes˜²has“Èn˜²elemen¸ãts,‘²©and“Èsequence˜²has“ÈmŽ¡²elemenš¸ãts,–UUthe“the“result“has“Èn–?ý*“m‘UU²elemen˜ts.ŽŸ þô‘F‘ÿ*ªor›ëŽexample,‘the‘ëÈ$(addsuffixes–?ý.c“.o,“a“b“c)˜²expressions‘ëev‘ÿqÇaluates˜toŽ¡Èa.c–?ýa.o“b.c“b.o“c.o“c.a².ŽŽŽŒ‹ua¡ s\È ý®£8‘#ï0pdf:dest (page.117) [@thispage /XYZ @xpos @ypos]Ä9.3.‘ÇARRA‘ÿ*ªYS–UUAND“SEQUENCES’­ãy²117ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.9.3.22) [@thispage /XYZ @xpos @ypos]Ÿ Í9.3.22Ž‘0remo• v“epre xŽŸíï8pdf:dest (fun:removeprefix) [@thispage /XYZ @xpos @ypos]Ÿ Ò©‘¿÷È$(removeprefix–?ýprefix,“sequence)“:“Arrayޤ ‘îprefix–?ý:“StringŽ¡‘îsequence–?ý:“ArrayŽ©Ÿô‘²The–è‰Èremoveprefix“²function“remo•¸ãv“es–è‰a“pre x‘èˆfrom“eacš¸ãh“compGonen˜t“of“aŽ¡sequence.ŽŸœ(ï9pdf:dest (subsection.9.3.23) [@thispage /XYZ @xpos @ypos]Ÿ 66Í9.3.23Ž‘0remo• v“esuxŽŸ—Ãï8pdf:dest (fun:removesuffix) [@thispage /XYZ @xpos @ypos]Ÿ 'ý‘¿÷È$(removesuffix–?ýsequence)“:“ArrayŽ¡‘îsequence–?ý:“Stringަ‘²The–X.Èremovesuffix“²function›X-remo•¸ãv“es–X.the“suxes“from“eac•¸ãh˜compGonen“t–X.of“aŽ¡sequence.ŽŸ 'ý‘F‘ÿ*ªor–UUexample,“È$(removesuffix–?ýa.c“b.foo“"c“d")–UU²expands“to“Èa–?ýb“"c“d"².ŽŸœ)ï9pdf:dest (subsection.9.3.24) [@thispage /XYZ @xpos @ypos]Ÿ 66Í9.3.24Ž‘0replacesuxesŽŸíï;pdf:dest (fun:replacesuffixes) [@thispage /XYZ @xpos @ypos]Ÿ Ò©‘¿÷È$(replacesuffixes–?ýold-suffixes,“new-suffixes,“sequence)“:“ArrayŽ¡‘îold-suffixes–?ý:“SequenceŽ¡‘înew-suffixes–?ý:“SequenceŽ¡‘îsequence–?ý:“Sequenceަ‘²The–©âÈreplacesuffixes“²function›©ámoGdi es“the“sux“of˜eacš¸ãh“compGonen˜t“inŽ¡sequence.‘SúThe– »Èold-suffixes› ¼²and“Ènew-suffixes“²sequences“should˜ha•¸ãv“e‘ »theŽ¡same‘UUlength.ŽŸ 'ý‘F‘ÿ*ªor›x|example,‘EÈ$(replacesuffixes–?ý.h“.c,“.o“.o,“a.c“b.h“c.z)˜²expandsŽ¡to‘UUÈa.o–?ýb.o“c.z².ŽŸªbï9pdf:dest (subsection.9.3.25) [@thispage /XYZ @xpos @ypos]Ÿ'ýÍ9.3.25Ž‘0addpre xŽŸíï5pdf:dest (fun:addprefix) [@thispage /XYZ @xpos @ypos]Ÿ Ò©‘¿÷È$(addprefix–?ýprefix,“sequence)“:“ArrayŽ¡‘îprefix–?ý:“StringŽ¡‘îsequence–?ý:“Sequenceަ‘²The–Ž8Èaddprefix›Ž9²function“adds“a˜pre x“to˜eacš¸ãh“compGonen˜t“of‘Ž9a“sequence.Ž¡The›ˆn•¸ãum“bGer‘‡of˜elemen“t˜in˜the‘‡result˜arra“y˜is˜exactly–‡the˜same˜as˜the“n•¸ãum“bGer˜ofŽ¡elemenš¸ãts–UUin“the“argumen˜t“sequence.ŽŸ 'ý‘F‘ÿ*ªor›8ãexample,‘qÇÈ$(addprefix–?ýfoo/,“a“b“"c“d")˜²ev‘ÿqÇaluates˜to˜Èfoo/a“foo/b“foo/"c“d"².ŽŸãEï9pdf:dest (subsection.9.3.26) [@thispage /XYZ @xpos @ypos]Ÿ ïÍ9.3.26Ž‘0mappre xŽŸíï5pdf:dest (fun:mapprefix) [@thispage /XYZ @xpos @ypos]Ÿ Ò©‘¿÷È$(mapprefix–?ýprefix,“sequence)“:“ArrayŽ¡‘îprefix–?ý:“StringŽ¡‘îsequence–?ý:“SequenceŽŽŽŒ‹vkä s\È ý®£8‘Yï0pdf:dest (page.118) [@thispage /XYZ @xpos @ypos]²118’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚŸ ‘h²The›pÂÈmapprefix–pòfunction“adds˜a“pre x˜to˜eacš¸ãh“compGonen˜t‘pÂof“a“sequence.‘ÄItޤ ‘Yis–‹Qsimilar“to“Èaddprefix²,‘˜Ðbut“arra¸ãy“concatenation“is“used“instead“of“string“con-Ž¡‘Ycatenation.‘½> >> 6.3ïpdf:eann).‘qÇï-pdf:dest (while) [@thispage /XYZ @xpos @ypos]ަï9pdf:dest (subsection.9.3.42) [@thispage /XYZ @xpos @ypos]Ÿ €Í9.3.42Ž‘0whileŽŸuTï1pdf:dest (fun:while) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èwhile‘?ýŽ¡‘¹‰‘²{or{Ž¡‘ÿôÈwhile‘?ýޤ ‘ÿôcase‘?ýŽ¡‘$¿ëŽ¡‘ÿô...Ž¡‘ÿôcase‘?ýŽ¡‘$¿ëŽŽŽŒ‹z•X s\È ý®£8‘Yï0pdf:dest (page.122) [@thispage /XYZ @xpos @ypos]²122’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚŸ ‘mÿôÈdefaultޤ ‘}¿ëŽ©Ù†‘h²The–qloGop“is“executed“while“the“test“is“true.‘ÇIn“the“ rst“form,‘N8the“ÈŽ¡‘Y²is–îGexecuted›îFon“ev¸ãery˜loGop“iteration.‘<œIn˜the“second˜form,‘ƒthe“b•Go“dy˜È‘îG²isŽ¡‘Yselected,‘„as–G‹the›GŠ rst“case˜where˜the“test˜È˜²is“true.‘HgIf˜none“apply‘ÿ*ª,‘„theŽ¡‘Yoptional–pòdefault›pñcase“is“ev‘ÿqÇaluated.‘ÄIf˜no“cases“are˜true,‘·Ùthe˜loGop“exits.‘ÄTheŽ¡‘Yen•¸ãvironmen“t–UUis“automatically“expGorted.ޤ 6a‘hExamples.Ž¡‘hIterate–UUfor“Èi“²from“È0“²to“È9².ŽŸè‘mÿôÈi–?ý=“0ޤ ‘mÿôwhile–?ý$(lt“$i,“10)Ž¡‘}¿ëecho‘?ý$iŽ¡‘}¿ëi–?ý=“$(add“$i,“1)ŽŸÙ…‘h²The–UUfolloš¸ãwing“example“is“equiv‘ÿqÇalen˜t.ŽŸç‘h¿÷Èi–?ý=“0Ž¡‘h¿÷while‘?ýtrueŽ¡‘h¿÷case–?ý$(lt“$i,“10)Ž¡‘xîecho‘?ý$iŽ¡‘xîi–?ý=“$(add“$i,“1)ަ‘h²The–˜hfollo¸ãwing›˜iexample“is“similar,‘©-but˜some“spGecial“cases˜are“prin¸ãted.‘;v‘ÿqÇalueŽ¡‘Yis‘UUprin¸ãted.ŽŸç‘mÿôÈi–?ý=“0Ž¡‘mÿôwhile–?ý$(lt“$i,“10)Ž¡‘mÿôcase–?ý$(equal“$i,“0)Ž¡‘}¿ëecho‘?ýzeroŽ¡‘mÿôcase–?ý$(equal“$i,“1)Ž¡‘}¿ëecho‘?ýoneŽ¡‘mÿôdefaultŽ¡‘}¿ëecho‘?ý$iަ‘h²The–UUïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:break) >> >> Èbreak“²functionïpdf:eann“can“bšGe“used“to“break“out“of“the“Èwhile“²lo˜op“early‘ÿ*ª.‘qÇï-pdf:dest (break) [@thispage /XYZ @xpos @ypos]Ž‘YŸ(Xï9pdf:dest (subsection.9.3.43) [@thispage /XYZ @xpos @ypos]Ÿ DšÍ9.3.43Ž‘0breakŽŸ€˜ï1pdf:dest (fun:break) [@thispage /XYZ @xpos @ypos]Ÿ 6a‘¿÷Èbreakަ‘²T‘ÿ*ªerminate–UUexecution“of“the“innermost“loGop,“returning“the“curren¸ãt“state.ŽŽŽŒ‹{ë s\È ý®£8‘#ï0pdf:dest (page.123) [@thispage /XYZ @xpos @ypos]Ä9.4.‘ÇARITHMETIC’ïq»²123ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.9.3.44) [@thispage /XYZ @xpos @ypos]Ÿ Í9.3.44Ž‘0random,‘€random-initŽŸÎ'ï2pdf:dest (fun:random) [@thispage /XYZ @xpos @ypos]ï7pdf:dest (fun:random-init) [@thispage /XYZ @xpos @ypos]Ÿ ®»‘ÿôÈrandom-init(i)ޤ ‘)ÿèi–?ý:“IntŽ¡‘ÿôrandom()–?ý:“IntŽŸ<‘²ProšGduce–®·a‘®¸random“n•¸ãum“b˜er.‘}îThe‘®¸n“um“b˜ers–®·are“pseudo-random,‘Åand‘®¸are“notŽ¡cryptographically‘UUsecure.Ž© ‘The–œ$generator“is‘œ#initialized“form“semi-random“system“data.‘4 Subsequen¸ãt“runsŽ¡should–bhprošGduce“di eren¸ãt“results.‘ ÎThe“Èrando-init‘bg²function“can“b˜e“used“to“returnŽ¡the–UUgenerator“to“a“kno¸ãwn“state.ŽŸï3pdf:dest (section.9.4) [@thispage /XYZ @xpos @ypos]ŸHÌ9.4Ž‘$æcArithmeticŽŸ êšï8pdf:dest (subsection.9.4.1) [@thispage /XYZ @xpos @ypos]ŸÍ9.4.1Ž‘)@in tŽŸxÒï/pdf:dest (fun:int) [@thispage /XYZ @xpos @ypos]¦²The–UUÈint“²function“can“bGe“used“to“create“in¸ãtegers.‘qÇIt“returns“an“ÈInt“²ob‘Ž8ject.ޤ ‘È$(int‘?ý17)².Ž©åï8pdf:dest (subsection.9.4.2) [@thispage /XYZ @xpos @ypos]Ÿ .ºÍ9.4.2Ž‘)@ oatŽŸxÓï1pdf:dest (fun:float) [@thispage /XYZ @xpos @ypos]¡²The–€€Èfloat›€²function“can“bGe“used˜to“create“ oating-pGoin•¸ãt˜n“um“bGers.‘óHIt˜returns‘€€aŽŸ ÈFloat‘UU²ob‘Ž8ject.Ž¡‘È$(float‘?ý3.1415926)².ަï8pdf:dest (subsection.9.4.3) [@thispage /XYZ @xpos @ypos]Ÿ .ºÍ9.4.3Ž‘)@Basic‘€arithmeticŽŸxÓï/pdf:dest (fun:neg) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:add) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:sub) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:mul) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:div) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:mod) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (fun:lnot) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (fun:land) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:lor) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (fun:lxor) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:lsl) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:lsr) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:asr) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:min) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:max) [@thispage /XYZ @xpos @ypos]¡²The–UUfollo¸ãwing“functions“can“bšGe“used“to“p˜erform“basic“arithmetic.ŽŸ=‘¸ŽŽŽ‘È$(neg‘?ý)²:‘qÇarithmetic‘UUin•¸ãv“erseޤ<‘¸ŽŽŽ‘È$(add‘?ý)²:‘qÇaddition.Ž©=‘¸ŽŽŽ‘È$(sub‘?ý)²:‘qÇsubtraction.Ž¡‘¸ŽŽŽ‘È$(mul‘?ý)²:‘qÇm¸ãultiplication.ަ‘¸ŽŽŽ‘È$(div‘?ý)²:‘qÇdivision.Ž¡‘¸ŽŽŽ‘È$(mod‘?ý)²:‘qÇremainder.ަ‘¸ŽŽŽ‘È$(lnot‘?ý)²:‘qÇbit•¸ãwise‘UUin“v“erse.Ž¡‘¸ŽŽŽ‘È$(land‘?ý)²:‘qÇbit¸ãwise‘UUand.ަ‘¸ŽŽŽ‘È$(lor‘?ý)²:‘qÇbit¸ãwise‘UUor.Ž¡‘¸ŽŽŽ‘È$(lxor‘?ý)²:‘qÇbit•¸ãwise‘UUexclusiv“e-or.ަ‘¸ŽŽŽ‘È$(lsl‘?ý)²:‘qÇlogical–UUshift“left.ŽŽŽŒ‹|¥ s\È ý®£8‘Yï0pdf:dest (page.124) [@thispage /XYZ @xpos @ypos]²124’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚŸ ‘h¸ŽŽŽ‘rÈ$(lsr‘?ý)²:‘qÇlogical–UUshift“righ¸ãt.ޤ&‘h¸ŽŽŽ‘rÈ$(asr‘?ý)²:‘qÇarithmetic–UUshift“righ¸ãt.Ž¡‘h¸ŽŽŽ‘rÈ$(min‘?ý)²:‘qÇsmallest‘UUelemen¸ãt.Ž¡‘h¸ŽŽŽ‘rÈ$(max‘?ý)²:‘qÇlargest‘UUelemen¸ãt.Ž‘YŸ,yï8pdf:dest (subsection.9.4.4) [@thispage /XYZ @xpos @ypos]Ÿ WºÍ9.4.4Ž‘)@ComparisonsŽŸ ôï.pdf:dest (fun:lt) [@thispage /XYZ @xpos @ypos]ï.pdf:dest (fun:le) [@thispage /XYZ @xpos @ypos]ï.pdf:dest (fun:eq) [@thispage /XYZ @xpos @ypos]ï.pdf:dest (fun:ge) [@thispage /XYZ @xpos @ypos]ï.pdf:dest (fun:gt) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:ult) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:ule) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:uge) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:ugt) [@thispage /XYZ @xpos @ypos]Ÿ ô-²The–UUfollo¸ãwing“functions“can“bšGe“used“to“p˜erform“n¸ãumerical“comparisons.ŽŸ&‘¸ŽŽŽ‘È$(lt‘?ý)²:‘qÇless‘UUthen.Ž¡‘¸ŽŽŽ‘È$(le‘?ý)²:‘qÇno–UUmore“than.Ž¡‘¸ŽŽŽ‘È$(eq‘?ý)²:‘qÇequal.ŽŸ&‘¸ŽŽŽ‘È$(ge‘?ý)²:‘qÇno–UUless“than.Ž¡‘¸ŽŽŽ‘È$(gt‘?ý)²:‘qÇgreater‘UUthan.Ž¡‘¸ŽŽŽ‘È$(ult‘?ý)²:‘qÇunsigned–UUless“than.Ž¡‘¸ŽŽŽ‘È$(ule‘?ý)²:‘qÇunsigned–UUgreater“than.Ž¡‘¸ŽŽŽ‘È$(uge‘?ý)²:‘qÇunsigned–UUgreater“than“or“equal.Ž¡‘¸ŽŽŽ‘È$(ugt‘?ý)²:‘qÇunsigned–UUgreater“than.ŽŸ‡#ï3pdf:dest (section.9.5) [@thispage /XYZ @xpos @ypos]ŸžÌ9.5Ž‘$æcFirst-class‘fffunctionsŽŸ &fï8pdf:dest (subsection.9.5.1) [@thispage /XYZ @xpos @ypos]ŸI‚Í9.5.1Ž‘)@funŽŸ´Ÿï/pdf:dest (fun:fun) [@thispage /XYZ @xpos @ypos]¤ I‚²The–UUÈfun“²form“inš¸ãtroGduces“anon˜ymous“functions.Ž© I‘È$(fun–?ý,“...,“,“)Ž¡‘²The–ùlast›ùargumen¸ãt“is“the“b•Go“dy˜of–ùthe“function.‘SThe“other“argumen¸ãts˜are“theޤ parameter‘UUnames.ަ‘The–UUthree“folloš¸ãwing“de nitions“are“equiv‘ÿqÇalen˜t.ŽŸoˆ‘ÿôÈF(X,–?ýY)“=Ž¡‘$¿ëreturn($(addsuffix–?ý$(Y),“$(X)))Ž¡¡‘ÿôF–?ý=“$(fun“X,“Y,“$(addsuffix“$(Y),“$(X)))Ž¡¡‘ÿôF‘?ý=Ž¡‘$¿ëfun(X,‘?ýY)Ž¡‘4âvalue–?ý$(addsuffix“$(Y),“$(X))ŽŽŽŒ‹}± s\È ý®£8‘#ï0pdf:dest (page.125) [@thispage /XYZ @xpos @ypos]Ä9.5.‘ÇFIRST-CLASS‘UUFUNCTIONS’±8β125ŽŽ 8G ýÚ‘#ï8pdf:dest (subsection.9.5.2) [@thispage /XYZ @xpos @ypos]Ÿ Í9.5.2Ž‘)@applyŽŸʨï1pdf:dest (fun:apply) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–UUÈapply“²opGerator“is“used“to“apply“a“function.ޤ ‘È$(apply–?ý,“)Ž¡‘²SuppGose–UUwš¸ãe“ha˜v˜e“the“follo˜wing“function“de nition.Ž©Ã(‘ÿôÈF(X,–?ýY)“=Ž¡‘$¿ëreturn($(addsuffix–?ý$(Y),“$(X)))ަ‘²The–UUthe“t•¸ãw“o–UUexpressions“bGeloš¸ãw“are“equiv‘ÿqÇalen˜t.ަ‘ÿôÈX–?ý=“F(a“b“c,“.c)Ž¡‘ÿôX–?ý=“$(apply“$(F),“a“b“c,“.c)ŽŸ|Fï8pdf:dest (subsection.9.5.3) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.5.3Ž‘)@apply aŽŸʨï2pdf:dest (fun:applya) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–UUÈapplya“²opGerator“is“used“to“apply“a“function“to“an“arraš¸ãy“of“argumen˜ts.Ž¡‘È$(applya–?ý,“)Ž¡‘²F‘ÿ*ªor–UUexample,“in“the“follo¸ãwing“program,“the“v‘ÿqÇalue“of“ÈZ“²is“Èfile.c².ަ‘ÿôÈF(X,–?ýY)“=Ž¡‘$¿ëreturn($(addsuffix–?ý$(Y),“$(X)))Ž¡‘ÿôargs[]‘?ý=Ž¡‘$¿ëfileŽ¡‘$¿ë.cŽ¡‘ÿôZ–?ý=“$(applya“$(F),“$(args))ŽŸ|Fï8pdf:dest (subsection.9.5.4) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.5.4Ž‘)@create-map,‘€create-lazy-mapŽŸʨï6pdf:dest (fun:create-map) [@thispage /XYZ @xpos @ypos]ï;pdf:dest (fun:create-lazy-map) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–+Ècreate-map“²is›*a“simpli ed“form“for˜creating“ÈMap“²ob‘Ž8jects.‘^The“Ècreate-mapŽ¡²function–žtakš¸ães“an“ev˜en‘žn˜um˜bGer“of“argumen˜ts“that“spGecify“k˜ey/v‘ÿqÇalue‘žpairs.‘KþF‘ÿ*ªorŽ¡example,–UUthe“follo¸ãwing“v›ÿqÇalues“are“equiv˜alen¸ãt.ަ‘ÿôÈX–?ý=“$(create-map“name1,“xxx,“name2,“yyy)Ž¡¡‘ÿôX.‘?ý=Ž¡‘)ÿèextends‘?ý$(Map)Ž¡‘)ÿè$|name1|–?ý=“xxxŽ¡‘)ÿè$|name2|–?ý=“yyyަ‘²The–?lÈcreate-lazy-map›?m²function“is˜similar,‘wbut“the˜v‘ÿqÇalues“are˜computed“lazily‘ÿ*ª.Ž¡The–UUfolloš¸ãwing“t˜w˜o“de nitions“are“equiv‘ÿqÇalen˜t.ަ‘ÿôÈY–?ý=“$(create-lazy-map“name1,“$(xxx),“name2,“$(yyy))Ž¡¡‘ÿôY.‘?ý=Ž¡‘)ÿèextends‘?ý$(Map)Ž¡‘)ÿè$|name1|–?ý=“$`(xxx)Ž¡‘)ÿè$|name2|–?ý=“$`(yyy)ަ‘²The–UUïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:create-lazy-map) >> >> Ècreate-lazy-map“²functionïpdf:eann“is“used“in“rule“construction.ŽŽŽŒ‹~º\ s\È ý®£8‘Yï0pdf:dest (page.126) [@thispage /XYZ @xpos @ypos]²126’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚ‘Yï3pdf:dest (section.9.6) [@thispage /XYZ @xpos @ypos]Ÿ Ì9.6Ž‘$æcIteration–ffand“mappingŽŸ Þ’ï8pdf:dest (subsection.9.6.1) [@thispage /XYZ @xpos @ypos]Ÿ ŽÍ9.6.1Ž‘)@foreac hŽŸŸÿï3pdf:dest (fun:foreach) [@thispage /XYZ @xpos @ypos]Ÿ ZÚ²The–UUÈforeach“²function“maps“a“function“o•¸ãv“er–UUa“sequence.Ž©ÆD‘ÿôÈ$(foreach–?ý,“)ޤ ¡‘ÿôforeach(,‘?ý)Ž¡‘$¿ëŽŸki‘²F‘ÿ*ªor–8ãexample,‘qÇthe“folloš¸ãwing“program“de nes“the“v‘ÿqÇariable“ÈX‘8›²as“an“arra˜y“Èa.c–?ýb.c“c.c².ަ‘ÿôÈX‘?ý=Ž¡‘$¿ëforeach(x,–?ýa“b“c)Ž¡‘4âvalue‘?ý$(x).cŽ¡¡‘ÿô#–?ýEquivalent“expressionŽ¡‘ÿôX–?ý=“$(foreach“$(fun“x,“$(x).c),“abc)ŽŸki‘²There–UUis“also“an“abbreviated“syn¸ãtax.ŽŸ ZÛ‘The–zÈexport›z‘²form“can“also˜bGe“used“in˜a“Èforeach˜²b•Go“dy‘ÿ*ª.‘áyThe–z nal“v‘ÿqÇalue˜of“ÈXŽ¡²is‘UUÈa.c–?ýb.c“c.c².ŽŸÆC‘ÿôÈX‘?ý=Ž¡‘ÿôforeach(x,–?ýa“b“c)Ž¡‘$¿ëX–?ý+=“$(x).cŽ¡‘$¿ëexportŽŸkj‘²The–UUïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:break) >> >> Èbreak“²functionïpdf:eann“can“bšGe“used“to“break“out“of“the“lo˜op“early‘ÿ*ª.ŽŸØïï3pdf:dest (section.9.7) [@thispage /XYZ @xpos @ypos]ŸiÌ9.7Ž‘$æcBos3olean‘fftestsŽŸ Æï8pdf:dest (subsection.9.7.1) [@thispage /XYZ @xpos @ypos]ŸZÛÍ9.7.1Ž‘)@sequence-forallŽŸ õSï;pdf:dest (fun:sequence-forall) [@thispage /XYZ @xpos @ypos]Ÿ †²The–øKÈforall›øJ²function“tests“whether˜a“predicate“halds˜for“eacš¸ãh“elemen˜t‘øJof“aŽ¡sequence.ަ‘ÿôÈ$(sequence-forall–?ý,“)Ž¡¡‘ÿôsequence-forall(–?ý=>“...,“)Ž¡‘$¿ëŽŽŽŒ‹Ã~ s\È ý®£8‘#ï0pdf:dest (page.127) [@thispage /XYZ @xpos @ypos]Ä9.7.‘ÇBOOLEAN‘UUTESTS’ÜG ²127ŽŽ 8G ýÚ‘#ï8pdf:dest (subsection.9.7.2) [@thispage /XYZ @xpos @ypos]Ÿ Í9.7.2Ž‘)@sequence-existsŽŸuT²The–ÁÆÈexists“²function“tests›ÁÅwhether“a“predicate“holds“for“some˜elemen¸ãt“of“aޤ sequence.Ž©‘ÿôÈ$(sequence-exists–?ý,“)Ž¡¡‘ÿôsequence-exists(–?ý=>“...,“)Ž¡‘$¿ëŽŸ7ï8pdf:dest (subsection.9.7.3) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.7.3Ž‘)@sequence-sortŽŸʨï9pdf:dest (fun:sequence-sort) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–DsÈsort“²function“sorts‘Dtthe“elemenš¸ãts“in“an“arra˜y‘ÿ*ª,‘GÔgiv˜en“a“comparison“function.Ž¡Giv•¸ãen›˜*t“w“o˜elemen“ts˜(x,‘¨ßy),‘¨àthe˜comparison˜should˜return˜a˜negativ“e˜n“um“bGer˜ifŽ¡x–UU<“y;“a“pGositivš¸ãe“n˜um˜bGer“if“x“>“y;“and“0“if“x“=“y‘ÿ*ª.ަ‘ÿôÈ$(sequence-sort–?ý,“)Ž¡¡‘ÿôsort(,–?ý“=>“...,“)Ž¡‘$¿ëŽŸ7ï8pdf:dest (subsection.9.7.4) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ9.7.4Ž‘)@compareŽŸʨï3pdf:dest (fun:compare) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–G€Ècompare“²function“compares“t•¸ãw“o‘Gv‘ÿqÇalues–G€(x,‘JDy)“generically“returning“a“nega-Ž¡tiv•¸ãe›UUn“um“b•Ger˜if˜x˜<˜y;˜a˜p“ositiv•¸ãe˜n“um“bGer˜if˜x˜>˜y;˜and˜0˜if˜x˜=˜y‘ÿ*ª.ަ‘ÿôÈ$(compare–?ýx,“y)“:“IntŽŽŽŒ‹€Êj s\È ý®£8‘Yï0pdf:dest (page.128) [@thispage /XYZ @xpos @ypos]²128’¸•CÄCHAPTER–UU9.‘ÇBASE“LIBRAR‘ÿ*ªYŽŽ 8G ýÚŽŽŒ‹ÏÈ s\È ý®£8‘#ï0pdf:dest (page.129) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (chapter.10) [@thispage /XYZ @xpos @ypos]ŸUÊChapter‘Ç 10ŽŸ2ÆFile,– T{I/O“and“systemŽŸop‘Ç erationsŽŸ,Öwï4pdf:dest (section.10.1) [@thispage /XYZ @xpos @ypos]Ÿ )‰Ì10.1Ž‘,ÿüFile‘ffnamesŽŸ çï9pdf:dest (subsection.10.1.1) [@thispage /XYZ @xpos @ypos]ŸÍ10.1.1Ž‘0 le,‘€dirŽŸʨï0pdf:dest (fun:file) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (fun:dir) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(file–?ýsequence)“:“File“Sequenceޤ ‘îsequence–?ý:“SequenceŽ¡‘¿÷$(dir–?ýsequence)“:“Dir“SequenceŽ¡‘îsequence–?ý:“SequenceŽ©(䑲The–âÃÈfile›â²and“Èdir˜²functions“de ne˜lo•Gcation-indep“enden¸ãt–âÃreferences˜to“ lesŽ¡and–}ådirectories.‘ëxIn“Èomake²,‘ˆ the“commands›}æto“build“a“target“are˜executed“in“theŽ¡target's–Ø#directory‘ÿ*ª.‘H Since›Ø"there“ma¸ãy“bGe˜man¸ãy“directories“in“an˜Èomake“²pro‘Ž8ject,‘ñ-theŽ¡build–šgsystem“proš¸ãvides“a‘šfw˜a˜y“to“construct“a“reference“to“a‘šf le“in“one“directory‘ÿ*ª,Ž¡and–,ˆuse“it“in“another“without“explicitly“moGdifying“the“ le‘,‰name.‘d-The“functionsŽ¡ha•¸ãv“e–UUthe“folloš¸ãwing“syn˜tax,“where“the“name“should“refer“to“a“ le“or“directory‘ÿ*ª.Ž¡‘F‘ÿ*ªor–@3example,‘Dmw¸ãe›@4can“construct“a“reference“to˜a“ le“Èfoo“²in˜the“curren¸ãt“direc-Ž¡tory‘ÿ*ª.ަ‘¿÷ÈFOO–?ý=“$(file“foo)Ž¡‘¿÷.SUBDIRS:‘?ýbarŽŸ(呲If–+{the›+|ÈFOO‘+D²v‘ÿqÇariable“is˜expanded“in“the˜Èbar“²subGdirectory‘ÿ*ª,‘ait“will˜expand“toŽ¡È../foo².Ž¡‘These–8ãcommands“are“often“used“in“the“top-levš¸ãel“OMak˜e le“to“pro˜vide“loGcation-Ž¡indepGendenš¸ãt–‡Ireferences‘‡Jto“top-lev˜el“directories,‘ÓÆso“that“build‘‡Jcommands“ma˜yŽ¡refer–UUto“these“directories“as“if“they“w¸ãere“absolute.ަ‘¿÷ÈROOT–?ý=“$(dir“.)Ž¡‘¿÷LIB‘ ú=–?ý$(dir“lib)Ž¡‘¿÷BIN‘ ú=–?ý$(dir“bin)ŽŽŸK’Çÿÿ²129ŽŽŒ‹‚Ðs s\È ý®£8‘Yï0pdf:dest (page.130) [@thispage /XYZ @xpos @ypos]²130‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘h²Once–=…these“v‘ÿqÇariables›=†are“de ned,‘w‘they“can“bGe“used“in˜build“commands“inޤ ‘YsubGdirectories–«@as›«Afollo¸ãws,‘À»where“È$(BIN)‘«*²will˜expand“to˜the“loGcation“of˜the“ÈbinŽ¡‘Y²directory–UUrelativ¸ãe“to“the“command“bGeing“executed.ŽŸ®r‘h¿÷Èinstall:‘?ýhelloŽ¡‘Ycp–?ýhello“$(BIN)Ž‘YŸ©Âï9pdf:dest (subsection.10.1.2) [@thispage /XYZ @xpos @ypos]Ÿ 3Í10.1.2Ž‘0tmp leŽŸ Éï3pdf:dest (fun:tmpfile) [@thispage /XYZ @xpos @ypos]Ÿ ÑÿôÈ$(tmpfile–?ýprefix)“:“FileŽ¡‘ÿô$(tmpfile–?ýprefix,“suffix)“:“FileŽ¡‘)ÿèprefix–?ý:“StringŽ¡‘)ÿèsuffix–?ý:“StringŽ©X[‘²The–ÃÈtmpfile“²function“returns“the“name“of“a“fresh“tempGorary“ le“in“theŽ¡tempGorary‘UUdirectory‘ÿ*ª.ŽŸb¥ï9pdf:dest (subsection.10.1.3) [@thispage /XYZ @xpos @ypos]Ÿ dPÍ10.1.3Ž‘0inŽŸ¿uï.pdf:dest (fun:in) [@thispage /XYZ @xpos @ypos]Ÿ V‘¿÷È$(in–?ýdir,“exp)“:“String“ArrayŽ¡‘îdir–?ý:“DirŽ¡‘îexp–?ý:“expressionަ‘²The–èKÈin›èL²function“is˜closely“related“to˜the“Èdir˜²and“Èfile“²functions.‘*«It“tak¸ãesŽ¡a–‚3directory›‚2and“an“expression,‘Íiand“ev‘ÿqÇaluates˜the“expression“in˜that“e ectiv¸ãeŽ¡directory–ÿ*ª.‘$KF“or–Öexample,‘Ÿ¶one›×common“w•¸ãa“y–Öto“install˜a“ le“is“to˜de ne“a“sym¸ãbGolŽ¡link,‘PŠwhere–Mthe“v‘ÿqÇalue›Lof“the˜link“is“relativ¸ãe˜to“the“directory˜where“the˜link“isŽ¡created.ŽŸ V‘The–UUfollo¸ãwing“commands“create“links“in“the“È$(LIB)“²directory‘ÿ*ª.ŽŸ®q‘ÿôÈFOO–?ý=“$(file“foo)Ž¡‘ÿôinstall:Ž¡‘$¿ëln–?ý-s“$(in“$(LIB),“$(FOO))“$(LIB)/fooަ‘²Note–çcthat›çbthe“Èin˜²function“only˜a ects“the˜expansion“of˜ÈNode“²(ÈFile˜²and“ÈDir²)Ž¡v‘ÿqÇalues.ŽŸpßï9pdf:dest (subsection.10.1.4) [@thispage /XYZ @xpos @ypos]ŸVÍ10.1.4Ž‘0basenameŽŸ¿vï4pdf:dest (fun:basename) [@thispage /XYZ @xpos @ypos]Ÿ V‘¿÷È$(basename–?ýfiles)“:“String“SequenceŽ¡‘îfiles–?ý:“String“Sequenceަ‘²The–s3Èbasename›s2²function“returns“the˜base“names“for˜a“list“of˜ les.‘Ë`The“base-Ž¡name–UUis“the“ lename“with“anš¸ãy“leading“directory“compGonen˜ts“remo˜v˜ed.ŽŸ V‘F‘ÿ*ªor–8ãexample,‘qÇthe“expression“È$(basename–?ýdir1/dir2/a.out“/etc/modules.conf“/foo.ml)Ž¡²ev‘ÿqÇaluates–UUto“Èa.out–?ýmodules.conf“foo.ml².ŽŽŽŒ‹ƒ×ú s\È ý®£8‘#ï0pdf:dest (page.131) [@thispage /XYZ @xpos @ypos]Ä10.1.‘ÇFILE‘UUNAMES’îœb²131ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.10.1.5) [@thispage /XYZ @xpos @ypos]Ÿ Í10.1.5Ž‘0dirnameŽŸœ°ï3pdf:dest (fun:dirname) [@thispage /XYZ @xpos @ypos]© -¶‘¿÷È$(dirname–?ýfiles)“:“String“Sequenceޤ ‘îfiles–?ý:“String“SequenceŽŸ¶Ù‘²The–~ûÈdirname“²function“returns“the“directory“name“for“a“list“of“ les.‘î¹TheŽ¡directory–'Åname“is“the›'Æ lename“with“the“basename“remo•¸ãv“ed.‘b—If˜a–'Åname“doGes“notŽ¡ha•¸ãv“e–UUa“directory“part,“the“directory“is“\."ަ‘F‘ÿ*ªor–8ãexample,‘qÇthe“expression“È$(dirname–?ýdir1\dir2\a.out“/etc/modules.conf“/foo.ml“bar.ml)Ž¡²ev‘ÿqÇaluates–UUto“Èdir1/dir2–?ý/etc“/“.².ަ‘ÇNote²:‘ethis–ã$function“is“di eren¸ãt“from‘ã%the“Èdirof“²function.‘ 4The“functionŽ¡Èdirname–†«²is›†ªsimple“a“function˜o•¸ãv“er–†«strings,‘°while“Èdirof˜²is“a“function˜on“ lenames.ŽŸ´Ìï9pdf:dest (subsection.10.1.6) [@thispage /XYZ @xpos @ypos]Ÿ ;ïÍ10.1.6Ž‘0ro`otnameŽŸœ±ï4pdf:dest (fun:rootname) [@thispage /XYZ @xpos @ypos]¦‘¿÷È$(rootname–?ýfiles)“:“String“SequenceŽ¡‘îfiles–?ý:“String“SequenceŽŸ¶Ø‘²The–P$Èrootname›P#²function“returns“the˜roGot“name“for˜a“list“of˜ les.‘·The“roGotnameŽ¡is–UUthe“ lename“with“the“ nal“sux“remo•¸ãv“ed.ަ‘F‘ÿ*ªor–8ãexample,‘qÇthe“expression“È$(rootname–?ýdir1/dir2/a.out“/etc/a.b.c“/foo.ml)Ž¡²ev‘ÿqÇaluates–UUto“Èdir1/dir2/a–?ý/etc/a.b“/foo².ŽŸ˜Yï9pdf:dest (subsection.10.1.7) [@thispage /XYZ @xpos @ypos]Ÿ XcÍ10.1.7Ž‘0dirofŽŸœ°ï1pdf:dest (fun:dirof) [@thispage /XYZ @xpos @ypos]¦‘¿÷È$(dirof–?ýfiles)“:“Dir“SequenceŽ¡‘îfiles–?ý:“File“SequenceŽŸ¶Ø‘²The–UUÈdirof“²function“returns“the“directory“for“eac¸ãh“of“the“listed“ les.ަ‘F‘ÿ*ªor–8ãexample,‘qÇthe“expression“È$(dirof–?ýdir/dir2/a.out“/etc/modules.conf“/foo.ml)Ž¡²ev‘ÿqÇaluates–UUto“the“directories“Èdir1/dir2–?ý/etc“/².ŽŸ˜Yï9pdf:dest (subsection.10.1.8) [@thispage /XYZ @xpos @ypos]Ÿ XcÍ10.1.8Ž‘0fullnameŽŸœ±ï4pdf:dest (fun:fullname) [@thispage /XYZ @xpos @ypos]¦‘¿÷È$(fullname–?ýfiles)“:“String“SequenceŽ¡‘îfiles–?ý:“File“SequenceŽŸ¶Ø‘²The–ÇÈfullname“²function›Çreturns“the“pathname“relativ¸ãe“to“the˜pro‘Ž8ject“roGot“forŽ¡eac¸ãh–UUof“the“ les“or“directories.ŽŸÃï9pdf:dest (subsection.10.1.9) [@thispage /XYZ @xpos @ypos]Ÿ-¶Í10.1.9Ž‘0absnameŽŸœ±ï3pdf:dest (fun:absname) [@thispage /XYZ @xpos @ypos]¦‘¿÷È$(absname–?ýfiles)“:“String“SequenceŽ¡‘îfiles–?ý:“File“SequenceŽŸ¶Ø‘²The–]Èabsname›^²function“returns˜the“absolute˜pathname“for˜eac¸ãh“of˜the“ les˜orŽ¡directories.ŽŽŽŒ‹„á_ s\È ý®£8‘Yï0pdf:dest (page.132) [@thispage /XYZ @xpos @ypos]²132‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï:pdf:dest (subsection.10.1.10) [@thispage /XYZ @xpos @ypos]Ÿ Í10.1.10Ž‘6ÀhomenameŽ©ˆœï4pdf:dest (fun:homename) [@thispage /XYZ @xpos @ypos]Ÿ d‘¿÷È$(homename–?ýfiles)“:“String“Sequenceޤ ‘îfiles–?ý:“File“SequenceŽŸY‘‘²The–šÈhomename“²function“returns‘šthe“name“of“a“ le“in“tilde“form,‘«Þif“pGossible.Ž¡The–õƒunexpanded“forms›õ„are“computed“lazily:‘AÞthe“Èhomename˜²function“will“usuallyŽ¡ev‘ÿqÇaluate–¹to›¸an“absolute˜pathname“un¸ãtil˜the“ rst˜tilde-expansion“for˜the“sameŽ¡directory‘ÿ*ª.ŽŸPfï:pdf:dest (subsection.10.1.11) [@thispage /XYZ @xpos @ypos]Ÿ $Í10.1.11Ž‘6Àsuxަï2pdf:dest (fun:suffix) [@thispage /XYZ @xpos @ypos]© d‘¿÷È$(suffix–?ýfiles)“:“String“SequenceŽ¡‘îfiles–?ý:“StringSequenceŽŸY’‘²The–ð…Èsuffix“²function›ð„returns“the“suxes“for“a“list˜of“ les.‘CWIf“a˜ le“has“noŽ¡sux,–UUthe“function“returns“the“empt¸ãy“string.ަ‘F‘ÿ*ªor–8ãexample,‘qÇthe“expression“È$(suffix–?ýdir1/dir2/a.out“/etc/a“/foo.ml)Ž¡²ev‘ÿqÇaluates–UUto“È.out‘?ý.ml².ŽŸr,ï4pdf:dest (section.10.2) [@thispage /XYZ @xpos @ypos]ŸeÌ10.2Ž‘,ÿüP•ŒÌath‘ffsearc“hŽŸ úcï9pdf:dest (subsection.10.2.1) [@thispage /XYZ @xpos @ypos]ŸdÍ10.2.1Ž‘0whic hŽŸˆœï1pdf:dest (fun:which) [@thispage /XYZ @xpos @ypos]¦‘¿÷È$(which–?ýfiles)“:“File“SequenceŽ¡‘îfiles–?ý:“String“SequenceŽŸY‘‘²The–£Èwhich“²function›¤searc¸ãhes“for“executables“in“the˜currenš¸ãt“command“searc˜hŽ¡path,‘™öand–Y returns›Y Èfile“²v‘ÿqÇalues“for˜eac¸ãh“of˜the“commands.‘|äIt“is˜an“error˜if“aŽ¡command–UUis“not“found.ŽŸ^Ÿï9pdf:dest (subsection.10.2.2) [@thispage /XYZ @xpos @ypos]ŸdÍ10.2.2Ž‘0whereŽŸˆœï1pdf:dest (fun:where) [@thispage /XYZ @xpos @ypos]¦²The–-Èwhere›.²function“is“similar˜to“whic¸ãh,‘5except˜it“returns“the˜list“of“all˜the“loGca-Ž¡tions–”of“the“givš¸ãen‘•executable“(in“the“order“in“whic˜h‘•the“correspGonding“directoriesŽ¡appGear–ÎÄin“È$PATH²).›ÎÅIn“case“a“command˜is“handled“inš¸ãternally“b˜y‘ÎÅthe“ÈShell“²ob‘Ž8ject,Ž¡the–UU rst“string“in“the“output“will“describGe“the“command“as“a“built-in“function.ŽŸoö‘ÿôÈ%–?ýwhere“echoŽ¡‘ÿôecho–?ýis“a“Shell“object“method“(a“built-in“function)Ž¡‘ÿô/bin/echoŽŸ3ñï9pdf:dest (subsection.10.2.3) [@thispage /XYZ @xpos @ypos]Ÿ AÍ10.2.3Ž‘0rehashŽŸˆœï2pdf:dest (fun:rehash) [@thispage /XYZ @xpos @ypos]¦‘ÿôÈrehash()ŽŸY‘‘²The–UUÈrehash“²function“resets“all“searc¸ãh“paths.ŽŽŽŒ‹…ëÜ s\È ý®£8‘#ï0pdf:dest (page.133) [@thispage /XYZ @xpos @ypos]Ä10.2.‘ÇP–ÿ*ªA“TH‘UUSEAR¸ãCH’åN,²133ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.10.2.4) [@thispage /XYZ @xpos @ypos]Ÿ Í10.2.4Ž‘0exists-in-pathŽ©ʨï:pdf:dest (fun:exists-in-path) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(exists-in-path–?ýfiles)“:“Stringޤ ‘îfiles–?ý:“String“SequenceŽŸj‘²The–ÞÈexists-in-path“²function“tests“whether‘Þ all“executables“are“presen¸ãt“inŽ¡the–UUcurrenš¸ãt“searc˜h“path.ŽŸBï9pdf:dest (subsection.10.2.5) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.2.5Ž‘0digest,‘€digest-optionalަï2pdf:dest (fun:digest) [@thispage /XYZ @xpos @ypos]ï;pdf:dest (fun:digest-optional) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘?ñÈ$(digest–?ýfiles)“:“String“ArrayŽ¡‘)ÿèfile–?ý:“File“ArrayŽ¡‘?ñraises‘?ýRuntimeExceptionŽ¡¡‘?ñ$(digest-optional–?ýfiles)“:“String“ArrayŽ¡‘)ÿèfile–?ý:“File“ArrayŽŸj‘²The–c’Èdigest“²and›c“Èdigest-optional“²functions“compute“MD5˜digests“of“ les.Ž¡The–8ãÈdigest“²function“raises“an“exception“if“a“ le“doGes“no“exist.‘÷The“Èdigest-optionalŽ¡²returns–UUÈfalse“²if“a“ le“doGes“no“exist.‘qÇMD5“digests“are“cac¸ãhed.ŽŸBï9pdf:dest (subsection.10.2.6) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.2.6Ž‘0 nd-in-path,‘€ nd-in-path-optionalަï8pdf:dest (fun:find-in-path) [@thispage /XYZ @xpos @ypos]ïApdf:dest (fun:find-in-path-optional) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘ÿôÈ$(find-in-path–?ýpath,“files)“:“File“ArrayŽ¡‘$¿ëpath–?ý:“Dir“ArrayŽ¡‘$¿ëfiles–?ý:“String“ArrayŽ¡‘ÿôraises‘?ýRuntimeExceptionŽ¡¡‘ÿô$(find-in-path-optional–?ýpath,“files)“:“File“ArrayŽŸj‘²The–aëÈfind-in-path›aê²function“searc¸ãhes˜for“the“ les˜in“a“searc¸ãh˜path.‘—ˆOnlyŽ¡the–™¶tail“of›™µthe“ lename“is“signi can¸ãt.‘>éThe“Èfind-in-path˜²function“raises“anŽ¡exception–æÍif›æÌthe“ le“can't˜bGe“found.‘ &.The˜Èfind-in-path-optional“²functionŽ¡silen•¸ãtly›UUremo“v“es˜ les˜that˜can't˜bGe˜found.ŽŸBï9pdf:dest (subsection.10.2.7) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.2.7Ž‘0digest-in-path,‘€digest-in-path-optionalަï:pdf:dest (fun:digest-in-path) [@thispage /XYZ @xpos @ypos]ïCpdf:dest (fun:digest-in-path-optional) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘ÿôÈ$(digest-in-path–?ýpath,“files)“:“String/File“ArrayŽ¡‘$¿ëpath–?ý:“Dir“ArrayŽ¡‘$¿ëfiles–?ý:“String“ArrayŽ¡‘ÿôraises‘?ýRuntimeExceptionŽ¡¡‘ÿô$(digest-in-path-optional–?ýpath,“files)“:“String/File“ArrayŽŸj‘²The–s¹Èdigest-in-path“²function“searcš¸ãhes“for“the“ les“in“a“searc˜h“path“andŽ¡returns–\Ãthe›\Ä le“and“digest“for˜eac¸ãh“ le.‘ìOnly“the˜tail“of“the“ lename˜is“signi can¸ãt.Ž¡The–—ìÈdigest-in-path“²function“raises“an“exception‘—íif“the“ le“can't“bGe“found.Ž¡The–óÕÈdigest-in-path-optional›óÖ²function“silen•¸ãtly˜remo“v“es‘óÕelemen“ts˜that‘óÕcan'tŽ¡bGe‘UUfound.ŽŽŽŒ‹†ö s\È ý®£8‘Yï0pdf:dest (page.134) [@thispage /XYZ @xpos @ypos]²134‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï4pdf:dest (section.10.3) [@thispage /XYZ @xpos @ypos]Ÿ Ì10.3Ž‘,ÿüFile‘ffstatsŽŸ ê‘ï9pdf:dest (subsection.10.3.1) [@thispage /XYZ @xpos @ypos]ŸÍ10.3.1Ž‘0 le-exists,–€target-exists,“target-is-prop`erŽŸÎï7pdf:dest (fun:file-exists) [@thispage /XYZ @xpos @ypos]ï9pdf:dest (fun:target-exists) [@thispage /XYZ @xpos @ypos]ïThe“Ètarget-is-properŽ¡²returns–UUtrue“only“if“the“ le“can“bGe“generated“in“the“curren¸ãt“pro‘Ž8ject.ŽŸJï9pdf:dest (subsection.10.3.2) [@thispage /XYZ @xpos @ypos]Ÿ =Í10.3.2Ž‘0stat-resetŽŸxÊï6pdf:dest (fun:stat-reset) [@thispage /XYZ @xpos @ypos]Ÿ ‘¿÷È$(stat-reset–?ýfiles)“:“StringŽ¡‘$¿ëfiles–?ý:“File“Sequenceަ‘²OMakš¸ãe–üõuses‘üöa“stat-cac˜he.‘TRThe“Èstat-reset›üö²function“reset“the˜Èstat“²informa-Ž¡tion–"6for›"7the“giv¸ãen“ les,‘,pforcing“the“Èstat˜²information“to“bGe“recomputed˜the“nextŽ¡time–UUit“is“requested.ŽŸIï9pdf:dest (subsection.10.3.3) [@thispage /XYZ @xpos @ypos]Ÿ >Í10.3.3Ž‘0 lter-exists,–€ lter-targets,“ lter-prop`er-targetsŽŸÎï9pdf:dest (fun:filter-exists) [@thispage /XYZ @xpos @ypos]ï:pdf:dest (fun:filter-targets) [@thispage /XYZ @xpos @ypos]ïApdf:dest (fun:filter-proper-targets) [@thispage /XYZ @xpos @ypos]Ÿ ®°‘¿÷È$(filter-exists–?ýfiles)“:“File“SequenceŽ¡‘¿÷$(filter-targets–?ýfiles)“:“File“SequenceŽ¡‘¿÷$(filter-proper-targets)–?ý:“File“SequenceŽ¡‘îfiles–?ý:“File“Sequenceަ‘²The–l´Èfilter-exists²,‘r‹Èfilter-targets²,‘rŒand‘l³Èfilter-proper-targets“²func-Ž¡tions›UUremo•¸ãv“e˜ les˜from˜a˜list˜of˜ les.ŽŸ ‘¸ŽŽŽ‘Èfilter-exists²:‘qÇthe–UUresult“is“the“list“of“ les“that“exist.Ž©‘¸ŽŽŽ‘Èfilter-targets²:‘ifthe–D’result“is“the›D“list“of“ les“either˜exist,‘Gìor“can˜bGe“builtŽ¡‘bš¸ãy–UUthe“curren˜t“pro‘Ž8ject.ަ‘¸ŽŽŽ‘Èfilter-proper-targets²:‘Gthe–result“is“the“list“of‘ les“that“can“bGe“built“inŽ¡‘the–UUcurren¸ãt“pro‘Ž8ject.ŽŸIï3pdf:dest (section*.17) [@thispage /XYZ @xpos @ypos]Ÿ =ÇCreating–ʦa‘ʧ\distclean"“target‘ ²One›*¨w•¸ãa“y˜to˜create‘*§a˜simple˜\Èdistclean²"Ž¡rule–µ˜that“remo•¸ãv“es›µ™generated–µ˜ les“from“the˜pro‘Ž8ject“is“bš¸ãy“remo˜ving‘µ™all“ les“thatŽ¡can–UUbGe“built“in“the“curren¸ãt“pro‘Ž8ject.ŽŸ ‘ÇCA®9UTION:–˜²y¸ãou›™should“bGe“careful˜bGefore“y¸ãou“do“this.‘©‘The˜rule“remo•¸ãv“esŽ¡Îany›x¡² le––#that‘–$can“Îp‘ÿ}'otential‘‚Øly˜²bGe––$reconstructed.‘42There“is“no›–#c•¸ãhec“k‘–$to˜mak“e‘–$sureŽ¡that–œ®the›œ¯commands“to˜rebuild“the˜ le“w¸ãould˜actually“succeed.‘GÔAlso,‘®…note“thatŽ¡no–UU le“outside“the“curren¸ãt“pro‘Ž8ject“will“bGe“deleted.ŽŽŽŒ‹‡C s\È ý®£8‘#ï0pdf:dest (page.135) [@thispage /XYZ @xpos @ypos]Ä10.3.‘ÇFILE‘UUST–ÿ*ªA“TS’ó¿ó²135ŽŽ 8G ýÚŸ ‘7ÿôÈ.PHONY:‘?ýdistcleanޤ ¡‘7ÿôdistclean:Ž¡‘Lÿèrm–?ý$(filter-proper-targets“$(ls“R,“.))Ž©\Α2²If–¸Lyš¸ãou‘¸Muse“CVS,“y˜ou“ma˜y›¸Mwish“to“utilize“the˜Ècvs_realclean“²program“thatŽ¡‘#is–0—distributed“with“OMakš¸ãe“in“order“to“create“a“\Èdistclean²"“rule“that“w˜ouldŽ¡‘#delete–SSall›STthe“ les“thare˜are“not“kno¸ãwn˜to“CVS.“F‘ÿ*ªor˜example,‘’Òif˜y¸ãou“alreadyŽ¡‘#ha•¸ãv“e–üoa›üpmore“traditional˜\Èclean²"“target˜de ned“in˜y¸ãour“pro‘Ž8ject,‘8and“if˜yš¸ãou“w˜an˜tŽ¡‘#the–UU\Èdistclean²"“rule“to“bGe“in•¸ãteractiv“e›UUb“y˜default,˜y“ou˜can˜write˜the˜follo“wing:ަ‘7ÿôÈif–?ý$(not“$(defined“FORCE_REALCLEAN))Ž¡‘LÿèFORCE_REALCLEAN–?ý=“falseŽ¡‘LÿèexportŽ¡¡‘7ÿôdistclean:‘?ýcleanŽ¡‘Lÿècvs_realclean–?ý$(if“$(FORCE_REALCLEAN),“-f)“-i“.omakedb“-i“.omakedb.lockަ‘2²Y‘ÿ*ªou–9øcan›9ùadd“more˜ les“that˜yš¸ãou“w˜an˜t‘9ùto“alw˜a˜ys‘9ùk˜eep“(suc˜h‘9ùas“con gurationŽ¡‘# les)–UUwith“the“-i“option.Ž¡‘2Similarly‘ÿ*ª,‘"Rif–ùSyš¸ãou“use‘ùTSub˜v˜ersion,‘"Ry˜ou“utilize“the“Èbuild/svn_realclean.omŽ¡‘#²script–UUthat“comes“with“OMak¸ãe:ަ‘7ÿôÈif–?ý$(not“$(defined“FORCE_REALCLEAN))Ž¡‘LÿèFORCE_REALCLEAN–?ý=“falseŽ¡‘LÿèexportŽ¡¡‘7ÿôopen‘?ýbuild/svn_realcleanŽ¡¡‘7ÿôdistclean:‘?ýcleanŽ¡‘Lÿèsvn_realclean–?ý$(if“$(FORCE_REALCLEAN),“-f)“-i“.omakedb“-i“.omakedb.lockަ‘2²See–Ãöalso›Ã÷the“ïupdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:dependencies-proper) >> >> Èdependencies-proper“²functionïpdf:eann˜for“an“alternate˜methoGd“forŽ¡‘#remo•¸ãving›UUin“termediate˜ les.Ž‘#ŸOŸï9pdf:dest (subsection.10.3.4) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.3.4Ž‘0 nd-targets-in-path,‘€ nd-targets-in-path-optionalŽŸʨï@pdf:dest (fun:find-targets-in-path) [@thispage /XYZ @xpos @ypos]ïIpdf:dest (fun:find-targets-in-path-optional) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘ÿôÈ$(find-targets-in-path–?ýpath“files)“:“File“ArrayŽ¡‘ÿô$(find-targets-in-path-optional–?ýpath,“files)“:“File“ArrayŽ¡‘)ÿèpath–?ý:“Dir“ArrayŽ¡‘)ÿèfiles–?ý:“File“Sequenceަ‘²The–ÄÈfind-target-in-path›Ųfunction“searc¸ãhes“for˜targets“in“the˜searc¸ãh“path.Ž¡F‘ÿ*ªor–¹§eac¸ãh›¹¦ le“Èfile“²in˜the“ le“list,‘ØÉthe“path“is˜searcš¸ãhed“sequen˜tially“for‘¹¦a“directoryŽ¡Èdir–UU²suc¸ãh“that“the“target“Èdir/file“²exists.‘qÇIf“so,“the“ le“Èdir/file“²is“returned.Ž¡‘F‘ÿ*ªor–­example,‘ÃsuppGose“y¸ãou“are‘­‚building“a“C‘­kpro›Ž8ject,‘ÃŒand“pro˜ject‘­‚con¸ãtains“aŽ¡subGdirectory–j«Èsrc/“²conš¸ãtaining‘j¬only“the“ les“Èfee.c“²and“Èfoo.c².‘±ÊThe“follo˜wingŽ¡expression–‡ev‘ÿqÇaluates“to“the“ les“Èsrc/fee.o“src/foo.o‘†²evš¸ãen“if“the“ les“ha˜v˜e“notŽ¡already–UUbGeen“built.ŽŽŽŒ‹ˆW s\È ý®£8‘Yï0pdf:dest (page.136) [@thispage /XYZ @xpos @ypos]²136‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘mÿôÈ$(find-targets-in-path–?ýlib“src,“fee.o“foo.o)ޤ ¡‘mÿô#–?ýEvaluates“toŽ¡‘mÿôsrc/fee.o‘?ýsrc/foo.oŽ©ài‘h²The–' Èfind-targets-in-path›'²function“raises“an˜exception“if“the“ le˜can't“bGeŽ¡‘Yfound.‘"=The–f¶Èfind-targets-in-path-optional‘f·²function“silenš¸ãtly“remo˜v˜es“targetsŽ¡‘Ythat–UUcan't“bGe“found.ަ‘mÿôÈ$(find-targets-in-path-optional–?ýlib“src,“fee.o“foo.o“fum.o)Ž¡¡‘mÿô#–?ýEvaluates“toŽ¡‘mÿôsrc/fee.o‘?ýsrc/foo.oŽ‘YŸ¢ï9pdf:dest (subsection.10.3.5) [@thispage /XYZ @xpos @ypos]Ÿ *­Í10.3.5Ž‘0 nd-o`caml-targets-in-path-optionalŽŸʨïOpdf:dest (fun:find-ocaml-targets-in-path-optional) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–\~Èfind-ocaml-targets-in-path-optional“²function“is“v¸ãery“similar“to“theŽ¡ïpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:find-targets-in-path-optional) >> >> Èfind-targets-in-path-optionalïpdf:eann–­¥²one,‘úexcept“an“OCaml-stš¸ãyle“searc˜h‘­¦is“used,Ž¡where––jfor‘–kevš¸ãery“elemen˜t›–kof“the˜searc¸ãh“path˜and“for˜ev¸ãery“name˜bGeing“searc¸ãhedŽ¡for,›C, rst–›the“uncapitalized“v¸ãersion“is“tried“and‘šif“it“is“not“buildable,˜then“theŽ¡capitalized–UUv¸ãersion“is“tried“next.ŽŸ¾vï9pdf:dest (subsection.10.3.6) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.3.6Ž‘0 le-sortŽŸuTï5pdf:dest (fun:file-sort) [@thispage /XYZ @xpos @ypos]¡‘¿÷È$(file-sort–?ýorder,“files)“:“File“SequenceŽ¡‘îorder–?ý:“StringŽ¡‘îfiles–?ý:“File“Sequenceަ‘²The–”¯Èfile-sort“²function“sorts“a“list“of“ lenames“bš¸ãy“build“order“augmen˜tedŽ¡b¸ãy–Iãa“set“of“sort“rules.›OqSort‘Iärules“are“declared“using“the“È.ORDER‘I¤²target.˜TheŽ¡È.BUILDORDER–UU²de nes“the“default“order.Ž¡‘È$(file-sort–?ý,“)Ž¡‘²F‘ÿ*ªor–UUexample,“suppGose“wš¸ãe“ha˜v˜e“the“follo˜wing“set“of“rules.ަ‘¿÷Èa:–?ýb“cŽ¡‘¿÷b:‘?ýdŽ¡‘¿÷c:‘?ýdŽ¡¡‘¿÷.DEFAULT:–?ýa“b“c“dŽ¡‘îecho–?ý$(file-sort“.BUILDORDER,“a“b“c“d)ŽŸàh‘²In–qÇthe›qÆcase,‘¸ãthe“sorter˜proGduces“the“result˜Èd–?ýb“c“a².‘ÇThat–qÇis,‘¸ãa˜target“isŽ¡sorted–÷ÖÎafter‘ b²its“depGendencies.‘RThe›÷Õsorter“is˜frequen¸ãtly“used“to˜sort“ les˜that“areŽ¡to–UUbGe“linkš¸ãed“b˜y“their“depGendencies“(for“languages“where“this“matters).Ž¡‘There–UUare“three“impGortan¸ãt“restrictions“to“the“sorter:ŽŸî‘¸ŽŽŽ‘²The–(osorter›(pcan“bGe“used˜only“within“a˜rule“b•Go“dy‘ÿ*ª.‘ëThe–(oreason“for˜this“isŽ¡‘that–UUÎal‘‚Øl‘]Þ²depšGendencies“m¸ãust“b˜e“kno¸ãwn“b˜efore“the“sort“is“p˜erformed.ŽŽŽŒ‹‰† s\È ý®£8‘#ï0pdf:dest (page.137) [@thispage /XYZ @xpos @ypos]Ä10.4.‘ÇGLOBBING–UUAND“FILE“LISTINGS’®²137ŽŽ 8G ýÚŸ ‘2¸ŽŽŽ‘<²The–UUsorter“can“only“sort“ les“that“are“buildable“in“the“curren¸ãt“pro‘Ž8ject.ŽŸ*;‘2¸ŽŽŽ‘<²The–UUsorter“will“fail“if“the“depGendencies“are“cyclic.Ž‘#©1ï>pdf:dest (subsubsection.10.3.6.1) [@thispage /XYZ @xpos @ypos]Ÿ XÈÇ10.3.6.1Ž‘1ÕDsort‘ÕTruleŽŸ²It–Ëèis“pGossible›Ëçto“further“constrain“the˜sorter“through“the“use˜of“sort“rules.‘CøA‘ËÅsortޤ rule–·áis“declared“in›·ât•¸ãw“o–·ásteps.‘=KThe“target˜m¸ãust“bGe“listed“as“an“È.ORDER‘·º²target;‘ì]andŽ¡then–UUa“set“of“sort“rules“mš¸ãust“bGe“giv˜en.‘qÇA“sort“rule“de nes“a“pattern“constrain˜t.ŽŸtÊ‘¿÷È.ORDER:‘?ý.MYORDERŽ¡¡‘¿÷.MYORDER:–?ý%.foo:“%.barŽ¡‘¿÷.MYORDER:–?ý%.bar:“%.bazŽ¡¡‘¿÷.DEFAULT:–?ýa.foo“b.bar“c.baz“d.bazŽ¡‘îecho–?ý$(sort“.MYORDER,“a.foo“b.bar“c.baz“d.baz)ŽŸ*;‘²In›žSthis–žTexample,‘°’the“È.MYORDER‘ž@²sort˜rule˜spGeci es“that˜an¸ãy˜ le˜with“a˜suxŽ¡È.foo–õ„²should“bGe“placed“after‘õ…anš¸ãy“ le“with“sux“È.bar²,‘and“an˜y“ le“with“suxŽ¡È.bar–UU²should“bGe“placed“after“a“ le“with“sux“È.baz².ޤ J‘In–UUthis“example,“the“result“of“the“sort“is“Èd.baz–?ýc.baz“b.bar“a.foo².ަï9pdf:dest (subsection.10.3.7) [@thispage /XYZ @xpos @ypos]Ÿ XÈÍ10.3.7Ž‘0 le-c• hec“k-sortŽŸµ‡ï;pdf:dest (fun:file-check-sort) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èfile-check-sort(files)ޤ ‘îfiles–?ý:“File“SequenceŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŸ*;‘²The–ëDÈfile-check-sort“²function“c•¸ãhec“ks–ëDwhether“a‘ëClist“of“ les“is“in“sort“order.Ž¡If–UUso,“the“list“is“returned“unc¸ãhanged.‘qÇIf“not,“the“function“raises“an“exception.ŽŸ J‘È$(file-check-sort–?ý,“)ŽŸ¶Tï4pdf:dest (section.10.4) [@thispage /XYZ @xpos @ypos]ŸçÌ10.4Ž‘,ÿüGlobbing–ffand“ le“listingsŽŸqݲOMak¸ãe–\çcommands“are“\glob-expanded"“bšGefore“b˜eing“executed.‘ˆ}That“is,‘^ËnamesŽ¡ma•¸ãy›e¶con“tain˜Îp‘ÿ}'atterns‘7ײthat˜are˜expanded˜to‘e·sequences˜of˜ le˜and˜directory˜names.Ž¡The–¿(synš¸ãtax“follo˜ws“the“standard“bash(1),–csh(1),‘œsyn˜tax,“with–¿(the“follo˜wingŽ¡rules.ŽŸ*<‘¸ŽŽŽ‘²A‘0JÎp‘ÿ}'athname‘ð¯²is–0Sa›0Tsequence“of˜directory“and˜ le“names˜separated“b¸ãy˜one“ofŽ¡‘the–…»È/“²or‘…ºÈ\“²cš¸ãharacters.‘øF‘ÿ*ªor“example,‘‘Ôthe“follo˜wing“pathnames‘…ºrefer“to“theŽ¡‘same–UU le:‘qÇÈ/home/jyh/OMakefile“²and“È/home\jyh/OMakefile².ŽŸ*;‘¸ŽŽŽ‘²Glob-expansion–Ùlis“pšGerformed“on“the“comp˜onen¸ãts“of‘Ùma“path.‘þ If“a“pathŽ¡‘con¸ãtains–K¾ošGccurrences‘K½of“sp˜ecial›K½c¸ãharacters“(listed˜bGelo¸ãw),‘€Üthe“path˜is“view¸ãedŽŽŽŒ‹Š$/ s\È ý®£8‘Yï0pdf:dest (page.138) [@thispage /XYZ @xpos @ypos]²138‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘r²as–.ìa›.ípattern“to“bGe“matc¸ãhed˜against“the“actual“ les˜in“the“system.‘þTheޤ ‘rexpansion–UUproGduces“a“sequence“of“all“ le/directory“names“that“matc¸ãh.ŽŸø¾‘rF‘ÿ*ªor–òthe“follo¸ãwing›òexamples,‘OsuppGose“that“a“directory˜È/dir“²con¸ãtains“ lesŽ¡‘rnamed–UUÈa²,“È-a²,“Èa.b²,“and“Èb.c².ŽŸê:‘rÈ*ŽŽ‘|?ÿ²Matc•¸ãhes›ÇËan“y˜sequence‘ÇÌof˜zero-or-more˜c“haracters.‘É*F‘ÿ*ªor˜example,‘$htheŽ¡’ˆpattern–UUÈ/dir/a*“²expands“to“È/dir/a–?ý/dir/aa“/dir/a.b².Ž©ñ|‘rÈ?ŽŽ‘|?ÿ²Matcš¸ãhes–|Äexactly‘|Ãone“c˜haracter.‘èThe“pattern“È/dir/?a“²expands‘|Ãthe“ le-Ž¡’ˆname‘UUÈ/dir/-a².ަ‘rÈ[...]ŽŽ’‘?ó²Square›Úbrac•¸ãk“ets˜denote‘Úc“haracter˜sets˜and˜ranges‘Úin˜the˜ASCIGIŽ¡’ˆcš¸ãharacter–Lgset.‘VÿThe“pattern‘Lhma˜y“con˜tain‘Lhindividual“c˜haracters‘Lhµc“²orŽ¡’ˆc¸ãharacter‘ûranges›ûµcŸÿ±1Ž–|sÈ-µcŸÿ±2Ž“².‘c The˜pattern‘ûmatc•¸ãhes˜an“y–ûof˜the“individualŽ¡’ˆcš¸ãharacters–3spGeci ed,‘9ëor“an˜y‘3c˜haracters“in“the“range.‘f[A‘3leading“\hat"Ž¡’ˆin•¸ãv“erts–òPthe“send“of›òQthe“pattern.‘H¸T‘ÿ*ªo“spGecify˜a“pattern“that“con¸ãtainsŽ¡’ˆthe–×ðliteral“cš¸ãharacters“È-²,‘ø—the“È-“²should“oGccur“as“the“ rst“c˜haracter“inŽ¡’ˆthe‘UUrange.Ž©%4Ÿí³1’£€CP¸ãatternŽ’î€ ExpansionŽŽ’€BŸ‰ffþÿ~Ÿfd‘È/dir/[a-b]*Ž‘PÿÞ/dir/a–?ý/dir/a.b“/dir/b.cŽŽ¡‘/dir/[-a-b]*Ž‘PÿÞ/dir/a–?ý/dir/-a“/dir/a.b“/dir/b.cŽŽ¡‘/dir/[-a]*Ž‘PÿÞ/dir/a–?ý/dir/-a“/dir/a.bŽŽŽŽŽŸ&m‘r¸fÈs1,...,sN¸gŽŽ’°?é²Braces–õºindicate“brace-expansion.‘RöThe“braces“delimit“a“se-Ž¡’ˆquence–w’of›w“strings“separated˜bš¸ãy“commas.‘Ø€Giv˜en“µN‘Ž®²strings,‘€"the“resultŽ¡’ˆproGduces–UUµN‘lp²copies“of“the“pattern,“one“for“eac¸ãh“of“the“strings“µsŸÿó 0e—rcmmi7´iŽ‘TL².ŽŸ%3Ÿí³1’Êà-P¸ãatternŽ’% ExpansionŽŽ’Äà,Ÿ‰ff°?«Ÿfd‘Èa{b,c,d}Ž‘`¿Õab–?ýac“adŽŽ¡‘a{b{c,d},e}Ž‘`¿Õabc–?ýabd“aeŽŽ¡‘a{?{[A-Z],d},*}Ž‘`¿Õa?[A-Z]–?ýa?d“a*ŽŽŽŽŽ¦‘|?ÿ²The–Wbtilde“is‘Wcused“to“spšGecify“home“directories.‘!Dep˜ending‘Wcon“y¸ãour“system,Ž¡’ˆthese–UUmigh¸ãt“bšGe“p˜ossible“expansions.Ž©4Ÿó³1’¦ BP¸ãatternŽ’Ü +ExpansionŽŽ’  AŸ‰ffù¿Ÿfd‘È~jyhŽ‘;ÿê/home/jyhŽŽ¡‘~bob/*.cŽ‘;ÿêc:\Documents–?ýand“Settings\users\bobŽŽŽŽŽ¦‘r²The–ðMÈ\“²c¸ãharacter“is“bšGoth“a‘ðNpathname“separator“and“an“escap˜e“c¸ãharacter.‘PIfŽ¡’ˆfollo•¸ãw“ed›ÈØb“y˜a˜spGecial‘È×glob˜c“haracter,‘å¹the˜È\˜²c“hanges‘È×the˜sense˜of˜theŽ¡’ˆfollo•¸ãwing›°Xc“haracter˜to–°Ynon-spGecial˜status.‘‚ÐOtherwise,‘ÇÈ\“²is˜view¸ãed˜asŽ¡’ˆa–UUpathname“separator.ŽŸê:Ÿ³3Ÿí³1’ŽP¸ãatternŽ’ ÂExpansionŽŽ’ˆŸ‰ff;qnŸfd‘È~jyh/\*Ž’…À~jyh/*–UU²(È*“²is“literal)ŽŽ¡‘È/dir/\[a-z?Ž’…À/dir/[a-z?–UU²(È[“²is“literal,“È?“²is“a“pattern).ŽŽ¡‘Èc:\Program‘?ýFiles\[A-z]Ž’…Àc:\Program‘?ýFiles[A-z]*ŽŽŽŽŽŽŽŒ‹‹.ê s\È ý®£8‘#ï0pdf:dest (page.139) [@thispage /XYZ @xpos @ypos]Ä10.4.‘ÇGLOBBING–UUAND“FILE“LISTINGS’®²139ŽŽ 8G ýÚŸ ‘RNote–çlthat›çkthe“ nal“case˜migh¸ãt“bGe˜considered“to“bGe˜am¸ãbiguous“(whereޤ ‘RÈ\–#û²should“bšGe“view¸ãed“as‘#úa“pathname“separator,‘W¤not“as“an“escap˜e“forŽ¡‘Rthe–­dsubsequenš¸ãt“È[“²c˜haracter.‘yôIf‘­ey˜ou“w˜an˜t“to“a˜v˜oid“this“am˜biguit˜y“onŽ¡‘RWin32,‘ª¨yš¸ãou–üshould‘ýuse“the“forw˜ard“slash‘ýÈ/“²ev˜en“for‘ýWin32“pathnamesŽ¡‘R(the–UUÈ/“²is“translated“to“È\“²in“the“output).ŽŸ5FŸ³3Ÿù³1‘XP¸ãatternŽ’Ü¿¿ExpansionŽŽ‘RŸ‰ffC?WŸfd‘Èc:/Program‘?ýFiles/[A-z]*Ž’Š¿½c:\Program–?ýFiles\WindowsUpdate“...ŽŽŽŽŽ‘#Ÿ-¿ï9pdf:dest (subsection.10.4.1) [@thispage /XYZ @xpos @ypos]Ÿ UTÍ10.4.1Ž‘0globŽŸʨï0pdf:dest (fun:glob) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(glob–?ýstrings)“:“Node“ArrayŽ¡‘îstrings–?ý:“String“SequenceŽ¡‘¿÷$(glob–?ýoptions,“strings)“:“Node“ArrayŽ¡‘îoptions–?ý:“StringŽ¡‘îstrings–?ý:“String“SequenceŽŸu‘²The–UUÈglob“²function“pGerforms“glob-expansion.Ž¡‘The–UU.›qÇand“..˜enš¸ãtries“are“alw˜a˜ys“ignored.Ž¡‘The–UUoptions“are:Ž©œ^ÇbŽŽ‘ cŒ²Do–UUnot“pGerform“Ècsh²(1)-st¸ãyle“brace“expansion.ޤÎ/ÇeŽŽ‘ ET²The–UUÈ\“²c¸ãharacter“došGes“not“escap˜e“sp˜ecial“c¸ãharacters.Ž¡ÇnŽŽ‘ cŒ²If–UUan“expansion“fails,“return“the“expansion“literally“instead“of“abGorting.Ž¡ÇiŽŽ‘1ƲIf–UUan“expansion“fails,“it“expands“to“nothing.Ž¡Ç.ŽŽ‘1ƲAlloš¸ãw–UUwildcard“patterns“to“matc˜h“ les“bGeginning“with“a“.Ž¡ÇAŽŽ‘ ±Ä²Return–UUall“ les,“including“ les“that“bGegin“with“a“.Ž¡ÇFŽŽ‘ shell“patterns˜for“ lenames˜that“Èglob˜²should“ig-ަ‘nore.Ž¡ÇGLOB‘°¡‰ffs4Ž‘#ÕALLO®9WŽŽ‘T§G²A‘(–list›( of–(¡shell“patterns.‘bàIf“a“ le“doGes“not“matc¸ãh˜a“pattern“inަ‘ÈGLOB_ALLOW²,–UUit“is“ignored.ŽŸu‘The–UUreturned“ les“are“sorted“b¸ãy“name.ŽŽŽŒ‹Œ; s\È ý®£8‘Yï0pdf:dest (page.140) [@thispage /XYZ @xpos @ypos]²140‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï9pdf:dest (subsection.10.4.2) [@thispage /XYZ @xpos @ypos]Ÿ Í10.4.2Ž‘0lsŽŸªÐï.pdf:dest (fun:ls) [@thispage /XYZ @xpos @ypos]Ÿ >‘¿÷È$(ls–?ýfiles)“:“Node“Arrayޤ ‘îfiles–?ý:“String“SequenceŽ¡‘¿÷$(ls–?ýoptions,“files)“:“Node“ArrayŽ¡‘îfiles–?ý:“String“SequenceŽŸøu‘²The–UUÈls“²function“returns“the“ lenames“in“a“directory‘ÿ*ª.Ž© >‘The›d÷.–!¨and‘dö..“en•¸ãtries˜are˜alw“a“ys–döignored.‘!¨The˜patterns˜are“shell-st¸ãyle˜patterns,Ž¡and–UUare“glob-expanded.ަ‘The–IŒoptions›I‹include“all˜of“the“options˜to“the“Èglob˜²function,‘plus˜the“follo¸ãwing.ŽŸøuÇRŽŽ‘ Ÿý²Pš¸ãerform–UUa“recursiv˜e“listing.ŽŸøv‘The–áwÈGLOB_ALLOW›áS²and“ÈGLOB_IGNORE˜²v‘ÿqÇariables“can“bGe“de ned“to“con¸ãtrol“theŽ¡globbing–UUbGehaš¸ãvior.‘qÇThe“returned“ les“are“sorted“b˜y“name.ŽŸûlï9pdf:dest (subsection.10.4.3) [@thispage /XYZ @xpos @ypos]Ÿ LWÍ10.4.3Ž‘0sub`dirsŽŸªÐï3pdf:dest (fun:subdirs) [@thispage /XYZ @xpos @ypos]¦‘¿÷È$(subdirs–?ýdirs)“:“Dir“ArrayŽ¡‘îdirs–?ý:“String“SequenceŽ¡‘¿÷$(subdirs–?ýoptions,“dirs)“:“Dir“ArrayŽ¡‘îoptions–?ý:“StringŽ¡‘îdirs–?ý:“String“SequenceŽŸøu‘²The–ÊWÈsubdirs›ÊV²function“returns“all“the˜subGdirectories“of“a“list˜of“directories,Ž¡recursiv¸ãely‘ÿ*ª.ŽŸ >‘The–UUpGossible“options“are“the“follo¸ãwing:ŽŸºXÇAŽŽ‘ ±Ä²Return–UUdirectories“that“bGegin“with“a“.ޤøuÇCŽŽ‘ N6²Ignore–UU les“according“to“È.cvsignore“²rules.Ž¡ÇPŽŽ‘ Üo²Include–UUonly“propšGer“sub˜directories.ŽŸúï4pdf:dest (section.10.5) [@thispage /XYZ @xpos @ypos]ŸLWÌ10.5Ž‘,ÿüFilesystem‘ffops3erationsŽŸ écï9pdf:dest (subsection.10.5.1) [@thispage /XYZ @xpos @ypos]Ÿ qQÍ10.5.1Ž‘0mkdirŽŸªÑï1pdf:dest (fun:mkdir) [@thispage /XYZ @xpos @ypos]¦‘¿÷Èmkdir(mode,‘?ýnode...)ޤ ‘îmode–?ý:“IntŽ¡‘înode–?ý:“NodeŽ¡‘¿÷raises‘?ýRuntimeExceptionŽ¡¡‘¿÷mkdir(node...)Ž¡‘înode–?ý:“NodeŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŽŽŒ‹DÍ s\È ý®£8‘#ï0pdf:dest (page.141) [@thispage /XYZ @xpos @ypos]Ä10.5.‘ÇFILESYSTEM‘UUOPERA‘ÿ*ªTIONS’¦?ç²141ŽŽ 8G ýÚŸ ‘2The–äFÈmkdir“²function›äEcreates“a“directory‘ÿ*ª,‘úãor˜a“set“of“directories.‘LThe“follo¸ãwingޤ ‘#options–UUare“suppGorted.ŽŸa·‘#Ç-m‘ÕTmoQÇdeŽŽ‘Tñ²SpšGecify–UUthe“p˜ermissions“of“the“created“directory‘ÿ*ª.Ž©0Û‘#Ç-pŽŽ‘28à²Create–UUparen¸ãt“directories“if“they“do“not“exist.ŽŸ0Ü‘#Ç{ŽŽ‘-¿þ²In¸ãterpret–UUthe“remaining“names“literally‘ÿ*ª.Ž‘#Ÿ–Îï9pdf:dest (subsection.10.5.2) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.5.2Ž‘0StatŽŸuTï0pdf:dest (obj:Stat) [@thispage /XYZ @xpos @ypos]¡²The–ä»ÈStat“²ob‘Ž8ject“represen¸ãts“an“information“abšGout“a“ lesystem“no˜de,‘û@as“returnedŽ¡bš¸ãy–UUthe“Èstat“²and“Èlstat“²functions.‘qÇIt“con˜tains“the“follo˜wing“ elds.ŽŸú%ÇdevŽŽ‘º¥²:‘qÇthe–UUdevice“n•¸ãum“bGer.ަÇinoŽŽ‘UP²:‘qÇthe–UUinošGde“n•¸ãum“b˜er.ަÇkindŽŽ‘ £²:›f3the–O‹kind“of“the“ le,‘Žone‘OŒof“the“follo¸ãwing:˜ÈREG‘OJ²(regular“ le),‘ŽÈDIR‘OK²(di-Ž¡‘rectory),–ŽÈÈCHR›ƒ?²(c¸ãharacter‘ƒKdevice),“ÈBLK˜²(bloGc¸ãk‘ƒKdevice),“ÈLNK˜²(sym¸ãbGolic‘ƒKlink),Ž¡‘ÈFIFO–UU²(named“pipšGe),“ÈSOCK“²(so˜c•¸ãk“et).ޤ0ÜÇpQÇermŽŽ‘Lj²:‘qÇaccess–UUrighš¸ãts,“represen˜ted“as“an“in˜teger.ަÇnlinkŽŽ‘“../a/b².ަ‘Sym¸ãbšGolic–í links“are“not‘íŸsupp˜orted“in“Win32.‘:¨Consider‘íŸusing“the“Èln-or-cpŽ¡Shell–UU²alias“for“cross-platform“pGortable“linking/cop¸ãying.ŽŸýpï9pdf:dest (subsection.10.5.8) [@thispage /XYZ @xpos @ypos]Ÿ Í10.5.8Ž‘0readlinkŽŸŽÆï4pdf:dest (fun:readlink) [@thispage /XYZ @xpos @ypos]¦‘¿÷È$(readlink–?ýnode...)“:“NodeŽ¡‘înode–?ý:“NodeŽŸv3‘²The–UUÈreadlink“²function“reads“the“v‘ÿqÇalue“of“a“sym¸ãbGolic“link.ŽŸo8ï9pdf:dest (subsection.10.5.9) [@thispage /XYZ @xpos @ypos]Ÿ +ÅÍ10.5.9Ž‘0c hmo`dŽŸŽÆï1pdf:dest (fun:chmod) [@thispage /XYZ @xpos @ypos]¦‘¿÷Èchmod(mode,‘?ýdst...)Ž¡‘îmode–?ý:“IntŽ¡‘îdst–?ý:“Node“or“ChannelŽ¡‘¿÷chmod(mode‘?ýdst...)Ž¡‘îmode–?ý:“StringŽ¡‘îdst–?ý:“Node“SequenceŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŸv3‘²The–UUÈchmod“²function“c¸ãhanges“the“pGermissions“of“the“targets.ަ‘Options:ŽŽŽŒ‹_A s\È ý®£8‘Yï0pdf:dest (page.144) [@thispage /XYZ @xpos @ypos]²144‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘YÇ-vŽŽ‘gç²Explain–UUwhat“is“happGening.ޤ q‘YÇ-rŽŽ‘f‘ŲChange–UU les“and“directories“recursiv¸ãely‘ÿ*ª.Ž¡‘YÇ-fŽŽ‘eXá²Con•¸ãtin“ue–UUon“errors.ŽŸ p‘YÇ{ŽŽ‘c¿þ²Inš¸ãterpret–UUthe“remaining“argumen˜t“literally‘ÿ*ª.Ž‘Y©X¡ï:pdf:dest (subsection.10.5.10) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.5.10Ž‘6Àc• ho“wnŽŸuTï1pdf:dest (fun:chown) [@thispage /XYZ @xpos @ypos]¤ ‘¿÷Èchown(uid,–?ýgid,“node...)Ž¡‘îuid–?ý:“IntŽ¡‘îgid–?ý:“IntŽ¡‘înode–?ý:“Node“or“ChannelŽ¡‘¿÷chown(uid,‘?ýnode...)Ž¡‘îuid–?ý:“IntŽ¡‘înode–?ý:“Node“or“ChannelŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŸ‘‘²The–”Èchown›”²function“c¸ãhanges˜the“user˜and“group˜id“of˜the“ le.‘.If“the˜Ègid“²isŽ¡not–UUspGeci ed,“it“is“not“cš¸ãhanged.‘qÇIf“either“id“is“-1,“that“id“is“not“c˜hanged.ަï:pdf:dest (subsection.10.5.11) [@thispage /XYZ @xpos @ypos]© 9Í10.5.11Ž‘6ÀtruncateŽŸuTï4pdf:dest (fun:truncate) [@thispage /XYZ @xpos @ypos]¡‘¿÷Ètruncate(length,‘?ýnode...)Ž¡‘$¿ëlength–?ý:“IntŽ¡‘$¿ënode–?ý:“Node“or“ChannelŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŸ‘‘²The–UUÈtruncate“²function“truncates“a“ le“to“the“giv¸ãen“length.ŽŸX ï:pdf:dest (subsection.10.5.12) [@thispage /XYZ @xpos @ypos]¦Í10.5.12Ž‘6ÀumaskŽ©uTï1pdf:dest (fun:umask) [@thispage /XYZ @xpos @ypos]¡‘ÿôÈ$(umask–?ýmode)“:“IntŽ¡‘$¿ëmode–?ý:“IntŽ¡‘ÿôraises‘?ýRuntimeExceptionŽŸ‘‘²Sets–Ëüthe“ le“moGde“creation“mask.›CÿThe‘Ëýprevious“mask“is“returned.˜This“v‘ÿqÇalueŽ¡is–UUnot“scopGed,“cš¸ãhanges“ha˜v˜e“global“e ect.ŽŸl/ï4pdf:dest (section.10.6) [@thispage /XYZ @xpos @ypos]Ÿ9Ì10.6Ž‘,ÿüvmounŒÌtŽŸ çï9pdf:dest (subsection.10.6.1) [@thispage /XYZ @xpos @ypos]ŸÍ10.6.1Ž‘0vmoun tަï2pdf:dest (fun:vmount) [@thispage /XYZ @xpos @ypos]¡‘ÿôÈvmount(src,‘?ýdst)Ž¡‘$¿ësrc,–?ýdst“:“DirŽ¡‘ÿôvmount(flags,–?ýsrc,“dst)Ž¡‘$¿ëflags–?ý:“StringŽ¡‘$¿ësrc,–?ýdst“:“DirŽŽŽŒ‹‘h s\È ý®£8‘#ï0pdf:dest (page.145) [@thispage /XYZ @xpos @ypos]Ä10.7.‘ÇFILE‘UUPREDICA‘ÿ*ªTES’Ñq¶²145ŽŽ 8G ýÚŸ ‘2\Moun¸ãt"–ñDthe›ñCÈsrc“²directory˜on“the˜Èdst“²directory‘ÿ*ª.‘E“This˜is“a˜virtual“moun¸ãt,ޤ ‘#c•¸ãhanging›wthe‘xbGeha“vior˜of–xthe˜È$(file‘?ý...)“²function.‘¦.When“the˜È$(file‘?ýstr)Ž¡‘#²function–ð†is›ð…used,‘Rthe“resulting˜ le“is˜takš¸ãen“relativ˜e“to›ð…the“Èsrc“²directory˜if“theŽ¡‘# le–UUexists.‘qÇOtherwise,“the“ le“is“relativš¸ãe“to“the“curren˜t“directory‘ÿ*ª.Ž© ú‘2The–Åmain“purpšGose“of“the“Èvmount“²function‘Æis“to“supp˜ort“m¸ãultiple“builds“withŽ¡‘#separate–UUcon gurations“or“arc¸ãhitectures.ަ‘2The–UUoptions“are“as“follo¸ãws.ޤ\î‘#ÇlŽŽ‘+1ƲCreate–UUsym¸ãbGolic“links“to“ les“in“the“Èsrc“²directory‘ÿ*ª.ŽŸ{é‘#ÇcŽŽ‘-p²Cop¸ãy–UU les“from“the“Èsrc“²directory‘ÿ*ª.Ž¡‘2Moun¸ãt–UUopšGerations“are“scop˜ed.Ž‘#©u\ï9pdf:dest (subsection.10.6.2) [@thispage /XYZ @xpos @ypos]Ÿ -3Í10.6.2Ž‘0add-pro‘Àject-directoriesŽŸåUïCpdf:dest (fun:add-project-directories) [@thispage /XYZ @xpos @ypos]Ÿ ɦ‘ÿôÈadd-project-directories(dirs)ޤ ‘$¿ëdirs–?ý:“Dir“ArrayŽŸ{葲Add–&Gthe›&Hdirectories“to˜the“set˜of“directories˜that“omak¸ãe˜considers“to˜bGe“partŽ¡of–Ë„the“pro‘Ž8ject.‘CØThis“is“mainly“used‘Ë…to“a•¸ãv“oid›Ë„omak“e˜complaining‘Ë…that˜the˜curren“tŽ¡directory–UUis“not“part“of“the“pro‘Ž8ject.ަï9pdf:dest (subsection.10.6.3) [@thispage /XYZ @xpos @ypos]Ÿ -3Í10.6.3Ž‘0remo• v“e-pro‘Àject-directoriesŽŸåUïFpdf:dest (fun:remove-project-directories) [@thispage /XYZ @xpos @ypos]Ÿ ɦ‘ÿôÈremove-project-directories(dirs)Ž¡‘$¿ëdirs–?ý:“Dir“ArrayŽ©{葲Remo•¸ãv“ed–[#the›[$directories“from˜the“set˜of“directories˜that“omak¸ãe˜considers“toŽ¡bGe–ïxpart“of›ïythe“pro‘Ž8ject.‘OÓThis“is“mainly“used˜to“cancel“a“È.SUBDIRS‘ï_²from“includingŽ¡a–UUdirectory“if“it“is“determined“that“the“directory“došGes“not“need“to“b˜e“compiled.ŽŸˆêï4pdf:dest (section.10.7) [@thispage /XYZ @xpos @ypos]Ÿ-3Ì10.7Ž‘,ÿüFile‘ffpredicatesŽŸ Δï9pdf:dest (subsection.10.7.1) [@thispage /XYZ @xpos @ypos]Ÿ R.Í10.7.1Ž‘0testŽŸï0pdf:dest (fun:test) [@thispage /XYZ @xpos @ypos]Ÿ û‘¿÷Ètest(exp)–?ý:“BoolŽ¡‘îexp–?ý:“String“Sequenceަ‘²The–UUÎexpr‘ÿ}'ession‘¸²grammar“is“as“follo¸ãws:ަ‘¸ŽŽŽ‘È!‘UUÎexpr–ÿ}'ession›¸²:‘qÇÎexpr“ession˜²is–UUnot“trueޤ{è‘¸ŽŽŽ‘Îexpr–ÿ}'ession1›°[È-a‘UUÎexpr“ession2˜²:‘qÇbGoth–UUexpressions“are“trueŽŸ{é‘¸ŽŽŽ‘Îexpr–ÿ}'ession1›°[È-o‘UUÎexpr“ession2˜²:‘qÇat–UUleast“one“expression“is“trueŽ¡‘¸ŽŽŽ‘È(–UUÎexpr›ÿ}'ession‘¸È)“²:‘qÇÎexpr˜ession‘¸²is“trueŽŽŽŒ‹’pD s\È ý®£8‘Yï0pdf:dest (page.146) [@thispage /XYZ @xpos @ypos]²146‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘h²The–UUbase“expressions“are:ŽŸ;‘h¸ŽŽŽ‘rÈ-n–UUÎstring›7Ò²:‘qÇThe“Îstring˜²has“nonzero“lengthŽ©;‘h¸ŽŽŽ‘rÈ-z–UUÎstring›7Ò²:‘qÇThe“Îstring˜²has“zero“lengthޤ;‘h¸ŽŽŽ‘rÎstring–7ÒÈ=›UUÎstring“²:‘qÇThe˜strings˜are˜equalŽ¡‘h¸ŽŽŽ‘rÎstring–7ÒÈ!=›UUÎstring“²:‘qÇThe˜strings˜are˜not˜equalަ‘h¸ŽŽŽ‘rÎint1–°[È-eq›UUÎint2“²:‘qÇThe˜in¸ãtegers˜are˜equalŽ¡‘h¸ŽŽŽ‘rÎint1–°[È-ne›UUÎint2“²:‘qÇThe˜in¸ãtegers˜are˜not˜equalŽ¡‘h¸ŽŽŽ‘rÎint1–°[È-gt›UUÎint2“²:‘qÇÎint1“²is˜larger˜than˜Îint2Ž¡‘h¸ŽŽŽ‘rÎint1–°[È-ge›UUÎint2“²:‘qÇÎint2“²is˜not˜larger˜than˜Îint1ަ‘h¸ŽŽŽ‘rÎint1–°[È-lt›UUÎint2“²:‘qÇÎint1“²is˜smaller˜than˜Îint2Ž¡‘h¸ŽŽŽ‘rÎint1–°[È-le›UUÎint2“²:‘qÇÎint1“²is˜not˜larger˜than˜Îint2Ž¡‘h¸ŽŽŽ‘rÎ le1–Ç•È-ef›lŽÎ le2“²:‘ :On˜Unix,‘r]Î le1–Ç”²and›lÎ le2“²ha•¸ãv“e˜the–lŽsame˜device“and˜inoGdeŽŸ ‘rn•¸ãum“bGer.‘qÇOn–UUWin32,“Î le1›°[²and“Î le2˜²ha•¸ãv“e–UUthe“same“name.ަ‘h¸ŽŽŽ‘rÎ le1–°[È-nt›UUÎ le2“²:‘qÇÎ le1“²is˜new¸ãer˜than˜Î le2Ž¡‘h¸ŽŽŽ‘rÎ le1–°[È-ot›UUÎ le2“²:‘qÇÎ le1“²is˜older˜than˜Î le2Ž¡‘h¸ŽŽŽ‘rÈ-b–UUÎ le‘°²:‘qÇThe“ le“is“a“blošGc¸ãk“sp˜ecial“ leަ‘h¸ŽŽŽ‘rÈ-c–UUÎ le‘°²:‘qÇThe“ le“is“a“c¸ãharacter“spGecial“ leŽ¡‘h¸ŽŽŽ‘rÈ-d–UUÎ le‘°²:‘qÇThe“ le“is“a“directoryŽ¡‘h¸ŽŽŽ‘rÈ-e–UUÎ le‘°²:‘qÇThe“ le“existsަ‘h¸ŽŽŽ‘rÈ-f–UUÎ le‘°²:‘qÇThe“ le“is“a“normal“ leŽ¡‘h¸ŽŽŽ‘rÈ-g–UUÎ le‘°²:‘qÇThe“setÈ-group-id“²bit“is“set“on“the“ leŽ¡‘h¸ŽŽŽ‘rÈ-G–UUÎ le‘°²:‘qÇThe“ le's“group“is“the“currenš¸ãt“e ectiv˜e“groupŽ¡‘h¸ŽŽŽ‘rÈ-h–UUÎ le‘°²:‘qÇThe“ le“is“a“sym¸ãbGolic“link“(also“È-L²)ަ‘h¸ŽŽŽ‘rÈ-k–UUÎ le‘°²:‘qÇThe“ le's“stic¸ãky“bit“is“setŽ¡‘h¸ŽŽŽ‘rÈ-L–UUÎ le‘°²:‘qÇThe“ le“is“a“sym¸ãbGolic“link“(also“È-h²)Ž¡‘h¸ŽŽŽ‘rÈ-O–UUÎ le‘°²:‘qÇThe“ le's“oš¸ãwner“is“the“curren˜t“e ectiv˜e“userަ‘h¸ŽŽŽ‘rÈ-p–UUÎ le‘°²:‘qÇThe“ le“is“a“named“pipGeŽ¡‘h¸ŽŽŽ‘rÈ-r–UUÎ le‘°²:‘qÇThe“ le“is“readableŽŽŽŒ‹“zø s\È ý®£8‘#ï0pdf:dest (page.147) [@thispage /XYZ @xpos @ypos]Ä10.7.‘ÇFILE‘UUPREDICA‘ÿ*ªTES’Ñq¶²147ŽŽ 8G ýÚŸ ‘2¸ŽŽŽ‘<È-s–UUÎ le‘°²:‘qÇThe“ le“is“empt¸ãyޤF˜‘2¸ŽŽŽ‘<È-S–UUÎ le‘°²:‘qÇThe“ le“is“a“soGc•¸ãk“etŽ©F—‘2¸ŽŽŽ‘<È-u–UUÎ le‘°²:‘qÇThe“setÈ-user-id“²bit“is“set“on“the“ leŽ¡‘2¸ŽŽŽ‘<È-w–UUÎ le‘°²:‘qÇThe“ le“is“writableަ‘2¸ŽŽŽ‘<È-x–UUÎ le‘°²:‘qÇThe“ le“is“executableŽ©0{‘2A–UUÎstring‘7Ò²is“anš¸ãy“sequence“of“c˜haracters;“leading“È-“²c˜haracters“are“allo˜w˜ed.ޤ ‘2An–šÔÎint‘¬²is“a‘šÓÎstring‘}Q²that“can“bGe“inš¸ãterpreted“as“an“in˜teger.‘BCUnlik˜e“traditionalŽ¡‘#v¸ãersions–.of›/the“test˜program,‘¯$the˜leading“c•¸ãharacters˜ma“y–.spGecify“an˜arit¸ãy‘ÿ*ª.‘ISTheŽ¡‘#pre x–ñÅÈ0b›ñƲmeans“the“n•¸ãum“bGers–ñÅis˜in“binary;‘?ýthe˜pre x“È0o“²means“the˜n•¸ãum“bGer‘ñÅisŽ¡‘#in–:¢ošGctal;‘Cˆthe‘:£pre x“È0x“²means“the“n•¸ãum“b˜er–:¢is“in“hexadecimal.‘háAn“Îint‘-z²can“also“b˜eŽ¡‘#spGeci ed–UUas“È-l“Îstring²,“whic¸ãh“ev‘ÿqÇaluates“to“the“length“of“the“Îstring².Ž¡‘2A–UUÎ le‘°²is“a“Îstring‘7Ò²that“represen¸ãts“the“name“of“a“ le.Ž¡‘2The–;syn¸ãtax›ͽmirrors“that˜of“the˜Ètest²(1)“program.‘ÛIf“y¸ãou˜are“on˜a“UnixŽ¡‘#system,–UUthe“man“page“explains“more.‘qÇHere“are“some“examples.ަ‘7ÿôÈ#–?ýCreate“an“empty“fileŽ¡‘7ÿôosh>–?ýtouch“fooŽ¡‘7ÿô#–?ýIs“the“file“empty?Ž¡‘7ÿôosh>–?ýtest(-e“foo)Ž¡‘7ÿô-–?ý:“trueŽ¡‘7ÿôosh>–?ýtest(!“-e“foo)Ž¡‘7ÿô-–?ý:“falseŽ¡‘7ÿô#–?ýCreate“another“fileŽ¡‘7ÿôosh>–?ýtouch“booŽ¡‘7ÿô#–?ýIs“the“newer“file“newer?Ž¡‘7ÿôosh>–?ýtest(boo“-nt“foo)Ž¡‘7ÿô-–?ý:“trueŽ¡‘7ÿô#–?ýA“more“complex“queryŽ¡‘7ÿô#–?ýboo“is“newer“than“foo,“and“foo“is“emptyŽ¡‘7ÿôosh>–?ýtest(\(“boo“-nt“foo“\)“-a“-e“foo)Ž¡‘7ÿô-–?ý:“trueŽ‘#Ÿ ®bï9pdf:dest (subsection.10.7.2) [@thispage /XYZ @xpos @ypos]ŸÍ10.7.2Ž‘0 ndŽŸuTï0pdf:dest (fun:find) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èfind(exp)–?ý:“Node“ArrayŽ¡‘îexp–?ý:“String“Sequenceަ‘²The–pbÈfind“²function“searcš¸ãhes“a“directory‘parecursiv˜ely‘ÿ*ª,‘·%returning“the“ les“forŽ¡whic¸ãh–UUthe“expression“ev‘ÿqÇaluates“to“true.Ž¡‘The–ØÍexpression“argumenš¸ãt‘ØÎuses“the“same“syn˜tax“as‘ØÎthe“Ètest“²function,‘ù«withŽ¡the–UUfollo¸ãwing“exceptions.ŽŸ~öï.pdf:dest (Item.9) [@thispage /XYZ @xpos @ypos]Ÿ ±…‘ 8ä1.ŽŽŽ‘The–Ð9expression“ma¸ãy“bšGegin“with“a‘Ð:directory‘ÿ*ª.‘âsIf“not“sp˜eci ed,‘îòthe“curren¸ãtŽ¡‘directory–UUis“searc¸ãhed.ŽŽŽŒ‹”ƒý s\È ý®£8‘Yï0pdf:dest (page.148) [@thispage /XYZ @xpos @ypos]²148‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï/pdf:dest (Item.10) [@thispage /XYZ @xpos @ypos]Ÿ ‘ 8ä²2.ŽŽŽ‘The–UUÈ{}“²string“expands“to“the“curren¸ãt“ le“bGeing“examined.ŽŸÊ{‘The–«¼syn¸ãtax›«»of“the˜expression“is˜the“same“as˜Ètest²,‘ÁUwith“the˜follo¸ãwing“addi-ޤ tions.Ž©Êz‘¸ŽŽŽ‘È-name–ëYÎstring‘Íײ:‘ÏThe‘ëZcurrenš¸ãt“ le“matc˜hes›ëZthe“glob“expression˜(see“Sec-Ž¡‘tion‘UUïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.10.4) >> >> 10.4ïpdf:eann).ŽŸÊ{‘¸ŽŽŽ‘È-regex–UUÎstring‘7Ò²:‘qÇThe“currenš¸ãt“ le“matc˜hes“the“regular“expressionަ‘The–¦IÈfind›¦H²function“pGerforms˜a“recursiv¸ãe˜scan“of˜all“subGdirectories.‘d¡The“fol-Ž¡lo¸ãwing–UUcall“is“bšGeing“run“from“the“ro˜ot“of“the“Èomake“²source“directory‘ÿ*ª.ŽŸý‘ÿôÈosh>–?ýfind(.“-name“fo*“)Ž¡‘ÿô-–?ý:“ÿÜ/home/jyh/.../omake/mk/.svn/formatŽ¡‘>ÿÜ/home/jyh/.../omake/RPM/.svn/formatŽ¡‘>ÿÜ...Ž¡‘>ÿÜ/home/jyh/.../omake/osx_resources/installer_files/.svn/format>ަ‘²Another– example,‘7Jlisting“only› those“ les“that“are“normal˜ les“or“sym¸ãbGolicŽ¡links.ŽŸý‘ÿôÈosh>–?ýfind(.“-name“fo*“-a“\(“-f“{}“-o“-L“{}“\))Ž¡‘ÿô-–?ý:“ÿÜ/home/jyh/.../omake/mk/.svn/formatŽ¡‘>ÿÜ/home/jyh/.../omake/RPM/.svn/formatŽ¡‘>ÿÜ...Ž¡‘>ÿÜ/home/jyh/.../omake/osx_resources/installer_files/.svn/format>ŽŸ$šï4pdf:dest (section.10.8) [@thispage /XYZ @xpos @ypos]ŸùºÌ10.8Ž‘,ÿüIO‘fffunctionsŽŸ ²ï9pdf:dest (subsection.10.8.1) [@thispage /XYZ @xpos @ypos]Ÿ2žÍ10.8.1Ž‘0Standard‘€c hannelsŽŸÓŠ²The–UUfolloš¸ãwing“v‘ÿqÇariables“de ne“the“standard“c˜hannels.ޤÉïï3pdf:dest (section*.18) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (var:stdin) [@thispage /XYZ @xpos @ypos]© @×ÇstdinŽŸÊ{Èstdin–?ý:“InChannelŽŸ—Ü‘²The–UUstandard“input“c¸ãhannel,“opGen“for“reading.Ž¡ï3pdf:dest (section*.19) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (var:stdout) [@thispage /XYZ @xpos @ypos]¦ÇstdoutŽŸÊ{Èstdout–?ý:“OutChannelŽŸ—Ü‘²The–UUstandard“output“c¸ãhannel,“opGen“for“writing.ŽŽŽŒ‹•ú s\È ý®£8‘#ï0pdf:dest (page.149) [@thispage /XYZ @xpos @ypos]Ä10.8.‘ÇIO‘UUFUNCTIONS’⇠²149ŽŽ 8G ýÚ‘#ï3pdf:dest (section*.20) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (var:stderr) [@thispage /XYZ @xpos @ypos]Ÿ ÇstderrŽŸÕÈstderr–?ý:“OutChannelŽŸÔÿ‘²The–UUstandard“error“c¸ãhannel,“opGen“for“writing.ŽŸ¯Ÿï9pdf:dest (subsection.10.8.2) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.8.2Ž‘0op`en-in-stringŽ©ʨï:pdf:dest (fun:open-in-string) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–é&Èopen-in-string›é%²treats“a“string˜as“if“it˜w¸ãere“a˜ le“and“returns˜a“c¸ãhannelޤ for‘UUreading.ŽŸŠ@‘¿÷È$(open-in-string–?ýs)“:“ChannelŽ¡‘$¿ës–?ý:“StringŽŸö¼ï9pdf:dest (subsection.10.8.3) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ10.8.3Ž‘0op`en-out-string,‘€out-con• ten“tsަï;pdf:dest (fun:open-out-string) [@thispage /XYZ @xpos @ypos]ï8pdf:dest (fun:out-contents) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–ä§Èopen-out-string›䨲creates“a˜c¸ãhannel“that˜writes“to˜a“string˜instead“of˜a“ le.Ž¡The–UUstring“maš¸ãy“bGe“retriev˜ed“with“the“Èout-contents“²function.ŽŸŠ@‘¿÷È$(open-out-string)–?ý:“ChannelŽ¡‘¿÷$(out-contents–?ýchan)“:“StringŽ¡‘$¿ëchan–?ý:“OutChannelŽŸ ½Øï9pdf:dest (subsection.10.8.4) [@thispage /XYZ @xpos @ypos]ŸÍ10.8.4Ž‘0fop`enަï1pdf:dest (fun:fopen) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²The–UUÈfopen“²function“opGens“a“ le“for“reading“or“writing.ŽŸŠ@‘¿÷È$(fopen–?ýfile,“mode)“:“ChannelŽ¡‘îfile–?ý:“FileŽ¡‘îmode–?ý:“StringŽŸŠ?‘²The–ªªÈfile“²is“the“name“of“the“ le“to‘ª«bšGe“op˜ened.‘qÆThe“Èmode“²is“a“com¸ãbinationŽ¡of–UUthe“folloš¸ãwing“c˜haracters.ŽŸÕÇrŽŽ‘ ¼q²OpšGen–UUthe“ le“for“reading;“it“is“an“error“if“the“ le“do˜es“not“exist.Ž©jÇwŽŽ‘ N6²OpšGen–UUthe“ le“for“writing;“the“ le“is“created“if“it“do˜es“not“exist.ޤj€ÇaŽŽ‘ —²OpšGen–UUthe“ le“in“app˜end“mo˜de;“the“ le“is“created“if“it“do˜es“not“exist.Ž¡Ç+ŽŽ‘ ñIJOpšGen–UUthe“ le“for“b˜oth“reading“and“writing.Ž¡ÇtŽŽ‘ xâ²OpšGen–UUthe“ le“in“text“mo˜de“(default).Ž¡ÇbŽŽ‘ cŒ²OpšGen–UUthe“ le“in“binary“mo˜de.Ž¡ÇnŽŽ‘ cŒ²OpšGen–UUthe“ le“in“non•¸ãblo˜c“king‘UUmo˜de.ަÇxŽŽ‘ ŲF‘ÿ*ªail–UUif“the“ le“already“exists.ŽŸÕ‘Binary–X6moGde›X5is“not“signi can¸ãt“on˜Unix“systems,‘ŠÖwhere“text“and˜binary“moGdesŽŸ are‘UUequiv‘ÿqÇalen¸ãt.ŽŽŽŒ‹––» s\È ý®£8‘Yï0pdf:dest (page.150) [@thispage /XYZ @xpos @ypos]²150‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï9pdf:dest (subsection.10.8.5) [@thispage /XYZ @xpos @ypos]Ÿ Í10.8.5Ž‘0closeŽŸuTï1pdf:dest (fun:close) [@thispage /XYZ @xpos @ypos]¤ ‘ÿôÈ$(close‘?ýchannel...)Ž¡‘$¿ëchannel–?ý:“ChannelŽ©ÇK‘²The–UUÈclose“²function“closes“a“ le“that“w¸ãas“previously“opGened“with“Èfopen².ŽŸÕ)ï9pdf:dest (subsection.10.8.6) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ10.8.6Ž‘0read,‘€input-lineŽŸʨï0pdf:dest (fun:read) [@thispage /XYZ @xpos @ypos]ï6pdf:dest (fun:input-line) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(read–?ýchannel,“amount)“:“StringŽ¡‘¿÷$(input-line–?ýchannel)“:“StringŽ¡‘îchannel–?ý:“InChannelŽ¡‘îamount‘ ú:‘?ýIntŽ¡‘¿÷raises‘?ýRuntimeExceptionަ‘²The–\áÈread“²function›\àreads“up“to“Èamount˜²bš¸ãytes“from“an“input“c˜hannel,‘žÃandŽ¡returns–Wßthe“data“that›Wàw¸ãas“read.‘yeThe“Èinput-line“²function˜reads“a“line“fromŽ¡the–| le›|and“returns˜the“line˜read,‘…²without˜the“line˜terminator.‘åÛIf˜an“end-of- leŽ¡condition–UUis“reac¸ãhed,“bGoth“functions“raise“a“ÈRuntimeException“²exception.ŽŸÕ)ï9pdf:dest (subsection.10.8.7) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ10.8.7Ž‘0writeŽŸuTï1pdf:dest (fun:write) [@thispage /XYZ @xpos @ypos]¡‘¿÷È$(write–?ýchannel,“buffer,“offset,“amount)“:“StringŽ¡‘îchannel–?ý:“OutChannelŽ¡‘îbuffer‘ ú:‘?ýStringŽ¡‘îoffset‘ ú:‘?ýIntŽ¡‘îamount‘ ú:‘?ýIntŽ¡‘¿÷$(write–?ýchannel,“buffer)“:“StringŽ¡‘îchannel–?ý:“OutChannelŽ¡‘îbuffer‘ ú:‘?ýStringŽ¡‘¿÷raises‘?ýRuntimeExceptionަ‘²In–Ã}the›Ã|4-argumen¸ãt“form,‘à¨the“Èwrite“²function˜writes“b¸ãytes“to“the˜output“c¸ãhan-Ž¡nel– VÈchannel“²from“the“Èbuffer²,‘*ïstarting“at“pGosition“Èoffset².‘`Up“to“Èamount“²b¸ãytesŽ¡are–UUwritten.‘qÇThe“function“returns“the“n•¸ãum“bGer–UUof“bš¸ãytes“that“w˜ere“written.Ž¡‘The–UU3-argumen¸ãt“form“is“similar,“but“the“Èoffset“²is“0.Ž¡‘In–é5the›é42-argumen¸ãt“form,‘þÕthe˜Èoffset“²is“0,‘þÕand˜the“Èamount˜²if“the“length˜of“theŽ¡Èbuffer².Ž¡‘If–]-an›].end-of- le“condition“is˜reac¸ãhed,‘ŽÏthe“function“raises˜a“ÈRuntimeExceptionŽ¡²exception.ŽŸŽ ï9pdf:dest (subsection.10.8.8) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.8.8Ž‘0lseekŽŸuTï1pdf:dest (fun:lseek) [@thispage /XYZ @xpos @ypos]¡‘ÿôÈ$(lseek–?ýchannel,“offset,“whence)“:“IntŽ¡‘$¿ëchannel–?ý:“ChannelŽ¡‘$¿ëoffset‘ ú:‘?ýIntŽ¡‘$¿ëwhence‘ ú:‘?ýStringŽ¡‘ÿôraises‘?ýRuntimeExceptionŽŽŽŒ‹—Ÿÿ s\È ý®£8‘#ï0pdf:dest (page.151) [@thispage /XYZ @xpos @ypos]Ä10.8.‘ÇIO‘UUFUNCTIONS’⇠²151ŽŽ 8G ýÚŸ ‘2The–QÈlseek›Q²function“repGositions“the“o set˜of“the“c¸ãhannel˜Èchannel“²accordingŽŸ ‘#to–UUthe“Èwhence“²directivš¸ãe,“as“follo˜ws:Ž©äa‘#ÇSEEK‘°¡‰ffs4Ž‘#ÕSETŽŽ‘`™²The–UUo set“is“set“to“Èoffset².ޤ('‘#ÇSEEK‘°¡‰ffs4Ž‘#ÕCURŽŽ‘dnk²The–UUo set“is“set“to“its“currenš¸ãt“pGosition“plus“Èoffset“²b˜ytes.Ž¡‘#ÇSEEK‘°¡‰ffs4Ž‘#ÕENDŽŽ‘dO²The–UUo set“is“set“to“the“size“of“the“ le“plus“Èoffset“²b¸ãytes.ަ‘2The–UUÈlseek“²function“returns“the“new“pGosition“in“the“ le.Ž‘#Ÿ“ï9pdf:dest (subsection.10.8.9) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.8.9Ž‘0rewindŽŸuTï2pdf:dest (fun:rewind) [@thispage /XYZ @xpos @ypos]¤ ‘¿÷Èrewind(channel...)Ž¡‘îchannel–?ý:“Channelަ‘²The–âuÈrewind›ât²function“set˜the“curren¸ãt˜ le“pGosition˜to“the˜bGeginning“of˜the“ le.ŽŸ“ï:pdf:dest (subsection.10.8.10) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.8.10Ž‘6ÀtellŽŸuTï0pdf:dest (fun:tell) [@thispage /XYZ @xpos @ypos]¡‘ÿôÈ$(tell–?ýchannel...)“:“Int...Ž¡‘$¿ëchannel–?ý:“ChannelŽ¡‘ÿôraises‘?ýRuntimeExceptionަ‘²The–UUÈtell“²function“returns“the“curren¸ãt“pGosition“of“the“Èchannel².Ž©“ï:pdf:dest (subsection.10.8.11) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.8.11Ž‘6À ushŽŸuTï1pdf:dest (fun:flush) [@thispage /XYZ @xpos @ypos]¡‘¿÷È$(flush‘?ýchannel...)Ž¡‘îchannel–?ý:“OutChannelŽŸäb‘²The–º©Èflush“²function“can‘ºªbšGe“used“only“on“ les“that“are“op˜en‘ºªfor“writing.‘¡ÃItŽ¡ ushes–UUall“pGending“data“to“the“ le.ަï:pdf:dest (subsection.10.8.12) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.8.12Ž‘6Àc hannel-nameŽŸuTï8pdf:dest (fun:channel-name) [@thispage /XYZ @xpos @ypos]¡‘¿÷È$(channel-name–?ýchannel...)“:“StringŽ¡‘îchannel–?ý:“ChannelŽ©äa‘²The–H‰Èchannel-name“²function“returns“the“name“that“is“assoGciated“with“theŽ¡c¸ãhannel.ŽŸ ¡Hï:pdf:dest (subsection.10.8.13) [@thispage /XYZ @xpos @ypos]ŸÍ10.8.13Ž‘6ÀdupŽŸʨï/pdf:dest (fun:dup) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘ÿôÈ$(dup–?ýchannel)“:“ChannelŽ¡‘$¿ëchannel–?ý:“ChannelŽ¡‘ÿôraises‘?ýRuntimeExceptionަ‘²The–¨âÈdup›¨á²function“returns“a˜new“c¸ãhannel“referencing˜the“same“ le˜as“theŽ¡argumen¸ãt.ŽŽŽŒ‹˜ª s\È ý®£8‘Yï0pdf:dest (page.152) [@thispage /XYZ @xpos @ypos]²152‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï:pdf:dest (subsection.10.8.14) [@thispage /XYZ @xpos @ypos]Ÿ Í10.8.14Ž‘6Àdup2ŽŸ )|ï0pdf:dest (fun:dup2) [@thispage /XYZ @xpos @ypos]Ÿ Í‘¿÷Èdup2(channel1,‘?ýchannel2)ޤ ‘îchannel1–?ý:“ChannelŽ¡‘îchannel2–?ý:“ChannelŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŸ¸„‘²The–UUÈdup2“²function“causes“Èchannel2“²to“refer“to“the“same“ le“as“Èchannel1².ŽŸCï:pdf:dest (subsection.10.8.15) [@thispage /XYZ @xpos @ypos]© 5=Í10.8.15Ž‘6Àset-non• blo`c“kŽŸÔ(ï8pdf:dest (fun:set-nonblock) [@thispage /XYZ @xpos @ypos]Ÿ n!‘¿÷Èset-nonblock-mode(mode,‘?ýchannel...)Ž¡‘îchannel–?ý:“ChannelŽ¡‘îmode–?ý:“StringŽŸ¸ƒ‘²The–»EÈset-nonblock-mode›»D²function“sets“the˜non•¸ãbloGc“king–»E ag“on˜the“giv¸ãenŽ¡cš¸ãhannel.‘+jWhen–è‹IO‘èeis“pGerformed“on‘èŒthe“c˜hannel,‘ Xand“the‘èŒopšGeration“cannot“b˜eŽ¡completed–UUimmediately‘ÿ*ª,“the“opGerations“raises“a“ÈRuntimeException².ŽŸDï:pdf:dest (subsection.10.8.16) [@thispage /XYZ @xpos @ypos]¦Í10.8.16Ž‘6Àset-close-on-exec-mo`deŽŸÔ(ïBpdf:dest (fun:set-close-on-exec-mode) [@thispage /XYZ @xpos @ypos]Ÿ n!‘¿÷Èset-close-on-exec-mode(mode,‘?ýchannel...)Ž¡‘îchannel–?ý:“ChannelŽ¡‘îmode–?ý:“StringŽ¡‘¿÷raises‘?ýRuntimeExceptionŽ©¸ƒ‘²The–°éÈset-close-on-exec-mode“²function“sets‘°êthe“close-on-exec“ ags“for“theŽ¡giv•¸ãen›»rc“hannels.‘¤If–»qthe˜close-on-exec˜ ag“is˜set,‘Ôùthe“c¸ãhannel˜is˜not“inherited˜b¸ãyŽ¡c¸ãhild–UUproGcesses.‘qÇOtherwise“it“is.ŽŸÊ'ï:pdf:dest (subsection.10.8.17) [@thispage /XYZ @xpos @ypos]Ÿ |ZÍ10.8.17Ž‘6Àpip`eŽŸ )|ï0pdf:dest (fun:pipe) [@thispage /XYZ @xpos @ypos]Ÿ Í‘¿÷È$(pipe)–?ý:“PipeŽ¡‘¿÷raises‘?ýRuntimeExceptionަ‘²The–yÈpipe›x²function“creates˜a“ÈPipe˜²ob‘Ž8ject,‘?Awhic¸ãh“has˜t•¸ãw“o–y elds.‘£1The“ÈreadŽ¡² eld–÷"is›÷#a“c¸ãhannel˜that“is“opGened˜for“reading,‘–and“the“Èwrite˜² eld“is˜a“c¸ãhannelŽ¡that–UUis“opGened“for“writing.ŽŸÊ'ï:pdf:dest (subsection.10.8.18) [@thispage /XYZ @xpos @ypos]Ÿ |YÍ10.8.18Ž‘6Àmk foŽŸÔ)ï2pdf:dest (fun:mkfifo) [@thispage /XYZ @xpos @ypos]Ÿ n!‘¿÷Èmkfifo(mode,‘?ýnode...)Ž¡‘îmode–?ý:“IntŽ¡‘înode–?ý:“Nodeަ‘²The–UUÈmkfifo“²function“creates“a“named“pipGe.ŽŽŽŒ‹™³6 s\È ý®£8‘#ï0pdf:dest (page.153) [@thispage /XYZ @xpos @ypos]Ä10.8.‘ÇIO‘UUFUNCTIONS’⇠²153ŽŽ 8G ýÚ‘#ï:pdf:dest (subsection.10.8.19) [@thispage /XYZ @xpos @ypos]Ÿ Í10.8.19Ž‘6ÀselectŽŸbãï2pdf:dest (fun:select) [@thispage /XYZ @xpos @ypos]© á‘¿÷È$(select–?ýrfd...,“wfd...,“wfd...,“timeout)“:“Selectޤ ‘îrfd–?ý:“InChannelŽ¡‘îwfd–?ý:“OutChannelŽ¡‘îefd–?ý:“ChannelŽ¡‘îtimeout–?ý:“floatŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŸO‡‘²The–)Èselect›)²function“pGolls˜for“pGossible“IO‘)on“a“set˜of“c¸ãhannels.‘cThe˜Èrfd“²areŽ¡a–•ºsequence›•»of“c¸ãhannels“for˜reading,‘¥ÓÈwfd˜²are“a˜sequence“of“c¸ãhannels˜for“writing,Ž¡and–ÔÜÈefd›ÔÛ²are“a“sequence“of˜c¸ãhannels“to“pGoll“for˜error“conditions.‘ð[The“ÈtimeoutŽ¡²spGeci es–UUthe“maximš¸ãum“amoun˜t“of“time“to“w˜ait“for“ev˜en˜ts.ަ‘On–üÈsuccessful›üÉreturn,‘~Èselect“²returns˜a“ÈSelect˜²ob‘Ž8ject,‘~whic¸ãh“has˜the“follo¸ãw-Ž¡ing‘UU elds:ŽŸ;¥ÇreadŽŽ‘üj²An–UUarraš¸ãy“of“c˜hannels“a˜v‘ÿqÇailable“for“reading.ŽŸO‡ÇwriteŽŽ‘ú£²An–UUarraš¸ãy“of“c˜hannels“a˜v‘ÿqÇailable“for“writing.ŽŸO†ÇerrorŽŽ‘:¥²An–UUarraš¸ãy“of“c˜hannels“on“whic˜h“an“error“has“oGccurred.ŽŸ“Ïï:pdf:dest (subsection.10.8.20) [@thispage /XYZ @xpos @ypos]Ÿ "Í10.8.20Ž‘6Àlo`c kfŽŸbãï1pdf:dest (fun:lockf) [@thispage /XYZ @xpos @ypos]© â‘ÿôÈlockf(channel,–?ýcommand,“len)Ž¡‘$¿ëchannel–?ý:“ChannelŽ¡‘$¿ëcommand–?ý:“StringŽ¡‘$¿ëlen–?ý:“IntŽ¡‘ÿôraises‘?ýRuntimeExceptionŽŸO†‘²The–>Èlockf“²function“places‘>a“loGcš¸ãk“on“a“region“of“the“c˜hannel.‘,The“regionŽ¡starts–UUat“the“currenš¸ãt“pGosition“and“extends“for“Èlen“²b˜ytes.ަ‘The–UUpGossible“v‘ÿqÇalues“for“Ècommand“²are“the“follo¸ãwing.ŽŸ;¥ÇF‘°¡‰ffs4Ž‘#ÕULOCKŽŽ‘:²UnloGc¸ãk–UUa“region.ޤO†ÇF‘°¡‰ffs4Ž‘#ÕLOCKŽŽ‘1@8²LošGc¸ãk–UUa“region“for“writing;“blo˜c¸ãk“if“already“lo˜c•¸ãk“ed.Ž©O‡ÇF‘°¡‰ffs4Ž‘#ÕTLOCKŽŽ‘9@5²LošGc¸ãk–UUa“region“for“writing;“fail“if“already“lo˜c•¸ãk“ed.Ž¡ÇF‘°¡‰ffs4Ž‘#ÕTESTŽŽ‘.R²T‘ÿ*ªest–UUa“region“for“other“loGc¸ãks.ަÇF‘°¡‰ffs4Ž‘#ÕRLOCKŽŽ‘9à5²LošGc¸ãk–UUa“region“for“reading;“blo˜c¸ãk“if“already“lo˜c•¸ãk“ed.Ž¡ÇF‘°¡‰ffs4Ž‘#ÕTRLOCKŽŽ‘Aà2²LošGc¸ãk–UUa“region“for“reading;“fail“is“already“lo˜c•¸ãk“ed.ŽŽŽŒ‹š¼‹ s\È ý®£8‘Yï0pdf:dest (page.154) [@thispage /XYZ @xpos @ypos]²154‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï:pdf:dest (subsection.10.8.21) [@thispage /XYZ @xpos @ypos]Ÿ Í10.8.21Ž‘6ÀInetAddrޤµŸï4pdf:dest (obj:InetAddr) [@thispage /XYZ @xpos @ypos]© Jª²The–%ÈInetAddr›&²ob‘Ž8ject“describGes“an“In•¸ãternet˜address.‘~7It˜con“tains–%the“follo¸ãwingŽŸ elds.ŽŸ*§ÇaddrŽŽ‘¢ÈString²:‘qÇthe–UUIn¸ãternet“address.ŽŸ*¨ÇpQÇortŽŽ‘ª¤ÈInt²:‘qÇthe–UUpšGort“n•¸ãum“b˜er.ŽŸ1uï:pdf:dest (subsection.10.8.22) [@thispage /XYZ @xpos @ypos]Ÿ XãÍ10.8.22Ž‘6ÀHostŽ¡ï0pdf:dest (obj:Host) [@thispage /XYZ @xpos @ypos]¦²A–UUÈHost“²ob‘Ž8ject“conš¸ãtains“the“follo˜wing“ elds.ŽŸ*§ÇnameŽŽ‘ÕKÈString²:‘qÇthe–UUname“of“the“host.ޤ*¨ÇaliasesŽŽ‘$éŠÈString‘?ýArray²:‘qÇother–UUnames“bš¸ãy“whic˜h“the“host“is“kno˜wn.Ž¡Çaddrt®9ypQÇeŽŽ‘2N)ÈString²:‘qÇthe–UUpreferred“soGc•¸ãk“et‘UUdomain.Ž¡ÇaddrsŽŽ‘ £ÞÈInetAddr‘?ýArray²:‘qÇan–UUarraš¸ãy“of“In˜ternet“addresses“bGelonging“to“the“host.ŽŸx’ï:pdf:dest (subsection.10.8.23) [@thispage /XYZ @xpos @ypos]Ÿ ÆÍ10.8.23Ž‘6Àgethostb ynameŽŸ òï9pdf:dest (fun:gethostbyname) [@thispage /XYZ @xpos @ypos]Ÿ õV‘¿÷È$(gethostbyname–?ýhost...)“:“Host...ޤ ‘îhost–?ý:“StringŽ¡‘¿÷raises‘?ýRuntimeExceptionŽ©*¨‘²The– ÏÈgethostbyname“²function› Ðreturns“a“ÈHost“²ob‘Ž8ject“for˜the“spGeci ed“host.Ž¡The–UUÈhost“²maš¸ãy“spGecify“a“domain“name“or“an“In˜ternet“address.ŽŸ1uï:pdf:dest (subsection.10.8.24) [@thispage /XYZ @xpos @ypos]Ÿ XãÍ10.8.24Ž‘6ÀProto`colŽŸµŸï4pdf:dest (obj:Protocol) [@thispage /XYZ @xpos @ypos]Ÿ J©²The–UUÈProtocol“²ob‘Ž8ject“represenš¸ãts“a“protoGcol“en˜try‘ÿ*ª.‘qÇIt“has“the“follo˜wing“ elds.ަÇnameŽŽ‘ÕKÈString²:‘qÇthe–UUcanonical“name“of“the“protoGcol.ޤ*¨ÇaliasesŽŽ‘$éŠÈString‘?ýArray²:‘qÇaliases–UUfor“the“protoGcol.Ž¡ÇprotoŽŽ‘ ÛÈInt²:‘qÇthe–UUprotošGcol“n•¸ãum“b˜er.ŽŸ1uï:pdf:dest (subsection.10.8.25) [@thispage /XYZ @xpos @ypos]Ÿ XãÍ10.8.25Ž‘6Àgetprotob ynameŽŸ òï:pdf:dest (fun:getprotobyname) [@thispage /XYZ @xpos @ypos]Ÿ õV‘¿÷È$(getprotobyname–?ýname...)“:“Protocol...ޤ ‘îname–?ý:“Int“or“StringŽ¡‘¿÷raises‘?ýRuntimeExceptionަ‘²The–ïmÈgetprotobyname“²function“returns“a“ÈProtocol“²ob‘Ž8ject“for“the“spGeci edŽ¡protošGcol.‘qÇThe–UUÈname“²ma¸ãy“b˜e“a“proto˜col“name,“or“a“proto˜col“n•¸ãum“b˜er.ŽŽŽŒ‹›Å¿ s\È ý®£8‘#ï0pdf:dest (page.155) [@thispage /XYZ @xpos @ypos]Ä10.8.‘ÇIO‘UUFUNCTIONS’⇠²155ŽŽ 8G ýÚ‘#ï:pdf:dest (subsection.10.8.26) [@thispage /XYZ @xpos @ypos]Ÿ Í10.8.26Ž‘6ÀServiceŽŸ}+ï3pdf:dest (obj:Service) [@thispage /XYZ @xpos @ypos]Ÿ ²The–UUÈService“²ob‘Ž8ject“represenš¸ãts“a“net˜w˜ork“service.‘qÇIt“has“the“follo˜wing“ elds.Ž©$mÇnameŽŽ‘ÕKÈString²:‘qÇthe–UUname“of“the“service.ޤ$lÇaliasesŽŽ‘$éŠÈString‘?ýArray²:‘qÇaliases–UUfor“the“service.Ž¡ÇpQÇortŽŽ‘ª¤ÈInt²:‘qÇthe–UUpšGort“n•¸ãum“b˜er–UUof“the“service.Ž¡ÇprotoŽŽ‘ ÛÈProtocol²:‘qÇthe–UUprotoGcol“for“the“service.ŽŸ2ï:pdf:dest (subsection.10.8.27) [@thispage /XYZ @xpos @ypos]Ÿ TÍ10.8.27Ž‘6Àgetservb ynameŽŸÒï9pdf:dest (fun:getservbyname) [@thispage /XYZ @xpos @ypos]Ÿ ³Ç‘¿÷È$(getservbyname–?ýservice...)“:“Service...ޤ ‘îservice–?ý:“String“or“IntŽ¡‘¿÷raises‘?ýRuntimeExceptionަ‘²The–eVÈgetservbyname“²function“gets“the“information‘eUfor“a“net•¸ãw“ork‘eVservice.‘!ÈTheŽ¡Èservice–UU²ma¸ãy“bšGe“sp˜eci ed“as“a“service“name“or“n•¸ãum“b˜er.ŽŸ1ï:pdf:dest (subsection.10.8.28) [@thispage /XYZ @xpos @ypos]Ÿ TÍ10.8.28Ž‘6Àso`c• k“etŽŸ}+ï2pdf:dest (fun:socket) [@thispage /XYZ @xpos @ypos]Ÿ ‘¿÷È$(socket–?ýdomain,“type,“protocol)“:“ChannelŽ¡‘îdomain–?ý:“StringŽ¡‘îtype–?ý:“StringŽ¡‘îprotocol–?ý:“StringŽ¡‘¿÷raises‘?ýRuntimeExceptionަ‘²The–UUÈsocket“²function“creates“an“un¸ãbšGound“so˜c•¸ãk“et.ޤ ‘The–UUpGossible“v‘ÿqÇalues“for“the“argumenš¸ãts“are“as“follo˜ws.Ž¡‘The–UUÈdomain“²maš¸ãy“ha˜v˜e“the“follo˜wing“v‘ÿqÇalues.ޤQÇPF‘°¡‰ffs4Ž‘#ÕUNIX–ÕTor“unixŽŽ‘_U~²Unix–UUdomain,“a¸ãv‘ÿqÇailable“only“on“Unix“systems.Ž©$lÇPF‘°¡‰ffs4Ž‘#ÕINET–ÕTor“inetŽŽ‘Z¡ò²In¸ãternet–UUdomain,“IPv4.ŽŸ$mÇPF‘°¡‰ffs4Ž‘#ÕINET6–ÕTor“inet6ŽŽ‘f!î²In¸ãternet–UUdomain,“IPv6.Ž¡‘The–UUÈtype“²maš¸ãy“ha˜v˜e“the“follo˜wing“v‘ÿqÇalues.Ž¡ÇSOCK‘°¡‰ffs4Ž‘#ÕSTREAM–ÕTor“streamŽŽ’9²Stream‘UUsoGc•¸ãk“et.ަÇSOCK‘°¡‰ffs4Ž‘#ÕDGRAM–ÕTor“dgramŽŽ’‰Èý²Datagram‘UUsoGc•¸ãk“et.ŽŸ$mÇSOCK‘°¡‰ffs4Ž‘#ÕRA‘þ¸äW–ÕTor“ra®9wŽŽ‘iáì²Ra•¸ãw‘UUsoGc“k“et.ަÇSOCK‘°¡‰ffs4Ž‘#ÕSEQP‘ÿ «Aš®9CKET–ÕTor“seqpac˜k˜etŽŽ’²ƒó²Sequenced›UUpac•¸ãk“ets˜soGc“k“etŽ¡‘The–!ìÈprotocol“²is“an›!ëÈInt“²or“ÈString“²that“spGeci es“a˜protošGcol“in“the“proto˜colsŽŸ database.ŽŽŽŒ‹œÏp s\È ý®£8‘Yï0pdf:dest (page.156) [@thispage /XYZ @xpos @ypos]²156‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï:pdf:dest (subsection.10.8.29) [@thispage /XYZ @xpos @ypos]Ÿ Í10.8.29Ž‘6ÀbindŽŸ¤ï0pdf:dest (fun:bind) [@thispage /XYZ @xpos @ypos]© Á%‘¿÷Èbind(socket,–?ýhost,“port)ޤ ‘îsocket–?ý:“InOutChannelŽ¡‘îhost–?ý:“StringŽ¡‘îport–?ý:“IntŽ¡‘¿÷bind(socket,‘?ýfile)Ž¡‘îsocket–?ý:“InOutChannelŽ¡‘îfile–?ý:“FileŽ¡‘¿÷raise‘?ýRuntimeExceptionŽŸ”‘²The–UUÈbind“²function“binds“a“soGc•¸ãk“et–UUto“an“address.ަ‘The–±™3-argumen¸ãt›±˜form“spGeci es˜an“In¸ãternet“connection,‘È©the“Èhost˜²spGeci es“aŽ¡host–UUname“or“IP“address,“and“the“Èport“²is“a“pšGort“n•¸ãum“b˜er.ަ‘The–ö³2-argumenš¸ãt“form“is“for“ÈUnix“²soGc˜k˜ets.‘UàThe“Èfile“²spGeci es“the“ lenameŽ¡for–UUthe“address.ŽŸ=Íï:pdf:dest (subsection.10.8.30) [@thispage /XYZ @xpos @ypos]ŸÁ%Í10.8.30Ž‘6ÀlistenŽŸ¤ï2pdf:dest (fun:listen) [@thispage /XYZ @xpos @ypos]¦‘¿÷Èlisten(socket,‘?ýrequests)Ž¡‘îsocket–?ý:“InOutChannelŽ¡‘îrequests–?ý:“IntŽ¡‘¿÷raises‘?ýRuntimeExceptionŽ©”‘²The–¦†Èlisten›¦…²function“sets“up˜the“soGc•¸ãk“et–¦†for˜receiving“up“to˜Èrequests“²n•¸ãum“bGerŽ¡of–UUpGending“connection“requests.ŽŸ/”ï:pdf:dest (subsection.10.8.31) [@thispage /XYZ @xpos @ypos]Ÿ Ï^Í10.8.31Ž‘6ÀacceptŽŸ pøï2pdf:dest (fun:accept) [@thispage /XYZ @xpos @ypos]Ÿ kÑ‘¿÷È$(accept–?ýsocket)“:“InOutChannelŽ¡‘îsocket–?ý:“InOutChannelŽ¡‘¿÷raises‘?ýRuntimeExceptionަ‘²The–UUÈaccept“²function“accepts“a“connection“on“a“soGc•¸ãk“et.ŽŸv±ï:pdf:dest (subsection.10.8.32) [@thispage /XYZ @xpos @ypos]Ÿ ˆAÍ10.8.32Ž‘6ÀconnectŽŸ¤ï3pdf:dest (fun:connect) [@thispage /XYZ @xpos @ypos]Ÿ Á%‘ÿôÈconnect(socket,–?ýaddr,“port)Ž¡‘$¿ësocket–?ý:“InOutChannelŽ¡‘$¿ëaddr–?ý:“StringŽ¡‘$¿ëport–?ý:“intŽ¡‘ÿôconnect(socket,‘?ýname)Ž¡‘$¿ësocket–?ý:“InOutChannelŽ¡‘$¿ëname–?ý:“FileŽ¡‘ÿôraise‘?ýRuntimeExceptionŽŽŽŒ‹Ù  s\È ý®£8‘#ï0pdf:dest (page.157) [@thispage /XYZ @xpos @ypos]Ä10.9.‘ÇPRINTING‘UUFUNCTIONS’ºuB²157ŽŽ 8G ýÚŸ ‘2The–UUÈconnect“²function“connects“a“soGc•¸ãk“et–UUto“a“remote“address.Ž© ^ ‘2The–y‡3-argumenš¸ãt“form‘y†spGeci es“an“In˜ternet“connection.‘Þ\The“Èaddr“²argumen˜tޤ ‘#is–!mthe›!lIn¸ãternet“address˜of“the“remote˜host,‘TrspGeci ed“as“a˜domain“name˜or“IPŽ¡‘#address.‘qÇThe–UUÈport“²argumenš¸ãt“is“the“pGort“n˜um˜bGer.ަ‘2The– ž2-argumen¸ãt› Ÿform“is“for˜Unix“soGc•¸ãk“ets.‘5ŠThe˜Èname› ž²argumen“t˜is‘ Ÿthe˜ lenameŽ¡‘#of–UUthe“soGc•¸ãk“et.Ž‘#Ÿ“ï:pdf:dest (subsection.10.8.33) [@thispage /XYZ @xpos @ypos]©^ Í10.8.33Ž‘6Àgetc harŽŸ £ï3pdf:dest (fun:getchar) [@thispage /XYZ @xpos @ypos]Ÿ ·‘ÿôÈ$(getc)–?ý:“StringŽ¡‘ÿô$(getc–?ýfile)“:“StringŽ¡‘$¿ëfile–?ý:“InChannel“or“FileŽ¡‘ÿôraises‘?ýRuntimeExceptionŽŸx-‘²The–øâÈgetc“²function“returns“the“next“cš¸ãharacter“of‘øáa“ le.‘\nIf“the“argumen˜t“isŽ¡not–ñ^spšGeci ed,‘`Èstdin“²is“used“as“input.‘EáIf“the“end“of“ le“has“b˜een“reac¸ãhed,‘`theŽ¡function–UUreturns“Èfalse².ŽŸ“ï:pdf:dest (subsection.10.8.34) [@thispage /XYZ @xpos @ypos]¦Í10.8.34Ž‘6ÀgetsŽ© £ï0pdf:dest (fun:gets) [@thispage /XYZ @xpos @ypos]Ÿ ·‘¿÷È$(gets)–?ý:“StringŽ¡‘¿÷$(gets–?ýchannel)“:“StringŽ¡‘îchannel–?ý:“InChannel“or“FileŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŸx-‘²The–¼ˆÈgets“²function“returns‘¼‰the“next“line“from“a“ le.‘>ÙThe“function“returns“theŽ¡emptš¸ãy–Êstring“if“the“end“of“ le“has“bGeen“reac˜hed.‘C`The“line“terminator“is“remo˜v˜ed.ŽŸ„æï:pdf:dest (subsection.10.8.35) [@thispage /XYZ @xpos @ypos]Ÿ lDÍ10.8.35Ž‘6Àfgetsަï1pdf:dest (fun:fgets) [@thispage /XYZ @xpos @ypos]Ÿ ·‘¿÷È$(fgets)–?ý:“StringŽ¡‘¿÷$(fgets–?ýchannel)“:“StringŽ¡‘îchannel–?ý:“InChannel“or“FileŽ¡‘¿÷raises‘?ýRuntimeExceptionŽŸx,‘²The–Á¢Èfgets›Á£²function“returns“the˜next“line“from“a˜ le“that“has˜bšGeen“op˜enedŽ¡for–E5reading›E6with“Èfopen².‘AhThe“function“returns“the˜empt¸ãy“string“if“the˜end“ofŽ¡ le–?has“bGeen“reac¸ãhed.›õ…The“returned“string“is“returned“as“literal“data.˜The“lineŽ¡terminator–UUis“not“remo•¸ãv“ed.ŽŸ¦­ï4pdf:dest (section.10.9) [@thispage /XYZ @xpos @ypos]Ÿ^ Ì10.9Ž‘,ÿüPrinŒÌting‘fffunctionsŽŸ âï2pdf:dest (fun:fprint) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (fun:print) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (fun:eprint) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (fun:fprintln) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (fun:println) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (fun:eprintln) [@thispage /XYZ @xpos @ypos]Ÿ ‘?²Output–†is›‡prin¸ãted“with“the“Èprint˜²and“Èprintln“²functions.‘0-The˜Èprintln“²functionŽ¡adds–$ƒa›$‚terminating“newline˜to“the“v‘ÿqÇalue˜bGeing“prin¸ãted,‘.Fthe“Èprint˜²function“doGesŽ¡not.ŽŽŽŒ‹žá s\È ý®£8‘Yï0pdf:dest (page.158) [@thispage /XYZ @xpos @ypos]²158‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘mÿôÈfprint(,‘?ý)ޤ ‘mÿôprint()Ž¡‘mÿôeprint()Ž¡‘mÿôfprintln(,‘?ý)Ž¡‘mÿôprintln()Ž¡‘mÿôeprintln()Ž©o‘h²The–Ê©Èfprint“²functions“prin¸ãt“to“a‘ʨ le“that“has“bšGeen“previously“op˜ened“withŽ¡‘YÈfopen².‘NZThe–žÜÈprint›žÛ²functions“prin¸ãt˜to“the˜standard˜output“c¸ãhannel,‘ñ=and˜theŽ¡‘YÈeprint–UU²functions“prinš¸ãt“to“the“standard“error“c˜hannel.Ž‘YŸÂ4ï5pdf:dest (section.10.10) [@thispage /XYZ @xpos @ypos]ŸâßÌ10.10Ž‘5•V‘þ¦falue–ffprinŒÌting“functionsŽŸ ËÐï3pdf:dest (fun:fprintv) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (fun:printv) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (fun:eprintv) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (fun:fprintvln) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (fun:printvln) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (fun:eprintvln) [@thispage /XYZ @xpos @ypos]Ÿ Nø²V‘ÿ*ªalues–Ycan“bGe“prin¸ãted“with“the“Èprintv‘Z²and“Èprintvln“²functions.‘\sThe“ÈprintvlnŽ¡²function–«ìadds“a›«íterminating“newline“to“the˜v‘ÿqÇalue“bGeing“prin¸ãted,‘’the“ÈprintvŽ¡²function–UUdoGes“not.ŽŸŠÓ‘ÿôÈfprintv(,‘?ý)Ž¡‘ÿôprintv()Ž¡‘ÿôeprintv()Ž¡‘ÿôfprintvln(,‘?ý)Ž¡‘ÿôprintvln()Ž¡‘ÿôeprintvln()ަ‘²The–Z©Èfprintv“²functions›Zªprin¸ãt“to“a“ le“that“has˜bšGeen“previously“op˜ened“withŽ¡Èfopen².‘The–9lÈprintv›9m²functions“prin¸ãt˜to˜the“standard˜output“c¸ãhannel,‘rrand˜theŽ¡Èeprintv–UU²functions“prinš¸ãt“to“the“standard“error“c˜hannel.ŽŸ®¦ï:pdf:dest (subsection.10.10.1) [@thispage /XYZ @xpos @ypos]Ÿ âßÍ10.10.1Ž‘6ÀMiscellaneous‘€functionsŽŸ=ï?pdf:dest (subsubsection.10.10.1.1) [@thispage /XYZ @xpos @ypos]Ÿ ÄÇ10.10.1.1Ž‘7•Bset-c®9hannel-lineŽŸ©‘ÿôÈset-channel-line(channel,–?ýfilename,“line)Ž¡‘)ÿèchannel–?ý:“ChannelŽ¡‘)ÿèfilename–?ý:“FileŽ¡‘)ÿèline–?ý:“intަ‘²Set–UUthe“line“n•¸ãum“bGer–UUinformation“for“the“c¸ãhannel.ŽŸ‰Pï5pdf:dest (section.10.11) [@thispage /XYZ @xpos @ypos]ŸÄÌ10.11Ž‘5•Higher-levŒÌel–ffIO“functionsŽŸ ËÏï:pdf:dest (subsection.10.11.1) [@thispage /XYZ @xpos @ypos]Ÿ NøÍ10.11.1Ž‘6ÀRegular‘€expressionsŽŸ©²Manš¸ãy–$­of‘$¬the“higher-lev˜el“functions›$¬use“regular˜expressions.‘aRegular“expressionsŽ¡are–UUde ned“bš¸ãy“strings“with“syn˜tax“nearly“iden˜tical“to“Èawk²(1).ŽŸ Ä‘Strings–UUmaš¸ãy“con˜tain“the“follo˜wing“c˜haracter“constan˜ts.ŽŽŽŒ‹ŸìF s\È ý®£8‘#ï0pdf:dest (page.159) [@thispage /XYZ @xpos @ypos]Ä10.11.‘ÇHIGHER-LEVEL–UUIO“FUNCTIONS’ŒŸæ²159ŽŽ 8G ýÚŸ ‘2¸ŽŽŽ‘<È\\–UU²:‘qÇa“literal“bac¸ãkslash.ޤUU‘2¸ŽŽŽ‘<È\a–UU²:‘qÇthe“alert“c¸ãharacter“È^G².Ž©UV‘2¸ŽŽŽ‘<È\b–UU²:‘qÇthe“bacš¸ãkspace“c˜haracter“È^H².Ž¡‘2¸ŽŽŽ‘<È\f–UU²:‘qÇthe“formfeed“c¸ãharacter“È^L².Ž¡‘2¸ŽŽŽ‘<È\n–UU²:‘qÇthe“newline“c¸ãharacter“È^J².ަ‘2¸ŽŽŽ‘<È\r–UU²:‘qÇthe“carriage“return“c¸ãharacter“È^M².Ž¡‘2¸ŽŽŽ‘<È\t–UU²:‘qÇthe“tab“c¸ãharacter“È^I².Ž¡‘2¸ŽŽŽ‘<È\v–UU²:‘qÇthe“vš¸ãertical“tab“c˜haracter.ަ‘2¸ŽŽŽ‘<È\xhh...–ô\²:‘¯Õthe“cš¸ãharacter“represen˜ted‘ô[b˜y“the“string“of“hexadecimal“digitsޤ ‘<Èh².‘EMAll–ñ,v‘ÿqÇalid“hexadecimal›ñ-digits“follo¸ãwing“the“sequence˜are“considered“toŽ¡‘<bGe–UUpart“of“the“sequence.ޤUU‘2¸ŽŽŽ‘<È\ddd–UU²:‘qÇthe“cš¸ãharacter“represen˜ted“b˜y“1,“2,“or“3“oGctal“digits.ŽŸUU‘2Regular–rexpressions“are›sde ned“using“the“spGecial˜c¸ãharacters“È.\^$[(){}*?²+.ŽŸUV‘2¸ŽŽŽ‘<Èc–UU²:‘qÇmatcš¸ãhes“the“literal“c˜haracter“Èc“²if“Èc“²is“not“a“spGecial“c˜haracter.Ž¡‘2¸ŽŽŽ‘<È\c–UU²:‘qÇmatcš¸ãhes“the“literal“c˜haracter“Èc²,“ev˜en“if“Èc“²is“a“spGecial“c˜haracter.Ž¡‘2¸ŽŽŽ‘<È.–UU²:‘qÇmatcš¸ãhes“an˜y“c˜haracter,“including“newline.ަ‘2¸ŽŽŽ‘<È^–UU²:‘qÇmatc¸ãhes“the“bGeginning“of“a“line.Ž¡‘2¸ŽŽŽ‘<È$–UU²:‘qÇmatc¸ãhes“the“end“of“line.Ž¡‘2¸ŽŽŽ‘<È[abc...]–UU²:‘qÇmatcš¸ãhes“an˜y“of“the“c˜haracters“Èabc...ަ‘2¸ŽŽŽ‘<È[^abc...]–UU²:‘qÇmatcš¸ãhes“an˜y“c˜haracter“except“Èabc...Ž¡‘2¸ŽŽŽ‘<Èr1|r2–UU²:‘qÇmatc¸ãhes“either“Èr1“²or“Èr2².Ž¡‘2¸ŽŽŽ‘<Èr1r2–UU²:‘qÇmatc¸ãhes“Èr1“²and“then“Èr2².ަ‘2¸ŽŽŽ‘<Èr²+–UU:‘qÇmatc¸ãhes“one“or“more“oGccurrences“of“Èr².Ž¡‘2¸ŽŽŽ‘<Èr*–UU²:‘qÇmatc¸ãhes“zero“or“more“oGccurrences“of“Èr².Ž¡‘2¸ŽŽŽ‘<Èr?–UU²:‘qÇmatc¸ãhes“zero“or“one“oGccurrence“of“Èr².ަ‘2¸ŽŽŽ‘<È(r)–UU²:‘qÇparenš¸ãtheses“are“used“for“grouping;“matc˜hes“Èr².Ž¡‘2¸ŽŽŽ‘<È\(r\)–Ó¿²:‘nšalso“de nes“grouping,‘3Ybut“the“expression‘Ó¾matc¸ãhed“within“theޤ ‘<parenš¸ãtheses–¿üis“a˜v‘ÿqÇailable›¿ýto“the“output“proGcessor“through“one˜of“the“v‘ÿqÇari-Ž¡‘<ables–UUÈ$1²,“È$2²,“...ŽŽŽŒ‹ ö€ s\È ý®£8‘Yï0pdf:dest (page.160) [@thispage /XYZ @xpos @ypos]²160‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘h¸ŽŽŽ‘rÈr{n}–UU²:‘qÇmatc¸ãhes“exactly“Èn“²oGccurrences“of“Èr².ޤ* ‘h¸ŽŽŽ‘rÈr{n,}–UU²:‘qÇmatc¸ãhes“Èn“²or“more“oGccurrences“of“Èr².Ž©* ‘h¸ŽŽŽ‘rÈr{n,m}–l.²:‘Ÿzmatc¸ãhes“at›l/least“Èn“²oGccurrences˜of“Èr²,‘qäand˜no“more“than˜Èm“²oGccur-ŽŸ ‘rrences.Ž¡‘h¸ŽŽŽ‘rÈ\y²:‘qÇmatcš¸ãhes–UUthe“empt˜y“string“at“either“the“bGeginning“or“end“of“a“w˜ord.Ž¡‘h¸ŽŽŽ‘rÈ\B²:–UUmatcš¸ãhes“the“empt˜y“string“within“a“w˜ord.ަ‘h¸ŽŽŽ‘rÈ\<²:‘qÇmatcš¸ãhes–UUthe“empt˜y“string“at“the“bGeginning“of“a“w˜ord.Ž¡‘h¸ŽŽŽ‘rÈ\>²:‘qÇmatcš¸ãhes–UUthe“empt˜y“string“at“the“end“of“a“w˜ord.Ž¡‘h¸ŽŽŽ‘rÈ\w²:‘qÇmatc•¸ãhes›UUan“y˜c“haracter˜in˜a˜w“ord.ަ‘h¸ŽŽŽ‘rÈ\W²:–UUmatcš¸ãhes“an˜y“c˜haracter“that“došGes“not“o˜ccur“within“a“w¸ãord.Ž¡‘h¸ŽŽŽ‘rÈ\`²:‘qÇmatcš¸ãhes–UUthe“empt˜y“string“at“the“bGeginning“of“a“ le.Ž¡‘h¸ŽŽŽ‘rÈ\'²:‘qÇmatcš¸ãhes–UUthe“empt˜y“string“at“the“end“of“a“ le.ŽŸ* ‘hCharacter–.›classes›.šcan“bGe“used˜to“spGecify“c¸ãharacter˜sequences“abstractly‘ÿ*ª.ŽŸ ‘YSome–UUof“these“sequences“can“cš¸ãhange“depGending“on“y˜our“LOCALE.ŽŸ* ‘h¸ŽŽŽ‘rÈ[:alnum:]–UU²Alphanš¸ãumeric“c˜haracters.ަ‘h¸ŽŽŽ‘rÈ[:alpha:]–UU²AlphabGetic“c¸ãharacters.Ž¡‘h¸ŽŽŽ‘rÈ[:lower:]›UU²Lo•¸ãw“ercase˜alphabGetic˜c“haracters.Ž¡‘h¸ŽŽŽ‘rÈ[:upper:]–UU²UppšGercase“alphab˜etic“c¸ãharacters.ަ‘h¸ŽŽŽ‘rÈ[:cntrl:]–UU²Conš¸ãtrol“c˜haracters.Ž¡‘h¸ŽŽŽ‘rÈ[:digit:]–UU²Numeric“c¸ãharacters.Ž¡‘h¸ŽŽŽ‘rÈ[:xdigit:]–UU²Numeric“and“hexadecimal“c¸ãharacters.ަ‘h¸ŽŽŽ‘rÈ[:graph:]–UU²Characters“that“are“prin¸ãtable“and“visible.Ž¡‘h¸ŽŽŽ‘rÈ[:print:]– Q²Characters“that“are“prin¸ãtable,‘whether“they“are“visible“or“not.Ž¡‘h¸ŽŽŽ‘rÈ[:punct:]–UU²Punctuation“c¸ãharacters.ަ‘h¸ŽŽŽ‘rÈ[:blank:]–UU²Space“or“tab“c¸ãharacters.Ž¡‘h¸ŽŽŽ‘rÈ[:space:]–UU²Whitespace“c¸ãharacters.ŽŽŽŒ‹¡ÿÓ s\È ý®£8‘#ï0pdf:dest (page.161) [@thispage /XYZ @xpos @ypos]Ä10.11.‘ÇHIGHER-LEVEL–UUIO“FUNCTIONS’ŒŸæ²161ŽŽ 8G ýÚ‘#ï:pdf:dest (subsection.10.11.2) [@thispage /XYZ @xpos @ypos]Ÿ Í10.11.2Ž‘6ÀcatŽŸuTï/pdf:dest (fun:cat) [@thispage /XYZ @xpos @ypos]¤ ‘ÿôÈcat(files)–?ý:“SequenceŽ¡‘$¿ëfiles–?ý:“File“or“InChannel“SequenceŽ©XÀ‘²The–7–Ècat›7•²function“concatenates“the˜output“from˜m¸ãultiple“ les“and˜returns“itŽ¡as–UUa“string.ŽŸÓ/ï:pdf:dest (subsection.10.11.3) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.11.3Ž‘6ÀgrepŽŸʨï0pdf:dest (fun:grep) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷Ègrep(pattern)–?ý:“String‘ ú#“input“from“stdin,“default“optionsŽ¡‘îpattern–?ý:“StringŽ¡‘¿÷grep(pattern,–?ýfiles)“:“String‘ ú#“default“optionsŽ¡‘îpattern–?ý:“StringŽ¡‘îfiles‘¿÷:–?ýFile“SequenceŽ¡‘¿÷grep(options,–?ýpattern,“files)“:“StringŽ¡‘?ñoptions–?ý:“StringŽ¡‘?ñpattern–?ý:“StringŽ¡‘?ñfiles‘¿÷:–?ýFile“Sequenceަ‘²The–IõÈgrep“²function“searc¸ãhes“for“oGccurrences‘Iöof“a“regular“expression“ÈpatternŽ¡²in–^a›^set“of“ les,‘ Cand“prin¸ãts“lines˜that“matcš¸ãh.‘ŒThis“is“lik˜e‘^a“highly-simpli edŽ¡v¸ãersion‘UUof‘rÈgrep²(1).Ž¡‘The–UUoptions“are:ŽŸz4ÇqŽŽ‘ ŲIf–UUspGeci ed,“the“output“from“Ègrep“²is“not“displa•¸ãy“ed.Ž©½ÇhŽŽ‘ cŒ²If–ÌspGeci ed,›çxoutput“lines“will“not“include‘Ìthe“ lename“(default,˜when“only“oneŽ¡‘input–UU le“is“giv¸ãen).ŽŸ½ÇnŽŽ‘ cŒ²If–®ûspGeci ed,‘Åeoutput“lines“include“the›®ü lename“(default,‘Ådwhen˜more“than“oneŽ¡‘input–UU le“is“giv¸ãen).ަÇvŽŽ‘ ŲIf–UUspGeci ed,“searcš¸ãh“for“lines“without“a“matc˜h“instead“of“lines“with“a“matc˜h,ŽŸz4‘The–UUÈpattern“²is“a“regular“expression.Ž¡‘If– )successful“(Ègrep‘ *²found“a“matc¸ãh),›2the“function“returns“Ètrue².‘X¹Otherwise,˜itŽ¡returns‘UUÈfalse².ŽŸ áhï:pdf:dest (subsection.10.11.4) [@thispage /XYZ @xpos @ypos]ŸÍ10.11.4Ž‘6ÀscanŽŸuTï0pdf:dest (fun:scan) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èscan(input-files)Ž¡‘¿÷case‘?ýstring1Ž¡‘îbody1Ž¡‘¿÷case‘?ýstring2Ž¡‘îbody2Ž¡‘¿÷...Ž¡‘¿÷defaultŽ¡‘îbodydŽŽŽŒ‹¢ X s\È ý®£8‘Yï0pdf:dest (page.162) [@thispage /XYZ @xpos @ypos]²162‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘h²The–N6Èscan›N7²function“pro¸ãvides“input“proGcessing˜in“command-line“form.‘\kTheޤ ‘Yfunction–œ$takš¸ães‘œ# le/ lename“argumen˜ts.‘F3If›œ#called“with“no˜argumen¸ãts,‘­×the“inputŽ¡‘Yis–Ì{takš¸ãen“from“Èstdin².‘×:If“argumen˜ts“are“pro˜vided,‘êEeac˜h“spGeci es“an“ÈInChannel²,Ž¡‘Yor–UUthe“name“of“a“ le“for“input.‘qÇOutput“is“alw•¸ãa“ys–UUto“Èstdout².Ž© !‘hThe–VïÈscan›Vð²function“opGerates˜b¸ãy“reading˜the“input˜one“line“at˜a“time,‘—VandŽ¡‘YproGcessing–UUit“according“to“the“follo¸ãwing“algorithm.ŽŸ ! ‘hF‘ÿ*ªor–Pteacš¸ãh“line,‘Qmthe“record“is“ rst“split‘Psin˜to“ elds,‘Qnand“the“ elds‘Psare“bGound“toŽ¡‘Ythe‘ñv‘ÿqÇariables›ðÈ$1,–?ý$2,“...².‘U¦The˜v‘ÿqÇariable–ñÈ$0˜²is“de ned˜to“bGe˜the“en¸ãtire˜line,‘ÒandŽ¡‘YÈ$*–ö†²is“an“arra¸ãy‘ö‡of“all“the“ eld“v›ÿqÇalues.‘U[The“È$(NF)‘ö\²v˜ariable“is‘ö‡de ned“to“bGe“theŽ¡‘Yn•¸ãum“bGer–UUof“ elds.ަ‘hNext,‘I^a–F`case“expression“is“selected.‘lÊIf“Èstring_i“²matcš¸ãhes“the“tok˜en“È$1²,‘I^thenŽ¡‘YÈbody_i–†Í²is›†Îev‘ÿqÇaluated.‘0If“the“b•Go“dy˜ends–†Íin˜an“Èexport²,‘“+the˜state“is“passed˜to“theŽ¡‘Ynext–UUclause.‘qÇOtherwise“the“v‘ÿqÇalue“is“discarded.ަ‘hF‘ÿ*ªor–šexample,‘«2here“is›šan“Èscan˜²function“that˜acts“as˜a“simple˜command“pro-Ž¡‘Ycessor.ŽŸ¥)‘mÿôÈcalc()‘?ý=Ž¡‘}¿ëi–?ý=“0Ž¡‘}¿ëscan(script.in)Ž¡‘}¿ëcase‘?ýprintŽ¡’âprintln($i)Ž¡‘}¿ëcase‘?ýincŽ¡’âi–?ý=“$(add“$i,“1)Ž¡’âexportŽ¡‘}¿ëcase‘?ýdecŽ¡’âi–?ý=“$(sub“$i,“1)Ž¡’âexportŽ¡‘}¿ëcase‘?ýaddconstŽ¡’âi–?ý=“$(add“$i,“$2)Ž¡’âexportŽ¡‘}¿ëdefaultŽ¡’âeprintln($"Unknown–?ýcommand:“$1")ŽŸ„!‘h²The–UUÈscan“²function“also“suppGorts“sev¸ãeral“options.ŽŸ¥*‘mÿôÈscan(options,‘?ýfiles)Ž¡‘mÿô...ŽŸc‘YÇAŽŽ‘f±Ä²P•¸ãarse›¡ûeac“h˜line‘¡üas˜an˜argumen“t˜list,‘ÅÚwhere˜argumen“ts‘¡üma“y˜bGe˜quoted.‘5ÿF‘ÿ*ªor˜ex-Ž¡‘rample,–UUthe“folloš¸ãwing“line“has“three“w˜ords,“\Èls²",“\È-l²",“\ÈProgram‘?ýFiles²".ŽŸ¥*’–¿íÈls–?ý-l“"Program“Files"Ž¡Ÿ¥)‘YÇOŽŽ‘f£‹²P•¸ãarse›Ç®eac“h–ǯline˜using“white˜space˜as“the˜separator,‘äEusing˜the“usual˜OMak¸ãeŽ¡‘ralgorithm–UUfor“string“parsing.‘qÇThis“is“the“default.ŽŽŽŒ‹£ Ô s\È ý®£8‘#ï0pdf:dest (page.163) [@thispage /XYZ @xpos @ypos]Ä10.11.‘ÇHIGHER-LEVEL–UUIO“FUNCTIONS’ŒŸæ²163ŽŽ 8G ýÚŸ ‘#ÇxŽŽ‘.ŲOnce–|eacš¸ãh‘{ÿline“is“split,‘…ªreduce“eac˜h“w˜ord“using‘{ÿthe“hex“represen˜tation.‘åÇThisޤ ‘<is–n§the›n¨usual“hex˜represen¸ãtation“used“in˜URL‘nspGeci ers,‘ôûso˜the“stringŽ¡‘<\Program–³WFiles"“maš¸ãy“bGe“alternately‘³Vrepresen˜ted“in“the“form“Program-Ž¡‘<Program+Files.ީ驑2Note,‘C¨if‘àÌy•¸ãou›àËw“an“t˜to–àÌredirect˜the˜output“to˜a˜ le,‘C©the˜easiest˜w•¸ãa“y‘àÌis˜toŽ¡‘#rede ne–Ùèthe“Èstdout“²v›ÿqÇariable.‘ÿ€The“Èstdout“²v˜ariable“is“scopGed“the“same“w•¸ãa“y‘ÙèasŽ¡‘#other– ev‘ÿqÇariables,‘”so“this› dde nition“doGes“not˜a ect“the˜meaning“of˜Èstdout“²outsideŽ¡‘#the–UUÈcalc“²function.ŽŸ骑7ÿôÈcalc()‘?ý=Ž¡‘Lÿèstdout–?ý=“$(fopen“script.out,“w)Ž¡‘Lÿèscan(script.in)Ž¡‘\¿ß...Ž¡‘Lÿèclose(stdout)Ž‘#Ÿϰï:pdf:dest (subsection.10.11.5) [@thispage /XYZ @xpos @ypos]Ÿ *­Í10.11.5Ž‘6Àa wkŽŸuTï/pdf:dest (fun:awk) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èawk(input-files)Ž¡‘¿÷case‘?ýpattern1:Ž¡‘îbody1Ž¡‘¿÷case‘?ýpattern2:Ž¡‘îbody2Ž¡‘¿÷...Ž¡‘¿÷default:Ž¡‘îbodydަ‘²orŽŸ骑¿÷Èawk(options,‘?ýinput-files)Ž¡‘¿÷case‘?ýpattern1:Ž¡‘îbody1Ž¡‘¿÷case‘?ýpattern2:Ž¡‘îbody2Ž¡‘¿÷...Ž¡‘¿÷default:Ž¡‘îbodydަ‘²The–ÿLÈawk›ÿM²function“pro¸ãvides˜input“proGcessing˜similar“to˜Èawk²(1),‘iÊbut“moreŽ¡limited.‘£²The–»NÈinput-files“²argumenš¸ãt“is“a“sequence“of“v‘ÿqÇalues,‘ÔÌeac˜h“spGeci es“anŽ¡ÈInChannel²,‘5aor–-cthe“name›-dof“a˜ le“for˜input.‘dvIf“called˜with“no˜options“and˜no“ leŽ¡argumenš¸ãts,–UUthe“input“is“tak˜en“from“Èstdin².‘qÇOutput“is“alw˜a˜ys“to“Èstdout².Ž¡‘The‘kMv‘ÿqÇariables–kLÈRS›k²and“ÈFS˜²de ne›kMrecord“and˜ eld“separators˜as“regular˜ex-Ž¡pressions.‘ÝæThe–δdefault›εv‘ÿqÇalue“of˜ÈRS‘Ε²is˜the“regular˜expression“È\r|\n|\r\n².‘ÝæTheŽ¡default–UUv‘ÿqÇalue“of“ÈFS“²is“the“regular“expression“È[‘?ý\t]²+.Ž¡‘The–ÙãÈawk“²function›ÙâopGerates“b¸ãy“reading“the“input“one˜record“at“a“time,‘ûandŽ¡proGcessing–UUit“according“to“the“follo¸ãwing“algorithm.ŽŽŽŒ‹¤ . s\È ý®£8‘Yï0pdf:dest (page.164) [@thispage /XYZ @xpos @ypos]²164‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘h²F‘ÿ*ªor–€Beacš¸ãh“line,‘Êýthe“record“is“ rst‘€Csplit“in˜to“ elds“using“the“ eld“separatorޤ ‘YÈFS²,–šand“the“ elds“are“bGound“to“the‘šŽv›ÿqÇariables“È$1,–?ý$2,“...².‘AoThe–šv˜ariable“È$0“²isŽ¡‘Yde ned–²>to›²?bGe“the˜en¸ãtire“line,‘ÒÝand“È$*“²is˜an“arra¸ãy˜of“all“the˜ eld“v‘ÿqÇalues.‘;kThe“È$(NF)Ž¡‘Y²v‘ÿqÇariable–UUis“de ned“to“bšGe“the“n•¸ãum“b˜er–UUof“ elds.ŽŸ 'b‘hNext,‘‚the–Mïcases›Mîare“ev‘ÿqÇaluated˜in“order.‘úF‘ÿ*ªor“eac¸ãh˜case,‘‚if“the˜regular“expressionŽ¡‘YÈpattern_i–‹¼²matc¸ãhes›‹»the“record˜È$0²,‘™Uthen“Èbody_i˜²is“ev‘ÿqÇaluated.‘úIf“the˜b•Go“dy‘‹¼endsŽ¡‘Yin–O4an“Èexport²,‘¬the“state“is“passed“to“the“next“clause.‘_dOtherwise“the“v‘ÿqÇalue“isŽ¡‘Ydiscarded.‘L.If–ä‰the“regular‘äŠexpression“con¸ãtains“È\(r\)“²expression,‘ûthose“expressionŽ¡‘Yo•¸ãv“erride–UUthe“ elds“È$1,–?ý$2,“...².ŽŸ 'c‘hF‘ÿ*ªor–þexample,‘©here“is›ýan“Èawk“²function“to˜prinš¸ãt“the“text“bGet˜w˜een‘ýt˜w˜o“delimitersŽ¡‘YÈ\begin{}–8:²and›89È\end{}²,‘pòwhere“the˜È“²m¸ãust˜bGelong“to˜a“setŽ¡‘Ypassed–UUas“an“argumen¸ãt“to“the“Èfilter“²function.Ž©Äì‘mÿôÈfilter(names)‘?ý=Ž¡‘}¿ëprint–?ý=“falseŽ¡¡‘}¿ëawk(Awk.in)Ž¡‘}¿ëcase‘?ý$"^\\end\{\([:alpha:]+\)\}"Ž¡’âif–?ý$(mem“$1,“$(names))Ž¡’?Ùprint–?ý=“falseŽ¡’?ÙexportŽ¡’âexportŽ¡‘}¿ëdefaultŽ¡’âif‘?ý$(print)Ž¡’?Ùprintln($0)Ž¡‘}¿ëcase‘?ý$"^\\begin\{\([:alpha:]+\)\}"Ž¡’âprint–?ý=“$(mem“$1,“$(names))Ž¡’âexportŽŸŠ‘h²Note,‘C¨if‘àÌy•¸ãou›àËw“an“t˜to–àÌredirect˜the˜output“to˜a˜ le,‘C©the˜easiest˜w•¸ãa“y‘àÌis˜toŽ¡‘Yrede ne–Ùèthe“Èstdout“²v›ÿqÇariable.‘ÿ€The“Èstdout“²v˜ariable“is“scopGed“the“same“w•¸ãa“y‘ÙèasŽ¡‘Yother– ev‘ÿqÇariables,‘”so“this› dde nition“doGes“not˜a ect“the˜meaning“of˜Èstdout“²outsideŽ¡‘Ythe–UUÈfilter“²function.ަ‘mÿôÈfilter(names)‘?ý=Ž¡’‚ÿèstdout–?ý=“$(fopen“file.out,“w)Ž¡’‚ÿèawk(Awk.in)Ž¡’’¿ß...Ž¡’‚ÿèclose(stdout)ŽŸŠ‘h²Options.ŽŸv(‘YÇbŽŽ‘dcŒ²\Break"–º…when“ev‘ÿqÇaluating–º„cases.‘¡WOnly“the–º… rst“case“that‘º„matc¸ãhes“will“bGeŽ¡‘rselected.ŽŸv'‘hThe–Lÿïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:break) >> >> Èbreak›Lþ²functionïpdf:eann“can“bGe“used˜to“abGort“the˜loGop,‘Nªexiting“the˜Èawk“²functionŽ¡‘Yimmediately‘ÿ*ª.ŽŽŽŒ‹¥ "Рs\È ý®£8‘#ï0pdf:dest (page.165) [@thispage /XYZ @xpos @ypos]Ä10.11.‘ÇHIGHER-LEVEL–UUIO“FUNCTIONS’ŒŸæ²165ŽŽ 8G ýÚ‘#ï:pdf:dest (subsection.10.11.6) [@thispage /XYZ @xpos @ypos]Ÿ Í10.11.6Ž‘6ÀfsubstŽŸuTï2pdf:dest (fun:fsubst) [@thispage /XYZ @xpos @ypos]¤ ‘¿÷Èfsubst(files)Ž¡‘¿÷case–?ýpattern1“[options]Ž¡‘îbody1Ž¡‘¿÷case–?ýpattern2“[options]Ž¡‘îbody2Ž¡‘¿÷...Ž¡‘¿÷defaultŽ¡‘îbodydŽ©–‘²The– Èfsubst“²function“proš¸ãvides“a“Èsed²(1)-lik˜e“substitution“function.‘³æSimilarŽ¡to–£Èawk²,‘_if“Èfsubst›¢²is“called˜with“no˜argumen¸ãts,‘`the“input˜is“tak¸ãen˜from“Èstdin².‘UáIfŽ¡argumenš¸ãts–“}are“pro˜vided,‘£eac˜h“spGeci es“an“ÈInChannel²,‘£or“the“name“of‘“|a“ le“forŽ¡input.Ž¡‘The–rkÈRS‘rc²v‘ÿqÇariable“de nes›rja“regular“expression˜that“determines“a˜record“sepa-Ž¡rator,–UUThe“default“v‘ÿqÇalue“of“ÈRS“²is“the“regular“expression“È\r|\n|\r\n².Ž¡‘The–UUÈfsubst“²function“reads“the“ le“one“record“at“a“time.Ž¡‘F‘ÿ*ªor›áGeac¸ãh–áHrecord,‘ø}the“cases˜are“ev‘ÿqÇaluated˜in˜order.‘KEac¸ãh“case˜de nes“a˜substi-Ž¡tution–Ã:from›Ã9a“substring“matc¸ãhing˜the“Èpattern˜²to“replacemen¸ãt“text˜de ned“b¸ãyŽ¡the‘UUb•Go“dy‘ÿ*ª.Ž¡‘Curren¸ãtly‘ÿ*ª,›îÓthere–œíis“only“one‘œîoption:‘÷Èg².‘HIf“spGeci ed,˜eac¸ãh“clause“spGeci esŽ¡a–½global›½žreplacemen¸ãt,‘¯and“all“instances“of˜the“pattern“de ne˜a“substitution.Ž¡Otherwise,–UUthe“substitution“is“applied“only“once.Ž¡‘Output–UUcan“bGe“redirected“b¸ãy“rede ning“the“Èstdout“²v‘ÿqÇariable.Ž¡‘F‘ÿ*ªor–Ò´example,‘ìÕthe“follo¸ãwing›Òµprogram“replaces˜all“oGccurrences“of˜an“expressionŽ¡Èword.–UU²with“its“capitalized“form.ަ‘ÿôÈsectionŽ¡‘$¿ëstdout–?ý=“$(fopen“Subst.out,“w)Ž¡‘$¿ëfsubst(Subst.in)Ž¡‘$¿ëcase–?ý$"\<\([[:alnum:]]+\)\."“gŽ¡‘4âvalue–?ý$(capitalize“$1).Ž¡‘$¿ëclose(stdout)ŽŸ;éï:pdf:dest (subsection.10.11.7) [@thispage /XYZ @xpos @ypos]Ÿ *­Í10.11.7Ž‘6ÀlexŽŸuTï/pdf:dest (fun:lex) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èlex(files)Ž¡‘¿÷case‘?ýpattern1Ž¡‘îbody1Ž¡‘¿÷case‘?ýpattern2Ž¡‘îbody2Ž¡‘¿÷...Ž¡‘¿÷defaultŽ¡‘îbodydަ‘²The–ÆØÈlex“²function“proš¸ãvides“a“simple“lexical-st˜yle“scanner‘ÆÙfunction.‘BHThe“inputŽ¡is–Äáa›Äâsequence“of˜ les“or˜c¸ãhannels.‘ÀlThe“cases˜spGecify“regular˜expressions.‘ÀlEac¸ãhŽŽŽŒ‹¦ ,Ô s\È ý®£8‘Yï0pdf:dest (page.166) [@thispage /XYZ @xpos @ypos]²166‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘Y²time–˜the›™input“is˜read,‘Xthe“regular“expression˜that“matc¸ãhes˜the“Îlongest‘T«pr‘ÿ}'e x‘Dܲofޤ ‘Ythe–UUinput“is“selected,“and“the“b•Go“dy–UUis“ev‘ÿqÇaluated.Ž¡‘hIf›³t•¸ãw“o˜clauses˜bGoth˜matc“h˜the˜same˜input,‘(Ôthe˜Îlast‘‹²one˜is˜selected˜for˜execu-Ž¡‘Ytion.‘The–árÈdefault“²case“matcš¸ãhes“the“regular“expression“È.²;‘'€y˜ou“probably“w˜an˜tŽ¡‘Yto–UUplace“it“ rst“in“the“pattern“list.Ž¡‘hIf–%lthe“b•Go“dy–%lend“with›%man“Èexport“²directiv¸ãe,‘Yqthe“state˜is“passed“to“the“nextŽ¡‘Yclause.Ž¡‘hF‘ÿ*ªor–µexample,‘$Öthe“follo¸ãwing“program›¶collects“all“oGccurrences˜of“alphan¸ãumericŽ¡‘Yw¸ãords–UUin“an“input“ le.ŽŸ‰K‘mÿôÈcollect-words($(files))‘?ý=Ž¡‘}¿ëwords[]‘?ý=Ž¡‘}¿ëlex($(files))Ž¡‘}¿ëdefaultŽ¡’â#‘?ýemptyŽ¡‘}¿ëcase–?ý$"[[:alnum:]]+"“gŽ¡’âwords[]–?ý+=“$0Ž¡’âexportŽ©‰J‘h²The–UUÈdefault“²case,“if“one“exists,“matcš¸ãhes“single“c˜haracters.‘qÇSinceŽ¡‘hIt–UUis“an“error“if“the“input“doGes“not“matcš¸ãh“an˜y“of“the“regular“expressions.Ž¡‘hThe–UUïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:break) >> >> Èbreak“²functionïpdf:eann“can“bšGe“used“to“ab˜ort“the“lo˜op.Ž‘YŸWIï:pdf:dest (subsection.10.11.8) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.11.8Ž‘6Àlex-searc hŽŸuTï6pdf:dest (fun:lex-search) [@thispage /XYZ @xpos @ypos]¡‘¿÷Èlex-search(files)Ž¡‘¿÷case‘?ýpattern1Ž¡‘îbody1Ž¡‘¿÷case‘?ýpattern2Ž¡‘îbody2Ž¡‘¿÷...Ž¡‘¿÷defaultŽ¡‘îbodydަ‘²The–«ÔÈlex-search“²function“is“lik¸ãe‘«Õthe“Èlex“²function,‘Átbut“input“that“doGes“notŽ¡matc•¸ãh›‹‡an“y–‹†of˜the˜regular“expressions˜is˜skippGed.‘.ƒIf“the˜clauses˜include“a˜ÈdefaultŽ¡²case,–UUthen“the“Èdefault“²matcš¸ãhes“an˜y“skippGed“text.Ž¡‘F‘ÿ*ªor–µexample,‘$Öthe“follo¸ãwing“program›¶collects“all“oGccurrences˜of“alphan¸ãumericŽ¡wš¸ãords–UUin“an“input“ le,“skipping“an˜y“other“text.ŽŸ‰K‘ÿôÈcollect-words($(files))‘?ý=Ž¡‘$¿ëwords[]‘?ý=Ž¡‘$¿ëlex-search($(files))Ž¡‘$¿ëdefaultŽ¡‘4âeprintln(Skipped‘?ý$0)Ž¡‘$¿ëcase–?ý$"[[:alnum:]]+"“gŽ¡‘4âwords[]–?ý+=“$0Ž¡‘4âexportŽŽŽŒ‹§ 6 s\È ý®£8‘#ï0pdf:dest (page.167) [@thispage /XYZ @xpos @ypos]Ä10.11.‘ÇHIGHER-LEVEL–UUIO“FUNCTIONS’ŒŸæ²167ŽŽ 8G ýÚŸ ‘2The–UUÈdefault“²case,“if“one“exists,“matcš¸ãhes“single“c˜haracters.‘qÇSinceޤ ‘2It–UUis“an“error“if“the“input“doGes“not“matcš¸ãh“an˜y“of“the“regular“expressions.Ž¡‘2The–UUïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:break) >> >> Èbreak“²functionïpdf:eann“can“bšGe“used“to“ab˜ort“the“lo˜op.Ž‘#Ÿm ï:pdf:dest (subsection.10.11.9) [@thispage /XYZ @xpos @ypos]Ÿ 9Í10.11.9Ž‘6ÀLexerŽŸuTï1pdf:dest (obj:Lexer) [@thispage /XYZ @xpos @ypos]¡²The–ÔqÈLexer›Ôp²ob‘Ž8ject“de nes˜a“facilit¸ãy˜for“lexical˜analysis,‘î8similar˜to“the˜Èlex²(1)“andŽ¡Èflex²(1)‘UUprograms.Ž¡‘In–¦ÐÈomake²,‘û.lexical“analyzers“can“bGe“constructed“dynamically“b¸ãy“extendingŽ¡the–‘ŠÈLexer“²class.‘&gA‘‘zlexer›‘‹de nition“consists“of“a“set“of˜directiv¸ães“spGeci ed“withŽ¡methošGd–UUcalls,“and“set“of“clauses“sp˜eci ed“as“rules.Ž¡‘F‘ÿ*ªor–,example,‘a¬consider›,the“follo¸ãwing“lexer˜de nition,‘a¬whic¸ãh“is˜in¸ãtended“forŽ¡lexical–UUanalysis“of“simple“arithmetic“expressions“for“a“desktop“calculator.Ž©³‘¿÷Èlexer1.‘?ý=Ž¡‘îextends‘?ý$(Lexer)Ž¡¡‘îother:‘?ý.Ž¡‘/?åeprintln(Illegal–?ýcharacter:“$*“)Ž¡‘/?ålex()Ž¡¡‘îwhite:‘?ý$"[[:space:]]+"Ž¡‘/?ålex()Ž¡¡‘îop:‘?ý$"[-+*/()]"Ž¡‘/?åswitch‘?ý$*Ž¡‘/?åcase‘?ý+Ž¡‘>ÿÜToken.unit($(loc),‘?ýplus)Ž¡‘/?åcase‘?ý-Ž¡‘>ÿÜToken.unit($(loc),‘?ýminus)Ž¡‘/?åcase‘?ý*Ž¡‘>ÿÜToken.unit($(loc),‘?ýmul)Ž¡‘/?åcase‘?ý/Ž¡‘>ÿÜToken.unit($(loc),‘?ýdiv)Ž¡‘/?åcase‘?ý$"("Ž¡‘>ÿÜToken.unit($(loc),‘?ýlparen)Ž¡‘/?åcase‘?ý$")"Ž¡‘>ÿÜToken.unit($(loc),‘?ýrparen)Ž¡¡‘înumber:‘?ý$"[[:digit:]]+"Ž¡‘/?åToken.pair($(loc),–?ýexp,“$(int“$*“))Ž¡¡‘îeof:‘?ý$"\'"Ž¡‘/?åToken.unit($(loc),‘?ýeof)ަ‘²This–·program›¶de nes“an˜ob‘Ž8ject“Èlexer1˜²the“extends˜the“ÈLexer˜²ob‘Ž8ject,‘pwhic¸ãhŽ¡de nes–UUlexing“en•¸ãvironmen“t.ŽŽŽŒ‹¨ ?@ s\È ý®£8‘Yï0pdf:dest (page.168) [@thispage /XYZ @xpos @ypos]²168‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ‘h²The–Å~remainder›Å}of“the“de nition˜consists“of˜a“set“of˜clauses,‘!ˆeac¸ãh˜with“aޤ ‘YmethošGd–2&name“b˜efore›2%the“colon;‘=àa“regular“expression“after˜the“colon;‘=àand“in“thisŽ¡‘Ycase,‘É€a›²Eb•Go“dy‘ÿ*ª.‘ˆ–The˜b“o“dy–²Dis˜optional,‘É€if˜it“is˜not˜sp•Geci ed,‘É€the˜metho“d‘²Dwith˜theŽ¡‘Ygiv¸ãen–UUname“should“already“exist“in“the“lexer“de nition.Ž© .‘hÎNB‘æu²The–àclause›àthat“matc¸ãhes˜the“Îlongest‘Òݲpre x˜of“the“input˜is“selected.‘ÖIfŽ¡‘Yt•¸ãw“o›–clauses‘–matc“h˜the˜same––input˜pre x,‘¦Othen“the˜Îlast‘ˆõ²one˜is“selected.‘4 This˜isŽ¡‘Yunlikš¸ãe–UUmost“standard“lexers,“but“mak˜es“more“sense“for“extensible“grammars.ŽŸ .‘hThe–ö$ rst›ö%clause“matc•¸ãhes˜an“y–ö$input“that˜is“not“matc•¸ãhed˜b“y–ö$the˜other“clauses.Ž¡‘YIn–this“case,‘Q€an‘error“message“is“prinš¸ãted“for“an˜y‘unkno˜wn“c˜haracter,‘Q€and“theŽ¡‘Yinput–Vìis›VëskippGed.‘úNote“that“this˜clause“is“selected˜only“if“no“other˜clause“matc¸ãhes.ަ‘hThe–Ù'second“clause“is“respGonsible“for“ignoring‘Ù&white“space.‘ý=If“whitespace“isŽ¡‘Yfound,–UUit“is“ignored,“and“the“lexer“is“called“recursiv¸ãely‘ÿ*ª.ŽŸ .‘hThe–Nthird“clause“is“respšGonsible“for“the‘Oarithmetic“op˜erators.‘Ÿ²It“mak¸ães“useŽ¡‘Yof–·¤the›·£ÈToken“²ob‘Ž8ject,‘Ð8whic¸ãh˜de nes“three“ elds:‘6da“Èloc“² eld“that˜represen¸ãts“theŽ¡‘Ysource–UUloGcation;“a“Èname²;“and“a“Èvalue².ަ‘hThe–«5lexer›«4de nes“the˜Èloc“²v‘ÿqÇariable“to˜bšGe“the“lo˜cation›«4of“the˜curren¸ãt“lexemeŽ¡‘Yin–UUeac¸ãh“of“the“methošGd“b˜o˜dies,“so“wš¸ãe“can“use“that“v‘ÿqÇalue“to“create“the“tok˜ens.ަ‘hThe–ÑOÈToken.unit($(loc),‘?ýname)“²methoGd“constructs“a“new“ÈToken“²ob‘Ž8jectŽ¡‘Ywith–UUthe“giv¸ãen“name,“and“a“default“v‘ÿqÇalue.ŽŸ .‘hThe–8ãÈnumber“²clause“matcš¸ãhes“nonnegativ˜e“in˜teger“constan˜ts.‘÷The“ÈToken.pair($(loc),–?ýname,“value)Ž¡‘Y²constructs–UUa“tokš¸ãen“with“the“giv˜en“name“and“v‘ÿqÇalue.ަ‘hLexer–8ãob›Ž8ject“opGerate“on“ÈInChannel“²ob˜jects.‘÷The“methoGd“Èlexer1.lex-channel(channel)Ž¡‘Y²reads–UUthe“next“tokš¸ãen“from“the“c˜hannel“argumen˜t.Ž‘Y©¶Iï;pdf:dest (subsection.10.11.10) [@thispage /XYZ @xpos @ypos]Ÿ >“²shift“opGerations.ަ‘First,‘ˆðw¸ãe–~extend›~žthe“lexer˜so“that˜it“recognizes˜these“tokš¸ãens.‘í¡This“time,‘ˆðw˜eŽ¡cš¸ãhoGose–UUto“lea˜v˜e“Èlexer1“²in˜tact,“instead“of“using“the“+=“opGerator.ŽŸýð‘¿÷Èlexer2.‘?ý=Ž¡‘îextends‘?ý$(lexer1)Ž¡¡‘îlsl:‘?ý$"<<"Ž¡‘/?åToken.unit($(loc),‘?ýlsl)ŽŽŽŒ‹¬ bá s\È ý®£8‘Yï0pdf:dest (page.172) [@thispage /XYZ @xpos @ypos]²172‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŸ ¤ ‘xîÈasr:‘?ý$">>"Ž¡’ˆ?åToken.unit($(loc),‘?ýasr)Ž©è‘h²Next,‘™ðw¸ãe–Œ7extend“the“parser›Œ8to“handle“these“new˜opGerators.‘mW‘ÿ*ªe˜in¸ãtend“thatŽ¡‘Ythe–vbitš¸ãwise‘vopGerators“ha˜v˜e‘vlo˜w˜er“precedence›vthan“the˜other“arithmetic˜opGerators.Ž¡‘YThe›UUt•¸ãw“o-argumen“t˜form˜of˜the˜Èleft˜²methoGd˜accomplishes˜this.ŽŸµ!‘h¿÷Èparser2.‘?ý=Ž¡‘xîextends‘?ý$(parser1)Ž¡¡‘xîleft(plus,–?ýlsl“lsr“asr)Ž¡¡‘xîlexer–?ý=“$(lexer2)Ž¡¡‘xîexp:–?ýexp“lsl“expŽ¡’ˆ?ålsl($1,‘?ý$3)Ž¡¡‘xîexp:–?ýexp“asr“expŽ¡’ˆ?åasr($1,‘?ý$3)ަ‘h²In–«'this›«(case,‘Àœw¸ãe“use“the˜new“lexer“Èlexer2²,‘Àœand˜w¸ãe“add“proGductions˜for“theŽ¡‘Ynew–UUshift“opGerations.Ž‘YŸÚ/ï;pdf:dest (subsection.10.11.17) [@thispage /XYZ @xpos @ypos]Ÿ 2rÍ10.11.17Ž‘=€P asswdŽŸpöï2pdf:dest (obj:Passwd) [@thispage /XYZ @xpos @ypos]Ÿ $:²The–pðÈPasswd›pï²ob‘Ž8ject“represen¸ãts˜an“en¸ãtry˜in“the“system's˜user“database.‘%¥It“con¸ãtainsŽ¡the–UUfollo¸ãwing“ elds.ަ‘Èpw‘¡E‰ff&fŽ‘Ç«name²:‘qÇthe–UUlogin“name.ޤè‘Èpw‘¡E‰ff&fŽ‘Ç«passwd²:‘qÇthe–UUencrypted“passw¸ãord.Ž©ç‘Èpw‘¡E‰ff&fŽ‘Ç«uid²:‘qÇuser–UUid“of“the“user.Ž¡‘Èpw‘¡E‰ff&fŽ‘Ç«gid²:‘qÇgroup–UUid“of“the“user.Ž¡‘Èpw‘¡E‰ff&fŽ‘Ç«gecos²:‘qÇthe–UUuser“name“or“commen¸ãt“ eld.Ž¡‘Èpw‘¡E‰ff&fŽ‘Ç«dir²:‘qÇthe–UUuser's“home“directory‘ÿ*ª.ަ‘Èpw‘¡E‰ff&fŽ‘Ç«shell²:‘qÇthe–UUuser's“default“shell.ŽŸè‘Not–UUall“the“ elds“will“ha•¸ãv“e–UUmeaning“on“all“opGerating“systems.ŽŽŽŒ‹­ o  s\È ý®£8‘#ï0pdf:dest (page.173) [@thispage /XYZ @xpos @ypos]Ä10.11.‘ÇHIGHER-LEVEL–UUIO“FUNCTIONS’ŒŸæ²173ŽŽ 8G ýÚ‘#ï;pdf:dest (subsection.10.11.18) [@thispage /XYZ @xpos @ypos]Ÿ Í10.11.18Ž‘=€getp• wnam,‘€getp“wuidŽ©  ï4pdf:dest (fun:getpwnam) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (fun:getpwuid) [@thispage /XYZ @xpos @ypos]Ÿ ‘ÿôÈ$(getpwnam–?ýname...)“:“Passwdޤ ‘$¿ëname–?ý:“StringŽ¡‘ÿô$(getpwuid–?ýuid...)“:“PasswdŽ¡‘$¿ëuid–?ý:“IntŽ¡‘ÿôraises‘?ýRuntimeExceptionŽŸui‘²The–8ãÈgetpwnam“²function“loGoks“up“an“enš¸ãtry“b˜y“the“user's“login“and“the“ÈgetpwuidŽ¡²function– ßloGoks› àup“an˜enš¸ãtry“b˜y‘ àuser's“n˜umerical› àid“(uid).‘YöIf“no˜en¸ãtry“is˜found,‘*anŽ¡exception–UUwill“bGe“raised.ŽŸëï;pdf:dest (subsection.10.11.19) [@thispage /XYZ @xpos @ypos]Ÿ k“Í10.11.19Ž‘=€getp• w“en“tsަï5pdf:dest (fun:getpwents) [@thispage /XYZ @xpos @ypos]Ÿ ‘ÿôÈ$(getpwents)–?ý:“ArrayŽ©uh‘²The–ÊGÈgetpwents“²function“returns“an‘ÊFarraš¸ãy“of“ÈPasswd“²ob‘Ž8jects,‘çƒone“for“ev˜eryŽ¡user–p>fund“in“the“system“user“database.‘ÂNote“that“depšGending“on“the“op˜erat-Ž¡ing–ÞŽsystem›Þand“on“the“setup˜of“the“user˜database,‘Üthe“returned“arra•¸ãy˜ma“y‘ÞŽbGeŽ¡incomplete–UUor“evš¸ãen“empt˜y‘ÿ*ª.ŽŸëï;pdf:dest (subsection.10.11.20) [@thispage /XYZ @xpos @ypos]Ÿ k“Í10.11.20Ž‘=€GroupŽŸ  ï1pdf:dest (obj:Group) [@thispage /XYZ @xpos @ypos]Ÿ ²The–à ÈGroup“²ob‘Ž8ject“represenš¸ãts‘à an“en˜try“in“the“system's“user“group‘à database.‘ºéItŽ¡conš¸ãtains–UUthe“follo˜wing“ elds.ަ‘Ègr‘¡E‰ff&fŽ‘Ç«name²:‘qÇthe–UUgroup“name.ŽŸui‘Ègr‘¡E‰ff&fŽ‘Ç«group²:‘qÇthe–UUencrypted“passw¸ãord.ޤuh‘Ègr‘¡E‰ff&fŽ‘Ç«gid²:‘qÇgroup–UUid“of“the“group.Ž¡‘Ègr‘¡E‰ff&fŽ‘Ç«mem²:‘qÇthe–UUgroup“mem¸ãbGer's“user“names.ŽŸui‘Not–UUall“the“ elds“will“ha•¸ãv“e–UUmeaning“on“all“opGerating“systems.ŽŸëï;pdf:dest (subsection.10.11.21) [@thispage /XYZ @xpos @ypos]Ÿ k“Í10.11.21Ž‘=€getgrnam,‘€getgrgidŽŸ  ï4pdf:dest (fun:getgrnam) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (fun:getgrgid) [@thispage /XYZ @xpos @ypos]Ÿ ‘ÿôÈ$(getgrnam–?ýname...)“:“Groupޤ ‘$¿ëname–?ý:“StringŽ¡‘ÿô$(getgrgid–?ýgid...)“:“GroupŽ¡‘$¿ëgid–?ý:“IntŽ¡‘ÿôraises‘?ýRuntimeExceptionަ‘²The–ÓÈgetgrnam“²function“loGoks“up“a“group‘Òenš¸ãtry“b˜y“the“group's“name“and“theŽ¡Ègetgrgid–ìd²function“loGoks‘ìcup“an“enš¸ãtry“b˜y“groups's“n˜umerical‘ìcid“(gid).‘NÌIf“no“en˜tryŽ¡is–UUfound,“an“exception“will“bGe“raised.ŽŽŽŒ‹® vw s\È ý®£8‘Yï0pdf:dest (page.174) [@thispage /XYZ @xpos @ypos]²174‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚ‘Yï;pdf:dest (subsection.10.11.22) [@thispage /XYZ @xpos @ypos]Ÿ Í10.11.22Ž‘=€tgetstrŽ©ʨï3pdf:dest (fun:tgetstr) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(tgetstr–?ýid)“:“Stringޤ ‘îid–?ý:“StringŽŸ~#‘²The–ÖÈtgetstr“²function›×loGoks“up“the“terminal“capabilit¸ãy˜with“the“indicatedŽ¡Èid².‘±ØThis–Àassumes“the“terminfo“to“loGokup‘Àis“givš¸ãen“in“the“ÈTERM‘¿¨²en˜vironmen˜tŽ¡v›ÿqÇariable.‘ÇThis–qÃfunction“returns“an‘qÄempt¸ãy“v˜alue“if“the‘qÄgivš¸ãen“terminal“capabilit˜yŽ¡is–UUnot“de ned.Ž¡‘Note:‘üòif–ëyš¸ãou“in˜tend“to›êuse“the“v‘ÿqÇalue˜returned“b¸ãy“Ètgetstr“²inside˜the“shellŽ¡ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:prompt) >> >> Èpromptïpdf:eann²,–UUy¸ãou“need“to“wrap“it“using“the“ïrpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:prompt-invisible) >> >> Èprompt-invisible“²functionïpdf:eann.ŽŸÈï;pdf:dest (subsection.10.11.23) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ10.11.23Ž‘=€xterm-escap•`e-b“egin,‘€xterm-escap“e-endަï>pdf:dest (fun:xterm-escape-begin) [@thispage /XYZ @xpos @ypos]ï> >> Èpromptïpdf:eann²,‘<óy¸ãou“need“toŽ¡use–8ãÈ$(prompt_invisible_begin)$(xterm-escape-begin)“²and“È$(xterm-escape-end)$(prompt_invisible_end)².ŽŸÈï;pdf:dest (subsection.10.11.24) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ10.11.24Ž‘=€xterm-escap`eަï8pdf:dest (fun:xterm-escape) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(xterm-escape–?ýs)“:“SequenceŽŸ~"‘²When–=Üthe“ÈTERM‘=Õ²en•¸ãvironmen“t–=Üv‘ÿqÇariable“indicates“that“the‘=ÛXT‘ÿ*ªerm“title“settingŽ¡capabilitš¸ãy–8ãis“a˜v›ÿqÇailable,‘qÇÈ$(xterm-escape‘?ýs)“²is“equiv˜alen¸ãt“to“È$(xterm-escape-begin)s$(xterm-escape-end)².Ž¡Otherwise,–UUit“returns“an“empt¸ãy“v‘ÿqÇalue.Ž¡‘Note:‘”Êif–æ×yš¸ãou“in˜tend›æÖto“use“the“v‘ÿqÇalue˜returned“b¸ãy“Èxterm-escape˜²inside“theŽ¡shell–UUïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:prompt) >> >> Èpromptïpdf:eann²,“y¸ãou“need“to“wrap“it“using“the“ïrpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:prompt-invisible) >> >> Èprompt-invisible“²functionïpdf:eann.ŽŸÈï;pdf:dest (subsection.10.11.25) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ10.11.25Ž‘=€prompt-in• visible-b`egin,‘€prompt-in“visible-endަïBpdf:dest (fun:prompt-invisible-begin) [@thispage /XYZ @xpos @ypos]ï@pdf:dest (fun:prompt-invisible-end) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(prompt-invisible-begin)–?ý:“StringŽ¡‘¿÷$(prompt-invisible-end)–?ý:“StringŽŸ~#‘²The–ðrÈprompt-invisible-begin“²and“Èprompt-invisible-end“²functions“re-Ž¡turn–%êthe“escapGe“sequences›%éthat“m¸ãust“used“to“mark“the˜\in¸ãvisible"“sections“ofŽ¡the–UUshell“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:prompt) >> >> Èpromptïpdf:eann“²(suc¸ãh“as“v‘ÿqÇarious“escapGe“sequences).ŽŸ«ï;pdf:dest (subsection.10.11.26) [@thispage /XYZ @xpos @ypos]Ÿ €Í10.11.26Ž‘=€prompt-in visibleަï> >> Èpromptïpdf:eannŽ¡²(sucš¸ãh–UUas“v‘ÿqÇarious“escapGe“sequences)“m˜ust“bšGe“wrapp˜ed“this“w•¸ãa“y‘ÿ*ª.ŽŽŽŒ‹¯ €’ s\È ý®£8‘#ï0pdf:dest (page.175) [@thispage /XYZ @xpos @ypos]Ä10.11.‘ÇHIGHER-LEVEL–UUIO“FUNCTIONS’ŒŸæ²175ŽŽ 8G ýÚ‘#ï;pdf:dest (subsection.10.11.27) [@thispage /XYZ @xpos @ypos]Ÿ Í10.11.27Ž‘=€gettimeofda yŽŸʨï8pdf:dest (fun:gettimeofday) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(gettimeofday)–?ý:“FloatŽŸ‘²The–ÏÈgettimeofday“²function“returns“the“time‘Ðof“daš¸ãy“in“seconds“since“Jan˜uaryŽŸ 1,‘UU1970.ŽŽŽŒ‹° ‘u s\È ý®£8‘Yï0pdf:dest (page.176) [@thispage /XYZ @xpos @ypos]²176‘DxÂÄCHAPTER–UU10.‘ÇFILE,“I/O“AND“SYSTEM“OPERA‘ÿ*ªTIONSŽŽ 8G ýÚŽŽŒ‹± “_ s\È ý®£8‘#ï0pdf:dest (page.177) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (chapter.11) [@thispage /XYZ @xpos @ypos]ŸUÓ÷ÊChapter‘Ç 11ŽŸ2Ó÷ÆShell‘ T{commandsŽŸ4Ó÷²Shell–$Õcommands“(commands“to“bšGe“executed‘$Öb¸ãy“the“op˜erating“system)“can“b˜eޤ freely–UUmixed“with“other“coGde.Ž© Ó÷‘ÇNOTE²:–âêthe“synš¸ãtax“and“shell“usage‘âéis“iden˜tical“on“all“platforms,‘OincludingŽ¡Win32.‘ØÈT‘ÿ*ªo›Ía•¸ãv“oid˜pGortabilit“y˜problems˜on˜Win32,‘êêit˜is˜recommended˜that˜y“ouŽ¡a•¸ãv“oid–UUthe“use“of“the“nativš¸ãe“shell“in˜terpreter“Ècmd².ŽŸ#Ô‘ÿôÈLIB–?ý=“$(dir“lib)Ž¡‘ÿôprintln(The–?ýcontents“of“the“$(LIB)“directory“is:)Ž¡‘ÿôls‘?ý$(LIB)ŽŸw¹ï4pdf:dest (section.11.1) [@thispage /XYZ @xpos @ypos]Ÿþ¢Ì11.1Ž‘,ÿüSimple‘ffcommandsŽŸq—²The–ˬsyn¸ãtax›Ë«of“shell˜commands“is˜similar“to“the˜syn¸ãtax“used˜b¸ãy“the˜Unix“shellŽ¡Èbash².‘‚3In–°#general,‘×a›°$command“is˜a“Îpip‘ÿ}'eline².‘‚3A‘¯Êbasic˜command“is˜part“of˜aŽ¡pip•Geline.‘K¦It‘óKis›óJsp“eci ed˜with˜the˜name˜of˜an‘óKexecutable˜and˜some˜argumen¸ãts.Ž¡Here–UUare“some“examples.ŽŸ#Ó‘ÿôÈlsŽ¡‘ÿôls–?ý-AF“.Ž¡‘ÿôecho–?ýHello“worldŽŸOÝ‘²The–ļcommand“is“found“using“the‘Ä»currenš¸ãt“searc˜h“path“in“the“v‘ÿqÇariable“ÈPATH[]²,Ž¡whicš¸ãh–UUshould“de ne“an“arra˜y“of“directories“con˜taining“executables.ަ‘A–UUcommand“maš¸ãy“also“bGe“pre xed“b˜y“en˜vironmen˜t“v‘ÿqÇariable“de nitions.ŽŸ#Ó‘ÿôÈ#–?ýPrints“"Hello“world"Ž¡‘ÿôenv–?ýX="Hello“world"“Y=2“printenv“XŽ¡‘ÿô#–?ýPass“the“include“path“to“the“Visual“C++Ž¡‘ÿôenv–?ýinclude="c:\Program“Files\Microsoft“SDK\include"“cl“foo.cppŽŽŸK’Çÿÿ²177ŽŽŒ‹² ” s\È ý®£8‘Yï0pdf:dest (page.178) [@thispage /XYZ @xpos @ypos]²178’žxÌÄCHAPTER–UU11.‘ÇSHELL“COMMANDSŽŽ 8G ýÚ‘Yï4pdf:dest (section.11.2) [@thispage /XYZ @xpos @ypos]Ÿ Ì11.2Ž‘,ÿüGlobbingŽ©ôc²Commands–t†maš¸ãy“con˜tain›t…wildcard“patterns.‘ÏYA‘t> >> 10.4ïpdf:eann.ŽŸ"Dï4pdf:dest (section.11.3) [@thispage /XYZ @xpos @ypos]Ÿ\Ì11.3Ž‘,ÿüBacŒÌkground‘ffjobsަ²The–QÃcommand“maš¸ãy“also“bGe“placed“in“the“bac˜kground“b˜y“placing“an“ampGersandŽ¡after–_Gthe“command.‘œConš¸ãtrol“returns“to‘_Fthe“shell“without“w˜aiting“for‘_Fthe“job“toŽ¡complete.‘qÇThe–UUjob“con•¸ãtin“ues–UUto“run“in“the“bac¸ãkground.ŽŸ#­‘ÿôÈgcc–?ý-o“hugeprogram“*.c“&ŽŸibï4pdf:dest (section.11.4) [@thispage /XYZ @xpos @ypos]©Î?Ì11.4Ž‘,ÿüFile‘ffredirectionŽŸôb²Input–Räand“output“can“bGe“redirected“to“ les“bš¸ãy“using“the“È<²,–SaÈ>²,“and–RäÈ>&“²directiv˜esŽ¡after–UUthe“command.ŽŸ#®‘ÿôÈ#–?ýWrite“to“the“"foo"“fileŽ¡‘ÿôecho–?ýHello“world“>“fooŽ¡¡‘ÿô#–?ýRedirect“input“from“the“foo“fileŽ¡‘ÿôcat–?ý<“fooŽ¡¡‘ÿô#–?ýRedirect“standard“output“and“errors“to“the“foo“fileŽ¡‘ÿôgcc–?ý-o“boo“*.c“>&“fooŽŸiaï4pdf:dest (section.11.5) [@thispage /XYZ @xpos @ypos]¦Ì11.5Ž‘,ÿüPips3elinesŽŸôc²PipGelines–Bâare“sequences“of›Bácommands,‘F“where“the“output˜from“eac¸ãh“command“isŽ¡sen¸ãt–Æ[to›Æ\the“next.‘ÄÚPipGelines“are˜de ned“with“the“È|˜²and“È|&“²syn¸ãtax.‘ÄÚWith˜È|“²theŽ¡output–ÿþis›ÿýredirected,‘*¨but“errors˜are“not.‘qÁWith“È|&˜²bGoth“output“and˜errors“areŽ¡redirected.ŽŽŽŒ‹³ š· s\È ý®£8‘#ï0pdf:dest (page.179) [@thispage /XYZ @xpos @ypos]Ä11.6.‘ÇCONDITIONAL‘UUEXECUTION’¢Ç²179ŽŽ 8G ýÚŸ ‘2¿÷È#–?ýSend“the“output“of“the“ls“command“to“the“printerޤ ‘2¿÷ls–?ý*.c“|“lprŽ¡¡‘2¿÷#–?ýSend“output“and“errors“to“jyh“as“emailŽ¡‘2¿÷gcc–?ý-o“hugefile“*.c“|&“mail“jyhŽ‘#Ÿ3Yï4pdf:dest (section.11.6) [@thispage /XYZ @xpos @ypos]ŸÇÌ11.6Ž‘,ÿüConditional‘ffexecutionŽ©ç²Commands–»·ma¸ãy‘»¸also“bšGe“comp˜osed›»¸though“conditional“ev‘ÿqÇaluation“using˜the“È||Ž¡²and–óÞÈ&&“²syn•¸ãtax.‘MaEv“ery–óÞcommand“has“an“inš¸ãteger“exit“coGde,‘whic˜h“ma˜y“bGe“zeroŽ¡or– xsome“other“in¸ãteger.‘Ó/A‘ Dcommand“is“said“to“Îsuc–ÿ}'c“e“e“d‘)²if– xits“exit“coGde“is“zero.Ž¡The›·íexpression‘·ìÈcommand1–?ý&&“command2˜²executes˜Ècommand2˜²only‘·ìif˜Ècommand1Ž¡²succeeds.‘çThe› expression‘ Ècommand1–?ý||“command2˜²executes– Ècommand2˜²only“ifŽ¡Ècommand1‘UU²fails.ŽŸxª‘¿÷È#–?ýDisplay“the“x/y“file“if“possibleŽ¡‘¿÷cd–?ýx“&&“cat“yŽ¡¡‘¿÷#–?ýRun“foo.exe,“or“print“an“error“messageŽ¡‘¿÷(test–?ý-x“foo.exe“&&“foo.exe)“||“echo“"foo.exe“is“not“executable"ŽŸÏÈï4pdf:dest (section.11.7) [@thispage /XYZ @xpos @ypos]Ÿ*­Ì11.7Ž‘,ÿüGroupingަ²P•¸ãaren“thesis–+èare“used›+çfor“grouping“in“a“pipGeline“or˜conditional“command.‘cøIn“theŽ¡follo¸ãwing–*Œexpression,‘3the“Ètest“²function“is›*‹used“to“test“whether˜the“Èfoo.exe“² leŽ¡is–r> >> ÈShell–UU²ob‘Ž8jectïpdf:eann“for“more“information.Ž‘YŸhï4pdf:dest (section.11.9) [@thispage /XYZ @xpos @ypos]ŸaÌ11.9Ž‘,ÿüBasic–ffbuiltin“functionsŽŸ .iï9pdf:dest (subsection.11.9.1) [@thispage /XYZ @xpos @ypos]ŸRÐÍ11.9.1Ž‘0ec hoŽ©¼¢ï0pdf:dest (fun:echo) [@thispage /XYZ @xpos @ypos]Ÿ RϲThe–UUÈecho“²function“prin¸ãts“a“string.ŽŸž È$(echo‘?ý)Ž¡echo‘?ýŽŸ›¤ï9pdf:dest (subsection.11.9.2) [@thispage /XYZ @xpos @ypos]Ÿ ëÍ11.9.2Ž‘0cdަï.pdf:dest (fun:cd) [@thispage /XYZ @xpos @ypos]Ÿ RϲThe–UUÈcd“²function“cš¸ãhanges“the“curren˜t“directory‘ÿ*ª.Ž©ž ‘ÿôÈcd(dir)Ž¡‘$¿ëdir–?ý:“DirŽŸK<‘²The–UUÈcd“²function“also“suppGorts“a“2-argumen¸ãt“form:ަ‘ÿôÈ$(cd–?ýdir,“e)Ž¡‘$¿ëdir–?ý:“DirŽ¡‘$¿ëe–?ý:“expressionŽŸK=‘²In–,the“t•¸ãw“o-argumen“t–,form,‘L¡expression“Èe“²is“ev‘ÿqÇaluated“in“the“directory“Èdir².Ž¡The–UUcurrenš¸ãt“directory“is“not“c˜hanged“otherwise.ŽŸ RÏ‘The–·µbšGeha¸ãvior“of“the“Ècd‘·¶²function“can“b˜e“c¸ãhanged“with“the“ÈCDPATH‘·œ²v‘ÿqÇariable,Ž¡whicš¸ãh–yspGeci es“a‘zsearc˜h“path“for“directories.‘\ÔThis“is“normally“useful‘zonly“in“theŽ¡Èosh–UU²command“in¸ãterpreter.ަ‘ÿôÈCDPATH–?ý:“Dir“SequenceŽŸK<‘²F‘ÿ*ªor–Òôexample,‘íthe“folloš¸ãwing“will‘Òõc˜hange“directory“to“the‘Òõ rst“directory“È./foo²,Ž¡È~/dir1/foo²,‘UUÈ~/dir2/foo².ަ‘ÿôÈCDPATH[]‘?ý=Ž¡‘$¿ë.Ž¡‘$¿ë$(HOME)/dir1Ž¡‘$¿ë$(HOME)/dir2Ž¡‘ÿôcd‘?ýfooŽŽŽŒ‹µ ¬d s\È ý®£8‘#ï0pdf:dest (page.181) [@thispage /XYZ @xpos @ypos]Ä11.10.‘ÇJOB–UUCONTR¸ãOL“BUIL‘ÿ*ªTIN“FUNCTIONS‘qxƲ181ŽŽ 8G ýÚ‘#ï5pdf:dest (section.11.10) [@thispage /XYZ @xpos @ypos]Ÿ Ì11.10Ž‘5•Job–ffconŒÌtrol“builtin“functionsŽŸ Sï:pdf:dest (subsection.11.10.1) [@thispage /XYZ @xpos @ypos]Ÿ3ZÍ11.10.1Ž‘6Àjobsޤöàï0pdf:dest (fun:jobs) [@thispage /XYZ @xpos @ypos]Ÿ Þ²The–UUÈjobs“²function“prin¸ãts“a“list“of“jobs.Ž© 3Z‘ÈjobsŽŸ3ï:pdf:dest (subsection.11.10.2) [@thispage /XYZ @xpos @ypos]Ÿ úvÍ11.10.2Ž‘6ÀbgŽ¡ï.pdf:dest (fun:bg) [@thispage /XYZ @xpos @ypos]Ÿ Þ²The–UUÈbg“²function“places“a“job“in“the“bac¸ãkground.ަ‘Èbg‘?ýŽŸ2ï:pdf:dest (subsection.11.10.3) [@thispage /XYZ @xpos @ypos]Ÿ úvÍ11.10.3Ž‘6ÀfgŽ¡ï.pdf:dest (fun:fg) [@thispage /XYZ @xpos @ypos]Ÿ Þ²The–UUÈfg“²function“brings“a“job“to“the“foreground.ަ‘Èfg‘?ýŽŸ2ï:pdf:dest (subsection.11.10.4) [@thispage /XYZ @xpos @ypos]Ÿ úvÍ11.10.4Ž‘6ÀstopŽ¡ï0pdf:dest (fun:stop) [@thispage /XYZ @xpos @ypos]Ÿ Þ²The–UUÈstop“²function“suspGends“a“job.ަ‘Èstop‘?ýŽŸ2ï:pdf:dest (subsection.11.10.5) [@thispage /XYZ @xpos @ypos]¤ úvÍ11.10.5Ž‘6Àw aitŽŸ¡Œï0pdf:dest (fun:wait) [@thispage /XYZ @xpos @ypos]¦²The– âÈwait“²function› áw¸ãaits“for“a“job“to“ nish.‘TmIf“no“proGcess˜idenš¸ãti ers“are“giv˜en,ŽŸ the–UUshell“w¸ãaits“for“all“jobs“to“complete.ަ‘Èwait‘?ýŽŸ3ï:pdf:dest (subsection.11.10.6) [@thispage /XYZ @xpos @ypos]¡Í11.10.6Ž‘6ÀkillŽŸ¡‹ï0pdf:dest (fun:kill) [@thispage /XYZ @xpos @ypos]¦²The–UUÈkill“²function“signals“a“job.ަ‘Èkill–?ý[signal]“ŽŸ'Áï5pdf:dest (section.11.11) [@thispage /XYZ @xpos @ypos]ŸúvÌ11.11Ž‘5•Command‘ffhistoryŽŸ àï:pdf:dest (subsection.11.11.1) [@thispage /XYZ @xpos @ypos]Ÿ fŽÍ11.11.1Ž‘6ÀhistoryŽŸöàï3pdf:dest (fun:history) [@thispage /XYZ @xpos @ypos]Ÿ Þ‘ÿôÈ$(history-index)–?ý:“Intޤ ‘ÿô$(history)–?ý:“String“SequenceŽ¡‘ÿôhistory-file–?ý:“FileŽ¡‘ÿôhistory-length–?ý:“IntŽŸÍh‘²The–-history›,v‘ÿqÇariables“manage˜the“command-line“history˜in“Èosh².‘õMThey“ha•¸ãv“eŽ¡no–UUe ect“in“Èomake².ަ‘The–¿7Èhistory-index›¿6²v‘ÿqÇariable“is“the˜currenš¸ãt“index“in˜to‘¿6the“command-lineŽ¡history›ÿ*ª.‘qÇThe–UUÈhistory“²v‘ÿqÇariable“is“the“curren¸ãt“command-line“history˜.ŽŽŽŒ‹¶ ³ì s\È ý®£8‘Yï0pdf:dest (page.182) [@thispage /XYZ @xpos @ypos]²182’žxÌÄCHAPTER–UU11.‘ÇSHELL“COMMANDSŽŽ 8G ýÚŸ ‘h²The–UVÈhistory-file›UU²v‘ÿqÇariable“can˜bGe“rede ned“if˜yš¸ãou“w˜an˜t‘UUthe“command-lineޤ ‘Yhistory–UUto“bGe“sa•¸ãv“ed.‘qÇThe–UUdefault“v‘ÿqÇalue“is“È~/.omake/osh_history².Ž¡‘hThe–ð4Èhistory-length›ð3²v‘ÿqÇariable“can“bGe˜rede ned“to“spGecify˜the“maxim¸ãumŽ¡‘Yn•¸ãum“bGer–UUof“lines“in“the“history“that“yš¸ãou“w˜an˜t“sa˜v˜ed.‘qÇThe“default“v‘ÿqÇalue“is“È100².ŽŽŽŒ‹· ½= s\È ý®£8‘#ï0pdf:dest (page.183) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (chapter.12) [@thispage /XYZ @xpos @ypos]ŸUÊChapter‘Ç 12ŽŸ2ÆThe– T{standard“ob‘ŽjectsŽŸ4ÈPervasives–A`²de nes“the›A_ob‘Ž8jects“that“are“de ned“in˜all“programs.‘k The“follo¸ãwingޤ ob‘Ž8jects–UUare“de ned.ŽŸÖÞï4pdf:dest (section.12.1) [@thispage /XYZ @xpos @ypos]Ÿ9Ì12.1Ž‘,ÿüP•ŒÌerv‘ÿ™asiv“es‘ffob‘æfjectsŽŸ ³çï9pdf:dest (subsection.12.1.1) [@thispage /XYZ @xpos @ypos]Ÿ 34Í12.1.1Ž‘0Ob‘ÀjectŽŸʨï2pdf:dest (obj:Object) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇnone.Ž¡‘The–UUÈObject“²ob›Ž8ject“is“the“roGot“ob˜ject.‘qÇEv¸ãery“class“is“a“subGclass“of“ÈObject².Ž¡‘It–UUproš¸ãvides“the“follo˜wing“ elds:ŽŸü—‘¸ŽŽŽ‘È$(o.object-length)²:‘qÇthe›UUn•¸ãum“b•Ger˜of˜ elds˜and˜metho“ds˜in˜the˜ob‘Ž8ject.Ž©˜<‘¸ŽŽŽ‘È$(o.object-mem‘?ý)²:‘knreturns–H£Ètrue“²i “the“È‘H¢²is“a“ eld“or“methoGdŽ¡‘of–UUthe“ob‘Ž8ject.ŽŸ˜=‘¸ŽŽŽ‘È$(o.object-add–?ý,“)²:‘o‹adds–PÜthe›PÝ eld“to˜the˜ob‘Ž8ject,‘QÁreturn-Ž¡‘ing–UUa“new“ob‘Ž8ject.ަ‘¸ŽŽŽ‘È$(o.object-find‘?ý)²:‘8Qfetc¸ãhes–âjthe“ eld“or‘âimethoGd“from“the“ob‘Ž8ject;‘¸itŽ¡‘is–UUequiv›ÿqÇalen¸ãt“to“È$(o.)²,“but“the“v˜ariable“can“bGe“non-constan¸ãt.ŽŸ˜=‘¸ŽŽŽ‘È$(o.object-map‘?ý)²:‘k‹maps–HÞa›HÝfunction“o•¸ãv“er˜the˜ob‘Ž8ject.‘m The˜functionŽ¡‘should–tßtakš¸ãe“t˜w˜o“argumen˜ts;‘£the“ rst“is“a“ eld“name,‘¼Àthe“second“is“theŽ¡‘v›ÿqÇalue–Žof“that“ eld.‘Z…The“result“is“a“new“ob‘Ž8ject“constructed“from“the“v˜aluesŽ¡‘returned–UUb¸ãy“the“function.ަ‘¸ŽŽŽ‘Èo.object-foreach²:‘ãŽthe–8ãÈobject-foreach“²form“is“equiv‘ÿqÇalen¸ãt“to“Èobject-map²,Ž¡‘but–UUwith“altered“syn¸ãtax.ŽŸȵ‘(¿ùÈo.object-foreach(,‘?ý)Ž¡‘8ðŽ¡ŽŸK’Çÿÿ²183ŽŽŒ‹¸ ¿z s\È ý®£8‘Yï0pdf:dest (page.184) [@thispage /XYZ @xpos @ypos]²184‘{ãvÄCHAPTER–UU12.‘ÇTHE“ST‘ÿ*ªAND¸ãARD“OBJECTSŽŽ 8G ýÚŸ ‘r²F‘ÿ*ªor–UUexample,“the“folloš¸ãwing“function“prin˜ts“all“the“ elds“of“an“ob‘Ž8ject“Èo².Ž©#T’¿ùÈPrintObject(o)‘?ý=ޤ ’‘ðo.object-foreach(v,‘?ýx)Ž¡’¡?çprintln($(v)–?ý=“$(x))Ž¡Ÿ#S‘r²The–•Èexport›”²form“is˜v‘ÿqÇalid“in˜a“Èobject-foreach“²b•Go“dy‘ÿ*ª.‘WÜThe˜follo¸ãwing‘•func-Ž¡‘rtion–UUcollects“just“the“ eld“names“of“an“ob‘Ž8ject.ަ’¿ùÈFieldNames(o)‘?ý=Ž¡’‘ðnames[]‘?ý=Ž¡’‘ðo.object-foreach(v,‘?ýx)Ž¡’¡?çnames[]–?ý+=“$(v)Ž¡’¡?çexportŽ¡’‘ðreturn‘?ý$(names)Ž¡‘YŸBï9pdf:dest (subsection.12.1.2) [@thispage /XYZ @xpos @ypos]ŸÍ12.1.2Ž‘0MapŽŸнï/pdf:dest (obj:Map) [@thispage /XYZ @xpos @ypos]Ÿ ±½²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².Ž© ‘A‘ÈMap–K²ob‘Ž8ject›Jis“a“dictionary˜from“v‘ÿqÇalues˜to“v‘ÿqÇalues.‘´¨The“Ș²v‘ÿqÇalues“areŽ¡restricted–to‘simple“v‘ÿqÇalues:‘Din•¸ãtegers,‘O oating-pšGoin“t‘n“um“b˜ers,–Ostrings,“ les,“di-Ž¡rectories,–UUand“arra¸ãys“of“simple“v‘ÿqÇalues.ަ‘The–UUMap“ob‘Ž8ject“proš¸ãvides“the“follo˜wing“methoGds.ŽŸB‘¸ŽŽŽ‘È$(o.length)²:‘qÇthe›UUn•¸ãum“bGer˜of˜items˜in˜the˜map.ޤC‘¸ŽŽŽ‘È$(o.mem‘?ý)²:‘qÇreturns–UUÈtrue“²i “the“È“²is“de ned“in“the“map.Ž¡‘¸ŽŽŽ‘È$(o.add–?ý,“)²:‘“Îadds–æYthe“ eld“to›æXthe“map,‘ šreturning˜a“newŽ© ‘map.Ž¡‘¸ŽŽŽ‘È$(o.find‘?ý)²:‘qÇfetc¸ãhes–UUthe“ eld“from“the“map.Ž¡‘¸ŽŽŽ‘È$(o.keys)²:‘áñfetcš¸ãhes– jan“arra˜y“of“all“the“k˜eys“in“the“map,‘;oin“alphabGeticalަ‘order.ŽŸB‘¸ŽŽŽ‘È$(o.values)²:‘pUfetcš¸ãhes–Rqan“arra˜y“of“all“the‘Rrv‘ÿqÇalues“in“the“map,‘Sin“the“alpha-ަ‘bšGetical–UUorder“of“the“corresp˜onding“k¸ãeys.Ž¡‘¸ŽŽŽ‘È$(o.map‘?ý)²:‘‘Émaps–eVa‘eUfunction“o•¸ãv“er–eVthe“map.‘¡ÉThe“function“shouldަ‘tak•¸ãe›ët“w“o˜argumen“ts;‘X6the–ì rst˜is˜a˜ eld˜name,‘-the“second˜is˜the˜v‘ÿqÇalue˜ofަ‘that–¼Ù eld.‘>ôThe“result›¼Úis“a˜new“ob‘Ž8ject“constructed˜from“the˜v‘ÿqÇalues“returnedަ‘b¸ãy–UUthe“function.Ž¡‘¸ŽŽŽ‘Èo.foreach²:‘€äthe–\ãÈforeach›\ä²form“is˜equiv‘ÿqÇalen¸ãt“to˜Èmap²,‘^Çbut“with˜altered“syn-ަ‘tax.ŽŽŽŒ‹¹ Ç2 s\È ý®£8‘#ï0pdf:dest (page.185) [@thispage /XYZ @xpos @ypos]Ä12.1.‘ÇPER–þãV“ASIVES‘UUOBJECTS’¼¿ì²185ŽŽ 8G ýÚŸ ‘K¿ùÈo.foreach(,‘?ý)ޤ ‘[ðŽ¡¤mx‘<²F‘ÿ*ªor–UUexample,“the“folloš¸ãwing“function“prin˜ts“all“the“ elds“of“an“ob‘Ž8ject“Èo².Ž¡‘K¿ùÈPrintObject(o)‘?ý=ޤ ‘[ðo.foreach(v,‘?ýx)Ž¡‘k?çprintln($(v)–?ý=“$(x))Ž¡©mx‘<²The–Ù¶Èexport“²form›Ùµis“v‘ÿqÇalid“in“a˜Èforeach“²b•Go“dy‘ÿ*ª.‘þéThe–Ù¶follo¸ãwing“functionŽ¡‘<collects–UUjust“the“ eld“names“of“the“map.ަ‘K¿ùÈFieldNames(o)‘?ý=Ž¡‘[ðnames‘?ý=Ž¡‘[ðo.foreach(v,‘?ýx)Ž¡‘k?çnames–?ý+=“$(v)Ž¡‘k?çexportŽ¡‘[ðreturn‘?ý$(names)Ž¡¦‘2²There–oŒis“also“simpler“synš¸ãtax“when“the“k˜ey“is“a“string.‘ÀlThe“table“can“bGeŽ¡‘#de ned–š©using“de nitions“with“the“form“È$|key|‘š¨²(the“n•¸ãum“bšGer–š©of“pip˜e“sym¸ãb˜ols“È|Ž¡‘#²is›UUallo•¸ãw“ed˜to˜v‘ÿqÇary).Ž©ä‘7ÿôÈ$|key–?ý1|“=“value1Ž¡‘7ÿô$||key1|key2||–?ý=“value2‘ÿô#“The“key“is“key1|key2Ž¡‘7ÿôX–?ý=“$|key“1|‘N¿Ó#“Define“X“to“be“the“value“of“field“$|key“1|ަ‘2²The–]usual›]moGdi ers“are˜also“allo•¸ãw“ed.‘‰ The–]expression˜È$`|key|“²represen¸ãtsŽ¡‘#lazy–UUev›ÿqÇaluation“of“the“k¸ãey‘ÿ*ª,“and“È$,|key|“²is“normal“ev˜aluation.Ž‘#Ÿ³Ûï9pdf:dest (subsection.12.1.3) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ12.1.3Ž‘0Num b`erŽ©uTï2pdf:dest (obj:Number) [@thispage /XYZ @xpos @ypos]¡²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².Ž¡‘The–:ÒÈNumber›:Ó²ob‘Ž8ject“is˜the“paren¸ãt˜ob‘Ž8ject“for˜in¸ãtegers“and˜ oating-pGoinš¸ãt“n˜um-Ž¡bGers.ŽŸ zöï9pdf:dest (subsection.12.1.4) [@thispage /XYZ @xpos @ypos]ŸÍ12.1.4Ž‘0In tަï/pdf:dest (obj:Int) [@thispage /XYZ @xpos @ypos]¡²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈNumber².Ž¡‘The–UUÈInt“²ob‘Ž8ject“represenš¸ãts“in˜teger“v‘ÿqÇalues.ŽŸl¾ï9pdf:dest (subsection.12.1.5) [@thispage /XYZ @xpos @ypos]Ÿ 9Í12.1.5Ž‘0Floatަï1pdf:dest (obj:Float) [@thispage /XYZ @xpos @ypos]¡²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈNumber².Ž¡‘The–UUÈFloat“²ob‘Ž8ject“represenš¸ãts“ oating-pGoin˜t“n˜um˜bGers.ŽŽŽŒ‹º Ðu s\È ý®£8‘Yï0pdf:dest (page.186) [@thispage /XYZ @xpos @ypos]²186‘{ãvÄCHAPTER–UU12.‘ÇTHE“ST‘ÿ*ªAND¸ãARD“OBJECTSŽŽ 8G ýÚ‘Yï9pdf:dest (subsection.12.1.6) [@thispage /XYZ @xpos @ypos]Ÿ Í12.1.6Ž‘0SequenceŽŸʨï4pdf:dest (obj:Sequence) [@thispage /XYZ @xpos @ypos]Ÿ ª¬²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².ޤ ‘The–Ã)ÈSequence“²ob›Ž8ject“represen¸ãts“a‘Ã(generic“ob˜ject“conš¸ãtaining“sequen˜tial“ele-Ž¡men•¸ãts.‘qÇIt›UUpro“vides˜the˜follo“wing˜methoGds.ŽŸ‘¸ŽŽŽ‘È$(s.length)²:‘qÇthe›UUn•¸ãum“bGer˜of˜elemen“ts˜in˜the˜sequence.ŽŸo‘¸ŽŽŽ‘È$(s.map‘?ý)²:‘øZmaps–Ÿa›žfunction“o•¸ãv“er˜the–Ÿ elds˜in“the˜sequence.‘»¤TheŽ¡‘function–[ãshould“takš¸ãe“one“argumen˜t.‘…pThe“result“is“a“new“sequence“con-Ž¡‘structed–UUfrom“the“v‘ÿqÇalues“returned“b¸ãy“the“function.ŽŸp‘¸ŽŽŽ‘Ès.foreach²:‘€äthe–\ãÈforeach›\ä²form“is˜equiv‘ÿqÇalen¸ãt“to˜Èmap²,‘^Çbut“with˜altered“syn-Ž¡‘tax.Ž©N‘(¿ùÈs.foreach()Ž¡‘8ðŽ¡ŸO‘²F‘ÿ*ªor–‡:example,‘°sthe“folloš¸ãwing‘‡;function“prin˜ts“all“the“elemen˜ts‘‡;of“the“sequence.ަ‘(¿ùÈPrintSequence(s)‘?ý=Ž¡‘8ðs.foreach(x)Ž¡‘H?çprintln(Elem–?ý=“$(x))Ž¡ŸO‘²The–Ù¶Èexport“²form›Ùµis“v‘ÿqÇalid“in“a˜Èforeach“²b•Go“dy‘ÿ*ª.‘þéThe–Ù¶follo¸ãwing“functionŽ¡‘counš¸ãts–UUthe“n˜um˜bGer“of“zeros“in“the“sequence.ަ‘(¿ùÈZeros(s)‘?ý=Ž¡‘8ðcount–?ý=“$(int“0)Ž¡‘8ðs.foreach(v)Ž¡‘H?çif–?ý$(equal“$(v),“0)Ž¡‘WÿÞcount–?ý=“$(add“$(count),“1)Ž¡‘WÿÞexportŽ¡‘H?çexportŽ¡‘8ðreturn‘?ý$(count)Ž¡ŸO‘¸ŽŽŽ‘È$(s.forall‘?ý)²:‘ ‚tests–¡3whether“eac•¸ãh›¡2elemen“t–¡3of“the˜sequence“sati esŽ¡‘a‘UUpredicate.ŽŸo‘¸ŽŽŽ‘È$(s.exists‘?ý)²:‘Ãtests›ŸNwhether–ŸMthe“sequence˜con¸ãtains“an˜elemen¸ãt“thatŽ¡‘satis es–UUa“predicate.ŽŸp‘¸ŽŽŽ‘È$(s.sort‘?ý)²:‘5ßsorts–Ý…a›݆sequence.‘I×The“È“²is˜a“comparison“function.Ž¡‘It–¯ takš¸ães“t˜w˜o‘¯¡elemen˜ts“È(x,‘?ýy)“²of“the“sequence,›ÐÅcompares“them,˜and“returnsŽ¡‘a›änegativ•¸ãe‘än“um“bGer˜if‘äµx–´è<“y[Ù²,‘±a˜pšGositiv•¸ãe‘än“um“b˜er›äif‘äµx–´è>“y[Ù²,‘±and˜zero‘äif˜theŽ¡‘t•¸ãw“o›UUelemen“ts˜are˜equal.ŽŽŽŒ‹» س s\È ý®£8‘#ï0pdf:dest (page.187) [@thispage /XYZ @xpos @ypos]Ä12.1.‘ÇPER–þãV“ASIVES‘UUOBJECTS’¼¿ì²187ŽŽ 8G ýÚŸ ‘FüÈosh>–?ýitems“=“$(int“0“3“-2)ޤ ‘Füosh>–?ýitems.forall(x“=>“$(gt“$x,“0))Ž¡‘Fü-–?ý:“bool“=“falseŽ¡‘Füosh>–?ýitems.exists(x“=>“$(gt“$x,“0))Ž¡‘Fü-–?ý:“bool“=“trueŽ¡‘Füosh>‘?ýitems.sort($(compare))Ž¡‘Fü-–?ý:“Array“=“-2“3“0Ž¡‘#Ÿ=1ï9pdf:dest (subsection.12.1.7) [@thispage /XYZ @xpos @ypos]ŸLÍ12.1.7Ž‘0Arra yŽ©×Ôï1pdf:dest (obj:Array) [@thispage /XYZ @xpos @ypos]Ÿ ¹ø²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈSequence².ŽŸ L‘The–ìòÈArray›ìñ²is“a˜random-access“sequence.‘NüIt˜pro¸ãvides“the˜follo¸ãwing“additionalŽ¡methoGds.ŽŸ=1‘¸ŽŽŽ‘È$(s.nth‘?ý)²:‘qÇreturns–UUelemen¸ãt“Èi“²of“the“sequence.ŽŸ=1‘¸ŽŽŽ‘È$(s.rev‘?ý)²:‘qÇreturns–UUthe“rev¸ãersed“sequence.ŽŸ1Úï9pdf:dest (subsection.12.1.8) [@thispage /XYZ @xpos @ypos]Ÿ …Í12.1.8Ž‘0Stringަï2pdf:dest (obj:String) [@thispage /XYZ @xpos @ypos]Ÿ ¹ø²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈArray².ŽŸx÷ï9pdf:dest (subsection.12.1.9) [@thispage /XYZ @xpos @ypos]Ÿ ÖiÍ12.1.9Ž‘0F‘þàunŽ©‚€ï/pdf:dest (obj:Fun) [@thispage /XYZ @xpos @ypos]¤ L²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².Ž¡‘The–UUÈFun“²ob‘Ž8ject“proš¸ãvides“the“follo˜wing“methoGds.ŽŸ-ä‘¸ŽŽŽ‘È$(f.arity)²:‘qÇthe–UUarit¸ãy“if“the“function.ŽŸxøï:pdf:dest (subsection.12.1.10) [@thispage /XYZ @xpos @ypos]Ÿ ÖhÍ12.1.10Ž‘6ÀRuleަï0pdf:dest (obj:Rule) [@thispage /XYZ @xpos @ypos]¡²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².Ž¡‘The–‘ÆÈRule›‘Ųob‘Ž8ject“represen¸ãts“a˜build“rule.‘'It˜doGes“not“curren•¸ãtly˜ha“v“e‘‘Æan“yŽ© methoGds.ŽŸ@ï:pdf:dest (subsection.12.1.11) [@thispage /XYZ @xpos @ypos]ŸMÍ12.1.11Ž‘6ÀT‘þàargetŽŸ×Ôï2pdf:dest (obj:Target) [@thispage /XYZ @xpos @ypos]Ÿ ¹ø²P•¸ãaren“t‘UUob‘Ž8ject:‘qÇÈObject².Ž¡‘The–UUÈTarget“²ob‘Ž8ject“con¸ãtains“information“collected“for“a“spGeci c“target“ le.ŽŸ=1‘¸ŽŽŽ‘Ètarget²:‘qÇthe–UUtarget“ le.ŽŸ=0‘¸ŽŽŽ‘Èeffects²:‘‡§the›`D les–`Ethat“ma¸ãy“b•Ge˜mo“di ed–`Eb¸ãy“a“side-e ect˜when“this“targetަ‘is‘UUbuilt.ŽŸ=1‘¸ŽŽŽ‘Èscanner_deps²:‘ô static––ÂdepšGendencies‘–Áthat“m¸ãust“b˜e‘–Ábuilt“b˜efore‘–Áthis“targetަ‘can–UUbGe“scanned.ŽŽŽŒ‹¼ ጠs\È ý®£8‘Yï0pdf:dest (page.188) [@thispage /XYZ @xpos @ypos]²188‘{ãvÄCHAPTER–UU12.‘ÇTHE“ST‘ÿ*ªAND¸ãARD“OBJECTSŽŽ 8G ýÚŸ ‘h¸ŽŽŽ‘rÈstatic-deps²:‘qÇstatically-de ned–UUbuild“depGendencies“of“this“target.ޤ¦,‘h¸ŽŽŽ‘rÈbuild-deps²:‘¢Wall–mthe“build“depGendencies“for“the‘mœtarget,‘³¯including“staticŽ© ‘rand–UUscanned“depGendencies.Ž¡‘h¸ŽŽŽ‘rÈbuild-values²:‘qÇall–UUthe“v‘ÿqÇalue“depšGendencies“asso˜ciated“with“the“build.ŽŸ¦+‘h¸ŽŽŽ‘rÈbuild-commands²:‘qÇthe–UUcommands“to“build“the“target.Ž¡‘h¸ŽŽŽ‘rÈoutput-file²:‘%£if–½output“wš¸ãas“div˜erted“to›½ a“ le,‘Ûƒwith“one˜of“the“È--output-*ަ‘r²options–UUïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (appendix.A) >> >> Aïpdf:eann,“this“ eld“names“that“ le.‘qÇOtherwise“it“is“Èfalse².ޤ¦,‘hThe–UUob‘Ž8ject“suppšGorts“the“follo¸ãwing“metho˜ds.Ž¡‘h¸ŽŽŽ‘rÈfind(file)²:‘ãŽreturns–8ãa“T‘ÿ*ªarget“ob‘Ž8ject“for“the“giv¸ãen“ le.‘÷Raises“a“ÈRuntimeExceptionަ‘r²if–UUthe“spGeci ed“target“is“not“part“of“the“pro‘Ž8ject.ŽŸ¦,‘h¸ŽŽŽ‘rÈfind-optional(file)²:‘returns–%|a“ÈTarget‘%{²ob‘Ž8ject“for“the“giv¸ãen“ le,‘™…orަ‘rÈfalse–UU²if“the“ le“is“not“part“of“the“pro‘Ž8ject.Ž¡‘hNOTE:–¯the“information“for“a“target“is“constructed“dynamically‘ÿ*ª,‘*jso“it“is“pGos-ަ‘Ysible–D_that›D^the“ÈTarget˜²ob‘Ž8ject“for“a˜noGde“will“con•¸ãtain˜di eren“t–D_v‘ÿqÇalues˜in“di eren¸ãtަ‘Ycon•¸ãtexts.‘:%The‘®leasiest›®mw“a“y˜to‘®lmak“e˜sure˜that–®lthe˜ÈTarget˜²information“is˜completeަ‘Yis– Ýto“compute“it“within“a“rule“b•Go“dy‘ÿ*ª,‘³Àwhere– Ýthe“rule“depGends“on“the“target“ le,ަ‘Yor–UUthe“depGendencies“of“the“target“ le.Ž‘YŸ¢Úï:pdf:dest (subsection.12.1.12) [@thispage /XYZ @xpos @ypos]Ÿ 7ÄÍ12.1.12Ž‘6ÀNo`deŽŸ™ï0pdf:dest (obj:Node) [@thispage /XYZ @xpos @ypos]¤ )‹²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².Ž¡‘The–ÂÈNode›Á²ob‘Ž8ject“is˜the“paren¸ãt˜ob‘Ž8ject“for“ les˜and“directories.‘¤ It“suppGortsަthe–UUfollo¸ãwing“opGerations.ŽŸ|¡‘¸ŽŽŽ‘È$(node.stat)²:‘páreturns–SŠa›S‰Èstat“²ob‘Ž8ject˜for˜the“ le.‘q.If˜the“ le˜is“a˜sym¸ãbGolicަ‘link,‘ʆthe–³Èstat›³²information“is˜for˜the“destination˜of˜the“link,‘ʆnot“the˜linkަ‘itself.ޤ¦,‘¸ŽŽŽ‘È$(node.lstat)²:‘qÇreturns–UUa“Èstat“²ob‘Ž8ject“for“the“ le“or“sym¸ãbGolic“link.Ž¡‘¸ŽŽŽ‘È$(node.unlink)²:‘qÇremo•¸ãv“es–UUthe“ le.Ž¡‘¸ŽŽŽ‘È$(node.rename‘?ý)²:‘qÇrenames–UUthe“ le.Ž¡‘¸ŽŽŽ‘È$(node.link‘?ý)²:‘qÇcreates–UUa“hard“link“È“²to“this“ le.ŽŸ¦+‘¸ŽŽŽ‘È$(node.symlink‘?ý)²:‘qÇcreate–UUa“sym¸ãbGolic“link“È“²to“this“ le.Ž¡‘¸ŽŽŽ‘È$(node.chmod‘?ý)²:‘qÇc¸ãhange–UUthe“pGermission“of“this“ le.Ž¡‘¸ŽŽŽ‘È$(node.chown–?ý,“)²:‘žcš¸ãhange–k{the“o˜wner‘kzand“group“id“of“thisަ‘ le.ŽŽŽŒ‹½ 긠s\È ý®£8‘#ï0pdf:dest (page.189) [@thispage /XYZ @xpos @ypos]Ä12.1.‘ÇPER–þãV“ASIVES‘UUOBJECTS’¼¿ì²189ŽŽ 8G ýÚ‘#ï:pdf:dest (subsection.12.1.13) [@thispage /XYZ @xpos @ypos]Ÿ Í12.1.13Ž‘6ÀFileޤšï0pdf:dest (obj:File) [@thispage /XYZ @xpos @ypos]© *š²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈNode².ŽŸ *™‘The–UU le“ob‘Ž8ject“represen¸ãts“the“name“of“a“ le.ŽŸ§hï:pdf:dest (subsection.12.1.14) [@thispage /XYZ @xpos @ypos]Ÿ 8ÓÍ12.1.14Ž‘6ÀDirŽ¡ï/pdf:dest (obj:Dir) [@thispage /XYZ @xpos @ypos]¦²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈNode².ŽŸ *™‘The–UUÈDir“²ob‘Ž8ject“represen¸ãts“the“name“of“a“directory‘ÿ*ª.ŽŸ§iï:pdf:dest (subsection.12.1.15) [@thispage /XYZ @xpos @ypos]Ÿ 8ÒÍ12.1.15Ž‘6ÀChannelŽ¡ï3pdf:dest (obj:Channel) [@thispage /XYZ @xpos @ypos]¦²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².ަ‘A–UUÈChannel“²is“a“generic“IO“cš¸ãhannel.‘qÇIt“pro˜vides“the“follo˜wing“methoGds.ޤÍ‘¸ŽŽŽ‘È$(o.close)²:‘qÇclose–UUthe“c¸ãhannel.ŽŸªg‘¸ŽŽŽ‘È$(o.name)²:‘qÇreturns–UUthe“ le“name“assoGciated“with“the“c¸ãhannel.ŽŸŠöï:pdf:dest (subsection.12.1.16) [@thispage /XYZ @xpos @ypos]Ÿ UEÍ12.1.16Ž‘6ÀInChannelŽŸšï5pdf:dest (obj:InChannel) [@thispage /XYZ @xpos @ypos]¦²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈChannel².ަ‘A‘ •ÈInChannel– £²is› ¢an“input˜c¸ãhannel.‘`7The˜v‘ÿqÇariable“Èstdin˜²is“the˜standard“inputŽŸ c¸ãhannel.ަ‘It–UUproš¸ãvides“the“follo˜wing“methoGds.Ž¡‘¸ŽŽŽ‘È$(InChannel.fopen‘?ý)²:‘qÇopGen–UUa“new“input“c¸ãhannel.ޤªg‘¸ŽŽŽ‘È$(InChannel.of-string‘?ý)²:‘q)²:‘ô÷reads–íthe“giv•¸ãen‘ìn“um“bGer–íof“c¸ãharacters“from“theަ‘c¸ãhannelŽ¡‘¸ŽŽŽ‘È$(o.readln)²:‘qÇreads–UUa“line“from“the“c¸ãhannelŽŸŠöï:pdf:dest (subsection.12.1.17) [@thispage /XYZ @xpos @ypos]Ÿ UEÍ12.1.17Ž‘6ÀOutChannelŽŸšï6pdf:dest (obj:OutChannel) [@thispage /XYZ @xpos @ypos]Ÿ *™²P•¸ãaren“t‘UUob‘Ž8ject:‘qÇÈChannel².ޤ *š‘A‘yjÈOutChannel–ys²is›ytan“output“c¸ãhannel.‘Þ"The˜v‘ÿqÇariables“Èstdout“²and˜Èstderr“²areަthe–UUstandard“output“and“error“c¸ãhannels.Ž¡‘It–UUproš¸ãvides“the“follo˜wing“methoGds.ŽŸÍ‘¸ŽŽŽ‘È$(OutChannel.fopen‘?ý)²:‘qÇopGen–UUa“new“output“c¸ãhannel.ޤªg‘¸ŽŽŽ‘È$(OutChannel.string)²:‘popGen–Qìa›Qënew“output˜c¸ãhannel,‘Ršwriting“to˜a“string.Ž¡‘¸ŽŽŽ‘È$(OutChannel.to-string)²:‘¥&get–othe›ocurren¸ãt“string“of˜output,‘uqfor˜an“out-ަ‘put–UUc¸ãhannel“created“as“ÈOutChannel.open-string².ŽŽŽŒ‹¾ ö‹ s\È ý®£8‘Yï0pdf:dest (page.190) [@thispage /XYZ @xpos @ypos]²190‘{ãvÄCHAPTER–UU12.‘ÇTHE“ST‘ÿ*ªAND¸ãARD“OBJECTSŽŽ 8G ýÚŸ ‘h¸ŽŽŽ‘rÈ$(OutChannel.append‘?ý)²:‘$¦opšGens–»a“new‘»output“c¸ãhannel,‘Ùíapp˜endingŽ© ‘rto–UUthe“ le.ޤZ‘h¸ŽŽŽ‘rÈ$(c.flush)²:‘qÇ ush–UUthe“output“c¸ãhannel.Ž¡‘h¸ŽŽŽ‘rÈ$(c.print‘?ý)²:‘qÇprinš¸ãt–UUa“string“to“the“c˜hannel.Ž¡‘h¸ŽŽŽ‘rÈ$(c.println‘?ý)²:‘;prinš¸ãt–èa‘èstring“to“the“c˜hannel,‘ýßfollo˜w˜ed‘èb˜y“a“lineަ‘rterminator.Ž‘YŸb„ï:pdf:dest (subsection.12.1.18) [@thispage /XYZ @xpos @ypos]Ÿ@—Í12.1.18Ž‘6ÀLo`cationŽŸ‰bï4pdf:dest (obj:Location) [@thispage /XYZ @xpos @ypos]Ÿ @–²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈLocation².ޤ @—‘The–UUÈLocation“²ob‘Ž8ject“represen¸ãts“a“loGcation“in“a“ le.ŽŸTKï:pdf:dest (subsection.12.1.19) [@thispage /XYZ @xpos @ypos]Ÿ NÏÍ12.1.19Ž‘6ÀExceptionŽŸ Þ¶ï5pdf:dest (obj:Exception) [@thispage /XYZ @xpos @ypos]Ÿ ëB²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².Ž¡‘The–Å7ÈException“²ob›Ž8ject“is‘Å6used“as“the“base“ob˜ject“for“exceptions.‘ÁlIt“has“noަ elds.ŽŸb„ï:pdf:dest (subsection.12.1.20) [@thispage /XYZ @xpos @ypos]Ÿ@—Í12.1.20Ž‘6ÀRun timeExceptionŽŸ Þµï> >> Ètarget-existsïpdf:eann².‘ÐsThisަexception–UUhas“the“follo¸ãwing“ elds:ŽŸZ‘¸ŽŽŽ‘Ètarget²:‘qÇindicates–UUwhic¸ãh“target“is“not“buildable.ŽŸZ‘¸ŽŽŽ‘Èmessage²:‘qÇa–UUstring“con¸ãtaining“the“exception“message.ŽŽŽŒ‹¿   s\È ý®£8‘#ï0pdf:dest (page.191) [@thispage /XYZ @xpos @ypos]Ä12.1.‘ÇPER–þãV“ASIVES‘UUOBJECTS’¼¿ì²191ŽŽ 8G ýÚ‘#ï:pdf:dest (subsection.12.1.22) [@thispage /XYZ @xpos @ypos]Ÿ Í12.1.22Ž‘6ÀShellŽŸƒÓï1pdf:dest (obj:Shell) [@thispage /XYZ @xpos @ypos]¤ Õ²P•¸ãaren“t‘UUob‘Ž8jects:‘qÇÈObject².ŽŸ Ö‘The–†dÈShell“²ob‘Ž8ject“conš¸ãtains“the‘†ecollection“of“builtin“functions“a˜v‘ÿqÇailable“asŽ© shell‘UUcommands.Ž¡‘Y‘ÿ*ªou–Æ-can“de ne“aliases›Æ.b¸ãy“extending“this“ob‘Ž8ject“with“additional˜methoGds.‘BAllަmethoGds–ìKin›ìLthis“class˜are“called˜with“one˜argumen¸ãt:‘Ÿ´a“single˜arraš¸ãy“con˜tainingަan–UUargumen¸ãt“list.ŽŸCU‘¸ŽŽŽ‘ÈechoŽ©!«‘²The–UUÈecho“²function“prinš¸ãts“its“argumen˜ts“to“the“standard“output“c˜hannel.ޤCV‘¸ŽŽŽ‘ÈjobsŽŸ!ª‘²The–UUÈjobs“²methoGd“prinš¸ãts“the“status“of“curren˜tly“running“commands.Ž¡‘¸ŽŽŽ‘Ècdަ‘²The–ÇÈcd“²function“cš¸ãhanges“the“curren˜t“directory‘ÿ*ª.‘ÇNote“that“the“curren˜tޤ ‘directory–bfolloš¸ãws“the“usual“scoping‘brules.‘˜ F‘ÿ*ªor“example,‘eHthe“follo˜wing“pro-Ž¡‘gram–Õlists›Õthe“ les˜in“the“Èfoo˜²directory‘ÿ*ª,‘ôýbut“the˜curren¸ãt“directory˜is“notŽ¡‘c¸ãhanged.Ž©T+‘(¿ùÈsectionŽ¡‘8ðecho–?ýListing“files“in“the“foo“directory...Ž¡‘8ðcd‘?ýfooŽ¡‘8ðlsŽ¡¡‘(¿ùecho–?ýListing“files“in“the“current“directory...Ž¡‘(¿ùlsަ‘¸ŽŽŽ‘ÈbgŽŸ!ª‘²The–¢¨Èbg›¢©²methoGd“places˜a“job˜in“the˜bac¸ãkground.‘YÁThe“job˜is“resumed˜if“itŽ¡‘has–UUbšGeen“susp˜ended.ŽŸCV‘¸ŽŽŽ‘ÈfgŽ©!«‘²The–ÉÅÈfg“²methoGd›ÉÄbrings“a“job“to“the˜foreground.‘ÏThe“job“is˜resumed“if“itŽ¡‘has–UUbšGeen“susp˜ended.ޤCU‘¸ŽŽŽ‘Èstopަ‘²The–UUÈstop“²methošGd“susp˜ends“a“running“job.Ž¡‘¸ŽŽŽ‘Èwaitަ‘²The–#)Èwait›#*²function“w¸ãaits“for˜a“running“job˜to“terminate.‘aIt“is˜not“pGossibleޤ ‘to–UUw¸ãait“for“a“suspGended“job.ަ‘The– job“is“not“brough¸ãt›Ÿto“the“foreground.‘ö¨If“the“Èwait“²is˜in¸ãterrupted,‘Œ³theŽ¡‘job›UUcon•¸ãtin“ues˜to˜run˜in˜the˜bac“kground.ŽŽŽŒ‹À Ù s\È ý®£8‘Yï0pdf:dest (page.192) [@thispage /XYZ @xpos @ypos]²192‘{ãvÄCHAPTER–UU12.‘ÇTHE“ST‘ÿ*ªAND¸ãARD“OBJECTSŽŽ 8G ýÚŸ ‘h¸ŽŽŽ‘rÈkillޤCF‘r²The–UUÈkill“²function“signal“a“job.Ž¡‘rÈkill–?ý[signal]“².Ž¡‘rThe–¡ósignals›¡òare“either˜nš¸ãumeric,‘õor“sym˜bGolic.‘WŸThe“sym˜bGolic‘¡òsignals“areŽ© ‘rnamed–UUas“follo¸ãws.Ž¡‘rABR–ÿ*ªT,›"öALRM,‘"÷HUP“,˜ILL,–"÷KILL,˜QUIT,“SEGV,˜TERM,˜USR1,‘V_USR2,ަ‘rCHLD,–UUSTOP›ÿ*ª,“TSTP˜,“TTIN,“TTOU,“VT˜ALRM,“PR¸ãOF.Ž©†Œ‘h¸ŽŽŽ‘rÈexitŽ¡‘r²The–UUÈexit“²function“terminates“the“curren¸ãt“session.ަ‘h¸ŽŽŽ‘rÈwhich²,‘UUÈwhereŽ¡‘r²See–UUthe“došGcumen¸ãtation“for“the“corresp˜onding“functions.ަ‘h¸ŽŽŽ‘rÈrehashŽ¡‘r²Reset–UUthe“searc¸ãh“path.ަ‘h¸ŽŽŽ‘rÈln-or-cp‘UUÎsr‘ÿ}'c‘“ç²dstŽŸCE‘rLinks–[Žor›[copies“Îsr‘ÿ}'c–™¡to“²dst,‘]o•¸ãv“erwriting˜Îdst.‘ªÄNamely,‘›Èln-or-cp–™¡Îwould“ rstޤ ‘rdelete–Çãthe“²dst–Ö le“(unless“it“is“a‘×directory),‘›öif“it“exists.‘KNext“it“w¸ãould“tryŽ¡‘rto–jcreate›ja“sym¸ãbGolic˜link“Îdst–§p‘ÿ}'oiting“to“²src˜(it–jwill˜mak¸ãe“all˜the“necessaryŽ¡‘radjustmnenš¸ãts–jof“relativ˜e–jpaths).‘°If“sym˜bšGolic–jlink“can“not‘jb˜e“created“(Îe.g.Ž¡‘r²the–ãŽOS‘ãior›ãthe“ lesystem˜doGes“not˜suppšGort“sym¸ãb˜olic“links),‘it“will‘ãtry“toŽ¡‘rcreate–UUa“hard“link.‘qÇIf“that“fails“toGo,“it“will“try“to“forcibly“cop¸ãy“Îsr‘ÿ}'c–“çto“²dst.ަ‘h¸ŽŽŽ‘rÈhistoryޤCF‘r²Prinš¸ãt–UUthe“curren˜t“command-line“history‘ÿ*ª.ަ‘h¸ŽŽŽ‘rÈdigestŽ¡‘r²Prinš¸ãt–UUthe“digests“of“the“giv˜en“ les.ަ‘h¸ŽŽŽ‘r²Win32‘UUfunctions.Ž¡‘rWin32–É-doGesn't‘É,proš¸ãvide“v˜ery“man˜y“programs›É,for“scripting,‘æ#except˜for“theޤ ‘rfunctions–Õîthat“are“builtin“to“the“DOS‘ÕÍÈcmd.exe².‘ó’The“follo¸ãwing“functionsŽ¡‘rare–“éde ned›“êon“Win32“and˜only“on˜Win32.‘1NOn“other˜systems,‘º˜it˜is“expGectedŽ¡‘rthat–UUthese“programs“already“exist.ŽŸ(/‘}@Ç{ŽŽŽ’ˆÈgrepަ’—¿ùgrep–?ý[-q]“[-n]“pattern“files...ަ’ˆ²The–UUÈgrep“²function“calls“the“Èomake“grep“²function.ŽŽŽŒ‹Á L s\È ý®£8‘#ï0pdf:dest (page.193) [@thispage /XYZ @xpos @ypos]Ä12.1.‘ÇPER–þãV“ASIVES‘UUOBJECTS’¼¿ì²193ŽŽ 8G ýÚŸ ‘2¸ŽŽŽ‘<²In•¸ãternal›UUv“ersions˜of˜standard˜system˜commands.Ž©‘<By–ÀÉdefault,‘Û¥Èomake‘ÀȲuses“inš¸ãternal“v˜ersions›ÀÈof“the˜follo¸ãwing“commands:‘H®Ècp²,ޤ ‘<Èmv²,– TÈcat²,“Èrm²,“Èmkdir²,“Èchmod²,“Ètest²,“Èfind².‘R‡If–÷”yš¸ãou“really‘÷“w˜an˜t“to“use‘÷“the“stan-Ž¡‘<dard–Çýsystem“v¸ãersions‘Çüof“these“commands,‘ä¦set“the“ÈUSE_SYSTEM_COMMANDSŽ¡‘<²as–UUone“of“the“ rst“de nitions“in“y¸ãour“ÈOMakeroot“² le.ŽŸ‘G@Ç{ŽŽŽ‘RÈpwdޤ‘fÿöpwdŽ¡‘R²The–UUÈpwd“²alias“wš¸ãould“prin˜t“the“absolute“path“to“curren˜t“directory‘ÿ*ª.ަ‘G@Ç{ŽŽŽ‘RÈmkdirŽ¡‘fÿömkdir–?ý[-m“]“[-p]“filesŽ¡‘R²The–fÈÈmkdir›fɲfunction“is“used˜to“create˜directories.‘¦!The“-v¸ãerb+-m+ޤ ‘Roption–vðcan›vïbGe“used˜to“spGecify˜the“p•Germission˜mo“de–vðof˜the“createdŽ¡‘Rdirectory‘ÿ*ª.‘qÇIf–UUthe“È-p“²option“is“spGeci ed,“the“full“path“is“created.ަ‘G@Ç{ŽŽŽ‘RÈcpަ‘G@Ç{ŽŽŽ‘RÈmvŽ©‘fÿöcp–?ý[-f]“[-i]“[-v]“src“dstŽ¡‘fÿöcp–?ý[-f]“[-i]“[-v]“files“dstŽ¡‘fÿömv–?ý[-f]“[-i]“[-v]“src“dstŽ¡‘fÿömv–?ý[-f]“[-i]“[-v]“files“dstަ‘R²The–YÓÈcp›YÒ²function“copies“a˜Èsrc“² le˜to“a“Èdst˜² le,‘šòo•¸ãv“erwriting–YÓit˜if“itŽ¡‘Ralready–½exists.‘ñIf“more›¾than“one˜source“ le˜is“spGeci ed,‘ŠXthe˜ nal“ leŽ¡‘Rm¸ãust–¼@bGe›¼Aa“directory‘ÿ*ª,‘Úßand“the“source˜ les“are˜copied“in¸ãto˜the“directory‘ÿ*ª.Ž©‘RÇ-fŽŽ‘^Xã²Cop¸ãy–UU les“forcibly‘ÿ*ª,“do“not“prompt.ޤ‘RÇ-iŽŽ‘^²Prompt–UUbGefore“remo¸ãving“destination“ les.Ž¡‘RÇ-vŽŽ‘`ç²Explain–UUwhat“is“happGening.ަ‘G@Ç{ŽŽŽ‘RÈrmޤ‘a¿ùrm–?ý[-f]“[-i]“[-v]“[-r]“filesŽ© ‘a¿ùrmdir–?ý[-f]“[-i]“[-v]“[-r]“dirsŽ¡‘R²The–RqÈrm“²function“remo•¸ãv“es›Rra–Rqset“of“ les.‘pÐNo“w¸ãarnings˜are“issued“if“theަ‘R les–UUdo“not“exist,“or“if“they“cannot“bGe“remo•¸ãv“ed.ޤ‘ROptions:Ž©‘RÇ-fŽŽ‘^Xã²F‘ÿ*ªorcibly›UUremo•¸ãv“e˜ les,˜do˜not˜prompt.Ž¡‘RÇ-iŽŽ‘^²Prompt–UUbGefore“remo¸ãv‘ÿqÇal.Ž¡‘RÇ-vŽŽ‘`ç²Explain–UUwhat“is“happGening.Ž¡‘RÇ-rŽŽ‘_‘DzRemo•¸ãv“e›UUcon“ten“ts˜of˜directories˜recursiv“ely‘ÿ*ª.ަ‘G@Ç{ŽŽŽ‘RÈchmodŽŽŽŒ‹Â á s\È ý®£8‘Yï0pdf:dest (page.194) [@thispage /XYZ @xpos @ypos]²194‘{ãvÄCHAPTER–UU12.‘ÇTHE“ST‘ÿ*ªAND¸ãARD“OBJECTSŽŽ 8G ýÚŸ ’œÿöÈchmod–?ý[-r]“[-v]“[-f]“mode“filesŽŸ’ˆ²The–ô¼Èchmod›ô½²function“c¸ãhanges“the“pGermissions˜on“a“set“of˜ les“or“di-ޤ ’ˆrectories.› sThis–Ûäfunction“doGes“nothing‘Ûãon“Win32.˜The“Èmode“²ma¸ãyŽ¡’ˆb•Ge›?Ósp“eci ed˜as‘?Òan˜o“ctal˜n•¸ãum“bGer,‘ºror˜in‘?Òsym“bGolic˜form˜È[ugoa]*[²-Ž¡’ˆ=][rwxXstugo]+.‘qÇSee–UUthe“man“page“for“Èchmod“²for“details.ޤ’ˆOptions:Ž©’ˆÇ-rŽŽ’•‘DzChange–UUpGermissions“of“all“ les“in“a“directory“recursiv¸ãely‘ÿ*ª.Ž¡’ˆÇ-vŽŽ’–ç²Explain–UUwhat“is“happGening.Ž¡’ˆÇ-fŽŽ’”Xã²Con•¸ãtin“ue–UUon“errors.ަ‘}@Ç{ŽŽŽ’ˆÈcatޤ’—¿ùcat‘?ýfiles...Ž¡’ˆ²The–UUÈcat“²function“prinš¸ãts“the“con˜ten˜ts“of“the“ les“to“stdoutަ‘}@Ç{ŽŽŽ’ˆÈtestŽ©’ˆtest‘UUÎexpr‘ÿ}'essionޤ ’ˆÈ[‘UUÎexpr‘ÿ}'ession‘¸²+]+Ž¡’ˆÈ[‘?ý--helpŽ¡’ˆ[‘?ý--versionŽ¡¦’ˆ²See–UUthe“doGcumen¸ãtation“for“the“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:test) >> >> Ètest“²functionïpdf:eann.ŽŸ‘}@Ç{ŽŽŽ’ˆÈfindަ’ˆfind‘UUÎexpr‘ÿ}'essionަ’ˆ²See–UUthe“doGcumen¸ãtation“for“the“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:find) >> >> Èfind“²functionïpdf:eann.ŽŽŽŒ‹Ã $í s\È ý®£8‘#ï0pdf:dest (page.195) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (chapter.13) [@thispage /XYZ @xpos @ypos]ŸU†ÊChapter‘Ç 13ŽŸ2†ÆBuild– T{functions“and“utilitiesŽŸ(ï4pdf:dest (section.13.1) [@thispage /XYZ @xpos @ypos]Ÿ…Ì13.1Ž‘,ÿüBuiltin–ff.PHONY“targetsŽŸñc²The–UUcomplete“set“of“builtin“È.PHONY“²targets“include“the“follo¸ãwing.ŽŸÇ.PHONYŽŽ‘3c~²Declares–UUnew“phon¸ãy“targets“(Section“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.10) >> >> 8.10ïpdf:eann).ޤÇ.DEF‘þ¸äA®9UL‘ÿ «TŽŽ‘=µ@²Declare–UUthe“default“build“targets“(Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.7) >> >> 8.7ïpdf:eann).Ž©Ç.SUBDIRSŽŽ‘;Î%²Include–UUa“directory“as“part“of“the“pro‘Ž8ject“(Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.8) >> >> 8.8ïpdf:eann).Ž¡Ç.SCANNERŽŽ‘AÃy²De ne–UUa“depGendency“scanner“(Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.8) >> >> 8.8ïpdf:eann).Ž¡Ç.INCLUDEŽŽ‘=ÿë²Include–UUa“ le“(Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.8.9) >> >> 8.9ïpdf:eann).ަÇ.ORDERŽŽ‘2uE²De ne–UUa“ le-depGendency“ordering“rule“(Section“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.10.3.6) >> >> 10.3.6ïpdf:eann).Ž¡Ç.BUILD‘°¡‰ffs4Ž‘#ÕBEGINŽŽ‘W™ ²Commands–UUto“bšGe“executed“at“the“b˜eginning“of“a“build.Ž¡Ç.BUILD‘°¡‰ffs4Ž‘#ÕSUCCESSŽŽ‘e£³²Commands–UUto“bGe“executed“if“the“build“is“successful.ަÇ.BUILD‘°¡‰ffs4Ž‘#ÕF‘þ¸äAILUREŽŽ‘djϲCommands–UUto“bGe“executed“if“the“build“fails.ŽŸ‘The–ŸnÈ.BUILD‘Ÿ²targets“can“bšGe“used“to‘Ÿosp˜ecify“commands“to“b˜e“executed“atޤ the–ñPbGeginning›ñQand“end“of“the˜build.‘E¹The“È.BUILD_BEGIN‘ñ(²target“is“built˜at“theŽ¡bGeginning–Öhof›Öia“pro‘Ž8ject˜build,‘ö­and“one˜of“È.BUILD_FAILURE‘ÖH²or“È.BUILD_SUCCESSŽ¡²is–UUexecuted“when“the“build“terminates.ŽŸ †‘F‘ÿ*ªor–õ”example,‘]£the“folloš¸ãwing“set“of‘õ“rules“simply“prin˜t“additional“messagesŽ¡abGout–UUthe“status“of“the“build.ŽŸ‘¿÷È.BUILD_BEGIN:Ž¡‘$¿ëecho–?ýBuild“startingŽ¡¡‘¿÷.BUILD_SUCCESS:Ž¡‘$¿ëecho–?ýThe“build“was“successfulŽŽŸK’Çÿÿ²195ŽŽŒ‹Ä *± s\È ý®£8‘Yï0pdf:dest (page.196) [@thispage /XYZ @xpos @ypos]²196‘O*ŒÄCHAPTER–UU13.‘ÇBUILD“FUNCTIONS“AND“UTILITIESŽŽ 8G ýÚŸ ¤ ‘h¿÷È.BUILD_FAILURE:Ž¡‘}¿ëprintln($"The–?ýbuild“failed:“$(length“$(find-build-targets“Failed))“targets“could“not“be“built")Ž©´‘h²Another–kòcommon“use“is“to“de ne‘kñnoti cations“to“bšGe“p˜erformed“when“theŽ¡‘Ybuild–³¥completes.‘Œ·F‘ÿ*ªor›³¤example,‘Ë9the“follo¸ãwing“rule“will“create“a“new˜X‘³terminalŽ¡‘Ydispla¸ãying–UUthe“summary“of“the“build“(using“the“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:BUILD_SUMMARY) >> >> ÈBUILD‘¡E‰ff&fŽ‘Ç«SUMMARY“²v‘ÿqÇariableïpdf:eann).ŽŸ´‘mÿôÈ.BUILD_FAILURE:Ž¡’‚ÿèxterm–?ý-e“vi“$(BUILD_SUMMARY)ަ‘h²If–Ì.y¸ãou“do“not›Ì/wish“to“add“these“rules“directly“to˜yš¸ãour“pro‘Ž8ject“(whic˜h“isŽ¡‘Yprobably›UÒa‘UÑgo•Go“d˜idea˜if˜y•¸ãou‘UÑw“ork˜with˜others),‘•ðy“ou˜can˜de ne˜them‘UÑin˜y“ourŽ¡‘YÈ.omakerc–UU²(see“Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.A.8) >> >> A.8ïpdf:eann).Ž¡‘hThe–ßžïtpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:find-build-targets) >> >> Èfind-build-targets›ß²functionïpdf:eann“is˜useful“for˜obtaining“a˜ rther“sum-Ž¡‘Ymary–Rof“the›Rbuild.‘gËNote“that˜when“output“div¸ãersions“are“in˜e ect“(with“theŽ¡‘YÈ--output-*–ï0²options›ï1|“see“Chapter“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (appendix.A) >> >> Aïpdf:eann),˜anš¸ãy“output“proGduced“b˜y‘ï1the“commandsŽ¡‘Yis–Ecopied“to“a“ le.‘l^The“name“of“the“ le“is“spGeci ed“b¸ãy“the“Èoutput-file“² eld“ofŽ¡‘Ythe–pNïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (obj:Target) >> >> ÈTarget“²ob‘Ž8jectïpdf:eann.‘%pY‘ÿ*ªou“ma¸ãy“ nd“this“useful“in“de ning“custom“build“summaries.Ž‘YŸ=”ï4pdf:dest (section.13.2) [@thispage /XYZ @xpos @ypos]ŸÇÌ13.2Ž‘,ÿüOptions–ffand“vŒÌersioningŽŸ ³çï9pdf:dest (subsection.13.2.1) [@thispage /XYZ @xpos @ypos]Ÿ 34Í13.2.1Ž‘0OMak eFlagsŽŸʨï6pdf:dest (fun:OMakeFlags) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷ÈOMakeFlags(options)Ž¡‘îoptions–?ý:“Stringަ‘²The–8ãÈOMakeFlags“²function“is“used“to“set“Èomake“²options“from“within“ÈOMakefile²s.Ž¡The–UUoptions“ha•¸ãv“e–UUexactly“the“same“format“as“options“on“the“command“line.Ž¡‘F‘ÿ*ªor–šUexample,‘¿¼the‘šTfolloš¸ãwing“coGde“displa˜ys“the“progress“bar“unless“the“ÈVERBOSEŽ¡²en•¸ãvironmen“t–UUv‘ÿqÇariable“is“de ned.ަ‘ÿôÈif–?ý$(not“$(defined-env“VERBOSE))Ž¡‘)ÿèOMakeFlags(-S‘?ý--progress)Ž¡‘)ÿèexportŽŸ*ï9pdf:dest (subsection.13.2.2) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ13.2.2Ž‘0OMak eV‘þàersionŽŸuTï8pdf:dest (fun:OMakeVersion) [@thispage /XYZ @xpos @ypos]¡‘¿÷ÈOMakeVersion(version1)Ž¡‘¿÷OMakeVersion(version1,‘?ýversion2)Ž¡‘îversion1,–?ýversion2“:“Stringަ‘²The–¨çÈOMakeVersion“²function›¨æis“used“for“v•¸ãersion˜c“hec“king–¨çin“ÈOMakefile²s.‘l|ItŽ¡takš¸ães–UUone“or“t˜w˜o“argumen˜ts.Ž¡‘In–8ãthe“one“argumenš¸ãt“form,‘qÇif“the“Èomake“²v˜ersion“n˜um˜bGer“is“less“than“Ȳ,Ž¡then–.Van“exception“is›.Wraised.‘dÇIn“the“t•¸ãw“o‘.Vargumen“t˜form,‘6"the˜v“ersion›.Vm“ust˜lie˜bGe-Ž¡t•¸ãw“een–UUÈversion1“²and“Èversion2².ŽŽŽŒ‹Å 4a s\È ý®£8‘#ï0pdf:dest (page.197) [@thispage /XYZ @xpos @ypos]Ä13.3.‘ÇEXAMINING–UUTHE“DEPENDENCY“GRAPH‘cÜU²197ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.13.2.3) [@thispage /XYZ @xpos @ypos]Ÿ Í13.2.3Ž‘0cmp-v ersionsŽŸ /ï8pdf:dest (fun:cmp-versions) [@thispage /XYZ @xpos @ypos]Ÿ óI‘¿÷È$(cmp-versions–?ýversion1,“version2)ޤ ‘îversion1,–?ýversion2“:“StringŽ©"v‘²The–ñÈÈcmp-versions\“²functions“can“bGe“used“to“compare“arbitrary“v¸ãersionŽ¡strings.‘z%It–Êreturns“0“when“the‘Ét•¸ãw“o›Êv“ersion˜strings˜are˜equal,‘.&a˜negativ“e˜n“um-Ž¡bGer–€when“the“ rst“string‘represenš¸ãts“an“earlier“v˜ersion,‘<Ëand“a“pGositiv˜e“n˜um˜bGerŽ¡otherwise.ŽŸ6Üï9pdf:dest (subsection.13.2.4) [@thispage /XYZ @xpos @ypos]ŸHÍ13.2.4Ž‘0De neCommandV‘þàarsŽŸ³Ûï=pdf:dest (fun:DefineCommandVars) [@thispage /XYZ @xpos @ypos]Ÿ Hž‘¿÷ÈDefineCommandVars()ަ‘²The–¥%ÈDefineCommandVars›¥&²function“rede nes“the˜v‘ÿqÇariables“passed“on˜the“com-Ž¡mandline.‘bùV‘ÿ*ªariables–Pede nitions›Pfare“passed˜on“the˜command“line˜in“the˜formŽ¡Èname=value².‘½HThis–ÃÕfunction“is“primarily‘ÃÖfor“inš¸ãternal“use“b˜y‘çcÈomake“²to“de neŽ¡these–UUv‘ÿqÇariables“for“the“ rst“time.ŽŸJiï4pdf:dest (section.13.3) [@thispage /XYZ @xpos @ypos]ŸHžÌ13.3Ž‘,ÿüExamining–ffthe“deps3endency“graphŽŸ ònï9pdf:dest (subsection.13.3.1) [@thispage /XYZ @xpos @ypos]Ÿ {ÑÍ13.3.1Ž‘0dep•`endencies,›LÍdep“endencies-all,˜dep“endencies-prop“erŽŸ /ï8pdf:dest (fun:dependencies) [@thispage /XYZ @xpos @ypos]ï> >> 10.3.3ïpdf:eann“and“ïwpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:filter-proper-targets) >> >> Èfilter-proper-targetsŽ¡‘Y²functionïpdf:eann.Ž‘YŸÈ@ï9pdf:dest (subsection.13.3.2) [@thispage /XYZ @xpos @ypos]ŸÂÍ13.3.2Ž‘0targetŽŸ ¿Ûï2pdf:dest (fun:target) [@thispage /XYZ @xpos @ypos]Ÿ Çn‘¿÷È$(target–?ýtargets)“:“Target“ArrayŽ¡‘îtargets–?ý:“File“SequenceŽ¡‘¿÷raises‘?ýRuntimeExceptionަ‘²The– ÷Ètarget“²function“returns“the“T‘ÿ*ªarget‘ öob‘Ž8ject“assoGciated“with“eac¸ãh“of“theŽ¡targets.‘qÇSee–UUthe“ÈTarget“²ob‘Ž8ject“for“more“information.ŽŸ#ï9pdf:dest (subsection.13.3.3) [@thispage /XYZ @xpos @ypos]Ÿ ãÞÍ13.3.3Ž‘0 nd-build-targetsŽŸ ¿Üï>pdf:dest (fun:find-build-targets) [@thispage /XYZ @xpos @ypos]Ÿ Çn‘ÿôÈ$(find-build-targets–?ýtag)“:“Target“ArrayŽ¡‘$¿ëtag–?ý:“Succeeded“|“Failedަ‘²The–—zÈfind-build-targets“²allo¸ãw“the“results‘—{of“the“build“to“bGe“examined.Ž¡The–³ÃÈtag“²mš¸ãust“spGeci es“whic˜h“targets“are‘³Âto“bGe“returned;‘búthe“comparison“isŽ¡case-insensitiv¸ãe.ަÇSucceededŽŽ‘8— ²The–UUlist“of“targets“that“w¸ãere“built“successfully‘ÿ*ª.ŽŸsÇF‘ÿ «ailedŽŽ‘"ꟲThe–UUlist“of“targets“that“could“not“bGe“built.ަ‘These–iûare›iüused“mainly“in˜conjuction“with˜the“È.BUILD_SUCCESS‘iÀ²(Section“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.1) >> >> 13.1ïpdf:eann)Ž¡and–O È.BUILD_FAILURE‘Nɲ(Section“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.13.1) >> >> 13.1ïpdf:eann)“phon¸ãy“targets.‘^äF‘ÿ*ªor“example,‘vadding“theŽ¡folloš¸ãwing–÷³to“y˜our“pro‘Ž8ject“ÈOMakefile“²will“prin˜t“the“n˜um˜bGer“of“targets“that“failedŽ¡(if–UUthe“build“failed).ŽŸÊ‘ÿôÈ.BUILD_FAILURE:Ž¡‘)ÿèecho–?ý"Failed“target“count:“$(length“$(find-build-targets“Failed))"ŽŽŽŒ‹Ç N{ s\È ý®£8‘#ï0pdf:dest (page.199) [@thispage /XYZ @xpos @ypos]Ä13.3.‘ÇEXAMINING–UUTHE“DEPENDENCY“GRAPH‘cÜU²199ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.13.3.4) [@thispage /XYZ @xpos @ypos]Ÿ Í13.3.4Ž‘0pro‘Àject-directoriesŽŸʨï?pdf:dest (fun:project-directories) [@thispage /XYZ @xpos @ypos]Ÿ ª¬‘¿÷È$(project-directories)–?ý:“Dir“ArrayŽ©„‘²The–0Èproject-directories›/²function“returns˜the“list˜of“all˜directories“thatޤ are–UUconsidered“to“bGe“part“of“the“pro‘Ž8ject.Ž¡‘T‘ÿ*ªo–ÅJget“the“complete“directory›ÅIlist,‘âthis“function˜should“bGe“called“from“withinŽ¡a–UUrule“b•Go“dy‘ÿ*ª.ŽŸï9pdf:dest (subsection.13.3.5) [@thispage /XYZ @xpos @ypos]Ÿ 9Í13.3.5Ž‘0ruleŽŸuTï0pdf:dest (fun:rule) [@thispage /XYZ @xpos @ypos]¡²The–MÜÈrule“²function›MÛis“called“whenev¸ãer“a“build“rule˜is“de ned.‘oJIt˜is“unlik¸ãely“thatŽ¡yš¸ãou–UUwill“need“to“rede ne“this“function,“except“in“v˜ery“exceptional“cases.ަ‘¿÷Èrule(multiple,–?ýtarget,“pattern,“sources,“options,“body)“:“RuleŽ¡‘îmultiple–?ý:“StringŽ¡‘îtarget‘¿÷:‘?ýSequenceŽ¡‘îpattern‘ ú:‘?ýSequenceŽ¡‘îsources‘ ú:‘?ýSequenceŽ¡‘îoptions‘ ú:‘?ýArrayŽ¡‘îbody‘?ñ:‘?ýBodyަ‘²The–UUÈrule“²function“is“called“when“a“rule“is“ev‘ÿqÇaluated.ަÇm®9ultipleŽŽ‘.^+²A‘HBoGolean–Zv‘ÿqÇalue“indicating“whether“the“rule‘Yw¸ãas“de ned“with“a“dou-Ž¡‘ble–UUcolon“È::².ޤ?hÇtargetŽŽ‘#J ²The–UUsequence“of“target“names.Ž¡ÇpatternŽŽ‘*Qº²The–Õsequence“of“patterns.‘ðàThis“sequence“will“bGe“emptš¸ãy“for“t˜w˜o-partŽ© ‘rules.Ž¡ÇsourcesŽŽ‘)T7²The–UUsequence“of“depGendencies.Ž¡ÇoptionsŽŽ‘)zø²An–YÀarraš¸ãy“of“options.‘Eac˜h“option“is“represen˜ted“as‘Y¿a“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (obj:Map) >> >> ÈMap“²ob‘Ž8jectïpdf:eann“asso-ަ‘ciating–UUeac¸ãh“spGeci ed“option“with“a“v‘ÿqÇalue.Ž¡Çb•QÇo“dyŽŽ‘> >> ÈMap“²ob‘Ž8jectïpdf:eann.Ž¡‘¿÷Èrule(false,–?ýtarget,“pattern,“sources,ަ‘)ÿè{–?ý$|:name1:|“=“option1;“$|:name2:|“=“option2“}ަ‘)ÿè[expr1;‘?ýexpr2])ŽŽŽŒ‹È Y- s\È ý®£8‘Yï0pdf:dest (page.200) [@thispage /XYZ @xpos @ypos]²200‘O*ŒÄCHAPTER–UU13.‘ÇBUILD“FUNCTIONS“AND“UTILITIESŽŽ 8G ýÚ‘Yï9pdf:dest (subsection.13.3.6) [@thispage /XYZ @xpos @ypos]Ÿ Í13.3.6Ž‘0buildŽ©uTï1pdf:dest (fun:build) [@thispage /XYZ @xpos @ypos]¤ ‘ÿôÈbuild(targets–?ý:“File“Array)“:“boolŽŸyœ‘²Build–r0the“givš¸ãen“targets.‘ÈWThe“v‘ÿqÇalue“is“true“i “the“build‘r/w˜as“successful.‘ÈXThisŽ¡function–UUcan“bGe“used“only“in“Èosh².ŽŸìfï4pdf:dest (section.13.4) [@thispage /XYZ @xpos @ypos]Ÿ9Ì13.4Ž‘,ÿüThe–ffOMakŒÌeros3ot“ leŽŸç²The–bBstandard“ÈOMakeroot“² le“de nes“the‘bCfunctions“are“rules“for“building“standardŽ¡pro‘Ž8jects.ŽŸØØï9pdf:dest (subsection.13.4.1) [@thispage /XYZ @xpos @ypos]Ÿ 9Í13.4.1Ž‘0V‘þàariablesަï3pdf:dest (section*.21) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (var:ROOT) [@thispage /XYZ @xpos @ypos]¡ÇR®9OOT‘ ²The–UUroGot“directory“of“the“curren¸ãt“pro‘Ž8ject.Ž©ØØï3pdf:dest (section*.22) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (var:CWD) [@thispage /XYZ @xpos @ypos]Ÿ 9ÇCWD‘ ²The›ìscurren•¸ãt‘ìrw“orking˜directory–ìr(the˜directory˜is“set˜for“eac¸ãh˜ÈOMakefileŽ¡²in–UUthe“pro‘Ž8ject).ŽŸgï3pdf:dest (section*.23) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (var:EMPTY) [@thispage /XYZ @xpos @ypos]Ÿ €ÇEMPTY‘ ²The–UUempt¸ãy“string.ަï3pdf:dest (section*.24) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:STDROOT) [@thispage /XYZ @xpos @ypos]Ÿ 9ÇSTDR®9OOT‘ ²The–UUname“of“the“standard“installed“ÈOMakeroot“² le.ŽŸ çï3pdf:dest (section*.25) [@thispage /XYZ @xpos @ypos]ïBpdf:dest (var:ABORT_ON_COMMAND_ERROR) [@thispage /XYZ @xpos @ypos]¡ÇABOR‘ÿ «T‘°¡‰ffs4Ž–#ÕON‘°¡‰ffs4Ž“COMMAND‘°¡‰ffs4Ž“ERR®9OR‘ ²If–äqset›ärto“true,‘9the“construction˜of“aŽ¡target–¦cshould‘¦dbšGe“ab˜orted“whenev¸ãer“one›¦dof“the“commands“to˜build“it“fail.‘dòThisŽ¡defaults–UUto“true,“and“should“normally“bGe“left“that“w•¸ãa“y‘ÿ*ª.ަï3pdf:dest (section*.26) [@thispage /XYZ @xpos @ypos]ï8pdf:dest (var:SCANNER_MODE) [@thispage /XYZ @xpos @ypos]Ÿ 9ÇSCANNER‘°¡‰ffs4Ž‘#ÕMODE‘ ²This–6}v›ÿqÇariable“should“bGe“de ned“as“one“of“four“v˜aluesŽ¡(defaults–UUto“Èenabled²).ŽŸ”|ÇenabledŽŽ‘+~+²Alloš¸ãw–õÂthe“use‘õÃof“default“È.SCANNER‘õ™²rules.‘SWhenev˜er“a‘õÃrule“doGes“notŽ¡‘spšGecify–÷³a‘÷²È:scanner:“²dep˜endency›÷²explicitly‘ÿ*ª,‘ Jtry“to˜ nd“a˜È.SCANNER‘÷‰²withŽ¡‘the–UUsame“target“name.Ž©Ê>ÇdisabledŽŽ‘-óÙ²Nev¸ãer–UUuse“default“È.SCANNER“²rules.ŽŸÊ?Çw®9arningŽŽ‘-Õ²Allo¸ãw–gthe›g€use“of“default˜È.SCANNER‘gC²rules,‘—but“prin¸ãt“a˜wš¸ãarning“whenev˜erŽ¡‘one–UUis“selected.ަÇerrorŽŽ‘:¥²Do–âŠnot›â‹allo¸ãw“the“use˜of“default“È.SCANNER‘ân²rules.‘KƒIf˜a“rule“doGes˜not“spGecifyŽ¡‘a–W2È:scanner:“²depGendency‘ÿ*ª,›W©and“there“is“a“default“È.SCANNER“²rule,˜the“buildŽ¡‘will–UUterminate“abnormally‘ÿ*ª.ŽŸØØï9pdf:dest (subsection.13.4.2) [@thispage /XYZ @xpos @ypos]Ÿ 9Í13.4.2Ž‘0System‘€v‘ÿ@ariablesŽŸʨï3pdf:dest (section*.27) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:INSTALL) [@thispage /XYZ @xpos @ypos]Ÿ ª¬ÇINST‘ÿ «ALL‘ ²The–=icommand“to›=hinstall“a“program“(Èinstall˜²on“ÈUnix²,‘·mÈcp“²onŽ¡ÈWin32²).ŽŽŽŒ‹É cI s\È ý®£8‘#ï0pdf:dest (page.201) [@thispage /XYZ @xpos @ypos]Ä13.5.‘ÇBUILDING–UUC“AND“C++“CODE’›5?²201ŽŽ 8G ýÚ‘#ï3pdf:dest (section*.28) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:PATHSEP) [@thispage /XYZ @xpos @ypos]Ÿ ÇP–ÿ «A“THSEP‘ ²The–UUnormal“path“separator“(È:“²on“ÈUnix²,“È;“²on“ÈWin32²).ŽŸ¿tï3pdf:dest (section*.29) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (var:DIRSEP) [@thispage /XYZ @xpos @ypos]Ÿ ÊÇDIRSEP‘ ²The–UUnormal“directory“separator“(È/“²on“ÈUnix²,“È\“²on“ÈWin32²).ޤ¿uï3pdf:dest (section*.30) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:EXT_OBJ) [@thispage /XYZ @xpos @ypos]© ÊœÇEXT‘°¡‰ffs4Ž‘#ÕOBJ‘ ²File–º|sux›º{for“an˜ob‘Ž8ject“ le˜(default“is“È.o˜²on“ÈUnix²,‘ÓÅand˜È.obj“²onŽŸ ÈWin32²).Ž¡ï3pdf:dest (section*.31) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:EXT_LIB) [@thispage /XYZ @xpos @ypos]¦ÇEXT‘°¡‰ffs4Ž‘#ÕLIB‘ ²File–aîsux›aífor“a˜static“library“(default˜is“È.a˜²on“ÈUnix²,‘eand˜È.lib“²onŽŸ ÈWin32²).Ž¡ï3pdf:dest (section*.32) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:EXT_DLL) [@thispage /XYZ @xpos @ypos]¦ÇEXT‘°¡‰ffs4Ž‘#ÕDLL‘ ²File–wGsux›wFfor“a˜shared“library˜(default“is˜È.so“²on“ÈUnix²,‘Âand“È.dllŽ© ²on‘UUÈWin32²).Ž¡ï3pdf:dest (section*.33) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:EXT_ASM) [@thispage /XYZ @xpos @ypos]¤ ÊÇEXT‘°¡‰ffs4Ž‘#ÕASM‘ ²File–¥msux“for›¥lan“assem¸ãbly“ le“(default˜is“È.s“²on“ÈUnix²,‘¹rand“È.asmަ²on‘UUÈWin32²).ŽŸ¿tï3pdf:dest (section*.34) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (var:EXE) [@thispage /XYZ @xpos @ypos]¡ÇEXE‘ ²File–¨asux›¨bfor“executables˜(default“is˜empt¸ãy“for˜ÈUnix²,‘Êùand“È.exe˜²on“ÈWin32ަ²and‘UUÈCygwin²).ŽŸÓï4pdf:dest (section.13.5) [@thispage /XYZ @xpos @ypos]ŸÊÌ13.5Ž‘,ÿüBuilding–ffC“and“C++“cos3deŽŸq÷²OMak•¸ãe› pro“vides‘ extensiv“e˜suppGort‘ for˜building˜C‘ ÿand˜C++˜programs.‘Y±In˜orderަto–UUuse“the“functions“de ned“in“this“section,“yš¸ãou“need“to“mak˜e“sure“the“lineŽŸ*rÈopen‘?ýbuild/CŽŸßÖ²is–UUpresenš¸ãt“in“y˜our“ÈOMakeroot“² le.ŽŸ1;ï9pdf:dest (subsection.13.5.1) [@thispage /XYZ @xpos @ypos]Ÿ XÖÍ13.5.1Ž‘0Auto`con guration‘€v‘ÿ@ariablesŽŸ0²These–m‚v‘ÿqÇariables›mwill“get˜de ned“based˜on“the˜\autoGconf-st¸ãyle"“Èstatic.˜²testsަexecuted–Áwhen“yš¸ãou‘Á run“OMak˜e“for“the“ rst“time.‘@ZY‘ÿ*ªou“can“use‘Á them“to“con gureަyš¸ãour–UUpro‘Ž8ject“accordingly‘ÿ*ª,“and“y˜ou“should“not“rede ne“them.ŽŸ Jœ‘Y‘ÿ*ªou– Rcan› Suse“the˜È--configure“²command˜line“option˜(Section“ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.9) >> >> A.3.9ïpdf:eann)˜to“forceަre-execution–UUof“all“the“tests.ŽŸ J‘A‘Ú§di eren¸ãt–Û set›Û of“autoGcon guration˜tests“is˜pšGerformed“dep˜ending‘Û on“theަbuild›Ÿ¸en•¸ãvironmen“t˜in“v“olv“ed˜|˜one˜set˜of‘Ÿ¹tests˜w“ould˜b•Ge˜p“erformed˜in˜a˜ÈWin32ަ²en•¸ãvironmen“t,‘´ and–¡+another›¡*|“in“a˜Unix-likš¸ãe“en˜vironmen˜t‘¡*(including“Lin˜ux,‘´ OSަX–UUand“Cygwin).ŽŸ¿uï>pdf:dest (subsubsection.13.5.1.1) [@thispage /XYZ @xpos @ypos]Ÿ ÊœÇ13.5.1.1Ž‘1ÕDUnix-lik®9e‘ÕTsystemsŽŸ§Zï3pdf:dest (section*.35) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (var:GCC_FOUND) [@thispage /XYZ @xpos @ypos]Ÿ XÖGCC‘°¡‰ffs4Ž‘#ÕF®9OUND‘ ²A‘I b•Go“olean‘I ag›Isp“ecifying˜whether–Ithe˜Ègcc˜²binary“w¸ãas˜foundަin–UUy¸ãour“path.ŽŽŽŒ‹Ê p s\È ý®£8‘Yï0pdf:dest (page.202) [@thispage /XYZ @xpos @ypos]²202‘O*ŒÄCHAPTER–UU13.‘ÇBUILD“FUNCTIONS“AND“UTILITIESŽŽ 8G ýÚ‘Yï3pdf:dest (section*.36) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (var:GXX_FOUND) [@thispage /XYZ @xpos @ypos]Ÿ ÇGXX‘°¡‰ffs4Ž‘#ÕF®9OUND‘ ²A‘2çb•Go“olean›2ï ag‘2ðsp“ecifying˜whether˜the–2ðÈg++˜²binary“w¸ãas˜foundޤ in–UUy¸ãour“path.Ž©\Äï>pdf:dest (subsubsection.13.5.1.2) [@thispage /XYZ @xpos @ypos]Ÿ '}Ç13.5.1.2Ž‘1ÕDWin32ŽŸ‹ï3pdf:dest (section*.37) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (var:CL_FOUND) [@thispage /XYZ @xpos @ypos]Ÿ DCL‘°¡‰ffs4Ž‘#ÕF®9OUND‘ ²A‘°ôb•Go“olean–± ag“spGecifying“whether›± the“Ècl“²binary“w¸ãas˜found“inŽ¡y¸ãour‘UUpath.ަï3pdf:dest (section*.38) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (var:LIB_FOUND) [@thispage /XYZ @xpos @ypos]Ÿ '}ÇLIB‘°¡‰ffs4Ž‘#ÕF®9OUND‘ ²A‘ùb•Go“olean–ùE ag“spGecifying“whether“the“Èlib“²binary“w¸ãas“foundŽ¡in–UUy¸ãour“path.ަï9pdf:dest (subsection.13.5.2) [@thispage /XYZ @xpos @ypos]Ÿ '}Í13.5.2Ž‘0C–€and“C++“con guration“v‘ÿ@ariablesŽŸ¤Y²The–UUfolloš¸ãwing“v‘ÿqÇariables“can“bGe“rede ned“in“y˜our“pro‘Ž8ject.ŽŸ\Åï3pdf:dest (section*.39) [@thispage /XYZ @xpos @ypos]ï.pdf:dest (var:CC) [@thispage /XYZ @xpos @ypos]Ÿ '|ÇCC‘ ²The–¨'name“of›¨(the“C‘§Ïcompiler˜(on“ÈUnix“²it“defaults“to“Ègcc˜²when“Ègcc“²isŽ¡presen¸ãt–UUand“to“Ècc“²otherwise;“on“ÈWin32“²defaults“to“Ècl‘?ý/nologo²).Ž©êþï3pdf:dest (section*.40) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (var:CXX) [@thispage /XYZ @xpos @ypos]Ÿ ™CÇCXX‘ ²The–£name›£of“the“C++˜compiler“(on“ÈUnix“²it˜defaults“to“Ègcc˜²when“ÈgccŽ¡²is–UUpresen¸ãt“and“to“Èc²++“otherwise;“on“ÈWin32“²defaults“to“Ècl‘?ý/nologo²).ަï3pdf:dest (section*.41) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (var:CPP) [@thispage /XYZ @xpos @ypos]© ™DÇCPP‘ ²The–ðíname›ðìof“the“C‘ðÄpreproGcessor“(defaults“to˜Ècpp“²on“ÈUnix²,‘Òand“Ècl‘?ý/EŽ¡²on‘UUÈWin32²).ŽŸêýï3pdf:dest (section*.42) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (var:CFLAGS) [@thispage /XYZ @xpos @ypos]¦ÇCFLA®9GS‘ ²Compilation–áÏ ags“to“pass“to‘áÐthe“C‘áicompiler“(default“empt¸ãy“onŽ¡ÈUnix²,–UUand“È/DWIN32“²on“ÈWin32²).ŽŸêýï3pdf:dest (section*.43) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (var:CXXFLAGS) [@thispage /XYZ @xpos @ypos]¦ÇCXXFLA®9GS‘ ²Compilation–ïÌ ags›ïËto“pass˜to“the˜C++“compiler˜(default“empt¸ãyŽ¡on–UUÈUnix²,“and“È/DWIN32“²on“ÈWin32²).ŽŸêýï3pdf:dest (section*.44) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (var:INCLUDES) [@thispage /XYZ @xpos @ypos]¦ÇINCLUDES‘ ²Additional–Ñdirectories“that“spGecify“the“searc¸ãh“path“to“the“C‘ÐñandŽ¡C++– Îcompilers› Í(default“is˜È.²).‘˜1The“directories“are˜passed“to˜the“C‘ žand“C++Ž¡compilers–Órwith›Ósthe“È-I‘ÓR²option.‘ìThe˜include“path˜with“È-I‘ÓR²pre xes“is˜de ned“inŽ¡the–UUÈPREFIXED_INCLUDES“²v‘ÿqÇariable.ŽŸ^‰ï3pdf:dest (section*.45) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (var:LIBS) [@thispage /XYZ @xpos @ypos]Ÿ %¸ÇLIBS‘ ²Additional–‰libraries“needed“when“building“a“program“(default“is“empt¸ãy).ŽŸêýï3pdf:dest (section*.46) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (var:CCOUT) [@thispage /XYZ @xpos @ypos]¦ÇCCOUT‘ ²The–óáoption“to“use“for“spGecifying“the‘óâoutput“ le“in“C‘óvand“C++Ž¡compilers–UU(defaults“to“È-o“²on“ÈUnix“²and“È/Fo“²on“ÈWin32²).ޤêýï3pdf:dest (section*.47) [@thispage /XYZ @xpos @ypos]ï.pdf:dest (var:AS) [@thispage /XYZ @xpos @ypos]¦ÇAS‘ ²The–UUname“of“the“assem¸ãbler“(defaults“to“Èas“²on“ÈUnix²,“and“Èml“²on“ÈWin32²).Ž¡ï3pdf:dest (section*.48) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:ASFLAGS) [@thispage /XYZ @xpos @ypos]¦ÇASFLA®9GS‘ ²Flags–VHto“pass“to“the“assemš¸ãbler“(default“is“empt˜y“on“ÈUnix²,‘–„andŽŸ È/c‘?ý/coff–UU²on“ÈWin32²).ŽŽŽŒ‹Ë }Š s\È ý®£8‘#ï0pdf:dest (page.203) [@thispage /XYZ @xpos @ypos]Ä13.5.‘ÇBUILDING–UUC“AND“C++“CODE’›5?²203ŽŽ 8G ýÚ‘#ï3pdf:dest (section*.49) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (var:ASOUT) [@thispage /XYZ @xpos @ypos]Ÿ ÇASOUT‘ ²The–àåoption“string“that“spGeci es‘àæthe“output“ le“for“ÈAS‘àȲ(defaults“to“È-oޤ ²on–UUÈUnix“²and“È/Fo“²on“ÈWin32²).Ž©áQï3pdf:dest (section*.50) [@thispage /XYZ @xpos @ypos]ï.pdf:dest (var:AR) [@thispage /XYZ @xpos @ypos]Ÿ IeÇAR‘ ²The–azname“of“the“program“to“create‘aystatic“libraries“(defaults“to“Èar‘?ýcq“²onŽ¡ÈUnix²,–UUand“Èlib“²on“ÈWin32²).ަï3pdf:dest (section*.51) [@thispage /XYZ @xpos @ypos]ï.pdf:dest (var:LD) [@thispage /XYZ @xpos @ypos]¤ IeÇLD‘ ²The–UUname“of“the“link¸ãer“(defaults“to“Èld“²on“ÈUnix²,“and“Ècl“²on“ÈWin32²).ަï3pdf:dest (section*.52) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:LDFLAGS) [@thispage /XYZ @xpos @ypos]¡ÇLDFLA®9GS‘ ²Options–UUto“pass“to“the“linkš¸ãer“(default“is“empt˜y).ަï3pdf:dest (section*.53) [@thispage /XYZ @xpos @ypos]ï7pdf:dest (var:LDFLAGS_DLL) [@thispage /XYZ @xpos @ypos]¡ÇLDFLA®9GS‘°¡‰ffs4Ž‘#ÕDLL‘ ²Options–Ïùto›Ïøpass“to˜the“link¸ãer˜when“compiling˜a“shared˜li-ŽŸ brary–UU(defaults“to“È-shared“²on“ÈUnix“²and“È/DLL“²on“ÈWin32²).ަï3pdf:dest (section*.54) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (var:LDOUT) [@thispage /XYZ @xpos @ypos]¡ÇLDOUT‘ ²The–súoption›sùto“use˜for“spGecifying“the˜output“ le“in˜C‘sÁand˜C++“link¸ãersŽŸ (defaults–UUto“È-o“²on“ÈUnix“²and“È/Fe“²on“ÈWin32²).ަï3pdf:dest (section*.55) [@thispage /XYZ @xpos @ypos]ï0pdf:dest (var:YACC) [@thispage /XYZ @xpos @ypos]¡ÇY‘ÿ «A®9CC‘ ²The–C¾name“of›C½the“Èyacc“²parser“generator“(default“is˜Èyacc“²on“ÈUnix²,‘zvempt¸ãyŽŸ on‘UUÈWin32²).ަï3pdf:dest (section*.56) [@thispage /XYZ @xpos @ypos]ï/pdf:dest (var:LEX) [@thispage /XYZ @xpos @ypos]¡ÇLEX‘ ²The–JÈname›JÇof“the˜Èlex“²lexer˜generator“(default˜is“Èlex˜²on“ÈUnix²,‘Lãempt¸ãy“onޤ ÈWin32²).ŽŸáRï9pdf:dest (subsection.13.5.3) [@thispage /XYZ @xpos @ypos]Ÿ IdÍ13.5.3Ž‘0Generated–€C“ lesŽŸì#²Because–öLthe›öKC‘ö4scanners“do˜not“normally˜knoš¸ãw“an˜ything“abGout‘öKgenerated“sourceŽ¡ les–—ß(suc¸ãh›—àas“generated“header˜ les),‘¨‚these“ les“ma¸ãy˜need“to“bGe˜created“bGeforeŽ¡running–UUthe“scanner.ŽŸSï>pdf:dest (subsubsection.13.5.3.1) [@thispage /XYZ @xpos @ypos]Ÿ ×Ç13.5.3.1Ž‘1ÕDCGeneratedFiles,‘ÕTLoQÇcalCGeneratedFilesŽŸ †ï;pdf:dest (fun:CGeneratedFiles) [@thispage /XYZ @xpos @ypos]ï@pdf:dest (fun:LocalCGeneratedFiles) [@thispage /XYZ @xpos @ypos]Ÿ מÈCGeneratedFiles(files)Ž¡LocalCGeneratedFiles(files)ŽŸ%’‘²The–p¦ÈCGeneratedFiles›p§²and“ÈLocalCGeneratedFiles“²functions˜spGecify“ lesŽ¡that–[öneed“to“bšGe‘[õgenerated“b˜efore“an¸ãy“C‘[ô les“are“scanned“for‘[õdep˜endencies.‘…ªF‘ÿ*ªorŽ¡example,–UUif“Èconfig.h“²and“Èinputs.h“²are“bšGoth“generated“ les,“sp˜ecify:ŽŸ%“ÈCGeneratedFiles(config.h‘?ýinputs.h)ŽŸ\.‘²The–pdf:dest (subsubsection.13.5.4.1) [@thispage /XYZ @xpos @ypos]Ÿ ¾ Ç13.5.4.1Ž‘1ÕDStaticCLibrary,‘ÕTDynamicCLibraryŽŸwÈï:pdf:dest (fun:StaticCLibrary) [@thispage /XYZ @xpos @ypos]ï;pdf:dest (fun:DynamicCLibrary) [@thispage /XYZ @xpos @ypos]Ÿ !–²The–ÑiÈStaticCLibrary›Ñh²builds“a“static˜library“and“the˜ÈDynamicCLibrary“²functionޤ builds–UUa“shared“library“(DLL).Ž©`ÓÈStaticCLibrary(,‘?ý)Ž¡DynamicCLibrary(,‘?ý)ŽŸMv‘²The–ͨȓ²doGes›Í©Înot‘À€²include“the“library“sux,‘èËand“The˜È“²list“doGesŽ¡not–ÄÙinclude“the›ÄØob‘Ž8ject“sux.‘ÀRThese“are“obtained“from˜the“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:EXT_LIB) >> >> ÈEXT‘¡E‰ff&fŽ–Ç«LIBïpdf:eann‘ļ²(ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:EXT_DLL) >> >> ÈEXT‘¡E‰ff&fŽ“DLLïpdf:eann²)Ž¡and–UUïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:EXT_OBJ) >> >> ÈEXT‘¡E‰ff&fŽ‘Ç«OBJïpdf:eann“²v‘ÿqÇariables.ŽŸ ]‘This–UUfunction“returns“the“library“ lename.ŽŸ ^‘The–8ãfollo¸ãwing“command“builds“the“library“Èlibfoo.a“²from“the“ les“Èa.o–?ýb.o“c.oŽ¡²on–a¾ÈUnix²,‘’wor“the“library“Èlibfoo.lib›a¿²from“the“ les“Èa.obj–?ýb.obj“c.obj˜²on‘a¾ÈWin32².ަÈStaticCLibrary(libfoo,–?ýa“b“c)Ž¡.DEFAULT:–?ý$(StaticCLibrary“libbar,“a“b“c“d)ŽŸŠzï3pdf:dest (section*.57) [@thispage /XYZ @xpos @ypos]ï?pdf:dest (var:CDLL_IMPLIES_STATIC) [@thispage /XYZ @xpos @ypos]Ÿ ÚyÇCDLL‘°¡‰ffs4Ž–#ÕIMPLIES‘°¡‰ffs4Ž“ST–ÿ «A“TIC‘ ²If–8ãthe“ÈCDLL_IMPLIES_STATIC‘8›²v‘ÿqÇariable“is“enabledŽ¡(this–&Uis“default›&Von“ÈWin32²),‘/»all˜the“ÈDynamicC‘&I²functions“w¸ãould˜assume“that“creat-Ž¡ing–UUa“shared“library“automatically“created“a“static“one.ŽŸC]ï>pdf:dest (subsubsection.13.5.4.2) [@thispage /XYZ @xpos @ypos]Ÿ !—Ç13.5.4.2Ž‘1ÕDStaticCLibraryCop•®9y,‘ÕTDynamicCLibraryCop“yŽŸwÈï>pdf:dest (fun:StaticCLibraryCopy) [@thispage /XYZ @xpos @ypos]ï?pdf:dest (fun:DynamicCLibraryCopy) [@thispage /XYZ @xpos @ypos]Ÿ !–²The–XnÈStaticCLibraryCopy›Xo²and“ÈDynamicCLibraryCopy˜²functions“cop¸ãy˜a“libraryŽ¡to–UUan“install“loGcation.ަÈStaticCLibraryCopy(,–?ý,“)Ž¡DynamicCLibraryCopy(,–?ý,“)ŽŸMu‘²The–;È›<²is“the˜name“of˜a“target˜(t¸ãypically“a˜È.PHONY‘²target);‘[¯the“ÈŽ¡²is–Xthe“installation›Xdirectory‘ÿ*ª,‘X­and“Ș²is“the“library“to“bGe˜copied“(without“theŽ¡library‘UUsux).ŽŸ ^‘This–UUfunction“returns“the“ lename“of“the“library“in“the“target“directory‘ÿ*ª.ŽŸ ]‘F‘ÿ*ªor–-example,‘µ5the›,follo¸ãwing“coGde˜copies“the“library˜Èlibfoo.a“²to˜the“È/usr/libŽ¡²directory‘ÿ*ª.ަÈ.PHONY:‘?ýinstallŽ¡¡StaticCLibraryCopy(install,–?ý/usr/lib,“libfoo)ŽŸŠzï>pdf:dest (subsubsection.13.5.4.3) [@thispage /XYZ @xpos @ypos]Ÿ ÚzÇ13.5.4.3Ž‘1ÕDStaticCLibraryInstall,‘ÕTDynamicCLibraryInstallŽŸwÈïApdf:dest (fun:StaticCLibraryInstall) [@thispage /XYZ @xpos @ypos]ïBpdf:dest (fun:DynamicCLibraryInstall) [@thispage /XYZ @xpos @ypos]Ÿ !–²The–'/ÈStaticCLibraryInstall“²and“ÈDynamicCLibraryInstall‘'0²functions“build“aŽ¡library‘ÿ*ª,‘å,and–•5set“the›•4install“loGcation“in˜one“step.‘1fReturn“the“ lename˜of“theŽ¡library–UUin“the“target“directory‘ÿ*ª.ŽŽŽŒ‹Í ™l s\È ý®£8‘#ï0pdf:dest (page.205) [@thispage /XYZ @xpos @ypos]Ä13.5.‘ÇBUILDING–UUC“AND“C++“CODE’›5?²205ŽŽ 8G ýÚŸ ‘#ÈStaticCLibraryInstall(,–?ý,“,“)ޤ ‘#DynamicCLibraryInstall(,–?ý,“,“)ŽŸœK‘#StaticCLibraryInstall(install,–?ý/usr/lib,“libfoo,“a“b“c)Ž‘#Ÿ¡¬ï>pdf:dest (subsubsection.13.5.4.4) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇ13.5.4.4Ž‘1ÕDStaticCOb–£Žject,›ÕTStaticCOb“jectCop®9y,˜StaticCOb“jectInstallŽ©gï9pdf:dest (fun:StaticCObject) [@thispage /XYZ @xpos @ypos]ï=pdf:dest (fun:StaticCObjectCopy) [@thispage /XYZ @xpos @ypos]ï@pdf:dest (fun:StaticCObjectInstall) [@thispage /XYZ @xpos @ypos]Ÿ 9²These–8ãfunctions“mirror“the“ÈStaticCLibrary²,–qÇÈStaticCLibraryCopy²,“and‘8ãÈStaticCLibraryInstallŽ¡²functions,‘8abut– øthey› ùbuild“an˜Îobje‘ÿ}'ct‘ýв le˜(a“È.o“² le˜on“ÈUnix²,‘8aand˜a“È.obj˜² le“onŽ¡ÈWin32²).ŽŸèÇï>pdf:dest (subsubsection.13.5.4.5) [@thispage /XYZ @xpos @ypos]Ÿ €Ç13.5.4.5Ž‘1ÕDCProgramަï4pdf:dest (fun:CProgram) [@thispage /XYZ @xpos @ypos]Ÿ 9²The–@†ÈCProgram“²function“builds›@…a“C‘@@program“from“a“set“of˜ob‘Ž8ject“ les“and“libraries.Ž¡‘ÈCProgram(,‘?ý)Ž¡‘²The–OÈ“²argumen¸ãt“spšGeci es“the‘Oname“of“the“program“to“b˜e“built;‘ËðtheŽ¡È– Ñ²argumen¸ãt“spšGeci es“the“ les“to“b˜e“link¸ãed.‘T;The“function“returns“theŽ¡ lename–UUof“the“executable.Ž¡‘Additional–UUoptions“can“bGe“passed“through“the“follo¸ãwing“v‘ÿqÇariables.ŽŸIÖÇCFLA®9GSŽŽ‘3C}²Flags–UUused“b¸ãy“the“C“compiler“during“the“link“step.ޤ¤ëÇLDFLA®9GSŽŽ‘:±³²Flags–UUto“pass“to“the“loader.Ž¡ÇLIBSŽŽ‘ØÚ²Additional–UUlibraries“to“bGe“link¸ãed.ŽŸIÕ‘F‘ÿ*ªor–Óßexample,‘3‚the›Óàfollo¸ãwing“co•Gde˜sp“eci es–Óßthat˜the“program˜Èfoo“²is˜to“bGeޤ proGduced–UUb¸ãy“linking“the“ les“Èbar.o“²and“Èbaz.o“²and“libraries“Èlibfoo.a².ŽŸœLÈsectionŽ¡‘¿÷LIBS–?ý=“libfooŽ¡‘¿÷LDFLAGS–?ý+=“-lbarŽ¡‘¿÷CProgram(foo,–?ýbar“baz)ŽŸ¡«ï>pdf:dest (subsubsection.13.5.4.6) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇ13.5.4.6Ž‘1ÕDCProgramCop®9yަï8pdf:dest (fun:CProgramCopy) [@thispage /XYZ @xpos @ypos]Ÿ 9²The–UUÈCProgramCopy“²function“copies“a“ le“to“an“install“loGcation.Ž¡‘ÈCProgramCopy(,–?ý,“)ŽŸœKCProgramCopy(install,–?ý/usr/bin,“foo)ŽŸ¡¬ï>pdf:dest (subsubsection.13.5.4.7) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇ13.5.4.7Ž‘1ÕDCProgramInstallަï;pdf:dest (fun:CProgramInstall) [@thispage /XYZ @xpos @ypos]Ÿ 9²The–g«ÈCProgramInstall›gª²function“spGeci es“a˜program“to“build,‘l@and“a˜loGcation“toŽ¡install,‘UUsim¸ãultaneously‘ÿ*ª.Ž¡‘ÈCProgramInstall(,–?ý,“,“)ŽŸœKsectionŽ¡‘¿÷LIBS–?ý=“libfooŽ¡‘¿÷LDFLAGS–?ý+=“-lbarŽ¡‘¿÷CProgramInstall(install,–?ý/usr/bin,“foo,“bar“baz)ŽŽŽŒ‹Î §¶ s\È ý®£8‘Yï0pdf:dest (page.206) [@thispage /XYZ @xpos @ypos]²206‘O*ŒÄCHAPTER–UU13.‘ÇBUILD“FUNCTIONS“AND“UTILITIESŽŽ 8G ýÚ‘Yï>pdf:dest (subsubsection.13.5.4.8) [@thispage /XYZ @xpos @ypos]Ÿ Ç13.5.4.8Ž‘1ÕDCXXProgram,‘ÕTCXXProgramInstallŽŸzsï6pdf:dest (fun:CXXProgram) [@thispage /XYZ @xpos @ypos]ï=pdf:dest (fun:CXXProgramInstall) [@thispage /XYZ @xpos @ypos]Ÿ $±²The–ý¨ÈCXXProgram›ý§²and“ÈCXXProgramInstall˜²functions“are˜equiv‘ÿqÇalen¸ãt“to˜their“Cޤ coun•¸ãterparts,‘}pexcept›Gvthat‘Gww“ould˜use˜È$(CXX)–G2²and˜È$(CXXFLAGS)“²for‘Gwlinking˜insteadŽ¡of–UUÈ$(CC)“²and“È$(CFLAGS)².ŽŸ4Eï>pdf:dest (subsubsection.13.5.4.9) [@thispage /XYZ @xpos @ypos]Ÿ A"Ç13.5.4.9Ž‘1ÕDStaticCXXLibrary,–È=StaticCXXLibraryCop®9y‘ÿ «,“StaticCXXLi-Ž¡‘1ÕDbraryInstall,–ϤDynamicCXXLibrary›ÿ «,“DynamicCXXLibraryCop®9y˜,Ž¡‘1ÕDDynamicCXXLibraryInstallŽŸztï> >> A.3.9ïpdf:eann)˜to“forceŽ¡re-execution–UUof“all“the“tests.ŽŸ^ñï3pdf:dest (section*.58) [@thispage /XYZ @xpos @ypos]ï;pdf:dest (var:OCAMLOPT_EXISTS) [@thispage /XYZ @xpos @ypos]¦ÇOCAMLOPT‘°¡‰ffs4Ž‘#ÕEXISTS‘ ²T‘ÿ*ªrue–qÊwhen“Èocamlopt“²(or“Èocamlopt.opt²)“is“a¸ãv‘ÿqÇail-Ž¡able–UUon“yš¸ãour“mac˜hine.ŽŸP¸ï3pdf:dest (section*.59) [@thispage /XYZ @xpos @ypos]ï> >> 13.6.5ïpdf:eann“for“more“information“on“inš¸ãteractions“bGet˜w˜eenŽ¡OMak¸ãe,‘qÇÈOCAMLDEP‘8›²and–8ãgenerated“ les.‘÷Set“to“È$(OCAMLDEP_MODULES_AVAILABLE)Ž¡²b¸ãy‘UUdefault.ŽŸÌKï3pdf:dest (section*.73) [@thispage /XYZ @xpos @ypos]ï6pdf:dest (var:OCAMLMKTOP) [@thispage /XYZ @xpos @ypos]Ÿ |ÙÇOCAMLMKTOP‘ ²The–UUOCaml“toploGop“compiler“(default“Èocamlmktop²).ŽŸZ…ï3pdf:dest (section*.74) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (var:OCAMLLINK) [@thispage /XYZ @xpos @ypos]¤ î ÇOCAMLLINK‘ ²The–UUOCaml“bš¸ãytecoGde“link˜er“(default“È$(OCAMLC)²).ަï3pdf:dest (section*.75) [@thispage /XYZ @xpos @ypos]ï8pdf:dest (var:OCAMLOPTLINK) [@thispage /XYZ @xpos @ypos]¡ÇOCAMLOPTLINK‘ ²The–S›}µ²argumen•¸ãt.‘êæHo“w“ev“er,–‡Íthis˜v‘ÿqÇariable˜is‘}´set˜to˜Ètrue²,“the˜order‘}´of˜the˜ lesŽ¡passed–ðinš¸ãto“these“function“will“bGe“left“as“is,‘!Ñbut“OMak˜e“will“abGort“with“an“errorŽ¡message–UUif“the“order“is“illegal.Ž©¬{ï9pdf:dest (subsection.13.6.5) [@thispage /XYZ @xpos @ypos]Ÿ :Í13.6.5Ž‘0Generated–€OCaml“FilesŽŸÆÎ²As–§ûof›§úOCaml“v¸ãersion˜3.09.2,‘¼¤the“standard˜Èocamldep“²scanner“is˜\brok¸ãen".‘i¸TheŽ¡main–ÿkissue›ÿjis“that˜it“ nds˜only“those˜depGendencies“that˜already“exist.‘U#If“Èfoo.mlŽ¡²con¸ãtains–UUa“depGendency“on“ÈBar²,ŽŸ¯Èfoo.ml:Ž¡‘¿÷open‘?ýBarŽŸƒV²then–”>the“default“Èocamldep›”=²will“only“ nd“the“depGendency“if˜a“ le“Èbar.ml“²orŽ¡Èbar.ml–³²exists›²in“the“include˜path.‘¸àIt“will“not˜ nd“(or“prin¸ãt)˜the“depGendencyŽ¡if,–´^for›¡\example,“only˜Èbar.mly–¡]²exists˜at˜the˜time˜Èocamldep“²is˜run,‘´^ev¸ãen˜thoughŽ¡Èbar.ml–UU²and“Èbar.mli“²can“bGe“generated“from“Èbar.mly².ŽŸ +Ç‘OMak•¸ãe›˜)curren“tly‘˜*pro“vides˜t“w“o–˜*methoGds˜for˜addressing“this˜problem“|˜oneŽ¡that–8ãrequires“man¸ãually“spšGecifying“the“generated“ les,‘qÇand“an“exp˜erimen¸ãtal“metho˜dŽ¡for›8ãdisco•¸ãv“ering˜suc“h˜\hidden"˜depGendencies˜automatically‘ÿ*ª.‘÷The˜ïzpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAMLDEP_MODULES_ENABLED) >> >> ÈOCAMLDEP‘¡E‰ff&fŽ–Ç«MODULES‘¡E‰ff&fŽ“ENABLEDŽ¡²v‘ÿqÇariableïpdf:eann›‹con•¸ãtrols‘Œwhic“h˜metho•Gd˜is‘Œgoing˜to˜b“e–Œused.‘_„When˜this˜v‘ÿqÇariable“is˜false,Ž¡the–f¼man¸ãual“spšGeci cations“are“exp˜ected‘f½and“when“it“is“true,‘kthe“automated“dis-Ž¡co•¸ãv“ery–UUwill“bGe“attempted.ަï>pdf:dest (subsubsection.13.6.5.1) [@thispage /XYZ @xpos @ypos]¤ :Ç13.6.5.1Ž‘1ÕDOCamlGeneratedFiles,‘ÕTLoQÇcalOCamlGeneratedFilesŽŸŒÎï?pdf:dest (fun:OCamlGeneratedFiles) [@thispage /XYZ @xpos @ypos]ïDpdf:dest (fun:LocalOCamlGeneratedFiles) [@thispage /XYZ @xpos @ypos]¡ÈOCamlGeneratedFiles(files)ŽŸ LocalOCamlGeneratedFiles(files)ŽŽŽŒ‹Ò â  s\È ý®£8‘Yï0pdf:dest (page.210) [@thispage /XYZ @xpos @ypos]²210‘O*ŒÄCHAPTER–UU13.‘ÇBUILD“FUNCTIONS“AND“UTILITIESŽŽ 8G ýÚŸ ‘h²When›Þthe‘Ýïzpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAMLDEP_MODULES_ENABLED) >> >> ÈOCAMLDEP‘¡E‰ff&fŽ–Ç«MODULES‘¡E‰ff&fŽ“ENABLED‘ϲv–ÿqÇariableïpdf:eann˜v“ariable–Ýis˜set“to˜Èfalse²,‘'\theޤ ‘YÈOCamlGeneratedFiles–_a²and›_`ÈLocalOCamlGeneratedFiles“²functions˜spGecify“ lesŽ¡‘Ythat–öneed“to‘ö‚bšGe“generated“b˜efore“an¸ãy›ö‚OCaml“ les“are“scanned˜for“depGendencies.Ž¡‘YF‘ÿ*ªor–UUexample,“if“Èparser.ml“²and“Èlexer.ml“²are“bšGoth“generated“ les,“sp˜ecify:ŽŸŠé‘YÈOCamlGeneratedFiles(parser.ml‘?ýlexer.ml)ŽŸ(/‘h²The–‡!ÈOCamlGeneratedFiles“²function“is“Îglob‘ÿ}'al‘ª²|“its“argumen¸ãts“will“bGe“gen-Ž¡‘Yerated–´#bGefore›´"an¸ãy“OCaml“ les˜an¸ãywhere“in“the˜pro‘Ž8ject“are“scanned˜for“depGen-Ž¡‘Ydencies.‘á?The–z}ÈLocalOCamlGeneratedFiles“²function“follo¸ãws“the“normal“scopingŽ¡‘Yrules–UUof“OMak¸ãe.Ž© bº‘hThese›ù®functions‘ù¯ha•¸ãv“e˜no˜e ect˜when‘ù¯the˜ïzpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAMLDEP_MODULES_ENABLED) >> >> ÈOCAMLDEP‘¡E‰ff&fŽ–Ç«MODULES‘¡E‰ff&fŽ“ENABLED‘ù„²v‘ÿqÇari-Ž¡‘Yableïpdf:eann–UUis“true.Ž‘YŸ§Jï>pdf:dest (subsubsection.13.6.5.2) [@thispage /XYZ @xpos @ypos]¦Ç13.6.5.2Ž‘1ÕDAutomatic›A#disco•®9v“ery–A$of˜generated˜ les“during˜depQÇendencyŽ¡‘1ÕDanalysisŽŸ-²Ha¸ãving–ÎÚto›ÎÛspGecify“the“generated“ les˜manš¸ãualy“when“OMak˜e“could‘ÎÛdisco˜v˜er“themŽ¡automatically–} is›} ob¸ãviously“subGoptimal.‘)¯T‘ÿ*ªo“address˜this,‘¨Ow¸ãe˜tell“Èocamldep˜²to“ÎonlyŽ¡² nd–ï”the›ï“free“moGdule“names˜in“a“ le“and˜then“p•Gost-pro“cess–ï”the˜results“in¸ãternally‘ÿ*ª.ަ‘This–8ãautomated“functionalit¸ãy“is“enabled“when“the“ïzpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAMLDEP_MODULES_ENABLED) >> >> ÈOCAMLDEP‘¡E‰ff&fŽ–Ç«MODULES‘¡E‰ff&fŽ“ENABLEDŽ¡²v›ÿqÇariableïpdf:eann–ê”is“set“to‘ê“Ètrue².‘N2By“default,‘ÿîïzpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAMLDEP_MODULES_ENABLED) >> >> ÈOCAMLDEP‘¡E‰ff&fŽ–Ç«MODULES‘¡E‰ff&fŽ“ENABLED‘êx²v˜ariableïpdf:eann–ê”will“bGeŽ¡set–UUto“È$(OCAMLDEP_MODULES_AVAILABLE)².ަ‘Note–rkthat›rlthe“Èocamldep“²functionalit¸ãy“this˜relies“upGon“is“only˜included“inŽ¡the–$2OCaml›$1v¸ãersion“3.10˜and“higher.‘afT–ÿ*ªempGorarily“,‘.w•¸ãe˜distribute‘$2a˜b“ytecoGde‘$2v“er-Ž¡sion–ÀÈocamldep-omake›À²of“the“appropriately˜moGdi ed“Èocamldep².‘@The“appropriateŽ¡Èocamldep–8ã²will“bGe“disco•¸ãv“ered–8ãautomatically“|“see“and“the“ï|pdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAMLDEP_MODULES_AVAILABLE) >> >> ÈOCAMLDEP‘¡E‰ff&fŽ–Ç«MODULES‘¡E‰ff&fŽ“AVAILABLEïpdf:eannŽ¡²and–UUïrpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAMLDEP_MODULES) >> >> ÈOCAMLDEP‘¡E‰ff&fŽ‘Ç«MODULESïpdf:eann“²v‘ÿqÇariables“will“bGe“set“accordingly‘ÿ*ª.ŽŸ™ï9pdf:dest (subsection.13.6.6) [@thispage /XYZ @xpos @ypos]Ÿ póÍ13.6.6Ž‘0Using–€the“Menhir“parser“generatorŽŸ-²Menhir–IRis“a“parser“generator“that‘IQis“mostly“compatible“with“Èocamlyacc²,‘†QbutŽ¡with‘†man•¸ãy›‡impro“v“emen“ts.‘v[A‘Zfew˜of–†these˜are“listed˜here“(excerpted˜from“theŽ¡Menhir–UUhome“page“ï‡pdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [0 1 1] /A << /S /URI /URI (http://cristal.inria.fr/~fpottier/menhir/) >> >>Èhttp://cristal.inria.fr/Ÿýjªó O!â…cmsy7·Ž‘@Èfpottier/menhir/ïpdf:eann²).ŽŸŠé‘¸ŽŽŽ‘²Menhir's–µµexplanations›µ¶are“bGeliev¸ãed˜to“bGe˜understandable“b¸ãy˜mere“h¸ãumans.Ž©Šé‘¸ŽŽŽ‘²Menhir–K×allo¸ãws›KÖgrammar“spGeci cations“to˜bGe“split“o•¸ãv“er˜m“ultiple‘K× les.‘ULItŽ¡‘also–UUalloš¸ãws“sev˜eral“grammars“to“share“a“single“set“of“tok˜ens.ŽŸŠê‘¸ŽŽŽ‘²Menhir–ahis›aiable“to“proGduce˜parsers“that“are“parameterized˜bš¸ãy“Ob‘Ž8jectiv˜eŽ¡‘Caml‘UUmoGdules.ަ‘ØGAdded–UUb¸ãy“jyhŽŽŽ‘With–œthe›œÈ--infer“²option,‘­ÈMenhir˜can“t•¸ãypGec“hec“k˜the‘œseman“tic˜actions‘œinŽ¡‘y¸ãour–UUgrammar“at“Îgener‘ÿ}'ation‘¸²time.ŽŸŠé‘What–UUdo“y¸ãou“need“to“do“to“use“Menhir“instead“of“Èocamlyacc²?ŽŽŽŒ‹Ó ñ[ s\È ý®£8‘#ï0pdf:dest (page.211) [@thispage /XYZ @xpos @ypos]Ä13.6.‘ÇBUILDING–UUOCAML“CODE’°˜Î²211ŽŽ 8G ýÚ‘#ï/pdf:dest (Item.11) [@thispage /XYZ @xpos @ypos]Ÿ ‘ 8ä1.ŽŽŽ‘Place–éðthe›éñfollo¸ãwing“de nition˜bGefore“the“relev‘ÿqÇan¸ãt˜section“of˜y¸ãour“pro‘Ž8jectޤ ‘(or–ðÂat›ðÃthe“top˜of“y¸ãour˜pro‘Ž8ject“ÈOMakefile“²if˜yš¸ãou“w˜an˜t›ðÃto“use˜Menhir“ev¸ãery-Ž¡‘where).ޤ"¢‘(¿ùÈMENHIR_ENABLED–?ý=“trueŽŸå½ï/pdf:dest (Item.12) [@thispage /XYZ @xpos @ypos]Ÿ<ä‘ 8ä²2.ŽŽŽ‘Optionally‘ÿ*ª,‘½nadd–—tan¸ãy“desired“Menhir‘—uoptions“to“the“ÈMENHIR_FLAGS‘—D²v‘ÿqÇariable.Ž¡‘(¿ùÈMENHIR_FLAGS–?ý+=“--inferŽŸ"¡‘²With–UUthis“setup,“an¸ãy“ le“with“a“È.mly“²sux“will“bGe“compiled“with“Menhir.ޤ ‘If–Ryš¸ãour“grammar“is“split‘Sacross“sev˜eral“ les,‘)Ry˜ou‘Sneed“to“spGecify“it“explicitly‘ÿ*ª,Ž¡using–UUthe“ÈMenhirMulti“²function.Ž©ò1‘ÿôÈMenhirMulti(target,‘?ýsources)Ž¡‘)ÿètarget–?ý:“filename,“without“suffixŽ¡‘)ÿèsources–?ý:“the“files“that“define“the“grammar,“without“suffixesŽŸò2‘²F‘ÿ*ªor–8ãexample,‘qÇif“yš¸ãou“w˜an˜t“to“generate“the“parser“ les“Èparse.ml“²and“Èparse.mli²,Ž¡from– ªthe“grammar“spGeci ed“in‘ « les“Èa.mly“²and“Èb.mly²,‘yš¸ãou“w˜ould“use“the“follo˜w-Ž¡ing.ަ‘ÿôÈMenhirMulti(parse,–?ýa“b)ŽŸ„`ï>pdf:dest (subsubsection.13.6.6.1) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇ13.6.6.1Ž‘1ÕDOCamlLibraryŽŸgï8pdf:dest (fun:OCamlLibrary) [@thispage /XYZ @xpos @ypos]Ÿ 9²The–UUÈOCamlLibrary“²function“builds“an“OCaml“library‘ÿ*ª.Ž¡‘ÈOCamlLibrary(,‘?ý)Ž¡‘²The–UUÈ“²and“È“²are“listed“Îwithout‘H-²suxes.Ž¡‘This–Áƒfunction›Á„returns“the“list“of˜all“the“targets˜that“it“de nes“the˜rules“forŽ¡(including–UUthe“È$(name)$(EXT_LIB)“² le“when“ÈNATIVE_ENABLED“²is“set).Ž¡‘The–ò€follo¸ãwing›òcoGde“builds˜the“Èlibfoo.cmxa“²library˜from“the˜ les“Èfoo.cmxŽ¡²and– ªÈbar.cmx“²(if“ÈNATIVE_ENABLED‘ u²is“set),‘Sand‘ ©Èlibfoo.cma“²from“Èfoo.cmo“²andŽ¡Èbar.cmo–UU²(if“ÈBYTE_ENABLED“²is“set).ަÈOCamlLibrary(libfoo,–?ýfoo“bar)ŽŸ„`ï>pdf:dest (subsubsection.13.6.6.2) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇ13.6.6.2Ž‘1ÕDOCamlP•®9ac“k‘ÿ\rageŽŸgï8pdf:dest (fun:OCamlPackage) [@thispage /XYZ @xpos @ypos]Ÿ 9²The–UUÈOCamlPackage“²function“builds“an“OCaml“pac¸ãk‘ÿqÇage.Ž¡‘ÈOCamlPackage(,‘?ý)Ž¡‘²The–„¼È“²and“È“²are‘„»listed“Îwithout‘w”²suxes.‘,?The“È“²mš¸ãust“ha˜v˜eŽ¡bGeen–UUcompiled“with“the“È-for-pack‘?ý“² ag“to“the“OCaml“compiler.Ž¡‘This–Áƒfunction›Á„returns“the“list“of˜all“the“targets˜that“it“de nes“the˜rules“forŽ¡(including–UUthe“È$(name)$(EXT_LIB)“² le“when“ÈNATIVE_ENABLED“²is“set).Ž¡‘The–8ãfolloš¸ãwing“coGde“builds“the“Èlibfoo.cmx“²pac˜k‘ÿqÇage“from“the“ les“Èpackage.cmxŽ¡²and–ˆÈbar.cmx›‡²(if“ÈNATIVE_ENABLED‘u²is˜set),‘¯•and˜Èpackage.cmo“²from˜Èfoo.cmo“²andŽ¡Èbar.cmo–UU²(if“ÈBYTE_ENABLED“²is“set).ަÈOCamlPackage(package,–?ýfoo“bar)ŽŽŽŒ‹Ô  s\È ý®£8‘Yï0pdf:dest (page.212) [@thispage /XYZ @xpos @ypos]²212‘O*ŒÄCHAPTER–UU13.‘ÇBUILD“FUNCTIONS“AND“UTILITIESŽŽ 8G ýÚ‘Yï>pdf:dest (subsubsection.13.6.6.3) [@thispage /XYZ @xpos @ypos]Ÿ Ç13.6.6.3Ž‘1ÕDOCamlLibraryCop®9yŽ©gï,–?ý,“,“)Ž¡‘²The–ìÈ“²spšGecify‘ìadditional“in¸ãterface“ les“to“b˜e‘ìcopied“if“theŽ¡ÈINSTALL_INTERFACES–UU²v‘ÿqÇariable“is“true.ŽŸs²ï>pdf:dest (subsubsection.13.6.6.4) [@thispage /XYZ @xpos @ypos]Ÿ tÇ13.6.6.4Ž‘1ÕDOCamlLibraryInstallަï?pdf:dest (fun:OCamlLibraryInstall) [@thispage /XYZ @xpos @ypos]Ÿ 9²The–UýÈOCamlLibraryInstall“²function“builds“a“library‘Uüand“copies“it“to“an“installŽ¡loGcation–UUin“one“step.Ž¡‘ÈOCamlLibraryInstall(,–?ý,“,“)ŽŸ¹ ï>pdf:dest (subsubsection.13.6.6.5) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇ13.6.6.5Ž‘1ÕDOCamlProgramަï8pdf:dest (fun:OCamlProgram) [@thispage /XYZ @xpos @ypos]Ÿ 9²The–OhÈOCamlProgram“²function‘Oibuilds“an“OCaml“program.‘`It“returns“the“arra¸ãyŽ¡with–äÇall“the“targets“for“whic¸ãh‘äÆit“has“de ned“the“rules“(È$(name)$(EXE)‘ä`²andŽ¡È$(name).run–Xe²and/or“È$(name).opt²,‘Ù)depGending“on“the“ÈNATIVE_ENABLED‘Wà²andŽ¡ÈBYTE_ENABLED‘UU²v‘ÿqÇariables).Ž¡‘ÈOCamlProgram(,‘?ý)Ž¡‘²Additional–UUv‘ÿqÇariables“used:ŽŸ¶eïlpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAML_LIBS) >> >> ÈOCAML‘¡E‰ff&fŽ‘Ç«LIBSïpdf:eannŽŽ‘8²Additional–Ð]libraries“passed“to‘Ð^the“link¸ãer,‘êõwithout“sux.‘EuThese“ lesŽ¡‘b•Gecome›UUdep“endencies˜of˜the˜target˜program.Ž©Û2ïrpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAML_OTHER_LIBS) >> >> ÈOCAML‘¡E‰ff&fŽ–Ç«OTHER‘¡E‰ff&fŽ“LIBSïpdf:eannŽŽ‘V,²Additional–8ãlibraries“passed“to“the“link¸ãer,‘qÇwithout“sux.‘÷TheseŽ¡‘ les–UUdo“Înot‘H-²bšGecome“dep˜endencies“of“the“target“program.ޤÛ3ïmpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAML_CLIBS) >> >> ÈOCAML‘¡E‰ff&fŽ‘Ç«CLIBSïpdf:eannŽŽ‘=G²C–UUlibraries“to“pass“to“the“link¸ãer.ަïwpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAML_BYTE_LINK_FLAGS) >> >> ÈOCAML‘¡E‰ff&fŽ–Ç«BYTE‘¡E‰ff&fŽ“LINK‘¡E‰ff&fŽ“FLAGSïpdf:eannŽŽ‘nÖ˲Flags–UUto“pass“to“the“bš¸ãytecoGde“link˜er.Ž¡ïypdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAML_NATIVE_LINK_FLAGS) >> >> ÈOCAML‘¡E‰ff&fŽ–Ç«NATIVE‘¡E‰ff&fŽ“LINK‘¡E‰ff&fŽ“FLAGSïpdf:eannŽŽ‘yVŲFlags–UUto“pass“to“the“nativš¸ãe“coGde“link˜er.ަïrpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:OCAML_LINK_FLAGS) >> >> ÈOCAML‘¡E‰ff&fŽ–Ç«LINK‘¡E‰ff&fŽ“FLAGSïpdf:eannŽŽ‘V,²Flags–UUto“pass“to“bGoth“link¸ãers.Ž©qíï>pdf:dest (subsubsection.13.6.6.6) [@thispage /XYZ @xpos @ypos]¤ 9Ç13.6.6.6Ž‘1ÕDOCamlProgramCop®9yŽŸgï,–?ý,“)Ž¡‘²Additional–UUv‘ÿqÇariables“used:ŽŸ¶dÇNA‘ÿ «TIVE‘°¡‰ffs4Ž‘#ÕENABLEDŽŽ‘o5w²If›ðthe–ñïppdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:NATIVE_ENABLED) >> >> ÈNATIVE‘¡E‰ff&fŽ‘Ç«ENABLED‘à²v‘ÿqÇariableïpdf:eann“is˜set,‘!Òthe˜nativ¸ãe-coGdeŽ¡‘executable–UUis“copied;“otherwise“the“b¸ãyte-coGde“executable“is“copied.ަï>pdf:dest (subsubsection.13.6.6.7) [@thispage /XYZ @xpos @ypos]¤ 9Ç13.6.6.7Ž‘1ÕDOCamlProgramInstallŽŸgï?pdf:dest (fun:OCamlProgramInstall) [@thispage /XYZ @xpos @ypos]¡²The–K¥ÈOCamlProgramInstall“²function“builds“a“programs‘K¤and“copies“it“to“an“installޤ loGcation–UUin“one“step.Ž¡‘ÈOCamlProgramInstall(,–?ý,“,“)ŽŽŽŒ‹Õ ú s\È ý®£8‘#ï0pdf:dest (page.213) [@thispage /XYZ @xpos @ypos]Ä13.7.‘ÇBUILDING–UULŸýó4‘üffó*¡8)Ïcmsl8ÕAŽŽx‘ÄT‘þU>Ÿ'EŽ‘ãxX“FILES’½àU²213ŽŽ 8G ýÚ‘#ï4pdf:dest (section.13.7) [@thispage /XYZ @xpos @ypos]Ÿ Ì13.7Ž‘,ÿüBuilding‘ŸÿLŸüû+‘ú+ÇAŽŽn¹ÌT‘ýL¨Ÿ32EŽ‘èdX‘ff lesŽŸs²OMak•¸ãe›åípro“vides˜supp•Gort‘åìfor˜building‘ zLŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX˜do“cumen¸ãts,‘ including˜supp“ort˜forޤ automatically–hHrunning“BiBT‘ÿ*ªex‘hGand“for“proGducing“P¸ãostScript“and“PDF‘hC les.‘ªŸInŽ¡order–Öõto“use›Öôthe“functions“de ned“in˜this“section,‘ð;yš¸ãou“need“to“mak˜e‘Öôsure“the“lineŽŸeIÈopen‘?ýbuild/LaTeXŽŸË÷²is–UUpresenš¸ãt“in“y˜our“ÈOMakeroot“² le.ޤ„ï9pdf:dest (subsection.13.7.1) [@thispage /XYZ @xpos @ypos]Ÿ §‹Í13.7.1Ž‘0Con guration‘€v‘ÿ@ariablesŽŸ’¬²The–UUfollo¸ãwing“v‘ÿqÇariables“can“bšGe“mo˜di ed“in“y¸ãour“pro‘Ž8ject.Ž¡ï3pdf:dest (section*.97) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (var:LATEX) [@thispage /XYZ @xpos @ypos]Ÿ §‹ÇLA‘ÿ «TEX‘ ²The–UULŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX“command“(default“Èlatex²).Ž©Wï3pdf:dest (section*.98) [@thispage /XYZ @xpos @ypos]ï:pdf:dest (var:TETEX2_ENABLED) [@thispage /XYZ @xpos @ypos]Ÿ SÇTETEX2‘°¡‰ffs4Ž‘#ÕENABLED‘ ²Flag– 8indicating“whether“to‘ 7use“adv‘ÿqÇanced“LŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX“op-ޤ tions–AÉpresenš¸ãt“in“T–ÿ*ªeT“eX‘AŒv.2–AÉ(default“v‘ÿqÇalue‘AÈis“determined“the“ rst“time“omak˜eŽ¡reads–UUÈLaTeX.src“²and“depGends“on“the“vš¸ãersion“of‘rLŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX“y˜ou“ha˜v˜e“installed).ަï3pdf:dest (section*.99) [@thispage /XYZ @xpos @ypos]ï6pdf:dest (var:LATEXFLAGS) [@thispage /XYZ @xpos @ypos]Ÿ SÇLA‘ÿ «TEXFLA®9GS‘ ²The– PLŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX“ ags“(defaults‘ OdepGend“on“the“ÈTETEX2_ENABLEDŽ¡²v‘ÿqÇariable)ަï4pdf:dest (section*.100) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (var:BIBTEX) [@thispage /XYZ @xpos @ypos]¤ SÇBIBTEX‘ ²The–UUBibT‘ÿ*ªeX“command“(default“Èbibtex²).ަï4pdf:dest (section*.101) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (var:MAKEINDEX) [@thispage /XYZ @xpos @ypos]¡ÇMAKEINDEX‘ ²The–UUcommand“to“build“an“index“(default“Èmakeindex²).ަï4pdf:dest (section*.102) [@thispage /XYZ @xpos @ypos]ï1pdf:dest (var:DVIPS) [@thispage /XYZ @xpos @ypos]¤ RÇD®9VIPS‘ ²The–UUÈ.dvi“²to“Pš¸ãostScript“con˜v˜erter“(default“Èdvips²).Ž©Xï4pdf:dest (section*.103) [@thispage /XYZ @xpos @ypos]ï6pdf:dest (var:DVIPSFLAGS) [@thispage /XYZ @xpos @ypos]¡ÇD•®9VIPSFLA“GS‘ ²Flags–UUto“pass“to“Èdvips“²(default“È-t‘?ýletter²).ަï4pdf:dest (section*.104) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (var:DVIPDFM) [@thispage /XYZ @xpos @ypos]¡ÇD®9VIPDFM‘ ²The–UUÈ.dvi“²to“È.pdf“²con•¸ãv“erter–UU(default“Èdvipdfm²).ަï4pdf:dest (section*.105) [@thispage /XYZ @xpos @ypos]ï8pdf:dest (var:DVIPDFMFLAGS) [@thispage /XYZ @xpos @ypos]¡ÇD•®9VIPDFMFLA“GS‘ ²Flags–UUto“pass“to“Èdvipdfm“²(default“È-p‘?ýletter²).ަï4pdf:dest (section*.106) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (var:PDFLATEX) [@thispage /XYZ @xpos @ypos]¡ÇPDFLA‘ÿ «TEX‘ ²The–UUÈ.latex“²to“È.pdf“²con•¸ãv“erter–UU(default“Èpdflatex²).ަï4pdf:dest (section*.107) [@thispage /XYZ @xpos @ypos]ï9pdf:dest (var:PDFLATEXFLAGS) [@thispage /XYZ @xpos @ypos]¡ÇPDFLA‘ÿ «TEXFLA®9GS‘ ²Flags–—eto“pass“to‘—fpGd atex“(default“is“È$`(LATEXFLAGS)²).ަï4pdf:dest (section*.108) [@thispage /XYZ @xpos @ypos]ï7pdf:dest (var:USEPDFLATEX) [@thispage /XYZ @xpos @ypos]¡ÇUSEPDFLA‘ÿ «TEX‘ ²Flag–8ãindicating“whether“to“use“pšGd atex“instead“of“dvip˜dfmŽŸ to–UUgenerate“the“È.pdf“²doGcumen¸ãt“(default“Èfalse²).ŽŽŽŒ‹Ö Ÿ s\È ý®£8‘Yï0pdf:dest (page.214) [@thispage /XYZ @xpos @ypos]²214‘O*ŒÄCHAPTER–UU13.‘ÇBUILD“FUNCTIONS“AND“UTILITIESŽŽ 8G ýÚ‘Yï9pdf:dest (subsection.13.7.2) [@thispage /XYZ @xpos @ypos]Ÿ Í13.7.2Ž‘0Building‘°LŸýAl‘û#×ó)2Ç@Écmbx8ÔAŽŽ~/ÍT‘ý¿áŸªªEŽ‘ìSX‘€do`cumen tsŽŸ þï>pdf:dest (subsubsection.13.7.2.1) [@thispage /XYZ @xpos @ypos]Ÿ UVÇ13.7.2.1Ž‘1ÕDLaT‘ÿ «eXDoQÇcumen®9tŽŸuTï9pdf:dest (fun:LaTeXDocument) [@thispage /XYZ @xpos @ypos]¤ ²The–UUÈLaTeXDocument“²prošGduces“a“LŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX“do˜cumen¸ãt.Ž¡‘ÈLaTeXDocument(,‘?ý)Ž¡‘²The–£doGcumen¸ãt“È“²and“È“²are“listed“without“suxes.‘\xThisŽ¡function–UUreturns“the“ lenames“for“the“generated“È.ps“²and“È.pdf“² les.Ž¡‘Additional–UUv‘ÿqÇariables“used:Ž© þ6ï4pdf:dest (section*.109) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (var:TEXINPUTS) [@thispage /XYZ @xpos @ypos]¡ÇTEXINPUTS‘ ²The–tLŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX‘usearcš¸ãh“path“(an“arra˜y‘uof“directories,‘„pdf:dest (subsubsection.13.7.2.2) [@thispage /XYZ @xpos @ypos]¡Ç13.7.2.2Ž‘1ÕDT–ÿ «eXš®9GeneratedFiles,‘ÕTLoQÇcalT“eX˜GeneratedFilesŽŸgï=pdf:dest (fun:TeXGeneratedFiles) [@thispage /XYZ @xpos @ypos]ïBpdf:dest (fun:LocalTeXGeneratedFiles) [@thispage /XYZ @xpos @ypos]Ÿ 9ÈTeXGeneratedFiles(files)Ž¡LocalTeXGeneratedFiles(files)ŽŸ‘²The–xøÈTeXGeneratedFiles“²and‘x÷ÈLocalTeXGeneratedFiles“²functions“spGecifyŽ¡ les–that› need“to˜bGe“generated˜bGefore“an¸ãy‘³šLŸýó5‘üff±AŽŽ‘͉²T‘þU>Ÿ'EŽ‘ãxX les“are˜scanned“for˜depGen-Ž¡dencies.‘³ýF‘ÿ*ªor–kgexample,‘pëif“Èconfig.tex“²and‘kfÈinputs.tex“²are“bGoth“generated“ les,Ž¡spGecify:ޤ‘ÿôÈTeXGeneratedFiles(config.tex‘?ýinputs.tex)Ž¡‘²The–½âÈTeXGeneratedFiles“²function›½áis“Îglob‘ÿ}'al‘Æk²|“its“argumen¸ãts˜will“bGe“gener-ޤ ated–+DbGefore“anš¸ãy“T‘ÿ*ªeX‘+ les‘+Can˜ywhere“in“the“pro‘Ž8ject“are“scanned“for“depGenden-Ž¡cies.‘vThe›¬ÈLocalTeXGeneratedFiles–¬²function“follo¸ãws˜the“normal˜scoping“rulesŽ¡of‘UUOMak¸ãe.ަï>pdf:dest (subsubsection.13.7.2.3) [@thispage /XYZ @xpos @ypos]¡Ç13.7.2.3Ž‘1ÕDLaT‘ÿ «eXDoQÇcumen•®9tCop“yŽŸgï=pdf:dest (fun:LaTeXDocumentCopy) [@thispage /XYZ @xpos @ypos]Ÿ 9²The–UUÈLaTeXDocumentCopy“²copies“the“došGcumen¸ãt“to“an“install“lo˜cation.Ž¡‘ÈLaTeXDocumentCopy(,–?ý,“,“)Ž¡‘²This–UUfunction“copies“just“the“È.pdf“²and“È.ps“² les.ŽŸ7ï>pdf:dest (subsubsection.13.7.2.4) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇ13.7.2.4Ž‘1ÕDLaT‘ÿ «eXDoQÇcumen®9tInstallŽŸuTï@pdf:dest (fun:LaTeXDocumentInstall) [@thispage /XYZ @xpos @ypos]¡²The–ýmÈLaTeXDocumentInstall›ýl²builds“a“doGcumen¸ãt˜and“copies˜it“to“an˜install“loGca-Ž¡tion–UUin“one“step.Ž¡‘ÈLaTeXDocumentInstall(,–?ý,“,“,“)Ž¡ŽŽŒ‹× -ó s\È ý®£8‘#ï0pdf:dest (page.215) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (chapter.14) [@thispage /XYZ @xpos @ypos]ŸU áÊChapter‘Ç 14ŽŸ2 âÆAuto‘Ç con guration‘ T{functionsŽŸand‘ T{v‘þqëariablesŽŸ4 á²OMakš¸ãe–6standard‘6library“pro˜vides‘6a“n˜um˜bGer“of›6functions“and˜v‘ÿqÇariables“in¸ãtendedޤ to–Û>help›Û?one“write“build˜spGeci cations“that“need˜to“bGe“capable˜of“autoGcon guringŽ¡itself–UUto“adjust“to“di erenš¸ãt“build“en˜vironmen˜ts.ŽŸ;ï4pdf:dest (section.14.1) [@thispage /XYZ @xpos @ypos]ŸÌ14.1Ž‘,ÿüGeneral-purp•s3ose›™šauto“con guration˜functionsŽŸÿ²The–n5follo¸ãwing“general-purpšGose‘n4functions“can“b˜e“used“to‘n4disco•¸ãv“er–n5the“prop˜ertiesŽ¡of–ÆXyš¸ãour‘ÆYbuild“en˜vironmen˜t“in›ÆYa“fashion˜similar“to“the˜one“used“b¸ãy˜GNU‘Æ4autoGconfŽ¡toGol–Škyš¸ãou“ma˜y›ŠjbGe“familiar“with.‘It“is“recommended“that“these˜function“bGe“usedŽ¡from–UUan“appropriate“Èstatic.“²bloGc¸ãk“(see“Section“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.14) >> >> 4.14ïpdf:eann“for“more“information).Ž© á‘In–¾©order“to“use“the“folloš¸ãwing“general-purpGose“functions,‘ÜÌy˜ou“need“to“ha˜v˜e“theŽ¡lineŽŸ3†Èopen‘?ýconfigure/ConfigureŽŸ&¤²included–UUin“y¸ãour“ÈOMakefile“²or“ÈOMakeroot².ŽŸ'rï9pdf:dest (subsection.14.1.1) [@thispage /XYZ @xpos @ypos]Ÿ Í14.1.1Ž‘0ConfMsgChec king,‘€ConfMsgResultŽŸÕ¿ï;pdf:dest (fun:ConfMsgChecking) [@thispage /XYZ @xpos @ypos]ï9pdf:dest (fun:ConfMsgResult) [@thispage /XYZ @xpos @ypos]Ÿ ·ÈConfMsgChecking()Ž¡...Ž¡ConfMsgResult()ŽŸ3†²The–8ãÈConfMsgChecking“²function“output“message“of“the“form“È---–?ýChecking“...‘xàÎwith-Ž¡out‘-²an¸ãy›)Utrailing–)Vnewline.‘cAfter“the˜test˜adv•¸ãertized˜b“y‘)VÈConfMsgChecking˜²is˜pGer-Ž¡formed,–UUthe“ÈConfMsgResult“²function“should“bGe“used“to“output“the“result.ŽŸ â‘In–Û?certain›Û@cases“users˜maš¸ãy“w˜an˜t›Û@to“rede ne“these˜function“|˜for“example,Ž¡to–UUuse“a“di erenš¸ãt“output“formatting“and/or“to“cop˜y“the“messages“to“a“log“ le.ަ‘Example:ŽŽŸK’Çÿÿ215ŽŽŒ‹Ø ;¿ s\È ý®£8‘Yï0pdf:dest (page.216) [@thispage /XYZ @xpos @ypos]²216ÄCHAPTER‘8ã14.‘KÚA¸ãUTOCONFIGURA‘ÿ*ªTION–8›FUNCTIONS“AND“V‘þãARIABLESŽŽ 8G ýÚŸ ‘YÈstatic.‘?ý=ޤ ‘h¿÷ConfMsgChecking(which–?ýfoo“to“use)Ž¡‘h¿÷foo–?ý=“...Ž¡‘h¿÷ConfMsgResult($(foo))Ž‘YŸjï9pdf:dest (subsection.14.1.2) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ14.1.2Ž‘0ConfMsgW‘þàarn,‘€ConfMsgErrorŽ©ʨï7pdf:dest (fun:ConfMsgWarn) [@thispage /XYZ @xpos @ypos]ï8pdf:dest (fun:ConfMsgError) [@thispage /XYZ @xpos @ypos]Ÿ ª¬ÈConfMsgWarn()Ž¡ConfMsgError()ŽŸY}‘²Prinš¸ãt–æa“w˜arning“or“an“error“message“respGectiv˜ely‘ÿ*ª.‘L³ÈConfMsgError“²w˜ould“thenŽ¡abGort‘UUOMak¸ãe.ŽŸ 1/ï9pdf:dest (subsection.14.1.3) [@thispage /XYZ @xpos @ypos]ŸÍ14.1.3Ž‘0ConfMsgY–þàesNo,‘€ConfMsgF“oundަï8pdf:dest (fun:ConfMsgYesNo) [@thispage /XYZ @xpos @ypos]ï8pdf:dest (fun:ConfMsgFound) [@thispage /XYZ @xpos @ypos]Ÿ ª¬Èflag–?ý=“$(ConfMsgYesNo“Ž¡flag–?ý=“$(ConfMsgFound“ŽŸY}‘²The–ü×ÈConfMsgFound›üزfunction“expGects˜to“receiv¸ãe˜a“b•Go“olean˜ ag‘ü×describingŽ¡whether–eîa“test›eípreviously“announced“using“the˜ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgChecking) >> >> ÈConfMsgChecking“²functionïpdf:eann“foundŽ¡what–=¡it“w¸ãas“loGoking“for.‘ *¬ÈConfMsgFound“²will“output“the“appropriate“resultŽ¡(\found"–'Øor›'×\NOT‘'¢found")“using˜the“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgResult) >> >> ÈConfMsgResult“²functionïpdf:eann“and˜return“itsŽ¡argumen•¸ãt‘UUbac“k.Ž¡‘The–·%ÈConfMsgYesNo›·&²function“is˜similar,‘ÖÉoutputting“a˜simple“(\y¸ães"˜or“\NO").ŽŸ±/ï9pdf:dest (subsection.14.1.4) [@thispage /XYZ @xpos @ypos]Ÿ €Í14.1.4Ž‘0T–þàryCompileC,›€T“ryLinkC,˜T“ryRunCަï7pdf:dest (fun:TryCompileC) [@thispage /XYZ @xpos @ypos]ï4pdf:dest (fun:TryLinkC) [@thispage /XYZ @xpos @ypos]ï3pdf:dest (fun:TryRunC) [@thispage /XYZ @xpos @ypos]Ÿ ª¬Èsuccess–?ý=“$(TryCompileC“)Ž¡success–?ý=“$(TryLinkC“)Ž¡success–?ý=“$(TryRunC“)ŽŸY}‘²Giv¸ãen–ʧthe“Îtext‘½²of“a“C‘ʉprogram,‘çûthe“ÈTryCompileC²,“ÈTryLinkC²,“and“ÈTryRunCŽ¡²functions–8©w¸ãould›8ªtry“to˜compile“/˜compile“and˜link“/“compile,‘>flink,–>eand˜run,“theŽ¡givš¸ãen– Dprogram“and“return“a“b•Go“olean‘ E ag– Dindicating“whether“the“attempt“w˜asŽ¡successful.Ž¡‘ÈTryCompileC›‘)²will–‘8use“the‘‘9ïdpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:CC) >> >> ÈCCïpdf:eann²,“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:CFLAGS) >> >> ÈCFLAGSïpdf:eann˜²and“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:INCLUDES) >> >> ÈINCLUDESïpdf:eann˜²v‘ÿqÇariables“to“run‘‘9the“CŽ¡compiler.‘yoÈTryLinkC–Wá²and›WãÈTryRunC“²will˜also–Wâuse“the˜ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (var:LDFLAGS) >> >> ÈLDFLAGS‘Wá²v‘ÿqÇariableïpdf:eann“to˜run“theŽ¡C‘~compiler›~#and‘~"link•¸ãer.‘ì0Ho“w“ev“er,‘ˆVthe˜ ags‘~"lik“e˜È/WX²,˜È-Werror‘~"²and˜È-warn-errorŽ¡²will–UUbšGe“not“b˜e“passed“to“the“compiler,“ev¸ãen“if“they“o˜ccur“in“ÈCFLAGS².Ž¡‘These–%{functions›%zare“silen¸ãt“and“should˜normally“bGe“used“with˜an“appropriateŽ¡ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgChecking) >> >> ÈConfMsgCheckingïpdf:eann‘UUµ:–ª¨:“:Ž‘UQïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgResult) >> >> ÈConfMsgResultïpdf:eann².ŽŸjï9pdf:dest (subsection.14.1.5) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍ14.1.5Ž‘0RunCProgަï4pdf:dest (fun:RunCProg) [@thispage /XYZ @xpos @ypos]Ÿ ª¬Èoutput–?ý=“$(RunCProg“)ŽŸY}‘RunCProg–‰,²is“similar“to“the“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:RunCProg) >> >> ÈRunCProg“²functionïpdf:eann,‘Ö"except“that“it“returns“theŽ¡output––÷of“the›–øfunction“(will“return“Èfalse˜²if“the“program“fails˜to“compile“orŽ¡run).ŽŽŽŒ‹Ù DM s\È ý®£8‘#ï0pdf:dest (page.217) [@thispage /XYZ @xpos @ypos]Ä14.2.‘ÇTRANSLA‘ÿ*ªTING–UUÐAUTOCONF“ÄSCRIPTS’‡n?²217ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.14.1.6) [@thispage /XYZ @xpos @ypos]Ÿ Í14.1.6Ž‘0Chec• kCHeader,‘€V‘þàerb`oseChec“kCHeaderŽ©ô%ï8pdf:dest (fun:CheckCHeader) [@thispage /XYZ @xpos @ypos]ï?pdf:dest (fun:VerboseCheckCHeader) [@thispage /XYZ @xpos @ypos]Ÿ ÚÛÈsuccess–?ý=“$(CheckCHeader“)ޤ success–?ý=“$(VerboseCheckCHeader“)ŽŸÀ¼‘²Use– the› ïmpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:TryCompileC) >> >> ÈTryCompileC‘ý²functionïpdf:eann“to˜c•¸ãhec“k‘ whether˜y“our– C‘ýcompiler˜can“loGcateŽ¡and–3ÎprošGcess‘3Ïthe“sp˜eci ed›3Ïheaders“ les.‘fšWill˜incude“Ș²bGefore“includingŽ¡the–UUheader“ les.ŽŸ 0.‘Both–´’functions“return“a“b•Go“olean–´’v‘ÿqÇalue.‘<1The“ÈCheckCHeader“²function“is“silen¸ãt;Ž¡the–8ãÈVerboseCheckCHeader“²function“will“use“the“ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgChecking) >> >> ÈConfMsgCheckingïpdf:eann“²and“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgResult) >> >> ÈConfMsgResultïpdf:eannŽ¡²functions–UUto“describGe“the“test“and“the“outcome.ŽŸ 0/‘Example:ŽŸÀ¼Èstatic.‘?ý=Ž¡‘¿÷NCURSES_H_AVAILABLE–?ý=“$(VerboseCheckCHeader“ncurses.h)ŽŸÁ6ï9pdf:dest (subsection.14.1.7) [@thispage /XYZ @xpos @ypos]Ÿ <£Í14.1.7Ž‘0Chec• kCLib,‘€V‘þàerb`oseChec“kCLibަï5pdf:dest (fun:CheckCLib) [@thispage /XYZ @xpos @ypos]ï,“)Ž¡success–?ý=“$(VerboseCheckCLib“,“)ŽŸÀ»‘²Use–ñËthe›ñÊïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:TryLinkC) >> >> ÈTryLinkC‘ñ±²functionïpdf:eann“to˜c•¸ãhec“k–ñËwhether“y¸ãour˜C‘ñ±compiler“and˜link¸ãer“canŽ¡ nd–i£the“named›i¤functions“when“linking“with˜the“named“libraries.‘®²Will“pass“theŽ¡È–UU²to“the“compiler“using“the“È-l“² ag.Ž© 0/‘Both–™˜functions“return›™™a“b•Go“olean–™˜v‘ÿqÇalue.‘33The˜ÈCheckCLib“²function“is“silen¸ãt;‘Ø-theŽ¡ÈVerboseCheckCHeader–8ã²function“will“use“the“ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgChecking) >> >> ÈConfMsgCheckingïpdf:eann“²and“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgResult) >> >> ÈConfMsgResultïpdf:eannŽ¡²functions–UUto“describGe“the“test“and“the“outcome.ަ‘Example:ŽŸÀ»Èstatic.‘?ý=Ž¡‘ÿôNCURSES_LIB_AVAILABLE–?ý=“$(VerboseCheckCLib“ncurses,“initscr“setupterm“tigetstr)ŽŸŽï9pdf:dest (subsection.14.1.8) [@thispage /XYZ @xpos @ypos]Ÿ ÷KÍ14.1.8Ž‘0Chec kProgŽŸô%ï5pdf:dest (fun:CheckProg) [@thispage /XYZ @xpos @ypos]Ÿ ÚÛÈsuccess–?ý=“$(CheckProg“)ަ‘²Chec¸ãks–‰whether›ˆthe“program“Ș²exists“in“y¸ãour“path.‘ ÊbWill˜use“theŽ¡ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgChecking) >> >> ÈConfMsgCheckingïpdf:eann–3b²and›3cïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgResult) >> >> ÈConfMsgResultïpdf:eann“²functions˜to“describGe˜the“test˜and“theŽ¡outcome.ŽŸá8ï4pdf:dest (section.14.2) [@thispage /XYZ @xpos @ypos]Ÿ0/Ì14.2Ž‘,ÿüT‘þ¦franslating‘ŸÿÏautoconf‘ffÌscriptsŽŸ@DzSome–ëÀof›ë¿the“functions˜describšGed“ab˜o•¸ãv“e›ëÀare‘ë¿v“ery˜similar˜to–ë¿the˜ones“presen¸ãt˜inŽ¡Èautoconf².‘qÇBeloš¸ãw–UUis“a“brief“translation“table“for“suc˜h“functions.ŽŸ‘ÈAC‘¡E‰ff&fŽ–Ç«MSG‘¡E‰ff&fŽ“CHECKING–UU²is“v¸ãery“similar“to“ïqpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgChecking) >> >> ÈConfMsgChecking“²functionïpdf:eann.ŽŸÀ»‘ÈAC‘¡E‰ff&fŽ–Ç«MSG‘¡E‰ff&fŽ“RESULT–UU²is“v¸ãery“similar“to“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgResult) >> >> ÈConfMsgResult“²functionïpdf:eann.ŽŽŽŒ‹Ú TÞ s\È ý®£8‘Yï0pdf:dest (page.218) [@thispage /XYZ @xpos @ypos]²218ÄCHAPTER‘8ã14.‘KÚA¸ãUTOCONFIGURA‘ÿ*ªTION–8›FUNCTIONS“AND“V‘þãARIABLESŽŽ 8G ýÚŸ ‘^ÈAC‘¡E‰ff&fŽ–Ç«MSG‘¡E‰ff&fŽ“WARN–UU²is“v¸ãery“similar“to“ïmpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgWarn) >> >> ÈConfMsgWarn“²functionïpdf:eann.ޤ"Œ‘^ÈAC‘¡E‰ff&fŽ–Ç«MSG‘¡E‰ff&fŽ“ERROR–UU²is“v¸ãery“similar“to“ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:ConfMsgError) >> >> ÈConfMsgError“²functionïpdf:eann.Ž¡‘^ÈAC‘¡E‰ff&fŽ–Ç«TRY‘¡E‰ff&fŽ“COMPILE›Cš²is–Dsomewhat“similar“to“ïmpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:TryCompileC) >> >> ÈTryCompileC˜²functionïpdf:eann,‘¿Ëexcept“theޤ ‘rïmpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:TryCompileC) >> >> ÈTryCompileC‘7²functionïpdf:eann–Greturns“a“b•Go“olean–Gv‘ÿqÇalue“and‘Fonly“w¸ãorks“for“ÈC².“Sim-Ž¡‘rilarly‘ÿ*ª,ŽŸ"Œ‘^ÈAC‘¡E‰ff&fŽ–Ç«TRY‘¡E‰ff&fŽ“LINK–UU²is“approš¸ãximated“b˜y“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:TryLinkC) >> >> ÈTryLinkC“²functionïpdf:eann,“andŽŸ"‘^ÈAC‘¡E‰ff&fŽ–Ç«TRY‘¡E‰ff&fŽ“RUN–UU²is“approš¸ãximated“b˜y“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:TryRunC) >> >> ÈTryRunC“²functionïpdf:eann.Ž‘YŸo×ï4pdf:dest (section.14.3) [@thispage /XYZ @xpos @ypos]ŸÏ¿Ì14.3Ž‘,ÿüPrede ned–ffcon guration“testsŽŸ÷.²A‘âdn•¸ãum“bGer–âof“con guration›â€tests“are“already“included“in“the“standard˜library‘ÿ*ª.‘KInŽ¡order–Äáto›Äâuse“them˜in“y¸ãour˜pro‘Ž8ject,‘áÅsimply˜Èopen“²(see˜Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.7) >> >> 4.7ïpdf:eann)˜the“correspGond-Ž¡ing–zObuild“ le“in“yš¸ãour“ÈOMakefile“²and“the“tests“will“run“the“ rst“time“OMak˜e“isŽ¡executed.‘oKNote›Mãthat–Mâit“is“not˜a“problem“to“Èopen˜²these“ les“from“more˜than“oneŽ¡place–UUin“yš¸ãour“pro‘Ž8ject“|“if“y˜ou“do“that,“the“test“will“still“run“only“once.Ž©-ï9pdf:dest (subsection.14.3.1) [@thispage /XYZ @xpos @ypos]Ÿ ÜÍ14.3.1Ž‘0NCurses–€library“con gurationŽŸ…g²Add–Ù¡Èopen‘?ýconfigure/ncurses“²line“to“y¸ãour‘Ù¢ÈOMakefile“²to“get“access“to“theŽ¡follo¸ãwing–UUautoGcon guration“v‘ÿqÇariables.ŽŸ,ï4pdf:dest (section*.112) [@thispage /XYZ @xpos @ypos]ï=pdf:dest (var:NCURSES_AVAILABLE) [@thispage /XYZ @xpos @ypos]Ÿ ÜÇNCURSES‘°¡‰ffs4Ž‘#ÕA–þ¸äV“AILABLE‘ ²A‘8rb•Go“olean–8y ag‘8xthat“w¸ãould“bšGe“set“when“b˜oth“theŽ¡Ècurses.h–UU²header,“the“Èterm.h“²header,“and“the“Èncurses“²library“v¸ãery“found.ަï4pdf:dest (section*.113) [@thispage /XYZ @xpos @ypos]ïDpdf:dest (var:NCURSES_TERMH_IN_NCURSES) [@thispage /XYZ @xpos @ypos]Ÿ ÜÇNCURSES‘°¡‰ffs4Ž–#ÕTERMH‘°¡‰ffs4Ž“IN‘°¡‰ffs4Ž“NCURSES‘ ²A‘4:b•Go“olean–4µ ag“that“w¸ãould‘4¶bGe“setŽ¡when–UUÈterm.h“²has“to“bGe“included“as“È“²instead“of“Ȳ.ŽŸø¹ï4pdf:dest (section*.114) [@thispage /XYZ @xpos @ypos]ï:pdf:dest (var:NCURSES_CFLAGS) [@thispage /XYZ @xpos @ypos]Ÿ 3PÇNCURSES‘°¡‰ffs4Ž‘#ÕCFLA®9GS‘ ²The–FQÈCFLAGS‘F ²to›FRuse“when˜compiling“ncurses˜coGde.‘qWillŽ¡include–8ãÈ-DNCURSES‘8›²and“È-DTERMH_IN_NCURSES²,“respGectiv¸ãely“when“ÈNCURSES_AVAILABLEŽ¡²and–UUÈNCURSES_TERMH_IN_NCURSES“²are“true.ŽŸòï4pdf:dest (section*.115) [@thispage /XYZ @xpos @ypos]ï9pdf:dest (var:NCURSES_CLIBS) [@thispage /XYZ @xpos @ypos]Ÿ ÇNCURSES‘°¡‰ffs4Ž‘#ÕCLIBS‘ ²The–~<ÈLDFLAGS‘}ð²to›~=use“when˜linking“ncurses˜coGde.‘ì}WillŽ¡normally–akcon¸ãtain“È-lncurses›aj²when“ncurses“is“found“and˜remain“empt¸ãy“otherwise.ŽŸ,ï9pdf:dest (subsection.14.3.2) [@thispage /XYZ @xpos @ypos]Ÿ ÜÍ14.3.2Ž‘0ReadLine–€library“con gurationŽŸ…g²Add–S;Èopen‘?ýconfigure/readline“²line“to“y¸ãour“ÈOMakefile“²to“get“access“to“theŽ¡follo¸ãwing–UUautoGcon guration“v‘ÿqÇariables.ަï4pdf:dest (section*.116) [@thispage /XYZ @xpos @ypos]ï>pdf:dest (var:READLINE_AVAILABLE) [@thispage /XYZ @xpos @ypos]Ÿ ÜÇREADLINE‘°¡‰ffs4Ž‘#ÕA–þ¸äV“AILABLE‘ ²A‘Ž]b•Go“olean›ޝ ag–Ž®that“w¸ãould“bGe˜set“when“bGothŽ¡the›*·Èreadline/readline.h–*¸²header,‘`the“Èreadline/history.h˜²header,‘`and˜theŽ¡Èreadline–UU²library“v¸ãery“found.ŽŽŽŒ‹Û em s\È ý®£8‘#ï0pdf:dest (page.219) [@thispage /XYZ @xpos @ypos]Ä14.3.‘ÇPREDEFINED–UUCONFIGURA‘ÿ*ªTION“TESTS‘kq²219ŽŽ 8G ýÚ‘#ï4pdf:dest (section*.117) [@thispage /XYZ @xpos @ypos]ï8pdf:dest (var:READLINE_GNU) [@thispage /XYZ @xpos @ypos]Ÿ ÇREADLINE‘°¡‰ffs4Ž‘#ÕGNU‘ ²A›Ü­b•Go“olean–ÜÌ ag“that“w¸ãould“bGe“set“when“the“GNU˜v¸ãersionޤ of–UUthe“readline“library“is“found“(as“oppGosed“to“the“BSD“one).ŽŸ~6ï4pdf:dest (section*.118) [@thispage /XYZ @xpos @ypos]ï;pdf:dest (var:READLINE_CFLAGS) [@thispage /XYZ @xpos @ypos]Ÿ €ÇREADLINE‘°¡‰ffs4Ž‘#ÕCFLA®9GS‘ ²The–8eÈCFLAGS‘8*²to“use“when‘8dcompiling“readline“coGde.Ž¡Will–8ãinclude“È-DREADLINE_ENABLED‘8›²and“È-DREADLINE_GNU²,“respGectiv¸ãely“when“ÈREADLINE_AVAILABLEŽ¡²and–UUÈREADLINE_GNU“²are“true.ŽŸñÂï4pdf:dest (section*.119) [@thispage /XYZ @xpos @ypos]ï:pdf:dest (var:READLINE_CLIBS) [@thispage /XYZ @xpos @ypos]Ÿ tÇREADLINE‘°¡‰ffs4Ž‘#ÕCLIBS‘ ²The–•®ÈLDFLAGS‘•²to“use“when“linking“readline“coGde.‘2ÒWillŽ¡normally–R®con¸ãtain“È-lncurses‘?ý-lreadline“²when“readline“is“found“and“remainŽ¡empt¸ãy‘UUotherwise.Ž©ïýï9pdf:dest (subsection.14.3.3) [@thispage /XYZ @xpos @ypos]Ÿ 9Í14.3.3Ž‘0Snprin tf‘€con gurationŽŸuT²Add–S;Èopen‘?ýconfigure/snprintf“²line“to“y¸ãour“ÈOMakefile“²to“get“access“to“theŽ¡follo¸ãwing–UUautoGcon guration“v‘ÿqÇariables.ަï4pdf:dest (section*.120) [@thispage /XYZ @xpos @ypos]ï>pdf:dest (var:SNPRINTF_AVAILABLE) [@thispage /XYZ @xpos @ypos]Ÿ 9ÇSNPRINTF‘°¡‰ffs4Ž‘#ÕA–þ¸äV“AILABLE‘ ²A‘8›b•Go“olean–8ã ag“telling“whether“the“snprin¸ãtf“func-Ž¡tion–UUis“a¸ãv‘ÿqÇailable“in“the“standard“C“library‘ÿ*ª.ŽŽŽŒ‹Ü w2 s\È ý®£8‘Yï0pdf:dest (page.220) [@thispage /XYZ @xpos @ypos]²220ÄCHAPTER‘8ã14.‘KÚA¸ãUTOCONFIGURA‘ÿ*ªTION–8›FUNCTIONS“AND“V‘þãARIABLESŽŽ 8G ýÚŽŽŒ‹Ý }þ s\È ý®£8‘#ï0pdf:dest (page.221) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (chapter.15) [@thispage /XYZ @xpos @ypos]ŸUÊChapter‘Ç 15ŽŸ2ÆThe– T{OSH“shellŽŸ4²OMakš¸ãe–Qalso“includes“a“standalone“command-line‘Q in˜terpreter“Èosh“²that“can“bGeޤ used–²–as›²•an“in•¸ãteractiv“e˜shell.‘‰‰The˜shell–²–uses˜the“same˜syn•¸ãtax,‘Éæand˜pro“vides‘²–theŽ¡same–UUfeatures“on“all“platforms“Èomake“²suppGorts,“including“Win32.ŽŸŸ§ï4pdf:dest (section.15.1) [@thispage /XYZ @xpos @ypos]Ÿ9Ì15.1Ž‘,ÿüStartupŽŸç²On–ãŽstartup,‘Èosh›ã²reads“the“ le“È~/.oshrc“²if“it˜exists.‘rThe“syn¸ãtax“of˜this“ le“isŽ¡the–UUsame“as“an“ÈOMakefile².‘qÇThe“folloš¸ãwing“additional“v‘ÿqÇariables“are“signi can˜t.ŽŸŒï4pdf:dest (section*.121) [@thispage /XYZ @xpos @ypos]ï2pdf:dest (var:prompt) [@thispage /XYZ @xpos @ypos]Ÿ 9Çprompt‘ ²The–yÈprompt›z²v‘ÿqÇariable“spGeci es˜the“command-line˜prompt.‘W~It“can˜bGe“aŽ¡simple‘UUstring.ޤ»ù‘ÿôÈprompt–?ý=“osh>Ž¡‘²Or–UUyš¸ãou“ma˜y“c˜hoGose“to“de ne“it“as“a“function“of“no“argumen˜ts.ŽŸ»ø‘ÿôÈprompt()‘?ý=Ž© ‘)ÿèreturn–?ý$"<$(USER):$(HOST)“$(homename“$(CWD))>"Ž¡‘²An–UUexample“of“the“latter“prompt“is“as“follo¸ãws.Ž¡‘ÿôÈcd“links/omakeަ‘ÿôŽ¡‘²If–§°yš¸ãou‘§±include“an˜y“"in˜visible"›§±text“in“the˜prompt“(suc¸ãh“as˜v‘ÿqÇarious“terminalަescapšGe–>sequences),‘vPthey“m¸ãust‘>Žb˜e“wrapp˜ed›>Žusing“the˜ïrpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:prompt-invisible) >> >> Èprompt-invisible“²functionïpdf:eann.ަF‘ÿ*ªor–pexample,‘ žto“create‘oa“bšGold“prompt“on“terminals“that“supp˜ort‘oit,‘ žy¸ãou“can“useަthe‘UUfollo¸ãwing.ŽŸ/ú‘ÿôÈprompt‘?ý=ަ‘$¿ëbold-begin–?ý=“$(prompt-invisible“$(tgetstr“bold))ަ‘$¿ëbold-end–?ý=“$(prompt-invisible“$(tgetstr“sgr0))ަ‘$¿ëvalue‘?ý$(bold-begin)$"osh>"$(bold-end)ŽŽŸK’Çÿÿ²221ŽŽŒ‹Þ ~Ì s\È ý®£8‘Yï0pdf:dest (page.222) [@thispage /XYZ @xpos @ypos]²222’®N$ÄCHAPTER–UU15.‘ÇTHE“OSH“SHELLŽŽ 8G ýÚ‘Yï4pdf:dest (section*.122) [@thispage /XYZ @xpos @ypos]ï5pdf:dest (var:ignoreeof) [@thispage /XYZ @xpos @ypos]Ÿ Çignoreeof‘ ²If–½‹the›½ŒÈignoreeof“²is˜Ètrue²,‘™then“Èosh˜²will“not˜exit“on˜a“terminalޤ end-of- le–UU(usually“È^D“²on“Unix“systems).ŽŸ‘Äï4pdf:dest (section.15.2) [@thispage /XYZ @xpos @ypos]Ÿ€Ì15.2Ž‘,ÿüAliasesŽŸç²Command–Óaliases›Òare“de ned˜b¸ãy“adding˜functions“to˜the“ÈShell.˜²ob‘Ž8ject.‘}@TheŽ¡follo¸ãwing–UUalias“adds“the“È-AF“²option“to“the“Èls“²command.Ž©‘ÿôÈShell.‘?ý+=Ž¡‘$¿ëls(argv)‘?ý=Ž¡‘4â"ls"–?ý-AF“$(argv)ަ‘²Quoted–°ycommands“do‘°znot“undergo“alias“expansion.‘ƒ4The“quotation“È"ls"Ž¡²prev•¸ãen“ts–UUthe“alias“from“bGeing“recursiv¸ãe.ŽŸ‹ï4pdf:dest (section.15.3) [@thispage /XYZ @xpos @ypos]Ÿ9Ì15.3Ž‘,ÿüIn•ŒÌteractiv“e‘ffsyn“taxŽŸç²The›_Ðin•¸ãteractiv“e˜syn“tax–_Ñin˜Èosh˜²is˜the“same˜as˜the˜syn¸ãtax“of˜an˜ÈOMakefile²,‘bowithŽ¡one–&Bexception›&Cin“regard“to“inden¸ãtation.‘bThe˜line“bGefore“an“inden•¸ãted˜bloGc“k‘&Bm“ustŽ¡ha•¸ãv“e–íƒa“colon“at›í‚the“end“of“the“line.‘:PA‘í\bloGc¸ãk“is“terminated“with“a˜È.“²on“a“lineŽ¡bš¸ãy–òÁitself,‘or“È^D².“In‘òÂthe“follo˜wing›òÂexample,‘the“ rst˜line“Èif‘?ýtrue“²has˜no“b•Go“dy‘ÿ*ª,Ž¡bGecause–UUthere“is“no“colon.ަ‘¿÷È#–?ýThe“following“if“has“no“bodyŽ¡‘¿÷osh>if‘?ýtrueŽ¡‘¿÷#–?ýThe“following“if“has“a“bodyŽ¡‘¿÷osh>if‘?ýtrue:Ž¡‘¿÷if>‘$¿ëif‘?ýtrue:Ž¡‘¿÷if>‘4âprintln(Hello‘?ýworld)Ž¡‘¿÷if>‘4â.Ž¡‘¿÷Hello‘?ýworldަ‘²Note–¡that›¢Èosh“²mak¸ães˜some“e ort“to˜moGdify“the“prompt˜while“in˜an“inden¸ãtedŽ¡b•Go“dy‘ÿ*ª,–UUand“it“auto-inden¸ãts“the“text.Ž¡‘The–UUcolon“signi er“is“also“allo•¸ãw“ed–UUin“ les,“although“it“is“not“required.ŽŽŽŒ‹ß †µ s\È ý®£8‘#ï0pdf:dest (page.223) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (appendix.A) [@thispage /XYZ @xpos @ypos]ŸU4?ÊApp‘¥ëendix‘Ç AŽŸ24>ÆSynopsisŽŸ5жÈomake–h ²[È-j‘?ý²]›h [È-k²]“[È-p²]˜[È-P²]‘gÎ[È-n²]˜[È-s²]“[È-S²]‘gÏ[È-w²]“[È-t²]˜[È-u²]“[È-U²]‘gÏ[È-R²]‘gÎ[È--verbose²]ޤ [È--project²]–8ã[È--depend²]“[È--progress²]“[È--print-status²]“[È--print-exit²]“[È--print-dependencies²]Ž¡[È--show-dependencies‘?ý²]–8ã[È--all-dependencies²]“[È--verbose-dependencies²]Ž¡[È--force-dotomake²]–Wî[È--dotomake‘?ý²]‘Wí[È--flush-includes²]“[È--configure²]Ž¡[È--save-interval‘?ý²]–8ã[È--install²]“[È--install-all²]“[È--install-force²]Ž¡[È--version²]–8ã[È--absname²]“[È--output-normal²]“[È--output-postpone²]“[È--output-only-errors²]Ž¡[È--output-at-end²]‘UUÈfilename...‘qDz[Èvar-definition...²]ŽŸrµï3pdf:dest (section.A.1) [@thispage /XYZ @xpos @ypos]Ÿ´>ÌA.1Ž‘)†General‘ffusageŽŸHV²F‘ÿ*ªor–k’BoGolean“options›k“(for“example,–±!È-s²,“È--progress²,‘±"etc.)‘´~the˜option–k’can“in-Ž¡clude–u€a‘upre x“È--no²,‘½Œwhicš¸ãh“in˜v˜erts›uthe“usual˜sense“of˜the“option.‘ÒJF‘ÿ*ªor“exam-Ž¡ple,‘‘²Nevš¸ãer–UUnot“prin˜t“commands“as“they“are“executed“(bGe“\silen˜t").ŽŸ_'ï8pdf:dest (subsection.A.2.2) [@thispage /XYZ @xpos @ypos]Ÿ ´?ÍA.2.2Ž‘,±ÇÑ-SŽ¡È-SŽŽŸK’Çÿÿ²223ŽŽŒ‹à Ž. s\È ý®£8‘Yï0pdf:dest (page.224) [@thispage /XYZ @xpos @ypos]²224’ͱ´ÄAPPENDIX‘UUA.‘ªªSYNOPSISŽŽ 8G ýÚŸ ‘h²Do–Gnot“prin¸ãt“commands“as“they‘Fare“executed“Îunless‘ðh²they“proGduce“outputޤ ‘Yand/or–UUfail.‘qÇThis“is“the“default.Ž‘YŸSÑï8pdf:dest (subsection.A.2.3) [@thispage /XYZ @xpos @ypos]Ÿ €ÍA.2.3Ž‘,±ÇÑ-wŽ©uTÈ-wŽ¡‘²Prin¸ãt–Ù!directory›Ù"information“in“Èmake“²format˜as“commands“are“executed.‘HaThisŽ¡is–Üomainly›Ünuseful“for˜editors“that“expGect˜Èmake²-st¸ãyle“directory˜information“forŽ¡determining–UUthe“loGcation“of“errors.ŽŸÅ—ï8pdf:dest (subsection.A.2.4) [@thispage /XYZ @xpos @ypos]Ÿ 9ÍA.2.4Ž‘,±ÇÑ--progressަÈ--progressŽ¡‘²Prin¸ãt– ’a› ‘progress“indicator.‘ —}This“option“is˜enabled“b¸ãy“default˜when“theŽ¡OMakš¸ãe's–­Ÿoutput“(Èstdout²)“is“on“a“terminal“and“disabled“b˜y“default“(except“onŽ¡Windoš¸ãws)–UUwhen“the“OMak˜e's“output“is“redirected.ŽŸSÑï8pdf:dest (subsection.A.2.5) [@thispage /XYZ @xpos @ypos]Ÿ €ÍA.2.5Ž‘,±ÇÑ--print-statusަÈ--print-statusŽ¡‘²Prin¸ãt–UUstatus“lines“(the“È+“²and“È-“²lines).ŽŸSÐï8pdf:dest (subsection.A.2.6) [@thispage /XYZ @xpos @ypos]Ÿ €ÍA.2.6Ž‘,±ÇÑ--print-exitަÈ--print-exitŽ¡‘²Prin¸ãt–UUtermination“coGdes“when“commands“complete.ŽŸŘï8pdf:dest (subsection.A.2.7) [@thispage /XYZ @xpos @ypos]Ÿ 9ÍA.2.7Ž‘,±ÇÑ--verboseަÈ--verboseŽ¡‘²Mak•¸ãe›8ãOMak“e˜v“ery˜v“erbGose.‘÷This˜option˜is˜equiv‘ÿqÇalen“t˜to˜È--no-S–?ý--print-status“--print-exit“VERBOSE=trueŽŸ ´ï8pdf:dest (subsection.A.2.8) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍA.2.8Ž‘,±ÇÑ--output-normalަÈ--output-normalŽ¡‘²As–CŸrule“commands“are“executed,‘¿1relaš¸ãy‘C their“output“to“the“OMak˜e“out-Ž¡put–Arighš¸ãt“a˜w˜a˜y‘ÿ*ª.‘ 4ÚThis“is“enabled“b˜y“default,‘»ñunless“È--output-postpone“²orŽ¡È--output-only-errors–UU²is“enabled.ŽŸ µï8pdf:dest (subsection.A.2.9) [@thispage /XYZ @xpos @ypos]Ÿ ÇÍA.2.9Ž‘,±ÇÑ--output-postponeަÈ--output-postponeŽ¡‘²When–Õa›ÕŽrule“ nishes,‘5œprin¸ãt“the˜output“as˜a“single˜bloGc¸ãk.‘òtThis˜is“usefulŽ¡in–jÐcom¸ãbination›jÏÈ-j“²option“(see˜Section“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.3.12) >> >> A.3.12ïpdf:eann),‘°.where“the“output˜of“m¸ãultipleŽ¡subpro•Gcesses›/ can‘/ b“e˜garbled.‘eThe˜div•¸ãersion˜is‘/ prin“ted˜as˜a˜single‘/ coheren“t˜unit.Ž¡‘Note–8ãthat“enabling“È--output-postpone“²will“b¸ãy“default“disable“the“È--output-normalŽ¡²option.‘“This–[¸mighš¸ãt“bGe“problematic“if“y˜ou“ha˜v˜e“a‘[·command“that“decides“to“ask“forŽŽŽŒ‹á •ÿ s\È ý®£8‘#ï0pdf:dest (page.225) [@thispage /XYZ @xpos @ypos]ÄA.2.‘ÇOUTPUT‘UUCONTR¸ãOL’ÍøÓ²225ŽŽ 8G ýÚŸ ‘#in•¸ãteractiv“e–8ãinput.‘÷If“the“È--output-postpone“²is“enabled,‘qÇbut“the“È--output-normalޤ ‘#²is–кnot,‘ï“the“prompt›лof“suc¸ãh“a“command“will“not“bGe“visible˜and“it“ma¸ãy“bGe“hardŽ¡‘#to–+; gure›+:out“wh¸ãy˜the“build˜appGears“\stucš¸ãk".‘c¾Y‘ÿ*ªou“migh˜t›+:also“consider˜using“theŽ¡‘#È--progress–¤’² ag“(see“Section“ïnpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (subsection.A.2.4) >> >> A.2.4ïpdf:eann)“so“that‘¤‘yš¸ãou“can“see“when“the“build“is“activ˜e.Ž‘#ŸðÑï9pdf:dest (subsection.A.2.10) [@thispage /XYZ @xpos @ypos]Ÿ €ÍA.2.10Ž‘3qÇÑ--output-only-errorsŽ©uTÈ--output-only-errorsŽ¡‘²Similar–eWto“È--output-postpone²,‘•Wexcept“that‘eVthe“p•Gostp“oned–eWoutput“from“com-Ž¡mands– that“w¸ãere“successful›Ÿwill“bGe“discarded.‘‹¨This“can˜bGe“useful“in“reducingŽ¡un•¸ãw“an“ted–UUoutput“so“that“yš¸ãou“can“concen˜trate“on“an˜y“errors.ŽŸb™ï9pdf:dest (subsection.A.2.11) [@thispage /XYZ @xpos @ypos]Ÿ 9ÍA.2.11Ž‘3qÇÑ--output-at-endަÈ--output-at-endŽ¡‘²If–—anš¸ãy“rules/commands‘—fail,‘½re-prin˜t“the“output“of“the‘—failed“commands“whenŽ¡OMak¸ãe–´“ nishes›´’the“build.‘€This˜is“espGecially˜useful“when˜an¸ãy“of“the˜È-k²,–ÌbÈ-p²,“orŽ¡È-P–UU²options“are“enabled.Ž¡‘This–mprogress˜bar“is“displa•¸ãy“edŽ¡‘so–Ãthat“yš¸ãou“kno˜w“when‘Ãthe“build“is“activ˜e.‘»Include“the‘Ã`Èp²'“option“if“y˜ouŽ¡‘w•¸ãan“t–UUto“turn“o “the“progress“bar“(for“example“Èomake–?ý-o“1p²).ŽŸ·˜Ç2ŽŽ‘ ¿þ²Equiv‘ÿqÇalen¸ãt–UUto“È--progress‘?ý--output-postponeަ‘²The–(9is“ev¸ãen›(:more“relaxed,‘\òoutput“from“successful˜commands“is“prin¸ãted.Ž¡‘This–UUis“often“useful“for“dein•¸ãterlea“ving–UUthe“output“when“using“È-j².ŽŽŽŒ‹â  O s\È ý®£8‘Yï0pdf:dest (page.226) [@thispage /XYZ @xpos @ypos]²226’ͱ´ÄAPPENDIX‘UUA.‘ªªSYNOPSISŽŽ 8G ýÚŸ ‘YÇWŽŽ‘i㊲Equiv‘ÿqÇalen¸ãt–UUto“È-wޤð‹‘YÇwŽŽ‘fN6²Equiv‘ÿqÇalen¸ãt–UUto“È--no-wŽ©ðŠ‘YÇPŽŽ‘eÜo²Equiv‘ÿqÇalen¸ãt–UUto“È--progressŽ¡‘YÇpŽŽ‘dcŒ²Equiv‘ÿqÇalen¸ãt–UUto“È--no--progressŽ¡‘YÇXŽŽ‘f±Ä²Equiv‘ÿqÇalen¸ãt–UUto“È--print-exitަ‘YÇxŽŽ‘dŲEquiv‘ÿqÇalen¸ãt–UUto“È--no-print-exitŽ¡‘YÇSŽŽ‘dcŒ²Equiv‘ÿqÇalen¸ãt–UUto“È-Sަ‘YÇsŽŽ‘b‰<²Equiv‘ÿqÇalen¸ãt–UUto“È--no-SŽ‘YŸT®ï3pdf:dest (section.A.3) [@thispage /XYZ @xpos @ypos]ŸJ\ÌA.3Ž‘)†Build‘ffoptionsŽŸ Äï8pdf:dest (subsection.A.3.1) [@thispage /XYZ @xpos @ypos]Ÿ oVÍA.3.1Ž‘,±ÇÑ-kŽŸÁ¯È-kŽ© <#‘²Do–0ænot›0åabGort“when“a“build˜command“fails;‘= con•¸ãtin“ue˜to–0æbuild“as“m•¸ãuc“h˜of‘0ætheޤ pro‘Ž8ject›O¶as–OµpGossible.‘oèThis“option˜is˜implied˜b¸ãy“bGoth˜È-p˜²and˜È-P‘O´²options.‘oçIn˜turn,Ž¡this–UUoption“w¸ãould“imply“the“È--output-at-end“²option.ŽŸˆ<ï8pdf:dest (subsection.A.3.2) [@thispage /XYZ @xpos @ypos]Ÿ ?ÍA.3.2Ž‘,±ÇÑ-nŽŸÁ®È-nަ‘²This–UUcan“bšGe“used“to“see“what“w¸ãould“happ˜en“if“the“pro‘Ž8ject“w¸ãere“to“b˜e“built.ŽŸAï8pdf:dest (subsection.A.3.3) [@thispage /XYZ @xpos @ypos]Ÿ J\ÍA.3.3Ž‘,±ÇÑ-pŽŸÁ¯È-pަ‘²W‘ÿ*ªatcš¸ãh–Æwthe‘Æx lesystem“for“c˜hanges,‘âÀand“con˜tin˜ue‘Æxthe“build“un˜til‘Æxit“succeeds.Ž¡If–N©this“option›Nªis“spGeci ed,‘OÿÈomake“²will“restart“the“build“whenev¸ãer˜source“ les“areŽ¡moGdi ed.‘qÇImplies‘UUÈ-k².ŽŸAï8pdf:dest (subsection.A.3.4) [@thispage /XYZ @xpos @ypos]Ÿ J\ÍA.3.4Ž‘,±ÇÑ-PŽŸÁ®È-Pަ‘²W‘ÿ*ªatcš¸ãh–Ëfthe“ lesystem“for“c˜hanges“forev˜er.‘ÓûIf“this“option“is“spGeci ed,‘èêÈomakeŽ¡²will–UUrestart“the“build“whenev¸ãer“source“ les“are“moGdi ed.‘qÇImplies“È-k².ŽŽŽŒ‹ã ®& s\È ý®£8‘#ï0pdf:dest (page.227) [@thispage /XYZ @xpos @ypos]ÄA.3.‘ÇBUILD‘UUOPTIONS’Þï²227ŽŽ 8G ýÚ‘#ï8pdf:dest (subsection.A.3.5) [@thispage /XYZ @xpos @ypos]Ÿ ÍA.3.5Ž‘,±ÇÑ-RŽŸ È-RŽ© _‘²Ignore–€the“curren¸ãt›directory“and“build“the“pro‘Ž8ject“from˜its“roGot“directory‘ÿ*ª.ޤ When–ÞÈomake“²is›Ýrun“in“a“subGdirectory“of˜a“pro‘Ž8ject“and“no˜explicit“targets“areŽ¡givš¸ãen–¶üon“the“command“line,‘Ö¨it“w˜ould“normally“only‘¶ýbuild“ les“within“the“curren˜tŽ¡directory–u’and›u‘its“subGdirectories“(more“precisely‘ÿ*ª,‘}¡it˜builds“all“the“È.DEFAULT‘u‰²tar-Ž¡gets–Ÿ$in›Ÿ#the“curren¸ãt˜directory“and˜its“subGdirectories).‘5 If“the˜È-R‘žö²option˜is“spGeci ed,Ž¡the–UUbuild“is“pšGerformed“as“if‘rÈomake“²w¸ãere“run“in“the“pro‘Ž8ject“ro˜ot.ަ‘In– !other“wš¸ãords,‘²Ówith“the“È-R‘  ²option,‘²Ôall“the“relativ˜e“targets‘  spGeci ed“on“theŽ¡command–Øàline“will“bGe“takš¸ãen“relativ˜e“to“the“pro‘Ž8ject“roGot“(instead“of“relativ˜eŽ¡to–|ñthe“curren¸ãt›|ðdirectory).‘è›When“no˜targets“are“giv¸ãen“on˜the“command“line,Ž¡all–Àthe›ÀŽÈ.DEFAULT‘Àr²targets“in˜the“pro‘Ž8ject“will˜bGe“built˜(regardless“of˜the“curren¸ãtŽ¡directory).ŽŸe–ï8pdf:dest (subsection.A.3.6) [@thispage /XYZ @xpos @ypos]Ÿ ßÍA.3.6Ž‘,±ÇÑ-tŽŸŸÈ-tŽŸ _‘²UpGdate–ß«the›߬Èomake“²database“to“force˜the“pro‘Ž8ject“to“bGe˜considered“up-to-date.ŽŸ×\ï8pdf:dest (subsection.A.3.7) [@thispage /XYZ @xpos @ypos]Ÿ m@ÍA.3.7Ž‘,±ÇÑ-UŽŸ È-Uަ‘²Do–l°not“trust“cac¸ãhed›l¯build“information.‘·ØThis“will“force˜the“en¸ãtire“pro‘Ž8ject“toŽ¡bGe‘UUrebuilt.ŽŸå–ï8pdf:dest (subsection.A.3.8) [@thispage /XYZ @xpos @ypos]Ÿ_ÍA.3.8Ž‘,±ÇÑ--dependŽŸ È--dependަ‘²Do–¼)not›¼(trust“cac¸ãhed“depGendency˜information.‘¦CThis˜will“force“ les˜to“bGeŽ¡rescanned–UUfor“depGendency“information.ŽŸ×\ï8pdf:dest (subsection.A.3.9) [@thispage /XYZ @xpos @ypos]Ÿ mAÍA.3.9Ž‘,±ÇÑ--configureŽŸŸÈ--configureަ‘²Re-run–:þÈstatic.›:ý²sections“of“the˜included“omak¸ãe“ les,‘@Binstead“of˜trusting“theŽ¡cac¸ãhed‘UUresults.ŽŸå–ï9pdf:dest (subsection.A.3.10) [@thispage /XYZ @xpos @ypos]Ÿ_ÍA.3.10Ž‘3qÇÑ--force-dotomakeŽŸ È--force-dotomakeަ‘²Alw•¸ãa“ys–UUuse“the“È$HOME/.omake“²for“the“È.omc“²cac¸ãhe“ les.ŽŽŽŒ‹ä µq s\È ý®£8‘Yï0pdf:dest (page.228) [@thispage /XYZ @xpos @ypos]²228’ͱ´ÄAPPENDIX‘UUA.‘ªªSYNOPSISŽŽ 8G ýÚ‘Yï9pdf:dest (subsection.A.3.11) [@thispage /XYZ @xpos @ypos]Ÿ ÍA.3.11Ž‘3qÇÑ--dotomakeޤÉÈ--dotomake‘?ýŽ© Õ‘²Use–É?the“spGeci ed›É@directory“instead“of“the“È$HOME/.omake˜²for“the“placemen¸ãtŽŸ of–UUthe“È.omc“²cac¸ãhe“ les.ŽŸ•µï9pdf:dest (subsection.A.3.12) [@thispage /XYZ @xpos @ypos]ŸÕÍA.3.12Ž‘3qÇÑ-jŽ¡È-j‘?ýަ‘²Run–©m¸ãultiple›©build“commands˜in“parallel.‘lÕThe“Ècount˜²spGeci es“a˜bGound“onޤ the›-n•¸ãum“bGer˜of‘-commands˜to˜run˜sim“ultaneously‘ÿ*ª.‘øüIn˜addition,‘cthe˜coun“t˜ma“yŽ¡spGecify–ø.serv¸ãers›ø-for“remote˜execution“of“commands˜in“the˜form“Èserver=count².Ž¡F‘ÿ*ªor–àëexample,‘CÐthe‘àêoption“È-j‘?ý2:small.host.org=1:large.host.org=4“²w¸ãouldŽ¡spGecify–GRthat›GQup“to“2˜jobs“can˜bšGe“executed“lo˜cally‘ÿ*ª,‘}R1“on“the‘GQserv¸ãer“Èsmall.host.orgŽ¡²and–û¡4“on–û Èlarge.host.org².‘d«Eacš¸ãh“remote–û¡serv˜er“m˜ust“use‘û the“same“ lesystemŽ¡loGcation–UUfor“the“pro‘Ž8ject.ަ‘Remote–pWexecution“is“currenš¸ãtly“an‘pXexpGerimen˜tal“feature.‘ÂÍRemote“ lesystemsŽ¡likš¸ãe–UUNFS“do“not“pro˜vide“adequate“ le“consistency“for“this“to“w˜ork.ޤ‡}ï9pdf:dest (subsection.A.3.13) [@thispage /XYZ @xpos @ypos]Ÿ ãÈÍA.3.13Ž‘3qÇÑ--print-dependenciesŽŸÉÈ--print-dependenciesަ‘²Prin¸ãt–UUdepGendency“information“for“the“targets“on“the“command“line.Ž¡ï9pdf:dest (subsection.A.3.14) [@thispage /XYZ @xpos @ypos]Ÿ ãÉÍA.3.14Ž‘3qÇÑ--show-dependenciesޤÉÈ--show-dependencies‘?ýŽŸ Õ‘²Prin¸ãt–UUdepGendency“information“Îif‘sé²the“Ètarget“²is“built.ŽŸΚï9pdf:dest (subsection.A.3.15) [@thispage /XYZ @xpos @ypos]Ÿ œ¬ÍA.3.15Ž‘3qÇÑ--all-dependenciesŽ¡È--all-dependenciesަ‘²If–lÁeither›lÂof“the˜options“È--print-dependencies˜²or“È--show-dependenciesޤ ²is–:üin“e ect,‘tfprinš¸ãt“transitiv˜e–:ýdepGendencies.‘"¼That“is,‘teprin˜t“all–:üdepGendencies“re-Ž¡cursiv¸ãely‘ÿ*ª.‘kIf–ááneither“option“È--print-dependencies²,‘È--show-dependencies“²isŽ¡spGeci ed,–UUthis“option“has“no“e ect.ŽŸ‡}ï9pdf:dest (subsection.A.3.16) [@thispage /XYZ @xpos @ypos]Ÿ ãÈÍA.3.16Ž‘3qÇÑ--verbose-dependenciesŽŸÉÈ--verbose-dependenciesަ‘²If–lÁeither›lÂof“the˜options“È--print-dependencies˜²or“È--show-dependenciesŽ¡²is–‚Žin“e ect,‘ÍÜalso“prinš¸ãt“listings“for“eac˜h“depGendency‘ÿ*ª.‘ùsThe“output“is“v˜ery“v˜er-Ž¡bGose,‘$\consider–úôredirecting“to“a–úõ le.‘b¤If“neither–úôoption“È--print-dependencies²,Ž¡È--show-dependencies–UU²is“spGeci ed,“this“option“has“no“e ect.ŽŽŽŒ‹å ¾  s\È ý®£8‘#ï0pdf:dest (page.229) [@thispage /XYZ @xpos @ypos]ÄA.4.‘ÇADDITIONAL‘UUOPTIONS’¼UA²229ŽŽ 8G ýÚ‘#ï9pdf:dest (subsection.A.3.17) [@thispage /XYZ @xpos @ypos]Ÿ ÍA.3.17Ž‘3qÇÑ--installޤZDÈ--installŽ© {‘²Install–™Ldefault›™K les“ÈOMakefile“²and˜ÈOMakeroot“²in¸ãto“the˜curren¸ãt“directory‘ÿ*ª.ŽŸ Y‘ÿ*ªou–UUwš¸ãould“t˜ypically“do“this“to“start“a“pro‘Ž8ject“in“the“curren˜t“directory‘ÿ*ª.ŽŸŸï9pdf:dest (subsection.A.3.18) [@thispage /XYZ @xpos @ypos]Ÿ ‰<ÍA.3.18Ž‘3qÇÑ--install-allŽ¡È--install-allަ‘²In–Yõaddition›Yôto“installing˜ les“ÈOMakefile˜²and“ÈOMakeroot²,‘Ûinstall“defaultޤ ÈOMakefile²s–M inš¸ãto“eac˜h“subGdirectory“of“the“curren˜t‘M directory‘ÿ*ª.‘XæÈcvs²(1)“rules“areŽ¡used–'for›( ltering“the“subGdirectory˜list.‘ZbF‘ÿ*ªor“example,‘1ÈOMakefile²s“are˜not“copiedŽ¡in¸ãto–UUdirectories“called“ÈCVS²,“ÈRCCS²,“etc.ŽŸ ï9pdf:dest (subsection.A.3.19) [@thispage /XYZ @xpos @ypos]Ÿ ‰<ÍA.3.19Ž‘3qÇÑ--install-forceŽŸZDÈ--install-forceަ‘²Normally‘ÿ*ª,‘2\Èomake–'²will›(prompt“bGefore˜it“o•¸ãv“erwrites˜an“y‘'existing‘)µÈOMakefile².Ž¡If–UUthis“option“is“givš¸ãen,“all“ les“are“forcibly“o˜v˜erwritten“without“prompting.ŽŸŸï9pdf:dest (subsection.A.3.20) [@thispage /XYZ @xpos @ypos]¤ ‰<ÍA.3.20Ž‘3qÇÑ--absnameŽŸZDÈ--absnameަ‘²Filenames–UUshould“expand“to“absolute“pathnames.ަ‘ÇN.B.–UU²This“is“an“expGerimenš¸ãtal“option.‘qÇIt“ma˜y“bGecome“deprecated.ŽŸ ï9pdf:dest (subsection.A.3.21) [@thispage /XYZ @xpos @ypos]¡ÍA.3.21Ž‘3qÇÑvariable‘,ÍdefinitionŽŸZDÈname=[value]ަ‘omake–8ã²v‘ÿqÇariables“can“also“bGe“de ned“on“the“command“line“in“the“form“Èname=value².ޤ F‘ÿ*ªor–¦example,‘º2the“ÈCFLAGS‘¥ñ²v‘ÿqÇariable›¦migh¸ãt“bGe˜de ned“on˜the“command˜line“withŽ¡the–UUargumen¸ãt“ÈCFLAGS="-Wall‘?ý-g"².ŽŸ\Jï3pdf:dest (section.A.4) [@thispage /XYZ @xpos @ypos]©BÌA.4Ž‘)†Additional‘ffoptionsŽŸÌ ²In–)Uaddition,‘2!Èomake›)T²suppGorts“a˜n•¸ãum“bGer–)Uof˜debugging“ ags˜on“the˜command“line.Ž¡Run–UUÈomake‘?ý--help“²to“get“a“summary“of“these“ ags.ŽŸ\Kï3pdf:dest (section.A.5) [@thispage /XYZ @xpos @ypos]¦ÌA.5Ž‘)†En•ŒÌvironmen“t‘ffv‘ÿ™ariablesŽŸ Qï8pdf:dest (subsection.A.5.1) [@thispage /XYZ @xpos @ypos]Ÿ{ÍA.5.1Ž‘,±ÇÑOMAKEFLAGSŽŸZD²If–úde nes,‘#Mthe›úÈOMAKEFLAGS‘ùñ²should“spGecify˜a“set˜of“options˜exactly“as˜they“areŽ¡spGeci ed–UUon“the“command“line.ŽŽŽŒ‹æ É/ s\È ý®£8‘Yï0pdf:dest (page.230) [@thispage /XYZ @xpos @ypos]²230’ͱ´ÄAPPENDIX‘UUA.‘ªªSYNOPSISŽŽ 8G ýÚ‘Yï8pdf:dest (subsection.A.5.2) [@thispage /XYZ @xpos @ypos]Ÿ ÍA.5.2Ž‘,±ÇÑOMAKELIBŽ©ÔX²If–4de ned,‘«Âthe“ÈOMAKELIB‘3˜²en•¸ãvironmen“t–4v‘ÿqÇariable“should‘4refer“to“the“installedޤ loGcation–òof›ñthe“OMak¸ãe˜standard“library‘ÿ*ª.‘$œThis“is˜the“directory˜that“con¸ãtainsŽ¡ÈPervasives.om–8ã²etc.‘÷On“a“Unix“system,‘qÇthis“is“often“È/usr/lib/omake“²or“È/usr/local/lib/omake²,Ž¡and–UUon“Win32“systems“it“is“often“Èc:\Program‘?ýFiles\OMake\lib².ŽŸ ¼œ‘If–ŽÀnot›ŽÁde ned,‘Èomake“²uses“the˜default“con gured“loGcation.‘ Y‘ÿ*ªou˜should“nor-Ž¡mally›UUlea•¸ãv“e˜this˜unset.ŽŸ/šï3pdf:dest (section.A.6) [@thispage /XYZ @xpos @ypos]ŸÊÕÌA.6Ž‘)†F‘þ¦functionsŽŸ ‰ƒï8pdf:dest (subsection.A.6.1) [@thispage /XYZ @xpos @ypos]Ÿ¼œÍA.6.1Ž‘,±ÇÑOMakeFlagsަ²The–¥WÈOMakeFlags›¥X²function“can˜bGe“used˜within“an“ÈOMakefile˜²to“moGdify˜the“setŽ¡of–Û©options.‘I9The“options“should“bšGe“sp˜eci ed“exactly“as‘Ûªthey“are“on“the“commandŽ¡line.‘dŸF‘ÿ*ªor–¦Hexample,‘º„if“yš¸ãou“w˜an˜t“some“spšGeci c‘¦Gpro‘Ž8ject“to“b˜e“silenš¸ãt‘¦Gand“displa˜y“aŽ¡progress–UUbar,“yš¸ãou“can“add“the“follo˜wing“line“to“y˜our“ÈOMakefile².ŽŸ¯ ‘ÿôÈOMakeFlags(-S‘?ý--progress)ŽŸòo‘²F‘ÿ*ªor–O’options›O“where“it“mak¸ães˜sense,‘P¹the“options˜are“scopGed“lik¸ãe˜v‘ÿqÇariables.‘oÛF‘ÿ*ªorŽ¡example,‘gÛif–0óyš¸ãou“w˜an˜t‘0ôOMak˜e“to‘0ôbGe“silen˜t“for›0ôa“single“rule˜(instead“of˜for“theŽ¡enš¸ãtire–UUpro‘Ž8ject),“y˜ou“can“use“scoping“the“restrict“the“range“of“the“option.ŽŸ¯ ‘ÿôÈsectionŽ¡‘)ÿè#–?ýDo“not“display“command“output“when“foo“is“constructedŽ¡‘)ÿèOMakeFlags(-S)Ž¡¡‘)ÿèfoo:‘?ýfeeŽ¡‘9¿ßecho–?ý"This“is“a“generated“file"“>“fooŽ¡‘9¿ßcat–?ýfee“>>“fooŽ¡‘9¿ßchmod–?ý555“fooŽŸ=Ôï3pdf:dest (section.A.7) [@thispage /XYZ @xpos @ypos]Ÿ¼›ÌA.7Ž‘)†Option‘ffpros3cessingŽŸF²When–UUÈomake“²is“in•¸ãv“ok“ed,–UUthe“options“are“proGcessed“in“the“follo¸ãwing“order.ŽŸ jÿï/pdf:dest (Item.13) [@thispage /XYZ @xpos @ypos]©‡p‘ 8ä1.ŽŽŽ‘All–(Loptions›(MspGeci ed“b¸ãy˜the“ÈOMAKEFLAGS‘(A²en•¸ãvironmen“t–(Lv‘ÿqÇariable˜are“de nedŽ¡‘globally‘ÿ*ª.ޤjÿï/pdf:dest (Item.14) [@thispage /XYZ @xpos @ypos]¦‘ 8ä2.ŽŽŽ‘All–UUoptions“from“the“command“line“are“de ned“globally‘ÿ*ª.Ž¡ï/pdf:dest (Item.15) [@thispage /XYZ @xpos @ypos]¦‘ 8ä3.ŽŽŽ‘An¸ãy– µindividual“calls› ´the“the“ÈOMakeFlags“²function“moGdify˜the“options“lo-ŽŸ ‘cally‘ÿ*ª.ŽŽŽŒ‹ç ÒÛ s\È ý®£8‘#ï0pdf:dest (page.231) [@thispage /XYZ @xpos @ypos]ÄA.8.‘Ç.OMAKER¸ãC’ø,²231ŽŽ 8G ýÚ‘#ï3pdf:dest (section.A.8) [@thispage /XYZ @xpos @ypos]Ÿ ÌA.8Ž‘)†.omakŒÌercŽŸç²If–ÎYthe›ÎZÈ$(HOME)/.omakerc“²exists,‘éYit“is“read˜bGefore“an¸ãy˜of“the“ÈOMakefiles˜²in“y¸ãourޤ pro‘Ž8ject.‘¶The–MÈ.omakerc›M ² le“is˜frequen¸ãtly˜used“for˜user-spGeci c“customization.‘¶F‘ÿ*ªorŽ¡example,›(Ðinstead–þ„of“de ning“the“ÈOMAKEFLAGS‘þY²en•¸ãvironmen“t‘þ„v‘ÿqÇariable,˜y“ou‘þ„couldŽ¡add–UUa“line“to“y¸ãour“È.omakerc².ŽŸ‘ÿôÈ$(HOME)/.omakerc:Ž¡‘)ÿè#–?ýMy“private“optionsŽ¡‘)ÿèOMakeFlags(-S‘?ý--progress)ŽŽŽŒ‹è Ý s\È ý®£8‘Yï0pdf:dest (page.232) [@thispage /XYZ @xpos @ypos]²232’ͱ´ÄAPPENDIX‘UUA.‘ªªSYNOPSISŽŽ 8G ýÚŽŽŒ‹é ߺ s\È ý®£8‘#ï0pdf:dest (page.233) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (appendix.B) [@thispage /XYZ @xpos @ypos]ŸU0ÊApp‘¥ëendix‘Ç BŽŸ20ÆOMak‘ÿ8õe‘ T{grammarŽŸ,Öwï3pdf:dest (section.B.1) [@thispage /XYZ @xpos @ypos]Ÿ =¸ÌB.1Ž‘(QOMakšŒÌe–fflexical“con˜v˜en˜tionsŽŸ ­²The–ˆ¾OMak¸ãe›ˆ½language“is˜based“on“the˜language“for“GNU/BSD‘ˆ‰mak¸ãe,‘±©where“thereޤ are–¸àfew›¸álexical“con•¸ãv“en“tions.‘œjStrictly–¸àspGeaking,‘ÑÃthere˜are“no“k•¸ãeyw“ords,‘ÑÄand‘¸àfewŽ¡sp•Gecial‘UUsym¸ãb“ols.ŽŸFçï8pdf:dest (subsection.B.1.1) [@thispage /XYZ @xpos @ypos]Ÿ "iÍB.1.1Ž‘,äCommen tsŽ©šæ²Commenš¸ãts–j¨bGegin“with“the“È#“²c˜haracter“and‘j§con˜tin˜ue“to“the“end-of-line.‘±ÀT‘ÿ*ªextŽ¡within–UUa“commen¸ãt“is“unrestricted.ŽŸ /‘Examples.ŽŸdï‘¿÷È#–?ýThis“is“a“commentŽ¡‘¿÷#–?ýThis“$comment“contains“a“quote“"“characterŽŸŽï8pdf:dest (subsection.B.1.2) [@thispage /XYZ @xpos @ypos]Ÿ ÛLÍB.1.2Ž‘,äSp`ecial‘€c haractersަ²The–UUfolloš¸ãwing“c˜haracters“are“spGecial“in“some“con˜texts.ŽŸd÷È$–ÿô(“)“,“.˜=“:“"“'“`“\“#ŽŸ<‘¸ŽŽŽ‘È$–UU²is“used“to“denote“a“v‘ÿqÇariable“reference,“or“function“application.ޤP¿‘¸ŽŽŽ‘²P•¸ãaren“theses–UUÈ)²,“È(“²are“argumenš¸ãt“delimin˜ters.ŽŸPÀ‘¸ŽŽŽ‘²The–UUcommand“È,“²is“an“argumen¸ãt“separator.Ž¡‘¸ŽŽŽ‘²The›UUp•Gerio“d˜sym¸ãb“ol˜È.˜²is˜a˜name˜separator.Ž¡‘¸ŽŽŽ‘²The–UUequalitš¸ãy“sym˜bGol“È=“²denotes“a“de nition.Ž¡‘¸ŽŽŽ‘²The–Ê•colon“sym¸ãbGol›Ê”È:“²is“used“to˜denote“rules,‘çåand˜(optionally)“to“indicateŽŸ ‘that–UUan“expression“is“follo•¸ãw“ed›UUb“y˜an˜inden“ted˜b•Go“dy‘ÿ*ª.ŽŽŸK’Çÿÿ233ŽŽŒ‹ê à^ s\È ý®£8‘Yï0pdf:dest (page.234) [@thispage /XYZ @xpos @ypos]²234’µ>ÄAPPENDIX–UUB.‘ªªOMAKE“GRAMMARŽŽ 8G ýÚŸ ‘h¸ŽŽŽ‘r²The–UUquotation“symš¸ãbGols“È"“²and“È'“²delimit“c˜haracter“strings.ޤ,p‘h¸ŽŽŽ‘r²The–UUsymš¸ãbGol“È#“²is“the“ rst“c˜haracter“of“a“constan˜t.Ž¡‘h¸ŽŽŽ‘r²The–•XescapšGe“sym¸ãb˜ol“È\‘•W²is“sp˜ecial“Îonly‘ãGwhen‘Y»²follo•¸ãw“ed‘•Wb“y–•Xanother“sp˜ecial“c¸ãhar-ޤ ‘racter.‘Ý‹In–yAthis“case,‘‚ÄAPPENDIX–UUB.‘ªªOMAKE“GRAMMARŽŽ 8G ýÚŸ ‘mÿôÈX–?ý=“Helloޤ ‘mÿôY–?ý=“$""$X“world""‘D?Ù#“Hello“worldŽ¡‘mÿôZ–?ý=“$'''$X“world'''‘9¿ß#“$X“worldŽ¡‘mÿôI–?ý=“3Ž¡‘mÿôW–?ý=“$"6“>“$(add“$I,“2)"‘$¿ë#“6“>“5ŽŸ&¯‘h²Note–ßthat“quotation“sym¸ãbšGols“without“a‘ßleading“È$“²are“not“treated“sp˜eciallyŽ¡‘Yb•¸ãy›UUOMak“e.‘qÇThe˜quotation˜sym“bGols˜is˜included˜in˜the˜sequence.ŽŸ&®‘mÿôÈosh>println('Hello‘?ýworld')Ž¡‘mÿô'Hello‘?ýworld'Ž¡‘mÿôosh>println($'Hello‘?ýworld')Ž¡‘mÿôHello‘?ýworldŽ¡‘mÿôosh>X–?ý=“HelloŽ¡‘mÿô-–?ý:“"Hello"“:“SequenceŽ¡‘mÿôosh>println('$X‘?ýworld')Ž¡‘mÿôHello‘?ýworldŽ‘YŸ;þï3pdf:dest (section.B.2) [@thispage /XYZ @xpos @ypos]ŸÌB.2Ž‘(QThe–ffOMakŒÌe“grammarŽŸç²OMak¸ãe–‹¸programs›‹·are“constructed˜from“expressions˜and“statemen¸ãts.‘îGenerally‘ÿ*ª,Ž¡an–æ6input›æ5program“consists“of“a˜sequence“of“statemen•¸ãts,‘üoeac“h–æ6of“whic¸ãh˜consists“ofŽ¡one–§„or›§ƒmore“lines.‘7×Inden¸ãtation˜is“signi can¸ãt{if˜a“statemen¸ãt˜consists“of˜more“thanŽ¡one–}line,‘‡the“second“and“remaining“lines“(called“the“Îb–ÿ}'o“dy‘â}²)–}are“usually“inden¸ãtedŽ¡relativ¸ãe–UUto“the“ rst“line.ŽŸ (oï8pdf:dest (subsection.B.2.1) [@thispage /XYZ @xpos @ypos]ŸÍB.2.1Ž‘,äExpressionsŽŸuT²The–UUfolloš¸ãwing“table“lists“the“syn˜tax“for“expressions.ŽŸqqÇŸ™æd‘¶fÎexprŽ‘¨|Ž‘U°UÎtextŽŽ¡‘>¨²|Ž‘U°UÎstring-liter‘ÿ}'alŽŽ¡‘U°U²{‘UUApplicationsŽŽ¡‘>¨|Ž‘U°UÎdol‘‚Ølar‘hâÈŽŽ¡‘>¨²|Ž‘U°UÎdol‘‚Ølar‘hâÈ(‘UUÎp–ÿ}'athid‘]Þar“gs‘'vÈ)ŽŽ¡‘U°U²{‘UUConcatenationŽŽ¡‘>¨|Ž‘U°UÎexpr‘hâexprŽŽ¡¡‘bdol‘‚ØlarŽ‘¨²|Ž‘U°UÎp‘ÿ}'athid‘]ÞÈ.‘UUÎidŽŽ¡¡‘" Üar‘ÿ}'gŽ‘> >> B.3ïpdf:eann).ŽŸoÆï8pdf:dest (subsection.B.2.2) [@thispage /XYZ @xpos @ypos]Ÿ½ÍB.2.2Ž‘,äStatemen ts–€and“programsŽŸ|I²The–UUfolloš¸ãwing“table“lists“the“syn˜tax“of“statemen˜ts“and“programs.ŽŽŽŒ‹î P s\È ý®£8‘Yï0pdf:dest (page.238) [@thispage /XYZ @xpos @ypos]²238’µ>ÄAPPENDIX–UUB.‘ªªOMAKE“GRAMMARŽŽ 8G ýÚ "€ þåæd’û®Îp–ÿ}'ar“amsŽ’¹™"²::=Ž’Òî{Î(empty)‘³è²|–UUÎid²,“...,“ÎidŽŽ¤ ¡’“ýtar‘ÿ}'getŽ’¹™"²::=Ž’Òî{Îexpr‘hâ²{–UUexcluding“spGecial“c¸ãharacter“È:ŽŽ¡¡’‰ÑùÎpr–ÿ}'o“gr“amŽ’¹™"²::=Ž’Òî{Îstmt‘H-È–UU²...‘qÇÈ“ÎstmtŽŽ¡¡’™½stmtŽ’¹™"²::=ŽŽ¡’Òî{{–UUSpGecial“formsŽŽ¡’»CÎ|Ž’Òî{Ècommand‘UUÎexpr‘hâoptc–ÿ}'olon-b“o“dyŽŽ¡’»Cβ|Ž’Òî{Ècommand–UU²(“Îar›ÿ}'gs‘'v²)“Îoptc˜olon-b˜o˜dyŽŽ¡’»Cβ|Ž’Òî{Ècatch–UUÎid›]Þ²(“Îid˜²)“Îoptc–ÿ}'olon-b“o“dyŽŽ¡’»Cβ|Ž’Òî{Èclass‘UUÎid‘]Þ²...‘qÇÎidŽŽ¡¡’Òî{²{–UUV‘ÿ*ªariable“de nitionsŽŽ¡’»CÎ|Ž’Òî{Îp‘ÿ}'athid‘]Þ¸f²+¸g²=‘UUÎexprŽŽ¡’»Cβ|Ž’Òî{Îp›ÿ}'athid‘]Þ¸f²+¸g²=–UUÈ“Îindente˜d-b˜o˜dyŽŽ¡’»Cβ|Ž’Òî{Îp‘ÿ}'athid‘‰È[]–UU¸f²+¸g²=“ÎexprŽŽ¡’»Cβ|Ž’Òî{Îp›ÿ}'athid‘‰È[]–UU¸f²+¸g²=“È“Îindente˜d-exprsŽŽ¡¡’Òî{²{‘UUF‘ÿ*ªunctionsŽŽ¡’»CÎ|Ž’Òî{Îp–ÿ}'athid‘‰²(Îar“gs‘Ò!²)‘UUÎoptc“olon-b“o“dyŽŽ¡’»Cβ|Ž’Òî{Îp–ÿ}'athid‘‰²(Îp“ar“ams‘Ò!²)–UU=“È“Îindente–ÿ}'d-b“o“dyŽŽ¡¡’Òî{²{‘UUOb‘Ž8jectsŽŽ¡’»CÎ|Ž’Òî{Îp›ÿ}'athid‘]ÞÈ.–UU¸f²+¸g²=“È“Îindente˜d-b˜o˜dyŽŽ¡¡’Òî{²{‘UURulesŽŽ¡’»CÎ|Ž’Òî{Îtar–ÿ}'get›H-È:‘qÇÎtar“get˜rule-options‘'vÈ‘UUÎindente“d-b“o“dyŽŽ¡’»Cβ|Ž’Òî{Îtar–ÿ}'get›H-È::‘qÇÎtar“get˜rule-options‘'vÈ‘UUÎindente“d-b“o“dyŽŽ¡’»Cβ|Ž’Òî{Îtar–ÿ}'get›H-È:‘qÇÎtar“get˜È:‘qÇÎtar“get˜rule-options‘'vÈ‘UUÎindente“d-b“o“dyŽŽ¡’»Cβ|Ž’Òî{Îtar–ÿ}'get›H-È::‘qÇÎtar“get˜È:‘qÇÎtar“get˜rule-options‘'vÈ‘UUÎindente“d-b“o“dyŽŽ¡¡’Òî{²{–UUShell“commandsŽŽ¡’»CÎ|Ž’Òî{ÎexprŽŽ¡¡‘qï¦indente–ÿ}'d-b“o“dyŽ’¹™"²::=Ž’Òî{Î(empty)ŽŽ¡’»Cβ|Ž’Òî{Îindente›ÿ}'d-stmt‘H-È–UU²...‘qÇÈ“Îindente˜d-stmtŽŽ¡¡‘nindente‘ÿ}'d-exprsŽ’¹™"²::=Ž’Òî{Î(empty)ŽŽ¡’»Cβ|Ž’Òî{Îindente›ÿ}'d-expr‘hâÈ–UU²...‘qÇÈ“Îindente˜d-exprŽŽ¡¡‘rr}optc–ÿ}'olon-b“o“dyŽ’¹™"²::=Ž’Òî{Î(empty)ŽŽ¡’»Cβ|Ž’Òî{È‘UUÎindente–ÿ}'d-b“o“dyŽŽ¡’»Cβ|Ž’Òî{È:‘qÇ‘UUÎindente–ÿ}'d-b“o“dyŽŽ¡¡‘}+•rule-optionŽ’¹™"²::=Ž’Òî{Î:id:‘Átar‘ÿ}'getŽŽ¡‘yrule-optionsŽ’¹™"²::=Ž’Òî{Î(empty)ŽŽ¡’»Cβ|Ž’Òî{Îrule-options‘'vrule-optionŽŽŽŽŽŽŽŒ‹ï Ý s\È ý®£8‘#ï0pdf:dest (page.239) [@thispage /XYZ @xpos @ypos]ÄB.2.‘ÇTHE–UUOMAKE“GRAMMAR’µuA²239ŽŽ 8G ýÚ‘#ï=pdf:dest (subsubsection.B.2.2.1) [@thispage /XYZ @xpos @ypos]Ÿ ÇB.2.2.1Ž‘.ƒ~SpQÇecial‘ÕTformsŽŸuT²The–UUspGecial“forms“include“the“follo¸ãwing.ޤ ‘ÇConditionals–èê²(see›èéthe“section˜on“conditionals˜|“Section˜ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.9) >> >> 4.9ïpdf:eann).‘M¤The˜Èif“²com-Ž¡mand–áshould›ábGe“follo•¸ãw“ed‘áb“y˜an–áexpression“that˜represen¸ãts“the“condition,‘øGand“anŽ¡inden¸ãted›UUb•Go“dy‘ÿ*ª.‘qÇThe˜conditional˜ma¸ãy˜b“e˜follo•¸ãw“ed˜b“y˜Èelseif˜²and˜Èelse˜²bloGc“ks.Ž©Nï‘ÿôÈif‘?ýexprŽ¡‘)ÿèindented-bodyŽ¡‘ÿôelseif‘?ýexprŽ¡‘)ÿèindented-bodyŽ¡‘ÿô...Ž¡‘ÿôelseŽ¡‘)ÿèindented-bodyަ‘Çmatc®9hing‘ÂT²(see–™pthe“section“on“matc¸ãhing“|“Section“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.10) >> >> 4.10ïpdf:eann).‘>The“Èswitch“²andŽ¡Èmatch–o•²commands“pGerform“pattern-matc¸ãhing.›À‡All‘o”cases“are“optional.˜Eac¸ãh“caseŽ¡maš¸ãy–UUinclude“Èwhen“²clauses“that“spGecify“additional“matc˜hing“conditions.ŽŸNð‘ÿôÈmatch(expr)Ž¡‘ÿôcase‘?ýexprŽ¡‘$¿ëindented-bodyŽ¡‘ÿôwhen‘?ýexprŽ¡‘$¿ëindented-bodyŽ¡‘ÿô...Ž¡‘ÿôcase‘?ýexprŽ¡‘$¿ëindented-bodyŽ¡‘ÿôdefaultŽ¡‘$¿ëindented-bodyަ‘ÇExceptions–#`²(see›#_also“the˜ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:try) >> >> Ètry“²functionïpdf:eann˜doGcumen¸ãtation).‘a The˜Ètry“²commandŽ¡inš¸ãtroGduces–»Ðan‘»Ïexception“handler.‘¥7Eac˜h“Èname›»Ï²is“the˜name“of“a˜class.‘¥7All“cases,Ž¡including›lÈcatch²,–qÎÈdefault²,“and˜Èfinally˜²are˜optional.‘¶The˜Ècatch˜²and˜ÈdefaultŽ¡²clauses–UUcon¸ãtain“optional“Èwhen“²clauses.ަ‘ÿôÈtryŽ¡‘)ÿèindented-bodyŽ¡‘ÿôcatch‘?ýname1(id1)Ž¡‘)ÿèindented-bodyŽ¡‘ÿôwhen‘?ýexprŽ¡‘)ÿèindented-bodyŽ¡‘ÿô...Ž¡‘ÿôcatch‘?ýnameN(idN)Ž¡‘)ÿèindented-bodyŽ¡‘ÿôdefaultŽ¡‘)ÿèindented-bodyŽ¡‘ÿôfinallyŽ¡‘)ÿèindented-bodyŽŽŽŒ‹ð   s\È ý®£8‘Yï0pdf:dest (page.240) [@thispage /XYZ @xpos @ypos]²240’µ>ÄAPPENDIX–UUB.‘ªªOMAKE“GRAMMARŽŽ 8G ýÚŸ ‘h²The–UUÈraise“²command“is“used“to“raise“an“exception.ޤF‘mÿôÈraise‘?ýexprŽŸ8‘hÇsection–BB²(see›BCthe“Èsection“²description“in˜Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.8) >> >> 4.8ïpdf:eann).‘The˜Èsection“²commandŽ© ‘Yin¸ãtrošGduces–UUa“new“scop˜e.Ž¡‘mÿôÈsectionަ’‚ÿèindented-bodyŽŸ8‘hÇinclude,‘ÑopQÇen–P»²(see›Pºalso“Section˜ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.7) >> >> 4.7ïpdf:eann).‘p?The˜Èinclude“²command˜pGerforms“ leަ‘Yinclusion.‘qÇThe–UUexpression“should“ev‘ÿqÇaluate“to“a“ le“name.ŽŸ ‘hThe–ú Èopen“²form“is›ú¡lik¸ãe“include,‘còbut“it“pGerforms“the˜inclusion“only“if“theަ‘Yinclusion–9åhas›9ænot“already˜bšGeen“p˜erformed.‘xThe›9æÈopen“²form˜is“usually˜used“toަ‘Yinclude–UUlibrary“ les.‘qÇ[jyh{“this“bGehaš¸ãvior“will“c˜hange“in“subsequen˜t“revisions.]Ž¡‘mÿôÈinclude‘?ýexprަ‘mÿôopen‘?ýexprŽŸ8‘hÇreturn–°Ò²(see›°Ñthe“description“of˜functions“in“Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.5) >> >> 4.5ïpdf:eann).‘„=The˜Èreturn“²com-ަ‘Ymand–UUterminates“execution“and“returns“a“v‘ÿqÇalue“from“a“function.Ž¡‘mÿôÈreturn‘?ýexprŽŸ8‘hÇv‘ÿ\ralue–× ²(see›× the“description“of˜functions“in“Section˜ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.5) >> >> 4.5ïpdf:eann).‘G°The˜Èvalue“²commandަ‘Yis–UUan“iden•¸ãtit“y›ÿ*ª.‘qÇSyn“tactically˜,–UUit“is“used“to“coGerce“a“n“expression“to“a“statemen¸ãt.Ž¡‘mÿôÈvalue‘?ýexprŽŸ8‘hÇexpQÇort–g²(see›fthe“section˜on“scoping“|˜Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.6.3) >> >> 6.3ïpdf:eann).‘IüThe˜Èexport“²commandަ‘YexpGorts›™0a‘™1en•¸ãvironmen“t˜from˜a‘™1nested˜bloGc“k.‘=YIf˜no‘™1argumen“ts˜are˜giv“en,‘ê'theަ‘Yen•¸ãtire›ÆÜen“vironmen“t‘ÆÝis˜exp•Gorted.‘BJOtherwise,‘ã[the˜exp“ort–ÆÝis˜limited˜to“the˜spGeci edަ‘Yiden¸ãti ers.Ž¡‘mÿôÈexport‘?ýexprŽŸ8‘hÇwhile–ýȲ(see“also“the›ýÇïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (fun:while) >> >> Èwhile“²functionïpdf:eann“description).‘k The˜Èwhile“²command“in-ަ‘YtrošGduces–UUa“Èwhile“²lo˜op.Ž¡‘mÿôÈwhile‘?ýexprަ’‚ÿèindented-bodyŽŸ8‘hÇclass,‘|òextends–|²(see“the“section“on“ob‘Ž8jects“|“Section“ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.11) >> >> 4.11ïpdf:eann).‘åÚThe“Èclassަ‘Y²command–S spGeci es›S an“iden¸ãti er˜for“an˜ob‘Ž8ject.‘qThe“Èextends˜²command“spGeci esަ‘Ya–UUparen¸ãt“ob‘Ž8ject.Ž¡‘mÿôÈclass‘?ýidަ‘mÿôextends‘?ýexprŽŽŽŒ‹ñ y s\È ý®£8‘#ï0pdf:dest (page.241) [@thispage /XYZ @xpos @ypos]ÄB.2.‘ÇTHE–UUOMAKE“GRAMMAR’µuA²241ŽŽ 8G ýÚ‘#ï=pdf:dest (subsubsection.B.2.2.2) [@thispage /XYZ @xpos @ypos]Ÿ ÇB.2.2.2Ž‘.ƒ~V‘ÿ «ariable‘ÕTde nitionsŽŸuT²See–…uthe“section“on“v›ÿqÇariables“(Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.1) >> >> 4.1ïpdf:eann).‘&The“simplest“v˜ariable“de nition“hasޤ the‘õˆfollo•¸ãwing›õ‰syn“tax.‘R`The˜È=–õˆ²form“is˜a“new“de nition.‘RaThe“+=˜form“appGendsŽ¡the–UUv‘ÿqÇalue“to“an“existing“de nition.Ž©‡R‘ÿôÈid–?ý=“exprŽ¡‘ÿôid–?ý+=“exprŽ¡¡‘ÿôosh>–?ýX“=“1Ž¡‘ÿô-–?ý:“"1"“:“SequenceŽ¡‘ÿôosh>–?ýX“+=“7Ž¡‘ÿô-–?ý:“"1"“"“"“"7"“:“Sequenceަ‘²A‘¡mš¸ãulti-line–Ïform‘Îis“allo˜w˜ed,‘1íwhere›Îthe“v‘ÿqÇalue“is˜computed“b¸ãy˜an“inden¸ãtedŽ¡b•Go“dy‘ÿ*ª.ŽŸ‡Q‘ÿôÈid‘?ý{+}=Ž¡‘)ÿèindented-bodyŽ¡¡‘ÿôosh>–?ýX“=Ž¡‘D?ÙY–?ý=“HOMEŽ¡‘D?Ùprintln(Y–?ýis“$Y)Ž¡‘D?Ùgetenv($Y)Ž¡‘ÿôY–?ýis“HOMEŽ¡‘ÿô-–?ý:“"/home/jyh"“:“Sequenceަ‘²The–¶name“ma¸ãy›¶bGe“quali ed“qith“one˜of“the“Èpublic²,‘Î<Èprtected²,‘Î=or“ÈprivateŽ¡²mošGdi ers.‘N.Public–žÍv‘ÿqÇariables“are“dynamically–žÌscop˜ed.‘N/Protected“v‘ÿqÇariables‘žÍareŽ¡ elds–UUin“the“curren¸ãt“ob‘Ž8ject.‘qÇPriv›ÿqÇate“v˜ariables“are“statically“scopGed.Ž¡‘[jyh:‘:6revision–90.9.9‘9Œin¸ãtrošGduces“mo˜dular“namespaces;‘«¨the“meaning‘9Œof“theseŽ¡quali ers–UUis“slighš¸ãtly“c˜hanged.]ަ‘ÿôÈpublic.X–?ý=“$(addsuffix“.c,“1“2“3)Ž¡‘ÿôprotected.Y–?ý=“$(getenv“HOME)Ž¡‘ÿôprivate.Z–?ý=“$"Hello“world"ŽŸ"Qï=pdf:dest (subsubsection.B.2.2.3) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇB.2.2.3Ž‘.ƒ~Applications–ÕTand“function“de nitionsŽŸuT²See–ýthe“section“on“functions“(Section“ïipdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.5) >> >> 4.5ïpdf:eann).‘ñÀA‘òfunction-application“statemen¸ãt“isŽ¡spGeci ed–}Žas›}a“function“name,‘‡follo•¸ãw“ed–}Ža“paren¸ãthesized“list˜of“comma-separatedŽ¡argumen¸ãts.ަ‘ÿôÈosh>–?ýprintln($"Hello“world")Ž¡¡‘ÿôosh>–?ýFILES“=“1“2“3Ž¡‘ÿô-–?ý:“1“2“3Ž¡‘ÿôosh>–?ýaddsuffix(.c,“$(FILES))ŽŽŽŒ‹ò *: s\È ý®£8‘Yï0pdf:dest (page.242) [@thispage /XYZ @xpos @ypos]²242’µ>ÄAPPENDIX–UUB.‘ªªOMAKE“GRAMMARŽŽ 8G ýÚŸ ‘mÿôÈ-–?ý:“1.c“2.c“3.cޤ ¡‘mÿô#–?ýThe“following“forms“are“equivalentŽ¡‘mÿôosh>–?ývalue“$(println“$"Hello“world")Ž¡‘mÿôosh>–?ývalue“$(addsuffix“.c,“$(FILES))Ž¡‘mÿô-–?ý:“1.c“2.c“3.cŽ©ú¶‘h²If–b½the›b¼function“application˜has“a˜b•Go“dy‘ÿ*ª,‘¦the˜b“o“dy–b½is˜passed“(lazily)˜to“theŽ¡‘Yfunction–URas“its“ rst›UQargumen¸ãt.‘q¾[jyh:‘qÁin“revision˜0.9.8“suppGort“is“incomplete.]Ž¡‘YWhen–}using“Èosh²,‘#Üthe“application“mš¸ãust“bGe“follo˜w˜ed“b˜y“a“colon“È:“²to“indicate“thatŽ¡‘Ythe–UUapplication“has“a“b•Go“dy‘ÿ*ª.ŽŸúµ‘mÿôÈ#–?ýIn“its“3-argument“form,“the“foreach“function“takesŽ¡‘mÿô#–?ýa“body,“a“variable,“and“an“array.‘ úThe“body“is“evaluatedŽ¡‘mÿô#–?ýfor“each“element“of“the“array,“with“the“variable“bound“toŽ¡‘mÿô#–?ýthe“element“value.Ž¡‘mÿô#Ž¡‘mÿô#–?ýThe“colon“is“required“only“for“interactive“sessions.Ž¡‘mÿôosh>–?ýforeach(x,“1“2“3):Ž¡’—ÿÜadd($x,‘?ý1)Ž¡‘mÿô-–?ý:“2“3“4ަ‘h²F‘ÿ*ªunctions–Yare“de ned›Zin“a“similar“form,‘Ywhere“the“parameter˜list“is“spGeci edŽ¡‘Yas–eRa›eQcomma-separated“list˜of“iden¸ãti ers,‘•Rand“the˜b•Go“dy–eRof˜the“function˜is“inden¸ãted.ŽŸúµ‘mÿôÈosh>–?ýf(i,“j)“=Ž¡’—ÿÜadd($i,‘?ý$j)Ž¡‘mÿô-–?ý:“Ž¡‘mÿôosh>–?ýf(3,“7)Ž¡‘mÿô-–?ý:“10“:“IntŽ‘YŸ ¥ ï=pdf:dest (subsubsection.B.2.2.4) [@thispage /XYZ @xpos @ypos]¡ÇB.2.2.4Ž‘.ƒ~Ob‘£ŽjectsŽŸuT²See–ãŒthe›ã‹section“on˜ob‘Ž8jects“(Section˜ïjpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (section.4.11) >> >> 4.11ïpdf:eann).‘kOb‘Ž8jects˜are“de ned˜as“an˜iden¸ãti erŽ¡with–UUa“terminal“p•Gerio“d.‘qÇThe›UUb“o“dy˜of˜the˜ob‘Ž8ject˜is˜inden¸ãted.ަ‘ÿôÈObj.‘?ý=Ž¡‘)ÿèclass‘?ýObjŽ¡¡‘)ÿèX–?ý=“1Ž¡‘)ÿèY–?ý=“$(sub“$X,“12)Ž¡‘)ÿènew(i,–?ýj)“=Ž¡‘9¿ßX–?ý=“$iŽ¡‘9¿ßY–?ý=“$jŽ¡‘9¿ßvalue‘?ý$(this)Ž¡‘)ÿèF()‘?ý=Ž¡‘9¿ßadd($X,‘?ý$Y)Ž¡‘)ÿèprintln($Y)ŽŽŽŒ‹ó 2ó s\È ý®£8‘#ï0pdf:dest (page.243) [@thispage /XYZ @xpos @ypos]ÄB.2.‘ÇTHE–UUOMAKE“GRAMMAR’µuA²243ŽŽ 8G ýÚŸ ‘2The›$kb•Go“dy–$jof˜the˜ob‘Ž8ject“has˜the“usual˜form˜of“an˜inden¸ãted˜b•Go“dy‘ÿ*ª,‘X/but˜newޤ ‘#v‘ÿqÇariable–ã‹de nitions›ãŠare“added“to“the˜ob‘Ž8ject,‘not˜the“global“en•¸ãvironmen“t.‘hTheŽ¡‘#ob‘Ž8ject›]sde nition‘]tabGo•¸ãv“e˜de nes–]tan˜ob‘Ž8ject“with˜(at˜least)“the˜ elds“ÈX‘]q²and“ÈY²,˜andŽ¡‘#methoGds–ɦÈnew“²and›É¥ÈF².“The“name“of˜the“ob‘Ž8ject“is“de ned“with˜the“Èclass“²commandŽ¡‘#as‘UUÈObj².Ž¡‘2The–æÈObj›朲itself“has˜ elds“ÈX–?ý=“1˜²and›æÈY“=“-11².‘ %The˜Ènew–朲methoGd˜has“theŽ¡‘#tš¸ãypical–form“of“a“constructor-st˜yle“methoGd,‘KNwhere“the“ elds“of“the“ob‘Ž8ject“areŽ¡‘#initialized–æto“new“v‘ÿqÇalues,‘.Jand“the“new“ob‘Ž8ject“returned“(È$(this)“²refers“to“theŽ¡‘#curren¸ãt‘UUob‘Ž8ject).Ž¡‘2The–UUÈF“²methoGd“returns“the“sum“of“the“t•¸ãw“o–UU elds“ÈX“²and“ÈY².Ž¡‘2When–Rused“in“an›Qob‘Ž8ject“de nition,‘!Sthe“+=“form“adds˜the“new“de nitions“toŽ¡‘#an–UUexisting“ob‘Ž8ject.Ž©‘2¿÷Èpair.‘?ý=Ž¡‘Bîx–?ý=“1Ž¡‘Bîy–?ý=“2Ž¡¡‘2¿÷pair.‘?ý+=Ž¡‘Bîy–?ý=“$(add“$y,“3)Ž¡‘2¿÷#–?ýpair“now“has“fields“(x“=“1,“and“y“=“5)ަ‘2²The–._Èextends“²form“spGeci es“inheritance.›dÊMultiple“inheritance“is“allo•¸ãw“ed.˜A“tŽ¡‘#ev‘ÿqÇaluation–×Átime,‘ø\the›×ÂÈextends“²directiv¸ãe“pGerforms“inclusion“of˜the“enš¸ãtire“paren˜tŽ¡‘#ob‘Ž8ject.ަ‘2¿÷Èpair.‘?ý=Ž¡‘Bîx–?ý=“1Ž¡‘Bîy–?ý=“2Ž¡¡‘2¿÷depth.‘?ý=Ž¡‘Bîz–?ý=“3Ž¡‘Bîzoom(dz)‘?ý=Ž¡‘R?åz–?ý=“$(add“$z,“$(dz))Ž¡‘R?åreturn‘?ý$(this)Ž¡¡‘2¿÷triple.‘?ý=Ž¡‘Bîextends‘?ý$(pair)Ž¡‘Bîextends‘?ý$(depth)Ž¡¡‘Bîcrazy()‘?ý=Ž¡‘R?åzoom($(mul–?ý$x,“$y))ަ‘2²In–Lthis“example,›ÉÉthe“Ètriple‘M²ob‘Ž8ject“has“three“ elds“x,˜y‘ÿ*ª,˜and“z;‘Hand“t•¸ãw“oŽ¡‘#methoGds–UUÈzoom“²and“Ècrazy².Ž‘#Ÿ³ˆï=pdf:dest (subsubsection.B.2.2.5) [@thispage /XYZ @xpos @ypos]Ÿ ÇÇB.2.2.5Ž‘.ƒ~RulesŽŸuT²See–UUthe“cš¸ãhapter“on“rules“(Chapter“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.8) >> >> 8ïpdf:eann).‘qÇA“rule“has“the“follo˜wing“parts.ŽŽŽŒ‹ô :ï s\È ý®£8‘Yï0pdf:dest (page.244) [@thispage /XYZ @xpos @ypos]²244’µ>ÄAPPENDIX–UUB.‘ªªOMAKE“GRAMMARŽŽ 8G ýÚ‘Yï/pdf:dest (Item.16) [@thispage /XYZ @xpos @ypos]Ÿ ‘ 8ä²1.ŽŽŽ‘A–UUsequence“of“targets;ޤ$#ï/pdf:dest (Item.17) [@thispage /XYZ @xpos @ypos]Ÿ@–‘ 8ä2.ŽŽŽ‘one–UUor“t•¸ãw“o‘UUcolons;Ž¡ï/pdf:dest (Item.18) [@thispage /XYZ @xpos @ypos]¤@•‘ 8ä3.ŽŽŽ‘a–UUsequence“of“Îdep‘ÿ}'endencies‘'v²and“Îrule‘“çoptions‘Ò!²;ŽŸ$$ï/pdf:dest (Item.19) [@thispage /XYZ @xpos @ypos]¡‘ 8ä4.ŽŽŽ‘and–UUan“inden¸ãted“b•Go“dy‘ÿ*ª.ŽŸKŠ‘The–+htargets“are“the“ les›+gto“bGe“built,‘`íand“the˜depGendencies“are“the“ les“itޤ depšGends–Ovon.‘oÑIf“t•¸ãw“o‘Oucolons–Ovare“sp˜eci ed,‘P¢it›Ouindicates“that˜there“ma¸ãy˜bGe“m¸ãultipleŽ¡rules–UUto“build“the“givš¸ãen“targets;“otherwise“only“one“rule“is“allo˜w˜ed.ŽŸ /‘If–åthe›åœtarget“con¸ãtains˜a“È%“²c¸ãharacter,‘ ®the“rule˜is“called˜Îimplicit²,‘ ¯and˜is“con-Ž¡sidered–žˆwhenevš¸ãer“a“ le“matc˜hing“that‘ž‰pattern“is“to“bGe“built.‘M`F‘ÿ*ªor“example,‘°ÕtheŽ¡follo¸ãwing–UUrule“spGeci es“a“default“rule“for“compiling“OCaml“ les.ŽŸ}æ‘ÿôÈ%.cmo:–?ý%.ml“%.mliŽ¡‘$¿ë$(OCAMLC)–?ý-c“$<Ž©d¹‘²This–ˆ rule“w¸ãould›ˆbGe“consulted“as“a“default˜w•¸ãa“y–ˆ of“building“an¸ãy“ le˜with“a“È.cmoŽ¡²sux.‘uThe–depGendencies“list“is“also“constructed“based“on“the“pattern“matc¸ãh.Ž¡F‘ÿ*ªor–ê$example,‘ÿ”if›ê#this“rule˜w¸ãere“used˜to“build“a˜ le“Èfoo.cmo²,‘ÿ”then˜the“depGendencyŽ¡list–UUw¸ãould“bGe“Èfoo.ml‘?ýfoo.mli².ŽŸ .‘There–lgis›lfalso“a˜three-part“v¸ãersion“of˜a“rule,‘r+where˜the“rule˜spGeci cation“hasŽ¡three‘UUparts.ŽŸ}ç‘ÿôÈtargets–?ý:“patterns“:“dependencies“rule-optionsŽ¡‘$¿ëindented-bodyަ‘²In–¹Äthis“case,‘Øáthe“patterns“Îmust‘¬œ²conš¸ãtain“a“single“È%“²c˜haracter.‘=ìThree-part“rulesŽ¡are–õ^also“considered–õ]Îimplicit².‘QâF‘ÿ*ªor“example,‘`the–õ^follo¸ãwing“de nes‘õ]a“default“ruleŽ¡for–UUthe“Èclean“²target.ŽŸ}ç‘ÿôÈ.PHONY:‘?ýcleanŽ¡¡‘ÿôclean:‘?ý%:Ž¡‘)ÿèrm–?ý-f“*$(EXT_OBJ)“*$(EXT_LIB)ŽŸd¸‘²Three-part–¡iimplicit›¡hrules“are˜inherited“b¸ãy˜the“subGdirectories˜in“the˜exactŽ¡same›UUw•¸ãa“y˜as˜with˜the˜usual˜t“w“o-part˜implicit˜rules.ŽŸ .‘There–UUare“sevš¸ãeral“spGecial“targets,“including“the“follo˜wing.ަ‘¸ŽŽŽ‘È.PHONY‘…޲:–…Âdeclare›…Ãa“\phon¸ãy"“target.‘,—That“is,‘¯Gthe“target“doGes˜not“correspGondŽ¡‘to–UUa“ le.ޤd¹‘¸ŽŽŽ‘È.ORDER–UU²:“declare“a“rule“for“depGendency“ordering.ŽŸd¸‘¸ŽŽŽ‘È.INCLUDE–UU²:“de ne“a“rule“to“generate“a“ le“for“textual“inclusion.Ž¡‘¸ŽŽŽ‘È.SUBDIRS–UU²:“spšGecify“sub˜directories“that“are“part“of“the“pro‘Ž8ject.ŽŽŽŒ‹õ C¹ s\È ý®£8‘#ï0pdf:dest (page.245) [@thispage /XYZ @xpos @ypos]ÄB.2.‘ÇTHE–UUOMAKE“GRAMMAR’µuA²245ŽŽ 8G ýÚŸ ‘2¸ŽŽŽ‘<È.SCANNER–UU²:“de ne“a“rule“for“depGendency“scanning.ޤKñ‘2There–UUare“sev¸ãeral“rule“options.Ž¡‘2¸ŽŽŽ‘<È:optional:‘?ýdependencies–«Õ²the“subsequen¸ãt“depGendencies“are“optional,‘Áuitޤ ‘<is–UUacceptable“if“they“do“not“exist.Ž©·ú‘2¸ŽŽŽ‘<È:exists:‘?ýdependencies–(ü²the“subsequenš¸ãt“depGendencies‘(ým˜ust“exist,‘åbutŽ¡‘<c¸ãhanges–UUto“not“a ect“whether“this“rule“is“considered“out-of-date.ަ‘2¸ŽŽŽ‘<È:effects:‘?ýtargets– вthe“subsequen¸ãt“ les“are“side-e ects“of“the“rule.‘Y›ThatŽ¡‘<is,‘çùthey–Ì¢ma¸ãy“bšGe‘Ì¡created“and/or“mo˜di ed“while‘Ì¡the“rule“is“executing.‘D6RulesŽ¡‘<with›UUo•¸ãv“erlapping˜side-e ects˜are˜nev“er˜executed˜in˜parallel.ަ‘2¸ŽŽŽ‘<È:scanner:‘?ýname–®?²the›®@subsequen¸ãt“name˜is“the“name˜of“the˜È.SCANNER‘®(²ruleŽ¡‘<for–UUthe“target“to“bGe“built.ަ‘2¸ŽŽŽ‘<È:value:‘?ýexpr–­ ²the“Èexpr‘­ ²is“a“\v‘ÿqÇalue"“depGendency‘ÿ*ª.‘xêThe“rule“is“consideredŽ¡‘<out-of-date–UUwhenevš¸ãer“the“v‘ÿqÇalue“of“the“Èexpr“²c˜hanges.ޤKñ‘2Sev¸ãeral–UUv›ÿqÇariables“are“de ned“during“rule“ev˜aluation.Ž¡‘2¸ŽŽŽ‘<È$*–UU²:‘qÇthe“name“of“the“target“with“the“outermost“sux“remo•¸ãv“ed.ަ‘2¸ŽŽŽ‘<È$>–UU²:‘qÇthe“name“of“the“target“with“all“suxes“remo•¸ãv“ed.ަ‘2¸ŽŽŽ‘<È$@–UU²:‘qÇthe“name“of“the“target.ަ‘2¸ŽŽŽ‘<È$^–·…²:‘6(the›·†explicit“ le˜dep•Gendencies,‘Ðsorted˜alphab“etically‘ÿ*ª,‘Ðwith‘·…duplicatesޤ ‘<remo•¸ãv“ed.ŽŸ·ù‘2¸ŽŽŽ‘<È$+–UU²:‘qÇall“explicit“ le“depGendencies,“with“order“preserv¸ãed.ަ‘2¸ŽŽŽ‘<È$<–UU²:‘qÇthe“ rst“explicit“ le“depGendency‘ÿ*ª.ަ‘2¸ŽŽŽ‘<È$&–UU²:‘qÇthe“free“v‘ÿqÇalues“of“the“rule“(often“used“in“È:value:“²depGendencies).Ž‘#Ÿ_4ï=pdf:dest (subsubsection.B.2.2.6) [@thispage /XYZ @xpos @ypos]Ÿ €ÇB.2.2.6Ž‘.ƒ~Shell‘ÕTcommandsŽŸuT²See–UUthe“c¸ãhapter“on“shell“commands“(Chapter“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.11) >> >> 11ïpdf:eann).Ž¡‘While–L it›Lis“pGossible˜to“giv¸ãe˜a“precise˜spGeci cation“of˜shell“commands,‘‰µtheŽ¡informal–jdescription‘jis“simpler.‘¯÷Anš¸ãy“non-empt˜y“statemen˜t‘jwhere“eac˜h‘jpre x“isŽ¡Înot‘ ²one–--of“the“other‘-,statemen¸ãts,‘55is“considered“to“bGe“a“shell“command.‘ddHere“areŽ¡some‘UUexamples.ŽŸKñ‘ÿôÈls’­?--–?ýshell“commandŽ¡‘ÿôecho–?ýHello“world“>“/dev/null‘$¿ë--“shell“commandŽ¡‘ÿôecho(Hello–?ýworld)‘^Ê--“function“applicationŽ¡‘ÿôecho(Hello–?ýworld)“>“/dev/null‘î--“syntax“errorŽ¡‘ÿôecho–?ýHello:“world‘^Ê--“ruleŽ¡‘ÿôX=1–?ýgetenv“X‘x¿»--“variable“definitionŽŽŽŒ‹ö Nš s\È ý®£8‘Yï0pdf:dest (page.246) [@thispage /XYZ @xpos @ypos]²246’µ>ÄAPPENDIX–UUB.‘ªªOMAKE“GRAMMARŽŽ 8G ýÚŸ ‘mÿôÈenv–?ýX=1“getenv“X‘c¿Ç--“shell“commandޤ ‘mÿôif–?ýtrue’’ÿ¬--“special“formŽ¡‘mÿô\if–?ýtrue’¿¯--“shell“commandŽ¡‘mÿô"if"–?ýtrue’ˆ²--“shell“commandŽ‘YŸy„ï3pdf:dest (section.B.3) [@thispage /XYZ @xpos @ypos]ŸÌB.3Ž‘(QDollar‘ffmos3di ersŽŸô²Inline–¨„applications“ha•¸ãv“e‘¨ƒa–¨„function“and“zero-or-more“argumen¸ãts.‘kSEv‘ÿqÇaluationŽ¡is›±normally–²strict:‘Øwhen“an˜application˜is“ev‘ÿqÇaluated,‘5ˆthe˜function“iden¸ãti er˜isŽ¡ev‘ÿqÇaluated–À!to›À"a“function,‘ÚÔthe“argumen¸ãts“are˜then“ev‘ÿqÇaluated“and“the˜function“isŽ¡called–UUwith“the“ev‘ÿqÇaluated“argumen¸ãts.Ž© ‘The–Çúadditional“\dollar"“sequences“spGecify‘Çûadditional“conš¸ãtrol“o˜v˜er“ev‘ÿqÇaluation.Ž¡The–Ç®tokš¸ãen“È$`“²de nes“a“\lazy"“application,‘äEwhere“ev‘ÿqÇaluation“is“dela˜y˜ed“un˜til“aŽ¡v‘ÿqÇalue–%¼is“required.‘âûThe“È$,›%»²sequence“pGerforms“an“\eager"˜application“within“aŽ¡lazy‘UUcon¸ãtext.ަ‘T‘ÿ*ªo–!illustrate,‘“ôconsider“the‘!expression“È$(addsuffix–?ý.c,“$(FILES))².‘!TheŽ¡Èaddsuffix–ÕU²function›ÕTappGends“its˜ rst“argumen¸ãt“to˜eac¸ãh“v‘ÿqÇalue˜in“its˜second“ar-Ž¡gumen•¸ãt.‘qÇThe›UUfollo“wing˜Èosh˜²in“teraction˜demonstrates˜the˜normal˜baha“vior.Ž©x}Èosh>–?ýFILES[]“=“a“b“cŽ¡-–?ý:“Ž¡osh>–?ýX“=“$(addsuffix“.c,“$(FILES))Ž¡-–?ý:“Ž¡osh>–?ýFILES[]“=“1“2“3“#“redefine“FILESŽ¡-–?ý:“Ž¡osh>–?ýprintln($"$X")‘ ú#“force“the“evaluation“and“printŽ¡a.c–?ýb.c“c.cŽŸ`c‘²When–¥Ôthe›¥Ólazy“opGerator˜È$`“²is˜used“instead,‘¹óev‘ÿqÇaluation“is˜dela•¸ãy“ed‘¥Ôun“til˜it‘¥ÔisŽ¡prin•¸ãted.‘ In›Q"the‘Q#follo“wing˜sample,‘…-the˜v‘ÿqÇalue˜for˜ÈX‘Pá²has˜c“hanged˜to‘Q#the˜È$(apply‘?ý..)Ž¡²form,–UUbut“otherwise“the“result“is“uncš¸ãhanged“bGecause“it“it“prin˜ted“immediately‘ÿ*ª.ަÈosh>–?ýFILES[]“=“a“b“cŽ¡-–?ý:“Ž¡osh>–?ýSUF“=“.cŽ¡-–?ý:“".c"Ž¡osh>–?ýX“=“$`(addsuffix“$(SUF),“$(FILES))Ž¡-–?ý:“$(apply“global.addsuffix“...)Ž¡osh>–?ýprintln($"$X")‘ ú#“force“the“evaluation“and“printŽ¡a.c–?ýb.c“c.cŽŸ`c‘²Ho•¸ãw“ev“er,‘ißconsider–eÃwhat›eÄhappGens“if“w¸ãe˜rede ne“the“ÈFILES‘e¿²v‘ÿqÇariable˜after“theŽ¡de nition–‚3for›‚2ÈX².“In“the˜folloš¸ãwing“sample,‘jthe“result“c˜hanges‘‚2bGecause“ev‘ÿqÇaluationŽ¡ošGccurs–UUÎafter‘hâ²the“v‘ÿqÇalues“for“ÈFILES“²has“b˜een“rede ned.ަÈosh>–?ýFILES[]“=“a“b“cŽŽŽŒ‹÷ Yàs\È ý®£8‘#ï0pdf:dest (page.247) [@thispage /XYZ @xpos @ypos]ÄB.3.‘ÇDOLLAR‘UUMODIFIERS’Èj—²247ŽŽ 8G ýÚŸ ‘#È-–?ý:“ޤ ‘#osh>–?ýSUF“=“.cŽ¡‘#-–?ý:“".c"Ž¡‘#osh>–?ýX“=“$`(addsuffix“$(SUF),“$(FILES))Ž¡‘#-–?ý:“$(apply“global.addsuffix“...)Ž¡‘#osh>–?ýSUF“=“.xŽ¡‘#osh>–?ýFILES[]“=“1“2“3Ž¡‘#osh>–?ýprintln($"$X")‘ ú#“force“the“evaluation“and“printŽ¡‘#1.x–?ý2.x“3.xŽ©‘2²In–some›cases,‘ômore“explicit˜con¸ãtrol“is˜desired“o•¸ãv“er˜ev‘ÿqÇaluation.‘U´F‘ÿ*ªor‘example,Ž¡‘#w•¸ãe› ·ma“y– ¶wish˜to“ev‘ÿqÇaluate˜ÈSUF‘ ¤²early‘ÿ*ª,‘ but˜allo¸ãw“for˜c¸ãhanges“to˜the˜ÈFILES‘ ¤²v‘ÿqÇariable.Ž¡‘#The–UUÈ$,(SUF)“²expression“forces“early“ev‘ÿqÇaluation.ަ‘#Èosh>–?ýFILES[]“=“a“b“cŽ¡‘#-–?ý:“Ž¡‘#osh>–?ýSUF“=“.cŽ¡‘#-–?ý:“".c"Ž¡‘#osh>–?ýX“=“$`(addsuffix“$,(SUF),“$(FILES))Ž¡‘#-–?ý:“$(apply“global.addsuffix“...)Ž¡‘#osh>–?ýSUF“=“.xŽ¡‘#osh>–?ýFILES[]“=“1“2“3Ž¡‘#osh>–?ýprintln($"$X")‘ ú#“force“the“evaluation“and“printŽ¡‘#1.c–?ý2.c“3.cŽŽŽŒ‹ø c¶ s\È ý®£8‘Yï0pdf:dest (page.248) [@thispage /XYZ @xpos @ypos]ŽŽ 8G þ=GŸà‘YÆIndexŽŽ ¸å þQGŸ ‘Y²{absname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.229) >> >> 229ïpdf:eannޤ H‘Y{all-depGendencies,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.228) >> >> 228ïpdf:eannŽ© I‘Y{con gure,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.227) >> >> 227ïpdf:eannŽ¡‘Y{depGend,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.227) >> >> 227ïpdf:eannŽ¡‘Y{dotomak¸ãe,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.228) >> >> 228ïpdf:eannަ‘Y{force-dotomak¸ãe,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.227) >> >> 227ïpdf:eannŽ¡‘Y{install,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.229) >> >> 229ïpdf:eannަ‘Y{install-all,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.229) >> >> 229ïpdf:eannŽ¡‘Y{install-force,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.229) >> >> 229ïpdf:eannŽ¡‘Y{output-at-end,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.225) >> >> 225ïpdf:eannަ‘Y{output-normal,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.224) >> >> 224ïpdf:eannŽ¡‘Y{output-only-errors,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.225) >> >> 225ïpdf:eannŽ¡‘Y{output-p•Gostp“one,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.224) >> >> 224ïpdf:eannަ‘Y{prin¸ãt-depGendencies,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.228) >> >> 228ïpdf:eannŽ¡‘Y{prin¸ãt-exit,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.224) >> >> 224ïpdf:eannަ‘Y{prin¸ãt-status,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.224) >> >> 224ïpdf:eannŽ¡‘Y{progress,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.224) >> >> 224ïpdf:eannŽ¡‘Y{sho¸ãw-depGendencies,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.228) >> >> 228ïpdf:eannަ‘Y{v¸ãerbGose,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.224) >> >> 224ïpdf:eannŽ¡‘Y{v¸ãerb•Gose-dep“endencies,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.228) >> >> 228ïpdf:eannŽ¡‘Y-P‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.226) >> >> 226ïpdf:eannަ‘Y-R,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.227) >> >> 227ïpdf:eannŽ¡‘Y-S,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.223) >> >> 223ïpdf:eannަ‘Y-U,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.227) >> >> 227ïpdf:eannŽ¡‘Y-j,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.228) >> >> 228ïpdf:eannŽ¡‘Y-k,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.226) >> >> 226ïpdf:eannަ‘Y-n,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.226) >> >> 226ïpdf:eannŽ¡‘Y-o,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.225) >> >> 225ïpdf:eannŽ¡‘Y-p,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.226) >> >> 226ïpdf:eannަ‘Y-s,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.223) >> >> 223ïpdf:eannŽ¡‘Y-t,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.227) >> >> 227ïpdf:eannަ‘Y-w,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.224) >> >> 224ïpdf:eannŽ¡‘Y.BUILDORDER,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.136) >> >> 136ïpdf:eannŽ¡‘Y.BUILD‘™˜‰ffŽ‘™šBEGIN,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.195) >> >> 195ïpdf:eannަ‘Y.BUILD‘™˜‰ffŽ‘™šF‘þãAILURE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.195) >> >> 195ïpdf:eannŽ¡‘Y.BUILD‘™˜‰ffŽ‘™šSUCCESS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.195) >> >> 195ïpdf:eannŽŽŽ þQGŸ ’.DEF‘þãA¸ãUL‘ÿ*ªT,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.95) >> >> 95ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.100) >> >> 100ïpdf:eannޤ R’.INCLUDE,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.96) >> >> 96ïpdf:eannŽ¡’.MEMO,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.57) >> >> 57ïpdf:eannŽ¡’.ORDER,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.136) >> >> 136ïpdf:eannŽ© Q’.PHONY,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.72) >> >> 72ïpdf:eann,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.96) >> >> 96ïpdf:eann,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.99) >> >> 99ïpdf:eann{ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.101) >> >> 101ïpdf:eannŽ¡’.R¸ãULE,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.72) >> >> 72ïpdf:eannŽ¡’.SCANNER,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.37) >> >> 37ïpdf:eann,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.93) >> >> 93ïpdf:eann,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.98) >> >> 98ïpdf:eannŽ¡’.ST–ÿ*ªA“TIC,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.56) >> >> 56ïpdf:eannŽ¡’.SUBDIRS,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.30) >> >> 30ïpdf:eann,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.95) >> >> 95ïpdf:eannŽ¡’.SUBDIRS›UUb•Go“dies,˜ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.41) >> >> 41ïpdf:eannŽ¡’.omak¸ãerc,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.231) >> >> 231ïpdf:eannŽ¡’:e ects:,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.92) >> >> 92ïpdf:eannަ’:exists:,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.91) >> >> 91ïpdf:eannŽ¡’:k¸ãey:,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.57) >> >> 57ïpdf:eannŽ¡’:scanner:,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.94) >> >> 94ïpdf:eannŽ¡’:v‘ÿqÇalue:,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.92) >> >> 92ïpdf:eannŽ¡’$&,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.245) >> >> 245ïpdf:eannŽ¡’$*,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.89) >> >> 89ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.245) >> >> 245ïpdf:eannŽ¡’$+,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.89) >> >> 89ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.245) >> >> 245ïpdf:eannŽ¡’$<,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.89) >> >> 89ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.245) >> >> 245ïpdf:eannަ’$>,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.245) >> >> 245ïpdf:eannŽ¡’$@,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.89) >> >> 89ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.245) >> >> 245ïpdf:eannŽ¡’$^,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.89) >> >> 89ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.245) >> >> 245ïpdf:eannŽŸüû’ABOR‘ÿ*ªT‘™˜‰ffŽ–™šON‘™˜‰ffŽ“COMMAND‘™˜‰ffŽ“ERR¸ãOR,Ž© ’?ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannŽ¡’ABOR‘ÿ*ªT‘™˜‰ffŽ–™šON‘™˜‰ffŽ“DEPENDENCY‘™˜‰ffŽ“ERR¸ãORS,ަ’?ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.209) >> >> 209ïpdf:eannŽ¡’absname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.131) >> >> 131ïpdf:eannŽ¡’A¸ãC‘™˜‰ffŽ–™šMSG‘™˜‰ffŽ“CHECKING,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.217) >> >> 217ïpdf:eannŽ¡’Aš¸ãC‘™˜‰ffŽ–™šMSG‘™˜‰ffŽ“ERR˜OR,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡’A¸ãC‘™˜‰ffŽ–™šMSG‘™˜‰ffŽ“RESUL‘ÿ*ªT,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.217) >> >> 217ïpdf:eannŽŸ Q’A¸ãC‘™˜‰ffŽ–™šMSG‘™˜‰ffŽ“W‘þãARN,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡’A¸ãC‘™˜‰ffŽ–™šTR‘ÿ*ªY‘™˜‰ffŽ“COMPILE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡’A¸ãC‘™˜‰ffŽ–™šTR‘ÿ*ªY‘™˜‰ffŽ“LINK,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡’Aš¸ãC‘™˜‰ffŽ–™šTR‘ÿ*ªY‘™˜‰ffŽ“R˜UN,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽŽŽŽŽŽŸK’ýÿÿ248ŽŽŒ‹ù h  s\È ý®£8‘#ï0pdf:dest (page.249) [@thispage /XYZ @xpos @ypos]ÄINDEX’(ñÀ²249ŽŽ 8G ýÚŸ ‘#accept,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.156) >> >> 156ïpdf:eannޤ j‘#add,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡‘#add-pro‘Ž8ject-directories,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.145) >> >> 145ïpdf:eannŽ© k‘#add-wrappGer,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.118) >> >> 118ïpdf:eannŽ¡‘#addpre x,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.117) >> >> 117ïpdf:eannŽ¡‘#addsux,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.116) >> >> 116ïpdf:eannŽ¡‘#addsuxes,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.116) >> >> 116ïpdf:eannަ‘#aliases,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.222) >> >> 222ïpdf:eannŽ¡‘#and,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.105) >> >> 105ïpdf:eannŽ¡‘#apply‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.125) >> >> 125ïpdf:eannŽ¡‘#apply¸ãa,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.125) >> >> 125ïpdf:eannŽ¡‘#AR,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannަ‘#Arra¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.187) >> >> 187ïpdf:eannŽ¡‘#arra¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.111) >> >> 111ïpdf:eannŽ¡‘#arra¸ãys,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.48) >> >> 48ïpdf:eannŽ¡‘#AS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannŽ¡‘#ASFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannަ‘#ASOUT,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannŽ¡‘#asr,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡‘#a¸ãwk,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.38) >> >> 38ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.163) >> >> 163ïpdf:eannŽŸìÿ‘#basename,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.130) >> >> 130ïpdf:eannŽ¡‘#bg,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.181) >> >> 181ïpdf:eannŽ¡‘#BIBTEX,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘#bind,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.156) >> >> 156ïpdf:eannަ‘#break,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.122) >> >> 122ïpdf:eannŽ¡‘#build,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannŽ¡‘#build–UUmoGdel,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.29) >> >> 29ïpdf:eannŽ¡‘#BUILD‘™˜‰ffŽ‘™šSUMMAR‘ÿ*ªY,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannŽ¡‘#BYTE‘™˜‰ffŽ‘™šENABLED,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽŸìÿ‘#c-escapGed,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽ¡‘#CAMLP4,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘#capitalize,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.120) >> >> 120ïpdf:eannަ‘#case,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.106) >> >> 106ïpdf:eannŽ¡‘#cat,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.161) >> >> 161ïpdf:eannŽ¡‘#cats–UUand“dogs,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.35) >> >> 35ïpdf:eannŽ¡‘#CC,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannŽ¡‘#CCOUT,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannަ‘#cd,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.180) >> >> 180ïpdf:eannŽ¡‘#CDLL‘™˜‰ffŽ–™šIMPLIES‘™˜‰ffŽ“ST–ÿ*ªA“TIC,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.204) >> >> 204ïpdf:eannŽ¡‘#CFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannŽ¡‘#CGeneratedFiles,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannަ‘#Channel,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.189) >> >> 189ïpdf:eannŽ¡‘#c¸ãhannel-name,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.151) >> >> 151ïpdf:eannŽ¡‘#Chec¸ãkCHeader,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.217) >> >> 217ïpdf:eannŽŽŽ ýÚŸ ’áChec¸ãkCLib,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.217) >> >> 217ïpdf:eannޤ q’áChec¸ãkProg,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.217) >> >> 217ïpdf:eannŽ© p’ác¸ãhmoGd,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.143) >> >> 143ïpdf:eannŽ¡’ác•¸ãho“wn,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.144) >> >> 144ïpdf:eannަ’áCL‘™˜‰ffŽ‘™šF¸ãOUND,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannŽ¡’áclass,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannަ’áclasses,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.54) >> >> 54ïpdf:eannŽ¡’áclose,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.150) >> >> 150ïpdf:eannަ’ácmp-v¸ãersions,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.197) >> >> 197ïpdf:eannŽ¡’ácompare,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.127) >> >> 127ïpdf:eannަ’áconcat,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.112) >> >> 112ïpdf:eannŽ¡’áconditionals,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.52) >> >> 52ïpdf:eannަ’áConfMsgChec¸ãking,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.215) >> >> 215ïpdf:eannŽ¡’áConfMsgError,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.216) >> >> 216ïpdf:eannަ’áConfMsgF‘ÿ*ªound,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.216) >> >> 216ïpdf:eannŽ¡’áConfMsgResult,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.215) >> >> 215ïpdf:eannŽ¡’áConfMsgW‘ÿ*ªarn,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.216) >> >> 216ïpdf:eannަ’áConfMsgY‘ÿ*ªesNo,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.216) >> >> 216ïpdf:eannŽ¡’áconnect,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.156) >> >> 156ïpdf:eannަ’áconstan¸ãts,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.59) >> >> 59ïpdf:eannŽ¡’áCPP‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannަ’áCProgram,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.205) >> >> 205ïpdf:eannŽ¡’áCProgramCop¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.205) >> >> 205ïpdf:eannަ’áCProgramInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.205) >> >> 205ïpdf:eannŽ¡’ácreate-lazy-map,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.125) >> >> 125ïpdf:eannަ’ácreate-map,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.125) >> >> 125ïpdf:eannŽ¡’áCWD,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannަ’áCXX,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannŽ¡’áCXXFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannަ’áCXXProgram,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽ¡’áCXXProgramInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽŸ•’ádeclare,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.67) >> >> 67ïpdf:eannŽ¡’ádecoGde-uri,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.115) >> >> 115ïpdf:eannަ’ádefault,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.106) >> >> 106ïpdf:eannŽ¡’áDe neCommandV‘ÿ*ªars,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.197) >> >> 197ïpdf:eannަ’áde ned,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.108) >> >> 108ïpdf:eannŽ¡’áde ned-en¸ãv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.109) >> >> 109ïpdf:eannަ’ádepGendencies,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.197) >> >> 197ïpdf:eannŽ¡’ádepGendencies-all,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.197) >> >> 197ïpdf:eannަ’ádep•Gendencies-prop“er,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.197) >> >> 197ïpdf:eannŽ¡’ádigest,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.133) >> >> 133ïpdf:eannަ’ádigest-in-path,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.133) >> >> 133ïpdf:eannŽ¡’ádigest-in-path-optional,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.133) >> >> 133ïpdf:eannަ’ádigest-optional,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.133) >> >> 133ïpdf:eannŽ¡’áDir,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.189) >> >> 189ïpdf:eannŽŽŽŽŽŽŒ‹ú •¦ s\È ý®£8‘Yï0pdf:dest (page.250) [@thispage /XYZ @xpos @ypos]²250’(ñÀÄINDEXŽŽ 8G ýÚŸ ‘Y²dir,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.129) >> >> 129ïpdf:eannޤ j‘Ydirname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.131) >> >> 131ïpdf:eannŽ¡‘Ydirof,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.131) >> >> 131ïpdf:eannŽ© k‘YDIRSEP‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.201) >> >> 201ïpdf:eannŽ¡‘Ydiv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡‘Ydup,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.151) >> >> 151ïpdf:eannŽ¡‘Ydup2,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.152) >> >> 152ïpdf:eannަ‘YD¸ãVIPDFM,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘YD•¸ãVIPDFMFLA“GS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘YD¸ãVIPS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘YD•¸ãVIPSFLA“GS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘YDynamicCLibrary‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.204) >> >> 204ïpdf:eannަ‘YDynamicCLibraryCop¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.204) >> >> 204ïpdf:eannŽ¡‘YDynamicCLibraryInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.204) >> >> 204ïpdf:eannŽ¡‘YDynamicCXXLibrary‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽ¡‘YDynamicCXXLibraryCop¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽ¡‘YDynamicCXXLibraryInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽŸìÿ‘Yec¸ãho,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.180) >> >> 180ïpdf:eannŽ¡‘Yelse,–UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.106) >> >> 106ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.239) >> >> 239ïpdf:eannŽ¡‘Yelseif,–UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.106) >> >> 106ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.239) >> >> 239ïpdf:eannަ‘YEMPTY,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannŽ¡‘YencoGde-uri,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.115) >> >> 115ïpdf:eannŽ¡‘Yeprin¸ãt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannŽ¡‘Yeprin¸ãtln,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannަ‘Yeprin¸ãtv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.158) >> >> 158ïpdf:eannŽ¡‘Yeprin¸ãtvln,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.158) >> >> 158ïpdf:eannŽ¡‘Yeq,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannŽ¡‘Yequal,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.105) >> >> 105ïpdf:eannŽ¡‘YException,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.190) >> >> 190ïpdf:eannަ‘YEXE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.201) >> >> 201ïpdf:eannŽ¡‘Yexists-in-path,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.133) >> >> 133ïpdf:eannŽ¡‘Yexit,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.108) >> >> 108ïpdf:eannŽ¡‘YexpGort,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.72) >> >> 72ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.121) >> >> 121ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannŽ¡‘YEXT‘™˜‰ffŽ‘™šASM,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.201) >> >> 201ïpdf:eannަ‘YEXT‘™˜‰ffŽ‘™šDLL,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.201) >> >> 201ïpdf:eannŽ¡‘YEXT‘™˜‰ffŽ‘™šLIB,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.201) >> >> 201ïpdf:eannŽ¡‘YEXT‘™˜‰ffŽ‘™šOBJ,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.201) >> >> 201ïpdf:eannŽ¡‘Yextends,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannŽŸìÿ‘Yfg,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.181) >> >> 181ïpdf:eannŽ¡‘Yfgets,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannŽ¡‘YFile,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.189) >> >> 189ïpdf:eannަ‘Y le,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.129) >> >> 129ïpdf:eannŽ¡‘Y le-c•¸ãhec“k-sort,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.137) >> >> 137ïpdf:eannŽ¡‘Y le-exists,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.134) >> >> 134ïpdf:eannŽŽŽ ýÚŸ ’ le-sort,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.136) >> >> 136ïpdf:eannޤ •’ lter,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.119) >> >> 119ïpdf:eannŽ© ”’ lter-exists,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.134) >> >> 134ïpdf:eannŽ¡’ lter-out,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.119) >> >> 119ïpdf:eannŽ¡’ lter-propGer-targets,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.134) >> >> 134ïpdf:eannŽ¡’ lter-targets,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.134) >> >> 134ïpdf:eannަ’ nd,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.147) >> >> 147ïpdf:eannŽ¡’ nd-build-targets,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.198) >> >> 198ïpdf:eannŽ¡’ nd-in-path,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.133) >> >> 133ïpdf:eannŽ¡’ nd-in-path-optional,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.133) >> >> 133ïpdf:eannަ’ nd-oGcaml-targets-in-path-optional,ŽŸ ’?ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.136) >> >> 136ïpdf:eannŽ¡’ nd-targets-in-path,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.135) >> >> 135ïpdf:eannŽ¡’ nd-targets-in-path-optional,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.135) >> >> 135ïpdf:eannŽ¡’Float,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.185) >> >> 185ïpdf:eannަ’ oat,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡’ ush,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.151) >> >> 151ïpdf:eannŽ¡’fopGen,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.149) >> >> 149ïpdf:eannŽ¡’foreac¸ãh,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.126) >> >> 126ïpdf:eannަ’fprin¸ãt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannŽ¡’fprin¸ãtln,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannŽ¡’fprin¸ãtv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.158) >> >> 158ïpdf:eannŽ¡’fprin¸ãtvln,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.158) >> >> 158ïpdf:eannަ’fsubst,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.165) >> >> 165ïpdf:eannŽ¡’fullname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.131) >> >> 131ïpdf:eannŽ¡’F‘ÿ*ªun,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.187) >> >> 187ïpdf:eannŽ¡’fun,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannަ’functions,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.49) >> >> 49ïpdf:eannŽŸ—™’GCC‘™˜‰ffŽ‘™šF¸ãOUND,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.201) >> >> 201ïpdf:eannŽ¡’ge,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannŽ¡’get-registry‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.110) >> >> 110ïpdf:eannަ’getc¸ãhar,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannŽ¡’geten¸ãv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.109) >> >> 109ïpdf:eannŽ¡’getgrgid,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannŽ¡’getgrnam,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannަ’gethostb¸ãyname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.154) >> >> 154ïpdf:eannŽ¡’getprotob¸ãyname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.154) >> >> 154ïpdf:eannŽ¡’getp•¸ãw“en“ts,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannŽ¡’getp¸ãwnam,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannަ’getp¸ãwuid,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannŽ¡’gets,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannŽ¡’getservb¸ãyname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.155) >> >> 155ïpdf:eannŽ¡’gettimeofda¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.175) >> >> 175ïpdf:eannަ’getv‘ÿqÇar,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.111) >> >> 111ïpdf:eannŽ¡’glob,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.139) >> >> 139ïpdf:eannŽŽŽŽŽŽŒ‹û Ǩ s\È ý®£8‘#ï0pdf:dest (page.251) [@thispage /XYZ @xpos @ypos]ÄINDEX’(ñÀ²251ŽŽ 8G ýÚŸ ‘#global.,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.65) >> >> 65ïpdf:eannޤ ‘#gr‘™˜‰ffŽ‘™šgid,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannŽ¡‘#gr‘™˜‰ffŽ‘™šgroup,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannŽ¡‘#gr‘™˜‰ffŽ‘™šmem,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannŽ¡‘#gr‘™˜‰ffŽ‘™šname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannŽ¡‘#grep,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.161) >> >> 161ïpdf:eannŽ¡‘#Group,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.173) >> >> 173ïpdf:eannŽ¡‘#gt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannŽ¡‘#GXX‘™˜‰ffŽ‘™šF¸ãOUND,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannŽ©™š‘#history‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.181) >> >> 181ïpdf:eannŽ¡‘#HOME,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannŽ¡‘#homename,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.132) >> >> 132ïpdf:eannŽ¡‘#HOST,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannŽ¡‘#Host,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.154) >> >> 154ïpdf:eannŽ¡‘#h¸ãtml-escapGed,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽ¡‘#h¸ãtml-pre-escapGed,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽ¡‘#h¸ãtml-string,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.116) >> >> 116ïpdf:eannŽŸ™™‘#id-escapGed,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽ¡‘#if,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.52) >> >> 52ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.106) >> >> 106ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.239) >> >> 239ïpdf:eannŽ¡‘#ignoreeof,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.222) >> >> 222ïpdf:eannŽ¡‘#in,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.130) >> >> 130ïpdf:eannŽ¡‘#InChannel,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.189) >> >> 189ïpdf:eannŽ¡‘#include,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.50) >> >> 50ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannŽ¡‘#INCLUDES,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannŽ¡‘#InetAddr,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.154) >> >> 154ïpdf:eannŽ¡‘#inheritance,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.55) >> >> 55ïpdf:eannŽ¡‘#input-line,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.150) >> >> 150ïpdf:eannŽ¡‘#INST‘ÿ*ªALL,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannŽ¡‘#In¸ãt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.185) >> >> 185ïpdf:eannŽ¡‘#in¸ãt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡‘#in¸ãtersection,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.118) >> >> 118ïpdf:eannŽ¡‘#in¸ãtersects,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.119) >> >> 119ïpdf:eannަ‘#jobs,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.181) >> >> 181ïpdf:eannŽ¡‘#join,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽŸ™™‘#kill,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.181) >> >> 181ïpdf:eannަ‘#land,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡‘#LA‘ÿ*ªTEX,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘#LaT‘ÿ*ªeXDoGcumen¸ãt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.214) >> >> 214ïpdf:eannŽ¡‘#LaT›ÿ*ªeXDoGcumen•¸ãtCop“y˜,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.214) >> >> 214ïpdf:eannŽ¡‘#LaT‘ÿ*ªeXDoGcumen¸ãtInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.214) >> >> 214ïpdf:eannŽ¡‘#LA‘ÿ*ªTEXFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘#LD,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannŽŽŽ ýÚŸ ’áLDFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannޤ q’áLDFLA¸ãGS‘™˜‰ffŽ‘™šDLL,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannŽ© p’áLDOUT,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannŽ¡’ále,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannަ’álength,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.112) >> >> 112ïpdf:eannŽ¡’áLEX,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannަ’álex,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.165) >> >> 165ïpdf:eannŽ¡’álex-searc¸ãh,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.166) >> >> 166ïpdf:eannަ’áLexer,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.167) >> >> 167ïpdf:eannŽ¡’áLIB‘™˜‰ffŽ‘™šF¸ãOUND,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannަ’áLIBS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.202) >> >> 202ïpdf:eannŽ¡’álink,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.143) >> >> 143ïpdf:eannަ’álink-order–UUsorting,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.136) >> >> 136ïpdf:eannŽ¡’álisten,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.156) >> >> 156ïpdf:eannަ’álnot,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡’áLoGcalCGeneratedFiles,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannŽ¡’áLoGcalOCamlGeneratedFiles,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.209) >> >> 209ïpdf:eannަ’áLoGcalT‘ÿ*ªeX¸ãGeneratedFiles,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.214) >> >> 214ïpdf:eannŽ¡’áLoGcation,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.190) >> >> 190ïpdf:eannަ’áloGc¸ãkf,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.153) >> >> 153ïpdf:eannŽ¡’álor,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannަ’álo•¸ãw“ercase,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.120) >> >> 120ïpdf:eannŽ¡’áls,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.140) >> >> 140ïpdf:eannަ’álseek,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.150) >> >> 150ïpdf:eannŽ¡’álsl,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannަ’álsr,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡’álstat,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.141) >> >> 141ïpdf:eannަ’ált,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannŽ¡’álxor,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽŸ•’áMA¸ãCHINE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannŽ¡’áMAKEINDEX,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannަ’áMap,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.184) >> >> 184ïpdf:eannŽ¡’ámappre x,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.117) >> >> 117ïpdf:eannަ’ámapsux,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.116) >> >> 116ïpdf:eannŽ¡’ámatc¸ãh,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.52) >> >> 52ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.106) >> >> 106ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.239) >> >> 239ïpdf:eannަ’ámax,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡’ámem,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.118) >> >> 118ïpdf:eannަ’áMENHIR‘™˜‰ffŽ‘™šA–þãV“AILABLE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽ¡’áMENHIR‘™˜‰ffŽ‘™šENABLED,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannަ’áMENHIR‘™˜‰ffŽ‘™šFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡’ámin,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannަ’ámkdir,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.140) >> >> 140ïpdf:eannŽ¡’ámk fo,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.152) >> >> 152ïpdf:eannަ’ámoGd,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡’ám¸ãul,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽŽŽŽŽŽŒ‹ü ú¸ s\È ý®£8‘Yï0pdf:dest (page.252) [@thispage /XYZ @xpos @ypos]²252’(ñÀÄINDEXŽŽ 8G ýÚŸ ‘Y²NA‘ÿ*ªTIVE‘™˜‰ffŽ‘™šENABLED,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannޤ á‘YNCURSES‘™˜‰ffŽ‘™šA–þãV“AILABLE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡‘YNCURSES‘™˜‰ffŽ‘™šCFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡‘YNCURSES‘™˜‰ffŽ‘™šCLIBS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡‘YNCURSES‘™˜‰ffŽ–™šTERMH‘™˜‰ffŽ“IN‘™˜‰ffŽ“NCURSES,ŽŸ ’ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡‘Yneg,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡‘YNoGde,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.188) >> >> 188ïpdf:eannŽ¡‘YNODENAME,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.103) >> >> 103ïpdf:eannŽ© à‘Ynot,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.105) >> >> 105ïpdf:eannŽ¡‘Yn¸ãth,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.112) >> >> 112ïpdf:eannŽ¡‘Yn¸ãth-hd,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.113) >> >> 113ïpdf:eannŽ¡‘Yn¸ãth-tl,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.113) >> >> 113ïpdf:eannŽ¡‘YNum¸ãbGer,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.185) >> >> 185ïpdf:eannŽŸœÛ‘YOb‘Ž8ject,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.183) >> >> 183ïpdf:eannŽ¡‘Yob‘Ž8jects,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.54) >> >> 54ïpdf:eannŽ¡‘Yo•Gcaml-escap“ed,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽ¡‘YOCAML‘™˜‰ffŽ–™šBYTE‘™˜‰ffŽ“LINK‘™˜‰ffŽ“FLA¸ãGS,‘8ãïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡‘YOCAML‘™˜‰ffŽ‘™šCLIBS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.209) >> >> 209ïpdf:eannŽ¡‘YOCAML‘™˜‰ffŽ–™šLIB‘™˜‰ffŽ“FLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.209) >> >> 209ïpdf:eannŽ¡‘YOCAML‘™˜‰ffŽ‘™šLIBS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.209) >> >> 209ïpdf:eannަ‘YOCAML‘™˜‰ffŽ–™šLINK‘™˜‰ffŽ“FLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡‘YOCAML‘™˜‰ffŽ–™šNA‘ÿ*ªTIVE‘™˜‰ffŽ“LINK‘™˜‰ffŽ“FLA¸ãGS,‘8ãïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡‘YOCAML‘™˜‰ffŽ–™šOTHER‘™˜‰ffŽ“LIBS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.209) >> >> 209ïpdf:eannŽ¡‘YOCAMLC,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘YOCAMLCFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡‘YOCAMLDEP‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘YoGcamldep-omak¸ãe,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.210) >> >> 210ïpdf:eannŽ¡‘YOCAMLDEP‘™˜‰ffŽ‘™šMODULES,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘YOCAMLDEP‘™˜‰ffŽ–™šMODULES‘™˜‰ffŽ“A–þãV“AILABLE,Ž© ’ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽ¡‘YOCAMLDEP‘™˜‰ffŽ–™šMODULES‘™˜‰ffŽ“ENABLED,ަ’ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘YOCAMLDEPFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡‘YOCAMLFIND,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡‘YOCAMLFIND‘™˜‰ffŽ‘™šEXISTS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽ¡‘YOCAMLFINDFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽŸ à‘YOCAMLFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡‘YOCamlGeneratedFiles,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.209) >> >> 209ïpdf:eannŽ¡‘YOCAMLINCLUDES,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘YOCAMLLEX,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘YOCAMLLEXFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘YOCamlLibrary‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.211) >> >> 211ïpdf:eannŽ¡‘YOCamlLibraryCop¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.212) >> >> 212ïpdf:eannŽ¡‘YOCamlLibraryInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.212) >> >> 212ïpdf:eannŽŽŽ ýÚŸ ’OCAMLLINK,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannޤ q’OCAMLMKTOP‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ© p’OCAMLOPT,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡’OCAMLOPT‘™˜‰ffŽ‘™šEXISTS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannަ’OCAMLOPTFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡’OCAMLOPTLINK,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannަ’OCamlP•¸ãac“k‘ÿqÇage,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.211) >> >> 211ïpdf:eannŽ¡’OCAMLP‘ÿ*ªA¸ãCKS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannަ’OCAMLPPFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.208) >> >> 208ïpdf:eannŽ¡’OCamlProgram,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.212) >> >> 212ïpdf:eannަ’OCamlProgramCop¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.212) >> >> 212ïpdf:eannŽ¡’OCamlProgramInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.212) >> >> 212ïpdf:eannަ’OCAML–ÿ*ªY“A¸ãCC,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡’OCAML–ÿ*ªY“A•¸ãCCFLA“GS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannަ’OMAKE‘™˜‰ffŽ‘™šVERSION,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.103) >> >> 103ïpdf:eannŽ¡’OMak¸ãe le,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.26) >> >> 26ïpdf:eann,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.30) >> >> 30ïpdf:eannŽ¡’OMAKEFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.229) >> >> 229ïpdf:eannަ’OMak¸ãeFlags,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.196) >> >> 196ïpdf:eannŽ¡’OMAKELIB,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.230) >> >> 230ïpdf:eannަ’OMAKEP–ÿ*ªA“TH,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.103) >> >> 103ïpdf:eannŽ¡’OMak¸ãeroGot,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.26) >> >> 26ïpdf:eann,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.30) >> >> 30ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannަ’OMak¸ãeV‘ÿ*ªersion,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.196) >> >> 196ïpdf:eannŽ¡’opGen,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.50) >> >> 50ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannަ’opGen-in-string,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.149) >> >> 149ïpdf:eannŽ¡’opGen-out-string,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.149) >> >> 149ïpdf:eannަ’or,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.105) >> >> 105ïpdf:eannŽ¡’OS‘™˜‰ffŽ‘™šVERSION,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannަ’OSTYPE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.103) >> >> 103ïpdf:eannŽ¡’out-con•¸ãten“ts,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.149) >> >> 149ïpdf:eannަ’OutChannel,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.189) >> >> 189ïpdf:eannŽŸ•’P¸ãarser,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.169) >> >> 169ïpdf:eannަ’P¸ãasswd,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.172) >> >> 172ïpdf:eannŽ¡’P–ÿ*ªA“THSEP“,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.201) >> >> 201ïpdf:eannަ’PDFLA‘ÿ*ªTEX,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡’PDFLA‘ÿ*ªTEXFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannަ’PID,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannŽ¡’pipGe,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.152) >> >> 152ïpdf:eannަ’prin¸ãt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannŽ¡’prin¸ãtln,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.157) >> >> 157ïpdf:eannަ’prin¸ãtv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.158) >> >> 158ïpdf:eannŽ¡’prin¸ãtvln,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.158) >> >> 158ïpdf:eannަ’priv‘ÿqÇate.,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.63) >> >> 63ïpdf:eannŽ¡’pro‘Ž8ject-directories,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.199) >> >> 199ïpdf:eannަ’prompt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.221) >> >> 221ïpdf:eannŽ¡’prompt-in¸ãvisible,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.174) >> >> 174ïpdf:eannŽŽŽŽŽŽŒ‹ý -{ s\È ý®£8‘#ï0pdf:dest (page.253) [@thispage /XYZ @xpos @ypos]ÄINDEX’(ñÀ²253ŽŽ 8G ýÚŸ ‘#prompt-in¸ãvisible-bGegin,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.174) >> >> 174ïpdf:eannޤ j‘#prompt-in¸ãvisible-end,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.174) >> >> 174ïpdf:eannŽ¡‘#protected.,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.66) >> >> 66ïpdf:eannŽ© k‘#ProtoGcol,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.154) >> >> 154ïpdf:eannŽ¡‘#public.,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.66) >> >> 66ïpdf:eannŽ¡‘#p¸ãw‘™˜‰ffŽ‘™šdir,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.172) >> >> 172ïpdf:eannŽ¡‘#p¸ãw‘™˜‰ffŽ‘™šgecos,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.172) >> >> 172ïpdf:eannަ‘#p¸ãw‘™˜‰ffŽ‘™šgid,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.172) >> >> 172ïpdf:eannŽ¡‘#p¸ãw‘™˜‰ffŽ‘™šname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.172) >> >> 172ïpdf:eannŽ¡‘#p¸ãw‘™˜‰ffŽ‘™špasswd,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.172) >> >> 172ïpdf:eannŽ¡‘#p¸ãw‘™˜‰ffŽ‘™šshell,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.172) >> >> 172ïpdf:eannŽ¡‘#p¸ãw‘™˜‰ffŽ‘™šuid,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.172) >> >> 172ïpdf:eannŽŸìÿ‘#quotations,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.48) >> >> 48ïpdf:eannŽ¡‘#quote,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.115) >> >> 115ïpdf:eannŽ¡‘#quote-argv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.115) >> >> 115ïpdf:eannަ‘#quoted–UUstrings,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.80) >> >> 80ïpdf:eannŽŸìþ‘#raise,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.108) >> >> 108ïpdf:eannŽ¡‘#random,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannަ‘#random-init,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡‘#read,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.150) >> >> 150ïpdf:eannŽ¡‘#READLINE‘™˜‰ffŽ‘™šA–þãV“AILABLE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.218) >> >> 218ïpdf:eannŽ¡‘#READLINE‘™˜‰ffŽ‘™šCFLA¸ãGS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.219) >> >> 219ïpdf:eannŽ¡‘#READLINE‘™˜‰ffŽ‘™šCLIBS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.219) >> >> 219ïpdf:eannަ‘#READLINE‘™˜‰ffŽ‘™šGNU,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.219) >> >> 219ïpdf:eannŽ¡‘#readlink,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.143) >> >> 143ïpdf:eannŽ¡‘#regular–UUexpressions,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.158) >> >> 158ïpdf:eannŽ¡‘#rehash,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.132) >> >> 132ïpdf:eannަ‘#remo•¸ãv“e-pro‘Ž8ject-directories,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.145) >> >> 145ïpdf:eannŽ¡‘#remo•¸ãv“epre x,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.117) >> >> 117ïpdf:eannŽ¡‘#remo•¸ãv“esux,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.117) >> >> 117ïpdf:eannŽ¡‘#rename,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.142) >> >> 142ïpdf:eannŽ¡‘#replace-n¸ãth,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.113) >> >> 113ïpdf:eannަ‘#replacesuxes,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.117) >> >> 117ïpdf:eannŽ¡‘#return,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.49) >> >> 49ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannŽ¡‘#rev,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽ¡‘#rewind,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.151) >> >> 151ïpdf:eannŽ¡‘#R¸ãOOT,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannަ‘#roGotname,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.131) >> >> 131ïpdf:eannŽ¡‘#Rule,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.187) >> >> 187ïpdf:eannŽ¡‘#rule,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.199) >> >> 199ïpdf:eannŽ¡‘#rule,–UUoptions,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.91) >> >> 91ïpdf:eannަ‘#rule,–UUscoping,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.97) >> >> 97ïpdf:eannŽ¡‘#rules,–UUbGounded“implicit,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.90) >> >> 90ïpdf:eannŽ¡‘#rules,–UUimplicit,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.90) >> >> 90ïpdf:eannŽŽŽ ýÚŸ ’áRunCProg,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.216) >> >> 216ïpdf:eannޤ q’áRun¸ãtimeException,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.190) >> >> 190ïpdf:eannŽŸ•’áscan,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.161) >> >> 161ïpdf:eannŽ© p’áSCANNER‘™˜‰ffŽ‘™šMODE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannŽ¡’ásection,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.50) >> >> 50ïpdf:eann,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.91) >> >> 91ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannަ’ásection–UUrule,“ïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.91) >> >> 91ïpdf:eannŽ¡’áselect,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.153) >> >> 153ïpdf:eannަ’áSequence,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.186) >> >> 186ïpdf:eannŽ¡’ásequence-forall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.126) >> >> 126ïpdf:eannަ’ásequence-sort,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.127) >> >> 127ïpdf:eannŽ¡’áService,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.155) >> >> 155ïpdf:eannަ’áset,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.118) >> >> 118ïpdf:eannŽ¡’áset-close-on-exec-moGde,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.152) >> >> 152ïpdf:eannަ’áset-di ,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.119) >> >> 119ïpdf:eannŽ¡’áset-non•¸ãbloGc“k,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.152) >> >> 152ïpdf:eannŽ¡’áseten¸ãv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.110) >> >> 110ïpdf:eannަ’ásetv‘ÿqÇar,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.111) >> >> 111ïpdf:eannŽ¡’áShell,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.191) >> >> 191ïpdf:eannަ’áshell,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.121) >> >> 121ïpdf:eannŽ¡’áSNPRINTF‘™˜‰ffŽ‘™šA–þãV“AILABLE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.219) >> >> 219ïpdf:eannަ’ásoGc•¸ãk“et,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.155) >> >> 155ïpdf:eannŽ¡’ásorting–UU(link-order),“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.136) >> >> 136ïpdf:eannަ’ásplit,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.112) >> >> 112ïpdf:eannŽ¡’áStat,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.141) >> >> 141ïpdf:eannަ’ástat,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.141) >> >> 141ïpdf:eannŽ¡’ástat-reset,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.134) >> >> 134ïpdf:eannަ’ástatic.,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.55) >> >> 55ïpdf:eannŽ¡’áStaticCLibrary‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.204) >> >> 204ïpdf:eannަ’áStaticCLibraryCop¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.204) >> >> 204ïpdf:eannŽ¡’áStaticCLibraryInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.204) >> >> 204ïpdf:eannŽ¡’áStaticCOb‘Ž8ject,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.205) >> >> 205ïpdf:eannަ’áStaticCOb‘Ž8jectCop¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.205) >> >> 205ïpdf:eannŽ¡’áStaticCOb‘Ž8jectInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.205) >> >> 205ïpdf:eannަ’áStaticCXXLibrary‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽ¡’áStaticCXXLibraryCop¸ãy‘ÿ*ª,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannަ’áStaticCXXLibraryInstall,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.206) >> >> 206ïpdf:eannŽ¡’ástderr,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.149) >> >> 149ïpdf:eannަ’ástdin,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.148) >> >> 148ïpdf:eannŽ¡’áSTDLIB,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.103) >> >> 103ïpdf:eannަ’ástdout,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.148) >> >> 148ïpdf:eannŽ¡’áSTDR¸ãOOT,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.200) >> >> 200ïpdf:eannަ’ástop,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.181) >> >> 181ïpdf:eannŽ¡’áString,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.187) >> >> 187ïpdf:eannަ’ástring,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽ¡’ástring-escapGed,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannŽŽŽŽŽŽŒ‹þ bÌ s\È ý®£8‘Yï0pdf:dest (page.254) [@thispage /XYZ @xpos @ypos]²254’(ñÀÄINDEXŽŽ 8G ýÚŸ ‘Y²string-length,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.114) >> >> 114ïpdf:eannޤ ²‘Ysub,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.123) >> >> 123ïpdf:eannŽ¡‘YsubGdirs,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.140) >> >> 140ïpdf:eannŽ¡‘Ysubrange,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.113) >> >> 113ïpdf:eannŽ¡‘Ysux,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.132) >> >> 132ïpdf:eannŽ© ³‘Yswitc¸ãh,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.52) >> >> 52ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.106) >> >> 106ïpdf:eannŽ¡‘Ysymlink,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.143) >> >> 143ïpdf:eannŽ¡‘YSYSNAME,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.103) >> >> 103ïpdf:eannŽ¡‘Ysystem,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.120) >> >> 120ïpdf:eannŽŸ&ô‘YT‘ÿ*ªarget,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.187) >> >> 187ïpdf:eannަ‘Ytarget,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.198) >> >> 198ïpdf:eannŽ¡‘Ytarget-exists,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.134) >> >> 134ïpdf:eannŽ¡‘Ytarget-is-propGer,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.134) >> >> 134ïpdf:eannŽ¡‘YT‘ÿ*ªAR¸ãGETS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannŽ¡‘Ytell,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.151) >> >> 151ïpdf:eannŽ¡‘Ytest,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.145) >> >> 145ïpdf:eannŽ¡‘YTETEX2‘™˜‰ffŽ‘™šENABLED,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘YTEXDEPS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.214) >> >> 214ïpdf:eannŽ¡‘YT‘ÿ*ªeX¸ãGeneratedFiles,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.214) >> >> 214ïpdf:eannަ‘YTEXINPUTS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.214) >> >> 214ïpdf:eannŽ¡‘YTEXV‘þãARS,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.214) >> >> 214ïpdf:eannŽ¡‘Ytgetstr,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.174) >> >> 174ïpdf:eannŽ¡‘Ythis.,‘UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.64) >> >> 64ïpdf:eannŽ¡‘Ytmp le,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.130) >> >> 130ïpdf:eannŽ¡‘Ytruncate,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.144) >> >> 144ïpdf:eannŽ¡‘Ytry‘ÿ*ª,–UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.107) >> >> 107ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.239) >> >> 239ïpdf:eannŽ¡‘YT‘ÿ*ªryCompileC,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.216) >> >> 216ïpdf:eannŽ¡‘YT‘ÿ*ªryLinkC,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.216) >> >> 216ïpdf:eannަ‘YT‘ÿ*ªryRunC,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.216) >> >> 216ïpdf:eannŽŸ&ô‘Yuge,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannŽ¡‘Yugt,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannŽ¡‘Yule,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannŽ¡‘Yult,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.124) >> >> 124ïpdf:eannަ‘Yumask,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.144) >> >> 144ïpdf:eannŽ¡‘YUn¸ãbuildableException,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.190) >> >> 190ïpdf:eannŽ¡‘Yuncapitalize,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.120) >> >> 120ïpdf:eannŽ¡‘Yunlink,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.142) >> >> 142ïpdf:eannŽ¡‘Yunseten¸ãv,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.110) >> >> 110ïpdf:eannŽ¡‘YuppGercase,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.120) >> >> 120ïpdf:eannŽ¡‘YUSE‘™˜‰ffŽ‘™šOCAMLFIND,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.207) >> >> 207ïpdf:eannŽ¡‘YUSEPDFLA‘ÿ*ªTEX,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.213) >> >> 213ïpdf:eannŽ¡‘YUSER,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannŽŸ&õ‘Yv‘ÿqÇalue,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.49) >> >> 49ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannŽŽŽ ýÚŸ ’v‘ÿqÇariable–UUde nition,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.229) >> >> 229ïpdf:eannޤ ’VERBOSE,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.104) >> >> 104ïpdf:eannŽ¡’V‘ÿ*ªerbGoseChec¸ãkCHeader,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.217) >> >> 217ïpdf:eannŽ¡’V‘ÿ*ªerbGoseChec¸ãkCLib,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.217) >> >> 217ïpdf:eannŽ¡’vmoun¸ãt,–UUïepdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.27) >> >> 27ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.144) >> >> 144ïpdf:eannŽ©’w¸ãait,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.181) >> >> 181ïpdf:eannŽ¡’where,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.132) >> >> 132ïpdf:eannŽ¡’whic¸ãh,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.132) >> >> 132ïpdf:eannŽ¡’while,–UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.121) >> >> 121ïpdf:eann,“ïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.240) >> >> 240ïpdf:eannŽ¡’write,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.150) >> >> 150ïpdf:eannަ’xterm-escapGe,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.174) >> >> 174ïpdf:eannŽ¡’xterm-escap•Ge-b“egin,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.174) >> >> 174ïpdf:eannŽ¡’xterm-escapGe-end,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.174) >> >> 174ïpdf:eannަ’Y‘ÿ*ªA¸ãCC,‘UUïfpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (page.203) >> >> 203ïpdf:eannŽŽŽŽŽŽŒ‹ÿ –ì s\È ý®£8‘#ï0pdf:dest (page.255) [@thispage /XYZ @xpos @ypos]ŽŽ 8G ýÚ‘#ï2pdf:dest (appendix.C) [@thispage /XYZ @xpos @ypos]ŸUÊApp‘¥ëendix‘Ç CŽŸ2ÆReferencesŽŸ(ï3pdf:dest (section.C.1) [@thispage /XYZ @xpos @ypos]ŸÌC.1Ž‘(üSee‘ffAlsoޤç²omakš¸ãe(1)–UU(Chapter“ïgpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.1) >> >> 1ïpdf:eann),“osh(1)“(Chapter“ïhpdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [1 0 0] /A << /S /GoTo /D (chapter.15) >> >> 15ïpdf:eann),“mak˜e(1)ŽŸŽ;ï3pdf:dest (section.C.2) [@thispage /XYZ @xpos @ypos]Ÿ€ÌC.2Ž‘(üV‘þ¦fersionŽ¡²V‘ÿ*ªersion:‘qÇ0.9.8.5–UUof“August“7,“2007.ŽŸï3pdf:dest (section.C.3) [@thispage /XYZ @xpos @ypos]©9ÌC.3Ž‘(üLicense–ffand“Cop•ŒÌyrigh“tŽ¡‘Çž²×²cŽŽŽ¸ ŽŽŽ‘ UV²2003-2006,›UUMo‘Ž8ja•¸ãv“e˜Group,˜Caltec“hޤ ‘This–³/program›³0is“free“soft•¸ãw“are;‘é=y“ou–³/can“redistribute˜it“and/or“moGdify˜it“underŽ¡the–Ömterms“of“the“GNU‘ÖMGeneral“Public“License“as“published“bš¸ãy“the“F‘ÿ*ªree“Soft˜w˜areŽ¡F‘ÿ*ªoundation;–UUv¸ãersion“2“of“the“License.Ž¡‘This–`Rprogram“is›`Qdistributed“in“the“hopGe˜that“it“will“bGe˜useful,‘‘Sbut“WITHOUTŽ¡ANY‘' W‘þãARRANTY;–'without“evš¸ãen“the“implied“w˜arran˜t˜y“of“MER˜CHANT‘ÿ*ªABIL-Ž¡ITY–I"or›IaFITNESS“F¸ãOR“A“P–ÿ*ªAR“TICULAR–I"PURPOSE.‘I`See˜the˜GNU“GeneralŽ¡Public–UULicense“for“more“details.Ž¡‘Y‘ÿ*ªou–þshould“ha•¸ãv“e›ÿreceiv“ed–þa“cop¸ãy“of“the“GNU‘ïGeneral˜Public“License“alongŽ¡with–Óthis“program;‘þ€if“not,‘í!write“to‘Óthe“F›ÿ*ªree“Soft•¸ãw“are–ÓF˜oundation,‘í!Inc.,‘í"675“MassŽ¡Av•¸ãe,›UUCam“bridge,˜MA˜02139,˜USA.ŽŸï3pdf:dest (section.C.4) [@thispage /XYZ @xpos @ypos]¦ÌC.4Ž‘(üAuthorŽŸç²Jason›UUHic•¸ãk“ey‘ÿ*ª,˜Aleksey˜Nogin,˜Îet.‘™–al.Ž¡²Caltec¸ãh‘UU256-80Ž¡P¸ãasadena,–UUCA“91125,“USAŽ¡Email:‘qÇÈomake-devel@metaprl.orgŽ¡²WWW:–UUï|pdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [0 1 1] /A << /S /URI /URI (http://www.cs.caltech.edu/~jyh) >> >>Èhttp://www.cs.caltech.edu/Ÿýjª·Ž‘@Èjyhïpdf:eann“²and“ïopdf:bann << /Type /Annot /Subtype /Link /Border [0 0 1] /C [0 1 1] /A << /S /URI /URI (http://nogin.org/) >> >>Èhttp://nogin.org/ïpdf:eannŽŽŸK’Çÿÿ²255ŽŽŒø ¹%ƒ’À;ès\Ȳÿó*¡8)Ïcmsl8ó)2Ç@Écmbx8ó&߆µT cmtt12ó%ßê cmmi10ó 0e—rcmmi7óKñ`y cmr10óÙ“ Rcmr7ù Â'ßßßßßomake-0.9.8.5/doc/tex/0000775000152300015230000000000010660137231012477 5ustar jyhjyhomake-0.9.8.5/doc/txt/0000775000152300015230000000000010660137231012516 5ustar jyhjyhomake-0.9.8.5/doc/txt/omake-doc.txt0000664000152300015230000144634010656155147015145 0ustar jyhjyh OMake manual: The OMake user guide and reference manual ***************************************** Jason Hickey, Aleksey Nogin, et. al. ==================================== 7^thAugust, 2007 ================ All the documentation on a single page (23) OMake table of contents ----------------------------------- (1) http://omake.metaprl.org/ (2) omake.html (3) omake-doc.html (4) omake-toc.html (5) omake-contents.html (6) omake-all-index.html (7) omake-var-index.html (8) omake-fun-index.html (9) omake-obj-index.html (10) omake-target-index.html (11) omake-option-index.html (12) http://omake.metaprl.org/ (13) omake.html (14) omake-doc.html (15) omake-toc.html (16) omake-contents.html (17) omake-all-index.html (18) omake-var-index.html (19) omake-fun-index.html (20) omake-obj-index.html (21) omake-target-index.html (22) omake-option-index.html (23) omake-doc.html Contents ******** - Chapter 1 Guide - Chapter 2 OMake quickstart guide - 2.1 Description - 2.1.1 Automatic dependency analysis - 2.1.2 Content-based dependency analysis - 2.2 For users already familiar with make - 2.3 Building a small C program - 2.4 Larger projects - 2.5 Subdirectories - 2.6 Other things to consider - 2.7 Building OCaml programs - 2.8 The OMakefile and OMakeroot files - 2.9 Multiple version support - 2.10 Notes - Chapter 3 Additional build examples - 3.1 OMakeroot vs. OMakefile - 3.2 An example C project - 3.3 An example OCaml project - 3.4 Handling new languages - 3.4.1 Defining a default compilation rule - 3.4.2 Defining a rule for linking - 3.4.3 Dependency scanning - 3.4.4 Pulling it all together - 3.4.5 Finishing up - 3.5 Collapsing the hierarchy, .SUBDIRS bodies - 3.5.1 Using glob patterns - 3.5.2 Simplified sub-configurations - 3.5.3 Computing the subdirectory list - 3.5.4 Temporary directories - Chapter 4 OMake concepts and syntax - 4.1 Variables - 4.2 Adding to a variable definition - 4.3 Arrays - 4.4 Special characters and quoting - 4.5 Function definitions - 4.6 Comments - 4.7 File inclusion - 4.8 Scoping, sections - 4.9 Conditionals - 4.10 Matching - 4.11 Objects - 4.12 Classes - 4.13 Inheritance - 4.14 static. - 4.14.1 .STATIC - 4.14.1.1 .MEMO - 4.14.1.2 :key: - 4.15 Constants - Chapter 5 Variables and Naming - 5.1 private. - 5.2 this. - 5.3 global. - 5.4 protected. - 5.5 public. - 5.6 Qualified blocks - 5.7 declare - Chapter 6 Expressions and values - 6.1 Dynamic scoping - 6.2 Functional evaluation - 6.3 Exporting the environment - 6.3.1 Export regions - 6.3.2 Returning values from exported regions - 6.4 Objects - 6.5 Field and method calls - 6.6 Method override - 6.7 Super calls - Chapter 7 Additional language examples - 7.1 Strings and arrays - 7.2 Quoted strings - 7.3 Files and directories - 7.4 Iteration, mapping, and foreach - 7.5 Lazy expressions - 7.5.1 A larger example of lazy expressions - 7.6 Scoping and exports - 7.7 Shell aliases - 7.8 Input/output redirection on the cheap - Chapter 8 Rules - 8.1 Implicit rules - 8.2 Bounded implicit rules - 8.3 section - 8.4 section rule - 8.5 Special dependencies - 8.5.1 :exists: - 8.5.2 :effects: - 8.5.3 :value: - 8.6 '.SCANNER' rules - 8.6.1 Named scanners, and the ':scanner:' dependencies - 8.6.2 Notes - 8.7 .DEFAULT - 8.8 .SUBDIRS - 8.9 .INCLUDE - 8.10 .PHONY - 8.11 Rule scoping - 8.11.1 Scoping of implicit rules - 8.11.2 Scoping of '.SCANNER' rules - 8.11.3 Scoping for '.PHONY' targets - 8.12 Running OMake from a subdirectory - 8.12.1 Phony targets in a subdirectory - 8.12.2 Hierarchy of '.PHONY' targets - 8.13 Pathnames in rules - Chapter 9 Base library - 9.1 Builtin variables - 9.2 Logic, Boolean functions, and control flow - 9.2.1 not - 9.2.2 equal - 9.2.3 and - 9.2.4 or - 9.2.5 if - 9.2.6 switch, match - 9.2.7 try - 9.2.8 raise - 9.2.9 exit - 9.2.10 defined - 9.2.11 defined-env - 9.2.12 getenv - 9.2.13 setenv - 9.2.14 unsetenv - 9.2.15 get-registry - 9.2.16 getvar - 9.2.17 setvar - 9.3 Arrays and sequences - 9.3.1 array - 9.3.2 split - 9.3.3 concat - 9.3.4 length - 9.3.5 nth - 9.3.6 replace-nth - 9.3.7 nth-hd - 9.3.8 nth-tl - 9.3.9 subrange - 9.3.10 rev - 9.3.11 join - 9.3.12 string - 9.3.13 string-length - 9.3.14 string-escaped, ocaml-escaped, html-escaped, html-pre-escaped, c-escaped, id-escaped - 9.3.15 decode-uri, encode-uri - 9.3.16 quote - 9.3.17 quote-argv - 9.3.18 html-string - 9.3.19 addsuffix - 9.3.20 mapsuffix - 9.3.21 addsuffixes - 9.3.22 removeprefix - 9.3.23 removesuffix - 9.3.24 replacesuffixes - 9.3.25 addprefix - 9.3.26 mapprefix - 9.3.27 add-wrapper - 9.3.28 set - 9.3.29 mem - 9.3.30 intersection - 9.3.31 intersects - 9.3.32 set-diff - 9.3.33 filter - 9.3.34 filter-out - 9.3.35 capitalize - 9.3.36 uncapitalize - 9.3.37 uppercase - 9.3.38 lowercase - 9.3.39 system - 9.3.40 shell - 9.3.41 export - 9.3.42 while - 9.3.43 break - 9.3.44 random, random-init - 9.4 Arithmetic - 9.4.1 int - 9.4.2 float - 9.4.3 Basic arithmetic - 9.4.4 Comparisons - 9.5 First-class functions - 9.5.1 fun - 9.5.2 apply - 9.5.3 applya - 9.5.4 create-map, create-lazy-map - 9.6 Iteration and mapping - 9.6.1 foreach - 9.7 Boolean tests - 9.7.1 sequence-forall - 9.7.2 sequence-exists - 9.7.3 sequence-sort - 9.7.4 compare - Chapter 10 File, I/O and system operations - 10.1 File names - 10.1.1 file, dir - 10.1.2 tmpfile - 10.1.3 in - 10.1.4 basename - 10.1.5 dirname - 10.1.6 rootname - 10.1.7 dirof - 10.1.8 fullname - 10.1.9 absname - 10.1.10 homename - 10.1.11 suffix - 10.2 Path search - 10.2.1 which - 10.2.2 where - 10.2.3 rehash - 10.2.4 exists-in-path - 10.2.5 digest, digest-optional - 10.2.6 find-in-path, find-in-path-optional - 10.2.7 digest-in-path, digest-in-path-optional - 10.3 File stats - 10.3.1 file-exists, target-exists, target-is-proper - 10.3.2 stat-reset - 10.3.3 filter-exists, filter-targets, filter-proper-targets - 10.3.4 find-targets-in-path, find-targets-in-path-optional - 10.3.5 find-ocaml-targets-in-path-optional - 10.3.6 file-sort - 10.3.6.1 sort rule - 10.3.7 file-check-sort - 10.4 Globbing and file listings - 10.4.1 glob - 10.4.2 ls - 10.4.3 subdirs - 10.5 Filesystem operations - 10.5.1 mkdir - 10.5.2 Stat - 10.5.3 stat, lstat - 10.5.4 unlink - 10.5.5 rename - 10.5.6 link - 10.5.7 symlink - 10.5.8 readlink - 10.5.9 chmod - 10.5.10 chown - 10.5.11 truncate - 10.5.12 umask - 10.6 vmount - 10.6.1 vmount - 10.6.2 add-project-directories - 10.6.3 remove-project-directories - 10.7 File predicates - 10.7.1 test - 10.7.2 find - 10.8 IO functions - 10.8.1 Standard channels - 10.8.2 open-in-string - 10.8.3 open-out-string, out-contents - 10.8.4 fopen - 10.8.5 close - 10.8.6 read, input-line - 10.8.7 write - 10.8.8 lseek - 10.8.9 rewind - 10.8.10 tell - 10.8.11 flush - 10.8.12 channel-name - 10.8.13 dup - 10.8.14 dup2 - 10.8.15 set-nonblock - 10.8.16 set-close-on-exec-mode - 10.8.17 pipe - 10.8.18 mkfifo - 10.8.19 select - 10.8.20 lockf - 10.8.21 InetAddr - 10.8.22 Host - 10.8.23 gethostbyname - 10.8.24 Protocol - 10.8.25 getprotobyname - 10.8.26 Service - 10.8.27 getservbyname - 10.8.28 socket - 10.8.29 bind - 10.8.30 listen - 10.8.31 accept - 10.8.32 connect - 10.8.33 getchar - 10.8.34 gets - 10.8.35 fgets - 10.9 Printing functions - 10.10 Value printing functions - 10.10.1 Miscellaneous functions - 10.10.1.1 set-channel-line - 10.11 Higher-level IO functions - 10.11.1 Regular expressions - 10.11.2 cat - 10.11.3 grep - 10.11.4 scan - 10.11.5 awk - 10.11.6 fsubst - 10.11.7 lex - 10.11.8 lex-search - 10.11.9 Lexer - 10.11.10 Lexer matching - 10.11.11 Extending lexer definitions - 10.11.12 Threading the lexer object - 10.11.13 Parser - 10.11.14 Calling the parser - 10.11.15 Parsing control - 10.11.16 Extending parsers - 10.11.17 Passwd - 10.11.18 getpwnam, getpwuid - 10.11.19 getpwents - 10.11.20 Group - 10.11.21 getgrnam, getgrgid - 10.11.22 tgetstr - 10.11.23 xterm-escape-begin, xterm-escape-end - 10.11.24 xterm-escape - 10.11.25 prompt-invisible-begin, prompt-invisible-end - 10.11.26 prompt-invisible - 10.11.27 gettimeofday - Chapter 11 Shell commands - 11.1 Simple commands - 11.2 Globbing - 11.3 Background jobs - 11.4 File redirection - 11.5 Pipelines - 11.6 Conditional execution - 11.7 Grouping - 11.8 What is a shell command? - 11.9 Basic builtin functions - 11.9.1 echo - 11.9.2 cd - 11.10 Job control builtin functions - 11.10.1 jobs - 11.10.2 bg - 11.10.3 fg - 11.10.4 stop - 11.10.5 wait - 11.10.6 kill - 11.11 Command history - 11.11.1 history - Chapter 12 The standard objects - 12.1 Pervasives objects - 12.1.1 Object - 12.1.2 Map - 12.1.3 Number - 12.1.4 Int - 12.1.5 Float - 12.1.6 Sequence - 12.1.7 Array - 12.1.8 String - 12.1.9 Fun - 12.1.10 Rule - 12.1.11 Target - 12.1.12 Node - 12.1.13 File - 12.1.14 Dir - 12.1.15 Channel - 12.1.16 InChannel - 12.1.17 OutChannel - 12.1.18 Location - 12.1.19 Exception - 12.1.20 RuntimeException - 12.1.21 UnbuildableException - 12.1.22 Shell - Chapter 13 Build functions and utilities - 13.1 Builtin .PHONY targets - 13.2 Options and versioning - 13.2.1 OMakeFlags - 13.2.2 OMakeVersion - 13.2.3 cmp-versions - 13.2.4 DefineCommandVars - 13.3 Examining the dependency graph - 13.3.1 dependencies, dependencies-all, dependencies-proper - 13.3.2 target - 13.3.3 find-build-targets - 13.3.4 project-directories - 13.3.5 rule - 13.3.6 build - 13.4 The OMakeroot file - 13.4.1 Variables - 13.4.2 System variables - 13.5 Building C and C++ code - 13.5.1 Autoconfiguration variables - 13.5.1.1 Unix-like systems - 13.5.1.2 Win32 - 13.5.2 C and C++ configuration variables - 13.5.3 Generated C files - 13.5.3.1 CGeneratedFiles, LocalCGeneratedFiles - 13.5.4 Building C programs and Libraries - 13.5.4.1 StaticCLibrary, DynamicCLibrary - 13.5.4.2 StaticCLibraryCopy, DynamicCLibraryCopy - 13.5.4.3 StaticCLibraryInstall, DynamicCLibraryInstall - 13.5.4.4 StaticCObject, StaticCObjectCopy, StaticCObjectInstall - 13.5.4.5 CProgram - 13.5.4.6 CProgramCopy - 13.5.4.7 CProgramInstall - 13.5.4.8 CXXProgram, CXXProgramInstall - 13.5.4.9 StaticCXXLibrary, StaticCXXLibraryCopy, StaticCXXLibraryInstall, DynamicCXXLibrary, DynamicCXXLibraryCopy, DynamicCXXLibraryInstall - 13.6 Building OCaml code - 13.6.1 Autoconfiguration variables for OCaml compilation - 13.6.2 Configuration variables for OCaml compilation - 13.6.3 OCaml command flags - 13.6.4 Library variables - 13.6.5 Generated OCaml Files - 13.6.5.1 OCamlGeneratedFiles, LocalOCamlGeneratedFiles - 13.6.5.2 Automatic discovery of generated files during dependency analysis - 13.6.6 Using the Menhir parser generator - 13.6.6.1 OCamlLibrary - 13.6.6.2 OCamlPackage - 13.6.6.3 OCamlLibraryCopy - 13.6.6.4 OCamlLibraryInstall - 13.6.6.5 OCamlProgram - 13.6.6.6 OCamlProgramCopy - 13.6.6.7 OCamlProgramInstall - 13.7 Building LaTeX files - 13.7.1 Configuration variables - 13.7.2 Building LaTeX documents - 13.7.2.1 LaTeXDocument - 13.7.2.2 TeXGeneratedFiles, LocalTeXGeneratedFiles - 13.7.2.3 LaTeXDocumentCopy - 13.7.2.4 LaTeXDocumentInstall - Chapter 14 Autoconfiguration functions and variables - 14.1 General-purpose autoconfiguration functions - 14.1.1 ConfMsgChecking, ConfMsgResult - 14.1.2 ConfMsgWarn, ConfMsgError - 14.1.3 ConfMsgYesNo, ConfMsgFound - 14.1.4 TryCompileC, TryLinkC, TryRunC - 14.1.5 RunCProg - 14.1.6 CheckCHeader, VerboseCheckCHeader - 14.1.7 CheckCLib, VerboseCheckCLib - 14.1.8 CheckProg - 14.2 Translating 'autoconf' scripts - 14.3 Predefined configuration tests - 14.3.1 NCurses library configuration - 14.3.2 ReadLine library configuration - 14.3.3 Snprintf configuration - Chapter 15 The OSH shell - 15.1 Startup - 15.2 Aliases - 15.3 Interactive syntax - Appendix A Synopsis - A.1 General usage - A.2 Output control - A.2.1 -s - A.2.2 -S - A.2.3 -w - A.2.4 --progress - A.2.5 --print-status - A.2.6 --print-exit - A.2.7 --verbose - A.2.8 --output-normal - A.2.9 --output-postpone - A.2.10 --output-only-errors - A.2.11 --output-at-end - A.2.12 -o - A.3 Build options - A.3.1 -k - A.3.2 -n - A.3.3 -p - A.3.4 -P - A.3.5 -R - A.3.6 -t - A.3.7 -U - A.3.8 --depend - A.3.9 --configure - A.3.10 --force-dotomake - A.3.11 --dotomake - A.3.12 -j - A.3.13 --print-dependencies - A.3.14 --show-dependencies - A.3.15 --all-dependencies - A.3.16 --verbose-dependencies - A.3.17 --install - A.3.18 --install-all - A.3.19 --install-force - A.3.20 --absname - A.3.21 variable definition - A.4 Additional options - A.5 Environment variables - A.5.1 OMAKEFLAGS - A.5.2 OMAKELIB - A.6 Functions - A.6.1 OMakeFlags - A.7 Option processing - A.8 .omakerc - Appendix B OMake grammar - B.1 OMake lexical conventions - B.1.1 Comments - B.1.2 Special characters - B.1.3 Identifiers - B.1.4 Command identifiers - B.1.5 Variable references - B.1.6 String constants - B.2 The OMake grammar - B.2.1 Expressions - B.2.1.1 Inline applications - B.2.2 Statements and programs - B.2.2.1 Special forms - B.2.2.2 Variable definitions - B.2.2.3 Applications and function definitions - B.2.2.4 Objects - B.2.2.5 Rules - B.2.2.6 Shell commands - B.3 Dollar modifiers - Appendix C References - C.1 See Also - C.2 Version - C.3 License and Copyright - C.4 Author Chapter 1 Guide ****************** If you are new to OMake, you the omake-quickstart (1) presents a short introduction that describes how to set up a project. The omake-build-examples (2) gives larger examples of build projects, and omake-language-examples (3) presents programming examples. Quickstart 2 A quickstart guide to using omake. Build examples 3 Advanced build examples. The OMake language 4 The omake language, including a description of objects, expressions, and values. Variables and naming 5 Variables, names, and environments. Language discussion 6 Further discussion on the language, including scoping, evaluation, and objects. Language examples 7 Additional language examples. Build rules 8 Defining and using rules to build programs. Base builtin functions 9 Functions and variables in the core standard library. System functions 10 Functions on files, input/output, and system commands. Shell commands 11 Using the omake shell for command-line interpretation. The standard objects 12 Pervasives defines the built-in objects. Standard build definitions 13 The build specifications for programming languages in the OMake standard library. Standard autoconfiguration functions and variables 14 The utilities provoded by the OMake standard library to simplify programming of autoconfiguration tests. The interactive command interpreter 15 The osh command-line interpreter. Appendices OMake command-line options A Command-line options for omake. The OMake language grammar B A more precise specification of the OMake language. All the documentation on a single page (4) All the OMake documentation in a single page. ----------------------------------- (1) omake-quickstart.html (2) omake-build-examples.html (3) omake-language-examples.html (4) omake-doc.html Chapter 2 OMake quickstart guide *********************************** 2.1 Description *=*=*=*=*=*=*=*= omake is designed for building projects that might have source files in several directories. Projects are normally specified using an OMakefile in each of the project directories, and an OMakeroot file in the root directory of the project. The OMakeroot file specifies general build rules, and the OMakefiles specify the build parameters specific to each of the subdirectories. When omake runs, it walks the configuration tree, evaluating rules from all of the OMakefiles. The project is then built from the entire collection of build rules. 2.1.1 Automatic dependency analysis ==================================== Dependency analysis has always been problematic with the make(1) program. omake addresses this by adding the `.SCANNER' target, which specifies a command to produce dependencies. For example, the following rule << .SCANNER: %.o: %.c $(CC) $(INCLUDE) -MM $< >> is the standard way to generate dependencies for `.c' files. omake will automatically run the scanner when it needs to determine dependencies for a file. 2.1.2 Content-based dependency analysis ======================================== Dependency analysis in omake uses MD5 digests to determine whether files have changed. After each run, omake stores the dependency information in a file called .omakedb in the project root directory. When a rule is considered for execution, the command is not executed if the target, dependencies, and command sequence are unchanged since the last run of omake. As an optimization, omake does not recompute the digest for a file that has an unchanged modification time, size, and inode number. 2.2 For users already familiar with make *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* For users already familiar with the make(1) command, here is a list of differences to keep in mind when using omake. - In omake, you are much less likely to define build rules of your own. The system provides many standard functions (like 'StaticCLibrary' and 'CProgram'), described in Chapter 13, to specify these builds more simply. - Implicit rules using `.SUFFIXES' and the `.suf1.suf2:' are not supported. You should use wildcard patterns instead `%.suf2: %.suf1'. - Scoping is significant: you should define variables and `.PHONY' targets (see Section 8.10) before they are used. - Subdirectories are incorporated into a project using the `.SUBDIRS:' target (see Section 8.8). 2.3 Building a small C program *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* To start a new project, the easiest method is to change directories to the project root and use the command `omake --install' to install default OMakefiles. << $ cd ~/newproject $ omake --install *** omake: creating OMakeroot *** omake: creating OMakefile *** omake: project files OMakefile and OMakeroot have been installed *** omake: you should edit these files before continuing >> The default OMakefile contains sections for building C and OCaml programs. For now, we'll build a simple C project. Suppose we have a C file called `hello_code.c' containing the following code: << #include int main(int argc, char **argv) { printf("Hello world\n"); return 0; } >> To build the program a program `hello' from this file, we can use the 'CProgram' function. The OMakefile contains just one line that specifies that the program `hello' is to be built from the source code in the `hello_code.c' file (note that file suffixes are not passed to these functions). << CProgram(hello, hello_code) >> Now we can run omake to build the project. Note that the first time we run omake, it both scans the `hello_code.c' file for dependencies, and compiles it using the `cc' compiler. The status line printed at the end indicates how many files were scanned, how many were built, and how many MD5 digests were computed. << $ omake hello *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.0 sec) - scan . hello_code.o + cc -I. -MM hello_code.c - build . hello_code.o + cc -I. -c -o hello_code.o hello_code.c - build . hello + cc -o hello hello_code.o *** omake: done (0.5 sec, 1/6 scans, 2/6 rules, 5/22 digests) $ omake *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.1 sec) *** omake: done (0.1 sec, 0/4 scans, 0/4 rules, 0/9 digests) >> If we want to change the compile options, we can redefine the `CC' and `CFLAGS' variables before the `CProgram' line. In this example, we will use the `gcc' compiler with the `-g' option. In addition, we will specify a `.DEFAULT' target to be built by default. The `EXE' variable is defined to be `.exe' on `Win32' systems; it is empty otherwise. << CC = gcc CFLAGS += -g CProgram(hello, hello_code) .DEFAULT: hello$(EXE) >> Here is the corresponding run for omake. << $ omake *** omake: reading OMakefiles *** omake: finished reading OMakefiles (0.0 sec) - scan . hello_code.o + gcc -g -I. -MM hello_code.c - build . hello_code.o + gcc -g -I. -c -o hello_code.o hello_code.c - build . hello + gcc -g -o hello hello_code.o *** omake: done (0.4 sec, 1/7 scans, 2/7 rules, 3/22 digests) >> We can, of course, include multiple files in the program. Suppose we write a new file `hello_helper.c'. We would include this in the project as follows. << CC = gcc CFLAGS += -g CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> 2.4 Larger projects *=*=*=*=*=*=*=*=*=*= As the project grows it is likely that we will want to build libraries of code. Libraries can be built using the `StaticCLibrary' function. Here is an example of an OMakefile with two libraries. << CC = gcc CFLAGS += -g FOO_FILES = foo_a foo_b BAR_FILES = bar_a bar_b bar_c StaticCLibrary(libfoo, $(FOO_FILES)) StaticCLibrary(libbar, $(BAR_FILES)) # The hello program is linked with both libraries LIBS = libfoo libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> 2.5 Subdirectories *=*=*=*=*=*=*=*=*=* As the project grows even further, it is a good idea to split it into several directories. Suppose we place the `libfoo' and `libbar' into subdirectories. In each subdirectory, we define an OMakefile for that directory. For example, here is an example OMakefile for the `foo' subdirectory. << INCLUDES += .. ../bar FOO_FILES = foo_a foo_b StaticCLibrary(libfoo, $(FOO_FILES)) >> Note the the `INCLUDES' variable is defined to include the other directories in the project. Now, the next step is to link the subdirectories into the main project. The project OMakefile should be modified to include a `.SUBDIRS:' target. << # Project configuration CC = gcc CFLAGS += -g # Subdirectories .SUBDIRS: foo bar # The libraries are now in subdirectories LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> Note that the variables `CC' and `CFLAGS' are defined before the `.SUBDIRS' target. These variables remain defined in the subdirectories, so that `libfoo' and `libbar' use `gcc -g'. If the two directories are to be configured differently, we have two choices. The OMakefile in each subdirectory can be modified with its configuration (this is how it would normally be done). Alternatively, we can also place the change in the root OMakefile. << # Default project configuration CC = gcc CFLAGS += -g # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler CFLAGS += -O3 .SUBDIRS: bar # Main program LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> Note that the way we have specified it, the `CFLAGS' variable also contains the `-O3' option for the `CProgram', and `hello_code.c' and `hello_helper.c' file will both be compiled with the `-O3' option. If we want to make the change truly local to `libbar', we can put the `bar' subdirectory in its own scope using the `section' form. << # Default project configuration CC = gcc CFLAGS += -g # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += -O3 .SUBDIRS: bar # Main program does not use the optimizing compiler LIBS = foo/libfoo bar/libbar CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> Later, suppose we decide to port this project to `Win32', and we discover that we need different compiler flags and an additional library. << # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3) .SUBDIRS: bar # Default libraries LIBS = foo/libfoo bar/libbar # We need libwin32 only on Win32 if $(equal $(OSTYPE), Win32) LIBS += win32/libwin32 .SUBDIRS: win32 export # Main program does not use the optimizing compiler CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> Note the use of the `export' directives to export the variable definitions from the if-statements. Variables in omake are scoped---variables in nested blocks (blocks with greater indentation), are not normally defined in outer blocks. The `export' directive specifies that the variable definitions in the nested blocks should be exported to their parent block. Finally, for this example, we decide to copy all libraries into a common `lib' directory. We first define a directory variable, and replace occurrences of the `lib' string with the variable. << # The common lib directory LIB = $(dir lib) # phony target to build just the libraries .PHONY: makelibs # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # libfoo uses the default configuration .SUBDIRS: foo # libbar uses the optimizing compiler section CFLAGS += $(if $(equal $(OSTYPE), Win32), $(EMPTY), -O3) .SUBDIRS: bar # Default libraries LIBS = $(LIB)/libfoo $(LIB)/libbar # We need libwin32 only on Win32 if $(equal $(OSTYPE), Win32) LIBS += $(LIB)/libwin32 .SUBDIRS: win32 export # Main program does not use the optimizing compiler CProgram(hello, hello_code hello_helper) .DEFAULT: hello$(EXE) >> In each subdirectory, we modify the OMakefiles in the library directories to install them into the `$(LIB)' directory. Here is the relevant change to foo/OMakefile. << INCLUDES += .. ../bar FOO_FILES = foo_a foo_b StaticCLibraryInstall(makelib, $(LIB), libfoo, $(FOO_FILES)) >> Directory (and file names) evaluate to relative pathnames. Within the `foo' directory, the `$(LIB)' variable evaluates to `../lib'. As another example, instead of defining the `INCLUDES' variable separately in each subdirectory, we can define it in the toplevel as follows. << INCLUDES = $(ROOT) $(dir foo bar win32) >> In the `foo' directory, the `INCLUDES' variable will evaluate to the string `.. . ../bar ../win32'. In the `bar' directory, it would be `.. ../foo . ../win32'. In the root directory it would be `. foo bar win32'. 2.6 Other things to consider *=*=*=*=*=*=*=*=*=*=*=*=*=*=* omake also handles recursive subdirectories. For example, suppose the `foo' directory itself contains several subdirectories. The foo/OMakefile would then contain its own `.SUBDIRS' target, and each of its subdirectories would contain its own `OMakefile'. 2.7 Building OCaml programs *=*=*=*=*=*=*=*=*=*=*=*=*=*= By default, omake is also configured with functions for building OCaml programs. The functions for OCaml program use the `OCaml' prefix. For example, suppose we reconstruct the previous example in OCaml, and we have a file called `hello_code.ml' that contains the following code. << open Printf let () = printf "Hello world\n" >> An example OMakefile for this simple project would contain the following. << # Use the byte-code compiler BYTE_ENABLED = true NATIVE_ENABLED = false OCAMLCFLAGS += -g # Build the program OCamlProgram(hello, hello_code) .DEFAULT: hello.run >> Next, suppose the we have two library subdirectories: the `foo' subdirectory is written in C, the `bar' directory is written in OCaml, and we need to use the standard OCaml `Unix' module. << # Default project configuration if $(equal $(OSTYPE), Win32) CC = cl /nologo CFLAGS += /DWIN32 /MT export else CC = gcc CFLAGS += -g export # Use the byte-code compiler BYTE_ENABLED = true NATIVE_ENABLED = false OCAMLCFLAGS += -g # library subdirectories INCLUDES += $(dir foo bar) OCAMLINCLUDES += $(dir foo bar) .SUBDIRS: foo bar # C libraries LIBS = foo/libfoo # OCaml libraries OCAML_LIBS = bar/libbar # Also use the Unix module OCAML_OTHER_LIBS = unix # The main program OCamlProgram(hello, hello_code hello_helper) .DEFAULT: hello >> The foo/OMakefile would be configured as a C library. << FOO_FILES = foo_a foo_b StaticCLibrary(libfoo, $(FOO_FILES)) >> The bar/OMakefile would build an ML library. << BAR_FILES = bar_a bar_b bar_c OCamlLibrary(libbar, $(BAR_FILES)) >> 2.8 The OMakefile and OMakeroot files *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= OMake uses the OMakefile and OMakeroot files for configuring a project. The syntax of these files is the same, but their role is slightly different. For one thing, every project must have exactly one OMakeroot file in the project root directory. This file serves to identify the project root, and it contains code that sets up the project. In contrast, a multi-directory project will often have an OMakefile in each of the project subdirectories, specifying how to build the files in that subdirectory. Normally, the OMakeroot file is boilerplate. The following listing is a typical example. << include $(STDLIB)/build/Common include $(STDLIB)/build/C include $(STDLIB)/build/OCaml include $(STDLIB)/build/LaTeX # Redefine the command-line variables DefineCommandVars(.) # The current directory is part of the project .SUBDIRS: . >> The `include' lines include the standard configuration files needed for the project. The `$(STDLIB)' represents the omake library directory. The only required configuration file is `Common'. The others are optional; for example, the `$(STDLIB)/build/OCaml' file is needed only when the project contains programs written in OCaml. The `DefineCommandVars' function defines any variables specified on the command line (as arguments of the form `VAR='). The `.SUBDIRS' line specifies that the current directory is part of the project (so the `OMakefile' should be read). Normally, the `OMakeroot' file should be small and project-independent. Any project-specific configuration should be placed in the `OMakefiles' of the project. 2.9 Multiple version support *=*=*=*=*=*=*=*=*=*=*=*=*=*=* OMake version `0.9.6' introduced preliminary support for multiple, simultaneous versions of a project. Versioning uses the `vmount(dir1, dir2)' function, which defines a "virtual mount" of directory `dir1' over directory `dir2'. A "virtual mount" is like a transparent mount in Unix, where the files from `dir1' appear in the `dir2' namespace, but new files are created in `dir2'. More precisely, the filename `dir2/foo' refers to: a) the file `dir1/foo' if it exists, or b) `dir2/foo' otherwise. The `vmount' function makes it easy to specify multiple versions of a project. Suppose we have a project where the source files are in the directory `src/', and we want to compile two versions, one with debugging support and one optimized. We create two directories, debug and opt, and mount the src directory over them. << section CFLAGS += -g vmount(-l, src, debug) .SUBDIRS: debug section CFLAGS += -O3 vmount(-l, src, opt) .SUBDIRS: opt >> Here, we are using `section' blocks to define the scope of the `vmount'---you may not need them in your project. The `-l' option is optional. It specifies that files form the `src' directory should be linked into the target directories (or copied, if the system is Win32). The links are added as files are referenced. If no options are given, then files are not copied or linked, but filenames are translated to refer directly to the `src/' files. Now, when a file is referenced in the `debug' directory, it is linked from the `src' directory if it exists. For example, when the file `debug/OMakefile' is read, the `src/OMakefile' is linked into the `debug/' directory. The `vmount' model is fairly transparent. The `OMakefile's can be written as if referring to files in the `src/' directory---they need not be aware of mounting. However, there are a few points to keep in mind. 2.10 Notes *=*=*=*=*=* - When using the `vmount' function for versioning, it wise to keep the source files distinct from the compiled versions. For example, suppose the source directory contained a file `src/foo.o'. When mounted, the `foo.o' file will be the same in all versions, which is probably not what you want. It is better to keep the `src/' directory pristine, containing no compiled code. - When using the `vmount -l' option, files are linked into the version directory only if they are referenced in the project. Functions that examine the filesystem (like `$(ls ...)') may produce unexpected results. Chapter 3 Additional build examples ************************************** Let's explain the OMake build model a bit more. One issue that dominates this discussion is that OMake is based on global project analysis. That means you define a configuration for the entire project, and you run one instance of omake. For single-directory projects this doesn't mean much. For multi-directory projects it means a lot. With GNU make, you would usually invoke the `make' program recursively for each directory in the project. For example, suppose you had a project with some project root directory, containing a directory of sources `src', which in turn contains subdirectories `lib' and `main'. So your project looks like this nice piece of ASCII art. << my_project/ |--> Makefile `--> src/ |---> Makefile |---> lib/ | |---> Makefile | `---> source files... `---> main/ |---> Makefile `---> source files... >> Typically, with GNU make, you would start an instance of `make' in `my_project/'; this would in term start an instance of `make' in the `src/' directory; and this would start new instances in `lib/' and `main/'. Basically, you count up the number of `Makefile's in the project, and that is the number of instances of `make' processes that will be created. The number of processes is no big deal with today's machines (sometimes contrary the the author's opinion, we no longer live in the 1970s). The problem with the scheme was that each `make' process had a separate configuration, and it took a lot of work to make sure that everything was consistent. Furthermore, suppose the programmer runs `make' in the `main/' directory, but the `lib/' is out-of-date. In this case, `make' would happily crank away, perhaps trying to rebuild files in `lib/', perhaps just giving up. With OMake this changes entirely. Well, not entirely. The source structure is quite similar, we merely add some Os to the ASCII art. << my_project/ |--> OMakeroot (or Root.om) |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | `---> source files... `---> main/ |---> OMakefile `---> source files... >> The role of each `/OMakefile' plays the same role as each `/Makefile': it describes how to build the source files in `'. The OMakefile retains much of syntax and structure of the Makefile, but in most cases it is much simpler. One minor difference is the presence of the OMakeroot in the project root. The main purpose of this file is to indicate where the project root is in the first place (in case `omake' is invoked from a subdirectory). The `OMakeroot' serves as the bootstrap file; omake starts by reading this file first. Otherwise, the syntax and evaluation of `OMakeroot' is no different from any other `OMakefile'. The big difference is that OMake performs a global analysis. Here is what happens when `omake' starts. 1. omake locates that OMakeroot file, and reads it. 2. Each OMakefile points to its subdirectory OMakefiles using the .SUBDIRS target. For example, `my_project/OMakefile' has a rule, << .SUBDIRS: src >> and the `my_project/src/OMakefile' has a rule, << .SUBDIRS: lib main >> `omake' uses these rules to read and evaluate every `OMakefile' in the project. Reading and evaluation is fast. This part of the process is cheap. 3. Now that the entire configuration is read, `omake' determines which files are out-of-date (using a global analysis), and starts the build process. This may take a while, depending on what exactly needs to be done. There are several advantages to this model. First, since analysis is global, it is much easier to ensure that the build configuration is consistent--after all, there is only one configuration. Another benefit is that the build configuration is inherited, and can be re-used, down the hierarchy. Typically, the root `OMakefile' defines some standard boilerplate and configuration, and this is inherited by subdirectories that tweak and modify it (but do not need to restate it entirely). The disadvantage of course is space, since this is global analysis after all. In practice rarely seems to be a concern; omake takes up much less space than your web browser even on large projects. Some notes to the GNU/BSD make user. - OMakefiles are a lot like Makefiles. The syntax is similar, and there many of the builtin functions are similar. However, the two build systems are not the same. Some evil features (in the authors' opinions) have been dropped in OMake, and some new features have been added. - OMake works the same way on all platforms, including Win32. The standard configuration does the right thing, but if you care about porting your code to multiple platforms, and you use some tricky features, you may need to condition parts of your build config on the `$(OSTYPE)' variable. - A minor issue is that OMake dependency analysis is based on MD5 file digests. That is, dependencies are based on file contents, not file modification times. Say goodbye to false rebuilds based on spurious timestamp changes and mismatches between local time and fileserver time. 3.1 OMakeroot vs. OMakefile *=*=*=*=*=*=*=*=*=*=*=*=*=*= Before we begin with examples, let's ask the first question, "What is the difference between the project root OMakeroot and OMakefile?" A short answer is, there is no difference, but you must have an OMakeroot file (or Root.om file). However, the normal style is that OMakeroot is boilerplate and is more-or-less the same for all projects. The OMakefile is where you put all your project-specific stuff. To get started, you don't have to do this yourself. In most cases you just perform the following step in your project root directory. - Run `omake --install' in your project root. This will create the initial OMakeroot and OMakefile files that you can edit to get started. 3.2 An example C project *=*=*=*=*=*=*=*=*=*=*=*=* To begin, let's start with a simple example. Let's say that we have a full directory tree, containing the following files. << my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> ouch.c | |---> ouch.h | `---> bandaid.c `---> main/ |---> OMakefile |---> horsefly.c |---> horsefly.h `---> main.c >> Here is an example listing. <> Most of the configuration here is defined in the file `build/C.om' (which is part of the OMake distribution). This file takes care of a lot of work, including: - Defining the `StaticCLibrary' and `CProgram' functions, which describe the canonical way to build C libraries and programs. - Defining a mechanism for scanning each of the source programs to discover dependencies. That is, it defines .SCANNER rules for C source files. Variables are inherited down the hierarchy, so for example, the value of CFLAGS in src/main/OMakefile is "`-g -O2'". 3.3 An example OCaml project *=*=*=*=*=*=*=*=*=*=*=*=*=*=* Let's repeat the example, assuming we are using OCaml instead of C. This time, the directory tree looks like this. << my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> ouch.ml | |---> ouch.mli | `---> bandaid.ml `---> main/ |---> OMakefile |---> horsefly.ml |---> horsefly.mli `---> main.ml >> The listing is only a bit different. <> In this case, most of the configuration here is defined in the file `build/OCaml.om'. In this particular configuration, files in `my_project/src/lib' are compiled aggressively with the option `-inline 10', but files in `my_project/src/lib' are compiled normally. 3.4 Handling new languages *=*=*=*=*=*=*=*=*=*=*=*=*=* The previous two examples seem to be easy enough, but they rely on the OMake standard library (the files `build/C' and `build/OCaml') to do all the work. What happens if we want to write a build configuration for a language that is not already supported in the OMake standard library? For this example, let's suppose we are adopting a new language. The language uses the standard compile/link model, but is not in the OMake standard library. Specifically, let's say we have the following setup. - Source files are defined in files with a `.cat' suffix (for Categorical Abstract Terminology). - `.cat' files are compiled with the `catc' compiler to produce `.woof' files (Wicked Object-Oriented Format). - `.woof' files are linked by the `catc' compiler with the `-c' option to produce a `.dog' executable (Digital Object Group). The `catc' also defines a `-a' option to combine several `.woof' files into a library. - Each `.cat' can refer to other source files. If a source file `a.cat' contains a line `open b', then `a.cat' depends on the file `b.woof', and `a.cat' must be recompiled if `b.woof' changes. The `catc' function takes a `-I' option to define a search path for dependencies. To define a build configuration, we have to do three things. 1. Define a `.SCANNER' rule for discovering dependency information for the source files. 2. Define a generic rule for compiling a `.cat' file to a `.woof' file. 3. Define a rule (as a function) for linking `.woof' files to produce a `.dog' executable. Initially, these definitions will be placed in the project root `OMakefile'. 3.4.1 Defining a default compilation rule ========================================== Let's start with part 2, defining a generic compilation rule. We'll define the build rule as an implicit rule. To handle the include path, we'll define a variable `CAT_INCLUDES' that specifies the include path. This will be an array of directories. To define the options, we'll use a lazy variable (Section 7.5). In case there are any other standard flags, we'll define a `CAT_FLAGS' variable. << # Define the catc command, in case we ever want to override it CATC = catc # The default flags are empty CAT_FLAGS = # The directories in the include path (empty by default) INCLUDES[] = # Compute the include options from the include path PREFIXED_INCLUDES[] = $`(mapprefix -I, $(INCLUDES)) # The default way to build a .woof file %.woof: %.cat $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) -c $< >> The final part is the build rule itself, where we call the `catc' compiler with the include path, and the `CAT_FLAGS' that have been defined. The `$<' variable represents the source file. 3.4.2 Defining a rule for linking ================================== For linking, we'll define another rule describing how to perform linking. Instead of defining an implicit rule, we'll define a function that describes the linking step. The function will take two arguments; the first is the name of the executable (without suffix), and the second is the files to link (also without suffixes). Here is the code fragment. << # Optional link options CAT_LINK_FLAGS = # The function that defines how to build a .dog program CatProgram(program, files) = # Add the suffixes file_names = $(addsuffix .woof, $(files)) prog_name = $(addsuffix .dog, $(files)) # The build rule $(prog_name): $(file_names) $(CATC) $(PREFIXED_INCLUDES) $(CAT_FLAGS) $(CAT_LINK_FLAGS) -o $@ $+ # Return the program name value $(prog_name) >> The `CAT_LINK_FLAGS' variable is defined just in case we want to pass additional flags specific to the link step. Now that this function is defined, whenever we want to define a rule for building a program, we simply call the rule. The previous implicit rule specifies how to compile each source file, and the `CatProgram' function specifies how to build the executable. << # Build a rover.dog program from the source # files neko.cat and chat.cat. # Compile it by default. .DEFAULT: $(CatProgram rover, neko chat) >> 3.4.3 Dependency scanning ========================== That's it, almost. The part we left out was automated dependency scanning. This is one of the nicer features of OMake, and one that makes build specifications easier to write and more robust. Strictly speaking, it isn't required, but you definitely want to do it. The mechanism is to define a `.SCANNER' rule, which is like a normal rule, but it specifies how to compute dependencies, not the target itself. In this case, we want to define a `.SCANNER' rule of the following form. << .SCANNER: %.woof: %.cat >> This rule specifies that a `.woof' file may have additional dependencies that can be extracted from the corresponding `.cat' file by executing the `'. The result of executing the `' should be a sequence of dependencies in OMake format, printed to the standard output. As we mentioned, each `.cat' file specifies dependencies on `.woof' files with an `open' directive. For example, if the `neko.cat' file contains a line `open chat', then `neko.woof' depends on `chat.woof'. In this case, the `' should print the following line. << neko.woof: chat.woof >> For an analogy that might make this clearer, consider the C programming language, where a `.o' file is produced by compiling a `.c' file. If a file `foo.c' contains a line like `#include "fum.h"', then `foo.c' should be recompiled whenever `fum.h' changes. That is, the file `foo.o' depends on the file `fum.h'. In the OMake parlance, this is called an implicit dependency, and the `.SCANNER' `' would print a line like the following. << foo.o: fum.h >> Now, returning to the animal world, to compute the dependencies of `neko.woof', we should scan `neko.cat', line-by-line, looking for lines of the form `open '. We could do this by writing a program, but it is easy enough to do it in `omake' itself. We can use the builtin 'awk' function to scan the source file. One slight complication is that the dependencies depend on the `INCLUDE' path. We'll use the 'find-in-path' function to find them. Here we go. << .SCANNER: %.woof: %.cat section # Scan the file deps[] = awk($<) case $'^open' deps[] += $2 export # Remove duplicates, and find the files in the include path deps = $(find-in-path $(INCLUDES), $(set $(deps))) # Print the dependencies println($"$@: $(deps)") >> Let's look at the parts. First, the entire body is defined in a `section' because we are computing it internally, not as a sequence of shell commands. We use the `deps' variable to collect all the dependencies. The `awk' function scans the source file (`$<') line-by-line. For lines that match the regular expression `^open' (meaning that the line begins with the word `open'), we add the second word on the line to the `deps' variable. For example, if the input line is `open chat', then we would add the `chat' string to the `deps' array. All other lines in the source file are ignored. Next, the `$(set $(deps))' expression removes any duplicate values in the `deps' array (sorting the array alphabetically in the process). The `find-in-path' function then finds the actual location of each file in the include path. The final step is print the result as the string `$"$@: $(deps)"' The quotations are added to flatten the `deps' array to a simple string. 3.4.4 Pulling it all together ============================== To complete the example, let's pull it all together into a single project, much like our previous example. << my_project/ |--> OMakeroot |--> OMakefile `--> src/ |---> OMakefile |---> lib/ | |---> OMakefile | |---> neko.cat | `---> chat.cat `---> main/ |---> OMakefile `---> main.cat >> The listing for the entire project is as follows. Here, we also include a function `CatLibrary' to link several `.woof' files into a library. <> Some notes. The configuration in the project `OMakeroot' defines the standard configuration, including the dependency scanner, the default rule for compiling source files, and functions for building libraries and programs. These rules and functions are inherited by subdirectories, so the `.SCANNER' and build rules are used automatically in each subdirectory, so you don't need to repeat them. 3.4.5 Finishing up =================== At this point we are done, but there are a few things we can consider. First, the rules for building cat programs is defined in the project `OMakefile'. If you had another cat project somewhere, you would need to copy the `OMakeroot' (and modify it as needed). Instead of that, you should consider moving the configuration to a shared library directory, in a file like `Cat.om'. That way, instead of copying the code, you could include the shared copy with an OMake command `open Cat'. The share directory should be added to your `OMAKEPATH' environment variable to ensure that `omake' knows how to find it. Better yet, if you are happy with your work, consider submitting it as a standard configuration (by sending a request to `omake@metaprl.org') so that others can make use of it too. 3.5 Collapsing the hierarchy, .SUBDIRS bodies *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Some projects have many subdirectories that all have the same configuration. For instance, suppose you have a project with many subdirectories, each containing a set of images that are to be composed into a web page. Apart from the specific images, the configuration of each file is the same. To make this more concrete, suppose the project has four subdirectories `page1', `page2', `page3', and `page4'. Each contains two files `image1.jpg' and `image2.jpg' that are part of a web page generated by a program `genhtml'. Instead of of defining a `OMakefile' in each directory, we can define it as a body to the `.SUBDIRS' command. << .SUBDIRS: page1 page2 page3 page4 index.html: image1.jpg image2jpg genhtml $+ > $@ >> The body of the `.SUBDIRS' is interpreted exactly as if it were the `OMakefile', and it can contain any of the normal statements. The body is evaluated in the subdirectory for each of the subdirectories. We can see this if we add a statement that prints the current directory (`$(CWD)'). << .SUBDIRS: page1 page2 page3 page4 println($(absname $(CWD))) index.html: image1.jpg image2jpg genhtml $+ > $@ # prints /home/jyh/.../page1 /home/jyh/.../page2 /home/jyh/.../page3 /home/jyh/.../page4 >> 3.5.1 Using glob patterns ========================== Of course, this specification is quite rigid. In practice, it is likely that each subdirectory will have a different set of images, and all should be included in the web page. One of the easier solutions is to use one of the directory-listing functions, like 'glob' or 'ls'. The `glob' function takes a shell pattern, and returns an array of file with matching filenames in the current directory. << .SUBDIRS: page1 page2 page3 page4 IMAGES = $(glob *.jpg) index.html: $(IMAGES) genhtml $+ > $@ >> 3.5.2 Simplified sub-configurations ==================================== Another option is to add a configuration file in each of the subdirectories that defines directory-specific information. For this example, we might define a file `BuildInfo.om' in each of the subdirectories that defines a list of images in that directory. The `.SUBDIRS' line is similar, but we include the BuildInfo file. << .SUBDIRS: page1 page2 page3 page4 include BuildInfo # Defines the IMAGES variable index.html: $(IMAGES) genhtml $+ > $@ >> Where we might have the following configurations. << page1/BuildInfo.om: IMAGES[] = image.jpg page2/BuildInfo.om: IMAGES[] = ../common/header.jpg winlogo.jpg page3/BuildInfo.om: IMAGES[] = ../common/header.jpg unixlogo.jpg daemon.jpg page4/BuildInfo.om: IMAGES[] = fee.jpg fi.jpg foo.jpg fum.jpg >> 3.5.3 Computing the subdirectory list ====================================== The other hardcoded specification is the list of subdirectories `page1', ..., `page4'. Rather than editing the project `OMakefile' each time a directory is added, we could compute it (again with `glob'). << .SUBDIRS: $(glob page*) index.html: $(glob *.jpg) genhtml $+ > $@ >> Alternately, the directory structure may be hierarchical. Instead of using `glob', we could use the `subdirs' function, returns each of the directories in a hierarchy. For example, this is the result of evaluating the `subdirs' function in the omake project root. The `P' option, passed as the first argument, specifies that the listing is "proper," it should not include the `omake' directory itself. << osh> subdirs(P, .) - : >> Using `subdirs', our example is now as follows. << .SUBDIRS: $(subdirs P, .) index.html: $(glob *.jpg) genhtml $+ > $@ >> In this case, every subdirectory will be included in the project. If we are using the `BuildInfo.om' option. Instead of including every subdirectory, we could include only those that contain a `BuildInfo.om' file. For this purpose, we can use the `find' function, which traverses the directory hierarchy looking for files that match a test expression. In our case, we want to search for files with the name `BuildInfo.om'. Here is an example call. << osh> FILES = $(find . -name BuildInfo.om) - : osh> DIRS = $(dirof $(FILES)) - : >> In this example, there are three `BuildInfo.om' files, in the `doc/html', `src', and `tests/simple' directories. The `dirof' function returns the directories for each of the files. Returning to our original example, we modify it as follows. << .SUBDIRS: $(dirof $(find . -name BuildInfo.om)) include BuildInfo # Defines the IMAGES variable index.html: $(IMAGES) genhtml $+ > $@ >> 3.5.4 Temporary directories ============================ Sometimes, your project may include temporary directories--directories where you place intermediate results. these directories are deleted whenever the project is cleanup up. This means, in particular, that you can't place an `OMakefile' in a temporary directory, because it will be removed when the directory is removed. Instead, if you need to define a configuration for any of these directories, you will need to define it using a `.SUBDIRS' body. << section CREATE_SUBDIRS = true .SUBDIRS: tmp # Compute an MD5 digest %.digest: %.comments echo $(digest $<) > $@ # Extract comments from the source files %.comments: ../src/%.src grep '^#' $< > $@ .DEFAULT: foo.digest .PHONY: clean clean: rm -rf tmp >> In this example, we define the `CREATE_SUBDIRS' variable as true, so that the `tmp' directory will be created if it does not exist. The `.SUBDIRS' body in this example is a bit contrived, but it illustrates the kind of specification you might expect. The `clean' phony-target indicates that the `tmp' directory should be removed when the project is cleaned up. Chapter 4 OMake concepts and syntax ************************************** Projects are specified to omake with OMakefiles. The OMakefile has a format similar to a Makefile. An OMakefile has three main kinds of syntactic objects: variable definitions, function definitions, and rule definitions. 4.1 Variables *=*=*=*=*=*=*= Variables are defined with the following syntax. The name is any sequence of alphanumeric characters, underscore `_', and hyphen `-'. << = >> Values are defined as a sequence of literal characters and variable expansions. A variable expansion has the form `$()', which represents the value of the `' variable in the current environment. Some examples are shown below. << CC = gcc CFLAGS = -Wall -g COMMAND = $(CC) $(CFLAGS) -O2 >> In this example, the value of the `COMMAND' variable is the string `gcc -Wall -g -O2'. Unlike make(1), variable expansion is eager and pure (see also the section on Scoping). That is, variable values are expanded immediately and new variable definitions do not affect old ones. For example, suppose we extend the previous example with following variable definitions. << X = $(COMMAND) COMMAND = $(COMMAND) -O3 Y = $(COMMAND) >> In this example, the value of the `X' variable is the string `gcc -Wall -g -O2' as before, and the value of the `Y' variable is `gcc -Wall -g -O2 -O3'. 4.2 Adding to a variable definition *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Variables definitions may also use the += operator, which adds the new text to an existing definition. The following two definitions are equivalent. << # Add options to the CFLAGS variable CFLAGS = $(CFLAGS) -Wall -g # The following definition is equivalent CFLAGS += -Wall -g >> 4.3 Arrays *=*=*=*=*=* Arrays can be defined by appending the `[]' sequence to the variable name and defining initial values for the elements as separate lines. Whitespace is significant on each line. The following code sequence prints `c d e'. << X[] = a b c d e f println($(nth 2, $(X))) >> 4.4 Special characters and quoting *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* The following characters are special to omake: `$():,=#\'. To treat any of these characters as normal text, they should be escaped with the backslash character `\'. << DOLLAR = \$ >> Newlines may also be escaped with a backslash to concatenate several lines. << FILES = a.c\ b.c\ c.c >> Note that the backslash is not an escape for any other character, so the following works as expected (that is, it preserves the backslashes in the string). << DOSTARGET = C:\WINDOWS\control.ini >> An alternative mechanism for quoting special text is the use `$"..."' escapes. The number of double-quotations is arbitrary. The outermost quotations are not included in the text. << A = $""String containing "quoted text" "" B = $"""Multi-line text. The # character is not special""" >> 4.5 Function definitions *=*=*=*=*=*=*=*=*=*=*=*=* Functions are defined using the following syntax. << () = >> The parameters are a comma-separated list of identifiers, and the body must be placed on a separate set of lines that are indented from the function definition itself. For example, the following text defines a function that concatenates its arguments, separating them with a colon. << ColonFun(a, b) = return($(a):$(b)) >> The `return' expression can be used to return a value from the function. A `return' statement is not required; if it is omitted, the returned value is the value of the last expression in the body to be evaluated. NOTE: as of version `0.9.6', `return' is a control operation, causing the function to immediately return. In the following example, when the argument `a' is true, the function `f' immediately returns the value 1 without evaluating the print statement. << f(a) = if $(a) return 1 println(The argument is false) return 0 >> In many cases, you may wish to return a value from a section or code block without returning from the function. In this case, you would use the `value' operator. In fact, the `value' operator is not limited to functions, it can be used any place where a value is required. In the following definition, the variable `X' is defined as 1 or 2, depending on the value of a, then result is printed, and returned from the function. << f_value(a) = X = if $(a) value 1 else value 2 println(The value of X is $(X)) value $(X) >> Functions are called using the GNU-make syntax, `$( ' is a comma-separated list of values. For example, in the following program, the variable `X' contains the value `foo:bar'. << X = $(ColonFun foo, bar) >> If the value of a function is not needed, the function may also be called using standard function call notation. For example, the following program prints the string "She says: Hello world". << Printer(name) = println($(name) says: Hello world) Printer(She) >> 4.6 Comments *=*=*=*=*=*=* Comments begin with the `#' character and continue to the end of the line. 4.7 File inclusion *=*=*=*=*=*=*=*=*=* Files may be included with the `include' or `open' form. The included file must use the same syntax as an OMakefile. << include $(Config_file) >> The `open' operation is similar to an `include', but the file is included at most once. << open Config # Repeated opens are ignored, so this # line has no effect. open Config >> If the file specified is not an absolute filenmame, both `include' and `open' operations search for the file based on the 'OMAKEPATH' variable. In case of the `open' directive, the search is performed at parse time, and the argument to `open' may not contain any expressions. 4.8 Scoping, sections *=*=*=*=*=*=*=*=*=*=*= Scopes in omake are defined by indentation level. When indentation is increased, such as in the body of a function, a new scope is introduced. The `section' form can also be used to define a new scope. For example, the following code prints the line `X = 2', followed by the line `X = 1'. << X = 1 section X = 2 println(X = $(X)) println(X = $(X)) >> This result may seem surprising--the variable definition within the `section' is not visible outside the scope of the `section'. The `export' form, which will be described in detail in Section 6.3, can be used to circumvent this restriction by exporting variable values from an inner scope. For example, if we modify the previous example by adding an `export' expression, the new value for the `X' variable is retained, and the code prints the line `X = 2' twice. << X = 1 section X = 2 println(X = $(X)) export println(X = $(X)) >> There are also cases where separate scoping is quite important. For example, each OMakefile is evaluated in its own scope. Since each part of a project may have its own configuration, it is important that variable definitions in one OMakefile do not affect the definitions in another. To give another example, in some cases it is convenient to specify a separate set of variables for different build targets. A frequent idiom in this case is to use the `section' command to define a separate scope. << section CFLAGS += -g %.c: %.y $(YACC) $< .SUBDIRS: foo .SUBDIRS: bar baz >> In this example, the `-g' option is added to the `CFLAGS' variable by the `foo' subdirectory, but not by the `bar' and `baz' directories. The implicit rules are scoped as well and in this example, the newly added yacc rule will be inherited by the `foo' subdirectory, but not by the `bar' and `baz' ones; furthermore this implicit rule will not be in scope in the current directory. 4.9 Conditionals *=*=*=*=*=*=*=*=* Top level conditionals have the following form. << if elseif else >> The `' expression is evaluated, and if it evaluates to a true value (see Section 9.2 for more information on logical values, and Boolean functions), the code for the `' is evaluated; otherwise the remaining clauses are evaluated. There may be multiple `elseif' clauses; both the `elseif' and `else' clauses are optional. Note that the clauses are indented, so they introduce new scopes. When viewed as a predicate, a value corresponds to the Boolean false, if its string representation is the empty string, or one of the strings `false', `no', `nil', `undefined', or `0'. All other values are true. The following example illustrates a typical use of a conditional. The `OSTYPE' variable is the current machine architecture. << # Common suffixes for files if $(equal $(OSTYPE), Win32) EXT_LIB = .lib EXT_OBJ = .obj EXT_ASM = .asm EXE = .exe export elseif $(mem $(OSTYPE), Unix Cygwin) EXT_LIB = .a EXT_OBJ = .o EXT_ASM = .s EXE = export else # Abort on other architectures eprintln(OS type $(OSTYPE) is not recognized) exit(1) >> 4.10 Matching *=*=*=*=*=*=*= Pattern matching is performed with the `switch' and `match' forms. << switch case case ... default >> The number of cases is arbitrary. The `default' clause is optional; however, if it is used it should be the last clause in the pattern match. For `switch', the string is compared with the patterns literally. << switch $(HOST) case mymachine println(Building on mymachine) default println(Building on some other machine) >> Patterns need not be constant strings. The following function tests for a literal match against `pattern1', and a match against `pattern2' with `##' delimiters. << Switch2(s, pattern1, pattern2) = switch $(s) case $(pattern1) println(Pattern1) case $"##$(pattern2)##" println(Pattern2) default println(Neither pattern matched) >> For `match' the patterns are egrep(1)-style regular expressions. The numeric variables `$1, $2, ...' can be used to retrieve values that are matched by `\(...\)' expressions. << match $(NODENAME)@$(SYSNAME)@$(RELEASE) case $"mymachine.*@\(.*\)@\(.*\)" println(Compiling on mymachine; sysname $1 and release $2 are ignored) case $".*@Linux@.*2\.4\.\(.*\)" println(Compiling on a Linux 2.4 system; subrelease is $1) default eprintln(Machine configuration not implemented) exit(1) >> 4.11 Objects *=*=*=*=*=*=* OMake is an object-oriented language. Generally speaking, an object is a value that contains fields and methods. An object is defined with a `.' suffix for a variable. For example, the following object might be used to specify a point (1, 5) on the two-dimensional plane. << Coord. = x = 1 y = 5 print(message) = println($"$(message): the point is ($(x), $(y)") # Define X to be 5 X = $(Coord.x) # This prints the string, "Hi: the point is (1, 5)" Coord.print(Hi) >> The fields `x' and `y' represent the coordinates of the point. The method `print' prints out the position of the point. 4.12 Classes *=*=*=*=*=*=* We can also define classes. For example, suppose we wish to define a generic `Point' class with some methods to create, move, and print a point. A class is really just an object with a name, defined with the `class' directive. << Point. = class Point # Default values for the fields x = 0 y = 0 # Create a new point from the coordinates new(x, y) = this.x = $(x) this.y = $(y) return $(this) # Move the point to the right move-right() = x = $(add $(x), 1) return $(this) # Print the point print() = println($"The point is ($(x), $(y)") p1 = $(Point.new 1, 5) p2 = $(p1.move-right) # Prints "The point is (1, 5)" p1.print() # Prints "The point is (2, 5)" p2.print() >> Note that the variable `$(this)' is used to refer to the current object. Also, classes and objects are functional---the `new' and `move-right' methods return new objects. In this example, the object `p2' is a different object from `p1', which retains the original (1, 5) coordinates. 4.13 Inheritance *=*=*=*=*=*=*=*=* Classes and objects support inheritance (including multiple inheritance) with the `extends' directive. The following definition of `Point3D' defines a point with `x', `y', and `z' fields. The new object inherits all of the methods and fields of the parent classes/objects. << Z. = z = 0 Point3D. = extends $(Point) extends $(Z) class Point3D print() = println($"The 3D point is ($(x), $(y), $(z))") # The "new" method was not redefined, so this # defines a new point (1, 5, 0). p = $(Point3D.new 1, 5) >> 4.14 static. *=*=*=*=*=*=* The `static.' object is used to specify values that are persistent across runs of OMake. They are frequently used for configuring a project. Configuring a project can be expensive, so the `static.' object ensure that the configuration is performed just once. In the following (somewhat trivial) example, a `static' section is used to determine if the LaTeX command is available. The `$(where latex)' function returns the full pathname for `latex', or `false' if the command is not found. << static. = LATEX_ENABLED = false print(--- Determining if LaTeX is installed ) if $(where latex) LATEX_ENABLED = true export if $(LATEX_ENABLED) println($'(enabled)') else println($'(disabled)') >> The OMake standard library provides a number of useful functions for programming the `static.' tests, as described in Chapter 14. Using the standard library, the above can be rewritten as << open configure/Configure static. = LATEX_ENABLED = $(CheckProg latex) >> As a matter of style, a `static.' section that is used for configuration should print what it is doing using the 'ConfMsgChecking' and 'ConfMsgResult' functions (of course, most of helper functions in the standard library would do that automatically). 4.14.1 .STATIC =============== This feature was introduced in version 0.9.8.5. There is also a rule form of static section. The syntax can be any of the following three forms. << # Export all variables defined by the body .STATIC: # Specify file-dependencies .STATIC: # Specify which variables to export, as well as file dependencies .STATIC: : >> The `' are the variable names to be defined, the `' are file dependencies---the rule is re-evaluated if one of the dependencies is changed. The `' and `' can be omitted; if so, all variables defined in the `' are exported. For example, the final example of the previous section can also be implemented as follows. << open configure/Configure .STATIC: LATEX_ENABLED = $(CheckProg latex) >> The effect is much the same as using `static.' (instead of `.STATIC'). However, in most cases `.STATIC' is preferred, for two reasons. First, a `.STATIC' section is lazy, meaning that it is not evaluated until one of its variables is resolved. In this example, if `$(LATEX_ENABLED)' is never evaluated, the section need never be evaluated either. This is in contrast to the `static.' section, which always evaluates its body at least once. A second reason is that a `.STATIC' section allows for file dependencies, which are useful when the `.STATIC' section is used for memoization. For example, suppose we wish to create a dictionary from a table that has key-value pairs. By using a `.STATIC' section, we can perform this computation only when the input file changes (not on every fun of `omake'). In the following example the 'awk' function is used to parse the file `table-file'. When a line is encountered with the form key` = 'value, the key/value pair is added the the `TABLE'. << .STATIC: table-file TABLE = $(Map) awk(table-file) case $'^\([[:alnum:]]+\) *= *\(.*\)' TABLE = $(TABLE.add $1, $2) export >> It is appropriate to think of a `.STATIC' section as a rule that must be recomputed whenever the dependencies of the rule change. The targets of the rule are the variables it exports (in this case, the `TABLE' variable). 4.14.1.1 .MEMO --------------- A `.MEMO' rule is just like a `.STATIC' rule, except that the results are not saved between independent runs of `omake'. 4.14.1.2 :key: --------------- The `.STATIC' and `.MEMO' rules also accept a `:key:' value, which specifies a "key" associated with the values being computed. It is useful to think of a `.STATIC' rule as a dictionary that associates keys with their values. When a `.STATIC' rule is evaluated, the result is saved in the table with the `:key:' defined by the rule (if a `:key:' is not specified, a default key is used instead). In other words, a rule is like a function. The `:key:' specifies the function "argument", and the rule body computes the result. To illustrate, let's use a `.MEMO' rule to implement a Fibonacci function. << fib(i) = i = $(int $i) .MEMO: :key: $i println($"Computing fib($i)...") result = if $(or $(eq $i, 0), $(eq $i, 1)) value $i else add($(fib $(sub $i, 1)), $(fib $(sub $i, 2))) value $(result) println($"fib(10) = $(fib 10)") println($"fib(12) = $(fib 12)") >> When this script is run, it produces the following output. << Computing fib(10)... Computing fib(9)... Computing fib(8)... Computing fib(7)... Computing fib(6)... Computing fib(5)... Computing fib(4)... Computing fib(3)... Computing fib(2)... Computing fib(1)... Computing fib(0)... fib(10) = 55 Computing fib(12)... Computing fib(11)... fib(12) = 144 >> Note that the Fibonacci computation is performed just once for each value of the argument, rather than an exponential number of times. In other words, the `.MEMO' rule has performed a memoization, hence the name. Note that if `.STATIC' were used instead, the values would be saved across runs of `omake'. As a general guideline, whenever you use a `.STATIC' or `.MEMO' rule within a function body, you will usually want to use a `:key:' value to index the rule by the function argument. However, this is not required. In the following, the `.STATIC' rule is used to perform some expensive computation once. << f(x) = .STATIC: y = $(expensive-computation) add($x, $y) >> Additonal care should be taken for recursive functions, like the Fibonacci function. If the `:key:' is omitted, then the rule would be defined in terms of itself, resulting in a cyclic dependency. Here is the output of the Fibonacci program with an omitted `:key:'. << Computing fib(10)... Computing fib(8)... Computing fib(6)... Computing fib(4)... Computing fib(2)... Computing fib(0)... fib(10) = 0 fib(12) = 0 >> The reason for this behavior is that the `result' value is not saved until the base case `i = 0 || i = 1' is reached, so `fib' calls itself recursively until reaching `fib(0)', whereupon the `result' value is fixed at 0. In any case, recursive definitions are perfectly acceptable, but you will usually want a `:key:' argument so that each recursive call has a different `:key:'. In most cases, this means that the `:key:' should include all arguments to the function. 4.15 Constants *=*=*=*=*=*=*=* Internally, OMake represents values in several forms, which we list here. - int - Constructor: `$(int )' 9.4.1. - Object: `Int' 12.1.4. - An integer is a represented with finite precision using the OCaml representation (31 bits on a 32 platform, and 63 bits on a 64 bit platform). - See also: arithmetic 9.4.3. - float - Constructor: `$(float )' 9.4.2. - Object: `Float' 12.1.5. - A float is a floating-point value, represented in IEEE 64-bit format. - See also: arithmetic 9.4.3. - array - Constructor: `$(array , ..., )' 9.3.1. - Object: `Array' 12.1.7. - An array is a finite list of values. Arrays are also defined with an array definition << X[] = ... >> - See also: `nth' 9.3.5, `nth-tl' 9.3.8, `length' 9.3.4, ... - string - Object: `String' 12.1.8. - By default, all constant character sequences represent strings, so the simple way to construct a string is to write it down. Internally, the string may be parsed as several pieces. A string often represents an array of values separated by whitespace. << osh>S = This is a string - : : Sequence osh>length($S) - : 4 : Int >> - A data string is a string where whitespace is significant. It represents a single value, not an array. The constructors are the quotations `$"..."' and `$'...''. << osh>S = $'''This is a string''' - : : String >> - See also: Quoted strings 7.2. - file - Constructor: `$(file )' 10.1.1. - Object: `File' 12.1.13. - A file object represents the abstract name for a file. The file object can be viewed as an absolute name; the string representation depends on the current directory. << osh>name = $(file foo) - : /Users/jyh/projects/omake/0.9.8.x/foo : File osh>echo $(name) foo osh>cd .. - : /Users/jyh/projects/omake : Dir osh>echo $(name) 0.9.8.x/foo >> - See also: `vmount' 10.6.1. - directory - Constructor: `$(dir )' 10.1.1. - Object: `Dir' 12.1.14. - A directory object is like a file object, but it represents a directory. - map (dictionary) - Object: `Map' 12.1.2. - A map/dictionary is a table that maps values to values. The `Map' object is the empty map. The data structure is persistent, and all operations are pure and functional. The special syntax `$|key|' can be used for keys that are strings. << osh>table = $(Map) osh>table = $(table.add x, int) osh>table. += $|y| = int osh>table.find(y) - : "int" : Sequence >> - channel - Constructor: `$(fopen , )' 10.8.4. - Objects: `InChannel' 12.1.16, `OutChannel' 12.1.17. - Channels are used for buffered input/output. - function - Constructor: `$(fun , )' 9.5.1. - Object: `Fun' 12.1.9. - Functions can be defined in several ways. - As an anonymous function, << $(fun i, j, $(add $i, $j)) >> - As a named function, << f(i, j) = add($i, $j) >> - This feature will be introduced in version 0.9.9.0.As an anonymous function argument. << osh>foreach(i => $(add $i, 1), 1 2 3) - : : Array >> - lexer - Object: `Lexer' 10.11.9. - This object represents a lexer. - parser - Object: `Parser' 10.11.13. - This object represents a parser. Chapter 5 Variables and Naming ********************************* During evaluation, there are three different kinds of namespaces. Variables can be private, or they may refer to fields in the current this object, or they can be part of the global namespace. The namespace can be specified directly by including an explicit qualifier before the variable name. The three namespaces are separate; a variable can be bound in one or more simultaneously. << # private namespace private.X = 1 # current object this.X = 2 # public, globally defined global.X = 3 >> 5.1 private. *=*=*=*=*=*=* The `private.' qualifier is used to define variables that are private to the current file/scope. The values are not accessible outside the scope. Private variables are statically (lexically) scoped. << Obj. = private.X = 1 print() = println(The value of X is: $X) # Prints: # The private value of X is: 1 Obj.print() # This is an error--X is private in Obj y = $(Obj.X) >> In addition, private definitions do not affect the global value of a variable. << # The public value of x is 1 x = 1 # This object uses a private value of x Obj. = private.x = 2 print() = x = 3 println(The private value of x is: $x) println(The public value of x is: $(public.x)) f() # Prints: # The private value of x is: 3 # The public value of x is: 1 Obj.print() >> Private variables have two additional properties. 1. Private variables are local to the file in which they are defined. 2. Private variables are not exported by the `export' directive, unless they are mentioned explicitly. << private. = FLAG = true section FLAG = false export # FLAG is still true section FLAG = false export FLAG # FLAG is now false >> 5.2 this. *=*=*=*=*= The `this.' qualifier is used to define fields that are local to an object. Object variables are dynamically scoped. << X = 1 f() = println(The public value of X is: $(X)) # Prints: # The public value of X is: 2 section X = 2 f() # X is a protected field in the object Obj. = this.X = 3 print() = println(The value of this.X is: $(X)) f() # Prints: # The value of this.X is: 3 # The public value of X is: 1 Obj.print() # This is legal, it defines Y as 3 Y = $(Obj.X) >> In general, it is a good idea to define object variables as protected. The resulting code is more modular because variables in your object will not produce unexpected clashes with variables defined in other parts of the project. 5.3 global. *=*=*=*=*=*= The `global.' qualifier is used to specify global dynamically-scoped variables. In the following example, the `global.' definition specifies that the binding `X = 4' is to be dynamically scoped. Global variables are not defined as fields of an object. << X = 1 f() = println(The global value of X is: $(X)) # Prints: # The global value of X is: 2 section X = 2 f() Obj. = protected.X = 3 print() = println(The protected value of X is: $(X)) global.X = 4 f() # Prints: # The protected value of X is: 3 # The global value of X is: 4 Obj.print() >> 5.4 protected. *=*=*=*=*=*=*=* In OMake 0.9.8, `protected' is a synonym for `this'. << osh>protected.x = 1 - : "1" : Sequence osh>value $(this.x) - : "1" : Sequence >> In 0.9.9, this will change, so that the qualifier `protected' means (in 0.9.9) that a variable is local to the current object or file, and may not be accessed outside it. 5.5 public. *=*=*=*=*=*= In OMake 0.9.8, `public' is a synonym for `global'. << osh>public.x = 1 - : "1" : Sequence osh>value $(global.x) - : "1" : Sequence >> In 0.9.9, this will change, so that the qualifier `public' means (in 0.9.9) that a variable is to be accessible from outside the current file or object. 5.6 Qualified blocks *=*=*=*=*=*=*=*=*=*=* If several qualified variables are defined simultaneously, a block form of qualifier can be defined. The syntax is similar to an object definition, where the name of the object is the qualifier itself. For example, the following program defines two private variables `X' and `Y'. << private. = X = 1 Y = 2 >> The qualifier specifies a default namespace for new definitions in the block. The contents of the block is otherwise completely general. << private. = X = 1 Y = 2 public.Z = $(add $X, $Y) # Prints "The value of Z is 3" echo The value of Z is $Z >> 5.7 declare *=*=*=*=*=*= When a variable name is unqualified, its namespace is determined by the most recent definition or declaration that is in scope for that variable. We have already seen this in the examples, where a variable definition is qualified, but the subsequent uses are not qualified explicitly. In the following example, the first occurrence of `$X' refers to the private definition, because that is the most recent. The public definition of `X' is still `0', but the variable must be qualified explicitly. << public.X = 0 private.X = 1 public.print() = println(The value of private.X is: $X) println(The value of public.X is: $(public.X)) >> Sometimes it can be useful to declare a variable without defining it. For example, we might have a function that uses a variable `X' that is to be defined later in the program. The `declare' directive can be used for this. << declare public.X public.print() = println(The value of X is $X) # Prints "The value of X is 2" X = 2 print() >> Finally, what about variables that are used but not explicitly qualified? In this case, the following rules are used. - If the variable is a function parameter, it is private. - If the variable is defined in an object, it is qualified with `this.'. - Otherwise, the variable is public. Chapter 6 Expressions and values *********************************** omake provides a full programming-language including many system and IO functions. The language is object-oriented -- everything is an object, including the base values like numbers and strings. However, the omake language differs from other scripting languages in three main respects. - Scoping is dynamic. - Apart from IO, the language is entirely functional -- there is no assignment operator in the language. - Evaluation is normally eager -- that is, expressions are evaluated as soon as they are encountered. To illustrate these features, we will use the osh(1) omake program shell. The osh(1) program provides a toploop, where expressions can be entered and the result printed. osh(1) normally interprets input as command text to be executed by the shell, so in many cases we will use the `value' form to evaluate an expression directly. << osh> 1 *** omake error: File -: line 1, characters 0-1 command not found: 1 osh> value 1 - : "1" : Sequence osh> ls -l omake -rwxrwxr-x 1 jyh jyh 1662189 Aug 25 10:24 omake* >> 6.1 Dynamic scoping *=*=*=*=*=*=*=*=*=*= Dynamic scoping means that the value of a variable is determined by the most recent binding of the variable in scope at runtime. Consider the following program. << OPTIONS = a b c f() = println(OPTIONS = $(OPTIONS)) g() = OPTIONS = d e f f() >> If `f()' is called without redefining the `OPTIONS' variable, the function should print the string `OPTIONS = a b c'. In contrast, the function `g()' redefines the `OPTIONS' variable and evaluates `f()' in that scope, which now prints the string `OPTIONS = d e f'. The body of `g' defines a local scope -- the redefinition of the `OPTIONS' variable is local to `g' and does not persist after the function terminates. << osh> g() OPTIONS = d e f osh> f() OPTIONS = a b c >> Dynamic scoping can be tremendously helpful for simplifying the code in a project. For example, the OMakeroot file defines a set of functions and rules for building projects using such variables as `CC', `CFLAGS', etc. However, different parts of a project may need different values for these variables. For example, we may have a subdirectory called `opt' where we want to use the `-03' option, and a subdirectory called `debug' where we want to use the `-g' option. Dynamic scoping allows us to redefine these variables in the parts of the project without having to redefine the functions that use them. << section CFLAGS = -O3 .SUBDIRS: opt section CFLAGS = -g .SUBDIRS: debug >> However, dynamic scoping also has drawbacks. First, it can become confusing: you might have a variable that is intended to be private, but it is accidentally redefined elsewhere. For example, you might have the following code to construct search paths. << PATHSEP = : make-path(dirs) = return $(concat $(PATHSEP), $(dirs)) make-path(/bin /usr/bin /usr/X11R6/bin) - : "/bin:/usr/bin:/usr/X11R6/bin" : String >> However, elsewhere in the project, the `PATHSEP' variable is redefined as a directory separator `/', and your function suddenly returns the string `/bin//usr/bin//usr/X11R6/bin', obviously not what you want. The `private' block is used to solve this problem. Variables that are defined in a `private' block use static scoping -- that is, the value of the variable is determined by the most recent definition in scope in the source text. << private PATHSEP = : make-path(dirs) = return $(concat $(PATHSEP), $(dirs)) PATHSEP = / make-path(/bin /usr/bin /usr/X11R6/bin) - : "/bin:/usr/bin:/usr/X11R6/bin" : String >> 6.2 Functional evaluation *=*=*=*=*=*=*=*=*=*=*=*=*= Apart from I/O, omake programs are entirely functional. This has two parts: - There is no assignment operator. - Functions are values, and may be passed as arguments, and returned from functions just like any other value. The second item is straightforward. For example, the following program defines an increment function by returning a function value. << incby(n) = g(i) = return $(add $(i), $(n)) return $(g) f = $(incby 5) value $(f 3) - : 8 : Int >> The first item may be the most confusing initially. Without assignment, how is it possible for a subproject to modify the global behavior of the project? In fact, the omission is intentional. Build scripts are much easier to write when there is a guarantee that subprojects do not interfere with one another. However, there are times when a subproject needs to propagate information back to its parent object, or when an inner scope needs to propagate information back to the outer scope. 6.3 Exporting the environment *=*=*=*=*=*=*=*=*=*=*=*=*=*=*= The `export' directive can be used to propagate all or part of an inner scope back to its parent. If used without arguments, the entire scope is propagated back to the parent; otherwise the arguments specify which part of the environment to propagate. The most common usage is to export some or all of the definitions in a conditional block. In the following example, the variable `B' is bound to 2 after the conditional. The `A' variable is not redefined. << if $(test) A = 1 B = $(add $(A), 1) export B else B = 2 export >> If the `export' directive is used without an argument, all of the following is exported: - The values of all the dynamically scoped variables (as described in Section 5.5). - The current working directory. - The current Unix environment. - The current implicit rules and implicit dependencies (see also Section 8.11.1). - The current set of "phony" target declarations (see Sections 8.10 and 8.11.3). If the `export' directive is used with an argument, the argument expression is evaluated and the resulting value is interpreted as follows: - If the value is empty, everything is exported, as described above. - If the value represents a environment (or a partial environment) captured using the 'export' function, then the corresponding environment or partial environment is exported. - Otherwise, the value must be a sequence of strings specifying which items are to be propagated back. The following strings have special meaning: - `.RULE' --- implicit rules and implicit dependencies. - `.PHONY' --- the set of "phony" target declarations. All other strings are interpreted as names of the variables that need to be propagated back. For example, in the following (somewhat artificial) example, the variables `A' and `B' will be exported, and the implicit rule will remain in the environment after the section ends, but the variable `TMP' and the target `tmp_phony' will remain unchanged. <
> 6.3.1 Export regions ===================== This feature was introduced in version 0.9.8.5. The `export' directive does not need to occur at the end of a block. An export is valid from the point where it is specified to the end of the block in which it is contained. In other words, the export is used in the program that follows it. This can be especially useful for reducing the amount of code you have to write. In the following example, the variable `CFLAGS' is exported from the both branches of the conditional. << export CFLAGS if $(equal $(OSTYPE), Win32) CFLAGS += /DWIN32 else CFLAGS += -UWIN32 >> 6.3.2 Returning values from exported regions ============================================= This feature was introduced in version 0.9.8.5. The use of export does not affect the value returned by a block. The value is computed as usual, as the value of the last statement in the block, ignoring the export. For example, suppose we wish to implement a table that maps strings to unique integers. Consider the following program. << # Empty map table = $(Map) # Add an entry to the table intern(s) = export if $(table.mem $s) table.find($s) else private.i = $(table.length) table = $(table.add $s, $i) value $i intern(foo) intern(boo) intern(moo) # Prints "boo = 1" println($"boo = $(intern boo)") >> Given a string `s', the function `intern' returns either the value already associated with `s', or assigns a new value. In the latter case, the table is updated with the new value. The `export' at the beginning of the function means that the variable `table' is to be exported. The bindings for `s' and `i' are not exported, because they are private. Evaluation in omake is eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined. << osh> A = 1 - : "1" osh> A = $(A)$(A) - : "11" >> In the second definition, `A = $(A)$(A)', the right-hand-side is evaluated first, producing the sequence `11'. Then the variable `A' is redefined as the new value. When combined with dynamic scoping, this has many of the same properties as conventional imperative programming. << osh> A = 1 - : "1" osh> printA() = println($"A = $A") osh> A = $(A)$(A) - : "11" osh> printA() 11 >> In this example, the print function is defined in the scope of `A'. When it is called on the last line, the dynamic value of `A' is `11', which is what is printed. However, dynamic scoping and imperative programming should not be confused. The following example illustrates a difference. The second `printA' is not in the scope of the definition `A = x$(A)$(A)x', so it prints the original value, `1'. << osh> A = 1 - : "1" osh> printA() = println($"A = $A") osh> section A = x$(A)$(A)x printA() x11x osh> printA() 1 >> See also Section 7.5 for further ways to control the evaluation order through the use of "lazy" expressions. 6.4 Objects *=*=*=*=*=*= omake is an object-oriented language. Everything is an object, including base values like numbers and strings. In many projects, this may not be so apparent because most evaluation occurs in the default toplevel object, the `Pervasives' object, and few other objects are ever defined. However, objects provide additional means for data structuring, and in some cases judicious use of objects may simplify your project. Objects are defined with the following syntax. This defines `name' to be an object with several methods an values. << name. = # += may be used as well extends parent-object # optional class class-name # optional # Fields X = value Y = value # Methods f(args) = body g(arg) = body >> An `extends' directive specifies that this object inherits from the specified `parent-object'. The object may have any number of `extends' directives. If there is more than on `extends' directive, then fields and methods are inherited from all parent objects. If there are name conflicts, the later definitions override the earlier definitions. The `class' directive is optional. If specified, it defines a name for the object that can be used in `instanceof' operations, as well as `::' scoping directives discussed below. The body of the object is actually an arbitrary program. The variables defined in the body of the object become its fields, and the functions defined in the body become its methods. 6.5 Field and method calls *=*=*=*=*=*=*=*=*=*=*=*=*=* The fields and methods of an object are named using `object.name' notation. For example, let's define a one-dimensional point value. << Point. = class Point # Default value x = $(int 0) # Create a new point new(x) = x = $(int $(x)) return $(this) # Move by one move() = x = $(add $(x), 1) return $(this) osh> p1 = $(Point.new 15) osh> value $(p1.x) - : 15 : Int osh> p2 = $(p1.move) osh> value $(p2.x) - : 16 : Int >> The `$(this)' variable always represents the current object. The expression `$(p1.x)' fetches the value of the `x' field in the `p1' object. The expression `$(Point.new 15)' represents a method call to the `new' method of the `Point' object, which returns a new object with 15 as its initial value. The expression `$(p1.move)' is also a method call, which returns a new object at position 16. Note that objects are functional --- it is not possible to modify the fields or methods of an existing object in place. Thus, the `new' and `move' methods return new objects. 6.6 Method override *=*=*=*=*=*=*=*=*=*= Suppose we wish to create a new object that moves by 2 units, instead of just 1. We can do it by overriding the `move' method. << Point2. = extends $(Point) # Override the move method move() = x = $(add $(x), 2) return $(this) osh> p2 = $(Point2.new 15) osh> p3 = $(p2.move) osh> value $(p3.x) - : 17 : Int >> However, by doing this, we have completely replaced the old `move' method. 6.7 Super calls *=*=*=*=*=*=*=*= Suppose we wish to define a new `move' method that just calls the old one twice. We can refer to the old definition of move using a super call, which uses the notation `$(classname::name )'. The `classname' should be the name of the superclass, and `name' the field or method to be referenced. An alternative way of defining the `Point2' object is then as follows. << Point2. = extends $(Point) # Call the old method twice move() = this = $(Point::move) return $(Point::move) >> Note that the first call to `$(Point::move)' redefines the current object (the `this' variable). This is because the method returns a new object, which is re-used for the second call. Chapter 7 Additional language examples ***************************************** In this section, we'll explore the core language through a series of examples (examples of the build system are the topic of the Chapter 3). For most of these examples, we'll use the `osh' command interpreter. For simplicity, the values printed by `osh' have been abbreviated. 7.1 Strings and arrays *=*=*=*=*=*=*=*=*=*=*=* The basic OMake values are strings, sequences, and arrays of values. Sequences are like arrays of values separated by whitespace; the sequences are split on demand by functions that expect arrays. << osh> X = 1 2 - : "1 2" : Sequence osh> addsuffix(.c, $X) - : : Array >> Sometimes you want to define an array explicitly. For this, use the `[]' brackets after the variable name, and list each array entry on a single indented line. << osh> A[] = Hello world $(getenv HOME) - : : Array >> One central property of arrays is that whitespace in the elements is significant. This can be useful, especially for filenames that contain whitespace. << # List the current files in the directory osh> ls -Q "fee" "fi" "foo" "fum" osh> NAME[] = Hello world - : : Array osh> touch $(NAME) osh> ls -Q "fee" "fi" "foo" "fum" "Hello world" >> 7.2 Quoted strings *=*=*=*=*=*=*=*=*=* A `String' is a single value; whitespace is significant in a string. Strings are introduced with quotes. There are four kinds of quoted elements; the kind is determined by the opening quote. The symbols `'' (single-quote) and `"' (double-quote) introduce the normal shell-style quoted elements. The quotation symbols are included in the result string. Variables are always expanded within a quote of this kind. Note that the osh(1) (Chapter 15) printer escapes double-quotes within the string; these are only for printing, they are not part of the string itself. << osh> A = 'Hello "world"' - : "'Hello \"world\"'" : String osh> B = "$(A)" - : "\"'Hello \"world\"'\"" : String osh> C = 'Hello \'world\'' - : "'Hello 'world''" : String >> A second kind of quote is introduced with the `$'' and `$"' quotes. The number of opening and closing quote symbols is arbitrary. These quotations have several properties: - The quote delimiters are not part of the string. - Backslash `\' symbols within the string are treated as normal characters. - The strings may span several lines. - Variables are expanded within `$"' sequences, but not within `$'' sequences. << osh> A = $'''Here $(IS) an '''' \(example\) string[''' - : "Here $(IS) an '''' \\(example\\) string[" : String osh> B = $""""A is "$(A)" """" - : "A is \"Here $(IS) an '''' \\(example\\) string[\" " : String osh> value $(A.length) - : 38 : Int osh> value $(A.nth 5) - : "$" : String osh> value $(A.rev) - : "[gnirts )\\elpmaxe(\\ '''' na )SI($ ereH" : String >> Strings and sequences both have the property that they can be merged with adjacent non-whitespace text. << osh> A = a b c - : "a b c" : Sequence osh> B = $(A).c - : : Sequence osh> value $(nth 2, $(B)) - : "c.c" : String osh> value $(length $(B)) - : 3 : Int >> Arrays are different. The elements of an array are never merged with adjacent text of any kind. Arrays are defined by adding square brackets `[]' after a variable name and defining the elements with an indented body. The elements may include whitespace. << osh> A[] = a b foo bar - : : Array osh> echo $(A).c a b foo bar .c osh> value $(A.length) - : 2 : Int osh> value $(A.nth 1) - : "foo bar" : Sequence >> Arrays are quite helpful on systems where filenames often contain whitespace. << osh> FILES[] = c:\Documents and Settings\jyh\one file c:\Program Files\omake\second file osh> CFILES = $(addsuffix .c, $(FILES)) osh> echo $(CFILES) c:\Documents and Settings\jyh\one file.c c:\Program Files\omake\second file.c >> 7.3 Files and directories *=*=*=*=*=*=*=*=*=*=*=*=*= OMake projects usually span multiple directories, and different parts of the project execute commands in different directories. There is a need to define a location-independent name for a file or directory. This is done with the `$(file )' and `$(dir )' functions. << osh> mkdir tmp osh> F = $(file fee) osh> section: cd tmp echo $F ../fee osh> echo $F fee >> Note the use of a `section:' to limit the scope of the `cd' command. The section temporarily changes to the `tmp' directory where the name of the file is `../fee'. Once the section completes, we are still in the current directory, where the name of the file is `fee'. One common way to use the file functions is to define proper file names in your project `OMakefile', so that references within the various parts of the project will refer to the same file. << osh> cat OMakefile ROOT = $(dir .) TMP = $(dir tmp) BIN = $(dir bin) ... >> 7.4 Iteration, mapping, and foreach *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Most builtin functions operate transparently on arrays. << osh> addprefix(-D, DEBUG WIN32) - : -DDEBUG -DWIN32 : Array osh> mapprefix(-I, /etc /tmp) - : -I /etc -I /tmp : Array osh> uppercase(fee fi foo fum) - : FEE FI FOO FUM : Array >> The `mapprefix' and `addprefix' functions are slightly different (the `addsuffix' and `mapsuffix' functions are similar). The `addprefix' adds the prefex to each array element. The `mapprefix' doubles the length of the array, adding the prefix as a new array element before each of the original elements. Even though most functions work on arrays, there are times when you will want to do it yourself. The `foreach' function is the way to go. The `foreach' function has two forms, but the form with a body is most useful. In this form, the function takes two arguments and a body. The second argument is an array, and the first is a variable. The body is evaluated once for each element of the array, where the variable is bound to the element. Let's define a function to add 1 to each element of an array of numbers. << osh> add1(l) = foreach(i, $l): add($i, 1) osh> add1(7 21 75) - : 8 22 76 : Array >> Sometimes you have an array of filenames, and you want to define a rule for each of them. Rules are not special, you can define them anywhere a statement is expected. Say we want to write a function that describes how to process each file, placing the result in the `tmp/' directory. << TMP = $(dir tmp) my-special-rule(files) = foreach(name, $(files)) $(TMP)/$(name): $(name) process $< > $@ >> Later, in some other part of the project, we may decide that we want to use this function to process some files. << # These are the files to process in src/lib MY_SPECIAL_FILES[] = fee.src fi.src file with spaces in its name.src my-special-rule($(MY_SPECIAL_FILES)) >> The result of calling `my-special-rule' is exactly the same as if we had written the following three rules explicitly. << $(TMP)/fee.src: fee.src process fee > $@ $(TMP)/fi.src: fi.src process fi.src > $@ $(TMP)/$"file with spaces in its name.src": $"file with spaces in its name.src" process $< > $@ >> Of course, writing these rules is not nearly as pleasant as calling the function. The usual properties of function abstraction give us the usual benefits. The code is less redundant, and there is a single location (the `my-special-rule' function) that defines the build rule. Later, if we want to modify/update the rule, we need do so in only one location. 7.5 Lazy expressions *=*=*=*=*=*=*=*=*=*=* Evaluation in omake is normally eager. That is, expressions are evaluated as soon as they are encountered by the evaluator. One effect of this is that the right-hand-side of a variable definition is expanded when the variable is defined. There are two ways to control this behavior. The `$`(v)' form introduces lazy behavior, and the `$,(v)' form restores eager behavior. Consider the following sequence. << osh> A = 1 - : "1" : Sequence osh> B = 2 - : "2" : Sequence osh> C = $`(add $(A), $,(B)) - : $(apply add $(apply A) "2" : Sequence) osh> println(C = $(C)) C = 3 osh> A = 5 - : "5" : Sequence osh> B = 6 - : "6" : Sequence osh> println(C = $(C)) C = 7 >> The definition `C = $`(add $(A), $,(B))' defines a lazy application. The `add' function is not applied in this case until its value is needed. Within this expression, the value `$,(B)' specifies that `B' is to be evaluated immediately, even though it is defined in a lazy expression. The first time that we print the value of `C', it evaluates to 3 since `A' is 1 and `B' is 2. The second time we evaluate `C', it evaluates to 7 because `A' has been redefined to `5'. The second definition of `B' has no effect, since it was evaluated at definition time. 7.5.1 A larger example of lazy expressions =========================================== Lazy expressions are not evaluated until their result is needed. Some people, including this author, frown on overuse of lazy expressions, mainly because it is difficult to know when evaluation actually happens. However, there are cases where they pay off. One example comes from option processing. Consider the specification of "include" directories on the command line for a C compiler. If we want to include files from /home/jyh/include and ../foo, we specify it on the command line with the options `-I/home/jyh/include -I../foo'. Suppose we want to define a generic rule for building C files. We could define a `INCLUDES' array to specify the directories to be included, and then define a generic implicit rule in our root OMakefile. << # Generic way to compile C files. CFLAGS = -g INCLUDES[] = %.o: %.c $(CC) $(CFLAGS) $(INCLUDES) -c $< # The src directory builds my_widget+ from 4 source files. # It reads include files from the include directory. .SUBDIRS: src FILES = fee fi foo fum OFILES = $(addsuffix .o, $(FILES)) INCLUDES[] += -I../include my_widget: $(OFILES) $(CC) $(CFLAGS) -o $@ $(OFILES) >> But this is not quite right. The problem is that INCLUDES is an array of options, not directories. If we later wanted to recover the directories, we would have to strip the leading `-I' prefix, which is a hassle. Furthermore, we aren't using proper names for the directories. The solution here is to use a lazy expression. We'll define INCLUDES as a directory array, and a new variable `PREFIXED_INCLUDES' that adds the -I prefix. The `PREFIXED_INCLUDES' is computed lazily, ensuring that the value uses the most recent value of the INCLUDES variable. << # Generic way to compile C files. CFLAGS = -g INCLUDES[] = PREFIXED_INCLUDES[] = $`(addprefix -I, $(INCLUDES)) %.o: %.c $(CC) $(CFLAGS) $(PREFIXED_INCLUDES) -c $< # For this example, we define a proper name for the include directory STDINCLUDE = $(dir include) # The src directory builds my_widget+ from 4 source files. # It reads include files from the include directory. .SUBDIRS: src FILES = fee fi foo fum OFILES = $(addsuffix .o, $(FILES)) INCLUDES[] += $(STDINCLUDE) my_widget: $(OFILES) $(CC) $(CFLAGS) -o $@ $(OFILES) >> Note that there is a close connection between lazy values and functions. In the example above, we could equivalently define `PREFIXED_INCLUDES' as a function with zero arguments. << PREFIXED_INCLUDES() = addprefix(-I, $(INCLUDES)) >> 7.6 Scoping and exports *=*=*=*=*=*=*=*=*=*=*=*= The OMake language is functional (apart from IO and shell commands). This comes in two parts: functions are first-class, and variables are immutable (there is no assignment operator). The latter property may seem strange to users used to GNU make, but it is actually a central point of OMake. Since variables can't be modified, it is impossible (or at least hard) for one part of the project to interfere with another. To be sure, pure functional programming can be awkward. In OMake, each new indentation level introduces a new scope, and new definitions in that scope are lost when the scope ends. If OMake were overly strict about scoping, we would wind up with a lot of convoluted code. << osh> X = 1 osh> setenv(BOO, 12) osh> if $(equal $(OSTYPE), Win32) setenv(BOO, 17) X = 2 osh> println($X $(getenv BOO)) 1 12 >> The `export' command presents a way out. It takes care of "exporting" a value (or the entire variable environment) from an inner scope to an outer one. << osh> X = 1 osh> setenv(BOO, 12) osh> if $(equal $(OSTYPE), Win32) setenv(BOO, 17) X = 2 export osh> println($X $(getenv BOO)) 2 17 >> Exports are especially useful in loop to export values from one iteration of a loop to the next. << # Ok, let's try to add up the elements of the array osh>sum(l) = total = 0 foreach(i, $l) total = $(add $(total), $i) value $(total) osh>sum(1 2 3) - : 0 : Int # Oops, that didn't work! osh>sum(l) = total = 0 foreach(i, $l) total = $(add $(total), $i) export value $(total) osh>sum(1 2 3) - : 6 : Int >> A `while' loop is another form of loop, with an auto-export. << osh>i = 0 osh>total = 0 osh>while $(lt $i, 10) total = $(add $(total), $i) i = $(add $i, 1) osh>println($(total)) 45 >> 7.7 Shell aliases *=*=*=*=*=*=*=*=*= Sometimes you may want to define an alias, an OMake command that masquerades as a real shell command. You can do this by adding your function as a method to the `Shell' object. For an example, suppose we use the `awk' function to print out all the comments in a file. << osh>cat comment.om # Comment function comments(filename) = awk($(filename)) case $'^#' println($0) # File finished osh>include comment osh>comments(comment.om) # Comment function # File finished >> To add it as an alias, add the method (using += to preserve the existing entries in the Shell). << osh>Shell. += printcom(argv) = comments($(nth 0, $(argv))) osh>printcom comment.om > output.txt osh>cat output.txt # Comment function # File finished >> A shell command is passed an array of arguments `argv'. This does not include the name of the alias. 7.8 Input/output redirection on the cheap *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= As it turns out, scoping also provides a nice alternate way to perform redirection. Suppose you have already written a lot of code that prints to the standard output channel, but now you decide you want to redirect it. One way to do it is using the technique in the previous example: define your function as an alias, and then use shell redirection to place the output where you want. There is an alternate method that is easier in some cases. The variables `stdin', `stdout', and `stderr' define the standard I/O channels. To redirect output, redefine these variables as you see fit. Of course, you would normally do this in a nested scope, so that the outer channels are not affected. << osh>f() = println(Hello world) osh>f() Hello world osh>section: stdout = $(fopen output.txt, w) f() close($(stdout)) osh>cat output.txt Hello world >> This also works for shell commands. If you like to gamble, you can try the following example. << osh>f() = println(Hello world) osh>f() Hello world osh>section: stdout = $(fopen output.txt, w) f() cat output.txt close($(stdout)) osh>cat output.txt Hello world Hello world >> Chapter 8 Rules ****************** Rules are used by OMake to specify how to build files. At its simplest, a rule has the following form. << : >> The `' is the name of a file to be built. The `' are a list of files that are needed before the `' can be built. The `' are a list of indented lines specifying commands to build the target. For example, the following rule specifies how to compile a file `hello.c'. << hello.o: hello.c $(CC) $(CFLAGS) -c -o hello.o hello.c >> This rule states that the hello.o file depends on the hello.c file. If the hello.c file has changed, the command `$(CC) $(CFLAGS) -c -o hello.o hello.c' is to be executed to update the target file `hello.o'. A rule can have an arbitrary number of commands. The individual command lines are executed independently by the command shell. The commands do not have to begin with a tab, but they must be indented from the dependency line. In addition to normal variables, the following special variables may be used in the body of a rule. - `$*': the target name, without a suffix. - `$@': the target name. - `$^': a list of the sources, in alphabetical order, with duplicates removed. - `$+': all the sources, in the original order. - `$<': the first source. For example, the above `hello.c' rule may be simplified as follows. << hello.o: hello.c $(CC) $(CFLAGS) -c -o $@ $< >> Unlike normal values, the variables in a rule body are expanded lazily, and binding is dynamic. The following function definition illustrates some of the issues. << CLibrary(name, files) = OFILES = $(addsuffix .o, $(files)) $(name).a: $(OFILES) $(AR) cq $@ $(OFILES) >> This function defines a rule to build a program called `$(name)' from a list of `.o' files. The files in the argument are specified without a suffix, so the first line of the function definition defines a variable `OFILES' that adds the `.o' suffix to each of the file names. The next step defines a rule to build a target library `$(name).a' from the `$(OFILES)' files. The expression `$(AR)' is evaluated when the function is called, and the value of the variable `AR' is taken from the caller's scope (see also the section on Scoping). 8.1 Implicit rules *=*=*=*=*=*=*=*=*=* Rules may also be implicit. That is, the files may be specified by wildcard patterns. The wildcard character is `%'. For example, the following rule specifies a default rule for building `.o' files. << %.o: %.c $(CC) $(CFLAGS) -c -o $@ $*.c >> This rule is a template for building an arbitrary `.o' file from a `.c' file. By default, implicit rules are only used for the targets in the current directory. However subdirectories included via the `.SUBDIRS' rules inherit all the implicit rules that are in scope (see also the section on Scoping). 8.2 Bounded implicit rules *=*=*=*=*=*=*=*=*=*=*=*=*=* Implicit rules may specify the set of files they apply to. The following syntax is used. << : : >> For example, the following rule applies only to the files `a.o' and `b.o'. << a.o b.o: %.o: %.c $(CC) $(CFLAGS) -DSPECIAL -c $*.c >> 8.3 section *=*=*=*=*=*= Frequently, the commands in a rule body are expressions to be evaluated by the shell. omake also allows expressions to be evaluated by omake itself. The syntax of these "computed rules" uses the `section' expression. The following rule uses the omake IO functions to produce the target `hello.c'. << hello.c: section FP = fopen(hello.c, w) fprintln($(FP), $""#include int main() { printf("Hello world\n"); }"") close($(FP)) >> This example uses the quotation `$""...""' (see also Section B.1.6) to quote the text being printed. These quotes are not included in the output file. The `fopen', `fprintln', and `close' functions perform file IO as discussed in the IO section. In addition, commands that are function calls, or special expressions, are interpreted correctly. Since the `fprintln' function can take a file directly, the above rule can be abbreviated as follows. << hello.c: fprintln($@, $""#include int main() { printf("Hello world\n"); }"") >> 8.4 section rule *=*=*=*=*=*=*=*=* Rules can also be computed using the `section rule' form, where a rule body is expected instead of an expression. In the following rule, the file `a.c' is copied onto the `hello.c' file if it exists, otherwise `hello.c' is created from the file `default.c'. << hello.c: section rule if $(target-exists a.c) hello.c: a.c cat a.c > hello.c else hello.c: default.c cp default.c hello.c >> 8.5 Special dependencies *=*=*=*=*=*=*=*=*=*=*=*=* 8.5.1 :exists: =============== In some cases, the contents of a dependency do not matter, only whether the file exists or not. In this case, the `:exists:' qualifier can be used for the dependency. << foo.c: a.c :exists: .flag if $(test -e .flag) $(CP) a.c $@ >> 8.5.2 :effects: ================ Some commands produce files by side-effect. For example, the latex(1) command produces a `.aux' file as a side-effect of producing a `.dvi' file. In this case, the `:effects:' qualifier can be used to list the side-effect explicitly. omake is careful to avoid simultaneously running programs that have overlapping side-effects. << paper.dvi: paper.tex :effects: paper.aux latex paper >> 8.5.3 :value: ============== The `:value:' dependency is used to specify that the rule execution depends on the value of an expression. For example, the following rule << a: b c :value: $(X) ... >> specifies that "a" should be recompiled if the value of `$(X)' changes (X does not have to be a filename). This is intended to allow greater control over dependencies. In addition, it can be used instead of other kinds of dependencies. For example, the following rule: << a: b :exists: c commands >> is the same as << a: b :value: $(target-exists c) commands >> Notes: - The values are arbitrary (they are not limited to variables) - The values are evaluated at rule expansion time, so expressions containing variables like `$@', `$^', etc are legal. 8.6 '.SCANNER' rules *=*=*=*=*=*=*=*=*=*=* Scanner rules define a way to specify automatic dependency scanning. A `.SCANNER' rule has the following form. << .SCANNER: target: dependencies commands >> The rule is used to compute additional dependencies that might be defined in the source files for the specified target. The result of executing the scanner commands must be a sequence of dependencies in OMake format, printed to the standard output. For example, on GNU systems the `gcc -MM foo.c' produces dependencies for the file `foo.c' (based on `#include' information). We can use this to specify a scanner for C files that adds the scanned dependencies for the `.o' file. The following scanner specifies that dependencies for a file, say `foo.o' can be computed by running `gcc -MM foo.c'. Furthermore, `foo.c' is a dependency, so the scanner should be recomputed whenever the `foo.c' file changes. << .SCANNER: %.o: %.c gcc -MM $< >> Let's suppose that the command `gcc -MM foo.c' prints the following line. << foo.o: foo.h /usr/include/stdio.h >> The result is that the files `foo.h' and `/usr/include/stdio.h' are considered to be dependencies of `foo.o'---that is, `foo.o' should be rebuilt if either of these files changes. This works, to an extent. One nice feature is that the scanner will be re-run whenever the `foo.c' file changes. However, one problem is that dependencies in C are recursive. That is, if the file `foo.h' is modified, it might include other files, establishing further dependencies. What we need is to re-run the scanner if `foo.h' changes too. We can do this with a value dependency. The variable `$&' is defined as the dependency results from any previous scan. We can add these as dependencies using the `digest' function, which computes an MD5 digest of the files. << .SCANNER: %.o: %.c :value: $(digest $&) gcc -MM $< >> Now, when the file `foo.h' changes, its digest will also change, and the scanner will be re-run because of the value dependency (since `$&' will include `foo.h'). This still is not quite right. The problem is that the C compiler uses a search-path for include files. There may be several versions of the file `foo.h', and the one that is chosen depends on the include path. What we need is to base the dependencies on the search path. The `$(digest-in-path-optional ...)' function computes the digest based on a search path, giving us a solution that works. << .SCANNER: %.o: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $< >> The standard output of the scanner rules will be captured by OMake and is not allowed to contain any content that OMake will not be able to parse as a dependency. The output is allowed to contain dependency specifications for unrelated targets, however such dependencies will be ignored. The scanner rules are allowed to produce arbitrary output on the standard error channel --- such output will be handled in the same way as the output of the ordinary rules (in other words, it will be presented to the user, when dictated by the `--output-'... options enabled). Additional examples of the `.SCANNER' rules can be found in Section 3.4.3. 8.6.1 Named scanners, and the ':scanner:' dependencies ======================================================= Sometimes it may be useful to specify explicitly which scanner should be used in a rule. For example, we might compile `.c' files with different options, or (heaven help us) we may be using both `gcc' and the Microsoft Visual C++ compiler `cl'. In general, the target of a `.SCANNER' is not tied to a particular target, and we may name it as we like. << .SCANNER: scan-gcc-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $< .SCANNER: scan-cl-%.c: %.c :value: $(digest-in-path-optional $(INCLUDES), $&) cl --scan-dependencies-or-something $(addprefix /I, $(INCLUDES)) $< >> The next step is to define explicit scanner dependencies. The `:scanner:' dependency is used for this. In this case, the scanner dependencies are specified explicitly. << $(GCC_FILES): %.o: %.c :scanner: scan-gcc-%c gcc ... $(CL_FILES): %.obj: %.c :scanner: scan-cl-%c cl ... >> Explicit `:scanner:' scanner specification may also be used to state that a single `.SCANNER' rule should be used to generate dependencies for more than one target. For example, << .SCANNER: scan-all-c: $(GCC_FILES) :value: $(digest-in-path-optional $(INCLUDES), $&) gcc -MM $(addprefix -I, $(INCLUDES)) $(GCC_FILES) $(GCC_FILES): %.o: %.c :scanner: scan-all-c ... >> The above has the advantage of only running gcc once and a disadvantage that when a single source file changes, all the files will end up being re-scanned. 8.6.2 Notes ============ In most cases, you won't need to define scanners of your own. The standard installation includes default scanners (both explicitly and implicitly named ones) for C, OCaml, and LaTeX files. The 'SCANNER_MODE' variable controls the usage of implicit scanner dependencies. The explicit `:scanner:' dependencies reduce the chances of scanner mis-specifications. In large complicated projects it might be a good idea to set `SCANNER_MODE' to `error' and use only the named `.SCANNER' rules and explicit `:scanner:' specifications. 8.7 .DEFAULT *=*=*=*=*=*=* The `.DEFAULT' target specifies a target to be built by default if omake is run without explicit targets. The following rule instructs omake to build the program `hello' by default << .DEFAULT: hello >> 8.8 .SUBDIRS *=*=*=*=*=*=* The `.SUBDIRS' target is used to specify a set of subdirectories that are part of the project. Each subdirectory should have its own OMakefile, which is evaluated in the context of the current environment. << .SUBDIRS: src doc tests >> This rule specifies that the `OMakefile's in each of the `src', `doc', and `tests' directories should be read. In some cases, especially when the `OMakefile's are very similar in a large number of subdirectories, it is inconvenient to have a separate `OMakefile' for each directory. If the `.SUBDIRS' rule has a body, the body is used instead of the `OMakefile'. << .SUBDIRS: src1 src2 src3 println(Subdirectory $(CWD)) .DEFAULT: lib.a >> In this case, the `src1', `src2', and `src3' files do not need `OMakefile's. Furthermore, if one exists, it is ignored. The following includes the file if it exists. << .SUBDIRS: src1 src2 src3 if $(file-exists OMakefile) include OMakefile .DEFAULT: lib.a >> 8.9 .INCLUDE *=*=*=*=*=*=* The `.INCLUDE' target is like the `include' directive, but it specifies a rule to build the file if it does not exist. << .INCLUDE: config echo "CONFIG_READ = true" > config echo CONFIG_READ is $(CONFIG_READ) >> You may also specify dependencies to an `.INCLUDE' rule. << .INCLUDE: config: config.defaults cp config.defaults config >> A word of caution is in order here. The usual policy is used for determining when the rule is out-of-date. The rule is executed if any of the following hold. - the target does not exist, - the rule has never been executed before, - any of the following have changed since the last time the rule was executed, - the target, - the dependencies, - the commands-text. In some of the cases, this will mean that the rule is executed even if the target file already exists. If the target is a file that you expect to edit by hand (and therefore you don't want to overwrite it), you should make the rule evaluation conditional on whether the target already exists. << .INCLUDE: config: config.defaults # Don't overwrite my carefully hand-edited file if $(not $(file-exists config)) cp config.defaults config >> 8.10 .PHONY *=*=*=*=*=*= A "phony" target is a target that is not a real file, but exists to collect a set of dependencies. Phony targets are specified with the `.PHONY' rule. In the following example, the `install' target does not correspond to a file, but it corresponds to some commands that should be run whenever the `install' target is built (for example, by running `omake install'). << .PHONY: install install: myprogram.exe cp myprogram.exe /usr/bin >> 8.11 Rule scoping *=*=*=*=*=*=*=*=*= As we have mentioned before, omake is a scoped language. This provides great flexibility---different parts of the project can define different configurations without interfering with one another (for example, one part of the project might be compiled with `CFLAGS=-O3' and another with `CFLAGS=-g'). But how is the scope for a target file selected? Suppose we are building a file `dir/foo.o'. omake uses the following rules to determine the scope. - First, if there is an explicit rule for building `dir/foo.o' (a rule with no wildcards), the context for that rule determines the scope for building the target. - Otherwise, the directory `dir/' must be part of the project. This normally means that a configuration file `dir/OMakefile' exists (although, see the `.SUBDIRS' section for another way to specify the `OMakefile'). In this case, the scope of the target is the scope at the end of the `dir/OMakefile'. To illustrate rule scoping, let's go back to the example of a "Hello world" program with two files. Here is an example `OMakefile' (the two definitions of `CFLAGS' are for illustration). << # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Redefine CFLAGS CFLAGS += -O3 >> In this project, the target `hello' is explicit. The scope of the `hello' target is the line beginning with `hello:', where the value of `CFLAGS' is `-g'. The other two targets, `hello_code.o' and `hello_lib.o' do not appear as explicit targets, so their scope is at the end of the `OMakefile', where the `CFLAGS' variable is defined to be `-g -O3'. That is, `hello' will be linked with `CFLAGS=-g' and the `.o' files will be compiled with `CFLAGS=-g -O3'. We can change this behavior for any of the targets by specifying them as explicit targets. For example, suppose we wish to compile `hello_lib.o' with a preprocessor variable `LIBRARY'. << # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section CFLAGS += -DLIBRARY hello_lib.o: # Redefine CFLAGS CFLAGS += -O3 >> In this case, `hello_lib.o' is also mentioned as an explicit target, in a scope where `CFLAGS=-g -DLIBRARY'. Since no rule body is specified, it is compiled using the usual implicit rule for building `.o' files (in a context where `CFLAGS=-g -DLIBRARY'). 8.11.1 Scoping of implicit rules ================================= Implicit rules (rules containing wildcard patterns) are not global, they follow the normal scoping convention. This allows different parts of a project to have different sets of implicit rules. If we like, we can modify the example above to provide a new implicit rule for building `hello_lib.o'. << # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section %.o: %.c $(CC) $(CFLAGS) -DLIBRARY -c $< hello_lib.o: # Redefine CFLAGS CFLAGS += -O3 >> In this case, the target `hello_lib.o' is built in a scope with a new implicit rule for building `%.o' files. The implicit rule adds the `-DLIBRARY' option. This implicit rule is defined only for the target `hello_lib.o'; the target `hello_code.o' is built as normal. 8.11.2 Scoping of '.SCANNER' rules =================================== Scanner rules are scoped the same way as normal rules. If the `.SCANNER' rule is explicit (containing no wildcard patterns), then the scope of the scan target is the same as the the rule. If the `.SCANNER' rule is implicit, then the environment is taken from the `:scanner:' dependency. << # The executable is compiled with debugging CFLAGS = -g hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ # scanner for .c files .SCANNER: scan-c-%.c: %.c $(CC) $(CFLAGS) -MM $< # Compile hello_lib.o with CFLAGS = -g -DLIBRARY section CFLAGS += -DLIBRARY hello_lib.o: hello_lib.c :scanner: scan-c-hello_lib.c $(CC) $(CFLAGS) -c $< # Compile hello_code.c with CFLAGS = -g -O3 section CFLAGS += -O3 hello_code.o: hello_code.c :scanner: scan-c-hello_code.c $(CC) $(CFLAGS) -c $< >> Again, this is for illustration---it is unlikely you would need to write a complicated configuration like this! In this case, the `.SCANNER' rule specifies that the C-compiler should be called with the `-MM' flag to compute dependencies. For the target `hello_lib.o', the scanner is called with `CFLAGS=-g -DLIBRARY', and for `hello_code.o' it is called with `CFLAGS=-g -O3'. 8.11.3 Scoping for '.PHONY' targets ==================================== Phony targets (targets that do not correspond to files) are defined with a `.PHONY:' rule. Phony targets are scoped as usual. The following illustrates a common mistake, where the `.PHONY' target is declared after it is used. << # !!This example is broken!! all: hello hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ .PHONY: all >> This doesn't work as expected because the `.PHONY' declaration occurs too late. The proper way to write this example is to place the `.PHONY' declaration first. << # Phony targets must be declared before being used .PHONY: all all: hello hello: hello_code.o hello_lib.o $(CC) $(CFLAGS) -o $@ $+ >> Phony targets are passed to subdirectories. As a practical matter, it is wise to declare all `.PHONY' targets in your root `OMakefile', before any `.SUBDIRS'. This will ensure that 1) they are considered as phony targets in each of the subdirectories, and 2) you can build them from the project root. << .PHONY: all install clean .SUBDIRS: src lib clib >> Note that when a `.PHONY' target is inherited by a subdirectory via a `.SUBDIRS', a whole hierarchy of `.PHONY' targets (that are a part of the global one) is created, as described in Section 8.12.2 below. 8.12 Running OMake from a subdirectory *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Running `omake foo' asks OMake to build the file `foo' in context of the whole project, even when running from a subdirectory of the project. Therefore, if `bar/baz' is a regular target (not a `.PHONY' one), then running `omake bar/baz' and running `(cd bar; omake baz)' are usually equivalent. There are two noteworthy exceptions to the above rule: - If the subdirectory is not a part of the project (there is no `.SUBDIRS') for it, then OMake will complain if you try to run it in that directory. - If a subdirectory contains an `OMakeroot' of its own, this would designate the subdirectory as a separate project (which is usually a bad idea and is not recommended). 8.12.1 Phony targets in a subdirectory ======================================= Suppose you have a `.PHONY: clean' declared in your root `OMakefile' and both the root `OMakefile' and the `OMakefile' in some of the subdirectories contain `clean:' rules. In this case - Running `omake clean' in the root directory will execute all the rules (each in the appropriate directory); - Running `omake clean' in the subdirectory will execute just its local one, as well as the ones from the subdirectories of the current directory. The above equally applies to the built-in `.PHONY' targets, including '.DEFAULT'. Namely, if OMake is executed (without argument) in the root directory of a project, all the `.DEFAULT' targets in the project will be built. On the other hand, when OMake is executed (without argument) in a subdirectory, only the `.DEFAULT' targets defined in and under that subdirectory will be built. The following Section explains the underlying semantics that gives rise to the above behavior. 8.12.2 Hierarchy of '.PHONY' targets ===================================== When the the root `OMakefile' contains a `.PHONY: clean' directive, it creates: - A "global" phony target `/.PHONY/clean' (note the leading "`/'"); - A "relative" phony target attached to the current directory --- `.PHONY/clean' (note the lack of the leading "`/'"); - A dependency `/.PHONY/clean: .PHONY/clean'. All the `clean: ...' rules in the root `OMakefile' following this `.PHONY: clean' declaration would be interpreted as rules for the `.PHONY/clean' target. Now when OMake then comes across a `.SUBDIRS: foo' directive (when it is in scope of the above `.PHONY: clean' declaration), it does the following: - Creates a new `.PHONY/foo/clean' "relative" phony target; - Creates the dependency `.PHONY/clean: .PHONY/foo/clean'; - Processes the body of the `.SUBDIRS: foo' directive, or reads the `foo/OMakefile' file, if the body is empty. While doing that, it interprets its instructions relative to the `foo' directory. In particular, all the `clean: ...' rules will be taken to apply to `.PHONY/foo/clean'. Now when you run `omake clean' in the root directory of the project, it is interpreted as `omake .PHONY/clean' (similar to how it happens with the normal targets), so both the rules for `.PHONY/clean' are executed and the rules for its dependency `.PHONY/foo/clean'. Running `(cd foo; omake clean)' is, as for normal targets, equivalent to running `omake .PHONY/foo/clean' and only those rules that apply to `.PHONY/foo/clean' will be executed. 8.13 Pathnames in rules *=*=*=*=*=*=*=*=*=*=*=*= In rules, the targets and dependencies are first translated to file values (as in the 'file' function). They are then translated to strings for the command line. This can cause some unexpected behavior. In the following example, the 'absname' function is the absolute pathname for the file `a', but the rule still prints the relative pathname. << .PHONY: demo demo: $(absname a) echo $< # omake demo a >> There is arguably a good reason for this. On Win32 systems, the `/' character is viewed as an "option specifier." The pathname separator is the `\' character. OMake translates the filenames automatically so that things work as expected on both systems. << demo: a/b echo $< # omake demo (on a Unix system) a/b # omake demo (on a Win32 system) a\b >> Sometimes you may wish that target strings to be passed literally to the commands in the rule. One way to do this is to specify them literally. << SRC = a/b $(absname c/d) demo: $(SRC) echo $(SRC) # omake demo (on a Win32 system) a/b c:\...\c\d >> Alternately, you might wish that filenames be automatically expanded to absolute pathnames. For example, this might be useful when parsing the OMake output to look for errors. For this, you can use the `--absname' option (Section A.3.20). If you call `omake' with the `--absname' option, all filenames will be expanded to absolute names. << # omake --absname demo (on a Unix system) /home/.../a/b /home/.../c/d >> Alternately, the `--absname' option is scoped. If you want to use it for only a few rules, you can use the 'OMakeFlags' function to control how it is applied. << section OMakeFlags(--absname) demo: a echo $< # omake demo /home/.../a >> N.B. The `--absname' option is currently an experimental feature. Chapter 9 Base library ************************* 9.1 Builtin variables *=*=*=*=*=*=*=*=*=*=*= OMAKE_VERSION Version of OMake. STDLIB The directory where the OMake standard library files reside. At startup, the default value is determined as follows. - The value of the `OMAKELIB' environment variable, if set (must contain an absolute path, if set), otherwise - On Windows, the registry keys `HKEY_CURRENT_USER\SOFTWARE\MetaPRL\OMake\OMAKELIB' and `HKEY_LOCAL_MACHINE\SOFTWARE\MetaPRL\OMake\OMAKELIB' are looked up and the value is used, if exist. - Otherwise a compile-time default it used. The current default value may be accessed by running `omake --version' OMAKEPATH An array of directories specifying the lookup path for the `include' and `open' directives (see Section 4.7). The default value is an array of two elements --- `.' and `$(STDLIB)'. OSTYPE Set to the machine architecture omake is running on. Possible values are `Unix' (for all Unix versions, including Linux and Mac OS X), `Win32' (for MS-Windows, OMake compiled with MSVC++ or Mingw), and `Cygwin' (for MS-Windows, OMake compiled with Cygwin). SYSNAME The name of the operating system for the current machine. NODENAME The hostname of the current machine. OS_VERSION The operating system release. MACHINE The machine architecture, e.g. `i386', `sparc', etc. HOST Same as `NODENAME'. USER The login name of the user executing the process. HOME The home directory of the user executing the process. PID The OMake process id. TARGETS The command-line target strings. For example, if OMake is invoked with the following command line, << omake CFLAGS=1 foo bar.c >> then `TARGETS' is defined as `foo bar.c'. BUILD_SUMMARY The `BUILD_SUMMARY' variable refers to the file that `omake' uses to summarize a build (the message that is printed at the very end of a build). The file is empty when the build starts. If you wish to add additional messages to the build summary, you can edit/modify this file during the build. For example, if you want to point out that some action was taken, you can append a message to the build summary. << foo: boo echo "The file foo was built" >> $(BUILD_SUMMARY) ...build foo... >> VERBOSE Whether certain commands should be verbose. A boolean flag that is `false' by default and is set to `true' when OMake is invoked with the `--verbose' option. 9.2 Logic, Boolean functions, and control flow *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Boolean values in omake are represented by case-insensitive strings. The false value can be represented by the strings `false', `no', `nil', `undefined' or `0', and everything else is true. 9.2.1 not ========== << $(not e) : String e : String >> The `not' function negates a Boolean value. For example, `$(not false)' expands to the string `true', and `$(not hello world)' expands to `false'. 9.2.2 equal ============ << $(equal e1, e2) : String e1 : String e2 : String >> The `equal' function tests for equality of two values. For example `$(equal a, b)' expands to `false', and `$(equal hello world, hello world)' expands to `true'. 9.2.3 and ========== << $(and e1, ..., en) : String e1, ..., en: Sequence >> The `and' function evaluates to the conjunction of its arguments. For example, in the following code, `X' is true, and `Y' is false. << A = a B = b X = $(and $(equal $(A), a) true $(equal $(B), b)) Y = $(and $(equal $(A), a) true $(equal $(A), $(B))) >> 9.2.4 or ========= << $(or e1, ..., en) : String e1, ..., en: String Sequence >> The `or' function evaluates to the disjunction of its arguments. For example, in the following code, `X' is true, and `Y' is false. << A = a B = b X = $(or $(equal $(A), a) false $(equal $(A), $(B))) Y = $(or $(equal $(A), $(B)) $(equal $(A), b)) >> 9.2.5 if ========= << $(if e1, e2[, e3]) : value e1 : String e2, e3 : value >> The `if' function represents a conditional based on a Boolean value. For example `$(if $(equal a, b), c, d)' evaluates to `d'. Conditionals may also be declared with an alternate syntax. << if e1 body1 elseif e2 body2 ... else bodyn >> If the expression `e1' is not false, then the expressions in `body1' are evaluated and the result is returned as the value of the conditional. Otherwise, if `e1' evaluates to false, the evaluation continues with the `e2' expression. If none of the conditional expressions is true, then the expressions in `bodyn' are evaluated and the result is returned as the value of the conditional. There can be any number of `elseif' clauses; the `else' clause is optional. Note that each branch of the conditional defines its own scope, so variables defined in the branches are normally not visible outside the conditional. The `export' command may be used to export the variables defined in a scope. For example, the following expression represents a common idiom for defining the C compiler configuration. << if $(equal $(OSTYPE), Win32) CC = cl CFLAGS += /DWIN32 export else CC = gcc CFLAGS += -g -O2 export >> 9.2.6 switch, match ==================== The `switch' and `match' functions perform pattern matching. `$(switch , , , ..., , )' `$(match , , , ..., , )' The number of `/' pairs is arbitrary. They strictly alternate; the total number of arguments to `' must be odd. The `' is evaluated to a string, and compared with `'. If it matches, the result of the expression is `'. Otherwise evaluation continues with the remaining patterns until a match is found. If no pattern matches, the value is the empty string. The `switch' function uses string comparison to compare the argument with the patterns. For example, the following expression defines the `FILE' variable to be either `foo', `bar', or the empty string, depending on the value of the `OSTYPE' variable. << FILE = $(switch $(OSTYPE), Win32, foo, Unix, bar) >> The `match' function uses regular expression patterns (see the `grep' function). If a match is found, the variables `$1, $2, ...' are bound to the substrings matched between `\(' and `\)' delimiters. The `$0' variable contains the entire match, and `$*' is an array of the matched substrings. to the matched substrings. << FILE = $(match foo_xyz/bar.a, foo_\\\(.*\\\)/\\\(.*\\\)\.a, foo_$2/$1.o) >> The `switch' and `match' functions also have an alternate (more usable) form. << match e case pattern1 body1 case pattern2 body2 ... default bodyd >> If the value of expression `e' matches `pattern_i' and no previous pattern, then `body_i' is evaluated and returned as the result of the `match'. The `switch' function uses string comparison; the `match' function uses regular expression matching. << match $(FILE) case $".*\(\.[^\/.]*\)" println(The string $(FILE) has suffix $1) default println(The string $(FILE) has no suffix) >> 9.2.7 try ========== << try try-body catch class1(v1) catch-body when expr when-body ... finally finally-body >> The `try' form is used for exception handling. First, the expressions in the `try-body' are evaluated. If evaluation results in a value `v' without raising an exception, then the expressions in the `finally-body' are evaluated and the value `v' is returned as the result. If evaluation of the `try-body' results in a exception object `obj', the `catch' clauses are examined in order. When examining `catch' clause `catch class(v)', if the exception object `obj' is an instance of the class name `class', the variable `v' is bound to the exception object, and the expressions in the `catch-body' are evaluated. If a `when' clause is encountered while a `catch' body is being evaluated, the predicate `expr' is evaluated. If the result is true, evaluation continues with the expressions in the `when-body'. Otherwise, the next `catch' clause is considered for evaluation. If evaluation of a `catch-body' or `when-body' completes successfully, returning a value `v', without encountering another `when' clause, then the expressions in the `finally-body' are evaluated and the value `v' is returned as the result. There can be any number of `catch' clauses; the `finally' clause is optional. 9.2.8 raise ============ << raise exn exn : Exception >> The `raise' function raises an exception. The `exn' object can be any object. However, the normal convention is to raise an 'Exception' object. If the exception is never caught, the whole object will be verbosely printed in the error message. However, if the object is an `Exception' one and contains a `message' field, only that field will be included in the error message. 9.2.9 exit =========== << exit(code) code : Int >> The `exit' function terminates omake abnormally. `$(exit )' The `exit' function takes one integer argument, which is exit code. Non-zero values indicate abnormal termination. 9.2.10 defined =============== << $(defined sequence) : String sequence : Sequence >> The `defined' function test whether all the variables in the sequence are currently defined. For example, the following code defines the `X' variable if it is not already defined. << if $(not $(defined X)) X = a b c export >> It is acceptable to use qualified names. << $(defined X.a.b) $(defined public.X) >> 9.2.11 defined-env =================== << $(defined-env sequence) : String sequence : String >> The `defined-env' function tests whether a variable is defined as part of the process environment. For example, the following code adds the `-g' compile option if the environment variable `DEBUG' is defined. <> 9.2.12 getenv ============== << $(getenv name) : String $(getenv name, default) : String >> The `getenv' function gets the value of a variable from the process environment. The function takes one or two arguments. In the single argument form, an exception is raised if the variable variable is not defined in the environment. In the two-argument form, the second argument is returned as the result if the value is not defined. For example, the following code defines the variable `X' to be a space-separated list of elements of the `PATH' environment variable if it is defined, and to `/bin /usr/bin' otherwise. << X = $(split $(PATHSEP), $(getenv PATH, /bin:/usr/bin)) >> You may also use the alternate form. << getenv(NAME) default >> 9.2.13 setenv ============== << setenv(name, value) name : String value : String >> The `setenv' function sets the value of a variable in the process environment. Environment variables are scoped like normal variables. 9.2.14 unsetenv ================ << unsetenv(names) names : String Array >> The `unsetenv' function removes some variable definitions from the process environment. Environment variables are scoped like normal variables. 9.2.15 get-registry ==================== << get-registry(hkey, key, field) : String get-registry(hkey, key, field, default) : String hkey : String key : String field : String >> The `get-registry' function retrieves a string value from the system registry on Win32. On other architectures, there is no registry. The `hive' (I think that is the right word), indicates which part of the registry to use. It should be one of the following values. - `HKEY_CLASSES_ROOT' - `HKEY_CURRENT_CONFIG' - `HKEY_CURRENT_USER' - `HKEY_LOCAL_MACHINE' - `HKEY_USERS' Refer to the Microsoft documentation if you want to know what these mean. The `key' is the field you want to get from the registry. It should have a form like `A\B\C' (if you use forward slashes, they will be converted to backslashes). The field is the sub-field of the key. In the 4-argument form, the `default' is returned on failure. You may also use the alternate form. << get-registry(hkey, key, field) default >> 9.2.16 getvar ============== << $(getvar name) : String >> The `getvar' function gets the value of a variable. An exception is raised if the variable variable is not defined. For example, the following code defines X to be the string abc. << NAME = foo foo_1 = abc X = $(getvar $(NAME)_1) >> It is acceptable to use qualified names. << $(getvar X.a.b) >> 9.2.17 setvar ============== << setvar(name, value) name : String value : String >> The `setvar' function defines a new variable. For example, the following code defines the variable `X' to be the string `abc'. << NAME = X setvar($(NAME), abc) >> It is acceptable to use qualified names. << setvar(public.X, abc) >> 9.3 Arrays and sequences *=*=*=*=*=*=*=*=*=*=*=*=* 9.3.1 array ============ << $(array elements) : Array elements : Sequence >> The `array' function creates an array from a sequence. If the `' is a string, the elements of the array are the whitespace-separated elements of the string, respecting quotes. In addition, array variables can be declared as follows. << A[] = ... >> In this case, the elements of the array are exactly `', ..., `', and whitespace is preserved literally. 9.3.2 split ============ << $(split sep, elements) : Array sep : String elements : Sequence >> The `split' function takes two arguments, a string of separators, and a string argument. The result is an array of elements determined by splitting the elements by all occurrence of the separator in the `elements' sequence. For example, in the following code, the `X' variable is defined to be the array `/bin /usr/bin /usr/local/bin'. << PATH = /bin:/usr/bin:/usr/local/bin X = $(split :, $(PATH)) >> The `sep' argument may be omitted. In this case `split' breaks its arguments along the white space. Quotations are not split. 9.3.3 concat ============= << $(concat sep, elements) : String sep : String elements : Sequence >> The `concat' function takes two arguments, a separator string, and a sequence of elements. The result is a string formed by concatenating the elements, placing the separator between adjacent elements. For example, in the following code, the `X' variable is defined to be the string `foo_x_bar_x_baz'. << X = foo bar baz Y = $(concat _x_, $(X)) >> 9.3.4 length ============= << $(length sequence) : Int sequence : Sequence >> The `length' function returns the number of elements in its argument. For example, the expression `$(length a b "c d")' evaluates to 3. 9.3.5 nth ========== << $(nth i, sequence) : value i : Int sequence : Sequence raises RuntimeException >> The `nth' function returns the nth element of its argument, treated as a list. Counting starts at 0. An exception is raised if the index is not in bounds. For example, the expression `$(nth 1, a "b c" d)' evaluates to `"b c"'. 9.3.6 replace-nth ================== << $(replace-nth i, sequence, x) : value i : Int sequence : Sequence x : value raises RuntimeException >> The `replace-nth' function replaces the nth element of its argument with a new value `x'. Counting starts at 0. An exception is raised if the index is not in bounds. For example, the expression `$(replace-nth 1, a "b c" d, x)' evaluates to `a x d'. 9.3.7 nth-hd ============= << $(nth-hd i, sequence) : value i : Int sequence : Sequence raises RuntimeException >> The `nth-hd' function returns the first `i' elements of the sequence. An exception is raised if the sequence is not at least `i' elements long. For example, the expression `$(nth-hd 2, a "b c" d)' evaluates to `a "b c"'. 9.3.8 nth-tl ============= << $(nth-tl i, sequence) : value i : Int sequence : Sequence raises RuntimeException >> The `nth-tl' function skips `i' elements of the sequence and returns the rest. An exception is raised if the sequence is not at least `i' elements long. For example, the expression `$(nth-tl 1, a "b c" d)' evaluates to `"b c" d'. 9.3.9 subrange =============== << $(subrange off, len, sequent) : value off : Int len : Int sequence : Sequence raises RuntimeException >> The `subrange' function returns a subrange of the sequence. Counting starts at 0. An exception is raised if the specified range is not in bounds. For example, the expression `$(subrange 1, 2, a "b c" d e)' evaluates to `"b c" d'. 9.3.10 rev =========== << $(rev sequence) : Sequence sequence : Sequence >> The `rev' function returns the elements of a sequence in reverse order. For example, the expression `$(rev a "b c" d)' evaluates to `d "b c" a'. 9.3.11 join ============ << $(join sequence1, sequence2) : Sequence sequence1 : Sequence sequence2 : Sequence >> The `join' function joins together the elements of the two sequences. For example, `$(join a b c, .c .cpp .h)' evaluates to `a.c b.cpp c.h'. If the two input sequences have different lengths, the remainder of the longer sequence is copied at the end of the output unmodified. 9.3.12 string ============== << $(string sequence) : String sequence : Sequence >> The `string' function flattens a sequence into a single string. This is similar to the `concat' function, but the elements are separated by whitespace. The result is treated as a unit; whitespace is significant. 9.3.13 string-length ===================== << $(string-length sequence) : Int sequence : Sequence >> The `string-lenght' returns a length (number of characters) in its argument. If the argument is a sequence, it flattens it, so `$(string-length sequence)' is equivalent to `$(string-length $(string sequence))'. 9.3.14 string-escaped, ocaml-escaped, html-escaped, html-pre-escaped, ====================================================================== c-escaped, id-escaped ===================== << $(string-escaped sequence) : String Array $(ocaml-escaped sequence) : String Array $(html-escaped sequence) : String Array $(html-pre-escaped sequence) : String Array $(c-escaped sequence) : String Array $(hex-escaped sequence) : StringArray sequence : Array >> The `string-escaped' function converts each element of its argument to a string, escaping it, if it contains symbols that are special to OMake. The special characters include `:()\,$'"#' and whitespace. This function can be used in scanner rules to escape file names before printing then to `stdout'. The `ocaml-escaped' function converts each element of its argument to a string, escaping characters that are special to OCaml. The `c-escaped' function converts a string to a form that can be used as a string constant in C. The `id-escaped' function turns a string into an identifier that may be used in OMake. The `html-escaped' function turns a literal string into a form acceptable as HTML. The `html-pre-escaped' function is similar, but it does not translate newlines into `
'. << println($(string $(string-escaped $"a b" $"y:z"))) a\ b y\:z >> 9.3.15 decode-uri, encode-uri ============================== << $(decode-uri sequence) : sequence sequence : Sequence >> These two functions perform URI encoding, where special characters are represented by hexadecimal characters. << osh> s = $(encode-uri $'a b~c') "a+b%7ec" osh> decode-uri($s) "a b~c" >> 9.3.16 quote ============= << $(quote sequence) : String sequence : Sequence >> The `quote' function flattens a sequence into a single string and adds quotes around the string. Inner quotation symbols are escaped. For example, the expression `$(quote a "b c" d)' evaluates to `"a \"b c\" d"', and `$(quote abc)' evaluates to `"abc"'. 9.3.17 quote-argv ================== << $(quote-argv sequence) : String sequence : Sequence >> The `quote-argv' function flattens a sequence into a single string, and adds quotes around the string. The quotation is formed so that a command-line parse can separate the string back into its components. 9.3.18 html-string =================== << $(html-string sequence) : String sequence : Sequence >> The `html-string' function flattens a sequence into a single string, and escaped special HTML characters. This is similar to the `concat' function, but the elements are separated by whitespace. The result is treated as a unit; whitespace is significant. 9.3.19 addsuffix ================= << $(addsuffix suffix, sequence) : Array suffix : String sequence : Sequence >> The `addsuffix' function adds a suffix to each component of sequence. The number of elements in the array is exactly the same as the number of elements in the sequence. For example, `$(addsuffix .c, a b "c d")' evaluates to `a.c b.c "c d".c'. 9.3.20 mapsuffix ================= << $(mapsuffix suffix, sequence) : Array suffix : value sequence : Sequence >> The `mapsuffix' function adds a suffix to each component of sequence. It is similar to `addsuffix', but uses array concatenation instead of string concatenation. The number of elements in the array is twice the number of elements in the sequence. For example, `$(mapsuffix .c, a b "c d")' evaluates to `a .c b .c "c d" .c'. 9.3.21 addsuffixes =================== << $(addsuffixes suffixes, sequence) : Array suffixes : Sequence sequence : Sequence >> The `addsuffixes' function adds all suffixes in its first argument to each component of a sequence. If `suffixes' has `n' elements, and `sequence' has `m' elements, the the result has `n * m' elements. For example, the `$(addsuffixes .c .o, a b c)' expressions evaluates to `a.c a.o b.c b.o c.o c.a'. 9.3.22 removeprefix ==================== << $(removeprefix prefix, sequence) : Array prefix : String sequence : Array >> The `removeprefix' function removes a prefix from each component of a sequence. 9.3.23 removesuffix ==================== << $(removesuffix sequence) : Array sequence : String >> The `removesuffix' function removes the suffixes from each component of a sequence. For example, `$(removesuffix a.c b.foo "c d")' expands to `a b "c d"'. 9.3.24 replacesuffixes ======================= << $(replacesuffixes old-suffixes, new-suffixes, sequence) : Array old-suffixes : Sequence new-suffixes : Sequence sequence : Sequence >> The `replacesuffixes' function modifies the suffix of each component in sequence. The `old-suffixes' and `new-suffixes' sequences should have the same length. For example, `$(replacesuffixes .h .c, .o .o, a.c b.h c.z)' expands to `a.o b.o c.z'. 9.3.25 addprefix ================= << $(addprefix prefix, sequence) : Array prefix : String sequence : Sequence >> The `addprefix' function adds a prefix to each component of a sequence. The number of element in the result array is exactly the same as the number of elements in the argument sequence. For example, `$(addprefix foo/, a b "c d")' evaluates to `foo/a foo/b foo/"c d"'. 9.3.26 mapprefix ================= << $(mapprefix prefix, sequence) : Array prefix : String sequence : Sequence >> The `mapprefix' function adds a prefix to each component of a sequence. It is similar to `addprefix', but array concatenation is used instead of string concatenation. The result array contains twice as many elements as the argument sequence. For example, `$(mapprefix foo, a b "c d")' expands to `foo a foo b foo "c d"'. 9.3.27 add-wrapper =================== << $(add-wrapper prefix, suffix, sequence) : Array prefix : String suffix : String sequence : Sequence >> The `add-wrapper' functions adds both a prefix and a suffix to each component of a sequence. For example, the expression `$(add-wrapper dir/, .c, a b)' evaluates to `dir/a.c dir/b.c'. String concatenation is used. The array result has the same number of elements as the argument sequence. 9.3.28 set =========== << $(set sequence) : Array sequence : Sequence >> The `set' function sorts a set of string components, eliminating duplicates. For example, `$(set z y z "m n" w a)' expands to `"m n" a w y z'. 9.3.29 mem =========== << $(mem elem, sequence) : Boolean elem : String sequence : Sequence >> The `mem' function tests for membership in a sequence. For example, `$(mem "m n", y z "m n" w a)' evaluates to `true', while `$(mem m n, y z "m n" w a)' evaluates to `false'. 9.3.30 intersection ==================== << $(intersection sequence1, sequence2) : Array sequence1 : Sequence sequence2 : Sequence >> The `intersection' function takes two arguments, treats them as sets of strings, and computes their intersection. The order of the result is undefined, and it may contain duplicates. Use the `set' function to sort the result and eliminate duplicates in the result if desired. For example, the expression `$(intersection c a b a, b a)' evaluates to `a b a'. 9.3.31 intersects ================== << $(intersects sequence1, sequence2) : Boolean sequence1 : Sequence sequence2 : Sequence >> The `intersects' function tests whether two sets have a non-empty intersection. This is slightly more efficient than computing the intersection and testing whether it is empty. For example, the expression `$(intersects a b c, d c e)' evaluates to `true', and `$(intersects a b c a, d e f)' evaluates to `false'. 9.3.32 set-diff ================ << $(set-diff sequence1, sequence2) : Array sequence1 : Sequence sequence2 : Sequence >> The `set-diff' function takes two arguments, treats them as sets of strings, and computes their difference (all the elements of the first set that are not present in the second one). The order of the result is undefined and it may contain duplicates. Use the `set' function to sort the result and eliminate duplicates in the result if desired. For example, the expression `$(set-diff c a b a e, b a)' evaluates to `c e'. 9.3.33 filter ============== << $(filter patterns, sequence) : Array patterns : Sequence sequence : Sequence >> The `filter' function picks elements from a sequence. The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard `%' character. For example `$(filter %.h %.o, a.c x.o b.h y.o "hello world".c)' evaluates to `x.o b.h y.o'. 9.3.34 filter-out ================== << $(filter-out patterns, sequence) : Array patterns : Sequence sequence : Sequence >> The `filter-out' function removes elements from a sequence. The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard `%' character. For example `$(filter-out %.c %.h, a.c x.o b.h y.o "hello world".c)' evaluates to `x.o y.o'. 9.3.35 capitalize ================== << $(capitalize sequence) : Array sequence : Sequence >> The `capitalize' function capitalizes each word in a sequence. For example, `$(capitalize through the looking Glass)' evaluates to `Through The Looking Glass'. 9.3.36 uncapitalize ==================== << $(uncapitalize sequence) : Array sequence : Sequence >> The `uncapitalize' function uncapitalizes each word in its argument. For example, `$(uncapitalize through the looking Glass)' evaluates to `through the looking glass'. 9.3.37 uppercase ================= << $(uppercase sequence) : Array sequence : Sequence >> The `uppercase' function converts each word in a sequence to uppercase. For example, `$(uppercase through the looking Glass)' evaluates to `THROUGH THE LOOKING GLASS'. 9.3.38 lowercase ================= << $(lowercase sequence) : Array sequence : Sequence >> The `lowercase' function reduces each word in its argument to lowercase. For example, `$(lowercase through tHe looking Glass)' evaluates to `through the looking glass'. 9.3.39 system ============== << system(s) s : Sequence >> The `system' function is used to evaluate a shell expression. This function is used internally by omake to evaluate shell commands. For example, the following program is equivalent to the expression `system(ls foo)'. << ls foo >> 9.3.40 shell ============= << $(shell command) : Array $(shella command) : Array $(shell-code command) : Int command : Sequence >> The `shell' function evaluates a command using the command shell, and returns the whitespace-separated words of the standard output as the result. The `shella' function acts similarly, but it returns the lines as separate items in the array. The `shell-code' function returns the exit code. The output is not diverted. For example, if the current directory contains the files `OMakeroot', `OMakefile', and `hello.c', then `$(shell ls)' evaluates to `hello.c OMakefile OMakeroot' (on a Unix system). 9.3.41 export ============== The `export' function allows one to capture the current environment in a variable. For example, the following code: <> will print `1 1 2'. The arguments to this function are interpreted the exact same way as the arguments to the `export' special form (see Section 6.3). 9.3.42 while ============= << while >> --or-- << while case ... case default >> The loop is executed while the test is true. In the first form, the `' is executed on every loop iteration. In the second form, the body `' is selected, as the first case where the test `' is true. If none apply, the optional default case is evaluated. If no cases are true, the loop exits. The environment is automatically exported. Examples. Iterate for `i' from `0' to `9'. << i = 0 while $(lt $i, 10) echo $i i = $(add $i, 1) >> The following example is equivalent. << i = 0 while true case $(lt $i, 10) echo $i i = $(add $i, 1) >> The following example is similar, but some special cases are printed. value is printed. << i = 0 while $(lt $i, 10) case $(equal $i, 0) echo zero case $(equal $i, 1) echo one default echo $i >> The 'break' function can be used to break out of the `while' loop early. 9.3.43 break ============= << break >> Terminate execution of the innermost loop, returning the current state. 9.3.44 random, random-init =========================== << random-init(i) i : Int random() : Int >> Produce a random number. The numbers are pseudo-random, and are not cryptographically secure. The generator is initialized form semi-random system data. Subsequent runs should produce different results. The `rando-init' function can be used to return the generator to a known state. 9.4 Arithmetic *=*=*=*=*=*=*=* 9.4.1 int ========== The `int' function can be used to create integers. It returns an `Int' object. `$(int 17)'. 9.4.2 float ============ The `float' function can be used to create floating-point numbers. It returns a `Float' object. `$(float 3.1415926)'. 9.4.3 Basic arithmetic ======================= The following functions can be used to perform basic arithmetic. - `$(neg )': arithmetic inverse - `$(add )': addition. - `$(sub )': subtraction. - `$(mul )': multiplication. - `$(div )': division. - `$(mod )': remainder. - `$(lnot )': bitwise inverse. - `$(land )': bitwise and. - `$(lor )': bitwise or. - `$(lxor )': bitwise exclusive-or. - `$(lsl )': logical shift left. - `$(lsr )': logical shift right. - `$(asr )': arithmetic shift right. - `$(min )': smallest element. - `$(max )': largest element. 9.4.4 Comparisons ================== The following functions can be used to perform numerical comparisons. - `$(lt )': less then. - `$(le )': no more than. - `$(eq )': equal. - `$(ge )': no less than. - `$(gt )': greater than. - `$(ult )': unsigned less than. - `$(ule )': unsigned greater than. - `$(uge )': unsigned greater than or equal. - `$(ugt )': unsigned greater than. 9.5 First-class functions *=*=*=*=*=*=*=*=*=*=*=*=*= 9.5.1 fun ========== The `fun' form introduces anonymous functions. `$(fun , ..., , )' The last argument is the body of the function. The other arguments are the parameter names. The three following definitions are equivalent. << F(X, Y) = return($(addsuffix $(Y), $(X))) F = $(fun X, Y, $(addsuffix $(Y), $(X))) F = fun(X, Y) value $(addsuffix $(Y), $(X)) >> 9.5.2 apply ============ The `apply' operator is used to apply a function. `$(apply , )' Suppose we have the following function definition. << F(X, Y) = return($(addsuffix $(Y), $(X))) >> The the two expressions below are equivalent. << X = F(a b c, .c) X = $(apply $(F), a b c, .c) >> 9.5.3 applya ============= The `applya' operator is used to apply a function to an array of arguments. `$(applya , )' For example, in the following program, the value of `Z' is `file.c'. << F(X, Y) = return($(addsuffix $(Y), $(X))) args[] = file .c Z = $(applya $(F), $(args)) >> 9.5.4 create-map, create-lazy-map ================================== The `create-map' is a simplified form for creating `Map' objects. The `create-map' function takes an even number of arguments that specify key/value pairs. For example, the following values are equivalent. << X = $(create-map name1, xxx, name2, yyy) X. = extends $(Map) $|name1| = xxx $|name2| = yyy >> The `create-lazy-map' function is similar, but the values are computed lazily. The following two definitions are equivalent. << Y = $(create-lazy-map name1, $(xxx), name2, $(yyy)) Y. = extends $(Map) $|name1| = $`(xxx) $|name2| = $`(yyy) >> The 'create-lazy-map' function is used in rule construction. 9.6 Iteration and mapping *=*=*=*=*=*=*=*=*=*=*=*=*= 9.6.1 foreach ============== The `foreach' function maps a function over a sequence. << $(foreach , ) foreach(, ) >> For example, the following program defines the variable `X' as an array `a.c b.c c.c'. << X = foreach(x, a b c) value $(x).c # Equivalent expression X = $(foreach $(fun x, $(x).c), abc) >> There is also an abbreviated syntax. The `export' form can also be used in a `foreach' body. The final value of `X' is `a.c b.c c.c'. << X = foreach(x, a b c) X += $(x).c export >> The 'break' function can be used to break out of the loop early. 9.7 Boolean tests *=*=*=*=*=*=*=*=*= 9.7.1 sequence-forall ====================== The `forall' function tests whether a predicate halds for each element of a sequence. << $(sequence-forall , ) sequence-forall( => ..., ) >> 9.7.2 sequence-exists ====================== The `exists' function tests whether a predicate holds for some element of a sequence. << $(sequence-exists , ) sequence-exists( => ..., ) >> 9.7.3 sequence-sort ==================== The `sort' function sorts the elements in an array, given a comparison function. Given two elements (x, y), the comparison should return a negative number if x < y; a positive number if x > y; and 0 if x = y. << $(sequence-sort , ) sort(, => ..., ) >> 9.7.4 compare ============== The `compare' function compares two values (x, y) generically returning a negative number if x < y; a positive number if x > y; and 0 if x = y. << $(compare x, y) : Int >> Chapter 10 File, I/O and system operations ********************************************* 10.1 File names *=*=*=*=*=*=*=*= 10.1.1 file, dir ================= << $(file sequence) : File Sequence sequence : Sequence $(dir sequence) : Dir Sequence sequence : Sequence >> The `file' and `dir' functions define location-independent references to files and directories. In omake, the commands to build a target are executed in the target's directory. Since there may be many directories in an omake project, the build system provides a way to construct a reference to a file in one directory, and use it in another without explicitly modifying the file name. The functions have the following syntax, where the name should refer to a file or directory. For example, we can construct a reference to a file `foo' in the current directory. << FOO = $(file foo) .SUBDIRS: bar >> If the `FOO' variable is expanded in the `bar' subdirectory, it will expand to `../foo'. These commands are often used in the top-level OMakefile to provide location-independent references to top-level directories, so that build commands may refer to these directories as if they were absolute. << ROOT = $(dir .) LIB = $(dir lib) BIN = $(dir bin) >> Once these variables are defined, they can be used in build commands in subdirectories as follows, where `$(BIN)' will expand to the location of the `bin' directory relative to the command being executed. << install: hello cp hello $(BIN) >> 10.1.2 tmpfile =============== << $(tmpfile prefix) : File $(tmpfile prefix, suffix) : File prefix : String suffix : String >> The `tmpfile' function returns the name of a fresh temporary file in the temporary directory. 10.1.3 in ========== << $(in dir, exp) : String Array dir : Dir exp : expression >> The `in' function is closely related to the `dir' and `file' functions. It takes a directory and an expression, and evaluates the expression in that effective directory. For example, one common way to install a file is to define a symbol link, where the value of the link is relative to the directory where the link is created. The following commands create links in the `$(LIB)' directory. << FOO = $(file foo) install: ln -s $(in $(LIB), $(FOO)) $(LIB)/foo >> Note that the `in' function only affects the expansion of `Node' (`File' and `Dir') values. 10.1.4 basename ================ << $(basename files) : String Sequence files : String Sequence >> The `basename' function returns the base names for a list of files. The basename is the filename with any leading directory components removed. For example, the expression `$(basename dir1/dir2/a.out /etc/modules.conf /foo.ml)' evaluates to `a.out modules.conf foo.ml'. 10.1.5 dirname =============== << $(dirname files) : String Sequence files : String Sequence >> The `dirname' function returns the directory name for a list of files. The directory name is the filename with the basename removed. If a name does not have a directory part, the directory is "." For example, the expression `$(dirname dir1\dir2\a.out /etc/modules.conf /foo.ml bar.ml)' evaluates to `dir1/dir2 /etc / .'. Note: this function is different from the `dirof' function. The function `dirname' is simple a function over strings, while `dirof' is a function on filenames. 10.1.6 rootname ================ << $(rootname files) : String Sequence files : String Sequence >> The `rootname' function returns the root name for a list of files. The rootname is the filename with the final suffix removed. For example, the expression `$(rootname dir1/dir2/a.out /etc/a.b.c /foo.ml)' evaluates to `dir1/dir2/a /etc/a.b /foo'. 10.1.7 dirof ============= << $(dirof files) : Dir Sequence files : File Sequence >> The `dirof' function returns the directory for each of the listed files. For example, the expression `$(dirof dir/dir2/a.out /etc/modules.conf /foo.ml)' evaluates to the directories `dir1/dir2 /etc /'. 10.1.8 fullname ================ << $(fullname files) : String Sequence files : File Sequence >> The `fullname' function returns the pathname relative to the project root for each of the files or directories. 10.1.9 absname =============== << $(absname files) : String Sequence files : File Sequence >> The `absname' function returns the absolute pathname for each of the files or directories. 10.1.10 homename ================= << $(homename files) : String Sequence files : File Sequence >> The `homename' function returns the name of a file in tilde form, if possible. The unexpanded forms are computed lazily: the `homename' function will usually evaluate to an absolute pathname until the first tilde-expansion for the same directory. 10.1.11 suffix =============== << $(suffix files) : String Sequence files : StringSequence >> The `suffix' function returns the suffixes for a list of files. If a file has no suffix, the function returns the empty string. For example, the expression `$(suffix dir1/dir2/a.out /etc/a /foo.ml)' evaluates to `.out .ml'. 10.2 Path search *=*=*=*=*=*=*=*=* 10.2.1 which ============= << $(which files) : File Sequence files : String Sequence >> The `which' function searches for executables in the current command search path, and returns `file' values for each of the commands. It is an error if a command is not found. 10.2.2 where ============= The `where' function is similar to which, except it returns the list of all the locations of the given executable (in the order in which the corresponding directories appear in `$PATH'). In case a command is handled internally by the `Shell' object, the first string in the output will describe the command as a built-in function. << % where echo echo is a Shell object method (a built-in function) /bin/echo >> 10.2.3 rehash ============== << rehash() >> The `rehash' function resets all search paths. 10.2.4 exists-in-path ====================== << $(exists-in-path files) : String files : String Sequence >> The `exists-in-path' function tests whether all executables are present in the current search path. 10.2.5 digest, digest-optional =============================== << $(digest files) : String Array file : File Array raises RuntimeException $(digest-optional files) : String Array file : File Array >> The `digest' and `digest-optional' functions compute MD5 digests of files. The `digest' function raises an exception if a file does no exist. The `digest-optional' returns `false' if a file does no exist. MD5 digests are cached. 10.2.6 find-in-path, find-in-path-optional =========================================== << $(find-in-path path, files) : File Array path : Dir Array files : String Array raises RuntimeException $(find-in-path-optional path, files) : File Array >> The `find-in-path' function searches for the files in a search path. Only the tail of the filename is significant. The `find-in-path' function raises an exception if the file can't be found. The `find-in-path-optional' function silently removes files that can't be found. 10.2.7 digest-in-path, digest-in-path-optional =============================================== << $(digest-in-path path, files) : String/File Array path : Dir Array files : String Array raises RuntimeException $(digest-in-path-optional path, files) : String/File Array >> The `digest-in-path' function searches for the files in a search path and returns the file and digest for each file. Only the tail of the filename is significant. The `digest-in-path' function raises an exception if the file can't be found. The `digest-in-path-optional' function silently removes elements that can't be found. 10.3 File stats *=*=*=*=*=*=*=*= 10.3.1 file-exists, target-exists, target-is-proper ==================================================== << $(file-exists files) : String $(target-exists files) : String $(target-is-proper files) : String files : File Sequence >> The `file-exists' function checks whether the files listed exist. The `target-exists' function is similar to the `file-exists' function. However, it returns true if the file exists or if it can be built by the current project. The `target-is-proper' returns true only if the file can be generated in the current project. 10.3.2 stat-reset ================== << $(stat-reset files) : String files : File Sequence >> OMake uses a stat-cache. The `stat-reset' function reset the `stat' information for the given files, forcing the `stat' information to be recomputed the next time it is requested. 10.3.3 filter-exists, filter-targets, filter-proper-targets ============================================================ << $(filter-exists files) : File Sequence $(filter-targets files) : File Sequence $(filter-proper-targets) : File Sequence files : File Sequence >> The `filter-exists', `filter-targets', and `filter-proper-targets' functions remove files from a list of files. - `filter-exists': the result is the list of files that exist. - `filter-targets': the result is the list of files either exist, or can be built by the current project. - `filter-proper-targets': the result is the list of files that can be built in the current project. Creating a "distclean" target One way to create a simple "`distclean'" rule that removes generated files from the project is by removing all files that can be built in the current project. CAUTION: you should be careful before you do this. The rule removes any file that can potentially be reconstructed. There is no check to make sure that the commands to rebuild the file would actually succeed. Also, note that no file outside the current project will be deleted. << .PHONY: distclean distclean: rm $(filter-proper-targets $(ls R, .)) >> If you use CVS, you may wish to utilize the `cvs_realclean' program that is distributed with OMake in order to create a "`distclean'" rule that would delete all the files thare are not known to CVS. For example, if you already have a more traditional "`clean'" target defined in your project, and if you want the "`distclean'" rule to be interactive by default, you can write the following: << if $(not $(defined FORCE_REALCLEAN)) FORCE_REALCLEAN = false export distclean: clean cvs_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock >> You can add more files that you want to always keep (such as configuration files) with the -i option. Similarly, if you use Subversion, you utilize the `build/svn_realclean.om' script that comes with OMake: << if $(not $(defined FORCE_REALCLEAN)) FORCE_REALCLEAN = false export open build/svn_realclean distclean: clean svn_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock >> See also the 'dependencies-proper' function for an alternate method for removing intermediate files. 10.3.4 find-targets-in-path, find-targets-in-path-optional =========================================================== << $(find-targets-in-path path files) : File Array $(find-targets-in-path-optional path, files) : File Array path : Dir Array files : File Sequence >> The `find-target-in-path' function searches for targets in the search path. For each file `file' in the file list, the path is searched sequentially for a directory `dir' such that the target `dir/file' exists. If so, the file `dir/file' is returned. For example, suppose you are building a C project, and project contains a subdirectory `src/' containing only the files `fee.c' and `foo.c'. The following expression evaluates to the files `src/fee.o' `src/foo.o' even if the files have not already been built. << $(find-targets-in-path lib src, fee.o foo.o) # Evaluates to src/fee.o src/foo.o >> The `find-targets-in-path' function raises an exception if the file can't be found. The `find-targets-in-path-optional' function silently removes targets that can't be found. << $(find-targets-in-path-optional lib src, fee.o foo.o fum.o) # Evaluates to src/fee.o src/foo.o >> 10.3.5 find-ocaml-targets-in-path-optional =========================================== The `find-ocaml-targets-in-path-optional' function is very similar to the 'find-targets-in-path-optional' one, except an OCaml-style search is used, where for every element of the search path and for every name being searched for, first the uncapitalized version is tried and if it is not buildable, then the capitalized version is tried next. 10.3.6 file-sort ================= << $(file-sort order, files) : File Sequence order : String files : File Sequence >> The `file-sort' function sorts a list of filenames by build order augmented by a set of sort rules. Sort rules are declared using the `.ORDER' target. The `.BUILDORDER' defines the default order. `$(file-sort , )' For example, suppose we have the following set of rules. << a: b c b: d c: d .DEFAULT: a b c d echo $(file-sort .BUILDORDER, a b c d) >> In the case, the sorter produces the result `d b c a'. That is, a target is sorted after its dependencies. The sorter is frequently used to sort files that are to be linked by their dependencies (for languages where this matters). There are three important restrictions to the sorter: - The sorter can be used only within a rule body. The reason for this is that all dependencies must be known before the sort is performed. - The sorter can only sort files that are buildable in the current project. - The sorter will fail if the dependencies are cyclic. 10.3.6.1 sort rule ------------------- It is possible to further constrain the sorter through the use of sort rules. A sort rule is declared in two steps. The target must be listed as an `.ORDER' target; and then a set of sort rules must be given. A sort rule defines a pattern constraint. << .ORDER: .MYORDER .MYORDER: %.foo: %.bar .MYORDER: %.bar: %.baz .DEFAULT: a.foo b.bar c.baz d.baz echo $(sort .MYORDER, a.foo b.bar c.baz d.baz) >> In this example, the `.MYORDER' sort rule specifies that any file with a suffix `.foo' should be placed after any file with suffix `.bar', and any file with suffix `.bar' should be placed after a file with suffix `.baz'. In this example, the result of the sort is `d.baz c.baz b.bar a.foo'. 10.3.7 file-check-sort ======================= << file-check-sort(files) files : File Sequence raises RuntimeException >> The `file-check-sort' function checks whether a list of files is in sort order. If so, the list is returned unchanged. If not, the function raises an exception. `$(file-check-sort , )' 10.4 Globbing and file listings *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= OMake commands are "glob-expanded" before being executed. That is, names may contain patterns that are expanded to sequences of file and directory names. The syntax follows the standard bash(1), csh(1), syntax, with the following rules. - A pathname is a sequence of directory and file names separated by one of the `/' or `\' characters. For example, the following pathnames refer to the same file: `/home/jyh/OMakefile' and `/home\jyh/OMakefile'. - Glob-expansion is performed on the components of a path. If a path contains occurrences of special characters (listed below), the path is viewed as a pattern to be matched against the actual files in the system. The expansion produces a sequence of all file/directory names that match. For the following examples, suppose that a directory `/dir' contains files named `a', `-a', `a.b', and `b.c'. * Matches any sequence of zero-or-more characters. For example, the pattern `/dir/a*' expands to `/dir/a /dir/aa /dir/a.b'. ? Matches exactly one character. The pattern `/dir/?a' expands the filename `/dir/-a'. [...] Square brackets denote character sets and ranges in the ASCII character set. The pattern may contain individual characters c or character ranges c_1-c_2. The pattern matches any of the individual characters specified, or any characters in the range. A leading "hat" inverts the send of the pattern. To specify a pattern that contains the literal characters `-', the `-' should occur as the first character in the range. Pattern Expansion --------------------------------------------------- `/dir/[a-b]*' `/dir/a /dir/a.b /dir/b.c' `/dir/[-a-b]*' `/dir/a /dir/-a /dir/a.b /dir/b.c' `/dir/[-a]*' `/dir/a /dir/-a /dir/a.b' {s1,...,sN} Braces indicate brace-expansion. The braces delimit a sequence of strings separated by commas. Given N strings, the result produces N copies of the pattern, one for each of the strings s_i. Pattern Expansion ------------------------------------ `a{b,c,d}' `ab ac ad' `a{b{c,d},e}' `abc abd ae' `a{?{[A-Z],d},*}' `a?[A-Z] a?d a*' The tilde is used to specify home directories. Depending on your system, these might be possible expansions. Pattern Expansion -------------------------------------------------- `~jyh' `/home/jyh' `~bob/*.c' `c:\Documents and Settings\users\bob' The `\' character is both a pathname separator and an escape character. If followed by a special glob character, the `\' changes the sense of the following character to non-special status. Otherwise, `\' is viewed as a pathname separator. Pattern Expansion ------------------------------------------------------------------ --------- `~jyh/\*' `~jyh/*' (`*' is literal) `/dir/\[a-z?' `/dir/[a-z?' (`[' is literal, `?' is a pattern). `c:\Program Files\[A-z]' `c:\Program Files[A-z]*' Note that the final case might be considered to be ambiguous (where `\' should be viewed as a pathname separator, not as an escape for the subsequent `[' character. If you want to avoid this ambiguity on Win32, you should use the forward slash `/' even for Win32 pathnames (the `/' is translated to `\' in the output). Pattern Expansion ---------------------------------------------------------------- `c:/Program Files/[A-z]*' `c:\Program Files\WindowsUpdate ...' 10.4.1 glob ============ << $(glob strings) : Node Array strings : String Sequence $(glob options, strings) : Node Array options : String strings : String Sequence >> The `glob' function performs glob-expansion. The . and .. entries are always ignored. The options are: b Do not perform csh(1)-style brace expansion. e The `\' character does not escape special characters. n If an expansion fails, return the expansion literally instead of aborting. i If an expansion fails, it expands to nothing. . Allow wildcard patterns to match files beginning with a . A Return all files, including files that begin with a . F Match only normal files (any file that is not a directory). D Match only directory files. C Ignore files according to cvs(1) rules. P Include only proper subdirectories. In addition, the following variables may be defined that affect the behavior of `glob'. GLOB_OPTIONS A string containing default options. GLOB_IGNORE A list of shell patterns for filenames that `glob' should ignore. GLOB_ALLOW A list of shell patterns. If a file does not match a pattern in `GLOB_ALLOW', it is ignored. The returned files are sorted by name. 10.4.2 ls ========== << $(ls files) : Node Array files : String Sequence $(ls options, files) : Node Array files : String Sequence >> The `ls' function returns the filenames in a directory. The . and .. entries are always ignored. The patterns are shell-style patterns, and are glob-expanded. The options include all of the options to the `glob' function, plus the following. R Perform a recursive listing. The `GLOB_ALLOW' and `GLOB_IGNORE' variables can be defined to control the globbing behavior. The returned files are sorted by name. 10.4.3 subdirs =============== << $(subdirs dirs) : Dir Array dirs : String Sequence $(subdirs options, dirs) : Dir Array options : String dirs : String Sequence >> The `subdirs' function returns all the subdirectories of a list of directories, recursively. The possible options are the following: A Return directories that begin with a . C Ignore files according to .cvsignore rules. P Include only proper subdirectories. 10.5 Filesystem operations *=*=*=*=*=*=*=*=*=*=*=*=*=* 10.5.1 mkdir ============= << mkdir(mode, node...) mode : Int node : Node raises RuntimeException mkdir(node...) node : Node raises RuntimeException >> The `mkdir' function creates a directory, or a set of directories. The following options are supported. -m mode Specify the permissions of the created directory. -p Create parent directories if they do not exist. -- Interpret the remaining names literally. 10.5.2 Stat ============ The `Stat' object represents an information about a filesystem node, as returned by the `stat' and `lstat' functions. It contains the following fields. dev : the device number. ino : the inode number. kind : the kind of the file, one of the following: `REG' (regular file), `DIR' (directory), `CHR' (character device), `BLK' (block device), `LNK' (symbolic link), `FIFO' (named pipe), `SOCK' (socket). perm : access rights, represented as an integer. nlink : number of links. uid : user id of the owner. gid : group id of the file's group. rdev : device minor number. size : size in bytes. atime : last access time, as a floating point number. mtime : last modification time, as a floating point number. ctime : last status change time, as a floating point number. Not all of the fields will have meaning on all operating systems. 10.5.3 stat, lstat =================== << $(stat node...) : Stat node : Node or Channel $(lstat node...) : Stat node : Node or Channel raises RuntimeException >> The `stat' functions return file information. If the file is a symbolic link, the `stat' function refers to the destination of the link; the `lstat' function refers to the link itself. 10.5.4 unlink ============== << $(unlink file...) file : File #(rm file...) file : File $(rmdir dir...) dir : Dir raises RuntimeException >> The `unlink' and `rm' functions remove a file. The `rmdir' function removes a directory. The following options are supported for `rm' and `rmdir'. -f ignore nonexistent files, never prompt. -i prompt before removal. -r remove the contents of directories recursively. -v explain what is going on. -- the rest of the values are interpreted literally. 10.5.5 rename ============== << rename(old, new) old : Node new : Node mv(nodes... dir) nodes : Node Sequence dir : Dir cp(nodes... dir) nodes : Node Sequence dir : Dir raises RuntimeException >> The `rename' function changes the name of a file or directory named `old' to `new'. The `mv' function is similar, but if `new' is a directory, and it exists, then the files specified by the sequence are moved into the directory. If not, the behavior of `mv' is identical to `rename'. The `cp' function is similar, but the original file is not removed. The `mv' and `cp' functions take the following options. -f Do not prompt before overwriting. -i Prompt before overwriting. -v Explain what it happening. -r Copy the contents of directories recursively. -- Interpret the remaining arguments literally. 10.5.6 link ============ << link(src, dst) src : Node dst : Node raises RuntimeException >> The `link' function creates a hard link named `dst' to the file or directory `src'. Hard links may work under Win32 when NTFS is used. Normally, only the superuser can create hard links to directories. 10.5.7 symlink =============== << symlink(src, dst) src : Node dst : Node raises RuntimeException >> The `symlink' function creates a symbolic link `dst' that points to the `src' file. The link name is computed relative to the target directory. For example, the expression `$(symlink a/b, c/d)' creates a link named `c/d -> ../a/b'. Symbolic links are not supported in Win32. Consider using the `ln-or-cp' `Shell' alias for cross-platform portable linking/copying. 10.5.8 readlink ================ << $(readlink node...) : Node node : Node >> The `readlink' function reads the value of a symbolic link. 10.5.9 chmod ============= << chmod(mode, dst...) mode : Int dst : Node or Channel chmod(mode dst...) mode : String dst : Node Sequence raises RuntimeException >> The `chmod' function changes the permissions of the targets. Options: -v Explain what is happening. -r Change files and directories recursively. -f Continue on errors. -- Interpret the remaining argument literally. 10.5.10 chown ============== << chown(uid, gid, node...) uid : Int gid : Int node : Node or Channel chown(uid, node...) uid : Int node : Node or Channel raises RuntimeException >> The `chown' function changes the user and group id of the file. If the `gid' is not specified, it is not changed. If either id is -1, that id is not changed. 10.5.11 truncate ================= << truncate(length, node...) length : Int node : Node or Channel raises RuntimeException >> The `truncate' function truncates a file to the given length. 10.5.12 umask ============== << $(umask mode) : Int mode : Int raises RuntimeException >> Sets the file mode creation mask. The previous mask is returned. This value is not scoped, changes have global effect. 10.6 vmount *=*=*=*=*=*= 10.6.1 vmount ============== << vmount(src, dst) src, dst : Dir vmount(flags, src, dst) flags : String src, dst : Dir >> "Mount" the `src' directory on the `dst' directory. This is a virtual mount, changing the behavior of the `$(file ...)' function. When the `$(file str)' function is used, the resulting file is taken relative to the `src' directory if the file exists. Otherwise, the file is relative to the current directory. The main purpose of the `vmount' function is to support multiple builds with separate configurations or architectures. The options are as follows. l Create symbolic links to files in the `src' directory. c Copy files from the `src' directory. Mount operations are scoped. 10.6.2 add-project-directories =============================== << add-project-directories(dirs) dirs : Dir Array >> Add the directories to the set of directories that omake considers to be part of the project. This is mainly used to avoid omake complaining that the current directory is not part of the project. 10.6.3 remove-project-directories ================================== << remove-project-directories(dirs) dirs : Dir Array >> Removed the directories from the set of directories that omake considers to be part of the project. This is mainly used to cancel a `.SUBDIRS' from including a directory if it is determined that the directory does not need to be compiled. 10.7 File predicates *=*=*=*=*=*=*=*=*=*=* 10.7.1 test ============ << test(exp) : Bool exp : String Sequence >> The expression grammar is as follows: - `!' expression : expression is not true - expression1 `-a' expression2 : both expressions are true - expression1 `-o' expression2 : at least one expression is true - `(' expression `)' : expression is true The base expressions are: - `-n' string : The string has nonzero length - `-z' string : The string has zero length - string `=' string : The strings are equal - string `!=' string : The strings are not equal - int1 `-eq' int2 : The integers are equal - int1 `-ne' int2 : The integers are not equal - int1 `-gt' int2 : int1 is larger than int2 - int1 `-ge' int2 : int2 is not larger than int1 - int1 `-lt' int2 : int1 is smaller than int2 - int1 `-le' int2 : int1 is not larger than int2 - file1 `-ef' file2 : On Unix, file1 and file2 have the same device and inode number. On Win32, file1 and file2 have the same name. - file1 `-nt' file2 : file1 is newer than file2 - file1 `-ot' file2 : file1 is older than file2 - `-b' file : The file is a block special file - `-c' file : The file is a character special file - `-d' file : The file is a directory - `-e' file : The file exists - `-f' file : The file is a normal file - `-g' file : The set`-group'`-id' bit is set on the file - `-G' file : The file's group is the current effective group - `-h' file : The file is a symbolic link (also `-L') - `-k' file : The file's sticky bit is set - `-L' file : The file is a symbolic link (also `-h') - `-O' file : The file's owner is the current effective user - `-p' file : The file is a named pipe - `-r' file : The file is readable - `-s' file : The file is empty - `-S' file : The file is a socket - `-u' file : The set`-user'`-id' bit is set on the file - `-w' file : The file is writable - `-x' file : The file is executable A string is any sequence of characters; leading `-' characters are allowed. An int is a string that can be interpreted as an integer. Unlike traditional versions of the test program, the leading characters may specify an arity. The prefix `0b' means the numbers is in binary; the prefix `0o' means the number is in octal; the prefix `0x' means the number is in hexadecimal. An int can also be specified as `-l' string, which evaluates to the length of the string. A file is a string that represents the name of a file. The syntax mirrors that of the test(1) program. If you are on a Unix system, the man page explains more. Here are some examples. << # Create an empty file osh> touch foo # Is the file empty? osh> test(-e foo) - : true osh> test(! -e foo) - : false # Create another file osh> touch boo # Is the newer file newer? osh> test(boo -nt foo) - : true # A more complex query # boo is newer than foo, and foo is empty osh> test(\( boo -nt foo \) -a -e foo) - : true >> 10.7.2 find ============ << find(exp) : Node Array exp : String Sequence >> The `find' function searches a directory recursively, returning the files for which the expression evaluates to true. The expression argument uses the same syntax as the `test' function, with the following exceptions. 1. The expression may begin with a directory. If not specified, the current directory is searched. 2. The `{}' string expands to the current file being examined. The syntax of the expression is the same as `test', with the following additions. - `-name' string : The current file matches the glob expression (see Section 10.4). - `-regex' string : The current file matches the regular expression The `find' function performs a recursive scan of all subdirectories. The following call is being run from the root of the `omake' source directory. << osh> find(. -name fo* ) - : >> Another example, listing only those files that are normal files or symbolic links. << osh> find(. -name fo* -a \( -f {} -o -L {} \)) - : >> 10.8 IO functions *=*=*=*=*=*=*=*=*= 10.8.1 Standard channels ========================= The following variables define the standard channels. stdin <> The standard input channel, open for reading. stdout <> The standard output channel, open for writing. stderr <> The standard error channel, open for writing. 10.8.2 open-in-string ====================== The `open-in-string' treats a string as if it were a file and returns a channel for reading. << $(open-in-string s) : Channel s : String >> 10.8.3 open-out-string, out-contents ===================================== The `open-out-string' creates a channel that writes to a string instead of a file. The string may be retrieved with the `out-contents' function. << $(open-out-string) : Channel $(out-contents chan) : String chan : OutChannel >> 10.8.4 fopen ============= The `fopen' function opens a file for reading or writing. << $(fopen file, mode) : Channel file : File mode : String >> The `file' is the name of the file to be opened. The `mode' is a combination of the following characters. r Open the file for reading; it is an error if the file does not exist. w Open the file for writing; the file is created if it does not exist. a Open the file in append mode; the file is created if it does not exist. + Open the file for both reading and writing. t Open the file in text mode (default). b Open the file in binary mode. n Open the file in nonblocking mode. x Fail if the file already exists. Binary mode is not significant on Unix systems, where text and binary modes are equivalent. 10.8.5 close ============= << $(close channel...) channel : Channel >> The `close' function closes a file that was previously opened with `fopen'. 10.8.6 read, input-line ======================== << $(read channel, amount) : String $(input-line channel) : String channel : InChannel amount : Int raises RuntimeException >> The `read' function reads up to `amount' bytes from an input channel, and returns the data that was read. The `input-line' function reads a line from the file and returns the line read, without the line terminator. If an end-of-file condition is reached, both functions raise a `RuntimeException' exception. 10.8.7 write ============= << $(write channel, buffer, offset, amount) : String channel : OutChannel buffer : String offset : Int amount : Int $(write channel, buffer) : String channel : OutChannel buffer : String raises RuntimeException >> In the 4-argument form, the `write' function writes bytes to the output channel `channel' from the `buffer', starting at position `offset'. Up to `amount' bytes are written. The function returns the number of bytes that were written. The 3-argument form is similar, but the `offset' is 0. In the 2-argument form, the `offset' is 0, and the `amount' if the length of the `buffer'. If an end-of-file condition is reached, the function raises a `RuntimeException' exception. 10.8.8 lseek ============= << $(lseek channel, offset, whence) : Int channel : Channel offset : Int whence : String raises RuntimeException >> The `lseek' function repositions the offset of the channel `channel' according to the `whence' directive, as follows: SEEK_SET The offset is set to `offset'. SEEK_CUR The offset is set to its current position plus `offset' bytes. SEEK_END The offset is set to the size of the file plus `offset' bytes. The `lseek' function returns the new position in the file. 10.8.9 rewind ============== << rewind(channel...) channel : Channel >> The `rewind' function set the current file position to the beginning of the file. 10.8.10 tell ============= << $(tell channel...) : Int... channel : Channel raises RuntimeException >> The `tell' function returns the current position of the `channel'. 10.8.11 flush ============== << $(flush channel...) channel : OutChannel >> The `flush' function can be used only on files that are open for writing. It flushes all pending data to the file. 10.8.12 channel-name ===================== << $(channel-name channel...) : String channel : Channel >> The `channel-name' function returns the name that is associated with the channel. 10.8.13 dup ============ << $(dup channel) : Channel channel : Channel raises RuntimeException >> The `dup' function returns a new channel referencing the same file as the argument. 10.8.14 dup2 ============= << dup2(channel1, channel2) channel1 : Channel channel2 : Channel raises RuntimeException >> The `dup2' function causes `channel2' to refer to the same file as `channel1'. 10.8.15 set-nonblock ===================== << set-nonblock-mode(mode, channel...) channel : Channel mode : String >> The `set-nonblock-mode' function sets the nonblocking flag on the given channel. When IO is performed on the channel, and the operation cannot be completed immediately, the operations raises a `RuntimeException'. 10.8.16 set-close-on-exec-mode =============================== << set-close-on-exec-mode(mode, channel...) channel : Channel mode : String raises RuntimeException >> The `set-close-on-exec-mode' function sets the close-on-exec flags for the given channels. If the close-on-exec flag is set, the channel is not inherited by child processes. Otherwise it is. 10.8.17 pipe ============= << $(pipe) : Pipe raises RuntimeException >> The `pipe' function creates a `Pipe' object, which has two fields. The `read' field is a channel that is opened for reading, and the `write' field is a channel that is opened for writing. 10.8.18 mkfifo =============== << mkfifo(mode, node...) mode : Int node : Node >> The `mkfifo' function creates a named pipe. 10.8.19 select =============== << $(select rfd..., wfd..., wfd..., timeout) : Select rfd : InChannel wfd : OutChannel efd : Channel timeout : float raises RuntimeException >> The `select' function polls for possible IO on a set of channels. The `rfd' are a sequence of channels for reading, `wfd' are a sequence of channels for writing, and `efd' are a sequence of channels to poll for error conditions. The `timeout' specifies the maximum amount of time to wait for events. On successful return, `select' returns a `Select' object, which has the following fields: read An array of channels available for reading. write An array of channels available for writing. error An array of channels on which an error has occurred. 10.8.20 lockf ============== << lockf(channel, command, len) channel : Channel command : String len : Int raises RuntimeException >> The `lockf' function places a lock on a region of the channel. The region starts at the current position and extends for `len' bytes. The possible values for `command' are the following. F_ULOCK Unlock a region. F_LOCK Lock a region for writing; block if already locked. F_TLOCK Lock a region for writing; fail if already locked. F_TEST Test a region for other locks. F_RLOCK Lock a region for reading; block if already locked. F_TRLOCK Lock a region for reading; fail is already locked. 10.8.21 InetAddr ================= The `InetAddr' object describes an Internet address. It contains the following fields. addr `String': the Internet address. port `Int': the port number. 10.8.22 Host ============= A `Host' object contains the following fields. name `String': the name of the host. aliases `String Array': other names by which the host is known. addrtype `String': the preferred socket domain. addrs `InetAddr Array': an array of Internet addresses belonging to the host. 10.8.23 gethostbyname ====================== << $(gethostbyname host...) : Host... host : String raises RuntimeException >> The `gethostbyname' function returns a `Host' object for the specified host. The `host' may specify a domain name or an Internet address. 10.8.24 Protocol ================= The `Protocol' object represents a protocol entry. It has the following fields. name `String': the canonical name of the protocol. aliases `String Array': aliases for the protocol. proto `Int': the protocol number. 10.8.25 getprotobyname ======================= << $(getprotobyname name...) : Protocol... name : Int or String raises RuntimeException >> The `getprotobyname' function returns a `Protocol' object for the specified protocol. The `name' may be a protocol name, or a protocol number. 10.8.26 Service ================ The `Service' object represents a network service. It has the following fields. name `String': the name of the service. aliases `String Array': aliases for the service. port `Int': the port number of the service. proto `Protocol': the protocol for the service. 10.8.27 getservbyname ====================== << $(getservbyname service...) : Service... service : String or Int raises RuntimeException >> The `getservbyname' function gets the information for a network service. The `service' may be specified as a service name or number. 10.8.28 socket =============== << $(socket domain, type, protocol) : Channel domain : String type : String protocol : String raises RuntimeException >> The `socket' function creates an unbound socket. The possible values for the arguments are as follows. The `domain' may have the following values. PF_UNIX or unix Unix domain, available only on Unix systems. PF_INET or inet Internet domain, IPv4. PF_INET6 or inet6 Internet domain, IPv6. The `type' may have the following values. SOCK_STREAM or stream Stream socket. SOCK_DGRAM or dgram Datagram socket. SOCK_RAW or raw Raw socket. SOCK_SEQPACKET or seqpacket Sequenced packets socket The `protocol' is an `Int' or `String' that specifies a protocol in the protocols database. 10.8.29 bind ============= << bind(socket, host, port) socket : InOutChannel host : String port : Int bind(socket, file) socket : InOutChannel file : File raise RuntimeException >> The `bind' function binds a socket to an address. The 3-argument form specifies an Internet connection, the `host' specifies a host name or IP address, and the `port' is a port number. The 2-argument form is for `Unix' sockets. The `file' specifies the filename for the address. 10.8.30 listen =============== << listen(socket, requests) socket : InOutChannel requests : Int raises RuntimeException >> The `listen' function sets up the socket for receiving up to `requests' number of pending connection requests. 10.8.31 accept =============== << $(accept socket) : InOutChannel socket : InOutChannel raises RuntimeException >> The `accept' function accepts a connection on a socket. 10.8.32 connect ================ << connect(socket, addr, port) socket : InOutChannel addr : String port : int connect(socket, name) socket : InOutChannel name : File raise RuntimeException >> The `connect' function connects a socket to a remote address. The 3-argument form specifies an Internet connection. The `addr' argument is the Internet address of the remote host, specified as a domain name or IP address. The `port' argument is the port number. The 2-argument form is for Unix sockets. The `name' argument is the filename of the socket. 10.8.33 getchar ================ << $(getc) : String $(getc file) : String file : InChannel or File raises RuntimeException >> The `getc' function returns the next character of a file. If the argument is not specified, `stdin' is used as input. If the end of file has been reached, the function returns `false'. 10.8.34 gets ============= << $(gets) : String $(gets channel) : String channel : InChannel or File raises RuntimeException >> The `gets' function returns the next line from a file. The function returns the empty string if the end of file has been reached. The line terminator is removed. 10.8.35 fgets ============== << $(fgets) : String $(fgets channel) : String channel : InChannel or File raises RuntimeException >> The `fgets' function returns the next line from a file that has been opened for reading with `fopen'. The function returns the empty string if the end of file has been reached. The returned string is returned as literal data. The line terminator is not removed. 10.9 Printing functions *=*=*=*=*=*=*=*=*=*=*=*= Output is printed with the `print' and `println' functions. The `println' function adds a terminating newline to the value being printed, the `print' function does not. << fprint(, ) print() eprint() fprintln(, ) println() eprintln() >> The `fprint' functions print to a file that has been previously opened with `fopen'. The `print' functions print to the standard output channel, and the `eprint' functions print to the standard error channel. 10.10 Value printing functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* Values can be printed with the `printv' and `printvln' functions. The `printvln' function adds a terminating newline to the value being printed, the `printv' function does not. << fprintv(, ) printv() eprintv() fprintvln(, ) printvln() eprintvln() >> The `fprintv' functions print to a file that has been previously opened with `fopen'. The `printv' functions print to the standard output channel, and the `eprintv' functions print to the standard error channel. 10.10.1 Miscellaneous functions ================================ 10.10.1.1 set-channel-line --------------------------- << set-channel-line(channel, filename, line) channel : Channel filename : File line : int >> Set the line number information for the channel. 10.11 Higher-level IO functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= 10.11.1 Regular expressions ============================ Many of the higher-level functions use regular expressions. Regular expressions are defined by strings with syntax nearly identical to awk(1). Strings may contain the following character constants. - `\\' : a literal backslash. - `\a' : the alert character `^G'. - `\b' : the backspace character `^H'. - `\f' : the formfeed character `^L'. - `\n' : the newline character `^J'. - `\r' : the carriage return character `^M'. - `\t' : the tab character `^I'. - `\v' : the vertical tab character. - `\xhh...' : the character represented by the string of hexadecimal digits `h'. All valid hexadecimal digits following the sequence are considered to be part of the sequence. - `\ddd' : the character represented by 1, 2, or 3 octal digits. Regular expressions are defined using the special characters `.\^$[(){}*?'+. - `c' : matches the literal character `c' if `c' is not a special character. - `\c' : matches the literal character `c', even if `c' is a special character. - `.' : matches any character, including newline. - `^' : matches the beginning of a line. - `$' : matches the end of line. - `[abc...]' : matches any of the characters `abc...' - `[^abc...]' : matches any character except `abc...' - `r1|r2' : matches either `r1' or `r2'. - `r1r2' : matches `r1' and then `r2'. - `r'+ : matches one or more occurrences of `r'. - `r*' : matches zero or more occurrences of `r'. - `r?' : matches zero or one occurrence of `r'. - `(r)' : parentheses are used for grouping; matches `r'. - `\(r\)' : also defines grouping, but the expression matched within the parentheses is available to the output processor through one of the variables `$1', `$2', ... - `r{n}' : matches exactly `n' occurrences of `r'. - `r{n,}' : matches `n' or more occurrences of `r'. - `r{n,m}' : matches at least `n' occurrences of `r', and no more than `m' occurrences. - `\y': matches the empty string at either the beginning or end of a word. - `\B': matches the empty string within a word. - `\<': matches the empty string at the beginning of a word. - `\>': matches the empty string at the end of a word. - `\w': matches any character in a word. - `\W': matches any character that does not occur within a word. - `\`': matches the empty string at the beginning of a file. - `\'': matches the empty string at the end of a file. Character classes can be used to specify character sequences abstractly. Some of these sequences can change depending on your LOCALE. - `[:alnum:]' Alphanumeric characters. - `[:alpha:]' Alphabetic characters. - `[:lower:]' Lowercase alphabetic characters. - `[:upper:]' Uppercase alphabetic characters. - `[:cntrl:]' Control characters. - `[:digit:]' Numeric characters. - `[:xdigit:]' Numeric and hexadecimal characters. - `[:graph:]' Characters that are printable and visible. - `[:print:]' Characters that are printable, whether they are visible or not. - `[:punct:]' Punctuation characters. - `[:blank:]' Space or tab characters. - `[:space:]' Whitespace characters. 10.11.2 cat ============ << cat(files) : Sequence files : File or InChannel Sequence >> The `cat' function concatenates the output from multiple files and returns it as a string. 10.11.3 grep ============= << grep(pattern) : String # input from stdin, default options pattern : String grep(pattern, files) : String # default options pattern : String files : File Sequence grep(options, pattern, files) : String options : String pattern : String files : File Sequence >> The `grep' function searches for occurrences of a regular expression `pattern' in a set of files, and prints lines that match. This is like a highly-simplified version of grep(1). The options are: q If specified, the output from `grep' is not displayed. h If specified, output lines will not include the filename (default, when only one input file is given). n If specified, output lines include the filename (default, when more than one input file is given). v If specified, search for lines without a match instead of lines with a match, The `pattern' is a regular expression. If successful (`grep' found a match), the function returns `true'. Otherwise, it returns `false'. 10.11.4 scan ============= << scan(input-files) case string1 body1 case string2 body2 ... default bodyd >> The `scan' function provides input processing in command-line form. The function takes file/filename arguments. If called with no arguments, the input is taken from `stdin'. If arguments are provided, each specifies an `InChannel', or the name of a file for input. Output is always to `stdout'. The `scan' function operates by reading the input one line at a time, and processing it according to the following algorithm. For each line, the record is first split into fields, and the fields are bound to the variables `$1, $2, ...'. The variable `$0' is defined to be the entire line, and `$*' is an array of all the field values. The `$(NF)' variable is defined to be the number of fields. Next, a case expression is selected. If `string_i' matches the token `$1', then `body_i' is evaluated. If the body ends in an `export', the state is passed to the next clause. Otherwise the value is discarded. For example, here is an `scan' function that acts as a simple command processor. << calc() = i = 0 scan(script.in) case print println($i) case inc i = $(add $i, 1) export case dec i = $(sub $i, 1) export case addconst i = $(add $i, $2) export default eprintln($"Unknown command: $1") >> The `scan' function also supports several options. << scan(options, files) ... >> A Parse each line as an argument list, where arguments may be quoted. For example, the following line has three words, "`ls'", "`-l'", "`Program Files'". << ls -l "Program Files" >> O Parse each line using white space as the separator, using the usual OMake algorithm for string parsing. This is the default. x Once each line is split, reduce each word using the hex representation. This is the usual hex representation used in URL specifiers, so the string "Program Files" may be alternately represented in the form ProgramProgram+Files. Note, if you want to redirect the output to a file, the easiest way is to redefine the `stdout' variable. The `stdout' variable is scoped the same way as other variables, so this definition does not affect the meaning of `stdout' outside the `calc' function. << calc() = stdout = $(fopen script.out, w) scan(script.in) ... close(stdout) >> 10.11.5 awk ============ << awk(input-files) case pattern1: body1 case pattern2: body2 ... default: bodyd >> or << awk(options, input-files) case pattern1: body1 case pattern2: body2 ... default: bodyd >> The `awk' function provides input processing similar to awk(1), but more limited. The `input-files' argument is a sequence of values, each specifies an `InChannel', or the name of a file for input. If called with no options and no file arguments, the input is taken from `stdin'. Output is always to `stdout'. The variables `RS' and `FS' define record and field separators as regular expressions. The default value of `RS' is the regular expression `\r|\n|\r\n'. The default value of `FS' is the regular expression `[ \t]'+. The `awk' function operates by reading the input one record at a time, and processing it according to the following algorithm. For each line, the record is first split into fields using the field separator `FS', and the fields are bound to the variables `$1, $2, ...'. The variable `$0' is defined to be the entire line, and `$*' is an array of all the field values. The `$(NF)' variable is defined to be the number of fields. Next, the cases are evaluated in order. For each case, if the regular expression `pattern_i' matches the record `$0', then `body_i' is evaluated. If the body ends in an `export', the state is passed to the next clause. Otherwise the value is discarded. If the regular expression contains `\(r\)' expression, those expression override the fields `$1, $2, ...'. For example, here is an `awk' function to print the text between two delimiters `\begin{}' and `\end{}', where the `' must belong to a set passed as an argument to the `filter' function. << filter(names) = print = false awk(Awk.in) case $"^\\end\{\([:alpha:]+\)\}" if $(mem $1, $(names)) print = false export export default if $(print) println($0) case $"^\\begin\{\([:alpha:]+\)\}" print = $(mem $1, $(names)) export >> Note, if you want to redirect the output to a file, the easiest way is to redefine the `stdout' variable. The `stdout' variable is scoped the same way as other variables, so this definition does not affect the meaning of `stdout' outside the `filter' function. << filter(names) = stdout = $(fopen file.out, w) awk(Awk.in) ... close(stdout) >> Options. b "Break" when evaluating cases. Only the first case that matches will be selected. The 'break' function can be used to abort the loop, exiting the `awk' function immediately. 10.11.6 fsubst =============== << fsubst(files) case pattern1 [options] body1 case pattern2 [options] body2 ... default bodyd >> The `fsubst' function provides a sed(1)-like substitution function. Similar to `awk', if `fsubst' is called with no arguments, the input is taken from `stdin'. If arguments are provided, each specifies an `InChannel', or the name of a file for input. The `RS' variable defines a regular expression that determines a record separator, The default value of `RS' is the regular expression `\r|\n|\r\n'. The `fsubst' function reads the file one record at a time. For each record, the cases are evaluated in order. Each case defines a substitution from a substring matching the `pattern' to replacement text defined by the body. Currently, there is only one option: `g'. If specified, each clause specifies a global replacement, and all instances of the pattern define a substitution. Otherwise, the substitution is applied only once. Output can be redirected by redefining the `stdout' variable. For example, the following program replaces all occurrences of an expression `word.' with its capitalized form. << section stdout = $(fopen Subst.out, w) fsubst(Subst.in) case $"\<\([[:alnum:]]+\)\." g value $(capitalize $1). close(stdout) >> 10.11.7 lex ============ << lex(files) case pattern1 body1 case pattern2 body2 ... default bodyd >> The `lex' function provides a simple lexical-style scanner function. The input is a sequence of files or channels. The cases specify regular expressions. Each time the input is read, the regular expression that matches the longest prefix of the input is selected, and the body is evaluated. If two clauses both match the same input, the last one is selected for execution. The `default' case matches the regular expression `.'; you probably want to place it first in the pattern list. If the body end with an `export' directive, the state is passed to the next clause. For example, the following program collects all occurrences of alphanumeric words in an input file. << collect-words($(files)) = words[] = lex($(files)) default # empty case $"[[:alnum:]]+" g words[] += $0 export >> The `default' case, if one exists, matches single characters. Since It is an error if the input does not match any of the regular expressions. The 'break' function can be used to abort the loop. 10.11.8 lex-search =================== << lex-search(files) case pattern1 body1 case pattern2 body2 ... default bodyd >> The `lex-search' function is like the `lex' function, but input that does not match any of the regular expressions is skipped. If the clauses include a `default' case, then the `default' matches any skipped text. For example, the following program collects all occurrences of alphanumeric words in an input file, skipping any other text. << collect-words($(files)) = words[] = lex-search($(files)) default eprintln(Skipped $0) case $"[[:alnum:]]+" g words[] += $0 export >> The `default' case, if one exists, matches single characters. Since It is an error if the input does not match any of the regular expressions. The 'break' function can be used to abort the loop. 10.11.9 Lexer ============== The `Lexer' object defines a facility for lexical analysis, similar to the lex(1) and flex(1) programs. In omake, lexical analyzers can be constructed dynamically by extending the `Lexer' class. A lexer definition consists of a set of directives specified with method calls, and set of clauses specified as rules. For example, consider the following lexer definition, which is intended for lexical analysis of simple arithmetic expressions for a desktop calculator. << lexer1. = extends $(Lexer) other: . eprintln(Illegal character: $* ) lex() white: $"[[:space:]]+" lex() op: $"[-+*/()]" switch $* case + Token.unit($(loc), plus) case - Token.unit($(loc), minus) case * Token.unit($(loc), mul) case / Token.unit($(loc), div) case $"(" Token.unit($(loc), lparen) case $")" Token.unit($(loc), rparen) number: $"[[:digit:]]+" Token.pair($(loc), exp, $(int $* )) eof: $"\'" Token.unit($(loc), eof) >> This program defines an object `lexer1' the extends the `Lexer' object, which defines lexing environment. The remainder of the definition consists of a set of clauses, each with a method name before the colon; a regular expression after the colon; and in this case, a body. The body is optional, if it is not specified, the method with the given name should already exist in the lexer definition. NB The clause that matches the longest prefix of the input is selected. If two clauses match the same input prefix, then the last one is selected. This is unlike most standard lexers, but makes more sense for extensible grammars. The first clause matches any input that is not matched by the other clauses. In this case, an error message is printed for any unknown character, and the input is skipped. Note that this clause is selected only if no other clause matches. The second clause is responsible for ignoring white space. If whitespace is found, it is ignored, and the lexer is called recursively. The third clause is responsible for the arithmetic operators. It makes use of the `Token' object, which defines three fields: a `loc' field that represents the source location; a `name'; and a `value'. The lexer defines the `loc' variable to be the location of the current lexeme in each of the method bodies, so we can use that value to create the tokens. The `Token.unit($(loc), name)' method constructs a new `Token' object with the given name, and a default value. The `number' clause matches nonnegative integer constants. The `Token.pair($(loc), name, value)' constructs a token with the given name and value. Lexer object operate on `InChannel' objects. The method `lexer1.lex-channel(channel)' reads the next token from the channel argument. 10.11.10 Lexer matching ======================== During lexical analysis, clauses are selected by longest match. That is, the clause that matches the longest sequence of input characters is chosen for evaluation. If no clause matches, the lexer raises a `RuntimeException'. If more than one clause matches the same amount of input, the first one is chosen for evaluation. 10.11.11 Extending lexer definitions ===================================== Suppose we wish to augment the lexer example so that it ignores comments. We will define comments as any text that begins with the string `(*', ends with `*)', and comments may be nested. One convenient way to do this is to define a separate lexer just to skip comments. << lex-comment. = extends $(Lexer) level = 0 other: . lex() term: $"[*][)]" if $(not $(eq $(level), 0)) level = $(sub $(level), 1) lex() next: $"[(][*]" level = $(add $(level), 1) lex() eof: $"\'" eprintln(Unterminated comment) >> This lexer contains a field `level' that keeps track of the nesting level. On encountering a `(*' string, it increments the level, and for `*)', it decrements the level if nonzero, and continues. Next, we need to modify our previous lexer to skip comments. We can do this by extending the lexer object `lexer1' that we just created. << lexer1. += comment: $"[(][*]" lex-comment.lex-channel($(channel)) lex() >> The body for the comment clause calls the `lex-comment' lexer when a comment is encountered, and continues lexing when that lexer returns. 10.11.12 Threading the lexer object ==================================== Clause bodies may also end with an `export' directive. In this case the lexer object itself is used as the returned token. If used with the `Parser' object below, the lexer should define the `loc', `name' and `value' fields in each `export' clause. Each time the `Parser' calls the lexer, it calls it with the lexer returned from the previous lex invocation. 10.11.13 Parser ================ The `Parser' object provides a facility for syntactic analysis based on context-free grammars. `Parser' objects are specified as a sequence of directives, specified with method calls; and productions, specified as rules. For example, let's finish building the desktop calculator started in the `Lexer' example. << parser1. = extends $(Parser) # # Use the main lexer # lexer = $(lexer1) # # Precedences, in ascending order # left(plus minus) left(mul div) right(uminus) # # A program # start(prog) prog: exp eof return $1 # # Simple arithmetic expressions # exp: minus exp :prec: uminus neg($2) exp: exp plus exp add($1, $3) exp: exp minus exp sub($1, $3) exp: exp mul exp mul($1, $3) exp: exp div exp div($1, $3) exp: lparen exp rparen return $2 >> Parsers are defined as extensions of the `Parser' class. A `Parser' object must have a `lexer' field. The `lexer' is not required to be a `Lexer' object, but it must provide a `lexer.lex()' method that returns a token object with `name' and `value' fields. For this example, we use the `lexer1' object that we defined previously. The next step is to define precedences for the terminal symbols. The precedences are defined with the `left', `right', and `nonassoc' methods in order of increasing precedence. The grammar must have at least one start symbol, declared with the `start' method. Next, the productions in the grammar are listed as rules. The name of the production is listed before the colon, and a sequence of variables is listed to the right of the colon. The body is a semantic action to be evaluated when the production is recognized as part of the input. In this example, these are the productions for the arithmetic expressions recognized by the desktop calculator. The semantic action performs the calculation. The variables `$1, $2, ...' correspond to the values associated with each of the variables on the right-hand-side of the production. 10.11.14 Calling the parser ============================ The parser is called with the `$(parser1.parse-channel start, channel)' or `$(parser1.parse-file start, file)' functions. The `start' argument is the start symbol, and the `channel' or `file' is the input to the parser. 10.11.15 Parsing control ========================= The parser generator generates a pushdown automation based on LALR(1) tables. As usual, if the grammar is ambiguous, this may generate shift/reduce or reduce/reduce conflicts. These conflicts are printed to standard output when the automaton is generated. By default, the automaton is not constructed until the parser is first used. The `build(debug)' method forces the construction of the automaton. While not required, it is wise to finish each complete parser with a call to the `build(debug)' method. If the `debug' variable is set, this also prints with parser table together with any conflicts. The `loc' variable is defined within action bodies, and represents the input range for all tokens on the right-hand-side of the production. 10.11.16 Extending parsers =========================== Parsers may also be extended by inheritance. For example, let's extend the grammar so that it also recognizes the `<<' and `>>' shift operations. First, we extend the lexer so that it recognizes these tokens. This time, we choose to leave `lexer1' intact, instead of using the += operator. << lexer2. = extends $(lexer1) lsl: $"<<" Token.unit($(loc), lsl) asr: $">>" Token.unit($(loc), asr) >> Next, we extend the parser to handle these new operators. We intend that the bitwise operators have lower precedence than the other arithmetic operators. The two-argument form of the `left' method accomplishes this. << parser2. = extends $(parser1) left(plus, lsl lsr asr) lexer = $(lexer2) exp: exp lsl exp lsl($1, $3) exp: exp asr exp asr($1, $3) >> In this case, we use the new lexer `lexer2', and we add productions for the new shift operations. 10.11.17 Passwd ================ The `Passwd' object represents an entry in the system's user database. It contains the following fields. 'pw_name': the login name. 'pw_passwd': the encrypted password. 'pw_uid': user id of the user. 'pw_gid': group id of the user. 'pw_gecos': the user name or comment field. 'pw_dir': the user's home directory. 'pw_shell': the user's default shell. Not all the fields will have meaning on all operating systems. 10.11.18 getpwnam, getpwuid ============================ << $(getpwnam name...) : Passwd name : String $(getpwuid uid...) : Passwd uid : Int raises RuntimeException >> The `getpwnam' function looks up an entry by the user's login and the `getpwuid' function looks up an entry by user's numerical id (uid). If no entry is found, an exception will be raised. 10.11.19 getpwents =================== << $(getpwents) : Array >> The `getpwents' function returns an array of `Passwd' objects, one for every user fund in the system user database. Note that depending on the operating system and on the setup of the user database, the returned array may be incomplete or even empty. 10.11.20 Group =============== The `Group' object represents an entry in the system's user group database. It contains the following fields. 'gr_name': the group name. 'gr_group': the encrypted password. 'gr_gid': group id of the group. 'gr_mem': the group member's user names. Not all the fields will have meaning on all operating systems. 10.11.21 getgrnam, getgrgid ============================ << $(getgrnam name...) : Group name : String $(getgrgid gid...) : Group gid : Int raises RuntimeException >> The `getgrnam' function looks up a group entry by the group's name and the `getgrgid' function looks up an entry by groups's numerical id (gid). If no entry is found, an exception will be raised. 10.11.22 tgetstr ================= << $(tgetstr id) : String id : String >> The `tgetstr' function looks up the terminal capability with the indicated `id'. This assumes the terminfo to lookup is given in the `TERM' environment variable. This function returns an empty value if the given terminal capability is not defined. Note: if you intend to use the value returned by `tgetstr' inside the shell 'prompt', you need to wrap it using the 'prompt-invisible' function. 10.11.23 xterm-escape-begin, xterm-escape-end ============================================== << $(xterm-escape-begin) : String $(xterm-escape-end) : String >> The `xterm-escape-begin' and `xterm-escape-end' functions return the escape sequences that can be used to set the XTerm window title. Will return empty values if this capability is not available. Note: if you intend to use these strings inside the shell 'prompt', you need to use `$(prompt_invisible_begin)$(xterm-escape-begin)' and `$(xterm-escape-end)$(prompt_invisible_end)'. 10.11.24 xterm-escape ====================== << $(xterm-escape s) : Sequence >> When the `TERM' environment variable indicates that the XTerm title setting capability is available, `$(xterm-escape s)' is equivalent to `$(xterm-escape-begin)s$(xterm-escape-end)'. Otherwise, it returns an empty value. Note: if you intend to use the value returned by `xterm-escape' inside the shell 'prompt', you need to wrap it using the 'prompt-invisible' function. 10.11.25 prompt-invisible-begin, prompt-invisible-end ====================================================== << $(prompt-invisible-begin) : String $(prompt-invisible-end) : String >> The `prompt-invisible-begin' and `prompt-invisible-end' functions return the escape sequences that must used to mark the "invisible" sections of the shell 'prompt' (such as various escape sequences). 10.11.26 prompt-invisible ========================== << $(prompt-invisible s) : Sequence >> The `prompt-invisible' will wrap its argument with `$(prompt-invisible-begin)' and `$(prompt-invisible-end)'. All the `invisible" sections of the shell 'prompt' (such as various escape sequences) must be wrapped this way. 10.11.27 gettimeofday ====================== << $(gettimeofday) : Float >> The `gettimeofday' function returns the time of day in seconds since January 1, 1970. Chapter 11 Shell commands **************************** Shell commands (commands to be executed by the operating system) can be freely mixed with other code. NOTE: the syntax and shell usage is identical on all platforms, including Win32. To avoid portability problems on Win32, it is recommended that you avoid the use of the native shell interpreter `cmd'. << LIB = $(dir lib) println(The contents of the $(LIB) directory is:) ls $(LIB) >> 11.1 Simple commands *=*=*=*=*=*=*=*=*=*=* The syntax of shell commands is similar to the syntax used by the Unix shell `bash'. In general, a command is a pipeline. A basic command is part of a pipeline. It is specified with the name of an executable and some arguments. Here are some examples. << ls ls -AF . echo Hello world >> The command is found using the current search path in the variable `PATH[]', which should define an array of directories containing executables. A command may also be prefixed by environment variable definitions. << # Prints "Hello world" env X="Hello world" Y=2 printenv X # Pass the include path to the Visual C++ env include="c:\Program Files\Microsoft SDK\include" cl foo.cpp >> 11.2 Globbing *=*=*=*=*=*=*= Commands may contain wildcard patterns. A pattern specifies a set of files through a limited kind of regular expression. Patterns are expanded before the function is executed. << # List all files with a .c suffix ls *.c # List all files with a single character prefix, and .c suffix ls ?.c # Rename the file hello.ml to foo.ml mv {hello,foo}.ml >> A comprehensive description of OMake glob patterns is given in Section 10.4. 11.3 Background jobs *=*=*=*=*=*=*=*=*=*=* The command may also be placed in the background by placing an ampersand after the command. Control returns to the shell without waiting for the job to complete. The job continues to run in the background. << gcc -o hugeprogram *.c & >> 11.4 File redirection *=*=*=*=*=*=*=*=*=*=*= Input and output can be redirected to files by using the `<', `>', and `>&' directives after the command. << # Write to the "foo" file echo Hello world > foo # Redirect input from the foo file cat < foo # Redirect standard output and errors to the foo file gcc -o boo *.c >& foo >> 11.5 Pipelines *=*=*=*=*=*=*=* Pipelines are sequences of commands, where the output from each command is sent to the next. Pipelines are defined with the `|' and `|&' syntax. With `|' the output is redirected, but errors are not. With `|&' both output and errors are redirected. << # Send the output of the ls command to the printer ls *.c | lpr # Send output and errors to jyh as email gcc -o hugefile *.c |& mail jyh >> 11.6 Conditional execution *=*=*=*=*=*=*=*=*=*=*=*=*=* Commands may also be composed though conditional evaluation using the `||' and `&&' syntax. Every command has an integer exit code, which may be zero or some other integer. A command is said to succeed if its exit code is zero. The expression `command1 && command2' executes `command2' only if `command1' succeeds. The expression `command1 || command2' executes `command2' only if `command1' fails. << # Display the x/y file if possible cd x && cat y # Run foo.exe, or print an error message (test -x foo.exe && foo.exe) || echo "foo.exe is not executable" >> 11.7 Grouping *=*=*=*=*=*=*= Parenthesis are used for grouping in a pipeline or conditional command. In the following expression, the `test' function is used to test whether the `foo.exe' file is executable. If it is, the `foo.exe' file is executed. If the file is not executable (or if the `foo.exe' command fails), the message `"foo.exe is not executable"' is printed. << # Run foo.exe, or print an error message (test -x foo.exe && foo.exe) || echo "foo.exe is not executable" >> 11.8 What is a shell command? *=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Syntactially, shell commands are any line that is not one of the following: - A variable definition of the form `VAR=string' - A function call `f(...)' or method call `o.f(...)' - A rule definition containing a colon `string: ...' - A special command, including the following: - `if ...' - `switch ...' - `match ...' - `section ...' - `return ...' Commands may also be builtin (aliases). See the documentation for the 'Shell' object for more information. 11.9 Basic builtin functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=* 11.9.1 echo ============ The `echo' function prints a string. <<$(echo ) echo >> 11.9.2 cd ========== The `cd' function changes the current directory. << cd(dir) dir : Dir >> The `cd' function also supports a 2-argument form: << $(cd dir, e) dir : Dir e : expression >> In the two-argument form, expression `e' is evaluated in the directory `dir'. The current directory is not changed otherwise. The behavior of the `cd' function can be changed with the `CDPATH' variable, which specifies a search path for directories. This is normally useful only in the osh command interpreter. << CDPATH : Dir Sequence >> For example, the following will change directory to the first directory `./foo', `~/dir1/foo', `~/dir2/foo'. << CDPATH[] = . $(HOME)/dir1 $(HOME)/dir2 cd foo >> 11.10 Job control builtin functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= 11.10.1 jobs ============= The `jobs' function prints a list of jobs. `jobs' 11.10.2 bg =========== The `bg' function places a job in the background. `bg ' 11.10.3 fg =========== The `fg' function brings a job to the foreground. `fg ' 11.10.4 stop ============= The `stop' function suspends a job. `stop ' 11.10.5 wait ============= The `wait' function waits for a job to finish. If no process identifiers are given, the shell waits for all jobs to complete. `wait ' 11.10.6 kill ============= The `kill' function signals a job. `kill [signal] ' 11.11 Command history *=*=*=*=*=*=*=*=*=*=*= 11.11.1 history ================ << $(history-index) : Int $(history) : String Sequence history-file : File history-length : Int >> The history variables manage the command-line history in osh. They have no effect in omake. The `history-index' variable is the current index into the command-line history. The `history' variable is the current command-line history. The `history-file' variable can be redefined if you want the command-line history to be saved. The default value is `~/.omake/osh_history'. The `history-length' variable can be redefined to specify the maximum number of lines in the history that you want saved. The default value is `100'. Chapter 12 The standard objects ********************************** `Pervasives' defines the objects that are defined in all programs. The following objects are defined. 12.1 Pervasives objects *=*=*=*=*=*=*=*=*=*=*=*= 12.1.1 Object ============== Parent objects: none. The `Object' object is the root object. Every class is a subclass of `Object'. It provides the following fields: - `$(o.object-length)': the number of fields and methods in the object. - `$(o.object-mem )': returns `true' iff the `' is a field or method of the object. - `$(o.object-add , )': adds the field to the object, returning a new object. - `$(o.object-find )': fetches the field or method from the object; it is equivalent to `$(o.)', but the variable can be non-constant. - `$(o.object-map )': maps a function over the object. The function should take two arguments; the first is a field name, the second is the value of that field. The result is a new object constructed from the values returned by the function. - `o.object-foreach': the `object-foreach' form is equivalent to `object-map', but with altered syntax. << o.object-foreach(, ) >> For example, the following function prints all the fields of an object `o'. << PrintObject(o) = o.object-foreach(v, x) println($(v) = $(x)) >> The `export' form is valid in a `object-foreach' body. The following function collects just the field names of an object. << FieldNames(o) = names[] = o.object-foreach(v, x) names[] += $(v) export return $(names) >> 12.1.2 Map =========== Parent objects: `Object'. A `Map' object is a dictionary from values to values. The `' values are restricted to simple values: integers, floating-point numbers, strings, files, directories, and arrays of simple values. The Map object provides the following methods. - `$(o.length)': the number of items in the map. - `$(o.mem )': returns `true' iff the `' is defined in the map. - `$(o.add , )': adds the field to the map, returning a new map. - `$(o.find )': fetches the field from the map. - `$(o.keys)': fetches an array of all the keys in the map, in alphabetical order. - `$(o.values)': fetches an array of all the values in the map, in the alphabetical order of the corresponding keys. - `$(o.map )': maps a function over the map. The function should take two arguments; the first is a field name, the second is the value of that field. The result is a new object constructed from the values returned by the function. - `o.foreach': the `foreach' form is equivalent to `map', but with altered syntax. << o.foreach(, ) >> For example, the following function prints all the fields of an object `o'. << PrintObject(o) = o.foreach(v, x) println($(v) = $(x)) >> The `export' form is valid in a `foreach' body. The following function collects just the field names of the map. << FieldNames(o) = names = o.foreach(v, x) names += $(v) export return $(names) >> There is also simpler syntax when the key is a string. The table can be defined using definitions with the form `$|key|' (the number of pipe symbols `|' is allowed to vary). << $|key 1| = value1 $||key1|key2|| = value2 # The key is key1|key2 X = $|key 1| # Define X to be the value of field $|key 1| >> The usual modifiers are also allowed. The expression `$`|key|' represents lazy evaluation of the key, and `$,|key|' is normal evaluation. 12.1.3 Number ============== Parent objects: `Object'. The `Number' object is the parent object for integers and floating-point numbers. 12.1.4 Int =========== Parent objects: `Number'. The `Int' object represents integer values. 12.1.5 Float ============= Parent objects: `Number'. The `Float' object represents floating-point numbers. 12.1.6 Sequence ================ Parent objects: `Object'. The `Sequence' object represents a generic object containing sequential elements. It provides the following methods. - `$(s.length)': the number of elements in the sequence. - `$(s.map )': maps a function over the fields in the sequence. The function should take one argument. The result is a new sequence constructed from the values returned by the function. - `s.foreach': the `foreach' form is equivalent to `map', but with altered syntax. << s.foreach() >> For example, the following function prints all the elements of the sequence. << PrintSequence(s) = s.foreach(x) println(Elem = $(x)) >> The `export' form is valid in a `foreach' body. The following function counts the number of zeros in the sequence. << Zeros(s) = count = $(int 0) s.foreach(v) if $(equal $(v), 0) count = $(add $(count), 1) export export return $(count) >> - `$(s.forall )': tests whether each element of the sequence satifies a predicate. - `$(s.exists )': tests whether the sequence contains an element that satisfies a predicate. - `$(s.sort )': sorts a sequence. The `' is a comparison function. It takes two elements `(x, y)' of the sequence, compares them, and returns a negative number if x < y, a positive number if x > y, and zero if the two elements are equal. << osh> items = $(int 0 3 -2) osh> items.forall(x => $(gt $x, 0)) - : bool = false osh> items.exists(x => $(gt $x, 0)) - : bool = true osh> items.sort($(compare)) - : Array = -2 3 0 >> 12.1.7 Array ============= Parent objects: `Sequence'. The `Array' is a random-access sequence. It provides the following additional methods. - `$(s.nth )': returns element `i' of the sequence. - `$(s.rev )': returns the reversed sequence. 12.1.8 String ============== Parent objects: `Array'. 12.1.9 Fun =========== Parent objects: `Object'. The `Fun' object provides the following methods. - `$(f.arity)': the arity if the function. 12.1.10 Rule ============= Parent objects: `Object'. The `Rule' object represents a build rule. It does not currently have any methods. 12.1.11 Target =============== Parent object: `Object'. The `Target' object contains information collected for a specific target file. - `target': the target file. - `effects': the files that may be modified by a side-effect when this target is built. - `scanner_deps': static dependencies that must be built before this target can be scanned. - `static-deps': statically-defined build dependencies of this target. - `build-deps': all the build dependencies for the target, including static and scanned dependencies. - `build-values': all the value dependencies associated with the build. - `build-commands': the commands to build the target. - `output-file': if output was diverted to a file, with one of the `--output-*' options A, this field names that file. Otherwise it is `false'. The object supports the following methods. - `find(file)': returns a Target object for the given file. Raises a `RuntimeException' if the specified target is not part of the project. - `find-optional(file)': returns a `Target' object for the given file, or `false' if the file is not part of the project. NOTE: the information for a target is constructed dynamically, so it is possible that the `Target' object for a node will contain different values in different contexts. The easiest way to make sure that the `Target' information is complete is to compute it within a rule body, where the rule depends on the target file, or the dependencies of the target file. 12.1.12 Node ============= Parent objects: `Object'. The `Node' object is the parent object for files and directories. It supports the following operations. - `$(node.stat)': returns a `stat' object for the file. If the file is a symbolic link, the `stat' information is for the destination of the link, not the link itself. - `$(node.lstat)': returns a `stat' object for the file or symbolic link. - `$(node.unlink)': removes the file. - `$(node.rename )': renames the file. - `$(node.link )': creates a hard link `' to this file. - `$(node.symlink )': create a symbolic link `' to this file. - `$(node.chmod )': change the permission of this file. - `$(node.chown , )': change the owner and group id of this file. 12.1.13 File ============= Parent objects: `Node'. The file object represents the name of a file. 12.1.14 Dir ============ Parent objects: `Node'. The `Dir' object represents the name of a directory. 12.1.15 Channel ================ Parent objects: `Object'. A `Channel' is a generic IO channel. It provides the following methods. - `$(o.close)': close the channel. - `$(o.name)': returns the file name associated with the channel. 12.1.16 InChannel ================== Parent objects: `Channel'. A `InChannel' is an input channel. The variable `stdin' is the standard input channel. It provides the following methods. - `$(InChannel.fopen )': open a new input channel. - `$(InChannel.of-string )': open a new input channel, using a string as input. - `$(o.read )': reads the given number of characters from the channel - `$(o.readln)': reads a line from the channel 12.1.17 OutChannel =================== Parent object: `Channel'. A `OutChannel' is an output channel. The variables `stdout' and `stderr' are the standard output and error channels. It provides the following methods. - `$(OutChannel.fopen )': open a new output channel. - `$(OutChannel.string)': open a new output channel, writing to a string. - `$(OutChannel.to-string)': get the current string of output, for an output channel created as `OutChannel.open-string'. - `$(OutChannel.append )': opens a new output channel, appending to the file. - `$(c.flush)': flush the output channel. - `$(c.print )': print a string to the channel. - `$(c.println )': print a string to the channel, followed by a line terminator. 12.1.18 Location ================= Parent objects: `Location'. The `Location' object represents a location in a file. 12.1.19 Exception ================== Parent objects: `Object'. The `Exception' object is used as the base object for exceptions. It has no fields. 12.1.20 RuntimeException ========================= Parent objects: `Exception'. The `RuntimeException' object represents an exception from the runtime system. It has the following fields. - `position': a string representing the location where the exception was raised. - `message': a string containing the exception message. 12.1.21 UnbuildableException ============================= Parent objects: `Exception'. The `UnbuildableException' object should be used to signal that a target is not buildable. It will be caught by functions such as 'target-exists'. This exception has the following fields: - `target': indicates which target is not buildable. - `message': a string containing the exception message. 12.1.22 Shell ============== Parent objects: `Object'. The `Shell' object contains the collection of builtin functions available as shell commands. You can define aliases by extending this object with additional methods. All methods in this class are called with one argument: a single array containing an argument list. - `echo' The `echo' function prints its arguments to the standard output channel. - `jobs' The `jobs' method prints the status of currently running commands. - `cd' The `cd' function changes the current directory. Note that the current directory follows the usual scoping rules. For example, the following program lists the files in the `foo' directory, but the current directory is not changed. << section echo Listing files in the foo directory... cd foo ls echo Listing files in the current directory... ls >> - `bg' The `bg' method places a job in the background. The job is resumed if it has been suspended. - `fg' The `fg' method brings a job to the foreground. The job is resumed if it has been suspended. - `stop' The `stop' method suspends a running job. - `wait' The `wait' function waits for a running job to terminate. It is not possible to wait for a suspended job. The job is not brought to the foreground. If the `wait' is interrupted, the job continues to run in the background. - `kill' The `kill' function signal a job. `kill [signal] '. The signals are either numeric, or symbolic. The symbolic signals are named as follows. ABRT, ALRM, HUP, ILL, KILL, QUIT, SEGV, TERM, USR1, USR2, CHLD, STOP, TSTP, TTIN, TTOU, VTALRM, PROF. - `exit' The `exit' function terminates the current session. - `which', `where' See the documentation for the corresponding functions. - `rehash' Reset the search path. - `ln-or-cp' src dst Links or copies src to dst, overwriting dst. Namely, `ln-or-cp' would first delete the dst file (unless it is a directory), if it exists. Next it would try to create a symbolic link dst poiting to src (it will make all the necessary adjustmnents of relative paths). If symbolic link can not be created (e.g. the OS or the filesystem does not support symbolic links), it will try to create a hard link. If that fails too, it will try to forcibly copy src to dst. - `history' Print the current command-line history. - `digest' Print the digests of the given files. - Win32 functions. Win32 doesn't provide very many programs for scripting, except for the functions that are builtin to the DOS `cmd.exe'. The following functions are defined on Win32 and only on Win32. On other systems, it is expected that these programs already exist. - `grep' << grep [-q] [-n] pattern files... >> The `grep' function calls the omake `grep' function. - Internal versions of standard system commands. By default, omake uses internal versions of the following commands: `cp', `mv', `cat', `rm', `mkdir', `chmod', `test', `find'. If you really want to use the standard system versions of these commands, set the `USE_SYSTEM_COMMANDS' as one of the first definitions in your `OMakeroot' file. - `pwd' << pwd >> The `pwd' alias would print the absolute path to current directory. - `mkdir' << mkdir [-m ] [-p] files >> The `mkdir' function is used to create directories. The -verb+-m+ option can be used to specify the permission mode of the created directory. If the `-p' option is specified, the full path is created. - `cp' - `mv' << cp [-f] [-i] [-v] src dst cp [-f] [-i] [-v] files dst mv [-f] [-i] [-v] src dst mv [-f] [-i] [-v] files dst >> The `cp' function copies a `src' file to a `dst' file, overwriting it if it already exists. If more than one source file is specified, the final file must be a directory, and the source files are copied into the directory. -f Copy files forcibly, do not prompt. -i Prompt before removing destination files. -v Explain what is happening. - `rm' << rm [-f] [-i] [-v] [-r] files rmdir [-f] [-i] [-v] [-r] dirs >> The `rm' function removes a set of files. No warnings are issued if the files do not exist, or if they cannot be removed. Options: -f Forcibly remove files, do not prompt. -i Prompt before removal. -v Explain what is happening. -r Remove contents of directories recursively. - `chmod' << chmod [-r] [-v] [-f] mode files >> The `chmod' function changes the permissions on a set of files or directories. This function does nothing on Win32. The `mode' may be specified as an octal number, or in symbolic form `[ugoa]*['-=][rwxXstugo]+. See the man page for `chmod' for details. Options: -r Change permissions of all files in a directory recursively. -v Explain what is happening. -f Continue on errors. - `cat' << cat files... >> The `cat' function prints the contents of the files to stdout - `test' `test' expression `[' expression +]+ `[ --help' `[ --version' See the documentation for the 'test' function. - `find' `find' expression See the documentation for the 'find' function. Chapter 13 Build functions and utilities ******************************************* 13.1 Builtin .PHONY targets *=*=*=*=*=*=*=*=*=*=*=*=*=*= The complete set of builtin `.PHONY' targets include the following. .PHONY Declares new phony targets (Section 8.10). .DEFAULT Declare the default build targets (Section 8.7). .SUBDIRS Include a directory as part of the project (Section 8.8). .SCANNER Define a dependency scanner (Section 8.8). .INCLUDE Include a file (Section 8.9). .ORDER Define a file-dependency ordering rule (Section 10.3.6). .BUILD_BEGIN Commands to be executed at the beginning of a build. .BUILD_SUCCESS Commands to be executed if the build is successful. .BUILD_FAILURE Commands to be executed if the build fails. The `.BUILD' targets can be used to specify commands to be executed at the beginning and end of the build. The `.BUILD_BEGIN' target is built at the beginning of a project build, and one of `.BUILD_FAILURE' or `.BUILD_SUCCESS' is executed when the build terminates. For example, the following set of rules simply print additional messages about the status of the build. << .BUILD_BEGIN: echo Build starting .BUILD_SUCCESS: echo The build was successful .BUILD_FAILURE: println($"The build failed: $(length $(find-build-targets Failed)) targets could not be built") >> Another common use is to define notifications to be performed when the build completes. For example, the following rule will create a new X terminal displaying the summary of the build (using the 'BUILD_SUMMARY' variable). << .BUILD_FAILURE: xterm -e vi $(BUILD_SUMMARY) >> If you do not wish to add these rules directly to your project (which is probably a good idea if you work with others), you can define them in your `.omakerc' (see Section A.8). The 'find-build-targets' function is useful for obtaining a firther summary of the build. Note that when output diversions are in effect (with the `--output-*' options --- see Chapter A), any output produced by the commands is copied to a file. The name of the file is specified by the `output-file' field of the 'Target' object. You may find this useful in defining custom build summaries. 13.2 Options and versioning *=*=*=*=*=*=*=*=*=*=*=*=*=*= 13.2.1 OMakeFlags ================== << OMakeFlags(options) options : String >> The `OMakeFlags' function is used to set `omake' options from within OMakefiles. The options have exactly the same format as options on the command line. For example, the following code displays the progress bar unless the `VERBOSE' environment variable is defined. << if $(not $(defined-env VERBOSE)) OMakeFlags(-S --progress) export >> 13.2.2 OMakeVersion ==================== << OMakeVersion(version1) OMakeVersion(version1, version2) version1, version2 : String >> The `OMakeVersion' function is used for version checking in OMakefiles. It takes one or two arguments. In the one argument form, if the omake version number is less than `', then an exception is raised. In the two argument form, the version must lie between `version1' and `version2'. 13.2.3 cmp-versions ==================== << $(cmp-versions version1, version2) version1, version2 : String >> The `cmp-versions\' functions can be used to compare arbitrary version strings. It returns 0 when the two version strings are equal, a negative number when the first string represents an earlier version, and a positive number otherwise. 13.2.4 DefineCommandVars ========================= << DefineCommandVars() >> The `DefineCommandVars' function redefines the variables passed on the commandline. Variables definitions are passed on the command line in the form `name=value'. This function is primarily for internal use by omake to define these variables for the first time. 13.3 Examining the dependency graph *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= 13.3.1 dependencies, dependencies-all, dependencies-proper =========================================================== << $(dependencies targets) : File Array $(dependencies-all targets) : File Array $(dependencies-proper targets) : File Array targets : File Array raises RuntimeException >> The `dependencies' function returns the set of immediate dependencies of the given targets. This function can only be used within a rule body and all the arguments to the `dependency' function must also be dependencies of this rule. This restriction ensures that all the dependencies are known when this function is executed. The `dependencies-all' function is similar, but it expands the dependencies recursively, returning all of the dependencies of a target, not just the immediate ones. The `dependencies-proper' function returns all recursive dependencies, except the dependencies that are leaf targets. A leaf target is a target that has no dependencies and no build commands; a leaf target corresponds to a source file in the current project. In all three functions, files that are not part of the current project are silently discarded. All three functions will return phony and scanner targets along with the "real" ones. One purpose of the `dependencies-proper' function is for "clean" targets. For example, one way to delete all intermediate files in a build is with a rule that uses the `dependencies-proper'. Note however, that the rule requires building the project before it can be deleted. << .PHONY: clean APP = ... # the name of the target application clean: $(APP) rm -f $(dependencies-proper $(APP)) >> Also note that the `dependencies-proper' function will return the phony and scanner targets in addition to real one. For other (possibly better) alternatives, see Section 10.3.3 and 'filter-proper-targets' function. 13.3.2 target ============== << $(target targets) : Target Array targets : File Sequence raises RuntimeException >> The `target' function returns the Target object associated with each of the targets. See the `Target' object for more information. 13.3.3 find-build-targets ========================== << $(find-build-targets tag) : Target Array tag : Succeeded | Failed >> The `find-build-targets' allow the results of the build to be examined. The `tag' must specifies which targets are to be returned; the comparison is case-insensitive. Succeeded The list of targets that were built successfully. Failed The list of targets that could not be built. These are used mainly in conjuction with the `.BUILD_SUCCESS' (Section 13.1) and `.BUILD_FAILURE' (Section 13.1) phony targets. For example, adding the following to your project `OMakefile' will print the number of targets that failed (if the build failed). << .BUILD_FAILURE: echo "Failed target count: $(length $(find-build-targets Failed))" >> 13.3.4 project-directories =========================== << $(project-directories) : Dir Array >> The `project-directories' function returns the list of all directories that are considered to be part of the project. To get the complete directory list, this function should be called from within a rule body. 13.3.5 rule ============ The `rule' function is called whenever a build rule is defined. It is unlikely that you will need to redefine this function, except in very exceptional cases. << rule(multiple, target, pattern, sources, options, body) : Rule multiple : String target : Sequence pattern : Sequence sources : Sequence options : Array body : Body >> The `rule' function is called when a rule is evaluated. multiple A Boolean value indicating whether the rule was defined with a double colon `::'. target The sequence of target names. pattern The sequence of patterns. This sequence will be empty for two-part rules. sources The sequence of dependencies. options An array of options. Each option is represented as a 'Map' object associating each specified option with a value. body The body expression of the rule. Consider the following rule. << target: pattern: sources :name1: option1 :name2: option2 expr1 expr2 >> This expression represents the following function call, where square brackets are used to indicate arrays, and the curly brackets represent a 'Map' object. << rule(false, target, pattern, sources, { $|:name1:| = option1; $|:name2:| = option2 } [expr1; expr2]) >> 13.3.6 build ============= << build(targets : File Array) : bool >> Build the given targets. The value is true iff the build was successful. This function can be used only in `osh'. 13.4 The OMakeroot file *=*=*=*=*=*=*=*=*=*=*=*= The standard OMakeroot file defines the functions are rules for building standard projects. 13.4.1 Variables ================= ROOT The root directory of the current project. CWD The current working directory (the directory is set for each OMakefile in the project). EMPTY The empty string. STDROOT The name of the standard installed OMakeroot file. ABORT_ON_COMMAND_ERROR If set to true, the construction of a target should be aborted whenever one of the commands to build it fail. This defaults to true, and should normally be left that way. SCANNER_MODE This variable should be defined as one of four values (defaults to `enabled'). enabled Allow the use of default `.SCANNER' rules. Whenever a rule does not specify a `:scanner:' dependency explicitly, try to find a `.SCANNER' with the same target name. disabled Never use default `.SCANNER' rules. warning Allow the use of default `.SCANNER' rules, but print a warning whenever one is selected. error Do not allow the use of default `.SCANNER' rules. If a rule does not specify a `:scanner:' dependency, and there is a default `.SCANNER' rule, the build will terminate abnormally. 13.4.2 System variables ======================== INSTALL The command to install a program (`install' on `Unix', `cp' on `Win32'). PATHSEP The normal path separator (`:' on `Unix', `;' on `Win32'). DIRSEP The normal directory separator (`/' on `Unix', `\' on `Win32'). EXT_OBJ File suffix for an object file (default is `.o' on `Unix', and `.obj' on `Win32'). EXT_LIB File suffix for a static library (default is `.a' on `Unix', and `.lib' on `Win32'). EXT_DLL File suffix for a shared library (default is `.so' on `Unix', and `.dll' on `Win32'). EXT_ASM File suffix for an assembly file (default is `.s' on `Unix', and `.asm' on `Win32'). EXE File suffix for executables (default is empty for `Unix', and `.exe' on `Win32' and `Cygwin'). 13.5 Building C and C++ code *=*=*=*=*=*=*=*=*=*=*=*=*=*=* OMake provides extensive support for building C and C++ programs. In order to use the functions defined in this section, you need to make sure the line <> is present in your `OMakeroot' file. 13.5.1 Autoconfiguration variables =================================== These variables will get defined based on the "autoconf-style" `static.' tests executed when you run OMake for the first time. You can use them to configure your project accordingly, and you should not redefine them. You can use the `--configure' command line option (Section A.3.9) to force re-execution of all the tests. A different set of autoconfiguration tests is performed depending on the build environment involved --- one set of tests would be performed in a `Win32' environment, and another --- in a Unix-like environment (including Linux, OS X and Cygwin). 13.5.1.1 Unix-like systems --------------------------- GCC_FOUND A boolean flag specifying whether the `gcc' binary was found in your path. GXX_FOUND A boolean flag specifying whether the `g++' binary was found in your path. 13.5.1.2 Win32 --------------- CL_FOUND A boolean flag specifying whether the `cl' binary was found in your path. LIB_FOUND A boolean flag specifying whether the `lib' binary was found in your path. 13.5.2 C and C++ configuration variables ========================================= The following variables can be redefined in your project. CC The name of the C compiler (on `Unix' it defaults to `gcc' when `gcc' is present and to `cc' otherwise; on `Win32' defaults to `cl /nologo'). CXX The name of the C++ compiler (on `Unix' it defaults to `gcc' when `gcc' is present and to `c'++ otherwise; on `Win32' defaults to `cl /nologo'). CPP The name of the C preprocessor (defaults to `cpp' on `Unix', and `cl /E' on `Win32'). CFLAGS Compilation flags to pass to the C compiler (default empty on `Unix', and `/DWIN32' on `Win32'). CXXFLAGS Compilation flags to pass to the C++ compiler (default empty on `Unix', and `/DWIN32' on `Win32'). INCLUDES Additional directories that specify the search path to the C and C++ compilers (default is `.'). The directories are passed to the C and C++ compilers with the `-I' option. The include path with `-I' prefixes is defined in the `PREFIXED_INCLUDES' variable. LIBS Additional libraries needed when building a program (default is empty). CCOUT The option to use for specifying the output file in C and C++ compilers (defaults to `-o' on `Unix' and `/Fo' on `Win32'). AS The name of the assembler (defaults to `as' on `Unix', and `ml' on `Win32'). ASFLAGS Flags to pass to the assembler (default is empty on `Unix', and `/c /coff' on `Win32'). ASOUT The option string that specifies the output file for `AS' (defaults to `-o' on `Unix' and `/Fo' on `Win32'). AR The name of the program to create static libraries (defaults to `ar cq' on `Unix', and `lib' on `Win32'). LD The name of the linker (defaults to `ld' on `Unix', and `cl' on `Win32'). LDFLAGS Options to pass to the linker (default is empty). LDFLAGS_DLL Options to pass to the linker when compiling a shared library (defaults to `-shared' on `Unix' and `/DLL' on `Win32'). LDOUT The option to use for specifying the output file in C and C++ linkers (defaults to `-o' on `Unix' and `/Fe' on `Win32'). YACC The name of the `yacc' parser generator (default is `yacc' on `Unix', empty on `Win32'). LEX The name of the `lex' lexer generator (default is `lex' on `Unix', empty on `Win32'). 13.5.3 Generated C files ========================= Because the C scanners do not normally know anything about generated source files (such as generated header files), these files may need to be created before running the scanner. 13.5.3.1 CGeneratedFiles, LocalCGeneratedFiles ----------------------------------------------- <> The `CGeneratedFiles' and `LocalCGeneratedFiles' functions specify files that need to be generated before any C files are scanned for dependencies. For example, if `config.h' and `inputs.h' are both generated files, specify: <> The `CGeneratedFiles' function is global --- its arguments will be generated before any C files anywhere in the project are scanned for dependencies. The `LocalCGeneratedFiles' function follows the normal scoping rules of OMake. 13.5.4 Building C programs and Libraries ========================================= 13.5.4.1 StaticCLibrary, DynamicCLibrary ----------------------------------------- The `StaticCLibrary' builds a static library and the `DynamicCLibrary' function builds a shared library (DLL). <, ) DynamicCLibrary(, ) >> The `' does not include the library suffix, and The `' list does not include the object suffix. These are obtained from the 'EXT_LIB' ('EXT_DLL') and 'EXT_OBJ' variables. This function returns the library filename. The following command builds the library `libfoo.a' from the files `a.o b.o c.o' on `Unix', or the library `libfoo.lib' from the files `a.obj b.obj c.obj' on `Win32'. <> CDLL_IMPLIES_STATIC If the `CDLL_IMPLIES_STATIC' variable is enabled (this is default on `Win32'), all the `DynamicC' functions would assume that creating a shared library automatically created a static one. 13.5.4.2 StaticCLibraryCopy, DynamicCLibraryCopy ------------------------------------------------- The `StaticCLibraryCopy' and `DynamicCLibraryCopy' functions copy a library to an install location. <, , ) DynamicCLibraryCopy(, , ) >> The `' is the name of a target (typically a `.PHONY' target); the `' is the installation directory, and `' is the library to be copied (without the library suffix). This function returns the filename of the library in the target directory. For example, the following code copies the library `libfoo.a' to the `/usr/lib' directory. <<.PHONY: install StaticCLibraryCopy(install, /usr/lib, libfoo) >> 13.5.4.3 StaticCLibraryInstall, DynamicCLibraryInstall ------------------------------------------------------- The `StaticCLibraryInstall' and `DynamicCLibraryInstall' functions build a library, and set the install location in one step. Return the filename of the library in the target directory. <, , , ) DynamicCLibraryInstall(, , , ) >> <> 13.5.4.4 StaticCObject, StaticCObjectCopy, StaticCObjectInstall ---------------------------------------------------------------- These functions mirror the `StaticCLibrary', `StaticCLibraryCopy', and `StaticCLibraryInstall' functions, but they build an object file (a `.o' file on `Unix', and a `.obj' file on `Win32'). 13.5.4.5 CProgram ------------------ The `CProgram' function builds a C program from a set of object files and libraries. `CProgram(, )' The `' argument specifies the name of the program to be built; the `' argument specifies the files to be linked. The function returns the filename of the executable. Additional options can be passed through the following variables. CFLAGS Flags used by the C compiler during the link step. LDFLAGS Flags to pass to the loader. LIBS Additional libraries to be linked. For example, the following code specifies that the program `foo' is to be produced by linking the files `bar.o' and `baz.o' and libraries `libfoo.a'. <
> 13.5.4.6 CProgramCopy ---------------------- The `CProgramCopy' function copies a file to an install location. `CProgramCopy(, , )' <> 13.5.4.7 CProgramInstall ------------------------- The `CProgramInstall' function specifies a program to build, and a location to install, simultaneously. `CProgramInstall(, , , )' <
> 13.5.4.8 CXXProgram, CXXProgramInstall --------------------------------------- The `CXXProgram' and `CXXProgramInstall' functions are equivalent to their C counterparts, except that would use `$(CXX)' and `$(CXXFLAGS)' for linking instead of `$(CC)' and `$(CFLAGS)'. 13.5.4.9 StaticCXXLibrary, StaticCXXLibraryCopy, ------------------------------------------------- StaticCXXLibraryInstall, DynamicCXXLibrary, DynamicCXXLibraryCopy, ------------------------------------------------------------------ DynamicCXXLibraryInstall ------------------------ Similarly, the six `CXXLibrary' functions the C++ equivalents of the corresponding `CLibrary' functions. 13.6 Building OCaml code *=*=*=*=*=*=*=*=*=*=*=*=* OMake provides extensive support for building OCaml code, including support for tools like `ocamlfind', `ocamlyacc' and `menhir'. In order to use the functions defined in this section, you need to make sure the line <> is present in your `OMakeroot' file. 13.6.1 Autoconfiguration variables for OCaml compilation ========================================================= These variables will get defined based on the "autoconf-style" tests executed when you run OMake for the first time. You can use them to configure your project accordingly, and you should not redefine them. You can use the `--configure' command line option (Section A.3.9) to force re-execution of all the tests. OCAMLOPT_EXISTS True when `ocamlopt' (or `ocamlopt.opt') is available on your machine. OCAMLFIND_EXISTS True when the ocamlfind is available on your machines. OCAMLDEP_MODULES_AVAILABLE True when a version of `ocamldep' that understands the `-modules' option is available on your machine. MENHIR_AVAILABLE True when the Menhir parser-generator is available on your machine. 13.6.2 Configuration variables for OCaml compilation ===================================================== The following variables can be redefined in your project. USE_OCAMLFIND Whether to use the `ocamlfind' utility (default `false') OCAMLC The OCaml bytecode compiler (default `ocamlc.opt' if it exists and `USE_OCAMLFIND' is not set, otherwise `ocamlc'). OCAMLOPT The OCaml native-code compiler (default `ocamlopt.opt' if it exists and `USE_OCAMLFIND' is not set, otherwise `ocamlopt'). CAMLP4 The `camlp4' preprocessor (default `camlp4'). OCAMLLEX The OCaml lexer generator (default `ocamllex'). OCAMLLEXFLAGS The flags to pass to `ocamllex' (default `-q'). OCAMLYACC The OCaml parser generator (default `ocamlyacc'). OCAMLYACCFLAGS Additional options to pass to `$(OCAMLYACC)'. OCAMLDEP The OCaml dependency analyzer (default `ocamldep'). OCAMLDEP_MODULES The OCaml dependency analyzer that understands the `-module' option (default `ocamldep', if `ocamldep -modules' works, or `ocamlrun ocamldep-omake', if `ocamlrun ocamldep-omake -modules' works, and empty when neither works). OCAMLDEP_MODULES_ENABLED Instead of using `OCAMLDEP' in a traditional `make'-style fashion, run `$(OCAMLDEP_MODULES) -modules' and then postprocess the output internally to discover all the relevant generated `.ml' and `.mli' files. See Section 13.6.5 for more information on interactions between OMake, `OCAMLDEP' and generated files. Set to `$(OCAMLDEP_MODULES_AVAILABLE)' by default. OCAMLMKTOP The OCaml toploop compiler (default `ocamlmktop'). OCAMLLINK The OCaml bytecode linker (default `$(OCAMLC)'). OCAMLOPTLINK The OCaml native-code linker (default `$(OCAMLOPT)'). OCAMLINCLUDES Search path to pass to the OCaml compilers (default `.'). The search path with the `-I' prefix is defined by the `PREFIXED_OCAMLINCLUDES' variable. OCAMLFIND The `ocamlfind' utility (default `ocamlfind' if `USE_OCAMLFIND' is set, otherwise empty). OCAMLFINDFLAGS The flags to pass to `ocamlfind' (default empty, `USE_OCAMLFIND' must be set). OCAMLPACKS Package names to pass to `ocamlfind' (`USE_OCAMLFIND' must be set). BYTE_ENABLED Flag indicating whether to use the bytecode compiler (default `true', when no `ocamlopt' found, `false' otherwise). NATIVE_ENABLED Flag indicating whether to use the native-code compiler (default `true', when ocamlopt is found, `false' otherwise). Both `BYTE_ENABLED' and `NATIVE_ENABLED' can be set to true; at least one should be set to true. MENHIR_ENABLED Define this as `true' if you wish to use `menhir' instead of `ocamlyacc' (default `false'). 13.6.3 OCaml command flags =========================== The following variables specify additional options to be passed to the OCaml tools. OCAMLDEPFLAGS Flags to pass to `OCAMLDEP' and `OCAMLDEP_MODULES'. OCAMLPPFLAGS Flags to pass to `CAMLP4'. OCAMLCFLAGS Flags to pass to the byte-code compiler (default `-g'). OCAMLOPTFLAGS Flags to pass to the native-code compiler (default empty). OCAMLFLAGS Flags to pass to either compiler (default `-warn-error A'). OCAML_BYTE_LINK_FLAGS Flags to pass to the byte-code linker (default empty). OCAML_NATIVE_LINK_FLAGS Flags to pass to the native-code linker (default empty). OCAML_LINK_FLAGS Flags to pass to either linker. MENHIR_FLAGS Additional flags to pass to `menhir'. 13.6.4 Library variables ========================= The following variables are used during linking. OCAML_LIBS Libraries to pass to the linker. These libraries become dependencies of the link step. OCAML_OTHER_LIBS Additional libraries to pass to the linker. These libraries are not included as dependencies to the link step. Typical use is for the OCaml standard libraries like `unix' or `str'. OCAML_CLIBS C libraries to pass to the linker. OCAML_LIB_FLAGS Extra flags for the library linker. ABORT_ON_DEPENDENCY_ERRORS OCaml linker requires the OCaml files to be listed in dependency order. Normally, all the functions presented in this section will automatically sort the list of OCaml modules passed in as the `' argument. However, this variable is set to `true', the order of the files passed into these function will be left as is, but OMake will abort with an error message if the order is illegal. 13.6.5 Generated OCaml Files ============================= As of OCaml version 3.09.2, the standard `ocamldep' scanner is "broken". The main issue is that it finds only those dependencies that already exist. If `foo.ml' contains a dependency on `Bar', <> then the default `ocamldep' will only find the dependency if a file `bar.ml' or `bar.ml' exists in the include path. It will not find (or print) the dependency if, for example, only `bar.mly' exists at the time `ocamldep' is run, even though `bar.ml' and `bar.mli' can be generated from `bar.mly'. OMake currently provides two methods for addressing this problem --- one that requires manually specifying the generated files, and an experimental method for discovering such "hidden" dependencies automatically. The 'OCAMLDEP_MODULES_ENABLED' variable controls which method is going to be used. When this variable is false, the manual specifications are expected and when it is true, the automated discovery will be attempted. 13.6.5.1 OCamlGeneratedFiles, LocalOCamlGeneratedFiles ------------------------------------------------------- <> When the 'OCAMLDEP_MODULES_ENABLED' variable variable is set to `false', the `OCamlGeneratedFiles' and `LocalOCamlGeneratedFiles' functions specify files that need to be generated before any OCaml files are scanned for dependencies. For example, if `parser.ml' and `lexer.ml' are both generated files, specify: <> The `OCamlGeneratedFiles' function is global --- its arguments will be generated before any OCaml files anywhere in the project are scanned for dependencies. The `LocalOCamlGeneratedFiles' function follows the normal scoping rules of OMake. These functions have no effect when the 'OCAMLDEP_MODULES_ENABLED' variable is true. 13.6.5.2 Automatic discovery of generated files during dependency ------------------------------------------------------------------ analysis -------- Having to specify the generated files manualy when OMake could discover them automatically is obviously suboptimal. To address this, we tell `ocamldep' to only find the free module names in a file and then post-process the results internally. This automated functionality is enabled when the 'OCAMLDEP_MODULES_ENABLED' variable is set to `true'. By default, 'OCAMLDEP_MODULES_ENABLED' variable will be set to `$(OCAMLDEP_MODULES_AVAILABLE)'. Note that the `ocamldep' functionality this relies upon is only included in the OCaml version 3.10 and higher. Temporarily, we distribute a bytecode version `ocamldep-omake' of the appropriately modified `ocamldep'. The appropriate `ocamldep' will be discovered automatically --- see and the 'OCAMLDEP_MODULES_AVAILABLE' and 'OCAMLDEP_MODULES' variables will be set accordingly. 13.6.6 Using the Menhir parser generator ========================================= Menhir is a parser generator that is mostly compatible with `ocamlyacc', but with many improvements. A few of these are listed here (excerpted from the Menhir home page http://cristal.inria.fr/~fpottier/menhir/). - Menhir's explanations are believed to be understandable by mere humans. - Menhir allows grammar specifications to be split over multiple files. It also allows several grammars to share a single set of tokens. - Menhir is able to produce parsers that are parameterized by Objective Caml modules. - Added by jyh With the `--infer' option, Menhir can typecheck the semantic actions in your grammar at generation time. What do you need to do to use Menhir instead of `ocamlyacc'? 1. Place the following definition before the relevant section of your project (or at the top of your project `OMakefile' if you want to use Menhir everywhere). << MENHIR_ENABLED = true >> 2. Optionally, add any desired Menhir options to the `MENHIR_FLAGS' variable. << MENHIR_FLAGS += --infer >> With this setup, any file with a `.mly' suffix will be compiled with Menhir. If your grammar is split across several files, you need to specify it explicitly, using the `MenhirMulti' function. << MenhirMulti(target, sources) target : filename, without suffix sources : the files that define the grammar, without suffixes >> For example, if you want to generate the parser files `parse.ml' and `parse.mli', from the grammar specified in files `a.mly' and `b.mly', you would use the following. << MenhirMulti(parse, a b) >> 13.6.6.1 OCamlLibrary ---------------------- The `OCamlLibrary' function builds an OCaml library. `OCamlLibrary(, )' The `' and `' are listed without suffixes. This function returns the list of all the targets that it defines the rules for (including the `$(name)$(EXT_LIB)' file when `NATIVE_ENABLED' is set). The following code builds the `libfoo.cmxa' library from the files `foo.cmx' and `bar.cmx' (if `NATIVE_ENABLED' is set), and `libfoo.cma' from `foo.cmo' and `bar.cmo' (if `BYTE_ENABLED' is set). <> 13.6.6.2 OCamlPackage ---------------------- The `OCamlPackage' function builds an OCaml package. `OCamlPackage(, )' The `' and `' are listed without suffixes. The `' must have been compiled with the `-for-pack ' flag to the OCaml compiler. This function returns the list of all the targets that it defines the rules for (including the `$(name)$(EXT_LIB)' file when `NATIVE_ENABLED' is set). The following code builds the `libfoo.cmx' package from the files `package.cmx' and `bar.cmx' (if `NATIVE_ENABLED' is set), and `package.cmo' from `foo.cmo' and `bar.cmo' (if `BYTE_ENABLED' is set). <> 13.6.6.3 OCamlLibraryCopy -------------------------- The `OCamlLibraryCopy' function copies a library to an install location. `OCamlLibraryCopy(, , , )' The `' specify additional interface files to be copied if the `INSTALL_INTERFACES' variable is true. 13.6.6.4 OCamlLibraryInstall ----------------------------- The `OCamlLibraryInstall' function builds a library and copies it to an install location in one step. `OCamlLibraryInstall(, , , )' 13.6.6.5 OCamlProgram ---------------------- The `OCamlProgram' function builds an OCaml program. It returns the array with all the targets for which it has defined the rules (`$(name)$(EXE)' and `$(name).run' and/or `$(name).opt', depending on the `NATIVE_ENABLED' and `BYTE_ENABLED' variables). `OCamlProgram(, )' Additional variables used: 'OCAML_LIBS' Additional libraries passed to the linker, without suffix. These files become dependencies of the target program. 'OCAML_OTHER_LIBS' Additional libraries passed to the linker, without suffix. These files do not become dependencies of the target program. 'OCAML_CLIBS' C libraries to pass to the linker. 'OCAML_BYTE_LINK_FLAGS' Flags to pass to the bytecode linker. 'OCAML_NATIVE_LINK_FLAGS' Flags to pass to the native code linker. 'OCAML_LINK_FLAGS' Flags to pass to both linkers. 13.6.6.6 OCamlProgramCopy -------------------------- The `OCamlProgramCopy' function copies an OCaml program to an install location. `OCamlProgramCopy(, , )' Additional variables used: NATIVE_ENABLED If the 'NATIVE_ENABLED' variable is set, the native-code executable is copied; otherwise the byte-code executable is copied. 13.6.6.7 OCamlProgramInstall ----------------------------- The `OCamlProgramInstall' function builds a programs and copies it to an install location in one step. `OCamlProgramInstall(, , , )' 13.7 Building LaTeX files *=*=*=*=*=*=*=*=*=*=*=*=*= OMake provides support for building LaTeX documents, including support for automatically running BiBTex and for producing PostScript and PDF files. In order to use the functions defined in this section, you need to make sure the line <> is present in your `OMakeroot' file. 13.7.1 Configuration variables =============================== The following variables can be modified in your project. LATEX The LaTeX command (default `latex'). TETEX2_ENABLED Flag indicating whether to use advanced LaTeX options present in TeTeX v.2 (default value is determined the first time omake reads `LaTeX.src' and depends on the version of LaTeX you have installed). LATEXFLAGS The LaTeX flags (defaults depend on the `TETEX2_ENABLED' variable) BIBTEX The BibTeX command (default `bibtex'). MAKEINDEX The command to build an index (default `makeindex'). DVIPS The `.dvi' to PostScript converter (default `dvips'). DVIPSFLAGS Flags to pass to `dvips' (default `-t letter'). DVIPDFM The `.dvi' to `.pdf' converter (default `dvipdfm'). DVIPDFMFLAGS Flags to pass to `dvipdfm' (default `-p letter'). PDFLATEX The `.latex' to `.pdf' converter (default `pdflatex'). PDFLATEXFLAGS Flags to pass to pdflatex (default is `$`(LATEXFLAGS)'). USEPDFLATEX Flag indicating whether to use pdflatex instead of dvipdfm to generate the `.pdf' document (default `false'). 13.7.2 Building LaTeX documents ================================ 13.7.2.1 LaTeXDocument ----------------------- The `LaTeXDocument' produces a LaTeX document. `LaTeXDocument(, )' The document `' and `' are listed without suffixes. This function returns the filenames for the generated `.ps' and `.pdf' files. Additional variables used: TEXINPUTS The LaTeX search path (an array of directories, default is taken from the `TEXINPUTS' environment variable). TEXDEPS Additional files this document depends on. TEXVARS An array of names of the environment variables that are to be updated based on the value of OMake's `TEXINPUTS' variable. Defaults to `TEXINPUTS' `BIBINPUTS' `BSTINPUTS'. 13.7.2.2 TeXGeneratedFiles, LocalTeXGeneratedFiles --------------------------------------------------- <> The `TeXGeneratedFiles' and `LocalTeXGeneratedFiles' functions specify files that need to be generated before any LaTeXfiles are scanned for dependencies. For example, if `config.tex' and `inputs.tex' are both generated files, specify: << TeXGeneratedFiles(config.tex inputs.tex) >> The `TeXGeneratedFiles' function is global --- its arguments will be generated before any TeX files anywhere in the project are scanned for dependencies. The `LocalTeXGeneratedFiles' function follows the normal scoping rules of OMake. 13.7.2.3 LaTeXDocumentCopy --------------------------- The `LaTeXDocumentCopy' copies the document to an install location. `LaTeXDocumentCopy(, , , )' This function copies just the `.pdf' and `.ps' files. 13.7.2.4 LaTeXDocumentInstall ------------------------------ The `LaTeXDocumentInstall' builds a document and copies it to an install location in one step. `LaTeXDocumentInstall(, , , , )' Chapter 14 Autoconfiguration functions and variables ******************************************************* OMake standard library provides a number of functions and variables intended to help one write build specifications that need to be capable of autoconfiguring itself to adjust to different build environments. 14.1 General-purpose autoconfiguration functions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* The following general-purpose functions can be used to discover the properties of your build environment in a fashion similar to the one used by GNU autoconf tool you may be familiar with. It is recommended that these function be used from an appropriate `static.' block (see Section 4.14 for more information). In order to use the following general-purpose functions, you need to have the line <> included in your `OMakefile' or `OMakeroot'. 14.1.1 ConfMsgChecking, ConfMsgResult ====================================== <) ... ConfMsgResult() >> The `ConfMsgChecking' function output message of the form `--- Checking ... ' without any trailing newline. After the test advertized by `ConfMsgChecking' is performed, the `ConfMsgResult' function should be used to output the result. In certain cases users may want to redefine these function --- for example, to use a different output formatting and/or to copy the messages to a log file. Example: <> 14.1.2 ConfMsgWarn, ConfMsgError ================================= <) ConfMsgError() >> Print a warning or an error message respectively. `ConfMsgError' would then abort OMake. 14.1.3 ConfMsgYesNo, ConfMsgFound ================================== < flag = $(ConfMsgFound >> The `ConfMsgFound' function expects to receive a boolean flag describing whether a test previously announced using the 'ConfMsgChecking' function found what it was looking for. `ConfMsgFound' will output the appropriate result ("found" or "NOT found") using the 'ConfMsgResult' function and return its argument back. The `ConfMsgYesNo' function is similar, outputting a simple ("yes" or "NO"). 14.1.4 TryCompileC, TryLinkC, TryRunC ====================================== <) success = $(TryLinkC ) success = $(TryRunC ) >> Given the text of a C program, the `TryCompileC', `TryLinkC', and `TryRunC' functions would try to compile / compile and link / compile, link, and run, the given program and return a boolean flag indicating whether the attempt was successful. `TryCompileC' will use the 'CC', 'CFLAGS' and 'INCLUDES' variables to run the C compiler. `TryLinkC' and `TryRunC' will also use the 'LDFLAGS' variable to run the C compiler and linker. However, the flags like `/WX', `-Werror' and `-warn-error' will be not be passed to the compiler, even if they occur in `CFLAGS'. These functions are silent and should normally be used with an appropriate 'ConfMsgChecking' ... 'ConfMsgResult'. 14.1.5 RunCProg ================ <) >> `RunCProg' is similar to the 'RunCProg' function, except that it returns the output of the function (will return `false' if the program fails to compile or run). 14.1.6 CheckCHeader, VerboseCheckCHeader ========================================= <) success = $(VerboseCheckCHeader ) >> Use the 'TryCompileC' function to check whether your C compiler can locate and process the specified headers files. Will incude `' before including the header files. Both functions return a boolean value. The `CheckCHeader' function is silent; the `VerboseCheckCHeader' function will use the 'ConfMsgChecking' and 'ConfMsgResult' functions to describe the test and the outcome. Example: <> 14.1.7 CheckCLib, VerboseCheckCLib =================================== <, ) success = $(VerboseCheckCLib , ) >> Use the 'TryLinkC' function to check whether your C compiler and linker can find the named functions when linking with the named libraries. Will pass the `' to the compiler using the `-l' flag. Both functions return a boolean value. The `CheckCLib' function is silent; the `VerboseCheckCHeader' function will use the 'ConfMsgChecking' and 'ConfMsgResult' functions to describe the test and the outcome. Example: <> 14.1.8 CheckProg ================= `success = $(CheckProg )' Checks whether the program `' exists in your path. Will use the 'ConfMsgChecking' and 'ConfMsgResult' functions to describe the test and the outcome. 14.2 Translating 'autoconf' scripts *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= Some of the functions described above are very similar to the ones present in `autoconf'. Below is a brief translation table for such functions. 'AC_MSG_CHECKING' is very similar to 'ConfMsgChecking' function. 'AC_MSG_RESULT' is very similar to 'ConfMsgResult' function. 'AC_MSG_WARN' is very similar to 'ConfMsgWarn' function. 'AC_MSG_ERROR' is very similar to 'ConfMsgError' function. 'AC_TRY_COMPILE' is somewhat similar to 'TryCompileC' function, except the 'TryCompileC' function returns a boolean value and only works for `C'. Similarly, 'AC_TRY_LINK' is approximated by 'TryLinkC' function, and 'AC_TRY_RUN' is approximated by 'TryRunC' function. 14.3 Predefined configuration tests *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= A number of configuration tests are already included in the standard library. In order to use them in your project, simply `open' (see Section 4.7) the corresponding build file in your `OMakefile' and the tests will run the first time OMake is executed. Note that it is not a problem to `open' these files from more than one place in your project --- if you do that, the test will still run only once. 14.3.1 NCurses library configuration ===================================== Add `open configure/ncurses' line to your `OMakefile' to get access to the following autoconfiguration variables. NCURSES_AVAILABLE A boolean flag that would be set when both the `curses.h' header, the `term.h' header, and the `ncurses' library very found. NCURSES_TERMH_IN_NCURSES A boolean flag that would be set when `term.h' has to be included as `' instead of `'. NCURSES_CFLAGS The `CFLAGS' to use when compiling ncurses code. Will include `-DNCURSES' and `-DTERMH_IN_NCURSES', respectively when `NCURSES_AVAILABLE' and `NCURSES_TERMH_IN_NCURSES' are true. NCURSES_CLIBS The `LDFLAGS' to use when linking ncurses code. Will normally contain `-lncurses' when ncurses is found and remain empty otherwise. 14.3.2 ReadLine library configuration ====================================== Add `open configure/readline' line to your `OMakefile' to get access to the following autoconfiguration variables. READLINE_AVAILABLE A boolean flag that would be set when both the `readline/readline.h' header, the `readline/history.h' header, and the `readline' library very found. READLINE_GNU A boolean flag that would be set when the GNU version of the readline library is found (as opposed to the BSD one). READLINE_CFLAGS The `CFLAGS' to use when compiling readline code. Will include `-DREADLINE_ENABLED' and `-DREADLINE_GNU', respectively when `READLINE_AVAILABLE' and `READLINE_GNU' are true. READLINE_CLIBS The `LDFLAGS' to use when linking readline code. Will normally contain `-lncurses -lreadline' when readline is found and remain empty otherwise. 14.3.3 Snprintf configuration ============================== Add `open configure/snprintf' line to your `OMakefile' to get access to the following autoconfiguration variables. SNPRINTF_AVAILABLE A boolean flag telling whether the snprintf function is available in the standard C library. Chapter 15 The OSH shell *************************** OMake also includes a standalone command-line interpreter osh that can be used as an interactive shell. The shell uses the same syntax, and provides the same features on all platforms omake supports, including Win32. 15.1 Startup *=*=*=*=*=*=* On startup, osh reads the file `~/.oshrc' if it exists. The syntax of this file is the same as an OMakefile. The following additional variables are significant. prompt The `prompt' variable specifies the command-line prompt. It can be a simple string. << prompt = osh> >> Or you may choose to define it as a function of no arguments. << prompt() = return $"<$(USER):$(HOST) $(homename $(CWD))>" >> An example of the latter prompt is as follows. << cd links/omake >> If you include any "invisible" text in the prompt (such as various terminal escape sequences), they must be wrapped using the 'prompt-invisible' function. For example, to create a bold prompt on terminals that support it, you can use the following. << prompt = bold-begin = $(prompt-invisible $(tgetstr bold)) bold-end = $(prompt-invisible $(tgetstr sgr0)) value $(bold-begin)$"osh>"$(bold-end) >> ignoreeof If the `ignoreeof' is `true', then `osh' will not exit on a terminal end-of-file (usually `^D' on Unix systems). 15.2 Aliases *=*=*=*=*=*=* Command aliases are defined by adding functions to the `Shell.' object. The following alias adds the `-AF' option to the `ls' command. << Shell. += ls(argv) = "ls" -AF $(argv) >> Quoted commands do not undergo alias expansion. The quotation `"ls"' prevents the alias from being recursive. 15.3 Interactive syntax *=*=*=*=*=*=*=*=*=*=*=*= The interactive syntax in `osh' is the same as the syntax of an `OMakefile', with one exception in regard to indentation. The line before an indented block must have a colon at the end of the line. A block is terminated with a `.' on a line by itself, or `^D'. In the following example, the first line `if true' has no body, because there is no colon. << # The following if has no body osh>if true # The following if has a body osh>if true: if> if true: if> println(Hello world) if> . Hello world >> Note that `osh' makes some effort to modify the prompt while in an indented body, and it auto-indents the text. The colon signifier is also allowed in files, although it is not required. Appendix A Synopsis ********************** omake [-j ] [-k] [-p] [-P] [-n] [-s] [-S] [-w] [-t] [-u] [-U] [-R] [--verbose] [--project] [--depend] [--progress] [--print-status] [--print-exit] [--print-dependencies] [--show-dependencies ] [--all-dependencies] [--verbose-dependencies] [--force-dotomake] [--dotomake ] [--flush-includes] [--configure] [--save-interval ] [--install] [--install-all] [--install-force] [--version] [--absname] [--output-normal] [--output-postpone] [--output-only-errors] [--output-at-end] filename... [var-definition...] A.1 General usage *=*=*=*=*=*=*=*=*= For Boolean options (for example, `-s', `--progress', etc.) the option can include a prefix `--no', which inverts the usual sense of the option. For example, the option `--progress' means "print a progress bar," while the option `--no--progress' means "do not print a progress bar." If multiple instances of an option are specified, the final option determines the behavior of OMake. In the following command line, the final `--no-S' cancels the earlier `-S'. << % omake -S --progress --no-S >> A.2 Output control *=*=*=*=*=*=*=*=*=* A.2.1 -s ========= `-s' Never not print commands as they are executed (be "silent"). A.2.2 -S ========= `-S' Do not print commands as they are executed unless they produce output and/or fail. This is the default. A.2.3 -w ========= `-w' Print directory information in make format as commands are executed. This is mainly useful for editors that expect make-style directory information for determining the location of errors. A.2.4 --progress ================= `--progress' Print a progress indicator. This option is enabled by default when the OMake's output (`stdout') is on a terminal and disabled by default (except on Windows) when the OMake's output is redirected. A.2.5 --print-status ===================== `--print-status' Print status lines (the `+' and `-' lines). A.2.6 --print-exit =================== `--print-exit' Print termination codes when commands complete. A.2.7 --verbose ================ `--verbose' Make OMake very verbose. This option is equivalent to `--no-S --print-status --print-exit VERBOSE=true' A.2.8 --output-normal ====================== `--output-normal' As rule commands are executed, relay their output to the OMake output right away. This is enabled by default, unless `--output-postpone' or `--output-only-errors' is enabled. A.2.9 --output-postpone ======================== `--output-postpone' When a rule finishes, print the output as a single block. This is useful in combination `-j' option (see Section A.3.12), where the output of multiple subprocesses can be garbled. The diversion is printed as a single coherent unit. Note that enabling `--output-postpone' will by default disable the `--output-normal' option. This might be problematic if you have a command that decides to ask for interactive input. If the `--output-postpone' is enabled, but the `--output-normal' is not, the prompt of such a command will not be visible and it may be hard to figure out why the build appears "stuck". You might also consider using the `--progress' flag (see Section A.2.4) so that you can see when the build is active. A.2.10 --output-only-errors ============================ `--output-only-errors' Similar to `--output-postpone', except that the postponed output from commands that were successful will be discarded. This can be useful in reducing unwanted output so that you can concentrate on any errors. A.2.11 --output-at-end ======================= `--output-at-end' If any rules/commands fail, re-print the output of the failed commands when OMake finishes the build. This is especially useful when any of the `-k', `-p', or `-P' options are enabled. This option is off by default. However, when `-k' is enabled --- either explicitly or via one of the `-p'/`-P' options --- `--output-at-end' will be enabled by default. A.2.12 -o ========== `-o [01jwWpPxXsS]' For brevity, the `-o' option is also provided to duplicate the above output options. The `-o' option takes a argument consisting of a sequence of characters. The characters are read from left-to-right; each specifies a set of output options. In general, an uppercase character turns the option on; a lowercase character turns the option off. 0 Equivalent to `-s --output-only-errors --no-progress' This option specifies that `omake' should be as quiet as possible. If any errors occur during the build, the output is delayed until the build terminates. Output from successful commands is discarded. 1 Equivalent to `-S --progress --output-only-errors' This is a slightly more relaxed version of "quiet" output. The output from successful commands is discarded. The output from failed commands is printed immediately after the command complete. The output from failed commands is displayed twice: once immediately after the command completes, and again when the build completes. A progress bar is displayed so that you know when the build is active. Include the ``p'' option if you want to turn off the progress bar (for example `omake -o 1p'). 2 Equivalent to `--progress --output-postpone' The is even more relaxed, output from successful commands is printed. This is often useful for deinterleaving the output when using `-j'. W Equivalent to `-w' w Equivalent to `--no-w' P Equivalent to `--progress' p Equivalent to `--no--progress' X Equivalent to `--print-exit' x Equivalent to `--no-print-exit' S Equivalent to `-S' s Equivalent to `--no-S' A.3 Build options *=*=*=*=*=*=*=*=*= A.3.1 -k ========= `-k' Do not abort when a build command fails; continue to build as much of the project as possible. This option is implied by both `-p' and `-P' options. In turn, this option would imply the `--output-at-end' option. A.3.2 -n ========= `-n' This can be used to see what would happen if the project were to be built. A.3.3 -p ========= `-p' Watch the filesystem for changes, and continue the build until it succeeds. If this option is specified, omake will restart the build whenever source files are modified. Implies -k. A.3.4 -P ========= `-P' Watch the filesystem for changes forever. If this option is specified, omake will restart the build whenever source files are modified. Implies -k. A.3.5 -R ========= `-R' Ignore the current directory and build the project from its root directory. When omake is run in a subdirectory of a project and no explicit targets are given on the command line, it would normally only build files within the current directory and its subdirectories (more precisely, it builds all the `.DEFAULT' targets in the current directory and its subdirectories). If the -R option is specified, the build is performed as if omake were run in the project root. In other words, with the `-R' option, all the relative targets specified on the command line will be taken relative to the project root (instead of relative to the current directory). When no targets are given on the command line, all the `.DEFAULT' targets in the project will be built (regardless of the current directory). A.3.6 -t ========= `-t' Update the omake database to force the project to be considered up-to-date. A.3.7 -U ========= `-U' Do not trust cached build information. This will force the entire project to be rebuilt. A.3.8 --depend =============== `--depend' Do not trust cached dependency information. This will force files to be rescanned for dependency information. A.3.9 --configure ================== `--configure' Re-run `static.' sections of the included omake files, instead of trusting the cached results. A.3.10 --force-dotomake ======================== `--force-dotomake' Always use the `$HOME/.omake' for the `.omc' cache files. A.3.11 --dotomake ================== `--dotomake ' Use the specified directory instead of the `$HOME/.omake' for the placement of the `.omc' cache files. A.3.12 -j ========== `-j ' Run multiple build commands in parallel. The count specifies a bound on the number of commands to run simultaneously. In addition, the count may specify servers for remote execution of commands in the form `server=count'. For example, the option `-j 2:small.host.org=1:large.host.org=4' would specify that up to 2 jobs can be executed locally, 1 on the server `small.host.org' and 4 on `large.host.org'. Each remote server must use the same filesystem location for the project. Remote execution is currently an experimental feature. Remote filesystems like NFS do not provide adequate file consistency for this to work. A.3.13 --print-dependencies ============================ `--print-dependencies' Print dependency information for the targets on the command line. A.3.14 --show-dependencies =========================== `--show-dependencies ' Print dependency information if the `target' is built. A.3.15 --all-dependencies ========================== `--all-dependencies' If either of the options --print-dependencies or --show-dependencies is in effect, print transitive dependencies. That is, print all dependencies recursively. If neither option --print-dependencies, --show-dependencies is specified, this option has no effect. A.3.16 --verbose-dependencies ============================== `--verbose-dependencies' If either of the options --print-dependencies or --show-dependencies is in effect, also print listings for each dependency. The output is very verbose, consider redirecting to a file. If neither option --print-dependencies, --show-dependencies is specified, this option has no effect. A.3.17 --install ================= `--install' Install default files OMakefile and OMakeroot into the current directory. You would typically do this to start a project in the current directory. A.3.18 --install-all ===================== `--install-all' In addition to installing files OMakefile and OMakeroot, install default OMakefiles into each subdirectory of the current directory. cvs(1) rules are used for filtering the subdirectory list. For example, OMakefiles are not copied into directories called `CVS', `RCCS', etc. A.3.19 --install-force ======================= `--install-force' Normally, omake will prompt before it overwrites any existing OMakefile. If this option is given, all files are forcibly overwritten without prompting. A.3.20 --absname ================= `--absname' Filenames should expand to absolute pathnames. N.B. This is an experimental option. It may become deprecated. A.3.21 variable definition =========================== `name=[value]' omake variables can also be defined on the command line in the form `name=value'. For example, the `CFLAGS' variable might be defined on the command line with the argument `CFLAGS="-Wall -g"'. A.4 Additional options *=*=*=*=*=*=*=*=*=*=*=* In addition, omake supports a number of debugging flags on the command line. Run `omake --help' to get a summary of these flags. A.5 Environment variables *=*=*=*=*=*=*=*=*=*=*=*=*= A.5.1 OMAKEFLAGS ================= If defines, the `OMAKEFLAGS' should specify a set of options exactly as they are specified on the command line. A.5.2 OMAKELIB =============== If defined, the `OMAKELIB' environment variable should refer to the installed location of the OMake standard library. This is the directory that contains `Pervasives.om' etc. On a Unix system, this is often `/usr/lib/omake' or `/usr/local/lib/omake', and on Win32 systems it is often `c:\Program Files\OMake\lib'. If not defined, `omake' uses the default configured location. You should normally leave this unset. A.6 Functions *=*=*=*=*=*=*= A.6.1 OMakeFlags ================= The `OMakeFlags' function can be used within an `OMakefile' to modify the set of options. The options should be specified exactly as they are on the command line. For example, if you want some specific project to be silent and display a progress bar, you can add the following line to your `OMakefile'. << OMakeFlags(-S --progress) >> For options where it makes sense, the options are scoped like variables. For example, if you want OMake to be silent for a single rule (instead of for the entire project), you can use scoping the restrict the range of the option. << section # Do not display command output when foo is constructed OMakeFlags(-S) foo: fee echo "This is a generated file" > foo cat fee >> foo chmod 555 foo >> A.7 Option processing *=*=*=*=*=*=*=*=*=*=*= When `omake' is invoked, the options are processed in the following order. 1. All options specified by the `OMAKEFLAGS' environment variable are defined globally. 2. All options from the command line are defined globally. 3. Any individual calls the the `OMakeFlags' function modify the options locally. A.8 .omakerc *=*=*=*=*=*=* If the `$(HOME)/.omakerc' exists, it is read before any of the `OMakefiles' in your project. The `.omakerc' file is frequently used for user-specific customization. For example, instead of defining the `OMAKEFLAGS' environment variable, you could add a line to your `.omakerc'. << $(HOME)/.omakerc: # My private options OMakeFlags(-S --progress) >> Appendix B OMake grammar *************************** B.1 OMake lexical conventions *=*=*=*=*=*=*=*=*=*=*=*=*=*=*= The OMake language is based on the language for GNU/BSD make, where there are few lexical conventions. Strictly speaking, there are no keywords, and few special symbols. B.1.1 Comments =============== Comments begin with the `#' character and continue to the end-of-line. Text within a comment is unrestricted. Examples. << # This is a comment # This $comment contains a quote " character >> B.1.2 Special characters ========================= The following characters are special in some contexts. << $ ( ) , . = : " ' ` \ # >> - `$' is used to denote a variable reference, or function application. - Parentheses `)', `(' are argument deliminters. - The command `,' is an argument separator. - The period symbol `.' is a name separator. - The equality symbol `=' denotes a definition. - The colon symbol `:' is used to denote rules, and (optionally) to indicate that an expression is followed by an indented body. - The quotation symbols `"' and `'' delimit character strings. - The symbol `#' is the first character of a constant. - The escape symbol `\' is special only when followed by another special character. In this case, the special status of the second character is removed, and the sequence denotes the second character. Otherwise, the `\' is not special. Examples: - `\$': the `$' character (as a normal character). - `\#': the `#' character (as a normal character). - `\\': the `\' character (as a normal character). - `c\:\Windows\moo\#boo': the string `c:\Windows\moo#boo'. B.1.3 Identifiers ================== Identifiers (variable names) are drawn from the ASCII alphanumeric characters as well as `_', `-', `~', `@'. Case is significant; the following identifiers are distinct: `FOO', `Foo', `foo'. The identifier may begin with any of the valid characters, including digits. Using `egrep' notation, the regular expression for identifiers is defined as follows. << identifier ::= [-@~_A-Za-z0-9]+ >> The following are legal identifiers. << Xyz hello_world seventy@nine 79-32 Gnus~Gnats CFLAGS >> The following are not legal identifiers. << x+y hello&world >> B.1.4 Command identifiers ========================== The following words have special significance when they occur as the first word of a program line. They are not otherwise special. << case catch class declare default do else elseif export extends finally if import include match open raise return section switch try value when while >> B.1.5 Variable references ========================== A variable reference is denoted with the `$' special character followed by an identifier. If the identifier name has more than one character, it must be enclosed in parentheses. The parenthesized version is most common. The following are legal variable references. << $(Xyz) $(hello_world) $(seventy@nine) $(79-32) $(Gnus~Gnats) $(CFLAGS) >> Single-character references also include several additional identifiers, including `&*<^?]['. The following are legal single-character references. << $@ $& $* $< $^ $+ $? $[ $] $A $_ $a $b $x $1 $2 $3 >> Note that a non-parenthesized variable reference is limited to a single character, even if it is followed by additional legal identifier charqcters. Suppose the value of the `$x' variable is 17. The following examples illustrate evaluation. << $x evaluates to 17 foo$xbar evaluates to foo17bar foo$(x)bar evaluates to foo17bar >> The special sequence `$$' represents the character literal `$'. That is, the two-character sequences `\$' and `$$' are normally equalivalent. B.1.6 String constants ======================= Literal strings are defined with matching string delimiters. A left string delimiter begins with the dollar-sign `$', and a non-zero number of single-quote or double-quote characters. The string is terminated with a matching sequence of quotation symbols. The delimiter quotation may not be mixed; it must contain only single-quote characters, or double-quote characters. The following are legal strings. << $'Hello world' $"""printf("Hello world\n")""" $'''' Large "block" of text # spanning ''multiple'' lines'''' >> The string delimiters are not included in the string constant. In the single-quote form, the contents of the string are interpreted verbatim--there are no special characters. The double-quote form permits expression evaluation within the string, denoted with the `$' symbol. The following are some examples. << X = Hello Y = $""$X world"" # Hello world Z = $'''$X world''' # $X world I = 3 W = $"6 > $(add $I, 2)" # 6 > 5 >> Note that quotation symbols without a leading `$' are not treated specially by OMake. The quotation symbols is included in the sequence. << osh>println('Hello world') 'Hello world' osh>println($'Hello world') Hello world osh>X = Hello - : "Hello" : Sequence osh>println('$X world') Hello world >> B.2 The OMake grammar *=*=*=*=*=*=*=*=*=*=*= OMake programs are constructed from expressions and statements. Generally, an input program consists of a sequence of statements, each of which consists of one or more lines. Indentation is significant--if a statement consists of more than one line, the second and remaining lines (called the body) are usually indented relative to the first line. B.2.1 Expressions ================== The following table lists the syntax for expressions. expr ::= (empty) -- Text (see note) | text | string-literal -- Applications | dollar `' | dollar `(' pathid args `)' -- Concatenation | expr expr dollar ::= `$' | `$`' | `$,' pathid ::= id | pathid `.' id arg ::= expr -- excluding special characters `)(,') args ::= (empty) | arg, ..., arg An expression is a sequence composed of text, string-literals, variables references and function applications. Text is any sequence of non-special characters. B.2.1.1 Inline applications ---------------------------- An application is the application of a function to zero-or-more arguments. Inline applications begin with one of the "dollar" sequences `$', `$`', or `$,'. The application itself is specified as a single character (in which case it is a variable reference), or it is a parenthesized list including a function identifier pathid, and zero-or-more comma-separated arguments args. The arguments are themselves a variant of the expressions where the special character `)(,' are not allowed (though any of these may be made non-special with the `\' escape character). The following are some examples of valid expressions. - `xyz abc' The text sequence "`xyz abc'" - `xyz$wabc' A text sequence containing a reference to the variable `w'. - `$(addsuffix .c, $(FILES))' An application of the function `addsuffix', with first argument `.c', and second argument `$(FILES)'. - `$(a.b.c 12)' This is a method call. The variable `a' must evaluate to an object with a field `b', which must be an object with a method `c'. This method is called with argument `12'. The additional dollar sequences specify evaluation order, `$`' (lazy) and `$,' (eager), as discussed in the section on dollar modifiers (Section B.3). B.2.2 Statements and programs ============================== The following table lists the syntax of statements and programs. params ::= (empty) | id, ..., id target ::= expr -- excluding special character `:' program ::= stmt `' ... `' stmt stmt ::= -- Special forms | command expr optcolon-body | command ( args ) optcolon-body | catch id ( id ) optcolon-body | class id ... id -- Variable definitions | pathid {+}= expr | pathid {+}= `' indented-body | pathid`[]' {+}= expr | pathid`[]' {+}= `' indented-exprs -- Functions | pathid(args) optcolon-body | pathid(params) = `' indented-body -- Objects | pathid `.' {+}= `' indented-body -- Rules | target : target rule-options `' indented-body | target :: target rule-options `' indented-body | target : target : target rule-options `' indented-body | target :: target : target rule-options `' indented-body -- Shell commands | expr indented-body ::= (empty) | indented-stmt `' ... `' indented-stmt indented-exprs ::= (empty) | indented-expr `' ... `' indented-expr optcolon-body ::= (empty) | `' indented-body | : `' indented-body rule-option ::= :id: target rule-options ::= (empty) | rule-options rule-option B.2.2.1 Special forms ---------------------- The special forms include the following. Conditionals (see the section on conditionals --- Section 4.9). The `if' command should be followed by an expression that represents the condition, and an indented body. The conditional may be followed by `elseif' and `else' blocks. << if expr indented-body elseif expr indented-body ... else indented-body >> matching (see the section on matching --- Section 4.10). The `switch' and `match' commands perform pattern-matching. All cases are optional. Each case may include `when' clauses that specify additional matching conditions. << match(expr) case expr indented-body when expr indented-body ... case expr indented-body default indented-body >> Exceptions (see also the 'try' function documentation). The `try' command introduces an exception handler. Each `name' is the name of a class. All cases, including `catch', `default', and `finally' are optional. The `catch' and `default' clauses contain optional `when' clauses. << try indented-body catch name1(id1) indented-body when expr indented-body ... catch nameN(idN) indented-body default indented-body finally indented-body >> The `raise' command is used to raise an exception. << raise expr >> section (see the `section' description in Section 4.8). The `section' command introduces a new scope. << section indented-body >> include, open (see also Section 4.7). The `include' command performs file inclusion. The expression should evaluate to a file name. The `open' form is like include, but it performs the inclusion only if the inclusion has not already been performed. The `open' form is usually used to include library files. [jyh-- this behavior will change in subsequent revisions.] << include expr open expr >> return (see the description of functions in Section 4.5). The `return' command terminates execution and returns a value from a function. << return expr >> value (see the description of functions in Section 4.5). The `value' command is an identity. Syntactically, it is used to coerce a n expression to a statement. << value expr >> export (see the section on scoping --- Section 6.3). The `export' command exports a environment from a nested block. If no arguments are given, the entire environment is exported. Otherwise, the export is limited to the specified identifiers. << export expr >> while (see also the 'while' function description). The `while' command introduces a `while' loop. << while expr indented-body >> class, extends (see the section on objects --- Section 4.11). The `class' command specifies an identifier for an object. The `extends' command specifies a parent object. << class id extends expr >> B.2.2.2 Variable definitions ----------------------------- See the section on variables (Section 4.1). The simplest variable definition has the following syntax. The `=' form is a new definition. The += form appends the value to an existing definition. << id = expr id += expr osh> X = 1 - : "1" : Sequence osh> X += 7 - : "1" " " "7" : Sequence >> A multi-line form is allowed, where the value is computed by an indented body. << id {+}= indented-body osh> X = Y = HOME println(Y is $Y) getenv($Y) Y is HOME - : "/home/jyh" : Sequence >> The name may be qualified qith one of the `public', `prtected', or `private' modifiers. Public variables are dynamically scoped. Protected variables are fields in the current object. Private variables are statically scoped. [jyh: revision 0.9.9 introduces modular namespaces; the meaning of these qualifiers is slightly changed.] << public.X = $(addsuffix .c, 1 2 3) protected.Y = $(getenv HOME) private.Z = $"Hello world" >> B.2.2.3 Applications and function definitions ---------------------------------------------- See the section on functions (Section 4.5). A function-application statement is specified as a function name, followed a parenthesized list of comma-separated arguments. << osh> println($"Hello world") osh> FILES = 1 2 3 - : 1 2 3 osh> addsuffix(.c, $(FILES)) - : 1.c 2.c 3.c # The following forms are equivalent osh> value $(println $"Hello world") osh> value $(addsuffix .c, $(FILES)) - : 1.c 2.c 3.c >> If the function application has a body, the body is passed (lazily) to the function as its first argument. [jyh: in revision 0.9.8 support is incomplete.] When using `osh', the application must be followed by a colon `:' to indicate that the application has a body. << # In its 3-argument form, the foreach function takes # a body, a variable, and an array. The body is evaluated # for each element of the array, with the variable bound to # the element value. # # The colon is required only for interactive sessions. osh> foreach(x, 1 2 3): add($x, 1) - : 2 3 4 >> Functions are defined in a similar form, where the parameter list is specified as a comma-separated list of identifiers, and the body of the function is indented. << osh> f(i, j) = add($i, $j) - : osh> f(3, 7) - : 10 : Int >> B.2.2.4 Objects ---------------- See the section on objects (Section 4.11). Objects are defined as an identifier with a terminal period. The body of the object is indented. << Obj. = class Obj X = 1 Y = $(sub $X, 12) new(i, j) = X = $i Y = $j value $(this) F() = add($X, $Y) println($Y) >> The body of the object has the usual form of an indented body, but new variable definitions are added to the object, not the global environment. The object definition above defines an object with (at least) the fields `X' and `Y', and methods `new' and `F'. The name of the object is defined with the `class' command as `Obj'. The `Obj' itself has fields `X = 1' and `Y = -11'. The `new' method has the typical form of a constructor-style method, where the fields of the object are initialized to new values, and the new object returned (`$(this)' refers to the current object). The `F' method returns the sum of the two fields `X' and `Y'. When used in an object definition, the += form adds the new definitions to an existing object. << pair. = x = 1 y = 2 pair. += y = $(add $y, 3) # pair now has fields (x = 1, and y = 5) >> The `extends' form specifies inheritance. Multiple inheritance is allowed. At evaluation time, the `extends' directive performs inclusion of the entire parent object. << pair. = x = 1 y = 2 depth. = z = 3 zoom(dz) = z = $(add $z, $(dz)) return $(this) triple. = extends $(pair) extends $(depth) crazy() = zoom($(mul $x, $y)) >> In this example, the `triple' object has three fields x, y, and z; and two methods `zoom' and `crazy'. B.2.2.5 Rules -------------- See the chapter on rules (Chapter 8). A rule has the following parts. 1. A sequence of targets; 2. one or two colons; 3. a sequence of dependencies and rule options; 4. and an indented body. The targets are the files to be built, and the dependencies are the files it depends on. If two colons are specified, it indicates that there may be multiple rules to build the given targets; otherwise only one rule is allowed. If the target contains a `%' character, the rule is called implicit, and is considered whenever a file matching that pattern is to be built. For example, the following rule specifies a default rule for compiling OCaml files. << %.cmo: %.ml %.mli $(OCAMLC) -c $< >> This rule would be consulted as a default way of building any file with a `.cmo' suffix. The dependencies list is also constructed based on the pattern match. For example, if this rule were used to build a file `foo.cmo', then the dependency list would be `foo.ml foo.mli'. There is also a three-part version of a rule, where the rule specification has three parts. << targets : patterns : dependencies rule-options indented-body >> In this case, the patterns must contain a single `%' character. Three-part rules are also considered implicit. For example, the following defines a default rule for the `clean' target. << .PHONY: clean clean: %: rm -f *$(EXT_OBJ) *$(EXT_LIB) >> Three-part implicit rules are inherited by the subdirectories in the exact same way as with the usual two-part implicit rules. There are several special targets, including the following. - `.PHONY' : declare a "phony" target. That is, the target does not correspond to a file. - `.ORDER' : declare a rule for dependency ordering. - `.INCLUDE' : define a rule to generate a file for textual inclusion. - `.SUBDIRS' : specify subdirectories that are part of the project. - `.SCANNER' : define a rule for dependency scanning. There are several rule options. - `:optional: dependencies' the subsequent dependencies are optional, it is acceptable if they do not exist. - `:exists: dependencies' the subsequent dependencies must exist, but changes to not affect whether this rule is considered out-of-date. - `:effects: targets' the subsequent files are side-effects of the rule. That is, they may be created and/or modified while the rule is executing. Rules with overlapping side-effects are never executed in parallel. - `:scanner: name' the subsequent name is the name of the `.SCANNER' rule for the target to be built. - `:value: expr' the `expr' is a "value" dependency. The rule is considered out-of-date whenever the value of the `expr' changes. Several variables are defined during rule evaluation. - `$*' : the name of the target with the outermost suffix removed. - `$>' : the name of the target with all suffixes removed. - `$@' : the name of the target. - `$^' : the explicit file dependencies, sorted alphabetically, with duplicates removed. - `$+' : all explicit file dependencies, with order preserved. - `$<' : the first explicit file dependency. - `$&' : the free values of the rule (often used in `:value:' dependencies). B.2.2.6 Shell commands ----------------------- See the chapter on shell commands (Chapter 11). While it is possible to give a precise specification of shell commands, the informal description is simpler. Any non-empty statement where each prefix is not one of the other statements, is considered to be a shell command. Here are some examples. << ls -- shell command echo Hello world > /dev/null -- shell command echo(Hello world) -- function application echo(Hello world) > /dev/null -- syntax error echo Hello: world -- rule X=1 getenv X -- variable definition env X=1 getenv X -- shell command if true -- special form \if true -- shell command "if" true -- shell command >> B.3 Dollar modifiers *=*=*=*=*=*=*=*=*=*=* Inline applications have a function and zero-or-more arguments. Evaluation is normally strict: when an application is evaluated, the function identifier is evaluated to a function, the arguments are then evaluated and the function is called with the evaluated arguments. The additional "dollar" sequences specify additional control over evaluation. The token `$`' defines a "lazy" application, where evaluation is delayed until a value is required. The `$,' sequence performs an "eager" application within a lazy context. To illustrate, consider the expression `$(addsuffix .c, $(FILES))'. The `addsuffix' function appends its first argument to each value in its second argument. The following `osh' interaction demonstrates the normal bahavior. < FILES[] = a b c - : osh> X = $(addsuffix .c, $(FILES)) - : osh> FILES[] = 1 2 3 # redefine FILES - : osh> println($"$X") # force the evaluation and print a.c b.c c.c >> When the lazy operator `$`' is used instead, evaluation is delayed until it is printed. In the following sample, the value for `X' has changed to the `$(apply ..)' form, but otherwise the result is unchanged because it it printed immediately. < FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> println($"$X") # force the evaluation and print a.c b.c c.c >> However, consider what happens if we redefine the `FILES' variable after the definition for `X'. In the following sample, the result changes because evaluation occurs after the values for `FILES' has been redefined. < FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> SUF = .x osh> FILES[] = 1 2 3 osh> println($"$X") # force the evaluation and print 1.x 2.x 3.x >> In some cases, more explicit control is desired over evaluation. For example, we may wish to evaluate `SUF' early, but allow for changes to the `FILES' variable. The `$,(SUF)' expression forces early evaluation. < FILES[] = a b c - : osh> SUF = .c - : ".c" osh> X = $`(addsuffix $,(SUF), $(FILES)) - : $(apply global.addsuffix ...) osh> SUF = .x osh> FILES[] = 1 2 3 osh> println($"$X") # force the evaluation and print 1.c 2.c 3.c >> Index ***** - --absname, A.3.20 - --all-dependencies, A.3.15 - --configure, A.3.9 - --depend, A.3.8 - --dotomake, A.3.11 - --force-dotomake, A.3.10 - --install, A.3.17 - --install-all, A.3.18 - --install-force, A.3.19 - --output-at-end, A.2.11 - --output-normal, A.2.8 - --output-only-errors, A.2.10 - --output-postpone, A.2.9 - --print-dependencies, A.3.13 - --print-exit, A.2.6 - --print-status, A.2.5 - --progress, A.2.4 - --show-dependencies, A.3.14 - --verbose, A.2.7 - --verbose-dependencies, A.3.16 - -j, A.3.12 - -k, A.3.1 - -n, A.3.2 - -o, A.2.12 - -P, A.3.4 - -p, A.3.3 - -R, A.3.5 - -S, A.2.2 - -s, A.2.1 - -t, A.3.6 - -U, A.3.7 - -w, A.2.3 - .BUILD_BEGIN, 13.1 - .BUILD_FAILURE, 13.1 - .BUILD_SUCCESS, 13.1 - .BUILDORDER, 10.3.6 - .DEFAULT, 8.7, 8.12.1 - .INCLUDE, 8.9 - .MEMO, 4.14.1.1 - .ORDER, 10.3.6 - .omakerc, A.8 - .PHONY, 6.3, 8.10, 8.11.3, 8.12.1, 8.12.2 - .RULE, 6.3 - .SCANNER, 3.4.3, 8.6, 8.11.2 - .STATIC, 4.14.1 - .SUBDIRS, 3, 8.8 - .SUBDIRS bodies, 3.5 - :effects:, 8.5.2 - :exists:, 8.5.1 - :key:, 4.14.1.2 - :scanner:, 8.6.1 - :value:, 8.5.3 - $&, B.2.2.5 - $*, 8, B.2.2.5 - $+, 8, B.2.2.5 - $<, 8, B.2.2.5 - $>, B.2.2.5 - $@, 8, B.2.2.5 - $^, 8, B.2.2.5 - ABORT_ON_COMMAND_ERROR, 13.4.1 - ABORT_ON_DEPENDENCY_ERRORS, 13.6.4 - AC_MSG_CHECKING, 14.2 - AC_MSG_ERROR, 14.2 - AC_MSG_RESULT, 14.2 - AC_MSG_WARN, 14.2 - AC_TRY_COMPILE, 14.2 - AC_TRY_LINK, 14.2 - AC_TRY_RUN, 14.2 - AR, 13.5.2 - Array, 12.1.7 - AS, 13.5.2 - ASFLAGS, 13.5.2 - ASOUT, 13.5.2 - absname, 10.1.9 - accept, 10.8.31 - add, 9.4.3 - add-project-directories, 10.6.2 - add-wrapper, 9.3.27 - addprefix, 9.3.25 - addsuffix, 9.3.19 - addsuffixes, 9.3.21 - aliases, 15.2 - and, 9.2.3 - apply, 9.5.2 - applya, 9.5.3 - array, 9.3.1 - arrays, 4.3 - asr, 9.4.3 - awk, 3.4.3, 10.11.5 - BIBTEX, 13.7.1 - BUILD_SUMMARY, 9.1 - BYTE_ENABLED, 13.6.2 - basename, 10.1.4 - bg, 11.10.2 - bind, 10.8.29 - break, 9.3.43 - build, 13.3.6 - build model, 3 - CAMLP4, 13.6.2 - CC, 13.5.2 - CCOUT, 13.5.2 - CDLL_IMPLIES_STATIC, 13.5.4.1 - CFLAGS, 13.5.2 - CGeneratedFiles, 13.5.3.1 - Channel, 12.1.15 - CheckCHeader, 14.1.6 - CheckCLib, 14.1.7 - CheckProg, 14.1.8 - CL_FOUND, 13.5.1.2 - ConfMsgChecking, 14.1.1 - ConfMsgError, 14.1.2 - ConfMsgFound, 14.1.3 - ConfMsgResult, 14.1.1 - ConfMsgWarn, 14.1.2 - ConfMsgYesNo, 14.1.3 - CPP, 13.5.2 - CProgram, 13.5.4.5 - CProgramCopy, 13.5.4.6 - CProgramInstall, 13.5.4.7 - CWD, 13.4.1 - CXX, 13.5.2 - CXXFLAGS, 13.5.2 - CXXProgram, 13.5.4.8 - CXXProgramInstall, 13.5.4.8 - c-escaped, 9.3.14 - capitalize, 9.3.35 - case, 9.2.6 - cat, 10.11.2 - cats and dogs, 3.4 - cd, 11.9.2 - channel-name, 10.8.12 - chmod, 10.5.9 - chown, 10.5.10 - class, B.2.2.1 - classes, 4.12 - close, 10.8.5 - cmp-versions, 13.2.3 - compare, 9.7.4 - concat, 9.3.3 - conditionals, 4.9 - connect, 10.8.32 - constants, 4.15 - create-lazy-map, 9.5.4 - create-map, 9.5.4 - DefineCommandVars, 13.2.4 - DIRSEP, 13.4.2 - Dir, 12.1.14 - DVIPDFM, 13.7.1 - DVIPDFMFLAGS, 13.7.1 - DVIPS, 13.7.1 - DVIPSFLAGS, 13.7.1 - DynamicCLibrary, 13.5.4.1 - DynamicCLibraryCopy, 13.5.4.2 - DynamicCLibraryInstall, 13.5.4.3 - DynamicCXXLibrary, 13.5.4.9 - DynamicCXXLibraryCopy, 13.5.4.9 - DynamicCXXLibraryInstall, 13.5.4.9 - declare, 5.7 - decode-uri, 9.3.15 - default, 9.2.6 - defined, 9.2.10 - defined-env, 9.2.11 - dependencies, 13.3.1 - dependencies-all, 13.3.1 - dependencies-proper, 13.3.1 - digest, 10.2.5 - digest-in-path, 10.2.7 - digest-in-path-optional, 10.2.7 - digest-optional, 10.2.5 - dir, 10.1.1 - dirname, 10.1.5 - dirof, 10.1.7 - div, 9.4.3 - dup, 10.8.13 - dup2, 10.8.14 - EMPTY, 13.4.1 - EXE, 13.4.2 - EXT_ASM, 13.4.2 - EXT_DLL, 13.4.2 - EXT_LIB, 13.4.2 - EXT_OBJ, 13.4.2 - Exception, 12.1.19 - echo, 11.9.1 - else, 9.2.5, B.2.2.1 - elseif, 9.2.5, B.2.2.1 - encode-uri, 9.3.15 - eprint, 10.9 - eprintln, 10.9 - eprintv, 10.10 - eprintvln, 10.10 - eq, 9.4.4 - equal, 9.2.2 - exists-in-path, 10.2.4 - exit, 9.2.9 - export, 6.3, 9.3.41, B.2.2.1 - extends, B.2.2.1 - File, 12.1.13 - Float, 12.1.5 - Fun, 12.1.9 - fg, 11.10.3 - fgets, 10.8.35 - file, 10.1.1 - file-check-sort, 10.3.7 - file-exists, 10.3.1 - file-sort, 10.3.6 - filter, 9.3.33 - filter-exists, 10.3.3 - filter-out, 9.3.34 - filter-proper-targets, 10.3.3 - filter-targets, 10.3.3 - find, 10.7.2 - find-build-targets, 13.3.3 - find-in-path, 10.2.6 - find-in-path-optional, 10.2.6 - find-ocaml-targets-in-path-optional, 10.3.5 - find-targets-in-path, 10.3.4 - find-targets-in-path-optional, 10.3.4 - float, 9.4.2 - flush, 10.8.11 - fopen, 10.8.4 - foreach, 9.6.1 - fprint, 10.9 - fprintln, 10.9 - fprintv, 10.10 - fprintvln, 10.10 - fsubst, 10.11.6 - fullname, 10.1.8 - fun, 9.5.1 - functions, 4.5 - GCC_FOUND, 13.5.1.1 - Group, 10.11.20 - GXX_FOUND, 13.5.1.1 - ge, 9.4.4 - get-registry, 9.2.15 - getchar, 10.8.33 - getenv, 9.2.12 - getgrgid, 10.11.21 - getgrnam, 10.11.21 - gethostbyname, 10.8.23 - getprotobyname, 10.8.25 - getpwents, 10.11.19 - getpwnam, 10.11.18 - getpwuid, 10.11.18 - gets, 10.8.34 - getservbyname, 10.8.27 - gettimeofday, 10.11.27 - getvar, 9.2.16 - glob, 10.4.1 - global., 5.3 - gr_gid, 10.11.20 - gr_group, 10.11.20 - gr_mem, 10.11.20 - gr_name, 10.11.20 - grep, 10.11.3 - gt, 9.4.4 - HOME, 9.1 - HOST, 9.1 - Host, 10.8.22 - history, 11.11.1 - homename, 10.1.10 - html-escaped, 9.3.14 - html-pre-escaped, 9.3.14 - html-string, 9.3.18 - INCLUDES, 13.5.2 - INSTALL, 13.4.2 - InChannel, 12.1.16 - InetAddr, 10.8.21 - Int, 12.1.4 - id-escaped, 9.3.14 - if, 4.9, 9.2.5, B.2.2.1 - ignoreeof, 15.1 - in, 10.1.3 - include, 4.7, B.2.2.1 - inheritance, 4.13 - input-line, 10.8.6 - int, 9.4.1 - intersection, 9.3.30 - intersects, 9.3.31 - jobs, 11.10.1 - join, 9.3.11 - kill, 11.10.6 - LATEX, 13.7.1 - LATEXFLAGS, 13.7.1 - LaTeXDocument, 13.7.2.1 - LaTeXDocumentCopy, 13.7.2.3 - LaTeXDocumentInstall, 13.7.2.4 - LD, 13.5.2 - LDFLAGS, 13.5.2 - LDFLAGS_DLL, 13.5.2 - LDOUT, 13.5.2 - LEX, 13.5.2 - Lexer, 10.11.9 - LIB_FOUND, 13.5.1.2 - LIBS, 13.5.2 - LocalCGeneratedFiles, 13.5.3.1 - LocalOCamlGeneratedFiles, 13.6.5.1 - LocalTeXGeneratedFiles, 13.7.2.2 - Location, 12.1.18 - land, 9.4.3 - le, 9.4.4 - length, 9.3.4 - lex, 10.11.7 - lex-search, 10.11.8 - link, 10.5.6 - link-order sorting, 10.3.6 - listen, 10.8.30 - lnot, 9.4.3 - lockf, 10.8.20 - lor, 9.4.3 - lowercase, 9.3.38 - ls, 10.4.2 - lseek, 10.8.8 - lsl, 9.4.3 - lsr, 9.4.3 - lstat, 10.5.3 - lt, 9.4.4 - lxor, 9.4.3 - MACHINE, 9.1 - MAKEINDEX, 13.7.1 - Map, 12.1.2 - MENHIR_AVAILABLE, 13.6.1 - MENHIR_ENABLED, 13.6.2 - MENHIR_FLAGS, 13.6.3 - mapprefix, 9.3.26 - mapsuffix, 9.3.20 - match, 4.10, 9.2.6, B.2.2.1 - max, 9.4.3 - mem, 9.3.29 - min, 9.4.3 - mkdir, 10.5.1 - mkfifo, 10.8.18 - mod, 9.4.3 - mul, 9.4.3 - NATIVE_ENABLED, 13.6.2 - NCURSES_AVAILABLE, 14.3.1 - NCURSES_CFLAGS, 14.3.1 - NCURSES_CLIBS, 14.3.1 - NCURSES_TERMH_IN_NCURSES, 14.3.1 - NODENAME, 9.1 - Node, 12.1.12 - Number, 12.1.3 - neg, 9.4.3 - not, 9.2.1 - nth, 9.3.5 - nth-hd, 9.3.7 - nth-tl, 9.3.8 - Object, 12.1.1 - OCAML_BYTE_LINK_FLAGS, 13.6.3 - OCAML_CLIBS, 13.6.4 - OCAML_LIB_FLAGS, 13.6.4 - OCAML_LIBS, 13.6.4 - OCAML_LINK_FLAGS, 13.6.3 - OCAML_NATIVE_LINK_FLAGS, 13.6.3 - OCAML_OTHER_LIBS, 13.6.4 - OCAMLC, 13.6.2 - OCAMLCFLAGS, 13.6.3 - OCAMLDEP, 13.6.2 - OCAMLDEP_MODULES, 13.6.2 - OCAMLDEP_MODULES_AVAILABLE, 13.6.1 - OCAMLDEP_MODULES_ENABLED, 13.6.2 - OCAMLDEPFLAGS, 13.6.3 - OCAMLFIND, 13.6.2 - OCAMLFIND_EXISTS, 13.6.1 - OCAMLFINDFLAGS, 13.6.2 - OCAMLFLAGS, 13.6.3 - OCAMLINCLUDES, 13.6.2 - OCAMLLEX, 13.6.2 - OCAMLLEXFLAGS, 13.6.2 - OCAMLLINK, 13.6.2 - OCAMLMKTOP, 13.6.2 - OCAMLOPT, 13.6.2 - OCAMLOPT_EXISTS, 13.6.1 - OCAMLOPTFLAGS, 13.6.3 - OCAMLOPTLINK, 13.6.2 - OCAMLPACKS, 13.6.2 - OCAMLPPFLAGS, 13.6.3 - OCAMLYACC, 13.6.2 - OCAMLYACCFLAGS, 13.6.2 - OCamlGeneratedFiles, 13.6.5.1 - OCamlLibrary, 13.6.6.1 - OCamlLibraryCopy, 13.6.6.3 - OCamlLibraryInstall, 13.6.6.4 - OCamlPackage, 13.6.6.2 - OCamlProgram, 13.6.6.5 - OCamlProgramCopy, 13.6.6.6 - OCamlProgramInstall, 13.6.6.7 - OMAKE_VERSION, 9.1 - OMAKEFLAGS, A.5.1 - OMAKELIB, A.5.2 - OMAKEPATH, 9.1 - OMakeFlags, 13.2.1 - OMakefile, 2.8, 3 - OMakeroot, 2.8, 3, 13.4 - OMakeVersion, 13.2.2 - OS_VERSION, 9.1 - OSTYPE, 9.1 - OutChannel, 12.1.17 - objects, 4.11 - ocaml-escaped, 9.3.14 - ocamldep-omake, 13.6.5.2 - open, 4.7, B.2.2.1 - open-in-string, 10.8.2 - open-out-string, 10.8.3 - or, 9.2.4 - out-contents, 10.8.3 - PATHSEP, 13.4.2 - Parser, 10.11.13 - Passwd, 10.11.17 - PDFLATEX, 13.7.1 - PDFLATEXFLAGS, 13.7.1 - PID, 9.1 - Protocol, 10.8.24 - pipe, 10.8.17 - print, 10.9 - println, 10.9 - printv, 10.10 - printvln, 10.10 - private., 5.1 - project-directories, 13.3.4 - prompt, 15.1 - prompt-invisible, 10.11.26 - prompt-invisible-begin, 10.11.25 - prompt-invisible-end, 10.11.25 - protected., 5.4 - public., 5.5 - pw_dir, 10.11.17 - pw_gecos, 10.11.17 - pw_gid, 10.11.17 - pw_name, 10.11.17 - pw_passwd, 10.11.17 - pw_shell, 10.11.17 - pw_uid, 10.11.17 - quotations, 4.4 - quote, 9.3.16 - quote-argv, 9.3.17 - quoted strings, 7.2 - READLINE_AVAILABLE, 14.3.2 - READLINE_CFLAGS, 14.3.2 - READLINE_CLIBS, 14.3.2 - READLINE_GNU, 14.3.2 - ROOT, 13.4.1 - Rule, 12.1.10 - RunCProg, 14.1.5 - RuntimeException, 12.1.20 - raise, 9.2.8 - random, 9.3.44 - random-init, 9.3.44 - read, 10.8.6 - readlink, 10.5.8 - regular expressions, 10.11.1 - rehash, 10.2.3 - remove-project-directories, 10.6.3 - removeprefix, 9.3.22 - removesuffix, 9.3.23 - rename, 10.5.5 - replace-nth, 9.3.6 - replacesuffixes, 9.3.24 - return, 4.5, B.2.2.1 - rev, 9.3.10 - rewind, 10.8.9 - rootname, 10.1.6 - rule, 13.3.5 - rule, options, 8.5 - rule, scoping, 8.11 - rules, bounded implicit, 8.2 - rules, implicit, 8.1 - SCANNER_MODE, 13.4.1 - Sequence, 12.1.6 - Service, 10.8.26 - Shell, 12.1.22 - SNPRINTF_AVAILABLE, 14.3.3 - STDLIB, 9.1 - STDROOT, 13.4.1 - Stat, 10.5.2 - StaticCLibrary, 13.5.4.1 - StaticCLibraryCopy, 13.5.4.2 - StaticCLibraryInstall, 13.5.4.3 - StaticCObject, 13.5.4.4 - StaticCObjectCopy, 13.5.4.4 - StaticCObjectInstall, 13.5.4.4 - StaticCXXLibrary, 13.5.4.9 - StaticCXXLibraryCopy, 13.5.4.9 - StaticCXXLibraryInstall, 13.5.4.9 - String, 12.1.8 - SYSNAME, 9.1 - scan, 10.11.4 - section, 4.8, 8.3, B.2.2.1 - section rule, 8.4 - select, 10.8.19 - sequence-forall, 9.7.1 - sequence-sort, 9.7.3 - set, 9.3.28 - set-close-on-exec-mode, 10.8.16 - set-diff, 9.3.32 - set-nonblock, 10.8.15 - setenv, 9.2.13 - setvar, 9.2.17 - shell, 9.3.40 - socket, 10.8.28 - sorting (link-order), 10.3.6 - split, 9.3.2 - stat, 10.5.3 - stat-reset, 10.3.2 - static., 4.14 - stderr, 10.8.1 - stdin, 10.8.1 - stdout, 10.8.1 - stop, 11.10.4 - string, 9.3.12 - string-escaped, 9.3.14 - string-length, 9.3.13 - sub, 9.4.3 - subdirs, 10.4.3 - subrange, 9.3.9 - suffix, 10.1.11 - switch, 4.10, 9.2.6 - symlink, 10.5.7 - system, 9.3.39 - TARGETS, 9.1 - Target, 12.1.11 - TETEX2_ENABLED, 13.7.1 - TEXDEPS, 13.7.2.1 - TEXINPUTS, 13.7.2.1 - TEXVARS, 13.7.2.1 - TeXGeneratedFiles, 13.7.2.2 - TryCompileC, 14.1.4 - TryLinkC, 14.1.4 - TryRunC, 14.1.4 - target, 13.3.2 - target-exists, 10.3.1 - target-is-proper, 10.3.1 - tell, 10.8.10 - test, 10.7.1 - tgetstr, 10.11.22 - this., 5.2 - tmpfile, 10.1.2 - truncate, 10.5.11 - try, 9.2.7, B.2.2.1 - UnbuildableException, 12.1.21 - USE_OCAMLFIND, 13.6.2 - USEPDFLATEX, 13.7.1 - USER, 9.1 - uge, 9.4.4 - ugt, 9.4.4 - ule, 9.4.4 - ult, 9.4.4 - umask, 10.5.12 - uncapitalize, 9.3.36 - unlink, 10.5.4 - unsetenv, 9.2.14 - uppercase, 9.3.37 - VERBOSE, 9.1 - VerboseCheckCHeader, 14.1.6 - VerboseCheckCLib, 14.1.7 - value, 4.5, B.2.2.1 - variable definition, A.3.21 - vmount, 2.9, 10.6.1 - wait, 11.10.5 - where, 10.2.2 - which, 10.2.1 - while, 9.3.42, B.2.2.1 - write, 10.8.7 - xterm-escape, 10.11.24 - xterm-escape-begin, 10.11.23 - xterm-escape-end, 10.11.23 - YACC, 13.5.2 Index of variables ****************** - &, B.2.2.5 - *, 8, B.2.2.5 - +, 8, B.2.2.5 - <, 8, B.2.2.5 - >, B.2.2.5 - @, 8, B.2.2.5 - ^, 8, B.2.2.5 - ABORT_ON_COMMAND_ERROR, 13.4.1 - ABORT_ON_DEPENDENCY_ERRORS, 13.6.4 - AR, 13.5.2 - AS, 13.5.2 - ASFLAGS, 13.5.2 - ASOUT, 13.5.2 - BIBTEX, 13.7.1 - BUILD_SUMMARY, 9.1 - BYTE_ENABLED, 13.6.2 - CAMLP4, 13.6.2 - CC, 13.5.2 - CCOUT, 13.5.2 - CDLL_IMPLIES_STATIC, 13.5.4.1 - CFLAGS, 13.5.2 - CL_FOUND, 13.5.1.2 - CPP, 13.5.2 - CWD, 13.4.1 - CXX, 13.5.2 - CXXFLAGS, 13.5.2 - DIRSEP, 13.4.2 - DVIPDFM, 13.7.1 - DVIPDFMFLAGS, 13.7.1 - DVIPS, 13.7.1 - DVIPSFLAGS, 13.7.1 - EMPTY, 13.4.1 - EXE, 13.4.2 - EXT_ASM, 13.4.2 - EXT_DLL, 13.4.2 - EXT_LIB, 13.4.2 - EXT_OBJ, 13.4.2 - GCC_FOUND, 13.5.1.1 - GXX_FOUND, 13.5.1.1 - HOME, 9.1 - HOST, 9.1 - INCLUDES, 13.5.2 - INSTALL, 13.4.2 - ignoreeof, 15.1 - LATEX, 13.7.1 - LATEXFLAGS, 13.7.1 - LD, 13.5.2 - LDFLAGS, 13.5.2 - LDFLAGS_DLL, 13.5.2 - LDOUT, 13.5.2 - LEX, 13.5.2 - LIB_FOUND, 13.5.1.2 - LIBS, 13.5.2 - MACHINE, 9.1 - MAKEINDEX, 13.7.1 - MENHIR_AVAILABLE, 13.6.1 - MENHIR_ENABLED, 13.6.2 - MENHIR_FLAGS, 13.6.3 - NATIVE_ENABLED, 13.6.2 - NCURSES_AVAILABLE, 14.3.1 - NCURSES_CFLAGS, 14.3.1 - NCURSES_CLIBS, 14.3.1 - NCURSES_TERMH_IN_NCURSES, 14.3.1 - NODENAME, 9.1 - OCAML_BYTE_LINK_FLAGS, 13.6.3 - OCAML_CLIBS, 13.6.4 - OCAML_LIB_FLAGS, 13.6.4 - OCAML_LIBS, 13.6.4 - OCAML_LINK_FLAGS, 13.6.3 - OCAML_NATIVE_LINK_FLAGS, 13.6.3 - OCAML_OTHER_LIBS, 13.6.4 - OCAMLC, 13.6.2 - OCAMLCFLAGS, 13.6.3 - OCAMLDEP, 13.6.2 - OCAMLDEP_MODULES, 13.6.2 - OCAMLDEP_MODULES_AVAILABLE, 13.6.1 - OCAMLDEP_MODULES_ENABLED, 13.6.2 - OCAMLDEPFLAGS, 13.6.3 - OCAMLFIND, 13.6.2 - OCAMLFIND_EXISTS, 13.6.1 - OCAMLFINDFLAGS, 13.6.2 - OCAMLFLAGS, 13.6.3 - OCAMLINCLUDES, 13.6.2 - OCAMLLEX, 13.6.2 - OCAMLLEXFLAGS, 13.6.2 - OCAMLLINK, 13.6.2 - OCAMLMKTOP, 13.6.2 - OCAMLOPT, 13.6.2 - OCAMLOPT_EXISTS, 13.6.1 - OCAMLOPTFLAGS, 13.6.3 - OCAMLOPTLINK, 13.6.2 - OCAMLPACKS, 13.6.2 - OCAMLPPFLAGS, 13.6.3 - OCAMLYACC, 13.6.2 - OCAMLYACCFLAGS, 13.6.2 - OMAKE_VERSION, 9.1 - OMAKEPATH, 9.1 - OS_VERSION, 9.1 - OSTYPE, 9.1 - PATHSEP, 13.4.2 - PDFLATEX, 13.7.1 - PDFLATEXFLAGS, 13.7.1 - PID, 9.1 - prompt, 15.1 - READLINE_AVAILABLE, 14.3.2 - READLINE_CFLAGS, 14.3.2 - READLINE_CLIBS, 14.3.2 - READLINE_GNU, 14.3.2 - ROOT, 13.4.1 - SCANNER_MODE, 13.4.1 - SNPRINTF_AVAILABLE, 14.3.3 - STDLIB, 9.1 - STDROOT, 13.4.1 - SYSNAME, 9.1 - stderr, 10.8.1 - stdin, 10.8.1 - stdout, 10.8.1 - TARGETS, 9.1 - TETEX2_ENABLED, 13.7.1 - TEXDEPS, 13.7.2.1 - TEXINPUTS, 13.7.2.1 - TEXVARS, 13.7.2.1 - USE_OCAMLFIND, 13.6.2 - USEPDFLATEX, 13.7.1 - USER, 9.1 - VERBOSE, 9.1 - YACC, 13.5.2 Index of functions and special forms ************************************ - absname, 10.1.9 - accept, 10.8.31 - add, 9.4.3 - add-project-directories, 10.6.2 - add-wrapper, 9.3.27 - addprefix, 9.3.25 - addsuffix, 9.3.19 - addsuffixes, 9.3.21 - and, 9.2.3 - apply, 9.5.2 - applya, 9.5.3 - array, 9.3.1 - asr, 9.4.3 - awk, 10.11.5 - basename, 10.1.4 - bg, 11.10.2 - bind, 10.8.29 - break, 9.3.43 - build, 13.3.6 - CGeneratedFiles, 13.5.3.1 - CheckCHeader, 14.1.6 - CheckCLib, 14.1.7 - CheckProg, 14.1.8 - ConfMsgChecking, 14.1.1 - ConfMsgError, 14.1.2 - ConfMsgFound, 14.1.3 - ConfMsgResult, 14.1.1 - ConfMsgWarn, 14.1.2 - ConfMsgYesNo, 14.1.3 - CProgram, 13.5.4.5 - CProgramCopy, 13.5.4.6 - CProgramInstall, 13.5.4.7 - CXXProgram, 13.5.4.8 - CXXProgramInstall, 13.5.4.8 - c-escaped, 9.3.14 - capitalize, 9.3.35 - cat, 10.11.2 - cd, 11.9.2 - channel-name, 10.8.12 - chmod, 10.5.9 - chown, 10.5.10 - close, 10.8.5 - cmp-versions, 13.2.3 - compare, 9.7.4 - concat, 9.3.3 - connect, 10.8.32 - create-lazy-map, 9.5.4 - create-map, 9.5.4 - DefineCommandVars, 13.2.4 - DynamicCLibrary, 13.5.4.1 - DynamicCLibraryCopy, 13.5.4.2 - DynamicCLibraryInstall, 13.5.4.3 - DynamicCXXLibrary, 13.5.4.9 - DynamicCXXLibraryCopy, 13.5.4.9 - DynamicCXXLibraryInstall, 13.5.4.9 - decode-uri, 9.3.15 - defined, 9.2.10 - defined-env, 9.2.11 - dependencies, 13.3.1 - dependencies-all, 13.3.1 - dependencies-proper, 13.3.1 - digest, 10.2.5 - digest-in-path, 10.2.7 - digest-in-path-optional, 10.2.7 - digest-optional, 10.2.5 - dir, 10.1.1 - dirname, 10.1.5 - dirof, 10.1.7 - div, 9.4.3 - dup, 10.8.13 - dup2, 10.8.14 - echo, 11.9.1 - encode-uri, 9.3.15 - eprint, 10.9 - eprintln, 10.9 - eprintv, 10.10 - eprintvln, 10.10 - eq, 9.4.4 - equal, 9.2.2 - exists-in-path, 10.2.4 - exit, 9.2.9 - export, 9.3.41 - fg, 11.10.3 - fgets, 10.8.35 - file, 10.1.1 - file-check-sort, 10.3.7 - file-exists, 10.3.1 - file-sort, 10.3.6 - filter, 9.3.33 - filter-exists, 10.3.3 - filter-out, 9.3.34 - filter-proper-targets, 10.3.3 - filter-targets, 10.3.3 - find, 10.7.2 - find-build-targets, 13.3.3 - find-in-path, 10.2.6 - find-in-path-optional, 10.2.6 - find-ocaml-targets-in-path-optional, 10.3.5 - find-targets-in-path, 10.3.4 - find-targets-in-path-optional, 10.3.4 - float, 9.4.2 - flush, 10.8.11 - fopen, 10.8.4 - foreach, 9.6.1 - fprint, 10.9 - fprintln, 10.9 - fprintv, 10.10 - fprintvln, 10.10 - fsubst, 10.11.6 - fullname, 10.1.8 - fun, 9.5.1 - ge, 9.4.4 - get-registry, 9.2.15 - getchar, 10.8.33 - getenv, 9.2.12 - getgrgid, 10.11.21 - getgrnam, 10.11.21 - gethostbyname, 10.8.23 - getprotobyname, 10.8.25 - getpwents, 10.11.19 - getpwnam, 10.11.18 - getpwuid, 10.11.18 - gets, 10.8.34 - getservbyname, 10.8.27 - gettimeofday, 10.11.27 - getvar, 9.2.16 - glob, 10.4.1 - grep, 10.11.3 - gt, 9.4.4 - history, 11.11.1 - homename, 10.1.10 - html-escaped, 9.3.14 - html-pre-escaped, 9.3.14 - html-string, 9.3.18 - id-escaped, 9.3.14 - if, 9.2.5 - in, 10.1.3 - include, 4.7 - input-line, 10.8.6 - int, 9.4.1 - intersection, 9.3.30 - intersects, 9.3.31 - jobs, 11.10.1 - join, 9.3.11 - kill, 11.10.6 - LaTeXDocument, 13.7.2.1 - LaTeXDocumentCopy, 13.7.2.3 - LaTeXDocumentInstall, 13.7.2.4 - LocalCGeneratedFiles, 13.5.3.1 - LocalOCamlGeneratedFiles, 13.6.5.1 - LocalTeXGeneratedFiles, 13.7.2.2 - land, 9.4.3 - le, 9.4.4 - length, 9.3.4 - lex, 10.11.7 - lex-search, 10.11.8 - link, 10.5.6 - listen, 10.8.30 - lnot, 9.4.3 - lockf, 10.8.20 - lor, 9.4.3 - lowercase, 9.3.38 - ls, 10.4.2 - lseek, 10.8.8 - lsl, 9.4.3 - lsr, 9.4.3 - lstat, 10.5.3 - lt, 9.4.4 - lxor, 9.4.3 - mapprefix, 9.3.26 - mapsuffix, 9.3.20 - match, 4.10, 9.2.6 - max, 9.4.3 - mem, 9.3.29 - min, 9.4.3 - mkdir, 10.5.1 - mkfifo, 10.8.18 - mod, 9.4.3 - mul, 9.4.3 - neg, 9.4.3 - not, 9.2.1 - nth, 9.3.5 - nth-hd, 9.3.7 - nth-tl, 9.3.8 - OCamlGeneratedFiles, 13.6.5.1 - OCamlLibrary, 13.6.6.1 - OCamlLibraryCopy, 13.6.6.3 - OCamlLibraryInstall, 13.6.6.4 - OCamlPackage, 13.6.6.2 - OCamlProgram, 13.6.6.5 - OCamlProgramCopy, 13.6.6.6 - OCamlProgramInstall, 13.6.6.7 - OMakeFlags, 13.2.1 - OMakeVersion, 13.2.2 - ocaml-escaped, 9.3.14 - open-in-string, 10.8.2 - open-out-string, 10.8.3 - or, 9.2.4 - out-contents, 10.8.3 - pipe, 10.8.17 - print, 10.9 - println, 10.9 - printv, 10.10 - printvln, 10.10 - project-directories, 13.3.4 - prompt-invisible, 10.11.26 - prompt-invisible-begin, 10.11.25 - prompt-invisible-end, 10.11.25 - quote, 9.3.16 - quote-argv, 9.3.17 - RunCProg, 14.1.5 - raise, 9.2.8 - random, 9.3.44 - random-init, 9.3.44 - read, 10.8.6 - readlink, 10.5.8 - rehash, 10.2.3 - remove-project-directories, 10.6.3 - removeprefix, 9.3.22 - removesuffix, 9.3.23 - rename, 10.5.5 - replace-nth, 9.3.6 - replacesuffixes, 9.3.24 - rev, 9.3.10 - rewind, 10.8.9 - rootname, 10.1.6 - rule, 13.3.5 - StaticCLibrary, 13.5.4.1 - StaticCLibraryCopy, 13.5.4.2 - StaticCLibraryInstall, 13.5.4.3 - StaticCObject, 13.5.4.4 - StaticCObjectCopy, 13.5.4.4 - StaticCObjectInstall, 13.5.4.4 - StaticCXXLibrary, 13.5.4.9 - StaticCXXLibraryCopy, 13.5.4.9 - StaticCXXLibraryInstall, 13.5.4.9 - scan, 10.11.4 - section, 8.3 - section rule, 8.4 - select, 10.8.19 - sequence-forall, 9.7.1 - sequence-sort, 9.7.3 - set, 9.3.28 - set-close-on-exec-mode, 10.8.16 - set-diff, 9.3.32 - set-nonblock, 10.8.15 - setenv, 9.2.13 - setvar, 9.2.17 - shell, 9.3.40 - socket, 10.8.28 - split, 9.3.2 - stat, 10.5.3 - stat-reset, 10.3.2 - stop, 11.10.4 - string, 9.3.12 - string-escaped, 9.3.14 - string-length, 9.3.13 - sub, 9.4.3 - subdirs, 10.4.3 - subrange, 9.3.9 - suffix, 10.1.11 - switch, 4.10, 9.2.6 - symlink, 10.5.7 - system, 9.3.39 - TeXGeneratedFiles, 13.7.2.2 - TryCompileC, 14.1.4 - TryLinkC, 14.1.4 - TryRunC, 14.1.4 - target, 13.3.2 - target-exists, 10.3.1 - target-is-proper, 10.3.1 - tell, 10.8.10 - test, 10.7.1 - tgetstr, 10.11.22 - tmpfile, 10.1.2 - truncate, 10.5.11 - try, 9.2.7 - uge, 9.4.4 - ugt, 9.4.4 - ule, 9.4.4 - ult, 9.4.4 - umask, 10.5.12 - uncapitalize, 9.3.36 - unlink, 10.5.4 - unsetenv, 9.2.14 - uppercase, 9.3.37 - VerboseCheckCHeader, 14.1.6 - VerboseCheckCLib, 14.1.7 - vmount, 10.6.1 - wait, 11.10.5 - where, 10.2.2 - which, 10.2.1 - while, 9.3.42 - write, 10.8.7 - xterm-escape, 10.11.24 - xterm-escape-begin, 10.11.23 - xterm-escape-end, 10.11.23 Index of objects **************** - Array, 12.1.7 - Channel, 12.1.15 - Dir, 12.1.14 - Exception, 12.1.19 - File, 12.1.13 - Float, 12.1.5 - Fun, 12.1.9 - Group, 10.11.20 - Host, 10.8.22 - InChannel, 12.1.16 - InetAddr, 10.8.21 - Int, 12.1.4 - Lexer, 10.11.9 - Location, 12.1.18 - Map, 12.1.2 - Node, 12.1.12 - Number, 12.1.3 - Object, 12.1.1 - OutChannel, 12.1.17 - Parser, 10.11.13 - Passwd, 10.11.17 - Protocol, 10.8.24 - Rule, 12.1.10 - RuntimeException, 12.1.20 - Sequence, 12.1.6 - Service, 10.8.26 - Shell, 12.1.22 - Stat, 10.5.2 - String, 12.1.8 - Target, 12.1.11 - UnbuildableException, 12.1.21 Index of special targets ************************ - .BUILD_BEGIN, 13.1 - .BUILD_FAILURE, 13.1 - .BUILD_SUCCESS, 13.1 - .BUILDORDER, 10.3.6 - .DEFAULT, 8.7, 8.12.1 - .INCLUDE, 8.9 - .MEMO, 4.14.1.1 - .ORDER, 10.3.6 - .PHONY, 8.10, 8.11.3, 8.12.1, 8.12.2 - .SCANNER, 8.6, 8.11.2 - .STATIC, 4.14.1 - .SUBDIRS, 8.8 Index of options **************** - --absname, A.3.20 - --all-dependencies, A.3.15 - --configure, A.3.9 - --depend, A.3.8 - --dotomake, A.3.11 - --force-dotomake, A.3.10 - --install, A.3.17 - --install-all, A.3.18 - --install-force, A.3.19 - --output-at-end, A.2.11 - --output-normal, A.2.8 - --output-only-errors, A.2.10 - --output-postpone, A.2.9 - --print-dependencies, A.3.13 - --print-exit, A.2.6 - --print-status, A.2.5 - --progress, A.2.4 - --show-dependencies, A.3.14 - --verbose, A.2.7 - --verbose-dependencies, A.3.16 - -j, A.3.12 - -k, A.3.1 - -n, A.3.2 - -o, A.2.12 - -P, A.3.4 - -p, A.3.3 - -R, A.3.5 - -S, A.2.2 - -s, A.2.1 - -t, A.3.6 - -U, A.3.7 - -w, A.2.3 - variable definition, A.3.21 Appendix C References ************************ C.1 See Also *=*=*=*=*=*=* omake(1) (Chapter 1), osh(1) (Chapter 15), make(1) C.2 Version *=*=*=*=*=*= Version: 0.9.8.5 of 7^thAugust, 2007. C.3 License and Copyright *=*=*=*=*=*=*=*=*=*=*=*=*= (c) 2003-2006, Mojave Group, Caltech This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. C.4 Author *=*=*=*=*=* Jason Hickey, Aleksey Nogin, et. al. Caltech 256-80 Pasadena, CA 91125, USA Email: omake-devel@metaprl.org WWW: http://www.cs.caltech.edu/~jyh and http://nogin.org/ ----------------------------------------------------------------------- This document was translated from LaTeX by HeVeA (1). ----------------------------------- (1) http://hevea.inria.fr/index.html omake-0.9.8.5/omake.aip0000664000152300015230000003304410655737107012741 0ustar jyhjyh omake-0.9.8.5/make_dmg0000775000152300015230000000406610631331016012625 0ustar jyhjyh#!/bin/sh # OSX_DIR="`pwd`/osx_resources" OSX_TMP_INSTALL="$OSX_DIR/install" VERSION=`cat version.txt` VERSION_MAJOR=`cut -f 1 -d . version.txt` VERSION_MINOR=`cut -f 2 -d . version.txt` case `uname -p` in powerpc) ARCH=ppc;; *) ARCH=x86;; esac OMAKE_BASE=OMake-$VERSION-$ARCH usage () { echo "Usage: $0 ( all | install | pkg | dmg | clean | upload )" echo " '$0 all' is equivalent to" echo " '$0 install; $0 pkg; $0 dmg'" exit 1 } mkinstall () { set -x sudo rm -rf $OSX_TMP_INSTALL || exit 1 INSTALL_ROOT=$OSX_TMP_INSTALL make install || exit 1 # Install the html docs -- there's no omake target for it yet mkdir -p $OSX_TMP_INSTALL/usr/local/share/doc/omake cp -r doc/html/ $OSX_TMP_INSTALL/usr/local/share/doc/omake rm -rf `find $OSX_TMP_INSTALL/usr/local/share/doc/omake -name .svn` sudo chown -R root:wheel $OSX_TMP_INSTALL/usr || exit 1 } pkg () { set -x year=`date "+%Y"` cat $OSX_DIR/Info.plist.in \ | sed "s/##Version##/$VERSION/g" \ | sed "s/##Year##/$year/g" \ | sed "s/##MajorVersion##/$VERSION_MAJOR/g" \ | sed "s/##MinorVersion##/$VERSION_MINOR/g" \ > $OSX_DIR/Info.plist packagemaker -build -p $OMAKE_BASE.pkg \ -f $OSX_TMP_INSTALL/usr/local \ -i $OSX_DIR/Info.plist \ -d $OSX_DIR/Description.plist \ -r $OSX_DIR/installer_files } dmg () { set -x rm -f $OMAKE_BASE.dmg hdiutil create -srcfolder ./$OMAKE_BASE.pkg $OMAKE_BASE.dmg } clean () { cd $OSX_DIR sudo rm -rf Info.plist $OMAKE_BASE.pkg $OMAKE_BASE.dmg install || exit 1 } upload () { set -x scp $OMAKE_BASE.dmg mojave.caltech.edu:~mojave/public_html/download/omake/ } if [ "$#" -lt "1" ]; then usage else case $1 in all) mkinstall pkg dmg ;; install) mkinstall ;; pkg|dmg|clean|upload) $1 ;; *) echo "No such target: $1" usage ;; esac fi omake-0.9.8.5/version.txt0000664000152300015230000000001210657143063013357 0ustar jyhjyh0.9.8.5-3 omake-0.9.8.5/osx_resources/0000775000152300015230000000000010660137227014042 5ustar jyhjyhomake-0.9.8.5/osx_resources/Description.plist0000664000152300015230000000052010265613216017375 0ustar jyhjyh IFPkgDescriptionDescription The OMake Build System IFPkgDescriptionTitle OMake omake-0.9.8.5/osx_resources/Info.plist.in0000664000152300015230000000247410615506332016423 0ustar jyhjyh CFBundleGetInfoString Version ##Version##, Copyright © 2000-##Year## Jason Hickey CFBundleIdentifier org.metaprl.omake CFBundleShortVersionString ##Version## IFMajorVersion ##MajorVersion## IFMinorVersion ##MinorVersion## IFPkgFlagAllowBackRev IFPkgFlagAuthorizationAction RootAuthorization IFPkgFlagBackgroundAlignment topleft IFPkgFlagBackgroundScaling none IFPkgFlagDefaultLocation /usr/local IFPkgFlagFollowLinks IFPkgFlagInstallFat IFPkgFlagIsRequired IFPkgFlagOverwritePermissions IFPkgFlagRelocatable IFPkgFlagRestartAction NoRestart IFPkgFlagRootVolumeOnly IFPkgFlagUpdateInstalledLanguages IFPkgFormatVersion 0.10000000149011612 omake-0.9.8.5/osx_resources/OMake.pmproj0000664000152300015230000000416610615506332016273 0ustar jyhjyhbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ Troot€¯< %+158MTW\]abfjnruŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´¸¹½¾ÂÃCÄPÅÆÎÏÐÑÒÓÖÚU$nullÜ  !"$^documentFormatYbuildPathYresources_requirementsPlist_requirementsVolumeCheckScript\pathMappingsTinfoV$classTdesc_fileFilterPatterns_requirementsInstallCheckScript_locatorDefinitions €8€€€€€€;€3€9€€Ó&'()*ZNS.objectsWNS.keys  €Ò,-./X$classesZ$classname¢/0\NSDictionaryXNSObjectÓ&'234  €Ò,-67£7/0_NSMutableDictionaryÛ9:;<=>?@ABCCDEF HIJKLYalignmentWscalingWlicenseZconclusion_localizedMimeResourcesUmodelZbackgroundVreadmeWwelcomeVextras€ € €€€€ €€€ÔNO>P STtypeTpath€€€Ò,-UV¢V0YLocalPathÔNO>XY S€ €€_installer_files/ReadMe.txtÔNO>X^ S€ €€_installer_files/License.txtÔNO>P S€€€ÔNO>P S€€€ÔNO>P S€€€Ó&'op4  €Ò,-st¢t0YResourcesÓ&'vŠ4¯wxxx{|www€‚x„w†ww‰€&€'€'€'€(€*€&€&€&€,€.€/€'€0€&€1€&€&€2¯‹ŒŽ‘’“”•–—˜™š›œ€€€€€€€€€€€€€€ €!€"€#€$€%€]preserveForks[followLinks]removeDSStore\allowBackRevXcontentsYtempBuildZinstallFat^rootVolumeOnly_updateInstalledLanguages_installLocationWgetInfo]authorizationXcompressZidentifier_overwritePermissionsZonFinished[relocatableXrequired\shortVersion ÔNO>Xµ S€)€€_install/usr/localÔNO>Pº S€+€€T/tmpÔNO>P¿ S€-€€Z/usr/localo5Version 0.9.8.2-1, Copyright © 2000-2007 Jason Hickey_org.metaprl.omakeY0.9.8.2-1Ó&'ÇÊ4¢ÈÉ€6€7¢ËÌ€4€5€[descriptionUtitle_The OMake Build SystemUOMake_N/Users/n8gray/research/omake/release/0.9.8.2/osx_resources/OMake-0.9.8.2-1.pkgÒ&ÔÕ €:Ò,-ר£ØÙ0^NSMutableArrayWNSArrayÒ,-ÛÜ£ÜÝ0WSPModelVPModel$)2DILQS’˜±ÀÊÔè!&;\qsuwy{}ƒ…‡‰›£¤¥§¬µÀÃÐÙàáâäéí$,4?X^ipxƒ…‡‰‹‘“œ¡¦¨ª¬®³¶ÀÉËÍÏÑî÷ùûý$&(*3579BDFHOPQSX[el‚„†ˆŠŒŽ’”–˜šœž ¢¤¦¨¾ÀÂÄÆÈÊÌÎÐÒÔÖØÚÜÞàâäæô$.9Hcu}‹”Ÿ¶ÁÍÖãäåîðòô%')+6£·ÁÈËÍÏÒÔÖØäê Z_`bgkz‚‡‹“Þšomake-0.9.8.5/osx_resources/installer_files/0000775000152300015230000000000010660137227017221 5ustar jyhjyhomake-0.9.8.5/osx_resources/installer_files/ReadMe.txt0000664000152300015230000000071510576713765021137 0ustar jyhjyhThis package installs OMake in the directories under /usr/local. To use it you need to be sure that /usr/local/bin is in your PATH. If you use bash, add the following to your ~/.bashrc file: export PATH=$PATH:/usr/local/bin If you use csh or tcsh, add the following to your ~/.cshrc or ~/.tcshrc file: setenv PATH $PATH:/usr/local/bin To get started with OMake, open your web browser to the URL: file://usr/local/share/doc/omake/html/index.html omake-0.9.8.5/osx_resources/installer_files/preflight0000775000152300015230000000015310616475055021137 0ustar jyhjyh#!/bin/sh # This should be /usr/local dest=$2 find $dest/lib/omake -name \*.omc -exec rm -f {} \; exit 0 omake-0.9.8.5/osx_resources/installer_files/License.txt0000664000152300015230000004313110265613216021344 0ustar jyhjyh GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. omake-0.9.8.5/make_checkout0000664000152300015230000000061510655737325013677 0ustar jyhjyh# # Configuration # . config_rpm # # Build an RPM package for omake # TMPDIR=`mktemp -d /tmp/omake.XXXXXX` || exit 1 # # Clean up on exit or error # cleanup () { rm -rf $TMPDIR } trap cleanup 0 1 2 15 cd $TMPDIR # # Check out a fresh copy of omake # #svn co http://svn.metaprl.org/svnroot/mojave/omake svn export http://svn.metaprl.org/svnroot/mojave/omake-branches/0.9.8.5 omake-$VERSION omake-0.9.8.5/OMakeroot0000664000152300015230000000074410513216722012762 0ustar jyhjyh# # We want the ocamldep-omake to be accessible through the standard path. # PATH[] += $(dir ocamldep) # # Do not search elsewhere for standard libraries # OMAKEPATH[] = . $(dir lib) # # Include the standard configuration # include build/C include build/OCaml include build/LaTeX # # Include the definition functions # include boot/License include boot/Default # # Include configuration utilities # include configure/Configure # # Include the OMakefile # .SUBDIRS: . omake-0.9.8.5/make_zip0000775000152300015230000000030410311465505012655 0ustar jyhjyh#!/bin/sh -x # # Check out a fresh copy of omake # . make_checkout # # Make a source zip # mkdir -p $OMAKE/download rm -f $OMAKE/download/$SRC_ZIP zip -r $OMAKE/download/$SRC_ZIP omake-$VERSION omake-0.9.8.5/README.WIN320000664000152300015230000000135110535636746012633 0ustar jyhjyhPlease read the INSTALL file. To summarize, you need to build a bootstrap version of omake, then use the bootstrap executable to complete the build. Run the following from a console window (you may need to use the Visual Studio Console Window). nmake -f Makefile.nt bootstrap Next, open the .config file in a text editor and tweak the build parameters (including the installation directory) if needed. Now, run the following from a console window (again, you may need to use the Visual Studio Console Window). nmake -f Makefile.nt install If you have already created the .config or if you are happy to use the default build parameters and the default installation directory, you can skip all the steps except for the very last one. omake-0.9.8.5/RPM/0000775000152300015230000000000010660137227011575 5ustar jyhjyhomake-0.9.8.5/Makefile.nt0000664000152300015230000000254410624346500013220 0ustar jyhjyh# # Bootstrap program is omake-boot.exe # default: @echo "If you have already built omake, you should use it instead of make." @echo "If you need to bootstrap, use " @echo " - 'nmake -f Makefile.nt bootstrap'," @echo " to build the bootstrapping (feature-limited) OMake binary 'omake-boot.exe'." @echo " - 'nmake -f Makefile.nt all'," @echo " to bootstrap and then build everything." @echo " - 'nmake -f Makefile.nt install'," @echo " to bootstrap, build, and install everything." @exit 1 NMAKE = $(MAKE) /nologo -f Makefile.nt bootstrap: boot\Makefile.nt boot\Makefile.dep cd boot $(NMAKE) Makefile.dep $(NMAKE) omake.exe copy omake.exe ..\omake-boot.exe cd .. .config: echo # Empty config > .config all: bootstrap .config set OMAKEFLAGS= set OMAKEPATH=lib .\omake-boot --dotomake .omake --force-dotomake -j2 main src\main\osh.exe src\main\omake --dotomake .omake --force-dotomake -j2 all install: all set OMAKEFLAGS= set OMAKEPATH=lib .\omake-boot --dotomake .omake --force-dotomake -j2 install aip-install: all mkdir ..\omake-install set OMAKEFLAGS= set OMAKEPATH=lib set BINDIR=../omake-install/bin set LIBDIR=../omake-install/lib .\omake-boot --dotomake .omake --force-dotomake -j2 install boot\Makefile.nt: src\Makefile.nt -mkdir boot copy src\Makefile.nt boot\Makefile.nt boot\Makefile.dep: echo # Dependencies > $@ omake-0.9.8.5/OMakefile0000664000152300015230000001161610637016411012716 0ustar jyhjyh######################################################################## # Configuration. # open build/C open build/svn_realclean include mk/defaults include mk/make_gen .PHONY: realclean clean install all main # # Architecture-specific configuration # if $(equal $(OSTYPE), Win32) # # Extra options for the C compiler # CFLAGS += /MT /DWIN32 /W4 /WX # # Don't build man pages # MAN_ENABLED = false # # Always use threads # THREADS_ENABLED = true export else # # Extra options for the C compiler # CFLAGS += -g -O2 -Wall -Werror -Wno-unused # # We never need threads on Unix # THREADS_ENABLED = false export # # General options # SCANNER_MODE = error # # Location of the OCaml library # if $(not $(defined CAMLLIB)) CAMLLIB = $(dir $(string $(getenv CAMLLIB, $(getenv OCAMLLIB, $(CAMLLIB_DEFAULT))))) export # # OCaml options # OCAMLFLAGS[] += -w Ae$(if $(OCAML_ACCEPTS_Z_WARNING), z) if $(THREADS_ENABLED) OCAMLFLAGS += -thread export # # Support for profiling # if $(not $(defined NATIVE_PROFILE)) NATIVE_PROFILE = false export if $(NATIVE_PROFILE) OCAMLOPTFLAGS += -p -inline 0 if $(equal $(NATIVE_PROFILE), compact) OCAMLOPTFLAGS += -compact export export # # Libraries (without suffixes) # OCAML_OTHER_LIBS = unix if $(THREADS_ENABLED) OCAML_OTHER_LIBS += threads export # # C options # INCLUDES += $(CAMLLIB) . EXTRA_CLIBS[] = if $(READLINE_ENABLED) CFLAGS += $(READLINE_CFLAGS) EXTRA_CLIBS += $(READLINE_CLIBS) export if $(NCURSES_ENABLED) CFLAGS += $(NCURSES_CFLAGS) EXTRA_CLIBS += $(NCURSES_CLIBS) export if $(FAM_ENABLED) CFLAGS += $(FAM_CFLAGS) EXTRA_CLIBS += $(FAM_CLIBS) export OCAML_LINK_FLAGS = $(mapprefix -cclib, $(set $(EXTRA_CLIBS))) # # Name of the genmagic program # VERSION_TXT = $(file version.txt) GENMAGIC = $(file src/magic/omake_gen_magic) ######################################################################## # Clean up # CLEAN = rm -rf *.cm* *~ .\#* *.o *.obj *.a *.lib *.exe *.omc *.install *.tmp clean: $(CLEAN) boot .config.omc .config.local.omc .omakedb* mk/*.omc .omake omake-boot$(EXE) lib/*.default download if $(not $(defined FORCE_REALCLEAN)) FORCE_REALCLEAN = false export realclean: clean svn_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock -i .config -i .config.local ######################################################################## # Source code # .SUBDIRS: src ocamldep ######################################################################## # Packaging # .PHONY: rpm tar zip pkg dmg osxclean publish VERSION=$(string $(cat version.txt)) RELEASE=0.devel match $(VERSION) case $'^\([^ ]*\)-\([^ ]*\)$' VERSION=$1 RELEASE=$2 export case $'^\([^ ]*\) ' VERSION=$1 export BASENAME = omake-$(VERSION)-$(RELEASE) rpm: version.txt make_rpm make_checkout ./make_rpm zip: download/$(BASENAME).src.zip tar: download/$(BASENAME).tar.gz download/$(BASENAME).src.zip: make_zip make_checkout ./make_zip download/$(BASENAME).tar.gz: make_tar make_checkout ./make_tar dmg: version.txt ./make_dmg dmg pkg: version.txt ./make_dmg pkg osxclean: version.txt ./make_dmg clean publish: download/$(BASENAME).src.zip download/$(BASENAME).tar.gz rsync --progress --stats -lrt $^ mojave.caltech.edu\:/home/mojave/public_html/download/omake omake.spec: omake.spec.in echo $"%define index $(RELEASE)" > $@ echo $"Version: $(VERSION)" >> $@ cat $< >> $@ .DEFAULT: omake.spec ######################################################################## # Documentation # .PHONY: txt info html tex doc doc: txt info html tex .SUBDIRS: doc ######################################################################## # Standard library # .SUBDIRS: $(subdirs C, lib) %.install: %.om $(GENMAGIC)$(EXE) $(VERSION_TXT) $(GENMAGIC) -o $@ --version $(VERSION_TXT) --root $< clean: $(CLEAN) STDLIBFILES = $(find lib -name *.om) INSTALLFILES = $(replacesuffixes .om, .install, $(STDLIBFILES)) STDLIBNAMES = $(removesuffix .om, $(in lib, $(STDLIBFILES))) BOOTFILES[] = lib/boot/License lib/boot/Default DEFAULTFILES[] = lib/OMakeroot.default lib/OMakefile.default lib/OMakeroot.default: $(BOOTFILES) fprint($@, $(OMakeroot)) lib/OMakefile.default: $(BOOTFILES) fprint($@, $(OMakefile)) ######################################################################## # Installation # name = all: $(DEFAULTFILES) $(INSTALLFILES) install: $(DEFAULTFILES) $(INSTALLFILES) mkdir -p $(INSTALL_LIBDIR)/omake cp -f -m 444 $(DEFAULTFILES) $(INSTALL_LIBDIR)/omake/ foreach(name, $(STDLIBNAMES)) node = $(file $(INSTALL_LIBDIR)/omake/$(name).om) mkdir -p $(dirof $(node)) cp -f -m 444 lib/$(name).install $(node) ######################################################################## # Testing # .PHONY: check .SUBDIRS: test omake-0.9.8.5/make_rpm0000775000152300015230000000054110117731276012661 0ustar jyhjyh#!/bin/sh -x # # Configuration # . config_rpm # # Make a tarball # ./make_tar # # Build the RPM # BUG: --nodeps is needed only for the build on Cygwin. # rpmbuild -ta --nodeps download/$TARBALL # # Copy the packages back here # if [ -d $OMAKE/RPM ]; then cp $RPMROOT/RPMS/$ARCHTYPE/$BINFILE $OMAKE/RPM cp $RPMROOT/SRPMS/$SRCFILE $OMAKE/RPM fi omake-0.9.8.5/omake.spec.in0000664000152300015230000000411310624675710013517 0ustar jyhjyhRelease: %{index}%{?dist} Summary: The omake build system. Name: omake URL: http://omake.metaprl.org/ Source0: %{name}-%{version}-%{index}.tar.gz License: GPL Group: Development/Tools BuildRoot: %{_tmppath}/%{name}-root BuildRequires: ocaml >= 3.09.2, make, fam-devel, readline-devel, ncurses-devel %define debug_package %{nil} %description OMake is a build system, similar to GNU make, but with many additional features, including: - Support for large projects spanning multiple directories; - Support for commands that produce several targets at once; - Fast, accurate, automated dependency analysis using MD5 digests; - Portability: omake provides a consistent interface on Win32 and on Unix systems including Linux, OSX, and Cygwin; - Builtin functions that provide the most common features of programs like grep, sed, and awk; - Active filesystem monitoring, where the build automatically restarts whenever you modify a source file. %prep %setup -q %build INSTALL_ROOT=$RPM_BUILD_ROOT\ PREFIX=%{_prefix}\ BINDIR=%{_bindir}\ LIBDIR=%{_libdir}\ make all %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT%{_bindir} mkdir -p $RPM_BUILD_ROOT%{_libdir}/omake INSTALL_ROOT=$RPM_BUILD_ROOT\ PREFIX=%{_prefix}\ BINDIR=%{_bindir}\ LIBDIR=%{_libdir}\ make install chmod +w $RPM_BUILD_ROOT/%{_bindir}/* %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %doc LICENSE LICENSE.OMake doc/txt/omake-doc.txt doc/ps/omake-doc.ps doc/ps/omake-doc.pdf doc/html CHANGELOG.txt ocamldep/LICENSE.ocamldep-omake %attr(555,root,root) %{_bindir}/* %{_libdir}/omake %changelog * Thu Dec 11 2006 Aleksey Nogin [0.9.8-1] - Updated for the new doc file list and the lack of the man pages. * Thu Aug 16 2005 Aleksey Nogin - Updated to account for the new non-autoconf build style. * Mon Sep 9 2004 Aleksey Nogin - Added doc files. * Thu May 8 2003 Jason Hickey - Added cvs_realclean * Tue Apr 22 2003 Aleksey Nogin - Path updates * Tue Apr 22 2003 Jason Hickey - Initial build. omake-0.9.8.5/src/0000775000152300015230000000000010660137256011730 5ustar jyhjyhomake-0.9.8.5/src/libmojave-external/0000775000152300015230000000000010660137261015514 5ustar jyhjyhomake-0.9.8.5/src/libmojave-external/util/0000775000152300015230000000000010660137263016473 5ustar jyhjyhomake-0.9.8.5/src/libmojave-external/util/lm_symbol.mli0000664000152300015230000001072310456222231021167 0ustar jyhjyh(* * Right now the symbol table is just a representation of strings. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu * * ---------------------------------------------------------------- * Revision History * * 2002 Dec 4 Michael Maire Added SymbolIndex * Added sets, tables, indices for * symbol pairs and triples *) open Lm_printf (* * Representation of symbols. *) type symbol type var = symbol (* * Debugging adds extra qualifiers to new symbols. *) val debug_symbol : bool ref (* * An "empty" variable name *) val empty_var : symbol (* * Add a symbol to the table. *) val add : string -> symbol val make : string -> int -> symbol val is_interned : symbol -> bool val reintern : symbol -> symbol val is_numeric_symbol : symbol -> bool (* * Make a new symbol. *) val new_symbol : symbol -> symbol val new_symbol_pre : string -> symbol -> symbol val new_symbol_string : string -> symbol val to_int : symbol -> int val to_string : symbol -> string (* * Find a symbol for which the predicate is false. *) val new_name : symbol -> (symbol -> bool) -> symbol val new_name_gen : symbol -> (symbol -> 'a option) -> 'a (* * Get back the string. *) val string_of_symbol : symbol -> string val string_of_ext_symbol : symbol -> string (* * Compare two symbols for equality. *) val eq : symbol -> symbol -> bool (* * Ordered comparisons of symbols. *) val compare : symbol -> symbol -> int (* * Ordered comparisons of symbol pairs. *) val compare_pair : symbol * symbol -> symbol * symbol -> int (* * Ordered comparisons of symbol triples. *) val compare_triple : symbol * symbol * symbol -> symbol * symbol * symbol -> int (* * We also provide a function to produce a unique integer. *) val new_number : unit -> int (* * This table provides associations between symbols * and values. *) module SymbolSet : Lm_set_sig.LmSet with type elt = symbol module SymbolTable : Lm_map_sig.LmMap with type key = symbol module SymbolMTable : Lm_map_sig.LmMapList with type key = symbol module SymbolIndex : Lm_index.LmIndex with type key = symbol module SymbolPairSet : Lm_set_sig.LmSet with type elt = symbol * symbol module SymbolPairTable : Lm_map_sig.LmMap with type key = symbol * symbol module SymbolPairMTable : Lm_map_sig.LmMapList with type key = symbol * symbol module SymbolPairIndex : Lm_index.LmIndex with type key = symbol * symbol module SymbolTripleSet : Lm_set_sig.LmSet with type elt = symbol * symbol * symbol module SymbolTripleTable : Lm_map_sig.LmMap with type key = symbol * symbol * symbol module SymbolTripleMTable : Lm_map_sig.LmMapList with type key = symbol * symbol * symbol module SymbolTripleIndex : Lm_index.LmIndex with type key = symbol * symbol * symbol (* * Symbol lists. *) module SymbolListSet : Lm_set_sig.LmSet with type elt = symbol list module SymbolListTable : Lm_map_sig.LmMap with type key = symbol list (* * This printer uses printf. *) val output_symbol : out_channel -> symbol -> unit val output_symbol_list : out_channel -> symbol list -> unit val output_symbol_set : out_channel -> SymbolSet.t -> unit (* * Format versions. *) val pp_print_symbol : formatter -> symbol -> unit val pp_print_symbol_list : formatter -> symbol list -> unit val pp_print_symbol_set : formatter -> SymbolSet.t -> unit val pp_print_ext_symbol : formatter -> symbol -> unit (* * -*- * Local Variables: * Caml-master: "set" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_config.mli0000664000152300015230000000245310456222231021130 0ustar jyhjyh(* * Configurations. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) type code = ByteCode | NativeCode val code : code (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_position.mli0000664000152300015230000000507010456222231021525 0ustar jyhjyh(* * Lm_position informat for debugging. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Lm_location open Lm_printf (* * Lm_debug flags. *) val debug_pos : bool ref val trace_pos : bool ref (* * Lm_position information. *) type 'a pos (* * Module for creating positions. * You have to specify the name of the module * where the exception are being created: use * MakePos in each file where Name.name is set * to the name of the module. *) module type PosSig = sig type t (* Creating positions *) val loc_exp_pos : loc -> t pos val loc_pos : loc -> t pos -> t pos val base_pos : t -> t pos val cons_pos : t -> t pos -> t pos val pos_pos : t pos -> t pos -> t pos val int_pos : int -> t pos -> t pos val string_pos : string -> t pos -> t pos val symbol_pos : symbol -> t pos -> t pos val del_pos : (out_channel -> unit) -> loc -> t pos val del_exp_pos : (out_channel -> unit) -> t pos -> t pos (* Utilities *) val loc_of_pos : t pos -> loc val pp_print_pos : formatter -> t pos -> unit end module type NameSig = sig type t (* This is the name of the module where the position info is created *) val name : string (* Utilities for managing values *) val loc_of_value : t -> loc val pp_print_value : formatter -> t -> unit end module MakePos (Name : NameSig) : PosSig with type t = Name.t (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_string_hash.ml0000664000152300015230000000313110654712563022031 0ustar jyhjyh(* * A path is like a Node, but it represents a name within * a search path. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_hash open Lm_printf open Lm_location open Lm_hash_sig (* * Compare two paths. *) module StringCompare = struct type t = string let debug = "StringHash" let hash = Hashtbl.hash let compare = String.compare let reintern s = s end module StringHash : HashMarshalSig with type elt = string = MakeHashMarshal (StringCompare);; module StringHashSet = Lm_set.LmMake (StringHash);; module StringHashTable = Lm_map.LmMake (StringHash);; let pp_print_string_hash buf s = pp_print_string buf (StringHash.get s) (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/libmojave-external/util/lm_profile.mli0000664000152300015230000000231510456222231021320 0ustar jyhjyh(* Profiling code Copyright (C) 2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) val difference_of : Unix.process_times -> Unix.process_times -> float val profile : string -> ('a -> 'b) -> 'a -> 'b val profile_file_opened : bool ref val profile_file : string ref val profile_out : out_channel ref omake-0.9.8.5/src/libmojave-external/util/lm_arg.ml0000664000152300015230000006126610614470556020305 0ustar jyhjyh(* * Parsing command line arguments, MCC-style. Arguments to options * may be separated from the option by a space, or may be placed * immediately after the option (without space) IF the option is * not ambiguous. Also, options may be abbreviated as long as the * short form is not ambiguous. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Authors: Jason Hickey * Justin David Smith * Modified By: Aleksey Nogin *) open Lm_printf (*** Basic Specifications ***) (* spec Argument specification. Each option uses this specification to indicate what type of argument (if any) the option takes. The following option specifications are defined. Unit f: Call an arbitrary function f () Set b: Set the boolean (reference) value b to true Clear b: Set the boolean (reference) value b to false String f: Takes one argument: call function f Int f: Takes one argument: call function f Float f: Takes one argument: call function f Rest f: Call function f , for all remaining arguments section = (name, spec, desc) list Used to define a group of related arguments. (name, spec) indicate the option name and option specification. desc gives a textual description of the option. sections = (desc, section) list Used to define all option groups. Each option group is prefixed by desc which briefly describes the section. *) type 'a poly_spec = (* Imperative versions *) Unit of (unit -> unit) | Set of bool ref | Clear of bool ref | String of (string -> unit) | Int of (int -> unit) | Float of (float -> unit) | Rest of (string -> unit) (* Functional versions *) | UnitFold of ('a -> 'a) | SetFold of ('a -> bool -> 'a) | ClearFold of ('a -> bool -> 'a) | StringFold of ('a -> string -> 'a) | IntFold of ('a -> int -> 'a) | FloatFold of ('a -> float -> 'a) | RestFold of ('a -> string -> 'a) (* Usage message *) | Usage (* spec_mode StrictOptions: options are processed literally, and may not be collapsed into multi-letter options. MultiLetterMode: single-letter options of the form -x may be collapsed into multi-letter options. *) type spec_mode = StrictOptions | MultiLetterOptions type 'a poly_section = (string * 'a poly_spec * string) list type 'a poly_sections = spec_mode * (string * 'a poly_section) list type spec = unit poly_spec type section = unit poly_section type sections = unit poly_sections (* parsing mode StrictMode: options are processed literally, and may not be collapsed into multi-letter options. MultiLetterMode: single-letter options may be collapsed. MultiLetterPending: processing a multi-letter option *) type mode = StrictMode | MultiLetterMode | MultiLetterPending of string * int (* BogusArg Thrown by option processing when something goes wrong... *) exception BogusArg of string (* UsageError Thrown on --help *) exception UsageError (*** Option Table ***) (* CharCompare, CharTable Defines a table indexed by individual characters. *) module CharCompare = struct type t = char let compare (c1 : char) (c2 : char) = if c1 < c2 then -1 else if c1 > c2 then 1 else 0 end (* CharCompare *) module CharTable = Lm_map.LmMake (CharCompare);; (* options The option table is a tree, where each edge is labelled by a character. To lookup the specification for an option, we walk the tree using the characters of the option until we reach a node that has a specification associated with it. This tree is used to help us identify unambiguous prefixes, and also to determine where an option name ends and its value begins (when the name and value are not space-delimited). option_node The type of a node in the options tree. Each node contains a spec if the node matches an option name, and may contain a subtree if there is at least one longer option that has this prefix. SpecNode spec: Leaf node; this branch corresponds to the spec. NameNode tree: No option corresponds to this branch, but there are options in the subtree. SpecOrName (spec, tree): This branch corresponds to an option with the indicated spec; there are also suboptions in the indicated subtree. *) type 'a option_node = SpecNode of 'a poly_spec | NameNode of 'a option_node CharTable.t | SpecOrName of 'a poly_spec * 'a option_node CharTable.t type 'a options = 'a option_node CharTable.t (* is_alnum test if a letter is a letter or number *) let is_alnum = function 'a'..'z' | 'A'..'Z' | '0'..'9' -> true | _ -> false (* char_table_lookup Lookup an entry in the char table. If no entry exists in the table, then None is returned (instead of raising an exception). *) let char_table_lookup table ch = try Some (CharTable.find table ch) with Not_found -> (* If the character is '_', try looking it up as '-'. This is a hack to accomodate both '_' and '-' in option names (proper GCC style uses hyphen, but our old options used underscores). *) if ch = '_' then try Some (CharTable.find table '-') with Not_found -> None else None (* lookup_option We also allow --no-* prefixes on Boolean options. JYH: this is perhaps not the simplest way to deal with inversion, but the implementation is simple. *) let is_invert_prefix name = String.length name > 5 && String.unsafe_get name 0 = '-' && String.unsafe_get name 1 = '-' && String.unsafe_get name 2 = 'n' && String.unsafe_get name 3 = 'o' && String.unsafe_get name 4 = '-' let strip_invert_prefix name = String.sub name 4 (String.length name - 4) let is_invertable_option opt = function Set _ | Clear _ | SetFold _ | ClearFold _ -> String.length opt > 1 && opt.[0] = '-' | _ -> false (* add_option Add a new option name to the option tree. If the exact option already exists, then an exception is thrown. If a prefix or suffix of this option is already defined, then no error occurs. *) let add_option options name spec = if is_invert_prefix name then raise (BogusArg ("Option contains an invertion prefix: " ^ name)); let length = String.length name in (* deconstruct_name Updates the subtree rooted at options, based on the substring of name beginning with offset. *) let rec deconstruct_name options offset = let ch = name.[offset] in let offset = offset + 1 in let entry = if offset < length then (* This is NOT the last character of the option; we need to build a subtree and recurse on ourself. *) match char_table_lookup options ch with None -> NameNode (deconstruct_name CharTable.empty offset) | Some (SpecNode spec') -> SpecOrName (spec', deconstruct_name CharTable.empty offset) | Some (NameNode options) -> NameNode (deconstruct_name options offset) | Some (SpecOrName (spec', options)) -> SpecOrName (spec', deconstruct_name options offset) else (* This is the last character of the option; this is where we might have a duplicate hit, and where we need to drop our specification. *) match char_table_lookup options ch with None -> SpecNode spec | Some (NameNode options) -> SpecOrName (spec, options) | Some _ -> raise (BogusArg ("Duplicate option defined: " ^ name)) in (* Update this node in the tree *) CharTable.add options ch entry in deconstruct_name options 0 (* lookup_option_core Lookup the option with the indicated name in the options tree. If there is an exact option match in the tree, we return the option spec and an empty string. If we hit end up at a node without a spec, but we are an UNAMBIGUOUS prefix of an option in the tree, then we return that option's spec, and an empty string. The final case is more interesting: when we end up at a leaf, then we split the ``name'' we were given into a name/value pair at that point, and return the excess characters as the option's value. This is how we determine when the value associated with an option is not delimited by a space. Note that any option that is a prefix of another option cannot take a value in this way. *) let lookup_option_core options name = let length = String.length name in (* find_branch Checks to see if the subtree rooted at options is a linear branch. If so, return the spec at the end of the branch; otherwise, raise an exception (assuming the option was ambiguous if the branch splits, or that the option is unbound if there is no branch). *) let rec find_branch options = CharTable.fold (fun spec _ options -> match spec, options with None, SpecNode spec -> Some spec | None, NameNode options -> find_branch options | _ -> raise (BogusArg ("Ambiguous option specified: " ^ name))) None options in let find_branch options = match find_branch options with None -> raise (BogusArg ("No such option: " ^ name)) | Some spec -> spec in (* lookup_name Lookup an option in the subtree rooted at options, based on the substring of name beginning at offset. *) let rec lookup_name options offset = let ch = name.[offset] in let offset = offset + 1 in if offset < length then (* We're not at the end of the name we're searching for yet; it is possible that we are looking at a name/value pair. *) match char_table_lookup options ch with None -> (* No option with this prefix was defined *) raise (BogusArg ("No such option: " ^ name)) | Some (SpecNode (Unit _ | Set _ | Clear _ | UnitFold _ | SetFold _ | ClearFold _ | Usage )) -> (* Name was too long; can not assume a name/value pair *) raise (BogusArg ("No such option: " ^ name ^ " (option " ^ (String.sub name 0 offset) ^ " does not take arguments)")) | Some (SpecNode spec) -> (* Name was too long; assume it was a name/value pair *) spec, String.sub name offset (length - offset) | Some (NameNode options) | Some (SpecOrName (_, options)) -> (* Still searching... *) lookup_name options offset else (* Last character in the name we were given; this is either an exact match, or (hopefully) an unambiguous prefix of an option in the tree. *) match char_table_lookup options ch with None -> (* Last char of name, not no option matches *) raise (BogusArg ("No such option: " ^ name)) | Some (SpecNode spec) | Some (SpecOrName (spec, _)) -> (* Exact match to an option in the tree. *) spec, "" | Some (NameNode options) -> (* Inexact match; try to find a branch. *) find_branch options, "" in lookup_name options 0 let lookup_option options name = if is_invert_prefix name then let orig_name = strip_invert_prefix name in try match lookup_option_core options orig_name with Set f, "" -> Clear f, "" | SetFold f, "" -> ClearFold f, "" | Clear f, "" -> Set f, "" | ClearFold f, "" -> SetFold f, "" | _ -> raise (Failure "invert") with BogusArg _ | Not_found -> raise (BogusArg ("No such option: " ^ orig_name ^ " (extracted from inverted: " ^ name ^ ")")) | Failure "invert" -> raise (BogusArg ("Not an invertable option: " ^ orig_name ^ " (extracted from inverted: " ^ name ^ ")")) else lookup_option_core options name (* compute_option_tree Convert a sections spec into an option tree. Can raise an exception if the sections spec contains duplicate options. *) let compute_option_tree spec = let options = CharTable.empty in let options = List.fold_left (fun options (_, spec_block) -> List.fold_left (fun options (name, spec, _) -> add_option options name spec) options spec_block) options spec in options (*** Help System ***) (* Wraps at terminal width *) let rec print_doc_string opt_width s = let width = Lm_termsize.stdout_width - opt_width in let margin = String.make (opt_width + 1) ' ' in let () = margin.[0] <- '\n' in let len = String.length s in if len <= width then print_string s else if String.rcontains_from s width ' ' then begin let i = String.rindex_from s width ' ' in print_string (String.sub s 0 i); print_string margin; print_doc_string opt_width (String.sub s (i+1) (len - i - 1)) end else begin print_string (String.sub s 0 width); print_string margin; print_doc_string opt_width (String.sub s width (len - width)) end let usage_arg = function Unit _ | Set _ | Clear _ | UnitFold _ | SetFold _ | ClearFold _ | Usage -> "" | String _ | StringFold _ -> " " | Int _ | IntFold _ -> " " | Float _ | FloatFold _ -> " " | Rest _ | RestFold _ -> " ..." (* usage Display the usage message and help text for the options. *) let usage opt_width spec = List.iter (fun (opt, spec, doc) -> (* Descriptive text for the option argument *) let opt = opt ^ (usage_arg spec) in (* Display information on a single option. *) (if String.length opt > opt_width then (* option name too long to fit on one line *) printf "@ %s@ %*s" opt opt_width "" else printf "@ %-*s" opt_width opt); (if is_invertable_option opt spec then printf "*: " else printf " : "); print_doc_string (opt_width + 7) doc) spec let usage_length (opt, spec, _) = String.length opt + String.length (usage_arg spec) let usage (mode, spec) usage_msg = (* Display help for all sections. *) let opt_max_length = List.fold_left (fun i (_, spec) -> (List.fold_left (fun i opt -> max i (usage_length opt))) i spec) 0 spec in let opt_width = min opt_max_length ((max 80 Lm_termsize.stdout_width) / 3 - 7) in printf "@[%s." usage_msg; List.iter (fun (section, spec) -> printf "@ @ @[%s:" section; usage opt_width spec; printf "@]") spec; (match mode with StrictOptions -> () | MultiLetterOptions -> printf "@ Single-letter options may be concatenated as part of a single option."); (if List.exists (fun (_, spec) -> List.exists (fun (opt, spec, _) -> is_invertable_option opt spec) spec) spec then printf "@ @ (*) Prefix the option with \"--no\" to disable."); printf "@]@." (*** Option Processing ***) (* pending_arguments Query for pending arguments or options. Advances the parser for the current mode, and returns a pair (mode, found), where found is true iff there are options or arguments left to process. *) let advance_options mode _argv argv_length current = match mode with StrictMode | MultiLetterMode -> mode, current < argv_length | MultiLetterPending (opt, i) when i = String.length opt -> MultiLetterMode, current < argv_length | MultiLetterPending _ -> mode, true (* get_next_arg Get the next argument in the argument stream. Returns the argument string, as well as the new current marker. *) let get_next_arg opt argv argv_length current = if current < argv_length then argv.(current), current + 1 else if (opt <> "") then raise (BogusArg ("Option " ^ opt ^ " requires an argument")) else raise (Invalid_argument "Lm_arg: internal error") (* get_next_option In StrictMode, this is the same as get_next_arg. In MultiLetterMode, this walks letter-by-letter through simple options. *) let rec get_next_option mode argv argv_length current = match mode with StrictMode -> let opt, current = get_next_arg "" argv argv_length current in opt, current, mode | MultiLetterMode -> (* See if the next argument is an option *) let opt, current = get_next_arg "" argv argv_length current in if String.length opt >= 2 && opt.[0] = '-' && is_alnum opt.[1] then get_next_option (MultiLetterPending (opt, 1)) argv argv_length current else opt, current, mode | MultiLetterPending (opt, i) -> let s = String.make 2 opt.[i] in let mode = MultiLetterPending (opt, succ i) in s.[0] <- '-'; s, current, mode (* parse Parses the program arguments, using a sections specification. Any non-option argument is passed to the default function, in order; if -help or --help is intercepted on the argument stream, then the usage message is displayed. *) let fold_argv argv (mode_info, spec_info) arg default usage_msg = (* Always add the --help flag *) let spec_info = ("Help flags", ["--help", Usage, "Display a help message"]) :: spec_info in (* Set the current mode *) let mode = match mode_info with StrictOptions -> StrictMode | MultiLetterOptions -> MultiLetterMode in (* Convert spec into an options tree, for easier parsing *) let options = compute_option_tree spec_info in let argv_length = Array.length argv in (* * Parse a single option. * arg: the fold value being computed * current: the current index into argv *) let rec parse_option mode arg current = let mode, pending = advance_options mode argv argv_length current in if pending then (* Get the name of the option *) let opt, current, mode = get_next_option mode argv argv_length current in let current, arg = if String.length opt > 0 && opt.[0] = '-' then (* Get information on the option *) let spec, s = lookup_option options opt in (* If no value was embedded in the option, but the option requires a value, then grab the next argument for its value. *) let s, current, arg = match spec, s with String _, "" | Int _, "" | Float _, "" | StringFold _, "" | IntFold _, "" | FloatFold _, "" -> let s, current = get_next_arg opt argv argv_length current in s, current, arg | Unit _, "" | Set _, "" | Clear _, "" | Usage, "" | UnitFold _, "" | SetFold _, "" | ClearFold _, "" | String _, _ | Int _, _ | Float _, _ | StringFold _, _ | IntFold _, _ | FloatFold _, _ -> s, current, arg | Rest f, "" -> let rec rest_function current = if current < argv_length then begin f argv.(current); rest_function (current + 1) end else "", current, arg in rest_function current | RestFold f, "" -> let rec rest_function arg current = if current < argv_length then rest_function (f arg argv.(current)) (current + 1) else "", current, arg in rest_function arg current | _ -> raise (Invalid_argument "Lm_arg: internal error") in (* Actually process the option. *) let arg = match spec with Unit f -> f (); arg | UnitFold f -> f arg | Set x -> x := true; arg | SetFold f -> f arg true; | Clear x -> x := false; arg | ClearFold f -> f arg false | String f -> f s; arg | StringFold f -> f arg s | Int f -> f (int_of_string s); arg | IntFold f -> f arg (int_of_string s) | Float f -> f (float_of_string s); arg | FloatFold f -> f arg (float_of_string s) | Rest _ | RestFold _ -> arg | Usage -> usage (mode_info, spec_info) usage_msg; raise UsageError in current, arg else (* Not an option; pass to the default function *) let arg, rest = default arg opt in if rest then let rec rest_function arg current = if current < argv_length then let arg, _ = default arg argv.(current) in rest_function arg (current + 1) else current, arg in rest_function arg current else current, arg in (* We're done with this option, advance to next *) parse_option mode arg current else current, arg in let _, arg = parse_option mode arg 1 in arg let fold spec arg default usage_msg = fold_argv Sys.argv spec arg default usage_msg let parse_argv argv spec default usage_msg = fold_argv argv spec () (fun () opt -> default opt, false) usage_msg let parse spec default usage_msg = fold spec () (fun () opt -> default opt, false) usage_msg omake-0.9.8.5/src/libmojave-external/util/lm_symbol_hash.ml0000664000152300015230000002500510647734513022035 0ustar jyhjyh(* * Right now the symbol table is just a representation of strings. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu * * ---------------------------------------------------------------- * Revision History * * 2002 Dec 4 Michael Maire Added SymbolIndex * Added sets, tables, indices for * symbol pairs and triples *) open Lm_debug open Lm_printf open Lm_thread let debug_symbol = ref false (* * Hash-cons the symbols. *) (* %%MAGICBEGIN%% *) module SymbolHashArg = struct type t = int * string let debug = "Symbol" let hash = Hashtbl.hash let compare (i1, s1) (i2, s2) = if i1 < i2 then -1 else if i1 > i2 then 1 else Lm_string_util.string_compare s1 s2 let reintern s = s end;; module SymbolHash = Lm_hash.MakeHashMarshal (SymbolHashArg);; type symbol = SymbolHash.t (* %%MAGICEND%% *) (* * We no longer use a hashtable. * Symbols with a 0 index are interned. *) type var = symbol (* An "empty" variable name *) let empty_var = SymbolHash.create (0, "") let new_number, make = let count = ref 100 in let lock = Mutex.create "Lm_symbol_hash" in (fun () -> Mutex.lock lock; let i = !count in count := succ i; Mutex.unlock lock; i), (fun s i -> if i >= !count then begin Mutex.lock lock; count := max (!count) (succ i); Mutex.unlock lock end; SymbolHash.create (i, s)) (* * Get the integer prefix. *) let to_int v = fst (SymbolHash.get v) (* * Get the string suffix. *) let to_string v = snd (SymbolHash.get v) (* * Mangle a string so it uses printable characters. *) let is_special s = let len = String.length s in let rec search i = if i = len then false else match s.[i] with 'a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '.' | '%' -> search (succ i) | _ -> true in search 0 let rec buffer_mangle buf s i len = if len <> 0 then let c = s.[i] in let _ = match c with 'a'..'z' | 'A'..'Z' | '0'..'9' | '_' -> Buffer.add_char buf c | _ -> Buffer.add_char buf '.'; Buffer.add_string buf (string_of_int (Char.code c)) in buffer_mangle buf s (succ i) (pred len) let mangle s = let len = String.length s in let buf = Buffer.create len in buffer_mangle buf s 0 len; Buffer.contents buf (* * Add a symbol to the table. *) let stop s = eprintf "Bogus symbol %s@." s; false let char0 = Char.code '0' let rec zeros s i = (i < 0) || match s.[i] with '1'..'9' -> false | '0' -> zeros s (pred i) | _ -> true let rec all_digits s i = (i<0) || match s.[i] with '0' .. '9' -> all_digits s (pred i) | _ -> false let rec pad_with_underscore n s i = if i <= 0 then n > 0 else let i = pred i in match s.[i] with '_' -> pad_with_underscore n s i | '0' -> not (zeros s (pred i)) && ((n>0) || not (all_digits s (pred i))) | '1' .. '9' -> (n>0) || not (all_digits s (pred i)) | _ -> false let add = let rec loop s fact n i = if i < 0 then SymbolHash.create (0, s) else match s.[i] with '_' -> make (String.sub s 0 (if pad_with_underscore n s i then i else i + 1)) n | '0' when zeros s (i - 1) -> make (String.sub s 0 (succ i)) n | '0'..'9' as c -> loop s (fact * 10) (n + fact * (Char.code c - char0)) (pred i) | _ -> make (String.sub s 0 (succ i)) n in (fun s -> loop s 1 0 (String.length s - 1)) let add_mangle s = add (mangle s) let reintern = SymbolHash.reintern let is_numeric_symbol v = match SymbolHash.get v with (0, s) -> all_digits s (String.length s - 1) | _ -> false (* * Create a new symbol. * Don't add it to the table. *) let new_symbol_string s = SymbolHash.create (new_number (), s) let new_symbol v = new_symbol_string (to_string v) let new_symbol_pre pre v = let v = to_string v in let s = if debug debug_symbol then v ^ "/" ^ pre else v in new_symbol_string s (* * Create a new symbol, avoiding the ones defined by the predicate. *) let new_name v pred = let v = to_string v in let rec search i = let nv = make v i in if pred nv then search (succ i) else nv in search 0 (* * Create a new symbol, calling the function f until it * returns non-nil. *) let new_name_gen v f = let v = to_string v in let rec search i = let nv = make v i in match f nv with Some x -> x | None -> search (succ i) in search 0 (* * Check if the symbol is in the table. *) let is_interned v = to_int v = 0 (* * Printer. * If the symbol is not a defined symbol, * print the index. *) let string_of_symbol v = let i, s = SymbolHash.get v in let len = String.length s in let s = if pad_with_underscore i s len then s ^ "_" else s in if i = 0 then s else s ^ string_of_int i let output_symbol out v = Lm_printf.output_string out (string_of_symbol v) let rec output_symbol_list out vl = match vl with [v] -> output_symbol out v | v :: vl -> Lm_printf.fprintf out "%a, %a" output_symbol v output_symbol_list vl | [] -> () (* * Print extended symbols. Used in FIR printing. *) exception Has;; let string_of_ext_symbol v = let i, s = SymbolHash.get v in let has_special_char s = try for i = 0 to String.length s - 1 do let c = Char.lowercase (String.get s i) in if not ((Char.code c >= Char.code 'a' && Char.code c <= Char.code 'z') || (Char.code c >= Char.code '0' && Char.code c <= Char.code '9') || c = '_') then raise Has done; false with Has -> true in let s = if i = 0 then s else sprintf "%s%d" s i in if has_special_char s then sprintf "`\"%s\"" s else s let pp_print_ext_symbol buf v = pp_print_string buf (string_of_ext_symbol v) let pp_print_symbol buf v = pp_print_string buf (string_of_symbol v) let rec pp_print_symbol_list buf vl = match vl with [v] -> pp_print_symbol buf v | v :: vl -> fprintf buf "%a, %a" pp_print_symbol v pp_print_symbol_list vl | [] -> () (* * Compare for equality. *) let eq = SymbolHash.equal let compare = SymbolHash.compare let hash = SymbolHash.hash (* * Compare pair of symbols for equality. *) let compare_pair (s1, s2) (s1', s2') = let cmp = compare s1 s1' in if cmp = 0 then compare s2 s2' else cmp (* * Compare triple of symbols for equality. *) let compare_triple (s1, s2, s3) (s1', s2', s3') = let cmp = compare s1 s1' in if cmp = 0 then let cmp = compare s2 s2' in if cmp = 0 then compare s3 s3' else cmp else cmp (* * Compare lists of symbols for equality. *) let rec compare_lists sl1 sl2 = match sl1, sl2 with s1 :: sl1, s2 :: sl2 -> let cmp = compare s1 s2 in if cmp = 0 then compare_lists sl1 sl2 else cmp | [], [] -> 0 | [], _ :: _ -> -1 | _ :: _, [] -> 1 (* * Build sets, tables, indices where the keys are symbols, * ordered symbol pairs, or orderd symbol triples. *) module Base = struct type t = symbol let compare = compare end module PairBase = struct type t = symbol * symbol let compare = compare_pair end module TripleBase = struct type t = symbol * symbol * symbol let compare = compare_triple end module SymbolSet = Lm_set.LmMake (Base) module SymbolTable = Lm_map.LmMake (Base) module SymbolMTable = Lm_map.LmMakeList (Base) module SymbolIndex = Lm_index.LmMake (Base) module SymbolPairSet = Lm_set.LmMake (PairBase) module SymbolPairTable = Lm_map.LmMake (PairBase) module SymbolPairMTable = Lm_map.LmMakeList (PairBase) module SymbolPairIndex = Lm_index.LmMake (PairBase) module SymbolTripleSet = Lm_set.LmMake (TripleBase) module SymbolTripleTable = Lm_map.LmMake (TripleBase) module SymbolTripleMTable = Lm_map.LmMakeList (TripleBase) module SymbolTripleIndex = Lm_index.LmMake (TripleBase) (* * Symbol lists are also useful. *) module SymbolListCompare = struct type t = symbol list let rec compare l1 l2 = match l1, l2 with v1 :: l1, v2 :: l2 -> let cmp = Base.compare v1 v2 in if cmp = 0 then compare l1 l2 else cmp | [], _ :: _ -> -1 | _ :: _, [] -> 1 | [], [] -> 0 end module SymbolListSet = Lm_set.LmMake (SymbolListCompare) module SymbolListTable = Lm_map.LmMake (SymbolListCompare) let output_symbol_set out s = output_symbol_list out (SymbolSet.to_list s) let pp_print_symbol_set buf s = pp_print_symbol_list buf (SymbolSet.to_list s) (* * -*- * Local Variables: * Caml-master: "set" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_location.ml0000664000152300015230000000643610456222231021327 0ustar jyhjyh(* * Source locations. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Lm_printf (* XXX: TODO: we should switch to using MLast.loc instead *) (* * A location is a character range * filename, start_line, start_char, end_line, end_char *) (* %%MAGICBEGIN%% *) type loc = symbol * int * int * int * int (* %%MAGICEND%% *) (* * Comparison. *) let compare (**) (v1, start_line1, start_char1, end_line1, end_char1) (v2, start_line2, start_char2, end_line2, end_char2) = let cmp = Lm_symbol.compare v1 v2 in if cmp = 0 then let cmp = start_line1 - start_line2 in if cmp = 0 then let cmp = start_char1 - start_char2 in if cmp = 0 then let cmp = end_line1 - end_line2 in if cmp = 0 then end_char1 - end_char2 else cmp else cmp else cmp else cmp (* * Source location if all else fails. *) let bogus_loc name = Lm_symbol.add name, 0, 0, 0, 0 (* * Normal location. *) let create_loc name start_line start_char end_line end_char = name, start_line, start_char, end_line, end_char (* * For marshaling. *) let dest_loc (name, start_line, start_char, end_line, end_char) = name, start_line, start_char, end_line, end_char (* * Union of locations. *) let union_loc loc1 loc2 = let file1, start_line1, start_char1, _, _ = loc1 in let file2, _, _, end_line2, end_char2 = loc2 in if file1 = file2 then (file1, start_line1, start_char1, end_line2, end_char2) else loc1 (* * Print a file location. *) let pp_print_location buf (file, start_line, start_char, end_line, end_char) = fprintf buf "File %a: " output_symbol file; if start_line = end_line then fprintf buf "line %d, characters %d-%d" start_line start_char end_char else fprintf buf "lines %d:%d-%d:%d" start_line start_char end_line end_char let string_of_location loc = pp_print_location stdstr loc; flush_stdstr () (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_fmarshal.mli0000664000152300015230000000474410456222231021465 0ustar jyhjyh(* * A generic marshaler. * For marshaling, we need a * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * All items eventually become ints, floats, or strings. *) type 'a item = Bool of bool | Int of int | Magic of 'a | Lm_rawint of Lm_rawint.rawint | Float of float | Lm_rawfloat of Lm_rawfloat.rawfloat | String of string | List of 'a item list (************************************************************************ * MARSHALING ************************************************************************) (* * IO module. *) module type MarshalIOSig = sig type t type in_channel type out_channel (* Convert between magic ids *) val magic_of_int : int -> t val int_of_magic : t -> int (* IO *) val input_byte : in_channel -> int val input_buffer : in_channel -> string -> int -> int -> unit val output_byte : out_channel -> int -> unit val output_buffer : out_channel -> string -> int -> int -> unit end (* * Marshal module. *) module type MarshalSig = sig type t type in_channel type out_channel val marshal : out_channel -> t item -> unit val unmarshal : in_channel -> t item end (* * Output routines. *) module Make (IO : MarshalIOSig) : MarshalSig with type t = IO.t with type in_channel = IO.in_channel with type out_channel = IO.out_channel (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_symbol.ml0000664000152300015230000002430510651225205021020 0ustar jyhjyh(* * Right now the symbol table is just a representation of strings. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu * * ---------------------------------------------------------------- * Revision History * * 2002 Dec 4 Michael Maire Added SymbolIndex * Added sets, tables, indices for * symbol pairs and triples *) open Lm_debug open Lm_printf open Lm_thread let debug_symbol = ref false (* * We no longer use a hashtable. * Symbols with a 0 index are interned. *) type symbol = int * string type var = symbol (* An "empty" variable name *) let empty_var = (0,"") let new_number, make = let count = ref 100 in let lock = Mutex.create "Lm_symbol" in (fun () -> Mutex.lock lock; let i = !count in count := succ i; Mutex.unlock lock; i), (fun s i -> if i >= !count then begin Mutex.lock lock; count := max (!count) (succ i); Mutex.unlock lock end; (i, s)) (* * Get the integer prefix. *) let to_int (i, _) = i (* * Get the string suffix. *) let to_string (_, s) = s (* * Mangle a string so it uses printable characters. *) let is_special s = let len = String.length s in let rec search i = if i = len then false else match s.[i] with 'a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '.' | '%' -> search (succ i) | _ -> true in search 0 let rec buffer_mangle buf s i len = if len <> 0 then let c = s.[i] in let _ = match c with 'a'..'z' | 'A'..'Z' | '0'..'9' | '_' -> Buffer.add_char buf c | _ -> Buffer.add_char buf '.'; Buffer.add_string buf (string_of_int (Char.code c)) in buffer_mangle buf s (succ i) (pred len) let mangle s = let len = String.length s in let buf = Buffer.create len in buffer_mangle buf s 0 len; Buffer.contents buf (* * Add a symbol to the table. *) let stop s = eprintf "Bogus symbol %s@." s; false let char0 = Char.code '0' let rec zeros s i = (i < 0) || match s.[i] with '1'..'9' -> false | '0' -> zeros s (pred i) | _ -> true let rec all_digits s i = (i<0) || match s.[i] with '0' .. '9' -> all_digits s (pred i) | _ -> false let rec pad_with_underscore n s i = if i <= 0 then n > 0 else let i = pred i in match s.[i] with '_' -> pad_with_underscore n s i | '0' -> not (zeros s (pred i)) && ((n>0) || not (all_digits s (pred i))) | '1' .. '9' -> (n>0) || not (all_digits s (pred i)) | _ -> false let add = let rec loop s fact n i = if i < 0 then 0, s else match s.[i] with '_' -> make (String.sub s 0 (if pad_with_underscore n s i then i else i + 1)) n | '0' when zeros s (i - 1) -> make (String.sub s 0 (succ i)) n | '0'..'9' as c -> loop s (fact * 10) (n + fact * (Char.code c - char0)) (pred i) | _ -> make (String.sub s 0 (succ i)) n in fun s -> loop s 1 0 (String.length s - 1) let add_mangle s = add (mangle s) let reintern (_, s) = add s let is_numeric_symbol = function (0, s) -> all_digits s (String.length s - 1) | _ -> false (* * Create a new symbol. * Don't add it to the table. *) let new_symbol_string s = new_number (), s let new_symbol (_, v) = new_symbol_string v let new_symbol_pre pre (_, v) = let s = if debug debug_symbol then v ^ "/" ^ pre else v in new_symbol_string s (* * Create a new symbol, avoiding the ones defined by the predicate. *) let new_name (_, v) pred = let rec search i = let nv = make v i in if pred nv then search (succ i) else nv in search 0 (* * Create a new symbol, calling the function f until it * returns non-nil. *) let new_name_gen (_, v) f = let rec search i = let nv = make v i in match f nv with Some x -> x | None -> search (succ i) in search 0 (* * Check if the symbol is in the table. *) let is_interned (i, _) = i = 0 (* * Printer. * If the symbol is not a defined symbol, * print the index. *) let string_of_symbol (i, s) = let len = String.length s in let s = if pad_with_underscore i s len then s ^ "_" else s in if i = 0 then s else s ^ string_of_int i let output_symbol out v = Lm_printf.output_string out (string_of_symbol v) let rec output_symbol_list out vl = match vl with [v] -> output_symbol out v | v :: vl -> Lm_printf.fprintf out "%a, %a" output_symbol v output_symbol_list vl | [] -> () (* * Print extended symbols. Used in FIR printing. *) exception Has let string_of_ext_symbol (i, s) = let has_special_char s = try for i = 0 to String.length s - 1 do let c = Char.lowercase (String.get s i) in if not ((Char.code c >= Char.code 'a' && Char.code c <= Char.code 'z') || (Char.code c >= Char.code '0' && Char.code c <= Char.code '9') || c = '_') then raise Has done; false with Has -> true in let s = if i = 0 then s else sprintf "%s%d" s i in if has_special_char s then sprintf "`\"%s\"" s else s let pp_print_ext_symbol buf v = pp_print_string buf (string_of_ext_symbol v) let pp_print_symbol buf v = pp_print_string buf (string_of_symbol v) let rec pp_print_symbol_list buf vl = match vl with [v] -> pp_print_symbol buf v | v :: vl -> fprintf buf "%a, %a" pp_print_symbol v pp_print_symbol_list vl | [] -> () (* * Print extended symbols. Used in FIR printing. *) exception Has let string_of_ext_symbol (i, s) = let has_special_char s = try for i = 0 to String.length s - 1 do let c = Char.lowercase (String.get s i) in if not ((Char.code c >= Char.code 'a' && Char.code c <= Char.code 'z') || (Char.code c >= Char.code '0' && Char.code c <= Char.code '9') || c = '_') then raise Has done; false with Has -> true in let s = if i = 0 then s else sprintf "%s%d" s i in if has_special_char s then sprintf "`\"%s\"" s else s (* * Compare for equality. *) let eq ((i1 : int), (s1 : string)) (i2, s2) = i1 = i2 && s1 = s2 let compare ((i1:int), (s1:string)) (i2, s2) = if i1 = i2 then Lm_string_util.string_compare s1 s2 else if i1 < i2 then -1 else 1 (* * Compare pair of symbols for equality. *) let compare_pair (s1, s2) (s1', s2') = let res = compare s1 s1' in if res = 0 then compare s2 s2' else res (* * Compare triple of symbols for equality. *) let compare_triple (s1, s2, s3) (s1', s2', s3') = let res = compare_pair (s1, s2) (s1', s2') in if res = 0 then compare s3 s3' else res (* * Build sets, tables, indices where the keys are symbols, * ordered symbol pairs, or orderd symbol triples. *) module Base = struct type t = symbol let compare = compare end module PairBase = struct type t = symbol * symbol let compare = compare_pair end module TripleBase = struct type t = symbol * symbol * symbol let compare = compare_triple end module SymbolSet = Lm_set.LmMake (Base) module SymbolTable = Lm_map.LmMake (Base) module SymbolMTable = Lm_map.LmMakeList (Base) module SymbolIndex = Lm_index.LmMake (Base) module SymbolPairSet = Lm_set.LmMake (PairBase) module SymbolPairTable = Lm_map.LmMake (PairBase) module SymbolPairMTable = Lm_map.LmMakeList (PairBase) module SymbolPairIndex = Lm_index.LmMake (PairBase) module SymbolTripleSet = Lm_set.LmMake (TripleBase) module SymbolTripleTable = Lm_map.LmMake (TripleBase) module SymbolTripleMTable = Lm_map.LmMakeList (TripleBase) module SymbolTripleIndex = Lm_index.LmMake (TripleBase) (* * Symbol lists are also useful. *) module SymbolListCompare = struct type t = symbol list let rec compare l1 l2 = match l1, l2 with v1 :: l1, v2 :: l2 -> let cmp = Base.compare v1 v2 in if cmp = 0 then compare l1 l2 else cmp | [], _ :: _ -> -1 | _ :: _, [] -> 1 | [], [] -> 0 end module SymbolListSet = Lm_set.LmMake (SymbolListCompare) module SymbolListTable = Lm_map.LmMake (SymbolListCompare) let output_symbol_set out s = output_symbol_list out (SymbolSet.to_list s) let pp_print_symbol_set buf s = pp_print_symbol_list buf (SymbolSet.to_list s) (* * -*- * Local Variables: * Caml-master: "set" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_flags.mli0000664000152300015230000000766010456222231020764 0ustar jyhjyh(* * Lm_flags environment * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002,2001 Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_string_set (* * For flags environment, indicate the type of the value recorded. *) type flag_value = FlagBool of bool | FlagInt of int (* * Flag help text is indexed on the name of the flag. The first string is * the description for the help section, and the table is help text specific * to each individual flag. The help sections themselves are indexed on a * named tag, usually the prefix of all the flags in that section. *) type flag_help_section = string * (string StringTable.t) (* * The flags environment contains the environment of currently set flags, as * well as a registry of `valid names'' and their default values. You can * define new names which do not appear in the defaults table, however you * cannot lookup a name that appears neither in the current environment nor * the defaults. *) type flags = { flag_values : flag_value StringTable.t; (* current environment *) flag_defaults : flag_value StringTable.t; (* registered names & defaults *) flag_help : flag_help_section StringTable.t; } (* * Simple (low-level) manipulations on the flags environment. *) val flags_empty : flags (* * Read and set a boolean value. flag is the name of the flag; for * set, value is the value to set, and for get, the environment is * searched first, then the default environment (if the name is not * bound or not boolean). *) val flags_set_bool : flags -> string -> bool -> flags val flags_get_bool : flags -> string -> bool (* * Read and set an integer value. flag is the name of the flag; for * set, value is the value to set, and for get, the environment is * searched first, then the default environment (if the name is not * bound or not integer). *) val flags_set_int : flags -> string -> int -> flags val flags_get_int : flags -> string -> int (* * Set a flag based on a variable=value expression. The value may * be either a boolean or an integer value; the flag type will be * set accordingly. *) val flags_set_expr : flags -> string -> flags (*** Standard Flag Set ***) (* * Set of standard flags. *) val std_flags : flags ref (* * High-level functions to access and modify standard flags. *) val std_flags_get_bool : string -> bool val std_flags_set_bool : string -> bool -> unit val std_flags_get_int : string -> int val std_flags_set_int : string -> int -> unit val std_flags_set_expr : string -> unit (* * High-level function for displaying and registering names. *) val std_flags_help_section_text : string -> string -> unit val std_flags_register_list : (string * flag_value) list -> unit val std_flags_register_list_help : string -> (string * flag_value * string) list -> unit val print_std_flag_defaults : unit -> unit (* * Print current state *) val print_std_flag_values : unit -> unit omake-0.9.8.5/src/libmojave-external/util/lm_config.ml0000664000152300015230000000256710456222231020765 0ustar jyhjyh(* * Configuration. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) type code = ByteCode | NativeCode external lm_code : unit -> code = "lm_byte_detect" "lm_native_detect" let code = lm_code () (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_parser.mli0000664000152300015230000001356710456222231021167 0ustar jyhjyh(* * Parser generator. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_location val debug_parse : bool ref val debug_parsegen : bool ref val debug_parsetiming : bool ref val debug_parse_conflict_is_warning : bool ref (* * Associativity and precedence. *) type assoc = LeftAssoc | RightAssoc | NonAssoc | NoneAssoc val pp_print_assoc : out_channel -> assoc -> unit module type PrecedenceArg = sig type t type precedence (* Precedence control *) val prec_min : precedence val prec_max : precedence (* Precedence tables *) val empty : t val create_prec_lt : t -> precedence -> assoc -> t * precedence val create_prec_gt : t -> precedence -> assoc -> t * precedence (* Print a precedence *) val pp_print_prec : t -> out_channel -> precedence -> unit (* Comparison *) val add_assoc : t -> precedence -> assoc -> t val assoc : t -> precedence -> assoc val compare : t -> precedence -> precedence -> int (* Tables and sets *) module PrecTable : Lm_map_sig.LmMap with type key = precedence end (* Default implementation *) module ParserPrecedence : PrecedenceArg exception ParseError of loc * string (* * The parser is parameterized over symbol and action names. *) module type ParserArg = sig (* Variable names: the names of terminals and nonterminals *) type symbol (* A symbol to represent eof *) val eof : symbol (* For debugging *) val to_string : symbol -> string val pp_print_symbol : out_channel -> symbol -> unit (* Sets and tables *) val hash_symbol : symbol -> int val compare_symbol : symbol -> symbol -> int (* Names of semantic actions *) type action (* For debugging *) val pp_print_action : out_channel -> action -> unit (* For set and table building *) val hash_action : action -> int val compare_action : action -> action -> int end module MakeParser (Arg : ParserArg) (Precedence : PrecedenceArg) : sig open Arg open Precedence (* Grammar operations *) type t type ('a, 'b) lexer = 'a -> symbol * loc * 'a * 'b type ('a, 'b) eval = 'a -> (* The argument *) action -> (* The name of the action *) loc -> (* Location of the production *) 'b list -> (* The arguments to the action *) 'a * 'b (* The result of the semantic action *) (* The empty grammar accepts the empty language *) val empty : t (* * Add a start symbol. There can be more than one start symbol, * but parsing can only be performed for start variables. *) val add_start : t -> symbol -> t val get_start : t -> symbol list (* Precedence control *) val prec_min : precedence val prec_max : precedence val create_prec_lt : t -> precedence -> assoc -> t * precedence val create_prec_gt : t -> precedence -> assoc -> t * precedence val add_assoc : t -> precedence -> assoc -> t val add_prec : t -> precedence -> symbol -> t val find_prec : t -> symbol -> precedence (* Add a production *) val add_production : t -> (* The initial grammar *) action -> (* The name of the semantic action *) symbol -> (* The left-hand-side of the production *) symbol list -> (* The right-hand-side of the production *) symbol option -> (* Optional precedence is the same as that of the symbol *) t (* Delete a production based on the name of the semantic action *) val remove_production : t -> (* The initial grammar *) action -> (* The name of the semantic action *) t (* * Take the union of two parsers. * Assumes that productions with the same action name are the same. *) val union : t -> t -> t (* * Build the parser if it isn't already built. * This step is entirely optional. Call it if you want * to check for errors in the current grammar. *) val compile : t -> unit (* * Hash code for the parser. *) val hash : t -> int (* Force a parser build, possibly in debug mode *) val build : t -> bool -> unit (* Print the grammar *) val pp_print_parser : out_channel -> t -> unit (* Now the actual machine *) val parse : t -> (* The machine *) symbol -> (* The start symbol *) ('a, 'b) lexer -> (* The lexer *) ('a, 'b) eval -> (* The semantic action evaluator *) 'a -> (* The argument *) 'a * 'b (* The result *) end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_clock.mli0000664000152300015230000000243010456222231020751 0ustar jyhjyh(* * Timers for low-level profiling. * ---------------------------------------------------------------- * * Copyright (C) 2001 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Adam Granicz * Email: granicz@cs.caltech.edu *) type clock_data_type = { clock_active : bool; clock_starttime : Unix.process_times; clock_ttime : float; clock_tcalls : int } omake-0.9.8.5/src/libmojave-external/util/Files0000664000152300015230000000127110651226260017455 0ustar jyhjyhUTIL_FILES[] = lm_ctype lm_symbol lm_symbol_hash lm_flags lm_interval_set lm_rawint lm_graph lm_digraph lm_dlist lm_trace lm_loop lm_bitmatrix lm_symbol_matrix lm_listbuf lm_float80 lm_rawfloat lm_fmarshal lm_profile lm_clock lm_field_table lm_location lm_position lm_attribute lm_parse_id lm_readline lm_terminfo lm_ncurses lm_ncurses_display lm_format_util lm_command_util lm_termsize lm_arg lm_ssl lm_config lm_channel lm_hash_sig lm_hash lm_string_hash lm_lexer lm_parser lm_filename_util lm_glob lm_db lm_print_util omake-0.9.8.5/src/libmojave-external/util/lm_bitmatrix.ml0000664000152300015230000000450410456222231021514 0ustar jyhjyh(* * Adjacency matrix. * Implement this with bitwise operations. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Raw bits. *) type t = string array (* * Characters are 8 bits wide. *) let byte_shift = 3 let byte_size = 1 lsl byte_shift let byte_mask = pred byte_size let roundup i = (i + byte_mask) land (lnot byte_mask) (* * Create a new matrix. *) let create w h = let len = (roundup w) lsr byte_shift in Array.init h (fun _ -> String.make len '\000') (* * Test if an edge exists. *) let query m i j = let s = m.(i) in let j_byte = j lsr byte_shift in let j_bit = j land byte_mask in let c = Char.code s.[j_byte] in ((c lsr j_bit) land 1) = 1 (* * Add an edge. *) let add m i j = let s = m.(i) in let j_byte = j lsr byte_shift in let j_bit = j land byte_mask in let c = Char.code s.[j_byte] in let c = c lor (1 lsl j_bit) in s.[j_byte] <- Char.chr c (* * Remove an edge. *) let remove m i j = let s = m.(i) in let j_byte = j lsr byte_shift in let j_bit = j land byte_mask in let c = Char.code s.[j_byte] in let c = c land (lnot (1 lsl j_bit)) in s.[j_byte] <- Char.chr c (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_print_util.mli0000664000152300015230000000056110322060244022046 0ustar jyhjyh(* * Miscellanous printing utilities * Taken from code by Jason Hickey * 12apr01 *) open Lm_symbol val tabstop : int val print_sep_list : string -> ('a -> unit) -> 'a list -> unit val print_sep_list_no_space : string -> ('a -> unit) -> 'a list -> unit val print_sep_list_box : string -> ('a -> unit) -> 'a list -> unit val print_fst_symbol : symbol * 'a -> unit omake-0.9.8.5/src/libmojave-external/util/lm_format_util.mli0000664000152300015230000000420510456222231022205 0ustar jyhjyh(* * Utilities for use with the format library. * Copyright (C) 2002, Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) open Format (* pp_print_paragraph_bare buf text Prints a paragraph of text. Normally, the text is allowed to break at any whitespace character. Line breaks are forced at any newline char. The   sequence can be used to insert a nonbreaking space. This assumes the caller has already opened an HOV box and that the caller will close the box when finished. *) val pp_print_paragraph_bare : formatter -> string -> unit (* pp_print_paragraph buf text Prints a paragraph of text in its own HOV box. Normally, the text is allowed to break at any whitespace character. Line breaks are forced at any newline character. The   sequence can be used to insert a nonbreaking space. *) val pp_print_paragraph : formatter -> string -> unit (* y_formatter buf1 buf2 Builds a Y formatter given two other formatters. Data printed to the Y formatter will be written to *both* formatters that are given as input. As a result, this acts as a `Y'' which splits the output. Pretty nice, eh? *) val y_formatter : formatter -> formatter -> formatter omake-0.9.8.5/src/libmojave-external/util/OMakefile0000664000152300015230000000013710364005360020244 0ustar jyhjyh# # Generic utilities # include Files OCAMLINCLUDES += ../stdlib ../unix clean: $(CLEAN) omake-0.9.8.5/src/libmojave-external/util/lm_fmarshal.ml0000664000152300015230000003415210456222231021310 0ustar jyhjyh(* * A generic marshaler. * For marshaling, we need a * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf (* * All items eventually become ints, floats, or strings. *) type 'a item = Bool of bool | Int of int | Magic of 'a | Lm_rawint of Lm_rawint.rawint | Float of float | Lm_rawfloat of Lm_rawfloat.rawfloat | String of string | List of 'a item list (************************************************************************ * MARSHALING ************************************************************************) (* * IO module. *) module type MarshalIOSig = sig type t type in_channel type out_channel (* Convert between magic ids *) val magic_of_int : int -> t val int_of_magic : t -> int (* IO *) val input_byte : in_channel -> int val input_buffer : in_channel -> string -> int -> int -> unit val output_byte : out_channel -> int -> unit val output_buffer : out_channel -> string -> int -> int -> unit end (* * Marshal module. *) module type MarshalSig = sig type t type in_channel type out_channel val marshal : out_channel -> t item -> unit val unmarshal : in_channel -> t item end (* * Output routines. *) module Make (IO : MarshalIOSig) : MarshalSig with type t = IO.t with type in_channel = IO.in_channel with type out_channel = IO.out_channel = struct type t = IO.t type in_channel = IO.in_channel type out_channel = IO.out_channel (* * Codes. *) let true_magic = 0xe0 let false_magic = 0xe1 let int_magic = 0xe2 let magic_magic = 0xe3 let rawint_magic = 0xe4 let float_magic = 0xe5 let rawfloat_magic = 0xe6 let string_magic = 0xe7 let list_magic = 0xe8 let version_number = Hashtbl.hash "$Id: lm_fmarshal.ml 9445 2006-07-15 17:23:37Z jyh $" (************************************************************************ * BASIC IO ************************************************************************) (* * Basic routines. *) let output_byte out i = IO.output_byte out (i land 0xff) let input_byte inc = IO.input_byte inc let output_bool out b = output_byte out (if b then 1 else 0) let input_bool inc = match input_byte inc with 0 -> false | 1 -> true | _ -> raise (Failure "input_bool: input is not Boolean") let output_int out i = output_byte out ((i lsr 24) land 0xff); output_byte out ((i lsr 16) land 0xff); output_byte out ((i lsr 8) land 0xff); output_byte out (i land 0xff) let input_int inc = let i = input_byte inc in let i = (i lsl 8) lor (input_byte inc) in let i = (i lsl 8) lor (input_byte inc) in let i = (i lsl 8) lor (input_byte inc) in i let output_int16 out i = output_byte out ((i lsr 8) land 0xff); output_byte out (i land 0xff) let input_int16 inc = let i1 = input_byte inc in let i2 = input_byte inc in (i1 lsl 8) lor i2 let output_int32 out i = output_byte out ((Int32.to_int (Int32.shift_right i 24)) land 0xff); output_byte out ((Int32.to_int (Int32.shift_right i 16)) land 0xff); output_byte out ((Int32.to_int (Int32.shift_right i 8)) land 0xff); output_byte out ((Int32.to_int i) land 0xff) let input_int32 inc = let i = Int32.shift_left (Int32.of_int (input_byte inc)) 24 in let i = Int32.logor i (Int32.shift_left (Int32.of_int (input_byte inc)) 16) in let i = Int32.logor i (Int32.shift_left (Int32.of_int (input_byte inc)) 8) in let i = Int32.logor i (Int32.of_int (input_byte inc)) in i let output_int64 out i = output_byte out ((Int64.to_int (Int64.shift_right i 56)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 48)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 40)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 32)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 24)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 16)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 8)) land 0xff); output_byte out ((Int64.to_int i) land 0xff) let input_int64 inc = let i = Int64.shift_left (Int64.of_int (input_byte inc)) 56 in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 48) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 40) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 32) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 24) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 16) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 8) in let i = Int64.logor i (Int64.of_int (input_byte inc)) in i (* * Floats. *) let output_float out x = output_int64 out (Int64.bits_of_float x) let input_float inc = Int64.float_of_bits (input_int64 inc) (* * Rawints. *) let output_rawint_params out p s = let p = match p with Lm_rawint.Int8 -> 8 | Lm_rawint.Int16 -> 16 | Lm_rawint.Int32 -> 32 | Lm_rawint.Int64 -> 64 in output_byte out p; output_bool out s let output_rawfloat_params out p = let p = match p with Lm_rawfloat.Single -> 1 | Lm_rawfloat.Double -> 2 | Lm_rawfloat.LongDouble -> 3 in output_byte out p let output_rawint out i = let p = Lm_rawint.precision i in let s = Lm_rawint.signed i in output_rawint_params out p s; match p with Lm_rawint.Int8 -> output_byte out ((Lm_rawint.to_int i) land 0xff) | Lm_rawint.Int16 -> output_int16 out ((Lm_rawint.to_int i) land 0xffff) | Lm_rawint.Int32 -> output_int32 out (Lm_rawint.to_int32 i) | Lm_rawint.Int64 -> output_int64 out (Lm_rawint.to_int64 i) let output_rawfloat out x = let p = Lm_rawfloat.precision x in output_rawfloat_params out p; match p with Lm_rawfloat.Single -> output_float out (Lm_rawfloat.to_float x) | Lm_rawfloat.Double -> output_float out (Lm_rawfloat.to_float x) | Lm_rawfloat.LongDouble -> output_float out (Lm_rawfloat.to_float x) let input_rawint_params inc = let p = match input_byte inc with 8 -> Lm_rawint.Int8 | 16 -> Lm_rawint.Int16 | 32 -> Lm_rawint.Int32 | 64 -> Lm_rawint.Int64 | _ -> raise (Failure "input_rawint_params: bogus precision") in let s = input_bool inc in p, s let input_rawfloat_params inc = let p = match input_byte inc with 1 -> Lm_rawfloat.Single | 2 -> Lm_rawfloat.Double | 3 -> Lm_rawfloat.LongDouble | _ -> raise (Failure "input_rawfloat_params: bogus precision") in p let input_rawint inc = let p, s = input_rawint_params inc in match p with Lm_rawint.Int8 -> Lm_rawint.of_int p s (input_byte inc) | Lm_rawint.Int16 -> Lm_rawint.of_int p s (input_int16 inc) | Lm_rawint.Int32 -> Lm_rawint.of_int32 p s (input_int32 inc) | Lm_rawint.Int64 -> Lm_rawint.of_int64 p s (input_int64 inc) let input_rawfloat inc = let p = input_rawfloat_params inc in match p with Lm_rawfloat.Single -> Lm_rawfloat.of_float p (input_float inc) | Lm_rawfloat.Double -> Lm_rawfloat.of_float p (input_float inc) | Lm_rawfloat.LongDouble -> Lm_rawfloat.of_float p (input_float inc) (* * Meta. *) let output_magic = output_byte let input_magic = input_byte let output_size out i = if i >= 0 && i < 255 then output_byte out i else begin output_byte out 255; output_int out i end let input_size inc = let i = input_byte inc in if i < 255 then i else input_int inc (************************************************************************ * MARSHALING ************************************************************************) (* * Marshal base types. *) let marshal_bool out b = (* eprintf "Bool: %b%t" b eflush; *) if b then output_magic out true_magic else output_magic out false_magic let marshal_int out i = (* eprintf "Int: %d%t" i eflush; *) output_magic out int_magic; output_int out i let marshal_magic out x = let index = IO.int_of_magic x in (* eprintf "Magic: %d%t" index eflush; *) output_magic out magic_magic; output_int out index let marshal_rawint out i = (* eprintf "Lm_rawint: %s%t" (Lm_rawint.to_string i) eflush; *) output_magic out rawint_magic; output_rawint out i let marshal_float out x = (* eprintf "Float: %g%t" x eflush; *) output_magic out float_magic; output_float out x let marshal_rawfloat out x = output_magic out rawfloat_magic; output_rawfloat out x let marshal_string out s = let len = String.length s in (* eprintf "String: %s%t" s eflush; *) output_magic out string_magic; output_size out len; IO.output_buffer out s 0 len (* * Marshaler *) let rec marshal_item out x = match x with Bool b -> marshal_bool out b | Int i -> marshal_int out i | Magic i -> marshal_magic out i | Lm_rawint i -> marshal_rawint out i | Float x -> marshal_float out x | Lm_rawfloat x -> marshal_rawfloat out x | String s -> marshal_string out s | List l -> marshal_list out l and marshal_list out l = let len = List.length l in (* eprintf "List: %d%t" len eflush; *) output_magic out list_magic; output_size out len; List.iter (marshal_item out) l (* * Save the version number. *) let marshal_version out = output_int out version_number (* * First collect strings and save them. *) let marshal out l = marshal_version out; marshal_item out l (************************************************************************ * UNMARSHALING ************************************************************************) (* * Reading. *) let unmarshal_bool b = (* eprintf "Bool: %b%t" b eflush; *) Bool b let unmarshal_magic inc = let i = input_int inc in (* eprintf "Magic: %d%t" i eflush; *) Magic (IO.magic_of_int i) let unmarshal_int inc = let i = input_int inc in (* eprintf "Int: %d%t" i eflush; *) Int i let unmarshal_rawint inc = let i = input_rawint inc in (* eprintf "Lm_rawint: %s%t" (Lm_rawint.to_string i) eflush; *) Lm_rawint i let unmarshal_float inc = let x = input_float inc in (* eprintf "Float: %g%t" x eflush; *) Float x let unmarshal_rawfloat inc = let x = input_rawfloat inc in Lm_rawfloat x let unmarshal_string inc = let len = input_size inc in let _ = if len < 0 then raise (Failure "unmarshal_string: string length is negative") in let s = String.create len in IO.input_buffer inc s 0 len; (* eprintf "String: %s%t" s eflush; *) String s (* * Build a value from the input. *) let rec unmarshal_item inc = let magic = input_magic inc in if magic = true_magic then unmarshal_bool true else if magic = false_magic then unmarshal_bool false else if magic = int_magic then unmarshal_int inc else if magic = magic_magic then unmarshal_magic inc else if magic = rawint_magic then unmarshal_rawint inc else if magic = float_magic then unmarshal_float inc else if magic = rawfloat_magic then unmarshal_rawfloat inc else if magic = string_magic then unmarshal_string inc else if magic = list_magic then unmarshal_list inc else raise (Failure (sprintf "unmarshal: unexpected magic number 0x%02x" magic)) and unmarshal_list inc = let len = input_size inc in (* let _ = eprintf "List: %d%t" len eflush in *) let rec collect i l = if i = 0 then List (List.rev l) else let x = unmarshal_item inc in collect (pred i) (x :: l) in collect len [] (* * Read the version number. *) let unmarshal_version inc = let i = input_int inc in if i <> version_number then raise (Failure (sprintf "unmarshal_version: bogus version number: %d" i)) (* * Now read the data. *) let unmarshal inc = unmarshal_version inc; unmarshal_item inc end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_glob.mli0000664000152300015230000001032210571445100020600 0ustar jyhjyh(* * Filename globbing. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_lexer type glob_option = GlobNoBraces (* Do not perform csh-style brace expansion *) | GlobNoTilde (* Do not perform tilde-expansion *) | GlobNoEscape (* The \ character does not escape special characters *) | GlobNoCheck (* If an expansion fails, return the expansion literally *) | GlobIgnoreCheck (* If an expansion fails, it expands to nothing *) | GlobDot (* Allow wildcards to match filenames with a leading . *) | GlobOnlyFiles (* Return only non-directories in the result *) | GlobOnlyDirs (* Return only directories in the result *) | GlobCVSIgnore (* Ignore files as specified by .cvsignore files *) | GlobIgnore of string list (* Ignore the files that match the pattern *) | GlobAllow of string list (* Allow only files that match the pattern *) | GlobIgnoreFun of (string -> bool) (* Ignore the files specified by the function *) | GlobAllowFun of (string -> bool) (* Allow only the files specified by the function *) | GlobHomeDir of string (* Home directory for ~ expansion *) | GlobProperSubdirs (* Include only proper subdirs in listing *) type glob_options val create_options : glob_option list -> glob_options val default_glob_options : glob_options (* * The initial home directory for tilde expansion. * The globber does its best to figure this out. *) val home_dir : string (* * Get a list of all the users in the system. * On non-unix systems, returns the empty list. *) val getusers : unit -> string list (* * Get the home directory for a user. *) val gethomedir : string -> string (* * Try to collapse a filename. * Tilde-expansion will invert this process. *) val tilde_collapse : string -> string (* * Glob detection and escaping. *) val is_glob_string : glob_options -> string -> bool val glob_add_escaped : glob_options -> Buffer.t -> string -> unit (* * The glob function returns two lists: * 1. a list of directories * 2. a list of files of other types * * The second argument to the glob and the glob_argv functions is the directory * where to perform expansion. If the glob pattern is relative, the results are * left relative (to that directory) as well. * * Raises Failure if the syntax is ill-formed. *) val glob : glob_options -> string -> string list -> string list * string list (* * Glob a command line. * Preserves the argument ordering. *) val glob_argv : glob_options -> string -> string list -> string list (* * Get the entries in a directory. * * list_dirs root dirs * root: the directory prefix, not appended to the output strings * dirs: the directories to list *) val list_dirs : glob_options -> string -> string list -> string list * string list val list_dirs_rec : glob_options -> string -> string list -> string list * string list val subdirs_of_dirs : glob_options -> string -> string list -> string list (* * Utilities. *) val regex_of_shell_pattern : glob_options -> string -> LmStr.t (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_field_table.ml0000664000152300015230000002771010571651147021761 0ustar jyhjyh(* * The FieldMTable is used for information about * methods and fields. Each field in the table * has both an external and internal name. Fields * can share external names, but internal names * have to be distinct. * * We use a special representation so we can get * all of the following: * 1. Strict ordering of the fields * 2. Quick access based on external name * 3. Quick access based on internal name * * The internal name table is computed lazily: we generate * it when we need it and save the generated table. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol (* * FieldTable is a simple table, like * a SymbolTable that defines an ordering on * the fields. *) module type FieldTableSig = sig (* * The table type. *) type 'a t (* * Empty table. *) val empty : 'a t (* * Number of entries. *) val cardinal : 'a t -> int (* * Add an entry. The first var is the external name, * the second var is the internal name. *) val add : 'a t -> symbol -> 'a -> 'a t (* * Add an entry with a specific index. * WARNING: use this only if you know what you are doing. * You should never add multiple entries with the same index. * One case where this is ok is when you construct one table from * another using fold_index. *) val add_index : 'a t -> symbol -> 'a -> int -> 'a t (* * Membership in the table. *) val mem : 'a t -> symbol -> bool (* * Get the entries for the name. *) val find : 'a t -> symbol -> 'a val find_index : 'a t -> symbol -> int val find_with_index : 'a t -> symbol -> 'a * int (* * Return an ordered list of fields. *) val to_list : 'a t -> (symbol * 'a) list (* * Iterators. *) val iter : (symbol -> 'a -> unit) -> 'a t -> unit val map : ('a -> 'b) -> 'a t -> 'b t val mapi : (symbol -> 'a -> 'b) -> 'a t -> 'b t val fold : ('a -> symbol -> 'b -> 'a) -> 'a -> 'b t -> 'a val fold_map : ('a -> symbol -> 'b -> 'a * 'c) -> 'a -> 'b t -> 'a * 'c t val fold_index : ('a -> symbol -> 'b -> int -> 'a) -> 'a -> 'b t -> 'a end (* * FieldMTable is a table that allows multiple * definitions for each external field name. *) type ext_symbol = symbol type int_symbol = symbol module type FieldMTableSig = sig (* * The table type. *) type 'a t (* * Create an empty table. *) val create : unit -> 'a t (* * Add an entry. The first var is the external name, * the second var is the internal name. *) val add : 'a t -> ext_symbol -> int_symbol -> 'a -> 'a t (* * Get the entries for the external name. *) val find_ext : 'a t -> ext_symbol -> (int_symbol * 'a) list val find_int : 'a t -> int_symbol -> ext_symbol * 'a (* * Allow replacement of ext entries. * The replacement function is called on each of the entries, until * a valid replacement is found. The replacement function should * raise Not_found if the replacement is not desired. The first * replacement is accepted, and if no replacement is found, this * function raises Not_found. *) val replace_ext : 'a t -> ext_symbol -> (int_symbol -> 'a -> int_symbol * 'a) -> 'a t (* * Return the list of fields. *) val to_list : 'a t -> (ext_symbol * int_symbol * 'a) list (* * Iterators. *) val debug_iter : (ext_symbol -> int_symbol -> 'a -> int -> unit) -> 'a t -> unit val map : (ext_symbol -> int_symbol -> 'a -> int_symbol * 'b) -> 'a t -> 'b t val fold : ('a -> ext_symbol -> int_symbol -> 'b -> 'a) -> 'a -> 'b t -> 'a end (* * A simple field table. *) module FieldTable : FieldTableSig = struct (* * The table keeps tracks of the maximum number of entries, * and the SymbolTable. *) type 'a t = { table_count : int; table_int : ('a * int) SymbolTable.t } (* * Empty table. *) let empty = { table_count = 0; table_int = SymbolTable.empty } (* * Number of entries in the table. *) let cardinal { table_int = table } = SymbolTable.cardinal table (* * Add an element. *) let add table v x = let { table_count = index; table_int = itable } = table in { table_count = succ index; table_int = SymbolTable.add itable v (x, index) } (* * Add with a particular index. *) let add_index table v x i = let { table_count = index; table_int = itable } = table in { table_count = max (succ i) index; table_int = SymbolTable.add itable v (x, i) } (* * Test for membership. *) let mem table v = SymbolTable.mem table.table_int v (* * Find an entry in the table. *) let find table v = fst (SymbolTable.find table.table_int v) let find_index table v = snd (SymbolTable.find table.table_int v) let find_with_index table v = SymbolTable.find table.table_int v (* * Sort the entries into a list. *) let to_list table = let l = SymbolTable.fold (fun l v (x, i) -> (v, x, i) :: l) [] table.table_int in let l = List.sort (fun (_, _, i1) (_, _, i2) -> i1 - i2) l in List.map (fun (v, x, _) -> v, x) l (* * Iteration. *) let iter f table = SymbolTable.iter (fun v (x, _) -> f v x) table.table_int (* * Map a function over the table. *) let map f table = { table with table_int = SymbolTable.map (fun (x, i) -> f x, i) table.table_int } let mapi f table = { table with table_int = SymbolTable.mapi (fun v (x, i) -> f v x, i) table.table_int } (* * Folding. *) let fold f x table = SymbolTable.fold (fun x v (y, _) -> f x v y) x table.table_int (* * Pass the index. *) let fold_index f x table = SymbolTable.fold (fun x v (y, i) -> f x v y i) x table.table_int (* * Fold with map. *) let fold_map f x table = let x, table_int = SymbolTable.fold_map (fun x v (y, i) -> let x, y = f x v y in x, (y, i)) x table.table_int in x, { table with table_int = table_int } end module FieldMTable : FieldMTableSig = struct (* * The table keeps track of the number of fields. * The table is constructed based on the external table, * and the internal table is computed lazily. *) type 'a t = { table_count : int; table_ext : (symbol * 'a * int) SymbolMTable.t; mutable table_int : (symbol * 'a * int) SymbolTable.t option } (* * Empty table, note that we can't define an "empty" table * because of the lazy computation. *) let create () = { table_count = 0; table_ext = SymbolMTable.empty; table_int = None } (* * Add an entry with an external and internal name. *) let add table v_ext v_int x = let { table_count = index; table_ext = etable } = table in { table_count = succ index; table_ext = SymbolMTable.add etable v_ext (v_int, x, index); table_int = None } (* * Filter the entries. *) let replace_ext table v_ext replace = (* Search takes one def. and calls our function with its v_int and data *) let rec search = function (v_int, x, index) as def :: defs -> (try let v_int', x' = replace v_int x in (v_int', x', index) :: defs with Not_found -> def :: search defs) | [] -> raise Not_found in { table with table_ext = SymbolMTable.filter table.table_ext v_ext search; table_int = None } (* * Get the internal table. * Compute it if is has not been defined yet. *) let get_int_table table = match table.table_int with Some int_table -> int_table | None -> let int_table = SymbolMTable.fold_all (fun int_table v_ext defs -> List.fold_left (fun int_table (v_int, x, index) -> SymbolTable.add int_table v_int (v_ext, x, index)) int_table defs) SymbolTable.empty table.table_ext in table.table_int <- Some int_table; int_table (* * Get a sorted list of fields. * Raises Failure if the field indexes * are not valid. *) let to_list table = (* Collect the fields and check their indexes *) let rec collect index fields' fields = match fields with (v_ext, v_int, ty, index') :: fields -> let index = pred index in if index' <> index then raise (Failure "FieldMTable.to_list: fields are out of order"); collect index ((v_ext, v_int, ty) :: fields') fields | [] -> if index <> 0 then raise (Failure "FieldMTable.to_list: some fields are missing"); fields' in (* Sort the methods in reverse order *) let fields = SymbolTable.fold (fun fields v_int (v_ext, x, index) -> (v_ext, v_int, x, index) :: fields) [] (get_int_table table) in let fields = List.sort (fun (_, _, _, index1) (_, _, _, index2) -> index2 - index1) fields in collect table.table_count [] fields (* * Find all the entries based on the external name. *) let find_ext table v_ext = let fields = SymbolMTable.find_all_partial table.table_ext v_ext in List.map (fun (v', x, _) -> v', x) fields (* * Find an entry based on internal name. *) let find_int table v_int = let v, x, _ = SymbolTable.find (get_int_table table) v_int in v, x (* * Iterate over the table. * This is the debug version: it passes the indexes to the function. *) let debug_iter f table = SymbolMTable.iter_all (fun v_ext defs -> List.iter (fun (v_int, x, index) -> f v_ext v_int x index) defs) table.table_ext (* * Map a function over the elements. *) let map f table = let etable = SymbolMTable.mapi_all (fun v_ext defs -> List.map (fun (v_int, x, index) -> let v_int, x = f v_ext v_int x in v_int, x, index) defs) table.table_ext in { table with table_ext = etable; table_int = None } (* * Fold a function over the elements. *) let fold f arg table = SymbolMTable.fold_all (fun arg v_ext defs -> List.fold_left (fun arg (v_int, x, _) -> f arg v_ext v_int x) arg defs) arg table.table_ext end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_print_util.ml0000664000152300015230000000200010322060244021663 0ustar jyhjyh(* * Miscellanous printing utilities * Taken from code by Jason Hickey * 12apr01 *) open Lm_symbol open Lm_printf (* * Blocks indents by this many spaces. *) let tabstop = 2 (* * Operators. *) (* * Print a list of items with a separator *) let rec print_sep_list sep printer = function [] -> () | [h] -> printer h | h :: t -> printer h; print_string sep; print_space (); print_sep_list sep printer t let rec print_sep_list_no_space sep printer = function [] -> () | [h] -> printer h | h :: t -> printer h; print_string sep; print_sep_list_no_space sep printer t let rec print_sep_list_box sep printer = function [] -> () | [h] -> open_box tabstop; printer h; close_box () | h :: t -> open_box tabstop; printer h; print_string sep; close_box (); print_space (); print_sep_list_box sep printer t let print_fst_symbol pair = pp_print_symbol std_formatter (fst pair) omake-0.9.8.5/src/libmojave-external/util/lm_rawfloat.mli0000664000152300015230000000504010456222231021475 0ustar jyhjyh(* Support for raw floating point values Copyright (C) 2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) (* * Type of raw float numbers. *) type rawfloat (* * Various forms of raw floats. *) type float_precision = Single | Double | LongDouble (* Conversions *) val precision : rawfloat -> float_precision val to_string : rawfloat -> string val to_float : rawfloat -> float val to_float80 : rawfloat -> Lm_float80.float80 val to_int64 : rawfloat -> int64 val to_int : rawfloat -> int val to_rawint : Lm_rawint.int_precision -> Lm_rawint.int_signed -> rawfloat -> Lm_rawint.rawint val of_int : float_precision -> int -> rawfloat val of_rawint : float_precision -> Lm_rawint.rawint -> rawfloat val of_float : float_precision -> float -> rawfloat val of_float80 : float_precision -> Lm_float80.float80 -> rawfloat val of_rawfloat : float_precision -> rawfloat -> rawfloat val of_string : float_precision -> string -> rawfloat (* * Comparison. *) val is_zero : rawfloat -> bool val compare : rawfloat -> rawfloat -> int (* * Basic arithmetic. *) val neg : rawfloat -> rawfloat val uminus : rawfloat -> rawfloat val succ : rawfloat -> rawfloat val pred : rawfloat -> rawfloat val abs : rawfloat -> rawfloat val sin : rawfloat -> rawfloat val cos : rawfloat -> rawfloat val sqrt : rawfloat -> rawfloat val add : rawfloat -> rawfloat -> rawfloat val sub : rawfloat -> rawfloat -> rawfloat val mul : rawfloat -> rawfloat -> rawfloat val div : rawfloat -> rawfloat -> rawfloat val rem : rawfloat -> rawfloat -> rawfloat val min : rawfloat -> rawfloat -> rawfloat val max : rawfloat -> rawfloat -> rawfloat val atan2 : rawfloat -> rawfloat -> rawfloat omake-0.9.8.5/src/libmojave-external/util/lm_lexer.mli0000664000152300015230000001407310456222231021003 0ustar jyhjyh(* * Lexer generator. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_location (* * Debug flags. *) val debug_lexgen : bool ref val debug_lex : bool ref (* * The lexer takes an input stream as an argument. *) module type LexerInput = sig (* * Input channel is a stream of integers. * Usually these are just the ASCII codes for characters. *) type t (* * The channel has two special characters. * bof: the beginning of file * eof: the end of file. *) val bof : int val eof : int (* * The next function returns the next character in the input stream. *) val lex_next : t -> int (* * The pos function returns the current position of * the input buffer within the lexeme * (used for collecting \( ... \) arguments. *) val lex_pos : t -> int (* * The lexer will call start when it begins lexing. * The integer should be the *previous* character in the * input channel, or bof if at the beginning. *) val lex_start : t -> int (* * In some cases, the lexer may want to restart scanning * from a previous point. If so, it will call this function * to reset the start point. *) val lex_restart : t -> int -> unit (* * When the lexer is done, it calls lex_stop with * the number of characters in the final lexeme. Note * that this can cause data to be pushed back onto the input stream. *) val lex_stop : t -> int -> unit (* * Before calling lex_stop, the lexer may ask for the * lexeme as a string. The integer is the number of * characters in the lexeme, the same as the argument * to lex_stop. *) val lex_string : t -> int -> string val lex_substring : t -> int -> int -> string val lex_loc : t -> int -> loc end (* * Semantic actions. *) module type LexerAction = sig (* * Values of action type *must* be comparable with =, * hopefully quickly. * * For example, functions are not allowed. * If you want a function, you should make an array of functions, * and use the index for the action name. *) type action (* For debugging *) val pp_print_action : out_channel -> action -> unit (* For creating sets and tables *) val hash : action -> int val compare : action -> action -> int (* * You can use the function to decide which clauses take * precedence for a match of equal length. The function * gets two clause numbers. If you use the min function, * then you get the first clause that matched. If you * use the max function, you get the second clause that * matched. *) val choose : int -> int -> int end module MakeLexer (Input : LexerInput) (Action : LexerAction) : sig open Action type t (* Return values from the searchto function *) type searchto_info = LexEOF | LexSkipped of loc * string | LexMatched of action * loc * string * string * string list (* The empty lexer accepts the empty language *) val empty : t (* Add a clause, specified as a regular expression *) val add_clause : t -> action -> string -> int * t (* Remove a clause by action name *) val remove_clause : t -> action -> t (* * Union of two lexers. * The union assumes that actions with the same name * have the same regular expression. *) val union : t -> t -> t (* * Compile the machine if not already compiled. * This is entirely optional. It is here just in case you * want to expand the machine eagerly (for example before * marshaling it to a file). *) val compile : t -> unit (* * Print the lexer. * This is mainly for debugging. *) val pp_print_lexer : out_channel -> t -> unit (* * Hash code for the lexer. *) val hash : t -> int (* * Now match against an input channel. * The result is (clause, lexeme, args) * clause: the index of the clause that matched * lexeme: the entire string that matched * args: the arguments for \(...\) patterns. *) val lex : t -> Input.t -> action * loc * string * string list (* * Search for the first occurrence of a match. * Return the unmatched data that was skipped as well. * (action, skipped, matched, args) * This will not read past EOF. *) val search : t -> Input.t -> (action * loc * string * string * string list) option (* * The searchto function is similar, but if it doesn't detect a match, * it returns the text to the end of the channel. *) val searchto : t -> Input.t -> searchto_info (* * Just check if a string matches. *) val matches : t -> Input.t -> bool end (* * Str module replacement. *) module LmStr : sig type t (* * Construct a regular expression from a string. *) val regexp : string -> t (* * Check for a match. *) val string_match : t -> string -> int -> bool end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_filename_util.mli0000664000152300015230000000615410557452662022521 0ustar jyhjyh(* * Utilities on filenames. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Search for the index after the drive letter. *) type root = NullRoot | DriveRoot of char type 'a path = RelativePath of 'a | AbsolutePath of root * 'a (* * Pathname separators. *) val separator_char : char val separator_string : string val separators : string (* * Remove quotations from a string that represents a filename. *) val unescape_string : string -> string (* * Normalize function will give the canonical * lowercase name on Windows. It is a nop on * Unix. *) val normalize_string : string -> string val normalize_path : string list -> string list (* * A null root directory. *) val null_root : root (* * Get the root string. *) val string_of_root : root -> string (* * Skip the drive letter if it exists. *) val drive_skip : string -> int (* * Is this an absolute filename? *) val is_absolute : string -> bool (* * Parse filenames. *) val filename_string : string -> string path val filename_path : string -> string list path (* * Split into root, suffix. *) val split : string -> string * string (* * Get the name without suffix. *) val root : string -> string val suffix : string -> string val strip_suffixes : string -> string (* * Replace Filename. operations. *) val basename : string -> string val replace_basename : string -> string -> string (* * Path simplification. * Remove . and .. entries. *) type pathname = string list val split_path : string -> pathname val simplify_path : pathname -> pathname val concat_path : pathname -> string (* * Path searching. *) val is_executable : string -> string option val which : string -> string val which_dir : string -> string -> string val where : string -> string list (* * Make an entire hierarchy. *) val mkdirhier : string -> int -> unit (* * Get the listing in a directory. *) val lsdir : string -> string list (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_format_util.ml0000664000152300015230000000731210456222231022036 0ustar jyhjyh(* * JYH: we should port this to Lm_printf. * * Utilities for use with the format library. * Copyright (C) 2002, Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Justin David Smith * justins@chaos2.org *) open Format (* pp_print_paragraph_bare buf text Prints a paragraph of text. Normally, the text is allowed to break at any whitespace character. Line breaks are forced at any newline char. The   sequence can be used to insert a nonbreaking space. This assumes the caller has already opened an HOV box and that the caller will close the box when finished. *) let pp_print_paragraph_bare buf text = (* Precompute the length of the text *) let length = String.length text in (* Print out the descriptive text associated with an option *) let rec print_text index = if index + 5 < length && compare (String.sub text index 6) " " = 0 then begin (* Non-breakable space must be printed here. *) pp_print_string buf " "; print_text (index + 6) end else if index < length then begin (match text.[index] with ' ' | '\t' -> (* Spaces are normally breakable. *) pp_print_space buf () | '\n' -> (* Newline characters force a new line. *) pp_force_newline buf () | _ as c -> (* Ordinary character *) pp_print_char buf c); print_text (index + 1) end else () in (* end of print_text *) (* Print out the paragraph in an existing hov box *) print_text 0 (* pp_print_paragraph buf text Prints a paragraph of text in its own HOV box. Normally, the text is allowed to break at any whitespace character. Line breaks are forced at any newline character. The   sequence can be used to insert a nonbreaking space. *) let pp_print_paragraph buf text = (* Print out the paragraph in a new hov box *) pp_open_hovbox buf 0; pp_print_paragraph_bare buf text; pp_close_box buf () (* y_formatter buf1 buf2 Builds a Y formatter given two other formatters. Data printed to the Y formatter will be written to *both* formatters that are given as input. As a result, this acts as a `Y'' which splits the output. Pretty nice, eh? JYH: actually, to be consistent, this should be called "tee" *) let y_formatter buf1 buf2 = let y_out s i j = let buf1_out, _ = pp_get_formatter_output_functions buf1 () in let buf2_out, _ = pp_get_formatter_output_functions buf2 () in buf1_out s i j; buf2_out s i j in let y_flush () = let _, buf1_flush = pp_get_formatter_output_functions buf1 () in let _, buf2_flush = pp_get_formatter_output_functions buf2 () in buf1_flush (); buf2_flush () in make_formatter y_out y_flush omake-0.9.8.5/src/libmojave-external/util/lm_readline.ml0000664000152300015230000000517210456222231021276 0ustar jyhjyh(* * Simple readline interface. * Copyright (C) 2002 Justin David Smith, Caltech * Copyright (C) 2000-2005 Mojave Group, Alexey Nogin, Cornell University * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. *) (* C readline function returns None at EOF *) external caml_initialize_readline : unit -> unit = "caml_initialize_readline" external caml_register_commands : string list -> unit = "caml_register_commands" external caml_readline : string -> string option = "caml_readline" external caml_read_history : string -> unit = "caml_read_history" external caml_write_history : string -> unit = "caml_write_history" external caml_history_truncate_file : string -> int -> unit = "caml_history_truncate_file" (* initialize_readline () Initialise the readline library. *) let initialize_readline () = caml_initialize_readline () (* register_commands commands Register a list of commands for tab completion. This will clear the previous command-list; only one command-list may be installed at a time. Command completion only applies to the first word on the command-line. *) let register_commands commands = caml_register_commands commands let read_history filename = caml_read_history filename let write_history filename = caml_write_history filename let history_truncate_file filename nlines = caml_history_truncate_file filename nlines (* readline prompt Displays a readline prompt, and accepts a line of input from the user. Tab completion will be enabled as approprate. Be sure to call the initialize_readline () function before calling this function. This will raise End_of_file if the user strikes ^D. *) let readline prompt = match caml_readline prompt with Some s -> s | None -> raise End_of_file omake-0.9.8.5/src/libmojave-external/util/lm_symbol_hash.mli0000664000152300015230000001115310456222231022170 0ustar jyhjyh(* * Right now the symbol table is just a representation of strings. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu * * ---------------------------------------------------------------- * Revision History * * 2002 Dec 4 Michael Maire Added SymbolIndex * Added sets, tables, indices for * symbol pairs and triples *) open Lm_printf (* * Representation of symbols. *) type symbol type var = symbol (* * Debugging adds extra qualifiers to new symbols. *) val debug_symbol : bool ref (* * An "empty" variable name *) val empty_var : symbol (* * Add a symbol to the table. *) val add : string -> symbol val make : string -> int -> symbol val is_interned : symbol -> bool val reintern : symbol -> symbol val is_numeric_symbol : symbol -> bool (* * Make a new symbol. *) val new_symbol : symbol -> symbol val new_symbol_pre : string -> symbol -> symbol val new_symbol_string : string -> symbol val to_int : symbol -> int val to_string : symbol -> string (* * Find a symbol for which the predicate is false. *) val new_name : symbol -> (symbol -> bool) -> symbol val new_name_gen : symbol -> (symbol -> 'a option) -> 'a (* * Get back the string. *) val string_of_symbol : symbol -> string val string_of_ext_symbol : symbol -> string (* * Hash a symbol. *) val hash : symbol -> int (* * Compare two symbols for equality. *) val eq : symbol -> symbol -> bool (* * Ordered comparisons of symbols. *) val compare : symbol -> symbol -> int (* * Ordered comparisons of symbol pairs. *) val compare_pair : symbol * symbol -> symbol * symbol -> int (* * Ordered comparisons of symbol triples. *) val compare_triple : symbol * symbol * symbol -> symbol * symbol * symbol -> int (* * Ordered comparison of symbol lists. *) val compare_lists : symbol list -> symbol list -> int (* * We also provide a function to produce a unique integer. *) val new_number : unit -> int (* * This table provides associations between symbols * and values. *) module SymbolSet : Lm_set_sig.LmSet with type elt = symbol module SymbolTable : Lm_map_sig.LmMap with type key = symbol module SymbolMTable : Lm_map_sig.LmMapList with type key = symbol module SymbolIndex : Lm_index.LmIndex with type key = symbol module SymbolPairSet : Lm_set_sig.LmSet with type elt = symbol * symbol module SymbolPairTable : Lm_map_sig.LmMap with type key = symbol * symbol module SymbolPairMTable : Lm_map_sig.LmMapList with type key = symbol * symbol module SymbolPairIndex : Lm_index.LmIndex with type key = symbol * symbol module SymbolTripleSet : Lm_set_sig.LmSet with type elt = symbol * symbol * symbol module SymbolTripleTable : Lm_map_sig.LmMap with type key = symbol * symbol * symbol module SymbolTripleMTable : Lm_map_sig.LmMapList with type key = symbol * symbol * symbol module SymbolTripleIndex : Lm_index.LmIndex with type key = symbol * symbol * symbol (* * Symbol lists. *) module SymbolListSet : Lm_set_sig.LmSet with type elt = symbol list module SymbolListTable : Lm_map_sig.LmMap with type key = symbol list (* * This printer uses printf. *) val output_symbol : out_channel -> symbol -> unit val output_symbol_list : out_channel -> symbol list -> unit val output_symbol_set : out_channel -> SymbolSet.t -> unit (* * Format versions. *) val pp_print_symbol : formatter -> symbol -> unit val pp_print_symbol_list : formatter -> symbol list -> unit val pp_print_symbol_set : formatter -> SymbolSet.t -> unit val pp_print_ext_symbol : formatter -> symbol -> unit (* * -*- * Local Variables: * Caml-master: "set" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_location.mli0000664000152300015230000000361210456222231021471 0ustar jyhjyh(* * Source file locations. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol type loc (* * Comparison. *) val compare : loc -> loc -> int (* * Don't use this if you can avoid it. *) val bogus_loc : string -> loc (* * This is the normal way to make a location. * filename, start_line, start_char, end_line, end_char *) val create_loc : symbol -> int -> int -> int -> int -> loc (* * For marshaling. *) val dest_loc : loc -> symbol * int * int * int * int (* * Combine two locations. * The resulting span covers both. *) val union_loc : loc -> loc -> loc (* * Print a file location. *) val pp_print_location : out_channel -> loc -> unit val string_of_location : loc -> string (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_filename_util.ml0000664000152300015230000003641310557452662022351 0ustar jyhjyh(* * Utilities on filenames. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) type pathname = string list (* * Tests for whether a file is executable. *) let euid = try Unix.geteuid () with Unix.Unix_error _ -> 0 let groups = try Array.to_list (Unix.getgroups ()) with Unix.Unix_error _ -> [] let unix_is_executable s = let flag = try let { Unix.LargeFile.st_kind = kind; Unix.LargeFile.st_perm = perm; Unix.LargeFile.st_uid = uid; Unix.LargeFile.st_gid = gid } = Unix.LargeFile.stat s in (kind = Unix.S_REG) && ((perm land 0o001) <> 0 || (List.mem gid groups && (perm land 0o010) <> 0) || (uid = euid && (perm land 0o100) <> 0)) with Unix.Unix_error _ -> false in if flag then Some s else None (* * On Windows, the file does not have the be executable, * it just has to exist. *) let win32_suffixes = [""; ".com"; ".exe"; ".bat"; ".cmd"] let win32_is_executable = let rec search_win32 suffixes name = match suffixes with suffix :: suffixes -> let name' = name ^ suffix in if Sys.file_exists name' then Some name' else search_win32 suffixes name | [] -> None in search_win32 win32_suffixes (* * Cygwin is weird. See http://cygwin.com/cygwin-ug-net/using-specialnames.html#id4745135 * and http://bugzilla.metaprl.org/show_bug.cgi?id=496#c11 *) let cygwin_is_executable name = match unix_is_executable (name ^ ".exe") with Some _ as res -> res | None -> begin match unix_is_executable name with Some _ as res' -> res' | None -> None end (* * System-dependent config. * On win32, use lowercase names, and watch for drive letters. *) let has_drive_letters, normalize_string, normalize_path, separator_char, search_separator_char, is_executable = match Sys.os_type with "Win32" -> true, String.lowercase, List.map String.lowercase, '\\', ';', win32_is_executable | "Cygwin" -> false, String.lowercase, List.map String.lowercase, '/', ':', cygwin_is_executable | "Unix" -> false, (fun s -> s), (fun s -> s), '/', ':', unix_is_executable | s -> raise (Invalid_argument ("Omake_node: unknown system type " ^ s)) let separator_string = String.make 1 separator_char let search_separator_string = String.make 1 search_separator_char (* * Utilities for splitting paths. *) (* %%MAGICBEGIN%% *) type root = NullRoot | DriveRoot of char type 'a path = RelativePath of 'a | AbsolutePath of root * 'a (* %%MAGICEND%% *) let null_root = NullRoot (* * Windows sucks. Here are some utilities to * analyze drve letters. *) let is_drive_letter c = match c with 'a'..'z' | 'A'..'Z' -> true | _ -> false let drive_skip name = let len = String.length name in if has_drive_letters && len >= 2 && is_drive_letter name.[0] && name.[1] = ':' then 2 else 0 let is_slash c = match c with '/' | '\\' -> true | _ -> false let is_absolute name = let len = String.length name in (len >= 3 && is_drive_letter name.[0] && name.[1] = ':' && is_slash name.[2]) || (len >= 1 && is_slash name.[0]) (* * Print the drive letter. *) let string_of_root = function NullRoot -> separator_string | DriveRoot c -> let s = String.make 3 c in s.[1] <- ':'; s.[2] <- separator_char; s (* * Unescape a possibly quoted filename. * The only things we unquote are quotations. *) let unescape_string s = let len = String.length s in let rec start i = if i = len then s else match String.unsafe_get s i with '"' -> let buf = Buffer.create len in Buffer.add_substring buf s 0 i; dquote buf (succ i) | '\'' -> let buf = Buffer.create len in Buffer.add_substring buf s 0 i; squote buf (succ i) | _ -> start (succ i) and dquote buf i = if i = len then Buffer.contents buf else match String.unsafe_get s i with '"' -> normal buf (succ i) | '\\' when i < len - 1 -> (match s.[i + 1] with '"' -> Buffer.add_char buf '"'; dquote buf (i + 2) | _ -> Buffer.add_char buf '\\'; dquote buf (succ i)) | c -> Buffer.add_char buf c; dquote buf (succ i) and squote buf i = if i = len then Buffer.contents buf else match String.unsafe_get s i with '\'' -> normal buf (succ i) | '\\' when i < len - 1 -> (match s.[i + 1] with '\'' -> Buffer.add_char buf '\''; dquote buf (i + 2) | _ -> Buffer.add_char buf '\\'; dquote buf (succ i)) | c -> Buffer.add_char buf c; dquote buf (succ i) and normal buf i = if i = len then Buffer.contents buf else match String.unsafe_get s i with '"' -> dquote buf (succ i) | '\'' -> squote buf (succ i) | c -> Buffer.add_char buf c; normal buf (succ i) in start 0 (* * Split the path into root part, and the rest. *) let filename_string name = let len = String.length name in if has_drive_letters && len >= 3 && is_drive_letter name.[0] && name.[1] = ':' && (name.[2] = '/' || name.[2] = '\\') then let root = DriveRoot (Char.lowercase name.[0]) in let path = String.sub name 3 (len - 3) in AbsolutePath (root, path) else if len >= 1 && name.[0] = '/' then let root = NullRoot in let path = String.sub name 1 (len - 1) in AbsolutePath (root, path) else RelativePath name (* * Be careful not to split on glob characters. *) let is_glob_char s i = match String.unsafe_get s i with '{' | '}' | '*' | '?' | '[' | ']' -> true | _ -> false let filename_split name = let len = String.length name in let rec collect path off i = if i = len then let path = if i <= succ off then path else String.sub name off (i - off) :: path in List.rev path else let c = String.unsafe_get name i in match c with '/' -> if i <= succ off then collect path i (succ i) else collect (String.sub name off (i - off) :: path) i (succ i) | '\\' -> if i < len - 1 && is_glob_char name (succ i) then collect path off (i + 2) else if i <= succ off then collect path i (succ i) else collect (String.sub name off (i - off) :: path) i (succ i) | _ -> collect path off (succ i) in collect [] 0 0 (* * Split the rest into parts. *) let filename_path name = match filename_string name with AbsolutePath (root, path) -> AbsolutePath (root, Lm_string_util.split "\\/" path) | RelativePath path -> RelativePath (Lm_string_util.split "\\/" path) (* * Split a filename into root/suffix. *) let split name = try let index = String.rindex name '.' in let len = String.length name in let root = String.sub name 0 index in let suffix = String.sub name index (len - index) in root, suffix with Not_found -> name, "" (* * Separate this for efficiency. *) let root name = try let index = String.rindex name '.' in String.sub name 0 index with Not_found -> name let suffix name = try let index = String.rindex name '.' in String.sub name index (String.length name - index) with Not_found -> "" let strip_suffixes name = let start = try String.rindex name '/' with Not_found -> try String.rindex name '\\' with Not_found -> 0 in try let index = String.index_from name start '.' in String.sub name 0 index with Not_found -> name (* * Pathname separator chars. *) let separators = "/\\" (* * Split a pathname. *) let split_path = Lm_string_util.split separators (* * Put it back together. *) let concat_path = String.concat separator_string (* * Basic file operations. *) let basename s = try let i = Lm_string_util.rindex_set s separators + 1 in String.sub s i (String.length s - i) with Not_found -> s let replace_basename s1 s2 = try let i = Lm_string_util.rindex_set s1 separators in Filename.concat (String.sub s1 0 i) s2 with Not_found -> s2 (* * Simplify, remove leading directory. *) let simplify_path path = let rec simplify path' = function dir::tl -> if dir = "" or dir = "." then simplify path' tl else if dir = ".." then match path' with [] -> simplify path' tl | _::path'' -> simplify path'' tl else simplify (dir :: path') tl | [] -> List.rev path' in simplify [] path (* * Path searching. *) let search_table = Hashtbl.create 19 (* * Get the system path. *) let search_path = let path = try Sys.getenv "PATH" with Not_found -> "." in let path = Lm_string_util.split search_separator_string path in List.filter (fun name -> not (Filename.is_relative name)) path (* * Search for the file in the path. * Win32 files do not need to be executable. *) let search_command name = let rec search dirs name = match dirs with dir :: dirs -> let pathname = Filename.concat dir name in (match is_executable pathname with Some pathname -> pathname | None -> search dirs name) | [] -> raise Not_found in search search_path name (* * Figure out where in the path the commands comes from. *) let which name = if Filename.is_relative name then if Lm_string_util.contains_any name separators then let name = Filename.concat (Sys.getcwd ()) name in match is_executable name with Some fullname -> fullname | None -> raise Not_found else try Hashtbl.find search_table name with Not_found -> let fullname = search_command name in Hashtbl.add search_table name fullname; fullname else match is_executable name with Some fullname -> fullname | None -> raise Not_found (* * Use the directory as the starting point for relative names. *) let which_dir dir name = if Filename.is_relative name then if Lm_string_util.contains_any name separators then let name = Filename.concat dir name in match is_executable name with Some fullname -> fullname | None -> raise Not_found else try Hashtbl.find search_table name with Not_found -> let fullname = search_command name in Hashtbl.add search_table name fullname; fullname else match is_executable name with Some fullname -> fullname | None -> raise Not_found (* * Figure out where in the path the commands comes from. * Return all matches in order. *) let where name = if Lm_string_util.contains_any name separators then raise (Invalid_argument "Lm_filename_util.where"); let path = try Sys.getenv "PATH" with Not_found -> "." in let path = Lm_string_util.split search_separator_string path in let find dir = is_executable (Filename.concat dir name) in Lm_list_util.some_map find path (* * Make a directory hierarchy. *) let mkdirhier dir mode = let rec mkdir dir path = match path with head :: path -> let dir = Filename.concat dir head in let () = try let s = Unix.LargeFile.stat dir in if s.Unix.LargeFile.st_kind <> Unix.S_DIR then raise (Unix.Unix_error (Unix.ENOTDIR, "Lm_filename_util.mkdirhier", dir)) with Unix.Unix_error (Unix.ENOENT, _, _) -> try Unix.mkdir dir mode with Unix.Unix_error (Unix.EEXIST, _, _) -> () in mkdir dir path | [] -> () in let path = filename_path dir in let top, path = match path with AbsolutePath (root, path) -> string_of_root root, path | RelativePath path -> ".", path in mkdir top path (* * Get the names in a directory. *) let lsdir dirname = let dir = Unix.opendir dirname in let rec loop names = let name = try Some (Unix.readdir dir) with End_of_file -> None in match name with Some "." | Some ".." -> loop names | Some name -> loop (name :: names) | None -> Unix.closedir dir; List.rev names in loop [] (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_attribute.mli0000664000152300015230000000655210456222231021672 0ustar jyhjyh(* * This is a lazy attribute-grammar. * A term has: * * 0. A "core" value of the term (called 'core) * * 1. A label of some arbitrary type (called 'label) * * 2. A synthesized attribute (called 'up). The attribute * is computed lazily. The value is arbitrary, but the * calling module has to provide a function to compute the * attribute for the term. * * 3. An inherited attribute (called 'down). Inherited attributes * transform the core value, and are mapped from the top * down. The calling module has to supply a function to * apply the attribute to the core value. * * * The common example is: * * 1. The label is a source position in the program. * 2. The synthesized attribute is the free variables of the term. * 3. The inherited attribute is a substitution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf (* * An annotated term. *) type ('label, 'up, 'down, 'core) term (* * An unannotated term. *) type ('label, 'core) simple_term (* * Create a term. *) val wrap_core : 'label -> 'core -> ('label, 'up, 'down, 'core) term val wrap_simple_core : 'label -> 'core -> ('label, 'core) simple_term (* * Get the label. *) val label_of_term : ('label, 'up, 'down, 'core) term -> 'label val label_of_simple_term : ('label, 'core) simple_term -> 'label (* * Apply an inherited attribute. * This expects a function to take the union * of two inherited attributes. *) val apply : ('down -> 'down -> 'down) -> 'down -> ('label, 'up, 'down, 'core) term -> ('label, 'up, 'down, 'core) term (* * Get the core value. *) val dest_core : ('down -> 'core -> 'core) -> ('label, 'up, 'down, 'core) term -> 'core val dest_simple_core : ('label, 'core) simple_term -> 'core (* * Get the synthesized attribute. * It expects a function to compute the attribute from the * core and any delayed inherited attributes. *) val dest_up : ('core -> 'up) -> ('down -> 'up -> 'up) -> ('label, 'up, 'down, 'core) term -> 'up (* * For debugging. *) val pp_print_term : (formatter -> 'up -> unit) -> (formatter -> 'down -> unit) -> (formatter -> 'core -> unit) -> formatter -> ('label, 'up, 'down, 'core) term -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_termsize.mli0000664000152300015230000000223610535623100021522 0ustar jyhjyh(* * Extra terminal commands. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * Modified by: Aleksey Nogin *) open Unix val term_size : file_descr -> int * int val min_screen_width : int ref val term_width : out_channel -> int -> int val stdout_width : int val stderr_width : int (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_command_util.ml0000664000152300015230000003745310456222231022175 0ustar jyhjyh(* Command-line Interface Utilities Copyright (C) 2002 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) open Lm_format_util open Lm_string_util open Format (*** Command Processing (Extract Commands) ***) (* parse_command input Attempt to process a line of input as a command name and space- delimited arguments. The list of arguments is returned; use the get_next_argument command to extract arguments one-at-a-time. *) let parse_command input = let values = Lm_string_util.split " \t\n" input in let values = List.fold_left (fun new_values value -> if value = "" then new_values else value :: new_values) [] values in let values = List.rev values in values (* get_next_argument args Return the first argument in an argument list, along with the tail of the list. This is NOT List.hd; if the list is empty, then this returns an empty string for the next argument. *) let get_next_argument args = match args with arg :: args -> arg, args | [] -> "", [] (* reconstruct_arguments args Return a string representing the indicated argument list. The arguments are NOT quoted by this function; think of it as a ``feature'' at this time ;) *) let reconstruct_arguments args = let buf = Buffer.create 4096 in let _ = List.fold_left (fun first arg -> if not first then Buffer.add_string buf " "; Buffer.add_string buf arg; false) true args in Buffer.contents buf (*** Prompt Formatting and Display Properties ***) (* tcap_set_bold tcap_clear_attr Get terminal capabilities for formatting text. *) let tcap_set_bold = Lm_terminfo.tgetstr Lm_terminfo.enter_bold_mode let tcap_clear_attr = Lm_terminfo.tgetstr Lm_terminfo.exit_attribute_mode (* xterm_escape_begin xterm_escape_end XTerm escape sequences for setting and clearing the title text. *) let xterm_escape_begin = Lm_terminfo.xterm_escape_begin () let xterm_escape_end = Lm_terminfo.xterm_escape_end () (* bold_text text Makes the indicated text bold. If no termcap support was available, this returns the original prompt, unaltered. This is used primarily for prompt formatting. *) let bold_text text = match tcap_set_bold, tcap_clear_attr with Some set, Some clr -> set ^ text ^ clr | _ -> text (* title_text appname text Format text to be displayed in a title, as in an xterm title. If the terminal is not an xterm, then this returns an empty string. This will NOT format the text to display anything to the console itself, under any circumstance. This may prepend the application name to the text. *) let title_text appname text = match xterm_escape_begin, xterm_escape_end with Some set, Some clr -> if text = "" then set ^ appname ^ clr else set ^ appname ^ ": " ^ text ^ clr | _ -> "" (*** Read-Eval-Print Lm_loop ***) (* run_status Used to indicate whether a read-eval-print loop should continue accepting commands, or if it should terminate. Once the loop is terminated, an arbitrary value may be returned. Continue Command wants the read-eval-print loop to continue. Exit value Command wants loop to exit and return given value. *) type 'result run_status = Continue | Exit of 'result (* run_command Type of command functions that are called by the read-eval-print loop. 'args is the type of the arguments (usually string list), and 'result is the value returned by commands once they are ready to exit the loop. *) type ('args, 'result) run_command = 'args -> 'result run_status (* command Type of a single command entry. This corresponds to a command name, the function to call when the command is invoked, and the help text for the command. *) type ('args, 'result) command = string * ('args, 'result) run_command * string (* run_info Information given to run_loop which determines how the command prompt is formatted and how help text is presented to the user. Contains these fields: ri_appname Name of the application (used in title prompt). ri_curses If true, the help display can use curses interface. ri_hack_title If true, title text will be displayed in prompts. ri_help_prefix Text/overview to prepend to any help display. ri_prompt Function which, when run, returns text to display on each command prompt. The function is passed a unit argument. ri_commands List of commands to accept, and their actions. ri_cmd_quit Function to call if ^D is struck. ri_arg_filter Command to run on the arguments before passing them to the command function. space_filter gives the usual string list, split on whitespace. *) type ('args, 'result) run_info = { ri_appname : string; ri_curses : bool; ri_hack_title : bool; ri_help_prefix : string; ri_prompt : unit -> string; ri_commands : ('args, 'result) command list; ri_cmd_quit : ('args, 'result) run_command; ri_arg_filter : string -> 'args } (* continue f args Takes f : args -> unit and builds a new function which will run f, then return Continue. *) let continue f args = f args; Continue (* get_help_item buf name help Displays a single entry of help. *) let get_help_item buf name help = fprintf buf "@[%s@ " name; pp_print_paragraph_bare buf help; fprintf buf "@]" (* get_help buf run Displays the help text. Invoked when the user types "help" at a typical read-eval-print loop prompt. Help is emitted to the indicated formatter (usually stdout). *) let get_help buf run = let { ri_help_prefix = help_prefix; ri_commands = commands; } = run in fprintf buf "@[%s" help_prefix; fprintf buf "@ Commands available for this prompt are listed below."; fprintf buf "@ You can type \"help \" for help on a specific command."; List.iter (fun (name, _, help) -> fprintf buf "@ @ "; get_help_item buf name help) commands; fprintf buf "@]@." (* display_or_dump run f arg Depending on the value of ri_curses, this either tries to use the ncurses interface, or dumps text straight to the screen. In either case, f will be passed a formatter which it may use for its output. *) let display_or_dump run f arg = if run.ri_curses then (* Use the curses text viewer for help display. *) let buf = Buffer.create 4096 in let fmt = formatter_of_buffer buf in let () = f fmt arg in let help = Buffer.contents buf in Lm_ncurses_display.in_display (fun () -> Lm_ncurses_display.text_viewer "Command Help" help) () else (* No curses, dump help straight to console *) f std_formatter arg (* cmd_help run arg Display help; if the argument is nonempty, then help is displayed for the named command only. *) let cmd_help run arg = if arg = "" then display_or_dump run get_help run else let text = List.fold_left (fun text (name, _, help) -> match text with None when name = arg -> Some help | _ -> text) None run.ri_commands in match text with None -> printf "No applicable help found for \"%s\"@." arg | Some help -> display_or_dump run (fun buf help -> get_help_item buf arg help; fprintf buf "@.") help (* space_filter arguments Process arguments into a list of nonempty strings, which contain the arguments separated by whitespace. This is the typical filter given in the run_info structure. *) let space_filter arguments = parse_command arguments (* no_filter arguments Pass the arguments through unaltered. *) let no_filter arguments = arguments (* read_eval_print run Read a single command, evaluate it, and print the results. This processes at most one command for constructing a test case; call it from within a loop to accept multiple commands. *) let read_eval_print run = let { ri_prompt = prompt; ri_commands = commands; ri_hack_title = hack_title; ri_arg_filter = arg_filter; } = run in let cnames = List.map (fun (name, _, _) -> name) commands in let cnames = "help" :: cnames in let () = Lm_readline.register_commands cnames in let () = if hack_title then printf "%s@." (title_text run.ri_appname "") else printf "@." in let input = Lm_readline.readline (bold_text (prompt ())) in let command, _ = get_next_argument (parse_command input) in let command_len = String.length command in let arguments = String.sub input command_len (String.length input - command_len) in let arguments = Lm_string_util.trim arguments in let arguments = arg_filter arguments in let rec find_and_dispatch = function (command', call, _) :: commands -> if command = command' then call arguments else find_and_dispatch commands | [] -> printf "Unrecognized command \"%s\". Try \"help\".@." command; Continue in if command = "help" then let _, arguments = get_next_argument (parse_command input) in let arg, _ = get_next_argument arguments in continue (cmd_help run) arg else if command <> "" then find_and_dispatch commands else (* Blank commands are ignored *) Continue (* run_loop read_eval_print run Runs the loop for evaluating ri_commands until the user quits and/or presses ^D. This catches any exceptions that may have been thrown by the read-eval-print loop, above. You must indicate what function should be called when ^D is pressed, using ri_cmd_quit. The given read_eval_print function is used; usually you want Lm_command_util's version of read_eval_print. If the ri_curses flag is true, then the help system is allowed to use curses interface to display help on the commands. Any help text will be preceded by the contents of the string ri_help_prefix; the rest of the help is extracted from commands. This function catches EOF, ^C, Unix errors, Failures, and Invalid argument exceptions. If you wish to catch other exceptions in a manner that will not abort the run loop, you should pass in a custom read_eval_print which catches those exceptions and returns Continue. *) let run_loop read_eval_print run = let rec loop () = let continue = try read_eval_print run with End_of_file -> run.ri_cmd_quit (run.ri_arg_filter "") | Sys.Break -> Continue | Unix.Unix_error (error, f, arg) -> printf "Lm_command_util.run_loop: Unix error on command: %s: %s %s@." (Unix.error_message error) f arg; Continue | Sys_error msg -> printf "Lm_command_util.run_loop: System error on command: %s@." msg; Continue | Failure msg -> printf "Lm_command_util.run_loop: Failure on command: %s@." msg; Continue in match continue with Continue -> loop () | Exit v -> (* We are ready to terminate this loop *) v in loop () (* bad_arguments () Helper that indicates the arguments to a command were bad. *) let bad_arguments () = printf "Arguments given to command were malformed. Try \"help\".@." (*** Specialised Prompts ***) (* int_yes_no_cancel appname hack_title prompt default Internal implementation of yes/no(/cancel) prompt. If the cancel_ok flag is true, then the user is presented with a cancel option and may respond specifically with cancel; otherwise, cancel is mapped to "no" and the user may not type "cancel" (although ^D will map to "no"). *) let rec int_yes_no_cancel appname hack_title prompt default cancel_ok = let rec loop () = try let default_name = match default, cancel_ok with Some true, _ -> "yes" | Some false, _ | None, false -> "no" | None, true -> "cancel" in let commands, prompt' = if cancel_ok then ["yes"; "no"; "cancel"], "[yes,no,cancel]" else ["yes"; "no"], "[yes,no]" in let () = Lm_readline.register_commands commands in let () = if hack_title then printf "%s@." (title_text appname "") else printf "@." in let () = printf "%s?@." prompt in let prompt = sprintf "%s (default %s)? " prompt' default_name in let input = Lm_readline.readline (bold_text prompt) in match trim input with "y" | "yes" -> Some true | "n" | "no" -> Some false | "c" | "cancel" -> None | "" -> (* Use the default option *) printf "Assuming \"%s\"@." default_name; default | _ -> printf "I don't understand that response. Please use \"yes\" or \"no\".@."; loop () with End_of_file | Sys.Break -> printf "cancel@."; None in loop () (* yes_no_cancel appname hack_title prompt default Presents a yes/no/cancel prompt (^D maps to ``cancel'') for the user to respond to. Returns None if the user cancels, otherwise returns Some true if the user responds yes and Some false if the user responds no. The default argument is None indicating cancel as default; other- wise it is (Some true) for yes or (Some false) for no. *) let rec yes_no_cancel appname hack_title prompt default = int_yes_no_cancel appname hack_title prompt default true (* yes_no appname hack_title prompt default Similar to yes_no_cancel, but ``cancel'' gets mapped to ``no''. *) let yes_no appname hack_title prompt default = match int_yes_no_cancel appname hack_title prompt (Some default) false with Some result -> result | None -> false (* ok_to_overwrite_file appname hack_title filename If the named file exists, this puts up a prompt if it is okay to overwrite the named file, which defaults to yes. No prompt is displayed if the file doesn't exist. This returns true if either the file doesn't exist, or the user says it is okay to overwrite. *) let ok_to_overwrite_file appname hack_title filename = if Sys.file_exists filename then yes_no appname hack_title (sprintf "File \"%s\" exists, overwrite" filename) true else true omake-0.9.8.5/src/libmojave-external/util/lm_graph.mli0000664000152300015230000000270510322060244020760 0ustar jyhjyh(* Undirected imperative graph implementation * Geoffrey Irving * $Id: lm_graph.mli 7878 2005-10-09 00:13:24Z jyh $ *) (* type of undirected graphs and nodes containing type 'a *) type 'a t type 'a node (* empty graph *) val create : unit -> 'a t (* add nodes and edges *) val add_node : 'a t -> 'a -> 'a node val add_edge : 'a t -> 'a node -> 'a node -> unit val delete_node : 'a node -> unit val delete_edge : 'a node -> 'a node -> unit (* extract node information *) val get : 'a node -> 'a val degree : 'a node -> int val neighbors : 'a node -> 'a node list val query : 'a node -> 'a node -> bool (* extracting single nodes *) val choose : 'a t -> 'a node (* unspecified node, or Failure "choose" *) val find : ('a node -> bool) -> 'a t -> 'a node (* find node satisfying predicate, or Not_found *) (* iteration over all nodes (unspecified order) *) val list : 'a t -> 'a node list val iter : ('a node -> unit) -> 'a t -> unit val fold : ('a -> 'b node -> 'a) -> 'a -> 'b t -> 'a val filter : ('a node -> bool) -> 'a t -> 'a node list (* iteration over components (depth first search) * dfs_init must be called first, but multiple components can * be searched after one dfs_init call *) val dfs_init : 'a t -> unit val dfs_list : 'a node -> 'a node list val dfs_list_rev : 'a node -> 'a node list (* faster than dfs_list *) val dfs_iter : ('a node -> unit) -> 'a node -> unit val dfs_fold : ('a -> 'b node -> 'a) -> 'a -> 'b node -> 'a omake-0.9.8.5/src/libmojave-external/util/lm_channel.ml0000664000152300015230000010407310646757323021143 0ustar jyhjyh(* * Simple buffered IO. * * We have to deal with select on Win32 in some sensible way. * The problem is that select does not work with files or * pipes. Here is what we do: * * 1. If a channel is a file, IO is always possible * 2. If polling for read, and the buffer is nonempty, return true * 3. If polling for write, and the buffer is empty, return true * * Main polling loop: * 4. If polling for read on a pipe: * Use PeekNamedPipe * 5. If polling for write on a pipe: * Create a thread to perform the write * 6. For sockets, use select with a small timeout so * so we can check the pipes periodically. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology * and HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_thread_pool (* * The channel may be a file, pipe, or socket. * !!!The ordering of these fields is important!!! * If you update this, fix the function omake_shell_pipe_kind() * in omake_shell_csys.c *) type kind = FileChannel | PipeChannel | SocketChannel type mode = InChannel | OutChannel | InOutChannel (* * Canonical names. *) let string_sym = Lm_symbol.add ".string" let fun_sym = Lm_symbol.add ".fun" (* * The channel has an input and output buffer. * In addition, on Win32, we may have threads * to perform asynchronous writes on pipes. *) type channel = { mutable channel_id : int; channel_fd : Unix.file_descr option; channel_kind : kind; channel_mode : mode; mutable channel_file : symbol; (* If not channel_binary, then perform win32 line-ending transformation *) mutable channel_binary : bool; (* * We keep track of line number information. * The start_* fields give the line and character * number at the beginning of the buffer. * * The middle_* fields give the information at some * arbitrary point between 0 and in_max. *) mutable start_line : int; mutable start_char : int; mutable middle_index : int; mutable middle_line : int; mutable middle_char : int; (* * in_index is the index of the next character in the input. * in_max is the total amount of data in the input buffer. *) mutable in_index : int; mutable in_max : int; mutable in_buffer : string; (* * For lexing from the buffer. * lex_index is the current input position when lexing. * Invariant: in_index <= lex_index <= in_max *) mutable lex_index : int; (* * out_max is the total amount of data in the output buffer. * If out_expand is true, the outbuffer is expanded instead * instead of flushing. *) out_expand : bool; mutable out_max : int; mutable out_buffer : string; (* * In text mode, the output is double-buffered because * of line ending translation. * INVARIANT: In binary mode, the write_buffer is the same as the out_buffer. * * write_pid is the pid of the output thread, or 0 if there is no output thread. * write_index is the amount of data that has been written to the file. * write_max is the total amount of data in the write_buffer. *) mutable write_pid : int; mutable write_index : int; mutable write_max : int; mutable write_buffer : string; (* * These are the actual read and write functions. *) mutable read_fun : string -> int -> int -> int; mutable write_fun : string -> int -> int -> int } type t = channel (* * This is the normal buffer size. *) let buf_size = 4096 (* * This is the maximum size we allow * the input buffer to grow when lexing. *) let lex_buf_size = 1 lsl 18 (* * We may be told that this is a pipe, but really figure out what kind it is. *) external pipe_kind : Unix.file_descr -> kind = "omake_shell_pipe_kind" (* * Default readers and writers. * * XXX: We treat the "broken pipe" errors as EOFs. *) let default_reader fd buf off len = match fd with Some fd -> blocking_section (fun () -> try Unix.read fd buf off len with Unix.Unix_error (Unix.EUNKNOWNERR 0, _, _) | Unix.Unix_error (Unix.EPIPE, _, _) -> 0) () | None -> raise (Unix.Unix_error (Unix.EINVAL, "default_reader", "")) (* * Convert a fd to an integer (for debugging). *) external int_of_fd : Unix.file_descr -> int = "int_of_fd" let default_writer fd buf off len = match fd with Some fd -> blocking_section (fun () -> Unix.write fd buf off len) () | None -> raise (Unix.Unix_error (Unix.EINVAL, "default_writer", "")) (* * Readers and writers for string channels. *) let null_reader _ _ _ = 0 let null_writer _ _ _ = 0 (* * Empty buffer. *) let create file kind mode binary fd = let kind = match fd with Some fd -> if kind = PipeChannel then pipe_kind fd else kind | None -> kind in let binary = Sys.os_type <> "Win32" || binary in let out_buffer = String.create buf_size in let write_buffer = if binary then out_buffer else String.create (buf_size * 2) in { channel_id = 0; channel_fd = fd; channel_kind = kind; channel_mode = mode; channel_file = Lm_symbol.add file; channel_binary = Sys.os_type <> "Win32" || binary; start_line = 1; start_char = 0; middle_index = 0; middle_line = 1; middle_char = 0; in_index = 0; in_max = 0; in_buffer = String.create (succ buf_size); lex_index = 0; out_max = 0; out_expand = false; out_buffer = out_buffer; write_pid = 0; write_index = 0; write_max = 0; write_buffer = write_buffer; read_fun = default_reader fd; write_fun = default_writer fd } let set_id info id = info.channel_id <- id let of_string file line char s = let len = String.length s in { channel_id = 0; channel_fd = None; channel_kind = FileChannel; channel_mode = InChannel; channel_file = file; channel_binary = true; start_line = line; start_char = char; middle_index = 0; middle_line = line; middle_char = char; in_index = 0; in_max = len; in_buffer = s; lex_index = 0; out_max = 0; out_expand = false; out_buffer = ""; write_pid = 0; write_index = 0; write_max = 0; write_buffer = ""; read_fun = null_reader; write_fun = null_writer } let of_fun read write = let out_buffer = String.create buf_size in { channel_id = 0; channel_fd = None; channel_kind = FileChannel; channel_mode = InOutChannel; channel_file = fun_sym; channel_binary = true; start_line = 1; start_char = 0; middle_index = 0; middle_line = 1; middle_char = 0; in_index = 0; in_max = 0; in_buffer = String.create buf_size; lex_index = 0; out_max = 0; out_expand = false; out_buffer = out_buffer; write_pid = 0; write_index = 0; write_max = 0; write_buffer = out_buffer; read_fun = read; write_fun = write } let of_loc_string file line char s = of_string (Lm_symbol.add file) line char s let of_substring s off len = of_string string_sym 1 0 (String.sub s off len) let of_string s = of_string string_sym 1 0 (String.copy s) let info channel = let { channel_id = id; channel_kind = kind; channel_mode = mode; channel_binary = binary } = channel in id, kind, mode, binary let name channel = Lm_symbol.to_string channel.channel_file let descr channel = match channel.channel_fd with Some fd -> fd | None -> raise (Unix.Unix_error (Unix.EINVAL, "descr", "")) let set_binary_mode = if Sys.os_type = "Win32" then (fun info flag -> info.channel_binary <- flag) else (fun _ _ -> ()) let set_io_functions info reader writer = info.read_fun <- reader; info.write_fun <- writer let create_loc_string_aux file line char = let out_buffer = String.create buf_size in { channel_id = 0; channel_fd = None; channel_kind = FileChannel; channel_mode = OutChannel; channel_file = file; channel_binary = true; start_line = line; start_char = char; middle_index = 0; middle_line = line; middle_char = char; in_index = 0; in_max = 0; in_buffer = ""; lex_index = 0; out_max = 0; out_expand = true; out_buffer = out_buffer; write_pid = 0; write_index = 0; write_max = 0; write_buffer = out_buffer; read_fun = null_reader; write_fun = null_writer } let create_loc_string file line char = create_loc_string_aux (Lm_symbol.add file) line char let create_string () = create_loc_string_aux string_sym 1 0 (************************************************************************ * Line envding translation. *) let debug_get s i = eprintf "String.get: %d[%d]@." (String.length s) i; String.get s i let debug_set s i c = eprintf "String.set: %d[%d]@." (String.length s) i; String.set s i c let string_get = String.unsafe_get let string_set = String.unsafe_set let rec expand_text obuffer omax wbuffer = assert (omax >= 0 && omax <= String.length obuffer && omax * 2 <= String.length wbuffer); let rec copy1 src dst = if src = omax then dst else match string_get obuffer src with '\n' -> string_set wbuffer dst '\r'; string_set wbuffer (succ dst) '\n'; copy1 (succ src) (dst + 2) | c -> string_set wbuffer dst c; copy1 (succ src) (succ dst) in copy1 0 0 let squash_text buffer off amount = assert (off >= 0 && amount >= 0 && off + amount <= String.length buffer); if amount = 0 then 0 else let max = off + amount in let rec copy2 dst src = if src = max then dst - off else if src = max - 1 then begin string_set buffer dst (string_get buffer src); succ dst - off end else match string_get buffer src with '\r' when string_get buffer (succ src) = '\n' -> string_set buffer dst '\n'; copy2 (succ dst) (src + 2) | _ -> string_set buffer dst (string_get buffer src); copy2 (succ dst) (succ src) in copy2 off off (************************************************************************ * Line numbers. *) (* * Get the line/char for a particular point in the input buffer. *) let line_of_index info buffer index = let { start_line = start_line; start_char = start_char; middle_index = middle_index; middle_line = middle_line; middle_char = middle_char } = info in let rec search line char i = if i = index then begin info.middle_index <- index; info.middle_line <- line; info.middle_char <- char; line, char end else if buffer.[i] = '\n' then search (succ line) 0 (succ i) else search line (succ char) (succ i) in if index >= middle_index then search middle_line middle_char middle_index else search start_line start_char 0 (* * Reset the input buffer. * This resets the start line and position. *) let reset_input_buffer info = let line, char = line_of_index info info.in_buffer info.in_max in info.start_line <- line; info.start_char <- char; info.middle_index <- 0; info.middle_line <- line; info.middle_char <- char; info.in_max <- 0; info.in_index <- 0; info.lex_index <- 0 let shift_input_buffer info = let { in_buffer = in_buffer; in_index = in_index; lex_index = lex_index; in_max = in_max } = info in let line, char = line_of_index info in_buffer in_index in String.blit in_buffer in_index in_buffer 0 (in_max - in_index); info.start_line <- line; info.start_char <- char; info.middle_index <- 0; info.middle_line <- line; info.middle_char <- char; info.in_index <- 0; info.in_max <- in_max - in_index; info.lex_index <- lex_index - in_index let set_line info name line = shift_input_buffer info; info.start_line <- line; info.start_char <- 0; info.middle_line <- line; info.middle_char <- 0; info.channel_file <- Lm_symbol.add name (* * Reset the output buffer. * This resets the start line and position if this is a file. * For pipes and sockets, input and output are independent. *) let reset_output_buffer info = if info.channel_kind = FileChannel then begin let line, char = line_of_index info info.out_buffer info.out_max in info.start_line <- line; info.start_char <- char; info.middle_index <- 0; info.middle_line <- line; info.middle_char <- char end; info.out_max <- 0; info.write_index <- 0; info.write_max <- 0 (************************************************************************ * Output string buffers. *) (* * For string buffers, expand the output instead of * flushing. *) let expand_output info = let { out_buffer = buffer; out_max = max } = info in if max = String.length buffer then begin let buffer2 = String.create (max * 2) in String.blit buffer 0 buffer2 0 max; info.out_buffer <- buffer2; if info.channel_binary then info.write_buffer <- buffer2; end let to_string info = let { out_buffer = buffer; out_max = max } = info in String.sub buffer 0 max (************************************************************************ * Flushing and filling. *) (* * Flush the input. * When output is started, the remaining input is discarded. * Update the current position and line number information. *) let flush_input info = if info.channel_kind = FileChannel && info.in_max <> 0 then reset_input_buffer info (* * Start the write buffer. *) let setup_write_buffer info = if info.write_max = 0 then if info.channel_binary then begin info.write_index <- 0; info.write_max <- info.out_max end else let wmax = expand_text info.out_buffer info.out_max info.write_buffer in info.write_index <- 0; info.write_max <- wmax (* * Flush the buffer, but write only once. *) let flush_output_once info = setup_write_buffer info; let { write_index = off; write_max = max; write_buffer = buf; write_fun = write } = info in let count = write buf off (max - off) in let off' = off + count in if off' = max then reset_output_buffer info else info.write_index <- off' (* * Flush the buffer. *) let flush_aux info = setup_write_buffer info; let { write_buffer = buf; write_fun = writer } = info in (* Now write the data directly *) let rec write () = let { write_index = index; write_max = max } = info in let len = max - index in if len <> 0 then let count = writer buf index len in info.write_index <- index + count; write () in write (); reset_output_buffer info let flush_output info = let pid = info.write_pid in if pid <> 0 then Lm_thread_pool.waitpid pid; if info.out_expand then expand_output info else flush_aux info (* * Start an output thread trying to write the data to the pipe. *) let start_output_thread info = let pid = info.write_pid in if pid = 0 then let pid = Lm_thread_pool.create false (fun () -> let () = try flush_aux info with Unix.Unix_error _ -> () in info.write_pid <- 0) in info.write_pid <- pid let start_output_threads wfd_pipe = List.iter start_output_thread wfd_pipe (* * Flush and close the channel. *) let close info = flush_input info; let () = try flush_output info with Unix.Unix_error _ -> () in match info.channel_fd with Some fd -> Unix.close fd | None -> () (* * Print a byte. *) let rec output_char info c = let { out_max = max; out_buffer = buffer } = info in flush_input info; if max = String.length buffer then begin flush_output info; output_char info c end else begin buffer.[max] <- c; info.out_max <- succ max end let output_byte info c = output_char info (Char.chr c) (* * Write a substring. *) let rec output_buffer info buf off len = let { out_max = max; out_buffer = buffer } = info in let avail = String.length buffer - max in flush_input info; if len <> 0 then if avail = 0 then begin flush_output info; output_buffer info buf off len end else let amount = min avail len in String.blit buf off buffer max amount; info.out_max <- max + amount; output_buffer info buf (off + amount) (len - amount) let output_string info buf = output_buffer info buf 0 (String.length buf) (* * Write allows for partial writes. * This is always in binary mode. *) let write info buf off len = flush_input info; flush_output info; info.write_fun buf off len (* * Check if there is input already in the buffer. *) let poll info = let { in_index = index; in_max = max } = info in index <> max (* * Get data when the buffer is empty. *) let fillbuf info = let { channel_binary = binary; in_buffer = buf; read_fun = reader } = info in let count = reader buf 0 buf_size in let count = if count = 0 then raise End_of_file; if binary then count else let extra = (* Read one extra char if we got an unfortunate read *) if buf.[pred count] = '\r' then reader buf count 1 else 0 in squash_text buf 0 (count + extra) in info.in_index <- 0; info.in_max <- count (* * Get a single char. *) let rec input_char info = let { in_index = index; in_max = max; in_buffer = buf; } = info in flush_output info; if index = max then begin fillbuf info; input_char info end else let c = buf.[index] in info.in_index <- succ index; c (* * Translate to an integer. *) let input_byte info = Char.code (input_char info) (* * Read data into a buffer. *) let rec input_buffer info s off len = let { in_index = index; in_max = max; in_buffer = buf } = info in let avail = max - index in flush_output info; if len <> 0 then if avail = 0 then begin fillbuf info; input_buffer info s off len end else let amount = min avail len in let new_len = len - amount in let new_off = off + amount in String.blit buf index s off amount; info.in_index <- index + amount; input_buffer info s new_off new_len (* * Read a line, do not include the line-ending. *) let input_line info = let buf = Buffer.create 80 in let rec collect () = let c = input_char info in if c = '\n' then Buffer.contents buf else begin Buffer.add_char buf c; collect () end in try collect () with End_of_file when Buffer.length buf <> 0 -> Buffer.contents buf (* * Read a line, include the line-ending. *) let input_entire_line info = let buf = Buffer.create 80 in let rec collect () = let c = input_char info in Buffer.add_char buf c; if c = '\n' then Buffer.contents buf else collect () in try collect () with End_of_file when Buffer.length buf <> 0 -> Buffer.contents buf (* * Read allows for partial reading. *) let read info s off len = let { in_index = index; in_max = max; in_buffer = buf; read_fun = reader } = info in let avail = max - index in flush_output info; if avail = 0 then reader s off len else let amount = min len avail in String.blit buf index s off amount; info.in_index <- index + amount; amount (* * Export the flusher. *) let flush = flush_output (* * Positioning. * The tell function is unreliable on text files. *) let tell info = let pos = Unix.lseek (descr info) 0 Unix.SEEK_CUR in if info.out_max <> 0 then pos + info.out_max else pos + info.in_index let seek info pos whence = flush_output info; flush_input info; Unix.lseek (descr info) pos whence (* * Get the current location. *) let loc info = let { out_max = out_max; in_index = in_index; in_buffer = in_buffer; out_buffer = out_buffer; channel_file = file } = info in let line, char = if out_max <> 0 then line_of_index info out_buffer out_max else line_of_index info in_buffer in_index in create_loc file line char line char (************************************************************************ * Select. * Bah, this is tough on Win32. *) let rec classify files pipes sockets fdl = match fdl with fd :: fdl -> let files, pipes, sockets = match fd.channel_kind with FileChannel -> fd :: files, pipes, sockets | PipeChannel -> files, fd :: pipes, sockets | SocketChannel -> files, pipes, fd :: sockets in classify files pipes sockets fdl | [] -> files, pipes, sockets (* * Find input channels with nonempty buffers. *) let rec find_read_nonempty l rfd = match rfd with fd :: rfd -> let l = if fd.in_max <> fd.in_index then fd :: l else l in find_read_nonempty l rfd | [] -> l (* * Find output channels with empty buffers. *) let rec find_write_empty l wfd = match wfd with fd :: wfd -> let l = if fd.out_max = 0 || fd.out_expand then fd :: l else l in find_write_empty l wfd | [] -> l (* * Look at all the input pipes and see if any data is available. *) external peek_pipe : Unix.file_descr -> bool = "omake_shell_peek_pipe" let rec peek_pipes l pipes = match pipes with pipe :: pipes -> let l = if peek_pipe (descr pipe) then pipe :: l else l in peek_pipes l pipes | [] -> l (* * Aux function to translate between descriptors and channels. *) let select_aux rfd_sockets wfd_sockets efd_sockets timeout = let rfd = List.map descr rfd_sockets in let wfd = List.map descr wfd_sockets in let efd = List.map descr efd_sockets in let rfd, wfd, efd = Unix.select rfd wfd efd timeout in let rfd_sockets = List.filter (fun fd -> List.mem (descr fd) rfd) rfd_sockets in let wfd_sockets, wrote = List.fold_left (fun (wfd_sockets, wrote) fd -> if List.mem (descr fd) wfd then let wrote = if fd.out_max <> 0 then begin flush_output_once fd; true end else wrote in fd :: wfd_sockets, wrote else wfd_sockets, wrote) ([], false) wfd_sockets in let efd_sockets = List.filter (fun fd -> List.mem (descr fd) efd) efd_sockets in rfd_sockets, wfd_sockets, efd_sockets, wrote (* * Periodically poll to see if something has happened. * If necessary, poll interval is 50msec. *) let poll_interval = 0.050 let rec select_poll rfd_pipes rfd_sockets wfd_pipes wfd_sockets efd_sockets expire = let wfd_empty = find_write_empty [] wfd_pipes in if wfd_empty <> [] then [], wfd_empty, [] else (* Peek at the pipes and see if they are ready for reading *) let rfd_pipes_ready = peek_pipes [] rfd_pipes in if rfd_pipes_ready <> [] then rfd_pipes_ready, [], [] else (* Start the writer threads for the pipes *) let () = start_output_threads wfd_pipes in (* Compute the nest polling interval *) let timeout, final_attempt = if rfd_pipes = [] && wfd_pipes = [] then let now = Unix.gettimeofday () in let timeout = expire -. now in max timeout 0.0, true else if expire < 0.0 then poll_interval, false else let now = Unix.gettimeofday () in let timeout = expire -. now in if timeout < poll_interval then max timeout 0.0, true else poll_interval, false in (* Perform the select on the sockets *) let rfd, wfd, efd, wrote = select_aux rfd_sockets wfd_sockets efd_sockets timeout in if rfd <> [] || wfd <> [] || efd <> [] then (* Success with a socket *) rfd, wfd, efd else if final_attempt && not wrote then (* Reached the timeout *) [], [], [] else (* Timeout occurred, try again *) select_poll rfd_pipes rfd_sockets wfd_pipes wfd_sockets efd_sockets expire (* * If there are no pipes, just call select directly. *) let select rfd wfd efd timeout = let rfd_files, rfd_pipes, rfd_sockets = classify [] [] [] rfd in let wfd_files, wfd_pipes, wfd_sockets = classify [] [] [] wfd in let efd_files, _efd_pipes, efd_sockets = classify [] [] [] efd in if rfd_files <> [] || wfd_files <> [] || efd_files <> [] then rfd_files, wfd_files, efd_files else let rfd_nonempty = find_read_nonempty [] rfd_pipes in let rfd_nonempty = find_read_nonempty rfd_nonempty rfd_sockets in if rfd_nonempty <> [] then rfd_nonempty, [], [] else let expire = if timeout <= 0.0 then timeout else Unix.gettimeofday () +. timeout in select_poll rfd_pipes rfd_sockets wfd_pipes wfd_sockets efd_sockets expire (************************************************************************ * Lexing functions. * * When the lexer is working, it needs to buffer *all* the input, * so we never throw the input away. *) module LexerInput = struct type t = channel (* * These are special characters used to identify begin-of-file * and end-of-file conditions. *) let eof = -1 let bof = -2 (* * Start lex mode. *) let lex_start channel = let { in_index = index; in_buffer = buffer } = channel in let prev = if index = 0 then bof else Char.code buffer.[pred index] in channel.lex_index <- channel.in_index; prev (* * Restart at a previous position. *) let lex_restart channel pos = let { in_max = max; in_index = index } = channel in assert (pos >= 0 && pos <= max - index); channel.lex_index <- index + pos (* * Stop lexing. * The argument is how much data was read in lex mode. *) let lex_stop channel pos = channel.in_index <- channel.in_index + pos; assert(channel.in_index <= channel.in_max) (* * Get the string matched by the lexer. *) let lex_string channel pos = let { in_index = start; in_buffer = buffer } = channel in String.sub buffer start pos (* * Get the string matched by the lexer. *) let lex_substring channel off len = let { in_index = start; in_buffer = buffer } = channel in String.sub buffer (start + off) len (* * Fill the buffer in lex mode. * We can't discard any of the existing data. *) let rec lex_fill channel = let { in_max = max; in_buffer = buffer; in_index = start; read_fun = reader; channel_binary = binary } = channel in let len = String.length buffer in let amount = len - max in (* If we have space, fill it *) if amount > 1 then let count = reader buffer max (pred amount) in if count = 0 then eof else let count = if binary then count else let extra = if buffer.[max + count - 1] = '\r' then reader buffer (max + count) 1 else 0 in squash_text buffer max (count + extra) in let c = buffer.[max] in channel.in_max <- max + count; channel.lex_index <- succ max; Char.code c (* If we can shift left, do it *) else if start <> 0 then begin shift_input_buffer channel; lex_fill channel end (* If the buffer is already too big, return eof *) else if len >= lex_buf_size then eof (* * Otherwise grow it. *) else let new_buffer = String.create (Pervasives.max (len * 2) 32) in String.blit buffer 0 new_buffer 0 max; channel.in_buffer <- new_buffer; lex_fill channel (* * Get the next character in lex mode. *) let lex_next channel = let { in_max = max; in_buffer = buffer; lex_index = index } = channel in if index = max then lex_fill channel else let c = buffer.[index] in channel.lex_index <- succ index; Char.code c (* * Get the current position in lex mode. *) let lex_pos channel = channel.lex_index - channel.in_index (* * Get the location of the buffer. *) let lex_loc channel off = let { start_line = line; start_char = char; channel_file = file; lex_index = index; in_buffer = buffer; in_max = max } = channel in let line1, char1 = if index > max then line, char else line_of_index channel buffer index in let line2, char2 = if index + off > max then line1, char1 else line_of_index channel buffer (index + off) in create_loc file line1 char1 line2 char2 (* * Add any remaining buffered text to a buffer. *) let lex_buffer channel buf = let { in_max = max; in_buffer = buffer; in_index = start } = channel in Buffer.add_substring buf buffer start (max - start); channel.in_index <- max end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_rawint.ml0000664000152300015230000002002510456222231021011 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Various forms of raw integers. *) type int_precision = Int8 | Int16 | Int32 | Int64 (* * Signed or unsigned. *) type int_signed = bool (* * Actual numbers. * Invariant: if ((p, s, i) is a rawint) i = cast p s i *) type rawint = int_precision * int_signed * int64 let precision (pre, _, _) = pre let signed (_, signed, _) = signed (* * Test for zero or one. *) let is_zero (_, _, i) = i = Int64.zero let is_one (_, _, i) = i = Int64.one (* * Truncate the value. *) let neg_int8_mask = Int64.of_int (-1 lsl 8) let neg_int16_mask = Int64.of_int (-1 lsl 16) let neg_int32_mask = Int64.shift_left (Int64.of_int (-1)) 32 let pos_int8_mask = Int64.lognot neg_int8_mask let pos_int16_mask = Int64.lognot neg_int16_mask let pos_int32_mask = Int64.lognot neg_int32_mask let cast pre signed i = if signed && compare i Int64.zero < 0 then match pre with Int8 -> Int64.logor i neg_int8_mask | Int16 -> Int64.logor i neg_int16_mask | Int32 -> Int64.logor i neg_int32_mask | Int64 -> i else match pre with Int8 -> Int64.logand i pos_int8_mask | Int16 -> Int64.logand i pos_int16_mask | Int32 -> Int64.logand i pos_int32_mask | Int64 -> i let of_rawint pre signed (_, _, i) = pre, signed, cast pre signed i (* * Min and max. *) let max_int8_unsigned = pos_int8_mask let min_int8_signed = Int64.of_int (-1 lsl 7) let max_int8_signed = Int64.lognot min_int8_signed let max_int16_unsigned = pos_int16_mask let min_int16_signed = Int64.of_int (-1 lsl 15) let max_int16_signed = Int64.lognot min_int16_signed let max_int32_unsigned = pos_int32_mask let min_int32_signed = Int64.shift_left (Int64.of_int (-1)) 31 let max_int32_signed = Int64.lognot min_int32_signed let max_int64_unsigned = Int64.lognot Int64.zero let min_int64_signed = Int64.shift_left (Int64.of_int (-1)) 63 let max_int64_signed = Int64.lognot min_int64_signed let max_int pre signed = let i = match pre, signed with Int8, true -> max_int8_signed | Int8, false -> max_int8_unsigned | Int16, true -> max_int16_signed | Int16, false -> max_int16_unsigned | Int32, true -> max_int32_signed | Int32, false -> max_int32_unsigned | Int64, true -> max_int64_signed | Int64, false -> max_int64_unsigned in pre, signed, i let min_int pre signed = let i = if signed then match pre with Int8 -> min_int8_signed | Int16 -> min_int16_signed | Int32 -> min_int32_signed | Int64 -> min_int64_signed else Int64.zero in pre, signed, i (* * Constructors. *) let of_int pre signed i = pre, signed, cast pre signed (Int64.of_int i) let of_float pre signed x = pre, signed, cast pre signed (Int64.of_float x) let of_int32 pre signed i = pre, signed, cast pre signed (Int64.of_int32 i) let of_int64 pre signed i = pre, signed, cast pre signed i let of_nativeint pre signed i = pre, signed, cast pre signed (Int64.of_nativeint i) let of_string pre signed s = pre, signed, Int64.of_string s let to_byte (_, signed, i) = Int64.to_int (cast Int8 signed i) let to_short (_, signed, i) = Int64.to_int (cast Int16 signed i) let to_int64 (_, _, i) = i let to_int (_, _, i) = Int64.to_int i let to_float (_, _, i) = Int64.to_float i let to_int32 (_, _, i) = Int64.to_int32 i let to_nativeint (_, _, i) = Int64.to_nativeint i let to_string (_, _, i) = Int64.to_string i (* * Coercions. * Sizes always go up. * Signed always becomes unsigned *) let max_pre pre1 pre2 = match pre1, pre2 with Int8, Int8 -> Int8 | Int8, Int16 | Int16, Int8 | Int16, Int16 -> Int16 | Int8, Int32 | Int16, Int32 | Int32, Int8 | Int32, Int16 | Int32, Int32 -> Int32 | Int8, Int64 | Int16, Int64 | Int32, Int64 | Int64, Int8 | Int64, Int16 | Int64, Int32 | Int64, Int64 -> Int64 let max_signed sign1 sign2 = sign1 && sign2 (* * Arithmetic. *) let unop op (pre, signed, i) = pre, signed, cast pre signed (op i) let neg = unop Int64.neg let uminus = neg let succ = unop Int64.succ let pred = unop Int64.pred let abs = unop Int64.abs let lognot = unop Int64.lognot (* * Binary operators. *) let binop op (pre1, signed1, i1) (pre2, signed2, i2) = let pre = max_pre pre1 pre2 in let signed = max_signed signed1 signed2 in let i1 = cast pre signed i1 in let i2 = cast pre signed i2 in pre, signed, cast pre signed (op i1 i2) let add = binop Int64.add let sub = binop Int64.sub let mul = binop Int64.mul let div = binop Int64.div let rem = binop Int64.rem (* * Bitwise operations. *) let logand = binop Int64.logand let logor = binop Int64.logor let logxor = binop Int64.logxor let shift_mask pre j = let mask = match pre with Int8 | Int16 | Int32 -> 31 | Int64 -> 63 in Int64.to_int j land mask let shift_left (pre, signed, i) (_, _, j) = let j = shift_mask pre j in pre, signed, cast pre signed (Int64.shift_left i j) let shift_left_int (pre, signed, i) j = pre, signed, cast pre signed (Int64.shift_left i j) let shift_right (pre, signed, i) (_, _, j) = let j = shift_mask pre j in let i = if signed then Int64.shift_right i j else Int64.shift_right_logical i j in pre, signed, cast pre signed i (* * bit fields. *) let field (pre, signed, i) off len = let i = Int64.shift_right i off in let mask = Int64.shift_left (Int64.of_int (-1)) len in if signed then pre, signed, Int64.logor i mask else pre, signed, Int64.logand i (Int64.lognot mask) let set_field (pre, signed, i) off len (_, _, j) = let mask1 = Int64.lognot (Int64.shift_left (Int64.of_int (-1)) len) in let mask2 = Int64.lognot (Int64.shift_left mask1 off) in let i = Int64.logand i mask2 in let i = Int64.logor i (Int64.shift_left (Int64.logand j mask1) off) in pre, signed, i (* * Comparison. *) let compare (pre1, signed1, i1) (pre2, signed2, i2) = let pre = max_pre pre1 pre2 in let signed = max_signed signed1 signed2 in let i1 = cast pre signed i1 in let i2 = cast pre signed i2 in if signed then compare i1 i2 else let neg1 = Int64.to_int (Int64.shift_right_logical i1 63) = 1 in let neg2 = Int64.to_int (Int64.shift_right_logical i2 63) = 1 in if neg1 then if neg2 then compare i2 i1 else 1 else if neg2 then -1 else compare i1 i2 let min i1 i2 = if compare i1 i2 < 0 then i1 else i2 let max i1 i2 = if compare i1 i2 > 0 then i1 else i2 (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_graph.ml0000664000152300015230000000640710322060244020612 0ustar jyhjyh(* Undirected imperative graph implementation * Geoffrey Irving * $Id: lm_graph.ml 7878 2005-10-09 00:13:24Z jyh $ *) let rec list_remove n = function [] -> [] | m :: l -> if n == m then l else m :: list_remove n l type color = White | Black (* nodes are stored in a semi-doubly linked list *) type 'a node = { node_info : 'a; mutable node_degree : int; mutable node_edges : 'a node list; mutable node_color : color; node_next : 'a node option ref; mutable node_prev : 'a node option ref } type 'a t = 'a node option ref (* empty graph *) let create () = ref None (* node information *) let get n = n.node_info let degree n = n.node_degree let neighbors n = n.node_edges let query n m = List.memq m n.node_edges (* add node to g with information i *) let add_node g i = let l = !g in let next = ref l in let n = { node_info = i; node_degree = 0; node_edges = []; node_color = White; node_next = next; node_prev = g } in g := Some n; match l with None -> n | Some m -> m.node_prev <- next; n (* add edge to g from node n to node m *) let add_edge g n m = if not (query n m) then (n.node_edges <- m :: n.node_edges; m.node_edges <- n :: m.node_edges; n.node_degree <- n.node_degree + 1; m.node_degree <- m.node_degree + 1) let delete_half_edge n m = m.node_edges <- list_remove n m.node_edges; m.node_degree <- m.node_degree - 1 (* delete node n from graph g *) let delete_node n = List.iter (delete_half_edge n) n.node_edges; let prev = n.node_prev in let next = !(n.node_next) in prev := next; match next with None -> () | Some m -> m.node_prev <- prev (* delete edge between nodes n and m, if it exists *) let delete_edge n m = if query n m then (delete_half_edge n m; delete_half_edge m n) (* extracting single nodes *) let choose g = match !g with Some n -> n | None -> raise (Failure "choose") let rec find p g = match !g with None -> raise Not_found | Some n -> if p n then n else find p n.node_next (* iteration over all nodes (unspecified order) *) let rec list_aux l g = match !g with None -> l | Some n -> list_aux (n :: l) n.node_next let list g = list_aux [] g let rec iter f g = match !g with None -> () | Some n -> f n; iter f n.node_next let rec fold f i g = match !g with None -> i | Some n -> fold f (f i n) n.node_next let rec filter_aux l p g = match !g with None -> l | Some n -> filter_aux (if p n then n :: l else l) p n.node_next let filter p g = filter_aux [] p g (* depth first searching *) let dfs_init g = iter (fun n -> n.node_color <- White) g let rec dfs_list_rev_aux l n = if n.node_color == White then ( n.node_color <- Black; List.fold_left dfs_list_rev_aux (n :: l) n.node_edges ) else l let dfs_list_rev n = dfs_list_rev_aux [] n let dfs_list n = List.rev (dfs_list_rev n) let rec dfs_iter f n = if n.node_color == White then ( n.node_color <- Black; f n; List.iter (dfs_iter f) n.node_edges) let rec dfs_fold f i n = if n.node_color == White then ( n.node_color <- Black; List.fold_left (dfs_fold f) (f i n) n.node_edges) else i omake-0.9.8.5/src/libmojave-external/util/lm_interval_set.ml0000664000152300015230000005667110456222231022224 0ustar jyhjyh(* * Interval sets. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Elements. *) module type OrderedType = sig type t val compare : t -> t -> int end (* * Elements in countable sets. *) module type CountableOrderedType = sig type t val compare : t -> t -> int val succ : t -> t val pred : t -> t val min : t val max : t end (* * Sets specified as intervals. *) type 'a bound = Infinity | Open of 'a | Closed of 'a module type IntervalSetSig = sig type elt type t (* * Set constructors. *) val empty : t val max_set : t val of_interval : elt bound -> elt bound -> t val is_empty : t -> bool val is_total : t -> bool val is_enum : t -> elt -> bool val to_enum : t -> elt (* * Set operations. *) val subset : t -> t -> bool val equal : t -> t -> bool val subtract : t -> t -> t val negate : t -> t val union : t -> t -> t val isect : t -> t -> t (* * Singletons. *) val of_point : elt -> t val mem_point : elt -> t -> bool val add_point : t -> elt -> t val is_singleton : t -> bool val dest_singleton : t -> elt val subtract_point : t -> elt -> t (* * Mapping. *) val iter : (elt bound -> elt bound -> unit) -> t -> unit val fold : ('a -> elt bound -> elt bound -> 'a) -> 'a -> t -> 'a end (* * Intervals over a dense set (like strings or rationals). * Need both open and closed intervals. *) module DenseIntervalSet (Element : OrderedType) : IntervalSetSig with type elt = Element.t = struct (* * Simple implementation is just a sorted list of * disjoint closed intervals. *) type elt = Element.t type left_bound = LeftInfinity | LeftOpen of elt | LeftClosed of elt type right_bound = RightInfinity | RightOpen of elt | RightClosed of elt type t = (left_bound * right_bound) list (* * Short comparisons. *) let compare = Element.compare let lt x y = compare x y < 0 let le x y = compare x y <= 0 let eq x y = compare x y = 0 (* * Empty set. *) let empty = [] let max_set = [LeftInfinity, RightInfinity] let is_empty s = s = [] let is_total s = s = [LeftInfinity, RightInfinity] let is_enum _ _ = false let to_enum _ = raise (Invalid_argument "to_enum") (* * Set containing one point. *) let of_point x = [LeftClosed x, RightClosed x] let is_singleton = function [LeftClosed x, RightClosed y] when eq x y -> true | _ -> false let dest_singleton = function [LeftClosed x, RightClosed y] when eq x y -> x | _ -> raise (Invalid_argument "Lm_interval_set.dest_singleton") (* * Set containing an interval. *) let left_bound = function Infinity -> LeftInfinity | Open x -> LeftOpen x | Closed x -> LeftClosed x let right_bound = function Infinity -> RightInfinity | Open x -> RightOpen x | Closed x -> RightClosed x let of_interval x y = [left_bound x, right_bound y] (* * Compare limits. *) let compare_left_left x y = match x, y with LeftInfinity, LeftInfinity -> 0 | LeftInfinity, _ -> -1 | _, LeftInfinity -> 1 | LeftOpen x, LeftOpen y -> compare x y | LeftOpen x, LeftClosed y -> let eq = compare x y in if eq = 0 then 1 else eq | LeftClosed x, LeftOpen y -> let eq = compare x y in if eq = 0 then -1 else eq | LeftClosed x, LeftClosed y -> compare x y let compare_right_left x y = match x, y with RightInfinity, _ | _, LeftInfinity -> 1 | RightOpen x, LeftOpen y -> let eq = compare x y in if eq = 0 then -1 else eq | RightOpen x, LeftClosed y -> let eq = compare x y in if eq = 0 then -1 else eq | RightClosed x, LeftOpen y -> let eq = compare x y in if eq = 0 then -1 else eq | RightClosed x, LeftClosed y -> compare x y let compare_right_right x y = match x, y with RightInfinity, RightInfinity -> 0 | RightInfinity, _ -> 1 | _, RightInfinity -> -1 | RightOpen x, RightOpen y -> compare x y | RightOpen x, RightClosed y -> let eq = compare x y in if eq = 0 then -1 else eq | RightClosed x, RightOpen y -> let eq = compare x y in if eq = 0 then 1 else 0 | RightClosed x, RightClosed y -> compare x y let ge_left_left x y = compare_left_left x y >= 0 let lt_left_left x y = compare_left_left x y < 0 let lt_right_right x y = compare_right_right x y < 0 let le_right_right x y = compare_right_right x y <= 0 let lt_right_left x y = compare_right_left x y < 0 (* * Min-max. *) let min_left_left x y = if lt_left_left x y then x else y let max_right_right x y = if lt_right_right x y then y else x let max_left_left x y = if lt_left_left x y then y else x let min_right_right x y = if lt_right_right x y then x else y (* * Interval operations. *) let lt_interval_interval (_, right) (left, _) = lt_right_left right left let subset_interval_interval (left1, right1) (left2, right2) = ge_left_left left1 left2 && le_right_right right1 right2 (* * Union assumes the two intervals overlap. *) let union_interval_interval (left1, right1) (left2, right2) = (min_left_left left1 left2, max_right_right right1 right2) (* * Isect assumes the two intervals overlap. *) let isect_interval_interval (left1, right1) (left2, right2) = (max_left_left left1 left2, min_right_right right1 right2) (* * Subtract assume sthe intervals overlap. *) let invert_left = function LeftOpen x -> RightClosed x | LeftClosed x -> RightOpen x | LeftInfinity -> raise (Invalid_argument "invert_left") let invert_right = function RightOpen x -> LeftClosed x | RightClosed x -> LeftOpen x | RightInfinity -> raise (Invalid_argument "invert_right") let subtract_interval_interval (left1, right1) (left2, right2) = let compare_left = compare_left_left left1 left2 in let compare_right = compare_right_right right1 right2 in if compare_left < 0 then if compare_right < 0 then (* * left1 right1 * |--------| * |---------| * left2 right2 *) [left1, invert_left left2; invert_right right1, right2] else if compare_right = 0 then (* * left1 right1 * |--------| * |-----| * left2 right2 *) [left1, invert_left left2] else (* compare_right > 0 *) (* * left1 right1 * |------------| * |-----| * left2 right2 *) [left1, invert_left left2; invert_right right2, right1] else if compare_left = 0 then if compare_right < 0 then (* * left1 right1 * |--------| * |------------| * left2 right2 *) [invert_right right1, right2] else if compare_right = 0 then (* * left1 right1 * |--------| * |--------| * left2 right2 *) [] else (* compare_right > 0 *) (* * left1 right1 * |------------| * |--------| * left2 right2 *) [invert_right right2, right1] else if compare_right <= 0 then (* * left1 right1 * |--------| * |--------------| * left2 right2 *) [] else (* compare_right > 0 *) (* * left1 right1 * |-----------| * |-----------| * left2 right2 *) [invert_right right2, right1] (* * Join intervals that have common endpoints. *) let rec normalize = function (left, RightClosed x) :: (LeftClosed y, right) :: set when eq x y -> normalize ((left, right) :: set) | (left, RightClosed x) :: (LeftOpen y, right) :: set when eq x y -> normalize ((left, right) :: set) | (left, RightOpen x) :: (LeftClosed y, right) :: set when eq x y -> normalize ((left, right) :: set) | h :: set -> h :: normalize set | [] -> [] (* * Test subset. *) let rec subset set1 set2 = match set1, set2 with [], _ -> true | _, [] -> false | interval1 :: set1', interval2 :: set2' -> if lt_interval_interval interval2 interval1 then subset set1 set2' else if subset_interval_interval interval1 interval2 then subset set1' set2 else false (* * Test equality. *) let equal s1 s2 = subset s1 s2 && subset s2 s1 let mem_point x set = subset [LeftClosed x, RightClosed x] set (* * Set subtraction. *) let rec subtract set1 set2 = match set1, set2 with [], _ -> [] | _, [] -> set1 | interval1 :: set1', interval2 :: set2' -> if lt_interval_interval interval1 interval2 then interval1 :: subtract set1' set2 else if lt_interval_interval interval2 interval1 then subtract set1 set2' else (subtract_interval_interval interval1 interval2) @ subtract set1' set2 let negate set = subtract [LeftInfinity, RightInfinity] set let subtract_point set x = subtract set [LeftClosed x, RightClosed x] (* * Set union. *) let rec union set1 set2 = match set1, set2 with [], _ -> set2 | _, [] -> set1 | interval1 :: set1', interval2 :: set2' -> if lt_interval_interval interval1 interval2 then interval1 :: union set1' set2 else if lt_interval_interval interval2 interval1 then interval2 :: union set1 set2' else let interval = union_interval_interval interval1 interval2 in let _, right1 = interval1 in let _, right2 = interval2 in if lt_right_right right1 right2 then union set1' (interval :: set2) else union (interval :: set1) set2' let add_point set x = union set (of_point x) (* * Intersection. *) let rec isect set1 set2 = match set1, set2 with [], _ | _, [] -> [] | interval1 :: set1', interval2 :: set2' -> if lt_interval_interval interval1 interval2 then isect set1' set2' else if lt_interval_interval interval2 interval1 then isect set1' set2' else let interval = isect_interval_interval interval1 interval2 in isect (interval :: set1') set2' (* * Mapping. *) let bound_of_left = function LeftInfinity -> Infinity | LeftOpen x -> Open x | LeftClosed x -> Closed x let bound_of_right = function RightInfinity -> Infinity | RightOpen x -> Open x | RightClosed x -> Closed x let rec iter f set = List.iter (fun (left, right) -> f (bound_of_left left) (bound_of_right right)) set let rec fold f x set = List.fold_left (fun x (left, right) -> f x (bound_of_left left) (bound_of_right right)) x set end (* * Countable set has predecessor and successor functions. *) module CountableIntervalSet (Element : CountableOrderedType) : IntervalSetSig with type elt = Element.t = struct (* * Simple implementation is just a sorted list of * disjoint closed intervals. *) type elt = Element.t type t = (elt * elt) list (* * Short comparisons. *) let min = Element.min let max = Element.max let pred = Element.pred let succ = Element.succ (* * Short comparisons. *) let compare = Element.compare let lt x y = compare x y < 0 let le x y = compare x y <= 0 let eq x y = compare x y = 0 (* * Empty set. *) let empty = [] let max_set = [min, max] let is_empty s = s = [] let is_total s = s = [min, max] let is_enum s zero = match s with [i1, _] -> i1 = zero | _ -> false let to_enum s = match s with [_, i2] -> succ i2 | _ -> raise (Invalid_argument "to_enum") (* * Set containing one point. *) let of_point x = [x, x] let is_singleton = function [x, y] when eq x y -> true | _ -> false let dest_singleton = function [x, y] when eq x y -> x | _ -> raise (Invalid_argument "Lm_interval_set.dest_singleton") (* * Set containing an interval. *) let left_bound = function Infinity -> min | Open x -> if eq x max then raise (Invalid_argument "Lm_interval_set.left_bound"); succ x | Closed x -> x let right_bound = function Infinity -> max | Open x -> if eq x min then raise (Invalid_argument "Lm_interval_set.right_bound"); pred x | Closed x -> x let of_interval x y = let x = left_bound x in let y = right_bound y in if y < x then [] else [x, y] (* * Compare limits. *) let compare_left_left x y = compare x y let compare_right_left x y = compare x y let compare_right_right x y = compare x y let ge_left_left x y = compare_left_left x y >= 0 let lt_left_left x y = compare_left_left x y < 0 let lt_right_right x y = compare_right_right x y < 0 let le_right_right x y = compare_right_right x y <= 0 let lt_right_left x y = compare_right_left x y < 0 (* * Min-max. *) let min_left_left x y = if lt_left_left x y then x else y let max_right_right x y = if lt_right_right x y then y else x let max_left_left x y = if lt_left_left x y then y else x let min_right_right x y = if lt_right_right x y then x else y (* * Interval operations. *) let lt_interval_interval (_, right) (left, _) = lt_right_left right left let subset_interval_interval (left1, right1) (left2, right2) = ge_left_left left1 left2 && le_right_right right1 right2 (* * Union assumes the two intervals overlap. *) let union_interval_interval (left1, right1) (left2, right2) = (min_left_left left1 left2, max_right_right right1 right2) (* * Isect assumes the two intervals overlap. *) let isect_interval_interval (left1, right1) (left2, right2) = (max_left_left left1 left2, min_right_right right1 right2) (* * Subtract assume sthe intervals overlap. *) let invert_left x = pred x let invert_right x = succ x let subtract_interval_interval (left1, right1) (left2, right2) = let compare_left = compare_left_left left1 left2 in let compare_right = compare_right_right right1 right2 in if compare_left < 0 then if compare_right < 0 then (* * left1 right1 * |--------| * |---------| * left2 right2 *) [left1, invert_left left2; invert_right right1, right2] else if compare_right = 0 then (* * left1 right1 * |--------| * |-----| * left2 right2 *) [left1, invert_left left2] else (* compare_right > 0 *) (* * left1 right1 * |------------| * |-----| * left2 right2 *) [left1, invert_left left2; invert_right right2, right1] else if compare_left = 0 then if compare_right < 0 then (* * left1 right1 * |--------| * |------------| * left2 right2 *) [invert_right right1, right2] else if compare_right = 0 then (* * left1 right1 * |--------| * |--------| * left2 right2 *) [] else (* compare_right > 0 *) (* * left1 right1 * |------------| * |--------| * left2 right2 *) [invert_right right2, right1] else if compare_right <= 0 then (* * left1 right1 * |--------| * |--------------| * left2 right2 *) [] else (* compare_right > 0 *) (* * left1 right1 * |-----------| * |-----------| * left2 right2 *) [invert_right right2, right1] (* * Join intervals that have common endpoints. *) let rec normalize = function (left, x) :: (y, right) :: set when eq (succ x) y -> normalize ((left, right) :: set) | h :: set -> h :: normalize set | [] -> [] (* * Test subset. *) let rec subset set1 set2 = match set1, set2 with [], _ -> true | _, [] -> false | interval1 :: set1', interval2 :: set2' -> if lt_interval_interval interval2 interval1 then subset set1 set2' else if subset_interval_interval interval1 interval2 then subset set1' set2 else false (* * Test equality. *) let equal s1 s2 = subset s1 s2 && subset s2 s1 let mem_point x set = subset [x, x] set (* * Set subtraction. *) let rec subtract set1 set2 = match set1, set2 with [], _ -> [] | _, [] -> set1 | interval1 :: set1', interval2 :: set2' -> if lt_interval_interval interval1 interval2 then interval1 :: subtract set1' set2 else if lt_interval_interval interval2 interval1 then subtract set1 set2' else subtract ((subtract_interval_interval interval1 interval2) @ set1') set2 let negate set = subtract [min, max] set let subtract_point set x = subtract set [x, x] (* * Set union. *) let rec union_aux set1 set2 = match set1, set2 with [], _ -> set2 | _, [] -> set1 | interval1 :: set1', interval2 :: set2' -> if lt_interval_interval interval1 interval2 then interval1 :: union_aux set1' set2 else if lt_interval_interval interval2 interval1 then interval2 :: union_aux set1 set2' else let interval = union_interval_interval interval1 interval2 in let _, right1 = interval1 in let _, right2 = interval2 in if lt_right_right right1 right2 then union_aux set1' (interval :: set2') else union_aux (interval :: set1') set2' let union s1 s2 = normalize (union_aux s1 s2) let add_point set x = union set (of_point x) (* * Intersection. *) let rec isect_aux set1 set2 = match set1, set2 with [], _ | _, [] -> [] | interval1 :: set1', interval2 :: set2' -> if lt_interval_interval interval1 interval2 then isect_aux set1' set2 else if lt_interval_interval interval2 interval1 then isect_aux set1 set2' else let interval = isect_interval_interval interval1 interval2 in let _, right1 = interval1 in let _, right2 = interval2 in if lt_right_right right1 right2 then interval :: isect_aux set1' set2 else interval :: isect_aux set1 set2' let isect s1 s2 = normalize (isect_aux s1 s2) (* * Mapping. *) let bound_of_left x = Closed x let bound_of_right x = Closed x let rec iter f set = List.iter (fun (left, right) -> f (bound_of_left left) (bound_of_right right)) set let rec fold f x set = List.fold_left (fun x (left, right) -> f x (bound_of_left left) (bound_of_right right)) x set end (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_parse_id.mli0000664000152300015230000000216110456222231021445 0ustar jyhjyh(* Parse a CVS ID string Copyright (C) 2002 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) val parse_id : string -> string * string * string * string * string * string val parse_id_revision : string -> string omake-0.9.8.5/src/libmojave-external/util/lm_terminfo.mli0000664000152300015230000000321110456222231021477 0ustar jyhjyh(* * Simple terminfo interface. * Copyright (C) 2002 Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. *) (* tgetstr id Lookup the terminal capability with indicated id. This assumes the terminfo to lookup is given in the TERM environment variable. This function returns None if the terminal capability is not defined. *) val tgetstr : string -> string option (* Various terminfo identifier names for use with tgetstr *) val enter_bold_mode : string val exit_attribute_mode : string (* xterm_escape_begin () Display XTerm title begin escape, if available. *) val xterm_escape_begin : unit -> string option (* xterm_escape_begin () Display XTerm title end escape, if available. *) val xterm_escape_end : unit -> string option omake-0.9.8.5/src/libmojave-external/util/lm_ncurses.mli0000664000152300015230000000451310456222231021344 0ustar jyhjyh(* * Simple NCurses interface. * Copyright (C) 2002 Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. *) type window type attr = A_NORMAL | A_STANDOUT | A_UNDERLINE | A_REVERSE | A_BLINK | A_DIM | A_BOLD | A_PROTECT | A_INVIS | A_ALTCHARSET | A_CHARTEXT val key_down : int val key_up : int val key_left : int val key_right : int val key_home : int val key_end : int val key_npage : int val key_ppage : int val key_enter : int val key_cancel : int val key_err : int val key_ctrla : int val key_ctrld : int val key_ctrle : int val key_ctrlj : int val key_ctrll : int val key_ctrlm : int val key_ctrlu : int val key_ctrlv : int val curses_enabled : bool val initscr : unit -> unit val endwin : unit -> unit val newwin : int -> int -> int -> int -> window val delwin : window -> unit val waddch : window -> char -> unit val waddstr : window -> string -> unit val wattron : window -> attr -> unit val wattroff : window -> attr -> unit val wgetch : window -> int val wgetstr : window -> string val wrefresh : window -> unit val wnoutrefresh : window -> unit val doupdate : unit -> unit val refreshscreen : unit -> unit val werase : window -> unit val wclrtoeol : window -> unit val wclrtobot : window -> unit val wmove : window -> int -> int -> unit val getyx : window -> int * int val getmaxyx : window -> int * int val scrollok : window -> bool -> unit val echook : bool -> unit val wscrl : window -> int -> unit omake-0.9.8.5/src/libmojave-external/util/lm_digraph.mli0000664000152300015230000000405210322060244021272 0ustar jyhjyh(* Directed imperative graph implementation * Geoffrey Irving * $Id: lm_digraph.mli 7878 2005-10-09 00:13:24Z jyh $ *) (* I will add features to this exactly when someone * needs to use them. *) (************************************** types *) type 'a t type 'a node (************************************** simple routines *) (* empty graph *) val create : unit -> 'a t (* graph modification *) val add_node : 'a t -> 'a -> 'a node val add_edge : 'a node -> 'a node -> unit val add_multi_edge : 'a node -> 'a node -> unit (* as above but can create multiple edges *) val delete_node : 'a node -> unit val delete_edge : 'a node -> 'a node -> unit (* merge two nodes into one and return it *) val coalesce_nodes : 'a node -> 'a node -> 'a -> 'a node (* node information *) val get : 'a node -> 'a val in_degree : 'a node -> int val out_degree : 'a node -> int val succ : 'a node -> 'a node list val pred : 'a node -> 'a node list val query : 'a node -> 'a node -> bool (************************************** structure independent operations *) (* extracting single nodes *) val choose : 'a t -> 'a node (* unspecified node, or Failure "choose" *) val find : ('a node -> bool) -> 'a t -> 'a node (* find node satisfying predicate, or Not_found *) (* iteration over all nodes (unspecified order) *) val list : 'a t -> 'a node list val iter : ('a node -> unit) -> 'a t -> unit val fold : ('a -> 'b node -> 'a) -> 'a -> 'b t -> 'a val filter : ('a node -> bool) -> 'a t -> 'a node list (************************************** depth first search and related functions *) (* is there a (directed) path from n to m? *) val is_path : 'a t -> 'a node -> 'a node -> bool (* ordered node lists - only nodes reachable from the start node included in the list *) val postorder_list : 'a t -> 'a node -> 'a node list val rev_postorder_list : 'a t -> 'a node -> 'a node list (* find all nodes not touched by the last search *) val untouched : 'a t -> 'a node list (* full graph ordered node lists (approximate) *) val full_rev_postorder_list: 'a t -> 'a node list omake-0.9.8.5/src/libmojave-external/util/lm_ctype.ml0000664000152300015230000000412310456222231020632 0ustar jyhjyh(* * Locale functions. Like in * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (************************************************************************ * Locale functions *) external set_locale: unit -> unit = "set_locale" external is_print: char -> bool = "is_print" external is_digit: char -> bool = "is_digit" external is_alnum: char -> bool = "is_alnum" external is_upper: char -> bool = "is_upper" external is_graph: char -> bool = "is_graph" let _ = set_locale () let is_capitalized s = is_upper s.[0] (* * Functions to quote and unquote strings. *) let rec is_simple l i s = if i = l then true else match String.unsafe_get s i with '"' | '\\' | '\r' | '\n' | '\t' | ' ' -> false | c -> is_print c && is_simple l (succ i) s let quote s = if s <> "" && is_simple (String.length s) 0 s then s else "\"" ^ String.escaped s ^ "\"" (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_hash.ml0000664000152300015230000027573510651225205020455 0ustar jyhjyh(* * A "hash-cons" utility. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} @email{nogin@metaprl.org} * @end[license] *) open Lm_printf open Lm_thread_core open Lm_hash_sig (************************************************************************ * A generic hash module to make comparisons faster. * This version uses a state for hash-consing. *) module MakeHash (Arg : HashArgSig) : HashSig with type elt = Arg.t = struct type elt = Arg.t (* %%MAGICBEGIN%% *) type t = int * elt (* %%MAGICEND%% *) let create x = Arg.hash x, x let get (_, x) = x let hash (i, _) = i let compare ((i1 : int), x1) ((i2 : int), x2) = if i1 = i2 then Arg.compare x1 x2 else if i1 < i2 then -1 else 1 end (************************************************************************ * Table-based hashing. *) module MakeHashCons (Arg : HashArgSig) : HashConsSig with type elt = Arg.t with type hash = MakeHash(Arg).t = struct (* %%MAGICBEGIN%% *) type elt = Arg.t type t = int module Key = MakeHash (Arg);; module KeyTable = Lm_map.LmMake (Key);; type hash = Key.t (* * We need both directions. *) type state = { mutable key_table : int KeyTable.t; mutable int_table : elt array } (* %%MAGICEND%% *) let create_state () = { key_table = KeyTable.empty; int_table = [||] } let length state = KeyTable.cardinal state.key_table let set state i x = let table = state.int_table in let len = Array.length table in if len = 0 then let table = Array.create 32 x in state.int_table <- table else if i = len then let table2 = Array.create (len * 2) x in Array.blit table 0 table2 0 len; state.int_table <- table2 else table.(i) <- x let icreate state item = try KeyTable.find state.key_table item with Not_found -> let index = KeyTable.cardinal state.key_table in state.key_table <- KeyTable.add state.key_table item index; set state index (Key.get item); index let create state x = icreate state (Key.create x) let get state index = state.int_table.(index) let hash index = index let compare index1 index2 = index1 - index2 let map_array f state = Array.mapi f (Array.sub state.int_table 0 (KeyTable.cardinal state.key_table)) let fold f x state = let len = KeyTable.cardinal state.key_table in let rec fold i x = if i = len then x else fold (succ i) (f x i) in fold 0 x end (************************************************************************ * Marshalable version. * * This takes a slightly different approach, wrapping the value in * a triple of a hash code and a dummy ref cell. During marshaling, * the cell will point somewhere else, so we know that the value * must be rehashed. *) (* %%MAGICBEGIN%% *) type 'a hash_marshal_item = { mutable item_ref : unit ref; mutable item_val : 'a; item_hash : int } (* %%MAGICEND%% *) (* * The reference in the current process. *) let current_ref = ref () (* * Statistics. *) type hash_stat = { hash_debug : string; mutable hash_reintern : int; mutable hash_compare : int; mutable hash_collisions : int } let hash_stats = ref [] let pp_print_stat buf stat = let { hash_debug = debug; hash_reintern = reintern; hash_compare = compare; hash_collisions = collisions } = stat in fprintf buf "@[%s: reintern = %d, compare = %d, collisions = %d@]@\n" (**) debug reintern compare collisions let pp_print_hash_stats buf = List.iter (pp_print_stat buf) !hash_stats (* * let () = * at_exit (fun () -> pp_print_hash_stats stderr) *) (* * We need to work nicely with threads. * * Note that the reintern function may be recursive, so we need to account for cases, * where the current thread is already holding the lock. * Almost every accesses come from the main thread with very little if any contention from other * threads. This makes it more effiecient to use a single global lock (as opposed to having a * separate lock for each instance of the functor), so that mutually recursive reintern calls only * have to lock one lock, not all of them. * * Finally, we do not care about race conditions for the statistics *) module Synchronize : sig val synchronize : ('a -> 'b) -> 'a -> 'b end = struct let lock_mutex = MutexCore.create "Lm_hash.Synchronize" let lock_id = ref None let unsynchronize () = lock_id := None; MutexCore.unlock lock_mutex let synchronize f x = let id = ThreadCore.id (ThreadCore.self ()) in match !lock_id with Some id' when id = id' -> (* * We are already holding the lock. This means: * - we do not have to do anything special * - reading the shared lock_id ref could not have created a race condition *) f x | _ -> MutexCore.lock lock_mutex; lock_id := Some id; try let res = f x in unsynchronize(); res with exn -> unsynchronize(); raise exn end let synchronize = if ThreadCore.enabled then Synchronize.synchronize else (fun f -> f) (* * Make a hash item. *) module MakeHashMarshal (Arg : HashMarshalArgSig) = struct type elt = Arg.t type t = elt hash_marshal_item (* Keep a hash-cons table based on a weak comparison *) module WeakCompare = struct type t = elt hash_marshal_item let compare item1 item2 = let hash1 = item1.item_hash in let hash2 = item2.item_hash in if hash1 < hash2 then -1 else if hash1 > hash2 then 1 else Arg.compare item1.item_val item2.item_val end;; module Table = Lm_map.LmMake (WeakCompare);; let table = ref Table.empty (* * Keep track of collisions for debugging. *) let stats = { hash_debug = Arg.debug; hash_reintern = 0; hash_compare = 0; hash_collisions = 0 } let () = hash_stats := stats :: !hash_stats (* * When creating an item, look it up in the table. *) let create_core elt = let item = { item_ref = current_ref; item_val = elt; item_hash = Arg.hash elt } in try Table.find !table item with Not_found -> table := Table.add !table item item; item let create = synchronize create_core let intern elt = let item = { item_ref = current_ref; item_val = elt; item_hash = Arg.hash elt } in Table.find !table item (* * Reintern. This will take an item that may-or-may-not be hashed * and produce a new one that is hashed. *) let reintern_core item1 = stats.hash_reintern <- succ stats.hash_reintern; try let item2 = Table.find !table item1 in if item2 != item1 then begin item1.item_val <- item2.item_val; item1.item_ref <- current_ref end; item2 with Not_found -> item1.item_val <- Arg.reintern item1.item_val; item1.item_ref <- current_ref; table := Table.add !table item1 item1; item1 let reintern = synchronize reintern_core (* * Access to the element. *) let get item = if item.item_ref == current_ref then item.item_val else (reintern item).item_val let hash item = item.item_hash (* * String pointer-based comparison. *) let compare item1 item2 = stats.hash_compare <- succ stats.hash_compare; let hash1 = item1.item_hash in let hash2 = item2.item_hash in if hash1 < hash2 then -1 else if hash1 > hash2 then 1 else if item1.item_val == item2.item_val then 0 else let elt1 = get item1 in let elt2 = get item2 in if elt1 == elt2 then 0 else begin stats.hash_collisions <- succ stats.hash_collisions; let cmp = Arg.compare elt1 elt2 in if cmp = 0 then invalid_arg "Lm_hash is broken@."; cmp end let equal item1 item2 = (item1 == item2) || (item1.item_hash = item2.item_hash && get item1 == get item2) end (* * A version with two equalities. * The fine equality is used for cons-hashing, but the coarse * version is used for external comparisons. The fine equality * must be a refinement of the coarse equality. *) (* %%MAGICBEGIN%% *) type 'a hash_marshal_eq_item = ('a * 'a hash_marshal_item) hash_marshal_item (* %%MAGICEND%% *) module MakeHashMarshalEq (Arg : HashMarshalEqArgSig) = struct type elt = Arg.t type t = elt hash_marshal_eq_item module CoarseArg = struct type t = Arg.t let debug = Arg.debug ^ ":coarse" let hash = Arg.coarse_hash let compare = Arg.coarse_compare let reintern = Arg.reintern end;; module Coarse = MakeHashMarshal (CoarseArg);; (* * We fold the Coarse item into the fine * item only so we don't have to create three * modules (the final one being a pair of fine * and coarse). *) module FineArg = struct type t = Arg.t * Coarse.t let debug = Arg.debug ^ ":fine" (* * We're assuming that the fine hash is a * refinement of the coarse one. *) let hash (fine, _) = Arg.fine_hash fine let compare (fine1, _) (fine2, _) = Arg.fine_compare fine1 fine2 let reintern ((fine, coarse) as item) = let fine' = Arg.reintern fine in let coarse' = Coarse.reintern coarse in if fine' == fine && coarse' == coarse then item else fine', coarse' end;; module Fine = MakeHashMarshal (FineArg);; let create x = Fine.create (x, Coarse.create x) let intern x = Fine.intern (x, Coarse.intern x) let get info = fst (Fine.get info) (* * The default functions are the coarse versions. *) let get_coarse info = snd (Fine.get info) let hash info = Coarse.hash (get_coarse info) let compare item1 item2 = Coarse.compare (get_coarse item1) (get_coarse item2) let equal item1 item2 = Coarse.equal (get_coarse item1) (get_coarse item2) (* * Also export the fine versions. *) let fine_hash = Fine.hash let fine_compare = Fine.compare let fine_equal = Fine.equal let reintern = Fine.reintern end (************************************************************************ * Better-than usual hash functions. * * BUG: JYH: this hash is entirely ad-hoc. The idea here is the following. * If we were able, we would use the message as an index into a random function. * We can't do that, so jump around in a smaller table. * * We construct the hash on-the-fly, using a table of random numbers. *) (* %%MAGICBEGIN%% *) let hash_length = 6229 (* Must be a prime *) let digest_length = 16 let hash_data = [|0x04a018c6; 0x5ba7b0f2; 0x04dcf08b; 0x1e5a22cc; 0x2523b9ea; 0x4b92b691; 0x0bcaf015; 0x0a5d5109; 0x64d3be71; 0x5fbc0769; 0x3ac35af5; 0x77136b9a; 0x64e16501; 0x24d1efb9; 0x3835ad79; 0x103ac74f; 0x217edbb5; 0x33afeced; 0x1d9341e3; 0x116c3c4e; 0x01d3893a; 0x2657d18f; 0x324ea1ad; 0x20d56ec8; 0x2361f48d; 0x50b71a60; 0x1ced96bf; 0x2c06ba13; 0x6a7d99e2; 0x213818ce; 0x182ab58e; 0x05964edf; 0x049425a9; 0x2fa55545; 0x79c6238c; 0x33ee6060; 0x188796a1; 0x27650997; 0x48dbd56a; 0x51a7dedc; 0x69b54b8e; 0x06135229; 0x1db1f87f; 0x0c72761c; 0x4974fbd3; 0x71657506; 0x2f8b6b68; 0x247cabda; 0x71d47c35; 0x491e0036; 0x7da4c370; 0x5682e7c0; 0x5cf7c110; 0x0526f878; 0x262025fa; 0x41a19673; 0x330e9047; 0x11980c36; 0x6ce02397; 0x0ceba603; 0x43a00345; 0x063c1716; 0x538cb4aa; 0x2f60b5d7; 0x34943a0e; 0x56b7664c; 0x098cfa23; 0x1a64380e; 0x0ad1f7f3; 0x11a53f1f; 0x5b00d01e; 0x24bbd12d; 0x2401aafe; 0x1149c2d3; 0x07021acf; 0x1f4ed7d2; 0x3d23c6bc; 0x38dfe52c; 0x3a8e4667; 0x6050bb6d; 0x691f94eb; 0x537e771e; 0x2a9e04c1; 0x37050e1c; 0x73d70b51; 0x2c67f1ff; 0x6709d487; 0x7266f595; 0x36fd1713; 0x17e3d678; 0x1751280b; 0x2003a7dd; 0x05bd861d; 0x6b538252; 0x4465c159; 0x3298cb7d; 0x1489fbe8; 0x0833c615; 0x3aea7136; 0x2103f36d; 0x518acb8a; 0x0c4a0c83; 0x5418f7ed; 0x4ff40db4; 0x6db84908; 0x2dd59f9d; 0x531a8372; 0x61d38c25; 0x3554dc6c; 0x073bb1c8; 0x10f82b8b; 0x574175dc; 0x13966434; 0x7dfa6cd3; 0x69ed4f17; 0x62d4b072; 0x1890c649; 0x24052c29; 0x5b8dc934; 0x39833efb; 0x79f5a355; 0x7d026da5; 0x1b1d310e; 0x211ecd0d; 0x2fdd9c20; 0x6ef9ebc6; 0x36dd158a; 0x10ffca06; 0x52b38469; 0x74947de8; 0x6b3b1cbe; 0x680c4e82; 0x2657c2e2; 0x781e0f72; 0x145d923f; 0x6f321a9e; 0x1f4402f5; 0x17392d1c; 0x352a5c33; 0x63840b4e; 0x4fd97839; 0x7a389dd1; 0x3343eb86; 0x04cc72c3; 0x7cbba01e; 0x64cee4ad; 0x5c1f9282; 0x2de8158b; 0x2941291d; 0x30a3c118; 0x2070d8e8; 0x08503556; 0x52694d55; 0x2de9ec28; 0x16667c6f; 0x2431a2c7; 0x71f2122e; 0x5b011553; 0x308d4cd1; 0x7db98b06; 0x5d145510; 0x06040108; 0x5e078a62; 0x0d87bf4e; 0x4c20d8c2; 0x3171964d; 0x2a550059; 0x6a8b2d96; 0x621079cb; 0x5f400e32; 0x5c78b895; 0x7863cc1f; 0x1857902c; 0x5ab77c01; 0x3922ad96; 0x3ec74313; 0x090ff562; 0x7d8dc2d9; 0x77ccc196; 0x274aa8ec; 0x20e7d058; 0x5d451da4; 0x38411944; 0x16c92ac5; 0x17c532ca; 0x387b6c9e; 0x04599060; 0x42d41b08; 0x50b480fe; 0x60b6a668; 0x59bf878b; 0x40ecd7ff; 0x3c3a0e5f; 0x2226ba1f; 0x00b480d2; 0x27d243ce; 0x1b4fd4ac; 0x5452c80a; 0x6a055d72; 0x0e4f2f5f; 0x73561052; 0x1e34c368; 0x5c3f2470; 0x0ada6aca; 0x28f33428; 0x54d04532; 0x71a49cc1; 0x4488adb3; 0x620ea825; 0x6e3c834a; 0x3580610e; 0x1acc45ab; 0x7dcf080e; 0x396d3242; 0x2b6c8a54; 0x438e8578; 0x506170bc; 0x02021c1c; 0x41d6f98c; 0x5d198360; 0x449a1a80; 0x47d51424; 0x046a749f; 0x68caf27a; 0x15345f3a; 0x1edc6ace; 0x6b708fe1; 0x013dfa00; 0x7675676d; 0x4efa193c; 0x7f29b2b7; 0x55c10973; 0x524894bb; 0x27b5ef49; 0x399ee9c8; 0x7570a9e8; 0x5ad98886; 0x68c17a3a; 0x70b75e37; 0x102fdd4f; 0x678c6368; 0x6ab7b144; 0x781fe959; 0x45ba0108; 0x77746bf9; 0x0bb0a4a1; 0x63e3e01e; 0x08af1ae8; 0x039963f7; 0x229bc81d; 0x4c123bf6; 0x2bd90b99; 0x0f813575; 0x29c6378f; 0x084561f2; 0x222f7d94; 0x4a161957; 0x3fe15590; 0x616a3e1f; 0x6db1f066; 0x11b78394; 0x2791bafa; 0x0a634f2b; 0x7434ecb4; 0x52b86ca4; 0x4c236a71; 0x7cb4bf8a; 0x1a449dcc; 0x4ccc5386; 0x45ff9435; 0x0f9c5572; 0x6c0a91bb; 0x02182c23; 0x3e1fb322; 0x5bb9834e; 0x076ab97e; 0x3901cfcf; 0x398f5f59; 0x1f5e398e; 0x3423ba34; 0x02531acd; 0x54aba737; 0x74826232; 0x195f5564; 0x6fb5bd70; 0x217a2270; 0x4453067b; 0x3867017e; 0x2f5ea4ad; 0x5921c43f; 0x3699b3b4; 0x45314959; 0x121b34ca; 0x698f72f8; 0x79b7598e; 0x597b91b4; 0x478c0c50; 0x298810dd; 0x7a55c741; 0x15d39d50; 0x79b6686a; 0x6fe06dd6; 0x216d27fa; 0x5d71cdad; 0x02e1e6f7; 0x6055f976; 0x0477b854; 0x08cb4e67; 0x0c912f95; 0x7d015ba9; 0x17ac4ea1; 0x01f0a52e; 0x0d87ec13; 0x5049eba7; 0x61605b56; 0x4385f27d; 0x00e75dd4; 0x684e563d; 0x50fa5caf; 0x244df9cb; 0x421e740d; 0x54a3d875; 0x5a2c5f9c; 0x5b666fa8; 0x0e0b3042; 0x4c92c3c9; 0x494810c7; 0x6d48d5cc; 0x2b60ad41; 0x3a861587; 0x5236f192; 0x68a7ad18; 0x570462b7; 0x597c7693; 0x5dc3a7c3; 0x6bd51a17; 0x076979a9; 0x591bdb6b; 0x6f8ef6d3; 0x6c6fc11d; 0x43c409b6; 0x0e563262; 0x00c86b80; 0x19d39020; 0x2f561416; 0x7c7fb3e0; 0x13fe5c59; 0x7ae78655; 0x6bc7d532; 0x487bf67d; 0x0f7bb1da; 0x43cd6ef9; 0x203fdffa; 0x1ff4cd6e; 0x3d72805a; 0x1cabb100; 0x57978e79; 0x2d6697a4; 0x39207ced; 0x5b29cd55; 0x6fad54be; 0x35471293; 0x45d2fe43; 0x222faf62; 0x6041ff94; 0x4fe452e1; 0x09fb3051; 0x5b3f1735; 0x19f28b3a; 0x4969948b; 0x2bb5f504; 0x6e771990; 0x1a26d5b2; 0x01782693; 0x52c1cf7a; 0x5c9e1e0b; 0x3f46071e; 0x1b10078b; 0x321fe12e; 0x0a8f1aad; 0x50c5b3b9; 0x244a53a6; 0x26e911e7; 0x5409ca95; 0x0e562f01; 0x5b9dbb5b; 0x5103de78; 0x6c9532b9; 0x7e109d5c; 0x06df1ba6; 0x54809557; 0x0832d01a; 0x2e9d33f5; 0x441ebc69; 0x5f1a46fa; 0x4769ef99; 0x53a10634; 0x564f986f; 0x2dbe50d2; 0x0e3b263e; 0x5e4dd5f9; 0x6c6ce793; 0x3b7e7b2d; 0x6ace470e; 0x0bc364fb; 0x46567d32; 0x09d6c649; 0x713b537f; 0x115cd25d; 0x311cbccb; 0x23906d48; 0x0ee8ebe6; 0x57f8f27c; 0x4effc46e; 0x62b69f26; 0x021cfce7; 0x2f39c1dd; 0x11f3dff9; 0x31f19050; 0x3161d7be; 0x653ccb8e; 0x43ab514a; 0x58399317; 0x40b66d3a; 0x32184fd8; 0x7be92684; 0x5e144054; 0x6a020658; 0x5c6ea9e3; 0x1a0d2a42; 0x6e07b3ab; 0x192dbb0e; 0x5879ce29; 0x03c24bc9; 0x487cd04d; 0x082e47a3; 0x6256335a; 0x4628daea; 0x50b6cd01; 0x2486fc79; 0x16f9eeca; 0x216fda6b; 0x765fa687; 0x60463443; 0x629d2b6e; 0x0482ec3c; 0x5a602c5f; 0x4da8f9a4; 0x16daf805; 0x33445db9; 0x5c2c4b6c; 0x1e6ad5c0; 0x760fc9d0; 0x75054f5f; 0x7e146d0a; 0x2249fc81; 0x6b58c2b4; 0x754da041; 0x5edd1713; 0x0f53eb43; 0x0f847468; 0x45b60961; 0x35066e17; 0x2d463f9b; 0x5bff8738; 0x47fece41; 0x6b0df911; 0x2da46db3; 0x7d4df84e; 0x62524b98; 0x784689ba; 0x30d24182; 0x79f07925; 0x1a60106c; 0x358d2986; 0x590bcace; 0x2319ec0f; 0x3c203ea9; 0x17b863ad; 0x3ff12821; 0x72ab733a; 0x0a239828; 0x37f310ca; 0x1bd07b8d; 0x2c053d5d; 0x274de61c; 0x67fceabc; 0x6d64e17c; 0x696c45e8; 0x65a36849; 0x0894492c; 0x25dcbccc; 0x0c1d6062; 0x45ab99bc; 0x3abe382f; 0x123ecab8; 0x0d637cb3; 0x608dee33; 0x12519e90; 0x180a4c2c; 0x1412023f; 0x63ac36cb; 0x51c60552; 0x2ac4e2fe; 0x5ebcae69; 0x25e393f3; 0x5741f8fc; 0x672b8977; 0x5cad6441; 0x61abf1a7; 0x0303ade0; 0x66fdb790; 0x54403634; 0x386440c9; 0x5377f8ea; 0x2e811481; 0x41f9662c; 0x5b570ca7; 0x3fac5ce5; 0x7777b0a4; 0x7477d864; 0x09b0ce27; 0x65f58514; 0x5e9d1753; 0x5df4b2c7; 0x1537c09a; 0x6986f1bf; 0x72bc0272; 0x2a99a8fb; 0x42a78e20; 0x686b1a86; 0x4de3eaee; 0x1c64cfdc; 0x78255672; 0x53fbfa39; 0x6afffcdd; 0x5307a4de; 0x5b4bfe26; 0x60cb0c0b; 0x5d257dc3; 0x02ac3709; 0x1b5cd6b9; 0x6ee55460; 0x45a09f22; 0x7d08b346; 0x782699e8; 0x1ad44439; 0x152bcaed; 0x4337fcc7; 0x05d7932e; 0x71010380; 0x15b10b1b; 0x06603391; 0x3502efb4; 0x2581aa16; 0x5a3a4867; 0x7af79303; 0x63e7f7aa; 0x1bcf76f1; 0x01217932; 0x0b584102; 0x57d85778; 0x7b04b920; 0x5e7acac9; 0x69d85af9; 0x1fd3c6e7; 0x24c391ca; 0x7874e456; 0x625de14d; 0x184a85a3; 0x12d8b176; 0x629dfb70; 0x0f1eece1; 0x647aa66b; 0x0c8ef991; 0x05d4698f; 0x39bb53aa; 0x442a76b8; 0x6102de4f; 0x2d6dc958; 0x02b9e81e; 0x22def394; 0x1c63ef6f; 0x35aafbbc; 0x65a9136c; 0x4b3a6456; 0x49931bd3; 0x1891ccd7; 0x052292a4; 0x5d74f10f; 0x3f0acada; 0x410ecca6; 0x36a5b66d; 0x67e227f2; 0x5f914b7f; 0x25f7754e; 0x4fb7b36c; 0x074df71e; 0x0ff9b7d1; 0x2c5b5730; 0x19a2d443; 0x3f0cffd8; 0x25bf69d3; 0x08607eb0; 0x5c3591bf; 0x7e1c83dd; 0x3596611d; 0x344b7b7f; 0x51318748; 0x1b6bc7de; 0x3950cb93; 0x3150c3c9; 0x6c24ab7f; 0x4a835748; 0x488ff676; 0x344c9a37; 0x667b4920; 0x04705d16; 0x4aa3a93c; 0x45c12f2b; 0x0e5748f4; 0x71e3436b; 0x02d937ec; 0x77254cff; 0x65348109; 0x137ee1fc; 0x563f4c81; 0x591d8013; 0x4cb5c38f; 0x69dcae73; 0x2eea4c7f; 0x7574449e; 0x430921b2; 0x64e96ada; 0x4bfeaea8; 0x1ce3ccd1; 0x7f322d02; 0x7b3f4495; 0x56dd60f2; 0x3fe87a94; 0x460ef2a1; 0x74b24aea; 0x43910a0a; 0x2f327583; 0x521d6b68; 0x03e9a453; 0x5be1ed4f; 0x0ee37cf9; 0x2b328f8d; 0x7a30339a; 0x1085ee1a; 0x5d8f806d; 0x77528625; 0x6336b586; 0x40a45acd; 0x654ed038; 0x04f3d558; 0x0a9d1481; 0x69651f6d; 0x107b5ac2; 0x6d94fddb; 0x604126bd; 0x7c5ce529; 0x572cc18a; 0x12202a13; 0x5f4fc004; 0x55feb730; 0x5123d263; 0x7a3944b9; 0x055edcbe; 0x214e18b9; 0x5e4f8962; 0x3783d77f; 0x3ac9698e; 0x48672e1a; 0x7c67071c; 0x1b5e77e9; 0x48e40749; 0x2c30b199; 0x34740baa; 0x0ace6efb; 0x69ae7350; 0x02431088; 0x453a1936; 0x49be39e8; 0x1fd1a764; 0x2beb8364; 0x511a0ba6; 0x6c25e43e; 0x7a228cdc; 0x7efc9048; 0x6d5c3147; 0x325d87f6; 0x08ac5f8d; 0x1d1f46a2; 0x5580dbed; 0x6da9f98a; 0x12d31e07; 0x09bcc9c9; 0x16f4522d; 0x724f739a; 0x0c4ea399; 0x3a47cdc4; 0x431165ed; 0x45c5f59b; 0x64b7f58d; 0x056ff8a0; 0x1f2b9207; 0x4754c098; 0x1b29d81b; 0x6a3a2189; 0x5d6d59cd; 0x41eadbb2; 0x6955a4ee; 0x5aee1cd8; 0x702a6ac9; 0x39c38ae2; 0x68236e2e; 0x77fe3bb4; 0x5574f7f6; 0x7929bb55; 0x4c95d4bf; 0x540c36ad; 0x787cbbd2; 0x4cd8307d; 0x2f57f3f8; 0x554bad0e; 0x2744a1a2; 0x0d54c124; 0x6189b2c8; 0x714f6ea7; 0x6db51214; 0x0b9f8122; 0x5cd106bd; 0x5b2e9625; 0x0d981aa2; 0x0e6b2084; 0x4f935c8c; 0x0f4a3fc4; 0x6d7e8310; 0x3c28c81f; 0x419352ee; 0x5c6e8632; 0x55a7a369; 0x5d608669; 0x16930920; 0x383c0c9c; 0x6d78c524; 0x41b4a572; 0x05206a3a; 0x091f55c4; 0x781e8cc5; 0x73849939; 0x3069c3d6; 0x102105af; 0x4418aa9f; 0x106077c6; 0x74e3e663; 0x0bd966f0; 0x5a4e92c6; 0x11949c7f; 0x7094747e; 0x64567f58; 0x03f166fa; 0x5c1ed154; 0x6e4d51e2; 0x0f68c753; 0x6b8bce2a; 0x1f6bf7e0; 0x5da00969; 0x688983d1; 0x0f9411ea; 0x42c30c29; 0x5e6d5c3f; 0x72ee17f1; 0x5ab9c1d8; 0x7b804d18; 0x67950752; 0x567ef044; 0x2c8f32f0; 0x398aa8d3; 0x52f5682f; 0x4fd896fc; 0x2c95de24; 0x3d8b49c8; 0x0f3fb6fb; 0x3e4bd651; 0x3e1fbc15; 0x130c58e2; 0x5eb33a7b; 0x32e8c62c; 0x2db4eaed; 0x2add624b; 0x48001129; 0x0bfee6fe; 0x52795045; 0x3decda0b; 0x242ca087; 0x768b17ba; 0x27b977b4; 0x695a9796; 0x37c0d156; 0x1eae9da6; 0x20634d37; 0x591d8024; 0x3d2ea45a; 0x33a3c15a; 0x10be15f0; 0x4a251182; 0x570af148; 0x174b1e42; 0x17e0b90a; 0x033ce1b3; 0x6c6d27e3; 0x1544431e; 0x3a96b38f; 0x17937f7d; 0x2dfbb773; 0x400b4c81; 0x2ee1d467; 0x3b23808b; 0x3878c6ee; 0x2ccc3cc8; 0x43d8e836; 0x2d99a2f4; 0x48aa1ad3; 0x415cfe75; 0x0186dcc1; 0x5c5c3971; 0x28844381; 0x44879b39; 0x600df749; 0x01cbaf3b; 0x0501e48e; 0x4724e647; 0x1b94525c; 0x6cc4f0ad; 0x19ab8bce; 0x034a8a8f; 0x0d0cf0e6; 0x48d34837; 0x1bfe75cd; 0x76e6e69c; 0x28b9bf16; 0x4ccf05bb; 0x460b20e3; 0x1aab81e6; 0x22871221; 0x1bceba58; 0x3162c14f; 0x7a77fc7f; 0x6a96c008; 0x24bd9b86; 0x1eceffae; 0x71d3248a; 0x7dd7496e; 0x6079b5fb; 0x46aa4663; 0x3d94dc97; 0x2b988744; 0x13894513; 0x54ceade5; 0x51ac6700; 0x3d106301; 0x5f6ca51b; 0x1ecea974; 0x52398eb0; 0x052fd255; 0x416059c2; 0x496772e3; 0x4ba5eda5; 0x56a3c941; 0x67c7a5d8; 0x7198fda9; 0x55cdeac1; 0x28da3caf; 0x253dbf27; 0x7e7917b2; 0x61a86d89; 0x50402de9; 0x0fb8f61b; 0x2014709e; 0x2ef5cbe6; 0x445ad230; 0x23e915db; 0x266cff97; 0x69617cff; 0x00bbc4cc; 0x3abe6841; 0x4b6f7c97; 0x1763cc8a; 0x50cade99; 0x1e161de1; 0x7ccfcd96; 0x6606f768; 0x70484358; 0x759d61eb; 0x0cdfbbbc; 0x44e51f9b; 0x555b6bbe; 0x31809e0d; 0x7611c864; 0x0d2d06e8; 0x79daa60a; 0x075cd420; 0x52976c7c; 0x60fd8034; 0x79576a57; 0x56643e64; 0x10fd1ba7; 0x34a29206; 0x1280e3be; 0x2b102cac; 0x1de9c81a; 0x624ebbac; 0x015cb1bd; 0x2bf6865d; 0x49e6b9d9; 0x1dc0fa2d; 0x282867a4; 0x23880f57; 0x49480b6c; 0x1453c615; 0x254f2d3d; 0x3fade2c4; 0x1d484333; 0x3b7ad09d; 0x241e0c3f; 0x3f6bce27; 0x3a266bd8; 0x5c16a2c8; 0x2efc228a; 0x0171f038; 0x2df99611; 0x2d9f7cc3; 0x6607604d; 0x2a339b56; 0x56451520; 0x064c5792; 0x005f8733; 0x014186ba; 0x2c453eec; 0x5b4c16bc; 0x166a91d9; 0x3d6a1867; 0x4a9f32a0; 0x04992e7f; 0x5f25c7d1; 0x059c19da; 0x6050625c; 0x528f5dc5; 0x5aa7dae0; 0x09c76d57; 0x1719c27b; 0x5fb89917; 0x7d7e1a63; 0x7132108b; 0x1b07e3dc; 0x3be9c866; 0x677d3f98; 0x31dc4c07; 0x4681afde; 0x7f8593fc; 0x08a73130; 0x1510c9b1; 0x00fd5082; 0x7b19afa1; 0x3d48c17f; 0x5d809454; 0x60607809; 0x2f32d01a; 0x5d2d79d9; 0x7358f349; 0x328de67b; 0x2783c512; 0x219128b8; 0x5d6895ab; 0x6100781e; 0x1401caf2; 0x57d88484; 0x77ec205f; 0x09615075; 0x6fcede45; 0x6ccc9133; 0x58b1da70; 0x0c62d9f3; 0x2fb2802a; 0x50b2767e; 0x14070e83; 0x366ff9a2; 0x08e33e81; 0x5a7501f2; 0x6297cb91; 0x2b736f71; 0x4d2a6dbc; 0x11cbe4ac; 0x6796c025; 0x6696e255; 0x1a7db249; 0x05b7a730; 0x1a564e20; 0x51396ea3; 0x476de965; 0x6ef27926; 0x72036c29; 0x14af38ef; 0x42a0bec5; 0x02b9f243; 0x0914df62; 0x0a5f3eb8; 0x4c295107; 0x66bf8d61; 0x7bd10745; 0x46996fb2; 0x09f0744d; 0x52b6d2c4; 0x047baaaa; 0x7793d0f2; 0x7bce7e8c; 0x2ceb5f22; 0x69a768bf; 0x041b2743; 0x12b1134f; 0x1b614c4f; 0x50d0ad7f; 0x61aaf852; 0x31b19398; 0x3cd568f5; 0x7aff4e9a; 0x01be839b; 0x15e70b51; 0x4ddc10cc; 0x41ac7cc6; 0x32278de9; 0x7c297ffa; 0x538b5777; 0x2f654e22; 0x206fc727; 0x36b61615; 0x3083f758; 0x0a5ff376; 0x50e83ac5; 0x298f5119; 0x1be5047d; 0x4cacacba; 0x15729437; 0x30bffe29; 0x796454bc; 0x464164c5; 0x6e1b52a4; 0x34a197b1; 0x2f6de3e4; 0x33ec8cf0; 0x7689183a; 0x25494ffd; 0x3c2e08b1; 0x52aa9539; 0x202225e6; 0x48c9c982; 0x104b069a; 0x5bd3d6eb; 0x2a31eb11; 0x3f0ebf0f; 0x5db7a5b9; 0x032e26b9; 0x7ce94a74; 0x1de43949; 0x60283bca; 0x446326a0; 0x182fec6c; 0x5d482618; 0x24a8136b; 0x16b82f35; 0x35dd65bf; 0x3cdb68d0; 0x6fa2feff; 0x64f25d36; 0x714f7b92; 0x6474293c; 0x438b3310; 0x38f1d054; 0x1c7cbe18; 0x6557eb33; 0x44f6f003; 0x001da352; 0x4d42f5b1; 0x26a86a29; 0x587aa516; 0x21d2d6cc; 0x5ddedcd4; 0x04b27318; 0x3f1ddec5; 0x0ba998cc; 0x6fa3526b; 0x317ca40b; 0x64046062; 0x2b988fe4; 0x4d0ca215; 0x49293924; 0x4aec68d1; 0x46987709; 0x224d68cd; 0x01da0c8c; 0x640ab4ad; 0x2a0fde34; 0x258ff50d; 0x66cdf960; 0x0115127f; 0x31337e3c; 0x1f0c97ed; 0x431c7f85; 0x7420e6be; 0x1503d04f; 0x266164cb; 0x34c41bca; 0x76ee24e8; 0x053c829a; 0x6919bd42; 0x470eecb2; 0x19e34d6b; 0x1c3410ff; 0x78f1ce94; 0x002fa2d9; 0x148043e1; 0x1bd1b14e; 0x7a730d54; 0x2268f97f; 0x265c3cd4; 0x035ab6ef; 0x5636dde3; 0x4b8ce2e7; 0x089993dd; 0x07d33f78; 0x47a06853; 0x08818463; 0x4d4d5a43; 0x3d984089; 0x34048502; 0x710b3345; 0x7dd0b5cf; 0x4c1e989b; 0x223669f4; 0x191f26ac; 0x06d7c58d; 0x4d3804c7; 0x58e5fad3; 0x12acb23c; 0x3fb31889; 0x53530ba7; 0x187f836e; 0x565d5fd1; 0x75916085; 0x78cfee7d; 0x50d3414a; 0x4b08da32; 0x62b6b757; 0x22403cce; 0x31555807; 0x64b730e0; 0x2782f7ac; 0x68c2d1f0; 0x03d8b1fb; 0x71ba690c; 0x13358eba; 0x289a8d55; 0x44451f4b; 0x4aaa7397; 0x6e8df8dc; 0x5cc51ef8; 0x62ba14a0; 0x55247932; 0x1cb2c617; 0x38c4279a; 0x3e3fdb1d; 0x7923d01a; 0x48b5a0da; 0x2ded66c5; 0x55d8bde2; 0x30e0f1b5; 0x0ef8ee5b; 0x26499f32; 0x59e46eea; 0x203238ae; 0x317d94be; 0x22b66c78; 0x3d77c3e2; 0x3dbb7d80; 0x37d4cc3c; 0x3513c89f; 0x652c1aa5; 0x3e45f397; 0x18952cb9; 0x715d715b; 0x5818afe4; 0x1b2c8936; 0x721b42a9; 0x3806eab6; 0x373fb803; 0x65cf04e6; 0x60158639; 0x229fa6c7; 0x4ba93161; 0x45883ed7; 0x6acc130b; 0x292e1ba1; 0x7e32eb03; 0x28d74880; 0x6918953e; 0x02e9e610; 0x7ecf2cd2; 0x055965b5; 0x1be309f7; 0x1a349a09; 0x50004d81; 0x3e142878; 0x4c8fc307; 0x5b624ed3; 0x6a206d54; 0x511daea3; 0x28e07141; 0x76effaab; 0x3fb9e092; 0x56599aaf; 0x47c1a9f7; 0x43ba2dd6; 0x76f6b718; 0x057227ba; 0x1d102f2d; 0x78950bf6; 0x354ed3ac; 0x6bb6949b; 0x1ac6de9c; 0x70fd18b2; 0x24f64dab; 0x7abbe85b; 0x4b59634a; 0x457f3101; 0x69d0c293; 0x5f4b3b3a; 0x64b41643; 0x091603bc; 0x53aca769; 0x06540870; 0x32206888; 0x0c8ddb7c; 0x65a2fe9e; 0x6ae56c5d; 0x35bc174a; 0x0e19faaa; 0x6d968f8a; 0x0c255585; 0x70729843; 0x6eb4bfbc; 0x096ccfec; 0x4283f5d3; 0x18dbc0bb; 0x0b8bd4d8; 0x3c7bc5d8; 0x36511e62; 0x3fcf9fcb; 0x5863f9e1; 0x0c93a134; 0x3868cb81; 0x09bd7098; 0x4d6c4d3a; 0x743aa681; 0x452b22f1; 0x73110ba0; 0x30bab914; 0x482d48f4; 0x39aebe41; 0x4335e085; 0x437220b0; 0x784cd569; 0x451cb08d; 0x35e65220; 0x5a5923c5; 0x23ea7282; 0x5b5ce8f6; 0x60a4b66f; 0x004d4f86; 0x0a0da666; 0x23afa782; 0x41843bd0; 0x66e3c594; 0x09f01fff; 0x759e0327; 0x19c0d86a; 0x6b45d72f; 0x1c030b2c; 0x1dcd8a65; 0x6bfbabca; 0x17605f56; 0x7e2f0134; 0x1b34fba5; 0x650f3665; 0x3d96ae27; 0x59c19804; 0x3068e28a; 0x3f570a23; 0x435466c9; 0x5defe5b1; 0x2b2b2868; 0x5420bbe5; 0x0d71526b; 0x7ed008cb; 0x404884f4; 0x2a1f25cb; 0x1b08266c; 0x6e3ab543; 0x39f5159e; 0x7f71867e; 0x0af9051f; 0x11cbee38; 0x13efcd0b; 0x02320a8e; 0x67d2c7f1; 0x5ebca7e9; 0x55f5fbfc; 0x3c7e1f48; 0x2e49d4c6; 0x1d4ea021; 0x48976b2d; 0x162b5749; 0x30a48718; 0x4df5ccb5; 0x4483dc7e; 0x495cc6a3; 0x47e774d7; 0x33a166ea; 0x6c320c7e; 0x4ea77f68; 0x28f2a560; 0x2a8eb1b8; 0x4b2caa11; 0x76a4b342; 0x7ea97d2c; 0x60149381; 0x3ffd3034; 0x0b5d8676; 0x2ed5dad2; 0x16e0f9bc; 0x53337770; 0x5fc683e4; 0x6160eb15; 0x1a60fbb8; 0x75512e2c; 0x74485660; 0x24bbd3b7; 0x72e49a59; 0x67fac082; 0x696d6f1e; 0x5210a35c; 0x3da4a2df; 0x026ae1db; 0x15a79c6a; 0x2b4cd21c; 0x2b624148; 0x61c25d04; 0x55496f5d; 0x558722ad; 0x2a1273fb; 0x290e1223; 0x037c391e; 0x39d83696; 0x02301f08; 0x46e728de; 0x7c19a28d; 0x331e1641; 0x2c8cc04f; 0x0317cb2f; 0x0bb5cb0e; 0x3c494b88; 0x7ad14516; 0x46670386; 0x35cd8c27; 0x347493c4; 0x65c121af; 0x5a5af777; 0x24ec5406; 0x4efb1d22; 0x0706f58b; 0x1ec08da3; 0x477e8577; 0x75e2b792; 0x6380f73b; 0x659dbbf4; 0x3c3d238c; 0x36149d5d; 0x7d803b71; 0x613eeaf4; 0x4a0eb13d; 0x66935032; 0x5e34fc6d; 0x7f5e0e88; 0x6b58b524; 0x08e6c626; 0x13d7d6ab; 0x24b13685; 0x16ccaa95; 0x30f916c1; 0x4d9b9d66; 0x362fa441; 0x42d7cfc3; 0x68fef43e; 0x0767accc; 0x0c9adb6d; 0x64294a9b; 0x7de30f35; 0x0107a9eb; 0x51f769ba; 0x1ba83ee3; 0x43ab802a; 0x5c8e6383; 0x597f9fe2; 0x01a76dfd; 0x71920459; 0x50dd63d1; 0x221243f9; 0x4c0daca6; 0x0f3dddf0; 0x7d1e3b58; 0x1a6b1765; 0x6b3e0df2; 0x2f96ef48; 0x15d27e9b; 0x430fbf95; 0x21a38f7b; 0x77b096e8; 0x438799a8; 0x77c4e8ab; 0x37e67c07; 0x7e0daa9a; 0x731a1cff; 0x15cc30d4; 0x738101a0; 0x472e465c; 0x5a9350a5; 0x56de970b; 0x10b61cbb; 0x005cd8b0; 0x103b68f3; 0x3668b959; 0x1738935d; 0x14427f04; 0x573cdf89; 0x00291429; 0x48a290c9; 0x7ec02ac9; 0x0b8f3442; 0x115573ed; 0x2d68388f; 0x08ad0c10; 0x1bcdaf7d; 0x307fb7a5; 0x47711635; 0x79cb7e95; 0x2d95f62f; 0x5e1002b6; 0x30a6d954; 0x538f91f6; 0x29a90194; 0x3ea7ca32; 0x27139830; 0x5fff5777; 0x3294e1c6; 0x1ff8aff2; 0x25271b4a; 0x6e81606b; 0x1c20f54d; 0x443c10d6; 0x71a68314; 0x405df3c7; 0x01e035c0; 0x20af781f; 0x69a5a459; 0x47e41335; 0x5b96e3b5; 0x5e6cf1f2; 0x6af6bb79; 0x354816a1; 0x54483619; 0x5e77e838; 0x36ff7b1d; 0x003d365e; 0x065217d6; 0x3c3c0a43; 0x16399e3d; 0x10fc0ecc; 0x54706771; 0x11f8b664; 0x6beb65ed; 0x5b67f0f0; 0x1a5104af; 0x016c6ed5; 0x2b64b40e; 0x21d7666b; 0x40182bee; 0x4150d06a; 0x0fa97fe1; 0x7e249e7a; 0x3a903dfc; 0x7a58a20a; 0x5413b746; 0x52282b47; 0x5bd7770e; 0x6b7d2b6c; 0x0fdbec2b; 0x24a73ca0; 0x6b0ed62b; 0x2dc7bed2; 0x7cd08546; 0x58cbb358; 0x115a485c; 0x0593a84c; 0x7d245728; 0x7e705081; 0x35ba77b9; 0x77eb1ff8; 0x390ed226; 0x5b746195; 0x7a2f46ca; 0x173c2f51; 0x7f5ff48e; 0x0e5e0c24; 0x26885263; 0x539e6af3; 0x4975bf07; 0x737ec724; 0x378c8526; 0x0548525b; 0x1e6aa7de; 0x3d3e23ca; 0x1bee9c7e; 0x459fdcc4; 0x168a4e12; 0x300b753e; 0x224e3486; 0x18aaa7af; 0x240edda5; 0x6b1ce7c7; 0x39e54fc4; 0x68c0d007; 0x60a1237a; 0x060af98e; 0x1c664afd; 0x60191e88; 0x5008ca70; 0x0729d4ea; 0x7af0fea1; 0x3e567b36; 0x636e2b36; 0x6991ccde; 0x4e970d41; 0x7f4a23d4; 0x61ae9b21; 0x519c859b; 0x64755291; 0x6c821ce0; 0x6c092357; 0x58d1d605; 0x643fdb00; 0x7af9d488; 0x78b375e4; 0x5c1b5fed; 0x19737d40; 0x25ca92f2; 0x484e53c3; 0x32de5364; 0x67aca2f1; 0x348f85eb; 0x7bf18db4; 0x1e808be1; 0x27f8037d; 0x303ec858; 0x148276f9; 0x783b394c; 0x549d9591; 0x7b903dfa; 0x7c744ec6; 0x48e33110; 0x355061b0; 0x2e9433e3; 0x4f7d56e5; 0x266002ad; 0x349a2de8; 0x453d6d97; 0x19e2d185; 0x06b439d2; 0x4e6d973e; 0x5acd66d4; 0x47e4bb2e; 0x0ffd3fd8; 0x33792f6b; 0x7b4dda07; 0x58b28d85; 0x42976852; 0x660be05d; 0x2f6daa6b; 0x443310de; 0x3a8593a7; 0x343815d6; 0x65cb403e; 0x15f39284; 0x0eb91fed; 0x71b11b1e; 0x7ee61aec; 0x7b2361c4; 0x0c80d611; 0x2d06e291; 0x7aa1b1fa; 0x3fc08590; 0x22dc6056; 0x190bc4b5; 0x3071efe8; 0x2936bb08; 0x626654bf; 0x1a6a59ef; 0x4f39fd61; 0x6423b9f3; 0x25ae2918; 0x3649275a; 0x2bb09ddd; 0x146c8d63; 0x01d7052c; 0x5700ffe5; 0x02195656; 0x491c1747; 0x332ccff2; 0x7b047ab4; 0x1cd7cff6; 0x610f9463; 0x7d3626e7; 0x3ccab87c; 0x4056307b; 0x71652f78; 0x5026ecf1; 0x4cb33171; 0x1c2346ea; 0x46a481f8; 0x2442e434; 0x272369d0; 0x178f0114; 0x2528634e; 0x7e601305; 0x5213ab95; 0x7aca98dd; 0x03a1f86b; 0x179b39fe; 0x638fdf4c; 0x6e187033; 0x427d6e27; 0x7424600e; 0x686883bb; 0x43245a8f; 0x0c67e7fc; 0x07ecca7b; 0x70d66cb9; 0x4b66d2ef; 0x50c96ebd; 0x7abd1121; 0x3b652ef4; 0x27b6181f; 0x04835d8a; 0x006db332; 0x5c67fb8f; 0x2ef4823f; 0x2262f538; 0x79352f1e; 0x3dd506e1; 0x0e697922; 0x4398c0e3; 0x17614e94; 0x42329b31; 0x1891be3f; 0x38876db4; 0x60c2645a; 0x297d710b; 0x4eaf2588; 0x633c61de; 0x0e3ec224; 0x2b0f367f; 0x5783cd9b; 0x3012db44; 0x0dad035e; 0x75862c6b; 0x18a6a9e4; 0x457d54b8; 0x0cfbbfc1; 0x626d0948; 0x1a11609a; 0x52db0720; 0x0d2e9949; 0x73592db9; 0x0836c12e; 0x01a3ca36; 0x4eff3899; 0x54b688e2; 0x77cfd704; 0x0d16b76a; 0x39ce0419; 0x123ca410; 0x3feaac4e; 0x5ffd2dbe; 0x7e5604cd; 0x7591dbcb; 0x4596e87b; 0x026d7e8d; 0x28ca14de; 0x17b18e89; 0x31935812; 0x4d23f884; 0x15a1e507; 0x0e62eed6; 0x399b6464; 0x3dad0b13; 0x53c8a326; 0x5697042c; 0x78718a8b; 0x6b8a6385; 0x383878b3; 0x5f65a31d; 0x43903e76; 0x5199544e; 0x79d5f067; 0x7bb7271b; 0x68d23870; 0x3a753b5f; 0x18ff32dc; 0x0668a4d1; 0x1ee33a88; 0x1622a4d4; 0x3ccb06a2; 0x75a9daa8; 0x344b0695; 0x25b2f982; 0x06b309c2; 0x6124d76d; 0x1f8566a2; 0x446e5001; 0x3fbb65c2; 0x666f84bc; 0x029cc5d4; 0x06fef632; 0x3b1f652d; 0x2313b502; 0x51aa196a; 0x3becdbed; 0x77b388df; 0x5824fe17; 0x4f2bc8d9; 0x0b7e2cb5; 0x0211418f; 0x4be80c5c; 0x6f598410; 0x01d70361; 0x3ef9cd78; 0x56e8a46d; 0x33f249ef; 0x708375da; 0x10232b3e; 0x1bf28dc1; 0x7f248535; 0x70b11739; 0x703a6f57; 0x0a7d8ac4; 0x4366fb05; 0x3570ce08; 0x6399d401; 0x523eb476; 0x6c9dc7e6; 0x1fe20c02; 0x5349e6e3; 0x5683a0ed; 0x4f45860a; 0x21b9c950; 0x38b4c90a; 0x122a63c4; 0x00dcadc7; 0x5c685fc9; 0x579d4124; 0x742d8c77; 0x5d890bf0; 0x472af297; 0x6524ca78; 0x2d85b3f4; 0x0661a51a; 0x2fc4c6ad; 0x0f732de0; 0x3f7db076; 0x25654f96; 0x32dfcc7b; 0x5cff18f6; 0x51d24ec7; 0x3a849f02; 0x2d8cd529; 0x348a155f; 0x128ac16c; 0x51b2bfa3; 0x2f3742c6; 0x6d6dee68; 0x3e1780e5; 0x71430228; 0x57be94a9; 0x649de755; 0x1dedc43a; 0x46dccc41; 0x029ecc67; 0x0eda761a; 0x03f0b658; 0x23c73c16; 0x15e0a3b6; 0x7424f1e7; 0x6b2b752e; 0x25ee3cfe; 0x163b63b3; 0x39455fc4; 0x5cf9ac67; 0x56f72a60; 0x0fdeb5c2; 0x11337b7c; 0x75580a63; 0x6ef3223f; 0x3530b515; 0x60e52142; 0x40a0c952; 0x75ee0856; 0x46859913; 0x73b0e9be; 0x1fc694ec; 0x6df120aa; 0x4d21a11c; 0x1778b9d5; 0x6b5ce9de; 0x31c6e7d4; 0x20b75a04; 0x28079b69; 0x2a017d5b; 0x75b8dc56; 0x131cae15; 0x2b744638; 0x0b13383a; 0x48941fa6; 0x408fa934; 0x523b8aa7; 0x2c64c822; 0x386abe53; 0x5a5c8e4e; 0x1ff099f1; 0x5a9d146f; 0x43735120; 0x0ba80217; 0x5d830ad8; 0x77dd1e3b; 0x6417a535; 0x3f9f1757; 0x3cbce2b9; 0x7df926ee; 0x3d47799b; 0x736acbe8; 0x3e2b902d; 0x21b3f03f; 0x3fd3b242; 0x5cbc2690; 0x1aa2d70e; 0x7a898e86; 0x2b2aeff9; 0x05fc5fa0; 0x688709bf; 0x2029696a; 0x6f2b92db; 0x69c593fb; 0x32887339; 0x46b5c7ee; 0x01c7adef; 0x6c2c1d80; 0x4dc496b3; 0x439d5df7; 0x056a9c2c; 0x452faabc; 0x4b5cf188; 0x14c30e37; 0x51d9a1ee; 0x32850029; 0x74b38012; 0x22c37992; 0x3eded38a; 0x13f31ecf; 0x1b0c45de; 0x282ba3b0; 0x7d1a6816; 0x0a37ebaa; 0x4eb98141; 0x155bd048; 0x6909adee; 0x7c60985d; 0x38b9986a; 0x25376392; 0x22468a80; 0x597bb549; 0x2c907676; 0x5b789d12; 0x1c09c2ca; 0x2ace1417; 0x0f309694; 0x1be1622a; 0x4d303e18; 0x52f5cf6d; 0x75268055; 0x399b4ccb; 0x3a438c99; 0x3e2e9ff4; 0x472d2559; 0x2e179f04; 0x029d0266; 0x4e4187ac; 0x7602c4f2; 0x3b015ab9; 0x0ec8ca63; 0x64f334fe; 0x2fcda2cc; 0x55d36bd7; 0x55b8f6dd; 0x6e8afb12; 0x1519cd67; 0x6bb80efd; 0x0c487762; 0x4c11ff13; 0x5f06a508; 0x706c098a; 0x51b16212; 0x736f8ed2; 0x0a77d16b; 0x6f8a2069; 0x5a0aa0d6; 0x7379f199; 0x47df978a; 0x41f66f74; 0x33b3f10a; 0x326d3e81; 0x4cad3f0a; 0x4a7ea929; 0x1744d250; 0x0e57925f; 0x2fbdd887; 0x228a587d; 0x795ab273; 0x5d524715; 0x35e405a4; 0x3c5d1502; 0x34375ada; 0x24284551; 0x2d7b8657; 0x2f6895b4; 0x5e3ccd6e; 0x021b67ea; 0x05a0b1fe; 0x219af52e; 0x7a68af79; 0x7dbe4b05; 0x10609660; 0x1716ca9c; 0x44c4c4de; 0x0c76fc6f; 0x6bee144c; 0x7e2f247c; 0x70e27c80; 0x246a8e8d; 0x1d8a1923; 0x1332ef7f; 0x15623c32; 0x7b12aca5; 0x1ff63a96; 0x21ad6d66; 0x3f7c14bd; 0x3c47833a; 0x2fbb3aa9; 0x4319e180; 0x2b52c07f; 0x27faf754; 0x5e1d447e; 0x475b7bbb; 0x078f8db8; 0x775b81f9; 0x61c33237; 0x1f1eb3cd; 0x013f98b6; 0x72c234b7; 0x3499c3c1; 0x1508aeea; 0x45fc1b80; 0x6e7656d1; 0x6e465c79; 0x02421332; 0x18d05641; 0x03b461a8; 0x2069c886; 0x6dd1d1fd; 0x4e2eb486; 0x267d6b90; 0x70a73a9d; 0x485ba502; 0x513b8e12; 0x04cde3bd; 0x1b5842d5; 0x59f4839b; 0x00baf57b; 0x4fd0a7cd; 0x5dcec214; 0x476c94b1; 0x24b49a8f; 0x02345c07; 0x70bf90a6; 0x4263c388; 0x2bc09fa9; 0x67920475; 0x102db6de; 0x49477a59; 0x0d6bca31; 0x765d5c6d; 0x7641defc; 0x2382f738; 0x5f2d3847; 0x0813dad3; 0x36110f2b; 0x5a0d70cb; 0x5a820c56; 0x2ab100d3; 0x314cc0b3; 0x10a63ea1; 0x21afc203; 0x1af7f635; 0x523cadd3; 0x5848faac; 0x2009b1a4; 0x28edf346; 0x0e076f39; 0x40dd1dfc; 0x19454d7e; 0x536499e1; 0x4cfe66a5; 0x740eec2d; 0x4389c1d1; 0x3b480d8f; 0x559fe63e; 0x3aa95d86; 0x02b063f1; 0x226d9525; 0x3a8939c9; 0x20822a33; 0x17b7deae; 0x1374633e; 0x42f5c1e7; 0x2ee28717; 0x07bc5581; 0x12fb5ff1; 0x0fc33713; 0x6835fba6; 0x34194bd0; 0x32f0c720; 0x52a22dc5; 0x275e1a4f; 0x398788ae; 0x73552ec8; 0x0ccd1589; 0x0b565dfa; 0x45a85700; 0x33dfdd95; 0x6804b8ff; 0x15e0bc31; 0x0edf3044; 0x56c23414; 0x2a904a5d; 0x0ff824f2; 0x3803521e; 0x38c96075; 0x418bafd5; 0x0b1751bf; 0x50de1f84; 0x1243e3ce; 0x4142a3bb; 0x6bf5acd0; 0x4a98b49b; 0x17c380d7; 0x10eabb7f; 0x2e211ee9; 0x43559895; 0x120f8fe5; 0x41444c79; 0x556ed854; 0x1e77d791; 0x6784a7c2; 0x49d63651; 0x61406b8c; 0x3eec4ed1; 0x2046aab6; 0x135f339e; 0x5ff8d5ce; 0x45c31cae; 0x0fd112b3; 0x7bfe394b; 0x45815dd0; 0x2740b5b9; 0x34583ab6; 0x6e16793a; 0x4476575a; 0x655bc32a; 0x5e8a512e; 0x2d69f885; 0x1a5df686; 0x3b8ef85c; 0x46f4866b; 0x3b91267a; 0x2b224b1e; 0x7cdf7a3e; 0x1d30f22a; 0x4b7906db; 0x691afbe5; 0x4a81220e; 0x19b2cb5d; 0x003ccfe1; 0x60aa8e47; 0x2e80e827; 0x00c10c0e; 0x7290e823; 0x3ab9193e; 0x59018e01; 0x091f1369; 0x29457a4a; 0x1cb22871; 0x5eaa7421; 0x7d60120a; 0x2c5dc1d5; 0x221d0cbc; 0x7dcfc197; 0x41f27b22; 0x42e081cd; 0x40f58eca; 0x0e329ebb; 0x2b02fbb5; 0x38eb6398; 0x1d302dee; 0x144bfab6; 0x47b45d2d; 0x0afc5794; 0x4f7d7450; 0x77b637dc; 0x2f352f4f; 0x47aa8c6d; 0x192ee6f5; 0x54edb9e6; 0x5ad955dd; 0x21bf10bb; 0x7882522d; 0x4ff3105b; 0x0e003402; 0x3914db07; 0x07206f09; 0x192bd68b; 0x48e097d6; 0x7f738d03; 0x3548f239; 0x1f556559; 0x5a120699; 0x1de212c4; 0x44327121; 0x729735d7; 0x1df93727; 0x6f30bf2e; 0x3582bbba; 0x2cfbdfc7; 0x762ebe19; 0x23b295e3; 0x2a45a0b6; 0x42adfcec; 0x7467b349; 0x3bb6db6d; 0x4f1b9159; 0x52971f27; 0x78e4f308; 0x72bb223e; 0x6eaeb9dd; 0x41c75b76; 0x43075843; 0x5f705c31; 0x18a40dc7; 0x483408f9; 0x67737627; 0x66e6f6f0; 0x6db5e1a0; 0x628b50c9; 0x5e498778; 0x3e8504ad; 0x0ef8a5c5; 0x322e8288; 0x2850987d; 0x34bfd531; 0x09476c01; 0x0d800fb3; 0x00b31b4e; 0x7b08d065; 0x3cc13245; 0x478aa452; 0x558307dc; 0x7ebdd476; 0x4ed7ebe5; 0x563856c7; 0x7c06186d; 0x1b5a46a4; 0x3c2eab23; 0x2e597499; 0x2cce345b; 0x646da30b; 0x7207882b; 0x0e69b01b; 0x79425667; 0x10aa8aaa; 0x420028f0; 0x548d5c62; 0x1acc1c75; 0x66150147; 0x25c6bbcd; 0x323eb521; 0x19b69fed; 0x74968c5c; 0x45226a9f; 0x57e49b04; 0x37798ef2; 0x4314898a; 0x4ba3a806; 0x243fa728; 0x4f195e5d; 0x725318ee; 0x0b5d4099; 0x40e0ab73; 0x4eff963c; 0x57150ce5; 0x10d4eb59; 0x4359dc39; 0x73f97336; 0x7f73a89d; 0x0f31589a; 0x15788eab; 0x0fc34a01; 0x0f98c3fe; 0x5ab7a35f; 0x12fe6e3d; 0x1d34aee1; 0x475a20ab; 0x05301b81; 0x3731b197; 0x141b061d; 0x02038eda; 0x3b2cf5a3; 0x22e8062b; 0x1ff7ba7f; 0x5fd38a7d; 0x4644f9f6; 0x0718efae; 0x0f62d3f8; 0x7fc2f703; 0x7df801c0; 0x0423e00f; 0x5fcb8116; 0x311c0a60; 0x2157315d; 0x05faed90; 0x5c6cacb3; 0x32ce6062; 0x795d50ba; 0x2a2331f4; 0x670dc594; 0x2b05a2cc; 0x1958b6d5; 0x155a60f5; 0x21f0024a; 0x0e1159f7; 0x070d4827; 0x5e7a9944; 0x4ffd9be4; 0x3fb2a1db; 0x5a519d74; 0x2b645342; 0x5f5fde78; 0x5728a0f0; 0x4b2177fe; 0x091bd43c; 0x6999e5f6; 0x2056f645; 0x1a5fb634; 0x209f36ea; 0x50082395; 0x5663153d; 0x63808836; 0x13e1be53; 0x4efc5721; 0x269c0fca; 0x6bf2ad30; 0x02b2e99a; 0x5f2657b4; 0x014c218d; 0x3e1a5eb1; 0x210d8e95; 0x3b32dbf5; 0x2b6f19f6; 0x048a909a; 0x389fce76; 0x57048b12; 0x4b7c6d43; 0x363ede02; 0x41249b9a; 0x2fc0a4f2; 0x31625d9f; 0x747ea635; 0x128b3a0e; 0x4700b3e2; 0x147fa1ca; 0x6449adcb; 0x6be45a59; 0x688c43ee; 0x78ef5fdd; 0x3916622f; 0x03a4bb73; 0x3682c7e9; 0x371ab2d6; 0x5e87cefb; 0x2c0bb950; 0x1c14de12; 0x607b2f61; 0x58fb476f; 0x5aa034fb; 0x76e509a0; 0x6d6a2508; 0x02e8d7c7; 0x6458a188; 0x1b8c7be8; 0x09a7683c; 0x2fd349ec; 0x7630c840; 0x78fc6ac5; 0x75119dd2; 0x6e792bcd; 0x5e9b52f8; 0x1b16de3f; 0x4fcd7094; 0x05aef895; 0x700ff99e; 0x20aa071c; 0x0fb4254f; 0x0db6fb1c; 0x220d58de; 0x75391864; 0x58d59542; 0x7e4d0dab; 0x70cc4e3a; 0x0e2f2725; 0x5c5fd8cc; 0x7b3e3697; 0x62b63527; 0x4efc96f6; 0x3f03c88b; 0x02bfdb72; 0x30248715; 0x5b6285e3; 0x5201d939; 0x34c35303; 0x65310694; 0x519fa01c; 0x2839e9b5; 0x769b0f9e; 0x251ff9a0; 0x306103e4; 0x6cc53cba; 0x2d530753; 0x6c98e796; 0x2fd26a6b; 0x2027f625; 0x5ec0e015; 0x5f2fbd3d; 0x36b6a8e5; 0x208dff84; 0x55667420; 0x4b169192; 0x59d85160; 0x396783ab; 0x6b74b81d; 0x0740d9cf; 0x7de70e9a; 0x27b915d4; 0x4e2d92d9; 0x3b2e071e; 0x0cc2be38; 0x32334433; 0x341533aa; 0x5d59ad71; 0x148ab82a; 0x0add2d85; 0x291d958f; 0x5fee44e2; 0x3e814418; 0x1ab8fb28; 0x17f8565a; 0x3494e690; 0x642fe314; 0x4ea48a20; 0x4fce7b04; 0x7dc3232b; 0x0c838263; 0x578bb576; 0x38701f33; 0x0b0a68c0; 0x71da5caf; 0x1986bfd9; 0x319e7547; 0x1380b906; 0x103d8ac2; 0x33f4fd52; 0x614fe53e; 0x0fea2e1a; 0x67183781; 0x0ac0ec59; 0x3caa98fa; 0x38bec575; 0x05b18411; 0x07e457e5; 0x19ecb3a2; 0x2a1a3af5; 0x0d7f9046; 0x76ff3352; 0x63510636; 0x204ea078; 0x7b237053; 0x7f96c11a; 0x4785af01; 0x4dc92c50; 0x70ed7853; 0x7d4b5e2f; 0x4b5d3cd1; 0x497486e5; 0x6813b8c2; 0x3e8d6ed9; 0x70b8825f; 0x71438e6d; 0x450c64b5; 0x5ad4d93a; 0x3fac9f4f; 0x5436658f; 0x226f4066; 0x27b96a68; 0x5e87a5bf; 0x581afb62; 0x7414a28d; 0x70b32220; 0x13d3d7bc; 0x5d93920a; 0x305941f1; 0x1958afbe; 0x285604d8; 0x783a3146; 0x6c5cf513; 0x76599d8a; 0x288377cd; 0x3ff643b3; 0x43d6dada; 0x0919e8ba; 0x7b9a6fa2; 0x0e145ed2; 0x522a6e86; 0x7b6f40fc; 0x4b612a69; 0x2a21e223; 0x302e9211; 0x16065716; 0x37ee58d3; 0x4c5237a4; 0x6ebca315; 0x35a3a4f6; 0x647d4526; 0x75c7c5e5; 0x2662e8f2; 0x68cfc39c; 0x7f141e8c; 0x7f3d59b2; 0x713009ce; 0x3cfd65e2; 0x6d920399; 0x5df441da; 0x329a880c; 0x58b0d566; 0x2025e86a; 0x5a599e7d; 0x59f7a6b5; 0x5bb520b8; 0x112dd707; 0x646e40ad; 0x15c53f46; 0x16ddd3f6; 0x41772d65; 0x4d5063b5; 0x5ea895db; 0x4b7f922f; 0x60040783; 0x2b6decbf; 0x4f2155e5; 0x0ebff517; 0x035eff40; 0x26d9e612; 0x2399883a; 0x440fcc24; 0x4cd2ab2c; 0x61348a3e; 0x72e1b0df; 0x5f59bd5e; 0x151ffc78; 0x5d3737d1; 0x6808108c; 0x5fc2bac0; 0x163cca42; 0x370e9bdb; 0x416c5ff2; 0x4751d730; 0x275d9319; 0x3afe320e; 0x5c4e9af4; 0x273d0d9f; 0x6df37842; 0x3b1bb279; 0x1a70c968; 0x5ccaccdd; 0x5b11e53e; 0x6f09ab90; 0x33306bcc; 0x755ccc3b; 0x2d69f110; 0x45ce1ee4; 0x55b3560f; 0x4b61cfa4; 0x4c86edcf; 0x37a63fd6; 0x7b89f077; 0x065fbc2f; 0x55dc5de6; 0x12416326; 0x1e6dd589; 0x6816c403; 0x1edb61c3; 0x0d7eb97b; 0x0e14e002; 0x7087d1bd; 0x1474bd1e; 0x728abe4f; 0x3875af57; 0x1a3e2433; 0x38aafecc; 0x1165fa66; 0x6e1f2b77; 0x34df02db; 0x34c5ace6; 0x16d21bd2; 0x2a576193; 0x50e01de9; 0x4f4c2042; 0x28ccd193; 0x0118b0a8; 0x2d1e1194; 0x0b186e1b; 0x591b6182; 0x5b1669a3; 0x3dc87988; 0x4155ad19; 0x0b7da189; 0x5d66a048; 0x1b8ffa9d; 0x3d9ab968; 0x215e567f; 0x4fcc1d06; 0x3ecd0eda; 0x2b096b5b; 0x4b0e6ba8; 0x5d9941de; 0x24d44c38; 0x2815a91f; 0x12f4ffef; 0x4eb8a212; 0x338e301c; 0x7c080c07; 0x24b00562; 0x1bd4920e; 0x383cf62e; 0x48564f90; 0x587a971c; 0x39bfcf07; 0x4fd05db8; 0x29cc58c5; 0x21a5c4ea; 0x553b0b81; 0x0aee1786; 0x6b0db236; 0x3afc25df; 0x41e03234; 0x77191114; 0x6cc3c2d8; 0x0aa3edfc; 0x099265e5; 0x132ab3fd; 0x72fbabb7; 0x7c520d2f; 0x29217994; 0x5f50abbe; 0x240f8680; 0x4d42cf9a; 0x274f34ab; 0x61dfe105; 0x36ac1134; 0x7b135c87; 0x086fa1ae; 0x5f251fff; 0x52bffc95; 0x78ef3d0f; 0x7f3319fa; 0x78cb6ae4; 0x6235bc0e; 0x0884d04a; 0x1f488ebb; 0x228dd756; 0x417faca3; 0x1b602e81; 0x34edf07d; 0x2cbc229f; 0x5af39841; 0x07f861b7; 0x7d7497d6; 0x2daedfd4; 0x43eda3ed; 0x5c715918; 0x5e4bd046; 0x405413a1; 0x3ebe920d; 0x6bfe6632; 0x13e7759b; 0x11007468; 0x59275594; 0x0b500dc8; 0x1c720f77; 0x49774070; 0x3d71707c; 0x23e1afa9; 0x1afaca8b; 0x24c4a16b; 0x605ba779; 0x59abca85; 0x537d1bd0; 0x41625cd7; 0x34f14a62; 0x6a706b97; 0x0dfa68ab; 0x5354be5c; 0x01f76c34; 0x74e97d1d; 0x56803b57; 0x01b6d6b1; 0x7baa3355; 0x5af3a463; 0x394eb382; 0x7d3a52a9; 0x1ce19b11; 0x13da49a4; 0x3330f7cb; 0x39947b74; 0x380fef57; 0x67ac0697; 0x725e425e; 0x52069f4c; 0x5a91ca8c; 0x2c89989c; 0x270e7de1; 0x39e940ca; 0x467147c7; 0x02f161dc; 0x1cc1c7af; 0x5870717a; 0x5a4841a6; 0x29b97166; 0x2155c4bf; 0x0fb22b7f; 0x30ebaf33; 0x75572e79; 0x71995cdf; 0x635dc4f1; 0x47223f92; 0x7c1160be; 0x42c9e6f4; 0x65d93ca4; 0x5cb4b3cc; 0x59f452fd; 0x184cf6d2; 0x0c29661c; 0x3c302af7; 0x427eb6e5; 0x73647e5f; 0x72fb07ab; 0x3f4fd2b6; 0x33285d8a; 0x071426dc; 0x69bf1112; 0x4e8d1254; 0x5716e046; 0x3ebdaad9; 0x15bdcdf4; 0x4d5afbe9; 0x41c4891c; 0x7635ab8f; 0x066d1c1a; 0x082ef13e; 0x3cdcfc51; 0x2e462b1c; 0x7855f1b0; 0x6496bb72; 0x01157f67; 0x54f7a611; 0x62ca0f98; 0x4864d6e5; 0x78f4ff3f; 0x1941e5f8; 0x22ffc525; 0x76d259dd; 0x7b2db048; 0x2c46ddae; 0x50fce5c8; 0x47e92e97; 0x6e5a3e1d; 0x20383925; 0x7623cd15; 0x42542320; 0x65269620; 0x4227b7dc; 0x6fca8347; 0x2b4ac80f; 0x287e7607; 0x2356dd26; 0x53141027; 0x3da0576c; 0x4dfcedc9; 0x38cf58f2; 0x3ac5337d; 0x4e091bc2; 0x62771f1c; 0x3022c185; 0x67be0e90; 0x20cbb7d5; 0x49e2e0c7; 0x4163191d; 0x0d619edb; 0x1d62e802; 0x7cfe0882; 0x303d09e7; 0x6efab1d2; 0x07f7b2f0; 0x0c5168ec; 0x48db4cf0; 0x47cf41b8; 0x41d12d22; 0x596dae08; 0x70225e74; 0x205d878c; 0x403d2c15; 0x1d84a46e; 0x74edbda1; 0x22d550fb; 0x09330dcd; 0x369f48ec; 0x01ef6b42; 0x02ffb8d3; 0x236cfc79; 0x5838b102; 0x3baed070; 0x2019d2c4; 0x40b28871; 0x0421ae21; 0x0e4a8cb3; 0x17f9a913; 0x576b1e6d; 0x0323e2e8; 0x36e74609; 0x094b0597; 0x75c1ab66; 0x389e3214; 0x150b3fd6; 0x6c1480fb; 0x4758b86f; 0x45fc6e63; 0x7c36a108; 0x2c9417bb; 0x20796197; 0x3dd882a4; 0x5dd2c328; 0x447a6d63; 0x1d50d626; 0x68a53e91; 0x687b34ec; 0x297c784a; 0x17c15b30; 0x3eaf2496; 0x03fcd529; 0x111db78a; 0x1bc78587; 0x73b98903; 0x5124c094; 0x0317085f; 0x22d73489; 0x6f0a0d7d; 0x4a3ea284; 0x72b3e3c1; 0x45540042; 0x2f1aff15; 0x1184de83; 0x44efcf99; 0x100f10eb; 0x0a60989f; 0x393d3243; 0x5c69e55c; 0x0f053ae1; 0x1c36e3ad; 0x08220d7f; 0x18eccf5b; 0x6956238f; 0x43009e99; 0x3eb6846c; 0x3ba8d2fc; 0x72176e61; 0x58f2b1c3; 0x4f09b0ef; 0x4076272b; 0x0269c653; 0x6a750af3; 0x74f73602; 0x68f0404a; 0x64554782; 0x3bbd5eb3; 0x7a3b8098; 0x70f70d13; 0x03767dfe; 0x7bcd3d70; 0x78c464b4; 0x5c1df256; 0x4b0f0b32; 0x0142017f; 0x5afaf3d9; 0x7b34abc7; 0x3d305635; 0x0b3e6c87; 0x7ed8ce87; 0x526bb7d4; 0x0866e015; 0x0cf6bb75; 0x5d619a5e; 0x7dd19740; 0x11951079; 0x4b7015b9; 0x73c60eed; 0x59bf64da; 0x4c139246; 0x06bce054; 0x552c2027; 0x76498f60; 0x1716a8e1; 0x00bc683c; 0x0bc4d2c3; 0x38dfb361; 0x5290432e; 0x3533a783; 0x2b034708; 0x13dc6bf1; 0x67adb4df; 0x454c1c6c; 0x7fa89e01; 0x66d75d01; 0x318cc638; 0x5c176262; 0x007a5160; 0x55b1eb82; 0x36061fef; 0x4683bc01; 0x3bcb2864; 0x394e4d7d; 0x1bffb5ae; 0x3c33af44; 0x253641ba; 0x76359470; 0x52f351d2; 0x37f0ce3a; 0x715b4006; 0x509867fc; 0x3ec1b864; 0x0c189992; 0x73719dbc; 0x0f004be8; 0x2f731c15; 0x3b9de5d6; 0x4a9728ff; 0x29e41425; 0x791b4b80; 0x5b78b814; 0x695ab9e0; 0x55c50a32; 0x53c1bbd3; 0x74386af5; 0x65f3ab2f; 0x6b167e16; 0x61191927; 0x10d36ee7; 0x714c72d7; 0x486f1761; 0x508cb2b0; 0x5b118765; 0x7546714d; 0x7795161d; 0x16f1ad1c; 0x40d72d51; 0x138ac72a; 0x71c1c32a; 0x09ca3bc2; 0x40c607ca; 0x60667159; 0x151bd20e; 0x3f16109e; 0x7f49a924; 0x2caff0d4; 0x698a402f; 0x468590cf; 0x3c719bbe; 0x00228d4b; 0x7febf49f; 0x61ee0a75; 0x6321506f; 0x7e5a5ea7; 0x1690b8ed; 0x7d7fe897; 0x6fb83917; 0x1610c69d; 0x469be633; 0x05878167; 0x77d2e01e; 0x140a18e5; 0x3c7d25f1; 0x14d06d1f; 0x402cf8aa; 0x781e28ba; 0x3c5d3330; 0x26751668; 0x04fbfd67; 0x41d6587d; 0x7850179e; 0x51b7ef33; 0x27752dbc; 0x799b69c9; 0x1af81a9e; 0x0fb7a7f4; 0x4ab85598; 0x09d68c8b; 0x0b939aab; 0x4752a963; 0x1b900522; 0x3efc8779; 0x4fac56ae; 0x2aaf8789; 0x74e8d409; 0x35f9d081; 0x036ee442; 0x05999340; 0x5b67e77a; 0x08062ba7; 0x29a208d5; 0x52a95082; 0x38d3d953; 0x5b3c66cd; 0x6f593ef2; 0x471ff614; 0x28a60777; 0x6b55f098; 0x05fb5359; 0x7324cf10; 0x064465ee; 0x7b107ea3; 0x1963cd39; 0x5ab248e3; 0x282ba636; 0x551e4b2a; 0x714c1e7c; 0x6587c6b4; 0x5e73045a; 0x78bdc91c; 0x78e0ba73; 0x2298d184; 0x1ba9c9a1; 0x6ac60d43; 0x27812021; 0x3ffe2d17; 0x094593a6; 0x7de3404d; 0x757fe17c; 0x5d952ee2; 0x5776a4ae; 0x361a1673; 0x104ee7ab; 0x1502c4d3; 0x74de8a10; 0x58e7e8b9; 0x26a5b231; 0x59ce3889; 0x7629a6c2; 0x4464cb5d; 0x1afb39b9; 0x0afa2a10; 0x031a6122; 0x2b5e7c50; 0x79d65f90; 0x5abfbac1; 0x4a6fbc57; 0x0cde04bf; 0x0bfde841; 0x3ff2dff9; 0x1ee54dd1; 0x0a65bcc6; 0x62e15e0b; 0x122dc57b; 0x09b29d86; 0x20cf6d34; 0x0a5811dd; 0x0dadcc4e; 0x5f818b00; 0x20ca4cc3; 0x5c444f38; 0x0a4e0e63; 0x1638e084; 0x5ec26021; 0x06d2c5ba; 0x04ea3064; 0x65638c12; 0x1e833e0d; 0x0e5d320d; 0x49b44952; 0x3ee119d6; 0x6e7199ab; 0x6424104a; 0x61306969; 0x7819999b; 0x171a568a; 0x797f1323; 0x2d94e279; 0x21a50a1e; 0x02d62334; 0x0fc63b20; 0x718fc024; 0x578d864e; 0x064affbd; 0x50b68ff5; 0x7c4a4af6; 0x24319292; 0x602f25c2; 0x07a8557d; 0x3ad7bc40; 0x505ee2a3; 0x3f20e2ef; 0x7c529cf1; 0x3015a272; 0x1be8807d; 0x665a9077; 0x270ff78b; 0x2b764596; 0x763c0fb1; 0x6650c8bd; 0x1d9b2cc4; 0x5ecb33ae; 0x0a6724da; 0x36fe2e6a; 0x7a285123; 0x394717d8; 0x14047f9f; 0x6268a2d8; 0x07ec7113; 0x04799ec6; 0x5ff7cd9a; 0x024d8545; 0x14308a4f; 0x20e7d1e1; 0x5ee6e563; 0x1c6fdae8; 0x1946b79c; 0x26b2387a; 0x2a11cb55; 0x444c27c9; 0x69d8fe95; 0x4c611d51; 0x0816479c; 0x38ad41f8; 0x5660def2; 0x6fdca975; 0x1b96c41d; 0x36441937; 0x36fd6ccc; 0x4ee7f8d6; 0x15dbf2c8; 0x4395bec3; 0x382111dd; 0x71e67925; 0x7351f44e; 0x1068cdbe; 0x4cdbcc4c; 0x43b26fa2; 0x0c895704; 0x6ced025d; 0x3bc0ae25; 0x4afb8f9b; 0x584613ef; 0x0777010d; 0x1e462994; 0x58d451eb; 0x387a8662; 0x251ed2fd; 0x236b9150; 0x1d0197b7; 0x3f4acf93; 0x2014a7b5; 0x103273e6; 0x60304388; 0x41774766; 0x36729bb9; 0x48431b97; 0x03f653d7; 0x22d3c70f; 0x5d880568; 0x1034119a; 0x3ac53697; 0x7598cc9e; 0x7b2c0d6f; 0x01606ffe; 0x65ea5131; 0x3940dde1; 0x53015da3; 0x4153764a; 0x72e1c1bc; 0x7ebeb43b; 0x3c10cb7f; 0x486fbacc; 0x4ff3a299; 0x2b777abb; 0x5cf9813c; 0x6843ced2; 0x1c9cbc25; 0x4d299ffa; 0x0d4367e5; 0x78bb112e; 0x54eed40c; 0x77d674f1; 0x20dbd271; 0x58e10a25; 0x3124802b; 0x4aaf56dd; 0x04c34d25; 0x1f96398b; 0x7b1af1db; 0x63df030a; 0x2b8c7ae1; 0x286f42de; 0x6627820d; 0x42cf7172; 0x5c7c0ca8; 0x7389adcc; 0x643890f5; 0x36a6dc0d; 0x3eb800f4; 0x7a31883f; 0x4e9c2f98; 0x6e9080a5; 0x263297ae; 0x3336f207; 0x4cae2aa7; 0x633082b9; 0x32f8e18b; 0x1f7dc004; 0x4ec4d4af; 0x092fd3dd; 0x3164eb5e; 0x5d685a75; 0x32e3944d; 0x56e20ff6; 0x007b50fd; 0x2c2118fc; 0x5ad84c43; 0x3d17990c; 0x6872712f; 0x45f9607f; 0x03ea6eec; 0x72d85d67; 0x139f72aa; 0x760c19e5; 0x34885dd0; 0x4252850d; 0x1a0da774; 0x52e9369c; 0x1a1dd232; 0x6ccf489e; 0x009e1096; 0x46ced2a1; 0x3ba12484; 0x5c21425d; 0x34f5a7a3; 0x385d748a; 0x28b29065; 0x4d8271e0; 0x1a2c9876; 0x3bf8c431; 0x31eb8f45; 0x2f77fad7; 0x5ca16376; 0x526ef6a3; 0x5aa366af; 0x6a2c574c; 0x49d91d38; 0x03581d3b; 0x5e24d7fc; 0x69cdd94e; 0x5d0b41b3; 0x0ed36ab3; 0x1bc8b563; 0x03d9d18a; 0x66713396; 0x45e5d08c; 0x7e0d9017; 0x50eaf619; 0x00d7576f; 0x08a636e1; 0x0af0b667; 0x6613e753; 0x546a94a6; 0x43ad9c23; 0x7c4d9143; 0x1c81bc26; 0x6fbe92b6; 0x1e851e23; 0x05bcc05b; 0x011b872d; 0x615cbcf1; 0x6e36b962; 0x33d4af29; 0x64b23d7e; 0x63fa8191; 0x688ba7e2; 0x64b68c20; 0x667f0a0c; 0x3df65c9a; 0x6c6f6308; 0x697cc6bf; 0x16947a5c; 0x339b9d79; 0x71a473e4; 0x0a670cbd; 0x041e1e18; 0x4a8fcf6b; 0x7e5a1cc2; 0x06db51a2; 0x430c2c36; 0x26efe2d5; 0x392b1192; 0x4944f7cb; 0x57925973; 0x5354e955; 0x78101f3a; 0x5d7acf71; 0x111eb3cc; 0x67b2e0fe; 0x4cb639b9; 0x34c731c5; 0x359669e3; 0x7be3d5a5; 0x2b255d76; 0x6dd9bc91; 0x37b134a8; 0x4023f2de; 0x29010e92; 0x7f2e73e9; 0x4554253f; 0x55db9b84; 0x6e1fb800; 0x4d7c486f; 0x00c95b8e; 0x02fbbb08; 0x37bd54b4; 0x4d4c466c; 0x03326852; 0x6f1c57f4; 0x650f5828; 0x257bc0ed; 0x59d563a7; 0x39cf6e30; 0x77ed0220; 0x74072c80; 0x4ce4d321; 0x1e3b6b3b; 0x11b7cbe7; 0x00b58f25; 0x1fe92642; 0x5d88b299; 0x74804042; 0x6e6294c3; 0x213a7157; 0x49868796; 0x1c00e2ff; 0x4ab648ca; 0x5255d948; 0x10e59486; 0x3c62c097; 0x1e38337a; 0x432a7712; 0x749e9f34; 0x286ee75f; 0x491070cb; 0x547702e5; 0x4f087ec0; 0x7512c0e1; 0x6a74ebc1; 0x3850161e; 0x40ef2da9; 0x4d415d52; 0x49260f3d; 0x36c63884; 0x0c9965d7; 0x00d4cea3; 0x575c11b7; 0x38b779be; 0x6cb263e4; 0x25aed54a; 0x3cca9230; 0x0f394190; 0x38a43bb4; 0x3a7df307; 0x2f75f3c8; 0x4535cd1a; 0x263373e3; 0x087c86f4; 0x4e6fc23a; 0x7615bdef; 0x7aba8e43; 0x39ab54d3; 0x78938889; 0x0c8994eb; 0x161d551e; 0x1feb13cb; 0x6fa7235e; 0x7842e8dc; 0x5be265fb; 0x3dc1bbd8; 0x2b42dd8b; 0x035c2fa0; 0x6c5bfd71; 0x6fb03d70; 0x5997ffb2; 0x22799227; 0x549eea90; 0x63ad4ef2; 0x4e193331; 0x2048283b; 0x0a0f9bc2; 0x40333317; 0x6c2d81e9; 0x38086dfb; 0x00b4f714; 0x576d2546; 0x53e24182; 0x081f2198; 0x53454457; 0x348b6001; 0x34da3a3d; 0x437b3e05; 0x3cc656f2; 0x4824b0b7; 0x4f82fef9; 0x7774a615; 0x59f42d36; 0x1e874dff; 0x75923161; 0x3d4d19cd; 0x1fdd6839; 0x2d85417c; 0x0668f243; 0x66943d31; 0x2f6893a1; 0x66d4a308; 0x4809c375; 0x1dddb6aa; 0x11283c04; 0x5f3f4031; 0x25946ece; 0x610345ee; 0x46571018; 0x4af0b0ab; 0x2a4656cb; 0x6a0ed0aa; 0x3ca5d22c; 0x05fa722c; 0x08687b89; 0x1deb2bc8; 0x2cbcbb12; 0x32ea36c9; 0x335aa1cb; 0x4d432e3c; 0x58590325; 0x6528ba15; 0x7a8502d7; 0x5eddf67f; 0x05c7f2f9; 0x55c44f6e; 0x60eff105; 0x4e653ddf; 0x52443246; 0x6d6c2302; 0x1d407d23; 0x385bb9f5; 0x76bb9251; 0x467748a6; 0x4f7598b9; 0x03951874; 0x1ce29e87; 0x29f981be; 0x656475e8; 0x77e577bc; 0x38b592d4; 0x64bc9138; 0x1ce0e8cc; 0x5cc0dee4; 0x7bed28df; 0x7d4b833e; 0x372538eb; 0x54f9ab5b; 0x60219684; 0x5edd67dd; 0x4152a814; 0x2a17dab3; 0x795c87e1; 0x0318f771; 0x69212f49; 0x5ffc8f3c; 0x31b6efac; 0x0ddc5b0e; 0x59f2e97e; 0x77e19587; 0x702388ad; 0x0fd80d57; 0x56481a14; 0x24798f46; 0x0e7cddcb; 0x7f5e87d5; 0x6b7f8044; 0x720a8827; 0x5dce12a9; 0x37b27ab3; 0x3f85d2fd; 0x35bd5f1b; 0x28f31600; 0x6926167d; 0x0c92a104; 0x79d44637; 0x40b00545; 0x364d1499; 0x4f973b47; 0x2707a4a9; 0x0fffef9d; 0x62e9f1b0; 0x1ccdb9a7; 0x0b269175; 0x41988ee1; 0x6b019c43; 0x7c6a7660; 0x7fe50937; 0x2cf76d4f; 0x48a41b5b; 0x675ab10c; 0x3269e641; 0x508df653; 0x25400cba; 0x01ae510d; 0x2abd4152; 0x7d5a624d; 0x18216fbb; 0x0404a3a4; 0x202d1f84; 0x257531b7; 0x4358f8ee; 0x07cbca2c; 0x25d14f6d; 0x52eb267e; 0x20dc0c7c; 0x188d0058; 0x415d8702; 0x30ad0167; 0x6fd805b2; 0x24efd4c4; 0x55d804a6; 0x63e75f27; 0x6f76851d; 0x1b04ff6c; 0x2914369a; 0x26854920; 0x0d382bf2; 0x384f3fa6; 0x3a6e77b8; 0x5c91624d; 0x158280df; 0x18ebf672; 0x67944eaf; 0x473fb56a; 0x4d627d87; 0x2240cf0c; 0x27dfee23; 0x6871444c; 0x4769f7b3; 0x6ac7a64c; 0x4813975a; 0x321345e2; 0x7a654917; 0x00f2af9a; 0x6b7b4c8f; 0x4387212d; 0x29989b35; 0x62a22337; 0x4d91eeae; 0x7457b82c; 0x18f8e953; 0x78517e81; 0x131ae695; 0x48fd27e2; 0x15776b81; 0x02658de4; 0x042c331c; 0x361cf324; 0x5136c5ab; 0x1af02f55; 0x3f782342; 0x22e67f36; 0x2eee0c0b; 0x75d5214b; 0x7497be44; 0x750711a7; 0x43c429e0; 0x66f25e7f; 0x3ab7b867; 0x4bb98074; 0x2110fc81; 0x7e9b9a25; 0x2ccabb7c; 0x3cca79d3; 0x191683b3; 0x681287c5; 0x172312a8; 0x5a8ac1a4; 0x776faa04; 0x75d0373b; 0x2baa1086; 0x3a708f00; 0x677f6df8; 0x19bb4d47; 0x03551e77; 0x004ec921; 0x3e197549; 0x3bbff427; 0x23f33763; 0x02b04e5e; 0x34303c5a; 0x571ecc5e; 0x361ae0cd; 0x579d66fa; 0x3c0f23e5; 0x328119d6; 0x2acd416b; 0x118d3785; 0x34e5f9a9; 0x1e97e844; 0x267728ed; 0x404665fd; 0x4eb07439; 0x3c3e0e3e; 0x47f30741; 0x0c2a8105; 0x5f821242; 0x6a886e36; 0x4b060219; 0x7c033fc5; 0x6d8e88e7; 0x743facfe; 0x1311fb48; 0x4b1d6b5a; 0x61c9e8f9; 0x247acfac; 0x6eebe842; 0x3a50620c; 0x6ba34d82; 0x61d707d9; 0x7a28073c; 0x6f3018bc; 0x125edbf6; 0x600c6170; 0x1fa675df; 0x04052be2; 0x5cfd2fb6; 0x010b46d6; 0x7c6b88af; 0x42c44e47; 0x3239873d; 0x6d55a8e4; 0x68d33f97; 0x59dd1f03; 0x3a1cd62f; 0x71413ee9; 0x0e04b8bc; 0x3fa9de50; 0x1bfb9860; 0x1d320046; 0x0d5c5393; 0x1974b193; 0x20f9789e; 0x58512422; 0x029c6c03; 0x306d2867; 0x6bfa436e; 0x4b8194a3; 0x1f2ea268; 0x30493c41; 0x394ccebc; 0x7f02ebf1; 0x2869c79d; 0x5ba3c913; 0x522f913c; 0x135e0005; 0x317f53c2; 0x10ae0831; 0x2d1fb996; 0x47527af5; 0x73347852; 0x3059f561; 0x736ac6ef; 0x245b55b5; 0x0aa92dca; 0x31468e40; 0x72c505ad; 0x5c75ccf4; 0x6e6a958c; 0x71f6fdcf; 0x19d71bc2; 0x46cd9367; 0x55d27242; 0x00fc95cd; 0x59e4d26f; 0x6e13cda8; 0x7a0b8045; 0x149715b8; 0x1c44d762; 0x5d241a53; 0x35633056; 0x4e6bf0fc; 0x371b31d7; 0x125e4978; 0x2b31a480; 0x2cce79eb; 0x74365b5f; 0x0e61a254; 0x1b7667ff; 0x2e13c5e2; 0x21d18d30; 0x0dca0f44; 0x3c2d4239; 0x72674960; 0x43572e2e; 0x1653b074; 0x67cd9cb2; 0x26997999; 0x284ca5a3; 0x45445635; 0x408a0fd7; 0x1182bec5; 0x3908bc9f; 0x654aa774; 0x750525bf; 0x3935d809; 0x16503333; 0x12850179; 0x3bbe8863; 0x0fcff8e9; 0x477ee5a8; 0x57112c2d; 0x7f692857; 0x5dd1fec4; 0x007535b1; 0x70e5a633; 0x38abdc8f; 0x794b02da; 0x7c4e0ea5; 0x5c162e99; 0x2e6b7e2c; 0x150a36a8; 0x224a1db7; 0x310308fb; 0x758ca33c; 0x28ad8864; 0x5c270857; 0x21451b86; 0x1fc6b1e7; 0x231cd080; 0x40c3518b; 0x6bd07585; 0x274185b2; 0x499f9e12; 0x39c6fedf; 0x67f01bf1; 0x341821c9; 0x405f1855; 0x08f10b1b; 0x5f5f0262; 0x7f14fee8; 0x314b130b; 0x4e87295b; 0x47b49179; 0x2eccaf5c; 0x142aa4cd; 0x44f779b8; 0x09fb922c; 0x05c93179; 0x52efc022; 0x19ef07b2; 0x6de67c68; 0x7c4aa130; 0x75a1c155; 0x0eb4c80a; 0x2c25ae21; 0x18d20df4; 0x3e7935a8; 0x11e9546b; 0x25537b53; 0x737910b3; 0x7f8dae88; 0x6076f39e; 0x28288087; 0x1b678118; 0x7078f694; 0x010aca41; 0x09b15eb2; 0x6a1ca66f; 0x024f8085; 0x6b00405d; 0x7c4f0753; 0x3a111ddf; 0x03dcaa86; 0x3bd5c6e7; 0x6240a6f3; 0x6c69c44e; 0x786c4cbc; 0x7d8c61a8; 0x716b6fe9; 0x51c27d60; 0x2450553a; 0x7e333184; 0x49dd2551; 0x6ba8a2cf; 0x5b486e61; 0x0f3121c0; 0x0cc694fe; 0x7628f6ad; 0x556211d7; 0x3e46d924; 0x6ce479fb; 0x3ca445df; 0x6142a947; 0x6a5a91f3; 0x44a51ebb; 0x33c35391; 0x4d8175a3; 0x2fbb5cd2; 0x60ddf645; 0x060a9171; 0x59ec5f80; 0x0b3b392f; 0x134dba9d; 0x342f281f; 0x4c535e20; 0x26f41f77; 0x477a4d16; 0x5a5b9810; 0x20ae0d21; 0x7e0ccb41; 0x535de6db; 0x7ab3e2eb; 0x13b8c347; 0x5175a15c; 0x57538688; 0x0a25008a; 0x009ee4de; 0x4e2d4aa4; 0x2a159a8d; 0x3ab4eee7; 0x791419cc; 0x1072bc3e; 0x4f1b9e62; 0x41dd7ae2; 0x44f993fb; 0x12ff1efe; 0x3c4afe27; 0x767576da; 0x1c176ee5; 0x7d310e21; 0x61415445; 0x6e37b73d; 0x2482517f; 0x15868c3e; 0x04daf8ab; 0x7ca27925; 0x39536577; 0x46185d24; 0x5a114757; 0x530a511f; 0x274130fd; 0x145e22f1; 0x258655cf; 0x7023c88b; 0x6ffba3f5; 0x3118f256; 0x75ee4160; 0x6e985e61; 0x6729cdf7; 0x62294668; 0x6e38abde; 0x3f47f6f0; 0x44bb2221; 0x050e166e; 0x7c1deea5; 0x5e8e9293; 0x03ab5438; 0x05e99c3f; 0x27dc38c6; 0x69217abd; 0x67c6c5d0; 0x306eeba1; 0x151f12e9; 0x10fdc3a9; 0x43001a1e; 0x403cb6a0; 0x1c759bae; 0x739ff519; 0x18a2a2c0; 0x77b62a26; 0x101dc187; 0x7259aa8a; 0x053f6d7d; 0x75cdf6d0; 0x34954961; 0x43c53d1e; 0x2f19d30b; 0x31cb4386; 0x448c7574; 0x2b7d8cda; 0x43b17ae2; 0x6ed3a3e3; 0x662006ac; 0x048c5a87; 0x50f77cd3; 0x59adf484; 0x04b82a8e; 0x0601786a; 0x69a80da7; 0x030b1305; 0x7f224b91; 0x554d6561; 0x0872fb31; 0x32439cab; 0x6cfca818; 0x7e2e85d1; 0x1e237db8; 0x6b6eab85; 0x2c03a9a2; 0x056ce66f; 0x15ec2004; 0x4c6334cf; 0x4fb34228; 0x2816a584; 0x0e4adfba; 0x470dce06; 0x74cc8552; 0x78634d90; 0x672ac1f9; 0x2646f8e7; 0x7487b232; 0x3d72f037; 0x7798df83; 0x0068ccb4; 0x7867cb0f; 0x70ee0e84; 0x535d3313; 0x2fef1f7f; 0x597c7553; 0x627aa78a; 0x1fcaf9d8; 0x20d1eef7; 0x5f21e7db; 0x57bed229; 0x453c3383; 0x6c182950; 0x1ba95018; 0x49446cad; 0x6d2ef17b; 0x0b839ab0; 0x635f584e; 0x4aec70e7; 0x172f3e69; 0x01c62d6a; 0x4ff4cdfb; 0x4481cadf; 0x265880c9; 0x63ea1aec; 0x17c9d8a3; 0x33901052; 0x4a2720fe; 0x286cae78; 0x2c5b6d69; 0x4650f75e; 0x10205a46; 0x1f20ce1e; 0x649a139c; 0x74f7c9a0; 0x407ededf; 0x12cc23a0; 0x59d3c025; 0x64f49735; 0x456d56c9; 0x1baefcaa; 0x188edc9b; 0x360aecc1; 0x722232bd; 0x367882d2; 0x32e35078; 0x2e469dfc; 0x05401320; 0x4c524d2d; 0x5d0ae680; 0x75e7503b; 0x29cc2d30; 0x1e71f7ee; 0x25549c64; 0x4bf6eed3; 0x17ae6dfe; 0x73022635; 0x0efccb06; 0x50b87ac7; 0x3c46da68; 0x55b2ef85; 0x7d33dc30; 0x650d6431; 0x3daea8ad; 0x5b447185; 0x447d03e9; 0x657385e1; 0x6d8a45da; 0x49f595be; 0x78cd8b86; 0x706abf47; 0x71451883; 0x7fc7794e; 0x391f364e; 0x0a0bbe4f; 0x6eca65ec; 0x6963fabd; 0x6ce7b44a; 0x76c4c01d; 0x6584f0d2; 0x4c216813; 0x08f2e72f; 0x1ad03236; 0x1f77adce; 0x1a6922cf; 0x59f39dca; 0x393e7956; 0x06331fa7; 0x4e77374a; 0x15519851; 0x12d3f1e0; 0x351f674a; 0x44cf4d16; 0x4ef3af8e; 0x7d011e33; 0x01db9e9c; 0x567f44c1; 0x1a8b8075; 0x4f73fad5; 0x13d57e07; 0x3ae94922; 0x710a944a; 0x6813cd59; 0x1ffc0cfd; 0x5fb9230f; 0x7999c2b5; 0x78c3cfdc; 0x784c7b75; 0x025f4b50; 0x62df5793; 0x578bdead; 0x39e87c28; 0x1fdf4ccc; 0x44cd69e9; 0x105fd1ca; 0x019f50c2; 0x60eadeb4; 0x5bf3b694; 0x4eacf638; 0x70c4f46e; 0x733e5315; 0x29ecb4b4; 0x4d876f1b; 0x57846793; 0x402a0c6e; 0x6e8c1b7d; 0x4e023932; 0x2013ad66; 0x57427635; 0x77a4dfe3; 0x31f6f215; 0x22e0261b; 0x2b76ccc8; 0x3e7f1ce7; 0x3d4eb95c; 0x1e2c3b97; 0x3693750b; 0x2b516ad7; 0x22618ad3; 0x2007c505; 0x6d2253fb; 0x53e2b3d2; 0x2658f508; 0x14f15526; 0x156961c1; 0x5bd9aef5; 0x17fe663f; 0x13b5801f; 0x2645bb43; 0x5bfc0896; 0x39b3ee37; 0x1882e0ae; 0x5494d6cb; 0x4f231480; 0x4f81b4b4; 0x4c6b8bcc; 0x2a80a5fc; 0x0fc2863c; 0x7d0f5a9a; 0x12d391db; 0x63c62cae; 0x6dcd1abd; 0x56d756d2; 0x5ad69ec7; 0x733316f3; 0x5d174dc0; 0x2b638370; 0x0791a88f; 0x3394a67f; 0x3b25e223; 0x54bfeab0; 0x4eede88b; 0x2e4f18e1; 0x10a0cb69; 0x48bd6474; 0x142dba5c; 0x3c1fb91d; 0x20913df0; 0x4f222a10; 0x7eea83fa; 0x143d9787; 0x234276eb; 0x21943fd8; 0x7afcf61a; 0x37cfc701; 0x0e91d3b8; 0x32bdd0ac; 0x2673b2b1; 0x4f8080aa; 0x5a433931; 0x76272a40; 0x3be388d0; 0x4f138b43; 0x44c8cc46; 0x755e4526; 0x7d9bd3ef; 0x655b571e; 0x4a2701cf; 0x606f42cd; 0x1a9ed0ab; 0x205da39e; 0x79ee468e; 0x42f18e3c; 0x00e6e10a; 0x07594beb; 0x11ae0e7c; 0x6d130ff2; 0x6307d6f5; 0x65192e54; 0x3101acf1; 0x00948478; 0x55d579d3; 0x5c02b3bd; 0x00ddadb1; 0x7402b81f; 0x5d86c02f; 0x61f95db2; 0x68c9131d; 0x225cd412; 0x06ed9363; 0x0d171887; 0x0787ca99; 0x6e4720f4; 0x0b75bc96; 0x2a4c6f55; 0x0b731847; 0x65f47295; 0x697973a6; 0x57d6ed42; 0x44e32a0c; 0x05df6ab1; 0x30ef124a; 0x4cdc50b5; 0x02a7b795; 0x48b89f58; 0x5a1e9b4e; 0x0c1b9f86; 0x4853d297; 0x3b8bc64d; 0x4951ba00; 0x42f16a2e; 0x7d635dee; 0x2f56ada7; 0x30bfd935; 0x575b1150; 0x54b60754; 0x28d04c1e; 0x1d24695b; 0x35684121; 0x19bda0b5; 0x5f0d06fb; 0x3bcc3882; 0x56cf48ba; 0x2d9d19c7; 0x7a8ed977; 0x09804603; 0x21e2f1d6; 0x7e025120; 0x4c067df4; 0x6bf24efb; 0x1dccf27e; 0x1587fded; 0x5520cf64; 0x22248ac8; 0x29e8c1f9; 0x6b201f69; 0x68ddcb5f; 0x35d6efcd; 0x1d8be27a; 0x385f2231; 0x2faabb67; 0x2c15d7b7; 0x1ad06b4c; 0x63ab8f52; 0x58cbcb88; 0x22eddd1b; 0x47c19e57; 0x325caf00; 0x3d838f8a; 0x51798027; 0x24783165; 0x030a63e9; 0x7381a5a8; 0x0da2c319; 0x5152e6fc; 0x2ddc4572; 0x5606b7a4; 0x47957e28; 0x0c28840c; 0x510ba632; 0x6244bc12; 0x5fec5509; 0x6978068c; 0x1f27ba34; 0x7d6bf406; 0x0b479ad0; 0x46d34493; 0x6a7a1924; 0x54e33d90; 0x013a999a; 0x27133934; 0x73d9f31c; 0x2c8ad76a; 0x35dc746a; 0x1bf24116; 0x067e7042; 0x63bad7d5; 0x16261475; 0x04e9e8cd; 0x7779d1d8; 0x6ccc682f; 0x32312028; 0x49c9917d; 0x1d5fd4ad; 0x196391bd; 0x6a38825e; 0x12435a0d; 0x2f975905; 0x48c69a32; 0x22d1d253; 0x369008bd; 0x790bcf13; 0x3257fc0d; 0x0f14e48d; 0x6c80d52b; 0x1a95edb9; 0x4c2d8230; 0x3459618c; 0x78d6d034; 0x6f425b82; 0x2b56daa7; 0x09a4965c; 0x4738e054; 0x55550a95; 0x291e7b11; 0x4a725acb; 0x454bee1e; 0x2ad76572; 0x22f2da13; 0x6a3f6e38; 0x4fd6f0a3; 0x0120446f; 0x0d532e8e; 0x135969d9; 0x30281a2f; 0x1237160a; 0x5fc81d86; 0x4a0efb08; 0x05fcc265; 0x0c71fc77; 0x023020ef; 0x5fbcd58e; 0x500b9501; 0x46fb6317; 0x505b51bf; 0x70ebc1a3; 0x3cb9a5ef; 0x4bd3e511; 0x284c87da; 0x5d531a40; 0x220d9231; 0x0c7c857f; 0x5733fad1; 0x2666f33d; 0x6ea64545; 0x66ab684f; 0x5873e7d6; 0x2f2d3add; 0x381525f7; 0x41d24c04; 0x651173af; 0x5eba481c; 0x314ec749; 0x772b3c71; 0x6ed78a03; 0x79a7fb37; 0x2032d4db; 0x511ce7c4; 0x363cef9e; 0x468b7aac; 0x4751c0bf; 0x3fb2fcbf; 0x796da3c1; 0x217c1296; 0x45f87b04; 0x25200f29; 0x0895d813; 0x603f6086; 0x099f1ac6; 0x49b93693; 0x10bcd12c; 0x38ea11fc; 0x67ec30f5; 0x17b565dd; 0x42b7fad8; 0x491f6d36; 0x180d96da; 0x2d5a8222; 0x704f3401; 0x2f288917; 0x53eb82f1; 0x0a5fecfe; 0x63d03f7f; 0x0fe07be5; 0x4af8cbc2; 0x1f2394fb; 0x0b618adf; 0x6f5559f4; 0x18f1e44d; 0x681a4a47; 0x431a3316; 0x2baf39c7; 0x27c23482; 0x5db9f995; 0x42156bb3; 0x7866ac03; 0x01c3bfbc; 0x350a2a67; 0x1c5bfdbb; 0x292a5700; 0x3e33186c; 0x1d33af1f; 0x7308e9b4; 0x765c61bc; 0x409e8f89; 0x14748453; 0x30e52509; 0x3f51a9be; 0x7501b7ee; 0x04e762f9; 0x7e495118; 0x1463777a; 0x059500d6; 0x775552b0; 0x02673caf; 0x754212a5; 0x78c34c06; 0x2121677b; 0x49438d47; 0x5087b578; 0x5bb7a20b; 0x2144ec27; 0x5aa22c1c; 0x54b84604; 0x15619666; 0x5ff5ca94; 0x41b9f45a; 0x0034ddea; 0x5625be11; 0x7bcd62df; 0x0d16cbea; 0x58ef30f6; 0x09fe0412; 0x0361b627; 0x1a7cf130; 0x649fa3b0; 0x0f7e0c6a; 0x5e0e4e10; 0x381cdd37; 0x64014603; 0x540960ac; 0x1c38ff5c; 0x5bd27172; 0x7c0857b9; 0x34eeeb9e; 0x6d0b4699; 0x52d6e86d; 0x64128c00; 0x7bda7fe1; 0x7bb8e215; 0x4d957340; 0x02acee12; 0x1884de8c; 0x5e6385ca; 0x334a34f7; 0x5795a7e4; 0x214be206; 0x34600bed; 0x7c8c9411; 0x168aa5eb; 0x76e1f81e; 0x0a6e7e9c; 0x7f404bda; 0x7c204266; 0x5aa70690; 0x3521e8fd; 0x7b7132ba; 0x030f3c8f; 0x4586a9cf; 0x18a8c511; 0x24ed1ba8; 0x0c5c200f; 0x1a3006f9; 0x7bb6fa5a; 0x7acc15e5; 0x474e25a5; 0x39c79608; 0x16991d13; 0x0eb92dac; 0x4d4ebb78; 0x35ae0456; 0x1471045b; 0x5d973841; 0x67ac9171; 0x56fb51a7; 0x51a11e37; 0x117061a3; 0x067ccf09; 0x4b7ba5ec; 0x528b86c7; 0x40ded105; 0x5f72760f; 0x434e403c; 0x3af87594; 0x448e23e6; 0x3b691e33; 0x10494bc0; 0x4733491c; 0x646d878f; 0x362ff651; 0x1fc40f74; 0x19daf33a; 0x47d8d4f4; 0x6e6f00fb; 0x6b8a3dd5; 0x6eaee4b4; 0x5109c559; 0x28d105b7; 0x1afec99f; 0x2c9b84f7; 0x3f114f1c; 0x0b87f72b; 0x2e14e12a; 0x6354cbdf; 0x4ec38c70; 0x63f08c96; 0x6cb346ca; 0x2432d028; 0x5df0d457; 0x4b76cc7d; 0x3e38be0d; 0x70c5a954; 0x41550208; 0x680feb64; 0x2a82acc4; 0x7a9c85b7; 0x3324aff5; 0x5e141d55; 0x70be8c9e; 0x68a30356; 0x5df89b7c; 0x3df6dfc3; 0x30f35754; 0x1f1fa925; 0x2207fd1d; 0x47effb71; 0x108d3839; 0x7941b7a1; 0x302dc574; 0x05fef5a9; 0x4c342ec0; 0x04b0ce4c; 0x1309c9fd; 0x3f8e0c2f; 0x79855054; 0x0eb3a21a; 0x684cd809; 0x290398b8; 0x3aa026c2; 0x17273476; 0x6fdf8b6b; 0x30ef722f; 0x75eb6763; 0x0f8d430a; 0x39e14076; 0x652471fb; 0x0a45dcd1; 0x25e16b8e; 0x2fc8fdd6; 0x4826f750; 0x6dc16eff; 0x67f3a5dd; 0x02ac5740; 0x7da61a61; 0x5fe9533b; 0x7e8c58e3; 0x797f3b58; 0x0ea20699; 0x542e4c2a; 0x53e75ba3; 0x2ec97866; 0x3ac1ff3b; 0x22bfc07a; 0x45e73674; 0x0144065b; 0x3c0ec76e; 0x78050acc; 0x47ecdb57; 0x1afeac12; 0x1542a90e; 0x26489bec; 0x30a168c6; 0x222c2688; 0x72431f1f; 0x70c2d21c; 0x1e46a56b; 0x30869b17; 0x59de0a06; 0x40f9d6b7; 0x7b32d7e6; 0x444bc254; 0x64a5069b; 0x799c4b5b; 0x3ca9163c; 0x3ef776dd; 0x62602e70; 0x00002679; 0x75569eed; 0x5b5f3f82; 0x5882a453; 0x39c48214; 0x46525ef5; 0x657190e7; 0x5c948948; 0x749043c6; 0x06d4db2d; 0x2d1e29f9; 0x1f1b323b; 0x0da6d6a9; 0x37639739; 0x1fc814b9; 0x379ff0ec; 0x3c5f9476; 0x1a5df0f1; 0x408a3f01; 0x2553af76; 0x6c18addd; 0x2fd2d4d2; 0x14b1b50c; 0x1687dd88; 0x4a84da93; 0x2e83ab3c; 0x0b6ac942; 0x3ae9ecc6; 0x266c8b7d; 0x756dd3d8; 0x4447e9f8; 0x62e25f8d; 0x0560a63f; 0x265c4749; 0x4e87260b; 0x3a0a430f; 0x60671370; 0x4ff46bfa; 0x3372c0f0; 0x651f9d22; 0x7b1faf54; 0x76fcf0eb; 0x139847ac; 0x2a8e7a31; 0x4fddde40; 0x2856cea6; 0x265b76ff; 0x469fd6fb; 0x44d9c077; 0x3e2d4256; 0x4733d4b0; 0x73d632ae; 0x36e9999a; 0x5d9a4f8f; 0x21658e39; 0x2db4d86e; 0x767eec80; 0x6c36bfc7; 0x0dda4d1c; 0x6dda33ee; 0x1b9261cd; 0x2f3a7795; 0x74d56676; 0x5184ef61; 0x5b25905d; 0x465b1aed; 0x3e766f73; 0x36b30a0d; 0x45cc8798; 0x16d0ce43; 0x07286758; 0x3a59862c; 0x31d00cd7; 0x17d42673; 0x19bf81d3; 0x6385dc15; 0x7e703d90; 0x0db0c974; 0x63203505; 0x1594160f; 0x029d1854; 0x0f0f9299; 0x3052e271; 0x6a7ffaf6; 0x7e91fa69; 0x5f31bed4; 0x33682c5e; 0x44514cd0; 0x551e7aeb; 0x5bdb597a; 0x748b7da5; 0x7e7e077c; 0x47c06929; 0x353e16b1; 0x3f2c2468; 0x5284cf94; 0x4f480e32; 0x4dffb244; 0x58066686; 0x7097fcba; 0x09727855; 0x5a8a74c4; 0x2c83cf3f; 0x7693ffa4; 0x26691300; 0x12b882a7; 0x25530d92; 0x4623e215; 0x691fbcb9; 0x2d8e824c; 0x2b895d52; 0x33de6ca4; 0x616cae4e; 0x22ae8643; 0x4053ac72; 0x5b01b5e7; 0x1300cd17; 0x408fc301; 0x1f5e5442; 0x4a5dc893; 0x21434107; 0x245ae089; 0x60d679b5; 0x0d292a41; 0x25480806; 0x220fdab4; 0x048af2c0; 0x1f8032d5; 0x268ff019; 0x09e38d40; 0x40a5a290; 0x21708e87; 0x63da1685; 0x0ac301cc; 0x69d8796b; 0x6f1c97f8; 0x3c27dca5; 0x05e0a2b8; 0x3ade7473; 0x0422f0ef; 0x31a7d37d; 0x5e830407; 0x4099d01e; 0x68fb3ad8; 0x216adf5e; 0x6849c8a2; 0x3a1707ac; 0x30e592e4; 0x6f20f9a2; 0x7f853add; 0x58d4c511; 0x74efa634; 0x373e29b8; 0x69ef5143; 0x26fe16db; 0x6ca91698; 0x347e987b; 0x2671f037; 0x67257324; 0x2da0d813; 0x17f9fa3d; 0x32b624ef; 0x5252c26c; 0x7c30d021; 0x5cf6d6ae; 0x0bfc4352; 0x6ecffa4e; 0x7d400015; 0x347f286d; 0x4a0474d5; 0x2072a8f8; 0x2e79e95e; 0x2e60bdda; 0x6961cf7e; 0x280c9b95; 0x0305a4d3; 0x31dc74bd; 0x1b20088e; 0x1b2c8594; 0x7911a714; 0x273c3c43; 0x11848cd6; 0x6d71419e; 0x1d3983a6; 0x2ec1d7c6; 0x28cda532; 0x1d86d12f; 0x776f0e1a; 0x79c4452d; 0x0a594f60; 0x04791d6a; 0x333f7931; 0x19b9ff9d; 0x2a57184b; 0x16af5b6d; 0x3fc82d59; 0x01e272ce; 0x01257672; 0x3e9478ff; 0x26829a13; 0x3bcf5f33; 0x58b5d676; 0x074d58aa; 0x5adfa131; 0x239c1681; 0x632d597e; 0x78f7d7ec; 0x7d9a7d3f; 0x711e4c48; 0x40f30a20; 0x16822483; 0x0d118aa6; 0x083185a8; 0x50ada604; 0x2007523a; 0x72c56a6c; 0x130748ae; 0x53df84b1; 0x12b55f26; 0x11023f87; 0x371a92b8; 0x6d631b98; 0x11ef6e51; 0x42964e17; 0x0e22ee39; 0x50de6086; 0x7d57e4dd; 0x2a410f1f; 0x2b086094; 0x35a442d9; 0x1a964adf; 0x44508c96; 0x6d921dfe; 0x57ebbdd1; 0x07237a84; 0x5826b164; 0x658bd900; 0x5f834ca7; 0x2274d894; 0x6f86aa44; 0x3b11adb5; 0x2cfb27fb; 0x56ffaa50; 0x4b4ca939; 0x42a7622f; 0x59c04842; 0x7b0b42d1; 0x65c4f25b; 0x297d8a84; 0x45cbcada; 0x69ac322f; 0x598837fd; 0x41817c20; 0x3b6e3329; 0x3b85f393; 0x15c6ff93; 0x679cc80a; 0x18f01b71; 0x77567276; 0x785b2bdd; 0x7c406f95; 0x48fcf9bb; 0x71c2da2d; 0x3c58dc4f; 0x217c93bb; 0x41113a1f; 0x5ce74b9b; 0x57df20ed; 0x5d265d55; 0x5e8dc8ba; 0x1392c19e; 0x1ed4290b; 0x6c3126f5; 0x180e41ca; 0x7cd48e32; 0x08121bc5; 0x6e930d2e; 0x5743e0bf; 0x0822b61c; 0x54a6c82a; 0x2cc41a2b; 0x1a5ab09c; 0x410f6118; 0x32cac84c; 0x1b740c70; 0x241e3ad7; 0x1b31e477; 0x0c9841ea; 0x73c21a51; 0x1c1a618c; 0x5478b0d6; 0x31a6a65c; 0x6d0b7b39; 0x2f73b1b9; 0x2ddafe6b; 0x2245b5c4; 0x7ae15b42; 0x5731641b; 0x569a1be5; 0x56c6a297; 0x57512a57; 0x1d8b40ff; 0x11cbd5c3; 0x29736a8d; 0x37bf91b2; 0x7eb93c76; 0x047bda38; 0x24535c0b; 0x6b6a067a; 0x5f5e4d39; 0x6a5429d7; 0x0df1c0f7; 0x78efc153; 0x1f7f1964; 0x0d51cad3; 0x0d734b26; 0x431077a3; 0x49a72bf0; 0x21070b95; 0x147665a5; 0x643ce158; 0x51757bd7; 0x33ebd27b; 0x0c921d18; 0x3537839c; 0x0bb4d843; 0x181f31e9; 0x602ebd21; 0x41748069; 0x33d4c4e6; 0x47358ca8; 0x72d4cb6b; 0x4ec0df43; 0x646073d8; 0x694f4eb9; 0x50368fcf; 0x5b700654; 0x21e80f55; 0x11f426f3; 0x40432412; 0x762b3724; 0x2160aea0; 0x5c7fc768; 0x70e6bb52; 0x45dab133; 0x7f8f0890; 0x37205690; 0x4b193e9f; 0x1633466d; 0x098481c1; 0x53dd0b0b; 0x07dea63f; 0x6d74cb9b; 0x4ceb70d3; 0x2bbddc09; 0x1782bef2; 0x0ad6d41a; 0x035cd567; 0x11ba1685; 0x4d73a9c6; 0x7842ed43; 0x36e2e83e; 0x32ca3aa5; 0x0c89fd71; 0x61bdc8ad; 0x02f008fe; 0x5a6ff452; 0x3efab8a9; 0x3907f9e9; 0x4e97ed88; 0x62a794b6; 0x2f480163; 0x29d15968; 0x1dad0fea; 0x5d8cfb48; 0x42ff1c75; 0x13a0521b; 0x6754a0e8; 0x2aff406a; 0x50fea2b8; 0x2e36c504; 0x3c4d85de; 0x0964b7d5; 0x5ccf49b5; 0x1af19321; 0x63707df0; 0x70cf185c; 0x50138647; 0x06e8ff90; 0x38961917; 0x6a396953; 0x1cb90193; 0x0cbfe4d7; 0x64dd988f; 0x0736468f; 0x35f84f8e; 0x7983aa23; 0x545740b1; 0x74237836; 0x76893adb; 0x3e50fe38; 0x6a3d937b; 0x6df4c840; 0x75ddd9dd; 0x6dc91b59; 0x7e47c42d; 0x6f2d19fe; 0x7cf7fc32; 0x75185c96; 0x3e797881; 0x34f07631; 0x13bcd484; 0x4569ddf1; 0x74090c7d; 0x29365247; 0x25c371eb; 0x44137e5b; 0x6cc51415; 0x30762aef; 0x28f11954; 0x59d07259; 0x4a57d71d; 0x6a9896b9; 0x4dc11e4d; 0x7a7e9207; 0x0fe6ad68; 0x291203a1; 0x5d398557; 0x7e8b5a9d; 0x3ffa702a; 0x6ca0c886; 0x7530b7f1; 0x6e9f6e0f; 0x6c1749fe; 0x790f3ceb; 0x009f2d67; 0x1cf629f9; 0x19ae6ba7; 0x3407671b; 0x5b885f40; 0x0f55601e; 0x31080ba0; 0x71b7b0fa; 0x3e5f9391; 0x3467665c; 0x6dbc7f38; 0x702046e9; 0x767da59f; 0x18eb9679; 0x0c3621d7; 0x2380e54f; 0x7bfe5b04; 0x020dbba0; 0x550c7a2a; 0x43e7b76b; 0x7f44d8c6; 0x3c526d50; 0x453211d6; 0x361aaaa0; 0x129b23a8; 0x1bd63dbc; 0x6cc63dde; 0x7ab77598; 0x786a95ce; 0x1e23af14; 0x43acad9c; 0x419372ec; 0x25411a86; 0x5465bc2f; 0x20449f6d; 0x7fbd94be; 0x4411cf1f; 0x6dcf55fb; 0x64125ea6; 0x4298c20d; 0x67df4109; 0x2c3ace7c; 0x09d3aad5; 0x023681ec; 0x1de1f9db; 0x69f0633f; 0x54e6ce94; 0x4ca11174; 0x50f72f47; 0x7f1f98fe; 0x2d3e5659; 0x073736ae; 0x42877e3b; 0x2e4e2b89; 0x10b55972; 0x0af55b61; 0x5154e80b; 0x6f6fe9af; 0x70d9bc90; 0x0e6833d1; 0x16de5a20; 0x0a481167; 0x1486e00c; 0x7b0fe5ca; 0x484a133f; 0x65d733a9; 0x4f9e00ac; 0x38c14ecb; 0x6fe29b81; 0x69c5cfa9; 0x763d1873; 0x048ac156; 0x61967c50; 0x779f1454; 0x7b7a663d; 0x5afb565c; 0x596dce7d; 0x22c0c326; 0x3a592474; 0x6f8edcdb; 0x2bc4d942; 0x5e5ffc10; 0x5442141c; 0x5a0e2c27; 0x1b489c03; 0x2c23e85d; 0x58fa7b86; 0x5f73ad96; 0x02b51704; 0x1327eb6e; 0x59a0061d; 0x118aa361; 0x1b6c6557; 0x15aa565e; 0x2814eb75; 0x5e53caa9; 0x25e2b857; 0x68bf638a; 0x44f61364; 0x5ae8462b; 0x6d48d6d9; 0x6304ace4; 0x3b91c341; 0x2967b9fb; 0x45024c77; 0x604a2270; 0x1c30ff53; 0x2c988d4c; 0x0fea9a0f; 0x4b1fccf7; 0x12bc8dcf; 0x5a1347d9; 0x15bf46df; 0x24d2aa19; 0x473c3632; 0x19c231a0; 0x2be3fbfa; 0x18e8fa6c; 0x1f7712d1; 0x26e4406c; 0x4a600e60; 0x075e839c; 0x37ec6e60; 0x41462304; 0x3c0595b2; 0x327ad663; 0x6be13716; 0x190f81d6; 0x7d1c6b98; 0x72b9f8cd; 0x62c30f13; 0x0b34755b; 0x0fddfe79; 0x3e0cfe7b; 0x25d31d74; 0x1d44012f; 0x16da5de2; 0x5ef01725; 0x7e13ca69; 0x3036ce30; 0x39fdbb34; 0x079678cc; 0x21c30525; 0x65deb91f; 0x26e9be6c; 0x54e20fcc; 0x707829c0; 0x63323bb2; 0x5a1e6a08; 0x2ba16005; 0x16bc9631; 0x7475b468; 0x0407e507; 0x6d24c699; 0x4c33ee1d; 0x62efce79; 0x50a2f4f6; 0x42229e31; 0x3f4c4961; 0x63a6b947; 0x16d7a8c6; 0x0598c085; 0x1d91419c; 0x045b4a53; 0x284108f0; 0x577e69ab; 0x0d649e45; 0x24fae66d; 0x2eadf440; 0x4d5f6417; 0x09e581b7; 0x2f447274; 0x624a0027; 0x41cae7bd; 0x3d06ae77; 0x1ee378a3; 0x268baefb; 0x50035c8d; 0x17ae1c85; 0x15345501; 0x628acabb; 0x1567b406; 0x352917c7; 0x17d4a5a1; 0x05b648b7; 0x4094686f; 0x2edaedaa; 0x0a32db9e; 0x2aa15578; 0x11addd06; 0x1b4e5a94; 0x7a53d077; 0x11748058; 0x530be3f2; 0x10937921; 0x0469562b; 0x7dfa8fb6; 0x426d4252; 0x4c192f20; 0x04f8a476; 0x58fe9b14; 0x77de7a4a; 0x51609341; 0x1e6c74b6; 0x74b38a0d; 0x085381d1; 0x60aac8ef; 0x0971a023; 0x45c5a95c; 0x4da0686a; 0x5e2a4c5a; 0x14daa0a3; 0x4850a830; 0x23a319ce; 0x7c22c3de; 0x524ac220; 0x2f927599; 0x4627750e; 0x5ec5db47; 0x331165ce; 0x3486b1db; 0x65652199; 0x6eebe579; 0x2d56adf6; 0x3b9bd897; 0x7974d142; 0x36b3237f; 0x0cd82758; 0x648d3fe3; 0x5b694c94; 0x50322ec6; 0x700ee6ee; 0x562ec453; 0x671f9758; 0x34e80c7d; 0x116d0859; 0x6a97c18f; 0x054f25a4; 0x0bc2a697; 0x6273ac62; 0x6b0975d7; 0x444f5146; 0x0377f031; 0x418ba915; 0x7f857063; 0x2e93ab13; 0x7e7edbed; 0x7b8a437b; 0x132bbe00; 0x456914b3; 0x1c5f90b9; 0x2359bbe7; 0x5f6278ce; 0x7802792d; 0x2c005dd4; 0x66c23472; 0x73bb8b8e; 0x7cdba979; 0x1cc2485f; 0x5ad0931c; 0x7ad7445d; 0x566e9885; 0x5bb034c5; 0x3c630a22; 0x15548246; 0x17673855; 0x3808bc81; 0x5e73733a; 0x751f927e; 0x112f572a; 0x15932165; 0x6b31c526; 0x2e9ecbac; 0x2e10a087; 0x58f7e3bd; 0x01d382e6; 0x5814e1c9; 0x0a475c17; 0x2f32212f; 0x2f475f4c; 0x3c77f4f9; 0x46cbd248; 0x2c808e7c; 0x36c1e12c; 0x5ece2924; 0x64093cb5; 0x7d6cbe86; 0x5b00438f; 0x6983fbff; 0x00caef98; 0x2feb743f; 0x0d256f38; 0x739cf77d; 0x243aad7d; 0x083e20f7; 0x38f6b019; 0x38ea8331; 0x2dc5b3ec; 0x4d5b0b11; 0x24bf5fbb; 0x46c8dcfc; 0x3ba9c518; 0x1a0f5d9a; 0x1f7648c9; 0x2a6dcdf7; 0x0d829242; 0x60ca6248; 0x155a6a61; 0x43e42fde; 0x2087d99e; 0x38ba550d; 0x7f315e35; 0x6806f767; 0x1f4c30d1; 0x4e1e8560; 0x362da316; 0x0d0acfae; 0x7bce9bf7; 0x20401a21; 0x08303e1e; 0x1bd9a513; 0x64d11aa6; 0x64d0aa3b; 0x67026dc9; 0x61577eb8; 0x35d3d97d; 0x3d4cb88d; 0x54fccb61; 0x1eff9973; 0x2cba2df8; 0x7b843eec; 0x2634a948; 0x394242c6; 0x416edcd1; 0x59650407; 0x4ed1b733; 0x4c9493e8; 0x24959355; 0x4e2bac29; 0x6955df21; 0x3944d044; 0x7cfdfdb2; 0x703ae235; 0x51d67f32; 0x0992f427; 0x4f224846; 0x20cee51c; 0x0570782c; 0x1cc8ff95; 0x5fcb8068; 0x1b6c2a00; 0x736dd8e1; 0x43cc41e3; 0x3b63d6a3; 0x7770f5eb; 0x50afe778; 0x430e4dc6; 0x4668c374; 0x18c760ec; 0x18f22693; 0x58bcf051; 0x74f56e60; 0x63f24409; 0x1d6191f8; 0x040bfe56; 0x131e5dcd; 0x5850edb6; 0x59a92d3b; 0x206885e7; 0x43ca9bd6; 0x095458e6; 0x22a70ac0; 0x74685770; 0x372155d0; 0x40d09db7; 0x4cd36de1; 0x6d77d424; 0x37a5d94c; 0x017b484e; 0x409f8957; 0x7e4c12db; 0x0c57a857; 0x6667b40d; 0x2157f12e; 0x7703635a; 0x34a6829f; 0x1c407140; 0x08033dc8; 0x02f6dabf; 0x6e58c020; 0x0d5378a3; 0x7a911d20; 0x6c0eab72; 0x0aabc581; 0x7224e8d1; 0x2cf6b087; 0x6ffbd3b0; 0x7e50ef20; 0x032cbb53; 0x5653caa8; 0x6cfa9e5f; 0x29bd2155; 0x77c34326; 0x1d012344; 0x46a596b4; 0x513451d5; 0x5e7bb2b1; 0x1ac176a4; 0x6f49d87b; 0x715f8c4d; 0x5b05e61e; 0x7c59a91f; 0x26ed0079; 0x1f4504b9; 0x63e87fab; 0x41fd273f; 0x24c53987; 0x6df889b8; 0x5a683c24; 0x38e503fc; 0x3598f563; 0x5ba4542c; 0x471a740d; 0x676a34d1; 0x56a3b9f5; 0x026dec82; 0x4091a3d7; 0x1f72d34d; 0x589b8169; 0x7e414787; 0x4bdfb8c9; 0x1674fcb9; 0x62427cf2; 0x4beaab4d; 0x7c0a2a01; 0x33d9babe; 0x588a277e; 0x2d398e19; 0x4e54cd78; 0x02f857d9; 0x2afe1811; 0x6a03cb87; 0x58267f5b; 0x613ea973; 0x463dea69; 0x5deeba8b; 0x590a37a4; 0x24d2db78; 0x27310d90; 0x0f98c9ab; 0x48e31f0e; 0x527ee562; 0x253f21c6; 0x76872099; 0x36677eaf; 0x5ebb17f6; 0x4efc3013; 0x4256eaa3; 0x0b2c1a4c; 0x2a8ca51a; 0x1b727c33; 0x55b6288c; 0x3b061e3d; 0x7684f682; 0x30cfb12a; 0x23bef885; 0x67f9aba5; 0x3fde97c4; 0x555511f3; 0x4456819a; 0x43464142; 0x6de69bea; 0x5884ef58; 0x05e4487e; 0x4f7dce1e; 0x0c90dd18; 0x6e62ce60; 0x33a739d6; 0x6036d72f; 0x310cf761; 0x68e624d3; 0x29c6d2e5; 0x4be8b436; 0x625ae1f2; 0x33b93463; 0x61f91336; 0x1801620b; 0x5aaf48bc; 0x3b15d0f5; 0x226f174c; 0x140d7c05; 0x41a55879; 0x112ac22c; 0x0c7aa6cb; 0x266e66df; 0x47effa31; 0x5e442f15; 0x529db1fd; 0x7dbaf5c2; 0x261baabe; 0x6cc00620; 0x0f74584d; 0x56a51315; 0x025b0bcd; 0x436f02b3; 0x70a42f3d; 0x3d7ac7e6; 0x1f28b9ed; 0x08e68d39; 0x01cc0726; 0x43eeab05; 0x35b8068e; 0x0c9b19c9; 0x056a568e; 0x377ccfca; 0x2bab1e05; 0x04ab3472; 0x5699b826; 0x0d94ece0; 0x21d2de4f; 0x6077c505; 0x779b0139; 0x74f0d050; 0x3434d0cb; 0x7d654ea2; 0x76e60e02; 0x41048a1d; 0x0a8a8674; 0x469df399; 0x2b179d6d; 0x5ab96628; 0x7ee5d478; 0x3783a21e; 0x12fda64f; 0x28893262; 0x5dbeacb8; 0x20fc625e; 0x4666a285; 0x0691a6a7; 0x7025e507; 0x130a45ad; 0x3d456ba2; 0x0e511fa0; 0x35d70cd3; 0x46e2dcd8; 0x39db45e7; 0x35d727a1; 0x6e867631; 0x4a08d9d0; 0x0206774c; 0x100c02ce; 0x47a60b29; 0x48becb23; 0x21b599cd; 0x4a22c3a7; 0x4c0b6018; 0x0c83d6d6; 0x4e813962; 0x3d739fcb; 0x41999c64; 0x164ced4b; 0x16d8a84a; 0x4113fbfa; 0x6e4807c7; 0x28c3b3f6; 0x03071d36; 0x5159d26a; 0x087d88a4; 0x25fc1c06; 0x64f922e8; 0x65c519e5; 0x5d8f42fe; 0x16e658ec; 0x3f78b13b; 0x66da2f46; 0x4ee1d53e; 0x4dce69f7; 0x2479bf4f; 0x7af82284; 0x6a2175dd; 0x74a8a7b3; 0x438135f6; 0x0fd53da5; 0x2cf8856b; 0x0d0469a9; 0x31fc6f6c; 0x715a1d09; 0x6055a1eb; 0x10835a34; 0x3740e967; 0x57b353ad; 0x4cd619dd; 0x6b6a3566; 0x6f5a9dfe; 0x77c80a61; 0x2bfdee8b; 0x1816273d; 0x7cd74728; 0x553f44ce; 0x2a0e5ec1; 0x388c2068; 0x319a9a08; 0x0c2af395; 0x2949f75e; 0x41f9e9b6; 0x6063f3cc; 0x7d4ea5af; 0x7861296b; 0x17e0f3cf; 0x66012178; 0x043187bc; 0x5faa653d; 0x33cfc425; 0x53d378ca; 0x2155c31e; 0x712ab327; 0x6192c739; 0x25f491ea; 0x54a3d8b3; 0x55b3d1bf; 0x762c4a3a; 0x75aebb59; 0x416fcfa8; 0x628a446b; 0x0d8457ce; 0x79e603c1; 0x7cc575f0; 0x0a5ce0c5; 0x30b1ccfa; 0x00281d7e; 0x3cd2ed24; 0x7510c64c; 0x0be07209; 0x73526859; 0x65946359; 0x2a546f4f; 0x783a8965; 0x34182cc1; 0x2616b0bc; 0x724ab52d; 0x278dd50a; 0x71694e6f; 0x64f32ea7; 0x28ad21d9; 0x1c53c6ca; 0x6b0ba0a5; 0x2fe03f77; 0x188ac85a; 0x70b05fc0; 0x0046bd3d; 0x7637b718; 0x661f49d3; 0x5b854049; 0x5d3ca349; 0x0a30b188; 0x2fd1462c; 0x1d26f321; 0x5b8b7f1c; 0x45a48eb8; 0x5d86c8a6; 0x538daa6a; 0x2dc370a0; 0x17966abe; 0x45e629ed; 0x413c0ef8; 0x4ca449b9; 0x7d193d45; 0x57244bc4; 0x31094ad3; 0x2582e257; 0x70a5e3fa; 0x18e190e7; 0x57dd2f9b; 0x1c711f1d; 0x7bc6be06; 0x50d1b015; 0x051a7947; 0x06a92cf7; 0x5c2c30ba; 0x2c7a0ff4; 0x5805e415; 0x4510ba6d; 0x5cae9dc3; 0x7a0c0b6c; 0x1741079e; 0x5d49d0ff; 0x6bbc8294; 0x77c2692d; 0x326bf8e2; 0x54d4640e; 0x20012e23; 0x21013814; 0x30fddb5a; 0x75227b06; 0x1c20c1bb; 0x5f9bb584; 0x554ea171; 0x6068384a; 0x2be5bcd2; 0x6971a336; 0x11144076; 0x0170e151; 0x20e24325; 0x74c6e58f; 0x5f393389; 0x745070df; 0x76429400; 0x084a8659; 0x0c211b8b; 0x21faad9b; 0x540869f9; 0x6cbe4cf0; 0x1ba410b0; 0x1f9c752d; 0x2a2c9ac3; 0x579bca4e; 0x1c1877d7; 0x755c2547; 0x7e1ae9f6; 0x288d06e2; 0x41f55262; 0x6c85fae6; 0x2b95dd42; 0x5521b7ff; 0x4bc436c9; 0x4d41a34d; 0x73513ce9; 0x674ff0ca; 0x2a22cde2; 0x5a837b4a; 0x55746f29; 0x0ac4f596; 0x29a81b75; 0x2fb343a1; 0x01ec05be; 0x30c0baab; 0x1078a8b9; 0x54228b2e; 0x7f97ddef; 0x1fa2a455; 0x569e0dd2; 0x0c56fffd; 0x284ca4b9; 0x10103c78; 0x086c6758; 0x30008cb4; 0x47a53b98; 0x6dec2457; 0x48987cf7; 0x4cd2d2c6; 0x1ab87a7b; 0x782fa417; 0x5fb16aba; 0x05219cbe; 0x7d074008; 0x0b2728d9; 0x5285602d; 0x368d3435; 0x2278344c; 0x520ead89; 0x787e2018; 0x45045ce3; 0x0f489fcd; 0x0abf96e8; 0x27935beb; 0x51cef0f2; 0x0bd1573c; 0x73197e33; 0x3f31c0da; 0x31fc8b84; 0x3c4d7941; 0x64dc01ab; 0x187150a0; 0x76ab63a1; 0x78a7c190; 0x377ed885; 0x437d8255; 0x6c39d9d7; 0x7b7edc68; 0x320890ce; 0x03c2a57a; 0x4b4e3a12; 0x7ef496ac; 0x7d1ab3c4; 0x3fa61f8d; 0x1e9b72a3; 0x6c4a5021; 0x3860d04a; 0x51f7e47f; 0x4a0a633a; 0x15aff773; 0x7dba4f85; 0x7db57210; 0x0e37413e; 0x59e776e6; 0x093907f5; 0x175e975c; 0x4105c34c; 0x1fb7280a; 0x3e376f3c; 0x31c02402; 0x5304f8fd; 0x4c43eb12; 0x4b862a30; 0x2fb184c3; 0x06fc43a4; 0x059b463b; 0x5dd9b2c3; 0x0957fe28; 0x4243df3a; 0x382f2a3a; 0x55048d94; 0x0248b7b6; 0x60e21a20; 0x6457da2d; 0x484d9d89; 0x6606cbd0; 0x424e0d53; 0x3a5f3135; 0x6f12ea65; 0x77dbae6f; 0x52f147a4; 0x69ca4b9e; 0x35a4588a; 0x1dbc3d44; 0x15ef5b44; 0x57f2e339; 0x4d4931b7; 0x35cc2530; 0x38df8918; 0x25cd233b; 0x041f0ffc; 0x4cf5974b; 0x101783b8; 0x5de77ed1; 0x0599aff6; 0x69c913c8; 0x66e33f4e; 0x5eaa40bc; 0x2bae8234; 0x752eb641; 0x5b0e4add; 0x2cf6a007; 0x1edab0aa; 0x19d48222; 0x32468cb1; 0x08e6bfe0; 0x3e312826; 0x148f3db6; 0x3b729876; 0x149984e1; 0x71e39578; 0x197c67ed; 0x788b90a5; 0x2d508d8d; 0x4894022d; 0x06b89326; 0x25e8c6aa; 0x16011f3a; 0x1a51adaf; 0x29b38486; 0x3c8dc319; 0x5f370371; 0x62107783; 0x1fac01b5; 0x63b00ca0; 0x27a456dd; 0x514a48ae; 0x5882d384; 0x20715120; 0x78960a00; 0x51b4ee70; 0x72f6ce12; 0x5f11e080; 0x2541e6f1; 0x386663d2; 0x01abfd90; 0x6bf859c3; 0x4268690e; 0x3c21c8cc; 0x3d9204f1; 0x12da0f59; 0x2d50a1cd; 0x5b58291a; 0x1f9bc0c7; 0x0828411d; 0x2622389d; 0x2868b426; 0x112d1d34; 0x1c755f8f; 0x3ebc4805; 0x425a40e7; 0x1520c6dd; 0x38253512; 0x4986bf19; 0x61fd9d93; 0x4a91d7dd; 0x7e16c383; 0x61f6628a; 0x306e5fcc; 0x5c16d47c; 0x35384a14; 0x674e5bc2; 0x7bb151ba; 0x74517816; 0x65b99a87; 0x59c9f9a2; 0x5e6cc4cc; 0x1125a977; 0x141614fd; 0x185c71d4; 0x3cfbc510; 0x131ab579; 0x42d065bb; 0x58adedf1; 0x50615afd; 0x07a897a6; 0x3d2fb856; 0x25a1d19e; 0x6513d354; 0x10272655; 0x148be972; 0x2462df8b; 0x2313aaaa; 0x65df0efa; 0x0a231d35; 0x040bebb9; 0x5643531d; 0x40eaecc9; 0x383a4be5; 0x4eef678c; 0x7386d9bd; 0x249bee6c; 0x07fbccea; 0x3c649e71; 0x30dba936; 0x1a4e90b2; 0x3044b430; 0x66e80661; 0x25c329ac; 0x2d1ad481; 0x55aa6fbe; 0x37393436; 0x1d50e1b4; 0x5cc71611; 0x5d45e90b; 0x506fb608; 0x5b0750f2; 0x16e7da1f; 0x0e8d9bc1; 0x40c75f39; 0x00c42217; 0x65b81d97; 0x26fe162a; 0x10c42d49; 0x68961a29; 0x0b216608; 0x19516141; 0x7391975a; 0x07b0171b; 0x2270be0d; 0x4b56607d; 0x17abf6f4; 0x1d97d1f0; 0x094c7fdd; 0x2ad353a9; 0x11fa9c5e; 0x2f139267; 0x54bbe872; 0x2812c620; 0x57f580dd; 0x1acda829; 0x21e4f841; 0x054a7560; 0x4b6a5f58; 0x435f35d1; 0x7e70d241; 0x6bbca614; 0x2d7350bf; 0x2f8247ae; 0x5157f368; 0x0980275c; 0x381edf48; 0x00b7628b; 0x7f2244a7; 0x699cb3f2; 0x64bcc872; 0x407ab854; 0x1f2d337e; 0x79774b1c; 0x5b87738e; 0x1123e837; 0x2c549098; 0x1a7c30eb; 0x71033aa1; 0x7d90682e; 0x3e18a139; 0x17021dae; 0x7a4e00ee; 0x5dc05e30; 0x5b48d748; 0x1cba2635; 0x01b2bd26; 0x19f8b8b8; 0x074d8011; 0x44001ee4; 0x45635de4; 0x6adfab30; 0x2922110e; 0x0ce0e413; 0x7c5998b3; 0x49bc2d7e; 0x5e0c8700; 0x6c098f4b; 0x1a1f9f53; 0x0faa6ca2; 0x72bf68d6; 0x7a0b7a4e; 0x12810ff8; 0x18d2e8f5; 0x67c0882f; 0x35283420; 0x77562a4c; 0x4a70b6d7; 0x4171b839; 0x31ff85b8; 0x0244cf49; 0x0ca100ec; 0x18bb92b5; 0x16f8269e; 0x705a4c37; 0x034f02b1; 0x35eea06c; 0x2fa25dda; 0x49e05f6d; 0x2bcf7b1c; 0x7cd1c0b7; 0x75df237e; 0x5499aaeb; 0x361679c8; 0x0b820950; 0x25532980; 0x5be64b4a; 0x0df2ed58; 0x0776de7e; 0x120ab856; 0x262fd585; 0x079fcb96; 0x20515a07; 0x222e6b0a; 0x4a326a89; 0x17726911; 0x7740772c; 0x4d43e0ae; 0x1062c95f; 0x4c288603; 0x04e751be; 0x220cb789; 0x019e67d8; 0x0a4ae8e8; 0x4eabdfe8; 0x779a7125; 0x0abcba52; 0x4f1636ff; 0x180189ac; 0x7aa37c64; 0x5b6d34e0; 0x17662f15; 0x0014bd21; 0x0c2bf0d5; 0x1cdb9601; 0x60111e36; 0x49d5ef9b; 0x2ce1457a; 0x4dbd1236; 0x40dd7c03; 0x10d6ff53; 0x01f9e14b; 0x6359ecc2; 0x551b5368; 0x4ad84239; 0x6b15d7e7; 0x2384a1e9; 0x03af4e12; 0x51a36df0; 0x5c012bf2; 0x789c09cc; 0x5706b0a3; 0x2b24f048; 0x389b6ea4; 0x309619de; 0x550efe13; 0x17533d00; 0x1d7c3705; 0x0e44fcc3; 0x5d654e4f; 0x3b4f55e0; 0x4e86ee08; 0x64ed41e9; 0x588f125d; 0x4fee7f8c; 0x6748d08c; 0x733e7edc; 0x01c5131c; 0x494cf6c7; 0x45d3c79d; 0x70c43d4e; 0x775355ed; 0x2ac71136; 0x171986d8; 0x5f83c03b; 0x76f07660; 0x511ef21d; 0x53083afb; 0x6a2485eb; 0x63a1826a; 0x45a58842; 0x2c0e6a52; 0x639a1f57; 0x3937ed98; 0x1915b44f; 0x1a18140b; 0x73937457; 0x3407de32; 0x26b5f0e0; 0x1955df62; 0x7fec7c58; 0x0465e209; 0x36bd0139; 0x7eea79aa; 0x308a8d4f; 0x7d1a4ff8; 0x49dc3f71; 0x1a637f96; 0x1106bd39; 0x093427bf; 0x13c5df63; 0x40d8c0ea; 0x6901d06c; 0x7b3c8faf; 0x19c57b04; 0x31f722d1; 0x28906d5e; 0x5fcacd4f; 0x7220d1c2; 0x7ca1e5f3; 0x3e357efd; 0x26b5ab7d; 0x776fa67f; 0x593e89d4; 0x60c55d19; 0x25a537f6; 0x4d212343; 0x37d958a2; 0x355b5b7e; 0x7c8168c5; 0x4a40a28b; 0x64892e03; 0x5dbfa9f9; 0x4462be59; 0x1c280fd4; 0x35ca1b1d; 0x428c16ed; 0x412b0065; 0x1b1d023c; 0x04f57182; 0x24c3532c; 0x057bc43d; 0x01b789f3; 0x1091e70b; 0x62d54cd8; 0x3ff7b86a; 0x7b7536fe; 0x584b7537; 0x1706075b; 0x6b472e5b; 0x21479a34; 0x487d73b3; 0x125d559a; 0x31fd960e; 0x210bc42a; 0x53736956; 0x506a54b6; 0x6166fbab; 0x5f4ef625; 0x144cc0b6; 0x0dd8080a; 0x61f2463c; 0x5e55d215; 0x649a4ae9; 0x389715e9; 0x5b4de964; 0x75512f7b; 0x57640cf1; 0x3aaf0948; 0x715e4549; 0x6b894fb4; 0x22073a23; 0x1e6e840a; 0x5168de1f; 0x084873a6; 0x42b90605; 0x5e9a0e41; 0x71d0f075; 0x6fa752d4; 0x56497365; 0x5bc57ff8; 0x2e061440; 0x454831da; 0x6b261bad; 0x4ea3796c; 0x1e67a05e; 0x2002265d; 0x12d8a4b9; 0x401251f5; 0x447f2086; 0x2adc1357; 0x71b39152; 0x48575c94; 0x4dd14f36; 0x0f96f549; 0x77db980e; 0x352f423f; 0x7f0ed38a; 0x0fddf56b; 0x7be6cf92; 0x41eab5b6; 0x57dfdd78; 0x6a5f34cf; 0x39c054b2; 0x7e2a627c; 0x7bb4839b; 0x2b1f4fd3; 0x1e3d0271; 0x2d650bfe; 0x4d8f43e5; 0x6ff5dc13; 0x3e3fa0b2; 0x2140b2d3; 0x516da92e; 0x43fb1d3c; 0x5b94011c; 0x153902f3; 0x2162c3d6; 0x712f52b5; 0x6eaecfb7; 0x59429c40; 0x5ddd6681; 0x626685c5; 0x5dd22826; 0x4b2dc96a; 0x0438a69a; 0x239304fe; 0x7c868c07; 0x4eee5fa4; 0x120e5b8c; 0x4767aae0; 0x648c36b1; 0x24bae5cc; 0x7b9ddf36; 0x4f94cb47; 0x1b7faeea; 0x73fa82ca; 0x4c32d990; 0x092d0c93; 0x4315711b; 0x3fcc0592; 0x5d0a5111; 0x48d6ba90; 0x1e444b21; 0x40c16fcf; 0x6867f5b1; 0x57a476ea; 0x175f2304; 0x1ffc5cfe; 0x6a7ba53a; 0x637b599c; 0x1404dd83; 0x0805aa32; 0x10d47daf; 0x2db94dc2; 0x1a1f3371; 0x61cc8fb3; 0x3711c483; 0x28a61268; 0x2ed93c6e; 0x2e42ed8c; 0x1a387531; 0x6b1bd449; 0x301efe32; 0x5dcf70d0; 0x3dd03c00; 0x1153313d; 0x129c2b48; 0x3b9d34b9; 0x2ba65435; 0x6e0426bb; 0x1955c17b; 0x4f0e1b76; 0x028d41c9; 0x02d475d3; 0x2ef7c30f; 0x2ea73087; 0x357c92a5; 0x4141569c; |] (* %%MAGICEND%% *) let () = assert(Array.length hash_data >= hash_length + digest_length - 1) (************************************************ * Integer hashes. *) (* %%MAGICBEGIN%% *) module HashCode : HashCodeSig = struct type t = { mutable hash_digest : int; mutable hash_code : int } (* * New buffer. *) let create () = { hash_digest = 0; hash_code = 0 } (* * Add an integer. *) let add_truncated_bits buf i = let { hash_digest = digest; hash_code = code } = buf in let code = (code + i + 1) mod hash_length in buf.hash_digest <- digest lxor (Array.unsafe_get hash_data code); buf.hash_code <- code let add_bits buf i = add_truncated_bits buf (i land 0x7ff) (* * Add the characters in a string. *) let add_string buf s = for i = 0 to pred (String.length s) do add_truncated_bits buf (Char.code (String.unsafe_get s i)) done (* * Numbers. *) let add_int buf i = add_bits buf i; add_bits buf (i lsr 11); add_bits buf (i lsr 22) let add_int32 buf i = add_bits buf (Int32.to_int (Int32.shift_right_logical i 16)); add_bits buf (Int32.to_int i) let add_int64 buf i = add_int buf (Int64.to_int (Int64.shift_right_logical i 48)); add_int buf (Int64.to_int (Int64.shift_right_logical i 24)); add_int buf (Int64.to_int i) let add_nativeint buf i = add_int buf (Nativeint.to_int (Nativeint.shift_right_logical i 48)); add_int buf (Nativeint.to_int (Nativeint.shift_right_logical i 24)); add_int buf (Nativeint.to_int i) let add_float buf x = add_int64 buf (Int64.bits_of_float x) (* * Extract the digest. *) let code buf = buf.hash_digest end (* %%MAGICEND%% *) (************************************************ * Digest-based hashes. *) (* %%MAGICBEGIN%% *) module HashDigest : HashDigestSig = struct type t = { hash_digest : int array; mutable hash_code : int } (* * New buffer. *) let create () = { hash_digest = Array.create digest_length 0; hash_code = 0 } (* * Add an integer. *) let add_truncated_bits buf i = let { hash_digest = digest; hash_code = code } = buf in let code = (code + digest_length + i) mod hash_length in for i = 0 to digest_length - 1 do digest.(i) <- digest.(i) lxor (Array.unsafe_get hash_data (code + i)) done; buf.hash_code <- code let add_bits buf i = add_truncated_bits buf (i land 0x7ff) (* * Add the characters in a string. *) let add_char buf c = add_truncated_bits buf (Char.code c) let add_string buf s = for i = 0 to pred (String.length s) do add_char buf (String.unsafe_get s i) done let add_substring buf s off len = if off < 0 || len < 0 || off + len > String.length s then raise (Invalid_argument "Lm_hash.add_substring"); for i = off to pred (off + len) do add_char buf (String.unsafe_get s i) done (* * Numbers. *) let add_bool buf b = add_truncated_bits buf (if b then 1 else 0) let add_int buf i = add_bits buf i; add_bits buf (i lsr 11); add_bits buf (i lsr 22) let add_int32 buf i = add_bits buf (Int32.to_int (Int32.shift_right_logical i 16)); add_bits buf (Int32.to_int i) let add_int64 buf i = add_int buf (Int64.to_int (Int64.shift_right_logical i 48)); add_int buf (Int64.to_int (Int64.shift_right_logical i 24)); add_int buf (Int64.to_int i) let add_nativeint buf i = add_int buf (Nativeint.to_int (Nativeint.shift_right_logical i 48)); add_int buf (Nativeint.to_int (Nativeint.shift_right_logical i 24)); add_int buf (Nativeint.to_int i) let add_float buf x = let i = Int64.bits_of_float x in add_int buf (Int64.to_int (Int64.shift_right i 48)); add_int buf (Int64.to_int (Int64.shift_right i 24)); add_int buf (Int64.to_int i) (* * Extract the digest. *) let digest buf = let digest = buf.hash_digest in let s = String.create digest_length in for i = 0 to pred digest_length do s.[i] <- Char.chr (digest.(i) land 0xff) done; s end;; (* %%MAGICEND%% *) (************************************************************************ * Hash helper functions. *) (* * The default function for combinding hash values. * XXX: JYH: we should try using a smarter hash function. *) let hash_combine i1 i2 = (i1 lsl 2) lxor (i1 lsr 2) lxor i2 (* * Hash a list of integers. *) let hash_int_list code l = let buf = HashCode.create () in HashCode.add_int buf code; List.iter (HashCode.add_int buf) l; HashCode.code buf (* * Comparison utilities. *) let rec compare_int_list (l1 : int list) (l2 : int list) = match l1, l2 with i1 :: l1, i2 :: l2 -> if i1 < i2 then -1 else if i1 > i2 then 1 else compare_int_list l1 l2 | [], _ ::_ -> -1 | _ :: _, [] -> 1 | [], [] -> 0 (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_channel.mli0000664000152300015230000000746710502403701021300 0ustar jyhjyh(* * Generic buffered IO channel. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_location type channel type t = channel (* * The channel may be a file, pipe, or socket. *) type kind = FileChannel | PipeChannel | SocketChannel type mode = InChannel | OutChannel | InOutChannel (* Creation *) val create : string -> kind -> mode -> bool -> Unix.file_descr option -> t val name : t -> string val descr : t -> Unix.file_descr val close : t -> unit val info : t -> int * kind * mode * bool val set_id : t -> int -> unit val of_string : string -> t val of_substring : string -> int -> int -> t val of_loc_string : string -> int -> int -> string -> t val of_fun : (string -> int -> int -> int) -> (string -> int -> int -> int) -> t (* Output to strings *) val create_string : unit -> t val create_loc_string : string -> int -> int -> t val to_string : t -> string (* Set the file and line number *) val set_line : t -> string -> int -> unit (* * Set text vs binary mode. * No effect unless on Win32. *) val set_binary_mode : t -> bool -> unit (* The write function is arbitrary and can be replaced *) val set_io_functions : t -> (string -> int -> int -> int) -> (* Reader *) (string -> int -> int -> int) -> (* Writer *) unit (* Positioning *) val tell : t -> int val seek : t -> int -> Unix.seek_command -> int val loc : t -> loc (* Check if there is already input in the buffer *) val poll : t -> bool (* Buffered IO *) val input_char : t -> char val input_byte : t -> int val input_buffer : t -> string -> int -> int -> unit val input_line : t -> string val input_entire_line : t -> string val read : t -> string -> int -> int -> int (* Flush data to the channel *) val flush : t -> unit (* Buffered IO *) val output_char : t -> char -> unit val output_byte : t -> int -> unit val output_buffer : t -> string -> int -> int -> unit val output_string : t -> string -> unit val write : t -> string -> int -> int -> int (* Select *) val select : t list -> t list -> t list -> float -> t list * t list * t list (* Lex-mode operations *) module LexerInput : sig type t = channel val lex_start : t -> int val lex_restart : t -> int -> unit val lex_stop : t -> int -> unit val lex_string : t -> int -> string val lex_substring : t -> int -> int -> string val lex_next : t -> int val lex_pos : t -> int val lex_buffer : t -> Buffer.t -> unit val lex_loc : t -> int -> loc val bof : int val eof : int end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_dlist.ml0000664000152300015230000000707410456222231020635 0ustar jyhjyh(* * Doubly-linked list. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * List type. *) type 'a t = 'a handle option ref and 'a handle = { mutable pred : 'a handle option ref; succ : 'a handle option ref; data : 'a } (* * Create an empty list. *) let create () = ref None (* * Create an unattached handle. *) let create_handle x = let opt = ref None in { pred = opt; succ = opt; data = x } let data { data = data } = data (* * Check if the list is empty. *) let is_empty l = !l = None (* * Get the head element. *) let hd l = match !l with Some hand -> hand | None -> raise (Invalid_argument "Dlist.hd") let tl hand = match !(hand.succ) with Some hand -> hand | None -> raise (Invalid_argument "Dlist.tl") let no_tl hand = !(hand.succ) = None (* * Turn into a list. *) let to_list l = let rec collect = function Some hand -> hand :: collect (!(hand.succ)) | None -> [] in collect (!l) (* * Insert a node at the head of a list. *) let insert hand l = assert (!(hand.pred) = None && !(hand.succ) = None); let next = !l in l := Some hand; hand.pred <- l; hand.succ := next; match next with Some next -> next.pred <- hand.succ | None -> () (* * Delete a node from the list. *) let delete hand = let pred = hand.pred in let succ = hand.succ in let succ' = !succ in let _ = pred := succ'; match succ' with Some next -> next.pred <- pred | None -> () in hand.pred <- succ; succ := None (* * Get the list length. *) let length l = let rec length i = function Some hand -> let next = !(hand.succ) in length (succ i) next | None -> i in length 0 (!l) (* * Iterate. * Note that this is tricky if the function * modifes the list during iteration (what should * be the intended semantics?) *) let iter f l = let rec iter = function Some hand -> let next = !(hand.succ) in f hand; iter next | None -> () in iter (!l) let fold f x l = let rec fold x = function Some hand -> let next = !(hand.succ) in let x = f x hand in fold x next | None -> x in fold x (!l) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_rawint.mli0000664000152300015230000000643110456222231021167 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Various forms of raw integers. *) type int_precision = Int8 | Int16 | Int32 | Int64 (* * Signed or unsigned. *) type int_signed = bool (* * Actual numbers. *) type rawint val precision : rawint -> int_precision val signed : rawint -> int_signed val is_zero : rawint -> bool val is_one : rawint -> bool (* * Conversion. *) val of_rawint : int_precision -> int_signed -> rawint -> rawint (* * Constructors. *) val of_int : int_precision -> int_signed -> int -> rawint val of_float : int_precision -> int_signed -> float -> rawint val of_int32 : int_precision -> int_signed -> int32 -> rawint val of_int64 : int_precision -> int_signed -> int64 -> rawint val of_nativeint : int_precision -> int_signed -> nativeint -> rawint val of_string : int_precision -> int_signed -> string -> rawint val to_byte : rawint -> int val to_short : rawint -> int val to_int : rawint -> int val to_float : rawint -> float val to_int32 : rawint -> int32 val to_int64 : rawint -> int64 val to_nativeint : rawint -> nativeint val to_string : rawint -> string (* * Comparison. *) val compare : rawint -> rawint -> int (* * Basic arithmetic. *) val neg : rawint -> rawint val uminus : rawint -> rawint val succ : rawint -> rawint val pred : rawint -> rawint val abs : rawint -> rawint val add : rawint -> rawint -> rawint val sub : rawint -> rawint -> rawint val mul : rawint -> rawint -> rawint val div : rawint -> rawint -> rawint val rem : rawint -> rawint -> rawint val min : rawint -> rawint -> rawint val max : rawint -> rawint -> rawint val max_int : int_precision -> int_signed -> rawint val min_int : int_precision -> int_signed -> rawint (* i, off, len *) val field : rawint -> int -> int -> rawint val set_field : rawint -> int -> int -> rawint -> rawint (* * Bitwise operations. *) val logand : rawint -> rawint -> rawint val logor : rawint -> rawint -> rawint val logxor : rawint -> rawint -> rawint val lognot : rawint -> rawint val shift_left : rawint -> rawint -> rawint val shift_left_int : rawint -> int -> rawint val shift_right : rawint -> rawint -> rawint (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_bitmatrix.mli0000664000152300015230000000276310456222231021672 0ustar jyhjyh(* * Bit matrix. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) type t (* * Create takes height and width. *) val create : int -> int -> t (* * Query a bit at y,x *) val query : t -> int -> int -> bool (* * Add and remove edges at y,x *) val add : t -> int -> int -> unit val remove : t -> int -> int -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_ssl.mli0000664000152300015230000000454310456222231020466 0ustar jyhjyh(* * Interface for SSL. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) type t type ssl_out type ssl_in exception SSLSigPipe (* * SSL interface. *) val enabled : bool val socket : string -> t val bind : t -> Unix.inet_addr -> int -> unit val getsockname : t -> Unix.inet_addr * int val listen : t -> string -> int -> unit val accept : t -> t val connect : t -> Unix.inet_addr -> int -> unit val shutdown : t -> unit val close : t -> unit (* * For restart. *) val fd : t -> int val serve : int -> string -> string -> t (* * Buffered output. *) val out_channel_of_ssl : t -> ssl_out val fprintf : ssl_out -> ('a, ssl_out, unit) format -> 'a val output_char : ssl_out -> char -> unit val output_string : ssl_out -> string -> unit val output_buffer : ssl_out -> Buffer.t -> unit val output : ssl_out -> string -> int -> int -> unit val flush : ssl_out -> unit val close_out : ssl_out -> unit (* * Buffered input. *) val in_channel_of_ssl : t -> ssl_in val input_char : ssl_in -> char val input_line : ssl_in -> string val really_input : ssl_in -> string -> int -> int -> unit val close_in : ssl_in -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_trace.mli0000664000152300015230000000377010456222231020764 0ustar jyhjyh(* * A trace is like a nested list. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf type 'a trace = 'a trace_node list and 'a trace_node = Elem of 'a | Lm_trace of 'a * 'a trace (* * Convert to a list. *) val to_list : 'a trace -> 'a list val of_list : 'a list -> 'a trace (* * Usual map, fold functions. *) val map : ('a -> 'b) -> 'a trace -> 'b trace val map_depth : (int -> 'a -> 'b) -> 'a trace -> 'b trace val fold : ('a -> 'b -> 'a) -> 'a -> 'b trace -> 'a val iter : ('a -> unit) -> 'a trace -> unit val iter_depth : (int -> 'a -> unit) -> 'a trace -> unit val fold_map : ('a -> 'b -> 'a * 'c) -> 'a -> 'b trace -> 'a * 'c trace val header_nodes : 'a trace -> 'a list val special_nodes : 'a trace -> 'a list (* * Printing. *) val pp_print : formatter -> (formatter -> 'a -> unit) -> 'a trace -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_ncurses_display.ml0000664000152300015230000004667410456222231022736 0ustar jyhjyh(* Ncurses display library (for standard display functions) Copyright (C) 2002 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) open Lm_ncurses open Lm_printf (*** Configuration ***) (* first_number Numerical value of first entry in a list. Should be set to 0 or 1, to determine whether items are zero-indexed or not. *) let first_number = 1 (*** Basic Display Features ***) (* curses_enabled True if ncurses support has been enabled in the configure system. If this flag is false, then calls to functions exported by this module will almost certainly result in Failure exceptions. *) let curses_enabled = curses_enabled (* current_display Set to the pair (main, status) if a display has been started. This is set to None if no display is currently active. *) let current_display = ref None (* display_active () Returns true if an ncurses display is currently active. *) let display_active () = match !current_display with Some _ -> true | None -> false (* get_current_display () Returns the current display. Raises an exception if no display has been opened currently. *) let get_current_display () = match !current_display with Some display -> display | None -> raise (Failure "No ncurses display is open!") (* update_status_deferred msg Updates the status window with the indicated message. The message may be truncated to fit into the window. This raises Failure if no display is currently active. This call does NOT immediately refresh the status bar. *) let update_status_deferred msg = (* Get the current status window *) let _, status = get_current_display () in (* Get the width of the window, and truncate message if necessary. *) let _, width = getmaxyx status in let width = width - 2 in let len = String.length msg in let msg = if len > width then " " ^ String.sub msg 0 width ^ " " else " " ^ msg ^ String.make (width - len + 1) ' ' in (* Make sure we are on reverse video, and redraw the window. *) wattron status A_REVERSE; wmove status 0 0; waddstr status msg (* update_status msg Updates the status window with the indicated message. The message may be truncated to fit into the window. This raises Failure if no display is currently active. *) let update_status msg = let _, status = get_current_display () in update_status_deferred msg; wrefresh status (* putchar ch Writes the indicated character to the MAIN window. The main window is scrolled if necessary. Raises Failure if no display is active. *) let putchar ch = let main, _ = get_current_display () in waddch main ch (* putsubstr buf off len Writes the indicated substring of buf to the MAIN window. The main window is scrolled if necessary. This raises Failure if no display is active. *) let putsubstr buf off len = let main, _ = get_current_display () in waddstr main (String.sub buf off len) (* getchar () Reads a character in from the display. The character may be an extended key, such as an arrow key. The character will NOT be echoed onto the screen by default. This raises Failure if no display is active. *) let getchar () = let main, _ = get_current_display () in wgetch main (* flush () Redraws the main window. You must call this after calls to putchar and/ or putsubstr, otherwise the text will not show up on the screen. This raises Failure if no display is active. *) let flush () = let main, _ = get_current_display () in wrefresh main (* flush_all () Redraws ALL windows. Internal use only. *) let flush_all () = let main, status = get_current_display () in wnoutrefresh main; wnoutrefresh status; doupdate () (* stop_display () Ends ncurses mode and deletes the indicated display windows. If no display is active, then this function is a NOP. *) let stop_display () = match !current_display with Some _ -> current_display := None; endwin () | None -> () (* start_display () Starts ncurses mode and creates a status and main window. If we are already in ncurses mode, then the old mode is deleted and a fresh mode is started. If ncurses support is not available, then this will most definitely raise a Failure. *) let start_display () = (* Terminate previous ncurses, and start a new display. *) stop_display (); initscr (); (* Create the status and main windows. *) let status = newwin 1 0 0 0 in let main = newwin 0 0 1 0 in current_display := Some (main, status); (* Setup default properties of each window, and force updates. *) scrollok status false; update_status ""; wrefresh main (* in_display f arg Executes (f arg) inside an ncurses display. This will clean up the ncurses display, even if f raises an exception. *) let in_display f arg = start_display (); try let result = f arg in stop_display (); printf "@."; result with e -> stop_display (); printf "@."; raise e (* make_formatter () Makes a formatter suitable for printing to the ncurses display. *) let make_formatter () = make_formatter putsubstr flush (*** Text Viewer Interface ***) (* update_lines win first last f Redraws everything from the first line to the last line indicated (inclusive). f takes the window and the line number to redraw; f may assume the cursor is already on the first column of the requested line. *) let update_lines win first last f = let height, width = getmaxyx win in let rec loop n = if n > last then () else begin wmove win n 0; f win n; loop (n + 1) end in loop first; wmove win (height - 1) (width - 1) (* update_top_lines win n f Update the top n lines of the display. *) let update_top_lines win n f = update_lines win 0 (n - 1) f (* update_bottom_lines win n f Update the bottom n lines of the display. *) let update_bottom_lines win n f = let height, _ = getmaxyx win in update_lines win (height - n - 1) (height - 1) f (* update_all_lines win f Updates ALL lines on the display. *) let update_all_lines win f = let height, _ = getmaxyx win in update_lines win 0 (height - 1) f (* scroll win last_row rqst_delta cur_row f Scrolls the window; if rqst_delta < 0, then scroll up; otherwise scroll down. last_row is the last virtual ROW NUMBER that can display text (it is NOT a line count!). cur_row indicates current virtual row number. This function will never scroll before line 0; however, it is possible that it will display lines past last_row, so f needs to be prepared to display something for those lins. The actual delta that could be granted is returned. *) let scroll win last_row rqst_delta cur_row f = (* Determine what the ACTUAL delta is that we can give the user. *) let new_delta = if rqst_delta < 0 then (* User requested to scroll up *) let new_row = if (-rqst_delta) > cur_row then (* Attemped to scroll up before line 0 *) 0 else cur_row + rqst_delta in new_row - cur_row else (* User requested to scroll down *) let height, _ = getmaxyx win in let cur_last_row = cur_row + height - 1 in (* Check that the last row doesn't go off-screen *) let new_last_row = if cur_last_row + rqst_delta > last_row then last_row else cur_last_row + rqst_delta in (* NOW, check that in scrollback we didn't accidentally go off the FIRST line of the screen (can happen if we are displaying less than a screenful of text). *) let new_row = if new_last_row - height + 1 < 0 then 0 else new_last_row - height + 1 in new_row - cur_row in (* Scroll the window *) scrollok win true; wscrl win new_delta; scrollok win false; (* Determine whether we need to update top or bottom of screen *) if new_delta < 0 then update_top_lines win (-new_delta) (fun win -> f win new_delta) else update_bottom_lines win new_delta (fun win -> f win new_delta); new_delta (* print_limited_line win buf col Prints a single line of text, starting from character position col, onto the main window at the current cursor position. The line will NOT wrap if it is too long to display. The end of line is cleared if the line is wider than the text. The cursor is left after the last character. *) let print_limited_line win buf col = let _, width = getmaxyx win in let _, x = getyx win in let width = width - x in let len = String.length buf in let rec loop n = if n >= width then () else if n + col >= len then (* Screen is wider than the text *) wclrtoeol win else begin waddch win buf.[n + col]; loop (n + 1) end in loop 0 (* text_viewer title text Let the user scroll through a buffer of text. Once the user exits the session, control is returned and the scroll buffer is left at its current location. The current contents of the main window are cleared at the beginning of this call. *) let text_viewer title text = (* Get basic information about the display, and determine how much text to skip for a pageup/pagedown request. *) let main, _ = get_current_display () in let height, _ = getmaxyx main in let pageskip = if height > 2 then height - 2 else height in (* Reformat the text so it is stored in an array, one array entry per line of text. This makes the text a lot easier to work with when we are actually displaying it to the terminal. *) let text = Lm_string_util.split "\n" text in let text = Array.of_list text in let text_length = Array.length text in let max_col_bound = 1024 in (* Setup the help text. *) let help = "Arrows scroll Enter, ^D exit ^U page-up ^V page-dn ^A begin-line ^L redraw" in let scroll_help row col = update_status_deferred (sprintf "%s Type ? for help r%-5dc%-4dli%-5d" title (row + 1) (col + 1) text_length) in (* Prints a blank line at the current cursor position. *) let print_line row col win n = if row + n >= text_length then begin wattron win A_BOLD; print_limited_line win "~" col; wattroff win A_BOLD end else print_limited_line win text.(row + n) col in (* Scrolling helper functions. *) let print_delta_line row col win delta = print_line (row + delta) col win in let scroll n row col = let delta = scroll main (text_length - 1) n row (print_delta_line row col) in row + delta in (* This processes keystrokes until the user exits. The current top-left position is given as (row, col), and the status text to display (if any) is given in status. *) let rec process_key status row col = (match status with Some status -> update_status_deferred status | None -> scroll_help row col); flush_all (); let ch = getchar () in if ch = key_err || ch = key_ctrld || ch = key_ctrlj || ch = key_ctrlm || ch = key_enter || ch = key_cancel || ch = int_of_char 'q' || ch = int_of_char 'Q' then () else if ch = key_up then process_key None (scroll (-1) row col) col else if ch = key_ppage || ch = key_ctrlu then process_key None (scroll (-pageskip) row col) col else if ch = key_down then process_key None (scroll 1 row col) col else if ch = key_npage || ch = key_ctrlv then process_key None (scroll pageskip row col) col else if ch = key_left && col > 0 then begin update_all_lines main (print_line row (col - 1)); process_key None row (col - 1) end else if ch = key_right && col < max_col_bound - 1 then begin update_all_lines main (print_line row (col + 1)); process_key None row (col + 1) end else if (ch = key_home || ch = key_ctrla) && col > 0 then begin update_all_lines main (print_line row 0); process_key None row 0 end else if ch = key_ctrll then begin update_all_lines main (print_line row col); process_key None row col end else if ch = int_of_char '?' || ch = int_of_char '/' then process_key (Some help) row col else process_key None row col in (* Setup the main window; display initial text and wait for keys *) scrollok main false; update_all_lines main (print_line 0 0); process_key None 0 0; update_status ""; scrollok main true (*** Menu Selection ***) (* menu_select numbered title entries Allow the user to select an element from a menu of entries. If successful, then the (zero-indexed) entry number that was selected is returned. If failed, then None is returned. If numbered is true, then a numerical index is displayed next to each entry. *) let menu_select numbered title entries = (* Get basic information about the display, and determine how much text to skip for a pageup/pagedown request. *) let main, _ = get_current_display () in let height, _ = getmaxyx main in let entry_count = Array.length entries in let pageskip = height in (* Entry accessors *) let entry_key n = let key, _, _ = entries.(n) in key in let entry_name n = let _, name, _ = entries.(n) in name in let entry_desc n = let _, _, desc = entries.(n) in desc in (* Setup the help text. *) let help = "Up/Dn highlight Enter selects ^D cancels ^U page-up ^V page-dn ^L redraw" in let scroll_help selrow = update_status_deferred (sprintf "%s Type ? for help sel%-4dli%-4d %s" title (selrow + 1) entry_count (entry_desc selrow)) in (* Display a menu entry *) let print_line row win prefix n = print_limited_line win prefix 0; if numbered then print_limited_line win (sprintf "#%03d " (row + n + first_number)) 0; print_limited_line win (entry_name (row + n)) 0; match entry_key (row + n) with Some ch -> print_limited_line win (sprintf " (%c)" (Char.uppercase ch)) 0 | None -> () in let print_line row selrow win n = if row + n >= entry_count then print_limited_line win "" 0 else if row + n = selrow then begin wattron win A_BOLD; print_line row win " > " n; wattroff win A_BOLD end else begin print_line row win " " n end in (* Match against a keystroke *) let match_key ch = if ch >= 0 && ch < 256 then let ch = Char.uppercase (char_of_int ch) in let rec scan n = if n >= entry_count then None else match entry_key n with Some ch' when ch = Char.uppercase ch' -> Some n | _ -> scan (n + 1) in scan 0 else None in (* Scrolling helper functions. *) let print_delta_line row selrow win delta = print_line (row + delta) selrow win in let scroll delta row selrow = let oldrow = selrow - row in let selrow = selrow + delta in let selrow = if selrow < 0 then 0 else if selrow >= entry_count then entry_count - 1 else selrow in let realrow = selrow - row in let () = update_lines main oldrow oldrow (print_line row selrow) in let delta = if realrow < 0 then begin (* Change requires scrolling UP *) let delta = realrow in let delta = scroll main (entry_count - 1) delta row (print_delta_line row selrow) in delta end else if realrow >= height then begin (* Change requires scrolling DOWN *) let delta = realrow - height + 1 in let delta = scroll main (entry_count - 1) delta row (print_delta_line row selrow) in delta end else begin (* Simple update; simply refresh two lines *) update_lines main realrow realrow (print_line row selrow); 0 end in row + delta, selrow in (* Process keys until the user accepts or cancels. *) let rec process_key status row selrow = (match status with Some status -> update_status_deferred status | None -> scroll_help selrow); flush_all (); let ch = getchar () in match match_key ch with Some n -> Some n | None -> if ch = key_err || ch = key_ctrld || ch = key_cancel || ch = int_of_char 'q' || ch = int_of_char 'Q' then None else if ch = key_ctrlj || ch = key_ctrlm || ch = key_enter then Some selrow else if ch = key_up then let row, selrow = scroll (-1) row selrow in process_key None row selrow else if ch = key_ppage || ch == key_ctrlu then let row, selrow = scroll (-pageskip) row selrow in process_key None row selrow else if ch = key_down then let row, selrow = scroll 1 row selrow in process_key None row selrow else if ch = key_npage || ch == key_ctrlv then let row, selrow = scroll pageskip row selrow in process_key None row selrow else if ch = key_ctrll then begin update_all_lines main (print_line row selrow); process_key None row selrow end else if ch = int_of_char '?' || ch = int_of_char '/' then process_key (Some help) row selrow else process_key None row selrow in (* Setup the main window; display initial text and wait for keys *) scrollok main false; update_all_lines main (print_line 0 0); let result = process_key None 0 0 in update_status ""; scrollok main true; result omake-0.9.8.5/src/libmojave-external/util/lm_termsize.ml0000664000152300015230000000366710564675162021403 0ustar jyhjyh(* * Extra terminal commands. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * Modified by: Aleksey Nogin *) open Unix open Lm_debug open Lm_printf let debug_terminal = create_debug { debug_name = "terminal"; debug_description = "show terminal size operations"; debug_value = false } external term_size : file_descr -> int * int = "caml_term_size" let min_screen_width = ref 40 let term_width_fd fd width = try let _, cols = term_size fd in if !debug_terminal then eprintf "Terminal size: requested %i, got %i, minimal witdth is %i%t" width cols (!min_screen_width) eflush; max (!min_screen_width) cols with Failure s -> if !debug_terminal then eprintf "Can't get terminal size: %s%t" s eflush; width let term_width out width = term_width_fd (descr_of_out_channel out) width let stdout_width = term_width_fd Unix.stdout 80 let stderr_width = term_width_fd Unix.stderr 80 let () = if stdout_width <> 80 then pp_set_margin stdout stdout_width; if stderr_width <> 80 then pp_set_margin stderr stderr_width (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_symbol_matrix.mli0000664000152300015230000000673210456222231022560 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol (************************************************************************ * Types *) (* * An adjacency matrix. *) module type SymbolMatrixSetSig = sig type t (* * Create a new table. * The int is the initial size. *) val create : int -> t (* * Test for membership. *) val query : t -> symbol -> symbol -> bool (* * Add an edge. *) val add : t -> symbol -> symbol -> unit (* * Iterate over the table. *) val iter : (symbol -> symbol -> unit) -> t -> unit end (* * An adjacency matrix. *) module type SymbolMatrixTableSig = sig type 'a t (* * Create a new table. * The int is the initial size. *) val create : int -> 'a t (* * This is an imperative data structure. * The copy operation builds an identical copy. *) val copy : 'a t -> 'a t (* * Test for membership. *) val find : 'a t -> symbol -> symbol -> 'a val query : 'a t -> symbol -> symbol -> bool (* * Add an edge. *) val add : 'a t -> symbol -> symbol -> 'a -> unit val filter_add : 'a t -> symbol -> symbol -> ('a option -> 'a) -> unit (* * Remove an edge. *) val remove : 'a t -> symbol -> symbol -> unit val filter_remove : 'a t -> symbol -> symbol -> ('a -> 'a option) -> unit (* * Iterate over the table. *) val iter : (symbol -> symbol -> 'a -> unit) -> 'a t -> unit (* * Map over the table. *) val map : ('a -> 'a) -> 'a t -> 'a t (* * Fold over the table. *) val fold : ('a -> symbol -> symbol -> 'b -> 'a) -> 'a -> 'b t -> 'a end (* * The order can be used to determine * define symmetric tables. *) module type OrderSig = sig val reorder : symbol -> symbol -> symbol * symbol end (* * This is another implementation of a sparse bit matrix. * This is really a hash table, but performance may be better * than the hashtable. *) module SymbolMatrix : SymbolMatrixSetSig (* * This is another implementation of a sparse bit matrix. * This is really a hash table, but performance may be better * than the hashtable. *) module MakeSymbolMatrixTable (Order : OrderSig) : SymbolMatrixTableSig module SymSymbolMatrix : SymbolMatrixTableSig module AsymSymbolMatrix : SymbolMatrixTableSig (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_ssl.ml0000664000152300015230000002315410556173566020335 0ustar jyhjyh(* * Interface to Open SSL. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) let eprintf = Printf.eprintf let eflush out = output_char out '\n'; flush out open Lm_make_printf (* * Define hooks to C code. *) type t type ssl = t exception SSLSigPipe external socket : string -> t = "lm_ssl_socket" external bind : t -> Unix.inet_addr -> int -> unit = "lm_ssl_bind" external getsockname : t -> Unix.inet_addr * int = "lm_ssl_get_addr" external listen : t -> string -> int -> unit = "lm_ssl_listen" external accept : t -> t = "lm_ssl_accept" external connect : t -> Unix.inet_addr -> int -> unit = "lm_ssl_connect" external shutdown : t -> unit = "lm_ssl_shutdown" external close : t -> unit = "lm_ssl_close" (* * For restarting from an existing socket. *) external fd : t -> int = "lm_ssl_fd" external serve : int -> string -> string -> t = "lm_ssl_serve" (* * Private functions. *) external lm_ssl_enabled : unit -> bool = "lm_ssl_enabled" external lm_ssl_init : unit -> unit = "lm_ssl_init" external lm_ssl_read : t -> string -> int -> int -> int = "lm_ssl_read" external lm_ssl_write : t -> string -> int -> int -> int = "lm_ssl_write" external lm_ssl_flush : t -> unit = "lm_ssl_flush" (* * Initialize. *) let () = lm_ssl_init () let enabled = lm_ssl_enabled () (* * Buffered output channel. *) module OutChannel = struct (* Some buffer type *) type t = { mutable windex : int; buffer : string; ssl : ssl } type result = unit (* Buffer length is 1k *) let buf_length = 1 lsl 10 (* Create the output channel *) let create ssl = { windex = 0; buffer = String.create buf_length; ssl = ssl } (* Flush the output *) let flush out = let { windex = windex; buffer = buf; ssl = ssl } = out in let rec flush off = if off < windex then let amount = lm_ssl_write ssl buf off (windex - off) in if amount <= 0 then raise SSLSigPipe; flush (off + amount) in flush 0; out.windex <- 0 (* Close the output channel *) let close out = flush out; close out.ssl (* * Add a single character. *) let print_char out c = let { windex = windex; buffer = buf } = out in let windex' = succ windex in buf.[windex] <- c; out.windex <- windex'; if windex' = buf_length then flush out (* * Add a string. *) let rec output out s off len = if len <> 0 then let { windex = windex; buffer = buf } = out in let amount = min len (buf_length - windex) in let windex' = windex + amount in String.blit s off buf windex amount; out.windex <- windex'; if windex' = buf_length then flush out; output out s (off + amount) (len - amount) let print_string out s = output out s 0 (String.length s) (* * Formatting functions are ignored. *) let open_box _ _ = () let open_hbox _ = () let open_vbox _ _ = () let open_hvbox _ _ = () let open_hovbox _ _ = () let close_box _ = () (* * These formatting actions are partially handled. *) let print_cut _ = () let print_space out = print_char out ' ' let force_newline out = print_char out '\n' let print_break _ _ _ = () let print_flush out = flush out; lm_ssl_flush out.ssl let print_newline = force_newline let exit _out = () end module Printf = MakePrintf (OutChannel) type ssl_out = OutChannel.t let out_channel_of_ssl = OutChannel.create let output_char = OutChannel.print_char let output_string = OutChannel.print_string let output_buffer out buf = output_string out (Buffer.contents buf) let output = OutChannel.output let flush = OutChannel.flush let close_out = OutChannel.close let fprintf = Printf.fprintf (* * Input channel. *) module InChannel = struct type t = { mutable rindex : int; mutable length : int; buffer : string; ssl : ssl } (* * Input buffer is 1k. *) let buf_length = 1 lsl 10 (* * Create the buffer. *) let create ssl = { rindex = 0; length = 0; buffer = String.create buf_length; ssl = ssl } let close inx = close inx.ssl (* * Fill input. *) let rec fill inx = let { rindex = rindex; length = length; buffer = buf; ssl = ssl } = inx in if length <> 0 && rindex = length then begin inx.rindex <- 0; inx.length <- 0; fill inx end else if length <> buf_length then begin let amount = lm_ssl_read ssl buf length (buf_length - length) in if amount <= 0 then raise End_of_file; inx.length <- length + amount end (* * Get a character. *) let rec input_char inx = let { rindex = rindex; length = length; buffer = buf } = inx in if rindex = length then begin fill inx; input_char inx end else let c = buf.[rindex] in inx.rindex <- succ rindex; c (* * Get a line. *) let rec input_line_aux out inx = let { rindex = rindex; length = length; buffer = buf } = inx in let rec collect rindex = if rindex = length then let filled = inx.rindex <- rindex; try fill inx; true with End_of_file -> false in if filled then input_line_aux out inx else Buffer.contents out else let c = buf.[rindex] in if c = '\n' then begin inx.rindex <- succ rindex; Buffer.contents out end else begin Buffer.add_char out c; collect (succ rindex) end in collect rindex let input_line inx = if inx.rindex = inx.length then fill inx; input_line_aux (Buffer.create 64) inx (* * Get some input. * Try to optimize this case a little, and * copy directly into the buffer if possible. *) let rec really_input_start inx s off len = let { rindex = rindex; length = length; buffer = buf } = inx in let amount = min len (length - rindex) in let () = String.blit buf rindex s off amount; inx.rindex <- rindex + amount in let off = off + amount in let len = len - amount in if len <> 0 then really_input_middle inx s off len and really_input_middle inx s off len = if len < buf_length then really_input_end inx s off len else let amount = lm_ssl_read inx.ssl s off len in let () = if amount <= 0 then raise End_of_file in let off = off + amount in let len = len - amount in really_input_middle inx s off len and really_input_end inx s off len = let { rindex = rindex; length = length; buffer = buf } = inx in if length - rindex < len then begin fill inx; really_input_end inx s off len end else begin String.blit buf rindex s off len; inx.rindex <- rindex + len end let really_input = really_input_start end type ssl_in = InChannel.t let in_channel_of_ssl = InChannel.create let input_char = InChannel.input_char let input_line = InChannel.input_line let really_input = InChannel.really_input let close_in = InChannel.close (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_ctype.mli0000664000152300015230000000310410456222231021001 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Locale queries. * See man pages for isdigit, isprint, isalnum, isupper and isgraph for more information. *) val is_digit : char -> bool val is_print : char -> bool val is_alnum : char -> bool val is_upper : char -> bool val is_graph : char -> bool (* * String operations. *) val is_capitalized : string -> bool val quote: string -> string (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_readline.mli0000664000152300015230000000476710456222231021460 0ustar jyhjyh(* * Simple readline interface. * Copyright (C) 2002 Justin David Smith, Caltech * Copyright (C) 2000-2005 Mojave Group, Alexey Nogin, Cornell University * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. *) (* initialize_readline () Initialise the readline library. *) val initialize_readline : unit -> unit (* register_commands commands Register a list of commands for tab completion. This will clear the previous command-list; only one command-list may be installed at a time. Command completion only applies to the first word on the command-line. *) val register_commands : string list -> unit (* load_history filename Load a command history file (one command per line) and append it to the current history. Will raise Sys_error if the file cannot be opened. Will raise Not_found if the file does not exist. *) val read_history : string -> unit (* save_history filename Save the currently registered command history to a file (one command per line) deleting any previous contents. Will raise Sys_error if the file cannot be opened. *) val write_history : string -> unit (* history_truncate_file filename nlines Truncate history file filename to nlines in length, keeping most recent commands. Will raise Sys_error on failure *) val history_truncate_file : string -> int -> unit (* readline prompt Displays a readline prompt, and accepts a line of input from the user. Tab completion will be enabled as approprate. Be sure to call the initialize_readline () function before calling this function. This will raise End_of_file if the user strikes ^D. *) val readline : string -> string omake-0.9.8.5/src/libmojave-external/util/lm_clock.ml0000664000152300015230000001104410456222231020601 0ustar jyhjyh(* * Timers for low-level profiling. * ---------------------------------------------------------------- * * Copyright (C) 2001 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Adam Granicz * Email: granicz@cs.caltech.edu *) open Lm_profile (* * We will keep track of all clocks by their names. *) module StringBase = struct type t = string let compare = compare end module StringSet = Lm_map.LmMake (StringBase) type clock_data_type = { clock_active : bool; clock_starttime : Unix.process_times; clock_ttime : float; clock_tcalls : int } let clock_add = StringSet.add let clock_find = StringSet.find (* * We store clocks here. *) let clocks = ref StringSet.empty (* * Start given clock. * Raise an exception if clock does not exist. *) let clock_start name = try let clock = clock_find !clocks name in if clock.clock_active then raise (Invalid_argument (Lm_printf.sprintf "clock %s is already active" name)); let clock = { clock_active = true; clock_starttime = Unix.times (); clock_ttime = clock.clock_ttime; clock_tcalls = clock.clock_tcalls } in clocks := clock_add !clocks name clock with Not_found -> let clock = { clock_active = true; clock_starttime = Unix.times (); clock_ttime = 0.0; clock_tcalls = 0 } in clocks := clock_add !clocks name clock (* * Stop given clock. * Raise an exception if clock does not exist. *) let clock_stop name = try let clock = clock_find !clocks name in if not clock.clock_active then raise (Invalid_argument (Lm_printf.sprintf "clock %s is not set" name)); let clock = { clock_active = false; clock_starttime = clock.clock_starttime; clock_ttime = clock.clock_ttime +. (difference_of (Unix.times ()) clock.clock_starttime); clock_tcalls = clock.clock_tcalls + 1 } in clocks := clock_add !clocks name clock with Not_found -> raise (Invalid_argument (Lm_printf.sprintf "clock %s does not exist" name)) (* * The total execution time when clock was active. * Raise an exception if clock does not exist. *) let clock_ttime name = try let clock = clock_find !clocks name in clock.clock_ttime with Not_found -> raise (Invalid_argument (Lm_printf.sprintf "clock_ttime: clock %s does not exist" name)) (* * The total number of calls (start-stop sequences). * Raise an exception if clock does not exist. *) let clock_tcalls name = try let clock = clock_find !clocks name in clock.clock_tcalls with Not_found -> raise (Invalid_argument (Lm_printf.sprintf "clock_tcalls: clock %s does not exist" name)) (* * Reset clock. * If clock does not exist, create it. Also, we ignore * the fact that the clock may be active. *) let clock_reset name = let null_time = { Unix.tms_utime = 0.0; Unix.tms_stime = 0.0; Unix.tms_cutime = 0.0; Unix.tms_cstime = 0.0 } in let clock = { clock_active = false; clock_starttime = null_time; clock_ttime = 0.0; clock_tcalls = 0 } in clocks := clock_add !clocks name clock (* * Report on given clock. * Raise an exception if clock does not exist. *) let clock_report msg name = let ttime = clock_ttime name in let tcalls = clock_tcalls name in Lm_printf.print_string (Lm_printf.sprintf "%sTotal time in %s = %.2f sec, %d calls, %.5f sec/call\n" (**) msg name ttime tcalls (ttime /. (float_of_int tcalls))) omake-0.9.8.5/src/libmojave-external/util/lm_symbol_matrix.ml0000664000152300015230000002346210556173566022427 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol (************************************************************************ * Types *) (* * An adjacency matrix. *) module type SymbolMatrixSetSig = sig type t (* * Create a new table. * The int is the initial size. *) val create : int -> t (* * Test for membership. *) val query : t -> symbol -> symbol -> bool (* * Add an edge. *) val add : t -> symbol -> symbol -> unit (* * Iterate over the table. *) val iter : (symbol -> symbol -> unit) -> t -> unit end (* * An adjacency matrix. *) module type SymbolMatrixTableSig = sig type 'a t (* * Create a new table. * The int is the initial size. *) val create : int -> 'a t (* * This is an imperative data structure. * The copy operation builds an identical copy. *) val copy : 'a t -> 'a t (* * Test for membership. *) val find : 'a t -> symbol -> symbol -> 'a val query : 'a t -> symbol -> symbol -> bool (* * Add an edge. *) val add : 'a t -> symbol -> symbol -> 'a -> unit val filter_add : 'a t -> symbol -> symbol -> ('a option -> 'a) -> unit (* * Remove an edge. *) val remove : 'a t -> symbol -> symbol -> unit val filter_remove : 'a t -> symbol -> symbol -> ('a -> 'a option) -> unit (* * Iterate over the table. *) val iter : (symbol -> symbol -> 'a -> unit) -> 'a t -> unit (* * Map over the table. *) val map : ('a -> 'a) -> 'a t -> 'a t (* * Fold over the table. *) val fold : ('a -> symbol -> symbol -> 'b -> 'a) -> 'a -> 'b t -> 'a end (* * The order can be used to determine * define symmetric tables. *) module type OrderSig = sig val reorder : symbol -> symbol -> symbol * symbol end (* * This is another implementation of a sparse bit matrix. * This is really a hash table, but performance may be better * than the hashtable. *) module SymbolMatrix : SymbolMatrixSetSig = struct type t = { hash_length : int; hash_buckets : (symbol * symbol) list array } (* * Assume a rough initial size. *) let create size = let length = size * 11 in { hash_length = length; hash_buckets = Array.create length [] } (* * Hash a pair. *) let hash v1 v2 = let i1 = Lm_symbol.to_int v1 in let i2 = Lm_symbol.to_int v2 in ((i1 * i2 * 3) lxor 0x17ab2537) land 0x3fffffff (* * Check if the pair is in the list. *) let rec mem v1 v2 l = match l with (v1', v2') :: l -> (Lm_symbol.eq v1' v1 && Lm_symbol.eq v2' v2) || mem v1 v2 l | [] -> false (* * Query the edge. *) let query { hash_length = length; hash_buckets = buckets } v1 v2 = let v1, v2 = if Lm_symbol.compare v1 v2 < 0 then v1, v2 else v2, v1 in let index = (hash v1 v2) mod length in mem v1 v2 buckets.(index) (* * Add an edge. *) let add tbl v1 v2 = let v1, v2 = if Lm_symbol.compare v1 v2 < 0 then v1, v2 else v2, v1 in let { hash_length = length; hash_buckets = buckets } = tbl in let index = (hash v1 v2) mod length in let bucket = buckets.(index) in if not (mem v1 v2 bucket) then buckets.(index) <- (v1, v2) :: bucket (* * Iteration. *) let iter f { hash_buckets = buckets } = Array.iter (fun entries -> List.iter (fun (v1, v2) -> f v1 v2) entries) buckets end (* * This is another implementation of a sparse bit matrix. * This is really a hash table, but performance may be better * than the hashtable. *) module MakeSymbolMatrixTable (Order : OrderSig) : SymbolMatrixTableSig = struct type 'a t = { hash_length : int; hash_buckets : (symbol * symbol * 'a) list array } (* * Assume a rough initial size. *) let create size = let length = size * 11 in { hash_length = length; hash_buckets = Array.create length [] } let copy table = let { hash_length = length; hash_buckets = buckets } = table in { hash_length = length; hash_buckets = Array.copy buckets } (* * Hash a pair. *) let hash v1 v2 = let i1 = Lm_symbol.to_int v1 in let i2 = Lm_symbol.to_int v2 in ((i1 * i2 * 3) lxor 0x17ab2537) land 0x3fffffff (* * Check if the pair is in the list. *) let rec mem v1 v2 l = match l with (v1', v2', _) :: l -> (Lm_symbol.eq v1' v1 && Lm_symbol.eq v2' v2) || mem v1 v2 l | [] -> false (* * Query the edge. *) let query { hash_length = length; hash_buckets = buckets } v1 v2 = let v1, v2 = Order.reorder v1 v2 in let index = (hash v1 v2) mod length in mem v1 v2 buckets.(index) let find { hash_length = length; hash_buckets = buckets } v1 v2 = let v1, v2 = Order.reorder v1 v2 in let index = (hash v1 v2) mod length in let rec search l = match l with (v1', v2', depth') :: l -> if Lm_symbol.eq v1' v1 && Lm_symbol.eq v2' v2 then depth' else search l | [] -> raise Not_found in search buckets.(index) (* * Add an edge. *) let add tbl v1 v2 depth = let v1, v2 = Order.reorder v1 v2 in let { hash_length = length; hash_buckets = buckets } = tbl in let index = (hash v1 v2) mod length in let rec add l = match l with (v1', v2', _depth') as h :: l -> if Lm_symbol.eq v1' v1 && Lm_symbol.eq v2' v2 then (v1, v2, depth) :: l else h :: add l | [] -> [v1, v2, depth] in buckets.(index) <- add buckets.(index) (* * Combine with a previous edge. *) let filter_add tbl v1 v2 f = let v1, v2 = Order.reorder v1 v2 in let { hash_length = length; hash_buckets = buckets } = tbl in let index = (hash v1 v2) mod length in let rec add l = match l with (v1', v2', depth') as h :: l -> if Lm_symbol.eq v1' v1 && Lm_symbol.eq v2' v2 then (v1, v2, f (Some depth')) :: l else h :: add l | [] -> [v1, v2, f None] in buckets.(index) <- add buckets.(index) (* * Remove an edge. *) let remove tbl v1 v2 = let v1, v2 = Order.reorder v1 v2 in let { hash_length = length; hash_buckets = buckets } = tbl in let index = (hash v1 v2) mod length in let rec remove l = match l with (v1', v2', _) as h :: l -> if Lm_symbol.eq v1' v1 && Lm_symbol.eq v2' v2 then l else h :: remove l | [] -> [] in buckets.(index) <- remove buckets.(index) let filter_remove tbl v1 v2 f = let v1, v2 = Order.reorder v1 v2 in let { hash_length = length; hash_buckets = buckets } = tbl in let index = (hash v1 v2) mod length in let rec remove l = match l with (v1', v2', x) as h :: l -> if Lm_symbol.eq v1' v1 && Lm_symbol.eq v2' v2 then (match f x with Some x -> (v1', v2', x) :: l | None -> l) else h :: remove l | [] -> [] in buckets.(index) <- remove buckets.(index) (* * Iteration. *) let iter f { hash_buckets = buckets } = Array.iter (fun entries -> List.iter (fun (v1, v2, depth) -> f v1 v2 depth) entries) buckets (* * Map. *) let map f table = let { hash_buckets = buckets } = table in let buckets = Array.map (List.map (fun (v1, v2, depth) -> v1, v2, f depth)) buckets in { table with hash_buckets = buckets } (* * Folding. *) let fold f x { hash_buckets = buckets } = Array.fold_left (fun x entries -> List.fold_left (fun x (v1, v2, depth) -> f x v1 v2 depth) x entries) x buckets end module NoOrder = struct let reorder v1 v2 = v1, v2 end module SymOrder = struct let reorder v1 v2 = if Lm_symbol.compare v1 v2 < 0 then v1, v2 else v2, v1 end module AsymSymbolMatrix = MakeSymbolMatrixTable (NoOrder) module SymSymbolMatrix = MakeSymbolMatrixTable (SymOrder) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_float80.mli0000664000152300015230000000557110456222231021144 0ustar jyhjyh(* Support for 80-bit floating point values Copyright (C) 2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) (* Lm_float80 type definition *) type float80 (* Lm_float80 constants *) val zero : float80 val one : float80 val minus_one : float80 (* Lm_float80 coercions *) external to_string : float80 -> string = "string_of_float80" external to_float : float80 -> float = "float_of_float80" external to_int : float80 -> int = "int_of_float80" val to_int64 : float80 -> int64 external of_string : string -> float80 = "float80_of_string" external of_float : float -> float80 = "float80_of_float" external of_int : int -> float80 = "float80_of_int" val of_int64 : int64 -> float80 external format : string -> float80 -> string = "float80_format" (* Lm_float80 arithmetic functions *) external neg : float80 -> float80 = "float80_neg" external abs : float80 -> float80 = "float80_abs" external sin : float80 -> float80 = "float80_sin" external cos : float80 -> float80 = "float80_cos" external sqrt : float80 -> float80 = "float80_sqrt" external add : float80 -> float80 -> float80 = "float80_add" external sub : float80 -> float80 -> float80 = "float80_sub" external mul : float80 -> float80 -> float80 = "float80_mul" external div : float80 -> float80 -> float80 = "float80_div" external atan2 : float80 -> float80 -> float80 = "float80_atan2" val rem : float80 -> float80 -> float80 val succ : float80 -> float80 val pred : float80 -> float80 val is_zero : float80 -> bool external compare : float80 -> float80 -> int = "float80_compare" val min : float80 -> float80 -> float80 val max : float80 -> float80 -> float80 (* * BUG: these are hopefully temporary. * We use them to blit the float into a strng area. *) val blit_float32 : float80 -> string -> int -> unit val blit_float64 : float80 -> string -> int -> unit val blit_float80 : float80 -> string -> int -> unit omake-0.9.8.5/src/libmojave-external/util/lm_parse_id.ml0000664000152300015230000000261410456222231021277 0ustar jyhjyh(* Parse a CVS ID string Copyright (C) 2002 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) let parse_id id = let parts = Lm_string_util.split " " id in match parts with [_; name; rev; date; time; user; ty; _] -> name, rev, date, time, user, ty | _ -> raise (Failure "parse_id: Malformed ID string") let parse_id_revision id = try let _, rev, _, _, _, _ = parse_id id in rev with Failure _ -> "unknown" omake-0.9.8.5/src/libmojave-external/util/lm_hash_sig.ml0000664000152300015230000001532310622136177021307 0ustar jyhjyh(* * Signatures for the various hash functions and hash-cons tables. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology * and HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) (************************************************************************ * A basic table for adding a hash code to every element. * Nothing else is done, so comparisons are still slow. * This table is safe to marshal. *) module type HashArgSig = sig type t (* For debugging *) val debug : string (* The client needs to provide hash and comparison functions *) val hash : t -> int val compare : t -> t -> int end (* * A basic hashtbale. *) module type HashSig = sig type elt type t (* Creation *) val create : elt -> t val get : t -> elt (* Hash code *) val hash : t -> int (* Comparison *) val compare : t -> t -> int end (************************************************************************ * Table-based hash-consing. * Items are represented by their indexes into a table. * * This is the fastest implementation, but it is not safe to marshal * unless you also marshal the table. * * If you need a version that is safe to marshal, consider using the * HashMarshal below. It is only slightly slower. *) module type HashConsSig = sig type hash type state type elt type t (* States *) val create_state : unit -> state val length : state -> int (* Normal creation *) val icreate : state -> hash -> t val create : state -> elt -> t val get : state -> t -> elt (* Hash code *) val hash : t -> int (* Comparison *) val compare : t -> t -> int (* Map over an array of hash codes *) val map_array : (t -> elt -> 'a) -> state -> 'a array (* Fold over all of the items *) val fold : ('a -> t -> 'a) -> 'a -> state -> 'a end (************************************************************************ * Marshalable version. * * This takes a slightly different approach, wrapping the value in * a triple of a hash code and a dummy ref cell. During marshaling, * the cell will point somewhere else, so we know that the value * must be reinterned. The hash codes are preseved across * marshaling. *) (* * The client needs to provide these functions. *) module type HashMarshalArgSig = sig type t (* For debugging *) val debug : string (* The client needs to provide hash and comparison functions *) val hash : t -> int val compare : t -> t -> int val reintern : t -> t end (* * This is what we get. *) module type HashMarshalSig = sig type elt type t (* Creation *) val create : elt -> t (* The intern function fails with Not_found if the node does not already exist *) val intern : elt -> t (* Destructors *) val get : t -> elt val hash : t -> int (* Comparison *) val equal : t -> t -> bool val compare : t -> t -> int (* Rehash the value *) val reintern : t -> t end (************************************************************************ * A variation on the above marshalable version, with two equalities. * * Here we assume that the argument type has two notions of equality: * - A strong equality ("idenitity"). Two strongly equal items are considered * identical and should be coalesced during cons-hashing. * - A weak equality ("equivalence"). The weakly equal items should be * considered equivalent for the purposes of sets and tables, but they may * have some individual representational characteristics that should be * preserved. * * An example of this is filenames on case-insensitive case-preserving * filesystems. Here the strong equality is the normal string equality * (ensures case preservation) and the weak equality is the equality of the * canonical (e.g. lowercase) representations (ensures case insensitivity). *) (* * The client needs to provide these functions. *) module type HashMarshalEqArgSig = sig type t (* For debugging *) val debug : string (* * The client needs to provide the hash and the two comparison functions. *) val fine_hash : t -> int val fine_compare : t -> t -> int val coarse_hash : t -> int val coarse_compare : t -> t -> int (* Rehash the value *) val reintern : t -> t end (* * This is what we get. *) module type HashMarshalEqSig = sig include HashMarshalSig (* The default equality is the coarse one *) val fine_hash : t -> int val fine_compare : t -> t -> int val fine_equal : t -> t -> bool end (************************************************************************ * Better-than-usual hashes. *) module type HashCodeSig = sig type t val create : unit -> t val add_bits : t -> int -> unit (* Adds the last 11 bits *) val add_int : t -> int -> unit val add_nativeint : t -> Nativeint.t -> unit val add_int32 : t -> Int32.t -> unit val add_int64 : t -> Int64.t -> unit val add_float : t -> float -> unit val add_string : t -> string -> unit val code : t -> int end module type HashDigestSig = sig type t val create : unit -> t val add_bits : t -> int -> unit (* Adds the last 11 bits *) val add_bool : t -> bool -> unit val add_int : t -> int -> unit val add_nativeint : t -> Nativeint.t -> unit val add_int32 : t -> Int32.t -> unit val add_int64 : t -> Int64.t -> unit val add_float : t -> float -> unit val add_char : t -> char -> unit val add_string : t -> string -> unit val add_substring : t -> string -> int -> int -> unit val digest : t -> string end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_command_util.mli0000664000152300015230000001740410456222231022340 0ustar jyhjyh(* Command-line Interface Utilities Copyright (C) 2002 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) (*** Command Processing (Extract Commands) ***) (* get_next_argument args Return the first argument in an argument list, along with the tail of the list. This is NOT List.hd; if the list is empty, then this returns an empty string for the next argument. *) val get_next_argument : string list -> string * string list (* reconstruct_arguments args Return a string representing the indicated argument list. The arguments are NOT quoted by this function; think of it as a ``feature'' at this time ;) *) val reconstruct_arguments : string list -> string (*** Prompt Formatting and Display Properties ***) (* tcap_set_bold tcap_clear_attr Get terminal capabilities for formatting text. *) val tcap_set_bold : string option val tcap_clear_attr : string option (* xterm_escape_begin xterm_escape_end XTerm escape sequences for setting and clearing the title text. *) val xterm_escape_begin : string option val xterm_escape_end : string option (* bold_text text Makes the indicated text bold. If no termcap support was available, this returns the original prompt, unaltered. This is used primarily for prompt formatting. *) val bold_text : string -> string (* title_text appname text Format text to be displayed in a title, as in an xterm title. If the terminal is not an xterm, then this returns an empty string. This will NOT format the text to display anything to the console itself, under any circumstance. This may prepend the application name to the text. *) val title_text : string -> string -> string (*** Read-Eval-Print Lm_loop ***) (* run_status Used to indicate whether a read-eval-print loop should continue accepting commands, or if it should terminate. Once the loop is terminated, an arbitrary value may be returned. Continue Command wants the read-eval-print loop to continue. Exit value Command wants loop to exit and return given value. *) type 'result run_status = Continue | Exit of 'result (* run_command Type of command functions that are called by the read-eval-print loop. 'args is the type of the arguments (usually string list), and 'result is the value returned by commands once they are ready to exit the loop. *) type ('args, 'result) run_command = 'args -> 'result run_status (* command Type of a single command entry. This corresponds to a command name, the function to call when the command is invoked, and the help text for the command. *) type ('args, 'result) command = string * ('args, 'result) run_command * string (* run_info Information given to run_loop which determines how the command prompt is formatted and how help text is presented to the user. Contains these fields: ri_appname Name of the application (used in title prompt). ri_curses If true, the help display can use curses interface. ri_hack_title If true, title text will be displayed in prompts. ri_help_prefix Text/overview to prepend to any help display. ri_prompt Function which, when run, returns text to display on each command prompt. The function is passed a unit argument. ri_commands List of commands to accept, and their actions. ri_cmd_quit Function to call if ^D is struck. ri_arg_filter Command to run on the arguments before passing them to the command function. space_filter gives the usual string list, split on whitespace. *) type ('args, 'result) run_info = { ri_appname : string; ri_curses : bool; ri_hack_title : bool; ri_help_prefix : string; ri_prompt : unit -> string; ri_commands : ('args, 'result) command list; ri_cmd_quit : ('args, 'result) run_command; ri_arg_filter : string -> 'args } (* continue f args Takes f : args -> unit and builds a new function which will run f, then return Continue. *) val continue : ('a -> unit) -> 'a -> 'result run_status (* space_filter arguments Process arguments into a list of nonempty strings, which contain the arguments separated by whitespace. This is the typical filter given in the run_info structure. *) val space_filter : string -> string list (* no_filter arguments Pass the arguments through unaltered. *) val no_filter : string -> string (* read_eval_print run Read a single command, evaluate it, and print the results. This processes at most one command for constructing a test case; call it from within a loop to accept multiple commands. *) val read_eval_print : ('args, 'result) run_info -> 'result run_status (* run_loop read_eval_print run Runs the loop for evaluating ri_commands until the user quits and/or presses ^D. This catches any exceptions that may have been thrown by the read-eval-print loop, above. You must indicate what function should be called when ^D is pressed, using ri_cmd_quit. The given read_eval_print function is used; usually you want Mcc_command_util's version of read_eval_print. If the ri_curses flag is true, then the help system is allowed to use curses interface to display help on the commands. Any help text will be preceded by the contents of the string ri_help_prefix; the rest of the help is extracted from commands. This function catches EOF, ^C, Unix errors, Failures, and Invalid argument exceptions. If you wish to catch other exceptions in a manner that will not abort the run loop, you should pass in a custom read_eval_print which catches those exceptions and returns Continue. *) val run_loop : (('args, 'result) run_info -> 'result run_status) -> ('args, 'result) run_info -> 'result (* bad_arguments () Helper that indicates the arguments to a command were bad. *) val bad_arguments : unit -> unit (*** Specialised Prompts ***) (* yes_no_cancel appname hack_title prompt default Presents a yes/no/cancel prompt (^D maps to ``cancel'') for the user to respond to. Returns None if the user cancels, otherwise returns Some true if the user responds yes and Some false if the user responds no. *) val yes_no_cancel : string -> bool -> string -> bool option -> bool option (* yes_no appname hack_title prompt default Similar to yes_no_cancel, but ``cancel'' gets mapped to ``no''. *) val yes_no : string -> bool -> string -> bool -> bool (* ok_to_overwrite_file appname hack_title filename If the named file exists, this puts up a prompt if it is okay to overwrite the named file, which defaults to yes. No prompt is displayed if the file doesn't exist. This returns true if either the file doesn't exist, or the user says it is okay to overwrite. *) val ok_to_overwrite_file : string -> bool -> string -> bool omake-0.9.8.5/src/libmojave-external/util/lm_glob.ml0000664000152300015230000007602510574327150020452 0ustar jyhjyh(* * Glob expansion. * * There is a dilemma here for Win32. * Since \ is the pathname separator, we will * often see names like "dir\*.c". This is not * and escape sequence in the DOS shell, and in * fact * is not a valid character in Win32 * filenames. * * So, we could turn off escape sequences in Win32, * but doing this globally is a bad idea. For example, * what about the sequence dir\[a-z]*.c? In this case, * the [ and ] characters _are_ valid in Win32 filenames. * * For now, we punt. The \ character is considered to * be an escape character. If you want globbing in * Win32, use forward slashes. The result will still * use backslashes, so no worries. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_lexer open Lm_printf open Lm_filename_util (************************************************************************ * Tilde expansion. *) (* * Keep a table of entries. * Whenever we look a value in the passwd file, * add it to the table. *) let tilde_table = ref [||] (* * Keep the table sorted for quick lookup. *) let tilde_insert dir name = let table = !tilde_table in let len = Array.length table in if len = 0 then tilde_table := [|dir, name|] else (* Binary search *) let rec search i j = if i < j - 1 then let k = (i + j) / 2 in let dir', _ = table.(k) in if dir' > dir then search i k else search k j else i in let i = search (-1) len in if i >= 0 && fst table.(i) = dir then (if snd table.(i) <> "" then table.(i) <- dir, name) else let i = succ i in let ntable = Array.create (len + 1) table.(0) in Array.blit table 0 ntable 0 i; ntable.(i) <- dir, name; Array.blit table i ntable (i + 1) (len - i); tilde_table := ntable (* * Find an entry in the table. *) let rec tilde_matches dir1 dir2 len i = i = len || dir1.[i] = dir2.[i] && tilde_matches dir1 dir2 len (succ i) let tilde_collapse dir = let table = !tilde_table in let len = Array.length table in let rec search i j = if i < j - 1 then let k = (i + j) / 2 in let dir', _ = table.(k) in if dir' > dir then search i k else search k j else i in let i = search (-1) len in if i < 0 then dir else let dir', name = table.(i) in let len' = String.length dir' in let len = String.length dir in if len' <= len && tilde_matches dir' dir len' 0 then let namelen = String.length name in let length = len - len' + namelen + 1 in let s = String.make length ' ' in s.[0] <- '~'; String.blit name 0 s 1 namelen; String.blit dir len' s (namelen + 1) (len - len'); s else dir (* * Here is the caching getpwnam. *) let getpwnam user = let passwd = Unix.getpwnam user in let dir = passwd.Unix.pw_dir in tilde_insert dir user; dir let gethomedir = getpwnam (* * Try to figure out the home directory as best as possible. *) let home_dir = let home = Lm_unix_util.home_dir in tilde_insert home ""; home (* * Get a list of all the users. *) let getusers () = let users = Lm_unix_util.getpwents () in List.map (fun entry -> let { Unix.pw_name = name; Unix.pw_dir = dir } = entry in tilde_insert dir name; name) users (************************************************************************ * Glob expansion. *) type glob_option = GlobNoBraces (* Do not perform csh-style brace expansion *) | GlobNoTilde (* Do not perform tilde-expansion *) | GlobNoEscape (* The \ character does not escape special characters *) | GlobNoCheck (* If an expansion fails, return the expansion literally *) | GlobIgnoreCheck (* If an expansion fails, it expands to nothing *) | GlobDot (* Allow wildcards to match filenames with a leading . *) | GlobOnlyFiles (* Return only non-directories in the result *) | GlobOnlyDirs (* Return only directories in the result *) | GlobCVSIgnore (* Ignore files as specified by .cvsignore files *) | GlobIgnore of string list (* Ignore the files that match the pattern *) | GlobAllow of string list (* Allow only files that match the pattern *) | GlobIgnoreFun of (string -> bool) (* Ignore the files specified by the function *) | GlobAllowFun of (string -> bool) (* Allow only the files specified by the function *) | GlobHomeDir of string (* Home directory for ~ expansion *) | GlobProperSubdirs (* Include only proper subdirs in listing *) type glob_check = NoMatchError | NoMatchPreserve | NoMatchIgnore type glob_options = { glob_braces : bool; glob_tilde : bool; glob_escape : bool; glob_check : glob_check; glob_dot : bool; glob_files : bool; glob_dirs : bool; glob_cvs : bool; glob_ignore : (string -> bool); glob_allow : (string -> bool); glob_cvsignore : (string -> bool); glob_home : string; glob_proper : bool } let default_glob_options = { glob_braces = true; glob_tilde = true; glob_escape = true; glob_check = NoMatchError; glob_dot = false; glob_files = false; glob_dirs = false; glob_cvs = false; glob_ignore = (fun _ -> false); glob_allow = (fun _ -> true); glob_cvsignore = (fun _ -> false); glob_home = home_dir; glob_proper = false } (************************************************************************ * Utilities. *) (* * Determine if a string contains glob characters. *) let is_glob_string options name = let len = String.length name in let rec search lbrack i = if i >= len then false else match name.[i] with '*' | '?' -> true | '~' when i = 0 -> true | '[' -> search true (succ i) | ']' -> lbrack || search lbrack (succ i) | '\\' when options.glob_escape -> search lbrack (i + 2) | _ -> search lbrack (succ i) in search false 0 let glob_add_escaped options buf s = let len = String.length s in let rec collect i = if i < len then let c = String.unsafe_get s i in match c with '*' | '?' | '[' | ']' -> Buffer.add_char buf '\\'; Buffer.add_char buf c; collect (succ i) | '~' when i = 0 -> Buffer.add_char buf '\\'; Buffer.add_char buf c; collect (succ i) | '{' | '}' when options.glob_braces -> Buffer.add_char buf '\\'; Buffer.add_char buf c; collect (succ i) | '\\' when options.glob_escape -> Buffer.add_char buf '\\'; if i < len - 1 then begin Buffer.add_char buf s.[i + 1]; collect (i + 2) end | c -> Buffer.add_char buf c; collect (succ i) in collect 0 (* * Unescape a name. *) let unescape options s = if options.glob_escape then let len = String.length s in let buf = Buffer.create len in let rec collect i = if i = len then Buffer.contents buf else let c = s.[i] in if c = '\\' && i < len - 1 then let c = s.[i + 1] in match c with '*' | '?' | '[' | ']' | '~' | '{' | '}' -> Buffer.add_char buf c; collect (i + 2) | _ -> Buffer.add_char buf '\\'; collect (i + 1) else begin Buffer.add_char buf c; collect (i + 1) end in collect 0 else s (* * Don't add unnecessary separators. *) let filename_concat dir name = match dir, name with "", _ -> name | _, "" -> dir | _ -> Filename.concat dir name (* * Split the path into root part, and the rest. * If escaping is enabled, do not split at escape sequences, * but split everywhere else. *) let filename_split options s = let len = String.length s in let add_name names start i = if start < i then String.sub s start (i - start) :: names else names in let rec collect names start i = if i = len then add_name names start i else let c = s.[i] in match c with '/' -> collect (add_name names start i) (succ i) (succ i) | '\\' -> if options.glob_escape && i < len - 1 then let c = s.[i + 1] in match c with '*' | '?' | '[' | ']' | '~' -> collect names start (i + 2) | _ -> collect (add_name names start i) (succ i) (succ i) else collect (add_name names start i) (succ i) (succ i) | _ -> collect names start (succ i) in let names = collect [] 0 0 in List.rev names (* * Split the rest into parts. *) let filename_path options name = match filename_string name with AbsolutePath (root, path) -> AbsolutePath (root, filename_split options path) | RelativePath path -> RelativePath (filename_split options path) (************************************************************************ * Shell regular expressions. * *) let add_shell_pattern options buf s = let len = String.length s in let rec collect i = if i >= len then Buffer.add_char buf '$' else let c = s.[i] in match s.[i] with '*' -> Buffer.add_string buf ".*"; collect (succ i) | '?' -> Buffer.add_string buf "."; collect (succ i) | '.' | '+' | '^' | '$' | '|' | '(' | ')' | '{' | '}' -> Buffer.add_char buf '\\'; Buffer.add_char buf c; collect (succ i) | '\\' -> if options.glob_escape && i < len - 1 then let c = s.[i + 1] in match c with '*' | '?' | '[' | ']' | '~' -> Buffer.add_char buf '\\'; Buffer.add_char buf c; collect (i + 2) | _ -> Buffer.add_string buf "\\\\"; collect (succ i) else begin Buffer.add_string buf "\\\\"; collect (succ i) end | _ -> Buffer.add_char buf c; collect (succ i) in collect 0 let add_shell_disjunct options buf s = Buffer.add_string buf "|"; add_shell_pattern options buf s let regexp_of_shell_pattern options s = let buf = Buffer.create 32 in add_shell_pattern options buf s; LmStr.regexp (Buffer.contents buf) let make_filter options sl default = let buf = Buffer.create 32 in match sl with s :: sl -> add_shell_pattern options buf s; List.iter (add_shell_disjunct options buf) sl; let pattern = LmStr.regexp (Buffer.contents buf) in (fun name -> LmStr.string_match pattern name 0) | [] -> (fun _ -> default) (* * These are the files that CVS ignores by default. * https://www.cvshome.org/docs/manual/cvs-1.11.16/cvs_18.html#IDX266 *) let default_patterns = ["RCS"; "SCCS"; "CVS"; "CVS.adm"; "RCSLOG"; "cvslog.*"; "tags"; "TAGS"; ".make.state"; ".nse_depinfo"; ".svn"; "*~"; "#*"; ".#*"; ",*"; "_$*"; "*$"; "*.old"; "*.bak"; "*.BAK"; "*.orig"; "*.rej"; ".del-*"; "*.a"; "*.olb"; "*.o"; "*.obj"; "*.so"; "*.exe"; "*.Z"; "*.elc"; "*.ln"; "core.*"] let stdignore = let buf = Buffer.create 256 in Buffer.add_string buf "^\\.cvsignore$"; List.iter (add_shell_disjunct default_glob_options buf) default_patterns; LmStr.regexp (Buffer.contents buf) (* * Load the ignore expression from .cvsignore. *) let load_cvsignore dirname = let filename = filename_concat dirname ".cvsignore" in (* Get the patterns from the file *) let inx = open_in filename in let rec collect patterns = try collect (Lm_string_util.tokens_std (input_line inx) @ patterns) with End_of_file -> patterns in let patterns = collect [] in let () = close_in inx in (* Concatenate them into a large regular expression *) let buf = Buffer.create 256 in Buffer.add_string buf "^\\.cvsignore$"; List.iter (add_shell_disjunct default_glob_options buf) default_patterns; List.iter (add_shell_disjunct default_glob_options buf) patterns; LmStr.regexp (Buffer.contents buf) let load_cvsignore dirname = let pattern = try load_cvsignore dirname with Sys_error _ -> stdignore in (fun name -> LmStr.string_match pattern name 0) (* * Check if a filename refers to a directory. *) let is_dir filename = try (Unix.lstat filename).Unix.st_kind = Unix.S_DIR with Unix.Unix_error _ -> false (************************************************************************ * Globbing. *) (* * Collect glob options. *) let create_options l = let rec collect options l = match l with option :: l -> let options = match option with GlobNoBraces -> { options with glob_braces = false } | GlobNoTilde -> { options with glob_tilde = false } | GlobNoEscape -> { options with glob_escape = false } | GlobNoCheck -> { options with glob_check = NoMatchPreserve } | GlobIgnoreCheck -> { options with glob_check = NoMatchIgnore } | GlobDot -> { options with glob_dot = true } | GlobOnlyFiles -> { options with glob_files = true } | GlobOnlyDirs -> { options with glob_dirs = true } | GlobCVSIgnore -> { options with glob_cvs = true } | GlobIgnoreFun f -> { options with glob_ignore = f } | GlobAllowFun f -> { options with glob_allow = f } | GlobIgnore sl -> { options with glob_ignore = make_filter options sl false } | GlobAllow sl -> { options with glob_allow = make_filter options sl true } | GlobHomeDir dir -> { options with glob_home = dir } | GlobProperSubdirs -> { options with glob_proper = true } in collect options l | [] -> options in collect default_glob_options l (* * Perform brace expansion. *) let rec expand_braces options expanded_names unexpanded_names = match unexpanded_names with name :: unexpanded_names -> let len = String.length name in let expanded_names, unexpanded_names = (* Search for the first brace *) let rec search_brace i = if i >= len then name :: expanded_names, unexpanded_names else match name.[i] with '\\' when options.glob_escape -> search_brace (i + 2) | '{' -> search_found 0 i (i + 1) [] (i + 1) | _ -> search_brace (i + 1) (* Found a brace, search for the parts *) and search_found level start last names i = if i >= len then raise (Failure (name ^ ": brace mismatch")); match name.[i] with '\\' when options.glob_escape -> search_found level start last names (i + 2) | ',' when level = 0 -> let name = String.sub name last (i - last) in search_found level start (i + 1) (name :: names) (i + 1) | '{' -> search_found (succ level) start last names (i + 1) | '}' when level = 0 -> let pref = String.sub name 0 start in let suf = String.sub name (i + 1) (len - i - 1) in let name = String.sub name last (i - last) in let names = name :: names in let names = List.map (fun s -> pref ^ s ^ suf) names in expanded_names, List.append names unexpanded_names | '}' -> search_found (pred level) start last names (i + 1) | _ -> search_found level start last names (i + 1) in search_brace 0 in expand_braces options expanded_names unexpanded_names | [] -> expanded_names let glob_braces options names = if options.glob_braces then expand_braces options [] (List.rev names) else names (* * Expand a glob pattern. * The dir is a fully-expanded directory name. *) let glob_dir_pattern options root dirs names dir pattern = let options = if options.glob_cvs then { options with glob_cvsignore = load_cvsignore dir } else options in let root_dir = filename_concat root dir in let dirx = Unix.opendir root_dir in let rec collect dirs names = let name = try Some (Unix.readdir dirx) with End_of_file -> None in match name with None -> dirs, names | Some "" | Some "." | Some ".." -> collect dirs names | Some name -> let root_name = filename_concat root_dir name in let file_name = filename_concat dir name in let dir_flag = is_dir root_name in let dirs, names = if (options.glob_dot || name.[0] <> '.') && (not options.glob_files || not dir_flag) && (not options.glob_dirs || dir_flag) && LmStr.string_match pattern name 0 && not (options.glob_ignore name) && (options.glob_allow name) && not (options.glob_cvsignore name) then if dir_flag then file_name :: dirs, names else dirs, file_name :: names else dirs, names in collect dirs names in let dirs_names = collect dirs names in Unix.closedir dirx; dirs_names let glob_dirs_pattern options root dirs pattern = let rec collect dirs' names' dirs = match dirs with dir :: dirs -> let dirs', names' = glob_dir_pattern options root dirs' names' dir pattern in collect dirs' names' dirs | [] -> dirs', names' in collect [] [] dirs let glob_dirs_name options root dirs name = if is_glob_string options name then let options = if name <> "" && name.[0] = '.' then { options with glob_dot = true } else options in let pattern = regexp_of_shell_pattern options name in glob_dirs_pattern options root dirs pattern else let name = unescape options name in List.fold_left (fun (dirs, names) dir -> let root_dir = filename_concat root dir in let root_name = filename_concat root_dir name in let file_name = filename_concat dir name in try let stat = Unix.LargeFile.stat root_name in if stat.Unix.LargeFile.st_kind = Unix.S_DIR then file_name :: dirs, names else dirs, file_name :: names with Unix.Unix_error _ -> dirs, names) ([], []) dirs (* * Perform tilde expansion. *) let null_root = "" let glob_tilde options root dir path = if options.glob_tilde then match path with name :: rest -> let len = String.length name in if len > 0 && name.[0] = '~' then if len = 1 then null_root, options.glob_home, rest else let user = String.sub name 1 (len - 1) in let dir = try getpwnam user with Not_found -> raise (Failure ("Unknown user: " ^ user)) in null_root, dir, rest else if len > 1 && name.[0] = '\\' && name.[1] = '~' then root, dir, String.sub name 1 (len - 1) :: rest else root, dir, path | [] -> root, dir, path else root, dir, path (* * Perform a glob expansion on a single path. *) let glob_match options root dir name = (* Split the path into components *) let root, dir, path = match filename_path options name with RelativePath path -> root, dir, path | AbsolutePath (root, path) -> null_root, string_of_root root, path in (* Do ~ expansion *) let root, dir, path = glob_tilde options root dir path in (* Walk through the path *) let rec glob dirs path = match path with [] -> dirs, [] | [name] -> glob_dirs_name options root dirs name | name :: path -> let options = { options with glob_dirs = true } in let dirs, _ = glob_dirs_name options root dirs name in glob dirs path in glob [dir] path (* * Don't glob-expand unless it is a glob pattern. *) let glob_name options root dir name = if is_glob_string options name then let dirs, names = glob_match options root dir name in if dirs = [] && names = [] then match options.glob_check with NoMatchError -> raise (Failure (name ^ ": bad match")) | NoMatchPreserve -> [], [name] | NoMatchIgnore -> [], [] else dirs, names else let name = unescape options name in let root_dir = filename_concat root dir in let root_name = filename_concat root_dir name in let file_name = filename_concat dir name in if is_dir root_name then [file_name], [] else [], [file_name] (* * Perform the actual glob. *) let glob options dir names = let names = glob_braces options names in List.fold_left (fun (dirs, names) name -> let dirs', names' = glob_name options dir "" name in let dirs = List.rev_append dirs' dirs in let names = List.rev_append names' names in dirs, names) ([], []) names (* * Don't glob-expand unless it is a glob pattern. * For argv expansion, we don't care about what is a directory * and what is not. *) let glob_argv_name options root dir name = if is_glob_string options name then let dirs, names = glob_match options root dir name in if dirs = [] then if names = [] then match options.glob_check with NoMatchError -> raise (Failure (name ^ ": bad match")) | NoMatchPreserve -> [name] | NoMatchIgnore -> [] else names else if names = [] then dirs else let names = List.append dirs names in List.sort Pervasives.compare names else let name = unescape options name in let file_name = filename_concat dir name in [file_name] (* * Glob an argv list. * We have to be a little more careful to preserve the order. *) let glob_argv options dir names = let names = glob_braces options names in let names = List.fold_left (fun names name -> let names' = glob_argv_name options dir "" name in List.rev_append names' names) [] names in List.rev names (************************************************************************ * Directory listings. *) (* * Get all the names in the directory. *) let list_dir_exn options root hidden_dirs dirs names dirname = let inx = Unix.opendir (filename_concat root dirname) in let rec read hidden_dirs dirs names = let name = try Some (Unix.readdir inx) with End_of_file -> None in match name with Some "." | Some ".." -> read hidden_dirs dirs names | None -> hidden_dirs, dirs, names | Some name -> let hidden_dirs, dirs, names = let filename = filename_concat dirname name in let dir_flag = is_dir filename in if (options.glob_dot || name.[0] <> '.') && (dir_flag || not options.glob_dirs) && not (options.glob_ignore name) && not (options.glob_cvsignore name) then if dir_flag then if options.glob_allow name then hidden_dirs, filename :: dirs, names else filename :: hidden_dirs, dirs, names else if options.glob_allow name then hidden_dirs, dirs, filename :: names else hidden_dirs, dirs, names else hidden_dirs, dirs, names in read hidden_dirs dirs names in let hidden_dirs_names = read hidden_dirs dirs names in Unix.closedir inx; hidden_dirs_names let list_dir_aux options root hidden_dirs dirs names dirname = let options = if options.glob_cvs then { options with glob_cvsignore = load_cvsignore (filename_concat root dirname) } else options in try list_dir_exn options root hidden_dirs dirs names dirname with Unix.Unix_error _ | Sys_error _ | Failure _ -> hidden_dirs, dirs, names (* * Perform a directory listing. *) let list_dirs options root dirs = let rec collect dirs names l = match l with dir :: l -> let _, dirs, names = list_dir_aux options root [] dirs names dir in collect dirs names l | [] -> dirs, names in collect [] [] dirs (* * Recursive directory listing. *) let list_dirs_rec options root dirs = let rec collect examined_dirs hidden_dirs unexamined_dirs names = match hidden_dirs, unexamined_dirs with dir :: hidden_dirs, _ -> let hidden_dirs, unexamined_dirs, names = list_dir_aux options root hidden_dirs unexamined_dirs names dir in collect examined_dirs hidden_dirs unexamined_dirs names | [], dir :: unexamined_dirs -> let examined_dirs = dir :: examined_dirs in let hidden_dirs, unexamined_dirs, names = list_dir_aux options root hidden_dirs unexamined_dirs names dir in collect examined_dirs hidden_dirs unexamined_dirs names | [], [] -> examined_dirs, names in let hidden_dirs, unexamined_dirs = List.fold_left (fun (hidden_dirs, unexamined_dirs) dir -> if options.glob_allow dir then hidden_dirs, dir :: unexamined_dirs else dir :: hidden_dirs, unexamined_dirs) ([], []) dirs in collect [] hidden_dirs unexamined_dirs [] (* * Recursively expand all subdirectories. *) let subdirs_of_dirs options root dirs = let options = { options with glob_dirs = true } in let rec collect listing hidden_dirs dirs = match hidden_dirs, dirs with dir :: hidden_dirs, _ -> let hidden_dirs, dirs, _ = list_dir_aux options root hidden_dirs dirs [] dir in collect listing hidden_dirs dirs | [], dir :: dirs -> let listing = dir :: listing in let hidden_dirs, dirs, _ = list_dir_aux options root hidden_dirs dirs [] dir in collect listing hidden_dirs dirs | [], [] -> listing in let hidden_dirs, dirs = if options.glob_proper then dirs, [] else [], dirs in collect [] hidden_dirs dirs (* * Regular expression export. *) let regex_of_shell_pattern = regexp_of_shell_pattern (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_loop.mli0000664000152300015230000000402710456222231020633 0ustar jyhjyh(* * This module implements dominator calculations and * loop-nest trees. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_trace (* * State type. *) type 'a t (* * Lm_debug flag. *) val debug_loop : bool ref (* * Printing. *) val pp_print_trace : formatter -> ('a -> symbol) -> 'a trace -> unit (* * Calculate the loop nest tree. * The arguments are: * node_name : 'a -> symbol * node_succ : 'a -> symbol list * root : 'a * nodes : 'a list * * You have to provide the root node for the graph. * Typically, this means you should create a trivial * node that has edges to all loop header nodes. *) val create : string -> ('a -> symbol) -> ('a -> symbol list) -> 'a -> 'a list -> 'a t val loop_nest : 'a t -> ('a -> symbol) -> 'a trace val dominators : 'a t -> ('a -> symbol) -> symbol SymbolTable.t (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_ncurses.ml0000664000152300015230000001240410456222231021171 0ustar jyhjyh(* * Simple NCurses interface. * Copyright (C) 2002 Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. *) (*** Types ***) (* window Type of all ncurses window interfaces. This type is abstract in OCaml but is a real pointer in the C code (interned by ncurses). *) type window (* attr Attributes which can be passed to the various attr() functions. These control the display properties of the window. *) type attr = A_NORMAL | A_STANDOUT | A_UNDERLINE | A_REVERSE | A_BLINK | A_DIM | A_BOLD | A_PROTECT | A_INVIS | A_ALTCHARSET | A_CHARTEXT (*** C Interface Functions for Key Values ***) external caml_key_down : unit -> int = "caml_key_down" external caml_key_up : unit -> int = "caml_key_up" external caml_key_left : unit -> int = "caml_key_left" external caml_key_right : unit -> int = "caml_key_right" external caml_key_home : unit -> int = "caml_key_home" external caml_key_end : unit -> int = "caml_key_end" external caml_key_npage : unit -> int = "caml_key_npage" external caml_key_ppage : unit -> int = "caml_key_ppage" external caml_key_enter : unit -> int = "caml_key_enter" external caml_key_cancel: unit -> int = "caml_key_cancel" (*** Key Values ***) let key_down = caml_key_down () let key_up = caml_key_up () let key_left = caml_key_left () let key_right = caml_key_right () let key_home = caml_key_home () let key_end = caml_key_end () let key_npage = caml_key_npage () let key_ppage = caml_key_ppage () let key_enter = caml_key_enter () let key_cancel = caml_key_cancel () let key_err = -1 let key_ctrla = 1 let key_ctrld = 4 let key_ctrle = 5 let key_ctrlj = 10 let key_ctrll = 12 let key_ctrlm = 13 let key_ctrlu = 21 let key_ctrlv = 22 (*** C Interface Functions for Curses ***) external caml_curses_enabled : unit -> bool = "caml_curses_enabled" external caml_curses_initscr : unit -> unit = "caml_curses_initscr" external caml_curses_endwin : unit -> unit = "caml_curses_endwin" external caml_curses_newwin : int -> int -> int -> int -> window = "caml_curses_newwin" external caml_curses_delwin : window -> unit = "caml_curses_delwin" external caml_curses_waddch : window -> char -> unit = "caml_curses_waddch" external caml_curses_waddstr : window -> string -> unit = "caml_curses_waddstr" external caml_curses_wattron : window -> attr -> unit = "caml_curses_wattron" external caml_curses_wattroff : window -> attr -> unit = "caml_curses_wattroff" external caml_curses_wgetch : window -> int = "caml_curses_wgetch" external caml_curses_wgetstr : window -> string = "caml_curses_wgetstr" external caml_curses_wrefresh : window -> unit = "caml_curses_wrefresh" external caml_curses_wnoutrefresh : window -> unit = "caml_curses_wnoutrefresh" external caml_curses_doupdate : unit -> unit = "caml_curses_doupdate" external caml_curses_refreshscreen : unit -> unit = "caml_curses_refreshscreen" external caml_curses_werase : window -> unit = "caml_curses_werase" external caml_curses_wclrtoeol : window -> unit = "caml_curses_wclrtoeol" external caml_curses_wclrtobot : window -> unit = "caml_curses_wclrtobot" external caml_curses_wmove : window -> int -> int -> unit = "caml_curses_wmove" external caml_curses_getyx : window -> int * int = "caml_curses_getyx" external caml_curses_getmaxyx : window -> int * int = "caml_curses_getmaxyx" external caml_curses_scrollok : window -> bool -> unit = "caml_curses_scrollok" external caml_curses_echook : bool -> unit = "caml_curses_echook" external caml_curses_wscrl : window -> int -> unit = "caml_curses_wscrl" (*** Exported Interface ***) let curses_enabled = caml_curses_enabled () let initscr = caml_curses_initscr let endwin = caml_curses_endwin let newwin = caml_curses_newwin let delwin = caml_curses_delwin let waddch = caml_curses_waddch let waddstr = caml_curses_waddstr let wattron = caml_curses_wattron let wattroff = caml_curses_wattroff let wgetch = caml_curses_wgetch let wgetstr = caml_curses_wgetstr let wrefresh = caml_curses_wrefresh let wnoutrefresh = caml_curses_wnoutrefresh let doupdate = caml_curses_doupdate let refreshscreen = caml_curses_refreshscreen let werase = caml_curses_werase let wclrtoeol = caml_curses_wclrtoeol let wclrtobot = caml_curses_wclrtobot let wmove = caml_curses_wmove let getyx = caml_curses_getyx let getmaxyx = caml_curses_getmaxyx let scrollok = caml_curses_scrollok let echook = caml_curses_echook let wscrl = caml_curses_wscrl omake-0.9.8.5/src/libmojave-external/util/lm_rawfloat.ml0000664000152300015230000000561510456222231021334 0ustar jyhjyh(* Support for raw floating point values Copyright (C) 2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) (* Various forms of raw floats *) type float_precision = Single | Double | LongDouble type rawfloat = float_precision * Lm_float80.float80 (* * Operations. *) let precision (pre, _) = pre (* * Conversions. *) let to_string (_, x) = Lm_float80.to_string x let to_float (_, x) = Lm_float80.to_float x let to_float80 (_, x) = x let to_int64 (_, x) = Lm_float80.to_int64 x let to_int (_, x) = Lm_float80.to_int x let to_rawint p s (_, x) = Lm_rawint.of_int64 p s (Lm_float80.to_int64 x) let of_int pre x = pre, Lm_float80.of_int x let of_float pre x = pre, Lm_float80.of_float x let of_float80 pre x = pre, x let of_rawfloat pre (_, x) = pre, x let of_rawint pre i = let j = Lm_rawint.to_int64 i in let signed = Lm_rawint.signed i in let x = Lm_float80.of_int64 j in let x = if not signed && j < Int64.zero then Lm_float80.neg x else x in pre, x let of_string pre s = pre, Lm_float80.of_string s (* * Arithmetic. *) let neg (pre, x) = (pre, Lm_float80.neg x) let abs (pre, x) = (pre, Lm_float80.abs x) let sin (pre, x) = (pre, Lm_float80.sin x) let cos (pre, x) = (pre, Lm_float80.cos x) let sqrt (pre, x) = (pre, Lm_float80.sqrt x) let add (pre, x) (_, y) = (pre, Lm_float80.add x y) let sub (pre, x) (_, y) = (pre, Lm_float80.sub x y) let mul (pre, x) (_, y) = (pre, Lm_float80.mul x y) let div (pre, x) (_, y) = (pre, Lm_float80.div x y) let rem (pre, x) (_, y) = (pre, Lm_float80.rem x y) let atan2 (pre, x) (_, y) = (pre, Lm_float80.atan2 x y) let succ (pre, x) = (pre, Lm_float80.succ x) let pred (pre, x) = (pre, Lm_float80.pred x) let uminus = neg (* * Comparison. *) let is_zero (_, x) = Lm_float80.is_zero x let compare (_, x) (_, y) = Lm_float80.compare x y let min x y = if compare x y < 0 then x else y let max x y = if compare x y > 0 then x else y omake-0.9.8.5/src/libmojave-external/util/lm_lexer.ml0000664000152300015230000027224110556173566020656 0ustar jyhjyh(* * Construction of lexical analyzers. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_hash open Lm_debug open Lm_printf open Lm_location open Lm_int_set let debug_lex = create_debug (**) { debug_name = "lex"; debug_description = "Debug the lexer"; debug_value = false } let debug_lexgen = create_debug (**) { debug_name = "lexgen"; debug_description = "Debug the lexer generator"; debug_value = false } (************************************************************************ * Modules. *) (* * We simulate the NFA using the normal subset construction. * That is, the state of the DFA is a set of states of the NFA. * * In addition, we have counters for the r{n,m} regular expressions. * * So, we model a state of the NFA as a state and the list of * counters. A state of the DFA is a sorted list of NFA states. *) module NfaStateCore = struct type t = int * int list (* * Reset one of the counters. *) let rec reset_counter counters i = match counters with counter :: counters -> if i = 0 then 0 :: counters else counter :: reset_counter counters (pred i) | [] -> raise (Invalid_argument "reset_counter: illegal counter") (* * Increment one of the counters. * Return the new counter value too. *) let rec incr_counter counters i min final max start = let rec incr counters i = match counters with counter :: counters -> if i = 0 then let counter = succ counter in counter, counter :: counters else let i, counters = incr counters (pred i) in i, counter :: counters | [] -> raise (Invalid_argument "incr_counter: illegal counter") in let counter, counters' = incr counters i in if counter < min then [start, counters'] else if counter = min then [final, counters'; start, counters'] else if max >= min && counter > max then [] else if max < min then (* This is an optimization: no need to increment the counter *) [final, counters; start, counters] else [final, counters'; start, counters'] end;; (* * Hash them. *) module NfaStateArg = struct type t = NfaStateCore.t let debug = "NfaState" let hash (s, counters) = hash_int_list (s lxor 0x2c18c4d5) counters let compare ((s1, counters1) : t) ((s2, counters2) : t) = if s1 < s2 then -1 else if s1 > s2 then 1 else compare_int_list counters1 counters2 end;; module NfaState = MakeHashCons (NfaStateArg);; module NfaStateSet = Lm_set.LmMake (NfaState);; module NfaStateTable = Lm_map.LmMake (NfaState);; (* * DFA states. *) module DfaStateCore = struct type t = NfaState.t list (* Sorted *) (* * Empty set. *) let empty = ([] : t) (* * Membership. *) let mem (set : t) (state : NfaState.t) = List.mem state set (* * Add an element to the set. *) let rec add (set : t) (state : NfaState.t) = match set with j :: s -> if j > state then state :: set else if j = state then set else j :: add s state | [] -> [state] (* * Union of two sets. *) let rec union (s1 : t) (s2 : t) = match s1, s2 with i1 :: l1, i2 :: l2 -> if i1 = i2 then i1 :: union l1 l2 else if i1 < i2 then i1 :: union l1 s2 else i2 :: union s1 l2 | _, [] -> s1 | [], _ -> s2 end;; module DfaStateArg = struct type t = DfaStateCore.t let debug = "DfaState" let hash state = let buf = HashCode.create () in HashCode.add_int buf 0x0affb3d4; List.iter (fun state -> HashCode.add_int buf (NfaState.hash state)) state; HashCode.code buf let rec compare l1 l2 = match l1, l2 with state1 :: l1, state2 :: l2 -> let cmp = NfaState.compare state1 state2 in if cmp = 0 then compare l1 l2 else cmp | [], _ :: _ -> -1 | _ :: _, [] -> 1 | [], [] -> 0 end;; module DfaState = MakeHashCons (DfaStateArg);; module DfaStateTable = Lm_map.LmMake (DfaState);; module IntCompare = struct type t = int let compare = (-) end module IntSet = Lm_set.LmMake (IntCompare);; module IntTable = Lm_map.LmMake (IntCompare);; (* * A argument has two parts. *) type arg = ArgLeft of int | ArgRight of int | ArgSearch module ArgCompare = struct type t = arg let compare a1 a2 = match a1, a2 with ArgLeft i1, ArgLeft i2 | ArgRight i1, ArgRight i2 -> if i1 < i2 then -1 else if i1 > i2 then 1 else 0 | ArgSearch, ArgSearch -> 0 | ArgLeft _, ArgRight _ | ArgLeft _, ArgSearch | ArgRight _, ArgSearch -> -1 | ArgSearch, ArgRight _ | ArgSearch, ArgLeft _ | ArgRight _, ArgLeft _ -> 1 end;; module ArgTable = Lm_map.LmMake (ArgCompare);; (* * A TransTable represents the transition function for a DFA. * We represent this as a sorted array of entries. *) (* * Binary search returns the smallest element * that is no smaller than the key. *) let rec binary_search table (key : int) i j = if i < j - 1 then let k = (i + j) lsr 1 in let key', _ = table.(k) in if key' < key then binary_search table key k j else binary_search table key i k else j module TransTable = struct type 'a t = (int * 'a) array let empty = [||] (* * Find an entry in the table, * returning the default value if not found. *) let find table key default = let len = Array.length table in let i = binary_search table key (-1) len in if i = len then default else let key', value = table.(i) in if key' = key then value else default (* * Add an entry to the table. * Assumes the entry does not already exist. *) let add table key value = let len = Array.length table in if len = 0 then [|key, value|] else let i = binary_search table key (-1) len in let new_array = Array.create (len + 1) (key, value) in Array.blit table 0 new_array 0 i; Array.blit table i new_array (i + 1) (len - i); new_array end (************************************************************************ * Lexer construction. *) (* * Argument types. *) module type LexerInput = sig (* * Input channel is a stream of integers. * Usually these are just the ASCII codes for characters. *) type t (* * The channel has two special characters. * bof: the beginning of file * eof: the end of file. *) val bof : int val eof : int (* * The next function returns the next character in the input stream. *) val lex_next : t -> int (* * The pos function returns the current position of * the input buffer within the lexeme * (used for collecting \( ... \) arguments). *) val lex_pos : t -> int (* * The lexer will call start when it begins lexing. * The integer should be the *previous* character in the * input channel, or bof if at the beginning. *) val lex_start : t -> int (* * In some cases, the lexer may want to restart scanning * from a previous point. If so, it will call this function * to reset the start point. *) val lex_restart : t -> int -> unit (* * When the lexer is done, it calls lex_stop with * the number of characters in the final lexeme. Note * that this can cause data to be pushed back onto the input stream. *) val lex_stop : t -> int -> unit (* * Before calling lex_stop, the lexer may ask for the * lexeme as a string. The integer is the number of * characters in the lexeme, the same as the argument * to lex_stop. *) val lex_string : t -> int -> string val lex_substring : t -> int -> int -> string val lex_loc : t -> int -> loc end module type LexerAction = sig (* * Semantic actions. * Values of action type *must* be comparable with =, * hopefully quickly. * * For example, functions are not allowed. * If you want a function, you should make an array of functions, * and use the index for the action name. *) type action (* For debugging *) val pp_print_action : out_channel -> action -> unit (* For creating sets and tables *) val hash : action -> int val compare : action -> action -> int (* * You can use the function to decide which clauses take * precedence for a match of equal length. The function * gets two clause numbers. If you use the min function, * then you get the first clause that matched. If you * use the max function, you get the second clause that * matched. *) val choose : int -> int -> int end module MakeLexer (Input : LexerInput) (Action : LexerAction) = struct open Action (* * For now, just create a default action set. *) module ActionCompare = struct type t = action let compare = Action.compare end module ActionSet = Lm_set.LmMake (ActionCompare);; (************************************************************************ * Types. *) (* * A simplified regular expression. *) (* %%MAGICBEGIN%% *) type regex = RegexAnySymbol | RegexSymbol of IntSet.t | RegexExceptSymbol of IntSet.t | RegexLimitPrev of IntSet.t | RegexLimitNext of IntSet.t | RegexChoice of regex list | RegexSequence of regex list | RegexStar of regex | RegexPlus of regex | RegexInterval of regex * int * int (* regex, min, max *) | RegexArg of regex (* * Termination symbols. *) type regex_term = RegexTermEof | RegexTermRightParen of int | RegexTermRightArg of int | RegexTermPipe of int (* * An expression is nearly an NFA, * but designed to be built incrementally. * The id is an arbitrary int, but all clauses * must have unique ids. *) type exp = { exp_clauses : (action * int * regex) list; exp_id : int } (* * An action specifies: * ActionEpsilon state : epsilon transition to the given states * ActionArgStart i : start collecting the arguments for the rules * ActionArgStop i : stop collecting the arguments for the rules * ActionStop i : rule i is finished * ActionSymbol table : transition function * ActionLimit syms : normally an epsilon transition, but limited to syms * (this is to handle \< and \> symbols) *) type nfa_action = NfaActionEpsilon of int list (* next state list *) | NfaActionArgStart of int * int (* arg id, next state *) | NfaActionArgStop of int * int (* arg id, next state *) | NfaActionArgSearch of int (* next state *) | NfaActionStop of int (* clause id, next state *) | NfaActionSymbol of IntSet.t * int (* symbols, next state *) | NfaActionAnySymbol of int (* next state *) | NfaActionExceptSymbol of IntSet.t * int (* symbols, next state *) | NfaActionLimitPrev of IntSet.t * int (* symbols, next state *) | NfaActionLimitNext of IntSet.t * int (* symbols, next state *) | NfaActionNone | NfaActionResetCounter of int * int list (* counter, next state list *) | NfaActionIncrCounter of int * int * int * int * int (* counter, min, final, max, restart *) (* * This is the argument info we pass to the DFA. *) type arg = { arg_index : int; arg_clause : int; arg_number : int } (* * This is the info we accumulate during compilation. * nfa_index : the index of the next state to be allocated * nfa_counter : the total number of interval expression we have seen * nfa_arg_index : the identifier of the next argument *) type nfa_accum = { nfa_index : int; nfa_counter : int; nfa_arg_index : int } (* * This is the info we pass left-to-right during compilation. * nfa_clause : the index of the current clause being compiled * nfa_arg_number : the index of the next argument *) type nfa_info = { nfa_clause : int; nfa_arg_number : int } (* * A state in the machine. *) type nfa_state = { nfa_state_index : int; nfa_state_action : nfa_action } (* * The NFA has a start state, * and an array of states. *) type nfa = { nfa_hash : NfaState.state; nfa_actions : action IntTable.t; nfa_start : NfaState.t; nfa_search_start : NfaState.t; nfa_search_states : NfaStateSet.t; nfa_table : nfa_state array; nfa_args : IntSet.t IntTable.t } (* * DFA actions. The action include looking for final states * (the dfa_action_final field), as well as argument actions. * * The argument actions happen on the NfaState.t components of * the DFA state. The action table gives the actions that must * be performed for each NFA component that is the *target* * of the transition. * * Invariant: there is an entry in the dfa_action_parts for each * NFA component of the state that is the target of the transition. *) type dfa_action_inst = DfaActionArgStart of int | DfaActionArgStop of int | DfaActionArgSearch type dfa_action_arg = { dfa_action_off : int; dfa_action_inst : dfa_action_inst } type dfa_action = { dfa_action_src : NfaState.t; dfa_action_args : dfa_action_arg list } type dfa_actions = { dfa_action_final : (int * NfaState.t) option; (* clause id, NFA state *) dfa_action_actions : dfa_action NfaStateTable.t (* Actions for each of the target NFA components *) } (* * A transition may specify a new state and some actions. * or it may not exist, * or it may be unknown. *) type dfa_transition = DfaTransition of int * dfa_actions | DfaNoTransition | DfaUnknownTransition (* * A DFA state has an index, * the subset of states for the NFA, * and a lazy transition function. *) type dfa_state = { dfa_state_index : int; dfa_state_set : DfaState.t; mutable dfa_state_delta : dfa_transition TransTable.t } (* * The DFA has: *) type dfa = { mutable dfa_states : dfa_state array; (* May be partially filled *) mutable dfa_length : int; (* Index of the largest valid state *) mutable dfa_map : int DfaStateTable.t; (* Map from NFA state subsets to DFA states *) dfa_table : nfa_state array; (* The NFA *) dfa_action_table : action IntTable.t; (* The map from clause id to actions *) dfa_search_states : NfaStateSet.t; (* Set of states for searching *) dfa_nfa_hash : NfaState.state; (* HashCons table for NFA states *) dfa_dfa_hash : DfaState.state (* HashCons table for DFA states *) } (* * The actual type. *) type t = { lex_exp : exp; mutable lex_dfa : dfa option } (* %%MAGICEND%% *) (* * The pre-action is a partial action computation before * the complete action is collected. *) type pre_action = { pre_action_final : int option; (* clause id *) pre_action_args : dfa_action_arg list } (* * When we are scanning, we also have state. *) type dfa_info = { mutable dfa_stop_clause : int; (* Clause id of the last match, or 0 if none *) mutable dfa_stop_pos : int; (* Position of the last match *) mutable dfa_stop_args : int ArgTable.t; (* Arguments in the final state *) mutable dfa_start_pos : int; (* Starting position *) (* The current argument state *) mutable dfa_args : int ArgTable.t NfaStateTable.t; (* * The channel we are scanning from. *) dfa_channel : Input.t } (* Return values from the searchto function *) type searchto_info = LexEOF | LexSkipped of loc * string | LexMatched of action * loc * string * string * string list (************************************************************************ * Characters and classes. *) let bof = Input.bof let eof = Input.eof let zero_char = Char.code '0' let at_char = Char.code '@' let alert_char = Char.code 'G' - at_char let backspace_char = Char.code 'H' - at_char let formfeed_char = Char.code 'L' - at_char let newline_char = Char.code '\n' let cr_char = Char.code '\r' let tab_char = Char.code '\t' let vertical_tab_char = Char.code 'K' - at_char let hex_a_char = Char.code 'a' - 10 let hex_A_char = Char.code 'A' - 10 let alert_chars = IntSet.singleton alert_char let backspace_chars = IntSet.singleton backspace_char let formfeed_chars = IntSet.singleton formfeed_char let newline_chars = IntSet.singleton newline_char let cr_chars = IntSet.singleton cr_char let tab_chars = IntSet.singleton tab_char let vertical_tab_chars = IntSet.singleton vertical_tab_char (* * Character sets. *) external omake_alnum : unit -> string = "omake_alnum" external omake_alpha : unit -> string = "omake_alpha" external omake_graph : unit -> string = "omake_graph" external omake_lower : unit -> string = "omake_lower" external omake_upper : unit -> string = "omake_upper" external omake_punct : unit -> string = "omake_punct" external omake_space : unit -> string = "omake_space" let singleton_char c = IntSet.singleton (Char.code c) let explode_chars_add chars s = let len = String.length s in let rec collect chars i = if i = len then chars else collect (IntSet.add chars (Char.code s.[i])) (succ i) in collect chars 0 let explode_chars s = explode_chars_add IntSet.empty s let bof_char = IntSet.singleton bof let eof_char = IntSet.singleton eof let bof_chars s = explode_chars_add bof_char s let eof_chars s = explode_chars_add eof_char s let alnum_chars = explode_chars (omake_alnum ()) let alpha_chars = explode_chars (omake_alpha ()) let graph_chars = explode_chars (omake_graph ()) let lower_chars = explode_chars (omake_lower ()) let upper_chars = explode_chars (omake_upper ()) let punct_chars = explode_chars (omake_punct ()) let space_chars = explode_chars (omake_space ()) let blank_chars = explode_chars " \t" let cntrl_chars = let rec collect chars i = if i != 32 then collect (IntSet.add chars i) (succ i) else chars in collect IntSet.empty 0 let digit_chars = explode_chars "01234565789" let print_chars = IntSet.add graph_chars (Char.code ' ') let xdigit_chars = explode_chars_add digit_chars "abcdefABCDEF" let white_or_bof_chars = IntSet.add space_chars bof let white_or_eof_chars = IntSet.add space_chars eof let word_chars = IntSet.add alnum_chars (Char.code '_') let all_chars = let rec collect chars i = if i != 256 then collect (IntSet.add chars i) (succ i) else chars in collect IntSet.empty 0 let invert_chars chars = IntSet.diff all_chars chars let nonword_chars = invert_chars word_chars let bof_or_nonword_chars = IntSet.add nonword_chars bof let eof_or_nonword_chars = IntSet.add nonword_chars eof (************************************************************************ * Regular expressions. *) (* * Printer. *) let pp_print_char buf c = if c = bof then pp_print_string buf "\\bof" else if c = eof then pp_print_string buf "\\eof" else if c < 32 || c >= 127 then fprintf buf "\\%03d" c else pp_print_char buf (Char.chr c) let pp_print_chars buf cl = IntSet.iter (pp_print_char buf) cl let rec pp_print_regex buf regex = match regex with RegexAnySymbol -> pp_print_string buf "." | RegexSymbol cl -> fprintf buf "(symbol "; IntSet.iter (fun c -> pp_print_char buf c) cl; fprintf buf ")" | RegexExceptSymbol cl -> fprintf buf "(^symbol "; IntSet.iter (fun c -> pp_print_char buf c) cl; fprintf buf ")" | RegexLimitPrev cl -> fprintf buf "(prev-symbol "; IntSet.iter (fun c -> pp_print_char buf c) cl; fprintf buf ")" | RegexLimitNext cl -> fprintf buf "(next-symbol "; IntSet.iter (fun c -> pp_print_char buf c) cl; fprintf buf ")" | RegexChoice el -> fprintf buf "@[(choice"; List.iter (fun e -> fprintf buf "@ %a" pp_print_regex e) el; fprintf buf ")@]" | RegexSequence el -> fprintf buf "@[(sequence"; List.iter (fun e -> fprintf buf "@ %a" pp_print_regex e) el; fprintf buf ")@]" | RegexStar e -> fprintf buf "(star %a)" pp_print_regex e | RegexPlus e -> fprintf buf "(plus %a)" pp_print_regex e | RegexInterval (e, min, max) -> fprintf buf "@[(interval{%d,%d}@ %a)@]" min max pp_print_regex e | RegexArg e -> fprintf buf "@[\\(%a\\)@]" pp_print_regex e (* * Standard regular expressions. *) let left_word_delimiter = RegexSequence [RegexLimitPrev bof_or_nonword_chars; RegexLimitNext word_chars] let right_word_delimiter = RegexSequence [RegexLimitPrev word_chars; RegexLimitNext eof_or_nonword_chars] let word_delimiter = RegexChoice [left_word_delimiter; right_word_delimiter] let inside_word_delimiter = RegexSequence [RegexLimitPrev word_chars; RegexLimitNext word_chars] let left_line_delimiter = RegexLimitPrev (bof_chars "\r\n") let right_line_delimiter = RegexChoice [RegexSymbol (eof_chars "\r\n"); RegexSequence [RegexSymbol (singleton_char '\r'); RegexSymbol (singleton_char '\n')]] let bof_delimiter = RegexLimitPrev bof_char let eof_delimiter = RegexSymbol eof_char (* * Reduce a choice list. *) let regex_reduce_choices stack = match stack with [] -> RegexSequence [] | [regex] -> regex | _ -> RegexChoice (List.rev stack) (* * Reduce the stack, its just a sequence. *) let regex_reduce_sequence stack = match stack with [regex] -> regex | _ -> RegexSequence (List.rev stack) (* * Just saw a + *) let regex_reduce_plus stack = match stack with elem :: stack -> RegexPlus elem :: stack | [] -> [RegexSymbol (singleton_char '+')] let regex_reduce_star stack = match stack with elem :: stack -> RegexStar elem :: stack | [] -> [RegexSymbol (singleton_char '*')] let regex_reduce_opt stack = match stack with elem :: stack -> RegexChoice [elem; RegexSequence []] :: stack | [] -> [RegexSymbol (singleton_char '?')] let regex_reduce_interval stack n m = match stack with elem :: stack -> RegexInterval (elem, n, m) :: stack | [] -> [] (* * Interval expressions. *) let rec regex_interval n s i len = if i = len then raise (Failure "Lm_lexer: regex: interval expression is not terminated"); let j = succ i in let c = s.[i] in match c with '0'..'9' -> regex_interval (n * 10 + (Char.code c - Char.code '0')) s j len | ',' -> regex_interval_bound n 0 s j len | '}' -> n, n, j | _ -> raise (Failure "Lm_lexer: regex: interval expression is not terminated") and regex_interval_bound n m s i len = if i = len then raise (Failure "Lm_lexer: regex: interval expression is not terminated"); let j = succ i in let c = s.[i] in match c with '0'..'9' -> regex_interval_bound n (m * 10 + (Char.code c - Char.code '0')) s j len | '}' -> n, m, j | _ -> raise (Failure "Lm_lexer: regex: interval expression is not terminated") (* * Character constants. *) let rec regex_hex_const c s i len = if i = len then c, i else let c' = s.[i] in let j = succ i in match c' with '0'..'9' -> regex_hex_const (c * 16 + Char.code c' - zero_char) s j len | 'a'..'f' -> regex_hex_const (c * 16 + Char.code c' - hex_a_char) s j len | 'A'..'F' -> regex_hex_const (c * 16 + Char.code c' - hex_A_char) s j len | _ -> c, i let rec regex_octal_const c s i len = if i = len then c, i else let c' = s.[i] in match c' with '0'..'7' -> regex_octal_const (c * 8 + Char.code c' - zero_char) s (succ i) len | _ -> c, i (* * Literal characters [...] *) let rec regex_chars s i len = if i = len then raise (Failure "Lm_lexer: regex: character sequence is not terminated"); let j = succ i in match s.[i] with '^' -> let chars, j = regex_chars_head s j len in RegexExceptSymbol chars, j | _ -> let chars, j = regex_chars_head s i len in RegexSymbol chars, j (* * At the head, allow a literal ] *) and regex_chars_head s i len = if i = len then raise (Failure "Lm_lexer: regex: character sequence is not terminated"); match s.[i] with ']' -> regex_chars_rest (singleton_char ']') s (succ i) len | _ -> regex_chars_rest IntSet.empty s i len (* * Normal scanning. * Have to look for [:...:] sequences and ] *) and regex_chars_rest chars s i len = if i = len then raise (Failure "Lm_lexer: regex: character sequence is not terminated"); let j = succ i in match s.[i] with '[' -> regex_chars_possible_class chars s j len | ']' -> chars, j | '\\' -> regex_chars_escape chars s j len | c -> regex_chars_possible_range chars (Char.code c) s j len (* * Just saw a backslash. *) and regex_chars_escape chars s i len = if i = len then raise (Failure "Lm_lexer: regex: character sequence is not terminated"); let j = succ i in let c, j = match s.[i] with 'a' -> alert_char, j | 'b' -> backspace_char, j | 'f' -> formfeed_char, j | 'n' -> newline_char, j | 'r' -> cr_char, j | 't' -> tab_char, j | 'v' -> vertical_tab_char, j | 'x' -> regex_hex_const 0 s j len | '0'..'9' -> regex_octal_const 0 s i (min (i + 3) len) | c -> Char.code c, j in regex_chars_rest (IntSet.add chars c) s j len (* * Just seen a character, look for a character range c-c *) and regex_chars_possible_range chars c1 s i len = if i = len then raise (Failure "Lm_lexer: regex: character sequence not terminated"); let j = succ i in match s.[i] with '-' -> regex_chars_range chars c1 s j len | '[' -> regex_chars_possible_class (IntSet.add chars c1) s j len | ']' -> IntSet.add chars c1, j | '\\' -> regex_chars_escape (IntSet.add chars c1) s j len | c -> regex_chars_possible_range (IntSet.add chars c1) (Char.code c) s j len (* * Just seen a c-, get the remain char. *) and regex_chars_range chars c1 s i len = if i = len then raise (Failure "Lm_lexer: regex: character sequence not terminated"); let j = succ i in let c2 = Char.code s.[i] in let rec collect chars i = if i > c2 then chars else collect (IntSet.add chars i) (succ i) in let chars = collect chars c1 in regex_chars_rest chars s j len (* * Just saw a [, look for the : *) and regex_chars_possible_class chars s i len = if i = len then raise (Failure "Lm_lexer: regex: character sequence is not terminated"); let j = succ i in match s.[i] with ':' -> regex_chars_class chars s j len | '[' -> regex_chars_possible_class (IntSet.add chars (Char.code '[')) s j len | '\\' -> regex_chars_escape (IntSet.add chars (Char.code '[')) s j len | c -> regex_chars_rest (IntSet.add (IntSet.add chars (Char.code c)) (Char.code '[')) s j len (* * Get the character class specified by a sequence [:name:] *) and regex_chars_class chars s i len = let start = i in let rec get_name i = if i + 1 >= len then raise (Failure "Lm_lexer: regex: character class is not terminated"); let c = s.[i] in let j = succ i in match c with 'a'..'z' | 'A'..'Z' -> get_name j | ':' -> if s.[j] = ']' then regex_chars_get_class chars (String.sub s start (i - start)) s (succ j) len else raise (Failure "Lm_lexer: regex: character class: syntax error") | _ -> raise (Failure "Lm_lexer: regex: character class: syntax error") in get_name i (* * These are the standard classes. *) and regex_chars_get_class chars name s i len = let charclass = match String.lowercase name with "alnum" -> alnum_chars | "alpha" -> alpha_chars | "blank" -> blank_chars | "cntrl" -> cntrl_chars | "digit" -> digit_chars | "graph" -> graph_chars | "lower" -> lower_chars | "print" -> print_chars | "punct" -> punct_chars | "space" -> space_chars | "upper" -> upper_chars | "xdigit" -> xdigit_chars | name -> raise (Failure ("Lm_lexer: regex: unknown character class: " ^ name)) in regex_chars_rest (IntSet.union charclass chars) s i len (* * Parse an expression block. *) let rec regex_choices choices s i len = let regex, term = regex_of_string [] s i len in let choices = regex :: choices in match term with RegexTermEof -> regex_reduce_choices choices, term | RegexTermRightParen _ | RegexTermRightArg _ -> regex_reduce_choices choices, term | RegexTermPipe i -> regex_choices choices s i len and regex_left_paren s i len = let regex, term = regex_choices [] s i len in match term with RegexTermRightParen i -> regex, i | RegexTermRightArg _ | RegexTermEof -> raise (Failure "Lm_lexer: regex: mismatched parenthesis") | RegexTermPipe _ -> raise (Invalid_argument "regex_left_paren") and regex_left_arg s i len = let regex, term = regex_choices [] s i len in match term with RegexTermRightArg i -> regex, i | RegexTermRightParen _ | RegexTermEof -> raise (Failure "Lm_lexer: regex: mismatched parenthesis") | RegexTermPipe _ -> raise (Invalid_argument "regex_left_arg") (* * Parse the regular expression string. *) and regex_of_string stack s i len = if i = len then regex_reduce_sequence stack, RegexTermEof else let j = succ i in match s.[i] with '\\' -> regex_of_escape stack s j len | '.' -> let stack = RegexAnySymbol :: stack in regex_of_string stack s j len | '^' -> let stack = left_line_delimiter :: stack in regex_of_string stack s j len | '$' -> let stack = right_line_delimiter :: stack in regex_of_string stack s j len | '[' -> let regex, j = regex_chars s j len in let stack = regex :: stack in regex_of_string stack s j len | '+' -> let stack = regex_reduce_plus stack in regex_of_string stack s j len | '*' -> let stack = regex_reduce_star stack in regex_of_string stack s j len | '?' -> let stack = regex_reduce_opt stack in regex_of_string stack s j len | '(' -> let regex, j = regex_left_paren s j len in regex_of_string (regex :: stack) s j len | ')' -> regex_reduce_sequence stack, RegexTermRightParen j | '|' -> regex_reduce_sequence stack, RegexTermPipe j | '{' -> let min, max, j = regex_interval 0 s j len in let stack = regex_reduce_interval stack min max in regex_of_string stack s j len | c -> let stack = RegexSymbol (singleton_char c) :: stack in regex_of_string stack s j len (* * Escaped char. *) and regex_of_escape stack s i len = if i = len then raise (Failure "Lm_lexer: illegal backslash at end of string"); let j = succ i in match s.[i] with '(' -> let regex, j = regex_left_arg s j len in let stack = RegexArg regex :: stack in regex_of_string stack s j len | ')' -> regex_reduce_sequence stack, RegexTermRightArg j | '<' -> let stack = left_word_delimiter :: stack in regex_of_string stack s j len | '>' -> let stack = right_word_delimiter :: stack in regex_of_string stack s j len | 'y' -> let stack = word_delimiter :: stack in regex_of_string stack s j len | 'B' -> let stack = inside_word_delimiter :: stack in regex_of_string stack s j len | 'w' -> let stack = RegexSymbol word_chars :: stack in regex_of_string stack s j len | 'W' -> let stack = RegexExceptSymbol word_chars :: stack in regex_of_string stack s j len | '`' -> let stack = bof_delimiter :: stack in regex_of_string stack s j len | '\'' -> let stack = eof_delimiter :: stack in regex_of_string stack s j len | 'a' -> let stack = RegexSymbol alert_chars :: stack in regex_of_string stack s j len | 'b' -> let stack = RegexSymbol backspace_chars :: stack in regex_of_string stack s j len | 'f' -> let stack = RegexSymbol formfeed_chars :: stack in regex_of_string stack s j len | 'n' -> let stack = RegexSymbol newline_chars :: stack in regex_of_string stack s j len | 'r' -> let stack = RegexSymbol cr_chars :: stack in regex_of_string stack s j len | 't' -> let stack = RegexSymbol tab_chars :: stack in regex_of_string stack s j len | 'v' -> let stack = RegexSymbol vertical_tab_chars :: stack in regex_of_string stack s j len | 'x' -> let c, j = regex_hex_const 0 s j len in let stack = RegexSymbol (IntSet.singleton c) :: stack in regex_of_string stack s j len | '0'..'9' -> let c, j = regex_octal_const 0 s i (min (i + 3) len) in let stack = RegexSymbol (IntSet.singleton c) :: stack in regex_of_string stack s j len | c -> let stack = RegexSymbol (IntSet.singleton (Char.code c)) :: stack in regex_of_string stack s j len (* * The toplevel function. *) let regex_of_string s = let regex, term = regex_choices [] s 0 (String.length s) in let regex = match term with RegexTermEof -> regex | RegexTermRightParen _ | RegexTermRightArg _ -> raise (Failure "Lm_lexer: regex: mismatched parenthesis") | RegexTermPipe _ -> raise (Invalid_argument "regex_of_string") in if !debug_lexgen then eprintf "@[Regex:@ @[string: \"%s\"@]@ @[regex:@ %a@]@]@." (**) s pp_print_regex regex; regex (************************************************************************ * Expressions. *) let pp_print_exp buf exp = let { exp_clauses = clauses; exp_id = id } = exp in fprintf buf "Id: %d" id; List.iter (fun (action, id, regex) -> fprintf buf "@ @[Clause:@ id = %d@ action = %a@ @[regex =@ %a@]@]" (**) id pp_print_action action pp_print_regex regex) clauses (* * An expression is a set of clauses. *) let empty_exp = { exp_clauses = []; exp_id = 0 } (* * Compute the number of arguments in the regex. *) let rec regex_arg_count count e = match e with RegexAnySymbol | RegexSymbol _ | RegexExceptSymbol _ | RegexLimitPrev _ | RegexLimitNext _ | RegexChoice [] -> count | RegexChoice (e :: _) | RegexStar e | RegexPlus e | RegexInterval (e, _, _) -> regex_arg_count count e | RegexSequence el -> List.fold_left regex_arg_count count el | RegexArg e -> regex_arg_count (succ count) e (* * Add a clause to the pre-NFA. *) let add_clause_exp exp action s = let regex = regex_of_string s in let arity = regex_arg_count 0 regex in let { exp_clauses = clauses; exp_id = id } = exp in let exp = { exp_clauses = (action, id, regex) :: clauses; exp_id = succ id } in arity, exp (* * Remove a clause. *) let remove_clause_exp exp action = let clauses = List.filter (fun (action', _, _) -> action' <> action) exp.exp_clauses in { exp with exp_clauses = clauses } (* * Take the union of two expression lists. *) let union_exp exp1 exp2 = let { exp_clauses = clauses1; exp_id = id1 } = exp1 in let { exp_clauses = clauses2 } = exp2 in let actions = List.fold_left (fun actions (action, _, _) -> ActionSet.add actions action) ActionSet.empty clauses1 in let rec collect id clauses1 clauses2 = match clauses2 with (action, _, regex) :: clauses2 -> if ActionSet.mem actions action then collect id clauses1 clauses2 else collect (succ id) ((action, id, regex) :: clauses1) clauses2 | [] -> id, clauses1 in let id, clauses1 = collect id1 clauses1 clauses2 in if id = id1 then false, exp1 else true, { exp_clauses = clauses1; exp_id = id } (************************************************************************ * NFA. *) let pp_print_nfa_id hash buf nid = match NfaState.get hash nid with (nid, []) -> pp_print_int buf nid | (nid, counters) -> fprintf buf "<%d" nid; List.iter (fun counter -> fprintf buf " %d" counter) counters; fprintf buf ">" let pp_print_nfa_id_set hash buf states = NfaStateSet.iter (fun s -> fprintf buf "@ %a" (pp_print_nfa_id hash) s) states let pp_print_choices buf choices = IntSet.iter (fun i -> fprintf buf " %d" i) choices let pp_print_nfa_action buf action = match action with NfaActionEpsilon next -> fprintf buf "@[(epsilon goto"; List.iter (fun i -> fprintf buf "@ %d" i) next; fprintf buf ")@]" | NfaActionArgStart (id, next) -> fprintf buf "(arg-start %d goto %d)" id next | NfaActionArgStop (id, next) -> fprintf buf "(arg-stop %d goto %d)" id next | NfaActionArgSearch next -> fprintf buf "(arg-search goto %d)" next | NfaActionStop clause -> fprintf buf "(stop [%d])" clause | NfaActionSymbol (syms, next) -> fprintf buf "@[(symbols [%a]@ goto %d)@]" pp_print_chars syms next | NfaActionExceptSymbol (syms, next) -> fprintf buf "@[(^symbols [%a]@ goto %d)@]" pp_print_chars syms next | NfaActionAnySymbol next -> fprintf buf "(. goto %d)" next | NfaActionLimitPrev (syms, next) -> fprintf buf "@[(limit-prev [%a]@ goto %d)@]" pp_print_chars syms next | NfaActionLimitNext (syms, next) -> fprintf buf "@[(limit-next [%a]@ goto %d)@]" pp_print_chars syms next | NfaActionNone -> fprintf buf "(final)" | NfaActionResetCounter (counter, next) -> fprintf buf "@[(reset@ counter = %d@ goto" counter; List.iter (fun i -> fprintf buf "@ %d" i) next; fprintf buf ")@]" | NfaActionIncrCounter (counter, min, final, max, start) -> fprintf buf "@[(increment@ counter = %d@ if count >= %d then goto %d@ if count <= %d then goto %d)@]" (**) counter min final max start let pp_print_nfa_state buf nfa_state = let { nfa_state_index = index; nfa_state_action = action } = nfa_state in fprintf buf "@[NFA state %d:@ action %a@]" index pp_print_nfa_action action let pp_print_nfa buf nfa = let { nfa_hash = hash; nfa_start = start; nfa_search_start = search; nfa_search_states = search_states; nfa_table = table } = nfa in fprintf buf "@[NFA:@ start = %a@ search = %a@ @[search-states =%a@]" (**) (pp_print_nfa_id hash) start (pp_print_nfa_id hash) search (pp_print_nfa_id_set hash) search_states; Array.iter (fun state -> fprintf buf "@ %a" pp_print_nfa_state state) table; fprintf buf "@]" (************************************************ * Construct a new state. *) let nfa_state accum action = let { nfa_index = index } = accum in let state = { nfa_state_index = index; nfa_state_action = action } in { accum with nfa_index = succ index }, state (* * Set the action. *) let set_action state action = { state with nfa_state_action = action } (* * Compile the NFA from a regex. * We are given a start and a final state, * and the task to to connect them according to the regex. * * Invariant: the provided start state is current NfaActionNone. * There is no such guarantee for the provided final state, and * it should not be modified. * * The states list contains all the states that are not the * start and final states. *) let rec compile (accum : nfa_accum) (info : nfa_info) start final states regex = match regex with (* Sequence *) RegexSequence regexl -> compile_sequence accum info start final states regexl (* Choice *) | RegexChoice [] -> let start = set_action start (NfaActionEpsilon [final.nfa_state_index]) in accum, info, start, states | RegexChoice [regex] -> compile accum info start final states regex | RegexChoice (regex :: regexl) -> let accum, info, starts, finals, states = compile_choice accum info states regex regexl in let start = set_action start (NfaActionEpsilon (List.map (fun state -> state.nfa_state_index) starts)) in let action = NfaActionEpsilon [final.nfa_state_index] in let finals = List.map (fun state -> set_action state action) finals in accum, info, start, starts @ finals @ states (* Symbols *) | RegexSymbol syms -> let start = set_action start (NfaActionSymbol (syms, final.nfa_state_index)) in accum, info, start, states | RegexExceptSymbol syms -> let start = set_action start (NfaActionExceptSymbol (syms, final.nfa_state_index)) in accum, info, start, states | RegexAnySymbol -> let start = set_action start (NfaActionAnySymbol final.nfa_state_index) in accum, info, start, states | RegexLimitPrev syms -> let start = set_action start (NfaActionLimitPrev (syms, final.nfa_state_index)) in accum, info, start, states | RegexLimitNext syms -> let start = set_action start (NfaActionLimitNext (syms, final.nfa_state_index)) in accum, info, start, states (* Kleene closure *) | RegexStar regex -> let accum, start1 = nfa_state accum NfaActionNone in let accum, final1 = nfa_state accum (NfaActionEpsilon [start1.nfa_state_index; final.nfa_state_index]) in let start = set_action start (NfaActionEpsilon [start1.nfa_state_index; final.nfa_state_index]) in let accum, info, start1, states = compile accum info start1 final1 states regex in accum, info, start, start1 :: final1 :: states | RegexPlus regex -> let accum, start1 = nfa_state accum NfaActionNone in let accum, final1 = nfa_state accum (NfaActionEpsilon [start1.nfa_state_index; final.nfa_state_index]) in let start = set_action start (NfaActionEpsilon [start1.nfa_state_index]) in let accum, info, start1, states = compile accum info start1 final1 states regex in accum, info, start, start1 :: final1 :: states | RegexInterval (regex, min, max) -> let { nfa_counter = counter } = accum in let accum, start1 = nfa_state accum NfaActionNone in let accum, final1 = nfa_state accum (NfaActionIncrCounter (counter, min, final.nfa_state_index, max, start1.nfa_state_index)) in let start = let states = [start1.nfa_state_index] in let states = if min = 0 then final.nfa_state_index :: states else states in set_action start (NfaActionResetCounter (counter, states)) in let accum = { accum with nfa_counter = succ counter } in let accum, info, start1, states = compile accum info start1 final1 states regex in accum, info, start, start1 :: final1 :: states (* Arguments *) | RegexArg regex -> let { nfa_arg_index = argindex } = accum in let accum, final1 = nfa_state accum (NfaActionArgStop (argindex, final.nfa_state_index)) in let accum, start1 = nfa_state accum NfaActionNone in let start = set_action start (NfaActionArgStart (argindex, start1.nfa_state_index)) in let { nfa_arg_number = argnumber } = info in let accum = { accum with nfa_arg_index = succ argindex } in let info = { info with nfa_arg_number = succ argnumber } in let accum, info, start1, states = compile accum info start1 final1 states regex in accum, info, start, start1 :: final1 :: states (* * Choice. * Map over all the choices; make sure the argument counts match. *) and compile_choice accum info_orig states regex regexl = let accum, start = nfa_state accum NfaActionNone in let accum, final = nfa_state accum NfaActionNone in let accum, info1, start, states = compile accum info_orig start final states regex in let accum, info, starts, finals, states = List.fold_left (fun (accum, info1, starts, finals, states) regex -> let accum, start = nfa_state accum NfaActionNone in let accum, final = nfa_state accum NfaActionNone in let accum, info2, start, states = compile accum info_orig start final states regex in let () = if info1.nfa_arg_number <> info2.nfa_arg_number then raise (Failure "Lm_lexer: Regular expression has mismatched argument counts") in accum, info1, start :: starts, final :: finals, states) (**) (accum, info1, [start], [final], states) regexl in accum, info, starts, finals, states (* * Sequence. * Chain together the expressions. *) and compile_sequence accum info start final states regexl = match regexl with [] -> let start = set_action start (NfaActionEpsilon [final.nfa_state_index]) in accum, info, start, states | [regex] -> compile accum info start final states regex | regex :: regexl -> let accum, middle = nfa_state accum NfaActionNone in let accum, info, start, states = compile accum info start middle states regex in let accum, info, middle, states = compile_sequence accum info middle final states regexl in accum, info, start, middle :: states (* * Compile a clause. *) let compile_clause accum info states regex = let accum, final = nfa_state accum (NfaActionStop info.nfa_clause) in let accum, start = nfa_state accum NfaActionNone in let accum, info, start, states = compile accum info start final states regex in accum, info, start, final :: states (* * Create an actual NFA from the regular expression. * When lexing, we always start with the previous character * in the input (so we can handle \< expressions). * Add a new start state with a full set of transitions. *) let create_nfa exp = (* Initial accumulator and info *) let accum = { nfa_index = 0; nfa_counter = 0; nfa_arg_index = 0 } in (* Compile the expressions *) let accum, depends, actions, starts, states = List.fold_left (fun (accum, depends, actions, starts, states) (action, id, regex) -> let info = { nfa_clause = id; nfa_arg_number = 0 } in let accum, _info, start, states = compile_clause accum info states regex in let actions = IntTable.add actions id action in let starts = start.nfa_state_index :: starts in let states = start :: states in accum, depends, actions, starts, states) (**) (accum, IntTable.empty, IntTable.empty, [], []) exp.exp_clauses in (* Add the normal start state *) let accum, choice = nfa_state accum (NfaActionEpsilon starts) in let accum, start = nfa_state accum (NfaActionAnySymbol choice.nfa_state_index) in let states = start :: choice :: states in (* Add a start state for searching '.*\(r\)' *) let accum, search_final = nfa_state accum (NfaActionArgSearch choice.nfa_state_index) in let accum, search_loop2 = nfa_state accum NfaActionNone in let accum, search_loop1 = nfa_state accum (NfaActionEpsilon [search_loop2.nfa_state_index; search_final.nfa_state_index]) in let search_loop2 = set_action search_loop2 (NfaActionAnySymbol search_loop1.nfa_state_index) in let accum, search_start = nfa_state accum (NfaActionAnySymbol search_loop1.nfa_state_index) in let states = search_start :: search_loop1 :: search_loop2 :: search_final :: states in let search_states = [search_start; search_loop1; search_loop2; search_final] in (* Build the table *) let length = List.length states in let table = Array.create length start in let counters = let rec collect l i = if i = 0 then l else collect (0 :: l) (pred i) in collect [] accum.nfa_counter in (* Hash it *) let hash = NfaState.create_state () in let start = NfaState.create hash (start.nfa_state_index, counters) in let search_start = NfaState.create hash (search_start.nfa_state_index, counters) in let search_states = List.fold_left (fun states state -> NfaStateSet.add states (NfaState.create hash (state.nfa_state_index, counters))) NfaStateSet.empty search_states in (* Add all the states to the table *) List.iter (fun state -> table.(state.nfa_state_index) <- state) states; (* Check that the states had unique indexes *) Array.iteri (fun i state -> assert (state.nfa_state_index = i)) table; { nfa_hash = hash; nfa_actions = actions; nfa_start = start; nfa_search_start = search_start; nfa_search_states = search_states; nfa_table = table; nfa_args = depends } (************************************************************************ * DFA * * The DFA is computed lazily from the NFA. *) (************************************************ * Printing. *) let pp_print_dfa_set hash buf closure = fprintf buf "@[(set"; List.iter (fun i -> fprintf buf "@ %a" (pp_print_nfa_id hash) i) closure; fprintf buf ")@]" let pp_print_dfa_arg_action buf action = let { dfa_action_off = off; dfa_action_inst = inst } = action in match inst with DfaActionArgStart i -> fprintf buf "arg-start %d at %d" i off | DfaActionArgStop i -> fprintf buf "arg-stop %d at %d" i off | DfaActionArgSearch -> fprintf buf "search-stop at %d" off let pp_print_dfa_actions nfa_hash buf action = let { dfa_action_final = final; dfa_action_actions = actions } = action in let () = fprintf buf "@[(action" in let () = match final with Some (clause_id, nfa_id) -> fprintf buf "@ final [clause=%d, nfa-state=%a]" clause_id (pp_print_nfa_id nfa_hash) nfa_id | None -> () in NfaStateTable.iter (fun dst action -> let { dfa_action_src = src; dfa_action_args = args } = action in fprintf buf "@ @[(%a -> %a" (pp_print_nfa_id nfa_hash) src (pp_print_nfa_id nfa_hash) dst; List.iter (fun action -> fprintf buf "@ %a" pp_print_dfa_arg_action action) args; fprintf buf ")@]") actions; fprintf buf ")@]" let pp_print_pre_actions buf action = let { pre_action_final = final; pre_action_args = args } = action in let () = fprintf buf "@[(pre-action@ " in let () = match final with Some stop -> fprintf buf "final [%d]@ " stop | None -> () in fprintf buf "@[argument actions:"; List.iter (fun action -> fprintf buf "@ %a" pp_print_dfa_arg_action action) args; fprintf buf "@])@]" let pp_print_dfa_transition buf trans = match trans with DfaTransition (i, _) -> fprintf buf "goto %d" i | DfaNoTransition -> fprintf buf "error" | DfaUnknownTransition -> fprintf buf "unknown" let pp_print_trans_table buf table = fprintf buf "@[(trans"; Array.iter (fun (key, trans) -> fprintf buf "@ %d -> %a" key pp_print_dfa_transition trans) table; fprintf buf ")@]" (* * Print an argument. *) let pp_print_arg buf arg = match arg with ArgLeft i -> fprintf buf "left[%d]" i | ArgRight i -> fprintf buf "right[%d]" i | ArgSearch -> fprintf buf "searchreg" (* * Print the frontier. *) let pp_print_frontier nfa_hash buf table = fprintf buf "@[frontier:"; NfaStateTable.iter (fun id actions -> fprintf buf "@ @[%a:@ %a@]" (pp_print_nfa_id nfa_hash) id pp_print_pre_actions actions) table; fprintf buf "@]" (************************************************ * DFA. *) (* * Action operations. *) let pre_action_empty = { pre_action_final = None; pre_action_args = [] } let pre_action_add_stop action clause = match action.pre_action_final with Some clause' -> { action with pre_action_final = Some (Action.choose clause clause') } | None -> { action with pre_action_final = Some clause } let pre_action_add_arg actions arg = { actions with pre_action_args = arg :: actions.pre_action_args } let pre_action_add_arg_start actions off id = pre_action_add_arg actions { dfa_action_off = off; dfa_action_inst = DfaActionArgStart id } let pre_action_add_arg_stop actions off id = pre_action_add_arg actions { dfa_action_off = off; dfa_action_inst = DfaActionArgStop id } let pre_action_add_arg_search actions off = pre_action_add_arg actions { dfa_action_off = off; dfa_action_inst = DfaActionArgSearch } (* * DFA actions. *) let dfa_action_is_empty action = match action with { dfa_action_final = None; dfa_action_actions = actions } -> NfaStateTable.is_empty actions | { dfa_action_final = Some _ } -> false (* * Action evaluation. * We are given the argument info for each of the src states, * and we need to compute the argument info for each of the dst states. *) let dfa_apply_action pos args action = let { dfa_action_off = off; dfa_action_inst = inst } = action in let pos = pos + off in match inst with DfaActionArgStart i -> ArgTable.add args (ArgLeft i) pos | DfaActionArgStop i -> ArgTable.add args (ArgRight i) pos | DfaActionArgSearch -> ArgTable.add args ArgSearch pos let dfa_eval_action dfa info action = let { dfa_channel = channel; dfa_args = args_table } = info in let { dfa_action_final = final; dfa_action_actions = actions } = action in let pos = Input.lex_pos channel in let args_table = NfaStateTable.map (fun action -> let { dfa_action_src = src; dfa_action_args = actions } = action in let args = try NfaStateTable.find args_table src with Not_found -> ArgTable.empty in List.fold_left (dfa_apply_action pos) args actions) actions in if !debug_lex then begin let pp_print_nfa_id = pp_print_nfa_id dfa.dfa_nfa_hash in eprintf "@[Args:"; NfaStateTable.iter (fun id args -> eprintf "@ @[state: %a" pp_print_nfa_id id; ArgTable.iter (fun arg i -> eprintf "@ %a = %d" pp_print_arg arg i) args; eprintf "@]") args_table; eprintf "@]@." end; info.dfa_args <- args_table; (* Get final state *) match final with Some (clause_id, nid) -> info.dfa_stop_clause <- clause_id; info.dfa_stop_pos <- pos; info.dfa_stop_args <- NfaStateTable.find args_table nid | None -> () (* * We just scanned a symbol c in NFA state nid. * Compute the forward epsilon closure, and return the frontier * with the actions we should take for each NFA state in the frontier. *) let rec close_prev nfa_hash table nid c closure frontier actions = if DfaStateCore.mem closure nid then frontier else let index, counters = NfaState.get nfa_hash nid in let closure = DfaStateCore.add closure nid in let action = table.(index).nfa_state_action in if !debug_lexgen then eprintf "@[close_prev:@ NFA state: %a@ Symbol: %a@ @[Closure:@ %a@]@ @[Frontier:@ %a@]@ @[NFA Action:@ %a@]@ @[Actions: %a@]@]@." (**) (pp_print_nfa_id nfa_hash) nid pp_print_char c (pp_print_dfa_set nfa_hash) closure (pp_print_frontier nfa_hash) frontier pp_print_nfa_action action pp_print_pre_actions actions; match action with (* Standard epsilon transitions *) NfaActionEpsilon nids -> let nids = List.map (fun index -> NfaState.create nfa_hash (index, counters)) nids in close_prev_list nfa_hash table nids c closure frontier actions (* Can only make progress if the current symbol is allowed *) | NfaActionLimitPrev (syms, nid) when IntSet.mem syms c -> let state = NfaState.create nfa_hash (nid, counters) in close_prev nfa_hash table state c closure frontier actions (* Arguments *) | NfaActionArgStart (id, nid) -> let actions = pre_action_add_arg_start actions 0 id in let state = NfaState.create nfa_hash (nid, counters) in close_prev nfa_hash table state c closure frontier actions | NfaActionArgStop (id, nid) -> let actions = pre_action_add_arg_stop actions 0 id in let state = NfaState.create nfa_hash (nid, counters) in close_prev nfa_hash table state c closure frontier actions | NfaActionArgSearch nid -> let actions = pre_action_add_arg_search actions 0 in let state = NfaState.create nfa_hash (nid, counters) in close_prev nfa_hash table state c closure frontier actions (* Counter operations *) | NfaActionResetCounter (i, nids) -> let counters = NfaStateCore.reset_counter counters i in let nids = List.map (fun index -> NfaState.create nfa_hash (index, counters)) nids in close_prev_list nfa_hash table nids c closure frontier actions | NfaActionIncrCounter (i, min, final, max, start) -> let nids = NfaStateCore.incr_counter counters i min final max start in let nids = List.map (NfaState.create nfa_hash) nids in close_prev_list nfa_hash table nids c closure frontier actions (* Reached a final state *) | NfaActionStop id -> let actions = pre_action_add_stop actions id in NfaStateTable.add frontier nid actions (* Reached the frontier, we can't make any more progress *) | NfaActionSymbol _ | NfaActionAnySymbol _ | NfaActionExceptSymbol _ | NfaActionLimitNext _ -> NfaStateTable.add frontier nid actions (* Dead-ends *) | NfaActionLimitPrev _ | NfaActionNone -> frontier and close_prev_list nfa_hash table nids c closure frontier actions = List.fold_left (fun frontier nid -> close_prev nfa_hash table nid c closure frontier actions) frontier nids (* * We are now processing symbol c in NFA state nid. * Search forward, computing the epsilon closure, until * we reach a transition on character c. * * pending: the actions that we take *only* if we eventually * find a transition on character c. * committed: the actions that we will take no matter what. *) let rec close_next nfa_hash table nid c closure frontier actions = if DfaStateCore.mem closure nid then frontier else let closure = DfaStateCore.add closure nid in let index, counters = NfaState.get nfa_hash nid in let action = table.(index).nfa_state_action in if !debug_lexgen then eprintf "@[close_next:@ NFA state: %a@ Symbol: %a@ @[Closure:@ %a@]@ @[Frontier:@ %a@]@ @[NFA Action:@ %a@]@ @[Committed:@ %a@]@]@." (**) (pp_print_nfa_id nfa_hash) nid pp_print_char c (pp_print_dfa_set nfa_hash) closure (pp_print_frontier nfa_hash) frontier pp_print_nfa_action action pp_print_pre_actions actions; match action with (* These are the cases where we can make progress *) NfaActionSymbol (syms, nid) when IntSet.mem syms c -> let state = NfaState.create nfa_hash (nid, counters) in close_prev nfa_hash table state c DfaStateCore.empty frontier actions | NfaActionExceptSymbol (syms, nid) when not (c = eof || IntSet.mem syms c) -> let state = NfaState.create nfa_hash (nid, counters) in close_prev nfa_hash table state c DfaStateCore.empty frontier actions | NfaActionAnySymbol nid when c <> eof -> let state = NfaState.create nfa_hash (nid, counters) in close_prev nfa_hash table state c DfaStateCore.empty frontier actions | NfaActionLimitNext (syms, nid) when IntSet.mem syms c -> let state = NfaState.create nfa_hash (nid, counters) in close_next nfa_hash table state c closure frontier actions (* Standard epsilon transitions *) | NfaActionEpsilon nids -> let nids = List.map (fun index -> NfaState.create nfa_hash (index, counters)) nids in close_next_list nfa_hash table nids c closure frontier actions (* Arguments *) | NfaActionArgStart (id, nid) -> let actions = pre_action_add_arg_start actions (-1) id in let state = NfaState.create nfa_hash (nid, counters) in close_next nfa_hash table state c closure frontier actions | NfaActionArgStop (id, nid) -> let actions = pre_action_add_arg_stop actions (-1) id in let state = NfaState.create nfa_hash (nid, counters) in close_next nfa_hash table state c closure frontier actions | NfaActionArgSearch nid -> let actions = pre_action_add_arg_search actions (-1) in let state = NfaState.create nfa_hash (nid, counters) in close_next nfa_hash table state c closure frontier actions (* Counter operations *) | NfaActionResetCounter (i, nids) -> let counters = NfaStateCore.reset_counter counters i in let nids = List.map (fun index -> NfaState.create nfa_hash (index, counters)) nids in close_next_list nfa_hash table nids c closure frontier actions | NfaActionIncrCounter (i, min, final, max, start) -> let nids = NfaStateCore.incr_counter counters i min final max start in let nids = List.map (NfaState.create nfa_hash) nids in close_next_list nfa_hash table nids c closure frontier actions (* Dead-ends *) | NfaActionNone | NfaActionSymbol _ | NfaActionAnySymbol _ | NfaActionExceptSymbol _ | NfaActionLimitNext _ | NfaActionStop _ -> frontier (* These cases should never arise *) | NfaActionLimitPrev _ -> eprintf "Illegal action: %a@." pp_print_nfa_action action; raise (Invalid_argument "close_next") and close_next_list nfa_hash table nids c closure frontier actions = List.fold_left (fun frontier nid -> close_next nfa_hash table nid c closure frontier actions) frontier nids (* * Compute the action table for each of the components of * the DFA state. *) let close_state dfa table nids c = let { dfa_search_states = search_states; dfa_nfa_hash = nfa_hash } = dfa in let final, actions = List.fold_left (fun final_actions nid -> let frontier = close_next nfa_hash table nid c DfaStateCore.empty NfaStateTable.empty pre_action_empty in if !debug_lexgen then eprintf "@[Frontier:@ %a@]@." (pp_print_frontier nfa_hash) frontier; NfaStateTable.fold (fun (final', actions) id action -> let { pre_action_final = final; pre_action_args = args } = action in let final = match final', final with Some (clause_id', _nid'), Some clause_id -> let clause_id'' = Action.choose clause_id' clause_id in if clause_id'' = clause_id' then final' else Some (clause_id, id) | Some _, None -> final' | None, Some clause_id -> Some (clause_id, id) | None, None -> None in let action = { dfa_action_src = nid; dfa_action_args = args } in let actions = (* * NOTE: currently we prefer states with smaller numbers, * which will result in a shortest match in the search prefix. * This works in many cases, but it may be wrong in general. *) NfaStateTable.filter_add actions id (fun action1 -> match action1 with Some action1 -> let id1, _ = NfaState.get nfa_hash action1.dfa_action_src in let id2, _ = NfaState.get nfa_hash nid in if id1 < id2 then action1 else action | None -> action) in final, actions) final_actions frontier) (None, NfaStateTable.empty) nids in let () = if !debug_lexgen then let actions = { dfa_action_final = final; dfa_action_actions = actions } in eprintf "@[Computed actions:%a@]@." (pp_print_dfa_actions nfa_hash) actions in (* * If the state is final, and we have already scanned some text (not * including the initial bof), * 1. prune all states that correspond to the search * 2. prune all states that _came_ from the search, unless they * are the final state we care about. *) let actions = match final with Some (_, id) when c <> bof -> (* Remove target states in the search *) let actions = NfaStateSet.fold NfaStateTable.remove actions search_states in (* Remove target states that came from the search *) NfaStateTable.fold (fun actions id' action -> if NfaStateSet.mem search_states action.dfa_action_src && id' <> id then NfaStateTable.remove actions id' else actions) actions actions | _ -> actions in { dfa_action_final = final; dfa_action_actions = actions } (* * The next state is the frontier. *) let close_next_state dfa table nids c = let actions = close_state dfa table nids c in let frontier = NfaStateTable.fold (fun frontier nid _ -> nid :: frontier) [] actions.dfa_action_actions in let nfa_hash = dfa.dfa_nfa_hash in if !debug_lex then eprintf "@[NFA transition:@ @[current:@ %a@]@ symbol: %a@ @[next:@ %a@]@ @[actions:@ %a@]@." (**) (pp_print_dfa_set nfa_hash) nids pp_print_char c (pp_print_dfa_set nfa_hash) frontier (pp_print_dfa_actions nfa_hash) actions; frontier, actions (* * Get the argument values. *) type arg_info = ArgStart of int | ArgStop of int | ArgComplete of int * int let rec extend_args args len1 len2 = if len1 = len2 then args else extend_args ("" :: args) (succ len1) len2 let dfa_args dfa_info lexeme = let { dfa_start_pos = start; dfa_stop_pos = stop; dfa_stop_args = args } = dfa_info in (* Get the pairs of argument info *) let info, start_pos = ArgTable.fold (fun (info, start) arg pos -> match arg with ArgLeft arg -> let info = IntTable.filter_add info arg (fun entry -> match entry with None -> ArgStart pos | Some (ArgStop right) -> ArgComplete (pos, right) | _ -> raise (Invalid_argument "dfa_args:left")) in info, start | ArgRight arg -> let info = IntTable.filter_add info arg (fun entry -> match entry with None -> ArgStop pos | Some (ArgStart left) -> ArgComplete (left, pos) | _ -> raise (Invalid_argument "dfa_args:right")) in info, start | ArgSearch -> info, Some pos) (IntTable.empty, None) args in (* Get the argument text *) let args = IntTable.map (fun entry -> match entry with ArgComplete (left, right) -> String.sub lexeme left (right - left) | ArgStart left -> String.sub lexeme left (stop - left) | ArgStop right -> String.sub lexeme start (right - start)) info in (* Flatten the arguments *) let args, _ = IntTable.fold (fun (args, len) arg s -> let args = s :: extend_args args len arg in args, succ arg) ([], 0) args in start_pos, List.rev args (* * Add a state to the DFA. It is initially empty. *) let dfa_find_state dfa nids = let { dfa_map = map; dfa_length = dfa_id; dfa_states = states } = dfa in try DfaStateTable.find map nids with Not_found -> (* Make a new state *) let dfa_state = { dfa_state_index = dfa_id; dfa_state_set = nids; dfa_state_delta = TransTable.empty } in let () = (* Add to the map *) dfa.dfa_map <- DfaStateTable.add map nids dfa_id in let () = (* Add to the state array *) let length = Array.length states in if dfa_id = length then let new_states = Array.create (length * 2) dfa_state in Array.blit states 0 new_states 0 length; dfa.dfa_states <- new_states else states.(dfa_id) <- dfa_state in dfa.dfa_length <- succ dfa_id; dfa_id (* * We are in DFA state i, processing symbol c, but we don't have * an entry in the transition table yet. *) let create_entry dfa dfa_state c = let { dfa_dfa_hash = dfa_hash; dfa_table = table } = dfa in let { dfa_state_set = nids; dfa_state_delta = delta } = dfa_state in let frontier, actions = close_next_state dfa table (DfaState.get dfa_hash nids) c in if frontier = [] && dfa_action_is_empty actions then dfa_state.dfa_state_delta <- TransTable.add delta c DfaNoTransition else let frontier = DfaState.create dfa_hash frontier in let dfa_id = dfa_find_state dfa frontier in let entry = DfaTransition (dfa_id, actions) in dfa_state.dfa_state_delta <- TransTable.add delta c entry (* * Transition function. * We are in DFA state dfa_id, processing symbol c. * Returns None if there is no transition. *) let rec dfa_delta dfa dfa_info dfa_state c = match TransTable.find dfa_state.dfa_state_delta c DfaUnknownTransition with DfaTransition (dfa_id, actions) -> if !debug_lex then eprintf "State %d %a: symbol %a, goto %d@." (**) dfa_state.dfa_state_index (pp_print_dfa_set dfa.dfa_nfa_hash) (DfaState.get dfa.dfa_dfa_hash dfa_state.dfa_state_set) pp_print_char c dfa_id; dfa_eval_action dfa dfa_info actions; Some (dfa.dfa_states.(dfa_id)) | DfaNoTransition -> if !debug_lex then eprintf "State %d %a: no transition for symbol %a@." (**) dfa_state.dfa_state_index (pp_print_dfa_set dfa.dfa_nfa_hash) (DfaState.get dfa.dfa_dfa_hash dfa_state.dfa_state_set) pp_print_char c; None | DfaUnknownTransition -> if !debug_lex then eprintf "State %d %a: computing transition on symbol %a@." (**) dfa_state.dfa_state_index (pp_print_dfa_set dfa.dfa_nfa_hash) (DfaState.get dfa.dfa_dfa_hash dfa_state.dfa_state_set) pp_print_char c; create_entry dfa dfa_state c; dfa_delta dfa dfa_info dfa_state c (* * Now the complete lexer. * We scan forward until no more transitions are possible. * Then return the last match. *) let lex dfa channel = let dfa_info = { dfa_stop_clause = -1; dfa_stop_pos = 0; dfa_stop_args = ArgTable.empty; dfa_start_pos = 0; dfa_args = NfaStateTable.empty; dfa_channel = channel } in let rec loop dfa_state c = match dfa_delta dfa dfa_info dfa_state c with Some dfa_state -> loop dfa_state (Input.lex_next channel) | None -> () in let dfa_state = dfa.dfa_states.(0) in let c = Input.lex_start channel in let () = loop dfa_state c in (* Now figure out what happened *) let { dfa_stop_clause = clause; dfa_stop_pos = stop; } = dfa_info in (* * If we did not get a match, return the channel to * the starting position, and raise an exception. *) if clause < 0 then begin Input.lex_stop channel 0; raise (Failure "Lm_lexer: lex: no clause matched") end; (* * We have the clause: * 1. Set the channel to the final position * 2. Get the entire string. * 3. Get the arguments. *) let loc = Input.lex_loc channel stop in let lexeme = Input.lex_string channel stop in let _, args = dfa_args dfa_info lexeme in Input.lex_stop channel stop; IntTable.find dfa.dfa_action_table clause, loc, lexeme, args (* * Return the input followed by a regular expression * terminator. *) let search dfa channel = let dfa_info = { dfa_stop_clause = -1; dfa_stop_pos = 0; dfa_stop_args = ArgTable.empty; dfa_start_pos = 0; dfa_args = NfaStateTable.empty; dfa_channel = channel } in let rec loop dfa_state c = match dfa_delta dfa dfa_info dfa_state c with Some dfa_state -> loop dfa_state (Input.lex_next channel) | None -> () in let dfa_state = dfa.dfa_states.(1) in let c = Input.lex_start channel in let () = loop dfa_state c in (* Now figure out what happened *) let { dfa_stop_clause = clause; dfa_stop_pos = stop; } = dfa_info in (* * If we did not get a match, return the channel to * the starting position, and raise an exception. *) if clause < 0 then begin Input.lex_stop channel 0; None end else (* * We have the clause: * 1. Set the channel to the final position * 2. Get the entire string. * 3. Get the arguments. *) let loc = Input.lex_loc channel stop in let lexeme = Input.lex_string channel stop in let start, args = dfa_args dfa_info lexeme in let skipped, lexeme = match start with Some pos -> String.sub lexeme 0 pos, String.sub lexeme pos (stop - pos) | None -> "", lexeme in Input.lex_stop channel stop; Some (IntTable.find dfa.dfa_action_table clause, loc, skipped, lexeme, args) (* * This is a slightly different version of searching, * where we skip to the EOF if there is no match. * * The reason for separating this is because it is a * hassle to deal with the 3 different return values * in the normal search function. *) let searchto dfa channel = let dfa_info = { dfa_stop_clause = -1; dfa_stop_pos = 0; dfa_stop_args = ArgTable.empty; dfa_start_pos = 0; dfa_args = NfaStateTable.empty; dfa_channel = channel } in let rec loop dfa_state c = match dfa_delta dfa dfa_info dfa_state c with Some dfa_state -> loop dfa_state (Input.lex_next channel) | None -> () in let dfa_state = dfa.dfa_states.(1) in let c = Input.lex_start channel in let () = loop dfa_state c in (* Now figure out what happened *) let { dfa_stop_clause = clause; dfa_stop_pos = stop; } = dfa_info in (* * If we did not get a match, return all the text to * the end of the channel. *) if clause < 0 then begin let stop = Input.lex_pos channel in if stop = 0 then begin Input.lex_stop channel stop; LexEOF end else let loc = Input.lex_loc channel stop in let lexeme = Input.lex_string channel stop in Input.lex_stop channel stop; LexSkipped (loc, lexeme) end else (* * We have the clause: * 1. Set the channel to the final position * 2. Get the entire string. * 3. Get the arguments. *) let loc = Input.lex_loc channel stop in let lexeme = Input.lex_string channel stop in let start, args = dfa_args dfa_info lexeme in let skipped, lexeme = match start with Some pos -> String.sub lexeme 0 pos, String.sub lexeme pos (stop - pos) | None -> "", lexeme in Input.lex_stop channel stop; LexMatched (IntTable.find dfa.dfa_action_table clause, loc, skipped, lexeme, args) (* * Just check for a string match. *) let matches dfa channel = match search dfa channel with None -> false | Some _ -> true (* * Create the DFA from a list of regular expressions. *) let create exp = let nfa = create_nfa exp in let () = if !debug_lexgen || !debug_lex then eprintf "%a@." pp_print_nfa nfa in let { nfa_hash = nfa_hash; nfa_table = nfa_table; nfa_start = nfa_start; nfa_actions = actions; nfa_search_start = nfa_search_start; nfa_search_states = nfa_search_states } = nfa in let dfa_hash = DfaState.create_state () in let nfa_start = DfaState.create dfa_hash [nfa_start] in let start = { dfa_state_index = 0; dfa_state_set = nfa_start; dfa_state_delta = TransTable.empty } in let nfa_search_start = DfaState.create dfa_hash [nfa_search_start] in let search_start = { dfa_state_index = 1; dfa_state_set = nfa_search_start; dfa_state_delta = TransTable.empty } in let map = DfaStateTable.empty in let map = DfaStateTable.add map nfa_start 0 in let map = DfaStateTable.add map nfa_search_start 1 in let states = Array.create 64 start in states.(1) <- search_start; { dfa_states = states; dfa_length = 2; dfa_map = map; dfa_table = nfa_table; dfa_action_table = actions; dfa_nfa_hash = nfa_hash; dfa_dfa_hash = dfa_hash; dfa_search_states = nfa_search_states } (* * External functions. *) let empty = { lex_exp = empty_exp; lex_dfa = None } let add_clause lex action s = let arity, exp = add_clause_exp lex.lex_exp action s in let lex = { lex_exp = exp; lex_dfa = None } in arity, lex let remove_clause lex action = { lex_exp = remove_clause_exp lex.lex_exp action; lex_dfa = None } (* * Take the union of two lexers. * We assume that if we have seen a clause before, * then we have seen all the rest of the clauses too. *) let union info1 info2 = let { lex_exp = exp1 } = info1 in let { lex_exp = exp2 } = info2 in (* Catch degenerate cases first *) match exp1.exp_clauses, exp2.exp_clauses with [], _ -> info2 | _, [] -> info1 | _ -> let changed, exp = union_exp exp1 exp2 in if changed then { lex_exp = exp; lex_dfa = None } else info1 let dfa_of_info info = match info.lex_dfa with Some dfa -> dfa | None -> let dfa = create info.lex_exp in info.lex_dfa <- Some dfa; dfa let lex info channel = lex (dfa_of_info info) channel let search info channel = search (dfa_of_info info) channel let searchto info channel = searchto (dfa_of_info info) channel let matches info channel = matches (dfa_of_info info) channel let compile info = ignore (dfa_of_info info) let pp_print_lexer buf info = let { lex_exp = exp } = info in let dfa = dfa_of_info info in fprintf buf "@[@[Lexer:@ %a@]" pp_print_exp exp; fprintf buf "@ @[NFA:"; Array.iter (fun nfa_state -> fprintf buf "@ %a" pp_print_nfa_state nfa_state) dfa.dfa_table; fprintf buf "@]@]" let hash info = Hashtbl.hash_param max_int max_int info.lex_exp end (************************************************************************ * Simplified Str replacement. *) module LmAction = struct type action = int let pp_print_action = pp_print_int let hash i = i let compare (i : int) (j : int) = if i < j then -1 else if i > j then 1 else 0 let choose = min end module LmLexer = MakeLexer (Lm_channel.LexerInput) (LmAction) module LmStr = struct type t = LmLexer.t (* * Create a regular expression. *) let regexp s = snd (LmLexer.add_clause LmLexer.empty 0 s) (* * Perform the match. *) let string_match info s off = let input = Lm_channel.of_substring s off (String.length s - off) in try let _ = LmLexer.lex info input in true with Failure _ -> false end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_digraph.ml0000664000152300015230000001163010322060244021121 0ustar jyhjyh(* Directed imperative graph implementation * Geoffrey Irving * $Id: lm_digraph.ml 7878 2005-10-09 00:13:24Z jyh $ *) (************************************** types *) type color = White | Black (* nodes are stored in a semi-doubly linked list *) type 'a node = { mutable n_info : 'a; mutable n_in_degree : int; mutable n_out_degree : int; mutable n_pred : 'a node list; mutable n_succ : 'a node list; mutable n_color : color; n_next : 'a node option ref; mutable n_prev : 'a node option ref } type 'a t = 'a node option ref (************************************** simple routines *) (* empty graph *) let create () = ref None (* node information *) let get n = n.n_info let in_degree n = n.n_in_degree let out_degree n = n.n_out_degree let pred n = n.n_pred let succ n = n.n_succ let query n m = List.memq m n.n_succ (* add node to g with information i *) let add_node g i = let l = !g in let next = ref l in let n = { n_info = i; n_in_degree = 0; n_out_degree = 0; n_pred = []; n_succ = []; n_color = White; n_next = next; n_prev = g } in g := Some n; match l with None -> n | Some m -> m.n_prev <- next; n (* add edge to g from node n to node m, possibly creating parallel edges *) let add_multi_edge n m = n.n_succ <- m :: n.n_succ; m.n_pred <- n :: m.n_pred; n.n_out_degree <- n.n_out_degree + 1; m.n_in_degree <- m.n_in_degree + 1 (* add edge to g from node n to node m *) let add_edge n m = if not (query n m) then add_multi_edge n m (************************************** deletion is complicated *) let rec list_remove n l = match l with [] -> raise (Invalid_argument "list_remove in digraph.ml") | m :: l -> if n == m then l else m :: list_remove n l (* delete from m the edge to n from m *) let delete_half_edge_to n m = m.n_succ <- list_remove n m.n_succ; m.n_out_degree <- m.n_out_degree - 1 (* delete from m the edge from n to m *) let delete_half_edge_from n m = m.n_pred <- list_remove n m.n_pred; m.n_in_degree <- m.n_in_degree - 1 (* delete node n from graph g *) let delete_node n = List.iter (delete_half_edge_to n) n.n_pred; List.iter (delete_half_edge_from n) n.n_succ; let prev = n.n_prev in let next = !(n.n_next) in prev := next; match next with None -> () | Some m -> m.n_prev <- prev (* delete edge between nodes n and m, if it exists *) let delete_edge n m = if query n m then (delete_half_edge_from n m; delete_half_edge_to m n) (************************************** weird graph modification *) (* second node merged into first *) let coalesce_nodes n m i = n.n_info <- i; delete_node m; List.iter (add_edge n) m.n_succ; List.iter (fun k -> add_edge k n) m.n_pred; n (************************************** structure independent operations *) let choose g = match !g with Some n -> n | None -> raise (Failure "choose") let rec find p g = match !g with None -> raise Not_found | Some n -> if p n then n else find p n.n_next (* iteration over all nodes (unspecified order) *) let rec list_aux l g = match !g with None -> l | Some n -> list_aux (n :: l) n.n_next let list g = list_aux [] g let rec iter f g = match !g with None -> () | Some n -> f n; iter f n.n_next let rec fold f i g = match !g with None -> i | Some n -> fold f (f i n) n.n_next let rec filter_aux l p g = match !g with None -> l | Some n -> filter_aux (if p n then n :: l else l) p n.n_next let filter p g = filter_aux [] p g let rec untouched_aux l g = match !g with None -> l | Some n -> untouched_aux (if n.n_color == White then n :: l else l) n.n_next let untouched g = untouched_aux [] g (************************************** depth first search and related functions *) let rec whitewash g = match !g with None -> () | Some n -> n.n_color <- White; whitewash n.n_next let rec is_path_aux m n = if n.n_color == White then ( n.n_color <- Black; n == m || List.exists (is_path_aux m) n.n_succ) else false let is_path g n m = whitewash g; is_path_aux m n let rec rev_postorder_list_aux l n = if n.n_color == White then ( n.n_color <- Black; n :: List.fold_left rev_postorder_list_aux l n.n_succ) else l let rev_postorder_list g n = whitewash g; rev_postorder_list_aux [] n let postorder_list g n = List.rev (rev_postorder_list g n) (************************************** approximate full graph orderings *) let rec full_rev_postorder_list_aux l g = match !g with None -> l | Some n -> let l = if n.n_color == White then rev_postorder_list_aux l n else l in full_rev_postorder_list_aux l n.n_next let full_rev_postorder_list g = whitewash g; full_rev_postorder_list_aux [] g omake-0.9.8.5/src/libmojave-external/util/lm_float80.ml0000664000152300015230000000675410456222231020777 0ustar jyhjyh(* Support for 80-bit floating point values Copyright (C) 2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) (* Lm_float80 type definition *) type float80 = string (* TEMP: fix this so it is better *) (* Lm_float80 coercions *) external to_string : float80 -> string = "string_of_float80" external to_float : float80 -> float = "float_of_float80" external to_int : float80 -> int = "int_of_float80" external of_string : string -> float80 = "float80_of_string" external of_float : float -> float80 = "float80_of_float" external of_int : int -> float80 = "float80_of_int" external format : string -> float80 -> string = "float80_format" (* Lm_float80 arithmetic functions *) external neg : float80 -> float80 = "float80_neg" external abs : float80 -> float80 = "float80_abs" external sin : float80 -> float80 = "float80_sin" external cos : float80 -> float80 = "float80_cos" external sqrt : float80 -> float80 = "float80_sqrt" external add : float80 -> float80 -> float80 = "float80_add" external sub : float80 -> float80 -> float80 = "float80_sub" external mul : float80 -> float80 -> float80 = "float80_mul" external div : float80 -> float80 -> float80 = "float80_div" external atan2 : float80 -> float80 -> float80 = "float80_atan2" external compare : float80 -> float80 -> int = "float80_compare" (* Constants *) let zero = of_float 0.0 let one = of_float 1.0 let minus_one = of_float ~-.1.0 (* Implemented functions *) let to_int64 f = Int64.of_float (to_float f) let of_int64 i = of_float (Int64.to_float i) let rem _ _ = raise (Failure "Not supported: Lm_float80.rem") let succ f = add f one let pred f = sub f one let is_zero f = (compare f zero) = 0 let min x y = if compare x y < 0 then x else y let max x y = if compare x y > 0 then x else y (* Check buffer bounds *) external c_blit_float32 : float80 -> string -> int -> unit = "c_blit_float32" external c_blit_float64 : float80 -> string -> int -> unit = "c_blit_float64" external c_blit_float80 : float80 -> string -> int -> unit = "c_blit_float80" let blit_float32 x buf off = let len = String.length buf in if off + 4 > len then raise (Invalid_argument "blit_float32"); c_blit_float32 x buf off let blit_float64 x buf off = let len = String.length buf in if off + 8 > len then raise (Invalid_argument "blit_float64"); c_blit_float64 x buf off let blit_float80 x buf off = let len = String.length buf in if off + 10 > len then raise (Invalid_argument "blit_float80"); c_blit_float80 x buf off omake-0.9.8.5/src/libmojave-external/util/lm_loop.ml0000664000152300015230000005372310456222231020471 0ustar jyhjyh(* * This module implements dominator calculations and * loop-nest trees. We use the Lengauer-Tarjen method, dreived * from Appel, "Modern Compiler Implementation in ML", 1998, * Cambridge University Press. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_debug open Lm_trace open Lm_symbol open Lm_printf (* * Lm_debug flag. *) let debug_loop = ref false (* * Node identifiers are just numbers. *) type node_id = int type node_dfnum = int module IntCompare = struct type t = int let compare = Pervasives.compare end module NodeIdSet = Lm_set.LmMake (IntCompare) module NodeIdTable = Lm_map.LmMake (IntCompare) (* * A node has: * node_data : the data * node_id : the index * node_name : the name of the data * node_parent : the depth-first parent * * node_best : best ancestor choice * node_sdno : the dfs number of the semi-dominator * node_size : the size of the data struct (for balancing) * node_ancestor : ancestor with lowest semi-dominator * node_idom : immediate dominator * node_bucket : *) type 'a node = { node_data : 'a; node_id : node_id; node_dfnum : node_dfnum; node_name : symbol; (* The graph *) node_parent : node_id; node_pred : node_id list; node_succ : node_id list; mutable node_bucket : NodeIdSet.t; (* Semi-dominators *) mutable node_idom : node_id; mutable node_ancestor : node_id; mutable node_child : node_id; mutable node_label : node_id; mutable node_sdno : node_dfnum; mutable node_size : int } (* * This is the state record for the computation. * state_nodes : an array node_id->node * state_vertex : an array indexed by dfnum * state_roots : a list of all the root node ids *) type 'a t = { state_nodes : 'a node array; state_vertex : 'a node array } (************************************************************************ * UTILITIES ************************************************************************) (* * Subtract two sorted lists. *) let rec subtract_sorted_list l1 l2 = match l1, l2 with [], _ -> [], l2 | _, [] -> l1, [] | x1 :: l1', x2 :: l2' -> if x1.node_dfnum = x2.node_dfnum then let l1, l2 = subtract_sorted_list l1' l2' in x1 :: l1, l2 else if x1.node_dfnum < x2.node_dfnum then let l1, l2 = subtract_sorted_list l1' l2 in x1 :: l1, l2 else let l1, l2 = subtract_sorted_list l1 l2' in l1, x2 :: l2 let rec merge_sorted_list l1 l2 = match l1, l2 with [], _ -> l2 | _, [] -> l1 | x1 :: l1', x2 :: l2' -> if x1.node_dfnum = x2.node_dfnum then x1 :: merge_sorted_list l1' l2' else if x1.node_dfnum < x2.node_dfnum then x1 :: merge_sorted_list l1' l2 else x2 :: merge_sorted_list l1 l2' (* * Print the tree. *) let tabstop = 3 (* * BUG: inherit until we fix this file. *) let print_symbol = pp_print_symbol std_formatter let print_node_int s v = print_string s; print_string ": "; print_int v let print_node_id_list s l = print_string s; print_string " = ["; ignore (List.fold_left (fun flag v -> if flag then print_string "; "; print_int v; true) false l); print_string "]" let print_node node = let { node_id = id; node_name = name; node_parent = parent; node_pred = pred; node_succ = succ; node_bucket = bucket; node_idom = idom; node_ancestor = ancestor; node_child = child; node_label = label; node_sdno = sdno; node_size = size } = node in open_hvbox tabstop; print_string "Node [name="; print_string (string_of_symbol name); print_string "] [id="; print_int id; print_string "]"; print_space (); print_node_int "Parent" parent; print_space (); print_node_id_list "Pred" pred; print_space (); print_node_id_list "Succ" succ; print_space (); print_node_id_list "Bucket" (NodeIdSet.to_list bucket); print_space (); print_node_int "Idom" idom; print_space (); print_node_int "Ancestor" ancestor; print_space (); print_node_int "Child" child; print_space (); print_node_int "Label" label; print_space (); print_node_int "Sdno" sdno; print_space (); print_node_int "Size" size; print_space (); close_box () let print_state state = open_vbox 0; ignore (Array.fold_left (fun flag node -> if flag then print_space (); print_node node; true) false state.state_vertex); close_box () (* * Print the trace. *) let pp_print_trace buf node_name trace = fprintf buf "@[*** Lm_loop trace:"; Lm_trace.pp_print buf (fun buf node -> pp_print_symbol buf (node_name node)) trace; fprintf buf "@]@." (************************************************************************ * CREATION ************************************************************************) (* * Catch Not_found and print the name. *) let symbol_find table v = try SymbolTable.find table v with Not_found -> raise (Invalid_argument ("Lm_loop.symbol_find: unbound var: " ^ Lm_symbol.string_of_symbol v)) (* * Create the node array. *) let create_nodes node_name node_succ nodes = (* Construct the var->node table, and the list of nodes *) let ntable, _ = List.fold_left (fun (ntable, i) node -> let ntable = SymbolTable.add ntable (node_name node) i in ntable, succ i) (SymbolTable.empty, 0) nodes in (* Create an array of nodes *) let nodes = Array.of_list nodes in (* Create the edges *) let succ = Array.map (fun node -> List.map (symbol_find ntable) (node_succ node)) nodes in let pred = Array.create (Array.length nodes) [] in let _ = Array.iteri (fun i succ -> List.iter (fun j -> pred.(j) <- i :: pred.(j)) succ) succ in (* Create nodes *) let nodes = Array.mapi (fun i node -> { node_data = node; node_id = i; node_dfnum = 0; node_name = node_name node; node_parent = 0; node_pred = pred.(i); node_succ = succ.(i); node_bucket = NodeIdSet.empty; node_idom = 0; node_ancestor = 0; node_child = 0; node_label = i; node_sdno = 0; node_size = 1 }) nodes in nodes (* * Order the nodes in depth-first order. * Start from the roots. *) let dfs nodes = (* Walk from a root in DFS order *) let rec search id1 i id2 = let node2 = nodes.(id2) in if node2.node_sdno = 0 then let node2 = { node2 with node_parent = id1; node_dfnum = i; node_sdno = i } in nodes.(id2) <- node2; search_list (succ i) id2 node2.node_succ else i and search_list i id idl = List.fold_left (search id) i idl in (* Walk each of the roots *) let _ = search_list 1 0 nodes.(0).node_succ in (* Now construct the vertex array *) let vertex = Array.copy nodes in for i = 0 to pred (Array.length nodes) do let node = nodes.(i) in vertex.(node.node_sdno) <- node done; vertex (* * Create the state. * Assign numbers to all the nodes. *) let create_state node_name node_succ root nodes = let nodes = create_nodes node_name node_succ (root :: nodes) in let vertex = dfs nodes in { state_nodes = nodes; state_vertex = vertex } (************************************************************************ * OPERATIONS ON THE STATE ************************************************************************) (* * Compare two nodes. *) let node_eq node1 node2 = node1.node_id = node2.node_id (* * Get the node corresponding to an id. *) let node_of_id state id = state.state_nodes.(id) (* * Accessors. *) let is_root_node node = node.node_id = 0 let node_succ state node = List.map (node_of_id state) node.node_succ let node_pred state node = List.map (node_of_id state) node.node_pred let node_parent state node = node_of_id state node.node_parent let node_ancestor state node = node_of_id state node.node_ancestor let node_child state node = node_of_id state node.node_child let node_sdno node = node.node_sdno let node_size node = node.node_size let node_label state node = node_of_id state node.node_label let node_idom state node = node_of_id state node.node_idom let node_bucket node = node.node_bucket (* * Modify the node. *) let set_ancestor node a = node.node_ancestor <- a.node_id let set_child node c = node.node_child <- c.node_id let set_size node s = node.node_size <- s let set_label node l = node.node_label <- l.node_id let set_sdno node i = node.node_sdno <- i let set_idom _ _ node idom = node.node_idom <- idom.node_id let add_to_bucket node w = let bucket = NodeIdSet.add node.node_bucket w.node_id in node.node_bucket <- bucket let clear_bucket node = node.node_bucket <- NodeIdSet.empty (************************************************************************ * DOMINATORS ************************************************************************) (* * Link two nodes. *) let link state v w = assert (not (node_eq v w)); if debug debug_loop then eprintf "Link@."; (* * Rebalance the forest maintained by the * child and ancestor data structures. *) let label_w = node_label state w in let sdno_label_w = node_sdno label_w in let rec balance s = if debug debug_loop then begin print_string "Balance:"; print_space (); print_node s; print_newline () end; let child_s = node_child state s in if sdno_label_w < node_sdno (node_label state child_s) then let child_child_s = node_child state child_s in let size_s = node_size s in let s = if size_s + node_size child_child_s >= node_size child_s * 2 then begin set_ancestor child_s s; set_child s child_child_s; s end else begin set_size child_s size_s; set_ancestor s child_s; child_s end in balance s else s in let s = balance w in let _ = set_label s label_w in let size_v = node_size v in let size_w = node_size w in let size_t = size_v + size_w in let s = set_size v size_t; if size_t < 2 * size_w then let s' = node_child state v in set_child v s; s' else s in (* Set all the ancestors *) let rec set_ancestors s = if not (is_root_node s) then begin set_ancestor s v; set_ancestors (node_child state s) end in set_ancestors s (* * Compress the ancestor path to node v to the node * whose label has the maximal semidominator number. *) let rec compress state v = if debug debug_loop then eprintf "Compress@."; let ancestor_v = node_ancestor state v in if not (is_root_node (node_ancestor state ancestor_v)) then begin compress state ancestor_v; let ancestor_v = node_ancestor state v in let ancestor_label_v = node_label state ancestor_v in if node_sdno ancestor_label_v < node_sdno (node_label state v) then set_label v ancestor_label_v; set_ancestor v (node_ancestor state ancestor_v) end (* * Find ancestor. *) let eval state v = if debug debug_loop then eprintf "Eval@."; if is_root_node (node_ancestor state v) then node_label state v else let _ = compress state v in let label_v = node_label state v in let ancestor_v = node_ancestor state v in let ancestor_label_v = node_label state ancestor_v in if node_sdno ancestor_label_v >= node_sdno label_v then label_v else ancestor_label_v (* * Dominator calculation. *) let dominators state = let { state_vertex = vertex } = state in let n = Array.length state.state_vertex in for i = pred n downto 1 do let w = vertex.(i) in let parent_w = node_parent state w in (* * Compute the initial values for semindominators and store * nodes with the same semidominator in the same bucket. *) List.iter (fun v -> let sdno_v = node_sdno v in let u = if sdno_v <= node_sdno w then v else eval state v in let sdno_u = node_sdno u in if sdno_u < node_sdno w then set_sdno w sdno_u) (node_pred state w); add_to_bucket vertex.(node_sdno w) w; link state parent_w w; (* * Compute immediate dominators for nodes in the bucket * of w's parent. *) NodeIdSet.iter (fun v -> let v = node_of_id state v in let u = eval state v in let idom = if node_sdno u < node_sdno v then u else parent_w in set_idom state "Hello" v idom) (node_bucket parent_w); clear_bucket parent_w done; (* * Now perform all the deferred dominator calculations. *) for i = 1 to pred n do let w = vertex.(i) in let idom_w = node_idom state w in if not (node_eq idom_w vertex.(node_sdno w)) then set_idom state "World" w (node_idom state idom_w) done (************************************************************************ * LOOPS ************************************************************************) (* * Build the dominator tree from the immediate dominators. *) let build_dtree state = Array.fold_left (fun dtree node -> let { node_id = id } = node in if id = 0 then dtree else let { node_id = parent} = node_idom state node in NodeIdTable.filter_add dtree parent (fun children -> let children = match children with Some children -> children | None -> NodeIdSet.empty in NodeIdSet.add children id)) NodeIdTable.empty state.state_vertex let dtree_children dtree id = try NodeIdTable.find dtree id with Not_found -> NodeIdSet.empty (* * Perform a DFS on the dominator tree, * looking for backedges. When we find one, classify all * the nodes along the path. *) let classify_nodes state dtree = (* * Find the best back-edge, given a table that gives the * depth-first depth of the parents. *) let rec find_best_backedge parents best succ = match succ with id1 :: succ -> let best = try let depth1 = NodeIdTable.find parents id1 in match best with Some (depth2, _) when depth2 > depth1 -> best | _ -> Some (depth1, id1) with Not_found -> best in find_best_backedge parents best succ | [] -> best in (* * Reclassify all the nodes along the path up to the * parent. *) let rec reclassify classes parent_id depth1 id1 = if id1 = parent_id then classes else let parent2, depth2 = try NodeIdTable.find classes id1 with Not_found -> 0, 0 in if depth2 > depth1 then (* We found a nested loop, so skip through it *) reclassify classes parent_id depth1 parent2 else (* This node belongs to the current loop *) let classes = NodeIdTable.add classes id1 (parent_id, depth1) in let { node_idom = idom } = node_of_id state id1 in reclassify classes parent_id depth1 idom in (* * Perform a DFS, looking for backedges. *) let rec search loops classes parents depth id = (* Catch self-edges *) let { node_succ = succ_edges } = node_of_id state id in let loops = if List.mem id succ_edges then NodeIdTable.add loops id [] else loops in (* Reclassify nodes with backedges *) let classes = match find_best_backedge parents None succ_edges with Some (depth, parent) -> reclassify classes parent depth id | None -> classes in (* Search the rest *) let depth = succ depth in let parents = NodeIdTable.add parents id depth in let children = dtree_children dtree id in NodeIdSet.fold (fun (loops, classes) id -> search loops classes parents depth id) (loops, classes) children in search NodeIdTable.empty NodeIdTable.empty NodeIdTable.empty 0 0 (* * Perform a second DFS, building the loop contents. *) let collect_natural_loops _ loops classes dtree = let rec collect loops id = let parent = try fst (NodeIdTable.find classes id) with Not_found -> 0 in let loops = NodeIdTable.filter_add loops parent (fun l -> let l = match l with Some l -> l | None -> [] in id :: l) in let children = dtree_children dtree id in NodeIdSet.fold collect loops children in NodeIdSet.fold collect loops (dtree_children dtree 0) (* * Now build the trace. *) let build_trace state loops = let rec collect id = try let nodes = NodeIdTable.find loops id in let trace = collect_list nodes in Lm_trace (id, trace) with Not_found -> Elem id and collect_list nodes = List.fold_left (fun nodes id -> collect id :: nodes) [] nodes in let trace = match collect 0 with Lm_trace (root, l) -> Elem root :: l | Elem _ -> raise (Invalid_argument "build_trace") in Lm_trace.map (fun id -> (node_of_id state id).node_data) trace (* * Put them all together. *) let build_nest state = let dtree = build_dtree state in let loops, classes = classify_nodes state dtree in let loops = collect_natural_loops state loops classes dtree in build_trace state loops (************************************************************************ * GLOBAL FUNCTION ************************************************************************) (* * Build the loop nest from the graph. *) let print_state state debug = if Lm_debug.debug debug_loop then begin open_vbox 3; print_string "*** Lm_loop: "; print_string debug; print_space (); print_state state; print_space (); print_string "*** Done"; close_box (); print_newline() end let create debug node_name node_succ root nodes = let state = create_state node_name node_succ root nodes in let _ = print_state state debug in let _ = dominators state in let _ = print_state state "XDominators" in state let loop_nest state node_name = let trace = build_nest state in if !debug_loop then pp_print_trace err_formatter node_name trace; trace let dominators state _ = Array.fold_left (**) (fun dom { node_name = name; node_idom = id } -> let idom = state.state_nodes.(id) in SymbolTable.add dom name idom.node_name) SymbolTable.empty state.state_nodes (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_table_graph.ml0000664000152300015230000004024110456222231021757 0ustar jyhjyh(* * This implementation of a graph is based on functional * tables. The graph is a table of nodes, where each node * has a list of its immediate neighbors. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) open Lm_debug open Set open Graph_sig (* * Array functor. *) module type NodeArrayArgSig = sig type graph type dummy module Table : Lm_map.LmMap with type key = int val dest_graph : graph -> int * dummy Table.t end module MakeNodeArray (Arg : NodeArrayArgSig) = struct open Arg type elt = int type graph = Arg.graph type 'a t = 'a option array (* Create the array *) let create graph x = let next, table = Arg.dest_graph graph in let a = Array.create next None in let _ = Table.iter (fun i _ -> a.(i) <- Some x) table in a (* Create with initializer *) let init graph f = let next, table = Arg.dest_graph graph in let a = Array.create next None in let _ = Table.iter (fun i _ -> a.(i) <- Some (f i)) table in a (* Get an element *) let get a x = match a.(x) with Some v -> v | None -> raise Not_found (* Set an element *) let set a x y = a.(x) <- Some y (* Iterate *) let iter f a = Array.iteri (fun node x -> match x with Some x -> f node x | None -> ()) a (* Map *) let map f a = Array.mapi (fun node x -> match x with Some x -> Some (f node x) | None -> None) a (* Fold *) let fold f b a = let i = Array.length a in let rec collect b j = if j = i then b else match a.(j) with Some x -> collect (f b j x) (succ j) | None -> collect b (succ j) in collect b 0 end (* * BUG: in these implementations: the nodes are represented by * numbers, and node allocation always increments the index. That means * that for graphs with a lot of activity, the node index may overflow. * * A smarter way would be to use a real free list to manage * allocation of nodes. Even better, the nodes should use weak * pointers, so we can reclaim parts of the graph after garbage * collection. * * For the compiler, these implementations should be adequate because * the graphs are short-lived. *) module UndirectedGraph = struct (* * A node is just a number. *) type node = int module NodeCompare = struct type t = node let compare = Pervasives.compare end module Set = Lm_set.LmMake (NodeCompare) module Table = Lm_map.LmMakeList (NodeCompare) (* * The graph contains: * 1. a Table that maps nodes to lists of neighbors, * 2. a list of nodes that are hidden * 3. a current allocation index for the next node. *) type t = { table : (node option) Table.t; hidden : Set.t; next : node } module ArrayArg = struct type node = int type graph = t type dummy = node option module Table = Table let dest_graph { next = next; table = table } = next, table end module NodeArray = MakeNodeArray (ArrayArg) (* * List operations as sets. *) let list_add x l = if List.mem x l then l else x :: l let list_union l1 l2 = List.fold_left (fun l x -> list_add (Some x) l) l1 l2 let table_add table node1 node2 = Table.filter table node1 (list_add (Some node2)) (* * Create a new, empty graph. *) let create () = { table = Table.empty; hidden = Set.empty; next = 1 } (* * Check that the table is closed. * All nodes must exist. *) let check_table { table = table } = Table.iter (fun i j -> match j with Some(j) -> if i = j || not (Table.mem table j) then raise (Invalid_argument (Lm_printf.sprintf "check_closed: %d->%d" i j)) | None -> ()) table (* * Nodes are compared as integers. *) let compare_node n1 n2 = n1 - n2 let eq_node n1 n2 = n1 = n2 (* * Add a node. *) let new_node { table = table; hidden = hidden; next = next } = { table = Table.add table next None; hidden = hidden; next = succ next }, next (* * Find all relevant destinations from a node *) let find_all table node = List.fold_left (fun all node -> match node with Some(node) -> node :: all | None -> all) [] (Table.find_all table node) (* * Add an edge to the table *) let add table node1 node2 = Table.add table node1 (Some node2) (* * When an edge is added, it should be added to the * adjacency lists of both nodes. *) let new_edge ({ table = table } as t) node1 node2 = assert(node1 <> node2); if List.mem node2 (find_all table node1) then t else let table = add table node1 node2 in let table = add table node2 node1 in { t with table = table } (* * Return the list of neighbors of the node. *) let neighbors { table = table; hidden = hidden } node = List.filter (fun node -> not (Set.mem hidden node)) (find_all table node) let degree { table = table; hidden = hidden } node = let rec count_visible i = function node :: nodes -> let i = if Set.mem hidden node then i else succ i in count_visible i nodes | [] -> i in count_visible 0 (find_all table node) (* * Check if an edge exists. *) let query { table = table } node1 node2 = List.mem node2 (find_all table node1) (* * When a node is deleted, all the edges to the node * must also be deleted. *) let delete_node { table = table; hidden = hidden; next = next } node = let delete_node table key = Table.filter table key (Lm_list_util.remove (Some node)) in let neighbors = find_all table node in let table = List.fold_left delete_node table neighbors in let table = Table.remove table node in let table = { table = table; hidden = Set.remove hidden node; next = next } in (* check_table table; *) table (* * Delete a single edge. *) let delete_edge ({ table = table } as t) node1 node2 = let table = Table.filter table node1 (Lm_list_util.remove (Some node2)) in let table = Table.filter table node2 (Lm_list_util.remove (Some node1)) in let table = { t with table = table } in (* check_table table; *) table (* * Map a function over the nodes. *) let fold f arg { table = table; hidden = hidden } = let fold_fun arg node _ = if Set.mem hidden node then arg else f arg node in Table.fold fold_fun arg table (* * Temporary hiding. *) let hide_node ({ hidden = hidden } as t) node = { t with hidden = Set.add hidden node } let hide_nodes ({ hidden = hidden } as t) nodes = { t with hidden = Set.subtract_list hidden nodes } let restore_node ({ hidden = hidden } as t) node = { t with hidden = Set.remove hidden node } (* * When nodes are coalesced, only the first node remains * in the graph, with edges for the union of the edges of * both nodes. *) let coalesce ({ table = table; hidden = hidden } as t) node1 node2 = (* Neither node should be hidden *) assert(node1 <> node2); if Set.mem hidden node1 || Set.mem hidden node2 then raise (Invalid_argument "coalesce"); (* Combine the edge lists *) let nodes2 = Lm_list_util.remove node1 (find_all table node2) in let table = Table.filter table node1 (fun nodes -> list_union nodes nodes2) in let table = List.fold_left (fun table node2 -> table_add table node2 node1) table nodes2 in let table = { t with table = table } in (* check_table table; *) (* Delete the second node *) delete_node table node2 end (* * The directed graph is similar to the undirected graph, * but we keep two values for each node: the list of predecessors * and the list of successors. *) module DirectedGraph = struct (* * A node is just a number. *) type node = int module NodeCompare = struct type t = node let compare = Pervasives.compare end module Set = Lm_set.LmMake (NodeCompare) module Table = Lm_map.LmMake (NodeCompare) (* * The graph is a Table that maps nodes to lists of neighbors, * and a current allocation index for the next node. *) type edges = { pred : Set.t; succ : Set.t } type t = { table : edges Table.t; next : node } module ArrayArg = struct type node = int type graph = t type dummy = edges module Table = Table let dest_graph { next = next; table = table } = next, table end (* * Array. *) module NodeArray = MakeNodeArray (ArrayArg) (* * Create a new, empty graph. *) let create () = { table = Table.empty; next = 0 } (* * Nodes are compared as integers. *) let eq_node n1 n2 = n1 = n2 (* * Add a node. *) let new_node { table = table; next = next } = let node = next in let table = Table.add table node { pred = Set.empty; succ = Set.empty } in if not (Table.mem table node) then Lm_printf.eprintf "tried to add node %d, but it's gone missing already!\n" node; { table = table; next = succ next }, node (* * Update the value in the table. *) let update table node f = let x = f (Table.find table node) in let table = Table.remove table node in let table = Table.add table node x in table (* * When an edge is added, it should be added to the * adjacency lists of both nodes. *) let new_edge { table = table; next = next } node1 node2 = let add_succ { pred = pred; succ = succ } = { pred = pred; succ = Set.add succ node2 } in let add_pred { pred = pred; succ = succ } = { pred = Set.add pred node1; succ = succ } in let table = update table node1 add_succ in let table = update table node2 add_pred in if not (Table.mem table node1) then Lm_printf.eprintf "tried to add %d->%d, but %d node is missing!\n" node1 node2 node1 else if not (Set.mem (Table.find table node1).succ node2) then Lm_printf.eprintf "tried to add %d->%d, but successor element is missing!\n" node1 node2; if not (Table.mem table node2) then Lm_printf.eprintf "tried to add %d->%d, but %d node is missing!\n" node1 node2 node2 else if not (Set.mem (Table.find table node2).pred node1) then Lm_printf.eprintf "tried to add %d->%d, but predecessor element is missing!\n" node1 node2; { table = table; next = next } (* * Return the list of neighbors of the node. *) let pred { table = table } node = if Table.mem table node then Set.elements (Table.find table node).pred else [] let succ { table = table } node = if Table.mem table node then Set.elements (Table.find table node).succ else [] (* * Check if a node exists. *) let query_node { table = table } node = Table.mem table node (* * Check if an edge exists. *) let query { table = table } node1 node2 = if Table.mem table node1 then Set.mem (Table.find table node1).succ node2 else false (* * When a node is deleted, all the edges to the node * must also be deleted. *) let delete_node { table = table; next = next } node = let remove_pred { pred = pred; succ = succ } = { pred = Set.remove pred node; succ = succ } in let remove_pred' table node = update table node remove_pred in let remove_succ { pred = pred; succ = succ } = { pred = pred; succ = Set.remove succ node } in let remove_succ' table node = update table node remove_succ in let table = if Table.mem table node then let { pred = pred; succ = succ } = Table.find table node in let table = List.fold_left remove_succ' table (Set.elements pred) in let table = List.fold_left remove_pred' table (Set.elements succ) in let table = Table.remove table node in table else table in { table = table; next = next } (* * Delete a single edge. *) let delete_edge { table = table; next = next } node1 node2 = let remove_succ { pred = pred; succ = succ } = { pred = pred; succ = Set.remove succ node2 } in let remove_pred { pred = pred; succ = succ } = { pred = Set.remove pred node1 ; succ = succ } in let table = update table node1 remove_succ in let table = update table node2 remove_pred in { table = table; next = next } (* * In the depth-first-search, the graph is traversed * from the originating node outward. We keep a bit-vector * for marking nodes as we traverse them. *) let depth_first_search graph node f arg1 arg2 = let { table = table; next = next } = graph in let marked = Array.create next false in let rec search arg1 arg2 = function node :: nodes -> let arg1 = if marked.(node) then arg1 else let arg1, arg2 = f arg1 arg2 node in marked.(node) <- true; search arg1 arg2 (succ graph node) in search arg1 arg2 nodes | [] -> arg1 in search arg1 arg2 [node] (* * Get the roots (nodes that have no in-edges). * There may be no roots in a cyclic graph. *) let roots { table = table } = Table.fold (fun roots i edges -> let { pred = pred } = edges in if Set.equal pred Set.empty then i :: roots else roots) [] table (* * Sort the nodes. * If the graph is acyclic, this will give a topological sort. *) let sort graph = let { table = table; next = next } = graph in let marked = Array.create next false in (* Invariant: all nodes' are larger than * any non-searched child of node :: nodes *) let rec search nodes' = function node :: nodes -> if marked.(node) then search nodes' nodes else begin marked.(node) <- true; let nodes' = search nodes' (succ graph node) in search (node :: nodes') nodes end | [] -> nodes' in let roots = roots graph in let nodes = Table.fold (fun nodes i _ -> i :: nodes) [] table in search (search [] roots) nodes end (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_interval_set.mli0000664000152300015230000000545510456222231022367 0ustar jyhjyh(* * Interval sets. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Elements. *) module type OrderedType = sig type t val compare : t -> t -> int end (* * Elements in countable sets. *) module type CountableOrderedType = sig type t val compare : t -> t -> int val succ : t -> t val pred : t -> t val min : t val max : t end (* * Sets specified as intervals. *) type 'a bound = Infinity | Open of 'a | Closed of 'a module type IntervalSetSig = sig type elt type t (* * Set constructors. *) val empty : t val max_set : t val of_interval : elt bound -> elt bound -> t val is_empty : t -> bool val is_total : t -> bool val is_enum : t -> elt -> bool val to_enum : t -> elt (* * Set operations. *) val subset : t -> t -> bool val equal : t -> t -> bool val subtract : t -> t -> t val negate : t -> t val union : t -> t -> t val isect : t -> t -> t (* * Singletons. *) val of_point : elt -> t val mem_point : elt -> t -> bool val add_point : t -> elt -> t val is_singleton : t -> bool val dest_singleton : t -> elt val subtract_point : t -> elt -> t (* * Mapping. *) val iter : (elt bound -> elt bound -> unit) -> t -> unit val fold : ('a -> elt bound -> elt bound -> 'a) -> 'a -> t -> 'a end (* * Intervals over a dense set (like strings or rationals). * Need both open and closed intervals. *) module DenseIntervalSet (Element : OrderedType) : IntervalSetSig with type elt = Element.t (* * Countable set has predecessor and successor functions. *) module CountableIntervalSet (Element : CountableOrderedType) : IntervalSetSig with type elt = Element.t (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_listbuf.ml0000664000152300015230000000540210456222231021157 0ustar jyhjyh(* Simple imperative list buffer utility (used for instruction buffers) Copyright (C) 2002,2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) (*** Type definitions ***) type 'a t = Empty | FwdList of 'a list | RevList of 'a list (*** Functions ***) let empty = Empty let of_elt elt = RevList [elt] let of_list ls = FwdList ls let to_list buf = match buf with Empty -> [] | FwdList buf -> buf | RevList buf -> List.rev buf let add buf elt = match buf with Empty -> RevList [elt] | FwdList buf -> RevList (elt :: List.rev buf) | RevList buf -> RevList (elt :: buf) let add_list buf ls = let rec add_list buf = function elt :: ls -> add_list (elt :: buf) ls | [] -> RevList buf in match buf with Empty -> FwdList ls | FwdList buf -> add_list (List.rev buf) ls | RevList buf -> add_list buf ls let add_rev_list buf ls = let rec add_rev_list buf = function elt :: ls -> elt :: (add_rev_list buf ls) | [] -> buf in match buf with Empty -> RevList ls | FwdList buf -> RevList (add_rev_list (List.rev buf) ls) | RevList buf -> RevList (add_rev_list buf ls) let add_listbuf buf ls = let rec add_listbuf_rev buf = function elt :: ls -> elt :: (add_listbuf_rev buf ls) | [] -> buf in let add_listbuf_rev buf ls = RevList (add_listbuf_rev buf ls) in match buf, ls with Empty, _ -> ls | _, Empty -> buf | _, FwdList ls -> add_list buf ls | FwdList buf, RevList ls -> add_listbuf_rev (List.rev buf) ls | RevList buf, RevList ls -> add_listbuf_rev buf ls omake-0.9.8.5/src/libmojave-external/util/lm_position.ml0000664000152300015230000001611310456222231021354 0ustar jyhjyh(* * Lm_position information for debugging. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_debug open Lm_symbol open Lm_location open Lm_printf let debug_pos = create_debug (**) { debug_name = "pos"; debug_description = "print verbose position information for debugging"; debug_value = false } let trace_pos = create_debug (**) { debug_name = "trace_pos"; debug_description = "print position trace for debugging"; debug_value = false } (************************************************************************ * TYPES ************************************************************************) (* * We include the name of the module where * the position is created. The value is a location, * a raw value, or a value with another position. *) (* %%MAGICBEGIN%% *) type 'a pos = string * 'a exn_loc and 'a exn_loc = DebugLoc of loc | DebugBase of 'a | DebugCons of 'a * 'a pos | DebugConsLoc of loc * 'a pos | DebugPos of 'a pos * 'a pos | DebugInt of int * 'a pos | DebugString of string * 'a pos | DebugSymbol of symbol * 'a pos | DebugDel of (out_channel -> unit) * loc | DebugDelExp of (out_channel -> unit) * 'a pos (* %%MAGICEND%% *) (* * Module for creating positions. * You have to specify the name of the module * where the exception are being created: use * MakePos in each file where Name.name is set * to the name of the module. *) module type PosSig = sig type t (* Creating positions *) val loc_exp_pos : loc -> t pos val loc_pos : loc -> t pos -> t pos val base_pos : t -> t pos val cons_pos : t -> t pos -> t pos val pos_pos : t pos -> t pos -> t pos val int_pos : int -> t pos -> t pos val string_pos : string -> t pos -> t pos val symbol_pos : symbol -> t pos -> t pos val del_pos : (out_channel -> unit) -> loc -> t pos val del_exp_pos : (out_channel -> unit) -> t pos -> t pos (* Utilities *) val loc_of_pos : t pos -> loc val pp_print_pos : formatter -> t pos -> unit end module type NameSig = sig type t (* This is the name of the module where the position info is created *) val name : string (* Utilities for managing values *) val loc_of_value : t -> loc val pp_print_value : formatter -> t -> unit end (************************************************************************ * IMPLEMENTATION ************************************************************************) module MakePos (Name : NameSig) = struct open Name type t = Name.t (* * Get the source location for an exception. *) let rec loc_of_pos (_, pos) = match pos with DebugLoc loc | DebugDel (_, loc) | DebugConsLoc (loc, _) -> loc | DebugBase x -> loc_of_value x | DebugCons (_, pos) | DebugPos (_, pos) | DebugInt (_, pos) | DebugString (_, pos) | DebugSymbol (_, pos) | DebugDelExp (_, pos) -> loc_of_pos pos (* * Print debugging info. *) let rec pp_print_pos buf (name, e) = match e with DebugLoc _ -> () | DebugBase x -> fprintf buf "@ %s.%a" name pp_print_value x | DebugCons (x, pos) -> pp_print_pos buf pos; fprintf buf "@ /%s.%a" name pp_print_value x | DebugConsLoc (_, pos) -> pp_print_pos buf pos | DebugPos (pos1, pos2) -> fprintf buf "@ @[Called from: %s%a@]%a" (**) name pp_print_pos pos1 pp_print_pos pos2 | DebugString (s, pos) -> pp_print_pos buf pos; fprintf buf "@ /%s.%s" name s | DebugInt (i, pos) -> pp_print_pos buf pos; fprintf buf "@ %s.%d" name i | DebugSymbol (v, pos) -> pp_print_pos buf pos; fprintf buf "@ %s.%a" name output_symbol v | DebugDel (f, _) -> fprintf buf "@ %t" f | DebugDelExp (f, pos) -> pp_print_pos buf pos; fprintf buf "@ %t" f (* * Real error printer. *) let pp_print_pos buf pos = fprintf buf "@[%a" pp_print_location (loc_of_pos pos); if !debug_pos then pp_print_pos buf pos; fprintf buf "@]" (* * Base values. *) let loc_exp_pos loc = if !trace_pos then eprintf "Lm_trace: %s.%a@." name pp_print_location loc; name, DebugLoc loc let loc_pos loc pos = if !trace_pos then eprintf "Lm_trace: %s.loc@." name; name, DebugConsLoc (loc, pos) let base_pos x = if !trace_pos then eprintf "Lm_trace: %s.base@." name; name, DebugBase x let pos_pos pos1 pos2 = if !trace_pos then eprintf "Lm_trace: %s.pos@." name; if !debug_pos then name, DebugPos (pos1, pos2) else pos2 let cons_pos x pos = if !trace_pos then eprintf "Lm_trace: %s.cons@." name; if !debug_pos then name, DebugCons (x, pos) else pos let int_pos i pos = if !trace_pos then eprintf "Lm_trace: %s.int: %d@." name i; if !debug_pos then name, DebugInt (i, pos) else pos let string_pos s pos = if !trace_pos then eprintf "Lm_trace: %s.string: %s@." name s; if !debug_pos then name, DebugString (s, pos) else pos let symbol_pos v pos = if !trace_pos then eprintf "Lm_trace: %s.symbol: %a@." name output_symbol v; if !debug_pos then name, DebugSymbol (v, pos) else pos let del_pos f loc = if !trace_pos then eprintf "Lm_trace: %s.delayed@." name; name, DebugDel (f, loc) let del_exp_pos f pos = if !trace_pos then eprintf "Lm_trace: %s.delayed@." name; if !debug_pos then name, DebugDelExp (f, pos) else pos end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_field_table.mli0000664000152300015230000001153610571651147022131 0ustar jyhjyh(* * The FieldMTable is used for information about * methods and fields. Each field in the table * has both an external and internal name. Fields * can share external names, but internal names * have to be distinct. * * We use a special representation so we can get * all of the following: * 1. Strict ordering of the fields * 2. Quick access based on external name * 3. Quick access based on internal name * * The internal name table is computed lazily: we generate * it when we need it and save the generated table. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol (* * FieldTable is a simple table, like * a SymbolTable that defines an ordering on * the fields. *) module type FieldTableSig = sig (* * The table type. *) type 'a t (* * Empty table. *) val empty : 'a t (* * Number of entries. *) val cardinal : 'a t -> int (* * Add an entry. The first var is the external name, * the second var is the internal name. *) val add : 'a t -> symbol -> 'a -> 'a t (* * Add an entry with a specific index. * WARNING: use this only if you know what you are doing. * You should never add multiple entries with the same index. * One case where this is ok is when you construct one table from * another using fold_index. *) val add_index : 'a t -> symbol -> 'a -> int -> 'a t (* * Membership in the table. *) val mem : 'a t -> symbol -> bool (* * Get the entries for the name. *) val find : 'a t -> symbol -> 'a val find_index : 'a t -> symbol -> int val find_with_index : 'a t -> symbol -> 'a * int (* * Return an ordered list of fields. *) val to_list : 'a t -> (symbol * 'a) list (* * Iterators. *) val iter : (symbol -> 'a -> unit) -> 'a t -> unit val map : ('a -> 'b) -> 'a t -> 'b t val mapi : (symbol -> 'a -> 'b) -> 'a t -> 'b t val fold : ('a -> symbol -> 'b -> 'a) -> 'a -> 'b t -> 'a val fold_map : ('a -> symbol -> 'b -> 'a * 'c) -> 'a -> 'b t -> 'a * 'c t val fold_index : ('a -> symbol -> 'b -> int -> 'a) -> 'a -> 'b t -> 'a end (* * FieldMTable is a table that allows multiple * definitions for each external field name. *) type ext_symbol = symbol type int_symbol = symbol module type FieldMTableSig = sig (* * The table type. *) type 'a t (* * Create an empty table. *) val create : unit -> 'a t (* * Add an entry. The first var is the external name, * the second var is the internal name. *) val add : 'a t -> ext_symbol -> int_symbol -> 'a -> 'a t (* * Get the entries for the external name. *) val find_ext : 'a t -> ext_symbol -> (int_symbol * 'a) list val find_int : 'a t -> int_symbol -> ext_symbol * 'a (* * Allow replacement of ext entries. * The replacement function is called on each of the entries, until * a valid replacement is found. The replacement function should * raise Not_found if the replacement is not desired. The first * replacement is accepted, and if no replacement is found, this * function raises Not_found. *) val replace_ext : 'a t -> ext_symbol -> (int_symbol -> 'a -> int_symbol * 'a) -> 'a t (* * Return the list of fields. *) val to_list : 'a t -> (ext_symbol * int_symbol * 'a) list (* * Iterators. *) val debug_iter : (ext_symbol -> int_symbol -> 'a -> int -> unit) -> 'a t -> unit val map : (ext_symbol -> int_symbol -> 'a -> int_symbol * 'b) -> 'a t -> 'b t val fold : ('a -> ext_symbol -> int_symbol -> 'b -> 'a) -> 'a -> 'b t -> 'a end (* * A simple field table. *) module FieldTable : FieldTableSig module FieldMTable : FieldMTableSig (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_attribute.ml0000664000152300015230000001235410456222231021516 0ustar jyhjyh(* * This is a lazy attribute-grammar. * A term has: * * 0. A "core" value of the term (called 'core) * * 1. A label of some arbitrary type (called 'label) * * 2. A synthesized attribute (called 'up). The attribute * is computed lazily. The value is arbitrary, but the * calling module has to provide a function to compute the * attribute for the term. * * 3. An inherited attribute (called 'down). Inherited attributes * transform the core value, and are mapped from the top * down. The calling module has to supply a function to * apply the attribute to the core value. * * * The common example is: * * 1. The label is a source position in the program. * 2. The synthesized attribute is the free variables of the term. * 3. The inherited attribute is a substitution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf (************************************************************************ * TYPES ************************************************************************) (* * A delayed substitution. *) type ('down, 'core) core = Core of 'core | Apply of 'down * 'core (* * An annotated term. *) type ('label, 'up, 'down, 'core) term = { term_label : 'label; mutable term_up : 'up option; mutable term_core : ('down, 'core) core } (* * A simple term does not have attributes. *) type ('label, 'core) simple_term = { simple_label : 'label; simple_core : 'core } (************************************************************************ * IMPLEMENTATION ************************************************************************) (* * Wrap a core. *) let wrap_core note core = { term_label = note; term_up = None; term_core = Core core } let wrap_simple_core note core = { simple_label = note; simple_core = core } let label_of_term term = term.term_label let label_of_simple_term term = term.simple_label (* * Inherited attribute application. *) let apply down_union down term = let { term_label = loc; term_core = core } = term in let core = match core with Core core -> Apply (down, core) | Apply (down', core) -> Apply (down_union down down', core) in { term_label = loc; term_core = core; term_up = None } (* * Destruction. *) let dest_core apply term = match term.term_core with Core core -> core | Apply (down, core) -> let core' = apply down core in term.term_core <- Core core'; core' let dest_simple_core term = term.simple_core (* * Get the synthesized attribute. * This doesn't actually return the attribute directly. * It expects a function to compute the attribute from the * core and any delayed inherited attributes. *) let rec dest_up synthesize1 synthesize2 term = match term.term_up with Some up -> up | None -> let up = match term.term_core with Core core -> synthesize1 core | Apply (down, core) -> synthesize2 down (synthesize1 core) in term.term_up <- Some up; up (* * For debugging, we allow printing. *) let pp_print_term pp_print_up pp_print_down pp_print_core buf t = let { term_up = up; term_core = core } = t in fprintf buf "@[@[{ "; let break_flag = match up with Some up -> fprintf buf "@[up =@ %a@]" pp_print_up up; true | None -> false in let break_flag, core = match core with Apply (down, core) -> if break_flag then pp_print_space buf (); fprintf buf "@[down =@ %a@]" pp_print_down down; true, core | Core core -> break_flag, core in if break_flag then pp_print_space buf (); fprintf buf "@[core =@ %a@]@]@ }@]" pp_print_core core (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_profile.ml0000664000152300015230000000501110456222231021143 0ustar jyhjyh(* Profiling code Copyright (C) 2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) let profile_level = ref 0 (* * Saving profile information to a file. *) let profile_file = ref "" let profile_file_opened = ref false let profile_out = ref stdout let difference_of tm1 tm2 = tm1.Unix.tms_utime -. tm2.Unix.tms_utime let profile msg f arg = if !profile_file <> "" && not (!profile_file_opened) then begin profile_out := open_out (!profile_file); profile_file_opened := true end; let padding = String.make (!profile_level * 2) ' ' in let _ = profile_level := succ !profile_level in let _ = Lm_printf.eprintf "profile: %s%s entered\n" padding msg in let _ = flush stderr in let starttime = Unix.times () in let result = f arg in let stoptime = Unix.times () in let _ = profile_level := pred !profile_level in let deltatime = difference_of stoptime starttime in let seconds = int_of_float deltatime in let hours = seconds / 3600 in let minutes = (seconds / 60) mod 60 in let seconds = seconds mod 60 in let millisec = (int_of_float (deltatime *. 1000.0)) mod 1000 in let total = int_of_float (deltatime *. 1000.0) in Lm_printf.eprintf "profile: %s%s took %d:%02d:%02d.%03d\n" padding msg hours minutes seconds millisec; if !profile_file <> "" then begin let s = Lm_printf.sprintf "%s%s #%d\n" padding msg total in output_string !profile_out s; flush !profile_out end; flush stderr; result omake-0.9.8.5/src/libmojave-external/util/lm_trace.ml0000664000152300015230000001065410456222231020612 0ustar jyhjyh(* * A trace is like a nested list. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf type 'a trace = 'a trace_node list and 'a trace_node = Elem of 'a | Lm_trace of 'a * 'a trace (* * Usual map, fold functions. *) let rec map f t = List.map (map_node f) t and map_node f = function Elem x -> Elem (f x) | Lm_trace (x, t) -> Lm_trace (f x, map f t) let rec fold f a t = List.fold_left (fold_node f) a t and fold_node f a = function Elem x -> f a x | Lm_trace (x, t) -> fold f (f a x) t let rec iter f t = List.iter (iter_node f) t and iter_node f = function Elem x -> f x | Lm_trace (x, t) -> f x; iter f t (* * Include the nesting depth. *) let iter_depth f t = let rec iter depth t = List.iter (iter_node depth) t and iter_node depth = function Elem x -> f depth x | Lm_trace (x, t) -> let depth = succ depth in f depth x; iter depth t in iter 0 t (* * Include the nesting depth. *) let map_depth f t = let rec map depth t = List.map (map_node depth) t and map_node depth = function Elem x -> Elem (f depth x) | Lm_trace (x, t) -> let depth = succ depth in let x = f depth x in let t = map depth t in Lm_trace (x, t) in map 0 t (* * Flatten the trace. *) let of_list l = List.map (fun x -> Elem x) l let to_list t = let l = fold (fun l x -> x :: l) [] t in List.rev l (* * Lm_trace simultaneous map fold. *) let rec fold_map f x l = match l with h :: t -> let x, h = f x h in let x, t = fold_map f x t in x, h :: t | [] -> x, [] let fold_map f x l = let rec fold_node x a = match a with Elem a -> let x, a = f x a in x, Elem a | Lm_trace (a, l) -> let x, a = f x a in let x, l = fold_map fold_node x l in x, Lm_trace (a, l) in fold_map fold_node x l (* * Extract the Lm_trace headers. *) let rec head_elem head x = match x with Elem _ -> head | Lm_trace (x, l) -> head_list (x :: head) l and head_list head l = match l with h :: l -> head_list (head_elem head h) l | [] -> head let header_nodes l = head_list [] l (* * Extract the Lm_trace "special" nodes. * These are the loop entries and exits. *) let rec special_elem special x = match x with Elem _ -> special | Lm_trace (x, l) -> special_list (x :: special) l and special_list special l = match l with (Lm_trace _ as h) :: ((Elem x :: _) as l) -> special_list (special_elem (x :: special) h) l | h :: l -> special_list (special_elem special h) l | [] -> special let special_nodes l = special_list [] l (* * Print the trace. *) let pp_print buf pp_print_node trace = let rec print depth = function Elem x -> fprintf buf "@ "; pp_print_node buf x | Lm_trace (x, l) -> let depth = succ depth in fprintf buf "@ @[Lm_trace[%d]:@ " depth; pp_print_node buf x; List.iter (print depth) l; fprintf buf "@]" in List.iter (print 0) trace (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_db.mli0000664000152300015230000000504610627370724020264 0ustar jyhjyh(* * A simple database. This is a low-level ionterface. * See, for example, omake_db.ml to see a higher-level * interface. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) val debug_db : bool ref type t = Unix.file_descr type tag = int type magic = string type digest = string type hostname = string type named_value = string * string type entry_pred = tag -> named_value list -> hostname -> digest -> bool (* * Some kinds of entries are host-independent. *) type host = HostIndependent | HostDependent (* * These functions assume that the file is locked. * tag: the kind of entry * magic: the magic number for this version * digest: the source file digest (or use the empty string) * * These functions operate by side-effect, modifying the file. * add: remove the old entry and add a new one * find: find an existing entry, or raise Not_found if it doesn't exist * remove: remove an old entry, does not fail. *) val add : t -> string -> tag * host -> magic -> digest -> 'a -> unit val find : t -> string -> tag * host -> magic -> digest -> 'a val remove : t -> string -> tag * host -> magic -> unit (* * Somewhat more general interface. *) val first_entry_tag : tag val append_entry : t -> string -> tag -> named_value list -> digest -> 'a -> unit val find_entry : t -> string -> entry_pred -> 'a val remove_entry : t -> string -> entry_pred -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_flags.ml0000664000152300015230000002350410456222231020606 0ustar jyhjyh(* * Lm_flags environment * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2002,2001 Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_string_set open Lm_printf (*** Environment to Store Lm_flags ***) (* * For flags environment, indicate the type of the value recorded. *) type flag_value = FlagBool of bool | FlagInt of int (* * Flag help text is indexed on the name of the flag. The first string is * the description for the help section, and the table is help text specific * to each individual flag. The help sections themselves are indexed on a * named tag, usually the prefix of all the flags in that section. *) type flag_help_section = string * (string StringTable.t) (* * The flags environment contains the environment of currently set flags, as * well as a registry of ``valid names'' and their default values. You can * define new names which do not appear in the defaults table, however you * cannot lookup a name that appears neither in the current environment nor * the defaults. *) type flags = { flag_values : flag_value StringTable.t; (* current environment *) flag_defaults : flag_value StringTable.t; (* registered names & defaults *) flag_help : flag_help_section StringTable.t; } (*** Flag Environment Handlers ***) (* * Simple (low-level) manipulations on the flags environment. *) let flags_empty = { flag_values = StringTable.empty; flag_defaults = StringTable.empty; flag_help = StringTable.empty; } let flags_set flags name value = if StringTable.mem flags.flag_defaults name then { flags with flag_values = StringTable.add flags.flag_values name value } else raise (Failure ("flags_set: flag " ^ name ^ " not defined")) let flags_is_set flags name = StringTable.mem flags.flag_values name let flags_get flags name = try StringTable.find flags.flag_values name with Not_found -> StringTable.find flags.flag_defaults name (* * Set the informational text for a help section. *) let flags_help_section_text flags help_tag text = let help = flags.flag_help in let help_section = try snd (StringTable.find help help_tag) with Not_found -> StringTable.empty in let help = StringTable.add help help_tag (text, help_section) in { flags with flag_help = help } (* * Add a new binding for a particular flag in the help text. *) let flags_register_help flags name help_tag help_text = let help = flags.flag_help in let help_section_text, help_section = try StringTable.find help help_tag with Not_found -> help_tag, StringTable.empty in let help_section = StringTable.add help_section name help_text in let help = StringTable.add help help_tag (help_section_text, help_section) in help (* * Register a new optimization flag (or multiple flags). *) let flags_register_help flags name default help_tag help_text = { flags with flag_defaults = StringTable.add flags.flag_defaults name default; flag_help = flags_register_help flags name help_tag help_text; } let flags_register flags name default = flags_register_help flags name default "other" "no help available" let flags_register_list flags names = List.fold_left (fun flags (name, default) -> flags_register flags name default) flags names let flags_register_list_help flags help_tag names = List.fold_left (fun flags (name, default, help_text) -> flags_register_help flags name default help_tag help_text) flags names (* * Display the currently-registered names. *) let print_text_block text = let length = String.length text in let rec print_chars n = if n < length then begin (match text.[n] with ' ' -> printf "@ " | _ as c -> printf "%c" c); print_chars (succ n) end in printf "@["; print_chars 0; printf "@]" let print_flag_defaults_section flags help_tag help_section_text help_section = printf "@[%s: " help_tag; print_text_block help_section_text; StringTable.iter (fun flag text -> let default = match StringTable.find flags.flag_defaults flag with FlagBool true -> "true" | FlagBool false -> "false" | FlagInt i -> string_of_int i in printf "@ @[%-30s = %s@ " flag default; print_text_block text; printf "@]") help_section; printf "@]@.@." let print_flag_defaults flags = printf "@["; StringTable.iter (fun help_tag (help_section_text, help_section) -> print_flag_defaults_section flags help_tag help_section_text help_section) flags.flag_help; printf "@]" (* * Read and set a boolean value. flag is the name of the flag; for * set, value is the value to set, and for get, the environment is * searched first, then the default environment (if the name is not * bound or not boolean). *) let flags_set_bool flags flag value = flags_set flags flag (FlagBool value) let flags_get_bool flags flag = try match flags_get flags flag with FlagBool value -> value | _ -> raise (Failure ("flags_get_bool: invalid value type for flag " ^ flag)) with Not_found -> raise (Failure ("flags_get_bool: flag " ^ flag ^ " not defined")) (* * Read and set an integer value. flag is the name of the flag; for * set, value is the value to set, and for get, the environment is * searched first, then the default environment (if the name is not * bound or not integer). *) let flags_set_int flags flag value = flags_set flags flag (FlagInt value) let flags_get_int flags flag = try match flags_get flags flag with FlagInt value -> value | _ -> raise (Failure ("flags_get_int: invalid value type for flag " ^ flag)) with Not_found -> raise (Failure ("flags_get_int: flag " ^ flag ^ " not defined")) (* * Set a flag based on a variable=value expression. The value may * be either a boolean or an integer value; the flag type will be * set accordingly. *) let flags_set_expr flags exprs = let exprs = Lm_string_util.split "," exprs in let process_expr flags expr = try let equals = String.index expr '=' in let length = String.length expr in let variable = String.sub expr 0 equals in let value = String.sub expr (equals + 1) (length - equals - 1) in match String.lowercase value with "t" | "true" | "y" | "yes" -> flags_set_bool flags variable true | "f" | "false" | "n" | "no" -> flags_set_bool flags variable false | _ -> try let value = int_of_string value in flags_set_int flags variable value with Invalid_argument _ | Failure _ -> raise (Failure ("flags_set_expr: invalid value specified for flag " ^ variable)) with Not_found -> raise (Failure ("flags_set_expr: no equals sign found in expression " ^ expr)) in List.fold_left process_expr flags exprs (*** Standard Flag Set ***) (* * Set of standard flags. *) let std_flags = ref flags_empty (* * High-level functions to access and modify standard flags. *) let std_flags_get_bool name = flags_get_bool !std_flags name let std_flags_set_bool name value = std_flags := flags_set_bool !std_flags name value let std_flags_get_int name = flags_get_int !std_flags name let std_flags_set_int name value = std_flags := flags_set_int !std_flags name value let std_flags_set_expr expr = std_flags := flags_set_expr !std_flags expr (* * High-level function for displaying and registering names. *) let std_flags_help_section_text help_tag help_text = std_flags := flags_help_section_text !std_flags help_tag help_text let std_flags_register_list names = std_flags := flags_register_list !std_flags names let std_flags_register_list_help help_tag names = std_flags := flags_register_list_help !std_flags help_tag names let print_std_flag_defaults () = print_flag_defaults !std_flags (* * Print current state *) let print_bool_flag name value = printf "%-30s = %b\n" name value let print_int_flag name value = printf "%-30s = %d\n" name value let print_flag name value = match value with FlagBool value -> print_bool_flag name value | FlagInt value -> print_int_flag name value let print_std_flag_values () = printf "===begin current state===\n"; printf "%-30s %s\n" "Flag name" "Current value"; StringTable.iter print_flag !std_flags.flag_values; printf "=== end current state ===\n" omake-0.9.8.5/src/libmojave-external/util/lm_hash.mli0000664000152300015230000000675710616464475020641 0ustar jyhjyh(*x * Various hash functions and hash-cons tables. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology * and HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_hash_sig (************************************************************************ * A basic table for adding a hash code to every element. * Nothing else is done, so comparisons are still slow. * This table is safe to marshal. *) module MakeHash (Arg : HashArgSig) : HashSig with type elt = Arg.t;; (************************************************************************ * Table-based hash-consing. * Items are represented by their indexes into a table. * * This is the fastest implementation, but it is not safe to marshal * unless you also marshal the table. * * If you need a version that is safe to marshal, consider using the * HashMarshal below. It is only slightly slower. *) module MakeHashCons (Arg : HashArgSig) : HashConsSig with type elt = Arg.t with type hash = MakeHash(Arg).t (************************************************************************ * Marshalable version. * * This takes a slightly different approach, wrapping the value in * a triple of a hash code and a dummy ref cell. During marshaling, * the cell will point somewhere else, so we know that the value * must be reinterned. The hash codes are preseved across * marshaling. * * BUG: we break abstraction here a little because * it is hard to define the type recursively otherwise. *) type 'a hash_marshal_item type 'a hash_marshal_eq_item (* * Make a hash item. *) module MakeHashMarshal (Arg : HashMarshalArgSig) : HashMarshalSig with type elt = Arg.t with type t = Arg.t hash_marshal_item (* * A variant with two equalities (see Lm_hash_sig for detail) *) module MakeHashMarshalEq (Arg : HashMarshalEqArgSig) : HashMarshalEqSig with type elt = Arg.t with type t = Arg.t hash_marshal_eq_item val pp_print_hash_stats : formatter -> unit (************************************************************************ * Better-than-usual hashes. *) module HashCode : HashCodeSig module HashDigest : HashDigestSig (************************************************************************ * Helper functions. *) val hash_combine : int -> int -> int val hash_int_list : int -> int list -> int val compare_int_list : int list -> int list -> int (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_parser.ml0000664000152300015230000025625010556173566021035 0ustar jyhjyh(* * Generic parser generator. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_debug open Lm_hash open Lm_printf open Lm_location open Lm_int_set let debug_parse = create_debug (**) { debug_name = "parse"; debug_description = "Debug the parseer"; debug_value = false } let debug_parsegen = create_debug (**) { debug_name = "parsegen"; debug_description = "Debug the parser generator"; debug_value = false } let debug_parsetiming = create_debug (**) { debug_name = "parsetiming"; debug_description = "Display timing statistics for the parser generator"; debug_value = false } let debug_parse_conflict_is_warning = create_debug (**) { debug_name = "parse_conflict_is_warning"; debug_description = "Do not abort on grammar conflicts"; debug_value = false } (* * A precedence directive is left-associative, right-associative, * or nonassociative. *) (* %%MAGICBEGIN%% *) type assoc = LeftAssoc | RightAssoc | NonAssoc | NoneAssoc (* %%MAGICEND%% *) let pp_print_assoc buf assoc = let s = match assoc with LeftAssoc -> "left" | RightAssoc -> "right" | NonAssoc -> "nona" | NoneAssoc -> "none" in pp_print_string buf s (************************************************************************ * Tools for profiling. *) let time_start () = Unix.gettimeofday(), Unix.times () let time_print debug t1 t2 = if !debug_parsetiming then let now1, t1 = t1 in let now2, t2 = t2 in let now3 = Unix.gettimeofday () in let t3 = Unix.times () in let total = now3 -. now1 in let utime = t3.Unix.tms_utime -. t1.Unix.tms_utime in let stime = t3.Unix.tms_stime -. t1.Unix.tms_stime in let diff_total = now3 -. now2 in let diff_utime = t3.Unix.tms_utime -. t2.Unix.tms_utime in let diff_stime = t3.Unix.tms_stime -. t2.Unix.tms_stime in eprintf "Time: %2.2f real %2.2f user %2.2f sys; %2.2f real %2.2f user %2.2f sys (%s)@." (**) diff_total diff_utime diff_stime total utime stime debug; now3, t3 else t1 (************************************************************************ * Precedences. *) module type PrecedenceArg = sig type t type precedence (* Precedence control *) val prec_min : precedence val prec_max : precedence (* Precedence tables *) val empty : t val create_prec_lt : t -> precedence -> assoc -> t * precedence val create_prec_gt : t -> precedence -> assoc -> t * precedence (* Print a precedence *) val pp_print_prec : t -> out_channel -> precedence -> unit (* Comparison *) val add_assoc : t -> precedence -> assoc -> t val assoc : t -> precedence -> assoc val compare : t -> precedence -> precedence -> int (* Tables and sets *) module PrecTable : Lm_map_sig.LmMap with type key = precedence end exception ParseError of loc * string (* * The parser is parameterized over symbol and action names. *) module type ParserArg = sig (* Variable names: the names of terminals and nonterminals *) type symbol (* A symbol to represent eof *) val eof : symbol (* For debugging *) val to_string : symbol -> string val pp_print_symbol : out_channel -> symbol -> unit (* Sets and tables *) val hash_symbol : symbol -> int val compare_symbol : symbol -> symbol -> int (* Names of semantic actions *) type action (* For debugging *) val pp_print_action : out_channel -> action -> unit (* For set and table building *) val hash_action : action -> int val compare_action : action -> action -> int end module MakeParser (Arg : ParserArg) (Precedence : PrecedenceArg) = struct open Precedence (************************************************************************ * Types. *) (* * Type of lexing tokens. *) type ('a, 'b) lexer = 'a -> Arg.symbol * loc * 'a * 'b type ('a, 'b) eval = 'a -> (* The argument *) Arg.action -> (* The name of the action *) loc -> (* Location of the production *) 'b list -> (* The arguments to the action *) 'a * 'b (* The result of the semantic action *) (************************************************************************ * Internal versions of types. *) module VarArg = struct type t = Arg.symbol let debug = "Var" let hash = Arg.hash_symbol let compare = Arg.compare_symbol end;; module Var = MakeHash (VarArg);; module VarSet = Lm_set.LmMake (Var);; module VarTable = Lm_map.LmMake (Var);; module VarMTable = Lm_map.LmMakeList (Var);; module IVar = MakeHashCons (VarArg);; module IVarSet = Lm_set.LmMake (IVar);; module IVarTable = Lm_map.LmMake (IVar);; module IVarMTable = Lm_map.LmMakeList (IVar);; type var = Var.t type ivar = IVar.t (* * Also hash the actions. *) module ActionArg = struct type t = Arg.action let debug = "Action" let hash = Arg.hash_action let compare = Arg.compare_action end;; module Action = MakeHash (ActionArg);; module ActionSet = Lm_set.LmMake (Action);; module IAction = MakeHashCons (ActionArg);; module IActionSet = Lm_set.LmMake (IAction);; type action = Action.t type iaction = IAction.t (* * A production item is represents a production with * a current position. *) (* %%MAGICBEGIN%% *) type prod_item_core = { prod_item_name : ivar; prod_item_left : ivar list; (* Reverse order *) prod_item_right : ivar list; prod_item_action : iaction; prod_item_prec : precedence } (* %%MAGICEND%% *) (* * Hash utilities. *) let ivar_list_hash hash vars = List.fold_left (fun hash v -> hash_combine hash (IVar.hash v)) hash vars let rec ivar_list_compare vars1 vars2 = match vars1, vars2 with v1 :: vars1, v2 :: vars2 -> let cmp = IVar.compare v1 v2 in if cmp = 0 then ivar_list_compare vars1 vars2 else cmp | [], [] -> 0 | _ :: _, [] -> 1 | [], _ :: _ -> -1 module ProdItemArg = struct type t = prod_item_core let debug = "ProdItem" let hash item = let { prod_item_name = name; prod_item_left = left; prod_item_right = right; prod_item_action = action } = item in let hash = hash_combine (IVar.hash name) (IAction.hash action) in let hash = ivar_list_hash hash left in let hash = ivar_list_hash hash right in hash let compare item1 item2 = let { prod_item_name = name1; prod_item_left = left1; prod_item_right = right1; prod_item_action = action1; prod_item_prec = prec1 } = item1 in let { prod_item_name = name2; prod_item_left = left2; prod_item_right = right2; prod_item_action = action2; prod_item_prec = prec2 } = item2 in let cmp = IVar.compare name1 name2 in if cmp = 0 then let cmp = IAction.compare action1 action2 in if cmp = 0 then let cmp = ivar_list_compare left1 left2 in if cmp = 0 then let cmp = ivar_list_compare right1 right2 in if cmp = 0 then Pervasives.compare prec1 prec2 else cmp else cmp else cmp else cmp end module ProdItem = MakeHashCons (ProdItemArg);; module ProdItemSet = Lm_set.LmMake (ProdItem);; module ProdItemTable = Lm_map.LmMake (ProdItem);; type prod_item = ProdItem.t (* * An LR(0) state is a set of ProdItems, and * a closure, which is a set of nonterminals. *) (* %%MAGICBEGIN%% *) type info_state = { info_state_items : ProdItemSet.t; info_state_closure : IVarSet.t } (* %%MAGICEND%% *) module StateArg = struct type t = info_state let debug = "State" (* * We don't need to hash or compare the closure, * because it is uniquely determined by the items. *) let hash state = ProdItemSet.fold (fun hash item -> hash_combine hash (ProdItem.hash item)) 0 state.info_state_items let compare state1 state2 = ProdItemSet.compare state1.info_state_items state2.info_state_items end;; module State = MakeHashCons (StateArg);; module StateSet = Lm_set.LmMake (State);; module StateTable = Lm_map.LmMake (State);; (* * A StateItem is a pair of the state and the prod_item. *) module StateItemArg = struct type t = State.t * ProdItem.t let debug = "StateItem" let hash (state, item) = hash_combine (State.hash state) (ProdItem.hash item) let compare (state1, item1) (state2, item2) = let cmp = ProdItem.compare item1 item2 in if cmp = 0 then State.compare state1 state2 else cmp end;; module StateItem = MakeHashCons (StateItemArg);; module StateItemSet = Lm_set.LmMake (StateItem);; module StateItemTable = Lm_map.LmMake (StateItem);; (************************************************ * The grammar. *) (* * A production item is the production with position. * It does not include the lookahead. * * name ::= left . right * * We also keep the precedence of the production, * and its semantic action name. *) (* %%MAGICBEGIN%% *) (* * A single production. *) type prod = { prod_name : var; prod_right : var list; prod_action : action; prod_prec : precedence } (* * A grammar has a set of symbols, productions, * and precedences. *) type grammar = { gram_prod : prod VarMTable.t; gram_prec : precedence VarTable.t; gram_prec_table : Precedence.t; gram_start_symbols : VarSet.t } (************************************************ * The PDA. *) (* * An action is shift, reduce, or accept. *) type 'a pda_action = ReduceAction of iaction * ivar * int (* semantic action, production name, #args *) | GotoAction of 'a | AcceptAction | ErrorAction (* * We may reduce states without lookahead, * and we may accept. *) type pda_reduce = ReduceNone | ReduceNow of iaction * ivar * int | ReduceAccept of iaction * ivar * int (* * The PDA transition table. * * The pda_info is *purely* for debugging, so access * does not have to be fast. *) type pda_item = { pda_item_left : ivar list; (* Reverse order *) pda_item_right : ivar list } type pda_state_info = { pda_items : pda_item list; pda_next : IVarSet.t } type pda_state = { pda_delta : int pda_action IVarTable.t; pda_reduce : pda_reduce; pda_info : pda_state_info } type hash_state = { hash_ivar_state : IVar.state; hash_iaction_state : IAction.state; hash_prod_item_state : ProdItem.state; hash_state_state : State.state } type pda = { pda_start_states : int IVarTable.t; pda_states : pda_state array; pda_hash : hash_state } (* * The actual machine has a grammar and an optional pda. *) type t = { parse_grammar : grammar; mutable parse_pda : pda option } (* %%MAGICEND%% *) (* * Run time info. *) type ('a, 'b) run = { run_states : pda_state array; run_lexer : ('a, 'b) lexer; run_eval : ('a, 'b) eval } (************************************************ * Building the PDA. *) (* * Lookahead expressions. * LookAheadConst vars: the vars are spontaneously generated * LoadAheadProp vars: the vars are spontaneously generated, and the item vars are propagated. *) type lookahead = LookAheadConst of IVarSet.t | LookAheadProp of IVarSet.t (* * The info for constructing the PDA. * info_gram : the grammar * info_nullable : the nonterminals that derive epsilon * info_first : the terminals that may start a production *) type info = { info_grammar : grammar; info_prod : ProdItem.t list IVarTable.t; info_start_symbols : IVarSet.t; info_prec : precedence IVarTable.t; info_nullable : IVarSet.t; info_first : IVarSet.t IVarTable.t; info_head_delta : ProdItemSet.t IVarTable.t IVarTable.t; info_head_lookahead : lookahead IVarTable.t IVarTable.t; info_eof : IVar.t; info_hash : hash_state; info_hash_state_item : StateItem.state } (* * A prop_edge is used to specify that we should * propagate from one item to another. *) type prop_edge = { prop_edge_src : StateItem.t; (* state, item *) prop_edge_dst : StateItemSet.t (* state, item *) } (* * The prop_entry is the lookahead we are computing. *) type prop_entry = { prop_state_item : StateItem.t; mutable prop_changed : bool; mutable prop_vars : IVarSet.t } (* * A state element is a set of items, with lookaheads for each. *) type info_item = { info_item_index : int; info_item_empties : prop_entry list; info_item_closure : prop_entry list; info_item_entries : prop_entry array } (************************************************************************ * Printing and errors. *) let string_of_var v = Arg.to_string (Var.get v) let pp_print_var buf v = Arg.pp_print_symbol buf (Var.get v) let rec pp_print_vars buf vl = List.iter (fun v -> fprintf buf " %a" pp_print_var v) vl let pp_print_var_set buf s = VarSet.iter (fun v -> fprintf buf "@ %a" pp_print_var v) s let pp_print_var_table buf table = VarTable.iter (fun v s -> fprintf buf "@ @[%a:%a@]" (**) pp_print_var v pp_print_var_set s) table let pp_print_action buf action = Arg.pp_print_action buf (Action.get action) let string_of_ivar hash v = Arg.to_string (IVar.get hash.hash_ivar_state v) let pp_print_ivar hash buf v = Arg.pp_print_symbol buf (IVar.get hash.hash_ivar_state v) let rec pp_print_ivars hash buf vl = List.iter (fun v -> fprintf buf " %a" (pp_print_ivar hash) v) vl let pp_print_ivar_set hash buf s = IVarSet.iter (fun v -> fprintf buf "@ %a" (pp_print_ivar hash) v) s let pp_print_ivar_table hash buf table = IVarTable.iter (fun v s -> fprintf buf "@ @[%a:%a@]" (**) (pp_print_ivar hash) v (pp_print_ivar_set hash) s) table let pp_print_iaction hash buf action = Arg.pp_print_action buf (IAction.get hash.hash_iaction_state action) let pp_print_prod gram buf item = let { prod_action = action; prod_prec = pre; prod_name = name; prod_right = right } = item in fprintf buf "@[%a ::=%a [%a, %a]@]" (**) pp_print_var name pp_print_vars right pp_print_action action (Precedence.pp_print_prec gram.gram_prec_table) pre let pp_print_grammar buf gram = let { gram_prod = prods; gram_prec = precs; gram_prec_table = prec_table; gram_start_symbols = starts } = gram in fprintf buf "@[Grammar:"; VarTable.iter (fun v pre -> fprintf buf "@ prec %a = %a" (**) pp_print_var v (Precedence.pp_print_prec prec_table) pre) precs; VarSet.iter (fun v -> fprintf buf "@ start %a" pp_print_var v) starts; VarMTable.iter_all (fun _ prods -> List.iter (fun prod -> fprintf buf "@ %a" (pp_print_prod gram) prod) prods) prods; fprintf buf "@]" let pp_print_pda_action hash buf action = match action with ReduceAction (action, _, _) -> fprintf buf "reduce %a" (pp_print_iaction hash) action | GotoAction state -> fprintf buf "goto %d" state | ErrorAction -> pp_print_string buf "error" | AcceptAction -> pp_print_string buf "accept" let pp_print_pda_actions info buf actions = IVarTable.iter (fun v action -> fprintf buf "@ %a: %a" (pp_print_ivar info) v (pp_print_pda_action info) action) actions let pp_print_prod_item_core info buf item = let { prod_item_action = action; prod_item_name = name; prod_item_left = left; prod_item_right = right } = item in let hash = info.info_hash in fprintf buf "%a ::=%a .%a (%a)" (**) (pp_print_ivar hash) name (pp_print_ivars hash) (List.rev left) (pp_print_ivars hash) right (pp_print_iaction hash) action let pp_print_prod_item info buf item = pp_print_prod_item_core info buf (ProdItem.get info.info_hash.hash_prod_item_state item) let pp_print_prod_item_set info buf items = ProdItemSet.iter (fun item -> fprintf buf "@ %a" (pp_print_prod_item info) item) items let pp_print_state info buf state = let { info_state_items = items } = State.get info.info_hash.hash_state_state state in eprintf "@[State %d" (State.hash state); pp_print_prod_item_set info buf items; eprintf "@]" let pp_print_info_item info buf info_item = let { info_hash = hash; info_hash_state_item = hash_state_item } = info in let { info_item_index = index; info_item_entries = entries } = info_item in fprintf buf "@[State %d:" index; Array.iter (fun entry -> let { prop_state_item = state_item; prop_vars = lookahead } = entry in let _, prod_item = StateItem.get hash_state_item state_item in fprintf buf "@ @[%a@ @[#%a@]@]" (pp_print_prod_item info) prod_item (pp_print_ivar_set hash) lookahead) entries; fprintf buf "@]" let pp_print_info buf info = let { info_grammar = gram; info_nullable = nullable; info_first = first; info_hash = hash } = info in fprintf buf "@[%a" pp_print_grammar gram; fprintf buf "@ @[Nullable:%a@]" (pp_print_ivar_set hash) nullable; fprintf buf "@ @[First:%a@]" (pp_print_ivar_table hash) first; fprintf buf "@]" let pp_print_lookahead hash buf look = match look with LookAheadConst set -> fprintf buf "@[const%a@]" (pp_print_ivar_set hash) set | LookAheadProp set -> fprintf buf "@[prop%a@]" (pp_print_ivar_set hash) set (* * Print a transition table. *) let pp_print_delta info buf delta = let pp_print_ivar = pp_print_ivar info.info_hash in let pp_print_prod_item_set = pp_print_prod_item_set info in IVarTable.iter (fun v delta -> fprintf buf "@ @[%a ->" pp_print_ivar v; IVarTable.iter (fun v item -> fprintf buf "@ @[%a ->%a@]" pp_print_ivar v pp_print_prod_item_set item) delta; fprintf buf "@]") delta (* * Print the lookahead table. *) let pp_print_look_table info buf table = let hash = info.info_hash in let pp_print_ivar = pp_print_ivar hash in let pp_print_lookahead = pp_print_lookahead hash in IVarTable.iter (fun v table -> fprintf buf "@ @[%a ->" pp_print_ivar v; IVarTable.iter (fun v look -> fprintf buf "@ %a -> %a" pp_print_ivar v pp_print_lookahead look) table; fprintf buf "@]") table (************************************************************************ * Grammar construction. *) (* * Empty grammar has the basic precedences. *) let empty_grammar = { gram_prod = VarMTable.empty; gram_prec = VarTable.empty; gram_prec_table = Precedence.empty; gram_start_symbols = VarSet.empty } (* * Add a start symbol. *) let add_start gram sym = { gram with gram_start_symbols = VarSet.add gram.gram_start_symbols (Var.create sym) } (* * Add a symbol at a given precedence level. *) let add_prec gram pre v = { gram with gram_prec = VarTable.add gram.gram_prec v pre } (* * Find the precedence level for a symbol. *) let find_prec gram v = VarTable.find gram.gram_prec v (* * Add a production. * If the precedence is not specified, it is the precedence * of the rightmost variable that has a precedence. *) let add_production gram action v rhs pre = let pre = match pre with Some sym -> find_prec gram sym | None -> List.fold_left (fun pre v -> try VarTable.find gram.gram_prec v with Not_found -> pre) prec_min rhs in let prod = { prod_action = action; prod_name = v; prod_right = rhs; prod_prec = pre } in { gram with gram_prod = VarMTable.add gram.gram_prod v prod } (* * Remove a production. * We don't index by production name, so this takes linear time * in the number of productions. *) let remove_production gram action = let table = VarMTable.mapi_all (fun _ prods -> List.filter (fun prod -> prod.prod_action <> action) prods) gram.gram_prod in { gram with gram_prod = table } (* * Precedence union is a little hard. * Suppose the second grammar contains some precedence * levels that do not occur in the first grammar. We * have to insert some levels, and we have to figure out * where to put them. * * The basic idea is to build an inverse table for the * second grammar. Then sort this grammar, and walk * through each level. If it exists in the first grammar, * keep it. Otherwise add a new level, and continue. *) let rec find_existing_prec precs vars = match vars with [] -> None | v :: vars -> try Some (VarTable.find precs v) with Not_found -> find_existing_prec precs vars let add_precs precs vars pre = List.fold_left (fun precs v -> VarTable.add precs v pre) precs vars let union_prec prec1 table1 prec2 table2 = (* Build an inverse precedence table for grammar2 *) let inv_table = VarTable.fold (fun inv_table v pre -> PrecTable.filter_add inv_table pre (fun vars -> let vars = match vars with Some vars -> vars | None -> [] in v :: vars)) PrecTable.empty prec2 in (* Sort the precedences in grammar2 *) let prec_list = PrecTable.fold (fun prec_list pre _ -> pre :: prec_list) [] inv_table in let prec_list = List.sort (Precedence.compare table2) prec_list in (* Initial translation *) let translate = PrecTable.empty in let translate = PrecTable.add translate prec_min prec_min in let translate = PrecTable.add translate prec_max prec_max in (* Walk through each level, and create it if it doesn't already exist *) let translate, precs, table, _ = List.fold_left (fun (translate, precs, table, prev_prec) pre -> let vars = PrecTable.find inv_table pre in let table, current_prec = match find_existing_prec precs vars with Some current_prec -> table, current_prec | None -> let assoc = Precedence.assoc table2 pre in Precedence.create_prec_gt table prev_prec assoc in let translate = PrecTable.add translate pre current_prec in let precs = add_precs precs vars current_prec in translate, precs, table, current_prec) (translate, prec1, table1, Precedence.prec_min) prec_list in translate, precs, table (* * Union of two grammars. *) let union_grammar gram1 gram2 = let { gram_prod = prod1; gram_prec = prec1; gram_prec_table = prec_table1; gram_start_symbols = start1 } = gram1 in let { gram_prod = prod2; gram_prec = prec2; gram_prec_table = prec_table2; gram_start_symbols = start2 } = gram2 in (* Compute the new precedence table *) let prec_translate, precs, prec_table = union_prec prec1 prec_table1 prec2 prec_table2 in (* Get the complete set of actions for the first parser *) let actions = VarMTable.fold_all (fun actions _ prods -> List.fold_left (fun actions prod -> let action = prod.prod_action in ActionSet.add actions action) actions prods) ActionSet.empty prod1 in (* Take the union of the productions *) let changed, prods = VarMTable.fold_all (fun (changed, prods) _ prodlist -> List.fold_left (fun (changed, prods) prod -> let { prod_action = action; prod_name = name; prod_prec = pre } = prod in if ActionSet.mem actions action then changed, prods else let prod = { prod with prod_prec = PrecTable.find prec_translate pre } in true, VarMTable.add prods name prod) (changed, prods) prodlist) (false, prod1) prod2 in (* Union of the start symbols *) let start = VarSet.union start1 start2 in (* Has anything changed? *) let changed = changed || (VarTable.cardinal precs <> VarTable.cardinal prec1) || (VarSet.cardinal start <> VarSet.cardinal start1) in (* New grammar *) let gram = { gram_prod = prods; gram_prec = precs; gram_prec_table = prec_table; gram_start_symbols = start } in changed, gram (* * Debugging version. *) let union_grammar gram1 gram2 = if !debug_parsegen then eprintf "@[Grammar union:@ @[Grammar1:@ %a@]@ @[Grammar2:@ %a@]@]@." (**) pp_print_grammar gram1 pp_print_grammar gram2; let changed, gram = union_grammar gram1 gram2 in if !debug_parsegen then eprintf "@[Grammar union %b:@ %a@]@." (**) changed pp_print_grammar gram; changed, gram (************************************************************************ * Initial info for LALR(1) construction. *) (* * A nonterminal is nullable if all variables on the rhs are nullable. *) let nullable hash prods = let prod_state = hash.hash_prod_item_state in let step nullable prods = IVarTable.fold (fun nullable v prods -> if IVarSet.mem nullable v then nullable else if List.exists (fun prod -> List.for_all (IVarSet.mem nullable) (**) (ProdItem.get prod_state prod).prod_item_right) prods then IVarSet.add nullable v else nullable) nullable prods in let rec fixpoint nullable prods = let nullable' = step nullable prods in if IVarSet.cardinal nullable' <> IVarSet.cardinal nullable then fixpoint nullable' prods else nullable in fixpoint IVarSet.empty prods (* * Find the sets of first symbols that can start productions. *) let rec first_rhs nullable first set rhs = match rhs with v :: rhs -> let set = IVarSet.union set (IVarTable.find first v) in if IVarSet.mem nullable v then first_rhs nullable first set rhs else set | [] -> set let first hash prods nullable = let prod_state = hash.hash_prod_item_state in let step first prods = IVarTable.fold (fun (first, changed) _ prods -> List.fold_left (fun (first, changed) prod -> let { prod_item_name = x; prod_item_right = rhs } = ProdItem.get prod_state prod in let set = IVarTable.find first x in let set' = first_rhs nullable first set rhs in let set, changed = if changed || IVarSet.cardinal set' <> IVarSet.cardinal set then set', true else set, false in let first = IVarTable.add first x set in first, changed) (first, changed) prods) (first, false) prods in let rec fixpoint first prods = let first, changed = step first prods in if changed then fixpoint first prods else first in (* Initialize with the terminals *) let vars = IVarTable.fold (fun vars v prods -> let vars = IVarSet.add vars v in List.fold_left (fun vars prod -> List.fold_left IVarSet.add vars (ProdItem.get prod_state prod).prod_item_right) vars prods) IVarSet.empty prods in let first = IVarSet.fold (fun first v -> if IVarTable.mem prods v then IVarTable.add first v IVarSet.empty else IVarTable.add first v (IVarSet.singleton v)) IVarTable.empty vars in fixpoint first prods (************************************************************************ * LR(0) construction. *) (* * Get the set of first symbols that can begin a list. *) let lookahead info rhs = let { info_first = first; info_nullable = nullable } = info in let rec search set rhs = match rhs with v :: rhs -> let set = IVarSet.union (IVarTable.find first v) set in if IVarSet.mem nullable v then search set rhs else LookAheadConst set | [] -> LookAheadProp set in search IVarSet.empty rhs (* * Concatenate lookahead sets. *) let lookahead_concat look1 look2 = match look1, look2 with LookAheadConst _, _ -> look1 | LookAheadProp set1, LookAheadConst set2 -> LookAheadConst (IVarSet.union set1 set2) | LookAheadProp set1, LookAheadProp set2 -> LookAheadProp (IVarSet.union set1 set2) (* * Two different paths for lookahead. *) let lookahead_union look1 look2 = match look1, look2 with LookAheadConst set1, LookAheadConst set2 -> LookAheadConst (IVarSet.union set1 set2) | LookAheadProp set1, LookAheadConst set2 | LookAheadConst set1, LookAheadProp set2 | LookAheadProp set1, LookAheadProp set2 -> LookAheadProp (IVarSet.union set1 set2) (* * Comparison. *) let lookahead_equal look1 look2 = match look1, look2 with LookAheadConst set1, LookAheadConst set2 | LookAheadProp set1, LookAheadProp set2 -> IVarSet.equal set1 set2 | LookAheadConst _, LookAheadProp _ | LookAheadProp _, LookAheadConst _ -> false (* * Split into a pair. *) let lookahead_pair look = match look with LookAheadConst set -> false, set | LookAheadProp set -> true, set let lookahead_set look = match look with LookAheadConst set | LookAheadProp set -> set (************************************************ * Produce the derivation table for items where * the dot is at the head. * * We want a transition table, as well as lookaheads. * * The transition table gives a set of transitions * for nonterminal (symbol -> symbol -> ProdItemSet.t), * where and entry (v1 -> v2 -> items) states that: * if looking at v1, * you can goto on v2, * with the resulting items. * * The pre-lookahead gives a similar table. The entry * (v1 -> v2 -> look) means: * For nonterminal v1, there is an item * . v2 right_2 * where v2 is a nonterminal and * look = LOOKAHEAD(right_2) *) (* * Compute the transition function and lookahead table * for an item. *) let build_head_item info delta lookaheads item = let core = ProdItem.get info.info_hash.hash_prod_item_state item in match core.prod_item_right with v :: right -> let core = { core with prod_item_left = [v]; prod_item_right = right } in let item = ProdItem.create info.info_hash.hash_prod_item_state core in let delta = IVarTable.filter_add delta v (fun items -> match items with Some items -> ProdItemSet.add items item | None -> ProdItemSet.singleton item) in let look1 = lookahead info right in let lookaheads = if IVarTable.mem info.info_prod v then IVarTable.filter_add lookaheads v (fun look2 -> match look2 with Some look2 -> lookahead_union look1 look2 | None -> look1) else lookaheads in delta, lookaheads | [] -> delta, lookaheads let build_head_items info items = List.fold_left (fun (delta, lookaheads) item -> build_head_item info delta lookaheads item) (IVarTable.empty, IVarTable.empty) items (* * Solve the lookahead functions. * This is a fixpoint, but it should be pretty cheap. * * This flatten lookahead is defined as follows. * The table has an entry (v1 -> v2 -> look) iff: * 1. There is a derivation (v1 --> v2 right2) * 2. v2 is a nonterminal * 3. look = LOOKAHEAD(right2) * The main issue is that right2 may be constructed from * the right-hand-sides of several productions. *) let build_lookahead_item _info table v = (* Fixpoint *) let step venv = IVarTable.fold (fun (venv, changed) v e1 -> let next = IVarTable.find table v in IVarTable.fold (fun (venv, changed) v e2 -> let e = lookahead_concat e2 e1 in try let e_old = IVarTable.find venv v in let e_new = lookahead_union e_old e in if lookahead_equal e_old e_new then venv, changed else IVarTable.add venv v e_new, true with Not_found -> IVarTable.add venv v e, true) (venv, changed) next) (venv, false) venv in let rec fixpoint venv = let venv, changed = step venv in if changed then fixpoint venv else venv in fixpoint (IVarTable.add IVarTable.empty v (LookAheadProp IVarSet.empty)) let build_lookaheads info table = IVarTable.mapi (fun v _ -> build_lookahead_item info table v) table (* * Main function. *) let build_head_table info start now = let delta_table, look_table = IVarTable.fold (fun (delta_table, look_table) v items -> let delta, lookaheads = build_head_items info items in let delta_table = IVarTable.add delta_table v delta in let look_table = IVarTable.add look_table v lookaheads in delta_table, look_table) (IVarTable.empty, IVarTable.empty) info.info_prod in let () = if !debug_parsegen then eprintf "@[Head table:@ @[Delta:%a@]@ @[Lookahead:%a@]@]@." (**) (pp_print_delta info) delta_table (pp_print_look_table info) look_table in let now = time_print "Head items" start now in let look_table = build_lookaheads info look_table in let () = if !debug_parsegen then eprintf "@[Closed lookahead:%a@]@." (**) (pp_print_look_table info) look_table in let now = time_print "Lookaheads" start now in now, delta_table, look_table (************************************************ * Producing the state table. *) (* * Produce a transition table by shifting. * We take a set of items, and produce a IVarTable * containing the next states. *) let shift_items info items = let hash = info.info_hash.hash_prod_item_state in ProdItemSet.fold (fun delta prod_item -> let core = ProdItem.get hash prod_item in let { prod_item_left = left; prod_item_right = right } = core in match right with v :: right -> let core = { core with prod_item_left = v :: left; prod_item_right = right } in let item = ProdItem.create hash core in IVarTable.filter_add delta v (fun items -> match items with Some items -> ProdItemSet.add items item | None -> ProdItemSet.singleton item) | [] -> delta) IVarTable.empty items (* * Shift a closure, given the current state. * This produces a IVarTable that defines the next * state for each symbol. *) let shift_state info state = let core = State.get info.info_hash.hash_state_state state in let { info_state_items = items; info_state_closure = next } = core in let head_table = info.info_head_delta in let delta = shift_items info items in IVarSet.fold (fun delta v -> let head_delta = IVarTable.find head_table v in IVarTable.fold (fun delta v items -> IVarTable.filter_add delta v (fun current_items -> match current_items with Some current_items -> ProdItemSet.union current_items items | None -> items)) delta head_delta) delta next (* * A closure is represented by its kernel (all the * items where the dot is not at the front), plus * the names of all the productions where the dot * is at the front. *) let closure info items = let look_table = info.info_head_lookahead in let closure = ProdItemSet.fold (fun closure item -> let core = ProdItem.get info.info_hash.hash_prod_item_state item in match core.prod_item_right with v :: _ when IVarTable.mem look_table v -> let look = IVarTable.find look_table v in IVarTable.fold (fun closure v _ -> IVarSet.add closure v) (IVarSet.add closure v) look | _ -> closure) IVarSet.empty items in let state = { info_state_items = items; info_state_closure = closure } in State.create info.info_hash.hash_state_state state (* * Compute the transition table, only for shift operations. *) let build_delta info unexamined = (* Perform the closure *) let rec build shift_table examined unexamined = if StateSet.is_empty unexamined then shift_table, examined else (* Move an item from unexamined to examined *) let state = StateSet.choose unexamined in let examined = StateSet.add examined state in let unexamined = StateSet.remove unexamined state in (* Compute the goto states *) let delta = shift_state info state in let goto_table, unexamined = IVarTable.fold (fun (goto_table, unexamined) v items -> let state = closure info items in let unexamined = if StateSet.mem examined state then unexamined else StateSet.add unexamined state in let goto_table = IVarTable.add goto_table v state in goto_table, unexamined) (IVarTable.empty, unexamined) delta in let shift_table = StateTable.add shift_table state goto_table in build shift_table examined unexamined in build StateTable.empty StateSet.empty unexamined let build_start_state info start_table unexamined start = let prods = try IVarTable.find info.info_prod start with Not_found -> raise (Failure ("no such production: " ^ string_of_ivar info.info_hash start)) in let set = List.fold_left ProdItemSet.add ProdItemSet.empty prods in let state = closure info set in let unexamined = StateSet.add unexamined state in let start_table = IVarTable.add start_table start state in start_table, unexamined let build_state_table info = let () = if !debug_parsegen then eprintf "@[Grammar:@ %a@]@." pp_print_info info in let start_table, unexamined = IVarSet.fold (fun (start_table, unexamined) start -> build_start_state info start_table unexamined start) (**) (IVarTable.empty, StateSet.empty) info.info_start_symbols in let shift_table, states = build_delta info unexamined in start_table, shift_table, states (************************************************************************ * LALR(1) construction. * * Once we have the set of LR(0) states, we need to propagate lookahead * sets. For each item in a state, figure out what symbols are propagated * and which are spontaneously generated, then perform a fixpoint. *) (* * Build the empty propagation table. * It has an entry for each StateItem. *) let build_prop_empty info states = (* First, construct each StateItem *) let state_hash = info.info_hash.hash_state_state in let state_item_hash = info.info_hash_state_item in StateSet.iter (fun state -> let core = State.get state_hash state in let items = core.info_state_items in ProdItemSet.iter (fun item -> ignore (StateItem.create state_item_hash (state, item))) items) states; (* The prop table is an array from the hash code to the prop_entry *) StateItem.map_array (fun item _ -> { prop_state_item = item; prop_changed = true; prop_vars = IVarSet.empty }) state_item_hash (* * Add the propagation info for the initial items. * * We are looking at an item. * item = left . v1 right * * Suppose v1 is a nonterminal, and we have some derivation * with head nonterminal v2 (perhaps v1 = v2, and right_1 * is empty). * * v1 --> . v2 right_1 * * Suppose v2 has the following production. * * v2 = v3 right_2 * * Then the goto(X) state contains an item: * * v3 . right_2 * * We need to propagate lookaheads to this item. * Propagate FIRST(right_2 right_1) as spontaneous * lookaheads. If NULLABLE(right_2 right_1), then * propagate lookaheads from this item. * * By definition, the lookahead entry for v1 contains * and entry (v2 -> look) for each nonterminal v2 * for which (v1 --> v2 right2), and "look" is the * lookahead to be used in such a case. * * So the algorithm works as follows: * Let look1 be LOOKAHEAD(right1): * For each entry (v2, look2) in the lookahead table: * For each transition (v2 -X-> X . right): * Add lookaheads (look2 look1) to the item "X . right" *) let build_prop_head info prop_table goto_table v1 right1 = (* Look up the derivations for v *) let delta_table = info.info_head_delta in let look_table = IVarTable.find info.info_head_lookahead v1 in let look1 = lookahead info right1 in let hash_state_item = info.info_hash_state_item in IVarTable.fold (fun prop_items v2 look2 -> let look = lookahead_concat look2 look1 in let prop, vars = lookahead_pair look in let delta = IVarTable.find delta_table v2 in IVarTable.fold (fun prop_items v3 items -> ProdItemSet.fold (fun prop_items next_item -> (* Add the edge *) let next_state = IVarTable.find goto_table v3 in let next = StateItem.create hash_state_item (next_state, next_item) in (* Add the edge if we need to propagate *) let prop_items = if prop then StateItemSet.add prop_items next else prop_items in (* Initial propagation *) let prop_entry = prop_table.(StateItem.hash next) in prop_entry.prop_vars <- IVarSet.union prop_entry.prop_vars vars; prop_items) prop_items items) prop_items delta) StateItemSet.empty look_table (* * Add the propagation info for a state_item. * * Propagate initial items. * * In addition, if the item is: * * item = left . X right * * then goto(X) contains the item * * left v . right * * Propagate lookaheads directly to this item. *) let build_prop_state info prop_table shift_table prop_edges state_item = let state_item_hash = info.info_hash_state_item in let state, prod_item = StateItem.get state_item_hash state_item in let goto_table = StateTable.find shift_table state in let prod_item_hash = info.info_hash.hash_prod_item_state in let prod_item_core = ProdItem.get prod_item_hash prod_item in let { prod_item_left = left; prod_item_right = right } = prod_item_core in match right with v :: right -> (* If v is a nonterminal, then also propagate to initial items *) let prop_items = if IVarTable.mem info.info_prod v then build_prop_head info prop_table goto_table v right else StateItemSet.empty in (* Propagate directly to the next state *) let next_state = IVarTable.find goto_table v in let next_item_core = { prod_item_core with prod_item_left = v :: left; prod_item_right = right } in let next_item = ProdItem.create prod_item_hash next_item_core in let next = StateItem.create state_item_hash (next_state, next_item) in (* Add the edges, but remove any self-edge (because it is useless) *) let prop_items = StateItemSet.add prop_items next in let prop_items = StateItemSet.remove prop_items state_item in let prop_edge = { prop_edge_src = state_item; prop_edge_dst = prop_items } in prop_edge :: prop_edges | [] -> prop_edges (* * Now construct a propagation network. * Each state is represented as an array of production indices, * each with a propagation entry to another item identified * by (state, index). *) let build_prop_table info shift_table states = let prop_table = build_prop_empty info states in let prop_edges = StateItem.fold (build_prop_state info prop_table shift_table) [] info.info_hash_state_item in prop_table, prop_edges (* * Add the eof symbol for the start states. *) let set_start_lookahead info prop_table start_table = let eof_set = IVarSet.singleton info.info_eof in let hash_state = info.info_hash.hash_state_state in let hash_state_item = info.info_hash_state_item in IVarTable.iter (fun _ state -> let core = State.get hash_state state in let items = core.info_state_items in ProdItemSet.iter (fun item -> let item = StateItem.create hash_state_item (state, item) in let prop_entry = prop_table.(StateItem.hash item) in prop_entry.prop_vars <- IVarSet.union prop_entry.prop_vars eof_set) (**) items) start_table (* * The fixpoint is a forward-dataflow problem. * Try to order the states so that dependencies are in * order. Use depth-first-search to find an approximate * order. *) let propagate_order info prop_edges = (* * Build an array of the edges. *) let length = StateItem.length info.info_hash_state_item in let marked = Array.create length false in let graph = match prop_edges with [] -> [||] | edge :: _ -> let graph = Array.create length edge in List.iter (fun edge -> graph.(StateItem.hash edge.prop_edge_src) <- edge) prop_edges; graph in (* * Find the roots if there are any. * If there are none, just pick a node at random. *) let roots nodes = let roots = StateItemSet.fold (fun roots node -> StateItemSet.diff roots graph.(StateItem.hash node).prop_edge_dst) nodes nodes in (* If the graph is cyclic, just choose the first node *) if StateItemSet.is_empty roots then StateItemSet.singleton (StateItemSet.choose nodes) else roots in (* * Produce a sort in DFS order. *) let rec dfs_sort_node (items, next) node = let next = StateItemSet.remove next node in let items, next = dfs_sort_nodes items next graph.(StateItem.hash node).prop_edge_dst in node :: items, next and dfs_sort_nodes items next nodes = StateItemSet.fold (fun items_next node -> if marked.(StateItem.hash node) then items_next else begin marked.(StateItem.hash node) <- true; dfs_sort_node items_next node end) (items, next) nodes in (* * The tree may have disconnected components, * so repeat until done. *) let rec dfs_sort items nodes = if StateItemSet.is_empty nodes then items else let roots = roots nodes in let items, nodes = dfs_sort_nodes items nodes roots in dfs_sort items nodes in (* * Main sort functions. *) let nodes = List.fold_left (fun nodes node -> StateItemSet.add nodes node.prop_edge_src) StateItemSet.empty prop_edges in let items = dfs_sort [] nodes in List.map (fun item -> graph.(StateItem.hash item)) items (* * Now solve the lookahead fixpoint. *) let fixpoint_count = ref 0 let propagate_lookahead prop_table prop_edges = let step () = List.fold_left (fun changed prop_edge -> let { prop_edge_src = src; prop_edge_dst = dst } = prop_edge in let item1 = prop_table.(StateItem.hash src) in if item1.prop_changed then let _ = item1.prop_changed <- false in StateItemSet.fold (fun changed dst -> let item2 = prop_table.(StateItem.hash dst) in let vars2 = item2.prop_vars in let vars2' = IVarSet.union vars2 item1.prop_vars in if IVarSet.cardinal vars2' = IVarSet.cardinal vars2 then changed else begin item2.prop_changed <- true; item2.prop_vars <- vars2'; true end) changed dst else changed) false prop_edges in let rec fixpoint () = incr fixpoint_count; if step () then fixpoint () in fixpoint () (* * Rebuild the transition table. *) let rebuild_trans_table shift_table = StateTable.map (fun goto_table -> IVarTable.map (fun state -> GotoAction state) goto_table) shift_table (* * Construct the LALR(1) table from the LR(0) table. *) let build_lalr_table info start now = let now = time_print "Starting LALR construction" start now in let start_table, shift_table, states = build_state_table info in let now = time_print "State table" start now in let prop_table, prop_edges = build_prop_table info shift_table states in let now = time_print "Propagation table" start now in let () = if !debug_parsetiming then eprintf "Propagate: %d entries, %d edges@." (Array.length prop_table) (List.length prop_edges) in let () = set_start_lookahead info prop_table start_table in let now = time_print "Start state lookaheads" start now in let prop_edges = propagate_order info prop_edges in let now = time_print "Propagation ordering" start now in (* Take the fixpoint *) let () = propagate_lookahead prop_table prop_edges in let now = time_print "Fixpoint" start now in let () = if !debug_parsetiming then eprintf "Fixpoint in %d iterations@." !fixpoint_count in (* Reconstruct the tables *) let trans_table = rebuild_trans_table shift_table in let now = time_print "LALR reconstruction" start now in now, start_table, trans_table, prop_table (************************************************************************ * The info needed to build the grammar. *) let ivar_of_var hash v = IVar.icreate hash.hash_ivar_state v let ivar_list_of_var_list hash vars = List.map (ivar_of_var hash) vars let iaction_of_action hash action = IAction.icreate hash.hash_iaction_state action let prod_item_of_prod hash prod = let { prod_name = name; prod_action = action; prod_right = right; prod_prec = pre } = prod in let core = { prod_item_name = ivar_of_var hash name; prod_item_left = []; prod_item_right = ivar_list_of_var_list hash right; prod_item_action = iaction_of_action hash action; prod_item_prec = pre } in ProdItem.create hash.hash_prod_item_state core let info_of_grammar gram start now = (* First and nullable *) let hash = { hash_ivar_state = IVar.create_state (); hash_iaction_state = IAction.create_state (); hash_prod_item_state = ProdItem.create_state (); hash_state_state = State.create_state () } in let prods = VarMTable.fold_all (fun prods v items -> let v = ivar_of_var hash v in let items = List.map (prod_item_of_prod hash) items in IVarTable.add prods v items) IVarTable.empty gram.gram_prod in let nullable = nullable hash prods in let first = first hash prods nullable in let now = time_print "First and nullable sets" start now in (* Initial info *) let start_symbols = VarSet.fold (fun vars v -> IVarSet.add vars (ivar_of_var hash v)) IVarSet.empty gram.gram_start_symbols in let prec_table = VarTable.fold (fun precs v pre -> IVarTable.add precs (ivar_of_var hash v) pre) IVarTable.empty gram.gram_prec in let info = { info_grammar = gram; info_prod = prods; info_start_symbols = start_symbols; info_prec = prec_table; info_nullable = nullable; info_first = first; info_eof = IVar.create hash.hash_ivar_state Arg.eof; info_hash = hash; info_hash_state_item = StateItem.create_state (); (* Temporary placeholders *) info_head_delta = IVarTable.empty; info_head_lookahead = IVarTable.empty } in let now, head_delta, head_lookahead = build_head_table info start now in let now = time_print "Head table" start now in let info = { info with info_head_delta = head_delta; info_head_lookahead = head_lookahead } in now, info (************************************************************************ * Building the parser actions. *) (* * Create the set of nonterminals that have empty production. *) let empty_productions info = let hash = info.info_hash.hash_prod_item_state in IVarTable.fold (fun empties v items -> let rec search items = match items with item :: items -> let core = ProdItem.get hash item in let empty_flag = match core with { prod_item_left = []; prod_item_right = [] } -> true | _ -> false in if empty_flag then IVarTable.add empties v item else search items | [] -> empties in search items) IVarTable.empty info.info_prod (* * Get all the reduce productions. * The result is a table * state_item -> lookahead * containing only the reduce items. *) let add_empty_action info actions empties state v look = let item = IVarTable.find empties v in let item = StateItem.create info.info_hash_state_item (state, item) in StateItemTable.filter_add actions item (fun current_look -> match current_look with Some current_look -> lookahead_union current_look look | None -> look) let reduce_actions info empties prop_table = let { info_head_lookahead = look_table } = info in let hash = info.info_hash.hash_prod_item_state in let hash_state_item = info.info_hash_state_item in Array.fold_left (fun actions entry -> let { prop_state_item = state_item; prop_vars = look3 } = entry in let state, item = StateItem.get hash_state_item state_item in let core = ProdItem.get hash item in match core.prod_item_right with v :: right when IVarTable.mem look_table v -> (* Add all empty productions *) let look_table = IVarTable.find look_table v in let look2 = lookahead_concat (lookahead info right) (LookAheadConst look3) in let actions = if IVarTable.mem empties v then add_empty_action info actions empties state v look2 else actions in IVarTable.fold (fun actions v look1 -> if IVarTable.mem empties v then let look = lookahead_concat look1 look2 in add_empty_action info actions empties state v look else actions) actions look_table | [] -> (* This production calls for a reduce *) StateItemTable.add actions state_item (LookAheadConst look3) | _ :: _ -> actions) StateItemTable.empty prop_table (* * Error messages. *) let shift_reduce_conflict info state v shift_state reduce_item = let { info_hash = hash } = info in let { hash_prod_item_state = hash_prod_item } = hash in let pp_print_ivar = pp_print_ivar hash in let pp_print_iaction = pp_print_iaction hash in let reduce_core = ProdItem.get hash_prod_item reduce_item in eprintf "shift/reduce conflict on %a: shift %d, reduce %a@." (**) pp_print_ivar v (State.hash shift_state) pp_print_iaction reduce_core.prod_item_action; if not !debug_parsegen then eprintf "%a@." (pp_print_state info) state; if not !debug_parse_conflict_is_warning then raise (Invalid_argument "Lm_parser.shift_reduce_conflict\n\tset MP_DEBUG=parse_conflict_is_warning to ignore this error") let reduce_reduce_conflict info state v reduce_item action = let { info_hash = hash } = info in let { hash_prod_item_state = hash_prod_item } = hash in let pp_print_ivar = pp_print_ivar hash in let pp_print_iaction = pp_print_iaction hash in let reduce_core = ProdItem.get hash_prod_item reduce_item in eprintf "reduce/reduce conflict on %a: reduce %a, reduce %a@." (**) pp_print_ivar v pp_print_iaction reduce_core.prod_item_action pp_print_iaction action; if not !debug_parsegen then eprintf "%a@." (pp_print_state info) state; if not !debug_parse_conflict_is_warning then raise (Invalid_argument "Lm_parser.reduce_reduce_conflict:\n\tset MP_DEBUG=parse_conflict_is_warning to ignore this error") (* * Process all the reduce actions. * This is finally the stage where we check for conflicts. *) let process_reduce_actions info reduce_actions action_table = let { info_grammar = gram; info_prec = var_prec_table; info_hash = { hash_prod_item_state = hash_prod_item } } = info in let { gram_prec_table = prec_table } = gram in let state_item_hash = info.info_hash_state_item in StateItemTable.fold (fun action_table state_item look -> let look = lookahead_set look in let state, item = StateItem.get state_item_hash state_item in let { prod_item_name = name; prod_item_action = action; prod_item_left = left; prod_item_prec = prec_name } = ProdItem.get hash_prod_item item in let assoc = Precedence.assoc prec_table prec_name in let reduce = ReduceAction (action, name, List.length left) in let actions = StateTable.find action_table state in let actions = IVarSet.fold (fun actions v -> try match IVarTable.find actions v with GotoAction id -> (* Shift/reduce conflict *) let cmp = try Precedence.compare prec_table prec_name (IVarTable.find var_prec_table v) with Not_found -> 0 in if cmp < 0 then actions else if cmp = 0 then match assoc with LeftAssoc -> IVarTable.add actions v reduce | RightAssoc -> actions | NonAssoc -> IVarTable.add actions v ErrorAction | NoneAssoc -> shift_reduce_conflict info state v id item; actions else IVarTable.add actions v reduce | ReduceAction (action2, _, _) -> (* Reduce/reduce conflict *) reduce_reduce_conflict info state v item action2; actions | ErrorAction | AcceptAction -> raise (Invalid_argument "reduce_action") with Not_found -> IVarTable.add actions v reduce) actions look in StateTable.add action_table state actions) action_table reduce_actions (* * If a state has only one production, * and that is a reduce production, we can do * the reduce without lookahead. *) let reduce_early info prop_table state items = if ProdItemSet.cardinal items = 1 then let item = ProdItemSet.choose items in match ProdItem.get info.info_hash.hash_prod_item_state item with { prod_item_right = []; prod_item_action = action; prod_item_name = name; prod_item_left = left } -> let state_item = StateItem.create info.info_hash_state_item (state, item) in let lookahead = prop_table.(StateItem.hash state_item).prop_vars in if IVarSet.cardinal lookahead = 1 && IVarSet.choose lookahead = info.info_eof then ReduceAccept (action, name, List.length left) else ReduceNow (action, name, List.length left) | _ -> ReduceNone else ReduceNone (************************************************************************ * Constructing the PDA. *) (* * Flatten a production state to a pda description. *) let pda_info_of_items info prop_table state items = let { info_first = first; info_hash_state_item = hash_state_item; info_hash = { hash_prod_item_state = hash_prod_item } } = info in let items, next = ProdItemSet.fold (fun (items, next) prod_item -> let core = ProdItem.get hash_prod_item prod_item in let { prod_item_left = left; prod_item_right = right } = core in let item = { pda_item_left = left; pda_item_right = right } in let items = item :: items in let next = match right with v :: _ -> let next2 = try IVarTable.find first v with Not_found -> IVarSet.singleton v in IVarSet.union next next2 | [] -> let state_item = StateItem.create hash_state_item (state, prod_item) in let lookahead = prop_table.(StateItem.hash state_item).prop_vars in IVarSet.union next lookahead in items, next) ([], IVarSet.empty) items in { pda_items = items; pda_next = next } let pda_action action = match action with GotoAction state -> GotoAction (State.hash state) | ReduceAction _ | AcceptAction | ErrorAction as action -> action let pda_delta table = IVarTable.map pda_action table (* * Find the start state for a production. *) let create_core gram = let start = time_start () in let now = start in let now, info = info_of_grammar gram start now in let now, start_table, trans_table, prop_table = build_lalr_table info start now in let empty_table = empty_productions info in let reduce_actions = reduce_actions info empty_table prop_table in let now = time_print "Reduce productions" start now in let trans_table = process_reduce_actions info reduce_actions trans_table in let now = time_print "Shift/reduce table" start now in (* Build the PDA states *) let table = State.map_array (fun state core -> let { info_state_items = items } = core in { pda_delta = pda_delta (StateTable.find trans_table state); pda_reduce = reduce_early info prop_table state items; pda_info = pda_info_of_items info prop_table state items }) info.info_hash.hash_state_state in let start_table = IVarTable.map State.hash start_table in let _now = time_print "PDA construction" start now in { pda_start_states = start_table; pda_states = table; pda_hash = info.info_hash } let create gram = let start = time_start () in let pda = create_core gram in let _ = time_print "Grammar total" start start in pda (************************************************************************ * PDA execution. *) (* * Execute a semantic action. *) let loc_of_stack stack = match stack with (_, loc, _) :: _ -> loc | [] -> bogus_loc "null" let rec collect_args state args loc1 stack i = if i = 0 then state, loc1, args, stack else match stack with (state, loc2, arg) :: stack -> collect_args state (arg :: args) (union_loc loc1 loc2) stack (pred i) | [] -> raise (Invalid_argument "semantic_action: stack is empty") let semantic_action hash eval arg action stack state tokens = let loc = loc_of_stack stack in let state, loc, args, stack = collect_args state [] loc stack tokens in let () = if !debug_parse then eprintf "Calling action %a@." (pp_print_iaction hash) action in let arg, value = eval arg (IAction.get hash.hash_iaction_state action) loc args in let () = if !debug_parse then eprintf "Called action %a@." (pp_print_iaction hash) action in state, arg, loc, value, stack (* * Exceptions. *) let parse_error loc hash run _stack state (v : ivar) = let { pda_info = { pda_items = items; pda_next = next } } = run.run_states.(state) in let pp_print_ivar = pp_print_ivar hash in let buf = stdstr in fprintf buf "@[Syntax error on token %a" pp_print_ivar v; fprintf buf "@ @[Current state:"; List.iter (fun item -> let { pda_item_left = left; pda_item_right = right } = item in fprintf buf "@ @["; Lm_list_util.rev_iter (fun v -> fprintf buf "@ %a" pp_print_ivar v) left; fprintf buf "@ ."; List.iter (fun v -> fprintf buf "@ %a" pp_print_ivar v) right; fprintf buf "@]") items; fprintf buf "@ @[The next possible tokens are:"; IVarSet.iter (fun v -> fprintf buf "@ %a" pp_print_ivar v) next; fprintf buf "@]@]"; raise (ParseError (loc, flush_stdstr ())) (* * Execution. * * The stack contains (state * value) pairs, where the * state is the state of the machine when that token was pushed. * * !!!CAUTION!!! Keep the number of arguments 6 or less so * that these functions can be tail recursive. *) let fst3 (v, _, _) = v let pda_loop hash run arg start = let rec pda_lookahead arg stack state tok = let { pda_delta = delta } = run.run_states.(state) in let v, loc, x = tok in match (try IVarTable.find delta v with Not_found -> parse_error loc hash run stack state v) with GotoAction new_state -> if !debug_parse then eprintf "State %d: token %a: shift %d@." state (pp_print_ivar hash) v new_state; pda_no_lookahead arg ((state, loc, x) :: stack) new_state | ReduceAction (action, name, tokens) -> if !debug_parse then eprintf "State %d: reduce %a@." state (pp_print_iaction hash) action; let state, arg, loc, x, stack = semantic_action hash run.run_eval arg action stack state tokens in pda_goto_lookahead arg stack (state, loc, x) name tok | ErrorAction -> parse_error loc hash run stack state v | AcceptAction -> match stack with [_, _, x] -> arg, x | _ -> raise (Invalid_argument "pda_lookahead") and pda_goto_lookahead arg stack state_loc_x name tok = let state, loc, _x = state_loc_x in let () = if !debug_parse then eprintf "State %d: Goto lookahead: production %a@." (**) state (pp_print_ivar hash) name in let action = try IVarTable.find run.run_states.(state).pda_delta name with Not_found -> parse_error loc hash run stack state name in match action with GotoAction new_state -> if !debug_parse then eprintf "State %d: production %a: goto %d (lookahead %a)@." (**) state (pp_print_ivar hash) name new_state (pp_print_ivar hash) (fst3 tok); let stack = state_loc_x :: stack in pda_lookahead arg stack new_state tok | ErrorAction | ReduceAction _ | AcceptAction -> eprintf "pda_goto_no_lookahead: illegal action: %a@." (pp_print_pda_action hash) action; raise (Invalid_argument "pda_goto_lookahead: illegal action") and pda_no_lookahead arg stack state = match run.run_states.(state).pda_reduce with ReduceNow (action, name, tokens) -> if !debug_parse then eprintf "State %d: ReduceNow: %a@." state (pp_print_iaction hash) action; let state, arg, loc, x, stack = semantic_action hash run.run_eval arg action stack state tokens in pda_goto_no_lookahead arg stack (state, loc, x) name | ReduceAccept (action, _, tokens) -> if !debug_parse then eprintf "State %d: ReduceAccept: %a@." state (pp_print_iaction hash) action; let _, arg, _, x, _ = semantic_action hash run.run_eval arg action stack state tokens in arg, x | ReduceNone -> let v, loc, arg, x = run.run_lexer arg in let v = IVar.create hash.hash_ivar_state v in let () = if !debug_parse then eprintf "State %d: Read token: %a@." state (pp_print_ivar hash) v in pda_lookahead arg stack state (v, loc, x) and pda_goto_no_lookahead arg stack state_loc_x name = let state, loc, x = state_loc_x in let action = try IVarTable.find run.run_states.(state).pda_delta name with Not_found -> parse_error loc hash run stack state name in match action with GotoAction new_state -> if !debug_parse then eprintf "State %d: production %a: goto %d (no lookahead)@." (**) state (pp_print_ivar hash) name new_state; let stack = (state, loc, x) :: stack in pda_no_lookahead arg stack new_state | ErrorAction | ReduceAction _ | AcceptAction -> eprintf "pda_goto_no_lookahead: illegal action: %a@." (pp_print_pda_action hash) action; raise (Invalid_argument "pda_goto_no_lookahead") in pda_no_lookahead arg [] start let parse pda start lexer eval arg = let { pda_states = states; pda_start_states = start_states; pda_hash = hash } = pda in let run = { run_states = states; run_lexer = lexer; run_eval = eval } in let start = try IVarTable.find start_states start with Not_found -> raise (Failure ("not a start symbol: " ^ string_of_ivar hash start)) in try pda_loop hash run arg start with Not_found -> raise (Failure "syntax error") (************************************************************************ * Wrappers. *) let empty = { parse_grammar = empty_grammar; parse_pda = None } let add_start info sym = let gram = add_start info.parse_grammar sym in { parse_grammar = gram; parse_pda = None } let get_start info = VarSet.fold (fun vars v -> Var.get v :: vars) [] (info.parse_grammar.gram_start_symbols) let prec_min = Precedence.prec_min let prec_max = Precedence.prec_max let add_assoc info pre assoc = let { parse_grammar = gram } = info in let { gram_prec_table = prec_table } = gram in let prec_table = Precedence.add_assoc prec_table pre assoc in let gram = { gram with gram_prec_table = prec_table } in let info = { parse_grammar = gram; parse_pda = None } in info let create_prec_lt info pre assoc = let { parse_grammar = gram } = info in let { gram_prec_table = prec_table } = gram in let prec_table, pre = Precedence.create_prec_lt prec_table pre assoc in let gram = { gram with gram_prec_table = prec_table } in let info = { parse_grammar = gram; parse_pda = None } in info, pre let create_prec_gt info pre assoc = let { parse_grammar = gram } = info in let { gram_prec_table = prec_table } = gram in let prec_table, pre = Precedence.create_prec_gt prec_table pre assoc in let gram = { gram with gram_prec_table = prec_table } in let info = { parse_grammar = gram; parse_pda = None } in info, pre let add_prec info pre v = let gram = add_prec info.parse_grammar pre (Var.create v) in { parse_grammar = gram; parse_pda = None } let find_prec info v = find_prec info.parse_grammar (Var.create v) let add_production info action name rhs pre = let action = Action.create action in let name = Var.create name in let rhs = List.map Var.create rhs in let pre = match pre with Some v -> Some (Var.create v) | None -> None in let gram = add_production info.parse_grammar action name rhs pre in { parse_grammar = gram; parse_pda = None } let remove_production info action = let action = Action.create action in let gram = remove_production info.parse_grammar action in { parse_grammar = gram; parse_pda = None } let union info1 info2 = let changed, gram = union_grammar info1.parse_grammar info2.parse_grammar in if changed then { parse_grammar = gram; parse_pda = None } else info1 let pda_of_info info = match info.parse_pda with Some pda -> pda | None -> let pda = create info.parse_grammar in info.parse_pda <- Some pda; pda let parse info start lexer eval = let pda = pda_of_info info in let start = IVar.create pda.pda_hash.hash_ivar_state start in parse pda start lexer eval let compile info = ignore (pda_of_info info) let build info debug = let prev_debug = !debug_parse in let () = debug_parse := debug in let pda = create info.parse_grammar in debug_parse := prev_debug; info.parse_pda <- Some pda let pp_print_parser buf info = pp_print_grammar buf info.parse_grammar let hash info = Hashtbl.hash_param max_int max_int info.parse_grammar end (* * Default precedence module. *) module ParserPrecedence : PrecedenceArg = struct (* * A precedence has a name and associativity. * The integer gives the *name* of a precedence, * not the actual priority. *) type precedence = int module PrecTable = IntTable;; type t = (assoc * int) PrecTable.t (* * Degenerate precedences. *) let prec_min = 0 let prec_max = 1 let empty = let prec_table = PrecTable.empty in let prec_table = PrecTable.add prec_table prec_min (NoneAssoc, 0) in let prec_table = PrecTable.add prec_table prec_max (NoneAssoc, 1) in prec_table (* * Check that the associativity matches. *) let add_assoc table pre assoc = let () = try let assoc', _ = PrecTable.find table pre in if assoc' <> assoc then raise (Failure "ParserPrecedence.add_assoc: associativities do not match") with Not_found -> raise (Failure "ParserPrecedence.add_assoc: precedence is not defined") in table (* * Shift all the precedence levels at least the given level * up by one. *) let prec_shift table prio = PrecTable.map (fun (assoc, prio2) -> let prio = if prio2 >= prio then succ prio2 else prio2 in assoc, prio) table (* * Create a new precedence level after the given one. *) let create_prec_lt table pre assoc = let index = PrecTable.cardinal table in let _, prio = PrecTable.find table pre in let table = prec_shift table prio in let table = PrecTable.add table index (assoc, prio) in table, index let create_prec_gt table pre assoc = let index = PrecTable.cardinal table in let _, prio = PrecTable.find table pre in let table = prec_shift table (succ prio) in let table = PrecTable.add table index (assoc, succ prio) in table, index (* * Get the associativity of a precedence operator. *) let assoc table pre = fst (PrecTable.find table pre) (* * Compare two precedences. *) let compare table pre1 pre2 = let _, prio1 = PrecTable.find table pre1 in let _, prio2 = PrecTable.find table pre2 in prio1 - prio2 (* * Print the precedence. *) let pp_print_prec table buf pre = let assoc, prio = PrecTable.find table pre in fprintf buf "%a, %d" pp_print_assoc assoc prio end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_dlist.mli0000664000152300015230000000355710456222231021010 0ustar jyhjyh(* * Doubly-linked lists. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Lists contain handles. *) type 'a t type 'a handle (* * Creation. *) val create : unit -> 'a t val create_handle : 'a -> 'a handle val data : 'a handle -> 'a (* * List operations. *) val is_empty : 'a t -> bool val hd : 'a t -> 'a handle val tl : 'a handle -> 'a handle val no_tl : 'a handle -> bool val to_list : 'a t -> 'a handle list (* * Standard ops. *) val length : 'a t -> int (* * Iteration. *) val iter : ('a handle -> unit) -> 'a t -> unit val fold : ('a -> 'b handle -> 'a) -> 'a -> 'b t -> 'a (* * Insertion/deletion. *) val insert : 'a handle -> 'a t -> unit val delete : 'a handle -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_db.ml0000664000152300015230000002772210627403227020113 0ustar jyhjyh(* * Simple value database. The entries in the database have * the following format. * * - Field label (int) * - Hostname (string) * - Magic number (16 bytes) * - Digest (used on the source file, for up-to-date info) * - Value (marshaled) * * Invariant: * - There is at most one entry for each host/field label. * * If the magic number doesn't match, then the entry is * out-of-date, and should be replaced. * * In some cases, the hostname doesn't matter. Even so, if there * is an entry with the current hostname, and the magic number * doesn't match, it is out-of-date. * * NOTE: This has been updated to allowed for key-value pairs * in the header. It looks pretty dumb, but I (jyh) want to keep * the file format backward-compatible. So we stuff all the key/value * pairs in the magic number. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_debug let debug_db = create_debug (**) { debug_name = "db"; debug_description = "Display debugging information for marshaling operations"; debug_value = false } type t = Unix.file_descr type tag = int type magic = string type digest = string type hostname = string type named_value = string * string type entry_pred = tag -> named_value list -> hostname -> digest -> bool let first_entry_tag = 1000 (* * Some kinds of entries are host-independent. *) type host = HostIndependent | HostDependent (* * Codes during unmarshaling. *) type 'a unmarshal = UnmarshalValue of 'a | UnmarshalNext (* * Codes during removal. *) type remove = RemoveEntry of int | RemoveNext | RemoveRest (* * Version number. *) let magic = 0x56e50f8b (* * Marshaling. *) let hostname = Unix.gethostname () let digest_length = 16 (* * File operations. *) (* * Win32 doesn't have a general truncate, so seek and truncate. *) let seek_and_truncate fd pos = let _ = Unix.lseek fd pos Unix.SEEK_SET in Lm_unix_util.ftruncate fd (* * * When an entry is removed, copy the remaining parts of * the file. *) let bufsize = 4096 let file_shift fd pos1 pos2 = let buf = String.create bufsize in let rec copy pos1 pos2 = let _ = Unix.lseek fd pos2 Unix.SEEK_SET in let amount = Unix.read fd buf 0 bufsize in if amount <> 0 then let _ = Unix.lseek fd pos1 Unix.SEEK_SET in assert (Unix.write fd buf 0 amount = amount); copy (pos1 + amount) (pos2 + amount) else pos1 in let pos = copy pos1 pos2 in seek_and_truncate fd pos; ignore (Unix.lseek fd pos1 Unix.SEEK_SET) (* * If some kind of error happens while removing an entry, * truncate the file at this point. *) let remove_entry fd pos off = try file_shift fd pos off with Unix.Unix_error _ -> seek_and_truncate fd pos (* * Unmarshaling. *) let unmarshal_magic inx = try input_binary_int inx = magic with End_of_file -> false let unmarshal_tag inx = input_binary_int inx let unmarshal_digest inx = let s = String.create digest_length in really_input inx s 0 digest_length; s let unmarshal_string inx = let len = input_binary_int inx in if len < 0 || len >= 1024 then raise (Failure "unmarshal_string") else let s = String.create len in really_input inx s 0 len; s let unmarshal_strings_old inx = let magic = unmarshal_string inx in ["MAGIC", magic] let unmarshal_strings_new inx = (* Total size of all the entries *) let _ = input_binary_int inx in (* Number of key/value pairs *) let len = input_binary_int inx in (* Read the key/value pairs *) if len < 0 || len >= 1024 then raise (Failure "unmarshal_string") else let rec loop strings i = if i = len then List.rev strings else let key = unmarshal_string inx in let value = unmarshal_string inx in loop ((key, value) :: strings) (i + 1) in loop [] 0 let unmarshal_strings inx tag = if tag < first_entry_tag then unmarshal_strings_old inx else unmarshal_strings_new inx (* * Search for the appropriate entry. *) let find_entry fd filename test = let _ = Unix.lseek fd 0 Unix.SEEK_SET in let inx = Unix.in_channel_of_descr fd in let head = String.create Marshal.header_size in (* Find the appropriate entry *) let unmarshal_entry () = (* Get the header *) let tag = unmarshal_tag inx in let host = unmarshal_string inx in let strings = unmarshal_strings inx tag in let digest = unmarshal_digest inx in if test tag strings host digest then begin (* Found a matching entry *) if !debug_db then eprintf "@[Marshal.from_channel: %s@ save tag/digest: %d/%s@." (**) filename tag (Lm_string_util.hexify digest); let x = UnmarshalValue (Marshal.from_channel inx) in if !debug_db then eprintf "Marshal.from-channel: done@."; x end else (* Skip over this entry *) let () = really_input inx head 0 Marshal.header_size in let size = Marshal.data_size head 0 in let pos = pos_in inx + size in seek_in inx pos; UnmarshalNext in (* * Search through the entries. If an exception is raised, * truncate the file at the start of the entry. *) let rec search () = let start = pos_in inx in let code = try unmarshal_entry () with End_of_file | Failure _ | Sys_error _ | Invalid_argument _ -> if !debug_db then eprintf "Lm_db.find: %s: failed@." filename; seek_and_truncate fd start; raise Not_found in match code with UnmarshalValue x -> x | UnmarshalNext -> search () in if unmarshal_magic inx then search () else raise Not_found let find fd filename (tag, host_mode) magic digest = let test tag' strings host' digest' = match strings with ["MAGIC", magic'] -> tag' = tag && magic' = magic && digest' = digest && (host_mode = HostIndependent || host' = hostname) | _ -> false in find_entry fd filename test (* * Remove an entry. Search through the existing entries * to find one with the same tag. If the host is significant, * remove only the entry with the same hostname. Otherwise, * remove the entry with the same magic number. *) let marshal_magic fd = seek_and_truncate fd 0; let outx = Unix.out_channel_of_descr fd in output_binary_int outx magic; Pervasives.flush outx let remove_entry fd filename test = let head = String.create Marshal.header_size in (* Find the appropriate entry *) let unmarshal_entry inx = (* Get the header *) let tag = unmarshal_tag inx in let host = unmarshal_string inx in let strings = unmarshal_strings inx tag in let digest = unmarshal_digest inx in let () = really_input inx head 0 Marshal.header_size in let size = Marshal.data_size head 0 in let pos = pos_in inx + size in if test tag strings host digest then RemoveEntry pos else begin seek_in inx pos; RemoveNext end in (* * Search through the entries. If an exception is raised, * truncate the file at the start of the entry. *) let rec search inx = let start = pos_in inx in let code = try unmarshal_entry inx with End_of_file | Failure _ | Sys_error _ | Invalid_argument _ -> RemoveRest in match code with RemoveEntry pos -> remove_entry fd start pos; ignore(Unix.lseek fd 0 Unix.SEEK_SET); let inx = Unix.in_channel_of_descr fd in seek_in inx start; search inx | RemoveNext -> search inx | RemoveRest -> seek_and_truncate fd start in let _ = Unix.lseek fd 0 Unix.SEEK_SET in let inx = Unix.in_channel_of_descr fd in if unmarshal_magic inx then search inx else marshal_magic fd let remove fd filename (tag, host_mode) magic = let test tag' strings host' digest' = match strings with ["MAGIC", magic'] -> tag' = tag && (host' = hostname || host_mode = HostIndependent && magic' = magic) | _ -> false in remove_entry fd filename test (* * Add an entry. * Remove any existing entry, and add the new one to the end of the * file. *) let marshal_tag outx tag = output_binary_int outx tag let marshal_digest outx digest = assert (String.length digest = digest_length); Pervasives.output_string outx digest let marshal_string outx s = let len = String.length s in output_binary_int outx len; Pervasives.output_string outx s let marshal_strings outx sl = let len = List.fold_left (fun len (key, value) -> len + String.length key + String.length value + 8) 4 sl in output_binary_int outx len; output_binary_int outx (List.length sl); List.iter (fun (key, value) -> marshal_string outx key; marshal_string outx value) sl let marshal_entry fd filename tag magic_number digest x = let outx = Unix.out_channel_of_descr fd in marshal_tag outx tag; marshal_string outx hostname; marshal_string outx magic_number; marshal_digest outx digest; if !debug_db then eprintf "@[Marshal.to_channel: %s@ tag/digest: %d/%s@]@." (**) filename tag (Lm_string_util.hexify digest); Marshal.to_channel outx x []; if !debug_db then eprintf "Marshal.to_channel: %s: done@." filename; Pervasives.flush outx let add fd filename ((code, _) as tag) magic digest x = remove fd filename tag magic; marshal_entry fd filename code magic digest x let append_entry fd filename tag strings digest x = let _ = Unix.lseek fd 0 Unix.SEEK_END in let outx = Unix.out_channel_of_descr fd in marshal_tag outx tag; marshal_string outx hostname; marshal_strings outx strings; marshal_digest outx digest; if !debug_db then eprintf "@[Marshal.to_channel: %s@ tag/digest: %d/%s@]@." (**) filename tag (Lm_string_util.hexify digest); Marshal.to_channel outx x []; if !debug_db then eprintf "Marshal.to_channel: %s: done@." filename; Pervasives.flush outx (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_terminfo.ml0000664000152300015230000000522010575630362021342 0ustar jyhjyh(* * Simple terminfo interface. * Copyright (C) 2002 Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. *) (* The C function takes a string ID, and returns the escape sequence (or an empty string if the ID is not defined for this terminal). *) external caml_tgetstr_enabled : unit -> bool = "caml_tgetstr_enabled" external caml_tgetstr : string -> string = "caml_tgetstr" (* Tgetstr is enabled only if the terminal is defined *) let tgetstr_enabled = caml_tgetstr_enabled () (* tgetstr id Lookup the terminal capability with indicated id. This assumes the terminfo to lookup is given in the TERM environment variable. This function returns None if the terminal capability is not defined. *) let tgetstr id = if tgetstr_enabled then let result = caml_tgetstr id in if result = "" then None else Some result else None (* Various terminfo identifier names for use with tgetstr *) let enter_bold_mode = "bold" let exit_attribute_mode = "sgr0" (* xterm_ok () Check for an XTerm-compatible terminal, for the XTerm escapes. *) (* XXX: strictly speaking, we should be using the "tsl"/"fsl" capabilities here, but those are often missing *) let xterm_ok () = try match Sys.getenv "TERM" with "xterm" | "color_xterm" | "xterm-color" | "konsole" | "rxvt" -> true | _ -> false with Not_found -> false (* xterm_escape_begin () Display XTerm title begin escape, if available. *) let xterm_escape_begin () = if xterm_ok () then Some "\027]0;" else None (* xterm_escape_begin () Display XTerm title end escape, if available. *) let xterm_escape_end () = if xterm_ok () then Some "\007" else None omake-0.9.8.5/src/libmojave-external/util/lm_string_hash.mli0000664000152300015230000000246010654712563022206 0ustar jyhjyh(* * Hash-consed strings. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_hash_sig module StringHash : HashMarshalSig with type elt = string module StringHashSet : Lm_set_sig.LmSet with type elt = StringHash.t module StringHashTable : Lm_map_sig.LmMap with type key = StringHash.t val pp_print_string_hash : formatter -> StringHash.t -> unit (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/libmojave-external/util/lm_arg.mli0000664000152300015230000000610410456222231020431 0ustar jyhjyh(* * Parsing command line arguments, MCC-style. Arguments to options * may be separated from the option by a space, or may be placed * immediately after the option (without space) IF the option is * not ambiguous. Also, options may be abbreviated as long as the * short form is not ambiguous. * * ---------------------------------------------------------------- * * Copyright (C) 2002, Justin David Smith, Caltech * Based on original code, Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Justin David Smith * Author: Jason Hickey * jyh@cs.caltech.edu *) type 'a poly_spec = (* Non-folding versions *) Unit of (unit -> unit) | Set of bool ref | Clear of bool ref | String of (string -> unit) | Int of (int -> unit) | Float of (float -> unit) | Rest of (string -> unit) (* Folding versions *) | UnitFold of ('a -> 'a) | SetFold of ('a -> bool -> 'a) | ClearFold of ('a -> bool -> 'a) | StringFold of ('a -> string -> 'a) | IntFold of ('a -> int -> 'a) | FloatFold of ('a -> float -> 'a) | RestFold of ('a -> string -> 'a) (* Usage message *) | Usage (* spec_mode StrictOptions: options are processed literally, and may not be collapsed into multi-letter options. MultiLetterMode: single-letter options of the form -x may be collapsed into multi-letter options. *) type spec_mode = StrictOptions | MultiLetterOptions type 'a poly_section = (string * 'a poly_spec * string) list type 'a poly_sections = spec_mode * (string * 'a poly_section) list type spec = unit poly_spec type section = unit poly_section type sections = unit poly_sections exception BogusArg of string exception UsageError (* * Folding versions. *) val fold_argv : string array -> 'a poly_sections -> 'a -> ('a -> string -> 'a * bool) -> string -> 'a val fold : 'a poly_sections -> 'a -> ('a -> string -> 'a * bool) -> string -> 'a (* * Non-folding versions. *) val parse_argv : string array -> sections -> (string -> unit) -> string -> unit val parse : sections -> (string -> unit) -> string -> unit (* * Usage string doesn't care. *) val usage : 'a poly_sections -> string -> unit omake-0.9.8.5/src/libmojave-external/util/lm_table_graph.mli0000664000152300015230000000265510456222231022137 0ustar jyhjyh(* * This implementation of a graph is based on functional * tables. The graph is a table of nodes, where each node * has a list of its immediate neighbors. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) open Graph_sig module UndirectedGraph : UndirectedGraphSig module DirectedGraph : DirectedGraphSig (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/util/lm_listbuf.mli0000664000152300015230000000246410456222231021335 0ustar jyhjyh(* Simple list buffer utility (used for instruction buffers) Copyright (C) 2002,2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) type 'a t val empty : 'a t val of_elt : 'a -> 'a t val of_list : 'a list -> 'a t val to_list : 'a t -> 'a list val add : 'a t -> 'a -> 'a t val add_list : 'a t -> 'a list -> 'a t val add_rev_list : 'a t -> 'a list -> 'a t val add_listbuf : 'a t -> 'a t -> 'a t omake-0.9.8.5/src/libmojave-external/util/lm_ncurses_display.mli0000664000152300015230000001020710456222231023066 0ustar jyhjyh(* Ncurses display library (for standard display functions) Copyright (C) 2002 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. *) open Lm_printf (*** Basic Display Features ***) (* curses_enabled True if ncurses support has been enabled in the configure system. If this flag is false, then calls to functions exported by this module will almost certainly result in Failure exceptions. *) val curses_enabled : bool (* display_active () Returns true if an ncurses display is currently active. *) val display_active : unit -> bool (* update_status msg Updates the status window with the indicated message. The message may be truncated to fit into the window. This raises Failure if no display is currently active. *) val update_status : string -> unit (* putchar ch Writes the indicated character to the MAIN window. The main window is scrolled if necessary. Raises Failure if no display is active. *) val putchar : char -> unit (* putsubstr buf off len Writes the indicated substring of buf to the MAIN window. The main window is scrolled if necessary. This raises Failure if no display is active. *) val putsubstr : string -> int -> int -> unit (* getchar () Reads a character in from the display. The character may be an extended key, such as an arrow key. The character will NOT be echoed onto the screen by default. This raises Failure if no display is active. *) val getchar : unit -> int (* flush () Redraws the main window. You must call this after calls to putchar and/ or putsubstr, otherwise the text will not show up on the screen. This raises Failure if no display is active. *) val flush : unit -> unit (* stop_display () Ends ncurses mode and deletes the indicated display windows. If no display is active, then this function is a NOP. *) val stop_display : unit -> unit (* start_display () Starts ncurses mode and creates a status and main window. If we are already in ncurses mode, then the old mode is deleted and a fresh mode is started. If ncurses support is not available, then this will most definitely raise a Failure. *) val start_display : unit -> unit (* in_display f arg Executes (f arg) inside an ncurses display. This will clean up the ncurses display, even if f raises an exception. *) val in_display : ('a -> 'b) -> 'a -> 'b (* make_formatter () Makes a formatter suitable for printing to the ncurses display. *) val make_formatter : unit -> formatter (*** Text Viewer Interface ***) (* text_viewer title text Let the user scroll through a buffer of text. Once the user exits the session, control is returned and the scroll buffer is left at its current location. The current contents of the main window are cleared at the beginning of this call. *) val text_viewer : string -> string -> unit (*** Menu Selection ***) (* menu_select numbered title entries Allow the user to select an element from a menu of entries. If successful, then the (zero-indexed) entry number that was selected is returned. If failed, then None is returned. If numbered is true, then a numerical index is displayed next to each entry. *) val menu_select : bool -> string -> (char option * string * string) array -> int option omake-0.9.8.5/src/libmojave-external/README0000664000152300015230000000061710311625307016374 0ustar jyhjyhIf you want to copy files from another project in the same repository (like omake), you will need to convince subversion that they are actually the same. Here is an example. svn switch --relocate svn://svn.metaprl.org/libmojave svn+ssh://svn.metaprl.org/svnroot/mojave/libmojave You should commit immediately if possible, because an "svn update" will revert back to using the old svn://... link. omake-0.9.8.5/src/libmojave-external/OMakefile0000664000152300015230000000321710606220322017265 0ustar jyhjyh# # Include files from subdirectories # include stdlib/Files include system/Files include util/Files include unix/Files STDLIB_FILES = $(file $(addprefix stdlib/, $(STDLIB_FILES))) SYSTEM_FILES = $(file $(addprefix system/, $(SYSTEM_FILES))) UTIL_FILES = $(file $(addprefix util/, $(UTIL_FILES))) UNIX_FILES = $(file $(addprefix unix/, $(UNIX_FILES))) FILES[] = $(STDLIB_FILES) $(UNIX_FILES) $(SYSTEM_FILES) $(UTIL_FILES) USE_OCAMLFIND = false if $(not $(defined LMINSTALL)) LMINSTALL = false export section ABORT_ON_DEPENDENCY_ERRORS = false if $(LMINSTALL) OCamlLibraryInstall($(LMINSTALL), $(LIB), lm, $(FILES)) else OCamlLibrary(lm, $(FILES)) open build/svn_realclean if $(not $(defined CLEAN)) .PHONY: clean realclean if $(not $(defined FORCE_REALCLEAN)) FORCE_REALCLEAN = false export realclean: clean svn_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock CLEAN = rm -rf *.cm* *~ .\#* *.o *.obj *.a *.lib *.exe *.omc *.tmp export clean: $(CLEAN) # # Configuration # if $(not $(defined LM_STANDALONE)) LM_STANDALONE = false export if $(not $(defined CAMLLIB)) CAMLLIB = $(dir $(getenv CAMLLIB, $(getenv OCAMLLIB, $(shell $(OCAMLC) -where)))) INCLUDES += $(CAMLLIB) export LIBFILES = if $(NATIVE_ENABLED) LIBFILES += lm.cmxa lm$(EXT_LIB) export if $(BYTE_ENABLED) LIBFILES += lm.cma export if $(LM_STANDALONE) .DEFAULT: $(LIBFILES) if $(not $(defined THREADS_ENABLED)) THREADS_ENABLED = false export # # Subdirectories of this project # .SUBDIRS: cutil stdlib unix system util omake-0.9.8.5/src/libmojave-external/LICENSE.libmojave0000664000152300015230000000207610456222231020470 0ustar jyhjyh Libmojave terms and conditions. July 15, 2006 The libmojave library is distributed under terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. The license is distributed in the file LICENSE.txt. In addition, as special exceptions, the copyright holders give permission to link the code of portions of this library with the OpenSSL project's "OpenSSL" library, and with the Objective Caml runtime, under certain conditions as described in each individual source file, and distribute linked combinations including the two. You must obey the GNU Lesser General Public License in all respects for all of the code used other than OpenSSL and Objective Caml. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here. omake-0.9.8.5/src/libmojave-external/system/0000775000152300015230000000000010660137261017040 5ustar jyhjyhomake-0.9.8.5/src/libmojave-external/system/lm_marshal_shared.ml0000664000152300015230000006021010464477010023037 0ustar jyhjyh(* * This is a "shared" marshaler. We keep a table that maps * OCaml blocks to string representations. The objects are saved * with weak pointers. The marshaler is intended to represent a * distributed shared memory. * o When a value is stored in the memory, entries * are saved for all the new values, and a string * is created that can be broadcast to all copies * of the marshaler. * o Periodically, the table can be scanned for values * that have been locally garbage collected, and a string * is created to broadcast those entries. * o If a value is garbage collected by all copies of the * marshaler, it can be removed from the table. * * Each value is associated with a number that uniquely identifies it. * * Each marshaler is identified by a unique string, and the marshalers * form a group. * * Invariants: * o The marshalers agree on the group membership. * o If a value is in multiple tables, it is identified * by the same number. * * In order to get the second invariant, and also allow the group * membership to change, we use a page-table scheme. Each marshaler * has a local address space, and all marshalers agree on a global * address space. Each marshaler "owns" a set of pages, and allocates * addresses only from its own pages. There is a translation-lookaside- * buffer to translate between global and local addresses. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_large_array open Lm_large_array_weak open Lm_marshal_sig (* * Tags for references to the table. *) let shared_get = 0 let shared_set = 1 (* * We need some C helper functions. *) type pointer_hash_type external create_hash : unit -> pointer_hash_type = "ml_create_pointer_hash" external insert : pointer_hash_type -> int -> Obj.t -> unit = "ml_pointer_hash_insert" external lookup : pointer_hash_type -> Obj.t LargeWeakArray.t -> Obj.t -> int = "ml_pointer_hash_lookup" external local_write_block : Obj.t -> string -> int -> unit = "ml_write_block" (* * Marshal module. *) module Marshal (Buf : BufSig) = struct (************************************************************************ * CONSTANTS AND TYPES * ************************************************************************) (* * Page constants. *) let page_shift = 16 let page_size = 1 lsl page_shift let max_pages = 1 lsl 13 (* * This is the size of the words we save when * we marshal. *) let word_size = 4 (* * This a a very general form of free list. *) type free_list = FreeFun of (unit -> int * free_list) (* * This is a local marshal/unmarshal buffer. * Here is how we manage allocation of new pages. * The marshal_local_alloc_list is the list of pages that * we have already allocated. After a gc, we search through this * list to find free entries. Once this list is exhausted, we allocate * pages from the global pool. When a new value is marshaled, we send * the new global allocations in the header, and the real allocation * occurs when the message is returned (we require total ordering * of updates). * * Fields: * marshal_id : every marshaler has a unique id * marshal_view : group membership (all options are (Some id)) * * marshal_values : this saves the local versions of the values. * The index into the array is the unique identifier of * the value. * marshal_copies : this is a copy of the value, * so that it can be resurrected if needed. * marshal_hash : C structure for looking up objects * * marshal_local_tlb : translation from local indices to global * marshal_global_tlb : translation from global indices to local * marshal_tmp_tlb : used during unmarshaling if there is a global reassignment * * marshal_free_index : index of next possibly free entry in the local free list * marshal_free_max : next index after current page * marshal_free_list : list of pages we own that we are searching * marshal_alloc_list : list of pages we own in local address space * * marshal_local_free_list : list of free pages in local space * marshal_global_free_list : list of free pages in global space * marshal_lookahead_free_list : list of free pages in global space * This list is used to temporarily allocate pages from the global * space when an object is marshaled. The list of lookahead pages * is sent with the message. When the message is unmarshaled, the * pages are allocated from the global space, and a translation * occurs. * marshal_lookahead_pages : list of global pages that have been * allocated but not committed. * * marshal_page_table : owner assignment to pages, index is in global space *) type 'a t = { marshal_id : Lm_id.t; mutable marshal_view : Lm_id.t option array; mutable marshal_values : Obj.t LargeWeakArray.t; mutable marshal_copies : string LargeArray.t; mutable marshal_hash : pointer_hash_type; marshal_local_tlb : int array; marshal_global_tlb : int array; marshal_tmp_tlb : int array; mutable marshal_free_index : int; mutable marshal_free_max : int; mutable marshal_free_list : int list; mutable marshal_alloc_list : int list; mutable marshal_local_free_list : free_list; mutable marshal_global_free_list : free_list; mutable marshal_lookahead_free_list : free_list; mutable marshal_lookahead_pages : int list; mutable marshal_page_table : Lm_id.t option array } (************************************************************************ * FREE LIST IMPLEMENTATIONS * ************************************************************************) (* * Free list counting up from the given number. * This list should be functional. *) let rec tail_free_list i = FreeFun (fun () -> i, tail_free_list (succ i)) (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Empty string is used to initialize object copies. *) let null_string = "" (* * Create a marshal buffer. * We always pre-allocate the first page. *) let create () = let id = Lm_id.create () in { marshal_id = id; marshal_view = [| Some id |]; marshal_values = LargeWeakArray.create (); marshal_copies = LargeArray.create null_string; marshal_hash = create_hash (); marshal_local_tlb = Array.create max_pages 0; marshal_global_tlb = Array.create max_pages 0; marshal_tmp_tlb = Array.create max_pages 0; marshal_free_index = 0; marshal_free_max = 0; marshal_free_list = []; marshal_alloc_list = []; marshal_local_free_list = tail_free_list 0; marshal_global_free_list = tail_free_list 0; marshal_lookahead_free_list = tail_free_list 0; marshal_lookahead_pages = []; marshal_page_table = Array.create max_pages None } (************************************************************************ * MARSHALING * ************************************************************************) (* * Marshal an object. *) let marshal info buf obj = (* * Break apart the info. *) let { marshal_values = marshal_values; marshal_copies = marshal_copies; marshal_hash = marshal_hash; } = info in (* * Keep a list of global pages we are using for this object. *) let allocated_global_pages = ref [] in (* * Global buffer operations. *) let global_write_string buf' = Buf.write buf buf' 0 (String.length buf') in let global_write_int i = Buf.write_int buf i in let global_write_shared_get i = Buf.write_int2 buf shared_get i in let global_write_shared_set i = Buf.write_int2 buf shared_set i in let global_write_header tag i = Buf.write_tag buf tag i in (* * Local buffer operations. *) let local_write_int i buf index = buf.[index] <- Char.chr ((i lsr 23) land 255); buf.[index + 1] <- Char.chr ((i lsr 15) land 255); buf.[index + 2] <- Char.chr ((i lsr 7) land 255); buf.[index + 3] <- Char.chr (((i lsl 1) land 255) + 1) in let local_write_shared_get i buf index = buf.[index] <- Char.chr ((i lsr 21) land 255); buf.[index + 1] <- Char.chr ((i lsr 13) land 255); buf.[index + 2] <- Char.chr ((i lsr 5) land 255); buf.[index + 3] <- Char.chr (((i lsl 3) land 255) + (shared_get lsl 2) + 2) in let local_write_header tag i buf index = buf.[index] <- Char.chr tag; buf.[index + 1] <- Char.chr ((i lsr 14) land 255); buf.[index + 2] <- Char.chr ((i lsr 6) land 255); buf.[index + 3] <- Char.chr ((i lsl 2) land 255) in (* * Find a free location somewhere in the table. *) let rec alloc_search index max = if index = max then (* Current page has been fully searched *) match info.marshal_free_list with page :: tl -> (* There is another local page to search *) let index = page lsl page_shift in let max = index + page_size in info.marshal_free_list <- tl; info.marshal_free_index <- index; info.marshal_free_max <- max; alloc_search index max | [] -> (* Allocate a global page *) let page, glob = match info.marshal_global_free_list with FreeFun f -> f () in let index = page lsl page_shift in let max = index + page_size in info.marshal_global_free_list <- glob; info.marshal_alloc_list <- page :: info.marshal_alloc_list; info.marshal_free_index <- succ index; info.marshal_free_max <- max; allocated_global_pages := page :: !allocated_global_pages; index else if LargeArray.get marshal_copies index == null_string then alloc_search (succ index) max else begin info.marshal_free_index <- succ index; index end in let alloc_slot () = alloc_search info.marshal_free_index info.marshal_free_max in (* * For now, we allocate buffers on the heap. *) let alloc_buffer words = String.create (words * word_size) in (* * Save a value in the marshal table. * This constructs a string that should be broadcast * to all marshalers in the group. The lbuf is * a local buffer that is used to construct copies of * the objects being marshaled. *) let rec marshal_value obj lbuf lindex = if Obj.is_block obj then let i = lookup marshal_hash marshal_values obj in if i >= 0 then begin global_write_shared_get i; local_write_shared_get i lbuf lindex end else let tag = Obj.tag obj in let count = Obj.size obj in if count = 0 then (* Atoms are never saved to the table *) begin global_write_header tag 0; local_write_header tag 0 lbuf lindex end else if tag < Obj.no_scan_tag && tag != Obj.infix_tag then (* * This is a tuple that has not been saved in the table yet. * Allocate a free slot, and save the object. Then marshal * all the subvalues, and construct the string representation. *) let index = alloc_slot () in let lbuf' = alloc_buffer (succ count) in (* Save the object *) insert marshal_hash index obj; LargeWeakArray.set marshal_values index obj; LargeArray.set marshal_copies index lbuf'; (* Indicate that we are creating a value *) global_write_shared_set index; (* Write the header word into the new local buffer *) local_write_header tag count lbuf' 0; (* Write the subwords into the global and new local buffers *) marshal_value_entries obj 0 count lbuf' word_size; (* Copy the string to the output buffer *) global_write_string lbuf'; (* Write the new tuple into the enclosing block *) local_write_shared_get index lbuf lindex else if tag = Obj.string_tag || tag = Obj.double_tag || tag = Obj.double_array_tag then (* * This is an abstract block. * We have to create a marshaled version unfortunately. *) let index = alloc_slot () in let lbuf' = alloc_buffer (succ count) in (* Save the object *) insert marshal_hash index obj; LargeWeakArray.set marshal_values index obj; LargeArray.set marshal_copies index lbuf'; (* Indicate that we are creating a value *) global_write_shared_set index; (* Write a header into the new local buffer *) local_write_header tag count lbuf' 0; (* Copy the data *) local_write_block obj lbuf' word_size; (* Copy the string to the output buffer *) global_write_string lbuf'; (* Write the tuple into the enclosing header *) local_write_shared_get index lbuf lindex else (* This is something we're not familiar with *) raise (Invalid_argument (Lm_printf.sprintf "Obj_marshal.marshal: unknown object with tag %d" tag)) else let i = ((Obj.magic obj) : int) in global_write_int i; local_write_int i lbuf lindex and marshal_value_entries obj i count lbuf lindex = if i != count then begin marshal_value (Obj.field obj i) lbuf lindex; marshal_value_entries obj (succ i) count lbuf (lindex + word_size) end in let lbuf = "XXXXXXXXXXXXXXXX" in marshal_value (Obj.repr obj) lbuf 0; !allocated_global_pages (************************************************************************ * UNMARSHALING * ************************************************************************) (* * Take the string and reconstruct the object that it refers to. *) (* let unmarshal info buf = (* * Break apart the info. *) let { marshal_values = marshal_values; marshal_copies = marshal_copies; marshal_hash = marshal_hash; marshal_rank = marshal_rank; marshal_group_size = marshal_group_size } = info in (* * Global buffer operations. *) let global_read_int = Buf.read_int buf in let global_read_shared = Buf.read_int2_tag buf in let global_read_index = Buf.read_int2_value buf in let global_read_tag = Buf.read_value_tag buf in let global_read_size = Buf.read_value_value buf in let global_read_type = Buf.read_value_type buf in (* * Local buffer operations. *) let local_write_int i buf index = buf.[index] <- Char.chr ((i lsr 23) land 255); buf.[index + 1] <- Char.chr ((i lsr 15) land 255); buf.[index + 2] <- Char.chr ((i lsr 7) land 255); buf.[index + 3] <- Char.chr (((i lsl 1) land 255) + 1) in let local_write_shared_get i buf index = buf.[index] <- Char.chr ((i lsr 21) land 255); buf.[index + 1] <- Char.chr ((i lsr 13) land 255); buf.[index + 2] <- Char.chr ((i lsr 5) land 255); buf.[index + 3] <- Char.chr (((i lsl 3) land 255) + 2) in let local_write_shared_set i buf index = buf.[index] <- Char.chr ((i lsr 21) land 255); buf.[index + 1] <- Char.chr ((i lsr 13) land 255); buf.[index + 2] <- Char.chr ((i lsr 5) land 255); buf.[index + 3] <- Char.chr (((i lsl 3) land 255) + 3) in let local_write_header tag i buf index = buf.[index] <- Char.chr tag; buf.[index + 1] <- Char.chr ((i lsr 14) land 255); buf.[index + 2] <- Char.chr ((i lsr 6) land 255); buf.[index + 3] <- Char.chr ((i lsl 2) land 255) in (* * Unmarshal a string, and store the objects it * refers to in a table. *) let rec unmarshal_value () = match global_read_type () with IntValue -> global_read_int () | Int2Value -> let tag = global_read_shared () in let index = global_read_index () in if tag = shared_set then (* The next object in the buffer is an object that should be saved in the table *) if get_flag then (* Get a value from the table *) match LargeWeakArray.get marshal_values index with Some obj -> obj | None -> (* We accidentally collected this value *) resurrect index else (* The buffer contains a formatted value that should be saved at the index *) if Obj.is_block obj then let i = lookup marshal_hash marshal_values obj in if i >= 0 then begin global_write_shared_get i; local_write_shared_get i lbuf lindex end else let tag = Obj.tag obj in let count = Obj.size obj in if count = 0 then (* Atoms are never saved to the table *) begin global_write_header tag 0; local_write_header tag 0 lbuf lindex end else if tag < Obj.no_scan_tag && tag != Obj.infix_tag then (* * This is a tuple that has not been saved in the table yet. * Allocate a free slot, and save the object. Then marshal * all the subvalues, and construct the string representation. *) let index = alloc_slot () in let lbuf' = alloc_buffer (succ count) in (* Save the object *) insert marshal_hash obj index; LargeWeakArray.set marshal_values index obj; LargeArray.set marshal_copies index lbuf'; (* Write the header word into the new local buffer *) local_write_header tag count lbuf' 0; (* Write the subwords into the global and new local buffers *) marshal_value_entries obj 0 count lbuf' word_size; (* Copy the string to the output buffer *) global_write_shared_set index; global_write_string lbuf'; (* Write the new tuple into the enclosing block *) local_write_shared_get index lbuf lindex else if tag = Obj.string_tag || tag = Obj.double_tag || tag = Obj.double_array_tag then (* * This is an abstract block. * We have to create a marshaled version unfortunately. *) let index = alloc_slot () in let lbuf' = alloc_buffer (succ count) in (* Save the object *) insert marshal_hash obj index; LargeWeakArray.set marshal_values index obj; LargeArray.set marshal_copies index lbuf'; (* Write a header into the new local buffer *) local_write_header tag count lbuf' 0; (* Copy the data *) local_write_block obj lbuf' word_size; (* Copy the string to the output buffer *) global_write_shared_set index; global_write_string lbuf'; (* Write the tuple into the enclosing header *) local_write_shared_get index lbuf lindex else (* This is something we're not familiar with *) raise (Invalid_argument (Lm_printf.sprintf "Obj_marshal.marshal: unknown object with tag %d" tag)) else let i = ((Obj.magic obj) : int) in global_write_int i; local_write_int i lbuf lindex and marshal_value_entries obj i count lbuf lindex = if i != count then begin marshal_value (Obj.field obj i) lbuf lindex; marshal_value_entries obj (succ i) count lbuf (lindex + word_size) end in let lbuf = "XXXXXXXXXXXXXXXX" in marshal_value (Obj.repr obj) lbuf 0 *) end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/system/OMakefile0000664000152300015230000000012510364005360020610 0ustar jyhjyh# # Library # include Files OCAMLINCLUDES += ../stdlib ../unix clean: $(CLEAN) omake-0.9.8.5/src/libmojave-external/system/lm_marshal_buf.mli0000664000152300015230000000247110464477010022523 0ustar jyhjyh(* * Implement the shared buffer. * If ENSEMBLE is defined, we use that implementation. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_marshal_sig module Buf : BufSig (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/system/lm_marshal_sig.ml0000664000152300015230000002414210464477010022357 0ustar jyhjyh(* * Modules used in the marshaler. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * There are several formats for words. * * --------------------- * int: | value |1| * --------------------- * 31 1 0 * * --------------------- * int2: | value |X10| * --------------------- * 31 3 0 * * --------------------- * tag: | tag | value |00| * --------------------- * 31 23 2 0 *) type value_type = IntValue | TaggedValue | Int2Value module type BufSig = sig type buf type wbuf type rbuf (* Data is written in this many bytes *) val word_size : int (* Creation/deletion *) val create : unit -> wbuf val to_static : wbuf -> buf val to_read : buf -> rbuf val free : rbuf -> unit (* * Write values to the buffer. * This never fails because the buffer is infinite. *) val write : wbuf -> string -> int -> int -> unit val write_int : wbuf -> int -> unit val write_int2 : wbuf -> int -> int -> unit val write_tag : wbuf -> int -> int -> unit (* * Read from the buffer. *) val read : rbuf -> string -> int -> int -> unit val read_value_type : rbuf -> value_type val read_int : rbuf -> int val read_int2_tag : rbuf -> int val read_int2_value : rbuf -> int val read_value_tag : rbuf -> int val read_value_value : rbuf -> int end (* * This is a "shared" marshaler, meaning that there can be several * marshaler that provide a model of shared memory over a communication * channel. * * ------------- ------------- * | Marshal 1 | ... | Marshal n | * ------------- ------------- * | | | * \ | / * ----------\ | /----------- * | | | * --------------------- * | Broadcast channel | * --------------------- * * The application interface (upper) interface has two functions: * marshal: format a value to be sent on the channel. * The value to broadcast and a copy is saved at every * marshaler. * unmarshal: handle a value sent on the communication * channel. The value is returned as the result of * this function. * * The membership to the communication channel is allowed to change. * We require these invariants: * 1. All broadcast messages are received in the same order * 2. The channel membership is known to all marshalers * * The view management is handled in these phases: * 1. Initially, a marshaler is the only member of its communication channel * 2. Channels may split and merge. * These are the phases of the membership change: * * a. When the membership is going to change, all marshalers that * are involved are notified with the "block" function. If the * client is threaded, all "marshal" calls are blocked. * b. When the membership is determined, all marshalers are notified with * the number of channel members. Each one broadcasts a view_membership * message of all marshalers it has known in the past. * c. When a marshaler receives all the view_membership messages, it * determines which values it is going to act as "owner" for, * and it broadcasts a view_summary of all the values. * d. When a marshaler receives a view_summary, it broadcasts * a view_additional message with all the values the originator * did not know about. * d. When all marshalers have received all summaries and additional * values, the global state is consistent, and the view change * is complete. * The view change is not required to complete: another view change may start * before the current change is complete. the new view change cancels the old * change. In general, marshaling is blocked wheil the view change is coccurring. * * There is also distributed garbage collection. A client can initiate * garbage collection at any time except during a view change. Here are the * phases: * a. The "gc" function runs the collector locally, * and broadcasts a gc_notify message that summarizes * the values that have been collected. * b. When a remote marshaler receives the notification, * it sends a gc_response with the objects that it does * not want to be collected. * c. When the originating marshaler gets responses from * all remote marshalers, it cancels collection of values * in the responses, and it broadcasts a gc_update with * a list of values that _really_ should be collected. * The garbage collector may be interrupted at any time by a view change. * Also, marshaling is not halted by the garbage collector, except during * the function calls themselves. *) module type MarshalSig = sig (************************************************************************ * TYPES * ************************************************************************) (* * Marshal objects. The argument type is the type of objects * being marshaled. *) type 'a t (* * Values are marshaled to/from buffers. *) type buf type wbuf type rbuf (************************************************************************ * MANAGEMENT * ************************************************************************) (* * Create a new instance of the marshaler. *) val create : unit -> 'a t (************************************************************************ * MARSHALING * ************************************************************************) type marshal_msg (* * Share the value, marshaling a message to the buffer. *) val marshal : 'a t -> wbuf -> 'a -> marshal_msg (* * Handle a marshal message. *) val unmarshal : 'a t -> rbuf -> marshal_msg -> 'a (* * Publish a value at a manifest name. * This is meant to be used for values that are already * know about before the marshaler was created. These * are "manifest" values: every instance of the marshaler * should publish the same values. * * Should this be a global function? *) val register : 'a t -> string -> 'a -> unit (************************************************************************ * GARBAGE COLLECTION * ************************************************************************) type gc_notice type gc_response type gc_update (* * Invoke the garbage collector. val gc : 'a t -> gc_notice *) (* * Handle a collection message. * The response should be passed back to the sender of the message, * not broadcast. *) val handle_gc_notice : 'a t -> gc_notice -> gc_response (* * Handle a gc response. * When all responses have been received, the marshaler * generates a summary of the items that are _really_ * removed. *) val handle_gc_response : 'a t -> gc_response -> gc_update option (* * Handle the update. *) val handle_gc_update : 'a t -> gc_update -> unit (************************************************************************ * GROUP MEMBERSHIP * ************************************************************************) type view_membership type view_summary type view_additional_summary type view_additional (* * A view change is starting. * This call is optional. *) val block : 'a t -> unit (* * Initiate a new view. * This generates a list of all the marshalers this marshaler * has ever known about. *) val start_view : 'a t -> view_membership (* * Handle a notification of the view membership from one of the * marshalers. When all remote marshalers have responded, the marshaler * generates a summary of the values it is responsible for. *) val handle_view_membership : 'a t -> view_membership -> view_summary option (* * Handle a view summary. If the summary needs to be augmented, this * marshaler generates a summary of additional values it would like * to provide. This should be broadcast. *) val handle_view_summary : 'a t -> view_summary -> view_additional_summary (* * Once all these additional values are recieved, the marshaler * broadcasts the additional values. *) val handle_view_additional_summary : 'a t -> view_additional_summary -> view_additional option (* * Once all the additional values have been received, the marshaler is * free to continue. *) val handle_view_additional : 'a t -> view_additional -> unit end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/system/lm_marshal_shared.mli0000664000152300015230000000306610464477010023216 0ustar jyhjyh(* * Marshal an object using the Obj module to access the * data. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* open Lm_marshal_sig module Marshal : MarshalSig *) (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/system/lm_marshal_buf.ml0000664000152300015230000002661610464477010022361 0ustar jyhjyh(* * Implement the shared buffer. * If ENSEMBLE is defined, we use that implementation. * Values are always saved along 4-byte boundaries. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_marshal_sig module Buf = struct (* * This is the allocation unit size. *) let block_size = 65536 (* * The unit size. *) let word_size = 4 (* IFDEF ENSEMBLE THEN (* * We allocate in Iovec chunks, and we need to keep a subrange. *) type wbuf = { mutable wbuf_buf : string; mutable wbuf_index : int; mutable wbuf_stop : int; mutable wbuf_buffers : Iovecl.t list } type buf = Iovecl.t type rbuf = { mutable rbuf_buf : string; mutable rbuf_index : int; mutable rbuf_stop : int; mutable rbuf_iovecs : Iovec.t list; mutable rbuf_buffers : Iovecl.t } (* * We need an Mbuf to allocate iovec's. *) let mbuf = Mbuf.create "Shared_buf.Buf" (8 * block_size) block_size (* * Create a new buffer. * Allocate the first iovec. *) let create () = let alloc buf ofs len = (buf, ofs), block_size in let vecl, (buf, ofs) = Mbuf.alloc_fun "Shared_buf.buf.create" mbuf alloc in { wbuf_buf = buf; wbuf_index = ofs; wbuf_stop = ofs + block_size; wbuf_buffers = [vecl] } let flush_write info = let alloc buf ofs len = (buf, ofs), block_size in let vecl, (buf, ofs) = Mbuf.alloc_fun "Shared_buf.buf.flush_write" mbuf alloc in info.wbuf_buffers <- info.wbuf_buf :: info.wbuf_buffers; info.wbuf_buf <- buf; info.wbuf_index <- ofs; info.wbuf_stop <- ofs + block_size (* * Close the buffer and return the Iovecl. *) let to_static = function { wbuf_start = start; wbuf_index = index; wbuf_buffers = h :: t } -> let vecl = append_buffers (Iovecl.sub "Shared_buf.Buf.close" h 0 (Buf.ceil index) :: t) in Iovecl.free "Shared_buf.Buf.close" h; vecl (* * Create the read-only buffer. *) let to_read vecl = match Arrayf.to_list ((Obj.magic vecl) : Iovec.t Arrayf.t) with h :: t -> let read buf ofs len = ((Obj.magic buf) : string), ofs, len in let buf, ofs, len = Iovec.read "Shared_buf.Buf.read" h read in { rbuf_buf = buf; rbuf_index = ofs; rbuf_stop = ofs + len; rbuf_iovecs = t; rbuf_buffers = vecl } | [] -> { rbuf_buf = ""; rbuf_index = 0; rbuf_stop = 0; rbuf_iovecs = []; rbuf_buffers = vecl } (* * Flush the current read buffer. *) let flush_read info = match info.rbuf_iovecs with h :: t -> let read buf ofs len = ((Obj.magic buf) : string), ofs, len in let buf, ofs, len = Iovec.read "Shared_buf.Buf.flush_read" h read in info.rbuf_buf <- buf; info.rbuf_index <- ofs; info.rbuf_stop <- ofs + len; info.rbuf_iovecs <- t | [] -> raise (Failure "flush_read") (* * Free the read buffer. *) let free { rbuf_buffers = vecl } = Iovecl.free "Shared_buf.Buf.free" vecl ELSE (* ENSEMBLE undefined *) *) (* * If not Ensemble, then we just create a simplified * form of the buffers. *) type wbuf = { mutable wbuf_buf : string; mutable wbuf_index : int; mutable wbuf_stop : int; mutable wbuf_buffers : string list } type buf = string list type rbuf = { mutable rbuf_buf : string; mutable rbuf_index : int; mutable rbuf_stop : int; mutable rbuf_buffers : string list } (* * Create a new buffer. *) let create () = { wbuf_buf = String.create block_size; wbuf_index = 0; wbuf_stop = 0; wbuf_buffers = [] } let flush_write info = info.wbuf_buffers <- info.wbuf_buf :: info.wbuf_buffers; info.wbuf_buf <- String.create block_size; info.wbuf_index <- 0 (* * Static buffer. *) let to_static { wbuf_buf = buf; wbuf_buffers = bufs } = List.rev (buf :: bufs) (* * Convert to a read buffer. *) let to_read = function h :: t -> { rbuf_buf = h; rbuf_index = 0; rbuf_stop = String.length h; rbuf_buffers = t } | [] -> { rbuf_buf = ""; rbuf_index = 0; rbuf_stop = 0; rbuf_buffers = [] } (* * Flush the current read buffer. *) let flush_read info = match info.rbuf_buffers with h :: t -> info.rbuf_buf <- h; info.rbuf_index <- 0; info.rbuf_stop <- String.length h; info.rbuf_buffers <- t | [] -> raise (Invalid_argument "read") (* * Free the buffer. *) let free _ = () (* ENDIF *) (* * Write a string to the buffer. *) let rec write info buf off len = let { wbuf_buf = buf'; wbuf_index = start; wbuf_stop = stop } = info in let amount = stop - start in if len <= amount then begin (* Normal cas *) String.blit buf off buf' start len; info.wbuf_index <- start + len end else begin (* Write in multiple fragments *) String.blit buf off buf' start amount; flush_write info; write info buf (off + amount) (len - amount) end (* * Write an integer. * The LSB is set to 1. *) let rec write_int info i = let { wbuf_buf = buf; wbuf_index = start; wbuf_stop = stop } = info in if start = stop then begin flush_write info; write_int info i end else begin buf.[start] <- Char.chr ((i lsr 23) land 255); buf.[start + 1] <- Char.chr ((i lsr 15) land 255); buf.[start + 2] <- Char.chr ((i lsr 7) land 255); buf.[start + 3] <- Char.chr (((i lsl 1) land 255) + 1); info.wbuf_index <- start + word_size end (* * Write an integer. * The LSB is set to 10. *) let rec write_int2 info tag i = let { wbuf_buf = buf; wbuf_index = start; wbuf_stop = stop } = info in if start = stop then begin flush_write info; write_int info i end else begin buf.[start] <- Char.chr ((i lsr 21) land 255); buf.[start + 1] <- Char.chr ((i lsr 13) land 255); buf.[start + 2] <- Char.chr ((i lsr 5) land 255); buf.[start + 3] <- Char.chr (((i lsl 3) land 255) + (tag lsl 2) + 2); info.wbuf_index <- start + word_size end (* * Write a four-byte word. *) let rec write_tag info tag i = let { wbuf_buf = buf; wbuf_index = start; wbuf_stop = stop } = info in if start = stop then begin flush_write info; write_tag info tag i end else begin buf.[start] <- Char.chr tag; buf.[start + 1] <- Char.chr ((i lsr 14) land 255); buf.[start + 2] <- Char.chr ((i lsr 6) land 255); buf.[start + 3] <- Char.chr ((i lsl 2) land 255); info.wbuf_index <- start + word_size end (* * Read a string from the buffer. *) let rec read info buf off len = let { rbuf_buf = buf'; rbuf_index = start; rbuf_stop = stop } = info in let amount = stop - start in if len <= amount then begin (* Usual case *) String.blit buf' start buf off len; info.rbuf_index <- start + len end else begin (* Fragment the read *) String.blit buf' start buf off amount; flush_read info; read info buf (off + amount) (len - amount) end (* * Check if it is a header word. *) let rec read_value_type info = let { rbuf_buf = buf; rbuf_index = start; rbuf_stop = stop } = info in if start = stop then begin flush_read info; read_value_type info end else match (Char.code buf.[start + 3]) land 3 with 0 -> TaggedValue | 2 -> Int2Value | _ -> IntValue (* * Read the int. *) let read_int info = let { rbuf_buf = buf; rbuf_index = start } = info in let i = ((Char.code buf.[start]) lsl 23) + ((Char.code buf.[start + 1]) lsl 15) + ((Char.code buf.[start + 2]) lsl 7) + ((Char.code buf.[start + 3]) lsr 1) in info.rbuf_index <- start + word_size; i (* * Read the int2. *) let read_int2_tag info = ((Char.code info.rbuf_buf.[info.rbuf_index + 3]) lsr 2) land 1 let read_int2_value info = let { rbuf_buf = buf; rbuf_index = start } = info in let i = ((Char.code buf.[start]) lsl 21) + ((Char.code buf.[start + 1]) lsl 13) + ((Char.code buf.[start + 2]) lsl 5) + ((Char.code buf.[start + 3]) lsr 3) in info.rbuf_index <- start + word_size; i (* * Read the tag. *) let read_value_tag info = let { rbuf_buf = buf; rbuf_index = start } = info in Char.code buf.[start] let read_value_value info = let { rbuf_buf = buf; rbuf_index = start } = info in let i = ((Char.code buf.[start + 1]) lsl 14) + ((Char.code buf.[start + 2]) lsl 6) + ((Char.code buf.[start + 3]) lsr 2) in info.rbuf_index <- start + word_size; i end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/system/Files0000664000152300015230000000011510240573313020016 0ustar jyhjyhSYSTEM_FILES[] = lm_marshal_sig lm_marshal_buf lm_marshal_shared omake-0.9.8.5/src/libmojave-external/unix/0000775000152300015230000000000010660137261016477 5ustar jyhjyhomake-0.9.8.5/src/libmojave-external/unix/lm_uname.mli0000664000152300015230000000254210456222231020775 0ustar jyhjyh(* * Uname function. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) val sysname : string val nodename : string val release : string val version : string val machine : string (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_dll.ml0000664000152300015230000004151010626354411020275 0ustar jyhjyh(* * Dynamic link libraries. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_string_set open Lm_symbol open Lm_printf (* * Flags when a library is opened. *) type open_flag = RTLD_LAZY | RTLD_NOW | RTLD_GLOBAL type open_flags = open_flag list (* * The info loaded from the DLL. *) (* * An object is represented as an array of * named values. * * Runtime object do not include name or type information. * They are just an array where the first entry is the name * of the object. * * The type names use C notation, where all typedefs have * been unfolded. * * The values associated with each of the following types * are in the normal format. * void : the value is () * int : the value is an integer * char : same as int * char * : the value is a string * float : the value is a float * double : same as float * object : the value is an array of values, * where the first element is the name of * the object (so you can get the type information). * * Values in any other type, like the following, are C pointers. * You should treat these values as abstract, and you should carry * aroun * void * * struct foo * * void (*)(int, float) *) *) type dll_object_field_type = { object_field_name : symbol; object_field_type : symbol } type dll_object_type = { object_name : symbol; object_fields : dll_object_field_type array } (* * Enumerations associate integers with values. *) type dll_enum_field = { enum_field_name : symbol; enum_field_value : Nativeint.t } type dll_enum = { enum_name : symbol; enum_fields : dll_enum_field array } (* * A function has a name, and type information for * the arguments and the result. * * The value itself is abstract. *) type 'a dll_value = { value_name : symbol; value_fun : 'a; value_arg_types : symbol array; value_result_type : symbol } (* * All the info from the DLL. *) type 'a dll = { dll_objects : dll_object_type array; dll_enums : dll_enum array; dll_values : 'a dll_value array; dll_globals : Obj.t } (* * Values to pass to the C functions. *) type dll_val = ValUnit | ValBool of bool | ValInt of int | ValFloat of float | ValString of string | ValObject of symbol * Obj.t array | ValAbstract of symbol * Obj.t (* * The raw info loaded from static library. *) type dll_export (* * Types for C values. *) type t_void = unit type t_char = char type t_int = Nativeint.t type t_float = float type t_double = float type t___builtin_va_list type 'a dll_pointer type ('args, 'res) dll_function type dll_object external p_coerce : 'a dll_pointer -> 'b dll_pointer = "%identity" (* * For creating tuples from singleton values. *) type 'a dll_singleton_tuple = SingletonTuple of 'a (* * The DLL interface. *) module type DllSig = sig type t type dll_fun type dll_sym (* * Open the DLL. *) val opendll : string array -> string -> open_flags -> t option (* * Open the static info. *) val open_static : dll_export -> t (* * Get the value of an enum. * This is mainly for use by generated code. *) val get_enum : t -> int -> int -> Nativeint.t (* * Get the global variables. *) val get_globals : t -> Obj.t (* * Get the info of all the values in the DLL. *) val info : t -> dll_fun dll (* * Use this function if you want to handle callbacks. * Eventually, it would be good to make the return value general. *) val set_callback_handler : t -> (Obj.t -> Nativeint.t) -> unit (* * Apply a function. This should be reasonably safe, as long * as the DLL has reported its type information correctly. *) val apply : dll_fun -> dll_val array -> dll_val (* This is raised if an argument can't be coerced to the right type *) exception TypeError of symbol * dll_val (* This is raised if the number of arguments doesn't match *) exception ArityMismatch of dll_fun * int * int (* * !!!WARNING!!! * * The following function bypasses the type checking * and calls the DLL function directly. This is for clients * that want to do the typechecking themselves. The performance * is somewhat better. *) val unsafe_get : dll_fun -> dll_sym val unsafe_apply : dll_sym -> Obj.t array -> Obj.t (* * We also need NULL pointers directly. *) val null : Obj.t val is_null : 'a -> bool val p_NULL : 'a dll_pointer val pointer_of_int : int -> t_void dll_pointer val int_of_pointer : t_void dll_pointer -> int val pointer_of_nativeint : Nativeint.t -> t_void dll_pointer val nativeint_of_pointer : t_void dll_pointer -> Nativeint.t (* * Allocation on the C heap. *) val malloc : int -> 'a dll_pointer val free : 'a dll_pointer -> unit val pointer_array : 'a dll_pointer array -> 'a dll_pointer dll_pointer val strdup : string -> t_char dll_pointer val pointer_of_string : string -> t_char dll_pointer val string_of_pointer : t_char dll_pointer -> string val pointer_of_string_array : string array -> t_char dll_pointer dll_pointer val string_array_of_pointer : t_char dll_pointer dll_pointer -> string array end;; module Dll : DllSig = struct (* The abstract type of DLL values *) type dll_sym (* The function to set the callback handler *) type handler_count = int type set_handlers (* Function with type information *) type dll_fun = dll_sym dll_value (* The DLL info *) type t = { dll_info : dll_fun dll; dll_handler_count : handler_count; dll_set_handlers : set_handlers } (* * The raw information returned by the DLL. *) type raw_object_field = { raw_object_field_name : string; raw_object_field_type : string } type raw_object = { raw_object_name : string; raw_object_fields : raw_object_field array } type raw_enum_field = { raw_enum_field_name : string; raw_enum_field_value : Nativeint.t } type raw_enum = { raw_enum_name : string; raw_enum_fields : raw_enum_field array } type raw_value = { raw_value_name : string; raw_value_fun : dll_sym; raw_value_arg_types : raw_object_field array; raw_value_result_type : string } type raw_info = Export of raw_object array * raw_enum array * raw_value array * handler_count * set_handlers * Obj.t | NoExport (* This is raised if an argument can't be coerced to the right type *) exception TypeError of symbol * dll_val (* This is raised if the number of arguments doesn't match *) exception ArityMismatch of dll_fun * int * int (************************************************************************ * Open the DLL. *) external dlopen : string array -> string -> open_flags -> raw_info = "lm_dlopen";; (* * Convert the DLL info. *) let build_object_field info = let { raw_object_field_name = name; raw_object_field_type = ty } = info in { object_field_name = Lm_symbol.add name; object_field_type = Lm_symbol.add ty } let build_object info = let { raw_object_name = name; raw_object_fields = fields } = info in { object_name = Lm_symbol.add name; object_fields = Array.map build_object_field fields } let build_enum_field info = let { raw_enum_field_name = name; raw_enum_field_value = i } = info in { enum_field_name = Lm_symbol.add name; enum_field_value = i } let build_enum info = let { raw_enum_name = name; raw_enum_fields = fields } = info in { enum_name = Lm_symbol.add name; enum_fields = Array.map build_enum_field fields } let pp_print_string_array buf sl = Array.iter (fun s -> fprintf buf " %s," s) sl let build_value info = let { raw_value_name = name; raw_value_fun = sym; raw_value_arg_types = arg_types; raw_value_result_type = result_type } = info in let info = { value_name = Lm_symbol.add name; value_fun = sym; value_arg_types = Array.map (fun field -> Lm_symbol.add field.raw_object_field_type) arg_types; value_result_type = Lm_symbol.add result_type } in { info with value_fun = info } let build_dll objects enums values handler_count set_handlers globals = let objects = Array.map build_object objects in let enums = Array.map build_enum enums in let values = Array.map build_value values in let info = { dll_objects = objects; dll_enums = enums; dll_values = values; dll_globals = globals } in { dll_info = info; dll_handler_count = handler_count; dll_set_handlers = set_handlers } (* * Open and format the DLL. *) let opendll path name flags = match dlopen path name flags with Export (objects, enums, values, handler_count, set_handlers, globals) -> Some (build_dll objects enums values handler_count set_handlers globals) | NoExport -> None let info x = x.dll_info (************************************************************************ * Static version. *) external dlopen_static : dll_export -> raw_info = "lm_dlopen_static" let open_static info = match dlopen_static info with Export (objects, enums, values, handler_count, set_handlers, globals) -> build_dll objects enums values handler_count set_handlers globals | NoExport -> raise (Failure "Lm_dll.open_static") let get_enum { dll_info = info } i j = info.dll_enums.(i).enum_fields.(j).enum_field_value let get_globals { dll_info = info } = info.dll_globals (************************************************************************ * Set the callback handlers, all to the same value. * * Note: ML files wil not usually use this, preferring * to install multiple callbacks directly. *) external set_handlers : set_handlers -> (Obj.t -> Nativeint.t) array -> unit = "lm_set_callback_handler" let set_callback_handler info f = let { dll_handler_count = handler_count; dll_set_handlers = info } = info in set_handlers info (Array.create handler_count f) (************************************************************************ * Unsafe application. *) let unsafe_get f = f.value_fun external unsafe_apply : dll_sym -> Obj.t array -> Obj.t = "lm_dlapply";; (* * Null pointers. *) external get_null : unit -> Obj.t = "lm_dlnull";; let null = get_null () let p_NULL = Obj.magic null let is_null x = Obj.repr x == null external pointer_of_int : int -> t_void dll_pointer = "lm_dlpointer_of_int" external int_of_pointer : t_void dll_pointer -> int = "lm_dlint_of_pointer" external pointer_of_nativeint : Nativeint.t -> t_void dll_pointer = "lm_dlpointer_of_nativeint" external nativeint_of_pointer : t_void dll_pointer -> Nativeint.t = "lm_dlnativeint_of_pointer" (* * Allocation on the C heap. *) external malloc : int -> 'a dll_pointer = "lm_dll_malloc" external free : 'a dll_pointer -> unit = "lm_dll_free" external pointer_array : 'a dll_pointer array -> 'a dll_pointer dll_pointer = "lm_dll_pointer_array" external strdup : string -> t_char dll_pointer = "lm_dll_strdup" external pointer_of_string : string -> t_char dll_pointer = "lm_dll_strdup" external string_of_pointer : t_char dll_pointer -> string = "lm_dll_string_of_pointer" external pointer_of_string_array : string array -> t_char dll_pointer dll_pointer = "lm_dll_pointer_of_string_array" external string_array_of_pointer : t_char dll_pointer dll_pointer -> string array = "lm_dll_string_array_of_pointer" (************************************************************************ * Function calls. *) (* * Type casting. *) let void_of_value ty v = Obj.repr () let int_of_value ty v = let v = match v with ValBool true -> 1 | ValUnit | ValBool false -> 0 | ValInt i -> i | ValFloat x -> int_of_float x | ValString s -> (try int_of_string s with Failure _ -> raise (TypeError (ty, v))) | ValObject _ | ValAbstract _ -> raise (TypeError (ty, v)) in Obj.repr v let float_of_value ty v = let x = match v with ValBool true -> 1.0 | ValUnit | ValBool false -> 0.0 | ValInt i -> float_of_int i | ValFloat x -> x | ValString s -> (try float_of_string s with Failure _ -> raise (TypeError (ty, v))) | ValObject _ | ValAbstract _ -> raise (TypeError (ty, v)) in Obj.repr x let string_of_value ty v = let s = match v with ValUnit -> "" | ValBool b -> string_of_bool b | ValInt i -> string_of_int i | ValFloat x -> string_of_float x | ValString s -> s | ValObject _ | ValAbstract _ -> raise (TypeError (ty, v)) in Obj.repr s let c_info = ["void", void_of_value; "int", int_of_value; "float", float_of_value; "double", float_of_value; "char *", string_of_value] let c_table = List.fold_left (fun table (s, f) -> SymbolTable.add table (Lm_symbol.add s) f) SymbolTable.empty c_info let c_of_value ty v = try (SymbolTable.find c_table ty) ty v with Not_found -> match v with ValAbstract (ty', v) when Lm_symbol.eq ty' ty -> Obj.repr v | _ -> raise (TypeError (ty, v)) (* * Type casting. *) let value_of_void v = ValUnit let value_of_int v = ValInt (Obj.magic v) let value_of_float v = ValFloat (Obj.magic v) let value_of_string v = ValString (Obj.magic v) let c_info = ["void", value_of_void; "int", value_of_int; "float", value_of_float; "double", value_of_float; "char *", value_of_string] let c_table = List.fold_left (fun table (s, f) -> SymbolTable.add table (Lm_symbol.add s) f) SymbolTable.empty c_info let value_of_c ty v = try (SymbolTable.find c_table ty) v with Not_found -> ValAbstract (ty, v) (* * Now the application. *) let apply f args = let { value_fun = sym; value_arg_types = arg_types; value_result_type = result_type } = f in let len1 = Array.length arg_types in let len2 = Array.length args in let () = if len1 <> len2 then raise (ArityMismatch (f, len1, len2)) in let args = Array.mapi (fun i v -> c_of_value (Array.unsafe_get arg_types i) v) args in let x = unsafe_apply sym args in value_of_c result_type x end;; (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_inet.mli0000664000152300015230000000433510464477010020637 0ustar jyhjyh(* * Simplfiied socket interface. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) type server type client (* * Access to descriptors. *) val file_descr_of_client : client -> Unix.file_descr (* * Create a server. * The argument is the port number. * If the port is not set, an arbitrary port is chosen. *) val serve : int option -> server (* * Close the server. *) val close_server : server -> unit (* * Accept a connection on the server port. *) val accept : server -> client (* * Create a connection to a server. *) val connect : string -> int -> client (* * Get the local info about the server. *) val get_server_host : server -> string * int (* * Get the local info about the client. *) val get_client_host : client -> string * int (* * Get the info about the peer. *) val get_client_peer : client -> string * int (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_notify.ml0000664000152300015230000002461310647751075021051 0ustar jyhjyh(* * File-change notification services. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltifornia Institute of Technology, * and HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_debug open Lm_printf open Lm_map_sig let debug_notify = create_debug { debug_name = "notify"; debug_description = "Print the information on FAM events."; debug_value = false } (* * Tables. *) module IntCompare = struct type t = int let compare = (-) end module StringCompare = struct type t = string let compare = Pervasives.compare end module IntTable = Lm_map.LmMake (IntCompare) module StringTable = Lm_map.LmMake (StringCompare) (* * The state of the notifier. *) type request = int type job = { job_dir : string; job_path : Lm_filename_util.root * string list; job_recursive : bool; job_request : request; mutable job_running : bool } type code = Changed | Deleted | StartExecuting | StopExecuting | Created | Moved | Acknowledge | Exists | EndExist | DirectoryChanged type notify_event = { ne_request : request; ne_name : string; ne_code : code } type event = { notify_code : code; notify_name : string } type info type t = { notify_info : info; notify_fd : Unix.file_descr option; mutable notify_dirs : request StringTable.t; mutable notify_requests : job IntTable.t } (* * C stubs. *) external notify_enabled : unit -> bool = "om_notify_enabled" external notify_open : unit -> info = "om_notify_open" external notify_close : info -> unit = "om_notify_close" external notify_fd : info -> Unix.file_descr = "om_notify_fd" external notify_monitor_directory : info -> string -> bool -> request = "om_notify_monitor_directory" external notify_suspend : info -> request -> unit = "om_notify_suspend" external notify_resume : info -> request -> unit = "om_notify_resume" external notify_cancel : info -> request -> unit = "om_notify_cancel" external notify_pending : info -> bool = "om_notify_pending" external notify_next_event : info -> notify_event = "om_notify_next_event";; (************************************************************************ * Utilities *) (* * Canonical name for a directory. *) let name_of_dir dir = Lm_filename_util.normalize_string dir let path_of_name name = match Lm_filename_util.filename_path name with Lm_filename_util.AbsolutePath (root, path) -> root, path | Lm_filename_util.RelativePath _ -> raise (Invalid_argument ("Lm_notify.path_of_name: " ^ name ^ ": all paths must be absolute")) (* * Check if a filename is part of a directory tree. *) let is_path_prefix (root1, path1) (root2, path2) = let rec is_prefix l1 l2 = match l1, l2 with h1 :: l1, h2 :: l2 -> h1 = h2 && is_prefix l1 l2 | [], _ -> true | _, [] -> false in root1 = root2 && is_prefix path1 path2 let is_monitored_name requests name = let new_path = path_of_name name in IntTable.exists (fun _ job -> let { job_path = path; job_recursive = recursive } = job in new_path = path || (recursive && is_path_prefix path new_path)) requests (************************************************************************ * Notify API. *) (* * Debugging. *) let string_of_code code = match code with Changed -> "Changed" | Deleted -> "Deleted" | StartExecuting -> "StartExecuting" | StopExecuting -> "StopExecuting" | Created -> "Created" | Moved -> "Moved" | Acknowledge -> "Acknowledge" | Exists -> "Exists" | EndExist -> "EndExists" | DirectoryChanged -> "DirectoryChanged" (* * Is this enabled? *) let enabled = notify_enabled () (* * Open a connection. *) let create () = let info = notify_open () in let fd = try let fd = notify_fd info in if !debug_notify then eprintf "Lm_notify.create: fd = %i@." (Lm_unix_util.int_of_fd fd); Some fd with Failure _ -> if !debug_notify then eprintf "Lm_notify.create: no fd @."; None in { notify_info = info; notify_fd = fd; notify_dirs = StringTable.empty; notify_requests = IntTable.empty } (* * Close the connection. *) let close notify = notify_close notify.notify_info (* * Get the file descriptor. *) let file_descr { notify_fd = fd } = fd (* * Monitoring. *) let monitor notify dir recursive = let { notify_info = info; notify_dirs = dirs; notify_requests = requests } = notify in let name = name_of_dir dir in if not (is_monitored_name requests name) then begin if !debug_notify then eprintf "Lm_notify.monitor: %s, recursive: %b@." name recursive; let request = notify_monitor_directory info dir recursive in let job = { job_dir = dir; job_path = path_of_name name; job_recursive = recursive; job_running = true; job_request = request } in let dirs = StringTable.add dirs name request in let requests = IntTable.add requests request job in notify.notify_dirs <- dirs; notify.notify_requests <- requests end (* * Suspend notifications. *) let suspend notify dir = let { notify_info = info; notify_dirs = dirs; notify_requests = requests } = notify in let dir = name_of_dir dir in let request = try StringTable.find dirs dir with Not_found -> raise (Invalid_argument "suspend_dir") in let job = IntTable.find requests request in if job.job_running then begin notify_suspend info job.job_request; job.job_running <- false end let suspend_all notify = let { notify_info = info; notify_requests = requests } = notify in IntTable.iter (fun _ job -> if job.job_running then begin notify_suspend info job.job_request; job.job_running <- false end) requests let resume notify dir = let { notify_info = info; notify_dirs = dirs; notify_requests = requests } = notify in let dir = name_of_dir dir in let request = try StringTable.find dirs dir with Not_found -> raise (Invalid_argument "resume_dir") in let job = IntTable.find requests request in if not job.job_running then begin notify_resume info job.job_request; job.job_running <- true end let resume_all notify = let { notify_info = info; notify_requests = requests } = notify in IntTable.iter (fun _ job -> if not job.job_running then begin notify_resume info job.job_request; job.job_running <- true end) requests (* * Cancel a request. *) let cancel notify dir = let { notify_info = info; notify_dirs = dirs; notify_requests = requests } = notify in let dir = name_of_dir dir in let request = try StringTable.find dirs dir with Not_found -> raise (Invalid_argument "cancel_dir") in let job = IntTable.find requests request in notify_cancel info job.job_request; notify.notify_dirs <- StringTable.remove dirs dir; notify.notify_requests <- IntTable.remove requests request let cancel_all notify = let { notify_info = info; notify_requests = requests } = notify in IntTable.iter (fun request _ -> notify_cancel info request) requests; notify.notify_dirs <- StringTable.empty; notify.notify_requests <- IntTable.empty (* * Check for a pending event. *) let pending notify = let pending = notify_pending notify.notify_info in if !debug_notify then eprintf "Lm_notify.pending: %s@." (if pending then "true" else "false"); pending (* * Get the next event. *) let next_event notify = if !debug_notify then eprintf "Lm_notify.next_event: starting@."; let { ne_request = request; ne_name = name; ne_code = code } = notify_next_event notify.notify_info in if !debug_notify then eprintf "Lm_notify.next_event: received event for name %s, code %s@." name (string_of_code code); let job = try IntTable.find notify.notify_requests request with Not_found -> raise (Invalid_argument "Lm_notify.next_event: unknown request") in let filename = if Filename.is_relative name then Filename.concat job.job_dir name else name in if !debug_notify then eprintf "Lm_notify.next_event: filename is %s@." filename; { notify_code = code; notify_name = filename } (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_mmap_pipe.ml0000664000152300015230000003335410464477010021501 0ustar jyhjyh(* * A pipe implemented with a memory-mapped file. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_printf open Lm_debug let debug_pipe = create_debug (**) { debug_name = "pipe"; debug_description = "Debug shared memory pipe operations"; debug_value = false } let eflush out = output_char out '\n'; flush out (************************************************************************ * TYPES * ************************************************************************) (* * The pipe has three objects: * 1. a file, where the data is written * 2. a socket, for waking up the peer process * * The file is divided into two halves, * one for reading, and one for writing. * * To send a value: * 1. Wait until the write buffer is empty * 2. Write the value * 3. Send a char on the socket * To receive a value: * 1. Wait until the read buffer has a value * 2. Unmarshal the value from the read buffer * 3. Send a char on the socket * * The format of a buffer entry: * full (4 byte): buffer contains a value if fourth byte is nonzero * code (4 bytes): a number associated with the entry * name_length (4 bytes): length of the name string * name (string): a string for the entry * data (marshaled value): the data associated with the entry *) type t = { mmap_block_size : int; mmap_read_offset : int; mmap_write_offset : int; mmap_data : string; mmap_file : Lm_mmap.t; mmap_server : Unix.file_descr option; mutable mmap_socket : Unix.file_descr option } (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Parameters. *) let max_servers = 16 let sock_suffix = ".sock" let buffer_suffix = ".buffer" (* * Offsets into the buffers. *) let full_offset = 0 let code_offset = 4 let data_length_offset = 8 let name_length_offset = 12 let name_offset = 16 (* * Four-byte boundaries. *) let ceil_word i = (i + 3) land (lnot 3) (* * Integer operations on string buffers. *) let get_int buf offset = ((Char.code buf.[offset]) lsl 24) lor ((Char.code buf.[offset + 1]) lsl 16) lor ((Char.code buf.[offset + 2]) lsl 8) lor (Char.code buf.[offset + 3]) let set_int buf offset code = buf.[offset] <- Char.chr ((code lsr 24) land 255); buf.[offset + 1] <- Char.chr ((code lsr 16) land 255); buf.[offset + 2] <- Char.chr ((code lsr 8) land 255); buf.[offset + 3] <- Char.chr (code land 255) (* * Character buffer for communication on the socket. *) let char_buf = String.create 1 (* * Search for a free server. * We search for a free file in the directory * specified by: * First, stat the socket. * If it does not exist, then we have a new location. * If it does exist, then try connecting: * If the connect fails, the server is dead, and we use the file. * If the connect succeeds, the server is alive. * Send it a cancelation char, then try the next file. *) let search_server dir = (* Make the directory in case it does not exist *) (try Unix.mkdir dir 511 with Unix.Unix_error _ -> ()); (* Search for a free port *) let rec search i = if i = max_servers then raise (Failure "Lm_mmap_pipe.search_server: too many running servers"); let filename = sprintf "%s/%d" dir i in let sockname = filename ^ sock_suffix in try let _ = Unix.LargeFile.stat sockname in (* File exists, so try connecting *) let sock = Unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in try Unix.connect sock (Unix.ADDR_UNIX sockname); (* Server is operational, so close the socket and keep trying *) Unix.close sock; search (succ i) with Unix.Unix_error _ -> (* No server here, so close the socket and return the file *) Unix.unlink sockname; Unix.close sock; filename with Unix.Unix_error _ -> (* No socket, so return this file *) filename in search 1 let create_server dir = let _ = Sys.signal Sys.sigpipe Sys.Signal_ignore in let filename = search_server dir in let bufname = filename ^ buffer_suffix in let sockname = filename ^ sock_suffix in let _ = if !debug_pipe then eprintf "Creating buffer %s%t" bufname eflush in let file = Lm_mmap.create bufname [Unix.O_RDWR; Unix.O_CREAT] 438 in let buf = Lm_mmap.to_string file in let _ = if !debug_pipe then eprintf "Buffer size: 0x%08x %d%t" (Obj.magic buf) (String.length buf) eflush in let length = (String.length buf) lsr 1 in let sock = Unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in let at_exit () = eprintf "Lm_mmap_pipe: cleaning up server sockets%t" eflush; (try Unix.unlink bufname with Unix.Unix_error _ -> ()); (try Unix.unlink sockname with Unix.Unix_error _ -> ()) in Pervasives.at_exit at_exit; Unix.bind sock (Unix.ADDR_UNIX sockname); Unix.listen sock 1; set_int buf (0 + full_offset) 0; set_int buf (length + full_offset) 0; { mmap_block_size = length; mmap_read_offset = length; mmap_write_offset = 0; mmap_data = buf; mmap_file = file; mmap_server = Some sock; mmap_socket = None } (* * Search for a free server. * Look through the directory, and try to connect to each of the servers. *) let search_client dir = let rec search i = if i = max_servers then raise (Failure "Lm_mmap_pipe: no servers are online"); let filename = sprintf "%s/%d" dir i in let sockname = filename ^ sock_suffix in let sock = Unix.socket Unix.PF_UNIX Unix.SOCK_STREAM 0 in try Unix.connect sock (Unix.ADDR_UNIX sockname); (* Connected to this server *) let count = Unix.read sock char_buf 0 1 in if count = 1 && char_buf.[0] <> Char.chr 0 then filename, sock else begin (* Server is already busy *) Unix.close sock; search (succ i) end with Unix.Unix_error _ -> Unix.close sock; search (succ i) in search 1 (* * Connect to the pipe. *) let create_client dir = let filename, sock = search_client dir in let bufname = filename ^ buffer_suffix in let file = Lm_mmap.create bufname [Unix.O_RDWR] 438 in let buf = Lm_mmap.to_string file in let _ = if !debug_pipe then eprintf "Buffer size: 0x%08x %d%t" (Obj.magic buf) (String.length buf) eflush in let length = (String.length buf) lsr 1 in { mmap_block_size = length; mmap_read_offset = 0; mmap_write_offset = length; mmap_data = buf; mmap_file = file; mmap_server = None; mmap_socket = Some sock } (* * Get the server socket for polling. *) let server_socket { mmap_server = server } = match server with Some sock -> sock | None -> raise (Invalid_argument "server_socket") (* * Get the client socket for polling. *) let client_socket { mmap_socket = client } = match client with Some sock -> sock | None -> raise (Invalid_argument "client_socket") let try_write sock buf = try let _ = Unix.write sock buf 0 1 in () with Unix.Unix_error _ -> () (* * Open a client connection for the server. *) let open_client mmap = match mmap with { mmap_server = Some server; mmap_socket = Some _ } -> (* Only one client is allowed *) let sock, _ = Unix.accept server in char_buf.[0] <- Char.chr 0; try_write sock char_buf; Unix.close sock; false | { mmap_server = Some server; mmap_socket = None; mmap_data = buf; mmap_block_size = length } -> (* We're free, so accept this client *) let sock, _ = Unix.accept server in char_buf.[0] <- Char.chr 1; try_write sock char_buf; set_int buf (0 + full_offset) 0; set_int buf (length + full_offset) 0; mmap.mmap_socket <- Some sock; true | _ -> raise (Invalid_argument "Lm_mmap_pipe.open_client") (* * Close the client socket (to disconnect the client). * This is only allowed for servers. *) let close_client mmap = eprintf "Lm_mmap_pipe: closing client%t" eflush; match mmap with { mmap_server = Some _; mmap_socket = Some sock; mmap_data = buf; mmap_block_size = length } -> set_int buf (0 + full_offset) 0; set_int buf (length + full_offset) 0; Unix.close sock; mmap.mmap_socket <- None | _ -> raise (Invalid_argument "close_client") (* * Wait for something to happen to the buffer. *) let block mmap = if !debug_pipe then eprintf "Lm_mmap_pipe.block: 0x%08x%t" (Obj.magic mmap.mmap_data) eflush; match mmap.mmap_socket with Some sock -> let count = Unix.read sock char_buf 0 1 in count = 1 | None -> raise (Invalid_argument "block") (* * Try to write a value into the buffer. * Return true iff successful. *) let write mmap code name raw_write = if !debug_pipe then eprintf "Lm_mmap_pipe.write: begin 0x%08x%t" (Obj.magic mmap.mmap_data) eflush; match mmap.mmap_socket with Some sock -> let { mmap_write_offset = woffset; mmap_data = buf; mmap_block_size = length } = mmap in let full = get_int buf (woffset + full_offset) in if full = 0 then let name_length = String.length name in let data_size = let offset = ceil_word (name_offset + name_length) in raw_write buf (woffset + offset) (length - offset) in let data_size = ceil_word data_size in set_int buf (woffset + code_offset) code; set_int buf (woffset + name_length_offset) name_length; String.blit name 0 buf (woffset + name_offset) name_length; set_int buf (woffset + data_length_offset) data_size; set_int buf (woffset + full_offset) 1; try_write sock buf; if !debug_pipe then eprintf "Lm_mmap_pipe.write: succeeded%t" eflush; true else begin if !debug_pipe then eprintf "Lm_mmap_pipe.write: failed%t" eflush; false end | None -> raise (Invalid_argument "Lm_mmap_pipe.write") (* * Try to read a value from a buffer. *) let read mmap raw_read = if !debug_pipe then eprintf "Lm_mmap_pipe.read: begin 0x%08x%t" (Obj.magic mmap.mmap_data) eflush; match mmap.mmap_socket with Some sock -> let { mmap_read_offset = roffset; mmap_data = buf } = mmap in let full = get_int buf (roffset + full_offset) in if full = 0 then begin if !debug_pipe then eprintf "Lm_mmap_pipe.read: failed%t" eflush; None end else let code = get_int buf (roffset + code_offset) in let name_length = get_int buf (roffset + name_length_offset) in let name = String.create name_length in let _ = String.blit buf (roffset + name_offset) name 0 name_length in let data_length = get_int buf (roffset + data_length_offset) in let offset = ceil_word (name_offset + name_length) in let data = raw_read buf (roffset + offset) data_length in set_int buf (roffset + full_offset) 0; try_write sock char_buf; if !debug_pipe then eprintf "Lm_mmap_pipe.read: succeeded%t" eflush; Some (code, name, data) | None -> raise (Invalid_argument "Lm_mmap_pipe.read") (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_uname.ml0000664000152300015230000000322510456222231020623 0ustar jyhjyh(* * Uname function. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) type uname = { uname_sysname : string; uname_nodename : string; uname_release : string; uname_version : string; uname_machine : string } external lm_uname : unit -> uname = "lm_uname" let uname = lm_uname () let sysname = uname.uname_sysname let nodename = uname.uname_nodename let release = uname.uname_release let version = uname.uname_version let machine = uname.uname_machine (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_fs_case_sensitive.mli0000664000152300015230000000251010613520274023362 0ustar jyhjyh(* * Detection of filesystem case-sensitivity * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2007 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Nathaniel Gray * @email{jyh@cs.caltech.edu} * @end[license] *) val available : bool val case_sensitive : string -> bool (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_id.mli0000664000152300015230000000242010464477010020265 0ustar jyhjyh(* * Unique identifiers. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) type t val create : unit -> t val string_of_id : t -> string (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/Files0000664000152300015230000000024010613520274017456 0ustar jyhjyhUNIX_FILES[] = lm_fs_case_sensitive lm_mmap lm_mmap_pipe lm_rusage lm_id lm_inet lm_uname lm_unix_util lm_notify lm_dll omake-0.9.8.5/src/libmojave-external/unix/lm_mmap.mli0000664000152300015230000000312210464477010020623 0ustar jyhjyh(* * Memory-mapped file. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) type t val create : string -> Unix.open_flag list -> Unix.file_perm -> t val close : t -> unit val to_string : t -> string (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_rusage.mli0000664000152300015230000000533710456222231021163 0ustar jyhjyh(* * Simple rusage interface. * Copyright (C) 2002 Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. *) (* rusage Data type that contains information on process resource usage. Currently a limited form of the full data structure returned by libc. This contains the user and system runtimes, broken down into seconds and microseconds, for the requested processes. *) type rusage_short = { ru_utime_sec : int; ru_utime_usec : int; ru_stime_sec : int; ru_stime_usec : int; } (* * A more complete version of rusage. *) type rusage = { ru_utime : float; ru_stime : float; ru_maxrss : int; ru_ixrss : int; ru_idrss : int; ru_isrss : int; ru_minflt : int; ru_majflt : int; ru_nswap : int; ru_inblock : int; ru_oublock : int; ru_msgsnd : int; ru_msgrcv : int; ru_nsignals : int; ru_nvcsw : int; ru_nivcsw : int } (* rusage_who Who to report statistics on: the current process, or the aggregate of all its children. *) type rusage_who = RUSAGE_SELF | RUSAGE_CHILDREN (*** Interface ***) (* getrusage_time who Returns the resource usage of the indicated process. *) val getrusage_time : rusage_who -> rusage_short (* * A more complete version of rusage. *) val getrusage : unit -> rusage (* setrlimit_time time Sets the resource CPU limit for the current process to the indicated time interval (in seconds). Note that this number can only be decreased from the current resource limit; it cannot be increased. *) val setrlimit_time : int -> unit (* total_rusage rusage Takes the rusage structure returned by getrusage_time, and computes the total compute time of the process. Returns the pair (sec, usec) which indicate the process total running time. *) val total_rusage : rusage_short -> int * int omake-0.9.8.5/src/libmojave-external/unix/lm_inet.ml0000664000152300015230000001164410464477010020467 0ustar jyhjyh(* * Simplfiied socket interface. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_debug let debug_inet = create_debug (**) { debug_name = "inet"; debug_description = "Display internet socket operations"; debug_value = false } (************************************************************************ * TYPES * ************************************************************************) (* * A server socket. *) type server = Unix.file_descr (* * A client socket. * Include the remote port, and the remote address. *) type client = Unix.file_descr * Unix.inet_addr * int (************************************************************************ * IMPLMENTATION * ************************************************************************) (* * Get the string name of an addr. *) let string_of_inet_addr addr = try (Unix.gethostbyaddr addr).Unix.h_name with Not_found -> Unix.string_of_inet_addr addr (* * Open a server socket bound to a particular address. *) let serve port = let fd = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in let port = match port with Some port -> Unix.setsockopt fd Unix.SO_REUSEADDR true; port | None -> 0 in Unix.bind fd (Unix.ADDR_INET (Unix.inet_addr_any, port)); Unix.listen fd 10; fd (* * Close the server. *) let close_server = Unix.close (* * Get local server info. *) let get_server_host fd = match Unix.getsockname fd with Unix.ADDR_INET (addr, port) -> let host = if addr = Unix.inet_addr_any then Unix.gethostname () else string_of_inet_addr addr in host, port | Unix.ADDR_UNIX _ -> raise (Failure "Mp_inet.get_client_host") (* * Accept a connection on the server socket. *) let accept fd = let fd, addr = Unix.accept fd in match addr with Unix.ADDR_INET (addr, port) -> fd, addr, port | Unix.ADDR_UNIX _ -> Unix.close fd; raise (Invalid_argument "Mp_inet.accept_connect") (* * Open a client connection. *) let connect machine port = let fd = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in let addr = try let addr = Unix.inet_addr_of_string machine in Unix.connect fd (Unix.ADDR_INET (addr, port)); addr with Failure _ -> let addrs = (Unix.gethostbyname machine).Unix.h_addr_list in let len = Array.length addrs in let rec search exn i = if i = len then raise exn else try let addr = addrs.(i) in Unix.connect fd (Unix.ADDR_INET (addr, port)); addr with exn -> search exn (succ i) in let exn = Unix.Unix_error (Unix.EAFNOSUPPORT, "connect", machine) in search exn 0 in fd, addr, port (* * Get the name of the peer machine. *) let file_descr_of_client (fd, _, _) = fd let get_client_peer (_, addr, port) = string_of_inet_addr addr, port let get_client_host (fd, _, _) = match Unix.getsockname fd with Unix.ADDR_INET (addr, port) -> string_of_inet_addr addr, port | Unix.ADDR_UNIX _ -> raise (Failure "Mp_inet.get_client_host") (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/OMakefile0000664000152300015230000000012510364005360020247 0ustar jyhjyh# # Library # include Files OCAMLINCLUDES += ../stdlib ../util clean: $(CLEAN) omake-0.9.8.5/src/libmojave-external/unix/lm_fs_case_sensitive.ml0000664000152300015230000000274510613520274023223 0ustar jyhjyh(* * Detection of filesystem case-sensitivity * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2007 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Nathaniel Gray * @email{jyh@cs.caltech.edu} * @end[license] *) external case_sensitive_available : unit -> bool = "lm_fs_case_sensitive_available" external case_sensitive : string -> bool = "lm_fs_case_sensitive" let available = case_sensitive_available () (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_id.ml0000664000152300015230000000502710651225205020115 0ustar jyhjyh(* * Unique identifiers. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * Use the null implementation of threads. * Don't kill this off. *) open Lm_thread (* * The identifier is just a string. *) type t = string (* * The identifier contains the: * 1. Machine name * 2. Process identifier * 3. A unique number in this process *) let id_lock = Mutex.create "Lm_id" let id_value = ref 0 let create () = let hostname = let name = Unix.gethostname () in try let host = Unix.gethostbyname name in let addrs = host.Unix.h_addr_list in if addrs = [||] then host.Unix.h_name else String.concat host.Unix.h_name (Array.to_list (Array.map Unix.string_of_inet_addr addrs)) with Not_found -> name in let pid = Unix.getpid () in let index = Mutex.lock id_lock; let index = !id_value in incr id_value; Mutex.unlock id_lock; index in Lm_printf.sprintf "%s:%d:%d" hostname pid index (* * Get a printable representation. *) let string_of_id x = x (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_mmap.ml0000664000152300015230000000331210464477010020453 0ustar jyhjyh(* * Memory-mapped file. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * Type of mmaps. *) type t (* * C functions. *) external create : string -> Unix.open_flag list -> Unix.file_perm -> t = "ml_mmap_open" external close : t -> unit = "ml_mmap_close" external to_string : t -> string = "ml_string_of_mmap" (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_unix_util.mli0000664000152300015230000000610710646741547021732 0ustar jyhjyh(* * Extra unix utilities. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2007 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified By: Aleksey Nogin *) (* * Print the location of the stack pointer for debugging. *) val print_stack_pointer : unit -> unit (* * Location of the home directory. *) val home_dir : string (* * Location of application data (this is the same as home_dir * except on Win32). *) val application_dir : string (* * Really read some number of bytes. *) val really_read : Unix.file_descr -> string -> int -> int -> unit (* * Copy an entire file. *) val copy_file : string -> string -> int -> unit (* * Make all the directories in a path. *) val mkdirhier : string -> unit (* * Home directory of the current user. *) val home_dir : string (* * C interface. *) val int_of_fd : Unix.file_descr -> int (* * Lock utilities. *) val lockf : Unix.file_descr -> Unix.lock_command -> int -> unit val getlk : Unix.file_descr -> Unix.lock_command -> int option (* * File truncation. *) val ftruncate : Unix.file_descr -> unit (* * Get a value from the registry. * raises Not_found if the entry is not found or you are not using Win32. *) type registry_hkey = HKEY_CLASSES_ROOT | HKEY_CURRENT_CONFIG | HKEY_CURRENT_USER | HKEY_LOCAL_MACHINE | HKEY_USERS val registry_find : registry_hkey -> string -> string -> string (* * Open a file. * This is mainly for debugging. *) val openfile : string -> Unix.open_flag list -> Unix.file_perm -> Unix.file_descr (* * Simple file locking. *) type flock_command = LOCK_UN | LOCK_SH | LOCK_EX | LOCK_TSH | LOCK_TEX val flock : Unix.file_descr -> flock_command -> unit (* * Scan the password database for entries. *) val getpwents : unit -> Unix.passwd_entry list (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_rusage.ml0000664000152300015230000000624010456222231021004 0ustar jyhjyh(* * Simple rusage interface. * Copyright (C) 2002 Justin David Smith, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. *) (* rusage Data type that contains information on process resource usage. Currently a limited form of the full data structure returned by libc. This contains the user and system runtimes, broken down into seconds and microseconds, for the requested processes. *) type rusage_short = { ru_utime_sec : int; ru_utime_usec : int; ru_stime_sec : int; ru_stime_usec : int; } (* * A more complete version. *) type rusage = { ru_utime : float; ru_stime : float; ru_maxrss : int; ru_ixrss : int; ru_idrss : int; ru_isrss : int; ru_minflt : int; ru_majflt : int; ru_nswap : int; ru_inblock : int; ru_oublock : int; ru_msgsnd : int; ru_msgrcv : int; ru_nsignals : int; ru_nvcsw : int; ru_nivcsw : int } (* rusage_who Who to report statistics on: the current process, or the aggregate of all its children. *) type rusage_who = RUSAGE_SELF | RUSAGE_CHILDREN (*** External Calls ***) external caml_getrusage_time : rusage_who -> rusage_short = "caml_getrusage_time" external caml_setrlimit_time : int -> unit = "caml_setrlimit_time" external getrusage : unit -> rusage = "ml_getrusage" (*** Interface ***) (* getrusage_time who Returns the resource usage of the indicated process. *) let getrusage_time who = caml_getrusage_time who (* setrlimit_time time Sets the resource CPU limit for the current process to the indicated time interval (in seconds). Note that this number can only be decreased from the current resource limit; it cannot be increased. *) let setrlimit_time time = caml_setrlimit_time time (* total_rusage rusage Takes the rusage structure returned by getrusage_time, and computes the total compute time of the process. Returns the pair (sec, usec) which indicate the process total running time. *) let total_rusage rusage = let sec = rusage.ru_utime_sec + rusage.ru_stime_sec in let usec = rusage.ru_utime_usec + rusage.ru_stime_usec in let rec increment_sec sec usec = if usec >= 1000000 then increment_sec (sec + 1) (usec - 1000000) else sec, usec in increment_sec sec usec omake-0.9.8.5/src/libmojave-external/unix/lm_notify.mli0000664000152300015230000000413210647742763021220 0ustar jyhjyh(* * File-change notification services. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Event manager. *) type t (* * Events. *) type code = Changed | Deleted | StartExecuting | StopExecuting | Created | Moved | Acknowledge | Exists | EndExist | DirectoryChanged type event = { notify_code : code; notify_name : string } (* * Debugging. *) val debug_notify : bool ref val string_of_code : code -> string (* * Methods. *) val enabled : bool val create : unit -> t val close : t -> unit val file_descr : t -> Unix.file_descr option val monitor : t -> string -> bool -> unit val pending : t -> bool val next_event : t -> event val suspend : t -> string -> unit val resume : t -> string -> unit val cancel : t -> string -> unit val suspend_all : t -> unit val resume_all : t -> unit val cancel_all : t -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_unix_util.ml0000664000152300015230000001520310646741547021556 0ustar jyhjyh(* * Extra unix utilities. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2007 PRL Group, Cornell University, California * Institute of Technology and HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified By: Aleksey Nogin *) open Lm_printf (* * Registry handles. *) type registry_hkey = HKEY_CLASSES_ROOT | HKEY_CURRENT_CONFIG | HKEY_CURRENT_USER | HKEY_LOCAL_MACHINE | HKEY_USERS external print_stack_pointer : unit -> unit = "lm_print_stack_pointer" external registry_find : registry_hkey -> string -> string -> string = "caml_registry_find" external getpwents : unit -> Unix.passwd_entry list = "lm_getpwents" (* * Read the exact amount. *) let rec really_read fd buf off len = if len <> 0 then let amount = Unix.read fd buf off len in let () = if amount = 0 then raise (Failure "really_read") in let off = off + amount in let len = len - amount in really_read fd buf off len (* * Copy a file. *) let rec complete_write fd buf off len = let count = Unix.write fd buf off len in if count < len then complete_write fd buf (off + count) (len - count) let rec copy_file_fd buffer from_fd to_fd = let count = Unix.read from_fd buffer 0 (String.length buffer) in if count > 0 then begin complete_write to_fd buffer 0 count; copy_file_fd buffer from_fd to_fd end let copy_file from_name to_name mode = let from_fd = Unix.openfile from_name [Unix.O_RDONLY] 0o666 in let () = try let to_fd = Unix.openfile to_name [Unix.O_WRONLY; Unix.O_CREAT; Unix.O_TRUNC] 0o600 in let () = try copy_file_fd (String.create 8192) from_fd to_fd; Unix.fchmod to_fd mode with x -> Unix.close to_fd; raise x in Unix.close to_fd with x -> Unix.close from_fd; raise x in Unix.close from_fd (* * Make a directory hierarchy. *) let mkdirhier name = let rec mkdir head path = match path with dir :: rest -> let filename = Filename.concat head dir in (* If it is already a directory, keep it *) let is_dir = try (Unix.LargeFile.stat filename).Unix.LargeFile.st_kind = Unix.S_DIR with Unix.Unix_error _ -> false in if not is_dir then Unix.mkdir filename 0o777; mkdir filename rest | [] -> () in let head = if String.length name = 0 || name.[0] <> '/' then "." else "/" in let path = Lm_filename_util.split_path name in let path = Lm_filename_util.simplify_path path in mkdir head path (* * Compatibility initializer. *) external init : unit -> unit = "lm_compat_init" let () = init () (* * Get the pid of the process holding the lock *) external lm_getlk : Unix.file_descr -> Unix.lock_command -> int = "lm_getlk" let getlk fd cmd = let res = lm_getlk fd cmd in if res = 0 then None else Some res (* * Convert a fd to an integer (for debugging). *) external int_of_fd : Unix.file_descr -> int = "int_of_fd" (* * Win32 functions. *) external home_win32 : unit -> string = "home_win32" external lockf_win32 : Unix.file_descr -> Unix.lock_command -> int -> unit = "lockf_win32" external ftruncate_win32 : Unix.file_descr -> unit = "ftruncate_win32" (* * Try to figure out the home directory as best as possible. *) let find_home_dir () = try Sys.getenv "HOME" with Not_found -> let home = try (Unix.getpwnam (Unix.getlogin ())).Unix.pw_dir with Not_found | Unix.Unix_error _ -> eprintf "!!! Lm_unix_util.find_home_dir:@."; eprintf "!!! You have no home directory.@."; eprintf "!!! Please set the HOME environment variable to a suitable directory.@."; raise (Invalid_argument "Lm_unix_util.find_home_dir") in Unix.putenv "HOME" home; home let application_dir = if Sys.os_type = "Win32" then try home_win32 () with Failure _ -> find_home_dir () else find_home_dir () let home_dir = if Sys.os_type = "Win32" then try Sys.getenv "HOME" with Not_found -> let home = application_dir in Unix.putenv "HOME" home; home else application_dir let lockf = if Sys.os_type = "Win32" then (fun fd cmd off -> try lockf_win32 fd cmd off with Failure "lockf_win32: already locked" -> raise (Unix.Unix_error(Unix.EAGAIN, "lockf", "")) | Failure "lockf_win32: possible deadlock" -> raise (Unix.Unix_error(Unix.EDEADLK, "lockf", ""))) else Unix.lockf let ftruncate = if Sys.os_type = "Win32" then ftruncate_win32 else (fun fd -> Unix.ftruncate fd (Unix.lseek fd 0 Unix.SEEK_CUR)) type flock_command = LOCK_UN | LOCK_SH | LOCK_EX | LOCK_TSH | LOCK_TEX external flock : Unix.file_descr -> flock_command -> unit = "lm_flock" (* * Open a file descriptor. * This hook is here so you can add print statements to * help find file descriptor leaks. *) let openfile = Unix.openfile (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/unix/lm_mmap_pipe.mli0000664000152300015230000000354310464477010021647 0ustar jyhjyh(* * Shared-memory pipe with marshaling. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) type t val create_server : string -> t val create_client : string -> t val server_socket : t -> Unix.file_descr val client_socket : t -> Unix.file_descr val open_client : t -> bool val close_client : t -> unit val block : t -> bool val write : t -> int -> string -> (string -> int -> int -> int) -> bool val read : t -> (string -> int -> int -> 'a) -> (int * string * 'a) option (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/0000775000152300015230000000000010660137261016775 5ustar jyhjyhomake-0.9.8.5/src/libmojave-external/stdlib/lm_string.mli0000664000152300015230000000401310456222231021467 0ustar jyhjyh(* * String operations. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) val length : string -> int val get : string -> int -> char val set : string -> int -> char -> unit val create : int -> string val make : int -> char -> string val copy : string -> string val sub : string -> int -> int -> string val fill : string -> int -> int -> char -> unit val blit : string -> int -> string -> int -> int -> unit val concat : string -> string -> string val escaped : string -> string val index : string -> char -> int val rindex : string -> char -> int val index_from : string -> int -> char -> int val rindex_from : string -> int -> char -> int val contains : string -> char -> bool val contains_from : string -> int -> char -> bool val rcontains_from : string -> int -> char -> bool val uppercase : string -> string val lowercase : string -> string val capitalize : string -> string val uncapitalize : string -> string (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_util.mli0000664000152300015230000000304710464477010022501 0ustar jyhjyh(* * Useful utilities for threads. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) val lock_printer : unit -> unit val unlock_printer : unit -> unit (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_string_util.mli0000664000152300015230000001726310571174650022550 0ustar jyhjyh(* * String utilities. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified By: Aleksey Nogin *) (* * Faster comparison function for strings *) val string_compare : string -> string -> int (* * Check whether the string has a substring. * * equal_substring s1 off s2 * * Check whether s2 is a substring of s1 at offset off. * No exceptions raised. *) val equal_substring : string -> int -> string -> bool (* * Check whether the first string is a prefix of the second. *) val is_string_prefix : string -> string -> bool (* * Hex representation of a string. *) val unhex : char -> int val hexify : string -> string val hexify_sub : string -> int -> int -> string val unhexify : string -> string val unhexify_int : string -> int (* * Find a char in a string. *) val strchr : string -> char -> int (* * Membership. * contains s c : true iff c appears in s * contains_string s1 s2 : true iff any char in s2 appears in s1 *) val contains : string -> char -> bool val contains_any : string -> string -> bool (* * Standard definition of white space. *) val white : string val quotes : string (* * Mapping. *) val for_all : (char -> bool) -> string -> bool (* * Get the index of any char in the set. *) val index_set : string -> string -> int val rindex_set : string -> string -> int (* * Split a string into substrings. * The string is split on any character in delims. Empty substrings * are returned as empty strings in the list. For example: * split ".-" "foo.bar--ba??z" * returns * ["foo"; "bar"; ""; "ba??z"] *) val split : string -> string -> string list (* * Split a string based on a string delimiter. * For example: * split_string "ABC" "fooAB.ABCbar" * returns * ["fooAB."; "bar"] *) val split_string : string -> string -> string list (* * Split a string based on a MIME string delimiter. * This is similar to the above, but the delimiter is * prefixed by a "--", and the 2 characters after the * delimiter are always dropped. * For example: * split_mime_string "ABC" "--ABC\r\nfooAB.--ABC\r\nbar--ABC--" * returns * ["fooAB."; "bar"] *) val split_mime_string : string -> string -> string list (* * Escape a string so that it can be read back in C. *) val c_escaped : string -> string (* * Escape a string so that it can be read back in Javascript. * This assumes single quotes. *) val js_escaped : string -> string val html_escaped : string -> string val html_pre_escaped : string -> string val html_escaped_nonwhite : string -> string (* * Unescape a string. Convert all escape sequences, * and remove outer double quotes. *) val unescape : string -> string (* * Test if a string is completely whitespace. *) val is_white : string -> bool (* * Split a string str into a list of substrings. * The string is split on any character in delims. Quotations * are not split. * * Empty substrings are _not_ returned as empty strings in the list. * For example: * tokens "" ".-" "foo.bar--ba??z" * returns * ["foo"; "bar"; "ba??z"] *) val tokens : string -> string -> string -> string list val tokens_std : string -> string list (* * Tokens_collect is an optimized form of token parsing * based on standard whitespace and quotes, and it * allows for incremental parsing. * * For example: * let buf = tokens_empty in * let tokens = tokens_string tokens " Foo \"bar \\" baz" in * let tokens = tokens_data tokens " a \"b c " in * let tokens = tokens_string tokens "boo\" bum" in * tokens_flush tokens * returns * ["Foo"; "\"bar \\" baz a \"b c boo\""; "a"] *) type 'a tokens val tokens_create_lexer : lexer : (string -> int -> int -> int option) -> wrap_string : (string -> 'a) -> wrap_data : (string -> 'a) -> wrap_token : (string -> 'a) -> group : ('a list -> 'a) -> 'a tokens val tokens_create : (string -> 'a) -> ('a list -> 'a) -> 'a tokens val tokens_string : 'a tokens -> string -> 'a tokens val tokens_lex : 'a tokens -> string -> 'a tokens val tokens_data : 'a tokens -> string -> 'a tokens val tokens_break : 'a tokens -> 'a tokens val tokens_add : 'a tokens -> 'a -> 'a tokens val tokens_atomic : 'a tokens -> 'a -> 'a tokens val tokens_flush : 'a tokens -> 'a list (* * A third way to split into substrings. * The tokens are separated by white space, * and tokens may be quoted. * * In the args_list case, the string lists are separated by \\ (AKA TeX "new line" command). *) val parse_args_list : string -> string list list val parse_args : string -> string list (* Add outer quotes to a string, and escape all the inner quotes. *) val shell_quotes : string -> string (* * Reconstruct an argv string from a list of strings. * The strings are concatenated with intervening whitespace. * If any of the strings contains whitespace or non-outermost * quotes, it is quoted, and inner quotes are escaped. *) val concat_argv : string list -> string (* * Construct a string from the list, separating by whitespace. * Quotes are added if the string contains special characters. *) val string_argv : string list -> string (* * Same as string_argv, but always quote the result. *) val quote_argv : string list -> string val quote_string : string -> string (* * Add a prefix to every string, and concatenate. *) val prepend : string -> string list -> string (* * Search for a pattern in the indicated buffer, within the start * and length constraints applied to the buffer. Note that this * uses a very inefficient algorithm; at some point I (JDS) will * get around to converting this to the Knuth-Morris-Pratt or * maybe Rabin-Karp algorithm. * * On success, this returns the offset (RELATIVE TO start!) of * the first match found; on failure, this raises Not_found. *) val strpat : string -> int -> int -> string -> int (* * Trim whitespace at outer boundaries from a string. *) val trim : string -> string (* * Trim all consecutive whitespace from a string, respecting * quotes. *) val trim_all : string -> string -> string -> string val trim_std : string -> string (* * Read the file into a string. * Raises Sys_error if the file can't be opened. *) val string_of_file : string -> string (* * Lm_debug versions of standard library. *) val create : string -> int -> string val make : string -> int -> char -> string val sub : string -> string -> int -> int -> string val blit : string -> string -> int -> string -> int -> int -> unit val set : string -> string -> int -> char -> unit val get : string -> string -> int -> char (* * Converting to-from the hex representation used in URI. *) val decode_hex_name : string -> string val encode_hex_name : string -> string (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_serial_map.ml0000664000152300015230000000726710456222231022142 0ustar jyhjyh(* * Serialized map. Acts as a normal map, but the order in * which elements are inserted is retained, and all iterating * functions visit elements in that order. * ---------------------------------------------------------------- * * Copyright (C) 2002 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Adam Granicz * granicz@cs.caltech.edu *) open Lm_map_sig open Lm_map (* * These are the functions provided by the table. *) module type SerialMap = sig type key type 'a tt val empty : 'a tt val is_empty : 'a tt -> bool val cardinal : 'a tt -> int val add : 'a tt -> key -> 'a -> 'a tt val find : 'a tt -> key -> 'a val remove : 'a tt -> key -> 'a tt val mem : 'a tt -> key -> bool val iter : (key -> 'a -> unit) -> 'a tt -> unit val fold : ('a -> key -> 'b -> 'a) -> 'a -> 'b tt -> 'a (* Both keys and data return a list ordered by insertion order *) val keys : 'a tt -> key list val data : 'a tt -> 'a list end (* * Make the map. *) module SerialMapMake (Base : OrderedType) : SerialMap with type key = Base.t = struct module IntModule = struct type t = int let compare = Pervasives.compare end module SMap = LmMake (IntModule) module SMapShadow = LmMake (Base) type key = Base.t type 'elt tt = (key SMap.t * ('elt * int) SMapShadow.t) let counter = ref 0 let empty = (SMap.empty, SMapShadow.empty) let is_empty (table, _) = SMap.is_empty table let cardinal (table, _) = SMap.cardinal table let add (table, shadow) key data = let index = try (* Key is already in map *) snd (SMapShadow.find shadow key) with Not_found -> incr counter; !counter in SMap.add table index key, SMapShadow.add shadow key (data, index) let find (_, shadow) key = fst (SMapShadow.find shadow key) let remove (table, shadow) key = let index = snd (SMapShadow.find shadow key) in SMap.remove table index, SMapShadow.remove shadow key let mem (_, shadow) key = SMapShadow.mem shadow key let iter f (table, shadow) = SMap.iter (fun _ key -> let data = fst (SMapShadow.find shadow key) in f key data) table let fold f accum (table, shadow) = SMap.fold (fun accum _ key -> let data = fst (SMapShadow.find shadow key) in f accum key data) accum table let keys (table, _) = let keys_rev = SMap.fold (fun keys _ key -> key :: keys) [] table in List.rev keys_rev let data (table, shadow) = let data_list_rev = SMap.fold (fun data_list _ key -> let data, _ = SMapShadow.find shadow key in data :: data_list) [] table in List.rev data_list_rev end omake-0.9.8.5/src/libmojave-external/stdlib/lm_array_util.ml0000664000152300015230000002012210456222231022162 0ustar jyhjyh(* * Utilities on arrays. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_debug (* * Show the file loading. *) let _ = show_loading "Loading Lm_array_util%t" (* * Parts for collecting arrays. *) type ('a, 'b) array_part = ArrayElement of 'a | ArrayArray of 'b * int * int (* * Boolean values. *) let all_true v = let rec search i len v = i = len || (v.(i) && search (succ i) len v) in search 0 (Array.length v) v let exists_true v = let rec search i len v = i <> len && (v.(i) || search (succ i) len v) in search 0 (Array.length v) v let for_all f v = let rec search f i len v = i = len || (f v.(i) && search f (succ i) len v) in search f 0 (Array.length v) v let for_all2 f a1 a2 = let len = Array.length a1 in Array.length a1 = Array.length a2 && (let rec apply i = (i = len) || (f a1.(i) a2.(i) && apply (i + 1)) in apply 0) let exists f v = let rec search f i len v = i <> len && (f v.(i) || search f (succ i) len v) in search f 0 (Array.length v) v (* * Membership in an array. *) let mem i v = let l = Array.length v in let rec aux j = j < l & ( i = v.(j) or aux (j + 1) ) in aux 0 (* * Membership in an array. *) let index i v = let l = Array.length v in let rec aux j = if j < l then if i = v.(j) then j else aux (j + 1) else raise Not_found in aux 0 (* * Membership in an array. *) let exists f v = let l = Array.length v in let rec aux j = j < l & ( f v.(j) or aux (j + 1) ) in aux 0 let find_index f v = let l = Array.length v in let rec aux j = if j < l then if f v.(j) then j else aux (j + 1) else raise Not_found in aux 0 (* * Iterate over two arrays. *) let iter2 f a1 a2 = let len = Array.length a1 in if Array.length a2 <> len then raise (Failure "Array.iter2") else let rec apply f a1 a2 i len = if i < len then begin f a1.(i) a2.(i); apply f a1 a2 (i + 1) len end in apply f a1 a2 0 len let append_list a = function [] -> a | hd :: tl -> let l = Array.length a in let res = Array.create (l + List.length tl + 1) hd in for i = 0 to pred l do Array.unsafe_set res i (Array.unsafe_get a i) done; let rec aux i = function [] -> res | hd :: tl -> Array.unsafe_set res i hd; aux (succ i) tl in aux (succ l) tl let append_list_array a1 l a2 = match l with [] -> Array.append a1 a2 | hd::tl -> let l1 = Array.length a1 and l2 = Array.length a2 in let offs = succ l1 + List.length tl in let res = Array.create (offs + l2) hd in for i = 0 to pred l1 do Array.unsafe_set res i (Array.unsafe_get a1 i) done; let rec aux i = function [] -> () | hd :: tl -> Array.unsafe_set res i hd; aux (succ i) tl in aux (succ l1) tl; for i = 0 to pred l2 do Array.unsafe_set res (i+offs) (Array.unsafe_get a2 i) done; res let replace a i j = function [] -> if j>0 then Array.append (Array.sub a 0 i) (Array.sub a (i+j) (Array.length a-i-j)) else raise (Invalid_argument "Lm_array_util.replace") | hd :: tl -> let l = Array.length a in let ij = i + j in if i>=0 && j>0 && ij<=l then let dl = List.length tl - j +1 in let res = Array.create (l+dl) hd in for k=0 to (pred i) do Array.unsafe_set res k (Array.unsafe_get a k) done; for k=ij to (pred l) do Array.unsafe_set res (k+dl) (Array.unsafe_get a k) done; let rec aux k = function [] -> res | hd :: tl -> Array.unsafe_set res k hd; aux (succ k) tl in aux (succ i) tl else raise (Invalid_argument "Lm_array_util.replace") (* * Map over a subarray. *) let sub_map f a i len = if i < 0 || len < 0 || i + len > Array.length a then raise (Invalid_argument "sub_map") else match len with 0 -> [||] | 1 -> [| f (Array.unsafe_get a i) |] | _ -> let a' = Array.create len (f (Array.unsafe_get a i)) in for j = 1 to len - 1 do Array.unsafe_set a' j (f (Array.unsafe_get a (i + j))) done; a' (* * Compute the total length of the parts. * As a side-effect, we raise an exception if * any of the subarrays are ill-defined. *) let rec parts_length len = function [] -> len | ArrayElement _ :: parts -> parts_length (len + 1) parts | ArrayArray (a, i, len') :: parts -> if i < 0 || len' < 0 || i + len' > Array.length a then raise (Invalid_argument "Array.collect") else parts_length (len + len') parts (* * Add the parts to the array. * We are guaranteed that the arrays will be in bounds. *) let rec collect_append a off = function [] -> a | ArrayElement x :: parts -> Array.unsafe_set a off x; collect_append a (off + 1) parts | ArrayArray (_, _, 0) :: parts -> collect_append a off parts | ArrayArray (a', i, len) :: parts -> Array.blit a' i a off len; collect_append a (off + len) parts (* * Collect function works in two parts. * The first part creates the initial array, * and the second part adds to it. *) let rec collect = function [] -> [||] | ArrayElement x :: parts -> let len = parts_length 1 parts in let a' = Array.create len x in collect_append a' 1 parts | ArrayArray (_, _, 0) :: parts -> collect parts | [ArrayArray(a, 0, len)] when len = Array.length a -> a | ArrayArray (a, i, len) :: parts -> let len' = parts_length len parts in let a' = Array.create len' a.(i) in if len > 1 then Array.blit a (i + 1) a' 1 (len - 1); collect_append a' len parts (* * Sorts an array, than eliminates the duplicate elements * and moves the remaining elements into an initial segment * of the input array. Returns the # of distinct elements. *) let distinct cmp = function [||] -> 0 | array -> let l = Array.length array in let rec d_find i = let j = (succ i) in if j = l then j else if (cmp array.(i) array.(j)) = 0 then d_copy i (succ j) else d_find j and d_copy i j = if j = l then succ i else if (cmp array.(i) array.(j)) = 0 then d_copy i (succ j) else let i = succ i in array.(i) <- array.(j); d_copy i (succ j) in Array.fast_sort cmp array; d_find 0 (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat.ml0000664000152300015230000011243410464477010021477 0ustar jyhjyh(* * Formatter like in the standard library. * Output is organized into boxes, each of which has an indentation. * * Commands: * format_sbreak str str': soft break is taken if necessary * if taken, str is printed after the current line * if not, str' is printed * format_cbreak str str': soft break is taken only if the very next word causes a break * if taken, str is printed after the current line * if not, str' is printed * format_hbreak str str': hard breaks are taken in groups * if taken, str is printed * if not, str' is printed * * format_lzone: begin a zone with no breaks * format_szone: soft break zone (all or no hard breaks are taken) * format_hzone: all hard breaks are taken. * format_ezone: end the current zone. * format_izone: start an invisible zone. * format_tzone: start a tagged zone * * format_pushm i: push left margin from here by i more spaces * format_popm: pop last pushm * * format_char: add a single char * format_int: print a number * format_string: add a string to the buffer * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998, 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified by: Aleksey Nogin *) open Lm_debug (* * Show the file loading. *) let _ = show_loading "Loading Lm_rformat%t" let debug_rformat = create_debug (**) { debug_name = "rformat"; debug_description = "display text formatting operations"; debug_value = false } let default_width = 80 let eprintf = Format.eprintf let sprintf = Printf.sprintf (************************************************************************ * TYPES * ************************************************************************) (* * Identify the zone types. * * LZone: linear zone: line breaks are ignored * HZone: hard zone: all line breaks are taken * SZone: soft zone: either *all* soft breaks in the zone are taken, or none are * AZone: atomic zone: this zone acts like a single character * IZone: all text in the zone is "invisible" to margin calculations * TZone: tagged zone, no special line breaking treatment * MZone: margin zone, adds the offset to the left margin *) type zone_tag = LZoneTag | HZoneTag | SZoneTag | IZoneTag | AZoneTag | TZoneTag of string | MZoneTag of int * string (* * A print command is * 1. a string of text, * 2. a Break * Either all Breaks are taken in a zone, or all are not * a. the number of the corresponding zone * b. the length to begin the next line if the break is taken * c. the length to append to the current line if it is not * d. a string to insert on the next line if the break is taken * e. a string to append if it is not *) type print_command = (* Printing text, keep the length *) Text of int * string (* * Break contains a break number, and the line breaking text. * HBreak is a break that is always taken. *) | Break of int * int * int * string * string | CBreak of int * int * int * string * string | HBreak (* * Inlined buffer. *) | Inline of buffer (* * This is the info that is computed once a buffer has * been formatted. *) and formatted_info = { formatted_commands : print_command list; formatted_breaks : bool array; (* Flags for breaks that were taken *) formatted_col : int; (* Starting column *) formatted_maxx : int; (* Max layout column *) formatted_lmargin : int * string; (* Left margin provided by environment *) formatted_search : bool (* Was this zone formatted in linear mode? *) } (* * This is the info for buffers that are being constructed. * formatting_commands: commands that have been added (reversed) * formatting_index: total number of breaks inserted so far * formatting_buf: current buffer being inserted into *) and unformatted_info = { unformatted_commands : print_command list; unformatted_index : int } and formatting_info = { mutable formatting_commands : print_command list; mutable formatting_index : int; formatting_buf : buffer } and formatting_stack = { mutable formatting_stack : formatting_info list } (* * This is the info collected for the buffer. *) and format_info = Formatted of formatted_info | Unformatted of unformatted_info | Formatting of formatting_stack (* * Input data is formatted on a stack. *) and buffer = { (* What format is this zone *) buf_tag : zone_tag; (* Name of this zone *) buf_index : int; (* Compiled info about this buffer *) mutable buf_info : format_info; (* Parent buffer to notify when the format changes *) buf_parent : buffer option; (* Save the root buffer *) buf_root : root } (* * The root contains info for general formatting. * root_index: zones are given unique numbers, * the root_index is the index of the next zone * root_bound: max number of visible characters in the buffer * root_count: number of visible characters in the buffer *) and root = { mutable root_index : int; mutable root_bound : int; mutable root_count : int } (* * A printer contains: * print_string s : print string s to the buffer * print_atomic s : print the buffer to the buffer * print_invis s : print string s in invisible mode * print_tab lmargin tags : tab to the specified left margin * print_begin_tag : start tagging a value * print_end_tag : finish tagging the value *) type printer = { print_string : string -> unit; print_invis : string -> unit; print_atomic : string -> unit; print_tab : int * string -> string list -> unit; print_begin_tag : string -> unit; print_end_tag : string -> unit } (* * Buffer overflow is raised when too much visible text is * put in the buffer. *) exception RFormatOverflow (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Default empty buffer. *) let empty_info = Unformatted { unformatted_commands = []; unformatted_index = 0 } (* * Aleksey's hack to limit the left margin. *) let lcol_const = 3 (* * Create a new empty buffer. *) let new_buffer () = let root = { root_index = 0; root_bound = max_int; root_count = 0 } in { buf_tag = SZoneTag; buf_index = 0; buf_info = empty_info; buf_parent = None; buf_root = root } let clone_format_info info = match info with Formatted _ | Unformatted _ -> info | Formatting { formatting_stack = stack } -> Formatting { formatting_stack = List.map (fun info -> { info with formatting_commands = info.formatting_commands }) stack } let clone_buffer buf = { buf with buf_info = clone_format_info buf.buf_info } (* * Empty the buffer. * The parents are unchanged. *) let clear_buffer buf = buf.buf_info <- empty_info (* * Check if the buffer is empty. *) let buffer_is_empty buf = match buf.buf_info with Formatting { formatting_stack = [{ formatting_commands = [] }] } | Unformatted { unformatted_commands = [] } | Formatted { formatted_commands = [] } -> true | _ -> false (* * Switch this buffer to formatting mode. *) let get_formatting_stack buf = match buf.buf_info with Formatting info -> info | Unformatted { unformatted_commands = commands; unformatted_index = index } -> let stack = { formatting_stack = [{ formatting_commands = commands; formatting_index = index; formatting_buf = buf }] } in buf.buf_info <- Formatting stack; stack | Formatted { formatted_commands = commands; formatted_breaks = breaks } -> let stack = { formatting_stack = [{ formatting_commands = commands; formatting_index = Array.length breaks; formatting_buf = buf }] } in buf.buf_info <- Formatting stack; stack (* * Depth of nesting. *) let zone_depth = function { buf_info = Formatting stack } -> List.length stack.formatting_stack - 1 | _ -> 0 (* * Start a new zone. *) let push_zone buf tag = let stack = get_formatting_stack buf in let root = buf.buf_root in let index = succ root.root_index in let buf' = { buf_tag = tag; buf_index = index; buf_info = empty_info; buf_parent = Some buf; buf_root = root } in let _ = match stack.formatting_stack with head :: _ -> head.formatting_commands <- Inline buf' :: head.formatting_commands | [] -> raise (Invalid_argument "Lm_rformat.push_zone") in let info = { formatting_commands = []; formatting_index = 0; formatting_buf = buf' } in root.root_index <- index; stack.formatting_stack <- info :: stack.formatting_stack let format_lzone buf = push_zone buf LZoneTag let format_hzone buf = push_zone buf HZoneTag let format_szone buf = push_zone buf SZoneTag let format_izone buf = push_zone buf IZoneTag let format_azone buf = push_zone buf AZoneTag let format_tzone buf tag = push_zone buf (TZoneTag tag) let format_pushm buf off = let off = if off < 0 then begin eprintf "Lm_rformat.format_pushm: negative margin %d@." off; 0 end else off in push_zone buf (MZoneTag (off, String.make off ' ')) let format_pushm_str buf s = push_zone buf (MZoneTag (String.length s, s)) (* * End the zone by popping the last entry off the stack. *) let format_ezone buf = let stack = get_formatting_stack buf in match stack.formatting_stack with { formatting_commands = commands; formatting_index = index; formatting_buf = buf' } :: ((_ :: _) as tail) -> let info = { unformatted_commands = List.rev commands; unformatted_index = index } in buf'.buf_info <- Unformatted info; stack.formatting_stack <- tail | _ -> raise (Invalid_argument "Lm_rformat.format_ezone (AKA format_popm): unbalanced buffer (use debug_dform_depth to debug)") let format_popm = format_ezone (* * End all open boxes. *) let format_flush buf = let rec flush stack = match stack.formatting_stack with [_] -> () | _ :: _ -> format_ezone buf | [] -> raise (Invalid_argument "Lm_rformat.close_formatting: unbalanced buffer") in flush (get_formatting_stack buf) (* * Close all current popm boxes. *) let format_flush_popm buf = let rec flush stack = match stack.formatting_stack with { formatting_buf = { buf_tag = MZoneTag _ } } :: _ -> format_ezone buf; flush stack | _ -> () in flush (get_formatting_stack buf) (* * End the formatting mode. *) let flush_formatting buf = match buf.buf_info with Formatting { formatting_stack = [{ formatting_commands = commands; formatting_index = index }] } -> buf.buf_info <- Unformatted { unformatted_commands = List.rev commands; unformatted_index = index } | Formatting _ -> raise (Invalid_argument "Lm_rformat.flush_formatting: unbalanced buffer (use debug_dform_depth to debug)") | Unformatted _ | Formatted _ -> () (* * Get the current nesting depth. *) let format_depth buf = match buf.buf_info with Formatting stack -> List.length stack.formatting_stack | Unformatted _ | Formatted _-> 1 (* * Get the head entry on the stack. *) let get_formatting_head buf = match (get_formatting_stack buf).formatting_stack with head :: _ -> head | [] -> raise (Invalid_argument "Lm_rformat.get_formatting_head") (* * Push a command onto the stack. *) let push_command buf command = let entry = get_formatting_head buf in let len = match command with Text (len, _) -> len | _ -> 0 in let root = buf.buf_root in let { root_bound = bound; root_count = count } = root in entry.formatting_commands <- command :: entry.formatting_commands; if count >= bound then begin let stack = get_formatting_stack buf in while List.length stack.formatting_stack > 2 do format_ezone buf done; raise RFormatOverflow end; root.root_count <- count + len (* * Set the bound in the buffer. * If you set this, you must be prepared to catch BufferOverflow. *) let format_bound buf bound = buf.buf_root.root_bound <- bound (* * Add breaks. *) exception NoBinder let rec get_soft_binder buf = let rec search = function head :: tl -> let buf = head.formatting_buf in let index = match buf.buf_tag with LZoneTag -> raise NoBinder | IZoneTag -> raise (Invalid_argument "dform error: soft break in izone") | AZoneTag -> raise (Invalid_argument "dform error: soft break in azone") | SZoneTag | HZoneTag -> (* Allocate a new binding occurrence *) let index = succ head.formatting_index in head.formatting_index <- index; index | MZoneTag _ | TZoneTag _ -> (* These zones are invisible to binders *) search tl in index | [] -> (* No binding occurrence *) raise NoBinder in search (get_formatting_stack buf).formatting_stack let rec get_hard_binder buf = let rec search = function head :: tl -> let buf = head.formatting_buf in let index = match buf.buf_tag with LZoneTag -> raise NoBinder | IZoneTag -> raise (Invalid_argument "dform error: hard break in izone") | AZoneTag -> raise (Invalid_argument "dform error: hard break in azone") | HZoneTag | SZoneTag -> (* Return the hard break binder *) 0 | MZoneTag _ | TZoneTag _ -> (* These zones are invisible to binders *) search tl in index | [] -> (* No binding occurrence *) raise NoBinder in search (get_formatting_stack buf).formatting_stack (* * XXX: BUG: Instead of the String.length we need to find the screen width * of the string s (which can be different from String.length s when UTF-8 * or other multi-byte representations are used. * * See the man pages for mbstowcs and wcswidth for more information. *) let format_raw_string buf s = push_command buf (Text (String.length s, s)) let format_cbreak buf str str' = let l = String.length str in let l' = String.length str' in try push_command buf (CBreak (get_soft_binder buf, l, l', str, str')) with NoBinder -> format_raw_string buf " " let format_sbreak buf str str' = let l = String.length str in let l' = String.length str' in try push_command buf (Break (get_soft_binder buf, l, l', str, str')) with NoBinder -> format_raw_string buf " " let format_hbreak buf str str' = let l = String.length str in let l' = String.length str' in try push_command buf (Break (get_hard_binder buf, l, l', str, str')) with NoBinder -> format_raw_string buf " " let format_newline buf = push_command buf HBreak let format_space buf = format_sbreak buf "" " " let format_hspace buf = format_hbreak buf "" " " (* * Actual printing. *) let format_char buf c = if c = '\n' then format_newline buf else push_command buf (Text (1, String.make 1 c)) (* * Check for newlines in the string. *) let rec format_string buf s = try let i = String.index s '\n' in push_command buf (Text (i, String.sub s 0 i)); format_newline buf; let l = (String.length s) - i - 1 in if l > 0 then format_string buf (String.sub s (i + 1) l) with Not_found -> format_raw_string buf s (* * Print a string, and quote it if necessary. *) let format_quoted_string buf str = let length = String.length str in let rec quotep i = if i < length then match str.[i] with '\n' | '\r' | '\t' | ' ' | '\034' -> true | _ -> quotep (i + 1) else false in let rec format_string' i = if i < length then let c = str.[i] in match c with '\n' -> format_string buf "\\n" | '\r' -> format_string buf "\\r" | '\t' -> format_string buf "\\r" | '\034' -> format_string buf "\\\034" | _ -> format_char buf c in let quote_flag = (length = 0) or (quotep 0) or (str.[0] = '\'') in if quote_flag then begin format_char buf '\034'; format_string' 0; format_char buf '\034' end else format_string buf str (* * Standard int. *) let format_int buf i = let s = string_of_int i in push_command buf (Text (String.length s, s)) (* * Num.num numbers. *) let format_num buf n = let s = Lm_num.string_of_num n in push_command buf (Text (String.length s, s)) (* * Insert a nested buffer. *) let format_buffer buf buf' = push_command buf (Inline buf') (************************************************************************ * FORMATTING * ************************************************************************) (* * This first part doesn't do the actual formatting, it just computes * which line breaks should be taken. * * For each zone, there is a function to compute line breaks for its * content. * * The arguments are: * lmargin: position of the left margin * rmargin: maximum width of the line * col: current position in the line * search: true if an exception should be raised when the right margin is exceeded * if this is true, we are in a linear search * * The result is a tuple: * col: the position in the current line *) exception MarginError (* * Build a margin string. * str1 is the margin prefix * space is the number of additional chars to before the suffix * str2 is the margin suffix * * Note that space may be nagative in cases like this: * pushm[5] pushm[3] * * We allow this case, but print a warning message. * In this case, the strings should overlap. The margins are always * positive, so we are guaranteed that the overlap can be taken from * the first margin. *) let margin_string str1 space str2 = if space > 0 then str1 ^ String.make space ' ' ^ str2 else if space = 0 then str1 ^ str2 else (* Remove chars of overlap *) let space = -space in let len1 = String.length str1 in let len2 = String.length str2 in assert(len1 >= space); let overlap = min space len2 in let s1 = String.sub str1 (len1 - space) overlap in let s2 = String.sub str2 0 overlap in if s1 <> s2 then eprintf "Lm_rformat.margin_string: strings do not overlap: \"%s\":%d:\"%s\"@." (**) (String.escaped str1) space (String.escaped str2); String.sub str1 0 (len1 - space) ^ str2 (* * Get the info from the buffer. *) let rec get_unformatted buf = match buf.buf_info with Unformatted info -> info | Formatted { formatted_commands = commands; formatted_breaks = breaks } -> { unformatted_commands = commands; unformatted_index = Array.length breaks } | Formatting _ -> (* * This used to be an error, but we now allow the user to perform * explicit nesting. These user-generated boxes will be in Formatting * mode in general. *) flush_formatting buf; get_unformatted buf (* * Get format info from the buffer. *) let get_formatted buf = match buf.buf_info with Formatted info -> info | Unformatted { unformatted_commands = commands; unformatted_index = index } -> { formatted_commands = commands; formatted_breaks = Array.create (succ index) false; formatted_col = 0; formatted_maxx = 0; formatted_lmargin = 0, ""; formatted_search = false } | Formatting _ -> raise (Invalid_argument "Lm_rformat.get_formatted") (* * Search for the next Text item. *) let rec next_text_len stack = function Text (len, _) :: _ when len > 0 -> len | Inline buf :: t -> (match buf.buf_tag with AZoneTag -> 1 | IZoneTag -> next_text_len stack t | _ -> let { unformatted_commands = commands } = get_unformatted buf in next_text_len (t :: stack) commands) | _ :: t -> next_text_len stack t | [] -> (match stack with t :: tl -> next_text_len tl t | [] -> 0) (* * Breaks are never taken in a linear zone. *) let rec search_lzone buf lmargin rmargin col maxx search = if !debug_rformat then eprintf "Lm_rformat.search_lzone@."; let rec collect col maxx = function h :: t -> let col, maxx = match h with Text (len, _) -> let col = col + len in col, max col maxx | Break (_, _, notake_len, _, _) | CBreak (_, _, notake_len, _, _) -> let col = col + notake_len in col, max col maxx | HBreak -> let col = succ col in col, max col maxx | Inline buf' -> search_lzone buf' lmargin rmargin col maxx search in if search && col >= rmargin then raise MarginError; collect col maxx t | [] -> col, maxx in let { unformatted_commands = commands } = get_unformatted buf in let col, maxx = collect col maxx commands in let formatted = { formatted_commands = commands; formatted_breaks = [||]; formatted_col = col; formatted_maxx = maxx; formatted_lmargin = lmargin; formatted_search = search } in buf.buf_info <- Formatted formatted; col, maxx (* * This is the generic search for a non-linear zone. * The break array is passed as an argument, and this * function is both for tagged zones, and as the inner * search of hard/soft breaking zones. *) and search_tzone buf stack ((lmargin, _) as lmargin') rmargin col maxx breaks search = if !debug_rformat then eprintf "Lm_rformat.search_tzone@."; let rec collect col maxx search = function h :: t -> begin match h with Text (len, _) -> let col = col + len in if search && col >= rmargin then raise MarginError; collect col (max col maxx) search t | CBreak (index, take_len, notake_len, _, _) -> if !debug_rformat then eprintf "CBreak col=%d rmargin=%d search=%b index=%d breaks=%b@." col rmargin search index breaks.(index); if search then (* Searching for margin error in linear mode *) let col = col + notake_len in if col >= rmargin then raise MarginError; collect col (max col maxx) true t else if breaks.(index) then (* Break has been chosen, and we are not searching *) collect (lmargin + take_len) maxx search t else let len = next_text_len stack t in let col' = col + notake_len in if col' + len >= rmargin then begin breaks.(index) <- true; collect (lmargin + take_len) maxx false t end else collect (col + notake_len) (max col' maxx) false t | Break (index, take_len, notake_len, _, _) -> if !debug_rformat then eprintf "Break col=%d rmargin=%d search=%b index=%d breaks=%b@." col rmargin search index breaks.(index); if search then (* Searching for margin error in linear mode *) let col = col + notake_len in if col >= rmargin then raise MarginError; collect col (max col maxx) true t else if breaks.(index) then (* Break has been chosen, and we are not searching *) collect (lmargin + take_len) maxx search t else (* Not searching, and break hasn't been tried yet *) (try let col = col + notake_len in collect col (max col maxx) true t with MarginError -> breaks.(index) <- true; collect (lmargin + take_len) maxx false t) | HBreak -> (* Hard breaks are always taken *) collect lmargin maxx search t | Inline buf' -> let col, maxx = search_zone buf' (t :: stack) lmargin' rmargin col maxx breaks search in collect col maxx search t end | [] -> col, maxx in let { unformatted_commands = commands } = get_unformatted buf in let col, maxx = collect col maxx search commands in let formatted = { formatted_commands = commands; formatted_breaks = breaks; formatted_col = col; formatted_maxx = maxx; formatted_lmargin = lmargin'; formatted_search = search } in buf.buf_info <- Formatted formatted; col, maxx (* * Hard breaks are always taken in a hard zone. * Soft breaks are taken only if the margin would be exceeded otherwise. *) and search_hzone buf stack lmargin rmargin col maxx search = let { unformatted_index = index } = get_unformatted buf in let breaks = Array.create (succ index) false in breaks.(0) <- true; search_tzone buf stack lmargin rmargin col maxx breaks search and search_szone buf stack lmargin rmargin col maxx search = let { unformatted_index = index } = get_unformatted buf in let breaks = Array.create (succ index) false in if search then search_tzone buf stack lmargin rmargin col maxx breaks search else try search_tzone buf stack lmargin rmargin col maxx breaks true with MarginError -> breaks.(0) <- true; search_tzone buf stack lmargin rmargin col maxx breaks false (* * Generic zone searcher. *) and search_zone buf stack lmargin rmargin col maxx breaks search = if !debug_rformat then eprintf "Lm_rformat.search_zone@."; match buf.buf_tag with LZoneTag -> search_lzone buf lmargin rmargin col maxx search | HZoneTag -> search_hzone buf stack lmargin rmargin col maxx search | SZoneTag -> search_szone buf stack lmargin rmargin col maxx search | IZoneTag -> (* All text inside is invisible to margin calculations *) col, maxx | AZoneTag -> (* An atomic zone takes exactly 1 character *) let col = succ col in if search && col >= rmargin then raise MarginError; col, max col maxx | MZoneTag (off, str) -> (* Adjust the offset, so we don't go too far right *) (* XXX: JYH: changed this to mod temporarily, until we think of something smarter *) let col' = col + off in let col' = col' mod (rmargin / lcol_const) in let off = col' - col in (* Adjust the left margin *) let lmargin, str' = lmargin in let space = col - lmargin in let lmargin = col + off, margin_string str' space str in search_tzone buf stack lmargin rmargin col maxx breaks search | TZoneTag _ -> search_tzone buf stack lmargin rmargin col maxx breaks search (* * Calculate all the line breaks. *) let compute_breaks buf width = if !debug_rformat then eprintf "Lm_rformat.compute_breaks@."; flush_formatting buf; search_zone buf [] (0, "") width 0 0 [||] false (* * Refresh a buffer. *) let refresh_breaks buf = flush_formatting buf; match buf.buf_info with Formatted { formatted_breaks = breaks; formatted_col = col; formatted_maxx = rmargin; formatted_lmargin = lmargin; } -> search_zone buf [] lmargin rmargin col col breaks false | Unformatted _ | Formatting _ -> raise (Invalid_argument "Lm_rformat.compute_breaks") (* * "tab" to a position on the next line. *) let tab printer pos = printer ("\n" ^ (String.make pos ' ')) (* * Some empty print functions. *) let print_arg1_invis _ = () let print_arg2_invis _ _ = () (* * Format a linear zone. * Stop when the right margin is exceeded. *) let rec print_lzone buf rmargin col printer tags = if !debug_rformat then eprintf "Lm_rformat.print_lzone@."; let rec print col = function h :: t -> begin match h with Text (len, s) -> printer.print_string s; print (col + len) t | Break (_, _, notake_len, _, notake) -> printer.print_string notake; print (col + notake_len) t | CBreak (_, _, notake_len, _, notake) -> printer.print_string notake; print (col + notake_len) t | HBreak -> printer.print_string " "; print (succ col) t | Inline buf' -> print (print_zone buf' rmargin col printer true tags) t end | [] -> col in print col (get_formatted buf).formatted_commands (* * Format a tagged zone. *) and print_tzone buf rmargin col printer tags = if !debug_rformat then eprintf "Lm_rformat.print_tzone@."; let { formatted_commands = commands; formatted_breaks = breaks; formatted_lmargin = ((lmargin', _) as lmargin) } = get_formatted buf in let rec print col = function h :: t -> begin match h with Text (len, s) -> printer.print_string s; print (col + len) t | Break (index, _, notake_len, take, notake) -> if breaks.(index) then begin printer.print_tab lmargin tags; printer.print_string take; print lmargin' t end else begin printer.print_string notake; print (col + notake_len) t end | CBreak (index, _, notake_len, take, notake) -> if breaks.(index) then begin printer.print_tab lmargin tags; printer.print_string take; print lmargin' t end else begin printer.print_string notake; print (col + notake_len) t end | HBreak -> printer.print_tab lmargin tags; print lmargin' t | Inline buf' -> print (print_zone buf' rmargin col printer false tags) t end | [] -> col in print col commands (* * Generic formatter. *) and print_ltzone linear = if linear then print_lzone else print_tzone and print_zone buf rmargin col printer linear tags = if !debug_rformat then eprintf "Lm_rformat.print_zone@."; match buf.buf_tag with LZoneTag -> print_lzone buf rmargin col printer tags | HZoneTag | SZoneTag -> print_ltzone linear buf rmargin col printer tags | IZoneTag -> let printer = { printer with print_string = printer.print_invis; print_tab = print_arg2_invis } in print_ltzone linear buf rmargin col printer tags | AZoneTag -> let buffer = Buffer.create 16 in let print_string = Buffer.add_string buffer in let printer = { printer with print_string = print_string; print_invis = print_string; print_tab = print_arg2_invis } in let col = print_ltzone linear buf rmargin col printer tags in printer.print_atomic (Buffer.contents buffer); col | MZoneTag (off, _) -> (print_ltzone linear buf rmargin col printer tags) + off | TZoneTag tag -> printer.print_begin_tag tag; let col = print_ltzone linear buf rmargin col printer (tag::tags) in printer.print_end_tag tag; col let print_buf buf rmargin printer = if !debug_rformat then eprintf "Lm_rformat.print_buf@."; print_zone buf rmargin 0 printer false (************************************************************************ * PRINTING * ************************************************************************) (* * Generic printer. *) let print_to_printer buf rmargin printer = ignore (compute_breaks buf rmargin); ignore (print_buf buf rmargin printer []) (************************************************************************ * Marshaling. *) (* * Marshaling includes info. *) type marshal_info = { marshal_version : string; marshal_buffers : buffer list } (* * Identifier. *) let marshal_version = "$Id: lm_rformat.ml 9462 2006-08-03 22:51:52Z nogin $" (* * Place in unformatted mode for marshaling. *) let squash_buffer buf = let unformatted = get_unformatted buf in { buf with buf_info = Unformatted unformatted } (* * Marshal a list of buffers. *) let marshal_buffers bufs = let marshal = { marshal_version = marshal_version; marshal_buffers = List.map squash_buffer bufs } in Marshal.to_string marshal [] (* * Recover the buffers. *) let unmarshal_buffers s = (* Check buffer *) let length = String.length s in let () = if length <= Marshal.header_size || length < Marshal.total_size s 0 then raise (Failure "Lm_rformat.unmarshal_buffers") in let marshal = Marshal.from_string s 0 in let { marshal_version = version; marshal_buffers = bufs } = marshal in if version <> marshal_version then raise (Failure "Lm_rformat.unmarshal_buffers"); bufs (* * -*- * Local Variables: * Caml-master: "manager" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_sig.ml0000664000152300015230000000636110653713501022135 0ustar jyhjyh(* * Our personal implementation of threads. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) module type MutexSig = sig type t val create : string -> t val lock : t -> unit val try_lock : t -> bool val unlock : t -> unit end module type ConditionSig = sig type t type mutex val create : unit -> t val wait : t -> mutex -> unit val signal : t -> unit val broadcast : t -> unit end (* * The "state" provides thread-local storage with * read and write locks. By default, all threads * share the same state. All elements that are * added are available in all threads, but * each thread may have a different value for * the element. * * The read and write functions are locked * using a fair readers-writers protocol. *) module type StateSig = sig type t type 'a entry (* State operations *) val create : unit -> t val current : unit -> t val set : t -> unit val with_state : t -> ('a -> 'b) -> 'a -> 'b (* Global variables *) val shared_val : string -> 'a -> 'a entry val private_val : string -> 'a -> ('a -> 'a) -> 'a entry val read : 'a entry -> ('a -> 'b) -> 'b val write : 'a entry -> ('a -> 'b) -> 'b val unlock : 'a entry -> (unit -> 'b) -> 'b (* This function is only valid within a lock *) val get : 'a entry -> 'a end module type ThreadSig = sig type t type id val enabled : bool val create : ('a -> 'b) -> 'a -> t val self : unit -> t val join : t -> unit val id : t -> int val sigmask : Unix.sigprocmask_command -> int list -> int list (* * XXX: This is a hack to address the "Sys.Break does not get raised inside * C blocking sections" problem. * See http://caml.inria.fr/pub/ml-archives/caml-list/2007/07/3662ad69f77253674f580b174c85dfbb.en.html for detail. * The (raise_ctrl_c_wrapper f x) behaves like (f x), except that it makes * sure that any Ctrl-C event quickly results in a Sys.Break exception, even * if f spends "forever" inside a C blocking section. *) val raise_ctrl_c_wrapper: ('a -> 'b) -> 'a -> 'b end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_splay_table.mli0000664000152300015230000000363210464477010022474 0ustar jyhjyh(* * A splay table is like a functional hash table. * This code is derived from the Splay_set code. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Alexey Nogin, Jason Hickey * nogin@cs.cornell.edu * jyh@cs.cornell.edu *) open Lm_map_sig (* * Create a table. *) type ('elt, 'data) table val create : ('elt, 'data, ('elt, 'data) table) table_create_type (* * Build the table over an ordered type. *) module MakeTable (Base : TableBaseSig) : TableSig with type t = (Base.elt, Base.data) table with type elt = Base.elt with type data = Base.data (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_shell.mli0000664000152300015230000000353010456222231022622 0ustar jyhjyh(* * A simple process-id interface to threads. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) type pid type job_type = HiddenJob | VisibleJob val create : string -> job_type -> pid val set_pid : pid -> unit val get_pid : unit -> pid val get_pids : unit -> pid list val with_pid : pid -> ('a -> 'b) -> 'a -> 'b val with_current : ('a -> 'b) -> 'a -> 'b (* * Raises Failure if the string is not well-formed. * Raises Not_found if the string is not a current pid. *) val make_pid : string -> int -> pid val dest_pid : pid -> string * int (* * Create, or find a previous job with this name. *) val create_or_find : string -> int -> job_type -> pid (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_index.ml0000664000152300015230000003755510456222231021140 0ustar jyhjyh(* * Index module based on tables. * An index is essentially a multi-level table. * Each entry has an associated data item and subtable. * * ---------------------------------------------------------------- * * Copyright (C) 2002 Michael Maire, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Michael Maire * mmaire@caltech.edu * * ---------------------------------------------------------------- * Revision History * * 2002 Apr 20 Michael Maire Initial Version * 2002 Apr 25 Michael Maire Renamed iter, maps, folds to *_all * added single level iters, maps, folds * 2002 Apr 26 Michael Maire Added functions for explicitly adding * subindices * 2002 May 1 Michael Maire Made all adds nondestructive towards * subindices (if subindex is not explicitly * specified in the add) * Changed interface *) (* * Elements. * This type specifies the type of the keys used in the index. *) module type OrderedType = sig type t val compare : t -> t -> int end (* * These are the functions provided by the index. *) module type LmIndex = sig (* index maps key lists to elements of type 'a *) type key type 'a t (* empty index and empty test *) val empty : 'a t val is_empty : 'a t -> bool (* tests/lookups - single level*) val mem : 'a t -> key -> bool val find : 'a t -> key -> 'a t * 'a val find_index : 'a t -> key -> 'a t val find_data : 'a t -> key -> 'a (* tests/lookups - multi level*) val mem_list : 'a t -> key list -> bool val find_list : 'a t -> key list -> 'a t * 'a val find_list_index : 'a t -> key list -> 'a t val find_list_data : 'a t -> key list -> 'a (* addition and removal - single level*) val add : 'a t -> key -> 'a -> 'a t val add_i : 'a t -> key -> 'a t * 'a -> 'a t val remove : 'a t -> key -> 'a t (* addition of a chain of nested entries *) val add_list : 'a t -> key list -> 'a list -> 'a t val add_list_i : 'a t -> key list -> ('a t * 'a) list -> 'a t (* addition/removal of single entries *) val add_entry : 'a t -> key list -> 'a -> 'a t val add_entry_i : 'a t -> key list -> 'a t * 'a -> 'a t val remove_entry : 'a t -> key list -> 'a t (* filter addition/removal - single level *) val filter_add : 'a t -> key -> ('a option -> 'a) -> 'a t val filter_add_i : 'a t -> key -> (('a t * 'a) option -> ('a t * 'a)) -> 'a t val filter_remove : 'a t -> key -> ('a -> 'a option) -> 'a t val filter_remove_i : 'a t -> key -> (('a t * 'a) -> ('a t * 'a) option) -> 'a t (* filter addition of a chain of nested entries *) val filter_add_list : 'a t -> key list -> ('a option -> 'a) list -> 'a t val filter_add_list_i : 'a t -> key list -> (('a t * 'a) option -> ('a t * 'a)) list -> 'a t (* filter addition/removal of single entries *) val filter_add_entry : 'a t -> key list -> ('a option -> 'a) -> 'a t val filter_add_entry_i : 'a t -> key list -> (('a t * 'a) option -> ('a t * 'a)) -> 'a t val filter_remove_entry : 'a t -> key list -> ('a -> 'a option) -> 'a t val filter_remove_entry_i : 'a t -> key list -> (('a t * 'a) -> ('a t * 'a) option) -> 'a t (* iterators, maps, and folds - single level *) val iter : (key -> ('a t * 'a) -> unit) -> 'a t -> unit val map : (('a t * 'a) -> ('b t * 'b)) -> 'a t -> 'b t val mapi : (key -> ('a t * 'a) -> ('b t * 'b)) -> 'a t -> 'b t val fold : ('a -> key -> ('b t * 'b) -> 'a) -> 'a -> 'b t -> 'a val fold_map : ('a -> key -> ('b t * 'b) -> 'a * ('c t * 'c)) -> 'a -> 'b t -> 'a * 'c t (* iterators, maps, and folds - entire index *) val iter_all : (key list -> 'a -> unit) -> 'a t -> unit val map_all : ('a -> 'b) -> 'a t -> 'b t val mapi_all : (key list -> 'a -> 'b) -> 'a t -> 'b t val fold_all : ('a -> key list -> 'b -> 'a) -> 'a -> 'b t -> 'a val fold_map_all : ('a -> key list -> 'b -> 'a * 'c) -> 'a -> 'b t -> 'a * 'c t end (* * Make the index. *) module LmMake (Base : OrderedType) : LmIndex with type key = Base.t = struct (* * Construct table type for elements. *) module EltTable = Lm_map.LmMake (Base) (* * An index is a tree of nested tables. *) type ('elt, 'data) tree = Leaf | Index of (('elt, 'data) tree * 'data) EltTable.t type key = Base.t type 'a t = (key, 'a) tree (* * An empty index is a leaf. *) let empty = Leaf (* * Test if index is empty. *) let is_empty = function Leaf -> true | Index _ -> false (* * Test membership of a key in an index. *) let mem index key = match index with Leaf -> false | Index table -> EltTable.mem table key (* * Lookup a key in an index. *) let find index key = match index with Leaf -> raise Not_found | Index table -> EltTable.find table key (* * Lookup the subindex for a key in an index. *) let find_index index key = let index, _ = find index key in index (* * Lookup the data for a key in an index. *) let find_data index key = let _, data = find index key in data (* * Test for membership of a key sequence in an index. *) let rec mem_list index keys = match keys with [] -> false | key :: [] -> mem index key | key :: keys -> let index = find_index index key in mem_list index keys (* * Lookup a key sequence in an index. *) let rec find_list index keys = match keys with [] -> raise Not_found | key :: [] -> find index key | key :: keys -> let index = find_index index key in find_list index keys (* * Lookup the subindex for a key sequence. *) let find_list_index index keys = let index, _ = find_list index keys in index (* * Lookup the data for a key sequence. *) let find_list_data index keys = let _, data = find_list index keys in data (* * Lookup subindex and data for a key, return an option. *) let find_opt index key = try Some (find index key) with Not_found -> None (* * Lookup subindex for a key, return an option. *) let find_index_opt index key = try Some (find_index index key) with Not_found -> None (* * Lookup data for key, return an option (Some data or None). *) let find_data_opt index key = try Some (find_data index key) with Not_found -> None (* * Filter add a (key, (index, data)) pair to an index. *) let filter_add_i index key f = match index with Leaf -> Index (EltTable.add (EltTable.empty) key (f None)) | Index table -> let i_entry = find_opt index key in Index (EltTable.add table key (f i_entry)) (* * Filter add a (key, data) pair to an index. *) let filter_add index key f = filter_add_i index key ( fun i_entry -> match i_entry with None -> Leaf, f None | Some (i, d) -> i, f (Some d) ) (* * Filter remove a key from an index using its (index, data) entry *) let filter_remove_i index key f = match index with Leaf -> Leaf | Index table -> let i_entry = f (find index key) in match i_entry with Some _ -> Index (EltTable.remove table key) | None -> index (* * Filter remove a key from an index using its data. *) let filter_remove index key f = filter_remove_i index key ( fun (i, d) -> match (f d) with Some d -> Some (i, d) | None -> None ) (* * Filter add a chain of (key, (index, data)) pairs to an index. *) let rec filter_add_list_i index keys fs = match keys, fs with [], [] -> index | key :: [], f :: [] -> filter_add_i index key f | key :: keys, f :: fs -> let index = filter_add_i index key f in let subindex, data = find index key in let subindex = filter_add_list_i subindex keys fs in filter_add_i index key (fun _ -> subindex, data) | _ -> raise (Invalid_argument "filter_add_list_i") (* * Filter add a chain of (key, data) pairs to an index. *) let rec filter_add_list index keys fs = match keys, fs with [], [] -> index | key :: [], f :: [] -> filter_add index key f | key :: keys, f :: fs -> let index = filter_add index key f in let subindex, data = find index key in let subindex = filter_add_list subindex keys fs in filter_add_i index key (fun _ -> subindex, data) | _ -> raise (Invalid_argument "filter_add_list") (* * Filter add an (index, data) entry at the end of a chain in the index. *) let rec filter_add_entry_i index keys f = match keys with [] -> index | key :: [] -> filter_add_i index key f | key :: keys -> let subindex, data = find index key in let subindex = filter_add_entry_i subindex keys f in filter_add_i index key (fun _ -> subindex, data) (* * Filter add a data entry at the end of a chain in the index. *) let filter_add_entry index keys f = filter_add_entry_i index keys ( fun i_entry -> match i_entry with None -> Leaf, f None | Some (i, d) -> i, f (Some d) ) (* * Filter remove an (index, data) entry at the end of a chain in the index. *) let rec filter_remove_entry_i index keys f = match keys with [] -> index | key :: [] -> filter_remove_i index key f | key :: keys -> let subindex, data = find index key in let subindex = filter_remove_entry_i subindex keys f in filter_add_i index key (fun _ -> subindex, data) (* * Filter remove a data entry at the end of a chain in the index. *) let filter_remove_entry index keys f = filter_remove_entry_i index keys ( fun (i, d) -> match (f d) with Some d -> Some (i, d) | None -> None ) (* * Add a (key, data) pair to an index. *) let add index key data = filter_add index key (fun _ -> data) (* * Add a (key, (index, data)) pair to an index. *) let add_i index key i_entry = filter_add_i index key (fun _ -> i_entry) (* * Remove a key from an index. *) let remove index key = filter_remove index key (fun data -> Some data) (* * Add a chain of (key, data) pairs to an index. *) let add_list index keys datas = let fs = List.map (fun data -> (fun _ -> data)) datas in filter_add_list index keys fs (* * Add a chain of (key, (index, data)) pairs to an index. *) let add_list_i index keys i_entries = let fs = List.map (fun i_entry -> (fun _ -> i_entry)) i_entries in filter_add_list_i index keys fs (* * Add a data entry at the end of a chain in the index. *) let add_entry index keys data = filter_add_entry index keys (fun _ -> data) (* * Add an (index, data) entry at the end of a chain in the index. *) let add_entry_i index keys i_entry = filter_add_entry_i index keys (fun _ -> i_entry) (* * Remove an entry at the end of a chain in the index. *) let remove_entry index keys = filter_remove_entry index keys (fun data -> Some data) (* * Iterate over the top level entries. *) let iter f = function Leaf -> () | Index table -> EltTable.iter f table (* * Apply map to the top level entries. *) let map f = function Leaf -> Leaf | Index table -> Index (EltTable.map f table) (* * Apply map to top level entries using keys. *) let mapi f = function Leaf -> Leaf | Index table -> Index (EltTable.mapi f table) (* * Fold over top level entries. *) let fold f data = function Leaf -> data | Index table -> EltTable.fold f data table (* * Fold map over top level entries. *) let fold_map f data = function Leaf -> data, Leaf | Index table -> let data', table' = EltTable.fold_map f data table in data', Index (table') (* * Iterate over every entry in the index. *) let rec iter_all_list f keys = function Leaf -> () | Index table -> EltTable.iter ( fun key (index, data) -> let keys = keys @ [key] in f keys data; iter_all_list f keys index ) table let iter_all f index = iter_all_list f [] index (* * Apply map to every element in the index. *) let rec map_all f = function Leaf -> Leaf | Index table -> Index ( EltTable.map ( fun (index, data) -> (map_all f index, f data) ) table ) (* * Apply map using keys. *) let rec mapi_all_list f keys = function Leaf -> Leaf | Index table -> Index ( EltTable.mapi ( fun key (index, data) -> let keys = keys @ [key] in (mapi_all_list f keys index, f keys data) ) table ) let mapi_all f index = mapi_all_list f [] index (* * Fold over the index. *) let rec fold_all_list f keys data = function Leaf -> data | Index table -> EltTable.fold ( fun a key (index, b) -> let keys = keys @ [key] in (fold_all_list f keys (f a keys b) index) ) data table let fold_all f data index = fold_all_list f [] data index (* * Fold map over the index. *) let rec fold_map_all_list f keys data = function Leaf -> data, Leaf | Index table -> let data', table' = EltTable.fold_map ( fun a key (index, b) -> let keys = keys @ [key] in let res_a, res_c = f a keys b in let res_a', index' = fold_map_all_list f keys res_a index in res_a', (index', res_c) ) data table in data', Index (table') let fold_map_all f data index = fold_map_all_list f [] data index end omake-0.9.8.5/src/libmojave-external/stdlib/lm_io.ml0000664000152300015230000002615110322060244020422 0ustar jyhjyh(* * $Id: lm_io.ml 7878 2005-10-09 00:13:24Z jyh $ * Operations to do I/O * * Moved here from Pervasives *) open String (* * Reading. *) external fopen : string -> int -> int -> int = "%file_open" external fclose : int -> unit = "%file_close" external fread : int -> string -> int -> int -> int = "%file_read" external fwrite : int -> string -> int -> int -> int = "%file_write" external fseek : int -> int -> unit = "%file_seek" external ftell : int -> int = "%file_tell" external flength : int -> int = "%file_len" let code = int_of_char let chr = char_of_int (* * An in-channel contains a buffer. *) type channel = { mutable chan_fd : int; chan_buf : string; mutable chan_min : int; mutable chan_max : int } type in_channel = channel type out_channel = channel (* * Buffer operations. *) let bufsize = 8192 let mk_chan fd = { chan_fd = fd; chan_buf = screate bufsize; chan_min = 0; chan_max = 0 } let stdin = mk_chan 0 let stdout = mk_chan 1 let stderr = mk_chan 2 (* * Convert the open flags. *) type open_flag = Open_rdonly | Open_wronly | Open_append | Open_creat | Open_trunc | Open_excl | Open_binary | Open_text | Open_nonblock let o_rdonly = 1 let o_wronly = 2 let o_rdwr = 3 let o_creat = 4 let o_excl = 8 let o_noctty = 16 let o_trunc = 32 let o_append = 64 let o_nonblock = 128 let o_sync = 256 let o_binary = 512 let rec mask_of_flags mask = function h :: t -> let mask' = match h with Open_rdonly -> o_rdonly | Open_wronly -> o_wronly | Open_append -> o_append | Open_creat -> o_creat | Open_trunc -> o_trunc | Open_excl -> o_excl | Open_binary -> o_binary | Open_text -> 0 | Open_nonblock -> o_nonblock in mask_of_flags (mask lor mask') t | [] -> mask (* * Opening and closing. *) let open_gen mask flags umask name = let mask = mask_of_flags 0 flags in let fd = fopen name mask umask in if fd < 0 then raise (Sys_error name); mk_chan fd let open_out_gen = open_gen o_wronly let open_in_gen = open_gen o_rdonly let open_out_bin = open_gen (o_wronly lor o_binary) [] 438 let open_out = open_gen o_wronly [] 438 let open_in_bin = open_gen (o_rdonly lor o_binary) [] 0 let open_in = open_gen o_rdonly [] 0 let close chan = let fd = chan.chan_fd in if fd >= 0 then fclose fd; chan.chan_fd <- (-1) let close_in = close let close_out = close (* * Filling and flushing. *) let filbuf chan = let { chan_fd = fd; chan_buf = buf } = chan in let count = fread fd buf 0 bufsize in if count <= 0 then raise End_of_file; chan.chan_min <- 0; chan.chan_max <- count let flush chan = let { chan_fd = fd; chan_buf = buf; chan_min = min; chan_max = max } = chan in let rec writebuf min = if min < max then let count = max - min in let count = fwrite fd buf min count in if count <= 0 then begin chan.chan_min <- min; raise End_of_file end; writebuf (min + count) in writebuf min; chan.chan_min <- 0; chan.chan_max <- 0 (* * Output. *) let output_char chan c = if chan.chan_max = bufsize then flush chan; let max = chan.chan_min in chan.chan_buf.[max] <- c; chan.chan_max <- succ max let rec writebuf fd buf off len = if off < len then let count = len - off in let count = fwrite fd buf off count in if count <= 0 then raise End_of_file; writebuf fd buf (off + count) len let output chan buf off len = if len - off >= bufsize then begin flush chan; writebuf chan.chan_fd buf off len; chan.chan_min <- 0; chan.chan_max <- 0 end else begin if chan.chan_max + len - off > bufsize then flush chan; sblit buf off chan.chan_buf chan.chan_max len; chan.chan_max <- chan.chan_max + len end let output_string chan s = output chan s 0 (slength s) let output_byte chan i = output_char chan (chr i) let output_binary_int chan i = output_byte chan ((i lsr 24) land 255); output_byte chan ((i lsr 16) land 255); output_byte chan ((i lsr 8) land 255); output_byte chan (i land 255) let seek_out chan loc = flush chan; fseek chan.chan_fd loc let pos_out chan = flush chan; ftell chan.chan_fd let out_channel_length chan = flush chan; flength chan.chan_fd let set_binary_mode_out chan flag = () (* * Input. *) let ungetc chan = let min = chan.chan_min in if min = 0 then raise (Invalid_argument "ungetc"); chan.chan_min <- pred min let set_binary_mode_in chan flag = () let rec input_char chan = let { chan_buf = buf; chan_min = min; chan_max = max } = chan in if min = max then begin filbuf chan; input_char chan end else begin chan.chan_min <- succ min; buf.[min] end let input_byte chan = code (input_char chan) let input_binary_int chan = let c1 = input_byte chan in let c2 = input_byte chan in let c3 = input_byte chan in let c4 = input_byte chan in ((c1 lsl 24) lor (c2 lsl 16) lor (c3 lsl 8) lor c4) let rec input_line chan = let { chan_buf = buf; chan_min = min; chan_max = max } = chan in if min = max then begin filbuf chan; input_line chan end else let rec search s i min max = if i = max then let s = s ^ (ssub buf min max) in try filbuf chan; search s chan.chan_min chan.chan_min chan.chan_max with End_of_file -> s else if buf.[i] = '\n' then let s = s ^ (ssub buf min i) in chan.chan_min <- succ i; s else search s (succ i) min max in search "" chan.chan_min chan.chan_min chan.chan_max let input chan buf off len = if chan.chan_min = chan.chan_max then filbuf chan; let { chan_buf = buf'; chan_min = min'; chan_max = max' } = chan in let count = max' - min' in if count < len then begin sblit buf' min' buf off count; chan.chan_min <- 0; chan.chan_max <- 0; count end else begin sblit buf' min' buf off len; chan.chan_min <- min' + len; len end let really_input chan buf off len = let rec read amount off len = if off < len then let { chan_buf = buf'; chan_min = min'; chan_max = max' } = chan in let count = max' - min' in if count < len then let amount = amount + count in let _ = sblit buf' min' buf off count in let off = off + count in let len = len - count in filbuf chan; read amount off len else let amount = amount + len in sblit buf' min' buf off len; chan.chan_min <- chan.chan_min + len in read 0 off len (* * Seeking. *) let seek_in chan pos = chan.chan_min <- 0; chan.chan_max <- 0; fseek chan.chan_fd pos let pos_in chan = let pos = ftell chan.chan_fd in pos - (chan.chan_max - chan.chan_min) let in_channel_length chan = flength chan.chan_fd (* * Standard operations. *) let print_char = output_char stdout let print_string = output_string stdout let print_int i = print_string (string_of_int i) let print_float x = print_string (string_of_float x) let print_newline () = print_char '\n' let print_endline s = print_string s; print_newline () let prerr_char = output_char stderr let prerr_string = output_string stderr let prerr_int i = prerr_string (string_of_int i) let prerr_float x = prerr_string (string_of_float x) let prerr_newline () = prerr_char '\n' let prerr_endline s = prerr_string s; prerr_newline () let read_line () = input_line stdin let is_digit = function '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' -> true | _ -> false let int_of_digit = function '0' -> 0 | '1' -> 1 | '2' -> 2 | '3' -> 3 | '4' -> 4 | '5' -> 5 | '6' -> 6 | '7' -> 7 | '8' -> 8 | '9' -> 9 | _ -> raise (Invalid_argument "int_of_digit") let is_space = function ' ' | '\t' | '\r' | '\n' -> true | _ -> false (* * Skip white space. *) let rec skip_white chan = let c = input_char chan in if is_space c then skip_white chan else ungetc chan (* * Read an integer. *) let input_int chan = skip_white chan; let c = input_char chan in let negate = if c = '-' then true else begin ungetc chan; false end in let rec input i = let c = input_char chan in if is_digit c then input (i * 10 + int_of_digit c) else begin ungetc chan; if negate then -i else i end in input 0 (* * Read a floating point number. *) type float_state = FloatInt | FloatDecimal | FloatExponent | FloatSignedExponent let fbufsize = 256 let input_float chan = let buf = screate fbufsize in let _ = skip_white chan in let c = input_char chan in let negate = if c == '-' then true else begin ungetc chan; false end in let rec loop state i = if i = fbufsize then i else let c = input_char chan in buf.[i] <- c; match state with FloatInt -> if is_digit c then loop FloatInt (succ i) else if c == '.' then loop FloatDecimal (succ i) else if c == 'e' || c == 'E' then loop FloatExponent (succ i) else (ungetc chan; i) | FloatDecimal -> if is_digit c then loop FloatDecimal (succ i) else if c == 'e' || c == 'E' then loop FloatExponent (succ i) else (ungetc chan; i) | FloatExponent -> if c == '-' || c == '+' then loop FloatSignedExponent (succ i) else if is_digit c then loop FloatSignedExponent (succ i) else (ungetc chan; i) | FloatSignedExponent -> if is_digit c then loop FloatSignedExponent (succ i) else (ungetc chan; i) in let i = loop FloatInt 0 in float_of_string (ssub buf 0 i) let read_int () = input_int stdin let read_float () = input_float stdin omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_pool_system.ml0000664000152300015230000002111610652444366023734 0ustar jyhjyh(* * On Win32, select does not work on pipes. Instead, we use * threads to call all the handlers. We keep a thread pool. * When a thread makes progress, it wakes up the main process, * and returns to the pool. Each file descriptor is assigned * a thread. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_debug open Lm_thread (* module Mutex = MutexDebug module Condition = ConditionDebug *) (* * Build debugging. *) let debug_thread = create_debug (**) { debug_name = "thread"; debug_description = "Display thread debugging"; debug_value = false } (* * Data structures. *) module IntCompare = struct type t = int let compare = (-) end module IntTable = Lm_map.LmMake (IntCompare) (* * Jobs are identified by descriptor. * If the job is not visible, it is not reported * to wait. *) type job = { job_id : int; job_fun : unit -> unit; job_visible : bool } (* * We keep a master lock: only one thread is allowed to run at * any given time. This doesn't really affect performance, * since OCaml enforces this restriction anyway. Note: the * threads should release the lock before they wait for I/O. *) type pool = { mutable pool_pid : int; mutable pool_size : int; mutable pool_members : Thread.t list; mutable pool_ready : job list; mutable pool_ready_length : int; mutable pool_running : job IntTable.t; mutable pool_finished : job list; mutable pool_break : bool; pool_finished_wait : Condition.t; pool_consumer_wait : Condition.t; pool_lock : Mutex.t } (* * The pool. *) let pool = { pool_pid = 1; pool_size = 0; pool_members = []; pool_ready = []; pool_ready_length = 0; pool_running = IntTable.empty; pool_finished = []; pool_break = false; pool_finished_wait = Condition.create (); pool_consumer_wait = Condition.create (); pool_lock = Mutex.create "Lm_thread_pool" } (* * Lock for the main thread. *) let () = Mutex.lock pool.pool_lock (* * Threads are enabled. *) let enabled = true (* * Temporarily unlock the pool while performing IO. * The check_status function may generate exceptions. *) let blocking_section f x = Mutex.unlock pool.pool_lock; try let y = f x in Mutex.lock pool.pool_lock; y with exn -> Mutex.lock pool.pool_lock; raise exn let resume_inner_section f x = Mutex.lock pool.pool_lock; try let y = f x in Mutex.unlock pool.pool_lock; y with exn -> Mutex.unlock pool.pool_lock; raise exn (* * Thread main loop. *) let thread_main_loop () = try let id = Thread.id (Thread.self ()) in if !debug_thread then eprintf "Thread %d: starting@." id; let _ = Thread.sigmask Unix.SIG_SETMASK [Sys.sigint; Sys.sigquit] in Mutex.lock pool.pool_lock; if !debug_thread then eprintf "Thread %d: entered main loop@." id; let rec loop () = match pool.pool_ready with job :: rest -> pool.pool_ready <- rest; pool.pool_ready_length <- pred pool.pool_ready_length; pool.pool_running <- IntTable.add pool.pool_running job.job_id job; if !debug_thread then eprintf "Thread %d: calling function: %d@." id job.job_id; (try job.job_fun () with Sys.Break -> if !debug_thread then eprintf "Lm_thread_pool_system: %d: Break@." job.job_id; pool.pool_break <- true; Condition.signal pool.pool_finished_wait | exn -> eprintf "Lm_thread_pool_system: thread raised exception: %s: %d@." (Printexc.to_string exn) job.job_id); pool.pool_running <- IntTable.remove pool.pool_running job.job_id; if job.job_visible then begin pool.pool_finished <- job :: pool.pool_finished; Condition.signal pool.pool_finished_wait end; if pool.pool_break then Mutex.unlock pool.pool_lock else loop () | [] -> if !debug_thread then eprintf "Thread %d: waiting@." id; Condition.wait pool.pool_consumer_wait pool.pool_lock; if !debug_thread then eprintf "Thread %d: waited@." id; if not pool.pool_break then loop () in loop () with Sys.Break -> pool.pool_break <- true; if !debug_thread then eprintf "Lm_thead_pool_system: break@."; Mutex.unlock pool.pool_lock; Condition.signal pool.pool_finished_wait; Condition.signal pool.pool_consumer_wait (* * Start a thread doing something. *) let create visible f = (* * XXX: TODO: we may want to support "restarting" a pool after it was killed * with a Ctrl-C, but for now the transition to pool_break state is a kiss of * death. *) if pool.pool_break then raise Sys.Break; let id = succ pool.pool_pid in let job = { job_id = id; job_fun = f; job_visible = visible } in pool.pool_pid <- id; pool.pool_ready <- job :: pool.pool_ready; pool.pool_ready_length <- succ pool.pool_ready_length; (* Enlarge the pool if needed *) if pool.pool_size < pool.pool_ready_length + IntTable.cardinal pool.pool_running then begin pool.pool_size <- succ pool.pool_size; if !debug_thread then eprintf "Starting a new worker thread, total worker threads: %d@." pool.pool_size; pool.pool_members <- (Thread.create thread_main_loop ()) :: pool.pool_members end; (* Wake up one of the waiters if they are waiting *) Condition.signal pool.pool_consumer_wait; if !debug_thread then eprintf "Create: %d@." id; id (* * Wait until something happens, and return the identifier of * all the threads that completed. *) let wait () = (* Wait until a thread finishes *) while pool.pool_finished = [] && not pool.pool_break do if !debug_thread then eprintf "Main: waiting: %d+%d@." pool.pool_ready_length (IntTable.cardinal pool.pool_running); Condition.wait pool.pool_finished_wait pool.pool_lock; if !debug_thread then eprintf "Main: waited@."; done; if pool.pool_break then raise Sys.Break; (* Return pids of all the threads that finished *) let pids = List.map (fun job -> job.job_id) pool.pool_finished in pool.pool_finished <- []; pids (* * Wait until a specific pid disappears. *) let waitpid id = (* Wait until a thread finishes *) while IntTable.mem pool.pool_running id && not pool.pool_break do if !debug_thread then eprintf "Main: waiting: %d+%d@." pool.pool_ready_length (IntTable.cardinal pool.pool_running); Condition.wait pool.pool_finished_wait pool.pool_lock; if !debug_thread then eprintf "Main: waited@."; done; if pool.pool_break then raise Sys.Break; (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_set.mli0000664000152300015230000000321010464477010020760 0ustar jyhjyh(* * Set module, implemented using red-black trees * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_set_sig module LmMake (Ord : OrderedType) : (LmSet with type elt = Ord.t) module LmMakeDebug (Ord : OrderedTypeDebug) : (LmSetDebug with type elt = Ord.t) module Make (Ord : OrderedType) : (S with type elt = Ord.t) omake-0.9.8.5/src/libmojave-external/stdlib/lm_splay_set.ml0000664000152300015230000003514310456222231022023 0ustar jyhjyh(* * Build the set from an ordered type. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 Mojave Group, Alexey Nogin, Cornell University * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Authors: Jason Hickey, Alexey Nogin *) open Lm_set_sig module Make (Ord : OrderedType) = struct (************************************************************************ * TYPES * ************************************************************************) type elt = Ord.t (* * Table is a binary tree. * Each node has four fields: * 1. a key * 2. a left child * 3. a right child * 4. the total number of elements in the tree *) type tree = Leaf | Node of elt * tree * tree * int (* * The tree is mutable * so that we can rearrange the tree in place. * However, we all splay operations are functional, * and we assume that the rearranged tree can be * assigned atomically to this field. *) type t = { mutable splay_tree : tree } (* * Directions are used to define * paths in the tree. *) type direction = Left of tree | Right of tree (* * Result of a splay operation. *) type splay_result = SplayFound of tree | SplayNotFound of tree (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Size of a table. *) let cardinality = function Node (_, _, _, size) -> size | Leaf -> 0 let cardinal s1 = cardinality s1.splay_tree (* * Add two nodes. *) let new_node key left right = Node (key, left, right, cardinality left + cardinality right + 1) (* * This function performs the action of moving an entry * to the root. The argument is the path to the entry. *) let rec lift key left right = function [] -> new_node key left right | [Left (Node (key', _, right', _))] -> new_node key left (new_node key' right right') | [Right (Node (key', left', _, _))] -> new_node key (new_node key' left' left) right | Left (Node (key_left, _, left_right, _)) :: Left (Node (key', _, right', _)) :: ancestors -> lift key left (new_node key_left right (new_node key' left_right right')) ancestors | Right (Node (key_right, right_left, _, _)) :: Right (Node (key', left', _, _)) :: ancestors -> lift key (new_node key_right (new_node key' left' right_left) left) right ancestors | Left (Node (key_right, _, right_right, _)) :: Right (Node (key', left', _, _)) :: ancestors -> lift key (new_node key' left' left) (new_node key_right right right_right) ancestors | Right (Node (key_left, left_left, _, _)) :: Left (Node (key', _, right', _)) :: ancestors -> lift key (new_node key_left left_left left) (new_node key' right right') ancestors | _ -> raise (Invalid_argument "lift") (* * Find an entry in the tree. * Returns true iff the entry is found. * Transforms the tree so that either the * entry becomes the root, or an adjacent entry * becomes the root if the entry is not found. *) let rec splay key0 path = function Node (key, left, right, _) as node -> let comp = Ord.compare key0 key in if comp = 0 then SplayFound (lift key left right path) else if comp < 0 then if left = Leaf then SplayNotFound (lift key left right path) else splay key0 (Left node :: path) left else if right = Leaf then SplayNotFound (lift key left right path) else splay key0 (Right node :: path) right | Leaf -> SplayNotFound Leaf (* * Search without reorganizing the tree. *) let rec search key0 = function Node (key, left, right, _) -> let comp = Ord.compare key0 key in if comp = 0 then true else if comp < 0 then search key0 left else search key0 right | Leaf -> false (* * Move the rightmost node to the root. *) let rec lift_right = function Node (key, left, Leaf, _) -> key, left | Node (key, left', Node (key', left, Leaf, _), _) -> key', new_node key left' left | Node (key, left', Node (key_right, right_left, right, _), _) -> let key', left = lift_right right in key', new_node key_right (new_node key left' right_left) left | Leaf -> raise (Invalid_argument "lift_right") let rec splay_right = function Leaf -> Leaf | node -> let key, left = lift_right node in new_node key left Leaf (* * An empty tree is just a leaf. *) let empty = { splay_tree = Leaf } let is_empty s1 = s1.splay_tree = Leaf let singleton key = { splay_tree = Node (key, Leaf, Leaf, 1) } (* * check if a key is listed in the table. *) let mem t key = match splay key [] t.splay_tree with SplayFound tree -> t.splay_tree <- tree; true | SplayNotFound tree -> t.splay_tree <- tree; false (* * Add an entry to the table. * If the entry already exists, * the new value is added to the data. *) let add_aux tree key = match splay key [] tree with SplayFound tree -> tree | SplayNotFound (Node (key', left, right, _)) -> if Ord.compare key key' < 0 then new_node key left (new_node key' Leaf right) else new_node key (new_node key' left Leaf) right | SplayNotFound Leaf -> (* Tree is empty, so make a new root *) new_node key Leaf Leaf let add t key = match splay key [] t.splay_tree with SplayFound tree -> t.splay_tree <- tree; t | SplayNotFound (Node (key', left, right, _)) -> let tree = if Ord.compare key key' < 0 then new_node key left (new_node key' Leaf right) else new_node key (new_node key' left Leaf) right in { splay_tree = tree } | SplayNotFound Leaf -> (* Tree is empty, so make a new root *) { splay_tree = new_node key Leaf Leaf } (* * Remove the first entry from the hashtable. * If the value list becomes empty, remove the * entire entry from the tree. *) let remove t key = match splay key [] t.splay_tree with SplayFound tree -> begin match tree with Node (_, Leaf, right, _) -> { splay_tree = right } | Node (_, left, Leaf, _) -> { splay_tree = left } | Node (_, left, right, _) -> begin match splay_right left with Node (key, left_left, Leaf, _) -> { splay_tree = new_node key left_left right } | _ -> raise (Failure "Fun_splay_set.remove") end | Leaf -> raise (Failure "Fun_splay_set.remove") end | SplayNotFound tree -> t.splay_tree <- tree; t (* * Merge two hashtables. * Data fields get concatenated. *) let rec union_aux s1 s2 = match s1, s2 with Leaf, _ -> s2 | _, Leaf -> s1 | Node (key1, left1, right1, size1), Node (key2, left2, right2, size2) -> if size1 >= size2 then if size2 = 1 then add_aux s1 key2 else match splay key1 [] s2 with SplayFound (Node (_, left2, right2, _)) -> let left3 = union_aux left1 left2 in let right3 = union_aux right1 right2 in new_node key1 left3 right3 | SplayNotFound (Node (key2, left2, right2, _)) -> if compare key1 key2 < 0 then let left3 = union_aux left1 left2 in let right3 = union_aux right1 (new_node key2 Leaf right2) in new_node key1 left3 right3 else let left3 = union_aux left1 (new_node key2 left2 Leaf) in let right3 = union_aux right1 right2 in new_node key1 left3 right3 | _ -> raise (Failure "Fun_splay_set.union") else if size1 = 1 then add_aux s2 key1 else match splay key2 [] s1 with SplayFound (Node (_, left1, right1, _)) -> let left3 = union_aux left1 left2 in let right3 = union_aux right1 right2 in new_node key2 left3 right3 | SplayNotFound (Node (key1, left1, right1, _)) -> if compare key2 key1 < 0 then let left3 = union_aux left1 left2 in let right3 = union_aux (new_node key1 Leaf right1) right2 in new_node key2 left3 right3 else let left3 = union_aux (new_node key1 left1 Leaf) left2 in let right3 = union_aux right1 right2 in new_node key2 left3 right3 | _ -> raise (Failure "Fun_splay_set.union") let union s1 s2 = { splay_tree = union_aux s1.splay_tree s2.splay_tree } (* * See if two sets intersect. *) let rec intersects s1 s2 = match s1, s2 with Leaf, _ | _, Leaf -> false | Node (key1, left1, right1, size1), Node (key2, left2, right2, size2) -> if size1 >= size2 then if size2 = 1 then search key2 s1 else match splay key1 [] s2 with SplayFound _ -> true | SplayNotFound (Node (key2, left2, right2, _)) -> if compare key1 key2 < 0 then (intersects left1 left2) || (intersects right1 (new_node key2 Leaf right2)) else (intersects right1 right2) || (intersects left1 (new_node key2 left2 Leaf)) | _ -> raise (Failure "Fun_splay_set.intersects") else if size1 = 1 then search key1 s2 else match splay key1 [] s1 with SplayFound _ -> true | SplayNotFound (Node (key1, left1, right1, _)) -> if compare key2 key1 < 0 then (intersects left1 left2) || (intersects (new_node key1 Leaf right1) right2) else (intersects right1 right2) || (intersects (new_node key1 left1 Leaf) left2) | _ -> raise (Failure "Fun_splay_set.union") let intersectp s1 s2 = intersects s1.splay_tree s2.splay_tree (* * Iterate a function over the hashtable. *) let rec iter_aux f = function Node (key, left, right, _) -> iter_aux f left; f key; iter_aux f right | Leaf -> () let iter f t = iter_aux f t.splay_tree (* * Convert the set to a list. *) let rec to_list_aux l = function Node (key, left, right, _) -> to_list_aux (key :: to_list_aux l right) left | Leaf -> l let to_list t = to_list_aux [] t.splay_tree let elements = to_list (* * Create the set from a list. *) let rec of_sorted_list_aux set = function s :: t -> of_sorted_list_aux (add set s) t | [] -> set let of_sorted_list = of_sorted_list_aux empty let of_list l = List.fold_left (fun set item -> add set item) empty l (* * Intersection. *) let rec mem_filt s = function [] -> [] | (h :: t) as l -> if mem s h then let rem = mem_filt s t in if rem == t then l else h :: rem else mem_filt s t let rec not_mem_filt s = function [] -> [] | (h :: t) as l -> if mem s h then not_mem_filt s t else let rem = not_mem_filt s t in if rem == t then l else h :: rem let rec fst_mem_filt s = function [] -> [] | (((v, _) as h) :: t) as l -> if mem s v then let rem = fst_mem_filt s t in if rem == t then l else h :: rem else fst_mem_filt s t end (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/Files0000664000152300015230000000161310557452662017775 0ustar jyhjyhSTDLIB_FILES[] = lm_debug lm_nocompare lm_big_int lm_num lm_rformat lm_rformat_raw lm_rformat_text lm_rformat_html lm_rformat_tex lm_make_printf lm_format lm_rprintf lm_printf lm_printf_rbuffer lm_heap lm_array_util lm_string_util lm_list_util lm_file_util lm_int_util lm_hashtbl_util lm_ref_util lm_array_sig lm_large_array lm_large_array_weak lm_dag_sig lm_cycle_dag lm_imp_dag lm_set_sig lm_map_sig lm_linear_set_sig lm_set lm_map lm_table_util lm_small_set lm_hash_set lm_splay_set lm_splay_table lm_string_set lm_int_set lm_thread_sig lm_thread_core lm_thread lm_thread_util lm_thread_event lm_thread_shell lm_array_linear_set lm_splay_linear_set lm_index lm_serial_map lm_splay lm_thread_pool omake-0.9.8.5/src/libmojave-external/stdlib/lm_large_array_weak.ml0000664000152300015230000000771610464477010023332 0ustar jyhjyh(* * This is an array that can be larger than * the default OCaml arrays. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) module LargeWeakArray = struct (* * Two-level array. *) type 'a t = { mutable array_shift : int; mutable array_mask : int; mutable array_length : int; mutable array_buckets : 'a Weak.t array } (* * Maximum minor size. *) let max_shift = Lm_int_util.log2 Sys.max_array_length let max_length = 1 lsl max_shift (* * Create an empty array. *) let create () = { array_shift = 0; array_mask = 0; array_length = 0; array_buckets = Array.create 1 (Weak.create 0) } (* * Return the length. *) let length { array_length = length } = length (* * Expand the array. *) let expand info i = let buckets = info.array_buckets in let log = succ (Lm_int_util.log2 i) in let length = 1 lsl log in if log <= max_shift then let new_array = Weak.create length in let old_array = buckets.(0) in Weak.blit old_array 0 new_array 0 (Weak.length old_array); info.array_shift <- log; info.array_mask <- (1 lsl log) - 1; info.array_length <- 1 lsl log; buckets.(0) <- new_array else begin (* Possibly expand the first array to max_length *) (if info.array_length < max_length then let new_array = Weak.create max_length in let old_array = buckets.(0) in Weak.blit old_array 0 new_array 0 (Weak.length old_array); buckets.(0) <- new_array); (* Now expand the major level *) let count = (i + max_length - 1) lsr max_shift in let new_buckets = Array.create count buckets.(0) in let old_length = Array.length buckets in Array.blit buckets 0 new_buckets 0 old_length; for i = old_length to pred count do new_buckets.(i) <- Weak.create max_length done; info.array_shift <- max_shift; info.array_mask <- pred max_length; info.array_length <- count * max_length; info.array_buckets <- new_buckets end (* * Store a value in the array. *) let set info i x = if i > info.array_length then expand info i; Weak.set info.array_buckets.(i lsr info.array_shift) (i land info.array_mask) (Some x) (* * Get a value in the array. *) let get info i = if i > info.array_length then raise (Invalid_argument "LargeArray.get"); Weak.get info.array_buckets.(i lsr info.array_shift) (i land info.array_mask) end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_make_printf.ml0000664000152300015230000003644210647500342022326 0ustar jyhjyh(* * This is a generic printf builder. We take "simple" printing * functions, and turn them into a general printf. * * Formatted printing. * Here are the format strings we handle. * d or i: print an integer in decminal * u: print an unsigned integer in decimal * x: print an integer in unsigned hex in lowercase * X: print an integer in unsigned hex in uppercase * o: print an integer in unsigned octal * s: print a string * c: print a character * f: print a float in decimal * e,E: print a float in exponent notation * g,G: print a float in best notation * b: print a Boolean * a: user-defined printer * t: user-defined printer * %: print the '%' char * * From the printf man page, each format specifier has * 1. 0 or more flags * #: use alternate notation * 0: 0-pad the number * '-': left-justify the field * ' ': leave a space before the number * '+': always print the sign of the number * 2. An optional field width in decimal * 3. An optional precision, specified as a '.' followed * by a decimal number. * 4. A format specifier * * For Format: * @]: close_box * @,: print_cut * @ : print_space * @\n: force_newline * @;: print_break * @?: print_flush * @.: print_newline * @: print_length * @@: plain @ char * * Note the copious use of Obj.magic * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Argument module. *) module type PrintfArgsSig = sig (* Some buffer type *) type t type result (* The printers *) val print_char : t -> char -> unit val print_string : t -> string -> unit (* Format functions *) val open_box : t -> int -> unit val open_hbox : t -> unit val open_vbox : t -> int -> unit val open_hvbox : t -> int -> unit val open_hovbox : t -> int -> unit val close_box : t -> unit val print_cut : t -> unit val print_space : t -> unit val force_newline : t -> unit val print_break : t -> int -> int -> unit val print_flush : t -> unit val print_newline : t -> unit val exit : t -> result end (* * What this module provides. *) module type PrintfSig = sig (* Some buffer type *) type t type result (* Lm_printf functions *) val fprintf : t -> ('a, t, result) format -> 'a end (* * Here's the actual printf module. *) module MakePrintf (Args : PrintfArgsSig) = struct (************************************************************************ * TYPES ************************************************************************) type t = Args.t type result = Args.result (* * Field flags. *) type format_flag = AlternateForm | ZeroPad | LeftAdjust | LeaveBlank | AlwaysSign (* * Types of int printing. *) type int_spec = UnsignedOctal | SignedDecimal | UnsignedDecimal | UnsignedHexLowercase | UnsignedHexUppercase (* * Types of float printing. *) type float_spec = FloatNormal | FloatExp | FloatBest (* * Field specifiers. *) type field_info = { field_flags : format_flag list; field_width : int option; field_precision : int option } (************************************************************************ * BASE PRINTERS ************************************************************************) (* * Most of these basic printers just pass out the print * request to C functions. The first string is the format * string to be passed to printf. *) external ext_print_char : string -> char -> string = "ml_print_char" external ext_print_int : string -> int -> string = "ml_print_int" external ext_print_float : string -> float -> string = "ml_print_float" external ext_print_string : string -> string -> string = "ml_print_string" external ext_print_string2 : int -> string -> string -> string = "ml_print_string2" (* * Maximum width specified in the format. *) let max_width info = match info with { field_width = Some width; field_precision = Some pre } -> max width pre | { field_width = Some width; field_precision = None } | { field_width = None; field_precision = Some width } -> width | { field_width = None; field_precision = None } -> 0 (* * Next arg should be an int. *) let rec print_bool buf i len s fmt _info = let print b = let str = ext_print_string fmt (if b then "true" else "false") in Args.print_string buf str; print_loop buf i len s in Obj.magic print and print_char buf i len s fmt _info = let print c = let str = ext_print_char fmt c in Args.print_string buf str; print_loop buf i len s in Obj.magic print and print_int buf i len s fmt _info _spec = let print x = let str = ext_print_int fmt x in Args.print_string buf str; print_loop buf i len s in Obj.magic print and print_float buf i len s fmt _info _spec = let print x = let str = ext_print_float fmt x in Args.print_string buf str; print_loop buf i len s in Obj.magic print and print_string buf i len s fmt info = let print str = let str = ext_print_string2 (max_width info) fmt str in Args.print_string buf str; print_loop buf i len s in Obj.magic print and print_user1 buf i len s _fmt _info = let print f = f buf; print_loop buf i len s in Obj.magic print and print_user2 buf i len s _fmt _info = let print f x = f buf x; print_loop buf i len s in Obj.magic print and print_dummy _buf _i _len _s = Obj.magic () and print_percent buf i len s fmt _info = let str = ext_print_string fmt "%" in Args.print_string buf str; print_loop buf i len s (* * Parse the format specification. *) and print_format buf index len s = (* * Read off any flag characters. *) let rec parse_flags flags i = if i = len then print_dummy buf i len s else let c = s.[i] in match c with '#' -> parse_flags (AlternateForm :: flags) (succ i) | '0' -> parse_flags (ZeroPad :: flags) (succ i) | '-' -> parse_flags (LeftAdjust :: flags) (succ i) | ' ' -> parse_flags (LeaveBlank :: flags) (succ i) | '+' -> parse_flags (AlwaysSign :: flags) (succ i) | '1'..'9' -> parse_field_width flags 0 i | '.' -> parse_precision flags None 0 (succ i) | _ -> parse_spec flags None None i (* * Read off the field width. *) and parse_field_width flags width i = if i = len then print_dummy buf i len s else let c = s.[i] in match c with '0'..'9' -> parse_field_width flags (width * 10 + Char.code c - Char.code '0') (succ i) | '.' -> parse_precision flags (Some width) 0 (succ i) | _ -> parse_spec flags (Some width) None i (* * Parse the precision specifier. *) and parse_precision flags width pre i = if i = len then print_dummy buf i len s else let c = s.[i] in match c with '0'..'9' -> parse_precision flags width (pre * 10 + Char.code c - Char.code '0') (succ i) | _ -> parse_spec flags width (Some pre) i (* * Finally we have the format specifier. *) and parse_spec flags width pre i = if i = len then print_dummy buf i len s else let info = { field_flags = List.rev flags; field_width = width; field_precision = pre } in let c = s.[i] in let i = succ i in let fmt = String.sub s index (i - index) in match c with 'd' | 'i' -> print_int buf i len s fmt info SignedDecimal | 'u' -> print_int buf i len s fmt info UnsignedDecimal | 'x' -> print_int buf i len s fmt info UnsignedHexLowercase | 'X' -> print_int buf i len s fmt info UnsignedHexUppercase | 'o' -> print_int buf i len s fmt info UnsignedOctal | 's' -> print_string buf i len s fmt info | 'c' -> print_char buf i len s fmt info | 'f' -> print_float buf i len s fmt info FloatNormal | 'e' | 'E' -> print_float buf i len s fmt info FloatExp | 'g' | 'G' -> print_float buf i len s fmt info FloatBest | 'b' -> print_bool buf i len s fmt info | 'a' -> print_user2 buf i len s fmt info | 't' -> print_user1 buf i len s fmt info | '%' -> print_percent buf i len s fmt info | _ -> raise (Invalid_argument "parse_spec") in parse_flags [] (succ index) (************************************************************************ * FORMAT CONTROL ************************************************************************) (* * Parse the format string. *) and print_rformat buf index len s = (* * Look for some options in format, * separated by white space. *) let scratch = Buffer.create 19 in let rec parse_options i cont = if i = len then cont i [] else let c = s.[i] in if c = '<' then parse_args [] (succ i) cont else cont i [] and parse_args options i cont = if i = len then cont i (List.rev options) else let c = s.[i] in match c with ' ' | '\t' | '\n' -> if Buffer.length scratch <> 0 then let s = Buffer.contents scratch in Buffer.clear scratch; parse_args (s :: options) (succ i) cont else parse_args options (succ i) cont | '>' -> cont (succ i) (List.rev options) | c -> Buffer.add_char scratch c; parse_args options (succ i) cont in (* * Now we should have the spec. *) let parse_spec i = if i = len then print_dummy buf i len s else let c = s.[i] in let i = succ i in match c with '[' -> parse_options i (fun i options -> let box, indent = match options with box :: indent :: _ -> box, int_of_string indent | [box] -> box, 0 | [] -> "b", 0 in let _ = match box with "h" -> Args.open_hbox buf | "v" -> Args.open_vbox buf indent | "hv" -> Args.open_hvbox buf indent | "hov" -> Args.open_hovbox buf indent | "b" -> Args.open_box buf indent | _ -> raise (Invalid_argument ("print_rformat: bogus box type \"" ^ String.escaped box ^ "\"")) in print_loop buf i len s) | ']' -> Args.close_box buf; print_loop buf i len s | ',' -> Args.print_cut buf; print_loop buf i len s | ' ' -> Args.print_space buf; print_loop buf i len s | '\n' -> Args.force_newline buf; print_loop buf i len s | ';' -> parse_options i (fun i options -> let nspaces, off = match options with nspaces :: off :: _ -> int_of_string nspaces, int_of_string off | [nspaces] -> int_of_string nspaces, 0 | [] -> 0, 0 in Args.print_break buf nspaces off; print_loop buf i len s) | '?' -> Args.print_flush buf; print_loop buf i len s | '.' -> Args.print_newline buf; print_loop buf i len s | c -> Args.print_char buf c; print_loop buf i len s in parse_spec (succ index) (* * The is the main printf function. *) and print_loop buf i len s = if i = len then Obj.magic (Args.exit buf) else match s.[i] with '%' -> print_format buf i len s | '@' -> print_rformat buf i len s | c -> Args.print_char buf c; print_loop buf (succ i) len s (* * Outermost printf function. *) let fprintf buf = let print s = print_loop buf 0 (String.length s) s in Obj.magic print end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_num.ml0000664000152300015230000002001210456222231020604 0ustar jyhjyh(* * Our slow implementation of numbers * without using C libraries. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 MetaPRL Group, Cornell University, * California Institute of Technology, and City University of New York * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified by: Yegor Bryukhov * Modified by: Aleksey Nogin *) open Lm_big_int (************************************************************************ * TYPES * ************************************************************************) (* * Have simple ints and big ints. *) type num = Int of int | Big_int of big_int (* * This is the max value represented in an int. *) let shift_int = 30 let max_int = pred (1 lsl shift_int) let min_int = -max_int let shift_mult_int = 15 let max_mult_int = pred (1 lsl shift_mult_int) let min_mult_int = -max_mult_int (************************************************************************ * IMPLEMENTATIONS * ************************************************************************) (* * Catch overflows in addition. *) let add_num i j = match i, j with Int i, Int j -> let sum = i + j in if (i>0) & (j>0) then if max_int - i < j then Big_int (add_big_int (big_int_of_int i) (big_int_of_int j)) else Int sum else if (i<0) & (j<0) then if min_int - i > j then Big_int (add_big_int (big_int_of_int i) (big_int_of_int j)) else Int sum else Int sum | Int i, Big_int j -> Big_int (add_big_int (big_int_of_int i) j) | Big_int i, Int j -> Big_int (add_big_int i (big_int_of_int j)) | Big_int i, Big_int j -> Big_int (add_big_int i j) let sub_num i j = match i, j with Int i, Int j -> let diff = i - j in if (i>0) & (j<0) then if i > max_int + j then Big_int (sub_big_int (big_int_of_int i) (big_int_of_int j)) else Int diff else if (i<0) & (j>0) then if i < min_int + j then Big_int (sub_big_int (big_int_of_int i) (big_int_of_int j)) else Int diff else Int diff | Int i, Big_int j -> Big_int (sub_big_int (big_int_of_int i) j) | Big_int i, Int j -> Big_int (sub_big_int i (big_int_of_int j)) | Big_int i, Big_int j -> Big_int (sub_big_int i j) let succ_num i = add_num i (Int 1) let pred_num i = sub_num i (Int 1) (* * Catch overflows in multiplication. *) let mult_int i j = if (i >= min_mult_int) && (i <= max_mult_int) && (j >= min_mult_int) && (j <= max_mult_int) then Int (i * j) else Big_int (mult_big_int (big_int_of_int i) (big_int_of_int j)) let mult_num i j = match i, j with Int i, Int j -> mult_int i j | Int i, Big_int j -> Big_int (mult_big_int (big_int_of_int i) j) | Big_int i, Int j -> Big_int (mult_big_int i (big_int_of_int j)) | Big_int i, Big_int j -> Big_int (mult_big_int i j) let div_num i j = match i, j with _ , Int 0 -> raise (Invalid_argument "Lm_num.div_num: division by zero") | Int i, Int j -> Int (i / j) | Int i, Big_int j -> Big_int (div_big_int (big_int_of_int i) j) | Big_int i, Int j -> Big_int (div_big_int i (big_int_of_int j)) | Big_int i, Big_int j -> Big_int (div_big_int i j) let mod_num i j = match i, j with _ , Int 0 -> raise (Invalid_argument "Lm_num.mod_num: division by zero") | Int i, Int j -> Int (i mod j) | Int i, Big_int j -> Big_int (mod_big_int (big_int_of_int i) j) | Big_int i, Int j -> Big_int (mod_big_int i (big_int_of_int j)) | Big_int i, Big_int j -> Big_int (mod_big_int i j) let quo_num = div_num let rem_num = mod_num (* * Power. We stop large powers here--they will just take * forever. *) let power_aux i j = if j = 0 then Int 1 else let rec collect total j = if j = 0 then total else collect (mult_num total i) (pred j) in collect i (pred j) let power_num i j = match j with Int j -> power_aux i j | Big_int j -> if is_integer_big_int j then power_aux i (integer_big_int j) else raise (Invalid_argument "power_num: argument is too big") (* * Absolute value. *) let abs_num = function Int i -> Int (abs i) | Big_int i -> Big_int (abs_big_int i) let neg_num = function Int i -> Int (-i) | Big_int i -> Big_int (neg_big_int i) (* * Equality. *) let eq_num i j = match i, j with Int i, Int j -> i = j | Int i, Big_int j -> eq_big_int (big_int_of_int i) j | Big_int i, Int j -> eq_big_int i (big_int_of_int j) | Big_int i, Big_int j -> eq_big_int i j let compare_num i j = match i, j with Int i, Int j -> Pervasives.compare i j | Int i, Big_int j -> compare_big_int (big_int_of_int i) j | Big_int i, Int j -> compare_big_int i (big_int_of_int j) | Big_int i, Big_int j -> compare_big_int i j let lt_num i j = compare_num i j < 0 let le_num i j = compare_num i j <= 0 let gt_num i j = compare_num i j > 0 let ge_num i j = compare_num i j >= 0 let is_zero = function Int 0 -> true | Int _ -> false | Big_int i -> is_zero_big_int i (************************************************************************ * CONVERSION * ************************************************************************) (* * Integer conversions. *) let is_integer_num = function Int _ -> true | Big_int i -> is_integer_big_int i let integer_num = function Int i -> i | Big_int i -> integer_big_int i let num_of_int i = Int i let int_of_num = integer_num (* * String conversions. *) let string_of_num = function Int i -> string_of_int i | Big_int i -> string_of_big_int i let num_of_string s = let i = big_int_of_string s in if is_integer_big_int i then Int (integer_big_int i) else Big_int i let to_string = string_of_num let of_string = num_of_string (* * Int32 conversions. *) let to_int32 = function Int i -> Int32.of_int i | Big_int i -> Lm_big_int.to_int32 i let of_int32 i = Big_int (Lm_big_int.of_int32 i) (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/OMakefile0000664000152300015230000000115410537327317020563 0ustar jyhjyh# # Make sure omake is up-to-date # OMakeVersion(0.9.8) # # Threads are optional # if $(THREADS_ENABLED) lm_thread_core.ml: lm_thread_core_system.ml ln-or-cp $< $@ lm_thread_pool.ml: lm_thread_pool_system.ml ln-or-cp $< $@ else lm_thread_core.ml: lm_thread_core_null.ml ln-or-cp $< $@ lm_thread_pool.ml: lm_thread_pool_null.ml ln-or-cp $< $@ OCamlGeneratedFiles(lm_thread_pool.ml lm_thread_core.ml) # # Library # include Files # # Build the library. # OCamlLibrary(lmstdlib, $(STDLIB_FILES)) clean: $(CLEAN) lm_pervasives.ml lm_thread_core.ml lm_thread_pool.ml omake-0.9.8.5/src/libmojave-external/stdlib/lm_hashtbl_util.mli0000664000152300015230000000314710456222231022652 0ustar jyhjyh(* * Extra functions on hashtables. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Convert to an association list. * Order is random, but the is only one entry * for each key. *) val to_list : ('a, 'b) Hashtbl.t -> ('a * 'b) list (* * Add a list to a hashtbl. *) val add_list : ('a, 'b) Hashtbl.t -> ('a * 'b) list -> unit (* * Add all the entries from the second table. * The original entries are removed. *) val add_hashtbl : ('a, 'b) Hashtbl.t -> ('a, 'b) Hashtbl.t -> unit (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat_tex.ml0000664000152300015230000001542710556173566022376 0ustar jyhjyh(* * Formatting to LaTeX documents. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_rformat_raw open Lm_rformat (* * We hack the indentation in the TeX printer. * Format the data into lines, and print the tabstops in * the background color. * * The prefix is the white space that is inserted to * get the left margin right. *) type tex_buffer = { mutable tex_current_line : (bool * string) list; mutable tex_prefix : string; tex_print_string : string -> unit; tex_print_newline : unit -> unit } (* * Have to escape special characters. *) let tex_escape_string _linebreaks s = let len = String.length s in let rec collect i j = if j = len then if i = 0 then s else if i < j then String.sub s i (j - i) else "" else match s.[j] with ' ' -> collect_escape i j "\\ " | '_' -> collect_escape i j "\\_" | '{' -> collect_escape i j "\\{" | '}' -> collect_escape i j "\\}" | '|' -> collect_escape i j "\\|" | '<' -> collect_escape_space i j "\\lt" | '>' -> collect_escape_space i j "\\gt" | '^' | '&' | '#' | '[' | ']' | '\\' | '$' | '%' as c-> collect_escape_space i j (Printf.sprintf "\\char%i" (Char.code c)) | _ -> collect i (succ j) and collect_esc i j s' = if i < j then String.sub s i (j - i) ^ s' else s' and collect_escape i j s = collect_esc i j (s ^ collect (succ j) (succ j)) and collect_escape_space i j s = let s' = collect (succ j) (succ j) in let s'' = if s' = "" then " " else match s'.[0] with ' ' | '\\' | '$' | '_' | '^' | '&' | '}' | '{' -> s' | _ -> " " ^ s' in collect_esc i j (s ^ s'') in collect 0 0 (* * Print strings. *) let tex_print_string buf s = buf.tex_current_line <- (true, s) :: buf.tex_current_line let tex_print_invis buf s = buf.tex_current_line <- (false, s) :: buf.tex_current_line (* * Extract the entire line. *) let tex_line buf = let rec collect line = function (vis, h) :: t -> collect ((if vis then (tex_escape_string true h) else h) ^ line) t | [] -> line in collect "" buf.tex_current_line let tex_visible buf = let rec collect line = function (vis, h) :: t -> collect (if vis then h ^ line else line) t | [] -> line in collect "" buf.tex_current_line let make_tag s = (false, "\\" ^ s ^ "{") let tex_push_line buf tags = let line = tex_line buf in buf.tex_print_string line; buf.tex_current_line <- []; if line <> "" && line.[String.length line - 1] != '\n' then begin buf.tex_print_string (String.make (List.length tags) '}'); buf.tex_print_string "\\\\\n"; buf.tex_current_line <- List.map make_tag tags end let tex_flush buf = tex_push_line buf [] (* * Set up all pending tabstops. *) let tex_tab_line buf = buf.tex_prefix ^ tex_visible buf (* * Newline. * Compute all pending tabstops, * then push the line and the new tabstop. *) let tex_tab buf (col, _) tags = if col = 0 then begin tex_push_line buf tags; buf.tex_prefix <- "" end else let tabline = tex_tab_line buf in tex_push_line buf tags; let prefix = if col >= String.length tabline then tabline else String.sub tabline 0 col in let spacer = Printf.sprintf "\\phantom{%s}" (tex_escape_string false prefix) in buf.tex_prefix <- prefix; buf.tex_current_line <- buf.tex_current_line @ [false, spacer] let tex_tag buf s = buf.tex_current_line <- (make_tag s) :: buf.tex_current_line let tex_etag buf _ = buf.tex_current_line <- (false, "}") :: buf.tex_current_line (* * A TeX printer. *) let make_tex_printer_aux raw = let { raw_print_string = output_string; raw_print_newline = output_newline } = raw in let print_string s = output_string s 0 (String.length s) in let buf = { tex_current_line = []; tex_prefix = ""; tex_print_string = print_string; tex_print_newline = output_newline } in let info = { print_string = tex_print_string buf; print_invis = tex_print_invis buf; print_atomic = tex_print_string buf; print_tab = tex_tab buf; print_begin_tag = tex_tag buf; print_end_tag = tex_etag buf } in buf, info let make_tex_printer raw = snd (make_tex_printer_aux raw) (* * Raw printer. *) let print_tex_raw rmargin buf raw = let tbuf, info = make_tex_printer_aux raw in let print_string s = raw.raw_print_string s 0 (String.length s) in print_string "\\texfalse\\iftex%\n"; print_to_printer buf rmargin info; tex_flush tbuf; print_string "\\fi\\enmptab%\n"; raw.raw_print_flush () (* * The channel and buffer versions. *) let print_tex_channel rmargin buf out = print_tex_raw rmargin buf (raw_channel_printer out) let print_tex_buffer rmargin buf out = print_tex_raw rmargin buf (raw_buffer_printer out) let print_tex_string rmargin buf = let out = Buffer.create 100 in print_tex_buffer rmargin buf out; Buffer.contents out (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat_text.mli0000664000152300015230000000312310456222231022700 0ustar jyhjyh(* * Text-based printing. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_rformat_raw open Lm_rformat val make_text_printer : raw_printer -> printer val print_text_channel : int -> buffer -> out_channel -> unit val print_text_buffer : int -> buffer -> Buffer.t -> unit val print_text_string : int -> buffer -> string (* * Special case: 1-line buffer. *) val line_format : int -> (buffer -> unit) -> string (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_linear_set_sig.ml0000664000152300015230000000472310464477010023015 0ustar jyhjyh(* * This module provides a signature for a linearly ordered numbered set * with lazy application. Such sets are used, for example, to keep * hypothesis in a sequent * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Alexey Nogin *) module type LinearSetSig = sig type elt type t type index = int val empty : t val singleton : elt -> t val length : t -> int val get : t -> index -> elt val make : int -> elt -> t val create : int -> elt -> t val to_list : t -> elt list val of_list : elt list -> t val iter : (elt -> unit) -> t -> unit val map : (elt -> elt) -> t -> t val fold : ('a -> index -> elt -> 'a) -> 'a -> t -> 'a val split : t -> index -> t * elt * t val append : t -> elt -> t -> t val append_list : t -> elt list -> t -> t val concat : t -> t -> t val lazy_apply : (elt -> elt) -> t -> t val lazy_sub_map : (elt -> elt) -> t -> index -> index -> t val mapi : (index -> elt -> elt) -> t -> t val init : int -> (index -> elt) -> t val collect : (elt, t) Lm_array_util.array_part list -> t val for_all : (elt -> bool) -> t -> bool val exists : (elt -> bool) -> t -> bool end module type TypeSig = sig type t end omake-0.9.8.5/src/libmojave-external/stdlib/lm_map.mli0000664000152300015230000000337210456222231020745 0ustar jyhjyh(* * Map module based on red-black trees * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) open Lm_map_sig module Make (Ord : OrderedType) : (S with type key = Ord.t) module LmMake (Ord : OrderedType) : (LmMap with type key = Ord.t) module LmMakeList (Ord : OrderedType) : (LmMapList with type key = Ord.t) (* * This version includes a sharing constraint so that maps can * be used in recursive definitions. This exposes the internal * representation, should you should avoid using it unless * absolutely necessary (like in a recursive type definition). *) type ('key, 'value) tree module LmMakeRec (Ord : OrderedType) : (LmMap with type key = Ord.t with type 'a t = (Ord.t, 'a) tree) omake-0.9.8.5/src/libmojave-external/stdlib/lm_serial_map.mli0000664000152300015230000000370310456222231022302 0ustar jyhjyh(* * Serialized map. Acts as a normal map, but the order in * which elements are inserted is retained, and all iterating * functions visit elements in that order. * ---------------------------------------------------------------- * * Copyright (C) 2002 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Adam Granicz * granicz@cs.caltech.edu *) open Lm_map_sig (* * These are the functions provided by the table. *) module type SerialMap = sig type key type 'a tt val empty : 'a tt val is_empty : 'a tt -> bool val cardinal : 'a tt -> int val add : 'a tt -> key -> 'a -> 'a tt val find : 'a tt -> key -> 'a val remove : 'a tt -> key -> 'a tt val mem : 'a tt -> key -> bool val iter : (key -> 'a -> unit) -> 'a tt -> unit val fold : ('a -> key -> 'b -> 'a) -> 'a -> 'b tt -> 'a (* Both keys and data return a list ordered by insertion order *) val keys : 'a tt -> key list val data : 'a tt -> 'a list end (* * Make the map. *) module SerialMapMake (Base : OrderedType) : SerialMap with type key = Base.t omake-0.9.8.5/src/libmojave-external/stdlib/lm_table_util.ml0000664000152300015230000000437210464477010022152 0ustar jyhjyh(* * Utilities on tables. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_map_sig module MakeTable (Create : TableCreateSig) (Base : TableBaseSig) = struct type elt = Base.elt type data = Base.data type t = (elt, data) Create.t (* * Get the methods. *) let methods = Create.create Base.print Base.compare Base.append (* * Now project them. *) let empty = methods.empty let is_empty = methods.is_empty let length = methods.cardinal let add = methods.add let replace = methods.replace let union = methods.union let mem = methods.mem let find = methods.find let find_all = methods.find_all let remove = methods.remove let iter = methods.iter let fold_map = methods.fold_map let map = methods.map let deletemax = methods.deletemax let list_of = methods.list_of let print = methods.print end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_big_int.mli0000664000152300015230000000500610464477010021605 0ustar jyhjyh(* * Our implementation of big_int. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey *) type big_int val big_int_of_int : int -> big_int (* * Operations. *) val add_big_int : big_int -> big_int -> big_int val sub_big_int : big_int -> big_int -> big_int val mult_big_int : big_int -> big_int -> big_int val div_big_int : big_int -> big_int -> big_int val quo_big_int : big_int -> big_int -> big_int val mod_big_int : big_int -> big_int -> big_int val rem_big_int : big_int -> big_int -> big_int val neg_big_int : big_int -> big_int val abs_big_int : big_int -> big_int (* * Comparisons. *) val eq_big_int : big_int -> big_int -> bool val compare_big_int : big_int -> big_int -> int (* * Conversion. *) val is_integer_big_int : big_int -> bool val integer_big_int : big_int -> int val string_of_big_int : big_int -> string val big_int_of_string : string -> big_int val to_string : big_int -> string val of_string : string -> big_int val to_int32 : big_int -> Int32.t val of_int32 : Int32.t -> big_int (* * Special cases. *) val div10 : big_int -> int * big_int val mult10 : big_int -> big_int val is_zero_big_int : big_int -> bool (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_small_set.ml0000664000152300015230000001353710464477010022014 0ustar jyhjyh(* * Overlay list of elements as small sets over another * set implementation. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_set_sig module Make (BigSet : MinimalSetSig) = struct (************************************************************************ * TYPES * ************************************************************************) (* * Max size of small sets. * This number is arbitrary. *) let max_size = 12 (* * Type of elements in the set. *) type elt = BigSet.elt (* * Either a list or a set. *) type t = List of elt list | Set of BigSet.t (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Conversion. *) let rec set_of_list_aux set = function h :: t -> set_of_list_aux (BigSet.add set h) t | [] -> set let set_of_list l = Set (set_of_list_aux BigSet.empty l) (* * Set operations. *) let empty = List [] let is_empty = function List [] -> true | List (_ :: _) -> false | Set s -> BigSet.is_empty s let mem set x = match set with List l -> List.mem x l | Set s -> BigSet.mem s x let add set x = match set with List l -> if List.length l = max_size then set_of_list (x :: l) else List (x :: l) | Set s -> Set (BigSet.add s x) let singleton x = List [x] let rec remove_list x = function h :: t -> if x = h then remove_list x t else h :: remove_list x t | [] -> [] let remove s x = match s with List l -> List (remove_list x l) | Set s -> Set (BigSet.remove s x) let rec union_set_list set = function x :: t -> union_set_list (BigSet.add set x) t | [] -> Set set let union set1 set2 = match set1, set2 with List l1, List l2 -> let l = Lm_list_util.union l1 l2 in if List.length l <= max_size then List l else set_of_list l | Set s1, Set s2 -> Set (BigSet.union s1 s2) | List l1, Set s2 -> union_set_list s2 l1 | Set s1, List l2 -> union_set_list s1 l2 let elements = function List l -> l | Set s -> BigSet.elements s let to_list = elements let of_sorted_list l = if List.length l <= max_size then List l else Set (BigSet.of_sorted_list l) let of_list l = if List.length l <= max_size then List l else Set (List.fold_left (fun set item -> BigSet.add set item) BigSet.empty l) let iter f = function List l -> List.iter f l | Set s -> BigSet.iter f s let cardinal = function List l -> List.length l | Set s -> BigSet.cardinal s (* * Filter out the elements that are in the intersection. *) let mem_filt set elements = match set with List l -> Lm_list_util.intersect l elements | Set s -> BigSet.mem_filt s elements let not_mem_filt set elements = match set with List l -> Lm_list_util.subtract elements l | Set s -> BigSet.not_mem_filt s elements let rec collect l = function (x, v) :: tl -> if List.mem x l then (x, v) :: collect l tl else collect l tl | [] -> [] let fst_mem_filt set elements = match set with List l -> collect l elements | Set s -> BigSet.fst_mem_filt s elements let rec set_list_intersectp set = function h :: t -> (BigSet.mem set h) || (set_list_intersectp set t) | [] -> false let intersectp set1 set2 = match set1, set2 with List l1, List l2 -> Lm_list_util.intersects l1 l2 | Set s1, Set s2 -> BigSet.intersectp s1 s2 | List l1, Set s2 -> set_list_intersectp s2 l1 | Set s1, List l2 -> set_list_intersectp s1 l2 end (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_ref_util.mli0000664000152300015230000000306210464477010022003 0ustar jyhjyh(* * Reference operations. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* Stack ops *) val push : 'a -> ('a list) ref -> unit val pop : ('a list) ref -> 'a (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_buffer.mli0000664000152300015230000000272510456222231021442 0ustar jyhjyh(* * String buffers. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) type t val create : int -> t val contents : t -> string val length : t -> int val clear : t -> unit val reset : t -> unit val add_char : t -> char -> unit val add_string : t -> string -> unit val add_substring : t -> string -> int -> int -> unit val add_buffer : t -> t -> unit (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread.mli0000664000152300015230000000317010647734513021450 0ustar jyhjyh(* * Our personal implementation of threads. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Instititute of Technology, and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_thread_sig module Mutex : MutexSig module Condition : ConditionSig with type mutex = Mutex.t module Thread : ThreadSig module State : StateSig val debug_lock : bool ref module MutexDebug : MutexSig module ConditionDebug : ConditionSig with type mutex = MutexDebug.t (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_test.ml0000664000152300015230000000260510456222231020774 0ustar jyhjyh(* * Test file. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) module type XSig = sig type t1 type t2 val x : t1 end module type YSig = sig type t1 val x : t1 end module X (Y : YSig) = struct type t1 = Y.t1 type t2 = A of t1 let x = Y.x end (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_sys.ml0000664000152300015230000001027210456222231020632 0ustar jyhjyh(* * System interface. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) external argv : string array = "%argv" external file_exists : string -> bool = "%file_exists" external remove : string -> unit = "%file_remove" external rename : string -> string -> unit = "%file_rename" external getenv : string -> string = "%getenv" external time : unit -> float = "%time" external chdir : string -> unit = "%chdir" external getcwd : unit -> string = "%getcwd" external interactive : bool ref = "%interactive" external os_type : string = "%os_type" external word_size : int = "%word_size" external max_string_length : int = "%max_string_length" external max_array_length : int = "%max_array_length" external sigabrt : int = "%sigabrt" external sigalrm : int = "%sigalrm" external sigfpe : int = "%sigfpe" external sighup : int = "%sighup" external sigill : int = "%sigill" external sigint : int = "%sigint" external sigkill : int = "%sigkill" external sigpipe : int = "%sigpipe" external sigquit : int = "%sigquit" external sigsegv : int = "%sigsegv" external sigterm : int = "%sigterm" external sigusr1 : int = "%sigusr1" external sigusr2 : int = "%sigusr2" external sigchld : int = "%sigchld" external sigcont : int = "%sigcont" external sigstop : int = "%sigstop" external sigtstp : int = "%sigtstp" external sigttin : int = "%sigttin" external sigttou : int = "%sigttou" external sigvtalrm : int = "%sigvtalrm" external sigprof : int = "%sigprof" type signal_behavior = Signal_default | Signal_ignore | Signal_handle of (int -> unit) type signal = Pervasives_boot.signal type sig_handle = Pervasives_boot.sig_handle external set_signal : int -> signal -> signal = "%set_signal" external handle_of_sig_handle : sig_handle -> (int -> unit) = "%sig_dest_handle" external sig_handle_of_handle : (int -> unit) -> sig_handle = "%sig_make_handle" let signal signo behavior = let signalb = match behavior with Signal_default -> Pervasives_boot.Signal_default | Signal_ignore -> Pervasives_boot.Signal_ignore | Signal_handle f -> Pervasives_boot.Signal_handle (sig_handle_of_handle f) in match set_signal signo signalb with Pervasives_boot.Signal_default -> Signal_default | Pervasives_boot.Signal_ignore -> Signal_ignore | Pervasives_boot.Signal_handle f -> Signal_handle (handle_of_sig_handle f) let set_signal signo behavior = let signalb = match behavior with Signal_default -> Pervasives_boot.Signal_default | Signal_ignore -> Pervasives_boot.Signal_ignore | Signal_handle f -> Pervasives_boot.Signal_handle (sig_handle_of_handle f) in ignore (set_signal signo signalb) exception Break let catch_break flag = let signalb = if flag then Signal_handle (fun _ -> raise Break) else Signal_default in set_signal sigint signalb (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_map.ml0000664000152300015230000017103010616670056020603 0ustar jyhjyh(* * Build a table using a red-black tree. * Every node in the tree is colored either black or red. * A red-black tree has the following invariants: * 1. Every leaf is colored black * 2. All children of every red node are black. * 3. Every path from the root to a leaf has the * same number of black nodes as every other path. * 4. The root is always black. * * We get some corollaries: * 1. The longest path from the root to a leaf is * at most twice as long as the shortest path. * 2. Both children of a red node are either leaves, * or they are both not. * * This code is meant to be fast, so all the cases have * been expanded, and the insert and delete functions are * long (12 cases for insert, 18 for delete in lift_black). * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) open Lm_map_sig (* * Table is a binary tree. * Color is kept in the label to save space. *) (* %%MAGICBEGIN%% *) type ('elt, 'data) tree = Leaf | Red of 'elt * 'data * ('elt, 'data) tree * ('elt, 'data) tree * int | Black of 'elt * 'data * ('elt, 'data) tree * ('elt, 'data) tree * int (* %%MAGICEND%% *) (* * Make the set. *) module LmMake (Base : OrderedType) = struct (* * Path into the tree. *) type ('elt, 'data) path = Left of ('elt, 'data) tree | Right of ('elt, 'data) tree | Delete of ('elt, 'data) tree type key = Base.t type 'a t = (key, 'a) tree exception Unchanged (* * Size of a table. *) let cardinality = function Red (_, _, _, _, size) | Black (_, _, _, _, size) -> size | Leaf -> 0 let cardinal = cardinality (* * Add two nodes. *) let new_black key data left right = Black (key, data, left, right, cardinality left + cardinality right + 1) let new_red key data left right = Red (key, data, left, right, cardinality left + cardinality right + 1) (************************************************************************ * DEBUGGING * ************************************************************************) (* * Check the size of the set. *) let rec check_size = function Black (_, _, left, right, size) | Red (_, _, left, right, size) -> let lsize = check_size left in let rsize = check_size right in if size <> lsize + rsize + 1 then let msg = "Lm_map.check_size: " ^ (string_of_int size) ^ " <> " ^ (string_of_int lsize) ^ "+" ^ (string_of_int rsize) in raise (Failure msg) else size | Leaf -> 0 (* * Check the red-invariant. *) let rec check_red = function Red (_, _, left, right, _) -> begin match left, right with Red _, _ | _, Red _ -> raise (Failure "Red_black_table.red_black_set.check_red") | _ -> check_red left; check_red right end | Black (_, _, left, right, _) -> check_red left; check_red right | Leaf -> () (* * Check the black invariant. *) let rec black_depth i = function Black (_, _, left, _, _) -> black_depth (succ i) left | Red (_, _, left, _, _) -> black_depth i left | Leaf -> i let rec check_black_aux i j = function Black (_, _, left, right, _) -> check_black_aux i (succ j) left; check_black_aux i (succ j) right | Red (_, _, left, right, _) -> check_black_aux i j left; check_black_aux i j right | Leaf -> if j <> i then raise (Failure "Red_black_table.check_black") let check_black tree = check_black_aux (black_depth 0 tree) 0 tree (* * Check that all the nodes are sorted. *) let rec check_sort_lt key = function Black (key', _, left, right, _) -> if Base.compare key' key >= 0 then raise (Failure "Red_black_table.check_sort"); check_sort_lt key' left; check_sort_gt_lt key' key right | Red (key', _, left, right, _) -> if Base.compare key' key >= 0 then raise (Failure "Red_black_table.check_sort"); check_sort_lt key' left; check_sort_gt_lt key' key right | Leaf -> () and check_sort_gt key = function Black (key', _, left, right, _) | Red (key', _, left, right, _) -> if Base.compare key' key <= 0 then raise (Failure "Red_black_table.check_sort"); check_sort_gt_lt key key' left; check_sort_gt key right | Leaf -> () and check_sort_gt_lt key key' = function Black (key'', _, left, right, _) | Red (key'', _, left, right, _) -> if Base.compare key'' key <= 0 || Base.compare key'' key' >= 0 then raise (Failure "Red_black_table.check_sort"); check_sort_gt_lt key key'' left; check_sort_gt_lt key'' key' right | Leaf -> () let check_sort = function Black (key, _, left, right, _) -> check_sort_lt key left; check_sort_gt key right | Red _ -> raise (Failure "Red_black_table.check_sort: root is red") | Leaf -> () (* * Perform all the checks. *) let check tree = check_red tree; check_black tree; check_sort tree; ignore (check_size tree); tree (************************************************************************ * INSERTION * ************************************************************************) (* * Insert an entry into the tree. *) let rec insert (key : 'elt) (dataf : 'data option -> 'data) = function Black (key0, data0, left0, right0, size0) -> begin let comp = Base.compare key key0 in if comp = 0 then let data = dataf (Some data0) in if data == data0 then raise Unchanged; Black (key0, data, left0, right0, size0) else if comp < 0 then match left0 with Black _ | Leaf -> (* * Ok even if child becomes red. *) new_black key0 data0 (insert key dataf left0) right0 | Red (key1, data1, left1, right1, size1) -> let comp = Base.compare key key1 in if comp = 0 then Black (key0, data0, Red (key1, dataf (Some data1), left1, right1, size1), right0, size0) else if comp < 0 then match insert key dataf left1, right0 with Red _ as node, Red (key2, data2, left2, right2, size2) -> (* * Recoloring: * * key0:b key0:r * / \ / \ * key1:r key2:r key1:b key2:b * / \ / \ * key2:r right1 key2:r right1 *) new_red key0 data0 (**) (new_black key1 data1 node right1) (Black (key2, data2, left2, right2, size2)) | Red _ as node, _ -> (* * Rotation: * * key0:b key1:b * / \ / \ * key1:r key2:b key3:r key0:b * / \ / \ * key3:r right1 right1 key2:r *) new_black key1 data1 node (new_red key0 data0 right1 right0) | node, _ -> (* * Inline: * * key0:b key0:b * / \ / \ * key1:r key2 key1:r key2 * / \ / \ * key3:b right1 key3:b right1 *) new_black key0 data0 (**) (new_red key1 data1 node right1) right0 else match insert key dataf right1, right0 with Red _ as node, Red (key2, data2, left2, right2, size2) -> (* * Recoloring: * * key0:b key0:r * / \ / \ * key1:r key2:r key1:b key2:b * / \ / \ * left1 node:r left1 node:r *) new_red key0 data0 (**) (new_black key1 data1 left1 node) (Black (key2, data2, left2, right2, size2)) | Red (key3, data3, left3, right3, _), _ -> (* * Rotation: * * key0:b key3:b * / \ / \ * key1:r right0 key1:r key0:r * / \ / \ / \ * left1 key3:r left1 left3 right3 right0 * / \ * left3 right3 *) new_black key3 data3 (**) (new_red key1 data1 left1 left3) (new_red key0 data0 right3 right0) | node3, _ -> (* * Inline: * * key0:b * / \ * key1:r right0 * / \ * left1 node3:b *) new_black key0 data0 (**) (new_red key1 data1 left1 node3) right0 else (* comp > 0 *) match right0 with Black _ | Leaf -> (* * Node can be replaced even if it becomes red. *) new_black key0 data0 left0 (insert key dataf right0) | Red (key2, data2, left2, right2, size2) -> let comp = Base.compare key key2 in if comp = 0 then Black (key0, data0, left0, Red (key2, dataf (Some data2), left2, right2, size2), size0) else if comp < 0 then match left0, insert key dataf left2 with Red (key1, data1, left1, right1, size1), (Red _ as node) -> (* * Recoloring: * * key0:b key0:r * / \ / \ * key1:r key2:r key1:b key2:b * / \ / \ * node:r right2 node:r right2 *) new_red key0 data0 (**) (Black (key1, data1, left1, right1, size1)) (new_black key2 data2 node right2) | _, Red (key3, data3, left3, right3, _) -> (* * Rotate: * * key0:b key3:b * / \ / \ * key1:b key2:r key0:r key2:r * / \ / \ / \ * key3:r right2 left0 left3 right3 right2 * / \ * left3 right3 *) new_black key3 data3 (**) (new_red key0 data0 left0 left3) (new_red key2 data2 right3 right2) | _, node3 -> (* * Inline: * * key0:b * / \ * left0 key2:r * / \ * key3:b right2 *) new_black key0 data0 (**) left0 (new_red key2 data2 node3 right2) else match left0, insert key dataf right2 with Red (key1, data1, left1, right1, size1), (Red _ as node) -> (* * Recoloring: * * key0:b key0:r * / \ / \ * key1:r key2:r key1:b key2:b * / \ / \ * left2 node:r left2 node:r *) new_red key0 data0 (**) (Black (key1, data1, left1, right1, size1)) (new_black key2 data2 left2 node) | _, (Red _ as node) -> (* * Rotation: * * key0:b key2:b * / \ / \ * left0:b key2:r key0:r node:r * / \ / \ * left2 node:r left0:b left2 *) new_black key2 data2 (**) (new_red key0 data0 left0 left2) node | _, node3 -> (* * Inline: * * key0:b * / \ * left0:b key2:r * / \ * left2 node3:b *) new_black key0 data0 (**) left0 (new_red key2 data2 left2 node3) end | Leaf -> (* Leaf is colored red *) Red (key, dataf None, Leaf, Leaf, 1) | Red _ -> (* Red nodes will not come up *) raise (Invalid_argument "Red_black_table.insert") (* * Append an element to the list. *) let filter_add (tree : ('elt, 'data) tree) (key : 'elt) (dataf : 'data option -> 'data) = let tree = match tree with Leaf -> Black (key, dataf None, Leaf, Leaf, 1) | node -> try match insert key dataf node with Red (key, data, left, right, size) -> Black (key, data, left, right, size) | tree -> tree with Unchanged -> tree in (tree : ('elt, 'data) tree) (* * Like filter-add, but the value must already exist. *) let replace tree key dataf = filter_add tree key (fun x -> match x with Some x -> dataf x | None -> raise Not_found) (* * Add an element to the set. *) let add (tree : ('elt, 'data) tree) (key : 'elt) (data : 'data) = filter_add tree key (fun _ -> data) (************************************************************************ * FIND ENTRIES * ************************************************************************) (* * Return the data for the entry. *) let rec find_aux key = function Black (key0, data0, left0, right0, _) | Red (key0, data0, left0, right0, _) -> let comp = Base.compare key key0 in if comp = 0 then data0 else if comp < 0 then find_aux key left0 else find_aux key right0 | Leaf -> raise Not_found let find tree key = find_aux key tree (* * Return the data for the entry. *) let rec find_aux key = function Black (key0, data0, left0, right0, _) | Red (key0, data0, left0, right0, _) -> let comp = Base.compare key key0 in if comp = 0 then data0 else if comp < 0 then find_aux key left0 else find_aux key right0 | Leaf -> [] let find_all tree key = find_aux key tree (************************************************************************ * REMOVAL * ************************************************************************) (* * Construct a path during the removal. *) let rec delete key filter path node = match node with Black (key0, data0, left0, right0, size0) -> let comp = Base.compare key key0 in if comp = 0 then match filter data0 with None -> begin match left0, right0 with Leaf, Leaf -> lift_black (key0, data0) path Leaf | Red (key1, data1, left1, right1, size1), Leaf -> lift (key0, data0) path (Black (key1, data1, left1, right1, size1)) | _ -> delete_min (Delete node :: path) right0 end | Some data0 -> restore path (Black (key0, data0, left0, right0, size0)) else if comp < 0 then delete key filter (Left node :: path) left0 else delete key filter (Right node :: path) right0 | Red (key0, data0, left0, right0, size0) -> let comp = Base.compare key key0 in if comp = 0 then (* Dammit! The filter needs to be applied here too! -n8 *) match filter data0 with None -> begin (* This is all that was here before *) match right0 with Leaf -> lift (key0, data0) path Leaf | _ -> delete_min (Delete node :: path) right0 end | Some data0 -> restore path (Red (key0, data0, left0, right0, size0)) else if comp < 0 then delete key filter (Left node :: path) left0 else delete key filter (Right node :: path) right0 | Leaf -> raise Not_found and restore path node = match path with Left (Black (key0, data0, _, right0, size0)) :: path -> restore path (Black (key0, data0, node, right0, size0)) | Left (Red (key0, data0, _, right0, size0)) :: path -> restore path (Red (key0, data0, node, right0, size0)) | Right (Black (key0, data0, left0, _, size0)) :: path -> restore path (Black (key0, data0, left0, node, size0)) | Right (Red (key0, data0, left0, _, size0)) :: path -> restore path (Red (key0, data0, left0, node, size0)) | [] -> (* JYH: seems like we spend all our time checking check node (* n8 debugging *) *) node | Left Leaf :: _ | Right Leaf :: _ | Delete _ :: _ -> raise (Invalid_argument "restore") and delete_min path node = match node with Black (key0, data0, Leaf, Leaf, _) -> lift_black (key0, data0) path Leaf | Black (key0, data0, Leaf, Red (key2, data2, left2, right2, size2), _) -> lift (key0, data0) path (Black (key2, data2, left2, right2, size2)) | Red (key0, data0, Leaf, Leaf, _) -> lift (key0, data0) path Leaf | Black (_, _, left0, _, _) -> delete_min (Left node :: path) left0 | Red (_, _, left0, _, _) -> delete_min (Left node :: path) left0 | Leaf -> raise Not_found (* * Copy the tree with no need to propagate black. *) and lift key path node = match path, node with Left (Black (key0, data0, _, right0, size0)) :: path, left -> lift key path (Black (key0, data0, left, right0, pred size0)) | Left (Red (key0, data0, _, right0, size0)) :: path, left -> lift key path (Red (key0, data0, left, right0, pred size0)) | Right (Black (key0, data0, left0, _, size0)) :: path, right -> lift key path (Black (key0, data0, left0, right, pred size0)) | Right (Red (key0, data0, left0, _, size0)) :: path, right -> lift key path (Red (key0, data0, left0, right, pred size0)) | Delete (Black (_, _, left0, _, size0)) :: path, right -> let key0, data0 = key in lift key path (Black (key0, data0, left0, right, pred size0)) | Delete (Red (_, _, left0, _, size0)) :: path, right -> let key0, data0 = key in lift key path (Red (key0, data0, left0, right, pred size0)) | [], node -> node | Left Leaf :: _, _ | Right Leaf :: _, _ | Delete Leaf :: _, _ -> raise (Invalid_argument "lift") (* * Propagate the extra black up the tree. *) and lift_black key path node = match path, node with Left (Black (key0, data0, _, right0, size0)) :: path, left -> begin match right0 with Black (key2, data2, left2, right2, size2) -> begin match left2, right2 with _, Red (key3, data3, left3, right3, size3) -> (* * key0:b key2:b * / \ / \ * left:bb key2:b key0:b right2:b * / \ / \ * left2 right2:r left:b left2 *) lift key path (**) (Black (key2, data2, new_black key0 data0 left left2, Black (key3, data3, left3, right3, size3), pred size0)) | Red (key3, data3, left3, right3, _), _ -> (* * key0:b key3:b * / \ / \ * left:bb key2:b key0:b key2:b * / \ / \ / \ * key3:r right2:b left:b left3 right3 right2:b * / \ * left3 right3 *) lift key path (**) (Black (key3, data3, new_black key0 data0 left left3, new_black key2 data2 right3 right2, pred size0)) | _ -> (* * key0:b key0:bb * / \ / \ * left:bb key2:b left:b key2:r * / \ / \ * left2:b right2:b left2:b right2:b *) lift_black key path (**) (Black (key0, data0, left, Red (key2, data2, left2, right2, size2), pred size0)) end | Red (key2, data2, left2, right2, _) -> begin match left2 with Black (key3, data3, Red (key4, data4, left4, right4, _), d, _) -> (* * key0:b key2:b * / \ / \ * left:bb key2:r key4:r right2:b * / \ / \ * key3:b right2:b key0:b key3:b * / \ / \ / \ * key4:r d left:b left4 right4 d * / \ * left4 right4 *) lift key path (**) (Black (key2, data2, new_red key4 data4 (**) (new_black key0 data0 left left4) (new_black key3 data3 right4 d), right2, pred size0)) | Black (key3, data3, c, Red (key4, data4, left4, right4, size4), _) -> (* * key0:b key2:b * / \ / \ * left:bb key2:r key3:r right2 * / \ / \ * key3:b right2 key0:b key4:b * / \ / \ * c key4:r left:b c *) lift key path (**) (Black (key2, data2, new_red key3 data3 (**) (new_black key0 data0 left c) (Black (key4, data4, left4, right4, size4)), right2, pred size0)) | Black (key3, data3, c, d, _) -> (* * key0:b key2:b * / \ / \ * left:bb key2:r key0:b right2:b * / \ / \ * key3:b right2:b left:b key3:r * / \ / \ * c:b d:b c:b d:b *) lift key path (**) (Black (key2, data2, new_black key0 data0 left (new_red key3 data3 c d), right2, pred size0)) | Red _ | Leaf -> raise (Invalid_argument "lift_black1") end | Leaf -> raise (Invalid_argument "lift_black2") end | Right (Black (key0, data0, left0, _, size0)) :: path, right -> begin match left0 with Black (key1, data1, left1, right1, size1) -> begin match left1, right1 with Red (key3, data3, left3, right3, size3), _ -> (* * key0:b key1:b * / \ / \ * key1:b right:bb left1:b key0:b * / \ / \ * left1:r right1 right1 right:b *) lift key path (**) (Black (key1, data1, Black (key3, data3, left3, right3, size3), new_black key0 data0 right1 right, pred size0)) | _, Red (key3, data3, left3, right3, _) -> (* * key0:b key3:b * / \ / \ * key1:b right:bb key1:b key0:b * / \ / \ / \ * left1:b key3:r left1:b left3 right3 right * / \ * left3 right3 *) lift key path (**) (Black (key3, data3, new_black key1 data1 left1 left3, new_black key0 data0 right3 right, pred size0)) | _ -> (* * key0:b key0:bb * / \ / \ * key1:b right:bb key1:r right:bb * / \ / \ * left1:b right1:b left1:b right1:b *) lift_black key path (**) (Black (key0, data0, Red (key1, data1, left1, right1, size1), right, pred size0)) end | Red (key1, data1, left1, right1, _) -> begin match right1 with Black (key3, data3, d, Red (key4, data4, left4, right4, _), _) -> (* * key0:b key1:b * / \ / \ * key1:r right:bb left1:b key4:r * / \ / \ * left1:b key3:b key3:b key0:b * / \ / \ / \ * d key4:r d left4 right4 right:b * / \ * left4 right4 *) lift key path (**) (Black (key1, data1, left1, new_red key4 data4 (**) (new_black key3 data3 d left4) (new_black key0 data0 right4 right), pred size0)) | Black (key3, data3, Red (key4, data4, left4, right4, size4), c, _) -> (* * key0:b key1:b * / \ / \ * key1:r right:bb left1 key3:r * / \ / \ * left1 key3:b key4:b key0:b * / \ / \ * key4:r c c right:b *) lift key path (**) (Black (key1, data1, left1, new_red key3 data3 (**) (Black (key4, data4, left4, right4, size4)) (new_black key0 data0 c right), pred size0)) | Black (key3, data3, c, d, size3) -> (* * key0:b key1:b * / \ / \ * key1:r right:bb left1 key0:b * / \ / \ * left1 key3:b key3:r right:b * / \ / \ * c:b d:b c:b d:b *) lift key path (**) (Black (key1, data1, left1, new_black key0 data0 (Red (key3, data3, c, d, size3)) right, pred size0)) | Red _ | Leaf -> raise (Invalid_argument "lift_black3") end | Leaf -> raise (Invalid_argument "lift_black4") end | Left (Red (key0, data0, _, right0, size0)) :: path, left -> begin match right0 with Black (key2, data2, left2, right2, size2) -> begin match left2, right2 with _, Red (key3, data3, left3, right3, size3) -> (* * key0:r key2:r * / \ / \ * left:bb key2:b key0:b right2:b * / \ / \ * left2:b right2:r left:b left2:b *) lift key path (**) (Red (key2, data2, new_black key0 data0 left left2, Black (key3, data3, left3, right3, size3), pred size0)) | Red (key3, data3, left3, right3, _), _ -> (* * key0:r key3:b * / \ / \ * left:bb key2:b key0:r key2:r * / \ / \ / \ * key3:r right2 left:b left3 right3 right2 * / \ * left3 right3 *) lift key path (**) (Black (key3, data3, new_red key0 data0 left left3, new_red key2 data2 right3 right2, pred size0)) | _ -> (* * key0:r key0:b * / \ / \ * left:bb key2:b left:b key2:r * / \ / \ * left2:b right2:b left2:b right2:b *) lift key path (**) (Black (key0, data0, left, Red (key2, data2, left2, right2, size2), pred size0)) end | Red _ | Leaf -> raise (Invalid_argument "lift_black5") end | Right (Red (key0, data0, left0, _, size0)) :: path, right -> begin match left0 with Black (key1, data1, left1, right1, size1) -> begin match left1, right1 with Red (key3, data3, left3, right3, size3), _ -> (* * key0:r key1:r * / \ / \ * key1:b right:bb left1:b key0:b * / \ / \ * left1:r right1 right1 right:b *) lift key path (**) (Red (key1, data1, Black (key3, data3, left3, right3, size3), new_black key0 data0 right1 right, pred size0)) | _, Red (key3, data3, left3, right3, _) -> (* * key0:r key3:b * / \ / \ * key1:b right:bb key1:r key0:r * / \ / \ / \ * left1 key3:r left1 left3 right3 right:b * / \ * left3 right3 *) lift key path (**) (Black (key3, data3, new_red key1 data1 left1 left3, new_red key0 data0 right3 right, pred size0)) | _ -> (* * key0:r key0:b * / \ / \ * key1:b right:bb key1:r right:b * / \ / \ * left1:b right1:b left1:b right1:b *) lift key path (**) (Black (key0, data0, Red (key1, data1, left1, right1, size1), right, pred size0)) end | Red _ | Leaf -> raise (Invalid_argument "lift_black6") end | Delete (Black (_, _, left0, right0, size0)) :: path, node -> let key0, data0 = key in lift_black key (Right (Black (key0, data0, left0, right0, size0)) :: path) node | Delete (Red (_, _, left0, right0, size0)) :: path, node -> let key0, data0 = key in lift_black key (Right (Red (key0, data0, left0, right0, size0)) :: path) node | [], node -> node | Left Leaf :: _, _ | Right Leaf :: _, _ | Delete Leaf :: _, _ -> raise (Invalid_argument "lift_black7") (* * Remove the item. *) let remove tree key = try delete key (fun _ -> None) [] tree with Not_found -> tree let filter_remove tree key filter = delete key filter [] tree (************************************************************************ * UNION & INTERSECTION * ************************************************************************) (* * Get the smallest element. *) let rec choose = function Black (key, data, Leaf, _, _) | Red (key, data, Leaf, _, _) -> key, data | Black (_, _, left, _, _) | Red (_, _, left, _, _) -> choose left | Leaf -> raise Not_found (* * Get the elements of the list. *) let rec to_list_aux elements = function Black (key, data, left, right, _) | Red (key, data, left, right, _) -> to_list_aux ((key, data) :: to_list_aux elements right) left | Leaf -> elements let to_list tree = to_list_aux [] tree let elements = to_list let rec keys_aux elements = function Black (key, _, left, right, _) | Red (key, _, left, right, _) -> keys_aux (key :: keys_aux elements right) left | Leaf -> elements let keys = keys_aux [] let rec reverse elements = function h :: t -> reverse (h :: elements) t | [] -> elements let rec merge elements elements1 elements2 = match elements1, elements2 with ((key1, data1) as hd1) :: tl1, ((key2, data2) as hd2) :: tl2 -> let comp = Base.compare key1 key2 in if comp = 0 then merge ((key1, data1 @ data2) :: elements) tl1 tl2 else if comp < 0 then merge (hd1 :: elements) tl1 elements2 else merge (hd2 :: elements) elements1 tl2 | _, [] -> reverse elements1 elements | [], _ -> reverse elements2 elements (* * Log of a number. *) let rec log2 i x = if 1 lsl i >= x then i else log2 (succ i) x (* * Build a set from a list. *) let rec log2 i j = if 1 lsl i >= j then i else log2 (succ i) j let rec of_array depth max_depth elements off len = if len = 1 then let key, data = elements.(off) in if depth = max_depth then Red (key, data, Leaf, Leaf, 1) else Black (key, data, Leaf, Leaf, 1) else if len = 2 then let key1, data1 = elements.(off) in let key0, data0 = elements.(succ off) in Black (key0, data0, Red (key1, data1, Leaf, Leaf, 1), Leaf, 2) else let len2 = len lsr 1 in let key0, data0 = elements.(off + len2) in Black (key0, data0, of_array (succ depth) max_depth elements off len2, of_array (succ depth) max_depth elements (off + len2 + 1) (len - len2 - 1), len) let of_list elements = match elements with [] -> Leaf | [key, data] -> Black (key, data, Leaf, Leaf, 1) | elements -> let elements = Array.of_list elements in let length = Array.length elements in let max_depth = pred (log2 1 (succ length)) in of_array 0 max_depth elements 0 length (* * Union flattens the two trees, * merges them, then creates a new tree. *) let union_append (append : 'elt -> 'data -> 'data -> 'data) (s : ('elt, 'data) tree) (key : 'elt) (data : 'data) = filter_add s key (function None -> data | Some data' -> append key data' data) let rec union_aux (append : 'elt -> 'data -> 'data -> 'data) (s1 : ('elt, 'data) tree) (s2 : ('elt, 'data) tree) = match s2 with Black (key, data, left, right, _) | Red (key, data, left, right, _) -> union_aux append (union_append append (union_aux append s1 left) key data) right | Leaf -> s1 let union append s1 s2 = let size1 = cardinality s1 in let size2 = cardinality s2 in if size1 < size2 then union_aux append s2 s1 else union_aux append s1 s2 (* * See if two sets intersect. *) let rec intersect_aux elems1 elems2 = match elems1, elems2 with elem1 :: elems1', elem2 :: elems2' -> let comp = Base.compare elem1 elem2 in if comp = 0 then true else if comp < 0 then intersect_aux elems1' elems2 else intersect_aux elems1 elems2' | [], _ | _, [] -> false let intersectp s1 s2 = intersect_aux (keys s1) (keys s2) (* * Equality of sets. *) let equal eq set1 set2 = if cardinality set1 = cardinality set2 then let list1 = to_list set1 in let list2 = to_list set2 in List.for_all2 (fun (x1, x2) (y1, y2) -> Base.compare x1 y1 = 0 && eq x2 y2) list1 list2 else false (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Search without reorganizing the tree. *) let rec mem tree key = match tree with Black (key', _, left, right, _) | Red (key', _, left, right, _) -> let comp = Base.compare key key' in if comp = 0 then true else if comp < 0 then mem left key else mem right key | Leaf -> false let rec find_key tree key = match tree with Black (key', _, left, right, _) | Red (key', _, left, right, _) -> let comp = Base.compare key key' in if comp = 0 then Some key' else if comp < 0 then find_key left key else find_key right key | Leaf -> None (* * An empty tree is just a leaf. *) let empty = Leaf let is_empty = function Leaf -> true | Red _ | Black _ -> false let make key data = Black (key, data, Leaf, Leaf, 1) (* * Iterate a function over the hashtable. *) let rec iter f = function Black (key, data, left, right, _) | Red (key, data, left, right, _) -> iter f left; f key data; iter f right | Leaf -> () let iter_all = iter let rec map f = function Black (key, data, left, right, size) -> let left = map f left in let data = f data in let right = map f right in Black (key, data, left, right, size) | Red (key, data, left, right, size) -> let left = map f left in let data = f data in let right = map f right in Red (key, data, left, right, size) | Leaf -> Leaf let rec mapi f = function Black (key, data, left, right, size) -> let left = mapi f left in let data = f key data in let right = mapi f right in Black (key, data, left, right, size) | Red (key, data, left, right, size) -> let left = mapi f left in let data = f key data in let right = mapi f right in Red (key, data, left, right, size) | Leaf -> Leaf let rec mapi_all f = function Black (key, data, left, right, size) -> let left = mapi_all f left in let data = f key data in let right = mapi_all f right in Black (key, data, left, right, size) | Red (key, data, left, right, size) -> let left = mapi_all f left in let data = f key data in let right = mapi_all f right in Red (key, data, left, right, size) | Leaf -> Leaf let rec fold f arg = function Black (key, data, left, right, _) | Red (key, data, left, right, _) -> let arg = fold f arg left in let arg = f arg key data in fold f arg right | Leaf -> arg let fold_all = fold let rec fold_map f arg = function Black (key, data, left, right, size) -> let arg, left = fold_map f arg left in let arg, data = f arg key data in let arg, right = fold_map f arg right in arg, Black (key, data, left, right, size) | Red (key, data, left, right, size) -> let arg, left = fold_map f arg left in let arg, data = f arg key data in let arg, right = fold_map f arg right in arg, Red (key, data, left, right, size) | Leaf -> arg, Leaf let forall2 cmp t1 t2 = (cardinal t1 = cardinal t2) && List.for_all2 (fun (x1, e1) (x2, e2) -> Base.compare x1 x2 = 0 && cmp e1 e2) (to_list t1) (to_list t2) let rec forall cmp t = match t with Black (key, data, left, right, _) | Red (key, data, left, right, _) -> cmp key data && forall cmp left && forall cmp right | Leaf -> true let rec exists cmp t = match t with Black (key, data, left, right, _) | Red (key, data, left, right, _) -> cmp key data || exists cmp left || exists cmp right | Leaf -> false let rec find_iter cmp t = match t with Black (key, data, left, right, _) | Red (key, data, left, right, _) -> let x = cmp key data in (match x with Some _ -> x | None -> let x = find_iter cmp left in match x with Some _ -> x | None -> find_iter cmp right) | Leaf -> None let isect_mem t test = fold (fun t' v x -> if test v then add t' v x else t') empty t let rec keys_acc t acc = match t with Black (key,_,left,right,_) | Red (key,_,left,right,_) -> keys_acc left (key::keys_acc right acc) | Leaf -> acc let keys t = keys_acc t [] let rec data_acc t acc = match t with Black (_,data,left,right,_) | Red (_,data,left,right,_) -> data_acc left (data::data_acc right acc) | Leaf -> acc let data t = data_acc t [] let rec add_list map = function [] -> map | (key,data)::tl -> add_list (add map key data) tl end (* * Recursive version. *) module LmMakeRec = LmMake (* * List version. *) module LmMakeList (Ord : OrderedType) = struct module MMap = LmMake (Ord) type key = Ord.t type 'a t = 'a list MMap.t let empty = MMap.empty let is_empty = MMap.is_empty let cardinal = MMap.cardinal let filter_add t key f = MMap.filter_add t key (function Some (h :: t) -> f (Some h) :: t | Some [] | None -> [f None]) let filter_remove t key f = MMap.filter_remove t key (function h :: t -> (match f h with None -> None | Some h -> Some (h :: t)) | [] -> None) let replace t key f = MMap.filter_add t key (function Some (h :: t) -> f h :: t | Some [] | None -> raise Not_found) let add t key x = MMap.filter_add t key (function Some l -> x :: l | None -> [x]) let find t key = match MMap.find t key with [] -> raise Not_found | h :: _ -> h let remove = MMap.remove let mem = MMap.mem let find_key = MMap.find_key let iter f t = MMap.iter (fun i l -> match l with [] -> () | h :: _ -> f i h) t let map f t = MMap.map (function [] -> [] | h :: _ -> [f h]) t let mapi f t = MMap.mapi (fun i l -> match l with [] -> [] | h :: _ -> [f i h]) t let fold f = MMap.fold (fun x key -> function [] -> x | h :: _ -> f x key h) let fold_map f x t = MMap.fold_map (fun x key data -> List.fold_left (fun (x, data) d -> let x, d = f x key d in let data = d :: data in x, data) (x, []) data) x t let iter_all = MMap.iter let mapi_all = MMap.mapi let fold_all = MMap.fold let data_all = MMap.data let rec add_list map = function [] -> map | (key,data)::tl -> add_list (add map key data) tl let choose t = let key, data = MMap.choose t in match data with [] -> raise Not_found | h :: _ -> key, h let choose_all = MMap.choose (* * find_all is a total function. * find_all_partial fails if the element is not in the table. *) let find_all_partial = MMap.find let find_all = MMap.find_all let filter t key f = (* table_ext v_ext search *) try MMap.filter_remove t key (fun l -> match f l with [] -> None | l -> Some l) with Not_found -> match f [] with [] -> t | l -> MMap.add t key l let forall2 cmp t1 t2 = let cmp l1 l2 = let len1 = List.length l1 in let len2 = List.length l2 in len1 = len2 && List.for_all2 cmp l1 l2 in MMap.forall2 cmp t1 t2 let forall cmp t = let cmp_list key l = List.for_all (fun x -> cmp key x) l in MMap.forall cmp_list t let exists cmp t = let cmp_list key l = List.exists (fun x -> cmp key x) l in MMap.exists cmp_list t let rec find_iter cmp t = let rec cmp_list key l = match l with h :: t -> let x = cmp key h in (match x with Some _ -> x | None -> cmp_list key t) | [] -> None in MMap.find_iter cmp_list t let isect_mem t test = MMap.isect_mem t test let keys t = MMap.keys t let data t = List.concat (MMap.data t) let union = MMap.union let equal eq set1 set2 = if MMap.cardinality set1 = MMap.cardinality set2 then let list1 = MMap.to_list set1 in let list2 = MMap.to_list set2 in List.for_all2 (fun (_x1, x2) (_y1, y2) -> List.length x2 = List.length y2 && List.for_all2 eq x2 y2) list1 list2 else false end (* * Backwards-compatible version. *) module Make (Ord : OrderedType) = struct module XMap = LmMake (Ord) type 'a t = 'a XMap.t type key = XMap.key let empty = XMap.empty let add key data tbl = XMap.add tbl key data let find key tbl = XMap.find tbl key let remove key tbl = XMap.remove tbl key let mem key tbl = XMap.mem tbl key let iter = XMap.iter let map = XMap.map let mapi = XMap.mapi let fold f tbl x = XMap.fold (fun x key data -> f key data x) x tbl end (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_list.ml0000664000152300015230000001644710456222231021001 0ustar jyhjyh(* * List operations. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (************************************************************************ * LIST OPERATIONS * ************************************************************************) (* * Length of a list. *) let rec length' i = function _ :: t -> length' (succ i) t | [] -> i let length l = length' 0 l (* * Destructors. *) let hd = function h :: t -> h | [] -> raise (Failure "hd") let tl = function h :: t -> t | [] -> raise (Failure "tl") let rec nth l i = match l with h :: t -> if i = 0 then h else nth t (pred i) | [] -> raise (Failure "nth") let rec rev' l = function h :: t -> rev' (h :: l) t | [] -> l let rev l = rev' [] l let append = (@) let rec rev_append l l' = match l with h :: t -> rev_append t (h :: l') | [] -> l' let rec concat = function h :: t -> h @ concat t | [] -> [] let flatten = concat (************************************************************************ * ITERATORS * ************************************************************************) let rec iter f = function h :: t -> f h; iter f t | [] -> () let rec map f = function h :: t -> f h :: map f t | [] -> [] let rec rev_map' f l = function h :: t -> rev_map' f (f h :: l) t | [] -> l let rev_map f l = rev_map' f [] l let rec fold_left f x = function h :: t -> fold_left f (f x h) t | [] -> x let rec fold_right f l x = match l with h :: t -> f h (fold_right f t x) | [] -> x (************************************************************************ * ITERATORS ON TWO LISTS * ************************************************************************) let rec iter2 f l1 l2 = match l1, l2 with h1 :: t1, h2 :: t2 -> f h1 h2; iter2 f t1 t2 | [], [] -> () | _ -> raise (Invalid_argument "iter2") let rec map2 f l1 l2 = match l1, l2 with h1 :: t1, h2 :: t2 -> f h1 h2 :: map2 f t1 t2 | [], [] -> [] | _ -> raise (Invalid_argument "map2") let rec rev_map2 f l l1 l2 = match l1, l2 with h1 :: t1, h2 :: t2 -> rev_map2 f (f h1 h2 :: l) t1 t2 | [], [] -> l | _ -> raise (Invalid_argument "rev_map2") let rev_map2 f l1 l2 = rev_map2 f [] l1 l2 let rec fold_left2 f x l1 l2 = match l1, l2 with h1 :: t1, h2 :: t2 -> fold_left2 f (f x h1 h2) t1 t2 | [], [] -> x | _ -> raise (Invalid_argument "fold_left2") let rec fold_right2 f l1 l2 x = match l1, l2 with h1 :: t1, h2 :: t2 -> f h1 h2 (fold_right2 f t1 t2 x) | [], [] -> x | _ -> raise (Invalid_argument "fold_right2") (************************************************************************ * LIST SCANNING * ************************************************************************) let rec for_all f = function h :: t -> f h && for_all f t | [] -> true let rec exists f = function h :: t -> f h || exists f t | [] -> false let rec for_all2 f l1 l2 = match l1, l2 with h1 :: t1, h2 :: t2 -> f h1 h2 && for_all2 f t1 t2 | [], [] -> true | _ -> raise (Invalid_argument "for_all2") let rec exists2 f l1 l2 = match l1, l2 with h1 :: t1, h2 :: t2 -> f h1 h2 || exists2 f t1 t2 | [], [] -> false | _ -> raise (Invalid_argument "exists2") let rec mem x = function h :: t -> x = h || mem x t | [] -> false let rec memq x = function h :: t -> x == h || memq x t | [] -> false (************************************************************************ * LIST SEARCHING * ************************************************************************) let rec find f = function h :: t -> if f h then h else find f t | [] -> raise Not_found let rec filter f = function h :: t -> if f h then h :: filter f t else filter f t | [] -> [] let find_all = filter let rec partition f = function h :: t -> let l1, l2 = partition f t in if f h then h :: l1, l2 else l1, h :: l2 | [] -> [], [] (************************************************************************ * ASSOCIATION LISTS * ************************************************************************) let rec assoc x = function (x', y) :: t -> if x = x' then y else assoc x t | [] -> raise Not_found let rec assq x = function (x', y) :: t -> if x == x' then y else assq x t | [] -> raise Not_found let rec mem_assoc x = function (x', _) :: t -> x = x' || mem_assoc x t | [] -> false let rec mem_assq x = function (x', _) :: t -> x == x' || mem_assq x t | [] -> false let rec remove_assoc x = function (x', _) as h :: t -> if x = x' then t else h :: remove_assoc x t | [] -> [] let rec remove_assq x = function (x', _) as h :: t -> if x == x' then t else h :: remove_assq x t | [] -> [] (************************************************************************ * LISTS OF PAIRS * ************************************************************************) let rec split = function (x, y) :: t -> let l1, l2 = split t in x :: l1, y :: l2 | [] -> [], [] let rec combine l1 l2 = match l1, l2 with h1 :: t1, h2 :: t2 -> (h1, h2) :: combine t1 t2 | [], [] -> [] | _ -> raise (Invalid_argument "combine") (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_buffer.ml0000664000152300015230000000471610456222231021273 0ustar jyhjyh(* * String buffers. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) type entry = Char of char | SubString of string * int * int type t = entry list ref external screate : int -> string = "%screate" external slength : string -> int = "%slength" external sblit : string -> int -> string -> int -> int -> unit = "%sblit" let create _ = ref [] let length buf = let rec loop i = function h :: t -> (match h with Char _ -> loop (succ i) t | SubString (_, _, len) -> loop (len + i) t) | [] -> i in loop 0 !buf let contents buf = let len = length buf in let s = screate len in let rec loop i = function h :: t -> (match h with Char c -> let i = pred i in s.[i] <- c; loop i t | SubString (s', off, len) -> let i = i - len in sblit s' off s i len; loop i t) | [] -> s in loop len !buf let clear buf = buf := [] let reset = clear let add_char buf c = buf := (Char c) :: !buf let add_string buf s = buf := (SubString (s, 0, slength s)) :: !buf let add_substring buf s off len = buf := (SubString (s, off, len)) :: !buf let add_buffer buf1 buf2 = buf1 := !buf2 @ !buf1 (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_ref_util.ml0000664000152300015230000000341610464477010021635 0ustar jyhjyh(* * Operations on references. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_debug (* * Show the file loading. *) let _ = show_loading "Loading Lm_ref_util%t" (* * Stack operations. *) let push a stack = stack := a::!stack let pop stack = match !stack with h::t -> stack := t; h | [] -> raise (Invalid_argument "pop") (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_list_util.ml0000664000152300015230000004652310621751616022044 0ustar jyhjyh(* * Extra utilities for lists. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Exception for operations that have no effect. *) exception Unchanged (* * Array-style operations. *) let sub = let rec skip l off len = if off = 0 then collect [] l len else match l with _ :: l -> skip l (off - 1) len | [] -> raise (Invalid_argument "Lm_list_util.sub") and collect l1 l2 len = if len = 0 then List.rev l1 else match l2 with x :: l2 -> collect (x :: l1) l2 (len - 1) | [] -> raise (Invalid_argument "Lm_list_util.sub") in skip (* * Iterate over two lists, but stop at the end of the * shorter one. *) let rec short_iter2 f l1 l2 = match l1, l2 with h1 :: l1, h2 :: l2 -> f h1 h2; short_iter2 f l1 l2 | _ -> () let rec iter3 f l1 l2 l3 = match l1, l2, l3 with h1 :: l1, h2 :: l2, h3 :: l3 -> f h1 h2 h3; iter3 f l1 l2 l3 | [], [], [] -> () | _ -> raise (Invalid_argument "iter3") (* * Filter items out of a list. *) let rec filter f = function [] -> [] | (h::t) as l -> if f h then let rem = filter f t in if rem == t then l else h::rem else filter f t (* * Insert an element into a position. *) let rec insert_nth i x l = if i = 0 then x :: l else match l with h::t -> h :: insert_nth (i - 1) x t | [] -> raise (Failure "Lm_list_util.insert_nth") (* * Remove an element from a position. *) let rec remove_nth i l = match l with x :: l -> if i = 0 then l else x :: remove_nth (pred i) l | [] -> raise (Failure "Lm_list_util.remove_nth") (* * Work left-to-right, but reverse the result. *) let rec rev_map' f l = function h :: t -> rev_map' f (f h :: l) t | [] -> l let rev_map f l = rev_map' f [] l (* * Reverse do_list. *) let rec rev_iter f = function h::t -> rev_iter f t; ignore (f h) | [] -> () (* * Flat map. *) let rec flat_map_aux f accum l = function h::t -> flat_map_aux f (h::accum) l t | [] -> begin match l with [] -> accum | h :: t -> flat_map_aux f accum t (f h) end let flat_map f l = List.rev (flat_map_aux f [] l []) (* * Map, and discard errors. *) let rec fail_map f = function h::t -> begin try let h = f h in h :: fail_map f t with Failure _ -> fail_map f t end | [] -> [] (* * Map, and discard None. *) let rec some_map_aux unchanged f = function h :: t -> begin match f h with Some h' -> h' :: some_map_aux (unchanged && h' == h) f t | None -> some_map_aux false f t end | [] -> if unchanged then raise Unchanged; [] let some_map_safe f l = try some_map_aux true f l with Unchanged -> l let rec some_map f = function h :: t -> begin match f h with Some h' -> h' :: some_map f t | None -> some_map f t end | [] -> [] (* * Cross between map and fold_left. *) let rec fold_left_aux f x l = function h :: t -> let x', h' = f x h in fold_left_aux f x' (h' :: l) t | [] -> x, List.rev l let fold_left f x l = fold_left_aux f x [] l (* * Generalize fold_left over three lists. *) let rec fold_left3 f arg l1 l2 l3 = match l1, l2, l3 with h1 :: t1, h2 :: t2, h3 :: t3 -> fold_left3 f (f arg h1 h2 h3) t1 t2 t3 | [], [], [] -> arg | _ -> raise (Invalid_argument "fold_left3") (* * Find the elemnt. *) let rec find f = function h::t -> if f h then h else find f t | [] -> raise Not_found let rec find_item_aux f i = function h::t -> if f h then i else find_item_aux f (i + 1) t | [] -> raise Not_found let find_item f l = find_item_aux f 0 l let rec find_index_aux v i = function h::t -> if h = v then i else find_index_aux v (i + 1) t | [] -> raise Not_found let find_index v l = find_index_aux v 0 l let rec fild_rindex_aux v i curr = function [] -> i | h :: t -> fild_rindex_aux v (if h=v then curr else i) (curr + 1) t let find_rindex v l = let i = fild_rindex_aux v (-1) 0 l in if i>=0 then i else raise Not_found let rec find_indexq_aux v i = function h::t -> if h == v then i else find_indexq_aux v (i + 1) t | [] -> raise Not_found let find_indexq v l = find_indexq_aux v 0 l (* * Find the index of an element in a list. *) let find_index_eq eq x l = let rec search i = function h :: t -> if eq x h then i else search (succ i) t | [] -> raise Not_found in search 0 l (* * Split a list. *) let rec split_list i l = match (i,l) with 0, _ -> [], l | _, h::t -> let l, l' = split_list (i - 1) t in h::l, l' | _, [] -> raise (Failure "Lm_list_util.split_list") (* * Split off the last item. *) let rec split_last = function [h] -> [], h | h::t -> let l, x = split_last t in h::l, x | [] -> raise (Failure "Lm_list_util.split_last") (* * Split based on an index. *) let rec split i l = if i = 0 then [], l else match l with h :: t -> let l1, l2 = split (pred i) t in h :: l1, l2 | [] -> raise (Invalid_argument "split") (* * Split into fragments. *) let splitup n l = let rec split i vll vl1 vl2 = match vl2 with v :: vl2 -> if i = 0 then split n (List.rev vl1 :: vll) [v] vl2 else split (pred i) vll (v :: vl1) vl2 | [] -> List.rev vl1 :: vll in match l with [] -> [] | h :: t -> split n [] [h] t (* * Get the last element. *) let rec last = function [x] -> x | _ :: t -> last t | [] -> raise (Invalid_argument "last") (* * Return the first n elements of the list. *) let rec firstn i l = if i = 0 then [] else match l with h :: t -> h :: firstn (pred i) t | [] -> [] (* * Nth tail. *) let rec nth_tl i l = if i = 0 then l else match l with _ :: l -> nth_tl (pred i) l | [] -> raise (Invalid_argument "nth_tl") (* * Functional replacement. *) let rec replacef_nth i f = function h::t -> if i = 0 then f h :: t else h :: replacef_nth (i - 1) f t | [] -> raise (Failure "Lm_list_util.replacef_nth") let rec replacef_arg_nth i f = function h::t -> if i = 0 then let h, arg = f h in h :: t, arg else let t, arg = replacef_arg_nth (i - 1) f t in h :: t, arg | [] -> raise (Failure "Lm_list_util.replacef_arg_nth") (* * Replace the nth element of the list. *) let rec replace_nth i x l = match l with [] -> raise (Invalid_argument "replace_nth") | h :: l -> if i = 0 then x :: l else h :: replace_nth (pred i) x l let rec replace_first f x = function h::t -> if f h then x :: t else h :: replace_first f x t | [] -> raise Not_found let rec replace_all f x = function h::t -> (if f h then x else h) :: (replace_all f x t) | [] -> [] (* * Functional replacement. *) let rec replaceq x1 x2 = function h::t -> if h == x1 then x2 :: replaceq x1 x2 t else h :: replaceq x1 x2 t | [] -> [] (* * Subtraction. *) let rec subtract_list l1 l2 = match l1 with h :: l1 -> if List.mem h l2 then subtract_list l1 l2 else h :: subtract_list l1 l2 | [] -> [] (* * map2to1 *) let rec map2to1 f l1 l2 = match l1, l2 with [], [] -> [] | h1::l1, h2::l2 -> f h1 h2 :: map2to1 f l1 l2 | _ -> raise (Invalid_argument "map2to1") (* * fold_left + map = fold_map *) let rec fold_map f i l = match l with [] -> i, [] | hd :: tl -> let i, hd = f i hd in let i, l = fold_map f i tl in i, hd :: l let rec fold_map2to1 f i l1 l2 = match l1, l2 with [], [] -> i, [] | h1 :: l1, h2 :: l2 -> let i, h = f i h1 h2 in let i, l = fold_map2to1 f i l1 l2 in i, h :: l | _ -> raise (Invalid_argument "fold_map2to1") let rec fold_map1to2 f i l = match l with [] -> i, [], [] | hd :: tl -> let i, hd1, hd2 = f i hd in let i, l1, l2 = fold_map1to2 f i tl in i, hd1 :: l1, hd2 :: l2 (* * fold + filter = fold_filter *) let rec fold_filter f x l = match l with [] -> x, [] | h :: t -> let x, b = f x h in if b then let x, t = fold_filter f x t in x, h :: t else fold_filter f x t (* * check list lengths equal *) let rec length_eq l1 l2 = match l1, l2 with [], [] -> true | _ :: l1, _ :: l2 -> length_eq l1 l2 | _ -> false (* * Add an element based on physical equality. *) let addq x l = if List.memq x l then l else x :: l (* * Union of two lists using equality. *) let rec union l1 l2 = match l1 with x :: l1 -> if List.mem x l2 then union l1 l2 else x :: union l1 l2 | [] -> l2 (* * Intersect two lists. * Quadratic algorithm. *) let rec intersect l = function h::t -> if List.mem h l then h :: intersect l t else intersect l t | [] -> [] let rec intersectq l = function h::t -> if List.memq h l then h :: intersectq l t else intersectq l t | [] -> [] let rec intersects l = function h :: t -> List.mem h l or intersects l t | [] -> false (* * Subtract an element from a list. * Quadratic algorithm. *) let rec subtract l1 l2 = match l1 with h::t -> if List.mem h l2 then subtract t l2 else h :: subtract t l2 | [] -> [] (* * Subtract only the first occurrence. *) let rec mem_once v head = function h :: t -> if v = h then Some (head @ t) else mem_once v (h :: head) t | [] -> None let rec subtract_multiset l1 l2 = match l1 with h :: t -> begin match mem_once h [] l2 with Some l2 -> subtract_multiset t l2 | None -> h :: subtract_multiset t l2 end | [] -> [] (* * Subtract an element from a list. * Quadratic algorithm. *) let rec subtractq l1 l2 = match l1 with h::t -> if List.memq h l2 then subtractq t l2 else h :: subtractq t l2 | [] -> [] (* * Union of lists by structural equality. *) let rec union l = function h::t -> if List.mem h l then union l t else h::(union l t) | [] -> l (* * Union of lists by physical equality. * The semantics are important: * all the elements in the first argument that do not * exist in the second argument are consed _in order_ onto * the first argument. *) let rec unionq h l = match h with h :: t -> if List.memq h l then unionq t l else h :: unionq t l | [] -> l (* * The first list is a subset of the second one (based on structural equality) *) let rec subset l1 l2 = match l1 with x :: l1 -> List.mem x l2 && subset l1 l2 | [] -> true (* * Remove marked elements. *) let rec remove_elements l1 l2 = match l1, l2 with flag::ft, h::t -> if flag then remove_elements ft t else h :: remove_elements ft t | _, l -> l let rec removeq x = function h::t -> if h == x then t else h :: removeq x t | [] -> raise (Failure "Lm_list_util.removeq") let rec remove x = function h::t -> if h = x then t else h :: remove x t | [] -> raise (Failure "Lm_list_util.remove") let rec tryremove x = function (h :: t) as l -> if h = x then t else let res = tryremove x t in if res == t then l else h :: res | [] -> [] (* * Remove the specified suffix from the list. *) let rec remove_suffix_aux suffix = function (0, l') -> if l' = suffix then [] else raise (Failure "Lm_list_util.remove_suffix") | (i, _::t) -> remove_suffix_aux suffix (i - 1, t) | _ -> (* This will never happen *) raise (Failure "Lm_list_util.remove_suffix") let remove_suffix l suffix = let i = (List.length l) - (List.length suffix) in if i >= 0 then remove_suffix_aux suffix (i, l) else raise (Failure "Lm_list_util.remove_suffix") (* * Compare two lists of things. *) let rec compare_lists cmp l1 l2 = match (l1,l2) with h1::t1, h2::t2 -> let i = cmp h1 h2 in if i = 0 then compare_lists cmp t1 t2 else i | [], [] -> 0 | [], _ -> -1 | _ -> 1 let rec compare_cmp cmp l1 l2 = match l1, l2 with h1 :: t1, h2 :: t2 -> cmp h1 h2 && compare_cmp cmp t1 t2 | [], [] -> true | _ -> false let rec compare_eq l1 l2 = match l1, l2 with h1::t1, h2::t2 -> h1 == h2 & compare_eq t1 t2 | [], [] -> true | _ -> false (* * Get the nth item. *) let rec nth l i = if i <= 0 then raise (Failure "Lm_list_util.nth") else match l with _::t -> nth t (i - 1) | [] -> raise (Failure "Lm_list_util.nth") (* * Map a function over two lists. *) let rec map2 f l1 l2 = match (l1,l2) with h1::t1, h2::t2 -> let h = f h1 h2 in h :: map2 f t1 t2 | [], [] -> [] | _ -> raise (Failure "Lm_list_util.map2") let rec iter2 f al bl = match (al, bl) with h1::t1, h2::t2 -> f h1 h2; iter2 f t1 t2 | [], [] -> () | _ -> raise (Failure "Lm_list_util.iter2") let rec rev_iter2 f a b = match (a,b) with ([], []) -> () | (ha::ta, hb::tb) -> rev_iter2 f ta tb; f ha hb | _ -> raise (Failure "Lm_list_util.rev_iter2") (* * Test two lists. *) let rec for_all2 f l1 l2 = match (l1,l2) with h1::t1, h2::t2 -> f h1 h2 & for_all2 f t1 t2 | [], [] -> true | _ -> false (* * Exists a pair in the two lists. *) let rec exists2 f l1 l2 = match (l1,l2) with h1::t1, h2::t2 -> f h1 h2 or exists2 f t1 t2 | _ -> false (* * Fold left over two lists. *) let rec fold_left2 f x al bl = match (al, bl) with (h1::t1, h2::t2) -> fold_left2 f (f x h1 h2) t1 t2 | [], [] -> x | _ -> raise (Failure "Lm_list_util.fold_left2") let rec smap f = function [] -> [] | hd::tl as l -> let hd' = f hd in let tl' = smap f tl in if (hd == hd') && (tl == tl') then l else hd'::tl' (************************************************************************ * Association lists. *) let rec zip_list l l1 l2 = match (l1,l2) with (h1::t1), (h2::t2) -> zip_list ((h1,h2)::l) t1 t2 | [], [] -> l | _ -> raise (Failure "Lm_list_util.zip") (* * Zip two lists. Same as List.combine, but raises Failure instead of Invalid_argument *) let rec zip a b = match (a,b) with (h1::t1), (h2::t2) -> (h1, h2) :: zip t1 t2 | [], [] -> [] | _ -> raise (Failure "Lm_list_util.zip") (* * Produce a list of first elements out of the list of pairs *) let rec fst_split = function [] -> [] | (a, _) :: tl -> a :: fst_split tl (* * Apply a function to the key in an assoc list. *) let rec apply_assoc v l f = match l with (v', k) as h :: t -> if v' = v then (v', f k) :: t else h :: apply_assoc v t f | [] -> raise Not_found (* * Find index of association. *) let rec assoc_index_aux a i = function (a', _)::t -> if a' = a then i else assoc_index_aux a (i + 1) t | [] -> raise Not_found let assoc_index l a = assoc_index_aux a 0 l (* * Replace an association, but preserve order. *) let rec assoc_replace l a b = match l with (a', b')::t -> if a' = a then (a, b)::t else (a', b')::(assoc_replace t a b) | [] -> raise Not_found (* * Add the association if it doesn't already exist. *) let add_assoc (v1, v2) l = try let v2' = List.assoc v1 l in if v2 = v2' then l else raise (Failure "Lm_list_util.add_assoc") with Not_found -> (v1, v2)::l (* * See if a value is in domain. *) let rec assoc_in_dom eq y = function (y',_)::tl -> (eq y y') || (assoc_in_dom eq y tl) | [] -> false (* * See if a value is in range. *) let rec assoc_in_range eq y = function (_, y')::tl -> (eq y y') || (assoc_in_range eq y tl) | [] -> false let rec assoc_append_replace_snd l v = function [] -> l | (v', _) :: tl -> (v', v) :: (assoc_append_replace_snd l v tl) let rec check_assoc v v' = function [] -> v=v' | (v1,v2)::tl -> begin match v=v1, v'=v2 with true, true -> true | false, false -> check_assoc v v' tl | _ -> false end let rec try_check_assoc v v' = function [] -> raise Not_found | (v1,v2)::tl -> begin match v=v1, v'=v2 with true, true -> true | false, false -> try_check_assoc v v' tl | _ -> false end let rec try_assoc v = function [] -> v | (v1,v2)::tl -> if v1=v then v2 else try_assoc v tl (* * Association list with an equality. *) let rec assoc_eq eq x = function (x', y) :: t -> if eq x x' then y else assoc_eq eq x t | [] -> raise Not_found (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_string.ml0000664000152300015230000001040110456222231021314 0ustar jyhjyh(* * String operations. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* these will have to change if we start to use C strings (simply add an extra, final element '\000') *) let length = Array.length let get = Array.get let set = Array.set let create n = Array.create n '\000' (* '\000' is an "arbitrary character" *) let make = Array.create let copy = Array.copy let sub = Array.sub let fill = Array.fill let blit = Array.blit let concat = Array.append (* * Escape the string. *) let escaped s = let buf = Buffer.create 19 in for i = 0 to pred (length s) do Buffer.add_string buf (Char.escaped s.[i]) done; Buffer.contents buf (* * First occurrence of the char in the string. *) let index s c = let len = length s in let rec loop i = if i = len then raise Not_found else if s.[i] = c then i else loop (succ i) in loop 0 (* * Last ocurrence of the char in the string. *) let rindex s c = let rec loop i = if i <= 0 then raise Not_found; let i = pred i in if s.[i] = c then i else loop (pred i) in loop (length s) (* * First occurrence of the char in the string. *) let index_from s i c = let len = length s in let rec loop i = if i = len then raise Not_found; if s.[i] = c then i else loop (succ i) in if i < 0 || i > len then raise (Invalid_argument "index_from"); loop i (* * Last ocurrence of the char in the string. *) let rindex_from s i c = let rec loop i = if i = 0 then raise Not_found; let i = pred i in if s.[i] = c then i else loop i in let len = length s in if i < 0 || i > len then raise (Invalid_argument "rindex_from"); loop i (* * String containment. *) let contains s c = let len = length s in let rec loop i = if i = len then false else s.[i] = c || loop (succ i) in loop 0 let contains_from s i c = let len = length s in let rec loop i = if i = len then false else s.[i] = c || loop (succ i) in if i < 0 || i > len then raise (Invalid_argument "contains_from"); loop i let rcontains_from s i c = let rec loop i = if i = 0 then false else let i = pred i in s.[i] = c || loop i in let len = length s in if i < 0 || i > len then raise (Invalid_argument "rcontains_from"); loop i (* * Convert to uppercase. *) let uppercase s = let s' = copy s in for i = 0 to pred (length s) do s'.[i] <- Char.uppercase s.[i] done; s' let lowercase s = let s' = copy s in for i = 0 to pred (length s) do s'.[i] <- Char.lowercase s.[i] done; s' let capitalize s = if s = "" then s else let s' = copy s in s'.[0] <- Char.uppercase s'.[0]; s' let uncapitalize s = if s = "" then s else let s' = copy s in s'.[0] <- Char.lowercase s'.[0]; s' (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_splay_linear_set.mli0000664000152300015230000000314710464477010023533 0ustar jyhjyh(* * This module provides a linearly ordered numbered set implementation * with lazy functions based on splay trees * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Alexey Nogin *) open Lm_linear_set_sig type 'a linear_set module Make (Type : TypeSig) : LinearSetSig with type elt = Type.t with type t = Type.t linear_set omake-0.9.8.5/src/libmojave-external/stdlib/lm_pervasives.h0000664000152300015230000000256710456222231022032 0ustar jyhjyh/* * Define the default format module. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifndef _LM_PERVASIVES_H #define _LM_PERVASIVES_H /* * Use Lm_format by default */ #ifndef FORMAT # define FORMAT Lm_format # define FORMAT_LM # undef FORMAT_STD #endif #endif /* _LM_PERVASIVES */ omake-0.9.8.5/src/libmojave-external/stdlib/lm_imp_dag.ml0000664000152300015230000002621510464477010021426 0ustar jyhjyh(* * Imperative DAGS. We implement the DAG as a vector. * Each entry in the vector contains the value for a node, * and all the outgoing edges, represented by their destination * index. * * This is a space-saving dag. Only the real edges * and the quiried edges are actually saved. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_debug open Lm_dag_sig (* * Show the file loading. *) let _ = show_loading "Loading Imp_dag%t" module ImpDag = struct (************************************************************************ * TYPES * ************************************************************************) (* * An entry in the vector contains some value, and the edges * in the graph. When a query is made. * 1. if the version number * is up-to-date, and the edge is in unrelated, then * NoRelation is returned. If the edge is in entry_out_edges, * the LessThan is returned. Else, a search is made, and a new edge * either added to out_edges or unrelated. * 2. If the version number is out of date, then the * unrelated edges are cleared. * * Invariant: edge lists are sorted * *) type 'a entry = { mutable entry_value : 'a; mutable entry_in_edges : int list; mutable entry_out_edges : int list; mutable entry_no_relation : int list; mutable entry_version : int } (* * A DAG is a vector of entries. * We add a level of indirection to allow for equating nodes. *) type 'a t = { mutable entries : ('a entry) array; mutable version : int } type 'a node = int (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Raw equality. *) let eq (node1 : 'a node) (node2 : 'a node) = node1 == node2 (* * Insert a value into a sorted list. *) let rec list_insert i l = match l with h :: t -> if h < i then h :: (list_insert i t) else if h > i then i :: l else l | [] -> [i] (* * Remove a particular entry from the list, and * decrement all larger indices. *) let rec list_delete i = function h :: t -> if h < i then h :: list_delete i t else if h = i then list_delete i t else h - 1 :: list_delete i t | [] -> [] (* * Construct a new DAG. *) let create () = { entries = [||]; version = 0 } (* * Add a new node unrelated to the rest of the DAG. *) let insert dag v = let { entries = entries; version = version } = dag in let length = Array.length entries in let entry = { entry_value = v; entry_in_edges = []; entry_out_edges = []; entry_no_relation = []; entry_version = version; } in let newentries = Array.create (length + 1) entry in Array.blit entries 0 newentries 0 length; dag.entries <- newentries; length (* * Delete a node by updating all indices. *) let delete dag node = let { entries = entries; version = version } = dag in let length = Array.length entries in let newentries = Array.create (length - 1) entries.(0) in let delete entry = entry.entry_in_edges <- list_delete node entry.entry_in_edges; entry.entry_out_edges <- list_delete node entry.entry_out_edges in Array.blit entries 0 newentries 0 node; Array.blit entries (node + 1) newentries node (length - node - 1); Array.iter delete entries; dag.version <- version + 1 (* * Add an edge from node1 to node2. *) let add_edge dag node1 node2 = let { entries = entries; version = version } = dag in let entry1 = entries.(node1) in let entry2 = entries.(node2) in entry1.entry_out_edges <- list_insert node2 entry1.entry_out_edges; entry2.entry_in_edges <- list_insert node1 entry2.entry_in_edges; dag.version <- version + 1 (* * Two nodes are made equal by creating a cycle. *) let equate dag node1 node2 = add_edge dag node1 node2; add_edge dag node2 node1 (* * Projections. *) let node_value { entries = entries } i = entries.(i).entry_value let node_out_edges { entries = entries } i = entries.(i).entry_out_edges let node_in_edges { entries = entries } i = entries.(i).entry_in_edges (* * Sweep a function up the DAG, calling on the children first. * The function is called only once on each node, so we keep a vector * of cached values. The oproj and iproj are the projection * functions for entry.entry_out_edges and entry.entry_in_edges, or * vice versa. *) let sweep_aux entries f oproj iproj = let len = Array.length entries in let values = Array.create len None in let rec expand i = match values.(i) with None -> let entry = entries.(i) in let children = List.map expand (oproj entry) in let result = f entry.entry_value children in values.(i) <- Some result; result | Some result -> result in let rec aux i = if i < len then let entry = entries.(i) in let result = expand i in if (iproj entry) = [] then result::(aux (i + 1)) else aux (i + 1) else [] in aux 0 let out_edges_f { entry_out_edges = edges } = edges let in_edges_f { entry_in_edges = edges } = edges let some_edges_f { entry_in_edges = _ } = [] let sweep_up { entries = entries } f = sweep_aux entries f out_edges_f in_edges_f let sweep_down { entries = entries } f = sweep_aux entries f in_edges_f out_edges_f let sweep_up_all { entries = entries } f = sweep_aux entries f out_edges_f some_edges_f let sweep_down_all { entries = entries } f = sweep_aux entries f in_edges_f some_edges_f (* * Get the roots of the DAG. * These nodes have no in_edges. *) let roots { entries = entries } = let length = Array.length entries in let rec collect i = if i = length then [] else let entry = entries.(i) in if entry.entry_in_edges = [] then i :: collect (i + 1) else collect (i + 1) in collect 0 (* * Sort the list from the roots. *) let sort info = let entries = info.entries in let length = Array.length entries in let found = Array.create length false in let roots = roots info in let rec collect l i = if found.(i) then l else let entry = entries.(i) in let next = entry.entry_out_edges in found.(i) <- true; List.fold_left collect (i :: l) next in List.fold_left collect [] roots (* * Expand to all the reachable nodes. *) let search select entries node1 node2 = let rec loop searched front = match front with node :: t -> if node = node2 then true else if List.mem node searched then loop searched t else let edges = select entries.(node) in loop (node :: searched) (Sort.merge (<) edges t) | [] -> false in loop [] [node1] (* * Find the relation and cache it. * If version is out-of-date, delete the no_relation. * If edge is found, then return it, else search. *) let node_rel dag node1 node2 = let { entries = entries; version = version } = dag in let entry1 = entries.(node1) in let { entry_in_edges = in_edges; entry_out_edges = out_edges; entry_no_relation = no_relation; entry_version = version' } = entry1 in let no_relation = if version' = version then no_relation else begin entry1.entry_no_relation <- []; entry1.entry_version <- version; [] end in (* First check for cached edges *) if List.mem node2 no_relation then NoRelation else if List.mem node2 out_edges then if List.mem node2 in_edges then Equal else LessThan else if List.mem node2 in_edges then GreaterThan (* If not in cache, then do a search *) else if search out_edges_f entries node1 node2 then if search in_edges_f entries node1 node2 then begin entry1.entry_out_edges <- list_insert node2 out_edges; entry1.entry_in_edges <- list_insert node2 in_edges; Equal end else begin entry1.entry_out_edges <- list_insert node2 out_edges; LessThan end else if search in_edges_f entries node1 node2 then begin entry1.entry_in_edges <- list_insert node2 in_edges; GreaterThan end else begin entry1.entry_no_relation <- list_insert node2 no_relation; NoRelation end end (* * -*- * Local Variables: * Caml-master: "editor.top" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_debug.mli0000664000152300015230000000603310464477010021261 0ustar jyhjyh(* * Debugging tools. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * Info about debug variables. * The variables themselves are defined in the Lm_debug module. *) type debug_info = { debug_name : string; debug_description : string; debug_value : bool } (* if "load" debug is true, `show_load (s ^ "%t")' will print s to stderr and flush stderr *) val show_loading : ((out_channel -> unit) -> unit, out_channel, unit) format -> unit (* * Lm_debug flags. *) val debug_enabled : bool val debug : bool ref -> bool val debug_level : int ref -> int -> bool (* * We create named debug variables. *) val create_debug : debug_info -> bool ref val load_debug : string -> bool ref (* * Operations to inspect debug flags. *) val set_debug : string -> bool -> unit val get_debug : string -> debug_info val debuggers : unit -> debug_info array val debug_usage : unit -> unit (* * We allow flags to be set from the environment. * they may be set before the vars are created, * so we add them as "possible" debug flags, * then check them later. *) val set_possible_debug : string -> bool -> unit val check_debug : unit -> unit (* * Interface with Arg module. *) val set_debug_flags : string -> unit (* * Helper function for ad-hoc profiling. (timing_wrap s f x) computes (f x) * keeping track of the time it took to do it and collects the statistics * indexed by s. * report_timing prints out the statistics collected so far. This function * will be called automatically at function exit. * * Warning: timing_wrap is currently not threads-safe. *) val timing_wrap : string -> ('a -> 'b) -> 'a -> 'b val report_timing : unit -> unit (* * -*- * Local Variables: * Caml-master: "refiner.run" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_shell.ml0000664000152300015230000001203110456222231022445 0ustar jyhjyh(* * A simple job interface, where separate states get integer * ids. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_thread open Lm_thread_sig open Lm_printf (* * List of states, indexed by pid. *) type pid = string * int module PidCompare = struct type t = pid let compare ((s1, i1) : pid) ((s2, i2) : pid) = let cmp = i1 - i2 in if cmp = 0 then compare s1 s2 else cmp end module PidTable = Lm_map.LmMake (PidCompare) type job_type = HiddenJob | VisibleJob type job = { job_type : job_type; job_state : State.t } type info = { mutable info_jobs : job PidTable.t } type current = { mutable current_pid : pid; mutable current_state : State.t } (* * Common state for all threads. *) let root_id = "id", 1 let info_entry = let current = State.current () in let job = { job_type = HiddenJob; job_state = current } in let info = { info_jobs = PidTable.add PidTable.empty root_id job } in State.shared_val "Lm_thread_shell.info" info (* * Sub-state for each thread. *) let current_entry = let current = { current_pid = root_id; current_state = State.current () } in let fork current = { current with current_pid = current.current_pid } in State.private_val "Lm_thread_shell.current" current fork (* * Get a process name that is not used. *) let new_pid info name = let jobs = info.info_jobs in let rec search i = let pid = name, i in if PidTable.mem jobs pid then search (succ i) else pid in search 1 (* * Create a new pid with its own state. *) let create name job_type = State.write info_entry (fun info -> let pid = new_pid info name in let { info_jobs = jobs } = info in let state = State.create () in let job = { job_type = job_type; job_state = state } in State.with_state state (fun () -> State.write current_entry (fun current -> current.current_pid <- pid; current.current_state <- state)) (); info.info_jobs <- PidTable.add jobs pid job; pid) (* * Get the pid for a string. * Check that it is defined. *) let make_pid id i = let pid = id, i in State.read info_entry (fun info -> if PidTable.mem info.info_jobs pid then pid else raise Not_found) let dest_pid (id, i) = id, i (* * Create a job with an exact id. *) let create_or_find id i mode = try make_pid id i with Not_found -> create id mode (* * Return the current pid. *) let get_pid () = State.read current_entry (fun current -> current.current_pid) let get_pids () = List.rev (State.read info_entry (fun info -> PidTable.fold (fun pids pid job -> match job.job_type with HiddenJob -> pids | VisibleJob -> pid :: pids) [] info.info_jobs)) (* * Set the pid used by all processes. *) let set_pid pid = State.read info_entry (fun info -> State.write current_entry (fun current -> let state = (PidTable.find info.info_jobs pid).job_state in current.current_state <- state; current.current_pid <- pid; State.set state)) (* * Evaluate in the current pid. *) let with_current f x = let state = State.read current_entry (fun current -> current.current_state) in State.with_state state f x (* * Evaluate in a specific pid. *) let with_pid pid f x = let job = State.read info_entry (fun info -> PidTable.find info.info_jobs pid) in State.with_state job.job_state f x (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_table_util.mli0000664000152300015230000000324310464477010022317 0ustar jyhjyh(* * Generic utilities on tables. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_map_sig module MakeTable (Create : TableCreateSig) (Base : TableBaseSig) : TableSig with type t = ( Base.elt, Base.data) Create.t with type elt = Base.elt with type data = Base.data (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_splay_linear_set.ml0000664000152300015230000003637710556173566023410 0ustar jyhjyh(* * This module provides a linearly ordered numbered set implementation * with lazy functions based on splay trees * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Alexey Nogin *) open Lm_array_util open Lm_linear_set_sig type ind = int type 'a tree = Leaf | Node of ind * 'a * 'a linear_set * 'a linear_set * int | Lazy of ('a -> 'a) * 'a linear_set | Offset of int * 'a linear_set and 'a linear_set = { mutable tree : 'a tree } module Make (Type : TypeSig) = struct type elt = Type.t type t = Type.t linear_set type index = ind type direction = Left of t | Right of t let empty = { tree = Leaf } let singleton x = { tree = Node (0,x,empty,empty,1) } open Lm_printf let rec print_aux s = function { tree = Leaf } -> () | { tree = Node (i,_,t1,t2,_) } -> print_aux (s^"/") t1; printf "%s%d\n" s i; print_aux (s^"\\") t2; | { tree = Lazy (_,t) } -> printf "%s Lazy\n" s; print_aux (s^"|") t | { tree = Offset (i,t) } -> printf "%s Offset %d" s i; print_aux (s^"|") t let print s t = print_aux s t; printf "%t" flush let rec length t = match t.tree with Leaf -> 0 | Node (_,_,_,_,i) -> i | Lazy (_,t) | Offset (_,t) -> length t let rec create_aux start num elt = if num=0 then Leaf else let numl = num/2 in let offr = succ numl in let numr = num - offr in let numi = start + numl in let startr = succ numi in Node ( numi,elt, { tree = create_aux start numl elt }, { tree = create_aux startr numr elt }, num ) let create i e = { tree = create_aux 0 i e } let make = create let rec go_down f = function { tree = Leaf } -> Leaf | { tree = Node (i,e,t1,t2,n) } -> Node (i,f e, { tree = go_down f t1 }, { tree = go_down f t2 }, n) | { tree = Lazy (f2,tree) } as t -> t.tree <- go_down f2 tree; go_down f t | { tree = Offset(i,t) } -> Offset(i,{ tree = go_down f t }) let rec to_list_aux collect = function { tree = Leaf } -> collect | { tree = Node (_,e,t1,t2,_) } -> to_list_aux (e::(to_list_aux collect t2)) t1 | { tree = Lazy (f,tree) } as t -> t.tree <- go_down f tree; to_list_aux collect t | { tree = Offset (_,t) } -> to_list_aux collect t let to_list t = to_list_aux [] t let rec iter ( f : elt -> unit ) = function { tree = Leaf } -> () | { tree = Node (_,e,t1,t2,_) } -> iter f t1; f e; iter f t2 | { tree = Lazy (f',tree) } as t -> t.tree <- go_down f' tree; iter f t | { tree = Offset (_,t) } -> iter f t let rec map ( f : elt -> elt ) = function { tree = Leaf } -> { tree = Leaf } | { tree = Node (ind, e, t1, t2, i) } -> { tree = Node (ind, f e, map f t1, map f t2, i) } | { tree = Lazy (f', tree) } as t -> t.tree <- go_down f' tree; map f t | { tree = Offset (i, t) } -> { tree = Offset (i, map f t) } let rec fold (f : 'a -> index -> elt -> 'a) x = function { tree = Leaf } -> x | { tree = Node (ind, e, t1, t2, _) } -> fold f (f (fold f x t1) ind e) t2 | { tree = Lazy (f', tree) } as t -> t.tree <- go_down f' tree; fold f x t | { tree = Offset (_, t) } -> fold f x t let rec of_list_aux max start lst = match max, lst with _,[] | 0,_ -> empty, start, lst | _ -> begin match of_list_aux (max/2) start lst with _, _, [] as c -> c | left, lend, h::t -> let right, rend, rlst = of_list_aux (max - max/2 - 1) (succ lend) t in { tree = Node (lend,h,left,right,rend-start) },rend,rlst end let of_list l = match of_list_aux (List.length l) 0 l with t,_,[] -> (* print "of_list " t; *) t | _ -> raise (Invalid_argument "Linear_set.of_list") let lazy_apply f t = { tree = Lazy (f,t) } let append t1 e t2 = let s1 = length t1 in let ss1 = succ s1 in { tree = Node (s1,e,t1,{ tree = Offset (ss1,t2) }, ss1+(length t2)) } (* XXX: this is very slow of course *) let concat t1 t2 = of_list (to_list t1 @ to_list t2) let compose g f x = g(f(x)) let rec offset_down off = function { tree = Offset (off2, t) } -> offset_down (off+off2) t | { tree = (Node (i,e,t1,t2,n) as node) } -> if off=0 then node else Node (i+off,e,{tree = Offset(off,t1)}, {tree=Offset(off,t2)},n) | { tree = Leaf } -> Leaf | t -> push_down t; offset_down off t and func_down f = function { tree = Lazy(g,t) } -> func_down (compose f g) t | { tree = Node (i,e,t1,t2,n) } -> Node (i, f e, {tree = Lazy (f,t1)}, {tree=Lazy(f,t2)},n) | { tree = Leaf } -> Leaf | t -> push_down t; func_down f t and push_down = function { tree = Offset (off, t') } as t -> t.tree <- offset_down off t' | { tree = Lazy (f,t') } as t -> t.tree <- func_down f t' | _ -> () let new_node i e l r = { tree = Node(i,e,l,r,succ (length l) + (length r)) } let rec rotate_left = function { tree = Node (i,e,{tree=Node(il,el,left_left,left_right,_)},right,size) } as t -> t.tree <- Node(il,el,left_left,new_node i e left_right right,size) | _ -> raise (Invalid_argument "Linear_set.rotate_left") (* This should not happen ? | { tree = Node (_,_,tl,_,_) } as t -> push_down tl; rotate_left t | t -> push_down t; rotate_left t *) let rec rotate_right = function { tree = Node (i,e,left,{tree=Node(ir,er,right_left,right_right,_)},size) } as t -> t.tree <- Node(ir,er,new_node i e left right_left,right_right,size) | _ -> raise (Invalid_argument "Linear_set.rotate_right") (* This should not happen ? | { tree = Node (_,_,_,tr,_) } as t -> push_down tr; rotate_right t | t -> push_down t; rotate_right t *) let rec lift = function [] -> () | [Left parent] -> rotate_left parent | [Right parent] -> rotate_right parent | Left _parent :: Left grandparent :: ancestors -> ( rotate_left grandparent; rotate_left grandparent; (* parent has moved into grandparent's pos ition *) lift ancestors ) | Right _parent :: Right grandparent :: ancestors -> ( rotate_right grandparent; rotate_right grandparent; (* parent has moved into grandparent's po sition *) lift ancestors ) | Left parent :: Right grandparent :: ancestors -> ( rotate_left parent; rotate_right grandparent; lift ancestors ) | Right parent :: Left grandparent :: ancestors -> ( rotate_right parent; rotate_left grandparent; lift ancestors ) let rec splay ind path = function { tree = Node (i, _, left, right, _) } as t -> if i = ind then lift path else if ind < i then splay ind (Left t :: path) left else splay ind (Right t :: path) right | { tree = Leaf } -> raise (Invalid_argument "Linear_set.splay - index out of bounds") | t -> push_down t; splay ind path t let get t ind = (* printf "\n\nGET %d\n" ind; print "get " t; *) splay ind [] t; match t.tree with Node (_,e,_,_,_) -> e | _ -> raise (Invalid_argument "Linear_set.get") let split t ind = (* print "split " t; *) splay ind [] t; match t.tree with Node (i,e,l,r,_) -> l,e,{ tree = Offset(succ i,r) } | _ -> raise (Invalid_argument "Linear_set.split") let lazy_sub_map f t i len = if len=0 then empty else let r,lt = if i=0 then t,length t else begin (* printf "\n\nSUB_MAP %d %d\n" i len; print "sub_map " t; *) splay i [] t; match t.tree with Node (_,_,_,r,n) -> r,n | _ -> raise (Invalid_argument "Linear_set.lazy_sub_map") end in let seg_end = i+len in let c = if seg_end = lt then r else begin (* print "sub_map_ii " r; *) splay seg_end [] r; match r.tree with Node (_,_,c,_,_) -> c | _ -> raise (Invalid_argument "Linear_set.lazy_sub_map") end in let oc = if i=0 then c else { tree = Offset (i,c) } in { tree = Lazy (f,oc) } let rec join t1 t2 = match t1,t2 with { tree = Leaf }, _ -> t2 | _, { tree = Leaf } -> t1 | { tree = Offset _ }, _ | { tree = Lazy _ }, _ -> push_down t1; join t1 t2 | _, { tree = Offset _ } | _, { tree = Lazy _ } -> push_down t2; join t1 t2 | { tree = Node (_,_,_,_,n1) }, _ -> begin (* print "join " t2; *) splay 0 [] t2; match t2 with { tree = Node (0,e,_,r,n2) } -> { tree = Node (n1,e,t1,{ tree = Offset (succ n1,r) },n1+n2) } | _ -> raise (Invalid_argument "Linear_set.join") end let append_list t1 l t2 = match l with [] -> join t1 t2 | [e] -> append t1 e t2 | e::tl -> begin let l1 = length t1 in let ll = List.length tl in match of_list_aux (pred ll) l1 tl with tlt,off,[tle] -> let soff = succ off in { tree = Node (off,tle, { tree = Node (succ l1, e, t2, tlt, off) }, { tree = Offset (soff,t2) }, (soff+(length t2))) } | _ -> raise (Invalid_argument "Linear_set.append_list") end let rec mapi f = function { tree = Leaf } as t -> t | { tree = Node(i,e,l,r,n) } as t -> let l' = mapi f l in let e' = f i e in let r' = mapi f r in if (l'==l) && (e'==e) && (r'==r) then t else { tree = Node (i,e',l',r',n) } | t -> push_down t; mapi f t let rec init_aux f max start = if max = 0 then empty else let m2=max/2 in let lend = start+m2 in let left = init_aux f m2 start in let right = init_aux f (max-m2-1) (succ lend) in { tree = Node (lend,f lend,left,right,max) } let init i f = init_aux f i 0 let rec parts_length len = function [] -> len | part :: parts -> match part with ArrayElement _ -> parts_length (succ len) parts | ArrayArray (a, i, len') -> if i < 0 || len' < 0 || i + len' > length a then raise (Invalid_argument "Linear_set.collect") else parts_length (len + len') parts let rec strip = function ArrayArray (_,_,0)::tl -> strip tl | l -> l let rec collect_aux min start lst = match min, lst with _, ArrayArray (_,_,0)::tl -> collect_aux min start tl | _,[] | 0,_ -> empty, start, lst | 1, (ArrayElement x)::tl -> { tree = Node (start,x,empty,empty,1) },(succ start),(strip tl) | _, ArrayArray (t,0,l)::tl when l>=min -> let t' = if l = (length t) then t else begin (* print "collect_aux_iv " t; *) splay l [] t; match t with { tree = Node (_,_,l,_,_) } -> if start=0 then l else { tree = Offset (start,l) } | _ -> raise (Invalid_argument "Linear_set.collect") end in t',start+(length t'),(strip tl) | _, ArrayArray (t,k,l)::tl when l>=min -> (* print "collect_aux " t; *) splay (pred k) [] t; begin match t with { tree = Node (_,_,_,r,_) } -> let r' = if k+l = (length t) then r else begin (* print "collect_aux_ii " r; *) splay (k+l) [] r; match r with { tree = Node (_,_,l,_,_) } -> if k=start then l else { tree = Offset (start-k,l) } | _ -> raise (Invalid_argument "Linear_set.collect") end in r',start+(length r'),(strip tl) | _ -> raise (Invalid_argument "Linear_set.collect") end | _ -> begin match collect_aux (min/2) start lst with (_left,_lend,[]) as c -> c | left, lend, (ArrayElement h)::t -> let right, rend, rlst = collect_aux (min - min/2 - 1) (succ lend) t in { tree = Node (lend,h,left,right,rend-start) },rend,rlst | left, lend, (ArrayArray (a,i,len))::t -> (* print "collect_aux_iii " a; *) splay i [] a; begin match a with { tree = Node (_,h,_,_,_) } -> let right, rend, rlst = collect_aux (min - min/2 - 1) (succ lend) (ArrayArray (a,succ i,pred len)::t) in { tree = Node (lend,h,left,right,rend-start) },rend,rlst | _ -> raise (Invalid_argument "Linear_set.collect") end end let collect l = match collect_aux (parts_length 0 l) 0 l with t,_,[] -> t | _ -> raise (Invalid_argument "Linear_set.collect") let rec for_all (f : elt -> bool) = function { tree = Leaf } -> true | { tree = Node (_ind, e, t1, t2, _i) } -> f e && for_all f t1 && for_all f t2 | { tree = Lazy (f', tree) } as t -> t.tree <- go_down f' tree; for_all f t | { tree = Offset (_i, t) } -> for_all f t let rec exists (f : elt -> bool) = function { tree = Leaf } -> false | { tree = Node (_ind, e, t1, t2, _i) } -> f e || exists f t1 || exists f t2 | { tree = Lazy (f', tree) } as t -> t.tree <- go_down f' tree; exists f t | { tree = Offset (_i, t) } -> exists f t end omake-0.9.8.5/src/libmojave-external/stdlib/lm_array_linear_set.mli0000664000152300015230000000313510464477010023516 0ustar jyhjyh(* * This module provides a linearly ordered numbered set implementation * with lazy functions based on arrays * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Alexey Nogin *) open Lm_linear_set_sig type 'a linear_set module Make (Type : TypeSig) : LinearSetSig with type elt = Type.t and type t = Type.t linear_set omake-0.9.8.5/src/libmojave-external/stdlib/lm_nocompare.mli0000664000152300015230000000275310456222231022155 0ustar jyhjyh(* * A special "custom" value that prohibits Pervasives.compare, * but allows marshalling. By temporarily adding Lm_nocompare.it as a * _first_ field in a * data structure that is not supposed to be * compared using Pervasives.compare, one can weed out all the * inappropriate usages of Pervasives.compare, (=), (<), etc. * * ------------------------------------------------ * * @begin[license] * Copyright (C) 2005, MetaPRL Group * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) type t val it : t val nocompare : t val nomarshal : t omake-0.9.8.5/src/libmojave-external/stdlib/lm_format.ml0000664000152300015230000003241610556173566021331 0ustar jyhjyh(* * Convert to standard format. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) open Lm_rformat open Lm_rformat_raw open Lm_rformat_text open Lm_make_printf (************************************************************************ * TYPES * ************************************************************************) (* * Multiple formatted output. *) type formatter = { mutable form_buffer : buffer; mutable form_out_string : (string -> int -> int -> unit); mutable form_out_flush : (unit -> unit); mutable form_out_newline : (unit -> unit); mutable form_out_space : (int -> unit); mutable form_max_boxes : int; mutable form_max_indent : int; mutable form_ellipsis : string; mutable form_margin : int; mutable form_divert : (buffer -> unit) option } (************************************************************************ * STANDARD OPERATIONS * ************************************************************************) let default_max_boxes = max_int let default_max_indent = max_int let default_ellipsis = "..." let default_margin = 80 let output_substring = output (* * Flush the buffer. *) let flush_form form = let { form_buffer = buf; form_out_flush = flush; form_out_string = out_string; form_out_newline = out_newline; form_out_space = out_space; form_margin = margin; form_divert = divert } = form in match divert with Some divert -> format_flush buf; divert buf; form.form_buffer <- new_buffer () | None -> let raw_printer = { raw_print_string = out_string; raw_print_newline = out_newline; raw_print_spaces = out_space; raw_print_flush = flush } in let printer = make_text_printer raw_printer in format_flush buf; print_to_printer buf margin printer; flush (); form.form_buffer <- new_buffer () (* * Generic operations. *) let pp_open_hbox form () = format_lzone form.form_buffer let pp_open_vbox form tab = format_hzone form.form_buffer; format_pushm form.form_buffer tab let pp_open_hvbox form tab = format_hzone form.form_buffer; format_pushm form.form_buffer tab let pp_open_hovbox form tab = format_hzone form.form_buffer; format_pushm form.form_buffer tab let pp_open_box = pp_open_hovbox let pp_close_box form () = format_flush_popm form.form_buffer; format_ezone form.form_buffer let pp_print_string form s = format_string form.form_buffer s let pp_print_as form i s = let len = String.length s in if i < len then begin format_string form.form_buffer (String.sub s 0 i); format_izone form.form_buffer; format_string form.form_buffer (String.sub s i (len - i)); format_ezone form.form_buffer end else begin format_string form.form_buffer s; if i > len then format_string form.form_buffer (String.make (i - len) ' ') end let pp_print_int form i = format_int form.form_buffer i let pp_print_float form x = format_string form.form_buffer (string_of_float x) let pp_print_char form c = format_char form.form_buffer c let pp_print_bool form x = format_string form.form_buffer (if x then "true" else "false") let pp_print_break form nspaces offset = format_sbreak form.form_buffer (String.make nspaces ' ') (String.make offset ' ') let pp_print_cut form () = format_sbreak form.form_buffer "" "" let pp_print_space form () = format_hspace form.form_buffer let pp_print_rbuffer form buffer = format_buffer form.form_buffer buffer; flush_form form let pp_force_newline form () = format_newline form.form_buffer let pp_print_flush form () = flush_form form let pp_print_newline form () = format_newline form.form_buffer; flush_form form let pp_print_if_newline _form () = () let pp_open_tbox _form () = () let pp_close_tbox _form () = () let pp_print_tbreak = pp_print_break let pp_set_tab _form () = () let pp_print_tab _form () = () let pp_set_margin form margin = form.form_margin <- margin let pp_get_margin form () = form.form_margin let pp_set_max_indent form indent = form.form_max_indent <- indent let pp_get_max_indent form () = form.form_max_indent let pp_set_max_boxes form max = form.form_max_boxes <- max let pp_get_max_boxes form () = form.form_max_boxes let pp_over_max_boxes form () = format_depth form.form_buffer > form.form_max_boxes let pp_set_ellipsis_text form text = form.form_ellipsis <- text let pp_get_ellipsis_text form () = form.form_ellipsis let pp_set_formatter_out_channel form outx = form.form_out_string <- output_substring outx; form.form_out_flush <- (fun () -> flush outx); form.form_out_newline <- (fun () -> output_char outx '\n'); form.form_out_space <- (fun i -> for j = 0 to pred i do output_char outx ' ' done) let pp_set_formatter_output_functions form outx flush = form.form_out_string <- outx; form.form_out_flush <- flush let pp_get_formatter_output_functions form () = form.form_out_string, form.form_out_flush let pp_set_all_formatter_output_functions form outx flush outnewline outspace = form.form_out_string <- outx; form.form_out_flush <- flush; form.form_out_newline <- outnewline; form.form_out_space <- outspace let pp_get_all_formatter_output_functions form () = form.form_out_string, form.form_out_flush, form.form_out_newline, form.form_out_space (************************************************************************ * STANDARD BUFFERS * ************************************************************************) let formatter_of_out_channel outx = { form_buffer = new_buffer (); form_out_string = output_substring outx; form_out_flush = (fun () -> flush outx); form_out_newline = (fun () -> output_char outx '\n'); form_out_space = (fun i -> for j = 1 to i do output_char outx ' ' done); form_max_boxes = default_max_boxes; form_max_indent = default_max_indent; form_ellipsis = default_ellipsis; form_margin = default_margin; form_divert = None } let std_formatter = formatter_of_out_channel stdout let err_formatter = formatter_of_out_channel stderr let formatter_of_buffer buf = { form_buffer = new_buffer (); form_out_string = Buffer.add_substring buf; form_out_flush = (fun () -> ()); form_out_newline = (fun () -> Buffer.add_char buf '\n'); form_out_space = (fun i -> for j = 1 to i do Buffer.add_char buf ' ' done); form_max_boxes = default_max_boxes; form_max_indent = default_max_indent; form_ellipsis = default_ellipsis; form_margin = default_margin; form_divert = None } let stdbuf = Buffer.create 19 let str_formatter = formatter_of_buffer stdbuf let flush_str_formatter () = flush_form str_formatter; let s = Buffer.contents stdbuf in Buffer.clear stdbuf; s let make_formatter outx flush = { form_buffer = new_buffer (); form_out_string = outx; form_out_flush = flush; form_out_newline = (fun () -> outx "\n" 0 1); form_out_space = (fun i -> for j = 1 to i do outx " " 0 1 done); form_max_boxes = default_max_boxes; form_max_indent = default_max_indent; form_ellipsis = default_ellipsis; form_margin = default_margin; form_divert = None } (* * Boxes. *) let open_box = pp_open_box std_formatter let open_vbox = pp_open_vbox std_formatter let open_hbox = pp_open_hbox std_formatter let open_hvbox = pp_open_hvbox std_formatter let open_hovbox = pp_open_hovbox std_formatter let close_box = pp_close_box std_formatter (* * Formatting functions. *) let print_string = pp_print_string std_formatter let print_as = pp_print_as std_formatter let print_int = pp_print_int std_formatter let print_float = pp_print_float std_formatter let print_char = pp_print_char std_formatter let print_bool = pp_print_bool std_formatter (* * Break hints. *) let print_space = pp_print_space std_formatter let print_cut = pp_print_cut std_formatter let print_break = pp_print_break std_formatter let print_flush = pp_print_flush std_formatter let print_newline = pp_print_newline std_formatter let force_newline = pp_force_newline std_formatter let print_if_newline = pp_print_if_newline std_formatter (* * Margin. *) let set_margin = pp_set_margin std_formatter let get_margin = pp_get_margin std_formatter (* * Indentation limit. *) let set_max_indent = pp_set_max_indent std_formatter let get_max_indent = pp_get_max_indent std_formatter (* * Formatting depth. *) let set_max_boxes = pp_set_max_boxes std_formatter let get_max_boxes = pp_get_max_boxes std_formatter let over_max_boxes = pp_over_max_boxes std_formatter (* * Tabulations. *) let open_tbox = pp_open_tbox std_formatter let close_tbox = pp_close_tbox std_formatter let print_tbreak = pp_print_tbreak std_formatter let set_tab = pp_set_tab std_formatter let print_tab = pp_print_tab std_formatter (* * Ellipsis. *) let set_ellipsis_text = pp_set_ellipsis_text std_formatter let get_ellipsis_text = pp_get_ellipsis_text std_formatter (* * Redirecting formatter output. *) let set_formatter_out_channel = pp_set_formatter_out_channel std_formatter let set_formatter_output_functions = pp_set_formatter_output_functions std_formatter let get_formatter_output_functions = pp_get_formatter_output_functions std_formatter let set_all_formatter_output_functions = pp_set_all_formatter_output_functions std_formatter let get_all_formatter_output_functions = pp_get_all_formatter_output_functions std_formatter let divert formatter divert = formatter.form_divert <- divert (************************************************************************ * PRINTF ************************************************************************) (* * Format args. *) module Args = struct type t = formatter type result = unit let print_char = pp_print_char let print_string = pp_print_string let open_box = pp_open_box let open_hbox fmt = pp_open_hbox fmt () let open_vbox = pp_open_vbox let open_hvbox = pp_open_hvbox let open_hovbox = pp_open_hovbox let close_box fmt = pp_close_box fmt () let print_cut fmt = pp_print_cut fmt () let print_space fmt = pp_print_space fmt () let force_newline fmt = pp_force_newline fmt () let print_break = pp_print_break let print_flush fmt = pp_print_flush fmt () let print_newline fmt = pp_print_newline fmt () let exit _ = () end module StringArgs = struct type t = unit type result = string let print_char () = pp_print_char str_formatter let print_string () = pp_print_string str_formatter let open_box () = pp_open_box str_formatter let open_hbox () = pp_open_hbox str_formatter () let open_vbox () = pp_open_vbox str_formatter let open_hvbox () = pp_open_hvbox str_formatter let open_hovbox () = pp_open_hovbox str_formatter let close_box () = pp_close_box str_formatter () let print_cut () = pp_print_cut str_formatter () let print_space () = pp_print_space str_formatter () let force_newline () = pp_force_newline str_formatter () let print_break () = pp_print_break str_formatter let print_flush () = pp_print_flush str_formatter () let print_newline () = pp_print_newline str_formatter () let exit = flush_str_formatter end module FPrintf = MakePrintf (Args) module SPrintf = MakePrintf (StringArgs) let fprintf = FPrintf.fprintf let sprintf s = SPrintf.fprintf () s let printf s = fprintf std_formatter s let eprintf s = fprintf err_formatter s let bprintf buf s = fprintf (formatter_of_buffer buf) s (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_array.mli0000664000152300015230000000424310456222231021304 0ustar jyhjyh(* * Array operations. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Array operations. *) val length : 'a array -> int val get : 'a array -> int -> 'a val set : 'a array -> int -> 'a -> unit val make : int -> 'a -> 'a array val create : int -> 'a -> 'a array val init : int -> (int -> 'a) -> 'a array val make_matrix : int -> int -> 'a -> 'a array array val create_matrix : int -> int -> 'a -> 'a array array val append : 'a array -> 'a array -> 'a array val concat : 'a array list -> 'a array val sub : 'a array -> int -> int -> 'a array val copy : 'a array -> 'a array val fill : 'a array -> int -> int -> 'a -> unit val blit : 'a array -> int -> 'a array -> int -> int -> unit val to_list : 'a array -> 'a list val of_list : 'a list -> 'a array val iter : ('a -> unit) -> 'a array -> unit val map : ('a -> 'b) -> 'a array -> 'b array val iteri : (int -> 'a -> unit) -> 'a array -> unit val mapi : (int -> 'a -> 'b) -> 'a array -> 'b array val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b array -> 'a val fold_right : ('b -> 'a -> 'a) -> 'b array -> 'a -> 'a (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_int_util.ml0000664000152300015230000000324710464477010021655 0ustar jyhjyh(* * Some utility functions on integers. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * Slow algorithm for log base 2. * Rounds down. *) let log2 = let rec search j i = if 1 lsl j > i then pred j else search (succ j) i in search 0 (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_heap.mli0000775000152300015230000000243110654712563021117 0ustar jyhjyh(* * For heap debugging. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) val heap_check : string -> unit (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_printf_rbuffer.mli0000664000152300015230000000264010456222231023202 0ustar jyhjyh(* * Printf rbuffers. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf val output_rbuffer : out_channel -> Lm_rformat.buffer -> unit val print_rbuffer : Lm_rformat.buffer -> unit val prerr_rbuffer : Lm_rformat.buffer -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rprintf.ml0000664000152300015230000000560410456222231021503 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) include Lm_format (* * For now, just use normal output channels. *) type out_channel = formatter (* * Standard channels. *) let stdout = std_formatter let stderr = err_formatter let stdstr = str_formatter (* * Get the string from the string formatter. *) let flush_stdstr = flush_str_formatter (* * Open new output channels. *) let open_out name = formatter_of_out_channel (open_out name) let open_out_bin name = formatter_of_out_channel (open_out_bin name) (* * Output. *) let output_char = pp_print_char let output_int = pp_print_int let output_string = pp_print_string let output_rbuffer = pp_print_rbuffer (* * Normal printing. *) let print_char = pp_print_char std_formatter let print_int = pp_print_int std_formatter let print_string = pp_print_string std_formatter let print_rbuffer = pp_print_rbuffer std_formatter let prerr_char = pp_print_char err_formatter let prerr_int = pp_print_int err_formatter let prerr_string = pp_print_string err_formatter let prerr_rbuffer = pp_print_rbuffer err_formatter (* * Print a newline and flush. *) let flush buf = pp_print_flush buf () let eflush buf = pp_print_newline buf () (* * Printing functions. *) let printf = printf let eprintf = eprintf let sprintf = sprintf let fprintf = fprintf let bprintf = bprintf (* * List separated by semicolons. *) let rec print_any_list print out l = match l with [h] -> print out h | h::t -> print out h; output_string out "; "; print_any_list print out t | [] -> () let print_string_list = print_any_list pp_print_string let print_int_list = print_any_list pp_print_int (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_array_util.mli0000664000152300015230000000541710456222231022345 0ustar jyhjyh(* * Utilities on arrays. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* Membership in an array *) val mem : 'a -> 'a array -> bool val index : 'a -> 'a array -> int val exists : ('a -> bool) -> 'a array -> bool val find_index : ('a -> bool) -> 'a array -> int (* Raises Failure *) val iter2 : ('a -> 'b -> unit) -> 'a array -> 'b array -> unit (* Test boolean values *) val all_true : bool array -> bool val exists_true : bool array -> bool val for_all : ('a -> bool) -> 'a array -> bool val exists : ('a -> bool) -> 'a array -> bool (* Returns false if lengths mismatch *) val for_all2 : ('a -> 'b -> bool) -> 'a array -> 'b array -> bool (* * replace A i j B creates a copy of array A * where j elements with indices from i to i + j - 1 are * replaced with B's elements (if B has length different from j, * new array will have length different from A). * Raises invalid_argument if numbers out of range. *) val replace : 'a array -> int -> int -> 'a list -> 'a array val append_list : 'a array -> 'a list -> 'a array val append_list_array : 'a array -> 'a list -> 'a array -> 'a array (* * Map over a sub-array. *) val sub_map : ('a -> 'b) -> 'a array -> int -> int -> 'b array (* * This function builds arrays out of sub-arrays. *) type ('a, 'b) array_part = ArrayElement of 'a | ArrayArray of 'b * int * int val collect : ('a, 'a array) array_part list -> 'a array (* * Sorts an array, than eliminates the duplicate elements * and moves the remaining elements into an initial segment * of the input array. Returns the # of distinct elements. *) val distinct: ('a -> 'a -> int) -> 'a array -> int (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat_raw.ml0000664000152300015230000000427310456222231022343 0ustar jyhjyh(* * Raw printer interface just includes basic output * functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Raw printer just has two methods. *) type raw_printer = { raw_print_string : string -> int -> int -> unit; raw_print_flush : unit -> unit; raw_print_newline : unit -> unit; raw_print_spaces : int -> unit } (* * Basic raw printers. *) let raw_channel_printer out = { raw_print_string = output out; raw_print_flush = (fun () -> flush out); raw_print_newline = (fun () -> output_char out '\n'); raw_print_spaces = (fun i -> for i = 0 to pred i do output_char out ' ' done) } let raw_buffer_printer buf = { raw_print_string = Buffer.add_substring buf; raw_print_flush = (fun () -> ()); raw_print_newline = (fun () -> Buffer.add_char buf '\n'); raw_print_spaces = (fun i -> for i = 0 to pred i do Buffer.add_char buf ' ' done) } (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_cycle_dag.mli0000664000152300015230000000462310464477010022110 0ustar jyhjyh(* * This is a DAG used for cycle detection. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * Exception for reporting cycles. *) exception Cycle (* * Nodes are labelled with 'node, * and edges have label 'edge. * * 'node should be an equality type. *) type ('node, 'edge) t (* * Create an empty DAG. *) val create : unit -> ('node, 'edge) t (* * Make it from a previous subst. *) val make : ('node list * ('edge * 'node list) option) list -> ('node, 'edge) t (* * Find an edge. *) val find : ('node, 'edge) t -> 'node -> 'edge (* * Equate two nodes. * This raises Cycle if the two nodes are already * related by an edge. *) val equate : ('node, 'edge) t -> 'node -> 'node -> unit (* * Insert an edge-list from the source * to a list of sinks, with the given label. * This may raise the Cycle exception. *) val insert : ('node, 'edge) t -> 'node -> 'edge -> 'node list -> unit (* * Sort the edges, and return them in a list. *) val sort : ('node, 'edge) t -> ('node list * 'edge option) list (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_hashtbl_util.ml0000664000152300015230000000357010456222231022501 0ustar jyhjyh(* * Extra functions on hashtables. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Convert to an association list. * Order is random, but the is only one entry * for each key. *) let to_list tbl = let l = ref [] in Hashtbl.iter (fun key value -> if not (List.mem_assoc key !l) then l := (key, value) :: !l) tbl; !l (* * Add a list to a hashtbl. *) let add_list tbl l = List.iter (fun (key, value) -> Hashtbl.add tbl key value) l (* * Add all the entries from the second table. * The original entries are removed. *) let add_hashtbl dst src = Hashtbl.iter (fun key value -> (try Hashtbl.remove dst key with Not_found -> ()); Hashtbl.add dst key value) src (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_test_sig.ml0000664000152300015230000000254310456222231021637 0ustar jyhjyh(* * Sigs for testing. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) module type XSig = sig type t1 type t2 val x : t1 end module type YSig = sig type t1 val x : t1 end module type ZSig = functor (X : XSig) -> YSig (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_list_util.mli0000664000152300015230000001745010621751616022212 0ustar jyhjyh(* * Extra utilities for lists. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Array-style operations. *) val sub : 'a list -> int -> int -> 'a list (* * Iterate over two lists, but stop at the * end of the shorter one. *) val short_iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit (* * Iteration over three lists. *) val iter3 : ('a -> 'b -> 'c -> unit) -> 'a list -> 'b list -> 'c list -> unit (* * Generalize fold_left over three lists. *) val fold_left3 : ('a -> 'b -> 'c -> 'd -> 'a) -> 'a -> 'b list -> 'c list -> 'd list -> 'a (* * Reverse iteration *) val rev_iter : ('a -> 'b) -> 'a list -> unit val rev_iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit (* * Mapping functions. *) val flat_map : ('a -> 'b list) -> 'a list -> 'b list val fail_map : ('a -> 'b) -> 'a list -> 'b list val some_map : ('a -> 'b option) -> 'a list -> 'b list val some_map_safe : ('a -> 'a option) -> 'a list -> 'a list val fold_left : ('a -> 'b -> 'a * 'c) -> 'a -> 'b list -> 'a * 'c list (* * Find the element that satisfies a predicate *) val find : ('a -> bool) -> 'a list -> 'a (* Now find its index *) val find_item : ('a -> bool) -> 'a list -> int (* By equality *) val find_index : 'a -> 'a list -> int val find_rindex : 'a -> 'a list -> int (* By pointer-equality *) val find_indexq : 'a -> 'a list -> int (* Use a provided equality *) val find_index_eq : ('a -> 'a -> bool) -> 'a -> 'a list -> int (* * Split the first elements from the last. * raises Failure if the list is empty. *) val split_list : int -> 'a list -> 'a list * 'a list val split_last : 'a list -> 'a list * 'a val last : 'a list -> 'a (* * Split the list into two parts. * raises Invalid_argument if the list is empty. *) val split : int -> 'a list -> 'a list * 'a list (* * Split up into smaller lists of size no more than n. *) val splitup : int -> 'a list -> 'a list list (* * Return the first n elements of the list. *) val firstn : int -> 'a list -> 'a list (* * Remove the first n elements of the list. *) val nth_tl : int -> 'a list -> 'a list (* * Replace the nth element of the list. *) val replace_nth : int -> 'a -> 'a list -> 'a list (* * Subtract two lists as if they were sets. *) val subtract_list : 'a list -> 'a list -> 'a list val map2to1 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list val fold_filter : ('a -> 'b -> 'a * bool) -> 'a -> 'b list -> 'a * 'b list (* * fold_map *) val fold_map : ('a -> 'b -> 'a * 'c) -> 'a -> 'b list -> 'a * 'c list val fold_map2to1 : ('a -> 'b -> 'c -> 'a * 'd) -> 'a -> 'b list -> 'c list -> 'a * 'd list val fold_map1to2 : ('a -> 'b -> 'a * 'c * 'd) -> 'a -> 'b list -> 'a * 'c list * 'd list (* * Do map and try preserving sharing *) val smap : ('a -> 'a) -> 'a list -> 'a list (* * check lengths equal *) val length_eq : 'a list -> 'b list -> bool (* * Functional replacement. *) val replacef_nth : int -> ('a -> 'a) -> 'a list -> 'a list val replacef_arg_nth : int -> ('a -> 'a * 'b) -> 'a list -> 'a list * 'b val replace_nth : int -> 'a -> 'a list -> 'a list val replaceq : 'a -> 'a -> 'a list -> 'a list val replace_first : ('a -> bool) -> 'a -> 'a list -> 'a list val replace_all : ('a -> bool) -> 'a -> 'a list -> 'a list (* * Removing elements. *) val remove : 'a -> 'a list -> 'a list (* tryremove does not raise any exception when the element is not in the list *) val tryremove : 'a -> 'a list -> 'a list val removeq : 'a -> 'a list -> 'a list val remove_elements : bool list -> 'a list -> 'a list val remove_suffix : 'a list -> 'a list -> 'a list val insert_nth : int -> 'a -> 'a list -> 'a list val remove_nth : int -> 'a list -> 'a list (* Filter items out of a list *) val filter : ('a -> bool) -> 'a list -> 'a list (* * Set operations. *) val addq : 'a -> 'a list -> 'a list val intersect : 'a list -> 'a list -> 'a list val intersectq : 'a list -> 'a list -> 'a list val intersects : 'a list -> 'a list -> bool val subtract : 'a list -> 'a list -> 'a list val subtractq : 'a list -> 'a list -> 'a list val subtract_multiset : 'a list -> 'a list -> 'a list val union : 'a list -> 'a list -> 'a list val unionq : 'a list -> 'a list -> 'a list val subset : 'a list -> 'a list -> bool (* Lexicographic comparison of two lists *) val compare_lists : ('a -> 'b -> int) -> 'a list -> 'b list -> int (* Elements must by physically equal *) val compare_eq : 'a list -> 'a list -> bool (* Elements must be equal, but lists may be different lengths *) val compare_cmp : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool (* * These functions are just like the List functions * but they raise Failure, not Invalid_argument. *) val nth : 'a list -> int -> 'a val map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list val fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit (* Returns false if the list lengths mismatch *) val for_all2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool (* Ignores the tail of the longer list *) val exists2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool (* * Association lists. *) (* zip_list a b c zips b and c and puts the result in front of a in reverce order *) val zip_list : ('a * 'b) list -> 'a list -> 'b list -> ('a * 'b) list val zip : 'a list -> 'b list -> ('a * 'b) list val fst_split : ('a * 'b) list -> 'a list val assoc_index : ('a * 'b) list -> 'a -> int val assoc_replace : ('a * 'b) list -> 'a -> 'b -> ('a * 'b) list val add_assoc : 'a * 'b -> ('a * 'b) list -> ('a * 'b) list val assoc_in_dom : ('b -> 'a -> bool) -> 'b -> ('a * 'c) list -> bool val assoc_in_range : ('b -> 'c -> bool) -> 'b -> ('a * 'c) list -> bool (* * assoc_append_replace_snd l1 b l2 replaces the second element of all pairs in l2 with b * and appends l1 at the end of the result *) val assoc_append_replace_snd : ('a * 'b) list -> 'b -> ('a * 'c) list -> ('a * 'b) list (* * Apply a function to the value in * an association list. *) val apply_assoc : 'a -> ('a * 'b) list -> ('b -> 'b) -> ('a * 'b) list (* * Association list with an equality. *) val assoc_eq : ('a -> 'a -> bool) -> 'a -> ('a * 'b) list -> 'b (* * if either of the assoc list sides has duplicate entries, only the first entry is used * and the duplicate entry forces all second component matches to return false * * i.e. check_assoc v1 v2 [1,2; 3,2; 3,4] = (v1<>3) && (v2<>4) && check_assoc v1 v2 [1,2] * * try_check_assoc is the same as check_assoc, but raises an exception if an entry is not found *) val check_assoc : 'a -> 'a -> ('a * 'a) list -> bool val try_check_assoc : 'a -> 'b -> ('a * 'b) list -> bool (* if left side has duplicate entries, only the first entry is used *) val try_assoc: 'a -> ('a * 'a) list -> 'a (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_index.mli0000664000152300015230000001150210456222231021271 0ustar jyhjyh(* * Index module based on tables. * An index is essentially a multi-level table. * Each entry has an associated data item and subtable. * * ---------------------------------------------------------------- * * Copyright (C) 2002 Michael Maire, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Michael Maire * mmaire@caltech.edu * * ---------------------------------------------------------------- * Revision History * * 2002 Apr 20 Michael Maire Initial Version * 2002 Apr 25 Michael Maire Renamed iter, maps, folds to *_all * added single level iters, maps, folds * 2002 Apr 26 Michael Maire Added functions for explicitly adding * subindices * 2002 May 1 Michael Maire Changed interface for managing * subindices *) (* * Elements. * This type specifies the type of the keys used in the index. *) module type OrderedType = sig type t val compare : t -> t -> int end (* * These are the functions provided by the index. *) module type LmIndex = sig (* index maps key lists to elements of type 'a *) type key type 'a t (* empty index and empty test *) val empty : 'a t val is_empty : 'a t -> bool (* tests/lookups - single level*) val mem : 'a t -> key -> bool val find : 'a t -> key -> 'a t * 'a val find_index : 'a t -> key -> 'a t val find_data : 'a t -> key -> 'a (* tests/lookups - multi level*) val mem_list : 'a t -> key list -> bool val find_list : 'a t -> key list -> 'a t * 'a val find_list_index : 'a t -> key list -> 'a t val find_list_data : 'a t -> key list -> 'a (* addition and removal - single level*) val add : 'a t -> key -> 'a -> 'a t val add_i : 'a t -> key -> 'a t * 'a -> 'a t val remove : 'a t -> key -> 'a t (* addition of a chain of nested entries *) val add_list : 'a t -> key list -> 'a list -> 'a t val add_list_i : 'a t -> key list -> ('a t * 'a) list -> 'a t (* addition/removal of single entries *) val add_entry : 'a t -> key list -> 'a -> 'a t val add_entry_i : 'a t -> key list -> 'a t * 'a -> 'a t val remove_entry : 'a t -> key list -> 'a t (* filter addition/removal - single level *) val filter_add : 'a t -> key -> ('a option -> 'a) -> 'a t val filter_add_i : 'a t -> key -> (('a t * 'a) option -> ('a t * 'a)) -> 'a t val filter_remove : 'a t -> key -> ('a -> 'a option) -> 'a t val filter_remove_i : 'a t -> key -> (('a t * 'a) -> ('a t * 'a) option) -> 'a t (* filter addition of a chain of nested entries *) val filter_add_list : 'a t -> key list -> ('a option -> 'a) list -> 'a t val filter_add_list_i : 'a t -> key list -> (('a t * 'a) option -> ('a t * 'a)) list -> 'a t (* filter addition/removal of single entries *) val filter_add_entry : 'a t -> key list -> ('a option -> 'a) -> 'a t val filter_add_entry_i : 'a t -> key list -> (('a t * 'a) option -> ('a t * 'a)) -> 'a t val filter_remove_entry : 'a t -> key list -> ('a -> 'a option) -> 'a t val filter_remove_entry_i : 'a t -> key list -> (('a t * 'a) -> ('a t * 'a) option) -> 'a t (* iterators, maps, and folds - single level *) val iter : (key -> ('a t * 'a) -> unit) -> 'a t -> unit val map : (('a t * 'a) -> ('b t * 'b)) -> 'a t -> 'b t val mapi : (key -> ('a t * 'a) -> ('b t * 'b)) -> 'a t -> 'b t val fold : ('a -> key -> ('b t * 'b) -> 'a) -> 'a -> 'b t -> 'a val fold_map : ('a -> key -> ('b t * 'b) -> 'a * ('c t * 'c)) -> 'a -> 'b t -> 'a * 'c t (* iterators, maps, and folds - entire index *) val iter_all : (key list -> 'a -> unit) -> 'a t -> unit val map_all : ('a -> 'b) -> 'a t -> 'b t val mapi_all : (key list -> 'a -> 'b) -> 'a t -> 'b t val fold_all : ('a -> key list -> 'b -> 'a) -> 'a -> 'b t -> 'a val fold_map_all : ('a -> key list -> 'b -> 'a * 'c) -> 'a -> 'b t -> 'a * 'c t end (* * Make the index. *) module LmMake (Ord : OrderedType) : (LmIndex with type key = Ord.t) omake-0.9.8.5/src/libmojave-external/stdlib/lm_io.mli0000664000152300015230000000413210322060244020566 0ustar jyhjyh(* * $Id: lm_io.mli 7878 2005-10-09 00:13:24Z jyh $ * Operations to do I/O * * Moved here from Pervasives *) type in_channel type out_channel val stdin : in_channel val stdout : out_channel val stderr : out_channel val print_char : char -> unit val print_string : string -> unit val print_int : int -> unit val print_float : float -> unit val print_endline : string -> unit val print_newline : unit -> unit val prerr_char : char -> unit val prerr_string : string -> unit val prerr_int : int -> unit val prerr_float : float -> unit val prerr_endline : string -> unit val prerr_newline : unit -> unit val read_line : unit -> string val read_int : unit -> int val read_float : unit -> float type open_flag = Open_rdonly | Open_wronly | Open_append | Open_creat | Open_trunc | Open_excl | Open_binary | Open_text | Open_nonblock val open_out : string -> out_channel val open_out_bin : string -> out_channel val open_out_gen : open_flag list -> int -> string -> out_channel val flush : out_channel -> unit (* * General output. *) val output_char : out_channel -> char -> unit val output_string : out_channel -> string -> unit val output : out_channel -> string -> int -> int -> unit val output_byte : out_channel -> int -> unit val output_binary_int : out_channel -> int -> unit val seek_out : out_channel -> int -> unit val pos_out : out_channel -> int val out_channel_length : out_channel -> int val close_out : out_channel -> unit val set_binary_mode_out : out_channel -> bool -> unit (* * General input. *) val open_in : string -> in_channel val open_in_bin : string -> in_channel val open_in_gen : open_flag list -> int -> string -> in_channel val input_char : in_channel -> char val input_line : in_channel -> string val input : in_channel -> string -> int -> int -> int val really_input : in_channel -> string -> int -> int -> unit val input_byte : in_channel -> int val input_binary_int : in_channel -> int val seek_in : in_channel -> int -> unit val pos_in : in_channel -> int val in_channel_length : in_channel -> int val close_in : in_channel -> unit val set_binary_mode_in : in_channel -> bool -> unit omake-0.9.8.5/src/libmojave-external/stdlib/lm_map_sig.ml0000664000152300015230000001537010616670056021451 0ustar jyhjyh(* * Types of the Set and Table modules. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_printf (************************************************************************ * Maps. *) module type OrderedType = sig type t val compare : t -> t -> int end module type LmMapBase = sig type key type 'a t val empty : 'a t val is_empty : 'a t -> bool val cardinal : 'a t -> int val add : 'a t -> key -> 'a -> 'a t val find : 'a t -> key -> 'a val remove : 'a t -> key -> 'a t val mem : 'a t -> key -> bool val find_key : 'a t -> key -> key option val iter : (key -> 'a -> unit) -> 'a t -> unit val map : ('a -> 'b) -> 'a t -> 'b t val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t val fold : ('a -> key -> 'b -> 'a) -> 'a -> 'b t -> 'a val fold_map : ('a -> key -> 'b -> 'a * 'c) -> 'a -> 'b t -> 'a * 'c t val forall2 : ('a -> 'b -> bool) -> 'a t -> 'b t -> bool val forall : (key -> 'a -> bool) -> 'a t -> bool val exists : (key -> 'a -> bool) -> 'a t -> bool val find_iter : (key -> 'a -> 'b option) -> 'a t -> 'b option val isect_mem : 'a t -> (key -> bool) -> 'a t val choose : 'a t -> key * 'a val filter_add : 'a t -> key -> ('a option -> 'a) -> 'a t val filter_remove : 'a t -> key -> ('a -> 'a option) -> 'a t val replace : 'a t -> key -> ('a -> 'a) -> 'a t val keys : 'a t -> key list val data : 'a t -> 'a list val add_list : 'a t -> (key * 'a) list -> 'a t val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool end module type LmMap = sig include LmMapBase val union : (key -> 'a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t end (* * This is the backwards-compatible version. *) module type S = sig type key type 'a t val empty : 'a t val add : key -> 'a -> 'a t -> 'a t val find : key -> 'a t -> 'a val remove : key -> 'a t -> 'a t val mem : key -> 'a t -> bool val iter : (key -> 'a -> unit) -> 'a t -> unit val map : ('a -> 'b) -> 'a t -> 'b t val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b end module type LmMapList = sig include LmMapBase val filter : 'a t -> key -> ('a list -> 'a list) -> 'a t val find_all : 'a t -> key -> 'a list val find_all_partial : 'a t -> key -> 'a list val iter_all : (key -> 'a list -> unit) -> 'a t -> unit val mapi_all : (key -> 'a list -> 'b list) -> 'a t -> 'b t val fold_all : ('a -> key -> 'b list -> 'a) -> 'a -> 'b t -> 'a val data_all : 'a t -> 'a list list val union : (key -> 'a list -> 'a list -> 'a list) -> 'a t -> 'a t -> 'a t val choose_all : 'a t -> key * 'a list end (************************************************************************ * Tables *) (* * The record of methods. *) type ('elt, 'data, 'table) table_methods = { empty : 'table; make : 'elt -> 'data list -> 'table; is_empty : 'table -> bool; mem : 'table -> 'elt -> bool; add : 'table -> 'elt -> 'data -> 'table; replace : 'table -> 'elt -> 'data list -> 'table; find : 'table -> 'elt -> 'data; find_all : 'table -> 'elt -> 'data list; remove : 'table -> 'elt -> 'table; union : 'table -> 'table -> 'table; elements : 'table -> ('elt * 'data list) list; iter : ('elt -> 'data -> unit) -> 'table -> unit; fold_map : ('elt -> 'data -> 'table -> 'table) -> 'table -> 'table -> 'table; map : ('elt -> 'data -> 'data) -> 'table -> 'table; cardinal : 'table -> int; mem_filt : 'table -> 'elt list -> 'elt list; not_mem_filt : 'table -> 'elt list -> 'elt list; intersectp : 'table -> 'table -> bool; of_list : ('elt * 'data list) list -> 'table; list_of : 'table -> ('elt * 'data list) list; deletemax : 'table -> ('elt * 'data list * 'table); (* Debugging *) print : out_channel -> 'table -> unit } (* * Creation functions. *) type ('elt, 'data, 'table) table_create_type = (out_channel -> 'elt -> 'data list -> unit) -> (* printer *) ('elt -> 'elt -> int) -> (* comparison function *) ('data list -> 'data list -> 'data list) -> (* append during union *) ('elt, 'data, 'table) table_methods (* * Module containing a creation function. *) module type TableCreateSig = sig type ('elt, 'data) t val create : ('elt, 'data, ('elt, 'data) t) table_create_type end (* * Ordering module. *) module type TableBaseSig = sig type elt type data val print : out_channel -> elt -> data list -> unit val compare : elt -> elt -> int val append : data list -> data list -> data list end (* * These are the functions provided by the table. *) module type TableSig = sig type elt type data type t val empty : t val is_empty : t -> bool val length : t -> int val add : t -> elt -> data -> t val replace : t -> elt -> data list -> t val union : t -> t -> t val mem : t -> elt -> bool val find : t -> elt -> data val find_all : t -> elt -> data list (* last added first *) val remove : t -> elt -> t val iter : (elt -> data -> unit) -> t -> unit val fold_map : (elt -> data -> t -> t) -> t -> t -> t val map : (elt -> data -> data) -> t -> t val list_of : t -> (elt * data list) list val deletemax : t -> (elt * data list * t) val print : out_channel -> t -> unit end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat_text.ml0000664000152300015230000000676310556173566022565 0ustar jyhjyh(* * Normal text-based printing. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_rformat_raw open Lm_rformat (* * Some empty print functions. *) let print_arg1_invis _ = () let print_arg2_invis _ _ = () (* * Channel printer. *) let make_text_printer raw = let { raw_print_string = output_string; raw_print_newline = output_newline; raw_print_spaces = output_spaces } = raw in let print_string s = output_string s 0 (String.length s) in let print_tab (i, _) _ = output_newline (); output_spaces i in { print_string = print_string; print_invis = print_string; print_atomic = print_string; print_tab = print_tab; print_begin_tag = print_arg1_invis; print_end_tag = print_arg1_invis } (* * Text printing. *) let print_text_raw rmargin buf raw = let info = make_text_printer raw in print_to_printer buf rmargin info; raw.raw_print_flush () let print_text_channel rmargin buf out = print_text_raw rmargin buf (raw_channel_printer out) let print_text_buffer rmargin buf out = print_text_raw rmargin buf (raw_buffer_printer out) let print_text_string rmargin buf = let out = Buffer.create 100 in print_text_buffer rmargin buf out; Buffer.contents out (************************************************************************ * Special case: print the first line to a string. *) let line_format length fmt_fun = if length < 3 then raise (Invalid_argument "Lm_rformat.line_format"); let buf = new_buffer () in let s, overflow = format_bound buf length; format_lzone buf; let over = try fmt_fun buf; false with RFormatOverflow -> true in format_ezone buf; print_text_string length buf, over in let len = String.length s in let s = if len > length then String.sub s 0 length else if overflow && (len <= (length - 3)) then s ^ "..." else if overflow && (len < length) then s ^ (String.make (length - len) '.') else s in if (overflow && len > (length - 3)) || len > length then begin s.[length - 3] <- '.'; s.[length - 2] <- '.'; s.[length - 1] <- '.' end; s (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_int_set.mli0000664000152300015230000000267310456222231021640 0ustar jyhjyh(* * Sets of strings. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_set_sig open Lm_map_sig (* * String environments. *) module IntSet : LmSet with type elt = int module IntTable : LmMap with type key = int module IntMTable : LmMapList with type key = int (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_heap.ml0000775000152300015230000000312110654712563020743 0ustar jyhjyh(* * This is mainly for debugging. It will rarely used, if ever, * but it may be some help in tracking down GC problems. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf external lm_heap_check : string -> unit = "lm_heap_check" let heap_check debug = eprintf "%s: start@." debug; lm_heap_check debug; eprintf "%s: heap checked@." debug (* * Normally disabled. *) let heap_check _ = () (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_printf_rbuffer.ml0000664000152300015230000000302410456222231023026 0ustar jyhjyh(* * Rformat printing utilities. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf (* * Format during printing. *) let output_rbuffer buf rbuffer = let s = Lm_rformat_text.print_text_string Lm_rformat.default_width rbuffer in output_string buf s let print_rbuffer = output_rbuffer stdout let prerr_rbuffer = output_rbuffer stderr (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_splay_set.mli0000664000152300015230000000311710456222231022170 0ustar jyhjyh(* * More functional implementation of splay sets. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 Mojave Group, Alexey Nogin, Cornell University * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Authors: Jason Hickey, Alexey Nogin *) open Lm_set_sig module Make (Ord : Set.OrderedType) : MinimalSetSig with type elt = Ord.t (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_printf.mli0000664000152300015230000001760710653722351021507 0ustar jyhjyh(* * Override the usual out_channels to use the Lm_buffer module. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} *) (* * Type t of buffers. *) type out_channel (* * Normal buffers. *) val stdout : out_channel val stderr : out_channel val stdstr : out_channel (* * Get the string from the stdstr channel. *) val flush_stdstr : unit -> string (* * Open new channels. *) val open_out : string -> out_channel val open_out_bin : string -> out_channel (* * Simple printing. *) val output_char : out_channel -> char -> unit val output_string : out_channel -> string -> unit (* * These functions are bad style for functional programs. *) val prerr_char : char -> unit val prerr_int : int -> unit val prerr_string : string -> unit (* * Flush the output. *) val flush : out_channel -> unit val eflush : out_channel -> unit (* * Printing. *) val eprintf : ('a, out_channel, unit) format -> 'a val printf : ('a, out_channel, unit) format -> 'a val sprintf : ('a, unit, string) format -> 'a val fprintf : out_channel -> ('a, out_channel, unit) format -> 'a val bprintf : Buffer.t -> ('a, out_channel, unit) format -> 'a (* * List printing helpers. *) val print_any_list : (out_channel -> 'a -> unit) -> out_channel -> 'a list -> unit val print_string_list : out_channel -> string list -> unit val print_int_list : out_channel -> int list -> unit (************************************************************************ * Formatter interface. *) (* * Boxes. *) val open_box : int -> unit val open_vbox : int -> unit val open_hbox : unit -> unit val open_hvbox : int -> unit val open_hovbox : int -> unit val close_box : unit -> unit (* * Formatting functions. *) val print_string : string -> unit val print_as : int -> string -> unit val print_int : int -> unit val print_float : float -> unit val print_char : char -> unit val print_bool : bool -> unit (* * Break hints. *) val print_space : unit -> unit val print_cut : unit -> unit val print_break : int -> int -> unit val print_flush : unit -> unit val print_newline : unit -> unit val force_newline : unit -> unit val print_if_newline : unit -> unit (* * Margin. *) val set_margin : int -> unit val get_margin : unit -> int (* * Indentation limit. *) val set_max_indent : int -> unit val get_max_indent : unit -> int (* * Formatting depth. *) val set_max_boxes : int -> unit val get_max_boxes : unit -> int val over_max_boxes : unit -> bool (* * Tabulations. *) val open_tbox : unit -> unit val close_tbox : unit -> unit val print_tbreak : int -> int -> unit val set_tab : unit -> unit val print_tab : unit -> unit (* * Ellipsis. *) val set_ellipsis_text : string -> unit val get_ellipsis_text : unit -> string (* * Redirecting formatter output. *) val set_formatter_out_channel : Pervasives.out_channel -> unit val set_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> unit val get_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) val set_all_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> (unit -> unit) -> (int -> unit) -> unit val get_all_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit) (* * Multiple formatted output. *) type formatter = out_channel val formatter_of_out_channel : Pervasives.out_channel -> formatter val std_formatter : formatter val err_formatter : formatter val str_formatter : formatter val stdbuf : Buffer.t val flush_str_formatter : unit -> string val formatter_of_buffer : Buffer.t -> formatter val make_formatter : (string -> int -> int -> unit) -> (unit -> unit) -> formatter val pp_open_hbox : formatter -> unit -> unit val pp_open_vbox : formatter -> int -> unit val pp_open_hvbox : formatter -> int -> unit val pp_open_hovbox : formatter -> int -> unit val pp_open_box : formatter -> int -> unit val pp_close_box : formatter -> unit -> unit val pp_print_string : formatter -> string -> unit val pp_print_as : formatter -> int -> string -> unit val pp_print_int : formatter -> int -> unit val pp_print_float : formatter -> float -> unit val pp_print_char : formatter -> char -> unit val pp_print_bool : formatter -> bool -> unit val pp_print_break : formatter -> int -> int -> unit val pp_print_cut : formatter -> unit -> unit val pp_print_space : formatter -> unit -> unit val pp_force_newline : formatter -> unit -> unit val pp_print_flush : formatter -> unit -> unit val pp_print_newline : formatter -> unit -> unit val pp_print_if_newline : formatter -> unit -> unit val pp_open_tbox : formatter -> unit -> unit val pp_close_tbox : formatter -> unit -> unit val pp_print_tbreak : formatter -> int -> int -> unit val pp_set_tab : formatter -> unit -> unit val pp_print_tab : formatter -> unit -> unit val pp_set_margin : formatter -> int -> unit val pp_get_margin : formatter -> unit -> int val pp_set_max_indent : formatter -> int -> unit val pp_get_max_indent : formatter -> unit -> int val pp_set_max_boxes : formatter -> int -> unit val pp_get_max_boxes : formatter -> unit -> int val pp_over_max_boxes : formatter -> unit -> bool val pp_set_ellipsis_text : formatter -> string -> unit val pp_get_ellipsis_text : formatter -> unit -> string val pp_set_formatter_out_channel : formatter -> Pervasives.out_channel -> unit val pp_set_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> unit val pp_get_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) val pp_set_all_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> (unit -> unit) -> (int -> unit) -> unit val pp_get_all_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit) (* * Allow the use of the Format modules. *) val out_channel_of_formatter : Format.formatter -> out_channel (************************************************************************ * Helper utilities. *) (* Prints a "; "- separated list. *) val pp_print_any_list : (formatter -> 'a -> unit) -> formatter -> 'a list -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_imp_dag.mli0000664000152300015230000000300510464477010021567 0ustar jyhjyh(* * Imperative DAGs. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_dag_sig module ImpDag : ImpDagSig (* * -*- * Local Variables: * Caml-master: "editor.top" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_large_array_weak.mli0000664000152300015230000000252710464477010023476 0ustar jyhjyh(* * LArge array of weak pointers. This is just to get around the * OCaml restriction on array sizes. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_array_sig module LargeWeakArray : WeakArraySig (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_make_printf.mli0000664000152300015230000000716610456222231022474 0ustar jyhjyh(* * This is a generic printf builder. We take "simple" printing * functions, and turn them into a general printf. * * Formatted printing. * Here are the format strings we handle. * d or i: print an integer in decminal * u: print an unsigned integer in decimal * x: print an integer in unsigned hex in lowercase * X: print an integer in unsigned hex in uppercase * o: print an integer in unsigned octal * s: print a string * c: print a character * f: print a float in decimal * e,E: print a float in exponent notation * g,G: print a float in best notation * b: print a Boolean * a: user-defined printer * t: user-defined printer * %: print the '%' char * * From the printf man page, each format specifier has * 1. 0 or more flags * #: use alternate notation * 0: 0-pad the number * '-': left-justify the field * ' ': leave a space before the number * '+': always print the sign of the number * 2. An optional field width in decimal * 3. An optional precision, specified as a '.' followed * by a decimal number. * 4. A format specifier * * For Format: * @]: close_box * @,: print_cut * @ : print_space * @\n: force_newline * @;: print_break * @?: print_flush * @.: print_newline * @: print_length * @@: plain @ char * * Note the copious use of Obj.magic * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Argument module. *) module type PrintfArgsSig = sig (* Some buffer type *) type t type result (* The printers *) val print_char : t -> char -> unit val print_string : t -> string -> unit (* Format functions *) val open_box : t -> int -> unit val open_hbox : t -> unit val open_vbox : t -> int -> unit val open_hvbox : t -> int -> unit val open_hovbox : t -> int -> unit val close_box : t -> unit val print_cut : t -> unit val print_space : t -> unit val force_newline : t -> unit val print_break : t -> int -> int -> unit val print_flush : t -> unit val print_newline : t -> unit val exit : t -> result end (* * What this module provides. *) module type PrintfSig = sig (* Some buffer type *) type t type result (* Lm_printf functions *) val fprintf : t -> ('a, t, result) format -> 'a end (* * Here's the actual printf module. *) module MakePrintf (Args : PrintfArgsSig) : PrintfSig with type t = Args.t with type result = Args.result (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_num.mli0000664000152300015230000000500610464477010020771 0ustar jyhjyh(* * Our slow implementation of numbers * without using C libraries. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified by: Aleksey Nogin *) type num (* * Operations. *) val add_num : num -> num -> num val sub_num : num -> num -> num val mult_num : num -> num -> num val div_num : num -> num -> num val mod_num : num -> num -> num val quo_num : num -> num -> num val rem_num : num -> num -> num val neg_num : num -> num val abs_num : num -> num val power_num : num -> num -> num val succ_num : num -> num val pred_num : num -> num (* * Comparision. *) val lt_num : num -> num -> bool val le_num : num -> num -> bool val eq_num : num -> num -> bool val ge_num : num -> num -> bool val gt_num : num -> num -> bool val compare_num : num -> num -> int val is_zero : num -> bool (* * Conversion. *) val is_integer_num : num -> bool val integer_num : num -> int val num_of_int : int -> num val int_of_num : num -> int val string_of_num : num -> string val num_of_string : string -> num val to_string : num -> string val of_string : string -> num val to_int32 : num -> Int32.t val of_int32 : Int32.t -> num (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat_html.mli0000664000152300015230000000351310456222231022663 0ustar jyhjyh(* * Text-based printing. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_rformat_raw open Lm_rformat type html_tagger_fun = NoTagger | StringTagger of string | FunTagger of (string -> string) type html_tagger_pair = { html_tag_begin : html_tagger_fun; html_tag_end : html_tagger_fun } type html_tagger = html_tagger_pair option val make_html_printer : html_tagger -> raw_printer -> printer val print_html_channel : int -> html_tagger -> buffer -> out_channel -> unit val print_html_buffer : int -> html_tagger -> buffer -> Buffer.t -> unit val print_html_string : int -> html_tagger -> buffer -> string val escape : string -> string (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_hash_set.mli0000664000152300015230000000312110464477010021764 0ustar jyhjyh(* * More functional implementation of splay sets. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_set_sig module Make (Ord : Set.OrderedType) : MinimalSetSig with type elt = Ord.t (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_int_set.ml0000664000152300015230000000313010456222231021454 0ustar jyhjyh(* * Sets of strings. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * String sets and string tables *) module OrderedInt = struct type t = int let compare (i : int) (j : int) = if i < j then -1 else if i > j then 1 else 0 end module IntSet = Lm_set.LmMake (OrderedInt) module IntTable = Lm_map.LmMake (OrderedInt) module IntMTable = Lm_map.LmMakeList (OrderedInt) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_string_util.ml0000664000152300015230000012163410617673542022402 0ustar jyhjyh(* * String utilities. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified By: Aleksey Nogin *) open Lm_debug open Lm_printf (* * Show the file loading. *) let debug_string = create_debug (**) { debug_name = "string"; debug_description = "check string bounds"; debug_value = false } let code0 = Char.code '0' let codea = Char.code 'a' let codeA = Char.code 'A' (* * Efficient string ordering (_not_ lexicographic) *) let rec string_compare_aux s1 s2 len i = if len = i then 0 else let c1 = String.unsafe_get s1 i in let c2 = String.unsafe_get s2 i in if c1 = c2 then string_compare_aux s1 s2 len (i+1) else Pervasives.compare c1 c2 let string_compare s1 s2 = let len1 = String.length s1 in match Pervasives.compare len1 (String.length s2) with 0 -> string_compare_aux s1 s2 len1 0 | i -> i (* * String prefix. *) let rec is_string_prefix_aux s1 s2 i len = i = len || (String.unsafe_get s1 i = String.unsafe_get s2 i && is_string_prefix_aux s1 s2 (i + 1) len) let is_string_prefix s1 s2 = let len1 = String.length s1 in let len2 = String.length s2 in len1 <= len2 && is_string_prefix_aux s1 s2 0 len1 (* * Compare a substring. *) let rec equal_substring_aux s1 s2 len2 i1 i2 = if i2 = len2 then true else let c1 = String.unsafe_get s1 i1 in let c2 = String.unsafe_get s2 i2 in c1 = c2 && equal_substring_aux s1 s2 len2 (succ i1) (succ i2) let equal_substring s1 off s2 = let len1 = String.length s1 in let len2 = String.length s2 in len1 - off >= len2 && equal_substring_aux s1 s2 len2 off 0 (* * Check all chars in the string. *) let for_all f s = let len = String.length s in let rec check i = (i = len) or (f s.[i] & check (succ i)) in check 0 (* * Find a char in a string. *) let strchr s c = let l = String.length s in let rec aux i = if i < l then if s.[i] = c then i else aux (succ i) else raise Not_found in aux 0 (* * A more efficient reimplementation of String.contains. *) let contains = let rec contains_aux s limit c i = (i < limit) && ((String.unsafe_get s i) = c || contains_aux s limit c (i+1)) in fun s c -> contains_aux s (String.length s) c 0 (* * contains_string s1 s2 * true iff any one of the characters in s2 appears in s1. *) let contains_any = let rec search2 s2 len2 c i = (i < len2) && ((String.unsafe_get s2 i) = c || search2 s2 len2 c (i + 1)) and search1 s1 len1 s2 len2 i = (i < len1) && (search2 s2 len2 (String.unsafe_get s1 i) 0 || search1 s1 len1 s2 len2 (i + 1)) in (fun s1 s2 -> search1 s1 (String.length s1) s2 (String.length s2) 0) (* * Index of first char in a set. *) let index_set s set = let len = String.length s in let rec loop i = if i = len then raise Not_found else let c = s.[i] in if String.contains set c then i else loop (succ i) in loop 0 let rindex_set s set = let rec loop i = if i < 0 then raise Not_found else let c = s.[i] in if String.contains set c then i else loop (i - 1) in loop (String.length s - 1) (* * Search for a pattern in the indicated buffer, within the start * and length constraints applied to the buffer. Note that this * uses a very inefficient algorithm; at some point I (JDS) will * get around to converting this to the Knuth-Morris-Pratt or * maybe Rabin-Karp algorithm. * * On success, this returns the offset (RELATIVE TO start!) of * the first match found; on failure, this raises Not_found. *) let strpat buffer start len pattern = let patlen = String.length pattern in let rec pattern_matches_prefix bufcur patcur = if patcur >= patlen then true else if buffer.[bufcur] <> pattern.[patcur] then false else pattern_matches_prefix (bufcur + 1) (patcur + 1) in let pattern_matches_prefix start = pattern_matches_prefix start 0 in let rec is_match start = if start + patlen > len then raise Not_found else if pattern_matches_prefix start then start else is_match (start + 1) in (is_match start) - start (* * Escape a string using the C conventions. *) let c_escaped s = let len = String.length s in let buf = Buffer.create len in let rec loop i = if i = len then Buffer.contents buf else let c = s.[i] in let _ = match c with '"' -> Buffer.add_string buf "\\\"" | '\\' -> Buffer.add_string buf "\\\\" | ' '..'~' -> Buffer.add_char buf c | _ -> let code = Char.code c in Buffer.add_char buf '\\'; Buffer.add_char buf (Char.chr (((code / 64) mod 8) + code0)); Buffer.add_char buf (Char.chr (((code / 8) mod 8) + code0)); Buffer.add_char buf (Char.chr ((code mod 8) + code0)) in loop (succ i) in loop 0 (* * Escape a string using the Javascript single-quote conventions. *) let js_escaped s = let len = String.length s in let buf = Buffer.create len in let rec loop i = if i = len then Buffer.contents buf else let c = s.[i] in let _ = match c with '\'' -> Buffer.add_string buf "\\'" | '\\' -> Buffer.add_string buf "\\\\" | ' '..'~' -> Buffer.add_char buf c | _ -> let code = Char.code c in Buffer.add_char buf '\\'; Buffer.add_char buf (Char.chr (((code / 64) mod 8) + code0)); Buffer.add_char buf (Char.chr (((code / 8) mod 8) + code0)); Buffer.add_char buf (Char.chr ((code mod 8) + code0)) in loop (succ i) in loop 0 (* * Escape a string using the HTML conventions. *) let html_pre_escaped s = let len = String.length s in let buf = Buffer.create len in let rec loop i = if i = len then Buffer.contents buf else let c = s.[i] in let _ = match c with '<' -> Buffer.add_string buf "<" | '>' -> Buffer.add_string buf ">" | '&' -> Buffer.add_string buf "&" | '"' -> Buffer.add_string buf """ | ' ' | '\r' | '\n' | '\t' -> Buffer.add_char buf c | _ -> if c < ' ' || c >= '\127' then begin Buffer.add_string buf "&#"; Buffer.add_string buf (string_of_int (Char.code c)); Buffer.add_char buf ';' end else Buffer.add_char buf c in loop (succ i) in loop 0 let html_escaped s = let len = String.length s in let buf = Buffer.create len in let rec loop i = if i = len then Buffer.contents buf else let c = s.[i] in let _ = match c with '<' -> Buffer.add_string buf "<" | '>' -> Buffer.add_string buf ">" | '&' -> Buffer.add_string buf "&" | '"' -> Buffer.add_string buf """ | ' ' -> Buffer.add_string buf " " | '\r' -> () | '\n' -> Buffer.add_string buf "
\n"; | '\t' -> Buffer.add_string buf "    " | _ -> if c < ' ' || c >= '\127' then begin Buffer.add_string buf "&#"; Buffer.add_string buf (string_of_int (Char.code c)); Buffer.add_char buf ';' end else Buffer.add_char buf c in loop (succ i) in loop 0 (* * Escape a string using the HTML conventions. *) let html_escaped_nonwhite s = let len = String.length s in let buf = Buffer.create len in let rec loop i = if i = len then Buffer.contents buf else let c = s.[i] in let _ = match c with '<' -> Buffer.add_string buf "<" | '>' -> Buffer.add_string buf ">" | '&' -> Buffer.add_string buf "&" | '"' -> Buffer.add_string buf """ | ' ' | '\t' -> Buffer.add_char buf c | '\n' | '\r' -> Buffer.add_string buf "
\n" | _ -> if c < ' ' || c >= '\127' then begin Buffer.add_string buf "&#"; Buffer.add_string buf (string_of_int (Char.code c)); Buffer.add_char buf ';' end else Buffer.add_char buf c in loop (succ i) in loop 0 (* * A generic definition of white space. *) let white = " \t\r\n\012" let quotes = "\"'" (* * Test if a string is all whitespace. *) let is_white = let rec test s i len = i = len || (match String.unsafe_get s i with ' ' | '\t' | '\r' | '\n' | '\012' -> test s (succ i) len | _ -> false) in (fun s -> test s 0 (String.length s)) (* * Split a string str into a list of substrings. * The string is split on any character in delims. Empty substrings * are returned as empty strings in the list. For example: * split "-." "foo.bar--ba??z" * returns * ["foo"; "bar"; ""; "ba??z"] *) let split delims str = let strlen = String.length str in (* Find the next split index *) let rec next_split pos = if pos = strlen then strlen else let c = String.get str pos in if contains delims c then pos else next_split (pos + 1) in (* Build the list *) let rec str_split pos = let pos_end = next_split pos in if pos_end = strlen then [String.sub str pos (pos_end - pos)] else (String.sub str pos (pos_end - pos)) :: (str_split (pos_end + 1)) in str_split 0 (* * Split a string str into a list of substrings. * The string is split on any character in delims. Quotations * are not split. * * Empty substrings are _not_ returned as empty strings in the list. * For example: * split ".-" "foo.bar--ba??z" * returns * ["foo"; "bar"; "ba??z"] *) let tokens_fold f x quotes delims str = let strlen = String.length str in (* Skip white space *) let rec skip_split pos = if pos = strlen then strlen else let c = str.[pos] in if contains delims c then skip_split (succ pos) else pos in (* * Find the next split index. *) let rec next_split pos = if pos = strlen then strlen else let c = str.[pos] in if contains delims c then pos else if contains quotes c then next_quote (succ pos) else next_split (succ pos) and next_quote pos = if pos = strlen then strlen else let c = str.[pos] in if contains quotes c then next_split (succ pos) else if c = '\\' && pos < pred strlen then next_quote (pos + 2) else next_quote (succ pos) in (* Build the list *) let rec str_split x pos = if pos = strlen then x else let pos_end = next_split pos in let x = f x str pos (pos_end - pos) in str_split x (skip_split pos_end) in str_split x (skip_split 0) (* * Default token processor. *) let tokens quotes delims str = let l = tokens_fold (fun l s off len -> String.sub s off len :: l) [] quotes delims str in List.rev l let tokens_std s = tokens quotes white s (* * This is a somewhat optimized form of the above, * for parsing based on whitespace and normal quotes. * * For simple parsing, all the tokens_wrap_* functions are the same, * and the lexer is a dummy. *) type 'a tokens_prefix = NoPrefix | WordPrefix of 'a list | QuotePrefix of char * 'a list type 'a tokens = { tokens_lexer : (string -> int -> int -> int option); tokens_wrap_string : (string -> 'a); tokens_wrap_data : (string -> 'a); tokens_wrap_token : (string -> 'a); tokens_group : ('a list -> 'a); tokens_list : 'a list; tokens_prefix : 'a tokens_prefix } let tokens_create_lexer ~lexer ~wrap_string ~wrap_data ~wrap_token ~group = let group toks = match toks with [] -> wrap_data "" | [tok] -> tok | toks -> group (List.rev toks) in { tokens_lexer = lexer; tokens_wrap_string = wrap_string; tokens_wrap_data = wrap_data; tokens_wrap_token = wrap_token; tokens_group = group; tokens_list = []; tokens_prefix = NoPrefix } let tokens_create wrap group = tokens_create_lexer ~lexer:(fun _ _ _ -> None) ~wrap_string:wrap ~wrap_data:wrap ~wrap_token:wrap ~group:group (* * Get the tokens list. *) let tokens_flush info = let { tokens_group = group; tokens_list = tokens; tokens_prefix = prefix } = info in let tokens = match prefix with NoPrefix -> tokens | WordPrefix prefix | QuotePrefix (_, prefix) -> group prefix :: tokens in List.rev tokens (* * End the current word. *) let tokens_break info = let { tokens_group = group; tokens_list = tokens; tokens_prefix = prefix } = info in match prefix with NoPrefix -> info | WordPrefix prefix | QuotePrefix (_, prefix) -> { info with tokens_list = group prefix :: tokens; tokens_prefix = NoPrefix } (* * Add a value directly. * This also performs a break. *) let tokens_atomic info x = let { tokens_group = group; tokens_list = tokens; tokens_prefix = prefix } = info in match prefix with NoPrefix -> { info with tokens_list = x :: tokens; tokens_prefix = NoPrefix } | WordPrefix prefix | QuotePrefix (_, prefix) -> { info with tokens_list = x :: group prefix :: tokens; tokens_prefix = NoPrefix } (* * Add an value that might be unwrapped. * The value is unwrapped only if it is not surrounded by whitespace. *) let tokens_add info x = match info.tokens_prefix with NoPrefix -> { info with tokens_prefix = WordPrefix [x] } | WordPrefix prefix -> { info with tokens_prefix = WordPrefix (x :: prefix) } | QuotePrefix (c, prefix) -> { info with tokens_prefix = QuotePrefix (c, x :: prefix) } (* * Insert literal data. * The data is not scanned for whitespace. *) let tokens_data info s = tokens_add info (info.tokens_wrap_data s) (* * Scan the string for whitespace. *) let tokens_string info s = let len = String.length s in let wrap = info.tokens_wrap_string in let wrap_prefix prefix s off len = if len <> 0 then wrap (String.sub s off len) :: prefix else prefix in (* Scanning whitespace *) let rec scan_white tokens i = if i = len then { info with tokens_list = tokens; tokens_prefix = NoPrefix } else match String.unsafe_get s i with ' ' | '\t' | '\n' | '\r' | '\012' -> scan_white tokens (succ i) | '"' | '\'' as c -> scan_quote tokens [] c i (succ i) | '\\' -> scan_word tokens [] i (i + 2) | _ -> scan_word tokens [] i (succ i) (* Scanning a quoted word *) and scan_quote tokens prefix delim start i = if i >= len then let head = wrap_prefix prefix s start (len - start) in { info with tokens_list = tokens; tokens_prefix = QuotePrefix (delim, head) } else let c = String.unsafe_get s i in match c with '"' | '\'' when c = delim -> scan_word tokens prefix start (succ i) | '\\' -> scan_quote tokens prefix delim start (i + 2) | _ -> scan_quote tokens prefix delim start (succ i) (* Scanning a word *) and scan_word tokens prefix start i = if i >= len then let prefix = wrap_prefix prefix s start (len - start) in { info with tokens_list = tokens; tokens_prefix = WordPrefix prefix } else match String.unsafe_get s i with ' ' | '\t' | '\n' | '\r' | '\012' -> let head = wrap_prefix prefix s start (i - start) in let head_tok = info.tokens_group head in scan_white (head_tok :: tokens) (succ i) | '"' | '\'' as c -> scan_quote tokens prefix c start (succ i) | '\\' -> scan_word tokens prefix start (i + 2) | _ -> scan_word tokens prefix start (succ i) in if len = 0 then info else let { tokens_list = tokens; tokens_prefix = prefix } = info in match prefix with NoPrefix -> scan_white tokens 0 | WordPrefix prefix -> scan_word tokens prefix 0 0 | QuotePrefix (c, prefix) -> scan_quote tokens prefix c 0 0 (* * Yet another tokenizer, where we allow for special tokens. * This is used, for example, in shell parsing, where some * unquoted sequences like && are special. *) type buf_token = BufWhite | BufQuote of char | BufBackslash | BufChar | BufToken of int let buffer_get_quoted s i = match String.unsafe_get s i with ' ' | '\t' | '\n' | '\r' | '\012' -> BufWhite | '"' | '\'' as c -> BufQuote c | '\\' -> BufBackslash | _ -> BufChar let buffer_get_token lexer s i len = match String.unsafe_get s i with ' ' | '\t' | '\n' | '\r' | '\012' -> BufWhite | '"' | '\'' as c -> BufQuote c | '\\' -> BufBackslash | _ -> match lexer s i len with Some i -> BufToken i | None -> BufChar let tokens_lex info s = let { tokens_lexer = lexer; tokens_wrap_string = wrap_string; tokens_wrap_data = wrap_data; tokens_wrap_token = wrap_token; tokens_group = group } = info in let len = String.length s in (* Don't add empty strings *) let wrap_data_prefix prefix s off len = if len <> 0 then wrap_data (String.sub s off len) :: prefix else prefix in let wrap_string_prefix prefix s off len = if len <> 0 then wrap_string (String.sub s off len) :: prefix else prefix in (* Scanning whitespace *) let rec scan_white tokens i = if i = len then { info with tokens_list = tokens; tokens_prefix = NoPrefix } else match buffer_get_token lexer s i len with BufWhite -> scan_white tokens (succ i) | BufQuote c -> scan_quote tokens [] c (succ i) (succ i) | BufBackslash -> scan_word tokens [] i (i + 2) | BufChar -> scan_word tokens [] i (succ i) | BufToken len -> let head = wrap_token (String.sub s i len) in scan_white (head :: tokens) (i + len) (* Scanning a quoted word *) and scan_quote tokens prefix delim start i = if i >= len then let head = wrap_data_prefix prefix s start (len - start) in { info with tokens_list = tokens; tokens_prefix = QuotePrefix (delim, head) } else match buffer_get_quoted s i with BufQuote c when c = delim -> let prefix = wrap_data_prefix prefix s start (i - start) in scan_word tokens prefix (succ i) (succ i) | BufBackslash -> scan_quote tokens prefix delim start (i + 2) | BufQuote _ | BufWhite | BufChar -> scan_quote tokens prefix delim start (succ i) | BufToken _ -> raise (Invalid_argument "Lm_string_util.tokens_lex: illegal token") (* Scanning a word *) and scan_word tokens prefix start i = if i >= len then let head = wrap_string_prefix prefix s start (len - start) in { info with tokens_list = tokens; tokens_prefix = WordPrefix head } else match buffer_get_token lexer s i len with BufWhite -> let head = group (wrap_string_prefix prefix s start (i - start)) in scan_white (head :: tokens) (succ i) | BufToken len -> let head1 = group (wrap_string_prefix prefix s start (i - start)) in let head2 = wrap_token (String.sub s i len) in scan_white (head2 :: head1 :: tokens) (i + len) | BufQuote c -> let prefix = wrap_string_prefix prefix s start (i - start) in scan_quote tokens prefix c (succ i) (succ i) | BufBackslash -> scan_word tokens prefix start (i + 2) | BufChar -> scan_word tokens prefix start (succ i) in if len = 0 then info else let { tokens_list = tokens; tokens_prefix = prefix } = info in match prefix with NoPrefix -> scan_white tokens 0 | WordPrefix prefix -> scan_word tokens prefix 0 0 | QuotePrefix (c, prefix) -> scan_quote tokens prefix c 0 0 (* * Split a string based on a boundary. *) let split_string boundary s = let len_s = String.length s in let len_b = String.length boundary in let c = if len_b = 0 then raise (Invalid_argument "split_string"); boundary.[0] in let rec matches i j = if j = len_b then true else s.[i] = boundary.[j] && matches (succ i) (succ j) in let buf = Buffer.create 17 in let rec split l i = if len_s - i < len_b then begin Buffer.add_substring buf s i (len_s - i); Buffer.contents buf :: l end else if s.[i] = c && matches i 0 then let s' = Buffer.contents buf in Buffer.clear buf; split (s' :: l) (i + len_b) else begin Buffer.add_char buf s.[i]; split l (succ i) end in List.rev (split [] 0) (* * Split a string based on a MIME boundary. *) let split_mime_string boundary s = let len_s = String.length s in let len_b = String.length boundary in let rec matches i j = if j = len_b then true else s.[i] = boundary.[j] && matches (succ i) (succ j) in let buf = Buffer.create 17 in (* Collect the delimited text *) let rec split l i = if len_s - i < len_b - 2 then l else if s.[i] = '-' && s.[i + 1] = '-' && matches (i + 2) 0 then let l = Buffer.contents buf :: l in Buffer.clear buf; skip l (i + 2 + len_b) else begin Buffer.add_char buf s.[i]; split l (succ i) end (* Skip over garbage after the delimiter *) and skip l i = if len_s - i < 2 || (s.[i] = '-' && s.[i + 1] = '-') then l else split l (i + 2) (* Skip to the first delimiter *) and skip_start i = if len_s - i < len_b - 2 then [] else if s.[i] = '-' && s.[i + 1] = '-' && matches (i + 2) 0 then skip [] (i + 2 + len_b) else skip_start (succ i) in List.rev (skip_start 0) (* * Unescape a quoted string. *) let unescape s = let slen = String.length s in let buf = Buffer.create slen in let off, len = if slen < 2 then 0, slen else if s.[0] = '"' && s.[slen - 1] = '"' then 1, slen - 1 else 0, slen in let rec collect i = if i = len then Buffer.contents buf else let c = s.[i] in let c, i = if c = '\\' && i + 1 < len then match s.[i + 1] with 't' -> '\t', i + 2 | 'r' -> '\r', i + 2 | 'n' -> '\n', i + 2 | '\\' -> '\\', i + 2 | ('0'..'9') when i + 3 < len -> let code = 100 * Char.code s.[i + 1] + 10 * Char.code s.[i + 2] + Char.code s.[i + 3] - 111 * Char.code '0' in Char.chr (code land 0xff), i + 4 | c -> c, i + 2 else c, i + 1 in Buffer.add_char buf c; collect i in collect off (* * Trim all whitespace from a string, respecting quotes. *) let trim_all quotes delims str = let scratch_buf = Buffer.create 17 in ignore (tokens_fold (fun first s off len -> if not first then Buffer.add_char scratch_buf ' '; Buffer.add_substring scratch_buf s off len; false) true quotes delims str); Buffer.contents scratch_buf let trim_std = trim_all quotes white (* * Trim outer whitespace from a string. *) let trim s = let length = String.length s in let is_whitespace = String.contains white in let rec scan_for_first_nonws index = if index < length && is_whitespace s.[index] then scan_for_first_nonws (index + 1) else index in let rec scan_for_last_nonws index = if index >= 0 && is_whitespace s.[index] then scan_for_last_nonws (index - 1) else index in let first = scan_for_first_nonws 0 in let last = scan_for_last_nonws (length - 1) in if first > last then "" else String.sub s first (last - first + 1) (* * Need these for converting numbers. *) let code0 = Char.code '0' let codea = Char.code 'a' let codeA = Char.code 'A' (* * Turn a string into an argument list. *) let parse_args_list line = let len = String.length line in let buf = String.create len in let rec skip i = if i = len then [[]] else match line.[i] with ' ' | '\t' | '\n' | '\r' -> skip (succ i) | '"' -> string 0 (succ i) | '\\' -> if len >= i + 2 && line.[i + 1] = '\\' then [] :: skip (i + 2) else raise (Invalid_argument ("Lm_string_util.parse_args: " ^ line)) | _ -> collect i (succ i) and collect i j = if j = len then [[String.sub line i (j - i)]] else match line.[j] with ' ' | '\t' | '\n' | '\r' | '\\' -> let s = String.sub line i (j - i) in (match skip j with [] -> [[s]] | h :: tl -> (s :: h) :: tl) | _ -> collect i (succ j) and string j k = if k = len then raise (Invalid_argument ("Lm_string_util.parse_args: " ^ line)) else let c = line.[k] in if c = '"' then let s = String.sub buf 0 j in match skip (succ k) with [] -> raise (Invalid_argument "Lm_string_util.parse_args - internal error") | h::tl -> (s::h)::tl else if c = '\\' then escape j (succ k) else begin buf.[j] <- c; string (succ j) (succ k) end and escape j k = if k = len then raise (Invalid_argument ("Lm_string_util.parse_args: " ^ line)) else let c,k = match line.[k] with 't' -> '\t', succ k | 'n' -> '\n', succ k | 'r' -> '\r', succ k | '\\' -> '\\', succ k | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') as c -> Char.chr (100 * (Char.code c) + 10 * (Char.code line.[succ k]) + (Char.code line.[k+2]) - 111 * code0), k+3 | c -> c, succ k in buf.[j] <- c; string (succ j) k in let _ = if !debug_string then eprintf "Lm_string_util.parse_args: %s@." (String.escaped line) in let args = skip 0 in if !debug_string then eprintf "Lm_string_util.parse_args: done@."; args let parse_args s = match parse_args_list s with [] -> [] | [l] -> l | _ -> raise (Invalid_argument ("Lm_string_util.parse_args - line includes \\\\:" ^ s)) (* * Concatenate strings. *) let prepend sep sl = let scratch_buf = Buffer.create 17 in let collect s = Buffer.add_string scratch_buf sep; Buffer.add_string scratch_buf s in Buffer.clear scratch_buf; if sl = [] then Buffer.add_string scratch_buf sep else List.iter collect sl; Buffer.contents scratch_buf (* * Read a file into a string. *) let string_of_file name = let inx = open_in_bin name in let scratch_buf = Buffer.create 17 in let rec loop () = Buffer.add_char scratch_buf (input_char inx); loop () in Buffer.clear scratch_buf; try loop () with End_of_file -> close_in inx; let s = Buffer.contents scratch_buf in Buffer.reset scratch_buf; s (************************************************************************ * DEBUG VERSIONS ************************************************************************) (* * Create a new string containing garbage. *) let create name i = if !debug_string then if i < 0 then begin eprintf "Lm_string_util.create: %s: %d < 0@." name i; raise (Failure "Lm_string_util.create") end; String.create i (* * Make a string initialized with all chars the same. *) let make name i c = if !debug_string then if i < 0 then begin eprintf "Lm_string_util.make: %s: %d < 0@." name i; raise (Failure "Lm_string_util.make") end; String.make i c (* * Substring. *) let sub name s i len = if !debug_string then let len' = String.length s in if i >= 0 & len >= 0 & i + len < len' then String.sub s i len else begin eprintf "Lm_string_util.sub error: %s: %s.[%d]@." name s i; raise (Failure "Lm_string_util.sub") end else String.sub s i len let blit name froms i tos j len = if !debug_string then let from_len = String.length froms in let to_len = String.length tos in if i >= 0 & j >= 0 & len >= 0 & i + len < from_len & j + len < to_len then String.blit froms i tos j len else begin eprintf "String_util.blit_error: %s: %s %d %s %d %d@." name froms i tos j len; raise (Failure "String_util.blit") end else String.blit froms i tos j len let set name s i c = if !debug_string then let len = String.length s in if i >= 0 & i < len then String.set s i c else begin eprintf "String_util.set error: %s: %s.[%d] <- %c@." name s i c; raise (Failure "String_util.set") end else String.set s i c let get name s i = let len = String.length s in if i >= 0 & i < len then String.get s i else begin eprintf "String_util.get error: %s: %s[%d]@." name s i; raise (Failure "String_util.get") end (************************************************************************ * Hex notation. *) (* * Turn a string into hex. *) let hex_char = let zero = Char.code '0' in let a = Char.code 'a' - 10 in let hex_char code = if code < 10 then Char.chr (code + zero) else Char.chr (code + a) in hex_char let hexify s = let len = String.length s in let buf = String.create (2 * len) in for i = 0 to pred len do let code = Char.code s.[i] in buf.[2 * i] <- hex_char ((code lsr 4) land 15); buf.[2 * i + 1] <- hex_char (code land 15) done; buf let hexify_sub s off len = let buf = String.create (2 * len) in for i = 0 to pred len do let code = Char.code s.[off + i] in buf.[2 * i] <- hex_char ((code lsr 4) land 15); buf.[2 * i + 1] <- hex_char (code land 15) done; buf let unhex i = match i with '0' .. '9' -> (Char.code i) - code0 | 'a' .. 'f' -> (Char.code i) - codea + 10 | 'A' .. 'F' -> (Char.code i) - codeA + 10 | _ -> raise (Failure "unhexify") let unhexify s = let len = String.length s in if len mod 2 = 0 then let buf = create "String_util.unhexify" (len / 2) in let rec unhexify i j = if j < len then begin buf.[i] <- Char.chr ((unhex s.[j]) * 16 + (unhex s.[succ j])); unhexify (i + 1) (j + 2) end in unhexify 0 0; buf else raise (Failure "unhexify") let unhexify_int s = let len = String.length s in let rec unhexify index i = if i < len then unhexify (index * 16 + (unhex s.[i])) (succ i) else index in unhexify 0 0 (* * Construct an argv string with proper quoting. * * We are given a list of arguments that may or may not contain * whitespace or quotes. Quote them in a meaningful way before * parsing. *) type mode = ModeNormal | ModeDouble | ModeSingle let rec needs_quotes mode s i len = if i >= len then mode <> ModeNormal else match mode, s.[i] with _, '\\' -> needs_quotes mode s (i + 2) len | ModeNormal, ' ' | ModeNormal, '\t' | ModeNormal, '\012' | ModeNormal, '\n' | ModeNormal, '\r' -> true | ModeNormal, '"' -> needs_quotes ModeDouble s (succ i) len | ModeNormal, '\'' -> needs_quotes ModeSingle s (succ i) len | ModeSingle, '\'' | ModeDouble, '"' -> needs_quotes ModeNormal s (succ i) len | _ -> needs_quotes mode s (succ i) len let needs_quotes s = let len = String.length s in len = 0 || needs_quotes ModeNormal s 0 len let dquote = '"' let equote = "\\\"" let quotify buf s = let len = String.length s in let rec copy i = if i <> len then let c = s.[i] in match c with '"' -> Buffer.add_string buf equote; copy (succ i) | '\\' -> Buffer.add_char buf '\\'; if i < len - 1 then begin Buffer.add_char buf s.[i + 1]; copy (i + 2) end | _ -> Buffer.add_char buf c; copy (succ i) in Buffer.add_char buf dquote; copy 0; Buffer.add_char buf dquote let shell_quotes s = let buf = Buffer.create 32 in quotify buf s; Buffer.contents buf let quote buf s = if needs_quotes s then quotify buf s else Buffer.add_string buf s let rec concat_argv buf argv = match argv with [arg] -> quote buf arg | arg :: argv -> quote buf arg; Buffer.add_char buf ' '; concat_argv buf argv | [] -> () let concat_argv argv = let buf = Buffer.create 32 in concat_argv buf argv; Buffer.contents buf (* * For string quoting. *) let rec concat_string buf argv = match argv with [arg] -> Buffer.add_string buf arg | arg :: argv -> Buffer.add_string buf arg; Buffer.add_char buf ' '; concat_string buf argv | [] -> () let concat_string argv = match argv with [arg] -> arg | _ :: _ -> let buf = Buffer.create 32 in concat_string buf argv; Buffer.contents buf | [] -> "" (* * This function adds quotes if needed. *) let string_argv argv = let s = concat_string argv in if needs_quotes s then let buf = Buffer.create 32 in quotify buf s; Buffer.contents buf else s (* * This function always adds quotes. *) let quote_string s = let len = String.length s in if needs_quotes s || (not (s.[0] = '"' && s.[len - 1] = '"' || s.[0] = '\'' && s.[len - 1] = '\'')) then let buf = Buffer.create 32 in quotify buf s; Buffer.contents buf else s let quote_argv argv = quote_string (concat_string argv) (************************************************************************ * Translate between URI enconding. *) (* * Convert two hex chars into a new 8-bit char. *) let unhex_char c1 c2 = let i1 = unhex c1 in let i2 = unhex c2 in Char.chr (i1 * 16 + i2) (* * Decode hex characters in the URI. *) let decode_hex_name uri = let len = String.length uri in let buf = String.create len in let rec convert i j = if j = len then if i = len then buf else String.sub buf 0 i else if uri.[j] = '+' then begin buf.[i] <- ' '; convert (i + 1) (j + 1) end else if uri.[j] = '%' & j < len - 2 then begin buf.[i] <- unhex_char uri.[j + 1] uri.[j + 2]; convert (i + 1) (j + 3) end else begin buf.[i] <- uri.[j]; convert (i + 1) (j + 1) end in convert 0 0 (* * Encode a string into hex. *) let hex_char code = if code < 10 then Char.chr (code + Char.code '0') else Char.chr (code - 10 + Char.code 'a') let encode_hex_name uri = let len = String.length uri in let buf = String.create (3 * len) in let rec convert i j = if i = len then String.sub buf 0 j else match uri.[i] with ('0'..'9' | 'A'..'Z' | 'a'..'z' | '/' | '_' | '-' | '.') as c -> buf.[j] <- c; convert (succ i) (succ j) | c -> let code = Char.code c in buf.[j] <- '%'; buf.[j + 1] <- hex_char ((code lsr 4) land 15); buf.[j + 2] <- hex_char (code land 15); convert (succ i) (j + 3) in convert 0 0 (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_format.mli0000664000152300015230000001505510456222231021461 0ustar jyhjyh(* * Convert to standard format. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Boxes. *) val open_box : int -> unit val open_vbox : int -> unit val open_hbox : unit -> unit val open_hvbox : int -> unit val open_hovbox : int -> unit val close_box : unit -> unit (* * Formatting functions. *) val print_string : string -> unit val print_as : int -> string -> unit val print_int : int -> unit val print_float : float -> unit val print_char : char -> unit val print_bool : bool -> unit (* * Break hints. *) val print_space : unit -> unit val print_cut : unit -> unit val print_break : int -> int -> unit val print_flush : unit -> unit val print_newline : unit -> unit val force_newline : unit -> unit val print_if_newline : unit -> unit (* * Margin. *) val set_margin : int -> unit val get_margin : unit -> int (* * Indentation limit. *) val set_max_indent : int -> unit val get_max_indent : unit -> int (* * Formatting depth. *) val set_max_boxes : int -> unit val get_max_boxes : unit -> int val over_max_boxes : unit -> bool (* * Tabulations. *) val open_tbox : unit -> unit val close_tbox : unit -> unit val print_tbreak : int -> int -> unit val set_tab : unit -> unit val print_tab : unit -> unit (* * Ellipsis. *) val set_ellipsis_text : string -> unit val get_ellipsis_text : unit -> string (* * Redirecting formatter output. *) val set_formatter_out_channel : out_channel -> unit val set_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> unit val get_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) val set_all_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> (unit -> unit) -> (int -> unit) -> unit val get_all_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit) (* * Multiple formatted output. *) type formatter val formatter_of_out_channel : out_channel -> formatter val std_formatter : formatter val err_formatter : formatter val str_formatter : formatter val stdbuf : Buffer.t val flush_str_formatter : unit -> string val formatter_of_buffer : Buffer.t -> formatter val make_formatter : (string -> int -> int -> unit) -> (unit -> unit) -> formatter val pp_open_hbox : formatter -> unit -> unit val pp_open_vbox : formatter -> int -> unit val pp_open_hvbox : formatter -> int -> unit val pp_open_hovbox : formatter -> int -> unit val pp_open_box : formatter -> int -> unit val pp_close_box : formatter -> unit -> unit val pp_print_string : formatter -> string -> unit val pp_print_as : formatter -> int -> string -> unit val pp_print_int : formatter -> int -> unit val pp_print_float : formatter -> float -> unit val pp_print_char : formatter -> char -> unit val pp_print_bool : formatter -> bool -> unit val pp_print_break : formatter -> int -> int -> unit val pp_print_cut : formatter -> unit -> unit val pp_print_space : formatter -> unit -> unit val pp_print_rbuffer : formatter -> Lm_rformat.buffer -> unit val pp_force_newline : formatter -> unit -> unit val pp_print_flush : formatter -> unit -> unit val pp_print_newline : formatter -> unit -> unit val pp_print_if_newline : formatter -> unit -> unit val pp_open_tbox : formatter -> unit -> unit val pp_close_tbox : formatter -> unit -> unit val pp_print_tbreak : formatter -> int -> int -> unit val pp_set_tab : formatter -> unit -> unit val pp_print_tab : formatter -> unit -> unit val pp_set_margin : formatter -> int -> unit val pp_get_margin : formatter -> unit -> int val pp_set_max_indent : formatter -> int -> unit val pp_get_max_indent : formatter -> unit -> int val pp_set_max_boxes : formatter -> int -> unit val pp_get_max_boxes : formatter -> unit -> int val pp_over_max_boxes : formatter -> unit -> bool val pp_set_ellipsis_text : formatter -> string -> unit val pp_get_ellipsis_text : formatter -> unit -> string val pp_set_formatter_out_channel : formatter -> out_channel -> unit val pp_set_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> unit val pp_get_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) val pp_set_all_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> (unit -> unit) -> (int -> unit) -> unit val pp_get_all_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit) (* * Allow output to be diverted to a function. *) val divert : formatter -> (Lm_rformat.buffer -> unit) option -> unit (* * Printf-style functions. *) val fprintf : formatter -> ('a, formatter, unit) format -> 'a val printf : ('a, formatter, unit) format -> 'a val bprintf : Buffer.t -> ('a, formatter, unit) format -> 'a val eprintf : ('a, formatter, unit) format -> 'a val sprintf : ('a, unit, string) format -> 'a (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_splay_table.ml0000664000152300015230000004535110464477010022327 0ustar jyhjyh(* * A splay table is like a functional hash table. * This code is derived from the Splay_set code. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_map_sig open Lm_printf (************************************************************************ * TYPES * ************************************************************************) (* * Table is a binary tree. * Each node has five fields: * 1. a key * 2. a list of values associated with the key * 3. a left child * 4. a right child * 5. the total number of keys in the tree *) type ('elt, 'data) tree = Leaf | Node of 'elt * 'data list * ('elt, 'data) tree * ('elt, 'data) tree * int (* * The tree is mutable * so that we can rearrange the tree in place. * However, we all splay operations are functional, * and we assume that the rearranged tree can be * assigned atomically to this field. *) type ('elt, 'data) table = ('elt, 'data) tree ref type ('elt, 'data) t = ('elt, 'data) table (* * Directions are used to define * paths in the tree. *) type ('elt, 'data) direction = Left of ('elt, 'data) tree | Right of ('elt, 'data) tree (* * Result of a splay operation. *) type ('elt, 'data) splay_result = SplayFound of ('elt, 'data) tree | SplayNotFound of ('elt, 'data) tree (* * Build the set from an ordered type. *) let create (ord_print : out_channel -> 'elt -> 'data list -> unit) (ord_compare : 'elt -> 'elt -> int) (ord_append : 'data list -> 'data list -> 'data list) = (* * Size of a table. *) let cardinality = function Node (_, _, _, _, size) -> size | Leaf -> 0 in let cardinal tree = cardinality !tree in (* * Add two nodes. *) let new_node key data left right = if data == [] then raise (Invalid_argument "Splay_table.new_node : empty data") else Node (key, data, left, right, cardinality left + cardinality right + 1) in (* * This function performs the action of moving an entry * to the root. The argument is the path to the entry. *) let rec lift key data left right = function [] -> new_node key data left right | [Left (Node (key', data', _, right', _))] -> new_node key data left (new_node key' data' right right') | [Right (Node (key', data', left', _, _))] -> new_node key data (new_node key' data' left' left) right | Left (Node (key_left, data_left, _, left_right, _)) :: Left (Node (key', data', _, right', _)) :: ancestors -> lift key data left (new_node key_left data_left right (new_node key' data' left_right right')) ancestors | Right (Node (key_right, data_right, right_left, _, _)) :: Right (Node (key', data', left', _, _)) :: ancestors -> lift key data (new_node key_right data_right (new_node key' data' left' right_left) left) right ancestors | Left (Node (key_right, data_right, _, right_right, _)) :: Right (Node (key', data', left', _, _)) :: ancestors -> lift key data (new_node key' data' left' left) (new_node key_right data_right right right_right) ancestors | Right (Node (key_left, data_left, left_left, _, _)) :: Left (Node (key', data', _, right', _)) :: ancestors -> lift key data (new_node key_left data_left left_left left) (new_node key' data' right right') ancestors | _ -> raise (Invalid_argument "lift") in (* * Find an entry in the tree. * Returns true iff the entry is found. * Transforms the tree so that either the * entry becomes the root, or an adjacent entry * becomes the root if the entry is not found. *) let rec splay key0 path = function Node (key, data, left, right, _) as node -> let comp = ord_compare key0 key in if comp = 0 then SplayFound (lift key data left right path) else if comp < 0 then (* node is down the left branch *) if left = Leaf then SplayNotFound (lift key data left right path) else splay key0 (Left node :: path) left else if right = Leaf then SplayNotFound (lift key data left right path) else splay key0 (Right node :: path) right | Leaf -> SplayNotFound Leaf in (* * Move the rioghtmost node to the root. *) let rec lift_right = function Node (key, data, left, Leaf, _) -> key, data, left | Node (key', data', left', Node (key, data, left, Leaf, _), _) -> key, data, new_node key' data' left' left | Node (key', data', left', Node (key_right, data_right, right_left, right, _), _) -> let key, data, left = lift_right right in key, data, new_node key_right data_right (new_node key' data' left' right_left) left | Leaf -> raise (Invalid_argument "lift_right") in (* * An empty tree is just a leaf. *) let empty = Leaf in let is_empty = function { contents = Leaf } -> true | _ -> false in let make key data = ref (Node (key, data, Leaf, Leaf, 1)) in (* * Get the elements of the list. *) let rec to_list_aux elements = function Node (key, data, left, right, _) -> to_list_aux ((key, data) :: to_list_aux elements right) left | Leaf -> elements in let to_list tree = to_list_aux [] !tree in let elements = to_list in (* * Build a table from a list. *) let rec of_array elements off len = if len = 0 then Leaf else if len = 1 then let key, data = elements.(off) in Node (key, data, Leaf, Leaf, 1) else if len = 2 then let key1, data1 = elements.(off) in let key0, data0 = elements.(succ off) in Node (key0, data0, Node (key1, data1, Leaf, Leaf, 1), Leaf, 2) else let len2 = len lsr 1 in let key0, data0 = elements.(off + len2) in Node (key0, data0, of_array elements off len2, of_array elements (off + len2 + 1) (len - len2 - 1), len) in let of_list elements = let tree = match elements with [] -> Leaf | [key, data] -> Node (key, data, Leaf, Leaf, 1) | elements -> let elements = Array.of_list elements in let length = Array.length elements in of_array elements 0 length in ref tree in (* * Check if a key is listed in the table. *) let mem t key = match splay key [] !t with SplayFound tree -> t := tree; true | SplayNotFound tree -> t := tree; false in let find t key = match splay key [] !t with SplayFound tree -> begin t := tree; match tree with Node (_, data :: _, _, _, _) -> data | _ -> raise (Invalid_argument "Splay_table.find") end | SplayNotFound tree -> t := tree; raise Not_found in let find_all t key = match splay key [] !t with SplayFound tree -> begin t := tree; match tree with Node (_, data, _, _, _) -> data | _ -> raise (Invalid_argument "Splay_table.find_all") end | SplayNotFound tree -> t := tree; [] in let add_list_aux key data = function Node (key', data', left, right, _) -> if ord_compare key key' < 0 then (* Root should become right child *) new_node key data left (new_node key' data' empty right) else (* Root should become left child *) new_node key data (new_node key' data' left empty) right | Leaf -> (* Tree is empty, so make a new root *) new_node key data empty empty in (* * Add an entry to the table. * If the entry already exists, * the new value is added to the data. *) let add_list tree key data = match splay key [] tree with SplayFound tree -> begin match tree with Node (key, data', left, right, size) -> Node (key, ord_append data data', left, right, size) | Leaf -> raise (Invalid_argument "Splay_table.add_list") end | SplayNotFound tree -> add_list_aux key data tree in let add t key data = ref (add_list !t key [data]) in (* * Remove the first entry from the hashtable. * If the value list becomes empty, remove the * entire entry from the tree. *) let remove t key = match splay key [] !t with SplayFound tree -> begin match tree with Node (_, [_], Leaf, right, _) -> ref right | Node (_, [_], left, Leaf, _) -> ref left | Node (_, [_], left, right, _) -> let key, data, left_left = lift_right left in ref (new_node key data left_left right) | Node (key, _ :: data, left, right, size) -> ref (Node (key, data, left, right, size)) | _ -> raise (Invalid_argument "Splay_table.remove") end | SplayNotFound tree -> t := tree; t in let replace t key data = match splay key [] !t with SplayFound tree -> begin match tree with Node (key, _, left, right, size) -> ref (Node (key, data, left, right, size)) | Leaf -> raise (Invalid_argument "Splay_table.replace: Leaf reached") end | SplayNotFound tree -> ref (add_list_aux key data tree) in (* * Merge two hashtables. * Data fields get concatenated. *) let rec union_aux s1 s2 = match s1, s2 with Leaf, _ -> s2 | _, Leaf -> s1 | Node (key1, data1, left1, right1, size1), Node (key2, data2, left2, right2, size2) -> if size1 >= size2 then if size2 = 1 then add_list s1 key2 data2 else match splay key1 [] s2 with SplayFound (Node (_, data2, left2, right2, _)) -> let left3 = union_aux left1 left2 in let right3 = union_aux right1 right2 in new_node key1 (ord_append data1 data2) left3 right3 | SplayNotFound (Node (key2, data2, left2, right2, _)) -> if compare key1 key2 < 0 then let left3 = union_aux left1 left2 in let right3 = union_aux right1 (new_node key2 data2 empty right2) in new_node key1 data1 left3 right3 else let left3 = union_aux left1 (new_node key2 data2 left2 empty) in let right3 = union_aux right1 right2 in new_node key1 data1 left3 right3 | _ -> raise (Invalid_argument "Splay_table.union") else if size1 = 1 then add_list s2 key1 data1 else match splay key2 [] s1 with SplayFound (Node (_, data1, left1, right1, _)) -> let left3 = union_aux left1 left2 in let right3 = union_aux right1 right2 in new_node key2 (ord_append data1 data2) left3 right3 | SplayNotFound (Node (key1, data1, left1, right1, _)) -> if compare key2 key1 < 0 then let left3 = union_aux left1 left2 in let right3 = union_aux (new_node key1 data1 empty right1) right2 in new_node key2 data2 left3 right3 else let left3 = union_aux (new_node key1 data1 left1 empty) left2 in let right3 = union_aux right1 right2 in new_node key2 data2 left3 right3 | _ -> raise (Invalid_argument "Splay_table.union") in let union s1 s2 = ref (union_aux !s1 !s2) in (* * Build a path into a tree. *) let rec initial_path path node = match node with Node (_, _, Leaf, _, _) -> Left node :: path | Node (_, _, left, _, _) -> initial_path (Left node :: path) left | Leaf -> raise (Invalid_argument "initial_path") in let key_of_path = function Left (Node (key, _, _, _, _)) :: _ | Right (Node (key, _, _, _, _)) :: _ -> key | _ -> raise (Invalid_argument "key_of_path") in let rec next_path = function Left (Node (_, _, _, Leaf, _)) :: path | Right _ :: path -> next_path path | Left (Node (_, _, _, right, _)) :: path -> initial_path path right | [] -> raise Not_found | _ -> raise (Invalid_argument "next_path") in (* * See if two sets intersect. *) let rec intersect_aux path1 path2 = let key1 = key_of_path path1 in let key2 = key_of_path path2 in let comp = ord_compare key1 key2 in if comp = 0 then true else if comp < 0 then intersect_aux (next_path path1) path2 else intersect_aux path1 (next_path path2) in let intersectp s1 s2 = match !s1, !s2 with Leaf, _ | _, Leaf -> false | s1, s2 -> let path1 = initial_path [] s1 in let path2 = initial_path [] s2 in try intersect_aux path1 path2 with Not_found -> false in (* * Iterate a function over the hashtable. *) let rec iter_aux f = function Node (key, data, left, right, _) -> List.iter (f key) data; iter_aux f left; iter_aux f right | Leaf -> () in let iter f t = iter_aux f !t in let rec fold_aux f acc = function Node (key, data, left, right, _) -> let acc' = List.fold_left (fun acc item -> f key item acc) acc data in let acc'' = fold_aux f acc' left in fold_aux f acc'' right | Leaf -> acc in let fold_map f acc t = fold_aux f acc !t in let rec list_of_aux table l = match table with Node (key, data, left, right, _) -> list_of_aux left ((key,data)::(list_of_aux right l)) | Leaf -> l in let list_of t = list_of_aux !t [] in (* * Map a function over the table. *) let rec map_aux f = function Node (key, data, left, right, size) -> Node (key, List.map (f key) data, map_aux f left, map_aux f right, size) | Leaf -> Leaf in let map f tree = ref (map_aux f !tree) in (* * Intersection. *) let rec mem_filt s = function [] -> [] | (h :: t) as l -> if mem s h then let rem = mem_filt s t in if rem == t then l else h :: rem else mem_filt s t in let rec not_mem_filt s = function [] -> [] | (h :: t) as l -> if mem s h then not_mem_filt s t else let rem = not_mem_filt s t in if rem == t then l else h :: rem in let rec fst_mem_filt s = function [] -> [] | (((v, _) as h) :: t) as l -> if mem s v then let rem = fst_mem_filt s t in if rem == t then l else h :: rem else fst_mem_filt s t in let deletemax t = let k,d,t'=lift_right !t in k,d,ref t' in (* * Debugging. *) let rec print_aux out = function Leaf -> fprintf out "@ Leaf" | Node (key, data, left, right, size) -> fprintf out "@ (@[%t:%d%a%a)@]" (**) (fun out -> ord_print out key data) size print_aux left print_aux right in let print out table = print_aux out !table in { empty = ref empty; is_empty = is_empty; mem = mem; add = add; replace = replace; find = find; find_all = find_all; make = make; remove = remove; union = union; elements = elements; iter = iter; fold_map = fold_map; map = map; cardinal = cardinal; mem_filt = mem_filt; not_mem_filt = not_mem_filt; intersectp = intersectp; of_list = of_list; list_of = list_of; deletemax = deletemax; print = print } module Create = struct type ('elt, 'data) t = ('elt, 'data) table let create = create end (* * Module version. *) module MakeTable (Base : TableBaseSig) = Lm_table_util.MakeTable (Create) (Base) (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rprintf.mli0000664000152300015230000001742210456222231021655 0ustar jyhjyh(* * Override the usual out_channels to use the Lm_buffer module. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Type t of buffers. *) type out_channel (* * Normal buffers. *) val stdout : out_channel val stderr : out_channel val stdstr : out_channel (* * Get the string from the stdstr channel. *) val flush_stdstr : unit -> string (* * Open new channels. *) val open_out : string -> out_channel val open_out_bin : string -> out_channel (* * Simple printing. *) val output_char : out_channel -> char -> unit val output_int : out_channel -> int -> unit val output_string : out_channel -> string -> unit val output_rbuffer : out_channel -> Lm_rformat.buffer -> unit (* * These functions are bad style for functional programs. *) val print_char : char -> unit val print_int : int -> unit val print_string : string -> unit val print_rbuffer : Lm_rformat.buffer -> unit val prerr_char : char -> unit val prerr_int : int -> unit val prerr_string : string -> unit val prerr_rbuffer : Lm_rformat.buffer -> unit (* * Flush the output. *) val flush : out_channel -> unit val eflush : out_channel -> unit (* * Printing. *) val eprintf : ('a, out_channel, unit) format -> 'a val printf : ('a, out_channel, unit) format -> 'a val sprintf : ('a, unit, string) format -> 'a val fprintf : out_channel -> ('a, out_channel, unit) format -> 'a val bprintf : Buffer.t -> ('a, out_channel, unit) format -> 'a (* * List printing helpers. *) val print_any_list : (out_channel -> 'a -> unit) -> out_channel -> 'a list -> unit val print_string_list : out_channel -> string list -> unit val print_int_list : out_channel -> int list -> unit (************************************************************************ * Formatter interface. *) (* * Boxes. *) val open_box : int -> unit val open_vbox : int -> unit val open_hbox : unit -> unit val open_hvbox : int -> unit val open_hovbox : int -> unit val close_box : unit -> unit (* * Formatting functions. *) val print_string : string -> unit val print_as : int -> string -> unit val print_int : int -> unit val print_float : float -> unit val print_char : char -> unit val print_bool : bool -> unit (* * Break hints. *) val print_space : unit -> unit val print_cut : unit -> unit val print_break : int -> int -> unit val print_flush : unit -> unit val print_newline : unit -> unit val force_newline : unit -> unit val print_if_newline : unit -> unit (* * Margin. *) val set_margin : int -> unit val get_margin : unit -> int (* * Indentation limit. *) val set_max_indent : int -> unit val get_max_indent : unit -> int (* * Formatting depth. *) val set_max_boxes : int -> unit val get_max_boxes : unit -> int val over_max_boxes : unit -> bool (* * Tabulations. *) val open_tbox : unit -> unit val close_tbox : unit -> unit val print_tbreak : int -> int -> unit val set_tab : unit -> unit val print_tab : unit -> unit (* * Ellipsis. *) val set_ellipsis_text : string -> unit val get_ellipsis_text : unit -> string (* * Redirecting formatter output. *) val set_formatter_out_channel : Pervasives.out_channel -> unit val set_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> unit val get_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) val set_all_formatter_output_functions : (string -> int -> int -> unit) -> (unit -> unit) -> (unit -> unit) -> (int -> unit) -> unit val get_all_formatter_output_functions : unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit) (* * Multiple formatted output. *) type formatter = out_channel val formatter_of_out_channel : Pervasives.out_channel -> formatter val std_formatter : formatter val err_formatter : formatter val str_formatter : formatter val stdbuf : Buffer.t val flush_str_formatter : unit -> string val formatter_of_buffer : Buffer.t -> formatter val make_formatter : (string -> int -> int -> unit) -> (unit -> unit) -> formatter val pp_open_hbox : formatter -> unit -> unit val pp_open_vbox : formatter -> int -> unit val pp_open_hvbox : formatter -> int -> unit val pp_open_hovbox : formatter -> int -> unit val pp_open_box : formatter -> int -> unit val pp_close_box : formatter -> unit -> unit val pp_print_string : formatter -> string -> unit val pp_print_as : formatter -> int -> string -> unit val pp_print_int : formatter -> int -> unit val pp_print_float : formatter -> float -> unit val pp_print_char : formatter -> char -> unit val pp_print_bool : formatter -> bool -> unit val pp_print_break : formatter -> int -> int -> unit val pp_print_cut : formatter -> unit -> unit val pp_print_space : formatter -> unit -> unit val pp_force_newline : formatter -> unit -> unit val pp_print_flush : formatter -> unit -> unit val pp_print_newline : formatter -> unit -> unit val pp_print_if_newline : formatter -> unit -> unit val pp_open_tbox : formatter -> unit -> unit val pp_close_tbox : formatter -> unit -> unit val pp_print_tbreak : formatter -> int -> int -> unit val pp_set_tab : formatter -> unit -> unit val pp_print_tab : formatter -> unit -> unit val pp_set_margin : formatter -> int -> unit val pp_get_margin : formatter -> unit -> int val pp_set_max_indent : formatter -> int -> unit val pp_get_max_indent : formatter -> unit -> int val pp_set_max_boxes : formatter -> int -> unit val pp_get_max_boxes : formatter -> unit -> int val pp_over_max_boxes : formatter -> unit -> bool val pp_set_ellipsis_text : formatter -> string -> unit val pp_get_ellipsis_text : formatter -> unit -> string val pp_set_formatter_out_channel : formatter -> Pervasives.out_channel -> unit val pp_set_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> unit val pp_get_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) val pp_set_all_formatter_output_functions : formatter -> (string -> int -> int -> unit) -> (unit -> unit) -> (unit -> unit) -> (int -> unit) -> unit val pp_get_all_formatter_output_functions : formatter -> unit -> (string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit) (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_dag_sig.ml0000664000152300015230000000611510464477010021420 0ustar jyhjyh(* * Imperative DAGs. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * This describes a relation between two nodes in a DAG. *) type relation = NoRelation | LessThan | Equal | GreaterThan (* * This signature is an imperative DAG. *) module type ImpDagSig = sig (* Abstract types *) type 'a t type 'a node (* Constructors *) val create : unit -> 'a t val insert : 'a t -> 'a -> 'a node val delete : 'a t -> 'a node -> unit val add_edge : 'a t -> 'a node -> 'a node -> unit val equate : 'a t -> 'a node -> 'a node -> unit (* Raw equality *) val eq : 'a node -> 'a node -> bool (* Graph operations *) val roots : 'a t -> 'a node list val node_value : 'a t -> 'a node -> 'a val node_out_edges : 'a t -> 'a node -> 'a node list val node_in_edges : 'a t -> 'a node -> 'a node list (* * Topological sort, from the leaves to the root. *) val sort : 'a t -> 'a node list (* * Compute relation between two nodes. * Roots are smaller. *) val node_rel : 'a t -> 'a node -> 'a node -> relation (* * Mappers. * Sweep_up maps a function up the DAG, calling on the leaves first; * it returns a list of the roots in the DAG * Sweep_down maps a function down the DAG, calling on the roots first; * it returns a list of the leaves in the DAG. * The _all versions are the same, except they return a list of all the nodes * that were swept. *) val sweep_up : 'a t -> ('a -> 'b list -> 'b) -> 'b list val sweep_down : 'a t -> ('a -> 'b list -> 'b) -> 'b list val sweep_up_all : 'a t -> ('a -> 'b list -> 'b) -> 'b list val sweep_down_all : 'a t -> ('a -> 'b list -> 'b) -> 'b list end (* * -*- * Local Variables: * Caml-master: "editor.top" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_small_set.mli0000664000152300015230000000310010464477010022146 0ustar jyhjyh(* * Overlay lists as small sets. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_set_sig module Make (Set : MinimalSetSig) : MinimalSetSig with type elt = Set.elt (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_set.ml0000664000152300015230000014711110464477010020620 0ustar jyhjyh(* * Build a set using a red-black tree. * Every node in the tree is colored either black or red. * A red-black tree has the following invariants: * 1. Every leaf is colored black * 2. All children of every red node are black. * 3. Every path from the root to a leaf has the * same number of black nodes as every other path. * 4. The root is always black. * * We get some corollaries: * 1. The longest path from the root to a leaf is * at most twice as long as the shortest path. * 2. Both children of a red node are either leaves, * or they are both not. * * This code is meant to be fast, so all the cases have * been expanded, and the insert and delete functions are * long (12 cases for insert, 18 for delete in lift_black). * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_printf open Lm_set_sig (* * Make the set. *) module LmMake (Ord : OrderedType) = struct (************************************************************************ * TYPES * ************************************************************************) type elt = Ord.t (* * Table is a binary tree. * Color is kept in the label to save space. *) (* %%MAGICBEGIN%% *) type tree = Leaf | Red of elt * tree * tree * int | Black of elt * tree * tree * int (* %%MAGICEND%% *) (* * The tree is always balanced, so we don't need * extra mutable fields. *) type t = tree (* * Path into the tree. *) type path = Left of tree | Right of tree | Delete of tree (* * Exception for unchanged tree during insertion. *) exception Unchanged (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Size of a table. *) let cardinality = function Red (_, _, _, size) | Black (_, _, _, size) -> size | Leaf -> 0 (* * Add two nodes. *) let new_black key left right = Black (key, left, right, cardinality left + cardinality right + 1) let new_red key left right = Red (key, left, right, cardinality left + cardinality right + 1) (************************************************************************ * DEBUGGING * ************************************************************************) (* * Print the tree. *) let rec pp_print_tree out tree = match tree with Black (_, left, right, size) -> fprintf out "@[Black(%d):@ %a@ %a@]" size pp_print_tree left pp_print_tree right | Red (_, left, right, size) -> fprintf out "@[Red(%d):@ %a@ %a@]" size pp_print_tree left pp_print_tree right | Leaf -> fprintf out "Leaf" let print_tree = pp_print_tree stdout (* * Check the size of the set. *) let check_size tree = let abort tree' = printf "%a@\n%a@\n" pp_print_tree tree pp_print_tree tree'; raise (Invalid_argument "check_size") in let rec check tree = match tree with Black (_, left, right, size) -> if size <> check left + check right + 1 then abort tree; size | Red (_, left, right, size) -> if size <> check left + check right + 1 then abort tree; size | Leaf -> 0 in check tree (* * Check the red-invariant. *) let rec check_red = function Red (_, Red _, _, _) | Red (_, _, Red _, _) -> raise (Failure "Lm_set.check_red") | Red (_, left, right, _) | Black (_, left, right, _) -> check_red left; check_red right | Leaf -> () (* * Check the black invariant. *) let rec black_depth i = function Black (_, left, _, _) -> black_depth (succ i) left | Red (_, left, _, _) -> black_depth i left | Leaf -> i let rec check_black_aux i j = function Black (_, left, right, _) -> check_black_aux i (succ j) left; check_black_aux i (succ j) right | Red (_, left, right, _) -> check_black_aux i j left; check_black_aux i j right | Leaf -> if j <> i then raise (Failure "Lm_set.check_black") let check_black tree = check_black_aux (black_depth 0 tree) 0 tree (* * Check that all the nodes are sorted. *) let rec check_sort_lt key = function Black (key', left, right, _) | Red (key', left, right, _) -> if Ord.compare key' key >= 0 then raise (Failure "Lm_set.check_sort"); check_sort_lt key' left; check_sort_gt_lt key' key right | Leaf -> () and check_sort_gt key = function Black (key', left, right, _) | Red (key', left, right, _) -> if Ord.compare key' key <= 0 then raise (Failure "Lm_set.check_sort"); check_sort_gt_lt key key' left; check_sort_gt key right | Leaf -> () and check_sort_gt_lt key key' = function Black (key'', left, right, _) | Red (key'', left, right, _) -> if Ord.compare key'' key <= 0 || Ord.compare key'' key' >= 0 then raise (Failure "Lm_set.check_sort"); check_sort_gt_lt key key'' left; check_sort_gt_lt key'' key' right | Leaf -> () let check_sort = function Black (key, left, right, _) -> check_sort_lt key left; check_sort_gt key right | Red _ -> raise (Failure "Lm_set.check_sort: root is red") | Leaf -> () (* * Perform all the checks. *) let check tree = let _ = check_red tree; check_black tree; check_sort tree; check_size tree in tree (************************************************************************ * INSERTION * ************************************************************************) (* * Insert an entry into the tree. *) let rec insert key = function Black (key0, left0, right0, size0) -> begin let comp = Ord.compare key key0 in if comp = 0 then raise Unchanged else if comp < 0 then match left0 with Black _ | Leaf -> (* * Ok even if child becomes red. *) Black (key0, insert key left0, right0, succ size0) | Red (key1, left1, right1, size1) -> let comp = Ord.compare key key1 in if comp = 0 then raise Unchanged else if comp < 0 then match insert key left1, right0 with Red _ as node, Red (key2, left2, right2, size2) -> (* * Recoloring: * * key0:b key0:r * / \ / \ * key1:r key2:r key1:b key2:b * / \ / \ * key2:r right1 key2:r right1 *) Red (key0, Black (key1, node, right1, succ size1), Black (key2, left2, right2, size2), succ size0) | Red _ as node, _ -> (* * Rotation: * * key0:b key1:b * / \ / \ * key1:r key2:b key3:r key0:b * / \ / \ * key3:r right1 right1 key2:r *) Black (key1, node, new_red key0 right1 right0, succ size0) | node, _ -> (* * Inline: * * key0:b key0:b * / \ / \ * key1:r key2 key1:r key2 * / \ / \ * key3:b right1 key3:b right1 *) Black (key0, new_red key1 node right1, right0, succ size0) else match insert key right1, right0 with Red _ as node, Red (key2, left2, right2, size2) -> (* * Recoloring: * * key0:b key0:r * / \ / \ * key1:r key2:r key1:b key2:b * / \ / \ * left1 node:r left1 node:r *) Red (key0, Black (key1, left1, node, succ size1), Black (key2, left2, right2, size2), succ size0) | Red (key3, left3, right3, _), _ -> (* * Rotation: * * key0:b key3:b * / \ / \ * key1:r right0 key1:r key0:r * / \ / \ / \ * left1 key3:r left1 left3 right3 right0 * / \ * left3 right3 *) Black (key3, new_red key1 left1 left3, new_red key0 right3 right0, succ size0) | node3, _ -> (* * Inline: * * key0:b * / \ * key1:r right0 * / \ * left1 node3:b *) Black (key0, new_red key1 left1 node3, right0, succ size0) else (* comp > 0 *) match right0 with Black _ | Leaf -> (* * Node can be replaced even if it becomes red. *) Black (key0, left0, insert key right0, succ size0) | Red (key2, left2, right2, size2) -> let comp = Ord.compare key key2 in if comp = 0 then raise Unchanged else if comp < 0 then match left0, insert key left2 with Red (key1, left1, right1, size1), (Red _ as node) -> (* * Recoloring: * * key0:b key0:r * / \ / \ * key1:r key2:r key1:b key2:b * / \ / \ * node:r right2 node:r right2 *) Red (key0, Black (key1, left1, right1, size1), Black (key2, node, right2, succ size2), succ size0) | _, Red (key3, left3, right3, _) -> (* * Rotate: * * key0:b key3:b * / \ / \ * key1:b key2:r key0:r key2:r * / \ / \ / \ * key3:r right2 left0 left3 right3 right2 * / \ * left3 right3 *) Black (key3, new_red key0 left0 left3, new_red key2 right3 right2, succ size0) | _, node3 -> (* * Inline: * * key0:b * / \ * left0 key2:r * / \ * key3:b right2 *) Black (key0, left0, new_red key2 node3 right2, succ size0) else match left0, insert key right2 with Red (key1, left1, right1, size1), (Red _ as node) -> (* * Recoloring: * * key0:b key0:r * / \ / \ * key1:r key2:r key1:b key2:b * / \ / \ * left2 node:r left2 node:r *) Red (key0, Black (key1, left1, right1, size1), Black (key2, left2, node, succ size2), succ size0) | _, (Red _ as node) -> (* * Rotation: * * key0:b key2:b * / \ / \ * left0:b key2:r key0:r node:r * / \ / \ * left2 node:r left0:b left2 *) Black (key2, new_red key0 left0 left2, node, succ size0) | _, node3 -> (* * Inline: * * key0:b * / \ * left0:b key2:r * / \ * left2 node3:b *) Black (key0, left0, new_red key2 left2 node3, succ size0) end | Leaf -> (* Leaf is colored red *) Red (key, Leaf, Leaf, 1) | (Red _) -> (* Red nodes will not come up *) raise (Invalid_argument "Lm_set.insert") (* let insert key tree = try insert key tree with (Invalid_argument _) as exn -> print tree; print_newline (); raise exn *) (* * Add an element to the set. *) let add t key = match t with Leaf -> Black (key, Leaf, Leaf, 1) | node -> try match insert key node with Red (key, left, right, size) -> Black (key, left, right, size) | tree -> tree with Unchanged -> node let add_list set keys = List.fold_left add set keys (************************************************************************ * REMOVAL * ************************************************************************) (* * Construct a path during the removal. *) let rec delete key path node = match node with Black (key', left, right, _) -> let comp = Ord.compare key key' in if comp = 0 then match left, right with Leaf, Leaf -> lift_black key path Leaf | Red (key, left, right, size), Leaf -> lift key path (Black (key, left, right, size)) | _ -> delete_min (Delete node :: path) right else if comp < 0 then delete key (Left node :: path) left else delete key (Right node :: path) right | Red (key', left, right, _) -> let comp = Ord.compare key key' in if comp = 0 then match right with Leaf -> lift key path Leaf | _ -> delete_min (Delete node :: path) right else if comp < 0 then delete key (Left node :: path) left else delete key (Right node :: path) right | Leaf -> raise Not_found and delete_min path node = match node with Black (key, Leaf, Leaf, _) -> lift_black key path Leaf | Black (key, Leaf, Red (key', left, right, size), _) -> lift key path (Black (key', left, right, size)) | Red (key, Leaf, Leaf, _) -> lift key path Leaf | Black (_, left, _, _) -> delete_min (Left node :: path) left | Red (_, left, _, _) -> delete_min (Left node :: path) left | Leaf -> raise Not_found (* * Copy the tree with no need to propagate black. *) and lift key path node = match path, node with Left (Black (key0, _, right0, size0)) :: path, left -> lift key path (Black (key0, left, right0, pred size0)) | Left (Red (key0, _, right0, size0)) :: path, left -> lift key path (Red (key0, left, right0, pred size0)) | Right (Black (key0, left0, _, size0)) :: path, right -> lift key path (Black (key0, left0, right, pred size0)) | Right (Red (key0, left0, _, size0)) :: path, right -> lift key path (Red (key0, left0, right, pred size0)) | Delete (Black (_, left0, _, size0)) :: path, right -> lift key path (Black (key, left0, right, pred size0)) | Delete (Red (_, left0, _, size0)) :: path, right -> lift key path (Red (key, left0, right, pred size0)) | [], node -> node | Left Leaf :: _, _ | Right Leaf :: _, _ | Delete Leaf :: _, _ -> raise (Invalid_argument "lift") (* * Propagate the extra black up the tree. *) and lift_black key path node = match path, node with Left (Black (key0, _, right0, size0)) :: path, left -> begin match right0 with Black (key2, left2, right2, size2) -> begin match left2, right2 with _, Red (key3, left3, right3, size3) -> (* * key0:b key2:b * / \ / \ * left:bb key2:b key0:b right2:b * / \ / \ * left2 right2:r left:b left2 *) lift key path (**) (Black (key2, new_black key0 left left2, Black (key3, left3, right3, size3), pred size0)) | Red (key3, left3, right3, _), _ -> (* * key0:b key3:b * / \ / \ * left:bb key2:b key0:b key2:b * / \ / \ / \ * key3:r right2:b left:b left3 right3 right2:b * / \ * left3 right3 *) lift key path (**) (Black (key3, new_black key0 left left3, new_black key2 right3 right2, pred size0)) | _ -> (* * key0:b key0:bb * / \ / \ * left:bb key2:b left:b key2:r * / \ / \ * left2:b right2:b left2:b right2:b *) lift_black key path (**) (Black (key0, left, Red (key2, left2, right2, size2), pred size0)) end | Red (key2, left2, right2, _) -> begin match left2 with Black (key3, Red (key4, left4, right4, _), d, _) -> (* * key0:b key2:b * / \ / \ * left:bb key2:r key4:r right2:b * / \ / \ * key3:b right2:b key0:b key3:b * / \ / \ / \ * key4:r d left:b left4 right4 d * / \ * left4 right4 *) lift key path (**) (Black (key2, new_red key4 (**) (new_black key0 left left4) (new_black key3 right4 d), right2, pred size0)) | Black (key3, c, Red (key4, left4, right4, size4), _) -> (* * key0:b key2:b * / \ / \ * left:bb key2:r key3:r right2 * / \ / \ * key3:b right2 key0:b key4:b * / \ / \ * c key4:r left:b c *) lift key path (**) (Black (key2, new_red key3 (**) (new_black key0 left c) (Black (key4, left4, right4, size4)), right2, pred size0)) | Black (key3, c, d, _) -> (* * key0:b key2:b * / \ / \ * left:bb key2:r key0:b right2:b * / \ / \ * key3:b right2:b left:b key3:r * / \ / \ * c:b d:b c:b d:b *) lift key path (**) (Black (key2, new_black key0 left (new_red key3 c d), right2, pred size0)) | Red _ | Leaf -> raise (Invalid_argument "lift_black1") end | Leaf -> raise (Invalid_argument "lift_black2") end | Right (Black (key0, left0, _, size0)) :: path, right -> begin match left0 with Black (key1, left1, right1, size1) -> begin match left1, right1 with Red (key3, left3, right3, size3), _ -> (* * key0:b key1:b * / \ / \ * key1:b right:bb left1:b key0:b * / \ / \ * left1:r right1 right1 right:b *) lift key path (**) (Black (key1, Black (key3, left3, right3, size3), new_black key0 right1 right, pred size0)) | _, Red (key3, left3, right3, _) -> (* * key0:b key3:b * / \ / \ * key1:b right:bb key1:b key0:b * / \ / \ / \ * left1:b key3:r left1:b left3 right3 right * / \ * left3 right3 *) lift key path (**) (Black (key3, new_black key1 left1 left3, new_black key0 right3 right, pred size0)) | _ -> (* * key0:b key0:bb * / \ / \ * key1:b right:bb key1:r right:bb * / \ / \ * left1:b right1:b left1:b right1:b *) lift_black key path (**) (Black (key0, Red (key1, left1, right1, size1), right, pred size0)) end | Red (key1, left1, right1, _) -> begin match right1 with Black (key3, d, Red (key4, left4, right4, _), _) -> (* * key0:b key1:b * / \ / \ * key1:r right:bb left1:b key4:r * / \ / \ * left1:b key3:b key3:b key0:b * / \ / \ / \ * d key4:r d left4 right4 right:b * / \ * left4 right4 *) lift key path (**) (Black (key1, left1, new_red key4 (**) (new_black key3 d left4) (new_black key0 right4 right), pred size0)) | Black (key3, Red (key4, left4, right4, size4), c, _) -> (* * key0:b key1:b * / \ / \ * key1:r right:bb left1 key3:r * / \ / \ * left1 key3:b key4:b key0:b * / \ / \ * key4:r c c right:b *) lift key path (**) (Black (key1, left1, new_red key3 (**) (Black (key4, left4, right4, size4)) (new_black key0 c right), pred size0)) | Black (key3, c, d, size3) -> (* * key0:b key1:b * / \ / \ * key1:r right:bb left1 key0:b * / \ / \ * left1 key3:b key3:r right:b * / \ / \ * c:b d:b c:b d:b *) lift key path (**) (Black (key1, left1, new_black key0 (Red (key3, c, d, size3)) right, pred size0)) | Red _ | Leaf -> raise (Invalid_argument "lift_black3") end | Leaf -> raise (Invalid_argument "lift_black4") end | Left (Red (key0, _, right0, size0)) :: path, left -> begin match right0 with Black (key2, left2, right2, size2) -> begin match left2, right2 with _, Red (key3, left3, right3, size3) -> (* * key0:r key2:r * / \ / \ * left:bb key2:b key0:b right2:b * / \ / \ * left2:b right2:r left:b left2:b *) lift key path (**) (Red (key2, new_black key0 left left2, Black (key3, left3, right3, size3), pred size0)) | Red (key3, left3, right3, _), _ -> (* * key0:r key3:b * / \ / \ * left:bb key2:b key0:r key2:r * / \ / \ / \ * key3:r right2 left:b left3 right3 right2 * / \ * left3 right3 *) lift key path (**) (Black (key3, new_red key0 left left3, new_red key2 right3 right2, pred size0)) | _ -> (* * key0:r key0:b * / \ / \ * left:bb key2:b left:b key2:r * / \ / \ * left2:b right2:b left2:b right2:b *) lift key path (**) (Black (key0, left, Red (key2, left2, right2, size2), pred size0)) end | Red _ | Leaf -> raise (Invalid_argument "lift_black5") end | Right (Red (key0, left0, _, size0)) :: path, right -> begin match left0 with Black (key1, left1, right1, size1) -> begin match left1, right1 with Red (key3, left3, right3, size3), _ -> (* * key0:r key1:r * / \ / \ * key1:b right:bb left1:b key0:b * / \ / \ * left1:r right1 right1 right:b *) lift key path (**) (Red (key1, Black (key3, left3, right3, size3), new_black key0 right1 right, pred size0)) | _, Red (key3, left3, right3, _) -> (* * key0:r key3:b * / \ / \ * key1:b right:bb key1:r key0:r * / \ / \ / \ * left1 key3:r left1 left3 right3 right:b * / \ * left3 right3 *) lift key path (**) (Black (key3, new_red key1 left1 left3, new_red key0 right3 right, pred size0)) | _ -> (* * key0:r key0:b * / \ / \ * key1:b right:bb key1:r right:b * / \ / \ * left1:b right1:b left1:b right1:b *) lift key path (**) (Black (key0, Red (key1, left1, right1, size1), right, pred size0)) end | Red _ | Leaf -> raise (Invalid_argument "lift_black6") end | Delete (Black (_, left0, right0, size0)) :: path, node -> lift_black key (Right (Black (key, left0, right0, size0)) :: path) node | Delete (Red (_, left0, right0, size0)) :: path, node -> lift_black key (Right (Red (key, left0, right0, size0)) :: path) node | [], node -> node | Left Leaf :: _, _ | Right Leaf :: _, _ | Delete Leaf :: _, _ -> raise (Invalid_argument "lift_black7") (* * Remove the item. *) let remove tree key = try delete key [] tree with Not_found -> tree let subtract_list tree keys = List.fold_left remove tree keys (************************************************************************ * UNION & INTERSECTION * ************************************************************************) (* * Get the elements of the list. *) let rec to_list_aux elements = function Black (key, left, right, _) | Red (key, left, right, _) -> to_list_aux (key :: to_list_aux elements right) left | Leaf -> elements let to_list = to_list_aux [] let elements = to_list let rec reverse elements = function h :: t -> reverse (h :: elements) t | [] -> elements let rec merge elements elements1 elements2 = match elements1, elements2 with key1 :: tl1, key2 :: tl2 -> let comp = Ord.compare key1 key2 in if comp = 0 then merge (key1 :: elements) tl1 tl2 else if comp < 0 then merge (key1 :: elements) tl1 elements2 else merge (key2 :: elements) elements1 tl2 | _, [] -> reverse elements1 elements | [], _ -> reverse elements2 elements (* * Log of a number. *) let rec log2 i x = if 1 lsl i >= x then i else log2 (succ i) x (* * Build a set from a list. *) let rec log2 i j = if 1 lsl i >= j then i else log2 (succ i) j let rec of_sorted_array depth max_depth elements off len = if len = 1 then if depth = max_depth then Red (elements.(off), Leaf, Leaf, 1) else Black (elements.(off), Leaf, Leaf, 1) else if len = 2 then Black (elements.(off + 1), Red (elements.(off), Leaf, Leaf, 1), Leaf, 2) else let len2 = len lsr 1 in Black (elements.(off + len2), of_sorted_array (succ depth) max_depth elements off len2, of_sorted_array (succ depth) max_depth elements (off + len2 + 1) (len - len2 - 1), len) let of_sorted_list = function [] -> Leaf | [key] -> Black (key, Leaf, Leaf, 1) | elements -> let elements = Array.of_list elements in let length = Lm_array_util.distinct compare elements in let max_depth = pred (log2 1 (succ length)) in of_sorted_array 0 max_depth elements 0 length (* * Convert to a list. *) let rec to_list_aux l = function Black (key, left, right, _) | Red (key, left, right, _) -> to_list_aux (key :: to_list_aux l right) left | Leaf -> l let to_list t = to_list_aux [] t (* * Union flattens the two trees, * merges them, then creates a new tree. *) let rec union_aux s1 = function Black (key, left, right, _) | Red (key, left, right, _) -> union_aux (add (union_aux s1 left) key) right | Leaf -> s1 let union s1 s2 = let size1 = cardinality s1 in let size2 = cardinality s2 in if size1 < size2 then union_aux s2 s1 else union_aux s1 s2 (* * See if two sets intersect. *) let rec intersect_aux elems1 elems2 = match elems1, elems2 with elem1 :: elems1', elem2 :: elems2' -> let comp = Ord.compare elem1 elem2 in if comp = 0 then true else if comp < 0 then intersect_aux elems1' elems2 else intersect_aux elems1 elems2' | [], _ | _, [] -> false let intersectp s1 s2 = intersect_aux (to_list s1) (to_list s2) (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Search without reorganizing the tree. *) let rec mem t key = match t with Black (key', left, right, _) | Red (key', left, right, _) -> let comp = Ord.compare key key' in if comp = 0 then true else if comp < 0 then mem left key else mem right key | Leaf -> false (* * An empty tree is just a leaf. *) let empty = Leaf let is_empty = function Leaf -> true | _ -> false let singleton key = Black (key, Leaf, Leaf, 1) let of_list l = List.fold_left (fun set item -> add set item) empty l (* * Iterate a function over the hashtable. *) let rec iter f = function Black (key, left, right, _) | Red (key, left, right, _) -> iter f left; f key; iter f right | Leaf -> () (* * Fold a function over the subrange of the set *) let rec range_fold range f arg = function Black (key, left, right, _) | Red (key, left, right, _) -> let c = range key in if c > 0 then range_fold range f arg right else if c < 0 then range_fold range f arg left else let arg = range_fold range f arg left in let arg = f arg key in range_fold range f arg right | Leaf -> arg (* * Fold a function over the set. *) let rec fold f arg = function Black (key, left, right, _) | Red (key, left, right, _) -> let arg = fold f arg left in let arg = f arg key in fold f arg right | Leaf -> arg (* * Equality of sets. *) let rec equal set1 set2 = if cardinality set1 = cardinality set2 then let list1 = to_list set1 in let list2 = to_list set2 in List.for_all2 (fun x y -> Ord.compare x y = 0) list1 list2 else false (* * BUG: these functions are too slow! * Could be much more optimized. *) let filter pred s = fold (fun s' x -> if pred x then add s' x else s') empty s let inter s1 s2 = let size1 = cardinality s1 in let size2 = cardinality s2 in let s1, s2 = if size1 < size2 then s1, s2 else s2, s1 in fold (fun s3 x -> if mem s2 x then add s3 x else s3) empty s1 let partition pred s = fold (fun (s1, s2) x -> if pred x then add s1 x, s2 else s1, add s2 x) (empty, empty) s let rec diff s = function Black (key, left, right, _) | Red (key, left, right, _) -> let s = remove s key in let s = diff s left in diff s right | Leaf -> s let rec subset s1 s2 = match s1 with Black (key, left, right, _) | Red (key, left, right, _) -> mem s2 key && subset left s2 && subset right s2 | Leaf -> true let is_subset = subset let compare s1 s2 = let rec compare s1 s2 = match s1, s2 with x1 :: s1, x2 :: s2 -> let cmp = Ord.compare x1 x2 in if cmp = 0 then compare s1 s2 else cmp | [], [] -> 0 | [], _ :: _ -> -1 | _ :: _, [] -> 1 in compare (to_list s1) (to_list s2) (* * Choice. *) let rec min_elt = function Black (key, Leaf, _, _) | Red (key, Leaf, _, _) -> key | Black (_, left, _, _) | Red (_, left, _, _) -> min_elt left | Leaf -> raise Not_found let rec max_elt = function Black (key, _, Leaf, _) | Red (key, _, Leaf, _) -> key | Black (_, _, right, _) | Red (_, _, right, _) -> max_elt right | Leaf -> raise Not_found let choose = min_elt (* * Predicates. *) let rec for_all pred = function Black (key, left, right, _) | Red (key, left, right, _) -> pred key && for_all pred left && for_all pred right | Leaf -> true let rec exists pred = function Black (key, left, right, _) | Red (key, left, right, _) -> pred key || exists pred left || exists pred right | Leaf -> false (* * Width. *) let cardinal = cardinality (* * Filtering operations. *) let rec mem_filt s = function [] -> [] | (h :: t) as l -> if mem s h then let rem = mem_filt s t in if rem == t then l else h :: rem else mem_filt s t let rec not_mem_filt s = function [] -> [] | (h :: t) as l -> if mem s h then not_mem_filt s t else let rem = not_mem_filt s t in if rem == t then l else h :: rem let rec fst_mem_filt s = function [] -> [] | (((v, _) as h) :: t) as l -> if mem s v then let rem = fst_mem_filt s t in if rem == t then l else h :: rem else fst_mem_filt s t end module LmMakeDebug (Ord : OrderedTypeDebug) = struct module XSet = LmMake (Ord) include XSet (* * Print the tree. *) let rec pp_print out tree = fprintf out "@ "; match tree with Black (key, left, right, size) -> fprintf out "(@[Black@ %a:%d %a %a)@]" (**) Ord.print key size pp_print left pp_print right | Red (key, left, right, size) -> fprintf out "(@[Red@ %a:%d %a %a)@]" (**) Ord.print key size pp_print left pp_print right | Leaf -> output_string out "Leaf" let print = pp_print end module Make (Ord : OrderedType) : S with type elt = Ord.t = struct module XSet = LmMake (Ord) include XSet let mem x s = XSet.mem s x let add x s = XSet.add s x let remove x s = XSet.remove s x let fold f s x = XSet.fold (fun x y -> f y x) x s let partition f s = fst (XSet.partition f s) end (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_pool_null.ml0000664000152300015230000000437110456222231023351 0ustar jyhjyh(* * On Win32, select does not work on pipes. Instead, we use * threads to call all the handlers. We keep a thread pool. * When a thread makes progress, it wakes up the main process, * and returns to the pool. Each file descriptor is assigned * a thread. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_debug (* * Build debugging. *) let debug_thread = create_debug (**) { debug_name = "thread"; debug_description = "Display thread debugging"; debug_value = false } (* * Threads are not enabled. *) let enabled = false (* * Temporarily unlock the pool while performing IO. *) let blocking_section f x = f x let resume_inner_section f x = f x (* * Start a thread doing something. *) let create _ = raise (Invalid_argument "Lm_thread_pool_null.create: threads are not enabled") (* * Wait until something happens. *) let wait () = raise (Invalid_argument "Lm_thread_pool_null.wait: threads are not enabled") let waitpid _ = raise (Invalid_argument "Lm_thread_pool_null.waitpid: threads are not enabled") (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_string_set.mli0000664000152300015230000000325510456222231022351 0ustar jyhjyh(* * Sets of strings. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_set_sig open Lm_map_sig (* * String environments. *) module StringSet : LmSet with type elt = string module StringTable : LmMap with type key = string module StringMTable : LmMapList with type key = string (* * String environments with lexicographical ordering. *) module LexStringSet : LmSet with type elt = string module LexStringTable : LmMap with type key = string module LexStringMTable : LmMapList with type key = string (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_test.mli0000664000152300015230000000254510456222231021150 0ustar jyhjyh(* * File for testing. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) module type XSig = sig type t1 type t2 val x : t1 end module type YSig = sig type t1 val x : t1 end module X (Y : XSig) : YSig with type t1 = Y.t1 (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_splay.ml0000664000152300015230000000767110322060244021151 0ustar jyhjyh(* General splaying operations on ordered trees * Geoffrey Irving * $Id: lm_splay.ml 7878 2005-10-09 00:13:24Z jyh $ *) (************************************** types *) type 'a tree = Leaf | Node of 'a tree * 'a * 'a tree (* cut x is <, =, or > 0 depending on whether a <, =, or > x, for some a *) type 'a cut = 'a -> int (************************************** general top down splaying *) (* Top-down splay routine. Reference: * "Self-adjusting Binary Search Trees", Sleator and Tarjan, * JACM Volume 32, No 3, July 1985, pp 652-686. * See page 668 for specific splay transformations *) (* This code takes a cut and an expanded node and returns the splayed * tree as an expanded node. *) let rec splay cut l x r = let c = cut x in if c == 0 then l, x, r (*** success ***) else if c < 0 then match l with Leaf -> Leaf, x, r (*** trivial ***) | Node (ll, y, lr) -> let cc = cut y in if cc == 0 then ll, y, Node (lr, x, r) (*** zig ***) else if cc < 0 then match ll with Leaf -> Leaf, y, Node (lr, x, r) (*** zig ***) | Node (lll, z, llr) -> let left, mid, right = splay cut lll z llr in left, mid, Node (right, y, Node (lr, x, r)) (*** zig-zig ***) else (* cc > 0 *) match lr with Leaf -> ll, y, Node (Leaf, x, r) (*** zig ***) | Node (lrl, z, lrr) -> let left, mid, right = splay cut lrl z lrr in Node (ll, y, left), mid, Node (right, x, r) (*** zig-zag ***) else (* c > 0 *) match r with Leaf -> l, x, Leaf (*** trivial ***) | Node (rl, y, rr) -> let cc = cut y in if cc == 0 then Node (l, x, rl), y, rr (*** zig ***) else if cc > 0 then match rr with Leaf -> Node (l, x, rl), y, Leaf (*** zig ***) | Node (rrl, z, rrr) -> let left, mid, right = splay cut rrl z rrr in Node (Node (l, x, rl), y, left), mid, right (*** zig-zig ***) else (* cc < 0 *) match rl with Leaf -> Node (l, x, Leaf), y, rr (*** zig ***) | Node (rll, z, rlr) -> let left, mid, right = splay cut rll z rlr in Node (l, x, left), mid, Node (right, y, rr) (*** zig-zag ***) (************************************** special cases of splaying *) (* intuitively, splay_max = splay (fun _ -> 1) *) (* splays maximum element to the top, returns left, max (right is Leaf) *) let rec splay_max l x r = match r with Leaf -> l, x (*** trivial ***) | Node (rl, y, Leaf) -> Node (l, x, rl), y (*** zig ***) | Node (rl, y, Node (rrl, z, rrr)) -> let left, mid = splay_max rrl z rrr in Node (Node (l, x, rl), y, left), mid (*** zig-zig ***) (* splays minimum element to the top, returns min, right (left is Leaf) *) let rec splay_min l x r = match l with Leaf -> x, r (*** trivial ***) | Node (Leaf, y, lr) -> y, Node (lr, x, r) (*** zig ***) | Node (Node (lll, z, llr), y, lr) -> let mid, right = splay_min lll z llr in mid, Node (right, y, Node (lr, x, r)) (*** zig-zig ***) omake-0.9.8.5/src/libmojave-external/stdlib/lm_large_array.ml0000664000152300015230000001003410464477010022306 0ustar jyhjyh(* * This is an array that can be larger than * the default OCaml arrays. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) module LargeArray = struct (* * Two-level array. *) type 'a t = { array_default : 'a; mutable array_shift : int; mutable array_mask : int; mutable array_length : int; mutable array_buckets : 'a array array } (* * Maximum minor size. *) let max_shift = Lm_int_util.log2 Sys.max_array_length let max_length = 1 lsl max_shift (* * Create an empty array. *) let create x = { array_default = x; array_shift = 0; array_mask = 0; array_length = 0; array_buckets = Array.create 1 [||] } (* * Return the length. *) let length { array_length = length } = length (* * Expand the array. *) let expand info i = let buckets = info.array_buckets in let x = info.array_default in let log = succ (Lm_int_util.log2 i) in let length = 1 lsl log in if log <= max_shift then let new_array = Array.create length x in let old_array = buckets.(0) in Array.blit old_array 0 new_array 0 (Array.length old_array); info.array_shift <- log; info.array_mask <- (1 lsl log) - 1; info.array_length <- 1 lsl log; buckets.(0) <- new_array else begin (* Possibly expand the first array to max_length *) (if info.array_length < max_length then let new_array = Array.create max_length x in let old_array = buckets.(0) in Array.blit old_array 0 new_array 0 (Array.length old_array); buckets.(0) <- new_array); (* Now expand the major level *) let count = (i + max_length - 1) lsr max_shift in let new_buckets = Array.create count buckets.(0) in let old_length = Array.length buckets in Array.blit buckets 0 new_buckets 0 old_length; for i = old_length to pred count do new_buckets.(i) <- Array.create max_length x done; info.array_shift <- max_shift; info.array_mask <- pred max_length; info.array_length <- count * max_length; info.array_buckets <- new_buckets end (* * Store a value in the array. *) let set info i x = if i > info.array_length then expand info i else info.array_buckets.(i lsr info.array_shift).(i land info.array_mask) <- x (* * Get a value in the array. *) let get info i = if i > info.array_length then raise (Invalid_argument "LargeArray.get"); info.array_buckets.(i lsr info.array_shift).(i land info.array_mask) end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_debug.ml0000664000152300015230000002617110464477010021115 0ustar jyhjyh(* * Debugging utilities. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Printf (************************************************************************ * TYPES * ************************************************************************) (* * Info needed for a debug variable. *) type debug_info = { debug_name : string; debug_description : string; debug_value : bool } (* * Info about variables. *) type info = { info_name : string; mutable info_info : string option; info_flag : bool ref } (************************************************************************ * BASIC ************************************************************************) (* * Perform debugging? * Set this function to false to disable all debugging. *) let debug_enabled = true let debug flag = debug_enabled && !flag let debug_level flag i = debug_enabled && !flag >= i (************************************************************************ * DEBUG * ************************************************************************) (* * Initial info is empty. *) let info = ref [] (* * Description of debug flags added from the command line. *) let default_description = "Unitialized debug flag" (* * C debugging functions. external ml_debug : string -> bool -> unit = "ml_debug" external ml_get_debug : string -> string * bool = "ml_get_debug" external ml_debuggers : unit -> (string * string * bool) array = "ml_debuggers" *) (* * List all the debug flags. *) let debuggers () = let collect { info_name = name; info_info = info; info_flag = flag } = let info = match info with Some info -> info | None -> default_description in { debug_name = name; debug_description = info; debug_value = !flag } in Array.append (**) (Array.of_list (List.map collect !info)) (* (Array.map (**) (fun name, info, flag -> { debug_name = name; debug_description = info; debug_value = flag }) (ml_debuggers ())) *) [||] (* * Print a usage argument. *) let debug_usage () = let usage { debug_name = name; debug_description = desc; debug_value = flag } = eprintf "\t%s: %s: %b\n" name desc flag in eprintf "Debugging flags:\n"; eprintf "You can specify these as a colon-separated list\n"; Array.iter usage (debuggers ()); flush stderr (* * Create a debugging variable. *) let create_debug { debug_name = name; debug_description = desc; debug_value = flag } = let vinfo = !info in let rec search = function info :: t -> let { info_name = name'; info_info = desc'; info_flag = flag' } = info in if name' = name then match desc' with None -> info.info_info <- Some desc; flag' | Some desc' -> if desc <> desc' then raise (Failure (sprintf "Lm_debug.create_debug: variable '%s' is already created with a different description" name)) else flag' else search t | [] -> let flag' = ref flag in let ninfo = { info_name = name; info_info = Some desc; info_flag = flag' } in info := ninfo :: vinfo; flag' in search vinfo (* * Get the value of a debugging variable. *) let load_debug name = let rec search = function { info_name = name'; info_flag = flag } :: t -> if name' = name then flag else search t | [] -> raise (Failure (sprintf "Lm_debug.load_debug: variable '%s' has not been created" name)) in search !info (* * Modify a debugging flag. *) let set_debug name flag = let rec search = function h :: t -> let { info_name = name'; info_flag = flag' } = h in if name' = name then flag' := flag else search t | [] -> (* (* Try a C function *) try ml_debug name flag with Failure "ml_debug" -> *) raise (Failure "set_debug") in search !info (* * Possible debug flag. * Try setting the flag first. *) let set_possible_debug name flag = try set_debug name flag with Failure "set_debug" -> let flag' = ref flag in let ninfo = { info_name = name; info_info = None; info_flag = flag' } in info := ninfo :: !info (* * Get the value of a debugging flag. *) let get_debug name = let rec search = function h :: t -> if h.info_name = name then let { info_info = description; info_flag = flag } = h in let description = match description with Some desc -> desc | None -> default_description in { debug_name = name; debug_description = description; debug_value = !flag } else search t | [] -> (* Try a C function *) (* try let info, flag = ml_get_debug name in { debug_name = name; debug_description = info; debug_value = flag } with Failure "ml_get_debug" -> *) eprintf "Lm_debug.get_debug: no such variable: %s\n%t" name flush; raise (Failure "get_debug") in search !info (* * Check for no remaining possible debug flags. *) let check_debug () = () (* if List.exists (fun info -> info.info_info = None) !info then begin debug_usage (); raise (Failure "check_debug") end *) (************************************************************************ * PARTICULAR DEBUG * ************************************************************************) (* * File loading. *) let debug_load = create_debug (**) { debug_name = "load"; debug_description = "Print file names as they load"; debug_value = false } let eflush outx = output_char outx '\n'; flush outx let show_loading s = if !debug_load then eprintf s eflush (* * Split a string at a particular char. *) let split c s = let len = String.length s in let rec loop i j = if j = len then if i = j then [] else [String.sub s i (j - i)] else if String.contains c s.[j] then if i = j then loop (succ j) (succ j) else (String.sub s i (j - i)) :: (loop (succ j) (succ j)) else loop i (succ j) in loop 0 0 (* * Set debug flags from the environment. *) let set_possible_debug_flags _ _ flags = List.iter (fun name -> set_possible_debug name true) (split ":" flags) let set_debug_flags flags = let names = split ":" flags in try List.iter (fun name -> set_debug name true) names with Failure _ -> debug_usage (); exit 1 (************************************************************************* * AD-HOC PROFILING *) open Unix type times = { mutable calls : int; mutable wtime : float; mutable utime : float; mutable stime : float } type profile = { ok : times; exn : times } type 'a res = Ok of 'a | Exn of exn let tbl = Hashtbl.create 19 let compare (_,t1) (_,t2) = (t1.ok.wtime +. t1.exn.wtime) <= (t2.ok.wtime +. t2.exn.wtime) let report1 s t = let calls_f = float_of_int t.calls in eprintf "\t%s:\n\t\tCalls: %i;\n\t\tTime elapsed: %0.3fs (%0.6fs/call);\n\t\tSystem time: %0.2fs (%0.6fs/call);\n\t\tUser time: %0.2fs (%0.6fs/call).\n" (**) s t.calls t.wtime (t.wtime /. calls_f) t.stime (t.stime /. calls_f) t.utime (t.utime /. calls_f) let report (s, t) = eprintf "Timing information for %s (%0.3fs total):\n" s (t.ok.wtime +. t.exn.wtime); if t.ok.calls <> 0 then report1 (if t.exn.calls <> 0 then "Successful calls" else "All calls succeeded") t.ok; if t.exn.calls <> 0 then report1 (if t.ok.calls <> 0 then "Failed calls" else "All calls failed") t.exn; if t.ok.calls <> 0 && t.exn.calls <> 0 then report1 "Total calls" { calls = t.ok.calls + t.exn.calls; wtime = t.ok.wtime +. t.exn.wtime; utime = t.ok.utime +. t.exn.utime; stime = t.ok.stime +. t.exn.stime } let add s t l = (s,t) :: l let report_timing () = if Hashtbl.length tbl > 0 then List.iter report (Sort.list compare (Hashtbl.fold add tbl [])) let () = at_exit report_timing let timing_wrap s f arg = let start_f = gettimeofday () in let start_p = times () in let res = try Ok (f arg) with exn -> Exn exn in let end_f = gettimeofday () in let end_p = times () in let times = try Hashtbl.find tbl s with Not_found -> let times = { ok = {calls = 0; wtime = 0.0; utime = 0.0; stime = 0.0}; exn = {calls = 0; wtime = 0.0; utime = 0.0; stime = 0.0}} in Hashtbl.add tbl s times; times in let times = match res with Ok _ -> times.ok | Exn _ -> times.exn in times.calls <- times.calls + 1; times.wtime <- times.wtime +. end_f -. start_f; times.utime <- times.utime +. end_p.tms_utime -. start_p.tms_utime; times.stime <- times.stime +. end_p.tms_stime -. start_p.tms_stime; match res with Ok res -> res | Exn exn -> raise exn (* * -*- * Local Variables: * Caml-master: "refiner.run" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_char.mli0000664000152300015230000000255010456222231021102 0ustar jyhjyh(* * Character operations. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) external code : char -> int = "%cord" external chr : int -> char = "%char" val escaped : char -> string val lowercase : char -> char val uppercase : char -> char (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_list.mli0000664000152300015230000000612610456222231021143 0ustar jyhjyh(* * List operations. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * List operations. *) val length : 'a list -> int val hd : 'a list -> 'a val tl : 'a list -> 'a list val nth : 'a list -> int -> 'a val rev : 'a list -> 'a list val append : 'a list -> 'a list -> 'a list val rev_append : 'a list -> 'a list -> 'a list val concat : 'a list list -> 'a list val flatten : 'a list list -> 'a list (* * Iterators. *) val iter : ('a -> unit) -> 'a list -> unit val map : ('a -> 'b) -> 'a list -> 'b list val rev_map : ('a -> 'b) -> 'a list -> 'b list val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a val fold_right : ('a -> 'b -> 'b) -> 'a list -> 'b -> 'b (* * Iterators on two lists. *) val iter2 : ('a -> 'b -> unit) -> 'a list -> 'b list -> unit val map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list val rev_map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list val fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b list -> 'c list -> 'a val fold_right2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c (* * List scanning. *) val for_all : ('a -> bool) -> 'a list -> bool val exists : ('a -> bool) -> 'a list -> bool val for_all2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool val exists2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool val mem : 'a -> 'a list -> bool val memq : 'a -> 'a list -> bool (* * List searching. *) val find : ('a -> bool) -> 'a list -> 'a val filter : ('a -> bool) -> 'a list -> 'a list val find_all : ('a -> bool) -> 'a list -> 'a list val partition : ('a -> bool) -> 'a list -> 'a list * 'a list (* * Association lists. *) val assoc : 'a -> ('a * 'b) list -> 'b val assq : 'a -> ('a * 'b) list -> 'b val mem_assoc : 'a -> ('a * 'b) list -> bool val mem_assq : 'a -> ('a * 'b) list -> bool val remove_assoc : 'a -> ('a * 'b) list -> ('a * 'b) list val remove_assq : 'a -> ('a * 'b) list -> ('a * 'b) list (* * Lists of pairs. *) val split : ('a * 'b) list -> 'a list * 'b list val combine : 'a list -> 'b list -> ('a * 'b) list (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_core_system.ml0000664000152300015230000001502110653713501023700 0ustar jyhjyh(* * Our personal implementation of threads. Each thread has * thread-local state. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Authors: Jason Hickey @email{jyh@cs.caltech.edu} * Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_debug open Lm_printf module MutexCore = struct type t = Mutex.t let create _ = Mutex.create () let lock = Mutex.lock let try_lock = Mutex.try_lock let unlock = Mutex.unlock end module ConditionCore = struct type t = Condition.t type mutex = Mutex.t let create = Condition.create let wait = Condition.wait let signal = Condition.signal let broadcast = Condition.broadcast end (* * Thread implementation. *) module ThreadCore = struct type t = Thread.t type id = int type 'a result = Result of 'a | Exn of exn let enabled = true let create = Thread.create let self = Thread.self let id = Thread.id let join = Thread.join let sigmask = if Sys.os_type = "Win32" then (fun _ mask -> mask) else Thread.sigmask let raise_ctrl_c_wrapper f x = let running = ref true in let result = ref (Exn (Invalid_argument "Lm_thread_core.raise_ctrl_c_wrapper")) in let run () = begin try result := Result (f x); with exn -> result := Exn exn end; running := false in let rec wait () = if !running then begin Thread.delay 0.1; wait () end else match !result with Result res -> res | Exn exn -> raise exn in ignore (Thread.create run ()); wait () end let debug_mutex = create_debug (**) { debug_name = "mutex"; debug_description = "Show Mutex locking operations"; debug_value = false } module MutexCoreDebug = struct type t = { lock: Mutex.t; id : string; mutable locked: int option } let my_id () = Thread.id (Thread.self ()) let count = let count = ref 0 in let lock = Mutex.create () in fun () -> Mutex.lock lock; incr count; let res = !count in Mutex.unlock lock; res let create debug = { lock = Mutex.create (); id = sprintf "%s.%i" debug (count ()); locked = None } let try_lock l = let was_unlocked = Mutex.try_lock l.lock in if was_unlocked then begin begin match l.locked with None -> () | Some id -> if !debug_mutex then eprintf "!!! Lm_thread_core_system.MutexCore.lock: insonsistency! Thread %i found the lock %s unlocked, while we think it was locked by %i@." (my_id()) l.id id end; if !debug_mutex then eprintf "Mutex.[try_]lock: %i locked %s@." (my_id()) l.id; l.locked <- Some (my_id()) end; was_unlocked let lock l = if not (try_lock l) then begin let id = match l.locked with None -> "unknown" | Some i -> string_of_int i in if !debug_mutex then eprintf "Mutex.lock: %i will block on lock %s, held by %s@." (my_id()) l.id id; Mutex.lock l.lock; if !debug_mutex then eprintf "Mutex.lock: %i locked %s@." (my_id()) l.id; l.locked <- Some (my_id()) end let unlock l = begin match l.locked with None -> if !debug_mutex then eprintf "!!! Lm_thread_core_system.MutexCore.unlock: insonsistency! Thread %i unlocking %s, which is already unlocked@." (my_id()) l.id | Some id -> if id = (my_id()) then if !debug_mutex then eprintf "Mutex.unlock: %i unlocking %s@." (my_id()) l.id else if !debug_mutex then eprintf "!!! Lm_thread_core_system.MutexCore.unlock: insonsistency! Thread %i unlocking %s, which was locked by a different thread %i@." (my_id()) l.id id end; l.locked <- None; Mutex.unlock l.lock end module ConditionCoreDebug = struct open MutexCoreDebug type t = Condition.t type mutex = MutexCoreDebug.t let create = Condition.create let signal = Condition.signal let broadcast = Condition.broadcast let wait cond l = begin match l.locked with None -> if !debug_mutex then eprintf "!!! Lm_thread_core_system.ConditionCore.wait: insonsistency! Thread %i unlocking %s, which is already unlocked@." (my_id()) l.id | Some id -> if id = (my_id()) then if !debug_mutex then eprintf "Condition.wait: %i unlocking %s@." (my_id()) l.id else if !debug_mutex then eprintf "!!! Lm_thread_core_system.ConditionCore.wait: insonsistency! Thread %i unlocking %s, which was locked by a different thread %i@." (my_id()) l.id id end; l.locked <- None; Condition.wait cond l.lock; begin match l.locked with None -> () | Some id -> if !debug_mutex then eprintf "!!! Lm_thread_core_system.ConditionCore.wait: insonsistency! Thread %i receiving a lock %s, which is already locked by %i@." (my_id()) l.id id; end; l.locked <- Some (my_id()) end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat.mli0000664000152300015230000001330410464477010021644 0ustar jyhjyh(* * Formatter like in the standard library. * Output is organized into boxes, each of which has an indentation. * * Commands: * format_sbreak str str': soft break is taken if necessary * if taken, str is printed after the current line * if not, str' is printed * format_hbreak str str': hard breaks are taken in groups * if taken, str is printed * if not, str' is printed * * format_lzone: begin a zone with no breaks * format_szone: soft break zone (all or no hard breaks are taken) * format_hzone: all hard breaks are taken. * format_ezone: end the current zone. * * format_pushm i: push left margin from here by i more spaces * format_popm: pop last pushm * * format_char: add a single char * format_int: print a number * format_string: add a string to the buffer * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified by: Aleksey Nogin * *) (************************************************************************ * TYPES * ************************************************************************) (* * Abstract type of buffers containing formatted text. *) type buffer (* * The BufferOverflow exception is raised when too much visible text is * put in the buffer. You can control how much visible text is allowed * by using the format_bound function below. *) exception RFormatOverflow (* * A printer contains: * print_string s : print string s to the buffer * print_atomic s : print the buffer to the buffer * print_invis s : print string s in invisible mode * print_tab lmargin tags : tab to the specified left margin * print_begin_tag : start tagging a value * print_end_tag : finish tagging the value *) type printer = { print_string : string -> unit; print_invis : string -> unit; print_atomic : string -> unit; print_tab : int * string -> string list -> unit; print_begin_tag : string -> unit; print_end_tag : string -> unit } (************************************************************************ * INTERFACE * ************************************************************************) (* * Buffer creation. *) val new_buffer : unit -> buffer val clone_buffer : buffer -> buffer val clear_buffer : buffer -> unit val buffer_is_empty : buffer -> bool (* * Marshaling. * This will raise Failure if the marshal * version changes. *) val marshal_buffers : buffer list -> string val unmarshal_buffers : string -> buffer list (* * Specify the max number of characters in the buffer. * This will not raise an exception even if the buffer * is already too large. You will get the exception * the next time you insert visible text. *) val format_bound : buffer -> int -> unit (* * Breaks. *) val format_cbreak : buffer -> string -> string -> unit val format_sbreak : buffer -> string -> string -> unit val format_hbreak : buffer -> string -> string -> unit val format_space : buffer -> unit val format_hspace : buffer -> unit val format_newline : buffer -> unit (* * Break zones. *) val zone_depth : buffer -> int val format_lzone : buffer -> unit val format_szone : buffer -> unit val format_hzone : buffer -> unit val format_ezone : buffer -> unit val format_izone : buffer -> unit val format_azone : buffer -> unit (* TeX boxes *) val format_tzone : buffer -> string -> unit (* * Margins. *) val format_pushm : buffer -> int -> unit val format_pushm_str : buffer -> string -> unit val format_popm : buffer -> unit (* * Printers. *) val format_char : buffer -> char -> unit val format_string : buffer -> string -> unit val format_raw_string : buffer -> string -> unit val format_quoted_string : buffer -> string -> unit val format_int : buffer -> int -> unit val format_num : buffer -> Lm_num.num -> unit val format_buffer : buffer -> buffer -> unit (* * Internals. *) (* Get the current nesting depth *) val format_depth : buffer -> int (* Close all open boxes, indicriminately *) val format_flush : buffer -> unit (* Close all open pushm boxes *) val format_flush_popm : buffer -> unit (* * Collecting output. *) val default_width : int (* 80 *) (* * Final output. *) val print_to_printer : buffer -> int -> printer -> unit (* * -*- * Local Variables: * Caml-master: "manager" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_string_set.ml0000664000152300015230000000360210456222231022174 0ustar jyhjyh(* * Sets of strings. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * String sets and string tables *) module OrderedString = struct type t = string let compare = Lm_string_util.string_compare end module StringSet = Lm_set.LmMake (OrderedString) module StringTable = Lm_map.LmMake (OrderedString) module StringMTable = Lm_map.LmMakeList (OrderedString) (* * String sets and string tables with lexicographical ordering. *) module LexOrderedString = struct type t = string let compare (s1: t) s2 = Pervasives.compare s1 s2 end module LexStringSet = Lm_set.LmMake (LexOrderedString) module LexStringTable = Lm_map.LmMake (LexOrderedString) module LexStringMTable = Lm_map.LmMakeList (LexOrderedString) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_array.ml0000664000152300015230000000716510456222231021141 0ustar jyhjyh(* * Array operations. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) (* * Array operations. *) external length : 'a array -> int = "%array_length" external get : 'a array -> int -> 'a = "%array_get" external set : 'a array -> int -> 'a -> unit = "%array_set" external make : int -> 'a -> 'a array = "%array_create" external create : int -> 'a -> 'a array = "%array_create" external append : 'a array -> 'a array -> 'a array = "%array_append" external sub : 'a array -> int -> int -> 'a array = "%array_sub" external copy : 'a array -> 'a array = "%array_copy" external fill : 'a array -> int -> int -> 'a -> unit = "%array_fill" external blit : 'a array -> int -> 'a array -> int -> int -> unit = "%array_blit" let init i f = if i = 0 then [||] else let x = f 0 in let a = create i x in for j = 1 to pred i do a.(j) <- f j done; a let make_matrix i j x = init i (fun _ -> create j x) let create_matrix = make_matrix let rec concat = function a :: tl -> append a (concat tl) | [] -> [||] let to_list a = let rec loop l i = if i = 0 then l else let i = pred i in loop (a.(i) :: l) i in loop [] (length a) let of_list l = match l with h :: t -> let len = List.length l in let a = create len h in let rec loop i = function h :: t -> a.(i) <- h; loop (succ i) t | [] -> () in loop 1 t; a | [] -> [||] let iter f a = for i = 0 to pred (length a) do f a.(i) done let map f a = let len = length a in if len = 0 then [||] else let a' = create len (f a.(0)) in for i = 1 to pred len do a'.(i) <- f a.(i) done; a' let iteri f a = for i = 0 to pred (length a) do f i a.(i) done let mapi f a = let len = length a in if len = 0 then [||] else let a' = create len (f 0 a.(0)) in for i = 1 to pred len do a'.(i) <- f i a.(i) done; a' let fold_left f x a = let len = length a in let rec loop i x = if i = len then x else loop (succ i) (f x a.(i)) in loop 0 x let fold_right f a x = let rec loop i x = if i = 0 then x else let i = pred i in loop i (f a.(i) x) in loop (length a) x (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_char.ml0000664000152300015230000000554110456222231020734 0ustar jyhjyh(* * Character operations. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) external code : char -> int = "%cord" external chr : int -> char = "%char" external make : int -> char -> string = "%smake" let escaped = function '\n' -> "\\n" | '\t' -> "\\t" | '\r' -> "\\r" | '\127' -> "\\127" | '\000' -> "\\000" | '\001' -> "\\001" | '\002' -> "\\002" | '\003' -> "\\003" | '\004' -> "\\004" | '\005' -> "\\005" | '\006' -> "\\006" | '\007' -> "\\007" | '\008' -> "\\008" | '\009' -> "\\009" | '\010' -> "\\010" | '\011' -> "\\011" | '\012' -> "\\012" | '\013' -> "\\013" | '\014' -> "\\014" | '\015' -> "\\015" | '\016' -> "\\016" | '\017' -> "\\017" | '\018' -> "\\018" | '\019' -> "\\019" | '\020' -> "\\020" | '\021' -> "\\021" | '\022' -> "\\022" | '\023' -> "\\023" | '\024' -> "\\024" | '\025' -> "\\025" | '\026' -> "\\026" | '\027' -> "\\027" | '\028' -> "\\028" | '\029' -> "\\029" | '\030' -> "\\030" | '\031' -> "\\031" | c -> make 1 c let lowercase = function 'A' -> 'a' | 'B' -> 'b' | 'C' -> 'c' | 'D' -> 'd' | 'E' -> 'e' | 'F' -> 'f' | 'G' -> 'g' | 'H' -> 'h' | 'I' -> 'i' | 'J' -> 'j' | 'K' -> 'k' | 'L' -> 'l' | 'M' -> 'm' | 'O' -> 'o' | 'P' -> 'p' | 'Q' -> 'q' | 'R' -> 'r' | 'S' -> 's' | 'T' -> 't' | 'U' -> 'u' | 'V' -> 'v' | 'W' -> 'w' | 'X' -> 'x' | 'Y' -> 'y' | 'Z' -> 'z' | c -> c let uppercase = function 'a' -> 'A' | 'b' -> 'B' | 'c' -> 'C' | 'd' -> 'D' | 'e' -> 'E' | 'f' -> 'F' | 'g' -> 'G' | 'h' -> 'H' | 'i' -> 'I' | 'j' -> 'J' | 'k' -> 'K' | 'l' -> 'L' | 'm' -> 'M' | 'o' -> 'O' | 'p' -> 'P' | 'q' -> 'Q' | 'r' -> 'R' | 's' -> 'S' | 't' -> 'T' | 'u' -> 'U' | 'v' -> 'V' | 'w' -> 'W' | 'x' -> 'X' | 'y' -> 'Y' | 'z' -> 'Z' | c -> c (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_file_util.ml0000664000152300015230000000725410464477010022004 0ustar jyhjyh(* * Operations on files. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_debug (* * Show the file loading. *) let _ = show_loading "Loading Lm_file_util%t" (* Can't open and can't find a file *) exception CantOpen of string exception CantFind of string (* * Split the name into a list of names. * If there is an initial /, then this is an * absolute name. Otherwise it is relative to the current module. *) let parse_path dir name = let len = String.length name in let rec aux path i j = if i < len then if j = len or name.[j] = '/' then let word = Lm_string_util.sub "Lm_file_util.parse_path" name i (j - i) in let path' = match word with "" | "." -> path | ".." -> if path = [] then [] else List.tl path | _ -> word::path in aux path' (j + 1) (j + 1) else aux path i (j + 1) else path in let path = if len <> 0 & name.[0] = '/' then [] else dir in List.rev (aux path 0 0) (* * Build the path from the list. *) let rec build_path = function [h] -> h | h::t -> h ^ "/" ^ (build_path t) | [] -> "." (* * Get dir name. *) let path_dir path = match parse_path [] path with [] -> "." | x -> let h, _ = Lm_list_util.split_last x in build_path h (* * Get filename. *) let path_file path = match parse_path [] path with [] -> "." | x -> Lm_list_util.last x (* * Open a file somewhere in the path. *) let open_in_path path name = let rec aux = function [] -> raise (CantFind name) | dir::rest -> let fullname = Filename.concat dir name in try let ifile = open_in fullname in (ifile, fullname) with Sys_error _ -> aux rest in aux path (* * Safe file handler. *) let with_input_file name f = let iport = open_in name in let a = try f iport with x -> close_in iport; raise x in close_in iport; a let with_output_file name f = let oport = open_out name in let a = try f oport with x -> close_out oport; raise x in close_out oport; a (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_big_int.ml0000664000152300015230000003366310464477010021446 0ustar jyhjyh(* * Bignums are represented as signed magnitude. * The magnitude is a list of digits, least-significant * first. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey *) (************************************************************************ * TYPES * ************************************************************************) type big_int = bool * int list (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Maximum digit size. *) let shift_int = 15 let carry_int = 1 lsl shift_int let max_int = pred carry_int (* * Representation of zero. *) let zero_big_int = true, [] (* * Most-significant digits are zeros. *) let rec zeros = function 0 :: t -> zeros t | _ :: _ -> false | [] -> true (* * Build from an int. *) let rec make_mag i = if i = 0 then [] else i land max_int :: make_mag (i lsr shift_int) let big_int_of_int i = if i < 0 then false, make_mag (-i) else true, make_mag i (* * Integer testing is conservative. *) let is_integer_big_int = function _, ([] | [_] | [_; _]) -> true | _, _ :: _ :: mag -> zeros mag let rec collect_big_int = function digit :: mag -> digit + ((collect_big_int mag) lsl shift_int) | [] -> 0 let integer_big_int ((sign, mag) as i) = if not (is_integer_big_int i) then raise (Invalid_argument "Lm_big_int.integer_big_int: overflow"); let mag = collect_big_int mag in if sign then mag else -mag (************************************************************************ * COMPARISON * ************************************************************************) (* * Compare two magnitudes. *) let rec compare_mag val1 val2 = match val1, val2 with digit1 :: val1, digit2 :: val2 -> let comp = compare_mag val1 val2 in if comp = 0 then digit1 - digit2 else comp | [], [] -> 0 | [], t -> if zeros t then 0 else -1 | t, [] -> if zeros t then 0 else 1 let compare_big_int (sign1, val1) (sign2, val2) = if sign1 then if sign2 then compare_mag val1 val2 else 1 else if sign2 then -1 else compare_mag val2 val1 let rec eq_mag val1 val2 = match val1, val2 with digit1 :: val1, digit2 :: val2 -> digit1 = digit2 && eq_mag val1 val2 | [], [] -> true | [], val2 -> zeros val2 | val1, [] -> zeros val1 let eq_big_int (sign1, val1) (sign2, val2) = sign1 = sign2 && eq_mag val1 val2 (************************************************************************ * ADDITION/SUBTRACTIOB * ************************************************************************) (* * Addition of the magnitudes. *) let rec add_mag carry val1 val2 = match val1, val2 with digit1 :: val1, digit2 :: val2 -> add_digit carry digit1 digit2 val1 val2 | [], val2 -> add_carry carry val2 | val1, [] -> add_carry carry val1 and add_digit carry digit1 digit2 val1 val2 = let z = if carry then digit1 + digit2 + 1 else digit1 + digit2 in if z > max_int then z land max_int :: add_mag true val1 val2 else z :: add_mag false val1 val2 and add_carry carry digits = if carry then match digits with digit :: vals -> if digit = max_int then 0 :: add_carry true vals else succ digit :: vals | [] -> [1] else digits (* * Subtraction of magnitudes. *) let rec sub_mag borrow val1 val2 = match val1, val2 with digit1 :: val1, digit2 :: val2 -> sub_digit borrow digit1 digit2 val1 val2 | val1, [] -> sub_borrow borrow val1 | [], val2 -> if (zeros val2) && (not borrow) then [] else raise (Invalid_argument "Lm_big_int.sub_mag") and sub_digit borrow digit1 digit2 val1 val2 = let z = if borrow then digit1 - digit2 - 1 else digit1 - digit2 in if z < 0 then z land max_int :: sub_mag true val1 val2 else z :: sub_mag false val1 val2 and sub_borrow borrow val1 = if borrow then match val1 with digit1 :: val1 -> if digit1 = 0 then max_int :: sub_borrow true val1 else pred digit1 :: val1 | [] -> raise (Invalid_argument "Lm_big_int.sub_borrow") else val1 (* * Bigint addition. *) let add_big_int (sign1, val1) (sign2, val2) = if sign1 then if sign2 then true, add_mag false val1 val2 else let comp = compare_mag val1 val2 in if comp = 0 then zero_big_int else if comp < 0 then false, sub_mag false val2 val1 else true, sub_mag false val1 val2 else if sign2 then let comp = compare_mag val1 val2 in if comp = 0 then zero_big_int else if comp < 0 then true, sub_mag false val2 val1 else false, sub_mag false val1 val2 else false, add_mag false val1 val2 (* * Bigint subtraction. *) let sub_big_int val1 (sign2, val2) = add_big_int val1 (not sign2, val2) (************************************************************************ * MULTIPLICATION * ************************************************************************) (* * Long multiplication. *) let rec mult_mag total val1 = function digit2 :: val2 -> mult_mag (add_mag false (mult_digit 0 digit2 val1) total) (shift_mag val1) val2 | [] -> total and mult_digit carry digit2 = function digit1 :: val1 -> let z = digit2 * digit1 + carry in z land max_int :: mult_digit (z lsr shift_int) digit2 val1 | [] -> if carry <> 0 then [carry] else [] and shift_mag val1 = 0 :: val1 (* * Bigint multiplication. *) let mult_big_int (sign1, val1) (sign2, val2) = (sign1 = sign2, mult_mag [] val1 val2) (************************************************************************ * DIVISION * ************************************************************************) (* * Right shift by one bit. *) let rec div2 = function [digit] -> [digit lsr 1] | digit :: ((digit' :: _) as vals) -> (((digit + (digit' lsl shift_int)) lsr 1) land max_int) :: div2 vals | [] -> [] (* * We use a simple, expensive binary search. *) let rec div_mag min max num den = let mid = div2 (add_mag false min max) in if eq_mag mid min then mid else let prod = mult_mag [] mid den in let comp = compare_mag prod num in if comp = 0 then mid else if comp > 0 then div_mag min mid num den else div_mag mid max num den let div_big_int (sign1, val1) (sign2, val2) = if zeros val2 then raise (Invalid_argument "Lm_big_int.div_big_int: division by zero"); sign1 = sign2, div_mag [] val1 val1 val2 let mod_mag num den = let quo = div_mag [] num num den in sub_mag false num (mult_mag [] den quo) let mod_big_int (sign1, val1) (sign2, val2) = if zeros val2 then raise (Invalid_argument "Lm_big_int.mod_big_int: division by zero"); sign1 = sign2, mod_mag val1 val2 let quo_big_int = div_big_int let rem_big_int = mod_big_int (* * Test for zero. *) let is_zero_big_int (_, mag) = zeros mag (* * Absolute value. *) let abs_big_int (_, mag) = (true, mag) let neg_big_int (sign, mag) = (not sign || zeros mag, mag) (************************************************************************ * STRING CONVERSION * ************************************************************************) (* * Divide the number by 10. * Magnitude is in reverse order. *) let div10_rev_mag digits = let rec collect rem = function digit :: digits -> let digit = digit + rem * (succ max_int) in let rem, digits = collect (digit mod 10) digits in rem, (digit / 10) :: digits | [] -> rem, [] in collect 0 digits let div10 (sign, mag) = let rem, mag = div10_rev_mag (List.rev mag) in rem, (sign, List.rev mag) (* * Multiply a mag by a small int. *) let rec mult_mag_i i = let rec collect carry = function digit :: digits -> let z = digit * i + carry in z land max_int :: collect (z lsr shift_int) digits | [] -> if carry = 0 then [] else [carry] in collect 0 let mult2_mag = mult_mag_i 2 let mult8_mag = mult_mag_i 8 let mult10_mag = mult_mag_i 10 let mult16_mag = mult_mag_i 16 let mult10 (sign, mag) = sign, mult10_mag mag let zero_code = Char.code '0' let add_int mag i = let rec collect carry digits = if carry = 0 then digits else match digits with digit :: digits -> let z = digit + carry in z land max_int :: collect (z lsr shift_int) digits | [] -> [carry] in collect i mag (* * Produce a string. *) let string_of_big_int (sign, mag) = let flatten = function [] -> "0" | digits -> let s, start = if sign then String.create (List.length digits), 0 else String.make (succ (List.length digits)) '-', 1 in let rec collect i = function digit :: digits -> s.[i] <- Char.chr (Char.code '0' + digit); collect (succ i) digits | [] -> s in collect start digits in let rec collect digits mag = if zeros mag then flatten digits else let rem, quo = div10_rev_mag mag in collect (rem :: digits) quo in collect [] (List.rev mag) (* * Produce it from a string. *) let big_int_of_string = let inv () = raise (Invalid_argument "Lm_big_int.big_int_of_string") in let rec collect mult char_code s len i mag = if i = len then mag else collect mult char_code s len (succ i) (add_int (mult mag) (char_code s.[i])) in let char_code2 = function '0' -> 0 | '1' -> 1 | _ -> inv () in let char_code8 = function '0'..'7' as c -> Char.code c - zero_code | _ -> inv () in let char_code10 = function '0'..'9' as c -> Char.code c - zero_code | _ -> inv () in let char_code16 = function '0'..'9' as c -> Char.code c - zero_code | 'a' | 'A' -> 10 | 'b' | 'B' -> 11 | 'c' | 'C' -> 12 | 'd' | 'D' -> 13 | 'e' | 'E' -> 14 | 'f' | 'F' -> 15 | _ -> inv () in fun s -> let len = String.length s in if len = 0 then inv (); let sign = not (s.[0] = '-') in if not sign && len = 1 then inv (); sign, begin let i = if sign then 0 else 1 in if s.[i] = '0' && len >= (i+3) then match s.[i+1] with 'b' | 'B' -> collect mult2_mag char_code2 s len (i+2) [] | 'o' | 'O' -> collect mult8_mag char_code8 s len (i+2) [] | 'x' | 'X' -> collect mult16_mag char_code16 s len (i+2) [] | _ -> collect mult10_mag char_code10 s len (i+2) [] else collect mult10_mag char_code10 s len i [] end (* * Additional names. *) let to_string = string_of_big_int let of_string = big_int_of_string (* * Produce a int32. *) let to_int32 = function _, [] -> Int32.zero | _, digits -> let rec collect shift i digits = match digits with digit :: digits when shift < 32 -> let i = Int32.logor i (Int32.shift_left (Int32.of_int digit) shift) in collect (shift + shift_int) i digits | _ -> i in collect 0 Int32.zero digits let of_int32 i = let rec make_mag i = if i = Int32.zero then [] else (Int32.to_int i) land max_int :: make_mag (Int32.shift_right i shift_int) in if i < Int32.zero then false, make_mag (Int32.neg i) else true, make_mag i (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_cycle_dag.ml0000664000152300015230000001642410464477010021741 0ustar jyhjyh(* * DAG used for cycle detection. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (************************************************************************ * TYPES * ************************************************************************) (* * The vertices na the DAG represent the DAG. * Nodes can be added in an equaivalence class. * The out-edges are mutable, so that they can be cached. *) type ('node, 'edge) data = Leaf | Node of 'edge * ('node, 'edge) vertex list and ('node, 'edge) vertex = { mutable vert_mark : int; mutable vert_nodes : 'node list; mutable vert_data : ('node, 'edge) data } (* * A DAG is a hashtablw to look up the nodes, * and a mark count. *) type ('node, 'edge) t = { mutable dag_mark : int; dag_table : ('node, ('node, 'edge) vertex) Hashtbl.t } exception Cycle (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Empty DAG. *) let create () = { dag_mark = 0; dag_table = Hashtbl.create 19 } (* * Add leaves to the table. *) let insert_leaf table node = let vert = { vert_mark = 0; vert_nodes = [node]; vert_data = Leaf } in Hashtbl.add table node vert; vert let find_or_insert table node = try Hashtbl.find table node with Not_found -> insert_leaf table node let find { dag_table = table } node = match Hashtbl.find table node with { vert_data = Node (edge, _) } -> edge | { vert_data = Leaf } -> raise Not_found (* * Make a dag from previous info. * We assume the info has no cycles. *) let make items = let table = Hashtbl.create 19 in let insert (nodes, edge) = let vert = match edge with Some (edge, children) -> { vert_mark = 0; vert_nodes = nodes; vert_data = Node (edge, List.map (find_or_insert table) children) } | None -> { vert_mark = 0; vert_nodes = nodes; vert_data = Leaf } in List.iter (fun node -> Hashtbl.add table node vert) nodes in List.iter insert items; { dag_mark = 0; dag_table = table } (* * Check for path from the first node to the second. * Depth-first-search. *) let rec check_cycle_vert mark node1 vert = if vert.vert_mark <> mark then begin vert.vert_mark <- mark; if List.mem node1 vert.vert_nodes then raise Cycle; match vert.vert_data with Node (_, children) -> List.iter (check_cycle_vert mark node1) children | Leaf -> () end let check_cycle_node mark table node1 node2 = try let vert2 = Hashtbl.find table node2 in check_cycle_vert mark node1 vert2; vert2 with Not_found -> insert_leaf table node2 let check_cycle dag node1 nodes2 = let { dag_mark = mark; dag_table = table } = dag in let mark = succ mark in dag.dag_mark <- mark; List.map (check_cycle_node mark table node1) nodes2 (* * Leaf two nodes. One of the two nodes should not * already be in the DAG. *) let equate dag node1 node2 = let dag = dag.dag_table in try let vert1 = Hashtbl.find dag node1 in if Hashtbl.mem dag node2 then raise Cycle else vert1.vert_nodes <- node2 :: vert1.vert_nodes with Not_found -> try let vert2 = Hashtbl.find dag node2 in vert2.vert_nodes <- node1 :: vert2.vert_nodes with Not_found -> let vert = { vert_mark = 0; vert_nodes = [node1; node2]; vert_data = Leaf } in Hashtbl.add dag node1 vert; Hashtbl.add dag node2 vert (* * Insert an edge between node1 and node2. *) let insert dag node1 edge nodes2 = let table = dag.dag_table in if List.mem node1 nodes2 then raise Cycle; try let vert1 = Hashtbl.find table node1 in let verts2 = match vert1.vert_data with Leaf -> check_cycle dag node1 nodes2 | Node _ -> raise Cycle in vert1.vert_data <- Node (edge, verts2) with Not_found -> let verts2 = List.map (find_or_insert table) nodes2 in let vert = { vert_mark = 0; vert_nodes = [node1]; vert_data = Node (edge, verts2) } in Hashtbl.add dag.dag_table node1 vert (* * Sort the nodes in the DAG. * Mark node in a depth-first-search. *) let sort dag = let { dag_mark = mark; dag_table = table } = dag in let mark = succ mark in let root = ref [] in let rec explore vert = if vert.vert_mark <> mark then begin vert.vert_mark <- mark; begin match vert.vert_data with Node (_, children) -> List.iter explore children | Leaf -> () end; root := vert :: !root; end in let rec convert data = function vert :: verts -> let v = match vert.vert_data with Node (edge, _) -> Some edge | Leaf -> None in convert ((vert.vert_nodes, v) :: data) verts | [] -> List.rev data in dag.dag_mark <- mark; Hashtbl.iter (fun _ vert -> explore vert) table; convert [] !root (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_pool.mli0000664000152300015230000000356410456222231022473 0ustar jyhjyh(* * Select doesn't work on Win32, so use threads instead. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Debugging. *) val debug_thread : bool ref (* * Are threads enabled? *) val enabled : bool (* * Start a job in a new thread. * If the bool is false, the result is * not returned by wait when the thread exits. *) val create : bool -> (unit -> unit) -> int (* * When a job performs blocking IO, it should * unlock the main lock. *) val blocking_section : ('a -> 'b) -> 'a -> 'b val resume_inner_section : ('a -> 'b) -> 'a -> 'b (* * Wait for any of the jobs to complete. *) val wait : unit -> int list (* * Wait for a specific job to complete. *) val waitpid : int -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_core_null.ml0000664000152300015230000000546210653713501023336 0ustar jyhjyh(* * An null implementation of threads. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_debug let debug_mutex = create_debug (**) { debug_name = "mutex"; debug_description = "Show Mutex locking operations"; debug_value = false } (* * Locks are not required when not using threads. * We only track the "locked" state to produce the correct results in the try_lock function. *) module MutexCore = struct (* true = free; false = locked *) type t = bool ref let create _ = ref true let lock l = l := false let try_lock l = let res = !l in l := false; res let unlock l = l := true end (* * Conditions are not required when not using threads. *) module ConditionCore = struct type t = unit type mutex = MutexCore.t let create () = () let wait _ l = l := false let signal () = () let broadcast () = () end module MutexCoreDebug = MutexCore module ConditionCoreDebug = ConditionCore (* * Threads are null. The create function doesn't work without * threads, so raise an exception. *) module ThreadCore = struct type t = unit type id = unit let enabled = false let create _f _x = raise (Invalid_argument "Lm_thread.Thread.create: threads are not enabled in this application") let join _t = raise (Invalid_argument "Lm_thread.Thread.join: threads are not enabled in this application") let self () = () let id () = 0 let sigmask _ mask = mask let raise_ctrl_c_wrapper f x = f x end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_event.ml0000664000152300015230000002171710651225205022473 0ustar jyhjyh(* * This is a reimplementation of the OCaml Event module. * We have weaker requirements on synchronization. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_debug open Lm_printf open Lm_thread (************************************************************************ * TYPES * ************************************************************************) (* * A channel queues the senders and receivers. * There invariant is that either the readers or * the writers queue is empty. * * The reader and writer contain the condition * that the blocked process is waiting on, the * cell for the return value, and a flag for if the * action has already been performed. * * The performed flag is a different reference * because of the wrap function, which uses a local * reference to capture the return value. *) type lock = Condition.t type 'a reader = { read_lock : lock; read_value : 'a option ref; read_performed : bool ref } type 'a writer = { write_lock : lock; write_value : 'a; write_performed : bool ref } type 'a channel = { chan_readers : 'a reader Queue.t; chan_writers : 'a writer Queue.t } (* * We want to be able to wrap values of receive events. * The type system won't allow the desired type quantification, * so we wrap the actions in closures. The poll event * looks for an available value, and the block event * waits for a communication, given a function to do the * actual blocking. *) type 'a event_info = { event_poll : unit -> 'a option; event_block : (unit -> unit) -> lock -> bool ref -> 'a option ref -> unit } (* * An event is a function to compute a flattened * list of events. *) type 'a event = 'a event_info list -> 'a event_info list (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * For speed, keep a queue of free condition variables. * This list never grows larger than the number of threads. *) let alloc_lock, free_lock = let lock_list = ref [] in let alloc () = match !lock_list with lock :: tl -> lock_list := tl; lock | [] -> Condition.create () in let free lock = lock_list := lock :: !lock_list in alloc, free (* * Keep a global mutex for mutual exclusion on all * sync operations. *) let global_lock = Mutex.create "Lm_thread_event" let sync_lock () = eprintf "Lm_thread_event.lock@."; Mutex.lock global_lock let sync_unlock () = eprintf "Lm_thread_event.unlock@."; Mutex.unlock global_lock let sync_wait lock = Condition.wait lock global_lock let sync_signal lock = Condition.signal lock (* * Create a new channel. *) let new_channel () = { chan_readers = Queue.create (); chan_writers = Queue.create () } (* * Polling. *) let rec try_send chan x () = try let reader = Queue.take chan.chan_readers in if !(reader.read_performed) then try_send chan x () else begin reader.read_performed := true; reader.read_value := Some x; sync_signal reader.read_lock; Some () end with Queue.Empty -> None let rec try_receive chan () = try let writer = Queue.take chan.chan_writers in if !(writer.write_performed) then try_receive chan () else let x = writer.write_value in writer.write_performed := true; sync_signal writer.write_lock; Some x with Queue.Empty -> None let try_wrap f poll () = match poll () with Some x -> Some (f x) | None -> None (* * Place a request on a queue. * The `block' argument is the function to perform the suspend. *) let block_send chan x block cond performed slot = let write = { write_lock = cond; write_value = x; write_performed = performed } in Queue.add write chan.chan_writers; block (); slot := Some () let block_receive chan block cond performed slot = let read = { read_lock = cond; read_value = slot; read_performed = performed } in Queue.add read chan.chan_readers; block () let block_wrap f block' block cond performed slot = let slot' = ref None in block' block cond performed slot'; match !slot' with Some x -> slot := Some (f x) | None -> () (* * Basic events. *) let always x = let event = { event_poll = (fun () -> Some x); event_block = (fun _ _ _ -> raise (Invalid_argument "Event.always")) } in (fun events -> event :: events) let send chan x = let event = { event_poll = try_send chan x; event_block = block_send chan x; } in (fun events -> event :: events) let receive chan = let rec event = { event_poll = try_receive chan; event_block = block_receive chan } in (fun events -> event :: events) let wrap event f events = let wrap_event { event_poll = poll; event_block = block } = { event_poll = try_wrap f poll; event_block = block_wrap f block } in (List.map wrap_event (event [])) @ events let rec choose events events' = match events with event :: events -> choose events (event events') | [] -> events' let delay f events = (f () events) let sequence events = let cell = ref events in let wrap_event events' = match !cell with event :: events -> let pop x = cell := events; x in wrap event pop events' | [] -> events' in wrap_event let sequence_final events = let cell = ref events in let wrap_event events' = match !cell with [event] -> event events' | event :: events -> let pop x = cell := events; x in wrap event pop events' | [] -> events' in wrap_event (* * Poll for a value in the event list. *) let rec poll_events = function { event_poll = poll' } :: events -> begin match poll' () with (Some _) as x -> x | None -> poll_events events end | [] -> None (* * Block until an event happens. *) let block events = let lock = alloc_lock () in let slot = ref None in let performed = ref false in let rec block = function { event_block = block' } :: events -> block' (fun () -> block events) lock performed slot | [] -> sync_wait lock in block events; free_lock lock; !slot (* * Poll for available input. *) let poll event = let events = event [] in sync_lock (); let x = poll_events events in sync_unlock (); x (* * Complete the specified event. *) let level = ref 0 let sync _pid event = let events = event [] in sync_lock (); let x = match poll_events events with Some x -> x | None -> match block events with Some x -> x | None -> eprintf "Failed%t" eflush; raise (Invalid_argument "Event.sync") in sync_unlock (); x (* * Shorthand. *) let select pid events = sync pid (choose events) (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread.ml0000664000152300015230000004750010653713501021273 0ustar jyhjyh(* * Our personal implementation of threads. Each thread has * thread-local state. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Instititue of Technology, and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_debug open Lm_printf open Lm_thread_sig open Lm_thread_core open Lm_int_set let debug_lock = create_debug (**) { debug_name = "lock"; debug_description = "Show locking operations"; debug_value = false } module Mutex = MutexCore module Condition = ConditionCore module MutexDebug = MutexCoreDebug module ConditionDebug = ConditionCoreDebug (* * The state identifier is just an integer. *) type state_id = int (* * Each thread has a translation to a state, * and a condition variable for blocking the thread. * When the thread has a lock, the operation is set * to the state of the lock. *) type thread = { thread_id : int; thread_parent : int; thread_cond : Condition.t; mutable thread_state : state_id } type thread_request = RequestRead of thread | RequestWrite of thread (* * A handle is a particular copy of a value. * handle_value: the actual data value * handle_queue: the queue of waiting threads * handle_state: the current active state * handle_active: a table of the currently active threads * handle_readers: the number of active readers * handle_writers: the number of active and queued writers *) type handle_state = HandleUnlocked | HandleReading | HandleWriting type handle_mode = ModeReading | ModeWriting type 'a handle = { handle_value : 'a; handle_debug : string; handle_queue : thread_request Queue.t; mutable handle_state : handle_state; mutable handle_readers : int; mutable handle_writers : int; mutable handle_active : handle_mode IntTable.t } (* * The info struct is the table of handles for all threads * for this specific value. *) type 'a info = { info_default : 'a; info_debug : string; info_fork : ('a -> 'a); mutable info_forks : IntSet.t; mutable info_entries : 'a handle IntTable.t } (* * An entry corresponds to a single data value. * The value can be shared by all threads, or * each thread may have a private copy. *) type 'a entry = EntryShared of 'a handle | EntryPrivate of 'a info (* * The state has: * state_lock: a master lock * state_index: the index for the next state to be allocated. * state_threads: info for each thread we know about *) type state = { state_lock : Mutex.t; mutable state_index : int; mutable state_threads : thread IntTable.t } let state = let thread_id = ThreadCore.id (ThreadCore.self ()) in let current = { thread_id = thread_id; thread_parent = thread_id; thread_cond = Condition.create (); thread_state = 1 } in { state_lock = Mutex.create "Lm_thread.state"; state_threads = IntTable.add IntTable.empty thread_id current; state_index = 2 } (* * Debugging. *) let print_thread_id out = fprintf out "%d" (ThreadCore.id (ThreadCore.self ())) (* * Perform something with the state lock. *) let with_lock debug f x = if !debug_lock then eprintf "\tLocking: %t: %s@." print_thread_id debug; Mutex.lock state.state_lock; try let result = f x in Mutex.unlock state.state_lock; if !debug_lock then eprintf "\tUnlocking: %t: %s@." print_thread_id debug; result with exn -> Mutex.unlock state.state_lock; if !debug_lock then eprintf "Unlocking: %t: %s (exception)@." print_thread_id debug; raise exn (* * Release the lock temporarily. *) let with_unlock debug f x = if !debug_lock then eprintf "\tUnlocking temporarily: %t: %s@." print_thread_id debug; Mutex.unlock state.state_lock; try let result = f x in Mutex.lock state.state_lock; if !debug_lock then eprintf "\tRelocking: %t: %s@." print_thread_id debug; result with exn -> Mutex.lock state.state_lock; if !debug_lock then eprintf "Relocking: %t: %s (exception)@." print_thread_id debug; raise exn (* * Create a new thread. Assign a new thread struct. * The thread uses the same state as its parent. *) let create_thread f x = let parent = ThreadCore.id (ThreadCore.self ()) in let pthread = try IntTable.find state.state_threads parent with Not_found -> raise (Invalid_argument "Thread.create: current thread is unknown") in let start () = let id = ThreadCore.id (ThreadCore.self ()) in let cleanup () = with_lock "create_thread.cleanup" (fun () -> state.state_threads <- IntTable.remove state.state_threads id) () in (* Set up the new state *) with_lock "create_thread.start" (fun () -> let thread = { thread_id = id; thread_parent = parent; thread_cond = Condition.create (); thread_state = pthread.thread_state } in state.state_threads <- IntTable.add state.state_threads id thread) (); (* Run the function, and clean up afterwards *) try f x; cleanup () with exn -> eprintf "Uncaught thread exception: %s@." (Printexc.to_string exn); cleanup () in let child = ThreadCore.create start () in if !debug_lock then eprintf "Started child %i from thread %t@." (ThreadCore.id child) print_thread_id; child (* * Get the thread info for the current thread. * Every thread must have some info. *) let get_thread_info () = let tid = ThreadCore.id (ThreadCore.self ()) in try IntTable.find state.state_threads tid with Not_found -> raise (Invalid_argument "Lm_thread.get_thread_info: unknown thread") let get_parent_info thread = try IntTable.find state.state_threads thread.thread_parent with Not_found -> raise (Invalid_argument "Lm_thread.get_thread_info: unknown parent thread") (* * Create a new state identifier. *) let create_state () = with_lock "create_state" (fun () -> let index = state.state_index in state.state_index <- succ index; index) () (* * Get the current state identifier. *) let current_state () = let thread = get_thread_info () in thread.thread_state (* * Set the state for the current thread. *) let set_state id = let thread = get_thread_info () in thread.thread_state <- id (* * Use the specified state for the current thread. *) let with_state id f x = let thread = get_thread_info () in let oid = thread.thread_state in try thread.thread_state <- id; let result = f x in thread.thread_state <- oid; result with exn -> thread.thread_state <- oid; raise exn (* * Once a thread finishes, unlock the remaining processes. * We assume a lock. *) let release handle = let len = Queue.length handle.handle_queue in if len <> 0 then match Queue.take handle.handle_queue with RequestRead thread -> Condition.signal thread.thread_cond; let rec unblock i = if i <> 0 then let info = Queue.peek handle.handle_queue in match info with RequestRead thread -> ignore (Queue.take handle.handle_queue); Condition.signal thread.thread_cond; unblock (pred i) | RequestWrite _ -> () in unblock (pred len) | RequestWrite thread -> Condition.signal thread.thread_cond (* * Get the lock record. * We assume the state is locked. * Just in case, check the lock. *) let rec fork_handle thread info = let state_id = thread.thread_state in try IntTable.find info.info_entries state_id with Not_found -> if !debug_lock then eprintf "Forking handle: %s: state=%d parent=%d this=%d@." (**) info.info_debug state_id thread.thread_parent thread.thread_id; (* Prevent recursion *) let () = info.info_forks <- IntSet.add info.info_forks state_id in (* Get the new value *) let handle_value = if state_id = 1 then info.info_default else if thread.thread_parent = thread.thread_id then with_unlock "fork_handle" info.info_fork info.info_default else let parent = get_parent_info thread in let parent_handle = fork_handle parent info in with_unlock "fork_handle" info.info_fork parent_handle.handle_value in (* Call the fork function *) let handle = { handle_value = handle_value; handle_debug = Printf.sprintf "%s[%d]" info.info_debug state_id; handle_state = HandleUnlocked; handle_queue = Queue.create (); handle_readers = 0; handle_writers = 0; handle_active = IntTable.empty } in if !debug_lock then eprintf "Forked handle: %s: state=%d parent=%d this=%d@." (**) handle.handle_debug state_id thread.thread_parent thread.thread_id; info.info_entries <- IntTable.add info.info_entries state_id handle; info.info_forks <- IntSet.remove info.info_forks state_id; fork_handle thread info let handle_of_info thread info = with_lock "handle_of_info" (fork_handle thread) info let get_handle thread entry = let handle = match entry with EntryShared handle -> handle | EntryPrivate info -> handle_of_info thread info in if !debug_lock then eprintf "get_handle: %s@." handle.handle_debug; handle (* * Reader operations. *) let read_lock thread handle = with_lock "read_lock" (fun () -> if handle.handle_writers <> 0 then begin if !debug_lock then eprintf "read_lock: %t: %s: waiting@." print_thread_id handle.handle_debug; Queue.add (RequestRead thread) handle.handle_queue; Condition.wait thread.thread_cond state.state_lock end; handle.handle_state <- HandleReading; handle.handle_readers <- succ handle.handle_readers; handle.handle_active <- IntTable.add handle.handle_active thread.thread_id ModeReading) () let read_unlock thread handle = with_lock "read_unlock" (fun () -> let count = pred handle.handle_readers in handle.handle_readers <- count; handle.handle_active <- IntTable.remove handle.handle_active thread.thread_id; if count = 0 then begin handle.handle_state <- HandleUnlocked; release handle end) () (* * Perform a read. * If we already have a read lock, just run the function. *) let read_wrap thread handle f = read_lock thread handle; try let x = f handle.handle_value in read_unlock thread handle; x with exn -> read_unlock thread handle; raise exn let read_thread_handle thread handle f = if IntTable.mem handle.handle_active thread.thread_id then f handle.handle_value else read_wrap thread handle f let read entry f = if !debug_lock then eprintf "Read: %t: enter@." print_thread_id; let thread = get_thread_info () in let handle = get_handle thread entry in let x = read_thread_handle thread handle f in if !debug_lock then eprintf "Read: %t: %s: end@." print_thread_id handle.handle_debug; x (* * Writer operations. *) let write_lock thread handle = if !debug_lock then eprintf "write_lock: %t: begin@." print_thread_id; with_lock "write_lock" (fun () -> handle.handle_writers <- succ handle.handle_writers; if handle.handle_state <> HandleUnlocked then begin if !debug_lock then eprintf "write_lock: %t: waiting@." print_thread_id; Queue.add (RequestWrite thread) handle.handle_queue; Condition.wait thread.thread_cond state.state_lock end; handle.handle_state <- HandleWriting; handle.handle_active <- IntTable.add handle.handle_active thread.thread_id ModeWriting) () let write_unlock thread handle = if !debug_lock then eprintf "write_unlock: %t: begin@." print_thread_id; with_lock "write_unlock" (fun () -> handle.handle_state <- HandleUnlocked; handle.handle_writers <- pred handle.handle_writers; handle.handle_active <- IntTable.remove handle.handle_active thread.thread_id; release handle) () let write_wrap thread handle f = if !debug_lock then eprintf "write_wrap: %t: begin@." print_thread_id; write_lock thread handle; try let x = f handle.handle_value in write_unlock thread handle; x with exn -> if !debug_lock then eprintf "write_wrap: %t: exception@." print_thread_id; write_unlock thread handle; raise exn let write_thread_handle thread handle f = let locked = try match IntTable.find handle.handle_active thread.thread_id with ModeReading -> raise (Invalid_argument "State.write: handle already has a read lock") | ModeWriting -> true with Not_found -> false in if locked then if !debug_lock then begin eprintf "write_thread_handle: %t: begin: already locked@." print_thread_id; try let x = f handle.handle_value in eprintf "write_thread_handle: %t: end: already locked@." print_thread_id; x with exn -> eprintf "write_thread_handle: %t: end: already locked (exception)@." print_thread_id; raise exn end else f handle.handle_value else write_wrap thread handle f let write entry f = if !debug_lock then eprintf "Write: %t: enter@." print_thread_id; let thread = get_thread_info () in let handle = get_handle thread entry in if !debug_lock then eprintf "Writing begin: %t: %s: writers = %d@." print_thread_id handle.handle_debug handle.handle_writers; let x = write_thread_handle thread handle f in if !debug_lock then eprintf "Writing end: %t: %s: writers = %d@." print_thread_id handle.handle_debug handle.handle_writers; x (* * Unlock temporarily. *) let unlock_unlock thread handle = let mode = try IntTable.find handle.handle_active thread.thread_id with Not_found -> raise (Invalid_argument "State.unlock: thread does not have a lock") in let () = match mode with ModeReading -> read_unlock thread handle | ModeWriting -> write_unlock thread handle in mode let unlock_lock thread handle mode = match mode with ModeReading -> read_lock thread handle | ModeWriting -> write_lock thread handle (* * Unlock function. *) let unlock_thread_handle thread handle f = let mode = unlock_unlock thread handle in try let x = f () in unlock_lock thread handle mode; x with exn -> unlock_lock thread handle mode; raise exn let unlock entry f = if !debug_lock then eprintf "Unlock: %t: begin@." print_thread_id; let thread = get_thread_info () in let handle = get_handle thread entry in let x = unlock_thread_handle thread handle f in if !debug_lock then eprintf "Unlock: %t: %s: end@." print_thread_id handle.handle_debug; x (* * Get the value. * Verify that this thread has a lock on the object. *) let get_thread_handle thread handle = if IntTable.mem handle.handle_active thread.thread_id then handle.handle_value else raise (Invalid_argument (Printf.sprintf "State.get: %s: entry is not locked" handle.handle_debug)) let get entry = if !debug_lock then eprintf "Get: %t: begin@." print_thread_id; let thread = get_thread_info () in let handle = get_handle thread entry in let x = get_thread_handle thread handle in if !debug_lock then eprintf "Get: %t: %s: end@." print_thread_id handle.handle_debug; x (* * Create a shared value. *) let shared_val debug x = let handle = { handle_value = x; handle_debug = debug; handle_state = HandleUnlocked; handle_queue = Queue.create (); handle_readers = 0; handle_writers = 0; handle_active = IntTable.empty } in EntryShared handle (* * Create a private value. * This means that each state has its own copy of the * data. *) let private_val debug x fork = let info = { info_default = x; info_debug = debug; info_fork = fork; info_forks = IntSet.empty; info_entries = IntTable.empty } in EntryPrivate info (* * Thread implementation. *) module Thread = struct type t = ThreadCore.t type id = int let enabled = ThreadCore.enabled let create = create_thread let self = ThreadCore.self let join = ThreadCore.join let id = ThreadCore.id let sigmask = ThreadCore.sigmask let raise_ctrl_c_wrapper = ThreadCore.raise_ctrl_c_wrapper end (* * States are identified by integers. *) module State = struct type t = state_id (* Silly redefinition to break type recursion *) type 'a local_entry = 'a entry type 'a entry = 'a local_entry (* * State operations. *) let current = current_state let create = create_state let set = set_state let with_state = with_state (* * Variables. *) let shared_val = shared_val let private_val = private_val let read = read let write = write let unlock = unlock let get = get end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_util.ml0000664000152300015230000000330410651225205022317 0ustar jyhjyh(* * Useful utilities for threads. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_thread (* * Printer locking. *) let print_lock = Mutex.create "Lm_thread_util" let lock_printer () = Mutex.lock print_lock let unlock_printer () = flush stdout; flush stderr; Mutex.unlock print_lock (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat_tex.mli0000664000152300015230000000277010456222231022523 0ustar jyhjyh(* * Text-based printing. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_rformat_raw open Lm_rformat val make_tex_printer : raw_printer -> printer val print_tex_channel : int -> buffer -> out_channel -> unit val print_tex_buffer : int -> buffer -> Buffer.t -> unit val print_tex_string : int -> buffer -> string (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_printf.ml0000664000152300015230000001464010653722351021330 0ustar jyhjyh(* * Override Pervasives IO with Format IO * * ---------------------------------------------------------------- * * Copyright (C) 2000-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * Modified By: Aleksey Nogin , *) include Format (* * Redirect formatter's output to both a channel and a log file. * The log file will be appended (not truncated), lockf-mutexed, * and all the entries will be annotated with the PID of the logger: * [|PID1: string1|][|PID2: string2|]... * (with consequetive non-NL strings from the same PID merged together). *) let extra_formatting file chan formatter = let log = open_out_gen [Open_wronly; Open_append; Open_creat] 0o600 file in let pid_file = file ^ ".pid" in let pid_fd = Unix.openfile pid_file [Unix.O_RDWR; Unix.O_CREAT] 0o666 in let get_pid () = ignore (Unix.lseek pid_fd 0 Unix.SEEK_SET); Unix.lockf pid_fd Unix.F_LOCK 0; try let s = String.make 10 ' ' in let i = Unix.read pid_fd s 0 10 in let s = String.sub s 0 i in int_of_string s with _ -> 0 in let write_pid i = ignore (Unix.lseek pid_fd 0 Unix.SEEK_SET); let () = Unix.ftruncate pid_fd 0 in let s = string_of_int i in ignore (Unix.single_write pid_fd s 0 (String.length s)); ignore (Unix.lseek pid_fd 0 Unix.SEEK_SET); Unix.lockf pid_fd Unix.F_ULOCK 0 in let flush () = flush chan; flush log in let do_newline nl = let old_pid = get_pid () in if old_pid <> 0 then output_string log "|]"; output_string chan nl; output_string log "\n"; flush (); write_pid 0 in let rec out s i len = if len > 0 then begin let s = String.sub s i len in if String.contains s '\r' then begin let i = String.index s '\r' in out s 0 i; if (i < len - 1) && s.[i+1] = '\n' then begin do_newline "\n"; out s (i+2) (len - i - 2) end else begin do_newline "\r"; out s (i+1) (len - i - 1) end end else if String.contains s '\n' then begin let i = String.index s '\n' in out s 0 i; do_newline "\n"; out s (i+1) (len - i - 1) end else begin output_string chan s; let old_pid = get_pid () in let pid = Unix.getpid () in if pid <> old_pid then begin if old_pid <> 0 then output_string log "|]"; output_string log (sprintf "[|%i: " pid) end; output_string log s; write_pid pid end end in let newline () = do_newline "\n" in let spaces i = let s = String.make i ' ' in out s 0 i; in pp_set_all_formatter_output_functions formatter ~out ~flush ~newline ~spaces (* * Copy the std_formatter and err_formatter outputs to log files. * * XXX: TODO: for now this is commented out, we might consider doing * this based on an environment variable. let () = extra_formatting "/tmp/mylog.out" stdout std_formatter; extra_formatting "/tmp/mylog.err" stderr err_formatter *) (* * For now, just use normal output channels. *) type out_channel = formatter (* * Standard channels. *) let stdout = std_formatter let stderr = err_formatter let stdstr = str_formatter (* * Get the string from the string formatter. *) let flush_stdstr = flush_str_formatter (* * Open new output channels. *) let open_out name = formatter_of_out_channel (open_out name) let open_out_bin name = formatter_of_out_channel (open_out_bin name) (* * Output. *) let output_char = pp_print_char let output_string = pp_print_string (* * Normal printing. *) let print_char = pp_print_char std_formatter let print_int = pp_print_int std_formatter let print_string = pp_print_string std_formatter let prerr_char = pp_print_char err_formatter let prerr_int = pp_print_int err_formatter let prerr_string = pp_print_string err_formatter (* * Print a newline and flush. *) let flush buf = pp_print_flush buf () let eflush buf = pp_print_newline buf () (* * Printing functions. *) let printf = printf let eprintf = eprintf let sprintf = sprintf let fprintf = fprintf let bprintf = bprintf (* * Formatting functions. *) let set_all_formatter_output_functions out flush newline spaces = set_all_formatter_output_functions ~out ~flush ~newline ~spaces let pp_set_all_formatter_output_functions buf out flush newline spaces = pp_set_all_formatter_output_functions buf ~out ~flush ~newline ~spaces (* * List separated by semicolons. *) let rec print_any_list print out l = match l with [h] -> print out h | h::t -> print out h; output_string out "; "; print_any_list print out t | [] -> () let print_string_list = print_any_list pp_print_string let print_int_list = print_any_list pp_print_int (* * Get a formatter. *) let out_channel_of_formatter out = out let rec pp_print_any_list print buf = function [] -> () | [a] -> print buf a | a::rest -> print buf a; pp_print_string buf ";"; pp_print_space buf (); pp_print_any_list print buf rest (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_splay.mli0000664000152300015230000000303510322060244021310 0ustar jyhjyh(* General splaying operations on ordered trees * Geoffrey Irving * $Id: lm_splay.mli 7878 2005-10-09 00:13:24Z jyh $ *) (* Notes: * 1. All functions assume that a total order of 'a exists, and that all cuts respect it. * 2. A cut is basically a generalized element. If you have a normal element y, the cut * corresponding to it is compare y (partially applied). However, cuts can also be in * between all elements (y + epsilon), or infinite (fun _ -> +-1). * 3. The semantics of the splay operation can be rigorously defined as follows: * If splay c t = l, x, r, then union(l,x,r) = t, l < c < r, l < x < r. * 4. The splay functions take and return expanded nodes for efficiency reasons. They * could have been defined by * val splay : 'a cut -> 'a tree -> 'a tree, * but that would require duplicated matchings. Although this make the definitions * slightly uglier, it will probably make the use of this module much cleaner. * 5. splay_max is equivalent to splay (fun _ -> 1), and is included for convenience and * performance reasons. The same goes for splay_min. * 6. This code is purely functional. *) (**** types *) type 'a tree = Leaf | Node of 'a tree * 'a * 'a tree (* cut x is <, =, or > 0 depending on whether a <, =, or > x, for some a *) type 'a cut = 'a -> int (**** splaying *) val splay : 'a cut -> 'a tree -> 'a -> 'a tree -> 'a tree * 'a * 'a tree val splay_max : 'a tree -> 'a -> 'a tree -> 'a tree * 'a val splay_min : 'a tree -> 'a -> 'a tree -> 'a * 'a tree omake-0.9.8.5/src/libmojave-external/stdlib/lm_large_array.mli0000664000152300015230000000246210464477010022465 0ustar jyhjyh(* * This is an array that can be larger than * the default OCaml arrays. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_array_sig module LargeArray : ArraySig (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_int_util.mli0000664000152300015230000000250610464477010022023 0ustar jyhjyh(* * Some utility functions on integers. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * Slow algorithm for computing log base 2 of a number. * Rounds down. *) val log2 : int -> int (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat_html.ml0000664000152300015230000002200610556173566022531 0ustar jyhjyh(* * Formatting to HTML documents. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_rformat_raw open Lm_rformat (* * Kinds of input. *) type data = VisibleString of string | InvisibleString of string | AtomicString of string (* * We hack the indentation in the HTML printer. * Format the data into lines, and print the tabstops in * invisible mode. * * The prefix is the white space for the left margin. *) type html_buffer = { html_line : data Queue.t; mutable html_column : int; mutable html_prefix : data list; mutable html_spacer : string; html_print_string : string -> unit; html_print_newline : unit -> unit } (* * Tagging functions. *) type html_tagger_fun = NoTagger | StringTagger of string | FunTagger of (string -> string) type html_tagger_pair = { html_tag_begin : html_tagger_fun; html_tag_end : html_tagger_fun } type html_tagger = html_tagger_pair option (* * Have to escape special characters. *) let html_escape_string buffer s = let len = String.length s in let rec collect i j = if j != len then match s.[j] with '<' -> collect_escape i j "<" | '>' -> collect_escape i j ">" | '&' -> collect_escape i j "&" | '"' -> collect_escape i j """ | _ -> collect i (succ j) else if i = 0 then Buffer.add_string buffer s else if i < j then Buffer.add_substring buffer s i (j - i) and collect_escape i j s' = if i < j then Buffer.add_substring buffer s i (j - i); Buffer.add_string buffer s'; collect (succ j) (succ j) in collect 0 0 (* * For external use. *) let escape s = let buf = Buffer.create 16 in html_escape_string buf s; Buffer.contents buf (* * Extract the entire line. *) let html_line buf = let buffer = Buffer.create 100 in Queue.iter (function VisibleString s -> html_escape_string buffer s | InvisibleString s | AtomicString s -> Buffer.add_string buffer s) buf.html_line; Buffer.contents buffer let html_push_line buf = let line = html_line buf in buf.html_print_string line; Queue.clear buf.html_line let html_flush buf = html_push_line buf (* * Get the spacer from the prefix. *) let html_spacer buf = let buffer = Buffer.create 16 in Buffer.add_string buffer ""; List.iter (fun item -> match item with VisibleString s -> html_escape_string buffer s | InvisibleString _ -> () | AtomicString s -> Buffer.add_string buffer s) buf.html_prefix; Buffer.add_string buffer ""; Buffer.contents buffer (* * Get a new prefix buffer. * The entire line is (buf.html_prefix @ buf.html_current_line). * Build the line, and truncate it. *) let html_prefix buf col = let { html_column = cur; html_prefix = prefix; html_line = line } = buf in (* Add the visible elements in the current line to the prefix *) let prefix = if col < cur then prefix else List.rev (Queue.fold (fun prefix item -> match item with VisibleString _ | AtomicString _ -> item :: prefix | InvisibleString _ -> prefix) (List.rev prefix) line) in (* Truncate the prefix to the current column *) let rec collect prefix cur items = match items with item :: items -> (match item with VisibleString s -> let len = String.length s in let next = cur + len in if next <= col then collect (item :: prefix) next items else let s = String.sub s 0 (col - cur) in VisibleString s :: prefix | InvisibleString _ -> collect prefix cur items | AtomicString _ -> let next = succ cur in if next <= col then collect (item :: prefix) next items else prefix) | [] -> if cur < col then VisibleString (String.make (col - cur) 'm') :: prefix else prefix in buf.html_column <- col; buf.html_prefix <- List.rev (collect [] 0 prefix); buf.html_spacer <- html_spacer buf (* * Newline. * * The col is the new *absolute* tabstop. * * Compute the new tabstop prefix, then push the line, * and save the new tabstop. *) let html_tab buf (col, _) _ = if col = 0 then begin html_push_line buf; buf.html_print_newline (); buf.html_print_string "
\n"; buf.html_column <- 0; buf.html_prefix <- []; buf.html_spacer <- "" end else let spacer = if col <> buf.html_column then html_prefix buf col; buf.html_spacer in html_push_line buf; buf.html_print_newline (); buf.html_print_string "
\n"; buf.html_print_string spacer (* * Print strings. *) let html_print_string buf s = Queue.add (VisibleString s) buf.html_line let html_print_invis buf s = Queue.add (InvisibleString s) buf.html_line let html_print_atomic buf s = Queue.add (AtomicString s) buf.html_line let html_tag tagger buf = match tagger with Some { html_tag_begin = FunTagger tagger } -> (fun s -> Queue.add (InvisibleString (tagger s)) buf.html_line) | Some { html_tag_begin = StringTagger tagger } -> (fun _s -> Queue.add (InvisibleString tagger) buf.html_line) | Some { html_tag_begin = NoTagger } | None -> (fun _s -> ()) let html_etag tagger buf = match tagger with Some { html_tag_end = FunTagger tagger } -> (fun s -> Queue.add (InvisibleString (tagger s)) buf.html_line) | Some { html_tag_end = StringTagger tagger } -> (fun _s -> Queue.add (InvisibleString tagger) buf.html_line) | Some { html_tag_end = NoTagger } | None -> (fun _s -> ()) (* * An HTML printer. *) let make_html_printer_aux tagger raw = let { raw_print_string = output_string; raw_print_newline = output_newline } = raw in let print_string s = output_string s 0 (String.length s) in let buf = { html_line = Queue.create (); html_column = 0; html_prefix = []; html_spacer = ""; html_print_string = print_string; html_print_newline = output_newline } in let info = { print_string = html_print_string buf; print_invis = html_print_invis buf; print_atomic = html_print_atomic buf; print_tab = html_tab buf; print_begin_tag = html_tag tagger buf; print_end_tag = html_etag tagger buf } in buf, info let make_html_printer tagger raw = snd (make_html_printer_aux tagger raw) let print_html_raw rmargin tagger buf raw = let hbuf, info = make_html_printer_aux tagger raw in print_to_printer buf rmargin info; html_flush hbuf; raw.raw_print_flush () let print_html_channel rmargin tagger buf out = print_html_raw rmargin tagger buf (raw_channel_printer out) let print_html_buffer rmargin tagger buf out = print_html_raw rmargin tagger buf (raw_buffer_printer out) let print_html_string rmargin tagger buf = let out = Buffer.create 100 in print_html_buffer rmargin tagger buf out; Buffer.contents out (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_hash_set.ml0000664000152300015230000001524010464477010021620 0ustar jyhjyh(* * Overlay list of elements as small sets over another * set implementation. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) module Make (Ord : Set.OrderedType) = struct (************************************************************************ * TYPES * ************************************************************************) (* * Type of elements in the set. *) type elt = Ord.t (* * The set is a hashtable, * but most operations are delayed. *) type table = Empty | Element of elt | Union of table * table | Add of table * elt | Remove of table * elt | Hash of (elt, elt) Hashtbl.t * int type t = { mutable table : table } (* * Exception to abort intersections early. *) exception Found (************************************************************************ * IMPLEMENTATION * ************************************************************************) (* * Get the delayed hashtable. *) let rec compile table = function Empty -> 0 | Element x -> if Hashtbl.mem table x then 0 else begin Hashtbl.add table x x; 1 end | Union (s1, s2) -> compile table s1 + compile table s2 | Add (s1, x) -> let count = compile table s1 in if Hashtbl.mem table x then count else begin Hashtbl.add table x x; succ count end | Remove (s1, x) -> let was_there = Hashtbl.mem table x in let count = compile table s1 in if (not was_there) && Hashtbl.mem table x then begin Hashtbl.remove table x; pred count end else count | Hash (hash, _) -> let count = ref 0 in let add x y = if not (Hashtbl.mem table x) then begin Hashtbl.add table x y; incr count end in begin Hashtbl.iter add hash; !count end let flush s1 = match s1.table with Hash (table, count) -> table, count | prog -> let table = Hashtbl.create 19 in let count = compile table prog in s1.table <- Hash (table, count); table, count (* * Create the set from a list. *) let of_sorted_list elements = let table = Hashtbl.create 19 in List.iter (fun x -> Hashtbl.add table x x) elements; { table = Hash (table, List.length elements) } (* * Get the elements in the set. * They are not sorted. *) let elements s1 = let table, _ = flush s1 in let elements = ref [] in Hashtbl.iter (fun x _ -> elements := x :: !elements) table; !elements let to_list = elements (* * Add an element. *) let add s1 x = { table = Add (s1.table, x) } (* * Membership in the set. *) let mem s1 x = let table, _ = flush s1 in try let _ = Hashtbl.find table x in true with Not_found -> false (* * Remove an element. *) let remove { table = table } x = { table = Remove (table, x) } (* * Set operations. *) let empty = { table = Empty } let is_empty s1 = let _, count = flush s1 in count = 0 let singleton x = { table = Element x } let union s1 s2 = { table = Union (s1.table, s2.table) } let iter f s1 = Hashtbl.iter (fun x _ -> f x) (fst (flush s1)) let cardinal s1 = snd (flush s1) let of_list l = List.fold_left (fun set item -> add set item) empty l (* * Intersection. *) let intersect_aux table1 table2 = let check x _ = try Hashtbl.find table1 x; raise Found with Not_found -> () in try Hashtbl.iter check table2; false with Found -> true let intersectp set1 set2 = let table1, count1 = flush set1 in let table2, count2 = flush set2 in if count1 < count2 then intersect_aux table2 table1 else intersect_aux table1 table2 (* * Filter out the elements that are in the intersection. *) let rec mem_filt s = function [] -> [] | (h :: t) as l -> if mem s h then let rem = mem_filt s t in if rem == t then l else h :: rem else mem_filt s t let rec not_mem_filt s = function [] -> [] | (h :: t) as l -> if mem s h then not_mem_filt s t else let rem = not_mem_filt s t in if rem == t then l else h :: rem let rec fst_mem_filt s = function [] -> [] | (((v, _) as h) :: t) as l -> if mem s v then let rem = fst_mem_filt s t in if rem == t then l else h :: rem else fst_mem_filt s t end (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_set_sig.ml0000664000152300015230000001222710464477010021461 0ustar jyhjyh(* * Types of the Set and Table modules. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) open Lm_printf (* * Used for expressing sharing constraints. *) module type TypeSig = sig type t end (* * A generic type of totally ordered elements. *) module type OrderedType = sig type t val compare : t -> t -> int end (* * Ordered type need for debugging. *) module type OrderedTypeDebug = sig type t val print : out_channel -> t -> unit val compare : t -> t -> int end (* * Set signature. *) module type MinimalSetSig = sig type elt type t val empty : t val is_empty : t -> bool val mem : t -> elt -> bool val add : t -> elt -> t val singleton : elt -> t val remove : t -> elt -> t val cardinal : t -> int val union : t -> t -> t val intersectp : t -> t -> bool val iter : (elt -> unit) -> t -> unit val mem_filt : t -> elt list -> elt list val fst_mem_filt : t -> (elt * 'a) list -> (elt * 'a) list val not_mem_filt : t -> elt list -> elt list val of_sorted_list : elt list -> t val of_list : elt list -> t val to_list : t -> elt list val elements : t -> elt list end (* * Our version. *) module type LmSet = sig include MinimalSetSig val inter : t -> t -> t val diff : t -> t -> t val compare : t -> t -> int val equal : t -> t -> bool (* * These two functions are identical. * subset s1 s2 tests whether s1 is a subset of s2. *) val subset : t -> t -> bool val is_subset : t -> t -> bool val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a val range_fold : (elt -> int) -> ('a -> elt -> 'a) -> 'a -> t -> 'a val for_all : (elt -> bool) -> t -> bool val exists : (elt -> bool) -> t -> bool val filter : (elt -> bool) -> t -> t val partition : (elt -> bool) -> t -> t * t val min_elt : t -> elt val max_elt : t -> elt val choose : t -> elt val add_list : t -> elt list -> t val subtract_list : t -> elt list -> t end module type LmSetDebug = sig include LmSet val print : out_channel -> t -> unit end (* * Debugging version of a set. *) module type DebugMinimalSetSig = sig include MinimalSetSig (* Debugging function *) val print : out_channel -> t -> unit end (* * Backwards-compatible version. *) module type S = sig type elt type t val empty : t val is_empty : t -> bool val mem : elt -> t -> bool val add : elt -> t -> t val singleton : elt -> t val remove : elt -> t -> t val union : t -> t -> t val inter : t -> t -> t val diff : t -> t -> t val compare : t -> t -> int val equal : t -> t -> bool val subset : t -> t -> bool val iter : (elt -> unit) -> t -> unit val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a val for_all : (elt -> bool) -> t -> bool val exists : (elt -> bool) -> t -> bool val filter : (elt -> bool) -> t -> t val partition : (elt -> bool) -> t -> t val cardinal : t -> int val elements : t -> elt list val min_elt : t -> elt val max_elt : t -> elt val choose : t -> elt end (* * Linearly ordered set. *) module type LinearSetSig = sig type elt type t type index = int val empty : t val singleton : elt -> t val length : t -> int val get : t -> index -> elt val make : int -> elt -> t val create : int -> elt -> t val to_list : t -> elt list val of_sorted_list : elt list -> t val of_list : elt list -> t val iter : (elt -> unit) -> t -> unit val split : t -> index -> t * elt * t val append : t -> elt -> t -> t val append_list : t -> elt list -> t -> t val lazy_apply : (elt -> elt) -> t -> t val lazy_sub_map : (elt -> elt) -> t -> index -> index -> t val mapi : (index -> elt -> elt) -> t -> t val init : int -> (index -> elt) -> t val collect : (elt, t) Lm_array_util.array_part list -> t end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_rformat_raw.mli0000664000152300015230000000313610456222231022511 0ustar jyhjyh(* * Low-level output for the formatter. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Raw printer just has two methods. *) type raw_printer = { raw_print_string : string -> int -> int -> unit; raw_print_flush : unit -> unit; raw_print_newline : unit -> unit; raw_print_spaces : int -> unit } val raw_channel_printer : out_channel -> raw_printer val raw_buffer_printer : Buffer.t -> raw_printer (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_core.mli0000664000152300015230000000325310647734513022462 0ustar jyhjyh(* * Our personal implementation of threads. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_thread_sig module MutexCore : MutexSig module ConditionCore : ConditionSig with type mutex = MutexCore.t module ThreadCore : ThreadSig (* * A debugging version that flags the errors. *) val debug_mutex: bool ref module MutexCoreDebug : MutexSig module ConditionCoreDebug : ConditionSig with type mutex = MutexCoreDebug.t (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_sys.mli0000664000152300015230000000565610456222231021015 0ustar jyhjyh(* * System interface. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu *) external argv : string array = "%argv" external file_exists : string -> bool = "%file_exists" external remove : string -> unit = "%file_remove" external rename : string -> string -> unit = "%file_rename" external getenv : string -> string = "%getenv" external time : unit -> float = "%time" external chdir : string -> unit = "%chdir" external getcwd : unit -> string = "%getcwd" external interactive : bool ref = "%interactive" external os_type : string = "%os_type" external word_size : int = "%word_size" external max_string_length : int = "%max_string_length" external max_array_length : int = "%max_array_length" external sigabrt : int = "%sigabrt" external sigalrm : int = "%sigalrm" external sigfpe : int = "%sigfpe" external sighup : int = "%sighup" external sigill : int = "%sigill" external sigint : int = "%sigint" external sigkill : int = "%sigkill" external sigpipe : int = "%sigpipe" external sigquit : int = "%sigquit" external sigsegv : int = "%sigsegv" external sigterm : int = "%sigterm" external sigusr1 : int = "%sigusr1" external sigusr2 : int = "%sigusr2" external sigchld : int = "%sigchld" external sigcont : int = "%sigcont" external sigstop : int = "%sigstop" external sigtstp : int = "%sigtstp" external sigttin : int = "%sigttin" external sigttou : int = "%sigttou" external sigvtalrm : int = "%sigvtalrm" external sigprof : int = "%sigprof" type signal_behavior = Signal_default | Signal_ignore | Signal_handle of (int -> unit) val signal : int -> signal_behavior -> signal_behavior val set_signal : int -> signal_behavior -> unit exception Break val catch_break : bool -> unit (* * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_file_util.mli0000664000152300015230000000406110464477010022146 0ustar jyhjyh(* * Operations on files. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* Can't open and can't find a file *) exception CantOpen of string exception CantFind of string (* * Utilities on filenames. *) val parse_path : string list -> string -> string list val build_path : string list -> string val path_dir : string -> string val path_file : string -> string (* * Open a file somewhere in the path if possible. *) val open_in_path : string list -> string -> in_channel * string (* * Safe file handling. * the files are closed on exception. *) val with_input_file : string -> (in_channel -> 'a) -> 'a val with_output_file : string -> (out_channel -> 'a) -> 'a (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_array_linear_set.ml0000664000152300015230000000614310464477010023347 0ustar jyhjyh(* * This module provides a linearly ordered numbered set implementation * with lazy functions based on arrays * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Alexey Nogin *) open Lm_linear_set_sig type 'a linear_set = 'a array module Make (Type : TypeSig) = struct type elt = Type.t type t = Type.t linear_set type index = int let empty = [||] let singleton x = [|x|] let length = Array.length let create = Array.create let make = Array.create let iter = Array.iter let map = Array.map let of_list = Array.of_list let to_list = Array.to_list let lazy_apply = Array.map let concat = Array.append let append a1 e a2 = let l1 = length a1 and l2 = length a2 in if l1 = 0 && l2 = 0 then [|e|] else begin let r = create (succ l1 + l2) e in for i = 0 to l1 - 1 do Array.unsafe_set r i (Array.unsafe_get a1 i) done; let l1 = succ l1 in for i = 0 to l2 - 1 do Array.unsafe_set r (i + l1) (Array.unsafe_get a2 i) done; r end let fold f x a = let r = ref x in for i = 0 to Array.length a - 1 do r := f !r i (Array.unsafe_get a i) done; !r let get = Array.get let split t ind = Array.sub t 0 ind, t.(ind), Array.sub t (succ ind) (Array.length t - ind - 1) let lazy_sub_map = Lm_array_util.sub_map let append_list = Lm_array_util.append_list_array let mapi = Array.mapi let init = Array.init let collect = Lm_array_util.collect let for_all f a = let len = Array.length a in let rec search i = i = len || (f (Array.unsafe_get a i) && search (succ i)) in search 0 let exists f a = let len = Array.length a in let rec search i = i < len && (f (Array.unsafe_get a i) || search (succ i)) in search 0 end omake-0.9.8.5/src/libmojave-external/stdlib/lm_nocompare.ml0000664000152300015230000000333310456222231021777 0ustar jyhjyh(* * A special "custom" value that prohibits Pervasives.compare, * but allows marshalling. By temporarily adding this value as a * _first_ field in a * data structure that is not supposed to be * compared using Pervasives.compare, one can weed out all the * inappropriate usages of Pervasives.compare, (=), (<), etc. * * ------------------------------------------------ * * @begin[license] * Copyright (C) 2005, MetaPRL Group * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) type t external lm_nocompare_init : unit -> unit = "lm_nocompare_init" external lm_nocompare_create : unit -> t = "lm_nocompare_create" external lm_nomarshal_create : unit -> t = "lm_nomarshal_create" let nocompare = lm_nocompare_create () let nomarshal = lm_nomarshal_create () let it = nocompare omake-0.9.8.5/src/libmojave-external/stdlib/lm_thread_event.mli0000664000152300015230000000561210464477010022645 0ustar jyhjyh(* * This is a reimplementation of the standard OCaml Event * module. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1998-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * Events are delivered along a channel. *) type 'a channel val new_channel : unit -> 'a channel (* * Events are the objects sent along the channel. * Events are higher order values that can be combined * before the actual communication. *) type 'a event (* * Event is always ready for synchronization. *) val always : 'a -> 'a event (* * Event that, when synchronized, sends a value along the channel. *) val send : 'a channel -> 'a -> unit event (* * When synchornized, receive gets a sent value along the channel. *) val receive : 'a channel -> 'a event (* * Wrap a function around the value returned by the event. *) val wrap : 'a event -> ('a -> 'b) -> 'b event (* * Choose among a list of events. *) val choose : 'a event list -> 'a event (* * Sequence a collection of events. * Wait for an event from the first to the last. * Once the list becomes empty, this * event will never happen. *) val sequence : 'a event list -> 'a event (* * Same as sequence, but once the list becomes a singleton, * repeat events from the singleton. *) val sequence_final : 'a event list -> 'a event (* * Sync on one of the events. *) val select : int -> 'a event list -> 'a (* * If the event can be syncronized immediately, * sync it and return the value. *) val poll : 'a event -> 'a option (* * Complete the action described by the event. *) val sync : int -> 'a event -> 'a (* * -*- * Local Variables: * Caml-master: "refiner" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/stdlib/lm_array_sig.ml0000664000152300015230000000321510464477010022001 0ustar jyhjyh(* * This is just abstract interface to an array. * * ---------------------------------------------------------------- * * Copyright (C) 1999-2005 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu *) (* * Normal arrays. *) module type ArraySig = sig type 'a t val create : 'a -> 'a t val set : 'a t -> int -> 'a -> unit val get : 'a t -> int -> 'a val length : 'a t -> int end (* * Weak arrays return an option. *) module type WeakArraySig = sig type 'a t val create : unit -> 'a t val set : 'a t -> int -> 'a -> unit val get : 'a t -> int -> 'a option val length : 'a t -> int end (* * -*- * Local Variables: * Caml-master: "nl" * End: * -*- *) omake-0.9.8.5/src/libmojave-external/cutil/0000775000152300015230000000000010660137257016641 5ustar jyhjyhomake-0.9.8.5/src/libmojave-external/cutil/lm_compat_win32.c0000664000152300015230000001153610534115352022000 0ustar jyhjyh/* * Compatibility functions for the various versions of Win32. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #ifdef WIN32 /* Disable some of the warnings */ #pragma warning( disable : 4100 4201 ) #include #include #include #include "lm_compat_win32.h" /* * Pointers to the functions. */ static HANDLE (__stdcall *OpenThreadF)(DWORD, BOOL, DWORD); static BOOL (__stdcall *GetLongPathNameF)(LPCTSTR, LPTSTR, DWORD); static HANDLE (__stdcall *CreateToolhelp32SnapshotF)(DWORD, DWORD); static BOOL (__stdcall *Thread32FirstF)(HANDLE, LPTHREADENTRY32); static BOOL (__stdcall *Thread32NextF)(HANDLE, LPTHREADENTRY32); static HRESULT (__stdcall *SHGetFolderPathF)(HWND, int, HANDLE, DWORD, LPTSTR); static BOOL (__stdcall *SHGetSpecialFolderPathF)(HWND, LPTSTR, int, BOOL); /* * Compatibility. */ int ExistsOpenThread(void) { return OpenThreadF ? 1 : 0; } HANDLE CompatOpenThread(DWORD arg1, BOOL arg2, DWORD arg3) { return OpenThreadF(arg1, arg2, arg3); } BOOL CompatGetLongPathName(LPCTSTR arg1, LPTSTR arg2, DWORD arg3) { BOOL b = 0; if(GetLongPathNameF) b = GetLongPathNameF(arg1, arg2, arg3); return b; } HANDLE CompatCreateToolhelp32Snapshot(DWORD arg1, DWORD arg2) { return CreateToolhelp32SnapshotF(arg1, arg2); } BOOL CompatThread32First(HANDLE arg1, LPTHREADENTRY32 arg2) { return Thread32FirstF(arg1, arg2); } BOOL CompatThread32Next(HANDLE arg1, LPTHREADENTRY32 arg2) { return Thread32NextF(arg1, arg2); } HRESULT CompatSHGetFolderPath(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath) { if(SHGetFolderPathF) return SHGetFolderPathF(hwndOwner, nFolder, hToken, dwFlags, pszPath); else if(SHGetSpecialFolderPathF) { BOOL fCreate = nFolder & CSIDL_FLAG_CREATE ? TRUE : FALSE; nFolder &= ~CSIDL_FLAG_CREATE; fCreate = SHGetSpecialFolderPathF(hwndOwner, pszPath, nFolder, fCreate); return fCreate ? S_OK : E_FAIL; } else return E_NOTIMPL; } /* * Decide whether OpenThread is available. */ static void init(void) { HINSTANCE hinst; hinst = LoadLibrary(TEXT("KERNEL32")); if(hinst != NULL) { *(FARPROC *)&OpenThreadF = GetProcAddress(hinst, "OpenThread"); #ifdef UNICODE *(FARPROC *)&GetLongPathNameF = GetProcAddress(hinst, "GetLongPathNameW"); #else *(FARPROC *)&GetLongPathNameF = GetProcAddress(hinst, "GetLongPathNameA"); #endif *(FARPROC *)&CreateToolhelp32SnapshotF = GetProcAddress(hinst, "CreateToolhelp32Snapshot"); *(FARPROC *)&Thread32FirstF = GetProcAddress(hinst, "Thread32First"); *(FARPROC *)&Thread32NextF = GetProcAddress(hinst, "Thread32Next"); } hinst = LoadLibrary(TEXT("SHELL32")); if(hinst != NULL) { #ifdef UNICODE *(FARPROC *)&SHGetFolderPathF = GetProcAddress(hinst, "SHGetFolderPathW"); *(FARPROC *)&SHGetSpecialFolderPathF = GetProcAddress(hinst, "SHGetSpecialFolderPathW"); #else *(FARPROC *)&SHGetFolderPathF = GetProcAddress(hinst, "SHGetFolderPathA"); *(FARPROC *)&SHGetSpecialFolderPathF = GetProcAddress(hinst, "SHGetSpecialFolderPathA"); #endif } if(SHGetFolderPathF == 0) { hinst = LoadLibrary(TEXT("SHFOLDER")); if(hinst != NULL) { #ifdef UNICODE *(FARPROC *)&SHGetFolderPathF = GetProcAddress(hinst, "SHGetFolderPathW"); #else *(FARPROC *)&SHGetFolderPathF = GetProcAddress(hinst, "SHGetFolderPathA"); #endif } } } /* * ML interface. */ value lm_compat_init(value v_unit) { init(); return Val_unit; } #else /* !WIN32 */ value lm_compat_init(value v_unit) { return Val_unit; } #endif /* !WIN32 */ omake-0.9.8.5/src/libmojave-external/cutil/lm_termsize.c0000664000152300015230000000421110535630433021330 0ustar jyhjyh/* * Get terminal size * * ---------------------------------------------------------------- * * Copyright (C) 2000-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Authors: Jason Hickey * Aleksey Nogin */ #include #ifdef __CYGWIN__ # include #endif #ifdef WIN32 # include # pragma warning (disable: 4127 4189 4702) #else # include #endif #include #include #include #include value caml_term_size(value arg) { CAMLparam1(arg); CAMLlocal1(buf); /* Return a pair of numbers */ buf = alloc_small(2, 0); /* Get the terminal size, return None on failure */ #ifdef WIN32 { HANDLE fd = *(HANDLE *)Data_custom_val(arg); CONSOLE_SCREEN_BUFFER_INFO ConsoleInfo; if (! GetConsoleScreenBufferInfo(fd, &ConsoleInfo)) failwith("lm_termsize.c: caml_term_size: GetConsoleScreenBufferInfo failed"); Field(buf, 0) = Val_int(ConsoleInfo.dwSize.Y); Field(buf, 1) = Val_int(ConsoleInfo.dwSize.X); } #else { int fd = Int_val(arg); struct winsize ws; if(ioctl(fd, TIOCGWINSZ, &ws) < 0) failwith("lm_termsize.c: caml_term_size: not a terminal"); /* Return the pair of numbers */ Field(buf, 0) = Val_int(ws.ws_row); Field(buf, 1) = Val_int(ws.ws_col); } #endif CAMLreturn(buf); } omake-0.9.8.5/src/libmojave-external/cutil/fam_pseudo.h0000664000152300015230000000742310456222231021130 0ustar jyhjyh/* * This presents a FAM-like interface for systems without FAM. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifdef FAM_PSEUDO #ifdef FAM_ENABLED #ifndef _FAM_PSEUDO #define _FAM_PSEUDO /* * Maximum number of directories that we will monitor. */ #define MAX_DIR_COUNT 1024 /* * Maximum file name length. */ #define NAME_MAX 1024 /* * Possible events. */ typedef enum { FAMChanged = 1, FAMDeleted = 2, FAMStartExecuting = 3, FAMStopExecuting = 4, FAMCreated = 5, FAMMoved = 6, FAMAcknowledge = 7, FAMExists = 8, FAMEndExist = 9, FAMDirectoryChanged = 10 /* Not standard FAM -- member of dir changed */ } FAMCodes; /* * A request is just a number. */ typedef struct request { int reqnum; } FAMRequest; /* * Events are saved in a linked list. */ typedef struct fam_event { struct fam_connection *fc; // Server FAMRequest fr; // Request number for the directory FAMCodes code; // Event code void *userdata; // User data from the directory char filename[NAME_MAX]; // Name of the file that changed struct fam_event *next; // Linked list } FAMEvent; /* * Server has a collection of directories. */ typedef struct fam_connection { /* Unique identifier */ int id; /* Directories are kept in an array by request number */ unsigned dir_count; struct dir_info *dirs[MAX_DIR_COUNT]; /* Events to pass back to the user */ FAMEvent *event; FAMEvent *last; } FAMConnection; /* * Errors. */ #define FAM_NO_ERROR 0 #define FAM_TOO_MANY_DIRECTORIES 1 #define FAM_DIRECTORY_DOES_NOT_EXIST 2 #define FAM_WINDOWS_ERROR 3 #define FAM_OUT_OF_MEMORY 4 #define FAM_BAD_REQUEST_NUMBER 5 #define FAM_ALREADY_EXISTS 6 #define FAM_NOT_IMPLEMENTED 7 #define FAM_PERMISSION_DENIED 8 #define FAM_UNKNOWN_ERROR 9 extern int FAMErrno; extern char *FamErrlist[]; int FAMOpen(FAMConnection *fc); int FAMClose(FAMConnection *fc); int FAMMonitorDirectory(FAMConnection *fc, const char *name, FAMRequest *request, void *userdata); int FAMSuspendMonitor(FAMConnection *fc, FAMRequest *request); int FAMResumeMonitor(FAMConnection *fc, FAMRequest *request); int FAMCancelMonitor(FAMConnection *fc, FAMRequest *request); int FAMNextEvent(FAMConnection *fc, FAMEvent *event); int FAMPending(FAMConnection *fc); int FAMMonitorDirectoryTree(FAMConnection *fc, const char *name, FAMRequest *request, void *userdata); #endif /* _FAM_PSEUDO */ #endif /* FAM_ENABLED */ #endif /* FAM_PSEUDO */ omake-0.9.8.5/src/libmojave-external/cutil/lm_fs_case_sensitive.c0000664000152300015230000000714010615425715023172 0ustar jyhjyh/* * Detect the case-sensitivity of a filesystem, when possible * * ------------------------------------------------ * * @begin[license] * Copyright (C) 2007 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Nathaniel Gray * @email{n8gray@cs.caltech.edu} * @end[license] */ /* For Caml */ #include #include #include #include #ifdef DETECT_FS_CASE_SENSITIVE_GETATTRLIST /* This is the OS X implementation, using getattrlist. */ /* For statfs */ #include #include /* For getattrlist */ #include #include /* Other various includes */ #include #include typedef struct vol_caps_buf { unsigned long size; vol_capabilities_attr_t caps; } vol_caps_buf_t; value lm_fs_case_sensitive_available(value _unit) { return Val_true; } /* * Returns true if the volume containing the path is case-sensitive, * or false if it is not. * Raises Failure if the case-sensitivity cannot be detected. */ value lm_fs_case_sensitive(value path_val) { CAMLparam1(path_val); struct statfs stat; char *path = String_val(path_val); do { caml_enter_blocking_section(); if (statfs(path, &stat)) break; struct attrlist alist; memset(&alist, 0, sizeof(alist)); alist.bitmapcount = ATTR_BIT_MAP_COUNT; alist.volattr = ATTR_VOL_CAPABILITIES; vol_caps_buf_t buffer; if (getattrlist(stat.f_mntonname, &alist, &buffer, sizeof(buffer), 0)) break; caml_leave_blocking_section(); if (!(alist.volattr & ATTR_VOL_CAPABILITIES)) caml_failwith("Couldn't get volume capabilities"); if (!(buffer.caps.valid[VOL_CAPABILITIES_FORMAT] & VOL_CAP_FMT_CASE_SENSITIVE)) caml_failwith("VOL_CAP_FMT_CASE_SENSITIVE not valid on this volume"); if (buffer.caps.capabilities[VOL_CAPABILITIES_FORMAT] & VOL_CAP_FMT_CASE_SENSITIVE) { CAMLreturn(Val_true); } else { CAMLreturn(Val_false); } } while (0); caml_leave_blocking_section(); caml_failwith(strerror(errno)); CAMLreturn(Val_false); /* For the compiler's sake */ } #else /* not DETECT_FS_CASE_SENSITIVE_GETATTRLIST */ #ifdef _WIN32 #pragma warning( disable : 4100 ) #endif /* _WIN32 */ value lm_fs_case_sensitive_available(value _unit) { return Val_false; } value lm_fs_case_sensitive(value path_val) { caml_failwith("lm_fs_case_sensitive not supported"); return Val_false; /* For the compiler's sake */ } #endif /* DETECT_FS_CASE_SENSITIVE_GETATTRLIST */ omake-0.9.8.5/src/libmojave-external/cutil/fam_kqueue.c0000664000152300015230000003511410606522701021123 0ustar jyhjyh/* * This implements a FAM-like service for systems that support the FreeBSD * kqueue interface. In particular, this has been tested on Mac OS X 10.3. * * Here's the basic design: * We keep an array of DirInfo pointers. When the client requests a dir to * be monitored, we find a free slot and allocate a DirInfo for it. We then * create a kevent_t to monitor that directory, storing a pointer to its * DirInfo as its userdata. * * When we retrieve an event, we turn it into one or more FAMEvents, putting * each new event on a per-FAMConnection queue * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Nathaniel Gray, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Nathaniel Gray * @email{n8gray@cs.caltech.edu} * @end[license] */ #ifdef FAM_KQUEUE #include #include #include #include #include #include #include #include #include #ifdef HAVE_STRING_H #include #else /* HAVE_STRING_H */ #ifdef HAVE_STRINGS_H #include #endif /* HAVE_STRINGS_H */ #endif /* HAVE_STRING_H */ #include "fam_pseudo.h" /* * The events we want to watch for. * * Monitoring a directory foo containing bar * When I do: I get flags: * create bar NOTE_ATTRIB NOTE_WRITE * edit bar & save NOTE_ATTRIB NOTE_WRITE * rm -f bar NOTE_ATTRIB NOTE_WRITE * chmod 000 bar * touch existing bar * edit bar via link * rm -rf foo NOTE_DELETE * mv foo floo NOTE_RENAME * chmod 000 foo NOTE_ATTRIB * unmount the fs NOTE_REVOKE * * I guess we'll just look for writes for now. */ #define MON_FLAGS (NOTE_WRITE) /* | NOTE_DELETE | NOTE_RENAME | NOTE_REVOKE | NOTE_ATTRIB) | NOTE_EXTEND | NOTE_LINK */ /* Any write to the directory means a file within changed */ #define MEMBER_CHANGED_FLAGS NOTE_WRITE /* * The mode for opening monitored directories. Someday maybe we can do * this without even needing read perms. */ #define DIR_OPEN_FLAGS O_RDONLY /* * Max utility. */ #define MAX(i, j) ((i) < (j) ? (j) : (i)) static char *code_names[] = { "No Code", "Changed", "Deleted", "StartExecuting", "StopExecuting", "Created", "Moved", "Acknowledge", "Exists", "EndExist", "DirectoryChanged" }; typedef struct kevent kevent_t; /* * Info for each directory. * We keep a request number, for compatibility * with Unix FAM. */ typedef struct dir_info { unsigned request; // Request number unsigned running; // Is this entry running or suspended? int handle; // Directory handle void *userdata; // User data for this directory kevent_t *kevent; char name[1]; // Name of the directory } DirInfo; int FAMErrno = 0; char *FamErrlist[] = { "No Error", "Too many directories", "Directory does not exist", "Windows error", "Out of memory", "Bad request number", "Request already exists", "Not implemented", "Permission denied", "Unknown error" }; /* We need a "zero" timespec for specifying non-blocking kevent calls */ static struct timespec gTime0; static int gRequestNum = 0; /************************************************************************ * LOCAL FUNCTIONS */ /* * Close a directory entry. */ static void free_dir(DirInfo *dir) { close(dir->handle); if(dir->kevent) free(dir->kevent); free(dir); } /* * Free a FAM event. */ static void free_fevent(FAMEvent *event) { free(event); } /* * Allocate a kevent */ static kevent_t *new_kevent() { kevent_t *ev; ev = (kevent_t *)malloc(sizeof(kevent_t)); if (ev) memset(ev, 0, sizeof(*ev)); return ev; } /* * Start monitoring a directory. * We store the DirInfo pointer as the userdata in the kevent. */ static int monitor_start(FAMConnection *fc, DirInfo *dir) { int code; kevent_t *kev; #ifdef FAM_DEBUG fprintf(stderr, "Monitoring directory %s\n", dir->name); fflush(stderr); #endif code = -1; if ((kev = new_kevent())) { dir->kevent = kev; /* Register interest in the MON_FLAGS flags of the dir */ EV_SET(kev, dir->handle, EVFILT_VNODE, EV_ADD | EV_CLEAR, MON_FLAGS, (intptr_t) NULL, (void *)dir); code = kevent(fc->id, kev, 1, NULL, 0, &gTime0); #ifdef FAM_DEBUG fprintf(stderr, " Directory id: %d\n" " kevent code: %d\n", dir->handle, code); fflush(stderr); #endif } if(code < 0) { if(kev) { free(kev); dir->kevent = NULL; } perror("monitor_start"); } return code; } /* Put the new event at the tail end of the queue */ static int add_famevent_of_kevent( FAMConnection *fc, kevent_t *kev, FAMCodes fcode ) { DirInfo *dir_info; FAMEvent *fevent; fevent = (FAMEvent *)malloc(sizeof(FAMEvent)); if(!fevent) return 0; dir_info = (DirInfo *)kev->udata; fevent->fc = fc; fevent->fr.reqnum = dir_info->request; fevent->code = fcode; fevent->userdata = dir_info->userdata; fevent->next = NULL; if( NULL != fc->last ) { fc->last->next = fevent; } else { fc->event = fevent; } fc->last = fevent; strncpy(fevent->filename, dir_info->name, NAME_MAX); return 1; } /* * Poll for an event and put any on the fc->event list */ static int poll_kevent(FAMConnection *fc, struct timespec *timeptr) { int result, more_events=1; FAMEvent *fevent; kevent_t *kev; #ifdef FAM_DEBUG fprintf(stderr, "Polling FAM Connection\n"); fflush(stderr); #endif if ((kev = new_kevent())) { result = kevent( fc->id, NULL, 0, kev, 1, timeptr ); if(result == 0) { free(kev); return 0; } else if(result < 0) { free(kev); switch(errno) { case EACCES: FAMErrno = FAM_PERMISSION_DENIED; break; case ENOMEM: FAMErrno = FAM_OUT_OF_MEMORY; break; default: FAMErrno = FAM_UNKNOWN_ERROR; }; return -1; } /* Convert each possible event flag to a FAM event */ if(kev->fflags & MEMBER_CHANGED_FLAGS) { if (add_famevent_of_kevent( fc, kev, FAMDirectoryChanged ) == 0) goto poll_error; }; if(kev->fflags & NOTE_DELETE) { if (add_famevent_of_kevent( fc, kev, FAMDeleted ) == 0) goto poll_error; }; if(kev->fflags & NOTE_RENAME) { if (add_famevent_of_kevent( fc, kev, FAMMoved ) == 0) goto poll_error; }; if(kev->fflags & NOTE_REVOKE) { /* Lost access */ if (add_famevent_of_kevent( fc, kev, FAMDeleted ) == 0) goto poll_error; }; if(kev->fflags & NOTE_ATTRIB) { if (add_famevent_of_kevent( fc, kev, FAMChanged ) == 0) goto poll_error; }; free(kev); return 1; poll_error: free(kev); } FAMErrno = FAM_OUT_OF_MEMORY; return -1; } /************************************************************************ * Public functions. */ /* * Open the server. */ int FAMOpen(FAMConnection *fc) { int id; #ifdef FAM_DEBUG fprintf(stderr, "Opening FAM Connection\n"); fflush(stderr); #endif memset(&gTime0, 0, sizeof(struct timespec)); memset(fc, 0, sizeof(*fc)); id = kqueue(); #ifdef FAM_DEBUG fprintf(stderr, "kqueue file descriptor: %d\n", id); fflush(stderr); #endif if (id < 0) return -1; else { fc->id = id; return 0; } } /* * Close the fc. */ int FAMClose(FAMConnection *fc) { FAMEvent *event, *next; unsigned i; /* Free all the directories */ for(i = 0; i != fc->dir_count; i++) if(fc->dirs[i]) free_dir(fc->dirs[i]); /* Free all the events */ event = fc->event; while(event) { next = event->next; free_fevent(event); event = next; } /* Reset the fc */ close(fc->id); memset(fc, 0, sizeof(*fc)); return 0; } /* * Monitor a directory. */ int FAMMonitorDirectory(FAMConnection *fc, const char *name, FAMRequest *requestp, void *userdata) { int dir_handle; unsigned request, length; DirInfo *dir; #ifdef FAM_DEBUG fprintf(stderr, "Asking to monitor directory: %s\n", name); fflush(stderr); #endif /* Search for a slot */ for(request = 0; request != fc->dir_count; request++) { if(fc->dirs[request] == 0) break; } /* Watch for overflows */ if(request == MAX_DIR_COUNT) { FAMErrno = FAM_TOO_MANY_DIRECTORIES; return -1; } requestp->reqnum = request; /* Get a descriptor for the directory */ dir_handle = open(name, DIR_OPEN_FLAGS, 0); if(dir_handle < 0) { /* This is potentially bogus. It could be any number of things. */ FAMErrno = FAM_DIRECTORY_DOES_NOT_EXIST; return -1; } /* Allocate a directory struct */ length = sizeof(DirInfo) + strlen(name); dir = (DirInfo *) malloc(length); if(dir == 0) { close(dir_handle); FAMErrno = FAM_OUT_OF_MEMORY; return -1; } memset(dir, 0, length); /* Initialize */ dir->request = request; dir->running = 1; dir->handle = dir_handle; dir->userdata = userdata; strcpy(dir->name, name); /* Save it in the fc */ fc->dirs[request] = dir; fc->dir_count = MAX(request + 1, fc->dir_count); /* Start monitoring */ monitor_start(fc, dir); return 0; } /* * Cancel monitoring. */ int FAMCancelMonitor(FAMConnection *fc, FAMRequest *requestp) { DirInfo *dir; unsigned request; int code = 0; kevent_t *kev; request = requestp->reqnum; if(request >= fc->dir_count || fc->dirs[request] == 0) { FAMErrno = FAM_BAD_REQUEST_NUMBER; return -1; } dir = fc->dirs[request]; kev = dir->kevent; kev->flags = EV_DELETE; if (kevent(fc->id, kev, 1, NULL, 0, &gTime0) < 0) perror("FAMCancelMonitor"); free_dir(dir); fc->dirs[request] = 0; return 0; } /* * Get the next event. Block for one if there is no event. */ int FAMNextEvent(FAMConnection *fc, FAMEvent *event) { FAMEvent *current; int request; while(1) { /* See if there is already an event */ current = fc->event; if(current) { #if FAM_DEBUG fprintf(stderr, "Request: %d, Name: %s, Event: %s\n", current->fr.reqnum, current->filename, code_names[current->code]); fflush(stderr); #endif *event = *current; fc->event = current->next; if(fc->event == NULL) fc->last = NULL; free_fevent(current); return 0; } /* If not, blocking poll for an event */ #if FAM_DEBUG fprintf( stderr, "FAMNextEvent: polling...\n" ); #endif request = poll_kevent(fc, NULL); #if FAM_DEBUG fprintf( stderr, "FAMNextEvent: request = %d\n", request ); #endif if(request < 0) return -1; } } /* * See if there is a pending event. */ int FAMPending(FAMConnection *fc) { int result; #ifdef FAM_DEBUG fprintf(stderr, "Checking for pending FAM events.\n"); fflush(stderr); #endif /* See if there is already an event */ if(fc->event) return 1; /* If not, non-blocking poll for input */ result = poll_kevent( fc, &gTime0 ); if(result == 0) return 0; else if(result < 0) return -1; return 1; } /***************************************************************************** * Functions from the FAM interface that aren't implemented * The first two probably work, but they've never been tested. */ /* * Suspend monitoring. */ int FAMSuspendMonitor(FAMConnection *fc, FAMRequest *requestp) { #if 0 DirInfo *dir; unsigned request; int code = 0; request = requestp->reqnum; if(request >= fc->dir_count || fc->dirs[request] == 0) { FAMErrno = FAM_BAD_REQUEST_NUMBER; return -1; } dir = fc->dirs[request]; if(dir->running) { kevent_t *kev = dir->kevent; kev->flags = EV_DISABLE; if (kevent(fc->id, kev, 1, NULL, 0, &gTime0) < 0) perror("FAMSuspendMonitor"); dir->running = 0; } return 0; #else FAMErrno = FAM_NOT_IMPLEMENTED; return -1; #endif } /* * Resume monitoring. */ int FAMResumeMonitor(FAMConnection *fc, FAMRequest *requestp) { #if 0 DirInfo *dir; unsigned request; int code = 0; request = requestp->reqnum; if(request >= fc->dir_count || fc->dirs[request] == 0) { FAMErrno = FAM_BAD_REQUEST_NUMBER; return -1; } dir = fc->dirs[request]; if(!(dir->running)) { kevent_t *kev = dir->kevent; kev->flags = EV_ENABLE; if (kevent(fc->id, kev, 1, NULL, 0, &gTime0) < 0) perror("FAMResumeMonitor"); dir->running = 1; } return 0; #else FAMErrno = FAM_NOT_IMPLEMENTED; return -1; #endif } /* This is not supposed to be called on kqueue systems */ int FAMMonitorDirectoryTree(FAMConnection *fc, const char *name, FAMRequest *request, void *userdata) { FAMErrno = FAM_NOT_IMPLEMENTED; return -1; } #else /* FAM_KQUEUE */ #if defined(WIN32) || defined(_WIN32) /* Disable the "translation unit is empty" warning */ #pragma warning( disable : 4206 ) #endif #endif /* FAM_KQUEUE */ omake-0.9.8.5/src/libmojave-external/cutil/lm_rusage.c0000664000152300015230000001127710322060244020755 0ustar jyhjyh/* * rusage interface for MCC * Copyright(c) 2002 Justin David Smith, Caltech */ #include #include #ifndef WIN32 # include # include # include #endif #include #include #include #include /* * These values correspond to the rusage_who constant constructors. */ #ifndef WIN32 int translate_rusage_who(int who) { switch(who) { case 0: return RUSAGE_SELF; case 1: return RUSAGE_CHILDREN; default: failwith("translate_rusage_who: bad rusage_who constant constructor"); } } #endif /* !WIN32 */ /* * This is a simplified version of getrusage that simply reports on the * process run times of the current process or the aggregate of its * children. */ value caml_getrusage_time(value mlwho) { CAMLparam1(mlwho); CAMLlocal1(result); /* Allocate the result block and initialise it (in case we fail) */ result = alloc_tuple(4); Field(result, 0) = Val_int(0); Field(result, 1) = Val_int(0); Field(result, 2) = Val_int(0); Field(result, 3) = Val_int(0); #ifndef WIN32 { struct rusage usage; int who = translate_rusage_who(Int_val(mlwho)); /* Get the current process stats */ if(getrusage(who, &usage) != 0) { failwith("caml_getrusage_times: getrusage call failed"); } /* Load the fields of interest into our block */ modify(&Field(result, 0), Val_int(usage.ru_utime.tv_sec)); modify(&Field(result, 1), Val_int(usage.ru_utime.tv_usec)); modify(&Field(result, 2), Val_int(usage.ru_stime.tv_sec)); modify(&Field(result, 3), Val_int(usage.ru_stime.tv_usec)); } #endif /* Return the result */ CAMLreturn(result); } /* * Set the rlimit maximum CPU time for a process (in seconds). */ value caml_setrlimit_time(value time) { CAMLparam1(time); #ifndef WIN32 struct rlimit rlim; /* Set the rlimit max field */ rlim.rlim_cur = Int_val(time); rlim.rlim_max = Int_val(time); /* Call setrlimit */ if(setrlimit(RLIMIT_CPU, &rlim) != 0) { failwith("caml_setrlimit_time: setrlimit call failed"); } #endif /* We were successful */ CAMLreturn(Val_unit); } #ifdef WIN32 /* * Not implemented on Win32. */ value ml_getrusage(value unit_val) { CAMLparam1(unit_val); CAMLlocal1(rval); int i; rval = alloc_tuple(16); for(i = 0; i != 16; i++) Field(rval, i) = Val_unit; Field(rval, 0) = copy_double(0.0); Field(rval, 1) = copy_double(0.0); Field(rval, 2) = Val_int(0); Field(rval, 3) = Val_int(0); Field(rval, 4) = Val_int(0); Field(rval, 5) = Val_int(0); Field(rval, 6) = Val_int(0); Field(rval, 7) = Val_int(0); Field(rval, 8) = Val_int(0); Field(rval, 9) = Val_int(0); Field(rval, 10) = Val_int(0); Field(rval, 11) = Val_int(0); Field(rval, 12) = Val_int(0); Field(rval, 13) = Val_int(0); Field(rval, 14) = Val_int(0); Field(rval, 15) = Val_int(0); CAMLreturn(rval); } #else /* not WIN32 */ #include #include #include /* JDS: this isn't defined in any OCaml header, seems to be an internal function. Oh well... *shrug* */ extern void uerror(char *cmdname, value arg) Noreturn; #define Nothing ((value) 0) /* * Get the resources consumed. */ value ml_getrusage(value unit_val) { CAMLparam1(unit_val); struct rusage rsrc; CAMLlocal1(rval); int ret, i; ret = getrusage(RUSAGE_SELF, &rsrc); if(ret < 0) uerror("getrusage", Nothing); rval = alloc_tuple(16); for(i = 0; i != 16; i++) Field(rval, i) = Val_unit; fprintf(stderr, "User: %f System: %f\n", rsrc.ru_utime.tv_sec + rsrc.ru_utime.tv_usec * 1e-6, rsrc.ru_stime.tv_sec + rsrc.ru_stime.tv_usec * 1e-6); Field(rval, 0) = copy_double(rsrc.ru_utime.tv_sec + rsrc.ru_utime.tv_usec * 1e-6); Field(rval, 1) = copy_double(rsrc.ru_stime.tv_sec + rsrc.ru_stime.tv_usec * 1e-6); Field(rval, 2) = Val_int(rsrc.ru_maxrss); Field(rval, 3) = Val_int(rsrc.ru_ixrss); Field(rval, 4) = Val_int(rsrc.ru_idrss); Field(rval, 5) = Val_int(rsrc.ru_isrss); Field(rval, 6) = Val_int(rsrc.ru_minflt); Field(rval, 7) = Val_int(rsrc.ru_majflt); Field(rval, 8) = Val_int(rsrc.ru_nswap); Field(rval, 9) = Val_int(rsrc.ru_inblock); Field(rval, 10) = Val_int(rsrc.ru_oublock); Field(rval, 11) = Val_int(rsrc.ru_msgsnd); Field(rval, 12) = Val_int(rsrc.ru_msgrcv); Field(rval, 13) = Val_int(rsrc.ru_nsignals); Field(rval, 14) = Val_int(rsrc.ru_nvcsw); Field(rval, 15) = Val_int(rsrc.ru_nivcsw); CAMLreturn(rval); } #endif omake-0.9.8.5/src/libmojave-external/cutil/lm_uname_ext.c0000664000152300015230000001057210536335504021464 0ustar jyhjyh/* * System info. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #ifdef WIN32 #include /* Disable some of the warnings */ #pragma warning( disable : 4127 4189 4702 4996 ) /* * Fake utsname. */ struct utsname { char sysname[1024]; char nodename[1024]; char release[1024]; char version[1024]; char machine[1024]; }; /* * uname is undefined as far as I know (jyh). * Get most of the info from the environment. */ static int uname(struct utsname *name) { DWORD len; SYSTEM_INFO sysinfo; OSVERSIONINFO osversion; unsigned ptype; char *osname; /* Ask Win32 for OS info */ osversion.dwOSVersionInfoSize = sizeof(osversion); if(GetVersionEx(&osversion) == 0) return -1; /* String version of the osname */ osname = (char *) "unknown"; switch (osversion.dwPlatformId) { case VER_PLATFORM_WIN32s: osname = (char *) "win32s"; break; case VER_PLATFORM_WIN32_WINDOWS: switch (osversion.dwMinorVersion) { case 0: osname = (char *) "Win95"; break; case 1: osname = (char *) "Win98"; break; default: osname = (char *) "Win9X"; break; } break; case VER_PLATFORM_WIN32_NT: osname = (char *) "WinNT"; break; } /* Collect data */ strcpy(name->sysname, osname); sprintf(name->version, "%d.%d", (int) osversion.dwMajorVersion, (int) osversion.dwMinorVersion); sprintf(name->release, "%d %s", (int) osversion.dwBuildNumber, osversion.szCSDVersion); /* Computer name */ len = sizeof(name->nodename) - 1; GetComputerNameA(name->nodename, &len); name->nodename[len] = 0; /* Machine */ GetSystemInfo(&sysinfo); /* CPU type */ switch (sysinfo.wProcessorArchitecture) { case PROCESSOR_ARCHITECTURE_INTEL: if(sysinfo.dwProcessorType < 3) /* Shouldn't happen. */ ptype = 3; else if(sysinfo.dwProcessorType > 9) /* P4 */ ptype = 6; else ptype = sysinfo.dwProcessorType; sprintf(name->machine, "i%d86", ptype); break; case PROCESSOR_ARCHITECTURE_ALPHA: strcpy(name->machine, "alpha"); break; case PROCESSOR_ARCHITECTURE_MIPS: strcpy(name->machine, "mips"); break; default: strcpy(name->machine, "unknown"); break; } return 0; } #else /* WIN32 */ #include #endif /* !WIN32 */ /* * Allocate a 5-tuple of strings. */ value lm_uname(value x) { CAMLparam1(x); CAMLlocal1(result); struct utsname name; /* Get sysinfo */ if(uname(&name) < 0) failwith("uname"); /* Copy data */ result = alloc_tuple(5); Field(result, 0) = Val_unit; Field(result, 1) = Val_unit; Field(result, 2) = Val_unit; Field(result, 3) = Val_unit; Field(result, 4) = Val_unit; Field(result, 0) = copy_string(name.sysname); Field(result, 1) = copy_string(name.nodename); Field(result, 2) = copy_string(name.release); Field(result, 3) = copy_string(name.version); Field(result, 4) = copy_string(name.machine); /* Return it */ CAMLreturn(result); } omake-0.9.8.5/src/libmojave-external/cutil/lm_terminfo.c0000664000152300015230000000354010622402004021301 0ustar jyhjyh/* * Simple Terminfo Interface for ML * Copyright(c) 2002 Justin David Smith, Caltech */ #include #include #include #include #ifdef WIN32 # pragma warning (disable: 4127 4189 4702 4996) #endif #ifdef NCURSES /* Headers that are readline-specific must be included here. */ #include #ifdef TERMH_IN_NCURSES # include #else # include #endif static int loaded_terminfo = 0; static int load_terminfo() { char *termname = NULL; /* Check to see if we already loaded the terminal data */ if(loaded_terminfo) return(0); /* We haven't loaded anything yet (or we had an error). */ if(setupterm(NULL, 1, NULL) == OK) { /* We were successful! */ loaded_terminfo = 1; return(0); } /* Failure. */ return(-1); } #endif /* NCURSES support? */ /* * Terminfo is enabled only of TERM is defined. */ value caml_tgetstr_enabled(value unit) { CAMLparam1(unit); CAMLreturn(getenv("TERM") ? Val_true : Val_false); } /* * Read the indicated terminfo by string. */ value caml_tgetstr(value id) { CAMLparam1(id); CAMLlocal1(result); char *termdata = NULL; /* Lookup the requested capability name. Note that we only get terminfo if we compiled with readline support; otherwise it will not be linked in. */ #ifdef NCURSES if(load_terminfo() == 0) { termdata = tigetstr(String_val(id)); } #endif /* NCURSES */ /* Note that tigetstr will return either 0 or -1 on error. */ if(termdata == NULL || termdata == (char *)(-1)) { result = copy_string(""); } else { result = copy_string(termdata); /* apparently we're not supposed to free termdata here */ /* TEMP: I cannot find specs on this! */ //free(termdata); } /* Return the result */ CAMLreturn(result); } omake-0.9.8.5/src/libmojave-external/cutil/OMakefile0000664000152300015230000000203310613520274020407 0ustar jyhjyh# # Make sure omake is up-to-date # OMakeVersion(0.9.8) open configure/snprintf open configure/ncurses open configure/fs_case_sensitive if $(and $(LM_STANDALONE), $(NCURSES_AVAILABLE)) CFLAGS += -DNCURSES export if $(NCURSES_TERMH_IN_NCURSES) CFLAGS += -DTERMH_IN_NCURSES export if $(DETECT_FS_CASE_SENSITIVE) CFLAGS += $(DETECT_FS_CASE_SENSITIVE_CFLAGS) export # # LibMojave C files # CFILES[] = lm_heap lm_abstract lm_float lm_ncurses lm_printf lm_raw lm_readline lm_rusage lm_terminfo lm_mmap lm_marshal_shared lm_ssl lm_config lm_uname_ext lm_channel lm_ctype lm_nocompare lm_compat_win32 lm_unix_cutil fam_win32 fam_kqueue fam_inotify lm_notify lm_termsize lm_dll lm_fs_case_sensitive if $(SNPRINTF_AVAILABLE) CFLAGS += -DHAVE_SNPRINTF export # # Libraries # StaticCLibraryInstall($(LMINSTALL), $(LIB), liblmcutil, $(CFILES)) if $(LM_STANDALONE) .DEFAULT: liblmcutil$(EXT_LIB) clean: $(CLEAN) omake-0.9.8.5/src/libmojave-external/cutil/lm_nocompare.c0000664000152300015230000000661410456222231021455 0ustar jyhjyh/* * A special "custom" value that prohibits Pervasives.compare, * but allows marshalling. By temporarily adding this value as a * _first_ field in a * data structure that is not supposed to be * compared using Pervasives.compare, one can weed out all the * inappropriate usages of Pervasives.compare, (=), (<), etc. * * ------------------------------------------------ * * @begin[license] * Copyright (C) 2005, MetaPRL Group * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] */ /* Caml includes */ #include #include #include #include #include static void lm_nocompare_serialize(value v, unsigned long * wsize_32, unsigned long * wsize_64) { *wsize_32 = 0; *wsize_64 = 0; } static unsigned long lm_nocompare_deserialize(void * dst) { return 0; } static void lm_nomarshal_serialize(value v, unsigned long * wsize_32, unsigned long * wsize_64) { caml_invalid_argument("Lm_nocompare: some code attempted to marshal a value\n on a data structure that specifically prohibits this"); *wsize_32 = 0; *wsize_64 = 0; } static unsigned long lm_nomarshal_deserialize(void * dst) { caml_invalid_argument("Lm_nocompare: some code attempted to marshal a value\n on a data structure that specifically prohibits this"); return 0; } static int lm_nocompare_compare(value v1, value v2) { caml_invalid_argument("Lm_nocompare: some code attempted to use a Pervasives comparison operation\n on a data structure that specifically prohibits this"); } struct custom_operations lm_nocompare_ops = { "LibMojave/Lm_nocompare", custom_finalize_default, lm_nocompare_compare, custom_hash_default, lm_nocompare_serialize, lm_nocompare_deserialize }; struct custom_operations lm_nomarshal_ops = { "LibMojave/Lm_nomarshal", custom_finalize_default, lm_nocompare_compare, custom_hash_default, lm_nomarshal_serialize, lm_nomarshal_deserialize }; value lm_nocompare_create(value v) { CAMLparam1(v); CAMLlocal1(result); result = caml_alloc_custom(&lm_nocompare_ops, 0, 0, 0); CAMLreturn(result); } value lm_nomarshal_create(value v) { CAMLparam1(v); CAMLlocal1(result); result = caml_alloc_custom(&lm_nomarshal_ops, 0, 0, 0); CAMLreturn(result); } value lm_nocompare_init(value v) { caml_register_custom_operations(&lm_nocompare_ops); caml_register_custom_operations(&lm_nomarshal_ops); return Val_unit; } omake-0.9.8.5/src/libmojave-external/cutil/inotify.om0000664000152300015230000000216410654712563020664 0ustar jyhjyh# # Testing for inotify on Linux # open build/C open configure/Configure open configure/fam TEST_PROG = $""" #include #include "inotify.h" #include "inotify-syscalls.h" int main(int argc, char **argv) { int fd, wd; fd = inotify_init(); if(fd < 0) return 1; wd = inotify_add_watch(fd, ".", IN_CLOSE_WRITE | IN_MOVED_TO | IN_CREATE | IN_DELETE); if(wd < 0) return 1; return 0; } """ static. = ConfMsgChecking(for inotify) INOTIFY_AVAILABLE = $(CheckLib $(EMPTY), inotify_init inotify_add_watch inotify_rm_watch) INOTIFY_HEADERS = $(CheckHeader $"") if $(not $(INOTIFY_AVAILABLE)) # XXX: need a better way of locating the header files. public.CFLAGS += $(mapprefix -I, $(dir libmojave/cutil src/libmojave-external/cutil cutil)) INOTIFY_AVAILABLE = $(TryRunC $(TEST_PROG)) export INOTIFY_AVAILABLE ConfMsgFound($(INOTIFY_AVAILABLE)) if $(INOTIFY_AVAILABLE) FAM_AVAILABLE = true FAM_CFLAGS = -DFAM_ENABLED -DFAM_PSEUDO -DFAM_INOTIFY FAM_CLIBS = export omake-0.9.8.5/src/libmojave-external/cutil/lm_heap.h0000664000152300015230000000240110654713446020417 0ustar jyhjyh/* * Some debugging code for the heap. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifndef _HEAP_H #define _HEAP_H value heap_check(value v_unit); #endif /* _HEAP_H */ omake-0.9.8.5/src/libmojave-external/cutil/lm_marshal_shared.h0000664000152300015230000000370510464477010022460 0ustar jyhjyh/* * This file contains helper functions for the marshal module. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu */ #ifdef __GNUC__ #pragma implementation #endif __GNUC__ #include #include /* * Write the contents of the block to the string. */ value ml_write_block(value buf, value v_start, value v_stop, value obj); /* * * * $Log$ * Revision 1.2 2005/07/07 02:34:06 nogin * More preamble changes * * Revision 1.1 2003/07/12 21:59:10 jyh * Migrated more code into libmojave. * * Revision 1.1 1999/05/03 12:11:20 jyh * Added an initial incomplete version of the distributed marshaler. * */ omake-0.9.8.5/src/libmojave-external/cutil/lm_ncurses.c0000664000152300015230000003145010575562770021171 0ustar jyhjyh/* * Simple NCurses Interface for MCC * Copyright(c) 2002 Justin David Smith, Caltech */ #include #include #include #include /* * Macro to define key binding function */ #define CAML_BIND_KEY(name, key) \ value name(value unit) { \ CAMLparam1(unit); \ CAMLreturn(Val_int(key)); \ } #ifdef NCURSES /* From this point, we assume ncurses support is present. */ /* Headers which are ncurses-specific must be included here. */ #include #define ml_of_window(win) (copy_nativeint((long)(win))) #define window_of_ml(win) ((WINDOW *)Nativeint_val(win)) /*** Key definitions ***/ CAML_BIND_KEY(caml_key_down, KEY_DOWN) CAML_BIND_KEY(caml_key_up, KEY_UP) CAML_BIND_KEY(caml_key_left, KEY_LEFT) CAML_BIND_KEY(caml_key_right, KEY_RIGHT) CAML_BIND_KEY(caml_key_home, KEY_HOME) CAML_BIND_KEY(caml_key_end, KEY_END) CAML_BIND_KEY(caml_key_npage, KEY_NPAGE) CAML_BIND_KEY(caml_key_ppage, KEY_PPAGE) CAML_BIND_KEY(caml_key_enter, KEY_ENTER) CAML_BIND_KEY(caml_key_cancel,KEY_CANCEL) /*** Standard Curses Interface ***/ static void setwinopts(WINDOW *win, bool scrollable) { intrflush(win, FALSE); keypad(win, TRUE); scrollok(win, scrollable); } /* * The values here correspond to the order of the constant * constructors in the attr data type, in mc_ncurses.ml. */ static int translate_attr(int attr) { switch(attr) { case 0: return(A_NORMAL); case 1: return(A_STANDOUT); case 2: return(A_UNDERLINE); case 3: return(A_REVERSE); case 4: return(A_BLINK); case 5: return(A_DIM); case 6: return(A_BOLD); case 7: return(A_PROTECT); case 8: return(A_INVIS); case 9: return(A_ALTCHARSET); case 10: return(A_CHARTEXT); default: failwith("translate_attr: bad attr constant constructor"); } } /* * Report that we support ncurses. */ value caml_curses_enabled(value unit) { CAMLparam1(unit); CAMLreturn(getenv("TERM") ? Val_true : Val_false); } value caml_curses_initscr(value unit) { CAMLparam1(unit); /* Initialise ncurses interface */ initscr(); /* Initialise screen */ cbreak(); /* Disable character buffering */ noecho(); /* Do not echo typed characters */ nonl(); /* Do not translate newline seq */ /* Setup options for the default window */ setwinopts(stdscr, TRUE); CAMLreturn(Val_unit); } value caml_curses_endwin(value unit) { CAMLparam1(unit); /* Temporarily end the ncurses interface */ endwin(); CAMLreturn(Val_unit); } value caml_curses_newwin(value nlines, value ncols, value beginy, value beginx) { CAMLparam4(nlines, ncols, beginy, beginx); CAMLlocal1(result); WINDOW *window; /* Create and initialise the new window */ window = newwin(Int_val(nlines), Int_val(ncols), Int_val(beginy), Int_val(beginx)); if(window == NULL) { failwith("caml_curses_newwin: newwin call failed"); } setwinopts(window, TRUE); /* Return the result, packaged into a nativeint */ result = ml_of_window(window); CAMLreturn(result); } value caml_curses_delwin(value mlwindow) { CAMLparam1(mlwindow); WINDOW *window = window_of_ml(mlwindow); /* Delete the window */ delwin(window); CAMLreturn(Val_unit); } value caml_curses_waddch(value mlwindow, value ch) { CAMLparam2(mlwindow, ch); WINDOW *window = window_of_ml(mlwindow); /* Display this character */ waddch(window, Int_val(ch)); CAMLreturn(Val_unit); } value caml_curses_waddstr(value mlwindow, value str) { CAMLparam2(mlwindow, str); WINDOW *window = window_of_ml(mlwindow); /* Display this character */ waddstr(window, String_val(str)); CAMLreturn(Val_unit); } value caml_curses_wattron(value mlwindow, value mlattr) { CAMLparam2(mlwindow, mlattr); WINDOW *window = window_of_ml(mlwindow); int attr = translate_attr(Int_val(mlattr)); /* Turn on the indicated attribute */ wattron(window, attr); CAMLreturn(Val_unit); } value caml_curses_wattroff(value mlwindow, value mlattr) { CAMLparam2(mlwindow, mlattr); WINDOW *window = window_of_ml(mlwindow); int attr = translate_attr(Int_val(mlattr)); /* Turn off the indicated attribute */ wattroff(window, attr); CAMLreturn(Val_unit); } value caml_curses_wgetch(value mlwindow) { CAMLparam1(mlwindow); WINDOW *window = window_of_ml(mlwindow); int ch; /* Get a character from curses */ ch = wgetch(window); /* Return the character read */ CAMLreturn(Val_int(ch)); } /* * Get a string from the user. This is a fancy version which will size * the maximum length of the line based on the amount of space remaining * on the current line in the ncurses window. */ value caml_curses_wgetstr(value mlwindow) { CAMLparam1(mlwindow); CAMLlocal1(result); WINDOW *window = window_of_ml(mlwindow); char *buffer = NULL; int cury, curx; int maxy, maxx; int len; /* Get the window extents to determine a line length */ getyx(window, cury, curx); getmaxyx(window, maxy, maxx); len = maxx - curx - 1; /* Allocate a buffer to store the results in. */ buffer = malloc(len + 1); if(buffer == NULL) { CAMLreturn(copy_string("")); } /* Get the line input */ wgetnstr(window, buffer, len); /* Return the character read */ result = copy_string(buffer); free(buffer); CAMLreturn(result); } value caml_curses_wrefresh(value mlwindow) { CAMLparam1(mlwindow); WINDOW *window = window_of_ml(mlwindow); /* Refresh the window display */ wrefresh(window); CAMLreturn(Val_unit); } value caml_curses_wnoutrefresh(value mlwindow) { CAMLparam1(mlwindow); WINDOW *window = window_of_ml(mlwindow); /* Refresh the window display; does not write to terminal! */ wnoutrefresh(window); CAMLreturn(Val_unit); } value caml_curses_doupdate(value unit) { CAMLparam1(unit); /* Draw pending wnoutrefresh calls to the screen. */ doupdate(); CAMLreturn(Val_unit); } /* * This forces a redraw of the entire screen. */ value caml_curses_refreshscreen(value unit) { CAMLparam1(unit); /* Force redraw of entire screen (assume all lines are tainted) */ wrefresh(curscr); CAMLreturn(Val_unit); } value caml_curses_werase(value mlwindow) { CAMLparam1(mlwindow); WINDOW *window = window_of_ml(mlwindow); /* Erase the window display */ werase(window); CAMLreturn(Val_unit); } value caml_curses_wclrtoeol(value mlwindow) { CAMLparam1(mlwindow); WINDOW *window = window_of_ml(mlwindow); /* Erase to end of current line */ wclrtoeol(window); CAMLreturn(Val_unit); } value caml_curses_wclrtobot(value mlwindow) { CAMLparam1(mlwindow); WINDOW *window = window_of_ml(mlwindow); /* Erase to end of current line, then clear all remaining lines. */ wclrtobot(window); CAMLreturn(Val_unit); } value caml_curses_wmove(value mlwindow, value y, value x) { CAMLparam3(mlwindow, y, x); WINDOW *window = window_of_ml(mlwindow); /* Move the cursor in the indicated window */ wmove(window, Int_val(y), Int_val(x)); CAMLreturn(Val_unit); } value caml_curses_getyx(value mlwindow) { CAMLparam1(mlwindow); CAMLlocal1(result); WINDOW *window = window_of_ml(mlwindow); int y, x; /* Get the current cursor position in the indicated window. */ getyx(window, y, x); /* Construct a tuple to store the results in. */ result = alloc_tuple(2); Field(result, 0) = Val_int(y); Field(result, 1) = Val_int(x); CAMLreturn(result); } value caml_curses_getmaxyx(value mlwindow) { CAMLparam1(mlwindow); CAMLlocal1(result); WINDOW *window = window_of_ml(mlwindow); int y, x; /* Get the maximum cursor position in the indicated window. */ getmaxyx(window, y, x); /* Construct a tuple to store the results in. */ result = alloc_tuple(2); Field(result, 0) = Val_int(y); Field(result, 1) = Val_int(x); CAMLreturn(result); } value caml_curses_scrollok(value mlwindow, value scrollable) { CAMLparam2(mlwindow, scrollable); WINDOW *window = window_of_ml(mlwindow); /* Update window settings */ scrollok(window, Bool_val(scrollable)); CAMLreturn(Val_unit); } value caml_curses_echook(value ok) { CAMLparam1(ok); /* Set or clear echo flag, based on the flag given. */ if(Bool_val(ok)) { echo(); } else { noecho(); } CAMLreturn(Val_unit); } value caml_curses_wscrl(value mlwindow, value lines) { CAMLparam2(mlwindow, lines); WINDOW *window = window_of_ml(mlwindow); /* Scroll the window; lines > 0, scroll UP; lines < 0, scroll DN */ wscrl(window, Int_val(lines)); CAMLreturn(Val_unit); } #else /* No NCURSES support! */ CAML_BIND_KEY(caml_key_down, 0) CAML_BIND_KEY(caml_key_up, 0) CAML_BIND_KEY(caml_key_left, 0) CAML_BIND_KEY(caml_key_right, 0) CAML_BIND_KEY(caml_key_home, 0) CAML_BIND_KEY(caml_key_end, 0) CAML_BIND_KEY(caml_key_npage, 0) CAML_BIND_KEY(caml_key_ppage, 0) CAML_BIND_KEY(caml_key_enter, 0) CAML_BIND_KEY(caml_key_cancel,0) /* * Report that we do NOT support ncurses. */ value caml_curses_enabled(value unit) { CAMLparam1(unit); CAMLreturn(Val_false); } value caml_curses_initscr(value unit) { CAMLparam1(unit); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_endwin(value unit) { CAMLparam1(unit); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_newwin(value nlines, value ncols, value beginy, value beginx) { CAMLparam4(nlines, ncols, beginy, beginx); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_delwin(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_waddch(value mlwindow, value ch) { CAMLparam2(mlwindow, ch); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_waddstr(value mlwindow, value str) { CAMLparam2(mlwindow, str); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wattron(value mlwindow, value mlattr) { CAMLparam2(mlwindow, mlattr); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wattroff(value mlwindow, value mlattr) { CAMLparam2(mlwindow, mlattr); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wgetch(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wgetstr(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wrefresh(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wnoutrefresh(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_doupdate(value unit) { CAMLparam1(unit); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_refreshscreen(value unit) { CAMLparam1(unit); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_werase(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wclrtoeol(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wclrtobot(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wmove(value mlwindow, value y, value x) { CAMLparam3(mlwindow, y, x); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_getyx(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_getmaxyx(value mlwindow) { CAMLparam1(mlwindow); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_scrollok(value mlwindow, value scrollable) { CAMLparam2(mlwindow, scrollable); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_echook(value ok) { CAMLparam1(ok); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } value caml_curses_wscrl(value mlwindow, value lines) { CAMLparam2(mlwindow, lines); failwith("No ncurses support enabled"); CAMLreturn(Val_unit); } #endif /* NCURSES support enabled or disabled? */ omake-0.9.8.5/src/libmojave-external/cutil/lm_dll.h0000664000152300015230000000733410652466655020274 0ustar jyhjyh/* * Dynamic linking hooks. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifndef _LM_DLL_H #define _LM_DLL_H /* * The normal magic number. */ #define LM_DLL_MAGIC 0xabe5a34d /* * Strings are named by identifiers. */ typedef short DllId; typedef DllId DllString; typedef DllId DllStringArray; typedef DllId DllFields; /* * Standard type names. For values of any other type, * just define a string name for it. */ typedef DllString DllType; /* * Callbacks are identified by number. */ typedef unsigned DllCallbackId; /* * A description of a field in a struct. */ typedef struct { DllString name; DllString type; } DllField; /* * Arguments are also specified as fields. */ typedef DllId DllArgTypes; /* * An object if a collection of fields. */ typedef struct { DllString name; DllFields fields; } DllObject; /* * Fields in enumerations. */ typedef struct { DllString name; int value; } DllEnumField; typedef struct { DllString name; DllEnumField *fields; } DllEnumInfo; /* * Type information for values that are exported. */ typedef value (*ValueFun)(value); typedef struct { DllString name; ValueFun value; DllArgTypes arg_types; DllType result_type; } DllValue; /* * Hooks to provide OCaml functions. */ typedef struct { value (*alloc_hook)(mlsize_t, tag_t); value (*alloc_tuple_hook)(mlsize_t); value (*alloc_custom_hook)(struct custom_operations *ops, unsigned long size, mlsize_t mem, mlsize_t max); value (*copy_string_hook)(const char *s); value (*copy_string_array_hook)(const char **s); value (*copy_int32_hook)(int32 i); value (*copy_nativeint_hook)(intnat i); value (*copy_int64_hook)(int64 i); value (*copy_double_hook)(double x); value *(*named_value_hook)(const char *name); value (*callback1_hook)(value, value); value (*callback2_hook)(value, value, value); value (*callback1_exn_hook)(value, value); value (*callback2_exn_hook)(value, value, value); void (*register_global_root_hook)(value *); void (*modify)(value *, value); struct caml__roots_block **dll_local_roots; } DllHooks; /* * Every library should define an export list * of all its functions. */ typedef struct { int magic; int version; value (*initialize_dll)(DllHooks *); int callback_count; value (*set_callback_handlers)(value handlers); char **strings; DllField **fields; DllObject *objects; DllEnumInfo *enums; DllValue *values; } DllExport; /* * Default definitions for the internal keywords. */ #define __dll_callback static #define __dll_typedef typedef #define DLL_REF(x) *x #endif /* _LM_DLL_H */ omake-0.9.8.5/src/libmojave-external/cutil/lm_heap.c0000664000152300015230000001662710534115352020416 0ustar jyhjyh/* * Some debugging code for the heap. * WARNING: if you want to use this, you _must_ link against a DEBUG * version of OCaml! * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #if defined(WIN32) || defined(_WIN32) /* Disable some of the warnings */ #pragma warning( disable : 4146 ) #endif extern char *caml_young_start, *caml_young_ptr, *caml_young_limit, *caml_young_end; static char *null = 0; #undef abort #define abort() (*null = 0) static void search_pointer(char **pointers, char *name, unsigned bound, char *p, char *v, unsigned index) { unsigned i, j, k; char *p2; i = 0; j = bound; while(j - i > 1) { k = (i + j) >> 1; p2 = pointers[k]; if(p2 <= p) i = k; else j = k; } p2 = pointers[i]; if((p2 != p) && (Tag_val(p) != Infix_tag)) { fprintf(stderr, "%s: illegal pointer: 0x%08lx < 0x%08lx < 0x%08lx, size = %lud, tag = %d\n", name, (unsigned long) p2, (unsigned long) p, (unsigned long) pointers[i + 1], Wosize_val(p), Tag_val(p)); fprintf(stderr, "points into: 0x%08lx: index = %d, size = %lud, tag = %d\n", (unsigned long) p2, i, Wosize_val(p2), Tag_val(p2)); fprintf(stderr, "from block: 0x%08lx: size = %lud, tag = %d, field = %d\n", (unsigned long) v, Wosize_val(v), Tag_val(v), index); fflush(stderr); abort(); } } static void lm_heap_check_aux1(char *name) { char *start, *ptr, *end; char *v; value p, *next; mlsize_t size; unsigned i, index, found; char *pointers[1 << 16]; start = caml_young_start; ptr = caml_young_ptr; end = caml_young_end; fprintf(stderr, "AAA: %s: [0x%08lx, 0x%08lx, 0x%08lx, 0x%08lx] (%ld/%ld/%ld bytes)\n", name, (unsigned long) caml_young_start, (unsigned long) caml_young_ptr, (unsigned long) caml_young_limit, (unsigned long) caml_young_end, ((unsigned long) caml_young_end) - (unsigned long) caml_young_ptr, ((unsigned long) caml_young_end) - (unsigned long) caml_young_limit, ((unsigned long) caml_young_end) - (unsigned long) caml_young_start); fflush(stderr); /* * Phase 1: check that the headers have the right sizes. */ v = (char *) Val_hp(caml_young_ptr); index = 0; while(v < caml_young_end) { pointers[index++] = (char *) v; size = Wosize_val(v); fprintf(stderr, "%s: 0x%08lx: size %lud, tag = %d\n", name, (unsigned long) v, size, Tag_val(v)); found = 0; for(i = 0; i != 10; i++) { next = &Field(v, size + i); if(next < (value *) caml_young_end) { p = *next; #define Debug_free_minor 0xD700D6D7ul if(p == Debug_free_minor) { fprintf(stderr, "\tnext[%d]:0x%08lx = 0x%08lx\n", i, (unsigned long) next, (unsigned long) p); found = 1; } else if(found) fprintf(stderr, "\tnext[%d]:0x%08lx = 0x%08lx, size = %lud, tag = %d\n", i, (unsigned long) next, (unsigned long) p, Wosize_hd(p), Tag_hd(p)); } } fflush(stderr); v = (char *) &Field(v, size + 1); } if(v > (char *) Val_hp(caml_young_end)) { fprintf(stderr, "%s: heap is bogus\n", name); fflush(stderr); return; } /* * Phase 2: check that all the fields point to actual * values. */ v = (char *) Val_hp(caml_young_ptr); while(v < caml_young_end) { size = Wosize_val(v); if(Tag_val(v) < No_scan_tag) { fprintf(stderr, "%s: scanning 0x%08lx: size %lud, tag = %d\n", name, (unsigned long) v, size, Tag_val(v)); fflush(stderr); for(i = 0; i != size; i++) { char *p = (char *) Field(v, i); if(Is_block((value) p)) { if(p >= caml_young_limit && p < caml_young_ptr) { fprintf(stderr, "%s: pointer refers to empty young space\n", name); fflush(stderr); return; } if(p >= caml_young_ptr && p < caml_young_end) search_pointer(pointers, name, index, p, v, i); } } } v = (char *) &Field(v, size + 1); } } static void lm_heap_check_aux2(char *name) { char *start, *ptr, *end; char *v; header_t hd; mlsize_t size; unsigned i; start = caml_young_start; ptr = caml_young_ptr; end = caml_young_end; fprintf(stderr, "AAA: %s: [0x%08lx, 0x%08lx, 0x%08lx, 0x%08lx] (%ld/%ld/%ld bytes)\n", name, (unsigned long) caml_young_start, (unsigned long) caml_young_ptr, (unsigned long) caml_young_limit, (unsigned long) caml_young_end, ((unsigned long) caml_young_end) - (unsigned long) caml_young_ptr, ((unsigned long) caml_young_end) - (unsigned long) caml_young_limit, ((unsigned long) caml_young_end) - (unsigned long) caml_young_start); fflush(stderr); /* * Phase 1: check that the headers have the right sizes. */ v = (char *) Val_hp(caml_young_ptr); while(v < caml_young_end) { hd = Hd_val(v); if(hd == Debug_free_minor) { fprintf(stderr, "Bogus pointer: 0x%08lx\n", (unsigned long) v); fflush(stderr); v += sizeof(header_t); } else { size = Wosize_val(v); for(i = 0; i != size; i++) { char *p = (char *) Field(v, i); if(p >= caml_young_end && p < caml_young_ptr) { fprintf(stderr, "%s: Found a bogus pointer: 0x%08lx[%d] = 0x%08lx\n", name, (unsigned long) v, i, (unsigned long) p); fflush(stderr); abort(); } } v = (char *) &Field(v, size + 1); } } } value lm_heap_check(value v_name) { lm_heap_check_aux1(String_val(v_name)); lm_heap_check_aux2(String_val(v_name)); return Val_unit; } omake-0.9.8.5/src/libmojave-external/cutil/lm_marshal_shared.c0000664000152300015230000000622710464477010022455 0ustar jyhjyh/* * This file contains helper functions for the marshal module. * * ---------------------------------------------------------------- * * This file is part of MetaPRL, a modular, higher order * logical framework that provides a logical programming * environment for OCaml and other languages. * * See the file doc/htmlman/default.html or visit http://metaprl.org/ * for more information. * * Copyright (C) 1999 PRL Group, Cornell University and Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * jyh@cs.cornell.edu */ #include #include #include #include /* * Write the contents of the block to the string. */ value ml_write_block(value obj, value buf, value v_start) { int start = Int_val(v_start); int buf_len = string_length(buf); int obj_len = Bosize_val(obj); char *bufp = String_val(buf); /* * Check all the bounds. */ if(start < 0 || start + obj_len > buf_len) invalid_argument("unsafe_write_block"); /* * Copy the data as a byte stream. */ memcpy(bufp + start, Bp_val(obj), obj_len); return Val_unit; } /* * These are not implemented yet. */ value ml_create_pointer_hash(value unit_val) { return Val_unit; } value ml_pointer_hash_insert(value table, value v_index, value obj) { return Val_unit; } value ml_pointer_hash_lookup(value table, value weak_array, value obj) { return Val_int(0); } /* * * * $Log$ * Revision 1.2 2005/07/07 02:34:06 nogin * More preamble changes * * Revision 1.1 2003/07/12 21:59:10 jyh * Migrated more code into libmojave. * * Revision 1.3 2002/05/22 17:45:49 justins * Fixing numerous compiler warnings in clib. Most of these have to do with * the #pragma directives that were obsoleted; I checked with Jason and he said * it was okay to remove them. The rest are adding header files and function * prototypes for missing symbols, and working around a few uninitialized var * warnings. This should not change the semantics of anything in clib. * * Revision 1.2 2001/05/14 20:53:50 nogin * Cosmetic changes to avoid warnings with newer versions of GCC. * * Revision 1.1 1999/05/03 12:11:20 jyh * Added an initial incomplete version of the distributed marshaler. * */ omake-0.9.8.5/src/libmojave-external/cutil/fam_inotify.c0000664000152300015230000002340510534115352021305 0ustar jyhjyh/* * This implements a FAM-like service based on the inotify Linux interface. * For simplicity, we turn this into a FAM-like interface. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Nathaniel Gray, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifdef FAM_INOTIFY #include #include #include #include #include #include #include #include #include "fam_pseudo.h" #ifdef HAVE_INOTIFY_H # include #else # include "inotify.h" # include "inotify-syscalls.h" #endif /* * Max utility. */ #define MAX(i, j) ((i) < (j) ? (j) : (i)) #define MIN(i, j) ((i) < (j) ? (i) : (j)) static char *code_names[] = { "No Code", "Changed", "Deleted", "StartExecuting", "StopExecuting", "Created", "Moved", "Acknowledge", "Exists", "EndExist", "DirectoryChanged" }; int FAMErrno = 0; char *FamErrlist[] = { "No Error", "Too many directories", "Directory does not exist", "Windows error", "Out of memory", "Bad request number", "Request already exists", "Not implemented", "Permission denied", "Unknown error" }; /* * Info for each directory. * We keep a request number, for compatibility * with Unix FAM. */ typedef struct dir_info { unsigned request; // Request number int wd; // Watch descriptor void *userdata; // User data for this directory char name[1]; // Name of the directory } DirInfo; /************************************************************************ * LOCAL FUNCTIONS */ /* * Close a directory entry. */ static void free_dir(DirInfo *dir) { free(dir); } /* * Free an event. */ static void free_event(FAMEvent *event) { free(event); } /* * Events are read directly from the file descriptor. * Use select(2) to check if there is pending input. */ static int monitor_poll(FAMConnection *fc) { fd_set fd_in; struct timeval timeout; timeout.tv_sec = 0; timeout.tv_usec = 0; FD_ZERO(&fd_in); FD_SET(fc->id, &fd_in); select(fc->id + 1, &fd_in, 0, 0, &timeout); return FD_ISSET(fc->id, &fd_in); } /* * The FAM code corresponding to an inotify code. */ static FAMCodes fam_code(int mask) { FAMCodes code; if(mask & (IN_MOVED_FROM | IN_MOVED_TO)) code = FAMMoved; else if(mask & IN_DELETE) code = FAMDeleted; else code = FAMChanged; return code; } static int monitor_read(FAMConnection *fc) { char buf[(sizeof(struct inotify_event) + 64) * 256]; struct inotify_event *ievent; int i, len, amount, rd; FAMEvent *eventp; DirInfo *dirp; /* Try reading multiple events at once */ len = read(fc->id, buf, sizeof(buf)); if(len < 0) { perror ("read"); return -1; } /* Turn each even into a FAM event */ i = 0; while(i < len) { ievent = (struct inotify_event *) &buf[i]; /* Find the directory this belongs to */ for(rd = 0; rd != fc->dir_count; rd++) { dirp = fc->dirs[rd]; if(dirp && dirp->wd == ievent->wd) break; } if(rd == fc->dir_count) { // This wan't happen if things are working correctly fprintf(stderr, "Inotify: bogus watch descriptor: %d\n", ievent->wd); break; } /* Translate it to a FAM event */ eventp = malloc(sizeof(FAMEvent)); if(eventp == 0) break; eventp->fc = fc; eventp->fr.reqnum = rd; eventp->userdata = dirp->userdata; eventp->code = fam_code(ievent->mask); eventp->next = 0; /* Copy the name */ amount = MIN(NAME_MAX - 1, ievent->len); memcpy(eventp->filename, ievent->name, amount); eventp->filename[amount] = 0; /* Link it in */ if(fc->last == 0) fc->event = fc->last = eventp; else fc->last = fc->last->next = eventp; i += sizeof(struct inotify_event) + ievent->len; } return 0; } /************************************************************************ * Public functions. */ /* * Open the server. */ int FAMOpen(FAMConnection *fc) { int id; memset(fc, 0, sizeof(*fc)); fc->id = inotify_init(); if(fc ->id < 0) perror("inotify_init"); return fc->id; } /* * Close the fc. */ int FAMClose(FAMConnection *fc) { FAMEvent *event, *next; int i; /* Free all the directories */ for(i = 0; i != MAX_DIR_COUNT; i++) { if(fc->dirs[i]) free_dir(fc->dirs[i]); } /* Free all the events */ event = fc->event; while(event) { next = event->next; free_event(event); event = next; } /* Reset the fc */ close(fc->id); memset(fc, 0, sizeof(*fc)); return 0; } /* * Monitor a directory. */ int FAMMonitorDirectory(FAMConnection *fc, const char *name, FAMRequest *requestp, void *userdata) { unsigned request, length; DirInfo *dir; int i, wd; #ifdef FAM_DEBUG fprintf(stderr, "Asking to monitor directory: %s\n", name); fflush(stderr); #endif /* Search for a slot */ for(request = 0; request != fc->dir_count; request++) { if(fc->dirs[request] == 0) break; } /* Watch for overflows */ if(request == MAX_DIR_COUNT) { FAMErrno = FAM_TOO_MANY_DIRECTORIES; return -1; } requestp->reqnum = request; /* Add the watch */ wd = inotify_add_watch(fc->id, name, IN_MODIFY | IN_CLOSE_WRITE | IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_ATTRIB); if(wd < 0) { FAMErrno = FAM_DIRECTORY_DOES_NOT_EXIST; return -1; } /* Allocate a directory struct */ length = sizeof(DirInfo) + strlen(name); dir = (DirInfo *) malloc(length); if(dir == 0) { FAMErrno = FAM_OUT_OF_MEMORY; return -1; } memset(dir, 0, length); /* Initialize */ dir->request = request; dir->userdata = userdata; dir->wd = wd; strcpy(dir->name, name); /* Save it in the fc */ fc->dirs[request] = dir; fc->dir_count = MAX(request + 1, fc->dir_count); return 0; } /* * Cancel monitoring. */ int FAMCancelMonitor(FAMConnection *fc, FAMRequest *requestp) { DirInfo *dir; unsigned request; request = requestp->reqnum; if(request >= fc->dir_count || fc->dirs[request] == 0) { FAMErrno = FAM_BAD_REQUEST_NUMBER; return -1; } dir = fc->dirs[request]; inotify_rm_watch(fc->id, dir->wd); free_dir(dir); fc->dirs[request] = 0; return 0; } /* * Get the next event. Block for one if there is no event. */ int FAMNextEvent(FAMConnection *fc, FAMEvent *event) { FAMEvent *current; int request; while(1) { /* See if there is already an event */ current = fc->event; if(current) { #if FAM_DEBUG fprintf(stderr, "Request: %d, Name: %s, Event: %s\n", current->fr.reqnum, current->filename, code_names[current->code]); fflush(stderr); #endif *event = *current; fc->event = current->next; if(fc->event == NULL) fc->last = NULL; free_event(current); return 0; } /* If not, blocking poll for an event */ #if FAM_DEBUG fprintf( stderr, "FAMNextEvent: blocking...\n" ); #endif request = monitor_read(fc); #if FAM_DEBUG fprintf( stderr, "FAMNextEvent: request = %d\n", request ); #endif if(request < 0) return -1; } } /* * See if there is a pending event. */ int FAMPending(FAMConnection *fc) { int result; #ifdef FAM_DEBUG fprintf(stderr, "Checking for pending FAM events.\n"); fflush(stderr); #endif /* See if there is already an event */ if(fc->event) return 1; /* If not, non-blocking poll for input */ return monitor_poll(fc); } /***************************************************************************** * Functions from the FAM interface that aren't implemented * The first two probably work, but they've never been tested. */ /* * Suspend monitoring. */ int FAMSuspendMonitor(FAMConnection *fc, FAMRequest *requestp) { FAMErrno = FAM_NOT_IMPLEMENTED; return -1; } /* * Resume monitoring. */ int FAMResumeMonitor(FAMConnection *fc, FAMRequest *requestp) { FAMErrno = FAM_NOT_IMPLEMENTED; return -1; } int FAMMonitorDirectoryTree(FAMConnection *fc, const char *name, FAMRequest *requestp, void *userdata) { FAMErrno = FAM_NOT_IMPLEMENTED; return -1; } #else /* FAM_INOTIFY */ #if defined(WIN32) || defined(_WIN32) /* Disable the "translation unit is empty" warning */ #pragma warning( disable : 4206 ) #endif #endif /* FAM_INOTIFY */ omake-0.9.8.5/src/libmojave-external/cutil/lm_dll.c0000664000152300015230000003647410626354411020261 0ustar jyhjyh/* * Dynamic linking. We provide a minimal amount of type checking. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #include #include #include #include "lm_dll.h" #include "lm_dll_pointers.h" /************************************************************************ * More allocation. */ value lm_dll_malloc(value v_size) { return dll_malloc(Int_val(v_size)); } value lm_dll_free(value v) { unsigned long off, size; char *p, *base; if(v == 0) failwith("lm_dll_free: free a null pointer"); p = DllPointer_pointer_val(v); if(p == 0) failwith("lm_dll_free: free a null pointer"); DllPointer_pointer_val(v) = 0; return Val_unit; } /* * Array of pointers. * NULL terminated. */ value lm_dll_pointer_array(value v_array) { CAMLparam1(v_array); CAMLlocal1(v); int i, words; void **p; words = Wosize_val(v_array); v = dll_malloc((words + 1) * sizeof(void *)); p = DllPointer_pointer_val(v); for(i = 0; i != words; i++) p[i] = DllPointer_pointer_val(Field(v_array, i)); p[i] = 0; CAMLreturn(v); } /* * String allocation. */ value lm_dll_strdup(value v_str) { CAMLparam1(v_str); CAMLlocal1(v); int size, len; char *s, *p; s = String_val(v_str); len = strlen(s); v = dll_malloc(len + 1); p = DllPointer_pointer_val(v); memcpy(p, s, len); p[len] = 0; CAMLreturn(v); } value lm_dll_string_of_pointer(value v_ptr) { return copy_string(DllPointer_pointer_val(v_ptr)); } /* * String array allocation. */ value lm_dll_pointer_of_string_array(value v_argv) { CAMLparam1(v_argv); CAMLlocal1(v); char **p, *top, *s; int i, len, words, size; /* Calculate the total storage size */ words = Wosize_val(v_argv); size = sizeof(char *) * (words + 1); for(i = 0; i != words; i++) size += strlen(String_val(Field(v_argv, i))) + 1; /* Copy the entries */ v = dll_malloc(size); p = (char **) DllPointer_pointer_val(v); top = (char *) (p + (words + 1)); for(i = 0; i != words; i++) { s = String_val(Field(v_argv, i)); len = strlen(s); memcpy(top, s, len); p[i] = top; top[len] = 0; top += len + 1; } p[i] = 0; CAMLreturn(v); } value lm_dll_string_array_of_pointer(value v_ptr) { return caml_copy_string_array(DllPointer_pointer_val(v_ptr)); } /************************************************************************ * Win32 section. */ #ifdef WIN32 /* * Open a dynamic link library. */ value lm_dlopen(value v_filename, value v_flags) { CAMLparam2(v_filename, v_flags); failwith("lm_dlopen"); /* Return it */ CAMLreturn(Val_unit); } /* * Open static info. */ value lm_dlopen_static(DllExport *values) { CAMLparam0(); failwith("lm_dlopen_static"); CAMLreturn(Val_unit); } /* * Set the callback handler. */ typedef void (*SetHandler)(value); typedef value (*FunPointer)(value); value lm_set_callback_handler(value v_set, value v_handler) { SetHandler set = (SetHandler) v_set; set(v_handler); return Val_unit; } /* * Apply the function. */ value lm_dlapply(value v_sym, value v_args) { CAMLparam2(v_sym, v_args); failwith("lm_dlapply"); CAMLreturn(Val_unit); } /* * NULL pointers. */ value lm_dlnull(value v_arg) { CAMLparam1(v_arg); failwith("lm_dlnull"); CAMLreturn(Val_unit); } value lm_dlpointer_of_int(value v_arg) { CAMLparam1(v_arg); failwith("lm_dlpointer_of_int"); CAMLreturn(Val_unit); } value lm_dlint_of_pointer(value v_arg) { CAMLparam1(v_arg); failwith("lm_dlint_of_pointer"); CAMLreturn(Val_unit); } value lm_dlpointer_of_nativeint(value v_arg) { CAMLparam1(v_arg); failwith("lm_dlpointer_of_nativeint"); CAMLreturn(Val_unit); } value lm_dlnativeint_of_pointer(value v_arg) { CAMLparam1(v_arg); failwith("lm_dlnativeint_of_pointer"); CAMLreturn(Val_unit); } #else /* !WIN32 */ /************************************************************************ * UNIX. */ #include #define CAML_RTLD_LAZY 0 #define CAML_RTLD_NOW 1 #define CAML_RTLD_GLOBAL 2 /* * Hooks. */ static DllHooks hooks = { caml_alloc, caml_alloc_tuple, caml_alloc_custom, caml_copy_string, caml_copy_string_array, caml_copy_int32, caml_copy_nativeint, caml_copy_int64, caml_copy_double, caml_named_value, caml_callback, caml_callback2, caml_callback_exn, caml_callback2_exn, caml_register_global_root, caml_modify, &caml_local_roots }; /************************************************************************ * Allocate of C data. */ /* * A single field in an object. */ static value alloc_field(value v_strings, DllField *field) { CAMLparam1(v_strings); CAMLlocal1(v_tuple); v_tuple = alloc_tuple(2); Store_field(v_tuple, 0, Field(v_strings, field->name)); Store_field(v_tuple, 1, Field(v_strings, field->type)); CAMLreturn(v_tuple); } /* * All the fields in an object or argument list. */ static value alloc_rttd(value v_strings, DllField *fields) { CAMLparam1(v_strings); CAMLlocal1(v_tuple); DllField *p; int i; /* Get the number of entries */ i = 0; for(p = fields; p->name >= 0; p++) i++; if(i == 0) CAMLreturn(Atom(0)); /* Alloc them */ v_tuple = alloc_tuple(i); for(i = 0, p = fields; p->name >= 0; i++, p++) Store_field(v_tuple, i, alloc_field(v_strings, p)); CAMLreturn(v_tuple); } /* * All the objects in the library. */ static value alloc_fields(value v_strings, DllField **fields) { CAMLparam1(v_strings); CAMLlocal1(v_tuple); DllField **p; int i; /* Get the number of entries */ i = 0; for(p = fields; *p; p++) i++; if(i == 0) CAMLreturn(Atom(0)); /* Alloc them */ v_tuple = alloc_tuple(i); for(i = 0, p = fields; *p; i++, p++) Store_field(v_tuple, i, alloc_rttd(v_strings, *p)); CAMLreturn(v_tuple); } /* * A specific object. */ static value alloc_object(value v_strings, value v_fields, DllObject *obj) { CAMLparam2(v_strings, v_fields); CAMLlocal1(v_tuple); v_tuple = alloc_tuple(2); Store_field(v_tuple, 0, Field(v_strings, obj->name)); Store_field(v_tuple, 1, Field(v_fields, obj->fields)); CAMLreturn(v_tuple); } /* * All the objects in the program. */ static value alloc_objects(value v_strings, value v_fields, DllObject *objs) { CAMLparam2(v_strings, v_fields); CAMLlocal1(v_tuple); DllObject *p; int i; /* Get the number of entries */ i = 0; for(p = objs; p->name >= 0; p++) i++; if(i == 0) CAMLreturn(Atom(0)); /* Alloc them */ v_tuple = alloc_tuple(i); for(i = 0, p = objs; p->name >= 0; i++, p++) Store_field(v_tuple, i, alloc_object(v_strings, v_fields, p)); CAMLreturn(v_tuple); } /* * Enumerations. */ static value alloc_enum_field(value v_strings, DllEnumField *field) { CAMLparam1(v_strings); CAMLlocal1(v_tuple); v_tuple = alloc_tuple(2); Store_field(v_tuple, 0, Field(v_strings, field->name)); Store_field(v_tuple, 1, copy_nativeint(field->value)); CAMLreturn(v_tuple); } static value alloc_enum_fields(value v_strings, DllEnumField *fields) { CAMLparam1(v_strings); CAMLlocal1(v_tuple); DllEnumField *p; int i; /* Get the number of entries */ i = 0; for(p = fields; p->name >= 0; p++) i++; if(i == 0) CAMLreturn(Atom(0)); /* Alloc them */ v_tuple = alloc_tuple(i); for(i = 0, p = fields; p->name >= 0; i++, p++) Store_field(v_tuple, i, alloc_enum_field(v_strings, p)); CAMLreturn(v_tuple); } static value alloc_enum_info(value v_strings, DllEnumInfo *info) { CAMLparam1(v_strings); CAMLlocal1(v_tuple); v_tuple = alloc_tuple(2); Store_field(v_tuple, 0, Field(v_strings, info->name)); Store_field(v_tuple, 1, alloc_enum_fields(v_strings, info->fields)); CAMLreturn(v_tuple); } static value alloc_enums(value v_strings, DllEnumInfo *enums) { CAMLparam1(v_strings); CAMLlocal1(v_tuple); DllEnumInfo *p; int i; /* Get the number of entries */ i = 0; for(p = enums; p->name >= 0; p++) i++; if(i == 0) CAMLreturn(Atom(0)); /* Alloc them */ v_tuple = alloc_tuple(i); for(i = 0, p = enums; p->name >= 0; p++, i++) Store_field(v_tuple, i, alloc_enum_info(v_strings, p)); CAMLreturn(v_tuple); } /* * A single function value. */ static value alloc_value(value v_strings, value v_fields, DllValue *val) { CAMLparam2(v_strings, v_fields); CAMLlocal1(v_tuple); v_tuple = alloc_tuple(4); Store_field(v_tuple, 0, Field(v_strings, val->name)); Store_field(v_tuple, 1, dll_unmarshal_pointer(val->value)); Store_field(v_tuple, 2, Field(v_fields, val->arg_types)); Store_field(v_tuple, 3, Field(v_strings, val->result_type)); CAMLreturn(v_tuple); } /* * All the values in the program. */ static value alloc_values(value v_strings, value v_fields, DllValue *values) { CAMLparam1(v_strings); CAMLlocal1(v_tuple); DllValue *p; int i; /* Get the number of entries */ i = 0; for(p = values; p->name >= 0; p++) i++; if(i == 0) CAMLreturn(Atom(0)); /* Alloc them */ v_tuple = alloc_tuple(i); for(i = 0, p = values; p->name >= 0; i++, p++) Store_field(v_tuple, i, alloc_value(v_strings, v_fields, p)); CAMLreturn(v_tuple); } /* * Allocate everything. */ static value alloc_dll(DllExport *values, value v_globals) { CAMLparam1(v_globals); CAMLlocal3(v_strings, v_fields, v_tuple); /* Allocate the strings */ v_strings = copy_string_array((const char **) values->strings); v_fields = alloc_fields(v_strings, values->fields); /* Allocate the result */ v_tuple = alloc_tuple(6); Store_field(v_tuple, 0, alloc_objects(v_strings, v_fields, values->objects)); Store_field(v_tuple, 1, alloc_enums(v_strings, values->enums)); Store_field(v_tuple, 2, alloc_values(v_strings, v_fields, values->values)); Store_field(v_tuple, 3, Val_int(values->callback_count)); Store_field(v_tuple, 4, (value) values->set_callback_handlers); Store_field(v_tuple, 5, v_globals); CAMLreturn(v_tuple); } /************************************************************************ * DLL functions. */ /* * Open a dynamic link library. */ value lm_dlopen(value v_path, value v_filename, value v_flags) { CAMLparam3(v_path, v_filename, v_flags); CAMLlocal1(v_globals); DllExport *values; int flags; void *dll; value v; char path[1 << 16]; int index, argc, i, len; char *s; /* Parse the flags */ flags = RTLD_LAZY; while(Is_block(v_flags)) { value v_flag = Field(v_flags, 0); v_flags = Field(v_flags, 1); switch(Int_val(v_flag)) { case CAML_RTLD_LAZY: flags = (flags & ~RTLD_NOW) | RTLD_LAZY; break; case CAML_RTLD_NOW: flags = (flags & ~RTLD_LAZY) | RTLD_NOW; break; case CAML_RTLD_GLOBAL: flags |= RTLD_GLOBAL; break; default: caml_invalid_argument("caml_dlopen"); break; } } /* Compute and set the path */ index = 0; argc = Wosize_val(v_path); for(i = 0; i < argc; i++) { s = String_val(Field(v_path, i)); len = strlen(s); if(index + len > sizeof(path) - 2) { fprintf(stderr, "LD_LIBRARY_PATH is too long\n"); break; } if(i) path[index++] = ':'; memcpy(path + index, s, len); index += len; } path[index] = 0; setenv("DYLD_LIBRARY_PATH", path, 1); /* Now open the lib */ dll = dlopen(String_val(v_filename), flags); if(dll == 0) failwith(dlerror()); /* Load the value description */ values = dlsym(dll, "dll_export"); if(values) { if(values->magic != LM_DLL_MAGIC) { dlclose(dll); failwith(String_val(v_filename)); } v_globals = values->initialize_dll(&hooks); v = alloc_dll(values, v_globals); } else v = Val_int(0); /* Return it */ CAMLreturn(v); } /* * Open static info. */ value lm_dlopen_static(DllExport *values) { CAMLparam0(); CAMLlocal2(v_globals, v); if(values->magic == LM_DLL_MAGIC) { v_globals = values->initialize_dll(&hooks); v = alloc_dll(values, v_globals); } else v = Val_int(0); CAMLreturn(v); } /* * Set the callback handler. */ typedef value (*SetHandler)(value); typedef value (*FunPointer)(value); value lm_set_callback_handler(value v_set, value v_handler) { SetHandler set = (SetHandler) v_set; return set(v_handler); } /* * Apply the function. */ value lm_dlapply(value v_sym, value v_args) { CAMLparam2(v_sym, v_args); CAMLlocal1(v_result); FunPointer f; f = (FunPointer) dll_marshal_pointer(v_sym); v_result = f(v_args); CAMLreturn(v_result); } /* * NULL pointers. */ value lm_dlnull(value v_arg) { return dll_unmarshal_pointer(0); } value lm_dlpointer_of_int(value v_arg) { return dll_unmarshal_pointer((void *) Int_val(v_arg)); } value lm_dlint_of_pointer(value v_arg) { CAMLparam1(v_arg); CAMLlocal1(v); if(Is_long(v_arg)) v = v_arg; else if(Tag_val(v_arg) == Custom_tag && strcmp(Custom_ops_val(v_arg)->identifier, "dll_pointer") == 0) v = Val_int((value) dll_marshal_pointer(v_arg)); else failwith("int_of_pointer: not a pointer or integer"); CAMLreturn(v); } value lm_dlpointer_of_nativeint(value v_arg) { return dll_unmarshal_pointer((void *) Nativeint_val(v_arg)); } value lm_dlnativeint_of_pointer(value v_arg) { CAMLparam1(v_arg); CAMLlocal1(v); if(Is_long(v_arg)) v = v_arg; else if(Tag_val(v_arg) == Custom_tag && strcmp(Custom_ops_val(v_arg)->identifier, "dll_pointer") == 0) v = copy_nativeint((value) dll_marshal_pointer(v_arg)); else failwith("nativeint_of_pointer: not a pointer or integer"); CAMLreturn(v); } #endif /* !WIN32 */ omake-0.9.8.5/src/libmojave-external/cutil/lm_channel.c0000664000152300015230000000532410456222231021077 0ustar jyhjyh/* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #ifdef WIN32 #include #include "unixsupport.h" /* * Utilities for pipes, used by Omake_channel. * Returns true if the pipe has available input. */ value omake_shell_peek_pipe(value v_fd) { HANDLE pipe; BOOL status; DWORD total; pipe = Handle_val(v_fd); status = PeekNamedPipe(pipe, NULL, // Buffer for output data 0, // Size of the buffer NULL, // Number of bytes read &total, // Total number of bytes available NULL); // Number of bytes in the next message if(status == 0) failwith("Not a pipe"); return total ? Val_int(1) : Val_int(0); } /* * Figure out what kind of file descriptor this is. * 0: File * 1: Pipe * 2: Socket */ value omake_shell_pipe_kind(value v_fd) { HANDLE pipe; BOOL status; if(Descr_kind_val(v_fd) == KIND_SOCKET) return Val_int(2); pipe = Handle_val(v_fd); status = GetNamedPipeInfo(pipe, NULL, NULL, NULL, NULL); return status ? Val_int(1) : Val_int(0); } #else /* WIN32 */ value omake_shell_peek_pipe(value v_fd) { failwith("omake_shell_peek_pipe: not available on Unix systems"); return Val_unit; } value omake_shell_pipe_kind(value v_fd) { /* Always treat like sockets */ return Val_int(2); } #endif /* WIN32 */ omake-0.9.8.5/src/libmojave-external/cutil/lm_config.c0000664000152300015230000000301510456222231020727 0ustar jyhjyh/* * Native-code detection. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ /* Standard includes */ #include #include #include #include /* Caml includes */ #include #include #include #include /* Return a code */ value lm_byte_detect(value x) { return Int_val(0); } value lm_native_detect(value x) { return Int_val(1); } omake-0.9.8.5/src/libmojave-external/cutil/lm_float.c0000664000152300015230000001711310513273025020574 0ustar jyhjyh/* Floating-point high precision arithmetic Copyright (C) 2001 Justin David Smith, Caltech This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Additional permission is given to link this library with the OpenSSL project's "OpenSSL" library, and with the OCaml runtime, and you may distribute the linked executables. See the file LICENSE.libmojave for more details. */ #include #include #include #include #include #include #include #include #include #include #ifdef WIN32 # define INLINE #else # define INLINE inline #endif /*** Low-level calls ***/ /* Extract a float out of a block, and vice versa */ static INLINE long double load_float80(value f) { long double val; /* Get the value from the block */ val = *(long double *)String_val(f); return(val); } static INLINE void store_float80(value f, long double val) { long double *buffer; /* Store the value into the block */ buffer = (long double *)String_val(f); *buffer = val; } static INLINE value copy_float80(long double val) { value block; /* Allocate a string block to store the value */ block = alloc_string(sizeof(long double)); store_float80(block, val); return(block); } /*** Basic Coercions ***/ /* Output the floating-point value as a string */ value string_of_float80(value f) { CAMLparam1(f); CAMLlocal1(block); char buffer[0x100]; long double val; /* Print the floating-point value to a buffer */ val = load_float80(f); #ifdef HAVE_SNPRINTF snprintf(buffer, sizeof(buffer), "%Lg", val); #else sprintf(buffer, "%Lg", val); buffer[sizeof(buffer) - 1] = '\0'; #endif /* Allocate a new string block to contain result */ block = copy_string(buffer); CAMLreturn(block); } /* Coerces a long-double value into an ordinary float */ value float_of_float80(value f) { CAMLparam1(f); CAMLlocal1(block); double val; /* Load the value and create a new (standard double) block for it */ val = load_float80(f); block = copy_double(val); CAMLreturn(block); } /* Coerces a long-double value into an int value */ value int_of_float80(value f) { CAMLparam1(f); int val; /* Coerce the value to an integer and ML-ize it */ val = load_float80(f); CAMLreturn(Int_val(val)); } /* Creates a float80 value from a string value. */ value float80_of_string(value s) { CAMLparam1(s); char *buffer; long double val; /* Load the string value. */ buffer = String_val(s); #if 0 /* BUG: Looks like strtold does not work: glibc-2.2.2, Aug 31, 2001 --jyh */ val = strtold(buffer, NULL); #else val = strtod(buffer, NULL); #endif /* Create a new float80 block */ CAMLreturn(copy_float80(val)); } /* Creates a float80 from a normal float value. */ value float80_of_float(value f) { CAMLparam1(f); long double val; /* Load the float, and create new float80 block */ val = Double_val(f); CAMLreturn(copy_float80(val)); } /* Creates a float80 from an ML int value. */ value float80_of_int(value i) { CAMLparam1(i); long double val; /* Load the ML int, and create new float80 block */ val = Int_val(i); CAMLreturn(copy_float80(val)); } /* Formats a floating-point value into a string. */ value float80_format(value fmt, value f) { CAMLparam2(fmt, f); CAMLlocal1(block); char buffer[0x100]; long double val; /* Print the floating-point value to a buffer */ val = load_float80(f); #ifdef HAVE_SNPRINTF snprintf(buffer, sizeof(buffer), String_val(fmt), val); #else sprintf(buffer, String_val(fmt), val); buffer[sizeof(buffer) - 1] = '\0'; #endif /* Allocate a new string block to contain result */ block = copy_string(buffer); CAMLreturn(block); } /*** Arithmetic ***/ /* Negation */ value float80_neg(value f) { CAMLparam1(f); long double val; val = -load_float80(f); CAMLreturn(copy_float80(val)); } /* Absolute value */ value float80_abs(value f) { CAMLparam1(f); long double val; val = load_float80(f); if(val < 0) val = -val; CAMLreturn(copy_float80(val)); } /* Addition */ value float80_add(value f1, value f2) { CAMLparam2(f1, f2); long double val; val = load_float80(f1) + load_float80(f2); CAMLreturn(copy_float80(val)); } /* Subtraction */ value float80_sub(value f1, value f2) { CAMLparam2(f1, f2); long double val; val = load_float80(f1) - load_float80(f2); CAMLreturn(copy_float80(val)); } /* Multiplication */ value float80_mul(value f1, value f2) { CAMLparam2(f1, f2); long double val; val = load_float80(f1) * load_float80(f2); CAMLreturn(copy_float80(val)); } /* Division */ value float80_div(value f1, value f2) { CAMLparam2(f1, f2); long double val; val = load_float80(f1) / load_float80(f2); CAMLreturn(copy_float80(val)); } /* Comparison operator */ value float80_compare(value f1, value f2) { CAMLparam2(f1, f2); CAMLlocal1(result); long double val1; long double val2; val1 = load_float80(f1); val2 = load_float80(f2); if(val1 == val2) result = Val_int(0); else if(val1 > val2) result = Val_int(1); else result = Val_int(-1); CAMLreturn(result); } /* sin/cos/sqrt */ value float80_sin(value f) { CAMLparam1(f); long double val; val = sin(load_float80(f)); CAMLreturn(copy_float80(val)); } value float80_cos(value f) { CAMLparam1(f); long double val; val = cos(load_float80(f)); CAMLreturn(copy_float80(val)); } value float80_sqrt(value f) { CAMLparam1(f); long double val; val = sqrt(load_float80(f)); CAMLreturn(copy_float80(val)); } value float80_atan2(value f1, value f2) { CAMLparam2(f1, f2); long double val; val = atan2(load_float80(f1), load_float80(f2)); CAMLreturn(copy_float80(val)); } /* * BUG: these are hopefullu temporary. * Use them for assembling floats. * Error handling is performed at the C level. */ value c_blit_float32(value x_val, value buf_val, value off_val) { char *buf; float x; int off; x = load_float80(x_val); buf = String_val(buf_val); off = Int_val(off_val); assert(sizeof(x) == 4); memcpy(buf + off, &x, 4); return Val_unit; } value c_blit_float64(value x_val, value buf_val, value off_val) { char *buf; double x; int off; x = load_float80(x_val); buf = String_val(buf_val); off = Int_val(off_val); assert(sizeof(x) == 8); memcpy(buf + off, &x, 8); return Val_unit; } value c_blit_float80(value x_val, value buf_val, value off_val) { char *buf; long double x; int off; x = load_float80(x_val); buf = String_val(buf_val); off = Int_val(off_val); /* TEMP: sizeof returns the aligned type, perhaps? */ assert(sizeof(x) >= 10); memcpy(buf + off, &x, 10); return Val_unit; } omake-0.9.8.5/src/libmojave-external/cutil/lm_dll_types.h0000664000152300015230000000217610654713446021512 0ustar jyhjyh/* * Standard no-op definitions for the types file. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifndef _LM_DLL_TYPES_H #define _LM_DLL_TYPES_H /* * Reference depends on which compilation we're using. */ #define __DLL__ #define DLL_REF(v) &v #endif /* _LM_DLL_TYPES_H */ omake-0.9.8.5/src/libmojave-external/cutil/lm_abstract.c0000664000152300015230000000300210456222231021261 0ustar jyhjyh/* * Raw data operations on strings. * * ------------------------------------------------ * * @begin[license] * Copyright (C) 2001 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ /* Standard includes */ #include #include #include #include /* Caml includes */ #include #include #include #include /* * Make a new abstract value. * We start counting from 0. */ value new_abstract() { return (value) alloc(1, Abstract_tag); } omake-0.9.8.5/src/libmojave-external/cutil/lm_dll_pointers.h0000664000152300015230000000650210654713446022206 0ustar jyhjyh/* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifndef _LM_DLL_POINTERS_H #define _LM_DLL_POINTERS_H /************************************************************************ * Pointers are custom blocks. */ typedef struct _dll_pointer { void *p; } DllPointer; static DllPointer dll_null_pointer; #define DllPointer_val(v) ((DllPointer *) Data_custom_val(v)) #define DllPointer_pointer_val(v) (DllPointer_val(v)->p) static int dll_pointer_compare(value v1, value v2) { void *p1 = DllPointer_pointer_val(v1); void *p2 = DllPointer_pointer_val(v2); int i; if(p1 < p2) i = -1; else if(p1 > p2) i = 1; else i = 0; return i; } static long dll_pointer_hash(value v) { CAMLparam1(v); void *p = DllPointer_pointer_val(v); CAMLreturn((long) p); } static void dll_pointer_serialize(value v, unsigned long *wsize_32, unsigned long *wsize_64) { *wsize_32 = 4; *wsize_64 = 8; } static unsigned long dll_pointer_deserialize(void *dst) { *(DllPointer *)dst = dll_null_pointer; return sizeof(DllPointer); } static struct custom_operations dll_pointer_ops = { "dll_pointer", custom_finalize_default, dll_pointer_compare, dll_pointer_hash, dll_pointer_serialize, dll_pointer_deserialize }; static inline value dll_unmarshal_pointer(void *p) { value v; if(p) { v = alloc_custom(&dll_pointer_ops, sizeof(DllPointer), 0, 1); DllPointer_pointer_val(v) = p; } else v = 0; return v; } static inline void *dll_marshal_pointer(value v) { void *p; if(v) p = DllPointer_pointer_val(v); else p = 0; return p; } /* * For allocated values, we have to allocate with malloc(3), * because otherwise the value may move around. */ static void dll_malloc_finalize(value v) { void *p = DllPointer_pointer_val(v); if(p) { free(p); DllPointer_pointer_val(v) = 0; } } static struct custom_operations dll_malloc_ops = { "dll_malloc", dll_malloc_finalize, dll_pointer_compare, dll_pointer_hash, dll_pointer_serialize, dll_pointer_deserialize }; static value dll_malloc(unsigned size) { value v; void *p; v = alloc_custom(&dll_malloc_ops, sizeof(DllPointer), 0, 1); p = malloc(size); if(p == 0) { fprintf(stderr, "dll_malloc: out of memory"); exit(1); } memset(p, 0, size); DllPointer_pointer_val(v) = p; return v; } #endif /* _LM_DLL_POINTERS */ omake-0.9.8.5/src/libmojave-external/cutil/lm_printf.c0000664000152300015230000001135210646457613021006 0ustar jyhjyh/* * These printers use printf, both to ensure compatibility * with libc, and to make our life easier. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #include #include #ifdef WIN32 #include /* Disable some of the warnings */ #pragma warning( disable : 4996) #endif /* WIN32 */ /* * Some large buffer. */ #define BUFSIZE (1 << 12) /* * Print a char. */ value ml_print_char(value v_fmt, value v_char) { char buffer[BUFSIZE]; char *fmt = String_val(v_fmt); char c = (char) Int_val(v_char); #ifdef HAVE_SNPRINTF if(snprintf(buffer, sizeof(buffer), fmt, c) < 0) failwith("ml_print_char"); #else if(sprintf(buffer, fmt, c) < 0) failwith("ml_print_char"); #endif return copy_string(buffer); } /* * Print an int. */ value ml_print_int(value v_fmt, value v_int) { char buffer[BUFSIZE]; char *fmt = String_val(v_fmt); int i = Int_val(v_int); #ifdef HAVE_SNPRINTF if(snprintf(buffer, sizeof(buffer), fmt, i) < 0) failwith("ml_print_int"); #else if(sprintf(buffer, fmt, i) < 0) failwith("ml_print_int"); #endif return copy_string(buffer); } /* * Print an int. */ value ml_print_float(value v_fmt, value v_float) { char buffer[BUFSIZE]; char *fmt = String_val(v_fmt); double x = Double_val(v_float); #ifdef HAVE_SNPRINTF if(snprintf(buffer, sizeof(buffer), fmt, x) < 0) failwith("ml_print_float"); #else if(sprintf(buffer, fmt, x) < 0) failwith("ml_print_float"); #endif return copy_string(buffer); } /* * Print a string. */ value ml_print_string(value v_fmt, value v_string) { char buffer[BUFSIZE], *bufp; int len, size, code; char *fmt, *s; value v_result; /* Degenerate case if the format is %s */ fmt = String_val(v_fmt); if(strcmp(fmt, "%s") == 0) return v_string; /* Make an attempt to ensure that the buffer is large enough */ s = String_val(v_string); len = strlen(s); if(len < BUFSIZE) { size = BUFSIZE; bufp = buffer; } else { size = len * 2; bufp = malloc(size); if(bufp == 0) failwith("ml_print_string"); } #ifdef HAVE_SNPRINTF code = snprintf(bufp, size, fmt, s); #else code = sprintf(bufp, fmt, s); #endif if(code < 0) { if(bufp != buffer) free(buffer); failwith("ml_print_string"); } v_result = copy_string(bufp); if(bufp != buffer) free(buffer); return v_result; } /* * Print a string. */ value ml_print_string2(value v_width, value v_fmt, value v_string) { char buffer[BUFSIZE], *bufp; int width, len, size, code; char *fmt, *s; value v_result; /* Degenerate case if the format is %s */ fmt = String_val(v_fmt); if(strcmp(fmt, "%s") == 0) return v_string; /* Make an attempt to ensure that the buffer is large enough */ s = String_val(v_string); len = strlen(s); width = Int_val(v_width); if(width > len) len = width; if(len < BUFSIZE / 2) { size = BUFSIZE; bufp = buffer; } else { size = len * 2; bufp = malloc(size); if(bufp == 0) failwith("ml_print_string"); } #ifdef HAVE_SNPRINTF code = snprintf(bufp, size, fmt, s); #else code = sprintf(bufp, fmt, s); #endif if(code < 0) { if(bufp != buffer) free(buffer); failwith("ml_print_string"); } v_result = copy_string(bufp); if(bufp != buffer) free(buffer); return v_result; } omake-0.9.8.5/src/libmojave-external/cutil/lm_ssl.c0000664000152300015230000004363010456222231020272 0ustar jyhjyh/* * Interface to OpenSSL. This looks just like a standard socket * API, except that a few of the functions require certificates. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #include #include #ifdef WIN32 # include # define SHUT_RD 0 # define SHUT_WR 1 typedef long socklen_t; #else /* !WIN32 */ # include # include # include # include # include typedef int SOCKET; #define closesocket close #endif /* !WIN32 */ #define Nothing ((value) 0) extern void uerror (char * cmdname, value arg) Noreturn; #define uerr(cmd) uerror(cmd, Nothing) void enter_blocking_section(void); void leave_blocking_section(void); /* * Inet addresses are strings. */ static value alloc_inet_addr(uint32 addr) { value a; a = alloc_string(sizeof(uint32)); *(uint32 *)a = addr; return a; } #ifdef SSL_ENABLED /************************************************************************ * SSL routines. */ #include #include #include /* * Struct for the socket. * server: is this a server socket? * fd: file descriptor for the socket * context: the SSL context * ssl: */ typedef enum { SSL_INFO_MASTER, SSL_INFO_SLAVE } SslInfoKind; typedef struct { SslInfoKind kind; SOCKET fd; SSL_CTX *context; SSL *ssl; } SslInfo; /************************************************ * ML interface to addresses. */ /* * Print an error message. */ static void print_errors() { char buffer[1024]; unsigned long err; const char *s; while((err = ERR_get_error())) fprintf(stderr, "lm_ssl: %s\n", ERR_error_string(err, buffer)); } /* * Create a new context. */ static SSL_CTX *lm_ssl_ctx_new(const char *keyfile) { SSL_CTX *context; /* Create a new context and initialize */ context = SSL_CTX_new(SSLv23_method()); if(context == 0) { print_errors(); failwith("lm_ssl_ctx_new: can't allocate context"); } /* Load our certificate */ if(SSL_CTX_use_certificate_chain_file(context, keyfile) == 0) { fprintf(stderr, "keyfile: %s\n", keyfile); print_errors(); failwith("lm_ssl_ctx_new: can't assign certificate"); } /* Password */ if(SSL_CTX_use_PrivateKey_file(context, keyfile, SSL_FILETYPE_PEM) == 0) { fprintf(stderr, "keyfile: %s\n", keyfile); print_errors(); failwith("lm_ssl_ctx_new: can't set private key"); } return context; } /* * Add the DH file to the context. */ static void lm_ssl_ctx_dhfile(SSL_CTX *context, const char *dhfile) { BIO *bio; DH *ret; /* Set the DH parameters */ bio = BIO_new_file(dhfile, "r"); if(bio == 0) { print_errors(); failwith("lm_ssl_ctx_new: can't open DH file"); } /* Read the file */ ret = PEM_read_bio_DHparams(bio, NULL, NULL, NULL); BIO_free(bio); if(SSL_CTX_set_tmp_dh(context, ret) < 0) { print_errors(); failwith("lm_ssl_ctx_new: can't set DH params"); } } /* * Custom blocks. */ #define SslInfo_val(v) ((SslInfo *) Data_custom_val(v)) static int ssl_info_compare(value v1, value v2) { SslInfo *info1 = SslInfo_val(v1); SslInfo *info2 = SslInfo_val(v2); return info1->fd == info2->fd ? 0 : info1->fd < info2->fd ? -1 : 1; } static long ssl_info_hash(value v) { return (long) SslInfo_val(v); } static void ssl_finalize(value v_info) { SslInfo *info; int code; info = SslInfo_val(v_info); if(info->ssl) { SSL_free(info->ssl); info->ssl = 0; } if(info->kind == SSL_INFO_MASTER && info->context) { SSL_CTX_free(info->context); info->context = 0; } if(info->fd >= 0) { closesocket(info->fd); info->fd = -1; } } /* * Pass info in a custom block. */ static struct custom_operations win_handle_ops = { "ssl_socket", ssl_finalize, ssl_info_compare, ssl_info_hash, custom_serialize_default, custom_deserialize_default }; static value ssl_info_new(SslInfoKind kind, SOCKET fd, SSL_CTX *context, SSL *ssl) { value v = alloc_custom(&win_handle_ops, sizeof(SslInfo), 0, 1); SslInfo *info = SslInfo_val(v); info->kind = kind; info->fd = fd; info->context = context; info->ssl = ssl; return v; } /************************************************************************ * Public functions. */ /* * Say whether SSL is enabled. */ value lm_ssl_enabled(value x) { return Val_true; } /* * Start the SSL server. */ value lm_ssl_init(value x) { SSL_load_error_strings(); SSL_library_init(); return Val_unit; } /* * Create a new socket. */ value lm_ssl_socket(value v_keyfile) { SOCKET s; SSL_CTX *context; int one = 1; /* Add context */ context = lm_ssl_ctx_new(String_val(v_keyfile)); /* Open the socket */ s = socket(PF_INET, SOCK_STREAM, 0); if(s < 0) { SSL_CTX_free(context); failwith("lm_ssl_socket: socket call failed"); } /* Allow the address to be reused */ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void *) &one, sizeof(one)); return ssl_info_new(SSL_INFO_MASTER, s, context, 0); } /* * Reuse an existing socket. */ value lm_ssl_serve(value v_fd, value v_keyfile, value v_dhfile) { SOCKET s; SSL_CTX *context; SslInfo *info; value v_info; int one = 1; /* Add context */ context = lm_ssl_ctx_new(String_val(v_keyfile)); /* Open the socket */ s = Int_val(v_fd); /* Allow the address to be reused */ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void *) &one, sizeof(one)); /* Allocate the context */ v_info = ssl_info_new(SSL_INFO_MASTER, s, context, 0); info = SslInfo_val(v_info); /* Set the Diffie-Helman file */ lm_ssl_ctx_dhfile(info->context, String_val(v_dhfile)); return v_info; } /* * Get an integer describing the socket. */ value lm_ssl_fd(value v_info) { SslInfo *info = SslInfo_val(v_info); return Val_int(info->fd); } /* * Bind the socket to an address. */ value lm_ssl_bind(value v_info, value v_addr, value v_port) { SslInfo *info; struct sockaddr_in sin; /* Get the address */ sin.sin_family = AF_INET; sin.sin_addr.s_addr = *(uint32 *)v_addr; sin.sin_port = htons((short) Int_val(v_port)); /* Perform the bind */ info = SslInfo_val(v_info); if(bind(info->fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) { uerr("lm_ssl_bind"); } return Val_unit; } /* * Get the address of the socket. */ value lm_ssl_get_addr(value v_info) { SslInfo *info; struct sockaddr_in sin; socklen_t size; value a, addr; /* Get the address */ info = SslInfo_val(v_info); size = sizeof(sin); if(getsockname(info->fd, (struct sockaddr *) &sin, &size) < 0 || sin.sin_family != AF_INET) { uerr("lm_ssl_get_addr: getsockname"); } /* Allocate the address */ a = alloc_inet_addr(sin.sin_addr.s_addr); Begin_root(a); addr = alloc_small(2, 0); Field(addr, 0) = a; Field(addr, 1) = Val_int(ntohs(sin.sin_port)); End_roots(); return addr; } /* * Listen. */ value lm_ssl_listen(value v_info, value v_dhfile, value v_count) { SslInfo *info; info = SslInfo_val(v_info); lm_ssl_ctx_dhfile(info->context, String_val(v_dhfile)); listen(info->fd, Int_val(v_count)); return Val_unit; } /* * Accept a connection on the socket. */ value lm_ssl_accept(value v_info) { SslInfo *info; int fd, code; SSL *ssl; /* Listen on the server socket */ info = SslInfo_val(v_info); enter_blocking_section(); fd = accept(info->fd, (struct sockaddr *) 0, 0); leave_blocking_section(); if(fd < 0) { uerr("lm_ssl_accept"); } #ifndef WIN32 /* Set the close-on-exec flag */ fcntl(fd, F_SETFD, FD_CLOEXEC); #endif /* Start SSL operations */ ssl = SSL_new(info->context); if(ssl == 0) { closesocket(fd); print_errors(); failwith("lm_ssl_accept"); } /* Set the descriptor */ code = SSL_set_fd(ssl, fd); if(code <= 0) { closesocket(fd); SSL_free(ssl); print_errors(); failwith("lm_ssl_accept: set_fd failed"); } /* Negotiate */ code = SSL_accept(ssl); if(code <= 0) { closesocket(fd); SSL_free(ssl); print_errors(); failwith("lm_ssl_accept: negotiation failed"); } /* Allocate a new struct */ return ssl_info_new(SSL_INFO_SLAVE, fd, info->context, ssl); } /* * Make a connection on the socket. */ value lm_ssl_connect(value v_info, value v_addr, value v_port) { SslInfo *info; struct sockaddr_in sin; int fd, code; SSL *ssl; /* Check to make sure not connected */ info = SslInfo_val(v_info); if(info->ssl) failwith("lm_ssl_connect: already connected"); /* Get the address */ sin.sin_family = AF_INET; sin.sin_addr.s_addr = *(uint32 *)v_addr; sin.sin_port = htons((short) Int_val(v_port)); /* Make the connection */ enter_blocking_section(); code = connect(info->fd, (struct sockaddr *) &sin, sizeof(sin)); leave_blocking_section(); if(code < 0) { uerr("lm_ssl_connect"); } /* Start SSL operations */ ssl = SSL_new(info->context); if(ssl == 0) { print_errors(); failwith("lm_ssl_connect"); } /* Set the descriptor */ code = SSL_set_fd(ssl, info->fd); if(code <= 0) { SSL_free(ssl); print_errors(); failwith("lm_ssl_connect: set_fd failed"); } /* Negotiate */ code = SSL_connect(ssl); if(code <= 0) { SSL_free(ssl); print_errors(); failwith("lm_ssl_connect: negotiation failed"); } info->ssl = ssl; return Val_unit; } /* * Read some data from the connection. */ value lm_ssl_read(value v_info, value v_string, value v_off, value v_len) { int off, len, amount; SslInfo *info; char *buf; info = SslInfo_val(v_info); buf = String_val(v_string); off = Int_val(v_off); len = Int_val(v_len); enter_blocking_section(); amount = SSL_read(info->ssl, buf + off, len); leave_blocking_section(); return Val_int(amount); } /* * Write some data to the connection. */ value lm_ssl_write(value v_info, value v_string, value v_off, value v_len) { int off, len, amount; SslInfo *info; char *buf; info = SslInfo_val(v_info); buf = String_val(v_string); off = Int_val(v_off); len = Int_val(v_len); enter_blocking_section(); amount = SSL_write(info->ssl, buf + off, len); leave_blocking_section(); return Val_int(amount); } /* * Flush the connection. */ value lm_ssl_flush(value v_info) { SslInfo *info; BIO *bio; info = SslInfo_val(v_info); bio = SSL_get_wbio(info->ssl); if(bio) BIO_flush(bio); return Val_unit; } /* * Shutdown the connection. */ value lm_ssl_shutdown(value v_info) { SslInfo *info; int code; /* Shutdown the connection */ info = SslInfo_val(v_info); code = SSL_shutdown(info->ssl); /* * If we called shutdown first, the return code is always 0. * In this case, shutdown the TCP connection * and try again. */ if(code == 0) { shutdown(info->fd, SHUT_WR); code = SSL_shutdown(info->ssl); } /* SSL struct is no longer needed */ SSL_free(info->ssl); info->ssl = 0; return Val_unit; } /* * Close the connection. */ value lm_ssl_close(value v_info) { ssl_finalize(v_info); return Val_unit; } #else /* !SSL_ENABLED */ /* * Unencrypted socket connection. */ typedef struct { SOCKET fd; } SslInfo; /* * Custom blocks. */ #define SslInfo_val(v) ((SslInfo *) Data_custom_val(v)) static int ssl_info_compare(value v1, value v2) { SslInfo *info1 = SslInfo_val(v1); SslInfo *info2 = SslInfo_val(v2); return info1->fd == info2->fd ? 0 : info1->fd < info2->fd ? -1 : 1; } static long ssl_info_hash(value v) { return (long) SslInfo_val(v); } static void ssl_finalize(value v_info) { SslInfo *info; info = SslInfo_val(v_info); if(info->fd >= 0) { closesocket(info->fd); info->fd = -1; } } /* * Pass info in a custom block. */ static struct custom_operations win_handle_ops = { "ssl_socket", ssl_finalize, ssl_info_compare, ssl_info_hash, custom_serialize_default, custom_deserialize_default }; static value ssl_info_new(SOCKET fd) { value v = alloc_custom(&win_handle_ops, sizeof(SslInfo), 0, 1); SslInfo *info = SslInfo_val(v); info->fd = fd; return v; } /* * Say whether SSL is enabled. */ value lm_ssl_enabled(value x) { return Val_false; } /* * Start the SSL server. */ value lm_ssl_init(value x) { return Val_unit; } /* * Create a new socket. */ value lm_ssl_socket(value v_keyfile) { SOCKET s; /* Open the socket */ s = socket(PF_INET, SOCK_STREAM, 0); if(s < 0) failwith("lm_ssl_socket: socket call failed"); return ssl_info_new(s); } /* * Reuse an existing socket. */ value lm_ssl_serve(value v_fd, value v_keyfile, value v_dhfile) { SOCKET s = Int_val(v_fd); return ssl_info_new(s); } /* * Get an integer describing the socket. */ value lm_ssl_fd(value v_info) { SslInfo *info = SslInfo_val(v_info); return Val_int(info->fd); } /* * Bind the socket to an address. */ value lm_ssl_bind(value v_info, value v_addr, value v_port) { SslInfo *info; struct sockaddr_in sin; /* Get the address */ sin.sin_family = AF_INET; sin.sin_addr.s_addr = *(uint32 *)v_addr; sin.sin_port = htons((short) Int_val(v_port)); /* Perform the bind */ info = SslInfo_val(v_info); if(bind(info->fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) { uerr("lm_ssl_bind"); } return Val_unit; } /* * Get the address of the socket. */ value lm_ssl_get_addr(value v_info) { SslInfo *info; struct sockaddr_in sin; socklen_t size; value a, addr; /* Get the address */ info = SslInfo_val(v_info); size = sizeof(sin); if(getsockname(info->fd, (struct sockaddr *) &sin, &size) < 0) { uerr("lm_ssl_get_addr: getsockname"); } /* Allocate the address */ a = alloc_inet_addr(sin.sin_addr.s_addr); Begin_root(a); addr = alloc_small(2, 0); Field(addr, 0) = a; Field(addr, 1) = Val_int(ntohs(sin.sin_port)); End_roots(); return addr; } /* * Listen. */ value lm_ssl_listen(value v_info, value v_dhfile, value v_count) { SslInfo *info; info = SslInfo_val(v_info); listen(info->fd, Int_val(v_count)); return Val_unit; } /* * Accept a connection on the socket. */ value lm_ssl_accept(value v_info) { SslInfo *info; SOCKET fd; int code; /* Listen on the server socket */ info = SslInfo_val(v_info); enter_blocking_section(); fd = accept(info->fd, (struct sockaddr *) 0, 0); fflush(stderr); leave_blocking_section(); if(fd < 0) { uerr("lm_ssl_accept"); } /* Allocate a new struct */ return ssl_info_new(fd); } /* * Make a connection on the socket. */ value lm_ssl_connect(value v_info, value v_addr, value v_port) { SslInfo *info; struct sockaddr_in sin; SOCKET fd; int code; /* Get the address */ sin.sin_family = AF_INET; sin.sin_addr.s_addr = *(uint32 *)v_addr; sin.sin_port = htons((short) Int_val(v_port)); /* Make the connection */ info = SslInfo_val(v_info); enter_blocking_section(); code = connect(info->fd, (struct sockaddr *) &sin, sizeof(sin)); leave_blocking_section(); if(code < 0) { uerr("lm_ssl_connect"); } return Val_unit; } /* * Read some data from the connection. */ value lm_ssl_read(value v_info, value v_string, value v_off, value v_len) { int off, len, amount; SslInfo *info; char *buf; info = SslInfo_val(v_info); buf = String_val(v_string); off = Int_val(v_off); len = Int_val(v_len); enter_blocking_section(); amount = recv(info->fd, buf + off, len, 0); leave_blocking_section(); return Val_int(amount); } /* * Write some data to the connection. */ value lm_ssl_write(value v_info, value v_string, value v_off, value v_len) { int off, len, amount; SslInfo *info; char *buf; info = SslInfo_val(v_info); buf = String_val(v_string); off = Int_val(v_off); len = Int_val(v_len); enter_blocking_section(); amount = send(info->fd, buf + off, len, 0); leave_blocking_section(); return Val_int(amount); } value lm_ssl_flush(value v_info) { return Val_unit; } /* * Shutdown the connection. */ value lm_ssl_shutdown(value v_info) { return Val_unit; } /* * Close the connection. */ value lm_ssl_close(value v_info) { ssl_finalize(v_info); return Val_unit; } #endif /* !SSL_ENABLED */ omake-0.9.8.5/src/libmojave-external/cutil/lm_mmap.h0000664000152300015230000000537710456222231020436 0ustar jyhjyh/* * Provide an mmap implementation of a file. * * ------------------------------------------------------------ * * This is part of the Ensemble Juke Box, a program for * distributed digital audio. * * Copyright (C) 1997 Cornell University * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Authors: Jason Hickey, Mark Hayden * jyh,hayden@cs.cornell.edu * http://www.cs.cornell.edu/home/jyh/ejb/index.html */ #ifdef __GNUC__ #pragma interface #endif __GNUC__ #ifndef __MMAP_H #define __MMAP_H value ml_mmap_open(value name, value perms, value mode); value ml_mmap_close(value mmap); value ml_string_of_mmap(value mmap); #endif __MMAP_H /* * $Log$ * Revision 1.2 2003/07/09 07:19:44 nogin * Merging in the abstract_vars branch: * - variables are now an abstract type, not strings * - MVar parameters are gone * * See the branch log messages for more information. * * P.S. This is a pretty big change, so I bumped the version number * in mk/preface. * * Revision 1.1.2.1 2003/07/09 01:10:34 jyh * This migrates much of the mllib code to libmojave. * Still to go, use Lm_set instead of Red_black_set, * but we'll probably do that after we merge onto the trunk. * * Revision 1.1 1999/01/08 21:50:36 jyh * This is the version of the distributed prover used in the * CADE-16 original paper. I'm still adjusting it though, so * that we can use term_ds and native-code. * * If any of you have problems compiling clib/mmap.c, let me know. It * should compile on Linux and Win32, but we should put in stubs * if there are problems on other systems. * * Revision 1.3 1997/05/13 13:42:05 jyh * Fixed nested playing. * * Revision 1.2 1997/05/12 14:32:33 jyh * Fixed sequential playing from different sources. * Updated CVS and copyright info. * Lots of small changes getting ready for initial release. * * Revision 1.1 1997/01/20 19:02:48 jyh * Memory mapped file. */ omake-0.9.8.5/src/libmojave-external/cutil/inotify.h0000664000152300015230000000647210437375455020512 0ustar jyhjyh/* * Inode based directory notification for Linux * * Copyright (C) 2005 John McCutchan */ #ifndef _LINUX_INOTIFY_H #define _LINUX_INOTIFY_H #include /* * struct inotify_event - structure read from the inotify device for each event * * When you are watching a directory, you will receive the filename for events * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd. */ struct inotify_event { __s32 wd; /* watch descriptor */ __u32 mask; /* watch mask */ __u32 cookie; /* cookie to synchronize two events */ __u32 len; /* length (including nulls) of name */ char name[0]; /* stub for possible name */ }; /* the following are legal, implemented events that user-space can watch for */ #define IN_ACCESS 0x00000001 /* File was accessed */ #define IN_MODIFY 0x00000002 /* File was modified */ #define IN_ATTRIB 0x00000004 /* Metadata changed */ #define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */ #define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */ #define IN_OPEN 0x00000020 /* File was opened */ #define IN_MOVED_FROM 0x00000040 /* File was moved from X */ #define IN_MOVED_TO 0x00000080 /* File was moved to Y */ #define IN_CREATE 0x00000100 /* Subfile was created */ #define IN_DELETE 0x00000200 /* Subfile was deleted */ #define IN_DELETE_SELF 0x00000400 /* Self was deleted */ /* the following are legal events. they are sent as needed to any watch */ #define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */ #define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */ #define IN_IGNORED 0x00008000 /* File was ignored */ /* helper events */ #define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */ #define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */ /* special flags */ #define IN_ISDIR 0x40000000 /* event occurred against dir */ #define IN_ONESHOT 0x80000000 /* only send event once */ /* * All of the events - we build the list by hand so that we can add flags in * the future and not break backward compatibility. Apps will get only the * events that they originally wanted. Be sure to add new events here! */ #define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \ IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \ IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF) #ifdef __KERNEL__ #include #include #include #ifdef CONFIG_INOTIFY extern void inotify_inode_queue_event(struct inode *, __u32, __u32, const char *); extern void inotify_dentry_parent_queue_event(struct dentry *, __u32, __u32, const char *); extern void inotify_unmount_inodes(struct list_head *); extern void inotify_inode_is_dead(struct inode *); extern u32 inotify_get_cookie(void); #else static inline void inotify_inode_queue_event(struct inode *inode, __u32 mask, __u32 cookie, const char *filename) { } static inline void inotify_dentry_parent_queue_event(struct dentry *dentry, __u32 mask, __u32 cookie, const char *filename) { } static inline void inotify_unmount_inodes(struct list_head *list) { } static inline void inotify_inode_is_dead(struct inode *inode) { } static inline u32 inotify_get_cookie(void) { return 0; } #endif /* CONFIG_INOTIFY */ #endif /* __KERNEL __ */ #endif /* _LINUX_INOTIFY_H */ omake-0.9.8.5/src/libmojave-external/cutil/unixsupport.h0000664000152300015230000000355310654713446021443 0ustar jyhjyh/* * Hacking into OCaml. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifndef _UNIXSUPPORT_H #define _UNIXSUPPORT_H #ifdef WIN32 /* * HACK: this gets the handle from a file_descr. * This depends on the OCaml implementation, but * it is unlikely to change. */ struct filedescr { union { HANDLE handle; SOCKET socket; } fd; enum { KIND_HANDLE, KIND_SOCKET } kind; int crt_fd; }; #define Handle_val(v) (((struct filedescr *) Data_custom_val(v))->fd.handle) #define Socket_val(v) (((struct filedescr *) Data_custom_val(v))->fd.socket) #define Descr_kind_val(v) (((struct filedescr *) Data_custom_val(v))->kind) #else /* !WIN32 */ #define Socket_val(v) (Int_val(v)) #endif /* !WIN32 */ #endif /* _UNIX_SUPPORT_H */ omake-0.9.8.5/src/libmojave-external/cutil/fam_win32.c0000664000152300015230000003722010536335504020573 0ustar jyhjyh/* * Implement a FAM-like service for Win32. * This uses the ReadDirectoryChangesW function, which is * available only on NT+. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] */ #ifdef WIN32 #ifdef FAM_ENABLED /* Disable some of the warnings */ #pragma warning( disable : 4127 4996 ) #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0400 #endif #include #include #include #include #include "lm_compat_win32.h" #include "fam_pseudo.h" /* * The events we want to watch for. */ #define FILE_CHANGES (FILE_NOTIFY_CHANGE_FILE_NAME\ | FILE_NOTIFY_CHANGE_SIZE\ | FILE_NOTIFY_CHANGE_LAST_WRITE\ | FILE_NOTIFY_CHANGE_CREATION) /* * Size of the event buffer. This is the maximum size we can * use without getting errors on SMB volumes. */ #define NOTIFY_BUFFER_SIZE (1 << 16) /* * Max utility. */ #define MAX(i, j) ((i) < (j) ? (j) : (i)) static char *code_names[] = { "No Code", "Changed", "Deleted", "StartExecuting", "StopExecuting", "Created", "Moved", "Acknowledge", "Exists", "EndExist" }; /* * Unique identifiers. */ static int id_counter; /* * Info for each directory. * We keep a request number, for compatibility * with Unix FAM. */ typedef struct dir_info { unsigned request; // Request number unsigned recursive; // Is the request recursive unsigned running; // Is this entry running or suspended? HANDLE handle; // Directory handle char buffer[NOTIFY_BUFFER_SIZE]; // Event buffer OVERLAPPED overlapped; // For asynchronous IO void *userdata; // User data for this directory char name[1]; // Name of the directory } DirInfo; /* * Error codes. */ int FAMErrno = 0; char *FamErrlist[] = { "FAM: No Error", "FAM: Too many directories", "FAM: Directory does not exist", "FAM: Windows error", "FAM: Out of memory", "FAM: Bad request number", "FAM: Request already exists", "FAM: Not implemented" }; /************************************************************************ * LOCAL FUNCTIONS */ /* * Close a directory entry. */ static void free_dir(DirInfo *dir) { CloseHandle(dir->overlapped.hEvent); CloseHandle(dir->handle); free(dir); } /* * Free an event. */ static void free_event(FAMEvent *event) { free(event); } /* * Print an error message. */ static void print_error_code(const char *name, DWORD code) { LPTSTR buffer; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, // Format flags NULL, // Location of the message code, // Error code MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Language (LPTSTR) &buffer, // Message buffer 0, // Buffer size NULL); // Arguments /* Print the message */ fprintf(stderr, "%s: failed with code %d: %s\n", name, errno, buffer); fflush(stderr); LocalFree(buffer); } static void print_error(const char *name) { print_error_code(name, GetLastError()); } /* * Start monitoring a directory. */ static void monitor_start(DirInfo *dir) { BOOL code; #ifdef FAM_DEBUG fprintf(stderr, "Monitoring directory %s\n", dir->name); fflush(stderr); #endif code = ReadDirectoryChangesW(dir->handle, // Directory dir->buffer, // Result buffer sizeof(dir->buffer), dir->recursive, // Monitor subdirectories? FILE_CHANGES, // Monitor the standard changes NULL, // Return length is ignored for async IO &dir->overlapped, // Use asynchronous IO NULL); // Completion routine, we'll poll for results if(code == 0) print_error("ReadDirectoryChangesW"); } /* * Wait for an event to happen. */ static int monitor_wait(FAMConnection *fc, DWORD interval) { HANDLE handles[MAX_DIR_COUNT]; unsigned map[MAX_DIR_COUNT]; unsigned i, ncount; DirInfo *dir; DWORD status; DWORD code; /* Make an array of the events to wait on */ ncount = 0; for(i = 0; i != fc->dir_count; i++) { dir = fc->dirs[i]; if(dir && dir->running) { handles[ncount] = dir->overlapped.hEvent; map[ncount] = i; ncount++; } } /* * Now wait for an event * * The enter/leave_blocking_section is performed in * omake_cnotify.c now. */ // enter_blocking_section(); status = WaitForMultipleObjects(ncount, handles, FALSE, interval); if(status == WAIT_FAILED) code = GetLastError(); // leave_blocking_section(); /* Return the index of the event */ if(status >= WAIT_OBJECT_0 && status < WAIT_OBJECT_0 + ncount) status = map[status - WAIT_OBJECT_0]; else if(status >= WAIT_ABANDONED_0 && status < WAIT_ABANDONED_0 + ncount) status = map[status - WAIT_ABANDONED_0]; else { #ifdef FAM_DEBUG fprintf(stderr, "WaitForMultipleObjects: status=%d ncount=%d\n", status, ncount); print_error_code("WaitForMultipleObjects", code); #endif status = WAIT_FAILED; } #ifdef FAM_DEBUG fprintf(stderr, "Woke up on request %d\n", status); fflush(stderr); #endif return (status == WAIT_FAILED ? -1 : 0); } /* * Create events from the completed monitor. */ static void monitor_read(FAMConnection *fc, unsigned request) { const FILE_NOTIFY_INFORMATION *info; unsigned dir_length, name_length, i; char name[NAME_MAX]; char *buffer; FAMEvent *event; FAMCodes fam_code; DirInfo *dir; DWORD length; BOOL code; /* Get the result */ length = 0; dir = fc->dirs[request]; code = GetOverlappedResult(dir->handle, // Directory &dir->overlapped, // Overlapped result &length, // Number of bytes transfered FALSE); // Do not wait /* Add the events */ if(code && length) { buffer = dir->buffer; while(1) { info = (const FILE_NOTIFY_INFORMATION *) buffer; /* Get the action */ switch(info->Action) { case FILE_ACTION_ADDED: fam_code = FAMCreated; break; case FILE_ACTION_REMOVED: fam_code = FAMDeleted; break; case FILE_ACTION_MODIFIED: fam_code = FAMChanged; break; case FILE_ACTION_RENAMED_OLD_NAME: fam_code = FAMDeleted; break; case FILE_ACTION_RENAMED_NEW_NAME: fam_code = FAMCreated; break; default: fam_code = FAMCreated; break; } /* Get the long name */ dir_length = strlen(dir->name); name_length = info->FileNameLength / 2; length = dir_length + name_length + 2; if(length < NAME_MAX) { strcpy(name, dir->name); name[dir_length] = '\\'; for(i = 0; i != name_length; i++) name[dir_length + i + 1] = (char) info->FileName[i]; name[length - 1] = 0; /* Create the event struct */ event = (FAMEvent *) malloc(sizeof(*event)); if(event) { event->fc = fc; event->fr.reqnum = dir->request; event->userdata = dir->userdata; event->code = fam_code; event->next = 0; if(CompatGetLongPathName(name, event->filename, NAME_MAX) == 0) strcpy(event->filename, name); if(fc->last) fc->last = fc->last->next = event; else fc->event = fc->last = event; } } /* Go to the next record */ if(info->NextEntryOffset) buffer += info->NextEntryOffset; else break; } } /* Restart the monitor */ if(dir->running) monitor_start(dir); } /* * Monitor a directory. * The request may be recursive. */ static int monitor_directory(FAMConnection *fc, const char *name, FAMRequest *requestp, void *userdata, int recursive) { HANDLE dir_handle, change_handle; unsigned request, length; DirInfo *dir; #ifdef FAM_DEBUG fprintf(stderr, "Asking to monitor directory: %s\n", name); fflush(stderr); #endif /* Search for a slot */ for(request = 0; request != fc->dir_count; request++) { if(fc->dirs[request] == 0) break; } /* Watch for overflows */ if(request == MAX_DIR_COUNT) { FAMErrno = FAM_TOO_MANY_DIRECTORIES; return -1; } requestp->reqnum = request; /* Get a handle to the directory for synchronous operation */ dir_handle = CreateFile(name, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL); if(dir_handle == INVALID_HANDLE_VALUE) { FAMErrno = FAM_DIRECTORY_DOES_NOT_EXIST; return -1; } /* We will be using asynchronous operations */ change_handle = CreateEvent(NULL, // Default security FALSE, // Auto-reset FALSE, // Initially non-signaled NULL); // No name if(change_handle == INVALID_HANDLE_VALUE) { CloseHandle(dir_handle); FAMErrno = FAM_WINDOWS_ERROR; return -1; } /* Allocate a directory struct */ length = sizeof(DirInfo) + strlen(name); dir = (DirInfo *) malloc(length); if(dir == 0) { CloseHandle(dir_handle); CloseHandle(change_handle); FAMErrno = FAM_OUT_OF_MEMORY; return -1; } memset(dir, 0, length); /* Initialize */ dir->request = request; dir->recursive = recursive; dir->running = 1; dir->handle = dir_handle; dir->overlapped.hEvent = change_handle; dir->userdata = userdata; strcpy(dir->name, name); /* Save it in the fc */ fc->dirs[request] = dir; fc->dir_count = MAX(request + 1, fc->dir_count); /* Start polling */ monitor_start(dir); return 0; } /************************************************************************ * Public functions. */ /* * Open the server. */ int FAMOpen(FAMConnection *fc) { memset(fc, 0, sizeof(*fc)); fc->id = ++id_counter; return 0; } /* * Close the fc. */ int FAMClose(FAMConnection *fc) { FAMEvent *event, *next; unsigned i; /* Free all the directories */ for(i = 0; i != fc->dir_count; i++) free_dir(fc->dirs[i]); /* Free all the events */ event = fc->event; while(event) { next = event->next; free_event(event); event = next; } /* Reset the fc */ memset(fc, 0, sizeof(*fc)); return 0; } /* * Monitor a directory. */ int FAMMonitorDirectory(FAMConnection *fc, const char *name, FAMRequest *requestp, void *userdata) { return monitor_directory(fc, name, requestp, userdata, 0); } int FAMMonitorDirectoryTree(FAMConnection *fc, const char *name, FAMRequest *requestp, void *userdata) { return monitor_directory(fc, name, requestp, userdata, 1); } /* * Suspend monitoring. */ int FAMSuspendMonitor(FAMConnection *fc, FAMRequest *requestp) { DirInfo *dir; unsigned request; request = requestp->reqnum; if(request >= fc->dir_count || fc->dirs[request] == 0) { FAMErrno = FAM_BAD_REQUEST_NUMBER; return -1; } dir = fc->dirs[request]; if(dir->running) { CancelIo(dir->handle); dir->running = 0; } return 0; } /* * Resume monitoring. */ int FAMResumeMonitor(FAMConnection *fc, FAMRequest *requestp) { DirInfo *dir; unsigned request; request = requestp->reqnum; if(request >= fc->dir_count || fc->dirs[request] == 0) { FAMErrno = FAM_BAD_REQUEST_NUMBER; return -1; } dir = fc->dirs[request]; if(dir->running == 0) { dir->running = 1; monitor_start(dir); } return 0; } /* * Cancel monitoring. */ int FAMCancelMonitor(FAMConnection *fc, FAMRequest *requestp) { DirInfo *dir; unsigned request; request = requestp->reqnum; if(request >= fc->dir_count || fc->dirs[request] == 0) { FAMErrno = FAM_BAD_REQUEST_NUMBER; return -1; } dir = fc->dirs[request]; free_dir(dir); fc->dirs[request] = 0; return 0; } /* * Get the next event. */ int FAMNextEvent(FAMConnection *fc, FAMEvent *event) { FAMEvent *current; int request; while(1) { /* See if there is already an event */ current = fc->event; if(current) { #if FAM_DEBUG fprintf(stderr, "Request: %d, Name: %s, Event: %s\n", current->fr.reqnum, current->filename, code_names[current->code]); fflush(stderr); #endif *event = *current; fc->event = current->next; if(fc->event == 0) fc->last = 0; free_event(current); return 0; } /* If not, wait for an event */ request = monitor_wait(fc, INFINITE); if(request < 0) return -1; monitor_read(fc, request); } } /* * See if there is a pending event. */ int FAMPending(FAMConnection *fc) { int request; while(1) { /* See if there is already an event */ if(fc->event) return 1; /* If not, poll for input */ request = monitor_wait(fc, 0); if(request < 0) return 0; monitor_read(fc, request); } } #endif /* FAM_ENABLED */ #endif /* WIN32 */ omake-0.9.8.5/src/libmojave-external/cutil/lm_mmap.c0000664000152300015230000001702110456222231020416 0ustar jyhjyh/* * Provide an mmap implementation of a file. This * returns a large string to ML. * * ------------------------------------------------------------ * * This is part of the Ensemble Juke Box, a program for * distributed digital audio. * * Copyright (C) 1997 Cornell University * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Authors: Jason Hickey, Mark Hayden * jyh,hayden@cs.cornell.edu * http://www.cs.cornell.edu/home/jyh/ejb/index.html */ /* Standard includes */ #include #include #include #ifdef _WIN32 /* Windows include files */ # include #else /* _WIN32 */ /* Unix include files */ # include # include # include # include # include # include #endif /* _WIN32 */ #include #include #include #include /************************************************************************ * TYPES * ************************************************************************/ /* * Maps are all this size. */ #define MAX_SIZE (1 << 23) /* * Info we keep per file. */ typedef struct mmap { #ifdef _WIN32 HANDLE fd, map; #else /* _WIN32 */ int fd; #endif /* _WIN32 */ int size; char *data; } Mmap; /************************************************************************ * FILE OPERATIONS * ************************************************************************/ /* * All these functions have the same usage as in the Unix library, * except open also specifies a write-ahead parameter. */ static Mmap *mmap_open(const char *name, int perm, int mode, int append, int sequential, int flags) { Mmap *infop; int prot; #ifdef _WIN32 HANDLE fd, map; int mapped, size; char *data; /* * Open the file. * Options to consider: * SEQUENTIAL_SCAN */ fd = CreateFile(name, perm, 0, 0, flags, FILE_ATTRIBUTE_NORMAL, 0); if(fd == INVALID_HANDLE_VALUE) failwith("mmap_open"); /* * Create a map, but do not allocate storage. */ if(perm & GENERIC_WRITE) { prot = PAGE_READWRITE | SEC_RESERVE; size = MAX_SIZE; mapped = 0; } else { prot = PAGE_READONLY; size = GetFileSize(fd, 0); mapped = size; } map = CreateFileMapping(fd, 0, prot, 0, size, 0); if(map == 0) { CloseHandle(fd); failwith("mmap_open"); } /* * Map the region of memory. */ if(perm & GENERIC_WRITE) prot = FILE_MAP_WRITE; else prot = FILE_MAP_READ; data = MapViewOfFile(map, prot, 0, 0, size); if(data == 0) { CloseHandle(map); CloseHandle(fd); failwith("mmap_open"); } /* * Return the struct. */ infop = (Mmap *) malloc(sizeof(Mmap)); if(infop == 0) { UnmapViewOfFile(data); CloseHandle(map); CloseHandle(fd); failwith("mmap_open"); } memset(infop, 0, sizeof(infop)); infop->fd = fd; infop->map = map; infop->size = mapped; infop->data = data; #else /* _WIN32 */ struct stat buf; /* Open the file and get the existing size */ int fd = open(name, perm, mode); if(fd < 0) failwith("mmap_open"); if(fstat(fd, &buf) < 0) { close(fd); failwith("mmap_open"); } /* Figure out read/write */ if(perm & O_RDWR) prot = PROT_READ | PROT_WRITE; else prot = PROT_READ; /* Extend the file if necessary */ if(buf.st_size < MAX_SIZE && prot & PROT_WRITE) { char c = 0; lseek(fd, MAX_SIZE - 1, SEEK_SET); write(fd, &c, 1); } /* Allocate the map */ infop = (Mmap *) malloc(sizeof(Mmap)); if(infop == 0) { close(fd); failwith("mmap_open"); } infop->fd = fd; infop->size = MAX_SIZE; infop->data = mmap((char *) 0, MAX_SIZE, prot, MAP_SHARED, fd, 0); if(infop->data == (char *) -1) { close(fd); free(infop); failwith("mmap"); } #endif /* _WIN32 */ return infop; } /* * Close the file. * Release all resources. */ static void mmap_close(Mmap *mmap) { #ifdef _WIN32 if(mmap->size) VirtualFree(mmap->data, mmap->size, 0); UnmapViewOfFile(mmap->data); CloseHandle(mmap->map); CloseHandle(mmap->fd); #else /* _WIN32 */ munmap(mmap->data, MAX_SIZE); ftruncate(mmap->fd, mmap->size); fprintf(stderr, "mmap_close: %d\n", mmap->fd); close(mmap->fd); #endif /* _WIN32 */ free(mmap); } /************************************************************************ * ML INTERFACE * ************************************************************************/ value ml_mmap_open(value name, value perms, value mode) { int perm, append, flags; /* Collect permission */ perm = 0; append = 0; #ifdef _WIN32 flags = OPEN_EXISTING; #else /* _WIN32 */ flags = 0; #endif /* _WIN32 */ while(perms != Val_int(0)) { switch(Int_val(Field(perms, 0))) { case 0: #ifdef _WIN32 perm |= GENERIC_READ; #else perm |= O_RDONLY; #endif break; case 1: #ifdef _WIN32 perm |= GENERIC_WRITE; #else perm |= O_WRONLY; #endif break; case 2: #ifdef _WIN32 perm |= GENERIC_READ | GENERIC_WRITE; #else perm |= O_RDWR; #endif break; case 3: #ifndef _WIN32 perm |= O_NONBLOCK; #endif break; case 4: #ifndef _WIN32 perm |= O_APPEND; #endif append = 1; break; case 5: #ifdef _WIN32 flags = OPEN_ALWAYS; #else perm |= O_CREAT; #endif break; case 6: #ifdef _WIN32 flags = CREATE_ALWAYS; #else perm |= O_TRUNC; #endif break; case 7: #ifndef _WIN32 perm |= O_EXCL; #endif break; } perms = Field(perms, 1); } /* Return the C struct */ return (value) mmap_open(String_val(name), perm, Int_val(mode), append, 0, flags); } value ml_mmap_close(value mmap) { mmap_close((Mmap *) mmap); return Val_int(0); } value ml_string_of_mmap(value mmap_val) { Mmap *mmap; value data; int words; mmap = (Mmap *) mmap_val; data = (value) ((header_t *) mmap->data + 1); words = (mmap->size >> 2) - 1; Hd_val(data) = (words << 10) | String_tag; return data; } /* * */ omake-0.9.8.5/src/libmojave-external/cutil/inotify-syscalls.h0000664000152300015230000000325210437375455022336 0ustar jyhjyh#ifndef _LINUX_INOTIFY_SYSCALLS_H #define _LINUX_INOTIFY_SYSCALLS_H #include #if defined(__i386__) # define __NR_inotify_init 291 # define __NR_inotify_add_watch 292 # define __NR_inotify_rm_watch 293 #elif defined(__x86_64__) # define __NR_inotify_init 253 # define __NR_inotify_add_watch 254 # define __NR_inotify_rm_watch 255 #elif defined(__powerpc__) || defined(__powerpc64__) # define __NR_inotify_init 275 # define __NR_inotify_add_watch 276 # define __NR_inotify_rm_watch 277 #elif defined (__ia64__) # define __NR_inotify_init 1277 # define __NR_inotify_add_watch 1278 # define __NR_inotify_rm_watch 1279 #elif defined (__s390__) # define __NR_inotify_init 284 # define __NR_inotify_add_watch 285 # define __NR_inotify_rm_watch 286 #elif defined (__alpha__) # define __NR_inotify_init 444 # define __NR_inotify_add_watch 445 # define __NR_inotify_rm_watch 446 #elif defined (__sparc__) || defined (__sparc64__) # define __NR_inotify_init 151 # define __NR_inotify_add_watch 152 # define __NR_inotify_rm_watch 156 #elif defined (__arm__) # define __NR_inotify_init 316 # define __NR_inotify_add_watch 317 # define __NR_inotify_rm_watch 318 #elif defined (__sh__) # define __NR_inotify_init 290 # define __NR_inotify_add_watch 291 # define __NR_inotify_rm_watch 292 #else # error "Unsupported architecture!" #endif static inline int inotify_init (void) { return syscall (__NR_inotify_init); } static inline int inotify_add_watch (int fd, const char *name, __u32 mask) { return syscall (__NR_inotify_add_watch, fd, name, mask); } static inline int inotify_rm_watch (int fd, __u32 wd) { return syscall (__NR_inotify_rm_watch, fd, wd); } #endif /* _LINUX_INOTIFY_SYSCALLS_H */ omake-0.9.8.5/src/libmojave-external/cutil/lm_raw.c0000664000152300015230000001404510456222231020260 0ustar jyhjyh/* * Raw data operations on strings. * * ------------------------------------------------ * * @begin[license] * Copyright (C) 2001 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ /* Standard includes */ #include #include #include #include /* Caml includes */ #include #include #include #include #ifdef WIN32 typedef short int16_t; #endif /* * Load numbers from a string. */ value load_int8(value v_string, value v_off) { CAMLparam2(v_string, v_off); int off, len; char *str; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); /* Check bounds */ if(off < 0 || off > len - 1) failwith("load_int8"); /* Get the number */ CAMLreturn(Val_int(str[off])); } value load_int16(value v_string, value v_off) { CAMLparam2(v_string, v_off); int off, len; char *str; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); /* Check bounds */ if(off < 0 || off > len - 2 || off & 1) failwith("load_int16"); /* Get the number */ CAMLreturn(Val_int(*(int16_t *)(str + off))); } value load_int32(value v_string, value v_off) { CAMLparam2(v_string, v_off); CAMLlocal1(result); int off, len; char *str; int32 i; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); /* Check bounds */ if(off < 0 || off > len - 4 || off & 3) failwith("load_int32"); /* Get the number */ i = *(int32 *)(str + off); result = copy_int32(i); CAMLreturn(result); } value load_int64(value v_string, value v_off) { CAMLparam2(v_string, v_off); CAMLlocal1(result); int off, len; char *str; int64 i; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); /* Check bounds */ if(off < 0 || off > len - 8 || off & 3) failwith("load_int64"); /* Get the number */ i = *(int64 *)(str + off); result = copy_int64(i); CAMLreturn(result); } value load_float(value v_string, value v_off) { CAMLparam2(v_string, v_off); CAMLlocal1(result); int off, len; char *str; double x; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); /* Check bounds */ if(off < 0 || off > len - 8 || off & 7) failwith("load_float"); /* Get the number */ x = *(double *)(str + off); result = copy_double(x); CAMLreturn(result); } /* * Store numbers to a string. */ value store_int8(value v_string, value v_off, value v_val) { CAMLparam3(v_string, v_off, v_val); int off, len, i; char *str; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); i = Int_val(v_val); /* Check bounds */ if(off < 0 || off > len - 1) failwith("store_int8"); /* Get the number */ str[off] = i; CAMLreturn(Val_unit); } value store_int16(value v_string, value v_off, value v_val) { CAMLparam3(v_string, v_off, v_val); int off, len, i; char *str; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); i = Int_val(v_val); /* Check bounds */ if(off < 0 || off > len - 2 || off & 1) failwith("store_int16"); /* Get the number */ *(int16_t *)(str + off) = i; CAMLreturn(Val_unit); } value store_int32(value v_string, value v_off, value v_val) { CAMLparam3(v_string, v_off, v_val); CAMLlocal1(result); int off, len; char *str; int32 i; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); i = Int32_val(v_val); /* Check bounds */ if(off < 0 || off > len - 4 || off & 3) failwith("store_int32"); /* Get the number */ *(int32 *)(str + off) = i; CAMLreturn(Val_unit); } value store_int64(value v_string, value v_off, value v_val) { CAMLparam3(v_string, v_off, v_val); CAMLlocal1(result); int off, len; char *str; int64 i; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); i = Int64_val(v_val); /* Check bounds */ if(off < 0 || off > len - 8 || off & 3) failwith("store_int64"); /* Get the number */ *(int64 *)(str + off) = i; CAMLreturn(Val_unit); } value store_float(value v_string, value v_off, value v_val) { CAMLparam2(v_string, v_off); CAMLlocal1(result); int off, len; char *str; double x; /* Get arguments */ str = String_val(v_string); len = string_length(v_string); off = Int_val(v_off); x = Double_val(v_val); /* Check bounds */ if(off < 0 || off > len - 8 || off & 7) failwith("store_float"); /* Get the number */ *(double *)(str + off) = x; CAMLreturn(Val_unit); } omake-0.9.8.5/src/libmojave-external/cutil/lm_ctype.c0000664000152300015230000000444110534115352020614 0ustar jyhjyh/* * Get characters from the current locale. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2006 Mojave group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #include #ifdef WIN32 #include /* Disable some of the warnings */ #pragma warning( disable : 4100 ) #endif /* WIN32 */ /* * Character classes. */ static value get_chars(int (*f)(int)) { char buf[256]; value s; char *p; int i; p = buf; for(i = 0; i != 256; i++) { if(f(i)) *p++ = (char) i; } s = alloc_string(p - buf); memcpy(String_val(s), buf, p - buf); return s; } value omake_alnum(value v_unit) { return get_chars(isalnum); } value omake_alpha(value v_unit) { return get_chars(isalpha); } value omake_graph(value v_unit) { return get_chars(isgraph); } value omake_lower(value v_unit) { return get_chars(islower); } value omake_upper(value v_unit) { return get_chars(isupper); } value omake_punct(value v_unit) { return get_chars(ispunct); } value omake_space(value v_unit) { return get_chars(isspace); } omake-0.9.8.5/src/libmojave-external/cutil/lm_unix_cutil.c0000664000152300015230000002710010647450410021652 0ustar jyhjyh/* * System info. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #include #if defined(WIN32) || defined(_WIN32) /* Disable some of the warnings */ #pragma warning( disable : 4100 4201 4127 4189 4702 4716 4996 ) #endif /* * Lock codes. */ #define LM_LOCK_UN 0 #define LM_LOCK_SH 1 #define LM_LOCK_EX 2 #define LM_LOCK_TSH 3 #define LM_LOCK_TEX 5 #define FLOCK_LEN ((unsigned int) ~0 >> 2) /* * Print the stack pointer for debugging. */ value lm_print_stack_pointer(value v_arg) { int sp; fprintf(stderr, "Stack pointer: 0x%08lx\n", (unsigned long) &sp); return Val_unit; } #ifdef WIN32 #include #include #include #include "lm_compat_win32.h" /* * File descriptor. */ value int_of_fd(value fd) { return Val_long((long) *(HANDLE *)Data_custom_val(fd)); } /* * Home directory on Win32. */ value home_win32(value v_unit) { CAMLparam1(v_unit); TCHAR path[MAX_PATH]; if(SUCCEEDED(CompatSHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA | CSIDL_FLAG_CREATE, NULL, 0, path))) CAMLreturn(copy_string(path)); failwith("home_win32"); return Val_unit; } /* * File locking. */ #define F_ULOCK 0 #define F_LOCK 1 #define F_TLOCK 2 #define F_TEST 3 #define F_RLOCK 4 #define F_TRLOCK 5 value lockf_win32(value v_fd, value v_kind, value v_len) { HANDLE fd = *(HANDLE *)Data_custom_val(v_fd); int kind = Int_val(v_kind); int len = Int_val(v_len); OVERLAPPED overlapped; int code, flags = 0; DWORD pos, error = 0; /* Get the current position in the file */ pos = SetFilePointer(fd, 0, 0, FILE_CURRENT); /* XXX: HACK: we should probably compute this correctly */ if(len == 0) len = 1; /* Unlock case */ if(kind == F_ULOCK) UnlockFile(fd, pos, 0, len, 0); else { /* Some kind of locking operation */ switch(kind) { case F_LOCK: flags = LOCKFILE_EXCLUSIVE_LOCK; break; case F_TLOCK: flags = LOCKFILE_EXCLUSIVE_LOCK | LOCKFILE_FAIL_IMMEDIATELY; break; case F_RLOCK: flags = 0; break; case F_TRLOCK: flags = LOCKFILE_FAIL_IMMEDIATELY; break; default: invalid_argument("lockf_win32"); break; } /* Set the offset */ memset(&overlapped, 0, sizeof(overlapped)); overlapped.Offset = pos; /* Perform the lock */ enter_blocking_section(); code = LockFileEx(fd, flags, 0, len, 0, &overlapped); if(code == 0) error = GetLastError(); leave_blocking_section(); /* Fail if the lock was not successful */ if(code == 0) { char szBuf[1024]; LPVOID lpMsgBuf; switch(error) { case ERROR_LOCK_FAILED: case ERROR_LOCK_VIOLATION: /* * XXX: HACK: this exception is being caught * Do not change the string w/o changing the wrapper code. */ failwith("lockf_win32: already locked"); break; case ERROR_POSSIBLE_DEADLOCK: /* * XXX: HACK: this exception is being caught * Do not change the string w/o changing the wrapper code. */ failwith("lockf_win32: possible deadlock"); break; default: FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); sprintf(szBuf, "lockf_win32 failed with error %d: %s", error, lpMsgBuf); LocalFree(lpMsgBuf); failwith(szBuf); break; } } } return Val_unit; } /* * Translate flock operators. */ static int lockf_of_flock[] = { F_ULOCK, F_RLOCK, F_LOCK, F_TRLOCK, F_TLOCK }; /* * flock wrapper. */ value lm_flock(value v_fd, value v_op) { value v_kind; v_kind = Val_int(lockf_of_flock[Int_val(v_op)]); return lockf_win32(v_fd, v_kind, Val_int(FLOCK_LEN)); } /* * Truncate to the current position. */ value ftruncate_win32(value v_fd) { HANDLE fd = *(HANDLE *)Data_custom_val(v_fd); SetEndOfFile(fd); return Val_unit; } /************************************************************************ * Registry. */ /* * Get the value of a registry key. */ value caml_registry_find(value v_hkey, value v_subkey, value v_field) { char buffer[8192]; const char *subkey, *field; DWORD len; LONG code; HKEY hkey = 0; /* Get the arguments */ switch(Int_val(v_hkey)) { case 0: hkey = HKEY_CLASSES_ROOT; break; case 1: hkey = HKEY_CURRENT_CONFIG; break; case 2: hkey = HKEY_CURRENT_USER; break; case 3: hkey = HKEY_LOCAL_MACHINE; break; case 4: hkey = HKEY_USERS; break; default: caml_failwith("get_registry: unknown handle"); break; } /* Ask Windows */ subkey = String_val(v_subkey); field = String_val(v_field); len = sizeof(buffer); #if 0 code = RegGetValue(hkey, subkey, field, RRF_RT_REG_SZ, NULL, (LPVOID) buffer, &len); if(code != ERROR_SUCCESS) caml_raise_not_found(); #else { HKEY hand; code = RegOpenKeyEx(hkey, subkey, 0, KEY_QUERY_VALUE, &hand); if(code != ERROR_SUCCESS) caml_raise_not_found(); code = RegQueryValueEx(hand, field, NULL, NULL, (LPBYTE) buffer, &len); RegCloseKey(hand); if(code != ERROR_SUCCESS) caml_raise_not_found(); } #endif /* Got the value */ return copy_string(buffer); } #else /* WIN32 */ #include #include #include #include #include #include value int_of_fd(value fd) { return fd; } value home_win32(value v_unit) { caml_failwith("home_win32: not to be used except on Win32"); return Val_unit; } value lockf_win32(value v_fd, value v_kind, value v_len) { caml_failwith("lockf_win32: not to be used except on Win32"); return Val_unit; } value ftruncate_win32(value v_fd) { caml_failwith("ftruncate_current_win32: not to be used except on Win32"); return Val_unit; } value caml_registry_find(value v_key, value v_subkey, value v_field) { caml_raise_not_found(); return Val_unit; } /* * Translations. */ #if defined(LOCK_UN) && defined(LOCK_SH) && defined(LOCK_EX) #define FLOCK_ENABLED static int flock_of_flock[] = { LOCK_UN, LOCK_SH, LOCK_EX, LOCK_SH | LOCK_NB, LOCK_EX | LOCK_NB }; #endif #if defined(F_RDLCK) && defined(F_WRLCK) && defined(F_UNLCK) && defined(F_SETLK) && defined(F_SETLKW) && defined(SEEK_SET) #define FCNTL_ENABLED static int fcntl_type_of_flock[] = { F_UNLCK, F_RDLCK, F_WRLCK, F_RDLCK, F_WRLCK }; static int fcntl_of_flock[] = { F_SETLKW, F_SETLKW, F_SETLKW, F_SETLK, F_SETLK }; #endif #if defined(F_ULOCK) && defined(F_LOCK) && defined(F_TLOCK) #define LOCKF_ENABLED static int lockf_of_flock[] = { F_ULOCK, F_LOCK, F_LOCK, F_TLOCK, F_TLOCK }; #endif value lm_flock(value v_fd, value v_op) { int fd, op, cmd, code; fd = Int_val(v_fd); op = Int_val(v_op); #if defined(FLOCK_ENABLED) cmd = flock_of_flock[op]; enter_blocking_section(); code = flock(fd, cmd); leave_blocking_section(); #elif defined(FCNTL_ENABLED) { struct flock info; cmd = fcntl_of_flock[op]; info.l_type = fcntl_type_of_flock[op]; info.l_whence = SEEK_SET; info.l_start = 0; info.l_len = FLOCK_LEN; enter_blocking_section(); code = fcntl(fd, cmd, &info); leave_blocking_section(); } #elif defined(LOCKF_ENABLED) cmd = lockf_of_flock[op]; caml_enter_blocking_section(); code = lockf(fd, cmd, FLOCK_LEN); caml_leave_blocking_section(); #else code = -1; #endif if(code < 0) caml_failwith("flock"); return Val_unit; } #endif /* !WIN32 */ /************************************************************************ * Password file (only on Unix). */ #ifdef WIN32 /* * The empty array. */ value lm_getpwents(value v_unit) { return Val_emptylist; } #else /* !WIN32 */ /* * Scan the password file. * type passwd_entry = { pw_name : string; pw_passwd : string; pw_uid : int; pw_gid : int; pw_gecos : string; pw_dir : string; pw_shell : string; } */ value lm_getpwents(value v_unit) { CAMLparam1(v_unit); CAMLlocal3(users, entry, cons); struct passwd *entryp; /* Create a list of users */ users = Val_emptylist; /* Scan the password file */ setpwent(); while((entryp = getpwent())) { entry = caml_alloc_tuple(7); Store_field(entry, 0, caml_copy_string(entryp->pw_name)); Store_field(entry, 1, caml_copy_string(entryp->pw_passwd)); Store_field(entry, 2, Val_int(entryp->pw_uid)); Store_field(entry, 3, Val_int(entryp->pw_gid)); #ifdef __BEOS__ Store_field(entry, 4, copy_string("")); #else Store_field(entry, 4, copy_string(entryp->pw_gecos)); #endif Store_field(entry, 5, copy_string(entryp->pw_dir)); Store_field(entry, 6, copy_string(entryp->pw_shell)); cons = caml_alloc_tuple(2); Store_field(cons, 0, entry); Store_field(cons, 1, users); users = cons; } endpwent(); CAMLreturn(users); } #endif /* !WIN32 */ value lm_getlk(value v_fd, value v_op) { #if defined(FCNTL_ENABLED) int fd, op, code; struct flock info; fd = Int_val(v_fd); op = Int_val(v_op); info.l_type = op; info.l_whence = SEEK_SET; info.l_start = 0; info.l_len = 0; caml_enter_blocking_section(); code = fcntl(fd, F_GETLK, &info); caml_leave_blocking_section(); if (code < 0) { char buf[2048]; sprintf(buf, "lm_getlk error: %i", errno); caml_failwith(buf); } if (info.l_type == F_UNLCK) return Val_int(0); else return Val_int(info.l_pid); #else /* FCNTL_ENABLED */ caml_failwith("lm_getlk: not supported"); #endif /* FCNTL_ENABLED */ } omake-0.9.8.5/src/libmojave-external/cutil/lm_readline.c0000664000152300015230000001452610322060244021252 0ustar jyhjyh/*cxxx * Readline Interface for MCC * Copyright(c) 2002 Justin David Smith, Caltech * Derived from MetaPRL readline code */ /* * Call the readline package. */ #include #include #include #include #include #include #if READLINE #include #include #include #endif /* * Max line length without readline. */ #define MAX_LINE_LENGTH 1024 /*** Readline Tab Completion Stubs ***/ #if READLINE static int list_index = 0; static int len = 0; static char **commands = NULL; /* * Delete a chain of commands */ static void destruct_command_list() { char **cptr = commands; if(cptr == NULL) return; while(*cptr != NULL) { free(*cptr); ++cptr; } free(commands); commands = NULL; } /* * Clone a string. */ static char *dupstr(const char *s) { char *r = malloc(strlen(s) + 1); if(r == NULL) return(NULL); strcpy(r, s); return(r); } /* * Generator function for command completion. If state == 0, * then we start at the top of the list; otherwise, we use our * pre-existing state to resume a pending search. */ static char *command_generator(char *text, int state) { const char *name; /* Make sure we have a command list to process */ if(commands == NULL) return(NULL); /* Are we starting on a new word? */ if(state == 0) { list_index = 0; len = strlen(text); } /* Return the next command name which partially matches the text */ while((name = commands[list_index]) != NULL) { ++list_index; if(strncmp(name, text, len) == 0) { return(dupstr(name)); } } /* If nothing matched, then return NULL */ return(NULL); } /* * Attempt command-name completion (assuming a list of * commands have been registered into the system). */ static char **command_completion(char *text, int start, int end) { char **matches = NULL; if(start == 0) { matches = RL_COMPLETION_MATCHES(text, (RL_CP_TYPE *)command_generator); } return(matches); } /* * Actually initialize readline. */ value caml_initialize_readline(value unit) { CAMLparam1(unit); /* Setup the default command table */ commands = NULL; /* Tell the completer about our command completion engine */ rl_attempted_completion_function = (RL_CPP_TYPE *)command_completion; /* Set horizontal scroll mode; other modes screw up display */ rl_variable_bind("horizontal-scroll-mode", "on"); /* Disable the bell */ rl_variable_bind("bell-style", "none"); CAMLreturn(Val_unit); } /* * Register a new list of commands. */ value caml_register_commands(value new_commands) { CAMLparam1(new_commands); CAMLlocal1(cptr); int length; /* Try to figure out the length of this list... */ cptr = new_commands; length = 0; while(Is_block(cptr)) { cptr = Field(cptr, 1); ++length; } /* Allocate the real, internal command structure */ destruct_command_list(); commands = malloc(sizeof(char *) * (length + 1)); if(commands == NULL) { CAMLreturn(Val_unit); } cptr = new_commands; length = 0; while(Is_block(cptr)) { /* This is a CONS cell (I hope!) */ commands[length] = dupstr(String_val(Field(cptr, 0))); cptr = Field(cptr, 1); ++length; } /* Clear the final entry in the commands list */ commands[length] = NULL; /* We were apparently successful */ CAMLreturn(Val_unit); } value caml_read_history(value name) { CAMLparam1(name); int result; result = read_history( String_val(name) ); if (result == ENOENT) { raise_not_found(); } else if (result != 0) { CAMLlocal1(error); error = copy_string(strerror( result )); raise_sys_error( error ); } CAMLreturn(Val_unit); } value caml_write_history(value name) { CAMLparam1(name); int result; result = write_history( String_val(name) ); if (result != 0) { CAMLlocal1(error); error = copy_string(strerror( result )); raise_sys_error( error ); } CAMLreturn(Val_unit); } value caml_history_truncate_file(value name, value nlines) { CAMLparam2(name, nlines); int result; result = history_truncate_file( String_val(name), Long_val(nlines) ); if (result != 0) { CAMLlocal1(error); error = copy_string(strerror( result )); raise_sys_error( error ); } CAMLreturn(Val_unit); } #else /* No READLINE... */ /* * Nothing to initialize :) */ value caml_initialize_readline(value unit) { CAMLparam1(unit); CAMLreturn(Val_unit); } /* * Doesn't make much sense to register commands... */ value caml_register_commands(value new_commands) { CAMLparam1(new_commands); CAMLreturn(Val_unit); } value caml_read_history(value name) { CAMLparam1(name); CAMLreturn(Val_unit); } value caml_write_history(value name) { CAMLparam1(name); CAMLreturn(Val_unit); } value caml_history_truncate_file(value name, value len) { CAMLparam2(name,len); CAMLreturn(Val_unit); } #endif /* READLINE enabled? */ /*** OCaml Interface ***/ /* * Read a line into a string buffer. * Returns a string option, None at EOF. */ value caml_readline(value prompt_arg) { CAMLparam1(prompt_arg); CAMLlocal2(v, b); char *line; #if READLINE line = readline(String_val(prompt_arg)); /* Readline returns null on EOF */ if(line == NULL) { /* None */ CAMLreturn(Val_int(0)); } /* This (probably) copies the line */ if(line != NULL && *line != '\0') { /* Add nonempty lines to the history */ add_history(line); } #else /* No READLINE */ char *bufp; bufp = malloc(MAX_LINE_LENGTH); if(bufp == NULL) { /* Pretend that we have reached EOF */ CAMLreturn(Val_int(0)); } /* Get the line (make sure string is terminated) */ bufp[MAX_LINE_LENGTH - 1] = '\0'; fputs(String_val(prompt_arg), stdout); fflush(stdout); line = fgets(bufp, MAX_LINE_LENGTH - 1, stdin); /* Readline returns null on EOF */ if(line == NULL) { /* None */ free(bufp); CAMLreturn(Val_int(0)); } #endif /* READLINE enabled? */ /* Copy the line */ v = copy_string(line); /* Some v */ b = alloc(1, 0); Field(b, 0) = v; /* Free the buffer */ free(line); CAMLreturn(b); } omake-0.9.8.5/src/libmojave-external/cutil/lm_dll_hooks.h0000664000152300015230000000611610622136177021462 0ustar jyhjyh/* * Each dll should include this file. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifndef _LM_DLL_HOOKS_H #define _LM_DLL_HOOKS_H #include "lm_dll.h" /************************************************************************ * Initialization code. */ static DllHooks *dll_hooks; static value dll_callback_handlers; static struct caml__roots_block **dll_local_roots; #undef alloc #undef alloc_tuple #undef alloc_custom #undef copy_string #undef copy_string_array #undef copy_int32 #undef copy_int64 #undef copy_nativeint #undef copy_double #undef named_value #undef callback #undef callback2 #undef callback_exn #undef callback2_exn #undef register_global_root #undef caml_local_roots #define alloc(n, t) (dll_hooks->alloc_hook(n, t)) #define alloc_tuple(n) (dll_hooks->alloc_tuple_hook(n)) #define alloc_custom(ops, size, i, j) (dll_hooks->alloc_custom_hook(ops, size, i, j)) #define copy_string(s) (dll_hooks->copy_string_hook(s)) #define copy_string_array(s) (dll_hooks->copy_string_array_hook(s)) #define copy_int32(i) (dll_hooks->copy_int32_hook(i)) #define copy_nativeint(i) (dll_hooks->copy_nativeint_hook(i)) #define copy_int64(i) (dll_hooks->copy_int64_hook(i)) #define copy_double(x) (dll_hooks->copy_double_hook(x)) #define named_value(name) (dll_hooks->named_value_hook(name)) #define callback(f, arg1) (dll_hooks->callback1_hook(f, arg1)) #define callback2(f, arg1, arg2) (dll_hooks->callback2_hook(f, arg1, arg2)) #define callback_exn(f, arg1) (dll_hooks->callback1_exn_hook(f, arg1)) #define callback2_exn(f, arg1, arg2) (dll_hooks->callback2_exn_hook(f, arg1, arg2)) #define register_global_root(v) (dll_hooks->register_global_root_hook(v)) #define caml_modify(vp, v) (dll_hooks->modify(vp, v)) #define caml_local_roots (*dll_local_roots) #include "lm_dll_pointers.h" #endif /* _LM_DLL_HOOKS_H */ omake-0.9.8.5/src/libmojave-external/cutil/lm_compat_win32.h0000664000152300015230000000343710456222231022004 0ustar jyhjyh/* * Compatibility functions for the various versions of Windows. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #ifndef _COMPAT_WIN32_H #define _COMPAT_WIN32_H #ifdef WIN32 #include #include int ExistsOpenThread(void); HANDLE CompatOpenThread(DWORD arg1, BOOL arg2, DWORD arg3); BOOL CompatGetLongPathName(LPCTSTR arg1, LPTSTR arg2, DWORD arg3); HANDLE CompatCreateToolhelp32Snapshot(DWORD arg1, DWORD arg2); BOOL CompatThread32First(HANDLE arg1, LPTHREADENTRY32 arg2); BOOL CompatThread32Next(HANDLE arg1, LPTHREADENTRY32 arg2); HRESULT CompatSHGetFolderPath(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath); #endif /* WIN32 */ #endif /* _COMPAT_WIN32_H */ omake-0.9.8.5/src/libmojave-external/cutil/lm_notify.c0000664000152300015230000002132610652431065021004 0ustar jyhjyh/* * File-change notification. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * Additional permission is given to link this library with the * OpenSSL project's "OpenSSL" library, and with the OCaml runtime, * and you may distribute the linked executables. See the file * LICENSE.libmojave for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #include #ifdef FAM_ENABLED #ifdef WIN32 #include /* Disable some of the warnings */ #pragma warning( disable : 4100 4189 4127 4702 4996 ) #endif /* WIN32 */ #ifdef FAM_PSEUDO #include "fam_pseudo.h" #else /* FAM_PSEUDO */ #include #include #include #include #include #endif /* FAM_PSEUDO */ /* * Custom blocks. */ typedef struct { FAMConnection *fc; int is_open; } FAMInfo; #define FAMInfo_val(v) ((FAMInfo *) Data_custom_val(v)) #define FAMConnection_val(v) ((FAMInfo_val(v)->fc)) #ifdef HAVE_SNPRINTF #define ErrFmt(buffer, name) snprintf(buffer, sizeof(buffer), "%s: %s", name, FamErrlist[FAMErrno]) #else #define ErrFmt(buffer, name) sprintf(buffer, "%s: %s", name, FamErrlist[FAMErrno]) #endif #define CheckCode(fmt, expr) \ do { \ enter_blocking_section(); \ code = expr; \ leave_blocking_section(); \ if(code < 0) { \ char buffer[256]; \ ErrFmt(buffer, fmt); \ failwith(buffer); \ } \ } while(0) static int fam_connection_compare(value v1, value v2) { FAMConnection *info1 = FAMConnection_val(v1); FAMConnection *info2 = FAMConnection_val(v2); #ifdef FAM_PSEUDO return info1->id == info2->id ? 0 : info1->id < info2->id ? -1 : 1; #else /* FAM_PSEUDO */ return info1->fd == info2->fd ? 0 : info1->fd < info2->fd ? -1 : 1; #endif /* !FAM_PSEUDO */ } static long fam_connection_hash(value v) { return (long) FAMConnection_val(v); } static void fam_connection_finalize(value v_info) { FAMInfo *info; info = FAMInfo_val(v_info); if(info->is_open) { int code; CheckCode("om_notify_close", FAMClose(info->fc)); free(info->fc); info->is_open = 0; } } /* * Pass info in a custom block. */ static struct custom_operations fam_connection_ops = { "fam_connection", fam_connection_finalize, fam_connection_compare, fam_connection_hash, custom_serialize_default, custom_deserialize_default }; /* * Is this module enabled? */ value om_notify_enabled(value v_unit) { return Val_true; } /* * Open the FAM connection. */ value om_notify_open(value v_unit) { CAMLparam1(v_unit); CAMLlocal1(v); FAMConnection *fc; FAMInfo *info; int code; v = alloc_custom(&fam_connection_ops, sizeof(FAMInfo), 0, 1); info = FAMInfo_val(v); fc = malloc(sizeof(FAMConnection)); if(fc == 0) invalid_argument("om_notify_open: out of memory"); info->fc = fc; CheckCode("om_notify_open", FAMOpen(fc)); #ifdef HAVE_FAMNOEXISTS CheckCode("om_notify_open: FAMNoExists", FAMNoExists(fc)); #endif /* HAVE_FAMNOEXISTS */ info->is_open = 1; CAMLreturn(v); } /* * Close the FAM connection. */ value om_notify_close(value v_fc) { fam_connection_finalize(v_fc); return Val_unit; } /* * Get the file descriptor. */ value om_notify_fd(value v_fc) { #ifdef FAM_PSEUDO #ifdef FAM_INOTIFY FAMConnection *fc; fc = FAMConnection_val(v_fc); return Val_int(fc->id); #else /* FAM_PSEUDO && !FAM_INOTIFY */ failwith("No file descriptors in pseudo-FAM"); return Val_unit; #endif /* FAM_INOTIFY */ #else /* FAM_PSEUDO */ FAMConnection *fc; fc = FAMConnection_val(v_fc); return Val_int(FAMCONNECTION_GETFD(fc)); #endif /* FAM_PSEUDO */ } /* * Monitor a directory. */ value om_notify_monitor_directory(value v_fc, value v_name, value v_recursive) { CAMLparam3(v_fc, v_name, v_recursive); const char *name; FAMConnection *fc; FAMRequest request; int code, recursive; fc = FAMConnection_val(v_fc); name = String_val(v_name); recursive = Int_val(v_recursive); if(recursive) { #ifdef WIN32 CheckCode("om_notify_monitor_directory", FAMMonitorDirectoryTree(fc, name, &request, 0)); #else /* WIN32 */ failwith("om_notify_monitor_directory: recursive monitoring is not allowed"); #endif /* !WIN32 */ } else CheckCode("om_notify_monitor_directory", FAMMonitorDirectory(fc, name, &request, 0)); CAMLreturn(Val_int(request.reqnum)); } /* * Suspend the monitor. */ value om_notify_suspend(value v_fc, value v_request) { CAMLparam2(v_fc, v_request); FAMConnection *fc; FAMRequest request; int code; fc = FAMConnection_val(v_fc); request.reqnum = Int_val(v_request); CheckCode("om_notify_suspend", FAMSuspendMonitor(fc, &request)); CAMLreturn(Val_unit); } /* * Resume the monitor. */ value om_notify_resume(value v_fc, value v_request) { CAMLparam2(v_fc, v_request); FAMConnection *fc; FAMRequest request; int code; fc = FAMConnection_val(v_fc); request.reqnum = Int_val(v_request); CheckCode("om_notify_resume", FAMResumeMonitor(fc, &request)); CAMLreturn(Val_unit); } /* * Cancel the monitor. */ value om_notify_cancel(value v_fc, value v_request) { CAMLparam2(v_fc, v_request); FAMConnection *fc; FAMRequest request; int code; fc = FAMConnection_val(v_fc); request.reqnum = Int_val(v_request); CheckCode("om_notify_cancel", FAMCancelMonitor(fc, &request)); CAMLreturn(Val_unit); } /* * Check for a pending event. */ value om_notify_pending(value v_fc) { CAMLparam1(v_fc); FAMConnection *fc; int code; fc = FAMConnection_val(v_fc); CheckCode("om_notify_pending", FAMPending(fc)); CAMLreturn(code ? Val_true : Val_false); } /* * Get the next event. */ value om_notify_next_event(value v_fc) { CAMLparam1(v_fc); CAMLlocal2(v_name, v_tuple); FAMConnection *fc; FAMEvent event; int code; fc = FAMConnection_val(v_fc); CheckCode("om_notify_next_event", FAMNextEvent(fc, &event)); code = event.code; if(code < 1 || code > 10) failwith("om_notify_next_event: code out of bounds"); /* Allocate the string name */ v_name = copy_string(event.filename); /* Allocate the tuple */ v_tuple = alloc_tuple(3); Field(v_tuple, 0) = Val_int(event.fr.reqnum); Field(v_tuple, 1) = v_name; Field(v_tuple, 2) = Val_int(code - 1); CAMLreturn(v_tuple); } #else /* FAM_ENABLED */ /* * Is this module enabled? */ value om_notify_enabled(value v_unit) { return Val_false; } /* * Open the FAM connection. */ value om_notify_open(value v_unit) { return Val_unit; } /* * Get the file descriptor. */ value om_notify_fd(value v_fc) { invalid_argument("FAM not enabled"); return Val_unit; } /* * Close the FAM connection. */ value om_notify_close(value v_fc) { return Val_unit; } /* * Monitor a directory. */ value om_notify_monitor_directory(value v_fc, value v_name, value v_recursive) { return Val_int(0); } /* * Suspend the monitor. */ value om_notify_suspend(value v_fc, value v_request) { return Val_unit; } /* * Suspend the monitor. */ value om_notify_resume(value v_fc, value v_request) { return Val_unit; } /* * Suspend the monitor. */ value om_notify_cancel(value v_fc, value v_request) { return Val_unit; } /* * Check for a pending event. */ value om_notify_pending(value v_fc) { return Val_false; } /* * Get the next event. */ value om_notify_next_event(value v_fc) { invalid_argument("FAM not enabled"); return Val_unit; } #endif /* !FAM_ENABLED */ /* * vim:tw=100:ts=4:et:sw=4:cin */ omake-0.9.8.5/src/libmojave-external/OMakeroot0000664000152300015230000000032310551751611017335 0ustar jyhjyh# # Make sure omake is up-to-date # OMakeVersion(0.9.0) # # Include the standard configuration # include $(STDROOT) # # LibMojave is standalone # LM_STANDALONE = true # # Include the OMakefile # .SUBDIRS: . omake-0.9.8.5/src/libmojave-external/LICENSE.txt0000664000152300015230000006350410456222231017342 0ustar jyhjyh GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! omake-0.9.8.5/src/Makefile0000664000152300015230000015225310640574724013403 0ustar jyhjyh# # !!!THIS IS A GENERATED FILE!!! # !!!DO NOT MAKE CHANGES HERE, THEY WILL BE LOST!!! # .PHONY: depend clean # # System config # LN = ln -sf RM = rm -f DOT = ./ slash = / win32 = unix system = null # # C configuration # CC = cc CFLAGS = AR = ar cq AROUT = EXT_OBJ = .o EXT_LIB = .a EXE = OCAMLFLAGS = THREADSLIB = .SUFFIXES: .mll .mly .mli .ml .c .cmi .cmo .cma .o .c.o: $(CC) $(CFLAGS) -I"`ocamlc -where`" -c $*.c # # OCaml configuration # OCAMLC = ocamlc OCAMLYACC = ocamlyacc OCAMLLEX = ocamllex OCAMLDEP = ocamldep .mly.ml: $(OCAMLYACC) $*.mly .mly.mli: $(OCAMLYACC) $*.mly .mll.ml: $(OCAMLLEX) $*.mll .mli.cmi: $(OCAMLC) $(OCAMLFLAGS) -c $*.mli .ml.cmo: $(OCAMLC) $(OCAMLFLAGS) -c $*.ml # # The version.txt file # version.txt: @echo 0.0.boot > $@ lm_heap.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_heap.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_heap.c lm_heap.c lm_heap.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_heap.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_heap.h lm_heap.h lm_channel.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_channel.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_channel.c lm_channel.c lm_compat_win32.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_compat_win32.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_compat_win32.c lm_compat_win32.c lm_compat_win32.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_compat_win32.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_compat_win32.h lm_compat_win32.h lm_ctype.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_ctype.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_ctype.c lm_ctype.c lm_printf.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_printf.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_printf.c lm_printf.c lm_uname_ext.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_uname_ext.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_uname_ext.c lm_uname_ext.c lm_unix_cutil.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_unix_cutil.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_unix_cutil.c lm_unix_cutil.c unixsupport.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)unixsupport.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)unixsupport.h unixsupport.h fam_win32.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_win32.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_win32.c fam_win32.c fam_kqueue.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_kqueue.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_kqueue.c fam_kqueue.c fam_inotify.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_inotify.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_inotify.c fam_inotify.c fam_pseudo.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_pseudo.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_pseudo.h fam_pseudo.h lm_notify.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_notify.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_notify.c lm_notify.c inotify.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify.h inotify.h inotify-syscalls.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify-syscalls.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify-syscalls.h inotify-syscalls.h inotify.om: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify.om $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify.om inotify.om lm_termsize.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_termsize.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_termsize.c lm_termsize.c lm_terminfo.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_terminfo.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_terminfo.c lm_terminfo.c lm_fs_case_sensitive.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_fs_case_sensitive.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_fs_case_sensitive.c lm_fs_case_sensitive.c OFILES_clib = lm_heap$(EXT_OBJ) lm_channel$(EXT_OBJ) lm_printf$(EXT_OBJ) lm_ctype$(EXT_OBJ) lm_uname_ext$(EXT_OBJ) lm_unix_cutil$(EXT_OBJ) lm_compat_win32$(EXT_OBJ) readline$(EXT_OBJ) omake_shell_sys$(EXT_OBJ) fam_win32$(EXT_OBJ) fam_kqueue$(EXT_OBJ) fam_inotify$(EXT_OBJ) lm_notify$(EXT_OBJ) lm_termsize$(EXT_OBJ) lm_terminfo$(EXT_OBJ) lm_fs_case_sensitive$(EXT_OBJ) clib$(EXT_LIB): $(OFILES_clib) -$(RM) $@ $(AR) $(AROUT)$@ $(OFILES_clib) SRC_clib = ..$(slash)src$(slash)clib omake_shell_sys.c: $(SRC_clib)$(slash)omake_shell_sys.c $(LN) $(SRC_clib)$(slash)omake_shell_sys.c omake_shell_sys.c readline.c: $(SRC_clib)$(slash)readline.c $(LN) $(SRC_clib)$(slash)readline.c readline.c ALLFILES_clib = omake_shell_sys.c readline.c lm_heap.c lm_heap.h lm_channel.c lm_compat_win32.c lm_compat_win32.h lm_ctype.c lm_printf.c lm_uname_ext.c lm_unix_cutil.c unixsupport.h fam_win32.c fam_kqueue.c fam_inotify.c fam_pseudo.h lm_notify.c inotify.h inotify-syscalls.h inotify.om lm_termsize.c lm_terminfo.c lm_fs_case_sensitive.c lm_printf.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_printf.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_printf.ml lm_printf.ml lm_debug.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_debug.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_debug.ml lm_debug.ml lm_heap.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_heap.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_heap.ml lm_heap.ml lm_list_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_list_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_list_util.ml lm_list_util.ml lm_array_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_array_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_array_util.ml lm_array_util.ml lm_set_sig.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set_sig.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set_sig.ml lm_set_sig.ml lm_set.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set.ml lm_set.ml lm_map_sig.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map_sig.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map_sig.ml lm_map_sig.ml lm_map.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map.ml lm_map.ml lm_int_set.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_int_set.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_int_set.ml lm_int_set.ml lm_index.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_index.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_index.ml lm_index.ml lm_thread_sig.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_sig.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_sig.ml lm_thread_sig.ml lm_thread.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread.ml lm_thread.ml lm_string_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_util.ml lm_string_util.ml lm_string_set.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_set.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_set.ml lm_string_set.ml lm_printf.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_printf.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_printf.mli lm_printf.mli lm_debug.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_debug.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_debug.mli lm_debug.mli lm_list_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_list_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_list_util.mli lm_list_util.mli lm_array_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_array_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_array_util.mli lm_array_util.mli lm_set.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set.mli lm_set.mli lm_map.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map.mli lm_map.mli lm_int_set.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_int_set.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_int_set.mli lm_int_set.mli lm_index.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_index.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_index.mli lm_index.mli lm_thread_core.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_core.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_core.mli lm_thread_core.mli lm_thread.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread.mli lm_thread.mli lm_string_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_util.mli lm_string_util.mli lm_string_set.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_set.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_set.mli lm_string_set.mli lm_thread_pool.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_pool.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_pool.mli lm_thread_pool.mli lm_arg.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_arg.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_arg.ml lm_arg.ml lm_hash_sig.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash_sig.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash_sig.ml lm_hash_sig.ml lm_hash.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash.ml lm_hash.ml lm_location.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_location.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_location.ml lm_location.ml lm_position.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_position.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_position.ml lm_position.ml lm_channel.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_channel.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_channel.ml lm_channel.ml lm_lexer.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_lexer.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_lexer.ml lm_lexer.ml lm_parser.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_parser.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_parser.ml lm_parser.ml lm_glob.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_glob.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_glob.ml lm_glob.ml lm_db.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_db.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_db.ml lm_db.ml lm_arg.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_arg.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_arg.mli lm_arg.mli lm_hash.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash.mli lm_hash.mli lm_location.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_location.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_location.mli lm_location.mli lm_position.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_position.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_position.mli lm_position.mli lm_channel.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_channel.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_channel.mli lm_channel.mli lm_lexer.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_lexer.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_lexer.mli lm_lexer.mli lm_parser.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_parser.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_parser.mli lm_parser.mli lm_glob.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_glob.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_glob.mli lm_glob.mli lm_db.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_db.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_db.mli lm_db.mli lm_termsize.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_termsize.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_termsize.ml lm_termsize.ml lm_termsize.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_termsize.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_termsize.mli lm_termsize.mli lm_terminfo.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_terminfo.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_terminfo.ml lm_terminfo.ml lm_terminfo.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_terminfo.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_terminfo.mli lm_terminfo.mli lm_filename_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_filename_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_filename_util.ml lm_filename_util.ml lm_filename_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_filename_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_filename_util.mli lm_filename_util.mli lm_uname.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_uname.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_uname.ml lm_uname.ml lm_unix_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_unix_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_unix_util.ml lm_unix_util.ml lm_uname.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_uname.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_uname.mli lm_uname.mli lm_unix_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_unix_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_unix_util.mli lm_unix_util.mli lm_notify.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_notify.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_notify.ml lm_notify.ml lm_notify.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_notify.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_notify.mli lm_notify.mli lm_fs_case_sensitive.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_fs_case_sensitive.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_fs_case_sensitive.ml lm_fs_case_sensitive.ml lm_fs_case_sensitive.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_fs_case_sensitive.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_fs_case_sensitive.mli lm_fs_case_sensitive.mli lm_symbol.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_symbol_hash.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_symbol_hash.ml lm_symbol.ml lm_symbol.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_symbol_hash.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_symbol_hash.mli lm_symbol.mli CMOFILES_lm = lm_printf.cmo lm_debug.cmo lm_heap.cmo lm_list_util.cmo lm_array_util.cmo lm_set_sig.cmo lm_set.cmo lm_map_sig.cmo lm_map.cmo lm_int_set.cmo lm_termsize.cmo lm_terminfo.cmo lm_arg.cmo lm_index.cmo lm_thread_sig.cmo lm_thread_core.cmo lm_thread.cmo lm_string_util.cmo lm_string_set.cmo lm_hash_sig.cmo lm_hash.cmo lm_symbol.cmo lm_location.cmo lm_position.cmo lm_filename_util.cmo lm_uname.cmo lm_thread_pool.cmo lm_channel.cmo lm_lexer.cmo lm_parser.cmo lm_unix_util.cmo lm_glob.cmo lm_db.cmo lm_notify.cmo lm_fs_case_sensitive.cmo OCAML_LIB_FLAGS_lm = lm.cma: $(CMOFILES_lm) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_lm) -a -o $@ $(CMOFILES_lm) lm_thread_pool.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_pool_$(system).ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_pool_$(system).ml lm_thread_pool.ml lm_thread_core.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_core_$(system).ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_core_$(system).ml lm_thread_core.ml SRC_libmojave = ..$(slash)src$(slash)libmojave ALLFILES_libmojave = lm_printf.ml lm_debug.ml lm_heap.ml lm_list_util.ml lm_array_util.ml lm_set_sig.ml lm_set.ml lm_map_sig.ml lm_map.ml lm_int_set.ml lm_index.ml lm_thread_sig.ml lm_thread.ml lm_string_util.ml lm_string_set.ml lm_printf.mli lm_debug.mli lm_list_util.mli lm_array_util.mli lm_set.mli lm_map.mli lm_int_set.mli lm_index.mli lm_thread_core.mli lm_thread.mli lm_string_util.mli lm_string_set.mli lm_thread_pool.mli lm_arg.ml lm_hash_sig.ml lm_hash.ml lm_location.ml lm_position.ml lm_channel.ml lm_lexer.ml lm_parser.ml lm_glob.ml lm_db.ml lm_arg.mli lm_hash.mli lm_location.mli lm_position.mli lm_channel.mli lm_lexer.mli lm_parser.mli lm_glob.mli lm_db.mli lm_termsize.ml lm_termsize.mli lm_terminfo.ml lm_terminfo.mli lm_filename_util.ml lm_filename_util.mli lm_uname.ml lm_unix_util.ml lm_uname.mli lm_unix_util.mli lm_notify.ml lm_notify.mli lm_fs_case_sensitive.ml lm_fs_case_sensitive.mli lm_symbol.ml lm_symbol.mli lm_thread_pool.ml lm_thread_core.ml CMOFILES_util = fmarshal.cmo ocaml_patch.cmo omake_util.cmo omake_wild.cmo omake_print_util.cmo omake_readline.cmo omake_printf.cmo omake_marshal.cmo omake_handle_table.cmo OCAML_LIB_FLAGS_util = util.cma: $(CMOFILES_util) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_util) -a -o $@ $(CMOFILES_util) ocaml_patch.cmo: ocaml_patch.cmi ocaml_patch.ml: ..$(slash)src$(slash)util$(slash)ocaml_patch_$(win32).ml $(LN) ..$(slash)src$(slash)util$(slash)ocaml_patch_$(win32).ml ocaml_patch.ml Makefile.dep: ocaml_patch.ml SRC_util = ..$(slash)src$(slash)util fmarshal.ml: $(SRC_util)$(slash)fmarshal.ml $(LN) $(SRC_util)$(slash)fmarshal.ml fmarshal.ml ocaml_patch.mli: $(SRC_util)$(slash)ocaml_patch.mli $(LN) $(SRC_util)$(slash)ocaml_patch.mli ocaml_patch.mli omake_handle_table.ml: $(SRC_util)$(slash)omake_handle_table.ml $(LN) $(SRC_util)$(slash)omake_handle_table.ml omake_handle_table.ml omake_marshal.ml: $(SRC_util)$(slash)omake_marshal.ml $(LN) $(SRC_util)$(slash)omake_marshal.ml omake_marshal.ml omake_print_util.ml: $(SRC_util)$(slash)omake_print_util.ml $(LN) $(SRC_util)$(slash)omake_print_util.ml omake_print_util.ml omake_print_util.mli: $(SRC_util)$(slash)omake_print_util.mli $(LN) $(SRC_util)$(slash)omake_print_util.mli omake_print_util.mli omake_printf.ml: $(SRC_util)$(slash)omake_printf.ml $(LN) $(SRC_util)$(slash)omake_printf.ml omake_printf.ml omake_readline.ml: $(SRC_util)$(slash)omake_readline.ml $(LN) $(SRC_util)$(slash)omake_readline.ml omake_readline.ml omake_readline.mli: $(SRC_util)$(slash)omake_readline.mli $(LN) $(SRC_util)$(slash)omake_readline.mli omake_readline.mli omake_util.ml: $(SRC_util)$(slash)omake_util.ml $(LN) $(SRC_util)$(slash)omake_util.ml omake_util.ml omake_util.mli: $(SRC_util)$(slash)omake_util.mli $(LN) $(SRC_util)$(slash)omake_util.mli omake_util.mli omake_wild.ml: $(SRC_util)$(slash)omake_wild.ml $(LN) $(SRC_util)$(slash)omake_wild.ml omake_wild.ml omake_wild.mli: $(SRC_util)$(slash)omake_wild.mli $(LN) $(SRC_util)$(slash)omake_wild.mli omake_wild.mli ALLFILES_util = fmarshal.ml ocaml_patch.mli omake_handle_table.ml omake_marshal.ml omake_print_util.ml omake_print_util.mli omake_printf.ml omake_readline.ml omake_readline.mli omake_util.ml omake_util.mli omake_wild.ml omake_wild.mli ocaml_patch.ml CMOFILES_omake_gen_magic = omake_gen_magic.cmo OCAML_LIBS_omake_gen_magic = lm.cma OCAML_OTHER_LIBS_omake_gen_magic = unix.cma OCAML_CLIBS_omake_gen_magic = OCAML_CCLIBS_omake_gen_magic = omake_gen_magic$(EXE): $(CMOFILES_omake_gen_magic) $(OCAML_LIBS_omake_gen_magic) $(OCAML_CLIBS_omake_gen_magic) $(OCAMLC) $(OCAMLFLAGS) -custom -o $@ $(OCAML_CCLIBS_omake_gen_magic) $(OCAML_OTHER_LIBS_omake_gen_magic) $(THREADSLIB) $(OCAML_LIBS_omake_gen_magic) $(CMOFILES_omake_gen_magic) CMOFILES_magic = omake_magic.cmo OCAML_LIB_FLAGS_magic = magic.cma: $(CMOFILES_magic) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_magic) -a -o $@ $(CMOFILES_magic) GENMAGIC_DEPS = lm_filename_util.ml lm_hash.ml lm_location.ml lm_map.ml lm_position.ml lm_set.ml lm_symbol.ml omake_value_type.ml omake_cache.ml omake_cache_type.ml omake_node.ml omake_command_digest.ml lm_filename_util.ml lm_hash.ml lm_location.ml lm_symbol.ml lm_map.ml lm_set.ml omake_node.ml omake_ir.ml lm_filename_util.ml lm_hash.ml lm_lexer.ml lm_location.ml lm_map.ml lm_parser.ml lm_position.ml lm_set.ml lm_symbol.ml omake_value_type.ml omake_cache_type.ml omake_ir.ml omake_node.ml omake_env.ml version.txt MAGIC_FILES = --cache-files lm_filename_util.ml lm_hash.ml lm_location.ml lm_map.ml lm_position.ml lm_set.ml lm_symbol.ml omake_value_type.ml omake_cache.ml omake_cache_type.ml omake_node.ml omake_command_digest.ml --omc-files lm_filename_util.ml lm_hash.ml lm_location.ml lm_symbol.ml lm_map.ml lm_set.ml omake_node.ml omake_ir.ml --omo-files lm_filename_util.ml lm_hash.ml lm_lexer.ml lm_location.ml lm_map.ml lm_parser.ml lm_position.ml lm_set.ml lm_symbol.ml omake_value_type.ml omake_cache_type.ml omake_ir.ml omake_node.ml omake_env.ml omake_magic.ml: omake_gen_magic$(EXE) $(GENMAGIC_DEPS) $(DOT)omake_gen_magic -o $@ --version version.txt --magic $(MAGIC_FILES) SRC_magic = ..$(slash)src$(slash)magic omake_gen_magic.ml: $(SRC_magic)$(slash)omake_gen_magic.ml $(LN) $(SRC_magic)$(slash)omake_gen_magic.ml omake_gen_magic.ml ALLFILES_magic = omake_gen_magic.ml CMOFILES_ir = omake_options.cmo omake_symbol.cmo omake_state.cmo omake_node_type.cmo omake_node_sig.cmo omake_node.cmo omake_virtual_id.cmo omake_install.cmo omake_ir.cmo omake_var.cmo omake_ir_util.cmo omake_ir_print.cmo omake_ir_free_vars.cmo omake_lexer.cmo omake_parser.cmo omake_value_type.cmo omake_command_type.cmo omake_value_print.cmo omake_pos.cmo omake_shell_type.cmo omake_command.cmo omake_cache_type.cmo omake_cache.cmo OCAML_LIB_FLAGS_ir = ir.cma: $(CMOFILES_ir) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_ir) -a -o $@ $(CMOFILES_ir) omake_options.cmo omake_symbol.cmo omake_state.cmo omake_node_type.cmo omake_node_sig.cmo omake_node.cmo omake_virtual_id.cmo omake_install.cmo omake_ir.cmo omake_var.cmo omake_ir_util.cmo omake_ir_print.cmo omake_ir_free_vars.cmo omake_lexer.cmo omake_parser.cmo omake_value_type.cmo omake_command_type.cmo omake_value_print.cmo omake_pos.cmo omake_shell_type.cmo omake_command.cmo omake_cache_type.cmo omake_cache.cmo omake_options.cmi omake_state.cmi omake_node.cmi omake_virtual_id.cmi omake_install.cmi omake_var.cmi omake_ir_util.cmi omake_ir_print.cmi omake_ir_free_vars.cmi omake_value_print.cmi omake_pos.cmi omake_command.cmi omake_cache.cmi: magic.cma SRC_ir = ..$(slash)src$(slash)ir omake_cache.ml: $(SRC_ir)$(slash)omake_cache.ml $(LN) $(SRC_ir)$(slash)omake_cache.ml omake_cache.ml omake_cache.mli: $(SRC_ir)$(slash)omake_cache.mli $(LN) $(SRC_ir)$(slash)omake_cache.mli omake_cache.mli omake_cache_type.ml: $(SRC_ir)$(slash)omake_cache_type.ml $(LN) $(SRC_ir)$(slash)omake_cache_type.ml omake_cache_type.ml omake_command.ml: $(SRC_ir)$(slash)omake_command.ml $(LN) $(SRC_ir)$(slash)omake_command.ml omake_command.ml omake_command.mli: $(SRC_ir)$(slash)omake_command.mli $(LN) $(SRC_ir)$(slash)omake_command.mli omake_command.mli omake_command_type.ml: $(SRC_ir)$(slash)omake_command_type.ml $(LN) $(SRC_ir)$(slash)omake_command_type.ml omake_command_type.ml omake_install.ml: $(SRC_ir)$(slash)omake_install.ml $(LN) $(SRC_ir)$(slash)omake_install.ml omake_install.ml omake_install.mli: $(SRC_ir)$(slash)omake_install.mli $(LN) $(SRC_ir)$(slash)omake_install.mli omake_install.mli omake_ir.ml: $(SRC_ir)$(slash)omake_ir.ml $(LN) $(SRC_ir)$(slash)omake_ir.ml omake_ir.ml omake_ir_free_vars.ml: $(SRC_ir)$(slash)omake_ir_free_vars.ml $(LN) $(SRC_ir)$(slash)omake_ir_free_vars.ml omake_ir_free_vars.ml omake_ir_free_vars.mli: $(SRC_ir)$(slash)omake_ir_free_vars.mli $(LN) $(SRC_ir)$(slash)omake_ir_free_vars.mli omake_ir_free_vars.mli omake_ir_print.ml: $(SRC_ir)$(slash)omake_ir_print.ml $(LN) $(SRC_ir)$(slash)omake_ir_print.ml omake_ir_print.ml omake_ir_print.mli: $(SRC_ir)$(slash)omake_ir_print.mli $(LN) $(SRC_ir)$(slash)omake_ir_print.mli omake_ir_print.mli omake_ir_util.ml: $(SRC_ir)$(slash)omake_ir_util.ml $(LN) $(SRC_ir)$(slash)omake_ir_util.ml omake_ir_util.ml omake_ir_util.mli: $(SRC_ir)$(slash)omake_ir_util.mli $(LN) $(SRC_ir)$(slash)omake_ir_util.mli omake_ir_util.mli omake_lexer.ml: $(SRC_ir)$(slash)omake_lexer.ml $(LN) $(SRC_ir)$(slash)omake_lexer.ml omake_lexer.ml omake_node.ml: $(SRC_ir)$(slash)omake_node.ml $(LN) $(SRC_ir)$(slash)omake_node.ml omake_node.ml omake_node.mli: $(SRC_ir)$(slash)omake_node.mli $(LN) $(SRC_ir)$(slash)omake_node.mli omake_node.mli omake_node_sig.ml: $(SRC_ir)$(slash)omake_node_sig.ml $(LN) $(SRC_ir)$(slash)omake_node_sig.ml omake_node_sig.ml omake_node_type.ml: $(SRC_ir)$(slash)omake_node_type.ml $(LN) $(SRC_ir)$(slash)omake_node_type.ml omake_node_type.ml omake_options.ml: $(SRC_ir)$(slash)omake_options.ml $(LN) $(SRC_ir)$(slash)omake_options.ml omake_options.ml omake_options.mli: $(SRC_ir)$(slash)omake_options.mli $(LN) $(SRC_ir)$(slash)omake_options.mli omake_options.mli omake_parser.ml: $(SRC_ir)$(slash)omake_parser.ml $(LN) $(SRC_ir)$(slash)omake_parser.ml omake_parser.ml omake_pos.ml: $(SRC_ir)$(slash)omake_pos.ml $(LN) $(SRC_ir)$(slash)omake_pos.ml omake_pos.ml omake_pos.mli: $(SRC_ir)$(slash)omake_pos.mli $(LN) $(SRC_ir)$(slash)omake_pos.mli omake_pos.mli omake_shell_type.ml: $(SRC_ir)$(slash)omake_shell_type.ml $(LN) $(SRC_ir)$(slash)omake_shell_type.ml omake_shell_type.ml omake_state.ml: $(SRC_ir)$(slash)omake_state.ml $(LN) $(SRC_ir)$(slash)omake_state.ml omake_state.ml omake_state.mli: $(SRC_ir)$(slash)omake_state.mli $(LN) $(SRC_ir)$(slash)omake_state.mli omake_state.mli omake_symbol.ml: $(SRC_ir)$(slash)omake_symbol.ml $(LN) $(SRC_ir)$(slash)omake_symbol.ml omake_symbol.ml omake_value_print.ml: $(SRC_ir)$(slash)omake_value_print.ml $(LN) $(SRC_ir)$(slash)omake_value_print.ml omake_value_print.ml omake_value_print.mli: $(SRC_ir)$(slash)omake_value_print.mli $(LN) $(SRC_ir)$(slash)omake_value_print.mli omake_value_print.mli omake_value_type.ml: $(SRC_ir)$(slash)omake_value_type.ml $(LN) $(SRC_ir)$(slash)omake_value_type.ml omake_value_type.ml omake_var.ml: $(SRC_ir)$(slash)omake_var.ml $(LN) $(SRC_ir)$(slash)omake_var.ml omake_var.ml omake_var.mli: $(SRC_ir)$(slash)omake_var.mli $(LN) $(SRC_ir)$(slash)omake_var.mli omake_var.mli omake_virtual_id.ml: $(SRC_ir)$(slash)omake_virtual_id.ml $(LN) $(SRC_ir)$(slash)omake_virtual_id.ml omake_virtual_id.ml omake_virtual_id.mli: $(SRC_ir)$(slash)omake_virtual_id.mli $(LN) $(SRC_ir)$(slash)omake_virtual_id.mli omake_virtual_id.mli ALLFILES_ir = omake_cache.ml omake_cache.mli omake_cache_type.ml omake_command.ml omake_command.mli omake_command_type.ml omake_install.ml omake_install.mli omake_ir.ml omake_ir_free_vars.ml omake_ir_free_vars.mli omake_ir_print.ml omake_ir_print.mli omake_ir_util.ml omake_ir_util.mli omake_lexer.ml omake_node.ml omake_node.mli omake_node_sig.ml omake_node_type.ml omake_options.ml omake_options.mli omake_parser.ml omake_pos.ml omake_pos.mli omake_shell_type.ml omake_state.ml omake_state.mli omake_symbol.ml omake_value_print.ml omake_value_print.mli omake_value_type.ml omake_var.ml omake_var.mli omake_virtual_id.ml omake_virtual_id.mli CMOFILES_exec = omake_exec_id.cmo omake_exec_type.cmo omake_exec_print.cmo omake_exec_util.cmo omake_exec_local.cmo omake_exec_remote.cmo omake_exec_notify.cmo omake_exec.cmo OCAML_LIB_FLAGS_exec = exec.cma: $(CMOFILES_exec) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_exec) -a -o $@ $(CMOFILES_exec) SRC_exec = ..$(slash)src$(slash)exec omake_exec.ml: $(SRC_exec)$(slash)omake_exec.ml $(LN) $(SRC_exec)$(slash)omake_exec.ml omake_exec.ml omake_exec.mli: $(SRC_exec)$(slash)omake_exec.mli $(LN) $(SRC_exec)$(slash)omake_exec.mli omake_exec.mli omake_exec_id.ml: $(SRC_exec)$(slash)omake_exec_id.ml $(LN) $(SRC_exec)$(slash)omake_exec_id.ml omake_exec_id.ml omake_exec_id.mli: $(SRC_exec)$(slash)omake_exec_id.mli $(LN) $(SRC_exec)$(slash)omake_exec_id.mli omake_exec_id.mli omake_exec_local.ml: $(SRC_exec)$(slash)omake_exec_local.ml $(LN) $(SRC_exec)$(slash)omake_exec_local.ml omake_exec_local.ml omake_exec_local.mli: $(SRC_exec)$(slash)omake_exec_local.mli $(LN) $(SRC_exec)$(slash)omake_exec_local.mli omake_exec_local.mli omake_exec_notify.ml: $(SRC_exec)$(slash)omake_exec_notify.ml $(LN) $(SRC_exec)$(slash)omake_exec_notify.ml omake_exec_notify.ml omake_exec_notify.mli: $(SRC_exec)$(slash)omake_exec_notify.mli $(LN) $(SRC_exec)$(slash)omake_exec_notify.mli omake_exec_notify.mli omake_exec_print.ml: $(SRC_exec)$(slash)omake_exec_print.ml $(LN) $(SRC_exec)$(slash)omake_exec_print.ml omake_exec_print.ml omake_exec_print.mli: $(SRC_exec)$(slash)omake_exec_print.mli $(LN) $(SRC_exec)$(slash)omake_exec_print.mli omake_exec_print.mli omake_exec_remote.ml: $(SRC_exec)$(slash)omake_exec_remote.ml $(LN) $(SRC_exec)$(slash)omake_exec_remote.ml omake_exec_remote.ml omake_exec_remote.mli: $(SRC_exec)$(slash)omake_exec_remote.mli $(LN) $(SRC_exec)$(slash)omake_exec_remote.mli omake_exec_remote.mli omake_exec_type.ml: $(SRC_exec)$(slash)omake_exec_type.ml $(LN) $(SRC_exec)$(slash)omake_exec_type.ml omake_exec_type.ml omake_exec_util.ml: $(SRC_exec)$(slash)omake_exec_util.ml $(LN) $(SRC_exec)$(slash)omake_exec_util.ml omake_exec_util.ml omake_exec_util.mli: $(SRC_exec)$(slash)omake_exec_util.mli $(LN) $(SRC_exec)$(slash)omake_exec_util.mli omake_exec_util.mli ALLFILES_exec = omake_exec.ml omake_exec.mli omake_exec_id.ml omake_exec_id.mli omake_exec_local.ml omake_exec_local.mli omake_exec_notify.ml omake_exec_notify.mli omake_exec_print.ml omake_exec_print.mli omake_exec_remote.ml omake_exec_remote.mli omake_exec_type.ml omake_exec_util.ml omake_exec_util.mli CMOFILES_ast = omake_ast.cmo omake_ast_util.cmo omake_ast_print.cmo OCAML_LIB_FLAGS_ast = ast.cma: $(CMOFILES_ast) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_ast) -a -o $@ $(CMOFILES_ast) SRC_ast = ..$(slash)src$(slash)ast omake_ast.ml: $(SRC_ast)$(slash)omake_ast.ml $(LN) $(SRC_ast)$(slash)omake_ast.ml omake_ast.ml omake_ast_print.ml: $(SRC_ast)$(slash)omake_ast_print.ml $(LN) $(SRC_ast)$(slash)omake_ast_print.ml omake_ast_print.ml omake_ast_print.mli: $(SRC_ast)$(slash)omake_ast_print.mli $(LN) $(SRC_ast)$(slash)omake_ast_print.mli omake_ast_print.mli omake_ast_util.ml: $(SRC_ast)$(slash)omake_ast_util.ml $(LN) $(SRC_ast)$(slash)omake_ast_util.ml omake_ast_util.ml omake_ast_util.mli: $(SRC_ast)$(slash)omake_ast_util.mli $(LN) $(SRC_ast)$(slash)omake_ast_util.mli omake_ast_util.mli ALLFILES_ast = omake_ast.ml omake_ast_print.ml omake_ast_print.mli omake_ast_util.ml omake_ast_util.mli CMOFILES_omake_gen_parse = omake_gen_parse.cmo OCAML_LIBS_omake_gen_parse = OCAML_OTHER_LIBS_omake_gen_parse = unix.cma OCAML_CLIBS_omake_gen_parse = OCAML_CCLIBS_omake_gen_parse = omake_gen_parse$(EXE): $(CMOFILES_omake_gen_parse) $(OCAML_LIBS_omake_gen_parse) $(OCAML_CLIBS_omake_gen_parse) $(OCAMLC) $(OCAMLFLAGS) -custom -o $@ $(OCAML_CCLIBS_omake_gen_parse) $(OCAML_OTHER_LIBS_omake_gen_parse) $(THREADSLIB) $(OCAML_LIBS_omake_gen_parse) $(CMOFILES_omake_gen_parse) CMOFILES_env = omake_env.cmo omake_exn_print.cmo omake_ast_parse.cmo omake_ast_lex.cmo omake_ir_ast.cmo omake_ir_semant.cmo omake_command_digest.cmo OCAML_LIB_FLAGS_env = env.cma: $(CMOFILES_env) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_env) -a -o $@ $(CMOFILES_env) GENPARSE = omake_gen_parse omake_ast_parse.mly: $(GENPARSE)$(EXE) omake_ast_parse.input $(DOT)$(GENPARSE) -o $@ omake_ast_parse.input omake_ast_lex.ml: omake_ast_lex.mll omake_ast_lex.cmo: omake_ast_lex.cmi omake_ast_parse.ml: omake_ast_parse.mly omake_ast_parse.mli: omake_ast_parse.mly omake_ast_parse.cmo: omake_ast_parse.cmi omake_ast_lex.mll: ..$(slash)src$(slash)env$(slash)omake_ast_lex.mll $(LN) ..$(slash)src$(slash)env$(slash)omake_ast_lex.mll omake_ast_lex.mll omake_ast_parse.input: ..$(slash)src$(slash)env$(slash)omake_ast_parse.input $(LN) ..$(slash)src$(slash)env$(slash)omake_ast_parse.input omake_ast_parse.input omake_env.cmo omake_exn_print.cmo omake_ast_parse.cmo omake_ast_lex.cmo omake_ir_ast.cmo omake_ir_semant.cmo omake_command_digest.cmo omake_env.cmi omake_exn_print.cmi omake_ast_parse.cmi omake_ast_lex.cmi omake_ir_ast.cmi omake_ir_semant.cmi omake_command_digest.cmi: magic.cma Makefile.dep: omake_ast_lex.ml omake_ast_parse.mly omake_ast_parse.mli omake_ast_parse.ml SRC_env = ..$(slash)src$(slash)env omake_ast_lex.mli: $(SRC_env)$(slash)omake_ast_lex.mli $(LN) $(SRC_env)$(slash)omake_ast_lex.mli omake_ast_lex.mli omake_command_digest.ml: $(SRC_env)$(slash)omake_command_digest.ml $(LN) $(SRC_env)$(slash)omake_command_digest.ml omake_command_digest.ml omake_command_digest.mli: $(SRC_env)$(slash)omake_command_digest.mli $(LN) $(SRC_env)$(slash)omake_command_digest.mli omake_command_digest.mli omake_env.ml: $(SRC_env)$(slash)omake_env.ml $(LN) $(SRC_env)$(slash)omake_env.ml omake_env.ml omake_env.mli: $(SRC_env)$(slash)omake_env.mli $(LN) $(SRC_env)$(slash)omake_env.mli omake_env.mli omake_exn_print.ml: $(SRC_env)$(slash)omake_exn_print.ml $(LN) $(SRC_env)$(slash)omake_exn_print.ml omake_exn_print.ml omake_exn_print.mli: $(SRC_env)$(slash)omake_exn_print.mli $(LN) $(SRC_env)$(slash)omake_exn_print.mli omake_exn_print.mli omake_gen_parse.ml: $(SRC_env)$(slash)omake_gen_parse.ml $(LN) $(SRC_env)$(slash)omake_gen_parse.ml omake_gen_parse.ml omake_ir_ast.ml: $(SRC_env)$(slash)omake_ir_ast.ml $(LN) $(SRC_env)$(slash)omake_ir_ast.ml omake_ir_ast.ml omake_ir_ast.mli: $(SRC_env)$(slash)omake_ir_ast.mli $(LN) $(SRC_env)$(slash)omake_ir_ast.mli omake_ir_ast.mli omake_ir_semant.ml: $(SRC_env)$(slash)omake_ir_semant.ml $(LN) $(SRC_env)$(slash)omake_ir_semant.ml omake_ir_semant.ml omake_ir_semant.mli: $(SRC_env)$(slash)omake_ir_semant.mli $(LN) $(SRC_env)$(slash)omake_ir_semant.mli omake_ir_semant.mli ALLFILES_env = omake_ast_lex.mli omake_command_digest.ml omake_command_digest.mli omake_env.ml omake_env.mli omake_exn_print.ml omake_exn_print.mli omake_gen_parse.ml omake_ir_ast.ml omake_ir_ast.mli omake_ir_semant.ml omake_ir_semant.mli omake_ast_lex.mll omake_ast_parse.input CMOFILES_shell = omake_shell_parse.cmo omake_shell_lex.cmo omake_shell_sys_type.cmo omake_shell_sys.cmo omake_shell_job.cmo omake_shell_completion.cmo OCAML_LIB_FLAGS_shell = shell.cma: $(CMOFILES_shell) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_shell) -a -o $@ $(CMOFILES_shell) omake_shell_parse.ml: omake_shell_parse.mly omake_shell_parse.mli: omake_shell_parse.mly omake_shell_parse.cmo: omake_shell_parse.cmi omake_shell_parse.mly: ..$(slash)src$(slash)shell$(slash)omake_shell_parse.mly $(LN) ..$(slash)src$(slash)shell$(slash)omake_shell_parse.mly omake_shell_parse.mly omake_shell_sys.ml: ..$(slash)src$(slash)shell$(slash)omake_shell_sys_$(win32).ml $(LN) ..$(slash)src$(slash)shell$(slash)omake_shell_sys_$(win32).ml omake_shell_sys.ml Makefile.dep: omake_shell_parse.mli omake_shell_parse.ml omake_shell_sys.ml SRC_shell = ..$(slash)src$(slash)shell omake_shell_completion.ml: $(SRC_shell)$(slash)omake_shell_completion.ml $(LN) $(SRC_shell)$(slash)omake_shell_completion.ml omake_shell_completion.ml omake_shell_completion.mli: $(SRC_shell)$(slash)omake_shell_completion.mli $(LN) $(SRC_shell)$(slash)omake_shell_completion.mli omake_shell_completion.mli omake_shell_job.ml: $(SRC_shell)$(slash)omake_shell_job.ml $(LN) $(SRC_shell)$(slash)omake_shell_job.ml omake_shell_job.ml omake_shell_job.mli: $(SRC_shell)$(slash)omake_shell_job.mli $(LN) $(SRC_shell)$(slash)omake_shell_job.mli omake_shell_job.mli omake_shell_lex.ml: $(SRC_shell)$(slash)omake_shell_lex.ml $(LN) $(SRC_shell)$(slash)omake_shell_lex.ml omake_shell_lex.ml omake_shell_lex.mli: $(SRC_shell)$(slash)omake_shell_lex.mli $(LN) $(SRC_shell)$(slash)omake_shell_lex.mli omake_shell_lex.mli omake_shell_sys.mli: $(SRC_shell)$(slash)omake_shell_sys.mli $(LN) $(SRC_shell)$(slash)omake_shell_sys.mli omake_shell_sys.mli omake_shell_sys_type.ml: $(SRC_shell)$(slash)omake_shell_sys_type.ml $(LN) $(SRC_shell)$(slash)omake_shell_sys_type.ml omake_shell_sys_type.ml ALLFILES_shell = omake_shell_completion.ml omake_shell_completion.mli omake_shell_job.ml omake_shell_job.mli omake_shell_lex.ml omake_shell_lex.mli omake_shell_sys.mli omake_shell_sys_type.ml omake_shell_parse.mly omake_shell_sys.ml CMOFILES_eval = omake_eval.cmo omake_value.cmo OCAML_LIB_FLAGS_eval = eval.cma: $(CMOFILES_eval) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_eval) -a -o $@ $(CMOFILES_eval) SRC_eval = ..$(slash)src$(slash)eval omake_eval.ml: $(SRC_eval)$(slash)omake_eval.ml $(LN) $(SRC_eval)$(slash)omake_eval.ml omake_eval.ml omake_eval.mli: $(SRC_eval)$(slash)omake_eval.mli $(LN) $(SRC_eval)$(slash)omake_eval.mli omake_eval.mli omake_value.ml: $(SRC_eval)$(slash)omake_value.ml $(LN) $(SRC_eval)$(slash)omake_value.ml omake_value.ml omake_value.mli: $(SRC_eval)$(slash)omake_value.mli $(LN) $(SRC_eval)$(slash)omake_value.mli omake_value.mli ALLFILES_eval = omake_eval.ml omake_eval.mli omake_value.ml omake_value.mli CMOFILES_build = omake_rule.cmo omake_build_type.cmo omake_build_util.cmo omake_builtin_type.cmo omake_builtin_util.cmo omake_target.cmo omake_builtin.cmo omake_build_tee.cmo omake_build.cmo OCAML_LIB_FLAGS_build = build.cma: $(CMOFILES_build) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_build) -a -o $@ $(CMOFILES_build) omake_rule.cmo omake_build_type.cmo omake_build_util.cmo omake_builtin_type.cmo omake_builtin_util.cmo omake_target.cmo omake_builtin.cmo omake_build_tee.cmo omake_build.cmo omake_rule.cmi omake_build_util.cmi omake_builtin_util.cmi omake_target.cmi omake_builtin.cmi omake_build_tee.cmi omake_build.cmi: magic.cma SRC_build = ..$(slash)src$(slash)build omake_build.ml: $(SRC_build)$(slash)omake_build.ml $(LN) $(SRC_build)$(slash)omake_build.ml omake_build.ml omake_build.mli: $(SRC_build)$(slash)omake_build.mli $(LN) $(SRC_build)$(slash)omake_build.mli omake_build.mli omake_build_tee.ml: $(SRC_build)$(slash)omake_build_tee.ml $(LN) $(SRC_build)$(slash)omake_build_tee.ml omake_build_tee.ml omake_build_tee.mli: $(SRC_build)$(slash)omake_build_tee.mli $(LN) $(SRC_build)$(slash)omake_build_tee.mli omake_build_tee.mli omake_build_type.ml: $(SRC_build)$(slash)omake_build_type.ml $(LN) $(SRC_build)$(slash)omake_build_type.ml omake_build_type.ml omake_build_util.ml: $(SRC_build)$(slash)omake_build_util.ml $(LN) $(SRC_build)$(slash)omake_build_util.ml omake_build_util.ml omake_build_util.mli: $(SRC_build)$(slash)omake_build_util.mli $(LN) $(SRC_build)$(slash)omake_build_util.mli omake_build_util.mli omake_builtin.ml: $(SRC_build)$(slash)omake_builtin.ml $(LN) $(SRC_build)$(slash)omake_builtin.ml omake_builtin.ml omake_builtin.mli: $(SRC_build)$(slash)omake_builtin.mli $(LN) $(SRC_build)$(slash)omake_builtin.mli omake_builtin.mli omake_builtin_type.ml: $(SRC_build)$(slash)omake_builtin_type.ml $(LN) $(SRC_build)$(slash)omake_builtin_type.ml omake_builtin_type.ml omake_builtin_util.ml: $(SRC_build)$(slash)omake_builtin_util.ml $(LN) $(SRC_build)$(slash)omake_builtin_util.ml omake_builtin_util.ml omake_builtin_util.mli: $(SRC_build)$(slash)omake_builtin_util.mli $(LN) $(SRC_build)$(slash)omake_builtin_util.mli omake_builtin_util.mli omake_rule.ml: $(SRC_build)$(slash)omake_rule.ml $(LN) $(SRC_build)$(slash)omake_rule.ml omake_rule.ml omake_rule.mli: $(SRC_build)$(slash)omake_rule.mli $(LN) $(SRC_build)$(slash)omake_rule.mli omake_rule.mli omake_target.ml: $(SRC_build)$(slash)omake_target.ml $(LN) $(SRC_build)$(slash)omake_target.ml omake_target.ml omake_target.mli: $(SRC_build)$(slash)omake_target.mli $(LN) $(SRC_build)$(slash)omake_target.mli omake_target.mli ALLFILES_build = omake_build.ml omake_build.mli omake_build_tee.ml omake_build_tee.mli omake_build_type.ml omake_build_util.ml omake_build_util.mli omake_builtin.ml omake_builtin.mli omake_builtin_type.ml omake_builtin_util.ml omake_builtin_util.mli omake_rule.ml omake_rule.mli omake_target.ml omake_target.mli CMOFILES_builtin = omake_builtin_base.cmo omake_builtin_arith.cmo omake_builtin_file.cmo omake_builtin_fun.cmo omake_builtin_io.cmo omake_builtin_io_fun.cmo omake_builtin_sys.cmo omake_builtin_target.cmo omake_builtin_shell.cmo omake_builtin_rule.cmo omake_builtin_test.cmo omake_builtin_object.cmo OCAML_LIB_FLAGS_builtin = -linkall builtin.cma: $(CMOFILES_builtin) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_builtin) -a -o $@ $(CMOFILES_builtin) omake_builtin_base.cmo omake_builtin_arith.cmo omake_builtin_file.cmo omake_builtin_fun.cmo omake_builtin_io.cmo omake_builtin_io_fun.cmo omake_builtin_sys.cmo omake_builtin_target.cmo omake_builtin_shell.cmo omake_builtin_rule.cmo omake_builtin_test.cmo omake_builtin_object.cmo omake_builtin_base.cmi omake_builtin_arith.cmi omake_builtin_file.cmi omake_builtin_fun.cmi omake_builtin_io.cmi omake_builtin_io_fun.cmi omake_builtin_sys.cmi omake_builtin_target.cmi omake_builtin_shell.cmi omake_builtin_rule.cmi omake_builtin_test.cmi omake_builtin_object.cmi: magic.cma SRC_builtin = ..$(slash)src$(slash)builtin omake_builtin_arith.ml: $(SRC_builtin)$(slash)omake_builtin_arith.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_arith.ml omake_builtin_arith.ml omake_builtin_arith.mli: $(SRC_builtin)$(slash)omake_builtin_arith.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_arith.mli omake_builtin_arith.mli omake_builtin_base.ml: $(SRC_builtin)$(slash)omake_builtin_base.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_base.ml omake_builtin_base.ml omake_builtin_base.mli: $(SRC_builtin)$(slash)omake_builtin_base.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_base.mli omake_builtin_base.mli omake_builtin_file.ml: $(SRC_builtin)$(slash)omake_builtin_file.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_file.ml omake_builtin_file.ml omake_builtin_file.mli: $(SRC_builtin)$(slash)omake_builtin_file.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_file.mli omake_builtin_file.mli omake_builtin_fun.ml: $(SRC_builtin)$(slash)omake_builtin_fun.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_fun.ml omake_builtin_fun.ml omake_builtin_fun.mli: $(SRC_builtin)$(slash)omake_builtin_fun.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_fun.mli omake_builtin_fun.mli omake_builtin_io.ml: $(SRC_builtin)$(slash)omake_builtin_io.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_io.ml omake_builtin_io.ml omake_builtin_io.mli: $(SRC_builtin)$(slash)omake_builtin_io.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_io.mli omake_builtin_io.mli omake_builtin_io_fun.ml: $(SRC_builtin)$(slash)omake_builtin_io_fun.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_io_fun.ml omake_builtin_io_fun.ml omake_builtin_io_fun.mli: $(SRC_builtin)$(slash)omake_builtin_io_fun.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_io_fun.mli omake_builtin_io_fun.mli omake_builtin_object.ml: $(SRC_builtin)$(slash)omake_builtin_object.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_object.ml omake_builtin_object.ml omake_builtin_object.mli: $(SRC_builtin)$(slash)omake_builtin_object.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_object.mli omake_builtin_object.mli omake_builtin_rule.ml: $(SRC_builtin)$(slash)omake_builtin_rule.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_rule.ml omake_builtin_rule.ml omake_builtin_rule.mli: $(SRC_builtin)$(slash)omake_builtin_rule.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_rule.mli omake_builtin_rule.mli omake_builtin_shell.ml: $(SRC_builtin)$(slash)omake_builtin_shell.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_shell.ml omake_builtin_shell.ml omake_builtin_shell.mli: $(SRC_builtin)$(slash)omake_builtin_shell.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_shell.mli omake_builtin_shell.mli omake_builtin_sys.ml: $(SRC_builtin)$(slash)omake_builtin_sys.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_sys.ml omake_builtin_sys.ml omake_builtin_sys.mli: $(SRC_builtin)$(slash)omake_builtin_sys.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_sys.mli omake_builtin_sys.mli omake_builtin_target.ml: $(SRC_builtin)$(slash)omake_builtin_target.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_target.ml omake_builtin_target.ml omake_builtin_target.mli: $(SRC_builtin)$(slash)omake_builtin_target.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_target.mli omake_builtin_target.mli omake_builtin_test.ml: $(SRC_builtin)$(slash)omake_builtin_test.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_test.ml omake_builtin_test.ml omake_builtin_test.mli: $(SRC_builtin)$(slash)omake_builtin_test.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_test.mli omake_builtin_test.mli ALLFILES_builtin = omake_builtin_arith.ml omake_builtin_arith.mli omake_builtin_base.ml omake_builtin_base.mli omake_builtin_file.ml omake_builtin_file.mli omake_builtin_fun.ml omake_builtin_fun.mli omake_builtin_io.ml omake_builtin_io.mli omake_builtin_io_fun.ml omake_builtin_io_fun.mli omake_builtin_object.ml omake_builtin_object.mli omake_builtin_rule.ml omake_builtin_rule.mli omake_builtin_shell.ml omake_builtin_shell.mli omake_builtin_sys.ml omake_builtin_sys.mli omake_builtin_target.ml omake_builtin_target.mli omake_builtin_test.ml omake_builtin_test.mli CMOFILES_cvs_realclean = cvs_realclean.cmo OCAML_LIBS_cvs_realclean = lm.cma OCAML_OTHER_LIBS_cvs_realclean = unix.cma OCAML_CLIBS_cvs_realclean = OCAML_CCLIBS_cvs_realclean = cvs_realclean$(EXE): $(CMOFILES_cvs_realclean) $(OCAML_LIBS_cvs_realclean) $(OCAML_CLIBS_cvs_realclean) $(OCAMLC) $(OCAMLFLAGS) -custom -o $@ $(OCAML_CCLIBS_cvs_realclean) $(OCAML_OTHER_LIBS_cvs_realclean) $(THREADSLIB) $(OCAML_LIBS_cvs_realclean) $(CMOFILES_cvs_realclean) CMOFILES_omake = omake_shell.cmo omake_main.cmo OCAML_LIBS_omake = lm.cma util.cma magic.cma ast.cma ir.cma env.cma exec.cma eval.cma shell.cma build.cma builtin.cma OCAML_OTHER_LIBS_omake = unix.cma OCAML_CLIBS_omake = clib$(EXT_LIB) OCAML_CCLIBS_omake = -cclib clib$(EXT_LIB) omake$(EXE): $(CMOFILES_omake) $(OCAML_LIBS_omake) $(OCAML_CLIBS_omake) $(OCAMLC) $(OCAMLFLAGS) -custom -o $@ $(OCAML_CCLIBS_omake) $(OCAML_OTHER_LIBS_omake) $(THREADSLIB) $(OCAML_LIBS_omake) $(CMOFILES_omake) omake_shell.cmo omake_main.cmo omake_shell.cmi omake_main.cmi: magic.cma SRC_main = ..$(slash)src$(slash)main cvs_realclean.ml: $(SRC_main)$(slash)cvs_realclean.ml $(LN) $(SRC_main)$(slash)cvs_realclean.ml cvs_realclean.ml omake_main.ml: $(SRC_main)$(slash)omake_main.ml $(LN) $(SRC_main)$(slash)omake_main.ml omake_main.ml omake_main.mli: $(SRC_main)$(slash)omake_main.mli $(LN) $(SRC_main)$(slash)omake_main.mli omake_main.mli omake_shell.ml: $(SRC_main)$(slash)omake_shell.ml $(LN) $(SRC_main)$(slash)omake_shell.ml omake_shell.ml omake_shell.mli: $(SRC_main)$(slash)omake_shell.mli $(LN) $(SRC_main)$(slash)omake_shell.mli omake_shell.mli ALLFILES_main = cvs_realclean.ml omake_main.ml omake_main.mli omake_shell.ml omake_shell.mli ALLFILES = $(ALLFILES_clib) $(ALLFILES_libmojave) $(ALLFILES_util) $(ALLFILES_magic) $(ALLFILES_ir) $(ALLFILES_exec) $(ALLFILES_ast) $(ALLFILES_env) $(ALLFILES_shell) $(ALLFILES_eval) $(ALLFILES_build) $(ALLFILES_builtin) $(ALLFILES_main) # # Create a dependency file # Makefile.dep: $(ALLFILES) $(OCAMLDEP) $(OCAMLINCLUDES) *.ml *.mli > Makefile.dep # # Clean up # clean: $(RM) *.cmo *.cmx *.cma *.cmxa *.o *.obj *.a *.lib *.exe $(RM) $(ALLFILES) $(RM) omake include Makefile.dep omake-0.9.8.5/src/util/0000775000152300015230000000000010660137227012703 5ustar jyhjyhomake-0.9.8.5/src/util/omake_print_util.ml0000664000152300015230000000273210456240612016602 0ustar jyhjyh(* * Print utilities. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol (* * Method name. *) let rec pp_print_method_name buf vl = match vl with [v] -> pp_print_symbol buf v | v :: vl -> pp_print_symbol buf v; pp_print_char buf '.'; pp_print_method_name buf vl | [] -> () (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/util/omake_marshal.ml0000664000152300015230000000570410456240612016042 0ustar jyhjyh(* * Marshaling of messages. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Fmarshal let version_number = Hashtbl.hash "$Id: omake_marshal.ml 9447 2006-07-15 19:27:06Z jyh $" type magic = LocationMagic | IdMagic | NullRootMagic | DriveRootMagic | DirRootMagic | DirSubMagic | NodeFileMagic | NodePhonyGlobalMagic | NodePhonyDirMagic | NodePhonyFileMagic | NodeFlaggedMagic | NodeIsOptionalMagic | NodeIsExistingMagic | NodeIsSquashedMagic | NodeIsScannerMagic | QuietFlagMagic | AllowFailureFlagMagic | AllowOutputFlagMagic | CommandLineMagic | PrintEagerMagic | PrintLazyMagic | PrintExitMagic | RequestSpawnMagic | ResponseCreateMagic | ResponseExitedMagic | ResponseStdoutMagic | ResponseStderrMagic | ResponseStatusMagic | MaxMagic type msg = magic item exception MarshalError (* * Magic numbers. * We cheat a little here. *) let int_of_magic magic = (Obj.magic magic : int) let max_magic = int_of_magic MaxMagic let magic_of_int i = if i < 0 || i >= max_magic then raise (Failure "magic_of_int"); (Obj.magic i : magic) (* * Some common marshalers. *) let marshal_string_list l = List (List.map (fun s -> String s) l) let unmarshal_string_list l = match l with List l -> List.map (function String s -> s | _ -> raise MarshalError) l | _ -> raise MarshalError (* * Locations. *) let marshal_loc loc = let file, sline, schar, eline, echar = Lm_location.dest_loc loc in let file = Lm_symbol.to_string file in List [Magic LocationMagic; String file; Int sline; Int schar; Int eline; Int echar] let unmarshal_loc l = match l with List [Magic LocationMagic; String file; Int sline; Int schar; Int eline; Int echar] -> Lm_location.create_loc (Lm_symbol.add file) sline schar eline echar | _ -> raise MarshalError (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/util/omake_util.mli0000664000152300015230000000255510642247035015545 0ustar jyhjyh(* * Basic utilities. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf val bool_of_string : string -> bool val pathsep : string val pp_time : formatter -> float -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/util/omake_readline.ml0000664000152300015230000000536710576045436016215 0ustar jyhjyh(* * Simple readline implementation. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) external flush : unit -> unit = "omake_readline_flush" external isatty : unit -> bool = "omake_isatty" external is_interactive : unit -> bool = "omake_is_interactive" external set_interactive : bool -> unit = "omake_interactive" external init : unit -> unit = "omake_readline_init" external where : unit -> int = "omake_where_history" external history : unit -> string array = "omake_readline_history" external load : string -> unit = "omake_readline_load_file" external save : unit -> unit = "omake_readline_save_file" external set_length : int -> unit = "omake_readline_set_length" external set_directory : string -> unit = "omake_readline_set_directory" external get_prompt_invs : unit -> string * string = "omake_rl_prompt_wrappers" let () = init () let prompt_invisible = match get_prompt_invs () with "", "" -> None | inv -> Some inv external ext_readline : string -> string = "omake_readline" external ext_readstring : string -> string -> int -> int -> int = "omake_readstring" let readline s = Lm_thread_pool.blocking_section ext_readline s let readstring s buf off len = Lm_thread_pool.blocking_section (ext_readstring s buf off) len (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/util/fmarshal.ml0000664000152300015230000002765110456240612015041 0ustar jyhjyh(* * A generic marshaler. * For marshaling, we need a * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf (* * All items eventually become ints, floats, or strings. *) type 'a item = Bool of bool | Char of char | Code of int | Symbol of int | Int of int | Magic of 'a | Float of float | String of string | List of 'a item list (************************************************************************ * MARSHALING ************************************************************************) (* * IO module. *) module type MarshalIOSig = sig type t type in_channel type out_channel (* Convert between magic ids *) val magic_of_int : int -> t val int_of_magic : t -> int (* IO *) val input_byte : in_channel -> int val input_buffer : in_channel -> string -> int -> int -> unit val output_byte : out_channel -> int -> unit val output_buffer : out_channel -> string -> int -> int -> unit end (* * Marshal module. *) module type MarshalSig = sig type t type in_channel type out_channel val marshal : out_channel -> t item -> unit val unmarshal : in_channel -> t item end (* * Output routines. *) module Make (IO : MarshalIOSig) : MarshalSig with type t = IO.t with type in_channel = IO.in_channel with type out_channel = IO.out_channel = struct type t = IO.t type in_channel = IO.in_channel type out_channel = IO.out_channel (* * Codes. *) let true_magic = 0xe0 let false_magic = 0xe1 let char_magic = 0xe2 let code_magic = 0xe3 let symbol_magic = 0xe4 let int_magic = 0xe5 let magic_magic = 0xe6 let rawint_magic = 0xe7 let float_magic = 0xe8 let rawfloat_magic = 0xe9 let string_magic = 0xea let list_magic = 0xeb let version_number = Hashtbl.hash "$Id: fmarshal.ml 9447 2006-07-15 19:27:06Z jyh $" (************************************************************************ * BASIC IO ************************************************************************) (* * Basic routines. *) let output_byte out i = IO.output_byte out (i land 0xff) let input_byte inc = IO.input_byte inc let output_bool out b = output_byte out (if b then 1 else 0) let input_bool inc = match input_byte inc with 0 -> false | 1 -> true | _ -> raise (Failure "input_bool: input is not Boolean") let output_char out c = output_byte out (Char.code c) let input_char inc = Char.chr (input_byte inc) let output_int out i = output_byte out ((i lsr 24) land 0xff); output_byte out ((i lsr 16) land 0xff); output_byte out ((i lsr 8) land 0xff); output_byte out (i land 0xff) let input_int inc = let i = input_byte inc in let i = (i lsl 8) lor (input_byte inc) in let i = (i lsl 8) lor (input_byte inc) in let i = (i lsl 8) lor (input_byte inc) in i let output_int16 out i = output_byte out ((i lsr 8) land 0xff); output_byte out (i land 0xff) let input_int16 inc = let i1 = input_byte inc in let i2 = input_byte inc in (i1 lsl 8) lor i2 let output_int32 out i = output_byte out ((Int32.to_int (Int32.shift_right i 24)) land 0xff); output_byte out ((Int32.to_int (Int32.shift_right i 16)) land 0xff); output_byte out ((Int32.to_int (Int32.shift_right i 8)) land 0xff); output_byte out ((Int32.to_int i) land 0xff) let input_int32 inc = let i = Int32.shift_left (Int32.of_int (input_byte inc)) 24 in let i = Int32.logor i (Int32.shift_left (Int32.of_int (input_byte inc)) 16) in let i = Int32.logor i (Int32.shift_left (Int32.of_int (input_byte inc)) 8) in let i = Int32.logor i (Int32.of_int (input_byte inc)) in i let output_int64 out i = output_byte out ((Int64.to_int (Int64.shift_right i 56)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 48)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 40)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 32)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 24)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 16)) land 0xff); output_byte out ((Int64.to_int (Int64.shift_right i 8)) land 0xff); output_byte out ((Int64.to_int i) land 0xff) let input_int64 inc = let i = Int64.shift_left (Int64.of_int (input_byte inc)) 56 in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 48) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 40) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 32) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 24) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 16) in let i = Int64.logor i (Int64.shift_left (Int64.of_int (input_byte inc)) 8) in let i = Int64.logor i (Int64.of_int (input_byte inc)) in i (* * Floats. *) let output_float out x = output_int64 out (Int64.bits_of_float x) let input_float inc = Int64.float_of_bits (input_int64 inc) (* * Meta. *) let output_magic = output_byte let input_magic = input_byte let output_size out i = if i >= 0 && i < 255 then output_byte out i else begin output_byte out 255; output_int out i end let input_size inc = let i = input_byte inc in if i < 255 then i else input_int inc (************************************************************************ * MARSHALING ************************************************************************) (* * Marshal base types. *) let marshal_bool out b = (* eprintf "Bool: %b%t" b eflush; *) if b then output_magic out true_magic else output_magic out false_magic let marshal_char out c = output_magic out char_magic; output_char out c let marshal_code out i = (* eprintf "Int: %d%t" i eflush; *) output_magic out code_magic; output_int16 out i let marshal_symbol out i = (* eprintf "Int: %d%t" i eflush; *) output_magic out symbol_magic; output_int16 out i let marshal_int out i = (* eprintf "Int: %d%t" i eflush; *) output_magic out int_magic; output_int out i let marshal_magic out x = let index = IO.int_of_magic x in (* eprintf "Magic: %d%t" index eflush; *) output_magic out magic_magic; output_int out index let marshal_float out x = (* eprintf "Float: %g%t" x eflush; *) output_magic out float_magic; output_float out x let marshal_string out s = let len = String.length s in (* eprintf "String: %s%t" s eflush; *) output_magic out string_magic; output_size out len; IO.output_buffer out s 0 len (* * Marshaler *) let rec marshal_item out x = match x with Bool b -> marshal_bool out b | Char c -> marshal_char out c | Code i -> marshal_code out i | Symbol i -> marshal_symbol out i | Int i -> marshal_int out i | Magic i -> marshal_magic out i | Float x -> marshal_float out x | String s -> marshal_string out s | List l -> marshal_list out l and marshal_list out l = let len = List.length l in (* eprintf "List: %d%t" len eflush; *) output_magic out list_magic; output_size out len; List.iter (marshal_item out) l (* * Save the version number. *) let marshal_version out = output_int out version_number (* * First collect strings and save them. *) let marshal out l = marshal_version out; marshal_item out l (************************************************************************ * UNMARSHALING ************************************************************************) (* * Reading. *) let unmarshal_bool b = (* eprintf "Bool: %b%t" b eflush; *) Bool b let unmarshal_magic inc = let i = input_int inc in (* eprintf "Magic: %d%t" i eflush; *) Magic (IO.magic_of_int i) let unmarshal_char inc = let c = input_char inc in (* eprintf "Char: %c%t" c eflush; *) Char c let unmarshal_code inc = let i = input_int16 inc in (* eprintf "Int: %d%t" i eflush; *) Code i let unmarshal_symbol inc = let i = input_int16 inc in (* eprintf "Int: %d%t" i eflush; *) Symbol i let unmarshal_int inc = let i = input_int inc in (* eprintf "Int: %d%t" i eflush; *) Int i let unmarshal_float inc = let x = input_float inc in (* eprintf "Float: %g%t" x eflush; *) Float x let unmarshal_string inc = let len = input_size inc in let _ = if len < 0 then raise (Failure "unmarshal_string: string length is negative") in let s = String.create len in IO.input_buffer inc s 0 len; (* eprintf "String: %s%t" s eflush; *) String s (* * Build a value from the input. *) let rec unmarshal_item inc = let magic = input_magic inc in if magic = true_magic then unmarshal_bool true else if magic = false_magic then unmarshal_bool false else if magic = char_magic then unmarshal_char inc else if magic = code_magic then unmarshal_code inc else if magic = symbol_magic then unmarshal_symbol inc else if magic = int_magic then unmarshal_int inc else if magic = magic_magic then unmarshal_magic inc else if magic = float_magic then unmarshal_float inc else if magic = string_magic then unmarshal_string inc else if magic = list_magic then unmarshal_list inc else raise (Failure (sprintf "unmarshal: unexpected magic number 0x%02x" magic)) and unmarshal_list inc = let len = input_size inc in (* let _ = eprintf "List: %d%t" len eflush in *) let rec collect i l = if i = 0 then List (List.rev l) else let x = unmarshal_item inc in collect (pred i) (x :: l) in collect len [] (* * Read the version number. *) let unmarshal_version inc = let i = input_int inc in if i <> version_number then raise (Failure (sprintf "unmarshal_version: bogus version number: 0x%08x, should be 0x%08x" i version_number)) (* * Now read the data. *) let unmarshal inc = unmarshal_version inc; unmarshal_item inc end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/util/ocaml_patch_win32.ml0000664000152300015230000000314210456240612016525 0ustar jyhjyh(* * Patch some problems in OCaml. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Unix (* * create_process on 3.08.0 quotes its arguments. *) external win_create_process : string -> string -> string option -> file_descr -> file_descr -> file_descr -> int = "win_create_process" "win_create_process_native" let create_process prog args fd1 fd2 fd3 = win_create_process prog (String.concat " " (Array.to_list args)) None fd1 fd2 fd3 (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/util/omake_util.ml0000664000152300015230000000376610642247035015401 0ustar jyhjyh(* * Basic utilities. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf (* * Test a string for being false. *) let bool_of_string s = match String.lowercase s with "" | "0" | "no" | "nil" | "false" | "undefined" -> false | _ -> true (* * Path separator. *) let pathsep = if Sys.os_type = "Win32" then ";" else ":" let pp_time buf secs = if secs < 60. then fprintf buf "%0.2f sec" secs else let subsec, sec = modf secs in let sec = int_of_float sec in let h = sec / 3600 in let m = (sec / 60) mod 60 in let s = sec mod 60 in if h > 0 then fprintf buf "%d hrs %02d min %05.2f sec" h m (float s +. subsec) else fprintf buf "%d min %05.2f sec" m (float s +. subsec) (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/util/OMakefile0000664000152300015230000000137410615471254014470 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave FILES[] = fmarshal ocaml_patch omake_util omake_wild omake_print_util omake_readline omake_printf omake_marshal omake_handle_table # # Patch file is generated # GENERATED_FILES[] = ocaml_patch.ml PATCH_FILE = $(if $(equal $(OSTYPE), Win32), ocaml_patch_win32.ml, ocaml_patch_unix.ml) ocaml_patch.ml: $(PATCH_FILE) ln-or-cp $< $@ clean: $(CLEAN) $(GENERATED_FILES) # # Library # MakeOCamlLibrary(util, $(FILES)) ######################################################################## # Generate a Makefile # MAKEFILE_TEXT += $''' ocaml_patch.cmo: ocaml_patch.cmi ''' MakeLinkFile(ocaml_patch.ml, ocaml_patch_$'$(win32)'.ml) MakeDontLink($(GENERATED_FILES)) MakeMakefile() omake-0.9.8.5/src/util/omake_wild.mli0000664000152300015230000000432510550552437015527 0ustar jyhjyh(* * Utilities, mostly on filenames. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_printf (* * Wildcard string. *) val wild_string : string (* * Wildcard matching. "Incoming" patterns must have exactly one instance * of the pattern symbol %. "Outgoing" patterns may have any number. *) type wild_in_patt type wild_out_patt type wild_subst type wild_value (* * Printing. *) val pp_print_wild_in : formatter -> wild_in_patt -> unit val pp_print_wild_out : formatter -> wild_out_patt -> unit (* * Check if a string is a wild pattern. *) val is_wild : string -> bool (* * Compile a pattern. *) val wild_compile_in : string -> wild_in_patt val wild_compile_out : string -> wild_out_patt (* * Perform a match. Returns None if there * was no match. *) val wild_matches : wild_in_patt -> string -> bool val wild_match : wild_in_patt -> string -> wild_subst option val wild_core : wild_subst -> string val wild_of_core : string -> wild_subst (* * Perform a substitution. *) val wild_subst_in : wild_subst -> wild_in_patt -> string val wild_subst : wild_subst -> wild_out_patt -> string (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/util/ocaml_patch.mli0000664000152300015230000000250510456240612015656 0ustar jyhjyh(* * Patch the OCaml distribution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Local server. *) val create_process : string -> string array -> Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> int (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/util/omake_handle_table.ml0000664000152300015230000000405010654713446017020 0ustar jyhjyh(* * Table indexed by opaque handles. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_int_set (* * Handles. These need to be heap allocated so that we can register * finalization functions. *) module type HandleTableSig = sig type 'a t type handle val create : unit -> 'a t val add : 'a t -> 'a -> handle val find : 'a t -> handle -> 'a end;; module HandleTable : HandleTableSig = struct type 'a t = { mutable hand_table : 'a IntTable.t; mutable hand_index : int } (* This must be heap-allocated *) type handle = { handle_index : int } let create () = { hand_table = IntTable.empty; hand_index = 0 } let free table hand = table.hand_table <- IntTable.remove table.hand_table hand.handle_index let add table x = let i = table.hand_index in let hand = { handle_index = i } in Gc.finalise (free table) hand; table.hand_index <- succ i; table.hand_table <- IntTable.add table.hand_table i x; hand let find table hand = IntTable.find table.hand_table hand.handle_index end;; (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/util/omake_print_util.mli0000664000152300015230000000242310456240612016750 0ustar jyhjyh(* * Printing utilities. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol val pp_print_method_name : out_channel -> symbol list -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/util/omake_printf.ml0000664000152300015230000003747610456240612015730 0ustar jyhjyh(* * This is a generic printf builder. We take "simple" printing * functions, and turn them into a general printf. * * Formatted printing. * Here are the format strings we handle. * d or i: print an integer in decminal * u: print an unsigned integer in decimal * x: print an integer in unsigned hex in lowercase * X: print an integer in unsigned hex in uppercase * o: print an integer in unsigned octal * s: print a string * c: print a character * f: print a float in decimal * e,E: print a float in exponent notation * g,G: print a float in best notation * b: print a Boolean * a: user-defined printer * t: user-defined printer * v: value printer * %: print the '%' char * * From the printf man page, each format specifier has * 1. 0 or more flags * #: use alternate notation * 0: 0-pad the number * '-': left-justify the field * ' ': leave a space before the number * '+': always print the sign of the number * 2. An optional field width in decimal * 3. An optional precision, specified as a '.' followed * by a decimal number. * 4. A format specifier * * For Format: * @]: close_box * @,: print_cut * @ : print_space * @\n: force_newline * @;: print_break * @?: print_flush * @.: print_newline * @: print_length * @@: plain @ char * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2001-2004 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Argument module. *) module type PrintfArgsSig = sig (* Some buffer type *) type t type value (* The printers *) val print_char : t -> char -> unit val print_string : t -> string -> unit (* Format functions *) val open_box : t -> int -> unit val open_hbox : t -> unit val open_vbox : t -> int -> unit val open_hvbox : t -> int -> unit val open_hovbox : t -> int -> unit val close_box : t -> unit val print_cut : t -> unit val print_space : t -> unit val force_newline : t -> unit val print_break : t -> int -> int -> unit val print_flush : t -> unit val print_newline : t -> unit val bool_of_value : t -> value -> bool val int_of_value : t -> value -> int val char_of_value : t -> value -> char val float_of_value : t -> value -> float val string_of_value : t -> value -> string val print_value : t -> value -> unit val apply1 : t -> value -> unit val apply2 : t -> value -> value -> unit val exit : t -> value list -> value end (* * What this module provides. *) module type PrintfSig = sig (* Some buffer type *) type t type value val fprintf : t -> string -> value list -> value end (* * Here's the actual printf module. *) module MakePrintf (Args : PrintfArgsSig) : PrintfSig with type t = Args.t with type value = Args.value = struct (************************************************************************ * TYPES ************************************************************************) type t = Args.t type value = Args.value (* * Field flags. *) type format_flag = AlternateForm | ZeroPad | LeftAdjust | LeaveBlank | AlwaysSign (* * Types of int printing. *) type int_spec = UnsignedOctal | SignedDecimal | UnsignedDecimal | UnsignedHexLowercase | UnsignedHexUppercase (* * Types of float printing. *) type float_spec = FloatNormal | FloatExp | FloatBest (* * Field specifiers. *) type field_info = { field_flags : format_flag list; field_width : int option; field_precision : int option } (************************************************************************ * BASE PRINTERS ************************************************************************) (* * Most of these basic printers just pass out the print * request to C functions. The first string is the format * string to be passed to printf. *) external ext_print_char : string -> char -> string = "ml_print_char" external ext_print_int : string -> int -> string = "ml_print_int" external ext_print_float : string -> float -> string = "ml_print_float" external ext_print_string : string -> string -> string = "ml_print_string" (* * Get the next argument. *) let next_arg = function arg :: args -> args, arg | [] -> raise (Failure "arity") (* * Base printers. *) let rec print_bool (buf : Args.t) (args : Args.value list) i len s fmt info = let args, arg = next_arg args in let b = Args.bool_of_value buf arg in let str = ext_print_string fmt (if b then "true" else "false") in Args.print_string buf str; print_loop buf args i len s and print_char buf args i len s fmt info = let args, arg = next_arg args in let c = Args.char_of_value buf arg in let str = ext_print_char fmt c in Args.print_string buf str; print_loop buf args i len s and print_int buf args i len s fmt info spec = let args, arg = next_arg args in let j = Args.int_of_value buf arg in let str = ext_print_int fmt j in Args.print_string buf str; print_loop buf args i len s and print_float buf args i len s fmt info spec = let args, arg = next_arg args in let x = Args.float_of_value buf arg in let str = ext_print_float fmt x in Args.print_string buf str; print_loop buf args i len s and print_string buf args i len s fmt info = let args, arg = next_arg args in let str = Args.string_of_value buf arg in let str = ext_print_string fmt str in Args.print_string buf str; print_loop buf args i len s and print_value buf args i len s fmt info = let args, arg = next_arg args in Args.print_value buf arg; print_loop buf args i len s and print_user1 buf args i len s fmt info = let args, arg = next_arg args in Args.apply1 buf arg; print_loop buf args i len s and print_user2 buf args i len s fmt info = let args, arg1 = next_arg args in let args, arg2 = next_arg args in Args.apply2 buf arg1 arg2; print_loop buf args i len s and print_percent buf args i len s fmt info = let str = ext_print_string fmt "%" in Args.print_string buf str; print_loop buf args i len s (* * Parse the format specification. *) and print_format buf (args : Args.value list) index len s = (* * Read off any flag characters. *) let rec parse_flags flags i = if i = len then Args.exit buf args else let c = s.[i] in match c with '#' -> parse_flags (AlternateForm :: flags) (succ i) | '0' -> parse_flags (ZeroPad :: flags) (succ i) | '-' -> parse_flags (LeftAdjust :: flags) (succ i) | ' ' -> parse_flags (LeaveBlank :: flags) (succ i) | '+' -> parse_flags (AlwaysSign :: flags) (succ i) | '1'..'9' -> parse_field_width flags 0 i | '.' -> parse_precision flags None 0 (succ i) | _ -> parse_spec flags None None i (* * Read off the field width. *) and parse_field_width flags width i = if i = len then Args.exit buf args else let c = s.[i] in match c with '0'..'9' -> parse_field_width flags (width * 10 + Char.code c - Char.code '0') (succ i) | '.' -> parse_precision flags (Some width) 0 (succ i) | _ -> parse_spec flags (Some width) None i (* * Parse the precision specifier. *) and parse_precision flags width pre i = if i = len then Args.exit buf args else let c = s.[i] in match c with '0'..'9' -> parse_precision flags width (pre * 10 + Char.code c - Char.code '0') (succ i) | _ -> parse_spec flags width (Some pre) i (* * Finally we have the format specifier. *) and parse_spec flags width pre i = if i = len then Args.exit buf args else let info = { field_flags = List.rev flags; field_width = width; field_precision = pre } in let c = s.[i] in let i = succ i in let fmt = String.sub s index (i - index) in match c with 'd' | 'i' -> print_int buf args i len s fmt info SignedDecimal | 'u' -> print_int buf args i len s fmt info UnsignedDecimal | 'x' -> print_int buf args i len s fmt info UnsignedHexLowercase | 'X' -> print_int buf args i len s fmt info UnsignedHexUppercase | 'o' -> print_int buf args i len s fmt info UnsignedOctal | 's' -> print_string buf args i len s fmt info | 'c' -> print_char buf args i len s fmt info | 'f' -> print_float buf args i len s fmt info FloatNormal | 'e' | 'E' -> print_float buf args i len s fmt info FloatExp | 'g' | 'G' -> print_float buf args i len s fmt info FloatBest | 'b' -> print_bool buf args i len s fmt info | 'a' -> print_user2 buf args i len s fmt info | 't' -> print_user1 buf args i len s fmt info | 'v' -> print_value buf args i len s fmt info | '%' -> print_percent buf args i len s fmt info | _ -> raise (Invalid_argument "parse_spec") in parse_flags [] (succ index) (************************************************************************ * FORMAT CONTROL ************************************************************************) (* * Parse the format string. *) and print_rformat buf args index len s = (* * Look for some options in format, * separated by white space. *) let scratch = Buffer.create 19 in let rec parse_options i cont = if i = len then cont i [] else let c = s.[i] in if c = '<' then parse_args [] (succ i) cont else cont i [] and parse_args options i cont = if i = len then cont i (List.rev options) else let c = s.[i] in match c with ' ' | '\t' | '\n' -> if Buffer.length scratch <> 0 then let s = Buffer.contents scratch in Buffer.clear scratch; parse_args (s :: options) (succ i) cont else parse_args options (succ i) cont | '>' -> cont (succ i) (List.rev options) | c -> Buffer.add_char scratch c; parse_args options (succ i) cont in (* * Now we should have the spec. *) let parse_spec i = if i = len then Args.exit buf args else let c = s.[i] in let i = succ i in match c with '[' -> parse_options i (fun i options -> let box, indent = match options with box :: indent :: _ -> box, int_of_string indent | [box] -> box, 0 | [] -> "b", 0 in let _ = match box with "h" -> Args.open_hbox buf | "v" -> Args.open_vbox buf indent | "hv" -> Args.open_hvbox buf indent | "hov" -> Args.open_hovbox buf indent | "b" -> Args.open_box buf indent | _ -> raise (Invalid_argument ("print_rformat: bogus box type \"" ^ String.escaped box ^ "\"")) in print_loop buf args i len s) | ']' -> Args.close_box buf; print_loop buf args i len s | ',' -> Args.print_cut buf; print_loop buf args i len s | ' ' -> Args.print_space buf; print_loop buf args i len s | '\n' -> Args.force_newline buf; print_loop buf args i len s | ';' -> parse_options i (fun i options -> let nspaces, off = match options with nspaces :: off :: _ -> int_of_string nspaces, int_of_string off | [nspaces] -> int_of_string nspaces, 0 | [] -> 0, 0 in Args.print_break buf nspaces off; print_loop buf args i len s) | '?' -> Args.print_flush buf; print_loop buf args i len s | '.' -> Args.print_newline buf; print_loop buf args i len s | c -> Args.print_char buf c; print_loop buf args i len s in parse_spec (succ index) (* * The is the main printf function. *) and print_loop buf args i len s = if i = len then Args.exit buf args else match s.[i] with '%' -> print_format buf args i len s | '@' -> print_rformat buf args i len s | c -> Args.print_char buf c; print_loop buf args (succ i) len s (* * Outermost printf function. *) let fprintf buf s args = print_loop buf args 0 (String.length s) s end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/util/ocaml_patch_unix.ml0000664000152300015230000000241710456240612016552 0ustar jyhjyh(* * Patch the OCaml distribution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Unix.create_process works. *) let create_process = Unix.create_process (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/util/omake_wild.ml0000664000152300015230000000717710630065660015362 0ustar jyhjyh(* * Some utilities, mostly on filenames. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_printf (* * The wildcard character. *) let wild_char = '%' let wild_string = "%" (* * We have very simple regular expressions of the form, where * a single % is a wildcard. *) type wild_in_patt = int * string * int * string type wild_out_patt = string list type wild_subst = int * string type wild_value = string (* * Printing. *) let pp_print_wild_in buf (_, s1, _, s2) = fprintf buf "%s%c%s" s1 wild_char s2 let pp_print_wild_out buf strs = pp_print_string buf (String.concat wild_string strs) (* * Check if a string is a wild pattern. *) let is_wild s = String.contains s wild_char (* * Compile a pattern to make searching easier. *) let wild_compile_in s = let len = String.length s in try let index = String.index s wild_char in let prefix = String.sub s 0 index in let slen = len - index - 1 in let suffix = String.sub s (succ index) slen in if String.contains suffix wild_char then raise (Failure "Only one wildcard symbol % allowed in a match pattern"); index, prefix, slen, suffix with Not_found -> raise (Invalid_argument "Omake_wild.wild_compile") let wild_compile_out s = Lm_string_util.split wild_string s (* * Perform a match. *) let rec string_match s1 off s2 len i = if i = len then true else s1.[off + i] = s2.[i] && string_match s1 off s2 len (succ i) (* * Does the node match? *) let wild_matches (plen, prefix, slen, suffix) s = let len = String.length s in len >= plen + slen && string_match s 0 prefix plen 0 && string_match s (len - slen) suffix slen 0 (* * Match the wild pattern, and return a subst. *) let wild_match (plen, prefix, slen, suffix) s = let len = String.length s in if len >= plen + slen && string_match s 0 prefix plen 0 && string_match s (len - slen) suffix slen 0 then let len = len - plen - slen in Some (len, String.sub s plen len) else None (* * Get the substitution value. *) let wild_core (_, s) = s let wild_of_core s = String.length s, s (* * Perform a substitution. *) let wild_subst_in (slen, s) (plen, prefix, sflen, suffix) = let res = String.create (slen + plen + sflen) in String.blit prefix 0 res 0 plen; String.blit s 0 res plen slen; String.blit suffix 0 res (plen + slen) sflen; res let wild_subst (_, s) strs = String.concat s strs (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/util/omake_readline.mli0000664000152300015230000000334510576045436016360 0ustar jyhjyh(* * Simple readline implementation. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) val flush : unit -> unit val isatty : unit -> bool val readline : string -> string val readstring : string -> string -> int -> int -> int val set_interactive : bool -> unit val is_interactive : unit -> bool val where : unit -> int val history : unit -> string array val load : string -> unit val save : unit -> unit val set_length : int -> unit val set_directory : string -> unit val prompt_invisible: (string * string) option (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/0000775000152300015230000000000010660137227012340 5ustar jyhjyhomake-0.9.8.5/src/ir/omake_var.ml0000664000152300015230000001765310654713446014660 0ustar jyhjyh(* * Virtual identifiers for various things in files. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_hash open Lm_printf open Lm_symbol open Lm_location open Omake_ir open Omake_node open Omake_util open Omake_state open Omake_symbol open Omake_print_util (* * These are all builtin variables. * * ZZZ: in 0.9.8 they are VarGlobal. *) let loc = bogus_loc "Builtin" let create_pervasives_var v = VarGlobal (loc, v) (* * Generally useful virtual variables. *) let argv_var = create_pervasives_var argv_sym let options_var = create_pervasives_var options_object_sym let explicit_target_var = create_pervasives_var explicit_target_sym let wild_var = create_pervasives_var wild_sym let cwd_var = create_pervasives_var cwd_sym let stdlib_var = create_pervasives_var stdlib_sym let stdroot_var = create_pervasives_var stdroot_sym let ostype_var = create_pervasives_var ostype_sym let omakepath_var = create_pervasives_var omakepath_sym let path_var = create_pervasives_var path_sym let auto_rehash_var = create_pervasives_var auto_rehash_sym let printexitvalue_var = create_pervasives_var printexitvalue_sym let system_var = create_pervasives_var system_sym let oshell_var = create_pervasives_var oshell_sym let cdpath_var = create_pervasives_var cdpath_sym let history_file_var = create_pervasives_var history_file_sym let history_length_var = create_pervasives_var history_length_sym let targets_var = create_pervasives_var targets_sym let build_summary_var = create_pervasives_var build_summary_sym let prompt_var = create_pervasives_var prompt_sym let ignoreeof_var = create_pervasives_var ignoreeof_sym let exit_on_uncaught_exception_var = create_pervasives_var exit_on_uncaught_exception_sym let abort_on_command_error_var = create_pervasives_var abort_on_command_error_sym let create_subdirs_var = create_pervasives_var create_subdirs_sym let allow_empty_subdirs_var = create_pervasives_var allow_empty_subdirs_sym let glob_options_var = create_pervasives_var glob_options_sym let glob_ignore_var = create_pervasives_var glob_ignore_sym let glob_allow_var = create_pervasives_var glob_allow_sym let scanner_mode_var = create_pervasives_var scanner_mode_sym let stdin_var = create_pervasives_var stdin_sym let stdout_var = create_pervasives_var stdout_sym let stderr_var = create_pervasives_var stderr_sym let star_var = create_pervasives_var star_sym let at_var = create_pervasives_var at_sym let gt_var = create_pervasives_var gt_sym let plus_var = create_pervasives_var plus_sym let hat_var = create_pervasives_var hat_sym let lt_var = create_pervasives_var lt_sym let amp_var = create_pervasives_var amp_sym let braces_var = create_pervasives_var braces_sym let fs_var = create_pervasives_var fs_sym let rs_var = create_pervasives_var rs_sym let filename_var = create_pervasives_var filename_sym let fnr_var = create_pervasives_var fnr_sym let parse_loc_var = create_pervasives_var parse_loc_sym let zero_var = create_pervasives_var zero_sym let nf_var = create_pervasives_var nf_sym let object_var = create_pervasives_var object_sym let int_object_var = create_pervasives_var int_object_sym let float_object_var = create_pervasives_var float_object_sym let string_object_var = create_pervasives_var string_object_sym let sequence_object_var = create_pervasives_var sequence_object_sym let array_object_var = create_pervasives_var array_object_sym let fun_object_var = create_pervasives_var fun_object_sym let rule_object_var = create_pervasives_var rule_object_sym let file_object_var = create_pervasives_var file_object_sym let dir_object_var = create_pervasives_var dir_object_sym let body_object_var = create_pervasives_var body_object_sym let in_channel_object_var = create_pervasives_var in_channel_object_sym let out_channel_object_var = create_pervasives_var out_channel_object_sym let in_out_channel_object_var = create_pervasives_var in_out_channel_object_sym let lexer_object_var = create_pervasives_var lexer_object_sym let parser_object_var = create_pervasives_var parser_object_sym let location_object_var = create_pervasives_var location_object_sym let map_object_var = create_pervasives_var map_object_sym let shell_object_var = create_pervasives_var shell_object_sym let target_object_var = create_pervasives_var target_object_sym let stat_object_var = create_pervasives_var stat_object_sym let passwd_object_var = create_pervasives_var passwd_object_sym let group_object_var = create_pervasives_var group_object_sym let pipe_object_var = create_pervasives_var pipe_object_sym let select_object_var = create_pervasives_var pipe_object_sym let runtime_exception_var = create_pervasives_var runtime_exception_sym let var_object_var = create_pervasives_var var_object_sym let extends_var = create_pervasives_var extends_sym let omakeflags_var = create_pervasives_var omakeflags_sym let omakeargv_var = create_pervasives_var omakeargv_sym let printexitvalue_var = create_pervasives_var printexitvalue_sym let loc_field_var = VarThis (loc, loc_sym) let builtin_field_var = VarThis (loc, builtin_sym) let map_field_var = VarThis (loc, map_sym) let current_prec_field_var = VarThis (loc, current_prec_sym) let lexer_field_var = VarThis (loc, lexer_sym) let file_var = VarPrivate (loc, file_sym) let file_id_var = VarPrivate (loc, file_id_sym) (* * Special handling for small numeric vars. *) let create_numeric_var = let numeric_vars = ref [||] in let resize i = let size = (i + 1) * 2 in let table = Array.create size wild_var in for j = 0 to pred size do table.(j) <- create_pervasives_var (Lm_symbol.add (string_of_int j)) done; numeric_vars := table; table in let get i = let table = !numeric_vars in if i < Array.length table then table.(i) else (resize i).(i) in get (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_node_sig.ml0000664000152300015230000001322510622151243015630 0ustar jyhjyh(* * Signatures for the Dir, Node modules. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_marshal (* * A directory node. *) module type DirSig = sig type t (* * Some standard directories. *) val lib : t val home : t val root : t (* * Current working directory. *) val cwd : unit -> t val reset_cwd : unit -> unit (* * A new directory. *) val chdir : t -> string -> t (* * Name of this directory relative to another directory. *) val name : t -> t -> string (* * Get the full name relative to the cwd. *) val fullname : t -> string (* * Get the absolute name. * Try not to use this, except for printing. *) val absname : t -> string (* * Check if two directories are equal. *) val equal : t -> t -> bool val compare : t -> t -> int (* * Marshaling. *) val marshal : t -> msg val unmarshal : msg -> t end (* * Mount flags. *) type mount_option = MountCopy | MountLink (* * A "mount" specifies a virtual search path for files. * It doesn't specify directories. *) type 'a poly_mount_info = { mount_file_exists : 'a -> bool; mount_file_reset : 'a -> unit; mount_is_dir : 'a -> bool; mount_stat : 'a -> Unix.LargeFile.stats; mount_digest : 'a -> string option } (* * A "mount" specifies a virtual search path for files. * It doesn't specify directories. *) module type MountSig = sig type node type dir type t (* * Default mount. *) val empty : t (* * Virtual mount of one directory onto another. * mount src dst copy * src: source directory * dst: target directory * copy: if true, auto-copy the files from the source to the target *) val mount : t -> mount_option list -> dir -> dir -> t end (* * Generic kinds of nodes. *) type node_kind = NodePhony | NodeOptional | NodeExists | NodeSquashed | NodeScanner | NodeNormal type phony_ok = PhonyOK (* It is OK to return a phony node *) | PhonyExplicit (* It is OK to return a phony node only when an explicit syntax was used *) | PhonyProhibited (* Returning phony nodes is not allowed *) (* * A file node. There are two kinds of nodes. * "Phony" nodes do not correspond to files. * Regular file nodes have a directory and * filename part. *) module type NodeSig = sig type pre type t type dir type mount (* * Build a regular filename from a directory and string. * It is legal for the string to contain / chars. *) val create_node : t poly_mount_info -> mount -> dir -> string -> t (* * A phony node does not correspond to a file. *) val create_phony_global : string -> t (* * A phony entry in a directory. The string is not a path. *) val create_phony_dir : dir -> string -> t val create_phony_chdir : t -> dir -> t (* * Build a phony node based on a file. *) val create_phony_node : t -> string -> t (* * Escape a node. *) val create_escape : node_kind -> t -> t (* * What kind of node is this? *) val kind : t -> node_kind (* * Get the node, without any modifiers. *) val core : t -> t (* * Get the core node if the node is squashed. *) val unsquash : t -> t (* * Does the node always exist? *) val always_exists : t -> bool (* * Is this node phony? * This is derivable from the "kind" function. *) val is_phony : t -> bool (* * Is this node a real file? * This is derivable from the "kind" function. *) val is_real : t -> bool (* * Get the filename relative to a directory, * in escaped format. *) val name : dir -> t -> string (* * Get the filename relative to the cwd, in escaped format. *) val fullname : t -> string (* * Get the absolute name in escaped format. *) val absname : t -> string (* * Equality testing. *) val equal : t -> t -> bool val compare : t -> t -> int (* * Just the tail. *) val tail : t -> string (* * Directory of the node. *) val dir : t -> dir (* * Hash code for a node. *) val hash : t -> int (* * In some cases, you may need to use a directory * where a node is expected. This produces the node * dir/. *) val node_of_dir : dir -> t (* * Marshaling. *) val marshal : t -> msg val unmarshal : msg -> t (* * An internal representation of a node (optimization for the set of phony nodes) *) val dest : t -> pre end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_ir_print.ml0000664000152300015230000003163710647706031015706 0ustar jyhjyh(* * Print IR expressions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 MetaPRL Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Omake_ir open Omake_node open Omake_ir_util open Omake_node_sig open Omake_print_util let print_location = Omake_ast_print.print_location let string_override s pp_fun complete buf arg = if complete then pp_fun true buf arg else pp_print_string buf s (* * Match kind. *) let pp_print_match_kind out kind = let s = match kind with MatchWild -> "switch" | MatchRegex -> "match" in pp_print_string out s (* * Print the evaluation strategy. *) let pp_print_strategy buf s = match s with LazyApply -> pp_print_char buf '\'' | EagerApply -> pp_print_char buf ',' | NormalApply -> () (* * Arities. *) let pp_print_arity buf arity = match arity with ArityRange (lower, upper) -> fprintf buf "%d..%d" lower upper | ArityExact i -> pp_print_int buf i | ArityAny -> pp_print_string buf "varargs" | ArityNone -> pp_print_int buf 0 (* * Print a list of symbols. *) let rec pp_print_symbol_list buf sl = match sl with [s] -> pp_print_symbol buf s | [] -> () | s :: sl -> fprintf buf "%a, %a" pp_print_symbol s pp_print_symbol_list sl (* * Print a variable definition kind. *) let pp_print_var_def_kind buf kind = let s = match kind with VarDefNormal -> "=" | VarDefAppend -> "+=" in pp_print_string buf s (* * Scope. *) let pp_print_var_scope buf kind = let s = match kind with VarScopePrivate -> "private." | VarScopeThis -> "this." | VarScopeVirtual -> "public." | VarScopeGlobal -> "global." in pp_print_string buf s (* * Variables. *) let pp_print_var_info buf v = match v with VarPrivate (_, v) -> fprintf buf "private.%a" (**) pp_print_symbol v | VarThis (_, v) -> fprintf buf "this.%a" (**) pp_print_symbol v | VarVirtual (_, v) -> fprintf buf "public.%a" (**) pp_print_symbol v | VarGlobal (_, v) -> fprintf buf "global.%a" (**) pp_print_symbol v (* * Print the export info. *) let pp_print_export_item buf item = match item with ExportRules -> pp_print_string buf ".RULE" | ExportPhonies -> pp_print_string buf ".PHONY" | ExportVar v -> pp_print_var_info buf v let rec pp_print_export_items buf items = match items with [item] -> pp_print_export_item buf item | item :: items -> fprintf buf "%a@ %a" pp_print_export_item item pp_print_export_items items | [] -> () let pp_print_export_info buf info = match info with ExportNone -> () | ExportAll -> fprintf buf "@ export " | ExportList items -> fprintf buf "@ @[export %a@]" pp_print_export_items items (* * Print a string expression. *) let rec pp_print_string_exp complete buf s = match s with NoneString _ -> fprintf buf "" | ConstString (_, s) -> fprintf buf "\"%s\"" (String.escaped s) | KeyApplyString (_, strategy, s) -> fprintf buf "$%a|%s|" pp_print_strategy strategy s | VarString (_, v) -> fprintf buf "`%a" pp_print_var_info v | ApplyString (_, strategy, v, []) -> fprintf buf "@[$%a(%a)@]" (**) pp_print_strategy strategy pp_print_var_info v | ApplyString (_, strategy, v, args) -> fprintf buf "@[$%a(%a %a)@]" (**) pp_print_strategy strategy pp_print_var_info v (pp_print_string_exp_list complete) args | SuperApplyString (_, strategy, super, v, []) -> fprintf buf "@[$%a(%a::%a)@]" (**) pp_print_strategy strategy pp_print_symbol super pp_print_symbol v | SuperApplyString (_, strategy, super, v, args) -> fprintf buf "@[$%a(%a::%a %a)@]" (**) pp_print_strategy strategy pp_print_symbol super pp_print_symbol v (pp_print_string_exp_list complete) args | MethodApplyString (_, strategy, v, vl, []) -> fprintf buf "@[$%a(%a.%a)@]" (**) pp_print_strategy strategy pp_print_var_info v pp_print_method_name vl | MethodApplyString (_, strategy, v, vl, args) -> fprintf buf "@[$%a(%a.%a %a)@]" (**) pp_print_strategy strategy pp_print_var_info v pp_print_method_name vl (pp_print_string_exp_list complete) args | SequenceString (_, sl) -> fprintf buf "@[(%a)@]" (**) (pp_print_string_exp_list complete) sl | ArrayOfString (_, s) -> fprintf buf "@[(array-of-string@ %a)@]" (**) (pp_print_string_exp complete) s | ArrayString (_, sl) -> fprintf buf "@[[|%a|]@]" (**) (pp_print_string_exp_list complete) sl | QuoteString (_, sl) -> fprintf buf "@[(quote %a)@]" (**) (pp_print_string_exp_list complete) sl | QuoteStringString (_, c, sl) -> fprintf buf "@[(quote %c%a%c)@]" (**) c (pp_print_string_exp_list complete) sl c | ObjectString (_, e, export) -> if complete then fprintf buf "@[object@ %a%a@]" (**) (pp_print_exp_list complete) e pp_print_export_info export else pp_print_string buf "" | BodyString (_, e, export) -> if complete then fprintf buf "@[body@ %a%a@]" (**) (pp_print_exp_list complete) e pp_print_export_info export else pp_print_string buf "" | ExpString (_, e, export) -> if complete then fprintf buf "@[exp@ %a%a@]" (**) (pp_print_exp_list complete) e pp_print_export_info export else pp_print_string buf "" | CasesString (_, cases) -> if complete then begin fprintf buf "@[cases:"; List.iter (fun (v, e1, e2, export) -> fprintf buf "@ @[%a %a:@ %a%a@]" (**) pp_print_symbol v (pp_print_string_exp complete) e1 (pp_print_exp_list complete) e2 pp_print_export_info export) cases; fprintf buf "@]" end else pp_print_string buf "" | ThisString loc -> pp_print_string buf "$" and pp_print_string_exp_list complete buf sl = match sl with [s] -> pp_print_string_exp complete buf s | [] -> () | s :: sl -> fprintf buf "%a,@ %a" (pp_print_string_exp complete) s (pp_print_string_exp_list complete) sl (* * Print an expression. *) and pp_print_exp complete buf e = if complete && !print_location then fprintf buf "<%a>" pp_print_location (loc_of_exp e); match e with LetVarExp (_, v, vl, kind, s) -> fprintf buf "@[%a%a %a@ %a@]" (**) pp_print_var_info v pp_print_method_name vl pp_print_var_def_kind kind (pp_print_string_exp complete) s | LetFunExp (_, v, vl, params, el, export) -> fprintf buf "@[%a%a(%a) =@ %a%a@]" (**) pp_print_var_info v pp_print_method_name vl pp_print_symbol_list params (string_override "<...>" pp_print_exp_list complete) el pp_print_export_info export | LetObjectExp (_, v, vl, s, el, export) -> fprintf buf "@[%a%a. =@ extends %a@ %a%a@]" (**) pp_print_var_info v pp_print_method_name vl (pp_print_string_exp complete) s (string_override "<...>" pp_print_exp_list complete) el pp_print_export_info export | LetThisExp (_, e) -> fprintf buf "@[ =@ %a@]" (pp_print_string_exp complete) e | ShellExp (_, e) -> fprintf buf "@[shell(%a)@]" (pp_print_string_exp complete) e | IfExp (_, cases) -> if complete then begin fprintf buf "@[if"; List.iter (fun (s, el, export) -> fprintf buf "@ @[| %a ->@ %a%a@]" (**) (pp_print_string_exp complete) s (pp_print_exp_list complete) el pp_print_export_info export) cases; fprintf buf "@]" end else pp_print_string buf "" | SequenceExp (_, el) -> fprintf buf "@[sequence@ %a@]" (**) (pp_print_exp_list complete) el | SectionExp (_, s, el, export) -> fprintf buf "@[section %a@ %a%a@]" (**) (pp_print_string_exp complete) s (string_override "<...>" pp_print_exp_list complete) el pp_print_export_info export | OpenExp (_, nodes) -> fprintf buf "@[open"; List.iter (fun node -> fprintf buf "@ %a" pp_print_node node) nodes; fprintf buf "@]" | IncludeExp (_, s, commands) -> fprintf buf "@[include %a:%a@]" (**) (pp_print_string_exp complete) s (pp_print_commands complete) commands | ApplyExp (_, v, args) -> fprintf buf "@[%a(%a)@]" (**) pp_print_var_info v (pp_print_string_exp_list complete) args | SuperApplyExp (_, super, v, args) -> fprintf buf "@[%a::%a(%a)@]" (**) pp_print_symbol super pp_print_symbol v (pp_print_string_exp_list complete) args | MethodApplyExp (_, v, vl, args) -> fprintf buf "@[%a.%a(%a)@]" (**) pp_print_var_info v pp_print_method_name vl (pp_print_string_exp_list complete) args | ReturnBodyExp (_, el) -> fprintf buf "@[return-body@ %a@]" (string_override "<...>" pp_print_exp_list complete) el | StringExp (_, s) -> fprintf buf "string(%a)" (pp_print_string_exp complete) s | ReturnExp (_, s) -> fprintf buf "return(%a)" (pp_print_string_exp complete) s | ReturnSaveExp _ -> pp_print_string buf "return-current-file" | ReturnObjectExp (_, names) -> fprintf buf "@[return-current-object"; List.iter (fun v -> fprintf buf "@ %a" pp_print_symbol v) names; fprintf buf "@]" | KeyExp (_, v) -> fprintf buf "$|%s|" v | LetKeyExp (_, v, kind, s) -> fprintf buf "@[$|%s| %a@ %a@]" (**) v pp_print_var_def_kind kind (pp_print_string_exp complete) s | StaticExp (_, node, key, el) -> fprintf buf "@[static(%a.%a):@ %a@]" (**) pp_print_node node pp_print_symbol key (string_override "<...>" pp_print_exp_list complete) el and pp_print_exp_list complete buf el = match el with [e] -> pp_print_exp complete buf e | e :: el -> pp_print_exp complete buf e; pp_print_space buf (); pp_print_exp_list complete buf el | [] -> () and pp_print_commands complete buf el = List.iter (fun e -> fprintf buf "@ %a" (pp_print_string_exp complete) e) el (* * Print simple parts, abbreviating others as "" *) let pp_print_exp_list_simple = pp_print_exp_list false (* * The complete printers. *) let pp_print_exp = pp_print_exp true let pp_print_string_exp = pp_print_string_exp true let pp_print_string_exp_list = pp_print_string_exp_list true let pp_print_exp_list = pp_print_exp_list true let pp_print_prog buf el = fprintf buf "@[%a@]" pp_print_exp_list el (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_ir_util.mli0000664000152300015230000000236010456240612015663 0ustar jyhjyh(* * Utilities on IR. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_location open Omake_ir val loc_of_exp : exp -> loc (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_state.ml0000664000152300015230000001270710646754230015200 0ustar jyhjyh(* * Configuration variables. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_filename_util (* * Error codes for various actions. *) let signal_error_code = 127 let fork_error_code = 126 let internal_error_code = 125 let deadlock_error_code = 124 let exn_error_code = 123 let scanner_error_code = 122 (* * Name of the database. *) let db_name = ".omakedb" (* * Name of the makefiles. *) let makefile_name = "OMakefile" let makeroot_name = "OMakeroot" let omake_file_suffix = ".om" let makeroot_short_name = "Root" ^ omake_file_suffix let omake_dir_ref = ref None let cache_dir_ref = ref None let always_use_dotomake = ref false let set_omake_dir dir = let () = try Unix.mkdir dir 0o777 with Unix.Unix_error _ -> () in let dir = if Filename.is_relative dir then try Filename.concat (Unix.getcwd ()) dir with Unix.Unix_error _ -> dir else dir in omake_dir_ref := Some dir; cache_dir_ref := None (* * Directories. *) let lib_dir, lib_dir_reason = let key_name = "SOFTWARE\\MetaPRL\\OMake" in let field_name = "OMAKELIB" in try Sys.getenv field_name, "OMAKELIB environment variable" with Not_found -> try Lm_unix_util.registry_find Lm_unix_util.HKEY_CURRENT_USER key_name field_name, "HKEY_CURRENT_USER\\" ^ key_name ^ "\\" ^ field_name ^ " registry key" with Not_found -> try Lm_unix_util.registry_find Lm_unix_util.HKEY_LOCAL_MACHINE key_name field_name, "HKEY_LOCAL_MACHINE\\" ^ key_name ^ "\\" ^ field_name ^ " registry key" with Not_found -> Omake_magic.lib_dir, "" let home_dir = Lm_unix_util.home_dir let application_dir = Lm_unix_util.application_dir let omakeinit_file = Filename.concat home_dir ".omakeinit" let omakerc_file = Filename.concat home_dir ".omakerc" let oshrc_file = Filename.concat home_dir ".oshrc" let omake_dir () = match !omake_dir_ref with Some dir -> dir | None -> let dirname = Filename.concat application_dir ".omake" in set_omake_dir dirname; dirname (* * Cache directory is separate for each host. *) let cache_dir () = match !cache_dir_ref with Some dir -> dir | None -> let dirname = Filename.concat (omake_dir ()) "cache" in let () = try Unix.mkdir dirname 0o777 with Unix.Unix_error _ -> () in cache_dir_ref := Some dirname; dirname (* Create cache file hierarchy under the HOME directory *) let cache_file dir name = let dir = match Lm_filename_util.filename_string dir with AbsolutePath (DriveRoot c, name) -> Filename.concat (String.make 1 c) name | AbsolutePath (NullRoot, name) -> name | RelativePath path -> raise (Invalid_argument ("Omake_state.cache_file: received a relative path: " ^ path)) in let dirname = Filename.concat (cache_dir ()) dir in Lm_filename_util.mkdirhier dirname 0o777; Filename.concat dirname name let open_cache_file dir name = let filename = cache_file dir name in filename, Lm_unix_util.openfile filename [Unix.O_RDWR; Unix.O_CREAT] 0o666 let get_cache_file dir name = if !always_use_dotomake then open_cache_file dir name else let filename = Filename.concat dir name in try filename, Lm_unix_util.openfile filename [Unix.O_RDWR; Unix.O_CREAT] 0o666 with Unix.Unix_error _ -> open_cache_file dir name (* * XXX: TODO: We use lockf, but it is not NFS-safe if filesystem is mounted w/o locking. * Also, lockf is not always supported, so we may raise an exception for a "wrong" reason. * May be we should implement a "sloppy" locking as well - see * also the mailing list discussions: * - http://lists.metaprl.org/pipermail/omake/2005-November/thread.html#744 * - http://lists.metaprl.org/pipermail/omake-devel/2005-November/thread.html#122 *) let lock_file fd mode = Lm_unix_util.lockf fd mode 0 let db_file () = Filename.concat (omake_dir ()) db_name let history_file () = Filename.concat (omake_dir ()) "osh_history" (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_install.mli0000664000152300015230000000241610456240612015664 0ustar jyhjyh(* * Functions for installing OMakefiles. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) val install_current : bool -> unit val install_subdirs : bool -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_command.ml0000664000152300015230000000644410456240612015470 0ustar jyhjyh(* * Command utilities. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Fmarshal open Omake_node open Omake_marshal open Omake_ir_print open Omake_shell_type open Omake_command_type (************************************************************************ * Argument collapsing. *) type arg_buffer = arg_string list let arg_buffer_empty = [] let arg_buffer_add_string buf s = ArgString s :: buf let arg_buffer_add_data buf s = ArgData s :: buf let rec collect_string buf args = match args with ArgString s :: args -> Buffer.add_string buf s; collect_string buf args | _ -> args let rec collect_data buf args = match args with ArgData s :: args -> Buffer.add_string buf s; collect_data buf args | _ -> args let arg_buffer_contents args = let buf = Buffer.create 32 in let rec collect args' args = match args with ArgString s :: ((ArgString _ :: _) as tl) -> Buffer.add_string buf s; let args = collect_string buf tl in let s = Buffer.contents buf in Buffer.clear buf; collect (ArgString s :: args') args | ArgData s :: ((ArgData _ :: _) as tl) -> Buffer.add_string buf s; let args = collect_data buf tl in let s = Buffer.contents buf in Buffer.clear buf; collect (ArgData s :: args') args | h :: args -> collect (h :: args') args | [] -> List.rev args' in collect [] (List.rev args) (************************************************************************ * Command utilities *) (* * Parse the command lines from the strings. *) let parse_command venv dir target loc flags line = { command_loc = loc; command_dir = dir; command_target = target; command_flags = flags; command_venv = venv; command_inst = line } let parse_commands venv dir target loc lines = List.map (fun (flags, line) -> parse_command venv dir target loc flags line) lines (* * Allow output in the command. *) let command_allow_output command = { command with command_flags = AllowOutputFlag :: command.command_flags } (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_virtual_id.mli0000664000152300015230000000233010613731063016353 0ustar jyhjyh(* * Virtual identifiers to identify various things in files. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_pos.mli0000664000152300015230000000227010654713446015027 0ustar jyhjyh(* * Positions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Omake_value_type type pos = Omake_value_type.pos val pp_print_exn : formatter -> omake_error -> unit module MakePos (Name : sig val name : string end) : PosSig (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/ir/OMakefile0000664000152300015230000000121110622151243014102 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave ../util ../exec ../magic ../ast FILES[] = omake_options omake_symbol omake_state omake_node_type omake_node_sig omake_node omake_virtual_id omake_install omake_ir omake_var omake_ir_util omake_ir_print omake_ir_free_vars omake_lexer omake_parser omake_value_type omake_command_type omake_value_print omake_pos omake_shell_type omake_command omake_cache_type omake_cache MakeOCamlLibrary(ir, $(FILES)) clean: $(CLEAN) # # Generate the Makefile # MakeOCamlDepend($(FILES), magic.cma) MakeMakefile() omake-0.9.8.5/src/ir/omake_ir_util.ml0000664000152300015230000000354010616215257015520 0ustar jyhjyh(* * Utilities for IR expressions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_ir let loc_of_exp e = match e with LetVarExp (loc, _, _, _, _) | KeyExp (loc, _) | LetKeyExp (loc, _, _, _) | LetFunExp (loc, _, _, _, _, _) | LetObjectExp (loc, _, _, _, _, _) | LetThisExp (loc, _) | ShellExp (loc, _) | IfExp (loc, _) | SequenceExp (loc, _) | SectionExp (loc, _, _, _) | OpenExp (loc, _) | IncludeExp (loc, _, _) | ApplyExp (loc, _, _) | SuperApplyExp (loc, _, _, _) | MethodApplyExp (loc, _, _, _) | StaticExp (loc, _, _, _) | ReturnBodyExp (loc, _) | StringExp (loc, _) | ReturnExp (loc, _) | ReturnObjectExp (loc, _) | ReturnSaveExp loc -> loc (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_ir_free_vars.ml0000664000152300015230000001453510641056750016524 0ustar jyhjyh(* * Compute the free variables of an expression. * NOTE: this is a little sloppy. * 1. The language is dynamically scoped; * we don't catch variables not mentioned statically * 2. We take the presence of a definition anywhere * as an indication that the variable is not free. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Omake_ir (* * Tables of free variables. *) type free_vars = VarInfoSet.t let free_vars_empty = VarInfoSet.empty (* * Free variable operations. *) let free_vars_add = VarInfoSet.add let free_vars_remove = VarInfoSet.remove let free_vars_remove_params fv params = List.fold_left VarInfoSet.remove_param fv params (* * Union of two free variable sets. *) let free_vars_union fv1 fv2 = VarInfoSet.fold VarInfoSet.add fv1 fv2 (* * Free vars of the export. *) let free_vars_export_info fv info = match info with Omake_ir.ExportNone | Omake_ir.ExportAll -> fv | Omake_ir.ExportList items -> List.fold_left (fun fv item -> match item with ExportRules | ExportPhonies -> fv | ExportVar v -> VarInfoSet.add fv v) fv items (* * Free vars in optional args. *) let rec free_vars_opt_params fv opt_params = match opt_params with (_, s) :: opt_params -> free_vars_opt_params (free_vars_string_exp fv s) opt_params | [] -> fv (* * Calculate free vars. * NOTE: this only calculates the static free variables. * Since the language is dynamically scoped, this will miss * the dynamic free variables. *) and free_vars_string_exp fv s = match s with NoneString _ | ConstString _ | ThisString _ | KeyApplyString _ | VarString _ -> fv | ApplyString (_, _, v, args) | MethodApplyString (_, _, v, _, args) -> let fv = free_vars_string_exp_list fv args in free_vars_add fv v | SuperApplyString (_, _, _, _, args) -> let fv = free_vars_string_exp_list fv args in fv | SequenceString (_, sl) | ArrayString (_, sl) | QuoteString (_, sl) | QuoteStringString (_, _, sl) -> free_vars_string_exp_list fv sl | ArrayOfString (_, s) -> free_vars_string_exp fv s | ObjectString (_, e, export) | BodyString (_, e, export) | ExpString (_, e, export) -> free_vars_exp_list (free_vars_export_info fv export) e | CasesString (loc, cases) -> free_vars_cases fv cases and free_vars_string_exp_list fv sl = match sl with s :: sl -> free_vars_string_exp_list (free_vars_string_exp fv s) sl | [] -> fv and free_vars_keyword_exp_list fv sl = match sl with (_, s) :: sl -> free_vars_keyword_exp_list (free_vars_string_exp fv s) sl | [] -> fv and free_vars_cases fv cases = match cases with (_, s, e, export) :: cases -> free_vars_cases (free_vars_string_exp (free_vars_exp_list (free_vars_export_info fv export) e) s) cases | [] -> fv and free_vars_exp_list fv el = match el with e :: el -> free_vars_exp (free_vars_exp_list fv el) e | [] -> fv and free_vars_exp fv e = match e with LetVarExp (_, v, _, _, s) -> let fv = free_vars_remove fv v in free_vars_string_exp fv s | LetFunExp (_, v, _, vars, el, export) -> let fv_body = free_vars_export_info free_vars_empty export in let fv_body = free_vars_exp_list fv_body el in let fv_body = free_vars_remove_params fv_body vars in let fv = free_vars_union fv fv_body in let fv = free_vars_remove fv v in fv | LetObjectExp (_, v, _, s, el, export) -> let fv = free_vars_export_info fv export in let fv = free_vars_exp_list fv el in let fv = free_vars_remove fv v in let fv = free_vars_string_exp fv s in fv | IfExp (_, cases) -> free_vars_if_cases fv cases | SequenceExp (_, el) -> free_vars_exp_list fv el | SectionExp (_, s, el, export) -> free_vars_string_exp (free_vars_exp_list (free_vars_export_info fv export) el) s | StaticExp (_, _, _, el) -> free_vars_exp_list fv el | IncludeExp (_, s, sl) -> free_vars_string_exp (free_vars_string_exp_list fv sl) s | ApplyExp (_, v, args) | MethodApplyExp (_, v, _, args) -> free_vars_string_exp_list (free_vars_add fv v) args | SuperApplyExp (_, _, _, args) -> free_vars_string_exp_list fv args | ReturnBodyExp (_, el) -> free_vars_exp_list fv el | LetKeyExp (_, _, _, s) | LetThisExp (_, s) | ShellExp (_, s) | StringExp (_, s) | ReturnExp (_, s) -> free_vars_string_exp fv s | OpenExp _ | KeyExp _ | ReturnObjectExp _ | ReturnSaveExp _ -> fv and free_vars_if_cases fv cases = match cases with (s, e, export) :: cases -> free_vars_if_cases (free_vars_string_exp (free_vars_exp_list (free_vars_export_info fv export) e) s) cases | [] -> fv (* * Wrapper. *) let free_vars_exp e = free_vars_exp free_vars_empty e let free_vars_exp_list el = free_vars_exp_list free_vars_empty el let free_vars_set fv = fv (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_symbol.ml0000664000152300015230000002511410647236053015360 0ustar jyhjyh(* * Symbols used everywhere. * Eventually, we should collect all the global symbols and * put them here. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_symbol let braces_sym = Lm_symbol.add "{}" let builtin_sym = Lm_symbol.add "$builtin" let map_sym = Lm_symbol.add "$map" let pervasives_sym = Lm_symbol.add "Pervasives" let object_sym = Lm_symbol.add "Object" let int_object_sym = Lm_symbol.add "Int" let float_object_sym = Lm_symbol.add "Float" let string_object_sym = Lm_symbol.add "String" let sequence_object_sym = Lm_symbol.add "Sequence" let array_object_sym = Lm_symbol.add "Array" let fun_object_sym = Lm_symbol.add "Fun" let rule_object_sym = Lm_symbol.add "Rule" let file_object_sym = Lm_symbol.add "File" let dir_object_sym = Lm_symbol.add "Dir" let body_object_sym = Lm_symbol.add "Body" let in_channel_object_sym = Lm_symbol.add "InChannel" let out_channel_object_sym = Lm_symbol.add "OutChannel" let in_out_channel_object_sym = Lm_symbol.add "InOutChannel" let map_object_sym = Lm_symbol.add "Map" let shell_object_sym = Lm_symbol.add "Shell" let select_object_sym = Lm_symbol.add "Select" let pipe_object_sym = Lm_symbol.add "Pipe" let stat_object_sym = Lm_symbol.add "Stat" let passwd_object_sym = Lm_symbol.add "Passwd" let group_object_sym = Lm_symbol.add "Group" let lexer_object_sym = Lm_symbol.add "Lexer" let parser_object_sym = Lm_symbol.add "Parser" let location_object_sym = Lm_symbol.add "Location" let target_object_sym = Lm_symbol.add "Target" let options_object_sym = Lm_symbol.add "Options" let var_object_sym = Lm_symbol.add "Var" let wild_sym = Lm_symbol.add "%" let explicit_target_sym = Lm_symbol.add "$EXPLICIT-TARGET" let current_prec_sym = Lm_symbol.add "current-prec" let lex_sym = Lm_symbol.add "lex" let name_sym = Lm_symbol.add "name" let value_sym = Lm_symbol.add "value" let lexer_sym = Lm_symbol.add "lexer" let val_sym = Lm_symbol.add "val" let read_sym = Lm_symbol.add "read" let write_sym = Lm_symbol.add "write" let error_sym = Lm_symbol.add "error" let st_dev_sym = Lm_symbol.add "dev" let st_ino_sym = Lm_symbol.add "ino" let st_kind_sym = Lm_symbol.add "kind" let st_perm_sym = Lm_symbol.add "perm" let st_nlink_sym = Lm_symbol.add "nlink" let st_uid_sym = Lm_symbol.add "uid" let st_gid_sym = Lm_symbol.add "gid" let st_rdev_sym = Lm_symbol.add "rdev" let st_size_sym = Lm_symbol.add "size" let st_atime_sym = Lm_symbol.add "atime" let st_mtime_sym = Lm_symbol.add "mtime" let st_ctime_sym = Lm_symbol.add "ctime" let pw_name_sym = Lm_symbol.add "pw_name" let pw_passwd_sym = Lm_symbol.add "pw_passwd" let pw_uid_sym = Lm_symbol.add "pw_uid" let pw_gid_sym = Lm_symbol.add "pw_gid" let pw_gecos_sym = Lm_symbol.add "pw_gecos" let pw_dir_sym = Lm_symbol.add "pw_dir" let pw_shell_sym = Lm_symbol.add "pw_shell" let gr_name_sym = Lm_symbol.add "gr_name" let gr_passwd_sym = Lm_symbol.add "gr_passwd" let gr_gid_sym = Lm_symbol.add "gr_gid" let gr_mem_sym = Lm_symbol.add "gr_mem" let target_sym = Lm_symbol.add "target" let target_effects_sym = Lm_symbol.add "effects" let scanner_deps_sym = Lm_symbol.add "scanner-deps" let static_deps_sym = Lm_symbol.add "static-deps" let build_deps_sym = Lm_symbol.add "build-deps" let build_values_sym = Lm_symbol.add "build-values" let build_commands_sym = Lm_symbol.add "build-commands" let output_file_sym = Lm_symbol.add "output-file" let argv_sym = Lm_symbol.add "argv" let star_sym = Lm_symbol.add "*" let at_sym = Lm_symbol.add "@" let amp_sym = Lm_symbol.add "&" let lt_sym = Lm_symbol.add "<" let gt_sym = Lm_symbol.add ">" let plus_sym = Lm_symbol.add "+" let hat_sym = Lm_symbol.add "^" let zero_sym = Lm_symbol.add "0" let runtime_exception_sym = Lm_symbol.add "RuntimeException" let unbuildable_exception_sym = Lm_symbol.add "UnbuildableException" let parse_loc_sym = Lm_symbol.add "parse-loc" let loc_sym = Lm_symbol.add "loc" let pos_sym = Lm_symbol.add "position" let message_sym = Lm_symbol.add "message" let stdin_sym = Lm_symbol.add "stdin" let stdout_sym = Lm_symbol.add "stdout" let stderr_sym = Lm_symbol.add "stderr" let printexitvalue_sym = Lm_symbol.add "printexitvalue" let targets_sym = Lm_symbol.add "TARGETS" let glob_options_sym = Lm_symbol.add "GLOB_OPTIONS" let glob_allow_sym = Lm_symbol.add "GLOB_ALLOW" let glob_ignore_sym = Lm_symbol.add "GLOB_IGNORE" let this_sym = Lm_symbol.add "this" let dynamic_sym = Lm_symbol.add "dynamic" let static_sym = Lm_symbol.add "static" let allow_empty_subdirs_sym = Lm_symbol.add "ALLOW_EMPTY_SUBDIRS" let abort_on_command_error_sym = Lm_symbol.add "ABORT_ON_COMMAND_ERROR" let exit_on_uncaught_exception_sym = Lm_symbol.add "EXIT_ON_UNCAUGHT_EXCEPTION" let create_subdirs_sym = Lm_symbol.add "CREATE_SUBDIRS" let scanner_mode_sym = Lm_symbol.add "SCANNER_MODE" let history_file_sym = Lm_symbol.add "history-file" let history_length_sym = Lm_symbol.add "history-length" let build_summary_sym = Lm_symbol.add "BUILD_SUMMARY" (* * Special symbols. *) let concat_sym = Lm_symbol.add "concat" let if_sym = Lm_symbol.add "if" let else_sym = Lm_symbol.add "else" let elseif_sym = Lm_symbol.add "elseif" let switch_sym = Lm_symbol.add "switch" let select_sym = Lm_symbol.add "select" let case_sym = Lm_symbol.add "case" let do_sym = Lm_symbol.add "do" let while_sym = Lm_symbol.add "while" let default_sym = Lm_symbol.add "default" let include_sym = Lm_symbol.add "include" let section_sym = Lm_symbol.add "section" let try_sym = Lm_symbol.add "try" let catch_sym = Lm_symbol.add "catch" let when_sym = Lm_symbol.add "when" let finally_sym = Lm_symbol.add "finally" let private_sym = Lm_symbol.add "private" let protected_sym = Lm_symbol.add "protected" let public_sym = Lm_symbol.add "public" let global_sym = Lm_symbol.add "global" let const_sym = Lm_symbol.add "const" let rule_sym = Lm_symbol.add "rule" let system_sym = Lm_symbol.add "system" let open_sym = Lm_symbol.add "open" let autoload_sym = Lm_symbol.add "autoload" let declare_sym = Lm_symbol.add "declare" let return_sym = Lm_symbol.add "return" let export_sym = Lm_symbol.add "export" let value_sym = Lm_symbol.add "value" let file_sym = Lm_symbol.add "__FILE__" let file_id_sym = Lm_symbol.add "__ID__" let set_sym = Lm_symbol.add "set" let memo_rule_sym = Lm_symbol.add "memo-rule" let empty_map_sym = Lm_symbol.add "empty-map" let create_map_sym = Lm_symbol.add "create-map" let create_lazy_map_sym = Lm_symbol.add "create-lazy-map" (* * Awk values. *) let awk_sym = Lm_symbol.add "awk" let nf_sym = Lm_symbol.add "NF" let rs_sym = Lm_symbol.add "RS" let fs_sym = Lm_symbol.add "FS" let filename_sym = Lm_symbol.add "FILENAME" let fnr_sym = Lm_symbol.add "FNR" let fsubst_sym = Lm_symbol.add "fsubst" (* * The applications that can have cases. *) let cases_syms = [awk_sym; fsubst_sym] let cases_set = List.fold_left SymbolSet.add SymbolSet.empty cases_syms let clauses_syms = [case_sym; default_sym; when_sym; catch_sym; finally_sym; do_sym] let clauses_set = List.fold_left SymbolSet.add SymbolSet.empty clauses_syms (* * Colon symbols. *) let normal_sym = Lm_symbol.add ":normal:" let optional_sym = Lm_symbol.add ":optional:" let exists_sym = Lm_symbol.add ":exists:" let squash_sym = Lm_symbol.add ":squash:" let effects_sym = Lm_symbol.add ":effects:" let scanner_sym = Lm_symbol.add ":scanner:" let values_sym = Lm_symbol.add ":value:" let key_sym = Lm_symbol.add ":key:" (* * Builtin functions. *) let extends_sym = Lm_symbol.add "extends" let omakeflags_sym = Lm_symbol.add "OMakeFlags" let omakeargv_sym = Lm_symbol.add "OMakeArgv" (* * Symbols. *) let prompt_sym = Lm_symbol.add "prompt" let ignoreeof_sym = Lm_symbol.add "ignoreeof" let cwd_sym = Lm_symbol.add "CWD" let stdroot_sym = Lm_symbol.add "STDROOT" let stdlib_sym = Lm_symbol.add "STDLIB" let ostype_sym = Lm_symbol.add "OSTYPE" let path_sym = Lm_symbol.add "PATH" let auto_rehash_sym = Lm_symbol.add "AUTO_REHASH" let omakepath_sym = Lm_symbol.add "OMAKEPATH" let oshell_sym = Lm_symbol.add "OSHELL" let cdpath_sym = Lm_symbol.add "cdpath" (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_options.mli0000664000152300015230000000656410621461041015714 0ustar jyhjyh(* * Options for the omake program. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) (* * When to print output. *) type eval_flag = EvalNever | EvalLazy | EvalEager (* * Diversion control. *) type output_flag = OutputNormal | OutputPostponeSuccess | OutputPostponeError | OutputRepeatErrors (* * The basic make flags. *) type omake_options (* * Initial options. *) val default_options : omake_options (* * Argument specifier. *) val options_spec : (string * omake_options Lm_arg.poly_spec * string) list val output_spec : (string * omake_options Lm_arg.poly_spec * string) list (* * Parallel build options *) val opt_parallel : omake_options -> bool val opt_job_count : omake_options -> int val opt_remote_servers : omake_options -> (string * int) list val opt_terminate_on_error : omake_options -> bool val opt_poll : omake_options -> bool val opt_poll_on_done : omake_options -> bool val opt_osh : omake_options -> bool val set_osh_opt : omake_options -> omake_options val opt_dry_run : omake_options -> bool val opt_print_command : omake_options -> eval_flag val opt_print_dir : omake_options -> bool val opt_print_file : omake_options -> bool val opt_print_status : omake_options -> bool val opt_print_exit : omake_options -> bool val opt_print_progress : omake_options -> bool val opt_touch_only : omake_options -> bool val opt_flush_cache : omake_options -> bool val opt_flush_dependencies : omake_options -> bool val opt_print_dependencies : omake_options -> bool val opt_show_dependencies : omake_options -> string list val opt_all_dependencies : omake_options -> bool val opt_verbose_dependencies : omake_options -> bool val opt_cd_root : omake_options -> bool val opt_project : omake_options -> bool val opt_flush_include : omake_options -> bool val opt_flush_static : omake_options -> bool val opt_absname : omake_options -> bool val opt_verbose : omake_options -> bool val opt_divert : omake_options -> bool (* true when some --output-* diversions other than --output-normal are enabled *) val opt_output : omake_options -> output_flag -> bool val opt_allow_exceptions : omake_options -> bool val set_allow_exceptions_opt : omake_options -> bool -> omake_options val opt_warn_declare : omake_options -> bool val opt_warn_error : omake_options -> bool (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_var.mli0000664000152300015230000001166210654713446015023 0ustar jyhjyh(* * Variables. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_symbol open Omake_ir (* * Generally useful variables in pervasives. *) val explicit_target_var : var_info val wild_var : var_info val cwd_var : var_info val stdlib_var : var_info val stdroot_var : var_info val ostype_var : var_info val omakepath_var : var_info val path_var : var_info val auto_rehash_var : var_info val printexitvalue_var : var_info val system_var : var_info val oshell_var : var_info val cdpath_var : var_info val history_file_var : var_info val history_length_var : var_info val targets_var : var_info val build_summary_var : var_info val prompt_var : var_info val ignoreeof_var : var_info val exit_on_uncaught_exception_var : var_info val abort_on_command_error_var : var_info val create_subdirs_var : var_info val allow_empty_subdirs_var : var_info val glob_options_var : var_info val glob_ignore_var : var_info val glob_allow_var : var_info val scanner_mode_var : var_info val stdin_var : var_info val stdout_var : var_info val stderr_var : var_info val argv_var : var_info val options_var : var_info val star_var : var_info val at_var : var_info val gt_var : var_info val plus_var : var_info val hat_var : var_info val lt_var : var_info val amp_var : var_info val braces_var : var_info val parse_loc_var : var_info val zero_var : var_info val nf_var : var_info val fs_var : var_info val rs_var : var_info val filename_var : var_info val fnr_var : var_info val object_var : var_info val int_object_var : var_info val float_object_var : var_info val string_object_var : var_info val sequence_object_var : var_info val array_object_var : var_info val fun_object_var : var_info val rule_object_var : var_info val file_object_var : var_info val dir_object_var : var_info val body_object_var : var_info val in_channel_object_var : var_info val out_channel_object_var : var_info val in_out_channel_object_var : var_info val lexer_object_var : var_info val parser_object_var : var_info val location_object_var : var_info val map_object_var : var_info val shell_object_var : var_info val target_object_var : var_info val stat_object_var : var_info val passwd_object_var : var_info val group_object_var : var_info val pipe_object_var : var_info val select_object_var : var_info val runtime_exception_var : var_info val var_object_var : var_info val printexitvalue_var : var_info val extends_var : var_info val omakeflags_var : var_info val omakeargv_var : var_info (* * Internal fields. *) val loc_field_var : var_info val builtin_field_var : var_info val map_field_var : var_info val current_prec_field_var : var_info val lexer_field_var : var_info val file_var : var_info val file_id_var : var_info (* * $0, $1, $2... *) val create_numeric_var : int -> var_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_pos.ml0000664000152300015230000001124510654713446014660 0ustar jyhjyh(* * Standard exceptions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Omake_ir open Omake_node open Omake_ir_util open Omake_ir_print open Omake_print_util open Omake_value_type open Omake_value_print type pos = Omake_value_type.pos (************************************************************************ * Utilities. *) let string_loc = bogus_loc "" let rec loc_of_item x = match x with AstExp e -> Omake_ast_util.loc_of_exp e | IrExp e -> Omake_ir_util.loc_of_exp e | Location loc -> loc | Value _ | Symbol _ | String _ | Error _ -> string_loc (* * Value printing. *) let rec pp_print_item buf x = match x with AstExp e -> Omake_ast_print.pp_print_exp buf e | IrExp e -> Omake_ir_print.pp_print_exp buf e | Location _ -> () | Symbol v -> pp_print_symbol buf v | String s -> pp_print_string buf s | Value v -> pp_print_value buf v | Error e -> pp_print_exn buf e (* * Exception printer. *) and pp_print_exn buf = function SyntaxError s -> fprintf buf "syntax error: %s" s | StringError s -> pp_print_string buf s | StringIntError (s, i) -> fprintf buf "%s: %d" s i | StringStringError (s1, s2) -> fprintf buf "%s: %s" s1 s2 | StringVarError (s, v) -> fprintf buf "%s: %a" s pp_print_symbol v | StringMethodError (s, v) -> fprintf buf "%s: %a" s pp_print_method_name v | StringDirError (s, n)-> fprintf buf "%s: %a" s pp_print_dir n | StringNodeError (s, n)-> fprintf buf "%s: %a" s pp_print_node n | StringValueError (s, v) -> fprintf buf "@[%s:@ %a@]" s pp_print_value v | StringTargetError (s, t) -> fprintf buf "%s: %a" s pp_print_target t | LazyError printer -> printer buf | UnboundVar v -> fprintf buf "unbound variable: %a" pp_print_symbol v | UnboundVarInfo v -> fprintf buf "unbound variable: %a" pp_print_var_info v | UnboundKey v -> fprintf buf "unbound key: %s" v | UnboundValue v -> fprintf buf "unbound value: %a" pp_print_value v | UnboundFun v -> fprintf buf "unbound function: %a" pp_print_symbol v | UnboundMethod vl -> fprintf buf "unbound method: %a" pp_print_method_name vl | UnboundFieldVar (obj, v) -> fprintf buf "@[unbound method '%a', object classes:@ @[" pp_print_symbol v; SymbolTable.iter (fun v _ -> fprintf buf "@ %a" pp_print_symbol v) (venv_get_class obj); fprintf buf "@]@]" | ArityMismatch (len1, len2) -> fprintf buf "arity mismatch: expected %a args, got %d" pp_print_arity len1 len2 | NotImplemented s -> fprintf buf "not implemented: %s" s | NullCommand -> pp_print_string buf "invalid null command" (************************************************************************ * Positions. *) module type NameSig = sig val name : string end module MakePos (Name : NameSig) : PosSig = struct module Name' = struct type t = item let name = Name.name let loc_of_value = loc_of_item let pp_print_value = pp_print_item end module Pos = Lm_position.MakePos (Name') include Pos let loc_pos_pos loc pos = cons_pos (Location loc) pos let ast_exp_pos e = base_pos (AstExp e) let ir_exp_pos e = base_pos (IrExp e) let var_exp_pos v = base_pos (Symbol v) let string_exp_pos s = base_pos (String s) let value_exp_pos v = base_pos (Value v) let var_pos = symbol_pos let value_pos v pos = cons_pos (Value v) pos let error_pos e pos = cons_pos (Error e) pos end module Pos = MakePos (struct let name = "Omake_env" end) open Pos;; (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/ir/omake_ir_print.mli0000664000152300015230000000352510634030714016044 0ustar jyhjyh(* * Print the IR. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Omake_ir val pp_print_var_scope : formatter -> var_scope -> unit val pp_print_var_info : formatter -> var_info -> unit val pp_print_arity : formatter -> arity -> unit val pp_print_string_exp : formatter -> string_exp -> unit val pp_print_string_exp_list : formatter -> string_exp list -> unit val pp_print_exp : formatter -> exp -> unit val pp_print_exp_list : formatter -> exp list -> unit val pp_print_exp_list_simple : formatter -> exp list -> unit val pp_print_export_info : formatter -> export -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_node.mli0000664000152300015230000000544210616475055015156 0ustar jyhjyh(* * Abstract representation of files. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_hash_sig open Lm_hash open Lm_printf open Lm_hash_sig open Omake_node_sig module Dir : DirSig module DirSet : Lm_set_sig.LmSet with type elt = Dir.t module DirTable : Lm_map_sig.LmMap with type key = Dir.t module DirListHash : HashMarshalSig with type elt = Dir.t list module DirListSet : Lm_set_sig.LmSet with type elt = DirListHash.t module DirListTable : Lm_map_sig.LmMap with type key = DirListHash.t module Node : NodeSig with type dir = Dir.t module NodeSet : Lm_set_sig.LmSet with type elt = Node.t module NodeTable : Lm_map_sig.LmMap with type key = Node.t module NodeMTable : Lm_map_sig.LmMapList with type key = Node.t module PreNodeSet : Lm_set_sig.LmSet with type elt = Node.pre module Mount : MountSig with type dir = Dir.t with type node = Node.t with type t = Node.mount;; type mount_info = Node.t poly_mount_info val no_mount_info : mount_info (* * Handle known phonies. *) val create_node_or_phony : PreNodeSet.t -> mount_info -> Mount.t -> phony_ok -> Dir.t -> string -> Node.t (* * For debugging. *) val pp_print_dir : formatter -> Dir.t -> unit val pp_print_node : formatter -> Node.t -> unit val pp_print_node_kind : formatter -> node_kind -> unit val pp_print_string_list : formatter -> string list -> unit val pp_print_node_set : formatter -> NodeSet.t -> unit val pp_print_node_list : formatter -> Node.t list -> unit val pp_print_node_table : formatter -> 'a NodeTable.t -> unit val pp_print_node_set_table : formatter -> NodeSet.t NodeTable.t -> unit val pp_print_node_set_table_opt : formatter -> NodeSet.t NodeTable.t option -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_options.ml0000664000152300015230000004353610621461041015543 0ustar jyhjyh(* * Options for the omake program. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Authors: * Jason Hickey @email{jyh@cs.caltech.edu} * Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_printf (* * When to print output. *) type eval_flag = EvalNever | EvalLazy | EvalEager (* * Diversion control. *) type output_flag = OutputNormal | OutputPostponeSuccess | OutputPostponeError | OutputRepeatErrors (* * Make the default state explicit (the actual value may depend on the value of other settings). *) type 'a setting = Default | Set of 'a (* * The basic make flags. *) type omake_options = { opt_job_count : int; opt_remote_servers : (string * int) list; opt_terminate_on_error : bool setting; opt_dry_run : bool; opt_print_command : eval_flag; opt_print_dir : bool; opt_print_file : bool; opt_print_status : bool; opt_print_exit : bool; mutable opt_print_progress : bool setting; opt_verbose : bool; opt_touch_only : bool; opt_flush_cache : bool; opt_flush_dependencies : bool; opt_print_dependencies : bool; opt_show_dependencies : string list; opt_all_dependencies : bool; opt_verbose_dependencies : bool; opt_cd_root : bool; opt_project : bool; opt_poll : bool setting; opt_osh : bool; opt_poll_on_done : bool; opt_flush_include : bool; opt_flush_static : bool; opt_allow_exceptions : bool; opt_absname : bool; opt_output : (output_flag * bool) list; (* Warnings *) opt_warn_declare : bool; opt_warn_error : bool } let opt_job_count opts = opts.opt_job_count let opt_remote_servers opts = opts.opt_remote_servers (* * Predicate returns true iff there are parallel jobs. *) let opt_parallel options = (opt_job_count options) > 1 || (opt_remote_servers options) <> [] let set_job_count_and_servers_opt opts cnt srvs = { opts with opt_job_count = cnt; opt_remote_servers = srvs } (* * The argument string is a colon-separated list of server specification. * A server spec can be: * 1. a number: this specifies the job_count * 2. a machine: this specified a remote server that will handle 1 job * 3. a machine=count: a remote server that will handle jobs *) let set_job_count options s = let set_job (job_count, remote_servers) job = try let index = String.index job '=' in let len = String.length job in let machine = String.sub job 0 index in let count = String.sub job (succ index) (len - index - 1) in let count = try int_of_string count with Failure _ -> 1 in job_count, (machine, count) :: remote_servers with Not_found -> try int_of_string job, remote_servers with Failure _ -> job_count, (job, 1) :: remote_servers in let job_count, remote_servers = List.fold_left set_job (1, []) (Lm_string_util.split ":" s) in set_job_count_and_servers_opt options job_count (List.rev remote_servers) let opt_dry_run opts = opts.opt_dry_run let set_dry_run_opt opts flag = { opts with opt_dry_run = flag } let opt_print_command opts = opts.opt_print_command let set_print_command_opt opts flag = { opts with opt_print_command = flag } let opt_print_dir opts = opts.opt_print_dir let set_print_dir_opt opts flag = { opts with opt_print_dir = flag } let opt_print_file opts = opts.opt_print_file let set_print_file_opt opts flag = { opts with opt_print_file = flag } let opt_print_status opts = opts.opt_print_status let set_print_status_opt opts flag = { opts with opt_print_status = flag } let opt_print_exit opts = opts.opt_print_exit let set_print_exit_opt opts flag = { opts with opt_print_exit = flag } let opt_print_progress opts = match opts.opt_print_progress with Set b -> b | Default -> let ok_to_print = try (* XXX: TODO: in OCaml 3.10, use Unix.isatty *) ignore (Unix.tcgetattr Unix.stdout); true with Unix.Unix_error _ -> eprintf "@[*** omake: warning:@ stdout is not a tty,@ disabling the progress bar@ (use --progress to override).@]@."; false | Invalid_argument "Unix.tcgetattr not implemented" -> (* We are on Windows :-( *) true | exn -> eprintf "@[*** omake: warning:@ tcgetattr failed for unknown reason:@ %s@]@." (**) (Printexc.to_string exn); true in opts.opt_print_progress <- Set ok_to_print; ok_to_print let set_print_progress_opt opts flag = { opts with opt_print_progress = Set flag } let opt_touch_only opts = opts.opt_touch_only let set_touch_only_opt opts flag = { opts with opt_touch_only = flag } let opt_flush_cache opts = opts.opt_flush_cache let set_flush_cache_opt opts flag = { opts with opt_flush_cache = flag } let opt_flush_dependencies opts = opts.opt_flush_dependencies let set_flush_dependencies_opt opts flag = { opts with opt_flush_dependencies = flag } let opt_print_dependencies opts = opts.opt_print_dependencies let set_print_dependencies_opt opts flag = { opts with opt_print_dependencies = flag } let opt_show_dependencies opts = opts.opt_show_dependencies let add_show_dependency_opt opts dep = { opts with opt_show_dependencies = dep :: opts.opt_show_dependencies } let opt_all_dependencies opts = opts.opt_all_dependencies let set_all_dependencies_opt opts flag = { opts with opt_all_dependencies = flag } let opt_verbose opts = opts.opt_verbose let opt_verbose_dependencies opts = opts.opt_verbose_dependencies let set_verbose_dependencies_opt opts flag = { opts with opt_verbose_dependencies = flag } let opt_cd_root opts = opts.opt_cd_root let set_cd_root_opt opts flag = { opts with opt_cd_root = flag } let opt_project opts = opts.opt_project let set_project_opt opts flag = { opts with opt_project = flag } let opt_poll_on_done opts = opts.opt_poll_on_done let set_poll_on_done_opt opts b = { opts with opt_poll_on_done = b } let opt_poll opts = match opts.opt_poll with Set v -> v | Default -> (opt_poll_on_done opts) let set_poll_opt opts b = { opts with opt_poll = Set b } let opt_osh opts = opts.opt_osh let set_osh_opt opts = { opts with opt_osh = true } let opt_terminate_on_error opts = match opts.opt_terminate_on_error with Set v -> v | Default -> not (opt_poll opts) let set_terminate_on_error_opt opts flag = { opts with opt_terminate_on_error = Set flag } let opt_flush_include opts = opts.opt_flush_include let set_flush_include_opt opts flag = { opts with opt_flush_include = flag } let opt_flush_static opts = opts.opt_flush_static let set_flush_static_opt opts flag = { opts with opt_flush_static = flag } let opt_allow_exceptions opts = opts.opt_allow_exceptions let set_allow_exceptions_opt opts flag = { opts with opt_allow_exceptions = flag } let opt_absname opts = opts.opt_absname let set_absname_opt opts flag = { opts with opt_absname = flag } let opt_warn_declare opts = opts.opt_warn_declare let set_warn_declare_opt opts flag = { opts with opt_warn_declare = flag } let opt_warn_error opts = opts.opt_warn_error let set_warn_error_opt opts flag = { opts with opt_warn_error = flag } (* * Output control. *) let output_opt_char options c = match c with '0' -> (* -s --output-errors-only --no--progress *) { options with opt_print_status = false; opt_print_dir = false; opt_print_file = false; opt_print_exit = false; opt_print_command = EvalNever; opt_print_progress = Set false; opt_output = [(OutputPostponeError, true)] } | '1' -> (* -S --progress --output-errors-only *) { options with opt_print_command = EvalLazy; opt_print_progress = Set true; opt_output = [(OutputPostponeError, true)] } | '2' -> (* --progress --output-postpone *) { options with opt_print_progress = Set true; opt_output = [(OutputPostponeSuccess, true); (OutputPostponeError, true)] } | 'W' -> set_print_dir_opt options true | 'w' -> set_print_dir_opt options false | 'P' -> set_print_progress_opt options true | 'p' -> set_print_progress_opt options false | 'X' -> set_print_exit_opt options true | 'x' -> set_print_exit_opt options false | 'S' -> set_print_status_opt options true | 's' -> set_print_status_opt options false | _ -> (* Ignore, for forward compatibility *) options let set_output_opts options s = let len = String.length s in let rec loop options i = if i = len then options else loop (output_opt_char options s.[i]) (succ i) in loop options 0 let rec opt_output opts flag = let answer = try Some(List.assoc flag opts.opt_output) with Not_found -> None in (* A few extra wrinkles *) match answer, flag with Some true, _ -> (* Everything should be on when explicitly enabled *) true | (Some false | None), OutputPostponeError -> (* If successes are printed, errors should be too, no matter what *) opt_output opts OutputPostponeSuccess | Some false, _ -> (* Everything else should be off when explicitly disabled *) false | None, OutputNormal -> not (opt_output opts OutputPostponeSuccess || opt_output opts OutputPostponeError) | None, OutputRepeatErrors -> (* default is "on iff -k/-p/-P" *) not (opt_terminate_on_error opts) | None, OutputPostponeSuccess -> (* off by default *) false let set_output_opt flag opts on = let flags = (flag, on) :: (List.remove_assoc flag opts.opt_output) in { opts with opt_output = flags } let opt_divert opts = List.exists (opt_output opts) [OutputPostponeSuccess; OutputPostponeError; OutputRepeatErrors] (* * Default options. *) let default_options = { opt_job_count = 1; opt_remote_servers = []; opt_terminate_on_error = Default; opt_dry_run = false; opt_print_command = EvalLazy; opt_print_dir = false; opt_print_file = true; opt_print_status = true; opt_print_exit = false; opt_print_progress = Default; opt_verbose = false; opt_touch_only = false; opt_flush_cache = false; opt_flush_dependencies = false; opt_print_dependencies = false; opt_show_dependencies = []; opt_all_dependencies = false; opt_verbose_dependencies = false; opt_cd_root = false; opt_project = false; opt_poll = Default; opt_poll_on_done = false; opt_osh = false; opt_flush_include = false; opt_flush_static = false; opt_allow_exceptions = false; opt_absname = false; opt_output = []; opt_warn_declare = false; opt_warn_error = false; } (* * Argument specifier. * * NOTE! This set of options is functional and scoped in OMakefiles. * Global, non-scoped options that assign to reference cells should be * put in the option list in Omake_main, not here. *) let options_spec = ["-j", Lm_arg.StringFold set_job_count, (**) "Specify parallel jobs and remote servers"; "-k", Lm_arg.ClearFold set_terminate_on_error_opt, (**) "Do not stop when an error occurs; implied by -p and -P"; "-p", Lm_arg.SetFold set_poll_opt, (**) "Poll filesystem for changes (until build succeeds); implies -k"; "-P", Lm_arg.SetFold set_poll_on_done_opt, (**) "Poll filesystem for changes (keep polling \"forever\"); implies -k and -p"; "-n", Lm_arg.SetFold set_dry_run_opt, (**) "Print commands, but do not execute them"; "--project", Lm_arg.SetFold set_project_opt, (**) "Ignore the current directory and build the project"; "-t", Lm_arg.SetFold set_touch_only_opt, (**) "Update database to force files to be up-to-date"; "--depend", Lm_arg.SetFold set_flush_dependencies_opt, (**) "Do not trust cached dependecy information"; "-U", Lm_arg.SetFold set_flush_cache_opt, (**) "Do not trust the dependency cache or cached OMakefiles"; "--flush-includes", Lm_arg.SetFold set_flush_include_opt, (**) "Do not trust cached .omc files"; "--configure", Lm_arg.SetFold set_flush_static_opt, (**) "Recompute static. sections"; "-R", Lm_arg.SetFold set_cd_root_opt, (**) "Command-line targets are relative to the project root; builds all .DEFAULT targets if no targets given"; "--print-dependencies", Lm_arg.SetFold set_print_dependencies_opt, (**) "Build and print dependencies"; "--show-dependencies", Lm_arg.StringFold add_show_dependency_opt, (**) "Show dependencies if the file is built"; "--all-dependencies", Lm_arg.SetFold set_all_dependencies_opt, (**) "For --print-dependencies and --show-dependencies, print dependencies recursively"; "--verbose-dependencies", Lm_arg.SetFold set_verbose_dependencies_opt, (**) "For --print-dependencies and --show-dependencies, print all dependencies too"; "--absname", Lm_arg.SetFold set_absname_opt, (**) "Filenames are always displayed as absolute paths"; "-Wdeclare", Lm_arg.SetFold set_warn_declare_opt, (**) "Warn about undeclared variables"; "-warn-error", Lm_arg.SetFold set_warn_error_opt, (**) "Treat warnings as errors" ] let progress_usage = match Sys.os_type with "Unix" | "Cygwin" -> "(enabled by default when the stdout is a terminal)" | "Windows" -> "(default)" | _ -> (* Should not happen *) "(may be enabled by default)" (* * Output control. *) let output_spec = [ "--verbose", Lm_arg.UnitFold (fun options -> { options with opt_print_command = EvalEager; opt_verbose = true; opt_print_status = true; opt_print_exit = true; opt_print_file = true }), "Verbose output (equivalent to \"--no-S --print-status --print-exit VERBOSE=true\")"; "--print-exit", Lm_arg.SetFold set_print_exit_opt, (**) "Print the exit codes of commands"; "-S", Lm_arg.SetFold (fun options b -> { options with opt_print_command = if b then EvalLazy else EvalEager }), (**) "Print command only if the command prints output (default)"; "-s", Lm_arg.ClearFold (fun options b -> { options with opt_print_status = b; opt_print_dir = b; opt_print_file = b; opt_print_exit = b; opt_print_command = if b then EvalEager else EvalNever }), (**) "Never print commands before they are executed"; "--progress", Lm_arg.SetFold set_print_progress_opt, (**) ("Print a progress indicator " ^ progress_usage); "--print-status", Lm_arg.SetFold set_print_status_opt, (**) "Print status lines (default)"; "-w", Lm_arg.SetFold set_print_dir_opt, (**) "Print the directory in \"make format\" as commands are executed"; "--output-normal", Lm_arg.SetFold (set_output_opt OutputNormal), (**) "Relay the output of the rule commands to the OMake output right away. This is the default when no --output-postpone and no --output-only-errors flags are given."; "--output-postpone", Lm_arg.SetFold (fun opt flag -> set_output_opt OutputPostponeSuccess (set_output_opt OutputPostponeError opt flag) flag), (**) "Postpone printing command output until a rule terminates."; "--output-only-errors", Lm_arg.SetFold (set_output_opt OutputPostponeError), (**) "Same as --output-postpone, but postponed output will only be printed for commands that fail."; "--output-at-end", Lm_arg.SetFold (set_output_opt OutputRepeatErrors), (**) "The output of the failed commands will be printed after OMake have stopped. Off by default, unless -k is enabled (directly or via -p/-P)."; "-o", Lm_arg.StringFold set_output_opts, (**) "Short output options [01jwWpPxXsS] (see the manual)"; ] (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_state.mli0000664000152300015230000000424110621461041015327 0ustar jyhjyh(* * Configuration. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) (* * Error codes for various actions. *) val signal_error_code : int val fork_error_code : int val internal_error_code : int val deadlock_error_code : int val exn_error_code : int val scanner_error_code : int (* * Name of the database. *) val db_name : string (* * Name of the makefiles. *) val makefile_name : string val makeroot_name : string val makeroot_short_name : string val omake_file_suffix : string (* * Cache management. *) val always_use_dotomake : bool ref val set_omake_dir : string -> unit (* * Files. *) val lib_dir : string val lib_dir_reason : string val home_dir : string val application_dir : string val omake_dir : unit -> string val db_file : unit -> string val history_file : unit -> string val omakeinit_file : string val omakerc_file : string val oshrc_file : string val get_cache_file : string -> string -> string * Unix.file_descr val lock_file : Unix.file_descr -> Unix.lock_command -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_value_print.ml0000664000152300015230000002357210656154767016424 0ustar jyhjyh(* * Value printing. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Omake_ir open Omake_node open Omake_wild open Omake_ir_print open Omake_print_util open Omake_value_type open Omake_command_type (************************************************************************ * Simple printing. *) let pp_print_string_list buf sl = List.iter (fun s -> fprintf buf "@ %s" s) sl let pp_print_node_list buf l = List.iter (fun s -> fprintf buf "@ %a" pp_print_node s) l let pp_print_node_set buf set = NodeSet.iter (fun s -> fprintf buf "@ %a" pp_print_node s) set let pp_print_wild_list buf wl = List.iter (fun w -> fprintf buf "@ %a" pp_print_wild_in w) wl let pp_print_source buf (_, source) = match source with SourceWild wild -> pp_print_wild_out buf wild | SourceNode node -> pp_print_node buf node let pp_print_source_list buf sources = List.iter (fun source -> fprintf buf "@ %a" pp_print_source source) sources let pp_print_target buf target = match target with TargetNode node -> pp_print_node buf node | TargetString s -> pp_print_string buf s (************************************************************************ * Path printing. *) let rec pp_print_path buf = function PathVar info -> pp_print_var_info buf info | PathField (path, obj, v) -> fprintf buf "%a.%a" pp_print_symbol v pp_print_path path (************************************************************************ * Value printing. *) let rec pp_print_value buf v = match v with ValNone -> pp_print_string buf "" | ValInt i -> fprintf buf "%d : Int" i | ValFloat x -> fprintf buf "%g : Float" x | ValData s -> fprintf buf "@[ : String@]" (String.escaped s) | ValQuote vl -> fprintf buf "@[@ : String@]" pp_print_value_list vl | ValString s -> fprintf buf "\"%s\" : Sequence" (String.escaped s) | ValQuoteString (c, vl) -> fprintf buf "@[@ : String@]" c pp_print_value_list vl c | ValSequence [v] -> pp_print_value buf v | ValSequence vl -> fprintf buf "@[@ : Sequence@]" pp_print_value_list vl | ValArray vl -> fprintf buf "@[@ : Array@]" pp_print_value_list vl | ValApply (_, f, args) -> fprintf buf "@[$(apply %a%a)@]" (**) pp_print_var_info f pp_print_value_list args | ValSuperApply (_, super, f, args) -> fprintf buf "@[$(apply %a::%a%a)@]" (**) pp_print_symbol super pp_print_symbol f pp_print_value_list args | ValMethodApply (_, v, vl, args) -> fprintf buf "@[$(%a%a%a)@]" (**) pp_print_var_info v pp_print_method_name vl pp_print_value_list args | ValMaybeApply (_, v) -> fprintf buf "@[ifdefined(%a)@]" (**) pp_print_var_info v | ValFun (arity, _, _, _, _) | ValFunValue (arity, _, _, _) -> fprintf buf "" pp_print_arity arity | ValPrim (_, special, name) -> if special then fprintf buf "" pp_print_symbol name else fprintf buf "" pp_print_symbol name | ValRules rules -> fprintf buf "<@[rules:"; List.iter (fun erule -> fprintf buf "@ %a" pp_print_node erule) rules; fprintf buf "@]>" | ValDir dir -> fprintf buf "%a : Dir" pp_print_dir dir | ValNode node -> fprintf buf "%a : File" pp_print_node node | ValBody (_, el, export) -> fprintf buf "@[%a%a@ : Body@]" pp_print_exp_list el pp_print_export_info export | ValObject env -> pp_print_env buf env | ValMap map -> fprintf buf "@[map"; ValueTable.iter (fun v e -> fprintf buf "@ %a@ = %a" pp_print_value v pp_print_value e) map; fprintf buf "@]" | ValChannel (InChannel, _) -> fprintf buf " : InChannel" | ValChannel (OutChannel, _) -> fprintf buf " : OutChannel" | ValChannel (InOutChannel, _) -> fprintf buf " : InOutChannel" | ValClass c -> fprintf buf "@[class"; SymbolTable.iter (fun v _ -> fprintf buf "@ %a" pp_print_symbol v) c; fprintf buf "@]" | ValCases cases -> fprintf buf "@[cases"; List.iter (fun (v, e1, e2, export) -> fprintf buf "@[%a %a:@ %a%a@]" (**) pp_print_symbol v pp_print_value e1 pp_print_exp_list e2 pp_print_export_info export) cases; fprintf buf "@]" | ValKeyApply (_, v) -> fprintf buf "key $|%s|" v | ValVar (_, v) -> fprintf buf "`%a" pp_print_var_info v | ValOther (ValLexer _) -> fprintf buf " : Lexer" | ValOther (ValParser _) -> fprintf buf " : Parser" | ValOther (ValLocation loc) -> fprintf buf " : Location" pp_print_location loc | ValOther (ValExitCode code) -> fprintf buf " : Int" code | ValOther (ValEnv _) -> fprintf buf "" | ValDelayed { contents = ValValue v } -> fprintf buf "" pp_print_value v | ValDelayed { contents = ValStaticApply (key, v) } -> fprintf buf "" pp_print_value key pp_print_symbol v and pp_print_value_list buf vl = List.iter (fun v -> fprintf buf "@ %a" pp_print_value v) vl and pp_print_env buf env = let tags = venv_get_class env in let env = SymbolTable.remove env class_sym in fprintf buf "@[@[class"; SymbolTable.iter (fun v _ -> fprintf buf "@ %a" pp_print_symbol v) tags; fprintf buf "@]"; SymbolTable.iter (fun v e -> fprintf buf "@ %a = %a" pp_print_symbol v pp_print_value e) env; fprintf buf "@]" (************************************************************************ * Simplified printing. *) let rec pp_print_simple_value buf v = match v with ValNone -> pp_print_string buf "" | ValInt i -> pp_print_int buf i | ValFloat x -> pp_print_float buf x | ValData s -> Omake_command_type.pp_print_arg buf [ArgData s] | ValString s -> Omake_command_type.pp_print_arg buf [ArgString s] | ValQuote vl -> fprintf buf "\"%a\"" pp_print_simple_value_list vl | ValQuoteString (c, vl) -> fprintf buf "%c%a%c" c pp_print_simple_value_list vl c | ValSequence vl -> pp_print_simple_value_list buf vl | ValArray vl -> pp_print_simple_arg_list buf vl | ValApply (_, f, args) -> fprintf buf "$(%a%a)" (**) pp_print_var_info f pp_print_simple_arg_list args | ValSuperApply (_, super, f, args) -> fprintf buf "$(%a::%a%a)" (**) pp_print_symbol super pp_print_symbol f pp_print_simple_arg_list args | ValMethodApply (_, v, vl, args) -> fprintf buf "$(%a%a%a)" (**) pp_print_var_info v pp_print_method_name vl pp_print_value_list args | ValMaybeApply (_, v) -> fprintf buf "$?(%a)" (**) pp_print_var_info v | ValFun _ | ValFunValue _ -> pp_print_string buf "" | ValPrim _ -> pp_print_string buf "" | ValRules _ -> pp_print_string buf "" | ValDir dir -> pp_print_dir buf dir | ValNode node -> pp_print_node buf node | ValBody _ -> pp_print_string buf "" | ValObject _ -> pp_print_string buf "" | ValMap _ -> pp_print_string buf "" | ValChannel _ -> pp_print_string buf "" | ValClass _ -> pp_print_string buf "" | ValCases _ -> pp_print_string buf "" | ValKeyApply (_, v) -> fprintf buf "$|%s|" v | ValVar (_, v) -> fprintf buf "`%a" pp_print_var_info v | ValOther (ValLexer _) -> pp_print_string buf "" | ValOther (ValParser _) -> pp_print_string buf "" | ValOther (ValLocation _) -> pp_print_string buf "" | ValOther (ValExitCode i) -> pp_print_int buf i | ValOther (ValEnv _) -> pp_print_string buf "" | ValDelayed { contents = ValValue v } -> pp_print_simple_value buf v | ValDelayed { contents = ValStaticApply _ } -> pp_print_string buf "" and pp_print_simple_value_list buf vl = List.iter (pp_print_simple_value buf) vl and pp_print_simple_arg_list buf vl = match vl with [] -> () | [v] -> pp_print_simple_value buf v | v :: vl -> pp_print_simple_value buf v; pp_print_char buf ' '; pp_print_simple_arg_list buf vl (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/ir/omake_command.mli0000664000152300015230000000406610456240612015637 0ustar jyhjyh(* * Utilities on the command line. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Omake_node open Omake_marshal open Omake_shell_type open Omake_command_type (* * Argument parser. *) type arg_buffer val arg_buffer_empty : arg_buffer val arg_buffer_add_string : arg_buffer -> string -> arg_buffer val arg_buffer_add_data : arg_buffer -> string -> arg_buffer val arg_buffer_contents : arg_buffer -> arg_string list (* * Parse commands. *) val parse_commands : 'venv -> Dir.t -> Node.t -> loc -> (command_flag list * ('exp, ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe, 'value) poly_command_inst) list -> ('venv, 'exp, ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe, 'value) poly_command_line list (* * Add the output flag. *) val command_allow_output : ('venv, 'exp, 'argv, 'value) poly_command_line -> ('venv, 'exp, 'argv, 'value) poly_command_line (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_node_type.ml0000664000152300015230000000401610456240612016031 0ustar jyhjyh(* * Types of internal representations of nodes. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_filename_util (* * Internally, we represent pathnames as absolute paths. * We keep a hashed integer for quick equality testing. * dir_hash : the quick hash * dir_root : the root of this name * dir_key : the path in canonical form (lowercase on Windows) * dir_name : the actual path will full capitalization *) type dir = DirRoot of int * root | DirSub of int * string * string * dir (* * Possible node flags. *) type node_flag = NodeIsOptional | NodeIsExisting | NodeIsSquashed | NodeIsScanner (* * A node is a phony, or it is a filename. *) type node = NodeFile of int * dir * string * string | NodePhonyGlobal of int * string | NodePhonyDir of int * dir * string * string | NodePhonyFile of int * dir * string * string * string | NodeFlagged of node_flag * node (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_node.ml0000664000152300015230000015236010633123532014774 0ustar jyhjyh(* * This is the base part of the build system. * Each file in the system is represented as a node. * Node may be virtual: the node may exist before the file * does. For each file, we maintain stat and MD5 information * (if they exist). * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * Modified by: Aleksey Nogin , * @end[license] *) open Lm_hash open Lm_printf open Lm_symbol open Lm_hash_sig open Lm_location open Lm_string_util open Lm_filename_util open Fmarshal open Omake_state open Omake_marshal open Omake_node_sig open Omake_print_util (************************************************************************ * This case [in-]sensitivity of file names is a complex issue. * We make the type abstract so we don't make a mistake. *) module type FileCaseSig = sig type t type dir val create : dir -> string -> t val compare : t -> t -> int val equal : t -> t -> bool val add_filename : HashCode.t -> t -> unit val add_filename_string : Buffer.t -> t -> unit val marshal : t -> msg val unmarshal : msg -> t end;; module rec FileCase : FileCaseSig with type dir = DirHash.t = struct (* %%MAGICBEGIN%% *) type t = string (* %%MAGICEND%% *) type dir = DirHash.t open DirElt open Unix.LargeFile (* * Check whether a directory is case-sensitive. *) let case_table = ref DirTable.empty (* We'll use randomly generated names *) let fs_random = Random.State.make_self_init () (* * Test whether stats are equal enough that we think that it's the same file. *) let stats_equal stat1 stat2 = stat1.st_dev = stat2.st_dev && stat1.st_ino = stat2.st_ino && stat1.st_kind = stat2.st_kind && stat1.st_rdev = stat2.st_rdev && stat1.st_nlink = stat2.st_nlink && stat1.st_size = stat2.st_size && stat1.st_mtime = stat2.st_mtime && stat1.st_ctime = stat2.st_ctime (* * Toggle the case of the name. * Raises Not_found if the name contains no alphabetic letters. *) let rec toggle_name_case name len i = if i = len then raise Not_found else match name.[i] with 'A'..'Z' | '\192' .. '\214' | '\216' .. '\222' -> String.lowercase name | 'a'..'z' | '\224' .. '\246' | '\248' .. '\254' -> String.uppercase name | _ -> toggle_name_case name len (succ i) (* * Stat, does not fail. *) let do_stat absname = try Some (Unix.LargeFile.lstat absname) with Unix.Unix_error _ -> None (* * Unlink, does not fail. *) let do_unlink absname = try Unix.unlink absname with Unix.Unix_error _ -> () (* * Create a file, raising Unix_error if the file can't be created. *) let do_create absname = Unix.close (Unix.openfile absname [Unix.O_WRONLY; Unix.O_CREAT; Unix.O_EXCL] 0o600) (* * Given two filenames that differ only in case, * stat them both. If the stats are different, * the directory is on a case-sensitive fs. * * XXX: try to detect race conditions by performing * a stat on the first file before and after. * Raise Not_found if a race condition is detected. *) let stats_not_equal name1 name2 = let stat1 = do_stat name1 in let stat2 = do_stat name2 in let stat3 = do_stat name1 in match stat1, stat3 with Some s1, Some s3 when stats_equal s1 s3 -> (match stat2 with Some s2 when stats_equal s2 s1 -> false | _ -> true) | _ -> raise Not_found (* * If we have an alphabetic name, just toggle the case. *) let stat_with_toggle_case absdir name = let alternate_name = toggle_name_case name (String.length name) 0 in stats_not_equal (Filename.concat absdir name) (Filename.concat absdir alternate_name) (* * Look through the entire directory for a name with alphabetic characters. * A check for case-sensitivity base on that. * * Raises Not_found if there are no such filenames. *) let rec dir_test_all_entries_exn absdir dir_handle = let name = try Unix.readdir dir_handle with Unix.Unix_error _ | End_of_file as exn -> Unix.closedir dir_handle; raise exn in match name with "." | ".." -> dir_test_all_entries_exn absdir dir_handle | _ -> try let result = stat_with_toggle_case absdir name in Unix.closedir dir_handle; result with Not_found -> dir_test_all_entries_exn absdir dir_handle (* * Check for sensativity by creating a dummy file. *) let dir_test_new_entry_exn absdir = Unix.access absdir [Unix.W_OK]; let name = sprintf "OM%06x.tmp" (Random.State.bits fs_random land 0xFFFFFF) in let absname = Filename.concat absdir name in let () = do_create absname in try let flag = stat_with_toggle_case absdir name in do_unlink absname; flag with Not_found as exn -> do_unlink absname; raise exn (* * To check for case sensitivity, try these tests in order, * stopping when one is successful. * 1. Try the name being created itself. * 2. Try looking at the directory entries. * 3. Create a dummy file, and test (unless the attept to do step 2 made * us realize there is no such directory). * 4. Test the parent. * * Steps 2-4 will only be performed when we really need them (the name contains * uppercase letters), *) exception Not_a_usable_directory exception Already_lowercase let rec check_already_lowercase name len i = if i = len then raise Already_lowercase else match name.[i] with 'A'..'Z' | '\192' .. '\214' | '\216' .. '\222' -> () | _ -> check_already_lowercase name len (i+1) let rec dir_test_sensitivity shortcircuit dir absdir name = try stat_with_toggle_case absdir name with Not_found -> if shortcircuit then check_already_lowercase name (String.length name) 0; try let dir_handle = try Unix.opendir absdir with Unix.Unix_error ((Unix.ENOENT | Unix.ENOTDIR | Unix.ELOOP | Unix.ENAMETOOLONG), _, _) -> raise Not_a_usable_directory in try dir_test_all_entries_exn absdir dir_handle with Unix.Unix_error _ | Not_found | End_of_file -> dir_test_new_entry_exn absdir with Unix.Unix_error _ | Not_found | End_of_file | Not_a_usable_directory -> match DirHash.get dir with DirRoot _ -> (* Nothing else we can do, assume sensitive *) true | DirSub (_, name, parent) -> dir_is_sensitive false parent name (* * This is the caching version of the case-sensitivity test. *) and dir_is_sensitive shortcircuit dir name = try DirTable.find !case_table dir with Not_found -> let absdir = abs_dir_name dir in let sensitive = if Lm_fs_case_sensitive.available then try Lm_fs_case_sensitive.case_sensitive absdir with Failure _ -> dir_test_sensitivity shortcircuit dir absdir name else dir_test_sensitivity shortcircuit dir absdir name in case_table := DirTable.add !case_table dir sensitive; sensitive (* * On Unix-like OS (especially on Mac OS X), create needs to check the fs of the node's parent * directory for case sensitivity. * See also http://bugzilla.metaprl.org/show_bug.cgi?id=657 *) let create = match Sys.os_type with "Win32" | "Cygwin" -> (fun _ name -> String.lowercase name) | _ -> (fun dir name -> try if dir_is_sensitive true dir name then name else String.lowercase name with Already_lowercase -> name) let compare = Lm_string_util.string_compare let equal (s1: string) s2 = (s1 = s2) let add_filename = HashCode.add_string let add_filename_string = Buffer.add_string let marshal s = String s let unmarshal = function String s -> s | _ -> raise MarshalError end (************************************************************************ * Directories. *) (* * Internally, we represent pathnames as absolute paths. * We keep a hashed integer for quick equality testing. * dir_root : the root of this name * dir_key : the path in canonical form (lowercase on Windows) * dir_name : the actual path will full capitalization *) (* %%MAGICBEGIN%% *) and DirElt : sig type t = DirRoot of Lm_filename_util.root | DirSub of FileCase.t * string * DirHash.t val abs_dir_name: DirHash.t -> string end = struct type t = DirRoot of Lm_filename_util.root | DirSub of FileCase.t * string * t hash_marshal_eq_item let abs_dir_name = let rec name buf dir = match DirHash.get dir with DirRoot root -> Buffer.add_string buf (Lm_filename_util.string_of_root root) | DirSub (key, _, parent) -> name buf parent; begin match DirHash.get parent with DirRoot _ -> () | _ -> Buffer.add_char buf Lm_filename_util.separator_char end; FileCase.add_filename_string buf key in fun dir -> let buf = Buffer.create 17 in let () = name buf dir in Buffer.contents buf end (* %%MAGICEND%% *) (* * Sets and tables. *) and DirCompare : HashMarshalEqArgSig with type t = DirElt.t = struct open DirElt type t = DirElt.t let debug = "Dir" let fine_hash = function DirRoot root -> Hashtbl.hash root | DirSub (_, raw_name, parent) -> let buf = HashCode.create () in HashCode.add_int buf (DirHash.hash parent); HashCode.add_string buf raw_name; HashCode.code buf let coarse_hash = function DirRoot root -> Hashtbl.hash root | DirSub (name, _, parent) -> let buf = HashCode.create () in HashCode.add_int buf (DirHash.hash parent); FileCase.add_filename buf name; HashCode.code buf let rec fine_compare dir1 dir2 = match dir1, dir2 with DirRoot root1, DirRoot root2 -> Pervasives.compare root1 root2 | DirSub (_, name1, parent1), DirSub (_, name2, parent2) -> let cmp = Lm_string_util.string_compare name1 name2 in if cmp = 0 then DirHash.fine_compare parent1 parent2 else cmp | DirRoot _, DirSub _ -> -1 | DirSub _, DirRoot _ -> 1 let rec coarse_compare dir1 dir2 = match dir1, dir2 with DirRoot root1, DirRoot root2 -> Pervasives.compare root1 root2 | DirSub (name1, _, parent1), DirSub (name2, _, parent2) -> let cmp = FileCase.compare name1 name2 in if cmp = 0 then DirHash.compare parent1 parent2 else cmp | DirRoot _, DirSub _ -> -1 | DirSub _, DirRoot _ -> 1 let reintern dir = match dir with DirRoot _ -> dir | DirSub (name1, name2, parent1) -> let parent2 = DirHash.reintern parent1 in if parent2 == parent1 then dir else DirSub (name1, name2, parent2) end (* %%MAGICBEGIN%% *) and DirHash : HashMarshalEqSig with type elt = DirElt.t with type t = DirElt.t hash_marshal_eq_item = MakeHashMarshalEq (DirCompare) and DirSet : Lm_set_sig.LmSet with type elt = DirHash.t = Lm_set.LmMake (DirHash) and DirTable : Lm_map_sig.LmMap with type key = DirHash.t = Lm_map.LmMake (DirHash) type dir = DirHash.t (* %%MAGICEND%% *) (* * Lists of directories. *) module rec DirListCompare : HashMarshalEqArgSig with type t = dir list = struct type t = dir list let debug = "DirList" let hash f l = let buf = HashCode.create () in List.iter (fun dir -> HashCode.add_int buf (f dir)) l; HashCode.code buf let fine_hash = hash DirHash.fine_hash let coarse_hash = hash DirHash.hash let rec compare f l1 l2 = match l1, l2 with d1 :: l1, d2 :: l2 -> let cmp = f d1 d2 in if cmp = 0 then compare f l1 l2 else cmp | [], [] -> 0 | [], _ :: _ -> -1 | _ :: _, [] -> 1 let fine_compare = compare DirHash.fine_compare let coarse_compare = compare DirHash.compare let reintern l = Lm_list_util.smap DirHash.reintern l end and DirListHash : HashMarshalEqSig with type elt = dir list = MakeHashMarshalEq (DirListCompare);; module DirListSet = Lm_set.LmMake (DirListHash);; module DirListTable = Lm_map.LmMake (DirListHash);; open DirElt (************************************************************************ * Nodes. *) (* * Possible node flags. *) (* %%MAGICBEGIN%% *) type node_flag = NodeIsOptional | NodeIsExisting | NodeIsSquashed | NodeIsScanner (* * A node is a phony, or it is a filename. *) type node_elt = NodeFile of dir * FileCase.t * string | NodePhonyGlobal of string | NodePhonyDir of dir * FileCase.t * string | NodePhonyFile of dir * FileCase.t * string * string | NodeFlagged of node_flag * node_elt hash_marshal_eq_item (* %%MAGICEND%% *) module rec NodeCompare : sig include HashMarshalEqArgSig with type t = node_elt (* Include the default "compare" for the PreNodeSet *) val compare : t -> t -> int end = struct type t = node_elt;; let debug = "Node" type code = CodeSpace | CodeEnd | CodeNodeFile | CodeNodePhonyGlobal | CodeNodePhonyDir | CodeNodePhonyFile | CodeNodeFlagged | CodeNodeIsOptional | CodeNodeIsExisting | CodeNodeIsSquashed | CodeNodeIsScanner let add_code buf (code : code) = HashCode.add_bits buf (Obj.magic code) let add_flag_code buf code = let code = match code with NodeIsOptional -> CodeNodeIsOptional | NodeIsExisting -> CodeNodeIsExisting | NodeIsSquashed -> CodeNodeIsSquashed | NodeIsScanner -> CodeNodeIsScanner in add_code buf code module MakeNodeOps (Arg : sig val add_dir : HashCode.t -> DirHash.t -> unit val add_node : HashCode.t -> NodeHash.t -> unit val add_filename : HashCode.t -> FileCase.t -> string -> unit val filename_compare : FileCase.t -> string -> FileCase.t -> string -> int val node_compare : NodeHash.t -> NodeHash.t -> int val dir_compare : DirHash.t -> DirHash.t -> int end) = struct open Arg let add_node buf node = match node with NodeFile (dir, name, raw_name) -> add_code buf CodeNodeFile; add_dir buf dir; add_code buf CodeSpace; add_filename buf name raw_name; add_code buf CodeEnd | NodePhonyGlobal name -> add_code buf CodeNodePhonyGlobal; HashCode.add_string buf name; add_code buf CodeEnd | NodePhonyDir (dir, name, raw_name) -> add_code buf CodeNodePhonyDir; add_dir buf dir; add_code buf CodeSpace; add_filename buf name raw_name; add_code buf CodeEnd | NodePhonyFile (dir, key, raw_name, name) -> add_code buf CodeNodePhonyFile; add_dir buf dir; add_code buf CodeSpace; add_filename buf key raw_name; add_code buf CodeSpace; HashCode.add_string buf name; add_code buf CodeEnd | NodeFlagged (flag, node) -> add_code buf CodeNodeFlagged; add_flag_code buf flag; add_code buf CodeSpace; add_node buf node; add_code buf CodeEnd let hash node = let buf = HashCode.create () in add_node buf node; HashCode.code buf let compare_flags flag1 flag2 = match flag1, flag2 with NodeIsOptional, NodeIsOptional | NodeIsExisting, NodeIsExisting | NodeIsSquashed, NodeIsSquashed | NodeIsScanner, NodeIsScanner -> 0 | NodeIsOptional, NodeIsExisting | NodeIsOptional, NodeIsSquashed | NodeIsOptional, NodeIsScanner | NodeIsExisting, NodeIsSquashed | NodeIsExisting, NodeIsScanner | NodeIsSquashed, NodeIsScanner -> -1 | NodeIsExisting, NodeIsOptional | NodeIsSquashed, NodeIsOptional | NodeIsScanner, NodeIsOptional | NodeIsSquashed, NodeIsExisting | NodeIsScanner, NodeIsExisting | NodeIsScanner, NodeIsSquashed -> 1 let compare node1 node2 = match node1, node2 with NodeFile (dir1, key1, name1), NodeFile (dir2, key2, name2) | NodePhonyDir (dir1, key1, name1), NodePhonyDir (dir2, key2, name2) -> let cmp = filename_compare key1 name1 key2 name2 in if cmp = 0 then dir_compare dir1 dir2 else cmp | NodePhonyGlobal name1, NodePhonyGlobal name2 -> Lm_string_util.string_compare name1 name2 | NodePhonyFile (dir1, key1, name1, exname1), NodePhonyFile (dir2, key2, name2, exname2) -> let cmp = Lm_string_util.string_compare exname1 exname2 in if cmp = 0 then let cmp = filename_compare key1 name1 key2 name2 in if cmp = 0 then dir_compare dir1 dir2 else cmp else cmp | NodeFlagged (flag1, node1), NodeFlagged (flag2, node2) -> let cmp = compare_flags flag1 flag2 in if cmp = 0 then node_compare node1 node1 else cmp | NodeFile _, NodePhonyGlobal _ | NodeFile _, NodePhonyDir _ | NodeFile _, NodePhonyFile _ | NodeFile _, NodeFlagged _ | NodePhonyGlobal _, NodePhonyDir _ | NodePhonyGlobal _, NodePhonyFile _ | NodePhonyGlobal _, NodeFlagged _ | NodePhonyDir _, NodePhonyFile _ | NodePhonyDir _, NodeFlagged _ | NodePhonyFile _, NodeFlagged _ -> -1 | NodeFlagged _, NodeFile _ | NodePhonyGlobal _, NodeFile _ | NodePhonyDir _, NodeFile _ | NodePhonyFile _, NodeFile _ | NodeFlagged _, NodePhonyGlobal _ | NodePhonyDir _, NodePhonyGlobal _ | NodePhonyFile _, NodePhonyGlobal _ | NodeFlagged _, NodePhonyDir _ | NodePhonyFile _, NodePhonyDir _ | NodeFlagged _, NodePhonyFile _ -> 1 end;; (* * These operations are case insensitive on case-insensitive * filesystems. They use the canonical FileCase.t name. *) module Ops = MakeNodeOps (struct let add_dir buf dir = HashCode.add_int buf (DirHash.hash dir ) let add_node buf node = HashCode.add_int buf (NodeHash.hash node) let add_filename buf name raw_name = FileCase.add_filename buf name let filename_compare name1 _raw_name1 name2 _raw_name2 = FileCase.compare name1 name2 let node_compare = NodeHash.compare let dir_compare = DirHash.compare end);; (* * These operations are always case-sensitive. *) module FineOps = MakeNodeOps (struct let add_dir buf dir = HashCode.add_int buf (DirHash.fine_hash dir ) let add_node buf node = HashCode.add_int buf (NodeHash.fine_hash node) let add_filename buf name raw_name = HashCode.add_string buf raw_name let filename_compare _name1 raw_name1 _name2 raw_name2 = String.compare raw_name1 raw_name2 let node_compare = NodeHash.fine_compare let dir_compare = DirHash.fine_compare end);; let coarse_compare = Ops.compare let coarse_hash = Ops.hash let fine_compare = FineOps.compare let fine_hash = FineOps.hash let compare = Ops.compare (* for the PreNodeSet *) let reintern node = match node with NodeFile (dir1, key, name) -> let dir2 = DirHash.reintern dir1 in if dir2 == dir1 then node else NodeFile (dir2, key, name) | NodePhonyDir (dir1, key, name) -> let dir2 = DirHash.reintern dir1 in if dir2 == dir1 then node else NodePhonyDir (dir2, key, name) | NodePhonyFile (dir1, key, name1, name2) -> let dir2 = DirHash.reintern dir1 in if dir2 == dir1 then node else NodePhonyFile (dir2, key, name1, name2) | NodePhonyGlobal _ -> node | NodeFlagged (flag, node1) -> let node2 = NodeHash.reintern node1 in if node2 == node1 then node else NodeFlagged (flag, node2) end (* %%MAGICBEGIN%% *) and NodeHash : HashMarshalEqSig with type elt = node_elt with type t = node_elt hash_marshal_eq_item = MakeHashMarshalEq (NodeCompare);; type node = NodeHash.t (* %%MAGICEND%% *) module NodeSet = Lm_set.LmMake (NodeHash);; module NodeTable = Lm_map.LmMake (NodeHash);; module NodeMTable = Lm_map.LmMakeList (NodeHash);; module PreNodeSet = Lm_set.LmMake (NodeCompare);; (************************************************************************ * Implementation. *) (* * Get a pathname from a directory. * The name must be reversed. *) let rec path_of_dir_aux keypath path dir = match DirHash.get dir with DirRoot root -> root, keypath, path | DirSub (key, name, parent) -> path_of_dir_aux (key :: keypath) (name :: path) parent let path_of_dir dir = path_of_dir_aux [] [] dir (* * Build a list of the directories, in reverse order. *) let dir_list_of_dir dir = let rec dir_list_of_dir path dir = match DirHash.get dir with DirRoot _ -> dir :: path | DirSub (_, _, parent) -> dir_list_of_dir (dir :: path) parent in dir_list_of_dir [] dir (* * Produce a path (a string list) from the dir list. *) let rec path_of_dir_list dirs = match dirs with [] -> [] | dir :: dirs -> match DirHash.get dir with DirSub (_, name, _) -> name :: path_of_dir_list dirs | DirRoot _ -> raise (Invalid_argument "path_of_dir_list") (* * Make a directory node from the pathname. *) let make_subdir parent name = DirHash.create (DirSub (FileCase.create parent name, name, parent)) let make_dir root path = List.fold_left make_subdir (DirHash.create (DirRoot root)) path (* * Get the current absolute name of the working directory. *) let getcwd () = let cwd = Unix.getcwd () in match Lm_filename_util.filename_path cwd with AbsolutePath (root, dir) -> make_dir root dir | RelativePath dir -> raise (Invalid_argument "Unix.getcwd returned a relative path") (* * A null root directory for globals. *) let null_root = make_dir null_root [] (* * Fake root for "absname" computations *) let impossible_root = make_dir (DriveRoot '$') [] (* * Split the directory name into a path. *) let rec path_simplify dir = function "" :: path | "." :: path -> path_simplify dir path | ".." :: path -> let dir = match DirHash.get dir with DirSub (_, _, parent) -> parent | DirRoot _ -> dir in path_simplify dir path | [name] -> dir, Some name | name :: path -> path_simplify (make_subdir dir name) path | [] -> dir, None let new_path dir path = match Lm_filename_util.filename_path path with AbsolutePath (root, path) -> (* This is an absolute path, so ignore the directory *) path_simplify (make_dir root []) path | RelativePath path -> (* This is relative to the directory *) path_simplify dir path let new_dir dir path = match new_path dir path with dir, None -> dir | dir, Some name -> make_subdir dir name let new_file dir path = let dir, name = new_path dir path in match name with Some name -> let key = FileCase.create dir name in dir, key, name | None -> begin match DirHash.get dir with DirSub (key, name, dir) -> dir, key, name | DirRoot _ -> let name = "." in let key = FileCase.create dir name in dir, key, name end (* * Check if .. works in a directory. *) let dotdot_table = ref DirTable.empty (* * Force dotdot to fail. *) let make_dotdot_fail dir = dotdot_table := DirTable.add !dotdot_table dir true let dotdot_fails dir = let table = !dotdot_table in try DirTable.find table dir with Not_found -> let name = DirElt.abs_dir_name dir in let islink = try (Unix.lstat name).Unix.st_kind = Unix.S_LNK with Unix.Unix_error _ -> false in let table = DirTable.add table dir islink in dotdot_table := table; islink (* * Produce string filename for the path, * relative to a particular directory. * * Algorithm: * 1. Compute the common prefix between the directory and file * 2. Add as many ".." as there are remaining names in the directory * and concatenate the rest of the path. * * Example: * dir = /a/b/c/d * path = /a/b/e/f/g * result = ../../e/f/g *) (* * Create a string from the list of strings. *) let rec flatten_generic (add_string : 'a -> string -> 'a) (contents : 'a -> string) (buf : 'a) (path : string list) = match path with [path] -> let buf = add_string buf path in contents buf | [] -> contents buf | name :: path -> let buf = add_string buf name in let buf = add_string buf Lm_filename_util.separator_string in flatten_generic add_string contents buf path (* * Add .. to get out of the directory and down into the path. *) let updirs_generic add_string contents buf dirs1 dirs2 = (* Abort if any of the dotdots fail *) if List.exists dotdot_fails dirs1 then None else (* Prepend the .. sequence *) let rec updirs dirs path = match dirs with _ :: dirs -> updirs dirs (".." :: path) | [] -> path in let path = path_of_dir_list dirs2 in let path = updirs dirs1 path in Some (flatten_generic add_string contents buf path) (* * Compute the path of dir2 relative to dir1. *) let rec relocate_generic add_string contents buf (dirs1 : dir list) (dirs2 : dir list) = match dirs1, dirs2 with | [], _ -> Some (flatten_generic add_string contents buf (path_of_dir_list dirs2)) | _, [] -> updirs_generic add_string contents buf dirs1 dirs2 | dir1 :: dirs1', dir2 :: dirs2' -> if DirHash.equal dir1 dir2 then relocate_generic add_string contents buf dirs1' dirs2' else updirs_generic add_string contents buf dirs1 dirs2 (* * If the files differ in the root directory, just use the absolute path. *) let relocate_generic add_string contents buf dir1 dir2 = let dirs1 = dir_list_of_dir dir1 in let dirs2 = dir_list_of_dir dir2 in match dirs1, dirs2 with dir1 :: dirs1, dir2 :: dirs2 -> (match DirHash.get dir1, DirHash.get dir2 with DirRoot root1, DirRoot root2 -> (let s = if dirs1 = [] || root1 <> root2 then None else relocate_generic add_string contents buf dirs1 dirs2 in match s with Some s -> s | None -> let buf = add_string buf (Lm_filename_util.string_of_root root2) in let path2 = path_of_dir_list dirs2 in flatten_generic add_string contents buf path2) | _ -> raise (Invalid_argument "relocate_generic")) | _ -> raise (Invalid_argument "relocate_generic") (* * Directory versions. *) let dir_buffer = Buffer.create 17 let dir_add_string buf s = Buffer.add_string buf s; buf let dir_contents buf = let s = Buffer.contents buf in Buffer.clear buf; s let flatten_dir dir = flatten_generic dir_add_string dir_contents dir_buffer dir let relocate_dir dir1 dir2 = relocate_generic dir_add_string dir_contents dir_buffer dir1 dir2 (* * File version. *) let file_contents name buf = let len = Buffer.length buf in let buf = if len = 0 || Buffer.nth buf (len - 1) = Lm_filename_util.separator_char then buf else dir_add_string buf Lm_filename_util.separator_string in let buf = dir_add_string buf name in dir_contents buf let flatten_file dir name = let buf = dir_add_string dir_buffer Lm_filename_util.separator_string in flatten_generic dir_add_string (file_contents name) buf dir let relocate_file dir1 dir2 name = if DirHash.equal dir1 dir2 then name else relocate_generic dir_add_string (file_contents name) dir_buffer dir1 dir2 (* * Apply a mount point. *) let rec resolve_mount_dir dir_dst dir_src dir = if DirHash.compare dir dir_dst = 0 then dir_src else match DirHash.get dir with DirRoot _ -> raise Not_found | DirSub (key, name, parent) -> let parent = resolve_mount_dir dir_dst dir_src parent in DirHash.create (DirSub (key, name, parent)) let rec resolve_mount_node dir_dst dir_src node = let node = match NodeHash.get node with NodeFile (dir, key, name) -> let dir = resolve_mount_dir dir_dst dir_src dir in NodeFile (dir, key, name) | NodePhonyDir (dir, key, name) -> let dir = resolve_mount_dir dir_dst dir_src dir in NodePhonyDir (dir, key, name) | NodePhonyFile (dir, key1, name1, name) -> let dir = resolve_mount_dir dir_dst dir_src dir in NodePhonyFile (dir, key1, name1, name) | NodePhonyGlobal _ -> raise Not_found | NodeFlagged (flag, node) -> NodeFlagged (flag, resolve_mount_node dir_dst dir_src node) in NodeHash.create node (* * A name can stand for a global phony only if it has no slashes, * or it only leads with a slash. Raises Not_found if the name * contains any non-leading slashes. *) type phony_name = PhonyGlobalString of string | PhonyDirString of string | PhonySimpleString | PhonyPathString (* Starting at position i, s begins with ".PHONY/" *) let string_prefix_phony s i len = len >= i + 7 && s.[i ] = '.' && s.[i+1] = 'P' && s.[i+2] = 'H' && s.[i+3] = 'O' && s.[i+4] = 'N' && s.[i+5] = 'Y' && (s.[i+6] = '/' || s.[i+6] = '\\') let rec is_simple_string s len i = (i = len) || match s.[i] with '/' | '\\' -> false | _ -> is_simple_string s len (succ i) let parse_phony_name s = let len = String.length s in if len = 0 then PhonySimpleString else match s.[0] with '/' | '\\' -> if string_prefix_phony s 1 len && is_simple_string s len 8 then (* /.PHONY/foo *) PhonyGlobalString (String.sub s 8 (len - 8)) else PhonyPathString | '.' when string_prefix_phony s 0 len -> (* .PHONY/foo/bar *) PhonyDirString (String.sub s 7 (len - 7)) | _ -> if is_simple_string s len 1 then PhonySimpleString else PhonyPathString (************************************************************************ * Modules. *) module Dir = struct type t = dir (* * We assume the cwd does not change * once we first get it. *) let cwd_ref = let dir = try getcwd () with Unix.Unix_error (err, _, _) -> eprintf "@[*** omake: warning:@ Can not find out the current directory:@ %s;@ Using the root directory instead.@]@." (Unix.error_message err); null_root in ref dir (* * Default is current working directory. *) let cwd () = !cwd_ref let reset_cwd () = let cwd = getcwd () in cwd_ref := getcwd (); make_dotdot_fail cwd (* * Building a new path. *) let chdir = new_dir (* * Name, relative to the cwd. *) let name dir1 dir2 = if DirHash.equal dir1 dir2 then "." else relocate_dir dir1 dir2 (* * Name relative to the root. *) let fullname dir = name !cwd_ref dir (* * Absolute name. *) let root = null_root let absname dir = name impossible_root dir (* * Library directory is relative to the root. *) let lib = match Lm_filename_util.filename_path Omake_state.lib_dir with AbsolutePath (root, dir) -> make_dir root dir | RelativePath _ -> raise (Invalid_argument ("Omake_node.lib_dir specified as relative path: " ^ Omake_state.lib_dir)) (* * home directory is also relative to the root. *) let home = match Lm_filename_util.filename_path home_dir with AbsolutePath (root, dir) -> make_dir root dir | RelativePath _ -> raise (Invalid_argument ("Omake_node.home_dir specified as relative path: " ^ home_dir)) let () = make_dotdot_fail home (* * Equality. *) let compare = DirHash.compare let equal = DirHash.equal (* * Marshaling. *) let marshal_root root = match root with NullRoot -> Magic NullRootMagic | DriveRoot c -> List [Magic DriveRootMagic; Char c] let unmarshal_root l = match l with Magic NullRootMagic -> NullRoot | List [Magic DriveRootMagic; Char c] -> DriveRoot c | _ -> raise MarshalError let rec marshal dir = match DirHash.get dir with DirRoot root -> List [Magic DirRootMagic; marshal_root root] | DirSub (key, name, parent) -> List [Magic DirSubMagic; FileCase.marshal key; String name; marshal parent] let rec unmarshal l = let dir = match l with List [Magic DirRootMagic; root] -> DirRoot (unmarshal_root root) | List [Magic DirSubMagic; key; String name; parent] -> DirSub (FileCase.unmarshal key, name, unmarshal parent) | _ -> raise MarshalError in DirHash.create dir end;; (* * Virtual mounts. * We need a function that checks if a file exists. *) module Mount = struct type t = (Dir.t * Dir.t * mount_option list) list type dir_tmp = dir type node_tmp = node type dir = dir_tmp type node = node_tmp (* * Create a new mount state. *) let empty = [] (* * Add a mount point. *) let mount info options dir_src dir_dst = (dir_dst, dir_src, options) :: info end;; type mount_info = node poly_mount_info let no_mount_info = { mount_file_exists = (fun _ -> false); mount_file_reset = (fun _ -> ()); mount_is_dir = (fun _ -> false); mount_stat = (fun _ -> raise (Invalid_argument "no_mount_info")); mount_digest = (fun _ -> None) } (* * Nodes. *) module Node = struct type pre = node_elt type t = node type dir = Dir.t type mount = Mount.t open Mount;; let dest = NodeHash.get (* * Get the name. *) let phony_name name = "<" ^ name ^ ">" (* * Name of the node. *) let rec name dir1 node = match NodeHash.get node with NodePhonyGlobal name -> phony_name name | NodePhonyDir (dir2, _, name) -> phony_name (relocate_file dir1 dir2 name) | NodePhonyFile (dir2, _, name1, name2) -> phony_name (relocate_file dir1 dir2 name1 ^ ":" ^ name2) | NodeFile (dir2, _, name) -> relocate_file dir1 dir2 name | NodeFlagged (_, node) -> name dir1 node (* * Create a phony name. *) let create_phony_global name = NodeHash.create (NodePhonyGlobal name) (* * Create a phony from a dir. *) let create_phony_dir dir name = let key = FileCase.create dir name in NodeHash.create (NodePhonyDir (dir, key, name)) (* * Create a phony with a new directory. *) let create_phony_chdir node dir = match NodeHash.get node with NodePhonyDir (_, _, name) -> create_phony_dir dir name | _ -> node (* * Create a new phony node from a previous node. * These are not interned. *) let rec create_phony_node node name = match NodeHash.get node with NodeFile (dir, key1, name1) -> NodeHash.create (NodePhonyFile (dir, key1, name1, name)) | NodePhonyGlobal name1 -> let key1 = FileCase.create null_root name1 in NodeHash.create (NodePhonyFile (null_root, key1, name1, name)) | NodePhonyDir (dir, key1, name1) | NodePhonyFile (dir, key1, name1, _) -> NodeHash.create (NodePhonyFile (dir, key1, name1, name)) | NodeFlagged (_, node) -> create_phony_node node name (* * Get the core node. *) let rec core node = match NodeHash.get node with NodePhonyGlobal _ | NodePhonyDir _ | NodePhonyFile _ | NodeFile _ -> node | NodeFlagged (_, node) -> core node (* * Escape a node. *) let create_escape kind node = let node = core node in match kind with NodeNormal -> node | NodePhony -> raise (Invalid_argument "Omake_node.Node.escape: NodePhony is not allowed") | NodeOptional -> NodeHash.create (NodeFlagged (NodeIsOptional, node)) | NodeExists -> NodeHash.create (NodeFlagged (NodeIsExisting, node)) | NodeSquashed -> NodeHash.create (NodeFlagged (NodeIsSquashed, node)) | NodeScanner -> NodeHash.create (NodeFlagged (NodeIsScanner, node)) (* * Hash code for a node. *) let hash = NodeHash.hash let reintern = NodeHash.reintern (* * For building targets, we sometimes want to know the * original node. *) let rec unsquash node = match NodeHash.get node with NodePhonyGlobal _ | NodePhonyDir _ | NodePhonyFile _ | NodeFile _ | NodeFlagged (NodeIsOptional, _) | NodeFlagged (NodeIsScanner, _) | NodeFlagged (NodeIsExisting, _) -> node | NodeFlagged (NodeIsSquashed, node) -> unsquash node (* * Kind of the node. *) let kind node = match NodeHash.get node with NodePhonyGlobal _ | NodePhonyDir _ | NodePhonyFile _ -> NodePhony | NodeFile _ -> NodeNormal | NodeFlagged (NodeIsOptional, _) -> NodeOptional | NodeFlagged (NodeIsExisting, _) -> NodeExists | NodeFlagged (NodeIsSquashed, _) -> NodeSquashed | NodeFlagged (NodeIsScanner, _) -> NodeScanner (* * Phony nodes. *) let rec is_phony node = match NodeHash.get node with NodePhonyGlobal _ | NodePhonyDir _ | NodePhonyFile _ -> true | NodeFile _ | NodeFlagged _ -> false let rec phony_name node = match NodeHash.get node with NodePhonyGlobal name | NodePhonyDir (_, _, name) | NodePhonyFile (_, _, _, name) -> name | NodeFile _ -> raise (Invalid_argument "phony_name") | NodeFlagged (_, node) -> phony_name node let rec is_real node = match NodeHash.get node with NodePhonyGlobal _ | NodePhonyDir _ | NodePhonyFile _ | NodeFlagged (NodeIsOptional, _) | NodeFlagged (NodeIsExisting, _) -> false | NodeFile _ -> true | NodeFlagged (NodeIsSquashed, node) | NodeFlagged (NodeIsScanner, node) -> is_real node (* * Existential flag. *) let always_exists node = match NodeHash.get node with NodeFlagged (NodeIsOptional, _) | NodeFlagged (NodeIsExisting, _) -> true | NodeFlagged (NodeIsSquashed, _) | NodeFlagged (NodeIsScanner, _) | NodePhonyGlobal _ | NodePhonyDir _ | NodePhonyFile _ | NodeFile _ -> false (* * Just the tail name. *) let rec tail node = match NodeHash.get node with NodePhonyGlobal name | NodePhonyDir (_, _, name) | NodePhonyFile (_, _, _, name) | NodeFile (_, _, name) -> name | NodeFlagged (_, node) -> tail node (* * Get the name of the directory. *) let rec dir node = match NodeHash.get node with NodePhonyGlobal _ -> null_root | NodePhonyDir (dir, _, _) | NodePhonyFile (dir, _, _, _) | NodeFile (dir, _, _) -> dir | NodeFlagged (_, node) -> dir node (* * Equality testing. *) let compare = NodeHash.compare let equal = NodeHash.equal (* * Flags. *) let marshal_flag = function NodeIsOptional -> Magic NodeIsOptionalMagic | NodeIsExisting -> Magic NodeIsExistingMagic | NodeIsSquashed -> Magic NodeIsSquashedMagic | NodeIsScanner -> Magic NodeIsScannerMagic let unmarshal_flag flag = match flag with Magic NodeIsOptionalMagic -> NodeIsOptional | Magic NodeIsExistingMagic -> NodeIsExisting | Magic NodeIsSquashedMagic -> NodeIsSquashed | Magic NodeIsScannerMagic -> NodeIsScanner | _ -> raise MarshalError (* * Marshaling. *) let rec marshal node = match NodeHash.get node with NodeFile (dir, name1, name2) -> List [Magic NodeFileMagic; Dir.marshal dir; FileCase.marshal name1; String name2] | NodePhonyGlobal s -> List [Magic NodePhonyGlobalMagic; String s] | NodePhonyDir (dir, name1, name2) -> List [Magic NodePhonyDirMagic; Dir.marshal dir; FileCase.marshal name1; String name2] | NodePhonyFile (dir, name1, name2, name3) -> List [Magic NodePhonyFileMagic; Dir.marshal dir; FileCase.marshal name1; String name2; String name3] | NodeFlagged (flag, node) -> List [Magic NodeFlaggedMagic; marshal_flag flag; marshal node] let rec unmarshal l = let node = match l with List [Magic NodeFileMagic; dir; name1; String name2] -> NodeFile (Dir.unmarshal dir, FileCase.unmarshal name1, name2) | List [Magic NodePhonyGlobalMagic; String s] -> NodePhonyGlobal s | List [Magic NodePhonyDirMagic; dir; name1; String name2] -> NodePhonyDir (Dir.unmarshal dir, FileCase.unmarshal name1, name2) | List [Magic NodePhonyFileMagic; dir; name1; String name2; String name3] -> NodePhonyFile (Dir.unmarshal dir, FileCase.unmarshal name1, name2, name3) | List [Magic NodeFlaggedMagic; flag; node] -> NodeFlagged (unmarshal_flag flag, unmarshal node) | _ -> raise MarshalError in NodeHash.create node (* * This is a hack to allow Omake_cache to take stats of directories. *) let node_of_dir dir = let name = "." in NodeHash.create (NodeFile (dir, FileCase.create dir name, name)) (* * Full name is relative to the cwd. *) let fullname node = name (Dir.cwd ()) node let absname node = name impossible_root node (************************************************************************ * Mount point handling. *) let unlink_file filename = try Unix.unlink filename with Unix.Unix_error _ -> () let copy_file mount_info src dst = if mount_info.mount_is_dir src then begin if not (mount_info.mount_is_dir dst) then begin Lm_filename_util.mkdirhier (fullname dst) 0o777; mount_info.mount_file_reset dst end end else let src_digest = mount_info.mount_digest src in let dst_digest = mount_info.mount_digest dst in if src_digest <> dst_digest then let dir = dir dst in let mode = (mount_info.mount_stat src).Unix.LargeFile.st_perm in Lm_filename_util.mkdirhier (Dir.fullname dir) 0o777; Lm_unix_util.copy_file (absname src) (absname dst) mode; mount_info.mount_file_reset dst let symlink_file_unix mount_info src dst = if mount_info.mount_is_dir src then begin if not (mount_info.mount_is_dir dst) then begin Lm_filename_util.mkdirhier (fullname dst) 0o777; mount_info.mount_file_reset dst end end else let src_digest = mount_info.mount_digest src in let dst_digest = mount_info.mount_digest dst in if src_digest <> dst_digest then let dir = dir dst in let src_name = name dir src in let dst_name = fullname dst in Lm_filename_util.mkdirhier (Dir.fullname dir) 0o777; unlink_file dst_name; Unix.symlink src_name dst_name; mount_info.mount_file_reset dst let symlink_file = if Sys.os_type = "Win32" then copy_file else symlink_file_unix let create_node mount_info mounts dir name = let { mount_file_exists = file_exists; mount_file_reset = reset_file } = mount_info in let dir, key, name = new_file dir name in let node = NodeHash.create (NodeFile (dir, key, name)) in let rec search mounts = match mounts with (dir_dst, dir_src, options) :: mounts -> (try let node' = resolve_mount_node dir_dst dir_src node in if file_exists node' then if List.mem MountCopy options then begin copy_file mount_info node' node; node end else if List.mem MountLink options then begin symlink_file mount_info node' node; node end else node' else raise Not_found with Not_found -> search mounts) | [] -> node in search mounts end (* * Intern a string with no escapes. * This version ignores mount points. * Check for existing phonies first. * NOTE: NodeHash.intern will not create the * node if it does not already exist. *) let create_node_or_phony phonies mount_info mount phony_ok dir name = match parse_phony_name name, phony_ok with PhonyDirString name, PhonyOK | PhonyDirString name, PhonyExplicit -> let dir, key, name = new_file dir name in NodeHash.create (NodePhonyDir (dir, key, name)) | PhonyGlobalString name, PhonyOK | PhonyGlobalString name, PhonyExplicit -> NodeHash.create (NodePhonyGlobal name) | PhonyDirString _, PhonyProhibited | PhonyGlobalString _, PhonyProhibited -> raise (Invalid_argument "Omake_node.Node.intern: NodePhony is not allowed"); | PhonySimpleString, PhonyOK -> (* Try PhonyDir first *) let node = NodePhonyDir (dir, FileCase.create dir name, name) in if PreNodeSet.mem phonies node then NodeHash.create node else (* Try PhonyGlobal next *) let node = NodePhonyGlobal name in if PreNodeSet.mem phonies node then NodeHash.create node else Node.create_node mount_info mount dir name | PhonySimpleString, PhonyExplicit | PhonySimpleString, PhonyProhibited | PhonyPathString, _ -> Node.create_node mount_info mount dir name (* * Print the directory, for debugging. *) let pp_print_dir buf dir = let root, _, path = path_of_dir dir in fprintf buf "%s%s" (**) (Lm_filename_util.string_of_root root) (flatten_dir path) (* * Print the kind. *) let pp_print_node_kind buf kind = let s = match kind with NodePhony -> "phony" | NodeOptional -> "optional" | NodeExists -> "exists" | NodeSquashed -> "squashed" | NodeScanner -> "scanner" | NodeNormal -> "normal" in pp_print_string buf s (* * Print the node, for debugging. *) let pp_print_node buf node = match Node.kind node with NodePhony -> fprintf buf "" (Node.fullname node) | NodeOptional -> fprintf buf "" (Node.fullname node) | NodeExists -> fprintf buf "" (Node.fullname node) | NodeSquashed -> fprintf buf "" (Node.fullname node) | NodeScanner -> fprintf buf "" (Node.fullname node) | NodeNormal -> pp_print_string buf (Node.fullname node) let pp_print_string_list buf sources = List.iter (fun s -> fprintf buf "@ %s" s) (List.sort String.compare sources) let pp_compare_nodes n1 n2 = let cmp = Pervasives.compare (Node.kind n1) (Node.kind n2) in if cmp = 0 then let cmp = String.compare (Node.fullname n1) (Node.fullname n2) in if cmp = 0 then NodeHash.compare n1 n2 else cmp else cmp let pp_print_node_sorted buf nodes = let nodes = List.sort pp_compare_nodes nodes in List.iter (fun node -> fprintf buf "@ %a" pp_print_node node) nodes let pp_print_node_list buf nodes = List.iter (fun node -> fprintf buf "@ %a" pp_print_node node) nodes let pp_print_node_set buf set = pp_print_node_list buf (NodeSet.elements set) let pp_print_node_table buf table = pp_print_node_list buf (NodeTable.keys table) let pp_print_node_set_table buf table = NodeTable.iter (fun node set -> fprintf buf "@ @[%a:%a@]" (**) pp_print_node node pp_print_node_set set) table let pp_print_node_set_table_opt buf table_opt = match table_opt with Some table -> pp_print_node_set_table buf table | None -> pp_print_string buf "" (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_ir_free_vars.mli0000664000152300015230000000301710615471254016667 0ustar jyhjyh(* * Calculate the static free variables of an expression. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Omake_ir type free_vars val free_vars_exp : exp -> free_vars val free_vars_exp_list : exp list -> free_vars (* * Operations on free var sets. *) val free_vars_empty : free_vars val free_vars_union : free_vars -> free_vars -> free_vars val free_vars_set : free_vars -> VarInfoSet.t (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_command_type.ml0000664000152300015230000001410510634030714016520 0ustar jyhjyh(* * Command lines. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_location open Omake_node open Omake_ir_print (* * Individual command arguments have three forms: * - value lists * - arg_string lists * - string * * The arg_string is like a string, but various parts of it are quoted. *) type arg_string = ArgString of string | ArgData of string type arg = arg_string list (* * Command digest. *) type command_digest = Digest.t option (* * A command line is a string, together with come flags. *) type command_flag = QuietFlag | AllowFailureFlag | AllowOutputFlag (* * The command line has some flags, * and a string to be executed internally * or passed to the shell. *) type ('exp, 'argv, 'value) poly_command_inst = CommandEval of 'exp list | CommandPipe of 'argv | CommandValues of 'value list type ('venv, 'exp, 'argv, 'value) poly_command_line = { command_loc : loc; command_dir : Dir.t; command_target : Node.t; command_flags : command_flag list; command_venv : 'venv; command_inst : ('exp, 'argv, 'value) poly_command_inst } (************************************************************************ * Printing. *) let simple_string_of_arg arg = match arg with [ArgString s] | [ArgData s] -> s | _ -> let buf = Buffer.create 32 in List.iter (fun arg -> let s = match arg with ArgString s -> s | ArgData s -> s in Buffer.add_string buf s) arg; Buffer.contents buf let glob_string_of_arg options arg = let buf = Buffer.create 32 in List.iter (fun arg -> match arg with ArgString s -> Buffer.add_string buf s | ArgData s -> Lm_glob.glob_add_escaped options buf s) arg; Buffer.contents buf let is_glob_arg options arg = List.exists (fun arg -> match arg with ArgString s -> Lm_glob.is_glob_string options s | ArgData _ -> false) arg let is_quoted_arg arg = List.exists (fun v -> match v with ArgString _ -> false | ArgData _ -> true) arg let pp_arg_data_string = let special1 = "\" \t<>&;()*~{}[]?!|" in (* Can be protected both by '...c...' and \c *) let special2 = "\\\n\r'" in (* Must be protected by \c *) let special_all = special1 ^ special2 in let rec pp_w_escapes buf special s = if Lm_string_util.contains_any s special then begin let i = Lm_string_util.index_set s special in pp_print_string buf (String.sub s 0 i); pp_print_char buf '\\'; pp_print_char buf (**) (match s.[i] with '\n' -> 'n' | '\r' -> 'r' | '\t' -> 't' | c -> c); let i = i + 1 in pp_w_escapes buf special (String.sub s i (String.length s - i)) end else pp_print_string buf s in let pp_w_quotes buf s = if Lm_string_util.contains_any s special1 then if String.length s > 2 then begin pp_print_char buf '\''; pp_w_escapes buf special2 s; pp_print_char buf '\'' end else pp_w_escapes buf special_all s else pp_w_escapes buf special2 s in pp_w_quotes let pp_print_arg = let pp_print_arg_elem buf = function ArgString s -> pp_print_string buf s | ArgData s -> pp_arg_data_string buf s in (fun buf arg -> List.iter (pp_print_arg_elem buf) arg) let pp_print_verbose_arg buf arg = List.iter (fun arg -> match arg with ArgString s -> pp_print_string buf s | ArgData s -> fprintf buf "'%s'" s) arg let pp_print_command_flag buf flag = let c = match flag with QuietFlag -> '@' | AllowFailureFlag -> '-' | AllowOutputFlag -> '*' in pp_print_char buf c let pp_print_command_flags buf flags = List.iter (pp_print_command_flag buf) flags module type PrintArgvSig = sig type argv val pp_print_argv : formatter -> argv -> unit end;; module MakePrintCommand (PrintArgv : PrintArgvSig) = struct open PrintArgv let pp_print_command_inst buf inst = match inst with CommandPipe argv -> pp_print_argv buf argv | CommandEval exp -> pp_print_exp_list_simple buf exp | CommandValues values -> fprintf buf "" (List.length values) let pp_print_command_line buf line = pp_print_command_inst buf line.command_inst let pp_print_command_lines buf lines = List.iter (fun line -> fprintf buf "@ %a" pp_print_command_line line) lines end;; (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_lexer.ml0000664000152300015230000000327110615471254015171 0ustar jyhjyh(* * We build lexers from channels. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Omake_symbol (* * An action is a symbol. *) module LexerAction = struct type action = symbol let choose = max let pp_print_action = pp_print_symbol let hash = Hashtbl.hash let compare = Lm_symbol.compare end module Lexer = Lm_lexer.MakeLexer (Lm_channel.LexerInput) (LexerAction);; (* * Some extra functions. *) let lexer_of_string s = snd (Lexer.add_clause Lexer.empty lex_sym s) let lexer_matches info s = Lexer.matches info (Lm_channel.of_string s) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_value_type.ml0000664000152300015230000002377210656672474016253 0ustar jyhjyh(* * The type of values. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Omake_ir open Omake_node open Omake_wild open Omake_lexer open Omake_parser open Omake_node_sig open Omake_ir_free_vars open Omake_handle_table (* %%MAGICBEGIN%% *) (* * Various kinds of handles. *) type handle_env = HandleTable.handle (* * I/O channels. *) type channel_mode = Lm_channel.mode = InChannel | OutChannel | InOutChannel type channel_data = ChannelDelayed | ChannelClosed | ChannelValue of Lm_channel.t type prim_channel = { channel_id : int; mutable channel_data : channel_data } (* * Possible values. * Someday we may want to include rules and functions. * For the function, the obj is the static scope. *) type value = ValNone | ValInt of int | ValFloat of float | ValSequence of value list | ValArray of value list | ValString of string | ValData of string | ValQuote of value list | ValQuoteString of char * value list | ValRules of Node.t list | ValNode of Node.t | ValDir of Dir.t | ValObject of obj | ValMap of map | ValChannel of channel_mode * prim_channel | ValClass of obj SymbolTable.t (* Raw expressions *) | ValBody of env * exp list * export | ValCases of (var * value * exp list * export) list (* Functions *) | ValFun of arity * env * var list * exp list * export (* ZZZ: temporary fix, don't propagate to keyword *) | ValFunValue of arity * env * var list * value (* Closed values *) | ValApply of loc * var_info * value list | ValSuperApply of loc * var * var * value list | ValMethodApply of loc * var_info * var list * value list | ValKeyApply of loc * string | ValPrim of arity * bool * prim_fun (* Implicit value dependencies *) | ValMaybeApply of loc * var_info (* Variables that are not applications *) | ValVar of loc * var_info (* Other values *) | ValOther of value_other (* Delayed values *) | ValDelayed of value_delayed ref and value_other = ValLexer of Lexer.t | ValParser of Parser.t | ValLocation of loc | ValExitCode of int | ValEnv of handle_env * export and value_delayed = ValValue of value (* Value in a static block *) | ValStaticApply of value * var (* * Primitives are option refs. * We do this so that we can marshal these values. * Just before marshaling, all the options are set to None. *) and prim_fun = symbol (* * An object is just an environment. *) and obj = value SymbolTable.t and env = value SymbolTable.t and map = (value, value) Lm_map.tree (* %%MAGICEND%% *) (************************************************************************ * Non-marshaled values. *) (* * A method path. *) type path = PathVar of var_info | PathField of path * obj * var (* * Command lists are used for rule bodies. * They have their environment, a list of sources, * and the actual body. The body is polymorphic * for various kinds of commands. *) type command = CommandSection of value * free_vars * exp list (* Name of the section, its free variables, and the expression *) | CommandValue of loc * value (* * Kinds of rules. *) type rule_multiple = RuleSingle | RuleMultiple | RuleScannerSingle | RuleScannerMultiple type rule_kind = RuleNormal | RuleScanner (* * A target value that represents a node in a rule. *) type target = TargetNode of Node.t | TargetString of string (* * A source is either * 1. A wild string * 2. A node * 3. An optional source * 4. A squashed source *) type source_core = SourceWild of wild_out_patt | SourceNode of Node.t type 'a source = node_kind * 'a (************************************************************************ * Exceptions. *) type item = Symbol of symbol | String of string | AstExp of Omake_ast.exp | IrExp of Omake_ir.exp | Location of loc | Value of value | Error of omake_error and pos = item Lm_position.pos and omake_error = SyntaxError of string | StringError of string | StringStringError of string * string | StringDirError of string * Dir.t | StringNodeError of string * Node.t | StringVarError of string * var | StringIntError of string * int | StringMethodError of string * var list | StringValueError of string * value | StringTargetError of string * target | LazyError of (formatter -> unit) | UnboundVar of var | UnboundVarInfo of var_info | UnboundFun of var | UnboundMethod of var list | UnboundFieldVar of obj * var | ArityMismatch of arity * int | NotImplemented of string | UnboundKey of string | UnboundValue of value | NullCommand (* * Standard exceptions. *) exception OmakeException of pos * omake_error exception UncaughtException of pos * exn exception RaiseException of pos * obj exception ExitException of pos * int exception ExitParentException of pos * int exception Return of loc * value (* * Omake's internal version of the Invalid_argument *) exception OmakeFatal of string exception OmakeFatalErr of pos * omake_error (* * Position printer. *) module type PosSig = sig val loc_exp_pos : loc -> pos val loc_pos : loc -> pos -> pos val ast_exp_pos : Omake_ast.exp -> pos val ir_exp_pos : Omake_ir.exp -> pos val var_exp_pos : var -> pos val string_exp_pos : string -> pos val value_exp_pos : value -> pos val string_pos : string -> pos -> pos val pos_pos : pos -> pos -> pos val int_pos : int -> pos -> pos val var_pos : var -> pos -> pos val error_pos : omake_error -> pos -> pos val del_pos : (formatter -> unit) -> loc -> pos val del_exp_pos : (formatter -> unit) -> pos -> pos (* Utilities *) val loc_of_pos : pos -> loc val pp_print_pos : formatter -> pos -> unit end (************************************************************************ * Basic values and functions. *) (* * Empty object. *) let empty_obj = SymbolTable.empty (* * Get the class identifiers from the object. *) let class_sym = Lm_symbol.add "$class" let venv_get_class obj = match try SymbolTable.find obj class_sym with Not_found -> ValNone with ValClass table -> table | _ -> SymbolTable.empty (************************************************************************ * Value table. *) module ValueCompare = struct type t = value (* * Check for simple values. * Arrays cannot be nested. *) let check_simple pos v = match v with ValNone | ValInt _ | ValFloat _ | ValData _ | ValNode _ | ValDir _ | ValOther (ValLocation _) | ValOther (ValExitCode _) | ValVar _ -> () | _ -> raise (OmakeException (pos, StringValueError ("illegal Map key", v))) let check pos v = (match v with ValArray vl -> List.iter (check_simple pos) vl | _ -> check_simple pos v); v (* * Compare two simple values. *) let tag = function ValNone -> 0 | ValInt _ -> 1 | ValFloat _ -> 2 | ValArray _ -> 3 | ValData _ -> 4 | ValNode _ -> 5 | ValDir _ -> 6 | ValOther (ValExitCode _) -> 7 | ValOther (ValLocation _) -> 8 | ValVar _ -> 9 | _ -> raise (Invalid_argument "ValueCompare: value not supported") let rec compare v1 v2 = match v1, v2 with ValNone, ValNone -> 0 | ValInt i1, ValInt i2 | ValOther (ValExitCode i1), ValOther (ValExitCode i2) -> if i1 < i2 then -1 else if i1 > i2 then 1 else 0 | ValFloat x1, ValFloat x2 -> if x1 < x2 then -1 else if x1 > x2 then 1 else 0 | ValArray a1, ValArray a2 -> compare_list a1 a2 | ValData s1, ValData s2 -> Pervasives.compare s1 s2 | ValNode node1, ValNode node2 -> Node.compare node1 node2 | ValDir dir1, ValDir dir2 -> Dir.compare dir1 dir2 | ValOther (ValLocation loc1), ValOther (ValLocation loc2) -> Lm_location.compare loc1 loc2 | ValVar (_, v1), ValVar (_, v2) -> VarInfoCompare.compare v1 v2 | _ -> tag v1 - tag v2 and compare_list l1 l2 = match l1, l2 with v1 :: l1, v2 :: l2 -> let cmp = compare v1 v2 in if cmp = 0 then compare_list l1 l2 else cmp | [], [] -> 0 | [], _ :: _ -> -1 | _ :: _, [] -> 1 end;; module ValueTable = Lm_map.LmMakeRec (ValueCompare);; (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/ir/omake_cache.mli0000664000152300015230000001166110642240747015271 0ustar jyhjyh(* * Cache information about past runs. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_string_set open Omake_options open Omake_node open Omake_cache_type open Omake_value_type open Omake_command_type (* Debugging *) val debug_cache : bool ref (* The abstract type for the cache database *) type t (* Keys for various functions *) type key (* Directory listing *) type dir_listing type exe_listing (* Manifest keys *) val scanner_fun : key val rule_fun : key val env_fun : key val include_fun : key val env_target : Node.t (* Fetch the cache *) val create : unit -> t val from_channel : omake_options -> in_channel -> t val to_channel : Pervasives.out_channel -> t -> unit (* * Stats. *) val stats : t -> int * int (* * File digest information. * The reset functions indicate that stat info may need to be recomputed. * The stat functions get the digest. * The ?force flag, if set, forces the restat in case we cached a _negative_ * information on the file (file did not exist before). *) val stat : t -> Node.t -> digest val stat_set : t -> NodeSet.t -> digest NodeTable.t val stat_table : t -> 'b NodeTable.t -> digest NodeTable.t val stat_unix : t -> ?force:bool -> Node.t -> Unix.LargeFile.stats val is_dir : t -> ?force:bool -> Node.t -> bool val reset : t -> Node.t -> unit val reset_set : t -> NodeSet.t -> unit val reset_table : t -> 'b NodeTable.t -> unit val force_stat : t -> Node.t -> digest val force_stat_set : t -> NodeSet.t -> digest NodeTable.t val force_stat_table : t -> 'b NodeTable.t -> digest NodeTable.t val stat_changed : t -> Node.t -> bool (* * Check if a file exists. *) val exists : t -> ?force:bool -> Node.t -> bool val exists_dir : t -> ?force:bool -> Dir.t -> bool (* * Directory listings. The Boolean in ls_path and ls_exe_path should * be true for those directory collections where auto-rehashing is to * be performed. *) val rehash : t -> unit val ls_dir : t -> bool -> Dir.t -> dir_listing val ls_path : t -> (bool * Dir.t list) list -> dir_listing val listing_find : t -> dir_listing -> string -> dir_entry val ls_exe_path : t -> (bool * Dir.t list) list -> exe_listing val exe_find : t -> exe_listing -> string -> Node.t val exe_find_all : t -> exe_listing -> string -> Node.t list val exe_complete : t -> exe_listing -> string -> StringSet.t val exe_suffixes : string list (* * Memoizing commands. * * add : key targets sources commands result * up_to_date : key sources commands * find_result : key sources commands * find_result_sloppy : key target * * The sloppy function just returns the results for the target * without even considering the command and dependencies. *) val add : t -> key -> Node.t -> NodeSet.t -> NodeSet.t -> command_digest -> memo_deps_result -> unit val up_to_date : t -> key -> NodeSet.t -> command_digest -> bool val up_to_date_status : t -> key -> NodeSet.t -> command_digest -> memo_status val find_result : t -> key -> NodeSet.t -> command_digest -> memo_deps val find_result_sloppy : t -> key -> Node.t -> memo_deps (* * Similar functions for values. The bool flag indicates whether we want a static value. *) val find_value : t -> value -> bool -> NodeSet.t -> command_digest -> obj val add_value : t -> value -> bool -> NodeSet.t -> command_digest -> memo_obj_result -> unit (* * Printing. *) val pp_print_digest : formatter -> digest -> unit val pp_print_node_digest_table : formatter -> digest NodeTable.t -> unit val pp_print_memo_result : (formatter -> NodeSet.t NodeTable.t -> unit) -> formatter -> memo_deps_result -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_ir.ml0000664000152300015230000002207210642240747014465 0ustar jyhjyh(* * Define an intermediate representation that is a little * easier to work with than the AST. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Jason Hickey, California Institute of Technology * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_location open Lm_symbol open Omake_node_sig open Omake_node (* %%MAGICBEGIN%% *) (* Revision 11186: replaced static-rule function with the new memo-rule *) type var = symbol (* * Evaluation of lazy applications is delayed as much as possible. * Eager applications are evaluated even in the scope of a lazy * application. Normal applications are evaluated eagerly, except * in the scope of a lazy application. *) type apply_strategy = LazyApply | EagerApply | NormalApply (* * Arity of functions. *) type arity = ArityRange of int * int | ArityExact of int | ArityNone | ArityAny (* * Kinds of matches. *) type match_kind = MatchWild | MatchRegex (* * Variable definitions have several forms. * VarDefNormal: normal definition * VarDefAppend: append the text *) type var_def_kind = VarDefNormal | VarDefAppend (* * Simple version of variables includes the kind of * scope, the location, and the variable name. *) type var_info = VarPrivate of loc * var | VarThis of loc * var | VarVirtual of loc * var | VarGlobal of loc * var (* * A symbol table maps variables to their info. *) type senv = var_info SymbolTable.t (* * Exporting. *) type export_item = ExportRules | ExportPhonies | ExportVar of var_info type export = ExportNone | ExportAll | ExportList of export_item list (* * Expression that results in a string. *) type string_exp = NoneString of loc | ConstString of loc * string (* ZZZ: FunString, MethodString *) | ApplyString of loc * apply_strategy * var_info * string_exp list | SuperApplyString of loc * apply_strategy * var * var * string_exp list | MethodApplyString of loc * apply_strategy * var_info * var list * string_exp list | SequenceString of loc * string_exp list | ArrayString of loc * string_exp list | ArrayOfString of loc * string_exp | QuoteString of loc * string_exp list | QuoteStringString of loc * char * string_exp list | ObjectString of loc * exp list * export | BodyString of loc * exp list * export | ExpString of loc * exp list * export | CasesString of loc * (var * string_exp * exp list * export) list | KeyApplyString of loc * apply_strategy * string | VarString of loc * var_info | ThisString of loc and source_exp = node_kind * string_exp and source_table = string_exp SymbolTable.t (* * Commands. *) and rule_command = RuleSection of string_exp * exp | RuleString of string_exp and exp = (* Definitions *) LetVarExp of loc * var_info * var list * var_def_kind * string_exp | LetFunExp of loc * var_info * var list * var list * exp list * export | LetObjectExp of loc * var_info * var list * string_exp * exp list * export | LetThisExp of loc * string_exp | LetKeyExp of loc * string * var_def_kind * string_exp (* Applications *) | ApplyExp of loc * var_info * string_exp list | SuperApplyExp of loc * var * var * string_exp list | MethodApplyExp of loc * var_info * var list * string_exp list | KeyExp of loc * string (* Sequences *) | SequenceExp of loc * exp list | SectionExp of loc * string_exp * exp list * export (* StaticExp (loc, filename, id, el) *) | StaticExp of loc * Node.t * symbol * exp list (* Conditional *) | IfExp of loc * (string_exp * exp list * export) list (* Shell command *) | ShellExp of loc * string_exp (* * StringExp (loc, s) * This is just an identity, evaluating to s * ReturnExp (loc, s) * This is a control operation, branching to the innermost ReturnBodyExp * ReturnBodyExp (loc, e) * Return to here. *) | StringExp of loc * string_exp | ReturnExp of loc * string_exp | ReturnBodyExp of loc * exp list (* * LetOpenExp (loc, v, id, file, link) * id : the current object * file : name of the file/object to open * link : link information for the rest of the variables in scope. *) | OpenExp of loc * Node.t list | IncludeExp of loc * string_exp * string_exp list (* Return the current object *) | ReturnObjectExp of loc * symbol list | ReturnSaveExp of loc (* * The IR stored in a file. * ir_classnames : class names of the file * ir_vars : variables defined by this file * ir_exp : the expression *) type ir = { ir_classnames : symbol list; ir_vars : senv; ir_exp : exp } (* %%MAGICEND%% *) (* * Variable classes. * private: variables local to the file, statically scoped. * this: object fields, dynamically scoped. * virtual: file fields, dynamically scoped. * global: search each of the scopes in order (ZZZ: 0.9.8 only) *) type var_scope = VarScopePrivate | VarScopeThis | VarScopeVirtual | VarScopeGlobal (************************************************************************ * Simplified variables. *) type simple_var_info = var_scope * var module SimpleVarCompare = struct type t = simple_var_info let compare (s1, v1) (s2, v2) = match s1, s2 with VarScopePrivate, VarScopePrivate | VarScopeThis, VarScopeThis | VarScopeVirtual, VarScopeVirtual | VarScopeGlobal, VarScopeGlobal -> Lm_symbol.compare v1 v2 | VarScopePrivate, VarScopeThis | VarScopePrivate, VarScopeVirtual | VarScopePrivate, VarScopeGlobal | VarScopeThis, VarScopeVirtual | VarScopeThis, VarScopeGlobal | VarScopeVirtual, VarScopeGlobal -> -1 | VarScopeThis, VarScopePrivate | VarScopeVirtual, VarScopePrivate | VarScopeVirtual, VarScopeThis | VarScopeGlobal, VarScopePrivate | VarScopeGlobal, VarScopeThis | VarScopeGlobal, VarScopeVirtual -> 1 end;; module SimpleVarSet = Lm_set.LmMake (SimpleVarCompare);; module SimpleVarTable = Lm_map.LmMake (SimpleVarCompare);; (************************************************************************ * Variable tables. The const_flag and protected_flag are just * comments, and aren't part of the comparison. *) module VarInfoCompare = struct type t = var_info let compare info1 info2 = match info1, info2 with VarPrivate (_, v1), VarPrivate (_, v2) | VarThis (_, v1), VarThis (_, v2) | VarVirtual (_, v1), VarVirtual (_, v2) | VarGlobal (_, v1), VarGlobal (_, v2) -> Lm_symbol.compare v1 v2 | VarPrivate _, VarThis _ | VarPrivate _, VarVirtual _ | VarPrivate _, VarGlobal _ | VarThis _, VarVirtual _ | VarThis _, VarGlobal _ | VarVirtual _, VarGlobal _ -> -1 | VarThis _, VarPrivate _ | VarVirtual _, VarPrivate _ | VarVirtual _, VarThis _ | VarGlobal _, VarPrivate _ | VarGlobal _, VarThis _ | VarGlobal _, VarVirtual _ -> 1 end;; module VarInfoSet = struct module Set = Lm_set.LmMake (VarInfoCompare);; include Set;; let loc = bogus_loc "VarInfoSet" (* Remove classes of variables *) let remove_private set v = remove set (VarPrivate (loc, v)) (* Parameters are always private *) let remove_param = remove_private end;; module VarInfoTable = Lm_map.LmMake (VarInfoCompare);; let var_equal v1 v2 = VarInfoCompare.compare v1 v2 = 0 let var_of_var_info = function VarPrivate (loc, v) | VarThis (loc, v) | VarVirtual (loc, v) | VarGlobal (loc, v) -> loc, v (************************************************************************ * Path definitions. *) type name_info = { name_static : bool; name_scope : var_scope option } type method_name = NameEmpty of name_info | NameMethod of name_info * var * var list (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_shell_type.ml0000664000152300015230000002047710654713446016236 0ustar jyhjyh(* * Shell expressions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) open Lm_location open Lm_symbol open Lm_debug open Lm_printf open Omake_node (* * A shell command. *) type 'arg cmd_exe = CmdArg of 'arg | CmdNode of Node.t type simple_exe = ExeNode of Node.t | ExeString of string | ExeQuote of string type 'arg redirect = | RedirectNode of Node.t | RedirectArg of 'arg | RedirectNone type ('exe, 'arg_command, 'arg_other) poly_cmd = { cmd_loc : loc; cmd_env : (symbol * 'arg_other) list; cmd_exe : 'exe; cmd_argv : 'arg_command list; cmd_stdin : 'arg_other redirect; cmd_stdout : 'arg_other redirect; cmd_stderr : bool; cmd_append : bool } (* * An internal command. * * 'apply with be: venv -> Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> string list -> int * value *) type ('arg_apply, 'arg_other, 'apply) poly_apply = { apply_loc : loc; apply_env : (symbol * 'arg_other) list; apply_name : symbol; apply_fun : 'apply; apply_args : 'arg_apply list; apply_stdin : 'arg_other redirect; apply_stdout : 'arg_other redirect; apply_stderr : bool; apply_append : bool } (* * A pipe may have several cmds in sequence. *) type pipe_op = PipeAnd | PipeOr | PipeSequence (* * A pipe with redirection. *) type ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_group = { group_stdin : 'arg_other redirect; group_stdout : 'arg_other redirect; group_stderr : bool; group_append : bool; group_pipe : ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe } and ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe = PipeApply of loc * ('arg_apply, 'arg_other, 'apply) poly_apply | PipeCommand of loc * ('exe, 'arg_command, 'arg_other) poly_cmd | PipeCond of loc * pipe_op (**) * ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe * ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe | PipeCompose of loc * bool (**) * ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe * ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe | PipeGroup of loc * ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_group | PipeBackground of loc * ('exe, 'arg_command, 'arg_apply, 'arg_other, 'apply) poly_pipe (* * Signals. *) type signal = SigAbrt | SigAlrm | SigFPE | SigHup | SigIll | SigInt | SigKill | SigPipe | SigQuit | SigSegv | SigTerm | SigUsr1 | SigUsr2 | SigChld | SigCont | SigStop | SigTstp | SigTtin | SigTtou | SigVTAlrm | SigProf | SigNum of int (* * Debug flag. *) let debug_shell = create_debug (**) { debug_name = "shell"; debug_description = "print debugging information for the shell"; debug_value = false } (* * Operators. *) let pp_print_pipe_op buf op = let s = match op with PipeAnd -> "&&" | PipeOr -> "||" | PipeSequence -> ";" in pp_print_string buf s (* * Parameterized printing. *) module type PrintArgSig = sig type arg_command type arg_apply type arg_other type exe val pp_print_exe : formatter -> exe -> unit val pp_print_arg_command : formatter -> arg_command -> unit val pp_print_arg_apply : formatter -> arg_apply -> unit val pp_print_arg_other : formatter -> arg_other -> unit end;; module MakePrintPipe (PrintArg : PrintArgSig) = struct open PrintArg (* * Print redirects. *) let pp_print_stdin buf stdin = match stdin with RedirectNode node -> fprintf buf " < %a" pp_print_node node | RedirectArg name -> fprintf buf " < %a" pp_print_arg_other name | RedirectNone -> () let token_of_stdout stderr append = match stderr, append with true, true -> ">>&" | true, false -> ">&" | false, true -> ">>" | false, false -> ">" let pp_print_stdout buf (stdout, stderr, append) = match stdout with RedirectNode name -> let dir = token_of_stdout stderr append in fprintf buf " %s %a" dir pp_print_node name | RedirectArg name -> let dir = token_of_stdout stderr append in fprintf buf " %s %a" dir pp_print_arg_other name | RedirectNone -> () (* * Print the argument lists. *) let pp_print_args buf = function [] -> () | arg :: args -> pp_print_arg_apply buf arg; List.iter (fun arg -> fprintf buf " %a" pp_print_arg_apply arg) args let pp_print_argv buf argv = List.iter (fun arg -> fprintf buf " %a" pp_print_arg_command arg) argv (* * Print the environment. *) let pp_print_env buf env = List.iter (fun (v, arg) -> fprintf buf "%a=%a " pp_print_symbol v pp_print_arg_other arg) env (* * An internal function/alias. *) let pp_print_apply buf apply = let { apply_env = env; apply_name = f; apply_args = args; apply_stdin = stdin; apply_stdout = stdout; apply_stderr = stderr; apply_append = append } = apply in fprintf buf "@[%aShell.%a(%a)%a%a@]" (**) pp_print_env env pp_print_symbol f pp_print_args args pp_print_stdin stdin pp_print_stdout (stdout, stderr, append) (* * Print a command. *) let pp_print_command buf command = let { cmd_exe = exe; cmd_env = env; cmd_argv = argv; cmd_stdin = stdin; cmd_stdout = stdout; cmd_stderr = stderr; cmd_append = append } = command in fprintf buf "@[%a%a%a%a%a@]" (**) pp_print_env env pp_print_exe exe pp_print_argv argv pp_print_stdin stdin pp_print_stdout (stdout, stderr, append) (* * Print a pipe. *) let rec pp_print_pipe buf pipe = match pipe with PipeApply (_, apply) -> pp_print_apply buf apply | PipeCommand (_, command) -> pp_print_command buf command | PipeCond (_, op, pipe1, pipe2) -> fprintf buf "@[%a@ %a %a@]" (**) pp_print_pipe pipe1 pp_print_pipe_op op pp_print_pipe pipe2 | PipeCompose (_, divert_stderr, pipe1, pipe2) -> fprintf buf "@[%a@ %s %a@]" (**) pp_print_pipe pipe1 (if divert_stderr then "|&" else "|") pp_print_pipe pipe2 | PipeGroup (_, group) -> pp_print_group buf group | PipeBackground (_, pipe) -> fprintf buf "%a &" pp_print_pipe pipe and pp_print_group buf group = let { group_stdin = stdin; group_stdout = stdout; group_stderr = stderr; group_append = append; group_pipe = pipe } = group in fprintf buf "@[(%a)%a%a@]" (**) pp_print_pipe pipe pp_print_stdin stdin pp_print_stdout (stdout, stderr, append) end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_install.ml0000664000152300015230000000630710577543025015526 0ustar jyhjyh(* * Functions to install OMakefiles into a project. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_glob open Omake_node_sig open Omake_node (* * Copy a file into a directory, but prompt the user if * the file already exists. *) let copy_file force src dst = let prompt () = printf "%s already exists, overwrite (yes/no)? " dst; flush stdout; String.lowercase (input_line stdin) = "yes" in if force || not (Sys.file_exists dst) || prompt () then let () = printf "*** omake: creating %s@." dst in let inx = Pervasives.open_in src in let outx = Pervasives.open_out dst in let rec copy () = Pervasives.output_char outx (input_char inx); copy () in let () = try copy () with End_of_file -> () in close_in inx; close_out outx else printf "*** omake: skipping %s@." dst (* * Names of the standard files. *) let omakeroot = Node.fullname (Node.create_node no_mount_info Mount.empty Dir.lib "OMakeroot.default") let omakefile = Node.fullname (Node.create_node no_mount_info Mount.empty Dir.lib "OMakefile.default") (* * Install just into the current directory. *) let install_current force = copy_file force omakeroot "OMakeroot"; copy_file force omakefile "OMakefile"; printf "*** omake: project files OMakefile and OMakeroot have been installed\n"; printf "*** omake: you should edit these files before continuing@." (* * Install into all subdirectories. *) let glob_cvs_ignore = Lm_glob.create_options [GlobCVSIgnore] let install_subdirs force = let dirs = subdirs_of_dirs glob_cvs_ignore "" ["."] in copy_file force omakeroot "OMakeroot"; List.iter (fun dir -> copy_file force omakefile (Filename.concat dir "OMakefile")) dirs; printf "*** omake: project files OMakefile and OMakeroot have been installed\n"; printf "*** omake: OMakefiles have been installed into all subdirectories\n"; printf "*** omake: you should edit these files before continuing@." (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_cache_type.ml0000664000152300015230000000366010615701364016156 0ustar jyhjyh(* * Types used to represent commands and the cache. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_location open Lm_string_set open Omake_ir open Omake_node open Omake_value_type (* %%MAGICBEGIN%% *) (* * File digest is an option, in case the file does not exist. *) type digest = Digest.t option (* * The memo result is used only for the scanner, * whice produces a table of dependencies. *) type 'a memo_result = MemoFailure of int | MemoSuccess of 'a type memo_deps = NodeSet.t NodeTable.t type memo_deps_result = memo_deps memo_result type memo_obj_result = obj memo_result (* * Status query. *) type memo_status = StatusSuccess | StatusFailure of int | StatusUnknown (* * A directory entry is a node or directory. *) type dir_entry = NodeEntry of Node.t | DirEntry of Dir.t (* %%MAGICEND%% *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_cache.ml0000664000152300015230000012355710646510730015124 0ustar jyhjyh(* * Keep a cache that determines whether we _really_ need to run * a command to build a file. * * The basic idea is this: for each file, remember the command * that built it, its Digest, and the Digest of the files it * depends on. If we want to build the node again, and all * the parts are the same, then we don't actually need to build * it. * * The same principle works for scanners. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_debug open Lm_printf open Lm_string_set open Omake_options open Omake_node open Omake_command open Omake_node_sig open Omake_cache_type open Omake_value_type let debug_cache = create_debug (**) { debug_name = "cache"; debug_description = "Display debugging information for the cache"; debug_value = false } (* * An index table. * The indexes are small enough that (-) is a correct ordering function. *) module IndexCompare = struct type t = int let compare = (-) end module IndexTable = Lm_map.LmMakeList (IndexCompare);; module IndexNodeTable = struct type t = NodeSet.t IndexTable.t let empty = IndexTable.empty let add table i node = IndexTable.filter_add table i (fun nodes -> match nodes with Some nodes -> NodeSet.add nodes node | None -> NodeSet.singleton node) let find = IndexTable.find end;; (* * Directory entry is a directory or node. *) type dir_entry_core = LazyEntryCore of Dir.t * string | DirEntryCore of dir_entry type dir_listing_item = dir_entry_core ref StringTable.t type dir_listing = dir_listing_item list (* * Executable listing. *) type exe_entry_core = ExeEntryCore of (Dir.t * string) list | ExeEntryNodes of Node.t list type exe_listing_item = exe_entry_core ref StringTable.t type exe_listing = exe_listing_item list (* * The memo is a record of what we have done during * a previous run of this program. * * The index is a hash over the deps and the commands. * The result is mainly used for the scanner, to return * the results of the previous scan. * * We don't really care what the commands are, we just * care what their digest is. *) (* %%MAGICBEGIN%% *) type 'a memo = { memo_index : int; memo_targets : digest NodeTable.t; memo_deps : digest NodeTable.t; memo_commands : digest; memo_result : 'a memo_result } (* %%MAGICEND%% *) (* * Stats of a file. * FreshStats: we have taken the stats during this program run * OldStats: we took the stats during a prior run of this program * PartialStats: we took the stats, but not the digest * NoStats: we tried to take stats, but an error occurred (usually * because the file did not exist). *) (* %%MAGICBEGIN%% *) type node_stats = FreshStats of Unix.LargeFile.stats | OldStats of Unix.LargeFile.stats | PartialStats of Unix.LargeFile.stats | NoStats (* %%MAGICEND%% *) (* * For each file, we keep the stats and the digest. *) (* %%MAGICBEGIN%% *) type node_memo = { nmemo_stats : node_stats; nmemo_digest : digest } (* %%MAGICEND%% *) (* * The memos are classified by functions. * Each function has a table of memos, and an index. *) type key = int type 'a cache_info = { mutable cache_memos : 'a memo NodeTable.t; mutable cache_index : IndexNodeTable.t } (* * The cache remembers all the build commands we did last time. *) type stat = Unix.LargeFile.stats type cache = { (* State *) mutable cache_nodes : node_memo NodeTable.t; mutable cache_info : memo_deps cache_info array; mutable cache_static_values : obj memo ValueTable.t; mutable cache_memo_values : obj memo ValueTable.t; mutable cache_file_stat_count : int; (* only succeessful stats are counted *) mutable cache_digest_count : int; (* Path lookups *) mutable cache_dirs : (stat option * dir_listing_item) DirTable.t; mutable cache_path : (stat option list * dir_listing_item) DirListTable.t; mutable cache_exe_path : (stat option list * exe_listing_item) DirListTable.t } (* * The version of the cache that is saved in the file also * contains a table of all nodes. *) (* %%MAGICBEGIN%% *) type cache_save = { save_cache_nodes : node_memo NodeTable.t; save_cache_info : memo_deps memo NodeTable.t array; save_cache_value : obj memo ValueTable.t } (* %%MAGICEND%% *) (* * Squash stat code. *) let squash_stat = Some "squash" (* * The cache type. *) type t = cache (* * Memo functions for the cache. *) let scanner_fun = 0 let rule_fun = 1 let env_fun = 2 let include_fun = 3 let env_target = Node.create_phony_global ".ENV" (************************************************************************ * Printing. *) (* * Print a digest. *) let pp_print_digest buf digest = let s = match digest with Some digest -> Lm_string_util.hexify digest | None -> "" in pp_print_string buf s (* * Print a digest table. *) let pp_print_node_digest_table buf deps = NodeTable.iter (fun node digest -> fprintf buf "@ %a = %a" (**) pp_print_node node pp_print_digest digest) deps (* * Print a result. *) let pp_print_memo_result pp_print_result buf result = match result with MemoSuccess _ -> fprintf buf "@ success" | MemoFailure code -> fprintf buf "@ failed(%d)" code (* * Print a memo. *) let pp_print_memo buf memo = let { memo_index = index; memo_targets = targets; memo_deps = deps; memo_result = result; memo_commands = commands } = memo in fprintf buf "@[@[memo {@ index = %d;@ @[targets =%a@];@ @[deps =%a@]@ @[commands =%a@]@]@ }@]" (**) index pp_print_node_digest_table targets pp_print_node_digest_table deps pp_print_digest commands (************************************************************************ * Persistence. *) (* * Create the cache. We save the cache in a file, so try to * load it from that file. *) let magic_number = Omake_magic.cache_magic let input_magic = Omake_magic.input_magic let output_magic = Omake_magic.output_magic (* * Create a new cache. *) let create () = { cache_nodes = NodeTable.empty; cache_info = [||]; cache_static_values = ValueTable.empty; cache_memo_values = ValueTable.empty; cache_file_stat_count = 0; cache_digest_count = 0; cache_dirs = DirTable.empty; cache_path = DirListTable.empty; cache_exe_path = DirListTable.empty } let rehash cache = cache.cache_dirs <- DirTable.empty; cache.cache_path <- DirListTable.empty; cache.cache_exe_path <- DirListTable.empty let stats { cache_file_stat_count = stat_count; cache_digest_count = digest_count } = stat_count, digest_count (* * When the file is saved, remove all stat information, * as well as any files that don't exist. *) let save_of_cache cache = let { cache_nodes = cache_nodes; cache_info = cache_info; cache_static_values = cache_values } = cache in let cache_nodes = NodeTable.fold (fun nodes target nmemo -> match nmemo.nmemo_stats with FreshStats stats | OldStats stats -> let nmemo = { nmemo with nmemo_stats = OldStats stats } in NodeTable.add nodes target nmemo | PartialStats _ | NoStats -> nodes) NodeTable.empty cache_nodes in let cache_info = Array.map (fun info -> info.cache_memos) cache_info in { save_cache_nodes = cache_nodes; save_cache_info = cache_info; save_cache_value = cache_values } (* * Rebuild the index from the memos. *) let create_index memos = NodeTable.fold (fun (memos, index) target memo -> let { memo_result = result; memo_index = hash } = memo in match result with MemoSuccess _ -> let index = IndexNodeTable.add index hash target in memos, index | MemoFailure _ -> let memos = NodeTable.remove memos target in memos, index) (memos, IndexNodeTable.empty) memos (* * Rebuild the cache from the saved version. *) let cache_of_save options save = let { save_cache_nodes = cache_nodes; save_cache_info = cache_info; } = save in let flush_scanner = opt_flush_dependencies options in let cache_info = Array.mapi (fun idx memos -> if flush_scanner && idx = scanner_fun then { cache_memos = NodeTable.empty; cache_index = IndexNodeTable.empty } else let memos, index = create_index memos in { cache_memos = memos; cache_index = index }) cache_info in let cache_values = if opt_flush_static options then ValueTable.empty else save.save_cache_value in { (create ()) with cache_nodes = cache_nodes; cache_info = cache_info; cache_static_values = cache_values } (* * Load the old cache from a file. *) let from_channel options inx = if opt_flush_cache options then create () else let magic = input_magic inx in let _ = if magic <> magic_number then raise (Sys_error "bad magic number") in let save = Marshal.from_channel inx in cache_of_save options save (* * Save the cache to the file. *) let to_channel outx cache = output_magic outx magic_number; Marshal.to_channel outx (save_of_cache cache) [] (************************************************************************ * Stat. *) (* * Reset the information about a node (probably because * we ran a command that changed it). *) let reset cache node = let nodes = cache.cache_nodes in let nodes = try NodeTable.filter_remove nodes node (fun nmemo -> match nmemo.nmemo_stats with FreshStats stats | OldStats stats -> Some { nmemo with nmemo_stats = OldStats stats } | PartialStats _ | NoStats -> None) with Not_found -> nodes in cache.cache_nodes <- nodes let reset_set cache nodes = NodeSet.iter (reset cache) nodes let reset_table cache nodes = NodeTable.iter (fun node _ -> reset cache node) nodes (* * Test whether stats are equal enough that we think the * file is up-to-date. *) let stats_equal stat1 stat2 = let { Unix.LargeFile.st_ino = ino1; Unix.LargeFile.st_kind = kind1; Unix.LargeFile.st_size = size1; Unix.LargeFile.st_mtime = mtime1 } = stat1 in let { Unix.LargeFile.st_ino = ino2; Unix.LargeFile.st_kind = kind2; Unix.LargeFile.st_size = size2; Unix.LargeFile.st_mtime = mtime2 } = stat2 in ino1 = ino2 && kind1 = kind2 && size1 = size2 && mtime1 = mtime2 let pp_print_stat buf stat = let { Unix.LargeFile.st_ino = ino; Unix.LargeFile.st_kind = kind; Unix.LargeFile.st_size = size; Unix.LargeFile.st_mtime = mtime } = stat in fprintf buf "ino = %d, size = %Ld, mtime = %g" ino size mtime (* * Sloppy digests on files larger than 16MB. *) let large_file_size = 8_000_000L let sample_size = 0x10000 let sample_count = 16 let rec really_read_exn fd buf off len = if len > 0 then let amount = Unix.read fd buf off len in really_read_exn fd buf (off + amount) (len - amount) let digest_sample_exn fd file_size = let sample = String.create (8 + (sample_count + 1) * sample_size) in (* Add the file length to the string *) sample.[0] <- Char.unsafe_chr (Int64.to_int (Int64.shift_right_logical file_size 56)); sample.[1] <- Char.unsafe_chr (Int64.to_int (Int64.shift_right_logical file_size 48)); sample.[2] <- Char.unsafe_chr (Int64.to_int (Int64.shift_right_logical file_size 40)); sample.[3] <- Char.unsafe_chr (Int64.to_int (Int64.shift_right_logical file_size 32)); sample.[4] <- Char.unsafe_chr (Int64.to_int (Int64.shift_right_logical file_size 24)); sample.[5] <- Char.unsafe_chr (Int64.to_int (Int64.shift_right_logical file_size 16)); sample.[6] <- Char.unsafe_chr (Int64.to_int (Int64.shift_right_logical file_size 8)); sample.[7] <- Char.unsafe_chr (Int64.to_int file_size); (* Sample the file *) for i = 0 to sample_count do let off = if i = sample_count then Int64.sub file_size (Int64.of_int sample_size) else Int64.div (Int64.mul file_size (Int64.of_int i)) (Int64.of_int sample_count) in let _ = Unix.LargeFile.lseek fd off Unix.SEEK_SET in really_read_exn fd sample (8 + i * sample_size) sample_size done; (* Take the digest of the sample *) Digest.string sample let digest_large name file_size = try let fd = Unix.openfile name [Unix.O_RDONLY] 0o000 in try let digest = digest_sample_exn fd file_size in Unix.close fd; digest with Unix.Unix_error _ | End_of_file -> Unix.close fd; raise (Sys_error name) with Unix.Unix_error _ -> raise (Sys_error name) let digest_file name file_size = if file_size > large_file_size then digest_large name file_size else Digest.file name (* * Stat a file. *) let stat_file cache node = let nodes = cache.cache_nodes in let stats = try Some (NodeTable.find nodes node) with Not_found -> None in match stats with Some { nmemo_stats = FreshStats _; nmemo_digest = digest } | Some { nmemo_stats = NoStats; nmemo_digest = digest } -> (* * We've recently computed the digest for this file. *) digest | Some ({ nmemo_stats = OldStats stats } as nmemo) -> (* * We have no recent record of this file. * Get current stats. If they match, then * use current digest; otherwise recompute. *) let name = Node.fullname node in let nmemo = try let stats' = Unix.LargeFile.stat name in if stats'.Unix.LargeFile.st_kind = Unix.S_DIR then { nmemo_stats = FreshStats stats'; nmemo_digest = squash_stat } else begin cache.cache_file_stat_count <- succ cache.cache_file_stat_count; if stats_equal stats' stats then { nmemo with nmemo_stats = FreshStats stats' } else let digest = digest_file name stats'.Unix.LargeFile.st_size in cache.cache_digest_count <- succ cache.cache_digest_count; { nmemo_stats = FreshStats stats'; nmemo_digest = Some digest } end with Unix.Unix_error _ | Sys_error _ -> { nmemo_stats = NoStats; nmemo_digest = None } in cache.cache_nodes <- NodeTable.add nodes node nmemo; nmemo.nmemo_digest | Some { nmemo_stats = PartialStats stats } -> (* * We have taken stats of this file, and found that they * differed from the old value, so the digest is out-of-date. *) let name = Node.fullname node in let nmemo = try if stats.Unix.LargeFile.st_kind = Unix.S_DIR then { nmemo_stats = FreshStats stats; nmemo_digest = squash_stat } else let digest = digest_file name stats.Unix.LargeFile.st_size in cache.cache_digest_count <- succ cache.cache_digest_count; { nmemo_stats = FreshStats stats; nmemo_digest = Some digest } with Unix.Unix_error _ | Sys_error _ -> { nmemo_stats = NoStats; nmemo_digest = None } in cache.cache_nodes <- NodeTable.add nodes node nmemo; nmemo.nmemo_digest | None -> (* * We've never seen this file before. * Get complete stats, including a digest. *) let name = Node.fullname node in let nmemo = try let stats = Unix.LargeFile.stat name in if stats.Unix.LargeFile.st_kind = Unix.S_DIR then { nmemo_stats = FreshStats stats; nmemo_digest = squash_stat } else begin cache.cache_file_stat_count <- succ cache.cache_file_stat_count; let digest = digest_file name stats.Unix.LargeFile.st_size in cache.cache_digest_count <- succ cache.cache_digest_count; { nmemo_stats = FreshStats stats; nmemo_digest = Some digest } end with Unix.Unix_error _ | Sys_error _ -> { nmemo_stats = NoStats; nmemo_digest = None } in cache.cache_nodes <- NodeTable.add nodes node nmemo; nmemo.nmemo_digest (* * Return just the Unix stat information. * Avoid taking a full digest in this case. *) let stat_unix_simple stats = match stats with FreshStats stats | PartialStats stats -> stats | NoStats -> raise Not_found | OldStats _ -> raise (Invalid_argument "Omake_cache.stat_unix_simple") let do_stat_unix cache node = let name = Node.fullname node in let nmemo = try let stats = Unix.LargeFile.stat name in if stats.Unix.LargeFile.st_kind = Unix.S_DIR then { nmemo_stats = FreshStats stats; nmemo_digest = squash_stat } else begin cache.cache_file_stat_count <- succ cache.cache_file_stat_count; { nmemo_stats = PartialStats stats; nmemo_digest = None } end with Unix.Unix_error _ | Sys_error _ -> { nmemo_stats = NoStats; nmemo_digest = None } in cache.cache_nodes <- NodeTable.add cache.cache_nodes node nmemo; stat_unix_simple nmemo.nmemo_stats let stat_unix cache ?(force=false) node = let node = match Node.kind node with NodePhony | NodeScanner -> raise Not_found | NodeNormal -> node | NodeOptional | NodeSquashed | NodeExists -> Node.core node in let nodes = cache.cache_nodes in let stats = try Some (NodeTable.find nodes node) with Not_found -> None in match stats with Some { nmemo_stats = FreshStats stats } | Some { nmemo_stats = PartialStats stats } -> stats | Some { nmemo_stats = NoStats } -> if force then do_stat_unix cache node else raise Not_found | Some ({ nmemo_stats = OldStats old_stats } as nmemo) -> let name = Node.fullname node in let nmemo = try let new_stats = Unix.LargeFile.stat name in if new_stats.Unix.LargeFile.st_kind = Unix.S_DIR then { nmemo_stats = FreshStats new_stats; nmemo_digest = squash_stat } else begin cache.cache_file_stat_count <- succ cache.cache_file_stat_count; if stats_equal new_stats old_stats then { nmemo with nmemo_stats = FreshStats new_stats } else { nmemo with nmemo_stats = PartialStats new_stats } end with Unix.Unix_error _ | Sys_error _ -> { nmemo_stats = NoStats; nmemo_digest = None } in cache.cache_nodes <- NodeTable.add nodes node nmemo; stat_unix_simple nmemo.nmemo_stats | None -> do_stat_unix cache node (* * Check if a file is a directory. *) let is_dir cache ?(force=false) node = try (stat_unix cache ~force node).Unix.LargeFile.st_kind = Unix.S_DIR with Not_found -> false (* * Tests for whether a file is executable. * This really only works on Unix. *) let euid = try Unix.geteuid () with Unix.Unix_error _ -> 0 let groups = try Array.to_list (Unix.getgroups ()) with Unix.Unix_error _ -> [] (* * Check if the node is phony first. *) let stat cache node = let core = Node.core node in match Node.kind node with NodePhony | NodeScanner -> None | NodeOptional | NodeNormal -> stat_file cache core | NodeSquashed | NodeExists -> (match stat_file cache core with Some _ -> squash_stat | None -> None) (* * Turn a set into a table of stat info. *) let stat_set cache nodes = NodeSet.fold (fun table node -> NodeTable.add table node (stat cache node)) NodeTable.empty nodes let stat_table cache nodes = NodeTable.mapi (fun node _ -> stat cache node) nodes (* * Force a stat. *) let force_stat cache node = reset cache node; stat cache node let force_stat_set cache nodes = NodeSet.fold (fun table node -> NodeTable.add table node (force_stat cache node)) NodeTable.empty nodes let force_stat_table cache nodes = NodeTable.mapi (fun node _ -> force_stat cache node) nodes (* * Check if the stat changed. *) let stat_changed cache node = let old_digest = try (NodeTable.find cache.cache_nodes node).nmemo_digest with Not_found -> None in let new_digest = force_stat cache node in new_digest <> old_digest (* * Check if a file exists. *) let exists cache ?(force=false) node = try ignore (stat_unix cache ~force node); true with Not_found -> Node.always_exists node let exists_dir cache ?(force=false) dir = exists cache ~force (Node.node_of_dir dir) (************************************************************************ * Adding to the cache. *) (* * Hash a set of deps and commands. * The commands is a digest. *) let hash_index deps commands = let index = NodeSet.fold (fun index node -> index lxor (index lsl 4) lxor (index lsr 4) lxor (Node.hash node)) 0 deps in let index = index lxor (index lsl 4) lxor (index lsr 4) lxor (Hashtbl.hash commands) in index land 0x3fffffff (* * Expand the cache_info if necessary. *) let get_info cache key = let cache_info = cache.cache_info in let len = Array.length cache_info in let cache_info = if key >= Array.length cache_info then begin let cache_info' = Array.init (succ key) (fun _ -> { cache_memos = NodeTable.empty; cache_index = IndexNodeTable.empty }) in Array.blit cache_info 0 cache_info' 0 len; cache.cache_info <- cache_info'; cache_info' end else cache_info in cache_info.(key) (* * Add a command. *) let add cache key target targets deps commands result = let index = hash_index deps commands in let memo = { memo_index = index; memo_targets = stat_set cache targets; memo_deps = stat_set cache deps; memo_result = result; memo_commands = commands } in let info = get_info cache key in info.cache_memos <- NodeTable.add info.cache_memos target memo; info.cache_index <- IndexNodeTable.add info.cache_index index target (* * Check the target digest. *) let targets_equal cache targets = NodeTable.forall (fun target digest -> stat cache target = digest) targets (* * Check if deps are the same. * This returns true if the deps are equal. * If not, it either returns false, or raises Not_found. *) let deps_equal cache deps1 deps2 = let count1 = NodeSet.cardinal deps1 in let count2 = NodeTable.cardinal deps2 in (count1 = count2) && NodeSet.for_all (fun dep1 -> let digest1 = stat cache dep1 in let digest2 = NodeTable.find deps2 dep1 in digest1 = digest2) deps1 (* * Find a memo from the deps and commands. *) let find_memo cache key deps commands = let { cache_memos = memos; cache_index = index } = get_info cache key in let hash = hash_index deps commands in let rec search = function target :: targets -> let memo = NodeTable.find memos target in let { memo_index = hash'; memo_deps = deps'; memo_commands = commands' } = memo in if hash' = hash && deps_equal cache deps deps' && commands = commands' then memo else search targets | [] -> raise Not_found in let targets = NodeSet.to_list (IndexNodeTable.find index hash) in (* eprintf "Targets: %d@." (List.length targets); *) search targets (* * A memo has not changed if all the deps and the target * have the same digests. *) let up_to_date cache key deps commands = try let memo = find_memo cache key deps commands in if targets_equal cache memo.memo_targets then match memo.memo_result with MemoSuccess _ -> true | MemoFailure _ -> false else false with Not_found -> false let up_to_date_status cache key deps commands = try let memo = find_memo cache key deps commands in if targets_equal cache memo.memo_targets then match memo.memo_result with MemoSuccess _ -> StatusSuccess | MemoFailure code -> StatusFailure code else StatusUnknown with Not_found -> StatusUnknown (* * A memo has not changed if all the deps and the target * have the same digests. *) let target_results results = match results with MemoFailure _ -> raise Not_found | MemoSuccess deps -> deps let find_result cache key deps commands = let memo = find_memo cache key deps commands in let { memo_targets = targets; memo_result = result } = memo in if targets_equal cache targets then target_results result else raise Not_found (* * Find the result of a run, without the commands. *) let find_result_sloppy cache key target = let { cache_memos = memos } = get_info cache key in let memo = NodeTable.find memos target in match memo.memo_result with MemoFailure _ -> raise Not_found | MemoSuccess deps -> deps (************************************************************************ * Values. In this case, we use the key to find the memo. *) (* * Get the memo entry from the key. *) let get_value cache key is_static = ValueTable.find (if is_static then cache.cache_static_values else cache.cache_memo_values) key (* * Find a memo from the deps and commands. *) let find_value_memo cache key is_static deps1 commands1 = let memo = get_value cache key is_static in let hash1 = hash_index deps1 commands1 in let { memo_index = hash2; memo_deps = deps2; memo_commands = commands2 } = memo in if hash1 = hash2 && deps_equal cache deps1 deps2 && commands1 = commands2 then memo else raise Not_found let find_value cache key is_static deps commands = let memo = find_value_memo cache key is_static deps commands in let { memo_targets = targets; memo_result = result } = memo in if targets_equal cache targets then target_results result else raise Not_found let add_value cache key is_static deps commands result = let index = hash_index deps commands in let memo = { memo_index = index; memo_targets = NodeTable.empty; memo_deps = stat_set cache deps; memo_result = result; memo_commands = commands } in if is_static then cache.cache_static_values <- ValueTable.add cache.cache_static_values key memo else cache.cache_memo_values <- ValueTable.add cache.cache_memo_values key memo (************************************************************************ * Directory listings. *) (* * When auto-rehash is in effect, we need to stat the directories * on every lookup. *) let stat_dir cache dir = let name = Dir.fullname dir in try let stat = Unix.LargeFile.stat name in cache.cache_file_stat_count <- succ cache.cache_file_stat_count; Some stat with Unix.Unix_error _ -> None let stat_dirs cache dirs = List.map (stat_dir cache) dirs let stats_equal_opt stat1 stat2 = match stat1, stat2 with Some stat1, Some stat2 -> stats_equal stat1 stat2 | None, None -> true | None, Some _ | Some _, None -> false let rec stats_equal_opt_list stats1 stats2 = match stats1, stats2 with stat1 :: stats1, stat2 :: stats2 -> stats_equal_opt stat1 stat2 && stats_equal_opt_list stats1 stats2 | [], [] -> true | _ :: _, [] | [], _ :: _ -> false let check_stat auto_rehash (stat_old, entries) stat_new = if auto_rehash && not (stats_equal_opt stat_old (Lazy.force stat_new)) then raise Not_found else entries let check_stats auto_rehash (stats_old, entries) stats_new = if auto_rehash && not (stats_equal_opt_list stats_old (Lazy.force stats_new)) then raise Not_found else entries (* * List a directory. *) let rec list_directory cache dir = let dirx = try Unix.opendir (Dir.fullname dir) with Unix.Unix_error _ -> raise Not_found in let rec list entries = let name = try Some (Unix.readdir dirx) with Unix.Unix_error _ | End_of_file -> None in match name with Some "." | Some ".." -> list entries | Some name -> let entry = ref (LazyEntryCore (dir, name)) in let entries = StringTable.add entries name entry in list entries | None -> entries in let entries = list StringTable.empty in Unix.closedir dirx; entries (* * Get the directory listing as a StringTable. *) let ls_dir cache auto_rehash dir = let stat = lazy (stat_dir cache dir) in try check_stat auto_rehash (DirTable.find cache.cache_dirs dir) stat with Not_found -> let entries = list_directory cache dir in let stat = Lazy.force stat in cache.cache_dirs <- DirTable.add cache.cache_dirs dir (stat, entries); entries (* * Path version. *) let ls_path cache auto_rehash dirs = let key = DirListHash.create dirs in let stats = lazy (stat_dirs cache dirs) in try check_stats auto_rehash (DirListTable.find cache.cache_path key) stats with Not_found -> (* Fold together the tables *) let stats = Lazy.force stats in let entries = List.fold_left (fun entries1 dir -> try let entries2 = ls_dir cache auto_rehash dir in StringTable.fold StringTable.add entries1 entries2 with Not_found -> entries1) StringTable.empty (List.rev dirs) in cache.cache_path <- DirListTable.add cache.cache_path key (stats, entries); entries (* * Resolve an entry in the listing. *) let listing_find_item cache listing s = let entry_ref = StringTable.find listing s in match !entry_ref with DirEntryCore entry -> entry | LazyEntryCore (dir, s) -> let node = Node.create_node no_mount_info Mount.empty dir s in let entry = if is_dir cache node then DirEntry (Dir.chdir dir s) else NodeEntry node in entry_ref := DirEntryCore entry; entry (* * The execution path is a little harder, and it is quite different * on Win32 and Unix. * * On Win32: * - File permission doesn't matter * - Files without suffix, and with .com, .exe, .bat and .cmd suffixes are executable * * On Cygwin: * - Files without suffix must be executable * - Files with .com, .exe, .bat and .cmd suffixes are executable * * On Unix: * - There is no .exe suffix * - Only files that are executable count *) let win32_suffixes = [".com"; ".exe"; ".bat"; ".cmd"] let ls_exe_path_win32 cache auto_rehash dirs = let key = DirListHash.create dirs in let stats = lazy (stat_dirs cache dirs) in try check_stats auto_rehash (DirListTable.find cache.cache_exe_path key) stats with Not_found -> let entries = List.fold_left (fun entries1 dir -> try let entries2 = ls_dir cache auto_rehash dir in StringTable.fold (fun entries name _ -> let info = dir, name in let name = String.lowercase name in let entries = StringMTable.add entries name info in if List.exists (Filename.check_suffix name) win32_suffixes then let name = Filename.chop_extension name in StringMTable.add entries name info else entries) entries1 entries2 with Not_found -> entries1) StringMTable.empty (List.rev dirs) in let entries = StringMTable.fold_all (fun entries name info -> StringTable.add entries name (ref (ExeEntryCore info))) StringTable.empty entries in let stats = Lazy.force stats in cache.cache_exe_path <- DirListTable.add cache.cache_exe_path key (stats, entries); entries let ls_exe_path_unix cache auto_rehash dirs = let key = DirListHash.create dirs in let stats = lazy (stat_dirs cache dirs) in try check_stats auto_rehash (DirListTable.find cache.cache_exe_path key) stats with Not_found -> let entries = List.fold_left (fun entries1 dir -> try let entries2 = ls_dir cache auto_rehash dir in StringTable.fold (fun entries name _ -> StringMTable.add entries name (dir, name)) entries1 entries2 with Not_found -> entries1) StringMTable.empty (List.rev dirs) in let entries = StringMTable.fold_all (fun entries name info -> StringTable.add entries name (ref (ExeEntryCore info))) StringTable.empty entries in let stats = Lazy.force stats in cache.cache_exe_path <- DirListTable.add cache.cache_exe_path key (stats, entries); entries (* * Find the first entry that is executable. *) let is_exe_file cache node = try let { Unix.LargeFile.st_kind = kind; Unix.LargeFile.st_perm = perm; Unix.LargeFile.st_uid = uid; Unix.LargeFile.st_gid = gid } = stat_unix cache node in (kind = Unix.S_REG) && ((perm land 0o001) <> 0 || (List.mem gid groups && (perm land 0o010) <> 0) || (uid = euid && (perm land 0o100) <> 0)) with Unix.Unix_error _ | Not_found -> false let is_exe_win32 cache dir s = let node = Node.create_node no_mount_info Mount.empty dir s in if is_dir cache node then None else Some node let is_exe_unix cache dir s = let node = Node.create_node no_mount_info Mount.empty dir s in if is_exe_file cache node then Some node else None let is_exe_cygwin cache dir s = let node = Node.create_node no_mount_info Mount.empty dir s in if List.exists (Filename.check_suffix s) win32_suffixes || is_exe_file cache node then Some node else None let ls_exe_path, is_exe, name_exe, exe_suffixes = if Sys.os_type = "Win32" then ls_exe_path_win32, is_exe_win32, String.lowercase, "" :: win32_suffixes else if Sys.os_type = "Cygwin" then ls_exe_path_win32, is_exe_cygwin, String.lowercase, "" :: win32_suffixes else ls_exe_path_unix, is_exe_unix, (fun s -> s), [""] let rec search_exe cache entries = Lm_list_util.some_map (fun (dir, s) -> is_exe cache dir s) entries let exe_find_nodes cache listing s = let entry_ref = StringTable.find listing (name_exe s) in match !entry_ref with ExeEntryCore entries -> let nodes = search_exe cache entries in entry_ref := ExeEntryNodes nodes; nodes | ExeEntryNodes nodes -> nodes let exe_find_nodes_all cache listing s = try exe_find_nodes cache listing s with Not_found -> [] let exe_find_item cache listing s = match exe_find_nodes cache listing s with node :: _ -> node | [] -> raise Not_found (* * Find all entries with the given prefix. *) let exe_complete_prefix cache s items listing = StringTable.fold (fun items s2 entry_ref -> if Lm_string_util.is_string_prefix s s2 then let nodes = match !entry_ref with ExeEntryCore entries -> let nodes = search_exe cache entries in entry_ref := ExeEntryNodes nodes; nodes | ExeEntryNodes nodes -> nodes in if nodes = [] then items else StringSet.add items s2 else items) items listing (************************************************************************ * Redefine the functions to work on directory groups, where each group may * specify auto-rehashing. *) let rec listing_find cache listings s = match listings with [listing] -> listing_find_item cache listing s | listing :: listings -> (try listing_find_item cache listing s with Not_found -> listing_find cache listings s) | [] -> raise Not_found let rec exe_find cache listings s = match listings with [listing] -> exe_find_item cache listing s | listing :: listings -> (try exe_find_item cache listing s with Not_found -> exe_find cache listings s) | [] -> raise Not_found let exe_find_all cache listings s = List.flatten (List.map (fun listing -> exe_find_nodes_all cache listing s) listings) let exe_complete cache listings s = List.fold_left (exe_complete_prefix cache s) StringSet.empty listings let ls_dir cache auto_rehash dir = [ls_dir cache auto_rehash dir] let ls_path cache groups = List.map (fun (auto_rehash, dirs) -> ls_path cache auto_rehash dirs) groups let ls_exe_path cache groups = List.map (fun (auto_rehash, dirs) -> ls_exe_path cache auto_rehash dirs) groups (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ir/omake_virtual_id.ml0000664000152300015230000000232510613731063016206 0ustar jyhjyh(* * Virtual identifiers for various things in files. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ir/omake_value_print.mli0000664000152300015230000000277410654713446016567 0ustar jyhjyh(* * Value printers. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Omake_wild open Omake_value_type val pp_print_target : formatter -> target -> unit val pp_print_wild_list : formatter -> wild_in_patt list -> unit val pp_print_source_list : formatter -> ('a * source_core) list -> unit val pp_print_value : formatter -> value -> unit val pp_print_simple_value : formatter -> value -> unit val pp_print_value_list : formatter -> value list -> unit val pp_print_path : formatter -> path -> unit (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/ir/omake_parser.ml0000664000152300015230000000365110615471254015350 0ustar jyhjyh(* * The OMake version of the parser uses symbols. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol module Parser = struct module ParserArg = struct type symbol = Lm_symbol.symbol let to_string = to_string let pp_print_symbol = pp_print_symbol let hash_symbol = Hashtbl.hash let compare_symbol = Lm_symbol.compare let eof = Lm_symbol.add "" module Action = Omake_lexer.LexerAction;; type action = Action.action let hash_action = Action.hash let compare_action = Action.compare let pp_print_action = Action.pp_print_action end include Lm_parser.MakeParser (ParserArg) (Lm_parser.ParserPrecedence) let empty = add_prec empty prec_min (Lm_symbol.add ".min") let empty = add_prec empty prec_max (Lm_symbol.add ".max") end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/clib/0000775000152300015230000000000010660137226012636 5ustar jyhjyhomake-0.9.8.5/src/clib/OMakefile0000664000152300015230000000221610640574724014424 0ustar jyhjyh# # This is indirecto to be compatible with nmake # EXTERNAL = ../libmojave-external CUTIL_FILES[] = lm_heap.c lm_heap.h lm_channel.c lm_compat_win32.c lm_compat_win32.h lm_ctype.c lm_printf.c lm_uname_ext.c lm_unix_cutil.c unixsupport.h fam_win32.c fam_kqueue.c fam_inotify.c fam_pseudo.h lm_notify.c inotify.h inotify-syscalls.h inotify.om lm_termsize.c lm_terminfo.c lm_fs_case_sensitive.c MakeLinkExternal($(EXTERNAL)/cutil, $(CUTIL_FILES)) CGeneratedFiles($(CUTIL_FILES)) open configure/snprintf open configure/fs_case_sensitive if $(SNPRINTF_AVAILABLE) CFLAGS += -DHAVE_SNPRINTF export if $(DETECT_FS_CASE_SENSITIVE) CFLAGS += $(DETECT_FS_CASE_SENSITIVE_CFLAGS) export FILES[] = lm_heap lm_channel lm_printf lm_ctype lm_uname_ext lm_unix_cutil lm_compat_win32 readline omake_shell_sys fam_win32 fam_kqueue fam_inotify lm_notify lm_termsize lm_terminfo lm_fs_case_sensitive MakeStaticCLibrary(clib, $(FILES)) clean: $(CLEAN) $(CUTIL_FILES) # # Generate the Makefile # MakeMakefile() omake-0.9.8.5/src/clib/readline.c0000664000152300015230000011537710622401747014603 0ustar jyhjyh/* * Read input from the terminal. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] */ #include #include #include #include #include #include #include /* * XXX: HACK (nogin 02/28/07): * CAMLreturn with non-value types is wrong in 3.09.3 and later; CAMLreturnT was added in 3.09.4 and * 3.10 to address this, but in 3.09.3 we are out of luck! */ #ifndef CAMLreturnT #define CAMLreturnT(type, result) do{ \ type caml__temp_result = (result); \ caml_local_roots = caml__frame; \ return (caml__temp_result); \ }while(0) #endif #ifdef WIN32 # include # include /* Disable some of the warnings */ # pragma warning( disable : 4100 4127 4505 4702 4996 4189) #else # include # include # include # include # ifdef READLINE_ENABLED # include # include # endif #endif /* !WIN32 */ /* * Maximum number of characters in an input line. Defined by limits.h on Unix. */ #ifndef LINE_MAX #define LINE_MAX 2048 #endif /* * Prompts shouldn't be too wild. * In particular, they should be less than an average line length. */ #define MAX_PROMPT_LENGTH 70 /* * Maximum length of the history filename. Defined by limits.h on Unix. */ #ifndef PATH_MAX #define PATH_MAX 2048 #endif /* * Space for completions array. */ #define COMPLETION_LENGTH 10 /* * Name of the command completion callback. */ static char omake_filename_completion[] = "omake_filename_completion"; static char omake_command_completion[] = "omake_command_completion"; /************************************************************************ * Completions. */ /* * Linked list of filename completions. */ typedef struct _completion_info { /* Current directory (needed for filename completion) */ char dir[PATH_MAX]; /* List of completions */ char **completions; } CompletionInfo; /* * Command completions use a callback. */ static char **readline_completion(char *omake_completion, const char *text) { CAMLparam0(); CAMLlocal2(request, response); char *namep, **completions; value *callbackp; int i, length; #ifdef WIN32 /* This is bogus but temporary */ (void) caml__dummy_request; #endif /* Find the callback, abort if it doesn't exist */ callbackp = caml_named_value(omake_completion); if(callbackp == 0 || *callbackp == 0) CAMLreturnT(char **, 0); /* The callback returns an array of strings */ request = copy_string(text); response = caml_callback(*callbackp, request); /* Copy the array of strings */ length = Wosize_val(response); if(length == 0) CAMLreturnT(char **, 0); completions = malloc((length + 1) * sizeof(char *)); if(completions == 0) CAMLreturnT(char **, 0); for(i = 0; i != length; i++) { namep = strdup(String_val(Field(response, i))); if(namep == 0) break; completions[i] = namep; } completions[i] = 0; CAMLreturnT(char **, completions); } /************************************************************************ * Readline simulation for Win32. */ #ifdef WIN32 /* * Number of fields in the history. */ #define MAX_HISTORY_LENGTH 256 /* * Console modes. */ #define RAW_CONSOLE_MODE (ENABLE_WINDOW_INPUT) #define COOKED_CONSOLE_MODE (ENABLE_ECHO_INPUT \ | ENABLE_LINE_INPUT\ | ENABLE_MOUSE_INPUT\ | ENABLE_PROCESSED_INPUT\ | ENABLE_WINDOW_INPUT) /* * Number of events to read from the console. */ #define INPUT_COUNT 10 /* * A ReadLine-style buffer. * The buffer should be long enough to hold the input, * and the line terminator, and the string terminator. */ typedef struct _line_buffer { char buffer[LINE_MAX + 3]; int length, index; } LineBuffer; typedef struct _readline { /* History */ LineBuffer history[MAX_HISTORY_LENGTH]; LineBuffer current; // The line being edited LineBuffer display; // What is displayed int start; // First line in the history int length; // Number of lines in the history int index; // Current line in the history int offset; // Base history offset char filename[PATH_MAX]; // Where is the history saved? /* Input processing */ int escape; // Should next char be escaped? /* Prompts */ char prompt[MAX_PROMPT_LENGTH]; int prompt_length; /* Console information */ int is_console; // Are we connected to a console? int force_prompt; // Force the prompt even if not a console HANDLE console_in; // Input console HANDLE console_out; // Screen buffer int x, y; // Original cursor position int w, h; // Total size of the window // Completion info CompletionInfo completion; } ReadLine; /* * The codes for each operation. */ typedef enum { CODE_SUCCESS, CODE_EOL, CODE_EOF } ProcessCode; /************************************************************************ * Utilities. */ /* * Print an error message. */ static void print_error_code(const char *name, DWORD code) { LPTSTR buffer; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, // Format flags NULL, // Location of the message code, // Error code MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Language (LPTSTR) &buffer, // Message buffer 0, // Buffer size NULL); // Arguments /* Print the message */ fprintf(stderr, "%s: failed with code %d: %s\n", name, errno, buffer); fflush(stderr); LocalFree(buffer); } static void print_error(const char *name) { print_error_code(name, GetLastError()); } /************************************************************************ * Operations on LineBuffers */ /* * Index positions. */ static int IndexOfNextWord(LineBuffer *linep) { int index; index = linep->index; while(index < linep->length && linep->buffer[index] > ' ') index++; while(index < linep->length && linep->buffer[index] <= ' ') index++; return index; } static int IndexOfPrevWord(LineBuffer *linep) { int index; index = linep->index; while(index && linep->buffer[index] <= ' ') index--; while(index && linep->buffer[index] > ' ') index--; return index; } /* * Move the cursor. */ static void LineMoveNextChar(LineBuffer *linep) { if(linep->index != linep->length) linep->index++; } static void LineMovePrevChar(LineBuffer *linep) { if(linep->index) linep->index--; } static void LineMoveFirstChar(LineBuffer *linep) { linep->index = 0; } static void LineMoveLastChar(LineBuffer *linep) { linep->index = linep->length; } static void LineMoveNextWord(LineBuffer *linep) { linep->index = IndexOfNextWord(linep); } static void LineMovePrevWord(LineBuffer *linep) { linep->index = IndexOfPrevWord(linep); } /* * Insert a char at the current position. */ static void LineInsertChar(LineBuffer *linep, char c) { int amount; if(linep->index == LINE_MAX) return; /* Insert it */ amount = linep->length - linep->index; memmove(linep->buffer + linep->index + 1, linep->buffer + linep->index, amount); linep->buffer[linep->index] = c; linep->index++; linep->length++; } /* * Delete characters between the current and the new index. */ static void LineDeleteRange(LineBuffer *linep, int index) { int amount, remaining, tmp; if(index < linep->index) { tmp = index; index = linep->index; linep->index = tmp; } amount = index - linep->index; remaining = linep->length - index; memmove(linep->buffer + linep->index, linep->buffer + index, amount); linep->length -= amount; } static void LineDeletePrevChar(LineBuffer *linep) { if(linep->index) LineDeleteRange(linep, linep->index - 1); } static void LineDeleteNextChar(LineBuffer *linep) { if(linep->index < linep->length) LineDeleteRange(linep, linep->index + 1); else if(linep->index) LineDeleteRange(linep, linep->index - 1); } static void LineDeletePrevWord(LineBuffer *linep) { LineDeleteRange(linep, IndexOfPrevWord(linep)); } static void LineDeleteNextWord(LineBuffer *linep) { LineDeleteRange(linep, IndexOfNextWord(linep)); } static void LineDeleteToBOL(LineBuffer *linep) { LineDeleteRange(linep, 0); } static void LineDeleteToEOL(LineBuffer *linep) { linep->length = linep->index; } static void LineDeleteLine(LineBuffer *linep) { linep->index = 0; linep->length = 0; } /* * Insert an EOL. */ static void LineInsertEOL(LineBuffer *linep) { linep->buffer[linep->length] = '\r'; linep->buffer[linep->length + 1] = '\n'; linep->length += 2; linep->index = linep->length; } /************************************************************************ * ReadLine operations. */ /* * Allocate a ReadLine struct. */ static ReadLine *AllocReadLine(int is_console, HANDLE console_in, HANDLE console_out) { ReadLine *readp; /* Allocate and zero */ readp = (ReadLine *) malloc(sizeof(ReadLine)); if(readp) { memset(readp, 0, sizeof(ReadLine)); readp->is_console = is_console; readp->console_in = console_in; readp->console_out = console_out; readp->offset = 1; } return readp; } /* * Copy the current line from the history. */ static void LoadFromHistory(ReadLine *readp) { LineBuffer *linep; linep = readp->history + ((readp->start + readp->index) % MAX_HISTORY_LENGTH); readp->current = *linep; } /* * Set the console stats. */ static int ConsoleRaw(ReadLine *readp) { CONSOLE_SCREEN_BUFFER_INFO info; int status; /* Set in raw mode */ status = SetConsoleMode(readp->console_in, RAW_CONSOLE_MODE); if(status == 0) { print_error("SetConsoleMode"); return -1; } status = SetConsoleMode(readp->console_out, ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT); if(status == 0) { print_error("SetConsoleMode"); return -1; } /* Remember where the cursor currently is */ status = GetConsoleScreenBufferInfo(readp->console_out, &info); if(status == 0) { print_error("GetConsoleScreenBufferInfo"); readp->x = 0; readp->y = 0; readp->w = 80; readp->h = 24; } else { readp->x = info.dwCursorPosition.X; readp->y = info.dwCursorPosition.Y; readp->w = info.dwSize.X; readp->h = info.dwSize.Y; if(readp->w <= 0) readp->w = 1; if(readp->h <= 0) readp->h = 1; } return 0; } /* * Set the console stats. */ static int ConsoleCooked(ReadLine *readp) { int status; status = SetConsoleMode(readp->console_in, COOKED_CONSOLE_MODE); if(status == 0) { print_error("SetConsoleMode"); return -1; } return 0; } /* * Move the cursor to the right index. */ static void UpdateCursor(ReadLine *readp, int index) { int i, x, y; char *bufp; COORD pos; bufp = readp->current.buffer; x = readp->x; y = readp->y; for(i = 0; i != index; i++) { switch(bufp[i]) { case 0: break; case '\r': x = 0; break; case '\n': y++; break; case '\t': x = (x + 8) & ~7; break; default: x++; break; } if(x == readp->w) { x = 0; y++; } if(y == readp->h) { readp->y--; y = readp->h - 1; } } /* Set the cursor */ pos.X = (SHORT) x; pos.Y = (SHORT) y; SetConsoleCursorPosition(readp->console_out, pos); } /* * Go to the next line in the history. */ static void ReadNextLine(ReadLine *readp) { if(readp->index < readp->length) readp->index++; LoadFromHistory(readp); } static void ReadPrevLine(ReadLine *readp) { if(readp->index > 0) readp->index--; LoadFromHistory(readp); } /* * Clear the screen. */ static void ReadClearScreen(ReadLine *readp) { COORD pos; DWORD count; /* Flood the screen with whitespace */ pos.X = 0; pos.Y = 0; count = readp->w * readp->h; FillConsoleOutputCharacter(readp->console_out, (TCHAR) ' ', count, pos, &count); /* Move the cursor and print the prompt */ readp->x = 0; readp->y = 0; UpdateCursor(readp, 0); WriteFile(readp->console_out, readp->prompt, readp->prompt_length, &count, NULL); /* Move the standard cursor */ readp->y = readp->prompt_length / readp->w; readp->x = readp->prompt_length % readp->w; UpdateCursor(readp, 0); } /* * Refresh the current line in the console. */ static void Refresh(ReadLine *readp) { LineBuffer *old, *current; DWORD count; int end; old = &readp->display; current = &readp->current; /* Write to max of old and new lengths */ if(current->length < old->length) end = old->length; else end = current->length; /* Copy the entire line, and pad with spaces */ memcpy(old->buffer, current->buffer, current->length); memset(old->buffer + current->length, ' ', end - current->length); /* Write the data to the console */ UpdateCursor(readp, 0); WriteFile(readp->console_out, // Echo to the console old->buffer, // Data to write end, // Write all characters &count, // Number of bytes written NULL); // Not overlapped UpdateCursor(readp, current->index); old->index = current->index; old->length = current->length; } /************************************************************************ * Processor. */ /* * Send the character to the current process. */ static ProcessCode process_char(ReadLine *readp, char c) { LineBuffer *linep; ProcessCode code; code = CODE_SUCCESS; linep = &readp->current; if(readp->escape) { readp->escape = 0; LineInsertChar(linep, c); } else { switch(c) { case 0: break; case 'A'-'@': LineMoveFirstChar(linep); break; case 'B'-'@': LineMovePrevChar(linep); break; case 'D'-'@': code = CODE_EOF; break; case 'E'-'@': LineMoveLastChar(linep); break; case 'F'-'@': LineMoveNextChar(linep); break; case 'H'-'@': LineDeletePrevChar(linep); break; case 'K'-'@': LineDeleteToEOL(linep); break; case 'L'-'@': ReadClearScreen(readp); break; case 'P'-'@': ReadPrevLine(readp); break; case 'N'-'@': ReadNextLine(readp); break; case 'V'-'@': readp->escape = 1; break; case 'W'-'@': LineDeletePrevWord(linep); break; case 'X'-'@': case 'C'-'@': LineDeleteLine(linep); break; case 127: LineDeleteNextChar(linep); break; case '\n': case '\r': LineInsertEOL(linep); code = CODE_EOL; break; case '\\'-'@': case 'Z'-'@': break; default: LineInsertChar(linep, c); break; } } Refresh(readp); return code; } /* * Input loop. */ static ProcessCode processor(ReadLine *readp) { INPUT_RECORD input[INPUT_COUNT]; INPUT_RECORD *event; KEY_EVENT_RECORD *key; ProcessCode code; int status; DWORD count, i; char c; /* Input loop */ while(1) { enter_blocking_section(); status = ReadConsoleInput(readp->console_in, input, INPUT_COUNT, &count); leave_blocking_section(); if(status == 0) { print_error("ReadConsoleInput"); return CODE_EOF; } /* Perform each event */ for(i = 0; i != count; i++) { event = &input[i]; switch(event->EventType) { case KEY_EVENT: /* Send the key to the process */ key = &event->Event.KeyEvent; c = key->uChar.AsciiChar; if(key->bKeyDown) { code = process_char(readp, c); if(code != CODE_SUCCESS) return code; } break; case MOUSE_EVENT: case WINDOW_BUFFER_SIZE_EVENT: case MENU_EVENT: case FOCUS_EVENT: default: break; } } } } /* * Read in cooked mode. */ static void readline_cooked(ReadLine *readp) { char *s; enter_blocking_section(); s = fgets(readp->current.buffer, LINE_MAX, stdin); leave_blocking_section(); if(s == 0) raise_end_of_file(); readp->current.length = strlen(readp->current.buffer); } /* * Read in raw console mode. */ static void readline_raw(ReadLine *readp) { /* Process in raw mode */ ConsoleRaw(readp); processor(readp); ConsoleCooked(readp); } /* * Once reading is done, reset all the buffers. */ static void readline_done(ReadLine *readp) { LineBuffer *linep; char *strp; int i, c; /* Copy the current line to the history */ linep = readp->history + ((readp->start + readp->length) % MAX_HISTORY_LENGTH); *linep = readp->current; /* Do not include the eol in the history */ strp = linep->buffer; i = linep->length; while(i > 0) { c = strp[i - 1]; if(c == '\n' || c == '\r') i--; else break; } strp[i] = 0; linep->length = i; linep->index = i; /* Scroll the history if the line is nonempty */ if(i) { if(readp->length < MAX_HISTORY_LENGTH - 1) readp->length++; else { readp->start = (readp->start + 1) % MAX_HISTORY_LENGTH; readp->offset++; } readp->index = readp->length; } /* Clear the next line in the history */ linep = readp->history + ((readp->start + readp->length) % MAX_HISTORY_LENGTH); linep->index = 0; linep->length = 0; /* Clear the display buffer */ linep = &readp->display; linep->index = 0; linep->length = 0; /* Data is copied from the current buffer */ linep = &readp->current; linep->index = 0; } /* * Read a line from the console. */ static void readline(ReadLine *readp, const char *promptp) { int len; /* Get the prompt */ len = strlen(promptp); if(len > sizeof(readp->prompt) - 1) len = sizeof(readp->prompt) - 1; memcpy(readp->prompt, promptp, len); readp->prompt[len] = 0; readp->prompt_length = len; /* Display the prompt */ if(readp->is_console || readp->force_prompt) { printf("%s", readp->prompt); fflush(stdout); } /* Read the input line */ if(readp->is_console) readline_raw(readp); else readline_cooked(readp); /* Add this line to the history */ readline_done(readp); } /* * Load the history from a file. */ static int do_readline_load_history(ReadLine *readp, const char *filenamep) { char line[LINE_MAX + 32]; LineBuffer *linep; FILE *filep; char *strp; if(strlen(filenamep) >= PATH_MAX) return -1; strcpy(readp->filename, filenamep); if((filep = fopen(filenamep, "r")) == NULL) return -1; while(fgets(line, sizeof(line) - 1, filep)) { /* Skip over the line number */ strp = line; while(isspace(*strp)) strp++; while(isdigit(*strp)) strp++; while(isspace(*strp)) strp++; /* Copy into a line buffer */ linep = readp->history + ((readp->start + readp->length) % MAX_HISTORY_LENGTH); linep->length = strlen(strp); if(linep->length == 0) continue; if(linep->length > LINE_MAX) linep->length = LINE_MAX; else linep->length--; memcpy(linep->buffer, strp, linep->length); linep->index = linep->length; /* Now scroll the history */ if(readp->length < MAX_HISTORY_LENGTH - 1) readp->length++; else { readp->start = (readp->start + 1) % MAX_HISTORY_LENGTH; readp->offset++; } readp->index = readp->length; } fclose(filep); return 0; } /* * Save the history to a file. */ static int do_readline_save_history(ReadLine *readp) { int i, offset, start, length; LineBuffer *linep; FILE *filep; if(*readp->filename == 0) return -1; if((filep = fopen(readp->filename, "w")) == NULL) return -1; offset = readp->offset; start = readp->start; length = readp->length; for(i = 0; i < length; i++) { linep = readp->history + ((start + i) % MAX_HISTORY_LENGTH); linep->buffer[linep->length] = 0; fprintf(filep, "%5d %s\n", offset + i, linep->buffer); } fclose(filep); return 0; } /************************************************************************ * Main routines. */ /* * Only one readline buffer. */ static ReadLine *readp; /* * Is input a tty? */ value omake_isatty(value v_unit) { return Val_int(readp->is_console); } value omake_is_interactive(value v_unit) { return Val_int(readp->is_console || readp->force_prompt); } value omake_readline_flush(value v_unit) { return Val_unit; } /* * Some of these history functions can be implemented. */ value omake_where_history(value v_unit) { return Val_int(readp->offset + readp->length); } value omake_readline_load_file(value v_file) { do_readline_load_history(readp, String_val(v_file)); return Val_unit; } value omake_readline_save_file(value v_unit) { do_readline_save_history(readp); return Val_unit; } value omake_readline_set_length(value v_length) { return Val_unit; } value omake_readline_set_directory(value v_dir) { return Val_unit; } value omake_readline_history(value v_unit) { int i, length, start, offset; char store[MAX_HISTORY_LENGTH][100]; char *data[MAX_HISTORY_LENGTH + 1]; char *strp; LineBuffer *linep; start = readp->start; length = readp->length; offset = readp->offset; for(i = 0; i < length; i++) { linep = readp->history + ((start + i) % MAX_HISTORY_LENGTH); strp = store[i]; sprintf(strp, "%-5d %.70s", i + offset, linep->buffer); data[i] = strp; } data[i] = 0; return caml_copy_string_array((char const **) data); } /* * Force the prompt anyway. */ value omake_interactive(value v_bool) { int interactive = Int_val(v_bool); if(interactive) readp->force_prompt = 1; else { readp->is_console = 0; readp->force_prompt = 0; } return Val_unit; } /* * Read an entire line from the input. */ value omake_readline(value v_prompt) { LineBuffer *linep; value v_str; /* Get the line */ readline(readp, String_val(v_prompt)); /* Copy it to a string */ linep = &readp->current; v_str = alloc_string(linep->length); memcpy(String_val(v_str), linep->buffer, linep->length); /* Reset the current buffer */ linep->index = 0; linep->length = 0; return v_str; } /* * Read a single character from the input. */ value omake_readstring(value v_prompt, value v_buf, value v_off, value v_len) { LineBuffer *linep; int off, len, amount; char *buf, *prompt; /* If the buffer is empty, read the next line */ prompt = String_val(v_prompt); linep = &readp->current; if(linep->index == linep->length) { linep->index = 0; linep->length = 0; readline(readp, prompt); } /* Get as much as possible */ buf = String_val(v_buf); off = Int_val(v_off); len = Int_val(v_len); amount = linep->length - linep->index; if(amount > len) amount = len; memcpy(buf + off, linep->buffer + linep->index, amount); linep->index += amount; return Val_int(amount); } /* * Attach to the console. */ value omake_readline_init(value v_unit) { HANDLE c_stdin, c_stdout, handle; DWORD status, mode; int is_console; /* Get the stdin handle */ c_stdin = GetStdHandle(STD_INPUT_HANDLE); c_stdout = GetStdHandle(STD_OUTPUT_HANDLE); if(c_stdin == INVALID_HANDLE_VALUE || c_stdout == INVALID_HANDLE_VALUE) failwith("omake_readline_init: no standard channels"); /* Check if it is a console */ is_console = 1; status = GetConsoleMode(c_stdin, &mode); if(status) { /* Make sure output is to the console */ handle = CreateFile("CONOUT$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(handle == INVALID_HANDLE_VALUE) is_console = 0; else c_stdout = handle; } else is_console = 0; /* Good, we have a console */ readp = AllocReadLine(is_console, c_stdin, c_stdout); return Val_unit; } #else /* !WIN32 */ /************************************************************************ * Unix readline interface. */ #ifdef RL_PROMPT_START_IGNORE #define INVIS_START RL_PROMPT_START_IGNORE #define INVIS_END RL_PROMPT_END_IGNORE #else #define INVIS_START '\001' #define INVIS_END '\002' #endif /* * Input state. */ typedef struct _readline { /* Console info */ int console_in; int is_console; /* Prompts */ char * prompt; int prompt_size; int force_prompt; /* Buffered data */ char * buffer; int buffer_size; int index; int length; /* Current directory */ char dir[PATH_MAX]; } ReadLine; /* * Allocate the struct. */ static ReadLine *AllocReadLine(int is_console, int console_in) { ReadLine *readp; /* Allocate */ readp = (ReadLine *) malloc(sizeof(ReadLine)); if(readp == NULL) failwith("AllocReadLine: out of memory"); memset(readp, 0, sizeof(ReadLine)); /* Initialize */ readp->buffer = malloc(LINE_MAX); if (readp->buffer == NULL) failwith("AllocReadLine: out of memory"); readp->buffer_size = LINE_MAX; readp->prompt = malloc(MAX_PROMPT_LENGTH); if (readp->prompt == NULL) failwith("AllocReadLine: out of memory"); readp->prompt_size = MAX_PROMPT_LENGTH; readp->console_in = console_in; readp->is_console = is_console; readp->dir[0] = '/'; return readp; } /* * Read in cooked mode. */ static void readline_cooked(ReadLine *readp) { if(readp->is_console || readp->force_prompt) { printf("%s", readp->prompt); fflush(stdout); } if(fgets(readp->buffer, readp->buffer_size, stdin) == NULL) readp->length = 0; else readp->length = strlen(readp->buffer); } /* * Read in raw console mode. */ #ifdef READLINE_ENABLED static void readline_raw(ReadLine *readp) { char *linep, *expansion = NULL; int length, result; prompt: #ifdef READLINE_GNU rl_on_new_line(); #endif linep = readline(readp->prompt); if(linep && *linep && (readp->is_console || readp->force_prompt)) { /* Perform a history expansion */ result = history_expand(linep, &expansion); free(linep); switch(result) { case 0: /* No expansion */ break; case 1: /* There was an expansion */ printf("%s\n", expansion); fflush(stdout); break; case 2: /* Display, but do not execute */ printf("%s\n", expansion); fflush(stdout); free(expansion); goto prompt; default: /* There was an error during expansion */ printf("History expansion failed\n"); fflush(stdout); free(expansion); goto prompt; } /* Successful expansion */ add_history(expansion); length = strlen(expansion); if(length >= readp->buffer_size) { char *new_buffer = malloc(length + 1); if(new_buffer == NULL) failwith("readline_raw: out of memory"); free(readp->buffer); readp->buffer = new_buffer; readp->buffer_size = length + 1; } memcpy(readp->buffer, expansion, length); readp->buffer[length] = '\n'; readp->length = length + 1; free(expansion); } else if(linep) { free(linep); readp->buffer[0] = '\n'; readp->length = 1; } else readp->length = 0; } #else /* !READLINE_ENABLED */ #define readline_raw readline_cooked #endif /* !READLINE_ENABLED */ /* * Read a line from the console. */ static void do_readline(ReadLine *readp, const char *promptp) { int i; /* Get the prompt */ int is_vis = 1, vis_length = 0; int last_vis[3] = {0,0,0}, vis_ind = 0; #ifdef RL_PROMPT_START_IGNORE int copy_markers = readp -> is_console; #else #define copy_markers 0 #endif for(i = 0; *promptp; promptp++) { if (i == readp->prompt_size - 1) { /* Ran out of memory, allocate bigger buffer */ char * old_prompt = readp->prompt; int new_size = readp->prompt_size * 2; readp->prompt = malloc(new_size); if (readp->prompt == NULL) { readp->prompt = old_prompt; failwith("do_readline: out of memory"); } else { memcpy(readp->prompt, old_prompt, i); free(old_prompt); readp->prompt_size = new_size; } } if (*promptp == INVIS_START) is_vis = 0; if (is_vis) { vis_length++; if (vis_length == MAX_PROMPT_LENGTH + 1) { /* We just ran out */ readp->prompt[last_vis[0]] = '.'; readp->prompt[last_vis[1]] = '.'; readp->prompt[last_vis[2]] = '.'; } } if (((!is_vis) || (vis_length <= MAX_PROMPT_LENGTH)) && (copy_markers || ((*promptp != INVIS_START) && (*promptp != INVIS_END)))) { if (is_vis) last_vis[vis_ind++ % 3] = i; readp->prompt[i++] = *promptp; } if (*promptp == INVIS_END) is_vis = 1; } readp->prompt[i] = 0; /* Read the input line */ if(readp->is_console) readline_raw(readp); else readline_cooked(readp); readp->index = 0; } /* * History file and length. */ static char readline_file[2048]; static int readline_length; static void do_readline_load_file(const char *filep) { #ifdef READLINE_ENABLED /* Check the length */ if(strlen(filep) >= sizeof(readline_file)) caml_invalid_argument("omake_readline_file: filename is too long"); /* If the file has changed, load the file */ if(strcmp(readline_file, filep)) { strcpy(readline_file, filep); read_history(readline_file); } #endif /* READLINE_ENABLED */ } static void do_readline_save_file() { #ifdef READLINE_ENABLED if(*readline_file) write_history(readline_file); #endif /* READLINE_ENABLED */ } static void do_readline_set_length(int length) { #ifdef READLINE_ENABLED /* If the length has changed, stifle the history */ if(length != readline_length) { readline_length = length; stifle_history(readline_length); } #endif /* READLINE_ENABLED */ } /************************************************************************ * Completion functions. */ static ReadLine *readp; #ifdef READLINE_ENABLED /* * Flatten the list. */ static char **readline_completion_matches(const char *text, int first, int last) { char **matches; int amount; /* Sanity checking */ amount = last - first; if(amount <= 0 || amount >= LINE_MAX) return NULL; /* Three kinds of completion */ if(first == 0) matches = readline_completion(omake_command_completion, text); else matches = readline_completion(omake_filename_completion, text); return matches; } #endif /* READLINE_ENABLED */ /************************************************************************ * Public functions. */ /* * Is input a tty? */ value omake_isatty(value v_unit) { return Val_int(readp->is_console); } value omake_is_interactive(value v_unit) { return Val_int(readp->is_console || readp->force_prompt); } value omake_readline_flush(value v_unit) { if(readp->is_console) fflush(stdin); return Val_unit; } value omake_where_history(value v_unit) { int i; #ifdef READLINE_ENABLED i = history_base + history_length; #else i = 1; #endif return Val_int(i); } value omake_readline_load_file(value v_file) { do_readline_load_file(String_val(v_file)); return Val_unit; } value omake_readline_save_file(value v_unit) { do_readline_save_file(); return Val_unit; } value omake_readline_set_length(value v_length) { do_readline_set_length(Int_val(v_length)); return Val_unit; } value omake_readline_set_directory(value v_dir) { /* Copy the current directory */ strncpy(readp->dir, String_val(v_dir), PATH_MAX - 1); readp->dir[PATH_MAX - 1] = 0; return Val_unit; } value omake_readline_history(value v_unit) { #ifdef READLINE_ENABLED char *data[history_length + 1]; char entries[history_length][80]; int i; #ifdef READLINE_GNU HIST_ENTRY **the_list; the_list = history_list(); i = 0; if(the_list) { while(the_list[i]) { data[i] = entries[i]; sprintf(data[i], "%-5d %.70s", i + history_base, the_list[i]->line); data[i][79] = 0; i++; } } data[i] = 0; #else /* !READLINE_GNU */ /* * BSD readline doesn't have history_list, or any way to get the complete * history in one call. */ for(i = 0; i < history_length; i++) { HIST_ENTRY *entryp; entryp = history_get(history_base + i); if(entryp == 0) break; data[i] = entries[i]; sprintf(data[i], "%-5d %.70s", i + history_base, entryp->line); data[i][79] = 0; } data[i] = 0; #endif /* !READLINE_GNU */ #else /* !READLINE_ENABLED */ char *data[1]; data[0] = 0; #endif /* !READLINE_ENABLED */ return caml_copy_string_array((char const **) data); } /* * Force the prompt anyway. */ value omake_interactive(value v_bool) { int interactive = Int_val(v_bool); if(interactive) readp->force_prompt = 1; else { readp->is_console = 0; readp->force_prompt = 0; } return Val_unit; } /* * Read an entire line from the input. */ value omake_readline(value v_prompt) { value v_str; /* Get the line */ do_readline(readp, String_val(v_prompt)); /* Copy it to the buffer */ v_str = alloc_string(readp->length); memcpy(String_val(v_str), readp->buffer, readp->length); /* Reset the current buffer */ readp->index = 0; readp->length = 0; return v_str; } /* * Read a single character from the input. */ value omake_readstring(value v_prompt, value v_buf, value v_off, value v_len) { int off, len, amount; char *buf, *prompt; /* If the buffer is empty, read the next line */ prompt = String_val(v_prompt); if(readp->index == readp->length) { readp->index = 0; readp->length = 0; do_readline(readp, prompt); } /* Get as much as possible */ buf = String_val(v_buf); off = Int_val(v_off); len = Int_val(v_len); amount = readp->length - readp->index; if(amount > len) amount = len; memcpy(buf + off, readp->buffer + readp->index, amount); readp->index += amount; return Val_int(amount); } /* * Attach to the console. */ value omake_readline_init(value v_unit) { readp = AllocReadLine(isatty(0), 0); #ifdef READLINE_ENABLED using_history(); rl_attempted_completion_function = readline_completion_matches; rl_completion_append_character = 0; #endif return Val_unit; } #endif /* !WIN32 */ value omake_rl_prompt_wrappers(value v_unit) { CAMLparam1(v_unit); CAMLlocal1(buf); #ifdef INVIS_START { char begin[2] = { INVIS_START, 0}; char end [2] = { INVIS_END, 0}; CAMLlocal2(s1, s2); s1 = caml_copy_string(begin); s2 = caml_copy_string(end); buf = alloc_tuple(2); Field(buf, 0) = s1; Field(buf, 1) = s2; } #else /* INVIS_START */ { CAMLlocal1(emptystr); emptystr = caml_copy_string(""); buf = alloc_tuple(2); Field(buf, 0) = emptystr; Field(buf, 1) = emptystr; } #endif /* INVIS_START */ CAMLreturn(buf); } /* * vim:tw=100:ts=4:et:sw=4:cin */ omake-0.9.8.5/src/clib/omake_shell_sys.c0000664000152300015230000010235610640535624016174 0ustar jyhjyh/* * Shell utilities. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] */ #include #include #include #include #include #include #ifdef WIN32 #include /* Disable some of the warnings */ #pragma warning( disable : 4127 4189 4702 4706 4996 ) #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0400 #endif #include #include #include #include "unixsupport.h" #include "lm_compat_win32.h" #define Val_nil (Val_int(0)) /* * Fields of the create_process struct. */ #define CREATE_PROCESS_STDIN 0 #define CREATE_PROCESS_STDOUT 1 #define CREATE_PROCESS_STDERR 2 #define CREATE_PROCESS_PGRP 3 #define CREATE_PROCESS_DIR 4 #define CREATE_PROCESS_ENV 5 #define CREATE_PROCESS_EXE 6 #define CREATE_PROCESS_ARGV 7 /* * Tags for Unix status codes. */ #define TAG_WEXITED 0 #define TAG_WSIGNALED 1 #define TAG_WSTOPPED 2 /* * String sizes for creating commands. */ #define SIZEOF_ENVIRONMENT (1 << 15) #define SIZEOF_COMMAND (1 << 15) /* * Max number of threads we can enumerate in a process. */ #define MAX_THREAD_COUNT 1024 /* * Processes and groups. * * Win32 doesn't really have much idea of process groups. * The CreateProcess function just allows processes to be created * in a "process group" that does not get signals from the * console. * * However, we try to do something more. We assign each * process to a process group (number). An entire process * group can be signaled at once. * * However, if more than one process wants input from the * console, they fight it out... */ /* Process status */ #define STATUS_RUNNING 0 #define STATUS_STOPPED 1 #define STATUS_EXITED 2 /* * The root process has pid/pgrp 1. * The null process id usually refers to the current process. */ #define NULL_PID 0 #define INIT_PID 1 #define MAX_PID 29999 /* * The process is group leader if pid and pgrp are the same. */ typedef struct _process { int pid; // Process identifier int pgrp; // Process group DWORD thread; // Identifier if this is a thread unsigned is_thread : 1; // Set if this is a thread unsigned killed : 1; // Set if the process is being killed unsigned changed : 1; // Some even happened on this process unsigned status : 2; // Process status unsigned code : 8; // Exit code, if the process exited HANDLE handle; // The actual process (or event if this is a thread) DWORD wid; // Process identifier struct _process *next; // Linked list } Process; typedef struct _shell_state { int pid_counter; // Index for assigning process ids HANDLE changed; // Wake up the wait handler HANDLE console; // Console handle, if it exists int current_pgrp; // Current tty process group Process *processes; // List of processes } ShellState; /* * The state. */ static ShellState *state = NULL; /************************************************ * Utilities. */ /* * Print an error message. */ static void print_error_code(const char *name, DWORD code) { LPTSTR buffer; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, // Format flags NULL, // Location of the message code, // Error code MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Language (LPTSTR) &buffer, // Message buffer 0, // Buffer size NULL); // Arguments /* Print the message */ fprintf(stderr, "%s: failed with code %d: %s\n", name, errno, buffer); fflush(stderr); LocalFree(buffer); } static void print_error(const char *name) { print_error_code(name, GetLastError()); } /* * Check if a string contains spaces, and return the * number of extra characters. */ static int string_escape_length(const char *strp) { int c, escaped, extra; extra = 0; escaped = 0; while(c = *strp++) { switch(c) { case '"': escaped++; extra++; break; case '*': case '?': case '[': case ']': case '{': case '}': case '~': case '\'': escaped++; break; default: if(c <= ' ') escaped++; break; } } return escaped ? extra + 2 : 0; } /* * Quote the string while copying. */ static void string_copy_escaped(char *dstp, const char *srcp) { char c; *dstp++ = '"'; while(c = *srcp) { if(c == '"') *dstp++ = '\\'; *dstp++ = c; srcp++; } *dstp++ = '"'; } /* * List all the threads in a process. * This may be slightly out-of-date because of the * delay from taking the snapshot. */ static int list_process_threads(DWORD pid, DWORD *threads, int limit) { THREADENTRY32 entry; HANDLE handle; int index; /* Take a snapshot of all running threads */ handle = CompatCreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if(handle == INVALID_HANDLE_VALUE) return 0; /* * Retrieve information about the first thread, * and exit if unsuccessful. */ entry.dwSize = sizeof(THREADENTRY32); if(CompatThread32First(handle, &entry) == FALSE) { CloseHandle(handle); return 0; } /* * Now walk the thread list of the system, * and display information about each thread * associated with the specified process. */ index = 0; do { if(entry.th32OwnerProcessID == pid) threads[index++] = entry.th32ThreadID; } while(CompatThread32Next(handle, &entry) && index < limit); CloseHandle(handle); return index; } /* * Suspend all the threads in the process. */ static int suspend_process(Process *processp) { DWORD threads[MAX_THREAD_COUNT]; HANDLE handle; int i, count; #ifdef OSH_DEBUG fprintf(stderr, "suspend_process\n"); fflush(stderr); #endif /* Not available before WindowsXP */ if(ExistsOpenThread() == 0) { fprintf(stderr, "Process control is not supported\n"); fflush(stderr); return -1; } /* Don't do anything if already suspended */ if(processp->status != STATUS_RUNNING) return 0; /* If it is a thread, suspend it */ if(processp->is_thread) { handle = CompatOpenThread(THREAD_SUSPEND_RESUME, FALSE, processp->thread); if(handle != INVALID_HANDLE_VALUE) { SuspendThread(handle); CloseHandle(handle); processp->changed = 1; processp->status = STATUS_STOPPED; SetEvent(state->changed); } return 0; } /* Otherwise it is a process; suspend all the subthreads */ if(processp->wid == 0) return -1; /* Enumerate all threads for that process */ count = list_process_threads(processp->wid, threads, MAX_THREAD_COUNT); #ifdef OSH_DEBUG fprintf(stderr, "suspend_process: suspend %d threads\n", count); fflush(stderr); #endif /* Suspend them all */ for(i = 0; i != count; i++) { handle = CompatOpenThread(THREAD_SUSPEND_RESUME, FALSE, threads[i]); if(handle == INVALID_HANDLE_VALUE) print_error("OpenThread"); if(handle != INVALID_HANDLE_VALUE) { if(SuspendThread(handle) < 0) print_error("SuspendThread"); CloseHandle(handle); } } /* Notify the wait handler */ processp->changed = 1; processp->status = STATUS_STOPPED; SetEvent(state->changed); return 0; } /* * Resume all the threads in the process. */ static int resume_process(Process *processp) { DWORD threads[MAX_THREAD_COUNT]; HANDLE handle; int i, count; /* Not available before WindowsXP */ if(ExistsOpenThread() == 0) { fprintf(stderr, "Process control is not supported\n"); fflush(stderr); return -1; } /* Don't do anything if already suspended */ if(processp->status != STATUS_STOPPED) return 0; #ifdef OSH_DEBUG fprintf(stderr, "resume_process: pid %i, wid %i\n", processp->pid, processp->wid); fflush(stderr); #endif /* If it is a thread, resume it */ if(processp->is_thread) { handle = CompatOpenThread(THREAD_SUSPEND_RESUME, FALSE, processp->thread); if(handle != INVALID_HANDLE_VALUE) { ResumeThread(handle); CloseHandle(handle); processp->status = STATUS_RUNNING; SetEvent(state->changed); } return 0; } /* Get the process id */ if(processp->wid == 0) return -1; /* Enumerate all threads for that process */ count = list_process_threads(processp->wid, threads, MAX_THREAD_COUNT); /* Suspend them all */ for(i = 0; i != count; i++) { handle = CompatOpenThread(THREAD_SUSPEND_RESUME, FALSE, threads[i]); if(handle != INVALID_HANDLE_VALUE) { ResumeThread(handle); CloseHandle(handle); } } processp->status = STATUS_RUNNING; return 0; } /* * Terminate the process. * Try to do this by sending the CTRL_C event. * If that fails, just terminate it. */ static int kill_process(Process *processp) { /* * Set the killed flag. * For threads, this will generate an exception * then next time it calls check_thread. */ processp->killed = 1; if(processp->is_thread) return 0; /* Get the process id */ if(processp->wid == 0) return -1; #if 0 /* Resume it so it can handle the exception */ GenerateConsoleCtrlEvent(CTRL_C_EVENT, processp->wid); resume_process(processp); #endif /* A lot of processes ignore the CTRL_C_EVENT, so just temrinate it */ TerminateProcess(processp->handle, 1); return 0; } /* * The generic handler. */ static int process_group_map(int (*op)(Process *processp), int pgrp) { Process *processp; int code; code = -1; for(processp = state->processes; processp; processp = processp->next) { if(processp->pgrp == pgrp) { if(op(processp) == 0) code = 0; } } return code; } /* * Allocate a new process identifier. * Make sure it isn't in use as a id or a group. */ static int alloc_pid(void) { Process *processp; int pid; do { /* Get the next candidate */ if(state->pid_counter == MAX_PID) state->pid_counter = 0; pid = ++state->pid_counter; /* Check that it isn't used */ for(processp = state->processes; processp; processp = processp->next) { if(processp->pid == pid || processp->pgrp == pid) break; } } while(processp); return pid; } /* * The process has changed. * Fixup the process list, and * return a wait code. */ #pragma warning( disable : 4100 ) static value handle_wait(const char *debug, Process **processpp) { CAMLparam0(); CAMLlocal2(tuple, status); Process *processp; processp = *processpp; processp->changed = 0; #ifdef OSH_DEBUG fprintf(stderr, "+++ wait: %s: pid=%d, group=%d, status=%d\n", debug, processp->pid, processp->pgrp, processp->status); #endif switch(processp->status) { case STATUS_STOPPED: tuple = alloc_tuple(2); Field(tuple, 0) = Val_int(processp->pid); Field(tuple, 1) = Val_unit; status = alloc_small(1, TAG_WSTOPPED); Field(status, 0) = Val_int(processp->code); Field(tuple, 1) = status; break; case STATUS_EXITED: tuple = alloc_tuple(2); Field(tuple, 0) = Val_int(processp->pid); Field(tuple, 1) = Val_unit; status = alloc_small(1, TAG_WEXITED); Field(status, 0) = Val_int(processp->code); Field(tuple, 1) = status; CloseHandle(processp->handle); *processpp = processp->next; free(processp); break; case STATUS_RUNNING: default: invalid_argument("wait_process: process is running"); break; } CAMLreturn(tuple); } /* * Terminate all jobs and exit. */ static void terminate_processes(void) { Process *processp; int wait; /* Send all processes the termination signal */ wait = 0; processp = state->processes; while(processp) { if(processp->pid != INIT_PID) { processp->killed = 1; if((processp->wid) && (processp->pid != INIT_PID)) { #ifdef OSH_DEBUG fprintf(stderr, "terminate_processes: Generating CTRL-C for process pid %i, group, status %i, is_thread %i, wid %i, \n", processp->pid, processp->pgrp, processp->status, processp->is_thread, processp->wid); fflush(stderr); #endif GenerateConsoleCtrlEvent(CTRL_C_EVENT, processp->wid); wait++; } resume_process(processp); } processp = processp->next; } /* Wait for them to die */ if(wait) { Sleep(1000); processp = state->processes; while(processp) { if((processp->wid) && (processp->pid != INIT_PID)) { #ifdef OSH_DEBUG fprintf(stderr, "terminate_processes: terminating process pid %i, wid %i\n", processp->pid, processp->wid); fflush(stderr); #endif TerminateProcess(processp->handle, 1); } processp = processp->next; } } } /************************************************************************ * OCaml interface. */ /* * Switch the preprocessor to send input to * the specified group. */ value omake_shell_sys_set_tty_pgrp(value v_pgrp) { CAMLparam1(v_pgrp); int pgrp; #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_set_tty_pgrp\n"); fflush(stderr); #endif pgrp = Int_val(v_pgrp); if(pgrp == 0) pgrp = INIT_PID; state->current_pgrp = pgrp; CAMLreturn(Val_unit); } /* * Process control. */ value omake_shell_sys_suspend(value v_pgrp) { CAMLparam1(v_pgrp); #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_suspend\n"); fflush(stderr); #endif if(process_group_map(suspend_process, Int_val(v_pgrp)) < 0) failwith("omake_shell_sys_suspend"); CAMLreturn(Val_unit); } value omake_shell_sys_resume(value v_pgrp) { CAMLparam1(v_pgrp); #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_resume\n"); fflush(stderr); #endif if(process_group_map(resume_process, Int_val(v_pgrp)) < 0) failwith("omake_shell_sys_resume"); CAMLreturn(Val_unit); } value omake_shell_sys_kill(value v_pgrp) { CAMLparam1(v_pgrp); #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_kill\n"); fflush(stderr); #endif if(process_group_map(kill_process, Int_val(v_pgrp)) < 0) failwith("omake_shell_sys_kill"); CAMLreturn(Val_unit); } /* * Create a thread process. We don't fill in the thread id * yet (because we don't know what it is). */ value omake_shell_sys_create_thread_pid(value v_pgrp) { CAMLparam1(v_pgrp); Process *processp; HANDLE event; int pgrp; int pid; pid = alloc_pid(); #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_create_thread_pid: %d\n", pid); fflush(stderr); #endif /* Allocate the process data */ processp = (Process *) malloc(sizeof(Process)); if(processp == 0) failwith("omake_shell_sys_create_thread_pid: out of memory"); memset(processp, 0, sizeof(Process)); /* Create an event for waiting on the thread */ event = CreateEvent(NULL, FALSE, FALSE, NULL); if(event == NULL) { free(processp); failwith("omake_shell_sys_create_thread_pid: can't create event"); } pgrp = Int_val(v_pgrp); if(pgrp == 0) pgrp = pid; processp->pid = pid; processp->pgrp = pgrp; processp->status = STATUS_RUNNING; processp->is_thread = 1; processp->handle = event; processp->wid = 0; processp->next = state->processes; state->processes = processp; CAMLreturn(Val_int(pid)); } /* * Thread prologue. */ value omake_shell_sys_init_thread_pid(value v_pid) { CAMLparam1(v_pid); Process *processp; int pid; #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_init_thread_pid\n"); fflush(stderr); #endif /* Find the process */ pid = Int_val(v_pid); for(processp = state->processes; processp; processp = processp->next) { if(processp->pid == pid) break; } if(processp == 0) raise_not_found(); /* Process has terminated */ processp->thread = GetCurrentThreadId(); CAMLreturn(Val_unit); } /* * Release the thread when it terminates. * Don't release the process struct yet, * just mark it as changed. */ value omake_shell_sys_release_thread_pid(value v_pid, value v_code) { CAMLparam2(v_pid, v_code); Process *processp; int pid; pid = Int_val(v_pid); #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_release_thread_pid: %d\n", pid); fflush(stderr); #endif /* Find the process */ for(processp = state->processes; processp; processp = processp->next) { #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_release_thread_pid: comparing with pid = %d\n", processp->pid); fflush(stderr); #endif if(processp->pid == pid) break; } if(processp == 0) raise_not_found(); /* Process has terminated */ processp->changed = 1; processp->status = STATUS_EXITED; processp->code = Int_val(v_code); SetEvent(processp->handle); #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_release_thread_pid: pid = %d\n", processp->pid); fflush(stderr); #endif CAMLreturn(Val_unit); } /* * Check if the thread has been killed. */ value omake_shell_sys_check_thread(value v_unit) { CAMLparam1(v_unit); Process *processp; DWORD id; #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_check_thread\n"); fflush(stderr); #endif /* Find the process */ id = GetCurrentThreadId(); for(processp = state->processes; processp; processp = processp->next) { if(processp->thread == id) break; } if(processp == 0) CAMLreturn(Val_int(0)); CAMLreturn(Val_int(processp->killed)); } /* * Wait for any of the processes in the group to complete. * There are several modes: * pgrp == 0: wait for any process group leader * pgrp <> 0: wait for a specific process group * leader: if true, wait only for the group leader * if false, wait only for the children * nohang: if true, don't block */ static value omake_shell_sys_wait_aux(value v_pgrp, value v_leader, value v_nohang) { CAMLparam3(v_pgrp, v_leader, v_nohang); CAMLlocal3(list, tuple, status); int processes[MAXIMUM_WAIT_OBJECTS]; HANDLE handles[MAXIMUM_WAIT_OBJECTS]; Process **processpp, *processp; int ncount, code, pid, pgrp, leader; DWORD exitcode, timeout, index; #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_wait\n"); fflush(stderr); #endif /* Parameters */ pgrp = Int_val(v_pgrp); leader = Int_val(v_leader); timeout = Int_val(v_nohang) ? 0 : INFINITE; /* Collect the processes and their handles */ ncount = 1; handles[0] = state->changed; for(processpp = &state->processes; processp = *processpp; processpp = &(*processpp)->next) { if((pgrp && processp->pgrp != pgrp) || (pgrp == 0 && processp->pgrp == INIT_PID) || (leader && processp->pid != processp->pgrp) || (leader == 0 && processp->pid == processp->pgrp)) { continue; } else if(processp->changed) CAMLreturn(handle_wait("changed", processpp)); else { if(ncount == MAXIMUM_WAIT_OBJECTS) invalid_argument("omake_shell_sys_wait: too many processes"); processes[ncount] = processp->pid; handles[ncount] = processp->handle; ncount++; } } #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_wait: waiting for %d events\n", ncount); fprintf(stderr, "\tpgrp = %d, leader = %d, timeout = %d\n", pgrp, leader, timeout); fflush(stderr); #endif /* Wait for an event */ while(1) { /* Perform the wait */ enter_blocking_section(); index = WaitForMultipleObjects(ncount, handles, FALSE, timeout); if(index == WAIT_FAILED) code = GetLastError(); leave_blocking_section(); /* See if something has changed */ if(index == WAIT_OBJECT_0) { for(processpp = &state->processes; processp = *processpp; processpp = &(*processpp)->next) { if(processp->pgrp == pgrp && processp->changed) CAMLreturn(handle_wait("state changed", processpp)); } } else break; } /* Get the index of the event */ if(index >= WAIT_OBJECT_0 + 1 && index < WAIT_OBJECT_0 + ncount) index -= WAIT_OBJECT_0; else if(index >= WAIT_ABANDONED_0 + 1 && index < WAIT_ABANDONED_0 + ncount) index -= WAIT_ABANDONED_0; else raise_not_found(); /* Adjust process */ pid = processes[index]; for(processpp = &state->processes; processp = *processpp; processpp = &(*processpp)->next) { if(processp->pid == pid) break; } /* If the process is not found, some other thread waited for it */ if(processp == 0) CAMLreturn((value) 0); /* Otherwise, handle the wait */ processp->changed = 1; processp->status = STATUS_EXITED; /* Get the return code */ if(processp->is_thread == 0) { if(GetExitCodeProcess(handles[index], &exitcode) == FALSE) exitcode = 111; processp->code = exitcode; } /* Return the value */ CAMLreturn(handle_wait("done", processpp)); } /* * Restart the wait if it returns 0. */ value omake_shell_sys_wait(value v_pgrp, value v_leader, value v_nohang) { CAMLparam3(v_pgrp, v_leader, v_nohang); value result; do { result = omake_shell_sys_wait_aux(v_pgrp, v_leader, v_nohang); } while(result == 0); CAMLreturn(result); } /* * Create a process. * * The process may have a new environment, * and its own directory. */ value omake_shell_sys_create_process(value v_info) { CAMLparam1(v_info); CAMLlocal2(v_envp, v_argvp); STARTUPINFO startup; PROCESS_INFORMATION process; char env[SIZEOF_ENVIRONMENT]; char argv[SIZEOF_COMMAND]; char *strp, *argp, *dir, *command; int i, white, count, index, length, creation_flags, status, pid, pgrp; Process *processp; #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_create_process\n"); fflush(stderr); #endif /* Allocate a new pid */ pid = alloc_pid(); pgrp = Int_val(Field(v_info, CREATE_PROCESS_PGRP)); if(pgrp == 0) pgrp = pid; /* Collect the environment */ v_envp = Field(v_info, CREATE_PROCESS_ENV); count = Wosize_val(v_envp); index = 0; env[1] = 0; for(i = 0; i != count; i++) { strp = String_val(Field(v_envp, i)); length = strlen(strp); if(index + length + 2 > SIZEOF_ENVIRONMENT) failwith("omake_shell_sys_create_process: environment is too big"); strcpy(env + index, strp); index += length + 1; } env[index] = 0; /* Collect the arguments */ command = String_val(Field(v_info, CREATE_PROCESS_EXE)); v_argvp = Field(v_info, CREATE_PROCESS_ARGV); count = Wosize_val(v_argvp); if(count == 0) invalid_argument("omake_shell_sys_create_process: command line is empty"); index = 0; for(i = 0; i != count; i++) { /* Win32 doesn't deal well when the command name differs from the executable */ if(i == 0) argp = command; else argp = String_val(Field(v_argvp, i)); length = strlen(argp); white = string_escape_length(argp); if(index + length + white + 4 >= SIZEOF_COMMAND) failwith("omake_shell_sys_create_process: command line is too long"); if(index) argv[index++] = ' '; if(white) string_copy_escaped(argv + index, argp); else strcpy(argv + index, argp); index += length + white; } argv[index++] = 0; #if 0 fprintf(stderr, "Command: %s\n", argv); fflush(stderr); #endif /* Get the directory */ dir = String_val(Field(v_info, CREATE_PROCESS_DIR)); /* Provide redirection */ GetStartupInfo(&startup); startup.dwFlags |= STARTF_USESTDHANDLES; startup.hStdInput = Handle_val(Field(v_info, CREATE_PROCESS_STDIN)); startup.hStdOutput = Handle_val(Field(v_info, CREATE_PROCESS_STDOUT)); startup.hStdError = Handle_val(Field(v_info, CREATE_PROCESS_STDERR)); startup.lpReserved = NULL; startup.lpReserved2 = NULL; startup.cbReserved2 = 0; /* Do not give it the console */ creation_flags = CREATE_NEW_PROCESS_GROUP; #ifdef OSH_DEBUG fprintf(stderr, "creating process %d:\n", pid); fprintf(stderr, "\tcommand: %s\n", command); fprintf(stderr, "\tcommand line: %s\n", argv); /* * XXX - For some reason, I get the * "unresolved external symbol __imp__CommandLineToArgvW@8" * here. * * Aleksey * { LPWSTR *args; int argc, i; args = CommandLineToArgvW((LPCWSTR) argv, &argc); if (args) { fprintf(stderr, "\targv:\n"); for(i = 0; i < argc; i++) fprintf(stderr, "\t\t%ls\n", args[i]); } } */ fflush(stderr); #endif /* Create the process */ status = CreateProcess(command, // Application name argv, // Command line NULL, // Process attributes NULL, // Thread attributes TRUE, // Inherit handles creation_flags, // Creation flags env, // Environment dir, // Current directory &startup, // Startup info &process); // Process info if(status == FALSE) { char * lpMsgBuf = NULL; int bufLen = FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language (LPTSTR) &lpMsgBuf, 0, NULL ); #ifdef OSH_DEBUG print_error("CreateProcess"); fprintf(stderr, "Command: %s\n", command); fflush(stderr); #endif if ((bufLen < 1) || (bufLen > 1024)) { if (lpMsgBuf != NULL) LocalFree( lpMsgBuf ); failwith("omake_shell_sys_create_process: process creation failed"); } else { char err[2048]; sprintf(err, "omake_shell_sys_create_process: process creation failed: %s", (char *)lpMsgBuf); if (lpMsgBuf != NULL) LocalFree( lpMsgBuf ); failwith(err); } } CloseHandle(process.hThread); /* Allocate a new process struct */ processp = (Process *) malloc(sizeof(Process)); if(processp == 0) { CloseHandle(process.hProcess); failwith("omake_shell_sys_create_process: out of memory"); } memset(processp, 0, sizeof(Process)); processp->pid = pid; processp->pgrp = pgrp; processp->status = STATUS_RUNNING; processp->handle = process.hProcess; processp->wid = process.dwProcessId; processp->next = state->processes; state->processes = processp; CAMLreturn(Val_int(pid)); } /************************************************************************ * Initialization. */ /* * The control handler. * CTRL-C: signal the current process group. * CTRL-BREAK: stop the current process group. * default: abort the foreground and stopped processes, and exit */ static BOOL WINAPI console_ctrl_handler(DWORD code) { BOOL rval; #ifdef OSH_DEBUG fprintf(stderr, "console_ctrl_handler\n"); fflush(stderr); #endif rval = TRUE; switch(code) { case CTRL_C_EVENT: if(state->current_pgrp != INIT_PID) { #ifdef OSH_DEBUG fprintf(stderr, "console_ctrl_handler: ctrl-c, pgrp=%d, state = 0x%08x\n", state->current_pgrp, (unsigned long) state); fflush(stderr); #endif process_group_map(suspend_process, state->current_pgrp); } break; case CTRL_BREAK_EVENT: /* Ignore CTRL+BREAK, but it will get passed to all children... */ if(state->current_pgrp != INIT_PID) process_group_map(suspend_process, state->current_pgrp); break; case CTRL_CLOSE_EVENT: case CTRL_LOGOFF_EVENT: case CTRL_SHUTDOWN_EVENT: fprintf(stderr, "Exiting\n"); fflush(stderr); terminate_processes(); /* Now we exit too */ ExitProcess(1); break; default: fprintf(stderr, "console_ctrl_handler: unknown code: %d\n", code); fflush(stderr); rval = FALSE; break; } #ifdef OSH_DEBUG fprintf(stderr, "console_ctrl_handler: returning %d\n", rval); fflush(stderr); #endif return rval; } /* * Create the shell struct. * We try to get a handle on the console, * but don't stress if it doesn't exist. */ value omake_shell_sys_init(value v_unit) { CAMLparam1(v_unit); Process *processp; HANDLE c_stdin; DWORD mode; int status; #ifdef OSH_DEBUG fprintf(stderr, "omake_shell_sys_init\n"); fflush(stderr); #endif if (state) /* Init was already called before */ CAMLreturn(Val_unit); /* Allocate a struct for the current process */ processp = (Process *) malloc(sizeof(Process)); if(processp == 0) failwith("Omake_shell_csys.create_state: out of memory"); memset(processp, 0, sizeof(Process)); /* Allocate the state */ state = (ShellState *) malloc(sizeof(ShellState)); if(state == 0) failwith("Omake_shell_csys.create_state: out of memory"); memset(state, 0, sizeof(ShellState)); state->pid_counter = INIT_PID; state->changed = CreateEvent(NULL, FALSE, FALSE, NULL); state->current_pgrp = INIT_PID; /* Initialize this process */ processp->pid = INIT_PID; processp->pgrp = INIT_PID; processp->status = STATUS_RUNNING; processp->handle = GetCurrentProcess(); processp->wid = GetCurrentProcessId(); state->processes = processp; /* Try to get the console */ c_stdin = GetStdHandle(STD_INPUT_HANDLE); if(c_stdin == INVALID_HANDLE_VALUE) CAMLreturn(Val_unit); status = GetConsoleMode(c_stdin, &mode); if(status) state->console = c_stdin; /* Install the console control handler */ SetConsoleCtrlHandler(console_ctrl_handler, TRUE); CAMLreturn(Val_unit); } /* * Stop everything. */ value omake_shell_sys_close(value v_unit) { CAMLparam1(v_unit); terminate_processes(); CAMLreturn(Val_unit); } #else /* WIN32 */ #include #include /* * Unix needs very few functions. */ value omake_shell_sys_set_tty_pgrp(value v_pgrp) { pid_t pgrp; pgrp = Int_val(v_pgrp); if(pgrp == 0) pgrp = getpgrp(); if(tcsetpgrp(0, pgrp) < 0) perror("tcsetpgrp"); return Val_unit; } value omake_shell_sys_setpgid(value v_pid, value v_pgrp) { pid_t pid, pgrp; pid = Int_val(v_pid); pgrp = Int_val(v_pgrp); if(setpgid(pid, pgrp) < 0) perror("setpgid"); return Val_unit; } #endif /* !WIN32 */ omake-0.9.8.5/src/libmojave/0000775000152300015230000000000010660137225013674 5ustar jyhjyhomake-0.9.8.5/src/libmojave/OMakefile0000664000152300015230000000633610616475055015472 0ustar jyhjyh# # Link all the files from the external reference to libmojave. # EXTERNAL = ../libmojave-external STDLIB_FILES[] = lm_printf.ml lm_debug.ml lm_heap.ml lm_list_util.ml lm_array_util.ml lm_set_sig.ml lm_set.ml lm_map_sig.ml lm_map.ml lm_int_set.ml lm_index.ml lm_thread_sig.ml lm_thread.ml lm_string_util.ml lm_string_set.ml lm_printf.mli lm_debug.mli lm_list_util.mli lm_array_util.mli lm_set.mli lm_map.mli lm_int_set.mli lm_index.mli lm_thread_core.mli lm_thread.mli lm_string_util.mli lm_string_set.mli lm_thread_pool.mli UTIL_FILES[] = lm_arg.ml lm_hash_sig.ml lm_hash.ml lm_location.ml lm_position.ml lm_channel.ml lm_lexer.ml lm_parser.ml lm_glob.ml lm_db.ml lm_arg.mli lm_hash.mli lm_location.mli lm_position.mli lm_channel.mli lm_lexer.mli lm_parser.mli lm_glob.mli lm_db.mli lm_termsize.ml lm_termsize.mli lm_terminfo.ml lm_terminfo.mli lm_filename_util.ml lm_filename_util.mli UNIX_FILES[] = lm_uname.ml lm_unix_util.ml lm_uname.mli lm_unix_util.mli lm_notify.ml lm_notify.mli lm_fs_case_sensitive.ml lm_fs_case_sensitive.mli EXTERNAL_FILES[] = $(STDLIB_FILES) $(UTIL_FILES) $(UNIX_FILES) lm_symbol.ml lm_symbol.mli MakeLinkExternal($(EXTERNAL)/stdlib, $(STDLIB_FILES)) MakeLinkExternal($(EXTERNAL)/util, $(UTIL_FILES)) MakeLinkExternal($(EXTERNAL)/unix, $(UNIX_FILES)) MakeLinkExternalFile(lm_symbol.ml, $(EXTERNAL)/util/lm_symbol_hash.ml) MakeLinkExternalFile(lm_symbol.mli, $(EXTERNAL)/util/lm_symbol_hash.mli) OCamlGeneratedFiles($(EXTERNAL_FILES)) ######################################################################## # These are all the files we care about # FILES[] = lm_printf lm_debug lm_heap lm_list_util lm_array_util lm_set_sig lm_set lm_map_sig lm_map lm_int_set lm_termsize lm_terminfo lm_arg lm_index lm_thread_sig lm_thread_core lm_thread lm_string_util lm_string_set lm_hash_sig lm_hash lm_symbol lm_location lm_position lm_filename_util lm_uname lm_thread_pool lm_channel lm_lexer lm_parser lm_unix_util lm_glob lm_db lm_notify lm_fs_case_sensitive # # Generated filed # GENERATED_FILES[] = lm_thread_pool.ml lm_thread_core.ml if $(THREADS_ENABLED) OMAKE_THREAD_POOL = $(EXTERNAL)/stdlib/lm_thread_pool_system.ml OMAKE_THREAD_CORE = $(EXTERNAL)/stdlib/lm_thread_core_system.ml export else OMAKE_THREAD_POOL = $(EXTERNAL)/stdlib/lm_thread_pool_null.ml OMAKE_THREAD_CORE = $(EXTERNAL)/stdlib/lm_thread_core_null.ml export lm_thread_pool.ml: $(OMAKE_THREAD_POOL) ln-or-cp $< $@ lm_thread_core.ml: $(OMAKE_THREAD_CORE) ln-or-cp $< $@ OCamlGeneratedFiles($(GENERATED_FILES)) # # Build the library # MakeOCamlLibrary(lm, $(FILES)) # # Cleanup # clean: $(CLEAN) $(EXTERNAL_FILES) $(GENERATED_FILES) # # Generate a Makefile # MakeLinkFile(lm_thread_pool.ml, $(EXTERNAL)/stdlib/lm_thread_pool_$'$(system)'.ml) MakeLinkFile(lm_thread_core.ml, $(EXTERNAL)/stdlib/lm_thread_core_$'$(system)'.ml) MakeMakefile() omake-0.9.8.5/src/shell/0000775000152300015230000000000010660137225013033 5ustar jyhjyhomake-0.9.8.5/src/shell/omake_shell_parse.mly0000664000152300015230000002257210615471254017246 0ustar jyhjyh/* * Parser for the command line. * * ---------------------------------------------------------------- * * Copyright (C) 2004-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * Modified By: Aleksey Nogin */ %{ open Lm_printf open Lm_symbol open Lm_location open Omake_env open Omake_pos open Omake_shell_type open Omake_command_type open Omake_value_type module Pos = MakePos (struct let name = "Omake_shell_parse" end) open Pos (* * If the command is a node, detect it here. *) let collect_redirect chan = match chan with [ValNode node] -> RedirectNode node | _ -> RedirectArg chan (* * Build a command from a sequence of words. *) let null_command loc = { cmd_loc = loc; cmd_env = []; cmd_exe = (); cmd_argv = []; cmd_stdin = RedirectNone; cmd_stdout = RedirectNone; cmd_stderr = false; cmd_append = false } let command_of_values argv loc = { cmd_loc = loc; cmd_env = []; cmd_exe = (); cmd_argv = argv; cmd_stdin = RedirectNone; cmd_stdout = RedirectNone; cmd_stderr = false; cmd_append = false } (* * Diversions. *) let rec set_stdin_inner pipe file = match pipe with PipeApply (loc, apply) -> let apply = { apply with apply_stdin = file } in PipeApply (loc, apply) | PipeCommand (loc, command) -> let command = { command with cmd_stdin = file } in PipeCommand (loc, command) | PipeCond (loc, _, _, _) | PipeCompose (loc, _, _, _) -> raise (Invalid_argument "Omake_shell_parse.set_stdin: internal error") | PipeGroup (loc, group) -> let group = { group with group_stdin = file } in PipeGroup (loc, group) | PipeBackground (loc, pipe) -> PipeBackground (loc, set_stdin_inner pipe file) let rec set_stdout_inner pipe file stderr append = match pipe with PipeApply (loc, apply) -> let apply = { apply with apply_stdout = file; apply_stderr = stderr; apply_append = append } in PipeApply (loc, apply) | PipeCommand (loc, command) -> let command = { command with cmd_stdout = file; cmd_stderr = stderr; cmd_append = append } in PipeCommand (loc, command) | PipeCond (loc, _, _, _) | PipeCompose (loc, _, _, _) -> raise (Invalid_argument "Omake_shell_parse.set_stdout: internal error") | PipeGroup (loc, group) -> let group = { group with group_stdout = file; group_stderr = stderr; group_append = append } in PipeGroup (loc, group) | PipeBackground (loc, pipe) -> PipeBackground (loc, set_stdout_inner pipe file stderr append) let set_stdin pipe file = set_stdin_inner pipe (collect_redirect file) let set_stdout pipe file stderr append = set_stdout_inner pipe (collect_redirect file) stderr append %} /* * Terminators */ %token TokEof /* * Indentation tokens are converted in the lexer * to TokBegin/TokEnd. */ %token TokValues %token TokDefine %token TokLeftParen %token TokRightParen %token TokLessThan %token TokGreaterThan %token TokGreaterGreaterThan %token TokAmp %token TokPipe %token TokSemiColon %token TokAnd %token TokOr /* * Pipes are right-associative: * "foo1 | foo2 |& foo3" should _not_ pass foo1's stderr to foo3. * * The pipe has higher precedence that ";" : * "foo1; foo2 | foo3" should redirect only foo2's output, not foo1's. * * The "&&" has higher precedence than "||" (same as in tcsh, different from bash) * * Separately, each of the "&&", "||", and ";" is right-associative (the semantics * is associative, so this does not really matter, but right-associativity is more * efficient at run-time). */ %nonassoc TokAmp %right TokSemiColon %right TokPipe %right TokOr %right TokAnd %nonassoc TokGreaterThan TokGreaterGreaterThan TokLessThan /* * A complete program. */ %start prog %type prog %% /* * Remove the location. */ prog: pipe TokEof { let pipe, _ = $1 in pipe } | TokEof { let loc = $1 in PipeCommand (loc, null_command loc) } ; /* * A pipe is a composition of commands. */ pipe: command { let command, loc = $1 in PipeCommand (loc, command), loc } | pipe TokSemiColon pipe { let pipe1, loc1 = $1 in let pipe2, loc2 = $3 in let loc = union_loc loc1 loc2 in PipeCond (loc, PipeSequence, pipe1, pipe2), loc } | pipe TokAnd pipe { let pipe1, loc1 = $1 in let pipe2, loc2 = $3 in let loc = union_loc loc1 loc2 in PipeCond (loc, PipeAnd, pipe1, pipe2), loc } | pipe TokOr pipe { let pipe1, loc1 = $1 in let pipe2, loc2 = $3 in let loc = union_loc loc1 loc2 in PipeCond (loc, PipeOr, pipe1, pipe2), loc } | pipe TokPipe pipe { let pipe1, loc1 = $1 in let pipe2, loc2 = $3 in let loc = union_loc loc1 loc2 in PipeCompose (loc, false, pipe1, pipe2), loc } | pipe TokPipe TokAmp pipe %prec TokPipe { let pipe1, loc1 = $1 in let pipe2, loc2 = $4 in let loc = union_loc loc1 loc2 in PipeCompose (loc, true, pipe1, pipe2), loc } | pipe TokAmp { let pipe, loc1 = $1 in let _, loc2 = $2 in let loc = union_loc loc1 loc2 in PipeBackground (loc, pipe), loc } | TokLeftParen pipe TokRightParen { let _, loc1 = $1 in let _, loc2 = $3 in let loc = union_loc loc1 loc2 in let pipe, _ = $2 in let group = { group_stdin = RedirectNone; group_stdout = RedirectNone; group_stderr = false; group_append = false; group_pipe = pipe } in PipeGroup (loc, group), loc } | pipe TokLessThan word { let pipe, loc1 = $1 in let file, loc2 = $3 in let loc = union_loc loc1 loc2 in let pipe = set_stdin pipe file in pipe, loc } | pipe TokGreaterThan word { let pipe, loc1 = $1 in let file, loc2 = $3 in let loc = union_loc loc1 loc2 in let pipe = set_stdout pipe file false false in pipe, loc } | pipe TokGreaterGreaterThan word { let pipe, loc1 = $1 in let file, loc2 = $3 in let loc = union_loc loc1 loc2 in let pipe = set_stdout pipe file false true in pipe, loc } | pipe TokGreaterThan TokAmp word %prec TokGreaterThan { let pipe, loc1 = $1 in let file, loc2 = $4 in let loc = union_loc loc1 loc2 in let pipe = set_stdout pipe file true false in pipe, loc } | pipe TokGreaterGreaterThan TokAmp word %prec TokGreaterGreaterThan { let pipe, loc1 = $1 in let file, loc2 = $4 in let loc = union_loc loc1 loc2 in let pipe = set_stdout pipe file true true in pipe, loc } ; /* * A command is just a sequence of words. */ command: rev_command { let rev_argv, loc = $1 in let command = command_of_values (List.rev rev_argv) loc in command, loc } ; rev_command: word { let values, loc = $1 in [values], loc } | rev_command word { let values1, loc1 = $1 in let values2, loc2 = $2 in values2 :: values1, union_loc loc1 loc2 } ; /* * A word is just a core set of values. */ word: TokValues { $1 } ; omake-0.9.8.5/src/shell/omake_shell_job.mli0000664000152300015230000000427210615471254016663 0ustar jyhjyh(* * Shell execution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_glob open Lm_printf open Lm_symbol open Lm_location open Omake_env open Omake_pos open Omake_shell_type open Omake_value_type (* * Create a thread or process running the function. *) val create_thread : venv -> (Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> int) -> Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> pid (* * Start a job given a pipe specification. *) val create_job : venv -> string_pipe -> Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> venv * value (* * Create a process in the background. *) val create_process : venv -> string_pipe -> Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> pid val waitpid : venv -> pos -> pid -> int * Unix.process_status * value (* * Shell operations. *) val jobs : venv -> unit val bg : venv -> pos -> int -> unit val fg : venv -> pos -> int -> unit val stop : venv -> pos -> int -> unit val kill : venv -> pos -> int -> signal -> unit val wait : venv -> pos -> int -> unit val cleanup : venv -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/shell/omake_shell_completion.mli0000664000152300015230000000235410654713446020266 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_location open Omake_env open Omake_pos (* * Set the command completion fur use by readline. * This should be called before each call to realine, * or after each shell prompt. *) val set_completion_functions : venv -> pos -> loc -> unit (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/shell/OMakefile0000664000152300015230000000202010647736313014614 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave ../util ../ast ../ir ../env ../eval FILES[] = omake_shell_parse omake_shell_lex omake_shell_sys_type omake_shell_sys omake_shell_job omake_shell_completion MakeOCamlLibrary(shell, $(FILES)) # # Generated files # GENERATED_FILES[] = omake_shell_parse.mli omake_shell_parse.ml omake_shell_sys.ml OCamlGeneratedFiles($(GENERATED_FILES)) OMAKE_SHELL_SYS = omake_shell_sys_$(if $(equal $(OSTYPE), Win32), win32, unix).ml omake_shell_sys.ml: $(OMAKE_SHELL_SYS) ln-or-cp $< $@ clean: $(CLEAN) $(GENERATED_FILES) ######################################################################## # Generate a Makefile # win32 = $'$(win32)' MAKEFILE_TEXT += $""" omake_shell_parse.ml: omake_shell_parse.mly omake_shell_parse.mli: omake_shell_parse.mly omake_shell_parse.cmo: omake_shell_parse.cmi """ MakeLinkFiles(omake_shell_parse.mly) MakeLinkFile(omake_shell_sys.ml, omake_shell_sys_$(win32).ml) MakeDontLink($(GENERATED_FILES)) MakeMakefile() omake-0.9.8.5/src/shell/omake_shell_sys_unix.ml0000664000152300015230000001522410647510140017611 0ustar jyhjyh(* * System calls. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_debug open Omake_pos open Omake_exn_print open Omake_shell_type open Omake_shell_sys_type (* * These functions are directly exported. *) external ext_set_tty_pgrp : pgrp -> unit = "omake_shell_sys_set_tty_pgrp" external ext_setpgid : pid -> pid -> unit = "omake_shell_sys_setpgid" let interact = ref (Omake_readline.isatty ()) let set_interactive flag = interact := flag let set_tty_pgrp pgrp = if !interact then ext_set_tty_pgrp pgrp let setpgid pid1 pid2 = if !interact then ext_setpgid pid1 pid2 (* * Close-on-exec flags. * We actually want a close-on-fork, so we keep track of * these descriptors. *) module FdCompare = struct type t = Unix.file_descr let compare = Pervasives.compare end module FdSet = Lm_set.LmMake (FdCompare);; let close_on_fork = ref FdSet.empty let close_fd fd = Unix.close fd; close_on_fork := FdSet.remove !close_on_fork fd let set_close_on_exec fd = Unix.set_close_on_exec fd; close_on_fork := FdSet.add !close_on_fork fd let clear_close_on_exec fd = Unix.clear_close_on_exec fd; close_on_fork := FdSet.remove !close_on_fork fd let do_close_on_fork () = FdSet.iter Unix.close !close_on_fork; close_on_fork := FdSet.empty (* * Send a signal to a process. *) let signo_of_signal = function SigAbrt -> Sys.sigabrt | SigAlrm -> Sys.sigalrm | SigFPE -> Sys.sigfpe | SigHup -> Sys.sighup | SigIll -> Sys.sigill | SigInt -> Sys.sigint | SigKill -> Sys.sigkill | SigPipe -> Sys.sigpipe | SigQuit -> Sys.sigquit | SigSegv -> Sys.sigsegv | SigTerm -> Sys.sigterm | SigUsr1 -> Sys.sigusr1 | SigUsr2 -> Sys.sigusr2 | SigChld -> Sys.sigchld | SigCont -> Sys.sigcont | SigStop -> Sys.sigstop | SigTstp -> Sys.sigtstp | SigTtin -> Sys.sigttin | SigTtou -> Sys.sigttou | SigVTAlrm -> Sys.sigvtalrm | SigProf -> Sys.sigprof | SigNum i -> i let kill pgrp signal = Unix.kill pgrp (signo_of_signal signal) (* * Wait for a process to exit. * The leader flag indicates whether to wait for the leader. *) let wait pgrp leader nohang = let flags = if !interact then [Unix.WUNTRACED] else [] in let flags = if nohang then Unix.WNOHANG :: flags else flags in let pid = if pgrp = 0 then -1 else if leader then pgrp else if !interact then -pgrp else -1 in Unix.waitpid flags pid (* * Duplicate file descriptors onto * their standard places. *) let dup stdin stdout stderr = let stdin' = Unix.dup stdin in let stdout' = Unix.dup stdout in let stderr' = Unix.dup stderr in Unix.close stdin; if (stdin <> stdout) then Unix.close stdout; if (stdin <> stderr && stdout <> stderr) then Unix.close stderr; Unix.dup2 stdin' Unix.stdin; Unix.dup2 stdout' Unix.stdout; Unix.dup2 stderr' Unix.stderr; Unix.close stdin'; Unix.close stdout'; Unix.close stderr' (* * Create a thread. * This actually creates a process on Unix. *) let create_thread info = let { create_thread_stdin = stdin; create_thread_stdout = stdout; create_thread_stderr = stderr; create_thread_pgrp = pgrp; create_thread_fun = f; create_thread_background = bg } = info in Pervasives.flush_all(); let pid = Unix.fork () in if pid = 0 then let code = try let pgrp = if pgrp = 0 then let pid = Unix.getpid () in setpgid pid pid; if not bg then set_tty_pgrp pgrp; pid else pgrp in dup stdin stdout stderr; do_close_on_fork (); ignore (Sys.signal Sys.sigint Sys.Signal_default); ignore (Sys.signal Sys.sigquit Sys.Signal_default); ignore (Sys.signal Sys.sigtstp Sys.Signal_default); f Unix.stdin Unix.stdout Unix.stderr pgrp with Omake_value_type.ExitException (_, code) -> code | exn -> let () = try eprintf "%a@." pp_print_exn exn with _ -> () in Omake_state.exn_error_code in exit code else pid (* * Create a process. *) let create_process info = let { create_process_stdin = stdin; create_process_stdout = stdout; create_process_stderr = stderr; create_process_pgrp = pgrp; create_process_dir = dir; create_process_env = env; create_process_exe = exe; create_process_argv = argv; create_process_background = bg } = info in (* eprintf "@["; Array.iter (fun s -> eprintf "@ %s" s) argv; eprintf "@]@."; *) let pid = Unix.fork () in if pid = 0 then try let () = if pgrp = 0 then let pid = Unix.getpid () in setpgid pid pid; if not bg then set_tty_pgrp pgrp; in dup stdin stdout stderr; Unix.handle_unix_error Unix.chdir dir; Unix.handle_unix_error (fun () -> Unix.execve exe argv env) () with _ -> exit Omake_state.exn_error_code else pid (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/shell/omake_shell_lex.mli0000664000152300015230000000316310615471254016677 0ustar jyhjyh(* * Lex a shell line. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_glob open Lm_symbol open Lm_location open Omake_env open Omake_pos open Omake_shell_type open Omake_command_type open Omake_value_type (* * Commands with a leading \ are quoted. *) val parse_command_string : string -> simple_exe (* * Construct the pipe from the value. *) val pipe_of_value : venv -> (venv -> pos -> loc -> string -> (symbol * apply) option) -> glob_options -> pos -> loc -> value -> command_flag list * arg_pipe (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/shell/omake_shell_sys_win32.ml0000664000152300015230000001166410647510140017574 0ustar jyhjyh(* * System calls. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_debug open Omake_shell_type open Omake_shell_sys_type (* * These functions are directly exported. *) external set_tty_pgrp : pgrp -> unit = "omake_shell_sys_set_tty_pgrp" external create_process : create_process -> pid = "omake_shell_sys_create_process" (* * Internal. *) external create_thread_pid : pgrp -> pid = "omake_shell_sys_create_thread_pid" external release_thread_pid : pid -> int -> unit = "omake_shell_sys_release_thread_pid" external init_thread_pid : pid -> unit = "omake_shell_sys_init_thread_pid" external check_thread : unit -> bool = "omake_shell_sys_check_thread" external suspend : pgrp -> unit = "omake_shell_sys_suspend" external resume : pgrp -> unit = "omake_shell_sys_resume" external kill : pgrp -> unit = "omake_shell_sys_kill" external ext_wait : pgrp -> bool -> bool -> pid * Unix.process_status = "omake_shell_sys_wait" external init_shell : unit -> unit = "omake_shell_sys_init" external close : unit -> unit = "omake_shell_sys_close" let () = init_shell (); let pid = Unix.getpid () in let do_close () = if pid == Unix.getpid () then close () in Pervasives.at_exit do_close let set_interactive _ = () let set_close_on_exec = Unix.set_close_on_exec let clear_close_on_exec = Unix.clear_close_on_exec let close_fd = Unix.close (* * Termination signal. *) exception Terminated (* * The operation depends on the signal number. *) let kill pgrp signo = match signo with SigStop | SigTstp -> suspend pgrp | SigCont -> resume pgrp | _ -> kill pgrp (* * Wait is blocking. *) let wait pgrp leader nohang = Lm_thread_pool.blocking_section (ext_wait pgrp leader) nohang (* * Try to close a descriptor. * This is kind of bad, because some other thread * may have allocated that descriptor by the time we get * to it, but this should never happen because the thread * should be catching all its exceptions. *) let try_close fd = try close_fd fd with Unix.Unix_error _ -> () (* * Create a thread. This is a real thread, but it * should look as much like a process as possible. * For this reason, we dup the stdio handles. *) let create_thread info = let { create_thread_stdin = stdin; create_thread_stdout = stdout; create_thread_stderr = stderr; create_thread_pgrp = pgrp; create_thread_fun = f } = info in Pervasives.flush_all(); let pid = create_thread_pid pgrp in let stdin = Unix.dup stdin in let stdout = Unix.dup stdout in let stderr = Unix.dup stderr in let cleanup () = try_close stdin; try_close stdout; try_close stderr in let _ = Lm_thread_pool.create false (fun () -> init_thread_pid pid; let code = try f stdin stdout stderr pid with Omake_value_type.ExitException (_, code) -> cleanup (); code | Sys.Break as exn -> cleanup(); raise exn | exn -> eprintf "@[%a@ Thread failed with an exception, cleaning up@]@." Omake_exn_print.pp_print_exn exn; cleanup (); Omake_state.exn_error_code in release_thread_pid pid code) in pid (* * Create a new process group. *) let create_process_group = create_thread (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/shell/omake_shell_sys_type.ml0000664000152300015230000000414110456240612017605 0ustar jyhjyh(* * Architecture-independent process control. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (* * Process and group identifiers. *) type pgrp = int type pid = int (* * Argument records for thread and process creation. *) type create_thread = { create_thread_stdin : Unix.file_descr; create_thread_stdout : Unix.file_descr; create_thread_stderr : Unix.file_descr; create_thread_pgrp : pgrp; create_thread_fun : (Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> pgrp -> int); create_thread_background : bool } type create_process = { create_process_stdin : Unix.file_descr; create_process_stdout : Unix.file_descr; create_process_stderr : Unix.file_descr; create_process_pgrp : pgrp; create_process_dir : string; create_process_env : string array; create_process_exe : string; create_process_argv : string array; create_process_background : bool } (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/shell/omake_shell_job.ml0000664000152300015230000010444510641015433016505 0ustar jyhjyh(* * Execute a shell command. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_var open Omake_env open Omake_pos open Omake_node_sig open Omake_node open Omake_value open Omake_symbol open Omake_shell_sys open Omake_shell_type open Omake_value_type open Omake_shell_sys_type module Pos = MakePos (struct let name = "Omake_shell_job" end) open Pos (* * Tables. *) module IntCompare = struct type t = int let compare = (-) end module IntSet = Lm_set.LmMake (IntCompare) module IntTable = Lm_map.LmMake (IntCompare) module PidSet = IntSet module PidTable = IntTable (* * Subjob info. *) type job_state = JobForeground | JobBackground | JobSuspended type job_status = JobExited of int | JobSignaled of int | JobStopped of int type subjob_cond = { cond_op : pipe_op; cond_pipe : string_pipe; cond_stdin : Unix.file_descr; cond_stdout : Unix.file_descr; cond_stderr : Unix.file_descr } and subjob_exp = SubjobProcess of pid * venv | SubjobPipe of subjob_exp * subjob_exp | SubjobFinished of job_status * venv | SubjobCond of subjob_exp * subjob_cond (* * Job info. * The job has an identifier, * a process group, and an expression of what to compute. *) type job = { job_id : int; job_pipe : string_pipe option; mutable job_pgrp : pgrp; mutable job_state : job_state } (* * Info for this shell. * There can be only one shell, and it has a controlling terminal. * Invariant: if the pid is 0, then this job controls the terminal. *) type shell = { mutable shell_jobs : job IntTable.t } (* * Global shell. *) let shell = { shell_jobs = IntTable.empty } (************************************************************************ * Printing. *) (* * Print a job state. *) let pp_print_job_state buf state = let s = match state with JobForeground -> "Running" | JobBackground -> "Background" | JobSuspended -> "Suspended" in pp_print_string buf s (* * Job may be a pipe. *) let pp_print_pipe_option buf opt = match opt with Some pipe -> pp_print_string_pipe buf pipe | None -> pp_print_string buf "" (* * Job status. *) let pp_print_status buf code = match code with JobExited code -> fprintf buf "exited with code %d" code | JobSignaled code -> fprintf buf "exited with signal %d" code | JobStopped code -> fprintf buf "stopped with code %d" code (* * Print a job expression. *) let rec pp_print_exp buf e = match e with SubjobProcess (pid, _) -> fprintf buf "(%d)" pid | SubjobPipe (e1, e2) -> fprintf buf "@[(%a@ | %a)@]" pp_print_exp e1 pp_print_exp e2 | SubjobCond (e, cond) -> let { cond_op = op; cond_pipe = pipe } = cond in fprintf buf "@[(%a)@ %a@ %a@]" (**) pp_print_exp e pp_print_pipe_op op pp_print_string_pipe pipe | SubjobFinished (code, _) -> fprintf buf "[Finished: %a]" pp_print_status code (* * Print a job. *) let pp_print_job buf job = let { job_id = id; job_pgrp = pgrp; job_state = state; job_pipe = pipe } = job in fprintf buf "@[[%d] (%d) %a@ - %a@]" (**) id pgrp pp_print_job_state state pp_print_pipe_option pipe (* * Status code printing. *) let print_exit_code venv force pid code = match code with JobExited 0 -> if force then eprintf "- %d: done@." pid | JobExited code -> if force || venv_defined venv printexitvalue_var then eprintf "- %d: exited with code %d@." pid code | JobSignaled code -> eprintf "- %d: terminated with signal %d@." pid code | JobStopped code -> eprintf "- %d: stopped with code %d@." pid code (************************************************************************ * Utilities *) (* * Get an array representation of the environment. *) let array_of_env env fields = let env = List.fold_left (fun env (v, x) -> SymbolTable.add env v x) env fields in let env = SymbolTable.fold (fun env v x -> Printf.sprintf "%s=%s" (string_of_symbol v) x :: env) [] env in Array.of_list env (* * Figure out a common code. * For now, signaling takes precedence. *) let unify_codes code1 code2 = match code1, code2 with JobSignaled code1, JobSignaled code2 -> JobSignaled (max code1 code2) | JobSignaled _, _ -> code1 | _, JobSignaled _ -> code2 | JobExited code1, JobExited code2 -> JobExited (max code1 code2) | _, JobExited _ -> code2 | _ -> code1 (* * Get an integer version of the code. *) let int_of_code code = match code with JobSignaled code | JobExited code | JobStopped code -> code (* * Find the job with the process group. *) let find_job_by_pgrp pgrp = match IntTable.fold (fun job1 _ job2 -> if job2.job_pgrp = pgrp then Some job2 else job1) None shell.shell_jobs with Some job -> job | None -> raise Not_found (************************************************************************ * Job management. *) (* * Create a new job. *) let new_job pgrp pipe = let rec new_id i = if IntTable.mem shell.shell_jobs i then new_id (succ i) else i in let id = new_id 1 in let job = { job_id = id; job_pipe = pipe; job_pgrp = pgrp; job_state = JobForeground } in shell.shell_jobs <- IntTable.add shell.shell_jobs id job; job (* * Remove a job from the shell. *) let remove_job job = shell.shell_jobs <- IntTable.remove shell.shell_jobs job.job_id (* * Create a simple thread. * We have a function and channels. *) let create_top_thread venv f stdin stdout stderr = if !debug_shell then eprintf "create_top_thread@."; let apply_fun stdin stdout stderr _ = f stdin stdout stderr in let thread_info = { create_thread_stdin = stdin; create_thread_stdout = stdout; create_thread_stderr = stderr; create_thread_pgrp = 0; create_thread_fun = apply_fun; create_thread_background = true } in Omake_shell_sys.create_thread thread_info (* * Create the diversion channels. *) let string_of_redirect chan = match chan with RedirectNode node -> Some (Node.fullname node) | RedirectArg s -> Some s | RedirectNone -> None let create_channels stdin stdin_file append stdout stdout_file stderr_divert stderr = let stdin, close_stdin = match string_of_redirect stdin_file with Some file -> Lm_unix_util.openfile file [Unix.O_RDONLY; Unix.O_NOCTTY] 0, true | None -> stdin, false in let stdout, close_stdout = match string_of_redirect stdout_file with Some file -> let flags = [Unix.O_WRONLY; Unix.O_CREAT; Unix.O_NOCTTY] in let flags = if append then Unix.O_APPEND :: flags else Unix.O_TRUNC :: flags in (try Lm_unix_util.openfile file flags 0o666, true with exn -> if close_stdin then close_fd stdin; raise exn) | None -> stdout, false in let () = if append then ignore (Unix.lseek stdout 0 Unix.SEEK_END) in let stderr = if stderr_divert then stdout else stderr in stdin, close_stdin, stdout, close_stdout, stderr (* * Application at the toplevel. * Don't create a thread. *) let restore_vars = [stdin_sym; stdout_sym; stderr_sym] let create_apply_top venv stdin stdout stderr apply = let { apply_loc = loc; apply_env = env; apply_fun = f; apply_args = args; apply_stdin = stdin_file; apply_stdout = stdout_file; apply_stderr = stderr_divert; apply_append = append } = apply in let stdin, close_stdin, stdout, close_stdout, stderr = create_channels stdin stdin_file append stdout stdout_file stderr_divert stderr in let cleanup () = if close_stdin then close_fd stdin; if close_stdout then close_fd stdout in (* The function will close its files on its own *) try if !debug_shell then eprintf "create_apply_top pid=%i: duplicating channels@." (Unix.getpid ()); let stdin = Unix.dup stdin in let stdout = Unix.dup stdout in let stderr = Unix.dup stderr in let info = f venv stdin stdout stderr env args in if !debug_shell then eprintf "create_apply_top pid=%i: done@." (Unix.getpid ()); cleanup (); info with ExitException (_, code) -> if !debug_shell then eprintf "create_apply_top pid=%i: exit exception: %i@." (Unix.getpid ()) code; cleanup (); code, venv, ValOther (ValExitCode code) | ExitParentException (pos, code) -> if !debug_shell then eprintf "create_apply_top pid=%i: exit from parent exception: %i@." (Unix.getpid ()) code; cleanup (); raise (ExitException (pos, code)) | exn -> if !debug_shell then eprintf "create_apply_top pid=%i: error: %a@." (Unix.getpid ()) Omake_exn_print.pp_print_exn exn; cleanup (); raise exn (* * Start an application in a particular subjob. *) let create_apply venv pgrp bg stdin stdout stderr apply = if !debug_shell then eprintf "create_apply@."; let { apply_loc = loc; apply_env = env; apply_fun = f; apply_args = args; apply_stdin = stdin_file; apply_stdout = stdout_file; apply_stderr = stderr_divert; apply_append = append } = apply in let stdin, close_stdin, stdout, close_stdout, stderr = create_channels stdin stdin_file append stdout stdout_file stderr_divert stderr in (* The actual function call *) let apply_fun stdin stdout stderr pgrp = let code, _, _ = f venv stdin stdout stderr env args in code in let thread_info = { create_thread_stdin = stdin; create_thread_stdout = stdout; create_thread_stderr = stderr; create_thread_pgrp = pgrp; create_thread_fun = apply_fun; create_thread_background = bg } in let cleanup () = if close_stdin then close_fd stdin; if close_stdout then close_fd stdout in try let pid = Omake_shell_sys.create_thread thread_info in cleanup (); pid with exn -> cleanup (); raise exn (* * Resolve the absolute name of the executable. *) let find_executable_string venv pos loc exe = let pos = string_pos "find_executable" pos in let cache = venv_cache venv in if not (Filename.is_relative exe) || Lm_string_util.contains_any exe Lm_filename_util.separators then let rec resolve_exe = function suff :: suffixes -> let node = venv_intern venv PhonyProhibited (exe ^ suff) in if Omake_cache.exists cache node then node else resolve_exe suffixes | [] -> raise (OmakeException (loc_pos loc pos, StringStringError ("command not found", exe))) in resolve_exe Omake_cache.exe_suffixes else let path = venv_find_var venv pos loc path_var in let path = Omake_eval.path_of_values venv pos (values_of_value venv pos path) "." in let path = Omake_cache.ls_exe_path cache path in try Omake_cache.exe_find cache path exe with Not_found -> raise (OmakeException (loc_pos loc pos, StringStringError ("command not found in PATH", exe))) let find_executable venv pos loc exe = let node = match exe with ExeQuote exe | ExeString exe -> find_executable_string venv pos loc exe | ExeNode node -> if Omake_cache.exe_suffixes = [""] || Omake_cache.exists (venv_cache venv) ~force:true node then node else find_executable_string venv pos loc (Node.absname node) in Node.absname node (* * Start a command. *) let create_command venv pgrp bg stdin stdout stderr command = let { cmd_loc = loc; cmd_env = env; cmd_exe = exe; cmd_argv = argv; cmd_stdin = stdin_file; cmd_stdout = stdout_file; cmd_append = append; cmd_stderr = stderr_divert } = command in let pos = string_pos "Omake_shell_job.create_command" (loc_exp_pos loc) in let exe = find_executable venv pos loc exe in let stdin, close_stdin, stdout, close_stdout, stderr = create_channels stdin stdin_file append stdout stdout_file stderr_divert stderr in let dir = Dir.absname (venv_dir venv) in (* Create a process *) let current_env = venv_environment venv in let proc_info = { create_process_stdin = stdin; create_process_stdout = stdout; create_process_stderr = stderr; create_process_pgrp = pgrp; create_process_env = array_of_env current_env env; create_process_dir = dir; create_process_exe = exe; create_process_argv = Array.of_list (exe :: argv); create_process_background = bg } in let cleanup () = if close_stdin then close_fd stdin; if close_stdout then close_fd stdout in if !debug_shell then eprintf "Creating command: %s@." exe; try let pid = Omake_shell_sys.create_process proc_info in cleanup (); if !debug_shell then eprintf "Command created: pid=%i@." pid; pid with exn -> cleanup (); begin match exn with Failure err -> let format_error buf = fprintf buf "@[Spawning %s failed:@ %s@]" exe err in raise (OmakeException(pos, LazyError format_error)) | Unix.Unix_error(err, cmd, arg) -> let format_error buf = fprintf buf "@[Spawning %s failed:@ @[%s" exe cmd; if (arg <> "") then fprintf buf "@ %s" arg; fprintf buf ":@ %s@]@]" (Unix.error_message err) in raise (OmakeException(pos, LazyError format_error)) | _ -> raise exn end (* * Evaluate a conditional, to see if the conditional operation should be performed. *) let cond_continue op = function JobExited 0 -> (match op with PipeAnd | PipeSequence -> true | PipeOr -> false) | JobExited _ -> (match op with PipeOr | PipeSequence -> true | PipeAnd -> false) | _ -> false (* * Create a conditional. *) let rec create_cond venv pgrp stdin stdout stderr op pipe1 pipe2 = let cond = { cond_op = op; cond_pipe = pipe2; cond_stdin = stdin; cond_stdout = stdout; cond_stderr = stderr } in let exp = create_pipe_aux venv pgrp false stdin stdout stderr pipe1 in SubjobCond (exp, cond) (* * Create an actual pipe. *) and create_compose venv pgrp stdin stdout stderr divert_stderr pipe1 pipe2 = let stdin', stdout' = Unix.pipe () in let stderr' = if divert_stderr then stdout' else stderr in let () = set_close_on_exec stdout' in let exp2 = try create_pipe_aux venv pgrp true stdin' stdout stderr pipe2 with exn -> close_fd stdin'; close_fd stdout'; raise exn in let () = close_fd stdin' in let () = clear_close_on_exec stdout' in let exp1 = try create_pipe_aux venv pgrp true stdin stdout' stderr' pipe1 with OmakeException _ | Unix.Unix_error _ | Failure _ as exn -> eprintf "%a@." Omake_exn_print.pp_print_exn exn; SubjobFinished (JobExited Omake_state.exn_error_code, venv) | exn -> close_fd stdout'; ignore(wait_exp pgrp exp2); raise exn in close_fd stdout'; SubjobPipe (exp1, exp2) (* * Create a subshell. *) and create_shell venv pgrp bg stdin stdout stderr pipe = if !debug_shell then eprintf "create_shell@."; let create_fun stdin stdout stderr pgrp = let exp = try create_pipe_aux venv pgrp false stdin stdout stderr pipe with ExitException (_, code) -> SubjobFinished (JobExited code, venv) | exn -> eprintf "@[%a@ Process group exception.@]@." Omake_exn_print.pp_print_exn exn; raise exn in let code = wait_exp pgrp exp in close_fd stdin; close_fd stdout; close_fd stderr; code in let thread_info = { create_thread_stdin = stdin; create_thread_stdout = stdout; create_thread_stderr = stderr; create_thread_pgrp = pgrp; create_thread_fun = create_fun; create_thread_background = bg } in Omake_shell_sys.create_thread thread_info (* * Create a grouped operation. *) and create_group venv pgrp stdin stdout stderr group = if !debug_shell then eprintf "create_group@."; let { group_stdin = stdin_file; group_stdout = stdout_file; group_stderr = stderr_divert; group_append = append; group_pipe = pipe } = group in let stdin, close_stdin, stdout, close_stdout, stderr = create_channels stdin stdin_file append stdout stdout_file stderr_divert stderr in let create_fun stdin stdout stderr pgrp = let exp = try create_pipe_aux venv pgrp false stdin stdout stderr pipe with ExitException (_, code) -> SubjobFinished (JobExited code, venv) | exn -> eprintf "@[%a@ Process group exception.@]@." Omake_exn_print.pp_print_exn exn; raise exn in let code = wait_exp pgrp exp in close_fd stdin; close_fd stdout; close_fd stderr; code in let thread_info = { create_thread_stdin = stdin; create_thread_stdout = stdout; create_thread_stderr = stderr; create_thread_pgrp = pgrp; create_thread_fun = create_fun; create_thread_background = true } in let pid = Omake_shell_sys.create_thread thread_info in if close_stdin then close_fd stdin; if close_stdout then close_fd stdout; (* Groups are suposed to be in a separate scope, use the original venv *) SubjobProcess (pid, venv) (* * Create the pipe. *) and create_pipe_aux venv pgrp fork stdin stdout stderr pipe = if !debug_shell then eprintf "create_pipe_aux (fork: %b): %a@." fork pp_print_string_pipe pipe; match pipe with PipeApply (loc, apply) -> if fork then SubjobProcess (create_apply venv pgrp true stdin stdout stderr apply, venv) else let code, venv, _ = create_apply_top venv stdin stdout stderr apply in SubjobFinished (JobExited code, venv) | PipeCommand (_, command) -> SubjobProcess (create_command venv pgrp true stdin stdout stderr command, venv) | PipeCond (_, op, pipe1, pipe2) -> if fork then SubjobProcess (create_shell venv pgrp true stdin stdout stderr pipe, venv) else create_cond venv pgrp stdin stdout stderr op pipe1 pipe2 | PipeCompose (_, divert_stderr, pipe1, pipe2) -> create_compose venv pgrp stdin stdout stderr divert_stderr pipe1 pipe2 | PipeGroup (_, group) -> create_group venv pgrp stdin stdout stderr group | PipeBackground (_, pipe) -> create_pipe_aux venv pgrp true stdin stdout stderr pipe (* * Create a thread. This may actually be a separate * process. *) and create_thread venv f stdin stdout stderr = if !debug_shell then eprintf "Creating thread@."; (* Evaluate application eagerly *) let pgrp = create_top_thread venv f stdin stdout stderr in let job = new_job pgrp None in if !debug_shell then eprintf "Started thread with pgrp %i, internal id %i@." job.job_pgrp job.job_id; job.job_state <- JobBackground; InternalPid job.job_id (* * Wait for a subjob to finish. * This is only executed in a subprocess, * so the appropriate thing to do when finished * is exit. *) and wait_exp pgrp exp = match eval_exp_top pgrp exp with SubjobFinished (JobExited code, _) | SubjobFinished (JobSignaled code, _) -> if !debug_shell then eprintf "wait_exp: %i exiting %d@." (Unix.getpid()) code; code | exp -> wait_exp2 pgrp exp and wait_exp2 pgrp exp = (* Wait for a job to complete; ignore stopped processes *) if !debug_shell then eprintf "wait_exp2: %i waiting for pgrp %i@." (Unix.getpid()) pgrp; let code = try Some (Omake_shell_sys.wait pgrp false false) with Unix.Unix_error (Unix.EINTR, _, _) -> None in if !debug_shell then eprintf "wait_exp: some event happened@."; match code with None | Some (_, Unix.WSTOPPED _) -> wait_exp2 pgrp exp | Some (pid, (Unix.WEXITED _| Unix.WSIGNALED _ as code)) -> let code = match code with Unix.WEXITED code -> JobExited code | Unix.WSIGNALED code -> JobSignaled code | Unix.WSTOPPED _ -> raise (Invalid_argument "Omake_shell_job.wait_exp2: internal error") in (* Evaluate the expression *) if !debug_shell then eprintf "wait_exp2: %i handling event: pid=%d@." (Unix.getpid()) pid; let exp = eval_exp pgrp exp pid code in wait_exp pgrp exp (* * Evaluate the expression. *) and eval_exp_top pgrp e = eval_exp pgrp e 0 (JobExited 0) and eval_exp pgrp e pid code = if !debug_shell then eprintf "eval_exp in %i: pgrp=%i, pid=%i@." (Unix.getpid()) pgrp pid; let rec eval e = match e with SubjobProcess (pid', venv) -> if pid' = pid then SubjobFinished (code, venv) else e | SubjobPipe (e1, e2) -> (match eval e1, eval e2 with SubjobFinished (code1, _), SubjobFinished (code2, venv) -> SubjobFinished (unify_codes code1 code2, venv) | e1, e2 -> SubjobPipe (e1, e2)) | SubjobCond (e, cond) -> if !debug_shell then eprintf "eval_exp in %i: evaluating SubjobCond@." (Unix.getpid()); (match eval e with SubjobFinished (code, venv) -> let { cond_op = op; cond_pipe = pipe; cond_stdin = stdin; cond_stdout = stdout; cond_stderr = stderr } = cond in if cond_continue op code then eval_exp_top pgrp (create_pipe_aux venv pgrp false stdin stdout stderr pipe) else SubjobFinished (code, venv) | e -> SubjobCond (e, cond)) | SubjobFinished _ -> e in eval e (* * Utility function for wait_top_aux and cleanup_top_aux *) let finalize_job job = function Unix.WEXITED code -> remove_job job; JobExited code | Unix.WSIGNALED code -> remove_job job; JobSignaled code | Unix.WSTOPPED code -> job.job_state <- JobSuspended; JobStopped code (* * Wait for a job to finish. * This is executed in the main process. * Do not give away the terminal. *) let rec wait_top_aux job = let pgrp = job.job_pgrp in if !debug_shell then eprintf "wait_top_aux: will wait for pgrp %i@." pgrp; let pid, status = Omake_shell_sys.wait pgrp true false in if !debug_shell then eprintf "wait_top_aux: got pid %d@." pid; if pid <> pgrp then wait_top_aux job else let code = finalize_job job status in if !debug_shell then eprintf "wait_top_aux: %a@." pp_print_status code; code, status let wait_top venv job = let code, _ = wait_top_aux job in Omake_shell_sys.set_tty_pgrp 0; print_exit_code venv false job.job_id code; code let wait_pid venv job = let _, status = wait_top_aux job in Omake_shell_sys.set_tty_pgrp 0; status (* * Create a pipe. * If this is a simple job, do not monitor the pipe. *) let rec create_pipe_exn venv bg stdin stdout stderr = function PipeApply (_, apply) -> create_apply venv 0 bg stdin stdout stderr apply | PipeCommand (_, command) -> create_command venv 0 bg stdin stdout stderr command | PipeCond _ | PipeCompose _ | PipeGroup _ as pipe -> create_shell venv 0 bg stdin stdout stderr pipe | PipeBackground (_, pipe) -> create_pipe_exn venv true stdin stdout stderr pipe (* * When the pipe is created: * If the pipe is in the background, the terminal remains attached. * If the pipe is not in the background, we retain control of the terminal. * * WARNING: this function should not be called if * 1. the pipeline is an alias, and * 2. the output is a pipe connected internally. * The reason is that the alias is not processed in a thread. * If it generates a lot of output, it will block, causing * deadlock because the output processor is not being run. * * Remember that rules pass their output to the output * processor through a pipe like this. However, commands * in rules are processed by create_process, not create_job. *) let rec create_job_aux venv pipe stdin stdout stderr = if !debug_shell then eprintf "Creating pipe: %a@." pp_print_string_pipe pipe; match pipe with PipeApply (loc, apply) -> (* Evaluate applications eagerly *) create_apply_top venv stdin stdout stderr apply | PipeBackground (_, pipe) -> (* Create a background job *) let pgrp = create_pipe_exn venv true stdin stdout stderr pipe in let job = new_job pgrp (Some pipe) in job.job_state <- JobBackground; 0, venv, ValNone | PipeCompose _ (* * XXX: TODO (Aleksey 2007/06/26) * PipeCompose should be handled similar to PipeCond, where only the left hand * side should be forked, while the right hand side should be evaluated in the current process. *) | PipeGroup _ | PipeCommand _ -> (* Otherwise, fork a foreground job *) let pgrp = create_pipe_exn venv false stdin stdout stderr pipe in let job = new_job pgrp (Some pipe) in if !debug_shell then eprintf "Running pgrp %d (my pid = %d)@." pgrp (Unix.getpid ()); (* * On Mac OSX this call fails with EPERM. * I believe this is because the sub-process * sets the controlling terminal itself (see * Omake_shell_sys_unix.create_process). * * This means that the sub-process takes over the terminal, * and we can't set it anymore. * * This seems like a bogus explanation, because we have * to get the terminal back on suspend... Omake_shell_sys.set_tty_pgrp pgrp; *) let code = int_of_code (wait_top venv job) in code, venv, ValOther (ValExitCode code) | PipeCond (_, op, pipe1, pipe2) -> let (code, venv, _) as info = create_job_aux venv pipe1 stdin stdout stderr in if cond_continue op (JobExited code) then create_job_aux venv pipe2 stdin stdout stderr else info let create_job venv pipe stdin stdout stderr = let _, venv, value = create_job_aux venv pipe stdin stdout stderr in venv, value (* * This is a variation: create the process and return the pid. * These jobs are always background. *) let create_process venv pipe stdin stdout stderr = if !debug_shell then eprintf "Creating process: %a@." pp_print_string_pipe pipe; match pipe with (* * The restriction to stdout and stderr is necessary to * prevent possible blocking on I/O. *) PipeApply (loc, apply) when stdout = Unix.stdout && stderr = Unix.stderr -> let code, venv, value = create_apply_top venv stdin stdout stderr apply in ResultPid (code, venv, value) | _ -> let pgrp = create_pipe_exn venv true stdin stdout stderr pipe in let job = new_job pgrp (Some pipe) in if !debug_shell then eprintf "Started process with pgrg %i, internal id %i@." job.job_pgrp job.job_id; job.job_state <- JobBackground; InternalPid job.job_id (* * This is an explicit wait function. * It is exactly like the wait_top function, * except we print results. *) let wait job = let id = job.job_id in try match fst (wait_top_aux job) with JobExited 0 -> eprintf "*** osh: [%d] Done@." id | JobExited code -> eprintf "*** osh: [%d] Exited with code %d@." id code | JobSignaled code -> eprintf "*** osh: [%d] Signaled with code %d@." id code | JobStopped _ -> eprintf "*** osh: [%d] Stopped@." id with Unix.Unix_error (Unix.EINTR, _, _) | Sys.Break -> eprintf "*** osh: [%d] Wait interrupted@." id (* * Clear out any processes that have completed. *) let cleanup_top_aux () = if !debug_shell then eprintf "cleanup_top_aux@."; let pid, status = Omake_shell_sys.wait 0 true true in let job = find_job_by_pgrp pid in let pid = job.job_id in let code = finalize_job job status in if !debug_shell then eprintf "cleanup_top_aux: %a@." pp_print_status code; pid, code let rec cleanup venv = let code = try Some (cleanup_top_aux ()) with Not_found | Unix.Unix_error _ -> None in match code with Some (pid, code) -> print_exit_code venv true pid code; cleanup venv | None -> () (* * Place it in the background. * It should be currently suspended. *) let bg_job job = Omake_shell_sys.kill job.job_pgrp SigCont; job.job_state <- JobBackground (* * Bring a job to the foreground. * Give it the terminal. *) let fg_job venv job = Omake_shell_sys.set_tty_pgrp job.job_pgrp; Omake_shell_sys.kill job.job_pgrp SigCont; job.job_state <- JobForeground; wait_top venv job (* * Stop a job. *) let stop_job venv job = Omake_shell_sys.kill job.job_pgrp SigStop; wait_top venv job (* * Kill a job. *) let kill_job job signal = Omake_shell_sys.kill job.job_pgrp signal (************************************************************************ * Toplevel shell utilities. *) (* * List the jobs. *) let jobs venv = IntTable.iter (fun _ job -> printf "%a@." pp_print_job job) shell.shell_jobs (* * Get the identified job. *) let job_of_pid pos pid = try IntTable.find shell.shell_jobs pid with Not_found -> raise (OmakeException (pos, StringIntError ("Omake_shell_job.job_of_pid: no such job", pid))) (* * Process management. *) let bg venv pos pid = let pos = string_pos "bg" pos in bg_job (job_of_pid pos pid) let fg venv pos pid = let pos = string_pos "fg" pos in ignore (fg_job venv (job_of_pid pos pid)) let stop venv pos pid = let pos = string_pos "stop" pos in ignore (stop_job venv (job_of_pid pos pid)) let kill venv pos pid signal = let pos = string_pos "kill" pos in kill_job (job_of_pid pos pid) signal let wait venv pos pid = let pos = string_pos "wait" pos in wait (job_of_pid pos pid) let waitpid venv pos pid = let pos = string_pos "waitpid" pos in match pid with ExternalPid pid -> if !debug_shell then eprintf "Omake_shell_job.waitpid: external id %i@." pid; let _, status = Unix.waitpid [] pid in pid, status, ValNone | InternalPid pid -> if !debug_shell then eprintf "Omake_shell_job.waitpid: internal id %i@." pid; let status = wait_pid venv (job_of_pid pos pid) in pid, status, ValNone | ResultPid (code, _, value) -> 0, Unix.WEXITED code, value (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/shell/omake_shell_completion.ml0000664000152300015230000001655510654713446020125 0ustar jyhjyh(* * Completion functions for the interactive shell. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_node open Omake_value open Omake_symbol open Omake_node_sig open Omake_value_type module Pos = MakePos (struct let name = "Omake_shell_job" end) open Pos;; (* * Filename operations not already implemented in Lm_filename_util. *) let is_compound_path name = Lm_string_util.contains_any name Lm_filename_util.separators let split_last name = let i = Lm_string_util.rindex_set name Lm_filename_util.separators in let prefix = String.sub name 0 (i + 1) in let head = String.sub name 0 i in let tail = String.sub name (i + 1) (String.length name - i - 1) in prefix, head, tail let split_relative name = if is_compound_path name then split_last name else "", "", name let split_triple name = let i = Lm_string_util.index_set name Lm_filename_util.separators in let j = Lm_string_util.rindex_set name Lm_filename_util.separators in let prefix = String.sub name 0 (j + 1) in let first = String.sub name 0 i in let dir = if i = j then "" else String.sub name (i + 1) (j - i - 1) in let name = String.sub name (j + 1) (String.length name - j - 1) in prefix, first, dir, name (* * We are given a partial username ~xy * Find all the usernames with prefix xy. *) let username_completion_exn s = let name = String.sub s 1 (String.length s - 1) in let users = Lm_glob.getusers () in List.fold_left (fun users user -> if Lm_string_util.is_string_prefix name user then StringSet.add users ("~" ^ user) else users) StringSet.empty users (* * List the filenames in the directory that match the * given name. *) let list_completion_exn prefix dir name = let names = Lm_filename_util.lsdir dir in List.fold_left (fun names n -> if Lm_string_util.is_string_prefix name n then StringSet.add names (prefix ^ n) else names) StringSet.empty names (* * We are given an absolute name /ab/cd/ef. * A path /abc is a special case. *) let absolute_completion_exn s = let prefix, dir, name = split_last s in let dir = if dir = "" then "/" else dir in list_completion_exn prefix dir name (* * We are given a relative name ab/cd/ef. * Compute it relative to the current directory. *) let relative_completion_exn venv pos loc s = let cwd = Dir.fullname (venv_dir venv) in let prefix, dir, name = split_relative s in let dir = Filename.concat cwd dir in list_completion_exn prefix dir name (* * We are given a home directory name ~abc/def/geh *) let homedir_completion_exn s = let prefix, user, dir, name = split_triple s in let home = if user = "~" then Lm_glob.home_dir else Lm_glob.gethomedir (String.sub user 1 (String.length user - 1)) in let dir = Filename.concat home dir in list_completion_exn prefix dir name (* * Filename completion has several cases: * ~xy : partial username should be completed * ~xy/foo : partial filename should be completed * /foo/bar : partial absolute filename should be completed * foo/bar : partial relative filename should be completed *) let filename_completion_exn venv pos loc s = let pos = string_pos "filename_completion" pos in let len = String.length s in let () = if len = 0 then raise Not_found in if s.[0] = '~' then if is_compound_path s then homedir_completion_exn s else username_completion_exn s else if Lm_filename_util.is_absolute s then absolute_completion_exn s else relative_completion_exn venv pos loc s (* * Command completion uses the Omake_cache. *) let command_completion_exn venv pos loc s = let pos = string_pos "command_completion" pos in (* Aliases *) let shell_obj = venv_find_var_exn venv shell_object_var in let items1 = match eval_single_value venv pos shell_obj with ValObject obj -> venv_object_fold_internal (fun items v _ -> let s2 = Lm_symbol.to_string v in if Lm_string_util.is_string_prefix s s2 then StringSet.add items s2 else items) StringSet.empty obj | _ -> StringSet.empty in (* Commands *) let cache = venv_cache venv in let path = venv_find_var_exn venv path_var in let path = Omake_eval.path_of_values venv pos (values_of_value venv pos path) "." in let path = Omake_cache.ls_exe_path cache path in let items2 = Omake_cache.exe_complete cache path s in StringSet.union items2 items1 (* * For readline, the result requires that the first entry * be the maximal prefix of all the entries. *) let rec char_matches c i names = match names with name :: names -> name.[i] = c && char_matches c i names | [] -> true let rec min_string_length i names = match names with name :: names -> min_string_length (min i (String.length name)) names | [] -> i let rec search_matches i len name names = if i = len then i else if char_matches name.[i] i names then search_matches (i + 1) len name names else i let complete_names s names = let names = StringSet.to_list names in let off = String.length s in match names with [name] -> (* Optimization *) [| name; name |] | name :: rest -> let len = min_string_length (String.length name) rest in let len = search_matches off len name rest in let prefix = String.sub name 0 len in Array.of_list (prefix :: names) | [] -> [||] (* * Catch all exceptions we might expect. *) let catch f venv pos loc s = try complete_names s (f venv pos loc s) with Not_found | Sys_error _ | OmakeException _ -> [||] let set_completion_functions venv pos loc = let filename_completion s = catch filename_completion_exn venv pos loc s in let command_completion s = catch command_completion_exn venv pos loc s in Callback.register "omake_filename_completion" filename_completion; Callback.register "omake_command_completion" command_completion (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/shell/omake_shell_lex.ml0000664000152300015230000002706410615471254016534 0ustar jyhjyh(* * A token-preserving lexer for the shell. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Omake_env open Omake_pos open Omake_eval open Omake_value_type open Omake_shell_type open Omake_shell_parse open Omake_command_type module Pos = MakePos (struct let name = "Omake_shell_lex" end);; open Pos;; (************************************************************************ * Lexing. *) (* * Locations. *) let shell_sym = Lm_symbol.add "shell" let syntax_error s loc = raise (OmakeException (loc_exp_pos loc, SyntaxError s)) (* * Tokenizer. *) let flatten_items items loc = let rec collect tokens vl vll = match vl, vll with v :: vl, _ -> (match v with Omake_env.TokGroup vl' -> collect tokens vl' (vl :: vll) | Omake_env.TokString v -> collect (v :: tokens) vl vll | Omake_env.TokToken s -> syntax_error ("illegal token: " ^ s) loc) | [], vl :: vll -> collect tokens vl vll | [], [] -> List.rev tokens in collect [] items [] let lex_tok token loc = match token with Omake_env.TokToken s -> (match s with "<" -> TokLessThan (s, loc) | ">" -> TokGreaterThan (s, loc) | ">>" -> TokGreaterGreaterThan (s, loc) | "&" -> TokAmp (s, loc) | ";" -> TokSemiColon (s, loc) | "&&" -> TokAnd (s, loc) | "|" -> TokPipe (s, loc) | "||" -> TokOr (s, loc) | "(" -> TokLeftParen (s, loc) | ")" -> TokRightParen (s, loc) | _ -> syntax_error ("illegal operator: " ^ s) loc) | Omake_env.TokGroup items -> TokValues (flatten_items items loc, loc) | Omake_env.TokString v -> TokValues ([v], loc) (* * Token buffer. *) type lexinfo = { mutable lex_tokens : Omake_env.tok list; mutable lex_pos : int; lex_loc : Lm_location.loc } let create_lexinfo loc tokens = { lex_tokens = tokens; lex_pos = 1; lex_loc = loc } let lex_main lexinfo _lexbuf = let { lex_tokens = tokens; lex_pos = pos; lex_loc = loc } = lexinfo in match tokens with [] -> TokEof loc | token :: tokens -> let tok = lex_tok token loc in lexinfo.lex_tokens <- tokens; lexinfo.lex_pos <- pos + 1; tok (* * Lexer from a token list. *) let lexbuf = Lexing.from_string "dummy lexbuf" let parse loc tokens = let lexinfo = create_lexinfo loc tokens in try Omake_shell_parse.prog (lex_main lexinfo) lexbuf with Parsing.Parse_error -> syntax_error "parse error" loc (************************************************************************ * Token lexer. *) let check_next c s off len = let off = succ off in if off < len && s.[off] = c then 2 else 1 let lexer s off len = match s.[off] with '<' | '(' | ')' | ';' -> Some 1 | '&' -> Some (check_next '&' s off len) | '|' -> Some (check_next '|' s off len) | '>' -> Some (check_next '>' s off len) | _ -> None (************************************************************************ * Strip the initial flags. *) let collect_flags toks = let rec collect_flags flags toks = match toks with tok :: toks' -> (match tok with TokString (ValString s) -> let len = String.length s in let rec scan flags i = if i = len then collect_flags flags toks' else match s.[i] with '@' -> scan (QuietFlag :: flags) (succ i) | '-' -> scan (AllowFailureFlag :: flags) (succ i) | '+' -> scan flags (succ i) | _ -> let toks = if succ i = len then toks' else TokString (ValString (String.sub s i (len - i))) :: toks' in flags, toks in scan flags 0 | _ -> flags, toks) | [] -> flags, toks in collect_flags [] toks (************************************************************************ * Command-line parsing. *) let rec flatten_value v = match v with ValArray [v] | ValSequence [v] -> flatten_value v | v -> v let flatten_values vl = match vl with [v] -> [flatten_value v] | _ -> vl let arg_of_redirect venv pos v = match v with RedirectArg v -> (match flatten_values v with [ValNode node] -> RedirectNode node | v -> RedirectArg (arg_of_values venv pos v)) | RedirectNode _ | RedirectNone as v -> v (* * When parsing the command line, collect all environment definitions. *) let scan_define arg = match arg with ArgString s :: args -> (try let i = String.index s '=' in let v = Lm_symbol.add (String.sub s 0 i) in let i = succ i in let len = String.length s in let args = if i = len then args else ArgString (String.sub s i (len - i)) :: args in Some (v, args) with Not_found -> None) | _ -> None (* * For a command, scan forward, collecting the env. *) let rec scan_argv venv pos env argv = match argv with arg :: argv -> (match flatten_values arg with [ValNode node] -> env, CmdNode node, argv | v -> let arg = arg_of_values venv pos v in (match scan_define arg with Some (v, s) -> scan_argv venv pos ((v, s) :: env) argv | None -> env, CmdArg arg, argv)) | [] -> raise (OmakeException (pos, NullCommand)) (* * A pipe might actually refer to an alias. *) let pre_pipe_command venv find_alias options pos info = let { cmd_loc = loc; cmd_argv = argv; cmd_stdin = stdin; cmd_stdout = stdout; cmd_stderr = stderr; cmd_append = append } = info in let stdin = arg_of_redirect venv pos stdin in let stdout = arg_of_redirect venv pos stdout in (* Scan the argument list *) let env, exe, argv = scan_argv venv pos [] argv in let env = List.rev env in (* Detect whether this is an alias *) let f = match exe with CmdNode _ -> None | CmdArg arg -> if is_quoted_arg arg || is_glob_arg options arg then None else let s = simple_string_of_arg arg in find_alias venv pos loc s in match f with Some (name, f) -> (* This is an alias *) let apply = { apply_loc = loc; apply_env = env; apply_name = name; apply_fun = f; apply_args = List.map (fun vl -> ValSequence vl) argv; apply_stdin = stdin; apply_stdout = stdout; apply_stderr = stderr; apply_append = append } in PipeApply (loc, apply) | None -> (* This is a normal command *) let command = { info with cmd_env = env; cmd_exe = exe; cmd_argv = argv_of_values venv pos argv; cmd_stdin = stdin; cmd_stdout = stdout } in PipeCommand (loc, command) (* * The parser never produces aliases, * so this code is dead. *) let pre_pipe_apply venv pos info = let { apply_env = env; apply_args = args; apply_stdin = stdin; apply_stdout = stdout } = info in { info with apply_env = List.map (fun (x, v) -> x, arg_of_values venv pos v) env; apply_args = List.map (fun vl -> ValSequence vl) args; apply_stdin = arg_of_redirect venv pos stdin; apply_stdout = arg_of_redirect venv pos stdout } (* * Parse all the components of the pipe. *) let rec pre_pipe venv find_alias options pos pipe = match pipe with PipeApply (loc, info) -> PipeApply (loc, pre_pipe_apply venv pos info) | PipeCommand (_, info) -> pre_pipe_command venv find_alias options pos info | PipeCond (loc, op, pipe1, pipe2) -> PipeCond (loc, op, pre_pipe venv find_alias options pos pipe1, pre_pipe venv find_alias options pos pipe2) | PipeCompose (loc, b, pipe1, pipe2) -> PipeCompose (loc, b, pre_pipe venv find_alias options pos pipe1, pre_pipe venv find_alias options pos pipe2) | PipeGroup (loc, info) -> PipeGroup (loc, pre_pipe_group venv find_alias options pos info) | PipeBackground (loc, pipe) -> PipeBackground (loc, pre_pipe venv find_alias options pos pipe) and pre_pipe_group venv find_alias options pos info = let { group_stdin = stdin; group_stdout = stdout; group_pipe = pipe } = info in { info with group_stdin = arg_of_redirect venv pos stdin; group_stdout = arg_of_redirect venv pos stdout; group_pipe = pre_pipe venv find_alias options pos pipe } (* * Do the whole command-line parsing process. *) let pipe_of_value venv find_alias options pos loc v = let pos = string_pos "pipe_of_value" pos in let argv = tokens_of_value venv pos lexer v in let flags, argv = collect_flags argv in let pipe = parse loc argv in let pipe = pre_pipe venv find_alias options pos pipe in flags, pipe (* * Commands with a leading \ are quoted. *) let parse_command_string s = let len = String.length s in if len <> 0 && s.[0] = '\\' then ExeQuote (String.sub s 1 (pred len)) else ExeString s (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/shell/omake_shell_sys.mli0000664000152300015230000000472110647510140016717 0ustar jyhjyh(* * Architecture-independent process management. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_shell_sys_type open Omake_shell_type (* * Set whether we are in interactive mode. * Defaults to true. *) val set_interactive : bool -> unit (* * Set the process group for the current terminal. * Does nothing if there is no terminal, or the * session is not interactive. *) val set_tty_pgrp : pgrp -> unit (* * Send a signal to a process. *) val kill : pgrp -> signal -> unit (* * Set/clear the close on exec flags. *) val close_fd : Unix.file_descr -> unit val set_close_on_exec : Unix.file_descr -> unit val clear_close_on_exec : Unix.file_descr -> unit (* * Wait: * wait pgrp leader nohang * pgrp: if 0, wait for all groups * otherwise, wait for the specific group * leader: if true, wait only for process group leaders * if false, wait only for process group children * nohang: if true, do not block * may raise Not_found * if false, block until something happens *) val wait : pgrp -> bool -> bool -> pid * Unix.process_status (* * Create a thread or a process executing the function. * Note, the called thread should close the channels it is passed. *) val create_thread : create_thread -> pid (* * Create an actual process. *) val create_process : create_process -> pid (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/0000775000152300015230000000000010660137225013372 5ustar jyhjyhomake-0.9.8.5/src/builtin/omake_builtin_fun.mli0000664000152300015230000000223710456240612017571 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_target.mli0000664000152300015230000000227110456240612020265 0ustar jyhjyh(* * Operations on targets. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_test.mli0000664000152300015230000000227510456240612017762 0ustar jyhjyh(* * Higher-level IO functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_file.mli0000664000152300015230000000227710456240612017724 0ustar jyhjyh(* * Builtin operations on files. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_fun.ml0000664000152300015230000001266610656154767017450 0ustar jyhjyh(* * Functions and application. * * \begin{doc} * \section{First-class functions} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_eval open Omake_node open Omake_value open Omake_builtin open Omake_builtin_type open Omake_builtin_util open Omake_value_type module Pos = MakePos (struct let name = "Omake_builtin_fun" end) open Pos (* * Anonymous functions. * * \section{Functions} * * \begin{doc} * \fun{fun} * * The \verb+fun+ form introduces anonymous functions. * * \verb+$(fun , ..., , )+ * * The last argument is the body of the function. * The other arguments are the parameter names. * * The three following definitions are equivalent. * * \begin{verbatim} * F(X, Y) = * return($(addsuffix $(Y), $(X))) * * F = $(fun X, Y, $(addsuffix $(Y), $(X))) * * F = * fun(X, Y) * value $(addsuffix $(Y), $(X)) * \end{verbatim} * \end{doc} *) let param_list venv pos loc args = let rec collect params args = match args with [] -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, 0))) | [body] -> List.rev params, body | param :: args -> let param = Lm_symbol.add (string_of_value venv pos param) in collect (param :: params) args in collect [] args let fun_fun venv pos loc args = let pos = string_pos "fun" pos in let env = venv_get_env venv in match args with ValBody (_, body, export) :: params -> let params = List.map (fun param -> Lm_symbol.add (string_of_value venv pos param)) params in ValFun (ArityExact (List.length params), env, params, body, export) | _ -> let params, body = param_list venv pos loc args in match body with ValBody (_, body, export) -> ValFun (ArityExact (List.length params), env, params, body, export) | _ -> ValFunValue (ArityExact (List.length params), env, params, body) (* * Function application. * * \begin{doc} * \fun{apply} * * The \verb+apply+ operator is used to apply a function. * * \verb+$(apply , )+ * * Suppose we have the following function definition. * * \begin{verbatim} * F(X, Y) = * return($(addsuffix $(Y), $(X))) * \end{verbatim} * * The the two expressions below are equivalent. * * \begin{verbatim} * X = F(a b c, .c) * X = $(apply $(F), a b c, .c) * \end{verbatim} * \end{doc} *) let apply_fun venv pos loc args = let pos = string_pos "apply" pos in let fun_val, args = match args with fun_val :: args -> fun_val, args | [] -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, 0))) in eval_apply venv pos loc fun_val args (* * Function application. * * \begin{doc} * \fun{applya} * * The \verb+applya+ operator is used to apply a function to * an array of arguments. * * \verb+$(applya , )+ * * For example, in the following program, the value * of \verb+Z+ is \verb+file.c+. * * \begin{verbatim} * F(X, Y) = * return($(addsuffix $(Y), $(X))) * args[] = * file * .c * Z = $(applya $(F), $(args)) * \end{verbatim} * \end{doc} *) let applya_fun venv pos loc args = let pos = string_pos "applya" pos in let fun_val, args = match args with [fun_val; args] -> fun_val, args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, 0))) in let args = values_of_value venv pos args in eval_apply venv pos loc fun_val args (************************************************************************ * Tables. *) let () = let builtin_funs = [false, "fun", fun_fun, ArityExact 1; ] in let builtin_kfuns = [true, "apply", apply_fun, ArityAny; true, "applya", applya_fun, ArityAny; ] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns } in register_builtin builtin_info (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_io_fun.mli0000664000152300015230000000233210456240612020254 0ustar jyhjyh(* * Higher-level IO functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) val debug_parsing : bool ref (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_sys.mli0000664000152300015230000000230210456240612017610 0ustar jyhjyh(* * Miscellaneous system functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_target.ml0000664000152300015230000004624410647456313020135 0ustar jyhjyh(* * Operations on targets. * * \begin{doc} * \section{Examining the dependency graph} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_pos open Omake_eval open Omake_node open Omake_rule open Omake_exec open Omake_value open Omake_state open Omake_symbol open Omake_builtin open Omake_node_sig open Omake_exec_util open Omake_build_type open Omake_cache_type open Omake_builtin_type open Omake_builtin_util open Omake_value_type open Omake_build open Omake_var module Pos = MakePos (struct let name = "Omake_builtin_target" end) open Pos (************************************************************************ * Targets. *) (* * Find dependencies of a target. * * \begin{doc} * \threefuns{dependencies}{dependencies-all}{dependencies-proper} * * \begin{verbatim} * $(dependencies targets) : File Array * $(dependencies-all targets) : File Array * $(dependencies-proper targets) : File Array * targets : File Array * raises RuntimeException * \end{verbatim} * * The \verb+dependencies+ function returns the set of immediate dependencies of * the given targets. This function can only be used within a rule body and * all the arguments to the \verb+dependency+ function must also be dependencies of * this rule. This restriction ensures that all the dependencies are known when * this function is executed. * * The \verb+dependencies-all+ function is similar, but it expands the dependencies * recursively, returning all of the dependencies of a target, not just the immediate * ones. * * The \verb+dependencies-proper+ function returns all recursive dependencies, except * the dependencies that are leaf targets. A leaf target is a target that has no * dependencies and no build commands; a leaf target corresponds to a source file * in the current project. * * In all three functions, files that are not part of the current project are silently * discarded. All three functions will return phony and scanner targets along with the * ``real'' ones. * * One purpose of the \verb+dependencies-proper+ function is for ``clean'' targets. * For example, one way to delete all intermediate files in a build is with a rule * that uses the \verb+dependencies-proper+. Note however, that the rule requires * building the project before it can be deleted. * * \begin{verbatim} * .PHONY: clean * * APP = ... # the name of the target application * clean: $(APP) * rm -f $(dependencies-proper $(APP)) * \end{verbatim} * * Also note that the \verb+dependencies-proper+ function will return the phony and scanner * targets in addition to real one. * * For other (possibly better) alternatives, see Section~\ref{section:distclean} and * \hyperfun{filter-proper-targets}. * \end{doc} *) let dependencies venv pos loc args = let pos = string_pos "dependencies" pos in let nodes = match args with [arg] -> let args = values_of_value venv pos arg in let nodes = List.map (file_of_value venv pos) args in let rec find_deps deps node = try let env = get_env pos loc in let command = NodeTable.find env.env_commands node in NodeSet.union deps command.command_build_deps with Not_found -> raise (OmakeException (pos, StringNodeError ("file is not buildable", node))) in List.fold_left find_deps NodeSet.empty nodes | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in ValArray (List.map (fun v -> ValNode v) (NodeSet.to_list nodes)) let dependencies_all_core test venv pos loc args = let pos = string_pos "dependencies-all" pos in match args with [arg] -> let env = try get_env pos loc with Not_found -> raise (OmakeException (pos, StringError "this command can only be executed in a rule body")) in let commands = env.env_commands in let args = values_of_value venv pos arg in let nodes = List.fold_left (fun nodes v -> NodeSet.add nodes (file_of_value venv pos v)) NodeSet.empty args in let rec find_deps found examined unexamined = if NodeSet.is_empty unexamined then found else let node = NodeSet.choose unexamined in let unexamined = NodeSet.remove unexamined node in if NodeSet.mem examined node then find_deps found examined unexamined else let examined = NodeSet.add examined node in let found, deps = try let command = NodeTable.find commands node in let deps = command.command_build_deps in let found = if test command then NodeSet.add found node else found in found, deps with Not_found -> found, NodeSet.empty in let unexamined = NodeSet.union unexamined deps in find_deps found examined unexamined in let nodes = find_deps NodeSet.empty NodeSet.empty nodes in ValArray (List.map (fun v -> ValNode v) (NodeSet.to_list nodes)) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let dependencies_all = dependencies_all_core (fun _ -> true) let dependencies_proper = dependencies_all_core (fun command -> not (is_leaf_command command)) (* * \begin{doc} * \fun{target} * \begin{verbatim} * $(target targets) : Target Array * targets : File Sequence * raises RuntimeException * \end{verbatim} * * The \verb+target+ function returns the Target object associated with each * of the targets. See the \verb+Target+ object for more information. * \end{doc} *) let array_of_node_set nodes = ValArray (List.map (fun v -> ValNode v) (NodeSet.to_list nodes)) let split_command venv (values1, lines1) command = let { command_values = values2; command_body = lines2 } = command in let values = List.rev_append values2 values1 in let env = venv_get_env venv in let lines = List.fold_left (fun lines line -> let v = match line with CommandSection (_, _, e) -> ValBody (env, e, ExportNone) | CommandValue (_, v) -> v in v :: lines) lines1 lines2 in values, lines let split_commands venv commands = match commands with CommandNone -> [], [] | CommandInfo info | CommandLines (info, _, _) | CommandScanner (info, _, _, _) -> List.fold_left (split_command venv) ([], []) info let target_of_command venv pos loc command = let { command_target = target; command_effects = effects; command_scanner_deps = scanner_deps; command_static_deps = static_deps; command_build_deps = build_deps; command_tee = tee; command_lines = commands } = command in (* Dependency lists *) let effects = array_of_node_set effects in let scanner_deps = array_of_node_set scanner_deps in let static_deps = array_of_node_set static_deps in let build_deps = array_of_node_set build_deps in (* Command lists *) let command_values, command_lines = split_commands venv commands in (* Get the default target object *) let obj = venv_find_var_exn venv target_object_var in let obj = match obj with ValObject obj -> obj | _ -> raise (OmakeException (loc_pos loc pos, StringVarError ("object not defined", target_sym))) in (* Add the fields *) let obj = venv_add_field_internal obj target_sym (ValNode target) in let obj = venv_add_field_internal obj target_effects_sym effects in let obj = venv_add_field_internal obj scanner_deps_sym scanner_deps in let obj = venv_add_field_internal obj static_deps_sym static_deps in let obj = venv_add_field_internal obj build_deps_sym build_deps in let obj = venv_add_field_internal obj build_values_sym (ValArray command_values) in let obj = venv_add_field_internal obj build_commands_sym (ValArray command_lines) in (* Add the tee *) let obj = match tee_file tee with Some name -> let node = venv_intern venv PhonyProhibited name in venv_add_field_internal obj output_file_sym (ValNode node) | None -> obj in ValObject obj let target_core optional_flag venv pos loc args = let pos = string_pos "target" pos in match args with [arg] -> let args = values_of_value venv pos arg in let env = get_env pos loc in let commands = env.env_commands in let targets = List.fold_left (fun targets v -> let node = file_of_value venv pos v in let target = try let command = NodeTable.find commands node in target_of_command venv pos loc command with Not_found -> if optional_flag then val_false else raise (OmakeException (pos, StringNodeError ("file is not buildable", node))) in target :: targets) [] args in concat_array (List.rev targets) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let target = target_core false let target_optional = target_core true (* * \begin{doc} * \fun{find-build-targets} * * \begin{verbatim} * $(find-build-targets tag) : Target Array * tag : Succeeded | Failed * \end{verbatim} * * The \verb+find-build-targets+ allow the results * of the build to be examined. The \verb+tag+ must * specifies which targets are to be returned; the comparison * is case-insensitive. * * \begin{description} * \item[Succeeded] The list of targets that were built successfully. * \item[Failed] The list of targets that could not be built. * \end{description} * * These are used mainly in conjuction with the * \verb+.BUILD_SUCCESS+ (Section~\ref{target:.BUILD_SUCCESS}) and * \verb+.BUILD_FAILURE+ (Section~\ref{target:.BUILD_FAILURE}) phony targets. * For example, adding the following to your project \verb+OMakefile+ * will print the number of targets that failed (if the build failed). * * \begin{verbatim} * .BUILD_FAILURE: * echo "Failed target count: $(length $(find-build-targets Failed))" * \end{verbatim} * \end{doc} *) let find_build_targets venv pos loc args = let pos = string_pos "find-build-targets" pos in match args with [tag] -> let tag = match String.lowercase (string_of_value venv pos tag) with "succeeded" -> CommandSucceededTag | "failed" -> CommandFailedTag | tag -> raise (OmakeException (loc_pos loc pos, StringStringError ("find-build-targets: unknown option", tag))) in let env = get_env pos loc in let targets = command_fold env tag (fun targets command -> target_of_command venv pos loc command :: targets) [] in concat_array targets | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{project-directories} * * \begin{verbatim} * $(project-directories) : Dir Array * \end{verbatim} * * The \verb+project-directories+ function returns the list of all directories * that are considered to be part of the project. * * To get the complete directory list, this function should be called * from within a rule body. * \end{doc} *) let project_directories venv pos loc args = let pos = string_pos "project-directories" pos in match args with [] -> let dirs = DirTable.fold (fun dirs dir _ -> ValDir dir :: dirs) [] (venv_directories venv) in ValArray (List.rev dirs) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 0, List.length args))) (* * \begin{doc} * \fun{rule} * * The \verb+rule+ function is called whenever a build rule is defined. * It is unlikely that you will need to redefine this function, except in * very exceptional cases. * * \begin{verbatim} * rule(multiple, target, pattern, sources, options, body) : Rule * multiple : String * target : Sequence * pattern : Sequence * sources : Sequence * options : Array * body : Body * \end{verbatim} * * The \verb+rule+ function is called when a rule is evaluated. * * \begin{description} * \item[multiple] A Boolean value indicating whether the rule was defined * with a double colon \verb+::+. * \item[target] The sequence of target names. * \item[pattern] The sequence of patterns. This sequence will be empty * for two-part rules. * \item[sources] The sequence of dependencies. * \item[options] An array of options. Each option is represented * as a \hyperobj{Map} associating each specified option with * a value. * \item[body] The body expression of the rule. * \end{description} * * Consider the following rule. * * \begin{verbatim} * target: pattern: sources :name1: option1 :name2: option2 * expr1 * expr2 * \end{verbatim} * * This expression represents the following function call, where * square brackets are used to indicate arrays, and the curly * brackets represent a \hyperobj{Map}. * * \begin{verbatim} * rule(false, target, pattern, sources, * { $|:name1:| = option1; $|:name2:| = option2 } * [expr1; expr2]) * \end{verbatim} * \end{doc} *) let rule_fun venv pos loc args = let pos = string_pos "rule_fun" pos in match args with [multiple; target; pattern; source; options; body] -> let multiple = bool_of_value venv pos multiple in eval_rule_exp venv pos loc multiple target pattern source options body | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 6, List.length args))) (* * This is called whenever a .STATIC: ... or a .MEMO: ... rule is evaluated. * It isn't clear whether we want to document this. *) let memo_rule_fun venv pos loc args = let pos = string_pos "memo_rule_fun" pos in match args with [multiple; is_static; node; index; key; vars; source; options; body] -> let multiple = bool_of_value venv pos multiple in let is_static = bool_of_value venv pos is_static in let key = values_of_value venv pos key in let key = key_of_value venv pos (ValArray (node :: index ::key)) in let vars = vars_of_value venv pos vars in let target = file_of_value venv pos node in let venv = eval_memo_rule_exp venv pos loc multiple is_static key vars target source options body in venv, ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 9, List.length args))) (* * \begin{doc} * \fun{build} * * \begin{verbatim} * build(targets : File Array) : bool * \end{verbatim} * * Build the given targets. The value is true iff the build was successful. * This function can be used only in \verb+osh+. * \end{doc} *) let build venv pos loc args = let pos = string_pos "build" pos in if not (Omake_options.opt_osh (venv_options venv)) then raise (OmakeException (pos, StringError "build can be called only from osh")); match args with [arg] -> let targets = strings_of_value venv pos arg in let b = try Omake_build.build_fun venv targets with exn -> raise_uncaught_exception pos exn in if b then val_true else val_false | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (************************************************************************ * Hooks. *) let () = let builtin_funs = [true, "target", target, ArityExact 1; true, "target-optional", target_optional, ArityExact 1; true, "dependencies", dependencies, ArityExact 1; true, "dependencies-all", dependencies_all, ArityExact 1; true, "dependencies-proper", dependencies_proper, ArityExact 1; true, "project-directories", project_directories, ArityExact 0; true, "find-build-targets", find_build_targets, ArityExact 1; true, "build", build, ArityExact 1; ] in let builtin_kfuns = [true, "rule", rule_fun, ArityExact 6; true, "memo-rule", memo_rule_fun, ArityExact 9; ] in let pervasives_objects = ["Target"] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns; pervasives_objects = pervasives_objects } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/OMakefile0000664000152300015230000000111410364525355015154 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave ../util ../magic ../ir ../env ../exec ../shell ../eval ../build FILES[] = omake_builtin_base omake_builtin_arith omake_builtin_file omake_builtin_fun omake_builtin_io omake_builtin_io_fun omake_builtin_sys omake_builtin_target omake_builtin_shell omake_builtin_rule omake_builtin_test omake_builtin_object OCAML_LIB_FLAGS = -linkall MakeOCamlLibrary(builtin, $(FILES)) clean: $(CLEAN) # # Generate a Makefile # MakeOCamlDepend($(FILES), magic.cma) MakeMakefile() omake-0.9.8.5/src/builtin/omake_builtin_base.mli0000664000152300015230000000227210456240612017712 0ustar jyhjyh(* * Base builtin functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_shell.mli0000664000152300015230000000226310456240612020107 0ustar jyhjyh(* * Shell functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_rule.mli0000664000152300015230000000227210456240612017747 0ustar jyhjyh(* * Base builtin functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_arith.mli0000664000152300015230000000226410456240612020110 0ustar jyhjyh(* * Basic arithmetic. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_io.mli0000664000152300015230000000227210456240612017407 0ustar jyhjyh(* * Base builtin functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_test.ml0000664000152300015230000007447110652160444017622 0ustar jyhjyh(* * The Unix-style test command. * See the usage comment below. * * \begin{doc} * \section{File predicates} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_glob open Lm_lexer open Lm_printf open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_node open Omake_value open Omake_symbol open Omake_builtin open Omake_builtin_type open Omake_builtin_util open Omake_value_type open Omake_var module Pos = MakePos (struct let name = "Omake_builtin_test" end) open Pos (************************************************************************ * Types. *) (* * Operators. *) type unop = IsEmptyStringOp (* -z *) | IsNonEmptyStringOp (* -n *) | IsBlockSpecialFileOp (* -b *) | IsCharSpecialFileOp (* -c *) | IsDirFileOp (* -d *) | ExistsFileOp (* -e *) | IsRegFileOp (* -f *) | IsSetgidFileOp (* -g *) | IsSymlinkFileOp (* -h, -L *) | IsGroupOwnerFileOp (* -G *) | IsStickyFileOp (* -k *) | IsOwnerFileOp (* -O *) | IsNamedPipeOp (* -p *) | IsReadableFileOp (* -r *) | IsNonemptyFileOp (* -s *) | IsSocketFileOp (* -S *) | IsSetuidFileOp (* -u *) | IsWritableFileOp (* -w *) | IsExecutableFileOp (* -x *) type binop = EqStringOp (* = *) | NeStringOp (* != *) | EqFileOp (* -ef *) | NtFileOp (* -nt *) | OtFileOp (* -ot *) type intop = EqIntOp (* -eq *) | GeIntOp (* -ge *) | GtIntOp (* -gt *) | LeIntOp (* -le *) | LtIntOp (* -lt *) | NeIntOp (* -ne *) type token = TokString of string | TokCurrentFile of string | TokNot of string | TokAnd of string | TokOr of string | TokLeftParen of string | TokRightParen of string | TokLengthOp of string | TokUnop of unop * string | TokBinop of binop * string | TokIntop of intop * string | TokName of string | TokRegex of string (* * Expressions. *) type string_exp = token type int_exp = IntExp of token | LengthExp of token type bool_exp = UnopExp of unop * string_exp | MatchExp of LmStr.t | BinopExp of binop * string_exp * string_exp | IntopExp of intop * int_exp * int_exp | NotExp of bool_exp | AndExp of bool_exp * bool_exp | OrExp of bool_exp * bool_exp (************************************************************************ * Utilities. *) let rec split_last l = match l with [x] -> [], x | h :: l -> let l, x = split_last l in h :: l, x | [] -> raise (Invalid_argument "split_last") (************************************************************************ * Token operations. *) (* * Tokenize the strings. * It is unlikely that OCaml optimizes this match, * but the performance is not all that critical. *) let token_of_string s = match s with "(" -> TokLeftParen s | ")" -> TokRightParen s | "{}" -> TokCurrentFile s | "!" -> TokNot s | "-a" -> TokAnd s | "-o" -> TokOr s | "=" -> TokBinop (EqStringOp, s) | "!=" -> TokBinop (NeStringOp, s) | "-eq" -> TokIntop (EqIntOp, s) | "-ge" -> TokIntop (GeIntOp, s) | "-gt" -> TokIntop (GtIntOp, s) | "-le" -> TokIntop (LeIntOp, s) | "-lt" -> TokIntop (LtIntOp, s) | "-ne" -> TokIntop (NeIntOp, s) | "-ef" -> TokBinop (EqFileOp, s) | "-nt" -> TokBinop (NtFileOp, s) | "-ot" -> TokBinop (OtFileOp, s) | "-n" -> TokUnop (IsNonEmptyStringOp, s) | "-z" -> TokUnop (IsEmptyStringOp, s) | "-b" -> TokUnop (IsBlockSpecialFileOp, s) | "-c" -> TokUnop (IsCharSpecialFileOp, s) | "-d" -> TokUnop (IsDirFileOp, s) | "-e" -> TokUnop (ExistsFileOp, s) | "-f" -> TokUnop (IsRegFileOp, s) | "-g" -> TokUnop (IsSetgidFileOp, s) | "-h" | "-L" -> TokUnop (IsSymlinkFileOp, s) | "-l" -> TokLengthOp s | "-G" -> TokUnop (IsGroupOwnerFileOp, s) | "-k" -> TokUnop (IsStickyFileOp, s) | "-O" -> TokUnop (IsOwnerFileOp, s) | "-p" -> TokUnop (IsNamedPipeOp, s) | "-r" -> TokUnop (IsReadableFileOp, s) | "-s" -> TokUnop (IsNonemptyFileOp, s) | "-S" -> TokUnop (IsSocketFileOp, s) | "-u" -> TokUnop (IsSetuidFileOp, s) | "-w" -> TokUnop (IsWritableFileOp, s) | "-x" -> TokUnop (IsExecutableFileOp, s) | "-name" -> TokName s | "-regex" | "-regexp" -> TokRegex s | _ -> TokString s (* * Get the string from a token. *) let string_of_token arg = match arg with TokString s | TokCurrentFile s | TokNot s | TokAnd s | TokOr s | TokLeftParen s | TokRightParen s | TokLengthOp s | TokUnop (_, s) | TokBinop (_, s) | TokIntop (_, s) | TokRegex s | TokName s -> s (* * Integer of a token. * Since we use the internal int_of_string, we can read numbers * that are not in decimal. *) let int_of_token arg = int_of_string (string_of_token arg) (* * Length of a token. *) let length_of_token arg = String.length (string_of_token arg) (************************************************************************ * Stat operations. *) (* * Translate the filename. *) let filename_of_string venv pos s = filename_of_value venv pos (ValString s) (* * Generic stat operations. *) let stat_function venv pos file f = let pos = string_pos "stat_function" pos in let file = filename_of_string venv pos file in let stat = try Some (Unix.LargeFile.stat file) with Unix.Unix_error _ -> None in f stat let stat_function2 venv pos file1 file2 f = stat_function venv pos file1 (fun stat1 -> stat_function venv pos file2 (fun stat2 -> f stat1 stat2)) (* * Stat analysis. *) let file_exists stat = stat <> None let is_block_special stat = match stat with Some { Unix.LargeFile.st_kind = Unix.S_BLK } -> true | _ -> false let is_char_special stat = match stat with Some { Unix.LargeFile.st_kind = Unix.S_CHR } -> true | _ -> false let is_dir stat = match stat with Some { Unix.LargeFile.st_kind = Unix.S_DIR } -> true | _ -> false let is_reg_file stat = match stat with Some { Unix.LargeFile.st_kind = Unix.S_REG } -> true | _ -> false let is_symlink_file stat = match stat with Some { Unix.LargeFile.st_kind = Unix.S_LNK } -> true | _ -> false let is_socket_file stat = match stat with Some { Unix.LargeFile.st_kind = Unix.S_SOCK } -> true | _ -> false let is_named_pipe_file stat = match stat with Some { Unix.LargeFile.st_kind = Unix.S_FIFO } -> true | _ -> false let is_sticky_file stat = match stat with Some { Unix.LargeFile.st_perm = perm } -> perm land 0o1000 <> 0 | None -> false let is_setgid_file stat = match stat with Some { Unix.LargeFile.st_perm = perm } -> perm land 0o2000 <> 0 | None -> false let is_setuid_file stat = match stat with Some { Unix.LargeFile.st_perm = perm } -> perm land 0o4000 <> 0 | None -> false let is_group_owner_file stat = match stat with Some { Unix.LargeFile.st_gid = gid } -> gid = Unix.getegid () | None -> false let is_owner_file stat = match stat with Some { Unix.LargeFile.st_uid = uid } -> uid = Unix.geteuid () | None -> false let is_readable_file stat = match stat with Some { Unix.LargeFile.st_uid = uid; Unix.LargeFile.st_gid = gid; Unix.LargeFile.st_perm = perm } -> let my_uid = Unix.geteuid () in let my_gid = Unix.getegid () in (my_uid = uid && perm land 0o400 <> 0) || (my_gid = gid && perm land 0o040 <> 0) || (perm land 0o004 <> 0) | None -> false let is_writable_file stat = match stat with Some { Unix.LargeFile.st_uid = uid; Unix.LargeFile.st_gid = gid; Unix.LargeFile.st_perm = perm } -> let my_uid = Unix.geteuid () in let my_gid = Unix.getegid () in (my_uid = uid && perm land 0o200 <> 0) || (my_gid = gid && perm land 0o020 <> 0) || (perm land 0o002 <> 0) | None -> false let is_executable_file stat = match stat with Some { Unix.LargeFile.st_uid = uid; Unix.LargeFile.st_gid = gid; Unix.LargeFile.st_perm = perm } -> let my_uid = Unix.geteuid () in let my_gid = Unix.getegid () in (my_uid = uid && perm land 0o100 <> 0) || (my_gid = gid && perm land 0o010 <> 0) || (perm land 0o001 <> 0) | None -> false let is_nonempty_file stat = match stat with Some { Unix.LargeFile.st_size = size } -> size <> Int64.zero | None -> false (* * Binary stat operations. *) let eq_file = if Sys.os_type = "Win32" then (fun venv pos file1 file2 -> let file1 = filename_of_string venv pos file1 in let file2 = filename_of_string venv pos file2 in file1 = file2) else (fun venv pos file1 file2 -> let pos = string_pos "eq_file" pos in stat_function2 venv pos file1 file2 (fun stat1 stat2 -> match stat1, stat2 with Some { Unix.LargeFile.st_dev = dev1; Unix.LargeFile.st_ino = ino1 }, Some { Unix.LargeFile.st_dev = dev2; Unix.LargeFile.st_ino = ino2 } -> dev1 = dev2 && ino1 = ino2 | _ -> false)) let newer_than_file stat1 stat2 = match stat1, stat2 with Some { Unix.LargeFile.st_mtime = mtime1 }, Some { Unix.LargeFile.st_mtime = mtime2 } -> mtime1 > mtime2 | _ -> false let older_than_file stat1 stat2 = match stat1, stat2 with Some { Unix.LargeFile.st_mtime = mtime1 }, Some { Unix.LargeFile.st_mtime = mtime2 } -> mtime1 < mtime2 | _ -> false (************************************************************************ * Term evaluation. *) (* * Evaluators. *) let eval_string_exp venv pos arg = match arg with TokCurrentFile _ -> string_of_value venv pos (venv_get_var venv pos braces_var) | _ -> string_of_token arg let eval_int_exp venv pos arg = match arg with IntExp arg -> int_of_token arg | LengthExp arg -> length_of_token arg (* * Interpret a unary operator. *) let eval_unop_exp venv pos op arg = let pos = string_pos "unop" pos in let arg = eval_string_exp venv pos arg in match op with IsEmptyStringOp -> arg = "" | IsNonEmptyStringOp -> arg <> "" | IsBlockSpecialFileOp -> stat_function venv pos arg is_block_special | IsCharSpecialFileOp -> stat_function venv pos arg is_char_special | IsDirFileOp -> stat_function venv pos arg is_dir | ExistsFileOp -> stat_function venv pos arg file_exists | IsRegFileOp -> stat_function venv pos arg is_reg_file | IsSetgidFileOp -> stat_function venv pos arg is_setgid_file | IsSymlinkFileOp -> stat_function venv pos arg is_symlink_file | IsGroupOwnerFileOp -> stat_function venv pos arg is_group_owner_file | IsStickyFileOp -> stat_function venv pos arg is_sticky_file | IsOwnerFileOp -> stat_function venv pos arg is_owner_file | IsNamedPipeOp -> stat_function venv pos arg is_named_pipe_file | IsReadableFileOp -> stat_function venv pos arg is_readable_file | IsNonemptyFileOp -> stat_function venv pos arg is_nonempty_file | IsSocketFileOp -> stat_function venv pos arg is_socket_file | IsSetuidFileOp -> stat_function venv pos arg is_setuid_file | IsWritableFileOp -> stat_function venv pos arg is_writable_file | IsExecutableFileOp -> stat_function venv pos arg is_executable_file (* * Binary operation. *) let eval_binop_exp venv pos op e1 e2 = let pos = string_pos "binop" pos in let left = eval_string_exp venv pos e1 in let right = eval_string_exp venv pos e2 in match op with EqStringOp -> left = right | NeStringOp -> left <> right | EqFileOp -> eq_file venv pos left right | NtFileOp -> stat_function2 venv pos left right newer_than_file | OtFileOp -> stat_function2 venv pos left right older_than_file (* * Integer operations. *) let eval_intop_exp venv pos op e1 e2 = let i = eval_int_exp venv pos e1 in let j = eval_int_exp venv pos e2 in match op with EqIntOp -> i = j | GeIntOp -> i >= j | GtIntOp -> i > j | LeIntOp -> i <= j | LtIntOp -> i < j | NeIntOp -> i <> j (* * Match against the regular expression. *) let eval_match_exp venv pos regex = let basename = match venv_get_var venv pos braces_var with ValNode node -> Node.tail node | v -> Filename.basename (string_of_value venv pos v) in LmStr.string_match regex basename 0 (* * General evaluator. *) let rec eval_bool_exp venv pos e = match e with UnopExp (op, e) -> eval_unop_exp venv pos op e | MatchExp regex -> eval_match_exp venv pos regex | BinopExp (op, e1, e2) -> eval_binop_exp venv pos op e1 e2 | IntopExp (op, e1, e2) -> eval_intop_exp venv pos op e1 e2 | NotExp e -> not (eval_bool_exp venv pos e) | AndExp (e1, e2) -> eval_bool_exp venv pos e1 && eval_bool_exp venv pos e2 | OrExp (e1, e2) -> eval_bool_exp venv pos e1 || eval_bool_exp venv pos e2 (************************************************************************ * Expression parsing. *) (* * Integer operation. *) let parse_intop op i right = let j, tokens = match right with TokLengthOp _ :: right :: tokens -> LengthExp right, tokens | right :: tokens -> IntExp right, tokens | [] -> raise (Invalid_argument "Omake_builtin_string.intop") in IntopExp (op, i, j), tokens (* * A term can be: * ! term * ( exp ) * -l string intop int * int intop int * string binop string * unop string * string *) let no_glob_options = Lm_glob.create_options [] let rec parse_term venv pos tokens = let pos = string_pos "parse_term" pos in match tokens with TokNot _ :: tokens -> let e, tokens = parse_term venv pos tokens in NotExp e, tokens | TokLeftParen _ :: tokens -> let e, tokens = parse_exp venv pos tokens in let tokens = match tokens with TokRightParen _ :: tokens -> tokens | tok :: _ -> raise (Failure ("')' expected: found " ^ string_of_token tok)) | [] -> raise (Failure "')' expected") in e, tokens | TokLengthOp _ :: left :: TokIntop (op, _) :: ((_ :: _) as right) -> parse_intop op (LengthExp left) right | left :: TokIntop (op, _) :: ((_ :: _) as right) -> parse_intop op (IntExp left) right | left :: TokBinop (op, _) :: right :: tokens -> BinopExp (op, left, right), tokens | TokUnop (op, _) :: arg :: tokens -> UnopExp (op, arg), tokens | TokName _ :: arg :: tokens -> MatchExp (regex_of_shell_pattern no_glob_options (string_of_token arg)), tokens | TokRegex _ :: arg :: tokens -> MatchExp (LmStr.regexp (string_of_token arg)), tokens | arg :: tokens -> UnopExp (IsNonEmptyStringOp, arg), tokens | [] -> raise (Failure "argument expected") (* * And has higher precedence that or. *) and parse_and venv pos tokens = let pos = string_pos "parse_and" pos in let rec parse e1 tokens = match tokens with TokAnd _ :: tokens -> let e2, tokens = parse_term venv pos tokens in parse (AndExp (e1, e2)) tokens | _ -> e1, tokens in let e1, tokens = parse_term venv pos tokens in parse e1 tokens and parse_or venv pos tokens = let pos = string_pos "parse_or" pos in let rec parse e1 tokens = match tokens with TokOr _ :: tokens -> let e2, tokens = parse_and venv pos tokens in parse (OrExp (e1, e2)) tokens | _ -> e1, tokens in let e1, tokens = parse_and venv pos tokens in parse e1 tokens (* * Evaluate an entire expression. *) and parse_exp venv pos tokens = let pos = string_pos "parse" pos in parse_or venv pos tokens (************************************************************************ * Usage. * * \begin{doc} * \fun{test} * * \begin{verbatim} * test(exp) : Bool * exp : String Sequence * \end{verbatim} * * The \emph{expression} grammar is as follows: * * \begin{itemize} * \item \verb+!+ \emph{expression} : \emph{expression} is not true * \item \emph{expression1} \verb+-a+ \emph{expression2} : both expressions are true * \item \emph{expression1} \verb+-o+ \emph{expression2} : at least one expression is true * \item \verb+(+ \emph{expression} \verb+)+ : \emph{expression} is true * \end{itemize} * * The base expressions are: * * \begin{itemize} * \item \verb+-n+ \emph{string} : The \emph{string} has nonzero length * \item \verb+-z+ \emph{string} : The \emph{string} has zero length * \item \emph{string} \verb+=+ \emph{string} : The strings are equal * \item \emph{string} \verb+!=+ \emph{string} : The strings are not equal * * \item \emph{int1} \verb+-eq+ \emph{int2} : The integers are equal * \item \emph{int1} \verb+-ne+ \emph{int2} : The integers are not equal * \item \emph{int1} \verb+-gt+ \emph{int2} : \emph{int1} is larger than \emph{int2} * \item \emph{int1} \verb+-ge+ \emph{int2} : \emph{int2} is not larger than \emph{int1} * \item \emph{int1} \verb+-lt+ \emph{int2} : \emph{int1} is smaller than \emph{int2} * \item \emph{int1} \verb+-le+ \emph{int2} : \emph{int1} is not larger than \emph{int2} * * \item \emph{file1} \verb+-ef+ \emph{file2} : On Unix, \emph{file1} and \emph{file2} have the * same device and inode number. * On Win32, \emph{file1} and \emph{file2} have the * same name. * \item \emph{file1} \verb+-nt+ \emph{file2} : \emph{file1} is newer than \emph{file2} * \item \emph{file1} \verb+-ot+ \emph{file2} : \emph{file1} is older than \emph{file2} * * \item \verb+-b+ \emph{file} : The file is a block special file * \item \verb+-c+ \emph{file} : The file is a character special file * \item \verb+-d+ \emph{file} : The file is a directory * \item \verb+-e+ \emph{file} : The file exists * \item \verb+-f+ \emph{file} : The file is a normal file * \item \verb+-g+ \emph{file} : The set\verb+-group+\verb+-id+ bit is set on the file * \item \verb+-G+ \emph{file} : The file's group is the current effective group * \item \verb+-h+ \emph{file} : The file is a symbolic link (also \verb+-L+) * \item \verb+-k+ \emph{file} : The file's sticky bit is set * \item \verb+-L+ \emph{file} : The file is a symbolic link (also \verb+-h+) * \item \verb+-O+ \emph{file} : The file's owner is the current effective user * \item \verb+-p+ \emph{file} : The file is a named pipe * \item \verb+-r+ \emph{file} : The file is readable * \item \verb+-s+ \emph{file} : The file is empty * \item \verb+-S+ \emph{file} : The file is a socket * \item \verb+-u+ \emph{file} : The set\verb+-user+\verb+-id+ bit is set on the file * \item \verb+-w+ \emph{file} : The file is writable * \item \verb+-x+ \emph{file} : The file is executable * \end{itemize} * * A \emph{string} is any sequence of characters; leading \verb+-+ characters are allowed. * * An \emph{int} is a \emph{string} that can be interpreted as an integer. Unlike traditional * versions of the test program, the leading characters may specify an arity. The * prefix \verb+0b+ means the numbers is in binary; the prefix \verb+0o+ means * the number is in octal; the prefix \verb+0x+ means the number is in hexadecimal. * An \emph{int} can also be specified as \verb+-l+ \emph{string}, which evaluates to the length of * the \emph{string}. * * A \emph{file} is a \emph{string} that represents the name of a file. * * The syntax mirrors that of the \Cmd{test}{1} program. If you are on a Unix system, the man page * explains more. Here are some examples. * * \begin{verbatim} * # Create an empty file * osh> touch foo * # Is the file empty? * osh> test(-e foo) * - : true * osh> test(! -e foo) * - : false * # Create another file * osh> touch boo * # Is the newer file newer? * osh> test(boo -nt foo) * - : true * # A more complex query * # boo is newer than foo, and foo is empty * osh> test(\( boo -nt foo \) -a -e foo) * - : true * \end{verbatim} * \end{doc} *) let print_usage venv pos loc = let outv = venv_find_var venv pos loc stderr_var in let outx = channel_of_value venv pos outv in Lm_channel.output_string outx "test \nFor usage, see the omake manual\n"; false let print_version venv pos loc = let outv = venv_find_var venv pos loc stdout_var in let outx = channel_of_value venv pos outv in Lm_channel.output_string outx "test version 1.0.0\n"; false (* * Evaluate the expression. *) let test_exp venv pos tokens = let pos = string_pos "test_exp" pos in let tokens = List.map token_of_string tokens in let e, tokens = parse_exp venv pos tokens in match tokens with [] -> eval_bool_exp venv pos e | tok :: _ -> raise (Failure ("unexpected token: " ^ string_of_token tok)) (* * Parse the command line. *) let test_cmd_exn venv pos loc argv = match argv with ["["; "--help"] -> print_usage venv pos loc | ["["; "--version"] -> print_version venv pos loc | "[" :: argv -> let argv, delim = split_last argv in if delim = "]" then test_exp venv pos argv else print_usage venv pos loc | _ :: argv -> test_exp venv pos argv | [] -> false let test_cmd venv pos loc argv = try test_cmd_exn venv pos loc argv with Failure _ as exn -> raise (UncaughtException (loc_pos loc pos, exn)) (************************************************************************ * Usage. * * \begin{doc} * \fun{find} * * \begin{verbatim} * find(exp) : Node Array * exp : String Sequence * \end{verbatim} * * The \verb+find+ function searches a directory recursively, returning the * files for which the expression evaluates to true. * * The expression argument uses the same syntax as the \verb+test+ function, * with the following exceptions. * * \begin{enumerate} * \item The expression may begin with a directory. If not specified, the current * directory is searched. * \item The \verb+{}+ string expands to the current file being examined. * \end{enumerate} * * The syntax of the expression is the same as \verb+test+, with the following * additions. * * \begin{itemize} * \item \verb+-name+ \emph{string} : The current file matches the glob expression * (see Section~\ref{section:globbing}). * \item \verb+-regex+ \emph{string} : The current file matches the regular expression * \end{itemize} * * The \verb+find+ function performs a recursive scan of all subdirectories. * The following call is being run from the root of the \verb+omake+ source directory. * * \begin{verbatim} * osh> find(. -name fo* ) * - : * \end{verbatim} * * Another example, listing only those files that are normal files * or symbolic links. * * \begin{verbatim} * osh> find(. -name fo* -a \( -f {} -o -L {} \)) * - : * \end{verbatim} * \end{doc} *) let test venv pos loc args = let pos = string_pos "test" pos in let code = match args with [arg] -> let argv = "test" :: strings_of_value venv pos arg in test_cmd venv pos loc argv | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in val_of_bool code let shell_test cmd venv pos loc args = let pos = string_pos "shell-test" pos in let code = match args with [arg] -> let argv = cmd :: strings_of_value venv pos arg in test_cmd venv pos loc argv | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in if code then val_true else raise (ExitException (pos, 1)) (************************************************************************ * Find function. *) (* * Walk the directory tree, testing for files. *) let rec find_file venv pos nodes name e = (* Convert the name to to a value *) let v = node_value_of_value venv pos (ValString name) in (* Add this node if the expression matches *) let nodes = let venv = venv_add_var venv braces_var v in if eval_bool_exp venv pos e then v :: nodes else nodes in (* If this is a directory, then walk it recursively *) match v with ValDir dir -> let dirname = Dir.fullname dir in let names = try Lm_filename_util.lsdir dirname with Unix.Unix_error _ -> [] in List.fold_left (fun nodes name' -> let filename = Filename.concat name name' in find_file venv pos nodes filename e) nodes names | _ -> nodes (* * The main function, from arguments. *) let find_top venv pos loc arg = let argv = strings_of_value venv pos arg in let tokens = List.map token_of_string argv in let dir, tokens = match tokens with TokString s :: tokens -> s, tokens | _ -> ".", tokens in let e, tokens = parse_exp venv pos tokens in let () = match tokens with [] -> () | tok :: _ -> raise (Failure ("unexpected token: " ^ string_of_token tok)) in List.rev (find_file venv pos [] dir e) (* * Find function. *) let find venv pos loc args = let pos = string_pos "find" pos in match args with [arg] -> let nodes = find_top venv pos loc arg in concat_array nodes | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let shell_find venv pos loc args = let pos = string_pos "find" pos in match args with [arg] -> let stdout_fd = venv_find_var venv pos loc stdout_var in let outp, close_flag = out_channel_of_any_value venv pos stdout_fd in let outx = venv_find_channel venv pos outp in let nodes = find_top venv pos loc arg in List.iter (fun node -> Lm_channel.output_string outx (string_of_value venv pos node); Lm_channel.output_string outx "\n") nodes; Lm_channel.flush outx; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (************************************************************************ * External interface. *) let () = let builtin_funs = [true, "test", test, ArityExact 1; true, "builtin-test", shell_test "test", ArityExact 1; true, "builtin-test-brack", shell_test "[", ArityExact 1; true, "find", find, ArityExact 1; true, "builtin-find", shell_find, ArityExact 1] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_file.ml0000664000152300015230000027556110624666402017571 0ustar jyhjyh(* * Builtin operations on files. * * \begin{doc} * \chapter{File, I/O and system operations} * \label{chapter:system} * \cutname{omake-system.html} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology, * and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_arg open Lm_glob open Lm_printf open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_eval open Omake_node open Omake_rule open Omake_value open Omake_target open Omake_symbol open Omake_builtin open Omake_node_sig open Omake_build_util open Omake_builtin_util open Omake_builtin_type open Omake_build_type open Omake_cache_type open Omake_value_type module Pos = MakePos (struct let name = "Omake_builtin_file" end) open Pos (* * Utilities. *) let is_dir dir = try (Unix.LargeFile.stat dir).Unix.LargeFile.st_kind = Unix.S_DIR with Unix.Unix_error _ -> false (* * Get the file from a string. * * \begin{doc} * \section{File names} * \twofuns{file}{dir} * * \begin{verbatim} * $(file sequence) : File Sequence * sequence : Sequence * $(dir sequence) : Dir Sequence * sequence : Sequence * \end{verbatim} * * The \verb+file+ and \verb+dir+ functions define location-independent references to files and directories. * In \Prog{omake}, the commands to build a target are executed in the target's directory. Since there may be * many directories in an \Prog{omake} project, the build system provides a way to construct a reference to a file * in one directory, and use it in another without explicitly modifying the file name. The functions have the following * syntax, where the name should refer to a file or directory. * * For example, we can construct a reference to a file \verb+foo+ in the current directory. * * \begin{verbatim} * FOO = $(file foo) * .SUBDIRS: bar * \end{verbatim} * * If the \verb+FOO+ variable is expanded in the \verb+bar+ subdirectory, it will expand to \verb+../foo+. * * These commands are often used in the top-level OMakefile to provide location-independent references to * top-level directories, so that build commands may refer to these directories as if they were absolute. * * \begin{verbatim} * ROOT = $(dir .) * LIB = $(dir lib) * BIN = $(dir bin) * \end{verbatim} * * Once these variables are defined, they can be used in build commands in subdirectories as follows, where * \verb+$(BIN)+ will expand to the location of the \verb+bin+ directory relative to the command being executed. * * \begin{verbatim} * install: hello * cp hello $(BIN) * \end{verbatim} * \end{doc} *) let file venv pos loc args = let pos = string_pos "file" pos in match args with [arg] -> let values = values_of_value venv pos arg in let values = List.map (node_value_of_value venv pos) values in concat_array values | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let dir venv pos loc args = let pos = string_pos "dir" pos in match args with [arg] -> let values = values_of_value venv pos arg in let values = List.map (dir_value_of_value venv pos) values in concat_array values | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{tmpfile} * * \begin{verbatim} * $(tmpfile prefix) : File * $(tmpfile prefix, suffix) : File * prefix : String * suffix : String * \end{verbatim} * * The \verb+tmpfile+ function returns the name of a fresh temporary file in * the temporary directory. * \end{doc} *) let tmpfile venv pos loc args = let pos = string_pos "tmpfile" pos in let prefix, suffix = match args with [prefix] -> string_of_value venv pos prefix, ".omake" | [prefix; suffix] -> string_of_value venv pos prefix, string_of_value venv pos suffix | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 2), List.length args))) in ValNode (venv_intern venv PhonyProhibited (Filename.temp_file prefix suffix)) (* * Display something from a different directory. * * \begin{doc} * \fun{in} * * \begin{verbatim} * $(in dir, exp) : String Array * dir : Dir * exp : expression * \end{verbatim} * * The \verb+in+ function is closely related to the \verb+dir+ and * \verb+file+ functions. It takes a directory and an expression, and * evaluates the expression in that effective directory. * For example, one common way to install a file is to define a symbol link, where the * value of the link is relative to the directory where the link is created. * * The following commands create links in the \verb+$(LIB)+ directory. * * \begin{verbatim} * FOO = $(file foo) * install: * ln -s $(in $(LIB), $(FOO)) $(LIB)/foo * \end{verbatim} * * Note that the \verb+in+ function only affects the expansion of \verb+Node+ * (\verb+File+ and \verb+Dir+) values. * \end{doc} *) let ind venv pos loc args = let pos = string_pos "ind" pos in match args with [dir; arg] -> (* * BUG: JYH: evaluate the arguments early, so that commands * like the following work. * * %.out: %.in * echo $(in foo, $(file $<)) * * Without this eager evaluation, this command wouldn't * work because expressions in rules bodies are evaluated * lazily, and the $(file $<) needs to be evaluated early. *) let arg = concat_array (values_of_value venv pos arg) in let dir = dir_of_value venv pos dir in let venv = venv_chdir_tmp venv dir in let strings = strings_of_value venv pos arg in concat_strings strings | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Strip the directory. * * \begin{doc} * \fun{basename} * * \begin{verbatim} * $(basename files) : String Sequence * files : String Sequence * \end{verbatim} * * The \verb+basename+ function returns the base names for a list of files. * The basename is the filename with any leading directory components removed. * * For example, the expression \verb+$(basename dir1/dir2/a.out /etc/modules.conf /foo.ml)+ evaluates to * \verb+a.out modules.conf foo.ml+. * \end{doc} *) let basename venv pos loc args = let pos = string_pos "basename" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map Filename.basename args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Strip the directory. * * \begin{doc} * \fun{dirname} * * \begin{verbatim} * $(dirname files) : String Sequence * files : String Sequence * \end{verbatim} * * The \verb+dirname+ function returns the directory name for a list of files. * The directory name is the filename with the basename removed. If a name * does not have a directory part, the directory is ``.'' * * For example, the expression \verb+$(dirname dir1\dir2\a.out /etc/modules.conf /foo.ml bar.ml)+ evaluates to * \verb+dir1/dir2 /etc / .+. * * \textbf{Note}: this function is different from the \verb+dirof+ function. * The function \verb+dirname+ is simple a function over strings, while * \verb+dirof+ is a function on filenames. * \end{doc} *) let dirname venv pos loc args = let pos = string_pos "dirname" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map Filename.dirname args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Strip the directory. * * \begin{doc} * \fun{rootname} * * \begin{verbatim} * $(rootname files) : String Sequence * files : String Sequence * \end{verbatim} * * The \verb+rootname+ function returns the root name for a list of files. * The rootname is the filename with the final suffix removed. * * For example, the expression \verb+$(rootname dir1/dir2/a.out /etc/a.b.c /foo.ml)+ evaluates to * \verb+dir1/dir2/a /etc/a.b /foo+. * \end{doc} *) let rootname venv pos loc args = let pos = string_pos "rootname" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map Lm_filename_util.root args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Get the directory. * * \begin{doc} * \fun{dirof} * * \begin{verbatim} * $(dirof files) : Dir Sequence * files : File Sequence * \end{verbatim} * * The \verb+dirof+ function returns the directory for each of the listed files. * * For example, the expression \verb+$(dirof dir/dir2/a.out /etc/modules.conf /foo.ml)+ evaluates * to the directories \verb+dir1/dir2 /etc /+. * \end{doc} *) let dirof venv pos loc args = let pos = string_pos "dirof" pos in match args with [arg] -> let values = values_of_value venv pos arg in let dirs = List.map (fun v -> let v = node_value_of_value venv pos v in match v with ValNode node -> ValDir (Node.dir node) | ValDir _ -> v | _ -> raise (Invalid_argument "dirof")) values in concat_array dirs | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{fullname} * * \begin{verbatim} * $(fullname files) : String Sequence * files : File Sequence * \end{verbatim} * * The \verb+fullname+ function returns the pathname relative to the project root * for each of the files or directories. * \end{doc} *) let fullname venv pos loc args = let pos = string_pos "fullname" pos in match args with [arg] -> let values = values_of_value venv pos arg in let strings = List.map (fun v -> let s = match node_value_of_value venv pos v with ValDir dir -> Dir.fullname dir | ValNode node -> Node.fullname node | v -> raise (OmakeFatalErr (loc_pos loc pos, StringValueError ("not a file", v))) in ValString s) values in concat_array strings | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{absname} * * \begin{verbatim} * $(absname files) : String Sequence * files : File Sequence * \end{verbatim} * * The \verb+absname+ function returns the absolute pathname for each of the files * or directories. * \end{doc} *) let absname venv pos loc args = let pos = string_pos "absname" pos in match args with [arg] -> let values = values_of_value venv pos arg in let strings = List.map (fun v -> let s = match node_value_of_value venv pos v with ValDir dir -> Dir.absname dir | ValNode node -> Node.absname node | v -> raise (OmakeFatalErr (loc_pos loc pos, StringValueError ("not a file", v))) in ValString s) values in concat_array strings | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Strip the directory. * * \begin{doc} * \fun{homename} * * \begin{verbatim} * $(homename files) : String Sequence * files : File Sequence * \end{verbatim} * * The \verb+homename+ function returns the name of a file in * tilde form, if possible. The unexpanded forms are computed * lazily: the \verb+homename+ function will usually evaluate to an absolute * pathname until the first tilde-expansion for the same directory. * \end{doc} *) let homename venv pos loc args = let pos = string_pos "rootname" pos in match args with [arg] -> let args = values_of_value venv pos arg in let args = List.map (node_value_of_value venv pos) args in let venv = venv_chdir_tmp venv Dir.root in let args = List.map (fun v -> ValString (tilde_collapse (string_of_value venv pos v))) args in concat_array args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Strip the directory. * * \begin{doc} * \fun{suffix} * * \begin{verbatim} * $(suffix files) : String Sequence * files : StringSequence * \end{verbatim} * * The \verb+suffix+ function returns the suffixes for a list of files. * If a file has no suffix, the function returns the empty string. * * For example, the expression \verb+$(suffix dir1/dir2/a.out /etc/a /foo.ml)+ evaluates * to \verb+.out .ml+. * \end{doc} *) let suffix venv pos loc args = let pos = string_pos "suffix" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map Lm_filename_util.suffix args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Search the PATH. * * \begin{doc} * \section{Path search} * \fun{which} * * \begin{verbatim} * $(which files) : File Sequence * files : String Sequence * \end{verbatim} * * The \verb+which+ function searches for executables in the * current command search path, and returns \verb+file+ values * for each of the commands. It is an error if a command is * not found. * \end{doc} *) let which venv pos loc args = let pos = string_pos "which" pos in match args with [arg] -> let path = venv_find_var venv pos loc path_var in let path = Omake_eval.path_of_values venv pos (values_of_value venv pos path) "." in let cache = venv_cache venv in let path = Omake_cache.ls_exe_path cache path in let args = strings_of_value venv pos arg in let args = List.map (fun s -> try ValNode (Omake_cache.exe_find cache path s) with Not_found -> raise (OmakeException (loc_pos loc pos, StringStringError ("command not found", s)))) args in concat_array args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{where} * * The \verb+where+ function is similar to which, except it returns the list of * all the locations of the given executable (in the order in which the * corresponding directories appear in \verb+$PATH+). In case a command is handled * internally by the \verb+Shell+ object, the first string in the output will * describe the command as a built-in function. * * \begin{verbatim} * % where echo * echo is a Shell object method (a built-in function) * /bin/echo * \end{verbatim} * \end{doc} *) let where venv pos loc args = let pos = string_pos "where" pos in match args with [arg] -> (match strings_of_value venv pos arg with [arg] -> let path = venv_find_var venv pos loc path_var in let path = Omake_eval.path_of_values venv pos (values_of_value venv pos path) "." in let cache = venv_cache venv in let path = Omake_cache.ls_exe_path cache path in let res = Omake_cache.exe_find_all cache path arg in let res = List.map (fun v -> ValNode v) res in let res = try let obj = venv_find_var_exn venv shell_object_var in match eval_single_value venv pos obj with ValObject obj -> let v = venv_find_field_internal_exn obj (Lm_symbol.add arg) in let kind = match eval_value venv pos v with ValPrim _ -> "Shell object method (a built-in function)" | ValFun _ -> "Shell object method (an omake function)" | _ -> "Shell object method" in ValData (arg ^ " is a " ^ kind) :: res | _ -> res with Not_found -> res in concat_array res | args -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args)))) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{rehash} * * \begin{verbatim} * rehash() * \end{verbatim} * * The \verb+rehash+ function resets all search paths. * \end{doc} *) let rehash venv pos loc args = let cache = venv_cache venv in Omake_cache.rehash cache; ValNone (* * \begin{doc} * \fun{exists-in-path} * * \begin{verbatim} * $(exists-in-path files) : String * files : String Sequence * \end{verbatim} * * The \verb+exists-in-path+ function tests whether all executables * are present in the current search path. * \end{doc} *) let exists_in_path venv pos loc args = let pos = string_pos "exists-in-path" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let test = List.for_all (fun s -> try ignore (Lm_filename_util.which s); true with Failure _ | Not_found -> false) args in val_of_bool test | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \twofuns{digest}{digest-optional} * * \begin{verbatim} * $(digest files) : String Array * file : File Array * raises RuntimeException * * $(digest-optional files) : String Array * file : File Array * \end{verbatim} * * The \verb+digest+ and \verb+digest-optional+ functions compute MD5 digests * of files. The \verb+digest+ function raises an exception if a file * does no exist. The \verb+digest-optional+ returns \verb+false+ if a * file does no exist. MD5 digests are cached. * \end{doc} *) let digest_aux fail venv pos loc args = let pos = string_pos "digest" pos in match args with [arg] -> let cache = venv_cache venv in let values = values_of_value venv pos arg in let values = List.map (fun v -> match node_value_of_value venv pos v with ValNode node -> (match Omake_cache.stat cache node with Some digest -> ValData (Lm_string_util.hexify digest) | None -> if fail then raise (OmakeException (loc_pos loc pos, StringNodeError ("file does not exist", node))) else val_false) | _ -> if fail then raise (OmakeException (loc_pos loc pos, StringValueError ("not a file", v))) else val_false) values in concat_array values | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let digest = digest_aux true let digest_optional = digest_aux false (* * \begin{doc} * \twofuns{find-in-path}{find-in-path-optional} * * \begin{verbatim} * $(find-in-path path, files) : File Array * path : Dir Array * files : String Array * raises RuntimeException * * $(find-in-path-optional path, files) : File Array * \end{verbatim} * * The \verb+find-in-path+ function searches for the files in a search * path. Only the tail of the filename is significant. The \verb+find-in-path+ * function raises an exception if the file can't be found. * The \verb+find-in-path-optional+ function silently removes * files that can't be found. * \end{doc} *) let search_path_aux fail venv pos loc args = let pos = string_pos "search-path" pos in match args with [dirs; arg] -> (* List the path *) let cache = venv_cache venv in let path = values_of_value venv pos dirs in let path = Omake_eval.path_of_values venv pos path "." in let listing = Omake_cache.ls_path cache path in (* Find each file *) let files = strings_of_value venv pos arg in let files = List.fold_left (fun files s -> let s = Filename.basename s in try let file = match Omake_cache.listing_find cache listing s with DirEntry dir -> ValDir dir | NodeEntry node -> ValNode node in file :: files with Not_found -> if fail then raise (OmakeException (loc_pos loc pos, StringStringError ("file not found", s))) else files) [] files in concat_array (List.rev files) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let find_in_path = search_path_aux true let find_in_path_optional = search_path_aux false (* * \begin{doc} * \twofuns{digest-in-path}{digest-in-path-optional} * * \begin{verbatim} * $(digest-in-path path, files) : String/File Array * path : Dir Array * files : String Array * raises RuntimeException * * $(digest-in-path-optional path, files) : String/File Array * \end{verbatim} * * The \verb+digest-in-path+ function searches for the files in a search * path and returns the file and digest for each file. Only the tail of the * filename is significant. The \verb+digest-in-path+ function raises an exception * if the file can't be found. The \verb+digest-in-path-optional+ * function silently removes elements that can't be found. * \end{doc} *) let digest_path_aux fail venv pos loc args = let pos = string_pos "digest-path" pos in match args with [dirs; arg] -> (* List the path *) let cache = venv_cache venv in let path = values_of_value venv pos dirs in let path = Omake_eval.path_of_values venv pos path "." in let listing = Omake_cache.ls_path cache path in (* Find each file *) let files = strings_of_value venv pos arg in let files = List.fold_left (fun files s -> let s = Filename.basename s in try let file = match Omake_cache.listing_find cache listing s with DirEntry dir -> ValArray [ValDir dir; ValData "directory"] | NodeEntry node -> match Omake_cache.stat cache node with Some digest -> ValArray [ValNode node; ValData (Lm_string_util.hexify digest)] | None -> raise Not_found in file :: files with Not_found -> if fail then raise (OmakeException (loc_pos loc pos, StringStringError ("file not found", s))) else files) [] files in concat_array (List.rev files) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let digest_in_path = digest_path_aux true let digest_in_path_optional = digest_path_aux false (* * Check if a file exists. * * \begin{doc} * \section{File stats} * \threefuns{file-exists}{target-exists}{target-is-proper} * * \begin{verbatim} * $(file-exists files) : String * $(target-exists files) : String * $(target-is-proper files) : String * files : File Sequence * \end{verbatim} * * The \verb+file-exists+ function checks whether the files listed exist. * The \verb+target-exists+ function is similar to the \verb+file-exists+ function. * However, it returns true if the file exists \emph{or} if it can be built * by the current project. The \verb+target-is-proper+ returns true only * if the file can be generated in the current project. * \end{doc} *) let node_exists node_exists venv pos loc args = let pos = string_pos "file-exists" pos in match args with [arg] -> let cache = venv_cache venv in let args = values_of_value venv pos arg in let b = List.for_all (fun arg -> node_exists cache venv pos (file_of_value venv pos arg)) args in val_of_bool b | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{stat-reset} * * \begin{verbatim} * $(stat-reset files) : String * files : File Sequence * \end{verbatim} * * \OMake{} uses a stat-cache. The \verb+stat-reset+ function reset the \verb+stat+ * information for the given files, forcing the \verb+stat+ information to * be recomputed the next time it is requested. * \end{doc} *) let stat_reset venv pos loc args = let pos = string_pos "stat-reset" pos in match args with [arg] -> let cache = venv_cache venv in let args = values_of_value venv pos arg in List.iter (fun arg -> Omake_cache.reset cache (file_of_value venv pos arg)) args; ValSequence [] | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Filter out the files that don't exist. * * \begin{doc} * \threefuns{filter-exists}{filter-targets}{filter-proper-targets} * * \begin{verbatim} * $(filter-exists files) : File Sequence * $(filter-targets files) : File Sequence * $(filter-proper-targets) : File Sequence * files : File Sequence * \end{verbatim} * * The \verb+filter-exists+, \verb+filter-targets+, and \verb+filter-proper-targets+ * functions remove files from a list of files. * \begin{itemize} * \item \verb+filter-exists+: the result is the list of files that exist. * \item \verb+filter-targets+: the result is the list of files either exist, or * can be built by the current project. * \item \verb+filter-proper-targets+: the result is the list of files that can * be built in the current project. * \end{itemize} * * \paragraph{Creating a ``distclean'' target} * \label{section:distclean} * * One way to create a simple ``\verb+distclean+'' rule that removes generated files from * the project is by removing all files that can be built in the current * project. * * \textbf{CAUTION:} you should be careful before you do this. The rule * removes \emph{any} file that can \emph{potentially} be reconstructed. * There is no check to make sure that the commands to rebuild the file * would actually succeed. Also, note that no file outside the * current project will be deleted. * * \begin{verbatim} * .PHONY: distclean * * distclean: * rm $(filter-proper-targets $(ls R, .)) * \end{verbatim} * * If you use CVS, you may wish to utilize the \verb+cvs_realclean+ program that * is distributed with \OMake{} in order to create a ``\verb+distclean+'' rule that would * delete all the files thare are not known to CVS. For example, if you already have a more traditional * ``\verb+clean+'' target defined in your project, and if you want the ``\verb+distclean+'' rule to * be interactive by default, you can write the following: * * \begin{verbatim} * if $(not $(defined FORCE_REALCLEAN)) * FORCE_REALCLEAN = false * export * * distclean: clean * cvs_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock * \end{verbatim} * * You can add more files that you want to always keep (such as configuration files) with the -i option. * * Similarly, if you use Subversion, you utilize the \verb+build/svn_realclean.om+ script that comes with \OMake: * * \begin{verbatim} * if $(not $(defined FORCE_REALCLEAN)) * FORCE_REALCLEAN = false * export * * open build/svn_realclean * * distclean: clean * svn_realclean $(if $(FORCE_REALCLEAN), -f) -i .omakedb -i .omakedb.lock * \end{verbatim} * * See also the \hyperfun{dependencies-proper} for an alternate method for removing intermediate files. * \end{doc} *) let filter_nodes node_exists venv pos loc args = let pos = string_pos "filter-exists" pos in match args with [arg] -> let cache = venv_cache venv in let args = values_of_value venv pos arg in let nodes = List.map (file_of_value venv pos) args in let nodes = List.filter (node_exists cache venv pos) nodes in let nodes = List.map (fun v -> ValNode v) nodes in ValArray nodes | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let file_exists venv pos loc args = node_exists (fun cache venv _ node -> Omake_cache.exists cache node) venv pos loc args let file_exists_force venv pos loc args = node_exists (fun cache venv _ node -> Omake_cache.exists cache node) venv pos loc args let filter_exists venv pos loc args = filter_nodes (fun cache venv _ node -> Omake_cache.exists cache node) venv pos loc args (* Catch UnbuildableException *) let target_is_buildable cache venv pos node = try target_is_buildable cache venv pos node with RaiseException(_, obj) when venv_instanceof obj unbuildable_exception_sym -> false let target_is_buildable_proper cache venv pos node = try target_is_buildable_proper cache venv pos node with RaiseException(_, obj) when venv_instanceof obj unbuildable_exception_sym -> false let target_exists venv pos loc args = node_exists target_is_buildable venv pos loc args let filter_targets venv pos loc args = filter_nodes target_is_buildable venv pos loc args let target_is_proper venv pos loc args = node_exists target_is_buildable_proper venv pos loc args let filter_proper_targets venv pos loc args = filter_nodes target_is_buildable_proper venv pos loc args (* * \begin{doc} * \twofuns{find-targets-in-path}{find-targets-in-path-optional} * * \begin{verbatim} * $(find-targets-in-path path files) : File Array * $(find-targets-in-path-optional path, files) : File Array * path : Dir Array * files : File Sequence * \end{verbatim} * * The \verb+find-target-in-path+ function searches for targets in the * search path. For each file \verb+file+ in the file list, the path is * searched sequentially for a directory \verb+dir+ such that the target * \verb+dir/file+ exists. If so, the file \verb+dir/file+ is returned. * * For example, suppose you are building a C project, and project * contains a subdirectory \verb+src/+ containing only the files * \verb+fee.c+ and \verb+foo.c+. The following expression * evaluates to the files \verb+src/fee.o+ \verb+src/foo.o+ even * if the files have not already been built. * * \begin{verbatim} * $(find-targets-in-path lib src, fee.o foo.o) * * # Evaluates to * src/fee.o src/foo.o * \end{verbatim} * * The \verb+find-targets-in-path+ * function raises an exception if the file can't be found. * The \verb+find-targets-in-path-optional+ function silently removes * targets that can't be found. * * \begin{verbatim} * $(find-targets-in-path-optional lib src, fee.o foo.o fum.o) * * # Evaluates to * src/fee.o src/foo.o * \end{verbatim} * * \fun{find-ocaml-targets-in-path-optional} * The \verb+find-ocaml-targets-in-path-optional+ function is very similar to the * \hyperfunn{find-targets-in-path-optional} one, except an OCaml-style search * is used, where for every element of the search path and for every name being * searched for, first the uncapitalized version is tried and if it is not buildable, * then the capitalized version is tried next. * \end{doc} *) let search_target_path_aux search venv pos loc args = let pos = string_pos "search-target-path" pos in match args with [dirs; arg] -> (* List the path *) let path = values_of_value venv pos dirs in let path = Omake_eval.path_of_values venv pos path "." in let path = List.rev (List.fold_left (fun path (_, entry) -> List.rev_append entry path) [] path) in let cache = venv_cache venv in (* Find each file *) let files = strings_of_value venv pos arg in let files = List.fold_left (search venv cache pos loc path) [] files in concat_array (List.rev files) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let rec search_target_in_path_aux fail venv cache pos loc path files name = match path with dir :: path -> let node = venv_intern_cd venv PhonyOK dir name in if target_is_buildable cache venv pos node then ValNode node :: files else search_target_in_path_aux fail venv cache pos loc path files name | [] -> if fail then raise (OmakeException (loc_pos loc pos, StringStringError ("target not found", name))) else files let rec search_ocaml_target_in_path_aux venv cache pos loc path files name1 name2 = match path with dir :: path -> let node1 = venv_intern_cd venv PhonyProhibited dir name1 in if target_is_buildable cache venv pos node1 then ValNode node1 :: files else let node2 = venv_intern_cd venv PhonyProhibited dir name2 in if target_is_buildable cache venv pos node2 then ValNode node2 :: files else search_ocaml_target_in_path_aux venv cache pos loc path files name1 name2 | [] -> files let search_ocaml_target_in_path_aux venv cache pos loc path files name = search_ocaml_target_in_path_aux venv cache pos loc path files (String.uncapitalize name) (String.capitalize name) let find_targets_in_path = search_target_path_aux (search_target_in_path_aux true) let find_targets_in_path_optional = search_target_path_aux (search_target_in_path_aux false) let find_ocaml_targets_in_path_optional = search_target_path_aux search_ocaml_target_in_path_aux (* * Get the file from a string. * * \begin{doc} * \fun{file-sort} * \index{link-order sorting} * \index{sorting (link-order)} * * \begin{verbatim} * $(file-sort order, files) : File Sequence * order : String * files : File Sequence * \end{verbatim} * * \targetref{.ORDER}% * \targetref{.BUILDORDER}% * The \verb+file-sort+ function sorts a list of filenames by * build order augmented by a set of sort rules. Sort * rules are declared using the \verb+.ORDER+ target. * The \verb+.BUILDORDER+ defines the default order. * * \verb+$(file-sort , )+ * * For example, suppose we have the following set of rules. * * \begin{verbatim} * a: b c * b: d * c: d * * .DEFAULT: a b c d * echo $(file-sort .BUILDORDER, a b c d) * \end{verbatim} * * In the case, the sorter produces the result \verb+d b c a+. * That is, a target is sorted \emph{after} its dependencies. * The sorter is frequently used to sort files that are to be linked * by their dependencies (for languages where this matters). * * There are three important restrictions to the sorter: * \begin{itemize} * \item The sorter can be used only within a rule body. * The reason for this is that \emph{all} dependencies * must be known before the sort is performed. * \item The sorter can only sort files that are buildable * in the current project. * \item The sorter will fail if the dependencies are cyclic. * \end{itemize} * * \subsubsection{sort rule} * * It is possible to further constrain the sorter through the use of * sort rules. A sort rule is declared in two steps. The * target must be listed as an \verb+.ORDER+ target; and then * a set of sort rules must be given. A sort rule defines * a pattern constraint. * * \begin{verbatim} * .ORDER: .MYORDER * * .MYORDER: %.foo: %.bar * .MYORDER: %.bar: %.baz * * .DEFAULT: a.foo b.bar c.baz d.baz * echo $(sort .MYORDER, a.foo b.bar c.baz d.baz) * \end{verbatim} * * In this example, the \verb+.MYORDER+ sort rule specifies that any * file with a suffix \verb+.foo+ should be placed after any file with * suffix \verb+.bar+, and any file with suffix \verb+.bar+ should be * placed after a file with suffix \verb+.baz+. * * In this example, the result of the sort is \verb+d.baz c.baz b.bar a.foo+. * \end{doc} *) let sort_aux sorter venv pos loc args = let pos = string_pos "file-sort" pos in let name, nodes = match args with [name; arg] -> let values = values_of_value venv pos arg in let nodes = List.map (file_of_value venv pos) values in let name = Lm_symbol.add (string_of_value venv pos name) in name, nodes | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in let env = get_env pos loc in sorter env venv pos name nodes let sort venv pos loc args = let sorter env venv pos name nodes = let nodes = Omake_build_util.sort env venv pos name nodes in ValSequence (sequence_map (fun node -> ValNode node) nodes) in sort_aux sorter venv pos loc args (* * \begin{doc} * \fun{file-check-sort} * * \begin{verbatim} * file-check-sort(files) * files : File Sequence * raises RuntimeException * \end{verbatim} * * The \verb+file-check-sort+ function checks whether a list of files * is in sort order. If so, the list is returned unchanged. * If not, the function raises an exception. * * \verb+$(file-check-sort , )+ * \end{doc} *) let check_sort venv pos loc args = let sorter env venv pos name nodes = Omake_build_util.check_sort env venv pos name nodes; ValSequence (sequence_map (fun node -> ValNode node) nodes) in sort_aux sorter venv pos loc args (************************************************************************ * Listings. *) (* * Comparisons for forting. *) let compare_dir_node dir1 node = let dir2 = Node.dir node in let cmp = Dir.compare dir1 dir2 in if cmp = 0 then -1 else cmp let compare_val_nodes node1 node2 = match node1, node2 with ValDir dir, ValNode node -> compare_dir_node dir node | ValNode node, ValDir dir -> -(compare_dir_node dir node) | ValDir dir1, ValDir dir2 -> Dir.compare dir1 dir2 | ValNode node1, ValNode node2 -> Node.compare node1 node2 | _ -> 0 let sort_val_nodes nodes = List.sort compare_val_nodes nodes (* * \begin{doc} * \section{Globbing and file listings} * \label{section:globbing} * * \OMake{} commands are ``glob-expanded'' before being executed. That is, * names may contain \emph{patterns} that are expanded to sequences of * file and directory names. The syntax follows the standard bash(1), csh(1), * syntax, with the following rules. * * \begin{itemize} * \item A \emph{pathname} is a sequence of directory and file names separated by * one of the \verb+/+ or \verb+\+ characters. For example, the following pathnames * refer to the same file: \verb+/home/jyh/OMakefile+ and \verb+/home\jyh/OMakefile+. * * \item Glob-expansion is performed on the components of a path. If a path contains * occurrences of special characters (listed below), the path is viewed as a pattern * to be matched against the actual files in the system. The expansion produces a * sequence of all file/directory names that match. * * For the following examples, suppose that a directory \verb+/dir+ contains files * named \verb+a+, \verb+-a+, \verb+a.b+, and \verb+b.c+. * * \begin{description} * \item[\texttt{*}] Matches any sequence of zero-or-more characters. For example, * the pattern \verb+/dir/a*+ expands to \verb+/dir/a /dir/aa /dir/a.b+. * * \item[\texttt{?}] Matches exactly one character. The pattern \verb+/dir/?a+ expands * the filename \verb+/dir/-a+. * * \item[\texttt{[...]}] Square brackets denote character sets and ranges * in the ASCII character set. The pattern may contain individual characters $c$ * or character ranges \texttt{$c_1$-$c_2$}. The pattern matches any of the * individual characters specified, or any characters in the range. A leading ``hat'' * inverts the send of the pattern. To specify a pattern that contains the * literal characters \verb+-+, the \verb+-+ should occur as the first character in * the range. * * \begin{center} * \begin{tabular}{ll} * Pattern & Expansion\\ * \hline * \verb+/dir/[a-b]*+ & \verb+/dir/a /dir/a.b /dir/b.c+\\ * \verb+/dir/[-a-b]*+ & \verb+/dir/a /dir/-a /dir/a.b /dir/b.c+\\ * \verb+/dir/[-a]*+ & \verb+/dir/a /dir/-a /dir/a.b+\\ * \end{tabular} * \end{center} * * \item[\texttt{\{s1,...,sN\}}] Braces indicate brace-expansion. * The braces delimit a sequence of strings separated by commas. * Given $N$ strings, the result produces $N$ copies of the pattern, * one for each of the strings $s_i$. * * \begin{center} * \begin{tabular}{ll} * Pattern & Expansion\\ * \hline * \verb+a{b,c,d}+ & \verb+ab ac ad+\\ * \verb+a{b{c,d},e}+ & \verb+abc abd ae+\\ * \verb+a{?{[A-Z],d},*}+ & \verb+a?[A-Z] a?d a*+ * \end{tabular} * \end{center} * * \item[\texttt{~}] The tilde is used to specify home directories. * Depending on your system, these might be possible expansions. * * \begin{center} * \begin{tabular}{ll} * Pattern & Expansion\\ * \hline * \verb+~jyh+ & \verb+/home/jyh+\\ * \verb+~bob/*.c+ & \verb+c:\Documents and Settings\users\bob+ * \end{tabular} * \end{center} * * \item[\\] The \verb+\+ character is both a pathname separator * and an escape character. If followed by a special glob character, * the \verb+\+ changes the sense of the following character to non-special * status. Otherwise, \verb+\+ is viewed as a pathname separator. * * \begin{center} * \begin{tabular}{ll} * Pattern & Expansion\\ * \hline * \verb+~jyh/\*+ & \verb+~jyh/*+ (\verb+*+ is literal)\\ * \verb+/dir/\[a-z?+ & \verb+/dir/[a-z?+ (\verb+[+ is literal, \verb+?+ is a pattern).\\ * \verb+c:\Program Files\[A-z]+ & \verb+c:\Program Files[A-z]*+ * \end{tabular} * \end{center} * * Note that the final case might be considered to be ambiguous (where \verb+\+ should * be viewed as a pathname separator, not as an escape for the subsequent \verb+[+ * character. If you want to avoid this ambiguity on Win32, you should use the * forward slash \verb+/+ even for Win32 pathnames (the \verb+/+ is translated * to \verb+\+ in the output). * * \begin{center} * \begin{tabular}{ll} * Pattern & Expansion\\ * \hline * \verb+c:/Program Files/[A-z]*+ & \verb+c:\Program Files\WindowsUpdate ...+ * \end{tabular} * \end{center} * \end{description} * \end{itemize} * * \fun{glob} * * \begin{verbatim} * $(glob strings) : Node Array * strings : String Sequence * $(glob options, strings) : Node Array * options : String * strings : String Sequence * \end{verbatim} * * The \verb+glob+ function performs glob-expansion. * * The . and .. entries are always ignored. * * The options are: * \begin{description} * \item[b] Do not perform \Cmd{csh}{1}-style brace expansion. * \item[e] The \verb+\+ character does not escape special characters. * \item[n] If an expansion fails, return the expansion literally instead of aborting. * \item[i] If an expansion fails, it expands to nothing. * \item[.] Allow wildcard patterns to match files beginning with a . * \item[A] Return all files, including files that begin with a . * \item[F] Match only normal files (any file that is not a directory). * \item[D] Match only directory files. * \item[C] Ignore files according to \Cmd{cvs}{1} rules. * \item[P] Include only proper subdirectories. * \end{description} * * In addition, the following variables may be defined that affect the * behavior of \verb+glob+. * * \begin{description} * \item[GLOB\_OPTIONS] A string containing default options. * \item[GLOB\_IGNORE] A list of shell patterns for filenames that \verb+glob+ should ignore. * \item[GLOB\_ALLOW] A list of shell patterns. If a file does not match a pattern in * \verb+GLOB_ALLOW+, it is ignored. * \end{description} * * The returned files are sorted by name. * \end{doc} *) let glob venv pos loc args = let pos = string_pos "glob" pos in let option, arg = match args with [arg] -> ValString "", arg | [option; arg] -> option, arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in let options = glob_options_of_env venv pos in let option = string_of_value venv pos option in let options = glob_options_of_string options option in let options = Lm_glob.create_options options in let dirs = strings_of_value venv pos arg in let root = Dir.cwd () in let cwd = venv_dir venv in let cwd_name = Dir.name root cwd in let dirs, names = glob options cwd_name dirs in let dirs = List.map (fun dir -> ValDir (Dir.chdir cwd dir)) dirs in let nodes = List.map (fun name -> ValNode (venv_intern venv PhonyProhibited name)) names in let nodes = dirs @ nodes in ValArray (sort_val_nodes nodes) (* * ls function. * * \begin{doc} * \fun{ls} * * \begin{verbatim} * $(ls files) : Node Array * files : String Sequence * $(ls options, files) : Node Array * files : String Sequence * \end{verbatim} * * The \verb+ls+ function returns the filenames in a directory. * * The . and .. entries are always ignored. * The patterns are shell-style patterns, and are glob-expanded. * * The options include all of the options to the \verb+glob+ function, * plus the following. * * \begin{description} * \item[R] Perform a recursive listing. * \end{description} * * The \verb+GLOB_ALLOW+ and \verb+GLOB_IGNORE+ variables can be defined * to control the globbing behavior. * The returned files are sorted by name. * \end{doc} *) let ls_fun_of_string s = let len = String.length s in let rec search i = if i = len then list_dirs else match s.[i] with 'R' -> list_dirs_rec | _ -> search (succ i) in search 0 let ls venv pos loc args = let pos = string_pos "ls" pos in let option, arg = match args with [arg] -> ValString "", arg | [option; arg] -> option, arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in let option = string_of_value venv pos option in let ls_fun = ls_fun_of_string option in let options = glob_options_of_env venv pos in let options = glob_options_of_string options option in let options = Lm_glob.create_options options in let dirs = strings_of_value venv pos arg in let root = Dir.cwd () in let cwd = Dir.name root (venv_dir venv) in let dirs, files1 = Lm_glob.glob options cwd dirs in let dirs = List.map (Filename.concat cwd) dirs in let files1 = List.map (Filename.concat cwd) files1 in let dirs, files2 = ls_fun options "" dirs in let dirs = List.map (fun dir -> ValDir (Dir.chdir root dir)) dirs in let nodes = List.map (fun name -> ValNode (venv_intern_cd venv PhonyProhibited root name)) (files1 @ files2) in let nodes = dirs @ nodes in ValArray (sort_val_nodes nodes) (* * The builtin function. * * \begin{doc} * \fun{subdirs} * * \begin{verbatim} * $(subdirs dirs) : Dir Array * dirs : String Sequence * $(subdirs options, dirs) : Dir Array * options : String * dirs : String Sequence * \end{verbatim} * * The \verb+subdirs+ function returns all the subdirectories * of a list of directories, recursively. * * The possible options are the following: * \begin{description} * \item[A] Return directories that begin with a . * \item[C] Ignore files according to \File{.cvsignore} rules. * \item[P] Include only proper subdirectories. * \end{description} * \end{doc} *) let subdirs venv pos loc args = let pos = string_pos "subdirs" pos in let option, arg = match args with [arg] -> ValString "", arg | [options; arg] -> options, arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let options = glob_options_of_env venv pos in let options = glob_options_of_string options (string_of_value venv pos option) in let options = Lm_glob.create_options options in let dirs = strings_of_value venv pos arg in let root = Dir.cwd () in let cwd = Dir.name root (venv_dir venv) in let dirs = List.map (Filename.concat cwd) dirs in let dirs = subdirs_of_dirs options "" dirs in let dirs = List.map (fun dir -> ValDir (Dir.chdir root dir)) dirs in ValArray dirs (************************************************************************ * Argument parsing. *) (* * Modes can be specified in two forms: * 1. As octal numbers * 2. In the symbolic format * u+rg-wx etc *) type mode_op = ModeSet | ModeAdd | ModeSub (* * Mode bit operations. *) let add_mode_bit mode mask op bits = let bits = ((bits lsl 6) lor (bits lsl 3) lor bits) land mask in match op with ModeSet -> (mode land (lnot mask)) lor bits | ModeAdd -> mode lor bits | ModeSub -> mode land (lnot bits) let add_abs_mode_bit mode op bit = match op with ModeSet | ModeAdd -> mode lor bit | ModeSub -> mode land (lnot bit) (* * Symbolic modes: * [ugoa]*[+-=][rwxXstugo]* *) let mode_of_symbolic_component mode s = let len = String.length s in let rec parse_bits mode mask op i = if i = len then mode else let mode = match s.[i] with 'r' -> add_mode_bit mode mask op 0b100 | 'w' -> add_mode_bit mode mask op 0b010 | 'x' -> add_mode_bit mode mask op 0b001 | 'X' -> if (mode land 0o111) = 0 then mode else add_mode_bit mode mask op 0b001 | 's' -> let bit = if (mask land 0o770) <> 0 then 0o6000 else if (mask land 0o700) <> 0 then 0o4000 else if (mask land 0o070) <> 0 then 0o2000 else raise (Failure "mode_of_string") in add_abs_mode_bit mode op bit | 't' -> add_abs_mode_bit mode op 0o1000 | 'u' -> add_mode_bit mode mask op ((mode lsr 6) land 7) | 'g' -> add_mode_bit mode mask op ((mode lsr 3) land 7) | 'o' -> add_mode_bit mode mask op (mode land 7) | _ -> raise (Failure "mode_of_string") in parse_bits mode mask op (succ i) in let rec parse_mode mode mask i = if i = len then mode else match s.[i] with 'u' -> parse_mode mode (mask lor 0o700) (succ i) | 'g' -> parse_mode mode (mask lor 0o070) (succ i) | 'o' -> parse_mode mode (mask lor 0o007) (succ i) | 'a' -> parse_mode mode (mask lor 0o777) (succ i) | '+' -> parse_bits mode mask ModeAdd (succ i) | '-' -> parse_bits mode mask ModeSub (succ i) | '=' -> parse_bits mode mask ModeSet (succ i) | _ -> raise (Failure "mode_of_string") in parse_mode mode 0 0 let mode_of_symbolic_string mode s = List.fold_left mode_of_symbolic_component mode (Lm_string_util.split "," s) let mode_of_string mode s = if s = "" then mode else match s.[0] with '0'..'7' -> int_of_string ("0o" ^ s) | _ -> mode_of_symbolic_string mode s (************************************************************************ * Directories. *) (* * \begin{doc} * \section{Filesystem operations} * \fun{mkdir} * * \begin{verbatim} * mkdir(mode, node...) * mode : Int * node : Node * raises RuntimeException * * mkdir(node...) * node : Node * raises RuntimeException * \end{verbatim} * * The \verb+mkdir+ function creates a directory, or a set of directories. * The following options are supported. * \begin{description} * \item[-m mode] Specify the permissions of the created directory. * \item[-p] Create parent directories if they do not exist. * \item[--] Interpret the remaining names literally. * \end{description} * \end{doc} *) type mkdir_info = { mkdir_mode : int; mkdir_parents : bool; mkdir_files : string list } let mkdir_default_info = { mkdir_mode = 0o777; mkdir_parents = false; mkdir_files = [] } let mkdir_spec = Lm_arg.MultiLetterOptions, (**) ["options", (**) ["-m", (**) StringFold (fun info s -> { info with mkdir_mode = mode_of_string info.mkdir_mode s }), "set permission mode"; "-p", (**) UnitFold (fun info -> { info with mkdir_parents = true }), "make parents as needed"; "--", (**) RestFold (fun info s -> { info with mkdir_files = s :: info.mkdir_files }), "the rest of the arguments are interpreted literally"]] let mkdir_default info s = { info with mkdir_files = s :: info.mkdir_files }, false let mkdir_usage = "Create a directory" let mkdir venv pos loc args = let pos = string_pos "mkdir" pos in let info, nodes = match args with [mode; nodes] -> let info = { mkdir_default_info with mkdir_mode = int_of_value venv pos mode } in info, nodes | [nodes] -> mkdir_default_info, nodes | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 2), List.length args))) in let argv = Array.of_list ("mkdir" :: strings_of_value venv pos nodes) in let info = try Lm_arg.fold_argv argv mkdir_spec info mkdir_default mkdir_usage with Failure s -> raise (OmakeException (loc_pos loc pos, StringError s)) in let mode = info.mkdir_mode in let mkdir = if info.mkdir_parents then Lm_filename_util.mkdirhier else Unix.mkdir in let () = try List.iter (fun s -> let name = Dir.fullname (venv_intern_dir venv s) in mkdir name mode) info.mkdir_files with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone (************************************************************************ * Stat. *) (* * \begin{doc} * \obj{Stat} * * The \verb+Stat+ object represents an information about a filesystem node, * as returned by the \verb+stat+ and \verb+lstat+ functions. * It contains the following fields. * * \begin{description} * \item[dev]: the device number. * \item[ino]: the inode number. * \item[kind]: the kind of the file, one of the following: * \verb+REG+ (regular file), * \verb+DIR+ (directory), * \verb+CHR+ (character device), * \verb+BLK+ (block device), * \verb+LNK+ (symbolic link), * \verb+FIFO+ (named pipe), * \verb+SOCK+ (socket). * \item[perm]: access rights, represented as an integer. * \item[nlink]: number of links. * \item[uid]: user id of the owner. * \item[gid]: group id of the file's group. * \item[rdev]: device minor number. * \item[size]: size in bytes. * \item[atime]: last access time, as a floating point number. * \item[mtime]: last modification time, as a floating point number. * \item[ctime]: last status change time, as a floating point number. * \end{description} * * Not all of the fields will have meaning on all operating systems. * * \twofuns{stat}{lstat} * * \begin{verbatim} * $(stat node...) : Stat * node : Node or Channel * $(lstat node...) : Stat * node : Node or Channel * raises RuntimeException * \end{verbatim} * * The \verb+stat+ functions return file information. * If the file is a symbolic link, the \verb+stat+ function refers to the * destination of the link; the \verb+lstat+ function refers to the link * itself. * \end{doc} *) (* * XXX: JYH: HACK: if the file size is too large, * represent it as a string. We may want to make * 64-bit ints a representable type. *) let max_file_size = Int64.of_int max_int let clip_size i = if i > max_file_size then ValData (Int64.to_string i) else ValInt (Int64.to_int i) let create_stat_obj obj stat = let obj = venv_add_field_internal obj st_dev_sym (ValInt stat.Unix.LargeFile.st_dev) in let obj = venv_add_field_internal obj st_ino_sym (ValInt stat.Unix.LargeFile.st_ino) in let kind = match stat.Unix.LargeFile.st_kind with Unix.S_REG -> "REG" | Unix.S_DIR -> "DIR" | Unix.S_CHR -> "CHR" | Unix.S_BLK -> "BLK" | Unix.S_LNK -> "LNK" | Unix.S_FIFO -> "FIFO" | Unix.S_SOCK -> "SOCK" in let obj = venv_add_field_internal obj st_kind_sym (ValString kind) in let obj = venv_add_field_internal obj st_perm_sym (ValInt stat.Unix.LargeFile.st_perm) in let obj = venv_add_field_internal obj st_nlink_sym (ValInt stat.Unix.LargeFile.st_nlink) in let obj = venv_add_field_internal obj st_uid_sym (ValInt stat.Unix.LargeFile.st_uid) in let obj = venv_add_field_internal obj st_gid_sym (ValInt stat.Unix.LargeFile.st_gid) in let obj = venv_add_field_internal obj st_rdev_sym (ValInt stat.Unix.LargeFile.st_rdev) in let obj = venv_add_field_internal obj st_size_sym (clip_size stat.Unix.LargeFile.st_size) in let obj = venv_add_field_internal obj st_atime_sym (ValFloat stat.Unix.LargeFile.st_atime) in let obj = venv_add_field_internal obj st_mtime_sym (ValFloat stat.Unix.LargeFile.st_mtime) in let obj = venv_add_field_internal obj st_ctime_sym (ValFloat stat.Unix.LargeFile.st_ctime) in ValObject obj let stat_aux stat_fun venv pos loc args = let pos = string_pos "stat" pos in let obj = venv_find_object_or_empty venv stat_object_var in match args with [arg] -> let args = values_of_value venv pos arg in let stats = List.map (fun arg -> let file = filename_of_value venv pos arg in let stat = try stat_fun file with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in create_stat_obj obj stat) args in concat_array stats | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let stat = stat_aux Unix.LargeFile.stat let lstat = if Sys.os_type = "Win32" then stat_aux Unix.LargeFile.stat else stat_aux Unix.LargeFile.lstat (************************************************************************ * Links. *) (* * \begin{doc} * \fun{unlink} * * \begin{verbatim} * $(unlink file...) * file : File * #(rm file...) * file : File * $(rmdir dir...) * dir : Dir * raises RuntimeException * \end{verbatim} * * The \verb+unlink+ and \verb+rm+ functions remove a file. * The \verb+rmdir+ function removes a directory. * * The following options are supported for \verb+rm+ and \verb+rmdir+. * \begin{description} * \item[-f] ignore nonexistent files, never prompt. * \item[-i] prompt before removal. * \item[-r] remove the contents of directories recursively. * \item[-v] explain what is going on. * \item[--] the rest of the values are interpreted literally. * \end{description} * \end{doc} *) let unlink_aux rm_fun venv pos loc args = let pos = string_pos "unlink" pos in match args with [arg] -> let args = values_of_value venv pos arg in let cache = venv_cache venv in let () = try List.iter (fun arg -> let name = filename_of_value venv pos arg in let node = venv_intern_cd venv PhonyProhibited (Dir.cwd ()) name in rm_fun name; ignore (Omake_cache.reset cache node)) args with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let unlink = unlink_aux Unix.unlink (* * Command-line versions. *) type rm_info = { rm_force : bool; rm_recursive : bool; rm_interactive : bool; rm_verbose : bool; rm_files : string list } let rm_default_info = { rm_force = false; rm_recursive = false; rm_interactive = false; rm_verbose = false; rm_files = [] } let rm_spec = Lm_arg.MultiLetterOptions, (**) ["options", (**) ["-f", (**) UnitFold (fun info -> { info with rm_force = true }), "force removal, never prompt"; "-i", (**) UnitFold (fun info -> { info with rm_interactive = true }), "prompt before removal"; "-r", (**) UnitFold (fun info -> { info with rm_recursive = true }), "remove the contents of directories recursively"; "-R", (**) UnitFold (fun info -> { info with rm_recursive = true }), "remove the contents of directories recursively"; "--recursive", (**) UnitFold (fun info -> { info with rm_recursive = true }), "remove the contents of directories recursively"; "-v", (**) UnitFold (fun info -> { info with rm_verbose = true }), "explain what is being done"; "--", (**) RestFold (fun info s -> { info with rm_files = s :: info.rm_files }), "the rest of the arguments are interpreted literally"]] let rm_default info s = { info with rm_files = s :: info.rm_files }, false let rm_usage = "Remove files and directories" (* * Remove a directory, with options. *) let rm_aux unlink info filename = if info.rm_force then try unlink filename with Unix.Unix_error _ -> () else let rm_flag = if info.rm_interactive then begin printf "Remove %s? " filename; flush stdout; match String.lowercase (Lm_string_util.trim (input_line stdin)) with "y" | "yes" -> true | _ -> false end else true in if rm_flag then begin if info.rm_verbose then printf "Removing %s@." filename; unlink filename end (* * Remove a directory or file recursively. *) let rec rm_rec info filename = try let names = Lm_filename_util.lsdir filename in let names = List.map (fun name -> Filename.concat filename name) names in List.iter (rm_rec info) names; rm_aux Unix.rmdir info filename with Unix.Unix_error _ -> rm_aux Unix.unlink info filename (* * Main command. *) let rm_command rm_fun venv pos loc args = let pos = string_pos "rm" pos in let argv = match args with [arg] -> Array.of_list ("rm" :: strings_of_value venv pos arg) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let info = try Lm_arg.fold_argv argv rm_spec rm_default_info rm_default rm_usage with Failure s -> raise (OmakeException (loc_pos loc pos, StringError s)) in let nodes = List.map (venv_intern venv PhonyProhibited) info.rm_files in let files = List.map Node.fullname nodes in let cache = venv_cache venv in let () = List.iter (fun node -> Omake_cache.reset cache node) nodes; try if info.rm_recursive then List.iter (rm_rec info) files else List.iter (rm_aux rm_fun info) files with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone let rmdir = rm_command Unix.rmdir let rm = rm_command Unix.unlink (* * \begin{doc} * \fun{rename} * * \begin{verbatim} * rename(old, new) * old : Node * new : Node * mv(nodes... dir) * nodes : Node Sequence * dir : Dir * cp(nodes... dir) * nodes : Node Sequence * dir : Dir * raises RuntimeException * \end{verbatim} * * The \verb+rename+ function changes the name of a file or directory named \verb+old+ * to \verb+new+. * * The \verb+mv+ function is similar, but if \verb+new+ is a directory, and it exists, * then the files specified by the sequence are moved into the directory. If not, * the behavior of \verb+mv+ is identical to \verb+rename+. The \verb+cp+ function * is similar, but the original file is not removed. * * The \verb+mv+ and \verb+cp+ functions take the following options. * \begin{description} * \item[-f] Do not prompt before overwriting. * \item[-i] Prompt before overwriting. * \item[-v] Explain what it happening. * \item[-r] Copy the contents of directories recursively. * \item[--] Interpret the remaining arguments literally. * \end{description} * \end{doc} *) let rename venv pos loc args = let pos = string_pos "rename" pos in match args with [node1; node2] -> let name1 = filename_of_value venv pos node1 in let name2 = filename_of_value venv pos node2 in let () = try Unix.rename name1 name2 with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Command-line versions. *) let rec split_last l' l = match l with [h] -> List.rev l', h | h :: l -> split_last (h :: l') l | [] -> raise (Invalid_argument "split_last") type mv_info = { mv_force : bool; mv_interactive : bool; mv_verbose : bool; mv_recursive : bool; mv_mode : string; mv_files : string list } let mv_default_info = { mv_force = false; mv_interactive = false; mv_verbose = false; mv_recursive = false; mv_mode = ""; mv_files = [] } let mv_spec = Lm_arg.MultiLetterOptions, (**) ["options", (**) ["-f", (**) UnitFold (fun info -> { info with mv_force = true }), "force removal, never prompt"; "-i", (**) UnitFold (fun info -> { info with mv_interactive = true }), "prompt before removal"; "-v", (**) UnitFold (fun info -> { info with mv_verbose = true }), "explain what is being done"; "-r", (**) UnitFold (fun info -> { info with mv_recursive = true }), "copy contents recursively"; "-m", (**) StringFold (fun info s -> { info with mv_mode = s }), "specify the permissions of the copied file"; "--", (**) RestFold (fun info s -> { info with mv_files = s :: info.mv_files }), "the rest of the arguments are interpreted literally"]] let mv_default info s = { info with mv_files = s :: info.mv_files }, false let mv_usage = "Move files and directories" (* * Prompter. *) let mv_prompt info file1 file2 = if info.mv_force then true else let flag = if info.mv_interactive && Sys.file_exists file2 then begin printf "Remove %s? @?" file2; match String.lowercase (Lm_string_util.trim (input_line stdin)) with "y" | "yes" -> true | _ -> false end else true in if flag && info.mv_verbose then printf "Copying %s to %s@." file1 file2; flag (* * The main function. *) let mv_aux mv venv pos loc args = let pos = string_pos "mv" pos in let argv = match args with [args] -> Array.of_list ("mv" :: strings_of_value venv pos args) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let info = try Lm_arg.fold_argv argv mv_spec mv_default_info mv_default mv_usage with Failure s -> raise (OmakeException (loc_pos loc pos, StringError s)) in let files = List.map (fun name -> Dir.fullname (venv_intern_dir venv name)) (List.rev info.mv_files) in let files, dir = match files with [] -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, 0))) | _ -> split_last [] files in let () = try if is_dir dir then List.iter (fun file -> mv info file (Filename.concat dir (Filename.basename file))) files else match files with [file] -> mv info file dir | _ -> raise (OmakeException (loc_pos loc pos, StringStringError ("destination directory does not exist", dir))) with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone (* * Recursive copy. *) let cp_file info file1 file2 = if mv_prompt info file1 file2 then let mode = (Unix.LargeFile.stat file1).Unix.LargeFile.st_perm in let mode = mode_of_string mode info.mv_mode in let fdr = Lm_unix_util.openfile file1 [Unix.O_RDONLY] 0 in let () = if info.mv_force then try Unix.unlink file2 with Unix.Unix_error _ -> try Unix.chmod file2 0o200 with Unix.Unix_error _ -> () in let fdw = try Lm_unix_util.openfile file2 [Unix.O_WRONLY; Unix.O_CREAT; Unix.O_TRUNC] 0o200 with exn -> Unix.close fdr; raise exn in try let max = 4096 in let buffer = String.create max in let rec loop () = let count = Unix.read fdr buffer 0 max in if count <> 0 then let rec write off = if off < count then write (off + Unix.write fdw buffer off (count - off)) in write 0; loop () in loop (); Unix.close fdr; Unix.close fdw; try Unix.chmod file2 mode with Unix.Unix_error _ -> () with exn -> Unix.close fdr; Unix.close fdw; raise exn let rec cp_rec info file1 file2 = if is_dir file1 then let subnames = Lm_filename_util.lsdir file1 in Unix.mkdir file2 0o777; List.iter (fun name -> let file1 = Filename.concat file1 name in let file2 = Filename.concat file2 name in cp_rec info file1 file2) subnames else cp_file info file1 file2 let cp_files info file1 file2 = if info.mv_recursive then cp_rec info file1 file2 else cp_file info file1 file2 let cp = mv_aux cp_files let mv_file info file1 file2 = if mv_prompt info file1 file2 then try Unix.rename file1 file2 with Unix.Unix_error _ -> cp_file info file1 file2; Unix.unlink file1 let mv = mv_aux mv_file (* * \begin{doc} * \fun{link} * * \begin{verbatim} * link(src, dst) * src : Node * dst : Node * raises RuntimeException * \end{verbatim} * * The \verb+link+ function creates a hard link named \verb+dst+ to the file * or directory \verb+src+. * * Hard links may work under Win32 when NTFS is used. * * Normally, only the superuser can create hard links to directories. * \end{doc} *) let link venv pos loc args = let pos = string_pos "link" pos in match args with [src; dst] -> let src = filename_of_value venv pos src in let dst = filename_of_value venv pos dst in let () = try Unix.link src dst with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{symlink} * * \begin{verbatim} * symlink(src, dst) * src : Node * dst : Node * raises RuntimeException * \end{verbatim} * * The \verb+symlink+ function creates a symbolic link \verb+dst+ that * points to the \verb+src+ file. * * The link name is computed relative to * the target directory. For example, the expression * \verb+$(symlink a/b, c/d)+ creates a link named * \verb+c/d -> ../a/b+. * * Symbolic links are not supported in Win32. Consider using the \verb+ln-or-cp+ * \verb+Shell+ alias for cross-platform portable linking/copying. * \end{doc} *) let symlink venv pos loc args = let pos = string_pos "symlink" pos in match args with [src; dst] -> let dst = file_of_value venv pos dst in let src = file_of_value venv pos src in let src = Node.name (Node.dir dst) src in let dst = Node.fullname dst in let () = try Unix.symlink src dst with (Unix.Unix_error _ | Invalid_argument _) as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{readlink} * * \begin{verbatim} * $(readlink node...) : Node * node : Node * \end{verbatim} * * The \verb+readlink+ function reads the value of a symbolic link. * \end{doc} *) let readlink venv pos loc args = let pos = string_pos "readlink" pos in match args with [arg] -> let args = values_of_value venv pos arg in let args = try List.map (fun arg -> let node = file_of_value venv pos arg in let dir = Node.dir node in let name = Node.fullname node in let name = Unix.readlink name in ValNode (venv_intern_cd venv PhonyProhibited dir name)) args with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in concat_array args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (************************************************************************ * Permissions. *) (* * \begin{doc} * \fun{chmod} * * \begin{verbatim} * chmod(mode, dst...) * mode : Int * dst : Node or Channel * chmod(mode dst...) * mode : String * dst : Node Sequence * raises RuntimeException * \end{verbatim} * * The \verb+chmod+ function changes the permissions of the targets. * * Options: * \begin{description} * \item[-v] Explain what is happening. * \item[-r] Change files and directories recursively. * \item[-f] Continue on errors. * \item[--] Interpret the remaining argument literally. * \end{description} * \end{doc} *) type chmod_info = { chmod_mode : string; chmod_rec : bool; chmod_force : bool; chmod_verbose : bool; chmod_files : string list } let chmod_default_info = { chmod_mode = ""; chmod_rec = false; chmod_force = false; chmod_verbose = false; chmod_files = [] } let chmod_spec = Lm_arg.MultiLetterOptions, (**) ["options", (**) ["-m", (**) StringFold (fun info s -> { info with chmod_mode = s }), "set permission mode"; "-r", (**) UnitFold (fun info -> { info with chmod_rec = true }), "change permission recursively"; "-f", (**) UnitFold (fun info -> { info with chmod_force = true }), "do not fail on errors"; "-v", (**) UnitFold (fun info -> { info with chmod_verbose = true }), "explain what is happening"; "--", (**) RestFold (fun info s -> { info with chmod_files = s :: info.chmod_files }), "the rest of the arguments are interpreted literally"]] let chmod_default info s = { info with chmod_files = s :: info.chmod_files }, false let chmod_usage = "Change file permissions" (* * Actual chmod command. *) let chmod info filename = if info.chmod_verbose then printf "Changing permissions on %s@." filename; let mode = (Unix.LargeFile.stat filename).Unix.LargeFile.st_perm in let mode = mode_of_string mode info.chmod_mode in if info.chmod_force then try Unix.chmod filename mode with Unix.Unix_error _ -> () else Unix.chmod filename mode (* * Recursive versions. *) let rec chmod_rec info filename = let subnames = try Lm_filename_util.lsdir filename with Unix.Unix_error _ -> [] in List.iter (fun name -> chmod_rec info (Filename.concat filename name)) subnames; chmod info filename (* * The command-line version. *) let chmod venv pos loc args = let pos = string_pos "chmod" pos in let info, nodes = match args with [mode; nodes] -> let info = { chmod_default_info with chmod_mode = string_of_value venv pos mode } in info, nodes | [nodes] -> chmod_default_info, nodes | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 2), List.length args))) in let argv = Array.of_list ("chmod" :: strings_of_value venv pos nodes) in let info = try Lm_arg.fold_argv argv chmod_spec info chmod_default chmod_usage with Failure s -> raise (OmakeException (loc_pos loc pos, StringError s)) in let info, files = if info.chmod_mode <> "" then info, info.chmod_files else match List.rev info.chmod_files with mode :: rest -> let info = { info with chmod_mode = mode } in info, rest | [] -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let files = List.map (fun name -> Dir.fullname (venv_intern_dir venv name)) files in let () = if info.chmod_rec then List.iter (chmod_rec info) files else List.iter (chmod info) files in ValNone (* * \begin{doc} * \fun{chown} * * \begin{verbatim} * chown(uid, gid, node...) * uid : Int * gid : Int * node : Node or Channel * chown(uid, node...) * uid : Int * node : Node or Channel * raises RuntimeException * \end{verbatim} * * The \verb+chown+ function changes the user and group id of the file. * If the \verb+gid+ is not specified, it is not changed. If either * id is -1, that id is not changed. * \end{doc} *) let chown venv pos loc args = let pos = string_pos "chown" pos in let uid, gid, nodes = match args with [uid; nodes] -> uid, None, nodes | [uid; gid; nodes] -> uid, Some gid, nodes | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (2, 3), List.length args))) in let uid = int_of_value venv pos uid in let gid = match gid with Some gid -> int_of_value venv pos gid | None -> -1 in let nodes = values_of_value venv pos nodes in let () = try List.iter (fun node -> Unix.chown (filename_of_value venv pos node) uid gid) nodes with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone (* * \begin{doc} * \fun{truncate} * * \begin{verbatim} * truncate(length, node...) * length : Int * node : Node or Channel * raises RuntimeException * \end{verbatim} * * The \verb+truncate+ function truncates a file to the given length. * \end{doc} *) let truncate venv pos loc args = let pos = string_pos "truncate" pos in let len, nodes = match args with [len; nodes] -> len, nodes | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in let len = int_of_value venv pos len in let nodes = values_of_value venv pos nodes in let () = try List.iter (fun node -> Unix.truncate (filename_of_value venv pos node) len) nodes with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone (* * \begin{doc} * \fun{umask} * * \begin{verbatim} * $(umask mode) : Int * mode : Int * raises RuntimeException * \end{verbatim} * * Sets the file mode creation mask. * The previous mask is returned. * This value is not scoped, changes have global effect. * \end{doc} *) let umask venv pos loc args = let pos = string_pos "umask" pos in match args with [arg] -> let mode = int_of_value venv pos arg in let mask = try Unix.umask mode with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValInt mask | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \section{vmount} * \fun{vmount} * * \begin{verbatim} * vmount(src, dst) * src, dst : Dir * vmount(flags, src, dst) * flags : String * src, dst : Dir * \end{verbatim} * * ``Mount'' the \verb+src+ directory on the \verb+dst+ directory. This is * a virtual mount, changing the behavior of the \verb+$(file ...)+ function. * When the \verb+$(file str)+ function is used, the resulting file is taken * relative to the \verb+src+ directory if the file exists. Otherwise, the * file is relative to the current directory. * * The main purpose of the \verb+vmount+ function is to support multiple * builds with separate configurations or architectures. * * The options are as follows. * \begin{description} * \item[l] Create symbolic links to files in the \verb+src+ directory. * \item[c] Copy files from the \verb+src+ directory. * \end{description} * * Mount operations are scoped. * \end{doc} *) type vmount_flags = MountForce let vmount_flags pos loc s = let pos = string_pos "vmount_flags" pos in let len = String.length s in let rec collect local_flags mount_flags i = if i = len then local_flags, mount_flags else let local_flags, mount_flags = match s.[i] with 'l' -> local_flags, MountLink :: mount_flags | 'c' -> local_flags, MountCopy :: mount_flags | 'f' -> MountForce :: local_flags, mount_flags | '-' | ' ' -> local_flags, mount_flags | c -> raise (OmakeException (loc_pos loc pos, StringStringError ("illegal vmount option", String.make 1 c))) in collect local_flags mount_flags (succ i) in collect [] [] 0 (* * Refer to all the files in the source directory, so that * they get copied. *) let vmount_touch_files venv pos src dst = let _pos = string_pos "vmount_touch_files" pos in let src_name = Dir.fullname src in let dst_name = Dir.name src dst in let options = Lm_glob.create_options [GlobIgnore [dst_name]] in let _, files = list_dirs_rec options src_name ["."] in List.iter (fun name -> ignore (venv_intern_cd venv PhonyProhibited dst name)) files (* * Add the mount. *) let vmount venv pos loc args = let pos = string_pos "vmount" pos in let flags, src, dst = match args with [src; dst] -> "", src, dst | [flags; src; dst] -> string_of_value venv pos flags, src, dst | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (2, 3), List.length args))) in let local_flags, mount_flags = vmount_flags pos loc flags in let src = dir_of_value venv pos src in let dst = dir_of_value venv pos dst in let venv = venv_mount venv mount_flags src dst in if List.mem MountForce local_flags then vmount_touch_files venv pos src dst; venv, ValNone (* * \begin{doc} * \fun{add-project-directories} * * \begin{verbatim} * add-project-directories(dirs) * dirs : Dir Array * \end{verbatim} * * Add the directories to the set of directories that omake considers to be part * of the project. This is mainly used to avoid omake complaining that the * current directory is not part of the project. * \end{doc} *) let add_project_directories venv pos loc args = let pos = string_pos "add-project-directories" pos in match args with [arg] -> let values = values_of_value venv pos arg in List.iter (fun v -> venv_add_explicit_dir venv (dir_of_value venv pos v)) values; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{remove-project-directories} * * \begin{verbatim} * remove-project-directories(dirs) * dirs : Dir Array * \end{verbatim} * * Removed the directories from the set of directories that omake considers to be part * of the project. This is mainly used to cancel a \verb+.SUBDIRS+ from including * a directory if it is determined that the directory does not need to be compiled. * \end{doc} *) let remove_project_directories venv pos loc args = let pos = string_pos "add-project-directories" pos in match args with [arg] -> let values = values_of_value venv pos arg in List.iter (fun v -> venv_remove_explicit_dir venv (dir_of_value venv pos v)) values; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (************************************************************************ * Tables. *) let () = let builtin_funs = [true, "file-sort", sort, ArityExact 2; true, "file-check-sort", check_sort, ArityExact 2; true, "ls", ls, ArityRange (1, 2); true, "glob", glob, ArityRange (1, 2); true, "subdirs", subdirs, ArityRange (1, 2); true, "basename", basename, ArityExact 1; true, "dirname", dirname, ArityExact 1; true, "homename", homename, ArityExact 1; true, "rootname", rootname, ArityExact 1; true, "fullname", fullname, ArityExact 1; true, "absname", absname, ArityExact 1; true, "suffix", suffix, ArityExact 1; true, "tmpfile", tmpfile, ArityRange (1, 2); true, "file", file, ArityExact 1; true, "dir", dir, ArityExact 1; true, "which", which, ArityExact 1; true, "where", where, ArityExact 1; true, "exists-in-path", exists_in_path, ArityExact 1; true, "in", ind, ArityExact 2; true, "dirof", dirof, ArityExact 1; true, "stat-reset", stat_reset, ArityExact 1; true, "file-exists", file_exists, ArityExact 1; true, "filter-exists", filter_exists, ArityExact 1; true, "target-exists", target_exists, ArityExact 1; true, "filter-targets", filter_targets, ArityExact 1; true, "target-is-proper", target_is_proper, ArityExact 1; true, "filter-proper-targets", filter_proper_targets, ArityExact 1; true, "stat", stat, ArityExact 1; true, "lstat", lstat, ArityExact 1; true, "unlink", unlink, ArityExact 1; true, "rename", rename, ArityExact 2; true, "readlink", readlink, ArityExact 1; true, "truncate", truncate, ArityExact 2; true, "mkdir", mkdir, ArityRange (1, 2); true, "rmdir", rmdir, ArityExact 1; true, "rm", rm, ArityExact 1; true, "mv", mv, ArityExact 1; true, "cp", cp, ArityExact 1; true, "link", link, ArityExact 2; true, "symlink", symlink, ArityExact 2; true, "chmod", chmod, ArityExact 2; true, "chown", chown, ArityRange (2, 3); true, "umask", umask, ArityExact 1; true, "digest", digest, ArityExact 1; true, "digest-optional", digest_optional, ArityExact 1; true, "find-in-path", find_in_path, ArityExact 2; true, "find-in-path-optional", find_in_path_optional, ArityExact 2; true, "digest-in-path", digest_in_path, ArityExact 2; true, "digest-in-path-optional", digest_in_path_optional, ArityExact 2; true, "rehash", rehash, ArityExact 0; true, "find-targets-in-path", find_targets_in_path, ArityExact 2; true, "find-targets-in-path-optional", find_targets_in_path_optional, ArityExact 2; true, "find-ocaml-targets-in-path-optional", find_ocaml_targets_in_path_optional, ArityExact 2; true, "add-project-directories", add_project_directories, ArityExact 1; true, "remove-project-directories", remove_project_directories, ArityExact 1] in let builtin_kfuns = [true, "vmount", vmount, ArityRange (2, 3); ] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_io_fun.ml0000664000152300015230000020763010647456313020124 0ustar jyhjyh(* * \begin{doc} * \section{Higher-level IO functions} * * \subsection{Regular expressions} * \index{regular expressions} * * Many of the higher-level functions use regular expressions. * Regular expressions are defined by strings with syntax nearly identical * to \Cmd{awk}{1}. * * Strings may contain the following character constants. * * \begin{itemize} * \item \verb+\\+ : a literal backslash. * \item \verb+\a+ : the alert character \verb+^G+. * \item \verb+\b+ : the backspace character \verb+^H+. * \item \verb+\f+ : the formfeed character \verb+^L+. * \item \verb+\n+ : the newline character \verb+^J+. * \item \verb+\r+ : the carriage return character \verb+^M+. * \item \verb+\t+ : the tab character \verb+^I+. * \item \verb+\v+ : the vertical tab character. * \item \verb+\xhh...+ : the character represented by the string * of hexadecimal digits \verb+h+. All valid hexadecimal digits * following the sequence are considered to be part of the sequence. * \item \verb+\ddd+ : the character represented by 1, 2, or 3 octal * digits. * \end{itemize} * * Regular expressions are defined using the special characters \verb+.\^$[(){}*?++. * * \begin{itemize} * \item \verb+c+ : matches the literal character \verb+c+ if \verb+c+ is not * a special character. * \item \verb+\c+ : matches the literal character \verb+c+, even if \verb+c+ * is a special character. * \item \verb+.+ : matches any character, including newline. * \item \verb+^+ : matches the beginning of a line. * \item \verb+$+ : matches the end of line. * \item \verb+[abc...]+ : matches any of the characters \verb+abc...+ * \item \verb+[^abc...]+ : matches any character except \verb+abc...+ * \item \verb+r1|r2+ : matches either \verb+r1+ or \verb+r2+. * \item \verb+r1r2+ : matches \verb+r1+ and then \verb+r2+. * \item \verb+r++ : matches one or more occurrences of \verb+r+. * \item \verb+r*+ : matches zero or more occurrences of \verb+r+. * \item \verb+r?+ : matches zero or one occurrence of \verb+r+. * \item \verb+(r)+ : parentheses are used for grouping; matches \verb+r+. * \item \verb+\(r\)+ : also defines grouping, but the expression matched * within the parentheses is available to the output processor * through one of the variables \verb+$1+, \verb+$2+, ... * \item \verb+r{n}+ : matches exactly \verb+n+ occurrences of \verb+r+. * \item \verb+r{n,}+ : matches \verb+n+ or more occurrences of \verb+r+. * \item \verb+r{n,m}+ : matches at least \verb+n+ occurrences of \verb+r+, * and no more than \verb+m+ occurrences. * \item \verb+\y+: matches the empty string at either the beginning or * end of a word. * \item \verb+\B+: matches the empty string within a word. * \item \verb+\<+: matches the empty string at the beginning of a word. * \item \verb+\>+: matches the empty string at the end of a word. * \item \verb+\w+: matches any character in a word. * \item \verb+\W+: matches any character that does not occur within a word. * \item \verb+\`+: matches the empty string at the beginning of a file. * \item \verb+\'+: matches the empty string at the end of a file. * \end{itemize} * * Character classes can be used to specify character sequences * abstractly. Some of these sequences can change depending on your LOCALE. * * \begin{itemize} * \item \verb+[:alnum:]+ Alphanumeric characters. * \item \verb+[:alpha:]+ Alphabetic characters. * \item \verb+[:lower:]+ Lowercase alphabetic characters. * \item \verb+[:upper:]+ Uppercase alphabetic characters. * \item \verb+[:cntrl:]+ Control characters. * \item \verb+[:digit:]+ Numeric characters. * \item \verb+[:xdigit:]+ Numeric and hexadecimal characters. * \item \verb+[:graph:]+ Characters that are printable and visible. * \item \verb+[:print:]+ Characters that are printable, whether they are visible or not. * \item \verb+[:punct:]+ Punctuation characters. * \item \verb+[:blank:]+ Space or tab characters. * \item \verb+[:space:]+ Whitespace characters. * \end{itemize} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] *) open Lm_debug open Lm_printf open Lm_parser open Lm_location open Lm_symbol open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_eval open Omake_node open Omake_value open Omake_lexer open Omake_parser open Omake_printf open Omake_symbol open Omake_builtin open Omake_value_type open Omake_value_print open Omake_builtin_util open Omake_builtin_type module Pos = MakePos (struct let name = "Omake_builtin_io_fun" end) open Pos let debug_parsing = create_debug (**) { debug_name = "parsing"; debug_description = "Debug parsing operations"; debug_value = false } (* * Concatenate files into a string. * * \begin{doc} * \fun{cat} * * \begin{verbatim} * cat(files) : Sequence * files : File or InChannel Sequence * \end{verbatim} * * The \verb+cat+ function concatenates the output from multiple files * and returns it as a string. * \end{doc} *) let cat venv pos loc args = let pos = string_pos "cat" pos in match args with [arg] -> let names = values_of_value venv pos arg in let buf = Buffer.create 1024 in List.iter (fun name -> try let inp, close_flag = in_channel_of_any_value venv pos name in let inx = venv_find_channel venv pos inp in let rec copy () = let c = Lm_channel.input_char inx in Buffer.add_char buf c; copy () in let () = try copy () with End_of_file -> () in if close_flag then venv_close_channel venv pos inp with Sys_error _ -> let print_error buf = fprintf buf "unable to open file: %a" pp_print_value name in raise (OmakeException (loc_pos loc pos, LazyError print_error))) names; ValString (Buffer.contents buf) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Grep takes some flags. * * \begin{doc} * \fun{grep} * * \begin{verbatim} * grep(pattern) : String # input from stdin, default options * pattern : String * grep(pattern, files) : String # default options * pattern : String * files : File Sequence * grep(options, pattern, files) : String * options : String * pattern : String * files : File Sequence * \end{verbatim} * * The \verb+grep+ function searches for occurrences of a regular * expression \verb+pattern+ in a set of files, and prints lines that match. * This is like a highly-simplified version of \Cmd{grep}{1}. * * The options are: * \begin{description} * \item[q] If specified, the output from \verb+grep+ is not displayed. * \item[h] If specified, output lines will not include the filename (default, when only one input * file is given). * \item[n] If specified, output lines include the filename (default, when more than one input file * is given). * \item[v] If specified, search for lines without a match instead of lines with a match, * \end{description} * * The \verb+pattern+ is a regular expression. * * If successful (\verb+grep+ found a match), the function returns \verb+true+. * Otherwise, it returns \verb+false+. * \end{doc} *) type grep_flag = GrepQuiet | GrepPrint | GrepNoPrint | GrepNoMatch let grep_flags pos loc s = let len = String.length s in let rec collect flags i = if i = len then flags else let flag = match s.[i] with 'q' -> GrepQuiet | 'n' -> GrepPrint | 'v' -> GrepNoMatch | 'h' -> GrepNoPrint | c -> raise (OmakeException (loc_pos loc pos, StringStringError ("illegal grep option", String.make 1 c))) in collect (flag::flags) (succ i) in collect [] 0 let grep venv pos loc args = let pos = string_pos "grep" pos in let outx = channel_of_var venv pos loc stdout_var in let flags, pattern, files = match args with [pattern] -> ValNone, pattern, ValNone | [pattern; files] -> ValNone, pattern, files | [flags; pattern; files] -> flags, pattern, files | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 3), List.length args))) in let flags = grep_flags pos loc (string_of_value venv pos flags) in let pattern = string_of_value venv pos pattern in let pattern = try lexer_of_string pattern with Failure err -> let msg = sprintf "Mailformed regular expression '%s'" pattern in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in let files = values_of_value venv pos files in let flags, files = match files with [] -> flags, [venv_find_var venv pos loc stdin_var] | [_] -> flags, files | _::_::_ -> (if List.mem GrepNoPrint flags then flags else GrepPrint :: flags), files in let verbose = not (List.mem GrepQuiet flags) in let print = List.mem GrepPrint flags in let matches = not (List.mem GrepNoMatch flags) in (* Grep against a single line *) let grep_line file found line = let b = ((lexer_matches pattern line) == matches) in if b && verbose then begin if print then begin Lm_channel.output_string outx file; Lm_channel.output_char outx ':' end; Lm_channel.output_string outx line; Lm_channel.output_char outx '\n' end; found || b in (* Open the file *) let grep_file found s = let filename = string_of_value venv pos s in let inp, close_flag = in_channel_of_any_value venv pos s in let inx = venv_find_channel venv pos inp in let rec search found = let text = try Some (Lm_channel.input_line inx) with End_of_file -> None in match text with Some line' -> search (grep_line filename found line') | None -> found in let found = search found in if close_flag then venv_close_channel venv pos inp; found in let b = List.fold_left grep_file false files in Lm_channel.flush outx; val_of_bool b let builtin_grep venv pos loc args = let pos = string_pos "builtin-grep" pos in let args = match args with [arg] -> values_of_value venv pos arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in (* Eat options *) let flags, pattern, files = let rec collect flags args = match args with arg :: args -> (match string_of_value venv pos arg with "-q" -> collect ("q" ^ flags) args | "-n" -> collect ("n" ^ flags) args | "-v" -> collect ("v" ^ flags) args | "-h" -> collect ("h" ^ flags) args | pattern -> flags, pattern, args) | [] -> raise (OmakeException (loc_pos loc pos, StringError "no pattern specified")) in collect "" args in grep venv pos loc [ValData flags; ValData pattern; ValArray files] (* * \begin{doc} * \fun{scan} * * \begin{verbatim} * scan(input-files) * case string1 * body1 * case string2 * body2 * ... * default * bodyd * \end{verbatim} * * The \verb+scan+ function provides input processing in command-line form. * The function takes file/filename arguments. If called with no * arguments, the input is taken from \verb+stdin+. If arguments are provided, * each specifies an \verb+InChannel+, or the name of a file for input. * Output is always to \verb+stdout+. * * The \verb+scan+ function operates by reading the input one line at a time, * and processing it according to the following algorithm. * * For each line, * the record is first split into fields, and * the fields are bound to the variables \verb+$1, $2, ...+. The variable * \verb+$0+ is defined to be the entire line, and \verb+$*+ is an array * of all the field values. The \verb+$(NF)+ variable is defined to be the number * of fields. * * Next, a case expression is selected. If \verb+string_i+ matches the token \verb+$1+, * then \verb+body_i+ is evaluated. If the body ends in an \verb+export+, the state * is passed to the next clause. Otherwise the value is discarded. * * For example, here is an \verb+scan+ function that acts as a simple command processor. * * \begin{verbatim} * calc() = * i = 0 * scan(script.in) * case print * println($i) * case inc * i = $(add $i, 1) * export * case dec * i = $(sub $i, 1) * export * case addconst * i = $(add $i, $2) * export * default * eprintln($"Unknown command: $1") * \end{verbatim} * * The \verb+scan+ function also supports several options. * * \begin{verbatim} * scan(options, files) * ... * \end{verbatim} * * \begin{description} * \item[A] Parse each line as an argument list, where arguments * may be quoted. For example, the following line has three words, * ``\verb+ls+'', ``\verb+-l+'', ``\verb+Program Files+''. * * \begin{verbatim} * ls -l "Program Files" * \end{verbatim} * \item[O] Parse each line using white space as the separator, using the * usual \OMake{} algorithm for string parsing. This is the default. * \item[x] Once each line is split, reduce each word using the * hex representation. This is the usual hex representation used * in URL specifiers, so the string ``Program Files'' may be * alternately represented in the form Program%20Files or * Program+Files. * \end{description} * * Note, if you want to redirect the output to a file, the easiest way is to * redefine the \verb+stdout+ variable. The \verb+stdout+ variable is scoped the * same way as other variables, so this definition does not affect the meaning of * \verb+stdout+ outside the \verb+calc+ function. * * \begin{verbatim} * calc() = * stdout = $(fopen script.out, w) * scan(script.in) * ... * close(stdout) * \end{verbatim} * \end{doc} *) (* * Scanner options. *) type parse_option = ParseArgs | ParseWords type rewrite_option = RewriteHex | RewriteNone let scan_options venv pos loc options s = let len = String.length s in let rec collect ((poption, roption) as options) i = if i = len then options else let options = match s.[i] with 'A' -> ParseArgs, roption | 'O' -> ParseWords, roption | 'x' -> poption, RewriteHex | c -> raise (OmakeException (loc_pos loc pos, StringStringError ("illegal option", s))) in collect options (succ i) in collect options 0 let scan_options venv pos loc options = List.fold_left (scan_options venv pos loc) (ParseWords, RewriteNone) (strings_of_value venv pos options) (* * The arguments. *) let scan_args venv pos loc args = let pos = string_pos "scan_args" pos in let cases, options, files = match args with [ValCases cases] -> cases, ValNone, venv_find_var venv pos loc stdin_var | [ValCases cases; files] -> cases, ValNone, files | [ValCases cases; options; files] -> cases, options, files | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let poptions, roptions = scan_options venv pos loc options in cases, poptions, roptions, values_of_value venv pos files (* * Awk the value. *) let scan venv pos loc args = let pos = string_pos "scan" pos in let cases, token_mode, rewrite_mode, files = scan_args venv pos loc args in (* Get lexers for all the cases *) let cases, def = List.fold_left (fun (cases, def) (v, test, body, export) -> if Lm_symbol.eq v case_sym then let s = string_of_value venv pos test in let cases = SymbolTable.filter_add cases (Lm_symbol.add s) (fun b -> match b with Some _ -> raise (OmakeException (loc_pos loc pos, StringVarError ("duplicate case", v))) | None -> body, export) in cases, def else if Lm_symbol.eq v default_sym then match def with Some _ -> raise (OmakeException (loc_pos loc pos, StringError "duplicate default case")) | None -> cases, Some (body, export) else raise (OmakeException (loc_pos loc pos, StringVarError ("unknown case", v)))) (SymbolTable.empty, None) cases in (* Split a line into words *) let collect_words_argv line = let words = match token_mode with ParseArgs -> Lm_string_util.parse_args line | ParseWords -> strings_of_value venv pos (ValString line) in match rewrite_mode with RewriteHex -> List.map Lm_string_util.decode_hex_name words | RewriteNone -> words in (* Select a case and run it *) let eval_case venv words = let body = match words with command :: _ -> (try Some (SymbolTable.find cases (Lm_symbol.add command)) with Not_found -> def) | [] -> def in match body with Some (body, export) -> let venv_new, _ = eval_sequence_exp venv pos body in add_exports venv venv_new pos export | None -> venv in (* Read the file a line at a time *) let rec line_loop venv inx = let text = try Some (Lm_channel.input_line inx) with End_of_file -> None in match text with Some line -> let words = collect_words_argv line in let venv = venv_add_match venv line words in let venv = eval_case venv words in line_loop venv inx | None -> venv in let rec file_loop venv args = match args with arg :: args -> let inp, close_in = in_channel_of_any_value venv pos arg in let inx = venv_find_channel venv pos inp in let venv = try line_loop venv inx with exn when close_in -> venv_close_channel venv pos inp; raise exn in if close_in then venv_close_channel venv pos inp; file_loop venv args | [] -> venv in file_loop venv files, ValNone (* * \begin{doc} * \fun{awk} * * \begin{verbatim} * awk(input-files) * case pattern1: * body1 * case pattern2: * body2 * ... * default: * bodyd *\end{verbatim} * * or * * \begin{verbatim} * awk(options, input-files) * case pattern1: * body1 * case pattern2: * body2 * ... * default: * bodyd * \end{verbatim} * * The \verb+awk+ function provides input processing similar to \Cmd{awk}{1}, * but more limited. The \verb+input-files+ argument is a sequence of values, * each specifies an \verb+InChannel+, or the name of a file for input. * If called with no options and no file arguments, the input is taken from \verb+stdin+. * Output is always to \verb+stdout+. * * The variables \verb+RS+ and \verb+FS+ define record and field separators * as regular expressions. * The default value of \verb+RS+ is the regular expression \verb+\r|\n|\r\n+. * The default value of \verb+FS+ is the regular expression \verb+[ \t]++. * * The \verb+awk+ function operates by reading the input one record at a time, * and processing it according to the following algorithm. * * For each line, * the record is first split into fields using the field separator \verb+FS+, and * the fields are bound to the variables \verb+$1, $2, ...+. The variable * \verb+$0+ is defined to be the entire line, and \verb+$*+ is an array * of all the field values. The \verb+$(NF)+ variable is defined to be the number * of fields. * * Next, the cases are evaluated in order. * For each case, if the regular expression \verb+pattern_i+ matches the record \verb+$0+, * then \verb+body_i+ is evaluated. If the body ends in an \verb+export+, the state * is passed to the next clause. Otherwise the value is discarded. If the regular * expression contains \verb+\(r\)+ expression, those expression override the * fields \verb+$1, $2, ...+. * * For example, here is an \verb+awk+ function to print the text between two * delimiters \verb+\begin{}+ and \verb+\end{}+, where the \verb++ * must belong to a set passed as an argument to the \verb+filter+ function. * * \begin{verbatim} * filter(names) = * print = false * * awk(Awk.in) * case $"^\\end\{\([:alpha:]+\)\}" * if $(mem $1, $(names)) * print = false * export * export * default * if $(print) * println($0) * case $"^\\begin\{\([:alpha:]+\)\}" * print = $(mem $1, $(names)) * export * \end{verbatim} * * Note, if you want to redirect the output to a file, the easiest way is to * redefine the \verb+stdout+ variable. The \verb+stdout+ variable is scoped the * same way as other variables, so this definition does not affect the meaning of * \verb+stdout+ outside the \verb+filter+ function. * * \begin{verbatim} * filter(names) = * stdout = $(fopen file.out, w) * awk(Awk.in) * ... * close(stdout) * \end{verbatim} * * Options. * \begin{description} * \item[b] ``Break'' when evaluating cases. Only the first case that matches will be selected. * \end{description} * * The \hyperfun{break} can be used to abort the loop, * exiting the \verb+awk+ function immediately. * \end{doc} *) (* * Evaluate all the cases that match. *) let rec awk_eval_cases venv pos loc break line cases = match cases with (None, body, export) :: cases -> let venv_new, _ = eval_sequence_exp venv pos body in let venv = add_exports venv venv_new pos export in if break then venv else awk_eval_cases venv pos loc break line cases | (Some lex, body, export) :: cases -> let channel = Lm_channel.of_string line in let venv, stop = match Lexer.search lex channel with Some (_, _, _, _, args) -> let venv = venv_add_match_args venv args in let venv_new, _ = eval_sequence_exp venv pos body in let venv = add_exports venv venv_new pos export in venv, break | None -> venv, false in if stop then venv else awk_eval_cases venv pos loc break line cases | [] -> venv (* * The arguments. *) let awk_args venv pos loc args = let pos = string_pos "awk_args" pos in match args with [ValCases cases] -> cases, [venv_find_var venv pos loc stdin_var] | [ValCases cases; files] -> cases, values_of_value venv pos files | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 2), List.length args))) let awk_option_args venv pos loc args = let pos = string_pos "awk_args" pos in match args with [ValCases cases] -> cases, "", [venv_find_var venv pos loc stdin_var] | [ValCases cases; files] -> cases, "", values_of_value venv pos files | [ValCases cases; options; files] -> cases, string_of_value venv pos options, values_of_value venv pos files | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 3), List.length args))) type awk_flag = AwkBreak let awk_flags pos loc s = let len = String.length s in let rec collect flags i = if i = len then flags else let flag = match s.[i] with 'b' -> AwkBreak | c -> raise (OmakeException (loc_pos loc pos, StringStringError ("illegal awk option", String.make 1 c))) in collect (flag :: flags) (succ i) in collect [] 0 (* * Awk the value. *) let awk venv pos loc args = let pos = string_pos "awk" pos in let cases, flags, files = awk_option_args venv pos loc args in let flags = awk_flags pos loc flags in let break = List.mem AwkBreak flags in (* Separator expressions *) let rs = try string_of_value venv pos (venv_find_var_exn venv rs_var) with Not_found -> "\r|\n|\r\n" in let fs = try string_of_value venv pos (venv_find_var_exn venv fs_var) with Not_found -> "[ \t]+" in let rs_lex = try lexer_of_string rs with Failure err -> let msg = sprintf "Malformed regular expression '%s'" rs in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in let fs_lex = try lexer_of_string fs with Failure err -> let msg = sprintf "Malformed regular expression '%s'" fs in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in (* Get lexers for all the cases *) let cases = List.map (fun (v, test, body, export) -> if Lm_symbol.eq v case_sym then let s = string_of_value venv pos test in let _, lex = try Lexer.add_clause Lexer.empty v s with Failure err -> let msg = sprintf "Malformed regular expression '%s'" s in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in Some lex, body, export else if Lm_symbol.eq v default_sym then None, body, export else raise (OmakeException (loc_pos loc pos, StringVarError ("unknown case", v)))) cases in (* Split a line into words *) let collect_words line = let channel = Lm_channel.of_string line in let rec collect words = match Lexer.searchto fs_lex channel with Lexer.LexEOF -> List.rev words | Lexer.LexSkipped (_, skipped) | Lexer.LexMatched (_, _, skipped, _, _) -> collect (skipped :: words) in collect [] in (* Read the file a line at a time *) let rec line_loop venv inx lineno = match Lexer.searchto rs_lex inx with Lexer.LexEOF -> venv | Lexer.LexSkipped (_, line) | Lexer.LexMatched (_, _, line, _, _) -> (* Split into words *) let words = collect_words line in let venv = venv_add_match venv line words in let venv = venv_add_var venv fnr_var (ValInt lineno) in let venv = awk_eval_cases venv pos loc break line cases in line_loop venv inx (lineno + 1) in let rec file_loop venv args = match args with arg :: args -> let inp, close_in = in_channel_of_any_value venv pos arg in let inx = venv_find_channel venv pos inp in let venv = venv_add_var venv filename_var (ValData (Lm_channel.name inx)) in let venv = try line_loop venv inx 1 with exn when close_in -> venv_close_channel venv pos inp; raise exn in if close_in then venv_close_channel venv pos inp; file_loop venv args | [] -> venv in let venv = try file_loop venv files with Break (_, venv) -> venv in venv, ValNone (* * \begin{doc} * \fun{fsubst} * * \begin{verbatim} * fsubst(files) * case pattern1 [options] * body1 * case pattern2 [options] * body2 * ... * default * bodyd * \end{verbatim} * * The \verb+fsubst+ function provides a \Cmd{sed}{1}-like substitution * function. Similar to \verb+awk+, if \verb+fsubst+ is called with no * arguments, the input is taken from \verb+stdin+. If arguments are provided, * each specifies an \verb+InChannel+, or the name of a file for input. * * The \verb+RS+ variable defines a regular expression that determines a record separator, * The default value of \verb+RS+ is the regular expression \verb+\r|\n|\r\n+. * * The \verb+fsubst+ function reads the file one record at a time. * * For each record, the cases are evaluated in order. Each case defines * a substitution from a substring matching the \verb+pattern+ to * replacement text defined by the body. * * Currently, there is only one option: \verb+g+. * If specified, each clause specifies a global replacement, * and all instances of the pattern define a substitution. * Otherwise, the substitution is applied only once. * * Output can be redirected by redefining the \verb+stdout+ variable. * * For example, the following program replaces all occurrences of * an expression \verb+word.+ with its capitalized form. * * \begin{verbatim} * section * stdout = $(fopen Subst.out, w) * fsubst(Subst.in) * case $"\<\([[:alnum:]]+\)\." g * value $(capitalize $1). * close(stdout) * \end{verbatim} * \end{doc} *) (* * Substitution options. *) let subst_global_opt = 1 let subst_options venv pos loc options s = let len = String.length s in let rec collect options i = if i = len then options else let flag = match s.[i] with 'g' -> subst_global_opt | c -> raise (OmakeException (loc_pos loc pos, StringStringError ("illegal option", s))) in collect (options lor flag) (succ i) in collect options 0 (* * Sed function performs a substitution line-by-line. *) let rec subst_eval_case venv pos loc buf channel lex options body = match Lexer.searchto lex channel with Lexer.LexEOF -> () | Lexer.LexSkipped (_, skipped) -> Buffer.add_string buf skipped | Lexer.LexMatched (_, _, skipped, matched, args) -> let venv' = venv_add_match venv matched args in let _, result = eval_sequence_exp venv' pos body in Buffer.add_string buf skipped; Buffer.add_string buf (string_of_value venv pos result); if (options land subst_global_opt) <> 0 then subst_eval_case venv pos loc buf channel lex options body else Lm_channel.LexerInput.lex_buffer channel buf let subst_eval_line venv pos loc line cases = let buffer = Buffer.create (String.length line) in List.fold_left (fun line (lex, options, body) -> let channel = Lm_channel.of_string line in Buffer.clear buffer; subst_eval_case venv pos loc buffer channel lex options body; Buffer.contents buffer) line cases let fsubst venv pos loc args = let pos = string_pos "fsubst" pos in let cases, files = awk_args venv pos loc args in let outp = prim_channel_of_var venv pos loc stdout_var in let outx = venv_find_channel venv pos outp in (* Record separator *) let rs = try string_of_value venv pos (venv_find_var_exn venv rs_var) with Not_found -> "\r|\n|\r\n" in let rs_lex = try lexer_of_string rs with Failure err -> let msg = sprintf "Malformed regular expression '%s'" rs in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in (* Get lexers for all the cases *) let cases = List.map (fun (v, test, body, _) -> let args = values_of_value venv pos test in let pattern, options = match args with pattern :: options -> string_of_value venv pos pattern, options | [] -> "", [] in let pattern, options = if Lm_symbol.eq v case_sym then pattern, options else if Lm_symbol.eq v default_sym then ".*", [] else raise (OmakeException (loc_pos loc pos, StringVarError ("unknown case", v))) in let options = List.fold_left (fun options arg -> subst_options venv pos loc options (string_of_value venv pos arg)) 0 options in let _, lex = try Lexer.add_clause Lexer.empty v pattern with Failure err -> let msg = sprintf "Malformed regular expression '%s'" pattern in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in lex, options, body) cases in (* Read the file a line at a time *) let rec line_loop inx = match Lexer.searchto rs_lex inx with Lexer.LexEOF -> () | Lexer.LexSkipped (_, line) -> let line = subst_eval_line venv pos loc line cases in Lm_channel.output_string outx line | Lexer.LexMatched (_, _, line, term, _) -> let line = subst_eval_line venv pos loc line cases in Lm_channel.output_string outx line; Lm_channel.output_string outx term; line_loop inx in let rec file_loop files = match files with file :: files -> let inp, close_in = in_channel_of_any_value venv pos file in let inx = venv_find_channel venv pos inp in let () = try line_loop inx with exn when close_in -> venv_close_channel venv pos inp; raise exn in if close_in then venv_close_channel venv pos inp; file_loop files | [] -> () in let venv = try file_loop files; venv with Break (_, venv) -> venv in Lm_channel.flush outx; venv, ValNone (* * \begin{doc} * \fun{lex} * * \begin{verbatim} * lex(files) * case pattern1 * body1 * case pattern2 * body2 * ... * default * bodyd * \end{verbatim} * * The \verb+lex+ function provides a simple lexical-style scanner * function. The input is a sequence of files or channels. The cases * specify regular expressions. Each time the input is read, the regular * expression that matches the \emph{longest prefix} of the input is selected, * and the body is evaluated. * * If two clauses both match the same input, the \emph{last} one is selected * for execution. The \verb+default+ case matches the regular expression \verb+.+; * you probably want to place it first in the pattern list. * * If the body end with an \verb+export+ directive, * the state is passed to the next clause. * * For example, the following program collects all occurrences of alphanumeric * words in an input file. * * \begin{verbatim} * collect-words($(files)) = * words[] = * lex($(files)) * default * # empty * case $"[[:alnum:]]+" g * words[] += $0 * export * \end{verbatim} * * The \verb+default+ case, if one exists, matches single characters. Since * * It is an error if the input does not match any of the regular expressions. * * The \hyperfun{break} can be used to abort the loop. * \end{doc} *) let eof_sym = Lm_symbol.add "eof" let lex venv pos loc args = let pos = string_pos "lex" pos in let cases, files = awk_args venv pos loc args in (* Add a clause for EOF *) let _, lex = Lexer.add_clause Lexer.empty eof_sym "\\'" in (* Get lexers for all the cases *) let lex, cases, _ = List.fold_left (fun (lex, cases, index) (v, test, body, export) -> let args = values_of_value venv pos test in let pattern = match args with pattern :: _ -> string_of_value venv pos pattern | [] -> "" in let pattern = if Lm_symbol.eq v case_sym then pattern else if Lm_symbol.eq v default_sym then "." else raise (OmakeException (loc_pos loc pos, StringVarError ("unknown case", v))) in let action_sym = Lm_symbol.make "action" index in let _, lex = try Lexer.add_clause lex action_sym pattern with Failure err -> let msg = sprintf "Malformed regular expression '%s'" pattern in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in let cases = SymbolTable.add cases action_sym (body, export) in lex, cases, succ index) (lex, SymbolTable.empty, 0) cases in (* Process the files *) let rec input_loop venv inx = let action_sym, lexeme_loc, lexeme, args = Lexer.lex lex inx in if Lm_symbol.eq action_sym eof_sym then venv else let venv_new = venv_add_match venv lexeme args in let venv_new = venv_add_var venv_new parse_loc_var (ValOther (ValLocation lexeme_loc)) in let body, export = try SymbolTable.find cases action_sym with Not_found -> raise (Invalid_argument "lex") in let venv_new, _ = eval_sequence_exp venv_new pos body in let venv = add_exports venv venv_new pos export in input_loop venv inx in let rec file_loop venv files = match files with file :: files -> let inp, close_in = in_channel_of_any_value venv pos file in let inx = venv_find_channel venv pos inp in let venv = try input_loop venv inx with (Break _ | Return _ ) as exn -> if close_in then venv_close_channel venv pos inp; raise exn | exn -> if close_in then venv_close_channel venv pos inp; raise_uncaught_exception pos exn in if close_in then venv_close_channel venv pos inp; file_loop venv files | [] -> venv in let venv = try file_loop venv files with Break (_, venv) -> venv in venv, ValNone (* * \begin{doc} * \fun{lex-search} * * \begin{verbatim} * lex-search(files) * case pattern1 * body1 * case pattern2 * body2 * ... * default * bodyd * \end{verbatim} * * The \verb+lex-search+ function is like the \verb+lex+ function, but input that * does not match any of the regular expressions is skipped. If the clauses include * a \verb+default+ case, then the \verb+default+ matches any skipped text. * * For example, the following program collects all occurrences of alphanumeric * words in an input file, skipping any other text. * * \begin{verbatim} * collect-words($(files)) = * words[] = * lex-search($(files)) * default * eprintln(Skipped $0) * case $"[[:alnum:]]+" g * words[] += $0 * export * \end{verbatim} * * The \verb+default+ case, if one exists, matches single characters. Since * * It is an error if the input does not match any of the regular expressions. * * The \hyperfun{break} can be used to abort the loop. * \end{doc} *) let lex_search venv pos loc args = let pos = string_pos "lex-search" pos in let cases, files = awk_args venv pos loc args in (* Get lexers for all the cases *) let lex, cases, default, _ = List.fold_left (fun (lex, cases, default, index) (v, test, body, export) -> let args = values_of_value venv pos test in let pattern = match args with pattern :: _ -> string_of_value venv pos pattern | [] -> "" in if Lm_symbol.eq v case_sym then let action_sym = Lm_symbol.make "action" index in let _, lex = try Lexer.add_clause lex action_sym pattern with Failure err -> let msg = sprintf "Malformed regular expression '%s'" pattern in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in let cases = SymbolTable.add cases action_sym (body, export) in lex, cases, default, succ index else if Lm_symbol.eq v default_sym then lex, cases, Some (body, export), index else raise (OmakeException (loc_pos loc pos, StringVarError ("unknown case", v)))) (**) (Lexer.empty, SymbolTable.empty, None, 0) cases in (* What to do for skipped text *) let skip venv lexeme_loc lexeme = match lexeme, default with "", _ | _, None -> venv | _, Some (body, export) -> let venv_new = venv_add_match venv lexeme [] in let venv_new = venv_add_var venv_new parse_loc_var (ValOther (ValLocation lexeme_loc)) in let venv_new, _ = eval_sequence_exp venv_new pos body in add_exports venv venv_new pos export in (* Process the files *) let rec input_loop venv inx = match Lexer.searchto lex inx with Lexer.LexEOF -> venv | Lexer.LexSkipped (lexeme_loc, lexeme) -> skip venv loc lexeme | Lexer.LexMatched (action_sym, lexeme_loc, skipped, lexeme, args) -> (* Process skipped text *) let venv = skip venv lexeme_loc skipped in (* Process the matched text *) let venv_new = venv_add_match venv lexeme args in let venv_new = venv_add_var venv_new parse_loc_var (ValOther (ValLocation lexeme_loc)) in let body, export = try SymbolTable.find cases action_sym with Not_found -> raise (Invalid_argument "lex") in let venv_new, _ = eval_sequence_exp venv_new pos body in let venv = add_exports venv venv_new pos export in input_loop venv inx in (* Process each file *) let rec file_loop venv files = match files with file :: files -> let inp, close_in = in_channel_of_any_value venv pos file in let inx = venv_find_channel venv pos inp in let venv = try input_loop venv inx with (Break _ | Return _) as exn -> if close_in then venv_close_channel venv pos inp; raise exn | exn -> if close_in then venv_close_channel venv pos inp; raise_uncaught_exception pos exn in if close_in then venv_close_channel venv pos inp; file_loop venv files | [] -> venv in let venv = try file_loop venv files with Break (_, venv) -> venv in venv, ValNone (* * \begin{doc} * \obj{Lexer} * * The \verb+Lexer+ object defines a facility for lexical analysis, similar to the * \Cmd{lex}{1} and \Cmd{flex}{1} programs. * * In \Prog{omake}, lexical analyzers can be constructed dynamically by extending * the \verb+Lexer+ class. A lexer definition consists of a set of directives specified * with method calls, and set of clauses specified as rules. * * For example, consider the following lexer definition, which is intended * for lexical analysis of simple arithmetic expressions for a desktop * calculator. * * \begin{verbatim} * lexer1. = * extends $(Lexer) * * other: . * eprintln(Illegal character: $* ) * lex() * * white: $"[[:space:]]+" * lex() * * op: $"[-+*/()]" * switch $* * case + * Token.unit($(loc), plus) * case - * Token.unit($(loc), minus) * case * * Token.unit($(loc), mul) * case / * Token.unit($(loc), div) * case $"(" * Token.unit($(loc), lparen) * case $")" * Token.unit($(loc), rparen) * * number: $"[[:digit:]]+" * Token.pair($(loc), exp, $(int $* )) * * eof: $"\'" * Token.unit($(loc), eof) * \end{verbatim} * * This program defines an object \verb+lexer1+ the extends the \verb+Lexer+ * object, which defines lexing environment. * * The remainder of the definition consists of a set of clauses, * each with a method name before the colon; a regular expression * after the colon; and in this case, a body. The body is optional, * if it is not specified, the method with the given name should * already exist in the lexer definition. * * \emph{NB} The clause that matches the \emph{longest} prefix of the input * is selected. If two clauses match the same input prefix, then the \emph{last} * one is selected. This is unlike most standard lexers, but makes more sense * for extensible grammars. * * The first clause matches any input that is not matched by the other clauses. * In this case, an error message is printed for any unknown character, and * the input is skipped. Note that this clause is selected only if no other * clause matches. * * The second clause is responsible for ignoring white space. * If whitespace is found, it is ignored, and the lexer is called * recursively. * * The third clause is responsible for the arithmetic operators. * It makes use of the \verb+Token+ object, which defines three * fields: a \verb+loc+ field that represents the source location; * a \verb+name+; and a \verb+value+. * * The lexer defines the \verb+loc+ variable to be the location * of the current lexeme in each of the method bodies, so we can use * that value to create the tokens. * * The \verb+Token.unit($(loc), name)+ * method constructs a new \verb+Token+ object with the given name, * and a default value. * * The \verb+number+ clause matches nonnegative integer constants. * The \verb+Token.pair($(loc), name, value)+ constructs a token with the * given name and value. * * Lexer object operate on \verb+InChannel+ objects. * The method \verb+lexer1.lex-channel(channel)+ reads the next * token from the channel argument. * * \subsection{Lexer matching} * * During lexical analysis, clauses are selected by longest match. * That is, the clause that matches the longest sequence of input * characters is chosen for evaluation. If no clause matches, the * lexer raises a \verb+RuntimeException+. If more than one clause * matches the same amount of input, the first one is chosen * for evaluation. * * \subsection{Extending lexer definitions} * * Suppose we wish to augment the lexer example so that it ignores * comments. We will define comments as any text that begins with * the string \verb+(*+, ends with \verb+*)+, and comments may * be nested. * * One convenient way to do this is to define a separate lexer * just to skip comments. * * \begin{verbatim} * lex-comment. = * extends $(Lexer) * * level = 0 * * other: . * lex() * * term: $"[*][)]" * if $(not $(eq $(level), 0)) * level = $(sub $(level), 1) * lex() * * next: $"[(][*]" * level = $(add $(level), 1) * lex() * * eof: $"\'" * eprintln(Unterminated comment) * \end{verbatim} * * This lexer contains a field \verb+level+ that keeps track of the nesting * level. On encountering a \verb+(*+ string, it increments the level, * and for \verb+*)+, it decrements the level if nonzero, and continues. * * Next, we need to modify our previous lexer to skip comments. * We can do this by extending the lexer object \verb+lexer1+ * that we just created. * * \begin{verbatim} * lexer1. += * comment: $"[(][*]" * lex-comment.lex-channel($(channel)) * lex() * \end{verbatim} * * The body for the comment clause calls the \verb+lex-comment+ lexer when * a comment is encountered, and continues lexing when that lexer returns. * * \subsection{Threading the lexer object} * * Clause bodies may also end with an \verb+export+ directive. In this case * the lexer object itself is used as the returned token. If used with * the \verb+Parser+ object below, the lexer should define the \verb+loc+, \verb+name+ * and \verb+value+ fields in each \verb+export+ clause. Each time * the \verb+Parser+ calls the lexer, it calls it with the lexer returned * from the previous lex invocation. * \end{doc} *) (* * Add a lexer clause. *) let lex_rule venv pos loc args = let pos = string_pos "lex-rule" pos in match args with [_; action; _; pattern; _; ValBody (_, body, export)] -> let lexer = current_lexer venv pos in let action_name = string_of_value venv pos action in let action_sym = Lm_symbol.add action_name in let pattern = string_of_value venv pos pattern in let _, lexer = try Lexer.add_clause lexer action_sym pattern with Failure err -> let msg = sprintf "Malformed regular expression '%s'" pattern in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in (* Add the method *) let action_var = VarThis (loc, action_sym) in let venv = venv_add_var venv action_var (ValFun (ArityExact 0, venv_get_env venv, [], body, export)) in let venv = venv_add_var venv builtin_field_var (ValOther (ValLexer lexer)) in venv, ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 6, List.length args))) (* * Perform the lexing. *) let lex_engine venv pos loc args = let pos = string_pos "lex" pos in match args with [arg] -> let lexer = current_lexer venv pos in let inp, close_flag = in_channel_of_any_value venv pos arg in let inx = venv_find_channel venv pos inp in let action, lexeme_loc, lexeme, args = try Lexer.lex lexer inx with Failure _ as exn -> if close_flag then venv_close_channel venv pos inp; raise (UncaughtException (pos, exn)) in let () = if close_flag then venv_close_channel venv pos inp in let venv = venv_add_match venv lexeme args in let venv = venv_add_var venv parse_loc_var (ValOther (ValLocation lexeme_loc)) in let action = venv_find_var venv pos loc (VarThis (loc, action)) in eval_apply venv pos loc action [] | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \obj{Parser} * * The \verb+Parser+ object provides a facility for syntactic analysis based * on context-free grammars. * * \verb+Parser+ objects are specified as a sequence of directives, * specified with method calls; and productions, specified as rules. * * For example, let's finish building the desktop calculator started * in the \verb+Lexer+ example. * * \begin{verbatim} * parser1. = * extends $(Parser) * * # * # Use the main lexer * # * lexer = $(lexer1) * * # * # Precedences, in ascending order * # * left(plus minus) * left(mul div) * right(uminus) * * # * # A program * # * start(prog) * * prog: exp eof * return $1 * * # * # Simple arithmetic expressions * # * exp: minus exp :prec: uminus * neg($2) * * exp: exp plus exp * add($1, $3) * * exp: exp minus exp * sub($1, $3) * * exp: exp mul exp * mul($1, $3) * * exp: exp div exp * div($1, $3) * * exp: lparen exp rparen * return $2 * \end{verbatim} * * Parsers are defined as extensions of the \verb+Parser+ class. * A \verb+Parser+ object must have a \verb+lexer+ field. The \verb+lexer+ * is not required to be a \verb+Lexer+ object, but it must provide * a \verb+lexer.lex()+ method that returns a token object with * \verb+name+ and \verb+value+ fields. For this example, we use the * \verb+lexer1+ object that we defined previously. * * The next step is to define precedences for the terminal symbols. * The precedences are defined with the \verb+left+, \verb+right+, * and \verb+nonassoc+ methods in order of increasing precedence. * * The grammar must have at least one start symbol, declared with * the \verb+start+ method. * * Next, the productions in the grammar are listed as rules. * The name of the production is listed before the colon, and * a sequence of variables is listed to the right of the colon. * The body is a semantic action to be evaluated when the production * is recognized as part of the input. * * In this example, these are the productions for the arithmetic * expressions recognized by the desktop calculator. The semantic * action performs the calculation. The variables \verb+$1, $2, ...+ * correspond to the values associated with each of the variables * on the right-hand-side of the production. * * \subsection{Calling the parser} * * The parser is called with the \verb+$(parser1.parse-channel start, channel)+ * or \verb+$(parser1.parse-file start, file)+ functions. The \verb+start+ * argument is the start symbol, and the \verb+channel+ or \verb+file+ * is the input to the parser. * * \subsection{Parsing control} * * The parser generator generates a pushdown automation based on LALR(1) * tables. As usual, if the grammar is ambiguous, this may generate shift/reduce * or reduce/reduce conflicts. These conflicts are printed to standard * output when the automaton is generated. * * By default, the automaton is not constructed until the parser is * first used. * * The \verb+build(debug)+ method forces the construction of the automaton. * While not required, it is wise to finish each complete parser with * a call to the \verb+build(debug)+ method. If the \verb+debug+ variable * is set, this also prints with parser table together with any conflicts. * * The \verb+loc+ variable is defined within action bodies, and represents * the input range for all tokens on the right-hand-side of the production. * * \subsection{Extending parsers} * * Parsers may also be extended by inheritance. * For example, let's extend the grammar so that it also recognizes * the \verb+<<+ and \verb+>>+ shift operations. * * First, we extend the lexer so that it recognizes these tokens. * This time, we choose to leave \verb+lexer1+ intact, instead of * using the += operator. * * \begin{verbatim} * lexer2. = * extends $(lexer1) * * lsl: $"<<" * Token.unit($(loc), lsl) * * asr: $">>" * Token.unit($(loc), asr) * \end{verbatim} * * Next, we extend the parser to handle these new operators. * We intend that the bitwise operators have lower precedence * than the other arithmetic operators. The two-argument form * of the \verb+left+ method accomplishes this. * * \begin{verbatim} * parser2. = * extends $(parser1) * * left(plus, lsl lsr asr) * * lexer = $(lexer2) * * exp: exp lsl exp * lsl($1, $3) * * exp: exp asr exp * asr($1, $3) * \end{verbatim} * * In this case, we use the new lexer \verb+lexer2+, and we add productions * for the new shift operations. * \end{doc} *) (* * Add start symbols. *) let parse_start venv pos loc args = let pos = string_pos "parse-start" pos in let parse = current_parser venv pos in let args = match args with [arg] -> strings_of_value venv pos arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let parse = List.fold_left (fun parse s -> Parser.add_start parse (Lm_symbol.add s)) parse args in (* Redefine the parser *) let venv = venv_add_var venv builtin_field_var (ValOther (ValParser parse)) in venv, ValNone (* * Precedence operations. *) let parse_prec venv pos loc args assoc = let pos = string_pos "parse-prec" pos in let this = venv_this venv in let parse = current_parser venv pos in let parse, level, args = match args with [before; args] -> let current_prec = Lm_symbol.add (string_of_value venv pos before) in let level = try Parser.find_prec parse current_prec with Not_found -> raise (OmakeException (loc_pos loc pos, StringVarError ("no such precedence", current_prec))) in let parse, level = Parser.create_prec_lt parse level assoc in parse, level, args | [args] -> let current_prec = Lm_symbol.add (string_of_value venv pos (venv_find_field_internal this pos current_prec_sym)) in let level = try Parser.find_prec parse current_prec with Not_found -> raise (OmakeException (loc_pos loc pos, StringVarError ("current precedence is not found", current_prec))) in let parse, level = Parser.create_prec_gt parse level assoc in parse, level, args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 2), List.length args))) in let args = strings_of_value venv pos args in let parse = List.fold_left (fun parse s -> Parser.add_prec parse level (Lm_symbol.add s)) parse args in (* Reset the current precedence *) let venv = match args with arg :: _ -> venv_add_var venv current_prec_field_var (ValString arg) | [] -> venv in (* Redefine the parser *) let venv = venv_add_var venv builtin_field_var (ValOther (ValParser parse)) in venv, ValNone let parse_left venv pos loc args = let pos = string_pos "parse-left" pos in parse_prec venv pos loc args LeftAssoc let parse_right venv pos loc args = let pos = string_pos "parse-right" pos in parse_prec venv pos loc args RightAssoc let parse_nonassoc venv pos loc args = let pos = string_pos "parse-nonassoc" pos in parse_prec venv pos loc args NonAssoc (* * Build the parser. *) let parse_build venv pos loc args = let pos = string_pos "parse-build" pos in match args with [arg] -> let par = current_parser venv pos in let debug = bool_of_value venv pos arg in Parser.build par debug; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Get the precedence option. *) let prec_option venv pos loc options = venv_map_fold (fun pre optname optval -> let s = string_of_value venv pos optname in if s = ":prec:" then Some (Lm_symbol.add (string_of_value venv pos optval)) else raise (OmakeException (pos, StringValueError ("illegal option", optname)))) None options (* * Compute an action name that is not defined in the current object. *) let action_sym = Lm_symbol.add "action" let find_action_name venv loc = Lm_symbol.new_name action_sym (fun v -> venv_defined venv (VarThis (loc, v))) (* * Add a parser clause. *) let parse_rule venv pos loc args = let pos = string_pos "parse-rule" pos in let action, head, rhs, options, body, export = match args with [_; action; head; rhs; ValMap options; ValBody (_, body, export)] -> let action = string_of_value venv pos action in let head = string_of_value venv pos head in if head = "" then (* Action name was omitted *) find_action_name venv loc, Lm_symbol.add action, rhs, options, body, export else Lm_symbol.add action, Lm_symbol.add head, rhs, options, body, export | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 6, List.length args))) in let par = current_parser venv pos in let rhs = List.map Lm_symbol.add (strings_of_value venv pos rhs) in let pre = prec_option venv pos loc options in let par = Parser.add_production par action head rhs pre in (* Add the method if there is a body *) let venv = match body with _ :: _ -> let body = LetVarExp (loc, VarThis (loc, val_sym), [], VarDefNormal, ConstString (loc, "")) :: body in venv_add_var venv (VarThis (loc, action)) (ValFun (ArityExact 0, venv_get_env venv, [], body, export)) | [] -> venv in (* Add back the parser *) let venv = venv_add_var venv builtin_field_var (ValOther (ValParser par)) in venv, ValNone (* * Perform the lexing. *) let parse_engine venv pos loc args = let pos = string_pos "parse-engine" pos in match args with [start] -> let dfa = current_parser venv pos in let start = Lm_symbol.add (string_of_value venv pos start) in let lexer = venv_find_var venv pos loc lexer_field_var in let lexer = eval_object venv pos lexer in let parser_obj = venv_this venv in let lex (venv, parser_obj, lexer) = let lex = venv_find_field_internal lexer pos lex_sym in let venv = venv_with_object venv lexer in let venv, result = eval_apply venv pos loc lex [] in let obj = eval_object venv pos result in try let lex_loc = venv_find_field_internal_exn obj loc_sym in let lex_loc = loc_of_value venv pos lex_loc in let name = venv_find_field_internal_exn obj name_sym in let name = Lm_symbol.add (string_of_value venv pos name) in let value = venv_find_field_internal_exn obj val_sym in name, lex_loc, (venv, parser_obj, lexer), value with Not_found -> let print_error buf = fprintf buf "@[The lexer returned a malformed object.\ @ @[The result of a lexer action should be an object with at least 3 fields:\ @ loc: the location of the token\ @ name: the name of the token\ @ val: the value of the token@]\ @ This is probably because you are using 'export' in a lexer action\ @ and you haven't defined one of these three fields in your lexer object.\ @ %a@]" pp_print_value (ValObject obj) in raise (OmakeException (pos, LazyError print_error)) in let eval (venv, parser_obj, lexer) action loc args = let pos = loc_pos loc pos in let venv = venv_add_match_values venv args in let action = venv_find_field_internal parser_obj pos action in let venv = venv_with_object venv parser_obj in let venv = venv_add_var venv parse_loc_var (ValOther (ValLocation loc)) in let venv, result = eval_apply venv pos loc action [] in (venv, parser_obj, lexer), result in let _, value = try Parser.parse dfa start lex eval (venv, parser_obj, lexer) with Failure _ as exn -> raise (UncaughtException (pos, exn)) in value | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (************************************************************************ * External interface. *) let () = let builtin_funs = [true, "grep", grep, ArityRange (1, 3); true, "builtin-grep", builtin_grep, ArityExact 1; true, "cat", cat, ArityExact 1; true, "parse-engine", parse_engine, ArityExact 1; true, "parse-build", parse_build, ArityExact 1; ] in let builtin_kfuns = [true, "lex-rule", lex_rule, ArityRange (3, 4); true, "lex-engine", lex_engine, ArityExact 1; true, "parse-rule", parse_rule, ArityRange (3, 5); true, "parse-start", parse_start, ArityExact 1; true, "parse-left", parse_left, ArityExact 1; true, "parse-right", parse_right, ArityExact 1; true, "parse-nonassoc", parse_nonassoc, ArityExact 1; true, "scan", scan, ArityRange (1, 3); true, "awk", awk, ArityExact 3; true, "fsubst", fsubst, ArityExact 3; true, "lex", lex, ArityExact 3; true, "lex-search", lex_search, ArityExact 3; ] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_object.mli0000664000152300015230000000226010456240612020243 0ustar jyhjyh(* * Base objects. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_sys.ml0000664000152300015230000003134510616244640017453 0ustar jyhjyh(* * Miscellaneous system functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Authors: Jason Hickey @email{jyh@cs.caltech.edu} * Erick Tryzelaar @email{erickt@dslextreme.com} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_var open Omake_node open Omake_value open Omake_symbol open Omake_builtin open Omake_builtin_type open Omake_builtin_util open Omake_value_type module Pos = MakePos (struct let name = "Omake_builtin_sys" end);; open Pos (************************************************************************ * Passwd database access. *) (* * \begin{doc} * \obj{Passwd} * * The \verb+Passwd+ object represents an entry in the system's user database. * It contains the following fields. * * \begin{description} * \itemidx{pw\_name}: the login name. * \itemidx{pw\_passwd}: the encrypted password. * \itemidx{pw\_uid}: user id of the user. * \itemidx{pw\_gid}: group id of the user. * \itemidx{pw\_gecos}: the user name or comment field. * \itemidx{pw\_dir}: the user's home directory. * \itemidx{pw\_shell}: the user's default shell. * \end{description} * * Not all the fields will have meaning on all operating systems. * * \twofuns{getpwnam}{getpwuid} * * \begin{verbatim} * $(getpwnam name...) : Passwd * name : String * $(getpwuid uid...) : Passwd * uid : Int * raises RuntimeException * \end{verbatim} * * The \verb+getpwnam+ function looks up an entry by the user's login and the \verb+getpwuid+ * function looks up an entry by user's numerical id (uid). If no entry is found, an exception * will be raised. * * \fun{getpwents} * * \begin{verbatim} * $(getpwents) : Array * \end{verbatim} * * The \verb+getpwents+ function returns an array of \verb+Passwd+ objects, one for every user * fund in the system user database. Note that depending on the operating system and on the setup * of the user database, the returned array may be incomplete or even empty. * \end{doc} *) let create_passwd_obj obj passwd = let obj = venv_add_field_internal obj pw_name_sym (ValString passwd.Unix.pw_name) in let obj = venv_add_field_internal obj pw_passwd_sym (ValString passwd.Unix.pw_passwd) in let obj = venv_add_field_internal obj pw_uid_sym (ValInt passwd.Unix.pw_uid) in let obj = venv_add_field_internal obj pw_gid_sym (ValInt passwd.Unix.pw_gid) in let obj = venv_add_field_internal obj pw_gecos_sym (ValString passwd.Unix.pw_gecos) in let obj = venv_add_field_internal obj pw_dir_sym (ValString passwd.Unix.pw_dir) in let obj = venv_add_field_internal obj pw_shell_sym (ValString passwd.Unix.pw_shell) in ValObject obj let getpwnam venv pos loc args = let pos = string_pos "getpwnam" pos in let obj = venv_find_object_or_empty venv passwd_object_var in let user = match args with [user] -> string_of_value venv pos user | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let passwd = try Unix.getpwnam user with Not_found -> raise (OmakeException (loc_pos loc pos, StringStringError ("unknown user", user))) in create_passwd_obj obj passwd let getpwuid venv pos loc args = let pos = string_pos "getpwuid" pos in let obj = venv_find_object_or_empty venv passwd_object_var in let uid = match args with [uid] -> int_of_value venv pos uid | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let passwd = try Unix.getpwuid uid with Not_found -> raise (OmakeException (loc_pos loc pos, StringIntError ("unknown uid", uid))) in create_passwd_obj obj passwd let getpwents venv _pos _loc _args = let obj = venv_find_object_or_empty venv passwd_object_var in let ents = List.map (create_passwd_obj obj) (Lm_unix_util.getpwents ()) in ValArray ents (************************************************************************ * Group database access. *) (* * \begin{doc} * \obj{Group} * * The \verb+Group+ object represents an entry in the system's user group database. * It contains the following fields. * * \begin{description} * \itemidx{gr\_name}: the group name. * \itemidx{gr\_group}: the encrypted password. * \itemidx{gr\_gid}: group id of the group. * \itemidx{gr\_mem}: the group member's user names. * \end{description} * * Not all the fields will have meaning on all operating systems. * * \twofuns{getgrnam}{getgrgid} * * \begin{verbatim} * $(getgrnam name...) : Group * name : String * $(getgrgid gid...) : Group * gid : Int * raises RuntimeException * \end{verbatim} * * The \verb+getgrnam+ function looks up a group entry by the group's name and the \verb+getgrgid+ * function looks up an entry by groups's numerical id (gid). If no entry is found, an exception * will be raised. * * \end{doc} *) let create_group_obj obj group = let gr_mem = Array.fold_right (fun s x -> ValString s::x) group.Unix.gr_mem [] in let obj = venv_add_field_internal obj gr_name_sym (ValString group.Unix.gr_name) in let obj = venv_add_field_internal obj gr_passwd_sym (ValString group.Unix.gr_passwd) in let obj = venv_add_field_internal obj gr_gid_sym (ValInt group.Unix.gr_gid) in let obj = venv_add_field_internal obj gr_mem_sym (ValArray gr_mem) in ValObject obj let getgrnam venv pos loc args = let pos = string_pos "getgrnam" pos in let obj = venv_find_object_or_empty venv group_object_var in let user = match args with [user] -> string_of_value venv pos user | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let group = try Unix.getgrnam user with Not_found -> raise (OmakeException (loc_pos loc pos, StringStringError ("unknown user", user))) in create_group_obj obj group let getgrgid venv pos loc args = let pos = string_pos "getgruid" pos in let obj = venv_find_object_or_empty venv group_object_var in let gid = match args with [gid] -> int_of_value venv pos gid | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let group = try Unix.getgrgid gid with Not_found -> raise (OmakeException (loc_pos loc pos, StringIntError ("unknown gid", gid))) in create_group_obj obj group (* * \begin{doc} * \fun{tgetstr} * * \begin{verbatim} * $(tgetstr id) : String * id : String * \end{verbatim} * * The \verb+tgetstr+ function looks up the terminal capability with the indicated \verb+id+. * This assumes the terminfo to lookup is given in the \verb+TERM+ environment variable. This * function returns an empty value if the given terminal capability is not defined. * * Note: if you intend to use the value returned by \verb+tgetstr+ inside the shell * \hypervarn{prompt}, you need to wrap it using the \hyperfun{prompt-invisible}. * \end{doc} *) let tgetstr venv pos loc args = let pos = string_pos "tgetstr" pos in match args with [arg] -> begin match Lm_terminfo.tgetstr (string_of_value venv pos arg) with Some s -> ValData s | None -> ValNone end | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let str_wrap name f v venv pos loc args = let pos = string_pos name pos in if args <> [] then raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 0, List.length args))) else match f v with Some s -> ValData s | None -> ValNone (* * \begin{doc} * \twofuns{xterm-escape-begin}{xterm-escape-end} * * \begin{verbatim} * $(xterm-escape-begin) : String * $(xterm-escape-end) : String * \end{verbatim} * * The \verb+xterm-escape-begin+ and \verb+xterm-escape-end+ functions return the escape sequences * that can be used to set the XTerm window title. Will return empty values if this capability is * not available. * * Note: if you intend to use these strings inside the shell \hypervarn{prompt}, you need to use * \verb+$(prompt_invisible_begin)$(xterm-escape-begin)+ and * \verb+$(xterm-escape-end)$(prompt_invisible_end)+. * \end{doc} *) let xterm_escape_begin = str_wrap "xterm-escape-begin" Lm_terminfo.xterm_escape_begin () let xterm_escape_end = str_wrap "xterm-escape-end" Lm_terminfo.xterm_escape_end () (* * \begin{doc} * \fun{xterm-escape} * * \begin{verbatim} * $(xterm-escape s) : Sequence * \end{verbatim} * * When the \verb+TERM+ environment variable indicates that the XTerm title setting capability is available, * \verb+$(xterm-escape s)+ is equivalent to \verb+$(xterm-escape-begin)s$(xterm-escape-end)+. Otherwise, it * returns an empty value. * * Note: if you intend to use the value returned by \verb+xterm-escape+ inside the shell * \hypervarn{prompt}, you need to wrap it using the \hyperfun{prompt-invisible}. * \end{doc} * * Implemented in Pervasives.om *) (* * \begin{doc} * \twofuns{prompt-invisible-begin}{prompt-invisible-end} * * \begin{verbatim} * $(prompt-invisible-begin) : String * $(prompt-invisible-end) : String * \end{verbatim} * * The \verb+prompt-invisible-begin+ and \verb+prompt-invisible-end+ functions return the escape sequences * that must used to mark the ``invisible'' sections of the shell \hypervarn{prompt} (such as various escape sequences). * \end{doc} *) let opt_wrap f = function Some x -> Some (f x) | None -> None let prompt_invisible_begin = str_wrap "prompt-invisible-begin" (opt_wrap fst) Omake_readline.prompt_invisible let prompt_invisible_end = str_wrap "prompt-invisible-end" (opt_wrap snd) Omake_readline.prompt_invisible (* * \begin{doc} * \fun{prompt-invisible} * * \begin{verbatim} * $(prompt-invisible s) : Sequence * \end{verbatim} * * The \verb+prompt-invisible+ will wrap its argument with \verb+$(prompt-invisible-begin)+ and * \verb+$(prompt-invisible-end)+. All the `invisible'' sections of the shell \hypervarn{prompt} (such as various * escape sequences) must be wrapped this way. * \end{doc} * * Implemented in Pervasives.om *) (* * \begin{doc} * \fun{gettimeofday} * * \begin{verbatim} * $(gettimeofday) : Float * \end{verbatim} * * The \verb+gettimeofday+ function returns the time of day in seconds * since January 1, 1970. * * \end{doc} *) let gettimeofday venv pos loc args = let pos = string_pos "gettimeofday" pos in match args with [] -> ValFloat (Unix.gettimeofday ()) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 0, List.length args))) (************************************************************************ * Tables. *) let () = let builtin_funs = [ true, "gettimeofday", gettimeofday, ArityExact 0; true, "getpwnam", getpwnam, ArityExact 1; true, "getpwuid", getpwuid, ArityExact 1; true, "getpwents", getpwents, ArityExact 0; true, "getgrnam", getgrnam, ArityExact 1; true, "getgrgid", getgrgid, ArityExact 1; true, "tgetstr", tgetstr, ArityExact 1; true, "xterm-escape-begin", xterm_escape_begin, ArityExact 0; true, "xterm-escape-end", xterm_escape_end, ArityExact 0; true, "prompt-invisible-begin", prompt_invisible_begin, ArityExact 0; true, "prompt-invisible-end", prompt_invisible_end, ArityExact 0; ] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_base.ml0000664000152300015230000026355410656672474017576 0ustar jyhjyh(* * Some builtin functions. * * \begin{doc} * \chapter{Base library} * \label{chapter:base} * \cutname{omake-base.html} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Calufornia Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_eval open Omake_wild open Omake_node open Omake_exec open Omake_rule open Omake_lexer open Omake_value open Omake_state open Omake_symbol open Omake_builtin open Omake_builtin_type open Omake_builtin_util open Omake_command_type open Omake_value_type module Pos = MakePos (struct let name = "Omake_builtin_base" end) open Pos (* * Table of variables. * * \begin{doc} * \section{Builtin variables} * \varlabel{OMAKE_VERSION}{OMAKE\_VERSION} * Version of \OMake. * \var{STDLIB} * The directory where the \OMake{} standard library files reside. At startup, the default * value is determined as follows. * \begin{itemize} * \item The value of the \verb+OMAKELIB+ environment variable, if set (must contain * an absolute path, if set), otherwise * \item On Windows, the registry keys \verb+HKEY_CURRENT_USER\SOFTWARE\MetaPRL\OMake\OMAKELIB+ and * \verb+HKEY_LOCAL_MACHINE\SOFTWARE\MetaPRL\OMake\OMAKELIB+ are looked up and the value is used, * if exist. * \item Otherwise a compile-time default it used. * \end{itemize} * The current default value may be accessed by running \verb+omake --version+ * \var{OMAKEPATH} * An array of directories specifying the lookup path for the \verb+include+ and \verb+open+ directives (see * Section~\ref{section:include}). * The default value is an array of two elements --- \verb+.+ and \verb+$(STDLIB)+. * \var{OSTYPE} * Set to the machine architecture \Prog{omake} is running on. Possible values are * \verb+Unix+ (for all Unix versions, including Linux and Mac OS X), \verb+Win32+ * (for MS-Windows, \OMake{} compiled with MSVC++ or Mingw), and \verb+Cygwin+ (for * MS-Windows, \OMake{} compiled with Cygwin). * \var{SYSNAME} * The name of the operating system for the current machine. * \var{NODENAME} * The hostname of the current machine. * \varlabel{OS_VERSION}{OS\_VERSION} * The operating system release. * \var{MACHINE} * The machine architecture, e.g.\ \verb+i386+, \verb+sparc+, etc. * \var{HOST} * Same as \verb+NODENAME+. * \var{USER} * The login name of the user executing the process. * \var{HOME} * The home directory of the user executing the process. * \var{PID} * The \OMake{} process id. * \var{TARGETS} * The command-line target strings. For example, if \OMake{} is invoked with the * following command line, * \begin{verbatim} * omake CFLAGS=1 foo bar.c * \end{verbatim} * * then \verb+TARGETS+ is defined as \verb+foo bar.c+. * * \varlabel{BUILD_SUMMARY}{BUILD\_SUMMARY} * The \verb+BUILD_SUMMARY+ variable refers to the file that \verb+omake+ uses * to summarize a build (the message that is printed at the very end of a build). * The file is empty when the build starts. If you wish to add additional messages * to the build summary, you can edit/modify this file during the build. * * For example, if you want to point out that some action was taken, * you can append a message to the build summary. * * \begin{verbatim} * foo: boo * echo "The file foo was built" >> $(BUILD_SUMMARY) * ...build foo... * \end{verbatim} * * \var{VERBOSE} * Whether certain commands should be verbose. A boolean flag that is \verb+false+ * by default and is set to \verb+true+ when \OMake{} is invoked with the * \verb+--verbose+ option. * \end{doc} *) (************************************************************************ * Negate a boolean. * * \begin{doc} * \section{Logic, Boolean functions, and control flow} * \label{section:logic} * * Boolean values in omake are represented by case-insensitive strings. The * \emph{false} value can be represented by the strings \verb+false+, \verb+no+, * \verb+nil+, \verb+undefined+ or \verb+0+, and everything else is true. * * \fun{not} * * \begin{verbatim} * $(not e) : String * e : String * \end{verbatim} * * The \verb+not+ function negates a Boolean value. * * For example, \verb+$(not false)+ expands to the string \verb+true+, and * \verb+$(not hello world)+ expands to \verb+false+. * \end{doc} *) let not_fun venv pos loc args = let pos = string_pos "not" pos in match args with [s] -> val_of_bool(not (bool_of_value venv pos s)) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Check if two values are equal. * * \begin{doc} * \fun{equal} * * \begin{verbatim} * $(equal e1, e2) : String * e1 : String * e2 : String * \end{verbatim} * * The \verb+equal+ function tests for equality of two values. * * For example \verb+$(equal a, b)+ expands to \verb+false+, and \verb+$(equal hello world, hello world)+ expands to \verb+true+. * \end{doc} *) let equal venv pos loc args = let _pos = string_pos "equal" pos in match args with [s1; s2] -> val_of_bool (strings_of_value venv pos s1 = strings_of_value venv pos s2) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Conjunction. * * \begin{doc} * \fun{and} * * \begin{verbatim} * $(and e1, ..., en) : String * e1, ..., en: Sequence * \end{verbatim} * * The \verb+and+ function evaluates to the conjunction of its arguments. * * For example, in the following code, \verb+X+ is true, and \verb+Y+ is false. * * \begin{verbatim} * A = a * B = b * X = $(and $(equal $(A), a) true $(equal $(B), b)) * Y = $(and $(equal $(A), a) true $(equal $(A), $(B))) * \end{verbatim} * \end{doc} *) let and_fun venv pos loc args = let pos = string_pos "and" pos in val_of_bool (**) (List.for_all (fun arg -> List.for_all (bool_of_value venv pos) (values_of_value venv pos arg)) args) (* * Disjunction. * * \begin{doc} * \fun{or} * * \begin{verbatim} * $(or e1, ..., en) : String * e1, ..., en: String Sequence * \end{verbatim} * * The \verb+or+ function evaluates to the disjunction of its arguments. * * For example, in the following code, \verb+X+ is true, and \verb+Y+ is false. * * \begin{verbatim} * A = a * B = b * X = $(or $(equal $(A), a) false $(equal $(A), $(B))) * Y = $(or $(equal $(A), $(B)) $(equal $(A), b)) * \end{verbatim} * \end{doc} *) let or_fun venv pos loc args = let pos = string_pos "or" pos in val_of_bool (**) (List.exists (fun arg -> List.exists (bool_of_value venv pos) (values_of_value venv pos arg)) args) (* * Conditionals. * The values are computed lazily. * * \begin{doc} * \form{if}\index{elseif}\index{else} * * \begin{verbatim} * $(if e1, e2[, e3]) : value * e1 : String * e2, e3 : value * \end{verbatim} * * The \verb+if+ function represents a conditional based on a Boolean value. * For example \verb+$(if $(equal a, b), c, d)+ evaluates to \verb+d+. * * Conditionals may also be declared with an alternate syntax. * * \begin{verbatim} * if e1 * body1 * elseif e2 * body2 * ... * else * bodyn * \end{verbatim} * * If the expression \verb+e1+ is not false, then the expressions in \verb+body1+ * are evaluated and the result is returned as the value of the conditional. Otherwise, * if \verb+e1+ evaluates to false, the evaluation continues with the \verb+e2+ * expression. If none of the conditional expressions is true, then the expressions * in \verb+bodyn+ are evaluated and the result is returned as the value * of the conditional. * * There can be any number of \verb+elseif+ clauses; the \verb+else+ clause is * optional. * * Note that each branch of the conditional defines its own scope, so variables * defined in the branches are normally not visible outside the conditional. * The \verb+export+ command may be used to export the variables defined in * a scope. For example, the following expression represents a common idiom * for defining the C compiler configuration. * * \begin{verbatim} * if $(equal $(OSTYPE), Win32) * CC = cl * CFLAGS += /DWIN32 * export * else * CC = gcc * CFLAGS += -g -O2 * export * \end{verbatim} * \end{doc} *) let empty_val = ValSequence [] let if_fun venv pos loc args = let pos = string_pos "if" pos in let test, v1, v2 = match args with [test; v1; v2] -> test, v1, v2 | [test; v1] -> test, v1, empty_val | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (2, 3), List.length args))) in if bool_of_value venv pos test then v1 else v2 (* * Match command. * * \begin{doc} * \twofuns{switch}{match}\index{case}\index{default} * * The \verb+switch+ and \verb+match+ functions perform pattern matching. * * \verb+$(switch , , , ..., , )+ * \verb+$(match , , , ..., , )+ * * The number of \verb+/+ pairs is arbitrary. They strictly * alternate; the total number of arguments to \verb++ must be odd. * * The \verb++ is evaluated to a string, and compared with \verb++. * If it matches, the result of the expression is \verb++. Otherwise * evaluation continues with the remaining patterns until a match is found. * If no pattern matches, the value is the empty string. * * The \verb+switch+ function uses string comparison to compare * the argument with the patterns. For example, the following * expression defines the \verb+FILE+ variable to be either * \verb+foo+, \verb+bar+, or the empty string, depending * on the value of the \verb+OSTYPE+ variable. * * \begin{verbatim} * FILE = $(switch $(OSTYPE), Win32, foo, Unix, bar) * \end{verbatim} * * The \verb+match+ function uses regular expression patterns (see the * \verb+grep+ function). If a match is found, the variables * \verb+$1, $2, ...+ are bound to the substrings matched between * \verb+\(+ and \verb+\)+ delimiters. * The \verb+$0+ variable contains the entire match, and \verb+$*+ * is an array of the matched substrings. * to the matched substrings. * * \begin{verbatim} * FILE = $(match foo_xyz/bar.a, foo_\\\(.*\\\)/\\\(.*\\\)\.a, foo_$2/$1.o) * \end{verbatim} * * The \verb+switch+ and \verb+match+ functions also have an alternate (more usable) * form. * * \begin{verbatim} * match e * case pattern1 * body1 * case pattern2 * body2 * ... * default * bodyd * \end{verbatim} * * If the value of expression \verb+e+ matches \verb+pattern_i+ and no previous pattern, * then \verb+body_i+ is evaluated and returned as the result of the \verb+match+. * The \verb+switch+ function uses string comparison; the \verb+match+ function * uses regular expression matching. * * \begin{verbatim} * match $(FILE) * case $".*\(\.[^\/.]*\)" * println(The string $(FILE) has suffix $1) * default * println(The string $(FILE) has no suffix) * \end{verbatim} * \end{doc} *) (* * String pattern matching. *) let rec eval_match_cases1 compare venv pos loc s cases = match cases with (v, pattern, el, export) :: cases -> if Lm_symbol.eq v case_sym then let pattern = string_of_value venv pos pattern in match compare venv pos loc pattern s with Some venv -> eval_sequence_export_exp venv pos el export | None -> eval_match_cases1 compare venv pos loc s cases else if Lm_symbol.eq v default_sym then eval_sequence_export_exp venv pos el export else raise (OmakeException (loc_pos loc pos, StringVarError ("unknown case", v))) | [] -> venv, ValNone let rec eval_match_cases2 compare venv pos loc s cases = match cases with pattern :: e :: cases -> let pattern = string_of_value venv pos pattern in (match compare venv pos loc pattern s with Some venv -> eval_body_exp venv pos ValNone e | None -> eval_match_cases2 compare venv pos loc s cases) | [v] -> raise (OmakeException (loc_pos loc pos, StringValueError ("match requires an odd number of arguments", v))) | [] -> venv, ValNone let eval_match_exp compare venv pos loc args = let pos = string_pos "eval_match_exp" pos in match args with [ValCases cases; arg] -> let s = string_of_value venv pos arg in eval_match_cases1 compare venv pos loc s cases | arg :: rest -> let s = string_of_value venv pos arg in eval_match_cases2 compare venv pos loc s rest | [] -> venv, ValNone let switch_fun = let compare venv _ _ s1 s2 = if s1 = s2 then Some venv else None in eval_match_exp compare let match_fun = let compare venv pos loc s1 s2 = let lex = try lexer_of_string s1 with Failure err -> let msg = sprintf "Malformed regular expression '%s'" s1 in raise (OmakeException (loc_pos loc pos, StringStringError (msg, err))) in let channel = Lm_channel.of_string s2 in match Lexer.search lex channel with Some (_, _, _, matched, args) -> Some (venv_add_match venv matched args) | None -> None in eval_match_exp compare (* * \begin{doc} * \form{try} * * \begin{verbatim} * try * try-body * catch class1(v1) * catch-body * when expr * when-body * ... * finally * finally-body * \end{verbatim} * * The \verb+try+ form is used for exception handling. * First, the expressions in the \verb+try-body+ are evaluated. * * If evaluation results in a value \verb+v+ without raising an * exception, then the expressions in the \verb+finally-body+ * are evaluated and the value \verb+v+ is returned as the result. * * If evaluation of the \verb+try-body+ results in a exception object \verb+obj+, * the \verb+catch+ clauses are examined in order. When examining \verb+catch+ * clause \verb+catch class(v)+, if the exception object \verb+obj+ * is an instance of the class name \verb+class+, the variable \verb+v+ is bound * to the exception object, and the expressions in the \verb+catch-body+ * are evaluated. * * If a \verb+when+ clause is encountered while a \verb+catch+ body is being evaluated, * the predicate \verb+expr+ is evaluated. If the result is true, evaluation continues * with the expressions in the \verb+when-body+. Otherwise, the next \verb+catch+ * clause is considered for evaluation. * * If evaluation of a \verb+catch-body+ or \verb+when-body+ completes successfully, * returning a value \verb+v+, without encountering another \verb+when+ clause, * then the expressions in the \verb+finally-body+ * are evaluated and the value \verb+v+ is returned as the result. * * There can be any number of \verb+catch+ clauses; the \verb+finally+ clause * is optional. * \end{doc} *) (* * Temporary type for evaluating try blocks. *) type try_exp = TrySuccessExp of ( (venv * value) ) | TryFailureExp of pos * obj * exn (* * Build an object from an OmakeException. * The default object is RuntimeException. *) let object_of_omake_exception venv pos exp = let pos = pp_print_pos stdstr pos; flush_stdstr () in let exp = pp_print_exn stdstr exp; flush_stdstr () in let obj = venv_find_object_or_empty venv runtime_exception_var in let obj = venv_add_field_internal obj pos_sym (ValString pos) in let obj = venv_add_field_internal obj message_sym (ValString exp) in let obj = venv_add_class obj runtime_exception_sym in obj (* * Build an object from an OmakeException. * The default object is RuntimeException. *) let object_of_uncaught_exception venv pos exn = let pos = pp_print_pos stdstr pos; flush_stdstr () in let obj = venv_find_object_or_empty venv runtime_exception_var in let obj = venv_add_field_internal obj pos_sym (ValString pos) in let obj = venv_add_field_internal obj message_sym (ValString (Printexc.to_string exn)) in let obj = venv_add_class obj runtime_exception_sym in obj (* * Exception handling. *) let rec eval_finally_case venv pos result cases = match cases with (v, _, e, export) :: cases when Lm_symbol.eq v finally_sym -> eval_sequence_export venv pos result e export | _ :: cases -> eval_finally_case venv pos result cases | [] -> venv, result (* * We have successfully evaluated a CatchCase. * Search for the following WhenCases. * If a WhenCase fails, go to the following catch case. *) let rec eval_catch_rest venv pos obj result cases = match cases with (v, s, e, export) :: cases when Lm_symbol.eq v when_sym -> let b = bool_of_value venv pos s in if b then let venv, result = eval_sequence_export venv pos result e export in eval_catch_rest venv pos obj result cases else eval_exception venv pos obj cases | _ -> Some (venv, result) and eval_catch_case venv pos v obj e cases export = let venv = venv_add_var venv v (ValObject obj) in let venv, result = eval_sequence_export_exp venv pos e export in eval_catch_rest venv pos obj result cases (* * Find the first CatchCase that matches the object, * and evaluate it. Do not evaluate the finally case. *) and eval_exception venv pos obj cases = match cases with (v, s, e, export) :: cases -> if Lm_symbol.eq v when_sym then eval_exception venv pos obj cases else if Lm_symbol.eq v finally_sym then None else if Lm_symbol.eq v default_sym || venv_instanceof obj v then (* FIXME: BUG: JYH: this binding occurence should be fixed *) let v = VarThis (loc_of_pos pos, Lm_symbol.add (string_of_value venv pos s)) in eval_catch_case venv pos v obj e cases export else eval_exception venv pos obj cases | [] -> None (* * The try block is a little complicated because of the finally * case. Note that if an exception occurs in a CatchCase, the * FinallyCase *still* needs to be evaluated. *) let try_fun venv pos loc args = let pos = string_pos "eval_try_exp" pos in let cases, e = match args with [ValCases cases; e] -> cases, e | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in let e = try let result = eval_body_value_env venv pos e in TrySuccessExp result with OmakeException (pos, exp) as exn -> TryFailureExp (pos, object_of_omake_exception venv pos exp, exn) | UncaughtException (pos, exn) -> TryFailureExp (pos, object_of_uncaught_exception venv pos exn, exn) | RaiseException (pos, obj) as exn -> TryFailureExp (pos, obj, exn) | Return _ | Break _ as exn -> TryFailureExp (pos, object_of_uncaught_exception venv pos exn, exn) in let e = match e with TryFailureExp (pos, obj, _) -> (try match eval_exception venv pos obj cases with Some result -> TrySuccessExp result | None -> e with OmakeException (pos, exp) as exn -> TryFailureExp (pos, object_of_omake_exception venv pos exp, exn) | UncaughtException (pos, exn) -> TryFailureExp (pos, object_of_uncaught_exception venv pos exn, exn) | RaiseException (pos, obj) as exn -> TryFailureExp (pos, obj, exn)) | TrySuccessExp _ -> e in match e with TrySuccessExp ((venv, result)) -> eval_finally_case venv pos result cases | TryFailureExp (_, _, exn) -> ignore (eval_finally_case venv pos ValNone cases); raise exn (* * Raise an exception. * * \begin{doc} * \form{raise} * * \begin{verbatim} * raise exn * exn : Exception * \end{verbatim} * * The \verb+raise+ function raises an exception. * The \verb+exn+ object can be any object. However, * the normal convention is to raise an \hyperobj{Exception}. * * If the exception is never caught, the whole object will be verbosely * printed in the error message. However, if the object is an \verb+Exception+ one * and contains a \verb+message+ field, only that field will be included in the * error message. * \end{doc} *) let raise_fun venv pos loc args = let pos = string_pos "raise" pos in match args with [arg] -> let obj = eval_value venv pos arg in let obj = eval_object venv pos obj in raise (RaiseException (pos, obj)) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Exit the program. * * \begin{doc} * \fun{exit} * * \begin{verbatim} * exit(code) * code : Int * \end{verbatim} * * The \verb+exit+ function terminates \Prog{omake} abnormally. * * \verb+$(exit )+ * * The \verb+exit+ function takes one integer argument, which is exit code. * Non-zero values indicate abnormal termination. * \end{doc} *) let exit_aux f venv pos loc args = let pos = string_pos "exit" pos in let code = flush stdout; flush stderr; match args with [] -> 0 | [s] -> (match values_of_value venv pos s with [i] -> int_of_value venv pos s | [] -> 0 | args -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args)))) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in f loc pos code let exit_fun = exit_aux (fun loc pos code -> raise (ExitException (loc_pos loc pos, code))) let exit_parent_fun = exit_aux (fun loc pos code -> raise (ExitParentException (loc_pos loc pos, code))) (* * Check whether a variable is defined. * * \begin{doc} * \fun{defined} * * \begin{verbatim} * $(defined sequence) : String * sequence : Sequence * \end{verbatim} * * The \verb+defined+ function test whether all the variables in the sequence are * currently defined. For example, the following code defines the \verb+X+ variable * if it is not already defined. * * \begin{verbatim} * if $(not $(defined X)) * X = a b c * export * \end{verbatim} * * It is acceptable to use qualified names. * * \begin{verbatim} * $(defined X.a.b) * $(defined public.X) * \end{verbatim} * \end{doc} *) let defined venv pos loc args = let pos = string_pos "defined" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let b = List.for_all (fun s -> defined_sym venv pos loc s) args in if b then val_true else val_false | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{defined-env} * * \begin{verbatim} * $(defined-env sequence) : String * sequence : String * \end{verbatim} * * The \verb+defined-env+ function tests whether a variable is defined * as part of the process environment. * * For example, the following code adds the \verb+-g+ compile * option if the environment variable \verb+DEBUG+ is defined. * * \begin{verbatim} * if $(defined-env DEBUG) * CFLAGS += -g * export * \end{verbatim} * \end{doc} *) let defined_env venv pos loc args = let pos = string_pos "defined-env" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let b = List.for_all (fun s -> venv_defined_env venv (Lm_symbol.add s)) args in val_of_bool b | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Get a variable from the environment. * * \begin{doc} * \fun{getenv} * * \begin{verbatim} * $(getenv name) : String * $(getenv name, default) : String * \end{verbatim} * * The \verb+getenv+ function gets the value of a variable from * the process environment. The function takes one or two arguments. * * In the single argument form, an exception is raised if the variable * variable is not defined in the environment. In the two-argument form, * the second argument is returned as the result if the value is not * defined. * * For example, the following code defines the variable \verb+X+ * to be a space-separated list of elements of the \verb+PATH+ * environment variable if it is defined, and to \verb+/bin /usr/bin+ * otherwise. * * \begin{verbatim} * X = $(split $(PATHSEP), $(getenv PATH, /bin:/usr/bin)) * \end{verbatim} * * You may also use the alternate form. * \begin{verbatim} * getenv(NAME) * default * \end{verbatim} * \end{doc} *) let getenv venv pos loc args = let pos = string_pos "getenv" pos in let arg, def = match args with [arg] -> arg, None | [(ValBody _) as def; arg] | [arg; def] -> arg, Some def | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let s = string_of_value venv pos arg in try ValString (venv_getenv venv (Lm_symbol.add s)) with Not_found -> match def with Some def -> eval_body_value venv pos def | None -> raise (OmakeException (loc_pos loc pos, StringStringError ("undefined environment variable", s))) (* * \begin{doc} * \fun{setenv} * * \begin{verbatim} * setenv(name, value) * name : String * value : String * \end{verbatim} * * The \verb+setenv+ function sets the value of a variable in * the process environment. Environment variables are scoped * like normal variables. * * \end{doc} *) let setenv venv pos loc args = let pos = string_pos "setenv" pos in match args with [arg1; arg2] -> let v = string_of_value venv pos arg1 in let s = string_of_value venv pos arg2 in let venv = venv_setenv venv (Lm_symbol.add v) s in venv, ValData s | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{unsetenv} * * \begin{verbatim} * unsetenv(names) * names : String Array * \end{verbatim} * * The \verb+unsetenv+ function removes some variable definitions from * the process environment. Environment variables are scoped * like normal variables. * * \end{doc} *) let unsetenv venv pos loc args = let pos = string_pos "unsetenv" pos in match args with [arg] -> let vars = strings_of_value venv pos arg in let venv = List.fold_left (fun venv v -> venv_unsetenv venv (Lm_symbol.add v)) venv vars in venv, ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{get-registry} * * \begin{verbatim} * get-registry(hkey, key, field) : String * get-registry(hkey, key, field, default) : String * hkey : String * key : String * field : String * \end{verbatim} * * The \verb+get-registry+ function retrieves a string value from the * system registry on Win32. On other architectures, there is no * registry. * * The \verb+hive+ (I think that is the right word), indicates which part * of the registry to use. It should be one of the following values. * * \begin{itemize} * \item \verb+HKEY_CLASSES_ROOT+ * \item \verb+HKEY_CURRENT_CONFIG+ * \item \verb+HKEY_CURRENT_USER+ * \item \verb+HKEY_LOCAL_MACHINE+ * \item \verb+HKEY_USERS+ * \end{itemize} * Refer to the Microsoft documentation if you want to know what these mean. * * The \verb+key+ is the field you want to get from the registry. * It should have a form like \verb+A\B\C+ (if you use forward slashes, they will * be converted to backslashes). The field is the sub-field of the key. * * In the 4-argument form, the \verb+default+ is returned on failure. * You may also use the alternate form. * * \begin{verbatim} * get-registry(hkey, key, field) * default * \end{verbatim} * * \end{doc} *) let get_registry venv pos loc args = let pos = string_pos "get-registry" pos in let hkey, key, field, def = match args with [hkey; key; field] -> hkey, key, field, None | [(ValBody _) as def; hkey; key; field] | [hkey; key; field; def] -> hkey, key, field, Some def | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (3, 4), List.length args))) in let hkey = String.uppercase (string_of_value venv pos hkey) in let hkey_code = match hkey with "HKEY_CLASSES_ROOT" -> Lm_unix_util.HKEY_CLASSES_ROOT | "HKEY_CURRENT_CONFIG" -> Lm_unix_util.HKEY_CURRENT_CONFIG | "HKEY_CURRENT_USER" -> Lm_unix_util.HKEY_CURRENT_USER | "HKEY_LOCAL_MACHINE" -> Lm_unix_util.HKEY_LOCAL_MACHINE | "HKEY_USERS" -> Lm_unix_util.HKEY_USERS | s -> raise (OmakeException (loc_pos loc pos, StringStringError ("unknown hkey", s))) in let key = String.copy (string_of_value venv pos key) in let () = for i = 0 to String.length key - 1 do if key.[i] = '/' then key.[i] <- '\\' done in let field = string_of_value venv pos field in try ValString (Lm_unix_util.registry_find hkey_code key field) with Not_found -> match def with Some def -> eval_body_value venv pos def | None -> let s = Printf.sprintf "%s\\%s\\%s" hkey key field in raise (OmakeException (loc_pos loc pos, StringStringError ("key not found", s))) (* * Get a variable from the environment. * * \begin{doc} * \fun{getvar} * * \begin{verbatim} * $(getvar name) : String * \end{verbatim} * * The \verb+getvar+ function gets the value of a variable. * * An exception is raised if the variable * variable is not defined. * * For example, the following code defines X to be the string abc. * * \begin{verbatim} * NAME = foo * foo_1 = abc * X = $(getvar $(NAME)_1) * \end{verbatim} * * It is acceptable to use qualified names. * * \begin{verbatim} * $(getvar X.a.b) * \end{verbatim} * \end{doc} *) let getvar venv pos loc args = let pos = string_pos "getvar" pos in match args with [arg] -> get_sym venv pos loc (string_of_value venv pos arg) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{setvar} * * \begin{verbatim} * setvar(name, value) * name : String * value : String * \end{verbatim} * * The \verb+setvar+ function defines a new variable. For example, the * following code defines the variable \verb+X+ to be the string \verb+abc+. * * \begin{verbatim} * NAME = X * setvar($(NAME), abc) * \end{verbatim} * * It is acceptable to use qualified names. * * \begin{verbatim} * setvar(public.X, abc) * \end{verbatim} * \end{doc} *) let setvar venv pos loc args = let pos = string_pos "setvar" pos in match args with [arg1; arg2] -> let s = string_of_value venv pos arg1 in let venv = add_sym venv pos loc s arg2 in venv, arg2 | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (************************************************************************ * Arrays. * * \begin{doc} * \section{Arrays and sequences} * * \fun{array} * * \begin{verbatim} * $(array elements) : Array * elements : Sequence * \end{verbatim} * * The \verb+array+ function creates an array from a sequence. * If the \verb++ is a string, the elements of the array * are the whitespace-separated elements of the string, respecting * quotes. * * In addition, array variables can be declared as follows. * * \begin{verbatim} * A[] = * * ... * * \end{verbatim} * * In this case, the elements of the array are exactly * \verb++, ..., \verb++, and whitespace is * preserved literally. * \end{doc} *) let array_fun venv pos loc args = let pos = string_pos "array" pos in let args = List.fold_left (fun args arg -> let args' = values_of_value venv pos arg in List.rev_append args' args) [] args in ValArray (List.rev args) (* * Concatenate the strings with a separator. * * \begin{doc} * \fun{split} * * \begin{verbatim} * $(split sep, elements) : Array * sep : String * elements : Sequence * \end{verbatim} * * The \verb+split+ function takes two arguments, a string of separators, and * a string argument. The result is an array of elements determined by * splitting the elements by all occurrence of the separator in the * \verb+elements+ sequence. * * For example, in the following code, the \verb+X+ variable is * defined to be the array \verb+/bin /usr/bin /usr/local/bin+. * * \begin{verbatim} * PATH = /bin:/usr/bin:/usr/local/bin * X = $(split :, $(PATH)) * \end{verbatim} * * The \verb+sep+ argument may be omitted. In this case \verb+split+ breaks its * arguments along the white space. Quotations are not split. * \end{doc} *) let split_fun venv pos loc args = let pos = string_pos "split" pos in let strings = match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.fold_left (fun args s -> List.rev_append (Lm_string_util.tokens_std s) args) [] args in List.rev args | [sep; arg] -> let sep = string_of_value venv pos sep in let args = strings_of_value venv pos arg in let args = List.fold_left (fun args s -> List.rev_append (Lm_string_util.split sep s) args) [] args in List.rev args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in concat_strings strings (* * Concatenate the strings with a separator. * * \begin{doc} * \fun{concat} * * \begin{verbatim} * $(concat sep, elements) : String * sep : String * elements : Sequence * \end{verbatim} * * The \verb+concat+ function takes two arguments, a separator string, and * a sequence of elements. The result is a string formed by concatenating * the elements, placing the separator between adjacent elements. * * For example, in the following code, the \verb+X+ variable is * defined to be the string \verb+foo_x_bar_x_baz+. * * \begin{verbatim} * X = foo bar baz * Y = $(concat _x_, $(X)) * \end{verbatim} * \end{doc} *) let concat_fun venv pos loc args = let pos = string_pos "concat" pos in match args with [sep; arg] -> let sep = string_of_value venv pos sep in let args = strings_of_value venv pos arg in ValData (String.concat sep args) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Length of a list. * * \begin{doc} * \fun{length} * * \begin{verbatim} * $(length sequence) : Int * sequence : Sequence * \end{verbatim} * * The \verb+length+ function returns the number of elements in its argument. * * For example, the expression \verb+$(length a b "c d")+ evaluates to 3. * \end{doc} *) let length_fun venv pos loc args = let pos = string_pos "length" pos in match args with [arg] -> let args = values_of_value venv pos arg in ValInt (List.length args) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Get the nth element of a list. * * \begin{doc} * \fun{nth} * * \begin{verbatim} * $(nth i, sequence) : value * i : Int * sequence : Sequence * raises RuntimeException * \end{verbatim} * * The \verb+nth+ function returns the nth element of its argument, treated as * a list. Counting starts at 0. An exception is raised if the index is not in bounds. * * For example, the expression \verb+$(nth 1, a "b c" d)+ evaluates to \verb+"b c"+. * * \fun{replace-nth} * * \begin{verbatim} * $(replace-nth i, sequence, x) : value * i : Int * sequence : Sequence * x : value * raises RuntimeException * \end{verbatim} * * The \verb+replace-nth+ function replaces the nth element of its argument with a new * value \verb+x+. Counting starts at 0. An exception is raised if the index is not in bounds. * * For example, the expression \verb+$(replace-nth 1, a "b c" d, x)+ evaluates to \verb+a x d+. * \end{doc} *) let nth_fun venv pos loc args = let pos = string_pos "nth" pos in match args with [i; arg] -> let i = int_of_value venv pos i in let args = values_of_value venv pos arg in let len = List.length args in if i < 0 || i >= len then raise (OmakeException (loc_pos loc pos, StringIntError ("nth: index is out of bounds", i))); List.nth args i | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let replace_nth_fun venv pos loc args = let pos = string_pos "replace-nth" pos in match args with [i; arg; x] -> let i = int_of_value venv pos i in let args = values_of_value venv pos arg in let len = List.length args in if i < 0 || i >= len then raise (OmakeException (loc_pos loc pos, StringIntError ("replace-nth: index is out of bounds", i))); concat_array (Lm_list_util.replace_nth i x args) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Get a subrange of a list. * * \begin{doc} * \fun{nth-hd} * * \begin{verbatim} * $(nth-hd i, sequence) : value * i : Int * sequence : Sequence * raises RuntimeException * \end{verbatim} * * The \verb+nth-hd+ function returns the first \verb+i+ elements of * the sequence. An exception is raised if the sequence is not * at least \verb+i+ elements long. * * For example, the expression \verb+$(nth-hd 2, a "b c" d)+ evaluates to \verb+a "b c"+. * * \fun{nth-tl} * * \begin{verbatim} * $(nth-tl i, sequence) : value * i : Int * sequence : Sequence * raises RuntimeException * \end{verbatim} * * The \verb+nth-tl+ function skips \verb+i+ elements of the sequence * and returns the rest. An exception is raised if the sequence is not * at least \verb+i+ elements long. * * For example, the expression \verb+$(nth-tl 1, a "b c" d)+ evaluates to \verb+"b c" d+. * * \fun{subrange} * * \begin{verbatim} * $(subrange off, len, sequent) : value * off : Int * len : Int * sequence : Sequence * raises RuntimeException * \end{verbatim} * * The \verb+subrange+ function returns a subrange of the sequence. * Counting starts at 0. An exception is raised if the specified * range is not in bounds. * * For example, the expression \verb+$(subrange 1, 2, a "b c" d e)+ evaluates to \verb+"b c" d+. * \end{doc} *) let rec nth_hd l_rev l i = if i = 0 then List.rev l_rev else match l with h :: l -> nth_hd (h :: l_rev) l (pred i) | [] -> raise (Invalid_argument "nth_hd") let rec nth_tl l i = if i = 0 then l else match l with _ :: l -> nth_tl l (pred i) | [] -> raise (Invalid_argument "nth_tl") let sub l off len = nth_hd [] (nth_tl l off) len let nth_hd_fun venv pos loc args = let pos = string_pos "nth-hd" pos in match args with [i; arg] -> let i = int_of_value venv pos i in let args = values_of_value venv pos arg in let len = List.length args in if i < 0 || i > len then raise (OmakeException (loc_pos loc pos, StringIntError ("nth-hd: index is out of bounds", i))); ValArray (nth_hd [] args i) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let nth_tl_fun venv pos loc args = let pos = string_pos "nth-tl" pos in match args with [i; arg] -> let i = int_of_value venv pos i in let args = values_of_value venv pos arg in let len = List.length args in if i < 0 || i > len then raise (OmakeException (loc_pos loc pos, StringIntError ("nth-tl: index is out of bounds", i))); ValArray (nth_tl args i) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let subrange_fun venv pos loc args = let pos = string_pos "subrange" pos in match args with [off; len; arg] -> let off = int_of_value venv pos off in let len = int_of_value venv pos len in let args = values_of_value venv pos arg in let alen = List.length args in if off < 0 || len < 0 || off + len > alen then raise (OmakeException (loc_pos loc pos, StringIntError ("one or more indexes are out of bounds", off + len))); ValArray (sub args off len) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 3, List.length args))) (* * Reverse a list. * * \begin{doc} * \fun{rev} * * \begin{verbatim} * $(rev sequence) : Sequence * sequence : Sequence * \end{verbatim} * * The \verb+rev+ function returns the elements of a sequence in reverse order. * For example, the expression \verb+$(rev a "b c" d)+ evaluates to \verb+d "b c" a+. * \end{doc} *) let rev_fun venv pos loc args = let pos = string_pos "rev" pos in match args with [arg] -> let args = values_of_value venv pos arg in ValArray (List.rev args) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{join} * * \begin{verbatim} * $(join sequence1, sequence2) : Sequence * sequence1 : Sequence * sequence2 : Sequence * \end{verbatim} * * The \verb+join+ function joins together the elements of the two sequences. For example, * \verb+$(join a b c, .c .cpp .h)+ evaluates to \verb+a.c b.cpp c.h+. If the two input * sequences have different lengths, the remainder of the longer sequence is copied at the end * of the output unmodified. * \end{doc} * * The function is implemented in Pervasives.om, but it's more appropriate to documment it here. *) (* * \begin{doc} * \fun{string} * * \begin{verbatim} * $(string sequence) : String * sequence : Sequence * \end{verbatim} * * The \verb+string+ function flattens a sequence into a single string. * This is similar to the \verb+concat+ function, but the elements are * separated by whitespace. The result is treated as a unit; whitespace * is significant. * \end{doc} *) let string venv pos loc args = let pos = string_pos "string" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let s = String.concat " " args in ValData s | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{string-length} * * \begin{verbatim} * $(string-length sequence) : Int * sequence : Sequence * \end{verbatim} * * The \verb+string-lenght+ returns a length (number of characters) in * its argument. If the argument is a sequence, it flattens it, so \verb+$(string-length sequence)+ * is equivalent to \verb+$(string-length $(string sequence))+. * \end{doc} *) let string_length venv pos loc args = let pos = string_pos "string-length" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let len = if args = [] then 0 else List.fold_left (fun i s -> i + 1 + String.length s) (-1) args in ValInt len | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \sixfuns{string-escaped}{ocaml-escaped}{html-escaped}{html-pre-escaped}{c-escaped}{id-escaped} * * \begin{verbatim} * $(string-escaped sequence) : String Array * $(ocaml-escaped sequence) : String Array * $(html-escaped sequence) : String Array * $(html-pre-escaped sequence) : String Array * $(c-escaped sequence) : String Array * $(hex-escaped sequence) : StringArray * sequence : Array * \end{verbatim} * * The \verb+string-escaped+ function converts each element of its * argument to a string, escaping it, if it contains symbols that are * special to \OMake. * The special characters include \verb+:()\,$'"#+ and whitespace. * This function can be used in scanner rules to escape file names before * printing then to \verb+stdout+. * * The \verb+ocaml-escaped+ function converts each element of its * argument to a string, escaping characters that are special to OCaml. * * The \verb+c-escaped+ function converts a string to a form that * can be used as a string constant in C. * * The \verb+id-escaped+ function turns a string into an identifier that * may be used in \OMake. * * The \verb+html-escaped+ function turns a literal string into a form acceptable * as HTML. The \verb+html-pre-escaped+ function is similar, but it does not * translate newlines into \verb+
+. * * \begin{verbatim} * println($(string $(string-escaped $"a b" $"y:z"))) * a\ b y\:z * \end{verbatim} * \end{doc} *" *) (* * Generic escaping functions *) let escape_length test extra s = let len = String.length s in let rec collect amount i = if i = len then amount else if test s.[i] then collect (amount + extra) (i + 1) else collect (amount + 1) (i + 1) in collect 0 0 let copy_string test add_escape esc_length src_length s = let esc_string = String.create esc_length in let rec copy esc_index src_index = if src_index <> src_length then let c = s.[src_index] in if test c then begin let extra_length = add_escape esc_string esc_index c in copy (esc_index + extra_length) (src_index + 1) end else begin esc_string.[esc_index] <- c; copy (esc_index + 1) (src_index + 1) end in copy 0 0; esc_string (* * Escape special symbols. * NB: Must be compatible with the Omake_ast_lex.parse_deps function! *) let is_escape_char c = match c with ' ' | '\t' | '\n' | ':' | ')' | '(' | ',' | '$' | '\'' | '\"' | '\\' | '#' -> true | _ -> false let add_single_escape s i c = s.[i] <- '\\'; s.[i + 1] <- c; 2 let single_escaped s = let src_length = String.length s in let esc_length = escape_length is_escape_char 2 s in if esc_length = src_length then s else copy_string is_escape_char add_single_escape esc_length src_length s (* * Escape in a way that produces a valid identifier. *) let id_is_escape c = match c with 'A'..'Z' | 'a'..'z' | '0'..'9' -> false | _ -> true let id_char c = if c < 10 then Char.chr (c + Char.code '0') else Char.chr (c + Char.code 'a') let id_add_quote s i c = s.[i] <- '_'; s.[i + 1] <- id_char ((Char.code c) lsr 4); s.[i + 2] <- id_char ((Char.code c) land 0x0f); 3 let id_single_escaped s = let src_length = String.length s in let esc_length = escape_length id_is_escape 3 s in if esc_length = src_length then s else copy_string id_is_escape id_add_quote esc_length src_length s let any_escaped escaped venv pos loc args = let pos = string_pos "string-escaped" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map (fun s -> ValData (escaped s)) args in ValArray args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let string_escaped = any_escaped single_escaped let ocaml_escaped = any_escaped String.escaped let c_escaped = any_escaped Lm_string_util.c_escaped let id_escaped = any_escaped id_single_escaped let html_escaped = any_escaped Lm_string_util.html_escaped let html_pre_escaped = any_escaped Lm_string_util.html_pre_escaped (* * \begin{doc} * \twofuns{decode-uri}{encode-uri} * * \begin{verbatim} * $(decode-uri sequence) : sequence * sequence : Sequence * \end{verbatim} * * These two functions perform URI encoding, where special characters * are represented by hexadecimal characters. * * \begin{verbatim} * osh> s = $(encode-uri $'a b~c') * "a+b%7ec" * osh> decode-uri($s) * "a b~c" * \end{verbatim} * \end{doc} *) let decode_uri = any_escaped Lm_string_util.decode_hex_name let encode_uri = any_escaped Lm_string_util.encode_hex_name (* * \begin{doc} * \fun{quote} * * \begin{verbatim} * $(quote sequence) : String * sequence : Sequence * \end{verbatim} * * The \verb+quote+ function flattens a sequence into a single string * and adds quotes around the string. Inner quotation symbols are * escaped. * * For example, the expression \verb+$(quote a "b c" d)+ evaluates * to \verb+"a \"b c\" d"+, and \verb+$(quote abc)+ evaluates to * \verb+"abc"+. * \end{doc} *) let quote venv pos loc args = let pos = string_pos "quote" pos in match args with [arg] -> let argv = strings_of_value venv pos arg in let s = Lm_string_util.quote_argv argv in ValData s | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{quote-argv} * * \begin{verbatim} * $(quote-argv sequence) : String * sequence : Sequence * \end{verbatim} * * The \verb+quote-argv+ function flattens a sequence into a single string, * and adds quotes around the string. The quotation is formed so that * a command-line parse can separate the string back into its components. * \end{doc} *) let quote_argv venv pos loc args = let pos = string_pos "quote-argv" pos in match args with [arg] -> let argv = strings_of_value venv pos arg in let s = Lm_string_util.concat_argv argv in ValData s | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{html-string} * * \begin{verbatim} * $(html-string sequence) : String * sequence : Sequence * \end{verbatim} * * The \verb+html-string+ function flattens a sequence into a single string, * and escaped special HTML characters. * This is similar to the \verb+concat+ function, but the elements are * separated by whitespace. The result is treated as a unit; whitespace * is significant. * \end{doc} *) let html_string venv pos loc args = let pos = string_pos "html-string" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let s = String.concat " " args in let s = Lm_string_util.html_escaped_nonwhite s in ValData s | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Add a suffix. * * \begin{doc} * \fun{addsuffix} * * \begin{verbatim} * $(addsuffix suffix, sequence) : Array * suffix : String * sequence : Sequence * \end{verbatim} * * The \verb+addsuffix+ function adds a suffix to each component of sequence. * The number of elements in the array is exactly the same as the number of * elements in the sequence. * * For example, \verb+$(addsuffix .c, a b "c d")+ evaluates to \verb+a.c b.c "c d".c+. * \end{doc} *) let addsuffix venv pos loc args = let pos = string_pos "addsuffix" pos in match args with [suffix; arg] -> let args = values_of_value venv pos arg in let args = List.map (fun v -> ValSequence [v; suffix]) args in ValArray args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Add a suffix. * * \begin{doc} * \fun{mapsuffix} * * \begin{verbatim} * $(mapsuffix suffix, sequence) : Array * suffix : value * sequence : Sequence * \end{verbatim} * * The \verb+mapsuffix+ function adds a suffix to each component of sequence. * It is similar to \verb+addsuffix+, but uses array concatenation instead * of string concatenation. The number of elements in the array is * twice the number of elements in the sequence. * * For example, \verb+$(mapsuffix .c, a b "c d")+ evaluates to \verb+a .c b .c "c d" .c+. * \end{doc} *) let mapsuffix venv pos loc args = let pos = string_pos "mapsuffixe" pos in match args with [suffix; arg] -> let args = values_of_value venv pos arg in let args = List.map (fun v -> ValArray [v; suffix]) args in ValArray args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Add all suffixes. * * \begin{doc} * \fun{addsuffixes} * * \begin{verbatim} * $(addsuffixes suffixes, sequence) : Array * suffixes : Sequence * sequence : Sequence * \end{verbatim} * * The \verb+addsuffixes+ function adds all suffixes in its first argument * to each component of a sequence. If \verb+suffixes+ has \verb+n+ elements, * and \verb+sequence+ has \verb+m+ elements, the the result has \verb+n * m+ elements. * * For example, the \verb+$(addsuffixes .c .o, a b c)+ expressions evaluates to * \verb+a.c a.o b.c b.o c.o c.a+. * \end{doc} *) let addsuffixes venv pos loc args = let pos = string_pos "addsuffixes" pos in match args with [suffix; arg] -> let suffixes = strings_of_value venv pos suffix in let suffixes = List.map (fun s -> ValString s) suffixes in let args = values_of_value venv pos arg in let args = List.map (fun suffix -> List.map (fun s -> ValSequence [s; suffix]) args) suffixes in ValArray (List.flatten args) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{removeprefix} * * \begin{verbatim} * $(removeprefix prefix, sequence) : Array * prefix : String * sequence : Array * \end{verbatim} * * The \verb+removeprefix+ function removes a prefix from each component * of a sequence. * \end{doc} *) let removeprefix venv pos loc args = let pos = string_pos "removeprefix" pos in match args with [pre; arg] -> let pre = string_of_value venv pos pre in let args = strings_of_value venv pos arg in let plen = String.length pre in let args = List.map (fun s -> if Lm_string_util.equal_substring s 0 pre then String.sub s plen (String.length s - plen) else s) args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Remove suffixes. * * \begin{doc} * \fun{removesuffix} * * \begin{verbatim} * $(removesuffix sequence) : Array * sequence : String * \end{verbatim} * * The \verb+removesuffix+ function removes the suffixes from each component * of a sequence. * * For example, \verb+$(removesuffix a.c b.foo "c d")+ expands to \verb+a b "c d"+. * \end{doc} *) let removesuffix venv pos loc args = let pos = string_pos "removesuffix" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map Lm_filename_util.root args in concat_strings args | [suffix; arg] -> let suffix = string_of_value venv pos suffix in let args = strings_of_value venv pos arg in let slen = String.length suffix in let args = List.map (fun s -> let len = String.length s in let off = len - slen in if Lm_string_util.equal_substring s off suffix then String.sub s 0 off else s) args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 2), List.length args))) (* * Replace suffixes. * * \begin{doc} * \fun{replacesuffixes} * * \begin{verbatim} * $(replacesuffixes old-suffixes, new-suffixes, sequence) : Array * old-suffixes : Sequence * new-suffixes : Sequence * sequence : Sequence * \end{verbatim} * * The \verb+replacesuffixes+ function modifies the suffix of each component * in sequence. The \verb+old-suffixes+ and \verb+new-suffixes+ sequences * should have the same length. * * For example, \verb+$(replacesuffixes .h .c, .o .o, a.c b.h c.z)+ expands to \verb+a.o b.o c.z+. * \end{doc} *) let replacesuffixes venv pos loc args = let pos = string_pos "replacesuffixes" pos in match args with [old_suffixes; new_suffixes; files] -> let old_suffixes = strings_of_value venv pos old_suffixes in let new_suffixes = strings_of_value venv pos new_suffixes in let files = strings_of_value venv pos files in let len1 = List.length old_suffixes in let len2 = List.length new_suffixes in let _ = if len1 <> len2 then raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact len1, len2))) in let table = List.fold_left2 StringTable.add StringTable.empty old_suffixes new_suffixes in let files = List.map (fun file -> let root, old_suffix = Lm_filename_util.split file in try let new_suffix = StringTable.find table old_suffix in root ^ new_suffix with Not_found -> file) files in concat_strings files | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 3, List.length args))) (* * Add a prefix. * * \begin{doc} * \fun{addprefix} * * \begin{verbatim} * $(addprefix prefix, sequence) : Array * prefix : String * sequence : Sequence * \end{verbatim} * * The \verb+addprefix+ function adds a prefix to each component of a sequence. * The number of element in the result array is exactly the same as the number * of elements in the argument sequence. * * For example, \verb+$(addprefix foo/, a b "c d")+ evaluates to \verb+foo/a foo/b foo/"c d"+. * \end{doc} *) let addprefix venv pos loc args = let pos = string_pos "addprefix" pos in match args with [prefix; arg] -> let args = values_of_value venv pos arg in let args = List.map (fun v -> ValSequence [prefix; v]) args in ValArray args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Add a prefix. * * \begin{doc} * \fun{mapprefix} * * \begin{verbatim} * $(mapprefix prefix, sequence) : Array * prefix : String * sequence : Sequence * \end{verbatim} * * The \verb+mapprefix+ function adds a prefix to each component of a sequence. * It is similar to \verb+addprefix+, but array concatenation is used instead of * string concatenation. The result array contains twice as many elements * as the argument sequence. * * For example, \verb+$(mapprefix foo, a b "c d")+ expands to \verb+foo a foo b foo "c d"+. * \end{doc} *) let mapprefix venv pos loc args = let pos = string_pos "mapprefix" pos in match args with [prefix; arg] -> let args = values_of_value venv pos arg in let args = List.map (fun v -> ValArray [prefix; v]) args in ValArray args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Add both prefix and suffix. * * \begin{doc} * \fun{add-wrapper} * * \begin{verbatim} * $(add-wrapper prefix, suffix, sequence) : Array * prefix : String * suffix : String * sequence : Sequence * \end{verbatim} * * The \verb+add-wrapper+ functions adds both a prefix and a suffix to each component of a sequence. * For example, the expression \verb+$(add-wrapper dir/, .c, a b)+ evaluates to * \verb+dir/a.c dir/b.c+. String concatenation is used. The array result * has the same number of elements as the argument sequence. * \end{doc} *) let add_wrapper venv pos loc args = let pos = string_pos "add-wrapper" pos in match args with [prefix; suffix; arg] -> let args = values_of_value venv pos arg in let args = List.map (fun s -> ValSequence [prefix; s; suffix]) args in ValArray args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 3, List.length args))) (* * Eliminate duplicates. * * \begin{doc} * \fun{set} * * \begin{verbatim} * $(set sequence) : Array * sequence : Sequence * \end{verbatim} * * The \verb+set+ function sorts a set of string components, eliminating duplicates. * * For example, \verb+$(set z y z "m n" w a)+ expands to \verb+"m n" a w y z+. * \end{doc} *) let set venv pos loc args = let pos = string_pos "set" pos in match args with [files] -> let files = strings_of_value venv pos files in let files = List.fold_left LexStringSet.add LexStringSet.empty files in let files = LexStringSet.fold (fun strings s -> ValString s :: strings) [] files in ValArray (List.rev files) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Set membership. * * \begin{doc} * \fun{mem} * * \begin{verbatim} * $(mem elem, sequence) : Boolean * elem : String * sequence : Sequence * \end{verbatim} * * The \verb+mem+ function tests for membership in a sequence. * * For example, \verb+$(mem "m n", y z "m n" w a)+ evaluates to \verb+true+, * while \verb+$(mem m n, y z "m n" w a)+ evaluates to \verb+false+. * \end{doc} *) let mem venv pos loc args = let pos = string_pos "mem" pos in match args with [s; set] -> let s = Lm_string_util.trim (string_of_value venv pos s) in let set = strings_of_value venv pos set in val_of_bool (List.mem s set) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Set intersection. * * \begin{doc} * \fun{intersection} * * \begin{verbatim} * $(intersection sequence1, sequence2) : Array * sequence1 : Sequence * sequence2 : Sequence * \end{verbatim} * * The \verb+intersection+ function takes two arguments, treats them * as sets of strings, and computes their intersection. The order of the result * is undefined, and it may contain duplicates. Use the \verb+set+ * function to sort the result and eliminate duplicates in the result * if desired. * * For example, the expression \verb+$(intersection c a b a, b a)+ evaluates to * \verb+a b a+. * \end{doc} *) let intersection venv pos loc args = let pos = string_pos "intersection" pos in let rec intersect l = function h :: t -> if List.mem h l then h :: intersect l t else intersect l t | [] -> [] in match args with [files1; files2] -> let files1 = strings_of_value venv pos files1 in let files2 = strings_of_value venv pos files2 in let files = intersect files1 files2 in ValArray (List.map (fun s -> ValString s) files) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{intersects} * * \begin{verbatim} * $(intersects sequence1, sequence2) : Boolean * sequence1 : Sequence * sequence2 : Sequence * \end{verbatim} * * The \verb+intersects+ function tests whether two sets have a non-empty intersection. * This is slightly more efficient than computing the intersection and testing whether * it is empty. * * For example, the expression \verb+$(intersects a b c, d c e)+ evaluates to \verb+true+, * and \verb+$(intersects a b c a, d e f)+ evaluates to \verb+false+. * \end{doc} *) let intersects venv pos loc args = let pos = string_pos "intersects" pos in let rec intersects l = function h::t -> List.mem h l || intersects l t | [] -> false in match args with [files1; files2] -> let files1 = strings_of_value venv pos files1 in let files2 = strings_of_value venv pos files2 in val_of_bool (intersects files1 files2) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Set subtraction. * * \begin{doc} * \fun{set-diff} * * \begin{verbatim} * $(set-diff sequence1, sequence2) : Array * sequence1 : Sequence * sequence2 : Sequence * \end{verbatim} * * The \verb+set-diff+ function takes two arguments, treats them * as sets of strings, and computes their difference (all the elements of the * first set that are not present in the second one). The order of the result * is undefined and it may contain duplicates. Use the \verb+set+ * function to sort the result and eliminate duplicates in the result * if desired. * * For example, the expression \verb+$(set-diff c a b a e, b a)+ evaluates to * \verb+c e+. * \end{doc} *) let set_diff venv pos loc args = let pos = string_pos "set_diff" pos in let rec diff l = function h :: t -> if List.mem h l then diff l t else h :: diff l t | [] -> [] in match args with [files1; files2] -> let files1 = strings_of_value venv pos files1 in let files2 = strings_of_value venv pos files2 in let files = diff files2 files1 in ValArray (List.map (fun s -> ValString s) files) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Include all files that do not match the pattern. * * \begin{doc} * \fun{filter} * * \begin{verbatim} * $(filter patterns, sequence) : Array * patterns : Sequence * sequence : Sequence * \end{verbatim} * * The \verb+filter+ function picks elements from a sequence. * The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard * \verb+%+ character. * * For example \verb+$(filter %.h %.o, a.c x.o b.h y.o "hello world".c)+ evaluates to \verb+x.o b.h y.o+. * \end{doc} *) let compile_patterns venv loc pos patterns = let patterns = strings_of_value venv pos patterns in let rec f = function [] -> (fun f -> false) | pattern :: patterns -> let f = f patterns in if is_wild pattern then let wild = wild_compile_in pattern in (fun s -> wild_matches wild s || f s) else (fun s -> s = pattern || f s) in f patterns let filter venv pos loc args = let pos = string_pos "filter" pos in match args with [patterns; arg] -> let args = strings_of_value venv pos arg in let args = List.filter (compile_patterns venv loc pos patterns) args in ValArray (List.map (fun s -> ValString s) args) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Include all files that do not match the pattern. * * \begin{doc} * \fun{filter-out} * * \begin{verbatim} * $(filter-out patterns, sequence) : Array * patterns : Sequence * sequence : Sequence * \end{verbatim} * * The \verb+filter-out+ function removes elements from a sequence. * The patterns is a non-empty sequence of patterns, each may contain one occurrence of the wildcard * \verb+%+ character. * * For example \verb+$(filter-out %.c %.h, a.c x.o b.h y.o "hello world".c)+ evaluates to \verb+x.o y.o+. * \end{doc} *) let filter_out venv pos loc args = let pos = string_pos "filter-out" pos in match args with [patterns; arg] -> let args = strings_of_value venv pos arg in let f = compile_patterns venv loc pos patterns in let args = List.filter (fun s -> not (f s)) args in ValArray (List.map (fun s -> ValString s) args) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Capitalize some words. * * \begin{doc} * \fun{capitalize} * * \begin{verbatim} * $(capitalize sequence) : Array * sequence : Sequence * \end{verbatim} * * The \verb+capitalize+ function capitalizes each word in a sequence. * For example, \verb+$(capitalize through the looking Glass)+ evaluates to * \verb+Through The Looking Glass+. * \end{doc} *) let capitalize venv pos loc args = let pos = string_pos "capitalize" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map String.capitalize args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Uncapitalize some words. * * \begin{doc} * \fun{uncapitalize} * * \begin{verbatim} * $(uncapitalize sequence) : Array * sequence : Sequence * \end{verbatim} * * The \verb+uncapitalize+ function uncapitalizes each word in its argument. * * For example, \verb+$(uncapitalize through the looking Glass)+ evaluates to * \verb+through the looking glass+. * \end{doc} *) let uncapitalize venv pos loc args = let pos = string_pos "uncapitalize" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map String.uncapitalize args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Capitalize some words. * * \begin{doc} * \fun{uppercase} * * \begin{verbatim} * $(uppercase sequence) : Array * sequence : Sequence * \end{verbatim} * * The \verb+uppercase+ function converts each word in a sequence to uppercase. * For example, \verb+$(uppercase through the looking Glass)+ evaluates to * \verb+THROUGH THE LOOKING GLASS+. * \end{doc} *) let uppercase venv pos loc args = let pos = string_pos "uppercase" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map String.uppercase args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Uncapitalize some words. * * \begin{doc} * \fun{lowercase} * * \begin{verbatim} * $(lowercase sequence) : Array * sequence : Sequence * \end{verbatim} * * The \verb+lowercase+ function reduces each word in its argument to lowercase. * * For example, \verb+$(lowercase through tHe looking Glass)+ evaluates to * \verb+through the looking glass+. * \end{doc} *) let lowercase venv pos loc args = let pos = string_pos "lowercase" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let args = List.map String.lowercase args in concat_strings args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{system} * * \begin{verbatim} * system(s) * s : Sequence * \end{verbatim} * * The \verb+system+ function is used to evaluate a shell expression. * This function is used internally by \Prog{omake} to evaluate * shell commands. * * For example, the following program is equivalent to the * expression \verb+system(ls foo)+. * * \begin{verbatim} * ls foo * \end{verbatim} * \end{doc} *) let system venv pos loc args = let pos = string_pos "system" pos in match args with [arg] -> eval_shell_exp venv pos loc arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Shell command. * * \begin{doc} * \fun{shell} * * \begin{verbatim} * $(shell command) : Array * $(shella command) : Array * $(shell-code command) : Int * command : Sequence * \end{verbatim} * * The \verb+shell+ function evaluates a command using the command shell, * and returns the whitespace-separated words of the standard output as the result. * * The \verb+shella+ function acts similarly, but it returns the lines * as separate items in the array. * * The \verb+shell-code+ function returns the exit code. The output is not * diverted. * * For example, if the current directory contains the files \verb+OMakeroot+, * \verb+OMakefile+, and \verb+hello.c+, then \verb+$(shell ls)+ evaluates to * \verb+hello.c OMakefile OMakeroot+ (on a Unix system). * \end{doc} *) let shell_aux venv pos loc args = let pos = string_pos "shell" pos in match args with [arg] -> eval_shell_output venv pos loc arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let shell venv pos loc args = let s = shell_aux venv pos loc args in let args = values_of_value venv pos (ValString s) in concat_array args let shella venv pos loc args = let s = shell_aux venv pos loc args in let len = String.length s in let buf = Buffer.create 32 in let flush lines = let s = Buffer.contents buf in Buffer.clear buf; if s = "" then lines else ValString s :: lines in let rec collect lines i = if i = len then flush lines else match s.[i] with '\r' | '\n' -> collect (flush lines) (succ i) | c -> Buffer.add_char buf c; collect lines (succ i) in ValArray (List.rev (collect [] 0)) let shell_code venv pos loc args = let pos = string_pos "shell-code" pos in let venv = venv_add_var venv abort_on_command_error_var val_false in let _, result = match args with [arg] -> eval_shell_exp venv pos loc arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in match result with ValInt _ -> result | ValOther (ValExitCode i) -> ValInt i | _ -> ValInt 0 (* * Exports. * \begin{doc} * \fun{export} * The \verb+export+ function allows one to capture the current environment in a variable. * * For example, the following code: * \begin{verbatim} * A = 1 * B = 1 * C = 1 * SAVE_ENV = $(export A B) * A = 2 * B = 2 * C = 2 * export($(SAVE_ENV)) * println($A $B $C) * \end{verbatim} * will print \verb+1 1 2+. * * The arguments to this function are interpreted the exact same way as the arguments to the \verb+export+ * special form (see Section~\ref{section:export}). * \end{doc} *) let export venv pos loc args = let pos = string_pos "export" pos in match args with [ValOther (ValEnv (hand, export))] -> let venv_new = venv_find_environment venv pos hand in let venv = add_exports venv venv_new pos export in venv, ValNone | [vars] -> let exports = List.map (function ".PHONY" -> ExportPhonies | ".RULE" -> ExportRules | v -> ExportVar (VarGlobal (loc, Lm_symbol.add v))) (strings_of_value venv pos vars) in let hand = venv_add_environment venv in venv, ValOther (ValEnv (hand, ExportList exports)) | [] -> let hand = venv_add_environment venv in venv, ValOther (ValEnv (hand, ExportAll)) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (0, 1), List.length args))) (* * Loop. * \begin{doc} * \hypertarget{while}{} * \fun{while} * * \begin{verbatim} * while * * \end{verbatim} * * --or-- * * \begin{verbatim} * while * case * * ... * case * * default * * \end{verbatim} * * The loop is executed while the test is true. * In the first form, the \verb++ is executed on every loop iteration. * In the second form, the body \verb++ is selected, as the first * case where the test \verb++ is true. If none apply, the optional * default case is evaluated. If no cases are true, the loop exits. * The environment is automatically exported. * * Examples. * * Iterate for \verb+i+ from \verb+0+ to \verb+9+. * * \begin{verbatim} * i = 0 * while $(lt $i, 10) * echo $i * i = $(add $i, 1) * \end{verbatim} * * The following example is equivalent. * * \begin{verbatim} * i = 0 * while true * case $(lt $i, 10) * echo $i * i = $(add $i, 1) * \end{verbatim} * * The following example is similar, but some special cases are printed. * value is printed. * * \begin{verbatim} * i = 0 * while $(lt $i, 10) * case $(equal $i, 0) * echo zero * case $(equal $i, 1) * echo one * default * echo $i * \end{verbatim} * * The \hyperfun{break} can be used to break out of the \verb+while+ loop * early. * \end{doc} *) let rec eval_while_cases venv pos loc orig_cases arg cases = match cases with (v, pattern, e, export) :: cases -> if Lm_symbol.eq v case_sym && bool_of_value venv pos pattern || Lm_symbol.eq v default_sym then let venv, _ = eval_sequence_exp venv pos e in while_loop venv pos loc orig_cases arg else eval_while_cases venv pos loc orig_cases arg cases | [] -> venv and while_loop venv pos loc cases arg = if bool_of_value venv pos arg then eval_while_cases venv pos loc cases arg cases else venv let while_fun venv pos loc args = let pos = string_pos "while" pos in let cases, arg = match args with [ValCases cases; arg] -> cases, arg | [_; _] -> raise (OmakeException (loc_pos loc pos, SyntaxError "while loop")) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in let venv = try while_loop venv pos loc cases arg with Break (_, venv) -> venv in venv, ValNone (* * \begin{doc} * \hypertarget{break}{} * \fun{break} * * \begin{verbatim} * break * \end{verbatim} * * Terminate execution of the innermost loop, returning the current state. * \end{doc} *) let break venv pos loc args = raise (Break (loc, venv)) (* * \begin{doc} * \twofuns{random}{random-init} * * \begin{verbatim} * random-init(i) * i : Int * random() : Int * \end{verbatim} * * Produce a random number. The numbers are pseudo-random, * and are not cryptographically secure. * * The generator is initialized form semi-random system data. * Subsequent runs should produce different results. * The \verb+rando-init+ function can be used to return * the generator to a known state. * \end{doc} *) let () = Random.self_init () let random venv pos loc args = ValInt (Random.bits ()) let random_init venv pos loc args = let pos = string_pos "random-init" pos in match args with [arg] -> let i = int_of_value venv pos arg in Random.init i; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (************************************************************************ * Register. *) let () = let builtin_vars = let user = try Unix.getlogin () with Unix.Unix_error _ | Not_found -> "nobody" in ["OS", (fun _ -> ValData Sys.os_type); "OSTYPE", (fun _ -> ValData Sys.os_type); "SYSNAME", (fun _ -> ValData Lm_uname.sysname); "NODENAME", (fun _ -> ValData Lm_uname.nodename); "OS_VERSION", (fun _ -> ValData Lm_uname.version); "OS_RELEASE", (fun _ -> ValData Lm_uname.release); "MACHINE", (fun _ -> ValData Lm_uname.machine); "HOST", (fun _ -> ValData Lm_uname.nodename); "OMAKE_VERSION", (fun _ -> ValData Omake_magic.version); "USER", (fun _ -> ValData user); "PID", (fun _ -> ValInt (Unix.getpid ())); "HOME", (fun venv -> ValDir (venv_intern_dir venv home_dir)); "VERBOSE", (fun venv -> val_of_bool (Omake_options.opt_verbose (venv_options venv))); (* ZZZ: Used to be defined in Common.om *) "SCANNER_MODE", (fun _ -> ValData "enabled"); "ABORT_ON_COMMAND_ERROR", (fun _ -> val_true); (* ZZZ: needs documentation *) "ALLOW_EMPTY_SUBDIRS", (fun _ -> val_false); "CREATE_SUBDIRS", (fun _ -> val_false); "EXIT_ON_UNCAUGHT_EXCEPTION", (fun _ -> val_false); "AUTO_REHASH", (fun _ -> val_false); ] in let builtin_funs = [true, "addprefix", addprefix, ArityExact 2; true, "mapprefix", mapprefix, ArityExact 2; true, "removeprefix", removeprefix, ArityExact 2; true, "addsuffix", addsuffix, ArityExact 2; true, "mapsuffix", mapsuffix, ArityExact 2; true, "addsuffixes", addsuffixes, ArityExact 2; true, "removesuffix", removesuffix, ArityRange (1, 2); true, "replacesuffixes", replacesuffixes, ArityExact 3; (* String operations *) true, "string", string, ArityExact 1; true, "string-escaped", string_escaped, ArityExact 1; true, "string-length", string_length, ArityExact 1; true, "ocaml-escaped", ocaml_escaped, ArityExact 1; true, "c-escaped", c_escaped, ArityExact 1; true, "id-escaped", id_escaped, ArityExact 1; true, "html-escaped", html_escaped, ArityExact 1; true, "html-pre-escaped", html_pre_escaped, ArityExact 1; true, "decode-uri", decode_uri, ArityExact 1; true, "encode-uri", encode_uri, ArityExact 1; true, "quote", quote, ArityExact 1; true, "quote-argv", quote_argv, ArityExact 1; true, "html-string", html_string, ArityExact 1; true, "add-wrapper", add_wrapper, ArityExact 3; true, "capitalize", capitalize, ArityExact 1; true, "uncapitalize", uncapitalize, ArityExact 1; true, "lowercase", lowercase, ArityExact 1; true, "uppercase", uppercase, ArityExact 1; (* System operations *) true, "getenv", getenv, ArityRange (1, 2); true, "defined-env", defined_env, ArityExact 1; true, "exit", exit_fun, ArityRange (0, 1); true, "exit-parent", exit_parent_fun, ArityRange (0, 1); true, "raise", raise_fun, ArityExact 1; true, "get-registry", get_registry, ArityRange (3, 4); (* Normal variables *) true, "getvar", getvar, ArityExact 1; (* Logic *) true, "not", not_fun, ArityExact 1; false, "or", or_fun, ArityAny; false, "and", and_fun, ArityAny; true, "equal", equal, ArityExact 2; true, "if", if_fun, ArityRange (2, 3); true, "defined", defined, ArityExact 1; (* List operations *) true, "array", array_fun, ArityAny; true, "split", split_fun, ArityRange (1, 2); true, "concat", concat_fun, ArityExact 2; true, "filter", filter, ArityExact 2; true, "filter-out", filter_out, ArityExact 2; true, "nth", nth_fun, ArityExact 2; true, "nth-hd", nth_hd_fun, ArityExact 2; true, "nth-tl", nth_tl_fun, ArityExact 2; true, "replace-nth", replace_nth_fun, ArityExact 3; true, "subrange", subrange_fun, ArityExact 3; true, "length", length_fun, ArityExact 1; true, "rev", rev_fun, ArityExact 1; (* Set operations *) true, "set", set, ArityExact 1; true, "mem", mem, ArityExact 2; true, "intersection", intersection, ArityExact 2; true, "intersects", intersects, ArityExact 2; true, "set-diff", set_diff, ArityExact 2; (* Shell command *) true, "shell", shell, ArityExact 1; true, "shella", shella, ArityExact 1; true, "shell-code", shell_code, ArityExact 1; true, "break", break, ArityExact 0; true, "random", random, ArityExact 0; true, "random-init", random_init, ArityExact 1] in let builtin_kfuns = [true, "setenv", setenv, ArityExact 2; true, "unsetenv", unsetenv, ArityExact 1; true, "setvar", setvar, ArityExact 2; false, "switch", switch_fun, ArityAny; false, "match", match_fun, ArityAny; false, "while", while_fun, ArityExact 2; false, "try", try_fun, ArityExact 2; true, "export", export, ArityExact 0; true, "system", system, ArityExact 1; ] in let builtin_info = { builtin_empty with builtin_vars = builtin_vars; builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_shell.ml0000664000152300015230000003240710630116336017740 0ustar jyhjyh(* * Builtin shell operations. * * \begin{doc} * \input{omake-shell} * * \section{Basic builtin functions} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_location open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_node_sig open Omake_node open Omake_value open Omake_state open Omake_symbol open Omake_builtin open Omake_shell_type open Omake_value_type open Omake_builtin_type open Omake_builtin_util module Pos = MakePos (struct let name = "Omake_builtin_io" end) open Pos (* * The string should be a job identifier. *) let pid_of_string pos s = try int_of_string s with Invalid_argument _ | Failure _ -> let pos = string_pos "pid_of_string" pos in raise (OmakeException (pos, StringStringError ("not a process identifier", s))) (* * Signal numbers. *) let signal_of_string s = match String.uppercase s with "-ABRT" -> SigAbrt | "-ALRM" -> SigAlrm | "-HUP" -> SigHup | "-ILL" -> SigIll | "-INT" -> SigInt | "-KILL" -> SigKill | "-QUIT" -> SigQuit | "-SEGV" -> SigSegv | "-TERM" -> SigTerm | "-USR1" -> SigUsr1 | "-USR2" -> SigUsr2 | "-CHLD" -> SigChld | "-STOP" -> SigStop | "-TSTP" -> SigTstp | "-TTIN" -> SigTtin | "-TTOU" -> SigTtou | "-VTALRM" -> SigVTAlrm | "-PROF" -> SigProf | _ -> let len = String.length s in if len > 1 && s.[0] = '-' then SigNum (int_of_string (String.sub s 1 (len - 1))) else raise (Failure "signal_of_string") let signal_of_string pos s = try signal_of_string s with Failure _ -> let pos = string_pos "signal_of_string" pos in raise (OmakeException (pos, StringStringError ("not a signal", s))) (* * Print some text. * * \begin{doc} * \fun{echo} * * The \verb+echo+ function prints a string. * * \begin{verbatim} * $(echo ) * echo * \end{verbatim} * \end{doc} *) let echo_fun venv pos loc args = let pos = string_pos "echo" pos in let args = List.map (strings_of_value venv pos) args in let args = List.flatten args in let outx = channel_of_var venv pos loc stdout_var in let rec echo args = match args with [arg] -> Lm_channel.output_string outx arg | arg :: args -> Lm_channel.output_string outx arg; Lm_channel.output_char outx ' '; echo args | [] -> () in echo args; Lm_channel.output_char outx '\n'; Lm_channel.flush outx; ValNone (* * \begin{doc} * \fun{cd} * * The \verb+cd+ function changes the current directory. * * \begin{verbatim} * cd(dir) * dir : Dir * \end{verbatim} * * The \verb+cd+ function also supports a 2-argument form: * * \begin{verbatim} * $(cd dir, e) * dir : Dir * e : expression * \end{verbatim} * * In the two-argument form, expression \verb+e+ is evaluated * in the directory \verb+dir+. The current directory is not * changed otherwise. * * The behavior of the \verb+cd+ function can be changed with the * \verb+CDPATH+ variable, which specifies a search path for * directories. This is normally useful only in the \Prog{osh} * command interpreter. * * \begin{verbatim} * CDPATH : Dir Sequence * \end{verbatim} * * For example, the following will change directory to the first * directory \verb+./foo+, \verb+~/dir1/foo+, \verb+~/dir2/foo+. * * \begin{verbatim} * CDPATH[] = * . * $(HOME)/dir1 * $(HOME)/dir2 * cd foo * \end{verbatim} * * \end{doc} *) type cd_status = CdFail | CdFile | CdSuccess let dir_test name = Sys.os_type = "Win32" || (Unix.access name [Unix.X_OK]; true) let cd_test venv pos loc dir = let name = Dir.fullname dir in try let stat = Unix.LargeFile.stat name in if stat.Unix.LargeFile.st_kind <> Unix.S_DIR then CdFile else if dir_test name then CdSuccess else CdFail with Unix.Unix_error _ -> CdFail let cd_dir venv pos loc dir = match cd_test venv pos loc dir with CdFail -> let relname = Dir.name (venv_dir venv) dir in raise (OmakeException (loc_pos loc pos, StringStringError ("no such directory", relname))) | CdFile -> let relname = Dir.name (venv_dir venv) dir in raise (OmakeException (loc_pos loc pos, StringStringError ("not a directory", relname))) | CdSuccess -> dir let rec cd_search venv cdpath pos loc name = match cdpath with [] -> raise (OmakeException (loc_pos loc pos, StringStringError ("no such directory", name))) | cd_dir :: cd_path -> let dir = Dir.chdir cd_dir name in match cd_test venv pos loc dir with CdFail | CdFile -> cd_search venv cd_path pos loc name | CdSuccess -> dir let cd_aux venv cd_path pos loc arg = match values_of_value venv pos arg with [dir] -> (match eval_prim_value venv pos dir with ValDir dir -> cd_dir venv pos loc dir | _ -> let name = string_of_value venv pos dir in if Filename.is_relative name then cd_search venv cd_path pos loc name else cd_dir venv pos loc (Dir.chdir Dir.root name)) | [] -> cd_dir venv pos loc (venv_intern_dir venv home_dir) | args -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let cd_fun venv pos loc args = let pos = string_pos "cd" pos in let cd_path = try venv_find_var_exn venv cdpath_var with Not_found -> ValString "." in let cd_path = values_of_value venv pos cd_path in let cd_path = List.map (dir_of_value venv pos) cd_path in match args with [arg] -> let dir = cd_aux venv cd_path pos loc arg in let venv = venv_chdir_tmp venv dir in venv, ValDir dir | [dir; e] -> (* Change temporarily and evaluate the exp *) let dir = cd_aux venv cd_path pos loc dir in let venv_new = venv_chdir_tmp venv dir in let values = values_of_value venv_new pos e in venv, concat_array values | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1, 2), List.length args))) (* * \begin{doc} * \section{Job control builtin functions} * \fun{jobs} * * The \verb+jobs+ function prints a list of jobs. * * \verb+jobs+ * \end{doc} *) let jobs_fun venv pos loc args = let _pos = string_pos "jobs" pos in Omake_shell_job.jobs venv; ValNone (* * \begin{doc} * \fun{bg} * * The \verb+bg+ function places a job in the background. * * \verb+bg + * \end{doc} *) let jobs_iter_fun f venv pos loc args = let pos = string_pos "iter" pos in match args with [arg] -> let pids = strings_of_value venv pos arg in let pids = List.map (pid_of_string pos) pids in List.iter (f venv pos) pids | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let bg_fun venv pos loc args = let pos = string_pos "bg" pos in jobs_iter_fun Omake_shell_job.bg venv pos loc args; ValNone (* * \begin{doc} * \fun{fg} * * The \verb+fg+ function brings a job to the foreground. * * \verb+fg + * \end{doc} *) let fg_fun venv pos loc args = let pos = string_pos "fg" pos in jobs_iter_fun Omake_shell_job.fg venv pos loc args; ValNone (* * \begin{doc} * \fun{stop} * * The \verb+stop+ function suspends a job. * * \verb+stop + * \end{doc} *) let stop_fun venv pos loc args = let pos = string_pos "stop" pos in jobs_iter_fun Omake_shell_job.stop venv pos loc args; ValNone (* * \begin{doc} * \fun{wait} * * The \verb+wait+ function waits for a job to finish. * If no process identifiers are given, the shell waits for * all jobs to complete. * * \verb+wait + * \end{doc} *) let wait_fun venv pos loc args = let pos = string_pos "wait" pos in jobs_iter_fun Omake_shell_job.wait venv pos loc args; ValNone (* * \begin{doc} * \fun{kill} * * The \verb+kill+ function signals a job. * * \verb+kill [signal] + * \end{doc} *) let kill_fun venv pos loc args = let pos = string_pos "kill" pos in match args with [arg] -> let args = strings_of_value venv pos arg in let signal, args = match args with signal :: args' -> if String.length signal > 1 && signal.[0] = '-' then signal_of_string pos signal, args' else SigInt, args | [] -> SigInt, [] in let args = List.map (pid_of_string pos) args in List.iter (fun pid -> Omake_shell_job.kill venv pos pid signal) args; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \section{Command history} * \fun{history} * * \begin{verbatim} * $(history-index) : Int * $(history) : String Sequence * history-file : File * history-length : Int * \end{verbatim} * * The history variables manage the command-line history in \Prog{osh}. They have no effect * in \Prog{omake}. * * The \verb+history-index+ variable is the current index into the command-line history. * The \verb+history+ variable is the current command-line history. * * The \verb+history-file+ variable can be redefined if you want the command-line history * to be saved. The default value is \verb+~/.omake/osh_history+. * * The \verb+history-length+ variable can be redefined to specify the maximum number of * lines in the history that you want saved. The default value is \verb+100+. * \end{doc} *) let history_index venv pos loc args = let pos = string_pos "history-index" pos in match args with [] -> ValInt (Omake_readline.where ()) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 0, List.length args))) let history venv pos loc args = let pos = string_pos "history" pos in match args with [] -> let strings = Omake_readline.history () in let strings = Array.to_list strings in let strings = List.map (fun s -> ValData s) strings in ValArray strings | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 0, List.length args))) (************************************************************************ * Tables. *) let () = let builtin_vars = ["history-file", (fun _ -> ValNode (Node.create_node no_mount_info Mount.empty (Dir.cwd ()) (Omake_state.history_file ()))); "history-length", (fun _ -> ValInt 100); "CDPATH", (fun _ -> ValArray [ValString "."])] in let builtin_funs = [true, "echo", echo_fun, ArityAny; true, "jobs", jobs_fun, ArityExact 1; true, "bg", bg_fun, ArityExact 1; true, "fg", fg_fun, ArityExact 1; true, "stop", stop_fun, ArityExact 1; true, "wait", wait_fun, ArityExact 1; true, "kill", kill_fun, ArityExact 1; true, "history-index", history_index, ArityExact 0; true, "history", history, ArityExact 0; ] in let builtin_kfuns = [false, "cd", cd_fun, ArityRange (1, 2); ] in let builtin_info = { builtin_empty with builtin_vars = builtin_vars; builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_arith.ml0000664000152300015230000002360110615471254017742 0ustar jyhjyh(* * \begin{doc} * \section{Arithmetic} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_pos open Omake_eval open Omake_wild open Omake_node open Omake_exec open Omake_value open Omake_state open Omake_builtin open Omake_cache_type open Omake_builtin_util open Omake_builtin_type open Omake_value_type module Pos = MakePos (struct let name = "Omake_builtin_arith" end) open Pos (* * \begin{doc} * \fun{int} * * The \verb+int+ function can be used to create integers. * It returns an \verb+Int+ object. * * \verb+$(int 17)+. * * \fun{float} * The \verb+float+ function can be used to create floating-point numbers. * It returns a \verb+Float+ object. * * \verb+$(float 3.1415926)+. * \end{doc} *) let int_fun venv pos loc args = let pos = string_pos "int" pos in match args with [arg] -> let values = values_of_value venv pos arg in let values = List.map (fun v -> ValInt (int_of_value venv pos v)) values in concat_array values | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let float_fun venv pos loc args = let pos = string_pos "int" pos in match args with [arg] -> let values = values_of_value venv pos arg in let values = List.map (fun v -> ValFloat (float_of_value venv pos v)) values in concat_array values | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Basic arithmetic. * * \begin{doc} * \subsection{Basic arithmetic} * \funref{neg} * \funref{add} * \funref{sub} * \funref{mul} * \funref{div} * \funref{mod} * \funref{lnot} * \funref{land} * \funref{lor} * \funref{lxor} * \funref{lsl} * \funref{lsr} * \funref{asr} * \funref{min} * \funref{max} * * The following functions can be used to perform basic arithmetic. * * \begin{itemize} * \item \verb+$(neg )+: arithmetic inverse * \item \verb+$(add )+: addition. * \item \verb+$(sub )+: subtraction. * \item \verb+$(mul )+: multiplication. * \item \verb+$(div )+: division. * \item \verb+$(mod )+: remainder. * \item \verb+$(lnot )+: bitwise inverse. * \item \verb+$(land )+: bitwise and. * \item \verb+$(lor )+: bitwise or. * \item \verb+$(lxor )+: bitwise exclusive-or. * \item \verb+$(lsl )+: logical shift left. * \item \verb+$(lsr )+: logical shift right. * \item \verb+$(asr )+: arithmetic shift right. * \item \verb+$(min )+: smallest element. * \item \verb+$(max )+: largest element. * \end{itemize} * \end{doc} *) let unary_int op_int venv pos loc args = let pos = string_pos "unary_int" pos in match args with [arg] -> concat_array (List.map (fun v -> ValInt (op_int (int_of_value venv pos arg))) (values_of_value venv pos arg)) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let arith_int id_int op_int venv pos loc args = let pos = string_pos "arith_int" pos in let collect i arg = op_int i (int_of_value venv pos arg) in let args = match args with [arg] -> values_of_value venv pos arg | _ -> args in match args with arg :: args -> ValInt (List.fold_left collect (int_of_value venv pos arg) args) | [] -> ValInt id_int let unary op_int op_float venv pos loc args = let pos = string_pos "unary" pos in match args with [arg] -> concat_array (List.map (fun v -> match number_of_value venv pos v with ValInt i -> ValInt (op_int i) | ValFloat x -> ValFloat (op_float x) | _ -> raise (OmakeException (loc_pos loc pos, StringError "not a number"))) (**) (values_of_value venv pos arg)) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let arith id_int op_int op_float venv pos loc args = let pos = string_pos "arith" pos in let collect i arg = match i, number_of_value venv pos arg with ValInt i, ValInt arg -> ValInt (op_int i arg) | ValInt i, ValFloat arg -> ValFloat (op_float (float_of_int i) arg) | ValFloat i, ValInt arg -> ValFloat (op_float i (float_of_int arg)) | ValFloat i, ValFloat arg -> ValFloat (op_float i arg) | _ -> raise (OmakeException (loc_pos loc pos, StringError "not a number")) in let args = match args with [arg] -> values_of_value venv pos arg | _ -> args in match args with arg :: args -> List.fold_left collect (number_of_value venv pos arg) args | [] -> ValInt id_int (* * Basic arithmetic. * * \begin{doc} * \subsection{Comparisons} * \funref{lt} * \funref{le} * \funref{eq} * \funref{ge} * \funref{gt} * \funref{ult} * \funref{ule} * \funref{uge} * \funref{ugt} * * The following functions can be used to perform numerical comparisons. * * \begin{itemize} * \item \verb+$(lt )+: less then. * \item \verb+$(le )+: no more than. * \item \verb+$(eq )+: equal. * \item \verb+$(ge )+: no less than. * \item \verb+$(gt )+: greater than. * \item \verb+$(ult )+: unsigned less than. * \item \verb+$(ule )+: unsigned greater than. * \item \verb+$(uge )+: unsigned greater than or equal. * \item \verb+$(ugt )+: unsigned greater than. * \end{itemize} * \end{doc} *) let compare op_int op_float venv pos loc args = let pos = string_pos "arith" pos in let rec collect i args = match args with arg :: args -> let arg = number_of_value venv pos arg in let test = match i, number_of_value venv pos arg with ValInt i, ValInt arg -> op_int i arg | ValInt i, ValFloat arg -> op_float (float_of_int i) arg | ValFloat i, ValInt arg -> op_float i (float_of_int arg) | ValFloat i, ValFloat arg -> op_float i arg | _ -> raise (OmakeException (loc_pos loc pos, StringError "not a number")) in test && collect arg args | [] -> true in match args with arg :: args -> val_of_bool (collect (number_of_value venv pos arg) args) | [] -> val_true (************************************************************************ * Tables. *) let () = let builtin_funs = [true, "int", int_fun, ArityExact 1; true, "float", float_fun, ArityExact 1; true, "neg", unary (~-) (~-.), ArityExact 1; true, "add", arith 0 ( + ) ( +. ), ArityAny; true, "sub", arith 0 ( - ) ( -. ), ArityAny; true, "mul", arith 1 ( * ) ( *. ), ArityAny; true, "div", arith 1 ( / ) ( /. ), ArityAny; true, "mod", arith 1 (mod) (mod_float), ArityAny; true, "min", arith max_int min min, ArityAny; true, "max", arith min_int max max, ArityAny; true, "mod", arith 1 (mod) (mod_float), ArityAny; true, "lnot", unary_int (lnot), ArityExact 1; true, "land", arith_int 0 (land), ArityAny; true, "lor", arith_int 0 (lor) , ArityAny; true, "lxor", arith_int 0 (lxor), ArityAny; true, "lsl", arith_int 0 (lsl), ArityAny; true, "lsr", arith_int 0 (lsr), ArityAny; true, "asr", arith_int 0 (asr), ArityAny; true, "lt", compare (<) (<), ArityAny; true, "le", compare (<=) (<=), ArityAny; true, "eq", compare (=) (=), ArityAny; true, "ge", compare (>=) (>=), ArityAny; true, "gt", compare (>) (>), ArityAny] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_io.ml0000664000152300015230000017553510647236053017261 0ustar jyhjyh(* * Builtin file operations. * * \begin{doc} * \section{IO functions} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_parser open Lm_location open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_eval open Omake_node open Omake_value open Omake_lexer open Omake_parser open Omake_printf open Omake_symbol open Omake_builtin open Omake_value_type open Omake_value_print open Omake_builtin_type open Omake_builtin_util module Pos = MakePos (struct let name = "Omake_builtin_io" end) open Pos (* * Table of variables. * * \begin{doc} * \subsection{Standard channels} * * The following variables define the standard channels. * * \var{stdin} * * \begin{verbatim} * stdin : InChannel * \end{verbatim} * * The standard input channel, open for reading. * * \var{stdout} * \begin{verbatim} * stdout : OutChannel * \end{verbatim} * * The standard output channel, open for writing. * * \var{stderr} * \begin{verbatim} * stderr : OutChannel * \end{verbatim} * * The standard error channel, open for writing. * \end{doc} *) let builtin_vars = ["nl", (fun _ -> ValString "\n"); "stdin", (fun _ -> ValChannel (InChannel, venv_stdin)); "stdout", (fun _ -> ValChannel (OutChannel, venv_stdout)); "stderr", (fun _ -> ValChannel (OutChannel, venv_stderr))] (* * \begin{doc} * \fun{open-in-string} * The \verb+open-in-string+ treats a string as if it were a file * and returns a channel for reading. * * \begin{verbatim} * $(open-in-string s) : Channel * s : String * \end{verbatim} * \end{doc} *) let open_in_string venv pos loc args = let pos = string_pos "open-in-string" pos in match args with [arg] -> let s = string_of_value venv pos arg in let fd = Lm_channel.of_string s in let chan = venv_add_channel venv fd in ValChannel (Lm_channel.InChannel, chan) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \twofuns{open-out-string}{out-contents} * The \verb+open-out-string+ creates a channel that writes to a * string instead of a file. The string may be retrieved with the * \verb+out-contents+ function. * * \begin{verbatim} * $(open-out-string) : Channel * $(out-contents chan) : String * chan : OutChannel * \end{verbatim} * \end{doc} *) let open_out_string venv pos loc args = let pos = string_pos "open-in-string" pos in match args with [] -> let fd = Lm_channel.create_string () in let chan = venv_add_channel venv fd in ValChannel (Lm_channel.OutChannel, chan) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 0, List.length args))) let out_contents venv pos loc args = let pos = string_pos "out-contents" pos in match args with [fd] -> let outp = prim_channel_of_value venv pos fd in let outx = venv_find_channel venv pos outp in let s = Lm_channel.to_string outx in ValString s | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Open a file. * * \begin{doc} * \fun{fopen} * * The \verb+fopen+ function opens a file for reading or writing. * * \begin{verbatim} * $(fopen file, mode) : Channel * file : File * mode : String * \end{verbatim} * * The \verb+file+ is the name of the file to be opened. * The \verb+mode+ is a combination of the following characters. * \begin{description} * \item[r] Open the file for reading; it is an error if the file does not exist. * \item[w] Open the file for writing; the file is created if it does not exist. * \item[a] Open the file in append mode; the file is created if it does not exist. * \item[+] Open the file for both reading and writing. * \item[t] Open the file in text mode (default). * \item[b] Open the file in binary mode. * \item[n] Open the file in nonblocking mode. * \item[x] Fail if the file already exists. * \end{description} * * Binary mode is not significant on Unix systems, where * text and binary modes are equivalent. * \end{doc} *) let read_mode = 1 let write_mode = 2 let create_mode = 4 let append_mode = 8 let binary_mode = 16 let text_mode = 32 let nonblock_mode = 64 let excl_mode = 128 let fopen_mode pos loc s = let len = String.length s in let rec collect mode i = if i = len then mode else let bit = match s.[i] with ' ' | '\t' -> mode | 'r' -> read_mode | 'w' -> write_mode lor create_mode | 'a' -> append_mode lor write_mode | '+' -> read_mode lor write_mode | 'b' -> binary_mode | 't' -> text_mode | 'n' -> nonblock_mode | 'x' -> excl_mode | _ -> raise (OmakeException (loc_pos loc pos, StringStringError ("illegal file mode", s))) in let mode = mode lor bit in collect mode (succ i) in let mode = collect 0 0 in let () = if (mode land text_mode) <> 0 && (mode land binary_mode) <> 0 then raise (OmakeException (loc_pos loc pos, StringStringError ("can't specify both text and binary modes", s))) in let opt = if (mode land append_mode) <> 0 then [Unix.O_APPEND; Unix.O_CREAT] else if (mode land create_mode) <> 0 then [Unix.O_CREAT; Unix.O_TRUNC] else [] in let kind, opt = if (mode land read_mode) <> 0 && (mode land write_mode) <> 0 then InOutChannel, Unix.O_RDWR :: opt else if (mode land write_mode) <> 0 then OutChannel, Unix.O_WRONLY :: opt else InChannel, Unix.O_RDONLY :: opt in let opt = if (mode land excl_mode) <> 0 then Unix.O_EXCL :: opt else opt in let opt = if (mode land nonblock_mode) <> 0 then Unix.O_NONBLOCK :: opt else opt in kind, (mode land binary_mode) <> 0, opt let fopen venv pos loc args = let pos = string_pos "fopen" pos in match args with [node; flags] -> let name = filename_of_value venv pos node in let kind, binary, flags = fopen_mode pos loc (string_of_value venv pos flags) in let fd = try Lm_unix_util.openfile name flags 0o666 with Unix.Unix_error _ as exn -> raise (UncaughtException (loc_pos loc pos, exn)) in let chan = Lm_channel.create name Lm_channel.FileChannel kind binary (Some fd) in ValChannel (kind, venv_add_channel venv chan) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Closing file descriptors. * * \begin{doc} * \fun{close} * * \begin{verbatim} * $(close channel...) * channel : Channel * \end{verbatim} * * The \verb+close+ function closes a file that was previously opened * with \verb+fopen+. * \end{doc} *) let close venv pos loc args = let pos = string_pos "close" pos in match args with [arg] -> let args = values_of_value venv pos arg in List.iter (fun arg -> match eval_prim_value venv pos arg with ValChannel (_, channel) -> venv_close_channel venv pos channel | arg -> raise (OmakeException (loc_pos loc pos, StringValueError ("not a file descriptor", arg)))) args; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \twofuns{read}{input-line} * * \begin{verbatim} * $(read channel, amount) : String * $(input-line channel) : String * channel : InChannel * amount : Int * raises RuntimeException * \end{verbatim} * * The \verb+read+ function reads up to \verb+amount+ * bytes from an input channel, and returns * the data that was read. The \verb+input-line+ function reads a line from the file and returns the line read, without * the line terminator. If an end-of-file condition is reached, both functions raise a \verb+RuntimeException+ * exception. * \end{doc} *) let read venv pos loc args = let pos = string_pos "read" pos in match args with [fd; amount] -> let fd = channel_of_value venv pos fd in let amount = int_of_value venv pos amount in let s = String.make amount '\000' in let count = try Lm_channel.read fd s 0 amount with Sys_error _ | Invalid_argument _ as exn -> raise (UncaughtException (pos, exn)) in if count = amount then ValData s else if count = 0 then raise (UncaughtException (pos, End_of_file)) else ValData (String.sub s 0 count) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let input_line venv pos loc args = let pos = string_pos "input-line" pos in match args with [fd] -> let fd = channel_of_value venv pos fd in let s = try Lm_channel.input_line fd with Sys_error _ | End_of_file | Invalid_argument _ as exn -> raise (UncaughtException (pos, exn)) in ValData s | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{write} * * \begin{verbatim} * $(write channel, buffer, offset, amount) : String * channel : OutChannel * buffer : String * offset : Int * amount : Int * $(write channel, buffer) : String * channel : OutChannel * buffer : String * raises RuntimeException * \end{verbatim} * * In the 4-argument form, the \verb+write+ function writes * bytes to the output channel \verb+channel+ from the \verb+buffer+, * starting at position \verb+offset+. Up to \verb+amount+ bytes * are written. The function returns the number of bytes that were * written. * * The 3-argument form is similar, but the \verb+offset+ is 0. * * In the 2-argument form, the \verb+offset+ is 0, and the \verb+amount+ * if the length of the \verb+buffer+. * * If an end-of-file condition is reached, * the function raises a \verb+RuntimeException+ exception. * \end{doc} *) let write venv pos loc args = let pos = string_pos "read" pos in let fd, buf, off, len = match args with [fd; buf] -> fd, buf, None, None | [fd; buf; len] -> fd, buf, None, Some len | [fd; buf; off; len] -> fd, buf, Some off, Some len | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (2, 4), List.length args))) in let fd = channel_of_value venv pos fd in let buf = string_of_value venv pos buf in let off = match off with Some off -> int_of_value venv pos off | None -> 0 in let len = match len with Some len -> int_of_value venv pos len | None -> String.length buf in let count = try Lm_channel.write fd buf off len with Sys_error _ | Invalid_argument _ as exn -> raise (UncaughtException (pos, exn)) in ValInt count (* * \begin{doc} * \fun{lseek} * * \begin{verbatim} * $(lseek channel, offset, whence) : Int * channel : Channel * offset : Int * whence : String * raises RuntimeException * \end{verbatim} * * The \verb+lseek+ function repositions the offset of the * channel \verb+channel+ according to the \verb+whence+ directive, as * follows: * * \begin{description} * \item[SEEK\_SET] The offset is set to \verb+offset+. * \item[SEEK\_CUR] The offset is set to its current position plus \verb+offset+ bytes. * \item[SEEK\_END] The offset is set to the size of the file plus \verb+offset+ bytes. * \end{description} * * The \verb+lseek+ function returns the new position in the file. * \end{doc} *) let lseek venv pos loc args = let pos = string_pos "lseek" pos in match args with [fd; off; whence] -> let fd = channel_of_value venv pos fd in let off = int_of_value venv pos off in let whence = match String.uppercase (string_of_value venv pos whence) with "SET" | "SEEK_SET" -> Unix.SEEK_SET | "CUR" | "CURRENT" | "SEEK_CUR" -> Unix.SEEK_CUR | "END" | "SEEK_END" -> Unix.SEEK_END | whence -> raise (OmakeException (loc_pos loc pos, StringStringError ("illegal lseek parameter", whence))) in let off = try Lm_channel.seek fd off whence with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValInt off | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 3, List.length args))) (* * \begin{doc} * \fun{rewind} * * \begin{verbatim} * rewind(channel...) * channel : Channel * \end{verbatim} * * The \verb+rewind+ function set the current file position to the * beginning of the file. * \end{doc} *) let rewind venv pos loc args = let pos = string_pos "rewind" pos in match args with [arg] -> let args = values_of_value venv pos arg in let () = try List.iter (fun arg -> let fd = channel_of_value venv pos arg in ignore (Lm_channel.seek fd 0 Unix.SEEK_SET)) args with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{tell} * * \begin{verbatim} * $(tell channel...) : Int... * channel : Channel * raises RuntimeException * \end{verbatim} * * The \verb+tell+ function returns the current position of the \verb+channel+. * \end{doc} *) let tell venv pos loc args = let pos = string_pos "tell" pos in match args with [arg] -> let args = values_of_value venv pos arg in let args = try List.map (fun arg -> let fd = channel_of_value venv pos arg in ValInt (Lm_channel.tell fd)) args with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in concat_array args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Flush an output channel. * * \begin{doc} * \fun{flush} * * \begin{verbatim} * $(flush channel...) * channel : OutChannel * \end{verbatim} * * The \verb+flush+ function can be used only on files that are open for writing. * It flushes all pending data to the file. * \end{doc} *) let flush venv pos loc args = let pos = string_pos "flush" pos in match args with [arg] -> let args = values_of_value venv pos arg in List.iter (fun s -> let fd = channel_of_value venv pos s in Lm_channel.flush fd) args; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{channel-name} * * \begin{verbatim} * $(channel-name channel...) : String * channel : Channel * \end{verbatim} * * The \verb+channel-name+ function returns the name that is associated with the channel. * \end{doc} *) let channel_name venv pos loc args = let pos = string_pos "channel-name" pos in match args with [arg] -> let fd = channel_of_value venv pos arg in ValData (Lm_channel.name fd) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{dup} * * \begin{verbatim} * $(dup channel) : Channel * channel : Channel * raises RuntimeException * \end{verbatim} * * The \verb+dup+ function returns a new channel referencing the * same file as the argument. * \end{doc} *) let dup venv pos loc args = let pos = string_pos "dup" pos in match args with [arg] -> let channel = channel_of_value venv pos arg in let name = Lm_channel.name channel in let fd = Lm_channel.descr channel in let _, kind, mode, binary = Lm_channel.info channel in let fd = try Unix.dup fd with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in let chan = Lm_channel.create name kind mode binary (Some fd) in let channel = venv_add_channel venv chan in ValChannel (mode, channel) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{dup2} * * \begin{verbatim} * dup2(channel1, channel2) * channel1 : Channel * channel2 : Channel * raises RuntimeException * \end{verbatim} * * The \verb+dup2+ function causes \verb+channel2+ to refer to the same * file as \verb+channel1+. * \end{doc} *) let dup2 venv pos loc args = let pos = string_pos "dup2" pos in match args with [arg1; arg2] -> let channel1 = channel_of_value venv pos arg1 in let channel2 = channel_of_value venv pos arg2 in let fd1 = Lm_channel.descr channel1 in let fd2 = Lm_channel.descr channel2 in let () = try Unix.dup2 fd1 fd2 with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{set-nonblock} * * \begin{verbatim} * set-nonblock-mode(mode, channel...) * channel : Channel * mode : String * \end{verbatim} * * The \verb+set-nonblock-mode+ function sets the nonblocking flag on the * given channel. When IO is performed on the channel, and the operation * cannot be completed immediately, the operations raises a \verb+RuntimeException+. * \end{doc} *) let set_nonblock_mode venv pos loc args = let pos = string_pos "set_nonblock_mode" pos in match args with [mode; channel] -> let set_mode = if bool_of_value venv pos mode then Unix.set_nonblock else Unix.clear_nonblock in let channels = values_of_value venv pos channel in let () = try List.iter (fun channel -> let channel = channel_of_value venv pos channel in let fd = Lm_channel.descr channel in set_mode fd) channels with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{set-close-on-exec-mode} * * \begin{verbatim} * set-close-on-exec-mode(mode, channel...) * channel : Channel * mode : String * raises RuntimeException * \end{verbatim} * * The \verb+set-close-on-exec-mode+ function sets the close-on-exec * flags for the given channels. If the close-on-exec flag is set, the channel * is not inherited by child processes. Otherwise it is. * \end{doc} *) let set_close_on_exec_mode venv pos loc args = let pos = string_pos "set-close-on-exec-mode" pos in match args with [mode; channel] -> let set_mode = if bool_of_value venv pos mode then Unix.set_close_on_exec else Unix.clear_close_on_exec in let channels = values_of_value venv pos channel in let () = try List.iter (fun channel -> let channel = channel_of_value venv pos channel in let fd = Lm_channel.descr channel in set_mode fd) channels with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{pipe} * * \begin{verbatim} * $(pipe) : Pipe * raises RuntimeException * \end{verbatim} * * The \verb+pipe+ function creates a \verb+Pipe+ object, which has two * fields. The \verb+read+ field is a channel that is opened for * reading, and the \verb+write+ field is a channel that is opened * for writing. * \end{doc} *) let pipe venv pos loc args = let pos = string_pos "pipe" pos in match args with [] -> let fd_read, fd_write = try Unix.pipe () with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in let read = Lm_channel.create "" Lm_channel.PipeChannel InChannel false (Some fd_read) in let write = Lm_channel.create "" Lm_channel.PipeChannel OutChannel false (Some fd_write) in let fd_read = ValChannel (InChannel, venv_add_channel venv read) in let fd_write = ValChannel (OutChannel, venv_add_channel venv write) in let obj = venv_find_object_or_empty venv pipe_object_var in let obj = venv_add_field_internal obj read_sym fd_read in let obj = venv_add_field_internal obj write_sym fd_write in ValObject obj | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 0, List.length args))) (* * \begin{doc} * \fun{mkfifo} * * \begin{verbatim} * mkfifo(mode, node...) * mode : Int * node : Node * \end{verbatim} * * The \verb+mkfifo+ function creates a named pipe. * \end{doc} *) let mkfifo venv pos loc args = let pos = string_pos "mkfifo" pos in match args with [mode; nodes] -> let mode = int_of_value venv pos mode in let nodes = values_of_value venv pos nodes in let () = try List.iter (fun node -> Unix.mkfifo (filename_of_value venv pos node) mode) nodes with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{select} * * \begin{verbatim} * $(select rfd..., wfd..., wfd..., timeout) : Select * rfd : InChannel * wfd : OutChannel * efd : Channel * timeout : float * raises RuntimeException * \end{verbatim} * * The \verb+select+ function polls for possible IO on a set of channels. * The \verb+rfd+ are a sequence of channels for reading, \verb+wfd+ are a * sequence of channels for writing, and \verb+efd+ are a sequence of * channels to poll for error conditions. The \verb+timeout+ specifies * the maximum amount of time to wait for events. * * On successful return, \verb+select+ returns a \verb+Select+ object, * which has the following fields: * \begin{description} * \item[read] An array of channels available for reading. * \item[write] An array of channels available for writing. * \item[error] An array of channels on which an error has occurred. * \end{description} * \end{doc} *) let select venv pos loc args = let pos = string_pos "select" pos in match args with [rfd; wfd; efd; timeout] -> let rfd = values_of_value venv pos rfd in let wfd = values_of_value venv pos wfd in let efd = values_of_value venv pos efd in let rfd = List.map (channel_of_value venv pos) rfd in let wfd = List.map (channel_of_value venv pos) wfd in let efd = List.map (channel_of_value venv pos) efd in let timeout = float_of_value venv pos timeout in let rfd, wfd, efd = try Lm_channel.select rfd wfd efd timeout with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in let reintern_channel fdl = List.map (fun fd -> let id, _, _, _ = Lm_channel.info fd in let fd = venv_find_channel_id venv pos id in let channel = venv_find_channel venv pos fd in let _, _, mode, _ = Lm_channel.info channel in ValChannel (mode, fd)) fdl in let rfd = reintern_channel rfd in let wfd = reintern_channel wfd in let efd = reintern_channel efd in let obj = venv_find_object_or_empty venv select_object_var in let obj = venv_add_field_internal obj read_sym (ValArray rfd) in let obj = venv_add_field_internal obj write_sym (ValArray wfd) in let obj = venv_add_field_internal obj error_sym (ValArray efd) in ValObject obj | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 4, List.length args))) (* * \begin{doc} * \fun{lockf} * * \begin{verbatim} * lockf(channel, command, len) * channel : Channel * command : String * len : Int * raises RuntimeException * \end{verbatim} * * The \verb+lockf+ function places a lock on a region of the channel. * The region starts at the current position and extends for \verb+len+ * bytes. * * The possible values for \verb+command+ are the following. * \begin{description} * \item[F\_ULOCK] Unlock a region. * \item[F\_LOCK] Lock a region for writing; block if already locked. * \item[F\_TLOCK] Lock a region for writing; fail if already locked. * \item[F\_TEST] Test a region for other locks. * \item[F\_RLOCK] Lock a region for reading; block if already locked. * \item[F\_TRLOCK] Lock a region for reading; fail is already locked. * \end{description} * \end{doc} *) let lockf venv pos loc args = let pos = string_pos "lockf" pos in match args with [channel; command; len] -> let channel = channel_of_value venv pos channel in let command = string_of_value venv pos command in let len = int_of_value venv pos len in let command = match command with "F_ULOCK" -> Unix.F_ULOCK | "F_LOCK" -> Unix.F_LOCK | "F_TLOCK" -> Unix.F_TLOCK | "F_TEST" -> Unix.F_TEST | "F_RLOCK" -> Unix.F_RLOCK | "F_TRLOCK" -> Unix.F_TRLOCK | _ -> raise (OmakeException (loc_pos loc pos, StringStringError ("lockf: illegal command", command))) in let fd = Lm_channel.descr channel in let () = try Unix.lockf fd command len with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 3, List.length args))) (************************************************************************ * Databases. *) let addr_of_value venv pos arg = let host = string_of_value venv pos arg in try Unix.inet_addr_of_string host with Failure _ -> let entry = Unix.gethostbyname host in entry.Unix.h_addr_list.(0) let proto_of_value venv pos arg = let proto = string_of_value venv pos arg in try Unix.getprotobynumber (int_of_string proto) with Failure _ -> Unix.getprotobyname proto (* (* * \begin{doc} * \obj{InetAddr} * * The \verb+InetAddr+ object describes an Internet address. * It contains the following fields. * * \begin{description} * \item[addr] \verb+String+: the Internet address. * \item[port] \verb+Int+: the port number. * \end{description} * * \obj{Host} * * A \verb+Host+ object contains the following fields. * * \begin{description} * \item[name] \verb+String+: the name of the host. * \item[aliases] \verb+String Array+: other names by which the host is known. * \item[addrtype] \verb+String+: the preferred socket domain. * \item[addrs] \verb+InetAddr Array+: an array of Internet addresses belonging to the host. * \end{description} * * \fun{gethostbyname} * * \begin{verbatim} * $(gethostbyname host...) : Host... * host : String * raises RuntimeException * \end{verbatim} * * The \verb+gethostbyname+ function returns a \verb+Host+ object * for the specified host. The \verb+host+ may specify a domain name * or an Internet address. * * \end{doc} *) let gethostbyname venv pos loc args = let pos = string_pos "gethostbyname" pos in match args with [arg] -> let args = values_of_value venv pos arg in let args = try List.map (fun arg -> let host = string_of_value venv pos arg in let entry = try let addr = Unix.inet_addr_of_string host in Unix.gethostbyaddr addr with Failure _ -> Unix.gethostbyname host in make_host_entry venv pos entry) args with Not_found | Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in concat_array args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \obj{Protocol} * * The \verb+Protocol+ object represents a protocol entry. * It has the following fields. * * \begin{description} * \item[name] \verb+String+: the canonical name of the protocol. * \item[aliases] \verb+String Array+: aliases for the protocol. * \item[proto] \verb+Int+: the protocol number. * \end{description} * * \fun{getprotobyname} * * \begin{verbatim} * $(getprotobyname name...) : Protocol... * name : Int or String * raises RuntimeException * \end{verbatim} * * The \verb+getprotobyname+ function returns a \verb+Protocol+ object for the * specified protocol. The \verb+name+ may be a protocol name, or a * protocol number. * \end{doc} *) let getprotobyname venv pos loc args = let pos = string_pos "getprotobyname" pos in match args with [arg] -> let args = values_of_value venv pos arg in let args = try List.map (fun arg -> let proto = string_of_value venv pos arg in let entry = try Unix.getprotobynumber (int_of_string proto) with Failure _ -> Unix.getprotobyname proto in make_proto_entry venv pos entry) args with Not_found | Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in concat_array args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \obj{Service} * * The \verb+Service+ object represents a network service. * It has the following fields. * * \begin{description} * \item[name] \verb+String+: the name of the service. * \item[aliases] \verb+String Array+: aliases for the service. * \item[port] \verb+Int+: the port number of the service. * \item[proto] \verb+Protocol+: the protocol for the service. * \end{description} * * \fun{getservbyname} * * \begin{verbatim} * $(getservbyname service...) : Service... * service : String or Int * raises RuntimeException * \end{verbatim} * * The \verb+getservbyname+ function gets the information for a network service. * The \verb+service+ may be specified as a service name or number. * \end{doc} *) let getprotobyname venv pos loc args = let pos = string_pos "getprotobyname" pos in match args with [arg] -> let args = values_of_value venv pos arg in let args = try List.map (fun arg -> let proto = string_of_value venv pos arg in let entry = try Unix.getservbyprt (int_of_string proto) with Failure _ -> Unix.getservbyname proto in make_serv_entry venv pos entry) args with Not_found | Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in concat_array args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) *) (* * \begin{doc} * \fun{socket} * * \begin{verbatim} * $(socket domain, type, protocol) : Channel * domain : String * type : String * protocol : String * raises RuntimeException * \end{verbatim} * * The \verb+socket+ function creates an unbound socket. * * The possible values for the arguments are as follows. * * The \verb+domain+ may have the following values. * \begin{description} * \item[PF\_UNIX or unix] Unix domain, available only on Unix systems. * \item[PF\_INET or inet] Internet domain, IPv4. * \item[PF\_INET6 or inet6] Internet domain, IPv6. * \end{description} * * The \verb+type+ may have the following values. * \begin{description} * \item[SOCK\_STREAM or stream] Stream socket. * \item[SOCK\_DGRAM or dgram] Datagram socket. * \item[SOCK\_RAW or raw] Raw socket. * \item[SOCK\_SEQPACKET or seqpacket] Sequenced packets socket * \end{description} * * The \verb+protocol+ is an \verb+Int+ or \verb+String+ that specifies * a protocol in the protocols database. * \end{doc} *) let socket venv pos loc args = let pos = string_pos "socket" pos in match args with [domain; ty; proto] -> let domain = match String.uppercase (string_of_value venv pos domain) with "PF_UNIX" | "UNIX" -> Unix.PF_UNIX | "PF_INET" | "INET" | "IP" -> Unix.PF_INET (* If you are compiling with OCaml-3.07 or earlier, comment out these lines *) | "PF_INET6" | "INET6" | "IP6" -> Unix.PF_INET6 | domain -> raise (OmakeException (loc_pos loc pos, StringStringError ("bad domain", domain))) in let ty = match String.uppercase (string_of_value venv pos ty) with "SOCK_STREAM" | "STREAM" -> Unix.SOCK_STREAM | "SOCK_DGRAM" | "DGRAM" -> Unix.SOCK_DGRAM | "SOCK_RAW" | "RAW" -> Unix.SOCK_RAW | "SOCK_SEQPACKET" | "SEQPACKET" -> Unix.SOCK_SEQPACKET | ty -> raise (OmakeException (loc_pos loc pos, StringStringError ("bad type", ty))) in let proto = proto_of_value venv pos proto in let socket = try Unix.socket domain ty proto.Unix.p_proto with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in let channel = Lm_channel.create "" Lm_channel.SocketChannel Lm_channel.InOutChannel false (Some socket) in let channel = venv_add_channel venv channel in ValChannel (InOutChannel, channel) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 3, List.length args))) (* * \begin{doc} * \fun{bind} * * \begin{verbatim} * bind(socket, host, port) * socket : InOutChannel * host : String * port : Int * bind(socket, file) * socket : InOutChannel * file : File * raise RuntimeException * \end{verbatim} * * The \verb+bind+ function binds a socket to an address. * * The 3-argument form specifies an Internet connection, the \verb+host+ specifies a host name * or IP address, and the \verb+port+ is a port number. * * The 2-argument form is for \verb+Unix+ sockets. The \verb+file+ specifies the filename * for the address. * \end{doc} *) let bind venv pos loc args = let pos = string_pos "bind" pos in let socket, addr = match args with [socket; host; port] -> let host = addr_of_value venv pos host in let port = int_of_value venv pos port in let addr = Unix.ADDR_INET (host, port) in socket, addr | [socket; name] -> let name = filename_of_value venv pos name in let addr = Unix.ADDR_UNIX name in socket, addr | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (2, 3), List.length args))) in let socket = channel_of_value venv pos socket in let socket = Lm_channel.descr socket in let () = try Unix.bind socket addr with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone (* * \begin{doc} * \fun{listen} * * \begin{verbatim} * listen(socket, requests) * socket : InOutChannel * requests : Int * raises RuntimeException * \end{verbatim} * * The \verb+listen+ function sets up the socket for receiving up to \verb+requests+ number * of pending connection requests. * \end{doc} *) let listen venv pos loc args = let pos = string_pos "listen" pos in match args with [socket; requests] -> let socket = channel_of_value venv pos socket in let socket = Lm_channel.descr socket in let requests = int_of_value venv pos requests in let () = try Unix.listen socket requests with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * \begin{doc} * \fun{accept} * * \begin{verbatim} * $(accept socket) : InOutChannel * socket : InOutChannel * raises RuntimeException * \end{verbatim} * * The \verb+accept+ function accepts a connection on a socket. * \end{doc} *) let accept venv pos loc args = let pos = string_pos "accept" pos in match args with [socket] -> let socket = channel_of_value venv pos socket in let socket = Lm_channel.descr socket in let socket, _ = try Unix.accept socket with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in let channel = Lm_channel.create "" Lm_channel.SocketChannel Lm_channel.InOutChannel false (Some socket) in let channel = venv_add_channel venv channel in ValChannel (InOutChannel, channel) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \fun{connect} * * \begin{verbatim} * connect(socket, addr, port) * socket : InOutChannel * addr : String * port : int * connect(socket, name) * socket : InOutChannel * name : File * raise RuntimeException * \end{verbatim} * * The \verb+connect+ function connects a socket to a remote address. * * The 3-argument form specifies an Internet connection. * The \verb+addr+ argument is the Internet address of the remote host, * specified as a domain name or IP address. The \verb+port+ argument * is the port number. * * The 2-argument form is for Unix sockets. The \verb+name+ argument * is the filename of the socket. * \end{doc} *) let connect venv pos loc args = let pos = string_pos "connect" pos in let socket, addr = match args with [socket; host; port] -> let host = addr_of_value venv pos host in let port = int_of_value venv pos port in let addr = Unix.ADDR_INET (host, port) in socket, addr | [socket; name] -> let name = filename_of_value venv pos name in let addr = Unix.ADDR_UNIX name in socket, addr | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (2, 3), List.length args))) in let socket = channel_of_value venv pos socket in let socket = Lm_channel.descr socket in let () = try Unix.connect socket addr with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in ValNone (************************************************************************ * Buffered IO. *) (* * Get the next character. * * \begin{doc} * \fun{getchar} * * \begin{verbatim} * $(getc) : String * $(getc file) : String * file : InChannel or File * raises RuntimeException * \end{verbatim} * * The \verb+getc+ function returns the next character of a file. * If the argument is not specified, \verb+stdin+ is used as input. * If the end of file has been reached, the function returns \verb+false+. * \end{doc} *) let getc venv pos loc args = let pos = string_pos "getc" pos in let arg = match args with [] -> venv_find_var venv pos loc stdin_var | [arg] -> arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (0, 1), List.length args))) in let inp, close_flag = in_channel_of_any_value venv pos arg in let inx = venv_find_channel venv pos inp in let s = try String.make 1 (Lm_channel.input_char inx) with End_of_file -> "false" in if close_flag then venv_close_channel venv pos inp; ValData s (* * Get the next line. * * \begin{doc} * \fun{gets} * * \begin{verbatim} * $(gets) : String * $(gets channel) : String * channel : InChannel or File * raises RuntimeException * \end{verbatim} * * The \verb+gets+ function returns the next line from a file. * The function returns the empty string if the end of file has been reached. * The line terminator is removed. * \end{doc} *) let gets venv pos loc args = let pos = string_pos "gets" pos in let arg = match args with [] -> venv_find_var venv pos loc stdin_var | [arg] -> arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (0, 1), List.length args))) in let inp, close_flag = in_channel_of_any_value venv pos arg in let inx = venv_find_channel venv pos inp in let s = try Lm_channel.input_line inx with End_of_file -> "" in if close_flag then venv_close_channel venv pos inp; ValString s (* * Get the next line. * * \begin{doc} * \fun{fgets} * * \begin{verbatim} * $(fgets) : String * $(fgets channel) : String * channel : InChannel or File * raises RuntimeException * \end{verbatim} * * The \verb+fgets+ function returns the next line from a file that has been * opened for reading with \verb+fopen+. The function returns the empty string * if the end of file has been reached. The returned string is returned as * literal data. The line terminator is not removed. * \end{doc} *) let fgets venv pos loc args = let pos = string_pos "fgets" pos in let arg = match args with [] -> venv_find_var venv pos loc stdin_var | [arg] -> arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (0, 1), List.length args))) in let inp, close_flag = in_channel_of_any_value venv pos arg in let inx = venv_find_channel venv pos inp in let s = try Lm_channel.input_entire_line inx with End_of_file -> "" in if close_flag then venv_close_channel venv pos inp; ValData s (* * \begin{doc} * \section{Printing functions} * \funref{fprint} * \funref{print} * \funref{eprint} * \funref{fprintln} * \funref{println} * \funref{eprintln} * * Output is printed with the \verb+print+ and \verb+println+ functions. * The \verb+println+ function adds a terminating newline to the value being * printed, the \verb+print+ function does not. * * \begin{verbatim} * fprint(, ) * print() * eprint() * fprintln(, ) * println() * eprintln() * \end{verbatim} * * The \verb+fprint+ functions print to a file that has been previously opened with * \verb+fopen+. The \verb+print+ functions print to the standard output channel, and * the \verb+eprint+ functions print to the standard error channel. * \end{doc} *) let print_aux venv pos loc nl args = match args with [fd; s] -> let outp, close_flag = out_channel_of_any_value venv pos fd in let outx = venv_find_channel venv pos outp in let s = string_of_value venv pos s in Lm_channel.output_string outx s; Lm_channel.output_string outx nl; Lm_channel.flush outx; if close_flag then venv_close_channel venv pos outp; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let fprint venv pos loc args = let pos = string_pos "fprint" pos in print_aux venv pos loc "" args let print venv pos loc args = let pos = string_pos "print" pos in let stdout_fd = venv_find_var venv pos loc stdout_var in fprint venv pos loc (stdout_fd :: args) let eprint venv pos loc args = let pos = string_pos "eprint" pos in let stderr_fd = venv_find_var venv pos loc stderr_var in fprint venv pos loc (stderr_fd :: args) let fprintln venv pos loc args = let pos = string_pos "fprintln" pos in print_aux venv pos loc "\n" args let println venv pos loc args = let pos = string_pos "println" pos in let stdout_fd = venv_find_var venv pos loc stdout_var in fprintln venv pos loc (stdout_fd :: args) let eprintln venv pos loc args = let pos = string_pos "eprintln" pos in let stderr_fd = venv_find_var venv pos loc stderr_var in fprintln venv pos loc (stderr_fd :: args) (* * \begin{doc} * \section{Value printing functions} * \funref{fprintv} * \funref{printv} * \funref{eprintv} * \funref{fprintvln} * \funref{printvln} * \funref{eprintvln} * * Values can be printed with the \verb+printv+ and \verb+printvln+ functions. * The \verb+printvln+ function adds a terminating newline to the value being * printed, the \verb+printv+ function does not. * * \begin{verbatim} * fprintv(, ) * printv() * eprintv() * fprintvln(, ) * printvln() * eprintvln() * \end{verbatim} * * The \verb+fprintv+ functions print to a file that has been previously opened with * \verb+fopen+. The \verb+printv+ functions print to the standard output channel, and * the \verb+eprintv+ functions print to the standard error channel. * \end{doc} *) let printv_aux venv pos loc nl args = match args with [fd; s] -> let outp, close_flag = out_channel_of_any_value venv pos fd in let outx = venv_find_channel venv pos outp in let s = pp_print_value stdstr s; flush_stdstr () in Lm_channel.output_string outx s; Lm_channel.output_string outx nl; Lm_channel.flush outx; if close_flag then venv_close_channel venv pos outp; ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let fprintv venv pos loc args = let pos = string_pos "fprintv" pos in printv_aux venv pos loc "" args let printv venv pos loc args = let pos = string_pos "printv" pos in let stdout_fd = venv_find_var venv pos loc stdout_var in fprintv venv pos loc (stdout_fd :: args) let eprintv venv pos loc args = let pos = string_pos "eprintv" pos in let stderr_fd = venv_find_var venv pos loc stderr_var in fprintv venv pos loc (stderr_fd :: args) let fprintvln venv pos loc args = let pos = string_pos "fprintvln" pos in printv_aux venv pos loc "\n" args let printvln venv pos loc args = let pos = string_pos "printvln" pos in let stdout_fd = venv_find_var venv pos loc stdout_var in fprintvln venv pos loc (stdout_fd :: args) let eprintvln venv pos loc args = let pos = string_pos "eprintvln" pos in let stderr_fd = venv_find_var venv pos loc stderr_var in fprintvln venv pos loc (stderr_fd :: args) (************************************************************************ * Printf. *) module Args = struct type t = { print_venv : venv; print_pos : pos; print_loc : loc; print_fmt : Format.formatter; print_fd : prim_channel; print_channel : Lm_channel.t } type value = Omake_value_type.value (* * Create the buffers and channels. *) let create_channel venv pos loc channel = let fmt = Format.make_formatter (Lm_channel.output_buffer channel) (fun () -> Lm_channel.flush channel) in let fd = venv_add_formatter_channel venv fmt in let channel = venv_find_channel venv pos fd in { print_venv = venv; print_pos = pos; print_loc = loc; print_fmt = fmt; print_fd = fd; print_channel = channel } let create_buffer venv pos loc buf = let fmt = Format.formatter_of_buffer buf in let fd = venv_add_formatter_channel venv fmt in let channel = venv_find_channel venv pos fd in { print_venv = venv; print_pos = pos; print_loc = loc; print_fmt = fmt; print_fd = fd; print_channel = channel } (* * When done, close the channels, and get the string. *) let close info = let { print_fd = fd; print_venv = venv; print_pos = pos; print_fmt = fmt } = info in venv_close_channel venv pos fd; Format.pp_print_flush fmt () (* * The printers. *) let print_char info c = Lm_channel.output_char info.print_channel c let print_string info s = Lm_channel.output_string info.print_channel s (* * Formatter flushes the buffer. *) let flush info = Lm_channel.flush info.print_channel let open_box info i = flush info; Format.pp_open_box info.print_fmt i let open_hbox info = flush info; Format.pp_open_hbox info.print_fmt () let open_vbox info i = flush info; Format.pp_open_vbox info.print_fmt i let open_hvbox info i = flush info; Format.pp_open_hvbox info.print_fmt i let open_hovbox info i = flush info; Format.pp_open_hovbox info.print_fmt i let close_box info = flush info; Format.pp_close_box info.print_fmt () let print_cut info = flush info; Format.pp_close_box info.print_fmt () let print_space info = flush info; Format.pp_print_space info.print_fmt () let force_newline info = flush info; Format.pp_force_newline info.print_fmt () let print_break info i j = flush info; Format.pp_print_break info.print_fmt i j let print_flush info = flush info; Format.pp_print_flush info.print_fmt () let print_newline info = flush info; Format.pp_print_newline info.print_fmt () (* * Converters. *) let bool_of_value info v = let { print_venv = venv; print_pos = pos } = info in bool_of_value venv pos v let char_of_value info v = let { print_venv = venv; print_pos = pos } = info in let s = string_of_value venv pos v in if String.length s <> 1 then raise (OmakeException (pos, StringStringError ("not a character", s))); s.[0] let int_of_value info v = let { print_venv = venv; print_pos = pos } = info in int_of_value venv pos v let float_of_value info v = let { print_venv = venv; print_pos = pos } = info in float_of_value venv pos v let string_of_value info v = let { print_venv = venv; print_pos = pos } = info in string_of_value venv pos v let print_value info v = flush info; pp_print_value (out_channel_of_formatter info.print_fmt) v (* * Applications. *) let apply1 info arg1 = let { print_venv = venv; print_pos = pos; print_loc = loc; print_fd = fd } = info in ignore (eval_apply venv pos loc arg1 [ValChannel (OutChannel, fd)]) let apply2 info arg1 arg2 = let { print_venv = venv; print_pos = pos; print_loc = loc; print_fd = fd } = info in ignore (eval_apply venv pos loc arg1 [ValChannel (OutChannel, fd); arg2]) (* * Catch too many arguments. *) let exit info args = match args with [] -> ValNone | arg :: _ -> let { print_venv = venv; print_pos = pos } = info in raise (OmakeException (pos, StringValueError ("too many arguments to printf", arg))) end module Printf = MakePrintf (Args);; let fprintf_aux venv pos loc channel fmt args = let fmt = string_of_value venv pos fmt in let buf = Args.create_channel venv pos loc channel in let result = try Printf.fprintf buf fmt args with exn -> Args.close buf; raise exn in Args.close buf; result let printf_fun venv pos loc args = let pos = string_pos "printf" pos in match args with fmt :: args -> let stdout = venv_find_var venv pos loc stdout_var in let stdout = channel_of_value venv pos stdout in fprintf_aux venv pos loc stdout fmt args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let eprintf_fun venv pos loc args = let pos = string_pos "eprintf" pos in match args with fmt :: args -> let stderr = venv_find_var venv pos loc stderr_var in let stderr = channel_of_value venv pos stderr in fprintf_aux venv pos loc stderr fmt args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) let fprintf_fun venv pos loc args = let pos = string_pos "fprintf" pos in match args with fd :: fmt :: args -> let channel = channel_of_value venv pos fd in fprintf_aux venv pos loc channel fmt args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let sprintf_fun venv pos loc args = let pos = string_pos "sprintf" pos in match args with fmt :: args -> let fmt = string_of_value venv pos fmt in let buf = Buffer.create 100 in let info = Args.create_buffer venv pos loc buf in let _ = try Printf.fprintf info fmt args with exn -> Args.close info; raise exn in Args.close info; ValData (Buffer.contents buf) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \subsection{Miscellaneous functions} * \subsubsection{set-channel-line} * * \begin{verbatim} * set-channel-line(channel, filename, line) * channel : Channel * filename : File * line : int * \end{verbatim} * * Set the line number information for the channel. * \end{doc} *) let set_channel_line_fun venv pos loc args = let pos = string_pos "set-channel-line" pos in let chan, file, line = match args with [chan; file; line] -> chan, file, line | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 3, List.length args))) in let chan = channel_of_value venv pos chan in let file = string_of_value venv pos file in let line = int_of_value venv pos line in Lm_channel.set_line chan file line; ValNone (************************************************************************ * Tables. *) let () = let builtin_vars = ["nl", (fun _ -> ValString "\n"); "stdin", (fun _ -> ValChannel (InChannel, venv_stdin)); "stdout", (fun _ -> ValChannel (OutChannel, venv_stdout)); "stderr", (fun _ -> ValChannel (OutChannel, venv_stderr))] in let builtin_funs = [true, "open-in-string", open_in_string, ArityExact 1; true, "open-out-string", open_out_string, ArityExact 0; true, "out-contents", out_contents, ArityExact 1; true, "fopen", fopen, ArityExact 2; true, "close", close, ArityExact 1; true, "read", read, ArityExact 2; true, "input-line", input_line, ArityExact 1; true, "write", write, ArityRange (2, 4); true, "lseek", lseek, ArityExact 3; true, "rewind", rewind, ArityExact 1; true, "tell", tell, ArityExact 1; true, "flush", flush, ArityExact 1; true, "channel-name", channel_name, ArityExact 1; true, "dup", dup, ArityExact 1; true, "dup2", dup2, ArityExact 2; true, "set-nonblock-mode", set_nonblock_mode, ArityExact 2; true, "set-close-on-exec", set_close_on_exec_mode, ArityExact 2; true, "pipe", pipe, ArityExact 0; true, "mkfifo", mkfifo, ArityExact 2; true, "select", select, ArityExact 4; true, "lockf", lockf, ArityExact 3; true, "socket", socket, ArityExact 3; true, "bind", bind, ArityRange (2, 3); true, "listen", listen, ArityExact 2; true, "accept", accept, ArityExact 1; true, "connect", connect, ArityExact 1; true, "getc", getc, ArityRange (0, 1); true, "gets", gets, ArityRange (0, 1); true, "fgets", fgets, ArityRange (0, 1); true, "print", print, ArityExact 1; true, "eprint", eprint, ArityExact 1; true, "fprint", fprint, ArityExact 2; true, "println", println, ArityExact 1; true, "eprintln", eprintln, ArityExact 1; true, "fprintln", fprintln, ArityExact 2; true, "printv", printv, ArityExact 1; true, "eprintv", eprintv, ArityExact 1; true, "fprintv", fprintv, ArityExact 2; true, "printvln", printvln, ArityExact 1; true, "eprintvln", eprintvln, ArityExact 1; true, "fprintvln", fprintvln, ArityExact 2; true, "printf", printf_fun, ArityAny; true, "eprintf", eprintf_fun, ArityAny; true, "fprintf", fprintf_fun, ArityAny; true, "sprintf", sprintf_fun, ArityAny; true, "set-channel-line", set_channel_line_fun, ArityExact 3] in let builtin_info = { builtin_empty with builtin_vars = builtin_vars; builtin_funs = builtin_funs } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_rule.ml0000664000152300015230000002640410615471254017606 0ustar jyhjyh(* * Some builtin functions. * * \begin{doc} * \chapter{Build functions and utilities} * \label{chapter:build} * \cutname{omake-build.html} * \end{doc} * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_pos open Omake_eval open Omake_wild open Omake_node open Omake_exec open Omake_rule open Omake_lexer open Omake_value open Omake_state open Omake_symbol open Omake_builtin open Omake_value_type open Omake_builtin_type open Omake_builtin_util open Omake_command_type module Pos = MakePos (struct let name = "Omake_builtin_rule" end) open Pos (* * These targets are decribed in doc/src/omake-rules.tex * * \begin{doc} * \section{Builtin .PHONY targets} * * The complete set of builtin \verb+.PHONY+ targets include the following. * * \begin{description} * \item[.PHONY] Declares new phony targets (Section~\ref{target:.PHONY}). * \item[.DEFAULT] Declare the default build targets (Section~\ref{target:.DEFAULT}). * \item[.SUBDIRS] Include a directory as part of the project (Section~\ref{target:.SUBDIRS}). * \item[.SCANNER] Define a dependency scanner (Section~\ref{target:.SUBDIRS}). * \item[.INCLUDE] Include a file (Section~\ref{target:.INCLUDE}). * \item[.ORDER] Define a file-dependency ordering rule (Section~\ref{target:.ORDER}). * \item[.BUILD\_BEGIN] Commands to be executed at the beginning of a build. * \item[.BUILD\_SUCCESS] Commands to be executed if the build is successful. * \item[.BUILD\_FAILURE] Commands to be executed if the build fails. * \end{description} * * \targetlabelref{.BUILD_BEGIN}{.BUILD\_BEGIN} * \targetlabelref{.BUILD_SUCCESS}{.BUILD\_SUCCESS} * \targetlabelref{.BUILD_FAILURE}{.BUILD\_FAILURE} * * The \verb+.BUILD+ targets can be used to specify commands to be executed at * the beginning and end of the build. The \verb+.BUILD_BEGIN+ target is built * at the beginning of a project build, and one of \verb+.BUILD_FAILURE+ or * \verb+.BUILD_SUCCESS+ is executed when the build terminates. * * For example, the following set of rules simply print additional messages * about the status of the build. * * \begin{verbatim} * .BUILD_BEGIN: * echo Build starting * * .BUILD_SUCCESS: * echo The build was successful * * .BUILD_FAILURE: * println($"The build failed: $(length $(find-build-targets Failed)) targets could not be built") * \end{verbatim} * * Another common use is to define notifications to be performed when * the build completes. For example, the following rule will create * a new X terminal displaying the summary of the build * (using the \hypervarx{BUILD_SUMMARY}{BUILD\_SUMMARY}). * * \begin{verbatim} * .BUILD_FAILURE: * xterm -e vi $(BUILD_SUMMARY) * \end{verbatim} * * If you do not wish to add these rules directly to your project (which * is probably a good idea if you work with others), you can * define them in your \verb+.omakerc+ (see Section~\ref{section:.omakerc}). * * The \hyperfun{find-build-targets} * is useful for obtaining a firther summary of the build. Note that * when output diversions are in effect (with the \verb+--output-*+ options --- see Chapter~\ref{chapter:options}), * any output produced by the commands is copied to a file. The name of the * file is specified by the \verb+output-file+ field of the \hyperobj{Target}. * You may find this useful in defining custom build summaries. * \end{doc} *) let phony_targets = [".PHONY"; ".DEFAULT"; ".SUBDIRS"; ".SCANNER"; ".INCLUDE"; ".ORDER"; ".BUILD_BEGIN"; ".BUILD_SUCCESS"; ".BUILD_FAILURE"] (************************************************************************ * Set options. * * \begin{doc} * \section{Options and versioning} * \fun{OMakeFlags} * * \begin{verbatim} * OMakeFlags(options) * options : String * \end{verbatim} * * The \verb+OMakeFlags+ function is used to set \verb+omake+ options from * within \File{OMakefile}s. The options have exactly the same format as * options on the command line. * * For example, the following code displays the progress bar unless * the \verb+VERBOSE+ environment variable is defined. * * \begin{verbatim} * if $(not $(defined-env VERBOSE)) * OMakeFlags(-S --progress) * export * \end{verbatim} * \end{doc} *) let set_options venv pos loc args = let pos = string_pos "OMakeFlags" pos in match args with [arg] -> let argv = strings_of_value venv pos arg in let venv = venv_set_options venv loc pos argv in venv, ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Version checking. * * \begin{doc} * \fun{OMakeVersion} * * \begin{verbatim} * OMakeVersion(version1) * OMakeVersion(version1, version2) * version1, version2 : String * \end{verbatim} * * The \verb+OMakeVersion+ function is used for version checking * in \File{OMakefile}s. It takes one or two arguments. * * In the one argument form, if the \Prog{omake} version number * is less than \verb++, * then an exception is raised. In the two argument form, * the version must lie between \verb+version1+ and \verb+version2+. * * \fun{cmp-versions} * \begin{verbatim} * $(cmp-versions version1, version2) * version1, version2 : String * \end{verbatim} * * The \verb+cmp-versions\+ functions can be used to compare arbitrary version strings. * It returns 0 when the two version strings are equal, a negative number when the first * string represents an earlier version, and a positive number otherwise. * \end{doc} *) let split_int = let rec split_int_aux i s = match String.length s with 0 -> i, s | l -> begin match s.[0] with '0'..'9' as c -> split_int_aux (i * 10 + (Char.code c - 48)) (String.sub s 1 (l - 1)) | _ -> i, s end in split_int_aux 0 let rec compare_versions v1 v2 = match String.length v1, String.length v2 with 0, 0 -> 0 | 0, _ -> -1 | _, 0 -> 1 | l1, l2 -> begin match v1.[0],v2.[0] with '0'..'9', '0'..'9' -> let i1, s1 = split_int v1 in let i2, s2 = split_int v2 in begin match i1 - i2 with 0 -> compare_versions s1 s2 | i -> i end | c1, c2 when c1 = c2 -> compare_versions (String.sub v1 1 (l1 - 1)) (String.sub v2 1 (l2 - 1)) | c1, c2 -> Char.code c1 - Char.code c2 end let check_version venv pos loc args = let pos = string_pos "check_version" pos in let version = Omake_magic.version in let check lowest highest = if compare_versions version lowest < 0 then raise (OmakeFatalErr (loc_pos loc pos, LazyError (fun out -> fprintf out "@[<0>This version of OMake is too old,@ you need to upgrade to at least version@ %s;@ current OMake version is@ %s.@ You should be able to download the latest version of OMake from http://omake.metaprl.org/download.html@]" lowest version))); match highest with Some highest -> if compare_versions version highest > 0 then raise (OmakeFatalErr (loc_pos loc pos, LazyError (fun out -> fprintf out "@[<0>This version of OMake is too new or the given file is too old.@ This file accepts versions@ %s-%s;@ current OMake version is@ %s@]" lowest highest version))) | None -> () in match args with [lowest] -> let lowest = Lm_string_util.trim (string_of_value venv pos lowest) in check lowest None; ValString version | [lowest; highest] -> let lowest = Lm_string_util.trim (string_of_value venv pos lowest) in let highest = Lm_string_util.trim (string_of_value venv pos highest) in check lowest (Some highest); ValString version | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (1,2), List.length args))) let cmp_version venv pos loc args = let pos = string_pos "cmp_version" pos in match args with [v1; v2] -> let v1 = Lm_string_util.trim (string_of_value venv pos v1) in let v2 = Lm_string_util.trim (string_of_value venv pos v2) in ValInt (compare_versions v1 v2) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Add the command-line vars. * * \begin{doc} * \fun{DefineCommandVars} * * \begin{verbatim} * DefineCommandVars() * \end{verbatim} * * The \verb+DefineCommandVars+ function redefines the variables passed on * the commandline. Variables definitions are passed on the command line * in the form \verb+name=value+. This function is primarily for internal * use by \Prog{omake} to define these variables for the first time. * \end{doc} *) let define_command_vars venv pos loc args = let pos = string_pos "DefineCommandVars" pos in match args with [] | [_] -> venv_add_command_defs venv, ValNone | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (0, 1), List.length args))) (* * Table of built-in functions. *) let () = let builtin_funs = [true, "OMakeVersion", check_version, ArityRange (1, 2); true, "cmp-versions", cmp_version, ArityExact 2; ] in let builtin_kfuns = [true, "OMakeFlags", set_options, ArityExact 1; true, "DefineCommandVars", define_command_vars, ArityRange (0, 1); ] in let builtin_rules = [true, [".PHONY"], phony_targets] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns; builtin_rules = builtin_rules; phony_targets = phony_targets } in register_builtin builtin_info (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/builtin/omake_builtin_object.ml0000664000152300015230000010441110656154767020114 0ustar jyhjyh(* * Builtin objects. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_pos open Omake_eval open Omake_wild open Omake_node open Omake_exec open Omake_value open Omake_state open Omake_symbol open Omake_builtin open Omake_build_type open Omake_cache_type open Omake_builtin_type open Omake_builtin_util open Omake_value_type module Pos = MakePos (struct let name = "Omake_builtin_object" end) open Pos (* * Extend an object with another. * The argument may be a file or an object. *) let extends_fun venv pos loc args = let pos = string_pos "extends" pos in let extend_arg venv v = let obj = match eval_value venv pos v with ValObject obj -> obj | v -> object_of_file venv pos loc (string_of_value venv pos v) in venv_include_object venv obj in let venv = List.fold_left extend_arg venv args in venv, ValNone (* * Get the object form of a value. *) let object_fun venv pos loc args = let pos = string_pos "object" pos in let values = match args with [arg] -> values_of_value venv pos arg | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) in let values = List.map (fun v -> ValObject (eval_object venv pos v)) values in concat_array values (************************************************************************ * Object operations. *) (* * Field membership. *) let object_mem venv pos loc args = let pos = string_pos "object-mem" pos in match args with [arg; v] -> let obj = eval_object venv pos arg in let s = string_of_value venv pos v in let v = Lm_symbol.add s in val_of_bool (venv_defined_field venv obj v) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let object_find venv pos loc args = let pos = string_pos "object-find" pos in match args with [arg; v] -> let obj = eval_object venv pos arg in let s = string_of_value venv pos v in let v = Lm_symbol.add s in venv_find_field venv obj pos v | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Add a field to an object. *) let object_add venv pos loc args = let pos = string_pos "object-add" pos in match args with [arg; v; x] -> let obj = eval_object venv pos arg in let s = string_of_value venv pos v in let v = Lm_symbol.add s in let venv, obj = venv_add_field venv obj pos v x in venv, ValObject obj | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Add a field to an object. *) let object_length venv pos loc args = let pos = string_pos "object-length" pos in match args with [arg] -> let obj = eval_object venv pos arg in ValInt (venv_object_length obj) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Iterate over the object. *) let object_map venv pos loc args = let pos = string_pos "map" pos in let f, obj = match args with [arg; fun_val] -> let obj = eval_object venv pos arg in let _, _, f = eval_fun venv pos fun_val in f, obj | [arg; param1; param2; ValBody (env, body, export)] -> let params = [Lm_symbol.add (string_of_value venv pos param1); Lm_symbol.add (string_of_value venv pos param2)] in let obj = eval_object venv pos arg in let f venv pos loc args = let venv_new = venv_add_args_hack venv pos loc env params args in let venv_new, result = eval_sequence_exp venv_new pos body in let venv = add_exports venv venv_new pos export in venv, result in f, obj | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (3, 4), List.length args))) in (* If the body exports the environment, preserve it across calls *) let venv, obj = venv_object_fold_internal (fun (venv, obj) v x -> let venv, result = f venv pos loc [ValString (Lm_symbol.to_string v); x] in let obj = venv_add_field_internal obj v result in venv, obj) (venv, obj) obj in venv, ValObject obj (* * instanceof predicate. *) let object_instanceof venv pos loc args = let pos = string_pos "instanceof" pos in let obj, v = match args with [obj; v] -> obj, v | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in let obj = eval_object venv pos obj in let v = Lm_symbol.add (string_of_value venv pos v) in if venv_instanceof obj v then val_true else val_false (************************************************************************ * Map operations. *) (* * Map manipulation. *) let map_of_object venv pos obj = try match venv_find_field_internal_exn obj map_sym with ValMap map -> map | _ -> raise Not_found with Not_found -> raise (OmakeException (pos, StringError "object is not a Map")) let map_of_value venv pos arg = let obj = eval_object venv pos arg in map_of_object venv pos obj let wrap_map obj map = ValObject (venv_add_field_internal obj map_sym (ValMap map)) (* * Field membership. *) let map_mem venv pos loc args = let pos = string_pos "map-mem" pos in match args with [arg; v] -> let map = map_of_value venv pos arg in let v = key_of_value venv pos v in val_of_bool (venv_map_mem map pos v) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) let map_find venv pos loc args = let pos = string_pos "map-find" pos in match args with [arg; v] -> let map = map_of_value venv pos arg in let v = key_of_value venv pos v in venv_map_find map pos v | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Get the number of elements in the map. *) let map_length venv pos loc args = let pos = string_pos "map-length" pos in match args with [arg] -> let map = map_of_value venv pos arg in ValInt (venv_map_length map) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Add a field to an object. *) let map_add venv pos loc args = let pos = string_pos "map-add" pos in match args with [arg; v; x] -> let obj = eval_object venv pos arg in let map = map_of_object venv pos obj in let key = key_of_value venv pos v in wrap_map obj (venv_map_add map pos key x) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Remove a field from an object. *) let map_remove venv pos loc args = let pos = string_pos "map-remove" pos in match args with [arg; v] -> let obj = eval_object venv pos arg in let map = map_of_object venv pos obj in let key = key_of_value venv pos v in wrap_map obj (venv_map_remove map pos key) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Iterate over the object. *) let map_map venv pos loc args = let pos = string_pos "map-map" pos in let f, obj, map = match args with [arg; fun_val] -> let obj = eval_object venv pos arg in let map = map_of_object venv pos obj in let _, _, f = eval_fun venv pos fun_val in f, obj, map | [arg; param1; param2; ValBody (env, body, export)] -> let params = [Lm_symbol.add (string_of_value venv pos param1); Lm_symbol.add (string_of_value venv pos param2)] in let obj = eval_object venv pos arg in let map = map_of_object venv pos obj in let f venv pos loc args = let venv_new = venv_add_args_hack venv pos loc env params args in let venv_new, result = eval_sequence_exp venv_new pos body in let venv = add_exports venv venv_new pos export in venv, result in f, obj, map | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (3, 4), List.length args))) in (* If the body exports the environment, preserve it across calls *) let venv, map = venv_map_fold (fun (venv, map) v x -> let venv, result = f venv pos loc [v; x] in let map = venv_map_add map pos v result in venv, map) (venv, map) map in venv, wrap_map obj map (* * Get an array of keys of the map. *) let map_keys venv pos loc args = let pos = string_pos "map-keys" pos in match args with [arg] -> let map = map_of_value venv pos arg in let keys = venv_map_fold (fun keys k _ -> k::keys) [] map in ValArray (List.rev keys) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Get an array of values of the map. *) let map_values venv pos loc args = let pos = string_pos "map-values" pos in match args with [arg] -> let map = map_of_value venv pos arg in let vals = venv_map_fold (fun vals _ v -> v::vals) [] map in ValArray (List.rev vals) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * \begin{doc} * \twofuns{create-map}{create-lazy-map} * * The \verb+create-map+ is a simplified form for creating \verb+Map+ objects. * The \verb+create-map+ function takes an even number of arguments that specify * key/value pairs. For example, the following values are equivalent. * * \begin{verbatim} * X = $(create-map name1, xxx, name2, yyy) * * X. = * extends $(Map) * $|name1| = xxx * $|name2| = yyy * \end{verbatim} * * The \verb+create-lazy-map+ function is similar, but the values are computed * lazily. The following two definitions are equivalent. * * \begin{verbatim} * Y = $(create-lazy-map name1, $(xxx), name2, $(yyy)) * * Y. = * extends $(Map) * $|name1| = $`(xxx) * $|name2| = $`(yyy) * \end{verbatim} * * The \hyperfun{create-lazy-map} is used in rule construction. * \end{doc} *) let create_map venv pos loc args = let pos = string_pos "create-map" pos in let rec collect map args = match args with key :: value :: args -> let key = ValData (string_of_value venv pos key) in let map = venv_map_add map pos key value in collect map args | [_] -> raise (OmakeException (loc_pos loc pos, StringError ("create-map requires an even number of arguments"))) | [] -> map in ValMap (collect venv_map_empty args) (************************************************************************ * Generic sequence operations. *) (* * Return the number of elements in the sequence. *) let sequence_length venv pos loc args = let pos = string_pos "length" pos in match args with [arg] -> let obj = eval_object venv pos arg in let arg = eval_object_value venv pos obj in let len = match arg with ValMap map -> venv_map_length map | ValObject obj -> venv_object_length obj | ValNone -> 0 | ValInt _ | ValFloat _ | ValNode _ | ValDir _ | ValBody _ | ValChannel _ -> 1 | ValData s -> String.length s | ValQuote vl -> String.length (string_of_quote venv pos None vl) | ValQuoteString (c, vl) -> String.length (string_of_quote venv pos (Some c) vl) | ValSequence _ | ValString _ -> List.length (values_of_value venv pos arg) | ValArray a -> List.length a | ValFun (arity, _, _, _, _) | ValFunValue (arity, _, _, _) | ValPrim (arity, _, _) -> (match arity with ArityExact i | ArityRange (i, _) -> i | ArityNone -> 0 | ArityAny -> max_int) | ValRules l -> List.length l | ValCases cases -> List.length cases | ValClass _ | ValOther _ | ValVar _ -> 0 | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (Invalid_argument "Omake_builtin_base.length") in ValInt len | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 1, List.length args))) (* * Get the nth element of a sequence. *) let sequence_nth venv pos loc args = let pos = string_pos "nth" pos in match args with [arg; i] -> let i = int_of_value venv pos i in let obj = eval_object venv pos arg in let arg = eval_object_value venv pos obj in (match arg with ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ | ValMap _ | ValObject _ -> raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", i))) | ValInt _ | ValFloat _ | ValNode _ | ValDir _ | ValBody _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValVar _ -> if i = 0 then arg else raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", i))) | ValData s -> let len = String.length s in if i < 0 || i >= len then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", i))); ValData (String.sub s i 1) | ValQuote vl -> let s = string_of_quote venv pos None vl in let len = String.length s in if i < 0 || i >= len then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", i))); ValData (String.sub s i 1) | ValQuoteString (c, vl) -> let s = string_of_quote venv pos (Some c) vl in let len = String.length s in if i < 0 || i >= len then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", i))); ValData (String.sub s i 1) | ValSequence _ | ValString _ -> let values = values_of_value venv pos arg in let len = List.length values in if i < 0 || i >= len then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", i))); List.nth values i | ValArray a -> let len = List.length a in if i < 0 || i >= len then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", i))); List.nth a i | ValRules l -> let len = List.length l in if i < 0 || i >= len then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", i))); ValRules [List.nth l i]) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) (* * Subrange. *) let sequence_sub venv pos loc args = let pos = string_pos "sub" pos in match args with [arg; off; len] -> let off = int_of_value venv pos off in let len = int_of_value venv pos len in let obj = eval_object venv pos arg in let arg = eval_object_value venv pos obj in (match arg with ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ | ValMap _ | ValObject _ | ValInt _ | ValFloat _ | ValNode _ | ValDir _ | ValBody _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValVar _ -> raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", off))) | ValData s -> let length = String.length s in if off < 0 || len < 0 || off + len >= length then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", off))); ValData (String.sub s off len) | ValQuote vl -> let s = string_of_quote venv pos None vl in let length = String.length s in if off < 0 || len < 0 || off + len >= length then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", off))); ValData (String.sub s off len) | ValQuoteString (c, vl) -> let s = string_of_quote venv pos (Some c) vl in let length = String.length s in if off < 0 || len < 0 || off + len >= length then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", off))); ValData (String.sub s off len) | ValSequence _ | ValString _ -> let values = values_of_value venv pos arg in let length = List.length values in if off < 0 || len < 0 || off + len >= length then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", off))); ValArray (Lm_list_util.sub values off len) | ValArray values -> let length = List.length values in if off < 0 || len < 0 || off + len >= length then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", off))); ValArray (Lm_list_util.sub values off len) | ValRules values -> let length = List.length values in if off < 0 || len < 0 || off + len >= length then raise (OmakeException (loc_pos loc pos, StringIntError ("out of bounds", off))); ValRules (Lm_list_util.sub values off len)) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 3, List.length args))) (* * Reverse the elements in the sequence. *) let sequence_rev venv pos loc args = let pos = string_pos "rev" pos in match args with [arg] -> let obj = eval_object venv pos arg in let arg = eval_object_value venv pos obj in (match arg with ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ | ValMap _ | ValObject _ | ValInt _ | ValFloat _ | ValNode _ | ValDir _ | ValBody _ | ValChannel _ | ValClass _ | ValOther _ | ValVar _ -> arg | ValData s1 -> let len = String.length s1 in let s2 = String.create len in for i = 0 to len - 1 do s2.[i] <- s1.[len - i - 1] done; ValData s2 | ValQuote vl -> let s1 = string_of_quote venv pos None vl in let len = String.length s1 in let s2 = String.create len in for i = 0 to len - 1 do s2.[i] <- s1.[len - i - 1] done; ValData s2 | ValQuoteString (c, vl) -> let s1 = string_of_quote venv pos (Some c) vl in let len = String.length s1 in let s2 = String.create len in for i = 0 to len - 1 do s2.[i] <- s1.[len - i - 1] done; ValData s2 | ValCases cases -> ValCases (List.rev cases) | ValSequence _ | ValString _ -> let values = values_of_value venv pos arg in ValArray (List.rev values) | ValArray a -> ValArray (List.rev a) | ValRules l -> ValRules (List.rev l)) | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 0, List.length args))) (* * Map. * * \begin{doc} * \section{Iteration and mapping} * * \fun{foreach} * * The \verb+foreach+ function maps a function over a sequence. * * \begin{verbatim} * $(foreach , ) * * foreach(, ) * * \end{verbatim} * * For example, the following program defines the variable \verb+X+ * as an array \verb+a.c b.c c.c+. * * \begin{verbatim} * X = * foreach(x, a b c) * value $(x).c * * # Equivalent expression * X = $(foreach $(fun x, $(x).c), abc) * \end{verbatim} * * There is also an abbreviated syntax. * * The \verb+export+ form can also be used in a \verb+foreach+ * body. The final value of \verb+X+ is \verb+a.c b.c c.c+. * * \begin{verbatim} * X = * foreach(x, a b c) * X += $(x).c * export * \end{verbatim} * * The \hyperfun{break} can be used to break out of the loop early. * \end{doc} *) let foreach_fun venv pos loc args = let pos = string_pos "foreach" pos in let f, args = match args with [fun_val; arg] -> let args = values_of_value venv pos arg in let _, _, f = eval_fun venv pos fun_val in f, args | [ValBody (env, body, export); param; arg] -> let params = [Lm_symbol.add (string_of_value venv pos param)] in let args = values_of_value venv pos arg in let f venv pos loc args = let venv_new = venv_add_args_hack venv pos loc env params args in let venv_new, result = eval_sequence_exp venv_new pos body in let venv = add_exports venv venv_new pos export in venv, result in f, args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityRange (2, 3), List.length args))) in (* If the body exports the environment, preserve it across calls *) let venv, values = try List.fold_left (fun (venv, values) v -> let venv, result = f venv pos loc [v] in venv, result :: values) (venv, []) args with Break (_, venv) -> venv, [] in venv, ValArray (List.rev values) (* * \begin{doc} * \section{Boolean tests} * * \fun{sequence-forall} * * The \verb+forall+ function tests whether a predicate halds for each * element of a sequence. * * \begin{verbatim} * $(sequence-forall , ) * * sequence-forall( => ..., ) * * \end{verbatim} * \end{doc} *) let forall_fun venv pos loc args = let pos = string_pos "sequence-forall" pos in let f, args = match args with [fun_val; arg] -> let args = values_of_value venv pos arg in let _, _, f = eval_fun venv pos fun_val in f, args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in let rec test venv args = match args with arg :: args -> let venv, result = f venv pos loc [arg] in if bool_of_value venv pos result then test venv args else venv, false | [] -> venv, true in let venv, x = test venv args in let x = if x then val_true else val_false in venv, x (* * \begin{doc} * \subsection{sequence-exists} * * The \verb+exists+ function tests whether a predicate holds for * some element of a sequence. * * \begin{verbatim} * $(sequence-exists , ) * * sequence-exists( => ..., ) * * \end{verbatim} * \end{doc} *) let exists_fun venv pos loc args = let pos = string_pos "sequence-exists" pos in let f, args = match args with [fun_val; arg] -> let args = values_of_value venv pos arg in let _, _, f = eval_fun venv pos fun_val in f, args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in (* If the body exports the environment, preserve it across calls *) let rec test venv args = match args with arg :: args -> let venv, result = f venv pos loc [arg] in if bool_of_value venv pos result then venv, true else test venv args | [] -> venv, false in let venv, x = test venv args in let x = if x then val_true else val_false in venv, x (* * \begin{doc} * \fun{sequence-sort} * * The \verb+sort+ function sorts the elements in an array, * given a comparison function. Given two elements (x, y), * the comparison should return a negative number if x < y; * a positive number if x > y; and 0 if x = y. * * \begin{verbatim} * $(sequence-sort , ) * * sort(, => ..., ) * * \end{verbatim} * \end{doc} *) let sort_fun venv pos loc args = let pos = string_pos "sequence-sort" pos in let f, args = match args with [fun_val; arg] -> let args = values_of_value venv pos arg in let _, _, f = eval_fun venv pos fun_val in f, args | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in (* If the body exports the environment, preserve it across calls *) let compare v1 v2 = let _, x = f venv pos loc [v1; v2] in int_of_value venv pos x in let args = List.sort compare args in venv, ValArray args (* * \begin{doc} * \fun{compare} * * The \verb+compare+ function compares two values (x, y) generically * returning a negative number if x < y; * a positive number if x > y; and 0 if x = y. * * \begin{verbatim} * $(compare x, y) : Int * \end{verbatim} * \end{doc} *) let compare_fun venv pos loc args = let pos = string_pos "compare" pos in let x, y = match args with [x; y] -> x, y | _ -> raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact 2, List.length args))) in ValInt (ValueCompare.compare x y) (************************************************************************ * Define the functions. *) (* * Add only the builtin functions. * The Pervasives file defines most of the remaining methods. *) let () = let builtin_funs = [true, "object", object_fun, ArityExact 1; true, "obj-find", object_find, ArityExact 2; true, "obj-mem", object_mem, ArityExact 2; true, "obj-length", object_length, ArityExact 1; true, "obj-instanceof", object_instanceof, ArityExact 2; true, "map-add", map_add, ArityExact 3; true, "map-find", map_find, ArityExact 2; true, "map-mem", map_mem, ArityExact 2; true, "map-length", map_length, ArityExact 1; true, "map-remove", map_remove, ArityExact 1; true, "map-keys", map_keys, ArityExact 1; true, "map-values", map_values, ArityExact 1; true, "sequence-length", sequence_length, ArityExact 1; true, "sequence-nth", sequence_nth, ArityExact 1; true, "sequence-rev", sequence_rev, ArityExact 1; true, "sequence-sub", sequence_sub, ArityExact 3; true, "create-map", create_map, ArityAny; false, "create-lazy-map", create_map, ArityAny; true, "compare", compare_fun, ArityExact 2; ] in let builtin_kfuns = [true, "obj-add", object_add, ArityExact 3; true, "extends", extends_fun, ArityAny; true, "foreach", foreach_fun, ArityExact 2; true, "obj-map", object_map, ArityRange (3, 4); true, "map-map", map_map, ArityRange (3, 4); true, "sequence-map", foreach_fun, ArityRange (2, 3); true, "sequence-forall", forall_fun, ArityExact 2; true, "sequence-exists", exists_fun, ArityExact 2; true, "sequence-sort", sort_fun, ArityExact 2; ] in let builtin_vars = ["empty-map", (fun _ -> ValMap venv_map_empty)] in let builtin_objects = ["Int", value_sym, ValInt 0; "Float", value_sym, ValFloat 0.0; "String", value_sym, ValNone; "Array", value_sym, ValArray []; "Fun", value_sym, ValFun (ArityExact 0, venv_empty_env, [], [], ExportNone); "Rule", value_sym, ValRules []; "File", value_sym, ValNone; "Dir", value_sym, ValNone; "Body", value_sym, ValNone; "InChannel", value_sym, ValNone; "OutChannel", value_sym, ValNone; "InOutChannel", value_sym, ValNone; "Map", map_sym, ValMap venv_map_empty] in let pervasives_objects = ["Object"; "Number"; "Sequence"; "Node"; "Channel"; "Exception"; "RuntimeException"; "UnbuildableException"; "Select"; "Pipe"; "Stat"; "Passwd"; "Group"; "Shell"; "Lexer"; "Parser"; "Location"; "Position"] in let builtin_info = { builtin_empty with builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns; builtin_vars = builtin_vars; builtin_objects = builtin_objects; pervasives_objects = pervasives_objects } in register_builtin builtin_info (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/build/0000775000152300015230000000000010660137224013022 5ustar jyhjyhomake-0.9.8.5/src/build/omake_target.ml0000664000152300015230000001324110617130753016021 0ustar jyhjyh(* * Utilities on targets. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_debug open Omake_env open Omake_pos open Omake_node open Omake_rule open Omake_value_type open Omake_builtin_util module Pos = MakePos (struct let name = "Omake_target" end) open Pos (* * Target exists or is phony. *) let target_exists_or_is_phony cache target = Omake_cache.exists cache target || Node.is_phony target (* * Target is part of an explicit rule. *) let target_is_explicit cache venv target = venv_explicit_exists venv target (* * Target exists, is phony, or there is an explicit rule * to build it. *) let target_exists_or_is_phony_or_is_explicit cache venv target = if debug debug_implicit then eprintf "target_exists_or_is_phony_or_is_explicit: %a: %b, %b@." (**) pp_print_node target (target_exists_or_is_phony cache target) (venv_explicit_exists venv target); target_exists_or_is_phony cache target || venv_explicit_exists venv target (* * A target is buildable if it exists, or * if there is an implicit rule whose dependencies * are all buildable. *) let rec target_is_buildable_bound bound cache venv pos target = let target = Node.unsquash target in try venv_find_target_is_buildable_exn venv target with Not_found -> (* Check for loops *) if NodeSet.mem bound target then raise (OmakeException(pos, StringNodeError("Cyclic implicit dependencies detected", target))); let flag = (target_exists_or_is_phony_or_is_explicit cache venv target || venv_find_buildable_implicit_rule_bound (NodeSet.add bound target) cache venv pos target <> None) in venv_add_target_is_buildable venv target flag; flag (* Find an applicable implicit rule with buildable sources *) and venv_find_buildable_implicit_rule_bound bound cache venv pos target = let irules = venv_find_implicit_rules venv target in if debug debug_implicit then eprintf "venv_find_buildable_implicit_rule %a %a: %d commands to consider@." (**) pp_print_dir (venv_dir venv) pp_print_node target (List.length irules); search_irules bound cache venv pos target irules and search_irules bound cache venv pos target irules = match irules with irule :: irules -> let sources = irule.rule_sources in if debug debug_implicit then eprintf "@[venv_find_buildable_implicit_rule: considering implicit rule %a:%a@]@." (**) pp_print_node target pp_print_node_set sources; if NodeSet.for_all (target_is_buildable_bound bound cache venv (loc_pos irule.rule_loc pos)) sources then let irule' = expand_rule irule in if irule == irule' || NodeSet.for_all (target_is_buildable_bound bound cache venv pos) (NodeSet.diff irule'.rule_sources sources) then begin if debug debug_implicit then eprintf "@[venv_find_buildable_implicit_rule: accepted implicit rule %a:%a@]@." (**) pp_print_node target pp_print_node_set irule'.rule_sources; Some irule' end else search_irules bound cache venv pos target irules else search_irules bound cache venv pos target irules | [] -> None (* * Outer wrappers. *) let check_build_phase pos = if not (is_build_phase ()) then raise (OmakeException (pos, StringError "this command can only be executed in a rule body")) (* XXX: JYH: temporarily disable it *) let check_build_phase _pos = () let venv_find_buildable_implicit_rule cache venv pos target = check_build_phase pos; venv_find_buildable_implicit_rule_bound NodeSet.empty cache venv pos target let target_is_buildable cache venv pos target = check_build_phase pos; target_is_buildable_bound NodeSet.empty cache venv pos target let target_is_buildable_proper cache venv pos target = let target = Node.unsquash target in check_build_phase pos; try venv_find_target_is_buildable_proper_exn venv target with Not_found -> let flag = if target_is_explicit cache venv target then true else venv_find_buildable_implicit_rule cache venv pos target <> None in venv_add_target_is_buildable_proper venv target flag; flag (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/build/omake_rule.mli0000664000152300015230000000612610642240747015662 0ustar jyhjyh(* * Rule expansion. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_glob open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_node open Omake_exec_type open Omake_cache_type open Omake_value_type (* * Debugging. *) val debug_active_rules : bool ref (* * Expand rules so that the rule body is not a function. *) val expand_rule : erule -> erule (* * Glob options. *) val glob_options_of_string : glob_option list -> string -> glob_option list val glob_options_of_env : venv -> pos -> glob_option list (* * Evaluators for the Exec module. *) val eval_shell : venv -> pos -> (arg_command_line, pid, value) shell (* * Create the command lines. * eval_commands venv loc target sloppy_deps commands * * The sloppy deps are used for scanner commands to represent the * results of the previous scan. *) val eval_commands : venv -> loc -> Node.t -> NodeSet.t -> command_info list -> arg_command_line list (* * Rules and shell expressions. *) val eval_rule_exp : venv -> pos -> loc -> bool -> (* multiple (whether the rule was defined with a ::) *) value -> (* targets *) value -> (* patterns *) value -> (* sources *) value -> (* options *) value -> (* commands *) venv * value val eval_memo_rule_exp : venv -> pos -> loc -> bool -> (* multiple (whether the rule was defined with a ::) *) bool -> (* static (whether the results should be cached in .omakedb) *) value -> (* key *) var_info list -> (* variables to be defined *) Node.t -> (* Target *) value -> (* sources *) value -> (* options *) value -> (* commands *) venv val eval_shell_exp : venv -> pos -> loc -> value -> venv * value val eval_shell_output : venv -> pos -> loc -> value -> string (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/build/omake_builtin.mli0000664000152300015230000000346210613731063016353 0ustar jyhjyh(* * Add builtin functions to environment. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Omake_env open Omake_exec open Omake_build_type open Omake_builtin_type (* * Register some builtin info. *) val register_builtin : builtin_info -> unit (* * Add a command line variable definition. *) val add_command_def : string -> string -> unit (* * Check if there are command defs. *) val command_defs_are_nonempty : unit -> bool (* * Add all the command-line defs to the encironment. *) val venv_add_command_defs : venv -> venv (* * Builtin functions. *) val venv_add_builtins : venv -> venv val venv_add_pervasives : venv -> venv val venv_include_rc_file : venv -> string -> venv (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/build/omake_builtin_util.mli0000664000152300015230000000464610615471254017422 0ustar jyhjyh(* * Basic utilities for the builtin functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Lm_location open Omake_env open Omake_pos open Omake_node open Omake_value_type open Omake_build_type (* * Run-time symbols. *) val defined_sym : venv -> pos -> loc -> string -> bool val get_sym : venv -> pos -> loc -> string -> value val add_sym : venv -> pos -> loc -> string -> value -> venv (* * Add a command line variable definition. *) val add_command_def : string -> string -> unit (* * Check if there are command defs. *) val command_defs_are_nonempty : unit -> bool (* * Add all the command-line defs to the encironment. *) val venv_add_command_defs : venv -> venv (* * Map over a sequence and add separators. *) val sequence_map : ('a -> value) -> 'a list -> value list val sequence_list : value list -> value list (* * Boolean values. *) val val_true : value val val_false : value val val_of_bool : bool -> value (* * Unfortunately, we have to specify the environment imperatively. *) val set_env : env -> unit val get_env : pos -> loc -> env val is_build_phase : unit -> bool (* * A node is a leaf if it has no dependencies and no commands. *) val is_leaf_command : command -> bool val is_leaf_node : env -> Node.t -> bool (* * Get the object from a file. *) val object_of_file : venv -> pos -> loc -> string -> obj (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/build/OMakefile0000664000152300015230000000066710446665725014630 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave ../util ../magic ../ir ../env ../exec ../shell ../eval FILES[] = omake_rule omake_build_type omake_build_util omake_builtin_type omake_builtin_util omake_target omake_builtin omake_build_tee omake_build MakeOCamlLibrary(build, $(FILES)) clean: $(CLEAN) # # Generate a Makefile # MakeOCamlDepend($(FILES), magic.cma) MakeMakefile() omake-0.9.8.5/src/build/omake_build.mli0000664000152300015230000000353010621461041015773 0ustar jyhjyh(* * This is the main build loop. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Omake_env open Omake_options open Omake_build_type (* * Debugging flags. *) val debug_rule : bool ref val debug_build : bool ref val debug_deps : bool ref (* * .omakedb save interval (0 - disable) *) val save_interval : float ref (* * Examining the state. * Note that in a non-standard build phase (such as .DUILD_SUCCESS), * this function will process _both_ the phase-specific worklist and the main worklist. *) val command_fold : env -> command_tag -> ('a -> command -> 'a) -> 'a -> 'a (* * Build the system. *) val build : omake_options -> string -> string list -> unit val build_fun : venv -> string list -> bool (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/build/omake_builtin_type.ml0000664000152300015230000000433510615471254017250 0ustar jyhjyh(* * Some type definitions for the builtins. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_location open Lm_symbol open Omake_ir open Omake_env open Omake_pos open Omake_exec open Omake_value_type open Omake_build_type type builtin_fun = venv -> pos -> loc -> value list -> value type builtin_kfun = venv -> pos -> loc -> value list -> venv * value type builtin_env_fun = env -> builtin_fun type builtin_object_info = string * var * value type builtin_rule = bool * string list * string list type builtin_info = { builtin_vars : (string * (venv -> value)) list; builtin_funs : (bool * string * builtin_fun * arity) list; builtin_kfuns : (bool * string * builtin_kfun * arity) list; builtin_objects : builtin_object_info list; pervasives_objects : string list; phony_targets : string list; builtin_rules : builtin_rule list } let builtin_empty = { builtin_vars = []; builtin_funs = []; builtin_kfuns = []; builtin_objects = []; pervasives_objects = []; phony_targets = []; builtin_rules = [] } (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/build/omake_rule.ml0000664000152300015230000014611510642240747015514 0ustar jyhjyh(* * Rule evaluation. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_glob open Lm_debug open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_util open Omake_node open Omake_eval open Omake_exec open Omake_state open Omake_value open Omake_symbol open Omake_command open Omake_ir_util open Omake_ir_print open Omake_node_sig open Omake_exec_type open Omake_exec_util open Omake_shell_lex open Omake_cache_type open Omake_shell_type open Omake_value_type open Omake_value_print open Omake_ir_free_vars open Omake_command_type open Omake_command_digest module Pos = MakePos (struct let name = "Omake_rule" end);; open Pos;; type 'a result = Success of 'a | Exception of exn (* * Debugging. *) let debug_active_rules = create_debug (**) { debug_name = "active-rules"; debug_description = "Display debugging information for computed rules"; debug_value = false } (* * A data structure to keep sequences of command_info. * We can append a command to the current info, or * add another entirely new info. *) module type CommandSig = sig type t type resume (* Create a buffer *) val create : venv -> Node.t -> value -> NodeSet.t -> NodeSet.t -> NodeSet.t -> NodeSet.t -> t (* Projections *) val target : t -> Node.t * value (* Adding to the buffer *) val add_command : t -> command -> t val add_locks : t -> NodeSet.t -> t val add_effects : t -> NodeSet.t -> t val add_scanners : t -> NodeSet.t -> t val add_deps : t -> NodeSet.t -> t (* Block operations *) val enter : t -> venv -> Node.t list -> value list -> resume * t val resume : t -> resume -> t (* Get the final info *) val contents : t -> NodeSet.t * NodeSet.t * NodeSet.t * NodeSet.t * command_info list end module Command : CommandSig = struct (* * The command buffer. *) type t = { buf_target : Node.t; buf_core : value; buf_locks : NodeSet.t; buf_effects : NodeSet.t; buf_deps : NodeSet.t; buf_scanners : NodeSet.t; (* The state that is being collected *) buf_env : venv; buf_sources : Node.t list; buf_values : value list; buf_commands : command list; (* The buffers that have already been collected *) buf_info : command_info list } type resume = venv * Node.t list * value list (* * Create a new command buffer. *) let create venv target core locks effects deps scanners = { buf_target = target; buf_core = core; buf_locks = locks; buf_effects = effects; buf_deps = deps; buf_scanners = scanners; buf_env = venv; buf_sources = []; buf_values = []; buf_commands = []; buf_info = [] } (* * Projections. *) let target buf = let { buf_target = target; buf_core = core } = buf in target, core (* * Add a command to the buffer. *) let add_command buf command = { buf with buf_commands = command :: buf.buf_commands } let add_locks buf locks = { buf with buf_locks = NodeSet.union buf.buf_locks locks } let add_effects buf effects = { buf with buf_effects = NodeSet.union buf.buf_effects effects } let add_deps buf deps = { buf with buf_deps = NodeSet.union buf.buf_deps deps } let add_scanners buf scanners = { buf with buf_scanners = NodeSet.union buf.buf_scanners scanners } (* * Start a new environment. * Return a state that can be used to resume the current environment. *) let enter buf venv sources values = let { buf_env = venv'; buf_sources = sources'; buf_values = values'; buf_commands = commands'; buf_info = info' } = buf in let info = if commands' = [] && values' = [] then info' else let info = { command_env = venv'; command_sources = sources'; command_values = values'; command_body = List.rev commands' } in info :: info' in let buf = { buf with buf_env = venv; buf_sources = sources; buf_values = values; buf_commands = []; buf_info = info } in let resume = venv', sources', values' in resume, buf let resume buf (venv, sources, values) = snd (enter buf venv sources values) (* * Get the contents. *) let contents buf = let { buf_env = venv; buf_values = values; buf_sources = sources; buf_locks = locks; buf_effects = effects; buf_scanners = scanners; buf_deps = deps; buf_commands = commands; buf_info = info } = buf in let info = if commands = [] && values = [] then info else let info' = { command_env = venv; command_sources = sources; command_values = values; command_body = List.rev commands } in info' :: info in let info = List.rev info in locks, effects, deps, scanners, info end (* * Find a rule in a list. *) let find_rule venv pos loc target names = if not (List.exists (Node.equal target) names) then raise (OmakeException (loc_exp_pos loc, StringNodeError ("computed rule does not match target", target))); venv_explicit_find venv pos target (* * Check if there are any computed commands. *) let commands_are_computed commands = List.exists (fun { command_body = body } -> List.exists (fun command -> match command with CommandSection _ -> true | CommandValue _ -> false) body) commands (* * Expand a single command. *) let rec expand_command venv pos loc buf command = let pos = string_pos "expand_command" pos in match command with CommandValue _ -> Command.add_command buf command | CommandSection (arg, fv, el) -> if debug debug_active_rules then eprintf "@[section %a@ %a@]@." pp_print_value arg pp_print_exp_list el; (* The section should be either a rule or eval case *) match Lm_string_util.trim (string_of_value venv pos arg) with "" -> expand_eval_section venv pos loc buf "eval" fv el | "eval" as s -> expand_eval_section venv pos loc buf s fv el | "rule" -> expand_rule_section venv pos loc buf el | s -> raise (OmakeException (loc_exp_pos loc, StringStringError ("invalid section argument, valid arguments are rule, eval", s))) and expand_commands venv pos loc buf commands = match commands with command :: commands -> let buf = expand_command venv pos loc buf command in expand_commands venv pos loc buf commands | [] -> buf (* * This section computes a new rule for the target. *) and expand_rule_section venv pos loc buf e = let pos = string_pos "expand_rule_section" pos in let target, core = Command.target buf in let venv = venv_explicit_target venv target in let venv = venv_add_wild_match venv core in let _, v = eval_sequence_exp venv pos e in if debug debug_active_rules then eprintf "@[%a@ @[*** omake: rule body returned@ @[%a@]@]@]@." (**) pp_print_location loc pp_print_value v; match v with ValRules erules -> let erule = find_rule venv pos loc target erules in let { rule_locks = locks; rule_effects = effects; rule_sources = deps; rule_scanners = scanners; rule_commands = commands } = erule in let buf = Command.add_locks buf locks in let buf = Command.add_effects buf effects in let buf = Command.add_deps buf deps in let buf = Command.add_scanners buf scanners in expand_command_info_list pos loc buf commands | v -> eprintf "@[%a@ *** omake: section rule: did not compute a rule@]@." (**) pp_print_location loc; buf (* * This section is to be evaluated when the rule is run. *) and expand_eval_section venv pos loc buf s fv e = let _pos = string_pos "expand_eval_section" pos in Command.add_command buf (CommandSection (ValString s, fv, e)) (* * Expand a buf_info list. *) and expand_command_info pos loc buf command = let { command_env = venv; command_sources = sources; command_values = values; command_body = commands } = command in let pos = string_pos "expand_buf_info" pos in let resume, buf = Command.enter buf venv sources values in let buf = expand_commands venv pos loc buf commands in Command.resume buf resume and expand_command_info_list pos loc buf commands = let pos = string_pos "expand_buf_info_list" pos in List.fold_left (expand_command_info pos loc) buf commands (* * Expand a rule, so that the commands are a command list. *) let expand_rule erule = let { rule_loc = loc; rule_env = venv; rule_target = target; rule_locks = locks; rule_effects = effects; rule_match = core; rule_sources = deps; rule_scanners = scanners; rule_commands = commands } = erule in if commands_are_computed commands then let core = match core with Some s -> ValData s | None -> ValNode target in let pos = string_pos "expand_rule" (loc_exp_pos loc) in let buf = Command.create venv target core locks effects deps scanners in let buf = expand_command_info_list pos loc buf commands in let locks, effects, deps, scanners, commands = Command.contents buf in if debug debug_active_rules then eprintf "@[expand_rule: %a@ @[locks =%a@]@ @[effects =%a@]@ @[deps = %a@]@ @[scanners = %a@]@]@." (**) pp_print_node target pp_print_node_set locks pp_print_node_set effects pp_print_node_set deps pp_print_node_set scanners; { erule with rule_locks = locks; rule_effects = effects; rule_sources = deps; rule_scanners = scanners; rule_commands = commands } else begin if debug debug_active_rules then eprintf "@[%a@ @[*** omake: static rule@ @[%a@]@]@]@." (**) pp_print_location loc pp_print_rule erule; erule end (************************************************************************ * Shell utilities. *) (* * Get the info for the command. *) let eval_shell_info command = let { command_flags = flags; command_dir = dir; command_target = target } = command in flags, dir, target (* * Kill a process. *) let eval_shell_kill venv pos pid = match pid with ExternalPid pid -> Unix.kill pid Sys.sigterm | InternalPid pid -> Omake_shell_job.kill venv pos pid SigTerm | ResultPid _ -> () (* * Wait for a process to exit. *) let eval_shell_wait venv pos pid = let pos = string_pos "eval_shell_wait" pos in let _, status, value = Omake_shell_job.waitpid venv pos pid in status, value (************************************************************************ * Globbing. *) let glob_options_of_string options s = let len = String.length s in let rec search options i = if i = len then List.rev options else let options = match s.[i] with 'b' -> GlobNoBraces :: options | 'e' -> GlobNoEscape :: options | 'c' | 'n' -> GlobNoCheck :: options | 'i' -> GlobIgnoreCheck :: options | 'A' | '.' -> GlobDot :: options | 'F' -> GlobOnlyFiles :: options | 'D' -> GlobOnlyDirs :: options | 'C' -> GlobCVSIgnore :: options | 'P' -> GlobProperSubdirs :: options | _ -> options in search options (succ i) in search options 0 (* * Glob an argument into directories and files. *) let glob_arg venv pos loc options arg = let cwd = venv_dir venv in let dirs, files = Lm_glob.glob options (Dir.fullname cwd) [glob_string_of_arg options arg] in let dirs = List.sort String.compare dirs in let files = List.sort String.compare files in let dirs = List.map (fun dir -> Dir.chdir cwd dir) dirs in let files = List.map (fun file -> venv_intern_cd venv PhonyProhibited cwd file) files in dirs, files (* * This is similar to the above, but we interleave the directories * with the files when sorting. *) type glob_result = GDir of string | GFile of string let glob_result_compare r1 r2 = let s1 = match r1 with GDir s | GFile s -> s in let s2 = match r2 with GDir s | GFile s -> s in -(String.compare s1 s2) let glob_rev_arg venv pos loc options arg argv = let cwd = venv_dir venv in let dirs, files = Lm_glob.glob options (Dir.fullname cwd) [glob_string_of_arg options arg] in let args = List.fold_left (fun args s -> GFile s :: args) [] files in let args = List.fold_left (fun args s -> GDir s :: args) args dirs in let args = List.sort glob_result_compare args in List.fold_left (fun argv arg -> let v = match arg with GDir s -> ValDir (Dir.chdir cwd s) | GFile s -> ValNode (venv_intern_cd venv PhonyProhibited cwd s) in v :: argv) argv args (* * Glob the executable. * We do the standard thing, and allow glob expansions to multiple filenames. * In this case, the actual command is a bit ambiguous, so users should be * careful when they do it. *) let glob_arg_exe venv pos loc options (arg : arg) : (simple_exe * Node.t list) = if is_glob_arg options arg then match glob_arg venv pos loc options arg with [], exe :: args -> ExeNode exe, args | [], [] -> raise (OmakeException (pos, StringError "null glob expansion")) | dir :: _, _ -> raise (OmakeException (pos, StringValueError ("is a directory", ValDir dir))) else if is_quoted_arg arg then ExeQuote (simple_string_of_arg arg), [] else parse_command_string (simple_string_of_arg arg), [] let glob_exe venv pos loc options (exe : arg cmd_exe) : (simple_exe * Node.t list) = match exe with CmdNode node -> ExeNode node, [] | CmdArg arg -> glob_arg_exe venv pos loc options arg (* * Glob expand the glob arguments. *) let glob_value_argv venv pos loc options argv = List.fold_left (fun argv v -> if is_glob_value options v then let arg = arg_of_values venv pos [v] in glob_rev_arg venv pos loc options arg argv else v :: argv) [] (List.rev argv) (* * Glob the command line. *) let glob_command_line venv pos loc options argv = let cwd = venv_dir venv in let dir = Dir.fullname cwd in let argv = List.map (glob_string_of_arg options) argv in Lm_glob.glob_argv options dir argv (* * Glob an input or output file. *) let glob_channel venv pos loc options name = match name with RedirectNone | RedirectNode _ as file -> file | RedirectArg name -> match glob_arg venv pos loc options name with [], [node] -> RedirectNode node | dir :: _, _ -> raise (OmakeException (pos, StringValueError ("is a directory", ValDir dir))) | [], _ :: _ :: _ -> raise (OmakeException (pos, StringStringError ("ambiguous redirect", simple_string_of_arg name))) | [], [] -> raise (OmakeException (pos, StringStringError ("null redirect", simple_string_of_arg name))) (* * Convert the environment strings. *) let string_of_env env = List.map (fun (v, arg) -> v, simple_string_of_arg arg) env (************************************************************************ * Alias expansion. *) let find_alias_exn shell_obj venv pos loc exe = (* If this is an internal command, create the PipeApply *) let name = Lm_symbol.add exe in let v = venv_find_field_internal_exn shell_obj name in let _, _, f = eval_fun venv pos v in (* Found the function, no exceptions now *) let f venv_orig stdin stdout stderr env argv = if !debug_eval || !debug_shell then eprintf "Running %s, stdin=%i, stdout=%i, stderr=%i@." exe (Obj.magic stdin) (Obj.magic stdout) (Obj.magic stderr); let venv = venv_fork venv_orig in let venv = List.fold_left (fun venv (v, s) -> venv_setenv venv v s) venv env in let stdin_chan = Lm_channel.create "" Lm_channel.PipeChannel Lm_channel.InChannel false (Some stdin) in let stdout_chan = Lm_channel.create "" Lm_channel.PipeChannel Lm_channel.OutChannel false (Some stdout) in let stderr_chan = Lm_channel.create "" Lm_channel.PipeChannel Lm_channel.OutChannel false (Some stderr) in let stdin = venv_add_channel venv stdin_chan in let stdout = venv_add_channel venv stdout_chan in let stderr = venv_add_channel venv stderr_chan in let venv = venv_add_var venv stdin_var (ValChannel (InChannel, stdin)) in let venv = venv_add_var venv stdout_var (ValChannel (OutChannel, stdout)) in let venv = venv_add_var venv stderr_var (ValChannel (OutChannel, stderr)) in let v = ValArray argv in let () = if !debug_eval then eprintf "normalize_apply: evaluating internal function@." in let code, venv, value, reraise = try let venv, v = f venv pos loc [v] in let code = match v with ValOther (ValExitCode code) -> code | _ -> 0 in code, venv, v, None with ExitException (_, code) | ExitParentException (_, code) as exn -> code, venv, ValNone, Some exn | OmakeException _ | UncaughtException _ as exn -> eprintf "%a@." Omake_exn_print.pp_print_exn exn; Omake_state.exn_error_code, venv, ValNone, None | Unix.Unix_error _ | Sys_error _ | Not_found | Failure _ as exn -> eprintf "%a@." Omake_exn_print.pp_print_exn (UncaughtException (pos, exn)); Omake_state.exn_error_code, venv, ValNone, None in (* * XXX: JYH: we should probably consider combining the unfork * with venv_unexport. This is the only place where we actually * need the unexport. *) let venv = venv_unfork venv venv_orig in if !debug_eval then eprintf "normalize_apply: internal function is done: %d, %a@." code pp_print_value value; venv_close_channel venv pos stdin; venv_close_channel venv pos stdout; venv_close_channel venv pos stderr; match reraise with Some exn -> raise exn | None -> code, venv, value in name, f let find_alias obj venv pos loc exe = try Some (find_alias_exn obj venv pos loc exe) with Not_found -> None let find_alias_of_env venv pos = try let obj = venv_find_var_exn venv shell_object_var in match eval_single_value venv pos obj with ValObject obj -> find_alias obj | _ -> raise Not_found with Not_found -> (fun _venv _pos _loc _exe -> None) (************************************************************************ * Rule evaluation. *) (* * Get the target string if there is a single one. *) let target_of_value venv pos v = match v with ValNode node -> TargetNode node | _ -> TargetString (string_of_value venv pos v) let targets_of_value venv pos v = List.map (target_of_value venv pos) (values_of_value venv pos v) let pp_print_target buf target = match target with TargetNode node -> fprintf buf "TargetNode %a" pp_print_node node | TargetString s -> fprintf buf "TargetString %s" s let pp_print_targets buf targets = List.iter (fun target -> fprintf buf " %a" pp_print_target target) targets (* * From Omake_cache. *) let include_fun = Omake_cache.include_fun (* * Collect the different kinds of sources. *) let add_sources sources kind sources' = List.fold_left (fun sources source -> (kind, source) :: sources) sources sources' let sources_of_options venv pos loc sources options = let options = map_of_value venv pos options in let effects, sources, scanners, values = venv_map_fold (fun (effects, sources, scanners, values) optname optval -> let s = string_of_value venv pos optname in let v = Lm_symbol.add s in if Lm_symbol.eq v normal_sym then let files = targets_of_value venv pos optval in effects, add_sources sources NodeNormal files, scanners, values else if Lm_symbol.eq v optional_sym then let files = targets_of_value venv pos optval in effects, add_sources sources NodeOptional files, scanners, values else if Lm_symbol.eq v exists_sym then let files = targets_of_value venv pos optval in effects, add_sources sources NodeExists files, scanners, values else if Lm_symbol.eq v squash_sym then let files = targets_of_value venv pos optval in effects, add_sources sources NodeSquashed files, scanners, values else if Lm_symbol.eq v scanner_sym then let files = targets_of_value venv pos optval in effects, sources, add_sources scanners NodeScanner files, values else if Lm_symbol.eq v effects_sym then let files = targets_of_value venv pos optval in add_sources effects NodeNormal files, sources, scanners, values else if Lm_symbol.eq v values_sym then effects, sources, scanners, optval :: values else raise (OmakeException (loc_pos loc pos, StringVarError ("unknown rule option", v)))) (**) ([], sources, [], []) options in List.rev effects, List.rev sources, List.rev scanners, List.rev values (* * Get the commands. *) let lazy_command venv pos command = match command with SectionExp (loc, s, el, _) -> let fv = free_vars_exp_list el in CommandSection (eager_string_exp venv pos s, fv, el) | ShellExp (loc, s) -> CommandValue (loc, lazy_string_exp venv pos s) | _ -> let fv = free_vars_exp command in CommandSection (ValData "eval", fv, [command]) let lazy_commands venv pos commands = match eval_value venv pos commands with ValBody (env, el, export) -> List.map (lazy_command (venv_with_env venv env) pos) el, export | _ -> raise (OmakeFatalErr (pos, StringValueError ("unknown rule commands", commands))) let exp_list_of_commands venv pos commands = match eval_value venv pos commands with ValBody (_, el, _) -> el | _ -> raise (OmakeFatalErr (pos, StringValueError ("unknown rule commands", commands))) (* * Evaluate a .STATIC rule. *) let eval_memo_rule_exp venv pos loc multiple is_static key vars target source options body = let pos = string_pos "eval_memo_rule_exp" pos in (* First, evaluate the parts *) let sources = targets_of_value venv pos source in let sources = add_sources [] NodeNormal sources in let sources = (NodeNormal, TargetNode target) :: sources in let effects, sources, scanners, values = sources_of_options venv pos loc sources options in let el = exp_list_of_commands venv pos body in let e = SequenceExp (loc, el) in (* Reject some special flags *) let () = if effects <> [] || scanners <> [] then raise (OmakeException (loc_exp_pos loc, SyntaxError ".STATIC rules cannot have effects or scanners")) in (* Add the rule *) let venv = venv_add_memo_rule venv pos loc multiple is_static key vars sources values e in venv (* * Evaluate a rule. * * There are two types of rules. Implicit rules are 2-place rules that * have a % in the target name, or 3-place rules. Explicit rules are 2-place rules * that do not have a %. *) let rec eval_rule_exp venv pos loc multiple target pattern source options body = let pos = string_pos "eval_rule_exp" pos in (* First, evaluate the parts *) let targets = targets_of_value venv pos target in let patterns = targets_of_value venv pos pattern in let sources = targets_of_value venv pos source in let sources = add_sources [] NodeNormal sources in let effects, sources, scanners, values = sources_of_options venv pos loc sources options in let commands, export = lazy_commands venv pos body in let commands_are_nontrivial = commands <> [] in (* Process special rules *) match targets with [TargetString ".SUBDIRS"] -> if effects <> [] || patterns <> [] || scanners <> [] || values <> [] then raise (OmakeException (loc_exp_pos loc, SyntaxError ".SUBDIRS rule cannot have patterns, effects, scanners, or values")); let venv = eval_subdirs_rule venv loc sources (exp_list_of_commands venv pos body) export in venv, ValNone | [TargetString ".PHONY"] -> let targets, sources = if patterns = [] then List.map snd sources, [] else patterns, sources in let multiple = if multiple then RuleMultiple else RuleSingle in let venv = venv_add_phony venv loc targets in if effects <> [] || sources <> [] || scanners <> [] || values <> [] || commands_are_nontrivial then let venv, rules = venv_add_rule venv pos loc multiple targets [TargetString "%"] effects sources scanners values commands in venv, ValRules rules else venv, ValNone | [TargetString ".SCANNER"] -> let targets, sources = if patterns = [] then List.map snd sources, [] else patterns, sources in let multiple = if multiple then RuleScannerMultiple else RuleScannerSingle in let venv, rules = venv_add_rule venv pos loc multiple targets [] effects sources scanners values commands in venv, ValRules rules | [TargetString ".INCLUDE"] -> if effects <> [] || scanners <> [] then raise (OmakeException (loc_exp_pos loc, SyntaxError ".INCLUDE cannot have effects or scanners")); let targets, sources = if patterns = [] then List.map snd sources, [] else patterns, sources in let venv = eval_include_rule venv pos loc targets sources values commands in venv, ValNone | [TargetString ".ORDER"] -> if commands_are_nontrivial then raise (OmakeException (loc_exp_pos loc, SyntaxError ".ORDER rules cannot have build commands")); if effects <> [] || patterns <> [] || scanners <> [] || values <> [] then raise (OmakeException (loc_exp_pos loc, SyntaxError ".ORDER rules cannot have patterns, effects, scanners, or values")); let sources = List.map snd sources in let venv = venv_add_phony venv loc sources in let venv = venv_add_orders venv loc sources in venv, ValNone (* .ORDER rules are handled specially *) | [TargetString name] when venv_is_order venv name -> let name = Lm_symbol.add name in if commands_are_nontrivial then raise (OmakeException (loc_exp_pos loc, SyntaxError ".ORDER rule cannot have build commands")); if effects <> [] || scanners <> [] || values <> [] then raise (OmakeException (loc_exp_pos loc, SyntaxError ".ORDER rule cannot have effects, scanners, or values")); let venv = eval_ordering_rule venv pos loc name patterns sources in venv, ValNone | _ -> (* Normal rule *) let multiple = if multiple then RuleMultiple else RuleSingle in let venv, rules = venv_add_rule venv pos loc multiple targets patterns effects sources scanners values commands in venv, ValRules rules (* * Read the OMakefiles in the subdirectories too. *) and eval_subdirs_rule venv loc sources commands export = List.fold_left (fun venv dir -> eval_subdir venv loc dir commands export) venv sources (* * Compile an OMakefile. *) and eval_subdir venv loc (kind, dir) commands export = let pos = string_pos "eval_subdir" (loc_exp_pos loc) in let cache = venv_cache venv in let dir = venv_intern_dir venv (string_of_target venv dir) in let () = if kind <> NodeNormal then eprintf "*** omake: .SUBDIRS kind %a not implemented@." pp_print_node_kind kind; (* Check that the directory exists *) if not (Omake_cache.exists_dir cache dir) then let create_flag = try bool_of_value venv pos (venv_find_var_exn venv create_subdirs_var) with Not_found -> false in if create_flag then let name = Dir.fullname dir in try Lm_filename_util.mkdirhier name 0o777 with Unix.Unix_error _ -> raise (OmakeException (pos, StringDirError ("can't create directory", dir))) else raise (OmakeException (pos, StringDirError ("directory does not exist", dir))) in let cwd = venv_dir venv in let venv_body = venv_chdir_dir venv loc dir in let node = venv_intern venv_body PhonyProhibited makefile_name in let venv_body, result = (* * Ignore the file if the commands are listed explicity. * The OMakefile can always be included explicitly. *) if commands <> [] then eval_sequence_exp venv_body pos commands (* Otherwise, use the file if it exists *) else if Omake_cache.exists cache node then let venv_body = venv_add_file venv_body node in let name = Node.fullname node in let loc = bogus_loc name in let venv_body = include_file venv_body IncludeAll pos loc node in venv_body, ValNone (* Otherwise, check if an empty file is acceptable *) else let allow_empty_subdirs = try bool_of_value venv_body pos (venv_find_var_exn venv_body allow_empty_subdirs_var) with Not_found -> false in if not allow_empty_subdirs then raise (OmakeException (pos, StringNodeError ("file does not exist", node))); venv_body, ValNone in (* * Save the resulting environment as the default to use * for targets in this directory. Also change back to the * current directory. *) let venv = venv_add_dir venv_body; add_exports venv venv_body pos export in let venv = venv_chdir_tmp venv cwd in if debug print_rules then eprintf "@[Rules:%a@]@." pp_print_explicit_rules venv; venv (* * Include all the sources. *) and eval_include_rule venv pos loc sources deps values commands = let pos = string_pos "eval_include_rule" pos in (* Targets and dependencies *) let target = match sources with [source] -> venv_intern_target venv PhonyProhibited source | _ -> raise (OmakeException (pos, StringError ".INCLUDE must have a single source")) in let venv = venv_add_file venv target in let deps = List.map (fun (_, dep) -> venv_intern_target venv PhonyOK dep) deps in (* Convert the command list *) let commands = { Omake_env.command_env = venv; Omake_env.command_sources = deps; Omake_env.command_values = values; Omake_env.command_body = commands } in let commands = eval_commands venv loc target NodeSet.empty [commands] in let commands_digest = digest_of_commands pos commands in (* Ask the cache if this file is up-to-date *) let cache = venv_cache venv in let deps = List.fold_left NodeSet.add NodeSet.empty deps in let up_to_date = Omake_cache.up_to_date cache include_fun deps commands_digest in let () = (* Run the commands if there are deps, or if the file does not exist *) if commands <> [] && (not up_to_date || Omake_cache.stat cache target = None) then exec_commands venv pos loc commands; (* Check that it exists *) if Omake_cache.force_stat cache target = None then raise (OmakeException (pos, StringNodeError (".INCLUDE rule failed to build the target", target))); (* Tell the cache we did the update *) Omake_cache.add cache include_fun target (NodeSet.singleton target) deps commands_digest (MemoSuccess NodeTable.empty) in include_file venv IncludePervasives pos loc target (* * Evaluate the commands NOW. *) and exec_commands venv pos loc commands = let stdin = channel_of_var venv pos loc stdin_var in let stdout = channel_of_var venv pos loc stdout_var in let stdin = Lm_channel.descr stdin in let stdout = Lm_channel.descr stdout in List.iter (fun command -> let pid = eval_shell_internal stdin stdout command in let status, _ = eval_shell_wait venv pos pid in let code = match status with Unix.WEXITED i | Unix.WSIGNALED i | Unix.WSTOPPED i -> i in if code <> 0 then raise (OmakeException (pos, StringIntError ("command exited with code", code)))) commands (* * Evaluate the command lines. *) and eval_commands venv loc target sloppy_deps commands : arg_command_line list = let rec collect commands' commands = match commands with command :: commands -> let { Omake_env.command_env = venv; Omake_env.command_sources = sources; Omake_env.command_values = values; Omake_env.command_body = body } = command in let lines = eval_rule venv loc target sources sloppy_deps values body in let commands' = List.rev_append lines commands' in collect commands' commands | [] -> List.rev commands' in collect [] commands (* * Evaluate the rule lines. * Add these extra variables. * $@: the target file * $*: the target file, without suffix * $>: the target, without the directory part and without suffixes * $<: the first source * $+: all the sources * $^: the sources, in alphabetical order, with duplicates removed * $&: the scanner dependencies from the last run *) and eval_rule venv loc target sources sloppy_deps values commands = let pos = string_pos "eval_rule" (loc_exp_pos loc) in let target_name = venv_nodename venv target in let root = Lm_filename_util.root target_name in let root' = Lm_filename_util.strip_suffixes target_name in let venv = venv_add_var venv star_var (ValData root) in let venv = venv_add_var venv gt_var (ValData root') in let venv = venv_add_var venv at_var (ValNode target) in let source_all = ValArray (List.map (fun v -> ValNode v) sources) in let source_names = List.map (venv_nodename venv) sources in let source_set = List.fold_left LexStringSet.add LexStringSet.empty source_names in let source_set = LexStringSet.to_list source_set in let source_set = ValArray (List.map (fun s -> ValData s) source_set) in let source = match sources with source :: _ -> ValNode source | [] -> ValNone in let venv = venv_add_var venv plus_var source_all in let venv = venv_add_var venv hat_var source_set in let venv = venv_add_var venv lt_var source in let sloppy_deps = List.map (fun v -> ValNode v) (NodeSet.to_list sloppy_deps) in let venv = venv_add_var venv amp_var (ValArray sloppy_deps) in let options = Lm_glob.create_options (glob_options_of_env venv pos) in let find_alias = find_alias_of_env venv pos in let command_line (commands, fv) command = match command with CommandSection (_, fv', e) -> let commands = ([], CommandEval e) :: commands in let fv = free_vars_union fv fv' in commands, fv | CommandValue (loc, v) -> let commands = try let flags, pipe = pipe_of_value venv find_alias options pos loc v in (flags, CommandPipe pipe) :: commands with OmakeException (_, NullCommand) -> commands in commands, fv in let commands, fv = List.fold_left command_line ([], free_vars_empty) commands in let commands = List.rev commands in let values = VarInfoSet.fold (fun values v -> ValMaybeApply (loc, v) :: values) values (free_vars_set fv) in let values = List.fold_left (fun values v -> List.rev_append (values_of_value venv pos v) values) [] values in let values = List.map (eval_prim_value venv pos) values in let commands = if values = [] then commands else ([], CommandValues values) :: commands in let dir = venv_dir venv in parse_commands venv dir target loc commands (* * Add an ordering constraint. *) and eval_ordering_rule venv pos loc name patterns sources = let pos = string_pos "eval_ordering_rule" pos in let sources = List.map snd sources in List.fold_left (fun venv pattern -> venv_add_ordering_rule venv pos loc name pattern sources) venv patterns (************************************************************************ * Shell. *) (* * Get globbing options from the environment. *) and glob_options_of_env venv pos = let options = [] in let options = try let s = venv_find_var_exn venv glob_options_var in let s = string_of_value venv pos s in glob_options_of_string options s with Not_found -> options in let options = try let ignore = venv_find_var_exn venv glob_ignore_var in let ignore = strings_of_value venv pos ignore in GlobIgnore ignore :: options with Not_found -> options in let options = try let allow = venv_find_var_exn venv glob_allow_var in let allow = strings_of_value venv pos allow in GlobAllow allow :: options with Not_found -> options in options and compile_glob_options venv pos = Lm_glob.create_options (glob_options_of_env venv pos) (* * Set the path environment variable. *) and eval_path venv pos = let pos = string_pos "eval_path" pos in try let path = venv_find_var_exn venv path_var in let path = strings_of_value venv pos path in let path = String.concat pathsep path in venv_setenv venv path_sym path with Not_found -> venv (* * Evaluate a shell expression. *) and eval_shell_exp venv pos loc e = let pos = string_pos "eval_shell_exp" pos in let venv = eval_path venv pos in let find_alias = find_alias_of_env venv pos in let options = compile_glob_options venv pos in let _, pipe = pipe_of_value venv find_alias options pos loc e in let pipe = normalize_pipe venv pos pipe in let stdin = channel_of_var venv pos loc stdin_var in let stdout = channel_of_var venv pos loc stdout_var in let stderr = channel_of_var venv pos loc stderr_var in let stdin = Lm_channel.descr stdin in let stdout = Lm_channel.descr stdout in let stderr = Lm_channel.descr stderr in let venv, result = Omake_shell_job.create_job venv pipe stdin stdout stderr in (* Get the exit code *) let code = match result with ValInt i | ValOther (ValExitCode i) -> i | _ -> 0 in (* Check exit code *) let exit_on_error = try bool_of_value venv pos (venv_find_var_exn venv abort_on_command_error_var) with Not_found -> false in let () = if exit_on_error && code <> 0 then let print_error buf = fprintf buf "@[command terminated with code %d:@ %a@]@." code pp_print_string_pipe pipe in raise (OmakeException (loc_pos loc pos, LazyError print_error)) in venv, result (* * Save the output in a file and return the string. *) and eval_shell_output venv pos loc e = let pos = string_pos "eval_shell_output" pos in let tmpname = Filename.temp_file "omake" ".shell" in let fd = Lm_unix_util.openfile tmpname [Unix.O_RDWR; Unix.O_CREAT; Unix.O_TRUNC] 0o600 in let channel = Lm_channel.create tmpname Lm_channel.PipeChannel Lm_channel.OutChannel false (Some fd) in let channel = venv_add_channel venv channel in let venv = venv_add_var venv stdout_var (ValChannel (OutChannel, channel)) in let result = try let _ = eval_shell_exp venv pos loc e in let len = Unix.lseek fd 0 Unix.SEEK_END in let _ = Unix.lseek fd 0 Unix.SEEK_SET in let data = String.create len in Lm_unix_util.really_read fd data 0 len; Success data with exn -> Exception exn in venv_close_channel venv pos channel; Unix.unlink tmpname; match result with Success result -> result | Exception exn -> raise exn (* * Construct a shell. *) and eval_shell venv pos = let pos = string_pos "eval_shell" pos in let venv = eval_path venv pos in { shell_eval = eval_shell_internal; shell_info = eval_shell_info; shell_kill = eval_shell_kill venv pos; shell_wait = eval_shell_wait venv pos; shell_error_value = ValNone; shell_print_exp = pp_print_arg_command_line; shell_print_exn = Omake_exn_print.pp_print_exn; shell_is_failure_exn = Omake_exn_print.is_shell_exn } (* * Evaluate a shell command using the internal shell. *) and eval_shell_internal stdout stderr command = let { command_loc = loc; command_dir = dir; command_venv = venv; command_inst = inst } = command in let pos = string_pos "eval_shell_internal" (loc_exp_pos loc) in match inst with CommandEval e -> eval_command venv stdout stderr pos loc e | CommandValues _ -> ResultPid (0, venv, ValNone) | CommandPipe pipe -> let pipe = normalize_pipe venv pos pipe in let pid = if !debug_eval then eprintf "eval_shell_internal: creating job@."; Omake_shell_job.create_process venv pipe Unix.stdin stdout stderr in if !debug_eval then eprintf "eval_shell_internal: created job@."; pid (* * Used to evaluate expressions. *) and eval_command venv stdout stderr pos loc e = let f stdin stdout stderr = if !debug_eval || !debug_shell then eprintf "eval_command: evaluating internal function: stderr = %d@." (Lm_unix_util.int_of_fd stderr); let venv = venv_fork venv in let stdin = Lm_channel.create "" Lm_channel.PipeChannel Lm_channel.InChannel false (Some stdin) in let stdout = Lm_channel.create "" Lm_channel.PipeChannel Lm_channel.OutChannel false (Some stdout) in let stderr = Lm_channel.create "" Lm_channel.PipeChannel Lm_channel.OutChannel false (Some stderr) in let stdin = venv_add_channel venv stdin in let stdout = venv_add_channel venv stdout in let stderr = venv_add_channel venv stderr in let venv = venv_add_var venv stdin_var (ValChannel (InChannel, stdin)) in let venv = venv_add_var venv stdout_var (ValChannel (OutChannel, stdout)) in let venv = venv_add_var venv stderr_var (ValChannel (OutChannel, stderr)) in let code = try (match snd (eval_sequence_exp venv pos e) with ValRules _ -> eprintf "@[*** omake warning:@ %a@ Rule value discarded.@]@." (**) pp_print_pos (loc_pos loc pos) | _ -> ()); 0 with ExitException (_, code) -> code | OmakeException _ | UncaughtException _ as exn -> eprintf "%a@." Omake_exn_print.pp_print_exn exn; Omake_state.exn_error_code | ExitParentException _ | Unix.Unix_error _ | Sys_error _ | Not_found | Failure _ as exn -> eprintf "%a@." Omake_exn_print.pp_print_exn (UncaughtException (pos, exn)); Omake_state.exn_error_code in if !debug_eval then eprintf "eval_command: internal function is done: %d@." code; venv_close_channel venv pos stdin; venv_close_channel venv pos stdout; venv_close_channel venv pos stderr; code in if !debug_eval then eprintf "eval_command: creating thread, stderr = %d@." (Lm_unix_util.int_of_fd stderr); Omake_shell_job.create_thread venv f Unix.stdin stdout stderr (* * Normalize the pipe, so the background is only outermost, * and translate commands to aliases. * * The directory must be an absolute name. *) and normalize_pipe venv pos pipe = let pos = string_pos "normalize_pipe" pos in let options = Lm_glob.create_options (glob_options_of_env venv pos) in normalize_pipe_options venv pos false options pipe and normalize_pipe_options venv pos squash options (pipe : arg_pipe) : string_pipe = match pipe with PipeApply (loc, apply) -> PipeApply (loc, normalize_apply venv pos loc options apply) | PipeCommand (loc, command) -> PipeCommand (loc, normalize_command venv pos loc options command) | PipeCond (loc, op, pipe1, pipe2) -> PipeCond (loc, op, (**) normalize_pipe_options venv pos true options pipe1, normalize_pipe_options venv pos true options pipe2) | PipeCompose (loc, divert_stderr, pipe1, pipe2) -> PipeCompose (loc, divert_stderr, (**) normalize_pipe_options venv pos true options pipe1, normalize_pipe_options venv pos true options pipe2) | PipeGroup (loc, group) -> normalize_group venv pos loc options group | PipeBackground (loc, pipe) -> let pipe = normalize_pipe_options venv pos true options pipe in if squash then pipe else PipeBackground (loc, pipe) (* * Normalize an alias. *) and normalize_apply venv pos loc options apply = let { apply_env = env; apply_args = argv; apply_stdin = stdin; apply_stdout = stdout } = apply in { apply with apply_env = string_of_env env; apply_args = glob_value_argv venv pos loc options argv; apply_stdin = glob_channel venv pos loc options stdin; apply_stdout = glob_channel venv pos loc options stdout } (* * Normalize a command. * Glob-expand the arguments, and normalize the redirect names. *) and normalize_command venv pos loc options command = let pos = string_pos "normalize_command" pos in let { cmd_env = env; cmd_exe = exe; cmd_argv = argv; cmd_stdin = stdin; cmd_stdout = stdout } = command in let exe, args = glob_exe venv pos loc options exe in let argv = glob_command_line venv pos loc options argv in let argv = match args with [] -> argv | _ -> List.fold_left (fun argv node -> venv_nodename venv node :: argv) argv (List.rev args) in { command with cmd_env = string_of_env env; cmd_exe = exe; cmd_argv = argv; cmd_stdin = glob_channel venv pos loc options stdin; cmd_stdout = glob_channel venv pos loc options stdout } (* * Normalize a group. * Normalize the redirect names. *) and normalize_group venv pos loc options group = let pos = string_pos "normalize_group" pos in let { group_stdin = stdin; group_stdout = stdout; group_pipe = pipe } = group in let group = { group with group_stdin = glob_channel venv pos loc options stdin; group_stdout = glob_channel venv pos loc options stdout; group_pipe = normalize_pipe_options venv pos false options pipe } in PipeGroup (loc, group) (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/build/omake_builtin.ml0000664000152300015230000001524110616244640016203 0ustar jyhjyh(* * Some builtin functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_symbol open Omake_node_sig open Omake_exn_print open Omake_value_type open Omake_build_type open Omake_builtin_util open Omake_builtin_type module Pos = MakePos (struct let name = "Omake_builtin" end) open Pos let object_sym = Lm_symbol.add "Object" (* * Add a command line variable definition. *) let add_command_def = Omake_builtin_util.add_command_def let command_defs_are_nonempty = Omake_builtin_util.command_defs_are_nonempty let venv_add_command_defs = Omake_builtin_util.venv_add_command_defs (* * Register some builtin info. *) let builtin_info = ref builtin_empty let register_builtin info = let { builtin_vars = builtin_vars1; builtin_funs = builtin_funs1; builtin_kfuns = builtin_kfuns1; builtin_objects = builtin_objects1; pervasives_objects = pervasives_objects1; phony_targets = phony_targets1; builtin_rules = builtin_rules1 } = !builtin_info in let { builtin_vars = builtin_vars2; builtin_funs = builtin_funs2; builtin_kfuns = builtin_kfuns2; builtin_objects = builtin_objects2; pervasives_objects = pervasives_objects2; phony_targets = phony_targets2; builtin_rules = builtin_rules2 } = info in let info = { builtin_vars = builtin_vars1 @ builtin_vars2; builtin_funs = builtin_funs1 @ builtin_funs2; builtin_kfuns = builtin_kfuns1 @ builtin_kfuns2; builtin_objects = builtin_objects1 @ builtin_objects2; pervasives_objects = pervasives_objects1 @ pervasives_objects2; phony_targets = phony_targets1 @ phony_targets2; builtin_rules = builtin_rules1 @ builtin_rules2 } in builtin_info := info let get_registered_builtins () = !builtin_info (* * Check that there are no keyword arguments. *) let wrap_normal_prim_fun f venv pos loc args = venv, f venv pos loc args (* * Add all the functions to the environment. *) let venv_add_builtins venv = let loc = bogus_loc "" in let pos = string_pos "venv_add_builtins" (loc_exp_pos loc) in let { builtin_vars = builtin_vars; builtin_funs = builtin_funs; builtin_kfuns = builtin_kfuns; builtin_objects = builtin_objects; pervasives_objects = pervasives_objects; phony_targets = phony_targets; builtin_rules = builtin_rules } = get_registered_builtins () in (* Add only to the protected (current object) environment *) let venv = venv_add_phony venv loc (List.map (fun s -> TargetString s) phony_targets) in let venv = List.fold_left (fun venv (special, s, f, arity) -> let name = Lm_symbol.add s in let v = VarGlobal (loc, name) in let p = venv_add_prim_fun venv name (wrap_normal_prim_fun f) in venv_add_var venv v (ValPrim (arity, special, p))) venv builtin_funs in let venv = List.fold_left (fun venv (special, s, f, arity) -> let name = Lm_symbol.add s in let v = VarGlobal (loc, name) in let p = venv_add_prim_fun venv name f in venv_add_var venv v (ValPrim (arity, special, p))) venv builtin_kfuns in let venv = List.fold_left (fun venv (multiple, targets, sources) -> let targets = List.map (fun name -> TargetString name) targets in let sources = List.map (fun source -> NodeNormal, TargetString source) sources in let multiple = if multiple then RuleMultiple else RuleSingle in let venv, _ = venv_add_rule venv pos loc multiple targets [] [] sources [] [] [] in venv) venv builtin_rules in (* Add the Object object *) let obj = venv_empty_object in (* Add values to each of the primitive objects *) let venv = List.fold_left (fun venv (s, v, x) -> let obj = venv_add_field_internal obj v x in let v = VarGlobal (loc, Lm_symbol.add s) in venv_add_var venv v (ValObject obj)) venv builtin_objects in let venv = List.fold_left (fun venv s -> let v = VarGlobal (loc, Lm_symbol.add s) in venv_add_var venv v (ValObject obj)) venv pervasives_objects in (* Add the variables last *) let venv = List.fold_left (fun venv (s, v) -> let x = VarGlobal (loc, Lm_symbol.add s) in venv_add_var venv x (v venv)) venv builtin_vars in venv (* * Add the Pervasives module. *) let venv_add_pervasives venv = let loc = bogus_loc "Omake_builtin" in let pos = string_pos "venv_add_pervasives" (loc_exp_pos loc) in let () = venv_set_pervasives venv in let obj = object_of_file venv pos loc "Pervasives" in let venv = venv_flatten_object venv obj in venv_set_pervasives venv; venv (* * Load a file. *) let venv_include_rc_file venv name = if Sys.file_exists name then let node = venv_intern venv PhonyProhibited name in try let loc = bogus_loc (Filename.basename name) in let pos = string_pos "create_venv" (loc_exp_pos loc) in Omake_eval.include_file venv IncludePervasives pos loc node with exn -> eprintf "%a@." pp_print_exn exn; venv else venv (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/build/omake_build_tee.mli0000664000152300015230000000306110535330433016633 0ustar jyhjyh(* * Tee operations. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_printf open Omake_env open Omake_exec_util open Omake_build_type val env_close_success_tee : env -> command -> unit val env_close_failed_tee : env -> command -> unit val eprint_tee : command -> unit val format_tee_with_nl : formatter -> command -> unit val unlink_tee : command -> unit (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/build/omake_build_util.mli0000664000152300015230000000306710615471254017047 0ustar jyhjyh(* * Utilities on the build environment. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Lm_location open Omake_env open Omake_pos open Omake_node open Omake_build_type (* * Test for a dependency. * The symbol is the name of the ordering relation. * The bool is whether to work in debug mode. *) val sort : env -> venv -> pos -> symbol -> Node.t list -> Node.t list val check_sort : env -> venv -> pos -> symbol -> Node.t list -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/build/omake_builtin_util.ml0000664000152300015230000001427510616246374017254 0ustar jyhjyh1(* * Some builtin functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_pos open Omake_eval open Omake_wild open Omake_node open Omake_value open Omake_state open Omake_node_sig open Omake_value_type open Omake_build_type open Omake_symbol module Pos = MakePos (struct let name = "Omake_builtin_util" end) open Pos (************************************************************************ * Run-time variables. * * Strip the leading qualifiers. * This is a big hack, repeating Omake_ir_ast. * We may want to move this into there. *) let parse_path unlinked venv pos loc s = let vl = List.map Lm_symbol.add (Lm_string_util.split "." s) in match Omake_ir_ast.parse_declaration venv pos loc vl with NameEmpty _ -> raise (OmakeException (pos, StringError "empty name")) | NameMethod (info, v, vl) -> let info = match info.name_scope with Some VarScopePrivate -> VarPrivate (loc, v) | Some VarScopeThis -> VarThis (loc, v) | Some VarScopeVirtual | None -> VarVirtual (loc, v) | Some VarScopeGlobal -> VarGlobal (loc, v) in info, vl let parse_sym = parse_path (fun loc v -> VarThis (loc, v)) let parse_def venv pos loc s = let v, vl = parse_path (fun loc v -> VarVirtual (loc, v)) venv pos loc s in if vl <> [] then raise (OmakeException (pos, StringError "name has too many components")); v (* * Variable manipulations. *) let defined_sym venv pos loc s = let pos = string_pos "defined_sym" pos in let v, vl = parse_sym venv pos loc s in match vl with [] -> venv_defined venv v | _ -> eval_defined_field venv pos loc v vl let get_sym venv pos loc s = let pos = string_pos "get_sym" pos in let v, vl = parse_sym venv pos loc s in match vl with [] -> venv_find_var venv pos loc v | _ -> snd (eval_find_method venv pos loc v vl) let add_sym venv pos loc s x = let pos = string_pos "add_sym" pos in let v, vl = parse_sym venv pos loc s in if vl <> [] then raise (OmakeException (loc_pos loc pos, StringError "name has too many components")); venv_add_var venv v x (* * Command-line definitions. *) let command_defs = ref [] let add_command_def v s = command_defs := (v, s) :: !command_defs let command_defs_are_nonempty () = !command_defs <> [] let venv_add_command_defs venv = let loc = bogus_loc "" in let pos = string_pos "venv_add_command_defs" (loc_exp_pos loc) in List.fold_left (fun venv (v, s) -> let v = parse_def venv pos loc v in venv_add_var venv v (ValString s)) venv !command_defs (* * Fold its in a sequence, and place separators between them. *) let sequence_map f sl = let white = ValString " " in let rec collect seq sl = match sl with s :: sl -> let s = f s in let seq = if seq = [] then [s] else s :: white :: seq in collect seq sl | [] -> List.rev seq in collect [] sl (* * Add separators to a list. *) let sequence_list sl = let white = ValString " " in let rec collect sl = match sl with [s] -> [s] | s :: sl -> s :: white :: collect sl | [] -> [] in collect sl (* * Default Boolean values. *) let val_true = ValData "true" let val_false = ValData "false" let val_of_bool b = if b then val_true else val_false (* * Maintaining the environment. *) let saved_env = ref None let set_env env = saved_env := Some env let get_env pos loc = match !saved_env with Some env -> env | None -> raise (OmakeException (loc_pos loc pos, StringError "this function can be called only in rule bodies")) let is_build_phase () = !saved_env <> None (* * Check whether a node is a leaf node. *) let is_leaf_command command = let { command_scanner_deps = scanner_deps; command_static_deps = static_deps; command_build_deps = build_deps; command_lines = lines } = command in NodeSet.is_empty scanner_deps && NodeSet.is_empty static_deps && NodeSet.is_empty build_deps && (lines = CommandNone) let is_leaf_node env node = try is_leaf_command (NodeTable.find env.env_commands node) with Not_found -> false (* * Extend an object with another. * The argument may be a file or an object. *) let object_of_file venv pos loc s = let pos = string_pos "extends" pos in let node = find_include_file venv pos loc s in try venv_find_object_file_exn venv node with Not_found -> let obj = eval_object_file venv pos loc node in venv_add_object_file venv node obj; obj (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/build/omake_build_type.ml0000664000152300015230000002057510615701364016703 0ustar jyhjyh(* * Constants and types used by the build module Omake_build. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Lm_location open Omake_ir open Omake_env open Omake_node open Omake_exec open Omake_exec_util open Omake_cache_type open Omake_command_type (* * Magic number for marshaling. *) let magic_number = "" (* * A command corresponds to a rule, * where all variables have been resolved. * * A command can be in several states: * Idle: the command is not currently used * Initial: the command needs to be processed * ScanBlocked: the command can't be scanned until * the scanner dependencies have been built * ScannedPending: the scanner dependencies have been * satisfied, but the scan is blocked because the * effects of this command have not been scanned yet. * Scanned: the command has been scanned, and all * effects have been scanned too * Blocked: the command can't be run until all of its * dependencies are built * Ready: all dependencies have been satisfied, and the * command is ready to run * Pending: command is ready to run, but it conflicts * with another job that is Running, so it has * to wait * Running (pid, file): the command is running, with the given pid. * If this is a scanner, the output is being saved in the file * Succeeded deps: the command succeeded. If this is a scanner * the deps are a table of the dependencies. * Failed code: the command failed with the given non-zero exit code. * * As a command is processed, it passes through each of these states * in the given order, with the following exceptions: * - The CommandScannedPending may be skipped * - Only one of the Succeeded or Failed states is assigned *) type command_state = CommandIdle | CommandInitial | CommandScanBlocked | CommandScannedPending | CommandScanned | CommandBlocked | CommandReady | CommandPending | CommandRunning of Omake_exec_id.id * string option | CommandSucceeded of NodeSet.t NodeTable.t | CommandFailed of int type command_tag = CommandIdleTag | CommandInitialTag | CommandScanBlockedTag | CommandScannedPendingTag | CommandScannedTag | CommandBlockedTag | CommandReadyTag | CommandPendingTag | CommandRunningTag | CommandSucceededTag | CommandFailedTag (* * Commands for a rule. * * Invariant: CommandInfo and CommandLines must have * at least one command. * * CommandLines is CommandInfo after evaluation. * CommandScanner saves the commands so they may be re-evaluated after the scan. *) type command_body = CommandNone | CommandInfo of command_info list | CommandLines of command_info list * arg_command_line list * command_digest | CommandScanner of command_info list * NodeSet.t * arg_command_line list * command_digest (* * The command. * There is a 1-to-1 correspondence between commands and targets. * * command_state: the current command state * * command_target: the target node to be built * command_effects: the nodes that may be modified by this command * command_loc: the location of the rule being used to build * the target. * command_lines: the commands that should be run sequentially * to build the target. * * command_static_deps: the dependencies statically defined * in the OMakefiles. * command_scanner_deps: the :scanner: dependencies for a command * * command_build_deps: the dependencies, including implicit * dependencies produced by the scanner * command_blocked: at least one of the deps in the set * is blocked *) type command = { command_venv : venv; mutable command_state : command_state; command_target : Node.t; mutable command_effects : NodeSet.t; command_locks : NodeSet.t; command_loc : loc; (* Scanners for this command *) command_scanner_deps : NodeSet.t; (* Static deps from the OMakefiles *) command_static_deps : NodeSet.t; (* Actual dynamic dependencies *) mutable command_build_deps : NodeSet.t; mutable command_blocked : Node.t list; mutable command_lines : command_body; (* Output tees *) mutable command_tee : tee; (* Linked list *) mutable command_pred : command option ref; command_succ : command option ref } (* * The environment remembers all the commands. In addition * we compute an inverted command graph , so that we know what to do * when a command finishes. * * env_venv: the default environment * env_cache: the build cache, so we don't run commands * if the target is already up-to-date. * env_explicit_deps: gives explicitly-defined dependencies of nodes * env_explicit_targets: maps nodes to rules where the node is a target * env_explicit_directories: maps directories to environments * * env_commands: all the commands * env_inverse: the inverted dependency graph * env_error_code: the exit code when an error occurs * env_idle_count: number of idle processors *) type env_wl = { env_idle_wl : command option ref; env_initial_wl : command option ref; env_scan_blocked_wl : command option ref; env_scanned_pending_wl : command option ref; env_scanned_wl : command option ref; env_blocked_wl : command option ref; env_ready_wl : command option ref; env_pending_wl : command option ref; env_running_wl : command option ref; env_succeeded_wl : command option ref; env_failed_wl : command option ref } type env = { env_venv : venv; env_cwd : Dir.t; env_cache : Omake_cache.t; env_exec : exec; mutable env_explicit_deps : (NodeSet.t * NodeSet.t * NodeSet.t) NodeTable.t; env_explicit_targets : erule NodeTable.t; env_explicit_directories : venv DirTable.t; mutable env_includes : digest NodeTable.t; (* Build state *) mutable env_commands : command NodeTable.t; mutable env_inverse : command NodeTable.t NodeTable.t; mutable env_error_code : int; mutable env_idle_count : int; mutable env_print_dependencies : NodeSet.t; (* Worklists *) mutable env_current_wl : env_wl; env_main_wl : env_wl; (* Pending events *) mutable env_pending_events : Lm_notify.event Queue.t; (* Output files *) env_summary : string; (* Statistics *) mutable env_succeeded_count : int; mutable env_optional_count : int; mutable env_scan_count : int; mutable env_scan_exec_count : int; mutable env_rule_count : int; mutable env_rule_exec_count : int } (* * Helper type for determining how to build a command * from a rule. *) type explicit_rule = ExplicitTarget of erule | ExplicitDirectory of venv | ExplicitNone (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/build/omake_target.mli0000664000152300015230000000275610617130753016203 0ustar jyhjyh(* * Utilities on targets. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_location open Omake_env open Omake_pos open Omake_node val target_is_buildable : Omake_cache.t -> venv -> pos -> Node.t -> bool val target_is_buildable_proper : Omake_cache.t -> venv -> pos -> Node.t -> bool val venv_find_buildable_implicit_rule : Omake_cache.t -> venv -> pos -> Node.t -> erule option (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/build/omake_build.ml0000664000152300015230000032241110655734556015651 0ustar jyhjyh(* * Do the actual build given a set of commands to run. * The basic algorithm is to use a depth-first search on the * command DAG, and build nodes that are out-of-date. * * In addition, we want to perform multi-tasking. This build * process is not multi-threaded. Instead, we fork jobs and * asynchronously continue building the other parts of * the project. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_heap open Lm_debug open Lm_symbol open Lm_notify open Lm_location open Lm_string_util open Lm_string_set open Omake_util open Omake_ir open Omake_env open Omake_pos open Omake_eval open Omake_node open Omake_exec open Omake_rule open Omake_eval open Omake_state open Omake_symbol open Omake_command open Omake_node_sig open Omake_exec_type open Omake_exec_util open Omake_exec_id open Omake_exec_print open Omake_exec_remote open Omake_cache_type open Omake_build_tee open Omake_build_type open Omake_value_type open Omake_builtin_util open Omake_command_digest open Omake_options open Omake_var module Pos = MakePos (struct let name = "Omake_build" end);; open Pos;; exception BuildExit of int type prompt_state = { ps_count : int; (* success count *) ps_save : float; (* next .omakedb save time *) ps_progress : float; (* next progress bar update time *) } let save_interval = ref Omake_magic.default_save_interval (* * XXX: Should this be an option as well? *) let prompt_interval = 0.5 (* * Maximum number of events that can be queued during * the .BUILD_* phases. *) let max_pending_events = 256 (* * Build debugging. *) let debug_rule = create_debug (**) { debug_name = "rule"; debug_description = "Display debugging information for rule execution"; debug_value = false } let debug_build = create_debug (**) { debug_name = "build"; debug_description = "Display debugging information during the build process"; debug_value = false } let debug_deps = create_debug (**) { debug_name = "deps"; debug_description = "Display dependency information as it is read"; debug_value = false } let scanner_fun = Omake_cache.scanner_fun let rule_fun = Omake_cache.rule_fun let env_fun = Omake_cache.env_fun let env_target = Omake_cache.env_target (* * The argument to "Restart" is the reason for restarting. * The default reason is a change in one of the OMakefiles or included files. *) exception Restart of string option exception UnknownTarget of Node.t type default_scanner_mode = DefaultScannerIsEnabled | DefaultScannerIsDisabled | DefaultScannerIsWarning | DefaultScannerIsError (************************************************************************ * Utilities. *) (* * Special nodes. *) let build_begin = ".BUILD_BEGIN" let build_success = ".BUILD_SUCCESS" let build_failure = ".BUILD_FAILURE" let build_begin_target = Node.create_phony_global build_begin let build_success_target = Node.create_phony_global build_success let build_failure_target = Node.create_phony_global build_failure (* * Directory listing. *) let rec list_directory dir = let dirx = try Some (Unix.opendir dir) with Unix.Unix_error _ -> None in match dirx with None -> [] | Some dirx -> let rec list entries = let name = try Some (Unix.readdir dirx) with Unix.Unix_error _ | End_of_file -> None in match name with Some "." | Some ".." -> list entries | Some name -> list (Filename.concat dir name :: entries) | None -> entries in let entries = list [] in Unix.closedir dirx; entries (* * Check if a command list contains value dependencies. *) let commands_have_value_dependencies commands = List.exists (fun command -> command.command_values <> []) commands (* * Flatten the list of *all* dependencies. *) let flatten_deps table = NodeTable.fold (fun deps1 _ deps2 -> NodeSet.union deps1 deps2) NodeSet.empty table (* * Get the scanner mode. *) let venv_find_scanner_mode venv pos = try let v = venv_find_var_exn venv scanner_mode_var in match string_of_value venv pos v with "enabled" -> DefaultScannerIsEnabled | "disabled" -> DefaultScannerIsDisabled | "warning" -> DefaultScannerIsWarning | "error" -> DefaultScannerIsError | s -> raise (OmakeException (pos, StringStringError ("bad scanner mode (should be enabled, disabled, error, or warning)", s))) with Not_found -> DefaultScannerIsError let restartable_exn = function | OmakeException _ | UncaughtException _ | RaiseException _ -> true | _ -> false (* * JYH: the overhead of scanning directories every time * it changes is pretty high. We may want to think of * other ways of doing this. * * Intercept directory change events and pretend that every file * in the directory has changed. *) let process_changes is_node_relevant process_node venv cwd cache event = let process_node name = let node = venv_intern_cd venv PhonyProhibited cwd name in let changed = is_node_relevant node && Omake_cache.stat_changed cache node in if !debug_notify then eprintf "Omake_build.process_changes: received %s event for node: %a@." (if changed then "relevant" else "ignored") pp_print_node node; if changed then process_node node; changed in match event with { notify_code = DirectoryChanged; notify_name = name } -> List.fold_left (fun changed name -> process_node name || changed) false (list_directory name) | { notify_code = (Changed | Created); notify_name = name } -> process_node name | _ -> false (* * Find a command from a target. * May raise Not_found. *) let find_command env target = NodeTable.find env.env_commands target (* * Find the immediate parents of a node in the dependency DAG *) let find_parents env node = try let inverse = NodeTable.find env.env_inverse node in NodeTable.fold (fun nodes node _ -> NodeSet.add nodes node) NodeSet.empty inverse with Not_found -> NodeSet.empty (************************************************************************ * Printing. *) let pp_print_deps buf deps = NodeTable.iter (fun target deps -> fprintf buf "@ @[%a:%a@]" (**) pp_print_node target pp_print_node_set deps) deps let pp_print_command_state buf state = match state with CommandIdle -> pp_print_string buf "idle" | CommandInitial -> pp_print_string buf "initial" | CommandScanBlocked -> pp_print_string buf "scan-blocked" | CommandScannedPending -> pp_print_string buf "scanned-pending" | CommandScanned -> pp_print_string buf "scanned" | CommandBlocked -> pp_print_string buf "blocked" | CommandPending -> pp_print_string buf "pending" | CommandReady -> pp_print_string buf "ready" | CommandRunning (pid, None) -> fprintf buf "running(%a)" pp_print_pid pid | CommandRunning (pid, Some name) -> fprintf buf "scanning(%a, %s)" pp_print_pid pid name | CommandSucceeded _ -> pp_print_string buf "succeeded" | CommandFailed code -> fprintf buf "failed(%d)" code let pp_print_command_opt buf command_opt = match command_opt with Some command -> let { command_target = target; command_state = state } = command in fprintf buf "%a[%a]" pp_print_node target pp_print_command_state state | None -> pp_print_string buf "" let pp_print_command buf command = let { command_target = target; command_effects = effects; command_locks = locks; command_state = state; command_scanner_deps = scanner_deps; command_build_deps = build_deps; command_blocked = blocked } = command in fprintf buf "@[%a[%a],@ @[effects =%a@]@ @[locks =%a@]@ @[scanner deps =%a@]@ @[build deps =%a@]@ @[blocked =%a@]@]" (**) pp_print_node target pp_print_command_state state pp_print_node_set effects pp_print_node_set locks pp_print_node_set scanner_deps pp_print_node_set build_deps pp_print_node_list blocked let pp_print_node_states env buf nodes = NodeSet.iter (fun target -> try let command = find_command env target in fprintf buf "@ %a(%a)" (**) pp_print_node target pp_print_command_state command.command_state with Not_found -> pp_print_node buf target) nodes (* * Compute all of the dependencies. *) let all_dependencies dependencies_of env nodes = let commands = env.env_commands in let rec find_deps found examined unexamined = if NodeSet.is_empty unexamined then found else let node = NodeSet.choose unexamined in let unexamined = NodeSet.remove unexamined node in if NodeSet.mem examined node then find_deps found examined unexamined else let examined = NodeSet.add examined node in let found, deps = try let command = NodeTable.find commands node in let deps = dependencies_of command in let found = NodeSet.add found node in found, deps with Not_found -> found, NodeSet.empty in let unexamined = NodeSet.union unexamined deps in find_deps found examined unexamined in find_deps NodeSet.empty NodeSet.empty nodes let all_build_dependencies = all_dependencies (fun command -> command.command_build_deps) let all_scanner_dependencies = all_dependencies (fun command -> command.command_scanner_deps) (* * Print the dependency information. *) let rec pp_print_dependencies_aux show_all env buf command = let { command_target = target; command_effects = effects; command_scanner_deps = scanner_deps; command_static_deps = static_deps; command_build_deps = build_deps } = command in let inverse = find_parents env target in let options = venv_options env.env_venv in let total, build_deps, scanner_deps = if show_all && opt_all_dependencies options then "all transitive ", all_build_dependencies env build_deps, all_scanner_dependencies env scanner_deps else "", build_deps, scanner_deps in fprintf buf "@[target: %a@ @[%sscanner dependencies:%a@]@ @[static dependencies:%a@]@ @[%sbuild dependencies:%a@]@ @[dependencies are merged from:%a@]@ @[targets that depend on this node at this point:%a@]@]" (**) pp_print_node target total pp_print_node_set scanner_deps pp_print_node_set static_deps total pp_print_node_set build_deps pp_print_node_set effects pp_print_node_set inverse; if show_all && opt_verbose_dependencies options then let nodes = NodeSet.union scanner_deps build_deps in fprintf buf "@ @ --- Complete dependency listing ---@ "; NodeSet.iter (fun node -> let command = find_command env node in fprintf buf "@ %a" (pp_print_dependencies_aux false env) command) nodes let pp_print_dependencies = pp_print_dependencies_aux true (************************************************************************ * Command queues. *) (* * Worklist creation. *) let create_wl () = { env_idle_wl = ref None; env_initial_wl = ref None; env_scan_blocked_wl = ref None; env_scanned_pending_wl = ref None; env_scanned_wl = ref None; env_blocked_wl = ref None; env_ready_wl = ref None; env_pending_wl = ref None; env_running_wl = ref None; env_succeeded_wl = ref None; env_failed_wl = ref None } (* * Get the list pointer for a node class. *) let command_tag = function CommandIdle -> CommandIdleTag | CommandInitial -> CommandInitialTag | CommandScanBlocked -> CommandScanBlockedTag | CommandScannedPending -> CommandScannedPendingTag | CommandScanned -> CommandScannedTag | CommandBlocked -> CommandBlockedTag | CommandReady -> CommandReadyTag | CommandPending -> CommandPendingTag | CommandRunning _ -> CommandRunningTag | CommandSucceeded _ -> CommandSucceededTag | CommandFailed _ -> CommandFailedTag let get_worklist_command wl = function CommandIdleTag -> wl.env_idle_wl | CommandInitialTag -> wl.env_initial_wl | CommandScanBlockedTag -> wl.env_scan_blocked_wl | CommandScannedPendingTag -> wl.env_scanned_pending_wl | CommandScannedTag -> wl.env_scanned_wl | CommandBlockedTag -> wl.env_blocked_wl | CommandReadyTag -> wl.env_ready_wl | CommandPendingTag -> wl.env_pending_wl | CommandRunningTag -> wl.env_running_wl | CommandSucceededTag -> wl.env_succeeded_wl | CommandFailedTag -> wl.env_failed_wl let command_worklist env state = get_worklist_command env.env_current_wl state (* * Reclassify the commands. *) let reclassify_command env command state = (* Unlink the node from its current list *) let pred = command.command_pred in let succ = !(command.command_succ) in let _ = pred := succ; match succ with Some next -> next.command_pred <- pred | None -> () in (* Update the job counter *) let incr = match command.command_state, state with CommandSucceeded _, CommandSucceeded _ -> 0 | CommandSucceeded _, _ -> -1 | _, CommandSucceeded _ -> 1 | _ -> 0 in let () = env.env_succeeded_count <- env.env_succeeded_count + incr in (* Add to the new list *) let l = command_worklist env (command_tag state) in let next = !l in l := Some command; command.command_state <- state; command.command_pred <- l; command.command_succ := next; match next with Some next -> next.command_pred <- command.command_succ | None -> () (* * Iterate through the node list. *) let command_iter env state f = let rec iter command_opt = match command_opt with Some command -> let next = !(command.command_succ) in f command; iter next | None -> () in iter (!(command_worklist env state)) (* * Fold through the command list. *) let command_fold env state f x = let rec fold x command = match command with Some command -> let next = !(command.command_succ) in let x = f x command in fold x next | None -> x in let x = fold x (!(command_worklist env state)) in if env.env_main_wl == env.env_current_wl then x else fold x (!(get_worklist_command env.env_main_wl state)) (* * Existential test. *) let command_exists env state f x = let rec exists command = match command with Some command -> let next = !(command.command_succ) in f command || exists next | None -> x in exists (!(command_worklist env state)) (* * Find a particular command. *) let command_find env state f = let rec find command = match command with Some command -> if f command then command else find (!(command.command_succ)) | None -> raise Not_found in find (!(command_worklist env state)) (* * Test for empty. *) let command_list_is_empty env state = let l = command_worklist env state in match !l with Some _ -> false | None -> true (* * Get the head of a list. *) let command_list_head env state = let l = command_worklist env state in match !l with Some command -> command | None -> raise (Invalid_argument "command_list_head") (************************************************************************ * Other target utilities. *) let target_is_phony = Node.is_phony let target_exists env node = Omake_cache.exists env.env_cache node let target_is_buildable env venv node = Omake_target.target_is_buildable env.env_cache venv node (************************************************************************ * Environment. *) (* * Get options. *) let env_options env = venv_options env.env_venv (* * Add a target to the print-dependency list. * The target dependencies will be printed just before the * build rule is executed. *) let print_node_dependencies env target = env.env_print_dependencies <- NodeSet.add env.env_print_dependencies target (* * Start command if it is idle. *) let start_command env command = if command.command_state = CommandIdle then reclassify_command env command CommandInitial (* * Find a process by pid. *) let find_pid env pid = command_find env CommandRunningTag (fun command -> match command.command_state with CommandRunning (pid', _) -> pid' = pid | _ -> false) (* * Get the command lines. *) let command_lines command = match command.command_lines with CommandNone -> [], None | CommandScanner (_, _, lines, digest) | CommandLines (_, lines, digest) -> lines, digest | CommandInfo _ -> raise (Invalid_argument "build_lines") (* * See if this is a scanner command. *) let command_is_scanner command = Node.kind command.command_target = NodeScanner let set_tee env command tee = NodeSet.iter (fun target -> unlink_tee (find_command env target)) command.command_effects; unlink_tee command; command.command_tee <- tee (************************************************************************ * Command creation. *) (* * Create a command for a target that always exists. *) let create_exists_command env pos loc target = (* Create the command, and link it to the worklist *) let l = command_worklist env CommandSucceededTag in let next = !l in let succ = ref next in let effects = NodeSet.singleton target in let command = { command_venv = env.env_venv; command_state = CommandSucceeded NodeTable.empty; command_target = target; command_locks = effects; command_effects = effects; command_scanner_deps = NodeSet.empty; command_static_deps = NodeSet.empty; command_build_deps = NodeSet.empty; command_blocked = []; command_loc = loc; command_lines = CommandNone; command_tee = tee_none; command_pred = l; command_succ = succ } in (* Link it into the list *) l := Some command; (match next with Some next -> next.command_pred <- succ | None -> ()); (* Add to the command table *) env.env_optional_count <- env.env_optional_count + 1; env.env_commands <- NodeTable.add env.env_commands target command (* * Create a command for a squashed target, * where the digest value is ignored, but the * target should be built. *) let create_squashed_command env pos loc target = (* Create the command, and link it to the worklist *) let l = command_worklist env CommandInitialTag in let next = !l in let succ = ref next in let effects = NodeSet.singleton target in let static_deps = NodeSet.singleton (Node.core target) in let command = { command_venv = env.env_venv; command_state = CommandInitial; command_target = target; command_effects = effects; command_locks = static_deps; command_static_deps = static_deps; command_scanner_deps = NodeSet.empty; command_build_deps = NodeSet.empty; command_blocked = []; command_loc = loc; command_lines = CommandNone; command_tee = tee_none; command_pred = l; command_succ = succ } in (* Link it into the list *) l := Some command; (match next with Some next -> next.command_pred <- succ | None -> ()); (* Add to the command table *) env.env_commands <- NodeTable.add env.env_commands target command (* * Create a command in a state. *) let create_command env venv target effects lock_deps static_deps scanner_deps loc dir commands = (* Create the command, and link it to the worklist *) let l = command_worklist env CommandInitialTag in let next = !l in let succ = ref next in let () = if not (NodeSet.for_all (fun node -> Node.kind node = NodeScanner) scanner_deps) then let print_error buf = fprintf buf "@[Malformed scanner dependencies:"; fprintf buf "@ target: %a" pp_print_node target; fprintf buf "@ @[lock_deps:%a@]" pp_print_node_set lock_deps; fprintf buf "@ @[static_deps:%a@]" pp_print_node_set static_deps; fprintf buf "@ @[scanner_deps:%a@]" pp_print_node_set scanner_deps; fprintf buf "@]" in raise (OmakeException (loc_exp_pos loc, LazyError print_error)) in let effects = NodeSet.add effects target in let locks = NodeSet.union lock_deps effects in let command = { command_venv = venv; command_state = CommandInitial; command_target = target; command_effects = effects; command_locks = locks; command_static_deps = static_deps; command_scanner_deps = scanner_deps; command_build_deps = NodeSet.empty; command_blocked = []; command_loc = loc; command_lines = commands; command_tee = tee_none; command_pred = l; command_succ = succ } in (* Link it into the list *) l := Some command; (match next with Some next -> next.command_pred <- succ | None -> ()); (* Add to the command table *) env.env_commands <- NodeTable.add env.env_commands target command (* * Build a command given a directory and a command list. *) let build_any_command env pos loc venv target effects locks sources scanners commands = let pos = string_pos "build_any_command" (loc_pos loc pos) in (* Directory for this target *) let dir = venv_dir venv in (* Get all the extra dependencies that are statically defined *) let lock_deps, static_deps, scanner_deps = try NodeTable.find env.env_explicit_deps target with Not_found -> NodeSet.empty, NodeSet.empty, NodeSet.empty in let lock_deps = NodeSet.union lock_deps locks in let static_deps = NodeSet.union static_deps sources in let scanner_deps = NodeSet.union scanner_deps scanners in let implicit_lock_deps, implicit_static_deps, implicit_scanner_deps, implicit_values = venv_find_implicit_deps venv target in let lock_deps = NodeSet.union lock_deps implicit_lock_deps in let static_deps = NodeSet.union static_deps implicit_static_deps in let scanner_deps = NodeSet.union scanner_deps implicit_scanner_deps in let scanner_deps = if Node.kind target = NodeScanner || not (NodeSet.is_empty scanner_deps) then scanner_deps else let scanner_mode = venv_find_scanner_mode venv pos in if scanner_mode = DefaultScannerIsDisabled then scanner_deps else let scanner_target = Node.create_escape NodeScanner target in if target_is_buildable env venv pos scanner_target then match scanner_mode with DefaultScannerIsWarning -> eprintf "*** omake: warning: using default scanner %a@." pp_print_node scanner_target; NodeSet.add scanner_deps scanner_target | DefaultScannerIsError -> raise (OmakeException (loc_pos loc pos, StringNodeError ("default scanners are not allowed", scanner_target))) | DefaultScannerIsEnabled -> NodeSet.add scanner_deps scanner_target | DefaultScannerIsDisabled -> scanner_deps else scanner_deps in let () = if debug debug_build then eprintf "@[Building new rule: %s@ @[lock deps:%a@]@ @[static deps:%a@]@ @[scanner deps:%a@]@]@." (**) (Node.fullname target) pp_print_node_set lock_deps pp_print_node_set static_deps pp_print_node_set scanner_deps in let commands = match implicit_values, commands with [], [] -> CommandNone | [], _ :: _ -> CommandInfo commands | _ :: _, _ -> let command = { command_env = venv; command_sources = NodeSet.to_list sources; command_values = implicit_values; command_body = [] } in CommandInfo (command :: commands) in create_command env venv target effects lock_deps static_deps scanner_deps loc dir commands (* * Build a null command for a file that exists but has no * build rules. *) let build_null_command env pos loc venv target = let pos = string_pos "build_null_command" pos in if debug debug_implicit then eprintf "build_null_command: %a@." pp_print_node target; if target_is_phony target || target_exists env target then begin build_any_command env pos loc venv target NodeSet.empty NodeSet.empty NodeSet.empty NodeSet.empty []; if opt_poll (env_options env) && not (target_is_phony target) then Exec.monitor env.env_exec target end else raise (UnknownTarget target) (* * Build a command from an environment, a set of sources, and * a list of commands. *) let build_explicit_command env pos loc target effects locks venv sources scanners commands = let pos = string_pos "build_explicit_command" pos in let () = if debug debug_implicit then eprintf "@[build_explicit_command: explicit rule %a:@ @[effects =%a@]@ @[sources =%a@]@ @[scanners =%a@]@]@." (**) pp_print_node target pp_print_node_set effects pp_print_node_set sources pp_print_node_set scanners in (* Check that all the effects have the same environment *) let bogus = NodeSet.fold (fun bogus effect -> try let erule = NodeTable.find env.env_explicit_targets effect in if erule.rule_env != venv then NodeSet.add bogus effect else bogus with Not_found -> bogus) NodeSet.empty effects in let _ = if not (NodeSet.is_empty bogus) then let pp_print_target_loc buf (target, loc) = fprintf buf "@ @[%a@ (%a)@]" pp_print_node target pp_print_location loc in let rec pp_print_bogus_set buf bogus = if not (NodeSet.is_empty bogus) then begin let effect = NodeSet.choose bogus in pp_print_target_loc buf (effect, (NodeTable.find env.env_explicit_targets effect).rule_loc); pp_print_bogus_set buf (NodeSet.remove bogus effect) end in eprintf "@[*** omake:@ These file are targeted separately, but appear as effects of a single rule.@ This is likely to lead to unpredictable behavior.@ @[targets:%a%a@]@]@." (**) pp_print_target_loc (target, loc) pp_print_bogus_set bogus in build_any_command env pos loc venv target effects locks sources scanners commands (* * Build a command from a set of implicit rules. * We choose the first rule where the dependencies can be satisfied. *) let build_implicit_command env pos loc target venv = let pos = string_pos "build_implicit_command" pos in match Omake_target.venv_find_buildable_implicit_rule env.env_cache venv pos target with Some { rule_loc = loc; rule_effects = effects; rule_locks = locks; rule_sources = sources; rule_scanners = scanners; rule_commands = commands } -> build_explicit_command env pos loc target effects locks venv sources scanners commands | None -> build_null_command env pos loc venv target (* * Build a command from an explicit rule. * The rule defines an environment that we can use * to find the scanner, and extra dependencies. * * If the erule specifies some commands, use them. * Otherwise, find an implicit rule to use. *) let build_explicit_target env pos loc target erule = let pos = string_pos "build_explicit_target" pos in let { rule_loc = loc; rule_env = venv; rule_effects = effects; rule_locks = locks; rule_sources = sources; rule_scanners = scanners; rule_commands = commands } = expand_rule erule in if commands = [] then build_implicit_command env pos loc target venv else build_explicit_command env pos loc target effects locks venv sources scanners commands (* * Create a new command for the target. *) let build_command_non_escaped env pos loc target = let pos = string_pos "build_command_non_escaped" pos in (* * If the target has an explicit rule, use it. * Otherwise, this is a leaf in the dependency tree. *) let erule = try ExplicitTarget (NodeTable.find env.env_explicit_targets target) with Not_found -> let target_dir = Node.dir target in try ExplicitDirectory (DirTable.find env.env_explicit_directories target_dir) with Not_found -> ExplicitNone in match erule with ExplicitTarget erule -> build_explicit_target env pos loc target erule | ExplicitDirectory venv -> build_implicit_command env pos loc target venv | ExplicitNone -> build_null_command env pos loc env.env_venv target (* * Create a new command for the scanner target. The difference is * that the scanner uses the dependent environment unless it is explicit. *) let build_scanner_command env pos loc target venv = let pos = string_pos "build_scanner_command" pos in (* * If the target has an explicit rule, use it. * Otherwise, this is a leaf in the dependency tree. *) let erule = try Some (NodeTable.find env.env_explicit_targets target) with Not_found -> None in match erule with Some erule -> build_explicit_target env pos loc target erule | None -> build_implicit_command env pos loc target venv (* * If the node is escaped, just create it as succeeded. * If it is squashed, create a fake node that depends * on the original file. *) let build_command env pos loc target = let pos = string_pos "build_command" pos in let () = if debug debug_build then eprintf "@[Building command for: %s@]@." (Node.fullname target) in match Node.kind target with NodeOptional | NodeExists -> create_exists_command env pos loc target | NodeSquashed -> create_squashed_command env pos loc target | NodePhony | NodeNormal | NodeScanner -> build_command_non_escaped env pos loc target (* * Start commands, or build them. *) let start_or_build_commands env pos loc parent targets = let pos = string_pos "start_or_build_commands" pos in NodeSet.iter (fun target -> try start_command env (find_command env target) with Not_found -> (try build_command env pos loc target with UnknownTarget target -> let print_error buf = Lm_printf.fprintf buf "Do not know how to build \"%a\" required for \"%a\"" pp_print_node target pp_print_node parent in raise (OmakeException (pos, LazyError print_error)))) targets (* * Start scanners. The difference is that a scanner inherits * the environment of the parent, unless the scanner * target is explicit. *) let start_or_build_scanners env pos loc parent targets venv = let pos = string_pos "start_or_build_scanners" pos in NodeSet.iter (fun target -> try let command = find_command env target in (* if command.command_venv != venv then eprintf "@[*** omake warning:@ @[scanner uses a different environment than the target@ %a:@]@ @[scanner definition:@ %a;@]@ @[current location:@ %a@]@]@." (**) pp_print_node target pp_print_location command.command_loc pp_print_location loc; *) start_command env command with Not_found -> (try build_scanner_command env pos loc target venv with UnknownTarget target -> let print_error buf = Lm_printf.fprintf buf "Do not know how to build \"%a\" required for \"%a\"" pp_print_node target pp_print_node parent in raise (OmakeException (pos, LazyError print_error)))) targets (* * Make sure the effect sets form equivalence classes. * Every command in the effect set should have the * same effects. *) let start_or_build_effects env pos loc target effects = let pos = string_pos "start_or_build_effects" pos in let step effects = start_or_build_commands env pos loc target effects; NodeSet.fold (fun (changed, effects) effect -> let command = find_command env effect in let effects' = command.command_effects in if effects' == effects then changed, effects else let effects = NodeSet.union effects effects' in command.command_effects <- effects; true, effects) (false, effects) effects in let rec fixpoint effects = let changed, effects = step effects in if changed then fixpoint effects in fixpoint effects (* * Catch errors. *) let build_command env pos loc target = try build_command env pos loc target with UnknownTarget _ -> raise (OmakeException (pos, StringNodeError ("Do not know how to build", target))) (************************************************************************ * Dependency management *) (* * Add inverse entries from the command, * and set the blocked queue. *) let command_set_blocked env command deps = let { command_target = target } = command in let inverse = NodeSet.fold (fun inverse dep -> NodeTable.filter_add inverse dep (fun commands -> let commands = match commands with Some commands -> commands | None -> NodeTable.empty in NodeTable.add commands target command)) env.env_inverse deps in env.env_inverse <- inverse; command.command_blocked <- NodeSet.to_list deps (* * Add the build deps. *) let command_set_build_deps env command deps = command_set_blocked env command deps; command.command_build_deps <- deps (* * Check if the command overlaps with a running process. *) let command_conflicts_with_running env command = let locks = command.command_locks in command_exists env CommandRunningTag (fun command -> NodeSet.exists (NodeSet.mem locks) command.command_locks) false (* * Check if a command succeeded. *) let command_succeeded command = match command.command_state with CommandSucceeded _ -> true | _ -> false (* * Command is blocked until all dependencies have been built. *) let command_is_blocked env command = let { command_blocked = blocked } = command in if blocked = [] then false else let rec process_blocked env deps = match deps with dep :: deps' -> if command_succeeded (find_command env dep) then process_blocked env deps' else deps | [] -> [] in let blocked = process_blocked env blocked in command.command_blocked <- blocked; blocked <> [] (* * Check if all effects that are not the target have been scanned. *) let command_effects_are_scanned env command = let { command_target = target; command_effects = effects } = command in NodeSet.for_all (fun effect -> if Node.equal effect target then true else match (find_command env effect).command_state with CommandScannedPending | CommandSucceeded _ -> true | _ -> false) effects (* * Reclassify dependent rules. *) let enable_parents env command = let enable_parent _ command = if not (command_is_blocked env command) then let state = match command.command_state with CommandScanBlocked -> if command_effects_are_scanned env command then CommandScanned else CommandScannedPending | CommandBlocked -> CommandReady | state -> state in reclassify_command env command state in let parents = try NodeTable.find env.env_inverse command.command_target with Not_found -> NodeTable.empty in NodeTable.iter enable_parent parents (************************************************************************ * Generic execution. *) (* * Parse the dependency list. *) let parse_deps env venv target file = let deps = compile_deps venv target file in if !debug_deps then begin eprintf "@[Scanner: %s" file; List.iter (fun (targets, sources) -> eprintf "@ @[@[targets ="; List.iter (fun target -> eprintf "@ %s" target) targets; eprintf "@]@ @[sources ="; List.iter (fun source -> eprintf "@ %s" source) sources; eprintf "@]@]") deps; eprintf "@]@." end; List.fold_left (fun table (targets, sources) -> let sources = List.fold_left (fun set s -> let node = venv_intern venv PhonyOK s in NodeSet.add set node) NodeSet.empty sources in List.fold_left (fun table target -> let target = venv_intern venv PhonyOK target in NodeTable.filter_add table target (fun set -> match set with Some set -> NodeSet.union set sources | None -> sources)) table targets) NodeTable.empty deps (* * Unlink a file, no errors. *) let unlink_file filename = try Unix.unlink filename with Unix.Unix_error _ -> () (* * A command finished with an error. *) let abort_command env command code = if opt_terminate_on_error (env_options env) then env.env_error_code <- code; env_close_failed_tee env command; reclassify_command env command (CommandFailed code) let abort_commands env targets code = if opt_terminate_on_error (env_options env) then env.env_error_code <- code; NodeSet.iter (fun target -> reclassify_command env (find_command env target) (CommandFailed code)) targets (************************************************************************ * Scanner execution. *) (* * All scanner subgoals have finished, and all effects * have been scanned too. Take the union of all the dependencies. *) let finish_scanned env command = let { command_loc = loc; command_target = target; command_effects = effects } = command in let pos = loc_exp_pos loc in (* Get the command for each of the effects *) let effects_commands = NodeSet.fold (fun commands command -> find_command env command :: commands) [] effects in (* Find all the scanner results *) let scanner_deps = List.fold_left (fun scanner_deps command -> NodeSet.union scanner_deps command.command_scanner_deps) NodeSet.empty effects_commands in let dep_tables = NodeSet.fold (fun dep_tables scanner -> let scan_command = find_command env scanner in match scan_command.command_state with CommandSucceeded table -> table :: dep_tables | _ -> let print_error buf = fprintf buf "@[Internal error in Omake_build.finish_scanned:@ %a@ %a@ @[Effects:%a@]@]" (**) pp_print_command command pp_print_command scan_command (pp_print_node_states env) effects in raise (OmakeFatalErr (pos, LazyError print_error))) [] scanner_deps in (* Now collect all the deps *) let deps = List.fold_left (fun deps command -> let { command_target = target; command_static_deps = static_deps; command_scanner_deps = scanner_deps } = command in let deps = NodeSet.union deps static_deps in let deps = NodeSet.union deps scanner_deps in List.fold_left (fun deps table -> try NodeSet.union deps (NodeTable.find table target) with Not_found -> deps) deps dep_tables) NodeSet.empty effects_commands in (* Make sure all the newly discovered dependencies have commands *) start_or_build_commands env pos loc target deps; (* Set the state of all the effects *) List.iter (fun command -> let target = command.command_target in (* Set the dependencies *) command_set_build_deps env command deps; (* Dependencies are final at this point *) if NodeSet.mem env.env_print_dependencies target then eprintf "@[dependencies:@ %a@]@." (pp_print_dependencies env) command; (* Set the command state *) let state = if command_succeeded command then command.command_state else if command_is_blocked env command then CommandBlocked else CommandReady in reclassify_command env command state) effects_commands (* * A scanner has finished successfully. * Notify the parents. *) let finish_scanner env command scanned_deps = let { command_loc = loc; command_target = target; command_effects = effects } = command in if debug debug_scanner then eprintf "@[finish_scanner %a:%a@]@." (**) pp_print_node target pp_print_node_set_table scanned_deps; (* This command has been scanned *) reclassify_command env command (CommandSucceeded scanned_deps); (* Notify parents that something is done *) enable_parents env command (* * A scanner command finished successfully. * * XXX: HACK: Recompute the command digest if the scanner dependencies * have changed. * * This is probably a reasonable thing to do, but it means that the * rule text may be computed twice for .SCANNER rules. * * This could be wrong in two cases: * 1. If the .SCANNER body performs a side-effect while computing * the rule text. * 2. If the .SCANNER body depends non-trivially on the scanner * dependencies $&. *) let save_and_finish_scanner_results env command scanned_deps = (* Add the run to the cache *) let { command_loc = loc; command_venv = venv; command_target = target; command_lines = scanner; command_locks = locks; command_build_deps = build_deps } = command in (* Save in cache *) let cache = env.env_cache in let targets = NodeSet.singleton target in (* Re-stat the locks *) let () = NodeSet.iter (fun lock -> ignore (Omake_cache.force_stat cache lock)) locks in (* Recompute the scanner digest *) let digest = match scanner with CommandNone -> None | CommandLines (_, _, digest) -> digest | CommandScanner (info, sloppy_deps, _, digest) -> let deps = flatten_deps scanned_deps in if NodeSet.equal deps sloppy_deps then digest else let pos = loc_exp_pos loc in let scanner_commands = eval_commands venv loc target deps info in let scanner_commands = List.map command_allow_output scanner_commands in digest_of_commands pos scanner_commands | CommandInfo _ -> raise (Invalid_argument "scanner_lines") in Omake_cache.add cache scanner_fun target targets build_deps digest (MemoSuccess scanned_deps); finish_scanner env command scanned_deps (* * Add the run to the cache. *) let save_and_finish_scanner_success env command filename = let { command_loc = loc; command_venv = venv; command_target = target } = command in (* * Get the result. * The parser may still fail. *) let result = try let result = parse_deps env venv target filename in (* Remove the file as early as possible *) unlink_file filename; Some result with OmakeException _ | UncaughtException _ | Failure _ | Not_found | Parsing.Parse_error | Sys_error _ -> None in match result with Some result -> if debug debug_scanner then eprintf "@[Saving dependencies: %a@ @[scanned deps:%a@]@]@." (**) pp_print_node target pp_print_deps result; env_close_success_tee env command; save_and_finish_scanner_results env command result | None -> (* Don't remove the file, in case the user wants to look at it *) let pos = string_pos "save_and_finish_scanner" (loc_exp_pos loc) in let lines, _ = command_lines command in let shell = eval_shell venv pos in let options = env_options env in let divert_only = not (opt_output options OutputNormal) in let handle_err = tee_stderr command.command_tee divert_only null_id in let out = make_formatter handle_err (fun () -> handle_err "" 0 0) in fprintf out "@?*** omake: scanner produced ill-formed output@."; pp_status_lines out options shell "scan" lines; fprintf out "*** omake: @[scanner output is saved in@ %s@]@." filename; abort_command env command scanner_error_code (* * Failed run. *) let save_and_finish_scanner_failed env command filename code = unlink_file filename; abort_command env command code (* * Run the command. *) let execute_scanner env command = let { command_target = target; command_loc = loc; command_venv = venv } = command in let pos = string_pos "execute_scanner" (loc_exp_pos loc) in let scanner, _ = command_lines command in (* Save errors to the tee *) let options = venv_options venv in let tee = tee_create (opt_divert options) in let divert_only = not (opt_output options OutputNormal) in let copy_stdout = tee_stdout tee divert_only in let copy_stderr = tee_stderr tee divert_only in (* Save output into a temporary file *) let tmpfile = Filename.temp_file "omake" ".deps" in let handle_out = copy_file tmpfile in (* Debugging *) let () = if debug debug_scanner then eprintf "@[run_scanner %a@ to tmp file %s:%a@]@." (**) pp_print_node target tmpfile pp_print_arg_command_lines scanner in let shell = eval_shell venv pos in set_tee env command tee; env.env_scan_exec_count <- succ env.env_scan_exec_count; match Exec.spawn env.env_exec shell (venv_options venv) copy_stdout handle_out copy_stderr "scan" target scanner with ProcessFailed -> (* The fork failed *) abort_command env command fork_error_code | ProcessStarted pid -> (* Process was started *) env.env_idle_count <- pred env.env_idle_count; reclassify_command env command (CommandRunning (pid, Some tmpfile)) (* * Execute a command. * Check with the cache to see if this command is already * up-to-date. *) let start_scanner env command = let { command_venv = venv; command_loc = loc; command_target = target; command_lines = scanner; command_build_deps = build_deps } = command in let pos = string_pos "start_scanner" (loc_exp_pos loc) in let sloppy_deps = try flatten_deps (Omake_cache.find_result_sloppy env.env_cache scanner_fun target) with Not_found -> NodeSet.empty in let scanner, scanner_digest = match scanner with CommandNone -> [], None | CommandInfo info -> assert (info <> []); let scanner_commands = eval_commands venv loc target sloppy_deps info in let scanner_commands = List.map command_allow_output scanner_commands in let scanner_digest = digest_of_commands pos scanner_commands in let info = if commands_have_value_dependencies info then CommandScanner (info, sloppy_deps, scanner_commands, scanner_digest) else CommandLines (info, scanner_commands, scanner_digest) in command.command_lines <- info; scanner_commands, scanner_digest | CommandScanner (_, _, lines, digest) | CommandLines (_, lines, digest) -> lines, digest in if scanner = [] then begin (* If scanner is empty, don't do anything *) if debug debug_scanner then eprintf "@[start_scanner: target has no scanner: %a@]@." pp_print_node target; save_and_finish_scanner_results env command NodeTable.empty end else begin (* Look up previous results from the cache *) env.env_scan_count <- succ env.env_scan_count; try let scanned_deps = Omake_cache.find_result env.env_cache scanner_fun build_deps scanner_digest in if debug debug_scanner then eprintf "@[start_scanner: target dependencies are accurate %a:@ @[scanner's build deps:%a@]@ @[scanned deps:%a@]@]@." (**) pp_print_node target pp_print_node_set build_deps pp_print_node_set_table scanned_deps; finish_scanner env command scanned_deps with Not_found -> execute_scanner env command end (************************************************************************ * Rule execution. *) (* * A command finished successfuly. *) let finish_rule_success env command = (* Get a list of all commands that might be updated *) reclassify_command env command (CommandSucceeded NodeTable.empty); enable_parents env command (* * A command remains failed. *) let finish_rule_failed env command code = let { command_effects = effects } = command in abort_commands env effects code (* * A command finished successfuly. *) let hexify_digest = function Some digest -> Lm_string_util.hexify digest | None -> "none" let save_and_finish_rule_success env command = (* Add the run to the cache *) let { command_loc = loc; command_target = target; command_effects = effects; command_locks = locks; command_build_deps = build_deps } = command in let cache = env.env_cache in let commands, commands_digest = command_lines command in (* Collect the effects that are not phony *) let effects = NodeSet.fold (fun effects effect -> let digest = Omake_cache.force_stat cache effect in if Node.is_phony effect || digest = None then effects else NodeSet.add effects effect) NodeSet.empty effects in (* Re-stat the locks *) let () = NodeSet.iter (fun lock -> ignore (Omake_cache.force_stat cache lock)) locks in (* Check that the target actually got built *) let digest = Omake_cache.stat cache target in if not (Node.is_phony target) && digest = None then begin abort_command env command exn_error_code; raise (OmakeException (loc_exp_pos loc, StringNodeError ("rule failed to build target", target))); end; (* Add a memo for a specific target *) if debug debug_rule then eprintf "@[saving %a:@ @[build-deps:%a@]@ @[effects:%a@]@ digest: %s@]@." (**) pp_print_node target pp_print_node_set build_deps pp_print_node_set effects (hexify_digest commands_digest); (* Add the memo only if the target is not phony *) if not (NodeSet.is_empty effects) then Omake_cache.add cache rule_fun target effects build_deps commands_digest (MemoSuccess NodeTable.empty); (* Remove the tees *) env_close_success_tee env command; (* Now tell parents that this job succeeded *) finish_rule_success env command (* * A command failed. *) let save_and_finish_rule_failed env command code = (* Add the run to the cache *) let { command_target = target; command_effects = effects; command_build_deps = build_deps } = command in let cache = env.env_cache in let commands, commands_digest = command_lines command in env_close_failed_tee env command; Omake_cache.add cache rule_fun target effects build_deps commands_digest (MemoFailure code); abort_commands env effects code (* * Run the command. *) let run_rule env command = let { command_loc = loc; command_target = target; command_effects = effects; command_venv = venv; } = command in let pos = string_pos "run_rule" (loc_exp_pos loc) in let commands, _ = command_lines command in let shell = eval_shell venv pos in (* Set up the tee *) let options = venv_options venv in let tee = tee_create (opt_divert options) in let divert_only = not (opt_output options OutputNormal) in let copy_stdout = tee_stdout tee divert_only in let copy_stderr = tee_stderr tee divert_only in set_tee env command tee; env.env_rule_exec_count <- succ env.env_rule_exec_count; match Exec.spawn env.env_exec shell (venv_options venv) copy_stdout copy_stdout copy_stderr "build" target commands with ProcessFailed -> (* The fork failed *) abort_command env command fork_error_code | ProcessStarted pid -> (* The process was started *) env.env_idle_count <- pred env.env_idle_count; reclassify_command env command (CommandRunning (pid, None)) (* * Execute a command. * Check with the cache to see if this command is already * up-to-date. *) let execute_rule env command = let { command_loc = loc; command_state = state; command_target = target; command_effects = effects; command_lines = commands; command_build_deps = build_deps; command_venv = venv } = command in let pos = string_pos "execute_rule" (loc_exp_pos loc) in let options = venv_options venv in let commands, commands_digest = match commands with CommandNone -> [], None | CommandScanner (_, _, lines, digest) | CommandLines (_, lines, digest) -> lines, digest | CommandInfo info -> assert (info <> []); let commands = eval_commands venv loc target build_deps info in let digest = digest_of_commands pos commands in command.command_lines <- CommandLines (info, commands, digest); commands, digest in if debug debug_rule then eprintf "@[building %a:@ @[build-deps:%a@]@ @[effects:%a@]@ digest: %s@]@." (**) pp_print_node target pp_print_node_set build_deps pp_print_node_set effects (hexify_digest commands_digest); if commands = [] then save_and_finish_rule_success env command else begin env.env_rule_count <- succ env.env_rule_count; match Omake_cache.up_to_date_status env.env_cache rule_fun build_deps commands_digest with StatusSuccess -> if debug debug_rule then eprintf "@[target %a is up to date:%a@]@." (**) pp_print_node target pp_print_node_set build_deps; finish_rule_success env command | StatusFailure code -> if debug debug_rule then eprintf "@[target %a failure:%a@]@." (**) pp_print_node target pp_print_node_set build_deps; finish_rule_failed env command code | StatusUnknown -> if opt_touch_only options then begin if opt_print_file options then printf "updating %a@." pp_print_node target; save_and_finish_rule_success env command end else if opt_dry_run options then begin if opt_print_command options <> EvalNever then List.iter (fun command -> if not (List.mem Omake_command_type.QuietFlag command.Omake_command_type.command_flags) then printf "+ %a@." pp_print_arg_command_inst command.Omake_command_type.command_inst) commands; save_and_finish_rule_success env command end else begin if debug debug_rule then eprintf "@[running %a:%a@]@." (**) pp_print_node target pp_print_node_set build_deps; run_rule env command end end (************************************************************************ * Saved versions. *) (* * Create a new, empty environment. *) let empty_env venv cache exec ~summary deps targets dirs includes = let cwd = Dir.cwd () in let options = venv_options venv in let wl = create_wl () in { env_venv = venv; env_cwd = cwd; env_cache = cache; env_exec = exec; env_explicit_deps = deps; env_explicit_targets = targets; env_explicit_directories = dirs; env_includes = includes; env_commands = NodeTable.empty; env_inverse = NodeTable.empty; env_error_code = 0; env_idle_count = opt_job_count options; env_print_dependencies = NodeSet.empty; env_current_wl = wl; env_main_wl = wl; env_pending_events = Queue.create (); env_summary = summary; env_optional_count = 0; env_succeeded_count = 0; env_scan_count = 0; env_scan_exec_count = 0; env_rule_count = 0; env_rule_exec_count = 0 } let create exec venv cache summary = let erule_info = venv_explicit_rules venv in let { explicit_targets = target_table; explicit_directories = dir_table; explicit_deps = dep_table } = erule_info in let includes = venv_files venv in let includes = Omake_cache.stat_set cache includes in empty_env venv cache exec ~summary dep_table target_table dir_table includes (************************************************************************ * Saving state to .omakedb *) let pid = Unix.getpid () (* this is the PID of the main thread *) (* * Save the cache and environment to a file. *) let save_aux env = (* Only the "master" thread should be saving the DB *) if (pid <> Unix.getpid ()) then begin eprintf "@[*** OMake Internal ERROR:@ Slave thread %i trying to save db opened by the master thread %i@]@." (Unix.getpid ()) pid; raise (Invalid_argument "Internal error: Slave thread trying to save the OMake DB") end; (* Save the static values *) let () = venv_save_static_values env.env_venv in (* Save the .omakedb *) let options = env_options env in let cache = env.env_cache in (* * BUG: On Win32, when polling is enabled, * rename will fail if the dst file exists. * This is bogus, but let's hope that we don't * get interrupted while writing the .omakedb *) let db_win32_bug = Sys.os_type = "Win32" && opt_poll options in let db_tmp = if db_win32_bug then db_name else (* We want the name to be fairly unique in case locking had failed us. *) sprintf ".#%s.%s.%i" db_name (Unix.gethostname ()) pid in (* Marshal the state to the output file *) let outx = Pervasives.open_out_bin db_tmp in let includes = NodeTable.fold (fun includes node _ -> NodeSet.add includes node) NodeSet.empty env.env_includes in let targets = NodeSet.singleton env_target in try Omake_cache.add cache env_fun env_target targets includes None (MemoSuccess NodeTable.empty); Omake_cache.to_channel outx cache; close_out outx; if not db_win32_bug then Unix.rename db_tmp db_name with Unix.Unix_error (errno, name, arg) -> eprintf "*** omake: failure during saving: %s: %s(%s)@." (Unix.error_message errno) name arg; close_out outx; if not db_win32_bug then unlink_file db_tmp | Sys_error _ | Failure _ as exn -> eprintf "*** omake: failure during saving: %s@." (Printexc.to_string exn); close_out outx; if not db_win32_bug then unlink_file db_tmp (* * Save to the .omakedb. *) let save env = if not (opt_dry_run (env_options env)) then try save_aux env with Sys_error _ as exn -> eprintf "*** omake: failure during saving: %s@." (Printexc.to_string exn) (* * Close the environment. *) let unlink_file name = try Unix.unlink name with Unix.Unix_error _ -> () let close env = NodeTable.iter (fun _ command -> unlink_tee command) env.env_commands; Exec.close env.env_exec; unlink_file env.env_summary (************************************************************************ * Invalidation. *) (* * Forms for walking up and down the tree. *) let invalidate_parents env command = find_parents env command.command_target let invalidate_children env command = command.command_build_deps (* * General invalidation function. * * The invalidate_next function determines how to walk the tree. *) let rec invalidate_aux invalidate_next env nodes = if not (NodeSet.is_empty nodes) then let node = NodeSet.choose nodes in let command = find_command env node in let nodes = if command.command_state <> CommandInitial then let nodes = NodeSet.union nodes command.command_effects in let nodes = NodeSet.union nodes (invalidate_next env command) in (* Recompute the commands if they have value dependencies *) let () = match command.command_lines with CommandScanner (info, _, _, _) | CommandLines (info, _, _) -> command.command_lines <- CommandInfo info | CommandInfo _ | CommandNone -> () in (* Move the command back to the initial state *) reclassify_command env command CommandInitial; nodes else nodes in invalidate_aux invalidate_next env (NodeSet.remove nodes node) let invalidate_ancestors = invalidate_aux invalidate_parents let invalidate_children = invalidate_aux invalidate_children (************************************************************************ * Command management. *) (* * Process a command in the Initial state. * Check the dependencies. For each dependency, * make sure there is a command to build it. * If the dependencies are all finished, then * schedule this command for scanning. *) let process_initial env = let command = command_list_head env CommandInitialTag in let { command_loc = loc; command_venv = venv; command_target = target; command_effects = effects; command_scanner_deps = scanner_deps; command_static_deps = static_deps } = command in let pos = string_pos "process_initial" (loc_exp_pos loc) in let _ = if debug debug_build then eprintf "@[Process initial: %a@ @[scanner deps:%a@]@ @[static deps:%a@]@]@." (**) pp_print_node target pp_print_node_set scanner_deps pp_print_node_set static_deps in (* Add commands for all the dependencies *) start_or_build_commands env pos loc target static_deps; start_or_build_scanners env pos loc target scanner_deps venv; (* Take the union of all the effects *) if NodeSet.cardinal effects > 1 then start_or_build_effects env pos loc target effects; (* Initially, we enter scanning mode *) command_set_blocked env command scanner_deps; let state = if command_is_blocked env command then CommandScanBlocked else if command_effects_are_scanned env command then CommandScanned else CommandScannedPending in reclassify_command env command state (* * A command has been scanned successfully. *) let process_scanned env = let command = command_list_head env CommandScannedTag in finish_scanned env command (* * Process a command in the Ready state. * Start it and place it on the run queue. *) let process_ready env = let command = command_list_head env CommandReadyTag in if command_conflicts_with_running env command then reclassify_command env command CommandPending else if command_is_scanner command then start_scanner env command else execute_rule env command (* * A command has just finished, so check each pending * process and move it to the ready queue if it no * longer conflicts with a running process. *) let process_pending env = command_iter env CommandPendingTag (fun command -> if not (command_conflicts_with_running env command) then reclassify_command env command CommandReady) (* * Leaf dependency - a leaf node, or a node that appears as optional/exists node *) let is_leaf_file env node = if NodeTable.mem env.env_commands node then is_leaf_node env node else (NodeTable.mem env.env_commands (Node.create_escape NodeOptional node) || NodeTable.mem env.env_commands (Node.create_escape NodeExists node)) (* * Process the running queue. * Wait until a process exits. *) let rec process_running env notify = match Exec.wait env.env_exec (env_options env) with WaitExited (pid, code, _) -> begin env.env_idle_count <- succ env.env_idle_count; try let command = find_pid env pid in let () = match code, command with 0, { command_state = CommandRunning (_, None) } -> save_and_finish_rule_success env command | _, { command_state = CommandRunning (_, None) } -> save_and_finish_rule_failed env command code | 0, { command_state = CommandRunning (_, Some filename) } -> save_and_finish_scanner_success env command filename | _, { command_state = CommandRunning (_, Some filename) } -> save_and_finish_scanner_failed env command filename code | _ -> raise (Invalid_argument "process_running") in process_pending env with Not_found -> () end | WaitServer additional_jobs -> if !debug_remote then eprintf "# new idle count: %d + %d@." env.env_idle_count additional_jobs; env.env_idle_count <- env.env_idle_count + additional_jobs | WaitNotify event -> if notify then ignore (invalidate_event env event) | WaitNone -> () (* * Wait for all jobs to finish. *) and wait_all env verbose = if not (command_list_is_empty env CommandRunningTag) then begin if verbose then eprintf "*** omake: waiting for all jobs to finish@."; ignore (process_running env false); wait_all env false end (************************************************************************ * Invalidation when a file is updated. *) (* * If the event is really a file change and it refers to a leaf * node, reset the command and all its ancestors to the initial state. *) and invalidate_event_core env node = let verbose = opt_print_status (env_options env) in if verbose then begin progress_flush (); eprintf "*** omake: file %s changed@." (Node.fullname node) end; (* If this is an OMakefile, abort and restart *) if NodeTable.mem env.env_includes node then begin wait_all env verbose; raise (Restart None) end else let nodes = if is_leaf_node env node then NodeSet.singleton node else NodeSet.empty in let nodes = NodeSet.union nodes (find_parents env (Node.create_escape NodeOptional node)) in let nodes = NodeSet.union nodes (find_parents env (Node.create_escape NodeExists node)) in invalidate_ancestors env nodes and do_invalidate_event env event = process_changes (is_leaf_file env) (invalidate_event_core env) env.env_venv env.env_cwd env.env_cache event (* * Block FAM events during when performing a build phase * (like .BUILD_BEGIN, .BUILD_SUCCESS, etc.). *) and invalidate_event env event = if env.env_current_wl != env.env_main_wl then begin (* Don't let the queue get too large *) if Queue.length env.env_pending_events < max_pending_events then Queue.add event env.env_pending_events; false end else do_invalidate_event env event (************************************************************************ * Main processing loop. *) let rec main_loop env progress = if debug debug_build then begin eprintf "@[Initial:"; command_iter env CommandInitialTag (fun command -> eprintf "@ %a" pp_print_command command); eprintf "@]@."; eprintf "@[ScanBlocked:"; command_iter env CommandScanBlockedTag (fun command -> eprintf "@ %a" pp_print_command command); eprintf "@]@."; eprintf "@[Blocked:"; command_iter env CommandBlockedTag (fun command -> eprintf "@ %a" pp_print_command command); eprintf "@]@."; eprintf "@[Ready:"; command_iter env CommandReadyTag (fun command -> eprintf "@ %a" pp_print_command command); eprintf "@]@."; eprintf "@[Running:"; command_iter env CommandRunningTag (fun command -> eprintf "@ %a" pp_print_command command); eprintf "@]@."; eprintf "@[Succeeded:"; command_iter env CommandSucceededTag (fun command -> eprintf "@ %a" pp_print_command command); eprintf "@]@."; eprintf "@[Failed:"; command_iter env CommandFailedTag (fun command -> eprintf "@ %a" pp_print_command command); eprintf "@]@."; end; let progress = let flushed = progress_flushed () in if flushed || progress.ps_count <> env.env_succeeded_count then let progress = { progress with ps_count = env.env_succeeded_count } in let options = venv_options env.env_venv in let now = Unix.gettimeofday () in let will_save = ! save_interval > 0.0 && now > progress.ps_save in let progress = if will_save then begin save env; print_saving options; { progress with ps_save = now +. ! save_interval } end else progress in if flushed || will_save || now > progress.ps_progress then begin let total = NodeTable.cardinal env.env_commands - env.env_optional_count in print_progress options env.env_succeeded_count total; { progress with ps_progress = now +. prompt_interval } end else progress else progress in if not (command_list_is_empty env CommandInitialTag) then begin process_initial env; main_loop env progress end else if not (command_list_is_empty env CommandScannedTag) then begin process_scanned env; main_loop env progress end else if (env.env_idle_count > 0) && (env.env_error_code = 0) && not (command_list_is_empty env CommandReadyTag) then begin process_ready env; main_loop env progress end else if env.env_idle_count == 0 || not (command_list_is_empty env CommandRunningTag) then begin process_running env true; main_loop env progress end else begin assert (env.env_idle_count >= 0); progress_flush () end (************************************************************************ * Printing. *) (* * Print statistics. *) let print_stats env message start_time = let { env_cwd = root; env_venv = venv; env_cache = cache; env_scan_count = scan_count; env_scan_exec_count = scan_exec_count; env_rule_count = rule_count; env_rule_exec_count = rule_exec_count } = env in let stat_count, digest_count = Omake_cache.stats cache in let total_time = Unix.gettimeofday () -. start_time in let options = venv_options venv in print_leaving_current_directory options; if opt_print_status options then begin if message <> "done" then begin let total = NodeTable.cardinal env.env_commands - env.env_optional_count in printf "*** omake: %i/%i targets are up to date@." env.env_succeeded_count total end; printf "*** omake: %s (%a, %d/%d scans, %d/%d rules, %d/%d digests)@." (**) message pp_time total_time scan_exec_count scan_count rule_exec_count rule_count digest_count stat_count end (* * All of the commands in the Blocked queue are deadlocked. *) let print_deadlock_exn env buf state = (* Inconsistency *) let failwith_inconsistency command = let { command_target = target; command_state = state; command_effects = effects; command_scanner_deps = scanner_deps; command_static_deps = static_deps; command_build_deps = build_deps; command_loc = loc } = command in fprintf buf "@[*** omake: inconsistent state %a@ state = %a@ @[effects =%a@]@ @[build deps =%a@]@ @[scanner deps =%a@]@ @[static deps = %a@]@." (**) pp_print_node target pp_print_command_state state (pp_print_node_states env) effects (pp_print_node_states env) build_deps (pp_print_node_states env) scanner_deps (pp_print_node_states env) static_deps; raise (OmakeException (loc_exp_pos loc, StringNodeError ("failed on target", target))) in (* Deadlock *) let failwith_deadlock loc target marked = let rec print_marked marked = match marked with mark :: marked -> fprintf buf "*** omake: is a dependency of %a@." pp_print_node mark; if not (Node.equal mark target) then print_marked marked | [] -> fprintf buf "*** omake: not deadlocked!@." in fprintf buf "*** omake: deadlock on %a@." pp_print_node target; print_marked marked; raise (OmakeException (loc_exp_pos loc, StringNodeError ("failed on target", target))) in (* * Find the deadlock. *) let rec print marked command = let { command_target = target; command_loc = loc; } = command in (* * Find the first dependency that has not been built. *) let rec search deps' = match deps' with dep :: deps -> let command = try let command = find_command env dep in if command_succeeded command then None else Some command with Not_found -> fprintf buf "*** omake: Do not know how to build \"%a\" required for \"%a\"@." pp_print_node dep pp_print_node target; raise (Failure "blocked") in (match command with Some dep -> dep | None -> search deps) | [] -> (* All deps have succeeded; this is an inconsistent state *) failwith_inconsistency command in (* Detect deadlock *) if List.exists (fun node -> Node.equal node target) marked then failwith_deadlock loc target marked; (* Otherwise, search for first unsatisfied dependency *) let deps = NodeSet.union (**) (NodeSet.union command.command_build_deps command.command_scanner_deps) command.command_static_deps in print (target :: marked) (search (NodeSet.to_list deps)) in print [] (command_list_head env state) let print_deadlock env buf state = try print_deadlock_exn env buf state with OmakeException _ | Failure _ as exn -> fprintf buf "%a@." Omake_exn_print.pp_print_exn exn (* * Print the failed commands. *) let print_failed_targets env buf = if opt_print_status (venv_options env.env_venv) then begin fprintf buf "*** omake: targets were not rebuilt because of errors:"; (* We use table to get an alphabetical order here - see http://bugzilla.metaprl.org/show_bug.cgi?id=621 *) let table = ref LexStringMTable.empty in let add_command command = table := LexStringMTable.add !table (Node.absname command.command_target) command in let () = command_iter env CommandFailedTag add_command in LexStringMTable.iter (fun _ command -> fprintf buf "@\n @[@[%a" pp_print_node command.command_target; NodeSet.iter (fun dep -> if Node.is_real dep && is_leaf_node env dep then fprintf buf "@ depends on: %a" pp_print_node dep) command.command_static_deps; fprintf buf "@]"; format_tee_with_nl buf command; fprintf buf "@]") !table; fprintf buf "@." end let print_failed env buf state = if not (command_list_is_empty env CommandFailedTag) then print_failed_targets env buf else print_deadlock env buf state (************************************************************************ * Loading state from .omakedb *) let notify_wait_simple venv cwd exec cache = eprintf "*** omake: polling for filesystem changes (OMakefiles only)@."; let files = venv_files venv in let () = NodeSet.iter (fun node -> ignore (Omake_cache.stat cache node); Exec.monitor exec node) files in let print_msg = if opt_print_status (venv_options venv) then fun node -> printf "*** omake: file %s changed@." (Node.fullname node) else fun node -> () in let rec loop () = let event = Exec.next_event exec in let changed = process_changes (NodeSet.mem files) print_msg venv cwd cache event in if (not changed || Exec.pending exec) then loop () in loop () let print_restart options reason = if opt_print_status options then let reason = match reason with None -> "a configuration file changed" | Some reason -> reason in printf "*** omake: %s, restarting@." reason (* * Create and parse, given a cache. *) let create_env exec options cache targets = let venv = Omake_env.create options "." exec cache in let venv = Omake_builtin.venv_add_command_defs venv in let targets_value = ValArray (List.map (fun v -> ValData v) targets) in let venv = Omake_env.venv_add_var venv targets_var targets_value in let venv = Omake_builtin.venv_add_builtins venv in (* Summary file *) let summary = let summary, outx = Filename.open_temp_file ~mode:[Open_binary] "omake" ".error" in Pervasives.close_out outx; summary in let summary_value = ValNode (venv_intern venv PhonyProhibited summary) in let venv = venv_add_var venv build_summary_var summary_value in (* Ignore match errors *) let venv = venv_add_var venv glob_options_var (ValString "n") in (* Start reading files *) let now = Unix.gettimeofday () in let cwd = venv_dir venv in let () = if opt_print_dir options then printf "make[0]: Entering directory `%s'@." (Dir.absname cwd); if opt_print_status options then printf "*** omake: reading %ss@." makefile_name in let venv = try let venv = Omake_builtin.venv_include_rc_file venv omakeinit_file in let venv = Omake_builtin.venv_add_pervasives venv in let venv = Omake_builtin.venv_include_rc_file venv omakerc_file in Omake_eval.compile venv; venv with exn -> venv_save_static_values venv; if opt_poll options && restartable_exn exn && not (NodeSet.is_empty (venv_files venv)) then begin if opt_print_status options then begin let now' = Unix.gettimeofday () in printf "*** omake: reading %ss failed (%a)@." makefile_name pp_time (now' -. now); end; eprintf "%a@." Omake_exn_print.pp_print_exn exn; notify_wait_simple venv cwd exec cache; raise (Restart None) end else begin unlink_file summary; raise exn end in let () = if opt_print_status options then let now' = Unix.gettimeofday () in printf "*** omake: finished reading %ss (%a)@." makefile_name pp_time (now' -. now) in let env = create exec venv cache summary in Omake_builtin_util.set_env env; env let rec create_env_loop exec options cache targets = try create_env exec options cache targets with Restart reason -> print_restart options reason; create_env_loop exec options cache targets (* * Load the environment if possible. * If not, create a new one. *) let load_omake options targets = let cwd = Dir.cwd () in let exec = Exec.create cwd options in let cache = match (* Load cache from the db file *) try let inx = open_in_bin db_name in let cache = try Omake_cache.from_channel options inx with exn -> close_in inx; raise exn in close_in inx; Some cache with Unix.Unix_error _ | End_of_file | Sys_error _ | Failure _ -> None with None -> Omake_cache.create () | Some cache -> cache in create_env_loop exec options cache targets (* * Special version for use by osh. * We assume the starting directory for osh is the project root. *) let load_osh venv options targets = (* Replace the cache *) let cache = match (* Load cache from the db file *) try let inx = open_in_bin db_name in let cache = try Omake_cache.from_channel options inx with exn -> close_in inx; raise exn in close_in inx; Some cache with Unix.Unix_error _ | End_of_file | Sys_error _ | Failure _ -> None with None -> Omake_cache.create () | Some cache -> cache in let venv = venv_add_cache venv cache in (* Add the targets *) let targets_value = ValArray (List.map (fun v -> ValData v) targets) in let venv = Omake_env.venv_add_var venv targets_var targets_value in (* Add the summary file *) let summary = let summary, outx = Filename.open_temp_file ~mode:[Open_binary] "omake" ".error" in Pervasives.close_out outx; summary in let summary_value = ValNode (venv_intern venv PhonyProhibited summary) in let venv = venv_add_var venv build_summary_var summary_value in (* Create the environment *) let exec = venv_exec venv in let env = create exec venv cache summary in Omake_builtin_util.set_env env; env let load venv_opt options targets = match venv_opt with Some venv -> load_osh venv options targets | None -> load_omake options targets (************************************************************************ * Main build command. *) (* * Take a lock to prevent multiple builds from competing. *) let copy_to_stderr fd = let inx = Unix.in_channel_of_descr fd in let rec loop () = let line = input_line inx in eprintf "%s@." line; loop () in try loop () with End_of_file -> () let wait_for_lock, unlock_db = let name = db_name ^ ".lock" in let save_fd = ref None in let unlock_db () = match !save_fd with None -> () | Some fd -> let () = (* XXX: JYH: this is bad style. * Under what circumstances will this fail? * BTW, don't use wildcard exception patterns please:/ *) try Omake_shell_sys.close_fd fd with Unix.Unix_error _ -> () in save_fd := None in let wait_for_lock () = unlock_db (); let fd = try Lm_unix_util.openfile name [Unix.O_RDWR; Unix.O_CREAT] 0o666 with Unix.Unix_error _ -> raise (Failure ("project lock file is not writable: " ^ name)) in let () = (* * XXX: TODO: We use lockf, but it is not NFS-safe if filesystem is mounted w/o locking. * .omakedb locking is only convenience, not safety, so it's not a huge problem. * But may be we should implement a "sloppy" locking as well - see * also the mailing list discussions: * - http://lists.metaprl.org/pipermail/omake/2005-November/thread.html#744 * - http://lists.metaprl.org/pipermail/omake-devel/2005-November/thread.html#122 *) try (* Try for a lock first, and report it if the file is locked *) try Lm_unix_util.lockf fd Unix.F_TLOCK 0 with Unix.Unix_error (Unix.EAGAIN, _, _) -> eprintf "*** omake: the project is currently locked.@."; (try copy_to_stderr fd with _ -> ()); (* Unfortunately, we have to poll, since OCaml doesn't allow ^C during the lock request *) let rec poll col = let col = if col >= 40 then begin if col = 40 then eprintf "@."; eprintf "*** omake: waiting for project lock: .@?"; 0 end else begin eprintf ".@?"; succ col end in Unix.sleep 1; try Lm_unix_util.lockf fd Unix.F_TLOCK 0 with Unix.Unix_error (Unix.EAGAIN, _, _) -> poll col in poll 1000 with (* * XXX: When lockf is not supported, we just print a warning and keep going. * .omakedb locking is only convenience, not safety, so it's not a huge problem. *) Unix.Unix_error ((Unix.EOPNOTSUPP | Unix.ENOLCK) as err, _, _) -> eprintf "*** omake WARNING: Can not lock the project database file .omakedb: \t%s. Will proceed anyway. \tWARNING: Be aware that simultaneously running more than one instance \t\tof OMake on the same project is not recommended. It may \t\tresult in some OMake instances failing to record their \t\tprogress in the database@." (Unix.error_message err) | Unix.Unix_error (err, _, _) -> raise (Failure ("Failed to lock the file " ^ name ^ ": " ^ (Unix.error_message err))) | Failure err -> raise (Failure ("Failed to lock the file " ^ name ^ ": " ^ err)) in Omake_shell_sys.set_close_on_exec fd; save_fd := Some fd; (* Print the message to the lock file *) try ignore (Unix.lseek fd 0 Unix.SEEK_SET); Lm_unix_util.ftruncate fd; let outx = Unix.out_channel_of_descr fd in Printf.fprintf outx "*** omake: the project was last locked by %s:%d.\n" (Unix.gethostname ()) (Unix.getpid ()); Pervasives.flush outx with Unix.Unix_error _ | Sys_error _ | Failure _ -> () in wait_for_lock, unlock_db (* * We want to build the target string. * Create or find a command to build it. *) let build_target_command env target = try let command = find_command env target in start_command env command with Not_found -> let name = Node.fullname target in let loc = bogus_loc name in let pos = string_pos "build_target" (loc_exp_pos loc) in build_command env pos loc target (* * Catch the dependency printer. *) let build_target env print target = (* Generate the command *) build_target_command env target; (* Add the print flag *) if print then print_node_dependencies env target (* * Make the targets. *) let make env = let now = Unix.gettimeofday () in let progress = { ps_count = env.env_succeeded_count; ps_progress = now +. prompt_interval; ps_save = now +. !save_interval; } in main_loop env progress (* * Wait for notifications. *) let notify_wait env = let { env_exec = exec; env_venv = venv } = env in let db_node = venv_intern_cd venv PhonyProhibited (Dir.cwd ()) db_name in let rec loop found = if not found || Exec.pending exec then let event = Exec.next_event exec in let changed = invalidate_event env event in loop (changed || found) in eprintf "*** omake: polling for filesystem changes@."; save env; ignore (Omake_cache.stat_changed env.env_cache db_node); unlock_db (); loop false; wait_for_lock (); if Omake_cache.stat_changed env.env_cache db_node then raise (Restart (Some "another OMake process have modified the build DB")); if opt_print_status (env_options env) then eprintf "*** omake: rebuilding@." let notify_wait_omakefile env = eprintf "*** omake: polling for filesystem changes (OMakefiles only)@."; let rec loop () = ignore (invalidate_event env (Exec.next_event env.env_exec)); loop () in try loop () with Restart reason -> reason (* * Summary management. *) let create_tmpfile env = let outx = Pervasives.open_out_gen [Open_wronly; Open_binary; Open_creat; Open_trunc] 0o600 env.env_summary in close_out outx let open_tmpfile env = let outx = Pervasives.open_out_gen [Open_wronly; Open_binary; Open_creat; Open_append] 0o600 env.env_summary in let buf = formatter_of_out_channel outx in buf, outx let print_summary ?(unlink = true) env = let inx = open_in_bin env.env_summary in let buffer = String.create 256 in let rec copy () = let amount = input inx buffer 0 (String.length buffer) in if amount > 0 then begin Pervasives.output Pervasives.stderr buffer 0 amount; copy () end in copy (); Pervasives.flush Pervasives.stderr; close_in inx; if unlink then unlink_file env.env_summary (* * Worklist switching. * * Build a pseudo-phased target .BUILD_* with a fresh worklist. * The reason for switching worklists is so we don't damage the * main build, and also so that we ignore the main build * when executing phases. *) let build_phase env target = let code = env.env_error_code in let restore_wl () = env.env_current_wl <- env.env_main_wl; if env.env_error_code = 0 then env.env_error_code <- code; Queue.iter (fun event -> ignore (do_invalidate_event env event)) env.env_pending_events; Queue.clear env.env_pending_events in try env.env_current_wl <- create_wl (); env.env_error_code <- 0; build_target env false target; invalidate_children env (NodeSet.singleton target); make env; let success = command_list_is_empty env CommandFailedTag in restore_wl(); success with exn -> restore_wl(); raise exn (* * Build command line targets. *) let rec build_targets env save_flag start_time parallel print ?(summary = true) targets = let options = env_options env in let () = try let begin_success = (* Build the initial summary *) not summary || (create_tmpfile env; build_phase env build_begin_target) in let process_summary () = (* Print out the final summary *) let buf, outx = open_tmpfile env in let core_success = if env.env_error_code <> 0 then begin print_stats env "failed" start_time; print_failed_targets env buf; false end else if not (command_list_is_empty env CommandBlockedTag) then begin print_stats env "blocked" start_time; print_failed env buf CommandBlockedTag; false end else if not (command_list_is_empty env CommandScanBlockedTag) then begin print_stats env "scanner is blocked" start_time; print_failed env buf CommandScanBlockedTag; false end else if not (command_list_is_empty env CommandFailedTag) then begin print_stats env "failed" start_time; print_failed_targets env buf; false end else true in close_out outx; core_success in let () = if begin_success then (* Build the core *) if parallel || opt_parallel options then begin (* Add commands to build the targets *) List.iter (build_target env print) targets; (* Build *) make env end else begin (* Make them in order *) List.iter (fun target -> build_target env print target; make env) targets end; in if summary then begin if not (process_summary () && begin_success && build_phase env build_success_target && process_summary ()) then ignore (build_phase env build_failure_target); print_summary env end with Sys_error _ | ExitException _ | ExitParentException _ | OmakeException _ | UncaughtException _ | RaiseException _ | Unix.Unix_error _ | OmakeFatalErr _ | OmakeFatal _ | Sys.Break | Failure _ | Return _ as exn -> let buf, outx = open_tmpfile env in fprintf buf "%a@." Omake_exn_print.pp_print_exn exn; close_out outx; print_stats env (match exn with Sys.Break -> "stopped" | _ -> "failed") start_time; print_summary env ~unlink:false; if opt_poll options && restartable_exn exn then begin unlink_file env.env_summary; let reason = notify_wait_omakefile env in raise (Restart reason) end else if opt_osh options then env.env_error_code <- exn_error_code else begin close env; save env; raise (BuildExit exn_error_code) end in (* Save database before exiting *) if save_flag then save env; (* Return error if that happened *) if env.env_error_code <> 0 then build_on_error env save_flag start_time parallel print targets options env.env_error_code else if not (command_list_is_empty env CommandBlockedTag) then build_on_error env save_flag start_time parallel print targets options deadlock_error_code else if not (command_list_is_empty env CommandScanBlockedTag) then build_on_error env save_flag start_time parallel print targets options deadlock_error_code else if not (command_list_is_empty env CommandFailedTag) then build_on_error env save_flag start_time parallel print targets options deadlock_error_code and build_on_error env save_flag start_time parallel print targets options error_code = if not (opt_poll options) then raise (BuildExit error_code) else begin notify_wait env; build_targets env save_flag (Unix.gettimeofday ()) parallel print targets end (* * Notification loop. *) let rec notify_loop env options targets = begin try notify_wait env with Sys.Break -> eprintf "*** omake: Received Break signal, exiting@."; raise (BuildExit 0) end; (* Build the targets again *) let start_time = Unix.gettimeofday () in build_targets env true start_time false (opt_print_dependencies options) targets; print_stats env "done" start_time; notify_loop env options targets (* * Start the core build. *) let build_core env dir_name dir start_time options targets = (* First, build all the included files *) let changed = if opt_dry_run options then false else let includes = NodeTable.fold (fun includes node _ -> node :: includes) [] env.env_includes in let _ = build_targets env false start_time true false ~summary:false includes in NodeTable.exists (fun node digest -> let digest' = Omake_cache.force_stat env.env_cache node in digest' <> digest) env.env_includes in let () = if changed then begin env.env_includes <- Omake_cache.stat_table env.env_cache env.env_includes; raise (Restart None) end in let venv = env.env_venv in let venv = venv_chdir_tmp venv dir in let targets = List.map (venv_intern venv PhonyOK) targets in let () = List.iter (fun s -> print_node_dependencies env (venv_intern venv PhonyOK s)) (opt_show_dependencies options) in let options = env_options env in build_targets env true start_time false (opt_print_dependencies options) targets; print_stats env "done" start_time; (* Polling loop *) if opt_poll_on_done options then if not Lm_notify.enabled then eprintf "*** omake: Polling is not enabled@." else notify_loop env options targets; close env (* * Main builder. *) let rec build_time start_time venv_opt options dir_name targets = let env = load venv_opt options targets in let dir_name = if opt_project options then "." else dir_name in let dir = Dir.chdir env.env_cwd dir_name in (* Monitor the full tree if polling *) let () = if opt_poll options then let root = env.env_cwd in try Exec.monitor_tree env.env_exec root with Failure _ -> (* This is just an optimization anyway *) () in (* * Check that this directory is actually a .SUBDIR. * Don't do the check in osh mode; we assume the script knows * what it is doing. *) let () = if venv_opt = None && not (opt_project options || DirTable.mem env.env_explicit_directories dir) then begin eprintf "*** omake: the current directory %s@." (Dir.absname dir); eprintf "*** omake: is not part of the root project in %s@." (Dir.absname env.env_cwd); raise (BuildExit 1) end in let restart reason = print_restart options reason; close env; save env; build_time start_time venv_opt options dir_name targets in try build_core env dir_name dir start_time options targets with Restart reason -> restart reason | Sys.Break as exn -> close env; save env; eprintf "%a@." Omake_exn_print.pp_print_exn exn; raise (BuildExit exn_error_code) | exn when opt_poll options && restartable_exn exn -> eprintf "%a@." Omake_exn_print.pp_print_exn exn; let reason = notify_wait_omakefile env in restart reason let build options dir_name targets = try Omake_shell_sys.set_interactive false; wait_for_lock (); build_time (Unix.gettimeofday ()) None options dir_name targets with BuildExit code -> Pervasives.exit code let build_fun venv targets = let options = venv_options venv in let dir = Dir.absname (venv_dir venv) in Unix.chdir dir; Omake_node.Dir.reset_cwd (); try wait_for_lock (); build_time (Unix.gettimeofday ()) (Some venv) options "." targets; true with BuildExit _ -> false (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/build/omake_build_tee.ml0000664000152300015230000001311410536410325016462 0ustar jyhjyh(* * Tee operations. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_string_set open Omake_env open Omake_node open Omake_exec_util open Omake_exec_print open Omake_build_type open Omake_options (* * The empty tee. *) let tee_none = tee_create false (* * Unlink all the tee files. * * XXX: HACK: It is hard to convince Windows not to hold on to these files, * so we keep track of those that we have failed to unlink and delete them * later on. *) let failed_unlink = ref StringSet.empty let try_unlink table name = try Unix.unlink name; table with Unix.Unix_error(Unix.ENOENT, _, _) -> table | Unix.Unix_error _ -> StringSet.add table name let rec unlink_file name = let table = StringSet.add (!failed_unlink) name in failed_unlink := StringSet.fold try_unlink StringSet.empty table (* * Print all tees. *) let eprint_file_exn copy name = let buf = String.create 1024 in let fd = Unix.openfile name [Unix.O_RDONLY] 0o000 in begin try copy buf fd with Unix.Unix_error _ -> Unix.close fd; eprintf "*** omake: error reading file %s@." name | exn -> Unix.close fd; raise exn end; Unix.close fd let rec copy_stderr buf fd = let amount = Unix.read fd buf 0 (String.length buf) in if amount > 0 then begin let _ = Unix.write Unix.stderr buf 0 amount in copy_stderr buf fd end let eprint_file = eprint_file_exn copy_stderr (* Will omit the trailing newline. Will return a bool indicating whether the newline was omited *) let rec format_string_with_nl buf s = if String.contains s '\n' then begin let i = String.index s '\n' in let len = String.length s - 1 in pp_print_string buf (String.sub s 0 i); if len > i then begin pp_force_newline buf (); format_string_with_nl buf (String.sub s (i + 1) (len - i)) end else (* Omit the trailing newline *) true end else begin pp_print_string buf s; false end let rec copy_with_nl_exn out pending_nl buf fd = let amount = Unix.read fd buf 0 (String.length buf) in if amount > 0 then begin if pending_nl then pp_force_newline out (); let pending_nl = format_string_with_nl out (String.sub buf 0 amount) in copy_with_nl_exn out pending_nl buf fd end let format_file_with_nl buf name = eprint_file_exn (copy_with_nl_exn buf true) name (* * Close tee channels. * For commands that are successful, repeat the diversion. *) let env_close_success_tee env command = let { command_venv = venv; command_tee = tee } = command in match tee_file tee with Some name -> tee_close tee; if opt_output (venv_options venv) OutputPostponeSuccess then begin progress_flush(); eprint_file name end; unlink_file name; command.command_tee <- tee_none | None -> () (* * For failed commands, repeat the diversion immediately * if the DivertRepeat flag is specified. * * Don't remove the diversion if we are going to print it again * at the end of the run. *) let env_close_failed_tee env command = let { command_venv = venv; command_tee = tee } = command in match tee_file tee with Some name -> let options = venv_options venv in tee_close tee; if opt_output options OutputPostponeError then begin progress_flush(); eprint_file name; if not (opt_output options OutputRepeatErrors) then begin unlink_file name; command.command_tee <- tee_none; end; end | None -> () (* * Print a diversion. *) let eprint_tee command = match tee_file command.command_tee with Some name -> progress_flush (); eprintf "*** omake: failed: %a@." pp_print_node command.command_target; eprint_file name | None -> () let format_tee_with_nl buf command = match tee_file command.command_tee with Some name -> format_file_with_nl buf name | None -> () (* * Unlink the file. *) let unlink_tee command = match tee_file command.command_tee with Some name -> unlink_file name; command.command_tee <- tee_none | None -> () (* * -*- * Local Variables: * Fill-column: 100 * End: * -*- * vim:ts=3:et:tw=100 *) omake-0.9.8.5/src/build/omake_build_util.ml0000664000152300015230000001526610643246147016704 0ustar jyhjyh(* * Utilities on the build environment. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_printf open Lm_symbol open Omake_env open Omake_pos open Omake_node open Omake_build_type open Omake_value_type module Pos = MakePos (struct let name = "Omake_build_util" end) open Pos (* * This is a totally different sorting algorithm than that used in * revision 1.2. * * Here is the new assumption: only direct dependencies matter. * That is, the transitive closure is not needed for nodes outside * the set being sorted. * * This version uses a simple DFS to order the nodes. * * The numbers in IntNodeCompare are the sequence number of the node * in the input list. They are used to make the output order as similar * to the input one as possible (http://bugzilla.metaprl.org/show_bug.cgi?id=376) *) module IntNodeCompare = struct type t = int * Node.t let compare (i1, n1) (i2, n2) = match i1 - i2 with 0 -> Node.compare n1 n2 | i -> i end module IntNodeSet = Lm_set.LmMake (IntNodeCompare) module IntNodeTable = Lm_map.LmMake (IntNodeCompare) (* * Get the dependencies for this set of names. *) let command_deps venv orules domain deps = let deps = venv_get_ordering_deps venv orules deps in NodeSet.fold (fun deps dep -> if NodeTable.mem domain dep then IntNodeSet.add deps (NodeTable.find domain dep, dep) else deps) IntNodeSet.empty deps (* * Build the subgraph, including only those nodes that we actually * care about. *) let build_subgraph env venv pos orules domain = NodeTable.fold (fun graph node i -> try let command = NodeTable.find env.env_commands node in let deps = command_deps venv orules domain command.command_build_deps in let node = i, node in IntNodeTable.add graph node (IntNodeSet.remove deps node) with Not_found -> raise (OmakeException (pos, StringNodeError ("file is not found", node)))) IntNodeTable.empty domain let print_cycle wl (_, node) buf = let rec print = function [] -> raise (Invalid_argument "Omake_build_util: internal_error") | ((_, node'), _) :: wl -> if not (Node.equal node node') then print wl; fprintf buf "%a@ > " pp_print_node node'; in fprintf buf "@[Sort failed: found a cycle:@ "; print wl; fprintf buf "%a@]" pp_print_node node (* * Produce a sort in DFS order. * * graph - the dependencies of the nodes not touched yet * marked - the nodes currently in the work list. "Touching" a marked node again means we found a loop. * items - the list constructed so far * in_list - the set of nodes in the items list * last argument - the "backtrace" (work list). *) let rec dfs_sort_aux pos graph marked items = function ((node, deps) :: bt) as all_bt -> if IntNodeSet.is_empty deps then (* Pop the work list *) dfs_sort_aux pos graph (IntNodeSet.remove marked node) (snd node :: items) bt else let node' = IntNodeSet.choose deps in if IntNodeSet.mem marked node' then raise (OmakeException (pos, LazyError (print_cycle all_bt node'))) else let bt = (node, IntNodeSet.remove deps node') :: bt in if IntNodeTable.mem graph node' then let deps = IntNodeTable.find graph node' in let graph = IntNodeTable.remove graph node' in let marked = IntNodeSet.add marked node' in dfs_sort_aux pos graph marked items ((node', deps) :: bt) else (* node' is already in the items list *) dfs_sort_aux pos graph marked items bt | [] -> if IntNodeTable.is_empty graph then (* We are done! *) List.rev items else (* Pick a starting point and start adding it to the output *) let node, deps = IntNodeTable.choose graph in let graph = IntNodeTable.remove graph node in let marked = IntNodeSet.singleton node in dfs_sort_aux pos graph marked items [node, deps] let dfs_sort pos graph _ = if IntNodeTable.is_empty graph then [] else dfs_sort_aux pos graph IntNodeSet.empty [] [] (* * Check that a list of nodes is in sorted order. *) let check_sort pos graph domain = NodeTable.iter (fun node index -> let deps = IntNodeTable.find graph (index, node) in IntNodeSet.iter (fun (index', dep) -> if index' > index then let print_problem buf = fprintf buf "@[Nodes are out of order:@ Node %a@ Depends on %a@]" (**) pp_print_node node pp_print_node dep in raise (OmakeException (pos, LazyError print_problem))) deps) domain (* * The main sorting function. *) let sort_aux sorter env venv pos name nodes = let pos = string_pos "sort" pos in (* Get extra ordering info *) let oinfo = venv_get_ordering_info venv name in (* Produce a table of the listing order *) let domain, _ = List.fold_left (fun (domain, i) node -> let domain = NodeTable.add domain node i in let i = succ i in domain, i) (NodeTable.empty, 0) nodes in (* Build the graph *) let graph = build_subgraph env venv pos oinfo domain in sorter pos graph domain (* * Top-level functions. *) let check_sort = sort_aux check_sort let sort = sort_aux dfs_sort (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/Makefile.nt0000664000152300015230000015242510640574724014024 0ustar jyhjyh# # !!!THIS IS A GENERATED FILE!!! # !!!DO NOT MAKE CHANGES HERE, THEY WILL BE LOST!!! # # # Generic "nmake" configuration for bootstrapping. # LN = copy /Y RM = del /F DOT = slash = \\ win32 = win32 system = system # # C configuration # CC = cl CFLAGS = /nologo /MT -I"$(OCAMLLIB)" /DWIN32 /DFAM_ENABLED /DFAM_PSEUDO AR = lib /nologo /debugtype:CV AROUT = /out: EXT_OBJ = .obj EXT_LIB = .lib EXE = .exe OCAMLFLAGS = -thread THREADSLIB = threads.cma .SUFFIXES: .mll .mly .mli .ml .cmi .cmo .c.obj: $(CC) $(CFLAGS) -c $*.c # # OCaml configuration # OCAMLC = ocamlc OCAMLYACC = ocamlyacc OCAMLLEX = ocamllex OCAMLDEP = ocamldep .mly.ml: $(OCAMLYACC) $*.mly .mly.mli: $(OCAMLYACC) $*.mly .mll.ml: $(OCAMLLEX) $*.mll .mli.cmi: $(OCAMLC) $(OCAMLFLAGS) -c $*.mli .ml.cmo: $(OCAMLC) $(OCAMLFLAGS) -c $*.ml # # The version.txt file # version.txt: @echo 0.0.boot > $@ lm_heap.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_heap.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_heap.c lm_heap.c lm_heap.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_heap.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_heap.h lm_heap.h lm_channel.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_channel.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_channel.c lm_channel.c lm_compat_win32.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_compat_win32.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_compat_win32.c lm_compat_win32.c lm_compat_win32.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_compat_win32.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_compat_win32.h lm_compat_win32.h lm_ctype.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_ctype.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_ctype.c lm_ctype.c lm_printf.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_printf.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_printf.c lm_printf.c lm_uname_ext.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_uname_ext.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_uname_ext.c lm_uname_ext.c lm_unix_cutil.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_unix_cutil.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_unix_cutil.c lm_unix_cutil.c unixsupport.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)unixsupport.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)unixsupport.h unixsupport.h fam_win32.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_win32.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_win32.c fam_win32.c fam_kqueue.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_kqueue.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_kqueue.c fam_kqueue.c fam_inotify.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_inotify.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_inotify.c fam_inotify.c fam_pseudo.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_pseudo.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)fam_pseudo.h fam_pseudo.h lm_notify.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_notify.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_notify.c lm_notify.c inotify.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify.h inotify.h inotify-syscalls.h: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify-syscalls.h $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify-syscalls.h inotify-syscalls.h inotify.om: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify.om $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)inotify.om inotify.om lm_termsize.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_termsize.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_termsize.c lm_termsize.c lm_terminfo.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_terminfo.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_terminfo.c lm_terminfo.c lm_fs_case_sensitive.c: ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_fs_case_sensitive.c $(LN) ..$(slash)src$(slash)clib$(slash)..$(slash)libmojave-external$(slash)cutil$(slash)lm_fs_case_sensitive.c lm_fs_case_sensitive.c OFILES_clib = lm_heap$(EXT_OBJ) lm_channel$(EXT_OBJ) lm_printf$(EXT_OBJ) lm_ctype$(EXT_OBJ) lm_uname_ext$(EXT_OBJ) lm_unix_cutil$(EXT_OBJ) lm_compat_win32$(EXT_OBJ) readline$(EXT_OBJ) omake_shell_sys$(EXT_OBJ) fam_win32$(EXT_OBJ) fam_kqueue$(EXT_OBJ) fam_inotify$(EXT_OBJ) lm_notify$(EXT_OBJ) lm_termsize$(EXT_OBJ) lm_terminfo$(EXT_OBJ) lm_fs_case_sensitive$(EXT_OBJ) clib$(EXT_LIB): $(OFILES_clib) -$(RM) $@ $(AR) $(AROUT)$@ $(OFILES_clib) SRC_clib = ..$(slash)src$(slash)clib omake_shell_sys.c: $(SRC_clib)$(slash)omake_shell_sys.c $(LN) $(SRC_clib)$(slash)omake_shell_sys.c omake_shell_sys.c readline.c: $(SRC_clib)$(slash)readline.c $(LN) $(SRC_clib)$(slash)readline.c readline.c ALLFILES_clib = omake_shell_sys.c readline.c lm_heap.c lm_heap.h lm_channel.c lm_compat_win32.c lm_compat_win32.h lm_ctype.c lm_printf.c lm_uname_ext.c lm_unix_cutil.c unixsupport.h fam_win32.c fam_kqueue.c fam_inotify.c fam_pseudo.h lm_notify.c inotify.h inotify-syscalls.h inotify.om lm_termsize.c lm_terminfo.c lm_fs_case_sensitive.c lm_printf.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_printf.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_printf.ml lm_printf.ml lm_debug.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_debug.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_debug.ml lm_debug.ml lm_heap.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_heap.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_heap.ml lm_heap.ml lm_list_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_list_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_list_util.ml lm_list_util.ml lm_array_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_array_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_array_util.ml lm_array_util.ml lm_set_sig.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set_sig.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set_sig.ml lm_set_sig.ml lm_set.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set.ml lm_set.ml lm_map_sig.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map_sig.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map_sig.ml lm_map_sig.ml lm_map.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map.ml lm_map.ml lm_int_set.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_int_set.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_int_set.ml lm_int_set.ml lm_index.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_index.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_index.ml lm_index.ml lm_thread_sig.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_sig.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_sig.ml lm_thread_sig.ml lm_thread.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread.ml lm_thread.ml lm_string_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_util.ml lm_string_util.ml lm_string_set.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_set.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_set.ml lm_string_set.ml lm_printf.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_printf.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_printf.mli lm_printf.mli lm_debug.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_debug.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_debug.mli lm_debug.mli lm_list_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_list_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_list_util.mli lm_list_util.mli lm_array_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_array_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_array_util.mli lm_array_util.mli lm_set.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_set.mli lm_set.mli lm_map.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_map.mli lm_map.mli lm_int_set.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_int_set.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_int_set.mli lm_int_set.mli lm_index.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_index.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_index.mli lm_index.mli lm_thread_core.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_core.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_core.mli lm_thread_core.mli lm_thread.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread.mli lm_thread.mli lm_string_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_util.mli lm_string_util.mli lm_string_set.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_set.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_string_set.mli lm_string_set.mli lm_thread_pool.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_pool.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_pool.mli lm_thread_pool.mli lm_arg.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_arg.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_arg.ml lm_arg.ml lm_hash_sig.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash_sig.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash_sig.ml lm_hash_sig.ml lm_hash.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash.ml lm_hash.ml lm_location.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_location.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_location.ml lm_location.ml lm_position.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_position.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_position.ml lm_position.ml lm_channel.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_channel.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_channel.ml lm_channel.ml lm_lexer.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_lexer.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_lexer.ml lm_lexer.ml lm_parser.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_parser.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_parser.ml lm_parser.ml lm_glob.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_glob.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_glob.ml lm_glob.ml lm_db.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_db.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_db.ml lm_db.ml lm_arg.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_arg.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_arg.mli lm_arg.mli lm_hash.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_hash.mli lm_hash.mli lm_location.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_location.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_location.mli lm_location.mli lm_position.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_position.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_position.mli lm_position.mli lm_channel.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_channel.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_channel.mli lm_channel.mli lm_lexer.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_lexer.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_lexer.mli lm_lexer.mli lm_parser.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_parser.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_parser.mli lm_parser.mli lm_glob.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_glob.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_glob.mli lm_glob.mli lm_db.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_db.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_db.mli lm_db.mli lm_termsize.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_termsize.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_termsize.ml lm_termsize.ml lm_termsize.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_termsize.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_termsize.mli lm_termsize.mli lm_terminfo.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_terminfo.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_terminfo.ml lm_terminfo.ml lm_terminfo.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_terminfo.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_terminfo.mli lm_terminfo.mli lm_filename_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_filename_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_filename_util.ml lm_filename_util.ml lm_filename_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_filename_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_filename_util.mli lm_filename_util.mli lm_uname.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_uname.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_uname.ml lm_uname.ml lm_unix_util.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_unix_util.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_unix_util.ml lm_unix_util.ml lm_uname.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_uname.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_uname.mli lm_uname.mli lm_unix_util.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_unix_util.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_unix_util.mli lm_unix_util.mli lm_notify.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_notify.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_notify.ml lm_notify.ml lm_notify.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_notify.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_notify.mli lm_notify.mli lm_fs_case_sensitive.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_fs_case_sensitive.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_fs_case_sensitive.ml lm_fs_case_sensitive.ml lm_fs_case_sensitive.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_fs_case_sensitive.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)unix$(slash)lm_fs_case_sensitive.mli lm_fs_case_sensitive.mli lm_symbol.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_symbol_hash.ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_symbol_hash.ml lm_symbol.ml lm_symbol.mli: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_symbol_hash.mli $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)util$(slash)lm_symbol_hash.mli lm_symbol.mli CMOFILES_lm = lm_printf.cmo lm_debug.cmo lm_heap.cmo lm_list_util.cmo lm_array_util.cmo lm_set_sig.cmo lm_set.cmo lm_map_sig.cmo lm_map.cmo lm_int_set.cmo lm_termsize.cmo lm_terminfo.cmo lm_arg.cmo lm_index.cmo lm_thread_sig.cmo lm_thread_core.cmo lm_thread.cmo lm_string_util.cmo lm_string_set.cmo lm_hash_sig.cmo lm_hash.cmo lm_symbol.cmo lm_location.cmo lm_position.cmo lm_filename_util.cmo lm_uname.cmo lm_thread_pool.cmo lm_channel.cmo lm_lexer.cmo lm_parser.cmo lm_unix_util.cmo lm_glob.cmo lm_db.cmo lm_notify.cmo lm_fs_case_sensitive.cmo OCAML_LIB_FLAGS_lm = lm.cma: $(CMOFILES_lm) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_lm) -a -o $@ $(CMOFILES_lm) lm_thread_pool.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_pool_$(system).ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_pool_$(system).ml lm_thread_pool.ml lm_thread_core.ml: ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_core_$(system).ml $(LN) ..$(slash)src$(slash)libmojave$(slash)..$(slash)libmojave-external$(slash)stdlib$(slash)lm_thread_core_$(system).ml lm_thread_core.ml SRC_libmojave = ..$(slash)src$(slash)libmojave ALLFILES_libmojave = lm_printf.ml lm_debug.ml lm_heap.ml lm_list_util.ml lm_array_util.ml lm_set_sig.ml lm_set.ml lm_map_sig.ml lm_map.ml lm_int_set.ml lm_index.ml lm_thread_sig.ml lm_thread.ml lm_string_util.ml lm_string_set.ml lm_printf.mli lm_debug.mli lm_list_util.mli lm_array_util.mli lm_set.mli lm_map.mli lm_int_set.mli lm_index.mli lm_thread_core.mli lm_thread.mli lm_string_util.mli lm_string_set.mli lm_thread_pool.mli lm_arg.ml lm_hash_sig.ml lm_hash.ml lm_location.ml lm_position.ml lm_channel.ml lm_lexer.ml lm_parser.ml lm_glob.ml lm_db.ml lm_arg.mli lm_hash.mli lm_location.mli lm_position.mli lm_channel.mli lm_lexer.mli lm_parser.mli lm_glob.mli lm_db.mli lm_termsize.ml lm_termsize.mli lm_terminfo.ml lm_terminfo.mli lm_filename_util.ml lm_filename_util.mli lm_uname.ml lm_unix_util.ml lm_uname.mli lm_unix_util.mli lm_notify.ml lm_notify.mli lm_fs_case_sensitive.ml lm_fs_case_sensitive.mli lm_symbol.ml lm_symbol.mli lm_thread_pool.ml lm_thread_core.ml CMOFILES_util = fmarshal.cmo ocaml_patch.cmo omake_util.cmo omake_wild.cmo omake_print_util.cmo omake_readline.cmo omake_printf.cmo omake_marshal.cmo omake_handle_table.cmo OCAML_LIB_FLAGS_util = util.cma: $(CMOFILES_util) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_util) -a -o $@ $(CMOFILES_util) ocaml_patch.cmo: ocaml_patch.cmi ocaml_patch.ml: ..$(slash)src$(slash)util$(slash)ocaml_patch_$(win32).ml $(LN) ..$(slash)src$(slash)util$(slash)ocaml_patch_$(win32).ml ocaml_patch.ml Makefile.dep: ocaml_patch.ml SRC_util = ..$(slash)src$(slash)util fmarshal.ml: $(SRC_util)$(slash)fmarshal.ml $(LN) $(SRC_util)$(slash)fmarshal.ml fmarshal.ml ocaml_patch.mli: $(SRC_util)$(slash)ocaml_patch.mli $(LN) $(SRC_util)$(slash)ocaml_patch.mli ocaml_patch.mli omake_handle_table.ml: $(SRC_util)$(slash)omake_handle_table.ml $(LN) $(SRC_util)$(slash)omake_handle_table.ml omake_handle_table.ml omake_marshal.ml: $(SRC_util)$(slash)omake_marshal.ml $(LN) $(SRC_util)$(slash)omake_marshal.ml omake_marshal.ml omake_print_util.ml: $(SRC_util)$(slash)omake_print_util.ml $(LN) $(SRC_util)$(slash)omake_print_util.ml omake_print_util.ml omake_print_util.mli: $(SRC_util)$(slash)omake_print_util.mli $(LN) $(SRC_util)$(slash)omake_print_util.mli omake_print_util.mli omake_printf.ml: $(SRC_util)$(slash)omake_printf.ml $(LN) $(SRC_util)$(slash)omake_printf.ml omake_printf.ml omake_readline.ml: $(SRC_util)$(slash)omake_readline.ml $(LN) $(SRC_util)$(slash)omake_readline.ml omake_readline.ml omake_readline.mli: $(SRC_util)$(slash)omake_readline.mli $(LN) $(SRC_util)$(slash)omake_readline.mli omake_readline.mli omake_util.ml: $(SRC_util)$(slash)omake_util.ml $(LN) $(SRC_util)$(slash)omake_util.ml omake_util.ml omake_util.mli: $(SRC_util)$(slash)omake_util.mli $(LN) $(SRC_util)$(slash)omake_util.mli omake_util.mli omake_wild.ml: $(SRC_util)$(slash)omake_wild.ml $(LN) $(SRC_util)$(slash)omake_wild.ml omake_wild.ml omake_wild.mli: $(SRC_util)$(slash)omake_wild.mli $(LN) $(SRC_util)$(slash)omake_wild.mli omake_wild.mli ALLFILES_util = fmarshal.ml ocaml_patch.mli omake_handle_table.ml omake_marshal.ml omake_print_util.ml omake_print_util.mli omake_printf.ml omake_readline.ml omake_readline.mli omake_util.ml omake_util.mli omake_wild.ml omake_wild.mli ocaml_patch.ml CMOFILES_omake_gen_magic = omake_gen_magic.cmo OCAML_LIBS_omake_gen_magic = lm.cma OCAML_OTHER_LIBS_omake_gen_magic = unix.cma OCAML_CLIBS_omake_gen_magic = OCAML_CCLIBS_omake_gen_magic = omake_gen_magic$(EXE): $(CMOFILES_omake_gen_magic) $(OCAML_LIBS_omake_gen_magic) $(OCAML_CLIBS_omake_gen_magic) $(OCAMLC) $(OCAMLFLAGS) -custom -o $@ $(OCAML_CCLIBS_omake_gen_magic) $(OCAML_OTHER_LIBS_omake_gen_magic) $(THREADSLIB) $(OCAML_LIBS_omake_gen_magic) $(CMOFILES_omake_gen_magic) CMOFILES_magic = omake_magic.cmo OCAML_LIB_FLAGS_magic = magic.cma: $(CMOFILES_magic) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_magic) -a -o $@ $(CMOFILES_magic) GENMAGIC_DEPS = lm_filename_util.ml lm_hash.ml lm_location.ml lm_map.ml lm_position.ml lm_set.ml lm_symbol.ml omake_value_type.ml omake_cache.ml omake_cache_type.ml omake_node.ml omake_command_digest.ml lm_filename_util.ml lm_hash.ml lm_location.ml lm_symbol.ml lm_map.ml lm_set.ml omake_node.ml omake_ir.ml lm_filename_util.ml lm_hash.ml lm_lexer.ml lm_location.ml lm_map.ml lm_parser.ml lm_position.ml lm_set.ml lm_symbol.ml omake_value_type.ml omake_cache_type.ml omake_ir.ml omake_node.ml omake_env.ml version.txt MAGIC_FILES = --cache-files lm_filename_util.ml lm_hash.ml lm_location.ml lm_map.ml lm_position.ml lm_set.ml lm_symbol.ml omake_value_type.ml omake_cache.ml omake_cache_type.ml omake_node.ml omake_command_digest.ml --omc-files lm_filename_util.ml lm_hash.ml lm_location.ml lm_symbol.ml lm_map.ml lm_set.ml omake_node.ml omake_ir.ml --omo-files lm_filename_util.ml lm_hash.ml lm_lexer.ml lm_location.ml lm_map.ml lm_parser.ml lm_position.ml lm_set.ml lm_symbol.ml omake_value_type.ml omake_cache_type.ml omake_ir.ml omake_node.ml omake_env.ml omake_magic.ml: omake_gen_magic$(EXE) $(GENMAGIC_DEPS) $(DOT)omake_gen_magic -o $@ --version version.txt --magic $(MAGIC_FILES) SRC_magic = ..$(slash)src$(slash)magic omake_gen_magic.ml: $(SRC_magic)$(slash)omake_gen_magic.ml $(LN) $(SRC_magic)$(slash)omake_gen_magic.ml omake_gen_magic.ml ALLFILES_magic = omake_gen_magic.ml CMOFILES_ir = omake_options.cmo omake_symbol.cmo omake_state.cmo omake_node_type.cmo omake_node_sig.cmo omake_node.cmo omake_virtual_id.cmo omake_install.cmo omake_ir.cmo omake_var.cmo omake_ir_util.cmo omake_ir_print.cmo omake_ir_free_vars.cmo omake_lexer.cmo omake_parser.cmo omake_value_type.cmo omake_command_type.cmo omake_value_print.cmo omake_pos.cmo omake_shell_type.cmo omake_command.cmo omake_cache_type.cmo omake_cache.cmo OCAML_LIB_FLAGS_ir = ir.cma: $(CMOFILES_ir) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_ir) -a -o $@ $(CMOFILES_ir) omake_options.cmo omake_symbol.cmo omake_state.cmo omake_node_type.cmo omake_node_sig.cmo omake_node.cmo omake_virtual_id.cmo omake_install.cmo omake_ir.cmo omake_var.cmo omake_ir_util.cmo omake_ir_print.cmo omake_ir_free_vars.cmo omake_lexer.cmo omake_parser.cmo omake_value_type.cmo omake_command_type.cmo omake_value_print.cmo omake_pos.cmo omake_shell_type.cmo omake_command.cmo omake_cache_type.cmo omake_cache.cmo omake_options.cmi omake_state.cmi omake_node.cmi omake_virtual_id.cmi omake_install.cmi omake_var.cmi omake_ir_util.cmi omake_ir_print.cmi omake_ir_free_vars.cmi omake_value_print.cmi omake_pos.cmi omake_command.cmi omake_cache.cmi: magic.cma SRC_ir = ..$(slash)src$(slash)ir omake_cache.ml: $(SRC_ir)$(slash)omake_cache.ml $(LN) $(SRC_ir)$(slash)omake_cache.ml omake_cache.ml omake_cache.mli: $(SRC_ir)$(slash)omake_cache.mli $(LN) $(SRC_ir)$(slash)omake_cache.mli omake_cache.mli omake_cache_type.ml: $(SRC_ir)$(slash)omake_cache_type.ml $(LN) $(SRC_ir)$(slash)omake_cache_type.ml omake_cache_type.ml omake_command.ml: $(SRC_ir)$(slash)omake_command.ml $(LN) $(SRC_ir)$(slash)omake_command.ml omake_command.ml omake_command.mli: $(SRC_ir)$(slash)omake_command.mli $(LN) $(SRC_ir)$(slash)omake_command.mli omake_command.mli omake_command_type.ml: $(SRC_ir)$(slash)omake_command_type.ml $(LN) $(SRC_ir)$(slash)omake_command_type.ml omake_command_type.ml omake_install.ml: $(SRC_ir)$(slash)omake_install.ml $(LN) $(SRC_ir)$(slash)omake_install.ml omake_install.ml omake_install.mli: $(SRC_ir)$(slash)omake_install.mli $(LN) $(SRC_ir)$(slash)omake_install.mli omake_install.mli omake_ir.ml: $(SRC_ir)$(slash)omake_ir.ml $(LN) $(SRC_ir)$(slash)omake_ir.ml omake_ir.ml omake_ir_free_vars.ml: $(SRC_ir)$(slash)omake_ir_free_vars.ml $(LN) $(SRC_ir)$(slash)omake_ir_free_vars.ml omake_ir_free_vars.ml omake_ir_free_vars.mli: $(SRC_ir)$(slash)omake_ir_free_vars.mli $(LN) $(SRC_ir)$(slash)omake_ir_free_vars.mli omake_ir_free_vars.mli omake_ir_print.ml: $(SRC_ir)$(slash)omake_ir_print.ml $(LN) $(SRC_ir)$(slash)omake_ir_print.ml omake_ir_print.ml omake_ir_print.mli: $(SRC_ir)$(slash)omake_ir_print.mli $(LN) $(SRC_ir)$(slash)omake_ir_print.mli omake_ir_print.mli omake_ir_util.ml: $(SRC_ir)$(slash)omake_ir_util.ml $(LN) $(SRC_ir)$(slash)omake_ir_util.ml omake_ir_util.ml omake_ir_util.mli: $(SRC_ir)$(slash)omake_ir_util.mli $(LN) $(SRC_ir)$(slash)omake_ir_util.mli omake_ir_util.mli omake_lexer.ml: $(SRC_ir)$(slash)omake_lexer.ml $(LN) $(SRC_ir)$(slash)omake_lexer.ml omake_lexer.ml omake_node.ml: $(SRC_ir)$(slash)omake_node.ml $(LN) $(SRC_ir)$(slash)omake_node.ml omake_node.ml omake_node.mli: $(SRC_ir)$(slash)omake_node.mli $(LN) $(SRC_ir)$(slash)omake_node.mli omake_node.mli omake_node_sig.ml: $(SRC_ir)$(slash)omake_node_sig.ml $(LN) $(SRC_ir)$(slash)omake_node_sig.ml omake_node_sig.ml omake_node_type.ml: $(SRC_ir)$(slash)omake_node_type.ml $(LN) $(SRC_ir)$(slash)omake_node_type.ml omake_node_type.ml omake_options.ml: $(SRC_ir)$(slash)omake_options.ml $(LN) $(SRC_ir)$(slash)omake_options.ml omake_options.ml omake_options.mli: $(SRC_ir)$(slash)omake_options.mli $(LN) $(SRC_ir)$(slash)omake_options.mli omake_options.mli omake_parser.ml: $(SRC_ir)$(slash)omake_parser.ml $(LN) $(SRC_ir)$(slash)omake_parser.ml omake_parser.ml omake_pos.ml: $(SRC_ir)$(slash)omake_pos.ml $(LN) $(SRC_ir)$(slash)omake_pos.ml omake_pos.ml omake_pos.mli: $(SRC_ir)$(slash)omake_pos.mli $(LN) $(SRC_ir)$(slash)omake_pos.mli omake_pos.mli omake_shell_type.ml: $(SRC_ir)$(slash)omake_shell_type.ml $(LN) $(SRC_ir)$(slash)omake_shell_type.ml omake_shell_type.ml omake_state.ml: $(SRC_ir)$(slash)omake_state.ml $(LN) $(SRC_ir)$(slash)omake_state.ml omake_state.ml omake_state.mli: $(SRC_ir)$(slash)omake_state.mli $(LN) $(SRC_ir)$(slash)omake_state.mli omake_state.mli omake_symbol.ml: $(SRC_ir)$(slash)omake_symbol.ml $(LN) $(SRC_ir)$(slash)omake_symbol.ml omake_symbol.ml omake_value_print.ml: $(SRC_ir)$(slash)omake_value_print.ml $(LN) $(SRC_ir)$(slash)omake_value_print.ml omake_value_print.ml omake_value_print.mli: $(SRC_ir)$(slash)omake_value_print.mli $(LN) $(SRC_ir)$(slash)omake_value_print.mli omake_value_print.mli omake_value_type.ml: $(SRC_ir)$(slash)omake_value_type.ml $(LN) $(SRC_ir)$(slash)omake_value_type.ml omake_value_type.ml omake_var.ml: $(SRC_ir)$(slash)omake_var.ml $(LN) $(SRC_ir)$(slash)omake_var.ml omake_var.ml omake_var.mli: $(SRC_ir)$(slash)omake_var.mli $(LN) $(SRC_ir)$(slash)omake_var.mli omake_var.mli omake_virtual_id.ml: $(SRC_ir)$(slash)omake_virtual_id.ml $(LN) $(SRC_ir)$(slash)omake_virtual_id.ml omake_virtual_id.ml omake_virtual_id.mli: $(SRC_ir)$(slash)omake_virtual_id.mli $(LN) $(SRC_ir)$(slash)omake_virtual_id.mli omake_virtual_id.mli ALLFILES_ir = omake_cache.ml omake_cache.mli omake_cache_type.ml omake_command.ml omake_command.mli omake_command_type.ml omake_install.ml omake_install.mli omake_ir.ml omake_ir_free_vars.ml omake_ir_free_vars.mli omake_ir_print.ml omake_ir_print.mli omake_ir_util.ml omake_ir_util.mli omake_lexer.ml omake_node.ml omake_node.mli omake_node_sig.ml omake_node_type.ml omake_options.ml omake_options.mli omake_parser.ml omake_pos.ml omake_pos.mli omake_shell_type.ml omake_state.ml omake_state.mli omake_symbol.ml omake_value_print.ml omake_value_print.mli omake_value_type.ml omake_var.ml omake_var.mli omake_virtual_id.ml omake_virtual_id.mli CMOFILES_exec = omake_exec_id.cmo omake_exec_type.cmo omake_exec_print.cmo omake_exec_util.cmo omake_exec_local.cmo omake_exec_remote.cmo omake_exec_notify.cmo omake_exec.cmo OCAML_LIB_FLAGS_exec = exec.cma: $(CMOFILES_exec) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_exec) -a -o $@ $(CMOFILES_exec) SRC_exec = ..$(slash)src$(slash)exec omake_exec.ml: $(SRC_exec)$(slash)omake_exec.ml $(LN) $(SRC_exec)$(slash)omake_exec.ml omake_exec.ml omake_exec.mli: $(SRC_exec)$(slash)omake_exec.mli $(LN) $(SRC_exec)$(slash)omake_exec.mli omake_exec.mli omake_exec_id.ml: $(SRC_exec)$(slash)omake_exec_id.ml $(LN) $(SRC_exec)$(slash)omake_exec_id.ml omake_exec_id.ml omake_exec_id.mli: $(SRC_exec)$(slash)omake_exec_id.mli $(LN) $(SRC_exec)$(slash)omake_exec_id.mli omake_exec_id.mli omake_exec_local.ml: $(SRC_exec)$(slash)omake_exec_local.ml $(LN) $(SRC_exec)$(slash)omake_exec_local.ml omake_exec_local.ml omake_exec_local.mli: $(SRC_exec)$(slash)omake_exec_local.mli $(LN) $(SRC_exec)$(slash)omake_exec_local.mli omake_exec_local.mli omake_exec_notify.ml: $(SRC_exec)$(slash)omake_exec_notify.ml $(LN) $(SRC_exec)$(slash)omake_exec_notify.ml omake_exec_notify.ml omake_exec_notify.mli: $(SRC_exec)$(slash)omake_exec_notify.mli $(LN) $(SRC_exec)$(slash)omake_exec_notify.mli omake_exec_notify.mli omake_exec_print.ml: $(SRC_exec)$(slash)omake_exec_print.ml $(LN) $(SRC_exec)$(slash)omake_exec_print.ml omake_exec_print.ml omake_exec_print.mli: $(SRC_exec)$(slash)omake_exec_print.mli $(LN) $(SRC_exec)$(slash)omake_exec_print.mli omake_exec_print.mli omake_exec_remote.ml: $(SRC_exec)$(slash)omake_exec_remote.ml $(LN) $(SRC_exec)$(slash)omake_exec_remote.ml omake_exec_remote.ml omake_exec_remote.mli: $(SRC_exec)$(slash)omake_exec_remote.mli $(LN) $(SRC_exec)$(slash)omake_exec_remote.mli omake_exec_remote.mli omake_exec_type.ml: $(SRC_exec)$(slash)omake_exec_type.ml $(LN) $(SRC_exec)$(slash)omake_exec_type.ml omake_exec_type.ml omake_exec_util.ml: $(SRC_exec)$(slash)omake_exec_util.ml $(LN) $(SRC_exec)$(slash)omake_exec_util.ml omake_exec_util.ml omake_exec_util.mli: $(SRC_exec)$(slash)omake_exec_util.mli $(LN) $(SRC_exec)$(slash)omake_exec_util.mli omake_exec_util.mli ALLFILES_exec = omake_exec.ml omake_exec.mli omake_exec_id.ml omake_exec_id.mli omake_exec_local.ml omake_exec_local.mli omake_exec_notify.ml omake_exec_notify.mli omake_exec_print.ml omake_exec_print.mli omake_exec_remote.ml omake_exec_remote.mli omake_exec_type.ml omake_exec_util.ml omake_exec_util.mli CMOFILES_ast = omake_ast.cmo omake_ast_util.cmo omake_ast_print.cmo OCAML_LIB_FLAGS_ast = ast.cma: $(CMOFILES_ast) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_ast) -a -o $@ $(CMOFILES_ast) SRC_ast = ..$(slash)src$(slash)ast omake_ast.ml: $(SRC_ast)$(slash)omake_ast.ml $(LN) $(SRC_ast)$(slash)omake_ast.ml omake_ast.ml omake_ast_print.ml: $(SRC_ast)$(slash)omake_ast_print.ml $(LN) $(SRC_ast)$(slash)omake_ast_print.ml omake_ast_print.ml omake_ast_print.mli: $(SRC_ast)$(slash)omake_ast_print.mli $(LN) $(SRC_ast)$(slash)omake_ast_print.mli omake_ast_print.mli omake_ast_util.ml: $(SRC_ast)$(slash)omake_ast_util.ml $(LN) $(SRC_ast)$(slash)omake_ast_util.ml omake_ast_util.ml omake_ast_util.mli: $(SRC_ast)$(slash)omake_ast_util.mli $(LN) $(SRC_ast)$(slash)omake_ast_util.mli omake_ast_util.mli ALLFILES_ast = omake_ast.ml omake_ast_print.ml omake_ast_print.mli omake_ast_util.ml omake_ast_util.mli CMOFILES_omake_gen_parse = omake_gen_parse.cmo OCAML_LIBS_omake_gen_parse = OCAML_OTHER_LIBS_omake_gen_parse = unix.cma OCAML_CLIBS_omake_gen_parse = OCAML_CCLIBS_omake_gen_parse = omake_gen_parse$(EXE): $(CMOFILES_omake_gen_parse) $(OCAML_LIBS_omake_gen_parse) $(OCAML_CLIBS_omake_gen_parse) $(OCAMLC) $(OCAMLFLAGS) -custom -o $@ $(OCAML_CCLIBS_omake_gen_parse) $(OCAML_OTHER_LIBS_omake_gen_parse) $(THREADSLIB) $(OCAML_LIBS_omake_gen_parse) $(CMOFILES_omake_gen_parse) CMOFILES_env = omake_env.cmo omake_exn_print.cmo omake_ast_parse.cmo omake_ast_lex.cmo omake_ir_ast.cmo omake_ir_semant.cmo omake_command_digest.cmo OCAML_LIB_FLAGS_env = env.cma: $(CMOFILES_env) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_env) -a -o $@ $(CMOFILES_env) GENPARSE = omake_gen_parse omake_ast_parse.mly: $(GENPARSE)$(EXE) omake_ast_parse.input $(DOT)$(GENPARSE) -o $@ omake_ast_parse.input omake_ast_lex.ml: omake_ast_lex.mll omake_ast_lex.cmo: omake_ast_lex.cmi omake_ast_parse.ml: omake_ast_parse.mly omake_ast_parse.mli: omake_ast_parse.mly omake_ast_parse.cmo: omake_ast_parse.cmi omake_ast_lex.mll: ..$(slash)src$(slash)env$(slash)omake_ast_lex.mll $(LN) ..$(slash)src$(slash)env$(slash)omake_ast_lex.mll omake_ast_lex.mll omake_ast_parse.input: ..$(slash)src$(slash)env$(slash)omake_ast_parse.input $(LN) ..$(slash)src$(slash)env$(slash)omake_ast_parse.input omake_ast_parse.input omake_env.cmo omake_exn_print.cmo omake_ast_parse.cmo omake_ast_lex.cmo omake_ir_ast.cmo omake_ir_semant.cmo omake_command_digest.cmo omake_env.cmi omake_exn_print.cmi omake_ast_parse.cmi omake_ast_lex.cmi omake_ir_ast.cmi omake_ir_semant.cmi omake_command_digest.cmi: magic.cma Makefile.dep: omake_ast_lex.ml omake_ast_parse.mly omake_ast_parse.mli omake_ast_parse.ml SRC_env = ..$(slash)src$(slash)env omake_ast_lex.mli: $(SRC_env)$(slash)omake_ast_lex.mli $(LN) $(SRC_env)$(slash)omake_ast_lex.mli omake_ast_lex.mli omake_command_digest.ml: $(SRC_env)$(slash)omake_command_digest.ml $(LN) $(SRC_env)$(slash)omake_command_digest.ml omake_command_digest.ml omake_command_digest.mli: $(SRC_env)$(slash)omake_command_digest.mli $(LN) $(SRC_env)$(slash)omake_command_digest.mli omake_command_digest.mli omake_env.ml: $(SRC_env)$(slash)omake_env.ml $(LN) $(SRC_env)$(slash)omake_env.ml omake_env.ml omake_env.mli: $(SRC_env)$(slash)omake_env.mli $(LN) $(SRC_env)$(slash)omake_env.mli omake_env.mli omake_exn_print.ml: $(SRC_env)$(slash)omake_exn_print.ml $(LN) $(SRC_env)$(slash)omake_exn_print.ml omake_exn_print.ml omake_exn_print.mli: $(SRC_env)$(slash)omake_exn_print.mli $(LN) $(SRC_env)$(slash)omake_exn_print.mli omake_exn_print.mli omake_gen_parse.ml: $(SRC_env)$(slash)omake_gen_parse.ml $(LN) $(SRC_env)$(slash)omake_gen_parse.ml omake_gen_parse.ml omake_ir_ast.ml: $(SRC_env)$(slash)omake_ir_ast.ml $(LN) $(SRC_env)$(slash)omake_ir_ast.ml omake_ir_ast.ml omake_ir_ast.mli: $(SRC_env)$(slash)omake_ir_ast.mli $(LN) $(SRC_env)$(slash)omake_ir_ast.mli omake_ir_ast.mli omake_ir_semant.ml: $(SRC_env)$(slash)omake_ir_semant.ml $(LN) $(SRC_env)$(slash)omake_ir_semant.ml omake_ir_semant.ml omake_ir_semant.mli: $(SRC_env)$(slash)omake_ir_semant.mli $(LN) $(SRC_env)$(slash)omake_ir_semant.mli omake_ir_semant.mli ALLFILES_env = omake_ast_lex.mli omake_command_digest.ml omake_command_digest.mli omake_env.ml omake_env.mli omake_exn_print.ml omake_exn_print.mli omake_gen_parse.ml omake_ir_ast.ml omake_ir_ast.mli omake_ir_semant.ml omake_ir_semant.mli omake_ast_lex.mll omake_ast_parse.input CMOFILES_shell = omake_shell_parse.cmo omake_shell_lex.cmo omake_shell_sys_type.cmo omake_shell_sys.cmo omake_shell_job.cmo omake_shell_completion.cmo OCAML_LIB_FLAGS_shell = shell.cma: $(CMOFILES_shell) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_shell) -a -o $@ $(CMOFILES_shell) omake_shell_parse.ml: omake_shell_parse.mly omake_shell_parse.mli: omake_shell_parse.mly omake_shell_parse.cmo: omake_shell_parse.cmi omake_shell_parse.mly: ..$(slash)src$(slash)shell$(slash)omake_shell_parse.mly $(LN) ..$(slash)src$(slash)shell$(slash)omake_shell_parse.mly omake_shell_parse.mly omake_shell_sys.ml: ..$(slash)src$(slash)shell$(slash)omake_shell_sys_$(win32).ml $(LN) ..$(slash)src$(slash)shell$(slash)omake_shell_sys_$(win32).ml omake_shell_sys.ml Makefile.dep: omake_shell_parse.mli omake_shell_parse.ml omake_shell_sys.ml SRC_shell = ..$(slash)src$(slash)shell omake_shell_completion.ml: $(SRC_shell)$(slash)omake_shell_completion.ml $(LN) $(SRC_shell)$(slash)omake_shell_completion.ml omake_shell_completion.ml omake_shell_completion.mli: $(SRC_shell)$(slash)omake_shell_completion.mli $(LN) $(SRC_shell)$(slash)omake_shell_completion.mli omake_shell_completion.mli omake_shell_job.ml: $(SRC_shell)$(slash)omake_shell_job.ml $(LN) $(SRC_shell)$(slash)omake_shell_job.ml omake_shell_job.ml omake_shell_job.mli: $(SRC_shell)$(slash)omake_shell_job.mli $(LN) $(SRC_shell)$(slash)omake_shell_job.mli omake_shell_job.mli omake_shell_lex.ml: $(SRC_shell)$(slash)omake_shell_lex.ml $(LN) $(SRC_shell)$(slash)omake_shell_lex.ml omake_shell_lex.ml omake_shell_lex.mli: $(SRC_shell)$(slash)omake_shell_lex.mli $(LN) $(SRC_shell)$(slash)omake_shell_lex.mli omake_shell_lex.mli omake_shell_sys.mli: $(SRC_shell)$(slash)omake_shell_sys.mli $(LN) $(SRC_shell)$(slash)omake_shell_sys.mli omake_shell_sys.mli omake_shell_sys_type.ml: $(SRC_shell)$(slash)omake_shell_sys_type.ml $(LN) $(SRC_shell)$(slash)omake_shell_sys_type.ml omake_shell_sys_type.ml ALLFILES_shell = omake_shell_completion.ml omake_shell_completion.mli omake_shell_job.ml omake_shell_job.mli omake_shell_lex.ml omake_shell_lex.mli omake_shell_sys.mli omake_shell_sys_type.ml omake_shell_parse.mly omake_shell_sys.ml CMOFILES_eval = omake_eval.cmo omake_value.cmo OCAML_LIB_FLAGS_eval = eval.cma: $(CMOFILES_eval) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_eval) -a -o $@ $(CMOFILES_eval) SRC_eval = ..$(slash)src$(slash)eval omake_eval.ml: $(SRC_eval)$(slash)omake_eval.ml $(LN) $(SRC_eval)$(slash)omake_eval.ml omake_eval.ml omake_eval.mli: $(SRC_eval)$(slash)omake_eval.mli $(LN) $(SRC_eval)$(slash)omake_eval.mli omake_eval.mli omake_value.ml: $(SRC_eval)$(slash)omake_value.ml $(LN) $(SRC_eval)$(slash)omake_value.ml omake_value.ml omake_value.mli: $(SRC_eval)$(slash)omake_value.mli $(LN) $(SRC_eval)$(slash)omake_value.mli omake_value.mli ALLFILES_eval = omake_eval.ml omake_eval.mli omake_value.ml omake_value.mli CMOFILES_build = omake_rule.cmo omake_build_type.cmo omake_build_util.cmo omake_builtin_type.cmo omake_builtin_util.cmo omake_target.cmo omake_builtin.cmo omake_build_tee.cmo omake_build.cmo OCAML_LIB_FLAGS_build = build.cma: $(CMOFILES_build) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_build) -a -o $@ $(CMOFILES_build) omake_rule.cmo omake_build_type.cmo omake_build_util.cmo omake_builtin_type.cmo omake_builtin_util.cmo omake_target.cmo omake_builtin.cmo omake_build_tee.cmo omake_build.cmo omake_rule.cmi omake_build_util.cmi omake_builtin_util.cmi omake_target.cmi omake_builtin.cmi omake_build_tee.cmi omake_build.cmi: magic.cma SRC_build = ..$(slash)src$(slash)build omake_build.ml: $(SRC_build)$(slash)omake_build.ml $(LN) $(SRC_build)$(slash)omake_build.ml omake_build.ml omake_build.mli: $(SRC_build)$(slash)omake_build.mli $(LN) $(SRC_build)$(slash)omake_build.mli omake_build.mli omake_build_tee.ml: $(SRC_build)$(slash)omake_build_tee.ml $(LN) $(SRC_build)$(slash)omake_build_tee.ml omake_build_tee.ml omake_build_tee.mli: $(SRC_build)$(slash)omake_build_tee.mli $(LN) $(SRC_build)$(slash)omake_build_tee.mli omake_build_tee.mli omake_build_type.ml: $(SRC_build)$(slash)omake_build_type.ml $(LN) $(SRC_build)$(slash)omake_build_type.ml omake_build_type.ml omake_build_util.ml: $(SRC_build)$(slash)omake_build_util.ml $(LN) $(SRC_build)$(slash)omake_build_util.ml omake_build_util.ml omake_build_util.mli: $(SRC_build)$(slash)omake_build_util.mli $(LN) $(SRC_build)$(slash)omake_build_util.mli omake_build_util.mli omake_builtin.ml: $(SRC_build)$(slash)omake_builtin.ml $(LN) $(SRC_build)$(slash)omake_builtin.ml omake_builtin.ml omake_builtin.mli: $(SRC_build)$(slash)omake_builtin.mli $(LN) $(SRC_build)$(slash)omake_builtin.mli omake_builtin.mli omake_builtin_type.ml: $(SRC_build)$(slash)omake_builtin_type.ml $(LN) $(SRC_build)$(slash)omake_builtin_type.ml omake_builtin_type.ml omake_builtin_util.ml: $(SRC_build)$(slash)omake_builtin_util.ml $(LN) $(SRC_build)$(slash)omake_builtin_util.ml omake_builtin_util.ml omake_builtin_util.mli: $(SRC_build)$(slash)omake_builtin_util.mli $(LN) $(SRC_build)$(slash)omake_builtin_util.mli omake_builtin_util.mli omake_rule.ml: $(SRC_build)$(slash)omake_rule.ml $(LN) $(SRC_build)$(slash)omake_rule.ml omake_rule.ml omake_rule.mli: $(SRC_build)$(slash)omake_rule.mli $(LN) $(SRC_build)$(slash)omake_rule.mli omake_rule.mli omake_target.ml: $(SRC_build)$(slash)omake_target.ml $(LN) $(SRC_build)$(slash)omake_target.ml omake_target.ml omake_target.mli: $(SRC_build)$(slash)omake_target.mli $(LN) $(SRC_build)$(slash)omake_target.mli omake_target.mli ALLFILES_build = omake_build.ml omake_build.mli omake_build_tee.ml omake_build_tee.mli omake_build_type.ml omake_build_util.ml omake_build_util.mli omake_builtin.ml omake_builtin.mli omake_builtin_type.ml omake_builtin_util.ml omake_builtin_util.mli omake_rule.ml omake_rule.mli omake_target.ml omake_target.mli CMOFILES_builtin = omake_builtin_base.cmo omake_builtin_arith.cmo omake_builtin_file.cmo omake_builtin_fun.cmo omake_builtin_io.cmo omake_builtin_io_fun.cmo omake_builtin_sys.cmo omake_builtin_target.cmo omake_builtin_shell.cmo omake_builtin_rule.cmo omake_builtin_test.cmo omake_builtin_object.cmo OCAML_LIB_FLAGS_builtin = -linkall builtin.cma: $(CMOFILES_builtin) $(OCAMLC) $(OCAMLFLAGS) $(OCAML_LIB_FLAGS_builtin) -a -o $@ $(CMOFILES_builtin) omake_builtin_base.cmo omake_builtin_arith.cmo omake_builtin_file.cmo omake_builtin_fun.cmo omake_builtin_io.cmo omake_builtin_io_fun.cmo omake_builtin_sys.cmo omake_builtin_target.cmo omake_builtin_shell.cmo omake_builtin_rule.cmo omake_builtin_test.cmo omake_builtin_object.cmo omake_builtin_base.cmi omake_builtin_arith.cmi omake_builtin_file.cmi omake_builtin_fun.cmi omake_builtin_io.cmi omake_builtin_io_fun.cmi omake_builtin_sys.cmi omake_builtin_target.cmi omake_builtin_shell.cmi omake_builtin_rule.cmi omake_builtin_test.cmi omake_builtin_object.cmi: magic.cma SRC_builtin = ..$(slash)src$(slash)builtin omake_builtin_arith.ml: $(SRC_builtin)$(slash)omake_builtin_arith.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_arith.ml omake_builtin_arith.ml omake_builtin_arith.mli: $(SRC_builtin)$(slash)omake_builtin_arith.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_arith.mli omake_builtin_arith.mli omake_builtin_base.ml: $(SRC_builtin)$(slash)omake_builtin_base.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_base.ml omake_builtin_base.ml omake_builtin_base.mli: $(SRC_builtin)$(slash)omake_builtin_base.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_base.mli omake_builtin_base.mli omake_builtin_file.ml: $(SRC_builtin)$(slash)omake_builtin_file.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_file.ml omake_builtin_file.ml omake_builtin_file.mli: $(SRC_builtin)$(slash)omake_builtin_file.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_file.mli omake_builtin_file.mli omake_builtin_fun.ml: $(SRC_builtin)$(slash)omake_builtin_fun.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_fun.ml omake_builtin_fun.ml omake_builtin_fun.mli: $(SRC_builtin)$(slash)omake_builtin_fun.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_fun.mli omake_builtin_fun.mli omake_builtin_io.ml: $(SRC_builtin)$(slash)omake_builtin_io.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_io.ml omake_builtin_io.ml omake_builtin_io.mli: $(SRC_builtin)$(slash)omake_builtin_io.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_io.mli omake_builtin_io.mli omake_builtin_io_fun.ml: $(SRC_builtin)$(slash)omake_builtin_io_fun.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_io_fun.ml omake_builtin_io_fun.ml omake_builtin_io_fun.mli: $(SRC_builtin)$(slash)omake_builtin_io_fun.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_io_fun.mli omake_builtin_io_fun.mli omake_builtin_object.ml: $(SRC_builtin)$(slash)omake_builtin_object.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_object.ml omake_builtin_object.ml omake_builtin_object.mli: $(SRC_builtin)$(slash)omake_builtin_object.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_object.mli omake_builtin_object.mli omake_builtin_rule.ml: $(SRC_builtin)$(slash)omake_builtin_rule.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_rule.ml omake_builtin_rule.ml omake_builtin_rule.mli: $(SRC_builtin)$(slash)omake_builtin_rule.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_rule.mli omake_builtin_rule.mli omake_builtin_shell.ml: $(SRC_builtin)$(slash)omake_builtin_shell.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_shell.ml omake_builtin_shell.ml omake_builtin_shell.mli: $(SRC_builtin)$(slash)omake_builtin_shell.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_shell.mli omake_builtin_shell.mli omake_builtin_sys.ml: $(SRC_builtin)$(slash)omake_builtin_sys.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_sys.ml omake_builtin_sys.ml omake_builtin_sys.mli: $(SRC_builtin)$(slash)omake_builtin_sys.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_sys.mli omake_builtin_sys.mli omake_builtin_target.ml: $(SRC_builtin)$(slash)omake_builtin_target.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_target.ml omake_builtin_target.ml omake_builtin_target.mli: $(SRC_builtin)$(slash)omake_builtin_target.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_target.mli omake_builtin_target.mli omake_builtin_test.ml: $(SRC_builtin)$(slash)omake_builtin_test.ml $(LN) $(SRC_builtin)$(slash)omake_builtin_test.ml omake_builtin_test.ml omake_builtin_test.mli: $(SRC_builtin)$(slash)omake_builtin_test.mli $(LN) $(SRC_builtin)$(slash)omake_builtin_test.mli omake_builtin_test.mli ALLFILES_builtin = omake_builtin_arith.ml omake_builtin_arith.mli omake_builtin_base.ml omake_builtin_base.mli omake_builtin_file.ml omake_builtin_file.mli omake_builtin_fun.ml omake_builtin_fun.mli omake_builtin_io.ml omake_builtin_io.mli omake_builtin_io_fun.ml omake_builtin_io_fun.mli omake_builtin_object.ml omake_builtin_object.mli omake_builtin_rule.ml omake_builtin_rule.mli omake_builtin_shell.ml omake_builtin_shell.mli omake_builtin_sys.ml omake_builtin_sys.mli omake_builtin_target.ml omake_builtin_target.mli omake_builtin_test.ml omake_builtin_test.mli CMOFILES_cvs_realclean = cvs_realclean.cmo OCAML_LIBS_cvs_realclean = lm.cma OCAML_OTHER_LIBS_cvs_realclean = unix.cma OCAML_CLIBS_cvs_realclean = OCAML_CCLIBS_cvs_realclean = cvs_realclean$(EXE): $(CMOFILES_cvs_realclean) $(OCAML_LIBS_cvs_realclean) $(OCAML_CLIBS_cvs_realclean) $(OCAMLC) $(OCAMLFLAGS) -custom -o $@ $(OCAML_CCLIBS_cvs_realclean) $(OCAML_OTHER_LIBS_cvs_realclean) $(THREADSLIB) $(OCAML_LIBS_cvs_realclean) $(CMOFILES_cvs_realclean) CMOFILES_omake = omake_shell.cmo omake_main.cmo OCAML_LIBS_omake = lm.cma util.cma magic.cma ast.cma ir.cma env.cma exec.cma eval.cma shell.cma build.cma builtin.cma OCAML_OTHER_LIBS_omake = unix.cma OCAML_CLIBS_omake = clib$(EXT_LIB) OCAML_CCLIBS_omake = -cclib clib$(EXT_LIB) omake$(EXE): $(CMOFILES_omake) $(OCAML_LIBS_omake) $(OCAML_CLIBS_omake) $(OCAMLC) $(OCAMLFLAGS) -custom -o $@ $(OCAML_CCLIBS_omake) $(OCAML_OTHER_LIBS_omake) $(THREADSLIB) $(OCAML_LIBS_omake) $(CMOFILES_omake) omake_shell.cmo omake_main.cmo omake_shell.cmi omake_main.cmi: magic.cma SRC_main = ..$(slash)src$(slash)main cvs_realclean.ml: $(SRC_main)$(slash)cvs_realclean.ml $(LN) $(SRC_main)$(slash)cvs_realclean.ml cvs_realclean.ml omake_main.ml: $(SRC_main)$(slash)omake_main.ml $(LN) $(SRC_main)$(slash)omake_main.ml omake_main.ml omake_main.mli: $(SRC_main)$(slash)omake_main.mli $(LN) $(SRC_main)$(slash)omake_main.mli omake_main.mli omake_shell.ml: $(SRC_main)$(slash)omake_shell.ml $(LN) $(SRC_main)$(slash)omake_shell.ml omake_shell.ml omake_shell.mli: $(SRC_main)$(slash)omake_shell.mli $(LN) $(SRC_main)$(slash)omake_shell.mli omake_shell.mli ALLFILES_main = cvs_realclean.ml omake_main.ml omake_main.mli omake_shell.ml omake_shell.mli ALLFILES = $(ALLFILES_clib) $(ALLFILES_libmojave) $(ALLFILES_util) $(ALLFILES_magic) $(ALLFILES_ir) $(ALLFILES_exec) $(ALLFILES_ast) $(ALLFILES_env) $(ALLFILES_shell) $(ALLFILES_eval) $(ALLFILES_build) $(ALLFILES_builtin) $(ALLFILES_main) # # Create a dependency file # Makefile.dep: $(ALLFILES) $(OCAMLDEP) $(OCAMLINCLUDES) *.ml *.mli > Makefile.dep # # Clean up # clean: $(RM) *.cmo *.cmx *.cma *.cmxa *.o *.obj *.a *.lib *.exe $(RM) $(ALLFILES) $(RM) omake !INCLUDE Makefile.dep omake-0.9.8.5/src/OMakefile0000664000152300015230000000164710654141506013513 0ustar jyhjyh# # The order needs to be right in order for the bootstrapping Makefile to work. # ABORT_ON_DEPENDENCY_ERRORS = true # # Makefile.tmp care about the generated files. # .PHONY: MakefileDeps Makefile.tmp%: OCamlGeneratedFilesTarget MakefileDeps OldLocalOCamlGeneratedFiles = $(LocalOCamlGeneratedFiles) LocalOCamlGeneratedFiles(files) = MakefileDeps: $(files) OldLocalOCamlGeneratedFiles($(files)) export # # Subdirectories # .SUBDIRS: clib libmojave util magic LocalOCamlGeneratedFiles(magic/omake_magic.ml) .SUBDIRS: ir exec ast env LocalOCamlGeneratedFiles(env/omake_ast_lex.ml env/omake_ast_parse.mly env/omake_ast_parse.ml env/omake_ast_parse.mli) .SUBDIRS: shell eval build builtin main # # Generate a Makefile # MakeRootMakefiles([...]) clib libmojave util magic ir exec ast env shell eval build builtin main # # Clean up # clean: $(CLEAN) Makefile.tmp* omake-0.9.8.5/src/env/0000775000152300015230000000000010660137223012512 5ustar jyhjyhomake-0.9.8.5/src/env/omake_ast_lex.mll0000664000152300015230000007606710637763247016072 0ustar jyhjyh(* * Lexer for the omake language. * This is a little difficult because indentation is * significant, and we want it to work in interactive mode * too. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) { open Lm_printf open Lm_debug open Lm_symbol open Lm_location open Omake_ast open Omake_env open Omake_pos open Omake_ast_util open Omake_ast_parse open Omake_ast_print open Omake_exn_print open Omake_value_type module Pos = MakePos (struct let name = "Omake_ast_lex" end) open Pos let debug_lex = create_debug (**) { debug_name = "debug-ast-lex"; debug_description = "Print tokens as they are scanned"; debug_value = false } (* * Current mode: * ModeNormal: normal lexing mode * ModeString s: parsing a literal string, dollar sequences are still expanded, * s is the quotation delimiter * ModeQuote s: parsing a literal string, dollar sequences are still expanded, * escape sequences are allowed, s is the quotation delimiter. *) type mode = ModeNormal | ModeString of string | ModeQuote of string (* * The lexing mode. * ModeInitial: lexbuf is ready to be used * ModeIndent i: initial indentation has been scanned * ModeNormal: normal processing *) type lexmode = LexModeInitial | LexModeNormal of int (* * Parsing results. *) type parse_item = ParseExp of exp list | ParseError | ParseEOF (* * This is the info for each indentation level. *) type info = { info_mode : mode; info_indent : int; info_parens : int option } (* * State of the lexer. *) type session = { (* The current location *) current_file : symbol; mutable current_line : int; mutable current_off : int; mutable current_loc : loc; (* The current input buffer *) mutable current_buffer : string; mutable current_index : int; mutable current_prompt : string; mutable current_fill_ok : bool; mutable current_eof : bool; readline : (string -> string); mutable is_interactive : bool; (* The current lexbuf *) mutable current_lexbuf : Lexing.lexbuf; mutable current_lexmode : lexmode; mutable current_token : token; (* The current mode *) mutable current_mode : mode; mutable current_parens : int option; mutable current_indent : int; mutable current_stack : info list } (************************************************************************ * Printing. NOTICE: if new tokens are added, please update * the token list in omake_gen_parse.ml!!! *) let pp_print_token buf = function TokEof _ -> pp_print_string buf "" | TokEol _ -> pp_print_string buf "" | TokWhite (s, _) -> fprintf buf "whitespace: \"%s\"" s | TokLeftParen (s, _) -> fprintf buf "left parenthesis: %s" s | TokRightParen (s, _) -> fprintf buf "right parenthesis: %s" s | TokComma (s, _) -> fprintf buf "comma: %s" s | TokColon (s, _) -> fprintf buf "colon: %s" s | TokDoubleColon (s, _) -> fprintf buf "doublecolon: %s" s | TokNamedColon (s, _) -> fprintf buf "named colon: %s" s | TokDollar (s, strategy, _) -> fprintf buf "dollar: %s%a" s pp_print_strategy strategy | TokEq (s, _) -> fprintf buf "equals: %s" s | TokArray (s, _) -> fprintf buf "array: %s" s | TokDot (s, _) -> fprintf buf "dot: %s" s | TokId (s, _) -> fprintf buf "id: %s" s | TokKeyword (s, _) -> fprintf buf "keyword: %s" s | TokCatch (s, _) -> fprintf buf "catch: %s" s | TokClass (s, _) -> fprintf buf "class: %s" s | TokVar (_, s, _) -> fprintf buf "var: %s" s | TokString (s, _) -> fprintf buf "string: %s" s | TokBeginQuote (s, _) -> fprintf buf "begin-quote: %s" s | TokEndQuote (s, _) -> fprintf buf "end-quote: %s" s | TokBeginQuoteString (s, _) -> fprintf buf "begin-quote-string: %s" s | TokEndQuoteString (s, _) -> fprintf buf "end-quote-string: %s" s | TokStringQuote (s, _) -> fprintf buf "quote: %s" s | TokVarQuote (_, s, _) -> fprintf buf "key: %s" s (* * Set state. *) let create name readline = let loc = Lm_location.bogus_loc name in { current_file = Lm_symbol.add name; current_line = 1; current_off = 0; current_loc = loc; current_buffer = ""; current_index = 0; current_prompt = ">"; current_fill_ok = true; current_eof = true; readline = readline; is_interactive = false; current_lexbuf = Lexing.from_string ""; current_lexmode = LexModeInitial; current_token = TokEof loc; current_mode = ModeNormal; current_parens = None; current_indent = 0; current_stack = [] } let set_current_loc state loc = state.current_loc <- loc let current_location state = state.current_loc (* * Advance a line. *) let set_next_line state lexbuf = let { current_line = line; current_file = file } = state in let line = succ line in state.current_line <- line; state.current_off <- Lexing.lexeme_start lexbuf; state.current_loc <- create_loc file line 0 line 0 (* * Save the state. *) let save_mode state = let { current_mode = mode'; current_parens = parens; current_indent = indent; current_stack = stack } = state in let info = { info_mode = mode'; info_parens = parens; info_indent = indent } in info :: stack (* * Restore the state. *) let restore_mode state stack = match stack with info :: stack -> state.current_mode <- info.info_mode; state.current_parens <- info.info_parens; state.current_indent <- info.info_indent; state.current_stack <- stack | [] -> () (* * Push the new mode. *) let push_mode state mode = let stack = save_mode state in state.current_mode <- mode; state.current_parens <- None; state.current_stack <- stack (* * Pop the mode. *) let pop_mode state = restore_mode state state.current_stack (* * We are moving from a quotation to normal mode. * Start collecting parentheses. *) let push_dollar state mode = push_mode state mode; state.current_parens <- Some 0 (* * Push a paren. *) let push_paren state = let { current_parens = parens } = state in match parens with Some i -> state.current_parens <- Some (succ i) | None -> () (* * When a paren is popped, if the level becomes zero, * then return to the previous mode. *) let pop_paren state = let { current_parens = parens } = state in match parens with Some i -> let i = pred i in if i = 0 then pop_mode state else state.current_parens <- Some i | None -> () (* * Get the location of the current lexeme. * We assume it is all on one line. *) let lexeme_loc state lexbuf = let { current_line = line; current_off = off; current_file = file } = state in let schar = Lexing.lexeme_start lexbuf - off in let echar = Lexing.lexeme_end lexbuf - off in let loc = create_loc file line schar line echar in state.current_loc <- loc; loc (* * Raise a syntax error exception. *) let parse_error state = let lexbuf = state.current_lexbuf in let loc = lexeme_loc state lexbuf in let print_error buf = fprintf buf "unexpected token: %a" pp_print_token state.current_token in raise (OmakeException (loc_exp_pos loc, LazyError print_error)) let syntax_error state s lexbuf = let loc = lexeme_loc state lexbuf in raise (OmakeException (loc_exp_pos loc, SyntaxError s)) (* * Get the string in the lexbuf. *) let lexeme_string state lexbuf = let loc = lexeme_loc state lexbuf in let s = Lexing.lexeme lexbuf in s, loc (* * Process a name. *) let lexeme_name state lexbuf = let id, loc = lexeme_string state lexbuf in match id with "if" | "elseif" | "else" | "switch" | "match" | "select" | "case" | "default" | "section" | "include" | "extends" | "import" | "try" | "when" | "finally" | "raise" | "return" | "export" | "open" | "autoload" | "declare" | "value" | "while" | "do" | "set" -> TokKeyword (id, loc) | "catch" -> TokCatch (id, loc) | "class" -> TokClass (id, loc) | _ -> TokId (id, loc) (* * Get the escaped char. *) let lexeme_esc state lexbuf = let s, loc = lexeme_string state lexbuf in String.make 1 s.[1], loc (* * Single character variable. *) let lexeme_var state lexbuf = let s, loc = lexeme_string state lexbuf in let strategy, s = match s.[1] with '`' -> LazyApply, String.sub s 2 1 | ',' -> EagerApply, String.sub s 2 1 | _ -> NormalApply, String.sub s 1 1 in TokVar (strategy, s, loc) (* * Dollar sequence. *) let lexeme_dollar_pipe state lexbuf = let s, loc = lexeme_string state lexbuf in let len = String.length s in let strategy, off = if len >= 2 then match s.[1] with '`' -> LazyApply, 2 | ',' -> EagerApply, 2 | '|' -> NormalApply, 1 | _ -> syntax_error state ("illegal character: " ^ s) lexbuf else NormalApply, 1 in let s = String.sub s off (String.length s - off) in strategy, s, loc let lexeme_dollar state lexbuf = let s, loc = lexeme_string state lexbuf in let len = String.length s in if len >= 2 then match s.[1] with '`' -> TokDollar (s, LazyApply, loc) | ',' -> TokDollar (s, EagerApply, loc) | '$' -> TokString ("$", loc) | _ -> syntax_error state ("illegal character: " ^ s) lexbuf else TokDollar (s, NormalApply, loc) (* * Special character. * Keep track of paren nesting. *) let lexeme_char state lexbuf = let s, loc = lexeme_string state lexbuf in match s.[0] with '$' -> TokDollar (s, NormalApply, loc) | ':' -> TokColon (s, loc) | ',' -> TokComma (s, loc) | '=' -> TokEq (s, loc) | '(' -> push_paren state; TokLeftParen (s, loc) | ')' -> pop_paren state; TokRightParen (s, loc) | _ -> syntax_error state ("illegal character: " ^ s) lexbuf (* * Count the indentation in a string of characters. *) let indent_of_string s = let len = String.length s in let rec loop col i = if i = len then col else match s.[i] with '\r' | '\n' -> loop 0 (succ i) | '\t' -> loop ((col + 8) land (lnot 7)) (succ i) | _ -> loop (succ col) (succ i) in loop 0 0 (* * Use lexer positions. *) let lexeme_pos lexbuf = let s = Lexing.lexeme lexbuf in let pos1 = Lexing.lexeme_start_p lexbuf in let pos2 = Lexing.lexeme_end_p lexbuf in let { Lexing.pos_fname = file; Lexing.pos_lnum = line1; Lexing.pos_bol = bol1; Lexing.pos_cnum = cnum1 } = pos1 in let { Lexing.pos_lnum = line2; Lexing.pos_bol = bol2; Lexing.pos_cnum = cnum2 } = pos2 in let loc = create_loc (Lm_symbol.add file) line1 (cnum1 - bol1) line2 (cnum2 - bol2) in s, loc } (* * White space. * Line is terminated by '\n' or eof, * but be nice to DOS. *) let whitec = [' ' '\t' '\012'] let white = whitec + let opt_white = whitec * let nl = "\r\n" | ['\n' '\r'] let eol = nl | eof (* * Identifiers and keywords. *) let name_suffix = ['_' 'A'-'Z' 'a'-'z' '0'-'9' '-' '~' '@'] let name = name_suffix+ | '[' | ']' (* * Comments begin with a # symbol and continue to end-of-line *) let comment = '#' [^ '\n']* let comment_nl = comment nl let comment_eol = comment eol (* * Quotes. *) let squote = ['\'']+ let dquote = ['"']+ let pipe = ['|']+ let quote = squote | dquote | pipe (* * Special variables. *) let dollar = '$' ['`' ',' '$'] let paren_dollar = '$' ['`' ',']? let special_char = ['@' '&' '*' '<' '>' '^' '+' '?' 'A'-'Z' 'a'-'z' '_' '0'-'9' '~' '[' ']'] let special_var = paren_dollar special_char (* * Named colon separators. *) let special_colon = ':' name ':' (* * Escape sequences. *) let special_inline_char = ['$' '(' ')' ',' '='] let special_char = ['$' '(' ')' ':' ',' '='] let special_esc = ['#' '\\' '\'' '"' ' ' '\t'] let esc_quote = '\\' ['\\' '\'' '"'] let esc_char = '\\' (special_char | special_esc) let esc_line = '\\' eol (* * Other stuff that is not names or special characters. *) let other_char = [^ ' ' '\t' '\012' '\n' '\r' '_' 'A'-'Z' 'a'-'z' '0'-'9' '-' '~' '@' '$' '(' ')' ':' ',' '=' '\\' '#' '%' '[' ']' '.' '"' '\''] let other_drive = ['A'-'Z' 'a'-'z'] ':' ['\\' '/'] let other_prefix = other_char | other_drive let other_suffix = whitec | name_suffix | other_prefix let other = other_prefix other_suffix * (* * A string is anything but a quote, dollar, or backslash. *) let string_text = [^ '\'' '"' '$' '\\' '\r' '\n']+ let literal_text = [^ '\'' '"' '|' '\r' '\n']+ (* * Main lexer. *) rule lex_main state = parse nl | comment_nl { let loc = state.current_loc in let _ = lexeme_loc state lexbuf in set_next_line state lexbuf; TokEol loc } | white { let s, loc = lexeme_string state lexbuf in TokWhite (s, loc) } | name { lexeme_name state lexbuf } | '%' { let s, loc = lexeme_string state lexbuf in TokVar (NormalApply, s, loc) } | ['\'' '"'] { let id, loc = lexeme_string state lexbuf in let mode = ModeQuote id in push_mode state mode; TokBeginQuoteString (id, loc) } | '$' dquote { let id, loc = lexeme_string state lexbuf in let id = String.sub id 1 (pred (String.length id)) in let mode = ModeString id in push_mode state mode; TokBeginQuote ("", loc) } | '$' squote { let id, loc = lexeme_string state lexbuf in let id = String.sub id 1 (pred (String.length id)) in let s, loc = lex_literal state (Buffer.create 32) id lexbuf in TokStringQuote (s, loc) } | paren_dollar pipe { let strategy, id, loc = lexeme_dollar_pipe state lexbuf in let s, loc = lex_literal state (Buffer.create 32) id lexbuf in TokVarQuote (strategy, s, loc) } | special_var { lexeme_var state lexbuf } | dollar { lexeme_dollar state lexbuf } | special_char { lexeme_char state lexbuf } | "::" { let s, loc = lexeme_string state lexbuf in TokDoubleColon (s, loc) } | special_colon { let s, loc = lexeme_string state lexbuf in TokNamedColon (s, loc) } | "+=" { let s, loc = lexeme_string state lexbuf in TokEq (s, loc) } | '.' { let s, loc = lexeme_string state lexbuf in TokDot (s, loc) } | "[]" { let s, loc = lexeme_string state lexbuf in TokArray (s, loc) } | other { let s, loc = lexeme_string state lexbuf in TokString (s, loc) } | '\\' { let s, loc = lexeme_string state lexbuf in TokString (s, loc) } | esc_char { let s, loc = lexeme_esc state lexbuf in TokStringQuote (s, loc) } | esc_line { let loc = lexeme_loc state lexbuf in set_next_line state lexbuf; state.current_prompt <- "\\"; state.current_fill_ok <- true; TokString (" ", loc) } | eof { let loc = lexeme_loc state lexbuf in match state.current_token with TokEol _ | TokEof _ -> TokEof loc | _ -> TokEol loc } | _ { let s, loc = lexeme_string state lexbuf in syntax_error state ("illegal character: " ^ String.escaped s) lexbuf } (* * Inline text. We allow any text, but dollars are expanded, * escape sequences are allowed, and unescaped newlines are * not allowed (this is the normal shell definition of * a quoted string). *) and lex_quote state = parse nl { set_next_line state lexbuf; syntax_error state "unterminated string" lexbuf } | '\\' | string_text { let s, loc = lexeme_string state lexbuf in TokString (s, loc) } | ['\'' '"'] { let s, loc = lexeme_string state lexbuf in match state.current_mode with ModeQuote s' when s' = s -> pop_mode state; TokEndQuoteString (s, loc) | _ -> TokString (s, loc) } | "$$" { let loc = lexeme_loc state lexbuf in TokString ("$", loc) } | special_var { lexeme_var state lexbuf } | paren_dollar { push_dollar state ModeNormal; lexeme_dollar state lexbuf } | esc_quote { let s, loc = lexeme_esc state lexbuf in TokString (s, loc) } | esc_line { let loc = lexeme_loc state lexbuf in set_next_line state lexbuf; state.current_fill_ok <- true; TokString ("", loc) } | eof { syntax_error state "unterminated string" lexbuf } | _ { let s, loc = lexeme_string state lexbuf in syntax_error state ("illegal character in string constant: " ^ String.escaped s) lexbuf } (* * Inline text. We allow any text, but dollars are expanded. * Escape sequence other than an escaped newline are not * processed. *) and lex_string state = parse nl { let s, loc = lexeme_string state lexbuf in set_next_line state lexbuf; state.current_fill_ok <- true; TokString (s, loc) } | '\\' | string_text { let s, loc = lexeme_string state lexbuf in TokString (s, loc) } | quote { let s, loc = lexeme_string state lexbuf in match state.current_mode with ModeString s' when s' = s -> pop_mode state; TokEndQuote ("", loc) | _ -> TokString (s, loc) } | "$$" { let loc = lexeme_loc state lexbuf in TokString ("$", loc) } | special_var { lexeme_var state lexbuf } | paren_dollar { push_dollar state ModeNormal; lexeme_dollar state lexbuf } | esc_line { let loc = lexeme_loc state lexbuf in set_next_line state lexbuf; state.current_fill_ok <- true; TokString ("", loc) } | eof { syntax_error state "unterminated string" lexbuf } | _ { let s, loc = lexeme_string state lexbuf in syntax_error state ("illegal character: " ^ String.escaped s) lexbuf } (* * Text, but we don't expand variables. *) and lex_literal state buf equote = parse nl { let s, loc = lexeme_string state lexbuf in set_next_line state lexbuf; state.current_fill_ok <- true; Buffer.add_string buf s; lex_literal state buf equote lexbuf } | literal_text { let s, loc = lexeme_string state lexbuf in Buffer.add_string buf s; lex_literal state buf equote lexbuf } | quote { let s, loc = lexeme_string state lexbuf in if s = equote then let s = Buffer.contents buf in s, loc else begin Buffer.add_string buf s; lex_literal state buf equote lexbuf end } | eof { syntax_error state "unterminated string" lexbuf } | _ { let s, loc = lexeme_string state lexbuf in syntax_error state ("illegal character: " ^ String.escaped s) lexbuf } (* * Parse the whitespace at the beginning of the line. *) and lex_indent state = parse opt_white comment_eol | opt_white nl { set_next_line state lexbuf; state.current_fill_ok <- true; lex_indent state lexbuf } | opt_white { let s, loc = lexeme_string state lexbuf in let indent = indent_of_string s in indent } (* * For speed, define a scanner just for dependency files. *) and lex_deps = parse name | white | other_drive | '\\' { let s, loc = lexeme_pos lexbuf in TokString (s, loc) } | "\\:" { let _, loc = lexeme_pos lexbuf in TokString (":", loc) } | ':' { let s, loc = lexeme_pos lexbuf in TokColon (s, loc) } | ['"' '\''] { let s, loc = lexeme_pos lexbuf in let buf = Buffer.create 64 in Buffer.add_string buf s; lex_deps_quote s buf lexbuf; TokString (Buffer.contents buf, loc) } | nl | comment_nl { let _, loc = lexeme_pos lexbuf in TokEol loc } | esc_char { let s, loc = lexeme_pos lexbuf in let s = String.make 1 s.[1] in TokStringQuote (s, loc) } | esc_line { let _, loc = lexeme_pos lexbuf in TokWhite (" ", loc) } | _ { let s, loc = lexeme_pos lexbuf in TokString (s, loc) } | eof { let _, loc = lexeme_pos lexbuf in TokEof loc } and lex_deps_quote term buf = parse '\\' | '\\' ['"' '\''] | [^ '\\' '"' '\'']+ { let s, loc = lexeme_pos lexbuf in Buffer.add_string buf s; lex_deps_quote term buf lexbuf } | ['\'' '"'] { let s, loc = lexeme_pos lexbuf in Buffer.add_string buf s; if s <> term then lex_deps_quote term buf lexbuf } | _ | eof { raise Parsing.Parse_error } { (************************************************************************ * Prompts. *) (* * Lex and parse a line for the shell. *) let tabstop = 3 let prompt_ext s = s ^ "> " (* Prune the prompt to a reasonable length *) let prompt_prune prompt indent = let max_len = 8 in let s = String.make (indent * tabstop + max_len + 2) ' ' in let length = String.length prompt in if length > max_len then begin String.blit prompt 0 s 0 max_len; s.[max_len] <- '>' end else String.blit prompt 0 s 0 length; s let prompt_indent prompt root indent = if root then prompt else prompt_prune prompt indent let prompt_string state root nest e = let prompt = prompt_ext (key_of_exp e) in if state.is_interactive && root then printf "%s%s@?" (prompt_prune prompt nest) state.current_buffer; prompt (* * Parser for the body of an expression. *) let body_parser state body = match body with NoBody -> None | OptBody -> if state.is_interactive then None else Some Omake_ast_parse.shell | ColonBody -> Some Omake_ast_parse.shell | ArrayBody -> Some Omake_ast_parse.string (************************************************************************ * Lexing input. *) (* * Copy into the lexbuf. *) let lex_fill state buf len = let { current_mode = mode; current_buffer = buffer; current_index = index } = state in let length = String.length buffer in let amount = min (length - index) len in if amount = 0 then state.current_eof <- true else begin String.blit buffer index buf 0 amount; state.current_index <- index + amount end; amount (* * Refill the buffer using the readline function. *) let state_refill state = let { current_fill_ok = fill_ok; current_prompt = prompt; readline = readline; } = state in if fill_ok then let line = readline prompt in let line = if state.is_interactive && line = ".\n" then "" else line in state.current_buffer <- line; state.current_index <- 0; state.current_fill_ok <- false (* * Lexer function to refill the buffer. *) let lex_refill state buf len = let { current_buffer = buffer; current_index = index } = state in let length = String.length buffer in let amount = length - index in if amount = 0 then state_refill state; lex_fill state buf len (************************************************************************ * Main lexer. *) (* * Get the input. *) let lex_line state lexbuf = let tok = match state.current_mode with ModeNormal -> lex_main state lexbuf | ModeString _ -> lex_string state lexbuf | ModeQuote _ -> lex_quote state lexbuf in if !debug_lex then eprintf "Token: %a@." pp_print_token tok; state.current_token <- tok; tok (************************************************************************ * Parse main loop. *) (* * Make sure the lexbuf is valid. *) let parse_refill state prompt root nest = if state.current_eof then begin let lexbuf = Lexing.from_function (lex_refill state) in state.current_eof <- false; state.current_fill_ok <- true; state.current_prompt <- prompt_indent prompt root nest; state.current_lexbuf <- lexbuf; state.current_lexmode <- LexModeInitial; state.current_off <- 0 end (* * Get the current indentation level. *) let parse_indent state prompt root nest = parse_refill state prompt root nest; match state.current_lexmode with LexModeInitial -> let indent = (* Interactive shell ignores indentation *) if state.is_interactive then nest else lex_indent state state.current_lexbuf in if !debug_lex then eprintf "indent: %d@." indent; state.current_lexmode <- LexModeNormal indent; indent | LexModeNormal indent -> indent (* * Parse a single expression. *) let rec parse_exp state parse prompt root nest = let indent = parse_indent state prompt root nest in if indent > state.current_indent then syntax_error state "illegal indentation" state.current_lexbuf else if indent < state.current_indent then raise End_of_file else parse_exp_indent state parse prompt root nest and parse_exp_indent state parse prompt root nest = let code, e = try parse (lex_line state) state.current_lexbuf with Parsing.Parse_error -> parse_error state in let code = scan_body_flag code e in let parse = body_parser state code in match parse with Some parse -> let prompt = prompt_string state root nest e in let body = parse_body state parse prompt nest in let e = update_body e code body in (match can_continue e with Some prompt -> (try e :: parse_exp state parse (prompt_ext prompt) false nest with End_of_file -> [e]) | None -> [e]) | None -> [e] and parse_body state parse prompt nest = let nest = succ nest in let indent = parse_indent state prompt false nest in if indent > state.current_indent then begin push_mode state ModeNormal; state.current_indent <- indent; parse_body_indent state parse prompt nest [] end else [] and parse_body_indent state parse prompt nest el = let e = try ParseExp (parse_exp state parse prompt false nest) with End_of_file -> if state.is_interactive then printf ".@."; pop_mode state; ParseEOF | OmakeException _ as exn when state.is_interactive -> eprintf "%a@." pp_print_exn exn; ParseError in match e with ParseExp e -> parse_body_indent state parse prompt nest (List.rev_append e el) | ParseError -> parse_body_indent state parse prompt nest el | ParseEOF -> List.rev el (* * Parse a file. *) let parse_ast name = let inx = open_in name in let readline prompt = try input_line inx ^ "\n" with End_of_file -> "" in let state = create name readline in let el = parse_body_indent state Omake_ast_parse.shell "" 0 [] in close_in inx; el (* * Parse a string. *) let parse_string s = let len = String.length s in let index = ref 0 in let readline prompt = let start = !index in let rec search i = if i = len then if start < i then begin index := i; String.sub s start (i - start) ^ "\n" end else raise End_of_file else if s.[i] = '\n' then begin index := i + 1; String.sub s start (i - start + 1) end else search (succ i) in search start in let state = create "-" readline in parse_body_indent state Omake_ast_parse.shell "" 0 [] (* * Parse an expression. *) let create_shell () = let state = create "-" Omake_readline.readline in state.is_interactive <- Omake_readline.is_interactive (); state (* * Copy the state, if an exception happens, then * restore the initial state. *) let parse_shell state prompt = let stack = save_mode state in state.current_fill_ok <- true; try parse_exp state Omake_ast_parse.shell prompt true 0 with exn -> Omake_readline.flush (); restore_mode state stack; state.current_buffer <- ""; state.current_index <- 0; raise exn (* * Just dependency analysis. *) let parse_deps name = let inx = open_in name in let lexbuf = Lexing.from_channel inx in let deps = try Omake_ast_parse.deps lex_deps lexbuf with exn -> close_in inx; eprintf "%s: char %d: scanner dependency syntax error@." name (Lexing.lexeme_end lexbuf); raise exn in close_in inx; deps } (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/env/omake_ir_semant.mli0000664000152300015230000000241010657124511016351 0ustar jyhjyh(* * Check a program for semantic validity. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_ir open Omake_env val build_prog : venv -> exp -> exp (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/env/omake_ir_ast.mli0000664000152300015230000000436410615471254015666 0ustar jyhjyh(* * Compile the AST to IR. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_node (* * Parsing environments. *) type penv (* * Parse a variable declaration. *) val parse_declaration : venv -> pos -> loc -> var list -> method_name (* * Environment for parsing AST files. *) type senv_open_file = string -> pos -> loc -> Node.t * senv (* * Internal function for converting string expressions. *) val build_string : penv -> Omake_ast.exp -> pos -> penv * string_exp (* * Create a parsing environment for the given file. * penv_create (file, pervasives_id) *) val penv_create : senv_open_file -> venv -> Node.t -> penv val penv_class_names : penv -> symbol list * senv val penv_of_vars : senv_open_file -> venv -> Node.t -> senv -> penv (* * Compile an AST program. *) val compile_string : penv -> Omake_ast.exp -> pos -> penv * string_exp val compile_exp : penv -> Omake_ast.exp -> penv * ir val compile_exp_list : penv -> Omake_ast.exp list -> penv * ir val compile_prog : penv -> Omake_ast.prog -> penv * ir (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/env/OMakefile0000664000152300015230000000265410615471254014305 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave ../util ../exec ../magic ../ast ../ir FILES[] = omake_env omake_exn_print omake_ast_parse omake_ast_lex omake_ir_ast omake_ir_semant omake_command_digest # # The yacc parser file is generated # GENPARSE = omake_gen_parse .SCANNER: scan-ocaml-omake_gen_parse.ml: MakeOCamlProgram($(GENPARSE), $(GENPARSE)) $(GENPARSE)$(EXE): # # All generated files # GENERATED_FILES[] = omake_ast_lex.ml omake_ast_parse.mly omake_ast_parse.mli omake_ast_parse.ml LocalOCamlGeneratedFiles($(GENERATED_FILES)) omake_ast_parse.mly: $(GENPARSE)$(EXE) omake_ast_parse.input ./$(GENPARSE) -o $@ omake_ast_parse.input clean: $(CLEAN) $(GENERATED_FILES) $(GENPARSE)$(EXE) $(GENPARSE).opt $(GENPARSE).run # # The final library # MakeOCamlLibrary(env, $(FILES)) ######################################################################## # Generate the Makefile # MAKEFILE_TEXT += $""" GENPARSE = $(GENPARSE) omake_ast_parse.mly: $$(GENPARSE)$$(EXE) omake_ast_parse.input $$(DOT)$$(GENPARSE) -o $$@ omake_ast_parse.input omake_ast_lex.ml: omake_ast_lex.mll omake_ast_lex.cmo: omake_ast_lex.cmi omake_ast_parse.ml: omake_ast_parse.mly omake_ast_parse.mli: omake_ast_parse.mly omake_ast_parse.cmo: omake_ast_parse.cmi """ MakeLinkFiles(omake_ast_lex.mll omake_ast_parse.input) MakeDontLink($(GENERATED_FILES)) MakeOCamlDepend($(FILES), magic.cma) MakeMakefile() omake-0.9.8.5/src/env/omake_env.ml0000664000152300015230000027352310655734556015044 0ustar jyhjyh(* * The environment for evaluating programs. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@cs.caltech.edu}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_debug open Lm_symbol open Lm_int_set open Lm_location open Lm_string_set open Lm_string_util open Omake_ir open Omake_pos open Omake_util open Omake_wild open Omake_node open Omake_exec open Omake_state open Omake_symbol open Omake_ir_print open Omake_node_sig open Omake_print_util open Omake_shell_type open Omake_command_type open Omake_ir_free_vars open Omake_handle_table open Omake_value_print open Omake_value_type open Omake_options open Omake_var module Pos = MakePos (struct let name = "Omake_env" end) open Pos;; (* * Debugging. *) let debug_scanner = create_debug (**) { debug_name = "scanner"; debug_description = "Display debugging information for scanner selection"; debug_value = false } (* * Debugging. *) let debug_implicit = create_debug (**) { debug_name = "implicit"; debug_description = "Display debugging information for implicit rule selection"; debug_value = false } (* * Debug file database (.omc files). *) let debug_db = Lm_db.debug_db (* * Command lists have source arguments. *) type command_info = { command_env : venv; command_sources : Node.t list; command_values : value list; command_body : command list } (* * An implicit rule with a body. * * In an implicit rule, we compile the targets/sources * to wild patterns. *) and irule = { irule_loc : loc; irule_multiple : rule_multiple; irule_targets : StringSet.t option; irule_patterns : wild_in_patt list; irule_locks : source_core source list; irule_sources : source_core source list; irule_scanners : source_core source list; irule_values : value list; irule_body : command list } (* * An implicit dependency. There is no body, but * it may have value dependencies. *) and inrule = { inrule_loc : loc; inrule_multiple : rule_multiple; inrule_patterns : wild_in_patt list; inrule_locks : source_core source list; inrule_sources : source_core source list; inrule_scanners : source_core source list; inrule_values : value list } (* * Explicit rules. *) and erule = { rule_loc : loc; rule_env : venv; rule_target : Node.t; rule_effects : NodeSet.t; rule_locks : NodeSet.t; rule_sources : NodeSet.t; rule_scanners : NodeSet.t; rule_match : string option; rule_multiple : rule_multiple; rule_commands : command_info list } (* * A listing of all the explicit rules. * * explicit_targets : the collapsed rules for each explicit target * explicit_deps : the table of explicit rules that are just dependencies * explicit_rules : the table of all individual explicit rules * explicit_directories : the environment for each directory in the project *) and erule_info = { explicit_targets : erule NodeTable.t; explicit_deps : (NodeSet.t * NodeSet.t * NodeSet.t) NodeTable.t; (* locks, sources, scanners *) explicit_rules : erule NodeMTable.t; explicit_directories : venv DirTable.t } (* * An ordering rule. * For now, this just defines an extra dependency * of the form: patt1 -> patt2 * This means that if a file depends on patt1, * then it also depends on patt2. *) and orule = { orule_loc : loc; orule_name : symbol; orule_pattern : wild_in_patt; orule_sources : source_core list } and ordering_info = orule list (* * A static rule. *) and srule = { srule_loc : loc; srule_static : bool; srule_env : venv; srule_key : value; srule_deps : NodeSet.t; srule_vals : value list; srule_exp : exp } and static_info = StaticRule of srule | StaticValue of obj (* * The environment contains three scopes: * 1. The dynamic scope * 2. The current object * 3. The static scope * Lookup occurs in that order, unless the variables * have been defined otherwise. * * Each function has its own static scope. * The dynamic scope comes from the caller. *) and venv = { venv_dynamic : env; venv_this : obj; venv_static : env; venv_inner : venv_inner } and venv_inner = { venv_environ : string SymbolTable.t; venv_dir : Dir.t; venv_phony : NodeSet.t; venv_implicit_deps : inrule list; venv_implicit_rules : irule list; venv_options : omake_options; venv_globals : venv_globals; venv_mount : Mount.t; venv_included_files : NodeSet.t } and venv_globals = { venv_global_index : int; (* Execution service *) venv_exec : exec; (* File cache *) venv_cache : Omake_cache.t; (* Mounting functions *) venv_mount_info : mount_info; (* Values from handles *) venv_environments : venv HandleTable.t; (* The set of files we have ever read *) mutable venv_files : NodeSet.t; (* Save the environment for each directory in the project *) mutable venv_directories : venv DirTable.t; mutable venv_excluded_directories : DirSet.t; (* All the phony targets we have ever generated *) mutable venv_phonies : PreNodeSet.t; (* Explicit rules are global *) mutable venv_explicit_rules : erule list; mutable venv_explicit_targets : erule NodeTable.t; mutable venv_explicit_new : erule list; (* Ordering rules *) mutable venv_ordering_rules : orule list; mutable venv_orders : StringSet.t; (* Static rules *) mutable venv_memo_rules : static_info ValueTable.t; (* Cached values for files *) mutable venv_ir_files : ir NodeTable.t; mutable venv_object_files : obj NodeTable.t; (* Cached values for static sections *) mutable venv_static_values : obj SymbolTable.t NodeTable.t; mutable venv_modified_values : obj SymbolTable.t NodeTable.t; (* Cached values for the target_is_buildable function *) mutable venv_target_is_buildable : bool NodeTable.t; mutable venv_target_is_buildable_proper : bool NodeTable.t; (* The state right after Pervasives is evaluated *) mutable venv_pervasives_vars : senv; mutable venv_pervasives_obj : obj } (* * Type of execution servers. *) and pid = InternalPid of int | ExternalPid of int | ResultPid of int * venv * value and exec = (arg_command_line, pid, value) Exec.t (* * Execution service. *) and arg_command_inst = (exp, arg_pipe, value) poly_command_inst and arg_command_line = (venv, exp, arg_pipe, value) poly_command_line and string_command_inst = (exp, string_pipe, value) poly_command_inst and string_command_line = (venv, exp, string_pipe, value) poly_command_line and apply = venv -> Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> (symbol * string) list -> value list -> int * venv * value and value_cmd = (unit, value list, value list) poly_cmd and value_apply = (value list, value list, apply) poly_apply and value_group = (unit, value list, value list, value list, apply) poly_group and value_pipe = (unit, value list, value list, value list, apply) poly_pipe and arg_cmd = (arg cmd_exe, arg, arg) poly_cmd and arg_apply = (value, arg, apply) poly_apply and arg_group = (arg cmd_exe, arg, value, arg, apply) poly_group and arg_pipe = (arg cmd_exe, arg, value, arg, apply) poly_pipe and string_cmd = (simple_exe, string, string) poly_cmd and string_apply = (value, string, apply) poly_apply and string_group = (simple_exe, string, value, string, apply) poly_group and string_pipe = (simple_exe, string, value, string, apply) poly_pipe (* * Error during translation. *) exception Break of loc * venv (* * Now the stuff that is really global, not saved in venv. *) module IntCompare = struct type t = int let compare = (-) end;; module IntTable = Lm_map.LmMake (IntCompare);; type prim_fun_data = venv -> pos -> loc -> value list -> venv * value type venv_runtime = { mutable venv_channel_index : int; mutable venv_channels : (prim_channel * channel_data) IntTable.t; mutable venv_primitives : prim_fun_data SymbolTable.t } let venv_runtime = { venv_channel_index = 0; venv_channels = IntTable.empty; venv_primitives = SymbolTable.empty } (* * Command line parsing. *) type lexer = string -> int -> int -> int option type tok = TokString of value | TokToken of string | TokGroup of tok list (* * Inclusion scope is usually Pervasives, * but it may include everything in scope. *) type include_scope = IncludePervasives | IncludeAll (************************************************************************ * Access to the globals. * This actually performs some computation in 0.9.9 *) let venv_globals venv = venv.venv_inner.venv_globals (* * Map functions. *) let check_map_key = ValueCompare.check let venv_map_empty = ValueTable.empty let venv_map_add map pos v1 v2 = ValueTable.add map (check_map_key pos v1) v2 let venv_map_remove map pos v1 = ValueTable.remove map (check_map_key pos v1) let venv_map_find map pos v = try ValueTable.find map (check_map_key pos v) with Not_found -> raise (OmakeException (pos, UnboundValue v)) let venv_map_mem map pos v = ValueTable.mem map (check_map_key pos v) let venv_map_iter = ValueTable.iter let venv_map_map = ValueTable.mapi let venv_map_fold = ValueTable.fold let venv_map_length = ValueTable.cardinal (************************************************************************ * Printing. *) let rec pp_print_command buf command = match command with CommandSection (arg, fv, e) -> fprintf buf "@[section %a@ %a@]" pp_print_value arg pp_print_exp_list e | CommandValue (_, v) -> pp_print_value buf v and pp_print_commands buf commands = List.iter (fun command -> fprintf buf "@ %a" pp_print_command command) commands and pp_print_command_info buf info = let { command_env = venv; command_sources = sources; command_body = commands } = info in fprintf buf "@[@[{@ command_dir = %a;@ @[command_sources =%a@]@ @[command_body =%a@]@]@ }@]" (**) pp_print_dir venv.venv_inner.venv_dir pp_print_node_list sources pp_print_commands commands and pp_print_command_info_list buf infos = List.iter (fun info -> fprintf buf "@ %a" pp_print_command_info info) infos and pp_print_rule buf erule = let { rule_target = target; rule_effects = effects; rule_locks = locks; rule_sources = sources; rule_scanners = scanners; rule_commands = commands } = erule in fprintf buf "@[@[rule {"; fprintf buf "@ target = %a" pp_print_node target; fprintf buf "@ @[effects =%a@]" pp_print_node_set effects; fprintf buf "@ @[locks =%a@]" pp_print_node_set locks; fprintf buf "@ @[sources =%a@]" pp_print_node_set sources; fprintf buf "@ @[scanners =%a@]" pp_print_node_set scanners; fprintf buf "@ @[commands =%a@]" pp_print_command_info_list commands; fprintf buf "@]@ }@]" let pp_print_explicit_rules buf venv = fprintf buf "@[Explicit rules:"; List.iter (fun erule -> fprintf buf "@ %a" pp_print_rule erule) venv.venv_inner.venv_globals.venv_explicit_rules; fprintf buf "@]" (************************************************************************ * Pipeline printing. *) (* * Token printing. *) let rec pp_print_tok buf tok = match tok with TokString v -> pp_print_value buf v | TokToken s -> fprintf buf "$%s" s | TokGroup toks -> fprintf buf "(%a)" pp_print_tok_list toks and pp_print_tok_list buf toks = match toks with [tok] -> pp_print_tok buf tok | tok :: toks -> pp_print_tok buf tok; pp_print_char buf ' '; pp_print_tok_list buf toks | [] -> () let pp_print_simple_exe buf exe = match exe with ExeString s -> pp_print_string buf s | ExeQuote s -> fprintf buf "\\%s" s | ExeNode node -> pp_print_node buf node (* * Pipes based on strings. *) module PrintString = struct type arg_command = string type arg_apply = value type arg_other = string type exe = simple_exe let pp_print_arg_command = pp_arg_data_string let pp_print_arg_apply = pp_print_value let pp_print_arg_other = pp_arg_data_string let pp_print_exe = pp_print_simple_exe end;; module PrintStringPipe = MakePrintPipe (PrintString);; module PrintStringv = struct type argv = string_pipe let pp_print_argv = PrintStringPipe.pp_print_pipe end;; module PrintStringCommand = MakePrintCommand (PrintStringv);; let pp_print_string_pipe = PrintStringPipe.pp_print_pipe let pp_print_string_command_inst = PrintStringCommand.pp_print_command_inst let pp_print_string_command_line = PrintStringCommand.pp_print_command_line let pp_print_string_command_lines = PrintStringCommand.pp_print_command_lines (* * Pipes based on arguments. *) module PrintArg = struct type arg_command = Omake_command_type.arg type arg_apply = value type arg_other = arg_command type exe = arg_command cmd_exe let pp_print_arg_command = Omake_command_type.pp_print_arg let pp_print_arg_apply = pp_print_simple_value let pp_print_arg_other = pp_print_arg_command let pp_print_exe buf exe = match exe with CmdArg arg -> pp_print_arg_command buf arg | CmdNode node -> pp_print_node buf node end;; module PrintArgPipe = MakePrintPipe (PrintArg);; module PrintArgv = struct type argv = arg_pipe let pp_print_argv = PrintArgPipe.pp_print_pipe end;; module PrintArgCommand = MakePrintCommand (PrintArgv);; let pp_print_arg_pipe = PrintArgPipe.pp_print_pipe let pp_print_arg_command_inst = PrintArgCommand.pp_print_command_inst let pp_print_arg_command_line = PrintArgCommand.pp_print_command_line let pp_print_arg_command_lines = PrintArgCommand.pp_print_command_lines (************************************************************************ * Utilities. *) (* * Don't make command info if there are no commands. *) let make_command_info venv sources values body = match values, body with [], [] -> [] | _ -> [{ command_env = venv; command_sources = sources; command_values = values; command_body = body }] (* * Check if the commands are trivial. *) let commands_are_trivial commands = List.for_all (fun command -> command.command_body = []) commands (* * Multiple flags. *) let is_multiple_rule = function RuleMultiple | RuleScannerMultiple -> true | RuleSingle | RuleScannerSingle -> false let is_scanner_rule = function RuleScannerSingle | RuleScannerMultiple -> true | RuleSingle | RuleMultiple -> false let rule_kind = function RuleScannerSingle | RuleScannerMultiple -> RuleScanner | RuleSingle | RuleMultiple -> RuleNormal (************************************************************************ * Handles. *) let venv_add_environment venv = HandleTable.add venv.venv_inner.venv_globals.venv_environments venv let venv_find_environment venv pos hand = try HandleTable.find venv.venv_inner.venv_globals.venv_environments hand with Not_found -> let pos = string_pos "venv_find_environment" pos in raise (OmakeException (pos, StringError "unbound environment")) (************************************************************************ * Channels. *) (* * Add a channel slot. *) let venv_add_channel venv data = let { venv_channel_index = index; venv_channels = channels } = venv_runtime in let data = Lm_channel.set_id data index; ChannelValue data in let channel = { channel_id = index; channel_data = data } in venv_runtime.venv_channels <- IntTable.add channels index (channel, data); venv_runtime.venv_channel_index <- succ index; channel let add_channel file kind mode binary fd = Lm_channel.create file kind mode binary (Some fd) let venv_stdin = venv_add_channel () (add_channel "" Lm_channel.PipeChannel Lm_channel.InChannel false Unix.stdin) let venv_stdout = venv_add_channel () (add_channel "" Lm_channel.PipeChannel Lm_channel.OutChannel false Unix.stdout) let venv_stderr = venv_add_channel () (add_channel "" Lm_channel.PipeChannel Lm_channel.OutChannel false Unix.stderr) (* * A formatting channel. *) let venv_add_formatter_channel venv fmt = let { venv_channel_index = index; venv_channels = channels } = venv_runtime in let fd = Lm_channel.create "formatter" Lm_channel.FileChannel Lm_channel.OutChannel true None in let () = Lm_channel.set_id fd index in let data = ChannelValue fd in let channel = { channel_id = index; channel_data = data } in let reader s off len = raise (Unix.Unix_error (Unix.EINVAL, "formatter-channel", "")) in let writer s off len = Format.pp_print_string fmt (String.sub s off len); len in Lm_channel.set_io_functions fd reader writer; venv_runtime.venv_channels <- IntTable.add channels index (channel, data); venv_runtime.venv_channel_index <- succ index; channel (* * Get the channel. *) let venv_channel_data channel = match channel with { channel_data = ChannelDelayed; channel_id = id } -> (try let _, data = IntTable.find venv_runtime.venv_channels id in channel.channel_data <- data; data with Not_found -> (* This should never happen, because we close channels on marshaling *) raise (Invalid_argument "expand_channel")) | { channel_data = data } -> data (* * When a channel is closed, close the buffers too. *) let venv_close_channel venv pos channel = try let () = match venv_channel_data channel with ChannelClosed -> () | ChannelValue channel -> Lm_channel.close channel | ChannelDelayed -> raise (Invalid_argument "venv_close_channel") in channel.channel_data <- ChannelClosed; venv_runtime.venv_channels <- IntTable.remove venv_runtime.venv_channels channel.channel_id with Not_found -> (* Fail silently *) () (* * Get the channel. *) let venv_find_channel venv pos channel = let pos = string_pos "venv_find_in_channel" pos in match venv_channel_data channel with ChannelClosed -> raise (OmakeException (pos, StringError "channel is closed")) | ChannelValue channel -> channel | ChannelDelayed -> raise (Invalid_argument "venv_find_in_channel") (* * Finding by identifiers. *) let venv_find_channel_id venv pos id = let channel, _ = try IntTable.find venv_runtime.venv_channels id with Not_found -> raise (OmakeException (pos, StringIntError ("channel is closed", id))) in channel (************************************************************************ * Primitive values. *) (* * Allocate a function primitive. *) let venv_add_prim_fun venv name data = venv_runtime.venv_primitives <- SymbolTable.add venv_runtime.venv_primitives name data; name (* * Look up the primitive value if we haven't seen it already. *) let venv_apply_prim_fun name venv pos loc args = let f = try SymbolTable.find venv_runtime.venv_primitives name with Not_found -> raise (OmakeException (loc_pos loc pos, UnboundVar name)) in f venv pos loc args (************************************************************************ * Target cache. * * To keep this up-to-date, entries are added for explicit targets, * and the cache is flushed whenever an implicit rule is added. *) let venv_find_target_is_buildable_exn venv target = NodeTable.find venv.venv_inner.venv_globals.venv_target_is_buildable target let venv_find_target_is_buildable_proper_exn venv target = NodeTable.find venv.venv_inner.venv_globals.venv_target_is_buildable_proper target let venv_add_target_is_buildable venv target flag = let globals = venv.venv_inner.venv_globals in globals.venv_target_is_buildable <- NodeTable.add globals.venv_target_is_buildable target flag let venv_add_target_is_buildable_proper venv target flag = let globals = venv.venv_inner.venv_globals in globals.venv_target_is_buildable_proper <- NodeTable.add globals.venv_target_is_buildable_proper target flag let venv_add_explicit_targets venv rules = let globals = venv.venv_inner.venv_globals in let { venv_target_is_buildable = cache; venv_target_is_buildable_proper = cache_proper } = globals in let cache = List.fold_left (fun cache erule -> NodeTable.add cache erule.rule_target true) cache rules in let cache_proper = List.fold_left (fun cache erule -> NodeTable.add cache erule.rule_target true) cache_proper rules in globals.venv_target_is_buildable <- cache; globals.venv_target_is_buildable_proper <- cache_proper let venv_flush_target_cache venv = let globals = venv.venv_inner.venv_globals in globals.venv_target_is_buildable <- NodeTable.empty; globals.venv_target_is_buildable_proper <- NodeTable.empty (* * Save explicit rules. *) let venv_save_explicit_rules venv loc rules = let globals = venv.venv_inner.venv_globals in globals.venv_explicit_new <- List.rev_append rules globals.venv_explicit_new; venv_add_explicit_targets venv rules (* * Add an explicit dependency. *) let venv_add_explicit_dep venv loc target source = let erule = { rule_loc = loc; rule_env = venv; rule_target = target; rule_effects = NodeSet.singleton target; rule_sources = NodeSet.singleton source; rule_locks = NodeSet.empty; rule_scanners = NodeSet.empty; rule_match = None; rule_multiple = RuleSingle; rule_commands = [] } in ignore (venv_save_explicit_rules venv loc [erule]) (* * Phony names. *) let venv_add_phony venv loc names = if names = [] then venv else let inner = venv.venv_inner in let { venv_dir = dir; venv_phony = phony } = inner in let globals = venv_globals venv in let phonies = globals.venv_phonies in let phony, phonies = List.fold_left (fun (phony, phonies) name -> let name = match name with TargetNode _ -> raise (OmakeException (loc_exp_pos loc, StringError ".PHONY arguments should be names")) | TargetString s -> s in let gnode = Node.create_phony_global name in let dnode = Node.create_phony_dir dir name in let phony = NodeSet.add phony dnode in let phonies = PreNodeSet.add phonies (Node.dest gnode) in let phonies = PreNodeSet.add phonies (Node.dest dnode) in venv_add_explicit_dep venv loc gnode dnode; phony, phonies) (phony, phonies) names in let inner = { inner with venv_phony = phony } in let venv = { venv with venv_inner = inner } in globals.venv_phonies <- phonies; venv (************************************************************************ * Static values. *) (* * During marshaling, set all the refs to None. *) let venv_marshal venv f x = let { venv_channels = channels; venv_primitives = primitives } = venv_runtime in (* Prepare by closing channels, and resetting function data *) let prepare () = IntTable.iter (fun _ (channel, _) -> if channel.channel_id <= 2 then channel.channel_data <- ChannelDelayed else channel.channel_data <- ChannelClosed) channels in (* Restore by reopening channels and readding function data *) let restore () = IntTable.iter (fun _ (channel, data) -> channel.channel_data <- data) channels in prepare (); try let y = f x in restore (); y with exn -> restore (); raise exn (* * Static loading. *) module type StaticSig = sig type in_handle type out_handle (* * Open a file. The Node.t is the name of the _source_ file, * not the .omc file. We'll figure out where the .omc file * goes on our own. Raises Not_found if the source file * can't be found. * The implementation will make sure all the locking/unlocking is done properly. *) val read : venv -> Node.t -> (in_handle -> 'a) -> 'a val rewrite : in_handle -> (out_handle -> 'a) -> 'a (* * Fetch the two kinds of entries. *) val find_ir : in_handle -> ir val find_object : in_handle -> obj val get_ir : out_handle -> ir val get_object : out_handle -> obj (* * Add the two kinds of entries. *) val add_ir : out_handle -> ir -> unit val add_object : out_handle -> obj -> unit end (* * For static values, we access the db a bit more directly *) module type InternalStaticSig = sig include StaticSig val write : venv -> Node.t -> (out_handle -> 'a) -> 'a val find_values : in_handle -> obj SymbolTable.t val add_values : out_handle -> obj SymbolTable.t -> unit end module Static : InternalStaticSig = struct (************************************************************************ * Types. *) (* * A .omc file. *) type t = { db_file : Unix.file_descr option; db_name : Node.t; db_digest : string; db_env : venv; db_flush_ir : bool; db_flush_static : bool } type in_handle = t type out_handle = t (* * Tags for the various kinds of entries. *) let ir_tag = 0, Lm_db.HostIndependent let object_tag = 1, Lm_db.HostDependent let values_tag = 2, Lm_db.HostDependent (************************************************************************ * Operations. *) (* * Open a file. The Node.t is the name of the _source_ file, * not the .omc file. We'll figure out where the .omc file * goes on our own. *) let create_mode mode venv source = (* Get the source digest *) let cache = venv.venv_inner.venv_globals.venv_cache in let digest = match Omake_cache.stat cache source with Some digest -> digest | None -> raise Not_found in (* * Open the result file. The lock_cache_file function * will try to use the target directory first, and * fall back to ~/.omake/cache if that is not writable. *) let source_name = Node.absname source in let dir = Filename.dirname source_name in let name = Filename.basename source_name in let name = if Filename.check_suffix name ".om" then Filename.chop_suffix name ".om" else name in let name = name ^ ".omc" in let target_fd = try let target_name, target_fd = Omake_state.get_cache_file dir name in if !debug_db then eprintf "@[Omake_db.create:@ %a --> %s@]@." pp_print_node source target_name; Unix.set_close_on_exec target_fd; Omake_state.lock_file target_fd mode; Some target_fd with Unix.Unix_error _ | Failure _ -> eprintf "@[OMake warning: could not create and/or lock a cache file for@ %s@]@." source_name; None in { db_file = target_fd; db_name = source; db_digest = digest; db_env = venv; db_flush_ir = opt_flush_include venv.venv_inner.venv_options; db_flush_static = opt_flush_static venv.venv_inner.venv_options; } (* * Restart with a write lock. *) let rewrite info f = match info.db_file with Some fd -> ignore (Unix.lseek fd 0 Unix.SEEK_SET: int); Omake_state.lock_file fd Unix.F_ULOCK; Omake_state.lock_file fd Unix.F_LOCK; let finish () = ignore (Unix.lseek fd 0 Unix.SEEK_SET: int); Omake_state.lock_file fd Unix.F_ULOCK; Omake_state.lock_file fd Unix.F_RLOCK in begin try let result = f info in finish (); result with exn -> finish (); raise exn end | None -> f info (* * Close the file. *) let close info = match info with { db_file = Some fd; db_name = name } -> if !debug_db then eprintf "Omake_db.close: %a@." pp_print_node name; Unix.close fd | { db_file = None } -> () let perform mode venv source f = let info = create_mode mode venv source in try let result = f info in close info; result with exn -> close info; raise exn let read venv source f = perform Unix.F_RLOCK venv source f let write venv source f = perform Unix.F_LOCK venv source f (* * Add the three kinds of entries. *) let add_ir info ir = match info with { db_file = Some fd; db_name = name; db_digest = digest; db_env = venv } -> if !debug_db then eprintf "Omake_db.add_ir: %a@." pp_print_node name; venv_marshal venv (fun () -> Lm_db.add fd (Node.absname name) ir_tag Omake_magic.ir_magic digest ir) () | { db_file = None } -> () let add_object info obj = match info with { db_file = Some fd; db_name = name; db_digest = digest; db_env = venv } -> if !debug_db then eprintf "Omake_db.add_object: %a@." pp_print_node name; venv_marshal venv (fun () -> Lm_db.add fd (Node.absname name) object_tag Omake_magic.obj_magic digest obj) () | { db_file = None } -> () let add_values info obj = match info with { db_file = Some fd; db_name = name; db_digest = digest; db_env = venv } -> if !debug_db then eprintf "Omake_db.add_values: %a@." pp_print_node name; venv_marshal venv (fun () -> Lm_db.add fd (Node.absname name) values_tag Omake_magic.obj_magic digest obj) () | { db_file = None } -> () (* * Fetch the three kinds of entries. *) let find_ir = function { db_file = Some fd; db_name = name; db_digest = digest; db_flush_ir = false } -> if !debug_db then eprintf "Omake_db.find_ir: finding: %a@." pp_print_node name; let ir = Lm_db.find fd (Node.absname name) ir_tag Omake_magic.ir_magic digest in if !debug_db then eprintf "Omake_db.find_ir: found: %a@." pp_print_node name; ir | { db_file = None } | { db_flush_ir = true } -> raise Not_found let find_object = function { db_file = Some fd; db_name = name; db_digest = digest; db_flush_ir = false; db_flush_static = false } -> if !debug_db then eprintf "Omake_db.find_object: finding: %a@." pp_print_node name; let obj = Lm_db.find fd (Node.absname name) object_tag Omake_magic.obj_magic digest in if !debug_db then eprintf "Omake_db.find_object: found: %a@." pp_print_node name; obj | { db_file = None } | { db_flush_ir = true } | { db_flush_static = true } -> raise Not_found let find_values = function { db_file = Some fd; db_name = name; db_digest = digest; db_flush_ir = false; db_flush_static = false } -> if !debug_db then eprintf "Omake_db.find_values: finding: %a@." pp_print_node name; let obj = Lm_db.find fd (Node.absname name) values_tag Omake_magic.obj_magic digest in if !debug_db then eprintf "Omake_db.find_values: found: %a@." pp_print_node name; obj | { db_file = None } | { db_flush_ir = true } | { db_flush_static = true } -> raise Not_found let get_ir = find_ir let get_object = find_object end;; (* * Cached object files. *) let venv_find_ir_file_exn venv node = NodeTable.find venv.venv_inner.venv_globals.venv_ir_files node let venv_add_ir_file venv node obj = let globals = venv.venv_inner.venv_globals in globals.venv_ir_files <- NodeTable.add globals.venv_ir_files node obj let venv_find_object_file_exn venv node = NodeTable.find venv.venv_inner.venv_globals.venv_object_files node let venv_add_object_file venv node obj = let globals = venv.venv_inner.venv_globals in globals.venv_object_files <- NodeTable.add globals.venv_object_files node obj (************************************************************************ * Variables. *) (* * Default empty object. *) let venv_empty_object = SymbolTable.empty (* * For variables, try to look them up as 0-arity functions first. *) let venv_find_var_private_exn venv v = SymbolTable.find venv.venv_static v let venv_find_var_dynamic_exn venv v = SymbolTable.find venv.venv_dynamic v let venv_find_var_protected_exn venv v = try SymbolTable.find venv.venv_this v with Not_found -> try SymbolTable.find venv.venv_dynamic v with Not_found -> try SymbolTable.find venv.venv_static v with Not_found -> ValString (SymbolTable.find venv.venv_inner.venv_environ v) let venv_find_var_global_exn venv v = try SymbolTable.find venv.venv_dynamic v with Not_found -> try SymbolTable.find venv.venv_this v with Not_found -> try SymbolTable.find venv.venv_static v with Not_found -> ValString (SymbolTable.find venv.venv_inner.venv_environ v) let venv_find_var_exn venv v = match v with VarPrivate (_, v) -> venv_find_var_private_exn venv v | VarThis (_, v) -> venv_find_var_protected_exn venv v | VarVirtual (_, v) -> venv_find_var_dynamic_exn venv v | VarGlobal (_, v) -> venv_find_var_global_exn venv v let venv_get_var venv pos v = try venv_find_var_exn venv v with Not_found -> let pos = string_pos "venv_get_var" pos in raise (OmakeException (pos, UnboundVarInfo v)) let venv_find_var venv pos loc v = try venv_find_var_exn venv v with Not_found -> let pos = string_pos "venv_find_var" (loc_pos loc pos) in raise (OmakeException (loc_pos loc pos, UnboundVarInfo v)) let venv_find_object_or_empty venv v = try match venv_find_var_exn venv v with ValObject obj -> obj | _ -> venv_empty_object with Not_found -> venv_empty_object let venv_defined venv v = let { venv_this = this; venv_static = static; venv_dynamic = dynamic } = venv in match v with VarPrivate (_, v) -> SymbolTable.mem static v | VarVirtual (_, v) -> SymbolTable.mem dynamic v | VarThis (_, v) | VarGlobal (_, v) -> SymbolTable.mem this v || SymbolTable.mem dynamic v || SymbolTable.mem static v (* * Adding to variable environment. * Add to the current object and the static scope. *) let venv_add_var venv v s = let { venv_this = this; venv_static = static; venv_dynamic = dynamic } = venv in match v with VarPrivate (_, v) -> { venv with venv_static = SymbolTable.add static v s } | VarVirtual (_, v) -> { venv with venv_dynamic = SymbolTable.add dynamic v s } | VarThis (_, v) -> { venv with venv_this = SymbolTable.add this v s; venv_static = SymbolTable.add static v s } | VarGlobal (_, v) -> { venv with venv_dynamic = SymbolTable.add dynamic v s; venv_static = SymbolTable.add static v s } let venv_add_args venv pos loc env vl sl = let len1 = List.length vl in let len2 = List.length sl in let _ = if len1 <> len2 then raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact len1, len2))) in { venv with venv_this = List.fold_left2 SymbolTable.add venv.venv_this vl sl; venv_static = List.fold_left2 SymbolTable.add env vl sl } (* * !!!HACK!!! * * This is here only to get around the problem with * not finding binding occurrences in argument lists. * This should go away! * * Sat Jul 2 07:16:09 PDT 2005 *) let venv_add_args_hack venv pos loc env vl sl = let len1 = List.length vl in let len2 = List.length sl in let _ = if len1 <> len2 then raise (OmakeException (loc_pos loc pos, ArityMismatch (ArityExact len1, len2))) in let { venv_this = this; venv_dynamic = dynamic } = venv in { venv with venv_this = List.fold_left2 SymbolTable.add this vl sl; venv_static = List.fold_left2 SymbolTable.add env vl sl; venv_dynamic = List.fold_left2 SymbolTable.add dynamic vl sl } (* * The system environment. *) let venv_environment venv = venv.venv_inner.venv_environ let venv_getenv venv v = SymbolTable.find venv.venv_inner.venv_environ v let venv_setenv venv v x = { venv with venv_inner = { venv.venv_inner with venv_environ = SymbolTable.add venv.venv_inner.venv_environ v x } } let venv_unsetenv venv v = { venv with venv_inner = { venv.venv_inner with venv_environ = SymbolTable.remove venv.venv_inner.venv_environ v } } let venv_defined_env venv v = SymbolTable.mem venv.venv_inner.venv_environ v (* * Options. *) let venv_set_options_aux venv loc pos argv = let argv = Array.of_list argv in let add_unknown options s = raise (OmakeException (loc_pos loc pos, StringStringError ("unknown option", s))) in let options_spec = Lm_arg.StrictOptions, (**) ["Make options", options_spec; "Output options", output_spec] in let options = try Lm_arg.fold_argv argv options_spec venv.venv_inner.venv_options add_unknown "Generic system builder" with Lm_arg.BogusArg s -> raise (OmakeException (loc_pos loc pos, StringError s)) in { venv with venv_inner = { venv.venv_inner with venv_options = options } } let venv_set_options venv loc pos argv = venv_set_options_aux venv loc pos ("omake" :: argv) let venv_options venv = venv.venv_inner.venv_options let venv_options venv = venv.venv_inner.venv_options (************************************************************************ * Manipulating static objects. *) (* * Static values. Load the values from the file * if necessary. Raises Not_found if the object has not already * been loaded. *) let venv_find_static_object venv node v = let globals = venv.venv_inner.venv_globals in let static = globals.venv_static_values in let table = try NodeTable.find static node with Not_found -> (* Load it from the file *) let table = Static.read venv node Static.find_values in globals.venv_static_values <- NodeTable.add static node table; table in SymbolTable.find table v (* * Define a static var. * Save the object on the modified list so it will get * written back to the file. *) let venv_add_static_object venv node key obj = let globals = venv.venv_inner.venv_globals in let { venv_static_values = static; venv_modified_values = modified } = globals in let table = try NodeTable.find static node with Not_found -> SymbolTable.empty in let table = SymbolTable.add table key obj in globals.venv_static_values <- NodeTable.add static node table; globals.venv_modified_values <- NodeTable.add modified node table (* * Inline the static variables into the current environment. *) let venv_include_static_object venv obj = let { venv_dynamic = dynamic } = venv in let dynamic = SymbolTable.fold SymbolTable.add dynamic obj in { venv with venv_dynamic = dynamic } (* * Save the modified values. *) let venv_save_static_values venv = let globals = venv.venv_inner.venv_globals in NodeTable.iter (fun node table -> try Static.write venv node (fun fd -> Static.add_values fd table) with Not_found -> ()) globals.venv_modified_values; globals.venv_modified_values <- NodeTable.empty (************************************************************************ * Methods and objects. *) (* * Create a path when fetching fields, so that we * can hoist the exports from a method call. *) let raise_field_error mode pos loc v = let print_error buf = fprintf buf "@[Accessing %s field: %a@ The variable was defined at the following location@ %a@]" (**) mode pp_print_symbol v pp_print_location loc in raise (OmakeException (pos, LazyError print_error)) let rec squash_path_info path info = match path with PathVar _ -> PathVar info | PathField (path, _, _) -> squash_path_info path info (* * When finding a value, also construct the path to * the value. *) let venv_find_field_path_exn venv path obj pos v = PathField (path, obj, v), SymbolTable.find obj v let venv_find_field_path venv path obj pos v = try venv_find_field_path_exn venv path obj pos v with Not_found -> let pos = string_pos "venv_find_field_path" pos in raise (OmakeException (pos, UnboundFieldVar (obj, v))) (* * Simple finding. *) let venv_find_field_exn venv obj pos v = SymbolTable.find obj v let venv_find_field venv obj pos v = try venv_find_field_exn venv obj pos v with Not_found -> let pos = string_pos "venv_find_field" pos in raise (OmakeException (pos, UnboundFieldVar (obj, v))) (* * Super fields come from the class. *) let venv_find_super_field venv pos loc v1 v2 = let table = venv_get_class venv.venv_this in try let obj = SymbolTable.find table v1 in venv_find_field_exn venv obj pos v2 with Not_found -> let pos = string_pos "venv_find_super_field" (loc_pos loc pos) in raise (OmakeException (pos, StringVarError ("unbound super var", v2))) (* * Add a field. *) let venv_add_field venv obj pos v e = venv, SymbolTable.add obj v e (* * Hacked versions bypass translation. *) let venv_add_field_internal = SymbolTable.add let venv_defined_field_internal = SymbolTable.mem let venv_find_field_internal_exn = SymbolTable.find let venv_find_field_internal obj pos v = try SymbolTable.find obj v with Not_found -> let pos = string_pos "venv_find_field_internal" pos in raise (OmakeException (pos, UnboundFieldVar (obj, v))) let venv_object_fold_internal = SymbolTable.fold let venv_object_length = SymbolTable.cardinal (* * Test whether a field is defined. *) let venv_defined_field_exn venv obj v = SymbolTable.mem obj v let venv_defined_field venv obj v = try venv_defined_field_exn venv obj v with Not_found -> false (* * Add a class to an object. *) let venv_add_class obj v = let table = venv_get_class obj in let table = SymbolTable.add table v obj in SymbolTable.add obj class_sym (ValClass table) (* * Execute a method in an object. * If we are currently in the outermost object, * push the dynamic scope. *) let venv_with_object venv this = { venv with venv_this = this } (* * Define a new object. *) let venv_define_object venv = venv_with_object venv SymbolTable.empty (* * Add the class to the current object. *) let venv_instanceof obj s = SymbolTable.mem (venv_get_class obj) s (* * Include the fields in the given class. * Be careful to merge classnames. *) let venv_include_object_aux obj1 obj2 = let table1 = venv_get_class obj1 in let table2 = venv_get_class obj2 in let table = SymbolTable.fold SymbolTable.add table1 table2 in let obj1 = SymbolTable.fold SymbolTable.add obj1 obj2 in SymbolTable.add obj1 class_sym (ValClass table) let venv_include_object venv obj2 = let obj = venv_include_object_aux venv.venv_this obj2 in { venv with venv_this = obj } let venv_flatten_object venv obj2 = let obj = venv_include_object_aux venv.venv_dynamic obj2 in { venv with venv_dynamic = obj } (* * Function scoping. *) let venv_empty_env = SymbolTable.empty let venv_get_env venv = venv.venv_static let venv_with_env venv env = { venv with venv_static = env } (* * The current object is always in the venv_this field. *) let venv_this venv = venv.venv_this let venv_current_object venv classnames = let obj = venv.venv_this in if classnames = [] then obj else let table = venv_get_class obj in let table = List.fold_left (fun table v -> SymbolTable.add table v obj) table classnames in SymbolTable.add obj class_sym (ValClass table) (* * ZZZ: this will go away in 0.9.9. *) let rec filter_objects venv pos v objl = function obj :: rev_objl -> let objl = try venv_find_field_exn venv obj pos v :: objl with Not_found -> objl in filter_objects venv pos v objl rev_objl | [] -> objl let venv_current_objects venv pos v = let { venv_this = this; venv_dynamic = dynamic; venv_static = static } = venv in let v, objl = match v with VarPrivate (_, v) -> v, [static] | VarThis (_, v) -> v, [static; dynamic; this] | VarVirtual (_, v) -> v, [dynamic] | VarGlobal (_, v) -> v, [static; this; dynamic] in filter_objects venv pos v [] objl (************************************************************************ * Environment. *) (* * Convert a filename to a node. *) let venv_intern venv phony_flag name = let { venv_mount = mount; venv_dir = dir } = venv.venv_inner in let globals = venv_globals venv in let { venv_phonies = phonies; venv_mount_info = mount_info } = globals in create_node_or_phony phonies mount_info mount phony_flag dir name let venv_intern_target venv phony_flag target = match target with TargetNode node -> node | TargetString name -> venv_intern venv phony_flag name let venv_intern_cd venv phony_flag dir name = let mount = venv.venv_inner.venv_mount in let globals = venv_globals venv in let { venv_phonies = phonies; venv_mount_info = mount_info } = globals in create_node_or_phony phonies mount_info mount phony_flag dir name let venv_intern_rule_target venv multiple name = let node = match name with TargetNode node -> node | TargetString name -> venv_intern venv PhonyOK name in match multiple with RuleScannerSingle | RuleScannerMultiple -> Node.create_escape NodeScanner node | RuleSingle | RuleMultiple -> node let venv_intern_dir venv name = Dir.chdir venv.venv_inner.venv_dir name let venv_intern_list venv names = List.map (venv_intern venv) names let node_set_of_list nodes = List.fold_left NodeSet.add NodeSet.empty nodes let node_set_add_names venv phony_flag nodes names = List.fold_left (fun nodes name -> NodeSet.add nodes (venv_intern venv phony_flag name)) nodes names let node_set_of_names venv phony_flag names = node_set_add_names venv phony_flag NodeSet.empty names (* * Convert back to a string. *) let venv_dirname venv dir = if opt_absname venv.venv_inner.venv_options then Dir.absname dir else Dir.name venv.venv_inner.venv_dir dir let venv_nodename venv dir = if opt_absname venv.venv_inner.venv_options then Node.absname dir else Node.name venv.venv_inner.venv_dir dir (* * Add a mount point. *) let venv_mount venv options src dst = let inner = venv.venv_inner in let mount = Mount.mount inner.venv_mount options src dst in let inner = { inner with venv_mount = mount } in { venv with venv_inner = inner } (* * A target is wild if it is a string with a wild char. *) let target_is_wild target = match target with TargetNode _ -> false | TargetString s -> is_wild s let string_of_target venv target = match target with TargetString s -> s | TargetNode node -> venv_nodename venv node (* * Compile a wild pattern. * It is an error if it isn't wild. *) let compile_wild_pattern venv pos loc target = match target with TargetString s when is_wild s -> if Lm_string_util.contains_any s Lm_filename_util.separators then raise (OmakeException (loc_pos loc pos, StringStringError ("filename pattern is a path", s))); wild_compile_in s | _ -> raise (OmakeException (loc_pos loc pos, StringTargetError ("patterns must be wildcards", target))) (* * Compile a source. *) let compile_source_core venv s = match s with TargetNode node -> SourceNode node | TargetString s -> if is_wild s then SourceWild (wild_compile_out s) else SourceNode (venv_intern venv PhonyOK s) let compile_source venv (kind, s) = kind, compile_source_core venv s let compile_implicit3_target pos loc = function TargetString s -> if Lm_string_util.contains_any s Lm_filename_util.separators then raise (OmakeException (loc_pos loc pos, StringStringError ("target of a 3-place rule is a path", s))); s | target -> raise (OmakeException (loc_pos loc pos, StringTargetError ("target of a 3-place rule is not a simple string", target))) (* * Perform a wild substitution on a source. *) let subst_source_core venv dir subst source = match source with SourceWild wild -> let s = wild_subst subst wild in venv_intern_cd venv PhonyOK dir s | SourceNode node -> node let subst_source venv dir subst (kind, source) = Node.create_escape kind (subst_source_core venv dir subst source) (* * No wildcard matching. *) let intern_source venv (kind, source) = let source = match source with TargetNode node -> node | TargetString name -> venv_intern venv PhonyOK name in Node.create_escape kind source (************************************************************************ * Rules *) (* * Symbols for directories. *) let wild_sym = Lm_symbol.add wild_string let explicit_target_sym = Lm_symbol.add "" (* * Don't save explicit rules. *) let venv_explicit_target venv target = venv_add_var venv explicit_target_var (ValNode target) (* * Save explicit rules. *) let venv_save_explicit_rules venv loc erules = (* Filter out the rules with a different target *) let erules = try match venv_find_var_dynamic_exn venv explicit_target_sym with ValNode target -> let rules = List.fold_left (fun rules erule -> if Node.equal erule.rule_target target then erule :: rules else rules) [] erules in let rules = List.rev rules in let () = if rules = [] then let print_error buf = fprintf buf "@[Computed rule for `%a' produced no useful rules:" pp_print_node target; List.iter (fun erule -> fprintf buf "@ `%a'" pp_print_node erule.rule_target) erules; fprintf buf "@]" in raise (OmakeException (loc_exp_pos loc, LazyError print_error)) in rules | _ -> erules with Not_found -> erules in venv_save_explicit_rules venv loc erules (* * Add the wild target. *) let venv_add_wild_match venv v = venv_add_var venv wild_var v (* * This is the standard way to add results of a pattern match. *) let venv_add_match_values venv args = let venv, _ = List.fold_left (fun (venv, i) arg -> let v = create_numeric_var i in let venv = venv_add_var venv v arg in venv, succ i) (venv, 1) args in venv let venv_add_match_args venv args = let venv, _ = List.fold_left (fun (venv, i) arg -> let v = create_numeric_var i in let venv = venv_add_var venv v (ValData arg) in venv, succ i) (venv, 1) args in venv let venv_add_match venv line args = let args = List.map (fun s -> ValData s) args in let venv, _ = List.fold_left (fun (venv, i) arg -> let v = create_numeric_var i in let venv = venv_add_var venv v arg in venv, succ i) (venv, 1) args in let venv = venv_add_var venv zero_var (ValData line) in let venv = venv_add_var venv star_var (ValArray args) in let venv = venv_add_var venv nf_var (ValInt (List.length args)) in venv (* * Create an environment. *) let create_environ () = let env = Unix.environment () in let len = Array.length env in let rec collect table i = if i = len then table else let s = env.(i) in let j = String.index s '=' in let name = String.sub s 0 j in let name = if Sys.os_type = "Win32" then String.uppercase name else name in let v = Lm_symbol.add name in let x = String.sub s (j + 1) (String.length s - j - 1) in let table = SymbolTable.add table v x in collect table (succ i) in collect SymbolTable.empty 0 let create options dir exec cache = let cwd = Dir.cwd () in let env = create_environ () in let mount_info = { mount_file_exists = Omake_cache.exists cache; mount_file_reset = (fun node -> ignore (Omake_cache.force_stat cache node)); mount_is_dir = Omake_cache.is_dir cache; mount_digest = Omake_cache.stat cache; mount_stat = Omake_cache.stat_unix cache } in let globals = { venv_global_index = 0; venv_exec = exec; venv_cache = cache; venv_mount_info = mount_info; venv_environments = HandleTable.create (); venv_files = NodeSet.empty; venv_directories = DirTable.empty; venv_excluded_directories = DirSet.empty; venv_phonies = PreNodeSet.empty; venv_explicit_rules = []; venv_explicit_new = []; venv_explicit_targets = NodeTable.empty; venv_ordering_rules = []; venv_orders = StringSet.empty; venv_memo_rules = ValueTable.empty; venv_pervasives_obj = SymbolTable.empty; venv_pervasives_vars = SymbolTable.empty; venv_ir_files = NodeTable.empty; venv_object_files = NodeTable.empty; venv_static_values = NodeTable.empty; venv_modified_values = NodeTable.empty; venv_target_is_buildable = NodeTable.empty; venv_target_is_buildable_proper = NodeTable.empty } in let inner = { venv_dir = cwd; venv_environ = env; venv_phony = NodeSet.empty; venv_implicit_deps = []; venv_implicit_rules = []; venv_globals = globals; venv_options = options; venv_mount = Mount.empty; venv_included_files = NodeSet.empty } in let venv = { venv_this = SymbolTable.empty; venv_dynamic = SymbolTable.empty; venv_static = SymbolTable.empty; venv_inner = inner } in let venv = venv_add_phony venv (Lm_location.bogus_loc makeroot_name) [TargetString ".PHONY"] in let venv = venv_add_var venv cwd_var (ValDir cwd) in let venv = venv_add_var venv stdlib_var (ValDir Dir.lib) in let venv = venv_add_var venv stdroot_var (ValNode (venv_intern_cd venv PhonyProhibited Dir.lib "OMakeroot")) in let venv = venv_add_var venv ostype_var (ValString Sys.os_type) in let venv = venv_add_wild_match venv (ValData wild_string) in let omakepath = try let path = Lm_string_util.split pathsep (SymbolTable.find env omakepath_sym) in List.map (fun s -> ValString s) path with Not_found -> [ValString "."; ValDir Dir.lib] in let omakepath = ValArray omakepath in let venv = venv_add_var venv omakepath_var omakepath in let path = try let path = Lm_string_util.split pathsep (SymbolTable.find env path_sym) in ValArray (List.map (fun s -> ValData s) path) with Not_found -> eprintf "*** omake: PATH environment variable is not set!@."; ValArray [] in let venv = venv_add_var venv path_var path in venv (* * Create a fresh environment from the pervasives. * This is used for compiling objects. *) let venv_set_pervasives venv = let globals = venv.venv_inner.venv_globals in let obj = venv.venv_dynamic in let loc = bogus_loc "Pervasives" in let vars = SymbolTable.fold (fun vars v _ -> SymbolTable.add vars v (VarVirtual (loc, v))) SymbolTable.empty obj in globals.venv_pervasives_obj <- venv.venv_dynamic; globals.venv_pervasives_vars <- vars let venv_get_pervasives venv node = let { venv_inner = inner } = venv in let { venv_environ = env; venv_options = options; venv_globals = globals } = inner in let { venv_exec = exec; venv_cache = cache; venv_pervasives_obj = obj; venv_pervasives_vars = vars } = globals in let inner = { venv_dir = Node.dir node; venv_environ = env; venv_phony = NodeSet.empty; venv_implicit_deps = []; venv_implicit_rules = []; venv_globals = globals; venv_options = options; venv_mount = Mount.empty; venv_included_files = NodeSet.empty } in { venv_this = SymbolTable.empty; venv_dynamic = obj; venv_static = SymbolTable.empty; venv_inner = inner } (* * Fork the environment, so that changes really have no effect on the old one. * This is primarly used when a thread wants a private copy of the environment. *) let venv_fork venv = let inner = venv.venv_inner in let globals = inner.venv_globals in let globals = { globals with venv_global_index = succ globals.venv_global_index; venv_exec = globals.venv_exec } in let inner = { inner with venv_globals = globals } in { venv with venv_inner = inner } let copy_var src_dynamic dst_dynamic v = try SymbolTable.add dst_dynamic v (SymbolTable.find src_dynamic v) with Not_found -> SymbolTable.remove dst_dynamic v let copy_vars dst_dynamic src_dynamic vars = List.fold_left (copy_var src_dynamic) dst_dynamic vars let copy_var_list = [stdin_sym; stdout_sym; stderr_sym] let venv_unfork venv_dst venv_src = let { venv_dynamic = dst_dynamic; venv_inner = dst_inner } = venv_dst in let { venv_dynamic = src_dynamic; venv_inner = src_inner } = venv_src in let inner = { dst_inner with venv_globals = src_inner.venv_globals } in let dst_dynamic = copy_vars dst_dynamic src_dynamic copy_var_list in { venv_dst with venv_dynamic = dst_dynamic; venv_inner = inner } (* * Get the scope of all variables. *) let venv_include_scope venv mode = match mode with IncludePervasives -> venv.venv_inner.venv_globals.venv_pervasives_vars | IncludeAll -> let loc = bogus_loc "venv_include_scope" in let { venv_this = this; venv_dynamic = dynamic } = venv in let vars = SymbolTable.mapi (fun v _ -> VarThis (loc, v)) this in let vars = SymbolTable.fold (fun vars v _ -> SymbolTable.add vars v (VarGlobal (loc, v))) vars dynamic in vars (* * Add an included file. *) let venv_is_included_file venv node = NodeSet.mem venv.venv_inner.venv_included_files node let venv_add_included_file venv node = let inner = venv.venv_inner in let inner = { inner with venv_included_files = NodeSet.add inner.venv_included_files node } in { venv with venv_inner = inner } (* * Global state. *) let venv_exec venv = venv.venv_inner.venv_globals.venv_exec let venv_cache venv = venv.venv_inner.venv_globals.venv_cache let venv_add_cache venv cache = let inner = venv.venv_inner in let globals = inner.venv_globals in let globals = { globals with venv_cache = cache } in let inner = { inner with venv_globals = globals } in { venv with venv_inner = inner } (* * Change directories. Update the CWD var, and all a default * rule for all the phonies. *) let venv_chdir_tmp venv dir = { venv with venv_inner = { venv.venv_inner with venv_dir = dir } } let venv_chdir_dir venv loc dir = let inner = venv.venv_inner in let { venv_dir = cwd; venv_phony = phony } = inner in if Dir.equal dir cwd then venv else let venv = venv_add_var venv cwd_var (ValDir dir) in let venv = venv_chdir_tmp venv dir in let globals = venv_globals venv in let phonies = globals.venv_phonies in let phony, phonies = NodeSet.fold (fun (phony, phonies) node -> let node' = Node.create_phony_chdir node dir in let phony = NodeSet.add phony node' in let phonies = PreNodeSet.add phonies (Node.dest node') in venv_add_explicit_dep venv loc node node'; phony, phonies) (NodeSet.empty, phonies) phony in let inner = { inner with venv_dir = dir; venv_phony = phony } in let venv = { venv with venv_inner = inner } in globals.venv_phonies <- phonies; venv let venv_chdir venv loc dir = let dir = Dir.chdir venv.venv_inner.venv_dir dir in venv_chdir_dir venv loc dir (* * The public version does not mess whith the phonies. *) let venv_chdir_tmp venv dir = let cwd = venv.venv_inner.venv_dir in if Dir.equal dir cwd then venv else let venv = venv_add_var venv cwd_var (ValDir dir) in venv_chdir_tmp venv dir (* * Get the dir. *) let venv_dir venv = venv.venv_inner.venv_dir (* * When an OMakefile in a dir is read, save the venv * to be used for targets that do not have nay explicit target rule. *) let venv_add_dir venv = let globals = venv.venv_inner.venv_globals in globals.venv_directories <- DirTable.add globals.venv_directories venv.venv_inner.venv_dir venv let venv_directories venv = let globals = venv.venv_inner.venv_globals in DirSet.fold DirTable.remove globals.venv_directories globals.venv_excluded_directories let venv_add_explicit_dir venv dir = let globals = venv.venv_inner.venv_globals in globals.venv_directories <- DirTable.add globals.venv_directories dir venv; globals.venv_excluded_directories <- DirSet.remove globals.venv_excluded_directories dir let venv_remove_explicit_dir venv dir = let globals = venv.venv_inner.venv_globals in globals.venv_excluded_directories <- DirSet.add globals.venv_excluded_directories dir let venv_find_target_dir_opt venv target = let target_dir = Node.dir target in if Dir.equal venv.venv_inner.venv_dir target_dir then Some venv else try Some (DirTable.find venv.venv_inner.venv_globals.venv_directories target_dir) with Not_found -> None (* * When a file is read, remember it as a configuration file. *) let venv_add_file venv node = let globals = venv.venv_inner.venv_globals in globals.venv_files <- NodeSet.add globals.venv_files node; venv (* * Get all the configuration files. *) let venv_files venv = venv.venv_inner.venv_globals.venv_files (* * Add a null rule. *) let venv_add_implicit_deps venv pos loc multiple patterns locks sources scanners values = let pos = string_pos "venv_add_implicit_deps" pos in let patterns = List.map (compile_wild_pattern venv pos loc) patterns in let locks = List.map (compile_source venv) locks in let sources = List.map (compile_source venv) sources in let scanners = List.map (compile_source venv) scanners in let nrule = { inrule_loc = loc; inrule_multiple = multiple; inrule_patterns = patterns; inrule_locks = locks; inrule_sources = sources; inrule_scanners = scanners; inrule_values = values } in let venv = { venv with venv_inner = { venv.venv_inner with venv_implicit_deps = nrule :: venv.venv_inner.venv_implicit_deps } } in venv_flush_target_cache venv; venv, [] (* * Add an implicit rule. *) let venv_add_implicit_rule venv loc multiple targets patterns locks sources scanners values body = let irule = { irule_loc = loc; irule_multiple = multiple; irule_targets = targets; irule_patterns = patterns; irule_locks = locks; irule_sources = sources; irule_scanners = scanners; irule_values = values; irule_body = body } in let venv = { venv with venv_inner = { venv.venv_inner with venv_implicit_rules = irule :: venv.venv_inner.venv_implicit_rules } } in venv_flush_target_cache venv; venv, [] (* * Add an 2-place implicit rule. *) let venv_add_implicit2_rule venv pos loc multiple patterns locks sources scanners values body = let pos = string_pos "venv_add_implicit2_rule" pos in let patterns = List.map (compile_wild_pattern venv pos loc) patterns in let locks = List.map (compile_source venv) locks in let sources = List.map (compile_source venv) sources in let scanners = List.map (compile_source venv) scanners in if debug debug_implicit then eprintf "@[venv_add_implicit2_rule:@ @[patterns =%a@]@ @[sources =%a@]@]@." (**) pp_print_wild_list patterns pp_print_source_list sources; venv_add_implicit_rule venv loc multiple None patterns locks sources scanners values body (* * Add an explicit rule. *) let venv_add_explicit_rules venv pos loc multiple targets locks sources scanners values body = let _pos = string_pos "venv_add_explicit_rule" pos in let target_args = List.map (venv_intern_rule_target venv multiple) targets in let lock_args = List.map (intern_source venv) locks in let source_args = List.map (intern_source venv) sources in let scanner_args = List.map (intern_source venv) scanners in let effects = node_set_of_list target_args in let locks = node_set_of_list lock_args in let sources = node_set_of_list source_args in let scanners = node_set_of_list scanner_args in let commands = make_command_info venv source_args values body in let add_target target = { rule_loc = loc; rule_env = venv; rule_target = target; rule_effects = effects; rule_locks = locks; rule_sources = sources; rule_scanners = scanners; rule_match = None; rule_multiple = multiple; rule_commands = commands } in let rules = List.map add_target target_args in let names = List.map (fun erule -> erule.rule_target) rules in venv_save_explicit_rules venv loc rules; venv, names (* * Add a 3-place rule (automatically implicit). *) let venv_add_implicit3_rule venv pos loc multiple targets locks patterns sources scanners values body = let pos = string_pos "venv_add_implicit3_rule" pos in let patterns = List.map (compile_wild_pattern venv pos loc) patterns in let locks = List.map (compile_source venv) locks in let sources = List.map (compile_source venv) sources in let scanners = List.map (compile_source venv) scanners in let targets = List.map (compile_implicit3_target pos loc) targets in let rec check_target target = function pattern :: patterns -> begin match wild_match pattern target with Some _ -> () | None -> check_target target patterns end | [] -> raise (OmakeException (loc_pos loc pos, StringStringError ("bad match", target))) in let () = List.iter (fun target -> check_target target patterns) targets in if debug debug_implicit then eprintf "@[venv_add_implicit3_rule:@ @[targets =%a@] @[patterns =%a@]@ @[sources =%a@]@]@." (**) pp_print_string_list targets pp_print_wild_list patterns pp_print_source_list sources; venv_add_implicit_rule venv loc multiple (Some (StringSet.of_list targets)) patterns locks sources scanners values body let rec is_implicit loc = function [] -> false | [target] -> target_is_wild target | target :: targets -> let imp1 = target_is_wild target in let imp2 = is_implicit loc targets in if imp1 <> imp2 then raise (OmakeException (loc_exp_pos loc, (**) StringError "Rule contains an illegal mixture of implicit (pattern) targets and explicit ones")) else imp1 (* * Figure out what to do based on all the parts. * A 2-place rule is implicit if the targets do not contain a %. 3-place rules are always implicit. *) let venv_add_rule venv pos loc multiple targets patterns locks sources scanners values commands = let pos = string_pos "venv_add_rule" pos in try match targets, patterns, commands with [], [], _ -> raise (OmakeException (loc_exp_pos loc, StringError "invalid null rule")) | _, [], [] -> if is_implicit loc targets then venv_add_implicit_deps venv pos loc multiple targets locks sources scanners values else venv_add_explicit_rules venv pos loc multiple targets locks sources scanners values commands | _, [], _ -> if is_implicit loc targets then venv_add_implicit2_rule venv pos loc multiple targets locks sources scanners values commands else venv_add_explicit_rules venv pos loc multiple targets locks sources scanners values commands | _ -> if not (is_implicit loc patterns) then raise (OmakeException (loc_exp_pos loc, StringError "3-place rule does not contain patterns")) else venv_add_implicit3_rule venv pos loc multiple targets locks patterns sources scanners values commands with Failure err -> raise (OmakeException (loc_exp_pos loc, StringError err)) (* * Flush the explicit list. *) let venv_explicit_flush venv = let globals = venv.venv_inner.venv_globals in let { venv_explicit_rules = erules; venv_explicit_targets = targets; venv_explicit_new = enew } = globals in if enew <> [] then let targets, erules = List.fold_left (fun (targets, erules) erule -> let erules = erule :: erules in let targets = NodeTable.add targets erule.rule_target erule in targets, erules) (targets, erules) (List.rev enew) in globals.venv_explicit_new <- []; globals.venv_explicit_rules <- erules; globals.venv_explicit_targets <- targets (* * Check if an explicit rule exists. *) let venv_explicit_find venv pos target = venv_explicit_flush venv; try NodeTable.find venv.venv_inner.venv_globals.venv_explicit_targets target with Not_found -> raise (OmakeException (pos, StringNodeError ("explicit target not found", target))) let venv_explicit_exists venv target = venv_explicit_flush venv; NodeTable.mem venv.venv_inner.venv_globals.venv_explicit_targets target let multiple_add_error errors target loc1 loc2 = let table = !errors in let table = if NodeMTable.mem table target then table else NodeMTable.add table target loc1 in errors := NodeMTable.add table target loc2 let multiple_print_error errors buf = fprintf buf "@[Multiple ways to build the following targets"; NodeMTable.iter_all (fun target locs -> let locs = List.sort Lm_location.compare locs in fprintf buf "@ @[%a:" pp_print_node target; List.iter (fun loc -> fprintf buf "@ %a" pp_print_location loc) locs; fprintf buf "@]") errors; fprintf buf "@]" let raise_multiple_error errors = let _, loc = NodeMTable.choose errors in raise (OmakeException (loc_exp_pos loc, LazyError (multiple_print_error errors))) (* * Get the explicit rules. Build a table indexed by target. *) let venv_explicit_rules venv = let errors = ref NodeMTable.empty in let add_target table target erule = NodeTable.filter_add table target (fun entry -> match entry with Some erule' -> (* * For .PHONY targets, multiple is ignored. * Otherwise, multiple must be the same for both targets. *) let multiple = is_multiple_rule erule.rule_multiple in let multiple' = is_multiple_rule erule'.rule_multiple in if Node.is_phony target || (multiple && multiple') || ((not multiple && not multiple') && (commands_are_trivial erule.rule_commands || commands_are_trivial erule'.rule_commands)) then { erule with rule_commands = erule'.rule_commands @ erule.rule_commands } else begin multiple_add_error errors target erule'.rule_loc erule.rule_loc; erule' end | None -> erule) in if not (NodeMTable.is_empty !errors) then raise_multiple_error !errors else let add_deps table target locks sources scanners = NodeTable.filter_add table target (function Some (lock_deps, source_deps, scanner_deps) -> NodeSet.union lock_deps locks, NodeSet.union source_deps sources, NodeSet.union scanner_deps scanners | None -> locks, sources, scanners) in let info = { explicit_targets = NodeTable.empty; explicit_deps = NodeTable.empty; explicit_rules = NodeMTable.empty; explicit_directories = venv_directories venv } in venv_explicit_flush venv; List.fold_left (fun info erule -> let { rule_target = target; rule_locks = locks; rule_sources = sources; rule_scanners = scanners; } = erule in let target_table = add_target info.explicit_targets target erule in let dep_table = add_deps info.explicit_deps target locks sources scanners in { info with explicit_targets = target_table; explicit_deps = dep_table; explicit_rules = NodeMTable.add info.explicit_rules target erule }) info (List.rev venv.venv_inner.venv_globals.venv_explicit_rules) (* * Find all the explicit dependencies listed through null * rules. *) let venv_find_implicit_deps_inner venv target = let target_dir = Node.dir target in let target_name = Node.tail target in let is_scanner = match Node.kind target with NodeScanner -> RuleScanner | _ -> RuleNormal in List.fold_left (fun (lock_deps, source_deps, scanner_deps, value_deps) nrule -> let { inrule_multiple = multiple; inrule_patterns = patterns; inrule_locks = locks; inrule_sources = sources; inrule_scanners = scanners; inrule_values = values } = nrule in if rule_kind multiple = is_scanner then let rec search patterns = match patterns with pattern :: patterns -> (match wild_match pattern target_name with Some subst -> let lock_deps = List.fold_left (fun lock_deps source -> let source = subst_source venv target_dir subst source in NodeSet.add lock_deps source) lock_deps locks in let source_deps = List.fold_left (fun names source -> let source = subst_source venv target_dir subst source in NodeSet.add names source) source_deps sources in let scanner_deps = List.fold_left (fun scanner_deps source -> let source = subst_source venv target_dir subst source in NodeSet.add scanner_deps source) scanner_deps scanners in let value_deps = values @ value_deps in lock_deps, source_deps, scanner_deps, value_deps | None -> search patterns) | [] -> lock_deps, source_deps, scanner_deps, value_deps in search patterns else lock_deps, source_deps, scanner_deps, value_deps) (**) (NodeSet.empty, NodeSet.empty, NodeSet.empty, []) venv.venv_inner.venv_implicit_deps let venv_find_implicit_deps venv target = match venv_find_target_dir_opt venv target with Some venv -> venv_find_implicit_deps_inner venv target | None -> NodeSet.empty, NodeSet.empty, NodeSet.empty, [] (* * Find the commands from implicit rules. *) let venv_find_implicit_rules_inner venv target = let target_dir = Node.dir target in let target_name = Node.tail target in let is_scanner = match Node.kind target with NodeScanner -> RuleScanner | _ -> RuleNormal in let _ = if debug debug_implicit then eprintf "Finding implicit rules for %s@." target_name in let rec patt_search = function pattern :: patterns -> begin match wild_match pattern target_name with None -> patt_search patterns | (Some _) as subst -> subst end | [] -> None in let rec collect matched = function irule :: irules -> let multiple = irule.irule_multiple in if rule_kind multiple = is_scanner then let subst = if debug debug_implicit then begin eprintf "@[venv_find_implicit_rules: considering implicit rule for@ target = %s:@ " target_name; begin match irule.irule_targets with Some targets -> eprintf "@[3-place targets =%a@]@ " pp_print_string_list (StringSet.elements targets) | None -> () end; eprintf "@[patterns =%a@]@ @[sources =%a@]@]@." (**) pp_print_wild_list irule.irule_patterns pp_print_source_list irule.irule_sources end; let matches = match irule.irule_targets with None -> true | Some targets -> StringSet.mem targets target_name in if matches then patt_search irule.irule_patterns else None in let matched = match subst with Some subst -> let source_args = List.map (subst_source venv target_dir subst) irule.irule_sources in let sources = node_set_of_list source_args in let lock_args = List.map (subst_source venv target_dir subst) irule.irule_locks in let locks = node_set_of_list lock_args in let scanner_args = List.map (subst_source venv target_dir subst) irule.irule_scanners in let scanners = node_set_of_list scanner_args in let core = wild_core subst in let venv = venv_add_wild_match venv (ValData core) in let commands = make_command_info venv source_args irule.irule_values irule.irule_body in let effects = List.fold_left (fun effects pattern -> let effect = wild_subst_in subst pattern in let effect = venv_intern_rule_target venv multiple (TargetString effect) in NodeSet.add effects effect) NodeSet.empty irule.irule_patterns in let erule = { rule_loc = irule.irule_loc; rule_env = venv; rule_target = target; rule_match = Some core; rule_effects = effects; rule_locks = locks; rule_sources = sources; rule_scanners = scanners; rule_multiple = multiple; rule_commands = commands } in if debug debug_implicit then eprintf "@[Added implicit rule for %s:%a@]@." (**) target_name pp_print_command_info_list commands; erule :: matched | None -> matched in collect matched irules else collect matched irules | [] -> List.rev matched in collect [] venv.venv_inner.venv_implicit_rules let venv_find_implicit_rules venv target = match venv_find_target_dir_opt venv target with Some venv -> venv_find_implicit_rules_inner venv target | None -> [] (************************************************************************ * Ordering rules. *) (* * Add an order. *) let venv_add_orders venv loc targets = let globals = venv.venv_inner.venv_globals in let orders = List.fold_left (fun orders target -> let name = match target with TargetNode _ -> raise (OmakeException (loc_exp_pos loc, StringTargetError (".ORDER should be a name", target))) | TargetString s -> s in StringSet.add orders name) globals.venv_orders targets in globals.venv_orders <- orders; venv (* * Check for order. *) let venv_is_order venv name = StringSet.mem venv.venv_inner.venv_globals.venv_orders name (* * Add an ordering rule. *) let venv_add_ordering_rule venv pos loc name pattern sources = let pos = string_pos "venv_add_ordering_deps" pos in let pattern = compile_wild_pattern venv pos loc pattern in let sources = List.map (compile_source_core venv) sources in let orule = { orule_loc = loc; orule_name = name; orule_pattern = pattern; orule_sources = sources } in let globals = venv.venv_inner.venv_globals in globals.venv_ordering_rules <- orule :: globals.venv_ordering_rules; venv (* * Get the ordering dependencies for a name. *) let venv_get_ordering_info venv name = List.fold_left (fun orules orule -> if Lm_symbol.eq orule.orule_name name then orule :: orules else orules) [] venv.venv_inner.venv_globals.venv_ordering_rules (* * Get extra dependencies. *) let venv_get_ordering_deps venv orules deps = let step deps = NodeSet.fold (fun deps dep -> let target_dir = Node.dir dep in let target_str = Node.tail dep in List.fold_left (fun deps orule -> let { orule_pattern = pattern; orule_sources = sources } = orule in match wild_match pattern target_str with Some subst -> List.fold_left (fun deps source -> let source = subst_source_core venv target_dir subst source in NodeSet.add deps source) deps sources | None -> deps) deps orules) deps deps in let rec fixpoint deps = let deps' = step deps in if NodeSet.cardinal deps' = NodeSet.cardinal deps then deps else fixpoint deps' in fixpoint deps (************************************************************************ * Static rules. *) (* * Each of the commands evaluates to an object. *) let venv_add_memo_rule venv pos loc multiple is_static key vars sources values body = let source_args = List.map (intern_source venv) sources in let sources = node_set_of_list source_args in let srule = { srule_loc = loc; srule_static = is_static; srule_env = venv; srule_key = key; srule_deps = sources; srule_vals = values; srule_exp = body } in let globals = venv_globals venv in let venv = List.fold_left (fun venv info -> let _, v = var_of_var_info info in venv_add_var venv info (ValDelayed (ref (ValStaticApply (key, v))))) venv vars in globals.venv_memo_rules <- ValueTable.add globals.venv_memo_rules key (StaticRule srule); venv (* * Force the evaluation. *) let venv_set_static_info venv key v = let globals = venv_globals venv in globals.venv_memo_rules <- ValueTable.add globals.venv_memo_rules key v let venv_find_static_info venv pos key = try ValueTable.find venv.venv_inner.venv_globals.venv_memo_rules key with Not_found -> raise (OmakeException (pos, StringValueError ("Static section not defined", key))) (************************************************************************ * Return values. *) (* * Export an item from one environment to another. *) let copy_var pos dst src v = try SymbolTable.add dst v (SymbolTable.find src v) with Not_found -> raise (OmakeException (pos, UnboundVar v)) let export_item pos venv_dst venv_src = function ExportVar (VarPrivate (_, v)) -> { venv_dst with venv_static = copy_var pos venv_dst.venv_static venv_src.venv_static v } | ExportVar (VarThis (_, v)) -> { venv_dst with venv_this = copy_var pos venv_dst.venv_this venv_src.venv_this v } | ExportVar (VarVirtual (_, v)) -> { venv_dst with venv_this = copy_var pos venv_dst.venv_dynamic venv_src.venv_dynamic v } | ExportVar (VarGlobal (_, v)) -> (* * For now, we don't know which scope to use, so we * copy them all. *) let { venv_dynamic = dynamic_src; venv_static = static_src; venv_this = this_src } = venv_src in let { venv_dynamic = dynamic_dst; venv_static = static_dst; venv_this = this_dst } = venv_dst in let dynamic, found = try SymbolTable.add dynamic_dst v (SymbolTable.find dynamic_src v), true with Not_found -> dynamic_dst, false in let static, found = try SymbolTable.add static_dst v (SymbolTable.find static_src v), true with Not_found -> static_dst, found in let this, found = try SymbolTable.add this_dst v (SymbolTable.find this_src v), true with Not_found -> this_dst, found in if not found then raise (OmakeException (pos, UnboundVar v)); { venv_dst with venv_dynamic = dynamic; venv_static = static; venv_this = this } | ExportRules -> (* * Export the implicit rules. *) let inner_src = venv_src.venv_inner in let inner_dst = { venv_dst.venv_inner with venv_implicit_deps = inner_src.venv_implicit_deps; venv_implicit_rules = inner_src.venv_implicit_rules; } in { venv_dst with venv_inner = inner_dst } | ExportPhonies -> (* * Export the phony vars. *) let inner_dst = { venv_dst.venv_inner with venv_phony = venv_src.venv_inner.venv_phony } in { venv_dst with venv_inner = inner_dst } let export_list pos venv_dst venv_src vars = List.fold_left (fun venv_dst v -> export_item pos venv_dst venv_src v) venv_dst vars (* * Exported environment does not include static values. * * We want to preserve pointer equality on venv2 to avoid giving unnecessary * "these files are targeted separately, but appear as effects of a single rule" * warnings. *) let venv_export_venv venv1 venv2 = if venv1.venv_static == venv2.venv_static then venv2 else { venv2 with venv_static = venv1.venv_static } (* * Add the exported result to the current environment. *) let add_exports venv_dst venv_src pos = function ExportNone -> venv_dst | ExportAll -> venv_export_venv venv_dst venv_src | ExportList vars -> export_list pos venv_dst venv_src vars (* * venv_orig - environment before the function call. * venv_dst - environment after "entering" the object namespace, before the function call * venv_src - environment after the function call * * # venv_orig is here * A.B.C.f(1) * # venv_dst is venv_orig with this = A.B.C * # venv_src is venv when A.B.C.f returns * * 1. export from venv_src into venv_dst * 2. take venv_orig.venv_this * 3. update along the path A.B.C *) let rec hoist_path venv path obj = match path with PathVar v -> venv_add_var venv v (ValObject obj) | PathField (path, parent_obj, v) -> let obj = SymbolTable.add parent_obj v (ValObject obj) in hoist_path venv path obj (* XXX: In 0.9.8.5 only, we disable the hoisting *) let hoist_this _ venv_obj _ = venv_obj let add_path_exports venv_orig venv_dst venv_src pos path = function ExportNone -> venv_orig | ExportAll -> hoist_this venv_orig (venv_export_venv venv_dst venv_src) path | ExportList vars -> hoist_this venv_orig (export_list pos venv_dst venv_src vars) path (************************************************************************ * Squashing. *) let squash_prim_fun f = f let squash_object obj = obj (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/env/omake_ast_parse.input0000664000152300015230000006751210616420221016735 0ustar jyhjyh/* * Parser for OMakefiles. * * ---------------------------------------------------------------- * * Copyright (C) 2000-2007 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * jyh@cs.caltech.edu */ %{ open Lm_printf open Lm_symbol open Lm_location open Omake_env open Omake_pos open Omake_ast open Omake_symbol open Omake_ast_util open Omake_value_type let replacesuffixes_sym = Lm_symbol.add "replacesuffixes" module Pos = MakePos (struct let name = "Omake_parse" end) open Pos;; (* * Define flags. *) let define_flag (s, loc) = match s with "=" -> DefineNormal | "+=" -> DefineAppend | _ -> raise (OmakeException (loc_exp_pos loc, StringStringError ("undefined assignment operator", s))) (* * Helper functions for building text. *) let string_pair_exp (s, loc) = StringExp (s, loc), loc let string_white_exp (_, loc) = StringExp (" ", loc), loc (* * Convert args to parameters. *) let param_of_arg arg = match arg with StringExp (s, _) | SequenceExp ([StringExp (s, _)], _) -> Lm_symbol.add s | _ -> raise (OmakeException (loc_exp_pos (loc_of_exp arg), StringError "bad function parameter")) let rec simplify e = match e with SequenceExp ([e], _) -> simplify e | _ -> e let sequence_exp l loc = match l with [e] -> e | _ -> SequenceExp (l, loc) let params_of_args args = List.map param_of_arg args (* * Intern the method name. *) let method_id_intern idl = List.map Lm_symbol.add idl (* * Get a string from a method name. *) let method_id_buf idl = let buf = Buffer.create 32 in let rec collect idl = match idl with [id] -> Buffer.add_string buf id | id :: idl -> Buffer.add_string buf id; Buffer.add_char buf '.'; collect idl | [] -> () in collect idl; buf let method_id_string idl = let buf = method_id_buf idl in Buffer.contents buf let method_id_string_exp idl loc = StringExp (method_id_string idl, loc) let method_id_prefix_string_exp idl loc = let buf = method_id_buf idl in Buffer.add_char buf '.'; StringExp (Buffer.contents buf, loc) let var_quote (strategy, s, loc) = KeyExp (strategy, s, loc), loc (* * Convert to a body flag and text. *) let get_optcolon_text opt loc = match opt with None -> OptBody, NullExp loc | Some (body, arg) -> body, arg (* * A 3-place rule. *) let rule3 multiple (target, loc1) ploc pattern source loc2 body = let loc = union_loc loc1 loc2 in match pattern with Some (pattern, _) -> RuleExp (multiple, target, pattern, source, body, loc) | None -> RuleExp (multiple, target, NullExp loc2, source, body, loc) let rule2 multiple target ploc source loc2 body = rule3 multiple target ploc None source loc2 body %} /* * Terminators */ %token TokEof %token TokEol /* * Whitespace. */ %token TokWhite /* * Characters. */ %token TokLeftParen %token TokRightParen %token TokComma %token TokColon %token TokDoubleColon %token TokNamedColon %token TokDollar %token TokEq %token TokArray %token TokDot /* * Words. */ %token TokId %token TokKeyword %token TokCatch %token TokClass %token TokString %token TokBeginQuote %token TokEndQuote %token TokBeginQuoteString %token TokEndQuoteString %token TokStringQuote %token TokVar %token TokVarQuote /* * A complete program. */ %start deps %type <(Omake_ast.exp * Omake_ast.exp * Lm_location.loc) list> deps %start shell %start string %type shell %type string %% /* * A string is just some text. */ string: TokEof { raise End_of_file } | text TokEol TokEof { NoBody, sequence_exp $1 $2 } ; /* * Commands in a shell. * Bodies are usually not allowed. */ shell: TokEof { raise End_of_file } | shell_line TokEof { $1 } ; shell_line: /* Blank lines */ opt_white TokEol { NoBody, sequence_exp [] $2 } /* Builtin functions */ | TokKeyword opt_white keyword_text_optcolon TokEol { let id, loc1 = $1 in let body, arg = get_optcolon_text $3 $4 in let loc = union_loc loc1 $4 in body, CommandExp (Lm_symbol.add id, arg, [], loc) } /* Keyword applications */ | TokKeyword opt_white TokLeftParen opt_params TokRightParen opt_colon TokEol { let id, loc1 = $1 in let body = $6 in let loc = union_loc loc1 $7 in let args = $4 in let e = ApplyExp (EagerApply, Lm_symbol.add id, args, loc) in body, e } /* Catch expression is special */ | TokCatch opt_white TokId opt_white TokLeftParen opt_white TokId opt_white TokRightParen opt_colon TokEol { let _, loc1 = $1 in let loc = union_loc loc1 $11 in let name, _ = $3 in let v, _ = $7 in $10, CatchExp (Lm_symbol.add name, Lm_symbol.add v, [], loc) } /* Class expression is special */ | TokClass opt_id_list TokEol { let _, loc1 = $1 in let loc = union_loc loc1 $3 in NoBody, ClassExp (List.map Lm_symbol.add $2, loc) } /* Variable definition with a body */ | method_id_opt_white TokEq opt_white TokEol { let id, loc1 = $1 in let loc2 = $4 in let id = method_id_intern id in let loc = union_loc loc1 loc2 in let add_flag = define_flag $2 in ColonBody, VarDefBodyExp (id, DefineString, add_flag, [], loc) } /* Object definition with a body */ | method_id_prefix_opt_white TokEq opt_white TokEol { let id, loc1 = $1 in let loc2 = $4 in let id = method_id_intern id in let loc = union_loc loc1 loc2 in let add_flag = define_flag $2 in ColonBody, ObjectDefExp (id, add_flag, [], loc) } /* Variable definition on one line */ | method_id_opt_white TokEq opt_white text_nonempty TokEol { let id, loc1 = $1 in let loc2 = $5 in let e = simplify $4 in let id = method_id_intern id in let loc = union_loc loc1 loc2 in let add_flag = define_flag $2 in NoBody, VarDefExp (id, DefineString, add_flag, e, loc) } /* Key definition with a body */ | var_quote_opt_white TokEq opt_white TokEol { let _, id, loc1 = $1 in let loc2 = $4 in let loc = union_loc loc1 loc2 in let add_flag = define_flag $2 in ColonBody, KeyDefBodyExp (id, DefineString, add_flag, [], loc) } /* Key definition on one line */ | var_quote_opt_white TokEq opt_white text_nonempty TokEol { let _, id, loc1 = $1 in let loc2 = $5 in let e = simplify $4 in let loc = union_loc loc1 loc2 in let add_flag = define_flag $2 in NoBody, KeyDefExp (id, DefineString, add_flag, e, loc) } /* Array definition */ | method_id_opt_white TokArray opt_white TokEq opt_white TokEol { let id, loc1 = $1 in let loc2 = $6 in let id = method_id_intern id in let loc = union_loc loc1 loc2 in let add_flag = define_flag $4 in ArrayBody, VarDefBodyExp (id, DefineArray, add_flag, [], loc) } /* Array definition on one line */ | method_id_opt_white TokArray opt_white TokEq opt_white text_nonempty TokEol { let id, loc1 = $1 in let loc2 = $7 in let id = method_id_intern id in let loc = union_loc loc1 loc2 in let add_flag = define_flag $4 in NoBody, VarDefExp (id, DefineArray, add_flag, $6, loc) } /* Applications that use parens may also have a body */ | method_id_opt_white TokLeftParen opt_params TokRightParen opt_colon TokEol { let id, loc1 = $1 in let body = $5 in let loc = union_loc loc1 $6 in let args = $3 in let e = match id with [id] -> ApplyExp (EagerApply, Lm_symbol.add id, args, loc) | _ -> MethodApplyExp (EagerApply, method_id_intern id, args, loc) in body, e } /* Function definition */ | method_id_opt_white TokLeftParen opt_params TokRightParen opt_white TokEq opt_white TokEol { let id, loc1 = $1 in let args = $3 in let id = method_id_intern id in let params = params_of_args args in let loc = union_loc loc1 $8 in ColonBody, FunDefExp (id, params, [], loc) } /* 2-place rule definition that starts with a name */ | other_id_target TokColon source TokEol { ColonBody, rule2 false $1 $2 $3 $4 [] } | other_id_target TokColon target TokColon source TokEol { ColonBody, rule3 false $1 $2 $3 $5 $6 [] } | other_target TokColon source TokEol { ColonBody, rule2 false $1 $2 $3 $4 [] } | other_target TokDoubleColon source TokEol { ColonBody, rule2 true $1 $2 $3 $4 [] } | other_target TokColon target TokColon source TokEol { ColonBody, rule3 false $1 $2 $3 $5 $6 [] } | other_target TokDoubleColon target TokColon source TokEol { ColonBody, rule3 true $1 $2 $3 $5 $6 [] } /* * Super section. * We have to be careful about distinguishing rules from * super calls. */ | method_id_opt_white TokDoubleColon opt_white source_nonapply TokEol { let idl, loc = $1 in let e = method_id_string_exp idl loc in ColonBody, rule2 true (e, loc) $2 $4 $5 [] } | method_id_prefix_opt_white TokDoubleColon source TokEol { let idl, loc = $1 in let e = method_id_prefix_string_exp idl loc in ColonBody, rule2 true (e, loc) $2 $3 $4 [] } | method_id_opt_white TokDoubleColon opt_white method_id_opt_white TokLeftParen opt_params TokRightParen opt_colon TokEol { let super, loc1 = $1 in let name, _ = $4 in let body = $8 in let loc = union_loc loc1 $9 in let args = $6 in let e = match super, name with [super], [name] -> SuperApplyExp (EagerApply, Lm_symbol.add super, Lm_symbol.add name, args, loc) | _, [_] -> raise (OmakeException (loc_exp_pos loc, StringStringError ("illegal super class", method_id_string super))) | _ -> raise (OmakeException (loc_exp_pos loc, StringStringError ("illegal field name", method_id_string name))) in body, e } /* Anything else is a command to run */ | other_id_target TokEol { let e, loc = $1 in NoBody, ShellExp (e, loc) } | other_target TokEol { let e, loc = $1 in NoBody, ShellExp (e, loc) } ; /* * Dependencies only. */ deps: rev_deps TokEof { List.rev $1 } ; rev_deps: /* empty */ { [] } | rev_deps dep { $2 :: $1 } | rev_deps TokEol { $1 } ; dep: /* 2-place rule dependency */ target TokColon target TokEol { let _, loc2 = $2 in let target, loc1 = match $1 with Some (e, loc1) -> e, loc1 | None -> NullExp loc2, loc2 in let source = match $3 with Some (e, _) -> e | None -> NullExp loc2 in let loc = union_loc loc1 $4 in target, source, loc } ; /* * A variable lookup. */ apply: TokDollar opt_white TokLeftParen opt_white method_name opt_args TokRightParen { let _, strategy, loc1 = $1 in let _, loc2 = $7 in let idl, _ = $5 in let loc = union_loc loc1 loc2 in match idl with [id] -> ApplyExp (strategy, Lm_symbol.add id, $6, loc), loc | _ -> MethodApplyExp (strategy, method_id_intern idl, $6, loc), loc } | TokDollar opt_white TokLeftParen opt_white method_name TokColon neq_arg TokEq arg TokRightParen { let _, strategy, loc1 = $1 in let _, loc2 = $10 in let idl, _ = $5 in let loc = union_loc loc1 loc2 in let arg = match idl with [id] -> ApplyExp (NormalApply, Lm_symbol.add id, [], loc) | _ -> MethodApplyExp (NormalApply, method_id_intern idl, [], loc) in ApplyExp (strategy, replacesuffixes_sym, [$7; $9; arg], loc), loc } | TokDollar opt_white TokLeftParen opt_white id TokDoubleColon id opt_args TokRightParen { let _, strategy, loc1 = $1 in let _, loc2 = $9 in let super, _ = $5 in let v, _ = $7 in let loc = union_loc loc1 loc2 in SuperApplyExp (strategy, Lm_symbol.add super, Lm_symbol.add v, $8, loc), loc } | TokVar { let strategy, id, loc = $1 in ApplyExp (strategy, Lm_symbol.add id, [], loc), loc } | TokBeginQuote rev_text TokEndQuote { let id1, loc1 = $1 in let id2, loc2 = $3 in let loc = union_loc loc1 loc2 in let el = StringExp (id1, loc1) :: List.rev_append $2 [StringExp (id2, loc2)] in QuoteExp (el, loc), loc } | TokBeginQuoteString rev_text TokEndQuoteString { let id, loc1 = $1 in let _, loc2 = $3 in let loc = union_loc loc1 loc2 in QuoteStringExp (id.[0], List.rev $2, loc), loc } | TokStringQuote { let s, loc = $1 in QuoteExp ([StringExp (s, loc)], loc), loc } ; /* * A quoted variable. */ var_quote_opt_white: var_quote { $1 } | var_quote_white { let strategy, id, _, loc = $1 in strategy, id, loc } ; var_quote_white: var_quote TokWhite { let strategy, id, loc = $1 in let s, _ = $2 in strategy, id, s, loc } ; var_quote: TokVarQuote { $1 } ; /* * Variable lookup. */ quote_opt_white: var_quote_opt_white { var_quote $1 } ; quote_white: var_quote_white { let strategy, id, s, loc = $1 in let e, _ = var_quote (strategy, id, loc) in e, s, loc } ; quote: var_quote { var_quote $1 } ; /* * Names separated by dots. */ method_name: rev_method_name { let idl, loc = $1 in List.rev idl, loc } ; rev_method_name: id { let id, loc = $1 in [id], loc } | rev_method_name TokDot id { let idl, loc1 = $1 in let id, loc2 = $3 in id :: idl, union_loc loc1 loc2 } ; id: TokId { $1 } | TokKeyword { $1 } | TokCatch { $1 } | TokClass { $1 } ; opt_id_list: /* empty */ { [] } | opt_id_list white { $1 } | opt_id_list id { let id, _ = $2 in id :: $1 } ; /* * A target after identifier text. * It may not begin with equals, left-paren, or . * and it may not contains colons. */ other_id_target: method_id_opt_white { let idl, loc = $1 in method_id_string_exp idl loc, loc } | method_id_prefix_opt_white { let idl, loc = $1 in method_id_prefix_string_exp idl loc, loc } | quote_opt_white { $1 } ; method_id_opt_white: rev_method_id { let id, loc = $1 in List.rev id, loc } | rev_method_id_white { let id, _, loc = $1 in List.rev id, loc } ; method_id_prefix_opt_white: rev_method_id_prefix { let id, loc = $1 in List.rev id, loc } | rev_method_id_prefix_white { let id, _, loc = $1 in List.rev id, loc } ; rev_method_id_white: rev_method_id TokWhite { let id, loc1 = $1 in let s, loc2 = $2 in let loc = union_loc loc1 loc2 in id, s, loc } ; rev_method_id_prefix_white: rev_method_id_prefix TokWhite { let id, loc1 = $1 in let s, loc2 = $2 in let loc = union_loc loc1 loc2 in id, s, loc } ; rev_method_id: TokId { let id, loc = $1 in [id], loc } | rev_method_id_prefix TokId { let idl, loc1 = $1 in let id, loc2 = $2 in let loc = union_loc loc1 loc2 in id :: idl, loc } ; rev_method_id_prefix: rev_method_id TokDot { let idl, loc1 = $1 in let _, loc2 = $2 in let loc = union_loc loc1 loc2 in idl, loc } ; /* * The other_target collects all the other stuff that * is not a valid command prefix, but it does not allow colons. * Don't worry about catching all the other cases--here * are the things we should not match: * TokKeyword anything * TokCatch anything * method_id_opt_white TokEq * method_id_prefix_opt_white TokEq * method_id_opt_white TokArray * method_id_opt_white TokLeftParen * * So here are the sequences that put us into other mode: * 1. [^ TokKeyword TokCatch TokId TokColon] * 2. method_id [^ TokEq TokArray TokLeftParen TokDot TokWhite TokColon] * 3. method_id_white [^ TokEq TokArray TokLeftParen TokColon] * 4. method_id_prefix [^ TokEq TokWhite TokColon] * 5. method_id_prefix_white [^ TokEq TokColon] * Then collect anything except TokColon */ other_target: rev_other_target { let l, loc = $1 in sequence_exp (List.rev l) loc, loc } ; rev_other_target: other_start { let e, loc = $1 in [e], loc } | rev_method_id other_method_id { let idl, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in let el = [e; method_id_string_exp (List.rev idl) loc1] in el, loc } | rev_method_id_white other_method_id_white { let idl, s, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in let el = [e; StringExp (s, loc1); method_id_string_exp (List.rev idl) loc1] in el, loc } | rev_method_id_prefix other_method_id_prefix { let idl, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in let el = [e; method_id_prefix_string_exp (List.rev idl) loc1] in el, loc } | rev_method_id_prefix_white other_method_id_prefix_white { let idl, s, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in let el = [e; StringExp (s, loc1); method_id_prefix_string_exp (List.rev idl) loc1] in el, loc } | quote other_quote_id { let id, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in let el = [id; e] in el, loc } | quote_white other_quote_id_white { let id, s, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in let el = [id; StringExp (s, loc1); e] in el, loc } | rev_other_target target_next { let el, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in e :: el, loc } ; /************************************************************************ * Source arguments allow named colons. */ source: target { match $1 with Some (e, _) -> SymbolTable.add SymbolTable.empty normal_sym e | None -> SymbolTable.empty } | source TokNamedColon target { let table = $1 in let name, _ = $2 in match $3 with Some (e, _) -> SymbolTable.add table (Lm_symbol.add name) e | None -> table } ; /* * This source cannot look like an application. */ source_nonapply: source_target { match $1 with Some (e, _) -> SymbolTable.add SymbolTable.empty normal_sym e | None -> SymbolTable.empty } | source_nonapply TokNamedColon target { let table = $1 in let name, _ = $2 in match $3 with Some (e, _) -> SymbolTable.add table (Lm_symbol.add name) e | None -> table } ; source_target: /* empty */ { None } | other_id_target { Some $1 } | other_target { Some $1 } ; /************************************************************************ * Sequence sections. */ /* * text: [^ TokEol]* * text_next: [^ TokEol] * Leading whitespace is not stripped. */ text: rev_text { List.rev $1 } ; rev_text: /* empty */ { [] } | rev_text text_next { let e, _ = $2 in e :: $1 } ; /* * target: [^ TokEol TokColon TokNamedColon]* * Leading whitespace is stripped: * target_start: [^ TokEol TokColon TokNamedColon TokWhite] * target_next: [^ TokEol TokColon TokNamedColon] */ target: opt_white { None } | opt_white rev_target { let l, loc = $2 in Some (sequence_exp (List.rev l) loc, loc) } ; rev_target: target_start { let e, loc = $1 in [e], loc } | rev_target target_next { let l, loc1 = $1 in let e, loc2 = $2 in e :: l, union_loc loc1 loc2 } ; /* * text_optcolon: text_colon | text_noncolon * text_colon: [^ TokEol]* TokColon * text_noncolon: ([^ TokEol]* [^ TokEol TokColon])? */ keyword_text_optcolon: /* empty */ { None } | rev_keyword_text { let code, _, el, loc = $1 in Some (code, sequence_exp (List.rev el) loc) } ; rev_keyword_text: keyword_target_start { let e, loc = $1 in OptBody, [], [e], loc } | colon { let e, loc = $1 in ColonBody, [e], [], loc } | rev_keyword_text white { let code, final, prefix, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in code, e :: final, prefix, loc } | rev_keyword_text target_start { let _, final, prefix, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in OptBody, [], e :: (final @ prefix), loc } | rev_keyword_text colon { let _, final, prefix, loc1 = $1 in let e, loc2 = $2 in let loc = union_loc loc1 loc2 in ColonBody, [e], final @ prefix, loc } ; /* * Strip trailing whitespace from nonempty text. */ text_nonempty: rev_text_nonempty { let l, loc = $1 in sequence_exp (List.rev l) loc } ; rev_text_nonempty: text_nonwhite { let e, loc = $1 in [e], loc } | rev_text_nonempty text_next { let l, loc1 = $1 in let e, loc2 = $2 in e :: l, union_loc loc1 loc2 } ; /* * arg: [^ TokEol TokComma TokLeftParen TokRightParen]* * leading whitespace is stripped. */ opt_args: opt_white { [] } | white args { $2 } ; opt_params: opt_white { [] } | args { $1 } ; args: rev_args { List.rev $1 } ; rev_args: arg { [$1] } | rev_args TokComma arg { $3 :: $1 } ; arg: opt_white rev_arg { let l, loc = $2 in sequence_exp (List.rev l) loc } ; rev_arg: arg_start { let e, loc = $1 in [e], loc } | rev_arg arg_next { let l, loc1 = $1 in let e, loc2 = $2 in e :: l, union_loc loc1 loc2 } ; neq_arg: opt_white rev_neq_arg { let l, loc = $2 in sequence_exp (List.rev l) loc } ; rev_neq_arg: neq_arg_start { let e, loc = $1 in [e], loc } | rev_neq_arg neq_arg_next { let l, loc1 = $1 in let e, loc2 = $2 in e :: l, union_loc loc1 loc2 } ; /* * Generated section. */ %%GENERATED%% /* * Optional white space. */ opt_colon: opt_white { OptBody } | opt_white colon opt_white { ColonBody } ; opt_white: /* empty */ { None } | TokWhite { Some $1 } ; omake-0.9.8.5/src/env/omake_ast_lex.mli0000664000152300015230000000311410456240612016027 0ustar jyhjyh(* * Lexer for OMakefile's * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lexing open Lm_location open Omake_ast val debug_lex : bool ref (* * Parse the OMakefile. *) val parse_ast : string -> prog val parse_string : string -> prog val parse_deps : string -> (exp * exp * loc) list (* * Shell gets its own handle. *) type session val current_location : session -> loc val create_shell : unit -> session val parse_shell : session -> string -> exp list (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/env/omake_exn_print.ml0000664000152300015230000001114210640246522016226 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_location open Omake_ast open Omake_env open Omake_pos open Omake_symbol open Omake_value_type open Omake_value_print module Pos = MakePos (struct let name = "Omake_exn_print" end);; open Pos (* * Other exception. *) let pp_print_other_exn buf exn = match exn with Unix.Unix_error (errno, f, arg) -> fprintf buf "@[%s(%s): %s@]" (**) f arg (Unix.error_message errno) | Sys_error s -> fprintf buf "@[Sys_error: %s@]" s | Sys.Break -> fprintf buf "@[Break@]" | Failure s -> fprintf buf "Failure: %s" s | Invalid_argument s -> fprintf buf "Invalid argument: %s" s | exn -> fprintf buf "@[%s@]" (**) (Printexc.to_string exn) let pp_print_obj_err buf obj = if venv_defined_field_internal obj message_sym then match venv_find_field_internal_exn obj message_sym with ValString s | ValData s -> begin match Lm_string_util.split "\n" s with [] -> () | s :: sl -> pp_print_string buf s; List.iter (fun s -> pp_force_newline buf (); pp_print_string buf s) sl end | v -> pp_print_value buf v else pp_print_value buf (ValObject obj) (* * Exception printer. *) let pp_print_exn buf exn = match exn with OmakeException (pos, exn) -> fprintf buf "@[*** omake error:@ %a@ %a@]" (**) pp_print_pos pos pp_print_exn exn | OmakeFatalErr (pos, exn) -> fprintf buf "@[*** omake fatal error:@ %a@ %a@]" (**) pp_print_pos pos pp_print_exn exn | UncaughtException (pos, exn) -> fprintf buf "@[*** omake error:@ %a@ %a@]" (**) pp_print_pos pos pp_print_other_exn exn | RaiseException (pos, obj) -> fprintf buf "@[*** omake error:@ %a@ @[Uncaught Exception:@ %a@]@]" (**) pp_print_pos pos pp_print_obj_err obj | OmakeFatal s -> fprintf buf "@[*** omake fatal error:@ %s@]" s | ExitParentException (pos, code) | ExitException (pos, code) -> fprintf buf "@[*** omake %s:@ %a@ early exit(%i) requested by an omake file@]" (**) (if code = 0 then "warning" else "error") pp_print_pos pos code | Return (loc, _) -> fprintf buf "@[*** omake internal error:@ %a@ uncaught return@]" (**) pp_print_location loc | exn -> fprintf buf "@[*** omake error:@ %a@]" pp_print_other_exn exn (* * If one of these exceptions occurs during process creation, * treat it as a command failure. *) let is_shell_exn exn = match exn with OmakeException _ | OmakeFatalErr _ | OmakeFatal _ | UncaughtException _ | RaiseException _ | Unix.Unix_error _ | Sys_error _ | Failure _ | Invalid_argument _ | Return _ -> true | _ -> false (* * Exception handler. *) let catch f x = try f x with OmakeException _ | OmakeFatalErr _ | OmakeFatal _ | UncaughtException _ | RaiseException _ | Unix.Unix_error _ | Sys_error _ | Return _ as exn -> eprintf "%a@." pp_print_exn exn; exit Omake_state.exn_error_code | ExitParentException (_, code) | ExitException (_, code) as exn -> eprintf "%a@." pp_print_exn exn; exit code (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/env/omake_command_digest.mli0000664000152300015230000000277410641254163017362 0ustar jyhjyh(* * Compute a digest of a value. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Omake_ir open Omake_env open Omake_pos open Omake_value_type open Omake_command_type (* * Digests. *) val digest_of_exp : pos -> value list -> exp -> command_digest val digest_of_commands : pos -> arg_command_line list -> command_digest (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/env/omake_gen_parse.ml0000664000152300015230000001374410616414475016204 0ustar jyhjyh(* * Bah, autogenerate the parse tables. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Printf (************************************************************************ * Tokens and their productions. *) let tokens = ["TokWhite"; "TokLeftParen"; "TokRightParen"; "TokComma"; "TokColon"; "TokDoubleColon"; "TokNamedColon"; "TokEq"; "TokArray"; "TokDot"; "TokId"; "TokKeyword"; "TokCatch"; "TokClass"; "TokString"] let named_tokens = ["quote", "{ $1 }"; "apply", "{ $1 }"] let tokens = let tokens = List.map (fun s -> s, "{ string_pair_exp $1 }") tokens in tokens @ named_tokens (************************************************************************ * Sets of tokens. *) let colon = ["TokColon"; "TokDoubleColon"; "TokNamedColon"] let id = ["TokId"; "TokKeyword"; "TokCatch"; "TokClass"] let white = ["TokWhite"] let parens = ["TokLeftParen"; "TokRightParen"; "TokComma"] (************************************************************************ * Productions. *) let subtract l1 l2 = List.fold_left (fun l1 v -> List.remove_assoc v l1) l1 l2 let add l1 l2 = List.fold_left (fun l v -> (v, List.assoc v l1) :: l) [] l2 let text_next = tokens let text_nonwhite = subtract tokens white let target_next = subtract tokens colon let target_start = subtract target_next white let keyword_target_start = subtract target_start ["TokLeftParen"] let arg_next = subtract tokens parens let arg_start = subtract arg_next white let neq_arg_next = subtract arg_next ["TokEq"] let neq_arg_start = subtract arg_start ["TokEq"] let other_start = subtract tokens ("TokWhite" :: "quote" :: List.flatten [id; colon]) let other_method_id_white = subtract tokens ("TokEq" :: "TokArray" :: "TokLeftParen" :: "TokColon" :: colon) let other_method_id = subtract other_method_id_white ("TokDot" :: white) let other_method_id_prefix_white = subtract tokens ("TokId" :: "TokEq" :: colon) let other_method_id_prefix = subtract other_method_id_prefix_white white let other_quote_id_white = subtract tokens ("TokEq" :: "TokColon" :: colon) let other_quote_id = subtract other_quote_id_white white let productions = ["colon", add tokens colon; "white", add tokens white; "text_next", text_next; "text_nonwhite", text_nonwhite; "target_next", target_next; "target_start", target_start; "keyword_target_start", keyword_target_start; "arg_next", arg_next; "arg_start", arg_start; "neq_arg_next", neq_arg_next; "neq_arg_start", neq_arg_start; "other_start", other_start; "other_method_id_white", other_method_id_white; "other_method_id", other_method_id; "other_method_id_prefix_white", other_method_id_prefix_white; "other_method_id_prefix", other_method_id_prefix; "other_quote_id_white", other_quote_id_white; "other_quote_id", other_quote_id] let print_productions outx = List.iter (fun (v, tokens) -> fprintf outx "%s:\n" v; List.iter (fun (v, body) -> fprintf outx "\t| %s\n\t\t%s\n" v body) tokens; fprintf outx "\t;\n") productions (************************************************************************ * Process the input file, and write the output file. *) let copy inx outx = let rec copy_exn () = let line = input_line inx in let line = let l = String.length line in if l > 0 then let l = l - 1 in match line.[l] with '\n' | '\r' -> String.sub line 0 l | _ -> line else line in if line = "%%GENERATED%%" then print_productions outx else fprintf outx "%s\n" line; copy_exn () in let () = try copy_exn () with End_of_file -> () in close_in inx; close_out outx let infile = ref None let outfile = ref None let spec = ["-o", Arg.String (fun s -> outfile := Some s), "set output file"] let usage = "Generate parse file" let set_input s = infile := Some s let main () = Arg.parse spec set_input usage; let inx = match !infile with Some file -> open_in file | None -> stdin in let outx = match !outfile with Some file -> open_out file | None -> stdout in copy inx outx let () = Printexc.catch main () (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/env/omake_ir_semant.ml0000664000152300015230000003350410657124511016210 0ustar jyhjyh(* * Operations: * 1. Check that all return/export operations are in legal * places. * 2. Add final operations to sequences that don't already * have them. * 3. Add return handlers to functions that have nontrivial * return statements. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Lm_printf open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_options open Omake_ir_util open Omake_value_type module Pos = MakePos (struct let name = "Omake_ir_semant" end) open Pos (* * Synthesized attributes. * renv_has_return : is there a non-tail return? * renv_is_final : code after this point is never executed *) type renv = { renv_has_return : bool; renv_is_final : bool; renv_is_value : bool } (* * Inherited attributes. * env_in_function : currently within a function body * env_in_cond : currently within a conditional * env_is_tail : the current expression is in final position *) type env = { env_warnings : loc option ref; env_in_function : bool; env_in_cond : bool; env_section_tail : bool; env_function_tail : bool } (* * Return environments. *) let renv_empty = { renv_has_return = false; renv_is_final = false; renv_is_value = false } let renv_value = { renv_has_return = false; renv_is_final = false; renv_is_value = true } let renv_final = { renv_has_return = false; renv_is_final = true; renv_is_value = true } let renv_return = { renv_has_return = true; renv_is_final = true; renv_is_value = true } (* * Normal environment, not in a function. *) let env_empty () = { env_warnings = ref None; env_in_function = false; env_in_cond = false; env_section_tail = false; env_function_tail = false } let env_object env = { env_warnings = env.env_warnings; env_in_function = false; env_in_cond = false; env_section_tail = false; env_function_tail = false } let env_object_tail env = { env_warnings = env.env_warnings; env_in_function = false; env_in_cond = false; env_section_tail = true; env_function_tail = true } (* * Fresh environment for a function body. *) let env_fun env = { env_warnings = env.env_warnings; env_in_function = true; env_in_cond = false; env_section_tail = true; env_function_tail = true } let update_return renv has_return = { renv with renv_has_return = renv.renv_has_return || has_return } (* * Error checkers. *) let check_return_placement env loc = if not env.env_in_function then let pos = string_pos "check_in_function" (loc_exp_pos loc) in let print_error buf = fprintf buf "@[Misplaced return statement."; fprintf buf "@ The return is not within a function.@]" in raise (OmakeException (pos, LazyError print_error)) else if not (env.env_function_tail || env.env_section_tail && env.env_in_cond) then begin eprintf "@[*** omake warning: %a@ statements after this return are not reached@]@." pp_print_location loc; env.env_warnings := Some loc end let check_section_tail env loc = if not env.env_section_tail then let pos = string_pos "check_section_tail" (loc_exp_pos loc) in raise (OmakeException (pos, StringError "This should be the last expression in the section.")) let check_object_tail env loc = if env.env_in_function || not env.env_section_tail then let pos = string_pos "check_object_tail" (loc_exp_pos loc) in raise (OmakeException (pos, StringError "This should be the last expression in the object.")) (* * Convert a string expression. *) let rec build_string env s = let env = { env with env_function_tail = false } in match s with NoneString _ | ConstString _ | ThisString _ | KeyApplyString _ | VarString _ -> false, s | ApplyString (loc, strategy, v, args) -> let has_return, args = build_string_list env args in has_return, ApplyString (loc, strategy, v, args) | SuperApplyString (loc, strategy, v1, v2, args) -> let has_return, args = build_string_list env args in has_return, SuperApplyString (loc, strategy, v1, v2, args) | MethodApplyString (loc, strategy, v, vl, args) -> let has_return, args = build_string_list env args in has_return, MethodApplyString (loc, strategy, v, vl, args) | SequenceString (loc, sl) -> let has_return, sl = build_string_list env sl in has_return, SequenceString (loc, sl) | ArrayString (loc, sl) -> let has_return, sl = build_string_list env sl in has_return, ArrayString (loc, sl) | ArrayOfString (loc, s) -> let has_return, s = build_string env s in has_return, ArrayOfString (loc, s) | QuoteString (loc, sl) -> let has_return, sl = build_string_list env sl in has_return, QuoteString (loc, sl) | QuoteStringString (loc, c, sl) -> let has_return, sl = build_string_list env sl in has_return, QuoteStringString (loc, c, sl) | ObjectString (loc, el, export) -> let el = build_object_exp env el in (* XXX: we should handle the case when an object contains a return *) false, ObjectString (loc, el, export) | BodyString (loc, el, export) -> let renv, el = build_sequence_exp env el in renv.renv_has_return, BodyString (loc, el, export) | ExpString (loc, el, export) -> let renv, el = build_sequence_exp env el in renv.renv_has_return, ExpString (loc, el, export) | CasesString (loc, cases) -> let env = { env with env_in_cond = true } in let has_return, cases = List.fold_left (fun (has_return, cases) (v, s, el, export) -> let has_return2, s = build_string env s in let renv, e = build_sequence_exp env el in let has_return = has_return || has_return2 || renv.renv_has_return in has_return, (v, s, e, export) :: cases) (false, []) cases in has_return, CasesString (loc, List.rev cases) and build_string_list env sl = let has_return, sl = List.fold_left (fun (has_return, sl) s -> let has_return2, s = build_string env s in has_return || has_return2, s :: sl) (false, []) sl in has_return, List.rev sl (* * Convert the current expression. *) and build_exp env e = match e with LetFunExp (loc, v, vl, vars, el, export) -> let renv, el = build_sequence_exp (env_fun env) el in let el = if renv.renv_has_return then [ReturnBodyExp (loc, el)] else el in let e = LetFunExp (loc, v, vl, vars, el, export) in renv_empty, e | LetObjectExp (loc, v, vl, s, el, export) -> let el = build_object_exp env el in let has_return, s = build_string env s in let e = LetObjectExp (loc, v, vl, s, el, export) in update_return renv_empty has_return, e | StaticExp (loc, node, v, el) -> let el = build_object_exp env el in let e = StaticExp (loc, node, v, el) in renv_empty, e | IfExp (loc, cases) -> let renv, cases = build_cases_exp env cases in let e = IfExp (loc, cases) in renv, e | SequenceExp (loc, el) -> let renv, el = build_sequence_exp env el in let e = SequenceExp (loc, el) in renv, e | SectionExp (loc, s, el, export) -> let has_return, s = build_string env s in let renv, el = build_sequence_exp env el in let e = SectionExp (loc, s, el, export) in update_return renv has_return, e | ReturnBodyExp (loc, el) -> let renv, el = build_sequence_exp env el in let el = ReturnBodyExp (loc, el) in renv, el | LetVarExp (loc, v, vl, kind, s) -> let has_return, s = build_string env s in let e = LetVarExp (loc, v, vl, kind, s) in update_return renv_empty has_return, e | IncludeExp (loc, s, sl) -> let has_return1, s = build_string env s in let has_return2, sl = build_string_list env sl in let e = IncludeExp (loc, s, sl) in update_return renv_empty (has_return1 || has_return2), e | ApplyExp (loc, v, args) -> let has_return, args = build_string_list env args in let e = ApplyExp (loc, v, args) in update_return renv_empty has_return, e | SuperApplyExp (loc, v1, v2, args) -> let has_return, args = build_string_list env args in let e = SuperApplyExp (loc, v1, v2, args) in update_return renv_empty has_return, e | MethodApplyExp (loc, v, vl, args) -> let has_return, args = build_string_list env args in let e = MethodApplyExp (loc, v, vl, args) in update_return renv_empty has_return, e | LetKeyExp (loc, v, kind, s) -> let has_return, s = build_string env s in let e = LetKeyExp (loc, v, kind, s) in update_return renv_empty has_return, e | LetThisExp (loc, s) -> let has_return, s = build_string env s in let e = LetThisExp (loc, s) in update_return renv_empty has_return, e | ShellExp (loc, s) -> let has_return, s = build_string env s in let e = ShellExp (loc, s) in update_return renv_value has_return, e | KeyExp _ | OpenExp _ -> renv_empty, e | StringExp (loc, s) -> let has_return, s = build_string env s in let e = StringExp (loc, s) in update_return renv_value has_return, e | ReturnExp (loc, s) -> check_return_placement env loc; let has_return, s = build_string env s in if env.env_function_tail then update_return renv_final has_return, StringExp (loc, s) else renv_return, ReturnExp (loc, s) | ReturnObjectExp (loc, _) | ReturnSaveExp loc -> check_object_tail env loc; renv_final, e (* * An object expression is an expression sequence, * but it is not in a function. *) and build_object_exp_aux env el = match el with [e] -> let _, e = build_exp (env_object_tail env) e in [e] | e :: el -> let _, e = build_exp env e in let el = build_object_exp_aux env el in e :: el | [] -> [] and build_object_exp env el = build_object_exp_aux (env_object env) el (* * A new sequence expression. * It should be terminated with a final statement. *) and build_sequence_exp env el = let env_non_tail = { env with env_section_tail = false; env_function_tail = false } in let rec build_sequence_core has_return rel el = match el with [e] -> let env_tail = { env with env_section_tail = true } in let renv, e = build_exp env_tail e in let rel = e :: rel in update_return renv has_return, rel | e :: el -> let renv, e = build_exp env_non_tail e in let has_return = has_return || renv.renv_has_return in let rel = e :: rel in build_sequence_core has_return rel el | [] -> renv_empty, [] in let renv, rel = build_sequence_core false [] el in renv, List.rev rel (* * Cases are slightly different from sequences because * returns are always allowed. Note that the completeness is * not checked, so even if all cases end in a return, * evaluation may continue from here. *) and build_cases_exp env cases = let env = { env with env_in_cond = true; env_section_tail = true } in let has_return, cases = List.fold_left (fun (has_return, cases) (s, el, export) -> let renv, el = build_sequence_exp env el in let has_return = has_return || renv.renv_has_return in has_return, (s, el, export) :: cases) (false, []) cases in let cases = List.rev cases in let renv = { renv_is_final = false; renv_is_value = true; renv_has_return = has_return } in renv, cases (************************************************************************ * Main function *) let build_prog venv e = let env = env_empty () in let _, e = build_exp env e in let count = !(env.env_warnings) in let () = match count with Some loc when opt_warn_error (venv_options venv) -> raise (OmakeException (loc_exp_pos loc, StringError "warnings treated as errors")) | _ -> () in e (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/env/omake_ir_ast.ml0000664000152300015230000022400510642240747015512 0ustar jyhjyh(* * Convert the AST to an IR representation. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_location open Lm_symbol open Lm_lexer open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_node open Omake_symbol open Omake_options open Omake_node_sig open Omake_ir_print open Omake_value_type module Pos = MakePos (struct let name = "Omake_ir_ast" end) open Pos;; (************************************************************************ * Variable checking. *) (*XXX*) let raise_var_def_error pos info1 info2 = let print_error buf = let loc, _ = var_of_var_info info2 in fprintf buf "@[Variable declaration mismatch:@ variable@ %a@ is already defined as@ %a@ %a@]" (**) pp_print_var_info info1 pp_print_var_info info2 pp_print_location loc in raise (OmakeException (pos, LazyError print_error)) let check_vars pos info1 info2 = match info1, info2 with VarPrivate (_, v1), VarPrivate (_, v2) -> if not (Lm_symbol.eq v1 v2) then raise_var_def_error pos info1 info2 | VarThis (_, v1), VarThis (_, v2) -> if not (Lm_symbol.eq v1 v2) then raise_var_def_error pos info1 info2 | VarVirtual (_, v1), VarVirtual (_, v2) -> if not (Lm_symbol.eq v1 v2) then raise_var_def_error pos info1 info2 | VarGlobal (_, v1), VarGlobal (_, v2) -> if not (Lm_symbol.eq v1 v2) then raise_var_def_error pos info1 info2 | _ -> () (*/XXX*) (************************************************************************ * Declaration checking. *) (* * Forced variables. *) module type ForcedVarsSig = sig type t val empty : t val mem : t -> var -> bool val add_var : t -> pos -> var -> var_info -> t val add_param : t -> pos -> var -> var_info -> t val add_extern : t -> var -> var_info -> t val find_var : t -> var -> var_info val fold_var : ('a -> var -> var_info -> 'a) -> 'a -> t -> 'a val to_vars : t -> senv end;; module ForcedVars : ForcedVarsSig = struct type forced_info = (* Variable in this file *) ForcedVar of var_info (* Variable defined outside this file (usually builtin) *) | ForcedExtern of var_info type t = forced_info SymbolTable.t let empty = SymbolTable.empty let mem = SymbolTable.mem let find_var env v = match SymbolTable.find env v with ForcedVar info | ForcedExtern info -> info let find_local_var env v = match SymbolTable.find env v with ForcedVar info -> info | ForcedExtern info -> raise Not_found let add_param env pos v info = SymbolTable.add env v (ForcedVar info) let add_var env pos v info = SymbolTable.add env v (ForcedVar info) let add_extern env v info = SymbolTable.add env v (ForcedExtern info) let fold_var f x env = SymbolTable.fold (fun x v info -> match info with | ForcedExtern _ -> x | ForcedVar info -> f x v info) x env (* * Extract the set of vars so they can be re-used. *) let to_vars env = fold_var SymbolTable.add SymbolTable.empty env end;; (* * Some values get checked against corresponding definitions. *) module type AllVarsSig = sig type t val empty : t val add : t -> simple_var_info -> var_info -> t val find : t -> simple_var_info -> var_info val iter : (simple_var_info -> var_info -> unit) -> t -> unit end;; module AllVars : AllVarsSig = struct type t = var_info SimpleVarTable.t (* Inherit *) let empty = SimpleVarTable.empty let find = SimpleVarTable.find let iter = SimpleVarTable.iter let add = SimpleVarTable.add end;; (************************************************************************ * Types. *) type ast_exp = Omake_ast.exp (* * Environment for parsing AST files. *) type senv_open_file = string -> pos -> loc -> Node.t * senv (* * Are we toplevel, or in an object, or a function. *) type context = ContextTop | ContextFunction | ContextObject (* * What to export from the current section. *) type export_mode = ExportNoneMode | ExportAllMode of loc | ExportListMode of loc * export_item list (* * Context environment. This is strictly scoped, * and not affected by exports. *) type cenv = { (* The forcing mode, if there is one *) cenv_scope : var_scope option; (* Are we in an object, or a function, or toplevel? *) cenv_context : context; } (* * Scoping environment. * The values here are affected by exports. *) type senv = { (* Forced, non-private definitions in the current object/file *) senv_object_senv : Omake_ir.senv; (* The variables that we know about *) senv_update_vars : Omake_ir.senv; senv_forced_vars : ForcedVars.t; senv_all_vars : AllVars.t; (* What sections are exporting *) senv_export_mode : export_mode; (* The current environment *) senv_venv : venv } (* * Object environment. * * This is an environment that is global to each object. * That is, each object gets a fresh environment. *) type oenv = { (* Class names for the current object *) oenv_class_names : SymbolSet.t; } (* * Global environment. *) type genv = { (* How to open a file *) genv_open_file : senv_open_file; (* The name of this file *) genv_file : Node.t; (* Index of the next static section *) genv_static_index : int; (* Count up the number of warnings *) genv_warning_count : int } (* * Parsing environment has a set of environments. *) type penv = genv * oenv * senv * cenv (* * Static results. We use this to keep track of what is being * exported. * * ValValue: a value, or something besides an export * ValExport: exporting some variables * ValNotReached: the statement is never executed * (because it is after a return statement) *) type value = ValValue | ValNotReached | ValExport of var_info SymbolTable.t (************************************************************************ * Name info. *) let empty_name_info = { name_static = false; name_scope = None } let is_nonempty_name_info info = info <> empty_name_info (* * Empty object environment. *) let oenv_empty = { oenv_class_names = SymbolSet.empty; } (************************************************************************ * Utilities. *) (* * Add a warning. *) let genv_add_warning genv = { genv with genv_warning_count = succ genv.genv_warning_count } let genv_warn_error genv senv = let { genv_file = file; genv_warning_count = count } = genv in if count <> 0 && opt_warn_error (venv_options senv.senv_venv) then let filename = Node.absname file in let loc = Lm_location.bogus_loc filename in raise (OmakeException (loc_exp_pos loc, StringIntError ("warnings treated as errors", count))) (************************************************************************ * Utilities. *) (* * In a nested object, all currently protected vars become private. *) let nested_object_vars vars = SymbolTable.map (function VarThis (loc, v) -> VarPrivate (loc, v) | x -> x) vars (* * Collect the cases in a conditional. *) let rec collect_if cases el = match el with Omake_ast.CommandExp (v, e, body, loc) :: el when Lm_symbol.eq v elseif_sym -> collect_if ((e, body) :: cases) el | Omake_ast.CommandExp (v, e, body, loc) :: el when Lm_symbol.eq v else_sym -> let cases = (Omake_ast.StringExp ("true", loc), body) :: cases in List.rev cases, el | _ -> List.rev cases, el let is_true_string s = match s with Omake_ast.StringExp ("true", _) -> true | _ -> false (* * Generic case collection. *) let rec collect_cases cases el = match el with (Omake_ast.CommandExp (v, e, body, _) :: el) when SymbolSet.mem clauses_set v -> collect_cases ((v, e, body) :: cases) el | (Omake_ast.CatchExp (v1, v2, body, loc) :: el) -> collect_cases ((v1, Omake_ast.StringExp (Lm_symbol.to_string v2, loc), body) :: cases) el | _ -> List.rev cases, el (* * Extract an option. *) let extract_option loc map key = try let x = SymbolTable.find map key in let map = SymbolTable.remove map key in x, map with Not_found -> Omake_ast.NullExp loc, map let build_bool_exp loc b = ConstString (loc, if b then "true" else "false") (************************************************************************ * Environments. *) (* * Simple variables. *) let var_scope_of_var_info = function VarPrivate _ -> VarScopePrivate | VarThis _ -> VarScopeThis | VarVirtual _ -> VarScopeVirtual | VarGlobal _ -> VarScopeGlobal (* * What is the actual mode of a variable in a context? *) let cenv_var_scope cenv info = let scope = match cenv.cenv_context, info.name_scope with ContextTop, None | ContextFunction, None | _, Some VarScopeVirtual -> VarScopeVirtual | ContextObject, None | _, Some VarScopeThis -> VarScopeThis | _, Some VarScopePrivate -> VarScopePrivate | _, Some VarScopeGlobal -> VarScopeGlobal in scope (* * Force the scope. *) let cenv_update_scope cenv info = let scope = match info.name_scope with None -> cenv.cenv_scope | scope -> scope in { info with name_scope = scope; } let cenv_scope cenv = let { cenv_scope = scope; } = cenv in { name_scope = scope; name_static = false } let cenv_force_scope cenv info = let info = cenv_update_scope cenv info in { cenv with cenv_scope = info.name_scope } let cenv_fun_scope cenv = { (* cenv with *) cenv_scope = None; cenv_context = ContextFunction } let cenv_rule_scope = cenv_fun_scope let cenv_sequence_scope cenv el = cenv (* * Get a new static symbol. *) let genv_new_index genv = let index = genv.genv_static_index in let genv = { genv with genv_static_index = succ index } in genv, index let genv_new_symbol_string name genv = let genv, index = genv_new_index genv in let v = Lm_symbol.make name index in genv, v let genv_new_static_id = genv_new_symbol_string "static" (* * Create the IR, and reset the env. *) let genv_close genv oenv senv e = let vars = ForcedVars.to_vars senv.senv_forced_vars in let ir = { ir_classnames = SymbolSet.to_list oenv.oenv_class_names; ir_vars = vars; ir_exp = e } in genv, oenv, senv, ir (* * Create the environment when we enter a new object from a virtual object. *) let senv_object_body senv cenv v = let senv = { senv with senv_object_senv = SymbolTable.empty; senv_update_vars = SymbolTable.empty } in let cenv = { (* cenv with *) cenv_scope = Some VarScopeThis; cenv_context = ContextObject } in senv, cenv let senv_static_body = senv_object_body (************************************************************************ * Variable exporting. *) (* * Add all the vars to the parent environment. * Add only those vars we don't already know about. *) let senv_add_export_all pos senv1 forced_vars2 = let pos = string_pos "senv_add_export_all" pos in let { senv_object_senv = object_senv1; senv_update_vars = update_vars1; senv_forced_vars = forced_vars1; senv_all_vars = all_vars1 } = senv1 in (* Don't export the private forced vars *) let object_senv, update_vars, forced_vars, all_vars = SymbolTable.fold (fun (object_senv, update_vars, forced_vars, all_vars) v info2 -> try let info1 = ForcedVars.find_var forced_vars v in check_vars pos info2 info1; object_senv, update_vars, forced_vars, all_vars with Not_found -> match info2 with VarPrivate _ | VarThis _ | VarVirtual _ | VarGlobal _ -> let object_senv = SymbolTable.add object_senv v info2 in let update_vars = SymbolTable.add update_vars v info2 in let forced_vars = ForcedVars.add_var forced_vars pos v info2 in let all_vars = AllVars.add all_vars (var_scope_of_var_info info2, v) info2 in object_senv, update_vars, forced_vars, all_vars) (**) (object_senv1, update_vars1, forced_vars1, all_vars1) forced_vars2 in { senv1 with senv_object_senv = object_senv; senv_update_vars = update_vars; senv_forced_vars = forced_vars; senv_all_vars = all_vars } (* * Merge the exports from several cases. * Export all the vars, but issue warnings if the exports exist in * some, but not the others. *) let var_union _ _ _ = raise (Invalid_argument "Omake_ir_ast.senv_merge_forced_vars: internal error") let rec senv_merge_forced_vars pos export1 exports errors = let pos = string_pos "senv_merge_forced_vars" pos in match exports with export2 :: exports -> (* Check that all exports from export1 match up in export2 *) let export2, errors = SymbolTable.fold (fun (export2, errors) v info1 -> try let info2 = SymbolTable.find export2 v in check_vars pos info1 info2; SymbolTable.remove export2 v, errors with Not_found -> export2, SymbolTable.add errors v info1) (export2, errors) export1 in (* All remaining variables in export2 are errors *) let errors = SymbolTable.union var_union errors export2 in let export1 = SymbolTable.union var_union export1 export2 in senv_merge_forced_vars pos export1 exports errors | [] -> export1, errors (* * Print the error messages for any variables that are not * already defined. *) let warned_solution = ref false let senv_warn_merge_errors genv senv loc errors = let forced_vars = senv.senv_forced_vars in let errors = SymbolTable.fold (fun errors v info -> match info with VarPrivate _ -> errors | _ -> if ForcedVars.mem forced_vars v then errors else info :: errors) [] errors in if errors <> [] && opt_warn_declare (venv_options senv.senv_venv) then begin eprintf "@[%a" pp_print_location loc; if not !warned_solution then begin eprintf "@ The following variables are exported in some cases, but not others."; eprintf "@ @[Declare or define these variables if you want to avoid this warning."; warned_solution := true end else eprintf "@ @[The following variables are exported in some cases, but not others."; List.iter (fun info -> eprintf "@ %a" pp_print_var_info info) errors; eprintf "@]@]@." end (* * Merge the exports from the cases. * At least one of the cases is an export. * If they are not all exports, then check that the variables * being exported are already declared. *) let senv_merge_exports genv senv1 cenv pos loc results is_complete = let pos = string_pos "senv_merge_exports" pos in let is_complete, exports = List.fold_left (fun (is_complete, exports) result -> match result with ValValue | ValNotReached -> false, exports | ValExport forced_vars -> is_complete, forced_vars :: exports) (is_complete, []) results in let export1, exports = if is_complete then match exports with export1 :: exports -> export1, exports | [] -> raise (Invalid_argument "senv_merge_exports: empty exports") else SymbolTable.empty, exports in let exports, errors = senv_merge_forced_vars pos export1 exports SymbolTable.empty in let () = senv_warn_merge_errors genv senv1 loc errors in let senv = senv_add_export_all pos senv1 exports in senv, ValValue (* * Merge the exports only if the results contain an export. *) let all_results_are_not_reached results = List.for_all (fun result -> result = ValNotReached) results let all_results_are_values_or_not_reached results = List.for_all (fun result -> match result with ValValue | ValNotReached -> true | ValExport _ -> false) results let senv_merge_results genv senv1 cenv pos loc results is_complete = let pos = string_pos "senv_merge_results" pos in if is_complete && all_results_are_not_reached results then senv1, ValNotReached else if all_results_are_values_or_not_reached results then senv1, ValValue else senv_merge_exports genv senv1 cenv pos loc results is_complete (* * Merge the exports from an inner section. *) let senv_export_section senv pos result = let pos = string_pos "senv_export_section" pos in match result with ValExport exports -> senv_add_export_all pos senv exports, ValValue | ValValue | ValNotReached -> senv, result (* * Warn if a statement is not reached. *) let senv_warn_not_reached genv e result = match result with ValNotReached -> let loc = Omake_ast_util.loc_of_exp e in eprintf "@[*** omake warning: %a@ statement not reached@]@." pp_print_location loc; genv_add_warning genv | ValValue | ValExport _ -> genv (* * Get the export vars. *) let senv_export_all_vars senv = ForcedVars.fold_var (fun forced_vars v info -> match info with | VarPrivate _ | VarThis _ | VarVirtual _ | VarGlobal _ -> SymbolTable.add forced_vars v info) SymbolTable.empty senv.senv_forced_vars let senv_export_var_list items = List.fold_left (fun vars item -> match item with ExportRules | ExportPhonies -> vars | ExportVar info -> let _, v = var_of_var_info info in SymbolTable.add vars v info) SymbolTable.empty items let senv_export_value senv info = match info with Omake_ir.ExportNone -> SymbolTable.empty | Omake_ir.ExportAll -> senv_export_all_vars senv | Omake_ir.ExportList items -> senv_export_var_list items (* * Items from the export mode. *) let items_of_export_mode = function ExportNoneMode | ExportAllMode _ -> [] | ExportListMode (_, items) -> items (* * Compute the exports in the current environment. *) let senv_add_exports senv result = match result, senv.senv_export_mode with ValNotReached, _ | _, ExportNoneMode -> Omake_ir.ExportNone, ValValue | _, ExportAllMode _ -> Omake_ir.ExportAll, ValExport (senv_export_all_vars senv) | _, ExportListMode (_, items) -> Omake_ir.ExportList items, ValExport (senv_export_var_list items) (************************************************************************ * Variables. *) (* * Create a variable that refers to the Pervasives module. *) let create_pervasives_var loc v = VarVirtual (loc, v) (* * Create a variable for the given scope. * If we are not in an object, then this is actually a file variable. *) let create_var genv oenv senv cenv loc scope v = match scope with VarScopePrivate -> VarPrivate (loc, v) | VarScopeThis -> VarThis (loc, v) | VarScopeVirtual -> VarVirtual (loc, v) | VarScopeGlobal -> VarGlobal (loc, v) (* * Strip the leading qualifiers. *) let parse_declaration senv pos loc vl = (* Check scoping *) let make_forced_scope info scope2 = match info.name_scope with Some scope1 -> let print_error buf = fprintf buf "multiple declaration modes: %a and %a" (**) pp_print_var_scope scope1 pp_print_var_scope scope2 in raise (OmakeException (loc_pos loc pos, LazyError print_error)) | None -> { info with name_scope = Some scope2 } in (* Read all the qualifiers *) let rec parse info vl = match vl with [] -> NameEmpty info | scope_var :: vl -> if Lm_symbol.eq scope_var private_sym then parse (make_forced_scope info VarScopePrivate) vl else if Lm_symbol.eq scope_var this_sym || Lm_symbol.eq scope_var protected_sym then parse (make_forced_scope info VarScopeThis) vl else if Lm_symbol.eq scope_var public_sym || Lm_symbol.eq scope_var global_sym then parse (make_forced_scope info VarScopeVirtual) vl else if Lm_symbol.eq scope_var static_sym then parse { info with name_static = true } vl (* ZZZ: Ignore the const modifier in 0.9.8 *) else if Lm_symbol.eq scope_var const_sym then parse info vl else NameMethod (info, scope_var, vl) in parse empty_name_info vl (************************************************************************ * Scoping. *) (* * Builtin-vars. *) let builtin_vars = SymbolSet.of_list [star_sym; gt_sym; at_sym; plus_sym; hat_sym; lt_sym; amp_sym; nf_sym; wild_sym] (* * Get the scope for a variable. * Numeric symbols are global by default. *) let senv_find_var genv oenv senv cenv pos loc v = if is_numeric_symbol v || SymbolSet.mem builtin_vars v then oenv, create_pervasives_var loc v else try let info = ForcedVars.find_var senv.senv_forced_vars v in oenv, info with Not_found -> let info = match cenv.cenv_context with ContextTop | ContextFunction -> VarGlobal (loc, v) | ContextObject -> VarThis (loc, v) in oenv, info (* * A path expression. *) let senv_find_scoped_var genv oenv senv cenv pos loc info v = match info.name_scope with Some scope -> let info = create_var genv oenv senv cenv loc scope v in oenv, info | None -> senv_find_var genv oenv senv cenv pos loc v let senv_find_method_var genv oenv senv cenv pos loc vl = match parse_declaration senv pos loc vl with NameEmpty _ -> raise (OmakeException (pos, StringError "empty method name")) | NameMethod (info, v, vl) -> let oenv, info = senv_find_scoped_var genv oenv senv cenv pos loc info v in oenv, info, vl (************************************************************************ * Variable definitions. *) (* * Open a file and include all the symbols. *) let senv_open_file genv senv pos loc filename = let node, vars = genv.genv_open_file filename pos loc in let vars = SymbolTable.fold (fun forced_vars v info -> ForcedVars.add_var forced_vars pos v info) senv.senv_forced_vars vars in { senv with senv_forced_vars = vars }, node (*XXX*) (* ZZZ: in 0.9.8.x: * If the scope is specified explicitly, * do not add it as a definition to senv. * * This should be uncommented in 0.9.9. *) let senv_define_var_info_bogus senv pos loc scope v info = let { senv_object_senv = object_vars; senv_update_vars = update_vars; senv_forced_vars = forced_vars; senv_all_vars = all_vars } = senv in (* They appear in the object only if not private *) let object_vars = match info with VarPrivate _ -> object_vars | _ -> SymbolTable.add object_vars v info in let update_vars = SymbolTable.add update_vars v info in let all_vars = AllVars.add all_vars (scope, v) info in { senv with senv_object_senv = object_vars; senv_update_vars = update_vars; senv_forced_vars = forced_vars; senv_all_vars = all_vars } (* * Low-level variable definition. *) let senv_define_var_info senv pos loc scope v info = let { senv_object_senv = object_vars; senv_update_vars = update_vars; senv_forced_vars = forced_vars; senv_all_vars = all_vars } = senv in (* They appear in the object only if not private *) let object_vars = match info with VarPrivate _ -> object_vars | _ -> SymbolTable.add object_vars v info in let forced_vars = ForcedVars.add_var forced_vars pos v info in let update_vars = SymbolTable.add update_vars v info in let all_vars = AllVars.add all_vars (scope, v) info in { senv with senv_object_senv = object_vars; senv_update_vars = update_vars; senv_forced_vars = forced_vars; senv_all_vars = all_vars } let senv_define_var scope genv oenv senv cenv pos loc v = let info = create_var genv oenv senv cenv loc scope v in let senv = senv_define_var_info senv pos loc scope v info in senv, info (*/XXX*) (* ZZZ: 0.9.8.x parameters are this; in 0.9.9 this should be changed to private *) let senv_add_params genv oenv senv cenv pos loc vl = List.fold_left (fun senv v -> let senv, _ = senv_define_var VarScopeThis genv oenv senv cenv pos loc v in senv) senv vl (*XXX*) let senv_add_var_aux genv oenv senv cenv pos loc name_info v = if is_nonempty_name_info name_info then let scope = cenv_var_scope cenv name_info in let info = try let info = AllVars.find senv.senv_all_vars (scope, v) in (* ZZZ: check_var_info pos info name_info; *) info with Not_found -> create_var genv oenv senv cenv loc scope v in let senv = senv_define_var_info senv pos loc scope v info in genv, oenv, senv, info else (* ZZZ: in 0.9.8.x: * If the current scope is forced, add the variable in that mode. * Otherwise, if the variable is already defined, use that. * Otherwise, force the variable in global mode. * In all cases, add to senv. * * This should be valid until var3, where the VarScopeGlobal becomes a link var *) let senv, info = match cenv.cenv_scope with Some scope -> senv_define_var scope genv oenv senv cenv pos loc v | None -> try senv, ForcedVars.find_var senv.senv_forced_vars v with Not_found -> senv_define_var VarScopeGlobal genv oenv senv cenv pos loc v in genv, oenv, senv, info (*/XXX*) let senv_add_var genv oenv senv cenv pos loc v = senv_add_var_aux genv oenv senv cenv pos loc (cenv_scope cenv) v let senv_add_scoped_var genv oenv senv cenv pos loc info v = senv_add_var_aux genv oenv senv cenv pos loc (cenv_update_scope cenv info) v let senv_add_method_def_var genv oenv senv cenv pos loc vl = match parse_declaration senv pos loc vl with NameEmpty _ -> raise (OmakeException (pos, StringError "empty method name")) | NameMethod (info, v, vl) -> let genv, oenv, senv, info = senv_add_scoped_var genv oenv senv cenv pos loc info v in genv, oenv, senv, info, vl let senv_add_method_var genv oenv senv cenv pos loc kind vl = match kind with VarDefNormal -> senv_add_method_def_var genv oenv senv cenv pos loc vl | VarDefAppend -> (* ZZZ: we _should_ preserve the scope of the variable. * However, 0.9.8 chooses the forced mode over the * previous mode. *) let oenv, info, vl = senv_find_method_var genv oenv senv cenv pos loc vl in genv, oenv, senv, info, vl (************************************************************************ * Declarations. *) (* * This is slightly different. If the mode is not specified, then: * top-level variables are public * object variables are protected * function variables are private *) let senv_declare_static_var genv oenv senv cenv pos loc v = let pos = string_pos "senv_declare_static_var" pos in let scope = cenv_var_scope cenv (cenv_scope cenv) in senv_define_var scope genv oenv senv cenv pos loc v let senv_declare_normal_var genv oenv senv cenv pos loc info v = let scope = cenv_var_scope cenv (cenv_update_scope cenv info) in senv_define_var scope genv oenv senv cenv pos loc v (************************************************************************ * Conversion *) (* * Strategy conversion. *) let ir_strategy_of_ast_strategy strategy = match strategy with Omake_ast.LazyApply -> LazyApply | Omake_ast.EagerApply -> EagerApply | Omake_ast.NormalApply -> NormalApply (* * Literal string. *) let build_literal_string e = let buf = Buffer.create 32 in let rec collect_exp e = match e with Omake_ast.NullExp _ -> () | Omake_ast.StringExp (s, _) -> Buffer.add_string buf s | Omake_ast.QuoteExp (el, _) | Omake_ast.QuoteStringExp (_, el, _) | Omake_ast.SequenceExp (el, _) -> collect_exp_list el | Omake_ast.ArrayExp (_, loc) | Omake_ast.ApplyExp (_, _, _, loc) | Omake_ast.SuperApplyExp (_, _, _, _, loc) | Omake_ast.MethodApplyExp (_, _, _, loc) | Omake_ast.BodyExp (_, loc) | Omake_ast.KeyExp (_, _, loc) | Omake_ast.CommandExp (_, _, _, loc) | Omake_ast.VarDefExp (_, _, _, _, loc) | Omake_ast.VarDefBodyExp (_, _, _, _, loc) | Omake_ast.KeyDefExp (_, _, _, _, loc) | Omake_ast.KeyDefBodyExp (_, _, _, _, loc) | Omake_ast.ObjectDefExp (_, _, _, loc) | Omake_ast.FunDefExp (_, _, _, loc) | Omake_ast.RuleExp (_, _, _, _, _, loc) | Omake_ast.ShellExp (_, loc) | Omake_ast.CatchExp (_, _, _, loc) | Omake_ast.ClassExp (_, loc) -> raise (OmakeException (loc_exp_pos loc, SyntaxError "misplaced expression")) and collect_exp_list el = List.iter collect_exp el in collect_exp e; Buffer.contents buf let build_literal_argv e pos = let s = build_literal_string e in try Lm_string_util.parse_args s with Failure _ | Invalid_argument _ -> raise (OmakeException (pos, StringStringError ("syntax error", s))) let build_literal_argv_list el = List.map build_literal_string el let is_empty_string e = try build_literal_string e = "" with OmakeException _ -> false (* Some is_static - it's a memo | None - it's not *) let get_memo_target e = try match build_literal_string e with ".STATIC" -> Some true | ".MEMO" -> Some false | _ -> None with OmakeException _ -> None (* * Conversion. *) let rec build_string genv oenv senv cenv e pos = let pos = string_pos "build_string" pos in match e with Omake_ast.NullExp loc -> genv, oenv, NoneString loc | Omake_ast.StringExp (s, loc) -> genv, oenv, ConstString (loc, s) | Omake_ast.QuoteExp (el, loc) -> build_quote_string genv oenv senv cenv el pos loc | Omake_ast.QuoteStringExp (c, el, loc) -> build_quote_string_string genv oenv senv cenv c el pos loc | Omake_ast.SequenceExp ([e], _) -> build_string genv oenv senv cenv e pos | Omake_ast.SequenceExp (el, loc) -> build_sequence_string genv oenv senv cenv el pos loc | Omake_ast.ArrayExp (e, loc) -> build_array_string genv oenv senv cenv e pos loc | Omake_ast.ApplyExp (strategy, v, args, loc) -> build_apply_string genv oenv senv cenv strategy v args pos loc | Omake_ast.SuperApplyExp (strategy, super, v, args, loc) -> build_super_apply_string genv oenv senv cenv strategy super v args pos loc | Omake_ast.MethodApplyExp (strategy, vl, args, loc) -> build_method_apply_string genv oenv senv cenv strategy vl args pos loc | Omake_ast.BodyExp (el, loc) -> build_body_string genv oenv senv cenv el pos loc | Omake_ast.KeyExp (strategy, v, loc) -> genv, oenv, KeyApplyString (loc, ir_strategy_of_ast_strategy strategy, v) | Omake_ast.CommandExp (_, _, _, loc) | Omake_ast.VarDefExp (_, _, _, _, loc) | Omake_ast.VarDefBodyExp (_, _, _, _, loc) | Omake_ast.KeyDefExp (_, _, _, _, loc) | Omake_ast.KeyDefBodyExp (_, _, _, _, loc) | Omake_ast.ObjectDefExp (_, _, _, loc) | Omake_ast.FunDefExp (_, _, _, loc) | Omake_ast.RuleExp (_, _, _, _, _, loc) | Omake_ast.ShellExp (_, loc) | Omake_ast.CatchExp (_, _, _, loc) | Omake_ast.ClassExp (_, loc) -> raise (OmakeException (loc_pos loc pos, SyntaxError "misplaced expression")) and build_string_list genv oenv senv cenv el pos = let pos = string_pos "build_string_list" pos in let genv, oenv, el = List.fold_left (fun (genv, oenv, el) e -> let genv, oenv, e = build_string genv oenv senv cenv e pos in genv, oenv, e :: el) (genv, oenv, []) el in genv, oenv, List.rev el and build_string_opt genv oenv senv cenv sl pos = let pos = string_pos "build_string_opt" pos in match sl with Some s -> Some (build_string genv oenv senv cenv s pos) | None -> None (* * When building a sequence, try to collapse adjacent constant strings. *) and build_sequence_string genv oenv senv cenv el pos loc = let pos = string_pos "build_sequence_string" pos in let genv, oenv, args = build_sequence_string_aux genv oenv senv cenv el pos loc in genv, oenv, SequenceString (loc, args) and build_quote_string genv oenv senv cenv el pos loc = let pos = string_pos "build_quote_string" pos in let genv, oenv, args = build_sequence_string_aux genv oenv senv cenv el pos loc in genv, oenv, QuoteString (loc, args) and build_quote_string_string genv oenv senv cenv c el pos loc = let pos = string_pos "build_quote_string_string" pos in let genv, oenv, args = build_sequence_string_aux genv oenv senv cenv el pos loc in genv, oenv, QuoteStringString (loc, c, args) and build_sequence_string_aux genv oenv senv cenv el pos loc = let pos = string_pos "build_sequence_string_aux" pos in let buf = Buffer.create 32 in (* Flush the buffer *) let flush_buffer buf_opt args = match buf_opt with Some loc -> let args = ConstString (loc, Buffer.contents buf) :: args in Buffer.clear buf; args | None -> args in (* Add a constant string to the buffer *) let add_string buf_opt s loc = Buffer.add_string buf s; match buf_opt with Some loc' -> let loc = union_loc loc' loc in Some loc | None -> Some loc in (* Collect all the strings in the sequence *) let rec collect genv oenv buf_opt args el = match el with [] -> let args = flush_buffer buf_opt args in genv, oenv, List.rev args | e :: el -> let genv, oenv, e = build_string genv oenv senv cenv e pos in match e with NoneString _ -> collect genv oenv buf_opt args el | ConstString (loc, s) -> let buf_opt = add_string buf_opt s loc in collect genv oenv buf_opt args el | KeyApplyString _ | ApplyString _ | SuperApplyString _ | MethodApplyString _ | SequenceString _ | ObjectString _ | BodyString _ | ArrayString _ | ArrayOfString _ | QuoteString _ | QuoteStringString _ | ExpString _ | CasesString _ | VarString _ | ThisString _ -> let args = flush_buffer buf_opt args in let args = e :: args in collect genv oenv None args el in collect genv oenv None [] el (* * Build an array of strings. *) and build_array_string genv oenv senv cenv args pos loc = let pos = string_pos "build_array_string" pos in let genv, oenv, args = build_string_list genv oenv senv cenv args pos in genv, oenv, ArrayString (loc, args) (* * Build an application. *) and build_apply_string genv oenv senv cenv strategy v args pos loc = let pos = string_pos "build_apply_string" pos in let strategy = ir_strategy_of_ast_strategy strategy in if Lm_symbol.eq v this_sym then genv, oenv, ThisString loc else let genv, oenv, args = build_string_list genv oenv senv cenv args pos in let oenv, info = senv_find_var genv oenv senv cenv pos loc v in genv, oenv, ApplyString (loc, strategy, info, args) (* * Super call. *) and build_super_apply_string genv oenv senv cenv strategy super v args pos loc = let pos = string_pos "build_super_apply_string" pos in let strategy = match strategy with Omake_ast.LazyApply -> LazyApply | Omake_ast.EagerApply -> EagerApply | Omake_ast.NormalApply -> NormalApply in let genv, oenv, args = build_string_list genv oenv senv cenv args pos in genv, oenv, SuperApplyString (loc, strategy, super, v, args) (* * Build a method application. *) and build_method_apply_string genv oenv senv cenv strategy vl args pos loc = let pos = string_pos "build_method_apply_string" pos in let strategy = ir_strategy_of_ast_strategy strategy in let oenv, v, vl = senv_find_method_var genv oenv senv cenv pos loc vl in let genv, oenv, args = build_string_list genv oenv senv cenv args pos in let e = match vl with [] -> ApplyString (loc, strategy, v, args) | _ -> MethodApplyString (loc, strategy, v, vl, args) in genv, oenv, e (* * Build a body expression. *) and build_body_string genv oenv senv cenv el pos loc = let pos = string_pos "build_body_string" pos in let genv, oenv, body, export, _ = build_body genv oenv senv cenv el pos loc in genv, oenv, BodyString (loc, body, export) (* * Build an expression. *) and build_exp genv oenv senv cenv result e = let pos = string_pos "build_exp" (ast_exp_pos e) in match e with Omake_ast.NullExp loc | Omake_ast.StringExp (_, loc) | Omake_ast.QuoteExp (_, loc) | Omake_ast.QuoteStringExp (_, _, loc) -> genv, oenv, senv, SequenceExp (loc, []), ValValue | Omake_ast.SequenceExp ([e], _) | Omake_ast.BodyExp ([e], _) -> build_exp genv oenv senv cenv result e | Omake_ast.SequenceExp (el, loc) | Omake_ast.BodyExp (el, loc) | Omake_ast.ArrayExp (el, loc) -> build_sequence_exp genv oenv senv cenv result el pos loc | Omake_ast.ApplyExp (_, v, args, loc) -> build_apply_exp genv oenv senv cenv v args pos loc | Omake_ast.SuperApplyExp (_, super, v, args, loc) -> build_super_apply_exp genv oenv senv cenv super v args pos loc | Omake_ast.MethodApplyExp (_, vl, args, loc) -> build_method_apply_exp genv oenv senv cenv vl args pos loc | Omake_ast.CommandExp (v, arg, commands, loc) -> build_command_exp genv oenv senv cenv v arg commands pos loc | Omake_ast.VarDefExp (v, kind, flag, e, loc) -> build_var_def_exp genv oenv senv cenv v kind flag e pos loc | Omake_ast.VarDefBodyExp (v, kind, flag, [], loc) -> build_var_def_exp genv oenv senv cenv v kind flag (Omake_ast.SequenceExp ([], loc)) pos loc | Omake_ast.VarDefBodyExp (v, kind, flag, el, loc) -> build_var_def_body_exp genv oenv senv cenv v kind flag el pos loc | Omake_ast.KeyExp (_, v, loc) -> genv, oenv, senv, KeyExp (loc, v), ValValue | Omake_ast.KeyDefExp (v, kind, flag, e, loc) -> build_key_def_exp genv oenv senv cenv v kind flag e pos loc | Omake_ast.KeyDefBodyExp (v, kind, flag, el, loc) -> build_key_def_body_exp genv oenv senv cenv v kind flag el pos loc | Omake_ast.ObjectDefExp (v, flag, el, loc) -> build_object_def_exp genv oenv senv cenv v flag el pos loc | Omake_ast.FunDefExp (v, params, e, loc) -> build_fun_def_exp genv oenv senv cenv v params e pos loc | Omake_ast.RuleExp (multiple, target, pattern, source, commands, loc) -> build_rule_exp genv oenv senv cenv multiple target pattern source commands pos loc | Omake_ast.ShellExp (e, loc) -> build_shell_exp genv oenv senv cenv e pos loc | Omake_ast.CatchExp (_, _, _, loc) -> raise (OmakeException (pos, StringError "misplaced catch clause")) | Omake_ast.ClassExp (names, loc) -> build_class_exp genv oenv senv cenv loc names (* * Add the class names. *) and build_class_exp genv oenv senv cenv loc names = let oenv = { (* oenv with *) oenv_class_names = SymbolSet.add_list oenv.oenv_class_names names } in genv, oenv, senv, SequenceExp (loc, []), ValValue (* * Sequence exp. Build the expression one at a time. *) and build_sequence genv oenv senv cenv result pos rval el = match el with Omake_ast.CommandExp (v, e, body, loc) :: el when Lm_symbol.eq v if_sym -> let cases, el = collect_if [e, body] el in let pos = loc_pos loc pos in let cenv_body = cenv_sequence_scope cenv el in let genv, oenv, senv, e, result = build_if_exp genv oenv senv cenv_body cases pos loc in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv result pos rval el in genv, oenv, senv, e :: el, result | Omake_ast.CommandExp (v, e, body, loc) :: el when Lm_symbol.eq v while_sym -> let cases, el = collect_cases [] el in let pos = loc_pos loc pos in let cenv_body = cenv_sequence_scope cenv el in let genv, oenv, senv, e, result = build_opt_cases_command_exp genv oenv senv cenv_body v e cases body pos loc in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv result pos rval el in genv, oenv, senv, e :: el, result | Omake_ast.CommandExp (v, e, body, loc) :: el -> let cases, el = collect_cases [] el in let pos = loc_pos loc pos in if Lm_symbol.eq v export_sym then let oenv, senv = build_export_command genv oenv senv cenv e cases body pos loc in build_sequence genv oenv senv cenv result pos rval el else let cenv_body = cenv_sequence_scope cenv el in let genv, oenv, senv, e, result = build_cases_command_exp genv oenv senv cenv_body v e cases body pos loc in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv result pos rval el in genv, oenv, senv, e :: el, result | Omake_ast.ApplyExp (_, v, args, loc) :: el -> let cases, el = collect_cases [] el in let pos = loc_pos loc pos in let genv, oenv, senv, e, result = build_cases_apply_exp genv oenv senv cenv v args cases pos loc in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv result pos rval el in genv, oenv, senv, e :: el, result (* ZZZ: preserve the old behavior of changing the mode to protected * after a class definition. *) | Omake_ast.ClassExp (names, loc) :: el -> let genv, oenv, senv, e, result = build_class_exp genv oenv senv cenv loc names in let cenv = { cenv with cenv_scope = Some VarScopeThis } in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv result pos rval el in genv, oenv, senv, e :: el, result | e :: el -> let genv, oenv, senv, e, result = build_exp genv oenv senv cenv result e in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv result pos rval el in genv, oenv, senv, e :: el, result | [] -> rval genv oenv senv cenv result (* * Normal sequences are always in global mode. *) and build_body genv oenv senv cenv el pos loc = let pos = string_pos "build_body" pos in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv ValValue pos (fun genv oenv senv cenv result -> genv, oenv, senv, [], result) el in let export, result = senv_add_exports senv result in genv, oenv, el, export, result (* * Export the environment. *) and build_export_command genv oenv senv cenv e cases body pos loc = let pos = string_pos "build_export_command" pos in let () = if cases <> [] then raise (OmakeException (pos, StringError "illegal cases")); if body <> [] then raise (OmakeException (pos, StringError "illegal body")) in (* Merge the export set *) let argv = build_literal_argv e pos in let oenv, mode = match senv.senv_export_mode, argv with _, ["all"] -> eprintf "@[*** omake WARNING: %a:\ @ @[\"export all\" syntax is deprecated;\ @ use an empty \"export\" instead.@]@]@." pp_print_pos pos; oenv, ExportAllMode loc | _, [] | ExportAllMode _, _ -> oenv, ExportAllMode loc | mode, argv -> let items = items_of_export_mode mode in let oenv, items = List.fold_left (fun (oenv, items) v -> let oenv, item = match v with "rules" -> eprintf "@[*** omake WARNING: %a:\ @ @[\"export rules\" syntax is deprecated;\ @ use \"export .RULE .PHONY\" instead.@]@]@." pp_print_pos pos; oenv, Omake_ir.ExportRules | ".RULE" -> oenv, Omake_ir.ExportRules | ".PHONY" -> oenv, Omake_ir.ExportPhonies | v -> let v = Lm_symbol.add v in let oenv, info = senv_find_var genv oenv senv cenv pos loc v in oenv, Omake_ir.ExportVar info in oenv, item :: items) (oenv, items) argv in oenv, ExportListMode (loc, List.rev items) in let senv = { senv with senv_export_mode = mode } in oenv, senv (* * In an application, turn the arguments into strings. *) and build_apply_exp genv oenv senv cenv v args pos loc = let pos = string_pos "build_apply_exp" pos in let genv, oenv, args = build_string_list genv oenv senv cenv args pos in match args with [arg] when Lm_symbol.eq v return_sym -> genv, oenv, senv, ReturnExp (loc, arg), ValNotReached | args -> let oenv, info = senv_find_var genv oenv senv cenv pos loc v in genv, oenv, senv, ApplyExp (loc, info, args), ValValue and build_super_apply_exp genv oenv senv cenv super v args pos loc = let pos = string_pos "build_super_apply_exp" pos in let genv, oenv, args = build_string_list genv oenv senv cenv args pos in genv, oenv, senv, SuperApplyExp (loc, super, v, args), ValValue and build_method_apply_exp genv oenv senv cenv vl args pos loc = let pos = string_pos "build_method_apply_exp" pos in let genv, oenv, args = build_string_list genv oenv senv cenv args pos in let oenv, v, vl = senv_find_method_var genv oenv senv cenv pos loc vl in let e = match vl with [] -> ApplyExp (loc, v, args) | _ -> MethodApplyExp (loc, v, vl, args) in genv, oenv, senv, e, ValValue and build_cases_apply_exp genv oenv senv cenv v args cases pos loc = let pos = string_pos "build_cases_apply_exp" pos in let genv, oenv, args = build_string_list genv oenv senv cenv args pos in match args, cases with [arg], [] when Lm_symbol.eq v return_sym -> genv, oenv, senv, ReturnExp (loc, arg), ValNotReached | _, [] -> let oenv, v = senv_find_var genv oenv senv cenv pos loc v in genv, oenv, senv, ApplyExp (loc, v, args), ValValue | _ -> let oenv, v = senv_find_var genv oenv senv cenv pos loc v in let genv, oenv, cases = List.fold_left (fun (genv, oenv, cases) (v, e, body) -> let genv, oenv, body, export, _ = build_body genv oenv senv cenv body pos loc in let genv, oenv, s = build_string genv oenv senv cenv e pos in let case = v, s, body, export in genv, oenv, case :: cases) (genv, oenv, []) cases in let args = CasesString (loc, List.rev cases) :: args in genv, oenv, senv, ApplyExp (loc, v, args), ValValue and build_cases_command_exp genv oenv senv cenv v arg cases commands pos loc = let pos = string_pos "build_cases_command_exp" pos in match cases with [] -> build_command_exp genv oenv senv cenv v arg commands pos loc | _ -> let arg = match commands with [] -> arg | _ -> Omake_ast.BodyExp (commands, loc) in build_cases_apply_exp genv oenv senv cenv v [arg] cases pos loc and build_opt_cases_command_exp genv oenv senv cenv v arg cases commands pos loc = let pos = string_pos "build_opt_cases_command_exp" pos in let cases = if commands = [] then cases else let default = default_sym, Omake_ast.NullExp loc, commands in cases @ [default] in build_cases_apply_exp genv oenv senv cenv v [arg] cases pos loc (* * The command line is handled at parse time as well as * at evaluation time. *) and build_set_exp genv oenv senv cenv e pos loc = let _pos = string_pos "build_set_exp" pos in let argv = build_literal_argv e pos in let senv = { senv with senv_venv = venv_set_options senv.senv_venv loc pos argv } in let argv = List.map (fun s -> ConstString (loc, s)) argv in let argv = ArrayString (loc, argv) in let e = ApplyExp (loc, omakeflags_var, [argv]) in genv, oenv, senv, e, ValValue (* * Commands. *) and build_command_exp genv oenv senv cenv v arg commands pos loc = let pos = string_pos "build_command_exp" pos in if Lm_symbol.eq v include_sym then build_include_exp genv oenv senv cenv arg commands pos loc else if Lm_symbol.eq v if_sym then build_if_exp genv oenv senv cenv [arg, commands] pos loc else if Lm_symbol.eq v section_sym then build_section_exp genv oenv senv cenv arg commands pos loc else if Lm_symbol.eq v value_sym then build_value_exp genv oenv senv cenv arg commands pos loc else if Lm_symbol.eq v declare_sym then build_declare_exp genv oenv senv cenv arg commands pos loc else if commands <> [] then raise (OmakeException (loc_pos loc pos, StringVarError ("illegal body for", v))) else if Lm_symbol.eq v return_sym then build_return_exp genv oenv senv cenv arg pos loc else if Lm_symbol.eq v open_sym then build_open_exp genv oenv senv cenv arg pos loc else if Lm_symbol.eq v autoload_sym then genv, oenv, senv, SequenceExp (loc, []), ValValue else if Lm_symbol.eq v set_sym then build_set_exp genv oenv senv cenv arg pos loc else build_apply_exp genv oenv senv cenv v [arg] pos loc (* * Include a file. *) and build_include_exp genv oenv senv cenv e commands pos loc = let pos = string_pos "build_include_exp" pos in let genv, oenv, s = build_string genv oenv senv cenv e pos in let genv, oenv, commands = build_string_list genv oenv senv cenv commands pos in genv, oenv, senv, IncludeExp (loc, s, commands), ValValue (* * Conditionals. *) and build_if_exp genv oenv senv cenv cases pos loc = let pos = string_pos "build_if_exp" pos in let genv, oenv, cases, results, is_complete = List.fold_left (fun (genv, oenv, cases, results, is_complete) (e1, e2) -> let is_complete = is_complete || is_true_string e1 in let genv, oenv, s = build_string genv oenv senv cenv e1 pos in let genv, oenv, e2, export, result = build_body genv oenv senv cenv e2 pos loc in let cases = (s, e2, export) :: cases in let results = result :: results in genv, oenv, cases, results, is_complete) (genv, oenv, [], [], false) cases in let senv, result = senv_merge_results genv senv cenv pos loc results is_complete in genv, oenv, senv, IfExp (loc, List.rev cases), result (* * A normal sequence, not a new scope. *) and build_sequence_exp genv oenv senv cenv result el pos loc = let pos = string_pos "build_sequence_exp" pos in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv result pos (fun genv oenv senv cenv result -> genv, oenv, senv, [], result) el in genv, oenv, senv, SequenceExp (loc, el), result (* * A section is just an "if true" command. *) and build_section_exp genv oenv senv cenv e1 e2 pos loc = let pos = string_pos "build_section_exp" pos in let genv, oenv, s = build_string genv oenv senv cenv e1 pos in let genv, oenv, body, export, result = build_body genv oenv senv cenv e2 pos loc in let senv, result = senv_export_section senv pos result in genv, oenv, senv, SectionExp (loc, s, body, export), result (* * Return a value. *) and build_value_exp genv oenv senv cenv e commands pos loc = let pos = string_pos "build_value_exp" pos in let genv, oenv, s = match e, commands with e, [] -> build_string genv oenv senv cenv e pos | Omake_ast.NullExp _, el -> let genv, oenv, el, export, _ = build_body genv oenv senv cenv el pos loc in genv, oenv, ExpString (loc, el, export) | _, _ :: _ -> raise (OmakeException (loc_pos loc pos, StringError ("Value can have an argument or a body, but not both"))) in genv, oenv, senv, StringExp (loc, s), ValValue and build_return_exp genv oenv senv cenv e pos loc = let pos = string_pos "build_return_exp" pos in let genv, oenv, s = build_string genv oenv senv cenv e pos in genv, oenv, senv, ReturnExp (loc, s), ValNotReached (* * Open the namespace from another file. *) and build_open_exp genv oenv senv cenv arg pos loc = let pos = string_pos "build_open_exp" pos in let argv = build_literal_argv arg pos in let senv, nodes = List.fold_left (fun (senv, nodes) filename -> let senv, node = senv_open_file genv senv pos loc filename in let nodes = node :: nodes in senv, nodes) (senv, []) argv in genv, oenv, senv, OpenExp (loc, List.rev nodes), ValValue (* * Declare a variable, but dont worry about its definition. *) and build_declare_exp genv oenv senv cenv arg commands pos loc = let pos = string_pos "build_declare_exp" pos in let argv1 = build_literal_argv arg pos in let argv2 = build_literal_argv_list commands in let argv = argv1 @ argv2 in let genv, oenv, senv = List.fold_left (fun (genv, oenv, senv) name -> let name = List.map Lm_symbol.add (Lm_string_util.split "." name) in match parse_declaration senv pos loc name with NameEmpty _ -> raise (OmakeException (pos, StringError "illegal name")) | NameMethod (info, v, []) -> let senv, _ = senv_declare_normal_var genv oenv senv cenv pos loc info v in genv, oenv, senv | NameMethod (_, _, _ :: _) -> raise (OmakeException (pos, StringError "name has too many components"))) (genv, oenv, senv) argv in genv, oenv, senv, SequenceExp (loc, []), ValValue (* * The public/protected/private are not really objects. * They are scope definitions. *) and build_object_def_exp genv oenv senv cenv vl flag body pos loc = match parse_declaration senv pos loc vl with NameEmpty { name_static = true; name_scope = None } -> build_static_object_exp genv oenv senv cenv body pos loc | NameEmpty { name_static = true } -> raise (OmakeException (loc_pos loc pos, StringError "static objects cannot be qualified")) | NameEmpty info -> build_scope_exp genv oenv senv cenv info body pos loc | NameMethod ({ name_static = true }, _, _) -> raise (OmakeException (loc_pos loc pos, StringError "static named objects are not allowed")) | NameMethod (info, v, vl) -> build_normal_object_exp genv oenv senv cenv info v vl flag body pos loc (* * Qualified definitions, but not a new scope in the * current environment. *) and build_scope_exp genv oenv senv cenv info el pos loc = let pos = string_pos "build_scope_exp" pos in let cenv = cenv_force_scope cenv info in let genv, oenv, senv, el, result = build_sequence genv oenv senv cenv ValValue pos (fun genv oenv senv cenv result -> genv, oenv, senv, [], result) el in genv, oenv, senv, SequenceExp (loc, el), ValValue (* * A static object is evaluated just once. * * ZZZ: this is pretty different in 0.9.9. *) and build_static_object_exp genv oenv senv cenv el pos loc = let pos = string_pos "build_scope_exp" pos in let genv, id = genv_new_static_id genv in let senv_body, cenv_body = senv_static_body senv cenv (Lm_symbol.new_symbol static_sym) in let genv, oenv, senv_body, el, _ = build_sequence genv oenv senv_body cenv_body ValValue pos (fun genv oenv senv cenv _ -> genv, oenv, senv, [ReturnObjectExp (loc, [])], ValValue) el in let senv, vars = SymbolTable.fold (fun (senv, vars) _ info -> match info with VarThis (loc, v) -> let senv, info = senv_declare_static_var genv oenv senv cenv pos loc v in senv, info :: vars | VarPrivate _ | VarVirtual _ | VarGlobal _ -> senv, vars) (senv, []) senv_body.senv_object_senv in let file = genv.genv_file in genv, oenv, senv, StaticExp (loc, file, id, el), ValValue (* * An object is a collection of definitions. *) and build_normal_object_exp genv oenv senv cenv info v vl flag body pos loc = let pos = string_pos "build_normal_object_exp" pos in let genv, oenv, senv, parent_string, info = match flag with Omake_ast.DefineNormal -> let genv, oenv, senv, info = senv_add_scoped_var genv oenv senv cenv pos loc info v in let oenv, parent_var = senv_find_var genv oenv senv cenv pos loc object_sym in let parent_string = ApplyString (loc, EagerApply, parent_var, []) in genv, oenv, senv, parent_string, info | Omake_ast.DefineAppend -> let oenv, parent_var = senv_find_scoped_var genv oenv senv cenv pos loc info v in let parent_string = match vl with [] -> ApplyString (loc, EagerApply, parent_var, []) | _ -> MethodApplyString (loc, EagerApply, parent_var, vl, []) in (* ZZZ: We should just use the previous info. * However, in 0.9.8 the current forced mode overrides * any previous definition. *) let genv, oenv, senv, var_info = senv_add_scoped_var genv oenv senv cenv pos loc info v in genv, oenv, senv, parent_string, var_info in (* Compile the body *) let rval genv oenv senv cenv result = let class_names = SymbolSet.to_list oenv.oenv_class_names in genv, oenv, senv, [ReturnObjectExp (loc, class_names)], ValValue in let senv_body, cenv_body = senv_object_body senv cenv v in let oenv_body = oenv_empty in let genv, oenv_body, senv_body, body, result = build_sequence genv oenv_body senv_body cenv_body ValValue pos rval body in let export, _ = senv_add_exports senv_body result in (* Add the extends directive to the object body *) let e = LetObjectExp (loc, info, vl, parent_string, body, export) in genv, oenv, senv, e, ValValue (* * Variable definition. *) and build_var_def_kind flag = match flag with Omake_ast.DefineNormal -> VarDefNormal | Omake_ast.DefineAppend -> VarDefAppend (* * Variable definitions. *) and build_var_def_exp genv oenv senv cenv v kind flag e pos loc = let pos = string_pos "build_var_def_exp" pos in let genv, oenv, s = build_string genv oenv senv cenv e pos in let s = match kind with Omake_ast.DefineString -> s | Omake_ast.DefineArray -> ArrayOfString (loc, s) in let kind = build_var_def_kind flag in match v with [v] when Lm_symbol.eq v this_sym -> genv, oenv, senv, LetThisExp (loc, s), ValValue | _ -> let genv, oenv, senv, v, vl = senv_add_method_var genv oenv senv cenv pos loc kind v in genv, oenv, senv, LetVarExp (loc, v, vl, kind, s), ValValue and build_var_def_body_exp genv oenv senv cenv v kind flag body pos loc = let pos = string_pos "build_var_def_body_exp" pos in let genv, oenv, e = match kind with Omake_ast.DefineString -> let genv, oenv, el, export, _ = build_body genv oenv senv cenv body pos loc in genv, oenv, ExpString (loc, el, export) | Omake_ast.DefineArray -> let genv, oenv, sl = build_string_list genv oenv senv cenv body pos in genv, oenv, ArrayString (loc, sl) in let kind = build_var_def_kind flag in let genv, oenv, senv, v, vl = senv_add_method_var genv oenv senv cenv pos loc kind v in genv, oenv, senv, LetVarExp (loc, v, vl, kind, e), ValValue (* * Key definitions (for object properties. *) and build_key_def_exp genv oenv senv cenv v kind flag e pos loc = let pos = string_pos "build_key_def_exp" pos in let genv, oenv, s = build_string genv oenv senv cenv e pos in let s = match kind with Omake_ast.DefineString -> s | Omake_ast.DefineArray -> ArrayOfString (loc, s) in let kind = build_var_def_kind flag in genv, oenv, senv, LetKeyExp (loc, v, kind, s), ValValue and build_key_def_body_exp genv oenv senv cenv v kind flag body pos loc = let pos = string_pos "build_key_def_body_exp" pos in let genv, oenv, e = match kind with Omake_ast.DefineString -> let genv, oenv, el, export, _ = build_body genv oenv senv cenv body pos loc in genv, oenv, ExpString (loc, el, export) | Omake_ast.DefineArray -> let genv, oenv, sl = build_string_list genv oenv senv cenv body pos in genv, oenv, ArrayString (loc, sl) in let kind = build_var_def_kind flag in genv, oenv, senv, LetKeyExp (loc, v, kind, e), ValValue (* * Function definition. *) and build_fun_def_exp genv oenv senv cenv v params el pos loc = let pos = string_pos "build_fun_def_exp" pos in let cenv_body = cenv_fun_scope cenv in let senv_body = senv_add_params genv oenv senv cenv_body pos loc params in let genv, oenv, body, export, _ = build_body genv oenv senv_body cenv_body el pos loc in let genv, oenv, senv, v, vl = senv_add_method_def_var genv oenv senv cenv pos loc v in genv, oenv, senv, LetFunExp (loc, v, vl, params, body, export), ValValue (* * Special rule expressions. *) and build_options_exp genv oenv senv cenv pos loc sources = let genv, oenv, options = SymbolTable.fold (fun (genv, oenv, options) v source -> if Lm_symbol.eq v normal_sym then genv, oenv, options else let key = ConstString (loc, Lm_symbol.to_string v) in let genv, oenv, value = build_string genv oenv senv cenv source pos in genv, oenv, key :: value :: options) (genv, oenv, []) sources in let create_map_sym = match options with [] -> empty_map_sym | _ -> create_lazy_map_sym in let oenv, create_map_var = senv_find_var genv oenv senv cenv pos loc create_map_sym in let options = ApplyString (loc, EagerApply, create_map_var, options) in genv, oenv, options and build_rule_exp genv oenv senv cenv multiple target pattern sources body pos loc = let pos = string_pos "build_rule_exp" pos in let multiple = build_bool_exp loc multiple in match get_memo_target target with Some is_static -> let is_static = build_bool_exp loc is_static in build_memo_rule_exp genv oenv senv cenv multiple is_static pattern sources body pos loc | None -> build_normal_rule_exp genv oenv senv cenv multiple target pattern sources body pos loc and build_normal_rule_exp genv oenv senv cenv multiple target pattern sources body pos loc = let pos = string_pos "build_normal_rule_exp" pos in (* Get the sources *) let source, sources = extract_option loc sources normal_sym in let genv, oenv, source = build_string genv oenv senv cenv source pos in let genv, oenv, options = build_options_exp genv oenv senv cenv pos loc sources in (* Get the body *) let genv, oenv, body = let original_class_names = oenv.oenv_class_names in let oenv = { (* oenv with *) oenv_class_names = SymbolSet.empty } in let cenv = cenv_rule_scope cenv in let genv, oenv, body, export, _ = build_body genv oenv senv cenv body pos loc in let oenv = { (* oenv with *) oenv_class_names = original_class_names } in genv, oenv, BodyString (loc, body, export) in let genv, oenv, target = build_string genv oenv senv cenv target pos in let genv, oenv, pattern = build_string genv oenv senv cenv pattern pos in let args = [multiple; target; pattern; source; options; body] in let oenv, rule_var = senv_find_var genv oenv senv cenv pos loc rule_sym in let e = ApplyExp (loc, rule_var, args) in genv, oenv, senv, e, ValValue and build_memo_rule_exp genv oenv senv cenv multiple is_static names sources body pos loc = let pos = string_pos "build_memo_rule_exp" pos in (* Extract the special keys *) let source, sources = extract_option loc sources normal_sym in let key, sources = extract_option loc sources key_sym in let genv, oenv, source = build_string genv oenv senv cenv source pos in let genv, oenv, key = build_string genv oenv senv cenv key pos in let genv, oenv, options = build_options_exp genv oenv senv cenv pos loc sources in (* Build the body object expression *) let senv_body, cenv_body = senv_static_body senv cenv (Lm_symbol.new_symbol static_sym) in let genv, oenv, senv_body, el, _ = build_sequence genv oenv senv_body cenv_body ValValue pos (fun genv oenv senv cenv _ -> genv, oenv, senv, [ReturnObjectExp (loc, [])], ValValue) body in let body = ObjectString (loc, el, ExportNone) in (* Add the variables to the outer environment *) let names = build_literal_argv names pos in let senv, vars = if names = [] then (* Export all the object variables *) SymbolTable.fold (fun (senv, vars) _ info -> match info with VarThis (loc, v) -> let senv, info = senv_declare_static_var genv oenv senv cenv pos loc v in senv, info :: vars | VarPrivate _ | VarVirtual _ | VarGlobal _ -> senv, vars) (senv, []) senv_body.senv_object_senv else (* Export only the ones that are named *) List.fold_left (fun (senv, vars) name -> let v = Lm_symbol.add name in let info = try SymbolTable.find senv_body.senv_object_senv v with Not_found -> raise (OmakeException (pos, UnboundVar v)) in let v = match info with VarThis (loc, v) -> v | VarPrivate _ | VarVirtual _ | VarGlobal _ -> raise (OmakeException (pos, UnboundVarInfo info)) in let senv, info = senv_declare_static_var genv oenv senv cenv pos loc v in senv, info :: vars) (senv, []) names in let vars = ArrayString (loc, List.map (fun v -> VarString (loc, v)) vars) in (* The name has three parts: (file, index, key) *) let file = ApplyString (loc, EagerApply, file_var, []) in let genv, index = genv_new_index genv in let index = ConstString (loc, string_of_int index) in let args = [multiple; is_static; file; index; key; vars; source; options; body] in let oenv, rule_var = senv_find_var genv oenv senv cenv pos loc memo_rule_sym in let e = ApplyExp (loc, rule_var, args) in genv, oenv, senv, e, ValValue (* * Shell command. *) and build_shell_exp genv oenv senv cenv e pos loc = let pos = string_pos "build_shell_exp" pos in let genv, oenv, s = build_string genv oenv senv cenv e pos in genv, oenv, senv, ShellExp (loc, s), ValValue (* * A ReturnFile expression. * Place the initialization function right before. *) let build_return_file_exp genv oenv senv cenv loc = ReturnSaveExp loc (* * Build the IR from the AST program. *) let compile_string (genv, oenv, senv, cenv) e pos = let pos = string_pos "build_string" pos in let genv, oenv, s = build_string genv oenv senv cenv e pos in genv_warn_error genv senv; (genv, oenv, senv, cenv), s let compile_exp (genv, oenv, senv, cenv) e = let genv, oenv, senv, e, _ = build_exp genv oenv senv cenv ValValue e in let genv, oenv, senv, ir = genv_close genv oenv senv e in genv_warn_error genv senv; (genv, oenv, senv, cenv), ir let compile_prog (genv, oenv, senv, cenv) el = let loc = bogus_loc "Omake_ir_ast" in let pos = string_pos "compile_prog" (loc_exp_pos loc) in let genv, oenv, senv, el, _ = build_sequence genv oenv senv cenv ValValue pos (fun genv oenv senv cenv result -> let e = build_return_file_exp genv oenv senv cenv loc in genv, oenv, senv, [e], ValValue) el in let genv, oenv, senv, ir = genv_close genv oenv senv (SequenceExp (loc, el)) in genv_warn_error genv senv; (genv, oenv, senv, cenv), ir let compile_exp_list (genv, oenv, senv, cenv) el = let loc = bogus_loc "Omake_ir_ast" in let pos = string_pos "compile_exp_list" (loc_exp_pos loc) in let genv, oenv, senv, el, _ = build_sequence genv oenv senv cenv ValValue pos (fun genv oenv senv cenv result -> genv, oenv, senv, [], result) el in let genv, oenv, senv, ir = genv_close genv oenv senv (SequenceExp (loc, el)) in genv_warn_error genv senv; (genv, oenv, senv, cenv), ir let build_string (genv, oenv, senv, cenv) e pos = let genv, oenv, e = build_string genv oenv senv cenv e pos in genv_warn_error genv senv; (genv, oenv, senv, cenv), e (* * Create the environment. *) let cenv_empty = { cenv_scope = None; cenv_context = ContextTop; } let senv_create venv = { senv_object_senv = SymbolTable.empty; senv_update_vars = SymbolTable.empty; senv_forced_vars = ForcedVars.empty; senv_all_vars = AllVars.empty; senv_export_mode = ExportNoneMode; senv_venv = venv } let genv_create open_file node = { genv_open_file = open_file; genv_file = node; genv_static_index = 0; genv_warning_count = 0 } let penv_create open_file venv node = let cenv = cenv_empty in let senv = senv_create venv in let oenv = oenv_empty in let genv = genv_create open_file node in genv, oenv, senv, cenv let penv_class_names (_, oenv, senv, _) = let class_names = SymbolSet.to_list oenv.oenv_class_names in let vars = ForcedVars.to_vars senv.senv_forced_vars in class_names, vars let penv_of_vars open_file venv node vars = let genv, oenv, senv, cenv = penv_create open_file venv node in let vars = SymbolTable.add vars file_sym file_var in let vars = SymbolTable.add vars file_id_sym file_id_var in let forced_vars, all_vars = SymbolTable.fold (fun (forced_vars, all_vars) v info -> let forced_vars = ForcedVars.add_extern forced_vars v info in let all_vars = AllVars.add all_vars (var_scope_of_var_info info, v) info in forced_vars, all_vars) (senv.senv_forced_vars, senv.senv_all_vars) vars in let senv = { senv with senv_forced_vars = forced_vars; senv_all_vars = all_vars } in genv, oenv, senv, cenv (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/env/omake_env.mli0000664000152300015230000004073610655707434015206 0ustar jyhjyh(* * Environment for evaluating OMakefiles. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_string_util open Lm_string_set open Lm_location open Lm_symbol open Omake_ir open Omake_pos open Omake_var open Omake_node open Omake_exec open Omake_cache open Omake_lexer open Omake_parser open Omake_options open Omake_node_sig open Omake_exec_type open Omake_shell_type open Omake_value_type open Omake_command_type open Omake_ir_free_vars open Omake_handle_table (* * Debugging. *) val debug_scanner : bool ref val debug_implicit : bool ref (* * Type of environments. *) type venv (* * Command lists are used for rule bodies. * They have their environment, a list of sources, * and the actual body. The body is polymorphic * for various kinds of commands. *) type command_info = { command_env : venv; command_sources : Node.t list; command_values : value list; command_body : command list } (* * A rule description. *) and erule = { rule_loc : loc; rule_env : venv; rule_target : Node.t; rule_effects : NodeSet.t; rule_locks : NodeSet.t; rule_sources : NodeSet.t; rule_scanners : NodeSet.t; rule_match : string option; rule_multiple : rule_multiple; rule_commands : command_info list } (* * A listing of all the explicit rules. * * explicit_targets : the collapsed rules for each explicit target * explicit_deps : the table of explicit rules that are just dependencies * explicit_rules : the table of all individual explicit rules * explicit_directories : the environment for each directory in the project *) and erule_info = { explicit_targets : erule NodeTable.t; explicit_deps : (NodeSet.t * NodeSet.t * NodeSet.t) NodeTable.t; (* locks, sources, scanners *) explicit_rules : erule NodeMTable.t; explicit_directories : venv DirTable.t } type srule = { srule_loc : loc; srule_static : bool; srule_env : venv; srule_key : value; srule_deps : NodeSet.t; srule_vals : value list; srule_exp : exp } type static_info = StaticRule of srule | StaticValue of obj (* * Command lines. *) and arg_command_inst = (exp, arg_pipe, value) poly_command_inst and arg_command_line = (venv, exp, arg_pipe, value) poly_command_line and string_command_inst = (exp, string_pipe, value) poly_command_inst and string_command_line = (venv, exp, string_pipe, value) poly_command_line and apply = venv -> Unix.file_descr -> Unix.file_descr -> Unix.file_descr -> (symbol * string) list -> value list -> int * venv * value and value_cmd = (unit, value list, value list) poly_cmd and value_apply = (value list, value list, apply) poly_apply and value_group = (unit, value list, value list, value list, apply) poly_group and value_pipe = (unit, value list, value list, value list, apply) poly_pipe and arg_cmd = (arg cmd_exe, arg, arg) poly_cmd and arg_apply = (value, arg, apply) poly_apply and arg_group = (arg cmd_exe, arg, value, arg, apply) poly_group and arg_pipe = (arg cmd_exe, arg, value, arg, apply) poly_pipe and string_cmd = (simple_exe, string, string) poly_cmd and string_apply = (value, string, apply) poly_apply and string_group = (simple_exe, string, value, string, apply) poly_group and string_pipe = (simple_exe, string, value, string, apply) poly_pipe (* * Command line parsing. *) type lexer = string -> int -> int -> int option type tok = TokString of value | TokToken of string | TokGroup of tok list (* * Type of execution servers. *) type pid = InternalPid of int | ExternalPid of int | ResultPid of int * venv * value type exec = (arg_command_line, pid, value) Exec.t (* * Ordering info is abstract. *) type ordering_info (* * Inclusion scope is usually Pervasives, * but it may include everything in scope. *) type include_scope = IncludePervasives | IncludeAll (* * Check if command list does not contain anything to execute. *) val commands_are_trivial : command_info list -> bool (* * Convert a target to a raw string. *) val string_of_target : venv -> target -> string (* * This takes the starting directory. *) val create : omake_options -> string -> exec -> Omake_cache.t -> venv (* * Pervasives management. *) val venv_set_pervasives : venv -> unit val venv_get_pervasives : venv -> Node.t -> venv (* * Variables in scope. *) val venv_include_scope : venv -> include_scope -> senv (* * Fork, so that a thread can work on a private copy in peace. *) val venv_fork : venv -> venv val venv_unfork : venv -> venv -> venv (* * Global values. *) val venv_exec : venv -> exec val venv_cache : venv -> Omake_cache.t val venv_add_cache : venv -> Omake_cache.t -> venv (* * Add values to environment. *) val venv_chdir : venv -> loc -> string -> venv val venv_chdir_dir : venv -> loc -> Dir.t -> venv val venv_chdir_tmp : venv -> Dir.t -> venv val venv_add_dir : venv -> unit val venv_directories : venv -> venv DirTable.t val venv_add_explicit_dir : venv -> Dir.t -> unit val venv_remove_explicit_dir : venv -> Dir.t -> unit val venv_add_file : venv -> Node.t -> venv val venv_intern : venv -> phony_ok -> string -> Node.t val venv_intern_cd : venv -> phony_ok -> Dir.t -> string -> Node.t val venv_intern_dir : venv -> string -> Dir.t val venv_intern_target : venv -> phony_ok -> target -> Node.t val venv_dirname : venv -> Dir.t -> string val venv_nodename : venv -> Node.t -> string val venv_mount : venv -> mount_option list -> Dir.t -> Dir.t -> venv val venv_add_var : venv -> var_info -> value -> venv val venv_add_phony : venv -> loc -> target list -> venv val venv_add_args : venv -> pos -> loc -> env -> var list -> value list -> venv val venv_add_args_hack : venv -> pos -> loc -> env -> var list -> value list -> venv val venv_add_wild_match : venv -> value -> venv val venv_add_match_values : venv -> value list -> venv val venv_add_match_args : venv -> string list -> venv val venv_add_match : venv -> string -> string list -> venv val venv_explicit_target : venv -> Node.t -> venv val venv_explicit_find : venv -> pos -> Node.t -> erule val venv_add_rule : venv -> pos -> loc -> rule_multiple -> (* multiple, scanner, etc *) target list -> (* targets *) target list -> (* patterns *) target source list -> (* effects *) target source list -> (* sources *) target source list -> (* scanners *) value list -> (* additional values the target depends on *) command list -> (* commands *) venv * Node.t list val venv_add_memo_rule : venv -> pos -> loc -> bool -> (* multiple *) bool -> (* static flag *) value -> (* key *) var_info list -> (* variables to be defined *) target source list -> (* sources *) value list -> (* additional values the target depends on *) exp -> (* commands *) venv val venv_set_static_info : venv -> value -> static_info -> unit val venv_find_static_info : venv -> pos -> value -> static_info (* * System environment. *) val venv_environment : venv -> string SymbolTable.t val venv_setenv : venv -> var -> string -> venv val venv_getenv : venv -> var -> string val venv_unsetenv : venv -> var -> venv val venv_defined_env : venv -> var -> bool (* * Handle options. *) val venv_options : venv -> omake_options val venv_set_options : venv -> loc -> pos -> string list -> venv (* * Values represented with handles. *) val venv_add_environment : venv -> handle_env val venv_find_environment : venv -> pos -> handle_env -> venv (* * Find values. *) val venv_dir : venv -> Dir.t val venv_defined : venv -> var_info -> bool val venv_defined_field : venv -> obj -> var -> bool val venv_get_var : venv -> pos -> var_info -> value val venv_find_var : venv -> pos -> loc -> var_info -> value val venv_find_var_exn : venv -> var_info -> value val venv_find_object_or_empty : venv -> var_info -> obj (* * Static environments. *) val venv_empty_env : env val venv_get_env : venv -> env val venv_with_env : venv -> env -> venv (* * During marshaling, all primitive functions are reset. *) val venv_marshal : venv -> ('a -> 'b) -> 'a -> 'b (* * Static values. *) val venv_find_static_object : venv -> Node.t -> symbol -> obj val venv_add_static_object : venv -> Node.t -> symbol -> obj -> unit val venv_include_static_object : venv -> obj -> venv val venv_save_static_values : venv -> unit (* * Primitive functions. *) type prim_fun_data = venv -> pos -> loc -> value list -> venv * value val venv_add_prim_fun : venv -> var -> prim_fun_data -> prim_fun val venv_apply_prim_fun : prim_fun -> prim_fun_data (* * Channels. *) val venv_stdin : prim_channel val venv_stdout : prim_channel val venv_stderr : prim_channel val venv_add_channel : venv -> Lm_channel.t -> prim_channel val venv_close_channel : venv -> pos -> prim_channel -> unit val venv_find_channel : venv -> pos -> prim_channel -> Lm_channel.t val venv_find_channel_id : venv -> pos -> int -> prim_channel val venv_add_formatter_channel : venv -> Format.formatter -> prim_channel (* * Objects. *) val venv_empty_object : obj val venv_this : venv -> obj val venv_current_object : venv -> symbol list -> obj val venv_define_object : venv -> venv val venv_with_object : venv -> obj -> venv val venv_include_object : venv -> obj -> venv val venv_flatten_object : venv -> obj -> venv val venv_find_super_field : venv -> pos -> loc -> symbol -> symbol -> value (* ZZZ: this doesn't exist in 0.9.9 *) val venv_current_objects : venv -> pos -> var_info -> value list val venv_add_class : obj -> symbol -> obj val venv_instanceof : obj -> symbol -> bool val venv_find_field_path_exn : venv -> path -> obj -> pos -> var -> path * value val venv_find_field_path : venv -> path -> obj -> pos -> var -> path * value val venv_find_field_exn : venv -> obj -> pos -> var -> value val venv_find_field : venv -> obj -> pos -> var -> value val venv_add_field : venv -> obj -> pos -> var -> value -> venv * obj val venv_defined_field : venv -> obj -> var -> bool val venv_object_length : obj -> int (* Internal hacks when we don't care about checking *) val venv_add_field_internal : obj -> var -> value -> obj val venv_find_field_internal : obj -> pos -> var -> value val venv_find_field_internal_exn : obj -> var -> value val venv_defined_field_internal : obj -> var -> bool val venv_object_fold_internal : ('a -> var -> value -> 'a) -> 'a -> obj -> 'a val venv_add_included_file : venv -> Node.t -> venv val venv_is_included_file : venv -> Node.t -> bool val venv_find_ir_file_exn : venv -> Node.t -> ir val venv_add_ir_file : venv -> Node.t -> ir -> unit val venv_find_object_file_exn : venv -> Node.t -> obj val venv_add_object_file : venv -> Node.t -> obj -> unit (* * Maps. *) val venv_map_empty : map val venv_map_add : map -> pos -> value -> value -> map val venv_map_remove : map -> pos -> value -> map val venv_map_find : map -> pos -> value -> value val venv_map_mem : map -> pos -> value -> bool val venv_map_iter : (value -> value -> unit) -> map -> unit val venv_map_map : (value -> value -> value) -> map -> map val venv_map_fold : ('a -> value -> value -> 'a) -> 'a -> map -> 'a val venv_map_length : map -> int (* * Get a list of all the files that were read. *) val venv_files : venv -> NodeSet.t (* * Get the explicit rules. *) val venv_explicit_exists : venv -> Node.t -> bool val venv_explicit_rules : venv -> erule_info (* * Find all the implicit rules and dependencies. * (static_deps, lock_deps, scanner_deps, value_deps) *) val venv_find_implicit_deps : venv -> Node.t -> NodeSet.t * NodeSet.t * NodeSet.t * value list val venv_find_implicit_rules : venv -> Node.t -> erule list (* * Ordering. *) val venv_add_orders : venv -> loc -> target list -> venv val venv_is_order : venv -> string -> bool val venv_add_ordering_rule : venv -> pos -> loc -> var -> target -> target list -> venv val venv_get_ordering_info : venv -> var -> ordering_info val venv_get_ordering_deps : venv -> ordering_info -> NodeSet.t -> NodeSet.t (* * Update the environment with a result. *) val add_exports : venv -> venv -> pos -> export -> venv val add_path_exports : venv -> venv -> venv -> pos -> path -> export -> venv val hoist_path : venv -> path -> obj -> venv val hoist_this : venv -> venv -> path -> venv (* * Cached buildable flags. *) val venv_find_target_is_buildable_exn : venv -> Node.t -> bool val venv_find_target_is_buildable_proper_exn : venv -> Node.t -> bool val venv_add_target_is_buildable : venv -> Node.t -> bool -> unit val venv_add_target_is_buildable_proper : venv -> Node.t -> bool -> unit (* * Printing. *) val pp_print_tok : formatter -> tok -> unit val pp_print_string_pipe : formatter -> string_pipe -> unit val pp_print_string_command_inst : formatter -> string_command_inst -> unit val pp_print_string_command_line : formatter -> string_command_line -> unit val pp_print_string_command_lines : formatter -> string_command_line list -> unit val pp_print_arg_pipe : formatter -> arg_pipe -> unit val pp_print_arg_command_inst : formatter -> arg_command_inst -> unit val pp_print_arg_command_line : formatter -> arg_command_line -> unit val pp_print_arg_command_lines : formatter -> arg_command_line list -> unit (************************************************************************ * For squashing (producing digests). *) val squash_prim_fun : prim_fun -> var val squash_object : obj -> value SymbolTable.t (* * General exception includes debugging info. *) exception Break of loc * venv (* * For debugging. *) val pp_print_explicit_rules : formatter -> venv -> unit val pp_print_rule : formatter -> erule -> unit (* * Static values. *) val debug_db : bool ref (* * Static loading. *) module type StaticSig = sig type in_handle type out_handle (* * Open a file. The Node.t is the name of the _source_ file, * not the .omc file. We'll figure out where the .omc file * goes on our own. Raises Not_found if the source file * can't be found. * The implementation will make sure all the locking/unlocking is done properly. *) val read : venv -> Node.t -> (in_handle -> 'a) -> 'a val rewrite : in_handle -> (out_handle -> 'a) -> 'a (* * Fetch the two kinds of entries. *) val find_ir : in_handle -> ir val find_object : in_handle -> obj val get_ir : out_handle -> ir val get_object : out_handle -> obj (* * Add the two kinds of entries. *) val add_ir : out_handle -> ir -> unit val add_object : out_handle -> obj -> unit end module Static : StaticSig;; (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/env/omake_exn_print.mli0000664000152300015230000000265710456240612016411 0ustar jyhjyh(* * Exception printer. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf (* * Exceptions that should be treated as command failures. *) val is_shell_exn : exn -> bool (* * Print an exception. *) val pp_print_exn : formatter -> exn -> unit (* * Generic catcher. *) val catch : ('a -> 'b) -> 'a -> 'b (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/env/omake_command_digest.ml0000664000152300015230000006563110656154767017231 0ustar jyhjyh(* * Compute the digest of a value. This works the naive way: * 1. Convert the value to a string * 2. Compute its MD5 digest * This can be fairly expensive if the value is big. The * current implementation is designed so that we can at least * compress the string a bit. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2005-2007 Mojave Group, California Insitute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_symbol open Lm_string_set open Lm_hash_sig open Lm_hash open Omake_ir open Omake_env open Omake_pos open Omake_node open Omake_shell_type open Omake_value_type open Omake_value_print open Omake_command_type (* * Codes. *) (* %%MAGICBEGIN%% *) type code = CodeApplyExp | CodeApplyString | CodeArgv | CodeArrayOfString | CodeArrayString | CodeArrow | CodeBegin | CodeObjectString | CodeBodyString | CodeCase | CodeCaseExp | CodeCases | CodeCasesExp | CodeCasesString | CodeCaseString | CodeCommaExp | CodeCommand | CodeCommands | CodeNoneString | CodeConstString | CodeVarString | CodeEagerApply | CodeEnd | CodeExpString | CodeIfExp | CodeOpenExp | CodeIncludeExp | CodeLazyApply | CodeLetFunExp | CodeLetObjectExp | CodeLetThisExp | CodeLetVarExp | CodeMethodApplyExp | CodeMethodApplyString | CodeNormalApply | CodeQuoteString | CodeQuoteStringString | CodeExportExp | CodeExportNone | CodeExportAll | CodeExportList | CodeExportRules | CodeExportPhonies | CodeExportVar | CodeCancelExportExp | CodeReturnBodyExp | CodeStringExp | CodeReturnExp | CodeReturnObjectExp | CodeReturnSaveExp | CodeVarScopePrivate | CodeVarScopeThis | CodeVarScopeVirtual | CodeVarScopeGlobal | CodeVarPrivate | CodeVarThis | CodeVarVirtual | CodeVarGlobal | CodeSectionExp | CodeSequenceExp | CodeSequenceString | CodeShellExp | CodeStaticExp | CodeSpace | CodeSuperApplyExp | CodeSuperApplyString | CodeThisString | CodeValApply | CodeValArray | CodeValBody | CodeValData | CodeValDir | CodeValFloat | CodeValFun | CodeValInt | CodeValMap | CodeValMethodApply | CodeValNode | CodeValNone | CodeValObject | CodeValPrim | CodeValQuote | CodeValQuoteString | CodeValSequence | CodeValString | CodeValVar | CodeValMaybeApply | CodeValSuperApply | CodeVarDefApply | CodeVarDefNormal | CodeLetKeyExp | CodeKeyApplyString | CodeKeyExp | CodeValKeyApply | CodeValStaticApply | CodeArg | CodeArgString | CodeArgData | CodeArgNone | CodePipeAnd | CodePipeOr | CodePipeSequence | CodePipeCommand | CodePipeApply | CodePipeCond | CodePipeCompose | CodePipeGroup | CodePipeBackground | CodeCommandEnvItem | CodeCommandEnv | CodeTrue | CodeFalse | CodeQuietFlag | CodeAllowFailureFlag | CodeAllowOutputFlag | CodeCommandFlags | CodeCmdArg | CodeCmdNode | CodePipe | CodeRedirectNode | CodeRedirectArg | CodeRedirectNone (* ZZZ: temporary fix, don't propagate to keyword *) | CodeValFunValue (* %%MAGICEND%% *) module type HashSig = sig include Lm_hash_sig.HashDigestSig val add_code : t -> code -> unit end;; (* %%MAGICBEGIN%% *) module Hash : HashSig = struct include Lm_hash.HashDigest (* * Add a code. *) let add_code buf (code : code) = add_bits buf (Obj.magic code) end;; (* %%MAGICEND%% *) (* * Variable squashing. *) let squash_var buf v = Hash.add_string buf (string_of_symbol v) let rec squash_vars buf vars = match vars with [v] -> squash_var buf v | v :: vars -> squash_var buf v; Hash.add_code buf CodeSpace; squash_vars buf vars | [] -> () let squash_var_info buf v = match v with VarPrivate (_, v) -> Hash.add_code buf CodeVarPrivate; Hash.add_code buf CodeSpace; squash_var buf v | VarThis (_, v) -> Hash.add_code buf CodeVarThis; Hash.add_code buf CodeSpace; squash_var buf v | VarVirtual (_, v) -> Hash.add_code buf CodeVarVirtual; Hash.add_code buf CodeSpace; squash_var buf v | VarGlobal (_, v) -> Hash.add_code buf CodeVarGlobal; Hash.add_code buf CodeSpace; squash_var buf v (* * File. *) let squash_node buf node = Hash.add_string buf (Node.absname node) (* * String representations. *) let squash_var_scope buf scope = let code = match scope with VarScopePrivate -> CodeVarScopePrivate | VarScopeThis -> CodeVarScopeThis | VarScopeVirtual -> CodeVarScopeVirtual | VarScopeGlobal -> CodeVarScopeGlobal in Hash.add_code buf code let squash_strategy buf strategy = let s = match strategy with LazyApply -> CodeLazyApply | EagerApply -> CodeEagerApply | NormalApply -> CodeNormalApply in Hash.add_code buf s let squash_def_kind buf kind = let s = match kind with VarDefNormal -> CodeVarDefNormal | VarDefAppend -> CodeVarDefApply in Hash.add_code buf s (* * Export info. *) let squash_export_info buf info = match info with Omake_ir.ExportNone -> Hash.add_code buf CodeExportNone | Omake_ir.ExportAll -> Hash.add_code buf CodeExportAll | Omake_ir.ExportList items -> Hash.add_code buf CodeExportList; List.iter (fun item -> match item with Omake_ir.ExportRules -> Hash.add_code buf CodeExportRules | Omake_ir.ExportPhonies -> Hash.add_code buf CodeExportPhonies | Omake_ir.ExportVar v -> Hash.add_code buf CodeExportVar; squash_var_info buf v) items (* * Squash string expressions. *) let rec squash_string_exp pos buf e = Hash.add_code buf CodeBegin; begin match e with NoneString _ -> Hash.add_code buf CodeNoneString | ConstString (_, s) -> Hash.add_code buf CodeConstString; Hash.add_string buf s | VarString (_, v) -> Hash.add_code buf CodeVarString; squash_var_info buf v | KeyApplyString (_, strategy, s) -> Hash.add_code buf CodeKeyApplyString; squash_strategy buf strategy; Hash.add_string buf s | ApplyString (_, strategy, v, sl) -> Hash.add_code buf CodeApplyString; squash_strategy buf strategy; Hash.add_code buf CodeSpace; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_string_exp_list pos buf sl | SuperApplyString (_, strategy, v1, v2, sl) -> Hash.add_code buf CodeSuperApplyString; squash_strategy buf strategy; Hash.add_code buf CodeSpace; squash_var buf v1; Hash.add_code buf CodeSpace; squash_var buf v2; Hash.add_code buf CodeSpace; squash_string_exp_list pos buf sl | MethodApplyString (_, strategy, v, vars, sl) -> Hash.add_code buf CodeMethodApplyString; squash_strategy buf strategy; Hash.add_code buf CodeSpace; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_vars buf vars; Hash.add_code buf CodeSpace; squash_string_exp_list pos buf sl | SequenceString (_, sl) -> Hash.add_code buf CodeSequenceString; squash_string_exp_list pos buf sl | ArrayString (_, sl) -> Hash.add_code buf CodeArrayString; squash_string_exp_list pos buf sl | ArrayOfString (_, s) -> Hash.add_code buf CodeArrayOfString; squash_string_exp pos buf s | QuoteString (_, sl) -> Hash.add_code buf CodeQuoteString; squash_string_exp_list pos buf sl | QuoteStringString (_, c, sl) -> Hash.add_code buf CodeQuoteStringString; Hash.add_char buf c; squash_string_exp_list pos buf sl | ObjectString (_, el, export) -> Hash.add_code buf CodeObjectString; squash_exp_list pos buf el; Hash.add_code buf CodeSpace; squash_export_info buf export | BodyString (_, el, export) -> Hash.add_code buf CodeBodyString; squash_exp_list pos buf el; Hash.add_code buf CodeSpace; squash_export_info buf export | ExpString (_, el, export) -> Hash.add_code buf CodeExpString; squash_exp_list pos buf el; Hash.add_code buf CodeSpace; squash_export_info buf export | CasesString (_, cases) -> Hash.add_code buf CodeCasesString; squash_cases_exp pos buf cases | ThisString _ -> Hash.add_code buf CodeThisString end; Hash.add_code buf CodeEnd and squash_string_exp_list pos buf sl = match sl with [s] -> squash_string_exp pos buf s | s :: sl -> squash_string_exp pos buf s; Hash.add_code buf CodeSpace; squash_string_exp_list pos buf sl | [] -> () and squash_case_exp pos buf (v, s, el, export) = Hash.add_code buf CodeCaseString; squash_var buf v; Hash.add_code buf CodeSpace; squash_string_exp pos buf s; Hash.add_code buf CodeSpace; squash_exp_list pos buf el; Hash.add_code buf CodeSpace; squash_export_info buf export; Hash.add_code buf CodeEnd and squash_cases_exp pos buf cases = Hash.add_code buf CodeCasesString; List.iter (squash_case_exp pos buf) cases; Hash.add_code buf CodeEnd (* * Squash an expression. *) and squash_exp pos buf e = Hash.add_code buf CodeBegin; begin match e with LetVarExp (_, v, vl, def, s) -> Hash.add_code buf CodeLetVarExp; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_vars buf vl; Hash.add_code buf CodeSpace; squash_def_kind buf def; Hash.add_code buf CodeSpace; squash_string_exp pos buf s | KeyExp (_, v) -> Hash.add_code buf CodeKeyExp; Hash.add_string buf v | LetKeyExp (_, v, def, s) -> Hash.add_code buf CodeLetKeyExp; Hash.add_string buf v; Hash.add_code buf CodeSpace; squash_def_kind buf def; Hash.add_code buf CodeSpace; squash_string_exp pos buf s | LetFunExp (_, v, vl, params, s, export) -> Hash.add_code buf CodeLetFunExp; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_vars buf vl; Hash.add_code buf CodeSpace; squash_vars buf params; Hash.add_code buf CodeSpace; squash_exp_list pos buf s; Hash.add_code buf CodeSpace; squash_export_info buf export | LetObjectExp (_, v, vl, s, el, export) -> Hash.add_code buf CodeLetObjectExp; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_vars buf vl; Hash.add_code buf CodeSpace; squash_string_exp pos buf s; Hash.add_code buf CodeSpace; squash_exp_list pos buf el; Hash.add_code buf CodeSpace; squash_export_info buf export | LetThisExp (_, s) -> Hash.add_code buf CodeLetThisExp; squash_string_exp pos buf s | ShellExp (_, s) -> Hash.add_code buf CodeShellExp; squash_string_exp pos buf s | IfExp (_, cases) -> Hash.add_code buf CodeIfExp; squash_if_cases pos buf cases | SequenceExp (_, el) -> Hash.add_code buf CodeSequenceExp; squash_exp_list pos buf el | SectionExp (_, s, el, export) -> Hash.add_code buf CodeSectionExp; squash_string_exp pos buf s; Hash.add_code buf CodeArrow; squash_exp_list pos buf el; Hash.add_code buf CodeSpace; squash_export_info buf export | OpenExp (_, nodes) -> Hash.add_code buf CodeOpenExp; List.iter (fun node -> Hash.add_code buf CodeCommaExp; squash_node buf node) nodes | IncludeExp (_, s, sl) -> Hash.add_code buf CodeIncludeExp; squash_string_exp pos buf s; Hash.add_code buf CodeCommaExp; squash_string_exp_list pos buf sl | ApplyExp (_, v, sl) -> Hash.add_code buf CodeApplyExp; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_string_exp_list pos buf sl | SuperApplyExp (_, v1, v2, sl) -> Hash.add_code buf CodeSuperApplyExp; squash_var buf v1; Hash.add_code buf CodeSpace; squash_var buf v2; Hash.add_code buf CodeSpace; squash_string_exp_list pos buf sl | MethodApplyExp (_, v, vars, sl) -> Hash.add_code buf CodeMethodApplyExp; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_vars buf vars; Hash.add_code buf CodeSpace; squash_string_exp_list pos buf sl | ReturnBodyExp (_, el) -> Hash.add_code buf CodeReturnBodyExp; squash_exp_list pos buf el | StringExp (_, s) -> Hash.add_code buf CodeStringExp; squash_string_exp pos buf s | ReturnExp (_, s) -> Hash.add_code buf CodeReturnExp; squash_string_exp pos buf s | ReturnObjectExp (_, vars) -> Hash.add_code buf CodeReturnObjectExp; squash_vars buf vars | ReturnSaveExp _ -> Hash.add_code buf CodeReturnSaveExp | StaticExp (_, node, key, el) -> Hash.add_code buf CodeStaticExp; squash_node buf node; Hash.add_code buf CodeSpace; squash_var buf key; Hash.add_code buf CodeSpace; squash_exp_list pos buf el end; Hash.add_code buf CodeEnd and squash_exp_list pos buf el = match el with [e] -> squash_exp pos buf e | e :: el -> squash_exp pos buf e; Hash.add_code buf CodeSpace; squash_exp_list pos buf el | [] -> () and squash_if_case pos buf (s, el, export) = Hash.add_code buf CodeCaseExp; squash_string_exp pos buf s; Hash.add_code buf CodeSpace; squash_exp_list pos buf el; Hash.add_code buf CodeSpace; squash_export_info buf export; Hash.add_code buf CodeEnd and squash_if_cases pos buf cases = Hash.add_code buf CodeCasesExp; List.iter (squash_if_case pos buf) cases; Hash.add_code buf CodeEnd (* * Compute the digest of a value. *) let rec squash_value pos buf v = Hash.add_code buf CodeBegin; begin match v with ValNone -> Hash.add_code buf CodeValNone; | ValInt i -> Hash.add_code buf CodeValInt; Hash.add_int buf i | ValFloat x -> Hash.add_code buf CodeValFloat; Hash.add_float buf x | ValSequence vl -> Hash.add_code buf CodeValSequence; squash_values pos buf vl | ValArray vl -> Hash.add_code buf CodeValArray; squash_values pos buf vl | ValString s -> Hash.add_code buf CodeValString; Hash.add_string buf s | ValData s -> Hash.add_code buf CodeValData; Hash.add_string buf s | ValQuote vl -> Hash.add_code buf CodeValQuote; squash_values pos buf vl | ValQuoteString (c, vl) -> Hash.add_code buf CodeValQuoteString; Hash.add_char buf c; squash_values pos buf vl | ValApply (_, v, vl) -> Hash.add_code buf CodeValApply; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_values pos buf vl | ValMaybeApply (_, v) -> Hash.add_code buf CodeValMaybeApply; squash_var_info buf v; | ValSuperApply (_, v1, v2, vl) -> Hash.add_code buf CodeValSuperApply; squash_var buf v1; Hash.add_code buf CodeSpace; squash_var buf v2; Hash.add_code buf CodeSpace; squash_values pos buf vl | ValMethodApply (_, v, vars, vl) -> Hash.add_code buf CodeValMethodApply; squash_var_info buf v; Hash.add_code buf CodeSpace; squash_vars buf vars; Hash.add_code buf CodeSpace; squash_values pos buf vl | ValFun (_, _, params, body, export) -> Hash.add_code buf CodeValFun; squash_vars buf params; Hash.add_code buf CodeArrow; squash_exp_list pos buf body; Hash.add_code buf CodeSpace; squash_export_info buf export | ValFunValue (_, _, params, body) -> Hash.add_code buf CodeValFunValue; squash_vars buf params; Hash.add_code buf CodeArrow; squash_value pos buf body | ValPrim (_, _, f) -> Hash.add_code buf CodeValPrim; squash_var buf (squash_prim_fun f) | ValNode node -> Hash.add_code buf CodeValNode; Hash.add_string buf (Node.fullname node) | ValDir dir -> Hash.add_code buf CodeValDir; Hash.add_string buf (Dir.fullname dir) | ValBody (_, e, export) -> Hash.add_code buf CodeValBody; squash_exp_list pos buf e; Hash.add_code buf CodeSpace; squash_export_info buf export | ValObject obj -> Hash.add_code buf CodeValObject; squash_object pos buf obj | ValMap obj -> Hash.add_code buf CodeValMap; squash_map pos buf obj | ValCases cases -> squash_cases pos buf cases | ValKeyApply (_, v) -> Hash.add_code buf CodeValKeyApply; Hash.add_string buf v | ValVar (_, v) -> Hash.add_code buf CodeValVar; squash_var_info buf v; | ValDelayed { contents = ValValue v } -> squash_value pos buf v | ValDelayed { contents = ValStaticApply (node, v) } -> Hash.add_code buf CodeValStaticApply; squash_value pos buf node; Hash.add_code buf CodeSpace; squash_var buf v | ValRules _ | ValChannel _ | ValClass _ | ValOther _ as v -> let print_error buf = fprintf buf "@[Non digestable value:@ @[%a@]@ Contact the OMake team at omake@@metaprl.org if you think this should be supported@]@." pp_print_value v in raise (OmakeFatalErr (pos, LazyError print_error)) end; Hash.add_code buf CodeEnd and squash_values pos buf vl = match vl with [v] -> squash_value pos buf v | v :: vl -> squash_value pos buf v; Hash.add_code buf CodeSpace; squash_values pos buf vl | [] -> () and squash_object pos buf obj = SymbolTable.iter (fun x v -> Hash.add_code buf CodeBegin; squash_var buf x; Hash.add_code buf CodeArrow; squash_value pos buf v; Hash.add_code buf CodeEnd) (Omake_env.squash_object obj) and squash_map pos buf map = venv_map_iter (fun x v -> Hash.add_code buf CodeBegin; squash_value pos buf x; Hash.add_code buf CodeArrow; squash_value pos buf v; Hash.add_code buf CodeEnd) map and squash_case pos buf (x, v1, x2, export) = Hash.add_code buf CodeCase; squash_var buf x; Hash.add_code buf CodeSpace; squash_value pos buf v1; Hash.add_code buf CodeSpace; squash_value pos buf v1; Hash.add_code buf CodeSpace; squash_export_info buf export; Hash.add_code buf CodeEnd and squash_cases pos buf cases = Hash.add_code buf CodeCases; List.iter (squash_case pos buf) cases; Hash.add_code buf CodeEnd (* * Commands. *) let squash_command_flag buf flag = let code = match flag with QuietFlag -> CodeQuietFlag | AllowFailureFlag -> CodeAllowFailureFlag | AllowOutputFlag -> CodeAllowOutputFlag in Hash.add_code buf code let squash_command_flags buf flags = Hash.add_code buf CodeCommandFlags; List.iter (squash_command_flag buf) flags; Hash.add_code buf CodeEnd let squash_arg_string buf arg = match arg with ArgString s -> Hash.add_code buf CodeArgString; Hash.add_string buf s | ArgData s -> Hash.add_code buf CodeArgData; Hash.add_string buf s let squash_arg buf arg = Hash.add_code buf CodeArg; List.iter (squash_arg_string buf) arg; Hash.add_code buf CodeEnd let squash_redirect buf chan = match chan with RedirectNode node -> Hash.add_code buf CodeRedirectNode; squash_node buf node | RedirectArg arg -> Hash.add_code buf CodeRedirectArg; squash_arg buf arg | RedirectNone -> Hash.add_code buf CodeRedirectNone let squash_argv buf argv = Hash.add_code buf CodeArgv; List.iter (squash_arg buf) argv; Hash.add_code buf CodeEnd let squash_command_env_item buf (v, arg) = Hash.add_code buf CodeCommandEnvItem; squash_var buf v; Hash.add_code buf CodeSpace; squash_arg buf arg; Hash.add_code buf CodeEnd let squash_command_env buf env = Hash.add_code buf CodeCommandEnv; List.iter (squash_command_env_item buf) env; Hash.add_code buf CodeEnd let squash_exe buf exe = match exe with CmdArg arg -> Hash.add_code buf CodeCmdArg; squash_arg buf arg | CmdNode node -> Hash.add_code buf CodeCmdNode; squash_node buf node let squash_pipe_op buf op = let code = match op with PipeAnd -> CodePipeAnd | PipeOr -> CodePipeOr | PipeSequence -> CodePipeSequence in Hash.add_code buf code let squash_pipe_command pos buf (info : arg_cmd) = let { cmd_env = env; cmd_exe = exe; cmd_argv = argv; cmd_stdin = stdin; cmd_stdout = stdout; cmd_stderr = stderr; cmd_append = append } = info in Hash.add_code buf CodePipeCommand; squash_command_env buf env; Hash.add_code buf CodeSpace; squash_exe buf exe; Hash.add_code buf CodeSpace; squash_argv buf argv; Hash.add_code buf CodeSpace; squash_redirect buf stdin; Hash.add_code buf CodeSpace; squash_redirect buf stdout; Hash.add_code buf CodeSpace; Hash.add_bool buf stderr; Hash.add_code buf CodeSpace; Hash.add_bool buf append; Hash.add_code buf CodeEnd let squash_pipe_apply pos buf (info : arg_apply) = let { apply_name = name; apply_args = args; apply_stdin = stdin; apply_stdout = stdout; apply_stderr = stderr; apply_append = append } = info in Hash.add_code buf CodePipeApply; squash_var buf name; Hash.add_code buf CodeSpace; squash_values pos buf args; Hash.add_code buf CodeSpace; squash_redirect buf stdin; Hash.add_code buf CodeSpace; squash_redirect buf stdout; Hash.add_code buf CodeSpace; Hash.add_bool buf stderr; Hash.add_code buf CodeSpace; Hash.add_bool buf append; Hash.add_code buf CodeEnd let rec squash_pipe pos buf (pipe : arg_pipe) = (match pipe with PipeApply (_, info) -> squash_pipe_apply pos buf info | PipeCommand (_, info) -> squash_pipe_command pos buf info | PipeCond (_, op, pipe1, pipe2) -> Hash.add_code buf CodePipeCond; squash_pipe_op buf op; squash_pipe pos buf pipe1; squash_pipe pos buf pipe2 | PipeCompose (_, b, pipe1, pipe2) -> Hash.add_code buf CodePipeCompose; Hash.add_bool buf b; squash_pipe pos buf pipe1; squash_pipe pos buf pipe2 | PipeGroup (_, info) -> squash_pipe_group pos buf info | PipeBackground (_, pipe) -> Hash.add_code buf CodePipeBackground; squash_pipe pos buf pipe); Hash.add_code buf CodeEnd and squash_pipe_group pos buf info = let { group_stdin = stdin; group_stdout = stdout; group_stderr = stderr; group_append = append; group_pipe = pipe } = info in Hash.add_code buf CodePipeGroup; squash_redirect buf stdin; Hash.add_code buf CodeSpace; squash_redirect buf stdout; Hash.add_code buf CodeSpace; Hash.add_bool buf stderr; Hash.add_code buf CodeSpace; Hash.add_bool buf append; Hash.add_code buf CodeSpace; squash_pipe pos buf pipe; Hash.add_code buf CodeEnd let squash_command_line pos buf (command : arg_command_inst) = match command with CommandPipe argv -> Hash.add_code buf CodePipe; squash_pipe pos buf argv; Hash.add_code buf CodeEnd | CommandEval e -> squash_exp_list pos buf e | CommandValues values -> squash_values pos buf values let squash_command pos buf (command : arg_command_line) = let { command_dir = dir; command_inst = inst } = command in Hash.add_code buf CodeCommand; Hash.add_string buf (Dir.fullname dir); squash_command_line pos buf inst; Hash.add_code buf CodeEnd let squash_commands pos buf commands = Hash.add_code buf CodeCommands; List.iter (squash_command pos buf) commands; Hash.add_code buf CodeEnd (* * Get the digest of some commands. *) let digest_of_exp pos values e = let buf = Hash.create () in squash_values pos buf values; Hash.add_code buf CodeSpace; squash_exp pos buf e; Some (Hash.digest buf) let digest_of_commands pos commands = match commands with [] -> None | _ -> let buf = Hash.create () in let () = squash_commands pos buf commands in Some (Hash.digest buf) (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/ast/0000775000152300015230000000000010660137222012510 5ustar jyhjyhomake-0.9.8.5/src/ast/OMakefile0000664000152300015230000000034410276203710014267 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave ../util FILES[] = omake_ast omake_ast_util omake_ast_print # # The library # MakeOCamlLibrary(ast, $(FILES)) clean: $(CLEAN) # # Generate the Makefile # MakeMakefile() omake-0.9.8.5/src/ast/omake_ast.ml0000664000152300015230000000561010616420221015002 0ustar jyhjyh(* * Abstract syntax of OMakefiles. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Lm_location type var = symbol (* * Shell flags indicating whether a body needs to be read. *) type body_flag = NoBody | OptBody | ColonBody | ArrayBody (* * Function applications can be tagged as Lazy or Eager. *) type apply_strategy = LazyApply | EagerApply | NormalApply (* * When a variable is defined, these are additional flags. * The bool is true if this is an array operation. *) type define_kind = DefineString | DefineArray type define_flag = DefineNormal | DefineAppend (* * Patterns. *) type exp = NullExp of loc | StringExp of string * loc | QuoteExp of exp list * loc | QuoteStringExp of char * exp list * loc | SequenceExp of exp list * loc | ArrayExp of exp list * loc | ApplyExp of apply_strategy * var * exp list * loc | SuperApplyExp of apply_strategy * var * var * exp list * loc | MethodApplyExp of apply_strategy * var list * exp list * loc | CommandExp of var * exp * exp list * loc | VarDefExp of var list * define_kind * define_flag * exp * loc | VarDefBodyExp of var list * define_kind * define_flag * exp list * loc | ObjectDefExp of var list * define_flag * exp list * loc | FunDefExp of var list * var list * exp list * loc | RuleExp of bool * exp * exp * exp SymbolTable.t * exp list * loc | BodyExp of exp list * loc | ShellExp of exp * loc | CatchExp of var * var * exp list * loc | ClassExp of symbol list * loc | KeyExp of apply_strategy * string * loc | KeyDefExp of string * define_kind * define_flag * exp * loc | KeyDefBodyExp of string * define_kind * define_flag * exp list * loc type prog = exp list (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ast/omake_ast_util.ml0000664000152300015230000001624610616420221016046 0ustar jyhjyh(* * General utilities on the AST. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_symbol open Omake_ast let loc_of_exp = function NullExp loc | StringExp (_, loc) | QuoteExp (_, loc) | QuoteStringExp (_, _, loc) | SequenceExp (_, loc) | ArrayExp (_, loc) | ApplyExp (_, _, _, loc) | SuperApplyExp (_, _, _, _, loc) | MethodApplyExp (_, _, _, loc) | CommandExp (_, _, _, loc) | VarDefExp (_, _, _, _, loc) | VarDefBodyExp (_, _, _, _, loc) | KeyExp (_, _, loc) | KeyDefExp (_, _, _, _, loc) | KeyDefBodyExp (_, _, _, _, loc) | FunDefExp (_, _, _, loc) | ObjectDefExp (_, _, _, loc) | RuleExp (_, _, _, _, _, loc) | BodyExp (_, loc) | ShellExp (_, loc) | CatchExp (_, _, _, loc) | ClassExp (_, loc) -> loc (* * Get a key word that describes the expression. *) let rec last vl = match vl with [v] -> v | _ :: vl -> last vl | [] -> raise (Invalid_argument "last") let key_of_exp = function NullExp _ -> "null" | StringExp _ | QuoteExp _ | QuoteStringExp _ | SequenceExp _ | ArrayExp _ -> "string" | ApplyExp (_, v, _, _) | CommandExp (v, _, _, _) | SuperApplyExp (_, v, _, _, _) -> Lm_symbol.to_string v | VarDefExp (vl, _, _, _, _) | VarDefBodyExp (vl, _, _, _, _) | ObjectDefExp (vl, _, _, _) | FunDefExp (vl, _, _, _) | MethodApplyExp (_, vl, _, _) -> Lm_symbol.to_string (last vl) | KeyExp _ | KeyDefExp _ | KeyDefBodyExp _ -> "key" | RuleExp _ -> "rule" | BodyExp _ -> "body" | ShellExp _ -> "shell" | CatchExp _ -> "catch" | ClassExp _ -> "class" (* * In an argument list, each ... is replaced by the body. * If there is no elision, then the body is added as the * first argument. *) let is_elide_exp = function SequenceExp ([StringExp (".", _); StringExp (".", _); StringExp (".", _)], _) | SequenceExp ([StringExp ("[", _); StringExp (".", _); StringExp (".", _); StringExp (".", _); StringExp ("]", _)], _) -> true | _ -> false let add_elide_code loc code1 code2 = match code1, code2 with NoBody, code | code, NoBody -> code | OptBody, code | code, OptBody -> code | _ -> if code1 = code2 then code1 else raise (Invalid_argument "conflicting elisions") let scan_elide_args code args = List.fold_left (fun code arg -> match arg with SequenceExp ([StringExp (".", _); StringExp (".", _); StringExp (".", _)], loc) -> add_elide_code loc code ColonBody | SequenceExp ([StringExp ("[", _); StringExp (".", _); StringExp (".", _); StringExp (".", _); StringExp ("]", _)], loc) -> add_elide_code loc code ArrayBody | _ -> code) code args let scan_body_flag code e = match e with ApplyExp (_, _, args, _) | SuperApplyExp (_, _, _, args, _) | MethodApplyExp (_, _, args, _) -> scan_elide_args code args | _ -> code (* * Update the body of an expression. *) let update_body_args loc code body args = let body = match code with NoBody | OptBody | ColonBody -> BodyExp (body, loc) | ArrayBody -> ArrayExp (body, loc) in let rev_args, found = List.fold_left (fun (args, found) arg -> if is_elide_exp arg then body :: args, true else arg :: args, found) ([], false) args in let args = List.rev rev_args in if found then args else body :: args let update_body_exp e code body = match e with NullExp _ | StringExp _ | QuoteExp _ | QuoteStringExp _ | SequenceExp _ | ArrayExp _ | VarDefExp _ | KeyExp _ | KeyDefExp _ | BodyExp _ | ShellExp _ | ClassExp _ -> raise (Invalid_argument "update_body") | ApplyExp (strategy, v, args, loc) -> ApplyExp (strategy, v, update_body_args loc code body args, loc) | SuperApplyExp (strategy, super, v, args, loc) -> SuperApplyExp (strategy, super, v, update_body_args loc code body args, loc) | MethodApplyExp (strategy, vl, args, loc) -> MethodApplyExp (strategy, vl, update_body_args loc code body args, loc) | CommandExp (v, e, _, loc) -> CommandExp (v, e, body, loc) | VarDefBodyExp (v, kind, flag, _, loc) -> VarDefBodyExp (v, kind, flag, body, loc) | KeyDefBodyExp (v, kind, flag, _, loc) -> KeyDefBodyExp (v, kind, flag, body, loc) | ObjectDefExp (v, flag, _, loc) -> ObjectDefExp (v, flag, body, loc) | FunDefExp (v, params, _, loc) -> FunDefExp (v, params, body, loc) | RuleExp (flag, target, pattern, sources, _, loc) -> RuleExp (flag, target, pattern, sources, body, loc) | CatchExp (name, v, _, loc) -> CatchExp (name, v, body, loc) let update_body e code body = match code, body with NoBody, [] | OptBody, [] | ColonBody, [] -> e | ArrayBody, _ | _, _ :: _ -> update_body_exp e code body (* * Indicate whether the command may have remaining parts. *) let continue_commands = ["if", "else"; "elseif", "else"; "switch", "case"; "match", "case"; "lexer", "case"; "case", "case"; "default", "case"; "try", "catch"; "catch", "catch"] let continue_syms = List.fold_left (fun set (s1, s2) -> SymbolTable.add set (Lm_symbol.add s1) s2) SymbolTable.empty continue_commands let can_continue e = match e with NullExp _ | StringExp _ | QuoteExp _ | QuoteStringExp _ | SequenceExp _ | ArrayExp _ | ApplyExp _ | SuperApplyExp _ | MethodApplyExp _ | VarDefExp _ | VarDefBodyExp _ | KeyExp _ | KeyDefExp _ | KeyDefBodyExp _ | ObjectDefExp _ | FunDefExp _ | RuleExp _ | BodyExp _ | ShellExp _ | ClassExp _ -> None | CatchExp _ -> Some "catch" | CommandExp (v, _, _, _) -> try Some (SymbolTable.find continue_syms v) with Not_found -> None (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ast/omake_ast_print.ml0000664000152300015230000001707410616414475016243 0ustar jyhjyh(* * Print the AST (for debugging). * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_debug open Lm_printf open Lm_symbol open Lm_location open Omake_ast open Omake_ast_util open Omake_print_util let print_location = create_debug (**) { debug_name = "print-loc"; debug_description = "Print locations"; debug_value = false } (* * Application strategy. *) let pp_print_strategy buf s = match s with LazyApply -> pp_print_char buf '\'' | EagerApply -> pp_print_char buf ',' | NormalApply -> () (* * Definitions. *) let pp_print_define_kind buf flag = match flag with DefineString -> () | DefineArray -> pp_print_string buf "[]" let pp_print_define_flag buf flag = let s = match flag with DefineNormal -> "=" | DefineAppend -> "+=" in pp_print_string buf s (* * Print an expression. *) let rec pp_print_exp buf e = if !print_location then fprintf buf "<%a>" pp_print_location (loc_of_exp e); match e with NullExp _ -> pp_print_string buf "" | StringExp (s, _) -> fprintf buf "(string \"%s\")" (String.escaped s) | QuoteExp (el, _) -> fprintf buf "@[(quote"; List.iter (fun e -> fprintf buf "@ %a" pp_print_exp e) el; fprintf buf ")@]" | QuoteStringExp (c, el, _) -> fprintf buf "@[(quoted-string %c" c; List.iter (fun e -> fprintf buf "@ %a" pp_print_exp e) el; fprintf buf "%c)@]" c | SequenceExp (el, _) -> fprintf buf "@[(sequence"; List.iter (fun e -> fprintf buf "@ %a" pp_print_exp e) el; fprintf buf ")@]" | ArrayExp (el, _) -> fprintf buf "@[(array"; List.iter (fun e -> fprintf buf "@ %a" pp_print_exp e) el; fprintf buf ")@]" | ApplyExp (LazyApply, v, [], _) -> fprintf buf "$%a" pp_print_symbol v | ApplyExp (s, v, el, _) -> fprintf buf "@[%a%a(" pp_print_symbol v pp_print_strategy s; ignore (List.fold_left (fun firstp e -> if not firstp then pp_print_space buf (); pp_print_exp buf e; false) true el); fprintf buf ")@]" | SuperApplyExp (s, super, v, el, _) -> fprintf buf "@[%a%a::%a(" pp_print_symbol super pp_print_strategy s pp_print_symbol v; ignore (List.fold_left (fun firstp e -> if not firstp then pp_print_space buf (); pp_print_exp buf e; false) true el); fprintf buf ")@]" | MethodApplyExp (s, vl, el, _) -> fprintf buf "@[%a%a(" pp_print_method_name vl pp_print_strategy s; ignore (List.fold_left (fun firstp e -> if not firstp then pp_print_space buf (); pp_print_exp buf e; false) true el); fprintf buf ")@]" | CommandExp (v, arg, commands, _) -> fprintf buf "@[@[command %a(%a) {%a@]@ }@]" (**) pp_print_symbol v pp_print_exp arg pp_print_exp_list commands | VarDefExp (v, kind, flag, e, _) -> fprintf buf "@[let %a%a %a@ %a@]" (**) pp_print_method_name v pp_print_define_kind kind pp_print_define_flag flag pp_print_exp e | VarDefBodyExp (v, kind, flag, el, _) -> fprintf buf "@[let %a%a %a@ %a@]" (**) pp_print_method_name v pp_print_define_kind kind pp_print_define_flag flag pp_print_exp_list el | KeyExp (strategy, v, _) -> fprintf buf "$%a|%s|" pp_print_strategy strategy v | KeyDefExp (v, kind, flag, e, _) -> fprintf buf "@[\"%s\"%a %a@ %a@]" (**) v pp_print_define_kind kind pp_print_define_flag flag pp_print_exp e | KeyDefBodyExp (v, kind, flag, el, _) -> fprintf buf "@[key \"%s\"%a %a@ %a@]" (**) v pp_print_define_kind kind pp_print_define_flag flag pp_print_exp_list el | ObjectDefExp (v, flag, el, _) -> fprintf buf "@[let %a. %a@ %a@]" (**) pp_print_method_name v pp_print_define_flag flag pp_print_exp_list el; | FunDefExp (v, vars, el, _) -> fprintf buf "@[let %a(" pp_print_method_name v; ignore (List.fold_left (fun firstp v -> if not firstp then pp_print_string buf ", "; pp_print_symbol buf v; false) true vars); fprintf buf ")"; List.iter (fun e -> fprintf buf "@ %a" pp_print_exp e) el; fprintf buf "@]" | RuleExp (multiple, target, pattern, source, commands, _) -> fprintf buf "@[@[rule {@ multiple = %b;@ @[target =@ %a;@]@ @[pattern =@ %a;@]@ @[source =@ %a@]@ %a@]@ }@]" (**) multiple pp_print_exp target pp_print_exp pattern pp_print_table_exp source pp_print_exp_list commands | BodyExp (body, _) -> fprintf buf "@[body"; List.iter (fun e -> fprintf buf "@ %a" pp_print_exp e) body; fprintf buf "@]" | ShellExp (e, _) -> fprintf buf "@[shell %a@]" pp_print_exp e | CatchExp (name, v, body, _) -> fprintf buf "@[catch %a(%a)@ %a@]" (**) pp_print_symbol name pp_print_symbol v pp_print_exp_list body | ClassExp (names, _) -> fprintf buf "@[class"; List.iter (fun v -> fprintf buf "@ %a" pp_print_symbol v) names; fprintf buf "@]" and pp_print_exp_list buf commands = List.iter (fun e -> fprintf buf "@ %a" pp_print_exp e) commands and pp_print_exp_option buf e_opt = match e_opt with Some e -> pp_print_exp buf e | None -> pp_print_string buf "" and pp_print_table_exp buf source = fprintf buf "@[@[{"; SymbolTable.iter (fun v e -> fprintf buf "@ %a = %a" pp_print_symbol v pp_print_exp e) source; fprintf buf "@]@ }@]" (* * A program is a list of expressions. *) let pp_print_prog buf prog = fprintf buf "@[Prog:"; List.iter (fun e -> fprintf buf "@ %a" pp_print_exp e) prog; fprintf buf "@]" (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ast/omake_ast_util.mli0000664000152300015230000000264310616414475016231 0ustar jyhjyh(* * Utilities on the AST. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_location open Omake_ast val loc_of_exp : exp -> loc val key_of_exp : exp -> string val scan_body_flag : body_flag -> exp -> body_flag val update_body : exp -> body_flag -> exp list -> exp val can_continue : exp -> string option (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/ast/omake_ast_print.mli0000664000152300015230000000262710456240612016402 0ustar jyhjyh(* * Print AST expressions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Omake_ast val print_location : bool ref val pp_print_strategy : out_channel -> apply_strategy -> unit val pp_print_exp : out_channel -> exp -> unit val pp_print_prog : out_channel -> exp list -> unit (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/eval/0000775000152300015230000000000010660137222012650 5ustar jyhjyhomake-0.9.8.5/src/eval/OMakefile0000664000152300015230000000035110364515232014430 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave ../util ../ast ../ir ../env ../exec FILES[] = omake_eval omake_value MakeOCamlLibrary(eval, $(FILES)) clean: $(CLEAN) # # Generate the Makefile # MakeMakefile() omake-0.9.8.5/src/eval/omake_eval.ml0000664000152300015230000023076510657124511015325 0ustar jyhjyh(* * Predefined set of functions. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] *) open Lm_debug open Lm_printf open Lm_symbol open Lm_location open Lm_string_set open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_exec open Omake_wild open Omake_node open Omake_util open Omake_state open Omake_ir_ast open Omake_symbol open Omake_command open Omake_ir_print open Omake_node_sig open Omake_exec_type open Omake_exec_util open Omake_shell_type open Omake_cache_type open Omake_value_type open Omake_value_print open Omake_command_type open Omake_command_digest module Pos = MakePos (struct let name = "Omake_eval" end);; open Pos let debug_eval = create_debug (**) { debug_name = "debug-eval"; debug_description = "Debug the evaluator"; debug_value = false } let print_ast = create_debug (**) { debug_name = "print-ast"; debug_description = "Print the AST after parsing"; debug_value = false } let print_ir = create_debug (**) { debug_name = "print-ir"; debug_description = "Print the IR after parsing"; debug_value = false } let print_rules = create_debug (**) { debug_name = "print-rules"; debug_description = "Print the rules after evaluation"; debug_value = false } let print_files = create_debug (**) { debug_name = "print-files"; debug_description = "Print the files as they are read"; debug_value = false } (* * Including files. *) type include_flag = IncludeFile | IncludeSubdir (************************************************************************ * Utilities. *) let raise_uncaught_exception pos = function Sys.Break | OmakeException _ | OmakeFatal _ | OmakeFatalErr _ | UncaughtException _ as exn -> raise exn | exn -> raise (UncaughtException (pos, exn)) (* * Add an optional quote. *) let buffer_add_quote buf = function Some c -> Buffer.add_char buf c | None -> () (* * The various forms of empty values. *) let rec is_empty_value v = match v with ValNone | ValString "" | ValData "" | ValQuote [] | ValArray [] | ValRules [] -> true | ValSequence vl -> List.for_all is_empty_value vl | ValObject obj -> (try is_empty_value (venv_find_field_internal_exn obj builtin_sym) with Not_found -> false) | ValInt _ | ValFloat _ | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValArray _ | ValApply _ | ValMaybeApply _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValNode _ | ValDir _ | ValBody _ | ValMap _ | ValSuperApply _ | ValMethodApply _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValKeyApply _ | ValDelayed _ | ValVar _ -> false (* * Check whether a value has an embedded array. *) let rec is_array_value v = match v with ValArray _ -> true | ValSequence [v] | ValQuote [v] -> is_array_value v | ValObject obj -> (try match venv_find_field_internal_exn obj builtin_sym with ValArray _ -> true | _ -> false with Not_found -> false) | ValNone | ValInt _ | ValFloat _ | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValApply _ | ValMaybeApply _ | ValSequence _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValNode _ | ValDir _ | ValBody _ | ValMap _ | ValSuperApply _ | ValMethodApply _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValKeyApply _ | ValVar _ | ValDelayed _ -> false (* * Get a value from a string_exp. *) let key_strategy_is_eager be_eager strategy = match strategy with EagerApply -> true | NormalApply -> be_eager | LazyApply -> false let strategy_is_eager be_eager strategy v = match strategy, v with EagerApply, _ | NormalApply, VarPrivate _ -> true | NormalApply, _ -> be_eager | LazyApply, VarPrivate _ -> not be_eager | LazyApply, _ -> false (************************************************************************ * Compiling utilities. *) let postprocess_ir venv ir = let () = if debug print_ir then eprintf "@[IR1:@ %a@]@." Omake_ir_print.pp_print_exp ir.ir_exp in let ir = { ir with ir_exp = Omake_ir_semant.build_prog venv ir.ir_exp } in let () = if debug print_ir then eprintf "@[IR2:@ %a@]@." Omake_ir_print.pp_print_exp ir.ir_exp in ir (* * Parse and evaluate a file. *) let rec parse_ir venv scope node = let filename = Node.fullname node in let ast = Omake_ast_lex.parse_ast filename in let () = if debug print_ast then eprintf "@[AST:@ %a@]@." Omake_ast_print.pp_print_prog ast in let vars = venv_include_scope venv scope in let senv, ir = Omake_ir_ast.compile_prog (penv_of_vars (open_ir venv) venv node vars) ast in postprocess_ir venv ir (* * When constructing a path, the relative filenames * should be auto-rehash. * * values : the path * dirname : the subdirectory to search (often ".") *) and path_of_values_select venv pos values dirname = let rec collect groups auto_rehash items values = match values with v :: values -> let rehash_flag, dir = match v with ValDir dir -> false, dir | ValNode node -> let dir = venv_intern_dir venv (string_of_value venv pos v) in false, dir | _ -> let s = string_of_value venv pos v in let rehash_flag = not (Lm_filename_util.is_absolute s) in let dir = venv_intern_dir venv s in rehash_flag, dir in let dir = Dir.chdir dir dirname in let groups, items = if rehash_flag <> auto_rehash && items <> [] then (auto_rehash, List.rev items) :: groups, [dir] else groups, dir :: items in collect groups rehash_flag items values | [] -> if items <> [] then (auto_rehash, List.rev items) :: groups else groups in List.rev (collect [] false [] values) and path_of_values_rehash venv pos values dirname = let dir_of_value v = let dir = match v with ValDir dir -> dir | _ -> venv_intern_dir venv (string_of_value venv pos v) in Dir.chdir dir dirname in [true, List.map dir_of_value values] and path_of_values venv pos values dirname = let auto_rehash = try bool_of_value venv pos (venv_find_var_exn venv auto_rehash_var) with Not_found -> false in let f = if auto_rehash then path_of_values_rehash else path_of_values_select in f venv pos values dirname (* * Open the file. * Get the IR and return the vars. *) and find_include_file venv pos loc filename = let pos = string_pos "find_include_file" pos in let cache = venv_cache venv in if not (Filename.is_relative filename) || not (Filename.is_implicit filename) then let fullname = filename ^ omake_file_suffix in let node1 = venv_intern venv PhonyProhibited fullname in if Omake_cache.exists cache node1 then node1 else let node2 = venv_intern venv PhonyProhibited filename in if Omake_cache.exists cache node2 then node2 else let print_error buf = fprintf buf "@[include file not found, neither file exists:@ %a@ %a@]" (**) pp_print_node node1 pp_print_node node2 in raise (OmakeException (loc_pos loc pos, LazyError print_error)) else let dirname = Filename.dirname filename in let basename = Filename.basename filename in let fullname = basename ^ omake_file_suffix in let path = venv_find_var venv pos loc omakepath_var in let full_path = values_of_value venv pos path in let path = path_of_values venv pos full_path dirname in let cache = venv_cache venv in let listing = Omake_cache.ls_path cache path in try match Omake_cache.listing_find cache listing fullname with DirEntry dir -> raise (OmakeException (loc_pos loc pos, StringDirError ("is a directory", dir))) | NodeEntry node -> node with Not_found -> try match Omake_cache.listing_find cache listing basename with DirEntry dir -> raise (OmakeException (loc_pos loc pos, StringDirError ("is a directory", dir))) | NodeEntry node -> node with Not_found -> let print_error buf = fprintf buf "@[include file %s not found in OMAKEPATH@ (@[OMAKEPATH[] =%a@])@]" (**) filename pp_print_value_list full_path in raise (OmakeException (loc_pos loc pos, LazyError print_error)) and open_ir venv filename pos loc = let pos = string_pos "open_ir" pos in let source = find_include_file venv pos loc filename in let ir = compile_ir venv IncludePervasives pos loc source in if !print_ir then begin eprintf "@[Vars: %a" pp_print_node source; SymbolTable.iter (fun v info -> eprintf "@ %a = %a" pp_print_symbol v pp_print_var_info info) ir.ir_vars; eprintf "@]@." end; source, ir.ir_vars (* * The include file contains the IR for the file. * Try to load the old entry. * If it fails, compile the file and save the new entry. *) and compile_add_ir_info venv scope pos loc source info = let _pos = string_pos "compile_add_ir_info" pos in try Static.get_ir info with Not_found -> let ir = parse_ir venv scope source in Static.add_ir info ir; ir and compile_ir_info venv scope pos loc source info = let _pos = string_pos "compile_ir_info" pos in try Static.find_ir info with Not_found -> Static.rewrite info (compile_add_ir_info venv scope pos loc source) and compile_ir venv scope pos loc source = let pos = string_pos "compile_ir" pos in (* * Try to get a cached copy. *) try venv_find_ir_file_exn venv source with Not_found -> let ir = (* * Open the database. *) try Static.read venv source (compile_ir_info venv scope pos loc source) with Not_found -> raise (OmakeException (loc_pos loc pos, StringNodeError ("can't open IR", source))) in venv_add_ir_file venv source ir; ir (* * The object file contains the evaluated file. *) and compile_add_object_info compile venv pos source info = let _pos = string_pos "compile_add_object_info_info" pos in try Static.get_object info with Not_found -> let obj = compile info source in Static.add_object info obj; obj (* * Try to load the old entry. * If it fails, compile the file and save the new entry. *) and compile_object_info compile venv pos source info = let _pos = string_pos "compile_object_info" pos in try Static.find_object info with Not_found -> Static.rewrite info (compile_add_object_info compile venv pos source) and compile_object compile venv pos loc source = let pos = string_pos "compile_ast" pos in (* * Try to get a cached copy. *) try venv_find_object_file_exn venv source with Not_found -> let obj = (* * Open the database. *) try Static.read venv source (compile_object_info compile venv pos source) with Not_found -> raise (OmakeException (loc_pos loc pos, StringNodeError ("can't open object", source))) in venv_add_object_file venv source obj; obj (************************************************************************ * Value operations. *) (* * Get the string representation of a value. * It not legal to convert an array to a string. *) and string_of_value venv pos v = let pos = string_pos "string_of_value" pos in let scratch_buf = Buffer.create 32 in let rec collect v = match eval_prim_value venv pos v with (* Values that expand to nothing *) ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValBody _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValArray [] | ValVar _ -> () | ValSequence vl -> List.iter collect vl | ValQuote vl -> string_of_quote_buf scratch_buf venv pos vl | ValQuoteString (c, vl) -> Buffer.add_char scratch_buf c; string_of_quote_buf scratch_buf venv pos vl; Buffer.add_char scratch_buf c | ValArray [v] -> collect v | ValArray vl -> let print_error buf = fprintf buf "@[Array value where string expected:"; fprintf buf "@ Use the $(string ...) function if you really want to do this"; fprintf buf "@ @[The array has length %d:" (List.length vl); ignore (List.fold_left (fun index v -> fprintf buf "@ @[[%d] =@ %a@]" index pp_print_value v; succ index) 0 vl); fprintf buf "@]@]@." in raise (OmakeException (pos, LazyError print_error)) | ValInt i -> Buffer.add_string scratch_buf (string_of_int i) | ValFloat x -> Buffer.add_string scratch_buf (string_of_float x) | ValData s | ValString s -> Buffer.add_string scratch_buf s | ValDir dir2 -> Buffer.add_string scratch_buf (venv_dirname venv dir2) | ValNode node -> Buffer.add_string scratch_buf (venv_nodename venv node) | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (Invalid_argument "string_of_value") in collect v; Buffer.contents scratch_buf (* * Collect the values in a quotation into a string. * Even array values are flattened without warning. *) and string_of_quote venv pos c vl = let pos = string_pos "string_of_quote" pos in let scratch_buf = Buffer.create 32 in buffer_add_quote scratch_buf c; string_of_quote_buf scratch_buf venv pos vl; buffer_add_quote scratch_buf c; Buffer.contents scratch_buf and string_of_quote_buf scratch_buf venv pos vl = let pos = string_pos "string_of_quote_buf" pos in let rec collect v = match eval_value venv pos v with (* Values that expand to nothing *) ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValBody _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValArray [] | ValVar _ -> () | ValSequence vl | ValQuote vl -> List.iter collect vl | ValQuoteString (c, vl) -> Buffer.add_char scratch_buf c; List.iter collect vl; Buffer.add_char scratch_buf c | ValArray [v] -> collect v | ValArray vl -> collect_array vl | ValInt i -> Buffer.add_string scratch_buf (string_of_int i) | ValFloat x -> Buffer.add_string scratch_buf (string_of_float x) | ValData s | ValString s -> Buffer.add_string scratch_buf s | ValDir dir2 -> Buffer.add_string scratch_buf (venv_dirname venv dir2) | ValNode node -> Buffer.add_string scratch_buf (venv_nodename venv node) | ValKeyApply _ | ValApply _ | ValSuperApply _ | ValMaybeApply _ | ValMethodApply _ | ValDelayed _ -> raise (Invalid_argument "string_of_value") and collect_array vl = match vl with [v] -> collect v | v :: vl -> collect v; Buffer.add_char scratch_buf ' '; collect_array vl | [] -> () in List.iter collect vl (* * Get a list of values from the value. * Array elements are always special, and returned as an element. * We divide values into two classes: * The "catenable" values are the values that can be concatenated to * form a string. These include: string, node, dir, int, float. * * Nothing else can be concatenated with a string, and is always preserved * in the value list. *) and values_of_value venv pos v = let pos = string_pos "values_of_value" pos in (* * Convert a catenable value to a string *) let group tokens = ValSequence tokens in let wrap_string s = ValString s in let wrap_data s = ValData s in let wrap_token s = ValData s in let lexer _ _ _ = None in let tokens = Lm_string_util.tokens_create_lexer ~lexer ~wrap_string ~wrap_data ~wrap_token ~group in (* * Array elements are always separate values. * The arrays are flattened. *) let rec collect_array tokens vl vll = match vl, vll with v :: vl, _ -> (match eval_value venv pos v with ValArray el -> collect_array tokens el (vl :: vll) | ValSequence [v] -> collect_array tokens (v :: vl) vll | v -> collect_array (Lm_string_util.tokens_atomic tokens v) vl vll) | [], vl :: vll -> collect_array tokens vl vll | [], [] -> tokens in (* * Collect_string is used when we have seen whitespace * in a sequence. Collect the values into the string buffer, * then parse the string into separate tokens. *) let rec collect tokens vl vll = match vl, vll with v :: vl, _ -> let v = eval_catenable_value venv pos v in (match v with ValNone -> collect tokens vl vll (* Strings *) | ValString s -> collect (Lm_string_util.tokens_string tokens s) vl vll | ValSequence el -> collect tokens el (vl :: vll) (* Other catenable values *) | ValData _ | ValInt _ | ValFloat _ | ValDir _ | ValNode _ | ValQuote _ | ValQuoteString _ -> collect (Lm_string_util.tokens_add tokens v) vl vll (* Atomic values *) | ValArray el -> collect (collect_array (Lm_string_util.tokens_break tokens) el []) vl vll | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValBody _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValVar _ -> collect (Lm_string_util.tokens_atomic tokens v) vl vll | ValApply _ | ValKeyApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (OmakeException (pos, StringValueError ("illegal application", v)))) | [], vl :: vll -> collect tokens vl vll | [], [] -> Lm_string_util.tokens_flush tokens in collect tokens [v] [] (* * Get a string list from the value. * This is always legal because arrays have been flattened. *) and strings_of_value venv pos v = let values = values_of_value venv pos v in List.map (string_of_value venv pos) values (* * Get a list of tokens from the value. * This is a lot like the previous function, but we use a lexer * for parsing special character sequences. *) and tokens_of_value venv pos lexer v = let pos = string_pos "tokens_of_value" pos in (* * Convert a catenable value to a string *) let group tokens = TokGroup tokens in let wrap_string s = TokString (ValString s) in let wrap_data s = TokString (ValData s) in let wrap_token s = TokToken s in let tokens = Lm_string_util.tokens_create_lexer ~lexer ~wrap_string ~wrap_data ~wrap_token ~group in (* * Array elements are always separate values. * The arrays are flattened. *) let rec collect_array (tokens : tok Lm_string_util.tokens) vl vll = match vl, vll with v :: vl, _ -> (match eval_value venv pos v with ValArray el -> collect_array tokens el (vl :: vll) | ValSequence [v] -> collect_array tokens (v :: vl) vll | v -> collect_array (Lm_string_util.tokens_atomic tokens (TokString v)) vl vll) | [], vl :: vll -> collect_array tokens vl vll | [], [] -> tokens in (* * Collect_string is used when we have seen whitespace * in a sequence. Collect the values into the string buffer, * then parse the string into separate tokens. *) let rec collect (tokens : tok Lm_string_util.tokens) vl vll = match vl, vll with v :: vl, _ -> let v = eval_catenable_value venv pos v in (match v with ValNone -> collect tokens vl vll (* Strings *) | ValString s -> collect (Lm_string_util.tokens_lex tokens s) vl vll | ValSequence el -> collect tokens el (vl :: vll) (* Other catenable values *) | ValData _ | ValInt _ | ValFloat _ | ValDir _ | ValNode _ | ValQuote _ -> collect (Lm_string_util.tokens_add tokens (TokString v)) vl vll | ValQuoteString (_, v) -> collect (Lm_string_util.tokens_add tokens (TokString (ValQuote v))) vl vll (* Atomic values *) | ValArray el -> collect (collect_array (Lm_string_util.tokens_break tokens) el []) vl vll | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValBody _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValVar _ -> collect (Lm_string_util.tokens_atomic tokens (TokString v)) vl vll | ValApply _ | ValKeyApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (OmakeException (pos, StringValueError ("illegal application", v)))) | [], vl :: vll -> collect tokens vl vll | [], [] -> Lm_string_util.tokens_flush tokens in collect tokens [v] [] (* * Flatten the value list into a arg_string list. * Basically just concatenate all the values, being * careful to preserve quoting. In addition, we want to * concatenate adjacent strings of the same type. *) and arg_of_values venv pos vl = let pos = string_pos "arg_of_values" pos in (* * Flatten all sequences. *) let rec collect is_quoted tokens vl vll = match vl, vll with v :: vl, _ -> let v = eval_value venv pos v in (match v with ValNone -> collect is_quoted tokens vl vll (* Strings *) | ValString s -> let tokens = if is_quoted then arg_buffer_add_data tokens s else arg_buffer_add_string tokens s in collect is_quoted tokens vl vll | ValData s -> collect is_quoted (arg_buffer_add_data tokens s) vl vll | ValSequence el -> collect is_quoted tokens el (vl :: vll) | ValArray el -> collect true tokens el (vl :: vll) (* Other quoted values *) | ValInt _ | ValFloat _ | ValDir _ | ValNode _ | ValQuote _ | ValQuoteString _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValBody _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValVar _ -> let tokens = arg_buffer_add_data tokens (string_of_value venv pos v) in collect is_quoted tokens vl vll (* Illegal values *) | ValApply _ | ValKeyApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (OmakeException (pos, StringValueError ("illegal application", v)))) | [], vl :: vll -> collect is_quoted tokens vl vll | [], [] -> arg_buffer_contents tokens in collect false arg_buffer_empty vl [] and argv_of_values venv pos vll = List.map (arg_of_values venv pos) vll (* * Boolean test. * Arrays are always true. *) and bool_of_value venv pos v = let values = values_of_value venv pos v in match values with [] | [ValNone] -> false | [ValData s] | [ValString s] -> Omake_util.bool_of_string s | [ValQuote vl] -> Omake_util.bool_of_string (string_of_quote venv pos None vl) | _ -> true (* * The value should be a directory. *) and file_of_value venv pos file = let pos = string_pos "file_of_value" pos in let file = eval_prim_value venv pos file in match file with ValNode node -> node | ValDir dir -> Node.node_of_dir dir | ValData _ | ValString _ | ValSequence _ | ValQuote _ | ValQuoteString _ | ValInt _ | ValFloat _ -> venv_intern venv PhonyExplicit (string_of_value venv pos file) | ValArray _ | ValNone | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValBody _ | ValMap _ | ValObject _ | ValSuperApply _ | ValMethodApply _ | ValChannel _ | ValClass _ | ValCases _ | ValVar _ | ValDelayed _ | ValOther _ -> raise (OmakeException (pos, StringError "illegal value")) (* * Be lazy about concatenating arrays, to * avoid quadratic behavior. *) and append_arrays venv pos a1 a2 = if is_array_value a1 then if is_array_value a2 then ValArray [a1; a2] else let al = values_of_value venv pos a2 in ValArray (a1 :: al) else if is_array_value a2 then let al = values_of_value venv pos a1 in ValArray [ValArray al; a2] else if is_empty_value a1 then a2 else if is_empty_value a2 then a1 else ValSequence [a1; ValString " "; a2] (************************************************************************ * Evaluation. *) (* * Eval a static value. *) and eval_value_static venv pos key v = let pos = string_pos "eval_value_static" pos in let obj = match venv_find_static_info venv pos key with StaticValue obj -> obj | StaticRule srule -> let { srule_env = venv; srule_deps = deps; srule_vals = values; srule_exp = e } = srule in let values = List.flatten (List.map (values_of_value venv pos) values) in let values = List.map (eval_prim_value venv pos) values in let digest = digest_of_exp pos values e in let cache = venv_cache venv in let obj = (* Try to fetch the value from the memo *) try Omake_cache.find_value cache key srule.srule_static deps digest with Not_found -> (* Finally, if we don't have a value, evaluate the rule. * Prevent recursive calls *) let () = venv_set_static_info venv key (StaticValue empty_obj) in let venv, v = eval_exp venv ValNone e in let obj = eval_object venv pos v in Omake_cache.add_value cache key srule.srule_static deps digest (MemoSuccess obj); obj in venv_set_static_info venv key (StaticValue obj); obj in venv_find_field_internal obj pos v and eval_value_delayed venv pos p = match !p with ValValue v -> eval_value_core venv pos v | ValStaticApply (key, v) -> let v = eval_value_static venv pos key v in p := ValValue v; eval_value_core venv pos v (* * Unfold the outermost application to get a real value. *) and eval_value_core venv pos v = match v with ValKeyApply (loc, v) -> let v = eval_key venv pos loc v in eval_value_core venv pos v | ValApply (loc, v, []) -> let v = match venv_find_var venv pos loc v with ValApply (_, v', []) when var_equal v v' -> let print_error buf = (* XXX: JYH: is it really necessary to print the variable name 3 times? *) fprintf buf "@[@[Self-referential variable:@ %a@]\ @ @[The value of the variable@ %a\ @ is a lazy self-reference@ $`(%a),\ @ resulting in an infinite self-reference loop.@]@]" (**) pp_print_var_info v pp_print_var_info v pp_print_var_info v' in raise (OmakeException(loc_pos loc pos, LazyError print_error)) | v -> eval_var venv pos loc v in eval_value_core venv pos v | ValApply (loc, v, args) -> let v = let v = venv_find_var venv pos loc v in eval_apply venv pos loc v args in eval_value_core venv pos v | ValMaybeApply (loc, v) -> let v = try Some (venv_find_var_exn venv v) with Not_found -> None in (match v with Some v -> ValArray [eval_value_core venv pos (eval_var venv pos loc v)] | None -> ValNone) | ValSuperApply (loc, super, v, []) -> let v = let v = venv_find_super_field venv pos loc super v in eval_var venv pos loc v in eval_value_core venv pos v | ValSuperApply (loc, super, v, args) -> let v = let v = venv_find_super_field venv pos loc super v in eval_apply venv pos loc v args in eval_value_core venv pos v | ValMethodApply (loc, v, vl, []) -> let v = let venv, v = eval_find_method venv pos loc v vl in eval_var venv pos loc v in eval_value_core venv pos v | ValMethodApply (loc, v, vl, args) -> let v = let venv, v = eval_find_method venv pos loc v vl in eval_apply venv pos loc v args in eval_value_core venv pos v | ValDelayed p -> eval_value_delayed venv pos p | ValSequence [v] -> eval_value_core venv pos v | _ -> v and eval_value venv pos v = let pos = string_pos "eval_value" pos in eval_value_core venv pos v and eval_single_value venv pos v = let pos = string_pos "eval_single_value" pos in match eval_value venv pos v with ValArray [v] -> eval_single_value venv pos v | _ -> v and eval_prim_value venv pos v = let pos = string_pos "eval_prim_value" pos in let v = eval_value venv pos v in match v with ValArray [v] -> eval_prim_value venv pos v | ValObject obj -> (try venv_find_field_internal_exn obj builtin_sym with Not_found -> v) | _ -> v (* * The values are being flattened, so expand all sequences. *) and eval_catenable_value venv pos v = let pos = string_pos "eval_catenable_value" pos in let v = eval_value venv pos v in match v with ValObject obj -> (try match venv_find_field_internal_exn obj builtin_sym with ValNone | ValString _ | ValSequence _ | ValData _ | ValInt _ | ValFloat _ | ValDir _ | ValNode _ | ValArray _ | ValRules _ as v -> v | _ -> v with Not_found -> v) | _ -> v (* * Evaluate the value in a function body. * Expand all applications. *) and eval_body_value venv pos v = match eval_value venv pos v with ValSequence sl -> ValSequence (List.map (eval_body_value venv pos) sl) | ValArray sl -> ValArray (List.map (eval_body_value venv pos) sl) | ValBody (env, body, _) -> snd (eval_sequence_exp (venv_with_env venv env) pos body) | ValNone | ValInt _ | ValFloat _ | ValData _ | ValString _ | ValQuote _ | ValQuoteString _ | ValDir _ | ValNode _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValVar _ | ValOther _ as result -> result | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (Invalid_argument "eval_body_value") (* XXX: JYH: this is temporary, there is no need for it in 0.9.9 *) and eval_body_value_env venv pos v = match eval_value venv pos v with ValSequence sl -> venv, ValSequence (List.map (eval_body_value venv pos) sl) | ValArray sl -> venv, ValArray (List.map (eval_body_value venv pos) sl) | ValBody (env, body, export) -> eval_sequence_export_exp (venv_with_env venv env) pos body export | ValNone | ValInt _ | ValFloat _ | ValData _ | ValString _ | ValQuote _ | ValQuoteString _ | ValDir _ | ValNode _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValVar _ | ValOther _ as result -> venv, result | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (Invalid_argument "eval_body_value_env") and eval_body_exp venv pos x v = match eval_value venv pos v with ValSequence sl -> venv, ValSequence (List.map (eval_body_value venv pos) sl) | ValArray sl -> venv, ValArray (List.map (eval_body_value venv pos) sl) | ValBody (env, body, export) -> eval_sequence_export (venv_with_env venv env) pos x body export | ValNone | ValInt _ | ValFloat _ | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValDir _ | ValNode _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValVar _ | ValOther _ as result -> venv, result | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (Invalid_argument "eval_body_exp") (* * Evaluate a variable. * It is fine for the variable to evaluate to a function. * But if the function has arity 0, then evaluate it. *) and eval_var venv pos loc v = match v with ValFun (_, env, [], body, _) -> let venv = venv_with_env venv env in let _, result = eval_sequence venv pos ValNone body in result | ValFunValue (_, env, [], body) -> let venv = venv_with_env venv env in eval_value venv pos body | ValPrim (ArityExact 0, _, f) -> snd (venv_apply_prim_fun f venv pos loc []) | _ -> v (* * Evaluate a key. *) and eval_key venv pos loc v = try let map = eval_map venv pos (venv_find_var_exn venv map_field_var) in venv_map_find map pos (ValData v) with Not_found -> raise (OmakeException (loc_pos loc pos, UnboundKey v)) (* * Evaluate an application. *) and eval_apply venv pos loc v args = match eval_value venv pos v with ValFun (_, env, params, body, _) -> let venv = venv_add_args venv pos loc env params args in let _, result = eval_sequence_exp venv pos body in result | ValFunValue (_, env, params, body) -> let venv = venv_add_args venv pos loc env params args in eval_value venv pos body | ValPrim (_, _, f) -> snd (venv_apply_prim_fun f venv pos loc args) | v -> if args = [] then v else let print_error buf = fprintf buf "@[illegal function application:@ @[function:@ %a@]" pp_print_value v; List.iter (fun arg -> fprintf buf "@ @[arg = %a@]" pp_print_value arg) args; fprintf buf "@]" in raise (OmakeException (pos, LazyError print_error)) (* * Evaluate an application with string arguments. *) and eval_apply_string_exp venv venv_new pos loc v args = let pos = string_pos "eval_apply_string_exp" pos in match eval_value venv pos v with ValFun (_, env, params, body, _) -> let args = List.map (eval_string_exp true venv pos) args in let venv_new = venv_add_args venv_new pos loc env params args in let _, result = eval_sequence_exp venv_new pos body in result | ValFunValue (_, env, params, body) -> let args = List.map (eval_string_exp true venv pos) args in let venv_new = venv_add_args venv_new pos loc env params args in eval_value venv_new pos body | ValPrim (_, be_eager, f) -> let args = List.map (eval_string_exp be_eager venv_new pos) args in snd (venv_apply_prim_fun f venv_new pos loc args) | v -> if args = [] then v else let print_error buf = fprintf buf "@[illegal function application:@ @[function:@ %a@]" pp_print_value v; List.iter (fun arg -> fprintf buf "@ @[arg = %a@]" pp_print_string_exp arg) args; fprintf buf "@]" in raise (OmakeException (pos, LazyError print_error)) (* * Get a function from a value. *) and eval_fun venv pos v = match eval_value venv pos v with ValFun (arity, env, params, body, export) -> let f venv pos loc args = let venv_new = venv_add_args venv pos loc env params args in let venv_new, result = eval_sequence_exp venv_new pos body in let venv = add_exports venv venv_new pos export in venv, result in arity, true, f | ValFunValue (arity, env, params, body) -> let f venv pos loc args = let venv_new = venv_add_args venv pos loc env params args in let result = eval_value venv_new pos body in venv, result in arity, true, f | ValPrim (arity, be_eager, f) -> arity, be_eager, venv_apply_prim_fun f | ValBody (env, body, export) -> let arity = ArityExact 0 in let f venv pos loc args = if args <> [] then raise (OmakeException (loc_pos loc pos, ArityMismatch (arity, List.length args))); let venv_new, result = eval_sequence_exp (venv_with_env venv env) pos body in let venv = add_exports venv venv_new pos export in venv, result in arity, true, f | _ -> raise (OmakeException (pos, StringError "not a function")) (* * Get an object from a variable. *) and eval_map venv pos x = match eval_value venv pos x with ValMap map -> map | _ -> raise (OmakeException (pos, StringError "not a map")) and eval_object venv pos x = try eval_object_exn venv pos x with Not_found -> raise (OmakeException (pos, StringError "not an object")) and eval_object_exn venv pos x = match eval_value venv pos x with ValObject env -> env | ValInt _ | ValOther (ValExitCode _) -> create_object venv x int_object_var | ValFloat _ -> create_object venv x float_object_var | ValData _ | ValQuote _ | ValQuoteString _ -> create_object venv x string_object_var | ValSequence _ | ValString _ | ValNone -> create_object venv x sequence_object_var | ValArray _ -> create_object venv x array_object_var | ValFun _ | ValFunValue _ | ValPrim _ -> create_object venv x fun_object_var | ValRules _ -> create_object venv x rule_object_var | ValNode _ -> create_object venv x file_object_var | ValDir _ -> create_object venv x dir_object_var | ValBody _ -> create_object venv x body_object_var | ValChannel (InChannel, _) -> create_object venv x in_channel_object_var | ValChannel (OutChannel, _) -> create_object venv x out_channel_object_var | ValChannel (InOutChannel, _) -> create_object venv x in_out_channel_object_var | ValOther (ValLexer _) -> create_object venv x lexer_object_var | ValOther (ValParser _) -> create_object venv x parser_object_var | ValOther (ValLocation _) -> create_object venv x location_object_var | ValOther (ValEnv _) -> raise (OmakeException (pos, StringError "dereferenced ")) | ValClass _ -> raise (Invalid_argument "internal error: dereferenced $class") | ValCases _ -> raise (Invalid_argument "internal error: dereferenced cases") | ValMap _ -> create_map venv x map_object_var | ValVar _ -> create_object venv x var_object_var | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValDelayed _ -> raise (Invalid_argument "find_object") and create_object venv x v = let obj = venv_find_var_exn venv v in match obj with ValObject env -> venv_add_field_internal env builtin_sym x | _ -> raise Not_found and create_map venv x v = let obj = venv_find_var_exn venv v in match obj with ValObject env -> venv_add_field_internal env map_sym x | _ -> raise Not_found (* * Field operations. *) and eval_find_field_exn venv path obj pos vl = match vl with [v] -> path, obj, v | v :: vl -> let path, v = venv_find_field_path_exn venv path obj pos v in let obj = eval_object_exn venv pos v in eval_find_field_exn venv path obj pos vl | [] -> raise (OmakeException (pos, StringError "empty method name")) and eval_find_field_aux venv envl pos v vl = match envl with [env] -> let env = eval_object_exn venv pos env in let path = PathVar v in eval_find_field_exn venv path env pos vl | env :: envl -> let env = eval_object_exn venv pos env in let path = PathVar v in (try eval_find_field_exn venv path env pos vl with Not_found -> eval_find_field_aux venv envl pos v vl) | [] -> raise Not_found and eval_find_field venv pos loc v vl = let envl = venv_current_objects venv pos v in try eval_find_field_aux venv envl pos v vl with Not_found -> let pos = string_pos "eval_find_field" (loc_pos loc pos) in raise (OmakeException (pos, UnboundMethod vl)) (* * Method paths. *) and eval_with_method_exn venv path obj pos vl = match vl with [v] -> let v = venv_find_field_exn venv obj pos v in let venv = venv_with_object venv obj in venv, path, v | v :: vl -> let path, v = venv_find_field_path_exn venv path obj pos v in let obj = eval_object_exn venv pos v in eval_with_method_exn venv path obj pos vl | [] -> raise (OmakeException (pos, StringError "empty method name")) and eval_with_method_aux venv envl pos v vl = match envl with [env] -> let env = eval_object_exn venv pos env in let path = PathVar v in eval_with_method_exn venv path env pos vl | env :: envl -> let env = eval_object_exn venv pos env in let path = PathVar v in (try eval_with_method_exn venv path env pos vl with Not_found -> eval_with_method_aux venv envl pos v vl) | [] -> raise Not_found and eval_with_method venv pos loc v vl = let envl = venv_current_objects venv pos v in try eval_with_method_aux venv envl pos v vl with Not_found -> let pos = string_pos "eval_with_method" (loc_pos loc pos) in raise (OmakeException (pos, UnboundMethod vl)) (* * Method paths. *) and eval_find_method_exn venv obj pos vl = match vl with [v] -> let v = venv_find_field_exn venv obj pos v in let venv = venv_with_object venv obj in venv, v | v :: vl -> let v = venv_find_field_exn venv obj pos v in let obj = eval_object_exn venv pos v in eval_find_method_exn venv obj pos vl | [] -> raise (OmakeException (pos, StringError "empty method name")) and eval_find_method_aux venv envl pos vl = match envl with [env] -> let env = eval_object_exn venv pos env in eval_find_method_exn venv env pos vl | env :: envl -> let env = eval_object_exn venv pos env in (try eval_find_method_exn venv env pos vl with Not_found -> eval_find_method_aux venv envl pos vl) | [] -> raise Not_found and eval_find_method venv pos loc v vl = let envl = venv_current_objects venv pos v in try eval_find_method_aux venv envl pos vl with Not_found -> let pos = string_pos "eval_find_method" (loc_pos loc pos) in raise (OmakeException (pos, UnboundMethod vl)) (* * Check whether a field is defined. *) and eval_defined_field_exn venv env pos vl = match vl with [v] -> venv_defined_field venv env v | v :: vl -> let v = venv_find_field_exn venv env pos v in let obj = eval_object_exn venv pos v in eval_defined_field_exn venv obj pos vl | [] -> raise (OmakeException (pos, StringError "empty method name")) and eval_defined_field_aux venv envl pos vl = match envl with [env] -> let env = eval_object_exn venv pos env in eval_defined_field_exn venv env pos vl | env :: envl -> let env = eval_object_exn venv pos env in (try eval_defined_field_exn venv env pos vl with Not_found -> eval_defined_field_aux venv envl pos vl) | [] -> raise Not_found and eval_defined_field venv pos loc v vl = let envl = venv_current_objects venv pos v in try eval_defined_field_aux venv envl pos vl with Not_found -> false (* * Simplify a quoted value if possible. * Strings are concatenated. *) and simplify_quote_val venv pos c el = match el with [ValString s] | [ValData s] -> (match c with None -> ValData s | Some c -> ValQuoteString (c, [ValData s])) | _ -> let buf = Buffer.create 32 in let flush vl = if Buffer.length buf = 0 then vl else let s = Buffer.contents buf in Buffer.clear buf; ValData s :: vl in let rec collect vl el = match el with e :: el -> (match eval_value venv pos e with ValString s | ValData s -> Buffer.add_string buf s; collect vl el | v -> collect (v :: flush vl) el) | [] -> List.rev (flush vl) in match collect [] el with [ValString s] | [ValData s] -> ValData s | el -> match c with None -> ValQuote el | Some c -> ValQuoteString (c, el) (* * Evaluate a string expression. *) and eval_string_exp be_eager venv pos s = let pos = string_pos "eval_string_exp" pos in match s with NoneString _ -> ValNone | ConstString (_, s) -> ValString s | KeyApplyString (loc, strategy, v) -> if key_strategy_is_eager be_eager strategy then eval_key venv pos loc v else ValKeyApply (loc, v) | ApplyString (loc, strategy, v, []) -> if strategy_is_eager be_eager strategy v then eval_var venv pos loc (venv_find_var venv pos loc v) else ValApply (loc, v, []) | ApplyString (loc, strategy, v, args) -> if strategy_is_eager be_eager strategy v then eval_apply_string_exp venv venv pos loc (venv_find_var venv pos loc v) args else let args = List.map (eval_string_exp false venv pos) args in ValApply (loc, v, args) | SuperApplyString (loc, strategy, super, v, args) -> if key_strategy_is_eager be_eager strategy then let v = venv_find_super_field venv pos loc super v in eval_apply_string_exp venv venv pos loc v args else let args = List.map (eval_string_exp false venv pos) args in ValSuperApply (loc, super, v, args) | MethodApplyString (loc, strategy, v, vl, args) -> if strategy_is_eager be_eager strategy v then let venv_obj, v = eval_find_method venv pos loc v vl in eval_apply_string_exp venv venv_obj pos loc v args else let args = List.map (eval_string_exp false venv pos) args in ValMethodApply (loc, v, vl, args) | SequenceString (loc, sl) -> ValSequence (List.map (eval_string_exp be_eager venv pos) sl) | ObjectString (_, e, export) | BodyString (_, e, export) -> ValBody (venv_get_env venv, e, export) | ArrayString (_, el) -> ValArray (List.map (eval_string_exp be_eager venv pos) el) | ArrayOfString (_, e) -> let v = eval_string_exp be_eager venv pos e in ValArray (values_of_value venv pos v) | ExpString (_, e, _) -> let _, result = eval_sequence_exp venv pos e in result | CasesString (_, cases) -> let cases = List.map (fun (v, e1, e2, export) -> v, eval_string_exp be_eager venv pos e1, e2, export) cases in ValCases cases | QuoteString (_, el) -> simplify_quote_val venv pos None (List.map (eval_string_exp be_eager venv pos) el) | QuoteStringString (_, c, el) -> simplify_quote_val venv pos (Some c) (List.map (eval_string_exp be_eager venv pos) el) | VarString (loc, v) -> ValVar (loc, v) | ThisString _ -> ValObject (venv_this venv) (* * Short forms of the string evaluator. *) and lazy_string_exp venv pos s = eval_string_exp false venv pos s and eager_string_exp venv pos s = eval_string_exp true venv pos s (************************************************************************ * Export versions. * * These functions with the _export suffix also allow modifications * to the environment. *) and eval_var_export venv pos loc v = let pos = string_pos "eval_var_export" pos in (* Do not use eval_value; we don't want to force evaluation *) match v with ValFun (_, env, [], body, export) -> let venv_new = venv_with_env venv env in let venv_new, result = eval_sequence venv_new pos ValNone body in let venv = add_exports venv venv_new pos export in venv, result | ValFunValue (_, env, [], body) -> let venv_new = venv_with_env venv env in let result = eval_value venv_new pos body in venv, result | ValPrim (ArityExact 0, _, f) -> venv_apply_prim_fun f venv pos loc [] | _ -> venv, v (* * Evaluate an application. *) and eval_apply_export venv pos loc v args = match eval_value venv pos v with ValFun (_, env, params, body, export) -> let venv_new = venv_add_args venv pos loc env params args in let venv_new, result = eval_sequence_exp venv_new pos body in let venv = add_exports venv venv_new pos export in venv, result | ValFunValue (_, env, params, body) -> let venv_new = venv_add_args venv pos loc env params args in let result = eval_value venv_new pos body in venv, result | ValPrim (_, _, f) -> venv_apply_prim_fun f venv pos loc args | v -> if args = [] then venv, v else let print_error buf = fprintf buf "@[illegal function application:@ @[function:@ %a@]" pp_print_value v; List.iter (fun arg -> fprintf buf "@ @[arg = %a@]" pp_print_value arg) args; fprintf buf "@]" in raise (OmakeException (pos, LazyError print_error)) and eval_apply_string_export_exp venv venv_new pos loc v args = let pos = string_pos "eval_apply_string_export_exp" pos in match eval_value venv pos v with ValFun (_, env, params, body, export) -> let args = List.map (eval_string_exp true venv pos) args in let venv_new = venv_add_args venv_new pos loc env params args in let venv_new, result = eval_sequence_exp venv_new pos body in let venv = add_exports venv venv_new pos export in venv, result | ValFunValue (_, env, params, body) -> let args = List.map (eval_string_exp true venv pos) args in let venv_new = venv_add_args venv_new pos loc env params args in let result = eval_value venv_new pos body in venv, result | ValPrim (_, be_eager, f) -> let args = List.map (eval_string_exp be_eager venv pos) args in venv_apply_prim_fun f venv_new pos loc args | v -> if args = [] then venv, v else let print_error buf = fprintf buf "@[illegal function application:@ @[function:@ %a@]" pp_print_value v; List.iter (fun arg -> fprintf buf "@ @[arg = %a@]" pp_print_string_exp arg) args; fprintf buf "@]" in raise (OmakeException (pos, LazyError print_error)) and eval_apply_method_export_exp venv venv_obj pos loc path v args = let pos = string_pos "eval_apply_string_export_exp" pos in match eval_value venv pos v with ValFun (_, env, params, body, export) -> let args = List.map (eval_string_exp true venv pos) args in let venv_new = venv_add_args venv_obj pos loc env params args in let venv_new, result = eval_sequence_exp venv_new pos body in let venv = add_path_exports venv venv_obj venv_new pos path export in venv, result | ValFunValue (_, env, params, body) -> let args = List.map (eval_string_exp true venv pos) args in let venv_new = venv_add_args venv_obj pos loc env params args in let result = eval_value venv_new pos body in venv, result | ValPrim (_, be_eager, f) -> let args = List.map (eval_string_exp be_eager venv pos) args in let venv_new, result = venv_apply_prim_fun f venv_obj pos loc args in let venv = hoist_this venv venv_new path in venv, result | v -> if args = [] then venv, v else let print_error buf = fprintf buf "@[illegal function application:@ @[function:@ %a@]" pp_print_value v; List.iter (fun arg -> fprintf buf "@ @[arg = %a@]" pp_print_string_exp arg) args; fprintf buf "@]" in raise (OmakeException (pos, LazyError print_error)) (* * Evaluate a string expression, and allow exports. *) and eval_string_export_exp be_eager venv pos s = let pos = string_pos "eval_string_export_exp" pos in match s with NoneString _ -> venv, ValNone | ConstString (_, s) -> venv, ValString s | KeyApplyString (loc, strategy, v) -> if key_strategy_is_eager be_eager strategy then venv, eval_key venv pos loc v else venv, ValKeyApply (loc, v) | ApplyString (loc, strategy, v, []) -> if strategy_is_eager be_eager strategy v then eval_var_export venv pos loc (venv_find_var venv pos loc v) else venv, ValApply (loc, v, []) | ApplyString (loc, strategy, v, args) -> if strategy_is_eager be_eager strategy v then eval_apply_string_export_exp venv venv pos loc (venv_find_var venv pos loc v) args else let args = List.map (eval_string_exp false venv pos) args in venv, ValApply (loc, v, args) | SuperApplyString (loc, strategy, super, v, args) -> if key_strategy_is_eager be_eager strategy then let v = venv_find_super_field venv pos loc super v in eval_apply_string_export_exp venv venv pos loc v args else let args = List.map (eval_string_exp false venv pos) args in venv, ValSuperApply (loc, super, v, args) | MethodApplyString (loc, strategy, v, vl, args) -> if strategy_is_eager be_eager strategy v then let venv_obj, path, v = eval_with_method venv pos loc v vl in eval_apply_method_export_exp venv venv_obj pos loc path v args else let args = List.map (eval_string_exp false venv pos) args in venv, ValMethodApply (loc, v, vl, args) | SequenceString (loc, sl) -> venv, ValSequence (List.map (eval_string_exp be_eager venv pos) sl) | ObjectString (_, e, export) | BodyString (_, e, export) -> venv, ValBody (venv_get_env venv, e, export) | ArrayString (_, el) -> venv, ValArray (List.map (eval_string_exp be_eager venv pos) el) | ArrayOfString (_, e) -> let v = eval_string_exp be_eager venv pos e in venv, ValArray (values_of_value venv pos v) | ExpString (_, e, export) -> eval_sequence_export_exp venv pos e export | CasesString (_, cases) -> let cases = List.map (fun (v, e1, e2, export) -> v, eval_string_exp be_eager venv pos e1, e2, export) cases in venv, ValCases cases | QuoteString (_, el) -> venv, simplify_quote_val venv pos None (List.map (eval_string_exp be_eager venv pos) el) | QuoteStringString (_, c, el) -> venv, simplify_quote_val venv pos (Some c) (List.map (eval_string_exp be_eager venv pos) el) | VarString (loc, v) -> venv, ValVar (loc, v) | ThisString _ -> venv, ValObject (venv_this venv) (************************************************************************ * Evaluate an expression. *) and eval_exp venv result e = let pos = string_pos "eval_exp" (ir_exp_pos e) in match e with LetVarExp (_, v, [], flag, s) -> eval_let_var_exp venv pos v flag s | LetVarExp (loc, v, vl, flag, s) -> eval_let_var_field_exp venv pos loc v vl flag s | LetKeyExp (_, v, flag, s) -> eval_let_key_exp venv pos v flag s | LetFunExp (loc, v, [], params, body, export) -> eval_let_fun_exp venv pos loc v params body export | LetFunExp (loc, v, vl, params, body, export) -> eval_let_fun_field_exp venv pos loc v vl params body export | LetObjectExp (_, v, [], s, e, export) -> eval_let_object_exp venv pos v s e export | LetObjectExp (loc, v, vl, s, e, export) -> eval_let_object_field_exp venv pos loc v vl s e export | LetThisExp (_, e) -> eval_let_this_exp venv pos e | ShellExp (loc, e) -> eval_shell_exp venv pos loc e | IfExp (_, cases) -> eval_if_exp venv pos cases | SequenceExp (_, e) -> eval_sequence_exp venv pos e | SectionExp (_, _, e, export) -> eval_section_exp venv pos e export | OpenExp (loc, s) -> eval_open_exp venv pos loc s | IncludeExp (loc, s, e) -> eval_include_exp venv pos loc s e | ApplyExp (loc, f, args) -> eval_apply_exp venv pos loc f args | SuperApplyExp (loc, super, v, args) -> eval_super_apply_exp venv pos loc super v args | MethodApplyExp (loc, v, vl, args) -> eval_method_apply_exp venv pos loc v vl args | ReturnBodyExp (_, e) -> eval_return_body_exp venv pos e | StringExp (_, s) -> eval_string_value_exp venv pos s | ReturnExp (loc, s) -> eval_return_exp venv pos loc s | ReturnSaveExp _ -> eval_return_save_exp venv pos | ReturnObjectExp (_, names) -> eval_return_object_exp venv pos names | KeyExp (loc, v) -> eval_key_exp venv pos loc v | StaticExp (_, node, key, e) -> eval_static_exp venv pos node key e (* * Variable definitions. *) and eval_let_var_exp venv pos v flag s = let pos = string_pos "eval_var_exp" pos in let venv, s = eval_string_export_exp true venv pos s in let s = match flag with VarDefNormal -> s | VarDefAppend -> append_arrays venv pos (venv_get_var venv pos v) s in let venv = venv_add_var venv v s in venv, s and eval_let_var_field_exp venv pos loc v vl flag s = let pos = string_pos "eval_var_field_exp" pos in let venv, e = eval_string_export_exp true venv pos s in let path, obj, v = eval_find_field venv pos loc v vl in let e = match flag with VarDefNormal -> e | VarDefAppend -> append_arrays venv pos (venv_find_field venv obj pos v) e in let venv, obj = venv_add_field venv obj pos v e in let venv = hoist_path venv path obj in venv, e (* * Key (property) definitions. *) and eval_let_key_exp venv pos v flag s = let pos = string_pos "eval_let_key_exp" pos in let v = ValData v in let venv, s = eval_string_export_exp true venv pos s in (* Get the current property list *) let map = try venv_find_var_exn venv map_field_var with Not_found -> raise (OmakeException (pos, StringError "current object is not a Map")) in let map = eval_map venv pos map in (* Add the new definition *) let s = match flag with VarDefNormal -> s | VarDefAppend -> append_arrays venv pos (venv_map_find map pos v) s in let map = venv_map_add map pos v s in let venv = venv_add_var venv map_field_var (ValMap map) in venv, s (* * Function definitions. *) and eval_let_fun_exp venv pos loc v params body export = let env = venv_get_env venv in let e = ValFun (ArityExact (List.length params), env, params, body, export) in let venv = venv_add_var venv v e in venv, e and eval_let_fun_field_exp venv pos loc v vl params body export = let env = venv_get_env venv in let e = ValFun (ArityExact (List.length params), env, params, body, export) in let path, obj, v = eval_find_field venv pos loc v vl in let venv, obj = venv_add_field venv obj pos v e in let venv = hoist_path venv path obj in venv, e (* * Shell expression. *) and eval_shell_exp venv pos loc e = let pos = string_pos "eval_shell_exp" pos in let () = if !debug_shell then eprintf "@[eval_shell_exp (pid = %i):@ %a@]@." (**) (Unix.getpid()) pp_print_string_exp e in let v = venv_find_var venv pos loc system_var in let venv, s = eval_string_export_exp true venv pos e in eval_apply_export venv pos loc v [s] (* * Conditionals. * The test should expand to a Boolean of some form. *) and eval_if_cases venv pos cases = match cases with (s, el, export) :: cases -> let s = eager_string_exp venv pos s in let b = bool_of_value venv pos s in if b then eval_sequence_export_exp venv pos el export else eval_if_cases venv pos cases | [] -> venv, ValNone and eval_if_exp venv pos cases = let pos = string_pos "eval_if_exp" pos in eval_if_cases venv pos cases (* * Sequence. *) and eval_sequence venv pos result el = match el with e :: el -> let venv, result = eval_exp venv result e in eval_sequence venv pos result el | [] -> venv, result and eval_sequence_export venv pos result el export = let venv_new, result = eval_sequence venv pos result el in let venv = add_exports venv venv_new pos export in venv, result and eval_sequence_exp venv pos el = let pos = string_pos "eval_sequence_exp" pos in eval_sequence venv pos ValNone el and eval_sequence_export_exp venv pos el export = let pos = string_pos "eval_sequence_export_exp" pos in eval_sequence_export venv pos ValNone el export and eval_section_exp venv pos el export = let pos = string_pos "eval_section_exp" pos in eval_sequence_export venv pos ValNone el export (* * Look for a cached object. If it does not exist, * then evaluate the body to create the object. * Inline all the fields. *) and eval_static_exp venv pos node key el = let pos = string_pos "eval_static_exp" pos in let obj = try venv_find_static_object venv node key with Not_found -> (* Evaluate the object, and save it *) let _, result = eval_sequence (venv_define_object venv) pos ValNone el in let obj = eval_object venv pos result in venv_add_static_object venv node key obj; obj in let venv = venv_include_static_object venv obj in venv, ValNone (* * Object. * The argument string is ignored. * Push a new object. *) and eval_let_object_exp venv pos v s el export = let pos = string_pos "eval_let_object_exp" pos in let parent = eval_string_exp true venv pos s in let obj = eval_object venv pos parent in let venv_obj = venv_define_object venv in let venv_obj = venv_include_object venv_obj obj in let venv_obj, result = eval_sequence venv_obj pos ValNone el in let venv = venv_add_var venv v result in let venv = add_exports venv venv_obj pos export in venv, result and eval_let_object_field_exp venv pos loc v vl s el export = let pos = string_pos "eval_let_object_field_exp" pos in let parent = eval_string_exp true venv pos s in let obj = eval_object venv pos parent in let venv_obj = venv_define_object venv in let venv_obj = venv_include_object venv_obj obj in let venv_obj, e = eval_sequence venv_obj pos ValNone el in let path, obj, v = eval_find_field venv pos loc v vl in let venv, obj = venv_add_field venv obj pos v e in let venv = hoist_path venv path obj in let venv = add_exports venv venv_obj pos export in venv, e (* * This. * Set the current object to the given object. *) and eval_let_this_exp venv pos s = let pos = string_pos "eval_this_exp" pos in let venv, obj = eval_string_export_exp true venv pos s in let obj = eval_object venv pos obj in let venv = venv_with_object venv obj in venv, ValObject obj (* * Include a file. * The environment after the file is evaluated is used in the rest * of this file. *) and eval_include_exp venv pos loc s commands = let pos = string_pos "eval_include" pos in let name = match eager_string_exp venv pos s with ValNode node -> (* Use an absolute name, preventing path lookup *) Node.absname node | name -> string_of_value venv pos name in let node = find_include_file venv pos loc name in let venv = venv_add_file venv node in let venv = include_file venv IncludePervasives pos loc node in venv, ValNone (* * Open a file. * Include it if it is not already included. *) and eval_open_exp venv pos loc nodes = let pos = string_pos "eval_open" pos in let venv = List.fold_left (fun venv node -> if venv_is_included_file venv node then venv else let venv = venv_add_file venv node in include_file venv IncludePervasives pos loc node) venv nodes in venv, ValNone (* * Key lookup. *) and eval_key_exp venv pos loc v = let pos = string_pos "eval_key_exp" pos in let result = eval_key venv pos loc v in venv, result (* * Function application. *) and eval_apply_exp venv pos loc f args = let pos = string_pos "eval_apply_exp" pos in eval_apply_string_export_exp venv venv pos loc (venv_find_var venv pos loc f) args and eval_super_apply_exp venv pos loc super v args = let pos = string_pos "eval_super_apply_exp" pos in let v = venv_find_super_field venv pos loc super v in eval_apply_string_export_exp venv venv pos loc v args and eval_method_apply_exp venv pos loc v vl args = let pos = string_pos "eval_method_apply_exp" pos in let venv_obj, path, v = eval_with_method venv pos loc v vl in eval_apply_method_export_exp venv venv_obj pos loc path v args (* * Return a value. This is just the identity. *) and eval_return_body_exp venv pos e = let _pos = string_pos "eval_return_body_exp" pos in try eval_sequence_exp venv pos e with Return (_, v) -> venv, v and eval_return_exp venv pos loc s = let pos = string_pos "eval_return_exp" pos in let result = eager_string_exp venv pos s in raise (Return (loc, result)) and eval_string_value_exp venv pos s = let pos = string_pos "eval_return_exp" pos in let result = eager_string_exp venv pos s in venv, result and eval_return_save_exp venv pos = let _pos = string_pos "eval_return_save_exp" pos in venv, ValNone and eval_return_object_exp venv pos names = let result = venv_current_object venv names in venv, ValObject result (* * Include a file. *) and eval_include_file venv scope pos loc node = let ir = compile_ir venv scope pos loc node in let venv_new = venv_add_var venv file_var (ValNode node) in let venv_new, result = eval_exp venv_new ValNone ir.ir_exp in let venv = add_exports venv venv_new pos ExportAll in venv, result and include_file venv scope pos loc target = let pos = string_pos "include_file" pos in let venv = venv_add_included_file venv target in let venv, _ = eval_include_file venv scope pos loc target in venv (* * Parse and evaluate a file as if it were an object. *) and eval_object_file venv pos loc node = let parse_obj info node = let ir = compile_add_ir_info venv IncludePervasives pos loc node info in let { ir_classnames = names; ir_exp = e } = ir in let venv = venv_get_pervasives venv node in let venv = venv_define_object venv in let venv, result = eval_exp venv ValNone e in venv_current_object venv names in compile_object parse_obj venv pos loc node (************************************************************************ * Evaluator. *) and eval venv e = let _, result = eval_exp venv ValNone e in result let eval_open_file = open_ir let eval_apply = eval_apply_export (************************************************************************ * Project compiler. *) let compile venv = let rootname = if Sys.file_exists makeroot_name then makeroot_name else makeroot_short_name in let node = venv_intern venv PhonyProhibited rootname in let venv = venv_add_file venv node in let loc = bogus_loc (Node.fullname node) in let pos = string_pos "compile" (loc_exp_pos loc) in let _ = eval_include_file venv IncludePervasives pos loc node in if debug print_rules then eprintf "@[Rules:%a@]@." pp_print_explicit_rules venv (************************************************************************ * Dependencies. *) let compile_deps venv node buf = let deps = Omake_ast_lex.parse_deps buf in let vars = venv_include_scope venv IncludePervasives in let senv_empty = penv_of_vars (open_ir venv) venv node vars in List.map (fun (target, source, loc) -> let pos = string_pos "compile_deps" (loc_exp_pos loc) in let _, target = build_string senv_empty target pos in let _, source = build_string senv_empty source pos in let target = eager_string_exp venv pos target in let source = eager_string_exp venv pos source in let targets = strings_of_value venv pos target in let sources = strings_of_value venv pos source in targets, sources) deps (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/eval/omake_value.mli0000664000152300015230000000700710615701364015653 0ustar jyhjyh(* * Utilities on values. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_glob open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_node open Omake_lexer open Omake_parser open Omake_value_type open Omake_var (* * If there is only one value, * do not create the array. *) val concat_array : value list -> value (* * Concatenate some strings. * If there is only 1 value, do not create the array. *) val concat_strings : string list -> value (* * Expand a value so that the outermost constructor * is not an application. *) val eval_value : venv -> pos -> value -> value val eval_single_value : venv -> pos -> value -> value val eval_prim_value : venv -> pos -> value -> value val eval_object_value : venv -> pos -> obj -> value val add_object_value : obj -> value -> obj (* * Convert to a string. *) val string_of_value : venv -> pos -> value -> string val strings_of_value : venv -> pos -> value -> string list val values_of_value : venv -> pos -> value -> value list val vars_of_value : venv -> pos -> value -> var_info list (* * Coercions. *) val bool_of_value : venv -> pos -> value -> bool val int_of_value : venv -> pos -> value -> int val float_of_value : venv -> pos -> value -> float val number_of_value : venv -> pos -> value -> value val key_of_value : venv -> pos -> value -> value val map_of_value : venv -> pos -> value -> map val dir_of_value : venv -> pos -> value -> Dir.t val file_of_value : venv -> pos -> value -> Node.t val node_value_of_value : venv -> pos -> value -> value val dir_value_of_value : venv -> pos -> value -> value val filename_of_value : venv -> pos -> value -> string val prim_channel_of_value : venv -> pos -> value -> prim_channel val prim_channel_of_var : venv -> pos -> loc -> var_info -> prim_channel val channel_of_var : venv -> pos -> loc -> var_info -> Lm_channel.t val channel_of_value : venv -> pos -> value -> Lm_channel.t val in_channel_of_any_value : venv -> pos -> value -> prim_channel * bool val out_channel_of_any_value : venv -> pos -> value -> prim_channel * bool val is_glob_value : glob_options -> value -> bool val is_glob_value_list : glob_options -> value list -> bool val current_lexer : venv -> pos -> Lexer.t val current_parser : venv -> pos -> Parser.t val loc_of_value : venv -> pos -> value -> loc (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/eval/omake_eval.mli0000664000152300015230000001214210657124511015461 0ustar jyhjyh(* * Compile (evaluate) an OMakefile. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] *) open Lm_glob open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_node open Omake_ir_ast open Omake_exec_type open Omake_value_type open Omake_command_type val print_ast : bool ref val print_ir : bool ref val print_rules : bool ref val print_files : bool ref val debug_eval : bool ref (* Utility *) val raise_uncaught_exception : pos -> exn -> 'a (* * Evaluate an expression. *) val eval : venv -> exp -> value val eval_exp : venv -> value -> exp -> venv * value val eval_sequence : venv -> pos -> value -> exp list -> venv * value val eval_sequence_export : venv -> pos -> value -> exp list -> export -> venv * value val eval_sequence_exp : venv -> pos -> exp list -> venv * value val eval_sequence_export_exp : venv -> pos -> exp list -> export -> venv * value (* * String expression evaluation. *) val eager_string_exp : venv -> pos -> string_exp -> value val lazy_string_exp : venv -> pos -> string_exp -> value (* * Include the file literally. *) val find_include_file : venv -> pos -> loc -> string -> Node.t val eval_open_file : venv -> senv_open_file val eval_include_file : venv -> include_scope -> pos -> loc -> Node.t -> venv * value val include_file : venv -> include_scope -> pos -> loc -> Node.t -> venv (* * Evaluate a file as if it were an object. *) val eval_object_file : venv -> pos -> loc -> Node.t -> obj (* * Evaluate the program. * This modifies the environment. *) val compile : venv -> unit (* * Passes the IR thru Omake_ir_semant.build_prog, printing it if print_ir is enabled. *) val postprocess_ir : venv -> ir -> ir (* * Evaluate a dependency file. *) val compile_deps : venv -> Node.t -> string -> (string list * string list) list (* * Remove outermost applications. *) val eval_value : venv -> pos -> value -> value (* * Evaluate ValBody expressions. *) val eval_body_value : venv -> pos -> value -> value val eval_body_value_env : venv -> pos -> value -> venv * value val eval_body_exp : venv -> pos -> value -> value -> venv * value (* * Get the object for the value. *) val eval_object : venv -> pos -> value -> obj val eval_find_field : venv -> pos -> loc -> var_info -> var list -> path * obj * var val eval_find_method : venv -> pos -> loc -> var_info -> var list -> venv * value val eval_defined_field : venv -> pos -> loc -> var_info -> var list -> bool (* * Evaluate a value that should be a function. * Be careful with this: don't create a ValPrim using * this function, since marshaling will fail. *) val eval_fun : venv -> pos -> value -> arity * bool * prim_fun_data (* * Also, if the value is an array of 1 element, * return the element. *) val eval_single_value : venv -> pos -> value -> value (* * Evaluate to a primitive value. * That is, if the value is an object, return the * primitive handle associated with the object. * If the object has no primitive value, the object * itself is returned. *) val eval_prim_value : venv -> pos -> value -> value (* * Evaluate a function application. *) val eval_apply : venv -> pos -> loc -> value -> value list -> venv * value (* * Conversions. * The following two functions should be used with care, since * they fail if the value contains an array. *) val string_of_value : venv -> pos -> value -> string val string_of_quote : venv -> pos -> char option -> value list -> string val file_of_value : venv -> pos -> value -> Node.t val path_of_values : venv -> pos -> value list -> string -> (bool * Dir.t list) list (* * These conversions are safe to use anywhere. *) val tokens_of_value : venv -> pos -> lexer -> value -> tok list val arg_of_values : venv -> pos -> value list -> arg val argv_of_values : venv -> pos -> value list list -> arg list val values_of_value : venv -> pos -> value -> value list val strings_of_value : venv -> pos -> value -> string list val bool_of_value : venv -> pos -> value -> bool (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/eval/omake_value.ml0000664000152300015230000004046110656154767015521 0ustar jyhjyh(* * Additional operations on values. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Omake_ir open Omake_var open Omake_env open Omake_pos open Omake_node_sig open Omake_node open Omake_lexer open Omake_parser open Omake_symbol open Omake_value_type module Pos = MakePos (struct let name = "Omake_value" end) open Pos (* * Get some functions from the evaluator. *) let eval_value = Omake_eval.eval_value let eval_single_value = Omake_eval.eval_single_value let eval_prim_value = Omake_eval.eval_prim_value (* * These functions fail on arrays. *) let string_of_value = Omake_eval.string_of_value (* * These functions are safe. *) let values_of_value = Omake_eval.values_of_value let strings_of_value = Omake_eval.strings_of_value let bool_of_value = Omake_eval.bool_of_value (* * Get the $value field of the object. *) let eval_object_value venv pos obj = let pos = string_pos "eval_object_value" pos in try venv_find_field_internal_exn obj builtin_sym with Not_found -> raise (OmakeException (pos, StringError "not a primitive object")) let add_object_value obj x = venv_add_field_internal obj builtin_sym x (* * Concatenate. *) let concat_array = function [ValString s] -> ValData s | [ValSequence _] as vl -> ValQuote vl | [v] -> v | vl -> ValArray vl let concat_strings = function [s] -> ValData s | sl -> ValArray (List.map (fun s -> ValData s) sl) (************************************************************************ * Conversions. *) (* * Numbers. *) let int_of_value venv pos v = match eval_prim_value venv pos v with ValInt i | ValOther (ValExitCode i) -> i | ValFloat x -> int_of_float x | v -> let s = string_of_value venv pos v in try int_of_string s with Failure _ -> raise (OmakeException (pos, StringStringError ("not an integer", s))) let float_of_value venv pos v = match eval_prim_value venv pos v with ValInt i | ValOther (ValExitCode i) -> float_of_int i | ValFloat x -> x | v -> let s = string_of_value venv pos v in try float_of_string s with Failure _ -> raise (OmakeException (pos, StringStringError ("not a floating-point number", s))) let number_of_value venv pos v = let v = eval_prim_value venv pos v in match v with ValInt _ | ValFloat _ -> v | ValOther (ValExitCode i) -> ValInt i | _ -> let s = string_of_value venv pos v in try ValInt (int_of_string s) with Failure _ -> try ValFloat (float_of_string s) with Failure _ -> raise (OmakeException (pos, StringStringError ("not a number", s))) (* * Variables. *) let var_of_value venv pos v = let v = eval_prim_value venv pos v in match v with ValVar (_, v) -> v | _ -> raise (OmakeException (pos, StringValueError ("not a var", v))) let vars_of_value venv pos v = List.map (var_of_value venv pos) (values_of_value venv pos v) (* * Maps. *) let map_of_value venv pos v = match eval_prim_value venv pos v with ValMap map -> map | v -> raise (OmakeException (pos, StringValueError ("not a map", v))) (* * Values that can be used as keys. *) let rec key_of_value venv pos v = let pos = string_pos "key_of_value" pos in let v = eval_prim_value venv pos v in match v with ValNone | ValDir _ | ValNode _ | ValData _ | ValInt _ | ValFloat _ | ValOther (ValExitCode _) | ValOther (ValLocation _) | ValVar _ -> v | ValQuote _ | ValQuoteString _ | ValString _ | ValSequence _ -> ValData (string_of_value venv pos v) | ValArray _ -> let values = values_of_value venv pos v in let values = List.map (key_of_value venv pos) values in ValArray values | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValBody _ | ValMap _ | ValObject _ | ValSuperApply _ | ValMethodApply _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValDelayed _ -> raise (OmakeException (pos, StringValueError ("bad map key", v))) (* * Files and directories. *) let file_of_value = Omake_eval.file_of_value let dir_of_value venv pos dir = let pos = string_pos "dir_of_value" pos in let dir = eval_prim_value venv pos dir in match dir with ValDir dir -> dir | ValNode _ | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValSequence _ | ValArray _ | ValInt _ | ValFloat _ -> venv_intern_dir venv (string_of_value venv pos dir) | ValNone | ValVar _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValBody _ | ValMap _ | ValObject _ | ValSuperApply _ | ValMethodApply _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValDelayed _ -> raise (OmakeException (pos, StringError "not a directory")) let node_value_of_value venv pos v = let pos = string_pos "node_value_of_value" pos in let arg = eval_prim_value venv pos v in match arg with ValNode _ | ValDir _ -> arg | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValSequence _ | ValArray _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValBody _ | ValInt _ | ValFloat _ -> let name = string_of_value venv pos v in let node = venv_intern venv PhonyExplicit name in let cache = venv_cache venv in if Omake_cache.is_dir cache node then ValDir (venv_intern_dir venv name) else ValNode node | ValNone | ValVar _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValDelayed _ -> raise (OmakeException (pos, StringValueError("not a file", v))) let dir_value_of_value venv pos v = let pos = string_pos "dir_value_of_value" pos in let arg = eval_prim_value venv pos v in match arg with ValNode _ | ValDir _ -> arg | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValSequence _ | ValArray _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValBody _ | ValInt _ | ValFloat _ -> let name = string_of_value venv pos v in ValDir (venv_intern_dir venv name) | ValNone | ValVar _ | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValMap _ | ValObject _ | ValChannel _ | ValClass _ | ValCases _ | ValOther _ | ValDelayed _ -> raise (OmakeException (pos, StringValueError("not a file", v))) let filename_of_value venv pos v = let pos = string_pos "filename_of_value" pos in let arg = eval_prim_value venv pos v in match arg with ValNode node -> Node.fullname node | ValDir dir -> Dir.fullname dir | _ -> Node.fullname (file_of_value venv pos v) (* * Channels. The string & represents channels. *) let prim_channel_of_string venv pos s = let pos = string_pos "channel_of_string" pos in if s <> "" && s.[0] = '&' then let id = try int_of_string (String.sub s 1 (String.length s - 1)) with Failure _ -> raise (OmakeException (pos, StringStringError ("not a channel string", s))) in venv_find_channel_id venv pos id else raise (OmakeException (pos, StringStringError ("not a channel string", s))) let channel_of_string venv pos s = venv_find_channel venv pos (prim_channel_of_string venv pos s) let rec is_int_string s i len = if i = len then true else match s.[i] with '0'..'9' -> is_int_string s (succ i) len | _ -> false let is_channel_string s = s <> "" && s.[0] = '&' && is_int_string s 1 (String.length s) let prim_channel_of_value venv pos v = let pos = string_pos "prim_channel_of_value" pos in let arg = eval_prim_value venv pos v in match arg with ValChannel (_, channel) -> channel | ValNode _ | ValDir _ | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValSequence _ -> prim_channel_of_string venv pos (string_of_value venv pos arg) | ValInt _ | ValFloat _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValVar _ | ValBody _ | ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValArray _ | ValRules _ | ValMap _ | ValObject _ | ValClass _ | ValCases _ | ValOther _ | ValDelayed _ -> raise (OmakeException (pos, StringError "not a channel")) let prim_channel_of_var venv pos loc v = prim_channel_of_value venv pos (venv_find_var venv pos loc v) let channel_of_var venv pos loc v = let channel = prim_channel_of_var venv pos loc v in venv_find_channel venv pos channel let channel_of_value venv pos v = let pos = string_pos "channel_of_value" pos in let channel = prim_channel_of_value venv pos v in venv_find_channel venv pos channel let in_channel_of_any_value venv pos v = let pos = string_pos "in_channel_of_any_value" pos in let arg = eval_prim_value venv pos v in match arg with ValChannel (InChannel, p) | ValChannel (InOutChannel, p) -> p, false | ValNode _ | ValDir _ | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValSequence _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValBody _ | ValInt _ | ValFloat _ -> let s = string_of_value venv pos arg in if is_channel_string s then prim_channel_of_string venv pos s, false else let node = venv_intern venv PhonyProhibited s in let name = Node.fullname node in let fd = try Lm_unix_util.openfile name [Unix.O_RDONLY] 0 with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in let chan = Lm_channel.create name Lm_channel.FileChannel Lm_channel.InChannel false (Some fd) in let pc = venv_add_channel venv chan in pc, true | ValChannel (OutChannel, _) | ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValArray _ | ValRules _ | ValMap _ | ValObject _ | ValClass _ | ValCases _ | ValOther _ | ValVar _ | ValDelayed _ -> raise (OmakeException (pos, StringError "not an input channel")) let out_channel_of_any_value venv pos v = let pos = string_pos "out_channel_of_any_value" pos in let arg = eval_prim_value venv pos v in match arg with ValChannel (OutChannel, p) | ValChannel (InOutChannel, p) -> p, false | ValNode _ | ValDir _ | ValData _ | ValQuote _ | ValString _ | ValQuoteString _ | ValSequence _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValBody _ | ValInt _ | ValFloat _ -> let s = string_of_value venv pos arg in if is_channel_string s then prim_channel_of_string venv pos s, false else let node = venv_intern venv PhonyProhibited s in let name = Node.fullname node in let fd = try Lm_unix_util.openfile name [Unix.O_WRONLY; Unix.O_CREAT; Unix.O_TRUNC] 0o666 with Unix.Unix_error _ as exn -> raise (UncaughtException (pos, exn)) in let chan = Lm_channel.create name Lm_channel.FileChannel Lm_channel.OutChannel false (Some fd) in let prim = venv_add_channel venv chan in prim, true | ValChannel (InChannel, _) | ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValArray _ | ValRules _ | ValMap _ | ValObject _ | ValClass _ | ValCases _ | ValOther _ | ValVar _ | ValDelayed _ -> raise (OmakeException (pos, StringError "not an output channel")) (* * Check whether the value has any glob characters in it. *) let rec is_glob_value options v = match v with ValString s -> Lm_glob.is_glob_string options s | ValSequence vl | ValArray vl -> is_glob_value_list options vl | ValQuoteString _ | ValChannel _ | ValNode _ | ValDir _ | ValData _ | ValQuote _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValBody _ | ValInt _ | ValFloat _ | ValNone | ValFun _ | ValFunValue _ | ValPrim _ | ValRules _ | ValMap _ | ValObject _ | ValClass _ | ValCases _ | ValOther _ | ValVar _ | ValDelayed _ -> false and is_glob_value_list options vl = List.exists (is_glob_value options) vl (* * Lexing and parsing. *) let current_lexer venv pos = let pos = string_pos "current_lexer" pos in try match venv_find_var_exn venv builtin_field_var with ValOther (ValLexer lexer) -> lexer | v -> raise (OmakeException (pos, StringValueError ("not a lexer", v))) with Not_found -> Lexer.empty let current_parser venv pos = let pos = string_pos "current_parser" pos in try match venv_find_var_exn venv builtin_field_var with ValOther (ValParser parser) -> parser | v -> raise (OmakeException (pos, StringValueError ("not a parser", v))) with Not_found -> Parser.empty let loc_of_value venv pos v = match eval_prim_value venv pos v with ValOther (ValLocation loc) -> loc | _ -> raise (OmakeException (pos, StringValueError ("not a location", v))) (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/0000775000152300015230000000000010660137222012645 5ustar jyhjyhomake-0.9.8.5/src/exec/omake_exec_util.mli0000664000152300015230000000415210535376437016525 0ustar jyhjyh(* * Utilities for process execution on any platform. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_map_sig open Omake_node open Omake_exec_id open Omake_cache_type (* * Debugging. *) val debug_exec : bool ref (* * File descriptor table. *) module IntTable : LmMap with type key = int;; module FdTable : LmMap with type key = Unix.file_descr;; (* * Open a pipe. Close automatically on exceptions. *) val with_pipe : (Unix.file_descr -> Unix.file_descr -> 'a) -> 'a (* * Copy data to standard channels. *) val copy_stdout : id -> string -> int -> int -> unit val copy_stderr : id -> string -> int -> int -> unit (* * Copy data to a file. *) val copy_file : string -> (id -> string -> int -> int -> unit) (* * Tee to a file. *) type tee val tee_none : tee val tee_create : bool -> tee val tee_close : tee -> unit val tee_file : tee -> string option val tee_stdout : tee -> bool -> id -> string -> int -> int -> unit val tee_stderr : tee -> bool -> id -> string -> int -> int -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_notify.mli0000664000152300015230000000317210456240612017044 0ustar jyhjyh(* * File change notifications. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_node open Omake_exec_type (* * Local server. *) module Notify : sig include ExecServer (* * Watch a node for changes. *) val monitor : ('exp, 'pid, 'value) t -> Node.t -> unit val monitor_tree : ('exp, 'pid, 'value) t -> Dir.t -> unit (* * Get the next notification event. *) val pending : ('exp, 'pid, 'value) t -> bool val next_event : ('exp, 'pid, 'value) t -> Lm_notify.event end (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_type.ml0000664000152300015230000001421110641233302016332 0ustar jyhjyh(* * Execution codes. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology * and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_location open Omake_node open Omake_exec_id open Omake_options open Omake_command_type (* * Type of process codes. *) type process_code = ProcessFailed | ProcessStarted of id (* * Print flags. *) type ('exp, 'pid, 'value) print_flag = PrintEager of 'exp | PrintLazy of 'exp | PrintExit of 'exp * int * 'value * float (* * Internal wait status. *) type ('exp, 'pid, 'value) wait_internal_code = WaitInternalExited of id * int * 'value | WaitInternalNotify of Lm_notify.event | WaitInternalStarted of bool | WaitInternalNone (* * External wait status. * WaitServer count: a new server started, willing to serve "count" more jobs *) type ('exp, 'pid, 'value) wait_code = WaitExited of id * int * 'value | WaitServer of int | WaitNotify of Lm_notify.event | WaitNone (* * Types of upcalls. *) type ('exp, 'pid, 'value) shell = { shell_eval : Unix.file_descr -> Unix.file_descr -> 'exp -> 'pid; shell_info : 'exp -> command_flag list * Dir.t * Node.t; shell_kill : 'pid -> unit; shell_wait : 'pid -> Unix.process_status * 'value; shell_error_value : 'value; shell_print_exp : out_channel -> 'exp -> unit; shell_print_exn : out_channel -> exn -> unit; shell_is_failure_exn : exn -> bool } type ('exp, 'pid, 'value) status_fun = id -> ('exp, 'pid, 'value) print_flag -> unit type output_fun = id -> string -> int -> int -> unit (* * Internal execution server has a few extra functions. *) module type ExecServer = sig (* * Command processor. *) type ('exp, 'pid, 'value) t (* * Create the processor. * The directory is the current working root directory. *) val create : string -> ('exp, 'pid, 'value) t (* * Close it, and possibly deallocate state. *) val close : ('exp, 'pid, 'value) t -> unit (* * Start a command, and return the process ID. *) val spawn : ('exp, 'pid, 'value) t -> (* Current state *) ('exp, 'pid, 'value) shell -> (* The shell that does evaluation *) id -> (* Id for the new process *) output_fun -> (* Function to handle output from stdout *) output_fun -> (* Function to handle output from stderr *) ('exp, 'pid, 'value) status_fun -> (* Function to handle status commands *) Node.t -> (* Target being built *) 'exp list -> (* Commands to execute *) process_code (* The process id *) (* * The internal versions are polled using select. *) val descriptors : ('exp, 'pid, 'value) t -> Unix.file_descr list (* * Handle input from one of the descriptors. *) val handle : ('exp, 'pid, 'value) t -> omake_options -> Unix.file_descr -> unit (* * Wait for any one of the commands to finish. *) val wait : ('exp, 'pid, 'value) t -> omake_options -> ('exp, 'pid, 'value) wait_internal_code end (* * The execution service. *) module type ExecService = sig (* * Command processor. *) type ('exp, 'pid, 'value) t (* * Create the processor. * The directory is the current working root directory. *) val create : Dir.t -> omake_options -> ('exp, 'pid, 'value) t (* * Close it, and possibly deallocate state. *) val close : ('exp, 'pid, 'value) t -> unit (* * Start a command, and return the process ID. *) val spawn : ('exp, 'pid, 'value) t -> (* Current state *) ('exp, 'pid, 'value) shell -> (* Evaluate a shell command *) omake_options -> (* Current options in effect *) output_fun -> (* Function to handle the OMake messages meant for stdout *) output_fun -> (* Function to handle output from stdout *) output_fun -> (* Function to handle output from stderr *) string -> (* Name of this command *) Node.t -> (* Target being built *) 'exp list -> (* Commands to execute *) process_code (* The process id *) (* * Wait for any one of the commands to finish. *) val wait : ('exp, 'pid, 'value) t -> omake_options -> ('exp, 'pid, 'value) wait_code (* * Notify when a file changes. *) val monitor : ('exp, 'pid, 'value) t -> Node.t -> unit val monitor_tree : ('exp, 'pid, 'value) t -> Dir.t -> unit (* * Get the next file change notification. * This function blocks. Use wait if you want * nonblocking behavior. *) val pending : ('exp, 'pid, 'value) t -> bool val next_event : ('exp, 'pid, 'value) t -> Lm_notify.event end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec.ml0000664000152300015230000003605010536366221015310 0ustar jyhjyh(* * Execution service. This is the wrapper around the remote * and local servers. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_debug open Lm_printf open Lm_thread_pool open Omake_node open Omake_state open Omake_exec_id open Omake_exec_util open Omake_exec_type open Omake_exec_print open Omake_exec_local open Omake_exec_remote open Omake_exec_notify open Omake_options open Omake_command_type external sync : unit -> unit = "caml_sync" module Exec = struct (* * Local and remote servers. *) type ('venv, 'exp, 'value) server_handle = LocalServer of ('venv, 'exp, 'value) Local.t | RemoteServer of ('venv, 'exp, 'value) Remote.t | NotifyServer of ('venv, 'exp, 'value) Notify.t (* * Information about the local server * server_count : number of jobs that can be run on this server * server_handle : handle for the actual server * server_running : number of jobs that are actually running * server_enabled : is server connected and ready? *) type ('venv, 'exp, 'value) server_info = { server_host : string; server_count : int; server_handle : ('venv, 'exp, 'value) server_handle; mutable server_running : int; mutable server_enabled : bool } (* * The state: * server_root : location of the project root * server_local : local execution server * server_servers : all the servers * * Invariant: server_jobs and server_fds are equivalent * server_jobs : used with threads, a list of the currently active threads * server_fds : used with threads, a list of the currently active files *) type ('venv, 'exp, 'value) t = { server_root : Dir.t; server_local : ('venv, 'exp, 'value) Local.t; server_notify : ('venv, 'exp, 'value) Notify.t; mutable server_servers : ('venv, 'exp, 'value) server_info list; mutable server_fd_table : int FdTable.t; mutable server_pid_table : Unix.file_descr IntTable.t } (* * Start a remote server. *) let start_local local options = { server_host = "localhost"; server_count = opt_job_count options; server_running = 0; server_enabled = true; server_handle = LocalServer local } let start_notify notify options = { server_host = "notify"; server_count = 0; server_running = 0; server_enabled = true; server_handle = NotifyServer notify } let start_remote root (machine, count) = { server_host = machine; server_count = count; server_running = 0; server_enabled = false; server_handle = RemoteServer (Remote.create machine) } let create root options = let local = Local.create "local" in let notify = Notify.create "notify" in let servers = start_local local options :: start_notify notify options :: List.map (start_remote root) (opt_remote_servers options) in { server_root = root; server_local = local; server_notify = notify; server_servers = servers; server_fd_table = FdTable.empty; server_pid_table = IntTable.empty } (* * When the server is closed, kill all the jobs. *) let close server = List.iter (fun { server_handle = handle } -> match handle with LocalServer local -> Local.close local | RemoteServer remote -> Remote.close remote | NotifyServer notify -> Notify.close notify) server.server_servers (* * Print the status. *) let print_status tee options shell remote name _ = let remote = match remote with { server_handle = LocalServer _ } | { server_handle = NotifyServer _ } -> None | { server_host = host; server_handle = RemoteServer _ } -> Some host in print_status tee options shell remote name (* * Find the best server. *) let find_best_server server = if !debug_remote then List.iter (fun { server_host = host; server_count = count; server_running = running; server_enabled = enabled } -> eprintf "*** searching %s, count=%d, running=%d, enabled=%b@." host count running enabled) server.server_servers; let rec search best servers = match servers with server :: servers -> let { server_enabled = enabled; server_count = count; server_running = running } = server in let best = if enabled && running <> count then match best with Some { server_running = running' } -> if running < running' then Some server else best | None -> Some server else best in search best servers | [] -> best in match search None server.server_servers with Some server -> server | None -> raise (Invalid_argument "Omake_exec.find_best_server: all servers are disabled") (* * Start a job. *) let spawn server_main shell options handle_sys_out handle_out handle_err name target commands = (* Start the job *) let id = Omake_exec_id.create () in let server = find_best_server server_main in let { server_running = running; server_handle = handle } = server in (* Handle a status message *) let handle_status = print_status (handle_sys_out id) options shell server name in (* Start the job *) let status = match handle with LocalServer local -> Local.spawn local shell id handle_out handle_err handle_status target commands | RemoteServer remote -> Remote.spawn remote shell id handle_out handle_err handle_status target commands | NotifyServer notify -> Notify.spawn notify shell id handle_out handle_err handle_status target commands in let () = match status with ProcessStarted _ -> server.server_running <- succ running | ProcessFailed -> () in status (* * Select-based waiting. * Wait for input on one of the servers. *) let wait_select server options = let { server_notify = notify; server_servers = servers } = server in let fd_table = List.fold_left (fun fd_table server -> let fd_set = match server.server_handle with LocalServer local -> Local.descriptors local | RemoteServer remote -> Remote.descriptors remote | NotifyServer notify -> Notify.descriptors notify in List.fold_left (fun fd_table fd -> FdTable.add fd_table fd server) fd_table fd_set) FdTable.empty servers in let fd_set = FdTable.fold (fun fd_set fd _ -> fd :: fd_set) [] fd_table in let fd_set = try let fd_set, _, _ = Unix.select fd_set [] [] (-1.0) in fd_set with Unix.Unix_error (errno, s1, s2) -> eprintf "Select: %s, %s, %s@." s1 s2 (Unix.error_message errno); [] in List.iter (fun fd -> let server = try Some (FdTable.find fd_table fd) with Not_found -> eprintf "Omake_exec.wait_select: fd is unknown: %d@." (Obj.magic fd); None in match server with Some { server_handle = LocalServer local } -> Local.handle local options fd | Some { server_handle = RemoteServer remote } -> Remote.handle remote options fd | Some { server_handle = NotifyServer notify } -> Notify.handle notify options fd | None -> ()) fd_set; WaitNone (* * Thread-based waiting. *) let start_handler (handler : Unix.file_descr -> unit) (pid_table, fd_table) fd = if FdTable.mem fd_table fd then pid_table, fd_table else let pid = Lm_thread_pool.create true (fun () -> handler fd) in let fd_table = FdTable.add fd_table fd pid in let pid_table = IntTable.add pid_table pid fd in if !debug_thread then eprintf "start_handler: %d@." (Lm_unix_util.int_of_fd fd); pid_table, fd_table let wait_thread server options = let { server_servers = servers; server_fd_table = fd_table; server_pid_table = pid_table } = server in (* Spawn a thread for each file descriptor *) let pid_table, fd_table = List.fold_left (fun tables server -> match server.server_handle with LocalServer local -> List.fold_left (start_handler (Local.handle local options)) tables (Local.descriptors local) | RemoteServer remote -> List.fold_left (start_handler (Remote.handle remote options)) tables (Remote.descriptors remote) | NotifyServer notify -> List.fold_left (start_handler (Notify.handle notify options)) tables (Notify.descriptors notify)) (pid_table, fd_table) servers in let pids = Lm_thread_pool.wait () in let pid_table, fd_table = List.fold_left (fun (pid_table, fd_table) pid -> try let fd = IntTable.find pid_table pid in let pid_table = IntTable.remove pid_table pid in let fd_table = FdTable.remove fd_table fd in pid_table, fd_table with Not_found -> (* BUG JYH: we seem to be getting unknown pids... *) pid_table, fd_table) (pid_table, fd_table) pids in server.server_fd_table <- fd_table; server.server_pid_table <- pid_table; WaitNone (* * Wait for all threads to finish. *) let wait_all server = let { server_pid_table = pid_table } = server in let rec wait pid_table = if not (IntTable.is_empty pid_table) then let pids = Lm_thread_pool.wait () in let pid_table = List.fold_left IntTable.remove pid_table pids in wait pid_table in wait pid_table; server.server_pid_table <- IntTable.empty; server.server_fd_table <- FdTable.empty (* * The wait process handles output from each of the jobs. * Once both output channels are closed, the job is finished. *) let rec wait server_main options = let rec poll servers = match servers with [] -> if Lm_thread_pool.enabled then wait_thread server_main options else wait_select server_main options | server :: servers -> let { server_host = host; server_count = count; server_running = running; server_handle = handle } = server in let wait_code = match handle with LocalServer local -> Local.wait local options | RemoteServer remote -> Remote.wait remote options | NotifyServer notify -> Notify.wait notify options in match wait_code with WaitInternalExited (id, status, value) -> server.server_running <- pred running; WaitExited (id, status, value) | WaitInternalStarted true -> if opt_print_status options then begin progress_flush (); printf "# server %s started@." host end; server.server_enabled <- true; WaitServer count | WaitInternalStarted false -> if opt_print_status options then begin progress_flush (); printf "# server %s failed@." host end; server.server_enabled <- false; poll servers | WaitInternalNotify event -> WaitNotify event | WaitInternalNone -> poll servers in poll server_main.server_servers (* * Ask for a file to be monitored. *) let monitor { server_notify = notify } node = Notify.monitor notify node let monitor_tree { server_notify = notify } dir = Notify.monitor_tree notify dir (* * Wait for the next notification. * Wait for all threads to complete * before issuing this command. *) let pending server = wait_all server; Notify.pending server.server_notify let next_event server = wait_all server; Notify.next_event server.server_notify end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_util.ml0000664000152300015230000001165010536405664016351 0ustar jyhjyh(* * Utilities for execution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_printf open Lm_debug open Omake_node open Omake_state open Omake_cache_type open Omake_exec_print (* * Build debugging. *) let debug_exec = create_debug (**) { debug_name = "exec"; debug_description = "Display execution debugging"; debug_value = false } (* * Table based on integers. *) module IntCompare = struct type t = int let compare = (-) end module IntTable = Lm_map.LmMake (IntCompare) (* * Table based on file descriptor. *) module FdCompare = struct type t = Unix.file_descr let compare = Pervasives.compare end module FdTable = Lm_map.LmMake (FdCompare);; (* * Create some pipes, and close them if an exception is raised. *) let unix_close fd = try Unix.close fd with Unix.Unix_error _ -> () let with_pipe f = let read, write = Unix.pipe () in try f read write with exn -> unix_close read; unix_close write; raise exn (* * Write the data in the buffer to the channel. *) let rec write_all name fd id buf off len = if len <> 0 then let amount = try Unix.write fd buf off len with Unix.Unix_error (err1, err2, err3) -> eprintf "Writing to %s resulted in an error: %s: %s: %s@." name err2 err3 (Unix.error_message err1); 0 in if (amount <> 0) && (amount <> len) then begin eprintf "Writing to %s was only partially successful (%i out of %i written)@." name amount len; raise (Invalid_argument "Omake_exec_util.write_all") end let copy_stdout = write_all "Unix.stdout" Unix.stdout let copy_stderr = write_all "Unix.stderr" Unix.stderr (* * Copy output to a file. *) let copy_file name = let fd_out = Lm_unix_util.openfile name [Unix.O_WRONLY; Unix.O_CREAT; Unix.O_TRUNC] 0o666 in let () = Unix.set_close_on_exec fd_out in let copy id buf off len = if len = 0 then Unix.close fd_out else write_all name fd_out id buf off len in copy (* * Tee the output to a file if any occurs. * The files are created only if there is output. *) type tee_info = TeeChannel of string * Pervasives.out_channel | TeeFile of string | TeeMaybe | TeeNever type tee = tee_info ref let tee_file tee = match !tee with TeeChannel (name, _) | TeeFile name -> Some name | TeeMaybe | TeeNever -> None let tee_channel tee = match !tee with TeeChannel (_, outx) -> Some outx | TeeMaybe -> let filename, outx = Filename.open_temp_file ~mode:[Open_binary] "omake" ".divert" in tee := TeeChannel (filename, outx); Some outx | TeeFile _ | TeeNever -> None let tee_close tee = match !tee with TeeChannel (name, outx) -> Pervasives.close_out outx; tee := TeeFile name | TeeFile _ | TeeMaybe | TeeNever -> () let tee_none = ref TeeNever let tee_create b = if b then ref TeeMaybe else tee_none let tee_copy name fd flush_flag tee tee_only id buf off len = if len = 0 then begin if not tee_only then flush_flag := true; match !tee with TeeChannel (_, outx) -> Pervasives.flush outx | _ -> () end else begin if not tee_only then begin if !flush_flag then begin progress_flush (); flush_flag := false; end; write_all name fd id buf off len; end; match tee_channel tee with Some outx -> Pervasives.output outx buf off len | None -> () end let tee_stdout = tee_copy "Unix.stdout" Unix.stdout (ref true) let tee_stderr = tee_copy "Unix.stderr" Unix.stderr (ref true) (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_notify.ml0000664000152300015230000001115110653713501016670 0ustar jyhjyh(* * File notification server. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, Caltifornia Institute of Technology, * and HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Omake_node open Omake_exec_type module Notify = struct (* * Notification services are performed by Lm_notify. *) type ('exp, 'pid, 'value) t = { mutable notify_server : Lm_notify.t option; mutable notify_event : Lm_notify.event option } (* * Create the server. * Initially disconnected. *) let create _ = { notify_server = None; notify_event = None } (* * Close it. *) let close notify = match notify.notify_server with Some server -> Lm_notify.close server; notify.notify_server <- None; notify.notify_event <- None | None -> () (* * Monitor a directory. *) let start notify = match notify.notify_server with Some server -> server | None -> let server = Lm_notify.create () in notify.notify_server <- Some server; server let monitor notify node = let dir = Dir.absname (Node.dir node) in let server = start notify in Lm_notify.monitor server dir false let monitor_tree notify dir = let dir = Dir.absname dir in let server = start notify in Lm_notify.monitor server dir true (* * Get the next event. * This assumes a notification thread is not currently running. *) let pending notify = match notify with { notify_event = Some _ } -> true | { notify_server = Some server } -> Lm_thread_pool.blocking_section Lm_notify.pending server | { notify_server = None } -> false let next_event notify = match notify with { notify_event = Some event } -> notify.notify_event <- None; event | { notify_server = Some server } -> Lm_thread_pool.blocking_section (Lm_thread.Thread.raise_ctrl_c_wrapper Lm_notify.next_event) server | { notify_server = None } -> raise (Failure "Omake_exec_notify.next_event: no monitors") (* * Notify server does not implement processes. *) let spawn _ _ _ _ _ _ _ = raise (Invalid_argument "Omake_exec_notify.spawn: processes are not supported") (* * File descriptors. *) let descriptors notify = match Lm_notify.enabled, notify with true, { notify_event = None; notify_server = Some server } -> begin match Lm_notify.file_descr server with Some fd -> [fd] | None -> (* We are probabaly on Win32? *) [Unix.stdin] end | _ -> [] (* * Handle input from the descriptor. *) let handle notify _ _ = match notify with { notify_event = None; notify_server = Some server } when Lm_notify.pending server -> let event = Lm_thread_pool.blocking_section Lm_notify.next_event server in notify.notify_event <- Some event | _ -> () (* * Wait for a command to finish. *) let wait notify _ = handle notify () (); (* XXX HACK: nogin *) match notify.notify_event with Some event -> notify.notify_event <- None; WaitInternalNotify event | None -> WaitInternalNone end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/OMakefile0000664000152300015230000000050210536403630014422 0ustar jyhjyhOCAMLINCLUDES[] += ../libmojave ../util ../ir FILES[] = omake_exec_id omake_exec_type omake_exec_print omake_exec_util omake_exec_local omake_exec_remote omake_exec_notify omake_exec MakeOCamlLibrary(exec, $(FILES)) clean: $(CLEAN) # # Generate a Makefile # MakeMakefile() omake-0.9.8.5/src/exec/omake_exec_id.mli0000664000152300015230000000305410536375442016140 0ustar jyhjyh(* * Job identifiers. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Omake_marshal (* * Type of job identifiers. *) type id (* * Tables by id. *) module IdTable : Lm_map_sig.LmMap with type key = id (* * "Null" id for the "master" process. *) val null_id : id (* * Get a new id. *) val create : unit -> id (* * Print it. *) val pp_print_pid : formatter -> id -> unit (* * Marshaling. *) val marshal_id : id -> msg val unmarshal_id : msg -> id (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_print.mli0000664000152300015230000000504610536405664016703 0ustar jyhjyh(* * Status printing. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Omake_node open Omake_exec_id open Omake_exec_util open Omake_exec_type open Omake_cache_type open Omake_options (* * Flush the progress meter. *) val progress_flush : unit -> unit val progress_flushed : unit -> bool (* * Print a progress indicator. *) val print_progress : omake_options -> int -> int -> unit (* * Saving the cache messages. *) val print_saving : omake_options -> unit (* * Directory changes. *) val print_entering_current_directory : omake_options -> Dir.t -> unit val print_leaving_current_directory : omake_options -> unit (* * Print a status line. *) val print_status : (string -> int -> int -> unit) -> (* Diversion *) omake_options -> (* Options currently in effect *) ('exp, 'pid, 'value) shell -> (* The context *) string option -> (* Remote host name *) string -> (* Name of operation being performed *) ('exp, 'pid, 'value) print_flag -> (* What to print *) unit (* * Print a status lines. *) val pp_status_lines : formatter -> (* Output channel *) omake_options -> (* Options currently in effect *) ('exp, 'pid, 'value) shell -> (* The current shell *) string -> (* Name of operation being performed *) 'exp list -> (* What to print *) unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_remote.mli0000664000152300015230000000267310525160214017030 0ustar jyhjyh(* * Utilities for program execution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_exec_type open Omake_options (* * Debugging. *) val debug_remote : bool ref (* * The main function, if invoked on a remote machine. *) val main : ('exp, 'pid, 'value) shell -> omake_options -> unit (* * The interface to the remote server. *) module Remote : ExecServer (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_local.mli0000664000152300015230000000241310456240612016623 0ustar jyhjyh(* * Utilities for program execution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_exec_type (* * Local server. *) module Local : ExecServer (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_id.ml0000664000152300015230000000346310536375442015773 0ustar jyhjyh(* * An identifier server. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_map open Fmarshal open Omake_marshal (* * A job identifier is just an integer. *) type id = int (* * Table based on file descriptor. *) module IdCompare = struct type t = id let compare = (-) end module IdTable = Lm_map.LmMake (IdCompare) (* * Print an id. *) let pp_print_pid = pp_print_int (* * Id allocation. *) let null_id = 0 let index = ref 1 let create () = let id = !index in index := succ id; id (* * Marshaling. *) let marshal_id id = List [Magic IdMagic; Int id] let unmarshal_id l = match l with List [Magic IdMagic; Int id] -> id | _ -> raise MarshalError (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_print.ml0000664000152300015230000001455210655723011016523 0ustar jyhjyh(* * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_printf open Omake_util open Omake_node open Omake_state open Omake_command open Omake_exec_type open Omake_options open Omake_command_type (* * When the progress bar is printed, it leaves the line with text on it. * Remember if this text should be deleted. *) let progress_flush_flag = ref false let progress_flushed_flag = ref false (* * Print the progress bar. *) let message = ref None let message_timeout = ref 0.0 let progress_width = Lm_termsize.stdout_width - 20 let print_progress options count total = if opt_print_progress options then let blobs = count * progress_width / total in let () = print_char '[' in let off = match !message with Some s -> (* The message has a finite lifetime *) if Unix.gettimeofday () >= !message_timeout then message := None; (* Print the message first *) print_string s; print_char ' '; String.length s + 1 | None -> 0 in for i = off to blobs do print_char '=' done; for i = 0 to progress_width - max off blobs do print_char ' ' done; printf "] %05d / %05d\r@?" count total; progress_flush_flag := true; progress_flushed_flag := false (* * Flush the print line if needed. *) let flush_buf = String.make (Lm_termsize.stdout_width - 1) ' ' let progress_flush () = if !progress_flush_flag then begin printf "%s\r@?" flush_buf; progress_flush_flag := false; progress_flushed_flag := true end let progress_flushed () = !progress_flushed_flag (* * Print a short message. * XXX: Should the message_timeout delay be an option? *) let print_message options s = if opt_print_progress options then begin message := Some s; message_timeout := Unix.gettimeofday () +. 3.0 end else printf "*** omake: %s@." s (* * Print a message saying that the cache is being saved. *) let saving_message = "saved " ^ db_name let print_saving options = if opt_print_status options then print_message options saving_message (* * Print the current directory. * Keep track of the directory, to minimize spamming * of the omake output. *) let current_dir = ref None let print_entering_current_directory options dir = if opt_print_dir options then match !current_dir with Some cwd -> if not (Dir.equal dir cwd) then begin printf "make[1]: Leaving directory `%s'@." (Dir.absname cwd); current_dir := Some dir; printf "make[1]: Entering directory `%s'@." (Dir.absname dir) end | None -> current_dir := Some dir; printf "make[1]: Entering directory `%s'@." (Dir.absname dir) let print_leaving_current_directory options = if opt_print_dir options then match !current_dir with Some cwd -> printf "make[1]: Leaving directory `%s'@." (Dir.absname cwd); current_dir := None | None -> () (* * Print a status line. *) let should_print options flag = match flag, opt_print_command options with PrintEager _, EvalEager | PrintLazy _, EvalLazy -> true | PrintExit _, _ -> opt_print_exit options | _ -> false let print_status handle_out options shell remote name flag = let print_flush () = handle_out "" 0 0 in let out = make_formatter handle_out print_flush in let pp_print_host buf = match remote with Some host -> fprintf buf "[%s]" host | None -> () in match flag with PrintEager exp | PrintLazy exp -> let flags, dir, target = shell.shell_info exp in if should_print options flag then let dirname = Dir.fullname dir in print_flush (); print_entering_current_directory options dir; if opt_print_file options then fprintf out "-%t %s %s %s@." pp_print_host name dirname (Node.name dir target); if not (List.mem QuietFlag flags) then fprintf out "+%t %a@." pp_print_host shell.shell_print_exp exp | PrintExit (exp, code, _, time) -> let flags, dir, target = shell.shell_info exp in let dirname = Dir.fullname dir in if should_print options flag && opt_print_file options then begin print_flush (); fprintf out "-%t exit %s %s, %a, code %d@." pp_print_host dirname (Node.name dir target) pp_time time code end (* * Print a list of lines. *) let pp_status_lines out options shell name el = (* Print the commands *) let first = ref true in fprintf out " @["; List.iter (fun exp -> let flags, dir, target = shell.shell_info exp in if !first then begin fprintf out "- %s %s %s" name (Dir.fullname dir) (Node.name dir target); first := false; end; fprintf out "@ + %a" shell.shell_print_exp exp) el; fprintf out " @]@." (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_remote.ml0000664000152300015230000003600710642247035016664 0ustar jyhjyh1(* * Remote execution of jobs. This includes both the job server * as well as the server handler. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_debug open Omake_util open Omake_node open Omake_state open Omake_exec_id open Omake_exec_util open Omake_exec_type open Omake_exec_local open Omake_cache_type open Omake_command (* * Build debugging. *) let debug_remote = create_debug (**) { debug_name = "remote"; debug_description = "Remote execution debugging"; debug_value = false } (* * Type of messages sent to the service. *) type ('exp, 'pid, 'value) request = RequestSpawn of id * Node.t * 'exp (* * Type of messages received from the remote server. *) type ('exp, 'pid, 'value) response = ResponseCreate of bool | ResponseExited of id * int * 'value | ResponseStdout of id * string | ResponseStderr of id * string | ResponseStatus of id * ('exp, 'pid, 'value) print_flag (* * A local exception when the connection fails. *) exception RemoteFailed (* * During login, there is a synchronization string. *) let sync_char = '\255' let sync_string = "\255OMake Remote Execution Protocol Version 1.0" (************************************************************************ * Printing. *) let pp_print_command_line buf (shell, command) = shell.shell_print_exp buf command let pp_print_command_lines buf (shell, commands) = List.iter (fun exp -> fprintf buf "@ %a" shell.shell_print_exp exp) commands let pp_print_request buf (shell, request) = match request with RequestSpawn (id, target, commands) -> eprintf "@[@[RequestSpawn {@ id = %a;@ target = %a;@ @[commands = %a@]@]@ }@]" (**) pp_print_pid id pp_print_node target pp_print_command_lines (shell, commands) let pp_print_flag buf (shell, flag) = match flag with PrintEager command -> fprintf buf "@[Eager@ %a@]" pp_print_command_line (shell, command) | PrintLazy command -> fprintf buf "@[Lazy@ %a@]" pp_print_command_line (shell, command) | PrintExit (command, code, _, time) -> fprintf buf "@[Exit %d,@ %a,@ %a@]" code pp_time time pp_print_command_line (shell, command) let pp_print_response buf (shell, response) = match response with ResponseCreate flag -> eprintf "ResponseCreate %b" flag | ResponseExited (id, code, _) -> eprintf "ResponseExited (%a, %d)" pp_print_pid id code | ResponseStdout (id, s) -> eprintf "ResponseStdout (%a, \"%s\")" pp_print_pid id (String.escaped s) | ResponseStderr (id, s) -> eprintf "ResponseStderr (%a, \"%s\")" pp_print_pid id (String.escaped s) | ResponseStatus (id, flag) -> eprintf "@[@[ResponseStatus {@ id = %a;@ flag = %a@]@ }@]" (**) pp_print_pid id pp_print_flag (shell, flag) (************************************************************************ * Data is marshaled. *) let stdin = Pervasives.stdin let stdout = Pervasives.stdout (* * Send the sync string. *) let send_sync () = Pervasives.output_string stdout sync_string; Pervasives.flush stdout (* * The actual marshalers. *) let sendmsg out msg = Marshal.to_channel out msg []; Pervasives.flush out let send_response response = sendmsg stdout response let send_request = sendmsg (* * Receive a message. *) let recvmsg inx = Marshal.from_channel inx let recv_request () = recvmsg stdin let recv_response = recvmsg (************************************************************************ * Remote server. *) (* * Handle output. *) let handle_stdout id buf off len = send_response (ResponseStdout (id, String.sub buf off len)) let handle_stderr id buf off len = send_response (ResponseStderr (id, String.sub buf off len)) let handle_status id flag = send_response (ResponseStatus (id, flag)) (* * We don't evaluate commands remotely. *) let eval _ = raise (Invalid_argument "Omake_exec_remote.eval") (* * Start a process. *) let handle_spawn local shell id target commands = let code = Local.spawn (**) local shell id handle_stdout handle_stderr handle_status target commands in match code with ProcessFailed -> send_response (ResponseExited (id, fork_error_code, shell.shell_error_value)) | ProcessStarted _ -> (* Remote server already assumed it started *) () (* * Handle input from a descriptor. * Special case if input is from stdin. *) let handle local shell options fd = if !debug_remote then eprintf "*** server: got input on fd %d@." (Obj.magic fd); if fd = Unix.stdin then match recv_request () with RequestSpawn (id, target, commands) -> handle_spawn local shell id target commands else Local.handle local options fd (* * Serve. *) let rec serve local shell options = match Local.wait local options with WaitInternalExited (id, code, value) -> send_response (ResponseExited (id, code, value)); serve local shell options | WaitInternalNotify _ -> raise (Invalid_argument "Omake_exec_remote.serve: received notify message") | WaitInternalStarted _ -> raise (Invalid_argument "Omake_exec_remote.serve: received started message") | WaitInternalNone -> let fd_read = Unix.stdin :: Local.descriptors local in let fd_read = try let fd_read, _, _ = Unix.select fd_read [] [] (-1.0) in fd_read with Unix.Unix_error _ -> [] in List.iter (handle local shell options) fd_read; serve local shell options (* * Remote service. *) let main_exn shell options = (* First, synchronize with the server *) if !debug_remote then eprintf "*** server: starting@."; send_sync (); send_response (ResponseCreate true); serve (Local.create "local") shell options let main shell options = try main_exn shell options with exn -> eprintf "@[*** server: uncaught exception:@ %s@]@." (Printexc.to_string exn); exit exn_error_code (************************************************************************ * Remote service. *) module Remote = struct (* * Status of a job. *) type 'value job_state = JobRunning | JobFinished of int * 'value (* * A Job has some handlers. *) type ('exp, 'pid, 'value) job = { job_id : id; job_handle_out : output_fun; job_handle_err : output_fun; job_handle_status : ('exp, 'pid, 'value) status_fun; job_shell : ('exp, 'pid, 'value) shell; mutable job_state : 'value job_state } (* * Server state. *) type server_state = ServerConnecting of int | ServerSynced | ServerConnected of bool | ServerRunning (* * The state is an ssh channel. *) type ('exp, 'pid, 'value) t = { server_out : Pervasives.out_channel; server_in : Pervasives.in_channel; server_pid : int; (* Keep track of running jobs, so we can kill them if the connection drops *) mutable server_state : server_state; mutable server_jobs : ('exp, 'pid, 'value) job IdTable.t } (* * Wrap the message calls. *) let send_request server request = send_request server.server_out request let recv_response server = recv_response server.server_in (* * Create a new service. *) let create hostname = let flags = if !debug_remote then "-debug-remote" else "" in let cmd = Printf.sprintf "omake %s -server %s" flags (Dir.absname (Dir.cwd ())) in let ssh = "ssh" in let cmd = [|ssh; hostname; cmd|] in (* Create the pipes *) with_pipe (fun stdin_read stdin_write -> with_pipe (fun stdout_read stdout_write -> let pid = Unix.create_process ssh cmd stdin_read stdout_write Unix.stderr in let server = { server_out = Unix.out_channel_of_descr stdin_write; server_in = Unix.in_channel_of_descr stdout_read; server_pid = pid; server_state = ServerConnecting 0; server_jobs = IdTable.empty } in Unix.close stdin_read; Unix.close stdout_write; server)) (* * Close the connection. *) let close server = let { server_out = requestc; server_in = responsec; server_pid = pid } = server in let () = try Unix.kill pid Sys.sigterm with Unix.Unix_error _ -> () in Pervasives.close_out requestc; Pervasives.close_in responsec (* * Start a new job. *) let spawn server shell id handle_out handle_err handle_status target commands = if !debug_remote then eprintf "*** remote: spawn: %a@." pp_print_node target; (* Send the request to the remote server *) send_request server (RequestSpawn (id, target, commands)); (* Pretend that the job started *) let job = { job_id = id; job_shell = shell; job_handle_out = handle_out; job_handle_err = handle_err; job_handle_status = handle_status; job_state = JobRunning } in server.server_jobs <- IdTable.add server.server_jobs id job; ProcessStarted id (* * Get descriptors. *) let descriptors server = [Unix.descr_of_in_channel server.server_in] (* * A job exited. *) let handle_exit server id code value = let job = try IdTable.find server.server_jobs id with Not_found -> raise (Invalid_argument "Omake_exec_remote.handle_exit: no such job") in job.job_state <- JobFinished (code, value) (* * Handle data from stdout. *) let handle_stdout server id buf = let job = try IdTable.find server.server_jobs id with Not_found -> raise (Invalid_argument "Omake_exec_remote.handle_stdout: no such job") in let { job_handle_out = handle_out } = job in handle_out id buf 0 (String.length buf) let handle_stderr server id buf = let job = try IdTable.find server.server_jobs id with Not_found -> raise (Invalid_argument "Omake_exec_remote.handle_stderr: no such job") in let { job_handle_err = handle_err } = job in handle_err id buf 0 (String.length buf) let handle_status server id flag = let job = try IdTable.find server.server_jobs id with Not_found -> raise (Invalid_argument "Omake_exec_remote.handle_status: no such job") in let { job_handle_status = handle_status } = job in handle_status id flag (* * Handle input. *) let handle_normal server fd = if !debug_remote then eprintf "*** handle_normal@."; match recv_response server with ResponseCreate succeeded -> server.server_state <- ServerConnected succeeded | ResponseExited (id, code, value) -> handle_exit server id code value | ResponseStdout (id, buf) -> handle_stdout server id buf | ResponseStderr (id, buf) -> handle_stderr server id buf | ResponseStatus (id, flag) -> handle_status server id flag let handle server options fd = let { server_state = state; server_in = responsec } = server in match state with ServerConnecting i -> (try let c = input_char responsec in if c = sync_char then server.server_state <- ServerConnecting 1 else if c = sync_string.[i] then if i = pred (String.length sync_string) then let () = if !debug_remote then eprintf "*** remote: server is synced@." in server.server_state <- ServerSynced else server.server_state <- ServerConnecting (succ i) else server.server_state <- ServerConnecting 0 with End_of_file -> server.server_state <- ServerConnected false) | ServerSynced | ServerConnected _ | ServerRunning -> handle_normal server fd (* * Find a finished job, or raise Not_found if there is none. *) let wait_for_job server = let search _ job = match job with { job_id = id; job_state = JobFinished (code, value) } -> Some (id, code, value) | { job_state = JobRunning } -> None in match IdTable.find_iter search server.server_jobs with Some (id, code, value) -> server.server_jobs <- IdTable.remove server.server_jobs id; WaitInternalExited (id, code, value) | None -> WaitInternalNone let rec wait server options = if !debug_remote then eprintf "*** remote: wait@."; match server.server_state with ServerConnecting _ | ServerSynced -> WaitInternalNone | ServerConnected succeeded -> server.server_state <- ServerRunning; WaitInternalStarted succeeded | ServerRunning -> wait_for_job server end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec_local.ml0000664000152300015230000003637010641233302016455 0ustar jyhjyh(* * Execute on the local machine. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2007 Mojave Group, California Institute of Technology and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] *) open Lm_printf open Lm_thread_pool open Omake_node open Omake_state open Omake_command open Omake_exec_id open Omake_exec_util open Omake_exec_type open Omake_command_type open Omake_options let unix_close debug fd = if !debug_thread then eprintf "Closing: %s: %d@." debug (Lm_unix_util.int_of_fd fd); try Unix.close fd with Unix.Unix_error (errno, f, arg) as exn -> if !debug_thread then eprintf "%s: close failed: %s %s(%s)@." debug (Unix.error_message errno) f arg; raise exn module Local = struct (* * Status of a job. *) type 'value job_state = JobStarted | JobRunning of 'value | JobFinished of int * 'value * float (* * A job has channels for communication, * plus info. *) type ('exp, 'pid, 'value) job = { job_id : id; job_target : Node.t; job_handle_out : output_fun; job_handle_err : output_fun; job_handle_status : ('exp, 'pid, 'value) status_fun; job_start_time : float; (* Evaluator *) job_shell : ('exp, 'pid, 'value) shell; (* State while a job is running *) mutable job_pid : 'pid; mutable job_fd_count : int; mutable job_stdout : Unix.file_descr; mutable job_stderr : Unix.file_descr; mutable job_state : 'value job_state; mutable job_print_flag : bool; (* The commnds to be run after the current command is done *) mutable job_command : 'exp; mutable job_commands : 'exp list; (* A temporary buffer for copying. *) job_buffer_len : int; job_buffer : string * string; } (* * The state: * server_jobs: currently running jobs *) type ('exp, 'pid, 'value) t = { mutable server_table : ('exp, 'pid, 'value) job FdTable.t; mutable server_jobs : ('exp, 'pid, 'value) job list } let create _ = { server_table = FdTable.empty; server_jobs = [] } (* * Printing. *) let pp_print_pid = pp_print_int let allow_output shell command = let flags, dir, target = shell.shell_info command in List.mem AllowOutputFlag flags (* * Print an error to the error channel. *) let handle_exn handle_err pp_print_exn id exn = let out = make_formatter (handle_err id) ignore in fprintf out "@[ *** process creation failed:@ %a@]@." pp_print_exn exn (* * When the server is closed, kill all the jobs. *) let close server = FdTable.iter (fun fd _ -> Unix.close fd) server.server_table; List.iter (fun { job_shell = shell; job_pid = pid; job_state = state } -> match state with JobFinished _ -> () | JobStarted | JobRunning _ -> try shell.shell_kill pid with Unix.Unix_error _ | Invalid_argument _ -> ()) server.server_jobs (* * Find a finished job, or raise Not_found if there is none. *) let find_finished_job server = let rec find running_jobs = function { job_state = JobFinished (code, value, time) } as job :: jobs -> job, code, value, List.rev_append running_jobs jobs, time | { job_state = JobStarted | JobRunning _ } as job :: jobs -> find (job :: running_jobs) jobs | [] -> raise Not_found in find [] server.server_jobs (* * Start a command. Takes the output channels, and returns a pid. *) let start_command server shell stdout stderr command = shell.shell_eval stdout stderr command (* * Start a job. *) let spawn_exn server shell id handle_out handle_err handle_status target commands = let command, commands = match commands with command :: commands -> command, commands | [] -> raise (Invalid_argument "Omake_exec_local.spawn") in let { server_table = table; server_jobs = jobs } = server in with_pipe (fun out_read out_write -> with_pipe (fun err_read err_write -> if !debug_thread then begin eprintf "out_read: %d, out_write: %d@." (Lm_unix_util.int_of_fd out_read) (Lm_unix_util.int_of_fd out_write); eprintf "err_read: %d, err_write: %d@." (Lm_unix_util.int_of_fd err_read) (Lm_unix_util.int_of_fd err_write) end; let () = handle_status id (PrintEager command); Unix.set_close_on_exec out_read; Unix.set_close_on_exec err_read in let now = Unix.gettimeofday() in let pid = start_command server shell out_write err_write command in let job = { job_id = id; job_target = target; job_handle_out = handle_out; job_handle_err = handle_err; job_handle_status = handle_status; job_start_time = now; job_pid = pid; job_state = JobStarted; job_fd_count = 2; job_stdout = out_read; job_stderr = err_read; job_command = command; job_commands = commands; job_print_flag = false; job_shell = shell; job_buffer_len = 1024; job_buffer = String.create 1024, String.create 1024; } in let table = FdTable.add table out_read job in let table = FdTable.add table err_read job in if !debug_exec then eprintf "Started job %d, stdout=%d, stderr=%d@." (**) (Obj.magic pid) (Lm_unix_util.int_of_fd out_read) (Lm_unix_util.int_of_fd err_read); unix_close "spawn_exn.1" out_write; unix_close "spawn_exn.2" err_write; server.server_table <- table; server.server_jobs <- job :: jobs; ProcessStarted id)) let err_print_status commands handle_status id = match commands with command :: commands -> handle_status id (PrintLazy command) | [] -> () let spawn server shell id handle_out handle_err handle_status target commands = try spawn_exn server shell id handle_out handle_err handle_status target commands with exn -> err_print_status commands handle_status id; handle_exn handle_err shell.shell_print_exn id exn; if shell.shell_is_failure_exn exn then ProcessFailed else raise exn (* * Start the next part of the job. *) let spawn_next_part_exn server job = let { job_id = id; job_shell = shell; job_target = target; job_commands = commands; job_handle_out = handle_out; job_handle_err = handle_err; job_handle_status = handle_status } = job in let { server_table = table } = server in match commands with command :: commands -> with_pipe (fun out_read out_write -> with_pipe (fun err_read err_write -> let () = handle_status id (PrintEager command); Unix.set_close_on_exec out_read; Unix.set_close_on_exec err_read in let pid = start_command server shell out_write err_write command in let table = FdTable.add table out_read job in let table = FdTable.add table err_read job in if !debug_exec then eprintf "Started next job %d, stdout=%d, stderr=%d@." (**) (Obj.magic pid) (Lm_unix_util.int_of_fd out_read) (Lm_unix_util.int_of_fd err_read); unix_close "spawn_next_part.1" out_write; unix_close "spawn_next_part.2" err_write; job.job_pid <- pid; job.job_fd_count <- 2; job.job_stdout <- out_read; job.job_stderr <- err_read; job.job_command <- command; job.job_commands <- commands; job.job_print_flag <- false; server.server_table <- table)) | [] -> match job.job_state with JobRunning v -> (* Close output channels *) handle_out id "" 0 0; handle_err id "" 0 0; job.job_state <- JobFinished (0, v, Unix.gettimeofday() -. job.job_start_time) | JobStarted | JobFinished _ -> raise (Invalid_argument "spawn_next_part") let spawn_next_part server job = try spawn_next_part_exn server job with exn -> let shell = job.job_shell in err_print_status job.job_commands job.job_handle_status job.job_id; handle_exn job.job_handle_err shell.shell_print_exn job.job_id exn; job.job_state <- JobFinished (fork_error_code, shell.shell_error_value, Unix.gettimeofday() -. job.job_start_time); if not (shell.shell_is_failure_exn exn) then raise exn (* * Check if a command is an error. *) let command_code shell options command status = let flags, _, _ = shell.shell_info command in let code = match status with Unix.WEXITED code -> code | Unix.WSIGNALED _ | Unix.WSTOPPED _ -> signal_error_code in if code <> 0 && not (List.mem AllowFailureFlag flags) then code else 0 (* * Wait for the current part to finish. *) let wait_for_job server options job = let { job_pid = pid; job_command = command; job_shell = shell } = job in let () = if !debug_exec then eprintf "Waiting for job %d@." (Obj.magic pid) in let status, v = shell.shell_wait pid in let code = command_code shell options command status in if !debug_exec then eprintf "Job exited with code %d@." code; if code <> 0 then job.job_state <- JobFinished (code, shell.shell_error_value, Unix.gettimeofday() -. job.job_start_time) else begin job.job_state <- JobRunning v; spawn_next_part server job end (* * Handle data on a channel. *) let handle server options fd = let job = try FdTable.find server.server_table fd with Not_found -> raise (Invalid_argument "Omake_exec.handle_channel: no such job") in let { job_id = id; job_stdout = stdout; job_stderr = stderr; job_handle_out = handle_out; job_handle_err = handle_err; job_handle_status = handle_status; job_command = command; job_buffer_len = buffer_len; job_buffer = buffer_stdout, buffer_stderr; } = job in let handle, buffer = if fd = stdout then handle_out, buffer_stdout else if fd = stderr then handle_err, buffer_stderr else raise (Invalid_argument "Omake_exec.handle_channel: unknown file descriptor") in (* Read from the descriptor *) let count = Lm_thread_pool.blocking_section (fun () -> try Unix.read fd buffer 0 buffer_len with Unix.Unix_error _ -> 0) () in (* Handle end of file *) if count = 0 then begin let table = FdTable.remove server.server_table fd in let fd_count = pred job.job_fd_count in (* Reached eof *) if !debug_exec then eprintf "Removing fd %d@." (Lm_unix_util.int_of_fd fd); server.server_table <- table; unix_close "handle" fd; (* Decrement fd_count, and close job when zero *) job.job_fd_count <- fd_count; if fd_count = 0 then wait_for_job server options job end else begin (* For "AllowOutputFlag" commands (e.g. scanner) stdout does not "count", but stderr still does *) if not (job.job_print_flag || (fd = stdout && allow_output job.job_shell command)) then begin handle_status id (PrintLazy command); job.job_print_flag <- true end; handle id buffer 0 count end (* * Get all the descriptors. *) let descriptors server = FdTable.fold (fun fd_set fd _ -> if !debug_thread then eprintf "Local.descriptors: %d@." (Lm_unix_util.int_of_fd fd); fd :: fd_set) [] server.server_table (* * The wait process handles output from each of the jobs. * Once both output channels are closed, the job is finished. *) let wait server options = try let job, code, value, jobs, time = find_finished_job server in let { job_id = id; job_handle_status = handle_status; job_command = command } = job in server.server_jobs <- jobs; handle_status id (PrintExit (command, code, value, time)); WaitInternalExited (id, code, value) with Not_found -> WaitInternalNone end (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/exec/omake_exec.mli0000664000152300015230000000245610456240612015460 0ustar jyhjyh(* * Utilities for program execution. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_node open Omake_exec_util open Omake_exec_type open Omake_cache_type module Exec : ExecService (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/main/0000775000152300015230000000000010660137222012645 5ustar jyhjyhomake-0.9.8.5/src/main/OMakefile0000664000152300015230000000236210515725064014435 0ustar jyhjyh# # Config # OCAMLINCLUDES[] += ../libmojave ../util ../magic ../ast ../ir ../env ../exec ../eval ../shell ../build ../builtin # # Helper programs # OCAML_LIBS[] = ../libmojave/lm MakeOCamlProgram(cvs_realclean, cvs_realclean) # # Main programs # FILES[] = omake_shell omake_main OCAML_LIBS[] = ../libmojave/lm ../util/util ../magic/magic ../ast/ast ../ir/ir ../env/env ../exec/exec ../eval/eval ../shell/shell ../build/build ../builtin/builtin OCAML_CLIBS[] = ../clib/clib MakeOCamlProgram(omake, $(FILES)) osh$(EXE): omake$(EXE) ln-or-cp $< $@ .DEFAULT: cvs_realclean$(EXE) omake$(EXE) osh$(EXE) all: cvs_realclean$(EXE) omake$(EXE) osh$(EXE) # # Install into the binaries # install: cvs_realclean$(EXE) omake$(EXE) osh$(EXE) mkdir -p $(INSTALL_BINDIR) cp -f -m 555 cvs_realclean$(EXE) omake$(EXE) $(INSTALL_BINDIR)/ ln-or-cp $(INSTALL_BINDIR)/omake$(EXE) $(INSTALL_BINDIR)/osh$(EXE) clean: $(CLEAN) $(addsuffixes $(array $(EXE), $(string $(EMPTY)), .opt, .run), cvs_realclean omake osh) # # Generate a Makefile # MakeOCamlDepend($(FILES), magic.cma) MakeMakefile() # # For the initial boot, just make omake # main: omake$(EXE) omake-0.9.8.5/src/main/omake_shell.ml0000664000152300015230000003047710657124511015500 0ustar jyhjyh(* * Implement a shell. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2007 Mojave Group, California Institute of Technology, and * HRL Laboratories, LLC * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org}, @email{anogin@hrl.com} * @end[license] *) open Lm_debug open Lm_printf open Lm_location open Omake_ir open Omake_env open Omake_var open Omake_pos open Omake_eval open Omake_exec open Omake_node_sig open Omake_node open Omake_value open Omake_state open Omake_symbol open Omake_ir_ast open Omake_options open Omake_exn_print open Omake_shell_job open Omake_shell_type open Omake_value_type open Omake_value_print open Omake_shell_completion module Pos = MakePos (struct let name = "Omake_shell" end) open Pos;; (* * Empty environment. *) let node_empty = Node.create_phony_global "interactive shell input" (* * The parser. *) let parse_string venv s = let ast = Omake_ast_lex.parse_string s in let _ = if debug print_ast then eprintf "@[AST:@ %a@]@." Omake_ast_print.pp_print_prog ast in let senv = penv_of_vars (eval_open_file venv) venv node_empty (venv_include_scope venv IncludePervasives) in let _, ir = Omake_ir_ast.compile_exp_list senv ast in postprocess_ir venv ir let parse_ir state venv senv prompt = let ast = Omake_ast_lex.parse_shell state prompt in let _ = if debug print_ast then eprintf "@[AST:@ %a@]@." Omake_ast_print.pp_print_prog ast in let senv, ir = Omake_ir_ast.compile_exp_list senv ast in let e = (* We are interested in not hiding top-level values. *) match ir.ir_exp with SequenceExp (_, [e]) -> e | e -> e in let ir = { ir with ir_exp = e } in senv, postprocess_ir venv ir (* * The result printer. *) let print_result result = match result with ValNone | ValQuote [] | ValSequence [] | ValArray [] | ValString "" | ValClass _ | ValOther (ValExitCode 0) -> () | ValInt _ | ValFloat _ | ValSequence _ | ValArray _ | ValData _ | ValQuote _ | ValQuoteString _ | ValString _ | ValNode _ | ValDir _ | ValKeyApply _ | ValApply _ | ValMaybeApply _ | ValSuperApply _ | ValMethodApply _ | ValVar _ | ValObject _ | ValMap _ | ValChannel _ | ValFun _ | ValFunValue _ | ValPrim _ | ValBody _ | ValRules _ | ValOther _ | ValCases _ | ValDelayed _ -> printf "- : %a@." pp_print_value result (* * Load a history file when the variable changes. *) let load_history_file = let existing_file = ref None in let load venv pos = try let v = venv_find_var_exn venv history_file_var in match v with ValNone -> () | _ -> let node = file_of_value venv pos v in let filename = Node.fullname node in if !existing_file <> Some filename then begin Omake_readline.load filename; existing_file := Some filename end with Not_found -> () | _ -> eprintf "*** osh: error loading history-file@." in load (* * Set the history length when the variable changes. *) let set_history_length = let existing_length = ref 0 in let set venv pos = try let v = venv_find_var_exn venv history_length_var in let i = int_of_value venv pos v in if !existing_length <> i then begin Omake_readline.set_length i; existing_length := i end with Not_found -> () | _ -> eprintf "*** omake: error setting history-length@." in set (* * Tell readline about the current directory. *) let set_current_directory venv = let cwd = venv_dir venv in Omake_readline.set_directory (Dir.absname cwd) (* * Save the history when exiting. *) let exit code = Omake_readline.save (); Pervasives.exit code (* * Abort if asked. *) let maybe_exit_on_exception pos venv = let abort = try bool_of_value venv pos (venv_find_var_exn venv exit_on_uncaught_exception_var) with Not_found -> false in if abort then exit exn_error_code (* * The shell main loop. *) let rec main state senv venv result = (* Prompt for input *) let loc = Omake_ast_lex.current_location state in let pos = string_pos "shell" (loc_exp_pos loc) in let () = (* Cleanup any jobs that have finished *) cleanup venv; (* Save any static values *) venv_save_static_values venv; (* Load from the history file if the variable has changed *) load_history_file venv pos; (* Set the length of the history file *) set_history_length venv pos; (* Set the current directory *) set_current_directory venv; (* Install the callback for command completion *) set_completion_functions venv pos loc in let prompt = try let prompt = ValApply (loc, VarVirtual (loc, prompt_sym), []) in string_of_value venv pos prompt with OmakeException _ | UncaughtException _ | RaiseException _ | Unix.Unix_error _ | Sys_error _ | Failure _ | Not_found -> "% " in (* Evaluate it *) let senv, venv, result = try let senv, ir = parse_ir state venv senv prompt in let venv, result = Omake_eval.eval_exp venv result ir.ir_exp in senv, venv, result with End_of_file -> if venv_defined venv ignoreeof_var then begin eprintf "^D@.Use \"exit\" leave osh.@."; senv, venv, result end else exit 0 | Unix.Unix_error _ | Invalid_argument _ | Sys_error _ | Failure _ | Not_found as exn -> eprintf "%a@." pp_print_exn (UncaughtException (pos, exn)); maybe_exit_on_exception pos venv; senv, venv, ValNone | ExitException (_, code) -> exit code | exn -> eprintf "%a@." pp_print_exn exn; maybe_exit_on_exception pos venv; senv, venv, ValNone in print_result result; main state senv venv result (* * Run an interactive shell. *) let shell_interactive venv = (* Interactive mode *) Omake_shell_sys.set_interactive true; let state = Omake_ast_lex.create_shell () in let () = if Sys.os_type <> "Win32" then let _ = Sys.signal Sys.sigttou Sys.Signal_ignore in let _ = Sys.signal Sys.sigint Sys.Signal_ignore in let _ = Sys.signal Sys.sigquit Sys.Signal_ignore in let _ = Sys.signal Sys.sigtstp Sys.Signal_ignore in () in (* Set up the environment *) let venv = venv_add_var venv argv_var (ValString Sys.argv.(0)) in let venv = venv_add_var venv star_var ValNone in let venv = venv_add_var venv file_var (ValNode node_empty) in let senv = penv_of_vars (eval_open_file venv) venv node_empty (venv_include_scope venv IncludeAll) in main state senv venv ValNone (* * Non-interactive shell to run some files. *) let shell_script venv scriptname args = (* Non-interactive mode *) Omake_shell_sys.set_interactive false; let loc = bogus_loc scriptname in let pos = string_pos "shell_targets" (loc_exp_pos loc) in let node = venv_intern venv PhonyProhibited scriptname in (* Add the command line to the environment *) let argv = scriptname :: args in let argv_val = ValArray (List.map (fun s -> ValString s) argv) in let venv = venv_add_var venv argv_var argv_val in let star_val = ValArray (List.map (fun s -> ValString s) args) in let venv = venv_add_var venv star_var star_val in let venv, _ = List.fold_left (fun (venv, i) s -> let v = create_numeric_var i in let venv = venv_add_var venv v (ValString s) in venv, succ i) (venv, 0) argv in (* Evaluate the file *) if !debug_shell then eprintf "@[<3>shell_script (pid=%i): running script@ %a@]@." (**) (Unix.getpid()) pp_print_node node; try ignore (eval_include_file venv IncludeAll pos loc node) with End_of_file -> if !debug_shell then eprintf "@[<3>shell_script (pid=%i): script@ %a:@ got EOF, exiting@]@." (**) (Unix.getpid()) pp_print_node node; exit 0 | OmakeException _ | UncaughtException _ | RaiseException _ as exn -> if !debug_shell then eprintf "@[<3>shell_script (pid=%i): script@ %a:@ got exception, exiting@]@." (**) (Unix.getpid()) pp_print_node node; eprintf "%a@." pp_print_exn exn; exit exn_error_code | ExitException (_, code) -> if !debug_shell then eprintf "@[<3>shell_script (pid=%i): script@ %a:@ got exit exception (code = %i), exiting@]@." (**) (Unix.getpid()) pp_print_node node code; exit code | exn -> eprintf "%a@." pp_print_exn (UncaughtException (pos, exn)); maybe_exit_on_exception pos venv (* * Evaluate a string. *) let shell_string venv s = (* Non-interactive mode *) Omake_shell_sys.set_interactive false; (* Evaluate the string *) try ignore (Omake_eval.eval_exp venv ValNone (parse_string venv s).ir_exp) with End_of_file -> eprintf "Empty command: %s@." s; exit 1 | OmakeException _ | UncaughtException _ | RaiseException _ as exn -> eprintf "%a@." pp_print_exn exn; exit exn_error_code | ExitException (_, code) -> exit code | exn -> eprintf "%a@." pp_print_exn exn; maybe_exit_on_exception (string_exp_pos "shell_string") venv (* * Get the initial environment. *) let create_venv options targets = (* Non-interactive mode *) Omake_shell_sys.set_interactive false; (* Move to ~/.omake *) let cwd = Dir.cwd () in let () = Unix.chdir (omake_dir ()); Dir.reset_cwd () in (* Now start creating *) let exec = Exec.create cwd options in let cache = Omake_cache.create () in let venv = Omake_env.create options "." exec cache in let venv = venv_chdir_tmp venv cwd in let venv = Omake_builtin.venv_add_command_defs venv in let venv = Omake_env.venv_add_var venv targets_var (ValString (String.concat " " targets)) in let venv = Omake_builtin.venv_add_builtins venv in let venv = Omake_builtin.venv_include_rc_file venv omakeinit_file in let venv = Omake_builtin.venv_add_pervasives venv in let venv = Omake_builtin.venv_add_command_defs venv in let venv = Omake_builtin.venv_include_rc_file venv oshrc_file in venv (* * Run the shell. *) let shell options command targets = let options = set_osh_opt options in let venv = try create_venv options targets with exn when not (opt_allow_exceptions options) -> eprintf "%a@." pp_print_exn exn; exit exn_error_code in match command with Some command -> shell_string venv command | None -> match targets with [] -> shell_interactive venv | filename :: args -> shell_script venv filename args (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/main/cvs_realclean.ml0000664000152300015230000001276610525213015016007 0ustar jyhjyh(* * This is a script to remove all files in a project that are * unknown to CVS. This would be easier in a scripting language, * but Win32 is limited. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@metaprl.org} * @end[license] *) open Lm_printf open Lm_string_set (* * Flags. *) (* Forcably remove files *) let rm_force = ref false (* * List the entries in a directory. *) let ls_aux dirname = let dir = Unix.opendir dirname in let rec collect entries = let entry = try Some (Unix.readdir dir) with End_of_file -> None in match entry with Some "." | Some ".." | Some "CVS" -> collect entries | Some name -> collect (name :: entries) | None -> entries in let entries = collect [] in Unix.closedir dir; entries let ls dirname = try ls_aux dirname with Unix.Unix_error _ -> [] let ignore_files = ref (StringSet.empty) let ignore_file name = ignore_files := StringSet.add !ignore_files name; if Filename.is_relative name then ignore_files := StringSet.add !ignore_files (Filename.concat Filename.current_dir_name name) (* * Get the entries in a CVS/Entries file. *) let cvs_entries dirname = let filename = dirname ^ "/CVS/Entries" in let inx = open_in_bin filename in let rec collect_entries files dirs = let line = try Some (input_line inx) with End_of_file -> None in match line with None -> files, dirs | Some line -> match Lm_string_util.split "/" line with "D" :: name :: _ -> let dirs = StringSet.add dirs name in collect_entries files dirs | "" :: name :: _ -> let files = StringSet.add files name in collect_entries files dirs | _ -> collect_entries files dirs in let files, dirs = collect_entries StringSet.empty StringSet.empty in close_in inx; files, dirs (* * Arguments. *) let args = [ "-f", Arg.Set rm_force, "\tDo not ask whether to remove files"; "-i", Arg.String ignore_file, "\tIgnore the file"; ] let root_dirs = ref [] let add_dir s = root_dirs := s :: !root_dirs (* * Main program starts from the current directory. *) let main () = let rm_command = match Sys.os_type with "Win32" -> if !rm_force then "del /F " else "del /P " | "Unix" | "Cygwin" -> if !rm_force then "/bin/rm -rf " else "/bin/rm -ri " | s -> raise (Failure ("cvs_realclean: unknown architecture " ^ s)) in (* * Remove a file/directory. *) let rm dirname name = let name = Filename.concat dirname name in if not (StringSet.mem !ignore_files name) then begin printf "removing %s...@." name; ignore (Unix.system (rm_command ^ (Filename.quote name))) end in (* * Remove all entries that are not known to CVS. *) let rec clean dirname = match try Some (cvs_entries dirname) with Sys_error _ -> eprintf "WARNING: Directory ``%s'' does not have a readable CVS/Entries file!\n Ignoring (skipping) directory ``%s''.\n" dirname dirname; None with Some (files, dirs) -> let names = ls dirname in let subdirs = List.fold_left (fun subdirs name -> if StringSet.mem files name then subdirs else if StringSet.mem dirs name then Filename.concat dirname name :: subdirs else begin rm dirname name; subdirs end) [] names in List.iter clean subdirs | None -> () in let dirs = match !root_dirs with [] -> [Filename.current_dir_name] | l -> List.rev l in List.iter clean dirs let _ = Arg.parse args add_dir "cvs_realclean removes all files not known by CVS.\nUsage: cvs_realclean [dir1 [dir2 ...]]\nOptions are:"; Printexc.catch main () (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/main/omake_main.ml0000664000152300015230000003130010647734513015307 0ustar jyhjyh(* * Run the make. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified By: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) open Lm_printf open Lm_location open Omake_ir open Omake_env open Omake_pos open Omake_eval open Omake_node open Omake_exec open Omake_rule open Omake_state open Omake_symbol open Omake_exec_type open Omake_value_type open Omake_options open Omake_var module Pos = MakePos (struct let name = "Omake_main" end);; open Pos (* * Print the hash stats? *) let debug_hash = ref false let print_hash_stats () = if !debug_hash then eprintf "@[Hash statistics:@ %t@]@." Lm_hash.pp_print_hash_stats (* * List of targets to build. *) let targets = ref [] let add_target s = targets := s :: !targets (* * Server flag. *) let server_flag = ref None (* * Shell flags. *) let shell_flag = ref false let command_string = ref None (* * Installation. *) let install_flag = ref false let install_subdirs = ref false let install_force = ref false (* * Add an random argument. *) let add_unknown options s = let () = try let i = String.index s '=' in let l = String.length s in let v = String.sub s 0 i in let x = String.sub s (succ i) (l - i - 1) in Omake_builtin.add_command_def v x with Not_found -> add_target s in options, !shell_flag (* * Arguments. *) let header = "OMake generic system builder, version " ^ Omake_magic.version let spec = Lm_arg.StrictOptions, (**) ["Make flags", (**) options_spec; "Output flags", (**) output_spec; "Cache management", (**) ["--save-interval", Lm_arg.Float (fun f -> Omake_build.save_interval := f), (**) (sprintf "Save the build DB (\".omakedb\") every x seconds (0 disables, default: %F)" (**) Omake_magic.default_save_interval); "--force-dotomake", Lm_arg.Set Omake_state.always_use_dotomake, (**) "Always use $HOME/.omake for .omc cache files"; "--dotomake", Lm_arg.String (fun s -> Omake_state.set_omake_dir s), (**) "Use the specified directory in place of $HOME/.omake"]; "Helper flags", (**) ["--install", Lm_arg.Set install_flag, (**) "Install an OMake project into the current directory"; "--install-all", Lm_arg.SetFold (fun opts b -> install_flag := b; install_subdirs := b; opts), (**) "Install an OMake project into the current directory and all subdirectories"; "--install-force", Lm_arg.SetFold (fun opts b -> install_flag := b; install_force := b; opts), (**) "Force overwriting of files during installation; implies --install"; "--version", Lm_arg.Unit (fun () -> printf "%s\n\nDefault library directory : %s@." Omake_magic.version_message Omake_magic.lib_dir; if Omake_state.lib_dir_reason <> "" then printf "Using library directory : %s\n\t(as specified by the %s)@." (**) Omake_state.lib_dir Omake_state.lib_dir_reason; exit 0), (**) "Print the version string and exit"]; "Shell flags", (**) ["--shell", Lm_arg.Set shell_flag, (**) "Run the OMake shell: osh"; "-i", Lm_arg.SetFold (fun opts b -> Omake_readline.set_interactive b; opts), (**) "Treat the session as interactive"; "-c", Lm_arg.String (fun s -> command_string := Some s), (**) "Evaluate the commands from the string"]; "Debugging flags", (**) ["-print-ast", Lm_arg.Set Omake_eval.print_ast, (**) "Print the AST after parsing"; "-print-ir", Lm_arg.Set Omake_eval.print_ir, (**) "Print the IR"; "-print-loc", Lm_arg.Set Omake_ast_print.print_location, (**) "Also print locations"; "-print-rules", Lm_arg.Set Omake_eval.print_rules, (**) "Print the rules after evaluation"; "-print-files", Lm_arg.Set Omake_eval.print_files, (**) "Print the files as they are read"; "-debug-deps", Lm_arg.Set Omake_build.debug_deps, (**) "Display dependency information as scanned"; "-debug-ast-lex", Lm_arg.Set Omake_ast_lex.debug_lex, (**) "Print tokens as they are scanned"; "-debug-cache", Lm_arg.Set Omake_cache.debug_cache, (**) "Display cache debugging information"; "-debug-exec", Lm_arg.Set Omake_exec_util.debug_exec, (**) "Display execution debugging information"; "-debug-rule", Lm_arg.Set Omake_build.debug_rule, (**) "Display debugging information about rule execution"; "-debug-build", Lm_arg.Set Omake_build.debug_build, (**) "Display debugging information during the build"; "-debug-scanner", Lm_arg.Set Omake_env.debug_scanner, (**) "Display debugging information for scanner selection"; "-debug-implicit", Lm_arg.Set Omake_env.debug_implicit, (**) "Display debugging information for implicit rule selection"; "-debug-pos", Lm_arg.Set Lm_position.debug_pos, (**) "Print source position information on error"; "-trace-pos", Lm_arg.Set Lm_position.trace_pos, (**) "Trace the program execution"; "-debug-remote", Lm_arg.Set Omake_exec_remote.debug_remote, (**) "Debug remote execution"; "-debug-active-rules", Lm_arg.Set Omake_rule.debug_active_rules, (**) "Debug active rules"; "-debug-shell", Lm_arg.Set Omake_shell_type.debug_shell, (**) "Debug shell operations"; "-debug-eval", Lm_arg.Set Omake_eval.debug_eval, (**) "Debug the evaluator"; "-debug-lex", Lm_arg.Set Lm_lexer.debug_lex, (**) "Debug the lexer"; "-debug-lexgen", Lm_arg.Set Lm_lexer.debug_lexgen, (**) "Debug the lexer generator"; "-debug-parse", Lm_arg.Set Lm_parser.debug_parse, (**) "Debug the parser"; "-debug-parsegen", Lm_arg.Set Lm_parser.debug_parsegen, (**) "Debug the parser generator"; "-debug-parsing", Lm_arg.Set Omake_builtin_io_fun.debug_parsing, (**) "Debug OMake parsing operations"; "-debug-notify", Lm_arg.Set Lm_notify.debug_notify, (**) "Debug the FAM (-p filesystem watch) operations"; "-debug-db", Lm_arg.Set Omake_env.debug_db, (**) "Debug the file database"; "-debug-hash", Lm_arg.Set debug_hash, (**) "Show Lm_hash statistics"; "-debug-thread", Lm_arg.Set Lm_thread_pool.debug_thread, (**) "Show thread operations"; "-allow-exceptions", Lm_arg.SetFold set_allow_exceptions_opt, (**) "Do not catch top-level exceptions (for use with OCAMLRUNPARAM=b)"]; "Internal flags", (**) ["-server", Lm_arg.String (fun s -> server_flag := Some s), (**) "Run as a remote server";]] (* * Concat strings. *) let concat = let buf = Buffer.create 17 in let concat sl = if sl = [] then Lm_filename_util.separator_string else let _ = List.iter (fun s -> Buffer.add_char buf Lm_filename_util.separator_char; Buffer.add_string buf s) sl in let s = Buffer.contents buf in Buffer.clear buf; s in concat (* * Find the outermost OMakeroot. *) let chroot () = let cwd = try Unix.getcwd () with Unix.Unix_error _ -> eprintf "*** omake: fatal error: current directory does not exist@."; exit 1 in let len = String.length cwd in let start = Lm_filename_util.drive_skip cwd in let rec search i = if i < start then raise (OmakeFatal ("can not find " ^ makeroot_name ^ " or " ^ makeroot_short_name)) else if cwd.[i] = '/' || cwd.[i] = '\\' then (* Maybe file is in this directory *) let dir = String.sub cwd 0 i in if Sys.file_exists (Filename.concat dir makeroot_name) || Sys.file_exists (Filename.concat dir makeroot_short_name) then let rest = String.sub cwd (succ i) (len - i - 1) in dir, rest else search (pred i) else search (pred i) in let dir, rest = if Sys.file_exists (Filename.concat cwd makeroot_name) || Sys.file_exists (Filename.concat cwd makeroot_short_name) then cwd, "." else search (pred len) in if rest <> "." then eprintf "*** omake: changing directory to %s@." dir; Unix.chdir dir; Omake_node.Dir.reset_cwd (); rest (* * Main program. *) let main options = let () = Sys.catch_break true in let () = if Sys.os_type <> "Win32" then Sys.set_signal Sys.sigpipe Sys.Signal_ignore in let path = chroot () in let path = if opt_cd_root options then "." else path in let targets = match !targets with [] -> [".DEFAULT"] | l -> List.rev l in Omake_build.build options path targets; print_hash_stats () (* * Main for remote execution. *) let main_remote cwd options = (* Set up the environment *) Unix.chdir cwd; Dir.reset_cwd (); let cwd = Dir.cwd () in let exec = Exec.create cwd options in let cache = Omake_cache.create () in let venv = Omake_env.create options "." exec cache in let venv = Omake_builtin.venv_add_command_defs venv in let venv = Omake_env.venv_add_var venv targets_var (ValString (String.concat " " !targets)) in let venv = Omake_builtin.venv_add_builtins venv in (* Shell evaluator *) let pos = string_exp_pos "main_remote" in let shell = eval_shell venv pos in Omake_exec_remote.main shell options let _ = (* If the executable is named osh, set the shell flag *) let () = let exe = Lm_filename_util.root (Filename.basename (Sys.argv.(0))) in if exe = "osh" then shell_flag := true in (* Parse all the options *) let options = default_options in let options = try let s = Sys.getenv "OMAKEFLAGS" in let argv = Array.of_list (Sys.argv.(0) :: Lm_string_util.tokens_std s) in Lm_arg.fold_argv argv spec options add_unknown header with Not_found | Lm_arg.UsageError -> options in let options = try Lm_arg.fold spec options add_unknown header with Lm_arg.UsageError -> exit 0 | Lm_arg.BogusArg (s) -> Lm_arg.usage spec header; eprintf "@\n@[*** omake fatal error:@ %s@]@." s; exit 3 in Lm_thread_core.debug_mutex := !Lm_thread_pool.debug_thread; Lm_thread.debug_lock := !Lm_thread_pool.debug_thread; (* Run it *) match !server_flag with Some cwd -> main_remote cwd options | None -> if !shell_flag then Omake_shell.shell options !command_string (List.rev !targets) else if !install_flag then if !install_subdirs then Omake_install.install_subdirs !install_force else Omake_install.install_current !install_force else if opt_allow_exceptions options then main options else Omake_exn_print.catch main options (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/main/omake_shell.mli0000664000152300015230000000234310525160214015632 0ustar jyhjyh(* * Shell toploop. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2004-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) open Omake_options val shell : omake_options -> string option -> string list -> unit (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/main/omake_main.mli0000664000152300015230000000226510456240612015456 0ustar jyhjyh(* * Main make program. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003 Jason Hickey, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey * @email{jyh@cs.caltech.edu} * @end[license] *) (*! * @docoff * * -*- * Local Variables: * Caml-master: "compile" * End: * -*- *) omake-0.9.8.5/src/magic/0000775000152300015230000000000010660137222013001 5ustar jyhjyhomake-0.9.8.5/src/magic/omake_gen_magic.ml0000664000152300015230000002317610555215402016431 0ustar jyhjyh(* * Generate magic numbers. * * ---------------------------------------------------------------- * * @begin[license] * Copyright (C) 2003-2006 Mojave Group, Caltech * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Additional permission is given to link this library with the * with the Objective Caml runtime, and to redistribute the * linked executables. See the file LICENSE.OMake for more details. * * Author: Jason Hickey @email{jyh@cs.caltech.edu} * Modified by: Aleksey Nogin @email{nogin@cs.caltech.edu} * @end[license] *) open Printf (************************************************************************ * Options. *) type mode = CacheFiles | OmcFiles | OmoFiles | NoFiles let mode = ref NoFiles let make_magic = ref false let make_root = ref None let output_file = ref None let cache_files = ref [] let omc_files = ref [] let omo_files = ref [] let libdir = ref None let version_txt = ref "version.txt" let default_save_interval = ref 15.0 let anon s = let p = match !mode with CacheFiles -> cache_files | OmcFiles -> omc_files | OmoFiles -> omo_files | NoFiles -> eprintf "You specified an anonymous file. Use --help for help."; exit 3 in p := s :: !p let spec = ["--magic", Arg.Set make_magic, "generate the omake_magic.ml file"; "--lib", Arg.String (fun s -> libdir := Some s), "specify the location of the library directory"; "--root", Arg.String (fun s -> make_root := Some s), "generate the OMakeroot file"; "--cache-files", Arg.Unit (fun () -> mode := CacheFiles), "specify the magic files for the cache magic number"; "--omc-files", Arg.Unit (fun () -> mode := OmcFiles), "specify the files to scan for the IR magic number"; "--omo-files", Arg.Unit (fun () -> mode := OmoFiles), "specify the files to scan for the object magic number"; "--version", Arg.String (fun s -> version_txt := s), "specify the version.txt file"; "--default_save_interval", Arg.Float (fun f -> default_save_interval := f), "specify the default .omakedb save interval"; "-o", Arg.String (fun s -> output_file := Some s), "set the output file"] let usage = "Generate special files" (************************************************************************ * Version numbers. *) (* * Get the version from the version.txt file. *) let rec read_version_from_file inx = let line = Lm_string_util.trim (input_line inx) in if line = "" then raise End_of_file; line let read_version () = let file = !version_txt in let inx = open_in file in let version = try read_version_from_file inx with End_of_file -> eprintf "The %s file does not contain a version number\n" file; flush stderr; exit 1 in close_in inx; if Lm_string_util.contains_any version "()$\" " then version else if (String.contains version '-') then let dash = String.index version '-' in let release = String.sub version (dash + 1) ((String.length version) - dash - 1) in sprintf "%s (release %s)" (String.sub version 0 dash) release else version ^ " (development snapshot)" (************************************************************************ * File copying. *) (* * Copy a file from input to output. *) let rec copy_file buf inx = let rec copy () = let line = input_line inx in output_string buf line; output_char buf '\n'; copy () in try copy () with End_of_file -> () (************************************************************************ * Magic numbers. *) type magic = MagicBegin | MagicEnd | MagicNone type magic_mode = MagicIdle | MagicStart | MagicScanning (* * Figure out if the line is a magic directive. *) let buf = Buffer.create 200 let magic_line_type line = let len = String.length line in let rec loop mode i = if i <> len then let c = line.[i] in if c = '%' then match mode with MagicIdle -> loop MagicStart (succ i) | MagicStart -> loop MagicScanning (succ i) | MagicScanning -> () else begin if mode = MagicScanning then Buffer.add_char buf c; loop mode (succ i) end in let () = loop MagicIdle 0 in let code = Buffer.contents buf in Buffer.clear buf; match code with "MAGICBEGIN" -> MagicBegin | "MAGICEND" -> MagicEnd | _ -> MagicNone (* * Copy magic data from some files. *) let copy_magic_file outx filename = let inx = try open_in filename with Sys_error _ -> eprintf "Can't open %s\n" filename; flush stderr; exit 1 in let rec copy magic_flag = let line = input_line inx in match magic_line_type line with MagicBegin -> copy true | MagicEnd -> copy false | MagicNone -> if magic_flag then begin output_string outx line; output_char outx '\n' end; copy magic_flag in try copy false with End_of_file -> close_in inx let digest_files filename code filenames = let outx = try open_out_bin filename with Sys_error _ -> eprintf "Can't open temporary_file %s\n" filename; flush stderr; exit 2 in let digest = List.iter (copy_magic_file outx) filenames; close_out outx; Digest.file filename in String.escaped (code ^ digest) (************************************************************************ * omake_magic.ml file. *) (* * Save the date in the version string. *) let wday_names = [|"Sun"; "Mon"; "Tue"; "Wed"; "Thu"; "Fri"; "Sat"|] let mon_names = [|"Jan"; "Feb"; "Mar"; "Apr"; "May"; "Jun"; "Jul"; "Aug"; "Sep"; "Oct"; "Nov"; "Dec"|] let digest_len = 4 + String.length (Digest.string "hello world") let shorten_version s = if Lm_string_util.contains_any s " -" then String.sub s 0 (Lm_string_util.index_set s " -") else s let omake_magic buf = let libdir = match !libdir with Some s -> Filename.concat s "omake" | None -> Filename.concat (Filename.dirname (Unix.getcwd ())) "lib" in let version = read_version () in let now = Unix.time () in let { Unix.tm_year = year; Unix.tm_mon = mon; Unix.tm_mday = mday; Unix.tm_wday = wday; Unix.tm_hour = hour; Unix.tm_min = min; Unix.tm_sec = sec } = Unix.localtime now in fprintf buf "let default_save_interval = %F\n" !default_save_interval; fprintf buf "let input_magic inx = let s = String.make %d ' ' in really_input inx s 0 %d; s\n" digest_len digest_len; fprintf buf "let output_magic = output_string\n"; fprintf buf "let cache_magic = \"%s\"\n" (digest_files ".cache.magic" ".odb" !cache_files); fprintf buf "let ir_magic = \"%s\"\n" (digest_files ".omc.magic" ".omc" !omc_files); fprintf buf "let obj_magic = \"%s\"\n" (digest_files ".omo.magic" ".omo" !omo_files); fprintf buf "let lib_dir = \"%s\"\n" (String.escaped libdir); fprintf buf "let version = \"%s\"\n" (String.escaped (shorten_version version)); fprintf buf "let version_message = \"OMake %s:\\n\\tbuild [%s %s %d %02d:%02d:%02d %d]\\n\\ton %s\"\n" (String.escaped version) wday_names.(wday) mon_names.(mon) mday hour min sec (year + 1900) (String.escaped (Unix.gethostname ())); flush buf (************************************************************************ * OMakeroot file. *) let omake_root buf name = let version = shorten_version (read_version ()) in let version = if Lm_string_util.contains_any version "()$\" " then sprintf "$'''%s'''" version else version in let inx = open_in name in fprintf buf "#\n# Required version of omake\n#\nOMakeVersion(%s, %s)\n\n" version version; copy_file buf inx; fprintf buf "\n"; close_out buf; close_in inx (************************************************************************ * Main function. *) let main () = Arg.parse spec anon usage; let buf = match !output_file with Some name -> open_out_bin name | None -> raise (Invalid_argument "use the -o option to specify an output file") in if !make_magic then omake_magic buf else match !make_root with Some name -> omake_root buf name | None -> Arg.usage spec usage; exit 2 let _ = Printexc.catch main () (* * -*- * Local Variables: * End: * -*- *) omake-0.9.8.5/src/magic/OMakefile0000664000152300015230000000466710615471254014603 0ustar jyhjyh# # Calculate magic numbers for various binary formats # OCAMLINCLUDES[] += ../libmojave # # Magic number generator # OCAML_LIBS[] = ../libmojave/lm MakeOCamlProgram(omake_gen_magic, omake_gen_magic) ######################################################################## # Scanning files for magic numbers. # CACHE_MAGIC_FILES[] = ../libmojave/lm_filename_util.ml ../libmojave/lm_hash.ml ../libmojave/lm_location.ml ../libmojave/lm_map.ml ../libmojave/lm_position.ml ../libmojave/lm_set.ml ../libmojave/lm_symbol.ml ../ir/omake_value_type.ml ../ir/omake_cache.ml ../ir/omake_cache_type.ml ../ir/omake_node.ml ../env/omake_command_digest.ml OMC_MAGIC_FILES[] = ../libmojave/lm_filename_util.ml ../libmojave/lm_hash.ml ../libmojave/lm_location.ml ../libmojave/lm_symbol.ml ../libmojave/lm_map.ml ../libmojave/lm_set.ml ../ir/omake_node.ml ../ir/omake_ir.ml OMO_MAGIC_FILES[] = ../libmojave/lm_filename_util.ml ../libmojave/lm_hash.ml ../libmojave/lm_lexer.ml ../libmojave/lm_location.ml ../libmojave/lm_map.ml ../libmojave/lm_parser.ml ../libmojave/lm_position.ml ../libmojave/lm_set.ml ../libmojave/lm_symbol.ml ../ir/omake_value_type.ml ../ir/omake_cache_type.ml ../ir/omake_ir.ml ../ir/omake_node.ml ../env/omake_env.ml GENMAGIC_DEPS[] = $(CACHE_MAGIC_FILES) $(OMC_MAGIC_FILES) $(OMO_MAGIC_FILES) $(VERSION_TXT) MAGIC_FILES =\ --cache-files $(CACHE_MAGIC_FILES)\ --omc-files $(OMC_MAGIC_FILES)\ --omo-files $(OMO_MAGIC_FILES) # # Generate the file # omake_magic.ml: omake_gen_magic$(EXE) $(GENMAGIC_DEPS) ./omake_gen_magic -o $@ --lib $(LIBDIR) --version $(VERSION_TXT) --default_save_interval $(DEFAULT_SAVE_INTERVAL) --magic $(MAGIC_FILES) MakeOCamlLibrary(magic, omake_magic) clean: $(CLEAN) omake_magic.ml .*.magic omake_gen_magic$(EXE) omake_gen_magic.opt omake_gen_magic.run ######################################################################## # Generate the Makefile # MAKEFILE_TEXT += $""" GENMAGIC_DEPS = $(basename $(GENMAGIC_DEPS)) MAGIC_FILES =\ --cache-files $(basename $(CACHE_MAGIC_FILES))\ --omc-files $(basename $(OMC_MAGIC_FILES))\ --omo-files $(basename $(OMO_MAGIC_FILES)) omake_magic.ml: omake_gen_magic$$(EXE) $$(GENMAGIC_DEPS) $$(DOT)omake_gen_magic -o $$@ --version version.txt --magic $$(MAGIC_FILES) """ MakeDontLink(omake_magic.ml) MakeMakefile() omake-0.9.8.5/omake.spec0000664000152300015230000000415410657163345013121 0ustar jyhjyh%define index 3 Version: 0.9.8.5 Release: %{index}%{?dist} Summary: The omake build system. Name: omake URL: http://omake.metaprl.org/ Source0: %{name}-%{version}-%{index}.tar.gz License: GPL Group: Development/Tools BuildRoot: %{_tmppath}/%{name}-root BuildRequires: ocaml >= 3.09.2, make, fam-devel, readline-devel, ncurses-devel %define debug_package %{nil} %description OMake is a build system, similar to GNU make, but with many additional features, including: - Support for large projects spanning multiple directories; - Support for commands that produce several targets at once; - Fast, accurate, automated dependency analysis using MD5 digests; - Portability: omake provides a consistent interface on Win32 and on Unix systems including Linux, OSX, and Cygwin; - Builtin functions that provide the most common features of programs like grep, sed, and awk; - Active filesystem monitoring, where the build automatically restarts whenever you modify a source file. %prep %setup -q %build INSTALL_ROOT=$RPM_BUILD_ROOT\ PREFIX=%{_prefix}\ BINDIR=%{_bindir}\ LIBDIR=%{_libdir}\ make all %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT%{_bindir} mkdir -p $RPM_BUILD_ROOT%{_libdir}/omake INSTALL_ROOT=$RPM_BUILD_ROOT\ PREFIX=%{_prefix}\ BINDIR=%{_bindir}\ LIBDIR=%{_libdir}\ make install chmod +w $RPM_BUILD_ROOT/%{_bindir}/* %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %doc LICENSE LICENSE.OMake doc/txt/omake-doc.txt doc/ps/omake-doc.ps doc/ps/omake-doc.pdf doc/html CHANGELOG.txt ocamldep/LICENSE.ocamldep-omake %attr(555,root,root) %{_bindir}/* %{_libdir}/omake %changelog * Thu Dec 11 2006 Aleksey Nogin [0.9.8-1] - Updated for the new doc file list and the lack of the man pages. * Thu Aug 16 2005 Aleksey Nogin - Updated to account for the new non-autoconf build style. * Mon Sep 9 2004 Aleksey Nogin - Added doc files. * Thu May 8 2003 Jason Hickey - Added cvs_realclean * Tue Apr 22 2003 Aleksey Nogin - Path updates * Tue Apr 22 2003 Jason Hickey - Initial build. omake-0.9.8.5/ocamldep/0000775000152300015230000000000010660137222012716 5ustar jyhjyhomake-0.9.8.5/ocamldep/ocamldep-omake0000775000152300015230000105350110537325576015545 0ustar jyhjyhTß)*VD C 2" @(()*…c( `¨ „5?[o n2$ ]()* ^ž()* ^ž()* ^Ÿ()* ^¢(]¤(]™()* ^›(]¦(]¦(]§(]K()* ^©(]«(]™(]˜()* ^›()* ^£(]¥(]š()* ^ª(]¬(]š(c!]Ö(cC%c!c%C +óÿÿÿI( ]Ç ]È h haÒ()* &c!](c!]O(]%g ^ž]("g ^ž](!&!&&^ž(g ^ž]("g ^ž](!&!&&^ž(Y]˜Z(h()*VD C ]Ç ohaÒ o2' ()*]­ „V  ]È'5?[ˆ)ÿÿÿÿ]È ÿÿÿÿh `¨c]¦cVnÿÿÿÿ @ ]È'(m]È mh `¨co @2&,ÿÿÿ ,œÿÿÿch &)*‡‡  ]Ço }V5 % $)*‡‡  ]Ço }V5 % `¨(h6'h6')* _×]”(Y]ZThY]˜Z(h(]]˜()*c _()*‡‡  ]Ço }V5% `¡()*]Çh `¡(VD C Y]ZTh2%c(,ãÿÿÿc]– %l¶6'l¶6')* _×]•(6^% ~V5&^É ‡0†: T „-T(2%]Ç ,Ïÿÿÿc %6^P(5 ^ÌV5 ^ÌV5%d(c(V5(5(‡ˆÿ5%()*]Ç ]Ç n]È h haÒ haÒ(gÿÿÿÿ u(‡(m()* ^V(()* ^V((6@[6@[+øÿÿÿ +îÿÿÿ6? +Øÿÿÿ +Åÿÿÿ +µÿÿÿ +«ÿÿÿliv„gTg>iv ÿÿÿÿ6]~6]~6]~6 ]~6!]~6"]~ +^ÿÿÿ+Hÿÿÿ +9ÿÿÿ+ÿÿÿ +ÿÿÿ :+üþÿÿ +Èþÿÿ ,ºûÿÿc]”i]•j]• +«þÿÿ +žþÿÿ +’þÿÿ +„þÿÿ +Zþÿÿ+4þÿÿ +&þÿÿ +þÿÿ +ÿýÿÿ +ðýÿÿ +äýÿÿ +Ùýÿÿ%+´ýÿÿ ,Œûÿÿ(+ˆýÿÿ +týÿÿ +èüÿÿ+Ýüÿÿ +Ñüÿÿ+Áüÿÿ+±üÿÿ+œüÿÿ+üÿÿ+‚üÿÿ+vüÿÿ"+füÿÿ +Vüÿÿ+Aüÿÿ+2üÿÿ !+"üÿÿ +üÿÿ + üÿÿ :,+þûÿÿ +èûÿÿ? +Õûÿÿ +Åûÿÿ +¹ûÿÿ 6#^é.  + ûÿÿ +—ûÿÿ +‹ûÿÿ +ûÿÿ +xûÿÿ +lûÿÿ> +\ûÿÿ +Pûÿÿ +Gûÿÿ +>ûÿÿ +2ûÿÿ +(ûÿÿ +ûÿÿ +ûÿÿ),* +ûÿÿ213 +õúÿÿ79 +çúÿÿ +Þúÿÿ +Òúÿÿ> +Ãúÿÿ +¶úÿÿBD +¥úÿÿG +™úÿÿLKM02468:<>@BDFHJL_acegkmoqsuwy{}ƒƒƒ‡‰‹>QB9$T)*V D 2&()*|V  $eq o  n n2  n2  n n$ )*cÿÿÿÿ }UH\ n^ nÿÿÿÿ? T\C^ C_€ÿÿÿÿ C~V  C^"…àÿÿÿc C_ zUºÿÿÿc()* "…._ {V ^2$ o$ _ {V ^ 2$ o$ )* nn  ,‰ÿÿÿ ^^$)* +Óÿÿÿ +ÿÿÿ ,ÇþÿÿO |V hh$ e q oh^ ^  h   h c h $)* " ^"ˆ^ _ 2' _()*Y #Z( CyV D _([)* " ^ _ 2&)*f ÿÿÿÿq zVcT5%6 @[ ^"†^ _ˆ 2&h_( _()*Y"Z( CyVD ([)* nn ? {V0^ ^"h}V I^ C^"h}V IC( {V^ ^"†( {V(@[)* +Žÿÿÿ ,Öþÿÿ,õþÿÿ, ÿÿÿ+\ÿÿÿ,ÿÿÿOk qÿÿÿÿh {U\ ^  # ÿÿÿÿzUìÿÿÿcÿÿÿÿj {U%\ ^h ^  _h"" ÿÿÿÿzUÝÿÿÿci{Vd ^h ^i _h _( )*? Oÿÿÿÿh {U\C ^ " I ÿÿÿÿzUìÿÿÿcC()*?hOÿÿÿÿ }U\^ C" I zUìÿÿÿcC()*VD C _  2&(VD C h"^ ,Öÿÿÿi &:()*†( ^ @ ÿÿÿÿ2&,æÿÿÿc Oÿÿÿÿ &)*O „:(c ^ h " ^ i ÿÿÿÿ }U\^ " _  zUëÿÿÿc()*c Oÿÿÿÿ }U\^ " zUïÿÿÿc()*O „:(c ^ ! ^ i ÿÿÿÿ }U\^ ! _  zUìÿÿÿc()*c Oÿÿÿÿ }U\^ ! zUðÿÿÿc()*‡‡ Oo }U ‡  Oo}V5&8$% {V$ÿÿÿÿh {U\n ^ n_  ÿÿÿÿzUêÿÿÿc(cÿÿÿÿ }U\n ^ n_  zUêÿÿÿc()*‡ ‡  Oo }V5'8$% nÿÿÿÿ }U\ _  zUñÿÿÿc()*‡ ‡  Oo }V5(8$%„:( ^ ^ iÿÿÿÿ }U\n^ _  zUìÿÿÿc(VD C Oˆ h ^ &2%:(,àÿÿÿ %)*V D C On2&()*V/D Ch Oÿÿÿÿ }U\ ^ n_  zUìÿÿÿc On2&c()*,¯ÿÿÿ h "^ ,¸ÿÿÿh "()*O O „„:(c ˆT^ n^ h ÿÿÿÿ }U\^ _  zUîÿÿÿcc ÿÿÿÿ }U\^  n_  zUìÿÿÿc(O „:(c ^ ^ i ÿÿÿÿ }U\^ _  zUîÿÿÿc()*: ^ h ÿÿÿÿ }U\^ Q zUïÿÿÿc()*„:(c ! ^ i ÿÿÿÿ }U\! _  zUïÿÿÿc(+Îÿÿÿ +¢ÿÿÿ +jÿÿÿ +ÿÿÿ +äþÿÿ +‰þÿÿ +þÿÿ +ãýÿÿ +nýÿÿ +Iýÿÿ + ýÿÿ +æüÿÿ +§üÿÿ +•üÿÿ ,§øÿÿ+Züÿÿ +üÿÿ +âûÿÿ6)? +=ûÿÿl  +Âùÿÿ  ! #&(*>9*Tû)*V D 2&()*VD C „(ˆÿÿÿÿ 2&5+8$%5,8$%)*V D C @ 2&(VD C 2! 8$&c()*VD C ! 2" @(c()*V D C ! 2&c()*VD C "2'()*VD C 2# &()* VVD C DC "  2# @( Uc(5-8$%)* VVD C DC " 2' Uc(5.8$%)* VVD C DC    # 2$U(5/8$%)* VV!D C DC    2   ' U(508$%)*VD C !V 2&(d()*VD C !U 2&(c()* VVD C DC "V 2' ( Ud(518$%)* VVD C DC "U 2' ( Uc(528$%)*VD C ^hyU 2&(c()*VD C yU 2&(c()*VD C D C ^„(2&5?[)*VD C D C yV(2&5?[)*VD C C ^hyU2&(c()*VD C C yU2&(c()*VD C C ^„(2" @(c()*VD C C yV(2" @(c()*VD C !V( 2&5?[VD C D C 2! D C @ @@(53()* VVD C DC 2" @@(Uc(548$%)* V0V)D C DC "…  2# @( 2# @(  ( ()*„(V D ÿÿÿÿ2&556 @[)* V/V&D C DC "…  @ 2'  @2'  & &)* V/V&D C DC "ˆ  @ 2'  @2'  & &)* ƒ„´V±D V€D VwC CC "…5 "… c @ @ @(  "… c @ @ @( c @ @ @(  "… c @ @ @(  "… c @ @ @( c @ @ @( T-T)V&D VC C "… c @ @(c @ @( i x o " 3" 3"h ')* ƒ‹„®V«D V{D VrC CC "ˆ3 "ˆ c @ @ @(  "ˆ c @ @ @( c @ @ @(  "ˆ c @ @ @(  "ˆ c @ @ @( c @ @ @( T,T(V%D VC C "ˆ c @ @(c @ @( i x o " 1" 1"h ')*,Òýÿÿ,þÿÿ ,<þÿÿÿÿÿ! †( & )*VD C !V  @2' @2'! !@()*,Îÿÿÿhh ')*VD C !V  @2& 2&%,Üÿÿÿc %)* VVD C DC "@2' U(568$%)*,Íÿÿÿ h ')*VD C !@2&()*,ãÿÿÿh &c &VD (578$%VC (588$%h&,ùÿÿ+ôÿÿÿ +áÿÿÿ +Îÿÿÿ ,ùÿÿ7$ ,'ùÿÿ+¸ÿÿÿ ,2ùÿÿ ,@ùÿÿ+žÿÿÿ ,Qùÿÿ,bùÿÿ,tùÿÿ,†ùÿÿ+eÿÿÿ ,®ùÿÿ,Öùÿÿ,úÿÿ,/úÿÿ,Dúÿÿ,Yúÿÿ,…úÿÿ,±úÿÿ,Éúÿÿ,Þúÿÿ,üúÿÿ,ûÿÿ,2ûÿÿ,Iûÿÿ,gûÿÿ,ƒûÿÿ+çþÿÿ +³þÿÿ ,Žûÿÿ,­ûÿÿ,Õûÿÿ, üÿÿ"(+Hþÿÿ    !#%')+-/24379<>=BBFHGKMOQ>)+99T¼)* o(‡aˆz‡àˆö ‡ø …þàÿÿÿ((‡AˆZ‡ÀˆÖ ‡Ø …Þ ((‡'ƒ\ †(5:(5;(ƒ „ 5<(5=(]ÔV d]È h S(l]Èl\h Sgd ql0ni Sg l qrl0nj Sg rl0nk S(‡ˆÿ5>8$%(+ìÿÿÿ +‡ÿÿÿ +cÿÿÿ +?ÿÿÿ +4ÿÿÿ >9?TÉ)* ~V5?[ RyV(  2$)*†5?[ RyV( ÿÿÿÿ 2')* ^()*h ')*‡]Ç ~V5@8$%Y #cdZ(6 CyVc([)*‡]Ç }V5A8$%Y   ]Ç  cdZ(6 CyVc([)*‡ÿÿÿÿ]Ç ~V5B8$% ')* ]Çÿÿÿÿ ')*‡]Ç }V5C8$% ]Ç $)*h ]Ç $8?&8?&)*]Ç„(!h R !h S(8?&8?&)*]Ç „(]Èh ÿÿÿÿ }U\R! S zUîÿÿÿc(c?h ]Çÿÿÿÿ }UM\R ÷ÿÿÿ ‹þÿÿÿ ŒT%TT ƒST TT]ÔVdTgTe Cn I zUµÿÿÿc]Ç CyV(C]Èh Ic ]Çÿÿÿÿ }U¡\R ‡" ƒ\x†#-Trƒ „ #g\CS€gnCSTgg\CS€gtCSTV ]ÔVCST7l\CS€gd ql0nCS€g l qrl0nCS€g rl0nCSTg\CS€CS€ zUaÿÿÿc(]ÇChaÒ]ÇCnI]ÇChaÒ]ÇCnI(€]ÇCnI()*V?D Ch?h? +Þÿÿÿ89 "Cÿÿÿÿ]Çp Cn]È ]Çh haÒ]Ç?  +‘ÿÿÿ89 "(5D()*c ]Çÿÿÿÿ }U\R ! zUñÿÿÿc()*‡‡ ]Ço }U‡  ]Ço}V5E8$%aÒ()*‡‡  ]Ço }V5F8$% `Ó()*‡‡  ]Ço }V5G8$%]È h aÒ(]Ç ]È h haÒ()*]È h `Ó(+ðÿÿÿ +Ûÿÿÿ +°ÿÿÿ +‰ÿÿÿ +Tÿÿÿ +/ÿÿÿ +ãþÿÿ +‹ýÿÿ +Výÿÿ +Jýÿÿ +?ýÿÿ +!ýÿÿ +ýÿÿ + ýÿÿ ,ýûÿÿ+õüÿÿ +Òüÿÿ ,üÿÿ+¼üÿÿ +üÿÿ+büÿÿ +1üÿÿ +$üÿÿ +üÿÿ     "$&(*>9HT!?[V +öÿÿÿ?&c&)* ^Æc(c]ß D Ch]ã D C öÿÿÿivÿÿÿÿ lqpÿÿÿÿh? +Ôÿÿÿlÿÿÿÿlþÿÿÿlýÿÿÿlüÿÿÿlûÿÿÿlúÿÿÿlùÿÿÿløÿÿÿl÷ÿÿÿlöÿÿÿlõÿÿÿlôÿÿÿlóÿÿÿlòÿÿÿlñÿÿÿlðÿÿÿlïÿÿÿlîÿÿÿlíÿÿÿlìÿÿÿlëÿÿÿ6I? +‹ÿÿÿ6J    "$&(*,.044886=?> "9KT0)*VE D C ^„(2&5?[)*VE D C C"V(2&5?[VE C C"U2%(c()*,áÿÿÿDO !r D^ %VE D C C"V A(2! A(5?[)* ,ÒÿÿÿDO !r D^ Y ! D_Z(6 CyV"A D_CIdDOvC}V& ([VE D C C"V 2! @(2%c()*,ÙÿÿÿDO !r D^ %)*DO !r D^ VIE D C C"V(V1E DC  C"V( VE DC  C"V(  &5?[5?[5?[V E D C C"V CÿÿÿÿI(2! A(c()* ,ÒÿÿÿDO !r D^ ! D_()*DO !r D^A D_C Id DOv C}V&(7$ D!s( +ðÿÿÿ +»ÿÿÿ +—ÿÿÿ,þÿÿ +ÿÿÿ +ëþÿÿ +uþÿÿ +3þÿÿ   > ()*VE D C # 2&()*,âÿÿÿD?h Oÿÿÿÿ }U\C ^" I zUìÿÿÿcC(VE D C "2%c()*,åÿÿÿDh Oÿÿÿÿ }U\ ^! zUðÿÿÿc(VE C ^hyU2%(c()*,áÿÿÿDO !r D^ %VE D C ^„ A(2! A(5?[)* ,ÓÿÿÿDO !r D^ Y ! D_Z(6 CyV"A D_CIdDOvC}V& ([VE D C ^„ 2! @(2%c()*,ÚÿÿÿDO !r D^ %)*DO !r D^ VIE D C ^„(V1E DC  ^„( VE DC  ^„(  &5?[5?[5?[V E D C ^„ CÿÿÿÿI(2! A(c()* ,ÓÿÿÿDO !r D^ ! D_()*DO !r D^A D_C Id DOv C}V&(VE D C 2! !r ^ A _(c()*D O8K jp8$" zV.c ^ ,¼ÿÿÿcÿÿÿÿ }U\^ ! zUðÿÿÿcJ(C(D8*! C@(c DOÿÿÿÿ }U\c D_ zUðÿÿÿcc I(7K i8$"8$"h ^ h@(ldl _J(+õÿÿÿ +Ûÿÿÿ +³ÿÿÿ +£ÿÿÿ +›ÿÿÿ +Qÿÿÿ +úþÿÿ+Øþÿÿ ,®úÿÿ +Jþÿÿ +/þÿÿ +¼ýÿÿ +|ýÿÿ +8ýÿÿ +íüÿÿ   +tüÿÿ     >9LT5)* ^(6M^b(5N ^Y(5O ^V(]Q(5P ^S(5Q ^R(5R6S6T +ðÿÿÿ +åÿÿÿ +Òÿÿÿ6U6V +Ãÿÿÿ +¸ÿÿÿ +¬ÿÿÿ   >  9WT5)* ^(6X^{(5Y ^n(5Z ^V(]f(5[ ^h(5\ ^g(5]6^6_ +ðÿÿÿ +åÿÿÿ +Òÿÿÿ6`6a +Ãÿÿÿ +¸ÿÿÿ +¬ÿÿÿ   >  9bT5)* ^(6c^’(5d ^‡(5e ^V(](5f ^(5g ^€(5h6i6j +ðÿÿÿ +åÿÿÿ +Òÿÿÿ8K ÿÿÿÿ6k^ˆ6l ^ +¸ÿÿÿ +­ÿÿÿ +¡ÿÿÿ   >  9mTKc Mc LG h E D C> M c K(G (G (G F(G F()* Gn D^É()*‡  D^É?(c()* D^É()*‡ o ]È h DaÒ?(c()* o ]È h DaÒ(G Go ]È h GDaÒ(d M( :ihhhhh ]Ç6n 8$" +áÿÿÿ> ()*h 8$>$+ñÿÿÿ% :hhhhhhhl]Èl]È "> ()*]Ç " ˆTdMcD]Ç En}V¼D]Ç GEon|VGEoh D G D8H TB7KD]Çjp8$" GEon}V5o8$!]È  G Eoh G D8H JG FnLGoMcMGoMEoKG h Oÿÿÿÿ }U\ ^ h|V o _ zUäÿÿÿcE Dh 8H EnK()* _¯ h|VG M G GFn E D C>M ()* _® h|VG M G GFn E D C>M (5p +Ïÿÿÿ +žÿÿÿ +¦þÿÿ6q +‚þÿÿ +wþÿÿ +Gþÿÿ +&þÿÿ +þÿÿ +îýÿÿ +àýÿÿ +Éýÿÿ +·ýÿÿ +¬ýÿÿ +¢ýÿÿ +™ýÿÿ +ýÿÿ +nýÿÿ    ">9rTòc(C%!F(!F(c!F(c!F(G oG oF^(G oG oE^(G F^(G ˆG G oE^(G F^()* G o D^()* `Å W"*2_!G MG M i2&?[c!cj2&c!ck2&YG C^!l@ZT CyVcl@T[ D C 2&5sG !cl2&]¼V  ]½E^y( D^y()* ,bÿÿÿG G GGGGG MM G M Y ch "Z( GM M MMMM CyVD ( +~ÿÿÿI[c( cGhD8* cM(Gj ph ^ h ^ 8r ^ 8r^ hhC8* I hhD8* J hhE8* K hhF8* LM(5t?6u?hhhhhh8r8rhhhld8rld^ 8rld^ hld^ hld^ > +cÿÿÿ +Kÿÿÿ +Dÿÿÿ?  +Ëþÿÿ +'þÿÿ+þÿÿ+÷ýÿÿ+äýÿÿ+Ðýÿÿ +Æýÿÿ +¼ýÿÿ +²ýÿÿ +¨ýÿÿ +žýÿÿ +—ýÿÿ    >9vTò! G G! G GG GGGG G G G G GGGGGGGFG G G >()*V)E D C C" „(†  2"' 2" ' dh h>()* VJVBF E D CFEDC}V   2# '}V 2#'   '&&VC V2%D (5?[VE D V2%(5?[VC V E D 2!'E (5w8$%)*VGE D C C" „i A(†2" E D C# A( 2" E D C   #A( 5x()*VE D C C" hyU †T2&(c()*V+E D C C" „ &†  2"' 2" ' c()* V_VXF E D CFEDC~V „ & " E C 2" 2"'„ & " E C 2"  2"' ( ()* V8V2 E DC " D C ƒ E 2" 2"'E 2" 2"&c(c()* V8V1 E DC " D C ƒ E 2" 2"&E 2" 2"' (c()*VE D C A 2&()* V*V$E D CEDC C" ƒ( ""2& d(Vgÿÿÿÿ(c()* VTVN E D CEDC C" „ 2"V2&( †hh>2"V2&( hh>2"V 2&( c(d()*VE D C 2"!2&c()*VE D C 2# " 2' ()*VE D C !V 2"V2&(d()*VE D C !U 2"U2&(c(VE C 2! 2!n(c()*VE D C 2" @2&(h&)*D C V#EDC !V "@T"@2"2& ()*,Êÿÿÿ6y &)*VE D C !V"T2"2&()*,×ÿÿÿh &)* "hy()*c "h "&dh h>(Vc(d()* VV !!' ( ()* VV !!' ( ()*VF Tc VF Tc  }VDV:E DC ! !~V # ' VE DC  # #'5z8$% 5{8$% }VFV<EDC ! !~V    #' VE D C#   #'5|8$% 5}8$% ~VT>()*VF Tc VF Tc ~VT>(VF (c(+óÿÿÿ +Âÿÿÿ +ùþÿÿ ,Qúÿÿ ,úÿÿ,Òúÿÿ,äúÿÿ,õúÿÿ +¼þÿÿ +™þÿÿ ,ûÿÿc +ƒþÿÿ ,Hûÿÿ+qþÿÿ ,cûÿÿ ,ûÿÿ,îûÿÿ ,'üÿÿ,eüÿÿ,vüÿÿ +0þÿÿ +!þÿÿ,¢üÿÿ,üüÿÿ,ýÿÿ,+ýÿÿ,Hýÿÿ+øýÿÿ+Âýÿÿ ,Yýÿÿ,kýÿÿ+€ýÿÿ    "$&(*,.02468:<>@B>"(#+ ÿÿÿ + ùÿÿ?9~T})* {Vc^É ƒ$1 „\g\"" 2&ƒ\ " 2& 2&„\ " 2&" D C !"l 2&()*]Ç ,„ÿÿÿcl &)* ^É ƒ(ƒ{ "  o8H#@(  h!   oÿÿÿÿ 8H#@()* ~V(^É †_‡:¿ÿÿÿ ŒTeTd†0`T[‡{S‡ÀS@ÿÿÿ W@@@@DDDD@@@@@DD@@DDDD@DDDD@D@@DDD@@@DDDD@@@@@DD@@DDDD@DDDD@D@@DDDT T„`( 2&)*,jÿÿÿ]Ç &)* ~V5?[ ^ÉyV   2' ^ÉyV„(  ÿÿÿÿ2'  2')* ,¸ÿÿÿ]Ç ' ƒ(ƒ{56 @[g}(g)()*Dh C 8$/$)*E Dn}V " DC8$?  Dn J()*Dh C $)*]Ç Dn E }V "DCh 8H  J()*h}U h}U ]Ço }V5€8$! Dn E }V "DC  8H  J()*D E ~Vd " C_Ê J()*E ? T\Cjp ICDn}Uñÿÿÿc7K C}V7KDn|V7K IT58$!C]È Dhh C8H ICK(c JF IC]Ç K(c J(D()*‡D ~V5‚8$% C^É()*‡ ‡  Do }V5ƒ8$%]È hC8H (Dh C8H'†dT8K }V7KT ]È h >(+Ýÿÿÿ +Ïÿÿÿ +œÿÿÿ +}ÿÿÿ +tÿÿÿ +kÿÿÿ +Xÿÿÿ +ýþÿÿ +Ýþÿÿ +šþÿÿ +nþÿÿ +]þÿÿ+4þÿÿ +!þÿÿ +þÿÿ +ðýÿÿ +ýÿÿ +Áüÿÿ  +¢üÿÿ   >9„T¯ ( +ùÿÿÿ&c(! +öÿÿÿ8„8„i$)*! %8„! 8„!(]Çjp 8„%c( +øÿÿÿ&(c()* +õÿÿÿ8„8„+èÿÿÿh$8$&8$&c( +øÿÿÿ&()*8$+8$.8$-+íÿÿÿh$)* ~V%R ƒ%" 2&0 4443 $ )*" 1&)* V h " "T " 4üÿÿÿ&)*V c !  "T ! 4úÿÿÿ&)*  ! 4øÿÿÿ&&)* !" 4öÿÿÿ+èÿÿÿ $)*]Ç 2, <ÿÿÿtÿÿÿ‚ÿÿÿŸÿÿÿºÿÿÿÍÿÿÿc & )* ! ,Èÿÿÿc " & )* $)* 3+îÿÿÿ  $)* "  @"$)* R àÿÿÿ ŒT=W"T$T2 +§ÿÿÿ   $ 3$ 2$ )* R †|åW|ááááááááááááááááááááááááááááááááá|ááá„ááŽáááááááááááááááááááááááá«0ᇘ‡ááááÁá`ááááéáááá`ááááááá᮫0`‡‡‡á`ááÁáÁ`áááéÏ`áá`áá &6… '6† ' " 8$! " '  "  "! h"  "$  "  "'  '  " „sT5‡ 8H!8$"6ˆ8$" yVT       "  " ' " „c i8H"T5‰ 8?!8$"6Š8$"  " ' "       ^P  " '  "      ^  " '  " 8$! " '  R ¨ÿÿÿ Œ T+W!!%%%%%%%%%%%!%%%%!%%%%%!%%%%%!%%!T,"     ln ^P  " '  ”ÿÿÿ ŒTCW!"      ^bTT"      ^’TT"      ^{   " ' "  # „{ ! " '  "' )* "^()* +íÿÿÿ         ,_üÿÿ‹üÿÿëüÿÿh')*VC (()*V(%)*R ‡0†:) Ðÿÿÿ l pn2&„$„5‹8$% !?&h&)* R Ðÿÿÿ Œ h&,­ÿÿÿ Ðÿÿÿ & )*cl^ h _i _j _k _l _l _& )*cl^ h _i _j _k _l _&)*cl^ h _i _j _k _&)*ck^ h _i _j _&)*cj^ h _i _&ci^ h _& @&)* oÿÿÿÿ_()* ~Vc^ +àÿÿÿ"& 2+Èÿÿÿ()*! Œ ,Íÿÿÿch &W !(/: & +ÿÿÿ( +qÿÿÿ( +Oÿÿÿ( +'ÿÿÿ( +ùþÿÿ( +Åþÿÿ()*VD C " 2&c()*,âÿÿÿh &)*(„a C I(C I()*ƒ)„}(+Ùÿÿÿ V !T !(c?h? +Óÿÿÿ +³ÿÿÿ #C Cn()*V 5Œ8„"Tg%8„" &)*8„"(]Ç 8„! +èÿÿÿ +Èÿÿÿ #8„%)* }V%R ‡: „_Ji2&‡ ?àÿÿÿ W")44444444444T T 2&gi # 2&T  3& 2& 2&ÿÿÿÿ {V ^É "2%()* }V%R †~«W~§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§¯§§§¯§§~C§§§§§§§§§§§§§§§§§§§§§§§§Ô¼§ÌÌ̧§§§ã§Ä§§§§´§§§§Ä§§´§§§§§ÜÔ¼ÄÌÌ̧ħ§ã§ãħ§§´Üħ§Ä§§ˆ§C #3% #  # ,5ÿÿÿ !2& '(gs 'gc 'gi 'gf 'gB ' '  }V gi'^É ¨ÿÿÿ Œ T+W!!%%%%%%%%%%%!%%%%!%%%%%!%%%%%!%%!T gi' gi #& ' {V^É„% h4üÿÿÿ"2%2%()*]Çÿÿÿÿ ,ßýÿÿiþÿÿÍÿÿÿc !c(' ~V%^É ƒ%2%3% ~V%^É Øÿÿÿ Œ­ÿÿÿ ŒTW TTT ƒTT1% " 1% yV(')*„(g)Tg} 2,gÿÿÿ‡ÿÿÿ %)*]Ç ,Öÿÿÿ & )*  ƒNƒn(gu ]Çÿÿÿÿ _Ê()* |V;R ƒ* 8„"2&VD C 8$!8„"! 2& 56 @[(R ‡0 †:2%„$((R Ðÿÿÿ Œ (,Ñÿÿÿ %)*+áÿÿÿ  ! o 8„!l% 8„" ,dÿÿÿ89! "8„% )*! D C]Çhl $ )* yV„( |V 8H' 8H" V h  8H T  o  8H ()*]Ç ~Vh@(R ‡1†:  ]Çoÿÿÿÿ8H#]O@(„-i2& 2&,¼ÿÿÿYdh"Z(6 CyVgsh'[5Ž D!8$"68$"8$%)* D!')*5 8$"6‘8$" 8$!8$"6’8$" i8H"8$"6“8$"8$%ÿÿÿÿ()* n(]Çh ')* 8H'+ôÿÿÿ +çÿÿÿ @ +Öÿÿÿi ! +Éÿÿÿ +’ÿÿÿ +ÿÿÿ+gÿÿÿ +Eÿÿÿ +¶þÿÿ +šþÿÿ +dþÿÿ +Âýÿÿ +«ýÿÿ  +þüÿÿ  +Üüÿÿ +«úÿÿ +cúÿÿ +úÿÿ +¦ùÿÿ+øÿÿ+Bøÿÿ +0øÿÿ   + ä÷ÿÿ +<ôÿÿ +Qóÿÿ +Aóÿÿ +2óÿÿ +'óÿÿ+ óÿÿ +ùòÿÿ +æòÿÿ +Õòÿÿ +Éòÿÿ  +®òÿÿ +òÿÿ'   >$9”T"YKG! C E D h}V G G  G o{XV$ G!c †T # G n M  2!Z( CyVc([)*h{V…P h G'gPh G#°ÿÿÿ 2&(( +ùÿÿÿ&%"%g8„! +îÿÿÿ +äÿÿÿi'c( +øÿÿÿ&%)* +ôÿÿÿh'&&c( +øÿÿÿ&()* +öÿÿÿh')*?I! &)*- ~V0,%.^É ƒ%"ƒ@ 2! 2&- ~V.%&.^É ‡AY‡^-…ÿÿÿ ŒTäW 04' TÐc0"2&‡[¿¥ÿÿÿ W 04' T¨c0"2&ƒ Ї “àÿÿÿ W!!...........2.?............LV..gtc0!"2&T[c0""2&c0"2&04' 021+ïþÿÿ 4 ' c0"2&2!2&c0"2&.%&0 4443/.8” $ )*1! 1&)*&V h "/!T, " 4üÿÿÿ&)*$V c !-!T* ! 4úÿÿÿ&)*c(" 4øÿÿÿ&&)* 4öÿÿÿ+ñÿÿÿ!&)*&)*&)*&)*&)* #' ~V&^É ‡0†: T+„-T% yVcT oC# #  '2%)*! ~V"&"^É ƒ Rƒ% "!,‰ÿÿÿ %"+qÿÿÿ"+bÿÿÿ"+Sÿÿÿ"+Dÿÿÿ"+5ÿÿÿ   #"8” $   2' ~V & ^É ƒ ƒ> &(2% ~Vl@(^É ƒbxƒhƒvl@(i@( ~Vh@(^É ƒoƒvh@(j@( ~V 6•'^É ƒv i8H"6–8$"' k@(l@()*6—')*6˜')*%)*Vc !Tc +ëÿÿÿ"  @@$)*Vh "T " @@$ )* @@$)*~V oC#" '^É ƒ%#ƒ> 2$  oC#" 'oC# 2+›ÿÿÿ 2+rÿÿÿ 2+Gÿÿÿ+0ÿÿÿ+ ÿÿÿ 8” $ )*, bÿÿÿ h$)*3! ')* #! &)* ~V c  " 4ìÿÿÿ&^É ƒ< c  " 4ìÿÿÿ&4úÿÿÿ4øÿÿÿ4ìÿÿÿ ,°ÿÿÿ¼ÿÿÿ4øÿÿÿ' )* #! &)* ~V gh # 4êÿÿÿ&^É ƒ< gh # 4êÿÿÿ&4úÿÿÿ! D C 4øÿÿÿ4êÿÿÿ+³ÿÿÿ 4öÿÿÿ' )*"! &)* ~V 5™ " 4èÿÿÿ&^É ƒ< 5š " 4èÿÿÿ&4öÿÿÿ4èÿÿÿ+Âÿÿÿ 4úÿÿÿ'C VC #cI(&C VC i8H" #cI(&)*!h? +Òÿÿÿ +²ÿÿÿ        , úÿÿ`ûÿÿlûÿÿ‡ûÿÿ ûÿÿ´ûÿÿ:üÿÿ«üÿÿ×üÿÿdþÿÿ¡þÿÿñþÿÿFÿÿÿch&)*]Ç 2     +lÿÿÿ 8” &)*      ,˜ÿÿÿ()*V @89!6›8H&()*g8„! ! " &)*c "%8„! 8„!()*Y]OZT6 CyV "T[ ()* 6œ#8$%)* 6')* #8$%)*]Ç {V5ž ^Éi8H"8$"6Ÿ8$"Tg.i8H" 8$!8$"6 8$" D!8$"6¡8$" 8$"6¢8$&c"8„!8„!(c(+úÿÿÿ 8„ !&8$+%+÷ÿÿÿ 8$/!&c(c()* +õÿÿÿ +íÿÿÿ  ! M! M()*dh6£ G')*c!h6¤lÿÿÿÿ# " i@@ hh    6¥8$iiiihlNlNöÿÿÿl lNhhhh>(c(5¦ 8$"6§8$&5¨ 8$"6©8$&8$+%)*8$/! M+ìÿÿÿ M()*G G G G>(%c%)* #+ñÿÿÿ M+æÿÿÿ M()*G G@()* M M()*G()*i|V0! MG G|VGTdj Gq GGo8$"8$" &()*G()* Go &)*i|V! MG Go M%( {V(ÿÿÿÿ()*G()* M()*G G y()*G()*i{V M()*G G {V chh# &()*ch ')*G G {V @ G m# i '()*G i{VG G {Vcjh# "G ÿÿÿÿ M ()*G  M G G {Vch???h# &()*ch ')*ci ')*G G {V @ G m# i '()*G G {V clh# &()*G G {V ckh# &()*c "c G%)*d "c G%)*g ')*f ')*e ')*d ')*ch ')*d]È h _Êi ')*8$! &)*8$! &)*8$! &)* ]Ç ')* ')*G G {V '()*T\c "G …õÿÿÿc M !V!%!!c Jc Kc Lc Mc M c M G M%)*F E DC MMMM()*G G G G>()* " &)*G()*G()* M()* M()*GV clhA "GVF VD C G!L(c()*GV F @ L G!GV c ?hA &()*G i{V"G G {VcihA "d "c "G ÿÿÿÿ M (fh ')*G  M G G {Vc @ G m# h 'G G yVG &()* "Vd "C G @@ I()*C VRC D C CD D G {V% W""  XV  G nI I( c(  V  G nI I( c( I()*]Ç ')* ?# &)* A()* "%)*VD C ^V( 2&5?[)*VD C ^V @( 2" @(c @()*W ,@Obv’¦%‡ÁÌE VC C ,½ÿÿÿCGGo " I(c(D V D V J(c(E VD K(c(D V C D &%G Go G zV%(G VD C G! "M(c(C Go M "c M (D C D VtC D C W /d& ' ' G}V' & G V& G}V'  GonG }V' & & c(D C G Go E VPC C ,|þÿÿC V"C Y C "ZT6 CyVT[T o ‡  n & G n 'c(D C G Go G }V!Go ƒG}VTgTdD @@J(C E @ K(C G! "G @ M(G! C E G oM GnM(D V!C D CG }Vƒ ‡c(&c(%)* Go M &)*h ')*!d M  Gon G8$" M G Go MG &)* G%c G%)*]Çh G'd M d M G%)*E G n M G &D VC C D JhyVcI(?[D VC C (?[)*c @? C V C I J(IJ(c Ic J(ch@(g]ñ+ôÿÿÿ +èÿÿÿ +Åÿÿÿ6ª? +¬ÿÿÿ +‹ÿÿÿ +tÿÿÿ+aÿÿÿl Êš; +Oÿÿÿ +Dÿÿÿ +8ÿÿÿ +ÿÿÿ +øþÿÿ +äþÿÿ +µþÿÿ +•þÿÿ   +¡üÿÿ  ,~îÿÿ +Aüÿÿ +3üÿÿ +üÿÿ +üÿÿh6«lÿÿÿÿ#h lÿÿÿÿ@@ +ôûÿÿ +•ûÿÿ +sûÿÿ +5ûÿÿ +*ûÿÿ +øúÿÿ+Íúÿÿ+šúÿÿ +úÿÿ +€úÿÿ +túÿÿ +húÿÿ +Wúÿÿ +?úÿÿ +úÿÿ !+ïùÿÿ   #+Àùÿÿ+§ùÿÿ +šùÿÿ +‹ùÿÿ +{ùÿÿ +kùÿÿ +[ùÿÿ+Fùÿÿ+8ùÿÿ+*ùÿÿ+ùÿÿ+ùÿÿ+ÿøÿÿ +íøÿÿ +Ûøÿÿ"$+½øÿÿ#%+žøÿÿ%+xøÿÿ +køÿÿ +^øÿÿ')+1øÿÿ(*+øÿÿ#*+Ü÷ÿÿ +Ï÷ÿÿ+-+°÷ÿÿ +ž÷ÿÿ +’÷ÿÿ +‚÷ÿÿ +u÷ÿÿ +i÷ÿÿ=+V÷ÿÿ  +2÷ÿÿ +"÷ÿÿ +÷ÿÿ +Øöÿÿ +Ìöÿÿ +»öÿÿ +ªöÿÿ +Žöÿÿ +nöÿÿ +Vöÿÿ +=öÿÿ ++öÿÿ +$öÿÿ AEX[+Ëõÿÿl lP8H" ,míÿÿ+¯õÿÿ +‰õÿÿ +põÿÿ +[õÿÿl8„! !8$!8$! 9+,õÿÿ 1! 1!1!1!1!I!I! I! ?! ?! ?! ?!>!@!6!5!7!;!=!?!=!:!:!:!9!;!1!1!5!5! >!!>!">!#>!$>!%4!&9!'9!(9!)9!*c!+e!,k!-j!.l!/k!0k!8” +ðóÿÿ +ßóÿÿ +Ñóÿÿ +¿óÿÿ +œóÿÿ +Šóÿÿ o+zóÿÿ =+_óÿÿ +Cóÿÿ   egilnpw|ŠŒŽ‘+êòÿÿ +ìÿÿ +}ìÿÿ ?+nìÿÿ ?+cìÿÿD+Qìÿÿ +@ìÿÿ G+ìÿÿ +ìÿÿ08$M!    ††^`bdamoqsunpnp˜šœž›„†ˆ‘‘‘’žž¡£¦¦³µ·¡£¥§©{ƒ€‚‡Z\Z\`bd[^^a^†ˆmoxz|~€“•—™z|~€‚„†‘’———›Ÿ¡¤¤©«>n¤9¬Tò)*VD C D C ^V( 2& 5?[ ~V(^É„ 2%(]Ç ,àÿÿÿY g 8H"!Z(6 CyV([! h89 # !89 &)*D C W B E !l ]Çoo8H" h8H# ]Ço 8H# 8$" 8$"A( ()*E C ! ]Çn 8$&)*Y   8Kh Z( CyVD 6­8”"e8$L% CyVD 6®8”"c8$L%[W cjq­ûI—åî9Ch %CC{VBC^ Y 8$!!ZT(6 CyVD6¯ ^ÌVT5° A@[T[€(TöCi I(Ch I(CC{VC^ !€(TÊCC{VC^ I€(T¬CC{V@C^ Y ]O!ZT(6 CyVD6± ^ÌVT5² A@[T[€(T^CC{V@C^ Y ]OIZT(6 CyVD6³ ^ÌVT5´ A@[T[€(TCC{V@C^ Y ]!ZT(6 CyVD6µ ^ÌVT5¶ A@[T[€(TÂCC{V@C^ Y ]IZT(6 CyVD6· ^ÌVT5¸ A@[T[€(TtC 289 &D CC{V;C^ 89"VC^ !€( 6¹6º6» 6¼8$" A@[T C T\C^ !€ÿÿÿÿC{Uêÿÿÿc(?@[ {V  ^T5½ W+FZC6¾ ^ÌV5¿ ^ÌV 6À8” TcTcTDE D C  6Á8” T)C  6Â8” TC  6Ã8” T#5Ä ^U5Å ^V 8„!@[8„!@[)*VC T OlÈ8„! C    + ,ÿÿÿ€T˜\C^ ]LJic ^É„-bY  "ZT6 CyV? !T[ Y  ,ƒüÿÿ !ZT% CyV D ?!T CyV D !T[€T"Y!ZT CyV D ?!T[€C{Udÿÿÿc( )*gÈ8„! #8„!6Æ8”&)*6Ç 8”#! !89 &Y 6È"ccZT6 CyVc6É?6ÊA@T[ Y 6Ë"ccZT6 CyVc6Ì?6ÍA@T[ 8$" 8$&5Î@[)*E D C W   6Ï8”$ C  6Ð6Ñ6Ò  6Ó8”$ )*8$" 8$&)*VDC 8$"+Ýÿÿÿ89 #8$&5Ô(5Õ?6Ö?6×? ,úÿÿ+Ëÿÿÿ +yÿÿÿ +nÿÿÿ +ÿÿÿ +øþÿÿ +Úþÿÿh?   +úýÿÿ   + úÿÿ ,úÿÿ+ƒúÿÿ +0úÿÿ  +úÿÿ    >9ØT–g ]Èhl }U%\ejph ^É6Ù8”"8H  zUÝÿÿÿc(g]È  gh8$? ()*gh 8$/$8$:!lÿÿÿÿ ^± 8$F!()*‡‡  ]Ço }V5Ú8$% _°(]Çh _°(+õÿÿÿ +Ðÿÿÿ +¹ÿÿÿ +¨ÿÿÿ +ÿÿÿ +Uÿÿÿ  >9ÛT„D&G%c]â%?E&E&G%G&G &G &G &G&G%)*! r lÿÿÿ?o o}V 2&()*!]]li !s]]^Z ^X ^V6Ü8W^S^R ^S^V2&()*!]rl !]r^ol<l!s]r^o ^m ^m ^k6Ý8b^h^g ^h^V2& (d !shy()* !^!(5Þ !] !] !] ^"^^"^^"()*]x "]y()*] "]()*5ß ^V5à8$% &)*5á ^V5â8$% &)*…ÿÿÿ?…5ã8$% &g7 Dr Jgÿÿÿ? D C^l7 Dr C^ns D C_(c! "(c]â?%c! "(gk ^Évlj ^Évli^Évh^Énnu()*8$! 8$"8Û%)*+êÿÿÿ +Çÿÿÿ Ohl6 }U\ C_ zUðÿÿÿc5ä?h l78$"l6n }U2\g7 r r  ^C "IC!  C^u  C_ zUÐÿÿÿccJ()*g7hChC8* D J(chl7^ @(+ôÿÿÿ +Øÿÿÿ +_ÿÿÿ +ÿÿÿ +ÿÿÿ +ÿÿÿ +Øþÿÿ ,¬ýÿÿ+¹þÿÿ ,Àýÿÿ+šþÿÿ,ìýÿÿ+{þÿÿ8m„ +dþÿÿT+Qþÿÿ+)þÿÿ +þÿÿ + þÿÿ    >h6å]À@ +Cýÿÿ +7ýÿÿ ++ýÿÿ +ýÿÿ+ýÿÿ+ýÿÿ+ûüÿÿ +ïüÿÿ +àüÿÿ +Öüÿÿ  +Éüÿÿ  +¼üÿÿ GGG G G GGGGF>    > 9æT&" Yl€l@k@i@8$*#@Z(6 CyV ‡è[2%[)*VC T5ç ,¶ÿÿÿc %" Yg€6è_×]ØZ(6 CyV ‡è[2%[)* ,Îÿÿÿc %)*gÿÿÿ8æ F!s  6é8” &‡"V5ê8$%^É„. h8H'ÿÿÿÿ2%,Õÿÿÿ]Çÿÿÿÿ %)*]Ç ]Ço †5ë8$%h 8H')*]Ç ƒ ÿÿÿÿ "V 8$&8$" 8$&! D '! D C    8$&!V]Çþÿÿÿj 8H#jh 8H#@(6ì@(‡[Ÿÿÿÿ ŒT T†Ac(d(+áÿÿÿ ]Çj|Vc ^É !Vd ^Él:y(]Ç 8„!l" 8„"c ÿÿÿÿ }UT\^É ƒ"8ƒ\ 8„"T3 yV 5í8„"T#^É„" 5î8„"Tg\8„"T5ï8„" zU®ÿÿÿcg" 8„"8„%)*]Ç ]Ç~V]Ç ]Ç ]Ço 8H# 8H! 8H!^Ë(!VO]Çj}U 5ðjh 8H#^ÌV;]Çj}U 5ñjh 8H#^ÌV']Çk}U 5òkh 8H#^ÌV]Çk}U 5ókh 8H#^Ì(]Çi}Uc ^Él/zV]Çi}Uc ^Él\zV]Çj}Ud ^Él:z(†5?["V(ÿÿÿÿ2%,ãÿÿÿ]Çÿÿÿÿ %)* ^É l/yU l\yUl:y()*]Ç ]Ç~V ]Ç ]Ç ]Ço 8H#^Ë(!V']Çj}U 5ôjh 8H#^ÌV]Çk}U 5õkh 8H#^Ì(]Çi}Uc ^Él/z(g/ 8H &)* ^Él/y()*Y! ƒ h 8H#TZ(6 CyV([)*Y! ]Ço  8H#ZT6 CyVT[6ö ^ËV(()*]Ç 8„!l' 8„"c ÿÿÿÿ }U$\^É„'  8„"T ^É 8„" zUÞÿÿÿcg' 8„"8„%+¯ÿÿÿ +tÿÿÿ +Hÿÿÿ6÷6ø6ù +2ÿÿÿ +%ÿÿÿ +ÿÿÿ +àþÿÿ +½þÿÿ Y5ú]ÞZT6 CyV5ûT[6ü !  " #   >  6ý6þ6ÿ +Tþÿÿ +Aþÿÿ +õýÿÿ +œýÿÿ +nýÿÿ Y5]ÞZT6 CyV5T[ +Óüÿÿ +´üÿÿ +qüÿÿ  +Küÿÿ  +5üÿÿ   >666 FGGGG G G  " #   >  8K6 ^ÌVm5 ^ÌV:5 ^ÌV56 @[G G G GGGG G F E D C> TUG G G GGG G G F E DC> T)G G G GGGGG F E D C>  G G G GGGGFE D C +ëúÿÿ +Êúÿÿ+·úÿÿh8æ D!  +húÿÿ +Vúÿÿ +úÿÿ   >9 T³)*V D 2# C !@(()*VC ! D 2" @()*VVC C "V D D 2'(Ud(c()*…c(ÿÿÿÿ 2" @()*VD C ^V( 2" @(VD C V2! D C @@(h@(5 6 @[)*VVC C "V D D 2'(Ud(c(…c(d x2!in()*]Ç ~V(^É ÷ÿÿÿ ‹þÿÿÿŒTT ƒTT  3' 2&)*]Ç ~V o 8H#@(^É ÷ÿÿÿ ‹þÿÿÿŒTT ƒTT  2' o8H#@1&,eÿÿÿ¦ÿÿÿch &)*]Ç ~V(]Ç n~V5?[^É n^ÉyV 2&c 2&)* ,Ãÿÿÿc &Y 8 !Z(6 CyV([i8$x|Vd8$x |()* o u 8$! uth}()* n8$! u uth}()*‡ m nÿÿÿÿs(m s(…c(g8$"h8$>  „5?[ h8$/  o2%)*g]È ,Áÿÿÿ % gh8$>  „c( h8$/ c2%)*g]È ,Ñÿÿÿc %D C8L')*8L! +êÿÿÿ89 "()*]Ljc ^É„+]Çÿÿÿÿi 8H# 8 &(Y]ÚZ(6 CyVc([V$C 8 " 8 " ]ÙV(]ÙV(D2%5?[)*8H! ,Èÿÿÿ %V C8 " ]ÙV(D2%5?[)*8 !U]ÙV(5?[,Éÿÿÿ %)*VC !?()*VC %()*Y c!h!Z(h ![5 8$ !8$#!?[5 ? +êÿÿÿ +Ñÿÿÿ ,?üÿÿ,Rüÿÿ,düÿÿ,„üÿÿ,•üÿÿ,®üÿÿ,Ðüÿÿ+¤ÿÿÿ +’ÿÿÿ +nÿÿÿ +<ÿÿÿ +øþÿÿ +Ñþÿÿ +¹þÿÿ +™þÿÿ +aþÿÿ ,Ëüÿÿ+þÿÿ +øýÿÿ +àýÿÿ +Éýÿÿ +¯ýÿÿ +žýÿÿ +Xýÿÿ    "$&(*,.033>9 T¸)* 68”$)* 68”$+ðÿÿÿ +Þÿÿÿ6 "6 "6 "6 "6 "6 "6 "6 " 6 " 6 " 6 " 6 " 6 "6 "6 "6 "6  "6! "6" "6# "6$ "7K6% "6& "6' "8$+%7K6( Y5)]ÞZT%6 CyVY5*]ÞZT6 CyVT[T[6+6,6-6.6/606162636465666768696:6;6<6=6>h?6??lõlöll6@6A6B6C6D6E6F8K6G ^ÌV5H ^ÌV 5I ^ÌV 5JT5KT5Li    "%')+-/13579;+œþÿÿ   "$&(*,$&02468:<>@BDFHK>&'9MT%CVc(c8M@(CV5N(7M8  ! 8$&c?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?h?6O?6P?h?h?h?h?8M?8M?h?h?h?h?h?h?h?h?h?i?h?h?h?h?h?hh?h?h?h?h?h?h?h?h?l ?h?5+.ÿÿÿ6+ÿÿÿ   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy>=>9Q:9RTSc 3&)* 8r# Œ  C! 2&W'8r!!8r!I8r%€8r!I8r%€8r!I5?[)*8$:! 8r! IdIcIYT\c!|U÷ÿÿÿcZT6 CyVcT[8$F!CCÿÿÿÿCA(Yc T\^É l0}Ul9{Uéÿÿÿ T\^É l0|Vl9~Uéÿÿÿ o 8H#]OI T\]Ç {V ^É„"ìÿÿÿ T\]Ç {V  ^É„"ëÿÿÿ]Ç {V oÿÿÿÿ  8H#IZ(6 CyU 5 CyU[5S8 %5T?h?h? +=ÿÿÿ6U ,–þÿÿœþÿÿ +äþÿÿ ?9VT¦Ch{V C@hI[(€%)*! !8?!h?h ]Çÿÿÿÿ }U\^Él yV€ zUêÿÿÿcc8¬c" F E D C +±ÿÿÿ  8¬b   6W8¬f c 8¬I" 8¬b  !! C^V€C( W !%)-159=AEIMQfš¯ÄÙèñúþþ5X(5Y(5Z(5[(5\(5](5^(5_(5`(5a(5b(5c(5d(5e(C6f ^ÌV 6g8$&5h(C V)D C V6i@ @6j@6k8H&5l 8$"6m8$&5n6 @[C6o ^ÌV 6p8$&5q(5r6s8$" C8$"6t8$&5u C6v8H"8$"6w8$&5x C8$"6y8$&5z C8$&5{ C8$&C(C6| 8$"6}8$&)*VTh ]Çÿÿÿÿ }UG\^É„A3dOh8* T&^É„acOh8* T^É! D C_ zU»ÿÿÿc(!! C^(!! C^(‡A…Z dlA o@(‡a…z cla o@(5~(W AA!%EEIIIIII)-15IIIII9=gd(gf(gl(gs(ge(gm(gp(gv(gy(gz(gc(gu(gx(+®ÿÿÿil^ hl^ +zÿÿÿ +hÿÿÿ +Vÿÿÿ +óþÿÿ6h " +Øýÿÿh?   +<ýÿÿ6€? +ýÿÿ    > 9T')*C VVƒEC V>Y 5‚6ƒ]Þ^ËZT6 CyVcT[ Vc(YC #dZ(8$ CyVc([(7$]åI 2'C V%Y   C C  dZ(8$ CyVc([(c8¬ !€()*8¬1 ')* 8" CnI()*8!V++ãÿÿÿ  6„8¬f  6…8¬f c 8¬I"€()*C! E C CFDFon †5†T @6‡ ^ËV#Vc(DFCF6ˆ8¬f$ DDC6‰ 8¬f CE6Š 8¬f GG DF6‹ 8¬f$ 5Œ C^ËV 5C^ËV5ŽT5 C^ËV FC8V"T E D CA E Fo D CA(cI()*Fm h}V7$?[ Eoÿÿÿÿhhh }U3\ nD^Él yV CF}V DF}V zUÏÿÿÿc DF CF6 8¬f 5‘8$!chh }Uï\ n D^É ƒ [yV yV8$!TÅyV CF {V g.8$!T°8$!T©yV DF {V8$!T•g.8$!T}V{Vƒ8$!T|yVyVJ5’8$! CFÿÿÿÿ }U\g 8$! zUðÿÿÿc CF DFÿÿÿÿ }U\g^8$! zUðÿÿÿc~V|Vg 8$! DF {V5“8$! zUÿÿÿc( )*Fm h}V7$?[C Eÿÿÿÿ }U\D^Él yV zUçÿÿÿcþÿÿÿ ~V7$?[7$8$+!]æc6”8$!c Eoÿÿÿÿ }US\V 5•8$!cCF yU CF yVd]çDF yU DF yVc]ç nD^É 8$!l y zU¯ÿÿÿcc]çC]è7$8$+% c 8v! 8v!A(dh8v!h8v!A(ch8v!h8v!A()*chi> M (c G G A(gÿÿÿÿhi >i A(d8r8rA +åÿÿÿ +Öÿÿÿ +Äÿÿÿ +°ÿÿÿ +ÿÿÿ +Šÿÿÿ6–?h?h?h? +²þÿÿ +Fýÿÿ ,žûÿÿ+4ýÿÿ6—+òüÿÿ +püÿÿ +4üÿÿ +üÿÿ +üÿÿ  !#>9˜Tˆ)*W  C@(C D@2&5™8 %)*Y!g.8H # 2" o8H#@Z(6 CyVc ]Ço8H#@([)* @(c " VD C? +èÿÿÿ89 '5š(h&,wÿÿÿ+ôÿÿÿ ,ÿÿÿ+Ñÿÿÿ @9›T[)*WFF E DC8˜C]Ç„ 8˜#V 6œ8¬f$ 8˜ 6 8¬f  8˜ 6ž8¬f$ C8˜ 6Ÿ 8¬f$5 ?6¡? +œÿÿÿ A9¢T&V)C D2!i DD DCA h @@?@ h ?6£A@(5¤%V)C D2!i DD DCA h @@?@ h ?6¥A@(5¦%)* yV ??% 8?!2" ??!@%)* }V 2& yV ??% "%)* l8v $)* k8v $)* j8v $)* i8v $5§8$%d 8v "(d 8v " 89%d 8v " ?(d 8v "h !@?(d 8v "(5?[c 8v "h @(d 8v "h 8v " @(c 8v "(d 8v "h 8v " h !@?@(c(c(d 8v "h 8v " h !@?@(d 8v "h 8v " h @?@(d 8v "h 8v " @(d 8v "h 8v " h @?@(d 8v "h 8v " @(c 8v " ?%d 8v " ?%d 8v "k6¨i6©$g 8v "k 8v "h 8v " A%f 8v "i 8v " @%f 8v "i 8v "l6ªj6«$f 8v "i 8v " @%f 8v "i 8v "l6¬i6­$d 8v "(d 8v "k6®i6¯$c 8v "(d 8v "h 8v " !@(c(c(d 8v "h 8v " !@(d 8v "h 8v " @(d 8v "h 8v " @(d 8v "h 8v " VC CCVDVT D?%89! @%f 8v "j 8v "h 8v " @ @%c 8v " 89!?%d 8v "h 8v " @%e 8v "h 8v " @%d 8v "h 8v " @%c 8v " 89!?%e 8v "h 8v " @%c 8v " ? %c 8v " 89!? %c 8v " 89!? %c 8v " ? %c 8v "(e 8v "h 8v " @%g 8v "j 8v "h 8v " A%c 8v "h @(e 8v "h 8v " @(g 8v "j 8v "h 8v " A(c 8v " ?%d 8v " 89!?%d 8v "k6°i6±$g 8v "k 8v "h 8v " A%e 8v "h 8v " 89! @%d 8v "(d 8v "k6²i6³$c(d 8v "h 8v " @(e 8v "i 8v " @(d 8v "h 8v "h @ @%f 8v "j 8v "h 8v " @ @%c 8v " 89!?%d 8v "h 8v " @%d 8v "h 8v " @%c 8v " 89!?%c 8v "h @%e 8v "h 8v " ? @%c 8v " ?%c 8v " ?%c 8v " 89!?%c 8v " 89!? %c 8v "(g 8v "j 8v "h 8v " A%c 8v "h @(e 8v "h 8v " @(e 8v "h 8v " @(e 8v "h 8v " @(c 8v "h @(f 8v "j 8v "i 8v "h8v " C89#!h8˜! D DC@ >(c 8v "(e 8v "h 8v " @%d 8v "h 8v " E DC>%c8˜!h@(d 8v "h8˜! 89!@(e 8v "h 8v " E DC>%d 8v "h 8v " E DC>%c 8v "(c 8v "(d 8v "h 8v " 89! @%f 8v "j 8v "h 8v " 89!A%e 8v "h 8v " 89! @%c 8v "h @%d 8v " ?%d 8v "k6´i6µ$f 8v "i 8v " @%f 8v "i 8v "l6¶i6·$d 8v "(d 8v "k6¸i6¹$d 8v "h 8v " 89! @(d 8v " %f 8v "i 8v " @ %c%c(f 8v "i 8v "h 8v " @@(e 8v "h 8v " ?@(e 8v "h 8v " ?@(d 8v "h 8v " ?@(d 8v "h 8v " ?@(e 8v "h 8v " ?@(e 8v "h 8v " ?@(c 8v " ?(c(e 8v "h 8v "h8˜! i>(f 8v "j 8v "h 8v "h8˜! >(f 8v "j 8v "h 8v "h8˜! >(g 8v "k 8v "j 8v "h8v "h8˜! D C A!>(e 8v "h 8v "h8˜! h>(f 8v "j 8v "h 8v "h8˜! >(e 8v "i 8v "h 8v "h8˜!h @!>(g 8v "l 8v "j 8v "h8v "h8˜! ? @!>(g 8v "k 8v "j 8v "h8v "h8˜! ? @!>(c 8v "(g 8v "j 8v "h 8v " Dh@6º@@6»8$"A%f 8v "j 8v "h 8v " Dh@6¼@@6½8$"A%g 8v "j 8v "h 8v " A%e 8v "h 8v " 6¾A%e 8v "h 8v " 89! @%c 8v "h @%d 8v " ?%d 8v "k6¿i6À$d 8v "h 8v " 89! @(d 8v "(c%c(e 8v "h 8v " ?@(e 8v "h 8v " ?@(d 8v "h 8v " ?@(d 8v "h 8v " ?@(e 8v "h 8v " ?@(f 8v "j 8v "h 8v "h8˜! h>(f 8v "j 8v "h 8v "h8˜! i>(e 8v "h 8v "h8˜! ih>(f 8v "j 8v "h 8v "h8˜! >(e 8v "h 8v "h8˜! A(e 8v "h 8v " @(c 8v "h @(g 8v "k 8v "j 8v "h8v " C89#!h8˜! D DC@ >(e 8v "h 8v " @(c 8v "h @(g 8v "k 8v "j 8v "h8v " C89#!h8˜! D DC@ >(c 8v "(d 8v " %e 8v "h 8v " @%e 8v "i 8v " D C6Á8$"A(c 8v " Dh C6Â8$"A(g 8v "j 8v "i 8v " 6Ã8$"A(d 8v "h 8v " h 6Ä8$"A(d 8v " Dh CA(c 8v " Dh CA(d 8v "h 8v " h A(c 8v " h6ÅA(c 8v " ?%c(c 8v " ?(c 8v "(e 8v "h 8v " D@ ! C@(c 8v " ?! @(c 8v "(e 8v "h 8v " @ %c 8v "(d 8v "h 8v " 89! @%f 8v "j 8v "h 8v " 89!A%f 8v "j 8v "h 8v " A%d 8v "h 8v " 89!h6ÆA%d 8v "h 8v "h E@@ D CA%f 8v "i 8v "h 8v " 89! @%f 8v "i 8v "h 8v " 89! @%e 8v "h%c 8v " 89!?%d 8v "h 8v "h ? A%d 8v "h 8v " ? @ %g 8v "j 8v "h 8v " ? A%e 8v "h 8v "h A%f 8v "i 8v " @%g 8v "l 8v "l 8v "k8v "i8v " >%e 8v "h 8v "hh @ @?!?6ÇA%f 8v "i 8v "hh @ @?!?6ÈA%e 8v "i 8v "h 8v " 'e 8v "i 8v "h 8v " 'e 8v "i 8v "h 8v " 'e 8v "i 8v "h 8v " 'e 8v "i 8v "h 8v " 'e 8v "h 8v " 6É 'e 8v "h 8v " 6Ê 'e 8v "h 8v " 6Ë 'e 8v "h 8v " 6Ì 'e 8v "h 8v " 6Í 'e 8v "h 8v " 6Î 'e 8v "h 8v " 6Ï 'e 8v "h 8v " 6Ð 'e 8v "h 8v " 6Ñ 'e 8v "h 8v " 6Ò 'e 8v "h 8v " 6Ó 'e 8v "h 8v " 6Ô 'd 8v "h 8v " &g 8v "j 8v "h 8v " A %g 8v "k 8v "h 8v "h 6Õ@@ 6Ö@@ 6×@@6Ø6Ù"?!@%g 8v "k 8v "h 8v "h 6Ú@@ 6Û@@ 6Ü@@6Ý6Þ"?!@%g 8v "k 8v "h 8v " 'e 8v "h 8v " @%c 8v " %c 8v " ?%d 8v " ?%d 8v "k6ßi6à$c 8v " ?%c 8v " ?%c 8v "hh A%c 8v "h @ %d 8v " %d 8v "k6ái6â$d 8v " %5ã%d 8v "k6äi6å$e 8v "i 8v " D C A%e 8v "h 8v " @ %g 8v "i 8v "h 6æ@@ 6ç@@6è6é"?!@%g 8v "i 8v "l6êk6ë$g 8v "i 8v "h 6ì@@ 6í@@6î6ï"?!@%g 8v "i 8v "l6ðk6ñ$g 8v "i 8v " &g 8v "i 8v "l6òk6ó$d 8v " C D@ %d 8v "k6ôi6õ$e 8v "i 8v " 89!? %e 8v "i 8v "l6öi6÷$5ø%e 8v "i 8v " 89!!%e 8v "i 8v "l6ùi6ú$d 8v "h 8v "h 6û@@i "@%c 8v " ?%e 8v "i 8v " 89!?%e 8v "i 8v "l6üi6ý$5þ%e 8v "h 8v " @%c 8v "h @(d 8v "h 8v " @(c 8v " 6ÿ@(c 8v "(d 8v "h 8v " @(c 8v "(c 8v " D C68$"@(d 8v "h 8v " 68$"@(c 8v " ??! @(c 8v "h @(e 8v "h 8v " @(d 8v "h 8v " i8˜! ?@@(e 8v "h 8v " @(c 8v "(e 8v "h 8v " D C A%c 8v "(d 8v "h 8v "h E@@ D CA%d 8v "h 8v "h @@(f 8v "i 8v "h 8v " @@(c 8v "(d 8v "h 8v "h E@@ D CA%c 8v "(e 8v "h 8v " @%e 8v "h 8v " @(e 8v "h 8v "h @ @(f 8v "i 8v "h 8v " 89! ?@(d 8v "h 8v " 89!h@(e 8v "h 8v "h @@(g 8v "j 8v "h 8v " @@(e 8v "h 8v "h @@(g 8v "j 8v "h 8v " @@(c 8v "h @(e 8v "h 8v " @(c 8v "h ?@(e 8v "h 8v " ? ?@(c 8v " ?h@(c%c%c 8v "(e 8v "h 8v " @%c 8v " 89!?%d 8v "h 8v "h ? A%d 8v "h 8v " ? @%e 8v "h 8v "hh @ @?!?6A%f 8v "i 8v "hh @ @?!?6A%e 8v "h 8v " @%c 8v " ?%c%c 8v " ?%e 8v "h 8v " &c 8v "hh A%c 8v "h @%c 8v " ? %e 8v "i 8v " 89!?%e 8v "i 8v "l6i6$e 8v "i 8v " 89!!%e 8v "i 8v "l6i6$e 8v "i 8v " 89!?%5%e 8v "i 8v "l6 i6 $d 8v " %d 8v "k6 i6 $f 8v "i 8v " @ %f 8v "i 8v "l6 i6$e 8v "h 8v " @(e 8v "h 8v "h @ @(c 8v "h @(e 8v "h 8v " @(e 8v "h 8v "h @@(g 8v "j 8v "h 8v " @@(c 8v "h @(d 8v "h 8v " @(c 8v "h @(e 8v "h 8v " @(f 8v "j 8v "i 8v "h8v " 89#!h8˜! DDC89!C>@(e 8v "h 8v " @(c(5(c 8v " ?h@(c 8v "hi 89!@@(c 8v "hh 89!@@(e 8v "h 8v "h 89!@@(g 8v "j 8v "i 8v "h 89!@@(g 8v "j 8v "i 8v "h8v " ? 89!@@(g 8v "l 8v "j 8v "i8v " ? 89!@@(c 8v " ?i@(c(c 8v "h @(d 8v " 89%e 8v "h 8v " @(5(5(5(c 8v "h @(e 8v "h 8v " @(c 8v "h @(e 8v "h 8v " @(d 8v "h 8v "h8˜! A(c(c 8v " 89%c 8v "h @(e 8v "h 8v " @(f 8v "j 8v "h 8v "h8˜! >(c 8v "h @(e 8v "h 8v " @(g 8v "k 8v "j 8v "i8v "h8v "89#!h8˜! D?89!C>?@(e 8v "h 8v " ? @(c(d(c 8v "h @(e 8v "h 8v " @(c 8v " h@%e 8v "h 8v " 89!@%c 8v "(f 8v "h 8v " @%c 8v "(g 8v "j 8v "h 8v " Dh@6@@68$"A%f 8v "j 8v "h 8v " Dh@6@@68$"A%g 8v "j 8v "h 8v " A%e 8v "h 8v " 6A%c 8v "(d 8v " V DUC(7v ?[c 8v " ?%c%c 8v "h @%d 8v "h 8v "h @ @%e 8v "h 8v " 89! @%d 8v " ?%5%d 8v "h 8v " h A%f 8v "i 8v "h 8v " h@ A%g 8v "i 8v "h 8v " 89! A%d 8v "hih @A%d 8v "hi 89!A%f 8v "i 8v "hi 89!@A%e 8v "i 8v "hh 89!A%5%e 8v "i 8v "6i 89!A%g 8v "k 8v "i 8v " 89!?i 89!A%c 8v "h @(e 8v "h 8v " @(c 8v "(c 8v " ?(f 8v "i 8v "h 8v " 89! A(c 8v "hi A(d(c(c 8v "h @(e 8v "h 8v " @(d 8v " 89%c(c 8v "h @(d 8v "h 8v " @(c 8v "(e 8v "h 8v " 89! @?%c 8v "h @(e 8v "h 8v " @(c 8v "h @(e 8v "h 8v " @(e 8v "h 8v " @(d 8v "h 8v "h @(ch!@(e 8v "h 8v " @%c 8v "(c 8v " ?(c 8v " ?(c 8v " ?(c 8v " ?(c 8v " ?(c 8v " ?(c 8v " ?(c 8v "(c 8v " m?(c 8v " 68$"?(c 8v " ]Q?(c 8v " ]f?(c 8v " ]?(c 8v "(c 8v "(c 8v "(d 8v "(d 8v "(e 8v "(c 8v "(c 8v "(c 8v "(c 8v "(c 8v "(c 8v "(c 8v "(5(5(5(5(5 (5!(5"(5#(5$(5%(5&(5'(c 8v "(5((5)(5*(5+(c 8v " ?(e 8v "h 8v " @(c 8v "(5,(5-(5.(5/(c 8v " ?(e 8v "h 8v " @(c 8v " ?(e 8v "h 8v " @(c 8v " ?(e 8v "h 8v " @(c 8v " ?(e 8v "h 8v " @(f 8v "i 8v " @(c 8v " ?(e 8v "h 8v " @(c 8v " ?(e 8v "h 8v " @(c 8v " ?(e 8v "h 8v " @(c 8v "h @(d 8v "h 8v " ? @(d 8v "h 8v " ? @(d 8v "h 8v " ? @(d 8v "60 @(d 8v "61 @(c 8v "(c(d(c(d(d(c(c(d(d(c(c(c(c(c(52(53(c 8v "8v @[c 8v "8v @[c 8v "8v @[c 8v "8v @[)*! VžD C VrD C V>DVTˆc64@@ C65@@ 66@@ 67@@68@@696:"?!@% c6;@@ 6<@@ 6=@@6>@@6?6@"?!@% c6A@@ 6B@@6C@@6D6E"?!@%c6F@@ ? !6G@@ 6H@@6I6J"?!@%)*! V‡D C VbD C V6DVTqc C6K@@ 6L@@ 6M@@6N@@6O6P"?!@%c 6Q@@ 6R@@6S@@6T6U"?!@%c 6V@@6W@@6X6Y"?!@%c ? !6Z@@ 6[@@6\6]"?!@%C W"""""""""""""""""""""""""""""C(c @()* 6^@@()*8˜! 8˜!>8¢@[7¢?[)*7Q CV 6_8$"T ?@(Di D CA ?@()*C6` ^ÌUaW™™™™™™™™™™™™™™™™™™™™™™™™™™™™™C W $/TlCm??%T"C]Q??%C]f??%C]??%W99999999999999999999999999999C W T C!??%c 6a@@i 6b8$""@%]Ljc ^É„- ]Çÿÿÿÿi 8H'6c8$&)*c 6d@@ 6e@@j "@%C WKKKKKKKKKKKKKKKKKKKKKKKKKKKKKC WT"5f C^ÌVTDVTEƒTc%?%c8˜! @(c8˜! @(c8˜! @()*8˜! ??@(c8˜! C@(c8˜! C@(c8˜! @(c8˜! @(c8˜! @(c8˜! @(c8˜! @(c8˜! @(c8˜! @(c8˜! @(c8˜! @(c8˜! @(g&]ñ+ðÿÿÿ +âÿÿÿ +Ôÿÿÿ +Æÿÿÿ +¸ÿÿÿ +ªÿÿÿ +œÿÿÿ +Žÿÿÿ +€ÿÿÿ +rÿÿÿ +cÿÿÿ +Tÿÿÿ +@ÿÿÿ +1ÿÿÿ +#ÿÿÿ +ÿÿÿ +ºþÿÿ+šþÿÿ +tþÿÿ +¯ýÿÿ,œÙÿÿ,ÇÙÿÿ+ýÿÿ +rýÿÿ ,ëÙÿÿ,Úÿÿ+Yýÿÿ +>ýÿÿ +-ýÿÿ +ûüÿÿ +Aüÿÿ +hûÿÿ6g]À6h]À6i6j6k6l6m6n6ol¢/6p6q6r6s +7ûÿÿ +'ûÿÿ +ûÿÿ +ûÿÿ +ÿúÿÿ +÷úÿÿ +ðúÿÿ +éúÿÿ +âúÿÿ +Ûúÿÿ +Ôúÿÿ +Íúÿÿ +Æúÿÿ +¿úÿÿ +¸úÿÿ +±úÿÿ +ªúÿÿ +£úÿÿ +œúÿÿ +•úÿÿ +‰úÿÿ +xúÿÿ +gúÿÿ +Oúÿÿ +7úÿÿ +úÿÿ +úÿÿ +ùùÿÿ +êùÿÿ +Ôùÿÿ +Åùÿÿ +¯ùÿÿ + ùÿÿ +Šùÿÿ +tùÿÿ +eùÿÿ +Oùÿÿ +@ùÿÿ +*ùÿÿ +ùÿÿ +ùÿÿ +öøÿÿ +îøÿÿ +æøÿÿ +Þøÿÿ +Öøÿÿ +Êøÿÿ +´øÿÿ +¥øÿÿ +øÿÿ +•øÿÿ +øÿÿ +…øÿÿ +yøÿÿ +qøÿÿ +iøÿÿ +aøÿÿ +Yøÿÿ +Qøÿÿ +Iøÿÿ +Aøÿÿ +9øÿÿ +1øÿÿ +)øÿÿ +!øÿÿ +øÿÿ + øÿÿ +øÿÿ +õ÷ÿÿ +é÷ÿÿ +Ý÷ÿÿ +Ñ÷ÿÿ +Å÷ÿÿ +¹÷ÿÿ +­÷ÿÿ +¡÷ÿÿ +•÷ÿÿ +‰÷ÿÿ +}÷ÿÿ +l÷ÿÿ +[÷ÿÿ +J÷ÿÿ +5÷ÿÿ +%÷ÿÿ +÷ÿÿ + ÷ÿÿ +ûöÿÿ +ìöÿÿ +Ýöÿÿ +Îöÿÿ +¿öÿÿ +°öÿÿ +¤öÿÿƒ+Œöÿÿ„+öÿÿ +iöÿÿ +Söÿÿ +=öÿÿ +-öÿÿ +öÿÿ +öÿÿ’+éõÿÿ +Ýõÿÿ +Çõÿÿ +·õÿÿ +°õÿÿ + õÿÿ +Šõÿÿ +zõÿÿ +sõÿÿ +lõÿÿ +[õÿÿ +:õÿÿ ++õÿÿ +õÿÿ + õÿÿ +ùôÿÿ¢+Ïôÿÿ£+±ôÿÿ¤+§ôÿÿ¥+Šôÿÿ¦+jôÿÿ§+Sôÿÿ¨+=ôÿÿ©+ôÿÿª+÷óÿÿ«+Þóÿÿ¬+Ôóÿÿ­+Ãóÿÿ®+§óÿÿ¯+Œóÿÿ°+zóÿÿ±+qóÿÿ²+`óÿÿ +Eóÿÿ +9óÿÿµ+óÿÿ¶+ÿòÿÿ·+Ïòÿÿ¸+žòÿÿ +’òÿÿº+zòÿÿ +nòÿÿ¼+Ròÿÿ½+@òÿÿ +*òÿÿ +òÿÿ +òÿÿ + òÿÿ +ôñÿÿ +°ñÿÿ +šñÿÿ +Šñÿÿ +gñÿÿ +Qñÿÿ +Añÿÿ +1ñÿÿ +*ñÿÿ +ñÿÿ +ùðÿÿ +éðÿÿ +Óðÿÿ +Ãðÿÿ +»ðÿÿ +³ðÿÿ +«ðÿÿ +•ðÿÿ +…ðÿÿ +uðÿÿ +nðÿÿ +\ðÿÿ +/ðÿÿ +ðÿÿ +ßïÿÿ +Âïÿÿ +«ïÿÿ +”ïÿÿ +‚ïÿÿ +zïÿÿ +sïÿÿ +]ïÿÿ +"ïÿÿ + ïÿÿ +üîÿÿ +æîÿÿ +Öîÿÿ +¶îÿÿ +îÿÿ +‡îÿÿ +wîÿÿ +^îÿÿ +HîÿÿÒ+,îÿÿí+îÿÿÔ+ÿíÿÿæ+ðíÿÿÖ+Ôíÿÿñ+Êíÿÿò+¯íÿÿÙ+“íÿÿàì+víÿÿÛ+Zíÿÿö+?íÿÿ÷+.íÿÿø+íÿÿù+ íÿÿâ+óìÿÿû+âìÿÿü+Ùìÿÿý+Èìÿÿþ+°ìÿÿò+ˆìÿÿó+`ìÿÿ+Fìÿÿ++ìÿÿ+ìÿÿ+þëÿÿ +òëÿÿí+éëÿÿî+àëÿÿ +Îëÿÿ +´ëÿÿ +¢ëÿÿ +Œëÿÿ +|ëÿÿ +\ëÿÿ +Cëÿÿ +#ëÿÿ + ëÿÿ +ðêÿÿ +Îêÿÿ +µêÿÿ +Ÿêÿÿ+‡êÿÿ +{êÿÿ +Yêÿÿ +Mêÿÿ +.êÿÿ +êÿÿ+óéÿÿ +çéÿÿ+Ìéÿÿ +Àéÿÿ +ªéÿÿ +‹éÿÿ +uéÿÿ +eéÿÿ"+Néÿÿ +2éÿÿ +éÿÿ +éÿÿ +øèÿÿ +ìèÿÿ +Ûèÿÿ +Åèÿÿ +µèÿÿ++èÿÿ,+“èÿÿ+wèÿÿ.+\èÿÿ/+Kèÿÿ&1+'èÿÿ+ èÿÿ *+îçÿÿ3+äçÿÿ+Èçÿÿ5+­çÿÿ+˜çÿÿ7+„çÿÿ+gçÿÿ+Pçÿÿ!+3çÿÿ&1=+ÿæÿÿ#+âæÿÿ(3?+®æÿÿ>+–æÿÿ?+{æÿÿ'+fæÿÿA+\æÿÿ9+Mæÿÿ*+8æÿÿ;+)æÿÿE+æÿÿF+æÿÿG+óåÿÿH+âåÿÿ0+ÍåÿÿJ+¼åÿÿK+«åÿÿ>+œåÿÿM+„åÿÿ1+fåÿÿ:EQ+%åÿÿ;FR+ääÿÿQ+ÄäÿÿA+®äÿÿD+–äÿÿE+~äÿÿF+fäÿÿG+NäÿÿH+6äÿÿI+äÿÿJ+äÿÿK+îãÿÿL+ÖãÿÿM+¾ãÿÿN+¦ãÿÿO+ŽãÿÿP+qãÿÿQ+TãÿÿR+7ãÿÿS+ãÿÿT+ýâÿÿYe+ÕâÿÿZf+­âÿÿf+{âÿÿg+câÿÿh+Jâÿÿi+(âÿÿj+âÿÿk+óáÿÿl+ÞáÿÿU+Ïáÿÿn+­áÿÿo+‹áÿÿp+iáÿÿq+Káÿÿr+,áÿÿs+ áÿÿt+íàÿÿ +áàÿÿw+Éàÿÿ +½àÿÿy+¨àÿÿz+Šàÿÿ +~àÿÿ +oàÿÿ +hàÿÿ~+Wàÿÿ +Eàÿÿ +.àÿÿ +àÿÿ +àÿÿ +ëßÿÿ +Çßÿÿ +®ßÿÿ +ßÿÿ†+wßÿÿ~+hßÿÿ +\ßÿÿ +#ßÿÿ +ßÿÿ +ýÞÿÿ +ÄÞÿÿ +´Þÿÿ +žÞÿÿ +ƒÞÿÿ +`Þÿÿ +BÞÿÿ +Þÿÿ +úÝÿÿ +âÝÿÿ +ÊÝÿÿ +²Ýÿÿ +šÝÿÿ +‚Ýÿÿ +{Ýÿÿœ+rÝÿÿ +fÝÿÿ +LÝÿÿ„+7Ýÿÿ—+&Ýÿÿ˜+Ýÿÿ™+øÜÿÿš+ÞÜÿÿ›+¾Üÿÿœ+ŽÜÿÿ+]Üÿÿ +QÜÿÿ›+Üÿÿœ+ìÛÿÿ+ÃÛÿÿ + Ûÿÿ +ƒÛÿÿ +PÛÿÿ +-Ûÿÿ + Ûÿÿ +íÚÿÿ +æÚÿÿ +×Úÿÿ +¿Úÿÿ +§Úÿÿ +Úÿÿ +wÚÿÿ +_Úÿÿ +GÚÿÿ +(Úÿÿ +!Úÿÿ­+Úÿÿ»+Úÿÿ³+ñÙÿÿ +×Ùÿÿ¤+ÂÙÿÿ +¶Ùÿÿ¦+šÙÿÿº+‚Ùÿÿ¨+mÙÿÿ¼+\Ùÿÿ½+JÙÿÿ¾+.Ùÿÿ¿+ ÙÿÿÀ+ïØÿÿ +ãØÿÿ +רÿÿÃ+¹ØÿÿÄ+›Øÿÿ +ƒØÿÿ +uØÿÿÇ+WØÿÿÈ+?Øÿÿ +3Øÿÿ +û×ÿÿ +ë×ÿÿ +Õ×ÿÿ +¿×ÿÿ +©×ÿÿ +™×ÿÿÕ+y×ÿÿ +m×ÿÿÖ+X×ÿÿ×+C×ÿÿØ+2×ÿÿÙ+!×ÿÿÚ+×ÿÿÛ+õÖÿÿÜ+àÖÿÿÝ+ÈÖÿÿÞ+°Öÿÿß+›Öÿÿà+zÖÿÿá+_Öÿÿ +IÖÿÿ +3Öÿÿ +,ÖÿÿÎ+Öÿÿ + Öÿÿè+ïÕÿÿé+ÏÕÿÿÒ+ºÕÿÿë+¥Õÿÿì+”Õÿÿ +vÕÿÿ +`Õÿÿ +PÕÿÿî+0Õÿÿï+Õÿÿ + Õÿÿð+ûÔÿÿñ+æÔÿÿò+ÑÔÿÿó+ÀÔÿÿô+¨Ôÿÿõ+“Ôÿÿö+{Ôÿÿ÷+cÔÿÿø+KÔÿÿù+6Ôÿÿú+Ôÿÿû+ÝÓÿÿ +ÇÓÿÿ +±Óÿÿî+˜Óÿÿ +‘Óÿÿ +ŠÓÿÿñ+qÓÿÿ +eÓÿÿî+PÓÿÿ +DÓÿÿð+(Óÿÿ+Óÿÿò+ôÒÿÿ +ÜÒÿÿ +¼Òÿÿõ+§Òÿÿ +–Òÿÿ +…Òÿÿ +oÒÿÿ +TÒÿÿ +>Òÿÿ +#Òÿÿ+Òÿÿ +þÑÿÿ +÷Ñÿÿ+ÙÑÿÿ +ÍÑÿÿ +·Ñÿÿ +§Ñÿÿ +žÑÿÿ +’Ñÿÿ +}Ñÿÿ +nÑÿÿ +^Ñÿÿ +RÑÿÿ +GÑÿÿ>ø 8v  > +Ñÿÿ +Ñÿÿ +ñÐÿÿ +ßÐÿÿ >49tT³gÿÿÿÿl^ M c 3&)* 8r# ŒI  C! 2&WJJZ^bf‘•™ÄäíKz©ÈÞèõþ$6S}²¶¹¼ÀÄÈÌÐÔØÜàäèìðôøü  $(,048<@DHLLU^gpy‚† chih 1%1%gU(gP(8r! ]Çþÿÿÿi 8H# 8L"V8˜! ? A[? (gB(gC(8r! ]Çþÿÿÿi 8H# 8L"V8˜! ? A[? (8r! Y 8L"Z(6 CyV? ([8r!?(Y 8r!]O?Z(6 CyV 8˜!6u A[[8r!!?(8r! Y]Çÿÿÿÿh8H#]c?Z(6 CyV 8˜!6v A[[8r! Y]Çÿÿÿÿh8H#]|? Z(6 CyV 8˜!6w A[[8r! Y]Çÿÿÿÿh8H#]“? Z(6 CyV 8˜!6x A[[c!G 8˜!I4! M c!?( dhih d 8r"?(d 8r"?(e 8r"!?(e "?(f "?(8r! ]Çÿÿÿÿi 8H# 8˜! ? A[c 8˜!@I3!1%8˜!h 8˜ "c 8˜!@I3!1%8˜!i 8˜ "Gÿÿÿÿ MG Fÿÿÿÿ E D C>M gM(d G ^h G ^ 8r #j G ^kG ^8r #  ci]O  1%gK(d(c(g(gD(g3(gH(gM(g(g8(g(g(g (g (g (g(gI(gJ(g0(g1(g(g,(g-(g.(g/(gF(g*(g+(g(g(g(g!(g#(gE(g"(5y(g@(g6(g7(8r!?(8r!?(8r!?(8r!?(8r!?(8r!?(g(8˜!h 8r"? A[gm 3&)* 8r# Œ  C! 2&W =—›————«Ä—C 8˜!@I1%C VD V I1%cI(5z6 @[c !8˜!IY3!ZT? CyV4D V&ƒT&C V cICj A[5{6 @[TTT[c !1%1% dhih 1%C V cICh A[5|6 @[ chih 1%gÿÿÿÿj^ M g† 3&)* 8r# Œ  C! 2&W -=IU¶¿c(Gh G ^ 8r #  ]Çhih  1%d 8r" !!1%d "!1%e "!1%c !V1%8˜!l 8˜ "c 8r"!d 8r"!1% chih 8r!h ]Çÿÿÿÿ }U\ ^É! zUïÿÿÿc1% CiA[c 8r"!1%g 3&)* 8r# Œ  C! 2&W chkh $chih $c()*W-7A5} 8¬f&5~ 8¬f&5 8¬f&C8?!6€ 8¬f'C6 8¬f'C6‚ 8¬f'C6ƒ 8¬f')*G VCTC F FoVTDn > M ()* ~V ~V(h8H'^É ƒ_ _Ê 2& 2&]Ç ,Äÿÿÿch &)* 8r" ‡a©ÿÿÿT ‡AÉÿÿÿTÐÿÿÿ  8r" ‡a©ÿÿÿT ‡AÉÿÿÿTÐÿÿÿ lpn8?%)* 8r"Ðÿÿÿ  8r"Ðÿÿÿl p 8r"Ðÿÿÿldpnn ‡ˆÿc!U8˜! 8r!?A[8?%‡n#‡u(’ÿÿÿW  g ((g (g (ƒb(g(Chz(ChC8H#I(C]ÇC~VeC]Çp]È C]ÇhhC8H ICCS€(IcI(5„?6…l•8 "l]È ?h? +Ýÿÿÿ +¦ÿÿÿ +‘ÿÿÿ8˜?h? +ÿÿÿ +Jÿÿÿ  +ûþÿÿ +±þÿÿ +žþÿÿ +>þÿÿ +éýÿÿ6†    ,ä÷ÿÿó÷ÿÿ¥ûÿÿ¬ûÿÿšüÿÿ©üÿÿýÿÿ–ýÿÿ  >9‡TÔY8‡! V ƒ „JT2!TcZ(8‡ CyVDW c(2%[)*Y8‡"h8v!Z(8‡ CyVDW \\\[5ˆ8˜C^ËV![7¢ CyV5‰8˜C^ËV![7v CyU 7¢ CyUT8˜!6Š8˜C^ËV!?8¢@[[gJ8v !U g8v !Vc(%,*ÿÿÿ+âÿÿÿ +^ÿÿÿ8t !8t !8t !8t! >9‹T‰)*WC E"XV C F"I(C 2&C 2"D 2&W E!89 &C&)*C W "1";AMc(D 2"E 2&C 2!89 &C "D 2!89 &C 3!89 &C 2&C 2+œÿÿÿ89 &D 2&)*C VD 1&()*C W%C "D !89 &C C "D 3!89 &D "E 2&)*W C 1&CF &CE &C C "D &C"D&)*C W  +2?JUc(C 2&C 2!89 &C "D 2'D 2'C 2+´ÿÿÿ89 &C 2"D 2&C 2"D &C &D&C"D&D&)*C W!(3@QQ\ft|‘\®ÀÀËÜÀò!øþ òò*c(C &D 3"E 2&D 2#E 3&C 2"D 2+§ÿÿÿ89 &C 2"D 3&C 2!89 &C "D 2'D 2'C 2+cÿÿÿ89 "D 2'C 2"D &C 2"D "E 2&C 2"D 2"E 2'C 2"D 2&D 2"E 2"G 2&C 2"D #E 'C 2&D 2&C 2+Ýþÿÿ89 &D 4 "E CF"2&C 2"D 'C C !"D 4!89 &C"D&)* 1+ëÿÿÿ89 &D WC&C&)*C W "C &C 3&D 2"E CF"2&C 2"D +µÿÿÿ89 &)*V D C 3"2&(D&C(D&)*C W #0>_mvDC "(C +×ÿÿÿ89 "(D !89 "(D 4üÿÿÿ" CF&C +©ÿÿÿ89 "F89 # 4üÿÿÿ+‘ÿÿÿ89 "(D VC 4üÿÿÿ"(C "(C 4üÿÿÿ"(C !89 "()*C W &1C &C 3"c(D 4úÿÿÿ"E CF"2&C 2"D 2&C 2"D 4úÿÿÿ&)* 389 'D"E&C(D&)*C W )8EN\ˆ‘ž«C 4òÿÿÿ"(D 4ôÿÿÿ"(DC "(C +Âÿÿÿ89 "(D !89 "(D  "(D 4üÿÿÿ" C F&C +‹ÿÿÿ89 " F89 # 4üÿÿÿ4öÿÿÿ+lÿÿÿ89 "(D 4öÿÿÿ"(C  "(C 4 !89 "(C !89 "(C 4üÿÿÿ"()* 389 #c()*W C 4úÿÿÿ&(D&)*C W)5GSC "D !89 &C C  "D 3!89 &E  "F 2&C 2"D 4ìÿÿÿ+±ÿÿÿ89 &D 4îÿÿÿ"E 2&C 2"D  &)*W*1C 1&CET&CE 4êÿÿÿ&C C "D &D 4ìÿÿÿ&C 4êÿÿÿ& &)*F 4üÿÿÿ&)*F &E&D!89 &Wc(C+æÿÿÿ89 &C+Ôÿÿÿ89 &C"D&)*D +ìÿÿÿ89 "F #,ºÿÿÿE %)*VC &()*Wc(C &)* ^(+öÿÿÿ ?8~! C? ,dùÿÿ+Íÿÿÿ ,žùÿÿùùÿÿ+¶ÿÿÿ +’ÿÿÿ ,úùÿÿ3úÿÿ+Aÿÿÿ ,]úÿÿ   , Åúÿÿüÿÿ8üÿÿvüÿÿ˜üÿÿ,ýÿÿqýÿÿ‘ýÿÿMþÿÿZþÿÿrþÿÿÙþÿÿÿÿÿ >9ŒTÐ?I(7K68¬g"c8$L%7‡ CyVD8‡ E8˜ 6Ž8¬18¬f$7¢ CyVD8¢68¬18¬f$5 CyV D68¬18¬f'[8˜I]ÙVYö7ŒC8ŒI! 8$:! YÒ5‘ 8 "Vq! 8ŒC8Œ"CV 7ŒC "TQ5’ 8 "6“ 8$"]ÙV5” 8$"h @h @@T5• 8ŒC8ŒG # C6–8$""D6—8$""TL5˜ 8 "VB ! 8ŒC8Œ"CV 7ŒC "T$5™ 8 "6š8ŒC8ŒG # C6› 8$""8$F!!ZT 8$F!![Z( +²þÿÿiI %(7M "V 8$B! 8$B%c 8$C"8r! 8‹%7M "V8$B!h 8$B!?@(c 8$C"8r! 8‹%)*Y=]Ç]È  ]Çh 8$?  ^ËVdTg h8H#l h 8H#^ËV?[Z( CyV5œ8$%(C V8 %(C V87$8$+!56ž8  "  C6Ÿ8”  ]àhzV8 !5 8”!e8$L!((g 8¬!8¬!g 8¬%)*8¬!5¡8¬! +Üÿÿÿ8ŒG &)*V8D C ]Ç n…M!5¢8¬! ]Çn2&8¬!!5£8¬! ]Ç2&5¤8¬%)*V!8¬!,ªÿÿÿ ]Ç &()*]Ç ~V(^É„  2& 2&)*]Ç ~Vc(^É„ g\ _Êg _Ê 2&^É _Ê 2&g 8H "U8¬%,Žÿÿÿch " ]Çn]È ,¡ÿÿÿch "8¬%)*D C YC5¥8$"!6¦ 8 "6§ 8$"]ÙV 5¨ 8$"T5© 8$" @6ª8$"@@Z(6 CyVIY85«8$"!6¬ 8 "CV5­T5® 8$" 6¯ 8$"@ @@Z(6 CyV @([[)*O ~Vc( ^ ^ËU ^ËV?( 2&VCh D" VC C&D2%5?[8H! ,±ÿÿÿ,ÒÿÿÿC %)*7  ^ËV(CV6°8$" 8$& 8 &Y 8M8 " ]äh @@C8$"IZ(6 CyVD6±8¬18¬f#dI([c?h?h?h?h? +³ÿÿÿ +Šÿÿÿ +nÿÿÿ +‡þÿÿ6² D C +Mþÿÿ +Éýÿÿ +gýÿÿh? +ýÿÿ +ýüÿÿ6³? +¦üÿÿ +wüÿÿ +Oüÿÿ   + /ûÿÿ6´ +Ðúÿÿh8QI7 ! h6µ?6¶A@6·?6¸A@6¹?6ºA@6» +‘úÿÿ?6¼A@6½?6¾A@6¿?6ÀA@8Ø#CVeTc8$L!   !#%')+-/>9Ác8$P!:9Âcaml_alloc_dummycaml_update_dummycaml_array_get_addrcaml_array_get_floatcaml_array_getcaml_array_set_addrcaml_array_set_floatcaml_array_setcaml_array_unsafe_get_floatcaml_array_unsafe_getcaml_array_unsafe_set_addrcaml_array_unsafe_set_floatcaml_array_unsafe_setcaml_make_vectcaml_make_arraycaml_comparecaml_equalcaml_notequalcaml_lessthancaml_lessequalcaml_greaterthancaml_greaterequalcaml_output_valuecaml_output_value_to_stringcaml_output_value_to_buffercaml_format_floatcaml_float_of_stringcaml_int_of_floatcaml_float_of_intcaml_neg_floatcaml_abs_floatcaml_add_floatcaml_sub_floatcaml_mul_floatcaml_div_floatcaml_exp_floatcaml_floor_floatcaml_fmod_floatcaml_frexp_floatcaml_ldexp_floatcaml_log_floatcaml_log10_floatcaml_modf_floatcaml_sqrt_floatcaml_power_floatcaml_sin_floatcaml_sinh_floatcaml_cos_floatcaml_cosh_floatcaml_tan_floatcaml_tanh_floatcaml_asin_floatcaml_acos_floatcaml_atan_floatcaml_atan2_floatcaml_ceil_floatcaml_eq_floatcaml_neq_floatcaml_le_floatcaml_lt_floatcaml_ge_floatcaml_gt_floatcaml_float_comparecaml_classify_floatcaml_gc_statcaml_gc_quick_statcaml_gc_counterscaml_gc_getcaml_gc_setcaml_gc_minorcaml_gc_majorcaml_gc_full_majorcaml_gc_major_slicecaml_gc_compactioncaml_hash_univ_paramcaml_input_valuecaml_input_value_from_stringcaml_marshal_data_sizecaml_int_comparecaml_int_of_stringcaml_format_intcaml_int32_negcaml_int32_addcaml_int32_subcaml_int32_mulcaml_int32_divcaml_int32_modcaml_int32_andcaml_int32_orcaml_int32_xorcaml_int32_shift_leftcaml_int32_shift_rightcaml_int32_shift_right_unsignedcaml_int32_of_intcaml_int32_to_intcaml_int32_of_floatcaml_int32_to_floatcaml_int32_comparecaml_int32_formatcaml_int32_of_stringcaml_int32_bits_of_floatcaml_int32_float_of_bitscaml_int64_negcaml_int64_addcaml_int64_subcaml_int64_mulcaml_int64_divcaml_int64_modcaml_int64_andcaml_int64_orcaml_int64_xorcaml_int64_shift_leftcaml_int64_shift_rightcaml_int64_shift_right_unsignedcaml_int64_of_intcaml_int64_to_intcaml_int64_of_floatcaml_int64_to_floatcaml_int64_of_int32caml_int64_to_int32caml_int64_of_nativeintcaml_int64_to_nativeintcaml_int64_comparecaml_int64_formatcaml_int64_of_stringcaml_int64_bits_of_floatcaml_int64_float_of_bitscaml_nativeint_negcaml_nativeint_addcaml_nativeint_subcaml_nativeint_mulcaml_nativeint_divcaml_nativeint_modcaml_nativeint_andcaml_nativeint_orcaml_nativeint_xorcaml_nativeint_shift_leftcaml_nativeint_shift_rightcaml_nativeint_shift_right_unsignedcaml_nativeint_of_intcaml_nativeint_to_intcaml_nativeint_of_floatcaml_nativeint_to_floatcaml_nativeint_of_int32caml_nativeint_to_int32caml_nativeint_comparecaml_nativeint_formatcaml_nativeint_of_stringcaml_ml_open_descriptor_incaml_ml_open_descriptor_outcaml_ml_out_channels_listcaml_channel_descriptorcaml_ml_close_channelcaml_ml_channel_sizecaml_ml_channel_size_64caml_ml_set_binary_modecaml_ml_flush_partialcaml_ml_flushcaml_ml_output_charcaml_ml_output_intcaml_ml_output_partialcaml_ml_outputcaml_ml_seek_outcaml_ml_seek_out_64caml_ml_pos_outcaml_ml_pos_out_64caml_ml_input_charcaml_ml_input_intcaml_ml_inputcaml_ml_seek_incaml_ml_seek_in_64caml_ml_pos_incaml_ml_pos_in_64caml_ml_input_scan_linecaml_lex_enginecaml_new_lex_enginecaml_md5_stringcaml_md5_chancaml_get_global_datacaml_get_section_tablecaml_reify_bytecodecaml_realloc_globalcaml_get_current_environmentcaml_invoke_traced_functioncaml_static_alloccaml_static_freecaml_static_release_bytecodecaml_static_resizecaml_obj_is_blockcaml_obj_tagcaml_obj_set_tagcaml_obj_blockcaml_obj_dupcaml_obj_truncatecaml_lazy_follow_forwardcaml_lazy_make_forwardcaml_get_public_methodcaml_parse_enginecaml_install_signal_handlercaml_ml_string_lengthcaml_create_stringcaml_string_getcaml_string_setcaml_string_equalcaml_string_notequalcaml_string_comparecaml_string_lessthancaml_string_lessequalcaml_string_greaterthancaml_string_greaterequalcaml_blit_stringcaml_fill_stringcaml_is_printablecaml_bitvect_testcaml_sys_exitcaml_sys_opencaml_sys_closecaml_sys_file_existscaml_sys_removecaml_sys_renamecaml_sys_chdircaml_sys_getcwdcaml_sys_getenvcaml_sys_get_argvcaml_sys_system_commandcaml_sys_timecaml_sys_random_seedcaml_sys_get_configcaml_sys_read_directorycaml_terminfo_setupcaml_terminfo_backupcaml_terminfo_standoutcaml_terminfo_resumecaml_register_named_valuecaml_weak_createcaml_weak_setcaml_weak_getcaml_weak_get_copycaml_weak_checkcaml_final_registercaml_final_releasecaml_ensure_stack_capacitycaml_dynlink_open_libcaml_dynlink_close_libcaml_dynlink_lookup_symbolcaml_dynlink_add_primitivecaml_dynlink_get_current_libs„•¦¾CƳY¤2( -Out_of_memory)Sys_error'Failure0Invalid_argument+End_of_file0Division_by_zero)Not_found-Match_failure.Stack_overflow.Sys_blocked_io.Assert_failure:Undefined_recursive_module,really_input%input @ F@ @ G@&output A C D F@ A C D G@%%.12g!."%d%false$true.bool_of_string$true%false+char_of_int/Pervasives.Exit_jð_jÿð_jð_jïÿÿÿÿÿÿ_j_j<°5Pervasives.do_at_exit@°(array.mlÐD*Array.blit*Array.fill)Array.sub,Array.Bottom@(List.nth#nth)List.map2*List.iter2/List.fold_left20List.fold_right2-List.for_all2,List.exists2 @@,List.combine°'list.mlÕK-List.rev_map2"tl"hd@"\'"\\"\n"\t(Char.chr@5String.rcontains_from4String.contains_from2String.rindex_from1String.index_from +String.blit+String.fill*String.sub@)Sys.Break63.10+dev7 (2006-04-17)@@"%d_iÿÿÿÿ_i_i_i_i_i_iÿÿÿÿ_i€_iÿÿÿ@"%d_jÿÿÿÿÿÿÿÿ_j_j_j_j_j_jÿÿÿÿÿÿÿÿ_j€_jÿÿÿÿÿÿÿ@"%d_nÿÿÿÿ_n_n_n_n_n_nÿÿÿÿ_n_n@ %Lexing.lex_refill: cannot grow bufferÀ @@ÿÀ A@@@,syntax error.Parsing.YYexit3Parsing.Parse_error@2Set.remove_min_elt°@@@ @@'Set.bal'Set.bal'Set.bal'Set.bal@°)buffer.mliI4Buffer.add_substring>Buffer.add: cannot grow buffer*Buffer.nth*Buffer.sub@!% !"!"!'!' )printf: bad positional specification (0)."%_°)printf.mlxH"'' )printf: premature end of format string ``"''4 in format string ``1, at char number 8printf: bad conversion %@.bad box format/bad box name ho:bad tag name specification:bad tag name specification 9bad integer specification*bad format")." ( "'', giving up at character number # ``)fprintf: ! £@C!.!>"!<2Format.Empty_queue @"%s"%s.bool_of_string)a boolean-int_of_string*an integer-int_of_string*an integer/float_of_string'a float/float_of_string'a float ! (one of: #(?)&--help%-help9%s: unknown option `%s'. 1%s: wrong argument `%s'; option `%s' expects %s. #%s: option `%s' needs an argument. (%s: %s. %-help&--help"%s#%s %-help= Display this list of options%-help&--help= Display this list of options&--help%-help( %s %s !}!|!{+ %s %s %s &'Arg.Bad(Arg.Help(Arg.Stop@$%02x0Digest.substring@_i_j ÐA_j,Random.int64_i,Random.int32*Random.int!xÜbR+ÍF4ôúбJÎ$x£ÄÈlG%TgÖ‘Ç,ñw06Á“'7+ñ‘ †K:F¹|‘ÚHÓtcZÅ¡–/>ÓYÁ2>vn 팆'›b"?ᵟ ?xá †9Ï=Ú”dÄL6Ä?}#®SOýóY1 ~$èN~á˜ä3÷"˾Þ(Q¹dé*Y“=Lзïÿ ýª"ëÇ.’.2yŽÜ( L2o<½íGù<Ö*ÕO7ï×h9b6oà –z@ G@ A C E@(%s%06x%s7Filename.chop_extension4Filename.chop_suffix "\\$\\\""\""./".\#../#..\"./#../ !."..!/&TMPDIR$/tmp$'\''!."..!\$TEMP!.!."..!/&Cygwin$Unix%Win32°+filename.ml£I@°-utils/misc.mlzJ0>> Fatal error: 0Misc.Fatal_error@'%s: %B '%s: %s 'version8standard_library_default0standard_library0standard_runtime*ccomp_type3bytecomp_c_compiler1bytecomp_c_linker4bytecomp_c_libraries1native_c_compiler/native_c_linker2native_c_libraries5native_partial_linker&ranlib*cc_profile,architecture%model&system'ext_obj'ext_asm'ext_lib'ext_dll'os_type7default_executable_name3systhread_supported4/usr/local/lib/ocaml(OCAMLLIB'CAMLLIB7/usr/local/bin/ocamlrun"cc Bgcc -fno-defer-pop -Wall -D_FILE_OFFSET_BITS=64 -D_REENTRANT -fPIC*gcc -Wl,-E<-lm -ldl -lcurses -lpthread -gcc -Wall -D_FILE_OFFSET_BITS=64 -D_REENTRANT$gcc )-lm -ldl&ld -r &ld -r &ranlib#-pg,Caml1999X008,Caml1999I010,Caml1999O006,Caml1999A007,Caml1999Y010,Caml1999Z010,Caml1999M010,Caml1999N009$.mli$i386'default)linux_elf".o".s".a#.so&Cygwin$Unix%Win32(camlprog%a.out,camlprog.exe@ @@8Linenum.parse_sharp_line ,8ýÿþÿÿÿ B8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8ÿÿ ÿÿ †     †ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ @&%c: %s?this is the start of a comment. !this is not the end of a comment.:this syntax is deprecated. Gthis function application is partial, maybe some arguments are missing. 8labels were omitted in the application of this function. &this expression should have type unit.:this match case is unused.7this pattern is unused. #illegal backslash escape in string. (this optional argument cannot be erased. /this argument will not be used by the function. 6this statement never returns (or has an unsound type.) %aThis '%s' might be unmatched.%aSyntax error/Syntaxerr.Error6Syntaxerr.Escape_error@"::¸"[]@@"::´"[]@@&parser#end&struct!)!(!)!(!)!(#end#sig!)!(#end&object!)!(!)!(&option!?&option!? #end&object!?!?!?!? "::"::!+!-"-.!*!=!"or"||!&"&&":= #set%Array #set&String#end&object!)!(¸"()@@#end%begin #get%Array!)!( #get&String!]![!}!{!}!{"|]"[|@!]![ ">}"{<@ !?!?"::"::!}!{!]![—@"|]"[|!)!(!)!( @@ @@ A@ @A&option!?&option!? ”@·@@@@!-!+!-"-.!*!=!"or"||!&"&&":="()"::%false$true"[]"()%false$true“@“A!-"-. #set&Array3 #set&Array2 #set&Array1 #set(Genarray #get&Array3 #get&Array2 #get&Array1 #get(Genarray(Bigarray'unsafe_!- !~!- %falsep    @ !"#$%&'(./456789:;<=?@ABCDEFHIJKMNPQRSTUVWXYZ[\^_`abcdfghijk@H )*+,-0123>GLO]e@ ðÿÿ   !!""$%(((''--))))........23334444444466778899:::*****BBBBEFFGGGGGGHHHI;##JK++++++++QNNMMOPPLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS//ccddddeffggAAUUVVhhWW__iibb``>>>>>55555555RRRRRRRRRRRRRRRRRRjjnnmmorrqqqqqqqqqpppuvvv,,sswttz{{||~~??€€……††„„ˆˆ‰‰ƒƒ‡‡CC00yy‚‚‚Š<^^^^^^^kkkkkkYY‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹xxxxx]]\\ll }}}DD11 XZZ@@==&&TTaa[[ ð  L<ÌŸœ ¡òó¢žÍÒôÇÚÛõö ÷ «Üݪ©ãáíQ¯'*¤+&£(ïö›ÊïåÀ¿¾Áº¼±²³´µ»½¶Ë¹ÛójòTS@O"øûÐ âà˜&­·¸°Ôskt£Î2¥¤¦§¨¥ ªžÐ,¢² ìëßÞ¬2(ÙØ !UÓÈœþ÷ýù•<×5>áßÞâà äP'•€™x“ru)!"54   õôñðîíãÜgnoµPADQBMC?—WR®…ƒ|w˜y$ÑÕçæÏ.-0/31¡¯3p_qlmVÄÅÆW»êèæ”;:76_Øéçå}ƒSU–}‰gš—”v?Öjz76¬§Ÿ© °h[kéëÃMY@NÙ™‰„‹~“Yeda`rzÂ\XC–`…„T‚hf{¾1X^vÚ‚‡ŒŒ¼]cbxy|tuw]JdDL€ŽŠ‹${^~L‘’ /?CJ0@D1LMN€3²4”bcˆ½ 5uo³\p´÷ôe`©a] oË +~HÌäæÍ³´zcNÔÕDEÅ6ª,Ñ-   wx¾î«7 ¦ ?08{NK9:;’<†=>‡ZŒæç£e.Lˆ2y!,3¾¿Läá«ÀÁâãÓ¬øã"#$%â†stu&€ãª LnA&pç+•w'ÿÿêþº*îÿý(ç+,ÖÅ'(%ý({Å÷åç+‘&ý(±ý(‘ááOç+ma,{+Ùç+ý(m•Ôê÷,ÑÉÉÉf%y\ÿÈjZ6ÿœ‡-¡‡-Ä“*öY*ü,'’Ìñù#Ó3)Í*²ÙA&âÓy¢ÿ ¯ÿÒà-ääÞÍ*óç+“ÿöÝï•/AÍ*×Óááí¥X' Pyý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(ý(aç+ç+(,(±+yý(ygƤå±!ÉÉÉ!Í*xZÈ¥>Ð *:îÿ%©q¡¡D•ÅiPÿŽ)Àý(ysp4â&Í*-Í*|77’ËÍ*RR.ý(ý(3)hŠý(/Jœöý(öý(,ký([ÿÍ/{ën)VGQCîÿŽš…Æ<I’Üÿ±†•ý(Í*-..ã-l-ã-åååå>vvå>>ã->vý(ý(ý(hyyã-ȤZ^¡jÆ@SÿL•'ÿÓX¡Oý(ý(ý({Ètq©)_\Y«î¡oÀk¶îr¡Qƒ¼‘{lz¡ ÅV Í*öôÿwºÍ*Í*Í*Í*Í*ÿì¡%µµÃ~Í*f,ÎÆ~ÿÒ-Â-Ä-¸Í*ý(ý(ý(n)Æý(ÒÍ*ÆïƵÿâÖ¡¡dý(öþšÍ*¥ .Õã©,Vÿãÿ}ÿý(xÈ­Ó‡-ÿkf áíÚÆ’Ï,ÁÿÞ!"d©) h‚÷îP€Ëg¹¡Ê¡¡ö{E•ºY‘ý(-åÁ´ÿóóó-Ýÿ¡ý(±³¡ý(hý(Æ9ÿý(ý(ý(ý(+-¡Š<@Æ´ê*¡d÷±+®Ì½Í,Š<.ïò^Øèë-{å±&ÆLÆ@"9û)ú þ%¸îÊ¡†ö•äÿ¡ÅºBÿß7Í*Í*-’--ý(âW¡*»Í*Cb ±+,,Ëä),,çÌ7Í7¡ý(ý(ý(!"Æãöf@@Æ¡ëÀ ¡n Ed!"Q*¡•º‘¡ý(-3½-â/dÅž!"KNBËRSý(I, ---—lL'#7*b!" ¡ºYÍ*dóÿËËý(U¡¡ý(Í7cÍ03(¡'ÿ!"¡9öþ1Gâý( ËÆ,ÈÍl!"+@o,,¡Ëpq¡¡ L°+A+"$A::¸e r«  Ñ ,… A+°YDå#Æ%8 vö#•#ñ ”‰ûÿdIÿea(¯(2+$::8<$A+] Ã?  Ë °A–‹V$D°8;›  ûÿ^kÿÁDe37 9Eÿ‹$;+$ +A×!½gÌ1ã ”O»)•/£ ÷u}m‹ ù Z°D›‘‰ï!í"°r!ÑÓ|e¥ Eÿi66ˆÕ×ûÿYÿJÿ–ÿáøˆV8<‹$a-#°##'mq5+Ï¥pÿª {$¶ÿé¾$A+"%‡ ”DWVWKú &"*"Ÿ!£"ÙE³ƒ³}O#!!Kÿ‡æÿËÿÜ#´ p"FÿVªb#² ÿ%ã¥Öÿt‹`"FI¬¬N!?V!‘ƒDN™#F¶"_V¹!¹ ðX”©…ÿwÿ²ÿÿØ·ý±wþ ®þúÿ€Ç³©öÿ/ÿBÅý!ýõÿ«qé@þÞÿð´ýÕüëÿÖý`ÿèüÉýi"ý±ýmô+}»¯øÿßýþq{»þ"¤ÿѬ¬›ÿ,ÿ棢Ðþw§ÿdTÛÏVýþnÿyîÿuß8ÿÿÿ]šýÿcþ ÿÏ… _F^V±Q‹tEKukY+ÔS&¦ÜÞÊà|DvvÖÚÙÛ SS©«XqQ]+_·`ñ¹SsÂ[cÌ®QQ:ŸõS'zS{SÅÆñÏQˆûèñ_ ç©èQçQQQ"ˆÐ(þÿèˆìdè^J5:uìv<111:„9ˆGèvê¯ QŸ1òè²sÖ...ˆŸKí;©ígsO‰]Rñ.1Âhi]ÉfqèW2èGSW#ˆ©.[;yÒ1øùS ;:êý:<þQø<{|ò¤Á¸.ë°=W22/ٚ猪èÙRÙSSjSHGÔýö–z‚…:„êðâ^QQáXQ!¶Iñ1; U;ÃÄÅèÈé å鮨€//7]È.¦º2ó=Òz =MI011…é1¾ÀJÁSu—sÙ1— ÷  ..ð˜.vÚýBÏ`?uñ.ê22ZÇðw[þsvî ðéñ§@AëÝ7MîÅòÙH«s¶NíîB41 ê©î©ïõF Ý™•¨©îRS¨ë.Ô]‚«©©©©ÎsCbð9 ±Ø‘ñ©ð#$ ¡« îåpîluDìhi}©Ôòïâó©vˆ†©üبÒ7úØÿØ»©Ž©©« «såϼˆ©†í©]‰©]1«¸kÓm111Ð11#ÚtÛ#Ñ•#‡#Š.#1Ù~#...z..iu#sˆ^†"í¶·¸‡1.«*vi-²s}Sir1sÎ13«èΊC.(s-sªÛ#1iiéss.~†ú¹(–Od##‡##iðps.uáÕÖû³tüoèí#·ýpvþJ¦-ß'N騅íY*rði4s%4„sÃFfR,œ4zݰ)µ)ž'(Ü4Š442É”õH6‘åš›œ4žp>¥†"GT?ußÉX]p«Ñ-4HöàŠvû4IüTS 4xýdþ£r*rrrÉ44sŠ®MèrQ à4yNrÍÉp OdUM C‡9…]¯T¯RpCrصpÓÔÕÖûƒÃüÄNØñò=ýÄ%þ°ß!"ØÙr-±&öŠ[ewÛ)11C ñ(Gž<u¢Ý£÷‰,ß “Tu..vøô1’*ÆSÇ Ã-vñ)Èåš“…>s¹Ä.ŠÁ¼Q…"ùÐsp&*rÍ›1©äÇ5ŠrÆ-½ŠwŠwwwÊ, ]°AÝwÔÕÖÇw½åfȯÉrr½ÙrOå†ÊØÙ8¾`åZrd&×fÛèxabOdr9:;†èéÝ-¨*$µ[*¬é1w %ú<'råþ¿­®ŒÀ -ìG†.¡ìûºü»h¢iGý¶rþ´¼9¤)Äð·¸=>9­"IðO»x&xxxP9999B’FxSIBdTVx9ûY[ü,å@Aû¤ýü>þû\Äüý^9þ&xý&aË9råm&f9&l»wwµ9wn9v9}99€Æ‚x9w@Eƒ9¢9°“Š9wr*rrr†rr¬¼ËÏ©äó©Õèëôðwrõ©öÝ÷µ@Õ…/©©©©46ñ7r8K;rÖT©dV ZO]rOxüý_k§qO°rw©Õyr|xÄ©O}OOƒ©„~…‹Œ˜¥¨Oª©©©©‡xx­²x³´º©¼Â©°'r©åxîðïûOüw µýOxÿ$%ï-.ýOF4Mf3\4E_‘OIxOaVbµPµw IQ™wwwewwcUgdIjIInxhwij>uIvO-zrl{°>µ#ŠŽŽ|ˆd‹œ w>¿>>ÀÄIÌowÓ)IÔÕ>*ר-qÚÞYâêIwèóhòçû>IIë>x"#>V…ôíîð°·Rµ¦>>ñbwïêë=ݰ>ðZ>ìRù\µxºrrÝÝxxxxxUlðÍÝÎOñ¿”Líx¡rjær í§Â‘Ý¥µr¹5òÝióxJÝx­ÿµµŽ¶*xrÝÝ‚wݰx‡ˆ‰Š‹ŒŽ‘’“”•–—˜™«›°°‘‘‘‘§‘‘x‘‘‘‘‘‘‘‘‘‘‘r µ°‘µ‘ww‘‘‘ ‘‘‘‘‘‘wd‘x‘w ‘99999!9báb9=rZb =Zbbbb===ZZZÉb=9Z Prb9999bxx=bZ=µ9Zbbbw gxZbxb=b=ZxZ«««««««««««««««««««««««««««««««««««««««««««««««Ö«›«««0«««««««2««««««»««««««««««««««ä««xC×ìÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ8éÉÉ<=ÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÖÉÉÉÉÉÉîÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉC×îîîîîîçîîîîäääääääääääääääääääääääääää䯰±ääääääääääääääääääääääääääääåääääääääääääääääääääääääééééééééééééééééééééééééééééééééééééééééééééééééééééééééúééééééééééééééééééééééééççççççççççççççççççççççççççççççççççççççççççççççççççççççççüççççççççççççççççççççççççååååååååååååååååååååååååååååååååååååååååååååååååååååååååÿååååååååååååååååååååååååúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúÜúúúúúúúúúúúúúúúúúúúúúúúüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüÝüüüüüüüüüüüüüüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ­ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝݶÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®®Ö®®®®®®®®®®®®®®®­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­×­­­­­­­­­­­­­­¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶·¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶ÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖ¸ÖÖÖÖÖÖÖÖÖÖÖÖÖÖ××××××××××××××××××××××××××××××××××××××××±××××××××××××××········································Â··············¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸Ã¸¸¸¸¸¸¸¸¸¸¸¸¸¸±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±Ç±±±±±±±±±±±±±±±Â³ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃôÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ›ÇÇÇÇÇÇÇÇÇÇÇÇÇÇdz³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³³Á³³³³³³³³³³³³³³³´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´Å´´´´´´´´´´´´´´´›››››››››››››››››››››››››››››››››››››Æ›››››››››››››››ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÄÁÁÁÁÁÁÁÁÁÁÁÁÁÁÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅŽÅÅÅÅÅÅÅÅÅÅÅÅÅÅÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆÈÆÆÆÆÆÆÆÆÆÆÆÆÆÆÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÊÄÄÄÄÄÄÄÄÄÄÄÄÄĽ½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½¿½½½½½½½½½½½½½ÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÀÈÈÈÈÈÈÈÈÈÈÈÈÈÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÉÊÊÊÊÊÊÊÊÊÊÊÊÊ¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿Î¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÍÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÌÉÉÉ ÉÉ  É É  ÉÉÉÉÉÉ ÉÉÉÎÉÎÉÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎ ÎÎÎÎÎ    ÎÎ%ÎÎ %%Î%Î%ÎÎÎÎÎÎ%ÎÎÎÍÎÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ%ÍÍÍËÍÍ%%%%ÍÍÍÍ%ÍÍÍÍÍÍÍÍÍÍÍÌÍÌÍÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ*ÌÌ*****Ì*ÌÌÌ*ÌÌÌÌÌÌÌÌÌÌÌÌ*****Õ++*++++++ËËËËËË+ËËËËËËËËËËË++++ËËËÏ8ËË8+888Ë8ËËË8ËËËËËËËËËËËË88888Ñ8ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ¹ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÏÕÏÕÏÕÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÔÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÑÏÑÏÑÏÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÓÑÑÑÑÑÑÑÑÑÑÑÑÑÑѹѹѹѹ¹¹¹¹¹¹¹¹¹¹¹¹¹¹Ò¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹Ô¹Ô¹Ô¹ÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔšÔÔÔÔÔÔÔÔÔÔÔÔÔÔÔÓÔÓÔÓÔÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓºÓÓÓÓÓÓÓÓÓÓÓÓÓÓÓÒÓÒÓÒÓÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒÐÒÒÒÒÒÒ,ÒÒÒÒÒÒÒÒÒšÒšÒšÒšššššššššššššššššŽššššššššššššºšºšºšººººººººººº/ºººººpººººººººººººººÐºÐÐкÐÐCÐÐÐÐÐÐÐ,ÐÐ,ÐÐq,,,ÐÐÐÐÐ,ÐHÐÐÐÐÐÐ,Ð,ÐÐÐ,ŽÐŽŽŽŽŽ,,ŽŽŽ,ŽŽŽŽŽŽ’ŽŽŽŽŽŽŽŽ/ŽŽŽŽŽŽŽ/ŽŽpŽpppŽ/p//pppp//ppppopp/pp//pppp//p/YpppppppqpqqqpqqqqqmHqqqqqHqqqHHHqHqqqqqqqqqqH’’’’Hq’q’q’’’Hn’’’’HH’’’’’’’’’’’’’’’ooooo’’o’ooolooooooooŠŠŠŠŠŠoooŠoŠŠooŠoooommmmŠŠmoomommmimmmmmmmmaccccccmmmcmccmmcmmmmnnnnccnmmnmnnnnnnnnnHnnnnnnnnnnnnlllllnnlnlllllllllllAlllllllllliiiilliliiiiiiiaaiiaiiúaaaaiiiaiiiiiiiaaiiaiaaa aaa É !"#$%&'IB)*+,-. Z  !\"#$%&'B)*+,-.  !"#$%&'ÙB)*+,-É.ÉÉÉÉÉÉÉÉÉÉÚÉÉÉÉÉÉÉÉÉÉÉÉÉÉ[ÉÉÉÉÉÉÉÉÉZÉZZÉÉÉÉÉÉZZÉÉZÉÉÉÉZZÉZZZ\ZZ\\8\\Z\ZZ\\\ZE\ZZZ\\ZZG\\\ÂÂ\ÂÂ\Â\\ÔÂÂÂ\\ÙÂÙFGÙÂÔÙÙÙÙÂÂÂÙÚÚÂÂÚÂÐÂÐÙÚÚÚÚÙH[[ÚÙ[ÙÐÐ[[ÙÐÙ[Ñ[[IÑÚÚ[ZZBÚZÚÑÑZ[ZÚÑÚK[Z8ZZ8[8Z[[8888[E[EZ8EZEZAGEEE8ZZG8EJZ8DZGGG888EGEE88EFFGGEEFGGFGEGEFFFGGGGFKGGGFFGFGHFHGHFFHGGHFHHFGIGIHIIBBIIIHBHKIKHBBBKKHHBIKKKHIHI0KBZBIIABKI.IAKBBJKDABAABJKKDAEJKJJKDDDEJ+DEAEEA%EJADJKDAA-JKEDFEJJKDKKDFEKFEFFEF#)KKFKFKKF*FF0Z0Z0.00ZZZ.00Z...0.0Z0Z+Z.00+.%ZZ0.+++%Z..+%-%%.-%+-+--+%-%++%#+)-%%#-)%-###)))--#)-*#*)#)#***)##*))#)*•–*—* ˜™**š *›œžŸ ¡X¢£#$%¤¥¦§¨)*+-•–.— ™š ›œžŸ ¡X¢£#$%¤¥¦§¨)*+-.rrrerrrrrrrr errrr rr !"#$%&'( )*+,-.  !"#$%&'•–—f)ù™*+,-.š ›œžŸ hij¡O-6#•–¤¥—f§™o¨)*š-q ›œžŸ hij¡O-6#¤¥ §o¨)*W-q X !#$%' )*+-. X !#$%' )*+-. X !#$%'òòòò)*+-.òòòòòòòòòòòòòòòòòòòòòòòòóó·óóòòòòòóóóóóóóóóóóóóóóóóóóóóóóó¸ óóóóó Xf !#$%' )*+-g.hijOklHf#himn* o)p*-qIghijOklf#mmnn o)p*-qghijOklf# mn* o)p*f-qghij Oklf#mgnhij oOk)lp“*#-qmgnhijoOk)lp*f#-qmn o)p*-qhijO-lf# o)*-qhijOklf# o)*-qhijO-îlî#îîo)*-qîîîîîîîîäîäîääîîîîîäääääääää äÞ äääääßOP #$à'á â)ã*-ßOP #$à'á )ã*-OP #$' )*-ƒPÊË#$ÊËÌ'ÌÍÎÏÍÎÏ)Ь*Ð-ÑÑÒÓÔÕÖÒÓÔÕÖ××ØÙØÙÊËÚÛÌÚÛÍÎÜÏÝÝÐÑÊËÒÓÔÕÖÌÍÎÏ×ÐØÙÑÚÛÒÓÔÕÖæÝÊË×ÌØÙÍÎÏÚÛÐÑÝÊËÒÓÔÕÖÌÍÎ@×ÐØÙÑÚÛÒÓÔÕÖݶ¶×¶ØÙ¶¶ÚÛ¶¶Ý•–¶¶¶¶¶—™¶š¶¶›¶¶œžŸ ¶¶ÊË¡Ìͤ¥ÐѨÊËÒÓÔÕÖÌÍ×ÐØÙÑÚÛÒÓÔÕÖÊËÍÙÝ×ÍØÙÚÐÚÛÑÒÓÔÕÖÝÛÙרÙÚÜÛÝÝÞÛÝÞ _F $~©Xh aäKo×CMm¬Œº(‘+'.Ün aSB5‡Ü8Þ:12P'I e P5œ8:hgKLM?tmt$gijk Ä r.}5tJÆÞ{W?eg ijkAÉ?W?t„UkÐU{”|U  XXkï­bÓeT¦UXg]”¯˜²ÓÔ?é UXT¦,X·¸%â35(²TWWXSª12yÖÜ¿ëUÜÞßàWUäX$GðIsZYßàTä'ÇçUêkX ûüý5e8W:äijkk‡X\uï&T |X{ÜWW-.SU1c68J{?J>\T˜WHI-.T 1J“WãdT>>·¸d²hUcJd¿Àq#T?./ U«‚ãUÙyd¦ƒA„$.(ÑçbW÷e W?žA„UkWog·E­ëHaK(Uƒ„UßàWbäÏeUÏÂgÇÈ=ñ?dDZgUEÏWUKIÖWF-. Ü1ÞBWWYZZÏ>N#d#?g$kkökûhýüýþ7?U >ö üýþ+U5U‚?()*#'Zb+e?W"3 5‘hikA>Á'e+V5DG././5?^UJ>?TUUWXApAGp~,-g?75?in^>pÈOe>5yIe?­Œ$gg…p»S’5 7\$W&e>?'¦>¥<öEDªW×üýþ(´XÆÑºÆˆÖk'eB=d#>ÆEi>ÌFK >?ghijkZYZÆ>"5tÌ Wd>{k~Dh>?eG>!ek>>?SU>(”i\*+,-=?eZt =[WKZeEBC²eeKY&ehN>-.> YPGR>GU\WY>d«>>T-.GYÌJE(Þ5O7>eT$e>?>VeWGñ=JeõOeEe•T>K¤W…¨e  eeg‚ijk‹d7k¼ªt+,-ÿ7e{Ç=>?-.5¤1 ÌIBC03ÛÜ>”GN3>?>?J012>3\eSdUïhYV>˲  ìÕGdÚ]de-.be7ÇsË>?(B   V„ûN =de>? îE _ógKijk?nFpt?YZ{(XdO>? XaX=”eEÏokWKWv-.r1eWkYZ„S²>>?d>>gñV>kJö÷üýþTeY> ËW> \d X¯X>ee?W Ä'e+-<(„J?k5רe>WU\ @ J=ã?G UéE#DK X:íSW e(DWWYZ]-. 1'd gnpk>>e EÏKJe"#DD?Y  WWWddgF<6h8ö Pûüýþ <h <012 „578 (Á?>?>ÆBÉ cGeDD'>m+D EDZ5 ]K (b  efXW<YGWõD T=dDDg P EÏ   TK>Y#WWS­WYZ#p(>> !dTg>G°Âöò-.üýþä¨üEp( ÌK7GBʾTG˹JEV Jõ=ã'TU+jdEög'€K+_Ûû~ýÞðji5ÿÿYZbÆÿÿÿÿÿÿÿÿÿÿÿÿdÿÿÿÿ{GÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÝÿÿ“ÿÿ•ÿÿÿÿèÿÿÿÿÿÿÿÿ ÿÿÿÿpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿËÌeÿÿgÿÿÑÿÿ=ÿÿÿÿnA-.DEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿ|ÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿGÿÿÿÿJÿÿÿÿÿÿÿÿdÆÿÿgÿÿT˜kÿÿOÿÿÿÿÿÿÿÿVÿÿ ÿÿ[ÿÿ ^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´ÿÿ¹ÿÿÿÿÿÿ ¿ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿ(Dÿÿÿÿÿÿ(ÿÿÿÿçœÿÿêÿÿÿÿÿÿÿÿ=TUÿÿWXÿÿÿÿEÿÿÿÿ-.EKÿÿÿÿÿÿEKÿÿiÿÿKÿÿWÿÿYZÿÿËÿÿÿÿÆÿÿGYdJÿÿgÿÿdÿÿkgÿÿdTÿÿgÿÿÿÿÿÿÿÿÿÿÿÿ     ÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./0123ÿÿ5678;<=>?ABCDEÿÿGHÿÿKLMNOÿÿQÿÿ/TUÿÿWXYZÿÿ\]ÿÿ_`abÿÿdegÿÿÿÿ7k9:;ÿÿË>?ÿÿÿÿÿÿÿÿ7T9:;ÿÿÿÿ>?ÿÿ7ÿÿ9:;Sÿÿ>?ÿÿÿÿLZÿÿÿÿÿÿQÿÿSÿÿÿÿLÿÿefZQÿÿSÿÿÿÿÿÿÿÿÿÿÿÿZefÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿefÿÿ     ÿÿÿÿ¬ÿÿÿÿ#$²³'()*+,-./0123ÿÿ5678ÿÿÿÿ;=>?ÿÿABCDEÿÿGHKLMNOÿÿQÿÿTUÿÿWXYZÿÿ\]ÿÿ_`abÿÿdeÿÿgÿÿÿÿÿÿkÿÿ7ÿÿ9:;ÿÿÿÿ>?ÿÿÿÿÿÿÿÿ7ÿÿ9:;ÿÿÿÿ>?7ÿÿ9:;ÿÿS>?ÿÿÿÿLZÿÿÿÿÿÿQÿÿSÿÿÿÿÿÿÿÿefZÿÿSÿÿÿÿÿÿÿÿÿÿÿÿZÿÿefÿÿÿÿÿÿÿÿÿÿÿÿÿÿef@ÿÿÿÿÿÿ     ÿÿÿÿbcd#$ÿÿÿÿ'()*+,-./0123ÿÿ5678ÿÿÿÿ;ÿÿ=>?ÿÿABCDEGHÿÿÿÿKLMNOÿÿQÿÿÿÿTUÿÿWXYZÿÿ\]ÿÿ_`abÿÿdeÿÿgÿÿÿÿÿÿkÿÿÿÿ     ÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./0123ÿÿ5678ÿÿÿÿ;ÿÿ=>?ÿÿABCDEGHÿÿÿÿKLMNOÿÿQÿÿÿÿTUÿÿWXYZÿÿ\]ÿÿ_`abÿÿdeÿÿgÿÿÿÿÿÿkÿÿÿÿ     ÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./0123ÿÿ5678ÿÿÿÿ;ÿÿ=>?ÿÿABCDEGHÿÿÿÿKLMNOÿÿQÿÿÿÿTUÿÿWXYZÿÿ\]ÿÿ_`abÿÿdeÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿ     ÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./0123ÿÿ5678ÿÿÿÿ;ÿÿ=>?ÿÿABCDEGHÿÿÿÿKLMNOÿÿQÿÿÿÿTUÿÿWXYZÿÿ\]ÿÿ_`abÿÿdeÿÿgÿÿÿÿÿÿkÿÿ     ÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./0123ÿÿ5678ÿÿÿÿ;ÿÿ=>?ÿÿABCDEGHÿÿÿÿKLMNOÿÿQÿÿÿÿTUÿÿWXYÿÿÿÿ\]ÿÿ_`abÿÿdeÿÿgÿÿÿÿÿÿkÿÿ     ÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./0123ÿÿ5678ÿÿÿÿ;ÿÿ=>?ÿÿABCDEGHÿÿÿÿKLMNOÿÿQÿÿÿÿTUÿÿWXYÿÿÿÿ\]ÿÿ_`abÿÿdeÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ     ÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./0123ÿÿ5678ÿÿÿÿ;ÿÿ=>?ÿÿABCDEGHÿÿÿÿKLMNOÿÿQÿÿÿÿTUÿÿWXYÿÿÿÿ\]ÿÿ_`abÿÿdeÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKLMNÿÿÿÿQÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_`aÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿ3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKLMNÿÿÿÿQÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_`aÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYÿÿÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYÿÿÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYÿÿÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYÿÿÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYÿÿÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,ÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,ÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,ÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+,-./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿ\ÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+ÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+ÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+ÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*+ÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿABCDEÿÿÿÿÿÿÿÿKÿÿMNÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()*ÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿKÿÿMÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿKÿÿMÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿKÿÿMÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿMÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿMÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#$ÿÿÿÿ'()ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿ=ÿÿÿÿÿÿAÿÿDEÿÿÿÿÿÿK Mÿÿÿÿ ÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿgÿÿÿÿkÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿTUÿÿWXÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿDEiÿÿÿÿK Mÿÿÿÿ ÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿTUÿÿWXÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿiÿÿÿÿÿÿKÿÿMÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿgÿÿÿÿkÿÿ ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿ=ÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  DÿÿÿÿÿÿÿÿTUÿÿWXÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿ./ÿÿÿÿiÿÿ ÿÿÿÿÿÿ ÿÿ=ÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  DÿÿÿÿÿÿÿÿTUÿÿWXÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿ./ÿÿÿÿiÿÿ ÿÿÿÿÿÿ ÿÿÿÿ=ÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  DÿÿÿÿÿÿÿÿTUÿÿWXÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWÿÿYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿdÿÿgÿÿÿÿk ÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ$ÿÿÿÿ'(ÿÿÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿ_ÿÿaÿÿÿÿdÿÿgk79:;ÿÿ >?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿS#ÿÿÿÿÿÿÿÿ(Z ÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿefÿÿÿÿÿÿ=>ÿÿÿÿAÿÿÿÿDE(ÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZ=\ÿÿÿÿÿÿÿÿÿÿÿÿEdeÿÿgÿÿKkÿÿÿÿÿÿÿÿÿÿÿÿ YZÿÿÿÿÿÿÿÿÿÿÿÿdÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿ7ÿÿ9:;ÿÿÿÿ>?ÿÿ=>ÿÿÿÿAÿÿÿÿDEÿÿÿÿLÿÿÿÿKÿÿQÿÿSÿÿÿÿÿÿTUZWXYZÿÿ\ÿÿÿÿ ÿÿefÿÿdegkÿÿÿÿ ÿÿÿÿÿÿÿÿ'(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿ=ÿÿÿÿÿÿ./ÿÿÿÿE7ÿÿ9:;Kÿÿ>?ÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEYZLÿÿÿÿKÿÿQÿÿSÿÿdÿÿWTUZWXYÿÿÿÿ\ÿÿÿÿÿÿÿÿefÿÿdÿÿgkÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ# ÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿ(AÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYÿÿÿÿ\EÿÿKdÿÿgÿÿÿÿ kÿÿÿÿYÿÿÿÿÿÿÿÿÿÿdÿÿÿÿgÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿ7ÿÿ9:;ÿÿÿÿ>?ÿÿ=ÿÿÿÿÿÿAÿÿÿÿDEÿÿÿÿLÿÿÿÿKÿÿQÿÿSÿÿÿÿÿÿÿÿTUZWXYZÿÿÿÿefdÿÿÿÿg ÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿ7ÿÿ9:;ÿÿÿÿ>?ÿÿ=ÿÿÿÿÿÿAÿÿÿÿÿÿEÿÿÿÿLÿÿÿÿKÿÿQÿÿSÿÿÿÿÿÿÿÿTUZWXYZÿÿÿÿefdÿÿÿÿg ÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿ./ÿÿÿÿ7ÿÿ9:;ÿÿÿÿ>?ÿÿ=ÿÿÿÿÿÿAÿÿÿÿÿÿEÿÿÿÿLÿÿÿÿKÿÿQÿÿSÿÿÿÿÿÿÿÿTUZWXYZÿÿÿÿefdÿÿÿÿg ÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿÿÿEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿdÿÿÿÿg ÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿÿÿEÿÿÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZÿÿÿÿÿÿÿÿÿÿdÿÿÿÿg ÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿ(ÿÿ ÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿAÿÿÿÿÿÿE(ÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿWXYZ=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿEdÿÿÿÿgÿÿKÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿYZÿÿÿÿÿÿ   ÿÿdÿÿÿÿgÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿ !ÿÿÿÿÿÿÿÿ&ÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿEÿÿGHIÿÿKÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYZÿÿÿÿ]ÿÿÿÿÿÿÿÿbcdeÿÿÿÿj   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !ÿÿÿÿÿÿÿÿ&ÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCEÿÿGHIÿÿKÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿÿÿÿÿbcdeÿÿÿÿj   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !ÿÿÿÿÿÿÿÿ&ÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿEÿÿGHIÿÿKÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿÿÿÿÿbcdeÿÿÿÿÿÿjÿÿÿÿ ÿÿ   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0123ÿÿ5ÿÿ78ÿÿÿÿÿÿ=>?ÿÿÿÿBÿÿDEÿÿGÿÿÿÿÿÿKLÿÿÿÿÿÿQTUÿÿWXYZ  ]ÿÿÿÿ`bÿÿdefiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿ./ÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿ=ÿÿÿÿAÿÿÿÿÿÿEÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿWÿÿYZ./ÿÿÿÿÿÿÿÿÿÿÿÿÿÿdÿÿÿÿgÿÿ=ÿÿÿÿÿÿAÿÿÿÿÿÿEÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿWYZÿÿÿÿÿÿÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿ?ÿÿEÿÿÿÿÿÿÿÿJKÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿYZÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿd>ÿÿgÿÿÿÿÿÿDEÿÿKÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿWYZÿÿ\ ÿÿÿÿÿÿÿÿÿÿdeÿÿgÿÿÿÿ>ÿÿÿÿDEÿÿÿÿÿÿÿÿÿÿK(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿWYZÿÿ\ ÿÿÿÿÿÿ=ÿÿdeÿÿgEKÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ(ÿÿÿÿÿÿYZÿÿÿÿÿÿÿÿÿÿdÿÿgÿÿ=ÿÿÿÿÿÿÿÿ(ÿÿ EÿÿÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿYZÿÿ ÿÿÿÿE(ÿÿÿÿdKgÿÿÿÿÿÿÿÿÿÿÿÿWÿÿYZ=ÿÿÿÿ(ÿÿÿÿÿÿEdÿÿÿÿgÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYZ ÿÿEÿÿ ÿÿÿÿKdÿÿgÿÿÿÿÿÿYÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿ(dÿÿÿÿgÿÿ7ÿÿ9:;ÿÿÿÿ>?ÿÿ=ÿÿÿÿÿÿ=ÿÿÿÿIEÿÿLÿÿEKQSKÿÿÿÿÿÿÿÿÿÿZ ÿÿÿÿYZÿÿYZÿÿefÿÿdgdÿÿgÿÿÿÿÿÿÿÿ(ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿ ÿÿÿÿÿÿÿÿÿÿEÿÿ(ÿÿKÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿYZ(ÿÿ=ÿÿÿÿÿÿdEÿÿgÿÿÿÿÿÿKÿÿ(ÿÿ=ÿÿÿÿÿÿÿÿÿÿÿÿEYZÿÿÿÿKÿÿÿÿÿÿÿÿ=dÿÿgÿÿ ÿÿEYZÿÿÿÿKÿÿÿÿÿÿdgÿÿ ÿÿÿÿYZ ÿÿÿÿÿÿ(ÿÿÿÿdgÿÿÿÿÿÿ ÿÿÿÿÿÿ(ÿÿÿÿÿÿ(ÿÿÿÿÿÿEÿÿÿÿÿÿKÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿEYÿÿÿÿÿÿEKÿÿÿÿÿÿKdÿÿÿÿgÿÿÿÿÿÿYÿÿ ÿÿEYÿÿÿÿÿÿKdÿÿÿÿgdgÿÿ ÿÿÿÿYÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿdgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿEÿÿÿÿKÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿ  EYÿÿÿÿÿÿÿÿKÿÿdgÿÿÿÿÿÿÿÿY'(ÿÿ'(ÿÿÿÿÿÿÿÿdÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿ?ÿÿ=ÿÿÿÿÿÿEÿÿÿÿEÿÿKÿÿÿÿÿÿKÿÿÿÿ ÿÿÿÿÿÿWÿÿYZW YZÿÿdÿÿÿÿÿÿdÿÿ '(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿÿÿ(ÿÿÿÿE=ÿÿÿÿÿÿÿÿKÿÿÿÿEÿÿÿÿÿÿÿÿKÿÿÿÿ=ÿÿYZ ÿÿÿÿÿÿEÿÿYZdKÿÿÿÿÿÿ dÿÿÿÿÿÿÿÿÿÿYZÿÿÿÿ(ÿÿÿÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ(ÿÿÿÿÿÿ=ÿÿÿÿÿÿÿÿÿÿÿÿEÿÿÿÿÿÿKÿÿÿÿ=ÿÿÿÿÿÿÿÿ(ÿÿÿÿEÿÿÿÿYZÿÿKÿÿÿÿÿÿÿÿÿÿÿÿdÿÿÿÿ=ÿÿYZ ÿÿÿÿÿÿE ÿÿÿÿÿÿdKÿÿÿÿÿÿÿÿÿÿÿÿÿÿYZÿÿÿÿ(ÿÿÿÿÿÿÿÿ(ÿÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿ ÿÿÿÿ=ÿÿÿÿEÿÿÿÿÿÿÿÿEKÿÿKÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYZ(ÿÿÿÿYZÿÿÿÿÿÿÿÿdÿÿÿÿÿÿÿÿdÿÿÿÿÿÿÿÿÿÿÿÿ=ÿÿÿÿÿÿÿÿÿÿEÿÿÿÿK  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYZÿÿÿÿÿÿ !d#ÿÿÿÿ&ÿÿÿÿ)*+,-ÿÿÿÿ012ÿÿ45678ÿÿÿÿ;ÿÿ=>?@ÿÿBCÿÿÿÿÿÿGHIÿÿÿÿÿÿMNOÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿ\]ÿÿÿÿÿÿÿÿbcÿÿeÿÿÿÿjÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !ÿÿ#ÿÿÿÿ&ÿÿÿÿ)*+,-ÿÿÿÿ012ÿÿ45678ÿÿÿÿ;ÿÿ=>?@ÿÿBCÿÿÿÿÿÿGHIÿÿÿÿÿÿMNOÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿÿÿÿÿÿÿ\]ÿÿÿÿÿÿbceÿÿ j ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0123ÿÿ5ÿÿ78ÿÿÿÿÿÿ>?ÿÿÿÿBÿÿDÿÿÿÿGÿÿÿÿÿÿLÿÿÿÿÿÿQTUÿÿWXÿÿZÿÿ#]ÿÿÿÿ`ÿÿbÿÿÿÿef./iÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ>ÿÿÿÿAÿÿÿÿDÿÿÿÿÿÿÿÿÿÿ   ÿÿÿÿÿÿÿÿSTÿÿÿÿÿÿXÿÿZÿÿ\ !ÿÿeÿÿg&ÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿEÿÿGHIÿÿKÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿY   ]ÿÿÿÿÿÿÿÿbcdeÿÿÿÿÿÿÿÿj !ÿÿÿÿÿÿÿÿ&ÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿEÿÿGHIÿÿKÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ]ÿÿÿÿbcdeÿÿÿÿÿÿÿÿjÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿ)*+,-ÿÿÿÿ012ÿÿÿÿ5ÿÿ78ÿÿÿÿ;ÿÿÿÿ>?ÿÿÿÿBCÿÿÿÿÿÿGÿÿÿÿÿÿMNOÿÿÿÿÿÿ ÿÿWÿÿZÿÿ\]ÿÿÿÿÿÿÿÿbÿÿefÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿ)*+,-ÿÿÿÿ012ÿÿÿÿ5ÿÿ78ÿÿÿÿ;ÿÿÿÿ>?ÿÿÿÿBCÿÿÿÿÿÿGÿÿÿÿÿÿÿÿÿÿMNOÿÿÿÿÿÿ  WÿÿÿÿZÿÿ\]ÿÿÿÿÿÿÿÿbÿÿefÿÿ !ÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿÿÿÿÿGHIÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿbcÿÿeÿÿÿÿÿÿÿÿj !ÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿÿÿÿÿGHIÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿUÿÿ   ÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿbcÿÿeÿÿÿÿÿÿÿÿj !ÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿÿÿÿÿGHIÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿbcÿÿeÿÿÿÿÿÿÿÿj !ÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿÿÿÿÿGHIÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿW  ÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿbcÿÿeÿÿÿÿÿÿÿÿj !ÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿÿÿ=>?@ÿÿBCÿÿÿÿÿÿGHIÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿW  ÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿbcÿÿeÿÿÿÿÿÿÿÿj !ÿÿÿÿÿÿÿÿ&ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ012ÿÿ45678ÿÿÿÿÿÿ=>?@ BCÿÿÿÿÿÿGHIÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿbcÿÿe0123j5ÿÿ78ÿÿÿÿÿÿÿÿÿÿ>?ÿÿBÿÿDÿÿ G ÿÿÿÿLÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿ`ÿÿbÿÿÿÿefÿÿÿÿiÿÿ0123ÿÿ5ÿÿ78ÿÿÿÿÿÿÿÿÿÿ>?ÿÿBÿÿÿÿÿÿ G ÿÿÿÿÿÿLÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿ`ÿÿbÿÿÿÿefÿÿÿÿÿÿÿÿ0123ÿÿ5ÿÿ78ÿÿÿÿÿÿÿÿÿÿ>?ÿÿBÿÿÿÿÿÿ G ÿÿÿÿÿÿLÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿ`ÿÿb ÿÿefÿÿÿÿÿÿÿÿ0123ÿÿ5ÿÿ78ÿÿÿÿÿÿ>?ÿÿBÿÿÿÿ ÿÿGÿÿÿÿÿÿÿÿL0123Q5ÿÿ78ÿÿÿÿZ>?]ÿÿB`DbÿÿGefÿÿÿÿL0123Q5ÿÿ78ÿÿÿÿÿÿÿÿZ>?]B`ÿÿb GefÿÿÿÿLÿÿÿÿÿÿÿÿQÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿ`ÿÿbÿÿÿÿefÿÿÿÿÿÿÿÿ012ÿÿÿÿ5ÿÿ78ÿÿÿÿÿÿÿÿÿÿ>?ÿÿBÿÿÿÿ ÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿUÿÿÿÿZÿÿÿÿ]ÿÿÿÿÿÿÿÿbÿÿÿÿefÿÿÿÿÿÿ012ÿÿÿÿ5ÿÿ78ÿÿÿÿÿÿÿÿÿÿ>?ÿÿBÿÿÿÿ ÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿÿÿÿÿbÿÿÿÿefÿÿÿÿÿÿ012ÿÿÿÿ5ÿÿ78ÿÿÿÿÿÿÿÿÿÿ>?ÿÿBÿÿÿÿ ÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿÿÿÿÿbÿÿÿÿefÿÿÿÿÿÿ012ÿÿÿÿ5ÿÿ78ÿÿÿÿÿÿÿÿÿÿ>?ÿÿBÿÿÿÿ ÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿÿÿÿÿbÿÿÿÿefÿÿÿÿÿÿ012ÿÿÿÿ5ÿÿ78ÿÿÿÿÿÿÿÿÿÿ>?ÿÿBÿÿ  ÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿÿÿÿÿbÿÿÿÿefÿÿÿÿÿÿ0123ÿÿ5678ÿÿÿÿÿÿÿÿ>?  ÿÿÿÿÿÿÿÿÿÿGHÿÿÿÿÿÿLÿÿÿÿOÿÿQÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿ]ÿÿÿÿ`ÿÿbÿÿÿÿe0123ÿÿ5678ÿÿÿÿÿÿÿÿ>?  ÿÿÿÿÿÿÿÿÿÿGHÿÿÿÿÿÿLÿÿÿÿOÿÿQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]ÿÿÿÿ`ÿÿbÿÿÿÿe012ÿÿÿÿ5678ÿÿÿÿÿÿÿÿ>?  ÿÿÿÿÿÿÿÿÿÿGHÿÿÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿbÿÿÿÿe012ÿÿÿÿ5678ÿÿÿÿÿÿÿÿÿÿ>?ÿÿÿÿÿÿÿÿÿÿGHÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿ]ÿÿÿÿbÿÿeÿÿ#ÿÿÿÿÿÿÿÿ#)*+,-)*+,-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿ;ÿÿBCÿÿÿÿÿÿBCÿÿÿÿMNÿÿÿÿMNÿÿÿÿXÿÿÿÿ\ÿÿÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿ)*+,-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿMN)*+,-Tÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿÿÿMNÿÿÿÿÿÿÿÿTÿÿÿÿÿÿÿÿ#ÿÿÿÿ\)*+,-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿMN)*+,-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿÿÿÿÿMNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ\)*+,-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿMN)*+,-Tÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMNOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿ\)*+,-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿ#ÿÿÿÿÿÿMN)*+,-ÿÿWÿÿÿÿÿÿ\ÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿBCÿÿÿÿÿÿÿÿÿÿÿÿÿÿMNÿÿÿÿ#ÿÿÿÿÿÿÿÿÿÿ)*+,-\ÿÿ7ÿÿ9:;ÿÿÿÿ>?ÿÿ;ÿÿÿÿÿÿÿÿÿÿÿÿBCÿÿLÿÿÿÿPQÿÿSÿÿNÿÿÿÿÿÿÿÿZÿÿÿÿÿÿÿÿÿÿÿÿÿÿb\ÿÿefÿÿÿÿ7ÿÿ9:;ÿÿÿÿ>?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLÿÿÿÿÿÿÿÿQÿÿSÿÿÿÿÿÿÿÿÿÿÿÿZÿÿÿÿÿÿÿÿÿÿÿÿÿÿbÿÿÿÿef ‘AMPERAMPERAMPERSANDANDASASSERTBACKQUOTEBARBARBARBARRBRACKETBEGINCLASSCOLONCOLONCOLONCOLONEQUALCOLONGREATERCOMMACONSTRAINTDODONEDOTDOTDOTDOWNTOELSEENDEOFEQUALEXCEPTIONEXTERNALFALSEFORFUNFUNCTIONFUNCTORGREATERGREATERRBRACEGREATERRBRACKETIFININCLUDEINHERITINITIALIZERLAZYLBRACELBRACELESSLBRACKETLBRACKETBARLBRACKETLESSLBRACKETGREATERLESSLESSMINUSLETLPARENMATCHMETHODMINUSMINUSDOTMINUSGREATERMODULEMUTABLENEWOBJECTOFOPENORPLUSPRIVATEQUESTIONQUESTIONQUESTIONQUOTERBRACERBRACKETRECRPARENSEMISEMISEMISHARPSIGSTARSTRUCTTHENTILDETOTRUETRYTYPEUNDERSCOREVALVIRTUALWHENWHILEWITH CHARFLOATINFIXOP0INFIXOP1INFIXOP2INFIXOP3INFIXOP4INTINT32INT64LABELLIDENTNATIVEINTOPTLABELPREFIXOPSTRINGUIDENT@“#int“%int32“%int64“)nativeint’"!=°1parsing/lexer.mll–P°1parsing/lexer.mll¡R°1parsing/lexer.mll·P6Comment not terminated=String literal not terminated 4This comment contains an unterminated string literal6Illegal character (%s) 4Illegal backslash escape in string or character (%s) 2`%s' is a keyword, it cannot be used as label name FInteger literal exceeds the range of representable integers of type %s+Lexer.Error  #andB  "asC  &assertD  %beginI  %classJ  *constraintP  "doQ  $doneR  &downtoU  $elseV  #endW  )exceptionZ  (external[  %false\  #for]  #fun^  (function_  'functor`  "ifd  "ine  'includef  'inheritg  +initializerh  $lazyi  #letr  %matcht  &methodu  &moduley  'mutablez  #new{  &object|  "of}  $open~  "or  'privateA  #recG  #sigL  &structN  $thenO  "toQ  $trueR  #tryS  $typeT  #valV  'virtualW  $whenX  %whileY  $withZ  #mod•#mod  $land•$land  #lor•#lor  $lxor•$lxor  #lsl–#lsl  #lsr–#lsr  #asr–#asr@, .¶ÿ·ÿà&IlÄÿ´ ÌÿCÙüEHUÝÿßÿâÿB{e]/ðÿx™â²‘í½ÿÿœºûÿŠiøÿñÿòÿóÿ_-]p7ýg­…zbírïÿîÿêÿaNsíÿuìÿvëÿuèÿ“çÿ,æÿ -æÿÖù A ÚÿÖÿ×ÿØÿÔÿd ÍÿÎÿÏÿÊÿÇÿ‡ ÃÿÅÿª Í gôÿõÿöÿ>ýÿþÿß ƒÿ°üÿúÿ‘Ûùÿ¢ÜÕå÷ÿM ( J í q íðö.ø .ÿÿÿÿÿÿGDC>Aÿÿ964ÿÿ/.,*&$?ÿÿÿÿÿÿ!ÿÿ ÿÿBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿFÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿE@#ÿÿÿÿÿÿÿÿÿÿ-ÿÿÿÿÿÿÿÿÿÿ7ÿÿÿÿA=ÿÿÿÿ ÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ .ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSÿÿÿÿSTSVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘”ÿÿ”ÿÿÿÿ ä$&&$%RXpRX€QW&’$ ! f # "dac`]P_^K$?9$9778888888888>DPGJL$66666666v&|OOOOOOOOOO8888888888e) = €,ÿÿÿÿz…‘ÿÿR>ŒQ•ŒŒ–“)VŒŒUR“=Q<UTÿÿZZZZZZZZZZZZZZZ:kkkkkkkkkkZklkkkZZkkkjÿÿigÿÿbÿÿÿÿÿÿhZZZZzZZyZ[ZZZZ\ZZ{YZNM77wZZ1.0.71/-200/.-3420/-34ÿÿ11111111115555555555p0o555555EEEEEEEEEEs1rut0555555  5555555555555555.FFFFFFFFFF€‡5555555q/-& ˆ '''''''''''''+'‚‚‚‚‚‚‚‚‚‚8888888888'***************************8''''''''P'''''''''P{{{{{{{{{{OOOOOOOOOO'(,((((((((((((((((((((((((((''********************************HHHHHHHHHHHHHHHHHHHHHH(((((((((((((((((((((((( (((((((( 66666666IIIIIIIIII.IIIIII6/-IIIIII '''''''''''''''((((((((((()'(((((((((((((((((((((((((('('((((((((((((((((((((((((((URQƒƒƒƒƒƒƒƒƒƒUTƒƒƒƒƒƒOOOOOOOOOOƒƒƒƒƒƒ((((((((((((((((((((((((((((((((((((((((((((((((((((((*((((((((**********,*****************************************************„„„„„„„„„„„„„„„„ÿÿ„„„„„„**************************************************************'''''''''CCC''''''BBBBBBBBBBMMMMMMMMM'MMMMMMCC''CCCMAMMZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZÿÿZZZZZZZZZZZZkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk~~~~~~~~~~kkkŒ‹sksks}ŠŠŠŠŠŠŠŠŠŠŽŽŽŽŽŽŽŽŽŽssŽŽŽŽŽŽsss‰))))))))))ŽŽŽŽŽŽ))))))))))))ÿÿ äÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%QWoSV‡SV–ÿÿÿÿÿÿÿÿÿÿ‘ÿÿÿÿÿÿ  $;0$0220000000000=CFIK$33333333tux9999999999 z<‚SVy„‘T<ŒT“‹‹•ÿÿÿÿÿÿ’yÿÿTŒ‹ÿÿÿÿÿÿUU”UÿÿÿÿÿÿÿÿÿÿÿÿUÿÿUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTÿÿ ÿÿÿÿÿÿ ÿÿÿÿ’ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU” ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ77ÿÿrÿÿÿÿÿÿÿÿ7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7ÿÿ7ÿÿ7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrÿÿÿÿÿÿ11111111114444444444m1ÿÿmÿÿÿÿÿÿ444444BBBBBBBBBBÿÿmÿÿÿÿ1ÿÿmmÿÿm1ÿÿÿÿÿÿÿÿÿÿ444444ÿÿÿÿÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿ 5555555555ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ555555ÿÿÿÿÿÿÿÿÿÿ5EEEEEEEEEEÿÿÿÿÿÿ†ÿÿÿÿ†ÿÿ5ÿÿ555555ÿÿÿÿÿÿmÿÿ5ÿÿ5ÿÿÿÿÿÿ†ÿÿÿÿ ÿÿ † !ÿÿÿÿ!!!ÿÿÿÿÿÿ!!ÿÿ!!!~~~~~~~~~~!ÿÿ!!!!!ÿÿ8888888888ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!!ÿÿ!!!!!!!!!!!!!!!!!!!!!!!!!!8!"!ÿÿ"""ÿÿÿÿÿÿ""P"""ŠŠŠŠŠŠŠŠŠŠ"ÿÿ"""""ÿÿÿÿPÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿ""†""""""""""""""""""""""""""ÿÿ"ÿÿ"ÿÿÿÿÿÿÿÿ!!!!!!!!!!!!!!!!!!!!!!!!ÿÿ!!!!!!!!AAAAAAAAAAÿÿÿÿÿÿÿÿÿÿÿÿÿÿAAAAAAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿAAAAAAÿÿÿÿÿÿÿÿ""""""""""""""""""""""""#""""""""##########ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ##########################ÿÿÿÿÿÿÿÿ#ÿÿ##########################66666666ÿÿÿÿÿÿÿÿÿÿÿÿHHHHHHHHHHÿÿÿÿÿÿÿÿ6ÿÿÿÿHHHHHHÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿ6HHHHHH#######################ÿÿ###############################ÿÿ########'ÿÿÿÿ'''ÿÿÿÿÿÿ''ÿÿ'''ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿ'''''ÿÿÿÿÿÿÿÿ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(((((((((((ÿÿÿÿÿÿÿÿÿÿ'((((((((((((((((((((((((((ÿÿÿÿÿÿ'('((((((((((((((((((((((((((OOÿÿÿÿOÿÿÿÿÿÿÿÿ}}}}}}}}}}ÿÿÿÿÿÿÿÿOÿÿO}}}}}}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOOOOOOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}}}}}}ÿÿÿÿÿÿÿÿÿÿ(((((((((((((((((((((((ÿÿ(((((((((((((((((((((((((((((((*((((((((***********ÿÿÿÿÿÿÿÿÿÿÿÿ**************************ÿÿÿÿÿÿÿÿ*ÿÿ**************************ƒƒƒƒƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿƒƒƒƒƒƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ***********************ÿÿ*******************************ÿÿ********+ÿÿÿÿ+++ÿÿÿÿÿÿ++ÿÿ+++ÿÿ:ÿÿ:ÿÿÿÿÿÿÿÿ:ÿÿ+ÿÿ+++++::::::::::MÿÿÿÿMMMÿÿÿÿÿÿMMÿÿMMMÿÿÿÿÿÿÿÿ+ÿÿÿÿÿÿÿÿÿÿMÿÿMMMMMÿÿÿÿ:ÿÿÿÿÿÿÿÿÿÿ:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+ÿÿ+:ÿÿÿÿÿÿ:ÿÿ:ÿÿÿÿM:ÿÿÿÿÿÿÿÿYÿÿÿÿYYYÿÿÿÿÿÿYYÿÿYYYÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMYMYYYYYÿÿÿÿÿÿZÿÿÿÿZZZÿÿÿÿÿÿZZÿÿZZZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿZYZZZZZÿÿÿÿÿÿÿÿÿÿ[ÿÿÿÿ[[[ÿÿÿÿÿÿ[[ÿÿ[[[ÿÿÿÿÿÿÿÿYÿÿYÿÿÿÿZ[ÿÿ[[[[[ÿÿÿÿÿÿ\ÿÿÿÿ\\\ÿÿÿÿÿÿ\\ÿÿ\\\ÿÿÿÿÿÿÿÿZÿÿZÿÿÿÿ:\[\\\\\ÿÿÿÿÿÿbÿÿÿÿbbbÿÿÿÿÿÿbbÿÿbbbÿÿÿÿÿÿÿÿÿÿÿÿ[ÿÿ[ÿÿb\bbbbbÿÿÿÿÿÿhÿÿÿÿhhhÿÿÿÿÿÿhhÿÿhhhÿÿÿÿÿÿÿÿÿÿÿÿ\ÿÿ\ÿÿhbhhhhhÿÿÿÿÿÿkÿÿÿÿkkkÿÿÿÿÿÿkkÿÿkkkÿÿÿÿÿÿÿÿÿÿÿÿbÿÿbÿÿkhkkkkkÿÿÿÿÿÿlÿÿÿÿlllÿÿÿÿÿÿllÿÿlllÿÿÿÿwÿÿwÿÿhÿÿhwlklllllÿÿwwwwwwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkÿÿkÿÿÿÿlÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿÿÿˆlˆlÿÿwÿÿˆÿÿwÿÿwÿÿÿÿÿÿwˆˆˆˆˆˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰‰‰‰‰‰‰‰‰‰ˆÿÿÿÿÿÿÿÿÿÿˆ‰‰‰‰‰‰ÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿˆÿÿˆÿÿÿÿÿÿˆŽŽŽŽŽŽŽŽŽŽ‰‰‰‰‰‰ÿÿŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽŽŽŽŽŽÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ . $  . '' . J$$$ JÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTˆ‹TˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTUÿÿÿÿÿÿÿÿÿÿÿÿÿÿOPÿÿÿÿOOOOOOOOOOPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPPPPPPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ *ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@ @@6ocamldep, version %s@.*@[%a%a@]@.(@[%a@]@.4@[I/O error:@ %s@]@.#.ml#.ml$.mli$.cmi @@$.cmo$.cmx$.mli$.mli @@$.cmi 1Ocaml and preprocessor have incompatible versions &camlpp*%s %s > %s4Preprocessing error ": ! ! ! $.mli$.mli#.ml$.cmx$.cmi$.cmi#.ml#.ml$.cmx$.cmo$.cmx!/7@[Bad -I option: %s@]@. ": &\ 9Ocamldep.Outdated_version ,Usage: ocamldep [-I ] [-native] KPrint all module dependencies in raw form (output is not suitable for make)(-modules7 Print version and exit(-version H (for Windows) Use forward slash / instead of backslash \ in file paths&-slash 6 Pipe sources through preprocessor #-pp F Generate dependencies for a pure native-code project (no .cmo files)'-native 3 Add to the list of include directories"-I@@„•¦¾/Ž…P ÃÐÐÐÐÐ@°@#ArgAØ@A°@%ArrayAjÐ@°@&BufferA„@AB°@$CharAÐÐÐ@°@'ClflagsAQ@A°@&ConfigAMÐ@°@&DependAŒ@AB°@&DigestAÛÐ@°@(FilenameA @ACD°@&FormatA¬ÐÐÐ@°@'HashtblAL@A°@%Int32AW@B°@%Int64AbÐÐ@°@%LexerA‡@A°@&LexingArÐ@°@'LinenumAV@ABCE°@$ListAyÐÐÐÐÐÐ@°@(LocationA˜@A°@)LongidentA›Ð@°@$MiscA @AB°@)NativeintAmÐÐ@°@(OcamldepAÁ@A°@%ParseA‹@BC°@&ParserAtÐÐ@°@'ParsingAv@A°@*PervasivesAdÐ@°@&PrintfA”Ð@°@&RandomAæ@ABCD°@#SetA~ÐÐÐ@°@(Std_exitAÂ@A°@&StringAHÐ@°@)SyntaxerrA¢@AB°@#SysAKÐÐ@°@(TerminfoAR@A°@(WarningsAÐ@°P-Match_failureCG@ABCE°Q-Out_of_memoryC@ÐÐÐ@°R0Invalid_argumentCC@A°S'FailureCBÐÐ@°T)Not_foundCF@A°U)Sys_errorCA@BC°V+End_of_fileCDÐÐ@°W0Division_by_zeroCE@A°X.Stack_overflowCHÐÐ@°Y.Sys_blocked_ioCI@A°Z.Assert_failureCJÐ@°[:Undefined_recursive_moduleCK@ABCDFG„•¦¾è˜BÔ  %Lexer0 q€ÔPúƒ±µÝ{}Q1ó  $List0Z2ü5kÑ`¿óaßÓ  %Array0©·˜Ý–eÂÓcV6Ò“@<  &Depend0^OTžv4ûÞºÏåja,]"  &Random0¬Yúh»ßÒZ¿‘Ûæ–Ÿ  &Printf0>ÁålÞøÛþÛU–#™^¢à  (Ocamldep0_™ð"b!Â2¶Å"=Ík  (Std_exit0̬˜Q Ë;ï«ÆM÷2µ7  'Linenum0>6'pf%å# ›bôÊY•½  'Clflags0{q8Q½­òˆ ‡µ-Û‹óè  &Lexing0AS\6jÞS¡ õà¹(  %Parse0¨´N¼Ö·º»B‹Sµrô  &String0þÈ)+± -,{‹K§¸:}‹  &Buffer0EôfÎFòÚäç}ØP__  )Syntaxerr0¢__MPÀýšSNKWÂ1w¢  )Nativeint0£À&p­Ò¥XKä¢QôP  &Digest0ÿwì\"¥ £kx¤J§xâ  &Config06T“y+dl ùt  $Char0  Õ…F€¶”š/°ÊNa  )Parsetree0ö?ë8k¹ÍÚçŽ4ñŒ  'Parsing0p6à »õ+±ñÔè¦R: æ  (Asttypes0ô-˶ҤŸ(ûmx`sð  %Int640M.ßpiÖ€wyS¼ÌìU  (Filename0BMCeï)–â²r;ú  (Warnings0ir HçVßí§nX^^  $Misc0Û¬˜ÿcÜW6«†i‘Z  (Terminfo0•ÝKIthÄ/§Û ädw|  'Hashtbl0!òáÜf{çèTõsÁ‚·  &Format0gø¥',ð÷oj$ðt  #Obj0t~øÀ'•–èãêÓØ‘í  #Sys0ŒÎw B·ÐäØUiÁ]xAÖ  %Int320+îoCäß…m·U£raC  #Set0¡¦ÄÑÅžAPÃŒE6  #Arg0|ÇÓL àžÎ5”Äð  *Pervasives0qøˆE;&‰XF rðt“  )Longident0+¥³`Cfi“eûØÉer   (Location0XëîþU[T”Ç]²ÎÎZô  &Parser0NVÛ×Úû¯¢ü<£ õ@CODEùlDLPTDLLSPRIMtDATACÚSYMBCCRCSüCaml1999X008omake-0.9.8.5/ocamldep/OMakefile0000664000152300015230000000035110535120777014504 0ustar jyhjyh# # Install the bytecode ocamldep. # We hope that someday the OCaml team will # support this option. # install: ocamldep-omake mkdir -p $(INSTALL_BINDIR) cp -f -m 555 ocamldep-omake $(INSTALL_BINDIR)/ clean: rm -f *.omc omake-0.9.8.5/ocamldep/LICENSE.ocamldep-omake0000664000152300015230000000074310464477526016624 0ustar jyhjyhThe ocamldep-omake binary is a modified version of the ocamldep included in OCaml 3.09.2 that is Copyright Institut National de Recherche en Informatique et en Automatique and distributed under the terms of the Q Public License version 1.0. The source code for the unmodified version is available at http://caml.inria.fr/distrib/ocaml-3.09/ocaml-3.09.2.tar.bz2 The patch that was used to compile this modified version is available from http://caml.inria.fr/mantis/view.php?id=4047 omake-0.9.8.5/make_tar0000775000152300015230000000024410311465505012644 0ustar jyhjyh#!/bin/sh -x # # Check out a fresh copy of omake # . make_checkout # # Make a tarball # mkdir -p $OMAKE/download tar -czf $OMAKE/download/$TARBALL omake-$VERSION omake-0.9.8.5/config_rpm0000664000152300015230000000146310466742750013220 0ustar jyhjyh#!/bin/sh # # Configuration variables for RPM packages # PATH=/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/local/bin # # Version number # OMAKE=`/bin/pwd` ARCHTYPE=i386 RPMROOT="`rpmbuild --showrc | grep '^-[0-9]*: _topdir' | sed -e 's,.*_topdir[[:space:]]*,,'`" if [ -d "$HOME/RPM" -a ! -d "$RPMROOT" ]; then RPMROOT="$HOME/RPM" fi if grep -q '^[^ ]*-[^ ]*$' version.txt; then VERSION=`sed -e 's/-.*//' < version.txt` RELEASE=`sed -e 's/[^-]*-//' < version.txt` else VERSION=`cat version.txt` RELEASE=0.devel fi # # Name of the RPM files # TARBALL=omake-$VERSION-$RELEASE.tar.gz SRC_ZIP=omake-$VERSION-$RELEASE.src.zip BINFILE=omake-$VERSION-$RELEASE.$ARCHTYPE.rpm SRCFILE=omake-$VERSION-$RELEASE.src.rpm # # Location of tftpboot directory # TFTPBOOT=/tftpboot/rh8.0 export PATH VERSION RELEASE omake-0.9.8.5/LICENSE0000664000152300015230000004310310456236453012151 0ustar jyhjyh GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. omake-0.9.8.5/test/0000775000152300015230000000000010660137221012110 5ustar jyhjyhomake-0.9.8.5/test/parse/0000775000152300015230000000000010660137221013222 5ustar jyhjyhomake-0.9.8.5/test/parse/C/0000775000152300015230000000000010660137221013404 5ustar jyhjyhomake-0.9.8.5/test/parse/C/input.c0000664000152300015230000000006210320050055014675 0ustar jyhjyhint main(int argc, char **argv) { return 0; } omake-0.9.8.5/test/parse/C/Test0000664000152300015230000000014410320050055014235 0ustar jyhjyhopen parse/C/Parse prog = $(parser.parse-file prog, input.c) println($"Prog = $(prog.to-string)") omake-0.9.8.5/test/regex/0000775000152300015230000000000010660137221013222 5ustar jyhjyhomake-0.9.8.5/test/regex/Test40000664000152300015230000000023310310356400014140 0ustar jyhjyh# # Nested args # println(This should print 'yB A') match $'CADCxBDCyBDCAD' case $'(C(\(.B\)|\(A\))*D)*' println('$*') default println(Match failed) omake-0.9.8.5/test/regex/Test30000664000152300015230000000134710231032571014150 0ustar jyhjyh# # Test bol and eol delimiters # println(This should print $"'fooX'") match $'fooXboo' case $'^.*X' println($0) default println(Match failed) println(This should not match) match $'fooXboo' case $'^.*X$' println($0) default println(Match failed) println(This should print $"'fooX foo'") match $'fooX' case $'^\(.*\)X' println($0 $1) default println(Match failed) println($"This should print 'Xboo'") match $'fooXboo' case $'X.*' println($0) default println(Match failed) println($"This should print 'Xboo'") match $'fooXboo' case $'X.*$' println($0) default println(Match failed) println($"This should print 'Xboo bo'") match $'fooXboo' case $'X\(.*\)o$' println($0 $1) default println(Match failed) omake-0.9.8.5/test/regex/Test20000664000152300015230000000061510231006747014152 0ustar jyhjyh# # Test the search function # println($"This should print 'foo'") match $'abcfofoodef' case $'foo' println($0) default println(Match failed) println($"This should print 'abcfofoo'") match $'abcfofoodef' case $'.*foo' println($0) default println(Match failed) println($"This should print 'fofoo'") match $'abcfofoodef' case $'f.*foo' println($0) default println(Match failed) omake-0.9.8.5/test/regex/Test10000664000152300015230000000276510231006747014161 0ustar jyhjyhprintln(This should print $"'x'") match $'x' case $'.*' println($0) default println(Match failed) println($"This should print 'foo'") match $'abcfoodef' case $'foo' println($0) default println(Match failed) println(This should print $"'d'") match $'abcdef' case $'g' println(Incorrect match) println($0) case $'d' println($0) default println(Match failed) println(This should print $"'d'") match $'abcdef' case $'bc\(.*\)ef' println($1) default println(Match failed) println(This should print $"'foo'") match $'fooXbarZmoo' case $'\(.*\)X' println($*) default println(Match failed) # # Delimiters # println($"This should print 'foo bar' (no extra spaces)") match $'fooXbarYmoo' case $'\(.*\)X\(.*\)Y' println($(string $*)) default println(Match failed) println($"This should print 'fooXbar moo' (no extra spaces)") match $'fooXbarXmooYbar' case $'\(.*\)X\(.*\)Y' println($(string $*)) default println(Match failed) # # Nested arguments # println($"This should print 'moo' (no extra spaces)") match $'fooXbooXmooXgoo' case $'(\(.*\)X)*' println($(string $*)) default println(Match failed) println($"This should print 'fooXbooXmooX moo' (no extra spaces)") match $'fooXbooXmooXgoo' case $'\((\(.*\)X)*\)' println($(string $*)) default println(Match failed) # # Other tests # println($"This should print '1 is xyz' and '2 is bar'") match foo_xyz/bar.a case foo_\\\(.*\\\)/\\\(.*\\\)\.a println(1 is $1) println(2 is $2) default println(Match failed) omake-0.9.8.5/test/targets/0000775000152300015230000000000010660137221013561 5ustar jyhjyhomake-0.9.8.5/test/targets/Test3/0000775000152300015230000000000010660137221014563 5ustar jyhjyhomake-0.9.8.5/test/targets/Test3/run.osh0000664000152300015230000000036010655707434016116 0ustar jyhjyhrm -f a b c .omakedb if $(not $(shell-success omake a b)) println($"Omake has correctly reported an error") exit 0 if $(not $(test -e a -a -e b)) eprintln($"Error: omake call was successful, but target was not created") exit 2 omake-0.9.8.5/test/targets/Test3/OMakefile0000664000152300015230000000007210652462470016351 0ustar jyhjyhfoo(arg) = printvln($@) touch $@ a b: foo(.) omake-0.9.8.5/test/targets/Test3/OMakeroot0000664000152300015230000000315610652462470016423 0ustar jyhjyh######################################################################## # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the # File is furnished to do so, subject to the following condition: # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE FILE OR # THE USE OR OTHER DEALINGS IN THE FILE. ######################################################################## # The standard OMakeroot file. # You will not normally need to modify this file. # By default, your changes should be placed in the # OMakefile in this directory. # # If you decide to modify this file, note that it uses exactly # the same syntax as the OMakefile. # # # Include the standard installed configuration files. # Any of these can be deleted if you are not using them, # but you probably want to keep the Common file. # open build/C open build/OCaml open build/LaTeX # # The command-line variables are defined *after* the # standard configuration has been loaded. # DefineCommandVars() # # Include the OMakefile in this directory. # .SUBDIRS: . omake-0.9.8.5/test/targets/Test2/0000775000152300015230000000000010660137221014562 5ustar jyhjyhomake-0.9.8.5/test/targets/Test2/OMakefile0000664000152300015230000000023610654713446016356 0ustar jyhjyhd = $(CWD) .PHONY: foo foo: section cd .. if $(equal $(CWD), $(d)) eprintln(Ineffective cd) exit(1) .DEFAULT: foo omake-0.9.8.5/test/targets/Test2/OMakeroot0000664000152300015230000000001410654713446016414 0ustar jyhjyh.SUBDIRS: . omake-0.9.8.5/test/targets/Test1/0000775000152300015230000000000010660137221014561 5ustar jyhjyhomake-0.9.8.5/test/targets/Test1/OMakefile0000664000152300015230000000041010654713446016347 0ustar jyhjyhROOT = $(dir .) rm -rf A mkdir A rm -rf B mkdir B .PHONY: all .SUBDIRS: A Copy(f) = println(Copy $(f) in $(fullname $(CWD))) f = $(ROOT)/A/$(f) $(f) : echo $(f) > $@ all : $(f) export Copy .SUBDIRS: B Copy(x) .DEFAULT: all omake-0.9.8.5/test/targets/Test1/OMakeroot0000664000152300015230000000001410654713446016413 0ustar jyhjyh.SUBDIRS: . omake-0.9.8.5/test/shell/0000775000152300015230000000000010660137221013217 5ustar jyhjyhomake-0.9.8.5/test/shell/Test4/0000775000152300015230000000000010660137221014222 5ustar jyhjyhomake-0.9.8.5/test/shell/Test4/run.osh0000664000152300015230000000132510654713446015556 0ustar jyhjyh# The "exit" command should abort the current shell alias, but not the whole # execution. Shell. += true(argv) = println($'Running internal "true"') exit 0 false(argv) = println($'Running internal "false"') exit 1 false_five(argv) = exit 5 false_or1(argv) = false_five || exit 10 false_or2(argv) = false_five || exit 10 exit 0 ABORT_ON_COMMAND_ERROR = false false || true test(prog, val) = code = $(shell-code $(prog)) OK = $(eq $(code), $(val)) eprintln($"$(prog): expected $(val), got $(code) - $(if $(OK), OK, FAILED!)") if $(not $(OK)) exit 1 test(true, 0) test(false, 1) test(false_five, 5) test(false_or1, 10) test(false_or2, 10) omake-0.9.8.5/test/shell/Test3/0000775000152300015230000000000010660137221014221 5ustar jyhjyhomake-0.9.8.5/test/shell/Test3/run.osh0000664000152300015230000000066410640246522015551 0ustar jyhjyhABORT_ON_COMMAND_ERROR = false Shell. += run_foo(argv) = foo | grep 5. test_close(argv) = fail = false awk(b, $(stdin)) case $'close[(][)]: Bad file descriptor' eprintln($"!!: $0") fail = true export default eprintln($"OK: $0") if $(fail) eprintln($"Test failed!") exit 1 (( echo Starting; run_foo; echo Done ) |& test_close) || exit 5 omake-0.9.8.5/test/shell/Test2/0000775000152300015230000000000010660137221014220 5ustar jyhjyhomake-0.9.8.5/test/shell/Test2/run.osh0000664000152300015230000000015110640040771015535 0ustar jyhjyhopen ../../diff omake --no--progress |grep -v 'omake.*[0-9] sec' > stdout diff -u stdout stdout.expected omake-0.9.8.5/test/shell/Test2/OMakefile0000664000152300015230000000051110640002226015766 0ustar jyhjyh# # Make sure the output doesn't block from an alias # that produces a lot of output. # Shell. += barf(argv) = i = 0 while $(lt $i, 100000) println($i ........................................................................) i = $(add $i, 1) .PHONY: all all: barf .DEFAULT: all omake-0.9.8.5/test/shell/Test2/stdout.expected0000664000152300015230003606003110642243253017301 0ustar jyhjyh- build . + Shell.barf() 0 ........................................................................ 1 ........................................................................ 2 ........................................................................ 3 ........................................................................ 4 ........................................................................ 5 ........................................................................ 6 ........................................................................ 7 ........................................................................ 8 ........................................................................ 9 ........................................................................ 10 ........................................................................ 11 ........................................................................ 12 ........................................................................ 13 ........................................................................ 14 ........................................................................ 15 ........................................................................ 16 ........................................................................ 17 ........................................................................ 18 ........................................................................ 19 ........................................................................ 20 ........................................................................ 21 ........................................................................ 22 ........................................................................ 23 ........................................................................ 24 ........................................................................ 25 ........................................................................ 26 ........................................................................ 27 ........................................................................ 28 ........................................................................ 29 ........................................................................ 30 ........................................................................ 31 ........................................................................ 32 ........................................................................ 33 ........................................................................ 34 ........................................................................ 35 ........................................................................ 36 ........................................................................ 37 ........................................................................ 38 ........................................................................ 39 ........................................................................ 40 ........................................................................ 41 ........................................................................ 42 ........................................................................ 43 ........................................................................ 44 ........................................................................ 45 ........................................................................ 46 ........................................................................ 47 ........................................................................ 48 ........................................................................ 49 ........................................................................ 50 ........................................................................ 51 ........................................................................ 52 ........................................................................ 53 ........................................................................ 54 ........................................................................ 55 ........................................................................ 56 ........................................................................ 57 ........................................................................ 58 ........................................................................ 59 ........................................................................ 60 ........................................................................ 61 ........................................................................ 62 ........................................................................ 63 ........................................................................ 64 ........................................................................ 65 ........................................................................ 66 ........................................................................ 67 ........................................................................ 68 ........................................................................ 69 ........................................................................ 70 ........................................................................ 71 ........................................................................ 72 ........................................................................ 73 ........................................................................ 74 ........................................................................ 75 ........................................................................ 76 ........................................................................ 77 ........................................................................ 78 ........................................................................ 79 ........................................................................ 80 ........................................................................ 81 ........................................................................ 82 ........................................................................ 83 ........................................................................ 84 ........................................................................ 85 ........................................................................ 86 ........................................................................ 87 ........................................................................ 88 ........................................................................ 89 ........................................................................ 90 ........................................................................ 91 ........................................................................ 92 ........................................................................ 93 ........................................................................ 94 ........................................................................ 95 ........................................................................ 96 ........................................................................ 97 ........................................................................ 98 ........................................................................ 99 ........................................................................ 100 ........................................................................ 101 ........................................................................ 102 ........................................................................ 103 ........................................................................ 104 ........................................................................ 105 ........................................................................ 106 ........................................................................ 107 ........................................................................ 108 ........................................................................ 109 ........................................................................ 110 ........................................................................ 111 ........................................................................ 112 ........................................................................ 113 ........................................................................ 114 ........................................................................ 115 ........................................................................ 116 ........................................................................ 117 ........................................................................ 118 ........................................................................ 119 ........................................................................ 120 ........................................................................ 121 ........................................................................ 122 ........................................................................ 123 ........................................................................ 124 ........................................................................ 125 ........................................................................ 126 ........................................................................ 127 ........................................................................ 128 ........................................................................ 129 ........................................................................ 130 ........................................................................ 131 ........................................................................ 132 ........................................................................ 133 ........................................................................ 134 ........................................................................ 135 ........................................................................ 136 ........................................................................ 137 ........................................................................ 138 ........................................................................ 139 ........................................................................ 140 ........................................................................ 141 ........................................................................ 142 ........................................................................ 143 ........................................................................ 144 ........................................................................ 145 ........................................................................ 146 ........................................................................ 147 ........................................................................ 148 ........................................................................ 149 ........................................................................ 150 ........................................................................ 151 ........................................................................ 152 ........................................................................ 153 ........................................................................ 154 ........................................................................ 155 ........................................................................ 156 ........................................................................ 157 ........................................................................ 158 ........................................................................ 159 ........................................................................ 160 ........................................................................ 161 ........................................................................ 162 ........................................................................ 163 ........................................................................ 164 ........................................................................ 165 ........................................................................ 166 ........................................................................ 167 ........................................................................ 168 ........................................................................ 169 ........................................................................ 170 ........................................................................ 171 ........................................................................ 172 ........................................................................ 173 ........................................................................ 174 ........................................................................ 175 ........................................................................ 176 ........................................................................ 177 ........................................................................ 178 ........................................................................ 179 ........................................................................ 180 ........................................................................ 181 ........................................................................ 182 ........................................................................ 183 ........................................................................ 184 ........................................................................ 185 ........................................................................ 186 ........................................................................ 187 ........................................................................ 188 ........................................................................ 189 ........................................................................ 190 ........................................................................ 191 ........................................................................ 192 ........................................................................ 193 ........................................................................ 194 ........................................................................ 195 ........................................................................ 196 ........................................................................ 197 ........................................................................ 198 ........................................................................ 199 ........................................................................ 200 ........................................................................ 201 ........................................................................ 202 ........................................................................ 203 ........................................................................ 204 ........................................................................ 205 ........................................................................ 206 ........................................................................ 207 ........................................................................ 208 ........................................................................ 209 ........................................................................ 210 ........................................................................ 211 ........................................................................ 212 ........................................................................ 213 ........................................................................ 214 ........................................................................ 215 ........................................................................ 216 ........................................................................ 217 ........................................................................ 218 ........................................................................ 219 ........................................................................ 220 ........................................................................ 221 ........................................................................ 222 ........................................................................ 223 ........................................................................ 224 ........................................................................ 225 ........................................................................ 226 ........................................................................ 227 ........................................................................ 228 ........................................................................ 229 ........................................................................ 230 ........................................................................ 231 ........................................................................ 232 ........................................................................ 233 ........................................................................ 234 ........................................................................ 235 ........................................................................ 236 ........................................................................ 237 ........................................................................ 238 ........................................................................ 239 ........................................................................ 240 ........................................................................ 241 ........................................................................ 242 ........................................................................ 243 ........................................................................ 244 ........................................................................ 245 ........................................................................ 246 ........................................................................ 247 ........................................................................ 248 ........................................................................ 249 ........................................................................ 250 ........................................................................ 251 ........................................................................ 252 ........................................................................ 253 ........................................................................ 254 ........................................................................ 255 ........................................................................ 256 ........................................................................ 257 ........................................................................ 258 ........................................................................ 259 ........................................................................ 260 ........................................................................ 261 ........................................................................ 262 ........................................................................ 263 ........................................................................ 264 ........................................................................ 265 ........................................................................ 266 ........................................................................ 267 ........................................................................ 268 ........................................................................ 269 ........................................................................ 270 ........................................................................ 271 ........................................................................ 272 ........................................................................ 273 ........................................................................ 274 ........................................................................ 275 ........................................................................ 276 ........................................................................ 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 ........................................................................ 306 ........................................................................ 307 ........................................................................ 308 ........................................................................ 309 ........................................................................ 310 ........................................................................ 311 ........................................................................ 312 ........................................................................ 313 ........................................................................ 314 ........................................................................ 315 ........................................................................ 316 ........................................................................ 317 ........................................................................ 318 ........................................................................ 319 ........................................................................ 320 ........................................................................ 321 ........................................................................ 322 ........................................................................ 323 ........................................................................ 324 ........................................................................ 325 ........................................................................ 326 ........................................................................ 327 ........................................................................ 328 ........................................................................ 329 ........................................................................ 330 ........................................................................ 331 ........................................................................ 332 ........................................................................ 333 ........................................................................ 334 ........................................................................ 335 ........................................................................ 336 ........................................................................ 337 ........................................................................ 338 ........................................................................ 339 ........................................................................ 340 ........................................................................ 341 ........................................................................ 342 ........................................................................ 343 ........................................................................ 344 ........................................................................ 345 ........................................................................ 346 ........................................................................ 347 ........................................................................ 348 ........................................................................ 349 ........................................................................ 350 ........................................................................ 351 ........................................................................ 352 ........................................................................ 353 ........................................................................ 354 ........................................................................ 355 ........................................................................ 356 ........................................................................ 357 ........................................................................ 358 ........................................................................ 359 ........................................................................ 360 ........................................................................ 361 ........................................................................ 362 ........................................................................ 363 ........................................................................ 364 ........................................................................ 365 ........................................................................ 366 ........................................................................ 367 ........................................................................ 368 ........................................................................ 369 ........................................................................ 370 ........................................................................ 371 ........................................................................ 372 ........................................................................ 373 ........................................................................ 374 ........................................................................ 375 ........................................................................ 376 ........................................................................ 377 ........................................................................ 378 ........................................................................ 379 ........................................................................ 380 ........................................................................ 381 ........................................................................ 382 ........................................................................ 383 ........................................................................ 384 ........................................................................ 385 ........................................................................ 386 ........................................................................ 387 ........................................................................ 388 ........................................................................ 389 ........................................................................ 390 ........................................................................ 391 ........................................................................ 392 ........................................................................ 393 ........................................................................ 394 ........................................................................ 395 ........................................................................ 396 ........................................................................ 397 ........................................................................ 398 ........................................................................ 399 ........................................................................ 400 ........................................................................ 401 ........................................................................ 402 ........................................................................ 403 ........................................................................ 404 ........................................................................ 405 ........................................................................ 406 ........................................................................ 407 ........................................................................ 408 ........................................................................ 409 ........................................................................ 410 ........................................................................ 411 ........................................................................ 412 ........................................................................ 413 ........................................................................ 414 ........................................................................ 415 ........................................................................ 416 ........................................................................ 417 ........................................................................ 418 ........................................................................ 419 ........................................................................ 420 ........................................................................ 421 ........................................................................ 422 ........................................................................ 423 ........................................................................ 424 ........................................................................ 425 ........................................................................ 426 ........................................................................ 427 ........................................................................ 428 ........................................................................ 429 ........................................................................ 430 ........................................................................ 431 ........................................................................ 432 ........................................................................ 433 ........................................................................ 434 ........................................................................ 435 ........................................................................ 436 ........................................................................ 437 ........................................................................ 438 ........................................................................ 439 ........................................................................ 440 ........................................................................ 441 ........................................................................ 442 ........................................................................ 443 ........................................................................ 444 ........................................................................ 445 ........................................................................ 446 ........................................................................ 447 ........................................................................ 448 ........................................................................ 449 ........................................................................ 450 ........................................................................ 451 ........................................................................ 452 ........................................................................ 453 ........................................................................ 454 ........................................................................ 455 ........................................................................ 456 ........................................................................ 457 ........................................................................ 458 ........................................................................ 459 ........................................................................ 460 ........................................................................ 461 ........................................................................ 462 ........................................................................ 463 ........................................................................ 464 ........................................................................ 465 ........................................................................ 466 ........................................................................ 467 ........................................................................ 468 ........................................................................ 469 ........................................................................ 470 ........................................................................ 471 ........................................................................ 472 ........................................................................ 473 ........................................................................ 474 ........................................................................ 475 ........................................................................ 476 ........................................................................ 477 ........................................................................ 478 ........................................................................ 479 ........................................................................ 480 ........................................................................ 481 ........................................................................ 482 ........................................................................ 483 ........................................................................ 484 ........................................................................ 485 ........................................................................ 486 ........................................................................ 487 ........................................................................ 488 ........................................................................ 489 ........................................................................ 490 ........................................................................ 491 ........................................................................ 492 ........................................................................ 493 ........................................................................ 494 ........................................................................ 495 ........................................................................ 496 ........................................................................ 497 ........................................................................ 498 ........................................................................ 499 ........................................................................ 500 ........................................................................ 501 ........................................................................ 502 ........................................................................ 503 ........................................................................ 504 ........................................................................ 505 ........................................................................ 506 ........................................................................ 507 ........................................................................ 508 ........................................................................ 509 ........................................................................ 510 ........................................................................ 511 ........................................................................ 512 ........................................................................ 513 ........................................................................ 514 ........................................................................ 515 ........................................................................ 516 ........................................................................ 517 ........................................................................ 518 ........................................................................ 519 ........................................................................ 520 ........................................................................ 521 ........................................................................ 522 ........................................................................ 523 ........................................................................ 524 ........................................................................ 525 ........................................................................ 526 ........................................................................ 527 ........................................................................ 528 ........................................................................ 529 ........................................................................ 530 ........................................................................ 531 ........................................................................ 532 ........................................................................ 533 ........................................................................ 534 ........................................................................ 535 ........................................................................ 536 ........................................................................ 537 ........................................................................ 538 ........................................................................ 539 ........................................................................ 540 ........................................................................ 541 ........................................................................ 542 ........................................................................ 543 ........................................................................ 544 ........................................................................ 545 ........................................................................ 546 ........................................................................ 547 ........................................................................ 548 ........................................................................ 549 ........................................................................ 550 ........................................................................ 551 ........................................................................ 552 ........................................................................ 553 ........................................................................ 554 ........................................................................ 555 ........................................................................ 556 ........................................................................ 557 ........................................................................ 558 ........................................................................ 559 ........................................................................ 560 ........................................................................ 561 ........................................................................ 562 ........................................................................ 563 ........................................................................ 564 ........................................................................ 565 ........................................................................ 566 ........................................................................ 567 ........................................................................ 568 ........................................................................ 569 ........................................................................ 570 ........................................................................ 571 ........................................................................ 572 ........................................................................ 573 ........................................................................ 574 ........................................................................ 575 ........................................................................ 576 ........................................................................ 577 ........................................................................ 578 ........................................................................ 579 ........................................................................ 580 ........................................................................ 581 ........................................................................ 582 ........................................................................ 583 ........................................................................ 584 ........................................................................ 585 ........................................................................ 586 ........................................................................ 587 ........................................................................ 588 ........................................................................ 589 ........................................................................ 590 ........................................................................ 591 ........................................................................ 592 ........................................................................ 593 ........................................................................ 594 ........................................................................ 595 ........................................................................ 596 ........................................................................ 597 ........................................................................ 598 ........................................................................ 599 ........................................................................ 600 ........................................................................ 601 ........................................................................ 602 ........................................................................ 603 ........................................................................ 604 ........................................................................ 605 ........................................................................ 606 ........................................................................ 607 ........................................................................ 608 ........................................................................ 609 ........................................................................ 610 ........................................................................ 611 ........................................................................ 612 ........................................................................ 613 ........................................................................ 614 ........................................................................ 615 ........................................................................ 616 ........................................................................ 617 ........................................................................ 618 ........................................................................ 619 ........................................................................ 620 ........................................................................ 621 ........................................................................ 622 ........................................................................ 623 ........................................................................ 624 ........................................................................ 625 ........................................................................ 626 ........................................................................ 627 ........................................................................ 628 ........................................................................ 629 ........................................................................ 630 ........................................................................ 631 ........................................................................ 632 ........................................................................ 633 ........................................................................ 634 ........................................................................ 635 ........................................................................ 636 ........................................................................ 637 ........................................................................ 638 ........................................................................ 639 ........................................................................ 640 ........................................................................ 641 ........................................................................ 642 ........................................................................ 643 ........................................................................ 644 ........................................................................ 645 ........................................................................ 646 ........................................................................ 647 ........................................................................ 648 ........................................................................ 649 ........................................................................ 650 ........................................................................ 651 ........................................................................ 652 ........................................................................ 653 ........................................................................ 654 ........................................................................ 655 ........................................................................ 656 ........................................................................ 657 ........................................................................ 658 ........................................................................ 659 ........................................................................ 660 ........................................................................ 661 ........................................................................ 662 ........................................................................ 663 ........................................................................ 664 ........................................................................ 665 ........................................................................ 666 ........................................................................ 667 ........................................................................ 668 ........................................................................ 669 ........................................................................ 670 ........................................................................ 671 ........................................................................ 672 ........................................................................ 673 ........................................................................ 674 ........................................................................ 675 ........................................................................ 676 ........................................................................ 677 ........................................................................ 678 ........................................................................ 679 ........................................................................ 680 ........................................................................ 681 ........................................................................ 682 ........................................................................ 683 ........................................................................ 684 ........................................................................ 685 ........................................................................ 686 ........................................................................ 687 ........................................................................ 688 ........................................................................ 689 ........................................................................ 690 ........................................................................ 691 ........................................................................ 692 ........................................................................ 693 ........................................................................ 694 ........................................................................ 695 ........................................................................ 696 ........................................................................ 697 ........................................................................ 698 ........................................................................ 699 ........................................................................ 700 ........................................................................ 701 ........................................................................ 702 ........................................................................ 703 ........................................................................ 704 ........................................................................ 705 ........................................................................ 706 ........................................................................ 707 ........................................................................ 708 ........................................................................ 709 ........................................................................ 710 ........................................................................ 711 ........................................................................ 712 ........................................................................ 713 ........................................................................ 714 ........................................................................ 715 ........................................................................ 716 ........................................................................ 717 ........................................................................ 718 ........................................................................ 719 ........................................................................ 720 ........................................................................ 721 ........................................................................ 722 ........................................................................ 723 ........................................................................ 724 ........................................................................ 725 ........................................................................ 726 ........................................................................ 727 ........................................................................ 728 ........................................................................ 729 ........................................................................ 730 ........................................................................ 731 ........................................................................ 732 ........................................................................ 733 ........................................................................ 734 ........................................................................ 735 ........................................................................ 736 ........................................................................ 737 ........................................................................ 738 ........................................................................ 739 ........................................................................ 740 ........................................................................ 741 ........................................................................ 742 ........................................................................ 743 ........................................................................ 744 ........................................................................ 745 ........................................................................ 746 ........................................................................ 747 ........................................................................ 748 ........................................................................ 749 ........................................................................ 750 ........................................................................ 751 ........................................................................ 752 ........................................................................ 753 ........................................................................ 754 ........................................................................ 755 ........................................................................ 756 ........................................................................ 757 ........................................................................ 758 ........................................................................ 759 ........................................................................ 760 ........................................................................ 761 ........................................................................ 762 ........................................................................ 763 ........................................................................ 764 ........................................................................ 765 ........................................................................ 766 ........................................................................ 767 ........................................................................ 768 ........................................................................ 769 ........................................................................ 770 ........................................................................ 771 ........................................................................ 772 ........................................................................ 773 ........................................................................ 774 ........................................................................ 775 ........................................................................ 776 ........................................................................ 777 ........................................................................ 778 ........................................................................ 779 ........................................................................ 780 ........................................................................ 781 ........................................................................ 782 ........................................................................ 783 ........................................................................ 784 ........................................................................ 785 ........................................................................ 786 ........................................................................ 787 ........................................................................ 788 ........................................................................ 789 ........................................................................ 790 ........................................................................ 791 ........................................................................ 792 ........................................................................ 793 ........................................................................ 794 ........................................................................ 795 ........................................................................ 796 ........................................................................ 797 ........................................................................ 798 ........................................................................ 799 ........................................................................ 800 ........................................................................ 801 ........................................................................ 802 ........................................................................ 803 ........................................................................ 804 ........................................................................ 805 ........................................................................ 806 ........................................................................ 807 ........................................................................ 808 ........................................................................ 809 ........................................................................ 810 ........................................................................ 811 ........................................................................ 812 ........................................................................ 813 ........................................................................ 814 ........................................................................ 815 ........................................................................ 816 ........................................................................ 817 ........................................................................ 818 ........................................................................ 819 ........................................................................ 820 ........................................................................ 821 ........................................................................ 822 ........................................................................ 823 ........................................................................ 824 ........................................................................ 825 ........................................................................ 826 ........................................................................ 827 ........................................................................ 828 ........................................................................ 829 ........................................................................ 830 ........................................................................ 831 ........................................................................ 832 ........................................................................ 833 ........................................................................ 834 ........................................................................ 835 ........................................................................ 836 ........................................................................ 837 ........................................................................ 838 ........................................................................ 839 ........................................................................ 840 ........................................................................ 841 ........................................................................ 842 ........................................................................ 843 ........................................................................ 844 ........................................................................ 845 ........................................................................ 846 ........................................................................ 847 ........................................................................ 848 ........................................................................ 849 ........................................................................ 850 ........................................................................ 851 ........................................................................ 852 ........................................................................ 853 ........................................................................ 854 ........................................................................ 855 ........................................................................ 856 ........................................................................ 857 ........................................................................ 858 ........................................................................ 859 ........................................................................ 860 ........................................................................ 861 ........................................................................ 862 ........................................................................ 863 ........................................................................ 864 ........................................................................ 865 ........................................................................ 866 ........................................................................ 867 ........................................................................ 868 ........................................................................ 869 ........................................................................ 870 ........................................................................ 871 ........................................................................ 872 ........................................................................ 873 ........................................................................ 874 ........................................................................ 875 ........................................................................ 876 ........................................................................ 877 ........................................................................ 878 ........................................................................ 879 ........................................................................ 880 ........................................................................ 881 ........................................................................ 882 ........................................................................ 883 ........................................................................ 884 ........................................................................ 885 ........................................................................ 886 ........................................................................ 887 ........................................................................ 888 ........................................................................ 889 ........................................................................ 890 ........................................................................ 891 ........................................................................ 892 ........................................................................ 893 ........................................................................ 894 ........................................................................ 895 ........................................................................ 896 ........................................................................ 897 ........................................................................ 898 ........................................................................ 899 ........................................................................ 900 ........................................................................ 901 ........................................................................ 902 ........................................................................ 903 ........................................................................ 904 ........................................................................ 905 ........................................................................ 906 ........................................................................ 907 ........................................................................ 908 ........................................................................ 909 ........................................................................ 910 ........................................................................ 911 ........................................................................ 912 ........................................................................ 913 ........................................................................ 914 ........................................................................ 915 ........................................................................ 916 ........................................................................ 917 ........................................................................ 918 ........................................................................ 919 ........................................................................ 920 ........................................................................ 921 ........................................................................ 922 ........................................................................ 923 ........................................................................ 924 ........................................................................ 925 ........................................................................ 926 ........................................................................ 927 ........................................................................ 928 ........................................................................ 929 ........................................................................ 930 ........................................................................ 931 ........................................................................ 932 ........................................................................ 933 ........................................................................ 934 ........................................................................ 935 ........................................................................ 936 ........................................................................ 937 ........................................................................ 938 ........................................................................ 939 ........................................................................ 940 ........................................................................ 941 ........................................................................ 942 ........................................................................ 943 ........................................................................ 944 ........................................................................ 945 ........................................................................ 946 ........................................................................ 947 ........................................................................ 948 ........................................................................ 949 ........................................................................ 950 ........................................................................ 951 ........................................................................ 952 ........................................................................ 953 ........................................................................ 954 ........................................................................ 955 ........................................................................ 956 ........................................................................ 957 ........................................................................ 958 ........................................................................ 959 ........................................................................ 960 ........................................................................ 961 ........................................................................ 962 ........................................................................ 963 ........................................................................ 964 ........................................................................ 965 ........................................................................ 966 ........................................................................ 967 ........................................................................ 968 ........................................................................ 969 ........................................................................ 970 ........................................................................ 971 ........................................................................ 972 ........................................................................ 973 ........................................................................ 974 ........................................................................ 975 ........................................................................ 976 ........................................................................ 977 ........................................................................ 978 ........................................................................ 979 ........................................................................ 980 ........................................................................ 981 ........................................................................ 982 ........................................................................ 983 ........................................................................ 984 ........................................................................ 985 ........................................................................ 986 ........................................................................ 987 ........................................................................ 988 ........................................................................ 989 ........................................................................ 990 ........................................................................ 991 ........................................................................ 992 ........................................................................ 993 ........................................................................ 994 ........................................................................ 995 ........................................................................ 996 ........................................................................ 997 ........................................................................ 998 ........................................................................ 999 ........................................................................ 1000 ........................................................................ 1001 ........................................................................ 1002 ........................................................................ 1003 ........................................................................ 1004 ........................................................................ 1005 ........................................................................ 1006 ........................................................................ 1007 ........................................................................ 1008 ........................................................................ 1009 ........................................................................ 1010 ........................................................................ 1011 ........................................................................ 1012 ........................................................................ 1013 ........................................................................ 1014 ........................................................................ 1015 ........................................................................ 1016 ........................................................................ 1017 ........................................................................ 1018 ........................................................................ 1019 ........................................................................ 1020 ........................................................................ 1021 ........................................................................ 1022 ........................................................................ 1023 ........................................................................ 1024 ........................................................................ 1025 ........................................................................ 1026 ........................................................................ 1027 ........................................................................ 1028 ........................................................................ 1029 ........................................................................ 1030 ........................................................................ 1031 ........................................................................ 1032 ........................................................................ 1033 ........................................................................ 1034 ........................................................................ 1035 ........................................................................ 1036 ........................................................................ 1037 ........................................................................ 1038 ........................................................................ 1039 ........................................................................ 1040 ........................................................................ 1041 ........................................................................ 1042 ........................................................................ 1043 ........................................................................ 1044 ........................................................................ 1045 ........................................................................ 1046 ........................................................................ 1047 ........................................................................ 1048 ........................................................................ 1049 ........................................................................ 1050 ........................................................................ 1051 ........................................................................ 1052 ........................................................................ 1053 ........................................................................ 1054 ........................................................................ 1055 ........................................................................ 1056 ........................................................................ 1057 ........................................................................ 1058 ........................................................................ 1059 ........................................................................ 1060 ........................................................................ 1061 ........................................................................ 1062 ........................................................................ 1063 ........................................................................ 1064 ........................................................................ 1065 ........................................................................ 1066 ........................................................................ 1067 ........................................................................ 1068 ........................................................................ 1069 ........................................................................ 1070 ........................................................................ 1071 ........................................................................ 1072 ........................................................................ 1073 ........................................................................ 1074 ........................................................................ 1075 ........................................................................ 1076 ........................................................................ 1077 ........................................................................ 1078 ........................................................................ 1079 ........................................................................ 1080 ........................................................................ 1081 ........................................................................ 1082 ........................................................................ 1083 ........................................................................ 1084 ........................................................................ 1085 ........................................................................ 1086 ........................................................................ 1087 ........................................................................ 1088 ........................................................................ 1089 ........................................................................ 1090 ........................................................................ 1091 ........................................................................ 1092 ........................................................................ 1093 ........................................................................ 1094 ........................................................................ 1095 ........................................................................ 1096 ........................................................................ 1097 ........................................................................ 1098 ........................................................................ 1099 ........................................................................ 1100 ........................................................................ 1101 ........................................................................ 1102 ........................................................................ 1103 ........................................................................ 1104 ........................................................................ 1105 ........................................................................ 1106 ........................................................................ 1107 ........................................................................ 1108 ........................................................................ 1109 ........................................................................ 1110 ........................................................................ 1111 ........................................................................ 1112 ........................................................................ 1113 ........................................................................ 1114 ........................................................................ 1115 ........................................................................ 1116 ........................................................................ 1117 ........................................................................ 1118 ........................................................................ 1119 ........................................................................ 1120 ........................................................................ 1121 ........................................................................ 1122 ........................................................................ 1123 ........................................................................ 1124 ........................................................................ 1125 ........................................................................ 1126 ........................................................................ 1127 ........................................................................ 1128 ........................................................................ 1129 ........................................................................ 1130 ........................................................................ 1131 ........................................................................ 1132 ........................................................................ 1133 ........................................................................ 1134 ........................................................................ 1135 ........................................................................ 1136 ........................................................................ 1137 ........................................................................ 1138 ........................................................................ 1139 ........................................................................ 1140 ........................................................................ 1141 ........................................................................ 1142 ........................................................................ 1143 ........................................................................ 1144 ........................................................................ 1145 ........................................................................ 1146 ........................................................................ 1147 ........................................................................ 1148 ........................................................................ 1149 ........................................................................ 1150 ........................................................................ 1151 ........................................................................ 1152 ........................................................................ 1153 ........................................................................ 1154 ........................................................................ 1155 ........................................................................ 1156 ........................................................................ 1157 ........................................................................ 1158 ........................................................................ 1159 ........................................................................ 1160 ........................................................................ 1161 ........................................................................ 1162 ........................................................................ 1163 ........................................................................ 1164 ........................................................................ 1165 ........................................................................ 1166 ........................................................................ 1167 ........................................................................ 1168 ........................................................................ 1169 ........................................................................ 1170 ........................................................................ 1171 ........................................................................ 1172 ........................................................................ 1173 ........................................................................ 1174 ........................................................................ 1175 ........................................................................ 1176 ........................................................................ 1177 ........................................................................ 1178 ........................................................................ 1179 ........................................................................ 1180 ........................................................................ 1181 ........................................................................ 1182 ........................................................................ 1183 ........................................................................ 1184 ........................................................................ 1185 ........................................................................ 1186 ........................................................................ 1187 ........................................................................ 1188 ........................................................................ 1189 ........................................................................ 1190 ........................................................................ 1191 ........................................................................ 1192 ........................................................................ 1193 ........................................................................ 1194 ........................................................................ 1195 ........................................................................ 1196 ........................................................................ 1197 ........................................................................ 1198 ........................................................................ 1199 ........................................................................ 1200 ........................................................................ 1201 ........................................................................ 1202 ........................................................................ 1203 ........................................................................ 1204 ........................................................................ 1205 ........................................................................ 1206 ........................................................................ 1207 ........................................................................ 1208 ........................................................................ 1209 ........................................................................ 1210 ........................................................................ 1211 ........................................................................ 1212 ........................................................................ 1213 ........................................................................ 1214 ........................................................................ 1215 ........................................................................ 1216 ........................................................................ 1217 ........................................................................ 1218 ........................................................................ 1219 ........................................................................ 1220 ........................................................................ 1221 ........................................................................ 1222 ........................................................................ 1223 ........................................................................ 1224 ........................................................................ 1225 ........................................................................ 1226 ........................................................................ 1227 ........................................................................ 1228 ........................................................................ 1229 ........................................................................ 1230 ........................................................................ 1231 ........................................................................ 1232 ........................................................................ 1233 ........................................................................ 1234 ........................................................................ 1235 ........................................................................ 1236 ........................................................................ 1237 ........................................................................ 1238 ........................................................................ 1239 ........................................................................ 1240 ........................................................................ 1241 ........................................................................ 1242 ........................................................................ 1243 ........................................................................ 1244 ........................................................................ 1245 ........................................................................ 1246 ........................................................................ 1247 ........................................................................ 1248 ........................................................................ 1249 ........................................................................ 1250 ........................................................................ 1251 ........................................................................ 1252 ........................................................................ 1253 ........................................................................ 1254 ........................................................................ 1255 ........................................................................ 1256 ........................................................................ 1257 ........................................................................ 1258 ........................................................................ 1259 ........................................................................ 1260 ........................................................................ 1261 ........................................................................ 1262 ........................................................................ 1263 ........................................................................ 1264 ........................................................................ 1265 ........................................................................ 1266 ........................................................................ 1267 ........................................................................ 1268 ........................................................................ 1269 ........................................................................ 1270 ........................................................................ 1271 ........................................................................ 1272 ........................................................................ 1273 ........................................................................ 1274 ........................................................................ 1275 ........................................................................ 1276 ........................................................................ 1277 ........................................................................ 1278 ........................................................................ 1279 ........................................................................ 1280 ........................................................................ 1281 ........................................................................ 1282 ........................................................................ 1283 ........................................................................ 1284 ........................................................................ 1285 ........................................................................ 1286 ........................................................................ 1287 ........................................................................ 1288 ........................................................................ 1289 ........................................................................ 1290 ........................................................................ 1291 ........................................................................ 1292 ........................................................................ 1293 ........................................................................ 1294 ........................................................................ 1295 ........................................................................ 1296 ........................................................................ 1297 ........................................................................ 1298 ........................................................................ 1299 ........................................................................ 1300 ........................................................................ 1301 ........................................................................ 1302 ........................................................................ 1303 ........................................................................ 1304 ........................................................................ 1305 ........................................................................ 1306 ........................................................................ 1307 ........................................................................ 1308 ........................................................................ 1309 ........................................................................ 1310 ........................................................................ 1311 ........................................................................ 1312 ........................................................................ 1313 ........................................................................ 1314 ........................................................................ 1315 ........................................................................ 1316 ........................................................................ 1317 ........................................................................ 1318 ........................................................................ 1319 ........................................................................ 1320 ........................................................................ 1321 ........................................................................ 1322 ........................................................................ 1323 ........................................................................ 1324 ........................................................................ 1325 ........................................................................ 1326 ........................................................................ 1327 ........................................................................ 1328 ........................................................................ 1329 ........................................................................ 1330 ........................................................................ 1331 ........................................................................ 1332 ........................................................................ 1333 ........................................................................ 1334 ........................................................................ 1335 ........................................................................ 1336 ........................................................................ 1337 ........................................................................ 1338 ........................................................................ 1339 ........................................................................ 1340 ........................................................................ 1341 ........................................................................ 1342 ........................................................................ 1343 ........................................................................ 1344 ........................................................................ 1345 ........................................................................ 1346 ........................................................................ 1347 ........................................................................ 1348 ........................................................................ 1349 ........................................................................ 1350 ........................................................................ 1351 ........................................................................ 1352 ........................................................................ 1353 ........................................................................ 1354 ........................................................................ 1355 ........................................................................ 1356 ........................................................................ 1357 ........................................................................ 1358 ........................................................................ 1359 ........................................................................ 1360 ........................................................................ 1361 ........................................................................ 1362 ........................................................................ 1363 ........................................................................ 1364 ........................................................................ 1365 ........................................................................ 1366 ........................................................................ 1367 ........................................................................ 1368 ........................................................................ 1369 ........................................................................ 1370 ........................................................................ 1371 ........................................................................ 1372 ........................................................................ 1373 ........................................................................ 1374 ........................................................................ 1375 ........................................................................ 1376 ........................................................................ 1377 ........................................................................ 1378 ........................................................................ 1379 ........................................................................ 1380 ........................................................................ 1381 ........................................................................ 1382 ........................................................................ 1383 ........................................................................ 1384 ........................................................................ 1385 ........................................................................ 1386 ........................................................................ 1387 ........................................................................ 1388 ........................................................................ 1389 ........................................................................ 1390 ........................................................................ 1391 ........................................................................ 1392 ........................................................................ 1393 ........................................................................ 1394 ........................................................................ 1395 ........................................................................ 1396 ........................................................................ 1397 ........................................................................ 1398 ........................................................................ 1399 ........................................................................ 1400 ........................................................................ 1401 ........................................................................ 1402 ........................................................................ 1403 ........................................................................ 1404 ........................................................................ 1405 ........................................................................ 1406 ........................................................................ 1407 ........................................................................ 1408 ........................................................................ 1409 ........................................................................ 1410 ........................................................................ 1411 ........................................................................ 1412 ........................................................................ 1413 ........................................................................ 1414 ........................................................................ 1415 ........................................................................ 1416 ........................................................................ 1417 ........................................................................ 1418 ........................................................................ 1419 ........................................................................ 1420 ........................................................................ 1421 ........................................................................ 1422 ........................................................................ 1423 ........................................................................ 1424 ........................................................................ 1425 ........................................................................ 1426 ........................................................................ 1427 ........................................................................ 1428 ........................................................................ 1429 ........................................................................ 1430 ........................................................................ 1431 ........................................................................ 1432 ........................................................................ 1433 ........................................................................ 1434 ........................................................................ 1435 ........................................................................ 1436 ........................................................................ 1437 ........................................................................ 1438 ........................................................................ 1439 ........................................................................ 1440 ........................................................................ 1441 ........................................................................ 1442 ........................................................................ 1443 ........................................................................ 1444 ........................................................................ 1445 ........................................................................ 1446 ........................................................................ 1447 ........................................................................ 1448 ........................................................................ 1449 ........................................................................ 1450 ........................................................................ 1451 ........................................................................ 1452 ........................................................................ 1453 ........................................................................ 1454 ........................................................................ 1455 ........................................................................ 1456 ........................................................................ 1457 ........................................................................ 1458 ........................................................................ 1459 ........................................................................ 1460 ........................................................................ 1461 ........................................................................ 1462 ........................................................................ 1463 ........................................................................ 1464 ........................................................................ 1465 ........................................................................ 1466 ........................................................................ 1467 ........................................................................ 1468 ........................................................................ 1469 ........................................................................ 1470 ........................................................................ 1471 ........................................................................ 1472 ........................................................................ 1473 ........................................................................ 1474 ........................................................................ 1475 ........................................................................ 1476 ........................................................................ 1477 ........................................................................ 1478 ........................................................................ 1479 ........................................................................ 1480 ........................................................................ 1481 ........................................................................ 1482 ........................................................................ 1483 ........................................................................ 1484 ........................................................................ 1485 ........................................................................ 1486 ........................................................................ 1487 ........................................................................ 1488 ........................................................................ 1489 ........................................................................ 1490 ........................................................................ 1491 ........................................................................ 1492 ........................................................................ 1493 ........................................................................ 1494 ........................................................................ 1495 ........................................................................ 1496 ........................................................................ 1497 ........................................................................ 1498 ........................................................................ 1499 ........................................................................ 1500 ........................................................................ 1501 ........................................................................ 1502 ........................................................................ 1503 ........................................................................ 1504 ........................................................................ 1505 ........................................................................ 1506 ........................................................................ 1507 ........................................................................ 1508 ........................................................................ 1509 ........................................................................ 1510 ........................................................................ 1511 ........................................................................ 1512 ........................................................................ 1513 ........................................................................ 1514 ........................................................................ 1515 ........................................................................ 1516 ........................................................................ 1517 ........................................................................ 1518 ........................................................................ 1519 ........................................................................ 1520 ........................................................................ 1521 ........................................................................ 1522 ........................................................................ 1523 ........................................................................ 1524 ........................................................................ 1525 ........................................................................ 1526 ........................................................................ 1527 ........................................................................ 1528 ........................................................................ 1529 ........................................................................ 1530 ........................................................................ 1531 ........................................................................ 1532 ........................................................................ 1533 ........................................................................ 1534 ........................................................................ 1535 ........................................................................ 1536 ........................................................................ 1537 ........................................................................ 1538 ........................................................................ 1539 ........................................................................ 1540 ........................................................................ 1541 ........................................................................ 1542 ........................................................................ 1543 ........................................................................ 1544 ........................................................................ 1545 ........................................................................ 1546 ........................................................................ 1547 ........................................................................ 1548 ........................................................................ 1549 ........................................................................ 1550 ........................................................................ 1551 ........................................................................ 1552 ........................................................................ 1553 ........................................................................ 1554 ........................................................................ 1555 ........................................................................ 1556 ........................................................................ 1557 ........................................................................ 1558 ........................................................................ 1559 ........................................................................ 1560 ........................................................................ 1561 ........................................................................ 1562 ........................................................................ 1563 ........................................................................ 1564 ........................................................................ 1565 ........................................................................ 1566 ........................................................................ 1567 ........................................................................ 1568 ........................................................................ 1569 ........................................................................ 1570 ........................................................................ 1571 ........................................................................ 1572 ........................................................................ 1573 ........................................................................ 1574 ........................................................................ 1575 ........................................................................ 1576 ........................................................................ 1577 ........................................................................ 1578 ........................................................................ 1579 ........................................................................ 1580 ........................................................................ 1581 ........................................................................ 1582 ........................................................................ 1583 ........................................................................ 1584 ........................................................................ 1585 ........................................................................ 1586 ........................................................................ 1587 ........................................................................ 1588 ........................................................................ 1589 ........................................................................ 1590 ........................................................................ 1591 ........................................................................ 1592 ........................................................................ 1593 ........................................................................ 1594 ........................................................................ 1595 ........................................................................ 1596 ........................................................................ 1597 ........................................................................ 1598 ........................................................................ 1599 ........................................................................ 1600 ........................................................................ 1601 ........................................................................ 1602 ........................................................................ 1603 ........................................................................ 1604 ........................................................................ 1605 ........................................................................ 1606 ........................................................................ 1607 ........................................................................ 1608 ........................................................................ 1609 ........................................................................ 1610 ........................................................................ 1611 ........................................................................ 1612 ........................................................................ 1613 ........................................................................ 1614 ........................................................................ 1615 ........................................................................ 1616 ........................................................................ 1617 ........................................................................ 1618 ........................................................................ 1619 ........................................................................ 1620 ........................................................................ 1621 ........................................................................ 1622 ........................................................................ 1623 ........................................................................ 1624 ........................................................................ 1625 ........................................................................ 1626 ........................................................................ 1627 ........................................................................ 1628 ........................................................................ 1629 ........................................................................ 1630 ........................................................................ 1631 ........................................................................ 1632 ........................................................................ 1633 ........................................................................ 1634 ........................................................................ 1635 ........................................................................ 1636 ........................................................................ 1637 ........................................................................ 1638 ........................................................................ 1639 ........................................................................ 1640 ........................................................................ 1641 ........................................................................ 1642 ........................................................................ 1643 ........................................................................ 1644 ........................................................................ 1645 ........................................................................ 1646 ........................................................................ 1647 ........................................................................ 1648 ........................................................................ 1649 ........................................................................ 1650 ........................................................................ 1651 ........................................................................ 1652 ........................................................................ 1653 ........................................................................ 1654 ........................................................................ 1655 ........................................................................ 1656 ........................................................................ 1657 ........................................................................ 1658 ........................................................................ 1659 ........................................................................ 1660 ........................................................................ 1661 ........................................................................ 1662 ........................................................................ 1663 ........................................................................ 1664 ........................................................................ 1665 ........................................................................ 1666 ........................................................................ 1667 ........................................................................ 1668 ........................................................................ 1669 ........................................................................ 1670 ........................................................................ 1671 ........................................................................ 1672 ........................................................................ 1673 ........................................................................ 1674 ........................................................................ 1675 ........................................................................ 1676 ........................................................................ 1677 ........................................................................ 1678 ........................................................................ 1679 ........................................................................ 1680 ........................................................................ 1681 ........................................................................ 1682 ........................................................................ 1683 ........................................................................ 1684 ........................................................................ 1685 ........................................................................ 1686 ........................................................................ 1687 ........................................................................ 1688 ........................................................................ 1689 ........................................................................ 1690 ........................................................................ 1691 ........................................................................ 1692 ........................................................................ 1693 ........................................................................ 1694 ........................................................................ 1695 ........................................................................ 1696 ........................................................................ 1697 ........................................................................ 1698 ........................................................................ 1699 ........................................................................ 1700 ........................................................................ 1701 ........................................................................ 1702 ........................................................................ 1703 ........................................................................ 1704 ........................................................................ 1705 ........................................................................ 1706 ........................................................................ 1707 ........................................................................ 1708 ........................................................................ 1709 ........................................................................ 1710 ........................................................................ 1711 ........................................................................ 1712 ........................................................................ 1713 ........................................................................ 1714 ........................................................................ 1715 ........................................................................ 1716 ........................................................................ 1717 ........................................................................ 1718 ........................................................................ 1719 ........................................................................ 1720 ........................................................................ 1721 ........................................................................ 1722 ........................................................................ 1723 ........................................................................ 1724 ........................................................................ 1725 ........................................................................ 1726 ........................................................................ 1727 ........................................................................ 1728 ........................................................................ 1729 ........................................................................ 1730 ........................................................................ 1731 ........................................................................ 1732 ........................................................................ 1733 ........................................................................ 1734 ........................................................................ 1735 ........................................................................ 1736 ........................................................................ 1737 ........................................................................ 1738 ........................................................................ 1739 ........................................................................ 1740 ........................................................................ 1741 ........................................................................ 1742 ........................................................................ 1743 ........................................................................ 1744 ........................................................................ 1745 ........................................................................ 1746 ........................................................................ 1747 ........................................................................ 1748 ........................................................................ 1749 ........................................................................ 1750 ........................................................................ 1751 ........................................................................ 1752 ........................................................................ 1753 ........................................................................ 1754 ........................................................................ 1755 ........................................................................ 1756 ........................................................................ 1757 ........................................................................ 1758 ........................................................................ 1759 ........................................................................ 1760 ........................................................................ 1761 ........................................................................ 1762 ........................................................................ 1763 ........................................................................ 1764 ........................................................................ 1765 ........................................................................ 1766 ........................................................................ 1767 ........................................................................ 1768 ........................................................................ 1769 ........................................................................ 1770 ........................................................................ 1771 ........................................................................ 1772 ........................................................................ 1773 ........................................................................ 1774 ........................................................................ 1775 ........................................................................ 1776 ........................................................................ 1777 ........................................................................ 1778 ........................................................................ 1779 ........................................................................ 1780 ........................................................................ 1781 ........................................................................ 1782 ........................................................................ 1783 ........................................................................ 1784 ........................................................................ 1785 ........................................................................ 1786 ........................................................................ 1787 ........................................................................ 1788 ........................................................................ 1789 ........................................................................ 1790 ........................................................................ 1791 ........................................................................ 1792 ........................................................................ 1793 ........................................................................ 1794 ........................................................................ 1795 ........................................................................ 1796 ........................................................................ 1797 ........................................................................ 1798 ........................................................................ 1799 ........................................................................ 1800 ........................................................................ 1801 ........................................................................ 1802 ........................................................................ 1803 ........................................................................ 1804 ........................................................................ 1805 ........................................................................ 1806 ........................................................................ 1807 ........................................................................ 1808 ........................................................................ 1809 ........................................................................ 1810 ........................................................................ 1811 ........................................................................ 1812 ........................................................................ 1813 ........................................................................ 1814 ........................................................................ 1815 ........................................................................ 1816 ........................................................................ 1817 ........................................................................ 1818 ........................................................................ 1819 ........................................................................ 1820 ........................................................................ 1821 ........................................................................ 1822 ........................................................................ 1823 ........................................................................ 1824 ........................................................................ 1825 ........................................................................ 1826 ........................................................................ 1827 ........................................................................ 1828 ........................................................................ 1829 ........................................................................ 1830 ........................................................................ 1831 ........................................................................ 1832 ........................................................................ 1833 ........................................................................ 1834 ........................................................................ 1835 ........................................................................ 1836 ........................................................................ 1837 ........................................................................ 1838 ........................................................................ 1839 ........................................................................ 1840 ........................................................................ 1841 ........................................................................ 1842 ........................................................................ 1843 ........................................................................ 1844 ........................................................................ 1845 ........................................................................ 1846 ........................................................................ 1847 ........................................................................ 1848 ........................................................................ 1849 ........................................................................ 1850 ........................................................................ 1851 ........................................................................ 1852 ........................................................................ 1853 ........................................................................ 1854 ........................................................................ 1855 ........................................................................ 1856 ........................................................................ 1857 ........................................................................ 1858 ........................................................................ 1859 ........................................................................ 1860 ........................................................................ 1861 ........................................................................ 1862 ........................................................................ 1863 ........................................................................ 1864 ........................................................................ 1865 ........................................................................ 1866 ........................................................................ 1867 ........................................................................ 1868 ........................................................................ 1869 ........................................................................ 1870 ........................................................................ 1871 ........................................................................ 1872 ........................................................................ 1873 ........................................................................ 1874 ........................................................................ 1875 ........................................................................ 1876 ........................................................................ 1877 ........................................................................ 1878 ........................................................................ 1879 ........................................................................ 1880 ........................................................................ 1881 ........................................................................ 1882 ........................................................................ 1883 ........................................................................ 1884 ........................................................................ 1885 ........................................................................ 1886 ........................................................................ 1887 ........................................................................ 1888 ........................................................................ 1889 ........................................................................ 1890 ........................................................................ 1891 ........................................................................ 1892 ........................................................................ 1893 ........................................................................ 1894 ........................................................................ 1895 ........................................................................ 1896 ........................................................................ 1897 ........................................................................ 1898 ........................................................................ 1899 ........................................................................ 1900 ........................................................................ 1901 ........................................................................ 1902 ........................................................................ 1903 ........................................................................ 1904 ........................................................................ 1905 ........................................................................ 1906 ........................................................................ 1907 ........................................................................ 1908 ........................................................................ 1909 ........................................................................ 1910 ........................................................................ 1911 ........................................................................ 1912 ........................................................................ 1913 ........................................................................ 1914 ........................................................................ 1915 ........................................................................ 1916 ........................................................................ 1917 ........................................................................ 1918 ........................................................................ 1919 ........................................................................ 1920 ........................................................................ 1921 ........................................................................ 1922 ........................................................................ 1923 ........................................................................ 1924 ........................................................................ 1925 ........................................................................ 1926 ........................................................................ 1927 ........................................................................ 1928 ........................................................................ 1929 ........................................................................ 1930 ........................................................................ 1931 ........................................................................ 1932 ........................................................................ 1933 ........................................................................ 1934 ........................................................................ 1935 ........................................................................ 1936 ........................................................................ 1937 ........................................................................ 1938 ........................................................................ 1939 ........................................................................ 1940 ........................................................................ 1941 ........................................................................ 1942 ........................................................................ 1943 ........................................................................ 1944 ........................................................................ 1945 ........................................................................ 1946 ........................................................................ 1947 ........................................................................ 1948 ........................................................................ 1949 ........................................................................ 1950 ........................................................................ 1951 ........................................................................ 1952 ........................................................................ 1953 ........................................................................ 1954 ........................................................................ 1955 ........................................................................ 1956 ........................................................................ 1957 ........................................................................ 1958 ........................................................................ 1959 ........................................................................ 1960 ........................................................................ 1961 ........................................................................ 1962 ........................................................................ 1963 ........................................................................ 1964 ........................................................................ 1965 ........................................................................ 1966 ........................................................................ 1967 ........................................................................ 1968 ........................................................................ 1969 ........................................................................ 1970 ........................................................................ 1971 ........................................................................ 1972 ........................................................................ 1973 ........................................................................ 1974 ........................................................................ 1975 ........................................................................ 1976 ........................................................................ 1977 ........................................................................ 1978 ........................................................................ 1979 ........................................................................ 1980 ........................................................................ 1981 ........................................................................ 1982 ........................................................................ 1983 ........................................................................ 1984 ........................................................................ 1985 ........................................................................ 1986 ........................................................................ 1987 ........................................................................ 1988 ........................................................................ 1989 ........................................................................ 1990 ........................................................................ 1991 ........................................................................ 1992 ........................................................................ 1993 ........................................................................ 1994 ........................................................................ 1995 ........................................................................ 1996 ........................................................................ 1997 ........................................................................ 1998 ........................................................................ 1999 ........................................................................ 2000 ........................................................................ 2001 ........................................................................ 2002 ........................................................................ 2003 ........................................................................ 2004 ........................................................................ 2005 ........................................................................ 2006 ........................................................................ 2007 ........................................................................ 2008 ........................................................................ 2009 ........................................................................ 2010 ........................................................................ 2011 ........................................................................ 2012 ........................................................................ 2013 ........................................................................ 2014 ........................................................................ 2015 ........................................................................ 2016 ........................................................................ 2017 ........................................................................ 2018 ........................................................................ 2019 ........................................................................ 2020 ........................................................................ 2021 ........................................................................ 2022 ........................................................................ 2023 ........................................................................ 2024 ........................................................................ 2025 ........................................................................ 2026 ........................................................................ 2027 ........................................................................ 2028 ........................................................................ 2029 ........................................................................ 2030 ........................................................................ 2031 ........................................................................ 2032 ........................................................................ 2033 ........................................................................ 2034 ........................................................................ 2035 ........................................................................ 2036 ........................................................................ 2037 ........................................................................ 2038 ........................................................................ 2039 ........................................................................ 2040 ........................................................................ 2041 ........................................................................ 2042 ........................................................................ 2043 ........................................................................ 2044 ........................................................................ 2045 ........................................................................ 2046 ........................................................................ 2047 ........................................................................ 2048 ........................................................................ 2049 ........................................................................ 2050 ........................................................................ 2051 ........................................................................ 2052 ........................................................................ 2053 ........................................................................ 2054 ........................................................................ 2055 ........................................................................ 2056 ........................................................................ 2057 ........................................................................ 2058 ........................................................................ 2059 ........................................................................ 2060 ........................................................................ 2061 ........................................................................ 2062 ........................................................................ 2063 ........................................................................ 2064 ........................................................................ 2065 ........................................................................ 2066 ........................................................................ 2067 ........................................................................ 2068 ........................................................................ 2069 ........................................................................ 2070 ........................................................................ 2071 ........................................................................ 2072 ........................................................................ 2073 ........................................................................ 2074 ........................................................................ 2075 ........................................................................ 2076 ........................................................................ 2077 ........................................................................ 2078 ........................................................................ 2079 ........................................................................ 2080 ........................................................................ 2081 ........................................................................ 2082 ........................................................................ 2083 ........................................................................ 2084 ........................................................................ 2085 ........................................................................ 2086 ........................................................................ 2087 ........................................................................ 2088 ........................................................................ 2089 ........................................................................ 2090 ........................................................................ 2091 ........................................................................ 2092 ........................................................................ 2093 ........................................................................ 2094 ........................................................................ 2095 ........................................................................ 2096 ........................................................................ 2097 ........................................................................ 2098 ........................................................................ 2099 ........................................................................ 2100 ........................................................................ 2101 ........................................................................ 2102 ........................................................................ 2103 ........................................................................ 2104 ........................................................................ 2105 ........................................................................ 2106 ........................................................................ 2107 ........................................................................ 2108 ........................................................................ 2109 ........................................................................ 2110 ........................................................................ 2111 ........................................................................ 2112 ........................................................................ 2113 ........................................................................ 2114 ........................................................................ 2115 ........................................................................ 2116 ........................................................................ 2117 ........................................................................ 2118 ........................................................................ 2119 ........................................................................ 2120 ........................................................................ 2121 ........................................................................ 2122 ........................................................................ 2123 ........................................................................ 2124 ........................................................................ 2125 ........................................................................ 2126 ........................................................................ 2127 ........................................................................ 2128 ........................................................................ 2129 ........................................................................ 2130 ........................................................................ 2131 ........................................................................ 2132 ........................................................................ 2133 ........................................................................ 2134 ........................................................................ 2135 ........................................................................ 2136 ........................................................................ 2137 ........................................................................ 2138 ........................................................................ 2139 ........................................................................ 2140 ........................................................................ 2141 ........................................................................ 2142 ........................................................................ 2143 ........................................................................ 2144 ........................................................................ 2145 ........................................................................ 2146 ........................................................................ 2147 ........................................................................ 2148 ........................................................................ 2149 ........................................................................ 2150 ........................................................................ 2151 ........................................................................ 2152 ........................................................................ 2153 ........................................................................ 2154 ........................................................................ 2155 ........................................................................ 2156 ........................................................................ 2157 ........................................................................ 2158 ........................................................................ 2159 ........................................................................ 2160 ........................................................................ 2161 ........................................................................ 2162 ........................................................................ 2163 ........................................................................ 2164 ........................................................................ 2165 ........................................................................ 2166 ........................................................................ 2167 ........................................................................ 2168 ........................................................................ 2169 ........................................................................ 2170 ........................................................................ 2171 ........................................................................ 2172 ........................................................................ 2173 ........................................................................ 2174 ........................................................................ 2175 ........................................................................ 2176 ........................................................................ 2177 ........................................................................ 2178 ........................................................................ 2179 ........................................................................ 2180 ........................................................................ 2181 ........................................................................ 2182 ........................................................................ 2183 ........................................................................ 2184 ........................................................................ 2185 ........................................................................ 2186 ........................................................................ 2187 ........................................................................ 2188 ........................................................................ 2189 ........................................................................ 2190 ........................................................................ 2191 ........................................................................ 2192 ........................................................................ 2193 ........................................................................ 2194 ........................................................................ 2195 ........................................................................ 2196 ........................................................................ 2197 ........................................................................ 2198 ........................................................................ 2199 ........................................................................ 2200 ........................................................................ 2201 ........................................................................ 2202 ........................................................................ 2203 ........................................................................ 2204 ........................................................................ 2205 ........................................................................ 2206 ........................................................................ 2207 ........................................................................ 2208 ........................................................................ 2209 ........................................................................ 2210 ........................................................................ 2211 ........................................................................ 2212 ........................................................................ 2213 ........................................................................ 2214 ........................................................................ 2215 ........................................................................ 2216 ........................................................................ 2217 ........................................................................ 2218 ........................................................................ 2219 ........................................................................ 2220 ........................................................................ 2221 ........................................................................ 2222 ........................................................................ 2223 ........................................................................ 2224 ........................................................................ 2225 ........................................................................ 2226 ........................................................................ 2227 ........................................................................ 2228 ........................................................................ 2229 ........................................................................ 2230 ........................................................................ 2231 ........................................................................ 2232 ........................................................................ 2233 ........................................................................ 2234 ........................................................................ 2235 ........................................................................ 2236 ........................................................................ 2237 ........................................................................ 2238 ........................................................................ 2239 ........................................................................ 2240 ........................................................................ 2241 ........................................................................ 2242 ........................................................................ 2243 ........................................................................ 2244 ........................................................................ 2245 ........................................................................ 2246 ........................................................................ 2247 ........................................................................ 2248 ........................................................................ 2249 ........................................................................ 2250 ........................................................................ 2251 ........................................................................ 2252 ........................................................................ 2253 ........................................................................ 2254 ........................................................................ 2255 ........................................................................ 2256 ........................................................................ 2257 ........................................................................ 2258 ........................................................................ 2259 ........................................................................ 2260 ........................................................................ 2261 ........................................................................ 2262 ........................................................................ 2263 ........................................................................ 2264 ........................................................................ 2265 ........................................................................ 2266 ........................................................................ 2267 ........................................................................ 2268 ........................................................................ 2269 ........................................................................ 2270 ........................................................................ 2271 ........................................................................ 2272 ........................................................................ 2273 ........................................................................ 2274 ........................................................................ 2275 ........................................................................ 2276 ........................................................................ 2277 ........................................................................ 2278 ........................................................................ 2279 ........................................................................ 2280 ........................................................................ 2281 ........................................................................ 2282 ........................................................................ 2283 ........................................................................ 2284 ........................................................................ 2285 ........................................................................ 2286 ........................................................................ 2287 ........................................................................ 2288 ........................................................................ 2289 ........................................................................ 2290 ........................................................................ 2291 ........................................................................ 2292 ........................................................................ 2293 ........................................................................ 2294 ........................................................................ 2295 ........................................................................ 2296 ........................................................................ 2297 ........................................................................ 2298 ........................................................................ 2299 ........................................................................ 2300 ........................................................................ 2301 ........................................................................ 2302 ........................................................................ 2303 ........................................................................ 2304 ........................................................................ 2305 ........................................................................ 2306 ........................................................................ 2307 ........................................................................ 2308 ........................................................................ 2309 ........................................................................ 2310 ........................................................................ 2311 ........................................................................ 2312 ........................................................................ 2313 ........................................................................ 2314 ........................................................................ 2315 ........................................................................ 2316 ........................................................................ 2317 ........................................................................ 2318 ........................................................................ 2319 ........................................................................ 2320 ........................................................................ 2321 ........................................................................ 2322 ........................................................................ 2323 ........................................................................ 2324 ........................................................................ 2325 ........................................................................ 2326 ........................................................................ 2327 ........................................................................ 2328 ........................................................................ 2329 ........................................................................ 2330 ........................................................................ 2331 ........................................................................ 2332 ........................................................................ 2333 ........................................................................ 2334 ........................................................................ 2335 ........................................................................ 2336 ........................................................................ 2337 ........................................................................ 2338 ........................................................................ 2339 ........................................................................ 2340 ........................................................................ 2341 ........................................................................ 2342 ........................................................................ 2343 ........................................................................ 2344 ........................................................................ 2345 ........................................................................ 2346 ........................................................................ 2347 ........................................................................ 2348 ........................................................................ 2349 ........................................................................ 2350 ........................................................................ 2351 ........................................................................ 2352 ........................................................................ 2353 ........................................................................ 2354 ........................................................................ 2355 ........................................................................ 2356 ........................................................................ 2357 ........................................................................ 2358 ........................................................................ 2359 ........................................................................ 2360 ........................................................................ 2361 ........................................................................ 2362 ........................................................................ 2363 ........................................................................ 2364 ........................................................................ 2365 ........................................................................ 2366 ........................................................................ 2367 ........................................................................ 2368 ........................................................................ 2369 ........................................................................ 2370 ........................................................................ 2371 ........................................................................ 2372 ........................................................................ 2373 ........................................................................ 2374 ........................................................................ 2375 ........................................................................ 2376 ........................................................................ 2377 ........................................................................ 2378 ........................................................................ 2379 ........................................................................ 2380 ........................................................................ 2381 ........................................................................ 2382 ........................................................................ 2383 ........................................................................ 2384 ........................................................................ 2385 ........................................................................ 2386 ........................................................................ 2387 ........................................................................ 2388 ........................................................................ 2389 ........................................................................ 2390 ........................................................................ 2391 ........................................................................ 2392 ........................................................................ 2393 ........................................................................ 2394 ........................................................................ 2395 ........................................................................ 2396 ........................................................................ 2397 ........................................................................ 2398 ........................................................................ 2399 ........................................................................ 2400 ........................................................................ 2401 ........................................................................ 2402 ........................................................................ 2403 ........................................................................ 2404 ........................................................................ 2405 ........................................................................ 2406 ........................................................................ 2407 ........................................................................ 2408 ........................................................................ 2409 ........................................................................ 2410 ........................................................................ 2411 ........................................................................ 2412 ........................................................................ 2413 ........................................................................ 2414 ........................................................................ 2415 ........................................................................ 2416 ........................................................................ 2417 ........................................................................ 2418 ........................................................................ 2419 ........................................................................ 2420 ........................................................................ 2421 ........................................................................ 2422 ........................................................................ 2423 ........................................................................ 2424 ........................................................................ 2425 ........................................................................ 2426 ........................................................................ 2427 ........................................................................ 2428 ........................................................................ 2429 ........................................................................ 2430 ........................................................................ 2431 ........................................................................ 2432 ........................................................................ 2433 ........................................................................ 2434 ........................................................................ 2435 ........................................................................ 2436 ........................................................................ 2437 ........................................................................ 2438 ........................................................................ 2439 ........................................................................ 2440 ........................................................................ 2441 ........................................................................ 2442 ........................................................................ 2443 ........................................................................ 2444 ........................................................................ 2445 ........................................................................ 2446 ........................................................................ 2447 ........................................................................ 2448 ........................................................................ 2449 ........................................................................ 2450 ........................................................................ 2451 ........................................................................ 2452 ........................................................................ 2453 ........................................................................ 2454 ........................................................................ 2455 ........................................................................ 2456 ........................................................................ 2457 ........................................................................ 2458 ........................................................................ 2459 ........................................................................ 2460 ........................................................................ 2461 ........................................................................ 2462 ........................................................................ 2463 ........................................................................ 2464 ........................................................................ 2465 ........................................................................ 2466 ........................................................................ 2467 ........................................................................ 2468 ........................................................................ 2469 ........................................................................ 2470 ........................................................................ 2471 ........................................................................ 2472 ........................................................................ 2473 ........................................................................ 2474 ........................................................................ 2475 ........................................................................ 2476 ........................................................................ 2477 ........................................................................ 2478 ........................................................................ 2479 ........................................................................ 2480 ........................................................................ 2481 ........................................................................ 2482 ........................................................................ 2483 ........................................................................ 2484 ........................................................................ 2485 ........................................................................ 2486 ........................................................................ 2487 ........................................................................ 2488 ........................................................................ 2489 ........................................................................ 2490 ........................................................................ 2491 ........................................................................ 2492 ........................................................................ 2493 ........................................................................ 2494 ........................................................................ 2495 ........................................................................ 2496 ........................................................................ 2497 ........................................................................ 2498 ........................................................................ 2499 ........................................................................ 2500 ........................................................................ 2501 ........................................................................ 2502 ........................................................................ 2503 ........................................................................ 2504 ........................................................................ 2505 ........................................................................ 2506 ........................................................................ 2507 ........................................................................ 2508 ........................................................................ 2509 ........................................................................ 2510 ........................................................................ 2511 ........................................................................ 2512 ........................................................................ 2513 ........................................................................ 2514 ........................................................................ 2515 ........................................................................ 2516 ........................................................................ 2517 ........................................................................ 2518 ........................................................................ 2519 ........................................................................ 2520 ........................................................................ 2521 ........................................................................ 2522 ........................................................................ 2523 ........................................................................ 2524 ........................................................................ 2525 ........................................................................ 2526 ........................................................................ 2527 ........................................................................ 2528 ........................................................................ 2529 ........................................................................ 2530 ........................................................................ 2531 ........................................................................ 2532 ........................................................................ 2533 ........................................................................ 2534 ........................................................................ 2535 ........................................................................ 2536 ........................................................................ 2537 ........................................................................ 2538 ........................................................................ 2539 ........................................................................ 2540 ........................................................................ 2541 ........................................................................ 2542 ........................................................................ 2543 ........................................................................ 2544 ........................................................................ 2545 ........................................................................ 2546 ........................................................................ 2547 ........................................................................ 2548 ........................................................................ 2549 ........................................................................ 2550 ........................................................................ 2551 ........................................................................ 2552 ........................................................................ 2553 ........................................................................ 2554 ........................................................................ 2555 ........................................................................ 2556 ........................................................................ 2557 ........................................................................ 2558 ........................................................................ 2559 ........................................................................ 2560 ........................................................................ 2561 ........................................................................ 2562 ........................................................................ 2563 ........................................................................ 2564 ........................................................................ 2565 ........................................................................ 2566 ........................................................................ 2567 ........................................................................ 2568 ........................................................................ 2569 ........................................................................ 2570 ........................................................................ 2571 ........................................................................ 2572 ........................................................................ 2573 ........................................................................ 2574 ........................................................................ 2575 ........................................................................ 2576 ........................................................................ 2577 ........................................................................ 2578 ........................................................................ 2579 ........................................................................ 2580 ........................................................................ 2581 ........................................................................ 2582 ........................................................................ 2583 ........................................................................ 2584 ........................................................................ 2585 ........................................................................ 2586 ........................................................................ 2587 ........................................................................ 2588 ........................................................................ 2589 ........................................................................ 2590 ........................................................................ 2591 ........................................................................ 2592 ........................................................................ 2593 ........................................................................ 2594 ........................................................................ 2595 ........................................................................ 2596 ........................................................................ 2597 ........................................................................ 2598 ........................................................................ 2599 ........................................................................ 2600 ........................................................................ 2601 ........................................................................ 2602 ........................................................................ 2603 ........................................................................ 2604 ........................................................................ 2605 ........................................................................ 2606 ........................................................................ 2607 ........................................................................ 2608 ........................................................................ 2609 ........................................................................ 2610 ........................................................................ 2611 ........................................................................ 2612 ........................................................................ 2613 ........................................................................ 2614 ........................................................................ 2615 ........................................................................ 2616 ........................................................................ 2617 ........................................................................ 2618 ........................................................................ 2619 ........................................................................ 2620 ........................................................................ 2621 ........................................................................ 2622 ........................................................................ 2623 ........................................................................ 2624 ........................................................................ 2625 ........................................................................ 2626 ........................................................................ 2627 ........................................................................ 2628 ........................................................................ 2629 ........................................................................ 2630 ........................................................................ 2631 ........................................................................ 2632 ........................................................................ 2633 ........................................................................ 2634 ........................................................................ 2635 ........................................................................ 2636 ........................................................................ 2637 ........................................................................ 2638 ........................................................................ 2639 ........................................................................ 2640 ........................................................................ 2641 ........................................................................ 2642 ........................................................................ 2643 ........................................................................ 2644 ........................................................................ 2645 ........................................................................ 2646 ........................................................................ 2647 ........................................................................ 2648 ........................................................................ 2649 ........................................................................ 2650 ........................................................................ 2651 ........................................................................ 2652 ........................................................................ 2653 ........................................................................ 2654 ........................................................................ 2655 ........................................................................ 2656 ........................................................................ 2657 ........................................................................ 2658 ........................................................................ 2659 ........................................................................ 2660 ........................................................................ 2661 ........................................................................ 2662 ........................................................................ 2663 ........................................................................ 2664 ........................................................................ 2665 ........................................................................ 2666 ........................................................................ 2667 ........................................................................ 2668 ........................................................................ 2669 ........................................................................ 2670 ........................................................................ 2671 ........................................................................ 2672 ........................................................................ 2673 ........................................................................ 2674 ........................................................................ 2675 ........................................................................ 2676 ........................................................................ 2677 ........................................................................ 2678 ........................................................................ 2679 ........................................................................ 2680 ........................................................................ 2681 ........................................................................ 2682 ........................................................................ 2683 ........................................................................ 2684 ........................................................................ 2685 ........................................................................ 2686 ........................................................................ 2687 ........................................................................ 2688 ........................................................................ 2689 ........................................................................ 2690 ........................................................................ 2691 ........................................................................ 2692 ........................................................................ 2693 ........................................................................ 2694 ........................................................................ 2695 ........................................................................ 2696 ........................................................................ 2697 ........................................................................ 2698 ........................................................................ 2699 ........................................................................ 2700 ........................................................................ 2701 ........................................................................ 2702 ........................................................................ 2703 ........................................................................ 2704 ........................................................................ 2705 ........................................................................ 2706 ........................................................................ 2707 ........................................................................ 2708 ........................................................................ 2709 ........................................................................ 2710 ........................................................................ 2711 ........................................................................ 2712 ........................................................................ 2713 ........................................................................ 2714 ........................................................................ 2715 ........................................................................ 2716 ........................................................................ 2717 ........................................................................ 2718 ........................................................................ 2719 ........................................................................ 2720 ........................................................................ 2721 ........................................................................ 2722 ........................................................................ 2723 ........................................................................ 2724 ........................................................................ 2725 ........................................................................ 2726 ........................................................................ 2727 ........................................................................ 2728 ........................................................................ 2729 ........................................................................ 2730 ........................................................................ 2731 ........................................................................ 2732 ........................................................................ 2733 ........................................................................ 2734 ........................................................................ 2735 ........................................................................ 2736 ........................................................................ 2737 ........................................................................ 2738 ........................................................................ 2739 ........................................................................ 2740 ........................................................................ 2741 ........................................................................ 2742 ........................................................................ 2743 ........................................................................ 2744 ........................................................................ 2745 ........................................................................ 2746 ........................................................................ 2747 ........................................................................ 2748 ........................................................................ 2749 ........................................................................ 2750 ........................................................................ 2751 ........................................................................ 2752 ........................................................................ 2753 ........................................................................ 2754 ........................................................................ 2755 ........................................................................ 2756 ........................................................................ 2757 ........................................................................ 2758 ........................................................................ 2759 ........................................................................ 2760 ........................................................................ 2761 ........................................................................ 2762 ........................................................................ 2763 ........................................................................ 2764 ........................................................................ 2765 ........................................................................ 2766 ........................................................................ 2767 ........................................................................ 2768 ........................................................................ 2769 ........................................................................ 2770 ........................................................................ 2771 ........................................................................ 2772 ........................................................................ 2773 ........................................................................ 2774 ........................................................................ 2775 ........................................................................ 2776 ........................................................................ 2777 ........................................................................ 2778 ........................................................................ 2779 ........................................................................ 2780 ........................................................................ 2781 ........................................................................ 2782 ........................................................................ 2783 ........................................................................ 2784 ........................................................................ 2785 ........................................................................ 2786 ........................................................................ 2787 ........................................................................ 2788 ........................................................................ 2789 ........................................................................ 2790 ........................................................................ 2791 ........................................................................ 2792 ........................................................................ 2793 ........................................................................ 2794 ........................................................................ 2795 ........................................................................ 2796 ........................................................................ 2797 ........................................................................ 2798 ........................................................................ 2799 ........................................................................ 2800 ........................................................................ 2801 ........................................................................ 2802 ........................................................................ 2803 ........................................................................ 2804 ........................................................................ 2805 ........................................................................ 2806 ........................................................................ 2807 ........................................................................ 2808 ........................................................................ 2809 ........................................................................ 2810 ........................................................................ 2811 ........................................................................ 2812 ........................................................................ 2813 ........................................................................ 2814 ........................................................................ 2815 ........................................................................ 2816 ........................................................................ 2817 ........................................................................ 2818 ........................................................................ 2819 ........................................................................ 2820 ........................................................................ 2821 ........................................................................ 2822 ........................................................................ 2823 ........................................................................ 2824 ........................................................................ 2825 ........................................................................ 2826 ........................................................................ 2827 ........................................................................ 2828 ........................................................................ 2829 ........................................................................ 2830 ........................................................................ 2831 ........................................................................ 2832 ........................................................................ 2833 ........................................................................ 2834 ........................................................................ 2835 ........................................................................ 2836 ........................................................................ 2837 ........................................................................ 2838 ........................................................................ 2839 ........................................................................ 2840 ........................................................................ 2841 ........................................................................ 2842 ........................................................................ 2843 ........................................................................ 2844 ........................................................................ 2845 ........................................................................ 2846 ........................................................................ 2847 ........................................................................ 2848 ........................................................................ 2849 ........................................................................ 2850 ........................................................................ 2851 ........................................................................ 2852 ........................................................................ 2853 ........................................................................ 2854 ........................................................................ 2855 ........................................................................ 2856 ........................................................................ 2857 ........................................................................ 2858 ........................................................................ 2859 ........................................................................ 2860 ........................................................................ 2861 ........................................................................ 2862 ........................................................................ 2863 ........................................................................ 2864 ........................................................................ 2865 ........................................................................ 2866 ........................................................................ 2867 ........................................................................ 2868 ........................................................................ 2869 ........................................................................ 2870 ........................................................................ 2871 ........................................................................ 2872 ........................................................................ 2873 ........................................................................ 2874 ........................................................................ 2875 ........................................................................ 2876 ........................................................................ 2877 ........................................................................ 2878 ........................................................................ 2879 ........................................................................ 2880 ........................................................................ 2881 ........................................................................ 2882 ........................................................................ 2883 ........................................................................ 2884 ........................................................................ 2885 ........................................................................ 2886 ........................................................................ 2887 ........................................................................ 2888 ........................................................................ 2889 ........................................................................ 2890 ........................................................................ 2891 ........................................................................ 2892 ........................................................................ 2893 ........................................................................ 2894 ........................................................................ 2895 ........................................................................ 2896 ........................................................................ 2897 ........................................................................ 2898 ........................................................................ 2899 ........................................................................ 2900 ........................................................................ 2901 ........................................................................ 2902 ........................................................................ 2903 ........................................................................ 2904 ........................................................................ 2905 ........................................................................ 2906 ........................................................................ 2907 ........................................................................ 2908 ........................................................................ 2909 ........................................................................ 2910 ........................................................................ 2911 ........................................................................ 2912 ........................................................................ 2913 ........................................................................ 2914 ........................................................................ 2915 ........................................................................ 2916 ........................................................................ 2917 ........................................................................ 2918 ........................................................................ 2919 ........................................................................ 2920 ........................................................................ 2921 ........................................................................ 2922 ........................................................................ 2923 ........................................................................ 2924 ........................................................................ 2925 ........................................................................ 2926 ........................................................................ 2927 ........................................................................ 2928 ........................................................................ 2929 ........................................................................ 2930 ........................................................................ 2931 ........................................................................ 2932 ........................................................................ 2933 ........................................................................ 2934 ........................................................................ 2935 ........................................................................ 2936 ........................................................................ 2937 ........................................................................ 2938 ........................................................................ 2939 ........................................................................ 2940 ........................................................................ 2941 ........................................................................ 2942 ........................................................................ 2943 ........................................................................ 2944 ........................................................................ 2945 ........................................................................ 2946 ........................................................................ 2947 ........................................................................ 2948 ........................................................................ 2949 ........................................................................ 2950 ........................................................................ 2951 ........................................................................ 2952 ........................................................................ 2953 ........................................................................ 2954 ........................................................................ 2955 ........................................................................ 2956 ........................................................................ 2957 ........................................................................ 2958 ........................................................................ 2959 ........................................................................ 2960 ........................................................................ 2961 ........................................................................ 2962 ........................................................................ 2963 ........................................................................ 2964 ........................................................................ 2965 ........................................................................ 2966 ........................................................................ 2967 ........................................................................ 2968 ........................................................................ 2969 ........................................................................ 2970 ........................................................................ 2971 ........................................................................ 2972 ........................................................................ 2973 ........................................................................ 2974 ........................................................................ 2975 ........................................................................ 2976 ........................................................................ 2977 ........................................................................ 2978 ........................................................................ 2979 ........................................................................ 2980 ........................................................................ 2981 ........................................................................ 2982 ........................................................................ 2983 ........................................................................ 2984 ........................................................................ 2985 ........................................................................ 2986 ........................................................................ 2987 ........................................................................ 2988 ........................................................................ 2989 ........................................................................ 2990 ........................................................................ 2991 ........................................................................ 2992 ........................................................................ 2993 ........................................................................ 2994 ........................................................................ 2995 ........................................................................ 2996 ........................................................................ 2997 ........................................................................ 2998 ........................................................................ 2999 ........................................................................ 3000 ........................................................................ 3001 ........................................................................ 3002 ........................................................................ 3003 ........................................................................ 3004 ........................................................................ 3005 ........................................................................ 3006 ........................................................................ 3007 ........................................................................ 3008 ........................................................................ 3009 ........................................................................ 3010 ........................................................................ 3011 ........................................................................ 3012 ........................................................................ 3013 ........................................................................ 3014 ........................................................................ 3015 ........................................................................ 3016 ........................................................................ 3017 ........................................................................ 3018 ........................................................................ 3019 ........................................................................ 3020 ........................................................................ 3021 ........................................................................ 3022 ........................................................................ 3023 ........................................................................ 3024 ........................................................................ 3025 ........................................................................ 3026 ........................................................................ 3027 ........................................................................ 3028 ........................................................................ 3029 ........................................................................ 3030 ........................................................................ 3031 ........................................................................ 3032 ........................................................................ 3033 ........................................................................ 3034 ........................................................................ 3035 ........................................................................ 3036 ........................................................................ 3037 ........................................................................ 3038 ........................................................................ 3039 ........................................................................ 3040 ........................................................................ 3041 ........................................................................ 3042 ........................................................................ 3043 ........................................................................ 3044 ........................................................................ 3045 ........................................................................ 3046 ........................................................................ 3047 ........................................................................ 3048 ........................................................................ 3049 ........................................................................ 3050 ........................................................................ 3051 ........................................................................ 3052 ........................................................................ 3053 ........................................................................ 3054 ........................................................................ 3055 ........................................................................ 3056 ........................................................................ 3057 ........................................................................ 3058 ........................................................................ 3059 ........................................................................ 3060 ........................................................................ 3061 ........................................................................ 3062 ........................................................................ 3063 ........................................................................ 3064 ........................................................................ 3065 ........................................................................ 3066 ........................................................................ 3067 ........................................................................ 3068 ........................................................................ 3069 ........................................................................ 3070 ........................................................................ 3071 ........................................................................ 3072 ........................................................................ 3073 ........................................................................ 3074 ........................................................................ 3075 ........................................................................ 3076 ........................................................................ 3077 ........................................................................ 3078 ........................................................................ 3079 ........................................................................ 3080 ........................................................................ 3081 ........................................................................ 3082 ........................................................................ 3083 ........................................................................ 3084 ........................................................................ 3085 ........................................................................ 3086 ........................................................................ 3087 ........................................................................ 3088 ........................................................................ 3089 ........................................................................ 3090 ........................................................................ 3091 ........................................................................ 3092 ........................................................................ 3093 ........................................................................ 3094 ........................................................................ 3095 ........................................................................ 3096 ........................................................................ 3097 ........................................................................ 3098 ........................................................................ 3099 ........................................................................ 3100 ........................................................................ 3101 ........................................................................ 3102 ........................................................................ 3103 ........................................................................ 3104 ........................................................................ 3105 ........................................................................ 3106 ........................................................................ 3107 ........................................................................ 3108 ........................................................................ 3109 ........................................................................ 3110 ........................................................................ 3111 ........................................................................ 3112 ........................................................................ 3113 ........................................................................ 3114 ........................................................................ 3115 ........................................................................ 3116 ........................................................................ 3117 ........................................................................ 3118 ........................................................................ 3119 ........................................................................ 3120 ........................................................................ 3121 ........................................................................ 3122 ........................................................................ 3123 ........................................................................ 3124 ........................................................................ 3125 ........................................................................ 3126 ........................................................................ 3127 ........................................................................ 3128 ........................................................................ 3129 ........................................................................ 3130 ........................................................................ 3131 ........................................................................ 3132 ........................................................................ 3133 ........................................................................ 3134 ........................................................................ 3135 ........................................................................ 3136 ........................................................................ 3137 ........................................................................ 3138 ........................................................................ 3139 ........................................................................ 3140 ........................................................................ 3141 ........................................................................ 3142 ........................................................................ 3143 ........................................................................ 3144 ........................................................................ 3145 ........................................................................ 3146 ........................................................................ 3147 ........................................................................ 3148 ........................................................................ 3149 ........................................................................ 3150 ........................................................................ 3151 ........................................................................ 3152 ........................................................................ 3153 ........................................................................ 3154 ........................................................................ 3155 ........................................................................ 3156 ........................................................................ 3157 ........................................................................ 3158 ........................................................................ 3159 ........................................................................ 3160 ........................................................................ 3161 ........................................................................ 3162 ........................................................................ 3163 ........................................................................ 3164 ........................................................................ 3165 ........................................................................ 3166 ........................................................................ 3167 ........................................................................ 3168 ........................................................................ 3169 ........................................................................ 3170 ........................................................................ 3171 ........................................................................ 3172 ........................................................................ 3173 ........................................................................ 3174 ........................................................................ 3175 ........................................................................ 3176 ........................................................................ 3177 ........................................................................ 3178 ........................................................................ 3179 ........................................................................ 3180 ........................................................................ 3181 ........................................................................ 3182 ........................................................................ 3183 ........................................................................ 3184 ........................................................................ 3185 ........................................................................ 3186 ........................................................................ 3187 ........................................................................ 3188 ........................................................................ 3189 ........................................................................ 3190 ........................................................................ 3191 ........................................................................ 3192 ........................................................................ 3193 ........................................................................ 3194 ........................................................................ 3195 ........................................................................ 3196 ........................................................................ 3197 ........................................................................ 3198 ........................................................................ 3199 ........................................................................ 3200 ........................................................................ 3201 ........................................................................ 3202 ........................................................................ 3203 ........................................................................ 3204 ........................................................................ 3205 ........................................................................ 3206 ........................................................................ 3207 ........................................................................ 3208 ........................................................................ 3209 ........................................................................ 3210 ........................................................................ 3211 ........................................................................ 3212 ........................................................................ 3213 ........................................................................ 3214 ........................................................................ 3215 ........................................................................ 3216 ........................................................................ 3217 ........................................................................ 3218 ........................................................................ 3219 ........................................................................ 3220 ........................................................................ 3221 ........................................................................ 3222 ........................................................................ 3223 ........................................................................ 3224 ........................................................................ 3225 ........................................................................ 3226 ........................................................................ 3227 ........................................................................ 3228 ........................................................................ 3229 ........................................................................ 3230 ........................................................................ 3231 ........................................................................ 3232 ........................................................................ 3233 ........................................................................ 3234 ........................................................................ 3235 ........................................................................ 3236 ........................................................................ 3237 ........................................................................ 3238 ........................................................................ 3239 ........................................................................ 3240 ........................................................................ 3241 ........................................................................ 3242 ........................................................................ 3243 ........................................................................ 3244 ........................................................................ 3245 ........................................................................ 3246 ........................................................................ 3247 ........................................................................ 3248 ........................................................................ 3249 ........................................................................ 3250 ........................................................................ 3251 ........................................................................ 3252 ........................................................................ 3253 ........................................................................ 3254 ........................................................................ 3255 ........................................................................ 3256 ........................................................................ 3257 ........................................................................ 3258 ........................................................................ 3259 ........................................................................ 3260 ........................................................................ 3261 ........................................................................ 3262 ........................................................................ 3263 ........................................................................ 3264 ........................................................................ 3265 ........................................................................ 3266 ........................................................................ 3267 ........................................................................ 3268 ........................................................................ 3269 ........................................................................ 3270 ........................................................................ 3271 ........................................................................ 3272 ........................................................................ 3273 ........................................................................ 3274 ........................................................................ 3275 ........................................................................ 3276 ........................................................................ 3277 ........................................................................ 3278 ........................................................................ 3279 ........................................................................ 3280 ........................................................................ 3281 ........................................................................ 3282 ........................................................................ 3283 ........................................................................ 3284 ........................................................................ 3285 ........................................................................ 3286 ........................................................................ 3287 ........................................................................ 3288 ........................................................................ 3289 ........................................................................ 3290 ........................................................................ 3291 ........................................................................ 3292 ........................................................................ 3293 ........................................................................ 3294 ........................................................................ 3295 ........................................................................ 3296 ........................................................................ 3297 ........................................................................ 3298 ........................................................................ 3299 ........................................................................ 3300 ........................................................................ 3301 ........................................................................ 3302 ........................................................................ 3303 ........................................................................ 3304 ........................................................................ 3305 ........................................................................ 3306 ........................................................................ 3307 ........................................................................ 3308 ........................................................................ 3309 ........................................................................ 3310 ........................................................................ 3311 ........................................................................ 3312 ........................................................................ 3313 ........................................................................ 3314 ........................................................................ 3315 ........................................................................ 3316 ........................................................................ 3317 ........................................................................ 3318 ........................................................................ 3319 ........................................................................ 3320 ........................................................................ 3321 ........................................................................ 3322 ........................................................................ 3323 ........................................................................ 3324 ........................................................................ 3325 ........................................................................ 3326 ........................................................................ 3327 ........................................................................ 3328 ........................................................................ 3329 ........................................................................ 3330 ........................................................................ 3331 ........................................................................ 3332 ........................................................................ 3333 ........................................................................ 3334 ........................................................................ 3335 ........................................................................ 3336 ........................................................................ 3337 ........................................................................ 3338 ........................................................................ 3339 ........................................................................ 3340 ........................................................................ 3341 ........................................................................ 3342 ........................................................................ 3343 ........................................................................ 3344 ........................................................................ 3345 ........................................................................ 3346 ........................................................................ 3347 ........................................................................ 3348 ........................................................................ 3349 ........................................................................ 3350 ........................................................................ 3351 ........................................................................ 3352 ........................................................................ 3353 ........................................................................ 3354 ........................................................................ 3355 ........................................................................ 3356 ........................................................................ 3357 ........................................................................ 3358 ........................................................................ 3359 ........................................................................ 3360 ........................................................................ 3361 ........................................................................ 3362 ........................................................................ 3363 ........................................................................ 3364 ........................................................................ 3365 ........................................................................ 3366 ........................................................................ 3367 ........................................................................ 3368 ........................................................................ 3369 ........................................................................ 3370 ........................................................................ 3371 ........................................................................ 3372 ........................................................................ 3373 ........................................................................ 3374 ........................................................................ 3375 ........................................................................ 3376 ........................................................................ 3377 ........................................................................ 3378 ........................................................................ 3379 ........................................................................ 3380 ........................................................................ 3381 ........................................................................ 3382 ........................................................................ 3383 ........................................................................ 3384 ........................................................................ 3385 ........................................................................ 3386 ........................................................................ 3387 ........................................................................ 3388 ........................................................................ 3389 ........................................................................ 3390 ........................................................................ 3391 ........................................................................ 3392 ........................................................................ 3393 ........................................................................ 3394 ........................................................................ 3395 ........................................................................ 3396 ........................................................................ 3397 ........................................................................ 3398 ........................................................................ 3399 ........................................................................ 3400 ........................................................................ 3401 ........................................................................ 3402 ........................................................................ 3403 ........................................................................ 3404 ........................................................................ 3405 ........................................................................ 3406 ........................................................................ 3407 ........................................................................ 3408 ........................................................................ 3409 ........................................................................ 3410 ........................................................................ 3411 ........................................................................ 3412 ........................................................................ 3413 ........................................................................ 3414 ........................................................................ 3415 ........................................................................ 3416 ........................................................................ 3417 ........................................................................ 3418 ........................................................................ 3419 ........................................................................ 3420 ........................................................................ 3421 ........................................................................ 3422 ........................................................................ 3423 ........................................................................ 3424 ........................................................................ 3425 ........................................................................ 3426 ........................................................................ 3427 ........................................................................ 3428 ........................................................................ 3429 ........................................................................ 3430 ........................................................................ 3431 ........................................................................ 3432 ........................................................................ 3433 ........................................................................ 3434 ........................................................................ 3435 ........................................................................ 3436 ........................................................................ 3437 ........................................................................ 3438 ........................................................................ 3439 ........................................................................ 3440 ........................................................................ 3441 ........................................................................ 3442 ........................................................................ 3443 ........................................................................ 3444 ........................................................................ 3445 ........................................................................ 3446 ........................................................................ 3447 ........................................................................ 3448 ........................................................................ 3449 ........................................................................ 3450 ........................................................................ 3451 ........................................................................ 3452 ........................................................................ 3453 ........................................................................ 3454 ........................................................................ 3455 ........................................................................ 3456 ........................................................................ 3457 ........................................................................ 3458 ........................................................................ 3459 ........................................................................ 3460 ........................................................................ 3461 ........................................................................ 3462 ........................................................................ 3463 ........................................................................ 3464 ........................................................................ 3465 ........................................................................ 3466 ........................................................................ 3467 ........................................................................ 3468 ........................................................................ 3469 ........................................................................ 3470 ........................................................................ 3471 ........................................................................ 3472 ........................................................................ 3473 ........................................................................ 3474 ........................................................................ 3475 ........................................................................ 3476 ........................................................................ 3477 ........................................................................ 3478 ........................................................................ 3479 ........................................................................ 3480 ........................................................................ 3481 ........................................................................ 3482 ........................................................................ 3483 ........................................................................ 3484 ........................................................................ 3485 ........................................................................ 3486 ........................................................................ 3487 ........................................................................ 3488 ........................................................................ 3489 ........................................................................ 3490 ........................................................................ 3491 ........................................................................ 3492 ........................................................................ 3493 ........................................................................ 3494 ........................................................................ 3495 ........................................................................ 3496 ........................................................................ 3497 ........................................................................ 3498 ........................................................................ 3499 ........................................................................ 3500 ........................................................................ 3501 ........................................................................ 3502 ........................................................................ 3503 ........................................................................ 3504 ........................................................................ 3505 ........................................................................ 3506 ........................................................................ 3507 ........................................................................ 3508 ........................................................................ 3509 ........................................................................ 3510 ........................................................................ 3511 ........................................................................ 3512 ........................................................................ 3513 ........................................................................ 3514 ........................................................................ 3515 ........................................................................ 3516 ........................................................................ 3517 ........................................................................ 3518 ........................................................................ 3519 ........................................................................ 3520 ........................................................................ 3521 ........................................................................ 3522 ........................................................................ 3523 ........................................................................ 3524 ........................................................................ 3525 ........................................................................ 3526 ........................................................................ 3527 ........................................................................ 3528 ........................................................................ 3529 ........................................................................ 3530 ........................................................................ 3531 ........................................................................ 3532 ........................................................................ 3533 ........................................................................ 3534 ........................................................................ 3535 ........................................................................ 3536 ........................................................................ 3537 ........................................................................ 3538 ........................................................................ 3539 ........................................................................ 3540 ........................................................................ 3541 ........................................................................ 3542 ........................................................................ 3543 ........................................................................ 3544 ........................................................................ 3545 ........................................................................ 3546 ........................................................................ 3547 ........................................................................ 3548 ........................................................................ 3549 ........................................................................ 3550 ........................................................................ 3551 ........................................................................ 3552 ........................................................................ 3553 ........................................................................ 3554 ........................................................................ 3555 ........................................................................ 3556 ........................................................................ 3557 ........................................................................ 3558 ........................................................................ 3559 ........................................................................ 3560 ........................................................................ 3561 ........................................................................ 3562 ........................................................................ 3563 ........................................................................ 3564 ........................................................................ 3565 ........................................................................ 3566 ........................................................................ 3567 ........................................................................ 3568 ........................................................................ 3569 ........................................................................ 3570 ........................................................................ 3571 ........................................................................ 3572 ........................................................................ 3573 ........................................................................ 3574 ........................................................................ 3575 ........................................................................ 3576 ........................................................................ 3577 ........................................................................ 3578 ........................................................................ 3579 ........................................................................ 3580 ........................................................................ 3581 ........................................................................ 3582 ........................................................................ 3583 ........................................................................ 3584 ........................................................................ 3585 ........................................................................ 3586 ........................................................................ 3587 ........................................................................ 3588 ........................................................................ 3589 ........................................................................ 3590 ........................................................................ 3591 ........................................................................ 3592 ........................................................................ 3593 ........................................................................ 3594 ........................................................................ 3595 ........................................................................ 3596 ........................................................................ 3597 ........................................................................ 3598 ........................................................................ 3599 ........................................................................ 3600 ........................................................................ 3601 ........................................................................ 3602 ........................................................................ 3603 ........................................................................ 3604 ........................................................................ 3605 ........................................................................ 3606 ........................................................................ 3607 ........................................................................ 3608 ........................................................................ 3609 ........................................................................ 3610 ........................................................................ 3611 ........................................................................ 3612 ........................................................................ 3613 ........................................................................ 3614 ........................................................................ 3615 ........................................................................ 3616 ........................................................................ 3617 ........................................................................ 3618 ........................................................................ 3619 ........................................................................ 3620 ........................................................................ 3621 ........................................................................ 3622 ........................................................................ 3623 ........................................................................ 3624 ........................................................................ 3625 ........................................................................ 3626 ........................................................................ 3627 ........................................................................ 3628 ........................................................................ 3629 ........................................................................ 3630 ........................................................................ 3631 ........................................................................ 3632 ........................................................................ 3633 ........................................................................ 3634 ........................................................................ 3635 ........................................................................ 3636 ........................................................................ 3637 ........................................................................ 3638 ........................................................................ 3639 ........................................................................ 3640 ........................................................................ 3641 ........................................................................ 3642 ........................................................................ 3643 ........................................................................ 3644 ........................................................................ 3645 ........................................................................ 3646 ........................................................................ 3647 ........................................................................ 3648 ........................................................................ 3649 ........................................................................ 3650 ........................................................................ 3651 ........................................................................ 3652 ........................................................................ 3653 ........................................................................ 3654 ........................................................................ 3655 ........................................................................ 3656 ........................................................................ 3657 ........................................................................ 3658 ........................................................................ 3659 ........................................................................ 3660 ........................................................................ 3661 ........................................................................ 3662 ........................................................................ 3663 ........................................................................ 3664 ........................................................................ 3665 ........................................................................ 3666 ........................................................................ 3667 ........................................................................ 3668 ........................................................................ 3669 ........................................................................ 3670 ........................................................................ 3671 ........................................................................ 3672 ........................................................................ 3673 ........................................................................ 3674 ........................................................................ 3675 ........................................................................ 3676 ........................................................................ 3677 ........................................................................ 3678 ........................................................................ 3679 ........................................................................ 3680 ........................................................................ 3681 ........................................................................ 3682 ........................................................................ 3683 ........................................................................ 3684 ........................................................................ 3685 ........................................................................ 3686 ........................................................................ 3687 ........................................................................ 3688 ........................................................................ 3689 ........................................................................ 3690 ........................................................................ 3691 ........................................................................ 3692 ........................................................................ 3693 ........................................................................ 3694 ........................................................................ 3695 ........................................................................ 3696 ........................................................................ 3697 ........................................................................ 3698 ........................................................................ 3699 ........................................................................ 3700 ........................................................................ 3701 ........................................................................ 3702 ........................................................................ 3703 ........................................................................ 3704 ........................................................................ 3705 ........................................................................ 3706 ........................................................................ 3707 ........................................................................ 3708 ........................................................................ 3709 ........................................................................ 3710 ........................................................................ 3711 ........................................................................ 3712 ........................................................................ 3713 ........................................................................ 3714 ........................................................................ 3715 ........................................................................ 3716 ........................................................................ 3717 ........................................................................ 3718 ........................................................................ 3719 ........................................................................ 3720 ........................................................................ 3721 ........................................................................ 3722 ........................................................................ 3723 ........................................................................ 3724 ........................................................................ 3725 ........................................................................ 3726 ........................................................................ 3727 ........................................................................ 3728 ........................................................................ 3729 ........................................................................ 3730 ........................................................................ 3731 ........................................................................ 3732 ........................................................................ 3733 ........................................................................ 3734 ........................................................................ 3735 ........................................................................ 3736 ........................................................................ 3737 ........................................................................ 3738 ........................................................................ 3739 ........................................................................ 3740 ........................................................................ 3741 ........................................................................ 3742 ........................................................................ 3743 ........................................................................ 3744 ........................................................................ 3745 ........................................................................ 3746 ........................................................................ 3747 ........................................................................ 3748 ........................................................................ 3749 ........................................................................ 3750 ........................................................................ 3751 ........................................................................ 3752 ........................................................................ 3753 ........................................................................ 3754 ........................................................................ 3755 ........................................................................ 3756 ........................................................................ 3757 ........................................................................ 3758 ........................................................................ 3759 ........................................................................ 3760 ........................................................................ 3761 ........................................................................ 3762 ........................................................................ 3763 ........................................................................ 3764 ........................................................................ 3765 ........................................................................ 3766 ........................................................................ 3767 ........................................................................ 3768 ........................................................................ 3769 ........................................................................ 3770 ........................................................................ 3771 ........................................................................ 3772 ........................................................................ 3773 ........................................................................ 3774 ........................................................................ 3775 ........................................................................ 3776 ........................................................................ 3777 ........................................................................ 3778 ........................................................................ 3779 ........................................................................ 3780 ........................................................................ 3781 ........................................................................ 3782 ........................................................................ 3783 ........................................................................ 3784 ........................................................................ 3785 ........................................................................ 3786 ........................................................................ 3787 ........................................................................ 3788 ........................................................................ 3789 ........................................................................ 3790 ........................................................................ 3791 ........................................................................ 3792 ........................................................................ 3793 ........................................................................ 3794 ........................................................................ 3795 ........................................................................ 3796 ........................................................................ 3797 ........................................................................ 3798 ........................................................................ 3799 ........................................................................ 3800 ........................................................................ 3801 ........................................................................ 3802 ........................................................................ 3803 ........................................................................ 3804 ........................................................................ 3805 ........................................................................ 3806 ........................................................................ 3807 ........................................................................ 3808 ........................................................................ 3809 ........................................................................ 3810 ........................................................................ 3811 ........................................................................ 3812 ........................................................................ 3813 ........................................................................ 3814 ........................................................................ 3815 ........................................................................ 3816 ........................................................................ 3817 ........................................................................ 3818 ........................................................................ 3819 ........................................................................ 3820 ........................................................................ 3821 ........................................................................ 3822 ........................................................................ 3823 ........................................................................ 3824 ........................................................................ 3825 ........................................................................ 3826 ........................................................................ 3827 ........................................................................ 3828 ........................................................................ 3829 ........................................................................ 3830 ........................................................................ 3831 ........................................................................ 3832 ........................................................................ 3833 ........................................................................ 3834 ........................................................................ 3835 ........................................................................ 3836 ........................................................................ 3837 ........................................................................ 3838 ........................................................................ 3839 ........................................................................ 3840 ........................................................................ 3841 ........................................................................ 3842 ........................................................................ 3843 ........................................................................ 3844 ........................................................................ 3845 ........................................................................ 3846 ........................................................................ 3847 ........................................................................ 3848 ........................................................................ 3849 ........................................................................ 3850 ........................................................................ 3851 ........................................................................ 3852 ........................................................................ 3853 ........................................................................ 3854 ........................................................................ 3855 ........................................................................ 3856 ........................................................................ 3857 ........................................................................ 3858 ........................................................................ 3859 ........................................................................ 3860 ........................................................................ 3861 ........................................................................ 3862 ........................................................................ 3863 ........................................................................ 3864 ........................................................................ 3865 ........................................................................ 3866 ........................................................................ 3867 ........................................................................ 3868 ........................................................................ 3869 ........................................................................ 3870 ........................................................................ 3871 ........................................................................ 3872 ........................................................................ 3873 ........................................................................ 3874 ........................................................................ 3875 ........................................................................ 3876 ........................................................................ 3877 ........................................................................ 3878 ........................................................................ 3879 ........................................................................ 3880 ........................................................................ 3881 ........................................................................ 3882 ........................................................................ 3883 ........................................................................ 3884 ........................................................................ 3885 ........................................................................ 3886 ........................................................................ 3887 ........................................................................ 3888 ........................................................................ 3889 ........................................................................ 3890 ........................................................................ 3891 ........................................................................ 3892 ........................................................................ 3893 ........................................................................ 3894 ........................................................................ 3895 ........................................................................ 3896 ........................................................................ 3897 ........................................................................ 3898 ........................................................................ 3899 ........................................................................ 3900 ........................................................................ 3901 ........................................................................ 3902 ........................................................................ 3903 ........................................................................ 3904 ........................................................................ 3905 ........................................................................ 3906 ........................................................................ 3907 ........................................................................ 3908 ........................................................................ 3909 ........................................................................ 3910 ........................................................................ 3911 ........................................................................ 3912 ........................................................................ 3913 ........................................................................ 3914 ........................................................................ 3915 ........................................................................ 3916 ........................................................................ 3917 ........................................................................ 3918 ........................................................................ 3919 ........................................................................ 3920 ........................................................................ 3921 ........................................................................ 3922 ........................................................................ 3923 ........................................................................ 3924 ........................................................................ 3925 ........................................................................ 3926 ........................................................................ 3927 ........................................................................ 3928 ........................................................................ 3929 ........................................................................ 3930 ........................................................................ 3931 ........................................................................ 3932 ........................................................................ 3933 ........................................................................ 3934 ........................................................................ 3935 ........................................................................ 3936 ........................................................................ 3937 ........................................................................ 3938 ........................................................................ 3939 ........................................................................ 3940 ........................................................................ 3941 ........................................................................ 3942 ........................................................................ 3943 ........................................................................ 3944 ........................................................................ 3945 ........................................................................ 3946 ........................................................................ 3947 ........................................................................ 3948 ........................................................................ 3949 ........................................................................ 3950 ........................................................................ 3951 ........................................................................ 3952 ........................................................................ 3953 ........................................................................ 3954 ........................................................................ 3955 ........................................................................ 3956 ........................................................................ 3957 ........................................................................ 3958 ........................................................................ 3959 ........................................................................ 3960 ........................................................................ 3961 ........................................................................ 3962 ........................................................................ 3963 ........................................................................ 3964 ........................................................................ 3965 ........................................................................ 3966 ........................................................................ 3967 ........................................................................ 3968 ........................................................................ 3969 ........................................................................ 3970 ........................................................................ 3971 ........................................................................ 3972 ........................................................................ 3973 ........................................................................ 3974 ........................................................................ 3975 ........................................................................ 3976 ........................................................................ 3977 ........................................................................ 3978 ........................................................................ 3979 ........................................................................ 3980 ........................................................................ 3981 ........................................................................ 3982 ........................................................................ 3983 ........................................................................ 3984 ........................................................................ 3985 ........................................................................ 3986 ........................................................................ 3987 ........................................................................ 3988 ........................................................................ 3989 ........................................................................ 3990 ........................................................................ 3991 ........................................................................ 3992 ........................................................................ 3993 ........................................................................ 3994 ........................................................................ 3995 ........................................................................ 3996 ........................................................................ 3997 ........................................................................ 3998 ........................................................................ 3999 ........................................................................ 4000 ........................................................................ 4001 ........................................................................ 4002 ........................................................................ 4003 ........................................................................ 4004 ........................................................................ 4005 ........................................................................ 4006 ........................................................................ 4007 ........................................................................ 4008 ........................................................................ 4009 ........................................................................ 4010 ........................................................................ 4011 ........................................................................ 4012 ........................................................................ 4013 ........................................................................ 4014 ........................................................................ 4015 ........................................................................ 4016 ........................................................................ 4017 ........................................................................ 4018 ........................................................................ 4019 ........................................................................ 4020 ........................................................................ 4021 ........................................................................ 4022 ........................................................................ 4023 ........................................................................ 4024 ........................................................................ 4025 ........................................................................ 4026 ........................................................................ 4027 ........................................................................ 4028 ........................................................................ 4029 ........................................................................ 4030 ........................................................................ 4031 ........................................................................ 4032 ........................................................................ 4033 ........................................................................ 4034 ........................................................................ 4035 ........................................................................ 4036 ........................................................................ 4037 ........................................................................ 4038 ........................................................................ 4039 ........................................................................ 4040 ........................................................................ 4041 ........................................................................ 4042 ........................................................................ 4043 ........................................................................ 4044 ........................................................................ 4045 ........................................................................ 4046 ........................................................................ 4047 ........................................................................ 4048 ........................................................................ 4049 ........................................................................ 4050 ........................................................................ 4051 ........................................................................ 4052 ........................................................................ 4053 ........................................................................ 4054 ........................................................................ 4055 ........................................................................ 4056 ........................................................................ 4057 ........................................................................ 4058 ........................................................................ 4059 ........................................................................ 4060 ........................................................................ 4061 ........................................................................ 4062 ........................................................................ 4063 ........................................................................ 4064 ........................................................................ 4065 ........................................................................ 4066 ........................................................................ 4067 ........................................................................ 4068 ........................................................................ 4069 ........................................................................ 4070 ........................................................................ 4071 ........................................................................ 4072 ........................................................................ 4073 ........................................................................ 4074 ........................................................................ 4075 ........................................................................ 4076 ........................................................................ 4077 ........................................................................ 4078 ........................................................................ 4079 ........................................................................ 4080 ........................................................................ 4081 ........................................................................ 4082 ........................................................................ 4083 ........................................................................ 4084 ........................................................................ 4085 ........................................................................ 4086 ........................................................................ 4087 ........................................................................ 4088 ........................................................................ 4089 ........................................................................ 4090 ........................................................................ 4091 ........................................................................ 4092 ........................................................................ 4093 ........................................................................ 4094 ........................................................................ 4095 ........................................................................ 4096 ........................................................................ 4097 ........................................................................ 4098 ........................................................................ 4099 ........................................................................ 4100 ........................................................................ 4101 ........................................................................ 4102 ........................................................................ 4103 ........................................................................ 4104 ........................................................................ 4105 ........................................................................ 4106 ........................................................................ 4107 ........................................................................ 4108 ........................................................................ 4109 ........................................................................ 4110 ........................................................................ 4111 ........................................................................ 4112 ........................................................................ 4113 ........................................................................ 4114 ........................................................................ 4115 ........................................................................ 4116 ........................................................................ 4117 ........................................................................ 4118 ........................................................................ 4119 ........................................................................ 4120 ........................................................................ 4121 ........................................................................ 4122 ........................................................................ 4123 ........................................................................ 4124 ........................................................................ 4125 ........................................................................ 4126 ........................................................................ 4127 ........................................................................ 4128 ........................................................................ 4129 ........................................................................ 4130 ........................................................................ 4131 ........................................................................ 4132 ........................................................................ 4133 ........................................................................ 4134 ........................................................................ 4135 ........................................................................ 4136 ........................................................................ 4137 ........................................................................ 4138 ........................................................................ 4139 ........................................................................ 4140 ........................................................................ 4141 ........................................................................ 4142 ........................................................................ 4143 ........................................................................ 4144 ........................................................................ 4145 ........................................................................ 4146 ........................................................................ 4147 ........................................................................ 4148 ........................................................................ 4149 ........................................................................ 4150 ........................................................................ 4151 ........................................................................ 4152 ........................................................................ 4153 ........................................................................ 4154 ........................................................................ 4155 ........................................................................ 4156 ........................................................................ 4157 ........................................................................ 4158 ........................................................................ 4159 ........................................................................ 4160 ........................................................................ 4161 ........................................................................ 4162 ........................................................................ 4163 ........................................................................ 4164 ........................................................................ 4165 ........................................................................ 4166 ........................................................................ 4167 ........................................................................ 4168 ........................................................................ 4169 ........................................................................ 4170 ........................................................................ 4171 ........................................................................ 4172 ........................................................................ 4173 ........................................................................ 4174 ........................................................................ 4175 ........................................................................ 4176 ........................................................................ 4177 ........................................................................ 4178 ........................................................................ 4179 ........................................................................ 4180 ........................................................................ 4181 ........................................................................ 4182 ........................................................................ 4183 ........................................................................ 4184 ........................................................................ 4185 ........................................................................ 4186 ........................................................................ 4187 ........................................................................ 4188 ........................................................................ 4189 ........................................................................ 4190 ........................................................................ 4191 ........................................................................ 4192 ........................................................................ 4193 ........................................................................ 4194 ........................................................................ 4195 ........................................................................ 4196 ........................................................................ 4197 ........................................................................ 4198 ........................................................................ 4199 ........................................................................ 4200 ........................................................................ 4201 ........................................................................ 4202 ........................................................................ 4203 ........................................................................ 4204 ........................................................................ 4205 ........................................................................ 4206 ........................................................................ 4207 ........................................................................ 4208 ........................................................................ 4209 ........................................................................ 4210 ........................................................................ 4211 ........................................................................ 4212 ........................................................................ 4213 ........................................................................ 4214 ........................................................................ 4215 ........................................................................ 4216 ........................................................................ 4217 ........................................................................ 4218 ........................................................................ 4219 ........................................................................ 4220 ........................................................................ 4221 ........................................................................ 4222 ........................................................................ 4223 ........................................................................ 4224 ........................................................................ 4225 ........................................................................ 4226 ........................................................................ 4227 ........................................................................ 4228 ........................................................................ 4229 ........................................................................ 4230 ........................................................................ 4231 ........................................................................ 4232 ........................................................................ 4233 ........................................................................ 4234 ........................................................................ 4235 ........................................................................ 4236 ........................................................................ 4237 ........................................................................ 4238 ........................................................................ 4239 ........................................................................ 4240 ........................................................................ 4241 ........................................................................ 4242 ........................................................................ 4243 ........................................................................ 4244 ........................................................................ 4245 ........................................................................ 4246 ........................................................................ 4247 ........................................................................ 4248 ........................................................................ 4249 ........................................................................ 4250 ........................................................................ 4251 ........................................................................ 4252 ........................................................................ 4253 ........................................................................ 4254 ........................................................................ 4255 ........................................................................ 4256 ........................................................................ 4257 ........................................................................ 4258 ........................................................................ 4259 ........................................................................ 4260 ........................................................................ 4261 ........................................................................ 4262 ........................................................................ 4263 ........................................................................ 4264 ........................................................................ 4265 ........................................................................ 4266 ........................................................................ 4267 ........................................................................ 4268 ........................................................................ 4269 ........................................................................ 4270 ........................................................................ 4271 ........................................................................ 4272 ........................................................................ 4273 ........................................................................ 4274 ........................................................................ 4275 ........................................................................ 4276 ........................................................................ 4277 ........................................................................ 4278 ........................................................................ 4279 ........................................................................ 4280 ........................................................................ 4281 ........................................................................ 4282 ........................................................................ 4283 ........................................................................ 4284 ........................................................................ 4285 ........................................................................ 4286 ........................................................................ 4287 ........................................................................ 4288 ........................................................................ 4289 ........................................................................ 4290 ........................................................................ 4291 ........................................................................ 4292 ........................................................................ 4293 ........................................................................ 4294 ........................................................................ 4295 ........................................................................ 4296 ........................................................................ 4297 ........................................................................ 4298 ........................................................................ 4299 ........................................................................ 4300 ........................................................................ 4301 ........................................................................ 4302 ........................................................................ 4303 ........................................................................ 4304 ........................................................................ 4305 ........................................................................ 4306 ........................................................................ 4307 ........................................................................ 4308 ........................................................................ 4309 ........................................................................ 4310 ........................................................................ 4311 ........................................................................ 4312 ........................................................................ 4313 ........................................................................ 4314 ........................................................................ 4315 ........................................................................ 4316 ........................................................................ 4317 ........................................................................ 4318 ........................................................................ 4319 ........................................................................ 4320 ........................................................................ 4321 ........................................................................ 4322 ........................................................................ 4323 ........................................................................ 4324 ........................................................................ 4325 ........................................................................ 4326 ........................................................................ 4327 ........................................................................ 4328 ........................................................................ 4329 ........................................................................ 4330 ........................................................................ 4331 ........................................................................ 4332 ........................................................................ 4333 ........................................................................ 4334 ........................................................................ 4335 ........................................................................ 4336 ........................................................................ 4337 ........................................................................ 4338 ........................................................................ 4339 ........................................................................ 4340 ........................................................................ 4341 ........................................................................ 4342 ........................................................................ 4343 ........................................................................ 4344 ........................................................................ 4345 ........................................................................ 4346 ........................................................................ 4347 ........................................................................ 4348 ........................................................................ 4349 ........................................................................ 4350 ........................................................................ 4351 ........................................................................ 4352 ........................................................................ 4353 ........................................................................ 4354 ........................................................................ 4355 ........................................................................ 4356 ........................................................................ 4357 ........................................................................ 4358 ........................................................................ 4359 ........................................................................ 4360 ........................................................................ 4361 ........................................................................ 4362 ........................................................................ 4363 ........................................................................ 4364 ........................................................................ 4365 ........................................................................ 4366 ........................................................................ 4367 ........................................................................ 4368 ........................................................................ 4369 ........................................................................ 4370 ........................................................................ 4371 ........................................................................ 4372 ........................................................................ 4373 ........................................................................ 4374 ........................................................................ 4375 ........................................................................ 4376 ........................................................................ 4377 ........................................................................ 4378 ........................................................................ 4379 ........................................................................ 4380 ........................................................................ 4381 ........................................................................ 4382 ........................................................................ 4383 ........................................................................ 4384 ........................................................................ 4385 ........................................................................ 4386 ........................................................................ 4387 ........................................................................ 4388 ........................................................................ 4389 ........................................................................ 4390 ........................................................................ 4391 ........................................................................ 4392 ........................................................................ 4393 ........................................................................ 4394 ........................................................................ 4395 ........................................................................ 4396 ........................................................................ 4397 ........................................................................ 4398 ........................................................................ 4399 ........................................................................ 4400 ........................................................................ 4401 ........................................................................ 4402 ........................................................................ 4403 ........................................................................ 4404 ........................................................................ 4405 ........................................................................ 4406 ........................................................................ 4407 ........................................................................ 4408 ........................................................................ 4409 ........................................................................ 4410 ........................................................................ 4411 ........................................................................ 4412 ........................................................................ 4413 ........................................................................ 4414 ........................................................................ 4415 ........................................................................ 4416 ........................................................................ 4417 ........................................................................ 4418 ........................................................................ 4419 ........................................................................ 4420 ........................................................................ 4421 ........................................................................ 4422 ........................................................................ 4423 ........................................................................ 4424 ........................................................................ 4425 ........................................................................ 4426 ........................................................................ 4427 ........................................................................ 4428 ........................................................................ 4429 ........................................................................ 4430 ........................................................................ 4431 ........................................................................ 4432 ........................................................................ 4433 ........................................................................ 4434 ........................................................................ 4435 ........................................................................ 4436 ........................................................................ 4437 ........................................................................ 4438 ........................................................................ 4439 ........................................................................ 4440 ........................................................................ 4441 ........................................................................ 4442 ........................................................................ 4443 ........................................................................ 4444 ........................................................................ 4445 ........................................................................ 4446 ........................................................................ 4447 ........................................................................ 4448 ........................................................................ 4449 ........................................................................ 4450 ........................................................................ 4451 ........................................................................ 4452 ........................................................................ 4453 ........................................................................ 4454 ........................................................................ 4455 ........................................................................ 4456 ........................................................................ 4457 ........................................................................ 4458 ........................................................................ 4459 ........................................................................ 4460 ........................................................................ 4461 ........................................................................ 4462 ........................................................................ 4463 ........................................................................ 4464 ........................................................................ 4465 ........................................................................ 4466 ........................................................................ 4467 ........................................................................ 4468 ........................................................................ 4469 ........................................................................ 4470 ........................................................................ 4471 ........................................................................ 4472 ........................................................................ 4473 ........................................................................ 4474 ........................................................................ 4475 ........................................................................ 4476 ........................................................................ 4477 ........................................................................ 4478 ........................................................................ 4479 ........................................................................ 4480 ........................................................................ 4481 ........................................................................ 4482 ........................................................................ 4483 ........................................................................ 4484 ........................................................................ 4485 ........................................................................ 4486 ........................................................................ 4487 ........................................................................ 4488 ........................................................................ 4489 ........................................................................ 4490 ........................................................................ 4491 ........................................................................ 4492 ........................................................................ 4493 ........................................................................ 4494 ........................................................................ 4495 ........................................................................ 4496 ........................................................................ 4497 ........................................................................ 4498 ........................................................................ 4499 ........................................................................ 4500 ........................................................................ 4501 ........................................................................ 4502 ........................................................................ 4503 ........................................................................ 4504 ........................................................................ 4505 ........................................................................ 4506 ........................................................................ 4507 ........................................................................ 4508 ........................................................................ 4509 ........................................................................ 4510 ........................................................................ 4511 ........................................................................ 4512 ........................................................................ 4513 ........................................................................ 4514 ........................................................................ 4515 ........................................................................ 4516 ........................................................................ 4517 ........................................................................ 4518 ........................................................................ 4519 ........................................................................ 4520 ........................................................................ 4521 ........................................................................ 4522 ........................................................................ 4523 ........................................................................ 4524 ........................................................................ 4525 ........................................................................ 4526 ........................................................................ 4527 ........................................................................ 4528 ........................................................................ 4529 ........................................................................ 4530 ........................................................................ 4531 ........................................................................ 4532 ........................................................................ 4533 ........................................................................ 4534 ........................................................................ 4535 ........................................................................ 4536 ........................................................................ 4537 ........................................................................ 4538 ........................................................................ 4539 ........................................................................ 4540 ........................................................................ 4541 ........................................................................ 4542 ........................................................................ 4543 ........................................................................ 4544 ........................................................................ 4545 ........................................................................ 4546 ........................................................................ 4547 ........................................................................ 4548 ........................................................................ 4549 ........................................................................ 4550 ........................................................................ 4551 ........................................................................ 4552 ........................................................................ 4553 ........................................................................ 4554 ........................................................................ 4555 ........................................................................ 4556 ........................................................................ 4557 ........................................................................ 4558 ........................................................................ 4559 ........................................................................ 4560 ........................................................................ 4561 ........................................................................ 4562 ........................................................................ 4563 ........................................................................ 4564 ........................................................................ 4565 ........................................................................ 4566 ........................................................................ 4567 ........................................................................ 4568 ........................................................................ 4569 ........................................................................ 4570 ........................................................................ 4571 ........................................................................ 4572 ........................................................................ 4573 ........................................................................ 4574 ........................................................................ 4575 ........................................................................ 4576 ........................................................................ 4577 ........................................................................ 4578 ........................................................................ 4579 ........................................................................ 4580 ........................................................................ 4581 ........................................................................ 4582 ........................................................................ 4583 ........................................................................ 4584 ........................................................................ 4585 ........................................................................ 4586 ........................................................................ 4587 ........................................................................ 4588 ........................................................................ 4589 ........................................................................ 4590 ........................................................................ 4591 ........................................................................ 4592 ........................................................................ 4593 ........................................................................ 4594 ........................................................................ 4595 ........................................................................ 4596 ........................................................................ 4597 ........................................................................ 4598 ........................................................................ 4599 ........................................................................ 4600 ........................................................................ 4601 ........................................................................ 4602 ........................................................................ 4603 ........................................................................ 4604 ........................................................................ 4605 ........................................................................ 4606 ........................................................................ 4607 ........................................................................ 4608 ........................................................................ 4609 ........................................................................ 4610 ........................................................................ 4611 ........................................................................ 4612 ........................................................................ 4613 ........................................................................ 4614 ........................................................................ 4615 ........................................................................ 4616 ........................................................................ 4617 ........................................................................ 4618 ........................................................................ 4619 ........................................................................ 4620 ........................................................................ 4621 ........................................................................ 4622 ........................................................................ 4623 ........................................................................ 4624 ........................................................................ 4625 ........................................................................ 4626 ........................................................................ 4627 ........................................................................ 4628 ........................................................................ 4629 ........................................................................ 4630 ........................................................................ 4631 ........................................................................ 4632 ........................................................................ 4633 ........................................................................ 4634 ........................................................................ 4635 ........................................................................ 4636 ........................................................................ 4637 ........................................................................ 4638 ........................................................................ 4639 ........................................................................ 4640 ........................................................................ 4641 ........................................................................ 4642 ........................................................................ 4643 ........................................................................ 4644 ........................................................................ 4645 ........................................................................ 4646 ........................................................................ 4647 ........................................................................ 4648 ........................................................................ 4649 ........................................................................ 4650 ........................................................................ 4651 ........................................................................ 4652 ........................................................................ 4653 ........................................................................ 4654 ........................................................................ 4655 ........................................................................ 4656 ........................................................................ 4657 ........................................................................ 4658 ........................................................................ 4659 ........................................................................ 4660 ........................................................................ 4661 ........................................................................ 4662 ........................................................................ 4663 ........................................................................ 4664 ........................................................................ 4665 ........................................................................ 4666 ........................................................................ 4667 ........................................................................ 4668 ........................................................................ 4669 ........................................................................ 4670 ........................................................................ 4671 ........................................................................ 4672 ........................................................................ 4673 ........................................................................ 4674 ........................................................................ 4675 ........................................................................ 4676 ........................................................................ 4677 ........................................................................ 4678 ........................................................................ 4679 ........................................................................ 4680 ........................................................................ 4681 ........................................................................ 4682 ........................................................................ 4683 ........................................................................ 4684 ........................................................................ 4685 ........................................................................ 4686 ........................................................................ 4687 ........................................................................ 4688 ........................................................................ 4689 ........................................................................ 4690 ........................................................................ 4691 ........................................................................ 4692 ........................................................................ 4693 ........................................................................ 4694 ........................................................................ 4695 ........................................................................ 4696 ........................................................................ 4697 ........................................................................ 4698 ........................................................................ 4699 ........................................................................ 4700 ........................................................................ 4701 ........................................................................ 4702 ........................................................................ 4703 ........................................................................ 4704 ........................................................................ 4705 ........................................................................ 4706 ........................................................................ 4707 ........................................................................ 4708 ........................................................................ 4709 ........................................................................ 4710 ........................................................................ 4711 ........................................................................ 4712 ........................................................................ 4713 ........................................................................ 4714 ........................................................................ 4715 ........................................................................ 4716 ........................................................................ 4717 ........................................................................ 4718 ........................................................................ 4719 ........................................................................ 4720 ........................................................................ 4721 ........................................................................ 4722 ........................................................................ 4723 ........................................................................ 4724 ........................................................................ 4725 ........................................................................ 4726 ........................................................................ 4727 ........................................................................ 4728 ........................................................................ 4729 ........................................................................ 4730 ........................................................................ 4731 ........................................................................ 4732 ........................................................................ 4733 ........................................................................ 4734 ........................................................................ 4735 ........................................................................ 4736 ........................................................................ 4737 ........................................................................ 4738 ........................................................................ 4739 ........................................................................ 4740 ........................................................................ 4741 ........................................................................ 4742 ........................................................................ 4743 ........................................................................ 4744 ........................................................................ 4745 ........................................................................ 4746 ........................................................................ 4747 ........................................................................ 4748 ........................................................................ 4749 ........................................................................ 4750 ........................................................................ 4751 ........................................................................ 4752 ........................................................................ 4753 ........................................................................ 4754 ........................................................................ 4755 ........................................................................ 4756 ........................................................................ 4757 ........................................................................ 4758 ........................................................................ 4759 ........................................................................ 4760 ........................................................................ 4761 ........................................................................ 4762 ........................................................................ 4763 ........................................................................ 4764 ........................................................................ 4765 ........................................................................ 4766 ........................................................................ 4767 ........................................................................ 4768 ........................................................................ 4769 ........................................................................ 4770 ........................................................................ 4771 ........................................................................ 4772 ........................................................................ 4773 ........................................................................ 4774 ........................................................................ 4775 ........................................................................ 4776 ........................................................................ 4777 ........................................................................ 4778 ........................................................................ 4779 ........................................................................ 4780 ........................................................................ 4781 ........................................................................ 4782 ........................................................................ 4783 ........................................................................ 4784 ........................................................................ 4785 ........................................................................ 4786 ........................................................................ 4787 ........................................................................ 4788 ........................................................................ 4789 ........................................................................ 4790 ........................................................................ 4791 ........................................................................ 4792 ........................................................................ 4793 ........................................................................ 4794 ........................................................................ 4795 ........................................................................ 4796 ........................................................................ 4797 ........................................................................ 4798 ........................................................................ 4799 ........................................................................ 4800 ........................................................................ 4801 ........................................................................ 4802 ........................................................................ 4803 ........................................................................ 4804 ........................................................................ 4805 ........................................................................ 4806 ........................................................................ 4807 ........................................................................ 4808 ........................................................................ 4809 ........................................................................ 4810 ........................................................................ 4811 ........................................................................ 4812 ........................................................................ 4813 ........................................................................ 4814 ........................................................................ 4815 ........................................................................ 4816 ........................................................................ 4817 ........................................................................ 4818 ........................................................................ 4819 ........................................................................ 4820 ........................................................................ 4821 ........................................................................ 4822 ........................................................................ 4823 ........................................................................ 4824 ........................................................................ 4825 ........................................................................ 4826 ........................................................................ 4827 ........................................................................ 4828 ........................................................................ 4829 ........................................................................ 4830 ........................................................................ 4831 ........................................................................ 4832 ........................................................................ 4833 ........................................................................ 4834 ........................................................................ 4835 ........................................................................ 4836 ........................................................................ 4837 ........................................................................ 4838 ........................................................................ 4839 ........................................................................ 4840 ........................................................................ 4841 ........................................................................ 4842 ........................................................................ 4843 ........................................................................ 4844 ........................................................................ 4845 ........................................................................ 4846 ........................................................................ 4847 ........................................................................ 4848 ........................................................................ 4849 ........................................................................ 4850 ........................................................................ 4851 ........................................................................ 4852 ........................................................................ 4853 ........................................................................ 4854 ........................................................................ 4855 ........................................................................ 4856 ........................................................................ 4857 ........................................................................ 4858 ........................................................................ 4859 ........................................................................ 4860 ........................................................................ 4861 ........................................................................ 4862 ........................................................................ 4863 ........................................................................ 4864 ........................................................................ 4865 ........................................................................ 4866 ........................................................................ 4867 ........................................................................ 4868 ........................................................................ 4869 ........................................................................ 4870 ........................................................................ 4871 ........................................................................ 4872 ........................................................................ 4873 ........................................................................ 4874 ........................................................................ 4875 ........................................................................ 4876 ........................................................................ 4877 ........................................................................ 4878 ........................................................................ 4879 ........................................................................ 4880 ........................................................................ 4881 ........................................................................ 4882 ........................................................................ 4883 ........................................................................ 4884 ........................................................................ 4885 ........................................................................ 4886 ........................................................................ 4887 ........................................................................ 4888 ........................................................................ 4889 ........................................................................ 4890 ........................................................................ 4891 ........................................................................ 4892 ........................................................................ 4893 ........................................................................ 4894 ........................................................................ 4895 ........................................................................ 4896 ........................................................................ 4897 ........................................................................ 4898 ........................................................................ 4899 ........................................................................ 4900 ........................................................................ 4901 ........................................................................ 4902 ........................................................................ 4903 ........................................................................ 4904 ........................................................................ 4905 ........................................................................ 4906 ........................................................................ 4907 ........................................................................ 4908 ........................................................................ 4909 ........................................................................ 4910 ........................................................................ 4911 ........................................................................ 4912 ........................................................................ 4913 ........................................................................ 4914 ........................................................................ 4915 ........................................................................ 4916 ........................................................................ 4917 ........................................................................ 4918 ........................................................................ 4919 ........................................................................ 4920 ........................................................................ 4921 ........................................................................ 4922 ........................................................................ 4923 ........................................................................ 4924 ........................................................................ 4925 ........................................................................ 4926 ........................................................................ 4927 ........................................................................ 4928 ........................................................................ 4929 ........................................................................ 4930 ........................................................................ 4931 ........................................................................ 4932 ........................................................................ 4933 ........................................................................ 4934 ........................................................................ 4935 ........................................................................ 4936 ........................................................................ 4937 ........................................................................ 4938 ........................................................................ 4939 ........................................................................ 4940 ........................................................................ 4941 ........................................................................ 4942 ........................................................................ 4943 ........................................................................ 4944 ........................................................................ 4945 ........................................................................ 4946 ........................................................................ 4947 ........................................................................ 4948 ........................................................................ 4949 ........................................................................ 4950 ........................................................................ 4951 ........................................................................ 4952 ........................................................................ 4953 ........................................................................ 4954 ........................................................................ 4955 ........................................................................ 4956 ........................................................................ 4957 ........................................................................ 4958 ........................................................................ 4959 ........................................................................ 4960 ........................................................................ 4961 ........................................................................ 4962 ........................................................................ 4963 ........................................................................ 4964 ........................................................................ 4965 ........................................................................ 4966 ........................................................................ 4967 ........................................................................ 4968 ........................................................................ 4969 ........................................................................ 4970 ........................................................................ 4971 ........................................................................ 4972 ........................................................................ 4973 ........................................................................ 4974 ........................................................................ 4975 ........................................................................ 4976 ........................................................................ 4977 ........................................................................ 4978 ........................................................................ 4979 ........................................................................ 4980 ........................................................................ 4981 ........................................................................ 4982 ........................................................................ 4983 ........................................................................ 4984 ........................................................................ 4985 ........................................................................ 4986 ........................................................................ 4987 ........................................................................ 4988 ........................................................................ 4989 ........................................................................ 4990 ........................................................................ 4991 ........................................................................ 4992 ........................................................................ 4993 ........................................................................ 4994 ........................................................................ 4995 ........................................................................ 4996 ........................................................................ 4997 ........................................................................ 4998 ........................................................................ 4999 ........................................................................ 5000 ........................................................................ 5001 ........................................................................ 5002 ........................................................................ 5003 ........................................................................ 5004 ........................................................................ 5005 ........................................................................ 5006 ........................................................................ 5007 ........................................................................ 5008 ........................................................................ 5009 ........................................................................ 5010 ........................................................................ 5011 ........................................................................ 5012 ........................................................................ 5013 ........................................................................ 5014 ........................................................................ 5015 ........................................................................ 5016 ........................................................................ 5017 ........................................................................ 5018 ........................................................................ 5019 ........................................................................ 5020 ........................................................................ 5021 ........................................................................ 5022 ........................................................................ 5023 ........................................................................ 5024 ........................................................................ 5025 ........................................................................ 5026 ........................................................................ 5027 ........................................................................ 5028 ........................................................................ 5029 ........................................................................ 5030 ........................................................................ 5031 ........................................................................ 5032 ........................................................................ 5033 ........................................................................ 5034 ........................................................................ 5035 ........................................................................ 5036 ........................................................................ 5037 ........................................................................ 5038 ........................................................................ 5039 ........................................................................ 5040 ........................................................................ 5041 ........................................................................ 5042 ........................................................................ 5043 ........................................................................ 5044 ........................................................................ 5045 ........................................................................ 5046 ........................................................................ 5047 ........................................................................ 5048 ........................................................................ 5049 ........................................................................ 5050 ........................................................................ 5051 ........................................................................ 5052 ........................................................................ 5053 ........................................................................ 5054 ........................................................................ 5055 ........................................................................ 5056 ........................................................................ 5057 ........................................................................ 5058 ........................................................................ 5059 ........................................................................ 5060 ........................................................................ 5061 ........................................................................ 5062 ........................................................................ 5063 ........................................................................ 5064 ........................................................................ 5065 ........................................................................ 5066 ........................................................................ 5067 ........................................................................ 5068 ........................................................................ 5069 ........................................................................ 5070 ........................................................................ 5071 ........................................................................ 5072 ........................................................................ 5073 ........................................................................ 5074 ........................................................................ 5075 ........................................................................ 5076 ........................................................................ 5077 ........................................................................ 5078 ........................................................................ 5079 ........................................................................ 5080 ........................................................................ 5081 ........................................................................ 5082 ........................................................................ 5083 ........................................................................ 5084 ........................................................................ 5085 ........................................................................ 5086 ........................................................................ 5087 ........................................................................ 5088 ........................................................................ 5089 ........................................................................ 5090 ........................................................................ 5091 ........................................................................ 5092 ........................................................................ 5093 ........................................................................ 5094 ........................................................................ 5095 ........................................................................ 5096 ........................................................................ 5097 ........................................................................ 5098 ........................................................................ 5099 ........................................................................ 5100 ........................................................................ 5101 ........................................................................ 5102 ........................................................................ 5103 ........................................................................ 5104 ........................................................................ 5105 ........................................................................ 5106 ........................................................................ 5107 ........................................................................ 5108 ........................................................................ 5109 ........................................................................ 5110 ........................................................................ 5111 ........................................................................ 5112 ........................................................................ 5113 ........................................................................ 5114 ........................................................................ 5115 ........................................................................ 5116 ........................................................................ 5117 ........................................................................ 5118 ........................................................................ 5119 ........................................................................ 5120 ........................................................................ 5121 ........................................................................ 5122 ........................................................................ 5123 ........................................................................ 5124 ........................................................................ 5125 ........................................................................ 5126 ........................................................................ 5127 ........................................................................ 5128 ........................................................................ 5129 ........................................................................ 5130 ........................................................................ 5131 ........................................................................ 5132 ........................................................................ 5133 ........................................................................ 5134 ........................................................................ 5135 ........................................................................ 5136 ........................................................................ 5137 ........................................................................ 5138 ........................................................................ 5139 ........................................................................ 5140 ........................................................................ 5141 ........................................................................ 5142 ........................................................................ 5143 ........................................................................ 5144 ........................................................................ 5145 ........................................................................ 5146 ........................................................................ 5147 ........................................................................ 5148 ........................................................................ 5149 ........................................................................ 5150 ........................................................................ 5151 ........................................................................ 5152 ........................................................................ 5153 ........................................................................ 5154 ........................................................................ 5155 ........................................................................ 5156 ........................................................................ 5157 ........................................................................ 5158 ........................................................................ 5159 ........................................................................ 5160 ........................................................................ 5161 ........................................................................ 5162 ........................................................................ 5163 ........................................................................ 5164 ........................................................................ 5165 ........................................................................ 5166 ........................................................................ 5167 ........................................................................ 5168 ........................................................................ 5169 ........................................................................ 5170 ........................................................................ 5171 ........................................................................ 5172 ........................................................................ 5173 ........................................................................ 5174 ........................................................................ 5175 ........................................................................ 5176 ........................................................................ 5177 ........................................................................ 5178 ........................................................................ 5179 ........................................................................ 5180 ........................................................................ 5181 ........................................................................ 5182 ........................................................................ 5183 ........................................................................ 5184 ........................................................................ 5185 ........................................................................ 5186 ........................................................................ 5187 ........................................................................ 5188 ........................................................................ 5189 ........................................................................ 5190 ........................................................................ 5191 ........................................................................ 5192 ........................................................................ 5193 ........................................................................ 5194 ........................................................................ 5195 ........................................................................ 5196 ........................................................................ 5197 ........................................................................ 5198 ........................................................................ 5199 ........................................................................ 5200 ........................................................................ 5201 ........................................................................ 5202 ........................................................................ 5203 ........................................................................ 5204 ........................................................................ 5205 ........................................................................ 5206 ........................................................................ 5207 ........................................................................ 5208 ........................................................................ 5209 ........................................................................ 5210 ........................................................................ 5211 ........................................................................ 5212 ........................................................................ 5213 ........................................................................ 5214 ........................................................................ 5215 ........................................................................ 5216 ........................................................................ 5217 ........................................................................ 5218 ........................................................................ 5219 ........................................................................ 5220 ........................................................................ 5221 ........................................................................ 5222 ........................................................................ 5223 ........................................................................ 5224 ........................................................................ 5225 ........................................................................ 5226 ........................................................................ 5227 ........................................................................ 5228 ........................................................................ 5229 ........................................................................ 5230 ........................................................................ 5231 ........................................................................ 5232 ........................................................................ 5233 ........................................................................ 5234 ........................................................................ 5235 ........................................................................ 5236 ........................................................................ 5237 ........................................................................ 5238 ........................................................................ 5239 ........................................................................ 5240 ........................................................................ 5241 ........................................................................ 5242 ........................................................................ 5243 ........................................................................ 5244 ........................................................................ 5245 ........................................................................ 5246 ........................................................................ 5247 ........................................................................ 5248 ........................................................................ 5249 ........................................................................ 5250 ........................................................................ 5251 ........................................................................ 5252 ........................................................................ 5253 ........................................................................ 5254 ........................................................................ 5255 ........................................................................ 5256 ........................................................................ 5257 ........................................................................ 5258 ........................................................................ 5259 ........................................................................ 5260 ........................................................................ 5261 ........................................................................ 5262 ........................................................................ 5263 ........................................................................ 5264 ........................................................................ 5265 ........................................................................ 5266 ........................................................................ 5267 ........................................................................ 5268 ........................................................................ 5269 ........................................................................ 5270 ........................................................................ 5271 ........................................................................ 5272 ........................................................................ 5273 ........................................................................ 5274 ........................................................................ 5275 ........................................................................ 5276 ........................................................................ 5277 ........................................................................ 5278 ........................................................................ 5279 ........................................................................ 5280 ........................................................................ 5281 ........................................................................ 5282 ........................................................................ 5283 ........................................................................ 5284 ........................................................................ 5285 ........................................................................ 5286 ........................................................................ 5287 ........................................................................ 5288 ........................................................................ 5289 ........................................................................ 5290 ........................................................................ 5291 ........................................................................ 5292 ........................................................................ 5293 ........................................................................ 5294 ........................................................................ 5295 ........................................................................ 5296 ........................................................................ 5297 ........................................................................ 5298 ........................................................................ 5299 ........................................................................ 5300 ........................................................................ 5301 ........................................................................ 5302 ........................................................................ 5303 ........................................................................ 5304 ........................................................................ 5305 ........................................................................ 5306 ........................................................................ 5307 ........................................................................ 5308 ........................................................................ 5309 ........................................................................ 5310 ........................................................................ 5311 ........................................................................ 5312 ........................................................................ 5313 ........................................................................ 5314 ........................................................................ 5315 ........................................................................ 5316 ........................................................................ 5317 ........................................................................ 5318 ........................................................................ 5319 ........................................................................ 5320 ........................................................................ 5321 ........................................................................ 5322 ........................................................................ 5323 ........................................................................ 5324 ........................................................................ 5325 ........................................................................ 5326 ........................................................................ 5327 ........................................................................ 5328 ........................................................................ 5329 ........................................................................ 5330 ........................................................................ 5331 ........................................................................ 5332 ........................................................................ 5333 ........................................................................ 5334 ........................................................................ 5335 ........................................................................ 5336 ........................................................................ 5337 ........................................................................ 5338 ........................................................................ 5339 ........................................................................ 5340 ........................................................................ 5341 ........................................................................ 5342 ........................................................................ 5343 ........................................................................ 5344 ........................................................................ 5345 ........................................................................ 5346 ........................................................................ 5347 ........................................................................ 5348 ........................................................................ 5349 ........................................................................ 5350 ........................................................................ 5351 ........................................................................ 5352 ........................................................................ 5353 ........................................................................ 5354 ........................................................................ 5355 ........................................................................ 5356 ........................................................................ 5357 ........................................................................ 5358 ........................................................................ 5359 ........................................................................ 5360 ........................................................................ 5361 ........................................................................ 5362 ........................................................................ 5363 ........................................................................ 5364 ........................................................................ 5365 ........................................................................ 5366 ........................................................................ 5367 ........................................................................ 5368 ........................................................................ 5369 ........................................................................ 5370 ........................................................................ 5371 ........................................................................ 5372 ........................................................................ 5373 ........................................................................ 5374 ........................................................................ 5375 ........................................................................ 5376 ........................................................................ 5377 ........................................................................ 5378 ........................................................................ 5379 ........................................................................ 5380 ........................................................................ 5381 ........................................................................ 5382 ........................................................................ 5383 ........................................................................ 5384 ........................................................................ 5385 ........................................................................ 5386 ........................................................................ 5387 ........................................................................ 5388 ........................................................................ 5389 ........................................................................ 5390 ........................................................................ 5391 ........................................................................ 5392 ........................................................................ 5393 ........................................................................ 5394 ........................................................................ 5395 ........................................................................ 5396 ........................................................................ 5397 ........................................................................ 5398 ........................................................................ 5399 ........................................................................ 5400 ........................................................................ 5401 ........................................................................ 5402 ........................................................................ 5403 ........................................................................ 5404 ........................................................................ 5405 ........................................................................ 5406 ........................................................................ 5407 ........................................................................ 5408 ........................................................................ 5409 ........................................................................ 5410 ........................................................................ 5411 ........................................................................ 5412 ........................................................................ 5413 ........................................................................ 5414 ........................................................................ 5415 ........................................................................ 5416 ........................................................................ 5417 ........................................................................ 5418 ........................................................................ 5419 ........................................................................ 5420 ........................................................................ 5421 ........................................................................ 5422 ........................................................................ 5423 ........................................................................ 5424 ........................................................................ 5425 ........................................................................ 5426 ........................................................................ 5427 ........................................................................ 5428 ........................................................................ 5429 ........................................................................ 5430 ........................................................................ 5431 ........................................................................ 5432 ........................................................................ 5433 ........................................................................ 5434 ........................................................................ 5435 ........................................................................ 5436 ........................................................................ 5437 ........................................................................ 5438 ........................................................................ 5439 ........................................................................ 5440 ........................................................................ 5441 ........................................................................ 5442 ........................................................................ 5443 ........................................................................ 5444 ........................................................................ 5445 ........................................................................ 5446 ........................................................................ 5447 ........................................................................ 5448 ........................................................................ 5449 ........................................................................ 5450 ........................................................................ 5451 ........................................................................ 5452 ........................................................................ 5453 ........................................................................ 5454 ........................................................................ 5455 ........................................................................ 5456 ........................................................................ 5457 ........................................................................ 5458 ........................................................................ 5459 ........................................................................ 5460 ........................................................................ 5461 ........................................................................ 5462 ........................................................................ 5463 ........................................................................ 5464 ........................................................................ 5465 ........................................................................ 5466 ........................................................................ 5467 ........................................................................ 5468 ........................................................................ 5469 ........................................................................ 5470 ........................................................................ 5471 ........................................................................ 5472 ........................................................................ 5473 ........................................................................ 5474 ........................................................................ 5475 ........................................................................ 5476 ........................................................................ 5477 ........................................................................ 5478 ........................................................................ 5479 ........................................................................ 5480 ........................................................................ 5481 ........................................................................ 5482 ........................................................................ 5483 ........................................................................ 5484 ........................................................................ 5485 ........................................................................ 5486 ........................................................................ 5487 ........................................................................ 5488 ........................................................................ 5489 ........................................................................ 5490 ........................................................................ 5491 ........................................................................ 5492 ........................................................................ 5493 ........................................................................ 5494 ........................................................................ 5495 ........................................................................ 5496 ........................................................................ 5497 ........................................................................ 5498 ........................................................................ 5499 ........................................................................ 5500 ........................................................................ 5501 ........................................................................ 5502 ........................................................................ 5503 ........................................................................ 5504 ........................................................................ 5505 ........................................................................ 5506 ........................................................................ 5507 ........................................................................ 5508 ........................................................................ 5509 ........................................................................ 5510 ........................................................................ 5511 ........................................................................ 5512 ........................................................................ 5513 ........................................................................ 5514 ........................................................................ 5515 ........................................................................ 5516 ........................................................................ 5517 ........................................................................ 5518 ........................................................................ 5519 ........................................................................ 5520 ........................................................................ 5521 ........................................................................ 5522 ........................................................................ 5523 ........................................................................ 5524 ........................................................................ 5525 ........................................................................ 5526 ........................................................................ 5527 ........................................................................ 5528 ........................................................................ 5529 ........................................................................ 5530 ........................................................................ 5531 ........................................................................ 5532 ........................................................................ 5533 ........................................................................ 5534 ........................................................................ 5535 ........................................................................ 5536 ........................................................................ 5537 ........................................................................ 5538 ........................................................................ 5539 ........................................................................ 5540 ........................................................................ 5541 ........................................................................ 5542 ........................................................................ 5543 ........................................................................ 5544 ........................................................................ 5545 ........................................................................ 5546 ........................................................................ 5547 ........................................................................ 5548 ........................................................................ 5549 ........................................................................ 5550 ........................................................................ 5551 ........................................................................ 5552 ........................................................................ 5553 ........................................................................ 5554 ........................................................................ 5555 ........................................................................ 5556 ........................................................................ 5557 ........................................................................ 5558 ........................................................................ 5559 ........................................................................ 5560 ........................................................................ 5561 ........................................................................ 5562 ........................................................................ 5563 ........................................................................ 5564 ........................................................................ 5565 ........................................................................ 5566 ........................................................................ 5567 ........................................................................ 5568 ........................................................................ 5569 ........................................................................ 5570 ........................................................................ 5571 ........................................................................ 5572 ........................................................................ 5573 ........................................................................ 5574 ........................................................................ 5575 ........................................................................ 5576 ........................................................................ 5577 ........................................................................ 5578 ........................................................................ 5579 ........................................................................ 5580 ........................................................................ 5581 ........................................................................ 5582 ........................................................................ 5583 ........................................................................ 5584 ........................................................................ 5585 ........................................................................ 5586 ........................................................................ 5587 ........................................................................ 5588 ........................................................................ 5589 ........................................................................ 5590 ........................................................................ 5591 ........................................................................ 5592 ........................................................................ 5593 ........................................................................ 5594 ........................................................................ 5595 ........................................................................ 5596 ........................................................................ 5597 ........................................................................ 5598 ........................................................................ 5599 ........................................................................ 5600 ........................................................................ 5601 ........................................................................ 5602 ........................................................................ 5603 ........................................................................ 5604 ........................................................................ 5605 ........................................................................ 5606 ........................................................................ 5607 ........................................................................ 5608 ........................................................................ 5609 ........................................................................ 5610 ........................................................................ 5611 ........................................................................ 5612 ........................................................................ 5613 ........................................................................ 5614 ........................................................................ 5615 ........................................................................ 5616 ........................................................................ 5617 ........................................................................ 5618 ........................................................................ 5619 ........................................................................ 5620 ........................................................................ 5621 ........................................................................ 5622 ........................................................................ 5623 ........................................................................ 5624 ........................................................................ 5625 ........................................................................ 5626 ........................................................................ 5627 ........................................................................ 5628 ........................................................................ 5629 ........................................................................ 5630 ........................................................................ 5631 ........................................................................ 5632 ........................................................................ 5633 ........................................................................ 5634 ........................................................................ 5635 ........................................................................ 5636 ........................................................................ 5637 ........................................................................ 5638 ........................................................................ 5639 ........................................................................ 5640 ........................................................................ 5641 ........................................................................ 5642 ........................................................................ 5643 ........................................................................ 5644 ........................................................................ 5645 ........................................................................ 5646 ........................................................................ 5647 ........................................................................ 5648 ........................................................................ 5649 ........................................................................ 5650 ........................................................................ 5651 ........................................................................ 5652 ........................................................................ 5653 ........................................................................ 5654 ........................................................................ 5655 ........................................................................ 5656 ........................................................................ 5657 ........................................................................ 5658 ........................................................................ 5659 ........................................................................ 5660 ........................................................................ 5661 ........................................................................ 5662 ........................................................................ 5663 ........................................................................ 5664 ........................................................................ 5665 ........................................................................ 5666 ........................................................................ 5667 ........................................................................ 5668 ........................................................................ 5669 ........................................................................ 5670 ........................................................................ 5671 ........................................................................ 5672 ........................................................................ 5673 ........................................................................ 5674 ........................................................................ 5675 ........................................................................ 5676 ........................................................................ 5677 ........................................................................ 5678 ........................................................................ 5679 ........................................................................ 5680 ........................................................................ 5681 ........................................................................ 5682 ........................................................................ 5683 ........................................................................ 5684 ........................................................................ 5685 ........................................................................ 5686 ........................................................................ 5687 ........................................................................ 5688 ........................................................................ 5689 ........................................................................ 5690 ........................................................................ 5691 ........................................................................ 5692 ........................................................................ 5693 ........................................................................ 5694 ........................................................................ 5695 ........................................................................ 5696 ........................................................................ 5697 ........................................................................ 5698 ........................................................................ 5699 ........................................................................ 5700 ........................................................................ 5701 ........................................................................ 5702 ........................................................................ 5703 ........................................................................ 5704 ........................................................................ 5705 ........................................................................ 5706 ........................................................................ 5707 ........................................................................ 5708 ........................................................................ 5709 ........................................................................ 5710 ........................................................................ 5711 ........................................................................ 5712 ........................................................................ 5713 ........................................................................ 5714 ........................................................................ 5715 ........................................................................ 5716 ........................................................................ 5717 ........................................................................ 5718 ........................................................................ 5719 ........................................................................ 5720 ........................................................................ 5721 ........................................................................ 5722 ........................................................................ 5723 ........................................................................ 5724 ........................................................................ 5725 ........................................................................ 5726 ........................................................................ 5727 ........................................................................ 5728 ........................................................................ 5729 ........................................................................ 5730 ........................................................................ 5731 ........................................................................ 5732 ........................................................................ 5733 ........................................................................ 5734 ........................................................................ 5735 ........................................................................ 5736 ........................................................................ 5737 ........................................................................ 5738 ........................................................................ 5739 ........................................................................ 5740 ........................................................................ 5741 ........................................................................ 5742 ........................................................................ 5743 ........................................................................ 5744 ........................................................................ 5745 ........................................................................ 5746 ........................................................................ 5747 ........................................................................ 5748 ........................................................................ 5749 ........................................................................ 5750 ........................................................................ 5751 ........................................................................ 5752 ........................................................................ 5753 ........................................................................ 5754 ........................................................................ 5755 ........................................................................ 5756 ........................................................................ 5757 ........................................................................ 5758 ........................................................................ 5759 ........................................................................ 5760 ........................................................................ 5761 ........................................................................ 5762 ........................................................................ 5763 ........................................................................ 5764 ........................................................................ 5765 ........................................................................ 5766 ........................................................................ 5767 ........................................................................ 5768 ........................................................................ 5769 ........................................................................ 5770 ........................................................................ 5771 ........................................................................ 5772 ........................................................................ 5773 ........................................................................ 5774 ........................................................................ 5775 ........................................................................ 5776 ........................................................................ 5777 ........................................................................ 5778 ........................................................................ 5779 ........................................................................ 5780 ........................................................................ 5781 ........................................................................ 5782 ........................................................................ 5783 ........................................................................ 5784 ........................................................................ 5785 ........................................................................ 5786 ........................................................................ 5787 ........................................................................ 5788 ........................................................................ 5789 ........................................................................ 5790 ........................................................................ 5791 ........................................................................ 5792 ........................................................................ 5793 ........................................................................ 5794 ........................................................................ 5795 ........................................................................ 5796 ........................................................................ 5797 ........................................................................ 5798 ........................................................................ 5799 ........................................................................ 5800 ........................................................................ 5801 ........................................................................ 5802 ........................................................................ 5803 ........................................................................ 5804 ........................................................................ 5805 ........................................................................ 5806 ........................................................................ 5807 ........................................................................ 5808 ........................................................................ 5809 ........................................................................ 5810 ........................................................................ 5811 ........................................................................ 5812 ........................................................................ 5813 ........................................................................ 5814 ........................................................................ 5815 ........................................................................ 5816 ........................................................................ 5817 ........................................................................ 5818 ........................................................................ 5819 ........................................................................ 5820 ........................................................................ 5821 ........................................................................ 5822 ........................................................................ 5823 ........................................................................ 5824 ........................................................................ 5825 ........................................................................ 5826 ........................................................................ 5827 ........................................................................ 5828 ........................................................................ 5829 ........................................................................ 5830 ........................................................................ 5831 ........................................................................ 5832 ........................................................................ 5833 ........................................................................ 5834 ........................................................................ 5835 ........................................................................ 5836 ........................................................................ 5837 ........................................................................ 5838 ........................................................................ 5839 ........................................................................ 5840 ........................................................................ 5841 ........................................................................ 5842 ........................................................................ 5843 ........................................................................ 5844 ........................................................................ 5845 ........................................................................ 5846 ........................................................................ 5847 ........................................................................ 5848 ........................................................................ 5849 ........................................................................ 5850 ........................................................................ 5851 ........................................................................ 5852 ........................................................................ 5853 ........................................................................ 5854 ........................................................................ 5855 ........................................................................ 5856 ........................................................................ 5857 ........................................................................ 5858 ........................................................................ 5859 ........................................................................ 5860 ........................................................................ 5861 ........................................................................ 5862 ........................................................................ 5863 ........................................................................ 5864 ........................................................................ 5865 ........................................................................ 5866 ........................................................................ 5867 ........................................................................ 5868 ........................................................................ 5869 ........................................................................ 5870 ........................................................................ 5871 ........................................................................ 5872 ........................................................................ 5873 ........................................................................ 5874 ........................................................................ 5875 ........................................................................ 5876 ........................................................................ 5877 ........................................................................ 5878 ........................................................................ 5879 ........................................................................ 5880 ........................................................................ 5881 ........................................................................ 5882 ........................................................................ 5883 ........................................................................ 5884 ........................................................................ 5885 ........................................................................ 5886 ........................................................................ 5887 ........................................................................ 5888 ........................................................................ 5889 ........................................................................ 5890 ........................................................................ 5891 ........................................................................ 5892 ........................................................................ 5893 ........................................................................ 5894 ........................................................................ 5895 ........................................................................ 5896 ........................................................................ 5897 ........................................................................ 5898 ........................................................................ 5899 ........................................................................ 5900 ........................................................................ 5901 ........................................................................ 5902 ........................................................................ 5903 ........................................................................ 5904 ........................................................................ 5905 ........................................................................ 5906 ........................................................................ 5907 ........................................................................ 5908 ........................................................................ 5909 ........................................................................ 5910 ........................................................................ 5911 ........................................................................ 5912 ........................................................................ 5913 ........................................................................ 5914 ........................................................................ 5915 ........................................................................ 5916 ........................................................................ 5917 ........................................................................ 5918 ........................................................................ 5919 ........................................................................ 5920 ........................................................................ 5921 ........................................................................ 5922 ........................................................................ 5923 ........................................................................ 5924 ........................................................................ 5925 ........................................................................ 5926 ........................................................................ 5927 ........................................................................ 5928 ........................................................................ 5929 ........................................................................ 5930 ........................................................................ 5931 ........................................................................ 5932 ........................................................................ 5933 ........................................................................ 5934 ........................................................................ 5935 ........................................................................ 5936 ........................................................................ 5937 ........................................................................ 5938 ........................................................................ 5939 ........................................................................ 5940 ........................................................................ 5941 ........................................................................ 5942 ........................................................................ 5943 ........................................................................ 5944 ........................................................................ 5945 ........................................................................ 5946 ........................................................................ 5947 ........................................................................ 5948 ........................................................................ 5949 ........................................................................ 5950 ........................................................................ 5951 ........................................................................ 5952 ........................................................................ 5953 ........................................................................ 5954 ........................................................................ 5955 ........................................................................ 5956 ........................................................................ 5957 ........................................................................ 5958 ........................................................................ 5959 ........................................................................ 5960 ........................................................................ 5961 ........................................................................ 5962 ........................................................................ 5963 ........................................................................ 5964 ........................................................................ 5965 ........................................................................ 5966 ........................................................................ 5967 ........................................................................ 5968 ........................................................................ 5969 ........................................................................ 5970 ........................................................................ 5971 ........................................................................ 5972 ........................................................................ 5973 ........................................................................ 5974 ........................................................................ 5975 ........................................................................ 5976 ........................................................................ 5977 ........................................................................ 5978 ........................................................................ 5979 ........................................................................ 5980 ........................................................................ 5981 ........................................................................ 5982 ........................................................................ 5983 ........................................................................ 5984 ........................................................................ 5985 ........................................................................ 5986 ........................................................................ 5987 ........................................................................ 5988 ........................................................................ 5989 ........................................................................ 5990 ........................................................................ 5991 ........................................................................ 5992 ........................................................................ 5993 ........................................................................ 5994 ........................................................................ 5995 ........................................................................ 5996 ........................................................................ 5997 ........................................................................ 5998 ........................................................................ 5999 ........................................................................ 6000 ........................................................................ 6001 ........................................................................ 6002 ........................................................................ 6003 ........................................................................ 6004 ........................................................................ 6005 ........................................................................ 6006 ........................................................................ 6007 ........................................................................ 6008 ........................................................................ 6009 ........................................................................ 6010 ........................................................................ 6011 ........................................................................ 6012 ........................................................................ 6013 ........................................................................ 6014 ........................................................................ 6015 ........................................................................ 6016 ........................................................................ 6017 ........................................................................ 6018 ........................................................................ 6019 ........................................................................ 6020 ........................................................................ 6021 ........................................................................ 6022 ........................................................................ 6023 ........................................................................ 6024 ........................................................................ 6025 ........................................................................ 6026 ........................................................................ 6027 ........................................................................ 6028 ........................................................................ 6029 ........................................................................ 6030 ........................................................................ 6031 ........................................................................ 6032 ........................................................................ 6033 ........................................................................ 6034 ........................................................................ 6035 ........................................................................ 6036 ........................................................................ 6037 ........................................................................ 6038 ........................................................................ 6039 ........................................................................ 6040 ........................................................................ 6041 ........................................................................ 6042 ........................................................................ 6043 ........................................................................ 6044 ........................................................................ 6045 ........................................................................ 6046 ........................................................................ 6047 ........................................................................ 6048 ........................................................................ 6049 ........................................................................ 6050 ........................................................................ 6051 ........................................................................ 6052 ........................................................................ 6053 ........................................................................ 6054 ........................................................................ 6055 ........................................................................ 6056 ........................................................................ 6057 ........................................................................ 6058 ........................................................................ 6059 ........................................................................ 6060 ........................................................................ 6061 ........................................................................ 6062 ........................................................................ 6063 ........................................................................ 6064 ........................................................................ 6065 ........................................................................ 6066 ........................................................................ 6067 ........................................................................ 6068 ........................................................................ 6069 ........................................................................ 6070 ........................................................................ 6071 ........................................................................ 6072 ........................................................................ 6073 ........................................................................ 6074 ........................................................................ 6075 ........................................................................ 6076 ........................................................................ 6077 ........................................................................ 6078 ........................................................................ 6079 ........................................................................ 6080 ........................................................................ 6081 ........................................................................ 6082 ........................................................................ 6083 ........................................................................ 6084 ........................................................................ 6085 ........................................................................ 6086 ........................................................................ 6087 ........................................................................ 6088 ........................................................................ 6089 ........................................................................ 6090 ........................................................................ 6091 ........................................................................ 6092 ........................................................................ 6093 ........................................................................ 6094 ........................................................................ 6095 ........................................................................ 6096 ........................................................................ 6097 ........................................................................ 6098 ........................................................................ 6099 ........................................................................ 6100 ........................................................................ 6101 ........................................................................ 6102 ........................................................................ 6103 ........................................................................ 6104 ........................................................................ 6105 ........................................................................ 6106 ........................................................................ 6107 ........................................................................ 6108 ........................................................................ 6109 ........................................................................ 6110 ........................................................................ 6111 ........................................................................ 6112 ........................................................................ 6113 ........................................................................ 6114 ........................................................................ 6115 ........................................................................ 6116 ........................................................................ 6117 ........................................................................ 6118 ........................................................................ 6119 ........................................................................ 6120 ........................................................................ 6121 ........................................................................ 6122 ........................................................................ 6123 ........................................................................ 6124 ........................................................................ 6125 ........................................................................ 6126 ........................................................................ 6127 ........................................................................ 6128 ........................................................................ 6129 ........................................................................ 6130 ........................................................................ 6131 ........................................................................ 6132 ........................................................................ 6133 ........................................................................ 6134 ........................................................................ 6135 ........................................................................ 6136 ........................................................................ 6137 ........................................................................ 6138 ........................................................................ 6139 ........................................................................ 6140 ........................................................................ 6141 ........................................................................ 6142 ........................................................................ 6143 ........................................................................ 6144 ........................................................................ 6145 ........................................................................ 6146 ........................................................................ 6147 ........................................................................ 6148 ........................................................................ 6149 ........................................................................ 6150 ........................................................................ 6151 ........................................................................ 6152 ........................................................................ 6153 ........................................................................ 6154 ........................................................................ 6155 ........................................................................ 6156 ........................................................................ 6157 ........................................................................ 6158 ........................................................................ 6159 ........................................................................ 6160 ........................................................................ 6161 ........................................................................ 6162 ........................................................................ 6163 ........................................................................ 6164 ........................................................................ 6165 ........................................................................ 6166 ........................................................................ 6167 ........................................................................ 6168 ........................................................................ 6169 ........................................................................ 6170 ........................................................................ 6171 ........................................................................ 6172 ........................................................................ 6173 ........................................................................ 6174 ........................................................................ 6175 ........................................................................ 6176 ........................................................................ 6177 ........................................................................ 6178 ........................................................................ 6179 ........................................................................ 6180 ........................................................................ 6181 ........................................................................ 6182 ........................................................................ 6183 ........................................................................ 6184 ........................................................................ 6185 ........................................................................ 6186 ........................................................................ 6187 ........................................................................ 6188 ........................................................................ 6189 ........................................................................ 6190 ........................................................................ 6191 ........................................................................ 6192 ........................................................................ 6193 ........................................................................ 6194 ........................................................................ 6195 ........................................................................ 6196 ........................................................................ 6197 ........................................................................ 6198 ........................................................................ 6199 ........................................................................ 6200 ........................................................................ 6201 ........................................................................ 6202 ........................................................................ 6203 ........................................................................ 6204 ........................................................................ 6205 ........................................................................ 6206 ........................................................................ 6207 ........................................................................ 6208 ........................................................................ 6209 ........................................................................ 6210 ........................................................................ 6211 ........................................................................ 6212 ........................................................................ 6213 ........................................................................ 6214 ........................................................................ 6215 ........................................................................ 6216 ........................................................................ 6217 ........................................................................ 6218 ........................................................................ 6219 ........................................................................ 6220 ........................................................................ 6221 ........................................................................ 6222 ........................................................................ 6223 ........................................................................ 6224 ........................................................................ 6225 ........................................................................ 6226 ........................................................................ 6227 ........................................................................ 6228 ........................................................................ 6229 ........................................................................ 6230 ........................................................................ 6231 ........................................................................ 6232 ........................................................................ 6233 ........................................................................ 6234 ........................................................................ 6235 ........................................................................ 6236 ........................................................................ 6237 ........................................................................ 6238 ........................................................................ 6239 ........................................................................ 6240 ........................................................................ 6241 ........................................................................ 6242 ........................................................................ 6243 ........................................................................ 6244 ........................................................................ 6245 ........................................................................ 6246 ........................................................................ 6247 ........................................................................ 6248 ........................................................................ 6249 ........................................................................ 6250 ........................................................................ 6251 ........................................................................ 6252 ........................................................................ 6253 ........................................................................ 6254 ........................................................................ 6255 ........................................................................ 6256 ........................................................................ 6257 ........................................................................ 6258 ........................................................................ 6259 ........................................................................ 6260 ........................................................................ 6261 ........................................................................ 6262 ........................................................................ 6263 ........................................................................ 6264 ........................................................................ 6265 ........................................................................ 6266 ........................................................................ 6267 ........................................................................ 6268 ........................................................................ 6269 ........................................................................ 6270 ........................................................................ 6271 ........................................................................ 6272 ........................................................................ 6273 ........................................................................ 6274 ........................................................................ 6275 ........................................................................ 6276 ........................................................................ 6277 ........................................................................ 6278 ........................................................................ 6279 ........................................................................ 6280 ........................................................................ 6281 ........................................................................ 6282 ........................................................................ 6283 ........................................................................ 6284 ........................................................................ 6285 ........................................................................ 6286 ........................................................................ 6287 ........................................................................ 6288 ........................................................................ 6289 ........................................................................ 6290 ........................................................................ 6291 ........................................................................ 6292 ........................................................................ 6293 ........................................................................ 6294 ........................................................................ 6295 ........................................................................ 6296 ........................................................................ 6297 ........................................................................ 6298 ........................................................................ 6299 ........................................................................ 6300 ........................................................................ 6301 ........................................................................ 6302 ........................................................................ 6303 ........................................................................ 6304 ........................................................................ 6305 ........................................................................ 6306 ........................................................................ 6307 ........................................................................ 6308 ........................................................................ 6309 ........................................................................ 6310 ........................................................................ 6311 ........................................................................ 6312 ........................................................................ 6313 ........................................................................ 6314 ........................................................................ 6315 ........................................................................ 6316 ........................................................................ 6317 ........................................................................ 6318 ........................................................................ 6319 ........................................................................ 6320 ........................................................................ 6321 ........................................................................ 6322 ........................................................................ 6323 ........................................................................ 6324 ........................................................................ 6325 ........................................................................ 6326 ........................................................................ 6327 ........................................................................ 6328 ........................................................................ 6329 ........................................................................ 6330 ........................................................................ 6331 ........................................................................ 6332 ........................................................................ 6333 ........................................................................ 6334 ........................................................................ 6335 ........................................................................ 6336 ........................................................................ 6337 ........................................................................ 6338 ........................................................................ 6339 ........................................................................ 6340 ........................................................................ 6341 ........................................................................ 6342 ........................................................................ 6343 ........................................................................ 6344 ........................................................................ 6345 ........................................................................ 6346 ........................................................................ 6347 ........................................................................ 6348 ........................................................................ 6349 ........................................................................ 6350 ........................................................................ 6351 ........................................................................ 6352 ........................................................................ 6353 ........................................................................ 6354 ........................................................................ 6355 ........................................................................ 6356 ........................................................................ 6357 ........................................................................ 6358 ........................................................................ 6359 ........................................................................ 6360 ........................................................................ 6361 ........................................................................ 6362 ........................................................................ 6363 ........................................................................ 6364 ........................................................................ 6365 ........................................................................ 6366 ........................................................................ 6367 ........................................................................ 6368 ........................................................................ 6369 ........................................................................ 6370 ........................................................................ 6371 ........................................................................ 6372 ........................................................................ 6373 ........................................................................ 6374 ........................................................................ 6375 ........................................................................ 6376 ........................................................................ 6377 ........................................................................ 6378 ........................................................................ 6379 ........................................................................ 6380 ........................................................................ 6381 ........................................................................ 6382 ........................................................................ 6383 ........................................................................ 6384 ........................................................................ 6385 ........................................................................ 6386 ........................................................................ 6387 ........................................................................ 6388 ........................................................................ 6389 ........................................................................ 6390 ........................................................................ 6391 ........................................................................ 6392 ........................................................................ 6393 ........................................................................ 6394 ........................................................................ 6395 ........................................................................ 6396 ........................................................................ 6397 ........................................................................ 6398 ........................................................................ 6399 ........................................................................ 6400 ........................................................................ 6401 ........................................................................ 6402 ........................................................................ 6403 ........................................................................ 6404 ........................................................................ 6405 ........................................................................ 6406 ........................................................................ 6407 ........................................................................ 6408 ........................................................................ 6409 ........................................................................ 6410 ........................................................................ 6411 ........................................................................ 6412 ........................................................................ 6413 ........................................................................ 6414 ........................................................................ 6415 ........................................................................ 6416 ........................................................................ 6417 ........................................................................ 6418 ........................................................................ 6419 ........................................................................ 6420 ........................................................................ 6421 ........................................................................ 6422 ........................................................................ 6423 ........................................................................ 6424 ........................................................................ 6425 ........................................................................ 6426 ........................................................................ 6427 ........................................................................ 6428 ........................................................................ 6429 ........................................................................ 6430 ........................................................................ 6431 ........................................................................ 6432 ........................................................................ 6433 ........................................................................ 6434 ........................................................................ 6435 ........................................................................ 6436 ........................................................................ 6437 ........................................................................ 6438 ........................................................................ 6439 ........................................................................ 6440 ........................................................................ 6441 ........................................................................ 6442 ........................................................................ 6443 ........................................................................ 6444 ........................................................................ 6445 ........................................................................ 6446 ........................................................................ 6447 ........................................................................ 6448 ........................................................................ 6449 ........................................................................ 6450 ........................................................................ 6451 ........................................................................ 6452 ........................................................................ 6453 ........................................................................ 6454 ........................................................................ 6455 ........................................................................ 6456 ........................................................................ 6457 ........................................................................ 6458 ........................................................................ 6459 ........................................................................ 6460 ........................................................................ 6461 ........................................................................ 6462 ........................................................................ 6463 ........................................................................ 6464 ........................................................................ 6465 ........................................................................ 6466 ........................................................................ 6467 ........................................................................ 6468 ........................................................................ 6469 ........................................................................ 6470 ........................................................................ 6471 ........................................................................ 6472 ........................................................................ 6473 ........................................................................ 6474 ........................................................................ 6475 ........................................................................ 6476 ........................................................................ 6477 ........................................................................ 6478 ........................................................................ 6479 ........................................................................ 6480 ........................................................................ 6481 ........................................................................ 6482 ........................................................................ 6483 ........................................................................ 6484 ........................................................................ 6485 ........................................................................ 6486 ........................................................................ 6487 ........................................................................ 6488 ........................................................................ 6489 ........................................................................ 6490 ........................................................................ 6491 ........................................................................ 6492 ........................................................................ 6493 ........................................................................ 6494 ........................................................................ 6495 ........................................................................ 6496 ........................................................................ 6497 ........................................................................ 6498 ........................................................................ 6499 ........................................................................ 6500 ........................................................................ 6501 ........................................................................ 6502 ........................................................................ 6503 ........................................................................ 6504 ........................................................................ 6505 ........................................................................ 6506 ........................................................................ 6507 ........................................................................ 6508 ........................................................................ 6509 ........................................................................ 6510 ........................................................................ 6511 ........................................................................ 6512 ........................................................................ 6513 ........................................................................ 6514 ........................................................................ 6515 ........................................................................ 6516 ........................................................................ 6517 ........................................................................ 6518 ........................................................................ 6519 ........................................................................ 6520 ........................................................................ 6521 ........................................................................ 6522 ........................................................................ 6523 ........................................................................ 6524 ........................................................................ 6525 ........................................................................ 6526 ........................................................................ 6527 ........................................................................ 6528 ........................................................................ 6529 ........................................................................ 6530 ........................................................................ 6531 ........................................................................ 6532 ........................................................................ 6533 ........................................................................ 6534 ........................................................................ 6535 ........................................................................ 6536 ........................................................................ 6537 ........................................................................ 6538 ........................................................................ 6539 ........................................................................ 6540 ........................................................................ 6541 ........................................................................ 6542 ........................................................................ 6543 ........................................................................ 6544 ........................................................................ 6545 ........................................................................ 6546 ........................................................................ 6547 ........................................................................ 6548 ........................................................................ 6549 ........................................................................ 6550 ........................................................................ 6551 ........................................................................ 6552 ........................................................................ 6553 ........................................................................ 6554 ........................................................................ 6555 ........................................................................ 6556 ........................................................................ 6557 ........................................................................ 6558 ........................................................................ 6559 ........................................................................ 6560 ........................................................................ 6561 ........................................................................ 6562 ........................................................................ 6563 ........................................................................ 6564 ........................................................................ 6565 ........................................................................ 6566 ........................................................................ 6567 ........................................................................ 6568 ........................................................................ 6569 ........................................................................ 6570 ........................................................................ 6571 ........................................................................ 6572 ........................................................................ 6573 ........................................................................ 6574 ........................................................................ 6575 ........................................................................ 6576 ........................................................................ 6577 ........................................................................ 6578 ........................................................................ 6579 ........................................................................ 6580 ........................................................................ 6581 ........................................................................ 6582 ........................................................................ 6583 ........................................................................ 6584 ........................................................................ 6585 ........................................................................ 6586 ........................................................................ 6587 ........................................................................ 6588 ........................................................................ 6589 ........................................................................ 6590 ........................................................................ 6591 ........................................................................ 6592 ........................................................................ 6593 ........................................................................ 6594 ........................................................................ 6595 ........................................................................ 6596 ........................................................................ 6597 ........................................................................ 6598 ........................................................................ 6599 ........................................................................ 6600 ........................................................................ 6601 ........................................................................ 6602 ........................................................................ 6603 ........................................................................ 6604 ........................................................................ 6605 ........................................................................ 6606 ........................................................................ 6607 ........................................................................ 6608 ........................................................................ 6609 ........................................................................ 6610 ........................................................................ 6611 ........................................................................ 6612 ........................................................................ 6613 ........................................................................ 6614 ........................................................................ 6615 ........................................................................ 6616 ........................................................................ 6617 ........................................................................ 6618 ........................................................................ 6619 ........................................................................ 6620 ........................................................................ 6621 ........................................................................ 6622 ........................................................................ 6623 ........................................................................ 6624 ........................................................................ 6625 ........................................................................ 6626 ........................................................................ 6627 ........................................................................ 6628 ........................................................................ 6629 ........................................................................ 6630 ........................................................................ 6631 ........................................................................ 6632 ........................................................................ 6633 ........................................................................ 6634 ........................................................................ 6635 ........................................................................ 6636 ........................................................................ 6637 ........................................................................ 6638 ........................................................................ 6639 ........................................................................ 6640 ........................................................................ 6641 ........................................................................ 6642 ........................................................................ 6643 ........................................................................ 6644 ........................................................................ 6645 ........................................................................ 6646 ........................................................................ 6647 ........................................................................ 6648 ........................................................................ 6649 ........................................................................ 6650 ........................................................................ 6651 ........................................................................ 6652 ........................................................................ 6653 ........................................................................ 6654 ........................................................................ 6655 ........................................................................ 6656 ........................................................................ 6657 ........................................................................ 6658 ........................................................................ 6659 ........................................................................ 6660 ........................................................................ 6661 ........................................................................ 6662 ........................................................................ 6663 ........................................................................ 6664 ........................................................................ 6665 ........................................................................ 6666 ........................................................................ 6667 ........................................................................ 6668 ........................................................................ 6669 ........................................................................ 6670 ........................................................................ 6671 ........................................................................ 6672 ........................................................................ 6673 ........................................................................ 6674 ........................................................................ 6675 ........................................................................ 6676 ........................................................................ 6677 ........................................................................ 6678 ........................................................................ 6679 ........................................................................ 6680 ........................................................................ 6681 ........................................................................ 6682 ........................................................................ 6683 ........................................................................ 6684 ........................................................................ 6685 ........................................................................ 6686 ........................................................................ 6687 ........................................................................ 6688 ........................................................................ 6689 ........................................................................ 6690 ........................................................................ 6691 ........................................................................ 6692 ........................................................................ 6693 ........................................................................ 6694 ........................................................................ 6695 ........................................................................ 6696 ........................................................................ 6697 ........................................................................ 6698 ........................................................................ 6699 ........................................................................ 6700 ........................................................................ 6701 ........................................................................ 6702 ........................................................................ 6703 ........................................................................ 6704 ........................................................................ 6705 ........................................................................ 6706 ........................................................................ 6707 ........................................................................ 6708 ........................................................................ 6709 ........................................................................ 6710 ........................................................................ 6711 ........................................................................ 6712 ........................................................................ 6713 ........................................................................ 6714 ........................................................................ 6715 ........................................................................ 6716 ........................................................................ 6717 ........................................................................ 6718 ........................................................................ 6719 ........................................................................ 6720 ........................................................................ 6721 ........................................................................ 6722 ........................................................................ 6723 ........................................................................ 6724 ........................................................................ 6725 ........................................................................ 6726 ........................................................................ 6727 ........................................................................ 6728 ........................................................................ 6729 ........................................................................ 6730 ........................................................................ 6731 ........................................................................ 6732 ........................................................................ 6733 ........................................................................ 6734 ........................................................................ 6735 ........................................................................ 6736 ........................................................................ 6737 ........................................................................ 6738 ........................................................................ 6739 ........................................................................ 6740 ........................................................................ 6741 ........................................................................ 6742 ........................................................................ 6743 ........................................................................ 6744 ........................................................................ 6745 ........................................................................ 6746 ........................................................................ 6747 ........................................................................ 6748 ........................................................................ 6749 ........................................................................ 6750 ........................................................................ 6751 ........................................................................ 6752 ........................................................................ 6753 ........................................................................ 6754 ........................................................................ 6755 ........................................................................ 6756 ........................................................................ 6757 ........................................................................ 6758 ........................................................................ 6759 ........................................................................ 6760 ........................................................................ 6761 ........................................................................ 6762 ........................................................................ 6763 ........................................................................ 6764 ........................................................................ 6765 ........................................................................ 6766 ........................................................................ 6767 ........................................................................ 6768 ........................................................................ 6769 ........................................................................ 6770 ........................................................................ 6771 ........................................................................ 6772 ........................................................................ 6773 ........................................................................ 6774 ........................................................................ 6775 ........................................................................ 6776 ........................................................................ 6777 ........................................................................ 6778 ........................................................................ 6779 ........................................................................ 6780 ........................................................................ 6781 ........................................................................ 6782 ........................................................................ 6783 ........................................................................ 6784 ........................................................................ 6785 ........................................................................ 6786 ........................................................................ 6787 ........................................................................ 6788 ........................................................................ 6789 ........................................................................ 6790 ........................................................................ 6791 ........................................................................ 6792 ........................................................................ 6793 ........................................................................ 6794 ........................................................................ 6795 ........................................................................ 6796 ........................................................................ 6797 ........................................................................ 6798 ........................................................................ 6799 ........................................................................ 6800 ........................................................................ 6801 ........................................................................ 6802 ........................................................................ 6803 ........................................................................ 6804 ........................................................................ 6805 ........................................................................ 6806 ........................................................................ 6807 ........................................................................ 6808 ........................................................................ 6809 ........................................................................ 6810 ........................................................................ 6811 ........................................................................ 6812 ........................................................................ 6813 ........................................................................ 6814 ........................................................................ 6815 ........................................................................ 6816 ........................................................................ 6817 ........................................................................ 6818 ........................................................................ 6819 ........................................................................ 6820 ........................................................................ 6821 ........................................................................ 6822 ........................................................................ 6823 ........................................................................ 6824 ........................................................................ 6825 ........................................................................ 6826 ........................................................................ 6827 ........................................................................ 6828 ........................................................................ 6829 ........................................................................ 6830 ........................................................................ 6831 ........................................................................ 6832 ........................................................................ 6833 ........................................................................ 6834 ........................................................................ 6835 ........................................................................ 6836 ........................................................................ 6837 ........................................................................ 6838 ........................................................................ 6839 ........................................................................ 6840 ........................................................................ 6841 ........................................................................ 6842 ........................................................................ 6843 ........................................................................ 6844 ........................................................................ 6845 ........................................................................ 6846 ........................................................................ 6847 ........................................................................ 6848 ........................................................................ 6849 ........................................................................ 6850 ........................................................................ 6851 ........................................................................ 6852 ........................................................................ 6853 ........................................................................ 6854 ........................................................................ 6855 ........................................................................ 6856 ........................................................................ 6857 ........................................................................ 6858 ........................................................................ 6859 ........................................................................ 6860 ........................................................................ 6861 ........................................................................ 6862 ........................................................................ 6863 ........................................................................ 6864 ........................................................................ 6865 ........................................................................ 6866 ........................................................................ 6867 ........................................................................ 6868 ........................................................................ 6869 ........................................................................ 6870 ........................................................................ 6871 ........................................................................ 6872 ........................................................................ 6873 ........................................................................ 6874 ........................................................................ 6875 ........................................................................ 6876 ........................................................................ 6877 ........................................................................ 6878 ........................................................................ 6879 ........................................................................ 6880 ........................................................................ 6881 ........................................................................ 6882 ........................................................................ 6883 ........................................................................ 6884 ........................................................................ 6885 ........................................................................ 6886 ........................................................................ 6887 ........................................................................ 6888 ........................................................................ 6889 ........................................................................ 6890 ........................................................................ 6891 ........................................................................ 6892 ........................................................................ 6893 ........................................................................ 6894 ........................................................................ 6895 ........................................................................ 6896 ........................................................................ 6897 ........................................................................ 6898 ........................................................................ 6899 ........................................................................ 6900 ........................................................................ 6901 ........................................................................ 6902 ........................................................................ 6903 ........................................................................ 6904 ........................................................................ 6905 ........................................................................ 6906 ........................................................................ 6907 ........................................................................ 6908 ........................................................................ 6909 ........................................................................ 6910 ........................................................................ 6911 ........................................................................ 6912 ........................................................................ 6913 ........................................................................ 6914 ........................................................................ 6915 ........................................................................ 6916 ........................................................................ 6917 ........................................................................ 6918 ........................................................................ 6919 ........................................................................ 6920 ........................................................................ 6921 ........................................................................ 6922 ........................................................................ 6923 ........................................................................ 6924 ........................................................................ 6925 ........................................................................ 6926 ........................................................................ 6927 ........................................................................ 6928 ........................................................................ 6929 ........................................................................ 6930 ........................................................................ 6931 ........................................................................ 6932 ........................................................................ 6933 ........................................................................ 6934 ........................................................................ 6935 ........................................................................ 6936 ........................................................................ 6937 ........................................................................ 6938 ........................................................................ 6939 ........................................................................ 6940 ........................................................................ 6941 ........................................................................ 6942 ........................................................................ 6943 ........................................................................ 6944 ........................................................................ 6945 ........................................................................ 6946 ........................................................................ 6947 ........................................................................ 6948 ........................................................................ 6949 ........................................................................ 6950 ........................................................................ 6951 ........................................................................ 6952 ........................................................................ 6953 ........................................................................ 6954 ........................................................................ 6955 ........................................................................ 6956 ........................................................................ 6957 ........................................................................ 6958 ........................................................................ 6959 ........................................................................ 6960 ........................................................................ 6961 ........................................................................ 6962 ........................................................................ 6963 ........................................................................ 6964 ........................................................................ 6965 ........................................................................ 6966 ........................................................................ 6967 ........................................................................ 6968 ........................................................................ 6969 ........................................................................ 6970 ........................................................................ 6971 ........................................................................ 6972 ........................................................................ 6973 ........................................................................ 6974 ........................................................................ 6975 ........................................................................ 6976 ........................................................................ 6977 ........................................................................ 6978 ........................................................................ 6979 ........................................................................ 6980 ........................................................................ 6981 ........................................................................ 6982 ........................................................................ 6983 ........................................................................ 6984 ........................................................................ 6985 ........................................................................ 6986 ........................................................................ 6987 ........................................................................ 6988 ........................................................................ 6989 ........................................................................ 6990 ........................................................................ 6991 ........................................................................ 6992 ........................................................................ 6993 ........................................................................ 6994 ........................................................................ 6995 ........................................................................ 6996 ........................................................................ 6997 ........................................................................ 6998 ........................................................................ 6999 ........................................................................ 7000 ........................................................................ 7001 ........................................................................ 7002 ........................................................................ 7003 ........................................................................ 7004 ........................................................................ 7005 ........................................................................ 7006 ........................................................................ 7007 ........................................................................ 7008 ........................................................................ 7009 ........................................................................ 7010 ........................................................................ 7011 ........................................................................ 7012 ........................................................................ 7013 ........................................................................ 7014 ........................................................................ 7015 ........................................................................ 7016 ........................................................................ 7017 ........................................................................ 7018 ........................................................................ 7019 ........................................................................ 7020 ........................................................................ 7021 ........................................................................ 7022 ........................................................................ 7023 ........................................................................ 7024 ........................................................................ 7025 ........................................................................ 7026 ........................................................................ 7027 ........................................................................ 7028 ........................................................................ 7029 ........................................................................ 7030 ........................................................................ 7031 ........................................................................ 7032 ........................................................................ 7033 ........................................................................ 7034 ........................................................................ 7035 ........................................................................ 7036 ........................................................................ 7037 ........................................................................ 7038 ........................................................................ 7039 ........................................................................ 7040 ........................................................................ 7041 ........................................................................ 7042 ........................................................................ 7043 ........................................................................ 7044 ........................................................................ 7045 ........................................................................ 7046 ........................................................................ 7047 ........................................................................ 7048 ........................................................................ 7049 ........................................................................ 7050 ........................................................................ 7051 ........................................................................ 7052 ........................................................................ 7053 ........................................................................ 7054 ........................................................................ 7055 ........................................................................ 7056 ........................................................................ 7057 ........................................................................ 7058 ........................................................................ 7059 ........................................................................ 7060 ........................................................................ 7061 ........................................................................ 7062 ........................................................................ 7063 ........................................................................ 7064 ........................................................................ 7065 ........................................................................ 7066 ........................................................................ 7067 ........................................................................ 7068 ........................................................................ 7069 ........................................................................ 7070 ........................................................................ 7071 ........................................................................ 7072 ........................................................................ 7073 ........................................................................ 7074 ........................................................................ 7075 ........................................................................ 7076 ........................................................................ 7077 ........................................................................ 7078 ........................................................................ 7079 ........................................................................ 7080 ........................................................................ 7081 ........................................................................ 7082 ........................................................................ 7083 ........................................................................ 7084 ........................................................................ 7085 ........................................................................ 7086 ........................................................................ 7087 ........................................................................ 7088 ........................................................................ 7089 ........................................................................ 7090 ........................................................................ 7091 ........................................................................ 7092 ........................................................................ 7093 ........................................................................ 7094 ........................................................................ 7095 ........................................................................ 7096 ........................................................................ 7097 ........................................................................ 7098 ........................................................................ 7099 ........................................................................ 7100 ........................................................................ 7101 ........................................................................ 7102 ........................................................................ 7103 ........................................................................ 7104 ........................................................................ 7105 ........................................................................ 7106 ........................................................................ 7107 ........................................................................ 7108 ........................................................................ 7109 ........................................................................ 7110 ........................................................................ 7111 ........................................................................ 7112 ........................................................................ 7113 ........................................................................ 7114 ........................................................................ 7115 ........................................................................ 7116 ........................................................................ 7117 ........................................................................ 7118 ........................................................................ 7119 ........................................................................ 7120 ........................................................................ 7121 ........................................................................ 7122 ........................................................................ 7123 ........................................................................ 7124 ........................................................................ 7125 ........................................................................ 7126 ........................................................................ 7127 ........................................................................ 7128 ........................................................................ 7129 ........................................................................ 7130 ........................................................................ 7131 ........................................................................ 7132 ........................................................................ 7133 ........................................................................ 7134 ........................................................................ 7135 ........................................................................ 7136 ........................................................................ 7137 ........................................................................ 7138 ........................................................................ 7139 ........................................................................ 7140 ........................................................................ 7141 ........................................................................ 7142 ........................................................................ 7143 ........................................................................ 7144 ........................................................................ 7145 ........................................................................ 7146 ........................................................................ 7147 ........................................................................ 7148 ........................................................................ 7149 ........................................................................ 7150 ........................................................................ 7151 ........................................................................ 7152 ........................................................................ 7153 ........................................................................ 7154 ........................................................................ 7155 ........................................................................ 7156 ........................................................................ 7157 ........................................................................ 7158 ........................................................................ 7159 ........................................................................ 7160 ........................................................................ 7161 ........................................................................ 7162 ........................................................................ 7163 ........................................................................ 7164 ........................................................................ 7165 ........................................................................ 7166 ........................................................................ 7167 ........................................................................ 7168 ........................................................................ 7169 ........................................................................ 7170 ........................................................................ 7171 ........................................................................ 7172 ........................................................................ 7173 ........................................................................ 7174 ........................................................................ 7175 ........................................................................ 7176 ........................................................................ 7177 ........................................................................ 7178 ........................................................................ 7179 ........................................................................ 7180 ........................................................................ 7181 ........................................................................ 7182 ........................................................................ 7183 ........................................................................ 7184 ........................................................................ 7185 ........................................................................ 7186 ........................................................................ 7187 ........................................................................ 7188 ........................................................................ 7189 ........................................................................ 7190 ........................................................................ 7191 ........................................................................ 7192 ........................................................................ 7193 ........................................................................ 7194 ........................................................................ 7195 ........................................................................ 7196 ........................................................................ 7197 ........................................................................ 7198 ........................................................................ 7199 ........................................................................ 7200 ........................................................................ 7201 ........................................................................ 7202 ........................................................................ 7203 ........................................................................ 7204 ........................................................................ 7205 ........................................................................ 7206 ........................................................................ 7207 ........................................................................ 7208 ........................................................................ 7209 ........................................................................ 7210 ........................................................................ 7211 ........................................................................ 7212 ........................................................................ 7213 ........................................................................ 7214 ........................................................................ 7215 ........................................................................ 7216 ........................................................................ 7217 ........................................................................ 7218 ........................................................................ 7219 ........................................................................ 7220 ........................................................................ 7221 ........................................................................ 7222 ........................................................................ 7223 ........................................................................ 7224 ........................................................................ 7225 ........................................................................ 7226 ........................................................................ 7227 ........................................................................ 7228 ........................................................................ 7229 ........................................................................ 7230 ........................................................................ 7231 ........................................................................ 7232 ........................................................................ 7233 ........................................................................ 7234 ........................................................................ 7235 ........................................................................ 7236 ........................................................................ 7237 ........................................................................ 7238 ........................................................................ 7239 ........................................................................ 7240 ........................................................................ 7241 ........................................................................ 7242 ........................................................................ 7243 ........................................................................ 7244 ........................................................................ 7245 ........................................................................ 7246 ........................................................................ 7247 ........................................................................ 7248 ........................................................................ 7249 ........................................................................ 7250 ........................................................................ 7251 ........................................................................ 7252 ........................................................................ 7253 ........................................................................ 7254 ........................................................................ 7255 ........................................................................ 7256 ........................................................................ 7257 ........................................................................ 7258 ........................................................................ 7259 ........................................................................ 7260 ........................................................................ 7261 ........................................................................ 7262 ........................................................................ 7263 ........................................................................ 7264 ........................................................................ 7265 ........................................................................ 7266 ........................................................................ 7267 ........................................................................ 7268 ........................................................................ 7269 ........................................................................ 7270 ........................................................................ 7271 ........................................................................ 7272 ........................................................................ 7273 ........................................................................ 7274 ........................................................................ 7275 ........................................................................ 7276 ........................................................................ 7277 ........................................................................ 7278 ........................................................................ 7279 ........................................................................ 7280 ........................................................................ 7281 ........................................................................ 7282 ........................................................................ 7283 ........................................................................ 7284 ........................................................................ 7285 ........................................................................ 7286 ........................................................................ 7287 ........................................................................ 7288 ........................................................................ 7289 ........................................................................ 7290 ........................................................................ 7291 ........................................................................ 7292 ........................................................................ 7293 ........................................................................ 7294 ........................................................................ 7295 ........................................................................ 7296 ........................................................................ 7297 ........................................................................ 7298 ........................................................................ 7299 ........................................................................ 7300 ........................................................................ 7301 ........................................................................ 7302 ........................................................................ 7303 ........................................................................ 7304 ........................................................................ 7305 ........................................................................ 7306 ........................................................................ 7307 ........................................................................ 7308 ........................................................................ 7309 ........................................................................ 7310 ........................................................................ 7311 ........................................................................ 7312 ........................................................................ 7313 ........................................................................ 7314 ........................................................................ 7315 ........................................................................ 7316 ........................................................................ 7317 ........................................................................ 7318 ........................................................................ 7319 ........................................................................ 7320 ........................................................................ 7321 ........................................................................ 7322 ........................................................................ 7323 ........................................................................ 7324 ........................................................................ 7325 ........................................................................ 7326 ........................................................................ 7327 ........................................................................ 7328 ........................................................................ 7329 ........................................................................ 7330 ........................................................................ 7331 ........................................................................ 7332 ........................................................................ 7333 ........................................................................ 7334 ........................................................................ 7335 ........................................................................ 7336 ........................................................................ 7337 ........................................................................ 7338 ........................................................................ 7339 ........................................................................ 7340 ........................................................................ 7341 ........................................................................ 7342 ........................................................................ 7343 ........................................................................ 7344 ........................................................................ 7345 ........................................................................ 7346 ........................................................................ 7347 ........................................................................ 7348 ........................................................................ 7349 ........................................................................ 7350 ........................................................................ 7351 ........................................................................ 7352 ........................................................................ 7353 ........................................................................ 7354 ........................................................................ 7355 ........................................................................ 7356 ........................................................................ 7357 ........................................................................ 7358 ........................................................................ 7359 ........................................................................ 7360 ........................................................................ 7361 ........................................................................ 7362 ........................................................................ 7363 ........................................................................ 7364 ........................................................................ 7365 ........................................................................ 7366 ........................................................................ 7367 ........................................................................ 7368 ........................................................................ 7369 ........................................................................ 7370 ........................................................................ 7371 ........................................................................ 7372 ........................................................................ 7373 ........................................................................ 7374 ........................................................................ 7375 ........................................................................ 7376 ........................................................................ 7377 ........................................................................ 7378 ........................................................................ 7379 ........................................................................ 7380 ........................................................................ 7381 ........................................................................ 7382 ........................................................................ 7383 ........................................................................ 7384 ........................................................................ 7385 ........................................................................ 7386 ........................................................................ 7387 ........................................................................ 7388 ........................................................................ 7389 ........................................................................ 7390 ........................................................................ 7391 ........................................................................ 7392 ........................................................................ 7393 ........................................................................ 7394 ........................................................................ 7395 ........................................................................ 7396 ........................................................................ 7397 ........................................................................ 7398 ........................................................................ 7399 ........................................................................ 7400 ........................................................................ 7401 ........................................................................ 7402 ........................................................................ 7403 ........................................................................ 7404 ........................................................................ 7405 ........................................................................ 7406 ........................................................................ 7407 ........................................................................ 7408 ........................................................................ 7409 ........................................................................ 7410 ........................................................................ 7411 ........................................................................ 7412 ........................................................................ 7413 ........................................................................ 7414 ........................................................................ 7415 ........................................................................ 7416 ........................................................................ 7417 ........................................................................ 7418 ........................................................................ 7419 ........................................................................ 7420 ........................................................................ 7421 ........................................................................ 7422 ........................................................................ 7423 ........................................................................ 7424 ........................................................................ 7425 ........................................................................ 7426 ........................................................................ 7427 ........................................................................ 7428 ........................................................................ 7429 ........................................................................ 7430 ........................................................................ 7431 ........................................................................ 7432 ........................................................................ 7433 ........................................................................ 7434 ........................................................................ 7435 ........................................................................ 7436 ........................................................................ 7437 ........................................................................ 7438 ........................................................................ 7439 ........................................................................ 7440 ........................................................................ 7441 ........................................................................ 7442 ........................................................................ 7443 ........................................................................ 7444 ........................................................................ 7445 ........................................................................ 7446 ........................................................................ 7447 ........................................................................ 7448 ........................................................................ 7449 ........................................................................ 7450 ........................................................................ 7451 ........................................................................ 7452 ........................................................................ 7453 ........................................................................ 7454 ........................................................................ 7455 ........................................................................ 7456 ........................................................................ 7457 ........................................................................ 7458 ........................................................................ 7459 ........................................................................ 7460 ........................................................................ 7461 ........................................................................ 7462 ........................................................................ 7463 ........................................................................ 7464 ........................................................................ 7465 ........................................................................ 7466 ........................................................................ 7467 ........................................................................ 7468 ........................................................................ 7469 ........................................................................ 7470 ........................................................................ 7471 ........................................................................ 7472 ........................................................................ 7473 ........................................................................ 7474 ........................................................................ 7475 ........................................................................ 7476 ........................................................................ 7477 ........................................................................ 7478 ........................................................................ 7479 ........................................................................ 7480 ........................................................................ 7481 ........................................................................ 7482 ........................................................................ 7483 ........................................................................ 7484 ........................................................................ 7485 ........................................................................ 7486 ........................................................................ 7487 ........................................................................ 7488 ........................................................................ 7489 ........................................................................ 7490 ........................................................................ 7491 ........................................................................ 7492 ........................................................................ 7493 ........................................................................ 7494 ........................................................................ 7495 ........................................................................ 7496 ........................................................................ 7497 ........................................................................ 7498 ........................................................................ 7499 ........................................................................ 7500 ........................................................................ 7501 ........................................................................ 7502 ........................................................................ 7503 ........................................................................ 7504 ........................................................................ 7505 ........................................................................ 7506 ........................................................................ 7507 ........................................................................ 7508 ........................................................................ 7509 ........................................................................ 7510 ........................................................................ 7511 ........................................................................ 7512 ........................................................................ 7513 ........................................................................ 7514 ........................................................................ 7515 ........................................................................ 7516 ........................................................................ 7517 ........................................................................ 7518 ........................................................................ 7519 ........................................................................ 7520 ........................................................................ 7521 ........................................................................ 7522 ........................................................................ 7523 ........................................................................ 7524 ........................................................................ 7525 ........................................................................ 7526 ........................................................................ 7527 ........................................................................ 7528 ........................................................................ 7529 ........................................................................ 7530 ........................................................................ 7531 ........................................................................ 7532 ........................................................................ 7533 ........................................................................ 7534 ........................................................................ 7535 ........................................................................ 7536 ........................................................................ 7537 ........................................................................ 7538 ........................................................................ 7539 ........................................................................ 7540 ........................................................................ 7541 ........................................................................ 7542 ........................................................................ 7543 ........................................................................ 7544 ........................................................................ 7545 ........................................................................ 7546 ........................................................................ 7547 ........................................................................ 7548 ........................................................................ 7549 ........................................................................ 7550 ........................................................................ 7551 ........................................................................ 7552 ........................................................................ 7553 ........................................................................ 7554 ........................................................................ 7555 ........................................................................ 7556 ........................................................................ 7557 ........................................................................ 7558 ........................................................................ 7559 ........................................................................ 7560 ........................................................................ 7561 ........................................................................ 7562 ........................................................................ 7563 ........................................................................ 7564 ........................................................................ 7565 ........................................................................ 7566 ........................................................................ 7567 ........................................................................ 7568 ........................................................................ 7569 ........................................................................ 7570 ........................................................................ 7571 ........................................................................ 7572 ........................................................................ 7573 ........................................................................ 7574 ........................................................................ 7575 ........................................................................ 7576 ........................................................................ 7577 ........................................................................ 7578 ........................................................................ 7579 ........................................................................ 7580 ........................................................................ 7581 ........................................................................ 7582 ........................................................................ 7583 ........................................................................ 7584 ........................................................................ 7585 ........................................................................ 7586 ........................................................................ 7587 ........................................................................ 7588 ........................................................................ 7589 ........................................................................ 7590 ........................................................................ 7591 ........................................................................ 7592 ........................................................................ 7593 ........................................................................ 7594 ........................................................................ 7595 ........................................................................ 7596 ........................................................................ 7597 ........................................................................ 7598 ........................................................................ 7599 ........................................................................ 7600 ........................................................................ 7601 ........................................................................ 7602 ........................................................................ 7603 ........................................................................ 7604 ........................................................................ 7605 ........................................................................ 7606 ........................................................................ 7607 ........................................................................ 7608 ........................................................................ 7609 ........................................................................ 7610 ........................................................................ 7611 ........................................................................ 7612 ........................................................................ 7613 ........................................................................ 7614 ........................................................................ 7615 ........................................................................ 7616 ........................................................................ 7617 ........................................................................ 7618 ........................................................................ 7619 ........................................................................ 7620 ........................................................................ 7621 ........................................................................ 7622 ........................................................................ 7623 ........................................................................ 7624 ........................................................................ 7625 ........................................................................ 7626 ........................................................................ 7627 ........................................................................ 7628 ........................................................................ 7629 ........................................................................ 7630 ........................................................................ 7631 ........................................................................ 7632 ........................................................................ 7633 ........................................................................ 7634 ........................................................................ 7635 ........................................................................ 7636 ........................................................................ 7637 ........................................................................ 7638 ........................................................................ 7639 ........................................................................ 7640 ........................................................................ 7641 ........................................................................ 7642 ........................................................................ 7643 ........................................................................ 7644 ........................................................................ 7645 ........................................................................ 7646 ........................................................................ 7647 ........................................................................ 7648 ........................................................................ 7649 ........................................................................ 7650 ........................................................................ 7651 ........................................................................ 7652 ........................................................................ 7653 ........................................................................ 7654 ........................................................................ 7655 ........................................................................ 7656 ........................................................................ 7657 ........................................................................ 7658 ........................................................................ 7659 ........................................................................ 7660 ........................................................................ 7661 ........................................................................ 7662 ........................................................................ 7663 ........................................................................ 7664 ........................................................................ 7665 ........................................................................ 7666 ........................................................................ 7667 ........................................................................ 7668 ........................................................................ 7669 ........................................................................ 7670 ........................................................................ 7671 ........................................................................ 7672 ........................................................................ 7673 ........................................................................ 7674 ........................................................................ 7675 ........................................................................ 7676 ........................................................................ 7677 ........................................................................ 7678 ........................................................................ 7679 ........................................................................ 7680 ........................................................................ 7681 ........................................................................ 7682 ........................................................................ 7683 ........................................................................ 7684 ........................................................................ 7685 ........................................................................ 7686 ........................................................................ 7687 ........................................................................ 7688 ........................................................................ 7689 ........................................................................ 7690 ........................................................................ 7691 ........................................................................ 7692 ........................................................................ 7693 ........................................................................ 7694 ........................................................................ 7695 ........................................................................ 7696 ........................................................................ 7697 ........................................................................ 7698 ........................................................................ 7699 ........................................................................ 7700 ........................................................................ 7701 ........................................................................ 7702 ........................................................................ 7703 ........................................................................ 7704 ........................................................................ 7705 ........................................................................ 7706 ........................................................................ 7707 ........................................................................ 7708 ........................................................................ 7709 ........................................................................ 7710 ........................................................................ 7711 ........................................................................ 7712 ........................................................................ 7713 ........................................................................ 7714 ........................................................................ 7715 ........................................................................ 7716 ........................................................................ 7717 ........................................................................ 7718 ........................................................................ 7719 ........................................................................ 7720 ........................................................................ 7721 ........................................................................ 7722 ........................................................................ 7723 ........................................................................ 7724 ........................................................................ 7725 ........................................................................ 7726 ........................................................................ 7727 ........................................................................ 7728 ........................................................................ 7729 ........................................................................ 7730 ........................................................................ 7731 ........................................................................ 7732 ........................................................................ 7733 ........................................................................ 7734 ........................................................................ 7735 ........................................................................ 7736 ........................................................................ 7737 ........................................................................ 7738 ........................................................................ 7739 ........................................................................ 7740 ........................................................................ 7741 ........................................................................ 7742 ........................................................................ 7743 ........................................................................ 7744 ........................................................................ 7745 ........................................................................ 7746 ........................................................................ 7747 ........................................................................ 7748 ........................................................................ 7749 ........................................................................ 7750 ........................................................................ 7751 ........................................................................ 7752 ........................................................................ 7753 ........................................................................ 7754 ........................................................................ 7755 ........................................................................ 7756 ........................................................................ 7757 ........................................................................ 7758 ........................................................................ 7759 ........................................................................ 7760 ........................................................................ 7761 ........................................................................ 7762 ........................................................................ 7763 ........................................................................ 7764 ........................................................................ 7765 ........................................................................ 7766 ........................................................................ 7767 ........................................................................ 7768 ........................................................................ 7769 ........................................................................ 7770 ........................................................................ 7771 ........................................................................ 7772 ........................................................................ 7773 ........................................................................ 7774 ........................................................................ 7775 ........................................................................ 7776 ........................................................................ 7777 ........................................................................ 7778 ........................................................................ 7779 ........................................................................ 7780 ........................................................................ 7781 ........................................................................ 7782 ........................................................................ 7783 ........................................................................ 7784 ........................................................................ 7785 ........................................................................ 7786 ........................................................................ 7787 ........................................................................ 7788 ........................................................................ 7789 ........................................................................ 7790 ........................................................................ 7791 ........................................................................ 7792 ........................................................................ 7793 ........................................................................ 7794 ........................................................................ 7795 ........................................................................ 7796 ........................................................................ 7797 ........................................................................ 7798 ........................................................................ 7799 ........................................................................ 7800 ........................................................................ 7801 ........................................................................ 7802 ........................................................................ 7803 ........................................................................ 7804 ........................................................................ 7805 ........................................................................ 7806 ........................................................................ 7807 ........................................................................ 7808 ........................................................................ 7809 ........................................................................ 7810 ........................................................................ 7811 ........................................................................ 7812 ........................................................................ 7813 ........................................................................ 7814 ........................................................................ 7815 ........................................................................ 7816 ........................................................................ 7817 ........................................................................ 7818 ........................................................................ 7819 ........................................................................ 7820 ........................................................................ 7821 ........................................................................ 7822 ........................................................................ 7823 ........................................................................ 7824 ........................................................................ 7825 ........................................................................ 7826 ........................................................................ 7827 ........................................................................ 7828 ........................................................................ 7829 ........................................................................ 7830 ........................................................................ 7831 ........................................................................ 7832 ........................................................................ 7833 ........................................................................ 7834 ........................................................................ 7835 ........................................................................ 7836 ........................................................................ 7837 ........................................................................ 7838 ........................................................................ 7839 ........................................................................ 7840 ........................................................................ 7841 ........................................................................ 7842 ........................................................................ 7843 ........................................................................ 7844 ........................................................................ 7845 ........................................................................ 7846 ........................................................................ 7847 ........................................................................ 7848 ........................................................................ 7849 ........................................................................ 7850 ........................................................................ 7851 ........................................................................ 7852 ........................................................................ 7853 ........................................................................ 7854 ........................................................................ 7855 ........................................................................ 7856 ........................................................................ 7857 ........................................................................ 7858 ........................................................................ 7859 ........................................................................ 7860 ........................................................................ 7861 ........................................................................ 7862 ........................................................................ 7863 ........................................................................ 7864 ........................................................................ 7865 ........................................................................ 7866 ........................................................................ 7867 ........................................................................ 7868 ........................................................................ 7869 ........................................................................ 7870 ........................................................................ 7871 ........................................................................ 7872 ........................................................................ 7873 ........................................................................ 7874 ........................................................................ 7875 ........................................................................ 7876 ........................................................................ 7877 ........................................................................ 7878 ........................................................................ 7879 ........................................................................ 7880 ........................................................................ 7881 ........................................................................ 7882 ........................................................................ 7883 ........................................................................ 7884 ........................................................................ 7885 ........................................................................ 7886 ........................................................................ 7887 ........................................................................ 7888 ........................................................................ 7889 ........................................................................ 7890 ........................................................................ 7891 ........................................................................ 7892 ........................................................................ 7893 ........................................................................ 7894 ........................................................................ 7895 ........................................................................ 7896 ........................................................................ 7897 ........................................................................ 7898 ........................................................................ 7899 ........................................................................ 7900 ........................................................................ 7901 ........................................................................ 7902 ........................................................................ 7903 ........................................................................ 7904 ........................................................................ 7905 ........................................................................ 7906 ........................................................................ 7907 ........................................................................ 7908 ........................................................................ 7909 ........................................................................ 7910 ........................................................................ 7911 ........................................................................ 7912 ........................................................................ 7913 ........................................................................ 7914 ........................................................................ 7915 ........................................................................ 7916 ........................................................................ 7917 ........................................................................ 7918 ........................................................................ 7919 ........................................................................ 7920 ........................................................................ 7921 ........................................................................ 7922 ........................................................................ 7923 ........................................................................ 7924 ........................................................................ 7925 ........................................................................ 7926 ........................................................................ 7927 ........................................................................ 7928 ........................................................................ 7929 ........................................................................ 7930 ........................................................................ 7931 ........................................................................ 7932 ........................................................................ 7933 ........................................................................ 7934 ........................................................................ 7935 ........................................................................ 7936 ........................................................................ 7937 ........................................................................ 7938 ........................................................................ 7939 ........................................................................ 7940 ........................................................................ 7941 ........................................................................ 7942 ........................................................................ 7943 ........................................................................ 7944 ........................................................................ 7945 ........................................................................ 7946 ........................................................................ 7947 ........................................................................ 7948 ........................................................................ 7949 ........................................................................ 7950 ........................................................................ 7951 ........................................................................ 7952 ........................................................................ 7953 ........................................................................ 7954 ........................................................................ 7955 ........................................................................ 7956 ........................................................................ 7957 ........................................................................ 7958 ........................................................................ 7959 ........................................................................ 7960 ........................................................................ 7961 ........................................................................ 7962 ........................................................................ 7963 ........................................................................ 7964 ........................................................................ 7965 ........................................................................ 7966 ........................................................................ 7967 ........................................................................ 7968 ........................................................................ 7969 ........................................................................ 7970 ........................................................................ 7971 ........................................................................ 7972 ........................................................................ 7973 ........................................................................ 7974 ........................................................................ 7975 ........................................................................ 7976 ........................................................................ 7977 ........................................................................ 7978 ........................................................................ 7979 ........................................................................ 7980 ........................................................................ 7981 ........................................................................ 7982 ........................................................................ 7983 ........................................................................ 7984 ........................................................................ 7985 ........................................................................ 7986 ........................................................................ 7987 ........................................................................ 7988 ........................................................................ 7989 ........................................................................ 7990 ........................................................................ 7991 ........................................................................ 7992 ........................................................................ 7993 ........................................................................ 7994 ........................................................................ 7995 ........................................................................ 7996 ........................................................................ 7997 ........................................................................ 7998 ........................................................................ 7999 ........................................................................ 8000 ........................................................................ 8001 ........................................................................ 8002 ........................................................................ 8003 ........................................................................ 8004 ........................................................................ 8005 ........................................................................ 8006 ........................................................................ 8007 ........................................................................ 8008 ........................................................................ 8009 ........................................................................ 8010 ........................................................................ 8011 ........................................................................ 8012 ........................................................................ 8013 ........................................................................ 8014 ........................................................................ 8015 ........................................................................ 8016 ........................................................................ 8017 ........................................................................ 8018 ........................................................................ 8019 ........................................................................ 8020 ........................................................................ 8021 ........................................................................ 8022 ........................................................................ 8023 ........................................................................ 8024 ........................................................................ 8025 ........................................................................ 8026 ........................................................................ 8027 ........................................................................ 8028 ........................................................................ 8029 ........................................................................ 8030 ........................................................................ 8031 ........................................................................ 8032 ........................................................................ 8033 ........................................................................ 8034 ........................................................................ 8035 ........................................................................ 8036 ........................................................................ 8037 ........................................................................ 8038 ........................................................................ 8039 ........................................................................ 8040 ........................................................................ 8041 ........................................................................ 8042 ........................................................................ 8043 ........................................................................ 8044 ........................................................................ 8045 ........................................................................ 8046 ........................................................................ 8047 ........................................................................ 8048 ........................................................................ 8049 ........................................................................ 8050 ........................................................................ 8051 ........................................................................ 8052 ........................................................................ 8053 ........................................................................ 8054 ........................................................................ 8055 ........................................................................ 8056 ........................................................................ 8057 ........................................................................ 8058 ........................................................................ 8059 ........................................................................ 8060 ........................................................................ 8061 ........................................................................ 8062 ........................................................................ 8063 ........................................................................ 8064 ........................................................................ 8065 ........................................................................ 8066 ........................................................................ 8067 ........................................................................ 8068 ........................................................................ 8069 ........................................................................ 8070 ........................................................................ 8071 ........................................................................ 8072 ........................................................................ 8073 ........................................................................ 8074 ........................................................................ 8075 ........................................................................ 8076 ........................................................................ 8077 ........................................................................ 8078 ........................................................................ 8079 ........................................................................ 8080 ........................................................................ 8081 ........................................................................ 8082 ........................................................................ 8083 ........................................................................ 8084 ........................................................................ 8085 ........................................................................ 8086 ........................................................................ 8087 ........................................................................ 8088 ........................................................................ 8089 ........................................................................ 8090 ........................................................................ 8091 ........................................................................ 8092 ........................................................................ 8093 ........................................................................ 8094 ........................................................................ 8095 ........................................................................ 8096 ........................................................................ 8097 ........................................................................ 8098 ........................................................................ 8099 ........................................................................ 8100 ........................................................................ 8101 ........................................................................ 8102 ........................................................................ 8103 ........................................................................ 8104 ........................................................................ 8105 ........................................................................ 8106 ........................................................................ 8107 ........................................................................ 8108 ........................................................................ 8109 ........................................................................ 8110 ........................................................................ 8111 ........................................................................ 8112 ........................................................................ 8113 ........................................................................ 8114 ........................................................................ 8115 ........................................................................ 8116 ........................................................................ 8117 ........................................................................ 8118 ........................................................................ 8119 ........................................................................ 8120 ........................................................................ 8121 ........................................................................ 8122 ........................................................................ 8123 ........................................................................ 8124 ........................................................................ 8125 ........................................................................ 8126 ........................................................................ 8127 ........................................................................ 8128 ........................................................................ 8129 ........................................................................ 8130 ........................................................................ 8131 ........................................................................ 8132 ........................................................................ 8133 ........................................................................ 8134 ........................................................................ 8135 ........................................................................ 8136 ........................................................................ 8137 ........................................................................ 8138 ........................................................................ 8139 ........................................................................ 8140 ........................................................................ 8141 ........................................................................ 8142 ........................................................................ 8143 ........................................................................ 8144 ........................................................................ 8145 ........................................................................ 8146 ........................................................................ 8147 ........................................................................ 8148 ........................................................................ 8149 ........................................................................ 8150 ........................................................................ 8151 ........................................................................ 8152 ........................................................................ 8153 ........................................................................ 8154 ........................................................................ 8155 ........................................................................ 8156 ........................................................................ 8157 ........................................................................ 8158 ........................................................................ 8159 ........................................................................ 8160 ........................................................................ 8161 ........................................................................ 8162 ........................................................................ 8163 ........................................................................ 8164 ........................................................................ 8165 ........................................................................ 8166 ........................................................................ 8167 ........................................................................ 8168 ........................................................................ 8169 ........................................................................ 8170 ........................................................................ 8171 ........................................................................ 8172 ........................................................................ 8173 ........................................................................ 8174 ........................................................................ 8175 ........................................................................ 8176 ........................................................................ 8177 ........................................................................ 8178 ........................................................................ 8179 ........................................................................ 8180 ........................................................................ 8181 ........................................................................ 8182 ........................................................................ 8183 ........................................................................ 8184 ........................................................................ 8185 ........................................................................ 8186 ........................................................................ 8187 ........................................................................ 8188 ........................................................................ 8189 ........................................................................ 8190 ........................................................................ 8191 ........................................................................ 8192 ........................................................................ 8193 ........................................................................ 8194 ........................................................................ 8195 ........................................................................ 8196 ........................................................................ 8197 ........................................................................ 8198 ........................................................................ 8199 ........................................................................ 8200 ........................................................................ 8201 ........................................................................ 8202 ........................................................................ 8203 ........................................................................ 8204 ........................................................................ 8205 ........................................................................ 8206 ........................................................................ 8207 ........................................................................ 8208 ........................................................................ 8209 ........................................................................ 8210 ........................................................................ 8211 ........................................................................ 8212 ........................................................................ 8213 ........................................................................ 8214 ........................................................................ 8215 ........................................................................ 8216 ........................................................................ 8217 ........................................................................ 8218 ........................................................................ 8219 ........................................................................ 8220 ........................................................................ 8221 ........................................................................ 8222 ........................................................................ 8223 ........................................................................ 8224 ........................................................................ 8225 ........................................................................ 8226 ........................................................................ 8227 ........................................................................ 8228 ........................................................................ 8229 ........................................................................ 8230 ........................................................................ 8231 ........................................................................ 8232 ........................................................................ 8233 ........................................................................ 8234 ........................................................................ 8235 ........................................................................ 8236 ........................................................................ 8237 ........................................................................ 8238 ........................................................................ 8239 ........................................................................ 8240 ........................................................................ 8241 ........................................................................ 8242 ........................................................................ 8243 ........................................................................ 8244 ........................................................................ 8245 ........................................................................ 8246 ........................................................................ 8247 ........................................................................ 8248 ........................................................................ 8249 ........................................................................ 8250 ........................................................................ 8251 ........................................................................ 8252 ........................................................................ 8253 ........................................................................ 8254 ........................................................................ 8255 ........................................................................ 8256 ........................................................................ 8257 ........................................................................ 8258 ........................................................................ 8259 ........................................................................ 8260 ........................................................................ 8261 ........................................................................ 8262 ........................................................................ 8263 ........................................................................ 8264 ........................................................................ 8265 ........................................................................ 8266 ........................................................................ 8267 ........................................................................ 8268 ........................................................................ 8269 ........................................................................ 8270 ........................................................................ 8271 ........................................................................ 8272 ........................................................................ 8273 ........................................................................ 8274 ........................................................................ 8275 ........................................................................ 8276 ........................................................................ 8277 ........................................................................ 8278 ........................................................................ 8279 ........................................................................ 8280 ........................................................................ 8281 ........................................................................ 8282 ........................................................................ 8283 ........................................................................ 8284 ........................................................................ 8285 ........................................................................ 8286 ........................................................................ 8287 ........................................................................ 8288 ........................................................................ 8289 ........................................................................ 8290 ........................................................................ 8291 ........................................................................ 8292 ........................................................................ 8293 ........................................................................ 8294 ........................................................................ 8295 ........................................................................ 8296 ........................................................................ 8297 ........................................................................ 8298 ........................................................................ 8299 ........................................................................ 8300 ........................................................................ 8301 ........................................................................ 8302 ........................................................................ 8303 ........................................................................ 8304 ........................................................................ 8305 ........................................................................ 8306 ........................................................................ 8307 ........................................................................ 8308 ........................................................................ 8309 ........................................................................ 8310 ........................................................................ 8311 ........................................................................ 8312 ........................................................................ 8313 ........................................................................ 8314 ........................................................................ 8315 ........................................................................ 8316 ........................................................................ 8317 ........................................................................ 8318 ........................................................................ 8319 ........................................................................ 8320 ........................................................................ 8321 ........................................................................ 8322 ........................................................................ 8323 ........................................................................ 8324 ........................................................................ 8325 ........................................................................ 8326 ........................................................................ 8327 ........................................................................ 8328 ........................................................................ 8329 ........................................................................ 8330 ........................................................................ 8331 ........................................................................ 8332 ........................................................................ 8333 ........................................................................ 8334 ........................................................................ 8335 ........................................................................ 8336 ........................................................................ 8337 ........................................................................ 8338 ........................................................................ 8339 ........................................................................ 8340 ........................................................................ 8341 ........................................................................ 8342 ........................................................................ 8343 ........................................................................ 8344 ........................................................................ 8345 ........................................................................ 8346 ........................................................................ 8347 ........................................................................ 8348 ........................................................................ 8349 ........................................................................ 8350 ........................................................................ 8351 ........................................................................ 8352 ........................................................................ 8353 ........................................................................ 8354 ........................................................................ 8355 ........................................................................ 8356 ........................................................................ 8357 ........................................................................ 8358 ........................................................................ 8359 ........................................................................ 8360 ........................................................................ 8361 ........................................................................ 8362 ........................................................................ 8363 ........................................................................ 8364 ........................................................................ 8365 ........................................................................ 8366 ........................................................................ 8367 ........................................................................ 8368 ........................................................................ 8369 ........................................................................ 8370 ........................................................................ 8371 ........................................................................ 8372 ........................................................................ 8373 ........................................................................ 8374 ........................................................................ 8375 ........................................................................ 8376 ........................................................................ 8377 ........................................................................ 8378 ........................................................................ 8379 ........................................................................ 8380 ........................................................................ 8381 ........................................................................ 8382 ........................................................................ 8383 ........................................................................ 8384 ........................................................................ 8385 ........................................................................ 8386 ........................................................................ 8387 ........................................................................ 8388 ........................................................................ 8389 ........................................................................ 8390 ........................................................................ 8391 ........................................................................ 8392 ........................................................................ 8393 ........................................................................ 8394 ........................................................................ 8395 ........................................................................ 8396 ........................................................................ 8397 ........................................................................ 8398 ........................................................................ 8399 ........................................................................ 8400 ........................................................................ 8401 ........................................................................ 8402 ........................................................................ 8403 ........................................................................ 8404 ........................................................................ 8405 ........................................................................ 8406 ........................................................................ 8407 ........................................................................ 8408 ........................................................................ 8409 ........................................................................ 8410 ........................................................................ 8411 ........................................................................ 8412 ........................................................................ 8413 ........................................................................ 8414 ........................................................................ 8415 ........................................................................ 8416 ........................................................................ 8417 ........................................................................ 8418 ........................................................................ 8419 ........................................................................ 8420 ........................................................................ 8421 ........................................................................ 8422 ........................................................................ 8423 ........................................................................ 8424 ........................................................................ 8425 ........................................................................ 8426 ........................................................................ 8427 ........................................................................ 8428 ........................................................................ 8429 ........................................................................ 8430 ........................................................................ 8431 ........................................................................ 8432 ........................................................................ 8433 ........................................................................ 8434 ........................................................................ 8435 ........................................................................ 8436 ........................................................................ 8437 ........................................................................ 8438 ........................................................................ 8439 ........................................................................ 8440 ........................................................................ 8441 ........................................................................ 8442 ........................................................................ 8443 ........................................................................ 8444 ........................................................................ 8445 ........................................................................ 8446 ........................................................................ 8447 ........................................................................ 8448 ........................................................................ 8449 ........................................................................ 8450 ........................................................................ 8451 ........................................................................ 8452 ........................................................................ 8453 ........................................................................ 8454 ........................................................................ 8455 ........................................................................ 8456 ........................................................................ 8457 ........................................................................ 8458 ........................................................................ 8459 ........................................................................ 8460 ........................................................................ 8461 ........................................................................ 8462 ........................................................................ 8463 ........................................................................ 8464 ........................................................................ 8465 ........................................................................ 8466 ........................................................................ 8467 ........................................................................ 8468 ........................................................................ 8469 ........................................................................ 8470 ........................................................................ 8471 ........................................................................ 8472 ........................................................................ 8473 ........................................................................ 8474 ........................................................................ 8475 ........................................................................ 8476 ........................................................................ 8477 ........................................................................ 8478 ........................................................................ 8479 ........................................................................ 8480 ........................................................................ 8481 ........................................................................ 8482 ........................................................................ 8483 ........................................................................ 8484 ........................................................................ 8485 ........................................................................ 8486 ........................................................................ 8487 ........................................................................ 8488 ........................................................................ 8489 ........................................................................ 8490 ........................................................................ 8491 ........................................................................ 8492 ........................................................................ 8493 ........................................................................ 8494 ........................................................................ 8495 ........................................................................ 8496 ........................................................................ 8497 ........................................................................ 8498 ........................................................................ 8499 ........................................................................ 8500 ........................................................................ 8501 ........................................................................ 8502 ........................................................................ 8503 ........................................................................ 8504 ........................................................................ 8505 ........................................................................ 8506 ........................................................................ 8507 ........................................................................ 8508 ........................................................................ 8509 ........................................................................ 8510 ........................................................................ 8511 ........................................................................ 8512 ........................................................................ 8513 ........................................................................ 8514 ........................................................................ 8515 ........................................................................ 8516 ........................................................................ 8517 ........................................................................ 8518 ........................................................................ 8519 ........................................................................ 8520 ........................................................................ 8521 ........................................................................ 8522 ........................................................................ 8523 ........................................................................ 8524 ........................................................................ 8525 ........................................................................ 8526 ........................................................................ 8527 ........................................................................ 8528 ........................................................................ 8529 ........................................................................ 8530 ........................................................................ 8531 ........................................................................ 8532 ........................................................................ 8533 ........................................................................ 8534 ........................................................................ 8535 ........................................................................ 8536 ........................................................................ 8537 ........................................................................ 8538 ........................................................................ 8539 ........................................................................ 8540 ........................................................................ 8541 ........................................................................ 8542 ........................................................................ 8543 ........................................................................ 8544 ........................................................................ 8545 ........................................................................ 8546 ........................................................................ 8547 ........................................................................ 8548 ........................................................................ 8549 ........................................................................ 8550 ........................................................................ 8551 ........................................................................ 8552 ........................................................................ 8553 ........................................................................ 8554 ........................................................................ 8555 ........................................................................ 8556 ........................................................................ 8557 ........................................................................ 8558 ........................................................................ 8559 ........................................................................ 8560 ........................................................................ 8561 ........................................................................ 8562 ........................................................................ 8563 ........................................................................ 8564 ........................................................................ 8565 ........................................................................ 8566 ........................................................................ 8567 ........................................................................ 8568 ........................................................................ 8569 ........................................................................ 8570 ........................................................................ 8571 ........................................................................ 8572 ........................................................................ 8573 ........................................................................ 8574 ........................................................................ 8575 ........................................................................ 8576 ........................................................................ 8577 ........................................................................ 8578 ........................................................................ 8579 ........................................................................ 8580 ........................................................................ 8581 ........................................................................ 8582 ........................................................................ 8583 ........................................................................ 8584 ........................................................................ 8585 ........................................................................ 8586 ........................................................................ 8587 ........................................................................ 8588 ........................................................................ 8589 ........................................................................ 8590 ........................................................................ 8591 ........................................................................ 8592 ........................................................................ 8593 ........................................................................ 8594 ........................................................................ 8595 ........................................................................ 8596 ........................................................................ 8597 ........................................................................ 8598 ........................................................................ 8599 ........................................................................ 8600 ........................................................................ 8601 ........................................................................ 8602 ........................................................................ 8603 ........................................................................ 8604 ........................................................................ 8605 ........................................................................ 8606 ........................................................................ 8607 ........................................................................ 8608 ........................................................................ 8609 ........................................................................ 8610 ........................................................................ 8611 ........................................................................ 8612 ........................................................................ 8613 ........................................................................ 8614 ........................................................................ 8615 ........................................................................ 8616 ........................................................................ 8617 ........................................................................ 8618 ........................................................................ 8619 ........................................................................ 8620 ........................................................................ 8621 ........................................................................ 8622 ........................................................................ 8623 ........................................................................ 8624 ........................................................................ 8625 ........................................................................ 8626 ........................................................................ 8627 ........................................................................ 8628 ........................................................................ 8629 ........................................................................ 8630 ........................................................................ 8631 ........................................................................ 8632 ........................................................................ 8633 ........................................................................ 8634 ........................................................................ 8635 ........................................................................ 8636 ........................................................................ 8637 ........................................................................ 8638 ........................................................................ 8639 ........................................................................ 8640 ........................................................................ 8641 ........................................................................ 8642 ........................................................................ 8643 ........................................................................ 8644 ........................................................................ 8645 ........................................................................ 8646 ........................................................................ 8647 ........................................................................ 8648 ........................................................................ 8649 ........................................................................ 8650 ........................................................................ 8651 ........................................................................ 8652 ........................................................................ 8653 ........................................................................ 8654 ........................................................................ 8655 ........................................................................ 8656 ........................................................................ 8657 ........................................................................ 8658 ........................................................................ 8659 ........................................................................ 8660 ........................................................................ 8661 ........................................................................ 8662 ........................................................................ 8663 ........................................................................ 8664 ........................................................................ 8665 ........................................................................ 8666 ........................................................................ 8667 ........................................................................ 8668 ........................................................................ 8669 ........................................................................ 8670 ........................................................................ 8671 ........................................................................ 8672 ........................................................................ 8673 ........................................................................ 8674 ........................................................................ 8675 ........................................................................ 8676 ........................................................................ 8677 ........................................................................ 8678 ........................................................................ 8679 ........................................................................ 8680 ........................................................................ 8681 ........................................................................ 8682 ........................................................................ 8683 ........................................................................ 8684 ........................................................................ 8685 ........................................................................ 8686 ........................................................................ 8687 ........................................................................ 8688 ........................................................................ 8689 ........................................................................ 8690 ........................................................................ 8691 ........................................................................ 8692 ........................................................................ 8693 ........................................................................ 8694 ........................................................................ 8695 ........................................................................ 8696 ........................................................................ 8697 ........................................................................ 8698 ........................................................................ 8699 ........................................................................ 8700 ........................................................................ 8701 ........................................................................ 8702 ........................................................................ 8703 ........................................................................ 8704 ........................................................................ 8705 ........................................................................ 8706 ........................................................................ 8707 ........................................................................ 8708 ........................................................................ 8709 ........................................................................ 8710 ........................................................................ 8711 ........................................................................ 8712 ........................................................................ 8713 ........................................................................ 8714 ........................................................................ 8715 ........................................................................ 8716 ........................................................................ 8717 ........................................................................ 8718 ........................................................................ 8719 ........................................................................ 8720 ........................................................................ 8721 ........................................................................ 8722 ........................................................................ 8723 ........................................................................ 8724 ........................................................................ 8725 ........................................................................ 8726 ........................................................................ 8727 ........................................................................ 8728 ........................................................................ 8729 ........................................................................ 8730 ........................................................................ 8731 ........................................................................ 8732 ........................................................................ 8733 ........................................................................ 8734 ........................................................................ 8735 ........................................................................ 8736 ........................................................................ 8737 ........................................................................ 8738 ........................................................................ 8739 ........................................................................ 8740 ........................................................................ 8741 ........................................................................ 8742 ........................................................................ 8743 ........................................................................ 8744 ........................................................................ 8745 ........................................................................ 8746 ........................................................................ 8747 ........................................................................ 8748 ........................................................................ 8749 ........................................................................ 8750 ........................................................................ 8751 ........................................................................ 8752 ........................................................................ 8753 ........................................................................ 8754 ........................................................................ 8755 ........................................................................ 8756 ........................................................................ 8757 ........................................................................ 8758 ........................................................................ 8759 ........................................................................ 8760 ........................................................................ 8761 ........................................................................ 8762 ........................................................................ 8763 ........................................................................ 8764 ........................................................................ 8765 ........................................................................ 8766 ........................................................................ 8767 ........................................................................ 8768 ........................................................................ 8769 ........................................................................ 8770 ........................................................................ 8771 ........................................................................ 8772 ........................................................................ 8773 ........................................................................ 8774 ........................................................................ 8775 ........................................................................ 8776 ........................................................................ 8777 ........................................................................ 8778 ........................................................................ 8779 ........................................................................ 8780 ........................................................................ 8781 ........................................................................ 8782 ........................................................................ 8783 ........................................................................ 8784 ........................................................................ 8785 ........................................................................ 8786 ........................................................................ 8787 ........................................................................ 8788 ........................................................................ 8789 ........................................................................ 8790 ........................................................................ 8791 ........................................................................ 8792 ........................................................................ 8793 ........................................................................ 8794 ........................................................................ 8795 ........................................................................ 8796 ........................................................................ 8797 ........................................................................ 8798 ........................................................................ 8799 ........................................................................ 8800 ........................................................................ 8801 ........................................................................ 8802 ........................................................................ 8803 ........................................................................ 8804 ........................................................................ 8805 ........................................................................ 8806 ........................................................................ 8807 ........................................................................ 8808 ........................................................................ 8809 ........................................................................ 8810 ........................................................................ 8811 ........................................................................ 8812 ........................................................................ 8813 ........................................................................ 8814 ........................................................................ 8815 ........................................................................ 8816 ........................................................................ 8817 ........................................................................ 8818 ........................................................................ 8819 ........................................................................ 8820 ........................................................................ 8821 ........................................................................ 8822 ........................................................................ 8823 ........................................................................ 8824 ........................................................................ 8825 ........................................................................ 8826 ........................................................................ 8827 ........................................................................ 8828 ........................................................................ 8829 ........................................................................ 8830 ........................................................................ 8831 ........................................................................ 8832 ........................................................................ 8833 ........................................................................ 8834 ........................................................................ 8835 ........................................................................ 8836 ........................................................................ 8837 ........................................................................ 8838 ........................................................................ 8839 ........................................................................ 8840 ........................................................................ 8841 ........................................................................ 8842 ........................................................................ 8843 ........................................................................ 8844 ........................................................................ 8845 ........................................................................ 8846 ........................................................................ 8847 ........................................................................ 8848 ........................................................................ 8849 ........................................................................ 8850 ........................................................................ 8851 ........................................................................ 8852 ........................................................................ 8853 ........................................................................ 8854 ........................................................................ 8855 ........................................................................ 8856 ........................................................................ 8857 ........................................................................ 8858 ........................................................................ 8859 ........................................................................ 8860 ........................................................................ 8861 ........................................................................ 8862 ........................................................................ 8863 ........................................................................ 8864 ........................................................................ 8865 ........................................................................ 8866 ........................................................................ 8867 ........................................................................ 8868 ........................................................................ 8869 ........................................................................ 8870 ........................................................................ 8871 ........................................................................ 8872 ........................................................................ 8873 ........................................................................ 8874 ........................................................................ 8875 ........................................................................ 8876 ........................................................................ 8877 ........................................................................ 8878 ........................................................................ 8879 ........................................................................ 8880 ........................................................................ 8881 ........................................................................ 8882 ........................................................................ 8883 ........................................................................ 8884 ........................................................................ 8885 ........................................................................ 8886 ........................................................................ 8887 ........................................................................ 8888 ........................................................................ 8889 ........................................................................ 8890 ........................................................................ 8891 ........................................................................ 8892 ........................................................................ 8893 ........................................................................ 8894 ........................................................................ 8895 ........................................................................ 8896 ........................................................................ 8897 ........................................................................ 8898 ........................................................................ 8899 ........................................................................ 8900 ........................................................................ 8901 ........................................................................ 8902 ........................................................................ 8903 ........................................................................ 8904 ........................................................................ 8905 ........................................................................ 8906 ........................................................................ 8907 ........................................................................ 8908 ........................................................................ 8909 ........................................................................ 8910 ........................................................................ 8911 ........................................................................ 8912 ........................................................................ 8913 ........................................................................ 8914 ........................................................................ 8915 ........................................................................ 8916 ........................................................................ 8917 ........................................................................ 8918 ........................................................................ 8919 ........................................................................ 8920 ........................................................................ 8921 ........................................................................ 8922 ........................................................................ 8923 ........................................................................ 8924 ........................................................................ 8925 ........................................................................ 8926 ........................................................................ 8927 ........................................................................ 8928 ........................................................................ 8929 ........................................................................ 8930 ........................................................................ 8931 ........................................................................ 8932 ........................................................................ 8933 ........................................................................ 8934 ........................................................................ 8935 ........................................................................ 8936 ........................................................................ 8937 ........................................................................ 8938 ........................................................................ 8939 ........................................................................ 8940 ........................................................................ 8941 ........................................................................ 8942 ........................................................................ 8943 ........................................................................ 8944 ........................................................................ 8945 ........................................................................ 8946 ........................................................................ 8947 ........................................................................ 8948 ........................................................................ 8949 ........................................................................ 8950 ........................................................................ 8951 ........................................................................ 8952 ........................................................................ 8953 ........................................................................ 8954 ........................................................................ 8955 ........................................................................ 8956 ........................................................................ 8957 ........................................................................ 8958 ........................................................................ 8959 ........................................................................ 8960 ........................................................................ 8961 ........................................................................ 8962 ........................................................................ 8963 ........................................................................ 8964 ........................................................................ 8965 ........................................................................ 8966 ........................................................................ 8967 ........................................................................ 8968 ........................................................................ 8969 ........................................................................ 8970 ........................................................................ 8971 ........................................................................ 8972 ........................................................................ 8973 ........................................................................ 8974 ........................................................................ 8975 ........................................................................ 8976 ........................................................................ 8977 ........................................................................ 8978 ........................................................................ 8979 ........................................................................ 8980 ........................................................................ 8981 ........................................................................ 8982 ........................................................................ 8983 ........................................................................ 8984 ........................................................................ 8985 ........................................................................ 8986 ........................................................................ 8987 ........................................................................ 8988 ........................................................................ 8989 ........................................................................ 8990 ........................................................................ 8991 ........................................................................ 8992 ........................................................................ 8993 ........................................................................ 8994 ........................................................................ 8995 ........................................................................ 8996 ........................................................................ 8997 ........................................................................ 8998 ........................................................................ 8999 ........................................................................ 9000 ........................................................................ 9001 ........................................................................ 9002 ........................................................................ 9003 ........................................................................ 9004 ........................................................................ 9005 ........................................................................ 9006 ........................................................................ 9007 ........................................................................ 9008 ........................................................................ 9009 ........................................................................ 9010 ........................................................................ 9011 ........................................................................ 9012 ........................................................................ 9013 ........................................................................ 9014 ........................................................................ 9015 ........................................................................ 9016 ........................................................................ 9017 ........................................................................ 9018 ........................................................................ 9019 ........................................................................ 9020 ........................................................................ 9021 ........................................................................ 9022 ........................................................................ 9023 ........................................................................ 9024 ........................................................................ 9025 ........................................................................ 9026 ........................................................................ 9027 ........................................................................ 9028 ........................................................................ 9029 ........................................................................ 9030 ........................................................................ 9031 ........................................................................ 9032 ........................................................................ 9033 ........................................................................ 9034 ........................................................................ 9035 ........................................................................ 9036 ........................................................................ 9037 ........................................................................ 9038 ........................................................................ 9039 ........................................................................ 9040 ........................................................................ 9041 ........................................................................ 9042 ........................................................................ 9043 ........................................................................ 9044 ........................................................................ 9045 ........................................................................ 9046 ........................................................................ 9047 ........................................................................ 9048 ........................................................................ 9049 ........................................................................ 9050 ........................................................................ 9051 ........................................................................ 9052 ........................................................................ 9053 ........................................................................ 9054 ........................................................................ 9055 ........................................................................ 9056 ........................................................................ 9057 ........................................................................ 9058 ........................................................................ 9059 ........................................................................ 9060 ........................................................................ 9061 ........................................................................ 9062 ........................................................................ 9063 ........................................................................ 9064 ........................................................................ 9065 ........................................................................ 9066 ........................................................................ 9067 ........................................................................ 9068 ........................................................................ 9069 ........................................................................ 9070 ........................................................................ 9071 ........................................................................ 9072 ........................................................................ 9073 ........................................................................ 9074 ........................................................................ 9075 ........................................................................ 9076 ........................................................................ 9077 ........................................................................ 9078 ........................................................................ 9079 ........................................................................ 9080 ........................................................................ 9081 ........................................................................ 9082 ........................................................................ 9083 ........................................................................ 9084 ........................................................................ 9085 ........................................................................ 9086 ........................................................................ 9087 ........................................................................ 9088 ........................................................................ 9089 ........................................................................ 9090 ........................................................................ 9091 ........................................................................ 9092 ........................................................................ 9093 ........................................................................ 9094 ........................................................................ 9095 ........................................................................ 9096 ........................................................................ 9097 ........................................................................ 9098 ........................................................................ 9099 ........................................................................ 9100 ........................................................................ 9101 ........................................................................ 9102 ........................................................................ 9103 ........................................................................ 9104 ........................................................................ 9105 ........................................................................ 9106 ........................................................................ 9107 ........................................................................ 9108 ........................................................................ 9109 ........................................................................ 9110 ........................................................................ 9111 ........................................................................ 9112 ........................................................................ 9113 ........................................................................ 9114 ........................................................................ 9115 ........................................................................ 9116 ........................................................................ 9117 ........................................................................ 9118 ........................................................................ 9119 ........................................................................ 9120 ........................................................................ 9121 ........................................................................ 9122 ........................................................................ 9123 ........................................................................ 9124 ........................................................................ 9125 ........................................................................ 9126 ........................................................................ 9127 ........................................................................ 9128 ........................................................................ 9129 ........................................................................ 9130 ........................................................................ 9131 ........................................................................ 9132 ........................................................................ 9133 ........................................................................ 9134 ........................................................................ 9135 ........................................................................ 9136 ........................................................................ 9137 ........................................................................ 9138 ........................................................................ 9139 ........................................................................ 9140 ........................................................................ 9141 ........................................................................ 9142 ........................................................................ 9143 ........................................................................ 9144 ........................................................................ 9145 ........................................................................ 9146 ........................................................................ 9147 ........................................................................ 9148 ........................................................................ 9149 ........................................................................ 9150 ........................................................................ 9151 ........................................................................ 9152 ........................................................................ 9153 ........................................................................ 9154 ........................................................................ 9155 ........................................................................ 9156 ........................................................................ 9157 ........................................................................ 9158 ........................................................................ 9159 ........................................................................ 9160 ........................................................................ 9161 ........................................................................ 9162 ........................................................................ 9163 ........................................................................ 9164 ........................................................................ 9165 ........................................................................ 9166 ........................................................................ 9167 ........................................................................ 9168 ........................................................................ 9169 ........................................................................ 9170 ........................................................................ 9171 ........................................................................ 9172 ........................................................................ 9173 ........................................................................ 9174 ........................................................................ 9175 ........................................................................ 9176 ........................................................................ 9177 ........................................................................ 9178 ........................................................................ 9179 ........................................................................ 9180 ........................................................................ 9181 ........................................................................ 9182 ........................................................................ 9183 ........................................................................ 9184 ........................................................................ 9185 ........................................................................ 9186 ........................................................................ 9187 ........................................................................ 9188 ........................................................................ 9189 ........................................................................ 9190 ........................................................................ 9191 ........................................................................ 9192 ........................................................................ 9193 ........................................................................ 9194 ........................................................................ 9195 ........................................................................ 9196 ........................................................................ 9197 ........................................................................ 9198 ........................................................................ 9199 ........................................................................ 9200 ........................................................................ 9201 ........................................................................ 9202 ........................................................................ 9203 ........................................................................ 9204 ........................................................................ 9205 ........................................................................ 9206 ........................................................................ 9207 ........................................................................ 9208 ........................................................................ 9209 ........................................................................ 9210 ........................................................................ 9211 ........................................................................ 9212 ........................................................................ 9213 ........................................................................ 9214 ........................................................................ 9215 ........................................................................ 9216 ........................................................................ 9217 ........................................................................ 9218 ........................................................................ 9219 ........................................................................ 9220 ........................................................................ 9221 ........................................................................ 9222 ........................................................................ 9223 ........................................................................ 9224 ........................................................................ 9225 ........................................................................ 9226 ........................................................................ 9227 ........................................................................ 9228 ........................................................................ 9229 ........................................................................ 9230 ........................................................................ 9231 ........................................................................ 9232 ........................................................................ 9233 ........................................................................ 9234 ........................................................................ 9235 ........................................................................ 9236 ........................................................................ 9237 ........................................................................ 9238 ........................................................................ 9239 ........................................................................ 9240 ........................................................................ 9241 ........................................................................ 9242 ........................................................................ 9243 ........................................................................ 9244 ........................................................................ 9245 ........................................................................ 9246 ........................................................................ 9247 ........................................................................ 9248 ........................................................................ 9249 ........................................................................ 9250 ........................................................................ 9251 ........................................................................ 9252 ........................................................................ 9253 ........................................................................ 9254 ........................................................................ 9255 ........................................................................ 9256 ........................................................................ 9257 ........................................................................ 9258 ........................................................................ 9259 ........................................................................ 9260 ........................................................................ 9261 ........................................................................ 9262 ........................................................................ 9263 ........................................................................ 9264 ........................................................................ 9265 ........................................................................ 9266 ........................................................................ 9267 ........................................................................ 9268 ........................................................................ 9269 ........................................................................ 9270 ........................................................................ 9271 ........................................................................ 9272 ........................................................................ 9273 ........................................................................ 9274 ........................................................................ 9275 ........................................................................ 9276 ........................................................................ 9277 ........................................................................ 9278 ........................................................................ 9279 ........................................................................ 9280 ........................................................................ 9281 ........................................................................ 9282 ........................................................................ 9283 ........................................................................ 9284 ........................................................................ 9285 ........................................................................ 9286 ........................................................................ 9287 ........................................................................ 9288 ........................................................................ 9289 ........................................................................ 9290 ........................................................................ 9291 ........................................................................ 9292 ........................................................................ 9293 ........................................................................ 9294 ........................................................................ 9295 ........................................................................ 9296 ........................................................................ 9297 ........................................................................ 9298 ........................................................................ 9299 ........................................................................ 9300 ........................................................................ 9301 ........................................................................ 9302 ........................................................................ 9303 ........................................................................ 9304 ........................................................................ 9305 ........................................................................ 9306 ........................................................................ 9307 ........................................................................ 9308 ........................................................................ 9309 ........................................................................ 9310 ........................................................................ 9311 ........................................................................ 9312 ........................................................................ 9313 ........................................................................ 9314 ........................................................................ 9315 ........................................................................ 9316 ........................................................................ 9317 ........................................................................ 9318 ........................................................................ 9319 ........................................................................ 9320 ........................................................................ 9321 ........................................................................ 9322 ........................................................................ 9323 ........................................................................ 9324 ........................................................................ 9325 ........................................................................ 9326 ........................................................................ 9327 ........................................................................ 9328 ........................................................................ 9329 ........................................................................ 9330 ........................................................................ 9331 ........................................................................ 9332 ........................................................................ 9333 ........................................................................ 9334 ........................................................................ 9335 ........................................................................ 9336 ........................................................................ 9337 ........................................................................ 9338 ........................................................................ 9339 ........................................................................ 9340 ........................................................................ 9341 ........................................................................ 9342 ........................................................................ 9343 ........................................................................ 9344 ........................................................................ 9345 ........................................................................ 9346 ........................................................................ 9347 ........................................................................ 9348 ........................................................................ 9349 ........................................................................ 9350 ........................................................................ 9351 ........................................................................ 9352 ........................................................................ 9353 ........................................................................ 9354 ........................................................................ 9355 ........................................................................ 9356 ........................................................................ 9357 ........................................................................ 9358 ........................................................................ 9359 ........................................................................ 9360 ........................................................................ 9361 ........................................................................ 9362 ........................................................................ 9363 ........................................................................ 9364 ........................................................................ 9365 ........................................................................ 9366 ........................................................................ 9367 ........................................................................ 9368 ........................................................................ 9369 ........................................................................ 9370 ........................................................................ 9371 ........................................................................ 9372 ........................................................................ 9373 ........................................................................ 9374 ........................................................................ 9375 ........................................................................ 9376 ........................................................................ 9377 ........................................................................ 9378 ........................................................................ 9379 ........................................................................ 9380 ........................................................................ 9381 ........................................................................ 9382 ........................................................................ 9383 ........................................................................ 9384 ........................................................................ 9385 ........................................................................ 9386 ........................................................................ 9387 ........................................................................ 9388 ........................................................................ 9389 ........................................................................ 9390 ........................................................................ 9391 ........................................................................ 9392 ........................................................................ 9393 ........................................................................ 9394 ........................................................................ 9395 ........................................................................ 9396 ........................................................................ 9397 ........................................................................ 9398 ........................................................................ 9399 ........................................................................ 9400 ........................................................................ 9401 ........................................................................ 9402 ........................................................................ 9403 ........................................................................ 9404 ........................................................................ 9405 ........................................................................ 9406 ........................................................................ 9407 ........................................................................ 9408 ........................................................................ 9409 ........................................................................ 9410 ........................................................................ 9411 ........................................................................ 9412 ........................................................................ 9413 ........................................................................ 9414 ........................................................................ 9415 ........................................................................ 9416 ........................................................................ 9417 ........................................................................ 9418 ........................................................................ 9419 ........................................................................ 9420 ........................................................................ 9421 ........................................................................ 9422 ........................................................................ 9423 ........................................................................ 9424 ........................................................................ 9425 ........................................................................ 9426 ........................................................................ 9427 ........................................................................ 9428 ........................................................................ 9429 ........................................................................ 9430 ........................................................................ 9431 ........................................................................ 9432 ........................................................................ 9433 ........................................................................ 9434 ........................................................................ 9435 ........................................................................ 9436 ........................................................................ 9437 ........................................................................ 9438 ........................................................................ 9439 ........................................................................ 9440 ........................................................................ 9441 ........................................................................ 9442 ........................................................................ 9443 ........................................................................ 9444 ........................................................................ 9445 ........................................................................ 9446 ........................................................................ 9447 ........................................................................ 9448 ........................................................................ 9449 ........................................................................ 9450 ........................................................................ 9451 ........................................................................ 9452 ........................................................................ 9453 ........................................................................ 9454 ........................................................................ 9455 ........................................................................ 9456 ........................................................................ 9457 ........................................................................ 9458 ........................................................................ 9459 ........................................................................ 9460 ........................................................................ 9461 ........................................................................ 9462 ........................................................................ 9463 ........................................................................ 9464 ........................................................................ 9465 ........................................................................ 9466 ........................................................................ 9467 ........................................................................ 9468 ........................................................................ 9469 ........................................................................ 9470 ........................................................................ 9471 ........................................................................ 9472 ........................................................................ 9473 ........................................................................ 9474 ........................................................................ 9475 ........................................................................ 9476 ........................................................................ 9477 ........................................................................ 9478 ........................................................................ 9479 ........................................................................ 9480 ........................................................................ 9481 ........................................................................ 9482 ........................................................................ 9483 ........................................................................ 9484 ........................................................................ 9485 ........................................................................ 9486 ........................................................................ 9487 ........................................................................ 9488 ........................................................................ 9489 ........................................................................ 9490 ........................................................................ 9491 ........................................................................ 9492 ........................................................................ 9493 ........................................................................ 9494 ........................................................................ 9495 ........................................................................ 9496 ........................................................................ 9497 ........................................................................ 9498 ........................................................................ 9499 ........................................................................ 9500 ........................................................................ 9501 ........................................................................ 9502 ........................................................................ 9503 ........................................................................ 9504 ........................................................................ 9505 ........................................................................ 9506 ........................................................................ 9507 ........................................................................ 9508 ........................................................................ 9509 ........................................................................ 9510 ........................................................................ 9511 ........................................................................ 9512 ........................................................................ 9513 ........................................................................ 9514 ........................................................................ 9515 ........................................................................ 9516 ........................................................................ 9517 ........................................................................ 9518 ........................................................................ 9519 ........................................................................ 9520 ........................................................................ 9521 ........................................................................ 9522 ........................................................................ 9523 ........................................................................ 9524 ........................................................................ 9525 ........................................................................ 9526 ........................................................................ 9527 ........................................................................ 9528 ........................................................................ 9529 ........................................................................ 9530 ........................................................................ 9531 ........................................................................ 9532 ........................................................................ 9533 ........................................................................ 9534 ........................................................................ 9535 ........................................................................ 9536 ........................................................................ 9537 ........................................................................ 9538 ........................................................................ 9539 ........................................................................ 9540 ........................................................................ 9541 ........................................................................ 9542 ........................................................................ 9543 ........................................................................ 9544 ........................................................................ 9545 ........................................................................ 9546 ........................................................................ 9547 ........................................................................ 9548 ........................................................................ 9549 ........................................................................ 9550 ........................................................................ 9551 ........................................................................ 9552 ........................................................................ 9553 ........................................................................ 9554 ........................................................................ 9555 ........................................................................ 9556 ........................................................................ 9557 ........................................................................ 9558 ........................................................................ 9559 ........................................................................ 9560 ........................................................................ 9561 ........................................................................ 9562 ........................................................................ 9563 ........................................................................ 9564 ........................................................................ 9565 ........................................................................ 9566 ........................................................................ 9567 ........................................................................ 9568 ........................................................................ 9569 ........................................................................ 9570 ........................................................................ 9571 ........................................................................ 9572 ........................................................................ 9573 ........................................................................ 9574 ........................................................................ 9575 ........................................................................ 9576 ........................................................................ 9577 ........................................................................ 9578 ........................................................................ 9579 ........................................................................ 9580 ........................................................................ 9581 ........................................................................ 9582 ........................................................................ 9583 ........................................................................ 9584 ........................................................................ 9585 ........................................................................ 9586 ........................................................................ 9587 ........................................................................ 9588 ........................................................................ 9589 ........................................................................ 9590 ........................................................................ 9591 ........................................................................ 9592 ........................................................................ 9593 ........................................................................ 9594 ........................................................................ 9595 ........................................................................ 9596 ........................................................................ 9597 ........................................................................ 9598 ........................................................................ 9599 ........................................................................ 9600 ........................................................................ 9601 ........................................................................ 9602 ........................................................................ 9603 ........................................................................ 9604 ........................................................................ 9605 ........................................................................ 9606 ........................................................................ 9607 ........................................................................ 9608 ........................................................................ 9609 ........................................................................ 9610 ........................................................................ 9611 ........................................................................ 9612 ........................................................................ 9613 ........................................................................ 9614 ........................................................................ 9615 ........................................................................ 9616 ........................................................................ 9617 ........................................................................ 9618 ........................................................................ 9619 ........................................................................ 9620 ........................................................................ 9621 ........................................................................ 9622 ........................................................................ 9623 ........................................................................ 9624 ........................................................................ 9625 ........................................................................ 9626 ........................................................................ 9627 ........................................................................ 9628 ........................................................................ 9629 ........................................................................ 9630 ........................................................................ 9631 ........................................................................ 9632 ........................................................................ 9633 ........................................................................ 9634 ........................................................................ 9635 ........................................................................ 9636 ........................................................................ 9637 ........................................................................ 9638 ........................................................................ 9639 ........................................................................ 9640 ........................................................................ 9641 ........................................................................ 9642 ........................................................................ 9643 ........................................................................ 9644 ........................................................................ 9645 ........................................................................ 9646 ........................................................................ 9647 ........................................................................ 9648 ........................................................................ 9649 ........................................................................ 9650 ........................................................................ 9651 ........................................................................ 9652 ........................................................................ 9653 ........................................................................ 9654 ........................................................................ 9655 ........................................................................ 9656 ........................................................................ 9657 ........................................................................ 9658 ........................................................................ 9659 ........................................................................ 9660 ........................................................................ 9661 ........................................................................ 9662 ........................................................................ 9663 ........................................................................ 9664 ........................................................................ 9665 ........................................................................ 9666 ........................................................................ 9667 ........................................................................ 9668 ........................................................................ 9669 ........................................................................ 9670 ........................................................................ 9671 ........................................................................ 9672 ........................................................................ 9673 ........................................................................ 9674 ........................................................................ 9675 ........................................................................ 9676 ........................................................................ 9677 ........................................................................ 9678 ........................................................................ 9679 ........................................................................ 9680 ........................................................................ 9681 ........................................................................ 9682 ........................................................................ 9683 ........................................................................ 9684 ........................................................................ 9685 ........................................................................ 9686 ........................................................................ 9687 ........................................................................ 9688 ........................................................................ 9689 ........................................................................ 9690 ........................................................................ 9691 ........................................................................ 9692 ........................................................................ 9693 ........................................................................ 9694 ........................................................................ 9695 ........................................................................ 9696 ........................................................................ 9697 ........................................................................ 9698 ........................................................................ 9699 ........................................................................ 9700 ........................................................................ 9701 ........................................................................ 9702 ........................................................................ 9703 ........................................................................ 9704 ........................................................................ 9705 ........................................................................ 9706 ........................................................................ 9707 ........................................................................ 9708 ........................................................................ 9709 ........................................................................ 9710 ........................................................................ 9711 ........................................................................ 9712 ........................................................................ 9713 ........................................................................ 9714 ........................................................................ 9715 ........................................................................ 9716 ........................................................................ 9717 ........................................................................ 9718 ........................................................................ 9719 ........................................................................ 9720 ........................................................................ 9721 ........................................................................ 9722 ........................................................................ 9723 ........................................................................ 9724 ........................................................................ 9725 ........................................................................ 9726 ........................................................................ 9727 ........................................................................ 9728 ........................................................................ 9729 ........................................................................ 9730 ........................................................................ 9731 ........................................................................ 9732 ........................................................................ 9733 ........................................................................ 9734 ........................................................................ 9735 ........................................................................ 9736 ........................................................................ 9737 ........................................................................ 9738 ........................................................................ 9739 ........................................................................ 9740 ........................................................................ 9741 ........................................................................ 9742 ........................................................................ 9743 ........................................................................ 9744 ........................................................................ 9745 ........................................................................ 9746 ........................................................................ 9747 ........................................................................ 9748 ........................................................................ 9749 ........................................................................ 9750 ........................................................................ 9751 ........................................................................ 9752 ........................................................................ 9753 ........................................................................ 9754 ........................................................................ 9755 ........................................................................ 9756 ........................................................................ 9757 ........................................................................ 9758 ........................................................................ 9759 ........................................................................ 9760 ........................................................................ 9761 ........................................................................ 9762 ........................................................................ 9763 ........................................................................ 9764 ........................................................................ 9765 ........................................................................ 9766 ........................................................................ 9767 ........................................................................ 9768 ........................................................................ 9769 ........................................................................ 9770 ........................................................................ 9771 ........................................................................ 9772 ........................................................................ 9773 ........................................................................ 9774 ........................................................................ 9775 ........................................................................ 9776 ........................................................................ 9777 ........................................................................ 9778 ........................................................................ 9779 ........................................................................ 9780 ........................................................................ 9781 ........................................................................ 9782 ........................................................................ 9783 ........................................................................ 9784 ........................................................................ 9785 ........................................................................ 9786 ........................................................................ 9787 ........................................................................ 9788 ........................................................................ 9789 ........................................................................ 9790 ........................................................................ 9791 ........................................................................ 9792 ........................................................................ 9793 ........................................................................ 9794 ........................................................................ 9795 ........................................................................ 9796 ........................................................................ 9797 ........................................................................ 9798 ........................................................................ 9799 ........................................................................ 9800 ........................................................................ 9801 ........................................................................ 9802 ........................................................................ 9803 ........................................................................ 9804 ........................................................................ 9805 ........................................................................ 9806 ........................................................................ 9807 ........................................................................ 9808 ........................................................................ 9809 ........................................................................ 9810 ........................................................................ 9811 ........................................................................ 9812 ........................................................................ 9813 ........................................................................ 9814 ........................................................................ 9815 ........................................................................ 9816 ........................................................................ 9817 ........................................................................ 9818 ........................................................................ 9819 ........................................................................ 9820 ........................................................................ 9821 ........................................................................ 9822 ........................................................................ 9823 ........................................................................ 9824 ........................................................................ 9825 ........................................................................ 9826 ........................................................................ 9827 ........................................................................ 9828 ........................................................................ 9829 ........................................................................ 9830 ........................................................................ 9831 ........................................................................ 9832 ........................................................................ 9833 ........................................................................ 9834 ........................................................................ 9835 ........................................................................ 9836 ........................................................................ 9837 ........................................................................ 9838 ........................................................................ 9839 ........................................................................ 9840 ........................................................................ 9841 ........................................................................ 9842 ........................................................................ 9843 ........................................................................ 9844 ........................................................................ 9845 ........................................................................ 9846 ........................................................................ 9847 ........................................................................ 9848 ........................................................................ 9849 ........................................................................ 9850 ........................................................................ 9851 ........................................................................ 9852 ........................................................................ 9853 ........................................................................ 9854 ........................................................................ 9855 ........................................................................ 9856 ........................................................................ 9857 ........................................................................ 9858 ........................................................................ 9859 ........................................................................ 9860 ........................................................................ 9861 ........................................................................ 9862 ........................................................................ 9863 ........................................................................ 9864 ........................................................................ 9865 ........................................................................ 9866 ........................................................................ 9867 ........................................................................ 9868 ........................................................................ 9869 ........................................................................ 9870 ........................................................................ 9871 ........................................................................ 9872 ........................................................................ 9873 ........................................................................ 9874 ........................................................................ 9875 ........................................................................ 9876 ........................................................................ 9877 ........................................................................ 9878 ........................................................................ 9879 ........................................................................ 9880 ........................................................................ 9881 ........................................................................ 9882 ........................................................................ 9883 ........................................................................ 9884 ........................................................................ 9885 ........................................................................ 9886 ........................................................................ 9887 ........................................................................ 9888 ........................................................................ 9889 ........................................................................ 9890 ........................................................................ 9891 ........................................................................ 9892 ........................................................................ 9893 ........................................................................ 9894 ........................................................................ 9895 ........................................................................ 9896 ........................................................................ 9897 ........................................................................ 9898 ........................................................................ 9899 ........................................................................ 9900 ........................................................................ 9901 ........................................................................ 9902 ........................................................................ 9903 ........................................................................ 9904 ........................................................................ 9905 ........................................................................ 9906 ........................................................................ 9907 ........................................................................ 9908 ........................................................................ 9909 ........................................................................ 9910 ........................................................................ 9911 ........................................................................ 9912 ........................................................................ 9913 ........................................................................ 9914 ........................................................................ 9915 ........................................................................ 9916 ........................................................................ 9917 ........................................................................ 9918 ........................................................................ 9919 ........................................................................ 9920 ........................................................................ 9921 ........................................................................ 9922 ........................................................................ 9923 ........................................................................ 9924 ........................................................................ 9925 ........................................................................ 9926 ........................................................................ 9927 ........................................................................ 9928 ........................................................................ 9929 ........................................................................ 9930 ........................................................................ 9931 ........................................................................ 9932 ........................................................................ 9933 ........................................................................ 9934 ........................................................................ 9935 ........................................................................ 9936 ........................................................................ 9937 ........................................................................ 9938 ........................................................................ 9939 ........................................................................ 9940 ........................................................................ 9941 ........................................................................ 9942 ........................................................................ 9943 ........................................................................ 9944 ........................................................................ 9945 ........................................................................ 9946 ........................................................................ 9947 ........................................................................ 9948 ........................................................................ 9949 ........................................................................ 9950 ........................................................................ 9951 ........................................................................ 9952 ........................................................................ 9953 ........................................................................ 9954 ........................................................................ 9955 ........................................................................ 9956 ........................................................................ 9957 ........................................................................ 9958 ........................................................................ 9959 ........................................................................ 9960 ........................................................................ 9961 ........................................................................ 9962 ........................................................................ 9963 ........................................................................ 9964 ........................................................................ 9965 ........................................................................ 9966 ........................................................................ 9967 ........................................................................ 9968 ........................................................................ 9969 ........................................................................ 9970 ........................................................................ 9971 ........................................................................ 9972 ........................................................................ 9973 ........................................................................ 9974 ........................................................................ 9975 ........................................................................ 9976 ........................................................................ 9977 ........................................................................ 9978 ........................................................................ 9979 ........................................................................ 9980 ........................................................................ 9981 ........................................................................ 9982 ........................................................................ 9983 ........................................................................ 9984 ........................................................................ 9985 ........................................................................ 9986 ........................................................................ 9987 ........................................................................ 9988 ........................................................................ 9989 ........................................................................ 9990 ........................................................................ 9991 ........................................................................ 9992 ........................................................................ 9993 ........................................................................ 9994 ........................................................................ 9995 ........................................................................ 9996 ........................................................................ 9997 ........................................................................ 9998 ........................................................................ 9999 ........................................................................ 10000 ........................................................................ 10001 ........................................................................ 10002 ........................................................................ 10003 ........................................................................ 10004 ........................................................................ 10005 ........................................................................ 10006 ........................................................................ 10007 ........................................................................ 10008 ........................................................................ 10009 ........................................................................ 10010 ........................................................................ 10011 ........................................................................ 10012 ........................................................................ 10013 ........................................................................ 10014 ........................................................................ 10015 ........................................................................ 10016 ........................................................................ 10017 ........................................................................ 10018 ........................................................................ 10019 ........................................................................ 10020 ........................................................................ 10021 ........................................................................ 10022 ........................................................................ 10023 ........................................................................ 10024 ........................................................................ 10025 ........................................................................ 10026 ........................................................................ 10027 ........................................................................ 10028 ........................................................................ 10029 ........................................................................ 10030 ........................................................................ 10031 ........................................................................ 10032 ........................................................................ 10033 ........................................................................ 10034 ........................................................................ 10035 ........................................................................ 10036 ........................................................................ 10037 ........................................................................ 10038 ........................................................................ 10039 ........................................................................ 10040 ........................................................................ 10041 ........................................................................ 10042 ........................................................................ 10043 ........................................................................ 10044 ........................................................................ 10045 ........................................................................ 10046 ........................................................................ 10047 ........................................................................ 10048 ........................................................................ 10049 ........................................................................ 10050 ........................................................................ 10051 ........................................................................ 10052 ........................................................................ 10053 ........................................................................ 10054 ........................................................................ 10055 ........................................................................ 10056 ........................................................................ 10057 ........................................................................ 10058 ........................................................................ 10059 ........................................................................ 10060 ........................................................................ 10061 ........................................................................ 10062 ........................................................................ 10063 ........................................................................ 10064 ........................................................................ 10065 ........................................................................ 10066 ........................................................................ 10067 ........................................................................ 10068 ........................................................................ 10069 ........................................................................ 10070 ........................................................................ 10071 ........................................................................ 10072 ........................................................................ 10073 ........................................................................ 10074 ........................................................................ 10075 ........................................................................ 10076 ........................................................................ 10077 ........................................................................ 10078 ........................................................................ 10079 ........................................................................ 10080 ........................................................................ 10081 ........................................................................ 10082 ........................................................................ 10083 ........................................................................ 10084 ........................................................................ 10085 ........................................................................ 10086 ........................................................................ 10087 ........................................................................ 10088 ........................................................................ 10089 ........................................................................ 10090 ........................................................................ 10091 ........................................................................ 10092 ........................................................................ 10093 ........................................................................ 10094 ........................................................................ 10095 ........................................................................ 10096 ........................................................................ 10097 ........................................................................ 10098 ........................................................................ 10099 ........................................................................ 10100 ........................................................................ 10101 ........................................................................ 10102 ........................................................................ 10103 ........................................................................ 10104 ........................................................................ 10105 ........................................................................ 10106 ........................................................................ 10107 ........................................................................ 10108 ........................................................................ 10109 ........................................................................ 10110 ........................................................................ 10111 ........................................................................ 10112 ........................................................................ 10113 ........................................................................ 10114 ........................................................................ 10115 ........................................................................ 10116 ........................................................................ 10117 ........................................................................ 10118 ........................................................................ 10119 ........................................................................ 10120 ........................................................................ 10121 ........................................................................ 10122 ........................................................................ 10123 ........................................................................ 10124 ........................................................................ 10125 ........................................................................ 10126 ........................................................................ 10127 ........................................................................ 10128 ........................................................................ 10129 ........................................................................ 10130 ........................................................................ 10131 ........................................................................ 10132 ........................................................................ 10133 ........................................................................ 10134 ........................................................................ 10135 ........................................................................ 10136 ........................................................................ 10137 ........................................................................ 10138 ........................................................................ 10139 ........................................................................ 10140 ........................................................................ 10141 ........................................................................ 10142 ........................................................................ 10143 ........................................................................ 10144 ........................................................................ 10145 ........................................................................ 10146 ........................................................................ 10147 ........................................................................ 10148 ........................................................................ 10149 ........................................................................ 10150 ........................................................................ 10151 ........................................................................ 10152 ........................................................................ 10153 ........................................................................ 10154 ........................................................................ 10155 ........................................................................ 10156 ........................................................................ 10157 ........................................................................ 10158 ........................................................................ 10159 ........................................................................ 10160 ........................................................................ 10161 ........................................................................ 10162 ........................................................................ 10163 ........................................................................ 10164 ........................................................................ 10165 ........................................................................ 10166 ........................................................................ 10167 ........................................................................ 10168 ........................................................................ 10169 ........................................................................ 10170 ........................................................................ 10171 ........................................................................ 10172 ........................................................................ 10173 ........................................................................ 10174 ........................................................................ 10175 ........................................................................ 10176 ........................................................................ 10177 ........................................................................ 10178 ........................................................................ 10179 ........................................................................ 10180 ........................................................................ 10181 ........................................................................ 10182 ........................................................................ 10183 ........................................................................ 10184 ........................................................................ 10185 ........................................................................ 10186 ........................................................................ 10187 ........................................................................ 10188 ........................................................................ 10189 ........................................................................ 10190 ........................................................................ 10191 ........................................................................ 10192 ........................................................................ 10193 ........................................................................ 10194 ........................................................................ 10195 ........................................................................ 10196 ........................................................................ 10197 ........................................................................ 10198 ........................................................................ 10199 ........................................................................ 10200 ........................................................................ 10201 ........................................................................ 10202 ........................................................................ 10203 ........................................................................ 10204 ........................................................................ 10205 ........................................................................ 10206 ........................................................................ 10207 ........................................................................ 10208 ........................................................................ 10209 ........................................................................ 10210 ........................................................................ 10211 ........................................................................ 10212 ........................................................................ 10213 ........................................................................ 10214 ........................................................................ 10215 ........................................................................ 10216 ........................................................................ 10217 ........................................................................ 10218 ........................................................................ 10219 ........................................................................ 10220 ........................................................................ 10221 ........................................................................ 10222 ........................................................................ 10223 ........................................................................ 10224 ........................................................................ 10225 ........................................................................ 10226 ........................................................................ 10227 ........................................................................ 10228 ........................................................................ 10229 ........................................................................ 10230 ........................................................................ 10231 ........................................................................ 10232 ........................................................................ 10233 ........................................................................ 10234 ........................................................................ 10235 ........................................................................ 10236 ........................................................................ 10237 ........................................................................ 10238 ........................................................................ 10239 ........................................................................ 10240 ........................................................................ 10241 ........................................................................ 10242 ........................................................................ 10243 ........................................................................ 10244 ........................................................................ 10245 ........................................................................ 10246 ........................................................................ 10247 ........................................................................ 10248 ........................................................................ 10249 ........................................................................ 10250 ........................................................................ 10251 ........................................................................ 10252 ........................................................................ 10253 ........................................................................ 10254 ........................................................................ 10255 ........................................................................ 10256 ........................................................................ 10257 ........................................................................ 10258 ........................................................................ 10259 ........................................................................ 10260 ........................................................................ 10261 ........................................................................ 10262 ........................................................................ 10263 ........................................................................ 10264 ........................................................................ 10265 ........................................................................ 10266 ........................................................................ 10267 ........................................................................ 10268 ........................................................................ 10269 ........................................................................ 10270 ........................................................................ 10271 ........................................................................ 10272 ........................................................................ 10273 ........................................................................ 10274 ........................................................................ 10275 ........................................................................ 10276 ........................................................................ 10277 ........................................................................ 10278 ........................................................................ 10279 ........................................................................ 10280 ........................................................................ 10281 ........................................................................ 10282 ........................................................................ 10283 ........................................................................ 10284 ........................................................................ 10285 ........................................................................ 10286 ........................................................................ 10287 ........................................................................ 10288 ........................................................................ 10289 ........................................................................ 10290 ........................................................................ 10291 ........................................................................ 10292 ........................................................................ 10293 ........................................................................ 10294 ........................................................................ 10295 ........................................................................ 10296 ........................................................................ 10297 ........................................................................ 10298 ........................................................................ 10299 ........................................................................ 10300 ........................................................................ 10301 ........................................................................ 10302 ........................................................................ 10303 ........................................................................ 10304 ........................................................................ 10305 ........................................................................ 10306 ........................................................................ 10307 ........................................................................ 10308 ........................................................................ 10309 ........................................................................ 10310 ........................................................................ 10311 ........................................................................ 10312 ........................................................................ 10313 ........................................................................ 10314 ........................................................................ 10315 ........................................................................ 10316 ........................................................................ 10317 ........................................................................ 10318 ........................................................................ 10319 ........................................................................ 10320 ........................................................................ 10321 ........................................................................ 10322 ........................................................................ 10323 ........................................................................ 10324 ........................................................................ 10325 ........................................................................ 10326 ........................................................................ 10327 ........................................................................ 10328 ........................................................................ 10329 ........................................................................ 10330 ........................................................................ 10331 ........................................................................ 10332 ........................................................................ 10333 ........................................................................ 10334 ........................................................................ 10335 ........................................................................ 10336 ........................................................................ 10337 ........................................................................ 10338 ........................................................................ 10339 ........................................................................ 10340 ........................................................................ 10341 ........................................................................ 10342 ........................................................................ 10343 ........................................................................ 10344 ........................................................................ 10345 ........................................................................ 10346 ........................................................................ 10347 ........................................................................ 10348 ........................................................................ 10349 ........................................................................ 10350 ........................................................................ 10351 ........................................................................ 10352 ........................................................................ 10353 ........................................................................ 10354 ........................................................................ 10355 ........................................................................ 10356 ........................................................................ 10357 ........................................................................ 10358 ........................................................................ 10359 ........................................................................ 10360 ........................................................................ 10361 ........................................................................ 10362 ........................................................................ 10363 ........................................................................ 10364 ........................................................................ 10365 ........................................................................ 10366 ........................................................................ 10367 ........................................................................ 10368 ........................................................................ 10369 ........................................................................ 10370 ........................................................................ 10371 ........................................................................ 10372 ........................................................................ 10373 ........................................................................ 10374 ........................................................................ 10375 ........................................................................ 10376 ........................................................................ 10377 ........................................................................ 10378 ........................................................................ 10379 ........................................................................ 10380 ........................................................................ 10381 ........................................................................ 10382 ........................................................................ 10383 ........................................................................ 10384 ........................................................................ 10385 ........................................................................ 10386 ........................................................................ 10387 ........................................................................ 10388 ........................................................................ 10389 ........................................................................ 10390 ........................................................................ 10391 ........................................................................ 10392 ........................................................................ 10393 ........................................................................ 10394 ........................................................................ 10395 ........................................................................ 10396 ........................................................................ 10397 ........................................................................ 10398 ........................................................................ 10399 ........................................................................ 10400 ........................................................................ 10401 ........................................................................ 10402 ........................................................................ 10403 ........................................................................ 10404 ........................................................................ 10405 ........................................................................ 10406 ........................................................................ 10407 ........................................................................ 10408 ........................................................................ 10409 ........................................................................ 10410 ........................................................................ 10411 ........................................................................ 10412 ........................................................................ 10413 ........................................................................ 10414 ........................................................................ 10415 ........................................................................ 10416 ........................................................................ 10417 ........................................................................ 10418 ........................................................................ 10419 ........................................................................ 10420 ........................................................................ 10421 ........................................................................ 10422 ........................................................................ 10423 ........................................................................ 10424 ........................................................................ 10425 ........................................................................ 10426 ........................................................................ 10427 ........................................................................ 10428 ........................................................................ 10429 ........................................................................ 10430 ........................................................................ 10431 ........................................................................ 10432 ........................................................................ 10433 ........................................................................ 10434 ........................................................................ 10435 ........................................................................ 10436 ........................................................................ 10437 ........................................................................ 10438 ........................................................................ 10439 ........................................................................ 10440 ........................................................................ 10441 ........................................................................ 10442 ........................................................................ 10443 ........................................................................ 10444 ........................................................................ 10445 ........................................................................ 10446 ........................................................................ 10447 ........................................................................ 10448 ........................................................................ 10449 ........................................................................ 10450 ........................................................................ 10451 ........................................................................ 10452 ........................................................................ 10453 ........................................................................ 10454 ........................................................................ 10455 ........................................................................ 10456 ........................................................................ 10457 ........................................................................ 10458 ........................................................................ 10459 ........................................................................ 10460 ........................................................................ 10461 ........................................................................ 10462 ........................................................................ 10463 ........................................................................ 10464 ........................................................................ 10465 ........................................................................ 10466 ........................................................................ 10467 ........................................................................ 10468 ........................................................................ 10469 ........................................................................ 10470 ........................................................................ 10471 ........................................................................ 10472 ........................................................................ 10473 ........................................................................ 10474 ........................................................................ 10475 ........................................................................ 10476 ........................................................................ 10477 ........................................................................ 10478 ........................................................................ 10479 ........................................................................ 10480 ........................................................................ 10481 ........................................................................ 10482 ........................................................................ 10483 ........................................................................ 10484 ........................................................................ 10485 ........................................................................ 10486 ........................................................................ 10487 ........................................................................ 10488 ........................................................................ 10489 ........................................................................ 10490 ........................................................................ 10491 ........................................................................ 10492 ........................................................................ 10493 ........................................................................ 10494 ........................................................................ 10495 ........................................................................ 10496 ........................................................................ 10497 ........................................................................ 10498 ........................................................................ 10499 ........................................................................ 10500 ........................................................................ 10501 ........................................................................ 10502 ........................................................................ 10503 ........................................................................ 10504 ........................................................................ 10505 ........................................................................ 10506 ........................................................................ 10507 ........................................................................ 10508 ........................................................................ 10509 ........................................................................ 10510 ........................................................................ 10511 ........................................................................ 10512 ........................................................................ 10513 ........................................................................ 10514 ........................................................................ 10515 ........................................................................ 10516 ........................................................................ 10517 ........................................................................ 10518 ........................................................................ 10519 ........................................................................ 10520 ........................................................................ 10521 ........................................................................ 10522 ........................................................................ 10523 ........................................................................ 10524 ........................................................................ 10525 ........................................................................ 10526 ........................................................................ 10527 ........................................................................ 10528 ........................................................................ 10529 ........................................................................ 10530 ........................................................................ 10531 ........................................................................ 10532 ........................................................................ 10533 ........................................................................ 10534 ........................................................................ 10535 ........................................................................ 10536 ........................................................................ 10537 ........................................................................ 10538 ........................................................................ 10539 ........................................................................ 10540 ........................................................................ 10541 ........................................................................ 10542 ........................................................................ 10543 ........................................................................ 10544 ........................................................................ 10545 ........................................................................ 10546 ........................................................................ 10547 ........................................................................ 10548 ........................................................................ 10549 ........................................................................ 10550 ........................................................................ 10551 ........................................................................ 10552 ........................................................................ 10553 ........................................................................ 10554 ........................................................................ 10555 ........................................................................ 10556 ........................................................................ 10557 ........................................................................ 10558 ........................................................................ 10559 ........................................................................ 10560 ........................................................................ 10561 ........................................................................ 10562 ........................................................................ 10563 ........................................................................ 10564 ........................................................................ 10565 ........................................................................ 10566 ........................................................................ 10567 ........................................................................ 10568 ........................................................................ 10569 ........................................................................ 10570 ........................................................................ 10571 ........................................................................ 10572 ........................................................................ 10573 ........................................................................ 10574 ........................................................................ 10575 ........................................................................ 10576 ........................................................................ 10577 ........................................................................ 10578 ........................................................................ 10579 ........................................................................ 10580 ........................................................................ 10581 ........................................................................ 10582 ........................................................................ 10583 ........................................................................ 10584 ........................................................................ 10585 ........................................................................ 10586 ........................................................................ 10587 ........................................................................ 10588 ........................................................................ 10589 ........................................................................ 10590 ........................................................................ 10591 ........................................................................ 10592 ........................................................................ 10593 ........................................................................ 10594 ........................................................................ 10595 ........................................................................ 10596 ........................................................................ 10597 ........................................................................ 10598 ........................................................................ 10599 ........................................................................ 10600 ........................................................................ 10601 ........................................................................ 10602 ........................................................................ 10603 ........................................................................ 10604 ........................................................................ 10605 ........................................................................ 10606 ........................................................................ 10607 ........................................................................ 10608 ........................................................................ 10609 ........................................................................ 10610 ........................................................................ 10611 ........................................................................ 10612 ........................................................................ 10613 ........................................................................ 10614 ........................................................................ 10615 ........................................................................ 10616 ........................................................................ 10617 ........................................................................ 10618 ........................................................................ 10619 ........................................................................ 10620 ........................................................................ 10621 ........................................................................ 10622 ........................................................................ 10623 ........................................................................ 10624 ........................................................................ 10625 ........................................................................ 10626 ........................................................................ 10627 ........................................................................ 10628 ........................................................................ 10629 ........................................................................ 10630 ........................................................................ 10631 ........................................................................ 10632 ........................................................................ 10633 ........................................................................ 10634 ........................................................................ 10635 ........................................................................ 10636 ........................................................................ 10637 ........................................................................ 10638 ........................................................................ 10639 ........................................................................ 10640 ........................................................................ 10641 ........................................................................ 10642 ........................................................................ 10643 ........................................................................ 10644 ........................................................................ 10645 ........................................................................ 10646 ........................................................................ 10647 ........................................................................ 10648 ........................................................................ 10649 ........................................................................ 10650 ........................................................................ 10651 ........................................................................ 10652 ........................................................................ 10653 ........................................................................ 10654 ........................................................................ 10655 ........................................................................ 10656 ........................................................................ 10657 ........................................................................ 10658 ........................................................................ 10659 ........................................................................ 10660 ........................................................................ 10661 ........................................................................ 10662 ........................................................................ 10663 ........................................................................ 10664 ........................................................................ 10665 ........................................................................ 10666 ........................................................................ 10667 ........................................................................ 10668 ........................................................................ 10669 ........................................................................ 10670 ........................................................................ 10671 ........................................................................ 10672 ........................................................................ 10673 ........................................................................ 10674 ........................................................................ 10675 ........................................................................ 10676 ........................................................................ 10677 ........................................................................ 10678 ........................................................................ 10679 ........................................................................ 10680 ........................................................................ 10681 ........................................................................ 10682 ........................................................................ 10683 ........................................................................ 10684 ........................................................................ 10685 ........................................................................ 10686 ........................................................................ 10687 ........................................................................ 10688 ........................................................................ 10689 ........................................................................ 10690 ........................................................................ 10691 ........................................................................ 10692 ........................................................................ 10693 ........................................................................ 10694 ........................................................................ 10695 ........................................................................ 10696 ........................................................................ 10697 ........................................................................ 10698 ........................................................................ 10699 ........................................................................ 10700 ........................................................................ 10701 ........................................................................ 10702 ........................................................................ 10703 ........................................................................ 10704 ........................................................................ 10705 ........................................................................ 10706 ........................................................................ 10707 ........................................................................ 10708 ........................................................................ 10709 ........................................................................ 10710 ........................................................................ 10711 ........................................................................ 10712 ........................................................................ 10713 ........................................................................ 10714 ........................................................................ 10715 ........................................................................ 10716 ........................................................................ 10717 ........................................................................ 10718 ........................................................................ 10719 ........................................................................ 10720 ........................................................................ 10721 ........................................................................ 10722 ........................................................................ 10723 ........................................................................ 10724 ........................................................................ 10725 ........................................................................ 10726 ........................................................................ 10727 ........................................................................ 10728 ........................................................................ 10729 ........................................................................ 10730 ........................................................................ 10731 ........................................................................ 10732 ........................................................................ 10733 ........................................................................ 10734 ........................................................................ 10735 ........................................................................ 10736 ........................................................................ 10737 ........................................................................ 10738 ........................................................................ 10739 ........................................................................ 10740 ........................................................................ 10741 ........................................................................ 10742 ........................................................................ 10743 ........................................................................ 10744 ........................................................................ 10745 ........................................................................ 10746 ........................................................................ 10747 ........................................................................ 10748 ........................................................................ 10749 ........................................................................ 10750 ........................................................................ 10751 ........................................................................ 10752 ........................................................................ 10753 ........................................................................ 10754 ........................................................................ 10755 ........................................................................ 10756 ........................................................................ 10757 ........................................................................ 10758 ........................................................................ 10759 ........................................................................ 10760 ........................................................................ 10761 ........................................................................ 10762 ........................................................................ 10763 ........................................................................ 10764 ........................................................................ 10765 ........................................................................ 10766 ........................................................................ 10767 ........................................................................ 10768 ........................................................................ 10769 ........................................................................ 10770 ........................................................................ 10771 ........................................................................ 10772 ........................................................................ 10773 ........................................................................ 10774 ........................................................................ 10775 ........................................................................ 10776 ........................................................................ 10777 ........................................................................ 10778 ........................................................................ 10779 ........................................................................ 10780 ........................................................................ 10781 ........................................................................ 10782 ........................................................................ 10783 ........................................................................ 10784 ........................................................................ 10785 ........................................................................ 10786 ........................................................................ 10787 ........................................................................ 10788 ........................................................................ 10789 ........................................................................ 10790 ........................................................................ 10791 ........................................................................ 10792 ........................................................................ 10793 ........................................................................ 10794 ........................................................................ 10795 ........................................................................ 10796 ........................................................................ 10797 ........................................................................ 10798 ........................................................................ 10799 ........................................................................ 10800 ........................................................................ 10801 ........................................................................ 10802 ........................................................................ 10803 ........................................................................ 10804 ........................................................................ 10805 ........................................................................ 10806 ........................................................................ 10807 ........................................................................ 10808 ........................................................................ 10809 ........................................................................ 10810 ........................................................................ 10811 ........................................................................ 10812 ........................................................................ 10813 ........................................................................ 10814 ........................................................................ 10815 ........................................................................ 10816 ........................................................................ 10817 ........................................................................ 10818 ........................................................................ 10819 ........................................................................ 10820 ........................................................................ 10821 ........................................................................ 10822 ........................................................................ 10823 ........................................................................ 10824 ........................................................................ 10825 ........................................................................ 10826 ........................................................................ 10827 ........................................................................ 10828 ........................................................................ 10829 ........................................................................ 10830 ........................................................................ 10831 ........................................................................ 10832 ........................................................................ 10833 ........................................................................ 10834 ........................................................................ 10835 ........................................................................ 10836 ........................................................................ 10837 ........................................................................ 10838 ........................................................................ 10839 ........................................................................ 10840 ........................................................................ 10841 ........................................................................ 10842 ........................................................................ 10843 ........................................................................ 10844 ........................................................................ 10845 ........................................................................ 10846 ........................................................................ 10847 ........................................................................ 10848 ........................................................................ 10849 ........................................................................ 10850 ........................................................................ 10851 ........................................................................ 10852 ........................................................................ 10853 ........................................................................ 10854 ........................................................................ 10855 ........................................................................ 10856 ........................................................................ 10857 ........................................................................ 10858 ........................................................................ 10859 ........................................................................ 10860 ........................................................................ 10861 ........................................................................ 10862 ........................................................................ 10863 ........................................................................ 10864 ........................................................................ 10865 ........................................................................ 10866 ........................................................................ 10867 ........................................................................ 10868 ........................................................................ 10869 ........................................................................ 10870 ........................................................................ 10871 ........................................................................ 10872 ........................................................................ 10873 ........................................................................ 10874 ........................................................................ 10875 ........................................................................ 10876 ........................................................................ 10877 ........................................................................ 10878 ........................................................................ 10879 ........................................................................ 10880 ........................................................................ 10881 ........................................................................ 10882 ........................................................................ 10883 ........................................................................ 10884 ........................................................................ 10885 ........................................................................ 10886 ........................................................................ 10887 ........................................................................ 10888 ........................................................................ 10889 ........................................................................ 10890 ........................................................................ 10891 ........................................................................ 10892 ........................................................................ 10893 ........................................................................ 10894 ........................................................................ 10895 ........................................................................ 10896 ........................................................................ 10897 ........................................................................ 10898 ........................................................................ 10899 ........................................................................ 10900 ........................................................................ 10901 ........................................................................ 10902 ........................................................................ 10903 ........................................................................ 10904 ........................................................................ 10905 ........................................................................ 10906 ........................................................................ 10907 ........................................................................ 10908 ........................................................................ 10909 ........................................................................ 10910 ........................................................................ 10911 ........................................................................ 10912 ........................................................................ 10913 ........................................................................ 10914 ........................................................................ 10915 ........................................................................ 10916 ........................................................................ 10917 ........................................................................ 10918 ........................................................................ 10919 ........................................................................ 10920 ........................................................................ 10921 ........................................................................ 10922 ........................................................................ 10923 ........................................................................ 10924 ........................................................................ 10925 ........................................................................ 10926 ........................................................................ 10927 ........................................................................ 10928 ........................................................................ 10929 ........................................................................ 10930 ........................................................................ 10931 ........................................................................ 10932 ........................................................................ 10933 ........................................................................ 10934 ........................................................................ 10935 ........................................................................ 10936 ........................................................................ 10937 ........................................................................ 10938 ........................................................................ 10939 ........................................................................ 10940 ........................................................................ 10941 ........................................................................ 10942 ........................................................................ 10943 ........................................................................ 10944 ........................................................................ 10945 ........................................................................ 10946 ........................................................................ 10947 ........................................................................ 10948 ........................................................................ 10949 ........................................................................ 10950 ........................................................................ 10951 ........................................................................ 10952 ........................................................................ 10953 ........................................................................ 10954 ........................................................................ 10955 ........................................................................ 10956 ........................................................................ 10957 ........................................................................ 10958 ........................................................................ 10959 ........................................................................ 10960 ........................................................................ 10961 ........................................................................ 10962 ........................................................................ 10963 ........................................................................ 10964 ........................................................................ 10965 ........................................................................ 10966 ........................................................................ 10967 ........................................................................ 10968 ........................................................................ 10969 ........................................................................ 10970 ........................................................................ 10971 ........................................................................ 10972 ........................................................................ 10973 ........................................................................ 10974 ........................................................................ 10975 ........................................................................ 10976 ........................................................................ 10977 ........................................................................ 10978 ........................................................................ 10979 ........................................................................ 10980 ........................................................................ 10981 ........................................................................ 10982 ........................................................................ 10983 ........................................................................ 10984 ........................................................................ 10985 ........................................................................ 10986 ........................................................................ 10987 ........................................................................ 10988 ........................................................................ 10989 ........................................................................ 10990 ........................................................................ 10991 ........................................................................ 10992 ........................................................................ 10993 ........................................................................ 10994 ........................................................................ 10995 ........................................................................ 10996 ........................................................................ 10997 ........................................................................ 10998 ........................................................................ 10999 ........................................................................ 11000 ........................................................................ 11001 ........................................................................ 11002 ........................................................................ 11003 ........................................................................ 11004 ........................................................................ 11005 ........................................................................ 11006 ........................................................................ 11007 ........................................................................ 11008 ........................................................................ 11009 ........................................................................ 11010 ........................................................................ 11011 ........................................................................ 11012 ........................................................................ 11013 ........................................................................ 11014 ........................................................................ 11015 ........................................................................ 11016 ........................................................................ 11017 ........................................................................ 11018 ........................................................................ 11019 ........................................................................ 11020 ........................................................................ 11021 ........................................................................ 11022 ........................................................................ 11023 ........................................................................ 11024 ........................................................................ 11025 ........................................................................ 11026 ........................................................................ 11027 ........................................................................ 11028 ........................................................................ 11029 ........................................................................ 11030 ........................................................................ 11031 ........................................................................ 11032 ........................................................................ 11033 ........................................................................ 11034 ........................................................................ 11035 ........................................................................ 11036 ........................................................................ 11037 ........................................................................ 11038 ........................................................................ 11039 ........................................................................ 11040 ........................................................................ 11041 ........................................................................ 11042 ........................................................................ 11043 ........................................................................ 11044 ........................................................................ 11045 ........................................................................ 11046 ........................................................................ 11047 ........................................................................ 11048 ........................................................................ 11049 ........................................................................ 11050 ........................................................................ 11051 ........................................................................ 11052 ........................................................................ 11053 ........................................................................ 11054 ........................................................................ 11055 ........................................................................ 11056 ........................................................................ 11057 ........................................................................ 11058 ........................................................................ 11059 ........................................................................ 11060 ........................................................................ 11061 ........................................................................ 11062 ........................................................................ 11063 ........................................................................ 11064 ........................................................................ 11065 ........................................................................ 11066 ........................................................................ 11067 ........................................................................ 11068 ........................................................................ 11069 ........................................................................ 11070 ........................................................................ 11071 ........................................................................ 11072 ........................................................................ 11073 ........................................................................ 11074 ........................................................................ 11075 ........................................................................ 11076 ........................................................................ 11077 ........................................................................ 11078 ........................................................................ 11079 ........................................................................ 11080 ........................................................................ 11081 ........................................................................ 11082 ........................................................................ 11083 ........................................................................ 11084 ........................................................................ 11085 ........................................................................ 11086 ........................................................................ 11087 ........................................................................ 11088 ........................................................................ 11089 ........................................................................ 11090 ........................................................................ 11091 ........................................................................ 11092 ........................................................................ 11093 ........................................................................ 11094 ........................................................................ 11095 ........................................................................ 11096 ........................................................................ 11097 ........................................................................ 11098 ........................................................................ 11099 ........................................................................ 11100 ........................................................................ 11101 ........................................................................ 11102 ........................................................................ 11103 ........................................................................ 11104 ........................................................................ 11105 ........................................................................ 11106 ........................................................................ 11107 ........................................................................ 11108 ........................................................................ 11109 ........................................................................ 11110 ........................................................................ 11111 ........................................................................ 11112 ........................................................................ 11113 ........................................................................ 11114 ........................................................................ 11115 ........................................................................ 11116 ........................................................................ 11117 ........................................................................ 11118 ........................................................................ 11119 ........................................................................ 11120 ........................................................................ 11121 ........................................................................ 11122 ........................................................................ 11123 ........................................................................ 11124 ........................................................................ 11125 ........................................................................ 11126 ........................................................................ 11127 ........................................................................ 11128 ........................................................................ 11129 ........................................................................ 11130 ........................................................................ 11131 ........................................................................ 11132 ........................................................................ 11133 ........................................................................ 11134 ........................................................................ 11135 ........................................................................ 11136 ........................................................................ 11137 ........................................................................ 11138 ........................................................................ 11139 ........................................................................ 11140 ........................................................................ 11141 ........................................................................ 11142 ........................................................................ 11143 ........................................................................ 11144 ........................................................................ 11145 ........................................................................ 11146 ........................................................................ 11147 ........................................................................ 11148 ........................................................................ 11149 ........................................................................ 11150 ........................................................................ 11151 ........................................................................ 11152 ........................................................................ 11153 ........................................................................ 11154 ........................................................................ 11155 ........................................................................ 11156 ........................................................................ 11157 ........................................................................ 11158 ........................................................................ 11159 ........................................................................ 11160 ........................................................................ 11161 ........................................................................ 11162 ........................................................................ 11163 ........................................................................ 11164 ........................................................................ 11165 ........................................................................ 11166 ........................................................................ 11167 ........................................................................ 11168 ........................................................................ 11169 ........................................................................ 11170 ........................................................................ 11171 ........................................................................ 11172 ........................................................................ 11173 ........................................................................ 11174 ........................................................................ 11175 ........................................................................ 11176 ........................................................................ 11177 ........................................................................ 11178 ........................................................................ 11179 ........................................................................ 11180 ........................................................................ 11181 ........................................................................ 11182 ........................................................................ 11183 ........................................................................ 11184 ........................................................................ 11185 ........................................................................ 11186 ........................................................................ 11187 ........................................................................ 11188 ........................................................................ 11189 ........................................................................ 11190 ........................................................................ 11191 ........................................................................ 11192 ........................................................................ 11193 ........................................................................ 11194 ........................................................................ 11195 ........................................................................ 11196 ........................................................................ 11197 ........................................................................ 11198 ........................................................................ 11199 ........................................................................ 11200 ........................................................................ 11201 ........................................................................ 11202 ........................................................................ 11203 ........................................................................ 11204 ........................................................................ 11205 ........................................................................ 11206 ........................................................................ 11207 ........................................................................ 11208 ........................................................................ 11209 ........................................................................ 11210 ........................................................................ 11211 ........................................................................ 11212 ........................................................................ 11213 ........................................................................ 11214 ........................................................................ 11215 ........................................................................ 11216 ........................................................................ 11217 ........................................................................ 11218 ........................................................................ 11219 ........................................................................ 11220 ........................................................................ 11221 ........................................................................ 11222 ........................................................................ 11223 ........................................................................ 11224 ........................................................................ 11225 ........................................................................ 11226 ........................................................................ 11227 ........................................................................ 11228 ........................................................................ 11229 ........................................................................ 11230 ........................................................................ 11231 ........................................................................ 11232 ........................................................................ 11233 ........................................................................ 11234 ........................................................................ 11235 ........................................................................ 11236 ........................................................................ 11237 ........................................................................ 11238 ........................................................................ 11239 ........................................................................ 11240 ........................................................................ 11241 ........................................................................ 11242 ........................................................................ 11243 ........................................................................ 11244 ........................................................................ 11245 ........................................................................ 11246 ........................................................................ 11247 ........................................................................ 11248 ........................................................................ 11249 ........................................................................ 11250 ........................................................................ 11251 ........................................................................ 11252 ........................................................................ 11253 ........................................................................ 11254 ........................................................................ 11255 ........................................................................ 11256 ........................................................................ 11257 ........................................................................ 11258 ........................................................................ 11259 ........................................................................ 11260 ........................................................................ 11261 ........................................................................ 11262 ........................................................................ 11263 ........................................................................ 11264 ........................................................................ 11265 ........................................................................ 11266 ........................................................................ 11267 ........................................................................ 11268 ........................................................................ 11269 ........................................................................ 11270 ........................................................................ 11271 ........................................................................ 11272 ........................................................................ 11273 ........................................................................ 11274 ........................................................................ 11275 ........................................................................ 11276 ........................................................................ 11277 ........................................................................ 11278 ........................................................................ 11279 ........................................................................ 11280 ........................................................................ 11281 ........................................................................ 11282 ........................................................................ 11283 ........................................................................ 11284 ........................................................................ 11285 ........................................................................ 11286 ........................................................................ 11287 ........................................................................ 11288 ........................................................................ 11289 ........................................................................ 11290 ........................................................................ 11291 ........................................................................ 11292 ........................................................................ 11293 ........................................................................ 11294 ........................................................................ 11295 ........................................................................ 11296 ........................................................................ 11297 ........................................................................ 11298 ........................................................................ 11299 ........................................................................ 11300 ........................................................................ 11301 ........................................................................ 11302 ........................................................................ 11303 ........................................................................ 11304 ........................................................................ 11305 ........................................................................ 11306 ........................................................................ 11307 ........................................................................ 11308 ........................................................................ 11309 ........................................................................ 11310 ........................................................................ 11311 ........................................................................ 11312 ........................................................................ 11313 ........................................................................ 11314 ........................................................................ 11315 ........................................................................ 11316 ........................................................................ 11317 ........................................................................ 11318 ........................................................................ 11319 ........................................................................ 11320 ........................................................................ 11321 ........................................................................ 11322 ........................................................................ 11323 ........................................................................ 11324 ........................................................................ 11325 ........................................................................ 11326 ........................................................................ 11327 ........................................................................ 11328 ........................................................................ 11329 ........................................................................ 11330 ........................................................................ 11331 ........................................................................ 11332 ........................................................................ 11333 ........................................................................ 11334 ........................................................................ 11335 ........................................................................ 11336 ........................................................................ 11337 ........................................................................ 11338 ........................................................................ 11339 ........................................................................ 11340 ........................................................................ 11341 ........................................................................ 11342 ........................................................................ 11343 ........................................................................ 11344 ........................................................................ 11345 ........................................................................ 11346 ........................................................................ 11347 ........................................................................ 11348 ........................................................................ 11349 ........................................................................ 11350 ........................................................................ 11351 ........................................................................ 11352 ........................................................................ 11353 ........................................................................ 11354 ........................................................................ 11355 ........................................................................ 11356 ........................................................................ 11357 ........................................................................ 11358 ........................................................................ 11359 ........................................................................ 11360 ........................................................................ 11361 ........................................................................ 11362 ........................................................................ 11363 ........................................................................ 11364 ........................................................................ 11365 ........................................................................ 11366 ........................................................................ 11367 ........................................................................ 11368 ........................................................................ 11369 ........................................................................ 11370 ........................................................................ 11371 ........................................................................ 11372 ........................................................................ 11373 ........................................................................ 11374 ........................................................................ 11375 ........................................................................ 11376 ........................................................................ 11377 ........................................................................ 11378 ........................................................................ 11379 ........................................................................ 11380 ........................................................................ 11381 ........................................................................ 11382 ........................................................................ 11383 ........................................................................ 11384 ........................................................................ 11385 ........................................................................ 11386 ........................................................................ 11387 ........................................................................ 11388 ........................................................................ 11389 ........................................................................ 11390 ........................................................................ 11391 ........................................................................ 11392 ........................................................................ 11393 ........................................................................ 11394 ........................................................................ 11395 ........................................................................ 11396 ........................................................................ 11397 ........................................................................ 11398 ........................................................................ 11399 ........................................................................ 11400 ........................................................................ 11401 ........................................................................ 11402 ........................................................................ 11403 ........................................................................ 11404 ........................................................................ 11405 ........................................................................ 11406 ........................................................................ 11407 ........................................................................ 11408 ........................................................................ 11409 ........................................................................ 11410 ........................................................................ 11411 ........................................................................ 11412 ........................................................................ 11413 ........................................................................ 11414 ........................................................................ 11415 ........................................................................ 11416 ........................................................................ 11417 ........................................................................ 11418 ........................................................................ 11419 ........................................................................ 11420 ........................................................................ 11421 ........................................................................ 11422 ........................................................................ 11423 ........................................................................ 11424 ........................................................................ 11425 ........................................................................ 11426 ........................................................................ 11427 ........................................................................ 11428 ........................................................................ 11429 ........................................................................ 11430 ........................................................................ 11431 ........................................................................ 11432 ........................................................................ 11433 ........................................................................ 11434 ........................................................................ 11435 ........................................................................ 11436 ........................................................................ 11437 ........................................................................ 11438 ........................................................................ 11439 ........................................................................ 11440 ........................................................................ 11441 ........................................................................ 11442 ........................................................................ 11443 ........................................................................ 11444 ........................................................................ 11445 ........................................................................ 11446 ........................................................................ 11447 ........................................................................ 11448 ........................................................................ 11449 ........................................................................ 11450 ........................................................................ 11451 ........................................................................ 11452 ........................................................................ 11453 ........................................................................ 11454 ........................................................................ 11455 ........................................................................ 11456 ........................................................................ 11457 ........................................................................ 11458 ........................................................................ 11459 ........................................................................ 11460 ........................................................................ 11461 ........................................................................ 11462 ........................................................................ 11463 ........................................................................ 11464 ........................................................................ 11465 ........................................................................ 11466 ........................................................................ 11467 ........................................................................ 11468 ........................................................................ 11469 ........................................................................ 11470 ........................................................................ 11471 ........................................................................ 11472 ........................................................................ 11473 ........................................................................ 11474 ........................................................................ 11475 ........................................................................ 11476 ........................................................................ 11477 ........................................................................ 11478 ........................................................................ 11479 ........................................................................ 11480 ........................................................................ 11481 ........................................................................ 11482 ........................................................................ 11483 ........................................................................ 11484 ........................................................................ 11485 ........................................................................ 11486 ........................................................................ 11487 ........................................................................ 11488 ........................................................................ 11489 ........................................................................ 11490 ........................................................................ 11491 ........................................................................ 11492 ........................................................................ 11493 ........................................................................ 11494 ........................................................................ 11495 ........................................................................ 11496 ........................................................................ 11497 ........................................................................ 11498 ........................................................................ 11499 ........................................................................ 11500 ........................................................................ 11501 ........................................................................ 11502 ........................................................................ 11503 ........................................................................ 11504 ........................................................................ 11505 ........................................................................ 11506 ........................................................................ 11507 ........................................................................ 11508 ........................................................................ 11509 ........................................................................ 11510 ........................................................................ 11511 ........................................................................ 11512 ........................................................................ 11513 ........................................................................ 11514 ........................................................................ 11515 ........................................................................ 11516 ........................................................................ 11517 ........................................................................ 11518 ........................................................................ 11519 ........................................................................ 11520 ........................................................................ 11521 ........................................................................ 11522 ........................................................................ 11523 ........................................................................ 11524 ........................................................................ 11525 ........................................................................ 11526 ........................................................................ 11527 ........................................................................ 11528 ........................................................................ 11529 ........................................................................ 11530 ........................................................................ 11531 ........................................................................ 11532 ........................................................................ 11533 ........................................................................ 11534 ........................................................................ 11535 ........................................................................ 11536 ........................................................................ 11537 ........................................................................ 11538 ........................................................................ 11539 ........................................................................ 11540 ........................................................................ 11541 ........................................................................ 11542 ........................................................................ 11543 ........................................................................ 11544 ........................................................................ 11545 ........................................................................ 11546 ........................................................................ 11547 ........................................................................ 11548 ........................................................................ 11549 ........................................................................ 11550 ........................................................................ 11551 ........................................................................ 11552 ........................................................................ 11553 ........................................................................ 11554 ........................................................................ 11555 ........................................................................ 11556 ........................................................................ 11557 ........................................................................ 11558 ........................................................................ 11559 ........................................................................ 11560 ........................................................................ 11561 ........................................................................ 11562 ........................................................................ 11563 ........................................................................ 11564 ........................................................................ 11565 ........................................................................ 11566 ........................................................................ 11567 ........................................................................ 11568 ........................................................................ 11569 ........................................................................ 11570 ........................................................................ 11571 ........................................................................ 11572 ........................................................................ 11573 ........................................................................ 11574 ........................................................................ 11575 ........................................................................ 11576 ........................................................................ 11577 ........................................................................ 11578 ........................................................................ 11579 ........................................................................ 11580 ........................................................................ 11581 ........................................................................ 11582 ........................................................................ 11583 ........................................................................ 11584 ........................................................................ 11585 ........................................................................ 11586 ........................................................................ 11587 ........................................................................ 11588 ........................................................................ 11589 ........................................................................ 11590 ........................................................................ 11591 ........................................................................ 11592 ........................................................................ 11593 ........................................................................ 11594 ........................................................................ 11595 ........................................................................ 11596 ........................................................................ 11597 ........................................................................ 11598 ........................................................................ 11599 ........................................................................ 11600 ........................................................................ 11601 ........................................................................ 11602 ........................................................................ 11603 ........................................................................ 11604 ........................................................................ 11605 ........................................................................ 11606 ........................................................................ 11607 ........................................................................ 11608 ........................................................................ 11609 ........................................................................ 11610 ........................................................................ 11611 ........................................................................ 11612 ........................................................................ 11613 ........................................................................ 11614 ........................................................................ 11615 ........................................................................ 11616 ........................................................................ 11617 ........................................................................ 11618 ........................................................................ 11619 ........................................................................ 11620 ........................................................................ 11621 ........................................................................ 11622 ........................................................................ 11623 ........................................................................ 11624 ........................................................................ 11625 ........................................................................ 11626 ........................................................................ 11627 ........................................................................ 11628 ........................................................................ 11629 ........................................................................ 11630 ........................................................................ 11631 ........................................................................ 11632 ........................................................................ 11633 ........................................................................ 11634 ........................................................................ 11635 ........................................................................ 11636 ........................................................................ 11637 ........................................................................ 11638 ........................................................................ 11639 ........................................................................ 11640 ........................................................................ 11641 ........................................................................ 11642 ........................................................................ 11643 ........................................................................ 11644 ........................................................................ 11645 ........................................................................ 11646 ........................................................................ 11647 ........................................................................ 11648 ........................................................................ 11649 ........................................................................ 11650 ........................................................................ 11651 ........................................................................ 11652 ........................................................................ 11653 ........................................................................ 11654 ........................................................................ 11655 ........................................................................ 11656 ........................................................................ 11657 ........................................................................ 11658 ........................................................................ 11659 ........................................................................ 11660 ........................................................................ 11661 ........................................................................ 11662 ........................................................................ 11663 ........................................................................ 11664 ........................................................................ 11665 ........................................................................ 11666 ........................................................................ 11667 ........................................................................ 11668 ........................................................................ 11669 ........................................................................ 11670 ........................................................................ 11671 ........................................................................ 11672 ........................................................................ 11673 ........................................................................ 11674 ........................................................................ 11675 ........................................................................ 11676 ........................................................................ 11677 ........................................................................ 11678 ........................................................................ 11679 ........................................................................ 11680 ........................................................................ 11681 ........................................................................ 11682 ........................................................................ 11683 ........................................................................ 11684 ........................................................................ 11685 ........................................................................ 11686 ........................................................................ 11687 ........................................................................ 11688 ........................................................................ 11689 ........................................................................ 11690 ........................................................................ 11691 ........................................................................ 11692 ........................................................................ 11693 ........................................................................ 11694 ........................................................................ 11695 ........................................................................ 11696 ........................................................................ 11697 ........................................................................ 11698 ........................................................................ 11699 ........................................................................ 11700 ........................................................................ 11701 ........................................................................ 11702 ........................................................................ 11703 ........................................................................ 11704 ........................................................................ 11705 ........................................................................ 11706 ........................................................................ 11707 ........................................................................ 11708 ........................................................................ 11709 ........................................................................ 11710 ........................................................................ 11711 ........................................................................ 11712 ........................................................................ 11713 ........................................................................ 11714 ........................................................................ 11715 ........................................................................ 11716 ........................................................................ 11717 ........................................................................ 11718 ........................................................................ 11719 ........................................................................ 11720 ........................................................................ 11721 ........................................................................ 11722 ........................................................................ 11723 ........................................................................ 11724 ........................................................................ 11725 ........................................................................ 11726 ........................................................................ 11727 ........................................................................ 11728 ........................................................................ 11729 ........................................................................ 11730 ........................................................................ 11731 ........................................................................ 11732 ........................................................................ 11733 ........................................................................ 11734 ........................................................................ 11735 ........................................................................ 11736 ........................................................................ 11737 ........................................................................ 11738 ........................................................................ 11739 ........................................................................ 11740 ........................................................................ 11741 ........................................................................ 11742 ........................................................................ 11743 ........................................................................ 11744 ........................................................................ 11745 ........................................................................ 11746 ........................................................................ 11747 ........................................................................ 11748 ........................................................................ 11749 ........................................................................ 11750 ........................................................................ 11751 ........................................................................ 11752 ........................................................................ 11753 ........................................................................ 11754 ........................................................................ 11755 ........................................................................ 11756 ........................................................................ 11757 ........................................................................ 11758 ........................................................................ 11759 ........................................................................ 11760 ........................................................................ 11761 ........................................................................ 11762 ........................................................................ 11763 ........................................................................ 11764 ........................................................................ 11765 ........................................................................ 11766 ........................................................................ 11767 ........................................................................ 11768 ........................................................................ 11769 ........................................................................ 11770 ........................................................................ 11771 ........................................................................ 11772 ........................................................................ 11773 ........................................................................ 11774 ........................................................................ 11775 ........................................................................ 11776 ........................................................................ 11777 ........................................................................ 11778 ........................................................................ 11779 ........................................................................ 11780 ........................................................................ 11781 ........................................................................ 11782 ........................................................................ 11783 ........................................................................ 11784 ........................................................................ 11785 ........................................................................ 11786 ........................................................................ 11787 ........................................................................ 11788 ........................................................................ 11789 ........................................................................ 11790 ........................................................................ 11791 ........................................................................ 11792 ........................................................................ 11793 ........................................................................ 11794 ........................................................................ 11795 ........................................................................ 11796 ........................................................................ 11797 ........................................................................ 11798 ........................................................................ 11799 ........................................................................ 11800 ........................................................................ 11801 ........................................................................ 11802 ........................................................................ 11803 ........................................................................ 11804 ........................................................................ 11805 ........................................................................ 11806 ........................................................................ 11807 ........................................................................ 11808 ........................................................................ 11809 ........................................................................ 11810 ........................................................................ 11811 ........................................................................ 11812 ........................................................................ 11813 ........................................................................ 11814 ........................................................................ 11815 ........................................................................ 11816 ........................................................................ 11817 ........................................................................ 11818 ........................................................................ 11819 ........................................................................ 11820 ........................................................................ 11821 ........................................................................ 11822 ........................................................................ 11823 ........................................................................ 11824 ........................................................................ 11825 ........................................................................ 11826 ........................................................................ 11827 ........................................................................ 11828 ........................................................................ 11829 ........................................................................ 11830 ........................................................................ 11831 ........................................................................ 11832 ........................................................................ 11833 ........................................................................ 11834 ........................................................................ 11835 ........................................................................ 11836 ........................................................................ 11837 ........................................................................ 11838 ........................................................................ 11839 ........................................................................ 11840 ........................................................................ 11841 ........................................................................ 11842 ........................................................................ 11843 ........................................................................ 11844 ........................................................................ 11845 ........................................................................ 11846 ........................................................................ 11847 ........................................................................ 11848 ........................................................................ 11849 ........................................................................ 11850 ........................................................................ 11851 ........................................................................ 11852 ........................................................................ 11853 ........................................................................ 11854 ........................................................................ 11855 ........................................................................ 11856 ........................................................................ 11857 ........................................................................ 11858 ........................................................................ 11859 ........................................................................ 11860 ........................................................................ 11861 ........................................................................ 11862 ........................................................................ 11863 ........................................................................ 11864 ........................................................................ 11865 ........................................................................ 11866 ........................................................................ 11867 ........................................................................ 11868 ........................................................................ 11869 ........................................................................ 11870 ........................................................................ 11871 ........................................................................ 11872 ........................................................................ 11873 ........................................................................ 11874 ........................................................................ 11875 ........................................................................ 11876 ........................................................................ 11877 ........................................................................ 11878 ........................................................................ 11879 ........................................................................ 11880 ........................................................................ 11881 ........................................................................ 11882 ........................................................................ 11883 ........................................................................ 11884 ........................................................................ 11885 ........................................................................ 11886 ........................................................................ 11887 ........................................................................ 11888 ........................................................................ 11889 ........................................................................ 11890 ........................................................................ 11891 ........................................................................ 11892 ........................................................................ 11893 ........................................................................ 11894 ........................................................................ 11895 ........................................................................ 11896 ........................................................................ 11897 ........................................................................ 11898 ........................................................................ 11899 ........................................................................ 11900 ........................................................................ 11901 ........................................................................ 11902 ........................................................................ 11903 ........................................................................ 11904 ........................................................................ 11905 ........................................................................ 11906 ........................................................................ 11907 ........................................................................ 11908 ........................................................................ 11909 ........................................................................ 11910 ........................................................................ 11911 ........................................................................ 11912 ........................................................................ 11913 ........................................................................ 11914 ........................................................................ 11915 ........................................................................ 11916 ........................................................................ 11917 ........................................................................ 11918 ........................................................................ 11919 ........................................................................ 11920 ........................................................................ 11921 ........................................................................ 11922 ........................................................................ 11923 ........................................................................ 11924 ........................................................................ 11925 ........................................................................ 11926 ........................................................................ 11927 ........................................................................ 11928 ........................................................................ 11929 ........................................................................ 11930 ........................................................................ 11931 ........................................................................ 11932 ........................................................................ 11933 ........................................................................ 11934 ........................................................................ 11935 ........................................................................ 11936 ........................................................................ 11937 ........................................................................ 11938 ........................................................................ 11939 ........................................................................ 11940 ........................................................................ 11941 ........................................................................ 11942 ........................................................................ 11943 ........................................................................ 11944 ........................................................................ 11945 ........................................................................ 11946 ........................................................................ 11947 ........................................................................ 11948 ........................................................................ 11949 ........................................................................ 11950 ........................................................................ 11951 ........................................................................ 11952 ........................................................................ 11953 ........................................................................ 11954 ........................................................................ 11955 ........................................................................ 11956 ........................................................................ 11957 ........................................................................ 11958 ........................................................................ 11959 ........................................................................ 11960 ........................................................................ 11961 ........................................................................ 11962 ........................................................................ 11963 ........................................................................ 11964 ........................................................................ 11965 ........................................................................ 11966 ........................................................................ 11967 ........................................................................ 11968 ........................................................................ 11969 ........................................................................ 11970 ........................................................................ 11971 ........................................................................ 11972 ........................................................................ 11973 ........................................................................ 11974 ........................................................................ 11975 ........................................................................ 11976 ........................................................................ 11977 ........................................................................ 11978 ........................................................................ 11979 ........................................................................ 11980 ........................................................................ 11981 ........................................................................ 11982 ........................................................................ 11983 ........................................................................ 11984 ........................................................................ 11985 ........................................................................ 11986 ........................................................................ 11987 ........................................................................ 11988 ........................................................................ 11989 ........................................................................ 11990 ........................................................................ 11991 ........................................................................ 11992 ........................................................................ 11993 ........................................................................ 11994 ........................................................................ 11995 ........................................................................ 11996 ........................................................................ 11997 ........................................................................ 11998 ........................................................................ 11999 ........................................................................ 12000 ........................................................................ 12001 ........................................................................ 12002 ........................................................................ 12003 ........................................................................ 12004 ........................................................................ 12005 ........................................................................ 12006 ........................................................................ 12007 ........................................................................ 12008 ........................................................................ 12009 ........................................................................ 12010 ........................................................................ 12011 ........................................................................ 12012 ........................................................................ 12013 ........................................................................ 12014 ........................................................................ 12015 ........................................................................ 12016 ........................................................................ 12017 ........................................................................ 12018 ........................................................................ 12019 ........................................................................ 12020 ........................................................................ 12021 ........................................................................ 12022 ........................................................................ 12023 ........................................................................ 12024 ........................................................................ 12025 ........................................................................ 12026 ........................................................................ 12027 ........................................................................ 12028 ........................................................................ 12029 ........................................................................ 12030 ........................................................................ 12031 ........................................................................ 12032 ........................................................................ 12033 ........................................................................ 12034 ........................................................................ 12035 ........................................................................ 12036 ........................................................................ 12037 ........................................................................ 12038 ........................................................................ 12039 ........................................................................ 12040 ........................................................................ 12041 ........................................................................ 12042 ........................................................................ 12043 ........................................................................ 12044 ........................................................................ 12045 ........................................................................ 12046 ........................................................................ 12047 ........................................................................ 12048 ........................................................................ 12049 ........................................................................ 12050 ........................................................................ 12051 ........................................................................ 12052 ........................................................................ 12053 ........................................................................ 12054 ........................................................................ 12055 ........................................................................ 12056 ........................................................................ 12057 ........................................................................ 12058 ........................................................................ 12059 ........................................................................ 12060 ........................................................................ 12061 ........................................................................ 12062 ........................................................................ 12063 ........................................................................ 12064 ........................................................................ 12065 ........................................................................ 12066 ........................................................................ 12067 ........................................................................ 12068 ........................................................................ 12069 ........................................................................ 12070 ........................................................................ 12071 ........................................................................ 12072 ........................................................................ 12073 ........................................................................ 12074 ........................................................................ 12075 ........................................................................ 12076 ........................................................................ 12077 ........................................................................ 12078 ........................................................................ 12079 ........................................................................ 12080 ........................................................................ 12081 ........................................................................ 12082 ........................................................................ 12083 ........................................................................ 12084 ........................................................................ 12085 ........................................................................ 12086 ........................................................................ 12087 ........................................................................ 12088 ........................................................................ 12089 ........................................................................ 12090 ........................................................................ 12091 ........................................................................ 12092 ........................................................................ 12093 ........................................................................ 12094 ........................................................................ 12095 ........................................................................ 12096 ........................................................................ 12097 ........................................................................ 12098 ........................................................................ 12099 ........................................................................ 12100 ........................................................................ 12101 ........................................................................ 12102 ........................................................................ 12103 ........................................................................ 12104 ........................................................................ 12105 ........................................................................ 12106 ........................................................................ 12107 ........................................................................ 12108 ........................................................................ 12109 ........................................................................ 12110 ........................................................................ 12111 ........................................................................ 12112 ........................................................................ 12113 ........................................................................ 12114 ........................................................................ 12115 ........................................................................ 12116 ........................................................................ 12117 ........................................................................ 12118 ........................................................................ 12119 ........................................................................ 12120 ........................................................................ 12121 ........................................................................ 12122 ........................................................................ 12123 ........................................................................ 12124 ........................................................................ 12125 ........................................................................ 12126 ........................................................................ 12127 ........................................................................ 12128 ........................................................................ 12129 ........................................................................ 12130 ........................................................................ 12131 ........................................................................ 12132 ........................................................................ 12133 ........................................................................ 12134 ........................................................................ 12135 ........................................................................ 12136 ........................................................................ 12137 ........................................................................ 12138 ........................................................................ 12139 ........................................................................ 12140 ........................................................................ 12141 ........................................................................ 12142 ........................................................................ 12143 ........................................................................ 12144 ........................................................................ 12145 ........................................................................ 12146 ........................................................................ 12147 ........................................................................ 12148 ........................................................................ 12149 ........................................................................ 12150 ........................................................................ 12151 ........................................................................ 12152 ........................................................................ 12153 ........................................................................ 12154 ........................................................................ 12155 ........................................................................ 12156 ........................................................................ 12157 ........................................................................ 12158 ........................................................................ 12159 ........................................................................ 12160 ........................................................................ 12161 ........................................................................ 12162 ........................................................................ 12163 ........................................................................ 12164 ........................................................................ 12165 ........................................................................ 12166 ........................................................................ 12167 ........................................................................ 12168 ........................................................................ 12169 ........................................................................ 12170 ........................................................................ 12171 ........................................................................ 12172 ........................................................................ 12173 ........................................................................ 12174 ........................................................................ 12175 ........................................................................ 12176 ........................................................................ 12177 ........................................................................ 12178 ........................................................................ 12179 ........................................................................ 12180 ........................................................................ 12181 ........................................................................ 12182 ........................................................................ 12183 ........................................................................ 12184 ........................................................................ 12185 ........................................................................ 12186 ........................................................................ 12187 ........................................................................ 12188 ........................................................................ 12189 ........................................................................ 12190 ........................................................................ 12191 ........................................................................ 12192 ........................................................................ 12193 ........................................................................ 12194 ........................................................................ 12195 ........................................................................ 12196 ........................................................................ 12197 ........................................................................ 12198 ........................................................................ 12199 ........................................................................ 12200 ........................................................................ 12201 ........................................................................ 12202 ........................................................................ 12203 ........................................................................ 12204 ........................................................................ 12205 ........................................................................ 12206 ........................................................................ 12207 ........................................................................ 12208 ........................................................................ 12209 ........................................................................ 12210 ........................................................................ 12211 ........................................................................ 12212 ........................................................................ 12213 ........................................................................ 12214 ........................................................................ 12215 ........................................................................ 12216 ........................................................................ 12217 ........................................................................ 12218 ........................................................................ 12219 ........................................................................ 12220 ........................................................................ 12221 ........................................................................ 12222 ........................................................................ 12223 ........................................................................ 12224 ........................................................................ 12225 ........................................................................ 12226 ........................................................................ 12227 ........................................................................ 12228 ........................................................................ 12229 ........................................................................ 12230 ........................................................................ 12231 ........................................................................ 12232 ........................................................................ 12233 ........................................................................ 12234 ........................................................................ 12235 ........................................................................ 12236 ........................................................................ 12237 ........................................................................ 12238 ........................................................................ 12239 ........................................................................ 12240 ........................................................................ 12241 ........................................................................ 12242 ........................................................................ 12243 ........................................................................ 12244 ........................................................................ 12245 ........................................................................ 12246 ........................................................................ 12247 ........................................................................ 12248 ........................................................................ 12249 ........................................................................ 12250 ........................................................................ 12251 ........................................................................ 12252 ........................................................................ 12253 ........................................................................ 12254 ........................................................................ 12255 ........................................................................ 12256 ........................................................................ 12257 ........................................................................ 12258 ........................................................................ 12259 ........................................................................ 12260 ........................................................................ 12261 ........................................................................ 12262 ........................................................................ 12263 ........................................................................ 12264 ........................................................................ 12265 ........................................................................ 12266 ........................................................................ 12267 ........................................................................ 12268 ........................................................................ 12269 ........................................................................ 12270 ........................................................................ 12271 ........................................................................ 12272 ........................................................................ 12273 ........................................................................ 12274 ........................................................................ 12275 ........................................................................ 12276 ........................................................................ 12277 ........................................................................ 12278 ........................................................................ 12279 ........................................................................ 12280 ........................................................................ 12281 ........................................................................ 12282 ........................................................................ 12283 ........................................................................ 12284 ........................................................................ 12285 ........................................................................ 12286 ........................................................................ 12287 ........................................................................ 12288 ........................................................................ 12289 ........................................................................ 12290 ........................................................................ 12291 ........................................................................ 12292 ........................................................................ 12293 ........................................................................ 12294 ........................................................................ 12295 ........................................................................ 12296 ........................................................................ 12297 ........................................................................ 12298 ........................................................................ 12299 ........................................................................ 12300 ........................................................................ 12301 ........................................................................ 12302 ........................................................................ 12303 ........................................................................ 12304 ........................................................................ 12305 ........................................................................ 12306 ........................................................................ 12307 ........................................................................ 12308 ........................................................................ 12309 ........................................................................ 12310 ........................................................................ 12311 ........................................................................ 12312 ........................................................................ 12313 ........................................................................ 12314 ........................................................................ 12315 ........................................................................ 12316 ........................................................................ 12317 ........................................................................ 12318 ........................................................................ 12319 ........................................................................ 12320 ........................................................................ 12321 ........................................................................ 12322 ........................................................................ 12323 ........................................................................ 12324 ........................................................................ 12325 ........................................................................ 12326 ........................................................................ 12327 ........................................................................ 12328 ........................................................................ 12329 ........................................................................ 12330 ........................................................................ 12331 ........................................................................ 12332 ........................................................................ 12333 ........................................................................ 12334 ........................................................................ 12335 ........................................................................ 12336 ........................................................................ 12337 ........................................................................ 12338 ........................................................................ 12339 ........................................................................ 12340 ........................................................................ 12341 ........................................................................ 12342 ........................................................................ 12343 ........................................................................ 12344 ........................................................................ 12345 ........................................................................ 12346 ........................................................................ 12347 ........................................................................ 12348 ........................................................................ 12349 ........................................................................ 12350 ........................................................................ 12351 ........................................................................ 12352 ........................................................................ 12353 ........................................................................ 12354 ........................................................................ 12355 ........................................................................ 12356 ........................................................................ 12357 ........................................................................ 12358 ........................................................................ 12359 ........................................................................ 12360 ........................................................................ 12361 ........................................................................ 12362 ........................................................................ 12363 ........................................................................ 12364 ........................................................................ 12365 ........................................................................ 12366 ........................................................................ 12367 ........................................................................ 12368 ........................................................................ 12369 ........................................................................ 12370 ........................................................................ 12371 ........................................................................ 12372 ........................................................................ 12373 ........................................................................ 12374 ........................................................................ 12375 ........................................................................ 12376 ........................................................................ 12377 ........................................................................ 12378 ........................................................................ 12379 ........................................................................ 12380 ........................................................................ 12381 ........................................................................ 12382 ........................................................................ 12383 ........................................................................ 12384 ........................................................................ 12385 ........................................................................ 12386 ........................................................................ 12387 ........................................................................ 12388 ........................................................................ 12389 ........................................................................ 12390 ........................................................................ 12391 ........................................................................ 12392 ........................................................................ 12393 ........................................................................ 12394 ........................................................................ 12395 ........................................................................ 12396 ........................................................................ 12397 ........................................................................ 12398 ........................................................................ 12399 ........................................................................ 12400 ........................................................................ 12401 ........................................................................ 12402 ........................................................................ 12403 ........................................................................ 12404 ........................................................................ 12405 ........................................................................ 12406 ........................................................................ 12407 ........................................................................ 12408 ........................................................................ 12409 ........................................................................ 12410 ........................................................................ 12411 ........................................................................ 12412 ........................................................................ 12413 ........................................................................ 12414 ........................................................................ 12415 ........................................................................ 12416 ........................................................................ 12417 ........................................................................ 12418 ........................................................................ 12419 ........................................................................ 12420 ........................................................................ 12421 ........................................................................ 12422 ........................................................................ 12423 ........................................................................ 12424 ........................................................................ 12425 ........................................................................ 12426 ........................................................................ 12427 ........................................................................ 12428 ........................................................................ 12429 ........................................................................ 12430 ........................................................................ 12431 ........................................................................ 12432 ........................................................................ 12433 ........................................................................ 12434 ........................................................................ 12435 ........................................................................ 12436 ........................................................................ 12437 ........................................................................ 12438 ........................................................................ 12439 ........................................................................ 12440 ........................................................................ 12441 ........................................................................ 12442 ........................................................................ 12443 ........................................................................ 12444 ........................................................................ 12445 ........................................................................ 12446 ........................................................................ 12447 ........................................................................ 12448 ........................................................................ 12449 ........................................................................ 12450 ........................................................................ 12451 ........................................................................ 12452 ........................................................................ 12453 ........................................................................ 12454 ........................................................................ 12455 ........................................................................ 12456 ........................................................................ 12457 ........................................................................ 12458 ........................................................................ 12459 ........................................................................ 12460 ........................................................................ 12461 ........................................................................ 12462 ........................................................................ 12463 ........................................................................ 12464 ........................................................................ 12465 ........................................................................ 12466 ........................................................................ 12467 ........................................................................ 12468 ........................................................................ 12469 ........................................................................ 12470 ........................................................................ 12471 ........................................................................ 12472 ........................................................................ 12473 ........................................................................ 12474 ........................................................................ 12475 ........................................................................ 12476 ........................................................................ 12477 ........................................................................ 12478 ........................................................................ 12479 ........................................................................ 12480 ........................................................................ 12481 ........................................................................ 12482 ........................................................................ 12483 ........................................................................ 12484 ........................................................................ 12485 ........................................................................ 12486 ........................................................................ 12487 ........................................................................ 12488 ........................................................................ 12489 ........................................................................ 12490 ........................................................................ 12491 ........................................................................ 12492 ........................................................................ 12493 ........................................................................ 12494 ........................................................................ 12495 ........................................................................ 12496 ........................................................................ 12497 ........................................................................ 12498 ........................................................................ 12499 ........................................................................ 12500 ........................................................................ 12501 ........................................................................ 12502 ........................................................................ 12503 ........................................................................ 12504 ........................................................................ 12505 ........................................................................ 12506 ........................................................................ 12507 ........................................................................ 12508 ........................................................................ 12509 ........................................................................ 12510 ........................................................................ 12511 ........................................................................ 12512 ........................................................................ 12513 ........................................................................ 12514 ........................................................................ 12515 ........................................................................ 12516 ........................................................................ 12517 ........................................................................ 12518 ........................................................................ 12519 ........................................................................ 12520 ........................................................................ 12521 ........................................................................ 12522 ........................................................................ 12523 ........................................................................ 12524 ........................................................................ 12525 ........................................................................ 12526 ........................................................................ 12527 ........................................................................ 12528 ........................................................................ 12529 ........................................................................ 12530 ........................................................................ 12531 ........................................................................ 12532 ........................................................................ 12533 ........................................................................ 12534 ........................................................................ 12535 ........................................................................ 12536 ........................................................................ 12537 ........................................................................ 12538 ........................................................................ 12539 ........................................................................ 12540 ........................................................................ 12541 ........................................................................ 12542 ........................................................................ 12543 ........................................................................ 12544 ........................................................................ 12545 ........................................................................ 12546 ........................................................................ 12547 ........................................................................ 12548 ........................................................................ 12549 ........................................................................ 12550 ........................................................................ 12551 ........................................................................ 12552 ........................................................................ 12553 ........................................................................ 12554 ........................................................................ 12555 ........................................................................ 12556 ........................................................................ 12557 ........................................................................ 12558 ........................................................................ 12559 ........................................................................ 12560 ........................................................................ 12561 ........................................................................ 12562 ........................................................................ 12563 ........................................................................ 12564 ........................................................................ 12565 ........................................................................ 12566 ........................................................................ 12567 ........................................................................ 12568 ........................................................................ 12569 ........................................................................ 12570 ........................................................................ 12571 ........................................................................ 12572 ........................................................................ 12573 ........................................................................ 12574 ........................................................................ 12575 ........................................................................ 12576 ........................................................................ 12577 ........................................................................ 12578 ........................................................................ 12579 ........................................................................ 12580 ........................................................................ 12581 ........................................................................ 12582 ........................................................................ 12583 ........................................................................ 12584 ........................................................................ 12585 ........................................................................ 12586 ........................................................................ 12587 ........................................................................ 12588 ........................................................................ 12589 ........................................................................ 12590 ........................................................................ 12591 ........................................................................ 12592 ........................................................................ 12593 ........................................................................ 12594 ........................................................................ 12595 ........................................................................ 12596 ........................................................................ 12597 ........................................................................ 12598 ........................................................................ 12599 ........................................................................ 12600 ........................................................................ 12601 ........................................................................ 12602 ........................................................................ 12603 ........................................................................ 12604 ........................................................................ 12605 ........................................................................ 12606 ........................................................................ 12607 ........................................................................ 12608 ........................................................................ 12609 ........................................................................ 12610 ........................................................................ 12611 ........................................................................ 12612 ........................................................................ 12613 ........................................................................ 12614 ........................................................................ 12615 ........................................................................ 12616 ........................................................................ 12617 ........................................................................ 12618 ........................................................................ 12619 ........................................................................ 12620 ........................................................................ 12621 ........................................................................ 12622 ........................................................................ 12623 ........................................................................ 12624 ........................................................................ 12625 ........................................................................ 12626 ........................................................................ 12627 ........................................................................ 12628 ........................................................................ 12629 ........................................................................ 12630 ........................................................................ 12631 ........................................................................ 12632 ........................................................................ 12633 ........................................................................ 12634 ........................................................................ 12635 ........................................................................ 12636 ........................................................................ 12637 ........................................................................ 12638 ........................................................................ 12639 ........................................................................ 12640 ........................................................................ 12641 ........................................................................ 12642 ........................................................................ 12643 ........................................................................ 12644 ........................................................................ 12645 ........................................................................ 12646 ........................................................................ 12647 ........................................................................ 12648 ........................................................................ 12649 ........................................................................ 12650 ........................................................................ 12651 ........................................................................ 12652 ........................................................................ 12653 ........................................................................ 12654 ........................................................................ 12655 ........................................................................ 12656 ........................................................................ 12657 ........................................................................ 12658 ........................................................................ 12659 ........................................................................ 12660 ........................................................................ 12661 ........................................................................ 12662 ........................................................................ 12663 ........................................................................ 12664 ........................................................................ 12665 ........................................................................ 12666 ........................................................................ 12667 ........................................................................ 12668 ........................................................................ 12669 ........................................................................ 12670 ........................................................................ 12671 ........................................................................ 12672 ........................................................................ 12673 ........................................................................ 12674 ........................................................................ 12675 ........................................................................ 12676 ........................................................................ 12677 ........................................................................ 12678 ........................................................................ 12679 ........................................................................ 12680 ........................................................................ 12681 ........................................................................ 12682 ........................................................................ 12683 ........................................................................ 12684 ........................................................................ 12685 ........................................................................ 12686 ........................................................................ 12687 ........................................................................ 12688 ........................................................................ 12689 ........................................................................ 12690 ........................................................................ 12691 ........................................................................ 12692 ........................................................................ 12693 ........................................................................ 12694 ........................................................................ 12695 ........................................................................ 12696 ........................................................................ 12697 ........................................................................ 12698 ........................................................................ 12699 ........................................................................ 12700 ........................................................................ 12701 ........................................................................ 12702 ........................................................................ 12703 ........................................................................ 12704 ........................................................................ 12705 ........................................................................ 12706 ........................................................................ 12707 ........................................................................ 12708 ........................................................................ 12709 ........................................................................ 12710 ........................................................................ 12711 ........................................................................ 12712 ........................................................................ 12713 ........................................................................ 12714 ........................................................................ 12715 ........................................................................ 12716 ........................................................................ 12717 ........................................................................ 12718 ........................................................................ 12719 ........................................................................ 12720 ........................................................................ 12721 ........................................................................ 12722 ........................................................................ 12723 ........................................................................ 12724 ........................................................................ 12725 ........................................................................ 12726 ........................................................................ 12727 ........................................................................ 12728 ........................................................................ 12729 ........................................................................ 12730 ........................................................................ 12731 ........................................................................ 12732 ........................................................................ 12733 ........................................................................ 12734 ........................................................................ 12735 ........................................................................ 12736 ........................................................................ 12737 ........................................................................ 12738 ........................................................................ 12739 ........................................................................ 12740 ........................................................................ 12741 ........................................................................ 12742 ........................................................................ 12743 ........................................................................ 12744 ........................................................................ 12745 ........................................................................ 12746 ........................................................................ 12747 ........................................................................ 12748 ........................................................................ 12749 ........................................................................ 12750 ........................................................................ 12751 ........................................................................ 12752 ........................................................................ 12753 ........................................................................ 12754 ........................................................................ 12755 ........................................................................ 12756 ........................................................................ 12757 ........................................................................ 12758 ........................................................................ 12759 ........................................................................ 12760 ........................................................................ 12761 ........................................................................ 12762 ........................................................................ 12763 ........................................................................ 12764 ........................................................................ 12765 ........................................................................ 12766 ........................................................................ 12767 ........................................................................ 12768 ........................................................................ 12769 ........................................................................ 12770 ........................................................................ 12771 ........................................................................ 12772 ........................................................................ 12773 ........................................................................ 12774 ........................................................................ 12775 ........................................................................ 12776 ........................................................................ 12777 ........................................................................ 12778 ........................................................................ 12779 ........................................................................ 12780 ........................................................................ 12781 ........................................................................ 12782 ........................................................................ 12783 ........................................................................ 12784 ........................................................................ 12785 ........................................................................ 12786 ........................................................................ 12787 ........................................................................ 12788 ........................................................................ 12789 ........................................................................ 12790 ........................................................................ 12791 ........................................................................ 12792 ........................................................................ 12793 ........................................................................ 12794 ........................................................................ 12795 ........................................................................ 12796 ........................................................................ 12797 ........................................................................ 12798 ........................................................................ 12799 ........................................................................ 12800 ........................................................................ 12801 ........................................................................ 12802 ........................................................................ 12803 ........................................................................ 12804 ........................................................................ 12805 ........................................................................ 12806 ........................................................................ 12807 ........................................................................ 12808 ........................................................................ 12809 ........................................................................ 12810 ........................................................................ 12811 ........................................................................ 12812 ........................................................................ 12813 ........................................................................ 12814 ........................................................................ 12815 ........................................................................ 12816 ........................................................................ 12817 ........................................................................ 12818 ........................................................................ 12819 ........................................................................ 12820 ........................................................................ 12821 ........................................................................ 12822 ........................................................................ 12823 ........................................................................ 12824 ........................................................................ 12825 ........................................................................ 12826 ........................................................................ 12827 ........................................................................ 12828 ........................................................................ 12829 ........................................................................ 12830 ........................................................................ 12831 ........................................................................ 12832 ........................................................................ 12833 ........................................................................ 12834 ........................................................................ 12835 ........................................................................ 12836 ........................................................................ 12837 ........................................................................ 12838 ........................................................................ 12839 ........................................................................ 12840 ........................................................................ 12841 ........................................................................ 12842 ........................................................................ 12843 ........................................................................ 12844 ........................................................................ 12845 ........................................................................ 12846 ........................................................................ 12847 ........................................................................ 12848 ........................................................................ 12849 ........................................................................ 12850 ........................................................................ 12851 ........................................................................ 12852 ........................................................................ 12853 ........................................................................ 12854 ........................................................................ 12855 ........................................................................ 12856 ........................................................................ 12857 ........................................................................ 12858 ........................................................................ 12859 ........................................................................ 12860 ........................................................................ 12861 ........................................................................ 12862 ........................................................................ 12863 ........................................................................ 12864 ........................................................................ 12865 ........................................................................ 12866 ........................................................................ 12867 ........................................................................ 12868 ........................................................................ 12869 ........................................................................ 12870 ........................................................................ 12871 ........................................................................ 12872 ........................................................................ 12873 ........................................................................ 12874 ........................................................................ 12875 ........................................................................ 12876 ........................................................................ 12877 ........................................................................ 12878 ........................................................................ 12879 ........................................................................ 12880 ........................................................................ 12881 ........................................................................ 12882 ........................................................................ 12883 ........................................................................ 12884 ........................................................................ 12885 ........................................................................ 12886 ........................................................................ 12887 ........................................................................ 12888 ........................................................................ 12889 ........................................................................ 12890 ........................................................................ 12891 ........................................................................ 12892 ........................................................................ 12893 ........................................................................ 12894 ........................................................................ 12895 ........................................................................ 12896 ........................................................................ 12897 ........................................................................ 12898 ........................................................................ 12899 ........................................................................ 12900 ........................................................................ 12901 ........................................................................ 12902 ........................................................................ 12903 ........................................................................ 12904 ........................................................................ 12905 ........................................................................ 12906 ........................................................................ 12907 ........................................................................ 12908 ........................................................................ 12909 ........................................................................ 12910 ........................................................................ 12911 ........................................................................ 12912 ........................................................................ 12913 ........................................................................ 12914 ........................................................................ 12915 ........................................................................ 12916 ........................................................................ 12917 ........................................................................ 12918 ........................................................................ 12919 ........................................................................ 12920 ........................................................................ 12921 ........................................................................ 12922 ........................................................................ 12923 ........................................................................ 12924 ........................................................................ 12925 ........................................................................ 12926 ........................................................................ 12927 ........................................................................ 12928 ........................................................................ 12929 ........................................................................ 12930 ........................................................................ 12931 ........................................................................ 12932 ........................................................................ 12933 ........................................................................ 12934 ........................................................................ 12935 ........................................................................ 12936 ........................................................................ 12937 ........................................................................ 12938 ........................................................................ 12939 ........................................................................ 12940 ........................................................................ 12941 ........................................................................ 12942 ........................................................................ 12943 ........................................................................ 12944 ........................................................................ 12945 ........................................................................ 12946 ........................................................................ 12947 ........................................................................ 12948 ........................................................................ 12949 ........................................................................ 12950 ........................................................................ 12951 ........................................................................ 12952 ........................................................................ 12953 ........................................................................ 12954 ........................................................................ 12955 ........................................................................ 12956 ........................................................................ 12957 ........................................................................ 12958 ........................................................................ 12959 ........................................................................ 12960 ........................................................................ 12961 ........................................................................ 12962 ........................................................................ 12963 ........................................................................ 12964 ........................................................................ 12965 ........................................................................ 12966 ........................................................................ 12967 ........................................................................ 12968 ........................................................................ 12969 ........................................................................ 12970 ........................................................................ 12971 ........................................................................ 12972 ........................................................................ 12973 ........................................................................ 12974 ........................................................................ 12975 ........................................................................ 12976 ........................................................................ 12977 ........................................................................ 12978 ........................................................................ 12979 ........................................................................ 12980 ........................................................................ 12981 ........................................................................ 12982 ........................................................................ 12983 ........................................................................ 12984 ........................................................................ 12985 ........................................................................ 12986 ........................................................................ 12987 ........................................................................ 12988 ........................................................................ 12989 ........................................................................ 12990 ........................................................................ 12991 ........................................................................ 12992 ........................................................................ 12993 ........................................................................ 12994 ........................................................................ 12995 ........................................................................ 12996 ........................................................................ 12997 ........................................................................ 12998 ........................................................................ 12999 ........................................................................ 13000 ........................................................................ 13001 ........................................................................ 13002 ........................................................................ 13003 ........................................................................ 13004 ........................................................................ 13005 ........................................................................ 13006 ........................................................................ 13007 ........................................................................ 13008 ........................................................................ 13009 ........................................................................ 13010 ........................................................................ 13011 ........................................................................ 13012 ........................................................................ 13013 ........................................................................ 13014 ........................................................................ 13015 ........................................................................ 13016 ........................................................................ 13017 ........................................................................ 13018 ........................................................................ 13019 ........................................................................ 13020 ........................................................................ 13021 ........................................................................ 13022 ........................................................................ 13023 ........................................................................ 13024 ........................................................................ 13025 ........................................................................ 13026 ........................................................................ 13027 ........................................................................ 13028 ........................................................................ 13029 ........................................................................ 13030 ........................................................................ 13031 ........................................................................ 13032 ........................................................................ 13033 ........................................................................ 13034 ........................................................................ 13035 ........................................................................ 13036 ........................................................................ 13037 ........................................................................ 13038 ........................................................................ 13039 ........................................................................ 13040 ........................................................................ 13041 ........................................................................ 13042 ........................................................................ 13043 ........................................................................ 13044 ........................................................................ 13045 ........................................................................ 13046 ........................................................................ 13047 ........................................................................ 13048 ........................................................................ 13049 ........................................................................ 13050 ........................................................................ 13051 ........................................................................ 13052 ........................................................................ 13053 ........................................................................ 13054 ........................................................................ 13055 ........................................................................ 13056 ........................................................................ 13057 ........................................................................ 13058 ........................................................................ 13059 ........................................................................ 13060 ........................................................................ 13061 ........................................................................ 13062 ........................................................................ 13063 ........................................................................ 13064 ........................................................................ 13065 ........................................................................ 13066 ........................................................................ 13067 ........................................................................ 13068 ........................................................................ 13069 ........................................................................ 13070 ........................................................................ 13071 ........................................................................ 13072 ........................................................................ 13073 ........................................................................ 13074 ........................................................................ 13075 ........................................................................ 13076 ........................................................................ 13077 ........................................................................ 13078 ........................................................................ 13079 ........................................................................ 13080 ........................................................................ 13081 ........................................................................ 13082 ........................................................................ 13083 ........................................................................ 13084 ........................................................................ 13085 ........................................................................ 13086 ........................................................................ 13087 ........................................................................ 13088 ........................................................................ 13089 ........................................................................ 13090 ........................................................................ 13091 ........................................................................ 13092 ........................................................................ 13093 ........................................................................ 13094 ........................................................................ 13095 ........................................................................ 13096 ........................................................................ 13097 ........................................................................ 13098 ........................................................................ 13099 ........................................................................ 13100 ........................................................................ 13101 ........................................................................ 13102 ........................................................................ 13103 ........................................................................ 13104 ........................................................................ 13105 ........................................................................ 13106 ........................................................................ 13107 ........................................................................ 13108 ........................................................................ 13109 ........................................................................ 13110 ........................................................................ 13111 ........................................................................ 13112 ........................................................................ 13113 ........................................................................ 13114 ........................................................................ 13115 ........................................................................ 13116 ........................................................................ 13117 ........................................................................ 13118 ........................................................................ 13119 ........................................................................ 13120 ........................................................................ 13121 ........................................................................ 13122 ........................................................................ 13123 ........................................................................ 13124 ........................................................................ 13125 ........................................................................ 13126 ........................................................................ 13127 ........................................................................ 13128 ........................................................................ 13129 ........................................................................ 13130 ........................................................................ 13131 ........................................................................ 13132 ........................................................................ 13133 ........................................................................ 13134 ........................................................................ 13135 ........................................................................ 13136 ........................................................................ 13137 ........................................................................ 13138 ........................................................................ 13139 ........................................................................ 13140 ........................................................................ 13141 ........................................................................ 13142 ........................................................................ 13143 ........................................................................ 13144 ........................................................................ 13145 ........................................................................ 13146 ........................................................................ 13147 ........................................................................ 13148 ........................................................................ 13149 ........................................................................ 13150 ........................................................................ 13151 ........................................................................ 13152 ........................................................................ 13153 ........................................................................ 13154 ........................................................................ 13155 ........................................................................ 13156 ........................................................................ 13157 ........................................................................ 13158 ........................................................................ 13159 ........................................................................ 13160 ........................................................................ 13161 ........................................................................ 13162 ........................................................................ 13163 ........................................................................ 13164 ........................................................................ 13165 ........................................................................ 13166 ........................................................................ 13167 ........................................................................ 13168 ........................................................................ 13169 ........................................................................ 13170 ........................................................................ 13171 ........................................................................ 13172 ........................................................................ 13173 ........................................................................ 13174 ........................................................................ 13175 ........................................................................ 13176 ........................................................................ 13177 ........................................................................ 13178 ........................................................................ 13179 ........................................................................ 13180 ........................................................................ 13181 ........................................................................ 13182 ........................................................................ 13183 ........................................................................ 13184 ........................................................................ 13185 ........................................................................ 13186 ........................................................................ 13187 ........................................................................ 13188 ........................................................................ 13189 ........................................................................ 13190 ........................................................................ 13191 ........................................................................ 13192 ........................................................................ 13193 ........................................................................ 13194 ........................................................................ 13195 ........................................................................ 13196 ........................................................................ 13197 ........................................................................ 13198 ........................................................................ 13199 ........................................................................ 13200 ........................................................................ 13201 ........................................................................ 13202 ........................................................................ 13203 ........................................................................ 13204 ........................................................................ 13205 ........................................................................ 13206 ........................................................................ 13207 ........................................................................ 13208 ........................................................................ 13209 ........................................................................ 13210 ........................................................................ 13211 ........................................................................ 13212 ........................................................................ 13213 ........................................................................ 13214 ........................................................................ 13215 ........................................................................ 13216 ........................................................................ 13217 ........................................................................ 13218 ........................................................................ 13219 ........................................................................ 13220 ........................................................................ 13221 ........................................................................ 13222 ........................................................................ 13223 ........................................................................ 13224 ........................................................................ 13225 ........................................................................ 13226 ........................................................................ 13227 ........................................................................ 13228 ........................................................................ 13229 ........................................................................ 13230 ........................................................................ 13231 ........................................................................ 13232 ........................................................................ 13233 ........................................................................ 13234 ........................................................................ 13235 ........................................................................ 13236 ........................................................................ 13237 ........................................................................ 13238 ........................................................................ 13239 ........................................................................ 13240 ........................................................................ 13241 ........................................................................ 13242 ........................................................................ 13243 ........................................................................ 13244 ........................................................................ 13245 ........................................................................ 13246 ........................................................................ 13247 ........................................................................ 13248 ........................................................................ 13249 ........................................................................ 13250 ........................................................................ 13251 ........................................................................ 13252 ........................................................................ 13253 ........................................................................ 13254 ........................................................................ 13255 ........................................................................ 13256 ........................................................................ 13257 ........................................................................ 13258 ........................................................................ 13259 ........................................................................ 13260 ........................................................................ 13261 ........................................................................ 13262 ........................................................................ 13263 ........................................................................ 13264 ........................................................................ 13265 ........................................................................ 13266 ........................................................................ 13267 ........................................................................ 13268 ........................................................................ 13269 ........................................................................ 13270 ........................................................................ 13271 ........................................................................ 13272 ........................................................................ 13273 ........................................................................ 13274 ........................................................................ 13275 ........................................................................ 13276 ........................................................................ 13277 ........................................................................ 13278 ........................................................................ 13279 ........................................................................ 13280 ........................................................................ 13281 ........................................................................ 13282 ........................................................................ 13283 ........................................................................ 13284 ........................................................................ 13285 ........................................................................ 13286 ........................................................................ 13287 ........................................................................ 13288 ........................................................................ 13289 ........................................................................ 13290 ........................................................................ 13291 ........................................................................ 13292 ........................................................................ 13293 ........................................................................ 13294 ........................................................................ 13295 ........................................................................ 13296 ........................................................................ 13297 ........................................................................ 13298 ........................................................................ 13299 ........................................................................ 13300 ........................................................................ 13301 ........................................................................ 13302 ........................................................................ 13303 ........................................................................ 13304 ........................................................................ 13305 ........................................................................ 13306 ........................................................................ 13307 ........................................................................ 13308 ........................................................................ 13309 ........................................................................ 13310 ........................................................................ 13311 ........................................................................ 13312 ........................................................................ 13313 ........................................................................ 13314 ........................................................................ 13315 ........................................................................ 13316 ........................................................................ 13317 ........................................................................ 13318 ........................................................................ 13319 ........................................................................ 13320 ........................................................................ 13321 ........................................................................ 13322 ........................................................................ 13323 ........................................................................ 13324 ........................................................................ 13325 ........................................................................ 13326 ........................................................................ 13327 ........................................................................ 13328 ........................................................................ 13329 ........................................................................ 13330 ........................................................................ 13331 ........................................................................ 13332 ........................................................................ 13333 ........................................................................ 13334 ........................................................................ 13335 ........................................................................ 13336 ........................................................................ 13337 ........................................................................ 13338 ........................................................................ 13339 ........................................................................ 13340 ........................................................................ 13341 ........................................................................ 13342 ........................................................................ 13343 ........................................................................ 13344 ........................................................................ 13345 ........................................................................ 13346 ........................................................................ 13347 ........................................................................ 13348 ........................................................................ 13349 ........................................................................ 13350 ........................................................................ 13351 ........................................................................ 13352 ........................................................................ 13353 ........................................................................ 13354 ........................................................................ 13355 ........................................................................ 13356 ........................................................................ 13357 ........................................................................ 13358 ........................................................................ 13359 ........................................................................ 13360 ........................................................................ 13361 ........................................................................ 13362 ........................................................................ 13363 ........................................................................ 13364 ........................................................................ 13365 ........................................................................ 13366 ........................................................................ 13367 ........................................................................ 13368 ........................................................................ 13369 ........................................................................ 13370 ........................................................................ 13371 ........................................................................ 13372 ........................................................................ 13373 ........................................................................ 13374 ........................................................................ 13375 ........................................................................ 13376 ........................................................................ 13377 ........................................................................ 13378 ........................................................................ 13379 ........................................................................ 13380 ........................................................................ 13381 ........................................................................ 13382 ........................................................................ 13383 ........................................................................ 13384 ........................................................................ 13385 ........................................................................ 13386 ........................................................................ 13387 ........................................................................ 13388 ........................................................................ 13389 ........................................................................ 13390 ........................................................................ 13391 ........................................................................ 13392 ........................................................................ 13393 ........................................................................ 13394 ........................................................................ 13395 ........................................................................ 13396 ........................................................................ 13397 ........................................................................ 13398 ........................................................................ 13399 ........................................................................ 13400 ........................................................................ 13401 ........................................................................ 13402 ........................................................................ 13403 ........................................................................ 13404 ........................................................................ 13405 ........................................................................ 13406 ........................................................................ 13407 ........................................................................ 13408 ........................................................................ 13409 ........................................................................ 13410 ........................................................................ 13411 ........................................................................ 13412 ........................................................................ 13413 ........................................................................ 13414 ........................................................................ 13415 ........................................................................ 13416 ........................................................................ 13417 ........................................................................ 13418 ........................................................................ 13419 ........................................................................ 13420 ........................................................................ 13421 ........................................................................ 13422 ........................................................................ 13423 ........................................................................ 13424 ........................................................................ 13425 ........................................................................ 13426 ........................................................................ 13427 ........................................................................ 13428 ........................................................................ 13429 ........................................................................ 13430 ........................................................................ 13431 ........................................................................ 13432 ........................................................................ 13433 ........................................................................ 13434 ........................................................................ 13435 ........................................................................ 13436 ........................................................................ 13437 ........................................................................ 13438 ........................................................................ 13439 ........................................................................ 13440 ........................................................................ 13441 ........................................................................ 13442 ........................................................................ 13443 ........................................................................ 13444 ........................................................................ 13445 ........................................................................ 13446 ........................................................................ 13447 ........................................................................ 13448 ........................................................................ 13449 ........................................................................ 13450 ........................................................................ 13451 ........................................................................ 13452 ........................................................................ 13453 ........................................................................ 13454 ........................................................................ 13455 ........................................................................ 13456 ........................................................................ 13457 ........................................................................ 13458 ........................................................................ 13459 ........................................................................ 13460 ........................................................................ 13461 ........................................................................ 13462 ........................................................................ 13463 ........................................................................ 13464 ........................................................................ 13465 ........................................................................ 13466 ........................................................................ 13467 ........................................................................ 13468 ........................................................................ 13469 ........................................................................ 13470 ........................................................................ 13471 ........................................................................ 13472 ........................................................................ 13473 ........................................................................ 13474 ........................................................................ 13475 ........................................................................ 13476 ........................................................................ 13477 ........................................................................ 13478 ........................................................................ 13479 ........................................................................ 13480 ........................................................................ 13481 ........................................................................ 13482 ........................................................................ 13483 ........................................................................ 13484 ........................................................................ 13485 ........................................................................ 13486 ........................................................................ 13487 ........................................................................ 13488 ........................................................................ 13489 ........................................................................ 13490 ........................................................................ 13491 ........................................................................ 13492 ........................................................................ 13493 ........................................................................ 13494 ........................................................................ 13495 ........................................................................ 13496 ........................................................................ 13497 ........................................................................ 13498 ........................................................................ 13499 ........................................................................ 13500 ........................................................................ 13501 ........................................................................ 13502 ........................................................................ 13503 ........................................................................ 13504 ........................................................................ 13505 ........................................................................ 13506 ........................................................................ 13507 ........................................................................ 13508 ........................................................................ 13509 ........................................................................ 13510 ........................................................................ 13511 ........................................................................ 13512 ........................................................................ 13513 ........................................................................ 13514 ........................................................................ 13515 ........................................................................ 13516 ........................................................................ 13517 ........................................................................ 13518 ........................................................................ 13519 ........................................................................ 13520 ........................................................................ 13521 ........................................................................ 13522 ........................................................................ 13523 ........................................................................ 13524 ........................................................................ 13525 ........................................................................ 13526 ........................................................................ 13527 ........................................................................ 13528 ........................................................................ 13529 ........................................................................ 13530 ........................................................................ 13531 ........................................................................ 13532 ........................................................................ 13533 ........................................................................ 13534 ........................................................................ 13535 ........................................................................ 13536 ........................................................................ 13537 ........................................................................ 13538 ........................................................................ 13539 ........................................................................ 13540 ........................................................................ 13541 ........................................................................ 13542 ........................................................................ 13543 ........................................................................ 13544 ........................................................................ 13545 ........................................................................ 13546 ........................................................................ 13547 ........................................................................ 13548 ........................................................................ 13549 ........................................................................ 13550 ........................................................................ 13551 ........................................................................ 13552 ........................................................................ 13553 ........................................................................ 13554 ........................................................................ 13555 ........................................................................ 13556 ........................................................................ 13557 ........................................................................ 13558 ........................................................................ 13559 ........................................................................ 13560 ........................................................................ 13561 ........................................................................ 13562 ........................................................................ 13563 ........................................................................ 13564 ........................................................................ 13565 ........................................................................ 13566 ........................................................................ 13567 ........................................................................ 13568 ........................................................................ 13569 ........................................................................ 13570 ........................................................................ 13571 ........................................................................ 13572 ........................................................................ 13573 ........................................................................ 13574 ........................................................................ 13575 ........................................................................ 13576 ........................................................................ 13577 ........................................................................ 13578 ........................................................................ 13579 ........................................................................ 13580 ........................................................................ 13581 ........................................................................ 13582 ........................................................................ 13583 ........................................................................ 13584 ........................................................................ 13585 ........................................................................ 13586 ........................................................................ 13587 ........................................................................ 13588 ........................................................................ 13589 ........................................................................ 13590 ........................................................................ 13591 ........................................................................ 13592 ........................................................................ 13593 ........................................................................ 13594 ........................................................................ 13595 ........................................................................ 13596 ........................................................................ 13597 ........................................................................ 13598 ........................................................................ 13599 ........................................................................ 13600 ........................................................................ 13601 ........................................................................ 13602 ........................................................................ 13603 ........................................................................ 13604 ........................................................................ 13605 ........................................................................ 13606 ........................................................................ 13607 ........................................................................ 13608 ........................................................................ 13609 ........................................................................ 13610 ........................................................................ 13611 ........................................................................ 13612 ........................................................................ 13613 ........................................................................ 13614 ........................................................................ 13615 ........................................................................ 13616 ........................................................................ 13617 ........................................................................ 13618 ........................................................................ 13619 ........................................................................ 13620 ........................................................................ 13621 ........................................................................ 13622 ........................................................................ 13623 ........................................................................ 13624 ........................................................................ 13625 ........................................................................ 13626 ........................................................................ 13627 ........................................................................ 13628 ........................................................................ 13629 ........................................................................ 13630 ........................................................................ 13631 ........................................................................ 13632 ........................................................................ 13633 ........................................................................ 13634 ........................................................................ 13635 ........................................................................ 13636 ........................................................................ 13637 ........................................................................ 13638 ........................................................................ 13639 ........................................................................ 13640 ........................................................................ 13641 ........................................................................ 13642 ........................................................................ 13643 ........................................................................ 13644 ........................................................................ 13645 ........................................................................ 13646 ........................................................................ 13647 ........................................................................ 13648 ........................................................................ 13649 ........................................................................ 13650 ........................................................................ 13651 ........................................................................ 13652 ........................................................................ 13653 ........................................................................ 13654 ........................................................................ 13655 ........................................................................ 13656 ........................................................................ 13657 ........................................................................ 13658 ........................................................................ 13659 ........................................................................ 13660 ........................................................................ 13661 ........................................................................ 13662 ........................................................................ 13663 ........................................................................ 13664 ........................................................................ 13665 ........................................................................ 13666 ........................................................................ 13667 ........................................................................ 13668 ........................................................................ 13669 ........................................................................ 13670 ........................................................................ 13671 ........................................................................ 13672 ........................................................................ 13673 ........................................................................ 13674 ........................................................................ 13675 ........................................................................ 13676 ........................................................................ 13677 ........................................................................ 13678 ........................................................................ 13679 ........................................................................ 13680 ........................................................................ 13681 ........................................................................ 13682 ........................................................................ 13683 ........................................................................ 13684 ........................................................................ 13685 ........................................................................ 13686 ........................................................................ 13687 ........................................................................ 13688 ........................................................................ 13689 ........................................................................ 13690 ........................................................................ 13691 ........................................................................ 13692 ........................................................................ 13693 ........................................................................ 13694 ........................................................................ 13695 ........................................................................ 13696 ........................................................................ 13697 ........................................................................ 13698 ........................................................................ 13699 ........................................................................ 13700 ........................................................................ 13701 ........................................................................ 13702 ........................................................................ 13703 ........................................................................ 13704 ........................................................................ 13705 ........................................................................ 13706 ........................................................................ 13707 ........................................................................ 13708 ........................................................................ 13709 ........................................................................ 13710 ........................................................................ 13711 ........................................................................ 13712 ........................................................................ 13713 ........................................................................ 13714 ........................................................................ 13715 ........................................................................ 13716 ........................................................................ 13717 ........................................................................ 13718 ........................................................................ 13719 ........................................................................ 13720 ........................................................................ 13721 ........................................................................ 13722 ........................................................................ 13723 ........................................................................ 13724 ........................................................................ 13725 ........................................................................ 13726 ........................................................................ 13727 ........................................................................ 13728 ........................................................................ 13729 ........................................................................ 13730 ........................................................................ 13731 ........................................................................ 13732 ........................................................................ 13733 ........................................................................ 13734 ........................................................................ 13735 ........................................................................ 13736 ........................................................................ 13737 ........................................................................ 13738 ........................................................................ 13739 ........................................................................ 13740 ........................................................................ 13741 ........................................................................ 13742 ........................................................................ 13743 ........................................................................ 13744 ........................................................................ 13745 ........................................................................ 13746 ........................................................................ 13747 ........................................................................ 13748 ........................................................................ 13749 ........................................................................ 13750 ........................................................................ 13751 ........................................................................ 13752 ........................................................................ 13753 ........................................................................ 13754 ........................................................................ 13755 ........................................................................ 13756 ........................................................................ 13757 ........................................................................ 13758 ........................................................................ 13759 ........................................................................ 13760 ........................................................................ 13761 ........................................................................ 13762 ........................................................................ 13763 ........................................................................ 13764 ........................................................................ 13765 ........................................................................ 13766 ........................................................................ 13767 ........................................................................ 13768 ........................................................................ 13769 ........................................................................ 13770 ........................................................................ 13771 ........................................................................ 13772 ........................................................................ 13773 ........................................................................ 13774 ........................................................................ 13775 ........................................................................ 13776 ........................................................................ 13777 ........................................................................ 13778 ........................................................................ 13779 ........................................................................ 13780 ........................................................................ 13781 ........................................................................ 13782 ........................................................................ 13783 ........................................................................ 13784 ........................................................................ 13785 ........................................................................ 13786 ........................................................................ 13787 ........................................................................ 13788 ........................................................................ 13789 ........................................................................ 13790 ........................................................................ 13791 ........................................................................ 13792 ........................................................................ 13793 ........................................................................ 13794 ........................................................................ 13795 ........................................................................ 13796 ........................................................................ 13797 ........................................................................ 13798 ........................................................................ 13799 ........................................................................ 13800 ........................................................................ 13801 ........................................................................ 13802 ........................................................................ 13803 ........................................................................ 13804 ........................................................................ 13805 ........................................................................ 13806 ........................................................................ 13807 ........................................................................ 13808 ........................................................................ 13809 ........................................................................ 13810 ........................................................................ 13811 ........................................................................ 13812 ........................................................................ 13813 ........................................................................ 13814 ........................................................................ 13815 ........................................................................ 13816 ........................................................................ 13817 ........................................................................ 13818 ........................................................................ 13819 ........................................................................ 13820 ........................................................................ 13821 ........................................................................ 13822 ........................................................................ 13823 ........................................................................ 13824 ........................................................................ 13825 ........................................................................ 13826 ........................................................................ 13827 ........................................................................ 13828 ........................................................................ 13829 ........................................................................ 13830 ........................................................................ 13831 ........................................................................ 13832 ........................................................................ 13833 ........................................................................ 13834 ........................................................................ 13835 ........................................................................ 13836 ........................................................................ 13837 ........................................................................ 13838 ........................................................................ 13839 ........................................................................ 13840 ........................................................................ 13841 ........................................................................ 13842 ........................................................................ 13843 ........................................................................ 13844 ........................................................................ 13845 ........................................................................ 13846 ........................................................................ 13847 ........................................................................ 13848 ........................................................................ 13849 ........................................................................ 13850 ........................................................................ 13851 ........................................................................ 13852 ........................................................................ 13853 ........................................................................ 13854 ........................................................................ 13855 ........................................................................ 13856 ........................................................................ 13857 ........................................................................ 13858 ........................................................................ 13859 ........................................................................ 13860 ........................................................................ 13861 ........................................................................ 13862 ........................................................................ 13863 ........................................................................ 13864 ........................................................................ 13865 ........................................................................ 13866 ........................................................................ 13867 ........................................................................ 13868 ........................................................................ 13869 ........................................................................ 13870 ........................................................................ 13871 ........................................................................ 13872 ........................................................................ 13873 ........................................................................ 13874 ........................................................................ 13875 ........................................................................ 13876 ........................................................................ 13877 ........................................................................ 13878 ........................................................................ 13879 ........................................................................ 13880 ........................................................................ 13881 ........................................................................ 13882 ........................................................................ 13883 ........................................................................ 13884 ........................................................................ 13885 ........................................................................ 13886 ........................................................................ 13887 ........................................................................ 13888 ........................................................................ 13889 ........................................................................ 13890 ........................................................................ 13891 ........................................................................ 13892 ........................................................................ 13893 ........................................................................ 13894 ........................................................................ 13895 ........................................................................ 13896 ........................................................................ 13897 ........................................................................ 13898 ........................................................................ 13899 ........................................................................ 13900 ........................................................................ 13901 ........................................................................ 13902 ........................................................................ 13903 ........................................................................ 13904 ........................................................................ 13905 ........................................................................ 13906 ........................................................................ 13907 ........................................................................ 13908 ........................................................................ 13909 ........................................................................ 13910 ........................................................................ 13911 ........................................................................ 13912 ........................................................................ 13913 ........................................................................ 13914 ........................................................................ 13915 ........................................................................ 13916 ........................................................................ 13917 ........................................................................ 13918 ........................................................................ 13919 ........................................................................ 13920 ........................................................................ 13921 ........................................................................ 13922 ........................................................................ 13923 ........................................................................ 13924 ........................................................................ 13925 ........................................................................ 13926 ........................................................................ 13927 ........................................................................ 13928 ........................................................................ 13929 ........................................................................ 13930 ........................................................................ 13931 ........................................................................ 13932 ........................................................................ 13933 ........................................................................ 13934 ........................................................................ 13935 ........................................................................ 13936 ........................................................................ 13937 ........................................................................ 13938 ........................................................................ 13939 ........................................................................ 13940 ........................................................................ 13941 ........................................................................ 13942 ........................................................................ 13943 ........................................................................ 13944 ........................................................................ 13945 ........................................................................ 13946 ........................................................................ 13947 ........................................................................ 13948 ........................................................................ 13949 ........................................................................ 13950 ........................................................................ 13951 ........................................................................ 13952 ........................................................................ 13953 ........................................................................ 13954 ........................................................................ 13955 ........................................................................ 13956 ........................................................................ 13957 ........................................................................ 13958 ........................................................................ 13959 ........................................................................ 13960 ........................................................................ 13961 ........................................................................ 13962 ........................................................................ 13963 ........................................................................ 13964 ........................................................................ 13965 ........................................................................ 13966 ........................................................................ 13967 ........................................................................ 13968 ........................................................................ 13969 ........................................................................ 13970 ........................................................................ 13971 ........................................................................ 13972 ........................................................................ 13973 ........................................................................ 13974 ........................................................................ 13975 ........................................................................ 13976 ........................................................................ 13977 ........................................................................ 13978 ........................................................................ 13979 ........................................................................ 13980 ........................................................................ 13981 ........................................................................ 13982 ........................................................................ 13983 ........................................................................ 13984 ........................................................................ 13985 ........................................................................ 13986 ........................................................................ 13987 ........................................................................ 13988 ........................................................................ 13989 ........................................................................ 13990 ........................................................................ 13991 ........................................................................ 13992 ........................................................................ 13993 ........................................................................ 13994 ........................................................................ 13995 ........................................................................ 13996 ........................................................................ 13997 ........................................................................ 13998 ........................................................................ 13999 ........................................................................ 14000 ........................................................................ 14001 ........................................................................ 14002 ........................................................................ 14003 ........................................................................ 14004 ........................................................................ 14005 ........................................................................ 14006 ........................................................................ 14007 ........................................................................ 14008 ........................................................................ 14009 ........................................................................ 14010 ........................................................................ 14011 ........................................................................ 14012 ........................................................................ 14013 ........................................................................ 14014 ........................................................................ 14015 ........................................................................ 14016 ........................................................................ 14017 ........................................................................ 14018 ........................................................................ 14019 ........................................................................ 14020 ........................................................................ 14021 ........................................................................ 14022 ........................................................................ 14023 ........................................................................ 14024 ........................................................................ 14025 ........................................................................ 14026 ........................................................................ 14027 ........................................................................ 14028 ........................................................................ 14029 ........................................................................ 14030 ........................................................................ 14031 ........................................................................ 14032 ........................................................................ 14033 ........................................................................ 14034 ........................................................................ 14035 ........................................................................ 14036 ........................................................................ 14037 ........................................................................ 14038 ........................................................................ 14039 ........................................................................ 14040 ........................................................................ 14041 ........................................................................ 14042 ........................................................................ 14043 ........................................................................ 14044 ........................................................................ 14045 ........................................................................ 14046 ........................................................................ 14047 ........................................................................ 14048 ........................................................................ 14049 ........................................................................ 14050 ........................................................................ 14051 ........................................................................ 14052 ........................................................................ 14053 ........................................................................ 14054 ........................................................................ 14055 ........................................................................ 14056 ........................................................................ 14057 ........................................................................ 14058 ........................................................................ 14059 ........................................................................ 14060 ........................................................................ 14061 ........................................................................ 14062 ........................................................................ 14063 ........................................................................ 14064 ........................................................................ 14065 ........................................................................ 14066 ........................................................................ 14067 ........................................................................ 14068 ........................................................................ 14069 ........................................................................ 14070 ........................................................................ 14071 ........................................................................ 14072 ........................................................................ 14073 ........................................................................ 14074 ........................................................................ 14075 ........................................................................ 14076 ........................................................................ 14077 ........................................................................ 14078 ........................................................................ 14079 ........................................................................ 14080 ........................................................................ 14081 ........................................................................ 14082 ........................................................................ 14083 ........................................................................ 14084 ........................................................................ 14085 ........................................................................ 14086 ........................................................................ 14087 ........................................................................ 14088 ........................................................................ 14089 ........................................................................ 14090 ........................................................................ 14091 ........................................................................ 14092 ........................................................................ 14093 ........................................................................ 14094 ........................................................................ 14095 ........................................................................ 14096 ........................................................................ 14097 ........................................................................ 14098 ........................................................................ 14099 ........................................................................ 14100 ........................................................................ 14101 ........................................................................ 14102 ........................................................................ 14103 ........................................................................ 14104 ........................................................................ 14105 ........................................................................ 14106 ........................................................................ 14107 ........................................................................ 14108 ........................................................................ 14109 ........................................................................ 14110 ........................................................................ 14111 ........................................................................ 14112 ........................................................................ 14113 ........................................................................ 14114 ........................................................................ 14115 ........................................................................ 14116 ........................................................................ 14117 ........................................................................ 14118 ........................................................................ 14119 ........................................................................ 14120 ........................................................................ 14121 ........................................................................ 14122 ........................................................................ 14123 ........................................................................ 14124 ........................................................................ 14125 ........................................................................ 14126 ........................................................................ 14127 ........................................................................ 14128 ........................................................................ 14129 ........................................................................ 14130 ........................................................................ 14131 ........................................................................ 14132 ........................................................................ 14133 ........................................................................ 14134 ........................................................................ 14135 ........................................................................ 14136 ........................................................................ 14137 ........................................................................ 14138 ........................................................................ 14139 ........................................................................ 14140 ........................................................................ 14141 ........................................................................ 14142 ........................................................................ 14143 ........................................................................ 14144 ........................................................................ 14145 ........................................................................ 14146 ........................................................................ 14147 ........................................................................ 14148 ........................................................................ 14149 ........................................................................ 14150 ........................................................................ 14151 ........................................................................ 14152 ........................................................................ 14153 ........................................................................ 14154 ........................................................................ 14155 ........................................................................ 14156 ........................................................................ 14157 ........................................................................ 14158 ........................................................................ 14159 ........................................................................ 14160 ........................................................................ 14161 ........................................................................ 14162 ........................................................................ 14163 ........................................................................ 14164 ........................................................................ 14165 ........................................................................ 14166 ........................................................................ 14167 ........................................................................ 14168 ........................................................................ 14169 ........................................................................ 14170 ........................................................................ 14171 ........................................................................ 14172 ........................................................................ 14173 ........................................................................ 14174 ........................................................................ 14175 ........................................................................ 14176 ........................................................................ 14177 ........................................................................ 14178 ........................................................................ 14179 ........................................................................ 14180 ........................................................................ 14181 ........................................................................ 14182 ........................................................................ 14183 ........................................................................ 14184 ........................................................................ 14185 ........................................................................ 14186 ........................................................................ 14187 ........................................................................ 14188 ........................................................................ 14189 ........................................................................ 14190 ........................................................................ 14191 ........................................................................ 14192 ........................................................................ 14193 ........................................................................ 14194 ........................................................................ 14195 ........................................................................ 14196 ........................................................................ 14197 ........................................................................ 14198 ........................................................................ 14199 ........................................................................ 14200 ........................................................................ 14201 ........................................................................ 14202 ........................................................................ 14203 ........................................................................ 14204 ........................................................................ 14205 ........................................................................ 14206 ........................................................................ 14207 ........................................................................ 14208 ........................................................................ 14209 ........................................................................ 14210 ........................................................................ 14211 ........................................................................ 14212 ........................................................................ 14213 ........................................................................ 14214 ........................................................................ 14215 ........................................................................ 14216 ........................................................................ 14217 ........................................................................ 14218 ........................................................................ 14219 ........................................................................ 14220 ........................................................................ 14221 ........................................................................ 14222 ........................................................................ 14223 ........................................................................ 14224 ........................................................................ 14225 ........................................................................ 14226 ........................................................................ 14227 ........................................................................ 14228 ........................................................................ 14229 ........................................................................ 14230 ........................................................................ 14231 ........................................................................ 14232 ........................................................................ 14233 ........................................................................ 14234 ........................................................................ 14235 ........................................................................ 14236 ........................................................................ 14237 ........................................................................ 14238 ........................................................................ 14239 ........................................................................ 14240 ........................................................................ 14241 ........................................................................ 14242 ........................................................................ 14243 ........................................................................ 14244 ........................................................................ 14245 ........................................................................ 14246 ........................................................................ 14247 ........................................................................ 14248 ........................................................................ 14249 ........................................................................ 14250 ........................................................................ 14251 ........................................................................ 14252 ........................................................................ 14253 ........................................................................ 14254 ........................................................................ 14255 ........................................................................ 14256 ........................................................................ 14257 ........................................................................ 14258 ........................................................................ 14259 ........................................................................ 14260 ........................................................................ 14261 ........................................................................ 14262 ........................................................................ 14263 ........................................................................ 14264 ........................................................................ 14265 ........................................................................ 14266 ........................................................................ 14267 ........................................................................ 14268 ........................................................................ 14269 ........................................................................ 14270 ........................................................................ 14271 ........................................................................ 14272 ........................................................................ 14273 ........................................................................ 14274 ........................................................................ 14275 ........................................................................ 14276 ........................................................................ 14277 ........................................................................ 14278 ........................................................................ 14279 ........................................................................ 14280 ........................................................................ 14281 ........................................................................ 14282 ........................................................................ 14283 ........................................................................ 14284 ........................................................................ 14285 ........................................................................ 14286 ........................................................................ 14287 ........................................................................ 14288 ........................................................................ 14289 ........................................................................ 14290 ........................................................................ 14291 ........................................................................ 14292 ........................................................................ 14293 ........................................................................ 14294 ........................................................................ 14295 ........................................................................ 14296 ........................................................................ 14297 ........................................................................ 14298 ........................................................................ 14299 ........................................................................ 14300 ........................................................................ 14301 ........................................................................ 14302 ........................................................................ 14303 ........................................................................ 14304 ........................................................................ 14305 ........................................................................ 14306 ........................................................................ 14307 ........................................................................ 14308 ........................................................................ 14309 ........................................................................ 14310 ........................................................................ 14311 ........................................................................ 14312 ........................................................................ 14313 ........................................................................ 14314 ........................................................................ 14315 ........................................................................ 14316 ........................................................................ 14317 ........................................................................ 14318 ........................................................................ 14319 ........................................................................ 14320 ........................................................................ 14321 ........................................................................ 14322 ........................................................................ 14323 ........................................................................ 14324 ........................................................................ 14325 ........................................................................ 14326 ........................................................................ 14327 ........................................................................ 14328 ........................................................................ 14329 ........................................................................ 14330 ........................................................................ 14331 ........................................................................ 14332 ........................................................................ 14333 ........................................................................ 14334 ........................................................................ 14335 ........................................................................ 14336 ........................................................................ 14337 ........................................................................ 14338 ........................................................................ 14339 ........................................................................ 14340 ........................................................................ 14341 ........................................................................ 14342 ........................................................................ 14343 ........................................................................ 14344 ........................................................................ 14345 ........................................................................ 14346 ........................................................................ 14347 ........................................................................ 14348 ........................................................................ 14349 ........................................................................ 14350 ........................................................................ 14351 ........................................................................ 14352 ........................................................................ 14353 ........................................................................ 14354 ........................................................................ 14355 ........................................................................ 14356 ........................................................................ 14357 ........................................................................ 14358 ........................................................................ 14359 ........................................................................ 14360 ........................................................................ 14361 ........................................................................ 14362 ........................................................................ 14363 ........................................................................ 14364 ........................................................................ 14365 ........................................................................ 14366 ........................................................................ 14367 ........................................................................ 14368 ........................................................................ 14369 ........................................................................ 14370 ........................................................................ 14371 ........................................................................ 14372 ........................................................................ 14373 ........................................................................ 14374 ........................................................................ 14375 ........................................................................ 14376 ........................................................................ 14377 ........................................................................ 14378 ........................................................................ 14379 ........................................................................ 14380 ........................................................................ 14381 ........................................................................ 14382 ........................................................................ 14383 ........................................................................ 14384 ........................................................................ 14385 ........................................................................ 14386 ........................................................................ 14387 ........................................................................ 14388 ........................................................................ 14389 ........................................................................ 14390 ........................................................................ 14391 ........................................................................ 14392 ........................................................................ 14393 ........................................................................ 14394 ........................................................................ 14395 ........................................................................ 14396 ........................................................................ 14397 ........................................................................ 14398 ........................................................................ 14399 ........................................................................ 14400 ........................................................................ 14401 ........................................................................ 14402 ........................................................................ 14403 ........................................................................ 14404 ........................................................................ 14405 ........................................................................ 14406 ........................................................................ 14407 ........................................................................ 14408 ........................................................................ 14409 ........................................................................ 14410 ........................................................................ 14411 ........................................................................ 14412 ........................................................................ 14413 ........................................................................ 14414 ........................................................................ 14415 ........................................................................ 14416 ........................................................................ 14417 ........................................................................ 14418 ........................................................................ 14419 ........................................................................ 14420 ........................................................................ 14421 ........................................................................ 14422 ........................................................................ 14423 ........................................................................ 14424 ........................................................................ 14425 ........................................................................ 14426 ........................................................................ 14427 ........................................................................ 14428 ........................................................................ 14429 ........................................................................ 14430 ........................................................................ 14431 ........................................................................ 14432 ........................................................................ 14433 ........................................................................ 14434 ........................................................................ 14435 ........................................................................ 14436 ........................................................................ 14437 ........................................................................ 14438 ........................................................................ 14439 ........................................................................ 14440 ........................................................................ 14441 ........................................................................ 14442 ........................................................................ 14443 ........................................................................ 14444 ........................................................................ 14445 ........................................................................ 14446 ........................................................................ 14447 ........................................................................ 14448 ........................................................................ 14449 ........................................................................ 14450 ........................................................................ 14451 ........................................................................ 14452 ........................................................................ 14453 ........................................................................ 14454 ........................................................................ 14455 ........................................................................ 14456 ........................................................................ 14457 ........................................................................ 14458 ........................................................................ 14459 ........................................................................ 14460 ........................................................................ 14461 ........................................................................ 14462 ........................................................................ 14463 ........................................................................ 14464 ........................................................................ 14465 ........................................................................ 14466 ........................................................................ 14467 ........................................................................ 14468 ........................................................................ 14469 ........................................................................ 14470 ........................................................................ 14471 ........................................................................ 14472 ........................................................................ 14473 ........................................................................ 14474 ........................................................................ 14475 ........................................................................ 14476 ........................................................................ 14477 ........................................................................ 14478 ........................................................................ 14479 ........................................................................ 14480 ........................................................................ 14481 ........................................................................ 14482 ........................................................................ 14483 ........................................................................ 14484 ........................................................................ 14485 ........................................................................ 14486 ........................................................................ 14487 ........................................................................ 14488 ........................................................................ 14489 ........................................................................ 14490 ........................................................................ 14491 ........................................................................ 14492 ........................................................................ 14493 ........................................................................ 14494 ........................................................................ 14495 ........................................................................ 14496 ........................................................................ 14497 ........................................................................ 14498 ........................................................................ 14499 ........................................................................ 14500 ........................................................................ 14501 ........................................................................ 14502 ........................................................................ 14503 ........................................................................ 14504 ........................................................................ 14505 ........................................................................ 14506 ........................................................................ 14507 ........................................................................ 14508 ........................................................................ 14509 ........................................................................ 14510 ........................................................................ 14511 ........................................................................ 14512 ........................................................................ 14513 ........................................................................ 14514 ........................................................................ 14515 ........................................................................ 14516 ........................................................................ 14517 ........................................................................ 14518 ........................................................................ 14519 ........................................................................ 14520 ........................................................................ 14521 ........................................................................ 14522 ........................................................................ 14523 ........................................................................ 14524 ........................................................................ 14525 ........................................................................ 14526 ........................................................................ 14527 ........................................................................ 14528 ........................................................................ 14529 ........................................................................ 14530 ........................................................................ 14531 ........................................................................ 14532 ........................................................................ 14533 ........................................................................ 14534 ........................................................................ 14535 ........................................................................ 14536 ........................................................................ 14537 ........................................................................ 14538 ........................................................................ 14539 ........................................................................ 14540 ........................................................................ 14541 ........................................................................ 14542 ........................................................................ 14543 ........................................................................ 14544 ........................................................................ 14545 ........................................................................ 14546 ........................................................................ 14547 ........................................................................ 14548 ........................................................................ 14549 ........................................................................ 14550 ........................................................................ 14551 ........................................................................ 14552 ........................................................................ 14553 ........................................................................ 14554 ........................................................................ 14555 ........................................................................ 14556 ........................................................................ 14557 ........................................................................ 14558 ........................................................................ 14559 ........................................................................ 14560 ........................................................................ 14561 ........................................................................ 14562 ........................................................................ 14563 ........................................................................ 14564 ........................................................................ 14565 ........................................................................ 14566 ........................................................................ 14567 ........................................................................ 14568 ........................................................................ 14569 ........................................................................ 14570 ........................................................................ 14571 ........................................................................ 14572 ........................................................................ 14573 ........................................................................ 14574 ........................................................................ 14575 ........................................................................ 14576 ........................................................................ 14577 ........................................................................ 14578 ........................................................................ 14579 ........................................................................ 14580 ........................................................................ 14581 ........................................................................ 14582 ........................................................................ 14583 ........................................................................ 14584 ........................................................................ 14585 ........................................................................ 14586 ........................................................................ 14587 ........................................................................ 14588 ........................................................................ 14589 ........................................................................ 14590 ........................................................................ 14591 ........................................................................ 14592 ........................................................................ 14593 ........................................................................ 14594 ........................................................................ 14595 ........................................................................ 14596 ........................................................................ 14597 ........................................................................ 14598 ........................................................................ 14599 ........................................................................ 14600 ........................................................................ 14601 ........................................................................ 14602 ........................................................................ 14603 ........................................................................ 14604 ........................................................................ 14605 ........................................................................ 14606 ........................................................................ 14607 ........................................................................ 14608 ........................................................................ 14609 ........................................................................ 14610 ........................................................................ 14611 ........................................................................ 14612 ........................................................................ 14613 ........................................................................ 14614 ........................................................................ 14615 ........................................................................ 14616 ........................................................................ 14617 ........................................................................ 14618 ........................................................................ 14619 ........................................................................ 14620 ........................................................................ 14621 ........................................................................ 14622 ........................................................................ 14623 ........................................................................ 14624 ........................................................................ 14625 ........................................................................ 14626 ........................................................................ 14627 ........................................................................ 14628 ........................................................................ 14629 ........................................................................ 14630 ........................................................................ 14631 ........................................................................ 14632 ........................................................................ 14633 ........................................................................ 14634 ........................................................................ 14635 ........................................................................ 14636 ........................................................................ 14637 ........................................................................ 14638 ........................................................................ 14639 ........................................................................ 14640 ........................................................................ 14641 ........................................................................ 14642 ........................................................................ 14643 ........................................................................ 14644 ........................................................................ 14645 ........................................................................ 14646 ........................................................................ 14647 ........................................................................ 14648 ........................................................................ 14649 ........................................................................ 14650 ........................................................................ 14651 ........................................................................ 14652 ........................................................................ 14653 ........................................................................ 14654 ........................................................................ 14655 ........................................................................ 14656 ........................................................................ 14657 ........................................................................ 14658 ........................................................................ 14659 ........................................................................ 14660 ........................................................................ 14661 ........................................................................ 14662 ........................................................................ 14663 ........................................................................ 14664 ........................................................................ 14665 ........................................................................ 14666 ........................................................................ 14667 ........................................................................ 14668 ........................................................................ 14669 ........................................................................ 14670 ........................................................................ 14671 ........................................................................ 14672 ........................................................................ 14673 ........................................................................ 14674 ........................................................................ 14675 ........................................................................ 14676 ........................................................................ 14677 ........................................................................ 14678 ........................................................................ 14679 ........................................................................ 14680 ........................................................................ 14681 ........................................................................ 14682 ........................................................................ 14683 ........................................................................ 14684 ........................................................................ 14685 ........................................................................ 14686 ........................................................................ 14687 ........................................................................ 14688 ........................................................................ 14689 ........................................................................ 14690 ........................................................................ 14691 ........................................................................ 14692 ........................................................................ 14693 ........................................................................ 14694 ........................................................................ 14695 ........................................................................ 14696 ........................................................................ 14697 ........................................................................ 14698 ........................................................................ 14699 ........................................................................ 14700 ........................................................................ 14701 ........................................................................ 14702 ........................................................................ 14703 ........................................................................ 14704 ........................................................................ 14705 ........................................................................ 14706 ........................................................................ 14707 ........................................................................ 14708 ........................................................................ 14709 ........................................................................ 14710 ........................................................................ 14711 ........................................................................ 14712 ........................................................................ 14713 ........................................................................ 14714 ........................................................................ 14715 ........................................................................ 14716 ........................................................................ 14717 ........................................................................ 14718 ........................................................................ 14719 ........................................................................ 14720 ........................................................................ 14721 ........................................................................ 14722 ........................................................................ 14723 ........................................................................ 14724 ........................................................................ 14725 ........................................................................ 14726 ........................................................................ 14727 ........................................................................ 14728 ........................................................................ 14729 ........................................................................ 14730 ........................................................................ 14731 ........................................................................ 14732 ........................................................................ 14733 ........................................................................ 14734 ........................................................................ 14735 ........................................................................ 14736 ........................................................................ 14737 ........................................................................ 14738 ........................................................................ 14739 ........................................................................ 14740 ........................................................................ 14741 ........................................................................ 14742 ........................................................................ 14743 ........................................................................ 14744 ........................................................................ 14745 ........................................................................ 14746 ........................................................................ 14747 ........................................................................ 14748 ........................................................................ 14749 ........................................................................ 14750 ........................................................................ 14751 ........................................................................ 14752 ........................................................................ 14753 ........................................................................ 14754 ........................................................................ 14755 ........................................................................ 14756 ........................................................................ 14757 ........................................................................ 14758 ........................................................................ 14759 ........................................................................ 14760 ........................................................................ 14761 ........................................................................ 14762 ........................................................................ 14763 ........................................................................ 14764 ........................................................................ 14765 ........................................................................ 14766 ........................................................................ 14767 ........................................................................ 14768 ........................................................................ 14769 ........................................................................ 14770 ........................................................................ 14771 ........................................................................ 14772 ........................................................................ 14773 ........................................................................ 14774 ........................................................................ 14775 ........................................................................ 14776 ........................................................................ 14777 ........................................................................ 14778 ........................................................................ 14779 ........................................................................ 14780 ........................................................................ 14781 ........................................................................ 14782 ........................................................................ 14783 ........................................................................ 14784 ........................................................................ 14785 ........................................................................ 14786 ........................................................................ 14787 ........................................................................ 14788 ........................................................................ 14789 ........................................................................ 14790 ........................................................................ 14791 ........................................................................ 14792 ........................................................................ 14793 ........................................................................ 14794 ........................................................................ 14795 ........................................................................ 14796 ........................................................................ 14797 ........................................................................ 14798 ........................................................................ 14799 ........................................................................ 14800 ........................................................................ 14801 ........................................................................ 14802 ........................................................................ 14803 ........................................................................ 14804 ........................................................................ 14805 ........................................................................ 14806 ........................................................................ 14807 ........................................................................ 14808 ........................................................................ 14809 ........................................................................ 14810 ........................................................................ 14811 ........................................................................ 14812 ........................................................................ 14813 ........................................................................ 14814 ........................................................................ 14815 ........................................................................ 14816 ........................................................................ 14817 ........................................................................ 14818 ........................................................................ 14819 ........................................................................ 14820 ........................................................................ 14821 ........................................................................ 14822 ........................................................................ 14823 ........................................................................ 14824 ........................................................................ 14825 ........................................................................ 14826 ........................................................................ 14827 ........................................................................ 14828 ........................................................................ 14829 ........................................................................ 14830 ........................................................................ 14831 ........................................................................ 14832 ........................................................................ 14833 ........................................................................ 14834 ........................................................................ 14835 ........................................................................ 14836 ........................................................................ 14837 ........................................................................ 14838 ........................................................................ 14839 ........................................................................ 14840 ........................................................................ 14841 ........................................................................ 14842 ........................................................................ 14843 ........................................................................ 14844 ........................................................................ 14845 ........................................................................ 14846 ........................................................................ 14847 ........................................................................ 14848 ........................................................................ 14849 ........................................................................ 14850 ........................................................................ 14851 ........................................................................ 14852 ........................................................................ 14853 ........................................................................ 14854 ........................................................................ 14855 ........................................................................ 14856 ........................................................................ 14857 ........................................................................ 14858 ........................................................................ 14859 ........................................................................ 14860 ........................................................................ 14861 ........................................................................ 14862 ........................................................................ 14863 ........................................................................ 14864 ........................................................................ 14865 ........................................................................ 14866 ........................................................................ 14867 ........................................................................ 14868 ........................................................................ 14869 ........................................................................ 14870 ........................................................................ 14871 ........................................................................ 14872 ........................................................................ 14873 ........................................................................ 14874 ........................................................................ 14875 ........................................................................ 14876 ........................................................................ 14877 ........................................................................ 14878 ........................................................................ 14879 ........................................................................ 14880 ........................................................................ 14881 ........................................................................ 14882 ........................................................................ 14883 ........................................................................ 14884 ........................................................................ 14885 ........................................................................ 14886 ........................................................................ 14887 ........................................................................ 14888 ........................................................................ 14889 ........................................................................ 14890 ........................................................................ 14891 ........................................................................ 14892 ........................................................................ 14893 ........................................................................ 14894 ........................................................................ 14895 ........................................................................ 14896 ........................................................................ 14897 ........................................................................ 14898 ........................................................................ 14899 ........................................................................ 14900 ........................................................................ 14901 ........................................................................ 14902 ........................................................................ 14903 ........................................................................ 14904 ........................................................................ 14905 ........................................................................ 14906 ........................................................................ 14907 ........................................................................ 14908 ........................................................................ 14909 ........................................................................ 14910 ........................................................................ 14911 ........................................................................ 14912 ........................................................................ 14913 ........................................................................ 14914 ........................................................................ 14915 ........................................................................ 14916 ........................................................................ 14917 ........................................................................ 14918 ........................................................................ 14919 ........................................................................ 14920 ........................................................................ 14921 ........................................................................ 14922 ........................................................................ 14923 ........................................................................ 14924 ........................................................................ 14925 ........................................................................ 14926 ........................................................................ 14927 ........................................................................ 14928 ........................................................................ 14929 ........................................................................ 14930 ........................................................................ 14931 ........................................................................ 14932 ........................................................................ 14933 ........................................................................ 14934 ........................................................................ 14935 ........................................................................ 14936 ........................................................................ 14937 ........................................................................ 14938 ........................................................................ 14939 ........................................................................ 14940 ........................................................................ 14941 ........................................................................ 14942 ........................................................................ 14943 ........................................................................ 14944 ........................................................................ 14945 ........................................................................ 14946 ........................................................................ 14947 ........................................................................ 14948 ........................................................................ 14949 ........................................................................ 14950 ........................................................................ 14951 ........................................................................ 14952 ........................................................................ 14953 ........................................................................ 14954 ........................................................................ 14955 ........................................................................ 14956 ........................................................................ 14957 ........................................................................ 14958 ........................................................................ 14959 ........................................................................ 14960 ........................................................................ 14961 ........................................................................ 14962 ........................................................................ 14963 ........................................................................ 14964 ........................................................................ 14965 ........................................................................ 14966 ........................................................................ 14967 ........................................................................ 14968 ........................................................................ 14969 ........................................................................ 14970 ........................................................................ 14971 ........................................................................ 14972 ........................................................................ 14973 ........................................................................ 14974 ........................................................................ 14975 ........................................................................ 14976 ........................................................................ 14977 ........................................................................ 14978 ........................................................................ 14979 ........................................................................ 14980 ........................................................................ 14981 ........................................................................ 14982 ........................................................................ 14983 ........................................................................ 14984 ........................................................................ 14985 ........................................................................ 14986 ........................................................................ 14987 ........................................................................ 14988 ........................................................................ 14989 ........................................................................ 14990 ........................................................................ 14991 ........................................................................ 14992 ........................................................................ 14993 ........................................................................ 14994 ........................................................................ 14995 ........................................................................ 14996 ........................................................................ 14997 ........................................................................ 14998 ........................................................................ 14999 ........................................................................ 15000 ........................................................................ 15001 ........................................................................ 15002 ........................................................................ 15003 ........................................................................ 15004 ........................................................................ 15005 ........................................................................ 15006 ........................................................................ 15007 ........................................................................ 15008 ........................................................................ 15009 ........................................................................ 15010 ........................................................................ 15011 ........................................................................ 15012 ........................................................................ 15013 ........................................................................ 15014 ........................................................................ 15015 ........................................................................ 15016 ........................................................................ 15017 ........................................................................ 15018 ........................................................................ 15019 ........................................................................ 15020 ........................................................................ 15021 ........................................................................ 15022 ........................................................................ 15023 ........................................................................ 15024 ........................................................................ 15025 ........................................................................ 15026 ........................................................................ 15027 ........................................................................ 15028 ........................................................................ 15029 ........................................................................ 15030 ........................................................................ 15031 ........................................................................ 15032 ........................................................................ 15033 ........................................................................ 15034 ........................................................................ 15035 ........................................................................ 15036 ........................................................................ 15037 ........................................................................ 15038 ........................................................................ 15039 ........................................................................ 15040 ........................................................................ 15041 ........................................................................ 15042 ........................................................................ 15043 ........................................................................ 15044 ........................................................................ 15045 ........................................................................ 15046 ........................................................................ 15047 ........................................................................ 15048 ........................................................................ 15049 ........................................................................ 15050 ........................................................................ 15051 ........................................................................ 15052 ........................................................................ 15053 ........................................................................ 15054 ........................................................................ 15055 ........................................................................ 15056 ........................................................................ 15057 ........................................................................ 15058 ........................................................................ 15059 ........................................................................ 15060 ........................................................................ 15061 ........................................................................ 15062 ........................................................................ 15063 ........................................................................ 15064 ........................................................................ 15065 ........................................................................ 15066 ........................................................................ 15067 ........................................................................ 15068 ........................................................................ 15069 ........................................................................ 15070 ........................................................................ 15071 ........................................................................ 15072 ........................................................................ 15073 ........................................................................ 15074 ........................................................................ 15075 ........................................................................ 15076 ........................................................................ 15077 ........................................................................ 15078 ........................................................................ 15079 ........................................................................ 15080 ........................................................................ 15081 ........................................................................ 15082 ........................................................................ 15083 ........................................................................ 15084 ........................................................................ 15085 ........................................................................ 15086 ........................................................................ 15087 ........................................................................ 15088 ........................................................................ 15089 ........................................................................ 15090 ........................................................................ 15091 ........................................................................ 15092 ........................................................................ 15093 ........................................................................ 15094 ........................................................................ 15095 ........................................................................ 15096 ........................................................................ 15097 ........................................................................ 15098 ........................................................................ 15099 ........................................................................ 15100 ........................................................................ 15101 ........................................................................ 15102 ........................................................................ 15103 ........................................................................ 15104 ........................................................................ 15105 ........................................................................ 15106 ........................................................................ 15107 ........................................................................ 15108 ........................................................................ 15109 ........................................................................ 15110 ........................................................................ 15111 ........................................................................ 15112 ........................................................................ 15113 ........................................................................ 15114 ........................................................................ 15115 ........................................................................ 15116 ........................................................................ 15117 ........................................................................ 15118 ........................................................................ 15119 ........................................................................ 15120 ........................................................................ 15121 ........................................................................ 15122 ........................................................................ 15123 ........................................................................ 15124 ........................................................................ 15125 ........................................................................ 15126 ........................................................................ 15127 ........................................................................ 15128 ........................................................................ 15129 ........................................................................ 15130 ........................................................................ 15131 ........................................................................ 15132 ........................................................................ 15133 ........................................................................ 15134 ........................................................................ 15135 ........................................................................ 15136 ........................................................................ 15137 ........................................................................ 15138 ........................................................................ 15139 ........................................................................ 15140 ........................................................................ 15141 ........................................................................ 15142 ........................................................................ 15143 ........................................................................ 15144 ........................................................................ 15145 ........................................................................ 15146 ........................................................................ 15147 ........................................................................ 15148 ........................................................................ 15149 ........................................................................ 15150 ........................................................................ 15151 ........................................................................ 15152 ........................................................................ 15153 ........................................................................ 15154 ........................................................................ 15155 ........................................................................ 15156 ........................................................................ 15157 ........................................................................ 15158 ........................................................................ 15159 ........................................................................ 15160 ........................................................................ 15161 ........................................................................ 15162 ........................................................................ 15163 ........................................................................ 15164 ........................................................................ 15165 ........................................................................ 15166 ........................................................................ 15167 ........................................................................ 15168 ........................................................................ 15169 ........................................................................ 15170 ........................................................................ 15171 ........................................................................ 15172 ........................................................................ 15173 ........................................................................ 15174 ........................................................................ 15175 ........................................................................ 15176 ........................................................................ 15177 ........................................................................ 15178 ........................................................................ 15179 ........................................................................ 15180 ........................................................................ 15181 ........................................................................ 15182 ........................................................................ 15183 ........................................................................ 15184 ........................................................................ 15185 ........................................................................ 15186 ........................................................................ 15187 ........................................................................ 15188 ........................................................................ 15189 ........................................................................ 15190 ........................................................................ 15191 ........................................................................ 15192 ........................................................................ 15193 ........................................................................ 15194 ........................................................................ 15195 ........................................................................ 15196 ........................................................................ 15197 ........................................................................ 15198 ........................................................................ 15199 ........................................................................ 15200 ........................................................................ 15201 ........................................................................ 15202 ........................................................................ 15203 ........................................................................ 15204 ........................................................................ 15205 ........................................................................ 15206 ........................................................................ 15207 ........................................................................ 15208 ........................................................................ 15209 ........................................................................ 15210 ........................................................................ 15211 ........................................................................ 15212 ........................................................................ 15213 ........................................................................ 15214 ........................................................................ 15215 ........................................................................ 15216 ........................................................................ 15217 ........................................................................ 15218 ........................................................................ 15219 ........................................................................ 15220 ........................................................................ 15221 ........................................................................ 15222 ........................................................................ 15223 ........................................................................ 15224 ........................................................................ 15225 ........................................................................ 15226 ........................................................................ 15227 ........................................................................ 15228 ........................................................................ 15229 ........................................................................ 15230 ........................................................................ 15231 ........................................................................ 15232 ........................................................................ 15233 ........................................................................ 15234 ........................................................................ 15235 ........................................................................ 15236 ........................................................................ 15237 ........................................................................ 15238 ........................................................................ 15239 ........................................................................ 15240 ........................................................................ 15241 ........................................................................ 15242 ........................................................................ 15243 ........................................................................ 15244 ........................................................................ 15245 ........................................................................ 15246 ........................................................................ 15247 ........................................................................ 15248 ........................................................................ 15249 ........................................................................ 15250 ........................................................................ 15251 ........................................................................ 15252 ........................................................................ 15253 ........................................................................ 15254 ........................................................................ 15255 ........................................................................ 15256 ........................................................................ 15257 ........................................................................ 15258 ........................................................................ 15259 ........................................................................ 15260 ........................................................................ 15261 ........................................................................ 15262 ........................................................................ 15263 ........................................................................ 15264 ........................................................................ 15265 ........................................................................ 15266 ........................................................................ 15267 ........................................................................ 15268 ........................................................................ 15269 ........................................................................ 15270 ........................................................................ 15271 ........................................................................ 15272 ........................................................................ 15273 ........................................................................ 15274 ........................................................................ 15275 ........................................................................ 15276 ........................................................................ 15277 ........................................................................ 15278 ........................................................................ 15279 ........................................................................ 15280 ........................................................................ 15281 ........................................................................ 15282 ........................................................................ 15283 ........................................................................ 15284 ........................................................................ 15285 ........................................................................ 15286 ........................................................................ 15287 ........................................................................ 15288 ........................................................................ 15289 ........................................................................ 15290 ........................................................................ 15291 ........................................................................ 15292 ........................................................................ 15293 ........................................................................ 15294 ........................................................................ 15295 ........................................................................ 15296 ........................................................................ 15297 ........................................................................ 15298 ........................................................................ 15299 ........................................................................ 15300 ........................................................................ 15301 ........................................................................ 15302 ........................................................................ 15303 ........................................................................ 15304 ........................................................................ 15305 ........................................................................ 15306 ........................................................................ 15307 ........................................................................ 15308 ........................................................................ 15309 ........................................................................ 15310 ........................................................................ 15311 ........................................................................ 15312 ........................................................................ 15313 ........................................................................ 15314 ........................................................................ 15315 ........................................................................ 15316 ........................................................................ 15317 ........................................................................ 15318 ........................................................................ 15319 ........................................................................ 15320 ........................................................................ 15321 ........................................................................ 15322 ........................................................................ 15323 ........................................................................ 15324 ........................................................................ 15325 ........................................................................ 15326 ........................................................................ 15327 ........................................................................ 15328 ........................................................................ 15329 ........................................................................ 15330 ........................................................................ 15331 ........................................................................ 15332 ........................................................................ 15333 ........................................................................ 15334 ........................................................................ 15335 ........................................................................ 15336 ........................................................................ 15337 ........................................................................ 15338 ........................................................................ 15339 ........................................................................ 15340 ........................................................................ 15341 ........................................................................ 15342 ........................................................................ 15343 ........................................................................ 15344 ........................................................................ 15345 ........................................................................ 15346 ........................................................................ 15347 ........................................................................ 15348 ........................................................................ 15349 ........................................................................ 15350 ........................................................................ 15351 ........................................................................ 15352 ........................................................................ 15353 ........................................................................ 15354 ........................................................................ 15355 ........................................................................ 15356 ........................................................................ 15357 ........................................................................ 15358 ........................................................................ 15359 ........................................................................ 15360 ........................................................................ 15361 ........................................................................ 15362 ........................................................................ 15363 ........................................................................ 15364 ........................................................................ 15365 ........................................................................ 15366 ........................................................................ 15367 ........................................................................ 15368 ........................................................................ 15369 ........................................................................ 15370 ........................................................................ 15371 ........................................................................ 15372 ........................................................................ 15373 ........................................................................ 15374 ........................................................................ 15375 ........................................................................ 15376 ........................................................................ 15377 ........................................................................ 15378 ........................................................................ 15379 ........................................................................ 15380 ........................................................................ 15381 ........................................................................ 15382 ........................................................................ 15383 ........................................................................ 15384 ........................................................................ 15385 ........................................................................ 15386 ........................................................................ 15387 ........................................................................ 15388 ........................................................................ 15389 ........................................................................ 15390 ........................................................................ 15391 ........................................................................ 15392 ........................................................................ 15393 ........................................................................ 15394 ........................................................................ 15395 ........................................................................ 15396 ........................................................................ 15397 ........................................................................ 15398 ........................................................................ 15399 ........................................................................ 15400 ........................................................................ 15401 ........................................................................ 15402 ........................................................................ 15403 ........................................................................ 15404 ........................................................................ 15405 ........................................................................ 15406 ........................................................................ 15407 ........................................................................ 15408 ........................................................................ 15409 ........................................................................ 15410 ........................................................................ 15411 ........................................................................ 15412 ........................................................................ 15413 ........................................................................ 15414 ........................................................................ 15415 ........................................................................ 15416 ........................................................................ 15417 ........................................................................ 15418 ........................................................................ 15419 ........................................................................ 15420 ........................................................................ 15421 ........................................................................ 15422 ........................................................................ 15423 ........................................................................ 15424 ........................................................................ 15425 ........................................................................ 15426 ........................................................................ 15427 ........................................................................ 15428 ........................................................................ 15429 ........................................................................ 15430 ........................................................................ 15431 ........................................................................ 15432 ........................................................................ 15433 ........................................................................ 15434 ........................................................................ 15435 ........................................................................ 15436 ........................................................................ 15437 ........................................................................ 15438 ........................................................................ 15439 ........................................................................ 15440 ........................................................................ 15441 ........................................................................ 15442 ........................................................................ 15443 ........................................................................ 15444 ........................................................................ 15445 ........................................................................ 15446 ........................................................................ 15447 ........................................................................ 15448 ........................................................................ 15449 ........................................................................ 15450 ........................................................................ 15451 ........................................................................ 15452 ........................................................................ 15453 ........................................................................ 15454 ........................................................................ 15455 ........................................................................ 15456 ........................................................................ 15457 ........................................................................ 15458 ........................................................................ 15459 ........................................................................ 15460 ........................................................................ 15461 ........................................................................ 15462 ........................................................................ 15463 ........................................................................ 15464 ........................................................................ 15465 ........................................................................ 15466 ........................................................................ 15467 ........................................................................ 15468 ........................................................................ 15469 ........................................................................ 15470 ........................................................................ 15471 ........................................................................ 15472 ........................................................................ 15473 ........................................................................ 15474 ........................................................................ 15475 ........................................................................ 15476 ........................................................................ 15477 ........................................................................ 15478 ........................................................................ 15479 ........................................................................ 15480 ........................................................................ 15481 ........................................................................ 15482 ........................................................................ 15483 ........................................................................ 15484 ........................................................................ 15485 ........................................................................ 15486 ........................................................................ 15487 ........................................................................ 15488 ........................................................................ 15489 ........................................................................ 15490 ........................................................................ 15491 ........................................................................ 15492 ........................................................................ 15493 ........................................................................ 15494 ........................................................................ 15495 ........................................................................ 15496 ........................................................................ 15497 ........................................................................ 15498 ........................................................................ 15499 ........................................................................ 15500 ........................................................................ 15501 ........................................................................ 15502 ........................................................................ 15503 ........................................................................ 15504 ........................................................................ 15505 ........................................................................ 15506 ........................................................................ 15507 ........................................................................ 15508 ........................................................................ 15509 ........................................................................ 15510 ........................................................................ 15511 ........................................................................ 15512 ........................................................................ 15513 ........................................................................ 15514 ........................................................................ 15515 ........................................................................ 15516 ........................................................................ 15517 ........................................................................ 15518 ........................................................................ 15519 ........................................................................ 15520 ........................................................................ 15521 ........................................................................ 15522 ........................................................................ 15523 ........................................................................ 15524 ........................................................................ 15525 ........................................................................ 15526 ........................................................................ 15527 ........................................................................ 15528 ........................................................................ 15529 ........................................................................ 15530 ........................................................................ 15531 ........................................................................ 15532 ........................................................................ 15533 ........................................................................ 15534 ........................................................................ 15535 ........................................................................ 15536 ........................................................................ 15537 ........................................................................ 15538 ........................................................................ 15539 ........................................................................ 15540 ........................................................................ 15541 ........................................................................ 15542 ........................................................................ 15543 ........................................................................ 15544 ........................................................................ 15545 ........................................................................ 15546 ........................................................................ 15547 ........................................................................ 15548 ........................................................................ 15549 ........................................................................ 15550 ........................................................................ 15551 ........................................................................ 15552 ........................................................................ 15553 ........................................................................ 15554 ........................................................................ 15555 ........................................................................ 15556 ........................................................................ 15557 ........................................................................ 15558 ........................................................................ 15559 ........................................................................ 15560 ........................................................................ 15561 ........................................................................ 15562 ........................................................................ 15563 ........................................................................ 15564 ........................................................................ 15565 ........................................................................ 15566 ........................................................................ 15567 ........................................................................ 15568 ........................................................................ 15569 ........................................................................ 15570 ........................................................................ 15571 ........................................................................ 15572 ........................................................................ 15573 ........................................................................ 15574 ........................................................................ 15575 ........................................................................ 15576 ........................................................................ 15577 ........................................................................ 15578 ........................................................................ 15579 ........................................................................ 15580 ........................................................................ 15581 ........................................................................ 15582 ........................................................................ 15583 ........................................................................ 15584 ........................................................................ 15585 ........................................................................ 15586 ........................................................................ 15587 ........................................................................ 15588 ........................................................................ 15589 ........................................................................ 15590 ........................................................................ 15591 ........................................................................ 15592 ........................................................................ 15593 ........................................................................ 15594 ........................................................................ 15595 ........................................................................ 15596 ........................................................................ 15597 ........................................................................ 15598 ........................................................................ 15599 ........................................................................ 15600 ........................................................................ 15601 ........................................................................ 15602 ........................................................................ 15603 ........................................................................ 15604 ........................................................................ 15605 ........................................................................ 15606 ........................................................................ 15607 ........................................................................ 15608 ........................................................................ 15609 ........................................................................ 15610 ........................................................................ 15611 ........................................................................ 15612 ........................................................................ 15613 ........................................................................ 15614 ........................................................................ 15615 ........................................................................ 15616 ........................................................................ 15617 ........................................................................ 15618 ........................................................................ 15619 ........................................................................ 15620 ........................................................................ 15621 ........................................................................ 15622 ........................................................................ 15623 ........................................................................ 15624 ........................................................................ 15625 ........................................................................ 15626 ........................................................................ 15627 ........................................................................ 15628 ........................................................................ 15629 ........................................................................ 15630 ........................................................................ 15631 ........................................................................ 15632 ........................................................................ 15633 ........................................................................ 15634 ........................................................................ 15635 ........................................................................ 15636 ........................................................................ 15637 ........................................................................ 15638 ........................................................................ 15639 ........................................................................ 15640 ........................................................................ 15641 ........................................................................ 15642 ........................................................................ 15643 ........................................................................ 15644 ........................................................................ 15645 ........................................................................ 15646 ........................................................................ 15647 ........................................................................ 15648 ........................................................................ 15649 ........................................................................ 15650 ........................................................................ 15651 ........................................................................ 15652 ........................................................................ 15653 ........................................................................ 15654 ........................................................................ 15655 ........................................................................ 15656 ........................................................................ 15657 ........................................................................ 15658 ........................................................................ 15659 ........................................................................ 15660 ........................................................................ 15661 ........................................................................ 15662 ........................................................................ 15663 ........................................................................ 15664 ........................................................................ 15665 ........................................................................ 15666 ........................................................................ 15667 ........................................................................ 15668 ........................................................................ 15669 ........................................................................ 15670 ........................................................................ 15671 ........................................................................ 15672 ........................................................................ 15673 ........................................................................ 15674 ........................................................................ 15675 ........................................................................ 15676 ........................................................................ 15677 ........................................................................ 15678 ........................................................................ 15679 ........................................................................ 15680 ........................................................................ 15681 ........................................................................ 15682 ........................................................................ 15683 ........................................................................ 15684 ........................................................................ 15685 ........................................................................ 15686 ........................................................................ 15687 ........................................................................ 15688 ........................................................................ 15689 ........................................................................ 15690 ........................................................................ 15691 ........................................................................ 15692 ........................................................................ 15693 ........................................................................ 15694 ........................................................................ 15695 ........................................................................ 15696 ........................................................................ 15697 ........................................................................ 15698 ........................................................................ 15699 ........................................................................ 15700 ........................................................................ 15701 ........................................................................ 15702 ........................................................................ 15703 ........................................................................ 15704 ........................................................................ 15705 ........................................................................ 15706 ........................................................................ 15707 ........................................................................ 15708 ........................................................................ 15709 ........................................................................ 15710 ........................................................................ 15711 ........................................................................ 15712 ........................................................................ 15713 ........................................................................ 15714 ........................................................................ 15715 ........................................................................ 15716 ........................................................................ 15717 ........................................................................ 15718 ........................................................................ 15719 ........................................................................ 15720 ........................................................................ 15721 ........................................................................ 15722 ........................................................................ 15723 ........................................................................ 15724 ........................................................................ 15725 ........................................................................ 15726 ........................................................................ 15727 ........................................................................ 15728 ........................................................................ 15729 ........................................................................ 15730 ........................................................................ 15731 ........................................................................ 15732 ........................................................................ 15733 ........................................................................ 15734 ........................................................................ 15735 ........................................................................ 15736 ........................................................................ 15737 ........................................................................ 15738 ........................................................................ 15739 ........................................................................ 15740 ........................................................................ 15741 ........................................................................ 15742 ........................................................................ 15743 ........................................................................ 15744 ........................................................................ 15745 ........................................................................ 15746 ........................................................................ 15747 ........................................................................ 15748 ........................................................................ 15749 ........................................................................ 15750 ........................................................................ 15751 ........................................................................ 15752 ........................................................................ 15753 ........................................................................ 15754 ........................................................................ 15755 ........................................................................ 15756 ........................................................................ 15757 ........................................................................ 15758 ........................................................................ 15759 ........................................................................ 15760 ........................................................................ 15761 ........................................................................ 15762 ........................................................................ 15763 ........................................................................ 15764 ........................................................................ 15765 ........................................................................ 15766 ........................................................................ 15767 ........................................................................ 15768 ........................................................................ 15769 ........................................................................ 15770 ........................................................................ 15771 ........................................................................ 15772 ........................................................................ 15773 ........................................................................ 15774 ........................................................................ 15775 ........................................................................ 15776 ........................................................................ 15777 ........................................................................ 15778 ........................................................................ 15779 ........................................................................ 15780 ........................................................................ 15781 ........................................................................ 15782 ........................................................................ 15783 ........................................................................ 15784 ........................................................................ 15785 ........................................................................ 15786 ........................................................................ 15787 ........................................................................ 15788 ........................................................................ 15789 ........................................................................ 15790 ........................................................................ 15791 ........................................................................ 15792 ........................................................................ 15793 ........................................................................ 15794 ........................................................................ 15795 ........................................................................ 15796 ........................................................................ 15797 ........................................................................ 15798 ........................................................................ 15799 ........................................................................ 15800 ........................................................................ 15801 ........................................................................ 15802 ........................................................................ 15803 ........................................................................ 15804 ........................................................................ 15805 ........................................................................ 15806 ........................................................................ 15807 ........................................................................ 15808 ........................................................................ 15809 ........................................................................ 15810 ........................................................................ 15811 ........................................................................ 15812 ........................................................................ 15813 ........................................................................ 15814 ........................................................................ 15815 ........................................................................ 15816 ........................................................................ 15817 ........................................................................ 15818 ........................................................................ 15819 ........................................................................ 15820 ........................................................................ 15821 ........................................................................ 15822 ........................................................................ 15823 ........................................................................ 15824 ........................................................................ 15825 ........................................................................ 15826 ........................................................................ 15827 ........................................................................ 15828 ........................................................................ 15829 ........................................................................ 15830 ........................................................................ 15831 ........................................................................ 15832 ........................................................................ 15833 ........................................................................ 15834 ........................................................................ 15835 ........................................................................ 15836 ........................................................................ 15837 ........................................................................ 15838 ........................................................................ 15839 ........................................................................ 15840 ........................................................................ 15841 ........................................................................ 15842 ........................................................................ 15843 ........................................................................ 15844 ........................................................................ 15845 ........................................................................ 15846 ........................................................................ 15847 ........................................................................ 15848 ........................................................................ 15849 ........................................................................ 15850 ........................................................................ 15851 ........................................................................ 15852 ........................................................................ 15853 ........................................................................ 15854 ........................................................................ 15855 ........................................................................ 15856 ........................................................................ 15857 ........................................................................ 15858 ........................................................................ 15859 ........................................................................ 15860 ........................................................................ 15861 ........................................................................ 15862 ........................................................................ 15863 ........................................................................ 15864 ........................................................................ 15865 ........................................................................ 15866 ........................................................................ 15867 ........................................................................ 15868 ........................................................................ 15869 ........................................................................ 15870 ........................................................................ 15871 ........................................................................ 15872 ........................................................................ 15873 ........................................................................ 15874 ........................................................................ 15875 ........................................................................ 15876 ........................................................................ 15877 ........................................................................ 15878 ........................................................................ 15879 ........................................................................ 15880 ........................................................................ 15881 ........................................................................ 15882 ........................................................................ 15883 ........................................................................ 15884 ........................................................................ 15885 ........................................................................ 15886 ........................................................................ 15887 ........................................................................ 15888 ........................................................................ 15889 ........................................................................ 15890 ........................................................................ 15891 ........................................................................ 15892 ........................................................................ 15893 ........................................................................ 15894 ........................................................................ 15895 ........................................................................ 15896 ........................................................................ 15897 ........................................................................ 15898 ........................................................................ 15899 ........................................................................ 15900 ........................................................................ 15901 ........................................................................ 15902 ........................................................................ 15903 ........................................................................ 15904 ........................................................................ 15905 ........................................................................ 15906 ........................................................................ 15907 ........................................................................ 15908 ........................................................................ 15909 ........................................................................ 15910 ........................................................................ 15911 ........................................................................ 15912 ........................................................................ 15913 ........................................................................ 15914 ........................................................................ 15915 ........................................................................ 15916 ........................................................................ 15917 ........................................................................ 15918 ........................................................................ 15919 ........................................................................ 15920 ........................................................................ 15921 ........................................................................ 15922 ........................................................................ 15923 ........................................................................ 15924 ........................................................................ 15925 ........................................................................ 15926 ........................................................................ 15927 ........................................................................ 15928 ........................................................................ 15929 ........................................................................ 15930 ........................................................................ 15931 ........................................................................ 15932 ........................................................................ 15933 ........................................................................ 15934 ........................................................................ 15935 ........................................................................ 15936 ........................................................................ 15937 ........................................................................ 15938 ........................................................................ 15939 ........................................................................ 15940 ........................................................................ 15941 ........................................................................ 15942 ........................................................................ 15943 ........................................................................ 15944 ........................................................................ 15945 ........................................................................ 15946 ........................................................................ 15947 ........................................................................ 15948 ........................................................................ 15949 ........................................................................ 15950 ........................................................................ 15951 ........................................................................ 15952 ........................................................................ 15953 ........................................................................ 15954 ........................................................................ 15955 ........................................................................ 15956 ........................................................................ 15957 ........................................................................ 15958 ........................................................................ 15959 ........................................................................ 15960 ........................................................................ 15961 ........................................................................ 15962 ........................................................................ 15963 ........................................................................ 15964 ........................................................................ 15965 ........................................................................ 15966 ........................................................................ 15967 ........................................................................ 15968 ........................................................................ 15969 ........................................................................ 15970 ........................................................................ 15971 ........................................................................ 15972 ........................................................................ 15973 ........................................................................ 15974 ........................................................................ 15975 ........................................................................ 15976 ........................................................................ 15977 ........................................................................ 15978 ........................................................................ 15979 ........................................................................ 15980 ........................................................................ 15981 ........................................................................ 15982 ........................................................................ 15983 ........................................................................ 15984 ........................................................................ 15985 ........................................................................ 15986 ........................................................................ 15987 ........................................................................ 15988 ........................................................................ 15989 ........................................................................ 15990 ........................................................................ 15991 ........................................................................ 15992 ........................................................................ 15993 ........................................................................ 15994 ........................................................................ 15995 ........................................................................ 15996 ........................................................................ 15997 ........................................................................ 15998 ........................................................................ 15999 ........................................................................ 16000 ........................................................................ 16001 ........................................................................ 16002 ........................................................................ 16003 ........................................................................ 16004 ........................................................................ 16005 ........................................................................ 16006 ........................................................................ 16007 ........................................................................ 16008 ........................................................................ 16009 ........................................................................ 16010 ........................................................................ 16011 ........................................................................ 16012 ........................................................................ 16013 ........................................................................ 16014 ........................................................................ 16015 ........................................................................ 16016 ........................................................................ 16017 ........................................................................ 16018 ........................................................................ 16019 ........................................................................ 16020 ........................................................................ 16021 ........................................................................ 16022 ........................................................................ 16023 ........................................................................ 16024 ........................................................................ 16025 ........................................................................ 16026 ........................................................................ 16027 ........................................................................ 16028 ........................................................................ 16029 ........................................................................ 16030 ........................................................................ 16031 ........................................................................ 16032 ........................................................................ 16033 ........................................................................ 16034 ........................................................................ 16035 ........................................................................ 16036 ........................................................................ 16037 ........................................................................ 16038 ........................................................................ 16039 ........................................................................ 16040 ........................................................................ 16041 ........................................................................ 16042 ........................................................................ 16043 ........................................................................ 16044 ........................................................................ 16045 ........................................................................ 16046 ........................................................................ 16047 ........................................................................ 16048 ........................................................................ 16049 ........................................................................ 16050 ........................................................................ 16051 ........................................................................ 16052 ........................................................................ 16053 ........................................................................ 16054 ........................................................................ 16055 ........................................................................ 16056 ........................................................................ 16057 ........................................................................ 16058 ........................................................................ 16059 ........................................................................ 16060 ........................................................................ 16061 ........................................................................ 16062 ........................................................................ 16063 ........................................................................ 16064 ........................................................................ 16065 ........................................................................ 16066 ........................................................................ 16067 ........................................................................ 16068 ........................................................................ 16069 ........................................................................ 16070 ........................................................................ 16071 ........................................................................ 16072 ........................................................................ 16073 ........................................................................ 16074 ........................................................................ 16075 ........................................................................ 16076 ........................................................................ 16077 ........................................................................ 16078 ........................................................................ 16079 ........................................................................ 16080 ........................................................................ 16081 ........................................................................ 16082 ........................................................................ 16083 ........................................................................ 16084 ........................................................................ 16085 ........................................................................ 16086 ........................................................................ 16087 ........................................................................ 16088 ........................................................................ 16089 ........................................................................ 16090 ........................................................................ 16091 ........................................................................ 16092 ........................................................................ 16093 ........................................................................ 16094 ........................................................................ 16095 ........................................................................ 16096 ........................................................................ 16097 ........................................................................ 16098 ........................................................................ 16099 ........................................................................ 16100 ........................................................................ 16101 ........................................................................ 16102 ........................................................................ 16103 ........................................................................ 16104 ........................................................................ 16105 ........................................................................ 16106 ........................................................................ 16107 ........................................................................ 16108 ........................................................................ 16109 ........................................................................ 16110 ........................................................................ 16111 ........................................................................ 16112 ........................................................................ 16113 ........................................................................ 16114 ........................................................................ 16115 ........................................................................ 16116 ........................................................................ 16117 ........................................................................ 16118 ........................................................................ 16119 ........................................................................ 16120 ........................................................................ 16121 ........................................................................ 16122 ........................................................................ 16123 ........................................................................ 16124 ........................................................................ 16125 ........................................................................ 16126 ........................................................................ 16127 ........................................................................ 16128 ........................................................................ 16129 ........................................................................ 16130 ........................................................................ 16131 ........................................................................ 16132 ........................................................................ 16133 ........................................................................ 16134 ........................................................................ 16135 ........................................................................ 16136 ........................................................................ 16137 ........................................................................ 16138 ........................................................................ 16139 ........................................................................ 16140 ........................................................................ 16141 ........................................................................ 16142 ........................................................................ 16143 ........................................................................ 16144 ........................................................................ 16145 ........................................................................ 16146 ........................................................................ 16147 ........................................................................ 16148 ........................................................................ 16149 ........................................................................ 16150 ........................................................................ 16151 ........................................................................ 16152 ........................................................................ 16153 ........................................................................ 16154 ........................................................................ 16155 ........................................................................ 16156 ........................................................................ 16157 ........................................................................ 16158 ........................................................................ 16159 ........................................................................ 16160 ........................................................................ 16161 ........................................................................ 16162 ........................................................................ 16163 ........................................................................ 16164 ........................................................................ 16165 ........................................................................ 16166 ........................................................................ 16167 ........................................................................ 16168 ........................................................................ 16169 ........................................................................ 16170 ........................................................................ 16171 ........................................................................ 16172 ........................................................................ 16173 ........................................................................ 16174 ........................................................................ 16175 ........................................................................ 16176 ........................................................................ 16177 ........................................................................ 16178 ........................................................................ 16179 ........................................................................ 16180 ........................................................................ 16181 ........................................................................ 16182 ........................................................................ 16183 ........................................................................ 16184 ........................................................................ 16185 ........................................................................ 16186 ........................................................................ 16187 ........................................................................ 16188 ........................................................................ 16189 ........................................................................ 16190 ........................................................................ 16191 ........................................................................ 16192 ........................................................................ 16193 ........................................................................ 16194 ........................................................................ 16195 ........................................................................ 16196 ........................................................................ 16197 ........................................................................ 16198 ........................................................................ 16199 ........................................................................ 16200 ........................................................................ 16201 ........................................................................ 16202 ........................................................................ 16203 ........................................................................ 16204 ........................................................................ 16205 ........................................................................ 16206 ........................................................................ 16207 ........................................................................ 16208 ........................................................................ 16209 ........................................................................ 16210 ........................................................................ 16211 ........................................................................ 16212 ........................................................................ 16213 ........................................................................ 16214 ........................................................................ 16215 ........................................................................ 16216 ........................................................................ 16217 ........................................................................ 16218 ........................................................................ 16219 ........................................................................ 16220 ........................................................................ 16221 ........................................................................ 16222 ........................................................................ 16223 ........................................................................ 16224 ........................................................................ 16225 ........................................................................ 16226 ........................................................................ 16227 ........................................................................ 16228 ........................................................................ 16229 ........................................................................ 16230 ........................................................................ 16231 ........................................................................ 16232 ........................................................................ 16233 ........................................................................ 16234 ........................................................................ 16235 ........................................................................ 16236 ........................................................................ 16237 ........................................................................ 16238 ........................................................................ 16239 ........................................................................ 16240 ........................................................................ 16241 ........................................................................ 16242 ........................................................................ 16243 ........................................................................ 16244 ........................................................................ 16245 ........................................................................ 16246 ........................................................................ 16247 ........................................................................ 16248 ........................................................................ 16249 ........................................................................ 16250 ........................................................................ 16251 ........................................................................ 16252 ........................................................................ 16253 ........................................................................ 16254 ........................................................................ 16255 ........................................................................ 16256 ........................................................................ 16257 ........................................................................ 16258 ........................................................................ 16259 ........................................................................ 16260 ........................................................................ 16261 ........................................................................ 16262 ........................................................................ 16263 ........................................................................ 16264 ........................................................................ 16265 ........................................................................ 16266 ........................................................................ 16267 ........................................................................ 16268 ........................................................................ 16269 ........................................................................ 16270 ........................................................................ 16271 ........................................................................ 16272 ........................................................................ 16273 ........................................................................ 16274 ........................................................................ 16275 ........................................................................ 16276 ........................................................................ 16277 ........................................................................ 16278 ........................................................................ 16279 ........................................................................ 16280 ........................................................................ 16281 ........................................................................ 16282 ........................................................................ 16283 ........................................................................ 16284 ........................................................................ 16285 ........................................................................ 16286 ........................................................................ 16287 ........................................................................ 16288 ........................................................................ 16289 ........................................................................ 16290 ........................................................................ 16291 ........................................................................ 16292 ........................................................................ 16293 ........................................................................ 16294 ........................................................................ 16295 ........................................................................ 16296 ........................................................................ 16297 ........................................................................ 16298 ........................................................................ 16299 ........................................................................ 16300 ........................................................................ 16301 ........................................................................ 16302 ........................................................................ 16303 ........................................................................ 16304 ........................................................................ 16305 ........................................................................ 16306 ........................................................................ 16307 ........................................................................ 16308 ........................................................................ 16309 ........................................................................ 16310 ........................................................................ 16311 ........................................................................ 16312 ........................................................................ 16313 ........................................................................ 16314 ........................................................................ 16315 ........................................................................ 16316 ........................................................................ 16317 ........................................................................ 16318 ........................................................................ 16319 ........................................................................ 16320 ........................................................................ 16321 ........................................................................ 16322 ........................................................................ 16323 ........................................................................ 16324 ........................................................................ 16325 ........................................................................ 16326 ........................................................................ 16327 ........................................................................ 16328 ........................................................................ 16329 ........................................................................ 16330 ........................................................................ 16331 ........................................................................ 16332 ........................................................................ 16333 ........................................................................ 16334 ........................................................................ 16335 ........................................................................ 16336 ........................................................................ 16337 ........................................................................ 16338 ........................................................................ 16339 ........................................................................ 16340 ........................................................................ 16341 ........................................................................ 16342 ........................................................................ 16343 ........................................................................ 16344 ........................................................................ 16345 ........................................................................ 16346 ........................................................................ 16347 ........................................................................ 16348 ........................................................................ 16349 ........................................................................ 16350 ........................................................................ 16351 ........................................................................ 16352 ........................................................................ 16353 ........................................................................ 16354 ........................................................................ 16355 ........................................................................ 16356 ........................................................................ 16357 ........................................................................ 16358 ........................................................................ 16359 ........................................................................ 16360 ........................................................................ 16361 ........................................................................ 16362 ........................................................................ 16363 ........................................................................ 16364 ........................................................................ 16365 ........................................................................ 16366 ........................................................................ 16367 ........................................................................ 16368 ........................................................................ 16369 ........................................................................ 16370 ........................................................................ 16371 ........................................................................ 16372 ........................................................................ 16373 ........................................................................ 16374 ........................................................................ 16375 ........................................................................ 16376 ........................................................................ 16377 ........................................................................ 16378 ........................................................................ 16379 ........................................................................ 16380 ........................................................................ 16381 ........................................................................ 16382 ........................................................................ 16383 ........................................................................ 16384 ........................................................................ 16385 ........................................................................ 16386 ........................................................................ 16387 ........................................................................ 16388 ........................................................................ 16389 ........................................................................ 16390 ........................................................................ 16391 ........................................................................ 16392 ........................................................................ 16393 ........................................................................ 16394 ........................................................................ 16395 ........................................................................ 16396 ........................................................................ 16397 ........................................................................ 16398 ........................................................................ 16399 ........................................................................ 16400 ........................................................................ 16401 ........................................................................ 16402 ........................................................................ 16403 ........................................................................ 16404 ........................................................................ 16405 ........................................................................ 16406 ........................................................................ 16407 ........................................................................ 16408 ........................................................................ 16409 ........................................................................ 16410 ........................................................................ 16411 ........................................................................ 16412 ........................................................................ 16413 ........................................................................ 16414 ........................................................................ 16415 ........................................................................ 16416 ........................................................................ 16417 ........................................................................ 16418 ........................................................................ 16419 ........................................................................ 16420 ........................................................................ 16421 ........................................................................ 16422 ........................................................................ 16423 ........................................................................ 16424 ........................................................................ 16425 ........................................................................ 16426 ........................................................................ 16427 ........................................................................ 16428 ........................................................................ 16429 ........................................................................ 16430 ........................................................................ 16431 ........................................................................ 16432 ........................................................................ 16433 ........................................................................ 16434 ........................................................................ 16435 ........................................................................ 16436 ........................................................................ 16437 ........................................................................ 16438 ........................................................................ 16439 ........................................................................ 16440 ........................................................................ 16441 ........................................................................ 16442 ........................................................................ 16443 ........................................................................ 16444 ........................................................................ 16445 ........................................................................ 16446 ........................................................................ 16447 ........................................................................ 16448 ........................................................................ 16449 ........................................................................ 16450 ........................................................................ 16451 ........................................................................ 16452 ........................................................................ 16453 ........................................................................ 16454 ........................................................................ 16455 ........................................................................ 16456 ........................................................................ 16457 ........................................................................ 16458 ........................................................................ 16459 ........................................................................ 16460 ........................................................................ 16461 ........................................................................ 16462 ........................................................................ 16463 ........................................................................ 16464 ........................................................................ 16465 ........................................................................ 16466 ........................................................................ 16467 ........................................................................ 16468 ........................................................................ 16469 ........................................................................ 16470 ........................................................................ 16471 ........................................................................ 16472 ........................................................................ 16473 ........................................................................ 16474 ........................................................................ 16475 ........................................................................ 16476 ........................................................................ 16477 ........................................................................ 16478 ........................................................................ 16479 ........................................................................ 16480 ........................................................................ 16481 ........................................................................ 16482 ........................................................................ 16483 ........................................................................ 16484 ........................................................................ 16485 ........................................................................ 16486 ........................................................................ 16487 ........................................................................ 16488 ........................................................................ 16489 ........................................................................ 16490 ........................................................................ 16491 ........................................................................ 16492 ........................................................................ 16493 ........................................................................ 16494 ........................................................................ 16495 ........................................................................ 16496 ........................................................................ 16497 ........................................................................ 16498 ........................................................................ 16499 ........................................................................ 16500 ........................................................................ 16501 ........................................................................ 16502 ........................................................................ 16503 ........................................................................ 16504 ........................................................................ 16505 ........................................................................ 16506 ........................................................................ 16507 ........................................................................ 16508 ........................................................................ 16509 ........................................................................ 16510 ........................................................................ 16511 ........................................................................ 16512 ........................................................................ 16513 ........................................................................ 16514 ........................................................................ 16515 ........................................................................ 16516 ........................................................................ 16517 ........................................................................ 16518 ........................................................................ 16519 ........................................................................ 16520 ........................................................................ 16521 ........................................................................ 16522 ........................................................................ 16523 ........................................................................ 16524 ........................................................................ 16525 ........................................................................ 16526 ........................................................................ 16527 ........................................................................ 16528 ........................................................................ 16529 ........................................................................ 16530 ........................................................................ 16531 ........................................................................ 16532 ........................................................................ 16533 ........................................................................ 16534 ........................................................................ 16535 ........................................................................ 16536 ........................................................................ 16537 ........................................................................ 16538 ........................................................................ 16539 ........................................................................ 16540 ........................................................................ 16541 ........................................................................ 16542 ........................................................................ 16543 ........................................................................ 16544 ........................................................................ 16545 ........................................................................ 16546 ........................................................................ 16547 ........................................................................ 16548 ........................................................................ 16549 ........................................................................ 16550 ........................................................................ 16551 ........................................................................ 16552 ........................................................................ 16553 ........................................................................ 16554 ........................................................................ 16555 ........................................................................ 16556 ........................................................................ 16557 ........................................................................ 16558 ........................................................................ 16559 ........................................................................ 16560 ........................................................................ 16561 ........................................................................ 16562 ........................................................................ 16563 ........................................................................ 16564 ........................................................................ 16565 ........................................................................ 16566 ........................................................................ 16567 ........................................................................ 16568 ........................................................................ 16569 ........................................................................ 16570 ........................................................................ 16571 ........................................................................ 16572 ........................................................................ 16573 ........................................................................ 16574 ........................................................................ 16575 ........................................................................ 16576 ........................................................................ 16577 ........................................................................ 16578 ........................................................................ 16579 ........................................................................ 16580 ........................................................................ 16581 ........................................................................ 16582 ........................................................................ 16583 ........................................................................ 16584 ........................................................................ 16585 ........................................................................ 16586 ........................................................................ 16587 ........................................................................ 16588 ........................................................................ 16589 ........................................................................ 16590 ........................................................................ 16591 ........................................................................ 16592 ........................................................................ 16593 ........................................................................ 16594 ........................................................................ 16595 ........................................................................ 16596 ........................................................................ 16597 ........................................................................ 16598 ........................................................................ 16599 ........................................................................ 16600 ........................................................................ 16601 ........................................................................ 16602 ........................................................................ 16603 ........................................................................ 16604 ........................................................................ 16605 ........................................................................ 16606 ........................................................................ 16607 ........................................................................ 16608 ........................................................................ 16609 ........................................................................ 16610 ........................................................................ 16611 ........................................................................ 16612 ........................................................................ 16613 ........................................................................ 16614 ........................................................................ 16615 ........................................................................ 16616 ........................................................................ 16617 ........................................................................ 16618 ........................................................................ 16619 ........................................................................ 16620 ........................................................................ 16621 ........................................................................ 16622 ........................................................................ 16623 ........................................................................ 16624 ........................................................................ 16625 ........................................................................ 16626 ........................................................................ 16627 ........................................................................ 16628 ........................................................................ 16629 ........................................................................ 16630 ........................................................................ 16631 ........................................................................ 16632 ........................................................................ 16633 ........................................................................ 16634 ........................................................................ 16635 ........................................................................ 16636 ........................................................................ 16637 ........................................................................ 16638 ........................................................................ 16639 ........................................................................ 16640 ........................................................................ 16641 ........................................................................ 16642 ........................................................................ 16643 ........................................................................ 16644 ........................................................................ 16645 ........................................................................ 16646 ........................................................................ 16647 ........................................................................ 16648 ........................................................................ 16649 ........................................................................ 16650 ........................................................................ 16651 ........................................................................ 16652 ........................................................................ 16653 ........................................................................ 16654 ........................................................................ 16655 ........................................................................ 16656 ........................................................................ 16657 ........................................................................ 16658 ........................................................................ 16659 ........................................................................ 16660 ........................................................................ 16661 ........................................................................ 16662 ........................................................................ 16663 ........................................................................ 16664 ........................................................................ 16665 ........................................................................ 16666 ........................................................................ 16667 ........................................................................ 16668 ........................................................................ 16669 ........................................................................ 16670 ........................................................................ 16671 ........................................................................ 16672 ........................................................................ 16673 ........................................................................ 16674 ........................................................................ 16675 ........................................................................ 16676 ........................................................................ 16677 ........................................................................ 16678 ........................................................................ 16679 ........................................................................ 16680 ........................................................................ 16681 ........................................................................ 16682 ........................................................................ 16683 ........................................................................ 16684 ........................................................................ 16685 ........................................................................ 16686 ........................................................................ 16687 ........................................................................ 16688 ........................................................................ 16689 ........................................................................ 16690 ........................................................................ 16691 ........................................................................ 16692 ........................................................................ 16693 ........................................................................ 16694 ........................................................................ 16695 ........................................................................ 16696 ........................................................................ 16697 ........................................................................ 16698 ........................................................................ 16699 ........................................................................ 16700 ........................................................................ 16701 ........................................................................ 16702 ........................................................................ 16703 ........................................................................ 16704 ........................................................................ 16705 ........................................................................ 16706 ........................................................................ 16707 ........................................................................ 16708 ........................................................................ 16709 ........................................................................ 16710 ........................................................................ 16711 ........................................................................ 16712 ........................................................................ 16713 ........................................................................ 16714 ........................................................................ 16715 ........................................................................ 16716 ........................................................................ 16717 ........................................................................ 16718 ........................................................................ 16719 ........................................................................ 16720 ........................................................................ 16721 ........................................................................ 16722 ........................................................................ 16723 ........................................................................ 16724 ........................................................................ 16725 ........................................................................ 16726 ........................................................................ 16727 ........................................................................ 16728 ........................................................................ 16729 ........................................................................ 16730 ........................................................................ 16731 ........................................................................ 16732 ........................................................................ 16733 ........................................................................ 16734 ........................................................................ 16735 ........................................................................ 16736 ........................................................................ 16737 ........................................................................ 16738 ........................................................................ 16739 ........................................................................ 16740 ........................................................................ 16741 ........................................................................ 16742 ........................................................................ 16743 ........................................................................ 16744 ........................................................................ 16745 ........................................................................ 16746 ........................................................................ 16747 ........................................................................ 16748 ........................................................................ 16749 ........................................................................ 16750 ........................................................................ 16751 ........................................................................ 16752 ........................................................................ 16753 ........................................................................ 16754 ........................................................................ 16755 ........................................................................ 16756 ........................................................................ 16757 ........................................................................ 16758 ........................................................................ 16759 ........................................................................ 16760 ........................................................................ 16761 ........................................................................ 16762 ........................................................................ 16763 ........................................................................ 16764 ........................................................................ 16765 ........................................................................ 16766 ........................................................................ 16767 ........................................................................ 16768 ........................................................................ 16769 ........................................................................ 16770 ........................................................................ 16771 ........................................................................ 16772 ........................................................................ 16773 ........................................................................ 16774 ........................................................................ 16775 ........................................................................ 16776 ........................................................................ 16777 ........................................................................ 16778 ........................................................................ 16779 ........................................................................ 16780 ........................................................................ 16781 ........................................................................ 16782 ........................................................................ 16783 ........................................................................ 16784 ........................................................................ 16785 ........................................................................ 16786 ........................................................................ 16787 ........................................................................ 16788 ........................................................................ 16789 ........................................................................ 16790 ........................................................................ 16791 ........................................................................ 16792 ........................................................................ 16793 ........................................................................ 16794 ........................................................................ 16795 ........................................................................ 16796 ........................................................................ 16797 ........................................................................ 16798 ........................................................................ 16799 ........................................................................ 16800 ........................................................................ 16801 ........................................................................ 16802 ........................................................................ 16803 ........................................................................ 16804 ........................................................................ 16805 ........................................................................ 16806 ........................................................................ 16807 ........................................................................ 16808 ........................................................................ 16809 ........................................................................ 16810 ........................................................................ 16811 ........................................................................ 16812 ........................................................................ 16813 ........................................................................ 16814 ........................................................................ 16815 ........................................................................ 16816 ........................................................................ 16817 ........................................................................ 16818 ........................................................................ 16819 ........................................................................ 16820 ........................................................................ 16821 ........................................................................ 16822 ........................................................................ 16823 ........................................................................ 16824 ........................................................................ 16825 ........................................................................ 16826 ........................................................................ 16827 ........................................................................ 16828 ........................................................................ 16829 ........................................................................ 16830 ........................................................................ 16831 ........................................................................ 16832 ........................................................................ 16833 ........................................................................ 16834 ........................................................................ 16835 ........................................................................ 16836 ........................................................................ 16837 ........................................................................ 16838 ........................................................................ 16839 ........................................................................ 16840 ........................................................................ 16841 ........................................................................ 16842 ........................................................................ 16843 ........................................................................ 16844 ........................................................................ 16845 ........................................................................ 16846 ........................................................................ 16847 ........................................................................ 16848 ........................................................................ 16849 ........................................................................ 16850 ........................................................................ 16851 ........................................................................ 16852 ........................................................................ 16853 ........................................................................ 16854 ........................................................................ 16855 ........................................................................ 16856 ........................................................................ 16857 ........................................................................ 16858 ........................................................................ 16859 ........................................................................ 16860 ........................................................................ 16861 ........................................................................ 16862 ........................................................................ 16863 ........................................................................ 16864 ........................................................................ 16865 ........................................................................ 16866 ........................................................................ 16867 ........................................................................ 16868 ........................................................................ 16869 ........................................................................ 16870 ........................................................................ 16871 ........................................................................ 16872 ........................................................................ 16873 ........................................................................ 16874 ........................................................................ 16875 ........................................................................ 16876 ........................................................................ 16877 ........................................................................ 16878 ........................................................................ 16879 ........................................................................ 16880 ........................................................................ 16881 ........................................................................ 16882 ........................................................................ 16883 ........................................................................ 16884 ........................................................................ 16885 ........................................................................ 16886 ........................................................................ 16887 ........................................................................ 16888 ........................................................................ 16889 ........................................................................ 16890 ........................................................................ 16891 ........................................................................ 16892 ........................................................................ 16893 ........................................................................ 16894 ........................................................................ 16895 ........................................................................ 16896 ........................................................................ 16897 ........................................................................ 16898 ........................................................................ 16899 ........................................................................ 16900 ........................................................................ 16901 ........................................................................ 16902 ........................................................................ 16903 ........................................................................ 16904 ........................................................................ 16905 ........................................................................ 16906 ........................................................................ 16907 ........................................................................ 16908 ........................................................................ 16909 ........................................................................ 16910 ........................................................................ 16911 ........................................................................ 16912 ........................................................................ 16913 ........................................................................ 16914 ........................................................................ 16915 ........................................................................ 16916 ........................................................................ 16917 ........................................................................ 16918 ........................................................................ 16919 ........................................................................ 16920 ........................................................................ 16921 ........................................................................ 16922 ........................................................................ 16923 ........................................................................ 16924 ........................................................................ 16925 ........................................................................ 16926 ........................................................................ 16927 ........................................................................ 16928 ........................................................................ 16929 ........................................................................ 16930 ........................................................................ 16931 ........................................................................ 16932 ........................................................................ 16933 ........................................................................ 16934 ........................................................................ 16935 ........................................................................ 16936 ........................................................................ 16937 ........................................................................ 16938 ........................................................................ 16939 ........................................................................ 16940 ........................................................................ 16941 ........................................................................ 16942 ........................................................................ 16943 ........................................................................ 16944 ........................................................................ 16945 ........................................................................ 16946 ........................................................................ 16947 ........................................................................ 16948 ........................................................................ 16949 ........................................................................ 16950 ........................................................................ 16951 ........................................................................ 16952 ........................................................................ 16953 ........................................................................ 16954 ........................................................................ 16955 ........................................................................ 16956 ........................................................................ 16957 ........................................................................ 16958 ........................................................................ 16959 ........................................................................ 16960 ........................................................................ 16961 ........................................................................ 16962 ........................................................................ 16963 ........................................................................ 16964 ........................................................................ 16965 ........................................................................ 16966 ........................................................................ 16967 ........................................................................ 16968 ........................................................................ 16969 ........................................................................ 16970 ........................................................................ 16971 ........................................................................ 16972 ........................................................................ 16973 ........................................................................ 16974 ........................................................................ 16975 ........................................................................ 16976 ........................................................................ 16977 ........................................................................ 16978 ........................................................................ 16979 ........................................................................ 16980 ........................................................................ 16981 ........................................................................ 16982 ........................................................................ 16983 ........................................................................ 16984 ........................................................................ 16985 ........................................................................ 16986 ........................................................................ 16987 ........................................................................ 16988 ........................................................................ 16989 ........................................................................ 16990 ........................................................................ 16991 ........................................................................ 16992 ........................................................................ 16993 ........................................................................ 16994 ........................................................................ 16995 ........................................................................ 16996 ........................................................................ 16997 ........................................................................ 16998 ........................................................................ 16999 ........................................................................ 17000 ........................................................................ 17001 ........................................................................ 17002 ........................................................................ 17003 ........................................................................ 17004 ........................................................................ 17005 ........................................................................ 17006 ........................................................................ 17007 ........................................................................ 17008 ........................................................................ 17009 ........................................................................ 17010 ........................................................................ 17011 ........................................................................ 17012 ........................................................................ 17013 ........................................................................ 17014 ........................................................................ 17015 ........................................................................ 17016 ........................................................................ 17017 ........................................................................ 17018 ........................................................................ 17019 ........................................................................ 17020 ........................................................................ 17021 ........................................................................ 17022 ........................................................................ 17023 ........................................................................ 17024 ........................................................................ 17025 ........................................................................ 17026 ........................................................................ 17027 ........................................................................ 17028 ........................................................................ 17029 ........................................................................ 17030 ........................................................................ 17031 ........................................................................ 17032 ........................................................................ 17033 ........................................................................ 17034 ........................................................................ 17035 ........................................................................ 17036 ........................................................................ 17037 ........................................................................ 17038 ........................................................................ 17039 ........................................................................ 17040 ........................................................................ 17041 ........................................................................ 17042 ........................................................................ 17043 ........................................................................ 17044 ........................................................................ 17045 ........................................................................ 17046 ........................................................................ 17047 ........................................................................ 17048 ........................................................................ 17049 ........................................................................ 17050 ........................................................................ 17051 ........................................................................ 17052 ........................................................................ 17053 ........................................................................ 17054 ........................................................................ 17055 ........................................................................ 17056 ........................................................................ 17057 ........................................................................ 17058 ........................................................................ 17059 ........................................................................ 17060 ........................................................................ 17061 ........................................................................ 17062 ........................................................................ 17063 ........................................................................ 17064 ........................................................................ 17065 ........................................................................ 17066 ........................................................................ 17067 ........................................................................ 17068 ........................................................................ 17069 ........................................................................ 17070 ........................................................................ 17071 ........................................................................ 17072 ........................................................................ 17073 ........................................................................ 17074 ........................................................................ 17075 ........................................................................ 17076 ........................................................................ 17077 ........................................................................ 17078 ........................................................................ 17079 ........................................................................ 17080 ........................................................................ 17081 ........................................................................ 17082 ........................................................................ 17083 ........................................................................ 17084 ........................................................................ 17085 ........................................................................ 17086 ........................................................................ 17087 ........................................................................ 17088 ........................................................................ 17089 ........................................................................ 17090 ........................................................................ 17091 ........................................................................ 17092 ........................................................................ 17093 ........................................................................ 17094 ........................................................................ 17095 ........................................................................ 17096 ........................................................................ 17097 ........................................................................ 17098 ........................................................................ 17099 ........................................................................ 17100 ........................................................................ 17101 ........................................................................ 17102 ........................................................................ 17103 ........................................................................ 17104 ........................................................................ 17105 ........................................................................ 17106 ........................................................................ 17107 ........................................................................ 17108 ........................................................................ 17109 ........................................................................ 17110 ........................................................................ 17111 ........................................................................ 17112 ........................................................................ 17113 ........................................................................ 17114 ........................................................................ 17115 ........................................................................ 17116 ........................................................................ 17117 ........................................................................ 17118 ........................................................................ 17119 ........................................................................ 17120 ........................................................................ 17121 ........................................................................ 17122 ........................................................................ 17123 ........................................................................ 17124 ........................................................................ 17125 ........................................................................ 17126 ........................................................................ 17127 ........................................................................ 17128 ........................................................................ 17129 ........................................................................ 17130 ........................................................................ 17131 ........................................................................ 17132 ........................................................................ 17133 ........................................................................ 17134 ........................................................................ 17135 ........................................................................ 17136 ........................................................................ 17137 ........................................................................ 17138 ........................................................................ 17139 ........................................................................ 17140 ........................................................................ 17141 ........................................................................ 17142 ........................................................................ 17143 ........................................................................ 17144 ........................................................................ 17145 ........................................................................ 17146 ........................................................................ 17147 ........................................................................ 17148 ........................................................................ 17149 ........................................................................ 17150 ........................................................................ 17151 ........................................................................ 17152 ........................................................................ 17153 ........................................................................ 17154 ........................................................................ 17155 ........................................................................ 17156 ........................................................................ 17157 ........................................................................ 17158 ........................................................................ 17159 ........................................................................ 17160 ........................................................................ 17161 ........................................................................ 17162 ........................................................................ 17163 ........................................................................ 17164 ........................................................................ 17165 ........................................................................ 17166 ........................................................................ 17167 ........................................................................ 17168 ........................................................................ 17169 ........................................................................ 17170 ........................................................................ 17171 ........................................................................ 17172 ........................................................................ 17173 ........................................................................ 17174 ........................................................................ 17175 ........................................................................ 17176 ........................................................................ 17177 ........................................................................ 17178 ........................................................................ 17179 ........................................................................ 17180 ........................................................................ 17181 ........................................................................ 17182 ........................................................................ 17183 ........................................................................ 17184 ........................................................................ 17185 ........................................................................ 17186 ........................................................................ 17187 ........................................................................ 17188 ........................................................................ 17189 ........................................................................ 17190 ........................................................................ 17191 ........................................................................ 17192 ........................................................................ 17193 ........................................................................ 17194 ........................................................................ 17195 ........................................................................ 17196 ........................................................................ 17197 ........................................................................ 17198 ........................................................................ 17199 ........................................................................ 17200 ........................................................................ 17201 ........................................................................ 17202 ........................................................................ 17203 ........................................................................ 17204 ........................................................................ 17205 ........................................................................ 17206 ........................................................................ 17207 ........................................................................ 17208 ........................................................................ 17209 ........................................................................ 17210 ........................................................................ 17211 ........................................................................ 17212 ........................................................................ 17213 ........................................................................ 17214 ........................................................................ 17215 ........................................................................ 17216 ........................................................................ 17217 ........................................................................ 17218 ........................................................................ 17219 ........................................................................ 17220 ........................................................................ 17221 ........................................................................ 17222 ........................................................................ 17223 ........................................................................ 17224 ........................................................................ 17225 ........................................................................ 17226 ........................................................................ 17227 ........................................................................ 17228 ........................................................................ 17229 ........................................................................ 17230 ........................................................................ 17231 ........................................................................ 17232 ........................................................................ 17233 ........................................................................ 17234 ........................................................................ 17235 ........................................................................ 17236 ........................................................................ 17237 ........................................................................ 17238 ........................................................................ 17239 ........................................................................ 17240 ........................................................................ 17241 ........................................................................ 17242 ........................................................................ 17243 ........................................................................ 17244 ........................................................................ 17245 ........................................................................ 17246 ........................................................................ 17247 ........................................................................ 17248 ........................................................................ 17249 ........................................................................ 17250 ........................................................................ 17251 ........................................................................ 17252 ........................................................................ 17253 ........................................................................ 17254 ........................................................................ 17255 ........................................................................ 17256 ........................................................................ 17257 ........................................................................ 17258 ........................................................................ 17259 ........................................................................ 17260 ........................................................................ 17261 ........................................................................ 17262 ........................................................................ 17263 ........................................................................ 17264 ........................................................................ 17265 ........................................................................ 17266 ........................................................................ 17267 ........................................................................ 17268 ........................................................................ 17269 ........................................................................ 17270 ........................................................................ 17271 ........................................................................ 17272 ........................................................................ 17273 ........................................................................ 17274 ........................................................................ 17275 ........................................................................ 17276 ........................................................................ 17277 ........................................................................ 17278 ........................................................................ 17279 ........................................................................ 17280 ........................................................................ 17281 ........................................................................ 17282 ........................................................................ 17283 ........................................................................ 17284 ........................................................................ 17285 ........................................................................ 17286 ........................................................................ 17287 ........................................................................ 17288 ........................................................................ 17289 ........................................................................ 17290 ........................................................................ 17291 ........................................................................ 17292 ........................................................................ 17293 ........................................................................ 17294 ........................................................................ 17295 ........................................................................ 17296 ........................................................................ 17297 ........................................................................ 17298 ........................................................................ 17299 ........................................................................ 17300 ........................................................................ 17301 ........................................................................ 17302 ........................................................................ 17303 ........................................................................ 17304 ........................................................................ 17305 ........................................................................ 17306 ........................................................................ 17307 ........................................................................ 17308 ........................................................................ 17309 ........................................................................ 17310 ........................................................................ 17311 ........................................................................ 17312 ........................................................................ 17313 ........................................................................ 17314 ........................................................................ 17315 ........................................................................ 17316 ........................................................................ 17317 ........................................................................ 17318 ........................................................................ 17319 ........................................................................ 17320 ........................................................................ 17321 ........................................................................ 17322 ........................................................................ 17323 ........................................................................ 17324 ........................................................................ 17325 ........................................................................ 17326 ........................................................................ 17327 ........................................................................ 17328 ........................................................................ 17329 ........................................................................ 17330 ........................................................................ 17331 ........................................................................ 17332 ........................................................................ 17333 ........................................................................ 17334 ........................................................................ 17335 ........................................................................ 17336 ........................................................................ 17337 ........................................................................ 17338 ........................................................................ 17339 ........................................................................ 17340 ........................................................................ 17341 ........................................................................ 17342 ........................................................................ 17343 ........................................................................ 17344 ........................................................................ 17345 ........................................................................ 17346 ........................................................................ 17347 ........................................................................ 17348 ........................................................................ 17349 ........................................................................ 17350 ........................................................................ 17351 ........................................................................ 17352 ........................................................................ 17353 ........................................................................ 17354 ........................................................................ 17355 ........................................................................ 17356 ........................................................................ 17357 ........................................................................ 17358 ........................................................................ 17359 ........................................................................ 17360 ........................................................................ 17361 ........................................................................ 17362 ........................................................................ 17363 ........................................................................ 17364 ........................................................................ 17365 ........................................................................ 17366 ........................................................................ 17367 ........................................................................ 17368 ........................................................................ 17369 ........................................................................ 17370 ........................................................................ 17371 ........................................................................ 17372 ........................................................................ 17373 ........................................................................ 17374 ........................................................................ 17375 ........................................................................ 17376 ........................................................................ 17377 ........................................................................ 17378 ........................................................................ 17379 ........................................................................ 17380 ........................................................................ 17381 ........................................................................ 17382 ........................................................................ 17383 ........................................................................ 17384 ........................................................................ 17385 ........................................................................ 17386 ........................................................................ 17387 ........................................................................ 17388 ........................................................................ 17389 ........................................................................ 17390 ........................................................................ 17391 ........................................................................ 17392 ........................................................................ 17393 ........................................................................ 17394 ........................................................................ 17395 ........................................................................ 17396 ........................................................................ 17397 ........................................................................ 17398 ........................................................................ 17399 ........................................................................ 17400 ........................................................................ 17401 ........................................................................ 17402 ........................................................................ 17403 ........................................................................ 17404 ........................................................................ 17405 ........................................................................ 17406 ........................................................................ 17407 ........................................................................ 17408 ........................................................................ 17409 ........................................................................ 17410 ........................................................................ 17411 ........................................................................ 17412 ........................................................................ 17413 ........................................................................ 17414 ........................................................................ 17415 ........................................................................ 17416 ........................................................................ 17417 ........................................................................ 17418 ........................................................................ 17419 ........................................................................ 17420 ........................................................................ 17421 ........................................................................ 17422 ........................................................................ 17423 ........................................................................ 17424 ........................................................................ 17425 ........................................................................ 17426 ........................................................................ 17427 ........................................................................ 17428 ........................................................................ 17429 ........................................................................ 17430 ........................................................................ 17431 ........................................................................ 17432 ........................................................................ 17433 ........................................................................ 17434 ........................................................................ 17435 ........................................................................ 17436 ........................................................................ 17437 ........................................................................ 17438 ........................................................................ 17439 ........................................................................ 17440 ........................................................................ 17441 ........................................................................ 17442 ........................................................................ 17443 ........................................................................ 17444 ........................................................................ 17445 ........................................................................ 17446 ........................................................................ 17447 ........................................................................ 17448 ........................................................................ 17449 ........................................................................ 17450 ........................................................................ 17451 ........................................................................ 17452 ........................................................................ 17453 ........................................................................ 17454 ........................................................................ 17455 ........................................................................ 17456 ........................................................................ 17457 ........................................................................ 17458 ........................................................................ 17459 ........................................................................ 17460 ........................................................................ 17461 ........................................................................ 17462 ........................................................................ 17463 ........................................................................ 17464 ........................................................................ 17465 ........................................................................ 17466 ........................................................................ 17467 ........................................................................ 17468 ........................................................................ 17469 ........................................................................ 17470 ........................................................................ 17471 ........................................................................ 17472 ........................................................................ 17473 ........................................................................ 17474 ........................................................................ 17475 ........................................................................ 17476 ........................................................................ 17477 ........................................................................ 17478 ........................................................................ 17479 ........................................................................ 17480 ........................................................................ 17481 ........................................................................ 17482 ........................................................................ 17483 ........................................................................ 17484 ........................................................................ 17485 ........................................................................ 17486 ........................................................................ 17487 ........................................................................ 17488 ........................................................................ 17489 ........................................................................ 17490 ........................................................................ 17491 ........................................................................ 17492 ........................................................................ 17493 ........................................................................ 17494 ........................................................................ 17495 ........................................................................ 17496 ........................................................................ 17497 ........................................................................ 17498 ........................................................................ 17499 ........................................................................ 17500 ........................................................................ 17501 ........................................................................ 17502 ........................................................................ 17503 ........................................................................ 17504 ........................................................................ 17505 ........................................................................ 17506 ........................................................................ 17507 ........................................................................ 17508 ........................................................................ 17509 ........................................................................ 17510 ........................................................................ 17511 ........................................................................ 17512 ........................................................................ 17513 ........................................................................ 17514 ........................................................................ 17515 ........................................................................ 17516 ........................................................................ 17517 ........................................................................ 17518 ........................................................................ 17519 ........................................................................ 17520 ........................................................................ 17521 ........................................................................ 17522 ........................................................................ 17523 ........................................................................ 17524 ........................................................................ 17525 ........................................................................ 17526 ........................................................................ 17527 ........................................................................ 17528 ........................................................................ 17529 ........................................................................ 17530 ........................................................................ 17531 ........................................................................ 17532 ........................................................................ 17533 ........................................................................ 17534 ........................................................................ 17535 ........................................................................ 17536 ........................................................................ 17537 ........................................................................ 17538 ........................................................................ 17539 ........................................................................ 17540 ........................................................................ 17541 ........................................................................ 17542 ........................................................................ 17543 ........................................................................ 17544 ........................................................................ 17545 ........................................................................ 17546 ........................................................................ 17547 ........................................................................ 17548 ........................................................................ 17549 ........................................................................ 17550 ........................................................................ 17551 ........................................................................ 17552 ........................................................................ 17553 ........................................................................ 17554 ........................................................................ 17555 ........................................................................ 17556 ........................................................................ 17557 ........................................................................ 17558 ........................................................................ 17559 ........................................................................ 17560 ........................................................................ 17561 ........................................................................ 17562 ........................................................................ 17563 ........................................................................ 17564 ........................................................................ 17565 ........................................................................ 17566 ........................................................................ 17567 ........................................................................ 17568 ........................................................................ 17569 ........................................................................ 17570 ........................................................................ 17571 ........................................................................ 17572 ........................................................................ 17573 ........................................................................ 17574 ........................................................................ 17575 ........................................................................ 17576 ........................................................................ 17577 ........................................................................ 17578 ........................................................................ 17579 ........................................................................ 17580 ........................................................................ 17581 ........................................................................ 17582 ........................................................................ 17583 ........................................................................ 17584 ........................................................................ 17585 ........................................................................ 17586 ........................................................................ 17587 ........................................................................ 17588 ........................................................................ 17589 ........................................................................ 17590 ........................................................................ 17591 ........................................................................ 17592 ........................................................................ 17593 ........................................................................ 17594 ........................................................................ 17595 ........................................................................ 17596 ........................................................................ 17597 ........................................................................ 17598 ........................................................................ 17599 ........................................................................ 17600 ........................................................................ 17601 ........................................................................ 17602 ........................................................................ 17603 ........................................................................ 17604 ........................................................................ 17605 ........................................................................ 17606 ........................................................................ 17607 ........................................................................ 17608 ........................................................................ 17609 ........................................................................ 17610 ........................................................................ 17611 ........................................................................ 17612 ........................................................................ 17613 ........................................................................ 17614 ........................................................................ 17615 ........................................................................ 17616 ........................................................................ 17617 ........................................................................ 17618 ........................................................................ 17619 ........................................................................ 17620 ........................................................................ 17621 ........................................................................ 17622 ........................................................................ 17623 ........................................................................ 17624 ........................................................................ 17625 ........................................................................ 17626 ........................................................................ 17627 ........................................................................ 17628 ........................................................................ 17629 ........................................................................ 17630 ........................................................................ 17631 ........................................................................ 17632 ........................................................................ 17633 ........................................................................ 17634 ........................................................................ 17635 ........................................................................ 17636 ........................................................................ 17637 ........................................................................ 17638 ........................................................................ 17639 ........................................................................ 17640 ........................................................................ 17641 ........................................................................ 17642 ........................................................................ 17643 ........................................................................ 17644 ........................................................................ 17645 ........................................................................ 17646 ........................................................................ 17647 ........................................................................ 17648 ........................................................................ 17649 ........................................................................ 17650 ........................................................................ 17651 ........................................................................ 17652 ........................................................................ 17653 ........................................................................ 17654 ........................................................................ 17655 ........................................................................ 17656 ........................................................................ 17657 ........................................................................ 17658 ........................................................................ 17659 ........................................................................ 17660 ........................................................................ 17661 ........................................................................ 17662 ........................................................................ 17663 ........................................................................ 17664 ........................................................................ 17665 ........................................................................ 17666 ........................................................................ 17667 ........................................................................ 17668 ........................................................................ 17669 ........................................................................ 17670 ........................................................................ 17671 ........................................................................ 17672 ........................................................................ 17673 ........................................................................ 17674 ........................................................................ 17675 ........................................................................ 17676 ........................................................................ 17677 ........................................................................ 17678 ........................................................................ 17679 ........................................................................ 17680 ........................................................................ 17681 ........................................................................ 17682 ........................................................................ 17683 ........................................................................ 17684 ........................................................................ 17685 ........................................................................ 17686 ........................................................................ 17687 ........................................................................ 17688 ........................................................................ 17689 ........................................................................ 17690 ........................................................................ 17691 ........................................................................ 17692 ........................................................................ 17693 ........................................................................ 17694 ........................................................................ 17695 ........................................................................ 17696 ........................................................................ 17697 ........................................................................ 17698 ........................................................................ 17699 ........................................................................ 17700 ........................................................................ 17701 ........................................................................ 17702 ........................................................................ 17703 ........................................................................ 17704 ........................................................................ 17705 ........................................................................ 17706 ........................................................................ 17707 ........................................................................ 17708 ........................................................................ 17709 ........................................................................ 17710 ........................................................................ 17711 ........................................................................ 17712 ........................................................................ 17713 ........................................................................ 17714 ........................................................................ 17715 ........................................................................ 17716 ........................................................................ 17717 ........................................................................ 17718 ........................................................................ 17719 ........................................................................ 17720 ........................................................................ 17721 ........................................................................ 17722 ........................................................................ 17723 ........................................................................ 17724 ........................................................................ 17725 ........................................................................ 17726 ........................................................................ 17727 ........................................................................ 17728 ........................................................................ 17729 ........................................................................ 17730 ........................................................................ 17731 ........................................................................ 17732 ........................................................................ 17733 ........................................................................ 17734 ........................................................................ 17735 ........................................................................ 17736 ........................................................................ 17737 ........................................................................ 17738 ........................................................................ 17739 ........................................................................ 17740 ........................................................................ 17741 ........................................................................ 17742 ........................................................................ 17743 ........................................................................ 17744 ........................................................................ 17745 ........................................................................ 17746 ........................................................................ 17747 ........................................................................ 17748 ........................................................................ 17749 ........................................................................ 17750 ........................................................................ 17751 ........................................................................ 17752 ........................................................................ 17753 ........................................................................ 17754 ........................................................................ 17755 ........................................................................ 17756 ........................................................................ 17757 ........................................................................ 17758 ........................................................................ 17759 ........................................................................ 17760 ........................................................................ 17761 ........................................................................ 17762 ........................................................................ 17763 ........................................................................ 17764 ........................................................................ 17765 ........................................................................ 17766 ........................................................................ 17767 ........................................................................ 17768 ........................................................................ 17769 ........................................................................ 17770 ........................................................................ 17771 ........................................................................ 17772 ........................................................................ 17773 ........................................................................ 17774 ........................................................................ 17775 ........................................................................ 17776 ........................................................................ 17777 ........................................................................ 17778 ........................................................................ 17779 ........................................................................ 17780 ........................................................................ 17781 ........................................................................ 17782 ........................................................................ 17783 ........................................................................ 17784 ........................................................................ 17785 ........................................................................ 17786 ........................................................................ 17787 ........................................................................ 17788 ........................................................................ 17789 ........................................................................ 17790 ........................................................................ 17791 ........................................................................ 17792 ........................................................................ 17793 ........................................................................ 17794 ........................................................................ 17795 ........................................................................ 17796 ........................................................................ 17797 ........................................................................ 17798 ........................................................................ 17799 ........................................................................ 17800 ........................................................................ 17801 ........................................................................ 17802 ........................................................................ 17803 ........................................................................ 17804 ........................................................................ 17805 ........................................................................ 17806 ........................................................................ 17807 ........................................................................ 17808 ........................................................................ 17809 ........................................................................ 17810 ........................................................................ 17811 ........................................................................ 17812 ........................................................................ 17813 ........................................................................ 17814 ........................................................................ 17815 ........................................................................ 17816 ........................................................................ 17817 ........................................................................ 17818 ........................................................................ 17819 ........................................................................ 17820 ........................................................................ 17821 ........................................................................ 17822 ........................................................................ 17823 ........................................................................ 17824 ........................................................................ 17825 ........................................................................ 17826 ........................................................................ 17827 ........................................................................ 17828 ........................................................................ 17829 ........................................................................ 17830 ........................................................................ 17831 ........................................................................ 17832 ........................................................................ 17833 ........................................................................ 17834 ........................................................................ 17835 ........................................................................ 17836 ........................................................................ 17837 ........................................................................ 17838 ........................................................................ 17839 ........................................................................ 17840 ........................................................................ 17841 ........................................................................ 17842 ........................................................................ 17843 ........................................................................ 17844 ........................................................................ 17845 ........................................................................ 17846 ........................................................................ 17847 ........................................................................ 17848 ........................................................................ 17849 ........................................................................ 17850 ........................................................................ 17851 ........................................................................ 17852 ........................................................................ 17853 ........................................................................ 17854 ........................................................................ 17855 ........................................................................ 17856 ........................................................................ 17857 ........................................................................ 17858 ........................................................................ 17859 ........................................................................ 17860 ........................................................................ 17861 ........................................................................ 17862 ........................................................................ 17863 ........................................................................ 17864 ........................................................................ 17865 ........................................................................ 17866 ........................................................................ 17867 ........................................................................ 17868 ........................................................................ 17869 ........................................................................ 17870 ........................................................................ 17871 ........................................................................ 17872 ........................................................................ 17873 ........................................................................ 17874 ........................................................................ 17875 ........................................................................ 17876 ........................................................................ 17877 ........................................................................ 17878 ........................................................................ 17879 ........................................................................ 17880 ........................................................................ 17881 ........................................................................ 17882 ........................................................................ 17883 ........................................................................ 17884 ........................................................................ 17885 ........................................................................ 17886 ........................................................................ 17887 ........................................................................ 17888 ........................................................................ 17889 ........................................................................ 17890 ........................................................................ 17891 ........................................................................ 17892 ........................................................................ 17893 ........................................................................ 17894 ........................................................................ 17895 ........................................................................ 17896 ........................................................................ 17897 ........................................................................ 17898 ........................................................................ 17899 ........................................................................ 17900 ........................................................................ 17901 ........................................................................ 17902 ........................................................................ 17903 ........................................................................ 17904 ........................................................................ 17905 ........................................................................ 17906 ........................................................................ 17907 ........................................................................ 17908 ........................................................................ 17909 ........................................................................ 17910 ........................................................................ 17911 ........................................................................ 17912 ........................................................................ 17913 ........................................................................ 17914 ........................................................................ 17915 ........................................................................ 17916 ........................................................................ 17917 ........................................................................ 17918 ........................................................................ 17919 ........................................................................ 17920 ........................................................................ 17921 ........................................................................ 17922 ........................................................................ 17923 ........................................................................ 17924 ........................................................................ 17925 ........................................................................ 17926 ........................................................................ 17927 ........................................................................ 17928 ........................................................................ 17929 ........................................................................ 17930 ........................................................................ 17931 ........................................................................ 17932 ........................................................................ 17933 ........................................................................ 17934 ........................................................................ 17935 ........................................................................ 17936 ........................................................................ 17937 ........................................................................ 17938 ........................................................................ 17939 ........................................................................ 17940 ........................................................................ 17941 ........................................................................ 17942 ........................................................................ 17943 ........................................................................ 17944 ........................................................................ 17945 ........................................................................ 17946 ........................................................................ 17947 ........................................................................ 17948 ........................................................................ 17949 ........................................................................ 17950 ........................................................................ 17951 ........................................................................ 17952 ........................................................................ 17953 ........................................................................ 17954 ........................................................................ 17955 ........................................................................ 17956 ........................................................................ 17957 ........................................................................ 17958 ........................................................................ 17959 ........................................................................ 17960 ........................................................................ 17961 ........................................................................ 17962 ........................................................................ 17963 ........................................................................ 17964 ........................................................................ 17965 ........................................................................ 17966 ........................................................................ 17967 ........................................................................ 17968 ........................................................................ 17969 ........................................................................ 17970 ........................................................................ 17971 ........................................................................ 17972 ........................................................................ 17973 ........................................................................ 17974 ........................................................................ 17975 ........................................................................ 17976 ........................................................................ 17977 ........................................................................ 17978 ........................................................................ 17979 ........................................................................ 17980 ........................................................................ 17981 ........................................................................ 17982 ........................................................................ 17983 ........................................................................ 17984 ........................................................................ 17985 ........................................................................ 17986 ........................................................................ 17987 ........................................................................ 17988 ........................................................................ 17989 ........................................................................ 17990 ........................................................................ 17991 ........................................................................ 17992 ........................................................................ 17993 ........................................................................ 17994 ........................................................................ 17995 ........................................................................ 17996 ........................................................................ 17997 ........................................................................ 17998 ........................................................................ 17999 ........................................................................ 18000 ........................................................................ 18001 ........................................................................ 18002 ........................................................................ 18003 ........................................................................ 18004 ........................................................................ 18005 ........................................................................ 18006 ........................................................................ 18007 ........................................................................ 18008 ........................................................................ 18009 ........................................................................ 18010 ........................................................................ 18011 ........................................................................ 18012 ........................................................................ 18013 ........................................................................ 18014 ........................................................................ 18015 ........................................................................ 18016 ........................................................................ 18017 ........................................................................ 18018 ........................................................................ 18019 ........................................................................ 18020 ........................................................................ 18021 ........................................................................ 18022 ........................................................................ 18023 ........................................................................ 18024 ........................................................................ 18025 ........................................................................ 18026 ........................................................................ 18027 ........................................................................ 18028 ........................................................................ 18029 ........................................................................ 18030 ........................................................................ 18031 ........................................................................ 18032 ........................................................................ 18033 ........................................................................ 18034 ........................................................................ 18035 ........................................................................ 18036 ........................................................................ 18037 ........................................................................ 18038 ........................................................................ 18039 ........................................................................ 18040 ........................................................................ 18041 ........................................................................ 18042 ........................................................................ 18043 ........................................................................ 18044 ........................................................................ 18045 ........................................................................ 18046 ........................................................................ 18047 ........................................................................ 18048 ........................................................................ 18049 ........................................................................ 18050 ........................................................................ 18051 ........................................................................ 18052 ........................................................................ 18053 ........................................................................ 18054 ........................................................................ 18055 ........................................................................ 18056 ........................................................................ 18057 ........................................................................ 18058 ........................................................................ 18059 ........................................................................ 18060 ........................................................................ 18061 ........................................................................ 18062 ........................................................................ 18063 ........................................................................ 18064 ........................................................................ 18065 ........................................................................ 18066 ........................................................................ 18067 ........................................................................ 18068 ........................................................................ 18069 ........................................................................ 18070 ........................................................................ 18071 ........................................................................ 18072 ........................................................................ 18073 ........................................................................ 18074 ........................................................................ 18075 ........................................................................ 18076 ........................................................................ 18077 ........................................................................ 18078 ........................................................................ 18079 ........................................................................ 18080 ........................................................................ 18081 ........................................................................ 18082 ........................................................................ 18083 ........................................................................ 18084 ........................................................................ 18085 ........................................................................ 18086 ........................................................................ 18087 ........................................................................ 18088 ........................................................................ 18089 ........................................................................ 18090 ........................................................................ 18091 ........................................................................ 18092 ........................................................................ 18093 ........................................................................ 18094 ........................................................................ 18095 ........................................................................ 18096 ........................................................................ 18097 ........................................................................ 18098 ........................................................................ 18099 ........................................................................ 18100 ........................................................................ 18101 ........................................................................ 18102 ........................................................................ 18103 ........................................................................ 18104 ........................................................................ 18105 ........................................................................ 18106 ........................................................................ 18107 ........................................................................ 18108 ........................................................................ 18109 ........................................................................ 18110 ........................................................................ 18111 ........................................................................ 18112 ........................................................................ 18113 ........................................................................ 18114 ........................................................................ 18115 ........................................................................ 18116 ........................................................................ 18117 ........................................................................ 18118 ........................................................................ 18119 ........................................................................ 18120 ........................................................................ 18121 ........................................................................ 18122 ........................................................................ 18123 ........................................................................ 18124 ........................................................................ 18125 ........................................................................ 18126 ........................................................................ 18127 ........................................................................ 18128 ........................................................................ 18129 ........................................................................ 18130 ........................................................................ 18131 ........................................................................ 18132 ........................................................................ 18133 ........................................................................ 18134 ........................................................................ 18135 ........................................................................ 18136 ........................................................................ 18137 ........................................................................ 18138 ........................................................................ 18139 ........................................................................ 18140 ........................................................................ 18141 ........................................................................ 18142 ........................................................................ 18143 ........................................................................ 18144 ........................................................................ 18145 ........................................................................ 18146 ........................................................................ 18147 ........................................................................ 18148 ........................................................................ 18149 ........................................................................ 18150 ........................................................................ 18151 ........................................................................ 18152 ........................................................................ 18153 ........................................................................ 18154 ........................................................................ 18155 ........................................................................ 18156 ........................................................................ 18157 ........................................................................ 18158 ........................................................................ 18159 ........................................................................ 18160 ........................................................................ 18161 ........................................................................ 18162 ........................................................................ 18163 ........................................................................ 18164 ........................................................................ 18165 ........................................................................ 18166 ........................................................................ 18167 ........................................................................ 18168 ........................................................................ 18169 ........................................................................ 18170 ........................................................................ 18171 ........................................................................ 18172 ........................................................................ 18173 ........................................................................ 18174 ........................................................................ 18175 ........................................................................ 18176 ........................................................................ 18177 ........................................................................ 18178 ........................................................................ 18179 ........................................................................ 18180 ........................................................................ 18181 ........................................................................ 18182 ........................................................................ 18183 ........................................................................ 18184 ........................................................................ 18185 ........................................................................ 18186 ........................................................................ 18187 ........................................................................ 18188 ........................................................................ 18189 ........................................................................ 18190 ........................................................................ 18191 ........................................................................ 18192 ........................................................................ 18193 ........................................................................ 18194 ........................................................................ 18195 ........................................................................ 18196 ........................................................................ 18197 ........................................................................ 18198 ........................................................................ 18199 ........................................................................ 18200 ........................................................................ 18201 ........................................................................ 18202 ........................................................................ 18203 ........................................................................ 18204 ........................................................................ 18205 ........................................................................ 18206 ........................................................................ 18207 ........................................................................ 18208 ........................................................................ 18209 ........................................................................ 18210 ........................................................................ 18211 ........................................................................ 18212 ........................................................................ 18213 ........................................................................ 18214 ........................................................................ 18215 ........................................................................ 18216 ........................................................................ 18217 ........................................................................ 18218 ........................................................................ 18219 ........................................................................ 18220 ........................................................................ 18221 ........................................................................ 18222 ........................................................................ 18223 ........................................................................ 18224 ........................................................................ 18225 ........................................................................ 18226 ........................................................................ 18227 ........................................................................ 18228 ........................................................................ 18229 ........................................................................ 18230 ........................................................................ 18231 ........................................................................ 18232 ........................................................................ 18233 ........................................................................ 18234 ........................................................................ 18235 ........................................................................ 18236 ........................................................................ 18237 ........................................................................ 18238 ........................................................................ 18239 ........................................................................ 18240 ........................................................................ 18241 ........................................................................ 18242 ........................................................................ 18243 ........................................................................ 18244 ........................................................................ 18245 ........................................................................ 18246 ........................................................................ 18247 ........................................................................ 18248 ........................................................................ 18249 ........................................................................ 18250 ........................................................................ 18251 ........................................................................ 18252 ........................................................................ 18253 ........................................................................ 18254 ........................................................................ 18255 ........................................................................ 18256 ........................................................................ 18257 ........................................................................ 18258 ........................................................................ 18259 ........................................................................ 18260 ........................................................................ 18261 ........................................................................ 18262 ........................................................................ 18263 ........................................................................ 18264 ........................................................................ 18265 ........................................................................ 18266 ........................................................................ 18267 ........................................................................ 18268 ........................................................................ 18269 ........................................................................ 18270 ........................................................................ 18271 ........................................................................ 18272 ........................................................................ 18273 ........................................................................ 18274 ........................................................................ 18275 ........................................................................ 18276 ........................................................................ 18277 ........................................................................ 18278 ........................................................................ 18279 ........................................................................ 18280 ........................................................................ 18281 ........................................................................ 18282 ........................................................................ 18283 ........................................................................ 18284 ........................................................................ 18285 ........................................................................ 18286 ........................................................................ 18287 ........................................................................ 18288 ........................................................................ 18289 ........................................................................ 18290 ........................................................................ 18291 ........................................................................ 18292 ........................................................................ 18293 ........................................................................ 18294 ........................................................................ 18295 ........................................................................ 18296 ........................................................................ 18297 ........................................................................ 18298 ........................................................................ 18299 ........................................................................ 18300 ........................................................................ 18301 ........................................................................ 18302 ........................................................................ 18303 ........................................................................ 18304 ........................................................................ 18305 ........................................................................ 18306 ........................................................................ 18307 ........................................................................ 18308 ........................................................................ 18309 ........................................................................ 18310 ........................................................................ 18311 ........................................................................ 18312 ........................................................................ 18313 ........................................................................ 18314 ........................................................................ 18315 ........................................................................ 18316 ........................................................................ 18317 ........................................................................ 18318 ........................................................................ 18319 ........................................................................ 18320 ........................................................................ 18321 ........................................................................ 18322 ........................................................................ 18323 ........................................................................ 18324 ........................................................................ 18325 ........................................................................ 18326 ........................................................................ 18327 ........................................................................ 18328 ........................................................................ 18329 ........................................................................ 18330 ........................................................................ 18331 ........................................................................ 18332 ........................................................................ 18333 ........................................................................ 18334 ........................................................................ 18335 ........................................................................ 18336 ........................................................................ 18337 ........................................................................ 18338 ........................................................................ 18339 ........................................................................ 18340 ........................................................................ 18341 ........................................................................ 18342 ........................................................................ 18343 ........................................................................ 18344 ........................................................................ 18345 ........................................................................ 18346 ........................................................................ 18347 ........................................................................ 18348 ........................................................................ 18349 ........................................................................ 18350 ........................................................................ 18351 ........................................................................ 18352 ........................................................................ 18353 ........................................................................ 18354 ........................................................................ 18355 ........................................................................ 18356 ........................................................................ 18357 ........................................................................ 18358 ........................................................................ 18359 ........................................................................ 18360 ........................................................................ 18361 ........................................................................ 18362 ........................................................................ 18363 ........................................................................ 18364 ........................................................................ 18365 ........................................................................ 18366 ........................................................................ 18367 ........................................................................ 18368 ........................................................................ 18369 ........................................................................ 18370 ........................................................................ 18371 ........................................................................ 18372 ........................................................................ 18373 ........................................................................ 18374 ........................................................................ 18375 ........................................................................ 18376 ........................................................................ 18377 ........................................................................ 18378 ........................................................................ 18379 ........................................................................ 18380 ........................................................................ 18381 ........................................................................ 18382 ........................................................................ 18383 ........................................................................ 18384 ........................................................................ 18385 ........................................................................ 18386 ........................................................................ 18387 ........................................................................ 18388 ........................................................................ 18389 ........................................................................ 18390 ........................................................................ 18391 ........................................................................ 18392 ........................................................................ 18393 ........................................................................ 18394 ........................................................................ 18395 ........................................................................ 18396 ........................................................................ 18397 ........................................................................ 18398 ........................................................................ 18399 ........................................................................ 18400 ........................................................................ 18401 ........................................................................ 18402 ........................................................................ 18403 ........................................................................ 18404 ........................................................................ 18405 ........................................................................ 18406 ........................................................................ 18407 ........................................................................ 18408 ........................................................................ 18409 ........................................................................ 18410 ........................................................................ 18411 ........................................................................ 18412 ........................................................................ 18413 ........................................................................ 18414 ........................................................................ 18415 ........................................................................ 18416 ........................................................................ 18417 ........................................................................ 18418 ........................................................................ 18419 ........................................................................ 18420 ........................................................................ 18421 ........................................................................ 18422 ........................................................................ 18423 ........................................................................ 18424 ........................................................................ 18425 ........................................................................ 18426 ........................................................................ 18427 ........................................................................ 18428 ........................................................................ 18429 ........................................................................ 18430 ........................................................................ 18431 ........................................................................ 18432 ........................................................................ 18433 ........................................................................ 18434 ........................................................................ 18435 ........................................................................ 18436 ........................................................................ 18437 ........................................................................ 18438 ........................................................................ 18439 ........................................................................ 18440 ........................................................................ 18441 ........................................................................ 18442 ........................................................................ 18443 ........................................................................ 18444 ........................................................................ 18445 ........................................................................ 18446 ........................................................................ 18447 ........................................................................ 18448 ........................................................................ 18449 ........................................................................ 18450 ........................................................................ 18451 ........................................................................ 18452 ........................................................................ 18453 ........................................................................ 18454 ........................................................................ 18455 ........................................................................ 18456 ........................................................................ 18457 ........................................................................ 18458 ........................................................................ 18459 ........................................................................ 18460 ........................................................................ 18461 ........................................................................ 18462 ........................................................................ 18463 ........................................................................ 18464 ........................................................................ 18465 ........................................................................ 18466 ........................................................................ 18467 ........................................................................ 18468 ........................................................................ 18469 ........................................................................ 18470 ........................................................................ 18471 ........................................................................ 18472 ........................................................................ 18473 ........................................................................ 18474 ........................................................................ 18475 ........................................................................ 18476 ........................................................................ 18477 ........................................................................ 18478 ........................................................................ 18479 ........................................................................ 18480 ........................................................................ 18481 ........................................................................ 18482 ........................................................................ 18483 ........................................................................ 18484 ........................................................................ 18485 ........................................................................ 18486 ........................................................................ 18487 ........................................................................ 18488 ........................................................................ 18489 ........................................................................ 18490 ........................................................................ 18491 ........................................................................ 18492 ........................................................................ 18493 ........................................................................ 18494 ........................................................................ 18495 ........................................................................ 18496 ........................................................................ 18497 ........................................................................ 18498 ........................................................................ 18499 ........................................................................ 18500 ........................................................................ 18501 ........................................................................ 18502 ........................................................................ 18503 ........................................................................ 18504 ........................................................................ 18505 ........................................................................ 18506 ........................................................................ 18507 ........................................................................ 18508 ........................................................................ 18509 ........................................................................ 18510 ........................................................................ 18511 ........................................................................ 18512 ........................................................................ 18513 ........................................................................ 18514 ........................................................................ 18515 ........................................................................ 18516 ........................................................................ 18517 ........................................................................ 18518 ........................................................................ 18519 ........................................................................ 18520 ........................................................................ 18521 ........................................................................ 18522 ........................................................................ 18523 ........................................................................ 18524 ........................................................................ 18525 ........................................................................ 18526 ........................................................................ 18527 ........................................................................ 18528 ........................................................................ 18529 ........................................................................ 18530 ........................................................................ 18531 ........................................................................ 18532 ........................................................................ 18533 ........................................................................ 18534 ........................................................................ 18535 ........................................................................ 18536 ........................................................................ 18537 ........................................................................ 18538 ........................................................................ 18539 ........................................................................ 18540 ........................................................................ 18541 ........................................................................ 18542 ........................................................................ 18543 ........................................................................ 18544 ........................................................................ 18545 ........................................................................ 18546 ........................................................................ 18547 ........................................................................ 18548 ........................................................................ 18549 ........................................................................ 18550 ........................................................................ 18551 ........................................................................ 18552 ........................................................................ 18553 ........................................................................ 18554 ........................................................................ 18555 ........................................................................ 18556 ........................................................................ 18557 ........................................................................ 18558 ........................................................................ 18559 ........................................................................ 18560 ........................................................................ 18561 ........................................................................ 18562 ........................................................................ 18563 ........................................................................ 18564 ........................................................................ 18565 ........................................................................ 18566 ........................................................................ 18567 ........................................................................ 18568 ........................................................................ 18569 ........................................................................ 18570 ........................................................................ 18571 ........................................................................ 18572 ........................................................................ 18573 ........................................................................ 18574 ........................................................................ 18575 ........................................................................ 18576 ........................................................................ 18577 ........................................................................ 18578 ........................................................................ 18579 ........................................................................ 18580 ........................................................................ 18581 ........................................................................ 18582 ........................................................................ 18583 ........................................................................ 18584 ........................................................................ 18585 ........................................................................ 18586 ........................................................................ 18587 ........................................................................ 18588 ........................................................................ 18589 ........................................................................ 18590 ........................................................................ 18591 ........................................................................ 18592 ........................................................................ 18593 ........................................................................ 18594 ........................................................................ 18595 ........................................................................ 18596 ........................................................................ 18597 ........................................................................ 18598 ........................................................................ 18599 ........................................................................ 18600 ........................................................................ 18601 ........................................................................ 18602 ........................................................................ 18603 ........................................................................ 18604 ........................................................................ 18605 ........................................................................ 18606 ........................................................................ 18607 ........................................................................ 18608 ........................................................................ 18609 ........................................................................ 18610 ........................................................................ 18611 ........................................................................ 18612 ........................................................................ 18613 ........................................................................ 18614 ........................................................................ 18615 ........................................................................ 18616 ........................................................................ 18617 ........................................................................ 18618 ........................................................................ 18619 ........................................................................ 18620 ........................................................................ 18621 ........................................................................ 18622 ........................................................................ 18623 ........................................................................ 18624 ........................................................................ 18625 ........................................................................ 18626 ........................................................................ 18627 ........................................................................ 18628 ........................................................................ 18629 ........................................................................ 18630 ........................................................................ 18631 ........................................................................ 18632 ........................................................................ 18633 ........................................................................ 18634 ........................................................................ 18635 ........................................................................ 18636 ........................................................................ 18637 ........................................................................ 18638 ........................................................................ 18639 ........................................................................ 18640 ........................................................................ 18641 ........................................................................ 18642 ........................................................................ 18643 ........................................................................ 18644 ........................................................................ 18645 ........................................................................ 18646 ........................................................................ 18647 ........................................................................ 18648 ........................................................................ 18649 ........................................................................ 18650 ........................................................................ 18651 ........................................................................ 18652 ........................................................................ 18653 ........................................................................ 18654 ........................................................................ 18655 ........................................................................ 18656 ........................................................................ 18657 ........................................................................ 18658 ........................................................................ 18659 ........................................................................ 18660 ........................................................................ 18661 ........................................................................ 18662 ........................................................................ 18663 ........................................................................ 18664 ........................................................................ 18665 ........................................................................ 18666 ........................................................................ 18667 ........................................................................ 18668 ........................................................................ 18669 ........................................................................ 18670 ........................................................................ 18671 ........................................................................ 18672 ........................................................................ 18673 ........................................................................ 18674 ........................................................................ 18675 ........................................................................ 18676 ........................................................................ 18677 ........................................................................ 18678 ........................................................................ 18679 ........................................................................ 18680 ........................................................................ 18681 ........................................................................ 18682 ........................................................................ 18683 ........................................................................ 18684 ........................................................................ 18685 ........................................................................ 18686 ........................................................................ 18687 ........................................................................ 18688 ........................................................................ 18689 ........................................................................ 18690 ........................................................................ 18691 ........................................................................ 18692 ........................................................................ 18693 ........................................................................ 18694 ........................................................................ 18695 ........................................................................ 18696 ........................................................................ 18697 ........................................................................ 18698 ........................................................................ 18699 ........................................................................ 18700 ........................................................................ 18701 ........................................................................ 18702 ........................................................................ 18703 ........................................................................ 18704 ........................................................................ 18705 ........................................................................ 18706 ........................................................................ 18707 ........................................................................ 18708 ........................................................................ 18709 ........................................................................ 18710 ........................................................................ 18711 ........................................................................ 18712 ........................................................................ 18713 ........................................................................ 18714 ........................................................................ 18715 ........................................................................ 18716 ........................................................................ 18717 ........................................................................ 18718 ........................................................................ 18719 ........................................................................ 18720 ........................................................................ 18721 ........................................................................ 18722 ........................................................................ 18723 ........................................................................ 18724 ........................................................................ 18725 ........................................................................ 18726 ........................................................................ 18727 ........................................................................ 18728 ........................................................................ 18729 ........................................................................ 18730 ........................................................................ 18731 ........................................................................ 18732 ........................................................................ 18733 ........................................................................ 18734 ........................................................................ 18735 ........................................................................ 18736 ........................................................................ 18737 ........................................................................ 18738 ........................................................................ 18739 ........................................................................ 18740 ........................................................................ 18741 ........................................................................ 18742 ........................................................................ 18743 ........................................................................ 18744 ........................................................................ 18745 ........................................................................ 18746 ........................................................................ 18747 ........................................................................ 18748 ........................................................................ 18749 ........................................................................ 18750 ........................................................................ 18751 ........................................................................ 18752 ........................................................................ 18753 ........................................................................ 18754 ........................................................................ 18755 ........................................................................ 18756 ........................................................................ 18757 ........................................................................ 18758 ........................................................................ 18759 ........................................................................ 18760 ........................................................................ 18761 ........................................................................ 18762 ........................................................................ 18763 ........................................................................ 18764 ........................................................................ 18765 ........................................................................ 18766 ........................................................................ 18767 ........................................................................ 18768 ........................................................................ 18769 ........................................................................ 18770 ........................................................................ 18771 ........................................................................ 18772 ........................................................................ 18773 ........................................................................ 18774 ........................................................................ 18775 ........................................................................ 18776 ........................................................................ 18777 ........................................................................ 18778 ........................................................................ 18779 ........................................................................ 18780 ........................................................................ 18781 ........................................................................ 18782 ........................................................................ 18783 ........................................................................ 18784 ........................................................................ 18785 ........................................................................ 18786 ........................................................................ 18787 ........................................................................ 18788 ........................................................................ 18789 ........................................................................ 18790 ........................................................................ 18791 ........................................................................ 18792 ........................................................................ 18793 ........................................................................ 18794 ........................................................................ 18795 ........................................................................ 18796 ........................................................................ 18797 ........................................................................ 18798 ........................................................................ 18799 ........................................................................ 18800 ........................................................................ 18801 ........................................................................ 18802 ........................................................................ 18803 ........................................................................ 18804 ........................................................................ 18805 ........................................................................ 18806 ........................................................................ 18807 ........................................................................ 18808 ........................................................................ 18809 ........................................................................ 18810 ........................................................................ 18811 ........................................................................ 18812 ........................................................................ 18813 ........................................................................ 18814 ........................................................................ 18815 ........................................................................ 18816 ........................................................................ 18817 ........................................................................ 18818 ........................................................................ 18819 ........................................................................ 18820 ........................................................................ 18821 ........................................................................ 18822 ........................................................................ 18823 ........................................................................ 18824 ........................................................................ 18825 ........................................................................ 18826 ........................................................................ 18827 ........................................................................ 18828 ........................................................................ 18829 ........................................................................ 18830 ........................................................................ 18831 ........................................................................ 18832 ........................................................................ 18833 ........................................................................ 18834 ........................................................................ 18835 ........................................................................ 18836 ........................................................................ 18837 ........................................................................ 18838 ........................................................................ 18839 ........................................................................ 18840 ........................................................................ 18841 ........................................................................ 18842 ........................................................................ 18843 ........................................................................ 18844 ........................................................................ 18845 ........................................................................ 18846 ........................................................................ 18847 ........................................................................ 18848 ........................................................................ 18849 ........................................................................ 18850 ........................................................................ 18851 ........................................................................ 18852 ........................................................................ 18853 ........................................................................ 18854 ........................................................................ 18855 ........................................................................ 18856 ........................................................................ 18857 ........................................................................ 18858 ........................................................................ 18859 ........................................................................ 18860 ........................................................................ 18861 ........................................................................ 18862 ........................................................................ 18863 ........................................................................ 18864 ........................................................................ 18865 ........................................................................ 18866 ........................................................................ 18867 ........................................................................ 18868 ........................................................................ 18869 ........................................................................ 18870 ........................................................................ 18871 ........................................................................ 18872 ........................................................................ 18873 ........................................................................ 18874 ........................................................................ 18875 ........................................................................ 18876 ........................................................................ 18877 ........................................................................ 18878 ........................................................................ 18879 ........................................................................ 18880 ........................................................................ 18881 ........................................................................ 18882 ........................................................................ 18883 ........................................................................ 18884 ........................................................................ 18885 ........................................................................ 18886 ........................................................................ 18887 ........................................................................ 18888 ........................................................................ 18889 ........................................................................ 18890 ........................................................................ 18891 ........................................................................ 18892 ........................................................................ 18893 ........................................................................ 18894 ........................................................................ 18895 ........................................................................ 18896 ........................................................................ 18897 ........................................................................ 18898 ........................................................................ 18899 ........................................................................ 18900 ........................................................................ 18901 ........................................................................ 18902 ........................................................................ 18903 ........................................................................ 18904 ........................................................................ 18905 ........................................................................ 18906 ........................................................................ 18907 ........................................................................ 18908 ........................................................................ 18909 ........................................................................ 18910 ........................................................................ 18911 ........................................................................ 18912 ........................................................................ 18913 ........................................................................ 18914 ........................................................................ 18915 ........................................................................ 18916 ........................................................................ 18917 ........................................................................ 18918 ........................................................................ 18919 ........................................................................ 18920 ........................................................................ 18921 ........................................................................ 18922 ........................................................................ 18923 ........................................................................ 18924 ........................................................................ 18925 ........................................................................ 18926 ........................................................................ 18927 ........................................................................ 18928 ........................................................................ 18929 ........................................................................ 18930 ........................................................................ 18931 ........................................................................ 18932 ........................................................................ 18933 ........................................................................ 18934 ........................................................................ 18935 ........................................................................ 18936 ........................................................................ 18937 ........................................................................ 18938 ........................................................................ 18939 ........................................................................ 18940 ........................................................................ 18941 ........................................................................ 18942 ........................................................................ 18943 ........................................................................ 18944 ........................................................................ 18945 ........................................................................ 18946 ........................................................................ 18947 ........................................................................ 18948 ........................................................................ 18949 ........................................................................ 18950 ........................................................................ 18951 ........................................................................ 18952 ........................................................................ 18953 ........................................................................ 18954 ........................................................................ 18955 ........................................................................ 18956 ........................................................................ 18957 ........................................................................ 18958 ........................................................................ 18959 ........................................................................ 18960 ........................................................................ 18961 ........................................................................ 18962 ........................................................................ 18963 ........................................................................ 18964 ........................................................................ 18965 ........................................................................ 18966 ........................................................................ 18967 ........................................................................ 18968 ........................................................................ 18969 ........................................................................ 18970 ........................................................................ 18971 ........................................................................ 18972 ........................................................................ 18973 ........................................................................ 18974 ........................................................................ 18975 ........................................................................ 18976 ........................................................................ 18977 ........................................................................ 18978 ........................................................................ 18979 ........................................................................ 18980 ........................................................................ 18981 ........................................................................ 18982 ........................................................................ 18983 ........................................................................ 18984 ........................................................................ 18985 ........................................................................ 18986 ........................................................................ 18987 ........................................................................ 18988 ........................................................................ 18989 ........................................................................ 18990 ........................................................................ 18991 ........................................................................ 18992 ........................................................................ 18993 ........................................................................ 18994 ........................................................................ 18995 ........................................................................ 18996 ........................................................................ 18997 ........................................................................ 18998 ........................................................................ 18999 ........................................................................ 19000 ........................................................................ 19001 ........................................................................ 19002 ........................................................................ 19003 ........................................................................ 19004 ........................................................................ 19005 ........................................................................ 19006 ........................................................................ 19007 ........................................................................ 19008 ........................................................................ 19009 ........................................................................ 19010 ........................................................................ 19011 ........................................................................ 19012 ........................................................................ 19013 ........................................................................ 19014 ........................................................................ 19015 ........................................................................ 19016 ........................................................................ 19017 ........................................................................ 19018 ........................................................................ 19019 ........................................................................ 19020 ........................................................................ 19021 ........................................................................ 19022 ........................................................................ 19023 ........................................................................ 19024 ........................................................................ 19025 ........................................................................ 19026 ........................................................................ 19027 ........................................................................ 19028 ........................................................................ 19029 ........................................................................ 19030 ........................................................................ 19031 ........................................................................ 19032 ........................................................................ 19033 ........................................................................ 19034 ........................................................................ 19035 ........................................................................ 19036 ........................................................................ 19037 ........................................................................ 19038 ........................................................................ 19039 ........................................................................ 19040 ........................................................................ 19041 ........................................................................ 19042 ........................................................................ 19043 ........................................................................ 19044 ........................................................................ 19045 ........................................................................ 19046 ........................................................................ 19047 ........................................................................ 19048 ........................................................................ 19049 ........................................................................ 19050 ........................................................................ 19051 ........................................................................ 19052 ........................................................................ 19053 ........................................................................ 19054 ........................................................................ 19055 ........................................................................ 19056 ........................................................................ 19057 ........................................................................ 19058 ........................................................................ 19059 ........................................................................ 19060 ........................................................................ 19061 ........................................................................ 19062 ........................................................................ 19063 ........................................................................ 19064 ........................................................................ 19065 ........................................................................ 19066 ........................................................................ 19067 ........................................................................ 19068 ........................................................................ 19069 ........................................................................ 19070 ........................................................................ 19071 ........................................................................ 19072 ........................................................................ 19073 ........................................................................ 19074 ........................................................................ 19075 ........................................................................ 19076 ........................................................................ 19077 ........................................................................ 19078 ........................................................................ 19079 ........................................................................ 19080 ........................................................................ 19081 ........................................................................ 19082 ........................................................................ 19083 ........................................................................ 19084 ........................................................................ 19085 ........................................................................ 19086 ........................................................................ 19087 ........................................................................ 19088 ........................................................................ 19089 ........................................................................ 19090 ........................................................................ 19091 ........................................................................ 19092 ........................................................................ 19093 ........................................................................ 19094 ........................................................................ 19095 ........................................................................ 19096 ........................................................................ 19097 ........................................................................ 19098 ........................................................................ 19099 ........................................................................ 19100 ........................................................................ 19101 ........................................................................ 19102 ........................................................................ 19103 ........................................................................ 19104 ........................................................................ 19105 ........................................................................ 19106 ........................................................................ 19107 ........................................................................ 19108 ........................................................................ 19109 ........................................................................ 19110 ........................................................................ 19111 ........................................................................ 19112 ........................................................................ 19113 ........................................................................ 19114 ........................................................................ 19115 ........................................................................ 19116 ........................................................................ 19117 ........................................................................ 19118 ........................................................................ 19119 ........................................................................ 19120 ........................................................................ 19121 ........................................................................ 19122 ........................................................................ 19123 ........................................................................ 19124 ........................................................................ 19125 ........................................................................ 19126 ........................................................................ 19127 ........................................................................ 19128 ........................................................................ 19129 ........................................................................ 19130 ........................................................................ 19131 ........................................................................ 19132 ........................................................................ 19133 ........................................................................ 19134 ........................................................................ 19135 ........................................................................ 19136 ........................................................................ 19137 ........................................................................ 19138 ........................................................................ 19139 ........................................................................ 19140 ........................................................................ 19141 ........................................................................ 19142 ........................................................................ 19143 ........................................................................ 19144 ........................................................................ 19145 ........................................................................ 19146 ........................................................................ 19147 ........................................................................ 19148 ........................................................................ 19149 ........................................................................ 19150 ........................................................................ 19151 ........................................................................ 19152 ........................................................................ 19153 ........................................................................ 19154 ........................................................................ 19155 ........................................................................ 19156 ........................................................................ 19157 ........................................................................ 19158 ........................................................................ 19159 ........................................................................ 19160 ........................................................................ 19161 ........................................................................ 19162 ........................................................................ 19163 ........................................................................ 19164 ........................................................................ 19165 ........................................................................ 19166 ........................................................................ 19167 ........................................................................ 19168 ........................................................................ 19169 ........................................................................ 19170 ........................................................................ 19171 ........................................................................ 19172 ........................................................................ 19173 ........................................................................ 19174 ........................................................................ 19175 ........................................................................ 19176 ........................................................................ 19177 ........................................................................ 19178 ........................................................................ 19179 ........................................................................ 19180 ........................................................................ 19181 ........................................................................ 19182 ........................................................................ 19183 ........................................................................ 19184 ........................................................................ 19185 ........................................................................ 19186 ........................................................................ 19187 ........................................................................ 19188 ........................................................................ 19189 ........................................................................ 19190 ........................................................................ 19191 ........................................................................ 19192 ........................................................................ 19193 ........................................................................ 19194 ........................................................................ 19195 ........................................................................ 19196 ........................................................................ 19197 ........................................................................ 19198 ........................................................................ 19199 ........................................................................ 19200 ........................................................................ 19201 ........................................................................ 19202 ........................................................................ 19203 ........................................................................ 19204 ........................................................................ 19205 ........................................................................ 19206 ........................................................................ 19207 ........................................................................ 19208 ........................................................................ 19209 ........................................................................ 19210 ........................................................................ 19211 ........................................................................ 19212 ........................................................................ 19213 ........................................................................ 19214 ........................................................................ 19215 ........................................................................ 19216 ........................................................................ 19217 ........................................................................ 19218 ........................................................................ 19219 ........................................................................ 19220 ........................................................................ 19221 ........................................................................ 19222 ........................................................................ 19223 ........................................................................ 19224 ........................................................................ 19225 ........................................................................ 19226 ........................................................................ 19227 ........................................................................ 19228 ........................................................................ 19229 ........................................................................ 19230 ........................................................................ 19231 ........................................................................ 19232 ........................................................................ 19233 ........................................................................ 19234 ........................................................................ 19235 ........................................................................ 19236 ........................................................................ 19237 ........................................................................ 19238 ........................................................................ 19239 ........................................................................ 19240 ........................................................................ 19241 ........................................................................ 19242 ........................................................................ 19243 ........................................................................ 19244 ........................................................................ 19245 ........................................................................ 19246 ........................................................................ 19247 ........................................................................ 19248 ........................................................................ 19249 ........................................................................ 19250 ........................................................................ 19251 ........................................................................ 19252 ........................................................................ 19253 ........................................................................ 19254 ........................................................................ 19255 ........................................................................ 19256 ........................................................................ 19257 ........................................................................ 19258 ........................................................................ 19259 ........................................................................ 19260 ........................................................................ 19261 ........................................................................ 19262 ........................................................................ 19263 ........................................................................ 19264 ........................................................................ 19265 ........................................................................ 19266 ........................................................................ 19267 ........................................................................ 19268 ........................................................................ 19269 ........................................................................ 19270 ........................................................................ 19271 ........................................................................ 19272 ........................................................................ 19273 ........................................................................ 19274 ........................................................................ 19275 ........................................................................ 19276 ........................................................................ 19277 ........................................................................ 19278 ........................................................................ 19279 ........................................................................ 19280 ........................................................................ 19281 ........................................................................ 19282 ........................................................................ 19283 ........................................................................ 19284 ........................................................................ 19285 ........................................................................ 19286 ........................................................................ 19287 ........................................................................ 19288 ........................................................................ 19289 ........................................................................ 19290 ........................................................................ 19291 ........................................................................ 19292 ........................................................................ 19293 ........................................................................ 19294 ........................................................................ 19295 ........................................................................ 19296 ........................................................................ 19297 ........................................................................ 19298 ........................................................................ 19299 ........................................................................ 19300 ........................................................................ 19301 ........................................................................ 19302 ........................................................................ 19303 ........................................................................ 19304 ........................................................................ 19305 ........................................................................ 19306 ........................................................................ 19307 ........................................................................ 19308 ........................................................................ 19309 ........................................................................ 19310 ........................................................................ 19311 ........................................................................ 19312 ........................................................................ 19313 ........................................................................ 19314 ........................................................................ 19315 ........................................................................ 19316 ........................................................................ 19317 ........................................................................ 19318 ........................................................................ 19319 ........................................................................ 19320 ........................................................................ 19321 ........................................................................ 19322 ........................................................................ 19323 ........................................................................ 19324 ........................................................................ 19325 ........................................................................ 19326 ........................................................................ 19327 ........................................................................ 19328 ........................................................................ 19329 ........................................................................ 19330 ........................................................................ 19331 ........................................................................ 19332 ........................................................................ 19333 ........................................................................ 19334 ........................................................................ 19335 ........................................................................ 19336 ........................................................................ 19337 ........................................................................ 19338 ........................................................................ 19339 ........................................................................ 19340 ........................................................................ 19341 ........................................................................ 19342 ........................................................................ 19343 ........................................................................ 19344 ........................................................................ 19345 ........................................................................ 19346 ........................................................................ 19347 ........................................................................ 19348 ........................................................................ 19349 ........................................................................ 19350 ........................................................................ 19351 ........................................................................ 19352 ........................................................................ 19353 ........................................................................ 19354 ........................................................................ 19355 ........................................................................ 19356 ........................................................................ 19357 ........................................................................ 19358 ........................................................................ 19359 ........................................................................ 19360 ........................................................................ 19361 ........................................................................ 19362 ........................................................................ 19363 ........................................................................ 19364 ........................................................................ 19365 ........................................................................ 19366 ........................................................................ 19367 ........................................................................ 19368 ........................................................................ 19369 ........................................................................ 19370 ........................................................................ 19371 ........................................................................ 19372 ........................................................................ 19373 ........................................................................ 19374 ........................................................................ 19375 ........................................................................ 19376 ........................................................................ 19377 ........................................................................ 19378 ........................................................................ 19379 ........................................................................ 19380 ........................................................................ 19381 ........................................................................ 19382 ........................................................................ 19383 ........................................................................ 19384 ........................................................................ 19385 ........................................................................ 19386 ........................................................................ 19387 ........................................................................ 19388 ........................................................................ 19389 ........................................................................ 19390 ........................................................................ 19391 ........................................................................ 19392 ........................................................................ 19393 ........................................................................ 19394 ........................................................................ 19395 ........................................................................ 19396 ........................................................................ 19397 ........................................................................ 19398 ........................................................................ 19399 ........................................................................ 19400 ........................................................................ 19401 ........................................................................ 19402 ........................................................................ 19403 ........................................................................ 19404 ........................................................................ 19405 ........................................................................ 19406 ........................................................................ 19407 ........................................................................ 19408 ........................................................................ 19409 ........................................................................ 19410 ........................................................................ 19411 ........................................................................ 19412 ........................................................................ 19413 ........................................................................ 19414 ........................................................................ 19415 ........................................................................ 19416 ........................................................................ 19417 ........................................................................ 19418 ........................................................................ 19419 ........................................................................ 19420 ........................................................................ 19421 ........................................................................ 19422 ........................................................................ 19423 ........................................................................ 19424 ........................................................................ 19425 ........................................................................ 19426 ........................................................................ 19427 ........................................................................ 19428 ........................................................................ 19429 ........................................................................ 19430 ........................................................................ 19431 ........................................................................ 19432 ........................................................................ 19433 ........................................................................ 19434 ........................................................................ 19435 ........................................................................ 19436 ........................................................................ 19437 ........................................................................ 19438 ........................................................................ 19439 ........................................................................ 19440 ........................................................................ 19441 ........................................................................ 19442 ........................................................................ 19443 ........................................................................ 19444 ........................................................................ 19445 ........................................................................ 19446 ........................................................................ 19447 ........................................................................ 19448 ........................................................................ 19449 ........................................................................ 19450 ........................................................................ 19451 ........................................................................ 19452 ........................................................................ 19453 ........................................................................ 19454 ........................................................................ 19455 ........................................................................ 19456 ........................................................................ 19457 ........................................................................ 19458 ........................................................................ 19459 ........................................................................ 19460 ........................................................................ 19461 ........................................................................ 19462 ........................................................................ 19463 ........................................................................ 19464 ........................................................................ 19465 ........................................................................ 19466 ........................................................................ 19467 ........................................................................ 19468 ........................................................................ 19469 ........................................................................ 19470 ........................................................................ 19471 ........................................................................ 19472 ........................................................................ 19473 ........................................................................ 19474 ........................................................................ 19475 ........................................................................ 19476 ........................................................................ 19477 ........................................................................ 19478 ........................................................................ 19479 ........................................................................ 19480 ........................................................................ 19481 ........................................................................ 19482 ........................................................................ 19483 ........................................................................ 19484 ........................................................................ 19485 ........................................................................ 19486 ........................................................................ 19487 ........................................................................ 19488 ........................................................................ 19489 ........................................................................ 19490 ........................................................................ 19491 ........................................................................ 19492 ........................................................................ 19493 ........................................................................ 19494 ........................................................................ 19495 ........................................................................ 19496 ........................................................................ 19497 ........................................................................ 19498 ........................................................................ 19499 ........................................................................ 19500 ........................................................................ 19501 ........................................................................ 19502 ........................................................................ 19503 ........................................................................ 19504 ........................................................................ 19505 ........................................................................ 19506 ........................................................................ 19507 ........................................................................ 19508 ........................................................................ 19509 ........................................................................ 19510 ........................................................................ 19511 ........................................................................ 19512 ........................................................................ 19513 ........................................................................ 19514 ........................................................................ 19515 ........................................................................ 19516 ........................................................................ 19517 ........................................................................ 19518 ........................................................................ 19519 ........................................................................ 19520 ........................................................................ 19521 ........................................................................ 19522 ........................................................................ 19523 ........................................................................ 19524 ........................................................................ 19525 ........................................................................ 19526 ........................................................................ 19527 ........................................................................ 19528 ........................................................................ 19529 ........................................................................ 19530 ........................................................................ 19531 ........................................................................ 19532 ........................................................................ 19533 ........................................................................ 19534 ........................................................................ 19535 ........................................................................ 19536 ........................................................................ 19537 ........................................................................ 19538 ........................................................................ 19539 ........................................................................ 19540 ........................................................................ 19541 ........................................................................ 19542 ........................................................................ 19543 ........................................................................ 19544 ........................................................................ 19545 ........................................................................ 19546 ........................................................................ 19547 ........................................................................ 19548 ........................................................................ 19549 ........................................................................ 19550 ........................................................................ 19551 ........................................................................ 19552 ........................................................................ 19553 ........................................................................ 19554 ........................................................................ 19555 ........................................................................ 19556 ........................................................................ 19557 ........................................................................ 19558 ........................................................................ 19559 ........................................................................ 19560 ........................................................................ 19561 ........................................................................ 19562 ........................................................................ 19563 ........................................................................ 19564 ........................................................................ 19565 ........................................................................ 19566 ........................................................................ 19567 ........................................................................ 19568 ........................................................................ 19569 ........................................................................ 19570 ........................................................................ 19571 ........................................................................ 19572 ........................................................................ 19573 ........................................................................ 19574 ........................................................................ 19575 ........................................................................ 19576 ........................................................................ 19577 ........................................................................ 19578 ........................................................................ 19579 ........................................................................ 19580 ........................................................................ 19581 ........................................................................ 19582 ........................................................................ 19583 ........................................................................ 19584 ........................................................................ 19585 ........................................................................ 19586 ........................................................................ 19587 ........................................................................ 19588 ........................................................................ 19589 ........................................................................ 19590 ........................................................................ 19591 ........................................................................ 19592 ........................................................................ 19593 ........................................................................ 19594 ........................................................................ 19595 ........................................................................ 19596 ........................................................................ 19597 ........................................................................ 19598 ........................................................................ 19599 ........................................................................ 19600 ........................................................................ 19601 ........................................................................ 19602 ........................................................................ 19603 ........................................................................ 19604 ........................................................................ 19605 ........................................................................ 19606 ........................................................................ 19607 ........................................................................ 19608 ........................................................................ 19609 ........................................................................ 19610 ........................................................................ 19611 ........................................................................ 19612 ........................................................................ 19613 ........................................................................ 19614 ........................................................................ 19615 ........................................................................ 19616 ........................................................................ 19617 ........................................................................ 19618 ........................................................................ 19619 ........................................................................ 19620 ........................................................................ 19621 ........................................................................ 19622 ........................................................................ 19623 ........................................................................ 19624 ........................................................................ 19625 ........................................................................ 19626 ........................................................................ 19627 ........................................................................ 19628 ........................................................................ 19629 ........................................................................ 19630 ........................................................................ 19631 ........................................................................ 19632 ........................................................................ 19633 ........................................................................ 19634 ........................................................................ 19635 ........................................................................ 19636 ........................................................................ 19637 ........................................................................ 19638 ........................................................................ 19639 ........................................................................ 19640 ........................................................................ 19641 ........................................................................ 19642 ........................................................................ 19643 ........................................................................ 19644 ........................................................................ 19645 ........................................................................ 19646 ........................................................................ 19647 ........................................................................ 19648 ........................................................................ 19649 ........................................................................ 19650 ........................................................................ 19651 ........................................................................ 19652 ........................................................................ 19653 ........................................................................ 19654 ........................................................................ 19655 ........................................................................ 19656 ........................................................................ 19657 ........................................................................ 19658 ........................................................................ 19659 ........................................................................ 19660 ........................................................................ 19661 ........................................................................ 19662 ........................................................................ 19663 ........................................................................ 19664 ........................................................................ 19665 ........................................................................ 19666 ........................................................................ 19667 ........................................................................ 19668 ........................................................................ 19669 ........................................................................ 19670 ........................................................................ 19671 ........................................................................ 19672 ........................................................................ 19673 ........................................................................ 19674 ........................................................................ 19675 ........................................................................ 19676 ........................................................................ 19677 ........................................................................ 19678 ........................................................................ 19679 ........................................................................ 19680 ........................................................................ 19681 ........................................................................ 19682 ........................................................................ 19683 ........................................................................ 19684 ........................................................................ 19685 ........................................................................ 19686 ........................................................................ 19687 ........................................................................ 19688 ........................................................................ 19689 ........................................................................ 19690 ........................................................................ 19691 ........................................................................ 19692 ........................................................................ 19693 ........................................................................ 19694 ........................................................................ 19695 ........................................................................ 19696 ........................................................................ 19697 ........................................................................ 19698 ........................................................................ 19699 ........................................................................ 19700 ........................................................................ 19701 ........................................................................ 19702 ........................................................................ 19703 ........................................................................ 19704 ........................................................................ 19705 ........................................................................ 19706 ........................................................................ 19707 ........................................................................ 19708 ........................................................................ 19709 ........................................................................ 19710 ........................................................................ 19711 ........................................................................ 19712 ........................................................................ 19713 ........................................................................ 19714 ........................................................................ 19715 ........................................................................ 19716 ........................................................................ 19717 ........................................................................ 19718 ........................................................................ 19719 ........................................................................ 19720 ........................................................................ 19721 ........................................................................ 19722 ........................................................................ 19723 ........................................................................ 19724 ........................................................................ 19725 ........................................................................ 19726 ........................................................................ 19727 ........................................................................ 19728 ........................................................................ 19729 ........................................................................ 19730 ........................................................................ 19731 ........................................................................ 19732 ........................................................................ 19733 ........................................................................ 19734 ........................................................................ 19735 ........................................................................ 19736 ........................................................................ 19737 ........................................................................ 19738 ........................................................................ 19739 ........................................................................ 19740 ........................................................................ 19741 ........................................................................ 19742 ........................................................................ 19743 ........................................................................ 19744 ........................................................................ 19745 ........................................................................ 19746 ........................................................................ 19747 ........................................................................ 19748 ........................................................................ 19749 ........................................................................ 19750 ........................................................................ 19751 ........................................................................ 19752 ........................................................................ 19753 ........................................................................ 19754 ........................................................................ 19755 ........................................................................ 19756 ........................................................................ 19757 ........................................................................ 19758 ........................................................................ 19759 ........................................................................ 19760 ........................................................................ 19761 ........................................................................ 19762 ........................................................................ 19763 ........................................................................ 19764 ........................................................................ 19765 ........................................................................ 19766 ........................................................................ 19767 ........................................................................ 19768 ........................................................................ 19769 ........................................................................ 19770 ........................................................................ 19771 ........................................................................ 19772 ........................................................................ 19773 ........................................................................ 19774 ........................................................................ 19775 ........................................................................ 19776 ........................................................................ 19777 ........................................................................ 19778 ........................................................................ 19779 ........................................................................ 19780 ........................................................................ 19781 ........................................................................ 19782 ........................................................................ 19783 ........................................................................ 19784 ........................................................................ 19785 ........................................................................ 19786 ........................................................................ 19787 ........................................................................ 19788 ........................................................................ 19789 ........................................................................ 19790 ........................................................................ 19791 ........................................................................ 19792 ........................................................................ 19793 ........................................................................ 19794 ........................................................................ 19795 ........................................................................ 19796 ........................................................................ 19797 ........................................................................ 19798 ........................................................................ 19799 ........................................................................ 19800 ........................................................................ 19801 ........................................................................ 19802 ........................................................................ 19803 ........................................................................ 19804 ........................................................................ 19805 ........................................................................ 19806 ........................................................................ 19807 ........................................................................ 19808 ........................................................................ 19809 ........................................................................ 19810 ........................................................................ 19811 ........................................................................ 19812 ........................................................................ 19813 ........................................................................ 19814 ........................................................................ 19815 ........................................................................ 19816 ........................................................................ 19817 ........................................................................ 19818 ........................................................................ 19819 ........................................................................ 19820 ........................................................................ 19821 ........................................................................ 19822 ........................................................................ 19823 ........................................................................ 19824 ........................................................................ 19825 ........................................................................ 19826 ........................................................................ 19827 ........................................................................ 19828 ........................................................................ 19829 ........................................................................ 19830 ........................................................................ 19831 ........................................................................ 19832 ........................................................................ 19833 ........................................................................ 19834 ........................................................................ 19835 ........................................................................ 19836 ........................................................................ 19837 ........................................................................ 19838 ........................................................................ 19839 ........................................................................ 19840 ........................................................................ 19841 ........................................................................ 19842 ........................................................................ 19843 ........................................................................ 19844 ........................................................................ 19845 ........................................................................ 19846 ........................................................................ 19847 ........................................................................ 19848 ........................................................................ 19849 ........................................................................ 19850 ........................................................................ 19851 ........................................................................ 19852 ........................................................................ 19853 ........................................................................ 19854 ........................................................................ 19855 ........................................................................ 19856 ........................................................................ 19857 ........................................................................ 19858 ........................................................................ 19859 ........................................................................ 19860 ........................................................................ 19861 ........................................................................ 19862 ........................................................................ 19863 ........................................................................ 19864 ........................................................................ 19865 ........................................................................ 19866 ........................................................................ 19867 ........................................................................ 19868 ........................................................................ 19869 ........................................................................ 19870 ........................................................................ 19871 ........................................................................ 19872 ........................................................................ 19873 ........................................................................ 19874 ........................................................................ 19875 ........................................................................ 19876 ........................................................................ 19877 ........................................................................ 19878 ........................................................................ 19879 ........................................................................ 19880 ........................................................................ 19881 ........................................................................ 19882 ........................................................................ 19883 ........................................................................ 19884 ........................................................................ 19885 ........................................................................ 19886 ........................................................................ 19887 ........................................................................ 19888 ........................................................................ 19889 ........................................................................ 19890 ........................................................................ 19891 ........................................................................ 19892 ........................................................................ 19893 ........................................................................ 19894 ........................................................................ 19895 ........................................................................ 19896 ........................................................................ 19897 ........................................................................ 19898 ........................................................................ 19899 ........................................................................ 19900 ........................................................................ 19901 ........................................................................ 19902 ........................................................................ 19903 ........................................................................ 19904 ........................................................................ 19905 ........................................................................ 19906 ........................................................................ 19907 ........................................................................ 19908 ........................................................................ 19909 ........................................................................ 19910 ........................................................................ 19911 ........................................................................ 19912 ........................................................................ 19913 ........................................................................ 19914 ........................................................................ 19915 ........................................................................ 19916 ........................................................................ 19917 ........................................................................ 19918 ........................................................................ 19919 ........................................................................ 19920 ........................................................................ 19921 ........................................................................ 19922 ........................................................................ 19923 ........................................................................ 19924 ........................................................................ 19925 ........................................................................ 19926 ........................................................................ 19927 ........................................................................ 19928 ........................................................................ 19929 ........................................................................ 19930 ........................................................................ 19931 ........................................................................ 19932 ........................................................................ 19933 ........................................................................ 19934 ........................................................................ 19935 ........................................................................ 19936 ........................................................................ 19937 ........................................................................ 19938 ........................................................................ 19939 ........................................................................ 19940 ........................................................................ 19941 ........................................................................ 19942 ........................................................................ 19943 ........................................................................ 19944 ........................................................................ 19945 ........................................................................ 19946 ........................................................................ 19947 ........................................................................ 19948 ........................................................................ 19949 ........................................................................ 19950 ........................................................................ 19951 ........................................................................ 19952 ........................................................................ 19953 ........................................................................ 19954 ........................................................................ 19955 ........................................................................ 19956 ........................................................................ 19957 ........................................................................ 19958 ........................................................................ 19959 ........................................................................ 19960 ........................................................................ 19961 ........................................................................ 19962 ........................................................................ 19963 ........................................................................ 19964 ........................................................................ 19965 ........................................................................ 19966 ........................................................................ 19967 ........................................................................ 19968 ........................................................................ 19969 ........................................................................ 19970 ........................................................................ 19971 ........................................................................ 19972 ........................................................................ 19973 ........................................................................ 19974 ........................................................................ 19975 ........................................................................ 19976 ........................................................................ 19977 ........................................................................ 19978 ........................................................................ 19979 ........................................................................ 19980 ........................................................................ 19981 ........................................................................ 19982 ........................................................................ 19983 ........................................................................ 19984 ........................................................................ 19985 ........................................................................ 19986 ........................................................................ 19987 ........................................................................ 19988 ........................................................................ 19989 ........................................................................ 19990 ........................................................................ 19991 ........................................................................ 19992 ........................................................................ 19993 ........................................................................ 19994 ........................................................................ 19995 ........................................................................ 19996 ........................................................................ 19997 ........................................................................ 19998 ........................................................................ 19999 ........................................................................ 20000 ........................................................................ 20001 ........................................................................ 20002 ........................................................................ 20003 ........................................................................ 20004 ........................................................................ 20005 ........................................................................ 20006 ........................................................................ 20007 ........................................................................ 20008 ........................................................................ 20009 ........................................................................ 20010 ........................................................................ 20011 ........................................................................ 20012 ........................................................................ 20013 ........................................................................ 20014 ........................................................................ 20015 ........................................................................ 20016 ........................................................................ 20017 ........................................................................ 20018 ........................................................................ 20019 ........................................................................ 20020 ........................................................................ 20021 ........................................................................ 20022 ........................................................................ 20023 ........................................................................ 20024 ........................................................................ 20025 ........................................................................ 20026 ........................................................................ 20027 ........................................................................ 20028 ........................................................................ 20029 ........................................................................ 20030 ........................................................................ 20031 ........................................................................ 20032 ........................................................................ 20033 ........................................................................ 20034 ........................................................................ 20035 ........................................................................ 20036 ........................................................................ 20037 ........................................................................ 20038 ........................................................................ 20039 ........................................................................ 20040 ........................................................................ 20041 ........................................................................ 20042 ........................................................................ 20043 ........................................................................ 20044 ........................................................................ 20045 ........................................................................ 20046 ........................................................................ 20047 ........................................................................ 20048 ........................................................................ 20049 ........................................................................ 20050 ........................................................................ 20051 ........................................................................ 20052 ........................................................................ 20053 ........................................................................ 20054 ........................................................................ 20055 ........................................................................ 20056 ........................................................................ 20057 ........................................................................ 20058 ........................................................................ 20059 ........................................................................ 20060 ........................................................................ 20061 ........................................................................ 20062 ........................................................................ 20063 ........................................................................ 20064 ........................................................................ 20065 ........................................................................ 20066 ........................................................................ 20067 ........................................................................ 20068 ........................................................................ 20069 ........................................................................ 20070 ........................................................................ 20071 ........................................................................ 20072 ........................................................................ 20073 ........................................................................ 20074 ........................................................................ 20075 ........................................................................ 20076 ........................................................................ 20077 ........................................................................ 20078 ........................................................................ 20079 ........................................................................ 20080 ........................................................................ 20081 ........................................................................ 20082 ........................................................................ 20083 ........................................................................ 20084 ........................................................................ 20085 ........................................................................ 20086 ........................................................................ 20087 ........................................................................ 20088 ........................................................................ 20089 ........................................................................ 20090 ........................................................................ 20091 ........................................................................ 20092 ........................................................................ 20093 ........................................................................ 20094 ........................................................................ 20095 ........................................................................ 20096 ........................................................................ 20097 ........................................................................ 20098 ........................................................................ 20099 ........................................................................ 20100 ........................................................................ 20101 ........................................................................ 20102 ........................................................................ 20103 ........................................................................ 20104 ........................................................................ 20105 ........................................................................ 20106 ........................................................................ 20107 ........................................................................ 20108 ........................................................................ 20109 ........................................................................ 20110 ........................................................................ 20111 ........................................................................ 20112 ........................................................................ 20113 ........................................................................ 20114 ........................................................................ 20115 ........................................................................ 20116 ........................................................................ 20117 ........................................................................ 20118 ........................................................................ 20119 ........................................................................ 20120 ........................................................................ 20121 ........................................................................ 20122 ........................................................................ 20123 ........................................................................ 20124 ........................................................................ 20125 ........................................................................ 20126 ........................................................................ 20127 ........................................................................ 20128 ........................................................................ 20129 ........................................................................ 20130 ........................................................................ 20131 ........................................................................ 20132 ........................................................................ 20133 ........................................................................ 20134 ........................................................................ 20135 ........................................................................ 20136 ........................................................................ 20137 ........................................................................ 20138 ........................................................................ 20139 ........................................................................ 20140 ........................................................................ 20141 ........................................................................ 20142 ........................................................................ 20143 ........................................................................ 20144 ........................................................................ 20145 ........................................................................ 20146 ........................................................................ 20147 ........................................................................ 20148 ........................................................................ 20149 ........................................................................ 20150 ........................................................................ 20151 ........................................................................ 20152 ........................................................................ 20153 ........................................................................ 20154 ........................................................................ 20155 ........................................................................ 20156 ........................................................................ 20157 ........................................................................ 20158 ........................................................................ 20159 ........................................................................ 20160 ........................................................................ 20161 ........................................................................ 20162 ........................................................................ 20163 ........................................................................ 20164 ........................................................................ 20165 ........................................................................ 20166 ........................................................................ 20167 ........................................................................ 20168 ........................................................................ 20169 ........................................................................ 20170 ........................................................................ 20171 ........................................................................ 20172 ........................................................................ 20173 ........................................................................ 20174 ........................................................................ 20175 ........................................................................ 20176 ........................................................................ 20177 ........................................................................ 20178 ........................................................................ 20179 ........................................................................ 20180 ........................................................................ 20181 ........................................................................ 20182 ........................................................................ 20183 ........................................................................ 20184 ........................................................................ 20185 ........................................................................ 20186 ........................................................................ 20187 ........................................................................ 20188 ........................................................................ 20189 ........................................................................ 20190 ........................................................................ 20191 ........................................................................ 20192 ........................................................................ 20193 ........................................................................ 20194 ........................................................................ 20195 ........................................................................ 20196 ........................................................................ 20197 ........................................................................ 20198 ........................................................................ 20199 ........................................................................ 20200 ........................................................................ 20201 ........................................................................ 20202 ........................................................................ 20203 ........................................................................ 20204 ........................................................................ 20205 ........................................................................ 20206 ........................................................................ 20207 ........................................................................ 20208 ........................................................................ 20209 ........................................................................ 20210 ........................................................................ 20211 ........................................................................ 20212 ........................................................................ 20213 ........................................................................ 20214 ........................................................................ 20215 ........................................................................ 20216 ........................................................................ 20217 ........................................................................ 20218 ........................................................................ 20219 ........................................................................ 20220 ........................................................................ 20221 ........................................................................ 20222 ........................................................................ 20223 ........................................................................ 20224 ........................................................................ 20225 ........................................................................ 20226 ........................................................................ 20227 ........................................................................ 20228 ........................................................................ 20229 ........................................................................ 20230 ........................................................................ 20231 ........................................................................ 20232 ........................................................................ 20233 ........................................................................ 20234 ........................................................................ 20235 ........................................................................ 20236 ........................................................................ 20237 ........................................................................ 20238 ........................................................................ 20239 ........................................................................ 20240 ........................................................................ 20241 ........................................................................ 20242 ........................................................................ 20243 ........................................................................ 20244 ........................................................................ 20245 ........................................................................ 20246 ........................................................................ 20247 ........................................................................ 20248 ........................................................................ 20249 ........................................................................ 20250 ........................................................................ 20251 ........................................................................ 20252 ........................................................................ 20253 ........................................................................ 20254 ........................................................................ 20255 ........................................................................ 20256 ........................................................................ 20257 ........................................................................ 20258 ........................................................................ 20259 ........................................................................ 20260 ........................................................................ 20261 ........................................................................ 20262 ........................................................................ 20263 ........................................................................ 20264 ........................................................................ 20265 ........................................................................ 20266 ........................................................................ 20267 ........................................................................ 20268 ........................................................................ 20269 ........................................................................ 20270 ........................................................................ 20271 ........................................................................ 20272 ........................................................................ 20273 ........................................................................ 20274 ........................................................................ 20275 ........................................................................ 20276 ........................................................................ 20277 ........................................................................ 20278 ........................................................................ 20279 ........................................................................ 20280 ........................................................................ 20281 ........................................................................ 20282 ........................................................................ 20283 ........................................................................ 20284 ........................................................................ 20285 ........................................................................ 20286 ........................................................................ 20287 ........................................................................ 20288 ........................................................................ 20289 ........................................................................ 20290 ........................................................................ 20291 ........................................................................ 20292 ........................................................................ 20293 ........................................................................ 20294 ........................................................................ 20295 ........................................................................ 20296 ........................................................................ 20297 ........................................................................ 20298 ........................................................................ 20299 ........................................................................ 20300 ........................................................................ 20301 ........................................................................ 20302 ........................................................................ 20303 ........................................................................ 20304 ........................................................................ 20305 ........................................................................ 20306 ........................................................................ 20307 ........................................................................ 20308 ........................................................................ 20309 ........................................................................ 20310 ........................................................................ 20311 ........................................................................ 20312 ........................................................................ 20313 ........................................................................ 20314 ........................................................................ 20315 ........................................................................ 20316 ........................................................................ 20317 ........................................................................ 20318 ........................................................................ 20319 ........................................................................ 20320 ........................................................................ 20321 ........................................................................ 20322 ........................................................................ 20323 ........................................................................ 20324 ........................................................................ 20325 ........................................................................ 20326 ........................................................................ 20327 ........................................................................ 20328 ........................................................................ 20329 ........................................................................ 20330 ........................................................................ 20331 ........................................................................ 20332 ........................................................................ 20333 ........................................................................ 20334 ........................................................................ 20335 ........................................................................ 20336 ........................................................................ 20337 ........................................................................ 20338 ........................................................................ 20339 ........................................................................ 20340 ........................................................................ 20341 ........................................................................ 20342 ........................................................................ 20343 ........................................................................ 20344 ........................................................................ 20345 ........................................................................ 20346 ........................................................................ 20347 ........................................................................ 20348 ........................................................................ 20349 ........................................................................ 20350 ........................................................................ 20351 ........................................................................ 20352 ........................................................................ 20353 ........................................................................ 20354 ........................................................................ 20355 ........................................................................ 20356 ........................................................................ 20357 ........................................................................ 20358 ........................................................................ 20359 ........................................................................ 20360 ........................................................................ 20361 ........................................................................ 20362 ........................................................................ 20363 ........................................................................ 20364 ........................................................................ 20365 ........................................................................ 20366 ........................................................................ 20367 ........................................................................ 20368 ........................................................................ 20369 ........................................................................ 20370 ........................................................................ 20371 ........................................................................ 20372 ........................................................................ 20373 ........................................................................ 20374 ........................................................................ 20375 ........................................................................ 20376 ........................................................................ 20377 ........................................................................ 20378 ........................................................................ 20379 ........................................................................ 20380 ........................................................................ 20381 ........................................................................ 20382 ........................................................................ 20383 ........................................................................ 20384 ........................................................................ 20385 ........................................................................ 20386 ........................................................................ 20387 ........................................................................ 20388 ........................................................................ 20389 ........................................................................ 20390 ........................................................................ 20391 ........................................................................ 20392 ........................................................................ 20393 ........................................................................ 20394 ........................................................................ 20395 ........................................................................ 20396 ........................................................................ 20397 ........................................................................ 20398 ........................................................................ 20399 ........................................................................ 20400 ........................................................................ 20401 ........................................................................ 20402 ........................................................................ 20403 ........................................................................ 20404 ........................................................................ 20405 ........................................................................ 20406 ........................................................................ 20407 ........................................................................ 20408 ........................................................................ 20409 ........................................................................ 20410 ........................................................................ 20411 ........................................................................ 20412 ........................................................................ 20413 ........................................................................ 20414 ........................................................................ 20415 ........................................................................ 20416 ........................................................................ 20417 ........................................................................ 20418 ........................................................................ 20419 ........................................................................ 20420 ........................................................................ 20421 ........................................................................ 20422 ........................................................................ 20423 ........................................................................ 20424 ........................................................................ 20425 ........................................................................ 20426 ........................................................................ 20427 ........................................................................ 20428 ........................................................................ 20429 ........................................................................ 20430 ........................................................................ 20431 ........................................................................ 20432 ........................................................................ 20433 ........................................................................ 20434 ........................................................................ 20435 ........................................................................ 20436 ........................................................................ 20437 ........................................................................ 20438 ........................................................................ 20439 ........................................................................ 20440 ........................................................................ 20441 ........................................................................ 20442 ........................................................................ 20443 ........................................................................ 20444 ........................................................................ 20445 ........................................................................ 20446 ........................................................................ 20447 ........................................................................ 20448 ........................................................................ 20449 ........................................................................ 20450 ........................................................................ 20451 ........................................................................ 20452 ........................................................................ 20453 ........................................................................ 20454 ........................................................................ 20455 ........................................................................ 20456 ........................................................................ 20457 ........................................................................ 20458 ........................................................................ 20459 ........................................................................ 20460 ........................................................................ 20461 ........................................................................ 20462 ........................................................................ 20463 ........................................................................ 20464 ........................................................................ 20465 ........................................................................ 20466 ........................................................................ 20467 ........................................................................ 20468 ........................................................................ 20469 ........................................................................ 20470 ........................................................................ 20471 ........................................................................ 20472 ........................................................................ 20473 ........................................................................ 20474 ........................................................................ 20475 ........................................................................ 20476 ........................................................................ 20477 ........................................................................ 20478 ........................................................................ 20479 ........................................................................ 20480 ........................................................................ 20481 ........................................................................ 20482 ........................................................................ 20483 ........................................................................ 20484 ........................................................................ 20485 ........................................................................ 20486 ........................................................................ 20487 ........................................................................ 20488 ........................................................................ 20489 ........................................................................ 20490 ........................................................................ 20491 ........................................................................ 20492 ........................................................................ 20493 ........................................................................ 20494 ........................................................................ 20495 ........................................................................ 20496 ........................................................................ 20497 ........................................................................ 20498 ........................................................................ 20499 ........................................................................ 20500 ........................................................................ 20501 ........................................................................ 20502 ........................................................................ 20503 ........................................................................ 20504 ........................................................................ 20505 ........................................................................ 20506 ........................................................................ 20507 ........................................................................ 20508 ........................................................................ 20509 ........................................................................ 20510 ........................................................................ 20511 ........................................................................ 20512 ........................................................................ 20513 ........................................................................ 20514 ........................................................................ 20515 ........................................................................ 20516 ........................................................................ 20517 ........................................................................ 20518 ........................................................................ 20519 ........................................................................ 20520 ........................................................................ 20521 ........................................................................ 20522 ........................................................................ 20523 ........................................................................ 20524 ........................................................................ 20525 ........................................................................ 20526 ........................................................................ 20527 ........................................................................ 20528 ........................................................................ 20529 ........................................................................ 20530 ........................................................................ 20531 ........................................................................ 20532 ........................................................................ 20533 ........................................................................ 20534 ........................................................................ 20535 ........................................................................ 20536 ........................................................................ 20537 ........................................................................ 20538 ........................................................................ 20539 ........................................................................ 20540 ........................................................................ 20541 ........................................................................ 20542 ........................................................................ 20543 ........................................................................ 20544 ........................................................................ 20545 ........................................................................ 20546 ........................................................................ 20547 ........................................................................ 20548 ........................................................................ 20549 ........................................................................ 20550 ........................................................................ 20551 ........................................................................ 20552 ........................................................................ 20553 ........................................................................ 20554 ........................................................................ 20555 ........................................................................ 20556 ........................................................................ 20557 ........................................................................ 20558 ........................................................................ 20559 ........................................................................ 20560 ........................................................................ 20561 ........................................................................ 20562 ........................................................................ 20563 ........................................................................ 20564 ........................................................................ 20565 ........................................................................ 20566 ........................................................................ 20567 ........................................................................ 20568 ........................................................................ 20569 ........................................................................ 20570 ........................................................................ 20571 ........................................................................ 20572 ........................................................................ 20573 ........................................................................ 20574 ........................................................................ 20575 ........................................................................ 20576 ........................................................................ 20577 ........................................................................ 20578 ........................................................................ 20579 ........................................................................ 20580 ........................................................................ 20581 ........................................................................ 20582 ........................................................................ 20583 ........................................................................ 20584 ........................................................................ 20585 ........................................................................ 20586 ........................................................................ 20587 ........................................................................ 20588 ........................................................................ 20589 ........................................................................ 20590 ........................................................................ 20591 ........................................................................ 20592 ........................................................................ 20593 ........................................................................ 20594 ........................................................................ 20595 ........................................................................ 20596 ........................................................................ 20597 ........................................................................ 20598 ........................................................................ 20599 ........................................................................ 20600 ........................................................................ 20601 ........................................................................ 20602 ........................................................................ 20603 ........................................................................ 20604 ........................................................................ 20605 ........................................................................ 20606 ........................................................................ 20607 ........................................................................ 20608 ........................................................................ 20609 ........................................................................ 20610 ........................................................................ 20611 ........................................................................ 20612 ........................................................................ 20613 ........................................................................ 20614 ........................................................................ 20615 ........................................................................ 20616 ........................................................................ 20617 ........................................................................ 20618 ........................................................................ 20619 ........................................................................ 20620 ........................................................................ 20621 ........................................................................ 20622 ........................................................................ 20623 ........................................................................ 20624 ........................................................................ 20625 ........................................................................ 20626 ........................................................................ 20627 ........................................................................ 20628 ........................................................................ 20629 ........................................................................ 20630 ........................................................................ 20631 ........................................................................ 20632 ........................................................................ 20633 ........................................................................ 20634 ........................................................................ 20635 ........................................................................ 20636 ........................................................................ 20637 ........................................................................ 20638 ........................................................................ 20639 ........................................................................ 20640 ........................................................................ 20641 ........................................................................ 20642 ........................................................................ 20643 ........................................................................ 20644 ........................................................................ 20645 ........................................................................ 20646 ........................................................................ 20647 ........................................................................ 20648 ........................................................................ 20649 ........................................................................ 20650 ........................................................................ 20651 ........................................................................ 20652 ........................................................................ 20653 ........................................................................ 20654 ........................................................................ 20655 ........................................................................ 20656 ........................................................................ 20657 ........................................................................ 20658 ........................................................................ 20659 ........................................................................ 20660 ........................................................................ 20661 ........................................................................ 20662 ........................................................................ 20663 ........................................................................ 20664 ........................................................................ 20665 ........................................................................ 20666 ........................................................................ 20667 ........................................................................ 20668 ........................................................................ 20669 ........................................................................ 20670 ........................................................................ 20671 ........................................................................ 20672 ........................................................................ 20673 ........................................................................ 20674 ........................................................................ 20675 ........................................................................ 20676 ........................................................................ 20677 ........................................................................ 20678 ........................................................................ 20679 ........................................................................ 20680 ........................................................................ 20681 ........................................................................ 20682 ........................................................................ 20683 ........................................................................ 20684 ........................................................................ 20685 ........................................................................ 20686 ........................................................................ 20687 ........................................................................ 20688 ........................................................................ 20689 ........................................................................ 20690 ........................................................................ 20691 ........................................................................ 20692 ........................................................................ 20693 ........................................................................ 20694 ........................................................................ 20695 ........................................................................ 20696 ........................................................................ 20697 ........................................................................ 20698 ........................................................................ 20699 ........................................................................ 20700 ........................................................................ 20701 ........................................................................ 20702 ........................................................................ 20703 ........................................................................ 20704 ........................................................................ 20705 ........................................................................ 20706 ........................................................................ 20707 ........................................................................ 20708 ........................................................................ 20709 ........................................................................ 20710 ........................................................................ 20711 ........................................................................ 20712 ........................................................................ 20713 ........................................................................ 20714 ........................................................................ 20715 ........................................................................ 20716 ........................................................................ 20717 ........................................................................ 20718 ........................................................................ 20719 ........................................................................ 20720 ........................................................................ 20721 ........................................................................ 20722 ........................................................................ 20723 ........................................................................ 20724 ........................................................................ 20725 ........................................................................ 20726 ........................................................................ 20727 ........................................................................ 20728 ........................................................................ 20729 ........................................................................ 20730 ........................................................................ 20731 ........................................................................ 20732 ........................................................................ 20733 ........................................................................ 20734 ........................................................................ 20735 ........................................................................ 20736 ........................................................................ 20737 ........................................................................ 20738 ........................................................................ 20739 ........................................................................ 20740 ........................................................................ 20741 ........................................................................ 20742 ........................................................................ 20743 ........................................................................ 20744 ........................................................................ 20745 ........................................................................ 20746 ........................................................................ 20747 ........................................................................ 20748 ........................................................................ 20749 ........................................................................ 20750 ........................................................................ 20751 ........................................................................ 20752 ........................................................................ 20753 ........................................................................ 20754 ........................................................................ 20755 ........................................................................ 20756 ........................................................................ 20757 ........................................................................ 20758 ........................................................................ 20759 ........................................................................ 20760 ........................................................................ 20761 ........................................................................ 20762 ........................................................................ 20763 ........................................................................ 20764 ........................................................................ 20765 ........................................................................ 20766 ........................................................................ 20767 ........................................................................ 20768 ........................................................................ 20769 ........................................................................ 20770 ........................................................................ 20771 ........................................................................ 20772 ........................................................................ 20773 ........................................................................ 20774 ........................................................................ 20775 ........................................................................ 20776 ........................................................................ 20777 ........................................................................ 20778 ........................................................................ 20779 ........................................................................ 20780 ........................................................................ 20781 ........................................................................ 20782 ........................................................................ 20783 ........................................................................ 20784 ........................................................................ 20785 ........................................................................ 20786 ........................................................................ 20787 ........................................................................ 20788 ........................................................................ 20789 ........................................................................ 20790 ........................................................................ 20791 ........................................................................ 20792 ........................................................................ 20793 ........................................................................ 20794 ........................................................................ 20795 ........................................................................ 20796 ........................................................................ 20797 ........................................................................ 20798 ........................................................................ 20799 ........................................................................ 20800 ........................................................................ 20801 ........................................................................ 20802 ........................................................................ 20803 ........................................................................ 20804 ........................................................................ 20805 ........................................................................ 20806 ........................................................................ 20807 ........................................................................ 20808 ........................................................................ 20809 ........................................................................ 20810 ........................................................................ 20811 ........................................................................ 20812 ........................................................................ 20813 ........................................................................ 20814 ........................................................................ 20815 ........................................................................ 20816 ........................................................................ 20817 ........................................................................ 20818 ........................................................................ 20819 ........................................................................ 20820 ........................................................................ 20821 ........................................................................ 20822 ........................................................................ 20823 ........................................................................ 20824 ........................................................................ 20825 ........................................................................ 20826 ........................................................................ 20827 ........................................................................ 20828 ........................................................................ 20829 ........................................................................ 20830 ........................................................................ 20831 ........................................................................ 20832 ........................................................................ 20833 ........................................................................ 20834 ........................................................................ 20835 ........................................................................ 20836 ........................................................................ 20837 ........................................................................ 20838 ........................................................................ 20839 ........................................................................ 20840 ........................................................................ 20841 ........................................................................ 20842 ........................................................................ 20843 ........................................................................ 20844 ........................................................................ 20845 ........................................................................ 20846 ........................................................................ 20847 ........................................................................ 20848 ........................................................................ 20849 ........................................................................ 20850 ........................................................................ 20851 ........................................................................ 20852 ........................................................................ 20853 ........................................................................ 20854 ........................................................................ 20855 ........................................................................ 20856 ........................................................................ 20857 ........................................................................ 20858 ........................................................................ 20859 ........................................................................ 20860 ........................................................................ 20861 ........................................................................ 20862 ........................................................................ 20863 ........................................................................ 20864 ........................................................................ 20865 ........................................................................ 20866 ........................................................................ 20867 ........................................................................ 20868 ........................................................................ 20869 ........................................................................ 20870 ........................................................................ 20871 ........................................................................ 20872 ........................................................................ 20873 ........................................................................ 20874 ........................................................................ 20875 ........................................................................ 20876 ........................................................................ 20877 ........................................................................ 20878 ........................................................................ 20879 ........................................................................ 20880 ........................................................................ 20881 ........................................................................ 20882 ........................................................................ 20883 ........................................................................ 20884 ........................................................................ 20885 ........................................................................ 20886 ........................................................................ 20887 ........................................................................ 20888 ........................................................................ 20889 ........................................................................ 20890 ........................................................................ 20891 ........................................................................ 20892 ........................................................................ 20893 ........................................................................ 20894 ........................................................................ 20895 ........................................................................ 20896 ........................................................................ 20897 ........................................................................ 20898 ........................................................................ 20899 ........................................................................ 20900 ........................................................................ 20901 ........................................................................ 20902 ........................................................................ 20903 ........................................................................ 20904 ........................................................................ 20905 ........................................................................ 20906 ........................................................................ 20907 ........................................................................ 20908 ........................................................................ 20909 ........................................................................ 20910 ........................................................................ 20911 ........................................................................ 20912 ........................................................................ 20913 ........................................................................ 20914 ........................................................................ 20915 ........................................................................ 20916 ........................................................................ 20917 ........................................................................ 20918 ........................................................................ 20919 ........................................................................ 20920 ........................................................................ 20921 ........................................................................ 20922 ........................................................................ 20923 ........................................................................ 20924 ........................................................................ 20925 ........................................................................ 20926 ........................................................................ 20927 ........................................................................ 20928 ........................................................................ 20929 ........................................................................ 20930 ........................................................................ 20931 ........................................................................ 20932 ........................................................................ 20933 ........................................................................ 20934 ........................................................................ 20935 ........................................................................ 20936 ........................................................................ 20937 ........................................................................ 20938 ........................................................................ 20939 ........................................................................ 20940 ........................................................................ 20941 ........................................................................ 20942 ........................................................................ 20943 ........................................................................ 20944 ........................................................................ 20945 ........................................................................ 20946 ........................................................................ 20947 ........................................................................ 20948 ........................................................................ 20949 ........................................................................ 20950 ........................................................................ 20951 ........................................................................ 20952 ........................................................................ 20953 ........................................................................ 20954 ........................................................................ 20955 ........................................................................ 20956 ........................................................................ 20957 ........................................................................ 20958 ........................................................................ 20959 ........................................................................ 20960 ........................................................................ 20961 ........................................................................ 20962 ........................................................................ 20963 ........................................................................ 20964 ........................................................................ 20965 ........................................................................ 20966 ........................................................................ 20967 ........................................................................ 20968 ........................................................................ 20969 ........................................................................ 20970 ........................................................................ 20971 ........................................................................ 20972 ........................................................................ 20973 ........................................................................ 20974 ........................................................................ 20975 ........................................................................ 20976 ........................................................................ 20977 ........................................................................ 20978 ........................................................................ 20979 ........................................................................ 20980 ........................................................................ 20981 ........................................................................ 20982 ........................................................................ 20983 ........................................................................ 20984 ........................................................................ 20985 ........................................................................ 20986 ........................................................................ 20987 ........................................................................ 20988 ........................................................................ 20989 ........................................................................ 20990 ........................................................................ 20991 ........................................................................ 20992 ........................................................................ 20993 ........................................................................ 20994 ........................................................................ 20995 ........................................................................ 20996 ........................................................................ 20997 ........................................................................ 20998 ........................................................................ 20999 ........................................................................ 21000 ........................................................................ 21001 ........................................................................ 21002 ........................................................................ 21003 ........................................................................ 21004 ........................................................................ 21005 ........................................................................ 21006 ........................................................................ 21007 ........................................................................ 21008 ........................................................................ 21009 ........................................................................ 21010 ........................................................................ 21011 ........................................................................ 21012 ........................................................................ 21013 ........................................................................ 21014 ........................................................................ 21015 ........................................................................ 21016 ........................................................................ 21017 ........................................................................ 21018 ........................................................................ 21019 ........................................................................ 21020 ........................................................................ 21021 ........................................................................ 21022 ........................................................................ 21023 ........................................................................ 21024 ........................................................................ 21025 ........................................................................ 21026 ........................................................................ 21027 ........................................................................ 21028 ........................................................................ 21029 ........................................................................ 21030 ........................................................................ 21031 ........................................................................ 21032 ........................................................................ 21033 ........................................................................ 21034 ........................................................................ 21035 ........................................................................ 21036 ........................................................................ 21037 ........................................................................ 21038 ........................................................................ 21039 ........................................................................ 21040 ........................................................................ 21041 ........................................................................ 21042 ........................................................................ 21043 ........................................................................ 21044 ........................................................................ 21045 ........................................................................ 21046 ........................................................................ 21047 ........................................................................ 21048 ........................................................................ 21049 ........................................................................ 21050 ........................................................................ 21051 ........................................................................ 21052 ........................................................................ 21053 ........................................................................ 21054 ........................................................................ 21055 ........................................................................ 21056 ........................................................................ 21057 ........................................................................ 21058 ........................................................................ 21059 ........................................................................ 21060 ........................................................................ 21061 ........................................................................ 21062 ........................................................................ 21063 ........................................................................ 21064 ........................................................................ 21065 ........................................................................ 21066 ........................................................................ 21067 ........................................................................ 21068 ........................................................................ 21069 ........................................................................ 21070 ........................................................................ 21071 ........................................................................ 21072 ........................................................................ 21073 ........................................................................ 21074 ........................................................................ 21075 ........................................................................ 21076 ........................................................................ 21077 ........................................................................ 21078 ........................................................................ 21079 ........................................................................ 21080 ........................................................................ 21081 ........................................................................ 21082 ........................................................................ 21083 ........................................................................ 21084 ........................................................................ 21085 ........................................................................ 21086 ........................................................................ 21087 ........................................................................ 21088 ........................................................................ 21089 ........................................................................ 21090 ........................................................................ 21091 ........................................................................ 21092 ........................................................................ 21093 ........................................................................ 21094 ........................................................................ 21095 ........................................................................ 21096 ........................................................................ 21097 ........................................................................ 21098 ........................................................................ 21099 ........................................................................ 21100 ........................................................................ 21101 ........................................................................ 21102 ........................................................................ 21103 ........................................................................ 21104 ........................................................................ 21105 ........................................................................ 21106 ........................................................................ 21107 ........................................................................ 21108 ........................................................................ 21109 ........................................................................ 21110 ........................................................................ 21111 ........................................................................ 21112 ........................................................................ 21113 ........................................................................ 21114 ........................................................................ 21115 ........................................................................ 21116 ........................................................................ 21117 ........................................................................ 21118 ........................................................................ 21119 ........................................................................ 21120 ........................................................................ 21121 ........................................................................ 21122 ........................................................................ 21123 ........................................................................ 21124 ........................................................................ 21125 ........................................................................ 21126 ........................................................................ 21127 ........................................................................ 21128 ........................................................................ 21129 ........................................................................ 21130 ........................................................................ 21131 ........................................................................ 21132 ........................................................................ 21133 ........................................................................ 21134 ........................................................................ 21135 ........................................................................ 21136 ........................................................................ 21137 ........................................................................ 21138 ........................................................................ 21139 ........................................................................ 21140 ........................................................................ 21141 ........................................................................ 21142 ........................................................................ 21143 ........................................................................ 21144 ........................................................................ 21145 ........................................................................ 21146 ........................................................................ 21147 ........................................................................ 21148 ........................................................................ 21149 ........................................................................ 21150 ........................................................................ 21151 ........................................................................ 21152 ........................................................................ 21153 ........................................................................ 21154 ........................................................................ 21155 ........................................................................ 21156 ........................................................................ 21157 ........................................................................ 21158 ........................................................................ 21159 ........................................................................ 21160 ........................................................................ 21161 ........................................................................ 21162 ........................................................................ 21163 ........................................................................ 21164 ........................................................................ 21165 ........................................................................ 21166 ........................................................................ 21167 ........................................................................ 21168 ........................................................................ 21169 ........................................................................ 21170 ........................................................................ 21171 ........................................................................ 21172 ........................................................................ 21173 ........................................................................ 21174 ........................................................................ 21175 ........................................................................ 21176 ........................................................................ 21177 ........................................................................ 21178 ........................................................................ 21179 ........................................................................ 21180 ........................................................................ 21181 ........................................................................ 21182 ........................................................................ 21183 ........................................................................ 21184 ........................................................................ 21185 ........................................................................ 21186 ........................................................................ 21187 ........................................................................ 21188 ........................................................................ 21189 ........................................................................ 21190 ........................................................................ 21191 ........................................................................ 21192 ........................................................................ 21193 ........................................................................ 21194 ........................................................................ 21195 ........................................................................ 21196 ........................................................................ 21197 ........................................................................ 21198 ........................................................................ 21199 ........................................................................ 21200 ........................................................................ 21201 ........................................................................ 21202 ........................................................................ 21203 ........................................................................ 21204 ........................................................................ 21205 ........................................................................ 21206 ........................................................................ 21207 ........................................................................ 21208 ........................................................................ 21209 ........................................................................ 21210 ........................................................................ 21211 ........................................................................ 21212 ........................................................................ 21213 ........................................................................ 21214 ........................................................................ 21215 ........................................................................ 21216 ........................................................................ 21217 ........................................................................ 21218 ........................................................................ 21219 ........................................................................ 21220 ........................................................................ 21221 ........................................................................ 21222 ........................................................................ 21223 ........................................................................ 21224 ........................................................................ 21225 ........................................................................ 21226 ........................................................................ 21227 ........................................................................ 21228 ........................................................................ 21229 ........................................................................ 21230 ........................................................................ 21231 ........................................................................ 21232 ........................................................................ 21233 ........................................................................ 21234 ........................................................................ 21235 ........................................................................ 21236 ........................................................................ 21237 ........................................................................ 21238 ........................................................................ 21239 ........................................................................ 21240 ........................................................................ 21241 ........................................................................ 21242 ........................................................................ 21243 ........................................................................ 21244 ........................................................................ 21245 ........................................................................ 21246 ........................................................................ 21247 ........................................................................ 21248 ........................................................................ 21249 ........................................................................ 21250 ........................................................................ 21251 ........................................................................ 21252 ........................................................................ 21253 ........................................................................ 21254 ........................................................................ 21255 ........................................................................ 21256 ........................................................................ 21257 ........................................................................ 21258 ........................................................................ 21259 ........................................................................ 21260 ........................................................................ 21261 ........................................................................ 21262 ........................................................................ 21263 ........................................................................ 21264 ........................................................................ 21265 ........................................................................ 21266 ........................................................................ 21267 ........................................................................ 21268 ........................................................................ 21269 ........................................................................ 21270 ........................................................................ 21271 ........................................................................ 21272 ........................................................................ 21273 ........................................................................ 21274 ........................................................................ 21275 ........................................................................ 21276 ........................................................................ 21277 ........................................................................ 21278 ........................................................................ 21279 ........................................................................ 21280 ........................................................................ 21281 ........................................................................ 21282 ........................................................................ 21283 ........................................................................ 21284 ........................................................................ 21285 ........................................................................ 21286 ........................................................................ 21287 ........................................................................ 21288 ........................................................................ 21289 ........................................................................ 21290 ........................................................................ 21291 ........................................................................ 21292 ........................................................................ 21293 ........................................................................ 21294 ........................................................................ 21295 ........................................................................ 21296 ........................................................................ 21297 ........................................................................ 21298 ........................................................................ 21299 ........................................................................ 21300 ........................................................................ 21301 ........................................................................ 21302 ........................................................................ 21303 ........................................................................ 21304 ........................................................................ 21305 ........................................................................ 21306 ........................................................................ 21307 ........................................................................ 21308 ........................................................................ 21309 ........................................................................ 21310 ........................................................................ 21311 ........................................................................ 21312 ........................................................................ 21313 ........................................................................ 21314 ........................................................................ 21315 ........................................................................ 21316 ........................................................................ 21317 ........................................................................ 21318 ........................................................................ 21319 ........................................................................ 21320 ........................................................................ 21321 ........................................................................ 21322 ........................................................................ 21323 ........................................................................ 21324 ........................................................................ 21325 ........................................................................ 21326 ........................................................................ 21327 ........................................................................ 21328 ........................................................................ 21329 ........................................................................ 21330 ........................................................................ 21331 ........................................................................ 21332 ........................................................................ 21333 ........................................................................ 21334 ........................................................................ 21335 ........................................................................ 21336 ........................................................................ 21337 ........................................................................ 21338 ........................................................................ 21339 ........................................................................ 21340 ........................................................................ 21341 ........................................................................ 21342 ........................................................................ 21343 ........................................................................ 21344 ........................................................................ 21345 ........................................................................ 21346 ........................................................................ 21347 ........................................................................ 21348 ........................................................................ 21349 ........................................................................ 21350 ........................................................................ 21351 ........................................................................ 21352 ........................................................................ 21353 ........................................................................ 21354 ........................................................................ 21355 ........................................................................ 21356 ........................................................................ 21357 ........................................................................ 21358 ........................................................................ 21359 ........................................................................ 21360 ........................................................................ 21361 ........................................................................ 21362 ........................................................................ 21363 ........................................................................ 21364 ........................................................................ 21365 ........................................................................ 21366 ........................................................................ 21367 ........................................................................ 21368 ........................................................................ 21369 ........................................................................ 21370 ........................................................................ 21371 ........................................................................ 21372 ........................................................................ 21373 ........................................................................ 21374 ........................................................................ 21375 ........................................................................ 21376 ........................................................................ 21377 ........................................................................ 21378 ........................................................................ 21379 ........................................................................ 21380 ........................................................................ 21381 ........................................................................ 21382 ........................................................................ 21383 ........................................................................ 21384 ........................................................................ 21385 ........................................................................ 21386 ........................................................................ 21387 ........................................................................ 21388 ........................................................................ 21389 ........................................................................ 21390 ........................................................................ 21391 ........................................................................ 21392 ........................................................................ 21393 ........................................................................ 21394 ........................................................................ 21395 ........................................................................ 21396 ........................................................................ 21397 ........................................................................ 21398 ........................................................................ 21399 ........................................................................ 21400 ........................................................................ 21401 ........................................................................ 21402 ........................................................................ 21403 ........................................................................ 21404 ........................................................................ 21405 ........................................................................ 21406 ........................................................................ 21407 ........................................................................ 21408 ........................................................................ 21409 ........................................................................ 21410 ........................................................................ 21411 ........................................................................ 21412 ........................................................................ 21413 ........................................................................ 21414 ........................................................................ 21415 ........................................................................ 21416 ........................................................................ 21417 ........................................................................ 21418 ........................................................................ 21419 ........................................................................ 21420 ........................................................................ 21421 ........................................................................ 21422 ........................................................................ 21423 ........................................................................ 21424 ........................................................................ 21425 ........................................................................ 21426 ........................................................................ 21427 ........................................................................ 21428 ........................................................................ 21429 ........................................................................ 21430 ........................................................................ 21431 ........................................................................ 21432 ........................................................................ 21433 ........................................................................ 21434 ........................................................................ 21435 ........................................................................ 21436 ........................................................................ 21437 ........................................................................ 21438 ........................................................................ 21439 ........................................................................ 21440 ........................................................................ 21441 ........................................................................ 21442 ........................................................................ 21443 ........................................................................ 21444 ........................................................................ 21445 ........................................................................ 21446 ........................................................................ 21447 ........................................................................ 21448 ........................................................................ 21449 ........................................................................ 21450 ........................................................................ 21451 ........................................................................ 21452 ........................................................................ 21453 ........................................................................ 21454 ........................................................................ 21455 ........................................................................ 21456 ........................................................................ 21457 ........................................................................ 21458 ........................................................................ 21459 ........................................................................ 21460 ........................................................................ 21461 ........................................................................ 21462 ........................................................................ 21463 ........................................................................ 21464 ........................................................................ 21465 ........................................................................ 21466 ........................................................................ 21467 ........................................................................ 21468 ........................................................................ 21469 ........................................................................ 21470 ........................................................................ 21471 ........................................................................ 21472 ........................................................................ 21473 ........................................................................ 21474 ........................................................................ 21475 ........................................................................ 21476 ........................................................................ 21477 ........................................................................ 21478 ........................................................................ 21479 ........................................................................ 21480 ........................................................................ 21481 ........................................................................ 21482 ........................................................................ 21483 ........................................................................ 21484 ........................................................................ 21485 ........................................................................ 21486 ........................................................................ 21487 ........................................................................ 21488 ........................................................................ 21489 ........................................................................ 21490 ........................................................................ 21491 ........................................................................ 21492 ........................................................................ 21493 ........................................................................ 21494 ........................................................................ 21495 ........................................................................ 21496 ........................................................................ 21497 ........................................................................ 21498 ........................................................................ 21499 ........................................................................ 21500 ........................................................................ 21501 ........................................................................ 21502 ........................................................................ 21503 ........................................................................ 21504 ........................................................................ 21505 ........................................................................ 21506 ........................................................................ 21507 ........................................................................ 21508 ........................................................................ 21509 ........................................................................ 21510 ........................................................................ 21511 ........................................................................ 21512 ........................................................................ 21513 ........................................................................ 21514 ........................................................................ 21515 ........................................................................ 21516 ........................................................................ 21517 ........................................................................ 21518 ........................................................................ 21519 ........................................................................ 21520 ........................................................................ 21521 ........................................................................ 21522 ........................................................................ 21523 ........................................................................ 21524 ........................................................................ 21525 ........................................................................ 21526 ........................................................................ 21527 ........................................................................ 21528 ........................................................................ 21529 ........................................................................ 21530 ........................................................................ 21531 ........................................................................ 21532 ........................................................................ 21533 ........................................................................ 21534 ........................................................................ 21535 ........................................................................ 21536 ........................................................................ 21537 ........................................................................ 21538 ........................................................................ 21539 ........................................................................ 21540 ........................................................................ 21541 ........................................................................ 21542 ........................................................................ 21543 ........................................................................ 21544 ........................................................................ 21545 ........................................................................ 21546 ........................................................................ 21547 ........................................................................ 21548 ........................................................................ 21549 ........................................................................ 21550 ........................................................................ 21551 ........................................................................ 21552 ........................................................................ 21553 ........................................................................ 21554 ........................................................................ 21555 ........................................................................ 21556 ........................................................................ 21557 ........................................................................ 21558 ........................................................................ 21559 ........................................................................ 21560 ........................................................................ 21561 ........................................................................ 21562 ........................................................................ 21563 ........................................................................ 21564 ........................................................................ 21565 ........................................................................ 21566 ........................................................................ 21567 ........................................................................ 21568 ........................................................................ 21569 ........................................................................ 21570 ........................................................................ 21571 ........................................................................ 21572 ........................................................................ 21573 ........................................................................ 21574 ........................................................................ 21575 ........................................................................ 21576 ........................................................................ 21577 ........................................................................ 21578 ........................................................................ 21579 ........................................................................ 21580 ........................................................................ 21581 ........................................................................ 21582 ........................................................................ 21583 ........................................................................ 21584 ........................................................................ 21585 ........................................................................ 21586 ........................................................................ 21587 ........................................................................ 21588 ........................................................................ 21589 ........................................................................ 21590 ........................................................................ 21591 ........................................................................ 21592 ........................................................................ 21593 ........................................................................ 21594 ........................................................................ 21595 ........................................................................ 21596 ........................................................................ 21597 ........................................................................ 21598 ........................................................................ 21599 ........................................................................ 21600 ........................................................................ 21601 ........................................................................ 21602 ........................................................................ 21603 ........................................................................ 21604 ........................................................................ 21605 ........................................................................ 21606 ........................................................................ 21607 ........................................................................ 21608 ........................................................................ 21609 ........................................................................ 21610 ........................................................................ 21611 ........................................................................ 21612 ........................................................................ 21613 ........................................................................ 21614 ........................................................................ 21615 ........................................................................ 21616 ........................................................................ 21617 ........................................................................ 21618 ........................................................................ 21619 ........................................................................ 21620 ........................................................................ 21621 ........................................................................ 21622 ........................................................................ 21623 ........................................................................ 21624 ........................................................................ 21625 ........................................................................ 21626 ........................................................................ 21627 ........................................................................ 21628 ........................................................................ 21629 ........................................................................ 21630 ........................................................................ 21631 ........................................................................ 21632 ........................................................................ 21633 ........................................................................ 21634 ........................................................................ 21635 ........................................................................ 21636 ........................................................................ 21637 ........................................................................ 21638 ........................................................................ 21639 ........................................................................ 21640 ........................................................................ 21641 ........................................................................ 21642 ........................................................................ 21643 ........................................................................ 21644 ........................................................................ 21645 ........................................................................ 21646 ........................................................................ 21647 ........................................................................ 21648 ........................................................................ 21649 ........................................................................ 21650 ........................................................................ 21651 ........................................................................ 21652 ........................................................................ 21653 ........................................................................ 21654 ........................................................................ 21655 ........................................................................ 21656 ........................................................................ 21657 ........................................................................ 21658 ........................................................................ 21659 ........................................................................ 21660 ........................................................................ 21661 ........................................................................ 21662 ........................................................................ 21663 ........................................................................ 21664 ........................................................................ 21665 ........................................................................ 21666 ........................................................................ 21667 ........................................................................ 21668 ........................................................................ 21669 ........................................................................ 21670 ........................................................................ 21671 ........................................................................ 21672 ........................................................................ 21673 ........................................................................ 21674 ........................................................................ 21675 ........................................................................ 21676 ........................................................................ 21677 ........................................................................ 21678 ........................................................................ 21679 ........................................................................ 21680 ........................................................................ 21681 ........................................................................ 21682 ........................................................................ 21683 ........................................................................ 21684 ........................................................................ 21685 ........................................................................ 21686 ........................................................................ 21687 ........................................................................ 21688 ........................................................................ 21689 ........................................................................ 21690 ........................................................................ 21691 ........................................................................ 21692 ........................................................................ 21693 ........................................................................ 21694 ........................................................................ 21695 ........................................................................ 21696 ........................................................................ 21697 ........................................................................ 21698 ........................................................................ 21699 ........................................................................ 21700 ........................................................................ 21701 ........................................................................ 21702 ........................................................................ 21703 ........................................................................ 21704 ........................................................................ 21705 ........................................................................ 21706 ........................................................................ 21707 ........................................................................ 21708 ........................................................................ 21709 ........................................................................ 21710 ........................................................................ 21711 ........................................................................ 21712 ........................................................................ 21713 ........................................................................ 21714 ........................................................................ 21715 ........................................................................ 21716 ........................................................................ 21717 ........................................................................ 21718 ........................................................................ 21719 ........................................................................ 21720 ........................................................................ 21721 ........................................................................ 21722 ........................................................................ 21723 ........................................................................ 21724 ........................................................................ 21725 ........................................................................ 21726 ........................................................................ 21727 ........................................................................ 21728 ........................................................................ 21729 ........................................................................ 21730 ........................................................................ 21731 ........................................................................ 21732 ........................................................................ 21733 ........................................................................ 21734 ........................................................................ 21735 ........................................................................ 21736 ........................................................................ 21737 ........................................................................ 21738 ........................................................................ 21739 ........................................................................ 21740 ........................................................................ 21741 ........................................................................ 21742 ........................................................................ 21743 ........................................................................ 21744 ........................................................................ 21745 ........................................................................ 21746 ........................................................................ 21747 ........................................................................ 21748 ........................................................................ 21749 ........................................................................ 21750 ........................................................................ 21751 ........................................................................ 21752 ........................................................................ 21753 ........................................................................ 21754 ........................................................................ 21755 ........................................................................ 21756 ........................................................................ 21757 ........................................................................ 21758 ........................................................................ 21759 ........................................................................ 21760 ........................................................................ 21761 ........................................................................ 21762 ........................................................................ 21763 ........................................................................ 21764 ........................................................................ 21765 ........................................................................ 21766 ........................................................................ 21767 ........................................................................ 21768 ........................................................................ 21769 ........................................................................ 21770 ........................................................................ 21771 ........................................................................ 21772 ........................................................................ 21773 ........................................................................ 21774 ........................................................................ 21775 ........................................................................ 21776 ........................................................................ 21777 ........................................................................ 21778 ........................................................................ 21779 ........................................................................ 21780 ........................................................................ 21781 ........................................................................ 21782 ........................................................................ 21783 ........................................................................ 21784 ........................................................................ 21785 ........................................................................ 21786 ........................................................................ 21787 ........................................................................ 21788 ........................................................................ 21789 ........................................................................ 21790 ........................................................................ 21791 ........................................................................ 21792 ........................................................................ 21793 ........................................................................ 21794 ........................................................................ 21795 ........................................................................ 21796 ........................................................................ 21797 ........................................................................ 21798 ........................................................................ 21799 ........................................................................ 21800 ........................................................................ 21801 ........................................................................ 21802 ........................................................................ 21803 ........................................................................ 21804 ........................................................................ 21805 ........................................................................ 21806 ........................................................................ 21807 ........................................................................ 21808 ........................................................................ 21809 ........................................................................ 21810 ........................................................................ 21811 ........................................................................ 21812 ........................................................................ 21813 ........................................................................ 21814 ........................................................................ 21815 ........................................................................ 21816 ........................................................................ 21817 ........................................................................ 21818 ........................................................................ 21819 ........................................................................ 21820 ........................................................................ 21821 ........................................................................ 21822 ........................................................................ 21823 ........................................................................ 21824 ........................................................................ 21825 ........................................................................ 21826 ........................................................................ 21827 ........................................................................ 21828 ........................................................................ 21829 ........................................................................ 21830 ........................................................................ 21831 ........................................................................ 21832 ........................................................................ 21833 ........................................................................ 21834 ........................................................................ 21835 ........................................................................ 21836 ........................................................................ 21837 ........................................................................ 21838 ........................................................................ 21839 ........................................................................ 21840 ........................................................................ 21841 ........................................................................ 21842 ........................................................................ 21843 ........................................................................ 21844 ........................................................................ 21845 ........................................................................ 21846 ........................................................................ 21847 ........................................................................ 21848 ........................................................................ 21849 ........................................................................ 21850 ........................................................................ 21851 ........................................................................ 21852 ........................................................................ 21853 ........................................................................ 21854 ........................................................................ 21855 ........................................................................ 21856 ........................................................................ 21857 ........................................................................ 21858 ........................................................................ 21859 ........................................................................ 21860 ........................................................................ 21861 ........................................................................ 21862 ........................................................................ 21863 ........................................................................ 21864 ........................................................................ 21865 ........................................................................ 21866 ........................................................................ 21867 ........................................................................ 21868 ........................................................................ 21869 ........................................................................ 21870 ........................................................................ 21871 ........................................................................ 21872 ........................................................................ 21873 ........................................................................ 21874 ........................................................................ 21875 ........................................................................ 21876 ........................................................................ 21877 ........................................................................ 21878 ........................................................................ 21879 ........................................................................ 21880 ........................................................................ 21881 ........................................................................ 21882 ........................................................................ 21883 ........................................................................ 21884 ........................................................................ 21885 ........................................................................ 21886 ........................................................................ 21887 ........................................................................ 21888 ........................................................................ 21889 ........................................................................ 21890 ........................................................................ 21891 ........................................................................ 21892 ........................................................................ 21893 ........................................................................ 21894 ........................................................................ 21895 ........................................................................ 21896 ........................................................................ 21897 ........................................................................ 21898 ........................................................................ 21899 ........................................................................ 21900 ........................................................................ 21901 ........................................................................ 21902 ........................................................................ 21903 ........................................................................ 21904 ........................................................................ 21905 ........................................................................ 21906 ........................................................................ 21907 ........................................................................ 21908 ........................................................................ 21909 ........................................................................ 21910 ........................................................................ 21911 ........................................................................ 21912 ........................................................................ 21913 ........................................................................ 21914 ........................................................................ 21915 ........................................................................ 21916 ........................................................................ 21917 ........................................................................ 21918 ........................................................................ 21919 ........................................................................ 21920 ........................................................................ 21921 ........................................................................ 21922 ........................................................................ 21923 ........................................................................ 21924 ........................................................................ 21925 ........................................................................ 21926 ........................................................................ 21927 ........................................................................ 21928 ........................................................................ 21929 ........................................................................ 21930 ........................................................................ 21931 ........................................................................ 21932 ........................................................................ 21933 ........................................................................ 21934 ........................................................................ 21935 ........................................................................ 21936 ........................................................................ 21937 ........................................................................ 21938 ........................................................................ 21939 ........................................................................ 21940 ........................................................................ 21941 ........................................................................ 21942 ........................................................................ 21943 ........................................................................ 21944 ........................................................................ 21945 ........................................................................ 21946 ........................................................................ 21947 ........................................................................ 21948 ........................................................................ 21949 ........................................................................ 21950 ........................................................................ 21951 ........................................................................ 21952 ........................................................................ 21953 ........................................................................ 21954 ........................................................................ 21955 ........................................................................ 21956 ........................................................................ 21957 ........................................................................ 21958 ........................................................................ 21959 ........................................................................ 21960 ........................................................................ 21961 ........................................................................ 21962 ........................................................................ 21963 ........................................................................ 21964 ........................................................................ 21965 ........................................................................ 21966 ........................................................................ 21967 ........................................................................ 21968 ........................................................................ 21969 ........................................................................ 21970 ........................................................................ 21971 ........................................................................ 21972 ........................................................................ 21973 ........................................................................ 21974 ........................................................................ 21975 ........................................................................ 21976 ........................................................................ 21977 ........................................................................ 21978 ........................................................................ 21979 ........................................................................ 21980 ........................................................................ 21981 ........................................................................ 21982 ........................................................................ 21983 ........................................................................ 21984 ........................................................................ 21985 ........................................................................ 21986 ........................................................................ 21987 ........................................................................ 21988 ........................................................................ 21989 ........................................................................ 21990 ........................................................................ 21991 ........................................................................ 21992 ........................................................................ 21993 ........................................................................ 21994 ........................................................................ 21995 ........................................................................ 21996 ........................................................................ 21997 ........................................................................ 21998 ........................................................................ 21999 ........................................................................ 22000 ........................................................................ 22001 ........................................................................ 22002 ........................................................................ 22003 ........................................................................ 22004 ........................................................................ 22005 ........................................................................ 22006 ........................................................................ 22007 ........................................................................ 22008 ........................................................................ 22009 ........................................................................ 22010 ........................................................................ 22011 ........................................................................ 22012 ........................................................................ 22013 ........................................................................ 22014 ........................................................................ 22015 ........................................................................ 22016 ........................................................................ 22017 ........................................................................ 22018 ........................................................................ 22019 ........................................................................ 22020 ........................................................................ 22021 ........................................................................ 22022 ........................................................................ 22023 ........................................................................ 22024 ........................................................................ 22025 ........................................................................ 22026 ........................................................................ 22027 ........................................................................ 22028 ........................................................................ 22029 ........................................................................ 22030 ........................................................................ 22031 ........................................................................ 22032 ........................................................................ 22033 ........................................................................ 22034 ........................................................................ 22035 ........................................................................ 22036 ........................................................................ 22037 ........................................................................ 22038 ........................................................................ 22039 ........................................................................ 22040 ........................................................................ 22041 ........................................................................ 22042 ........................................................................ 22043 ........................................................................ 22044 ........................................................................ 22045 ........................................................................ 22046 ........................................................................ 22047 ........................................................................ 22048 ........................................................................ 22049 ........................................................................ 22050 ........................................................................ 22051 ........................................................................ 22052 ........................................................................ 22053 ........................................................................ 22054 ........................................................................ 22055 ........................................................................ 22056 ........................................................................ 22057 ........................................................................ 22058 ........................................................................ 22059 ........................................................................ 22060 ........................................................................ 22061 ........................................................................ 22062 ........................................................................ 22063 ........................................................................ 22064 ........................................................................ 22065 ........................................................................ 22066 ........................................................................ 22067 ........................................................................ 22068 ........................................................................ 22069 ........................................................................ 22070 ........................................................................ 22071 ........................................................................ 22072 ........................................................................ 22073 ........................................................................ 22074 ........................................................................ 22075 ........................................................................ 22076 ........................................................................ 22077 ........................................................................ 22078 ........................................................................ 22079 ........................................................................ 22080 ........................................................................ 22081 ........................................................................ 22082 ........................................................................ 22083 ........................................................................ 22084 ........................................................................ 22085 ........................................................................ 22086 ........................................................................ 22087 ........................................................................ 22088 ........................................................................ 22089 ........................................................................ 22090 ........................................................................ 22091 ........................................................................ 22092 ........................................................................ 22093 ........................................................................ 22094 ........................................................................ 22095 ........................................................................ 22096 ........................................................................ 22097 ........................................................................ 22098 ........................................................................ 22099 ........................................................................ 22100 ........................................................................ 22101 ........................................................................ 22102 ........................................................................ 22103 ........................................................................ 22104 ........................................................................ 22105 ........................................................................ 22106 ........................................................................ 22107 ........................................................................ 22108 ........................................................................ 22109 ........................................................................ 22110 ........................................................................ 22111 ........................................................................ 22112 ........................................................................ 22113 ........................................................................ 22114 ........................................................................ 22115 ........................................................................ 22116 ........................................................................ 22117 ........................................................................ 22118 ........................................................................ 22119 ........................................................................ 22120 ........................................................................ 22121 ........................................................................ 22122 ........................................................................ 22123 ........................................................................ 22124 ........................................................................ 22125 ........................................................................ 22126 ........................................................................ 22127 ........................................................................ 22128 ........................................................................ 22129 ........................................................................ 22130 ........................................................................ 22131 ........................................................................ 22132 ........................................................................ 22133 ........................................................................ 22134 ........................................................................ 22135 ........................................................................ 22136 ........................................................................ 22137 ........................................................................ 22138 ........................................................................ 22139 ........................................................................ 22140 ........................................................................ 22141 ........................................................................ 22142 ........................................................................ 22143 ........................................................................ 22144 ........................................................................ 22145 ........................................................................ 22146 ........................................................................ 22147 ........................................................................ 22148 ........................................................................ 22149 ........................................................................ 22150 ........................................................................ 22151 ........................................................................ 22152 ........................................................................ 22153 ........................................................................ 22154 ........................................................................ 22155 ........................................................................ 22156 ........................................................................ 22157 ........................................................................ 22158 ........................................................................ 22159 ........................................................................ 22160 ........................................................................ 22161 ........................................................................ 22162 ........................................................................ 22163 ........................................................................ 22164 ........................................................................ 22165 ........................................................................ 22166 ........................................................................ 22167 ........................................................................ 22168 ........................................................................ 22169 ........................................................................ 22170 ........................................................................ 22171 ........................................................................ 22172 ........................................................................ 22173 ........................................................................ 22174 ........................................................................ 22175 ........................................................................ 22176 ........................................................................ 22177 ........................................................................ 22178 ........................................................................ 22179 ........................................................................ 22180 ........................................................................ 22181 ........................................................................ 22182 ........................................................................ 22183 ........................................................................ 22184 ........................................................................ 22185 ........................................................................ 22186 ........................................................................ 22187 ........................................................................ 22188 ........................................................................ 22189 ........................................................................ 22190 ........................................................................ 22191 ........................................................................ 22192 ........................................................................ 22193 ........................................................................ 22194 ........................................................................ 22195 ........................................................................ 22196 ........................................................................ 22197 ........................................................................ 22198 ........................................................................ 22199 ........................................................................ 22200 ........................................................................ 22201 ........................................................................ 22202 ........................................................................ 22203 ........................................................................ 22204 ........................................................................ 22205 ........................................................................ 22206 ........................................................................ 22207 ........................................................................ 22208 ........................................................................ 22209 ........................................................................ 22210 ........................................................................ 22211 ........................................................................ 22212 ........................................................................ 22213 ........................................................................ 22214 ........................................................................ 22215 ........................................................................ 22216 ........................................................................ 22217 ........................................................................ 22218 ........................................................................ 22219 ........................................................................ 22220 ........................................................................ 22221 ........................................................................ 22222 ........................................................................ 22223 ........................................................................ 22224 ........................................................................ 22225 ........................................................................ 22226 ........................................................................ 22227 ........................................................................ 22228 ........................................................................ 22229 ........................................................................ 22230 ........................................................................ 22231 ........................................................................ 22232 ........................................................................ 22233 ........................................................................ 22234 ........................................................................ 22235 ........................................................................ 22236 ........................................................................ 22237 ........................................................................ 22238 ........................................................................ 22239 ........................................................................ 22240 ........................................................................ 22241 ........................................................................ 22242 ........................................................................ 22243 ........................................................................ 22244 ........................................................................ 22245 ........................................................................ 22246 ........................................................................ 22247 ........................................................................ 22248 ........................................................................ 22249 ........................................................................ 22250 ........................................................................ 22251 ........................................................................ 22252 ........................................................................ 22253 ........................................................................ 22254 ........................................................................ 22255 ........................................................................ 22256 ........................................................................ 22257 ........................................................................ 22258 ........................................................................ 22259 ........................................................................ 22260 ........................................................................ 22261 ........................................................................ 22262 ........................................................................ 22263 ........................................................................ 22264 ........................................................................ 22265 ........................................................................ 22266 ........................................................................ 22267 ........................................................................ 22268 ........................................................................ 22269 ........................................................................ 22270 ........................................................................ 22271 ........................................................................ 22272 ........................................................................ 22273 ........................................................................ 22274 ........................................................................ 22275 ........................................................................ 22276 ........................................................................ 22277 ........................................................................ 22278 ........................................................................ 22279 ........................................................................ 22280 ........................................................................ 22281 ........................................................................ 22282 ........................................................................ 22283 ........................................................................ 22284 ........................................................................ 22285 ........................................................................ 22286 ........................................................................ 22287 ........................................................................ 22288 ........................................................................ 22289 ........................................................................ 22290 ........................................................................ 22291 ........................................................................ 22292 ........................................................................ 22293 ........................................................................ 22294 ........................................................................ 22295 ........................................................................ 22296 ........................................................................ 22297 ........................................................................ 22298 ........................................................................ 22299 ........................................................................ 22300 ........................................................................ 22301 ........................................................................ 22302 ........................................................................ 22303 ........................................................................ 22304 ........................................................................ 22305 ........................................................................ 22306 ........................................................................ 22307 ........................................................................ 22308 ........................................................................ 22309 ........................................................................ 22310 ........................................................................ 22311 ........................................................................ 22312 ........................................................................ 22313 ........................................................................ 22314 ........................................................................ 22315 ........................................................................ 22316 ........................................................................ 22317 ........................................................................ 22318 ........................................................................ 22319 ........................................................................ 22320 ........................................................................ 22321 ........................................................................ 22322 ........................................................................ 22323 ........................................................................ 22324 ........................................................................ 22325 ........................................................................ 22326 ........................................................................ 22327 ........................................................................ 22328 ........................................................................ 22329 ........................................................................ 22330 ........................................................................ 22331 ........................................................................ 22332 ........................................................................ 22333 ........................................................................ 22334 ........................................................................ 22335 ........................................................................ 22336 ........................................................................ 22337 ........................................................................ 22338 ........................................................................ 22339 ........................................................................ 22340 ........................................................................ 22341 ........................................................................ 22342 ........................................................................ 22343 ........................................................................ 22344 ........................................................................ 22345 ........................................................................ 22346 ........................................................................ 22347 ........................................................................ 22348 ........................................................................ 22349 ........................................................................ 22350 ........................................................................ 22351 ........................................................................ 22352 ........................................................................ 22353 ........................................................................ 22354 ........................................................................ 22355 ........................................................................ 22356 ........................................................................ 22357 ........................................................................ 22358 ........................................................................ 22359 ........................................................................ 22360 ........................................................................ 22361 ........................................................................ 22362 ........................................................................ 22363 ........................................................................ 22364 ........................................................................ 22365 ........................................................................ 22366 ........................................................................ 22367 ........................................................................ 22368 ........................................................................ 22369 ........................................................................ 22370 ........................................................................ 22371 ........................................................................ 22372 ........................................................................ 22373 ........................................................................ 22374 ........................................................................ 22375 ........................................................................ 22376 ........................................................................ 22377 ........................................................................ 22378 ........................................................................ 22379 ........................................................................ 22380 ........................................................................ 22381 ........................................................................ 22382 ........................................................................ 22383 ........................................................................ 22384 ........................................................................ 22385 ........................................................................ 22386 ........................................................................ 22387 ........................................................................ 22388 ........................................................................ 22389 ........................................................................ 22390 ........................................................................ 22391 ........................................................................ 22392 ........................................................................ 22393 ........................................................................ 22394 ........................................................................ 22395 ........................................................................ 22396 ........................................................................ 22397 ........................................................................ 22398 ........................................................................ 22399 ........................................................................ 22400 ........................................................................ 22401 ........................................................................ 22402 ........................................................................ 22403 ........................................................................ 22404 ........................................................................ 22405 ........................................................................ 22406 ........................................................................ 22407 ........................................................................ 22408 ........................................................................ 22409 ........................................................................ 22410 ........................................................................ 22411 ........................................................................ 22412 ........................................................................ 22413 ........................................................................ 22414 ........................................................................ 22415 ........................................................................ 22416 ........................................................................ 22417 ........................................................................ 22418 ........................................................................ 22419 ........................................................................ 22420 ........................................................................ 22421 ........................................................................ 22422 ........................................................................ 22423 ........................................................................ 22424 ........................................................................ 22425 ........................................................................ 22426 ........................................................................ 22427 ........................................................................ 22428 ........................................................................ 22429 ........................................................................ 22430 ........................................................................ 22431 ........................................................................ 22432 ........................................................................ 22433 ........................................................................ 22434 ........................................................................ 22435 ........................................................................ 22436 ........................................................................ 22437 ........................................................................ 22438 ........................................................................ 22439 ........................................................................ 22440 ........................................................................ 22441 ........................................................................ 22442 ........................................................................ 22443 ........................................................................ 22444 ........................................................................ 22445 ........................................................................ 22446 ........................................................................ 22447 ........................................................................ 22448 ........................................................................ 22449 ........................................................................ 22450 ........................................................................ 22451 ........................................................................ 22452 ........................................................................ 22453 ........................................................................ 22454 ........................................................................ 22455 ........................................................................ 22456 ........................................................................ 22457 ........................................................................ 22458 ........................................................................ 22459 ........................................................................ 22460 ........................................................................ 22461 ........................................................................ 22462 ........................................................................ 22463 ........................................................................ 22464 ........................................................................ 22465 ........................................................................ 22466 ........................................................................ 22467 ........................................................................ 22468 ........................................................................ 22469 ........................................................................ 22470 ........................................................................ 22471 ........................................................................ 22472 ........................................................................ 22473 ........................................................................ 22474 ........................................................................ 22475 ........................................................................ 22476 ........................................................................ 22477 ........................................................................ 22478 ........................................................................ 22479 ........................................................................ 22480 ........................................................................ 22481 ........................................................................ 22482 ........................................................................ 22483 ........................................................................ 22484 ........................................................................ 22485 ........................................................................ 22486 ........................................................................ 22487 ........................................................................ 22488 ........................................................................ 22489 ........................................................................ 22490 ........................................................................ 22491 ........................................................................ 22492 ........................................................................ 22493 ........................................................................ 22494 ........................................................................ 22495 ........................................................................ 22496 ........................................................................ 22497 ........................................................................ 22498 ........................................................................ 22499 ........................................................................ 22500 ........................................................................ 22501 ........................................................................ 22502 ........................................................................ 22503 ........................................................................ 22504 ........................................................................ 22505 ........................................................................ 22506 ........................................................................ 22507 ........................................................................ 22508 ........................................................................ 22509 ........................................................................ 22510 ........................................................................ 22511 ........................................................................ 22512 ........................................................................ 22513 ........................................................................ 22514 ........................................................................ 22515 ........................................................................ 22516 ........................................................................ 22517 ........................................................................ 22518 ........................................................................ 22519 ........................................................................ 22520 ........................................................................ 22521 ........................................................................ 22522 ........................................................................ 22523 ........................................................................ 22524 ........................................................................ 22525 ........................................................................ 22526 ........................................................................ 22527 ........................................................................ 22528 ........................................................................ 22529 ........................................................................ 22530 ........................................................................ 22531 ........................................................................ 22532 ........................................................................ 22533 ........................................................................ 22534 ........................................................................ 22535 ........................................................................ 22536 ........................................................................ 22537 ........................................................................ 22538 ........................................................................ 22539 ........................................................................ 22540 ........................................................................ 22541 ........................................................................ 22542 ........................................................................ 22543 ........................................................................ 22544 ........................................................................ 22545 ........................................................................ 22546 ........................................................................ 22547 ........................................................................ 22548 ........................................................................ 22549 ........................................................................ 22550 ........................................................................ 22551 ........................................................................ 22552 ........................................................................ 22553 ........................................................................ 22554 ........................................................................ 22555 ........................................................................ 22556 ........................................................................ 22557 ........................................................................ 22558 ........................................................................ 22559 ........................................................................ 22560 ........................................................................ 22561 ........................................................................ 22562 ........................................................................ 22563 ........................................................................ 22564 ........................................................................ 22565 ........................................................................ 22566 ........................................................................ 22567 ........................................................................ 22568 ........................................................................ 22569 ........................................................................ 22570 ........................................................................ 22571 ........................................................................ 22572 ........................................................................ 22573 ........................................................................ 22574 ........................................................................ 22575 ........................................................................ 22576 ........................................................................ 22577 ........................................................................ 22578 ........................................................................ 22579 ........................................................................ 22580 ........................................................................ 22581 ........................................................................ 22582 ........................................................................ 22583 ........................................................................ 22584 ........................................................................ 22585 ........................................................................ 22586 ........................................................................ 22587 ........................................................................ 22588 ........................................................................ 22589 ........................................................................ 22590 ........................................................................ 22591 ........................................................................ 22592 ........................................................................ 22593 ........................................................................ 22594 ........................................................................ 22595 ........................................................................ 22596 ........................................................................ 22597 ........................................................................ 22598 ........................................................................ 22599 ........................................................................ 22600 ........................................................................ 22601 ........................................................................ 22602 ........................................................................ 22603 ........................................................................ 22604 ........................................................................ 22605 ........................................................................ 22606 ........................................................................ 22607 ........................................................................ 22608 ........................................................................ 22609 ........................................................................ 22610 ........................................................................ 22611 ........................................................................ 22612 ........................................................................ 22613 ........................................................................ 22614 ........................................................................ 22615 ........................................................................ 22616 ........................................................................ 22617 ........................................................................ 22618 ........................................................................ 22619 ........................................................................ 22620 ........................................................................ 22621 ........................................................................ 22622 ........................................................................ 22623 ........................................................................ 22624 ........................................................................ 22625 ........................................................................ 22626 ........................................................................ 22627 ........................................................................ 22628 ........................................................................ 22629 ........................................................................ 22630 ........................................................................ 22631 ........................................................................ 22632 ........................................................................ 22633 ........................................................................ 22634 ........................................................................ 22635 ........................................................................ 22636 ........................................................................ 22637 ........................................................................ 22638 ........................................................................ 22639 ........................................................................ 22640 ........................................................................ 22641 ........................................................................ 22642 ........................................................................ 22643 ........................................................................ 22644 ........................................................................ 22645 ........................................................................ 22646 ........................................................................ 22647 ........................................................................ 22648 ........................................................................ 22649 ........................................................................ 22650 ........................................................................ 22651 ........................................................................ 22652 ........................................................................ 22653 ........................................................................ 22654 ........................................................................ 22655 ........................................................................ 22656 ........................................................................ 22657 ........................................................................ 22658 ........................................................................ 22659 ........................................................................ 22660 ........................................................................ 22661 ........................................................................ 22662 ........................................................................ 22663 ........................................................................ 22664 ........................................................................ 22665 ........................................................................ 22666 ........................................................................ 22667 ........................................................................ 22668 ........................................................................ 22669 ........................................................................ 22670 ........................................................................ 22671 ........................................................................ 22672 ........................................................................ 22673 ........................................................................ 22674 ........................................................................ 22675 ........................................................................ 22676 ........................................................................ 22677 ........................................................................ 22678 ........................................................................ 22679 ........................................................................ 22680 ........................................................................ 22681 ........................................................................ 22682 ........................................................................ 22683 ........................................................................ 22684 ........................................................................ 22685 ........................................................................ 22686 ........................................................................ 22687 ........................................................................ 22688 ........................................................................ 22689 ........................................................................ 22690 ........................................................................ 22691 ........................................................................ 22692 ........................................................................ 22693 ........................................................................ 22694 ........................................................................ 22695 ........................................................................ 22696 ........................................................................ 22697 ........................................................................ 22698 ........................................................................ 22699 ........................................................................ 22700 ........................................................................ 22701 ........................................................................ 22702 ........................................................................ 22703 ........................................................................ 22704 ........................................................................ 22705 ........................................................................ 22706 ........................................................................ 22707 ........................................................................ 22708 ........................................................................ 22709 ........................................................................ 22710 ........................................................................ 22711 ........................................................................ 22712 ........................................................................ 22713 ........................................................................ 22714 ........................................................................ 22715 ........................................................................ 22716 ........................................................................ 22717 ........................................................................ 22718 ........................................................................ 22719 ........................................................................ 22720 ........................................................................ 22721 ........................................................................ 22722 ........................................................................ 22723 ........................................................................ 22724 ........................................................................ 22725 ........................................................................ 22726 ........................................................................ 22727 ........................................................................ 22728 ........................................................................ 22729 ........................................................................ 22730 ........................................................................ 22731 ........................................................................ 22732 ........................................................................ 22733 ........................................................................ 22734 ........................................................................ 22735 ........................................................................ 22736 ........................................................................ 22737 ........................................................................ 22738 ........................................................................ 22739 ........................................................................ 22740 ........................................................................ 22741 ........................................................................ 22742 ........................................................................ 22743 ........................................................................ 22744 ........................................................................ 22745 ........................................................................ 22746 ........................................................................ 22747 ........................................................................ 22748 ........................................................................ 22749 ........................................................................ 22750 ........................................................................ 22751 ........................................................................ 22752 ........................................................................ 22753 ........................................................................ 22754 ........................................................................ 22755 ........................................................................ 22756 ........................................................................ 22757 ........................................................................ 22758 ........................................................................ 22759 ........................................................................ 22760 ........................................................................ 22761 ........................................................................ 22762 ........................................................................ 22763 ........................................................................ 22764 ........................................................................ 22765 ........................................................................ 22766 ........................................................................ 22767 ........................................................................ 22768 ........................................................................ 22769 ........................................................................ 22770 ........................................................................ 22771 ........................................................................ 22772 ........................................................................ 22773 ........................................................................ 22774 ........................................................................ 22775 ........................................................................ 22776 ........................................................................ 22777 ........................................................................ 22778 ........................................................................ 22779 ........................................................................ 22780 ........................................................................ 22781 ........................................................................ 22782 ........................................................................ 22783 ........................................................................ 22784 ........................................................................ 22785 ........................................................................ 22786 ........................................................................ 22787 ........................................................................ 22788 ........................................................................ 22789 ........................................................................ 22790 ........................................................................ 22791 ........................................................................ 22792 ........................................................................ 22793 ........................................................................ 22794 ........................................................................ 22795 ........................................................................ 22796 ........................................................................ 22797 ........................................................................ 22798 ........................................................................ 22799 ........................................................................ 22800 ........................................................................ 22801 ........................................................................ 22802 ........................................................................ 22803 ........................................................................ 22804 ........................................................................ 22805 ........................................................................ 22806 ........................................................................ 22807 ........................................................................ 22808 ........................................................................ 22809 ........................................................................ 22810 ........................................................................ 22811 ........................................................................ 22812 ........................................................................ 22813 ........................................................................ 22814 ........................................................................ 22815 ........................................................................ 22816 ........................................................................ 22817 ........................................................................ 22818 ........................................................................ 22819 ........................................................................ 22820 ........................................................................ 22821 ........................................................................ 22822 ........................................................................ 22823 ........................................................................ 22824 ........................................................................ 22825 ........................................................................ 22826 ........................................................................ 22827 ........................................................................ 22828 ........................................................................ 22829 ........................................................................ 22830 ........................................................................ 22831 ........................................................................ 22832 ........................................................................ 22833 ........................................................................ 22834 ........................................................................ 22835 ........................................................................ 22836 ........................................................................ 22837 ........................................................................ 22838 ........................................................................ 22839 ........................................................................ 22840 ........................................................................ 22841 ........................................................................ 22842 ........................................................................ 22843 ........................................................................ 22844 ........................................................................ 22845 ........................................................................ 22846 ........................................................................ 22847 ........................................................................ 22848 ........................................................................ 22849 ........................................................................ 22850 ........................................................................ 22851 ........................................................................ 22852 ........................................................................ 22853 ........................................................................ 22854 ........................................................................ 22855 ........................................................................ 22856 ........................................................................ 22857 ........................................................................ 22858 ........................................................................ 22859 ........................................................................ 22860 ........................................................................ 22861 ........................................................................ 22862 ........................................................................ 22863 ........................................................................ 22864 ........................................................................ 22865 ........................................................................ 22866 ........................................................................ 22867 ........................................................................ 22868 ........................................................................ 22869 ........................................................................ 22870 ........................................................................ 22871 ........................................................................ 22872 ........................................................................ 22873 ........................................................................ 22874 ........................................................................ 22875 ........................................................................ 22876 ........................................................................ 22877 ........................................................................ 22878 ........................................................................ 22879 ........................................................................ 22880 ........................................................................ 22881 ........................................................................ 22882 ........................................................................ 22883 ........................................................................ 22884 ........................................................................ 22885 ........................................................................ 22886 ........................................................................ 22887 ........................................................................ 22888 ........................................................................ 22889 ........................................................................ 22890 ........................................................................ 22891 ........................................................................ 22892 ........................................................................ 22893 ........................................................................ 22894 ........................................................................ 22895 ........................................................................ 22896 ........................................................................ 22897 ........................................................................ 22898 ........................................................................ 22899 ........................................................................ 22900 ........................................................................ 22901 ........................................................................ 22902 ........................................................................ 22903 ........................................................................ 22904 ........................................................................ 22905 ........................................................................ 22906 ........................................................................ 22907 ........................................................................ 22908 ........................................................................ 22909 ........................................................................ 22910 ........................................................................ 22911 ........................................................................ 22912 ........................................................................ 22913 ........................................................................ 22914 ........................................................................ 22915 ........................................................................ 22916 ........................................................................ 22917 ........................................................................ 22918 ........................................................................ 22919 ........................................................................ 22920 ........................................................................ 22921 ........................................................................ 22922 ........................................................................ 22923 ........................................................................ 22924 ........................................................................ 22925 ........................................................................ 22926 ........................................................................ 22927 ........................................................................ 22928 ........................................................................ 22929 ........................................................................ 22930 ........................................................................ 22931 ........................................................................ 22932 ........................................................................ 22933 ........................................................................ 22934 ........................................................................ 22935 ........................................................................ 22936 ........................................................................ 22937 ........................................................................ 22938 ........................................................................ 22939 ........................................................................ 22940 ........................................................................ 22941 ........................................................................ 22942 ........................................................................ 22943 ........................................................................ 22944 ........................................................................ 22945 ........................................................................ 22946 ........................................................................ 22947 ........................................................................ 22948 ........................................................................ 22949 ........................................................................ 22950 ........................................................................ 22951 ........................................................................ 22952 ........................................................................ 22953 ........................................................................ 22954 ........................................................................ 22955 ........................................................................ 22956 ........................................................................ 22957 ........................................................................ 22958 ........................................................................ 22959 ........................................................................ 22960 ........................................................................ 22961 ........................................................................ 22962 ........................................................................ 22963 ........................................................................ 22964 ........................................................................ 22965 ........................................................................ 22966 ........................................................................ 22967 ........................................................................ 22968 ........................................................................ 22969 ........................................................................ 22970 ........................................................................ 22971 ........................................................................ 22972 ........................................................................ 22973 ........................................................................ 22974 ........................................................................ 22975 ........................................................................ 22976 ........................................................................ 22977 ........................................................................ 22978 ........................................................................ 22979 ........................................................................ 22980 ........................................................................ 22981 ........................................................................ 22982 ........................................................................ 22983 ........................................................................ 22984 ........................................................................ 22985 ........................................................................ 22986 ........................................................................ 22987 ........................................................................ 22988 ........................................................................ 22989 ........................................................................ 22990 ........................................................................ 22991 ........................................................................ 22992 ........................................................................ 22993 ........................................................................ 22994 ........................................................................ 22995 ........................................................................ 22996 ........................................................................ 22997 ........................................................................ 22998 ........................................................................ 22999 ........................................................................ 23000 ........................................................................ 23001 ........................................................................ 23002 ........................................................................ 23003 ........................................................................ 23004 ........................................................................ 23005 ........................................................................ 23006 ........................................................................ 23007 ........................................................................ 23008 ........................................................................ 23009 ........................................................................ 23010 ........................................................................ 23011 ........................................................................ 23012 ........................................................................ 23013 ........................................................................ 23014 ........................................................................ 23015 ........................................................................ 23016 ........................................................................ 23017 ........................................................................ 23018 ........................................................................ 23019 ........................................................................ 23020 ........................................................................ 23021 ........................................................................ 23022 ........................................................................ 23023 ........................................................................ 23024 ........................................................................ 23025 ........................................................................ 23026 ........................................................................ 23027 ........................................................................ 23028 ........................................................................ 23029 ........................................................................ 23030 ........................................................................ 23031 ........................................................................ 23032 ........................................................................ 23033 ........................................................................ 23034 ........................................................................ 23035 ........................................................................ 23036 ........................................................................ 23037 ........................................................................ 23038 ........................................................................ 23039 ........................................................................ 23040 ........................................................................ 23041 ........................................................................ 23042 ........................................................................ 23043 ........................................................................ 23044 ........................................................................ 23045 ........................................................................ 23046 ........................................................................ 23047 ........................................................................ 23048 ........................................................................ 23049 ........................................................................ 23050 ........................................................................ 23051 ........................................................................ 23052 ........................................................................ 23053 ........................................................................ 23054 ........................................................................ 23055 ........................................................................ 23056 ........................................................................ 23057 ........................................................................ 23058 ........................................................................ 23059 ........................................................................ 23060 ........................................................................ 23061 ........................................................................ 23062 ........................................................................ 23063 ........................................................................ 23064 ........................................................................ 23065 ........................................................................ 23066 ........................................................................ 23067 ........................................................................ 23068 ........................................................................ 23069 ........................................................................ 23070 ........................................................................ 23071 ........................................................................ 23072 ........................................................................ 23073 ........................................................................ 23074 ........................................................................ 23075 ........................................................................ 23076 ........................................................................ 23077 ........................................................................ 23078 ........................................................................ 23079 ........................................................................ 23080 ........................................................................ 23081 ........................................................................ 23082 ........................................................................ 23083 ........................................................................ 23084 ........................................................................ 23085 ........................................................................ 23086 ........................................................................ 23087 ........................................................................ 23088 ........................................................................ 23089 ........................................................................ 23090 ........................................................................ 23091 ........................................................................ 23092 ........................................................................ 23093 ........................................................................ 23094 ........................................................................ 23095 ........................................................................ 23096 ........................................................................ 23097 ........................................................................ 23098 ........................................................................ 23099 ........................................................................ 23100 ........................................................................ 23101 ........................................................................ 23102 ........................................................................ 23103 ........................................................................ 23104 ........................................................................ 23105 ........................................................................ 23106 ........................................................................ 23107 ........................................................................ 23108 ........................................................................ 23109 ........................................................................ 23110 ........................................................................ 23111 ........................................................................ 23112 ........................................................................ 23113 ........................................................................ 23114 ........................................................................ 23115 ........................................................................ 23116 ........................................................................ 23117 ........................................................................ 23118 ........................................................................ 23119 ........................................................................ 23120 ........................................................................ 23121 ........................................................................ 23122 ........................................................................ 23123 ........................................................................ 23124 ........................................................................ 23125 ........................................................................ 23126 ........................................................................ 23127 ........................................................................ 23128 ........................................................................ 23129 ........................................................................ 23130 ........................................................................ 23131 ........................................................................ 23132 ........................................................................ 23133 ........................................................................ 23134 ........................................................................ 23135 ........................................................................ 23136 ........................................................................ 23137 ........................................................................ 23138 ........................................................................ 23139 ........................................................................ 23140 ........................................................................ 23141 ........................................................................ 23142 ........................................................................ 23143 ........................................................................ 23144 ........................................................................ 23145 ........................................................................ 23146 ........................................................................ 23147 ........................................................................ 23148 ........................................................................ 23149 ........................................................................ 23150 ........................................................................ 23151 ........................................................................ 23152 ........................................................................ 23153 ........................................................................ 23154 ........................................................................ 23155 ........................................................................ 23156 ........................................................................ 23157 ........................................................................ 23158 ........................................................................ 23159 ........................................................................ 23160 ........................................................................ 23161 ........................................................................ 23162 ........................................................................ 23163 ........................................................................ 23164 ........................................................................ 23165 ........................................................................ 23166 ........................................................................ 23167 ........................................................................ 23168 ........................................................................ 23169 ........................................................................ 23170 ........................................................................ 23171 ........................................................................ 23172 ........................................................................ 23173 ........................................................................ 23174 ........................................................................ 23175 ........................................................................ 23176 ........................................................................ 23177 ........................................................................ 23178 ........................................................................ 23179 ........................................................................ 23180 ........................................................................ 23181 ........................................................................ 23182 ........................................................................ 23183 ........................................................................ 23184 ........................................................................ 23185 ........................................................................ 23186 ........................................................................ 23187 ........................................................................ 23188 ........................................................................ 23189 ........................................................................ 23190 ........................................................................ 23191 ........................................................................ 23192 ........................................................................ 23193 ........................................................................ 23194 ........................................................................ 23195 ........................................................................ 23196 ........................................................................ 23197 ........................................................................ 23198 ........................................................................ 23199 ........................................................................ 23200 ........................................................................ 23201 ........................................................................ 23202 ........................................................................ 23203 ........................................................................ 23204 ........................................................................ 23205 ........................................................................ 23206 ........................................................................ 23207 ........................................................................ 23208 ........................................................................ 23209 ........................................................................ 23210 ........................................................................ 23211 ........................................................................ 23212 ........................................................................ 23213 ........................................................................ 23214 ........................................................................ 23215 ........................................................................ 23216 ........................................................................ 23217 ........................................................................ 23218 ........................................................................ 23219 ........................................................................ 23220 ........................................................................ 23221 ........................................................................ 23222 ........................................................................ 23223 ........................................................................ 23224 ........................................................................ 23225 ........................................................................ 23226 ........................................................................ 23227 ........................................................................ 23228 ........................................................................ 23229 ........................................................................ 23230 ........................................................................ 23231 ........................................................................ 23232 ........................................................................ 23233 ........................................................................ 23234 ........................................................................ 23235 ........................................................................ 23236 ........................................................................ 23237 ........................................................................ 23238 ........................................................................ 23239 ........................................................................ 23240 ........................................................................ 23241 ........................................................................ 23242 ........................................................................ 23243 ........................................................................ 23244 ........................................................................ 23245 ........................................................................ 23246 ........................................................................ 23247 ........................................................................ 23248 ........................................................................ 23249 ........................................................................ 23250 ........................................................................ 23251 ........................................................................ 23252 ........................................................................ 23253 ........................................................................ 23254 ........................................................................ 23255 ........................................................................ 23256 ........................................................................ 23257 ........................................................................ 23258 ........................................................................ 23259 ........................................................................ 23260 ........................................................................ 23261 ........................................................................ 23262 ........................................................................ 23263 ........................................................................ 23264 ........................................................................ 23265 ........................................................................ 23266 ........................................................................ 23267 ........................................................................ 23268 ........................................................................ 23269 ........................................................................ 23270 ........................................................................ 23271 ........................................................................ 23272 ........................................................................ 23273 ........................................................................ 23274 ........................................................................ 23275 ........................................................................ 23276 ........................................................................ 23277 ........................................................................ 23278 ........................................................................ 23279 ........................................................................ 23280 ........................................................................ 23281 ........................................................................ 23282 ........................................................................ 23283 ........................................................................ 23284 ........................................................................ 23285 ........................................................................ 23286 ........................................................................ 23287 ........................................................................ 23288 ........................................................................ 23289 ........................................................................ 23290 ........................................................................ 23291 ........................................................................ 23292 ........................................................................ 23293 ........................................................................ 23294 ........................................................................ 23295 ........................................................................ 23296 ........................................................................ 23297 ........................................................................ 23298 ........................................................................ 23299 ........................................................................ 23300 ........................................................................ 23301 ........................................................................ 23302 ........................................................................ 23303 ........................................................................ 23304 ........................................................................ 23305 ........................................................................ 23306 ........................................................................ 23307 ........................................................................ 23308 ........................................................................ 23309 ........................................................................ 23310 ........................................................................ 23311 ........................................................................ 23312 ........................................................................ 23313 ........................................................................ 23314 ........................................................................ 23315 ........................................................................ 23316 ........................................................................ 23317 ........................................................................ 23318 ........................................................................ 23319 ........................................................................ 23320 ........................................................................ 23321 ........................................................................ 23322 ........................................................................ 23323 ........................................................................ 23324 ........................................................................ 23325 ........................................................................ 23326 ........................................................................ 23327 ........................................................................ 23328 ........................................................................ 23329 ........................................................................ 23330 ........................................................................ 23331 ........................................................................ 23332 ........................................................................ 23333 ........................................................................ 23334 ........................................................................ 23335 ........................................................................ 23336 ........................................................................ 23337 ........................................................................ 23338 ........................................................................ 23339 ........................................................................ 23340 ........................................................................ 23341 ........................................................................ 23342 ........................................................................ 23343 ........................................................................ 23344 ........................................................................ 23345 ........................................................................ 23346 ........................................................................ 23347 ........................................................................ 23348 ........................................................................ 23349 ........................................................................ 23350 ........................................................................ 23351 ........................................................................ 23352 ........................................................................ 23353 ........................................................................ 23354 ........................................................................ 23355 ........................................................................ 23356 ........................................................................ 23357 ........................................................................ 23358 ........................................................................ 23359 ........................................................................ 23360 ........................................................................ 23361 ........................................................................ 23362 ........................................................................ 23363 ........................................................................ 23364 ........................................................................ 23365 ........................................................................ 23366 ........................................................................ 23367 ........................................................................ 23368 ........................................................................ 23369 ........................................................................ 23370 ........................................................................ 23371 ........................................................................ 23372 ........................................................................ 23373 ........................................................................ 23374 ........................................................................ 23375 ........................................................................ 23376 ........................................................................ 23377 ........................................................................ 23378 ........................................................................ 23379 ........................................................................ 23380 ........................................................................ 23381 ........................................................................ 23382 ........................................................................ 23383 ........................................................................ 23384 ........................................................................ 23385 ........................................................................ 23386 ........................................................................ 23387 ........................................................................ 23388 ........................................................................ 23389 ........................................................................ 23390 ........................................................................ 23391 ........................................................................ 23392 ........................................................................ 23393 ........................................................................ 23394 ........................................................................ 23395 ........................................................................ 23396 ........................................................................ 23397 ........................................................................ 23398 ........................................................................ 23399 ........................................................................ 23400 ........................................................................ 23401 ........................................................................ 23402 ........................................................................ 23403 ........................................................................ 23404 ........................................................................ 23405 ........................................................................ 23406 ........................................................................ 23407 ........................................................................ 23408 ........................................................................ 23409 ........................................................................ 23410 ........................................................................ 23411 ........................................................................ 23412 ........................................................................ 23413 ........................................................................ 23414 ........................................................................ 23415 ........................................................................ 23416 ........................................................................ 23417 ........................................................................ 23418 ........................................................................ 23419 ........................................................................ 23420 ........................................................................ 23421 ........................................................................ 23422 ........................................................................ 23423 ........................................................................ 23424 ........................................................................ 23425 ........................................................................ 23426 ........................................................................ 23427 ........................................................................ 23428 ........................................................................ 23429 ........................................................................ 23430 ........................................................................ 23431 ........................................................................ 23432 ........................................................................ 23433 ........................................................................ 23434 ........................................................................ 23435 ........................................................................ 23436 ........................................................................ 23437 ........................................................................ 23438 ........................................................................ 23439 ........................................................................ 23440 ........................................................................ 23441 ........................................................................ 23442 ........................................................................ 23443 ........................................................................ 23444 ........................................................................ 23445 ........................................................................ 23446 ........................................................................ 23447 ........................................................................ 23448 ........................................................................ 23449 ........................................................................ 23450 ........................................................................ 23451 ........................................................................ 23452 ........................................................................ 23453 ........................................................................ 23454 ........................................................................ 23455 ........................................................................ 23456 ........................................................................ 23457 ........................................................................ 23458 ........................................................................ 23459 ........................................................................ 23460 ........................................................................ 23461 ........................................................................ 23462 ........................................................................ 23463 ........................................................................ 23464 ........................................................................ 23465 ........................................................................ 23466 ........................................................................ 23467 ........................................................................ 23468 ........................................................................ 23469 ........................................................................ 23470 ........................................................................ 23471 ........................................................................ 23472 ........................................................................ 23473 ........................................................................ 23474 ........................................................................ 23475 ........................................................................ 23476 ........................................................................ 23477 ........................................................................ 23478 ........................................................................ 23479 ........................................................................ 23480 ........................................................................ 23481 ........................................................................ 23482 ........................................................................ 23483 ........................................................................ 23484 ........................................................................ 23485 ........................................................................ 23486 ........................................................................ 23487 ........................................................................ 23488 ........................................................................ 23489 ........................................................................ 23490 ........................................................................ 23491 ........................................................................ 23492 ........................................................................ 23493 ........................................................................ 23494 ........................................................................ 23495 ........................................................................ 23496 ........................................................................ 23497 ........................................................................ 23498 ........................................................................ 23499 ........................................................................ 23500 ........................................................................ 23501 ........................................................................ 23502 ........................................................................ 23503 ........................................................................ 23504 ........................................................................ 23505 ........................................................................ 23506 ........................................................................ 23507 ........................................................................ 23508 ........................................................................ 23509 ........................................................................ 23510 ........................................................................ 23511 ........................................................................ 23512 ........................................................................ 23513 ........................................................................ 23514 ........................................................................ 23515 ........................................................................ 23516 ........................................................................ 23517 ........................................................................ 23518 ........................................................................ 23519 ........................................................................ 23520 ........................................................................ 23521 ........................................................................ 23522 ........................................................................ 23523 ........................................................................ 23524 ........................................................................ 23525 ........................................................................ 23526 ........................................................................ 23527 ........................................................................ 23528 ........................................................................ 23529 ........................................................................ 23530 ........................................................................ 23531 ........................................................................ 23532 ........................................................................ 23533 ........................................................................ 23534 ........................................................................ 23535 ........................................................................ 23536 ........................................................................ 23537 ........................................................................ 23538 ........................................................................ 23539 ........................................................................ 23540 ........................................................................ 23541 ........................................................................ 23542 ........................................................................ 23543 ........................................................................ 23544 ........................................................................ 23545 ........................................................................ 23546 ........................................................................ 23547 ........................................................................ 23548 ........................................................................ 23549 ........................................................................ 23550 ........................................................................ 23551 ........................................................................ 23552 ........................................................................ 23553 ........................................................................ 23554 ........................................................................ 23555 ........................................................................ 23556 ........................................................................ 23557 ........................................................................ 23558 ........................................................................ 23559 ........................................................................ 23560 ........................................................................ 23561 ........................................................................ 23562 ........................................................................ 23563 ........................................................................ 23564 ........................................................................ 23565 ........................................................................ 23566 ........................................................................ 23567 ........................................................................ 23568 ........................................................................ 23569 ........................................................................ 23570 ........................................................................ 23571 ........................................................................ 23572 ........................................................................ 23573 ........................................................................ 23574 ........................................................................ 23575 ........................................................................ 23576 ........................................................................ 23577 ........................................................................ 23578 ........................................................................ 23579 ........................................................................ 23580 ........................................................................ 23581 ........................................................................ 23582 ........................................................................ 23583 ........................................................................ 23584 ........................................................................ 23585 ........................................................................ 23586 ........................................................................ 23587 ........................................................................ 23588 ........................................................................ 23589 ........................................................................ 23590 ........................................................................ 23591 ........................................................................ 23592 ........................................................................ 23593 ........................................................................ 23594 ........................................................................ 23595 ........................................................................ 23596 ........................................................................ 23597 ........................................................................ 23598 ........................................................................ 23599 ........................................................................ 23600 ........................................................................ 23601 ........................................................................ 23602 ........................................................................ 23603 ........................................................................ 23604 ........................................................................ 23605 ........................................................................ 23606 ........................................................................ 23607 ........................................................................ 23608 ........................................................................ 23609 ........................................................................ 23610 ........................................................................ 23611 ........................................................................ 23612 ........................................................................ 23613 ........................................................................ 23614 ........................................................................ 23615 ........................................................................ 23616 ........................................................................ 23617 ........................................................................ 23618 ........................................................................ 23619 ........................................................................ 23620 ........................................................................ 23621 ........................................................................ 23622 ........................................................................ 23623 ........................................................................ 23624 ........................................................................ 23625 ........................................................................ 23626 ........................................................................ 23627 ........................................................................ 23628 ........................................................................ 23629 ........................................................................ 23630 ........................................................................ 23631 ........................................................................ 23632 ........................................................................ 23633 ........................................................................ 23634 ........................................................................ 23635 ........................................................................ 23636 ........................................................................ 23637 ........................................................................ 23638 ........................................................................ 23639 ........................................................................ 23640 ........................................................................ 23641 ........................................................................ 23642 ........................................................................ 23643 ........................................................................ 23644 ........................................................................ 23645 ........................................................................ 23646 ........................................................................ 23647 ........................................................................ 23648 ........................................................................ 23649 ........................................................................ 23650 ........................................................................ 23651 ........................................................................ 23652 ........................................................................ 23653 ........................................................................ 23654 ........................................................................ 23655 ........................................................................ 23656 ........................................................................ 23657 ........................................................................ 23658 ........................................................................ 23659 ........................................................................ 23660 ........................................................................ 23661 ........................................................................ 23662 ........................................................................ 23663 ........................................................................ 23664 ........................................................................ 23665 ........................................................................ 23666 ........................................................................ 23667 ........................................................................ 23668 ........................................................................ 23669 ........................................................................ 23670 ........................................................................ 23671 ........................................................................ 23672 ........................................................................ 23673 ........................................................................ 23674 ........................................................................ 23675 ........................................................................ 23676 ........................................................................ 23677 ........................................................................ 23678 ........................................................................ 23679 ........................................................................ 23680 ........................................................................ 23681 ........................................................................ 23682 ........................................................................ 23683 ........................................................................ 23684 ........................................................................ 23685 ........................................................................ 23686 ........................................................................ 23687 ........................................................................ 23688 ........................................................................ 23689 ........................................................................ 23690 ........................................................................ 23691 ........................................................................ 23692 ........................................................................ 23693 ........................................................................ 23694 ........................................................................ 23695 ........................................................................ 23696 ........................................................................ 23697 ........................................................................ 23698 ........................................................................ 23699 ........................................................................ 23700 ........................................................................ 23701 ........................................................................ 23702 ........................................................................ 23703 ........................................................................ 23704 ........................................................................ 23705 ........................................................................ 23706 ........................................................................ 23707 ........................................................................ 23708 ........................................................................ 23709 ........................................................................ 23710 ........................................................................ 23711 ........................................................................ 23712 ........................................................................ 23713 ........................................................................ 23714 ........................................................................ 23715 ........................................................................ 23716 ........................................................................ 23717 ........................................................................ 23718 ........................................................................ 23719 ........................................................................ 23720 ........................................................................ 23721 ........................................................................ 23722 ........................................................................ 23723 ........................................................................ 23724 ........................................................................ 23725 ........................................................................ 23726 ........................................................................ 23727 ........................................................................ 23728 ........................................................................ 23729 ........................................................................ 23730 ........................................................................ 23731 ........................................................................ 23732 ........................................................................ 23733 ........................................................................ 23734 ........................................................................ 23735 ........................................................................ 23736 ........................................................................ 23737 ........................................................................ 23738 ........................................................................ 23739 ........................................................................ 23740 ........................................................................ 23741 ........................................................................ 23742 ........................................................................ 23743 ........................................................................ 23744 ........................................................................ 23745 ........................................................................ 23746 ........................................................................ 23747 ........................................................................ 23748 ........................................................................ 23749 ........................................................................ 23750 ........................................................................ 23751 ........................................................................ 23752 ........................................................................ 23753 ........................................................................ 23754 ........................................................................ 23755 ........................................................................ 23756 ........................................................................ 23757 ........................................................................ 23758 ........................................................................ 23759 ........................................................................ 23760 ........................................................................ 23761 ........................................................................ 23762 ........................................................................ 23763 ........................................................................ 23764 ........................................................................ 23765 ........................................................................ 23766 ........................................................................ 23767 ........................................................................ 23768 ........................................................................ 23769 ........................................................................ 23770 ........................................................................ 23771 ........................................................................ 23772 ........................................................................ 23773 ........................................................................ 23774 ........................................................................ 23775 ........................................................................ 23776 ........................................................................ 23777 ........................................................................ 23778 ........................................................................ 23779 ........................................................................ 23780 ........................................................................ 23781 ........................................................................ 23782 ........................................................................ 23783 ........................................................................ 23784 ........................................................................ 23785 ........................................................................ 23786 ........................................................................ 23787 ........................................................................ 23788 ........................................................................ 23789 ........................................................................ 23790 ........................................................................ 23791 ........................................................................ 23792 ........................................................................ 23793 ........................................................................ 23794 ........................................................................ 23795 ........................................................................ 23796 ........................................................................ 23797 ........................................................................ 23798 ........................................................................ 23799 ........................................................................ 23800 ........................................................................ 23801 ........................................................................ 23802 ........................................................................ 23803 ........................................................................ 23804 ........................................................................ 23805 ........................................................................ 23806 ........................................................................ 23807 ........................................................................ 23808 ........................................................................ 23809 ........................................................................ 23810 ........................................................................ 23811 ........................................................................ 23812 ........................................................................ 23813 ........................................................................ 23814 ........................................................................ 23815 ........................................................................ 23816 ........................................................................ 23817 ........................................................................ 23818 ........................................................................ 23819 ........................................................................ 23820 ........................................................................ 23821 ........................................................................ 23822 ........................................................................ 23823 ........................................................................ 23824 ........................................................................ 23825 ........................................................................ 23826 ........................................................................ 23827 ........................................................................ 23828 ........................................................................ 23829 ........................................................................ 23830 ........................................................................ 23831 ........................................................................ 23832 ........................................................................ 23833 ........................................................................ 23834 ........................................................................ 23835 ........................................................................ 23836 ........................................................................ 23837 ........................................................................ 23838 ........................................................................ 23839 ........................................................................ 23840 ........................................................................ 23841 ........................................................................ 23842 ........................................................................ 23843 ........................................................................ 23844 ........................................................................ 23845 ........................................................................ 23846 ........................................................................ 23847 ........................................................................ 23848 ........................................................................ 23849 ........................................................................ 23850 ........................................................................ 23851 ........................................................................ 23852 ........................................................................ 23853 ........................................................................ 23854 ........................................................................ 23855 ........................................................................ 23856 ........................................................................ 23857 ........................................................................ 23858 ........................................................................ 23859 ........................................................................ 23860 ........................................................................ 23861 ........................................................................ 23862 ........................................................................ 23863 ........................................................................ 23864 ........................................................................ 23865 ........................................................................ 23866 ........................................................................ 23867 ........................................................................ 23868 ........................................................................ 23869 ........................................................................ 23870 ........................................................................ 23871 ........................................................................ 23872 ........................................................................ 23873 ........................................................................ 23874 ........................................................................ 23875 ........................................................................ 23876 ........................................................................ 23877 ........................................................................ 23878 ........................................................................ 23879 ........................................................................ 23880 ........................................................................ 23881 ........................................................................ 23882 ........................................................................ 23883 ........................................................................ 23884 ........................................................................ 23885 ........................................................................ 23886 ........................................................................ 23887 ........................................................................ 23888 ........................................................................ 23889 ........................................................................ 23890 ........................................................................ 23891 ........................................................................ 23892 ........................................................................ 23893 ........................................................................ 23894 ........................................................................ 23895 ........................................................................ 23896 ........................................................................ 23897 ........................................................................ 23898 ........................................................................ 23899 ........................................................................ 23900 ........................................................................ 23901 ........................................................................ 23902 ........................................................................ 23903 ........................................................................ 23904 ........................................................................ 23905 ........................................................................ 23906 ........................................................................ 23907 ........................................................................ 23908 ........................................................................ 23909 ........................................................................ 23910 ........................................................................ 23911 ........................................................................ 23912 ........................................................................ 23913 ........................................................................ 23914 ........................................................................ 23915 ........................................................................ 23916 ........................................................................ 23917 ........................................................................ 23918 ........................................................................ 23919 ........................................................................ 23920 ........................................................................ 23921 ........................................................................ 23922 ........................................................................ 23923 ........................................................................ 23924 ........................................................................ 23925 ........................................................................ 23926 ........................................................................ 23927 ........................................................................ 23928 ........................................................................ 23929 ........................................................................ 23930 ........................................................................ 23931 ........................................................................ 23932 ........................................................................ 23933 ........................................................................ 23934 ........................................................................ 23935 ........................................................................ 23936 ........................................................................ 23937 ........................................................................ 23938 ........................................................................ 23939 ........................................................................ 23940 ........................................................................ 23941 ........................................................................ 23942 ........................................................................ 23943 ........................................................................ 23944 ........................................................................ 23945 ........................................................................ 23946 ........................................................................ 23947 ........................................................................ 23948 ........................................................................ 23949 ........................................................................ 23950 ........................................................................ 23951 ........................................................................ 23952 ........................................................................ 23953 ........................................................................ 23954 ........................................................................ 23955 ........................................................................ 23956 ........................................................................ 23957 ........................................................................ 23958 ........................................................................ 23959 ........................................................................ 23960 ........................................................................ 23961 ........................................................................ 23962 ........................................................................ 23963 ........................................................................ 23964 ........................................................................ 23965 ........................................................................ 23966 ........................................................................ 23967 ........................................................................ 23968 ........................................................................ 23969 ........................................................................ 23970 ........................................................................ 23971 ........................................................................ 23972 ........................................................................ 23973 ........................................................................ 23974 ........................................................................ 23975 ........................................................................ 23976 ........................................................................ 23977 ........................................................................ 23978 ........................................................................ 23979 ........................................................................ 23980 ........................................................................ 23981 ........................................................................ 23982 ........................................................................ 23983 ........................................................................ 23984 ........................................................................ 23985 ........................................................................ 23986 ........................................................................ 23987 ........................................................................ 23988 ........................................................................ 23989 ........................................................................ 23990 ........................................................................ 23991 ........................................................................ 23992 ........................................................................ 23993 ........................................................................ 23994 ........................................................................ 23995 ........................................................................ 23996 ........................................................................ 23997 ........................................................................ 23998 ........................................................................ 23999 ........................................................................ 24000 ........................................................................ 24001 ........................................................................ 24002 ........................................................................ 24003 ........................................................................ 24004 ........................................................................ 24005 ........................................................................ 24006 ........................................................................ 24007 ........................................................................ 24008 ........................................................................ 24009 ........................................................................ 24010 ........................................................................ 24011 ........................................................................ 24012 ........................................................................ 24013 ........................................................................ 24014 ........................................................................ 24015 ........................................................................ 24016 ........................................................................ 24017 ........................................................................ 24018 ........................................................................ 24019 ........................................................................ 24020 ........................................................................ 24021 ........................................................................ 24022 ........................................................................ 24023 ........................................................................ 24024 ........................................................................ 24025 ........................................................................ 24026 ........................................................................ 24027 ........................................................................ 24028 ........................................................................ 24029 ........................................................................ 24030 ........................................................................ 24031 ........................................................................ 24032 ........................................................................ 24033 ........................................................................ 24034 ........................................................................ 24035 ........................................................................ 24036 ........................................................................ 24037 ........................................................................ 24038 ........................................................................ 24039 ........................................................................ 24040 ........................................................................ 24041 ........................................................................ 24042 ........................................................................ 24043 ........................................................................ 24044 ........................................................................ 24045 ........................................................................ 24046 ........................................................................ 24047 ........................................................................ 24048 ........................................................................ 24049 ........................................................................ 24050 ........................................................................ 24051 ........................................................................ 24052 ........................................................................ 24053 ........................................................................ 24054 ........................................................................ 24055 ........................................................................ 24056 ........................................................................ 24057 ........................................................................ 24058 ........................................................................ 24059 ........................................................................ 24060 ........................................................................ 24061 ........................................................................ 24062 ........................................................................ 24063 ........................................................................ 24064 ........................................................................ 24065 ........................................................................ 24066 ........................................................................ 24067 ........................................................................ 24068 ........................................................................ 24069 ........................................................................ 24070 ........................................................................ 24071 ........................................................................ 24072 ........................................................................ 24073 ........................................................................ 24074 ........................................................................ 24075 ........................................................................ 24076 ........................................................................ 24077 ........................................................................ 24078 ........................................................................ 24079 ........................................................................ 24080 ........................................................................ 24081 ........................................................................ 24082 ........................................................................ 24083 ........................................................................ 24084 ........................................................................ 24085 ........................................................................ 24086 ........................................................................ 24087 ........................................................................ 24088 ........................................................................ 24089 ........................................................................ 24090 ........................................................................ 24091 ........................................................................ 24092 ........................................................................ 24093 ........................................................................ 24094 ........................................................................ 24095 ........................................................................ 24096 ........................................................................ 24097 ........................................................................ 24098 ........................................................................ 24099 ........................................................................ 24100 ........................................................................ 24101 ........................................................................ 24102 ........................................................................ 24103 ........................................................................ 24104 ........................................................................ 24105 ........................................................................ 24106 ........................................................................ 24107 ........................................................................ 24108 ........................................................................ 24109 ........................................................................ 24110 ........................................................................ 24111 ........................................................................ 24112 ........................................................................ 24113 ........................................................................ 24114 ........................................................................ 24115 ........................................................................ 24116 ........................................................................ 24117 ........................................................................ 24118 ........................................................................ 24119 ........................................................................ 24120 ........................................................................ 24121 ........................................................................ 24122 ........................................................................ 24123 ........................................................................ 24124 ........................................................................ 24125 ........................................................................ 24126 ........................................................................ 24127 ........................................................................ 24128 ........................................................................ 24129 ........................................................................ 24130 ........................................................................ 24131 ........................................................................ 24132 ........................................................................ 24133 ........................................................................ 24134 ........................................................................ 24135 ........................................................................ 24136 ........................................................................ 24137 ........................................................................ 24138 ........................................................................ 24139 ........................................................................ 24140 ........................................................................ 24141 ........................................................................ 24142 ........................................................................ 24143 ........................................................................ 24144 ........................................................................ 24145 ........................................................................ 24146 ........................................................................ 24147 ........................................................................ 24148 ........................................................................ 24149 ........................................................................ 24150 ........................................................................ 24151 ........................................................................ 24152 ........................................................................ 24153 ........................................................................ 24154 ........................................................................ 24155 ........................................................................ 24156 ........................................................................ 24157 ........................................................................ 24158 ........................................................................ 24159 ........................................................................ 24160 ........................................................................ 24161 ........................................................................ 24162 ........................................................................ 24163 ........................................................................ 24164 ........................................................................ 24165 ........................................................................ 24166 ........................................................................ 24167 ........................................................................ 24168 ........................................................................ 24169 ........................................................................ 24170 ........................................................................ 24171 ........................................................................ 24172 ........................................................................ 24173 ........................................................................ 24174 ........................................................................ 24175 ........................................................................ 24176 ........................................................................ 24177 ........................................................................ 24178 ........................................................................ 24179 ........................................................................ 24180 ........................................................................ 24181 ........................................................................ 24182 ........................................................................ 24183 ........................................................................ 24184 ........................................................................ 24185 ........................................................................ 24186 ........................................................................ 24187 ........................................................................ 24188 ........................................................................ 24189 ........................................................................ 24190 ........................................................................ 24191 ........................................................................ 24192 ........................................................................ 24193 ........................................................................ 24194 ........................................................................ 24195 ........................................................................ 24196 ........................................................................ 24197 ........................................................................ 24198 ........................................................................ 24199 ........................................................................ 24200 ........................................................................ 24201 ........................................................................ 24202 ........................................................................ 24203 ........................................................................ 24204 ........................................................................ 24205 ........................................................................ 24206 ........................................................................ 24207 ........................................................................ 24208 ........................................................................ 24209 ........................................................................ 24210 ........................................................................ 24211 ........................................................................ 24212 ........................................................................ 24213 ........................................................................ 24214 ........................................................................ 24215 ........................................................................ 24216 ........................................................................ 24217 ........................................................................ 24218 ........................................................................ 24219 ........................................................................ 24220 ........................................................................ 24221 ........................................................................ 24222 ........................................................................ 24223 ........................................................................ 24224 ........................................................................ 24225 ........................................................................ 24226 ........................................................................ 24227 ........................................................................ 24228 ........................................................................ 24229 ........................................................................ 24230 ........................................................................ 24231 ........................................................................ 24232 ........................................................................ 24233 ........................................................................ 24234 ........................................................................ 24235 ........................................................................ 24236 ........................................................................ 24237 ........................................................................ 24238 ........................................................................ 24239 ........................................................................ 24240 ........................................................................ 24241 ........................................................................ 24242 ........................................................................ 24243 ........................................................................ 24244 ........................................................................ 24245 ........................................................................ 24246 ........................................................................ 24247 ........................................................................ 24248 ........................................................................ 24249 ........................................................................ 24250 ........................................................................ 24251 ........................................................................ 24252 ........................................................................ 24253 ........................................................................ 24254 ........................................................................ 24255 ........................................................................ 24256 ........................................................................ 24257 ........................................................................ 24258 ........................................................................ 24259 ........................................................................ 24260 ........................................................................ 24261 ........................................................................ 24262 ........................................................................ 24263 ........................................................................ 24264 ........................................................................ 24265 ........................................................................ 24266 ........................................................................ 24267 ........................................................................ 24268 ........................................................................ 24269 ........................................................................ 24270 ........................................................................ 24271 ........................................................................ 24272 ........................................................................ 24273 ........................................................................ 24274 ........................................................................ 24275 ........................................................................ 24276 ........................................................................ 24277 ........................................................................ 24278 ........................................................................ 24279 ........................................................................ 24280 ........................................................................ 24281 ........................................................................ 24282 ........................................................................ 24283 ........................................................................ 24284 ........................................................................ 24285 ........................................................................ 24286 ........................................................................ 24287 ........................................................................ 24288 ........................................................................ 24289 ........................................................................ 24290 ........................................................................ 24291 ........................................................................ 24292 ........................................................................ 24293 ........................................................................ 24294 ........................................................................ 24295 ........................................................................ 24296 ........................................................................ 24297 ........................................................................ 24298 ........................................................................ 24299 ........................................................................ 24300 ........................................................................ 24301 ........................................................................ 24302 ........................................................................ 24303 ........................................................................ 24304 ........................................................................ 24305 ........................................................................ 24306 ........................................................................ 24307 ........................................................................ 24308 ........................................................................ 24309 ........................................................................ 24310 ........................................................................ 24311 ........................................................................ 24312 ........................................................................ 24313 ........................................................................ 24314 ........................................................................ 24315 ........................................................................ 24316 ........................................................................ 24317 ........................................................................ 24318 ........................................................................ 24319 ........................................................................ 24320 ........................................................................ 24321 ........................................................................ 24322 ........................................................................ 24323 ........................................................................ 24324 ........................................................................ 24325 ........................................................................ 24326 ........................................................................ 24327 ........................................................................ 24328 ........................................................................ 24329 ........................................................................ 24330 ........................................................................ 24331 ........................................................................ 24332 ........................................................................ 24333 ........................................................................ 24334 ........................................................................ 24335 ........................................................................ 24336 ........................................................................ 24337 ........................................................................ 24338 ........................................................................ 24339 ........................................................................ 24340 ........................................................................ 24341 ........................................................................ 24342 ........................................................................ 24343 ........................................................................ 24344 ........................................................................ 24345 ........................................................................ 24346 ........................................................................ 24347 ........................................................................ 24348 ........................................................................ 24349 ........................................................................ 24350 ........................................................................ 24351 ........................................................................ 24352 ........................................................................ 24353 ........................................................................ 24354 ........................................................................ 24355 ........................................................................ 24356 ........................................................................ 24357 ........................................................................ 24358 ........................................................................ 24359 ........................................................................ 24360 ........................................................................ 24361 ........................................................................ 24362 ........................................................................ 24363 ........................................................................ 24364 ........................................................................ 24365 ........................................................................ 24366 ........................................................................ 24367 ........................................................................ 24368 ........................................................................ 24369 ........................................................................ 24370 ........................................................................ 24371 ........................................................................ 24372 ........................................................................ 24373 ........................................................................ 24374 ........................................................................ 24375 ........................................................................ 24376 ........................................................................ 24377 ........................................................................ 24378 ........................................................................ 24379 ........................................................................ 24380 ........................................................................ 24381 ........................................................................ 24382 ........................................................................ 24383 ........................................................................ 24384 ........................................................................ 24385 ........................................................................ 24386 ........................................................................ 24387 ........................................................................ 24388 ........................................................................ 24389 ........................................................................ 24390 ........................................................................ 24391 ........................................................................ 24392 ........................................................................ 24393 ........................................................................ 24394 ........................................................................ 24395 ........................................................................ 24396 ........................................................................ 24397 ........................................................................ 24398 ........................................................................ 24399 ........................................................................ 24400 ........................................................................ 24401 ........................................................................ 24402 ........................................................................ 24403 ........................................................................ 24404 ........................................................................ 24405 ........................................................................ 24406 ........................................................................ 24407 ........................................................................ 24408 ........................................................................ 24409 ........................................................................ 24410 ........................................................................ 24411 ........................................................................ 24412 ........................................................................ 24413 ........................................................................ 24414 ........................................................................ 24415 ........................................................................ 24416 ........................................................................ 24417 ........................................................................ 24418 ........................................................................ 24419 ........................................................................ 24420 ........................................................................ 24421 ........................................................................ 24422 ........................................................................ 24423 ........................................................................ 24424 ........................................................................ 24425 ........................................................................ 24426 ........................................................................ 24427 ........................................................................ 24428 ........................................................................ 24429 ........................................................................ 24430 ........................................................................ 24431 ........................................................................ 24432 ........................................................................ 24433 ........................................................................ 24434 ........................................................................ 24435 ........................................................................ 24436 ........................................................................ 24437 ........................................................................ 24438 ........................................................................ 24439 ........................................................................ 24440 ........................................................................ 24441 ........................................................................ 24442 ........................................................................ 24443 ........................................................................ 24444 ........................................................................ 24445 ........................................................................ 24446 ........................................................................ 24447 ........................................................................ 24448 ........................................................................ 24449 ........................................................................ 24450 ........................................................................ 24451 ........................................................................ 24452 ........................................................................ 24453 ........................................................................ 24454 ........................................................................ 24455 ........................................................................ 24456 ........................................................................ 24457 ........................................................................ 24458 ........................................................................ 24459 ........................................................................ 24460 ........................................................................ 24461 ........................................................................ 24462 ........................................................................ 24463 ........................................................................ 24464 ........................................................................ 24465 ........................................................................ 24466 ........................................................................ 24467 ........................................................................ 24468 ........................................................................ 24469 ........................................................................ 24470 ........................................................................ 24471 ........................................................................ 24472 ........................................................................ 24473 ........................................................................ 24474 ........................................................................ 24475 ........................................................................ 24476 ........................................................................ 24477 ........................................................................ 24478 ........................................................................ 24479 ........................................................................ 24480 ........................................................................ 24481 ........................................................................ 24482 ........................................................................ 24483 ........................................................................ 24484 ........................................................................ 24485 ........................................................................ 24486 ........................................................................ 24487 ........................................................................ 24488 ........................................................................ 24489 ........................................................................ 24490 ........................................................................ 24491 ........................................................................ 24492 ........................................................................ 24493 ........................................................................ 24494 ........................................................................ 24495 ........................................................................ 24496 ........................................................................ 24497 ........................................................................ 24498 ........................................................................ 24499 ........................................................................ 24500 ........................................................................ 24501 ........................................................................ 24502 ........................................................................ 24503 ........................................................................ 24504 ........................................................................ 24505 ........................................................................ 24506 ........................................................................ 24507 ........................................................................ 24508 ........................................................................ 24509 ........................................................................ 24510 ........................................................................ 24511 ........................................................................ 24512 ........................................................................ 24513 ........................................................................ 24514 ........................................................................ 24515 ........................................................................ 24516 ........................................................................ 24517 ........................................................................ 24518 ........................................................................ 24519 ........................................................................ 24520 ........................................................................ 24521 ........................................................................ 24522 ........................................................................ 24523 ........................................................................ 24524 ........................................................................ 24525 ........................................................................ 24526 ........................................................................ 24527 ........................................................................ 24528 ........................................................................ 24529 ........................................................................ 24530 ........................................................................ 24531 ........................................................................ 24532 ........................................................................ 24533 ........................................................................ 24534 ........................................................................ 24535 ........................................................................ 24536 ........................................................................ 24537 ........................................................................ 24538 ........................................................................ 24539 ........................................................................ 24540 ........................................................................ 24541 ........................................................................ 24542 ........................................................................ 24543 ........................................................................ 24544 ........................................................................ 24545 ........................................................................ 24546 ........................................................................ 24547 ........................................................................ 24548 ........................................................................ 24549 ........................................................................ 24550 ........................................................................ 24551 ........................................................................ 24552 ........................................................................ 24553 ........................................................................ 24554 ........................................................................ 24555 ........................................................................ 24556 ........................................................................ 24557 ........................................................................ 24558 ........................................................................ 24559 ........................................................................ 24560 ........................................................................ 24561 ........................................................................ 24562 ........................................................................ 24563 ........................................................................ 24564 ........................................................................ 24565 ........................................................................ 24566 ........................................................................ 24567 ........................................................................ 24568 ........................................................................ 24569 ........................................................................ 24570 ........................................................................ 24571 ........................................................................ 24572 ........................................................................ 24573 ........................................................................ 24574 ........................................................................ 24575 ........................................................................ 24576 ........................................................................ 24577 ........................................................................ 24578 ........................................................................ 24579 ........................................................................ 24580 ........................................................................ 24581 ........................................................................ 24582 ........................................................................ 24583 ........................................................................ 24584 ........................................................................ 24585 ........................................................................ 24586 ........................................................................ 24587 ........................................................................ 24588 ........................................................................ 24589 ........................................................................ 24590 ........................................................................ 24591 ........................................................................ 24592 ........................................................................ 24593 ........................................................................ 24594 ........................................................................ 24595 ........................................................................ 24596 ........................................................................ 24597 ........................................................................ 24598 ........................................................................ 24599 ........................................................................ 24600 ........................................................................ 24601 ........................................................................ 24602 ........................................................................ 24603 ........................................................................ 24604 ........................................................................ 24605 ........................................................................ 24606 ........................................................................ 24607 ........................................................................ 24608 ........................................................................ 24609 ........................................................................ 24610 ........................................................................ 24611 ........................................................................ 24612 ........................................................................ 24613 ........................................................................ 24614 ........................................................................ 24615 ........................................................................ 24616 ........................................................................ 24617 ........................................................................ 24618 ........................................................................ 24619 ........................................................................ 24620 ........................................................................ 24621 ........................................................................ 24622 ........................................................................ 24623 ........................................................................ 24624 ........................................................................ 24625 ........................................................................ 24626 ........................................................................ 24627 ........................................................................ 24628 ........................................................................ 24629 ........................................................................ 24630 ........................................................................ 24631 ........................................................................ 24632 ........................................................................ 24633 ........................................................................ 24634 ........................................................................ 24635 ........................................................................ 24636 ........................................................................ 24637 ........................................................................ 24638 ........................................................................ 24639 ........................................................................ 24640 ........................................................................ 24641 ........................................................................ 24642 ........................................................................ 24643 ........................................................................ 24644 ........................................................................ 24645 ........................................................................ 24646 ........................................................................ 24647 ........................................................................ 24648 ........................................................................ 24649 ........................................................................ 24650 ........................................................................ 24651 ........................................................................ 24652 ........................................................................ 24653 ........................................................................ 24654 ........................................................................ 24655 ........................................................................ 24656 ........................................................................ 24657 ........................................................................ 24658 ........................................................................ 24659 ........................................................................ 24660 ........................................................................ 24661 ........................................................................ 24662 ........................................................................ 24663 ........................................................................ 24664 ........................................................................ 24665 ........................................................................ 24666 ........................................................................ 24667 ........................................................................ 24668 ........................................................................ 24669 ........................................................................ 24670 ........................................................................ 24671 ........................................................................ 24672 ........................................................................ 24673 ........................................................................ 24674 ........................................................................ 24675 ........................................................................ 24676 ........................................................................ 24677 ........................................................................ 24678 ........................................................................ 24679 ........................................................................ 24680 ........................................................................ 24681 ........................................................................ 24682 ........................................................................ 24683 ........................................................................ 24684 ........................................................................ 24685 ........................................................................ 24686 ........................................................................ 24687 ........................................................................ 24688 ........................................................................ 24689 ........................................................................ 24690 ........................................................................ 24691 ........................................................................ 24692 ........................................................................ 24693 ........................................................................ 24694 ........................................................................ 24695 ........................................................................ 24696 ........................................................................ 24697 ........................................................................ 24698 ........................................................................ 24699 ........................................................................ 24700 ........................................................................ 24701 ........................................................................ 24702 ........................................................................ 24703 ........................................................................ 24704 ........................................................................ 24705 ........................................................................ 24706 ........................................................................ 24707 ........................................................................ 24708 ........................................................................ 24709 ........................................................................ 24710 ........................................................................ 24711 ........................................................................ 24712 ........................................................................ 24713 ........................................................................ 24714 ........................................................................ 24715 ........................................................................ 24716 ........................................................................ 24717 ........................................................................ 24718 ........................................................................ 24719 ........................................................................ 24720 ........................................................................ 24721 ........................................................................ 24722 ........................................................................ 24723 ........................................................................ 24724 ........................................................................ 24725 ........................................................................ 24726 ........................................................................ 24727 ........................................................................ 24728 ........................................................................ 24729 ........................................................................ 24730 ........................................................................ 24731 ........................................................................ 24732 ........................................................................ 24733 ........................................................................ 24734 ........................................................................ 24735 ........................................................................ 24736 ........................................................................ 24737 ........................................................................ 24738 ........................................................................ 24739 ........................................................................ 24740 ........................................................................ 24741 ........................................................................ 24742 ........................................................................ 24743 ........................................................................ 24744 ........................................................................ 24745 ........................................................................ 24746 ........................................................................ 24747 ........................................................................ 24748 ........................................................................ 24749 ........................................................................ 24750 ........................................................................ 24751 ........................................................................ 24752 ........................................................................ 24753 ........................................................................ 24754 ........................................................................ 24755 ........................................................................ 24756 ........................................................................ 24757 ........................................................................ 24758 ........................................................................ 24759 ........................................................................ 24760 ........................................................................ 24761 ........................................................................ 24762 ........................................................................ 24763 ........................................................................ 24764 ........................................................................ 24765 ........................................................................ 24766 ........................................................................ 24767 ........................................................................ 24768 ........................................................................ 24769 ........................................................................ 24770 ........................................................................ 24771 ........................................................................ 24772 ........................................................................ 24773 ........................................................................ 24774 ........................................................................ 24775 ........................................................................ 24776 ........................................................................ 24777 ........................................................................ 24778 ........................................................................ 24779 ........................................................................ 24780 ........................................................................ 24781 ........................................................................ 24782 ........................................................................ 24783 ........................................................................ 24784 ........................................................................ 24785 ........................................................................ 24786 ........................................................................ 24787 ........................................................................ 24788 ........................................................................ 24789 ........................................................................ 24790 ........................................................................ 24791 ........................................................................ 24792 ........................................................................ 24793 ........................................................................ 24794 ........................................................................ 24795 ........................................................................ 24796 ........................................................................ 24797 ........................................................................ 24798 ........................................................................ 24799 ........................................................................ 24800 ........................................................................ 24801 ........................................................................ 24802 ........................................................................ 24803 ........................................................................ 24804 ........................................................................ 24805 ........................................................................ 24806 ........................................................................ 24807 ........................................................................ 24808 ........................................................................ 24809 ........................................................................ 24810 ........................................................................ 24811 ........................................................................ 24812 ........................................................................ 24813 ........................................................................ 24814 ........................................................................ 24815 ........................................................................ 24816 ........................................................................ 24817 ........................................................................ 24818 ........................................................................ 24819 ........................................................................ 24820 ........................................................................ 24821 ........................................................................ 24822 ........................................................................ 24823 ........................................................................ 24824 ........................................................................ 24825 ........................................................................ 24826 ........................................................................ 24827 ........................................................................ 24828 ........................................................................ 24829 ........................................................................ 24830 ........................................................................ 24831 ........................................................................ 24832 ........................................................................ 24833 ........................................................................ 24834 ........................................................................ 24835 ........................................................................ 24836 ........................................................................ 24837 ........................................................................ 24838 ........................................................................ 24839 ........................................................................ 24840 ........................................................................ 24841 ........................................................................ 24842 ........................................................................ 24843 ........................................................................ 24844 ........................................................................ 24845 ........................................................................ 24846 ........................................................................ 24847 ........................................................................ 24848 ........................................................................ 24849 ........................................................................ 24850 ........................................................................ 24851 ........................................................................ 24852 ........................................................................ 24853 ........................................................................ 24854 ........................................................................ 24855 ........................................................................ 24856 ........................................................................ 24857 ........................................................................ 24858 ........................................................................ 24859 ........................................................................ 24860 ........................................................................ 24861 ........................................................................ 24862 ........................................................................ 24863 ........................................................................ 24864 ........................................................................ 24865 ........................................................................ 24866 ........................................................................ 24867 ........................................................................ 24868 ........................................................................ 24869 ........................................................................ 24870 ........................................................................ 24871 ........................................................................ 24872 ........................................................................ 24873 ........................................................................ 24874 ........................................................................ 24875 ........................................................................ 24876 ........................................................................ 24877 ........................................................................ 24878 ........................................................................ 24879 ........................................................................ 24880 ........................................................................ 24881 ........................................................................ 24882 ........................................................................ 24883 ........................................................................ 24884 ........................................................................ 24885 ........................................................................ 24886 ........................................................................ 24887 ........................................................................ 24888 ........................................................................ 24889 ........................................................................ 24890 ........................................................................ 24891 ........................................................................ 24892 ........................................................................ 24893 ........................................................................ 24894 ........................................................................ 24895 ........................................................................ 24896 ........................................................................ 24897 ........................................................................ 24898 ........................................................................ 24899 ........................................................................ 24900 ........................................................................ 24901 ........................................................................ 24902 ........................................................................ 24903 ........................................................................ 24904 ........................................................................ 24905 ........................................................................ 24906 ........................................................................ 24907 ........................................................................ 24908 ........................................................................ 24909 ........................................................................ 24910 ........................................................................ 24911 ........................................................................ 24912 ........................................................................ 24913 ........................................................................ 24914 ........................................................................ 24915 ........................................................................ 24916 ........................................................................ 24917 ........................................................................ 24918 ........................................................................ 24919 ........................................................................ 24920 ........................................................................ 24921 ........................................................................ 24922 ........................................................................ 24923 ........................................................................ 24924 ........................................................................ 24925 ........................................................................ 24926 ........................................................................ 24927 ........................................................................ 24928 ........................................................................ 24929 ........................................................................ 24930 ........................................................................ 24931 ........................................................................ 24932 ........................................................................ 24933 ........................................................................ 24934 ........................................................................ 24935 ........................................................................ 24936 ........................................................................ 24937 ........................................................................ 24938 ........................................................................ 24939 ........................................................................ 24940 ........................................................................ 24941 ........................................................................ 24942 ........................................................................ 24943 ........................................................................ 24944 ........................................................................ 24945 ........................................................................ 24946 ........................................................................ 24947 ........................................................................ 24948 ........................................................................ 24949 ........................................................................ 24950 ........................................................................ 24951 ........................................................................ 24952 ........................................................................ 24953 ........................................................................ 24954 ........................................................................ 24955 ........................................................................ 24956 ........................................................................ 24957 ........................................................................ 24958 ........................................................................ 24959 ........................................................................ 24960 ........................................................................ 24961 ........................................................................ 24962 ........................................................................ 24963 ........................................................................ 24964 ........................................................................ 24965 ........................................................................ 24966 ........................................................................ 24967 ........................................................................ 24968 ........................................................................ 24969 ........................................................................ 24970 ........................................................................ 24971 ........................................................................ 24972 ........................................................................ 24973 ........................................................................ 24974 ........................................................................ 24975 ........................................................................ 24976 ........................................................................ 24977 ........................................................................ 24978 ........................................................................ 24979 ........................................................................ 24980 ........................................................................ 24981 ........................................................................ 24982 ........................................................................ 24983 ........................................................................ 24984 ........................................................................ 24985 ........................................................................ 24986 ........................................................................ 24987 ........................................................................ 24988 ........................................................................ 24989 ........................................................................ 24990 ........................................................................ 24991 ........................................................................ 24992 ........................................................................ 24993 ........................................................................ 24994 ........................................................................ 24995 ........................................................................ 24996 ........................................................................ 24997 ........................................................................ 24998 ........................................................................ 24999 ........................................................................ 25000 ........................................................................ 25001 ........................................................................ 25002 ........................................................................ 25003 ........................................................................ 25004 ........................................................................ 25005 ........................................................................ 25006 ........................................................................ 25007 ........................................................................ 25008 ........................................................................ 25009 ........................................................................ 25010 ........................................................................ 25011 ........................................................................ 25012 ........................................................................ 25013 ........................................................................ 25014 ........................................................................ 25015 ........................................................................ 25016 ........................................................................ 25017 ........................................................................ 25018 ........................................................................ 25019 ........................................................................ 25020 ........................................................................ 25021 ........................................................................ 25022 ........................................................................ 25023 ........................................................................ 25024 ........................................................................ 25025 ........................................................................ 25026 ........................................................................ 25027 ........................................................................ 25028 ........................................................................ 25029 ........................................................................ 25030 ........................................................................ 25031 ........................................................................ 25032 ........................................................................ 25033 ........................................................................ 25034 ........................................................................ 25035 ........................................................................ 25036 ........................................................................ 25037 ........................................................................ 25038 ........................................................................ 25039 ........................................................................ 25040 ........................................................................ 25041 ........................................................................ 25042 ........................................................................ 25043 ........................................................................ 25044 ........................................................................ 25045 ........................................................................ 25046 ........................................................................ 25047 ........................................................................ 25048 ........................................................................ 25049 ........................................................................ 25050 ........................................................................ 25051 ........................................................................ 25052 ........................................................................ 25053 ........................................................................ 25054 ........................................................................ 25055 ........................................................................ 25056 ........................................................................ 25057 ........................................................................ 25058 ........................................................................ 25059 ........................................................................ 25060 ........................................................................ 25061 ........................................................................ 25062 ........................................................................ 25063 ........................................................................ 25064 ........................................................................ 25065 ........................................................................ 25066 ........................................................................ 25067 ........................................................................ 25068 ........................................................................ 25069 ........................................................................ 25070 ........................................................................ 25071 ........................................................................ 25072 ........................................................................ 25073 ........................................................................ 25074 ........................................................................ 25075 ........................................................................ 25076 ........................................................................ 25077 ........................................................................ 25078 ........................................................................ 25079 ........................................................................ 25080 ........................................................................ 25081 ........................................................................ 25082 ........................................................................ 25083 ........................................................................ 25084 ........................................................................ 25085 ........................................................................ 25086 ........................................................................ 25087 ........................................................................ 25088 ........................................................................ 25089 ........................................................................ 25090 ........................................................................ 25091 ........................................................................ 25092 ........................................................................ 25093 ........................................................................ 25094 ........................................................................ 25095 ........................................................................ 25096 ........................................................................ 25097 ........................................................................ 25098 ........................................................................ 25099 ........................................................................ 25100 ........................................................................ 25101 ........................................................................ 25102 ........................................................................ 25103 ........................................................................ 25104 ........................................................................ 25105 ........................................................................ 25106 ........................................................................ 25107 ........................................................................ 25108 ........................................................................ 25109 ........................................................................ 25110 ........................................................................ 25111 ........................................................................ 25112 ........................................................................ 25113 ........................................................................ 25114 ........................................................................ 25115 ........................................................................ 25116 ........................................................................ 25117 ........................................................................ 25118 ........................................................................ 25119 ........................................................................ 25120 ........................................................................ 25121 ........................................................................ 25122 ........................................................................ 25123 ........................................................................ 25124 ........................................................................ 25125 ........................................................................ 25126 ........................................................................ 25127 ........................................................................ 25128 ........................................................................ 25129 ........................................................................ 25130 ........................................................................ 25131 ........................................................................ 25132 ........................................................................ 25133 ........................................................................ 25134 ........................................................................ 25135 ........................................................................ 25136 ........................................................................ 25137 ........................................................................ 25138 ........................................................................ 25139 ........................................................................ 25140 ........................................................................ 25141 ........................................................................ 25142 ........................................................................ 25143 ........................................................................ 25144 ........................................................................ 25145 ........................................................................ 25146 ........................................................................ 25147 ........................................................................ 25148 ........................................................................ 25149 ........................................................................ 25150 ........................................................................ 25151 ........................................................................ 25152 ........................................................................ 25153 ........................................................................ 25154 ........................................................................ 25155 ........................................................................ 25156 ........................................................................ 25157 ........................................................................ 25158 ........................................................................ 25159 ........................................................................ 25160 ........................................................................ 25161 ........................................................................ 25162 ........................................................................ 25163 ........................................................................ 25164 ........................................................................ 25165 ........................................................................ 25166 ........................................................................ 25167 ........................................................................ 25168 ........................................................................ 25169 ........................................................................ 25170 ........................................................................ 25171 ........................................................................ 25172 ........................................................................ 25173 ........................................................................ 25174 ........................................................................ 25175 ........................................................................ 25176 ........................................................................ 25177 ........................................................................ 25178 ........................................................................ 25179 ........................................................................ 25180 ........................................................................ 25181 ........................................................................ 25182 ........................................................................ 25183 ........................................................................ 25184 ........................................................................ 25185 ........................................................................ 25186 ........................................................................ 25187 ........................................................................ 25188 ........................................................................ 25189 ........................................................................ 25190 ........................................................................ 25191 ........................................................................ 25192 ........................................................................ 25193 ........................................................................ 25194 ........................................................................ 25195 ........................................................................ 25196 ........................................................................ 25197 ........................................................................ 25198 ........................................................................ 25199 ........................................................................ 25200 ........................................................................ 25201 ........................................................................ 25202 ........................................................................ 25203 ........................................................................ 25204 ........................................................................ 25205 ........................................................................ 25206 ........................................................................ 25207 ........................................................................ 25208 ........................................................................ 25209 ........................................................................ 25210 ........................................................................ 25211 ........................................................................ 25212 ........................................................................ 25213 ........................................................................ 25214 ........................................................................ 25215 ........................................................................ 25216 ........................................................................ 25217 ........................................................................ 25218 ........................................................................ 25219 ........................................................................ 25220 ........................................................................ 25221 ........................................................................ 25222 ........................................................................ 25223 ........................................................................ 25224 ........................................................................ 25225 ........................................................................ 25226 ........................................................................ 25227 ........................................................................ 25228 ........................................................................ 25229 ........................................................................ 25230 ........................................................................ 25231 ........................................................................ 25232 ........................................................................ 25233 ........................................................................ 25234 ........................................................................ 25235 ........................................................................ 25236 ........................................................................ 25237 ........................................................................ 25238 ........................................................................ 25239 ........................................................................ 25240 ........................................................................ 25241 ........................................................................ 25242 ........................................................................ 25243 ........................................................................ 25244 ........................................................................ 25245 ........................................................................ 25246 ........................................................................ 25247 ........................................................................ 25248 ........................................................................ 25249 ........................................................................ 25250 ........................................................................ 25251 ........................................................................ 25252 ........................................................................ 25253 ........................................................................ 25254 ........................................................................ 25255 ........................................................................ 25256 ........................................................................ 25257 ........................................................................ 25258 ........................................................................ 25259 ........................................................................ 25260 ........................................................................ 25261 ........................................................................ 25262 ........................................................................ 25263 ........................................................................ 25264 ........................................................................ 25265 ........................................................................ 25266 ........................................................................ 25267 ........................................................................ 25268 ........................................................................ 25269 ........................................................................ 25270 ........................................................................ 25271 ........................................................................ 25272 ........................................................................ 25273 ........................................................................ 25274 ........................................................................ 25275 ........................................................................ 25276 ........................................................................ 25277 ........................................................................ 25278 ........................................................................ 25279 ........................................................................ 25280 ........................................................................ 25281 ........................................................................ 25282 ........................................................................ 25283 ........................................................................ 25284 ........................................................................ 25285 ........................................................................ 25286 ........................................................................ 25287 ........................................................................ 25288 ........................................................................ 25289 ........................................................................ 25290 ........................................................................ 25291 ........................................................................ 25292 ........................................................................ 25293 ........................................................................ 25294 ........................................................................ 25295 ........................................................................ 25296 ........................................................................ 25297 ........................................................................ 25298 ........................................................................ 25299 ........................................................................ 25300 ........................................................................ 25301 ........................................................................ 25302 ........................................................................ 25303 ........................................................................ 25304 ........................................................................ 25305 ........................................................................ 25306 ........................................................................ 25307 ........................................................................ 25308 ........................................................................ 25309 ........................................................................ 25310 ........................................................................ 25311 ........................................................................ 25312 ........................................................................ 25313 ........................................................................ 25314 ........................................................................ 25315 ........................................................................ 25316 ........................................................................ 25317 ........................................................................ 25318 ........................................................................ 25319 ........................................................................ 25320 ........................................................................ 25321 ........................................................................ 25322 ........................................................................ 25323 ........................................................................ 25324 ........................................................................ 25325 ........................................................................ 25326 ........................................................................ 25327 ........................................................................ 25328 ........................................................................ 25329 ........................................................................ 25330 ........................................................................ 25331 ........................................................................ 25332 ........................................................................ 25333 ........................................................................ 25334 ........................................................................ 25335 ........................................................................ 25336 ........................................................................ 25337 ........................................................................ 25338 ........................................................................ 25339 ........................................................................ 25340 ........................................................................ 25341 ........................................................................ 25342 ........................................................................ 25343 ........................................................................ 25344 ........................................................................ 25345 ........................................................................ 25346 ........................................................................ 25347 ........................................................................ 25348 ........................................................................ 25349 ........................................................................ 25350 ........................................................................ 25351 ........................................................................ 25352 ........................................................................ 25353 ........................................................................ 25354 ........................................................................ 25355 ........................................................................ 25356 ........................................................................ 25357 ........................................................................ 25358 ........................................................................ 25359 ........................................................................ 25360 ........................................................................ 25361 ........................................................................ 25362 ........................................................................ 25363 ........................................................................ 25364 ........................................................................ 25365 ........................................................................ 25366 ........................................................................ 25367 ........................................................................ 25368 ........................................................................ 25369 ........................................................................ 25370 ........................................................................ 25371 ........................................................................ 25372 ........................................................................ 25373 ........................................................................ 25374 ........................................................................ 25375 ........................................................................ 25376 ........................................................................ 25377 ........................................................................ 25378 ........................................................................ 25379 ........................................................................ 25380 ........................................................................ 25381 ........................................................................ 25382 ........................................................................ 25383 ........................................................................ 25384 ........................................................................ 25385 ........................................................................ 25386 ........................................................................ 25387 ........................................................................ 25388 ........................................................................ 25389 ........................................................................ 25390 ........................................................................ 25391 ........................................................................ 25392 ........................................................................ 25393 ........................................................................ 25394 ........................................................................ 25395 ........................................................................ 25396 ........................................................................ 25397 ........................................................................ 25398 ........................................................................ 25399 ........................................................................ 25400 ........................................................................ 25401 ........................................................................ 25402 ........................................................................ 25403 ........................................................................ 25404 ........................................................................ 25405 ........................................................................ 25406 ........................................................................ 25407 ........................................................................ 25408 ........................................................................ 25409 ........................................................................ 25410 ........................................................................ 25411 ........................................................................ 25412 ........................................................................ 25413 ........................................................................ 25414 ........................................................................ 25415 ........................................................................ 25416 ........................................................................ 25417 ........................................................................ 25418 ........................................................................ 25419 ........................................................................ 25420 ........................................................................ 25421 ........................................................................ 25422 ........................................................................ 25423 ........................................................................ 25424 ........................................................................ 25425 ........................................................................ 25426 ........................................................................ 25427 ........................................................................ 25428 ........................................................................ 25429 ........................................................................ 25430 ........................................................................ 25431 ........................................................................ 25432 ........................................................................ 25433 ........................................................................ 25434 ........................................................................ 25435 ........................................................................ 25436 ........................................................................ 25437 ........................................................................ 25438 ........................................................................ 25439 ........................................................................ 25440 ........................................................................ 25441 ........................................................................ 25442 ........................................................................ 25443 ........................................................................ 25444 ........................................................................ 25445 ........................................................................ 25446 ........................................................................ 25447 ........................................................................ 25448 ........................................................................ 25449 ........................................................................ 25450 ........................................................................ 25451 ........................................................................ 25452 ........................................................................ 25453 ........................................................................ 25454 ........................................................................ 25455 ........................................................................ 25456 ........................................................................ 25457 ........................................................................ 25458 ........................................................................ 25459 ........................................................................ 25460 ........................................................................ 25461 ........................................................................ 25462 ........................................................................ 25463 ........................................................................ 25464 ........................................................................ 25465 ........................................................................ 25466 ........................................................................ 25467 ........................................................................ 25468 ........................................................................ 25469 ........................................................................ 25470 ........................................................................ 25471 ........................................................................ 25472 ........................................................................ 25473 ........................................................................ 25474 ........................................................................ 25475 ........................................................................ 25476 ........................................................................ 25477 ........................................................................ 25478 ........................................................................ 25479 ........................................................................ 25480 ........................................................................ 25481 ........................................................................ 25482 ........................................................................ 25483 ........................................................................ 25484 ........................................................................ 25485 ........................................................................ 25486 ........................................................................ 25487 ........................................................................ 25488 ........................................................................ 25489 ........................................................................ 25490 ........................................................................ 25491 ........................................................................ 25492 ........................................................................ 25493 ........................................................................ 25494 ........................................................................ 25495 ........................................................................ 25496 ........................................................................ 25497 ........................................................................ 25498 ........................................................................ 25499 ........................................................................ 25500 ........................................................................ 25501 ........................................................................ 25502 ........................................................................ 25503 ........................................................................ 25504 ........................................................................ 25505 ........................................................................ 25506 ........................................................................ 25507 ........................................................................ 25508 ........................................................................ 25509 ........................................................................ 25510 ........................................................................ 25511 ........................................................................ 25512 ........................................................................ 25513 ........................................................................ 25514 ........................................................................ 25515 ........................................................................ 25516 ........................................................................ 25517 ........................................................................ 25518 ........................................................................ 25519 ........................................................................ 25520 ........................................................................ 25521 ........................................................................ 25522 ........................................................................ 25523 ........................................................................ 25524 ........................................................................ 25525 ........................................................................ 25526 ........................................................................ 25527 ........................................................................ 25528 ........................................................................ 25529 ........................................................................ 25530 ........................................................................ 25531 ........................................................................ 25532 ........................................................................ 25533 ........................................................................ 25534 ........................................................................ 25535 ........................................................................ 25536 ........................................................................ 25537 ........................................................................ 25538 ........................................................................ 25539 ........................................................................ 25540 ........................................................................ 25541 ........................................................................ 25542 ........................................................................ 25543 ........................................................................ 25544 ........................................................................ 25545 ........................................................................ 25546 ........................................................................ 25547 ........................................................................ 25548 ........................................................................ 25549 ........................................................................ 25550 ........................................................................ 25551 ........................................................................ 25552 ........................................................................ 25553 ........................................................................ 25554 ........................................................................ 25555 ........................................................................ 25556 ........................................................................ 25557 ........................................................................ 25558 ........................................................................ 25559 ........................................................................ 25560 ........................................................................ 25561 ........................................................................ 25562 ........................................................................ 25563 ........................................................................ 25564 ........................................................................ 25565 ........................................................................ 25566 ........................................................................ 25567 ........................................................................ 25568 ........................................................................ 25569 ........................................................................ 25570 ........................................................................ 25571 ........................................................................ 25572 ........................................................................ 25573 ........................................................................ 25574 ........................................................................ 25575 ........................................................................ 25576 ........................................................................ 25577 ........................................................................ 25578 ........................................................................ 25579 ........................................................................ 25580 ........................................................................ 25581 ........................................................................ 25582 ........................................................................ 25583 ........................................................................ 25584 ........................................................................ 25585 ........................................................................ 25586 ........................................................................ 25587 ........................................................................ 25588 ........................................................................ 25589 ........................................................................ 25590 ........................................................................ 25591 ........................................................................ 25592 ........................................................................ 25593 ........................................................................ 25594 ........................................................................ 25595 ........................................................................ 25596 ........................................................................ 25597 ........................................................................ 25598 ........................................................................ 25599 ........................................................................ 25600 ........................................................................ 25601 ........................................................................ 25602 ........................................................................ 25603 ........................................................................ 25604 ........................................................................ 25605 ........................................................................ 25606 ........................................................................ 25607 ........................................................................ 25608 ........................................................................ 25609 ........................................................................ 25610 ........................................................................ 25611 ........................................................................ 25612 ........................................................................ 25613 ........................................................................ 25614 ........................................................................ 25615 ........................................................................ 25616 ........................................................................ 25617 ........................................................................ 25618 ........................................................................ 25619 ........................................................................ 25620 ........................................................................ 25621 ........................................................................ 25622 ........................................................................ 25623 ........................................................................ 25624 ........................................................................ 25625 ........................................................................ 25626 ........................................................................ 25627 ........................................................................ 25628 ........................................................................ 25629 ........................................................................ 25630 ........................................................................ 25631 ........................................................................ 25632 ........................................................................ 25633 ........................................................................ 25634 ........................................................................ 25635 ........................................................................ 25636 ........................................................................ 25637 ........................................................................ 25638 ........................................................................ 25639 ........................................................................ 25640 ........................................................................ 25641 ........................................................................ 25642 ........................................................................ 25643 ........................................................................ 25644 ........................................................................ 25645 ........................................................................ 25646 ........................................................................ 25647 ........................................................................ 25648 ........................................................................ 25649 ........................................................................ 25650 ........................................................................ 25651 ........................................................................ 25652 ........................................................................ 25653 ........................................................................ 25654 ........................................................................ 25655 ........................................................................ 25656 ........................................................................ 25657 ........................................................................ 25658 ........................................................................ 25659 ........................................................................ 25660 ........................................................................ 25661 ........................................................................ 25662 ........................................................................ 25663 ........................................................................ 25664 ........................................................................ 25665 ........................................................................ 25666 ........................................................................ 25667 ........................................................................ 25668 ........................................................................ 25669 ........................................................................ 25670 ........................................................................ 25671 ........................................................................ 25672 ........................................................................ 25673 ........................................................................ 25674 ........................................................................ 25675 ........................................................................ 25676 ........................................................................ 25677 ........................................................................ 25678 ........................................................................ 25679 ........................................................................ 25680 ........................................................................ 25681 ........................................................................ 25682 ........................................................................ 25683 ........................................................................ 25684 ........................................................................ 25685 ........................................................................ 25686 ........................................................................ 25687 ........................................................................ 25688 ........................................................................ 25689 ........................................................................ 25690 ........................................................................ 25691 ........................................................................ 25692 ........................................................................ 25693 ........................................................................ 25694 ........................................................................ 25695 ........................................................................ 25696 ........................................................................ 25697 ........................................................................ 25698 ........................................................................ 25699 ........................................................................ 25700 ........................................................................ 25701 ........................................................................ 25702 ........................................................................ 25703 ........................................................................ 25704 ........................................................................ 25705 ........................................................................ 25706 ........................................................................ 25707 ........................................................................ 25708 ........................................................................ 25709 ........................................................................ 25710 ........................................................................ 25711 ........................................................................ 25712 ........................................................................ 25713 ........................................................................ 25714 ........................................................................ 25715 ........................................................................ 25716 ........................................................................ 25717 ........................................................................ 25718 ........................................................................ 25719 ........................................................................ 25720 ........................................................................ 25721 ........................................................................ 25722 ........................................................................ 25723 ........................................................................ 25724 ........................................................................ 25725 ........................................................................ 25726 ........................................................................ 25727 ........................................................................ 25728 ........................................................................ 25729 ........................................................................ 25730 ........................................................................ 25731 ........................................................................ 25732 ........................................................................ 25733 ........................................................................ 25734 ........................................................................ 25735 ........................................................................ 25736 ........................................................................ 25737 ........................................................................ 25738 ........................................................................ 25739 ........................................................................ 25740 ........................................................................ 25741 ........................................................................ 25742 ........................................................................ 25743 ........................................................................ 25744 ........................................................................ 25745 ........................................................................ 25746 ........................................................................ 25747 ........................................................................ 25748 ........................................................................ 25749 ........................................................................ 25750 ........................................................................ 25751 ........................................................................ 25752 ........................................................................ 25753 ........................................................................ 25754 ........................................................................ 25755 ........................................................................ 25756 ........................................................................ 25757 ........................................................................ 25758 ........................................................................ 25759 ........................................................................ 25760 ........................................................................ 25761 ........................................................................ 25762 ........................................................................ 25763 ........................................................................ 25764 ........................................................................ 25765 ........................................................................ 25766 ........................................................................ 25767 ........................................................................ 25768 ........................................................................ 25769 ........................................................................ 25770 ........................................................................ 25771 ........................................................................ 25772 ........................................................................ 25773 ........................................................................ 25774 ........................................................................ 25775 ........................................................................ 25776 ........................................................................ 25777 ........................................................................ 25778 ........................................................................ 25779 ........................................................................ 25780 ........................................................................ 25781 ........................................................................ 25782 ........................................................................ 25783 ........................................................................ 25784 ........................................................................ 25785 ........................................................................ 25786 ........................................................................ 25787 ........................................................................ 25788 ........................................................................ 25789 ........................................................................ 25790 ........................................................................ 25791 ........................................................................ 25792 ........................................................................ 25793 ........................................................................ 25794 ........................................................................ 25795 ........................................................................ 25796 ........................................................................ 25797 ........................................................................ 25798 ........................................................................ 25799 ........................................................................ 25800 ........................................................................ 25801 ........................................................................ 25802 ........................................................................ 25803 ........................................................................ 25804 ........................................................................ 25805 ........................................................................ 25806 ........................................................................ 25807 ........................................................................ 25808 ........................................................................ 25809 ........................................................................ 25810 ........................................................................ 25811 ........................................................................ 25812 ........................................................................ 25813 ........................................................................ 25814 ........................................................................ 25815 ........................................................................ 25816 ........................................................................ 25817 ........................................................................ 25818 ........................................................................ 25819 ........................................................................ 25820 ........................................................................ 25821 ........................................................................ 25822 ........................................................................ 25823 ........................................................................ 25824 ........................................................................ 25825 ........................................................................ 25826 ........................................................................ 25827 ........................................................................ 25828 ........................................................................ 25829 ........................................................................ 25830 ........................................................................ 25831 ........................................................................ 25832 ........................................................................ 25833 ........................................................................ 25834 ........................................................................ 25835 ........................................................................ 25836 ........................................................................ 25837 ........................................................................ 25838 ........................................................................ 25839 ........................................................................ 25840 ........................................................................ 25841 ........................................................................ 25842 ........................................................................ 25843 ........................................................................ 25844 ........................................................................ 25845 ........................................................................ 25846 ........................................................................ 25847 ........................................................................ 25848 ........................................................................ 25849 ........................................................................ 25850 ........................................................................ 25851 ........................................................................ 25852 ........................................................................ 25853 ........................................................................ 25854 ........................................................................ 25855 ........................................................................ 25856 ........................................................................ 25857 ........................................................................ 25858 ........................................................................ 25859 ........................................................................ 25860 ........................................................................ 25861 ........................................................................ 25862 ........................................................................ 25863 ........................................................................ 25864 ........................................................................ 25865 ........................................................................ 25866 ........................................................................ 25867 ........................................................................ 25868 ........................................................................ 25869 ........................................................................ 25870 ........................................................................ 25871 ........................................................................ 25872 ........................................................................ 25873 ........................................................................ 25874 ........................................................................ 25875 ........................................................................ 25876 ........................................................................ 25877 ........................................................................ 25878 ........................................................................ 25879 ........................................................................ 25880 ........................................................................ 25881 ........................................................................ 25882 ........................................................................ 25883 ........................................................................ 25884 ........................................................................ 25885 ........................................................................ 25886 ........................................................................ 25887 ........................................................................ 25888 ........................................................................ 25889 ........................................................................ 25890 ........................................................................ 25891 ........................................................................ 25892 ........................................................................ 25893 ........................................................................ 25894 ........................................................................ 25895 ........................................................................ 25896 ........................................................................ 25897 ........................................................................ 25898 ........................................................................ 25899 ........................................................................ 25900 ........................................................................ 25901 ........................................................................ 25902 ........................................................................ 25903 ........................................................................ 25904 ........................................................................ 25905 ........................................................................ 25906 ........................................................................ 25907 ........................................................................ 25908 ........................................................................ 25909 ........................................................................ 25910 ........................................................................ 25911 ........................................................................ 25912 ........................................................................ 25913 ........................................................................ 25914 ........................................................................ 25915 ........................................................................ 25916 ........................................................................ 25917 ........................................................................ 25918 ........................................................................ 25919 ........................................................................ 25920 ........................................................................ 25921 ........................................................................ 25922 ........................................................................ 25923 ........................................................................ 25924 ........................................................................ 25925 ........................................................................ 25926 ........................................................................ 25927 ........................................................................ 25928 ........................................................................ 25929 ........................................................................ 25930 ........................................................................ 25931 ........................................................................ 25932 ........................................................................ 25933 ........................................................................ 25934 ........................................................................ 25935 ........................................................................ 25936 ........................................................................ 25937 ........................................................................ 25938 ........................................................................ 25939 ........................................................................ 25940 ........................................................................ 25941 ........................................................................ 25942 ........................................................................ 25943 ........................................................................ 25944 ........................................................................ 25945 ........................................................................ 25946 ........................................................................ 25947 ........................................................................ 25948 ........................................................................ 25949 ........................................................................ 25950 ........................................................................ 25951 ........................................................................ 25952 ........................................................................ 25953 ........................................................................ 25954 ........................................................................ 25955 ........................................................................ 25956 ........................................................................ 25957 ........................................................................ 25958 ........................................................................ 25959 ........................................................................ 25960 ........................................................................ 25961 ........................................................................ 25962 ........................................................................ 25963 ........................................................................ 25964 ........................................................................ 25965 ........................................................................ 25966 ........................................................................ 25967 ........................................................................ 25968 ........................................................................ 25969 ........................................................................ 25970 ........................................................................ 25971 ........................................................................ 25972 ........................................................................ 25973 ........................................................................ 25974 ........................................................................ 25975 ........................................................................ 25976 ........................................................................ 25977 ........................................................................ 25978 ........................................................................ 25979 ........................................................................ 25980 ........................................................................ 25981 ........................................................................ 25982 ........................................................................ 25983 ........................................................................ 25984 ........................................................................ 25985 ........................................................................ 25986 ........................................................................ 25987 ........................................................................ 25988 ........................................................................ 25989 ........................................................................ 25990 ........................................................................ 25991 ........................................................................ 25992 ........................................................................ 25993 ........................................................................ 25994 ........................................................................ 25995 ........................................................................ 25996 ........................................................................ 25997 ........................................................................ 25998 ........................................................................ 25999 ........................................................................ 26000 ........................................................................ 26001 ........................................................................ 26002 ........................................................................ 26003 ........................................................................ 26004 ........................................................................ 26005 ........................................................................ 26006 ........................................................................ 26007 ........................................................................ 26008 ........................................................................ 26009 ........................................................................ 26010 ........................................................................ 26011 ........................................................................ 26012 ........................................................................ 26013 ........................................................................ 26014 ........................................................................ 26015 ........................................................................ 26016 ........................................................................ 26017 ........................................................................ 26018 ........................................................................ 26019 ........................................................................ 26020 ........................................................................ 26021 ........................................................................ 26022 ........................................................................ 26023 ........................................................................ 26024 ........................................................................ 26025 ........................................................................ 26026 ........................................................................ 26027 ........................................................................ 26028 ........................................................................ 26029 ........................................................................ 26030 ........................................................................ 26031 ........................................................................ 26032 ........................................................................ 26033 ........................................................................ 26034 ........................................................................ 26035 ........................................................................ 26036 ........................................................................ 26037 ........................................................................ 26038 ........................................................................ 26039 ........................................................................ 26040 ........................................................................ 26041 ........................................................................ 26042 ........................................................................ 26043 ........................................................................ 26044 ........................................................................ 26045 ........................................................................ 26046 ........................................................................ 26047 ........................................................................ 26048 ........................................................................ 26049 ........................................................................ 26050 ........................................................................ 26051 ........................................................................ 26052 ........................................................................ 26053 ........................................................................ 26054 ........................................................................ 26055 ........................................................................ 26056 ........................................................................ 26057 ........................................................................ 26058 ........................................................................ 26059 ........................................................................ 26060 ........................................................................ 26061 ........................................................................ 26062 ........................................................................ 26063 ........................................................................ 26064 ........................................................................ 26065 ........................................................................ 26066 ........................................................................ 26067 ........................................................................ 26068 ........................................................................ 26069 ........................................................................ 26070 ........................................................................ 26071 ........................................................................ 26072 ........................................................................ 26073 ........................................................................ 26074 ........................................................................ 26075 ........................................................................ 26076 ........................................................................ 26077 ........................................................................ 26078 ........................................................................ 26079 ........................................................................ 26080 ........................................................................ 26081 ........................................................................ 26082 ........................................................................ 26083 ........................................................................ 26084 ........................................................................ 26085 ........................................................................ 26086 ........................................................................ 26087 ........................................................................ 26088 ........................................................................ 26089 ........................................................................ 26090 ........................................................................ 26091 ........................................................................ 26092 ........................................................................ 26093 ........................................................................ 26094 ........................................................................ 26095 ........................................................................ 26096 ........................................................................ 26097 ........................................................................ 26098 ........................................................................ 26099 ........................................................................ 26100 ........................................................................ 26101 ........................................................................ 26102 ........................................................................ 26103 ........................................................................ 26104 ........................................................................ 26105 ........................................................................ 26106 ........................................................................ 26107 ........................................................................ 26108 ........................................................................ 26109 ........................................................................ 26110 ........................................................................ 26111 ........................................................................ 26112 ........................................................................ 26113 ........................................................................ 26114 ........................................................................ 26115 ........................................................................ 26116 ........................................................................ 26117 ........................................................................ 26118 ........................................................................ 26119 ........................................................................ 26120 ........................................................................ 26121 ........................................................................ 26122 ........................................................................ 26123 ........................................................................ 26124 ........................................................................ 26125 ........................................................................ 26126 ........................................................................ 26127 ........................................................................ 26128 ........................................................................ 26129 ........................................................................ 26130 ........................................................................ 26131 ........................................................................ 26132 ........................................................................ 26133 ........................................................................ 26134 ........................................................................ 26135 ........................................................................ 26136 ........................................................................ 26137 ........................................................................ 26138 ........................................................................ 26139 ........................................................................ 26140 ........................................................................ 26141 ........................................................................ 26142 ........................................................................ 26143 ........................................................................ 26144 ........................................................................ 26145 ........................................................................ 26146 ........................................................................ 26147 ........................................................................ 26148 ........................................................................ 26149 ........................................................................ 26150 ........................................................................ 26151 ........................................................................ 26152 ........................................................................ 26153 ........................................................................ 26154 ........................................................................ 26155 ........................................................................ 26156 ........................................................................ 26157 ........................................................................ 26158 ........................................................................ 26159 ........................................................................ 26160 ........................................................................ 26161 ........................................................................ 26162 ........................................................................ 26163 ........................................................................ 26164 ........................................................................ 26165 ........................................................................ 26166 ........................................................................ 26167 ........................................................................ 26168 ........................................................................ 26169 ........................................................................ 26170 ........................................................................ 26171 ........................................................................ 26172 ........................................................................ 26173 ........................................................................ 26174 ........................................................................ 26175 ........................................................................ 26176 ........................................................................ 26177 ........................................................................ 26178 ........................................................................ 26179 ........................................................................ 26180 ........................................................................ 26181 ........................................................................ 26182 ........................................................................ 26183 ........................................................................ 26184 ........................................................................ 26185 ........................................................................ 26186 ........................................................................ 26187 ........................................................................ 26188 ........................................................................ 26189 ........................................................................ 26190 ........................................................................ 26191 ........................................................................ 26192 ........................................................................ 26193 ........................................................................ 26194 ........................................................................ 26195 ........................................................................ 26196 ........................................................................ 26197 ........................................................................ 26198 ........................................................................ 26199 ........................................................................ 26200 ........................................................................ 26201 ........................................................................ 26202 ........................................................................ 26203 ........................................................................ 26204 ........................................................................ 26205 ........................................................................ 26206 ........................................................................ 26207 ........................................................................ 26208 ........................................................................ 26209 ........................................................................ 26210 ........................................................................ 26211 ........................................................................ 26212 ........................................................................ 26213 ........................................................................ 26214 ........................................................................ 26215 ........................................................................ 26216 ........................................................................ 26217 ........................................................................ 26218 ........................................................................ 26219 ........................................................................ 26220 ........................................................................ 26221 ........................................................................ 26222 ........................................................................ 26223 ........................................................................ 26224 ........................................................................ 26225 ........................................................................ 26226 ........................................................................ 26227 ........................................................................ 26228 ........................................................................ 26229 ........................................................................ 26230 ........................................................................ 26231 ........................................................................ 26232 ........................................................................ 26233 ........................................................................ 26234 ........................................................................ 26235 ........................................................................ 26236 ........................................................................ 26237 ........................................................................ 26238 ........................................................................ 26239 ........................................................................ 26240 ........................................................................ 26241 ........................................................................ 26242 ........................................................................ 26243 ........................................................................ 26244 ........................................................................ 26245 ........................................................................ 26246 ........................................................................ 26247 ........................................................................ 26248 ........................................................................ 26249 ........................................................................ 26250 ........................................................................ 26251 ........................................................................ 26252 ........................................................................ 26253 ........................................................................ 26254 ........................................................................ 26255 ........................................................................ 26256 ........................................................................ 26257 ........................................................................ 26258 ........................................................................ 26259 ........................................................................ 26260 ........................................................................ 26261 ........................................................................ 26262 ........................................................................ 26263 ........................................................................ 26264 ........................................................................ 26265 ........................................................................ 26266 ........................................................................ 26267 ........................................................................ 26268 ........................................................................ 26269 ........................................................................ 26270 ........................................................................ 26271 ........................................................................ 26272 ........................................................................ 26273 ........................................................................ 26274 ........................................................................ 26275 ........................................................................ 26276 ........................................................................ 26277 ........................................................................ 26278 ........................................................................ 26279 ........................................................................ 26280 ........................................................................ 26281 ........................................................................ 26282 ........................................................................ 26283 ........................................................................ 26284 ........................................................................ 26285 ........................................................................ 26286 ........................................................................ 26287 ........................................................................ 26288 ........................................................................ 26289 ........................................................................ 26290 ........................................................................ 26291 ........................................................................ 26292 ........................................................................ 26293 ........................................................................ 26294 ........................................................................ 26295 ........................................................................ 26296 ........................................................................ 26297 ........................................................................ 26298 ........................................................................ 26299 ........................................................................ 26300 ........................................................................ 26301 ........................................................................ 26302 ........................................................................ 26303 ........................................................................ 26304 ........................................................................ 26305 ........................................................................ 26306 ........................................................................ 26307 ........................................................................ 26308 ........................................................................ 26309 ........................................................................ 26310 ........................................................................ 26311 ........................................................................ 26312 ........................................................................ 26313 ........................................................................ 26314 ........................................................................ 26315 ........................................................................ 26316 ........................................................................ 26317 ........................................................................ 26318 ........................................................................ 26319 ........................................................................ 26320 ........................................................................ 26321 ........................................................................ 26322 ........................................................................ 26323 ........................................................................ 26324 ........................................................................ 26325 ........................................................................ 26326 ........................................................................ 26327 ........................................................................ 26328 ........................................................................ 26329 ........................................................................ 26330 ........................................................................ 26331 ........................................................................ 26332 ........................................................................ 26333 ........................................................................ 26334 ........................................................................ 26335 ........................................................................ 26336 ........................................................................ 26337 ........................................................................ 26338 ........................................................................ 26339 ........................................................................ 26340 ........................................................................ 26341 ........................................................................ 26342 ........................................................................ 26343 ........................................................................ 26344 ........................................................................ 26345 ........................................................................ 26346 ........................................................................ 26347 ........................................................................ 26348 ........................................................................ 26349 ........................................................................ 26350 ........................................................................ 26351 ........................................................................ 26352 ........................................................................ 26353 ........................................................................ 26354 ........................................................................ 26355 ........................................................................ 26356 ........................................................................ 26357 ........................................................................ 26358 ........................................................................ 26359 ........................................................................ 26360 ........................................................................ 26361 ........................................................................ 26362 ........................................................................ 26363 ........................................................................ 26364 ........................................................................ 26365 ........................................................................ 26366 ........................................................................ 26367 ........................................................................ 26368 ........................................................................ 26369 ........................................................................ 26370 ........................................................................ 26371 ........................................................................ 26372 ........................................................................ 26373 ........................................................................ 26374 ........................................................................ 26375 ........................................................................ 26376 ........................................................................ 26377 ........................................................................ 26378 ........................................................................ 26379 ........................................................................ 26380 ........................................................................ 26381 ........................................................................ 26382 ........................................................................ 26383 ........................................................................ 26384 ........................................................................ 26385 ........................................................................ 26386 ........................................................................ 26387 ........................................................................ 26388 ........................................................................ 26389 ........................................................................ 26390 ........................................................................ 26391 ........................................................................ 26392 ........................................................................ 26393 ........................................................................ 26394 ........................................................................ 26395 ........................................................................ 26396 ........................................................................ 26397 ........................................................................ 26398 ........................................................................ 26399 ........................................................................ 26400 ........................................................................ 26401 ........................................................................ 26402 ........................................................................ 26403 ........................................................................ 26404 ........................................................................ 26405 ........................................................................ 26406 ........................................................................ 26407 ........................................................................ 26408 ........................................................................ 26409 ........................................................................ 26410 ........................................................................ 26411 ........................................................................ 26412 ........................................................................ 26413 ........................................................................ 26414 ........................................................................ 26415 ........................................................................ 26416 ........................................................................ 26417 ........................................................................ 26418 ........................................................................ 26419 ........................................................................ 26420 ........................................................................ 26421 ........................................................................ 26422 ........................................................................ 26423 ........................................................................ 26424 ........................................................................ 26425 ........................................................................ 26426 ........................................................................ 26427 ........................................................................ 26428 ........................................................................ 26429 ........................................................................ 26430 ........................................................................ 26431 ........................................................................ 26432 ........................................................................ 26433 ........................................................................ 26434 ........................................................................ 26435 ........................................................................ 26436 ........................................................................ 26437 ........................................................................ 26438 ........................................................................ 26439 ........................................................................ 26440 ........................................................................ 26441 ........................................................................ 26442 ........................................................................ 26443 ........................................................................ 26444 ........................................................................ 26445 ........................................................................ 26446 ........................................................................ 26447 ........................................................................ 26448 ........................................................................ 26449 ........................................................................ 26450 ........................................................................ 26451 ........................................................................ 26452 ........................................................................ 26453 ........................................................................ 26454 ........................................................................ 26455 ........................................................................ 26456 ........................................................................ 26457 ........................................................................ 26458 ........................................................................ 26459 ........................................................................ 26460 ........................................................................ 26461 ........................................................................ 26462 ........................................................................ 26463 ........................................................................ 26464 ........................................................................ 26465 ........................................................................ 26466 ........................................................................ 26467 ........................................................................ 26468 ........................................................................ 26469 ........................................................................ 26470 ........................................................................ 26471 ........................................................................ 26472 ........................................................................ 26473 ........................................................................ 26474 ........................................................................ 26475 ........................................................................ 26476 ........................................................................ 26477 ........................................................................ 26478 ........................................................................ 26479 ........................................................................ 26480 ........................................................................ 26481 ........................................................................ 26482 ........................................................................ 26483 ........................................................................ 26484 ........................................................................ 26485 ........................................................................ 26486 ........................................................................ 26487 ........................................................................ 26488 ........................................................................ 26489 ........................................................................ 26490 ........................................................................ 26491 ........................................................................ 26492 ........................................................................ 26493 ........................................................................ 26494 ........................................................................ 26495 ........................................................................ 26496 ........................................................................ 26497 ........................................................................ 26498 ........................................................................ 26499 ........................................................................ 26500 ........................................................................ 26501 ........................................................................ 26502 ........................................................................ 26503 ........................................................................ 26504 ........................................................................ 26505 ........................................................................ 26506 ........................................................................ 26507 ........................................................................ 26508 ........................................................................ 26509 ........................................................................ 26510 ........................................................................ 26511 ........................................................................ 26512 ........................................................................ 26513 ........................................................................ 26514 ........................................................................ 26515 ........................................................................ 26516 ........................................................................ 26517 ........................................................................ 26518 ........................................................................ 26519 ........................................................................ 26520 ........................................................................ 26521 ........................................................................ 26522 ........................................................................ 26523 ........................................................................ 26524 ........................................................................ 26525 ........................................................................ 26526 ........................................................................ 26527 ........................................................................ 26528 ........................................................................ 26529 ........................................................................ 26530 ........................................................................ 26531 ........................................................................ 26532 ........................................................................ 26533 ........................................................................ 26534 ........................................................................ 26535 ........................................................................ 26536 ........................................................................ 26537 ........................................................................ 26538 ........................................................................ 26539 ........................................................................ 26540 ........................................................................ 26541 ........................................................................ 26542 ........................................................................ 26543 ........................................................................ 26544 ........................................................................ 26545 ........................................................................ 26546 ........................................................................ 26547 ........................................................................ 26548 ........................................................................ 26549 ........................................................................ 26550 ........................................................................ 26551 ........................................................................ 26552 ........................................................................ 26553 ........................................................................ 26554 ........................................................................ 26555 ........................................................................ 26556 ........................................................................ 26557 ........................................................................ 26558 ........................................................................ 26559 ........................................................................ 26560 ........................................................................ 26561 ........................................................................ 26562 ........................................................................ 26563 ........................................................................ 26564 ........................................................................ 26565 ........................................................................ 26566 ........................................................................ 26567 ........................................................................ 26568 ........................................................................ 26569 ........................................................................ 26570 ........................................................................ 26571 ........................................................................ 26572 ........................................................................ 26573 ........................................................................ 26574 ........................................................................ 26575 ........................................................................ 26576 ........................................................................ 26577 ........................................................................ 26578 ........................................................................ 26579 ........................................................................ 26580 ........................................................................ 26581 ........................................................................ 26582 ........................................................................ 26583 ........................................................................ 26584 ........................................................................ 26585 ........................................................................ 26586 ........................................................................ 26587 ........................................................................ 26588 ........................................................................ 26589 ........................................................................ 26590 ........................................................................ 26591 ........................................................................ 26592 ........................................................................ 26593 ........................................................................ 26594 ........................................................................ 26595 ........................................................................ 26596 ........................................................................ 26597 ........................................................................ 26598 ........................................................................ 26599 ........................................................................ 26600 ........................................................................ 26601 ........................................................................ 26602 ........................................................................ 26603 ........................................................................ 26604 ........................................................................ 26605 ........................................................................ 26606 ........................................................................ 26607 ........................................................................ 26608 ........................................................................ 26609 ........................................................................ 26610 ........................................................................ 26611 ........................................................................ 26612 ........................................................................ 26613 ........................................................................ 26614 ........................................................................ 26615 ........................................................................ 26616 ........................................................................ 26617 ........................................................................ 26618 ........................................................................ 26619 ........................................................................ 26620 ........................................................................ 26621 ........................................................................ 26622 ........................................................................ 26623 ........................................................................ 26624 ........................................................................ 26625 ........................................................................ 26626 ........................................................................ 26627 ........................................................................ 26628 ........................................................................ 26629 ........................................................................ 26630 ........................................................................ 26631 ........................................................................ 26632 ........................................................................ 26633 ........................................................................ 26634 ........................................................................ 26635 ........................................................................ 26636 ........................................................................ 26637 ........................................................................ 26638 ........................................................................ 26639 ........................................................................ 26640 ........................................................................ 26641 ........................................................................ 26642 ........................................................................ 26643 ........................................................................ 26644 ........................................................................ 26645 ........................................................................ 26646 ........................................................................ 26647 ........................................................................ 26648 ........................................................................ 26649 ........................................................................ 26650 ........................................................................ 26651 ........................................................................ 26652 ........................................................................ 26653 ........................................................................ 26654 ........................................................................ 26655 ........................................................................ 26656 ........................................................................ 26657 ........................................................................ 26658 ........................................................................ 26659 ........................................................................ 26660 ........................................................................ 26661 ........................................................................ 26662 ........................................................................ 26663 ........................................................................ 26664 ........................................................................ 26665 ........................................................................ 26666 ........................................................................ 26667 ........................................................................ 26668 ........................................................................ 26669 ........................................................................ 26670 ........................................................................ 26671 ........................................................................ 26672 ........................................................................ 26673 ........................................................................ 26674 ........................................................................ 26675 ........................................................................ 26676 ........................................................................ 26677 ........................................................................ 26678 ........................................................................ 26679 ........................................................................ 26680 ........................................................................ 26681 ........................................................................ 26682 ........................................................................ 26683 ........................................................................ 26684 ........................................................................ 26685 ........................................................................ 26686 ........................................................................ 26687 ........................................................................ 26688 ........................................................................ 26689 ........................................................................ 26690 ........................................................................ 26691 ........................................................................ 26692 ........................................................................ 26693 ........................................................................ 26694 ........................................................................ 26695 ........................................................................ 26696 ........................................................................ 26697 ........................................................................ 26698 ........................................................................ 26699 ........................................................................ 26700 ........................................................................ 26701 ........................................................................ 26702 ........................................................................ 26703 ........................................................................ 26704 ........................................................................ 26705 ........................................................................ 26706 ........................................................................ 26707 ........................................................................ 26708 ........................................................................ 26709 ........................................................................ 26710 ........................................................................ 26711 ........................................................................ 26712 ........................................................................ 26713 ........................................................................ 26714 ........................................................................ 26715 ........................................................................ 26716 ........................................................................ 26717 ........................................................................ 26718 ........................................................................ 26719 ........................................................................ 26720 ........................................................................ 26721 ........................................................................ 26722 ........................................................................ 26723 ........................................................................ 26724 ........................................................................ 26725 ........................................................................ 26726 ........................................................................ 26727 ........................................................................ 26728 ........................................................................ 26729 ........................................................................ 26730 ........................................................................ 26731 ........................................................................ 26732 ........................................................................ 26733 ........................................................................ 26734 ........................................................................ 26735 ........................................................................ 26736 ........................................................................ 26737 ........................................................................ 26738 ........................................................................ 26739 ........................................................................ 26740 ........................................................................ 26741 ........................................................................ 26742 ........................................................................ 26743 ........................................................................ 26744 ........................................................................ 26745 ........................................................................ 26746 ........................................................................ 26747 ........................................................................ 26748 ........................................................................ 26749 ........................................................................ 26750 ........................................................................ 26751 ........................................................................ 26752 ........................................................................ 26753 ........................................................................ 26754 ........................................................................ 26755 ........................................................................ 26756 ........................................................................ 26757 ........................................................................ 26758 ........................................................................ 26759 ........................................................................ 26760 ........................................................................ 26761 ........................................................................ 26762 ........................................................................ 26763 ........................................................................ 26764 ........................................................................ 26765 ........................................................................ 26766 ........................................................................ 26767 ........................................................................ 26768 ........................................................................ 26769 ........................................................................ 26770 ........................................................................ 26771 ........................................................................ 26772 ........................................................................ 26773 ........................................................................ 26774 ........................................................................ 26775 ........................................................................ 26776 ........................................................................ 26777 ........................................................................ 26778 ........................................................................ 26779 ........................................................................ 26780 ........................................................................ 26781 ........................................................................ 26782 ........................................................................ 26783 ........................................................................ 26784 ........................................................................ 26785 ........................................................................ 26786 ........................................................................ 26787 ........................................................................ 26788 ........................................................................ 26789 ........................................................................ 26790 ........................................................................ 26791 ........................................................................ 26792 ........................................................................ 26793 ........................................................................ 26794 ........................................................................ 26795 ........................................................................ 26796 ........................................................................ 26797 ........................................................................ 26798 ........................................................................ 26799 ........................................................................ 26800 ........................................................................ 26801 ........................................................................ 26802 ........................................................................ 26803 ........................................................................ 26804 ........................................................................ 26805 ........................................................................ 26806 ........................................................................ 26807 ........................................................................ 26808 ........................................................................ 26809 ........................................................................ 26810 ........................................................................ 26811 ........................................................................ 26812 ........................................................................ 26813 ........................................................................ 26814 ........................................................................ 26815 ........................................................................ 26816 ........................................................................ 26817 ........................................................................ 26818 ........................................................................ 26819 ........................................................................ 26820 ........................................................................ 26821 ........................................................................ 26822 ........................................................................ 26823 ........................................................................ 26824 ........................................................................ 26825 ........................................................................ 26826 ........................................................................ 26827 ........................................................................ 26828 ........................................................................ 26829 ........................................................................ 26830 ........................................................................ 26831 ........................................................................ 26832 ........................................................................ 26833 ........................................................................ 26834 ........................................................................ 26835 ........................................................................ 26836 ........................................................................ 26837 ........................................................................ 26838 ........................................................................ 26839 ........................................................................ 26840 ........................................................................ 26841 ........................................................................ 26842 ........................................................................ 26843 ........................................................................ 26844 ........................................................................ 26845 ........................................................................ 26846 ........................................................................ 26847 ........................................................................ 26848 ........................................................................ 26849 ........................................................................ 26850 ........................................................................ 26851 ........................................................................ 26852 ........................................................................ 26853 ........................................................................ 26854 ........................................................................ 26855 ........................................................................ 26856 ........................................................................ 26857 ........................................................................ 26858 ........................................................................ 26859 ........................................................................ 26860 ........................................................................ 26861 ........................................................................ 26862 ........................................................................ 26863 ........................................................................ 26864 ........................................................................ 26865 ........................................................................ 26866 ........................................................................ 26867 ........................................................................ 26868 ........................................................................ 26869 ........................................................................ 26870 ........................................................................ 26871 ........................................................................ 26872 ........................................................................ 26873 ........................................................................ 26874 ........................................................................ 26875 ........................................................................ 26876 ........................................................................ 26877 ........................................................................ 26878 ........................................................................ 26879 ........................................................................ 26880 ........................................................................ 26881 ........................................................................ 26882 ........................................................................ 26883 ........................................................................ 26884 ........................................................................ 26885 ........................................................................ 26886 ........................................................................ 26887 ........................................................................ 26888 ........................................................................ 26889 ........................................................................ 26890 ........................................................................ 26891 ........................................................................ 26892 ........................................................................ 26893 ........................................................................ 26894 ........................................................................ 26895 ........................................................................ 26896 ........................................................................ 26897 ........................................................................ 26898 ........................................................................ 26899 ........................................................................ 26900 ........................................................................ 26901 ........................................................................ 26902 ........................................................................ 26903 ........................................................................ 26904 ........................................................................ 26905 ........................................................................ 26906 ........................................................................ 26907 ........................................................................ 26908 ........................................................................ 26909 ........................................................................ 26910 ........................................................................ 26911 ........................................................................ 26912 ........................................................................ 26913 ........................................................................ 26914 ........................................................................ 26915 ........................................................................ 26916 ........................................................................ 26917 ........................................................................ 26918 ........................................................................ 26919 ........................................................................ 26920 ........................................................................ 26921 ........................................................................ 26922 ........................................................................ 26923 ........................................................................ 26924 ........................................................................ 26925 ........................................................................ 26926 ........................................................................ 26927 ........................................................................ 26928 ........................................................................ 26929 ........................................................................ 26930 ........................................................................ 26931 ........................................................................ 26932 ........................................................................ 26933 ........................................................................ 26934 ........................................................................ 26935 ........................................................................ 26936 ........................................................................ 26937 ........................................................................ 26938 ........................................................................ 26939 ........................................................................ 26940 ........................................................................ 26941 ........................................................................ 26942 ........................................................................ 26943 ........................................................................ 26944 ........................................................................ 26945 ........................................................................ 26946 ........................................................................ 26947 ........................................................................ 26948 ........................................................................ 26949 ........................................................................ 26950 ........................................................................ 26951 ........................................................................ 26952 ........................................................................ 26953 ........................................................................ 26954 ........................................................................ 26955 ........................................................................ 26956 ........................................................................ 26957 ........................................................................ 26958 ........................................................................ 26959 ........................................................................ 26960 ........................................................................ 26961 ........................................................................ 26962 ........................................................................ 26963 ........................................................................ 26964 ........................................................................ 26965 ........................................................................ 26966 ........................................................................ 26967 ........................................................................ 26968 ........................................................................ 26969 ........................................................................ 26970 ........................................................................ 26971 ........................................................................ 26972 ........................................................................ 26973 ........................................................................ 26974 ........................................................................ 26975 ........................................................................ 26976 ........................................................................ 26977 ........................................................................ 26978 ........................................................................ 26979 ........................................................................ 26980 ........................................................................ 26981 ........................................................................ 26982 ........................................................................ 26983 ........................................................................ 26984 ........................................................................ 26985 ........................................................................ 26986 ........................................................................ 26987 ........................................................................ 26988 ........................................................................ 26989 ........................................................................ 26990 ........................................................................ 26991 ........................................................................ 26992 ........................................................................ 26993 ........................................................................ 26994 ........................................................................ 26995 ........................................................................ 26996 ........................................................................ 26997 ........................................................................ 26998 ........................................................................ 26999 ........................................................................ 27000 ........................................................................ 27001 ........................................................................ 27002 ........................................................................ 27003 ........................................................................ 27004 ........................................................................ 27005 ........................................................................ 27006 ........................................................................ 27007 ........................................................................ 27008 ........................................................................ 27009 ........................................................................ 27010 ........................................................................ 27011 ........................................................................ 27012 ........................................................................ 27013 ........................................................................ 27014 ........................................................................ 27015 ........................................................................ 27016 ........................................................................ 27017 ........................................................................ 27018 ........................................................................ 27019 ........................................................................ 27020 ........................................................................ 27021 ........................................................................ 27022 ........................................................................ 27023 ........................................................................ 27024 ........................................................................ 27025 ........................................................................ 27026 ........................................................................ 27027 ........................................................................ 27028 ........................................................................ 27029 ........................................................................ 27030 ........................................................................ 27031 ........................................................................ 27032 ........................................................................ 27033 ........................................................................ 27034 ........................................................................ 27035 ........................................................................ 27036 ........................................................................ 27037 ........................................................................ 27038 ........................................................................ 27039 ........................................................................ 27040 ........................................................................ 27041 ........................................................................ 27042 ........................................................................ 27043 ........................................................................ 27044 ........................................................................ 27045 ........................................................................ 27046 ........................................................................ 27047 ........................................................................ 27048 ........................................................................ 27049 ........................................................................ 27050 ........................................................................ 27051 ........................................................................ 27052 ........................................................................ 27053 ........................................................................ 27054 ........................................................................ 27055 ........................................................................ 27056 ........................................................................ 27057 ........................................................................ 27058 ........................................................................ 27059 ........................................................................ 27060 ........................................................................ 27061 ........................................................................ 27062 ........................................................................ 27063 ........................................................................ 27064 ........................................................................ 27065 ........................................................................ 27066 ........................................................................ 27067 ........................................................................ 27068 ........................................................................ 27069 ........................................................................ 27070 ........................................................................ 27071 ........................................................................ 27072 ........................................................................ 27073 ........................................................................ 27074 ........................................................................ 27075 ........................................................................ 27076 ........................................................................ 27077 ........................................................................ 27078 ........................................................................ 27079 ........................................................................ 27080 ........................................................................ 27081 ........................................................................ 27082 ........................................................................ 27083 ........................................................................ 27084 ........................................................................ 27085 ........................................................................ 27086 ........................................................................ 27087 ........................................................................ 27088 ........................................................................ 27089 ........................................................................ 27090 ........................................................................ 27091 ........................................................................ 27092 ........................................................................ 27093 ........................................................................ 27094 ........................................................................ 27095 ........................................................................ 27096 ........................................................................ 27097 ........................................................................ 27098 ........................................................................ 27099 ........................................................................ 27100 ........................................................................ 27101 ........................................................................ 27102 ........................................................................ 27103 ........................................................................ 27104 ........................................................................ 27105 ........................................................................ 27106 ........................................................................ 27107 ........................................................................ 27108 ........................................................................ 27109 ........................................................................ 27110 ........................................................................ 27111 ........................................................................ 27112 ........................................................................ 27113 ........................................................................ 27114 ........................................................................ 27115 ........................................................................ 27116 ........................................................................ 27117 ........................................................................ 27118 ........................................................................ 27119 ........................................................................ 27120 ........................................................................ 27121 ........................................................................ 27122 ........................................................................ 27123 ........................................................................ 27124 ........................................................................ 27125 ........................................................................ 27126 ........................................................................ 27127 ........................................................................ 27128 ........................................................................ 27129 ........................................................................ 27130 ........................................................................ 27131 ........................................................................ 27132 ........................................................................ 27133 ........................................................................ 27134 ........................................................................ 27135 ........................................................................ 27136 ........................................................................ 27137 ........................................................................ 27138 ........................................................................ 27139 ........................................................................ 27140 ........................................................................ 27141 ........................................................................ 27142 ........................................................................ 27143 ........................................................................ 27144 ........................................................................ 27145 ........................................................................ 27146 ........................................................................ 27147 ........................................................................ 27148 ........................................................................ 27149 ........................................................................ 27150 ........................................................................ 27151 ........................................................................ 27152 ........................................................................ 27153 ........................................................................ 27154 ........................................................................ 27155 ........................................................................ 27156 ........................................................................ 27157 ........................................................................ 27158 ........................................................................ 27159 ........................................................................ 27160 ........................................................................ 27161 ........................................................................ 27162 ........................................................................ 27163 ........................................................................ 27164 ........................................................................ 27165 ........................................................................ 27166 ........................................................................ 27167 ........................................................................ 27168 ........................................................................ 27169 ........................................................................ 27170 ........................................................................ 27171 ........................................................................ 27172 ........................................................................ 27173 ........................................................................ 27174 ........................................................................ 27175 ........................................................................ 27176 ........................................................................ 27177 ........................................................................ 27178 ........................................................................ 27179 ........................................................................ 27180 ........................................................................ 27181 ........................................................................ 27182 ........................................................................ 27183 ........................................................................ 27184 ........................................................................ 27185 ........................................................................ 27186 ........................................................................ 27187 ........................................................................ 27188 ........................................................................ 27189 ........................................................................ 27190 ........................................................................ 27191 ........................................................................ 27192 ........................................................................ 27193 ........................................................................ 27194 ........................................................................ 27195 ........................................................................ 27196 ........................................................................ 27197 ........................................................................ 27198 ........................................................................ 27199 ........................................................................ 27200 ........................................................................ 27201 ........................................................................ 27202 ........................................................................ 27203 ........................................................................ 27204 ........................................................................ 27205 ........................................................................ 27206 ........................................................................ 27207 ........................................................................ 27208 ........................................................................ 27209 ........................................................................ 27210 ........................................................................ 27211 ........................................................................ 27212 ........................................................................ 27213 ........................................................................ 27214 ........................................................................ 27215 ........................................................................ 27216 ........................................................................ 27217 ........................................................................ 27218 ........................................................................ 27219 ........................................................................ 27220 ........................................................................ 27221 ........................................................................ 27222 ........................................................................ 27223 ........................................................................ 27224 ........................................................................ 27225 ........................................................................ 27226 ........................................................................ 27227 ........................................................................ 27228 ........................................................................ 27229 ........................................................................ 27230 ........................................................................ 27231 ........................................................................ 27232 ........................................................................ 27233 ........................................................................ 27234 ........................................................................ 27235 ........................................................................ 27236 ........................................................................ 27237 ........................................................................ 27238 ........................................................................ 27239 ........................................................................ 27240 ........................................................................ 27241 ........................................................................ 27242 ........................................................................ 27243 ........................................................................ 27244 ........................................................................ 27245 ........................................................................ 27246 ........................................................................ 27247 ........................................................................ 27248 ........................................................................ 27249 ........................................................................ 27250 ........................................................................ 27251 ........................................................................ 27252 ........................................................................ 27253 ........................................................................ 27254 ........................................................................ 27255 ........................................................................ 27256 ........................................................................ 27257 ........................................................................ 27258 ........................................................................ 27259 ........................................................................ 27260 ........................................................................ 27261 ........................................................................ 27262 ........................................................................ 27263 ........................................................................ 27264 ........................................................................ 27265 ........................................................................ 27266 ........................................................................ 27267 ........................................................................ 27268 ........................................................................ 27269 ........................................................................ 27270 ........................................................................ 27271 ........................................................................ 27272 ........................................................................ 27273 ........................................................................ 27274 ........................................................................ 27275 ........................................................................ 27276 ........................................................................ 27277 ........................................................................ 27278 ........................................................................ 27279 ........................................................................ 27280 ........................................................................ 27281 ........................................................................ 27282 ........................................................................ 27283 ........................................................................ 27284 ........................................................................ 27285 ........................................................................ 27286 ........................................................................ 27287 ........................................................................ 27288 ........................................................................ 27289 ........................................................................ 27290 ........................................................................ 27291 ........................................................................ 27292 ........................................................................ 27293 ........................................................................ 27294 ........................................................................ 27295 ........................................................................ 27296 ........................................................................ 27297 ........................................................................ 27298 ........................................................................ 27299 ........................................................................ 27300 ........................................................................ 27301 ........................................................................ 27302 ........................................................................ 27303 ........................................................................ 27304 ........................................................................ 27305 ........................................................................ 27306 ........................................................................ 27307 ........................................................................ 27308 ........................................................................ 27309 ........................................................................ 27310 ........................................................................ 27311 ........................................................................ 27312 ........................................................................ 27313 ........................................................................ 27314 ........................................................................ 27315 ........................................................................ 27316 ........................................................................ 27317 ........................................................................ 27318 ........................................................................ 27319 ........................................................................ 27320 ........................................................................ 27321 ........................................................................ 27322 ........................................................................ 27323 ........................................................................ 27324 ........................................................................ 27325 ........................................................................ 27326 ........................................................................ 27327 ........................................................................ 27328 ........................................................................ 27329 ........................................................................ 27330 ........................................................................ 27331 ........................................................................ 27332 ........................................................................ 27333 ........................................................................ 27334 ........................................................................ 27335 ........................................................................ 27336 ........................................................................ 27337 ........................................................................ 27338 ........................................................................ 27339 ........................................................................ 27340 ........................................................................ 27341 ........................................................................ 27342 ........................................................................ 27343 ........................................................................ 27344 ........................................................................ 27345 ........................................................................ 27346 ........................................................................ 27347 ........................................................................ 27348 ........................................................................ 27349 ........................................................................ 27350 ........................................................................ 27351 ........................................................................ 27352 ........................................................................ 27353 ........................................................................ 27354 ........................................................................ 27355 ........................................................................ 27356 ........................................................................ 27357 ........................................................................ 27358 ........................................................................ 27359 ........................................................................ 27360 ........................................................................ 27361 ........................................................................ 27362 ........................................................................ 27363 ........................................................................ 27364 ........................................................................ 27365 ........................................................................ 27366 ........................................................................ 27367 ........................................................................ 27368 ........................................................................ 27369 ........................................................................ 27370 ........................................................................ 27371 ........................................................................ 27372 ........................................................................ 27373 ........................................................................ 27374 ........................................................................ 27375 ........................................................................ 27376 ........................................................................ 27377 ........................................................................ 27378 ........................................................................ 27379 ........................................................................ 27380 ........................................................................ 27381 ........................................................................ 27382 ........................................................................ 27383 ........................................................................ 27384 ........................................................................ 27385 ........................................................................ 27386 ........................................................................ 27387 ........................................................................ 27388 ........................................................................ 27389 ........................................................................ 27390 ........................................................................ 27391 ........................................................................ 27392 ........................................................................ 27393 ........................................................................ 27394 ........................................................................ 27395 ........................................................................ 27396 ........................................................................ 27397 ........................................................................ 27398 ........................................................................ 27399 ........................................................................ 27400 ........................................................................ 27401 ........................................................................ 27402 ........................................................................ 27403 ........................................................................ 27404 ........................................................................ 27405 ........................................................................ 27406 ........................................................................ 27407 ........................................................................ 27408 ........................................................................ 27409 ........................................................................ 27410 ........................................................................ 27411 ........................................................................ 27412 ........................................................................ 27413 ........................................................................ 27414 ........................................................................ 27415 ........................................................................ 27416 ........................................................................ 27417 ........................................................................ 27418 ........................................................................ 27419 ........................................................................ 27420 ........................................................................ 27421 ........................................................................ 27422 ........................................................................ 27423 ........................................................................ 27424 ........................................................................ 27425 ........................................................................ 27426 ........................................................................ 27427 ........................................................................ 27428 ........................................................................ 27429 ........................................................................ 27430 ........................................................................ 27431 ........................................................................ 27432 ........................................................................ 27433 ........................................................................ 27434 ........................................................................ 27435 ........................................................................ 27436 ........................................................................ 27437 ........................................................................ 27438 ........................................................................ 27439 ........................................................................ 27440 ........................................................................ 27441 ........................................................................ 27442 ........................................................................ 27443 ........................................................................ 27444 ........................................................................ 27445 ........................................................................ 27446 ........................................................................ 27447 ........................................................................ 27448 ........................................................................ 27449 ........................................................................ 27450 ........................................................................ 27451 ........................................................................ 27452 ........................................................................ 27453 ........................................................................ 27454 ........................................................................ 27455 ........................................................................ 27456 ........................................................................ 27457 ........................................................................ 27458 ........................................................................ 27459 ........................................................................ 27460 ........................................................................ 27461 ........................................................................ 27462 ........................................................................ 27463 ........................................................................ 27464 ........................................................................ 27465 ........................................................................ 27466 ........................................................................ 27467 ........................................................................ 27468 ........................................................................ 27469 ........................................................................ 27470 ........................................................................ 27471 ........................................................................ 27472 ........................................................................ 27473 ........................................................................ 27474 ........................................................................ 27475 ........................................................................ 27476 ........................................................................ 27477 ........................................................................ 27478 ........................................................................ 27479 ........................................................................ 27480 ........................................................................ 27481 ........................................................................ 27482 ........................................................................ 27483 ........................................................................ 27484 ........................................................................ 27485 ........................................................................ 27486 ........................................................................ 27487 ........................................................................ 27488 ........................................................................ 27489 ........................................................................ 27490 ........................................................................ 27491 ........................................................................ 27492 ........................................................................ 27493 ........................................................................ 27494 ........................................................................ 27495 ........................................................................ 27496 ........................................................................ 27497 ........................................................................ 27498 ........................................................................ 27499 ........................................................................ 27500 ........................................................................ 27501 ........................................................................ 27502 ........................................................................ 27503 ........................................................................ 27504 ........................................................................ 27505 ........................................................................ 27506 ........................................................................ 27507 ........................................................................ 27508 ........................................................................ 27509 ........................................................................ 27510 ........................................................................ 27511 ........................................................................ 27512 ........................................................................ 27513 ........................................................................ 27514 ........................................................................ 27515 ........................................................................ 27516 ........................................................................ 27517 ........................................................................ 27518 ........................................................................ 27519 ........................................................................ 27520 ........................................................................ 27521 ........................................................................ 27522 ........................................................................ 27523 ........................................................................ 27524 ........................................................................ 27525 ........................................................................ 27526 ........................................................................ 27527 ........................................................................ 27528 ........................................................................ 27529 ........................................................................ 27530 ........................................................................ 27531 ........................................................................ 27532 ........................................................................ 27533 ........................................................................ 27534 ........................................................................ 27535 ........................................................................ 27536 ........................................................................ 27537 ........................................................................ 27538 ........................................................................ 27539 ........................................................................ 27540 ........................................................................ 27541 ........................................................................ 27542 ........................................................................ 27543 ........................................................................ 27544 ........................................................................ 27545 ........................................................................ 27546 ........................................................................ 27547 ........................................................................ 27548 ........................................................................ 27549 ........................................................................ 27550 ........................................................................ 27551 ........................................................................ 27552 ........................................................................ 27553 ........................................................................ 27554 ........................................................................ 27555 ........................................................................ 27556 ........................................................................ 27557 ........................................................................ 27558 ........................................................................ 27559 ........................................................................ 27560 ........................................................................ 27561 ........................................................................ 27562 ........................................................................ 27563 ........................................................................ 27564 ........................................................................ 27565 ........................................................................ 27566 ........................................................................ 27567 ........................................................................ 27568 ........................................................................ 27569 ........................................................................ 27570 ........................................................................ 27571 ........................................................................ 27572 ........................................................................ 27573 ........................................................................ 27574 ........................................................................ 27575 ........................................................................ 27576 ........................................................................ 27577 ........................................................................ 27578 ........................................................................ 27579 ........................................................................ 27580 ........................................................................ 27581 ........................................................................ 27582 ........................................................................ 27583 ........................................................................ 27584 ........................................................................ 27585 ........................................................................ 27586 ........................................................................ 27587 ........................................................................ 27588 ........................................................................ 27589 ........................................................................ 27590 ........................................................................ 27591 ........................................................................ 27592 ........................................................................ 27593 ........................................................................ 27594 ........................................................................ 27595 ........................................................................ 27596 ........................................................................ 27597 ........................................................................ 27598 ........................................................................ 27599 ........................................................................ 27600 ........................................................................ 27601 ........................................................................ 27602 ........................................................................ 27603 ........................................................................ 27604 ........................................................................ 27605 ........................................................................ 27606 ........................................................................ 27607 ........................................................................ 27608 ........................................................................ 27609 ........................................................................ 27610 ........................................................................ 27611 ........................................................................ 27612 ........................................................................ 27613 ........................................................................ 27614 ........................................................................ 27615 ........................................................................ 27616 ........................................................................ 27617 ........................................................................ 27618 ........................................................................ 27619 ........................................................................ 27620 ........................................................................ 27621 ........................................................................ 27622 ........................................................................ 27623 ........................................................................ 27624 ........................................................................ 27625 ........................................................................ 27626 ........................................................................ 27627 ........................................................................ 27628 ........................................................................ 27629 ........................................................................ 27630 ........................................................................ 27631 ........................................................................ 27632 ........................................................................ 27633 ........................................................................ 27634 ........................................................................ 27635 ........................................................................ 27636 ........................................................................ 27637 ........................................................................ 27638 ........................................................................ 27639 ........................................................................ 27640 ........................................................................ 27641 ........................................................................ 27642 ........................................................................ 27643 ........................................................................ 27644 ........................................................................ 27645 ........................................................................ 27646 ........................................................................ 27647 ........................................................................ 27648 ........................................................................ 27649 ........................................................................ 27650 ........................................................................ 27651 ........................................................................ 27652 ........................................................................ 27653 ........................................................................ 27654 ........................................................................ 27655 ........................................................................ 27656 ........................................................................ 27657 ........................................................................ 27658 ........................................................................ 27659 ........................................................................ 27660 ........................................................................ 27661 ........................................................................ 27662 ........................................................................ 27663 ........................................................................ 27664 ........................................................................ 27665 ........................................................................ 27666 ........................................................................ 27667 ........................................................................ 27668 ........................................................................ 27669 ........................................................................ 27670 ........................................................................ 27671 ........................................................................ 27672 ........................................................................ 27673 ........................................................................ 27674 ........................................................................ 27675 ........................................................................ 27676 ........................................................................ 27677 ........................................................................ 27678 ........................................................................ 27679 ........................................................................ 27680 ........................................................................ 27681 ........................................................................ 27682 ........................................................................ 27683 ........................................................................ 27684 ........................................................................ 27685 ........................................................................ 27686 ........................................................................ 27687 ........................................................................ 27688 ........................................................................ 27689 ........................................................................ 27690 ........................................................................ 27691 ........................................................................ 27692 ........................................................................ 27693 ........................................................................ 27694 ........................................................................ 27695 ........................................................................ 27696 ........................................................................ 27697 ........................................................................ 27698 ........................................................................ 27699 ........................................................................ 27700 ........................................................................ 27701 ........................................................................ 27702 ........................................................................ 27703 ........................................................................ 27704 ........................................................................ 27705 ........................................................................ 27706 ........................................................................ 27707 ........................................................................ 27708 ........................................................................ 27709 ........................................................................ 27710 ........................................................................ 27711 ........................................................................ 27712 ........................................................................ 27713 ........................................................................ 27714 ........................................................................ 27715 ........................................................................ 27716 ........................................................................ 27717 ........................................................................ 27718 ........................................................................ 27719 ........................................................................ 27720 ........................................................................ 27721 ........................................................................ 27722 ........................................................................ 27723 ........................................................................ 27724 ........................................................................ 27725 ........................................................................ 27726 ........................................................................ 27727 ........................................................................ 27728 ........................................................................ 27729 ........................................................................ 27730 ........................................................................ 27731 ........................................................................ 27732 ........................................................................ 27733 ........................................................................ 27734 ........................................................................ 27735 ........................................................................ 27736 ........................................................................ 27737 ........................................................................ 27738 ........................................................................ 27739 ........................................................................ 27740 ........................................................................ 27741 ........................................................................ 27742 ........................................................................ 27743 ........................................................................ 27744 ........................................................................ 27745 ........................................................................ 27746 ........................................................................ 27747 ........................................................................ 27748 ........................................................................ 27749 ........................................................................ 27750 ........................................................................ 27751 ........................................................................ 27752 ........................................................................ 27753 ........................................................................ 27754 ........................................................................ 27755 ........................................................................ 27756 ........................................................................ 27757 ........................................................................ 27758 ........................................................................ 27759 ........................................................................ 27760 ........................................................................ 27761 ........................................................................ 27762 ........................................................................ 27763 ........................................................................ 27764 ........................................................................ 27765 ........................................................................ 27766 ........................................................................ 27767 ........................................................................ 27768 ........................................................................ 27769 ........................................................................ 27770 ........................................................................ 27771 ........................................................................ 27772 ........................................................................ 27773 ........................................................................ 27774 ........................................................................ 27775 ........................................................................ 27776 ........................................................................ 27777 ........................................................................ 27778 ........................................................................ 27779 ........................................................................ 27780 ........................................................................ 27781 ........................................................................ 27782 ........................................................................ 27783 ........................................................................ 27784 ........................................................................ 27785 ........................................................................ 27786 ........................................................................ 27787 ........................................................................ 27788 ........................................................................ 27789 ........................................................................ 27790 ........................................................................ 27791 ........................................................................ 27792 ........................................................................ 27793 ........................................................................ 27794 ........................................................................ 27795 ........................................................................ 27796 ........................................................................ 27797 ........................................................................ 27798 ........................................................................ 27799 ........................................................................ 27800 ........................................................................ 27801 ........................................................................ 27802 ........................................................................ 27803 ........................................................................ 27804 ........................................................................ 27805 ........................................................................ 27806 ........................................................................ 27807 ........................................................................ 27808 ........................................................................ 27809 ........................................................................ 27810 ........................................................................ 27811 ........................................................................ 27812 ........................................................................ 27813 ........................................................................ 27814 ........................................................................ 27815 ........................................................................ 27816 ........................................................................ 27817 ........................................................................ 27818 ........................................................................ 27819 ........................................................................ 27820 ........................................................................ 27821 ........................................................................ 27822 ........................................................................ 27823 ........................................................................ 27824 ........................................................................ 27825 ........................................................................ 27826 ........................................................................ 27827 ........................................................................ 27828 ........................................................................ 27829 ........................................................................ 27830 ........................................................................ 27831 ........................................................................ 27832 ........................................................................ 27833 ........................................................................ 27834 ........................................................................ 27835 ........................................................................ 27836 ........................................................................ 27837 ........................................................................ 27838 ........................................................................ 27839 ........................................................................ 27840 ........................................................................ 27841 ........................................................................ 27842 ........................................................................ 27843 ........................................................................ 27844 ........................................................................ 27845 ........................................................................ 27846 ........................................................................ 27847 ........................................................................ 27848 ........................................................................ 27849 ........................................................................ 27850 ........................................................................ 27851 ........................................................................ 27852 ........................................................................ 27853 ........................................................................ 27854 ........................................................................ 27855 ........................................................................ 27856 ........................................................................ 27857 ........................................................................ 27858 ........................................................................ 27859 ........................................................................ 27860 ........................................................................ 27861 ........................................................................ 27862 ........................................................................ 27863 ........................................................................ 27864 ........................................................................ 27865 ........................................................................ 27866 ........................................................................ 27867 ........................................................................ 27868 ........................................................................ 27869 ........................................................................ 27870 ........................................................................ 27871 ........................................................................ 27872 ........................................................................ 27873 ........................................................................ 27874 ........................................................................ 27875 ........................................................................ 27876 ........................................................................ 27877 ........................................................................ 27878 ........................................................................ 27879 ........................................................................ 27880 ........................................................................ 27881 ........................................................................ 27882 ........................................................................ 27883 ........................................................................ 27884 ........................................................................ 27885 ........................................................................ 27886 ........................................................................ 27887 ........................................................................ 27888 ........................................................................ 27889 ........................................................................ 27890 ........................................................................ 27891 ........................................................................ 27892 ........................................................................ 27893 ........................................................................ 27894 ........................................................................ 27895 ........................................................................ 27896 ........................................................................ 27897 ........................................................................ 27898 ........................................................................ 27899 ........................................................................ 27900 ........................................................................ 27901 ........................................................................ 27902 ........................................................................ 27903 ........................................................................ 27904 ........................................................................ 27905 ........................................................................ 27906 ........................................................................ 27907 ........................................................................ 27908 ........................................................................ 27909 ........................................................................ 27910 ........................................................................ 27911 ........................................................................ 27912 ........................................................................ 27913 ........................................................................ 27914 ........................................................................ 27915 ........................................................................ 27916 ........................................................................ 27917 ........................................................................ 27918 ........................................................................ 27919 ........................................................................ 27920 ........................................................................ 27921 ........................................................................ 27922 ........................................................................ 27923 ........................................................................ 27924 ........................................................................ 27925 ........................................................................ 27926 ........................................................................ 27927 ........................................................................ 27928 ........................................................................ 27929 ........................................................................ 27930 ........................................................................ 27931 ........................................................................ 27932 ........................................................................ 27933 ........................................................................ 27934 ........................................................................ 27935 ........................................................................ 27936 ........................................................................ 27937 ........................................................................ 27938 ........................................................................ 27939 ........................................................................ 27940 ........................................................................ 27941 ........................................................................ 27942 ........................................................................ 27943 ........................................................................ 27944 ........................................................................ 27945 ........................................................................ 27946 ........................................................................ 27947 ........................................................................ 27948 ........................................................................ 27949 ........................................................................ 27950 ........................................................................ 27951 ........................................................................ 27952 ........................................................................ 27953 ........................................................................ 27954 ........................................................................ 27955 ........................................................................ 27956 ........................................................................ 27957 ........................................................................ 27958 ........................................................................ 27959 ........................................................................ 27960 ........................................................................ 27961 ........................................................................ 27962 ........................................................................ 27963 ........................................................................ 27964 ........................................................................ 27965 ........................................................................ 27966 ........................................................................ 27967 ........................................................................ 27968 ........................................................................ 27969 ........................................................................ 27970 ........................................................................ 27971 ........................................................................ 27972 ........................................................................ 27973 ........................................................................ 27974 ........................................................................ 27975 ........................................................................ 27976 ........................................................................ 27977 ........................................................................ 27978 ........................................................................ 27979 ........................................................................ 27980 ........................................................................ 27981 ........................................................................ 27982 ........................................................................ 27983 ........................................................................ 27984 ........................................................................ 27985 ........................................................................ 27986 ........................................................................ 27987 ........................................................................ 27988 ........................................................................ 27989 ........................................................................ 27990 ........................................................................ 27991 ........................................................................ 27992 ........................................................................ 27993 ........................................................................ 27994 ........................................................................ 27995 ........................................................................ 27996 ........................................................................ 27997 ........................................................................ 27998 ........................................................................ 27999 ........................................................................ 28000 ........................................................................ 28001 ........................................................................ 28002 ........................................................................ 28003 ........................................................................ 28004 ........................................................................ 28005 ........................................................................ 28006 ........................................................................ 28007 ........................................................................ 28008 ........................................................................ 28009 ........................................................................ 28010 ........................................................................ 28011 ........................................................................ 28012 ........................................................................ 28013 ........................................................................ 28014 ........................................................................ 28015 ........................................................................ 28016 ........................................................................ 28017 ........................................................................ 28018 ........................................................................ 28019 ........................................................................ 28020 ........................................................................ 28021 ........................................................................ 28022 ........................................................................ 28023 ........................................................................ 28024 ........................................................................ 28025 ........................................................................ 28026 ........................................................................ 28027 ........................................................................ 28028 ........................................................................ 28029 ........................................................................ 28030 ........................................................................ 28031 ........................................................................ 28032 ........................................................................ 28033 ........................................................................ 28034 ........................................................................ 28035 ........................................................................ 28036 ........................................................................ 28037 ........................................................................ 28038 ........................................................................ 28039 ........................................................................ 28040 ........................................................................ 28041 ........................................................................ 28042 ........................................................................ 28043 ........................................................................ 28044 ........................................................................ 28045 ........................................................................ 28046 ........................................................................ 28047 ........................................................................ 28048 ........................................................................ 28049 ........................................................................ 28050 ........................................................................ 28051 ........................................................................ 28052 ........................................................................ 28053 ........................................................................ 28054 ........................................................................ 28055 ........................................................................ 28056 ........................................................................ 28057 ........................................................................ 28058 ........................................................................ 28059 ........................................................................ 28060 ........................................................................ 28061 ........................................................................ 28062 ........................................................................ 28063 ........................................................................ 28064 ........................................................................ 28065 ........................................................................ 28066 ........................................................................ 28067 ........................................................................ 28068 ........................................................................ 28069 ........................................................................ 28070 ........................................................................ 28071 ........................................................................ 28072 ........................................................................ 28073 ........................................................................ 28074 ........................................................................ 28075 ........................................................................ 28076 ........................................................................ 28077 ........................................................................ 28078 ........................................................................ 28079 ........................................................................ 28080 ........................................................................ 28081 ........................................................................ 28082 ........................................................................ 28083 ........................................................................ 28084 ........................................................................ 28085 ........................................................................ 28086 ........................................................................ 28087 ........................................................................ 28088 ........................................................................ 28089 ........................................................................ 28090 ........................................................................ 28091 ........................................................................ 28092 ........................................................................ 28093 ........................................................................ 28094 ........................................................................ 28095 ........................................................................ 28096 ........................................................................ 28097 ........................................................................ 28098 ........................................................................ 28099 ........................................................................ 28100 ........................................................................ 28101 ........................................................................ 28102 ........................................................................ 28103 ........................................................................ 28104 ........................................................................ 28105 ........................................................................ 28106 ........................................................................ 28107 ........................................................................ 28108 ........................................................................ 28109 ........................................................................ 28110 ........................................................................ 28111 ........................................................................ 28112 ........................................................................ 28113 ........................................................................ 28114 ........................................................................ 28115 ........................................................................ 28116 ........................................................................ 28117 ........................................................................ 28118 ........................................................................ 28119 ........................................................................ 28120 ........................................................................ 28121 ........................................................................ 28122 ........................................................................ 28123 ........................................................................ 28124 ........................................................................ 28125 ........................................................................ 28126 ........................................................................ 28127 ........................................................................ 28128 ........................................................................ 28129 ........................................................................ 28130 ........................................................................ 28131 ........................................................................ 28132 ........................................................................ 28133 ........................................................................ 28134 ........................................................................ 28135 ........................................................................ 28136 ........................................................................ 28137 ........................................................................ 28138 ........................................................................ 28139 ........................................................................ 28140 ........................................................................ 28141 ........................................................................ 28142 ........................................................................ 28143 ........................................................................ 28144 ........................................................................ 28145 ........................................................................ 28146 ........................................................................ 28147 ........................................................................ 28148 ........................................................................ 28149 ........................................................................ 28150 ........................................................................ 28151 ........................................................................ 28152 ........................................................................ 28153 ........................................................................ 28154 ........................................................................ 28155 ........................................................................ 28156 ........................................................................ 28157 ........................................................................ 28158 ........................................................................ 28159 ........................................................................ 28160 ........................................................................ 28161 ........................................................................ 28162 ........................................................................ 28163 ........................................................................ 28164 ........................................................................ 28165 ........................................................................ 28166 ........................................................................ 28167 ........................................................................ 28168 ........................................................................ 28169 ........................................................................ 28170 ........................................................................ 28171 ........................................................................ 28172 ........................................................................ 28173 ........................................................................ 28174 ........................................................................ 28175 ........................................................................ 28176 ........................................................................ 28177 ........................................................................ 28178 ........................................................................ 28179 ........................................................................ 28180 ........................................................................ 28181 ........................................................................ 28182 ........................................................................ 28183 ........................................................................ 28184 ........................................................................ 28185 ........................................................................ 28186 ........................................................................ 28187 ........................................................................ 28188 ........................................................................ 28189 ........................................................................ 28190 ........................................................................ 28191 ........................................................................ 28192 ........................................................................ 28193 ........................................................................ 28194 ........................................................................ 28195 ........................................................................ 28196 ........................................................................ 28197 ........................................................................ 28198 ........................................................................ 28199 ........................................................................ 28200 ........................................................................ 28201 ........................................................................ 28202 ........................................................................ 28203 ........................................................................ 28204 ........................................................................ 28205 ........................................................................ 28206 ........................................................................ 28207 ........................................................................ 28208 ........................................................................ 28209 ........................................................................ 28210 ........................................................................ 28211 ........................................................................ 28212 ........................................................................ 28213 ........................................................................ 28214 ........................................................................ 28215 ........................................................................ 28216 ........................................................................ 28217 ........................................................................ 28218 ........................................................................ 28219 ........................................................................ 28220 ........................................................................ 28221 ........................................................................ 28222 ........................................................................ 28223 ........................................................................ 28224 ........................................................................ 28225 ........................................................................ 28226 ........................................................................ 28227 ........................................................................ 28228 ........................................................................ 28229 ........................................................................ 28230 ........................................................................ 28231 ........................................................................ 28232 ........................................................................ 28233 ........................................................................ 28234 ........................................................................ 28235 ........................................................................ 28236 ........................................................................ 28237 ........................................................................ 28238 ........................................................................ 28239 ........................................................................ 28240 ........................................................................ 28241 ........................................................................ 28242 ........................................................................ 28243 ........................................................................ 28244 ........................................................................ 28245 ........................................................................ 28246 ........................................................................ 28247 ........................................................................ 28248 ........................................................................ 28249 ........................................................................ 28250 ........................................................................ 28251 ........................................................................ 28252 ........................................................................ 28253 ........................................................................ 28254 ........................................................................ 28255 ........................................................................ 28256 ........................................................................ 28257 ........................................................................ 28258 ........................................................................ 28259 ........................................................................ 28260 ........................................................................ 28261 ........................................................................ 28262 ........................................................................ 28263 ........................................................................ 28264 ........................................................................ 28265 ........................................................................ 28266 ........................................................................ 28267 ........................................................................ 28268 ........................................................................ 28269 ........................................................................ 28270 ........................................................................ 28271 ........................................................................ 28272 ........................................................................ 28273 ........................................................................ 28274 ........................................................................ 28275 ........................................................................ 28276 ........................................................................ 28277 ........................................................................ 28278 ........................................................................ 28279 ........................................................................ 28280 ........................................................................ 28281 ........................................................................ 28282 ........................................................................ 28283 ........................................................................ 28284 ........................................................................ 28285 ........................................................................ 28286 ........................................................................ 28287 ........................................................................ 28288 ........................................................................ 28289 ........................................................................ 28290 ........................................................................ 28291 ........................................................................ 28292 ........................................................................ 28293 ........................................................................ 28294 ........................................................................ 28295 ........................................................................ 28296 ........................................................................ 28297 ........................................................................ 28298 ........................................................................ 28299 ........................................................................ 28300 ........................................................................ 28301 ........................................................................ 28302 ........................................................................ 28303 ........................................................................ 28304 ........................................................................ 28305 ........................................................................ 28306 ........................................................................ 28307 ........................................................................ 28308 ........................................................................ 28309 ........................................................................ 28310 ........................................................................ 28311 ........................................................................ 28312 ........................................................................ 28313 ........................................................................ 28314 ........................................................................ 28315 ........................................................................ 28316 ........................................................................ 28317 ........................................................................ 28318 ........................................................................ 28319 ........................................................................ 28320 ........................................................................ 28321 ........................................................................ 28322 ........................................................................ 28323 ........................................................................ 28324 ........................................................................ 28325 ........................................................................ 28326 ........................................................................ 28327 ........................................................................ 28328 ........................................................................ 28329 ........................................................................ 28330 ........................................................................ 28331 ........................................................................ 28332 ........................................................................ 28333 ........................................................................ 28334 ........................................................................ 28335 ........................................................................ 28336 ........................................................................ 28337 ........................................................................ 28338 ........................................................................ 28339 ........................................................................ 28340 ........................................................................ 28341 ........................................................................ 28342 ........................................................................ 28343 ........................................................................ 28344 ........................................................................ 28345 ........................................................................ 28346 ........................................................................ 28347 ........................................................................ 28348 ........................................................................ 28349 ........................................................................ 28350 ........................................................................ 28351 ........................................................................ 28352 ........................................................................ 28353 ........................................................................ 28354 ........................................................................ 28355 ........................................................................ 28356 ........................................................................ 28357 ........................................................................ 28358 ........................................................................ 28359 ........................................................................ 28360 ........................................................................ 28361 ........................................................................ 28362 ........................................................................ 28363 ........................................................................ 28364 ........................................................................ 28365 ........................................................................ 28366 ........................................................................ 28367 ........................................................................ 28368 ........................................................................ 28369 ........................................................................ 28370 ........................................................................ 28371 ........................................................................ 28372 ........................................................................ 28373 ........................................................................ 28374 ........................................................................ 28375 ........................................................................ 28376 ........................................................................ 28377 ........................................................................ 28378 ........................................................................ 28379 ........................................................................ 28380 ........................................................................ 28381 ........................................................................ 28382 ........................................................................ 28383 ........................................................................ 28384 ........................................................................ 28385 ........................................................................ 28386 ........................................................................ 28387 ........................................................................ 28388 ........................................................................ 28389 ........................................................................ 28390 ........................................................................ 28391 ........................................................................ 28392 ........................................................................ 28393 ........................................................................ 28394 ........................................................................ 28395 ........................................................................ 28396 ........................................................................ 28397 ........................................................................ 28398 ........................................................................ 28399 ........................................................................ 28400 ........................................................................ 28401 ........................................................................ 28402 ........................................................................ 28403 ........................................................................ 28404 ........................................................................ 28405 ........................................................................ 28406 ........................................................................ 28407 ........................................................................ 28408 ........................................................................ 28409 ........................................................................ 28410 ........................................................................ 28411 ........................................................................ 28412 ........................................................................ 28413 ........................................................................ 28414 ........................................................................ 28415 ........................................................................ 28416 ........................................................................ 28417 ........................................................................ 28418 ........................................................................ 28419 ........................................................................ 28420 ........................................................................ 28421 ........................................................................ 28422 ........................................................................ 28423 ........................................................................ 28424 ........................................................................ 28425 ........................................................................ 28426 ........................................................................ 28427 ........................................................................ 28428 ........................................................................ 28429 ........................................................................ 28430 ........................................................................ 28431 ........................................................................ 28432 ........................................................................ 28433 ........................................................................ 28434 ........................................................................ 28435 ........................................................................ 28436 ........................................................................ 28437 ........................................................................ 28438 ........................................................................ 28439 ........................................................................ 28440 ........................................................................ 28441 ........................................................................ 28442 ........................................................................ 28443 ........................................................................ 28444 ........................................................................ 28445 ........................................................................ 28446 ........................................................................ 28447 ........................................................................ 28448 ........................................................................ 28449 ........................................................................ 28450 ........................................................................ 28451 ........................................................................ 28452 ........................................................................ 28453 ........................................................................ 28454 ........................................................................ 28455 ........................................................................ 28456 ........................................................................ 28457 ........................................................................ 28458 ........................................................................ 28459 ........................................................................ 28460 ........................................................................ 28461 ........................................................................ 28462 ........................................................................ 28463 ........................................................................ 28464 ........................................................................ 28465 ........................................................................ 28466 ........................................................................ 28467 ........................................................................ 28468 ........................................................................ 28469 ........................................................................ 28470 ........................................................................ 28471 ........................................................................ 28472 ........................................................................ 28473 ........................................................................ 28474 ........................................................................ 28475 ........................................................................ 28476 ........................................................................ 28477 ........................................................................ 28478 ........................................................................ 28479 ........................................................................ 28480 ........................................................................ 28481 ........................................................................ 28482 ........................................................................ 28483 ........................................................................ 28484 ........................................................................ 28485 ........................................................................ 28486 ........................................................................ 28487 ........................................................................ 28488 ........................................................................ 28489 ........................................................................ 28490 ........................................................................ 28491 ........................................................................ 28492 ........................................................................ 28493 ........................................................................ 28494 ........................................................................ 28495 ........................................................................ 28496 ........................................................................ 28497 ........................................................................ 28498 ........................................................................ 28499 ........................................................................ 28500 ........................................................................ 28501 ........................................................................ 28502 ........................................................................ 28503 ........................................................................ 28504 ........................................................................ 28505 ........................................................................ 28506 ........................................................................ 28507 ........................................................................ 28508 ........................................................................ 28509 ........................................................................ 28510 ........................................................................ 28511 ........................................................................ 28512 ........................................................................ 28513 ........................................................................ 28514 ........................................................................ 28515 ........................................................................ 28516 ........................................................................ 28517 ........................................................................ 28518 ........................................................................ 28519 ........................................................................ 28520 ........................................................................ 28521 ........................................................................ 28522 ........................................................................ 28523 ........................................................................ 28524 ........................................................................ 28525 ........................................................................ 28526 ........................................................................ 28527 ........................................................................ 28528 ........................................................................ 28529 ........................................................................ 28530 ........................................................................ 28531 ........................................................................ 28532 ........................................................................ 28533 ........................................................................ 28534 ........................................................................ 28535 ........................................................................ 28536 ........................................................................ 28537 ........................................................................ 28538 ........................................................................ 28539 ........................................................................ 28540 ........................................................................ 28541 ........................................................................ 28542 ........................................................................ 28543 ........................................................................ 28544 ........................................................................ 28545 ........................................................................ 28546 ........................................................................ 28547 ........................................................................ 28548 ........................................................................ 28549 ........................................................................ 28550 ........................................................................ 28551 ........................................................................ 28552 ........................................................................ 28553 ........................................................................ 28554 ........................................................................ 28555 ........................................................................ 28556 ........................................................................ 28557 ........................................................................ 28558 ........................................................................ 28559 ........................................................................ 28560 ........................................................................ 28561 ........................................................................ 28562 ........................................................................ 28563 ........................................................................ 28564 ........................................................................ 28565 ........................................................................ 28566 ........................................................................ 28567 ........................................................................ 28568 ........................................................................ 28569 ........................................................................ 28570 ........................................................................ 28571 ........................................................................ 28572 ........................................................................ 28573 ........................................................................ 28574 ........................................................................ 28575 ........................................................................ 28576 ........................................................................ 28577 ........................................................................ 28578 ........................................................................ 28579 ........................................................................ 28580 ........................................................................ 28581 ........................................................................ 28582 ........................................................................ 28583 ........................................................................ 28584 ........................................................................ 28585 ........................................................................ 28586 ........................................................................ 28587 ........................................................................ 28588 ........................................................................ 28589 ........................................................................ 28590 ........................................................................ 28591 ........................................................................ 28592 ........................................................................ 28593 ........................................................................ 28594 ........................................................................ 28595 ........................................................................ 28596 ........................................................................ 28597 ........................................................................ 28598 ........................................................................ 28599 ........................................................................ 28600 ........................................................................ 28601 ........................................................................ 28602 ........................................................................ 28603 ........................................................................ 28604 ........................................................................ 28605 ........................................................................ 28606 ........................................................................ 28607 ........................................................................ 28608 ........................................................................ 28609 ........................................................................ 28610 ........................................................................ 28611 ........................................................................ 28612 ........................................................................ 28613 ........................................................................ 28614 ........................................................................ 28615 ........................................................................ 28616 ........................................................................ 28617 ........................................................................ 28618 ........................................................................ 28619 ........................................................................ 28620 ........................................................................ 28621 ........................................................................ 28622 ........................................................................ 28623 ........................................................................ 28624 ........................................................................ 28625 ........................................................................ 28626 ........................................................................ 28627 ........................................................................ 28628 ........................................................................ 28629 ........................................................................ 28630 ........................................................................ 28631 ........................................................................ 28632 ........................................................................ 28633 ........................................................................ 28634 ........................................................................ 28635 ........................................................................ 28636 ........................................................................ 28637 ........................................................................ 28638 ........................................................................ 28639 ........................................................................ 28640 ........................................................................ 28641 ........................................................................ 28642 ........................................................................ 28643 ........................................................................ 28644 ........................................................................ 28645 ........................................................................ 28646 ........................................................................ 28647 ........................................................................ 28648 ........................................................................ 28649 ........................................................................ 28650 ........................................................................ 28651 ........................................................................ 28652 ........................................................................ 28653 ........................................................................ 28654 ........................................................................ 28655 ........................................................................ 28656 ........................................................................ 28657 ........................................................................ 28658 ........................................................................ 28659 ........................................................................ 28660 ........................................................................ 28661 ........................................................................ 28662 ........................................................................ 28663 ........................................................................ 28664 ........................................................................ 28665 ........................................................................ 28666 ........................................................................ 28667 ........................................................................ 28668 ........................................................................ 28669 ........................................................................ 28670 ........................................................................ 28671 ........................................................................ 28672 ........................................................................ 28673 ........................................................................ 28674 ........................................................................ 28675 ........................................................................ 28676 ........................................................................ 28677 ........................................................................ 28678 ........................................................................ 28679 ........................................................................ 28680 ........................................................................ 28681 ........................................................................ 28682 ........................................................................ 28683 ........................................................................ 28684 ........................................................................ 28685 ........................................................................ 28686 ........................................................................ 28687 ........................................................................ 28688 ........................................................................ 28689 ........................................................................ 28690 ........................................................................ 28691 ........................................................................ 28692 ........................................................................ 28693 ........................................................................ 28694 ........................................................................ 28695 ........................................................................ 28696 ........................................................................ 28697 ........................................................................ 28698 ........................................................................ 28699 ........................................................................ 28700 ........................................................................ 28701 ........................................................................ 28702 ........................................................................ 28703 ........................................................................ 28704 ........................................................................ 28705 ........................................................................ 28706 ........................................................................ 28707 ........................................................................ 28708 ........................................................................ 28709 ........................................................................ 28710 ........................................................................ 28711 ........................................................................ 28712 ........................................................................ 28713 ........................................................................ 28714 ........................................................................ 28715 ........................................................................ 28716 ........................................................................ 28717 ........................................................................ 28718 ........................................................................ 28719 ........................................................................ 28720 ........................................................................ 28721 ........................................................................ 28722 ........................................................................ 28723 ........................................................................ 28724 ........................................................................ 28725 ........................................................................ 28726 ........................................................................ 28727 ........................................................................ 28728 ........................................................................ 28729 ........................................................................ 28730 ........................................................................ 28731 ........................................................................ 28732 ........................................................................ 28733 ........................................................................ 28734 ........................................................................ 28735 ........................................................................ 28736 ........................................................................ 28737 ........................................................................ 28738 ........................................................................ 28739 ........................................................................ 28740 ........................................................................ 28741 ........................................................................ 28742 ........................................................................ 28743 ........................................................................ 28744 ........................................................................ 28745 ........................................................................ 28746 ........................................................................ 28747 ........................................................................ 28748 ........................................................................ 28749 ........................................................................ 28750 ........................................................................ 28751 ........................................................................ 28752 ........................................................................ 28753 ........................................................................ 28754 ........................................................................ 28755 ........................................................................ 28756 ........................................................................ 28757 ........................................................................ 28758 ........................................................................ 28759 ........................................................................ 28760 ........................................................................ 28761 ........................................................................ 28762 ........................................................................ 28763 ........................................................................ 28764 ........................................................................ 28765 ........................................................................ 28766 ........................................................................ 28767 ........................................................................ 28768 ........................................................................ 28769 ........................................................................ 28770 ........................................................................ 28771 ........................................................................ 28772 ........................................................................ 28773 ........................................................................ 28774 ........................................................................ 28775 ........................................................................ 28776 ........................................................................ 28777 ........................................................................ 28778 ........................................................................ 28779 ........................................................................ 28780 ........................................................................ 28781 ........................................................................ 28782 ........................................................................ 28783 ........................................................................ 28784 ........................................................................ 28785 ........................................................................ 28786 ........................................................................ 28787 ........................................................................ 28788 ........................................................................ 28789 ........................................................................ 28790 ........................................................................ 28791 ........................................................................ 28792 ........................................................................ 28793 ........................................................................ 28794 ........................................................................ 28795 ........................................................................ 28796 ........................................................................ 28797 ........................................................................ 28798 ........................................................................ 28799 ........................................................................ 28800 ........................................................................ 28801 ........................................................................ 28802 ........................................................................ 28803 ........................................................................ 28804 ........................................................................ 28805 ........................................................................ 28806 ........................................................................ 28807 ........................................................................ 28808 ........................................................................ 28809 ........................................................................ 28810 ........................................................................ 28811 ........................................................................ 28812 ........................................................................ 28813 ........................................................................ 28814 ........................................................................ 28815 ........................................................................ 28816 ........................................................................ 28817 ........................................................................ 28818 ........................................................................ 28819 ........................................................................ 28820 ........................................................................ 28821 ........................................................................ 28822 ........................................................................ 28823 ........................................................................ 28824 ........................................................................ 28825 ........................................................................ 28826 ........................................................................ 28827 ........................................................................ 28828 ........................................................................ 28829 ........................................................................ 28830 ........................................................................ 28831 ........................................................................ 28832 ........................................................................ 28833 ........................................................................ 28834 ........................................................................ 28835 ........................................................................ 28836 ........................................................................ 28837 ........................................................................ 28838 ........................................................................ 28839 ........................................................................ 28840 ........................................................................ 28841 ........................................................................ 28842 ........................................................................ 28843 ........................................................................ 28844 ........................................................................ 28845 ........................................................................ 28846 ........................................................................ 28847 ........................................................................ 28848 ........................................................................ 28849 ........................................................................ 28850 ........................................................................ 28851 ........................................................................ 28852 ........................................................................ 28853 ........................................................................ 28854 ........................................................................ 28855 ........................................................................ 28856 ........................................................................ 28857 ........................................................................ 28858 ........................................................................ 28859 ........................................................................ 28860 ........................................................................ 28861 ........................................................................ 28862 ........................................................................ 28863 ........................................................................ 28864 ........................................................................ 28865 ........................................................................ 28866 ........................................................................ 28867 ........................................................................ 28868 ........................................................................ 28869 ........................................................................ 28870 ........................................................................ 28871 ........................................................................ 28872 ........................................................................ 28873 ........................................................................ 28874 ........................................................................ 28875 ........................................................................ 28876 ........................................................................ 28877 ........................................................................ 28878 ........................................................................ 28879 ........................................................................ 28880 ........................................................................ 28881 ........................................................................ 28882 ........................................................................ 28883 ........................................................................ 28884 ........................................................................ 28885 ........................................................................ 28886 ........................................................................ 28887 ........................................................................ 28888 ........................................................................ 28889 ........................................................................ 28890 ........................................................................ 28891 ........................................................................ 28892 ........................................................................ 28893 ........................................................................ 28894 ........................................................................ 28895 ........................................................................ 28896 ........................................................................ 28897 ........................................................................ 28898 ........................................................................ 28899 ........................................................................ 28900 ........................................................................ 28901 ........................................................................ 28902 ........................................................................ 28903 ........................................................................ 28904 ........................................................................ 28905 ........................................................................ 28906 ........................................................................ 28907 ........................................................................ 28908 ........................................................................ 28909 ........................................................................ 28910 ........................................................................ 28911 ........................................................................ 28912 ........................................................................ 28913 ........................................................................ 28914 ........................................................................ 28915 ........................................................................ 28916 ........................................................................ 28917 ........................................................................ 28918 ........................................................................ 28919 ........................................................................ 28920 ........................................................................ 28921 ........................................................................ 28922 ........................................................................ 28923 ........................................................................ 28924 ........................................................................ 28925 ........................................................................ 28926 ........................................................................ 28927 ........................................................................ 28928 ........................................................................ 28929 ........................................................................ 28930 ........................................................................ 28931 ........................................................................ 28932 ........................................................................ 28933 ........................................................................ 28934 ........................................................................ 28935 ........................................................................ 28936 ........................................................................ 28937 ........................................................................ 28938 ........................................................................ 28939 ........................................................................ 28940 ........................................................................ 28941 ........................................................................ 28942 ........................................................................ 28943 ........................................................................ 28944 ........................................................................ 28945 ........................................................................ 28946 ........................................................................ 28947 ........................................................................ 28948 ........................................................................ 28949 ........................................................................ 28950 ........................................................................ 28951 ........................................................................ 28952 ........................................................................ 28953 ........................................................................ 28954 ........................................................................ 28955 ........................................................................ 28956 ........................................................................ 28957 ........................................................................ 28958 ........................................................................ 28959 ........................................................................ 28960 ........................................................................ 28961 ........................................................................ 28962 ........................................................................ 28963 ........................................................................ 28964 ........................................................................ 28965 ........................................................................ 28966 ........................................................................ 28967 ........................................................................ 28968 ........................................................................ 28969 ........................................................................ 28970 ........................................................................ 28971 ........................................................................ 28972 ........................................................................ 28973 ........................................................................ 28974 ........................................................................ 28975 ........................................................................ 28976 ........................................................................ 28977 ........................................................................ 28978 ........................................................................ 28979 ........................................................................ 28980 ........................................................................ 28981 ........................................................................ 28982 ........................................................................ 28983 ........................................................................ 28984 ........................................................................ 28985 ........................................................................ 28986 ........................................................................ 28987 ........................................................................ 28988 ........................................................................ 28989 ........................................................................ 28990 ........................................................................ 28991 ........................................................................ 28992 ........................................................................ 28993 ........................................................................ 28994 ........................................................................ 28995 ........................................................................ 28996 ........................................................................ 28997 ........................................................................ 28998 ........................................................................ 28999 ........................................................................ 29000 ........................................................................ 29001 ........................................................................ 29002 ........................................................................ 29003 ........................................................................ 29004 ........................................................................ 29005 ........................................................................ 29006 ........................................................................ 29007 ........................................................................ 29008 ........................................................................ 29009 ........................................................................ 29010 ........................................................................ 29011 ........................................................................ 29012 ........................................................................ 29013 ........................................................................ 29014 ........................................................................ 29015 ........................................................................ 29016 ........................................................................ 29017 ........................................................................ 29018 ........................................................................ 29019 ........................................................................ 29020 ........................................................................ 29021 ........................................................................ 29022 ........................................................................ 29023 ........................................................................ 29024 ........................................................................ 29025 ........................................................................ 29026 ........................................................................ 29027 ........................................................................ 29028 ........................................................................ 29029 ........................................................................ 29030 ........................................................................ 29031 ........................................................................ 29032 ........................................................................ 29033 ........................................................................ 29034 ........................................................................ 29035 ........................................................................ 29036 ........................................................................ 29037 ........................................................................ 29038 ........................................................................ 29039 ........................................................................ 29040 ........................................................................ 29041 ........................................................................ 29042 ........................................................................ 29043 ........................................................................ 29044 ........................................................................ 29045 ........................................................................ 29046 ........................................................................ 29047 ........................................................................ 29048 ........................................................................ 29049 ........................................................................ 29050 ........................................................................ 29051 ........................................................................ 29052 ........................................................................ 29053 ........................................................................ 29054 ........................................................................ 29055 ........................................................................ 29056 ........................................................................ 29057 ........................................................................ 29058 ........................................................................ 29059 ........................................................................ 29060 ........................................................................ 29061 ........................................................................ 29062 ........................................................................ 29063 ........................................................................ 29064 ........................................................................ 29065 ........................................................................ 29066 ........................................................................ 29067 ........................................................................ 29068 ........................................................................ 29069 ........................................................................ 29070 ........................................................................ 29071 ........................................................................ 29072 ........................................................................ 29073 ........................................................................ 29074 ........................................................................ 29075 ........................................................................ 29076 ........................................................................ 29077 ........................................................................ 29078 ........................................................................ 29079 ........................................................................ 29080 ........................................................................ 29081 ........................................................................ 29082 ........................................................................ 29083 ........................................................................ 29084 ........................................................................ 29085 ........................................................................ 29086 ........................................................................ 29087 ........................................................................ 29088 ........................................................................ 29089 ........................................................................ 29090 ........................................................................ 29091 ........................................................................ 29092 ........................................................................ 29093 ........................................................................ 29094 ........................................................................ 29095 ........................................................................ 29096 ........................................................................ 29097 ........................................................................ 29098 ........................................................................ 29099 ........................................................................ 29100 ........................................................................ 29101 ........................................................................ 29102 ........................................................................ 29103 ........................................................................ 29104 ........................................................................ 29105 ........................................................................ 29106 ........................................................................ 29107 ........................................................................ 29108 ........................................................................ 29109 ........................................................................ 29110 ........................................................................ 29111 ........................................................................ 29112 ........................................................................ 29113 ........................................................................ 29114 ........................................................................ 29115 ........................................................................ 29116 ........................................................................ 29117 ........................................................................ 29118 ........................................................................ 29119 ........................................................................ 29120 ........................................................................ 29121 ........................................................................ 29122 ........................................................................ 29123 ........................................................................ 29124 ........................................................................ 29125 ........................................................................ 29126 ........................................................................ 29127 ........................................................................ 29128 ........................................................................ 29129 ........................................................................ 29130 ........................................................................ 29131 ........................................................................ 29132 ........................................................................ 29133 ........................................................................ 29134 ........................................................................ 29135 ........................................................................ 29136 ........................................................................ 29137 ........................................................................ 29138 ........................................................................ 29139 ........................................................................ 29140 ........................................................................ 29141 ........................................................................ 29142 ........................................................................ 29143 ........................................................................ 29144 ........................................................................ 29145 ........................................................................ 29146 ........................................................................ 29147 ........................................................................ 29148 ........................................................................ 29149 ........................................................................ 29150 ........................................................................ 29151 ........................................................................ 29152 ........................................................................ 29153 ........................................................................ 29154 ........................................................................ 29155 ........................................................................ 29156 ........................................................................ 29157 ........................................................................ 29158 ........................................................................ 29159 ........................................................................ 29160 ........................................................................ 29161 ........................................................................ 29162 ........................................................................ 29163 ........................................................................ 29164 ........................................................................ 29165 ........................................................................ 29166 ........................................................................ 29167 ........................................................................ 29168 ........................................................................ 29169 ........................................................................ 29170 ........................................................................ 29171 ........................................................................ 29172 ........................................................................ 29173 ........................................................................ 29174 ........................................................................ 29175 ........................................................................ 29176 ........................................................................ 29177 ........................................................................ 29178 ........................................................................ 29179 ........................................................................ 29180 ........................................................................ 29181 ........................................................................ 29182 ........................................................................ 29183 ........................................................................ 29184 ........................................................................ 29185 ........................................................................ 29186 ........................................................................ 29187 ........................................................................ 29188 ........................................................................ 29189 ........................................................................ 29190 ........................................................................ 29191 ........................................................................ 29192 ........................................................................ 29193 ........................................................................ 29194 ........................................................................ 29195 ........................................................................ 29196 ........................................................................ 29197 ........................................................................ 29198 ........................................................................ 29199 ........................................................................ 29200 ........................................................................ 29201 ........................................................................ 29202 ........................................................................ 29203 ........................................................................ 29204 ........................................................................ 29205 ........................................................................ 29206 ........................................................................ 29207 ........................................................................ 29208 ........................................................................ 29209 ........................................................................ 29210 ........................................................................ 29211 ........................................................................ 29212 ........................................................................ 29213 ........................................................................ 29214 ........................................................................ 29215 ........................................................................ 29216 ........................................................................ 29217 ........................................................................ 29218 ........................................................................ 29219 ........................................................................ 29220 ........................................................................ 29221 ........................................................................ 29222 ........................................................................ 29223 ........................................................................ 29224 ........................................................................ 29225 ........................................................................ 29226 ........................................................................ 29227 ........................................................................ 29228 ........................................................................ 29229 ........................................................................ 29230 ........................................................................ 29231 ........................................................................ 29232 ........................................................................ 29233 ........................................................................ 29234 ........................................................................ 29235 ........................................................................ 29236 ........................................................................ 29237 ........................................................................ 29238 ........................................................................ 29239 ........................................................................ 29240 ........................................................................ 29241 ........................................................................ 29242 ........................................................................ 29243 ........................................................................ 29244 ........................................................................ 29245 ........................................................................ 29246 ........................................................................ 29247 ........................................................................ 29248 ........................................................................ 29249 ........................................................................ 29250 ........................................................................ 29251 ........................................................................ 29252 ........................................................................ 29253 ........................................................................ 29254 ........................................................................ 29255 ........................................................................ 29256 ........................................................................ 29257 ........................................................................ 29258 ........................................................................ 29259 ........................................................................ 29260 ........................................................................ 29261 ........................................................................ 29262 ........................................................................ 29263 ........................................................................ 29264 ........................................................................ 29265 ........................................................................ 29266 ........................................................................ 29267 ........................................................................ 29268 ........................................................................ 29269 ........................................................................ 29270 ........................................................................ 29271 ........................................................................ 29272 ........................................................................ 29273 ........................................................................ 29274 ........................................................................ 29275 ........................................................................ 29276 ........................................................................ 29277 ........................................................................ 29278 ........................................................................ 29279 ........................................................................ 29280 ........................................................................ 29281 ........................................................................ 29282 ........................................................................ 29283 ........................................................................ 29284 ........................................................................ 29285 ........................................................................ 29286 ........................................................................ 29287 ........................................................................ 29288 ........................................................................ 29289 ........................................................................ 29290 ........................................................................ 29291 ........................................................................ 29292 ........................................................................ 29293 ........................................................................ 29294 ........................................................................ 29295 ........................................................................ 29296 ........................................................................ 29297 ........................................................................ 29298 ........................................................................ 29299 ........................................................................ 29300 ........................................................................ 29301 ........................................................................ 29302 ........................................................................ 29303 ........................................................................ 29304 ........................................................................ 29305 ........................................................................ 29306 ........................................................................ 29307 ........................................................................ 29308 ........................................................................ 29309 ........................................................................ 29310 ........................................................................ 29311 ........................................................................ 29312 ........................................................................ 29313 ........................................................................ 29314 ........................................................................ 29315 ........................................................................ 29316 ........................................................................ 29317 ........................................................................ 29318 ........................................................................ 29319 ........................................................................ 29320 ........................................................................ 29321 ........................................................................ 29322 ........................................................................ 29323 ........................................................................ 29324 ........................................................................ 29325 ........................................................................ 29326 ........................................................................ 29327 ........................................................................ 29328 ........................................................................ 29329 ........................................................................ 29330 ........................................................................ 29331 ........................................................................ 29332 ........................................................................ 29333 ........................................................................ 29334 ........................................................................ 29335 ........................................................................ 29336 ........................................................................ 29337 ........................................................................ 29338 ........................................................................ 29339 ........................................................................ 29340 ........................................................................ 29341 ........................................................................ 29342 ........................................................................ 29343 ........................................................................ 29344 ........................................................................ 29345 ........................................................................ 29346 ........................................................................ 29347 ........................................................................ 29348 ........................................................................ 29349 ........................................................................ 29350 ........................................................................ 29351 ........................................................................ 29352 ........................................................................ 29353 ........................................................................ 29354 ........................................................................ 29355 ........................................................................ 29356 ........................................................................ 29357 ........................................................................ 29358 ........................................................................ 29359 ........................................................................ 29360 ........................................................................ 29361 ........................................................................ 29362 ........................................................................ 29363 ........................................................................ 29364 ........................................................................ 29365 ........................................................................ 29366 ........................................................................ 29367 ........................................................................ 29368 ........................................................................ 29369 ........................................................................ 29370 ........................................................................ 29371 ........................................................................ 29372 ........................................................................ 29373 ........................................................................ 29374 ........................................................................ 29375 ........................................................................ 29376 ........................................................................ 29377 ........................................................................ 29378 ........................................................................ 29379 ........................................................................ 29380 ........................................................................ 29381 ........................................................................ 29382 ........................................................................ 29383 ........................................................................ 29384 ........................................................................ 29385 ........................................................................ 29386 ........................................................................ 29387 ........................................................................ 29388 ........................................................................ 29389 ........................................................................ 29390 ........................................................................ 29391 ........................................................................ 29392 ........................................................................ 29393 ........................................................................ 29394 ........................................................................ 29395 ........................................................................ 29396 ........................................................................ 29397 ........................................................................ 29398 ........................................................................ 29399 ........................................................................ 29400 ........................................................................ 29401 ........................................................................ 29402 ........................................................................ 29403 ........................................................................ 29404 ........................................................................ 29405 ........................................................................ 29406 ........................................................................ 29407 ........................................................................ 29408 ........................................................................ 29409 ........................................................................ 29410 ........................................................................ 29411 ........................................................................ 29412 ........................................................................ 29413 ........................................................................ 29414 ........................................................................ 29415 ........................................................................ 29416 ........................................................................ 29417 ........................................................................ 29418 ........................................................................ 29419 ........................................................................ 29420 ........................................................................ 29421 ........................................................................ 29422 ........................................................................ 29423 ........................................................................ 29424 ........................................................................ 29425 ........................................................................ 29426 ........................................................................ 29427 ........................................................................ 29428 ........................................................................ 29429 ........................................................................ 29430 ........................................................................ 29431 ........................................................................ 29432 ........................................................................ 29433 ........................................................................ 29434 ........................................................................ 29435 ........................................................................ 29436 ........................................................................ 29437 ........................................................................ 29438 ........................................................................ 29439 ........................................................................ 29440 ........................................................................ 29441 ........................................................................ 29442 ........................................................................ 29443 ........................................................................ 29444 ........................................................................ 29445 ........................................................................ 29446 ........................................................................ 29447 ........................................................................ 29448 ........................................................................ 29449 ........................................................................ 29450 ........................................................................ 29451 ........................................................................ 29452 ........................................................................ 29453 ........................................................................ 29454 ........................................................................ 29455 ........................................................................ 29456 ........................................................................ 29457 ........................................................................ 29458 ........................................................................ 29459 ........................................................................ 29460 ........................................................................ 29461 ........................................................................ 29462 ........................................................................ 29463 ........................................................................ 29464 ........................................................................ 29465 ........................................................................ 29466 ........................................................................ 29467 ........................................................................ 29468 ........................................................................ 29469 ........................................................................ 29470 ........................................................................ 29471 ........................................................................ 29472 ........................................................................ 29473 ........................................................................ 29474 ........................................................................ 29475 ........................................................................ 29476 ........................................................................ 29477 ........................................................................ 29478 ........................................................................ 29479 ........................................................................ 29480 ........................................................................ 29481 ........................................................................ 29482 ........................................................................ 29483 ........................................................................ 29484 ........................................................................ 29485 ........................................................................ 29486 ........................................................................ 29487 ........................................................................ 29488 ........................................................................ 29489 ........................................................................ 29490 ........................................................................ 29491 ........................................................................ 29492 ........................................................................ 29493 ........................................................................ 29494 ........................................................................ 29495 ........................................................................ 29496 ........................................................................ 29497 ........................................................................ 29498 ........................................................................ 29499 ........................................................................ 29500 ........................................................................ 29501 ........................................................................ 29502 ........................................................................ 29503 ........................................................................ 29504 ........................................................................ 29505 ........................................................................ 29506 ........................................................................ 29507 ........................................................................ 29508 ........................................................................ 29509 ........................................................................ 29510 ........................................................................ 29511 ........................................................................ 29512 ........................................................................ 29513 ........................................................................ 29514 ........................................................................ 29515 ........................................................................ 29516 ........................................................................ 29517 ........................................................................ 29518 ........................................................................ 29519 ........................................................................ 29520 ........................................................................ 29521 ........................................................................ 29522 ........................................................................ 29523 ........................................................................ 29524 ........................................................................ 29525 ........................................................................ 29526 ........................................................................ 29527 ........................................................................ 29528 ........................................................................ 29529 ........................................................................ 29530 ........................................................................ 29531 ........................................................................ 29532 ........................................................................ 29533 ........................................................................ 29534 ........................................................................ 29535 ........................................................................ 29536 ........................................................................ 29537 ........................................................................ 29538 ........................................................................ 29539 ........................................................................ 29540 ........................................................................ 29541 ........................................................................ 29542 ........................................................................ 29543 ........................................................................ 29544 ........................................................................ 29545 ........................................................................ 29546 ........................................................................ 29547 ........................................................................ 29548 ........................................................................ 29549 ........................................................................ 29550 ........................................................................ 29551 ........................................................................ 29552 ........................................................................ 29553 ........................................................................ 29554 ........................................................................ 29555 ........................................................................ 29556 ........................................................................ 29557 ........................................................................ 29558 ........................................................................ 29559 ........................................................................ 29560 ........................................................................ 29561 ........................................................................ 29562 ........................................................................ 29563 ........................................................................ 29564 ........................................................................ 29565 ........................................................................ 29566 ........................................................................ 29567 ........................................................................ 29568 ........................................................................ 29569 ........................................................................ 29570 ........................................................................ 29571 ........................................................................ 29572 ........................................................................ 29573 ........................................................................ 29574 ........................................................................ 29575 ........................................................................ 29576 ........................................................................ 29577 ........................................................................ 29578 ........................................................................ 29579 ........................................................................ 29580 ........................................................................ 29581 ........................................................................ 29582 ........................................................................ 29583 ........................................................................ 29584 ........................................................................ 29585 ........................................................................ 29586 ........................................................................ 29587 ........................................................................ 29588 ........................................................................ 29589 ........................................................................ 29590 ........................................................................ 29591 ........................................................................ 29592 ........................................................................ 29593 ........................................................................ 29594 ........................................................................ 29595 ........................................................................ 29596 ........................................................................ 29597 ........................................................................ 29598 ........................................................................ 29599 ........................................................................ 29600 ........................................................................ 29601 ........................................................................ 29602 ........................................................................ 29603 ........................................................................ 29604 ........................................................................ 29605 ........................................................................ 29606 ........................................................................ 29607 ........................................................................ 29608 ........................................................................ 29609 ........................................................................ 29610 ........................................................................ 29611 ........................................................................ 29612 ........................................................................ 29613 ........................................................................ 29614 ........................................................................ 29615 ........................................................................ 29616 ........................................................................ 29617 ........................................................................ 29618 ........................................................................ 29619 ........................................................................ 29620 ........................................................................ 29621 ........................................................................ 29622 ........................................................................ 29623 ........................................................................ 29624 ........................................................................ 29625 ........................................................................ 29626 ........................................................................ 29627 ........................................................................ 29628 ........................................................................ 29629 ........................................................................ 29630 ........................................................................ 29631 ........................................................................ 29632 ........................................................................ 29633 ........................................................................ 29634 ........................................................................ 29635 ........................................................................ 29636 ........................................................................ 29637 ........................................................................ 29638 ........................................................................ 29639 ........................................................................ 29640 ........................................................................ 29641 ........................................................................ 29642 ........................................................................ 29643 ........................................................................ 29644 ........................................................................ 29645 ........................................................................ 29646 ........................................................................ 29647 ........................................................................ 29648 ........................................................................ 29649 ........................................................................ 29650 ........................................................................ 29651 ........................................................................ 29652 ........................................................................ 29653 ........................................................................ 29654 ........................................................................ 29655 ........................................................................ 29656 ........................................................................ 29657 ........................................................................ 29658 ........................................................................ 29659 ........................................................................ 29660 ........................................................................ 29661 ........................................................................ 29662 ........................................................................ 29663 ........................................................................ 29664 ........................................................................ 29665 ........................................................................ 29666 ........................................................................ 29667 ........................................................................ 29668 ........................................................................ 29669 ........................................................................ 29670 ........................................................................ 29671 ........................................................................ 29672 ........................................................................ 29673 ........................................................................ 29674 ........................................................................ 29675 ........................................................................ 29676 ........................................................................ 29677 ........................................................................ 29678 ........................................................................ 29679 ........................................................................ 29680 ........................................................................ 29681 ........................................................................ 29682 ........................................................................ 29683 ........................................................................ 29684 ........................................................................ 29685 ........................................................................ 29686 ........................................................................ 29687 ........................................................................ 29688 ........................................................................ 29689 ........................................................................ 29690 ........................................................................ 29691 ........................................................................ 29692 ........................................................................ 29693 ........................................................................ 29694 ........................................................................ 29695 ........................................................................ 29696 ........................................................................ 29697 ........................................................................ 29698 ........................................................................ 29699 ........................................................................ 29700 ........................................................................ 29701 ........................................................................ 29702 ........................................................................ 29703 ........................................................................ 29704 ........................................................................ 29705 ........................................................................ 29706 ........................................................................ 29707 ........................................................................ 29708 ........................................................................ 29709 ........................................................................ 29710 ........................................................................ 29711 ........................................................................ 29712 ........................................................................ 29713 ........................................................................ 29714 ........................................................................ 29715 ........................................................................ 29716 ........................................................................ 29717 ........................................................................ 29718 ........................................................................ 29719 ........................................................................ 29720 ........................................................................ 29721 ........................................................................ 29722 ........................................................................ 29723 ........................................................................ 29724 ........................................................................ 29725 ........................................................................ 29726 ........................................................................ 29727 ........................................................................ 29728 ........................................................................ 29729 ........................................................................ 29730 ........................................................................ 29731 ........................................................................ 29732 ........................................................................ 29733 ........................................................................ 29734 ........................................................................ 29735 ........................................................................ 29736 ........................................................................ 29737 ........................................................................ 29738 ........................................................................ 29739 ........................................................................ 29740 ........................................................................ 29741 ........................................................................ 29742 ........................................................................ 29743 ........................................................................ 29744 ........................................................................ 29745 ........................................................................ 29746 ........................................................................ 29747 ........................................................................ 29748 ........................................................................ 29749 ........................................................................ 29750 ........................................................................ 29751 ........................................................................ 29752 ........................................................................ 29753 ........................................................................ 29754 ........................................................................ 29755 ........................................................................ 29756 ........................................................................ 29757 ........................................................................ 29758 ........................................................................ 29759 ........................................................................ 29760 ........................................................................ 29761 ........................................................................ 29762 ........................................................................ 29763 ........................................................................ 29764 ........................................................................ 29765 ........................................................................ 29766 ........................................................................ 29767 ........................................................................ 29768 ........................................................................ 29769 ........................................................................ 29770 ........................................................................ 29771 ........................................................................ 29772 ........................................................................ 29773 ........................................................................ 29774 ........................................................................ 29775 ........................................................................ 29776 ........................................................................ 29777 ........................................................................ 29778 ........................................................................ 29779 ........................................................................ 29780 ........................................................................ 29781 ........................................................................ 29782 ........................................................................ 29783 ........................................................................ 29784 ........................................................................ 29785 ........................................................................ 29786 ........................................................................ 29787 ........................................................................ 29788 ........................................................................ 29789 ........................................................................ 29790 ........................................................................ 29791 ........................................................................ 29792 ........................................................................ 29793 ........................................................................ 29794 ........................................................................ 29795 ........................................................................ 29796 ........................................................................ 29797 ........................................................................ 29798 ........................................................................ 29799 ........................................................................ 29800 ........................................................................ 29801 ........................................................................ 29802 ........................................................................ 29803 ........................................................................ 29804 ........................................................................ 29805 ........................................................................ 29806 ........................................................................ 29807 ........................................................................ 29808 ........................................................................ 29809 ........................................................................ 29810 ........................................................................ 29811 ........................................................................ 29812 ........................................................................ 29813 ........................................................................ 29814 ........................................................................ 29815 ........................................................................ 29816 ........................................................................ 29817 ........................................................................ 29818 ........................................................................ 29819 ........................................................................ 29820 ........................................................................ 29821 ........................................................................ 29822 ........................................................................ 29823 ........................................................................ 29824 ........................................................................ 29825 ........................................................................ 29826 ........................................................................ 29827 ........................................................................ 29828 ........................................................................ 29829 ........................................................................ 29830 ........................................................................ 29831 ........................................................................ 29832 ........................................................................ 29833 ........................................................................ 29834 ........................................................................ 29835 ........................................................................ 29836 ........................................................................ 29837 ........................................................................ 29838 ........................................................................ 29839 ........................................................................ 29840 ........................................................................ 29841 ........................................................................ 29842 ........................................................................ 29843 ........................................................................ 29844 ........................................................................ 29845 ........................................................................ 29846 ........................................................................ 29847 ........................................................................ 29848 ........................................................................ 29849 ........................................................................ 29850 ........................................................................ 29851 ........................................................................ 29852 ........................................................................ 29853 ........................................................................ 29854 ........................................................................ 29855 ........................................................................ 29856 ........................................................................ 29857 ........................................................................ 29858 ........................................................................ 29859 ........................................................................ 29860 ........................................................................ 29861 ........................................................................ 29862 ........................................................................ 29863 ........................................................................ 29864 ........................................................................ 29865 ........................................................................ 29866 ........................................................................ 29867 ........................................................................ 29868 ........................................................................ 29869 ........................................................................ 29870 ........................................................................ 29871 ........................................................................ 29872 ........................................................................ 29873 ........................................................................ 29874 ........................................................................ 29875 ........................................................................ 29876 ........................................................................ 29877 ........................................................................ 29878 ........................................................................ 29879 ........................................................................ 29880 ........................................................................ 29881 ........................................................................ 29882 ........................................................................ 29883 ........................................................................ 29884 ........................................................................ 29885 ........................................................................ 29886 ........................................................................ 29887 ........................................................................ 29888 ........................................................................ 29889 ........................................................................ 29890 ........................................................................ 29891 ........................................................................ 29892 ........................................................................ 29893 ........................................................................ 29894 ........................................................................ 29895 ........................................................................ 29896 ........................................................................ 29897 ........................................................................ 29898 ........................................................................ 29899 ........................................................................ 29900 ........................................................................ 29901 ........................................................................ 29902 ........................................................................ 29903 ........................................................................ 29904 ........................................................................ 29905 ........................................................................ 29906 ........................................................................ 29907 ........................................................................ 29908 ........................................................................ 29909 ........................................................................ 29910 ........................................................................ 29911 ........................................................................ 29912 ........................................................................ 29913 ........................................................................ 29914 ........................................................................ 29915 ........................................................................ 29916 ........................................................................ 29917 ........................................................................ 29918 ........................................................................ 29919 ........................................................................ 29920 ........................................................................ 29921 ........................................................................ 29922 ........................................................................ 29923 ........................................................................ 29924 ........................................................................ 29925 ........................................................................ 29926 ........................................................................ 29927 ........................................................................ 29928 ........................................................................ 29929 ........................................................................ 29930 ........................................................................ 29931 ........................................................................ 29932 ........................................................................ 29933 ........................................................................ 29934 ........................................................................ 29935 ........................................................................ 29936 ........................................................................ 29937 ........................................................................ 29938 ........................................................................ 29939 ........................................................................ 29940 ........................................................................ 29941 ........................................................................ 29942 ........................................................................ 29943 ........................................................................ 29944 ........................................................................ 29945 ........................................................................ 29946 ........................................................................ 29947 ........................................................................ 29948 ........................................................................ 29949 ........................................................................ 29950 ........................................................................ 29951 ........................................................................ 29952 ........................................................................ 29953 ........................................................................ 29954 ........................................................................ 29955 ........................................................................ 29956 ........................................................................ 29957 ........................................................................ 29958 ........................................................................ 29959 ........................................................................ 29960 ........................................................................ 29961 ........................................................................ 29962 ........................................................................ 29963 ........................................................................ 29964 ........................................................................ 29965 ........................................................................ 29966 ........................................................................ 29967 ........................................................................ 29968 ........................................................................ 29969 ........................................................................ 29970 ........................................................................ 29971 ........................................................................ 29972 ........................................................................ 29973 ........................................................................ 29974 ........................................................................ 29975 ........................................................................ 29976 ........................................................................ 29977 ........................................................................ 29978 ........................................................................ 29979 ........................................................................ 29980 ........................................................................ 29981 ........................................................................ 29982 ........................................................................ 29983 ........................................................................ 29984 ........................................................................ 29985 ........................................................................ 29986 ........................................................................ 29987 ........................................................................ 29988 ........................................................................ 29989 ........................................................................ 29990 ........................................................................ 29991 ........................................................................ 29992 ........................................................................ 29993 ........................................................................ 29994 ........................................................................ 29995 ........................................................................ 29996 ........................................................................ 29997 ........................................................................ 29998 ........................................................................ 29999 ........................................................................ 30000 ........................................................................ 30001 ........................................................................ 30002 ........................................................................ 30003 ........................................................................ 30004 ........................................................................ 30005 ........................................................................ 30006 ........................................................................ 30007 ........................................................................ 30008 ........................................................................ 30009 ........................................................................ 30010 ........................................................................ 30011 ........................................................................ 30012 ........................................................................ 30013 ........................................................................ 30014 ........................................................................ 30015 ........................................................................ 30016 ........................................................................ 30017 ........................................................................ 30018 ........................................................................ 30019 ........................................................................ 30020 ........................................................................ 30021 ........................................................................ 30022 ........................................................................ 30023 ........................................................................ 30024 ........................................................................ 30025 ........................................................................ 30026 ........................................................................ 30027 ........................................................................ 30028 ........................................................................ 30029 ........................................................................ 30030 ........................................................................ 30031 ........................................................................ 30032 ........................................................................ 30033 ........................................................................ 30034 ........................................................................ 30035 ........................................................................ 30036 ........................................................................ 30037 ........................................................................ 30038 ........................................................................ 30039 ........................................................................ 30040 ........................................................................ 30041 ........................................................................ 30042 ........................................................................ 30043 ........................................................................ 30044 ........................................................................ 30045 ........................................................................ 30046 ........................................................................ 30047 ........................................................................ 30048 ........................................................................ 30049 ........................................................................ 30050 ........................................................................ 30051 ........................................................................ 30052 ........................................................................ 30053 ........................................................................ 30054 ........................................................................ 30055 ........................................................................ 30056 ........................................................................ 30057 ........................................................................ 30058 ........................................................................ 30059 ........................................................................ 30060 ........................................................................ 30061 ........................................................................ 30062 ........................................................................ 30063 ........................................................................ 30064 ........................................................................ 30065 ........................................................................ 30066 ........................................................................ 30067 ........................................................................ 30068 ........................................................................ 30069 ........................................................................ 30070 ........................................................................ 30071 ........................................................................ 30072 ........................................................................ 30073 ........................................................................ 30074 ........................................................................ 30075 ........................................................................ 30076 ........................................................................ 30077 ........................................................................ 30078 ........................................................................ 30079 ........................................................................ 30080 ........................................................................ 30081 ........................................................................ 30082 ........................................................................ 30083 ........................................................................ 30084 ........................................................................ 30085 ........................................................................ 30086 ........................................................................ 30087 ........................................................................ 30088 ........................................................................ 30089 ........................................................................ 30090 ........................................................................ 30091 ........................................................................ 30092 ........................................................................ 30093 ........................................................................ 30094 ........................................................................ 30095 ........................................................................ 30096 ........................................................................ 30097 ........................................................................ 30098 ........................................................................ 30099 ........................................................................ 30100 ........................................................................ 30101 ........................................................................ 30102 ........................................................................ 30103 ........................................................................ 30104 ........................................................................ 30105 ........................................................................ 30106 ........................................................................ 30107 ........................................................................ 30108 ........................................................................ 30109 ........................................................................ 30110 ........................................................................ 30111 ........................................................................ 30112 ........................................................................ 30113 ........................................................................ 30114 ........................................................................ 30115 ........................................................................ 30116 ........................................................................ 30117 ........................................................................ 30118 ........................................................................ 30119 ........................................................................ 30120 ........................................................................ 30121 ........................................................................ 30122 ........................................................................ 30123 ........................................................................ 30124 ........................................................................ 30125 ........................................................................ 30126 ........................................................................ 30127 ........................................................................ 30128 ........................................................................ 30129 ........................................................................ 30130 ........................................................................ 30131 ........................................................................ 30132 ........................................................................ 30133 ........................................................................ 30134 ........................................................................ 30135 ........................................................................ 30136 ........................................................................ 30137 ........................................................................ 30138 ........................................................................ 30139 ........................................................................ 30140 ........................................................................ 30141 ........................................................................ 30142 ........................................................................ 30143 ........................................................................ 30144 ........................................................................ 30145 ........................................................................ 30146 ........................................................................ 30147 ........................................................................ 30148 ........................................................................ 30149 ........................................................................ 30150 ........................................................................ 30151 ........................................................................ 30152 ........................................................................ 30153 ........................................................................ 30154 ........................................................................ 30155 ........................................................................ 30156 ........................................................................ 30157 ........................................................................ 30158 ........................................................................ 30159 ........................................................................ 30160 ........................................................................ 30161 ........................................................................ 30162 ........................................................................ 30163 ........................................................................ 30164 ........................................................................ 30165 ........................................................................ 30166 ........................................................................ 30167 ........................................................................ 30168 ........................................................................ 30169 ........................................................................ 30170 ........................................................................ 30171 ........................................................................ 30172 ........................................................................ 30173 ........................................................................ 30174 ........................................................................ 30175 ........................................................................ 30176 ........................................................................ 30177 ........................................................................ 30178 ........................................................................ 30179 ........................................................................ 30180 ........................................................................ 30181 ........................................................................ 30182 ........................................................................ 30183 ........................................................................ 30184 ........................................................................ 30185 ........................................................................ 30186 ........................................................................ 30187 ........................................................................ 30188 ........................................................................ 30189 ........................................................................ 30190 ........................................................................ 30191 ........................................................................ 30192 ........................................................................ 30193 ........................................................................ 30194 ........................................................................ 30195 ........................................................................ 30196 ........................................................................ 30197 ........................................................................ 30198 ........................................................................ 30199 ........................................................................ 30200 ........................................................................ 30201 ........................................................................ 30202 ........................................................................ 30203 ........................................................................ 30204 ........................................................................ 30205 ........................................................................ 30206 ........................................................................ 30207 ........................................................................ 30208 ........................................................................ 30209 ........................................................................ 30210 ........................................................................ 30211 ........................................................................ 30212 ........................................................................ 30213 ........................................................................ 30214 ........................................................................ 30215 ........................................................................ 30216 ........................................................................ 30217 ........................................................................ 30218 ........................................................................ 30219 ........................................................................ 30220 ........................................................................ 30221 ........................................................................ 30222 ........................................................................ 30223 ........................................................................ 30224 ........................................................................ 30225 ........................................................................ 30226 ........................................................................ 30227 ........................................................................ 30228 ........................................................................ 30229 ........................................................................ 30230 ........................................................................ 30231 ........................................................................ 30232 ........................................................................ 30233 ........................................................................ 30234 ........................................................................ 30235 ........................................................................ 30236 ........................................................................ 30237 ........................................................................ 30238 ........................................................................ 30239 ........................................................................ 30240 ........................................................................ 30241 ........................................................................ 30242 ........................................................................ 30243 ........................................................................ 30244 ........................................................................ 30245 ........................................................................ 30246 ........................................................................ 30247 ........................................................................ 30248 ........................................................................ 30249 ........................................................................ 30250 ........................................................................ 30251 ........................................................................ 30252 ........................................................................ 30253 ........................................................................ 30254 ........................................................................ 30255 ........................................................................ 30256 ........................................................................ 30257 ........................................................................ 30258 ........................................................................ 30259 ........................................................................ 30260 ........................................................................ 30261 ........................................................................ 30262 ........................................................................ 30263 ........................................................................ 30264 ........................................................................ 30265 ........................................................................ 30266 ........................................................................ 30267 ........................................................................ 30268 ........................................................................ 30269 ........................................................................ 30270 ........................................................................ 30271 ........................................................................ 30272 ........................................................................ 30273 ........................................................................ 30274 ........................................................................ 30275 ........................................................................ 30276 ........................................................................ 30277 ........................................................................ 30278 ........................................................................ 30279 ........................................................................ 30280 ........................................................................ 30281 ........................................................................ 30282 ........................................................................ 30283 ........................................................................ 30284 ........................................................................ 30285 ........................................................................ 30286 ........................................................................ 30287 ........................................................................ 30288 ........................................................................ 30289 ........................................................................ 30290 ........................................................................ 30291 ........................................................................ 30292 ........................................................................ 30293 ........................................................................ 30294 ........................................................................ 30295 ........................................................................ 30296 ........................................................................ 30297 ........................................................................ 30298 ........................................................................ 30299 ........................................................................ 30300 ........................................................................ 30301 ........................................................................ 30302 ........................................................................ 30303 ........................................................................ 30304 ........................................................................ 30305 ........................................................................ 30306 ........................................................................ 30307 ........................................................................ 30308 ........................................................................ 30309 ........................................................................ 30310 ........................................................................ 30311 ........................................................................ 30312 ........................................................................ 30313 ........................................................................ 30314 ........................................................................ 30315 ........................................................................ 30316 ........................................................................ 30317 ........................................................................ 30318 ........................................................................ 30319 ........................................................................ 30320 ........................................................................ 30321 ........................................................................ 30322 ........................................................................ 30323 ........................................................................ 30324 ........................................................................ 30325 ........................................................................ 30326 ........................................................................ 30327 ........................................................................ 30328 ........................................................................ 30329 ........................................................................ 30330 ........................................................................ 30331 ........................................................................ 30332 ........................................................................ 30333 ........................................................................ 30334 ........................................................................ 30335 ........................................................................ 30336 ........................................................................ 30337 ........................................................................ 30338 ........................................................................ 30339 ........................................................................ 30340 ........................................................................ 30341 ........................................................................ 30342 ........................................................................ 30343 ........................................................................ 30344 ........................................................................ 30345 ........................................................................ 30346 ........................................................................ 30347 ........................................................................ 30348 ........................................................................ 30349 ........................................................................ 30350 ........................................................................ 30351 ........................................................................ 30352 ........................................................................ 30353 ........................................................................ 30354 ........................................................................ 30355 ........................................................................ 30356 ........................................................................ 30357 ........................................................................ 30358 ........................................................................ 30359 ........................................................................ 30360 ........................................................................ 30361 ........................................................................ 30362 ........................................................................ 30363 ........................................................................ 30364 ........................................................................ 30365 ........................................................................ 30366 ........................................................................ 30367 ........................................................................ 30368 ........................................................................ 30369 ........................................................................ 30370 ........................................................................ 30371 ........................................................................ 30372 ........................................................................ 30373 ........................................................................ 30374 ........................................................................ 30375 ........................................................................ 30376 ........................................................................ 30377 ........................................................................ 30378 ........................................................................ 30379 ........................................................................ 30380 ........................................................................ 30381 ........................................................................ 30382 ........................................................................ 30383 ........................................................................ 30384 ........................................................................ 30385 ........................................................................ 30386 ........................................................................ 30387 ........................................................................ 30388 ........................................................................ 30389 ........................................................................ 30390 ........................................................................ 30391 ........................................................................ 30392 ........................................................................ 30393 ........................................................................ 30394 ........................................................................ 30395 ........................................................................ 30396 ........................................................................ 30397 ........................................................................ 30398 ........................................................................ 30399 ........................................................................ 30400 ........................................................................ 30401 ........................................................................ 30402 ........................................................................ 30403 ........................................................................ 30404 ........................................................................ 30405 ........................................................................ 30406 ........................................................................ 30407 ........................................................................ 30408 ........................................................................ 30409 ........................................................................ 30410 ........................................................................ 30411 ........................................................................ 30412 ........................................................................ 30413 ........................................................................ 30414 ........................................................................ 30415 ........................................................................ 30416 ........................................................................ 30417 ........................................................................ 30418 ........................................................................ 30419 ........................................................................ 30420 ........................................................................ 30421 ........................................................................ 30422 ........................................................................ 30423 ........................................................................ 30424 ........................................................................ 30425 ........................................................................ 30426 ........................................................................ 30427 ........................................................................ 30428 ........................................................................ 30429 ........................................................................ 30430 ........................................................................ 30431 ........................................................................ 30432 ........................................................................ 30433 ........................................................................ 30434 ........................................................................ 30435 ........................................................................ 30436 ........................................................................ 30437 ........................................................................ 30438 ........................................................................ 30439 ........................................................................ 30440 ........................................................................ 30441 ........................................................................ 30442 ........................................................................ 30443 ........................................................................ 30444 ........................................................................ 30445 ........................................................................ 30446 ........................................................................ 30447 ........................................................................ 30448 ........................................................................ 30449 ........................................................................ 30450 ........................................................................ 30451 ........................................................................ 30452 ........................................................................ 30453 ........................................................................ 30454 ........................................................................ 30455 ........................................................................ 30456 ........................................................................ 30457 ........................................................................ 30458 ........................................................................ 30459 ........................................................................ 30460 ........................................................................ 30461 ........................................................................ 30462 ........................................................................ 30463 ........................................................................ 30464 ........................................................................ 30465 ........................................................................ 30466 ........................................................................ 30467 ........................................................................ 30468 ........................................................................ 30469 ........................................................................ 30470 ........................................................................ 30471 ........................................................................ 30472 ........................................................................ 30473 ........................................................................ 30474 ........................................................................ 30475 ........................................................................ 30476 ........................................................................ 30477 ........................................................................ 30478 ........................................................................ 30479 ........................................................................ 30480 ........................................................................ 30481 ........................................................................ 30482 ........................................................................ 30483 ........................................................................ 30484 ........................................................................ 30485 ........................................................................ 30486 ........................................................................ 30487 ........................................................................ 30488 ........................................................................ 30489 ........................................................................ 30490 ........................................................................ 30491 ........................................................................ 30492 ........................................................................ 30493 ........................................................................ 30494 ........................................................................ 30495 ........................................................................ 30496 ........................................................................ 30497 ........................................................................ 30498 ........................................................................ 30499 ........................................................................ 30500 ........................................................................ 30501 ........................................................................ 30502 ........................................................................ 30503 ........................................................................ 30504 ........................................................................ 30505 ........................................................................ 30506 ........................................................................ 30507 ........................................................................ 30508 ........................................................................ 30509 ........................................................................ 30510 ........................................................................ 30511 ........................................................................ 30512 ........................................................................ 30513 ........................................................................ 30514 ........................................................................ 30515 ........................................................................ 30516 ........................................................................ 30517 ........................................................................ 30518 ........................................................................ 30519 ........................................................................ 30520 ........................................................................ 30521 ........................................................................ 30522 ........................................................................ 30523 ........................................................................ 30524 ........................................................................ 30525 ........................................................................ 30526 ........................................................................ 30527 ........................................................................ 30528 ........................................................................ 30529 ........................................................................ 30530 ........................................................................ 30531 ........................................................................ 30532 ........................................................................ 30533 ........................................................................ 30534 ........................................................................ 30535 ........................................................................ 30536 ........................................................................ 30537 ........................................................................ 30538 ........................................................................ 30539 ........................................................................ 30540 ........................................................................ 30541 ........................................................................ 30542 ........................................................................ 30543 ........................................................................ 30544 ........................................................................ 30545 ........................................................................ 30546 ........................................................................ 30547 ........................................................................ 30548 ........................................................................ 30549 ........................................................................ 30550 ........................................................................ 30551 ........................................................................ 30552 ........................................................................ 30553 ........................................................................ 30554 ........................................................................ 30555 ........................................................................ 30556 ........................................................................ 30557 ........................................................................ 30558 ........................................................................ 30559 ........................................................................ 30560 ........................................................................ 30561 ........................................................................ 30562 ........................................................................ 30563 ........................................................................ 30564 ........................................................................ 30565 ........................................................................ 30566 ........................................................................ 30567 ........................................................................ 30568 ........................................................................ 30569 ........................................................................ 30570 ........................................................................ 30571 ........................................................................ 30572 ........................................................................ 30573 ........................................................................ 30574 ........................................................................ 30575 ........................................................................ 30576 ........................................................................ 30577 ........................................................................ 30578 ........................................................................ 30579 ........................................................................ 30580 ........................................................................ 30581 ........................................................................ 30582 ........................................................................ 30583 ........................................................................ 30584 ........................................................................ 30585 ........................................................................ 30586 ........................................................................ 30587 ........................................................................ 30588 ........................................................................ 30589 ........................................................................ 30590 ........................................................................ 30591 ........................................................................ 30592 ........................................................................ 30593 ........................................................................ 30594 ........................................................................ 30595 ........................................................................ 30596 ........................................................................ 30597 ........................................................................ 30598 ........................................................................ 30599 ........................................................................ 30600 ........................................................................ 30601 ........................................................................ 30602 ........................................................................ 30603 ........................................................................ 30604 ........................................................................ 30605 ........................................................................ 30606 ........................................................................ 30607 ........................................................................ 30608 ........................................................................ 30609 ........................................................................ 30610 ........................................................................ 30611 ........................................................................ 30612 ........................................................................ 30613 ........................................................................ 30614 ........................................................................ 30615 ........................................................................ 30616 ........................................................................ 30617 ........................................................................ 30618 ........................................................................ 30619 ........................................................................ 30620 ........................................................................ 30621 ........................................................................ 30622 ........................................................................ 30623 ........................................................................ 30624 ........................................................................ 30625 ........................................................................ 30626 ........................................................................ 30627 ........................................................................ 30628 ........................................................................ 30629 ........................................................................ 30630 ........................................................................ 30631 ........................................................................ 30632 ........................................................................ 30633 ........................................................................ 30634 ........................................................................ 30635 ........................................................................ 30636 ........................................................................ 30637 ........................................................................ 30638 ........................................................................ 30639 ........................................................................ 30640 ........................................................................ 30641 ........................................................................ 30642 ........................................................................ 30643 ........................................................................ 30644 ........................................................................ 30645 ........................................................................ 30646 ........................................................................ 30647 ........................................................................ 30648 ........................................................................ 30649 ........................................................................ 30650 ........................................................................ 30651 ........................................................................ 30652 ........................................................................ 30653 ........................................................................ 30654 ........................................................................ 30655 ........................................................................ 30656 ........................................................................ 30657 ........................................................................ 30658 ........................................................................ 30659 ........................................................................ 30660 ........................................................................ 30661 ........................................................................ 30662 ........................................................................ 30663 ........................................................................ 30664 ........................................................................ 30665 ........................................................................ 30666 ........................................................................ 30667 ........................................................................ 30668 ........................................................................ 30669 ........................................................................ 30670 ........................................................................ 30671 ........................................................................ 30672 ........................................................................ 30673 ........................................................................ 30674 ........................................................................ 30675 ........................................................................ 30676 ........................................................................ 30677 ........................................................................ 30678 ........................................................................ 30679 ........................................................................ 30680 ........................................................................ 30681 ........................................................................ 30682 ........................................................................ 30683 ........................................................................ 30684 ........................................................................ 30685 ........................................................................ 30686 ........................................................................ 30687 ........................................................................ 30688 ........................................................................ 30689 ........................................................................ 30690 ........................................................................ 30691 ........................................................................ 30692 ........................................................................ 30693 ........................................................................ 30694 ........................................................................ 30695 ........................................................................ 30696 ........................................................................ 30697 ........................................................................ 30698 ........................................................................ 30699 ........................................................................ 30700 ........................................................................ 30701 ........................................................................ 30702 ........................................................................ 30703 ........................................................................ 30704 ........................................................................ 30705 ........................................................................ 30706 ........................................................................ 30707 ........................................................................ 30708 ........................................................................ 30709 ........................................................................ 30710 ........................................................................ 30711 ........................................................................ 30712 ........................................................................ 30713 ........................................................................ 30714 ........................................................................ 30715 ........................................................................ 30716 ........................................................................ 30717 ........................................................................ 30718 ........................................................................ 30719 ........................................................................ 30720 ........................................................................ 30721 ........................................................................ 30722 ........................................................................ 30723 ........................................................................ 30724 ........................................................................ 30725 ........................................................................ 30726 ........................................................................ 30727 ........................................................................ 30728 ........................................................................ 30729 ........................................................................ 30730 ........................................................................ 30731 ........................................................................ 30732 ........................................................................ 30733 ........................................................................ 30734 ........................................................................ 30735 ........................................................................ 30736 ........................................................................ 30737 ........................................................................ 30738 ........................................................................ 30739 ........................................................................ 30740 ........................................................................ 30741 ........................................................................ 30742 ........................................................................ 30743 ........................................................................ 30744 ........................................................................ 30745 ........................................................................ 30746 ........................................................................ 30747 ........................................................................ 30748 ........................................................................ 30749 ........................................................................ 30750 ........................................................................ 30751 ........................................................................ 30752 ........................................................................ 30753 ........................................................................ 30754 ........................................................................ 30755 ........................................................................ 30756 ........................................................................ 30757 ........................................................................ 30758 ........................................................................ 30759 ........................................................................ 30760 ........................................................................ 30761 ........................................................................ 30762 ........................................................................ 30763 ........................................................................ 30764 ........................................................................ 30765 ........................................................................ 30766 ........................................................................ 30767 ........................................................................ 30768 ........................................................................ 30769 ........................................................................ 30770 ........................................................................ 30771 ........................................................................ 30772 ........................................................................ 30773 ........................................................................ 30774 ........................................................................ 30775 ........................................................................ 30776 ........................................................................ 30777 ........................................................................ 30778 ........................................................................ 30779 ........................................................................ 30780 ........................................................................ 30781 ........................................................................ 30782 ........................................................................ 30783 ........................................................................ 30784 ........................................................................ 30785 ........................................................................ 30786 ........................................................................ 30787 ........................................................................ 30788 ........................................................................ 30789 ........................................................................ 30790 ........................................................................ 30791 ........................................................................ 30792 ........................................................................ 30793 ........................................................................ 30794 ........................................................................ 30795 ........................................................................ 30796 ........................................................................ 30797 ........................................................................ 30798 ........................................................................ 30799 ........................................................................ 30800 ........................................................................ 30801 ........................................................................ 30802 ........................................................................ 30803 ........................................................................ 30804 ........................................................................ 30805 ........................................................................ 30806 ........................................................................ 30807 ........................................................................ 30808 ........................................................................ 30809 ........................................................................ 30810 ........................................................................ 30811 ........................................................................ 30812 ........................................................................ 30813 ........................................................................ 30814 ........................................................................ 30815 ........................................................................ 30816 ........................................................................ 30817 ........................................................................ 30818 ........................................................................ 30819 ........................................................................ 30820 ........................................................................ 30821 ........................................................................ 30822 ........................................................................ 30823 ........................................................................ 30824 ........................................................................ 30825 ........................................................................ 30826 ........................................................................ 30827 ........................................................................ 30828 ........................................................................ 30829 ........................................................................ 30830 ........................................................................ 30831 ........................................................................ 30832 ........................................................................ 30833 ........................................................................ 30834 ........................................................................ 30835 ........................................................................ 30836 ........................................................................ 30837 ........................................................................ 30838 ........................................................................ 30839 ........................................................................ 30840 ........................................................................ 30841 ........................................................................ 30842 ........................................................................ 30843 ........................................................................ 30844 ........................................................................ 30845 ........................................................................ 30846 ........................................................................ 30847 ........................................................................ 30848 ........................................................................ 30849 ........................................................................ 30850 ........................................................................ 30851 ........................................................................ 30852 ........................................................................ 30853 ........................................................................ 30854 ........................................................................ 30855 ........................................................................ 30856 ........................................................................ 30857 ........................................................................ 30858 ........................................................................ 30859 ........................................................................ 30860 ........................................................................ 30861 ........................................................................ 30862 ........................................................................ 30863 ........................................................................ 30864 ........................................................................ 30865 ........................................................................ 30866 ........................................................................ 30867 ........................................................................ 30868 ........................................................................ 30869 ........................................................................ 30870 ........................................................................ 30871 ........................................................................ 30872 ........................................................................ 30873 ........................................................................ 30874 ........................................................................ 30875 ........................................................................ 30876 ........................................................................ 30877 ........................................................................ 30878 ........................................................................ 30879 ........................................................................ 30880 ........................................................................ 30881 ........................................................................ 30882 ........................................................................ 30883 ........................................................................ 30884 ........................................................................ 30885 ........................................................................ 30886 ........................................................................ 30887 ........................................................................ 30888 ........................................................................ 30889 ........................................................................ 30890 ........................................................................ 30891 ........................................................................ 30892 ........................................................................ 30893 ........................................................................ 30894 ........................................................................ 30895 ........................................................................ 30896 ........................................................................ 30897 ........................................................................ 30898 ........................................................................ 30899 ........................................................................ 30900 ........................................................................ 30901 ........................................................................ 30902 ........................................................................ 30903 ........................................................................ 30904 ........................................................................ 30905 ........................................................................ 30906 ........................................................................ 30907 ........................................................................ 30908 ........................................................................ 30909 ........................................................................ 30910 ........................................................................ 30911 ........................................................................ 30912 ........................................................................ 30913 ........................................................................ 30914 ........................................................................ 30915 ........................................................................ 30916 ........................................................................ 30917 ........................................................................ 30918 ........................................................................ 30919 ........................................................................ 30920 ........................................................................ 30921 ........................................................................ 30922 ........................................................................ 30923 ........................................................................ 30924 ........................................................................ 30925 ........................................................................ 30926 ........................................................................ 30927 ........................................................................ 30928 ........................................................................ 30929 ........................................................................ 30930 ........................................................................ 30931 ........................................................................ 30932 ........................................................................ 30933 ........................................................................ 30934 ........................................................................ 30935 ........................................................................ 30936 ........................................................................ 30937 ........................................................................ 30938 ........................................................................ 30939 ........................................................................ 30940 ........................................................................ 30941 ........................................................................ 30942 ........................................................................ 30943 ........................................................................ 30944 ........................................................................ 30945 ........................................................................ 30946 ........................................................................ 30947 ........................................................................ 30948 ........................................................................ 30949 ........................................................................ 30950 ........................................................................ 30951 ........................................................................ 30952 ........................................................................ 30953 ........................................................................ 30954 ........................................................................ 30955 ........................................................................ 30956 ........................................................................ 30957 ........................................................................ 30958 ........................................................................ 30959 ........................................................................ 30960 ........................................................................ 30961 ........................................................................ 30962 ........................................................................ 30963 ........................................................................ 30964 ........................................................................ 30965 ........................................................................ 30966 ........................................................................ 30967 ........................................................................ 30968 ........................................................................ 30969 ........................................................................ 30970 ........................................................................ 30971 ........................................................................ 30972 ........................................................................ 30973 ........................................................................ 30974 ........................................................................ 30975 ........................................................................ 30976 ........................................................................ 30977 ........................................................................ 30978 ........................................................................ 30979 ........................................................................ 30980 ........................................................................ 30981 ........................................................................ 30982 ........................................................................ 30983 ........................................................................ 30984 ........................................................................ 30985 ........................................................................ 30986 ........................................................................ 30987 ........................................................................ 30988 ........................................................................ 30989 ........................................................................ 30990 ........................................................................ 30991 ........................................................................ 30992 ........................................................................ 30993 ........................................................................ 30994 ........................................................................ 30995 ........................................................................ 30996 ........................................................................ 30997 ........................................................................ 30998 ........................................................................ 30999 ........................................................................ 31000 ........................................................................ 31001 ........................................................................ 31002 ........................................................................ 31003 ........................................................................ 31004 ........................................................................ 31005 ........................................................................ 31006 ........................................................................ 31007 ........................................................................ 31008 ........................................................................ 31009 ........................................................................ 31010 ........................................................................ 31011 ........................................................................ 31012 ........................................................................ 31013 ........................................................................ 31014 ........................................................................ 31015 ........................................................................ 31016 ........................................................................ 31017 ........................................................................ 31018 ........................................................................ 31019 ........................................................................ 31020 ........................................................................ 31021 ........................................................................ 31022 ........................................................................ 31023 ........................................................................ 31024 ........................................................................ 31025 ........................................................................ 31026 ........................................................................ 31027 ........................................................................ 31028 ........................................................................ 31029 ........................................................................ 31030 ........................................................................ 31031 ........................................................................ 31032 ........................................................................ 31033 ........................................................................ 31034 ........................................................................ 31035 ........................................................................ 31036 ........................................................................ 31037 ........................................................................ 31038 ........................................................................ 31039 ........................................................................ 31040 ........................................................................ 31041 ........................................................................ 31042 ........................................................................ 31043 ........................................................................ 31044 ........................................................................ 31045 ........................................................................ 31046 ........................................................................ 31047 ........................................................................ 31048 ........................................................................ 31049 ........................................................................ 31050 ........................................................................ 31051 ........................................................................ 31052 ........................................................................ 31053 ........................................................................ 31054 ........................................................................ 31055 ........................................................................ 31056 ........................................................................ 31057 ........................................................................ 31058 ........................................................................ 31059 ........................................................................ 31060 ........................................................................ 31061 ........................................................................ 31062 ........................................................................ 31063 ........................................................................ 31064 ........................................................................ 31065 ........................................................................ 31066 ........................................................................ 31067 ........................................................................ 31068 ........................................................................ 31069 ........................................................................ 31070 ........................................................................ 31071 ........................................................................ 31072 ........................................................................ 31073 ........................................................................ 31074 ........................................................................ 31075 ........................................................................ 31076 ........................................................................ 31077 ........................................................................ 31078 ........................................................................ 31079 ........................................................................ 31080 ........................................................................ 31081 ........................................................................ 31082 ........................................................................ 31083 ........................................................................ 31084 ........................................................................ 31085 ........................................................................ 31086 ........................................................................ 31087 ........................................................................ 31088 ........................................................................ 31089 ........................................................................ 31090 ........................................................................ 31091 ........................................................................ 31092 ........................................................................ 31093 ........................................................................ 31094 ........................................................................ 31095 ........................................................................ 31096 ........................................................................ 31097 ........................................................................ 31098 ........................................................................ 31099 ........................................................................ 31100 ........................................................................ 31101 ........................................................................ 31102 ........................................................................ 31103 ........................................................................ 31104 ........................................................................ 31105 ........................................................................ 31106 ........................................................................ 31107 ........................................................................ 31108 ........................................................................ 31109 ........................................................................ 31110 ........................................................................ 31111 ........................................................................ 31112 ........................................................................ 31113 ........................................................................ 31114 ........................................................................ 31115 ........................................................................ 31116 ........................................................................ 31117 ........................................................................ 31118 ........................................................................ 31119 ........................................................................ 31120 ........................................................................ 31121 ........................................................................ 31122 ........................................................................ 31123 ........................................................................ 31124 ........................................................................ 31125 ........................................................................ 31126 ........................................................................ 31127 ........................................................................ 31128 ........................................................................ 31129 ........................................................................ 31130 ........................................................................ 31131 ........................................................................ 31132 ........................................................................ 31133 ........................................................................ 31134 ........................................................................ 31135 ........................................................................ 31136 ........................................................................ 31137 ........................................................................ 31138 ........................................................................ 31139 ........................................................................ 31140 ........................................................................ 31141 ........................................................................ 31142 ........................................................................ 31143 ........................................................................ 31144 ........................................................................ 31145 ........................................................................ 31146 ........................................................................ 31147 ........................................................................ 31148 ........................................................................ 31149 ........................................................................ 31150 ........................................................................ 31151 ........................................................................ 31152 ........................................................................ 31153 ........................................................................ 31154 ........................................................................ 31155 ........................................................................ 31156 ........................................................................ 31157 ........................................................................ 31158 ........................................................................ 31159 ........................................................................ 31160 ........................................................................ 31161 ........................................................................ 31162 ........................................................................ 31163 ........................................................................ 31164 ........................................................................ 31165 ........................................................................ 31166 ........................................................................ 31167 ........................................................................ 31168 ........................................................................ 31169 ........................................................................ 31170 ........................................................................ 31171 ........................................................................ 31172 ........................................................................ 31173 ........................................................................ 31174 ........................................................................ 31175 ........................................................................ 31176 ........................................................................ 31177 ........................................................................ 31178 ........................................................................ 31179 ........................................................................ 31180 ........................................................................ 31181 ........................................................................ 31182 ........................................................................ 31183 ........................................................................ 31184 ........................................................................ 31185 ........................................................................ 31186 ........................................................................ 31187 ........................................................................ 31188 ........................................................................ 31189 ........................................................................ 31190 ........................................................................ 31191 ........................................................................ 31192 ........................................................................ 31193 ........................................................................ 31194 ........................................................................ 31195 ........................................................................ 31196 ........................................................................ 31197 ........................................................................ 31198 ........................................................................ 31199 ........................................................................ 31200 ........................................................................ 31201 ........................................................................ 31202 ........................................................................ 31203 ........................................................................ 31204 ........................................................................ 31205 ........................................................................ 31206 ........................................................................ 31207 ........................................................................ 31208 ........................................................................ 31209 ........................................................................ 31210 ........................................................................ 31211 ........................................................................ 31212 ........................................................................ 31213 ........................................................................ 31214 ........................................................................ 31215 ........................................................................ 31216 ........................................................................ 31217 ........................................................................ 31218 ........................................................................ 31219 ........................................................................ 31220 ........................................................................ 31221 ........................................................................ 31222 ........................................................................ 31223 ........................................................................ 31224 ........................................................................ 31225 ........................................................................ 31226 ........................................................................ 31227 ........................................................................ 31228 ........................................................................ 31229 ........................................................................ 31230 ........................................................................ 31231 ........................................................................ 31232 ........................................................................ 31233 ........................................................................ 31234 ........................................................................ 31235 ........................................................................ 31236 ........................................................................ 31237 ........................................................................ 31238 ........................................................................ 31239 ........................................................................ 31240 ........................................................................ 31241 ........................................................................ 31242 ........................................................................ 31243 ........................................................................ 31244 ........................................................................ 31245 ........................................................................ 31246 ........................................................................ 31247 ........................................................................ 31248 ........................................................................ 31249 ........................................................................ 31250 ........................................................................ 31251 ........................................................................ 31252 ........................................................................ 31253 ........................................................................ 31254 ........................................................................ 31255 ........................................................................ 31256 ........................................................................ 31257 ........................................................................ 31258 ........................................................................ 31259 ........................................................................ 31260 ........................................................................ 31261 ........................................................................ 31262 ........................................................................ 31263 ........................................................................ 31264 ........................................................................ 31265 ........................................................................ 31266 ........................................................................ 31267 ........................................................................ 31268 ........................................................................ 31269 ........................................................................ 31270 ........................................................................ 31271 ........................................................................ 31272 ........................................................................ 31273 ........................................................................ 31274 ........................................................................ 31275 ........................................................................ 31276 ........................................................................ 31277 ........................................................................ 31278 ........................................................................ 31279 ........................................................................ 31280 ........................................................................ 31281 ........................................................................ 31282 ........................................................................ 31283 ........................................................................ 31284 ........................................................................ 31285 ........................................................................ 31286 ........................................................................ 31287 ........................................................................ 31288 ........................................................................ 31289 ........................................................................ 31290 ........................................................................ 31291 ........................................................................ 31292 ........................................................................ 31293 ........................................................................ 31294 ........................................................................ 31295 ........................................................................ 31296 ........................................................................ 31297 ........................................................................ 31298 ........................................................................ 31299 ........................................................................ 31300 ........................................................................ 31301 ........................................................................ 31302 ........................................................................ 31303 ........................................................................ 31304 ........................................................................ 31305 ........................................................................ 31306 ........................................................................ 31307 ........................................................................ 31308 ........................................................................ 31309 ........................................................................ 31310 ........................................................................ 31311 ........................................................................ 31312 ........................................................................ 31313 ........................................................................ 31314 ........................................................................ 31315 ........................................................................ 31316 ........................................................................ 31317 ........................................................................ 31318 ........................................................................ 31319 ........................................................................ 31320 ........................................................................ 31321 ........................................................................ 31322 ........................................................................ 31323 ........................................................................ 31324 ........................................................................ 31325 ........................................................................ 31326 ........................................................................ 31327 ........................................................................ 31328 ........................................................................ 31329 ........................................................................ 31330 ........................................................................ 31331 ........................................................................ 31332 ........................................................................ 31333 ........................................................................ 31334 ........................................................................ 31335 ........................................................................ 31336 ........................................................................ 31337 ........................................................................ 31338 ........................................................................ 31339 ........................................................................ 31340 ........................................................................ 31341 ........................................................................ 31342 ........................................................................ 31343 ........................................................................ 31344 ........................................................................ 31345 ........................................................................ 31346 ........................................................................ 31347 ........................................................................ 31348 ........................................................................ 31349 ........................................................................ 31350 ........................................................................ 31351 ........................................................................ 31352 ........................................................................ 31353 ........................................................................ 31354 ........................................................................ 31355 ........................................................................ 31356 ........................................................................ 31357 ........................................................................ 31358 ........................................................................ 31359 ........................................................................ 31360 ........................................................................ 31361 ........................................................................ 31362 ........................................................................ 31363 ........................................................................ 31364 ........................................................................ 31365 ........................................................................ 31366 ........................................................................ 31367 ........................................................................ 31368 ........................................................................ 31369 ........................................................................ 31370 ........................................................................ 31371 ........................................................................ 31372 ........................................................................ 31373 ........................................................................ 31374 ........................................................................ 31375 ........................................................................ 31376 ........................................................................ 31377 ........................................................................ 31378 ........................................................................ 31379 ........................................................................ 31380 ........................................................................ 31381 ........................................................................ 31382 ........................................................................ 31383 ........................................................................ 31384 ........................................................................ 31385 ........................................................................ 31386 ........................................................................ 31387 ........................................................................ 31388 ........................................................................ 31389 ........................................................................ 31390 ........................................................................ 31391 ........................................................................ 31392 ........................................................................ 31393 ........................................................................ 31394 ........................................................................ 31395 ........................................................................ 31396 ........................................................................ 31397 ........................................................................ 31398 ........................................................................ 31399 ........................................................................ 31400 ........................................................................ 31401 ........................................................................ 31402 ........................................................................ 31403 ........................................................................ 31404 ........................................................................ 31405 ........................................................................ 31406 ........................................................................ 31407 ........................................................................ 31408 ........................................................................ 31409 ........................................................................ 31410 ........................................................................ 31411 ........................................................................ 31412 ........................................................................ 31413 ........................................................................ 31414 ........................................................................ 31415 ........................................................................ 31416 ........................................................................ 31417 ........................................................................ 31418 ........................................................................ 31419 ........................................................................ 31420 ........................................................................ 31421 ........................................................................ 31422 ........................................................................ 31423 ........................................................................ 31424 ........................................................................ 31425 ........................................................................ 31426 ........................................................................ 31427 ........................................................................ 31428 ........................................................................ 31429 ........................................................................ 31430 ........................................................................ 31431 ........................................................................ 31432 ........................................................................ 31433 ........................................................................ 31434 ........................................................................ 31435 ........................................................................ 31436 ........................................................................ 31437 ........................................................................ 31438 ........................................................................ 31439 ........................................................................ 31440 ........................................................................ 31441 ........................................................................ 31442 ........................................................................ 31443 ........................................................................ 31444 ........................................................................ 31445 ........................................................................ 31446 ........................................................................ 31447 ........................................................................ 31448 ........................................................................ 31449 ........................................................................ 31450 ........................................................................ 31451 ........................................................................ 31452 ........................................................................ 31453 ........................................................................ 31454 ........................................................................ 31455 ........................................................................ 31456 ........................................................................ 31457 ........................................................................ 31458 ........................................................................ 31459 ........................................................................ 31460 ........................................................................ 31461 ........................................................................ 31462 ........................................................................ 31463 ........................................................................ 31464 ........................................................................ 31465 ........................................................................ 31466 ........................................................................ 31467 ........................................................................ 31468 ........................................................................ 31469 ........................................................................ 31470 ........................................................................ 31471 ........................................................................ 31472 ........................................................................ 31473 ........................................................................ 31474 ........................................................................ 31475 ........................................................................ 31476 ........................................................................ 31477 ........................................................................ 31478 ........................................................................ 31479 ........................................................................ 31480 ........................................................................ 31481 ........................................................................ 31482 ........................................................................ 31483 ........................................................................ 31484 ........................................................................ 31485 ........................................................................ 31486 ........................................................................ 31487 ........................................................................ 31488 ........................................................................ 31489 ........................................................................ 31490 ........................................................................ 31491 ........................................................................ 31492 ........................................................................ 31493 ........................................................................ 31494 ........................................................................ 31495 ........................................................................ 31496 ........................................................................ 31497 ........................................................................ 31498 ........................................................................ 31499 ........................................................................ 31500 ........................................................................ 31501 ........................................................................ 31502 ........................................................................ 31503 ........................................................................ 31504 ........................................................................ 31505 ........................................................................ 31506 ........................................................................ 31507 ........................................................................ 31508 ........................................................................ 31509 ........................................................................ 31510 ........................................................................ 31511 ........................................................................ 31512 ........................................................................ 31513 ........................................................................ 31514 ........................................................................ 31515 ........................................................................ 31516 ........................................................................ 31517 ........................................................................ 31518 ........................................................................ 31519 ........................................................................ 31520 ........................................................................ 31521 ........................................................................ 31522 ........................................................................ 31523 ........................................................................ 31524 ........................................................................ 31525 ........................................................................ 31526 ........................................................................ 31527 ........................................................................ 31528 ........................................................................ 31529 ........................................................................ 31530 ........................................................................ 31531 ........................................................................ 31532 ........................................................................ 31533 ........................................................................ 31534 ........................................................................ 31535 ........................................................................ 31536 ........................................................................ 31537 ........................................................................ 31538 ........................................................................ 31539 ........................................................................ 31540 ........................................................................ 31541 ........................................................................ 31542 ........................................................................ 31543 ........................................................................ 31544 ........................................................................ 31545 ........................................................................ 31546 ........................................................................ 31547 ........................................................................ 31548 ........................................................................ 31549 ........................................................................ 31550 ........................................................................ 31551 ........................................................................ 31552 ........................................................................ 31553 ........................................................................ 31554 ........................................................................ 31555 ........................................................................ 31556 ........................................................................ 31557 ........................................................................ 31558 ........................................................................ 31559 ........................................................................ 31560 ........................................................................ 31561 ........................................................................ 31562 ........................................................................ 31563 ........................................................................ 31564 ........................................................................ 31565 ........................................................................ 31566 ........................................................................ 31567 ........................................................................ 31568 ........................................................................ 31569 ........................................................................ 31570 ........................................................................ 31571 ........................................................................ 31572 ........................................................................ 31573 ........................................................................ 31574 ........................................................................ 31575 ........................................................................ 31576 ........................................................................ 31577 ........................................................................ 31578 ........................................................................ 31579 ........................................................................ 31580 ........................................................................ 31581 ........................................................................ 31582 ........................................................................ 31583 ........................................................................ 31584 ........................................................................ 31585 ........................................................................ 31586 ........................................................................ 31587 ........................................................................ 31588 ........................................................................ 31589 ........................................................................ 31590 ........................................................................ 31591 ........................................................................ 31592 ........................................................................ 31593 ........................................................................ 31594 ........................................................................ 31595 ........................................................................ 31596 ........................................................................ 31597 ........................................................................ 31598 ........................................................................ 31599 ........................................................................ 31600 ........................................................................ 31601 ........................................................................ 31602 ........................................................................ 31603 ........................................................................ 31604 ........................................................................ 31605 ........................................................................ 31606 ........................................................................ 31607 ........................................................................ 31608 ........................................................................ 31609 ........................................................................ 31610 ........................................................................ 31611 ........................................................................ 31612 ........................................................................ 31613 ........................................................................ 31614 ........................................................................ 31615 ........................................................................ 31616 ........................................................................ 31617 ........................................................................ 31618 ........................................................................ 31619 ........................................................................ 31620 ........................................................................ 31621 ........................................................................ 31622 ........................................................................ 31623 ........................................................................ 31624 ........................................................................ 31625 ........................................................................ 31626 ........................................................................ 31627 ........................................................................ 31628 ........................................................................ 31629 ........................................................................ 31630 ........................................................................ 31631 ........................................................................ 31632 ........................................................................ 31633 ........................................................................ 31634 ........................................................................ 31635 ........................................................................ 31636 ........................................................................ 31637 ........................................................................ 31638 ........................................................................ 31639 ........................................................................ 31640 ........................................................................ 31641 ........................................................................ 31642 ........................................................................ 31643 ........................................................................ 31644 ........................................................................ 31645 ........................................................................ 31646 ........................................................................ 31647 ........................................................................ 31648 ........................................................................ 31649 ........................................................................ 31650 ........................................................................ 31651 ........................................................................ 31652 ........................................................................ 31653 ........................................................................ 31654 ........................................................................ 31655 ........................................................................ 31656 ........................................................................ 31657 ........................................................................ 31658 ........................................................................ 31659 ........................................................................ 31660 ........................................................................ 31661 ........................................................................ 31662 ........................................................................ 31663 ........................................................................ 31664 ........................................................................ 31665 ........................................................................ 31666 ........................................................................ 31667 ........................................................................ 31668 ........................................................................ 31669 ........................................................................ 31670 ........................................................................ 31671 ........................................................................ 31672 ........................................................................ 31673 ........................................................................ 31674 ........................................................................ 31675 ........................................................................ 31676 ........................................................................ 31677 ........................................................................ 31678 ........................................................................ 31679 ........................................................................ 31680 ........................................................................ 31681 ........................................................................ 31682 ........................................................................ 31683 ........................................................................ 31684 ........................................................................ 31685 ........................................................................ 31686 ........................................................................ 31687 ........................................................................ 31688 ........................................................................ 31689 ........................................................................ 31690 ........................................................................ 31691 ........................................................................ 31692 ........................................................................ 31693 ........................................................................ 31694 ........................................................................ 31695 ........................................................................ 31696 ........................................................................ 31697 ........................................................................ 31698 ........................................................................ 31699 ........................................................................ 31700 ........................................................................ 31701 ........................................................................ 31702 ........................................................................ 31703 ........................................................................ 31704 ........................................................................ 31705 ........................................................................ 31706 ........................................................................ 31707 ........................................................................ 31708 ........................................................................ 31709 ........................................................................ 31710 ........................................................................ 31711 ........................................................................ 31712 ........................................................................ 31713 ........................................................................ 31714 ........................................................................ 31715 ........................................................................ 31716 ........................................................................ 31717 ........................................................................ 31718 ........................................................................ 31719 ........................................................................ 31720 ........................................................................ 31721 ........................................................................ 31722 ........................................................................ 31723 ........................................................................ 31724 ........................................................................ 31725 ........................................................................ 31726 ........................................................................ 31727 ........................................................................ 31728 ........................................................................ 31729 ........................................................................ 31730 ........................................................................ 31731 ........................................................................ 31732 ........................................................................ 31733 ........................................................................ 31734 ........................................................................ 31735 ........................................................................ 31736 ........................................................................ 31737 ........................................................................ 31738 ........................................................................ 31739 ........................................................................ 31740 ........................................................................ 31741 ........................................................................ 31742 ........................................................................ 31743 ........................................................................ 31744 ........................................................................ 31745 ........................................................................ 31746 ........................................................................ 31747 ........................................................................ 31748 ........................................................................ 31749 ........................................................................ 31750 ........................................................................ 31751 ........................................................................ 31752 ........................................................................ 31753 ........................................................................ 31754 ........................................................................ 31755 ........................................................................ 31756 ........................................................................ 31757 ........................................................................ 31758 ........................................................................ 31759 ........................................................................ 31760 ........................................................................ 31761 ........................................................................ 31762 ........................................................................ 31763 ........................................................................ 31764 ........................................................................ 31765 ........................................................................ 31766 ........................................................................ 31767 ........................................................................ 31768 ........................................................................ 31769 ........................................................................ 31770 ........................................................................ 31771 ........................................................................ 31772 ........................................................................ 31773 ........................................................................ 31774 ........................................................................ 31775 ........................................................................ 31776 ........................................................................ 31777 ........................................................................ 31778 ........................................................................ 31779 ........................................................................ 31780 ........................................................................ 31781 ........................................................................ 31782 ........................................................................ 31783 ........................................................................ 31784 ........................................................................ 31785 ........................................................................ 31786 ........................................................................ 31787 ........................................................................ 31788 ........................................................................ 31789 ........................................................................ 31790 ........................................................................ 31791 ........................................................................ 31792 ........................................................................ 31793 ........................................................................ 31794 ........................................................................ 31795 ........................................................................ 31796 ........................................................................ 31797 ........................................................................ 31798 ........................................................................ 31799 ........................................................................ 31800 ........................................................................ 31801 ........................................................................ 31802 ........................................................................ 31803 ........................................................................ 31804 ........................................................................ 31805 ........................................................................ 31806 ........................................................................ 31807 ........................................................................ 31808 ........................................................................ 31809 ........................................................................ 31810 ........................................................................ 31811 ........................................................................ 31812 ........................................................................ 31813 ........................................................................ 31814 ........................................................................ 31815 ........................................................................ 31816 ........................................................................ 31817 ........................................................................ 31818 ........................................................................ 31819 ........................................................................ 31820 ........................................................................ 31821 ........................................................................ 31822 ........................................................................ 31823 ........................................................................ 31824 ........................................................................ 31825 ........................................................................ 31826 ........................................................................ 31827 ........................................................................ 31828 ........................................................................ 31829 ........................................................................ 31830 ........................................................................ 31831 ........................................................................ 31832 ........................................................................ 31833 ........................................................................ 31834 ........................................................................ 31835 ........................................................................ 31836 ........................................................................ 31837 ........................................................................ 31838 ........................................................................ 31839 ........................................................................ 31840 ........................................................................ 31841 ........................................................................ 31842 ........................................................................ 31843 ........................................................................ 31844 ........................................................................ 31845 ........................................................................ 31846 ........................................................................ 31847 ........................................................................ 31848 ........................................................................ 31849 ........................................................................ 31850 ........................................................................ 31851 ........................................................................ 31852 ........................................................................ 31853 ........................................................................ 31854 ........................................................................ 31855 ........................................................................ 31856 ........................................................................ 31857 ........................................................................ 31858 ........................................................................ 31859 ........................................................................ 31860 ........................................................................ 31861 ........................................................................ 31862 ........................................................................ 31863 ........................................................................ 31864 ........................................................................ 31865 ........................................................................ 31866 ........................................................................ 31867 ........................................................................ 31868 ........................................................................ 31869 ........................................................................ 31870 ........................................................................ 31871 ........................................................................ 31872 ........................................................................ 31873 ........................................................................ 31874 ........................................................................ 31875 ........................................................................ 31876 ........................................................................ 31877 ........................................................................ 31878 ........................................................................ 31879 ........................................................................ 31880 ........................................................................ 31881 ........................................................................ 31882 ........................................................................ 31883 ........................................................................ 31884 ........................................................................ 31885 ........................................................................ 31886 ........................................................................ 31887 ........................................................................ 31888 ........................................................................ 31889 ........................................................................ 31890 ........................................................................ 31891 ........................................................................ 31892 ........................................................................ 31893 ........................................................................ 31894 ........................................................................ 31895 ........................................................................ 31896 ........................................................................ 31897 ........................................................................ 31898 ........................................................................ 31899 ........................................................................ 31900 ........................................................................ 31901 ........................................................................ 31902 ........................................................................ 31903 ........................................................................ 31904 ........................................................................ 31905 ........................................................................ 31906 ........................................................................ 31907 ........................................................................ 31908 ........................................................................ 31909 ........................................................................ 31910 ........................................................................ 31911 ........................................................................ 31912 ........................................................................ 31913 ........................................................................ 31914 ........................................................................ 31915 ........................................................................ 31916 ........................................................................ 31917 ........................................................................ 31918 ........................................................................ 31919 ........................................................................ 31920 ........................................................................ 31921 ........................................................................ 31922 ........................................................................ 31923 ........................................................................ 31924 ........................................................................ 31925 ........................................................................ 31926 ........................................................................ 31927 ........................................................................ 31928 ........................................................................ 31929 ........................................................................ 31930 ........................................................................ 31931 ........................................................................ 31932 ........................................................................ 31933 ........................................................................ 31934 ........................................................................ 31935 ........................................................................ 31936 ........................................................................ 31937 ........................................................................ 31938 ........................................................................ 31939 ........................................................................ 31940 ........................................................................ 31941 ........................................................................ 31942 ........................................................................ 31943 ........................................................................ 31944 ........................................................................ 31945 ........................................................................ 31946 ........................................................................ 31947 ........................................................................ 31948 ........................................................................ 31949 ........................................................................ 31950 ........................................................................ 31951 ........................................................................ 31952 ........................................................................ 31953 ........................................................................ 31954 ........................................................................ 31955 ........................................................................ 31956 ........................................................................ 31957 ........................................................................ 31958 ........................................................................ 31959 ........................................................................ 31960 ........................................................................ 31961 ........................................................................ 31962 ........................................................................ 31963 ........................................................................ 31964 ........................................................................ 31965 ........................................................................ 31966 ........................................................................ 31967 ........................................................................ 31968 ........................................................................ 31969 ........................................................................ 31970 ........................................................................ 31971 ........................................................................ 31972 ........................................................................ 31973 ........................................................................ 31974 ........................................................................ 31975 ........................................................................ 31976 ........................................................................ 31977 ........................................................................ 31978 ........................................................................ 31979 ........................................................................ 31980 ........................................................................ 31981 ........................................................................ 31982 ........................................................................ 31983 ........................................................................ 31984 ........................................................................ 31985 ........................................................................ 31986 ........................................................................ 31987 ........................................................................ 31988 ........................................................................ 31989 ........................................................................ 31990 ........................................................................ 31991 ........................................................................ 31992 ........................................................................ 31993 ........................................................................ 31994 ........................................................................ 31995 ........................................................................ 31996 ........................................................................ 31997 ........................................................................ 31998 ........................................................................ 31999 ........................................................................ 32000 ........................................................................ 32001 ........................................................................ 32002 ........................................................................ 32003 ........................................................................ 32004 ........................................................................ 32005 ........................................................................ 32006 ........................................................................ 32007 ........................................................................ 32008 ........................................................................ 32009 ........................................................................ 32010 ........................................................................ 32011 ........................................................................ 32012 ........................................................................ 32013 ........................................................................ 32014 ........................................................................ 32015 ........................................................................ 32016 ........................................................................ 32017 ........................................................................ 32018 ........................................................................ 32019 ........................................................................ 32020 ........................................................................ 32021 ........................................................................ 32022 ........................................................................ 32023 ........................................................................ 32024 ........................................................................ 32025 ........................................................................ 32026 ........................................................................ 32027 ........................................................................ 32028 ........................................................................ 32029 ........................................................................ 32030 ........................................................................ 32031 ........................................................................ 32032 ........................................................................ 32033 ........................................................................ 32034 ........................................................................ 32035 ........................................................................ 32036 ........................................................................ 32037 ........................................................................ 32038 ........................................................................ 32039 ........................................................................ 32040 ........................................................................ 32041 ........................................................................ 32042 ........................................................................ 32043 ........................................................................ 32044 ........................................................................ 32045 ........................................................................ 32046 ........................................................................ 32047 ........................................................................ 32048 ........................................................................ 32049 ........................................................................ 32050 ........................................................................ 32051 ........................................................................ 32052 ........................................................................ 32053 ........................................................................ 32054 ........................................................................ 32055 ........................................................................ 32056 ........................................................................ 32057 ........................................................................ 32058 ........................................................................ 32059 ........................................................................ 32060 ........................................................................ 32061 ........................................................................ 32062 ........................................................................ 32063 ........................................................................ 32064 ........................................................................ 32065 ........................................................................ 32066 ........................................................................ 32067 ........................................................................ 32068 ........................................................................ 32069 ........................................................................ 32070 ........................................................................ 32071 ........................................................................ 32072 ........................................................................ 32073 ........................................................................ 32074 ........................................................................ 32075 ........................................................................ 32076 ........................................................................ 32077 ........................................................................ 32078 ........................................................................ 32079 ........................................................................ 32080 ........................................................................ 32081 ........................................................................ 32082 ........................................................................ 32083 ........................................................................ 32084 ........................................................................ 32085 ........................................................................ 32086 ........................................................................ 32087 ........................................................................ 32088 ........................................................................ 32089 ........................................................................ 32090 ........................................................................ 32091 ........................................................................ 32092 ........................................................................ 32093 ........................................................................ 32094 ........................................................................ 32095 ........................................................................ 32096 ........................................................................ 32097 ........................................................................ 32098 ........................................................................ 32099 ........................................................................ 32100 ........................................................................ 32101 ........................................................................ 32102 ........................................................................ 32103 ........................................................................ 32104 ........................................................................ 32105 ........................................................................ 32106 ........................................................................ 32107 ........................................................................ 32108 ........................................................................ 32109 ........................................................................ 32110 ........................................................................ 32111 ........................................................................ 32112 ........................................................................ 32113 ........................................................................ 32114 ........................................................................ 32115 ........................................................................ 32116 ........................................................................ 32117 ........................................................................ 32118 ........................................................................ 32119 ........................................................................ 32120 ........................................................................ 32121 ........................................................................ 32122 ........................................................................ 32123 ........................................................................ 32124 ........................................................................ 32125 ........................................................................ 32126 ........................................................................ 32127 ........................................................................ 32128 ........................................................................ 32129 ........................................................................ 32130 ........................................................................ 32131 ........................................................................ 32132 ........................................................................ 32133 ........................................................................ 32134 ........................................................................ 32135 ........................................................................ 32136 ........................................................................ 32137 ........................................................................ 32138 ........................................................................ 32139 ........................................................................ 32140 ........................................................................ 32141 ........................................................................ 32142 ........................................................................ 32143 ........................................................................ 32144 ........................................................................ 32145 ........................................................................ 32146 ........................................................................ 32147 ........................................................................ 32148 ........................................................................ 32149 ........................................................................ 32150 ........................................................................ 32151 ........................................................................ 32152 ........................................................................ 32153 ........................................................................ 32154 ........................................................................ 32155 ........................................................................ 32156 ........................................................................ 32157 ........................................................................ 32158 ........................................................................ 32159 ........................................................................ 32160 ........................................................................ 32161 ........................................................................ 32162 ........................................................................ 32163 ........................................................................ 32164 ........................................................................ 32165 ........................................................................ 32166 ........................................................................ 32167 ........................................................................ 32168 ........................................................................ 32169 ........................................................................ 32170 ........................................................................ 32171 ........................................................................ 32172 ........................................................................ 32173 ........................................................................ 32174 ........................................................................ 32175 ........................................................................ 32176 ........................................................................ 32177 ........................................................................ 32178 ........................................................................ 32179 ........................................................................ 32180 ........................................................................ 32181 ........................................................................ 32182 ........................................................................ 32183 ........................................................................ 32184 ........................................................................ 32185 ........................................................................ 32186 ........................................................................ 32187 ........................................................................ 32188 ........................................................................ 32189 ........................................................................ 32190 ........................................................................ 32191 ........................................................................ 32192 ........................................................................ 32193 ........................................................................ 32194 ........................................................................ 32195 ........................................................................ 32196 ........................................................................ 32197 ........................................................................ 32198 ........................................................................ 32199 ........................................................................ 32200 ........................................................................ 32201 ........................................................................ 32202 ........................................................................ 32203 ........................................................................ 32204 ........................................................................ 32205 ........................................................................ 32206 ........................................................................ 32207 ........................................................................ 32208 ........................................................................ 32209 ........................................................................ 32210 ........................................................................ 32211 ........................................................................ 32212 ........................................................................ 32213 ........................................................................ 32214 ........................................................................ 32215 ........................................................................ 32216 ........................................................................ 32217 ........................................................................ 32218 ........................................................................ 32219 ........................................................................ 32220 ........................................................................ 32221 ........................................................................ 32222 ........................................................................ 32223 ........................................................................ 32224 ........................................................................ 32225 ........................................................................ 32226 ........................................................................ 32227 ........................................................................ 32228 ........................................................................ 32229 ........................................................................ 32230 ........................................................................ 32231 ........................................................................ 32232 ........................................................................ 32233 ........................................................................ 32234 ........................................................................ 32235 ........................................................................ 32236 ........................................................................ 32237 ........................................................................ 32238 ........................................................................ 32239 ........................................................................ 32240 ........................................................................ 32241 ........................................................................ 32242 ........................................................................ 32243 ........................................................................ 32244 ........................................................................ 32245 ........................................................................ 32246 ........................................................................ 32247 ........................................................................ 32248 ........................................................................ 32249 ........................................................................ 32250 ........................................................................ 32251 ........................................................................ 32252 ........................................................................ 32253 ........................................................................ 32254 ........................................................................ 32255 ........................................................................ 32256 ........................................................................ 32257 ........................................................................ 32258 ........................................................................ 32259 ........................................................................ 32260 ........................................................................ 32261 ........................................................................ 32262 ........................................................................ 32263 ........................................................................ 32264 ........................................................................ 32265 ........................................................................ 32266 ........................................................................ 32267 ........................................................................ 32268 ........................................................................ 32269 ........................................................................ 32270 ........................................................................ 32271 ........................................................................ 32272 ........................................................................ 32273 ........................................................................ 32274 ........................................................................ 32275 ........................................................................ 32276 ........................................................................ 32277 ........................................................................ 32278 ........................................................................ 32279 ........................................................................ 32280 ........................................................................ 32281 ........................................................................ 32282 ........................................................................ 32283 ........................................................................ 32284 ........................................................................ 32285 ........................................................................ 32286 ........................................................................ 32287 ........................................................................ 32288 ........................................................................ 32289 ........................................................................ 32290 ........................................................................ 32291 ........................................................................ 32292 ........................................................................ 32293 ........................................................................ 32294 ........................................................................ 32295 ........................................................................ 32296 ........................................................................ 32297 ........................................................................ 32298 ........................................................................ 32299 ........................................................................ 32300 ........................................................................ 32301 ........................................................................ 32302 ........................................................................ 32303 ........................................................................ 32304 ........................................................................ 32305 ........................................................................ 32306 ........................................................................ 32307 ........................................................................ 32308 ........................................................................ 32309 ........................................................................ 32310 ........................................................................ 32311 ........................................................................ 32312 ........................................................................ 32313 ........................................................................ 32314 ........................................................................ 32315 ........................................................................ 32316 ........................................................................ 32317 ........................................................................ 32318 ........................................................................ 32319 ........................................................................ 32320 ........................................................................ 32321 ........................................................................ 32322 ........................................................................ 32323 ........................................................................ 32324 ........................................................................ 32325 ........................................................................ 32326 ........................................................................ 32327 ........................................................................ 32328 ........................................................................ 32329 ........................................................................ 32330 ........................................................................ 32331 ........................................................................ 32332 ........................................................................ 32333 ........................................................................ 32334 ........................................................................ 32335 ........................................................................ 32336 ........................................................................ 32337 ........................................................................ 32338 ........................................................................ 32339 ........................................................................ 32340 ........................................................................ 32341 ........................................................................ 32342 ........................................................................ 32343 ........................................................................ 32344 ........................................................................ 32345 ........................................................................ 32346 ........................................................................ 32347 ........................................................................ 32348 ........................................................................ 32349 ........................................................................ 32350 ........................................................................ 32351 ........................................................................ 32352 ........................................................................ 32353 ........................................................................ 32354 ........................................................................ 32355 ........................................................................ 32356 ........................................................................ 32357 ........................................................................ 32358 ........................................................................ 32359 ........................................................................ 32360 ........................................................................ 32361 ........................................................................ 32362 ........................................................................ 32363 ........................................................................ 32364 ........................................................................ 32365 ........................................................................ 32366 ........................................................................ 32367 ........................................................................ 32368 ........................................................................ 32369 ........................................................................ 32370 ........................................................................ 32371 ........................................................................ 32372 ........................................................................ 32373 ........................................................................ 32374 ........................................................................ 32375 ........................................................................ 32376 ........................................................................ 32377 ........................................................................ 32378 ........................................................................ 32379 ........................................................................ 32380 ........................................................................ 32381 ........................................................................ 32382 ........................................................................ 32383 ........................................................................ 32384 ........................................................................ 32385 ........................................................................ 32386 ........................................................................ 32387 ........................................................................ 32388 ........................................................................ 32389 ........................................................................ 32390 ........................................................................ 32391 ........................................................................ 32392 ........................................................................ 32393 ........................................................................ 32394 ........................................................................ 32395 ........................................................................ 32396 ........................................................................ 32397 ........................................................................ 32398 ........................................................................ 32399 ........................................................................ 32400 ........................................................................ 32401 ........................................................................ 32402 ........................................................................ 32403 ........................................................................ 32404 ........................................................................ 32405 ........................................................................ 32406 ........................................................................ 32407 ........................................................................ 32408 ........................................................................ 32409 ........................................................................ 32410 ........................................................................ 32411 ........................................................................ 32412 ........................................................................ 32413 ........................................................................ 32414 ........................................................................ 32415 ........................................................................ 32416 ........................................................................ 32417 ........................................................................ 32418 ........................................................................ 32419 ........................................................................ 32420 ........................................................................ 32421 ........................................................................ 32422 ........................................................................ 32423 ........................................................................ 32424 ........................................................................ 32425 ........................................................................ 32426 ........................................................................ 32427 ........................................................................ 32428 ........................................................................ 32429 ........................................................................ 32430 ........................................................................ 32431 ........................................................................ 32432 ........................................................................ 32433 ........................................................................ 32434 ........................................................................ 32435 ........................................................................ 32436 ........................................................................ 32437 ........................................................................ 32438 ........................................................................ 32439 ........................................................................ 32440 ........................................................................ 32441 ........................................................................ 32442 ........................................................................ 32443 ........................................................................ 32444 ........................................................................ 32445 ........................................................................ 32446 ........................................................................ 32447 ........................................................................ 32448 ........................................................................ 32449 ........................................................................ 32450 ........................................................................ 32451 ........................................................................ 32452 ........................................................................ 32453 ........................................................................ 32454 ........................................................................ 32455 ........................................................................ 32456 ........................................................................ 32457 ........................................................................ 32458 ........................................................................ 32459 ........................................................................ 32460 ........................................................................ 32461 ........................................................................ 32462 ........................................................................ 32463 ........................................................................ 32464 ........................................................................ 32465 ........................................................................ 32466 ........................................................................ 32467 ........................................................................ 32468 ........................................................................ 32469 ........................................................................ 32470 ........................................................................ 32471 ........................................................................ 32472 ........................................................................ 32473 ........................................................................ 32474 ........................................................................ 32475 ........................................................................ 32476 ........................................................................ 32477 ........................................................................ 32478 ........................................................................ 32479 ........................................................................ 32480 ........................................................................ 32481 ........................................................................ 32482 ........................................................................ 32483 ........................................................................ 32484 ........................................................................ 32485 ........................................................................ 32486 ........................................................................ 32487 ........................................................................ 32488 ........................................................................ 32489 ........................................................................ 32490 ........................................................................ 32491 ........................................................................ 32492 ........................................................................ 32493 ........................................................................ 32494 ........................................................................ 32495 ........................................................................ 32496 ........................................................................ 32497 ........................................................................ 32498 ........................................................................ 32499 ........................................................................ 32500 ........................................................................ 32501 ........................................................................ 32502 ........................................................................ 32503 ........................................................................ 32504 ........................................................................ 32505 ........................................................................ 32506 ........................................................................ 32507 ........................................................................ 32508 ........................................................................ 32509 ........................................................................ 32510 ........................................................................ 32511 ........................................................................ 32512 ........................................................................ 32513 ........................................................................ 32514 ........................................................................ 32515 ........................................................................ 32516 ........................................................................ 32517 ........................................................................ 32518 ........................................................................ 32519 ........................................................................ 32520 ........................................................................ 32521 ........................................................................ 32522 ........................................................................ 32523 ........................................................................ 32524 ........................................................................ 32525 ........................................................................ 32526 ........................................................................ 32527 ........................................................................ 32528 ........................................................................ 32529 ........................................................................ 32530 ........................................................................ 32531 ........................................................................ 32532 ........................................................................ 32533 ........................................................................ 32534 ........................................................................ 32535 ........................................................................ 32536 ........................................................................ 32537 ........................................................................ 32538 ........................................................................ 32539 ........................................................................ 32540 ........................................................................ 32541 ........................................................................ 32542 ........................................................................ 32543 ........................................................................ 32544 ........................................................................ 32545 ........................................................................ 32546 ........................................................................ 32547 ........................................................................ 32548 ........................................................................ 32549 ........................................................................ 32550 ........................................................................ 32551 ........................................................................ 32552 ........................................................................ 32553 ........................................................................ 32554 ........................................................................ 32555 ........................................................................ 32556 ........................................................................ 32557 ........................................................................ 32558 ........................................................................ 32559 ........................................................................ 32560 ........................................................................ 32561 ........................................................................ 32562 ........................................................................ 32563 ........................................................................ 32564 ........................................................................ 32565 ........................................................................ 32566 ........................................................................ 32567 ........................................................................ 32568 ........................................................................ 32569 ........................................................................ 32570 ........................................................................ 32571 ........................................................................ 32572 ........................................................................ 32573 ........................................................................ 32574 ........................................................................ 32575 ........................................................................ 32576 ........................................................................ 32577 ........................................................................ 32578 ........................................................................ 32579 ........................................................................ 32580 ........................................................................ 32581 ........................................................................ 32582 ........................................................................ 32583 ........................................................................ 32584 ........................................................................ 32585 ........................................................................ 32586 ........................................................................ 32587 ........................................................................ 32588 ........................................................................ 32589 ........................................................................ 32590 ........................................................................ 32591 ........................................................................ 32592 ........................................................................ 32593 ........................................................................ 32594 ........................................................................ 32595 ........................................................................ 32596 ........................................................................ 32597 ........................................................................ 32598 ........................................................................ 32599 ........................................................................ 32600 ........................................................................ 32601 ........................................................................ 32602 ........................................................................ 32603 ........................................................................ 32604 ........................................................................ 32605 ........................................................................ 32606 ........................................................................ 32607 ........................................................................ 32608 ........................................................................ 32609 ........................................................................ 32610 ........................................................................ 32611 ........................................................................ 32612 ........................................................................ 32613 ........................................................................ 32614 ........................................................................ 32615 ........................................................................ 32616 ........................................................................ 32617 ........................................................................ 32618 ........................................................................ 32619 ........................................................................ 32620 ........................................................................ 32621 ........................................................................ 32622 ........................................................................ 32623 ........................................................................ 32624 ........................................................................ 32625 ........................................................................ 32626 ........................................................................ 32627 ........................................................................ 32628 ........................................................................ 32629 ........................................................................ 32630 ........................................................................ 32631 ........................................................................ 32632 ........................................................................ 32633 ........................................................................ 32634 ........................................................................ 32635 ........................................................................ 32636 ........................................................................ 32637 ........................................................................ 32638 ........................................................................ 32639 ........................................................................ 32640 ........................................................................ 32641 ........................................................................ 32642 ........................................................................ 32643 ........................................................................ 32644 ........................................................................ 32645 ........................................................................ 32646 ........................................................................ 32647 ........................................................................ 32648 ........................................................................ 32649 ........................................................................ 32650 ........................................................................ 32651 ........................................................................ 32652 ........................................................................ 32653 ........................................................................ 32654 ........................................................................ 32655 ........................................................................ 32656 ........................................................................ 32657 ........................................................................ 32658 ........................................................................ 32659 ........................................................................ 32660 ........................................................................ 32661 ........................................................................ 32662 ........................................................................ 32663 ........................................................................ 32664 ........................................................................ 32665 ........................................................................ 32666 ........................................................................ 32667 ........................................................................ 32668 ........................................................................ 32669 ........................................................................ 32670 ........................................................................ 32671 ........................................................................ 32672 ........................................................................ 32673 ........................................................................ 32674 ........................................................................ 32675 ........................................................................ 32676 ........................................................................ 32677 ........................................................................ 32678 ........................................................................ 32679 ........................................................................ 32680 ........................................................................ 32681 ........................................................................ 32682 ........................................................................ 32683 ........................................................................ 32684 ........................................................................ 32685 ........................................................................ 32686 ........................................................................ 32687 ........................................................................ 32688 ........................................................................ 32689 ........................................................................ 32690 ........................................................................ 32691 ........................................................................ 32692 ........................................................................ 32693 ........................................................................ 32694 ........................................................................ 32695 ........................................................................ 32696 ........................................................................ 32697 ........................................................................ 32698 ........................................................................ 32699 ........................................................................ 32700 ........................................................................ 32701 ........................................................................ 32702 ........................................................................ 32703 ........................................................................ 32704 ........................................................................ 32705 ........................................................................ 32706 ........................................................................ 32707 ........................................................................ 32708 ........................................................................ 32709 ........................................................................ 32710 ........................................................................ 32711 ........................................................................ 32712 ........................................................................ 32713 ........................................................................ 32714 ........................................................................ 32715 ........................................................................ 32716 ........................................................................ 32717 ........................................................................ 32718 ........................................................................ 32719 ........................................................................ 32720 ........................................................................ 32721 ........................................................................ 32722 ........................................................................ 32723 ........................................................................ 32724 ........................................................................ 32725 ........................................................................ 32726 ........................................................................ 32727 ........................................................................ 32728 ........................................................................ 32729 ........................................................................ 32730 ........................................................................ 32731 ........................................................................ 32732 ........................................................................ 32733 ........................................................................ 32734 ........................................................................ 32735 ........................................................................ 32736 ........................................................................ 32737 ........................................................................ 32738 ........................................................................ 32739 ........................................................................ 32740 ........................................................................ 32741 ........................................................................ 32742 ........................................................................ 32743 ........................................................................ 32744 ........................................................................ 32745 ........................................................................ 32746 ........................................................................ 32747 ........................................................................ 32748 ........................................................................ 32749 ........................................................................ 32750 ........................................................................ 32751 ........................................................................ 32752 ........................................................................ 32753 ........................................................................ 32754 ........................................................................ 32755 ........................................................................ 32756 ........................................................................ 32757 ........................................................................ 32758 ........................................................................ 32759 ........................................................................ 32760 ........................................................................ 32761 ........................................................................ 32762 ........................................................................ 32763 ........................................................................ 32764 ........................................................................ 32765 ........................................................................ 32766 ........................................................................ 32767 ........................................................................ 32768 ........................................................................ 32769 ........................................................................ 32770 ........................................................................ 32771 ........................................................................ 32772 ........................................................................ 32773 ........................................................................ 32774 ........................................................................ 32775 ........................................................................ 32776 ........................................................................ 32777 ........................................................................ 32778 ........................................................................ 32779 ........................................................................ 32780 ........................................................................ 32781 ........................................................................ 32782 ........................................................................ 32783 ........................................................................ 32784 ........................................................................ 32785 ........................................................................ 32786 ........................................................................ 32787 ........................................................................ 32788 ........................................................................ 32789 ........................................................................ 32790 ........................................................................ 32791 ........................................................................ 32792 ........................................................................ 32793 ........................................................................ 32794 ........................................................................ 32795 ........................................................................ 32796 ........................................................................ 32797 ........................................................................ 32798 ........................................................................ 32799 ........................................................................ 32800 ........................................................................ 32801 ........................................................................ 32802 ........................................................................ 32803 ........................................................................ 32804 ........................................................................ 32805 ........................................................................ 32806 ........................................................................ 32807 ........................................................................ 32808 ........................................................................ 32809 ........................................................................ 32810 ........................................................................ 32811 ........................................................................ 32812 ........................................................................ 32813 ........................................................................ 32814 ........................................................................ 32815 ........................................................................ 32816 ........................................................................ 32817 ........................................................................ 32818 ........................................................................ 32819 ........................................................................ 32820 ........................................................................ 32821 ........................................................................ 32822 ........................................................................ 32823 ........................................................................ 32824 ........................................................................ 32825 ........................................................................ 32826 ........................................................................ 32827 ........................................................................ 32828 ........................................................................ 32829 ........................................................................ 32830 ........................................................................ 32831 ........................................................................ 32832 ........................................................................ 32833 ........................................................................ 32834 ........................................................................ 32835 ........................................................................ 32836 ........................................................................ 32837 ........................................................................ 32838 ........................................................................ 32839 ........................................................................ 32840 ........................................................................ 32841 ........................................................................ 32842 ........................................................................ 32843 ........................................................................ 32844 ........................................................................ 32845 ........................................................................ 32846 ........................................................................ 32847 ........................................................................ 32848 ........................................................................ 32849 ........................................................................ 32850 ........................................................................ 32851 ........................................................................ 32852 ........................................................................ 32853 ........................................................................ 32854 ........................................................................ 32855 ........................................................................ 32856 ........................................................................ 32857 ........................................................................ 32858 ........................................................................ 32859 ........................................................................ 32860 ........................................................................ 32861 ........................................................................ 32862 ........................................................................ 32863 ........................................................................ 32864 ........................................................................ 32865 ........................................................................ 32866 ........................................................................ 32867 ........................................................................ 32868 ........................................................................ 32869 ........................................................................ 32870 ........................................................................ 32871 ........................................................................ 32872 ........................................................................ 32873 ........................................................................ 32874 ........................................................................ 32875 ........................................................................ 32876 ........................................................................ 32877 ........................................................................ 32878 ........................................................................ 32879 ........................................................................ 32880 ........................................................................ 32881 ........................................................................ 32882 ........................................................................ 32883 ........................................................................ 32884 ........................................................................ 32885 ........................................................................ 32886 ........................................................................ 32887 ........................................................................ 32888 ........................................................................ 32889 ........................................................................ 32890 ........................................................................ 32891 ........................................................................ 32892 ........................................................................ 32893 ........................................................................ 32894 ........................................................................ 32895 ........................................................................ 32896 ........................................................................ 32897 ........................................................................ 32898 ........................................................................ 32899 ........................................................................ 32900 ........................................................................ 32901 ........................................................................ 32902 ........................................................................ 32903 ........................................................................ 32904 ........................................................................ 32905 ........................................................................ 32906 ........................................................................ 32907 ........................................................................ 32908 ........................................................................ 32909 ........................................................................ 32910 ........................................................................ 32911 ........................................................................ 32912 ........................................................................ 32913 ........................................................................ 32914 ........................................................................ 32915 ........................................................................ 32916 ........................................................................ 32917 ........................................................................ 32918 ........................................................................ 32919 ........................................................................ 32920 ........................................................................ 32921 ........................................................................ 32922 ........................................................................ 32923 ........................................................................ 32924 ........................................................................ 32925 ........................................................................ 32926 ........................................................................ 32927 ........................................................................ 32928 ........................................................................ 32929 ........................................................................ 32930 ........................................................................ 32931 ........................................................................ 32932 ........................................................................ 32933 ........................................................................ 32934 ........................................................................ 32935 ........................................................................ 32936 ........................................................................ 32937 ........................................................................ 32938 ........................................................................ 32939 ........................................................................ 32940 ........................................................................ 32941 ........................................................................ 32942 ........................................................................ 32943 ........................................................................ 32944 ........................................................................ 32945 ........................................................................ 32946 ........................................................................ 32947 ........................................................................ 32948 ........................................................................ 32949 ........................................................................ 32950 ........................................................................ 32951 ........................................................................ 32952 ........................................................................ 32953 ........................................................................ 32954 ........................................................................ 32955 ........................................................................ 32956 ........................................................................ 32957 ........................................................................ 32958 ........................................................................ 32959 ........................................................................ 32960 ........................................................................ 32961 ........................................................................ 32962 ........................................................................ 32963 ........................................................................ 32964 ........................................................................ 32965 ........................................................................ 32966 ........................................................................ 32967 ........................................................................ 32968 ........................................................................ 32969 ........................................................................ 32970 ........................................................................ 32971 ........................................................................ 32972 ........................................................................ 32973 ........................................................................ 32974 ........................................................................ 32975 ........................................................................ 32976 ........................................................................ 32977 ........................................................................ 32978 ........................................................................ 32979 ........................................................................ 32980 ........................................................................ 32981 ........................................................................ 32982 ........................................................................ 32983 ........................................................................ 32984 ........................................................................ 32985 ........................................................................ 32986 ........................................................................ 32987 ........................................................................ 32988 ........................................................................ 32989 ........................................................................ 32990 ........................................................................ 32991 ........................................................................ 32992 ........................................................................ 32993 ........................................................................ 32994 ........................................................................ 32995 ........................................................................ 32996 ........................................................................ 32997 ........................................................................ 32998 ........................................................................ 32999 ........................................................................ 33000 ........................................................................ 33001 ........................................................................ 33002 ........................................................................ 33003 ........................................................................ 33004 ........................................................................ 33005 ........................................................................ 33006 ........................................................................ 33007 ........................................................................ 33008 ........................................................................ 33009 ........................................................................ 33010 ........................................................................ 33011 ........................................................................ 33012 ........................................................................ 33013 ........................................................................ 33014 ........................................................................ 33015 ........................................................................ 33016 ........................................................................ 33017 ........................................................................ 33018 ........................................................................ 33019 ........................................................................ 33020 ........................................................................ 33021 ........................................................................ 33022 ........................................................................ 33023 ........................................................................ 33024 ........................................................................ 33025 ........................................................................ 33026 ........................................................................ 33027 ........................................................................ 33028 ........................................................................ 33029 ........................................................................ 33030 ........................................................................ 33031 ........................................................................ 33032 ........................................................................ 33033 ........................................................................ 33034 ........................................................................ 33035 ........................................................................ 33036 ........................................................................ 33037 ........................................................................ 33038 ........................................................................ 33039 ........................................................................ 33040 ........................................................................ 33041 ........................................................................ 33042 ........................................................................ 33043 ........................................................................ 33044 ........................................................................ 33045 ........................................................................ 33046 ........................................................................ 33047 ........................................................................ 33048 ........................................................................ 33049 ........................................................................ 33050 ........................................................................ 33051 ........................................................................ 33052 ........................................................................ 33053 ........................................................................ 33054 ........................................................................ 33055 ........................................................................ 33056 ........................................................................ 33057 ........................................................................ 33058 ........................................................................ 33059 ........................................................................ 33060 ........................................................................ 33061 ........................................................................ 33062 ........................................................................ 33063 ........................................................................ 33064 ........................................................................ 33065 ........................................................................ 33066 ........................................................................ 33067 ........................................................................ 33068 ........................................................................ 33069 ........................................................................ 33070 ........................................................................ 33071 ........................................................................ 33072 ........................................................................ 33073 ........................................................................ 33074 ........................................................................ 33075 ........................................................................ 33076 ........................................................................ 33077 ........................................................................ 33078 ........................................................................ 33079 ........................................................................ 33080 ........................................................................ 33081 ........................................................................ 33082 ........................................................................ 33083 ........................................................................ 33084 ........................................................................ 33085 ........................................................................ 33086 ........................................................................ 33087 ........................................................................ 33088 ........................................................................ 33089 ........................................................................ 33090 ........................................................................ 33091 ........................................................................ 33092 ........................................................................ 33093 ........................................................................ 33094 ........................................................................ 33095 ........................................................................ 33096 ........................................................................ 33097 ........................................................................ 33098 ........................................................................ 33099 ........................................................................ 33100 ........................................................................ 33101 ........................................................................ 33102 ........................................................................ 33103 ........................................................................ 33104 ........................................................................ 33105 ........................................................................ 33106 ........................................................................ 33107 ........................................................................ 33108 ........................................................................ 33109 ........................................................................ 33110 ........................................................................ 33111 ........................................................................ 33112 ........................................................................ 33113 ........................................................................ 33114 ........................................................................ 33115 ........................................................................ 33116 ........................................................................ 33117 ........................................................................ 33118 ........................................................................ 33119 ........................................................................ 33120 ........................................................................ 33121 ........................................................................ 33122 ........................................................................ 33123 ........................................................................ 33124 ........................................................................ 33125 ........................................................................ 33126 ........................................................................ 33127 ........................................................................ 33128 ........................................................................ 33129 ........................................................................ 33130 ........................................................................ 33131 ........................................................................ 33132 ........................................................................ 33133 ........................................................................ 33134 ........................................................................ 33135 ........................................................................ 33136 ........................................................................ 33137 ........................................................................ 33138 ........................................................................ 33139 ........................................................................ 33140 ........................................................................ 33141 ........................................................................ 33142 ........................................................................ 33143 ........................................................................ 33144 ........................................................................ 33145 ........................................................................ 33146 ........................................................................ 33147 ........................................................................ 33148 ........................................................................ 33149 ........................................................................ 33150 ........................................................................ 33151 ........................................................................ 33152 ........................................................................ 33153 ........................................................................ 33154 ........................................................................ 33155 ........................................................................ 33156 ........................................................................ 33157 ........................................................................ 33158 ........................................................................ 33159 ........................................................................ 33160 ........................................................................ 33161 ........................................................................ 33162 ........................................................................ 33163 ........................................................................ 33164 ........................................................................ 33165 ........................................................................ 33166 ........................................................................ 33167 ........................................................................ 33168 ........................................................................ 33169 ........................................................................ 33170 ........................................................................ 33171 ........................................................................ 33172 ........................................................................ 33173 ........................................................................ 33174 ........................................................................ 33175 ........................................................................ 33176 ........................................................................ 33177 ........................................................................ 33178 ........................................................................ 33179 ........................................................................ 33180 ........................................................................ 33181 ........................................................................ 33182 ........................................................................ 33183 ........................................................................ 33184 ........................................................................ 33185 ........................................................................ 33186 ........................................................................ 33187 ........................................................................ 33188 ........................................................................ 33189 ........................................................................ 33190 ........................................................................ 33191 ........................................................................ 33192 ........................................................................ 33193 ........................................................................ 33194 ........................................................................ 33195 ........................................................................ 33196 ........................................................................ 33197 ........................................................................ 33198 ........................................................................ 33199 ........................................................................ 33200 ........................................................................ 33201 ........................................................................ 33202 ........................................................................ 33203 ........................................................................ 33204 ........................................................................ 33205 ........................................................................ 33206 ........................................................................ 33207 ........................................................................ 33208 ........................................................................ 33209 ........................................................................ 33210 ........................................................................ 33211 ........................................................................ 33212 ........................................................................ 33213 ........................................................................ 33214 ........................................................................ 33215 ........................................................................ 33216 ........................................................................ 33217 ........................................................................ 33218 ........................................................................ 33219 ........................................................................ 33220 ........................................................................ 33221 ........................................................................ 33222 ........................................................................ 33223 ........................................................................ 33224 ........................................................................ 33225 ........................................................................ 33226 ........................................................................ 33227 ........................................................................ 33228 ........................................................................ 33229 ........................................................................ 33230 ........................................................................ 33231 ........................................................................ 33232 ........................................................................ 33233 ........................................................................ 33234 ........................................................................ 33235 ........................................................................ 33236 ........................................................................ 33237 ........................................................................ 33238 ........................................................................ 33239 ........................................................................ 33240 ........................................................................ 33241 ........................................................................ 33242 ........................................................................ 33243 ........................................................................ 33244 ........................................................................ 33245 ........................................................................ 33246 ........................................................................ 33247 ........................................................................ 33248 ........................................................................ 33249 ........................................................................ 33250 ........................................................................ 33251 ........................................................................ 33252 ........................................................................ 33253 ........................................................................ 33254 ........................................................................ 33255 ........................................................................ 33256 ........................................................................ 33257 ........................................................................ 33258 ........................................................................ 33259 ........................................................................ 33260 ........................................................................ 33261 ........................................................................ 33262 ........................................................................ 33263 ........................................................................ 33264 ........................................................................ 33265 ........................................................................ 33266 ........................................................................ 33267 ........................................................................ 33268 ........................................................................ 33269 ........................................................................ 33270 ........................................................................ 33271 ........................................................................ 33272 ........................................................................ 33273 ........................................................................ 33274 ........................................................................ 33275 ........................................................................ 33276 ........................................................................ 33277 ........................................................................ 33278 ........................................................................ 33279 ........................................................................ 33280 ........................................................................ 33281 ........................................................................ 33282 ........................................................................ 33283 ........................................................................ 33284 ........................................................................ 33285 ........................................................................ 33286 ........................................................................ 33287 ........................................................................ 33288 ........................................................................ 33289 ........................................................................ 33290 ........................................................................ 33291 ........................................................................ 33292 ........................................................................ 33293 ........................................................................ 33294 ........................................................................ 33295 ........................................................................ 33296 ........................................................................ 33297 ........................................................................ 33298 ........................................................................ 33299 ........................................................................ 33300 ........................................................................ 33301 ........................................................................ 33302 ........................................................................ 33303 ........................................................................ 33304 ........................................................................ 33305 ........................................................................ 33306 ........................................................................ 33307 ........................................................................ 33308 ........................................................................ 33309 ........................................................................ 33310 ........................................................................ 33311 ........................................................................ 33312 ........................................................................ 33313 ........................................................................ 33314 ........................................................................ 33315 ........................................................................ 33316 ........................................................................ 33317 ........................................................................ 33318 ........................................................................ 33319 ........................................................................ 33320 ........................................................................ 33321 ........................................................................ 33322 ........................................................................ 33323 ........................................................................ 33324 ........................................................................ 33325 ........................................................................ 33326 ........................................................................ 33327 ........................................................................ 33328 ........................................................................ 33329 ........................................................................ 33330 ........................................................................ 33331 ........................................................................ 33332 ........................................................................ 33333 ........................................................................ 33334 ........................................................................ 33335 ........................................................................ 33336 ........................................................................ 33337 ........................................................................ 33338 ........................................................................ 33339 ........................................................................ 33340 ........................................................................ 33341 ........................................................................ 33342 ........................................................................ 33343 ........................................................................ 33344 ........................................................................ 33345 ........................................................................ 33346 ........................................................................ 33347 ........................................................................ 33348 ........................................................................ 33349 ........................................................................ 33350 ........................................................................ 33351 ........................................................................ 33352 ........................................................................ 33353 ........................................................................ 33354 ........................................................................ 33355 ........................................................................ 33356 ........................................................................ 33357 ........................................................................ 33358 ........................................................................ 33359 ........................................................................ 33360 ........................................................................ 33361 ........................................................................ 33362 ........................................................................ 33363 ........................................................................ 33364 ........................................................................ 33365 ........................................................................ 33366 ........................................................................ 33367 ........................................................................ 33368 ........................................................................ 33369 ........................................................................ 33370 ........................................................................ 33371 ........................................................................ 33372 ........................................................................ 33373 ........................................................................ 33374 ........................................................................ 33375 ........................................................................ 33376 ........................................................................ 33377 ........................................................................ 33378 ........................................................................ 33379 ........................................................................ 33380 ........................................................................ 33381 ........................................................................ 33382 ........................................................................ 33383 ........................................................................ 33384 ........................................................................ 33385 ........................................................................ 33386 ........................................................................ 33387 ........................................................................ 33388 ........................................................................ 33389 ........................................................................ 33390 ........................................................................ 33391 ........................................................................ 33392 ........................................................................ 33393 ........................................................................ 33394 ........................................................................ 33395 ........................................................................ 33396 ........................................................................ 33397 ........................................................................ 33398 ........................................................................ 33399 ........................................................................ 33400 ........................................................................ 33401 ........................................................................ 33402 ........................................................................ 33403 ........................................................................ 33404 ........................................................................ 33405 ........................................................................ 33406 ........................................................................ 33407 ........................................................................ 33408 ........................................................................ 33409 ........................................................................ 33410 ........................................................................ 33411 ........................................................................ 33412 ........................................................................ 33413 ........................................................................ 33414 ........................................................................ 33415 ........................................................................ 33416 ........................................................................ 33417 ........................................................................ 33418 ........................................................................ 33419 ........................................................................ 33420 ........................................................................ 33421 ........................................................................ 33422 ........................................................................ 33423 ........................................................................ 33424 ........................................................................ 33425 ........................................................................ 33426 ........................................................................ 33427 ........................................................................ 33428 ........................................................................ 33429 ........................................................................ 33430 ........................................................................ 33431 ........................................................................ 33432 ........................................................................ 33433 ........................................................................ 33434 ........................................................................ 33435 ........................................................................ 33436 ........................................................................ 33437 ........................................................................ 33438 ........................................................................ 33439 ........................................................................ 33440 ........................................................................ 33441 ........................................................................ 33442 ........................................................................ 33443 ........................................................................ 33444 ........................................................................ 33445 ........................................................................ 33446 ........................................................................ 33447 ........................................................................ 33448 ........................................................................ 33449 ........................................................................ 33450 ........................................................................ 33451 ........................................................................ 33452 ........................................................................ 33453 ........................................................................ 33454 ........................................................................ 33455 ........................................................................ 33456 ........................................................................ 33457 ........................................................................ 33458 ........................................................................ 33459 ........................................................................ 33460 ........................................................................ 33461 ........................................................................ 33462 ........................................................................ 33463 ........................................................................ 33464 ........................................................................ 33465 ........................................................................ 33466 ........................................................................ 33467 ........................................................................ 33468 ........................................................................ 33469 ........................................................................ 33470 ........................................................................ 33471 ........................................................................ 33472 ........................................................................ 33473 ........................................................................ 33474 ........................................................................ 33475 ........................................................................ 33476 ........................................................................ 33477 ........................................................................ 33478 ........................................................................ 33479 ........................................................................ 33480 ........................................................................ 33481 ........................................................................ 33482 ........................................................................ 33483 ........................................................................ 33484 ........................................................................ 33485 ........................................................................ 33486 ........................................................................ 33487 ........................................................................ 33488 ........................................................................ 33489 ........................................................................ 33490 ........................................................................ 33491 ........................................................................ 33492 ........................................................................ 33493 ........................................................................ 33494 ........................................................................ 33495 ........................................................................ 33496 ........................................................................ 33497 ........................................................................ 33498 ........................................................................ 33499 ........................................................................ 33500 ........................................................................ 33501 ........................................................................ 33502 ........................................................................ 33503 ........................................................................ 33504 ........................................................................ 33505 ........................................................................ 33506 ........................................................................ 33507 ........................................................................ 33508 ........................................................................ 33509 ........................................................................ 33510 ........................................................................ 33511 ........................................................................ 33512 ........................................................................ 33513 ........................................................................ 33514 ........................................................................ 33515 ........................................................................ 33516 ........................................................................ 33517 ........................................................................ 33518 ........................................................................ 33519 ........................................................................ 33520 ........................................................................ 33521 ........................................................................ 33522 ........................................................................ 33523 ........................................................................ 33524 ........................................................................ 33525 ........................................................................ 33526 ........................................................................ 33527 ........................................................................ 33528 ........................................................................ 33529 ........................................................................ 33530 ........................................................................ 33531 ........................................................................ 33532 ........................................................................ 33533 ........................................................................ 33534 ........................................................................ 33535 ........................................................................ 33536 ........................................................................ 33537 ........................................................................ 33538 ........................................................................ 33539 ........................................................................ 33540 ........................................................................ 33541 ........................................................................ 33542 ........................................................................ 33543 ........................................................................ 33544 ........................................................................ 33545 ........................................................................ 33546 ........................................................................ 33547 ........................................................................ 33548 ........................................................................ 33549 ........................................................................ 33550 ........................................................................ 33551 ........................................................................ 33552 ........................................................................ 33553 ........................................................................ 33554 ........................................................................ 33555 ........................................................................ 33556 ........................................................................ 33557 ........................................................................ 33558 ........................................................................ 33559 ........................................................................ 33560 ........................................................................ 33561 ........................................................................ 33562 ........................................................................ 33563 ........................................................................ 33564 ........................................................................ 33565 ........................................................................ 33566 ........................................................................ 33567 ........................................................................ 33568 ........................................................................ 33569 ........................................................................ 33570 ........................................................................ 33571 ........................................................................ 33572 ........................................................................ 33573 ........................................................................ 33574 ........................................................................ 33575 ........................................................................ 33576 ........................................................................ 33577 ........................................................................ 33578 ........................................................................ 33579 ........................................................................ 33580 ........................................................................ 33581 ........................................................................ 33582 ........................................................................ 33583 ........................................................................ 33584 ........................................................................ 33585 ........................................................................ 33586 ........................................................................ 33587 ........................................................................ 33588 ........................................................................ 33589 ........................................................................ 33590 ........................................................................ 33591 ........................................................................ 33592 ........................................................................ 33593 ........................................................................ 33594 ........................................................................ 33595 ........................................................................ 33596 ........................................................................ 33597 ........................................................................ 33598 ........................................................................ 33599 ........................................................................ 33600 ........................................................................ 33601 ........................................................................ 33602 ........................................................................ 33603 ........................................................................ 33604 ........................................................................ 33605 ........................................................................ 33606 ........................................................................ 33607 ........................................................................ 33608 ........................................................................ 33609 ........................................................................ 33610 ........................................................................ 33611 ........................................................................ 33612 ........................................................................ 33613 ........................................................................ 33614 ........................................................................ 33615 ........................................................................ 33616 ........................................................................ 33617 ........................................................................ 33618 ........................................................................ 33619 ........................................................................ 33620 ........................................................................ 33621 ........................................................................ 33622 ........................................................................ 33623 ........................................................................ 33624 ........................................................................ 33625 ........................................................................ 33626 ........................................................................ 33627 ........................................................................ 33628 ........................................................................ 33629 ........................................................................ 33630 ........................................................................ 33631 ........................................................................ 33632 ........................................................................ 33633 ........................................................................ 33634 ........................................................................ 33635 ........................................................................ 33636 ........................................................................ 33637 ........................................................................ 33638 ........................................................................ 33639 ........................................................................ 33640 ........................................................................ 33641 ........................................................................ 33642 ........................................................................ 33643 ........................................................................ 33644 ........................................................................ 33645 ........................................................................ 33646 ........................................................................ 33647 ........................................................................ 33648 ........................................................................ 33649 ........................................................................ 33650 ........................................................................ 33651 ........................................................................ 33652 ........................................................................ 33653 ........................................................................ 33654 ........................................................................ 33655 ........................................................................ 33656 ........................................................................ 33657 ........................................................................ 33658 ........................................................................ 33659 ........................................................................ 33660 ........................................................................ 33661 ........................................................................ 33662 ........................................................................ 33663 ........................................................................ 33664 ........................................................................ 33665 ........................................................................ 33666 ........................................................................ 33667 ........................................................................ 33668 ........................................................................ 33669 ........................................................................ 33670 ........................................................................ 33671 ........................................................................ 33672 ........................................................................ 33673 ........................................................................ 33674 ........................................................................ 33675 ........................................................................ 33676 ........................................................................ 33677 ........................................................................ 33678 ........................................................................ 33679 ........................................................................ 33680 ........................................................................ 33681 ........................................................................ 33682 ........................................................................ 33683 ........................................................................ 33684 ........................................................................ 33685 ........................................................................ 33686 ........................................................................ 33687 ........................................................................ 33688 ........................................................................ 33689 ........................................................................ 33690 ........................................................................ 33691 ........................................................................ 33692 ........................................................................ 33693 ........................................................................ 33694 ........................................................................ 33695 ........................................................................ 33696 ........................................................................ 33697 ........................................................................ 33698 ........................................................................ 33699 ........................................................................ 33700 ........................................................................ 33701 ........................................................................ 33702 ........................................................................ 33703 ........................................................................ 33704 ........................................................................ 33705 ........................................................................ 33706 ........................................................................ 33707 ........................................................................ 33708 ........................................................................ 33709 ........................................................................ 33710 ........................................................................ 33711 ........................................................................ 33712 ........................................................................ 33713 ........................................................................ 33714 ........................................................................ 33715 ........................................................................ 33716 ........................................................................ 33717 ........................................................................ 33718 ........................................................................ 33719 ........................................................................ 33720 ........................................................................ 33721 ........................................................................ 33722 ........................................................................ 33723 ........................................................................ 33724 ........................................................................ 33725 ........................................................................ 33726 ........................................................................ 33727 ........................................................................ 33728 ........................................................................ 33729 ........................................................................ 33730 ........................................................................ 33731 ........................................................................ 33732 ........................................................................ 33733 ........................................................................ 33734 ........................................................................ 33735 ........................................................................ 33736 ........................................................................ 33737 ........................................................................ 33738 ........................................................................ 33739 ........................................................................ 33740 ........................................................................ 33741 ........................................................................ 33742 ........................................................................ 33743 ........................................................................ 33744 ........................................................................ 33745 ........................................................................ 33746 ........................................................................ 33747 ........................................................................ 33748 ........................................................................ 33749 ........................................................................ 33750 ........................................................................ 33751 ........................................................................ 33752 ........................................................................ 33753 ........................................................................ 33754 ........................................................................ 33755 ........................................................................ 33756 ........................................................................ 33757 ........................................................................ 33758 ........................................................................ 33759 ........................................................................ 33760 ........................................................................ 33761 ........................................................................ 33762 ........................................................................ 33763 ........................................................................ 33764 ........................................................................ 33765 ........................................................................ 33766 ........................................................................ 33767 ........................................................................ 33768 ........................................................................ 33769 ........................................................................ 33770 ........................................................................ 33771 ........................................................................ 33772 ........................................................................ 33773 ........................................................................ 33774 ........................................................................ 33775 ........................................................................ 33776 ........................................................................ 33777 ........................................................................ 33778 ........................................................................ 33779 ........................................................................ 33780 ........................................................................ 33781 ........................................................................ 33782 ........................................................................ 33783 ........................................................................ 33784 ........................................................................ 33785 ........................................................................ 33786 ........................................................................ 33787 ........................................................................ 33788 ........................................................................ 33789 ........................................................................ 33790 ........................................................................ 33791 ........................................................................ 33792 ........................................................................ 33793 ........................................................................ 33794 ........................................................................ 33795 ........................................................................ 33796 ........................................................................ 33797 ........................................................................ 33798 ........................................................................ 33799 ........................................................................ 33800 ........................................................................ 33801 ........................................................................ 33802 ........................................................................ 33803 ........................................................................ 33804 ........................................................................ 33805 ........................................................................ 33806 ........................................................................ 33807 ........................................................................ 33808 ........................................................................ 33809 ........................................................................ 33810 ........................................................................ 33811 ........................................................................ 33812 ........................................................................ 33813 ........................................................................ 33814 ........................................................................ 33815 ........................................................................ 33816 ........................................................................ 33817 ........................................................................ 33818 ........................................................................ 33819 ........................................................................ 33820 ........................................................................ 33821 ........................................................................ 33822 ........................................................................ 33823 ........................................................................ 33824 ........................................................................ 33825 ........................................................................ 33826 ........................................................................ 33827 ........................................................................ 33828 ........................................................................ 33829 ........................................................................ 33830 ........................................................................ 33831 ........................................................................ 33832 ........................................................................ 33833 ........................................................................ 33834 ........................................................................ 33835 ........................................................................ 33836 ........................................................................ 33837 ........................................................................ 33838 ........................................................................ 33839 ........................................................................ 33840 ........................................................................ 33841 ........................................................................ 33842 ........................................................................ 33843 ........................................................................ 33844 ........................................................................ 33845 ........................................................................ 33846 ........................................................................ 33847 ........................................................................ 33848 ........................................................................ 33849 ........................................................................ 33850 ........................................................................ 33851 ........................................................................ 33852 ........................................................................ 33853 ........................................................................ 33854 ........................................................................ 33855 ........................................................................ 33856 ........................................................................ 33857 ........................................................................ 33858 ........................................................................ 33859 ........................................................................ 33860 ........................................................................ 33861 ........................................................................ 33862 ........................................................................ 33863 ........................................................................ 33864 ........................................................................ 33865 ........................................................................ 33866 ........................................................................ 33867 ........................................................................ 33868 ........................................................................ 33869 ........................................................................ 33870 ........................................................................ 33871 ........................................................................ 33872 ........................................................................ 33873 ........................................................................ 33874 ........................................................................ 33875 ........................................................................ 33876 ........................................................................ 33877 ........................................................................ 33878 ........................................................................ 33879 ........................................................................ 33880 ........................................................................ 33881 ........................................................................ 33882 ........................................................................ 33883 ........................................................................ 33884 ........................................................................ 33885 ........................................................................ 33886 ........................................................................ 33887 ........................................................................ 33888 ........................................................................ 33889 ........................................................................ 33890 ........................................................................ 33891 ........................................................................ 33892 ........................................................................ 33893 ........................................................................ 33894 ........................................................................ 33895 ........................................................................ 33896 ........................................................................ 33897 ........................................................................ 33898 ........................................................................ 33899 ........................................................................ 33900 ........................................................................ 33901 ........................................................................ 33902 ........................................................................ 33903 ........................................................................ 33904 ........................................................................ 33905 ........................................................................ 33906 ........................................................................ 33907 ........................................................................ 33908 ........................................................................ 33909 ........................................................................ 33910 ........................................................................ 33911 ........................................................................ 33912 ........................................................................ 33913 ........................................................................ 33914 ........................................................................ 33915 ........................................................................ 33916 ........................................................................ 33917 ........................................................................ 33918 ........................................................................ 33919 ........................................................................ 33920 ........................................................................ 33921 ........................................................................ 33922 ........................................................................ 33923 ........................................................................ 33924 ........................................................................ 33925 ........................................................................ 33926 ........................................................................ 33927 ........................................................................ 33928 ........................................................................ 33929 ........................................................................ 33930 ........................................................................ 33931 ........................................................................ 33932 ........................................................................ 33933 ........................................................................ 33934 ........................................................................ 33935 ........................................................................ 33936 ........................................................................ 33937 ........................................................................ 33938 ........................................................................ 33939 ........................................................................ 33940 ........................................................................ 33941 ........................................................................ 33942 ........................................................................ 33943 ........................................................................ 33944 ........................................................................ 33945 ........................................................................ 33946 ........................................................................ 33947 ........................................................................ 33948 ........................................................................ 33949 ........................................................................ 33950 ........................................................................ 33951 ........................................................................ 33952 ........................................................................ 33953 ........................................................................ 33954 ........................................................................ 33955 ........................................................................ 33956 ........................................................................ 33957 ........................................................................ 33958 ........................................................................ 33959 ........................................................................ 33960 ........................................................................ 33961 ........................................................................ 33962 ........................................................................ 33963 ........................................................................ 33964 ........................................................................ 33965 ........................................................................ 33966 ........................................................................ 33967 ........................................................................ 33968 ........................................................................ 33969 ........................................................................ 33970 ........................................................................ 33971 ........................................................................ 33972 ........................................................................ 33973 ........................................................................ 33974 ........................................................................ 33975 ........................................................................ 33976 ........................................................................ 33977 ........................................................................ 33978 ........................................................................ 33979 ........................................................................ 33980 ........................................................................ 33981 ........................................................................ 33982 ........................................................................ 33983 ........................................................................ 33984 ........................................................................ 33985 ........................................................................ 33986 ........................................................................ 33987 ........................................................................ 33988 ........................................................................ 33989 ........................................................................ 33990 ........................................................................ 33991 ........................................................................ 33992 ........................................................................ 33993 ........................................................................ 33994 ........................................................................ 33995 ........................................................................ 33996 ........................................................................ 33997 ........................................................................ 33998 ........................................................................ 33999 ........................................................................ 34000 ........................................................................ 34001 ........................................................................ 34002 ........................................................................ 34003 ........................................................................ 34004 ........................................................................ 34005 ........................................................................ 34006 ........................................................................ 34007 ........................................................................ 34008 ........................................................................ 34009 ........................................................................ 34010 ........................................................................ 34011 ........................................................................ 34012 ........................................................................ 34013 ........................................................................ 34014 ........................................................................ 34015 ........................................................................ 34016 ........................................................................ 34017 ........................................................................ 34018 ........................................................................ 34019 ........................................................................ 34020 ........................................................................ 34021 ........................................................................ 34022 ........................................................................ 34023 ........................................................................ 34024 ........................................................................ 34025 ........................................................................ 34026 ........................................................................ 34027 ........................................................................ 34028 ........................................................................ 34029 ........................................................................ 34030 ........................................................................ 34031 ........................................................................ 34032 ........................................................................ 34033 ........................................................................ 34034 ........................................................................ 34035 ........................................................................ 34036 ........................................................................ 34037 ........................................................................ 34038 ........................................................................ 34039 ........................................................................ 34040 ........................................................................ 34041 ........................................................................ 34042 ........................................................................ 34043 ........................................................................ 34044 ........................................................................ 34045 ........................................................................ 34046 ........................................................................ 34047 ........................................................................ 34048 ........................................................................ 34049 ........................................................................ 34050 ........................................................................ 34051 ........................................................................ 34052 ........................................................................ 34053 ........................................................................ 34054 ........................................................................ 34055 ........................................................................ 34056 ........................................................................ 34057 ........................................................................ 34058 ........................................................................ 34059 ........................................................................ 34060 ........................................................................ 34061 ........................................................................ 34062 ........................................................................ 34063 ........................................................................ 34064 ........................................................................ 34065 ........................................................................ 34066 ........................................................................ 34067 ........................................................................ 34068 ........................................................................ 34069 ........................................................................ 34070 ........................................................................ 34071 ........................................................................ 34072 ........................................................................ 34073 ........................................................................ 34074 ........................................................................ 34075 ........................................................................ 34076 ........................................................................ 34077 ........................................................................ 34078 ........................................................................ 34079 ........................................................................ 34080 ........................................................................ 34081 ........................................................................ 34082 ........................................................................ 34083 ........................................................................ 34084 ........................................................................ 34085 ........................................................................ 34086 ........................................................................ 34087 ........................................................................ 34088 ........................................................................ 34089 ........................................................................ 34090 ........................................................................ 34091 ........................................................................ 34092 ........................................................................ 34093 ........................................................................ 34094 ........................................................................ 34095 ........................................................................ 34096 ........................................................................ 34097 ........................................................................ 34098 ........................................................................ 34099 ........................................................................ 34100 ........................................................................ 34101 ........................................................................ 34102 ........................................................................ 34103 ........................................................................ 34104 ........................................................................ 34105 ........................................................................ 34106 ........................................................................ 34107 ........................................................................ 34108 ........................................................................ 34109 ........................................................................ 34110 ........................................................................ 34111 ........................................................................ 34112 ........................................................................ 34113 ........................................................................ 34114 ........................................................................ 34115 ........................................................................ 34116 ........................................................................ 34117 ........................................................................ 34118 ........................................................................ 34119 ........................................................................ 34120 ........................................................................ 34121 ........................................................................ 34122 ........................................................................ 34123 ........................................................................ 34124 ........................................................................ 34125 ........................................................................ 34126 ........................................................................ 34127 ........................................................................ 34128 ........................................................................ 34129 ........................................................................ 34130 ........................................................................ 34131 ........................................................................ 34132 ........................................................................ 34133 ........................................................................ 34134 ........................................................................ 34135 ........................................................................ 34136 ........................................................................ 34137 ........................................................................ 34138 ........................................................................ 34139 ........................................................................ 34140 ........................................................................ 34141 ........................................................................ 34142 ........................................................................ 34143 ........................................................................ 34144 ........................................................................ 34145 ........................................................................ 34146 ........................................................................ 34147 ........................................................................ 34148 ........................................................................ 34149 ........................................................................ 34150 ........................................................................ 34151 ........................................................................ 34152 ........................................................................ 34153 ........................................................................ 34154 ........................................................................ 34155 ........................................................................ 34156 ........................................................................ 34157 ........................................................................ 34158 ........................................................................ 34159 ........................................................................ 34160 ........................................................................ 34161 ........................................................................ 34162 ........................................................................ 34163 ........................................................................ 34164 ........................................................................ 34165 ........................................................................ 34166 ........................................................................ 34167 ........................................................................ 34168 ........................................................................ 34169 ........................................................................ 34170 ........................................................................ 34171 ........................................................................ 34172 ........................................................................ 34173 ........................................................................ 34174 ........................................................................ 34175 ........................................................................ 34176 ........................................................................ 34177 ........................................................................ 34178 ........................................................................ 34179 ........................................................................ 34180 ........................................................................ 34181 ........................................................................ 34182 ........................................................................ 34183 ........................................................................ 34184 ........................................................................ 34185 ........................................................................ 34186 ........................................................................ 34187 ........................................................................ 34188 ........................................................................ 34189 ........................................................................ 34190 ........................................................................ 34191 ........................................................................ 34192 ........................................................................ 34193 ........................................................................ 34194 ........................................................................ 34195 ........................................................................ 34196 ........................................................................ 34197 ........................................................................ 34198 ........................................................................ 34199 ........................................................................ 34200 ........................................................................ 34201 ........................................................................ 34202 ........................................................................ 34203 ........................................................................ 34204 ........................................................................ 34205 ........................................................................ 34206 ........................................................................ 34207 ........................................................................ 34208 ........................................................................ 34209 ........................................................................ 34210 ........................................................................ 34211 ........................................................................ 34212 ........................................................................ 34213 ........................................................................ 34214 ........................................................................ 34215 ........................................................................ 34216 ........................................................................ 34217 ........................................................................ 34218 ........................................................................ 34219 ........................................................................ 34220 ........................................................................ 34221 ........................................................................ 34222 ........................................................................ 34223 ........................................................................ 34224 ........................................................................ 34225 ........................................................................ 34226 ........................................................................ 34227 ........................................................................ 34228 ........................................................................ 34229 ........................................................................ 34230 ........................................................................ 34231 ........................................................................ 34232 ........................................................................ 34233 ........................................................................ 34234 ........................................................................ 34235 ........................................................................ 34236 ........................................................................ 34237 ........................................................................ 34238 ........................................................................ 34239 ........................................................................ 34240 ........................................................................ 34241 ........................................................................ 34242 ........................................................................ 34243 ........................................................................ 34244 ........................................................................ 34245 ........................................................................ 34246 ........................................................................ 34247 ........................................................................ 34248 ........................................................................ 34249 ........................................................................ 34250 ........................................................................ 34251 ........................................................................ 34252 ........................................................................ 34253 ........................................................................ 34254 ........................................................................ 34255 ........................................................................ 34256 ........................................................................ 34257 ........................................................................ 34258 ........................................................................ 34259 ........................................................................ 34260 ........................................................................ 34261 ........................................................................ 34262 ........................................................................ 34263 ........................................................................ 34264 ........................................................................ 34265 ........................................................................ 34266 ........................................................................ 34267 ........................................................................ 34268 ........................................................................ 34269 ........................................................................ 34270 ........................................................................ 34271 ........................................................................ 34272 ........................................................................ 34273 ........................................................................ 34274 ........................................................................ 34275 ........................................................................ 34276 ........................................................................ 34277 ........................................................................ 34278 ........................................................................ 34279 ........................................................................ 34280 ........................................................................ 34281 ........................................................................ 34282 ........................................................................ 34283 ........................................................................ 34284 ........................................................................ 34285 ........................................................................ 34286 ........................................................................ 34287 ........................................................................ 34288 ........................................................................ 34289 ........................................................................ 34290 ........................................................................ 34291 ........................................................................ 34292 ........................................................................ 34293 ........................................................................ 34294 ........................................................................ 34295 ........................................................................ 34296 ........................................................................ 34297 ........................................................................ 34298 ........................................................................ 34299 ........................................................................ 34300 ........................................................................ 34301 ........................................................................ 34302 ........................................................................ 34303 ........................................................................ 34304 ........................................................................ 34305 ........................................................................ 34306 ........................................................................ 34307 ........................................................................ 34308 ........................................................................ 34309 ........................................................................ 34310 ........................................................................ 34311 ........................................................................ 34312 ........................................................................ 34313 ........................................................................ 34314 ........................................................................ 34315 ........................................................................ 34316 ........................................................................ 34317 ........................................................................ 34318 ........................................................................ 34319 ........................................................................ 34320 ........................................................................ 34321 ........................................................................ 34322 ........................................................................ 34323 ........................................................................ 34324 ........................................................................ 34325 ........................................................................ 34326 ........................................................................ 34327 ........................................................................ 34328 ........................................................................ 34329 ........................................................................ 34330 ........................................................................ 34331 ........................................................................ 34332 ........................................................................ 34333 ........................................................................ 34334 ........................................................................ 34335 ........................................................................ 34336 ........................................................................ 34337 ........................................................................ 34338 ........................................................................ 34339 ........................................................................ 34340 ........................................................................ 34341 ........................................................................ 34342 ........................................................................ 34343 ........................................................................ 34344 ........................................................................ 34345 ........................................................................ 34346 ........................................................................ 34347 ........................................................................ 34348 ........................................................................ 34349 ........................................................................ 34350 ........................................................................ 34351 ........................................................................ 34352 ........................................................................ 34353 ........................................................................ 34354 ........................................................................ 34355 ........................................................................ 34356 ........................................................................ 34357 ........................................................................ 34358 ........................................................................ 34359 ........................................................................ 34360 ........................................................................ 34361 ........................................................................ 34362 ........................................................................ 34363 ........................................................................ 34364 ........................................................................ 34365 ........................................................................ 34366 ........................................................................ 34367 ........................................................................ 34368 ........................................................................ 34369 ........................................................................ 34370 ........................................................................ 34371 ........................................................................ 34372 ........................................................................ 34373 ........................................................................ 34374 ........................................................................ 34375 ........................................................................ 34376 ........................................................................ 34377 ........................................................................ 34378 ........................................................................ 34379 ........................................................................ 34380 ........................................................................ 34381 ........................................................................ 34382 ........................................................................ 34383 ........................................................................ 34384 ........................................................................ 34385 ........................................................................ 34386 ........................................................................ 34387 ........................................................................ 34388 ........................................................................ 34389 ........................................................................ 34390 ........................................................................ 34391 ........................................................................ 34392 ........................................................................ 34393 ........................................................................ 34394 ........................................................................ 34395 ........................................................................ 34396 ........................................................................ 34397 ........................................................................ 34398 ........................................................................ 34399 ........................................................................ 34400 ........................................................................ 34401 ........................................................................ 34402 ........................................................................ 34403 ........................................................................ 34404 ........................................................................ 34405 ........................................................................ 34406 ........................................................................ 34407 ........................................................................ 34408 ........................................................................ 34409 ........................................................................ 34410 ........................................................................ 34411 ........................................................................ 34412 ........................................................................ 34413 ........................................................................ 34414 ........................................................................ 34415 ........................................................................ 34416 ........................................................................ 34417 ........................................................................ 34418 ........................................................................ 34419 ........................................................................ 34420 ........................................................................ 34421 ........................................................................ 34422 ........................................................................ 34423 ........................................................................ 34424 ........................................................................ 34425 ........................................................................ 34426 ........................................................................ 34427 ........................................................................ 34428 ........................................................................ 34429 ........................................................................ 34430 ........................................................................ 34431 ........................................................................ 34432 ........................................................................ 34433 ........................................................................ 34434 ........................................................................ 34435 ........................................................................ 34436 ........................................................................ 34437 ........................................................................ 34438 ........................................................................ 34439 ........................................................................ 34440 ........................................................................ 34441 ........................................................................ 34442 ........................................................................ 34443 ........................................................................ 34444 ........................................................................ 34445 ........................................................................ 34446 ........................................................................ 34447 ........................................................................ 34448 ........................................................................ 34449 ........................................................................ 34450 ........................................................................ 34451 ........................................................................ 34452 ........................................................................ 34453 ........................................................................ 34454 ........................................................................ 34455 ........................................................................ 34456 ........................................................................ 34457 ........................................................................ 34458 ........................................................................ 34459 ........................................................................ 34460 ........................................................................ 34461 ........................................................................ 34462 ........................................................................ 34463 ........................................................................ 34464 ........................................................................ 34465 ........................................................................ 34466 ........................................................................ 34467 ........................................................................ 34468 ........................................................................ 34469 ........................................................................ 34470 ........................................................................ 34471 ........................................................................ 34472 ........................................................................ 34473 ........................................................................ 34474 ........................................................................ 34475 ........................................................................ 34476 ........................................................................ 34477 ........................................................................ 34478 ........................................................................ 34479 ........................................................................ 34480 ........................................................................ 34481 ........................................................................ 34482 ........................................................................ 34483 ........................................................................ 34484 ........................................................................ 34485 ........................................................................ 34486 ........................................................................ 34487 ........................................................................ 34488 ........................................................................ 34489 ........................................................................ 34490 ........................................................................ 34491 ........................................................................ 34492 ........................................................................ 34493 ........................................................................ 34494 ........................................................................ 34495 ........................................................................ 34496 ........................................................................ 34497 ........................................................................ 34498 ........................................................................ 34499 ........................................................................ 34500 ........................................................................ 34501 ........................................................................ 34502 ........................................................................ 34503 ........................................................................ 34504 ........................................................................ 34505 ........................................................................ 34506 ........................................................................ 34507 ........................................................................ 34508 ........................................................................ 34509 ........................................................................ 34510 ........................................................................ 34511 ........................................................................ 34512 ........................................................................ 34513 ........................................................................ 34514 ........................................................................ 34515 ........................................................................ 34516 ........................................................................ 34517 ........................................................................ 34518 ........................................................................ 34519 ........................................................................ 34520 ........................................................................ 34521 ........................................................................ 34522 ........................................................................ 34523 ........................................................................ 34524 ........................................................................ 34525 ........................................................................ 34526 ........................................................................ 34527 ........................................................................ 34528 ........................................................................ 34529 ........................................................................ 34530 ........................................................................ 34531 ........................................................................ 34532 ........................................................................ 34533 ........................................................................ 34534 ........................................................................ 34535 ........................................................................ 34536 ........................................................................ 34537 ........................................................................ 34538 ........................................................................ 34539 ........................................................................ 34540 ........................................................................ 34541 ........................................................................ 34542 ........................................................................ 34543 ........................................................................ 34544 ........................................................................ 34545 ........................................................................ 34546 ........................................................................ 34547 ........................................................................ 34548 ........................................................................ 34549 ........................................................................ 34550 ........................................................................ 34551 ........................................................................ 34552 ........................................................................ 34553 ........................................................................ 34554 ........................................................................ 34555 ........................................................................ 34556 ........................................................................ 34557 ........................................................................ 34558 ........................................................................ 34559 ........................................................................ 34560 ........................................................................ 34561 ........................................................................ 34562 ........................................................................ 34563 ........................................................................ 34564 ........................................................................ 34565 ........................................................................ 34566 ........................................................................ 34567 ........................................................................ 34568 ........................................................................ 34569 ........................................................................ 34570 ........................................................................ 34571 ........................................................................ 34572 ........................................................................ 34573 ........................................................................ 34574 ........................................................................ 34575 ........................................................................ 34576 ........................................................................ 34577 ........................................................................ 34578 ........................................................................ 34579 ........................................................................ 34580 ........................................................................ 34581 ........................................................................ 34582 ........................................................................ 34583 ........................................................................ 34584 ........................................................................ 34585 ........................................................................ 34586 ........................................................................ 34587 ........................................................................ 34588 ........................................................................ 34589 ........................................................................ 34590 ........................................................................ 34591 ........................................................................ 34592 ........................................................................ 34593 ........................................................................ 34594 ........................................................................ 34595 ........................................................................ 34596 ........................................................................ 34597 ........................................................................ 34598 ........................................................................ 34599 ........................................................................ 34600 ........................................................................ 34601 ........................................................................ 34602 ........................................................................ 34603 ........................................................................ 34604 ........................................................................ 34605 ........................................................................ 34606 ........................................................................ 34607 ........................................................................ 34608 ........................................................................ 34609 ........................................................................ 34610 ........................................................................ 34611 ........................................................................ 34612 ........................................................................ 34613 ........................................................................ 34614 ........................................................................ 34615 ........................................................................ 34616 ........................................................................ 34617 ........................................................................ 34618 ........................................................................ 34619 ........................................................................ 34620 ........................................................................ 34621 ........................................................................ 34622 ........................................................................ 34623 ........................................................................ 34624 ........................................................................ 34625 ........................................................................ 34626 ........................................................................ 34627 ........................................................................ 34628 ........................................................................ 34629 ........................................................................ 34630 ........................................................................ 34631 ........................................................................ 34632 ........................................................................ 34633 ........................................................................ 34634 ........................................................................ 34635 ........................................................................ 34636 ........................................................................ 34637 ........................................................................ 34638 ........................................................................ 34639 ........................................................................ 34640 ........................................................................ 34641 ........................................................................ 34642 ........................................................................ 34643 ........................................................................ 34644 ........................................................................ 34645 ........................................................................ 34646 ........................................................................ 34647 ........................................................................ 34648 ........................................................................ 34649 ........................................................................ 34650 ........................................................................ 34651 ........................................................................ 34652 ........................................................................ 34653 ........................................................................ 34654 ........................................................................ 34655 ........................................................................ 34656 ........................................................................ 34657 ........................................................................ 34658 ........................................................................ 34659 ........................................................................ 34660 ........................................................................ 34661 ........................................................................ 34662 ........................................................................ 34663 ........................................................................ 34664 ........................................................................ 34665 ........................................................................ 34666 ........................................................................ 34667 ........................................................................ 34668 ........................................................................ 34669 ........................................................................ 34670 ........................................................................ 34671 ........................................................................ 34672 ........................................................................ 34673 ........................................................................ 34674 ........................................................................ 34675 ........................................................................ 34676 ........................................................................ 34677 ........................................................................ 34678 ........................................................................ 34679 ........................................................................ 34680 ........................................................................ 34681 ........................................................................ 34682 ........................................................................ 34683 ........................................................................ 34684 ........................................................................ 34685 ........................................................................ 34686 ........................................................................ 34687 ........................................................................ 34688 ........................................................................ 34689 ........................................................................ 34690 ........................................................................ 34691 ........................................................................ 34692 ........................................................................ 34693 ........................................................................ 34694 ........................................................................ 34695 ........................................................................ 34696 ........................................................................ 34697 ........................................................................ 34698 ........................................................................ 34699 ........................................................................ 34700 ........................................................................ 34701 ........................................................................ 34702 ........................................................................ 34703 ........................................................................ 34704 ........................................................................ 34705 ........................................................................ 34706 ........................................................................ 34707 ........................................................................ 34708 ........................................................................ 34709 ........................................................................ 34710 ........................................................................ 34711 ........................................................................ 34712 ........................................................................ 34713 ........................................................................ 34714 ........................................................................ 34715 ........................................................................ 34716 ........................................................................ 34717 ........................................................................ 34718 ........................................................................ 34719 ........................................................................ 34720 ........................................................................ 34721 ........................................................................ 34722 ........................................................................ 34723 ........................................................................ 34724 ........................................................................ 34725 ........................................................................ 34726 ........................................................................ 34727 ........................................................................ 34728 ........................................................................ 34729 ........................................................................ 34730 ........................................................................ 34731 ........................................................................ 34732 ........................................................................ 34733 ........................................................................ 34734 ........................................................................ 34735 ........................................................................ 34736 ........................................................................ 34737 ........................................................................ 34738 ........................................................................ 34739 ........................................................................ 34740 ........................................................................ 34741 ........................................................................ 34742 ........................................................................ 34743 ........................................................................ 34744 ........................................................................ 34745 ........................................................................ 34746 ........................................................................ 34747 ........................................................................ 34748 ........................................................................ 34749 ........................................................................ 34750 ........................................................................ 34751 ........................................................................ 34752 ........................................................................ 34753 ........................................................................ 34754 ........................................................................ 34755 ........................................................................ 34756 ........................................................................ 34757 ........................................................................ 34758 ........................................................................ 34759 ........................................................................ 34760 ........................................................................ 34761 ........................................................................ 34762 ........................................................................ 34763 ........................................................................ 34764 ........................................................................ 34765 ........................................................................ 34766 ........................................................................ 34767 ........................................................................ 34768 ........................................................................ 34769 ........................................................................ 34770 ........................................................................ 34771 ........................................................................ 34772 ........................................................................ 34773 ........................................................................ 34774 ........................................................................ 34775 ........................................................................ 34776 ........................................................................ 34777 ........................................................................ 34778 ........................................................................ 34779 ........................................................................ 34780 ........................................................................ 34781 ........................................................................ 34782 ........................................................................ 34783 ........................................................................ 34784 ........................................................................ 34785 ........................................................................ 34786 ........................................................................ 34787 ........................................................................ 34788 ........................................................................ 34789 ........................................................................ 34790 ........................................................................ 34791 ........................................................................ 34792 ........................................................................ 34793 ........................................................................ 34794 ........................................................................ 34795 ........................................................................ 34796 ........................................................................ 34797 ........................................................................ 34798 ........................................................................ 34799 ........................................................................ 34800 ........................................................................ 34801 ........................................................................ 34802 ........................................................................ 34803 ........................................................................ 34804 ........................................................................ 34805 ........................................................................ 34806 ........................................................................ 34807 ........................................................................ 34808 ........................................................................ 34809 ........................................................................ 34810 ........................................................................ 34811 ........................................................................ 34812 ........................................................................ 34813 ........................................................................ 34814 ........................................................................ 34815 ........................................................................ 34816 ........................................................................ 34817 ........................................................................ 34818 ........................................................................ 34819 ........................................................................ 34820 ........................................................................ 34821 ........................................................................ 34822 ........................................................................ 34823 ........................................................................ 34824 ........................................................................ 34825 ........................................................................ 34826 ........................................................................ 34827 ........................................................................ 34828 ........................................................................ 34829 ........................................................................ 34830 ........................................................................ 34831 ........................................................................ 34832 ........................................................................ 34833 ........................................................................ 34834 ........................................................................ 34835 ........................................................................ 34836 ........................................................................ 34837 ........................................................................ 34838 ........................................................................ 34839 ........................................................................ 34840 ........................................................................ 34841 ........................................................................ 34842 ........................................................................ 34843 ........................................................................ 34844 ........................................................................ 34845 ........................................................................ 34846 ........................................................................ 34847 ........................................................................ 34848 ........................................................................ 34849 ........................................................................ 34850 ........................................................................ 34851 ........................................................................ 34852 ........................................................................ 34853 ........................................................................ 34854 ........................................................................ 34855 ........................................................................ 34856 ........................................................................ 34857 ........................................................................ 34858 ........................................................................ 34859 ........................................................................ 34860 ........................................................................ 34861 ........................................................................ 34862 ........................................................................ 34863 ........................................................................ 34864 ........................................................................ 34865 ........................................................................ 34866 ........................................................................ 34867 ........................................................................ 34868 ........................................................................ 34869 ........................................................................ 34870 ........................................................................ 34871 ........................................................................ 34872 ........................................................................ 34873 ........................................................................ 34874 ........................................................................ 34875 ........................................................................ 34876 ........................................................................ 34877 ........................................................................ 34878 ........................................................................ 34879 ........................................................................ 34880 ........................................................................ 34881 ........................................................................ 34882 ........................................................................ 34883 ........................................................................ 34884 ........................................................................ 34885 ........................................................................ 34886 ........................................................................ 34887 ........................................................................ 34888 ........................................................................ 34889 ........................................................................ 34890 ........................................................................ 34891 ........................................................................ 34892 ........................................................................ 34893 ........................................................................ 34894 ........................................................................ 34895 ........................................................................ 34896 ........................................................................ 34897 ........................................................................ 34898 ........................................................................ 34899 ........................................................................ 34900 ........................................................................ 34901 ........................................................................ 34902 ........................................................................ 34903 ........................................................................ 34904 ........................................................................ 34905 ........................................................................ 34906 ........................................................................ 34907 ........................................................................ 34908 ........................................................................ 34909 ........................................................................ 34910 ........................................................................ 34911 ........................................................................ 34912 ........................................................................ 34913 ........................................................................ 34914 ........................................................................ 34915 ........................................................................ 34916 ........................................................................ 34917 ........................................................................ 34918 ........................................................................ 34919 ........................................................................ 34920 ........................................................................ 34921 ........................................................................ 34922 ........................................................................ 34923 ........................................................................ 34924 ........................................................................ 34925 ........................................................................ 34926 ........................................................................ 34927 ........................................................................ 34928 ........................................................................ 34929 ........................................................................ 34930 ........................................................................ 34931 ........................................................................ 34932 ........................................................................ 34933 ........................................................................ 34934 ........................................................................ 34935 ........................................................................ 34936 ........................................................................ 34937 ........................................................................ 34938 ........................................................................ 34939 ........................................................................ 34940 ........................................................................ 34941 ........................................................................ 34942 ........................................................................ 34943 ........................................................................ 34944 ........................................................................ 34945 ........................................................................ 34946 ........................................................................ 34947 ........................................................................ 34948 ........................................................................ 34949 ........................................................................ 34950 ........................................................................ 34951 ........................................................................ 34952 ........................................................................ 34953 ........................................................................ 34954 ........................................................................ 34955 ........................................................................ 34956 ........................................................................ 34957 ........................................................................ 34958 ........................................................................ 34959 ........................................................................ 34960 ........................................................................ 34961 ........................................................................ 34962 ........................................................................ 34963 ........................................................................ 34964 ........................................................................ 34965 ........................................................................ 34966 ........................................................................ 34967 ........................................................................ 34968 ........................................................................ 34969 ........................................................................ 34970 ........................................................................ 34971 ........................................................................ 34972 ........................................................................ 34973 ........................................................................ 34974 ........................................................................ 34975 ........................................................................ 34976 ........................................................................ 34977 ........................................................................ 34978 ........................................................................ 34979 ........................................................................ 34980 ........................................................................ 34981 ........................................................................ 34982 ........................................................................ 34983 ........................................................................ 34984 ........................................................................ 34985 ........................................................................ 34986 ........................................................................ 34987 ........................................................................ 34988 ........................................................................ 34989 ........................................................................ 34990 ........................................................................ 34991 ........................................................................ 34992 ........................................................................ 34993 ........................................................................ 34994 ........................................................................ 34995 ........................................................................ 34996 ........................................................................ 34997 ........................................................................ 34998 ........................................................................ 34999 ........................................................................ 35000 ........................................................................ 35001 ........................................................................ 35002 ........................................................................ 35003 ........................................................................ 35004 ........................................................................ 35005 ........................................................................ 35006 ........................................................................ 35007 ........................................................................ 35008 ........................................................................ 35009 ........................................................................ 35010 ........................................................................ 35011 ........................................................................ 35012 ........................................................................ 35013 ........................................................................ 35014 ........................................................................ 35015 ........................................................................ 35016 ........................................................................ 35017 ........................................................................ 35018 ........................................................................ 35019 ........................................................................ 35020 ........................................................................ 35021 ........................................................................ 35022 ........................................................................ 35023 ........................................................................ 35024 ........................................................................ 35025 ........................................................................ 35026 ........................................................................ 35027 ........................................................................ 35028 ........................................................................ 35029 ........................................................................ 35030 ........................................................................ 35031 ........................................................................ 35032 ........................................................................ 35033 ........................................................................ 35034 ........................................................................ 35035 ........................................................................ 35036 ........................................................................ 35037 ........................................................................ 35038 ........................................................................ 35039 ........................................................................ 35040 ........................................................................ 35041 ........................................................................ 35042 ........................................................................ 35043 ........................................................................ 35044 ........................................................................ 35045 ........................................................................ 35046 ........................................................................ 35047 ........................................................................ 35048 ........................................................................ 35049 ........................................................................ 35050 ........................................................................ 35051 ........................................................................ 35052 ........................................................................ 35053 ........................................................................ 35054 ........................................................................ 35055 ........................................................................ 35056 ........................................................................ 35057 ........................................................................ 35058 ........................................................................ 35059 ........................................................................ 35060 ........................................................................ 35061 ........................................................................ 35062 ........................................................................ 35063 ........................................................................ 35064 ........................................................................ 35065 ........................................................................ 35066 ........................................................................ 35067 ........................................................................ 35068 ........................................................................ 35069 ........................................................................ 35070 ........................................................................ 35071 ........................................................................ 35072 ........................................................................ 35073 ........................................................................ 35074 ........................................................................ 35075 ........................................................................ 35076 ........................................................................ 35077 ........................................................................ 35078 ........................................................................ 35079 ........................................................................ 35080 ........................................................................ 35081 ........................................................................ 35082 ........................................................................ 35083 ........................................................................ 35084 ........................................................................ 35085 ........................................................................ 35086 ........................................................................ 35087 ........................................................................ 35088 ........................................................................ 35089 ........................................................................ 35090 ........................................................................ 35091 ........................................................................ 35092 ........................................................................ 35093 ........................................................................ 35094 ........................................................................ 35095 ........................................................................ 35096 ........................................................................ 35097 ........................................................................ 35098 ........................................................................ 35099 ........................................................................ 35100 ........................................................................ 35101 ........................................................................ 35102 ........................................................................ 35103 ........................................................................ 35104 ........................................................................ 35105 ........................................................................ 35106 ........................................................................ 35107 ........................................................................ 35108 ........................................................................ 35109 ........................................................................ 35110 ........................................................................ 35111 ........................................................................ 35112 ........................................................................ 35113 ........................................................................ 35114 ........................................................................ 35115 ........................................................................ 35116 ........................................................................ 35117 ........................................................................ 35118 ........................................................................ 35119 ........................................................................ 35120 ........................................................................ 35121 ........................................................................ 35122 ........................................................................ 35123 ........................................................................ 35124 ........................................................................ 35125 ........................................................................ 35126 ........................................................................ 35127 ........................................................................ 35128 ........................................................................ 35129 ........................................................................ 35130 ........................................................................ 35131 ........................................................................ 35132 ........................................................................ 35133 ........................................................................ 35134 ........................................................................ 35135 ........................................................................ 35136 ........................................................................ 35137 ........................................................................ 35138 ........................................................................ 35139 ........................................................................ 35140 ........................................................................ 35141 ........................................................................ 35142 ........................................................................ 35143 ........................................................................ 35144 ........................................................................ 35145 ........................................................................ 35146 ........................................................................ 35147 ........................................................................ 35148 ........................................................................ 35149 ........................................................................ 35150 ........................................................................ 35151 ........................................................................ 35152 ........................................................................ 35153 ........................................................................ 35154 ........................................................................ 35155 ........................................................................ 35156 ........................................................................ 35157 ........................................................................ 35158 ........................................................................ 35159 ........................................................................ 35160 ........................................................................ 35161 ........................................................................ 35162 ........................................................................ 35163 ........................................................................ 35164 ........................................................................ 35165 ........................................................................ 35166 ........................................................................ 35167 ........................................................................ 35168 ........................................................................ 35169 ........................................................................ 35170 ........................................................................ 35171 ........................................................................ 35172 ........................................................................ 35173 ........................................................................ 35174 ........................................................................ 35175 ........................................................................ 35176 ........................................................................ 35177 ........................................................................ 35178 ........................................................................ 35179 ........................................................................ 35180 ........................................................................ 35181 ........................................................................ 35182 ........................................................................ 35183 ........................................................................ 35184 ........................................................................ 35185 ........................................................................ 35186 ........................................................................ 35187 ........................................................................ 35188 ........................................................................ 35189 ........................................................................ 35190 ........................................................................ 35191 ........................................................................ 35192 ........................................................................ 35193 ........................................................................ 35194 ........................................................................ 35195 ........................................................................ 35196 ........................................................................ 35197 ........................................................................ 35198 ........................................................................ 35199 ........................................................................ 35200 ........................................................................ 35201 ........................................................................ 35202 ........................................................................ 35203 ........................................................................ 35204 ........................................................................ 35205 ........................................................................ 35206 ........................................................................ 35207 ........................................................................ 35208 ........................................................................ 35209 ........................................................................ 35210 ........................................................................ 35211 ........................................................................ 35212 ........................................................................ 35213 ........................................................................ 35214 ........................................................................ 35215 ........................................................................ 35216 ........................................................................ 35217 ........................................................................ 35218 ........................................................................ 35219 ........................................................................ 35220 ........................................................................ 35221 ........................................................................ 35222 ........................................................................ 35223 ........................................................................ 35224 ........................................................................ 35225 ........................................................................ 35226 ........................................................................ 35227 ........................................................................ 35228 ........................................................................ 35229 ........................................................................ 35230 ........................................................................ 35231 ........................................................................ 35232 ........................................................................ 35233 ........................................................................ 35234 ........................................................................ 35235 ........................................................................ 35236 ........................................................................ 35237 ........................................................................ 35238 ........................................................................ 35239 ........................................................................ 35240 ........................................................................ 35241 ........................................................................ 35242 ........................................................................ 35243 ........................................................................ 35244 ........................................................................ 35245 ........................................................................ 35246 ........................................................................ 35247 ........................................................................ 35248 ........................................................................ 35249 ........................................................................ 35250 ........................................................................ 35251 ........................................................................ 35252 ........................................................................ 35253 ........................................................................ 35254 ........................................................................ 35255 ........................................................................ 35256 ........................................................................ 35257 ........................................................................ 35258 ........................................................................ 35259 ........................................................................ 35260 ........................................................................ 35261 ........................................................................ 35262 ........................................................................ 35263 ........................................................................ 35264 ........................................................................ 35265 ........................................................................ 35266 ........................................................................ 35267 ........................................................................ 35268 ........................................................................ 35269 ........................................................................ 35270 ........................................................................ 35271 ........................................................................ 35272 ........................................................................ 35273 ........................................................................ 35274 ........................................................................ 35275 ........................................................................ 35276 ........................................................................ 35277 ........................................................................ 35278 ........................................................................ 35279 ........................................................................ 35280 ........................................................................ 35281 ........................................................................ 35282 ........................................................................ 35283 ........................................................................ 35284 ........................................................................ 35285 ........................................................................ 35286 ........................................................................ 35287 ........................................................................ 35288 ........................................................................ 35289 ........................................................................ 35290 ........................................................................ 35291 ........................................................................ 35292 ........................................................................ 35293 ........................................................................ 35294 ........................................................................ 35295 ........................................................................ 35296 ........................................................................ 35297 ........................................................................ 35298 ........................................................................ 35299 ........................................................................ 35300 ........................................................................ 35301 ........................................................................ 35302 ........................................................................ 35303 ........................................................................ 35304 ........................................................................ 35305 ........................................................................ 35306 ........................................................................ 35307 ........................................................................ 35308 ........................................................................ 35309 ........................................................................ 35310 ........................................................................ 35311 ........................................................................ 35312 ........................................................................ 35313 ........................................................................ 35314 ........................................................................ 35315 ........................................................................ 35316 ........................................................................ 35317 ........................................................................ 35318 ........................................................................ 35319 ........................................................................ 35320 ........................................................................ 35321 ........................................................................ 35322 ........................................................................ 35323 ........................................................................ 35324 ........................................................................ 35325 ........................................................................ 35326 ........................................................................ 35327 ........................................................................ 35328 ........................................................................ 35329 ........................................................................ 35330 ........................................................................ 35331 ........................................................................ 35332 ........................................................................ 35333 ........................................................................ 35334 ........................................................................ 35335 ........................................................................ 35336 ........................................................................ 35337 ........................................................................ 35338 ........................................................................ 35339 ........................................................................ 35340 ........................................................................ 35341 ........................................................................ 35342 ........................................................................ 35343 ........................................................................ 35344 ........................................................................ 35345 ........................................................................ 35346 ........................................................................ 35347 ........................................................................ 35348 ........................................................................ 35349 ........................................................................ 35350 ........................................................................ 35351 ........................................................................ 35352 ........................................................................ 35353 ........................................................................ 35354 ........................................................................ 35355 ........................................................................ 35356 ........................................................................ 35357 ........................................................................ 35358 ........................................................................ 35359 ........................................................................ 35360 ........................................................................ 35361 ........................................................................ 35362 ........................................................................ 35363 ........................................................................ 35364 ........................................................................ 35365 ........................................................................ 35366 ........................................................................ 35367 ........................................................................ 35368 ........................................................................ 35369 ........................................................................ 35370 ........................................................................ 35371 ........................................................................ 35372 ........................................................................ 35373 ........................................................................ 35374 ........................................................................ 35375 ........................................................................ 35376 ........................................................................ 35377 ........................................................................ 35378 ........................................................................ 35379 ........................................................................ 35380 ........................................................................ 35381 ........................................................................ 35382 ........................................................................ 35383 ........................................................................ 35384 ........................................................................ 35385 ........................................................................ 35386 ........................................................................ 35387 ........................................................................ 35388 ........................................................................ 35389 ........................................................................ 35390 ........................................................................ 35391 ........................................................................ 35392 ........................................................................ 35393 ........................................................................ 35394 ........................................................................ 35395 ........................................................................ 35396 ........................................................................ 35397 ........................................................................ 35398 ........................................................................ 35399 ........................................................................ 35400 ........................................................................ 35401 ........................................................................ 35402 ........................................................................ 35403 ........................................................................ 35404 ........................................................................ 35405 ........................................................................ 35406 ........................................................................ 35407 ........................................................................ 35408 ........................................................................ 35409 ........................................................................ 35410 ........................................................................ 35411 ........................................................................ 35412 ........................................................................ 35413 ........................................................................ 35414 ........................................................................ 35415 ........................................................................ 35416 ........................................................................ 35417 ........................................................................ 35418 ........................................................................ 35419 ........................................................................ 35420 ........................................................................ 35421 ........................................................................ 35422 ........................................................................ 35423 ........................................................................ 35424 ........................................................................ 35425 ........................................................................ 35426 ........................................................................ 35427 ........................................................................ 35428 ........................................................................ 35429 ........................................................................ 35430 ........................................................................ 35431 ........................................................................ 35432 ........................................................................ 35433 ........................................................................ 35434 ........................................................................ 35435 ........................................................................ 35436 ........................................................................ 35437 ........................................................................ 35438 ........................................................................ 35439 ........................................................................ 35440 ........................................................................ 35441 ........................................................................ 35442 ........................................................................ 35443 ........................................................................ 35444 ........................................................................ 35445 ........................................................................ 35446 ........................................................................ 35447 ........................................................................ 35448 ........................................................................ 35449 ........................................................................ 35450 ........................................................................ 35451 ........................................................................ 35452 ........................................................................ 35453 ........................................................................ 35454 ........................................................................ 35455 ........................................................................ 35456 ........................................................................ 35457 ........................................................................ 35458 ........................................................................ 35459 ........................................................................ 35460 ........................................................................ 35461 ........................................................................ 35462 ........................................................................ 35463 ........................................................................ 35464 ........................................................................ 35465 ........................................................................ 35466 ........................................................................ 35467 ........................................................................ 35468 ........................................................................ 35469 ........................................................................ 35470 ........................................................................ 35471 ........................................................................ 35472 ........................................................................ 35473 ........................................................................ 35474 ........................................................................ 35475 ........................................................................ 35476 ........................................................................ 35477 ........................................................................ 35478 ........................................................................ 35479 ........................................................................ 35480 ........................................................................ 35481 ........................................................................ 35482 ........................................................................ 35483 ........................................................................ 35484 ........................................................................ 35485 ........................................................................ 35486 ........................................................................ 35487 ........................................................................ 35488 ........................................................................ 35489 ........................................................................ 35490 ........................................................................ 35491 ........................................................................ 35492 ........................................................................ 35493 ........................................................................ 35494 ........................................................................ 35495 ........................................................................ 35496 ........................................................................ 35497 ........................................................................ 35498 ........................................................................ 35499 ........................................................................ 35500 ........................................................................ 35501 ........................................................................ 35502 ........................................................................ 35503 ........................................................................ 35504 ........................................................................ 35505 ........................................................................ 35506 ........................................................................ 35507 ........................................................................ 35508 ........................................................................ 35509 ........................................................................ 35510 ........................................................................ 35511 ........................................................................ 35512 ........................................................................ 35513 ........................................................................ 35514 ........................................................................ 35515 ........................................................................ 35516 ........................................................................ 35517 ........................................................................ 35518 ........................................................................ 35519 ........................................................................ 35520 ........................................................................ 35521 ........................................................................ 35522 ........................................................................ 35523 ........................................................................ 35524 ........................................................................ 35525 ........................................................................ 35526 ........................................................................ 35527 ........................................................................ 35528 ........................................................................ 35529 ........................................................................ 35530 ........................................................................ 35531 ........................................................................ 35532 ........................................................................ 35533 ........................................................................ 35534 ........................................................................ 35535 ........................................................................ 35536 ........................................................................ 35537 ........................................................................ 35538 ........................................................................ 35539 ........................................................................ 35540 ........................................................................ 35541 ........................................................................ 35542 ........................................................................ 35543 ........................................................................ 35544 ........................................................................ 35545 ........................................................................ 35546 ........................................................................ 35547 ........................................................................ 35548 ........................................................................ 35549 ........................................................................ 35550 ........................................................................ 35551 ........................................................................ 35552 ........................................................................ 35553 ........................................................................ 35554 ........................................................................ 35555 ........................................................................ 35556 ........................................................................ 35557 ........................................................................ 35558 ........................................................................ 35559 ........................................................................ 35560 ........................................................................ 35561 ........................................................................ 35562 ........................................................................ 35563 ........................................................................ 35564 ........................................................................ 35565 ........................................................................ 35566 ........................................................................ 35567 ........................................................................ 35568 ........................................................................ 35569 ........................................................................ 35570 ........................................................................ 35571 ........................................................................ 35572 ........................................................................ 35573 ........................................................................ 35574 ........................................................................ 35575 ........................................................................ 35576 ........................................................................ 35577 ........................................................................ 35578 ........................................................................ 35579 ........................................................................ 35580 ........................................................................ 35581 ........................................................................ 35582 ........................................................................ 35583 ........................................................................ 35584 ........................................................................ 35585 ........................................................................ 35586 ........................................................................ 35587 ........................................................................ 35588 ........................................................................ 35589 ........................................................................ 35590 ........................................................................ 35591 ........................................................................ 35592 ........................................................................ 35593 ........................................................................ 35594 ........................................................................ 35595 ........................................................................ 35596 ........................................................................ 35597 ........................................................................ 35598 ........................................................................ 35599 ........................................................................ 35600 ........................................................................ 35601 ........................................................................ 35602 ........................................................................ 35603 ........................................................................ 35604 ........................................................................ 35605 ........................................................................ 35606 ........................................................................ 35607 ........................................................................ 35608 ........................................................................ 35609 ........................................................................ 35610 ........................................................................ 35611 ........................................................................ 35612 ........................................................................ 35613 ........................................................................ 35614 ........................................................................ 35615 ........................................................................ 35616 ........................................................................ 35617 ........................................................................ 35618 ........................................................................ 35619 ........................................................................ 35620 ........................................................................ 35621 ........................................................................ 35622 ........................................................................ 35623 ........................................................................ 35624 ........................................................................ 35625 ........................................................................ 35626 ........................................................................ 35627 ........................................................................ 35628 ........................................................................ 35629 ........................................................................ 35630 ........................................................................ 35631 ........................................................................ 35632 ........................................................................ 35633 ........................................................................ 35634 ........................................................................ 35635 ........................................................................ 35636 ........................................................................ 35637 ........................................................................ 35638 ........................................................................ 35639 ........................................................................ 35640 ........................................................................ 35641 ........................................................................ 35642 ........................................................................ 35643 ........................................................................ 35644 ........................................................................ 35645 ........................................................................ 35646 ........................................................................ 35647 ........................................................................ 35648 ........................................................................ 35649 ........................................................................ 35650 ........................................................................ 35651 ........................................................................ 35652 ........................................................................ 35653 ........................................................................ 35654 ........................................................................ 35655 ........................................................................ 35656 ........................................................................ 35657 ........................................................................ 35658 ........................................................................ 35659 ........................................................................ 35660 ........................................................................ 35661 ........................................................................ 35662 ........................................................................ 35663 ........................................................................ 35664 ........................................................................ 35665 ........................................................................ 35666 ........................................................................ 35667 ........................................................................ 35668 ........................................................................ 35669 ........................................................................ 35670 ........................................................................ 35671 ........................................................................ 35672 ........................................................................ 35673 ........................................................................ 35674 ........................................................................ 35675 ........................................................................ 35676 ........................................................................ 35677 ........................................................................ 35678 ........................................................................ 35679 ........................................................................ 35680 ........................................................................ 35681 ........................................................................ 35682 ........................................................................ 35683 ........................................................................ 35684 ........................................................................ 35685 ........................................................................ 35686 ........................................................................ 35687 ........................................................................ 35688 ........................................................................ 35689 ........................................................................ 35690 ........................................................................ 35691 ........................................................................ 35692 ........................................................................ 35693 ........................................................................ 35694 ........................................................................ 35695 ........................................................................ 35696 ........................................................................ 35697 ........................................................................ 35698 ........................................................................ 35699 ........................................................................ 35700 ........................................................................ 35701 ........................................................................ 35702 ........................................................................ 35703 ........................................................................ 35704 ........................................................................ 35705 ........................................................................ 35706 ........................................................................ 35707 ........................................................................ 35708 ........................................................................ 35709 ........................................................................ 35710 ........................................................................ 35711 ........................................................................ 35712 ........................................................................ 35713 ........................................................................ 35714 ........................................................................ 35715 ........................................................................ 35716 ........................................................................ 35717 ........................................................................ 35718 ........................................................................ 35719 ........................................................................ 35720 ........................................................................ 35721 ........................................................................ 35722 ........................................................................ 35723 ........................................................................ 35724 ........................................................................ 35725 ........................................................................ 35726 ........................................................................ 35727 ........................................................................ 35728 ........................................................................ 35729 ........................................................................ 35730 ........................................................................ 35731 ........................................................................ 35732 ........................................................................ 35733 ........................................................................ 35734 ........................................................................ 35735 ........................................................................ 35736 ........................................................................ 35737 ........................................................................ 35738 ........................................................................ 35739 ........................................................................ 35740 ........................................................................ 35741 ........................................................................ 35742 ........................................................................ 35743 ........................................................................ 35744 ........................................................................ 35745 ........................................................................ 35746 ........................................................................ 35747 ........................................................................ 35748 ........................................................................ 35749 ........................................................................ 35750 ........................................................................ 35751 ........................................................................ 35752 ........................................................................ 35753 ........................................................................ 35754 ........................................................................ 35755 ........................................................................ 35756 ........................................................................ 35757 ........................................................................ 35758 ........................................................................ 35759 ........................................................................ 35760 ........................................................................ 35761 ........................................................................ 35762 ........................................................................ 35763 ........................................................................ 35764 ........................................................................ 35765 ........................................................................ 35766 ........................................................................ 35767 ........................................................................ 35768 ........................................................................ 35769 ........................................................................ 35770 ........................................................................ 35771 ........................................................................ 35772 ........................................................................ 35773 ........................................................................ 35774 ........................................................................ 35775 ........................................................................ 35776 ........................................................................ 35777 ........................................................................ 35778 ........................................................................ 35779 ........................................................................ 35780 ........................................................................ 35781 ........................................................................ 35782 ........................................................................ 35783 ........................................................................ 35784 ........................................................................ 35785 ........................................................................ 35786 ........................................................................ 35787 ........................................................................ 35788 ........................................................................ 35789 ........................................................................ 35790 ........................................................................ 35791 ........................................................................ 35792 ........................................................................ 35793 ........................................................................ 35794 ........................................................................ 35795 ........................................................................ 35796 ........................................................................ 35797 ........................................................................ 35798 ........................................................................ 35799 ........................................................................ 35800 ........................................................................ 35801 ........................................................................ 35802 ........................................................................ 35803 ........................................................................ 35804 ........................................................................ 35805 ........................................................................ 35806 ........................................................................ 35807 ........................................................................ 35808 ........................................................................ 35809 ........................................................................ 35810 ........................................................................ 35811 ........................................................................ 35812 ........................................................................ 35813 ........................................................................ 35814 ........................................................................ 35815 ........................................................................ 35816 ........................................................................ 35817 ........................................................................ 35818 ........................................................................ 35819 ........................................................................ 35820 ........................................................................ 35821 ........................................................................ 35822 ........................................................................ 35823 ........................................................................ 35824 ........................................................................ 35825 ........................................................................ 35826 ........................................................................ 35827 ........................................................................ 35828 ........................................................................ 35829 ........................................................................ 35830 ........................................................................ 35831 ........................................................................ 35832 ........................................................................ 35833 ........................................................................ 35834 ........................................................................ 35835 ........................................................................ 35836 ........................................................................ 35837 ........................................................................ 35838 ........................................................................ 35839 ........................................................................ 35840 ........................................................................ 35841 ........................................................................ 35842 ........................................................................ 35843 ........................................................................ 35844 ........................................................................ 35845 ........................................................................ 35846 ........................................................................ 35847 ........................................................................ 35848 ........................................................................ 35849 ........................................................................ 35850 ........................................................................ 35851 ........................................................................ 35852 ........................................................................ 35853 ........................................................................ 35854 ........................................................................ 35855 ........................................................................ 35856 ........................................................................ 35857 ........................................................................ 35858 ........................................................................ 35859 ........................................................................ 35860 ........................................................................ 35861 ........................................................................ 35862 ........................................................................ 35863 ........................................................................ 35864 ........................................................................ 35865 ........................................................................ 35866 ........................................................................ 35867 ........................................................................ 35868 ........................................................................ 35869 ........................................................................ 35870 ........................................................................ 35871 ........................................................................ 35872 ........................................................................ 35873 ........................................................................ 35874 ........................................................................ 35875 ........................................................................ 35876 ........................................................................ 35877 ........................................................................ 35878 ........................................................................ 35879 ........................................................................ 35880 ........................................................................ 35881 ........................................................................ 35882 ........................................................................ 35883 ........................................................................ 35884 ........................................................................ 35885 ........................................................................ 35886 ........................................................................ 35887 ........................................................................ 35888 ........................................................................ 35889 ........................................................................ 35890 ........................................................................ 35891 ........................................................................ 35892 ........................................................................ 35893 ........................................................................ 35894 ........................................................................ 35895 ........................................................................ 35896 ........................................................................ 35897 ........................................................................ 35898 ........................................................................ 35899 ........................................................................ 35900 ........................................................................ 35901 ........................................................................ 35902 ........................................................................ 35903 ........................................................................ 35904 ........................................................................ 35905 ........................................................................ 35906 ........................................................................ 35907 ........................................................................ 35908 ........................................................................ 35909 ........................................................................ 35910 ........................................................................ 35911 ........................................................................ 35912 ........................................................................ 35913 ........................................................................ 35914 ........................................................................ 35915 ........................................................................ 35916 ........................................................................ 35917 ........................................................................ 35918 ........................................................................ 35919 ........................................................................ 35920 ........................................................................ 35921 ........................................................................ 35922 ........................................................................ 35923 ........................................................................ 35924 ........................................................................ 35925 ........................................................................ 35926 ........................................................................ 35927 ........................................................................ 35928 ........................................................................ 35929 ........................................................................ 35930 ........................................................................ 35931 ........................................................................ 35932 ........................................................................ 35933 ........................................................................ 35934 ........................................................................ 35935 ........................................................................ 35936 ........................................................................ 35937 ........................................................................ 35938 ........................................................................ 35939 ........................................................................ 35940 ........................................................................ 35941 ........................................................................ 35942 ........................................................................ 35943 ........................................................................ 35944 ........................................................................ 35945 ........................................................................ 35946 ........................................................................ 35947 ........................................................................ 35948 ........................................................................ 35949 ........................................................................ 35950 ........................................................................ 35951 ........................................................................ 35952 ........................................................................ 35953 ........................................................................ 35954 ........................................................................ 35955 ........................................................................ 35956 ........................................................................ 35957 ........................................................................ 35958 ........................................................................ 35959 ........................................................................ 35960 ........................................................................ 35961 ........................................................................ 35962 ........................................................................ 35963 ........................................................................ 35964 ........................................................................ 35965 ........................................................................ 35966 ........................................................................ 35967 ........................................................................ 35968 ........................................................................ 35969 ........................................................................ 35970 ........................................................................ 35971 ........................................................................ 35972 ........................................................................ 35973 ........................................................................ 35974 ........................................................................ 35975 ........................................................................ 35976 ........................................................................ 35977 ........................................................................ 35978 ........................................................................ 35979 ........................................................................ 35980 ........................................................................ 35981 ........................................................................ 35982 ........................................................................ 35983 ........................................................................ 35984 ........................................................................ 35985 ........................................................................ 35986 ........................................................................ 35987 ........................................................................ 35988 ........................................................................ 35989 ........................................................................ 35990 ........................................................................ 35991 ........................................................................ 35992 ........................................................................ 35993 ........................................................................ 35994 ........................................................................ 35995 ........................................................................ 35996 ........................................................................ 35997 ........................................................................ 35998 ........................................................................ 35999 ........................................................................ 36000 ........................................................................ 36001 ........................................................................ 36002 ........................................................................ 36003 ........................................................................ 36004 ........................................................................ 36005 ........................................................................ 36006 ........................................................................ 36007 ........................................................................ 36008 ........................................................................ 36009 ........................................................................ 36010 ........................................................................ 36011 ........................................................................ 36012 ........................................................................ 36013 ........................................................................ 36014 ........................................................................ 36015 ........................................................................ 36016 ........................................................................ 36017 ........................................................................ 36018 ........................................................................ 36019 ........................................................................ 36020 ........................................................................ 36021 ........................................................................ 36022 ........................................................................ 36023 ........................................................................ 36024 ........................................................................ 36025 ........................................................................ 36026 ........................................................................ 36027 ........................................................................ 36028 ........................................................................ 36029 ........................................................................ 36030 ........................................................................ 36031 ........................................................................ 36032 ........................................................................ 36033 ........................................................................ 36034 ........................................................................ 36035 ........................................................................ 36036 ........................................................................ 36037 ........................................................................ 36038 ........................................................................ 36039 ........................................................................ 36040 ........................................................................ 36041 ........................................................................ 36042 ........................................................................ 36043 ........................................................................ 36044 ........................................................................ 36045 ........................................................................ 36046 ........................................................................ 36047 ........................................................................ 36048 ........................................................................ 36049 ........................................................................ 36050 ........................................................................ 36051 ........................................................................ 36052 ........................................................................ 36053 ........................................................................ 36054 ........................................................................ 36055 ........................................................................ 36056 ........................................................................ 36057 ........................................................................ 36058 ........................................................................ 36059 ........................................................................ 36060 ........................................................................ 36061 ........................................................................ 36062 ........................................................................ 36063 ........................................................................ 36064 ........................................................................ 36065 ........................................................................ 36066 ........................................................................ 36067 ........................................................................ 36068 ........................................................................ 36069 ........................................................................ 36070 ........................................................................ 36071 ........................................................................ 36072 ........................................................................ 36073 ........................................................................ 36074 ........................................................................ 36075 ........................................................................ 36076 ........................................................................ 36077 ........................................................................ 36078 ........................................................................ 36079 ........................................................................ 36080 ........................................................................ 36081 ........................................................................ 36082 ........................................................................ 36083 ........................................................................ 36084 ........................................................................ 36085 ........................................................................ 36086 ........................................................................ 36087 ........................................................................ 36088 ........................................................................ 36089 ........................................................................ 36090 ........................................................................ 36091 ........................................................................ 36092 ........................................................................ 36093 ........................................................................ 36094 ........................................................................ 36095 ........................................................................ 36096 ........................................................................ 36097 ........................................................................ 36098 ........................................................................ 36099 ........................................................................ 36100 ........................................................................ 36101 ........................................................................ 36102 ........................................................................ 36103 ........................................................................ 36104 ........................................................................ 36105 ........................................................................ 36106 ........................................................................ 36107 ........................................................................ 36108 ........................................................................ 36109 ........................................................................ 36110 ........................................................................ 36111 ........................................................................ 36112 ........................................................................ 36113 ........................................................................ 36114 ........................................................................ 36115 ........................................................................ 36116 ........................................................................ 36117 ........................................................................ 36118 ........................................................................ 36119 ........................................................................ 36120 ........................................................................ 36121 ........................................................................ 36122 ........................................................................ 36123 ........................................................................ 36124 ........................................................................ 36125 ........................................................................ 36126 ........................................................................ 36127 ........................................................................ 36128 ........................................................................ 36129 ........................................................................ 36130 ........................................................................ 36131 ........................................................................ 36132 ........................................................................ 36133 ........................................................................ 36134 ........................................................................ 36135 ........................................................................ 36136 ........................................................................ 36137 ........................................................................ 36138 ........................................................................ 36139 ........................................................................ 36140 ........................................................................ 36141 ........................................................................ 36142 ........................................................................ 36143 ........................................................................ 36144 ........................................................................ 36145 ........................................................................ 36146 ........................................................................ 36147 ........................................................................ 36148 ........................................................................ 36149 ........................................................................ 36150 ........................................................................ 36151 ........................................................................ 36152 ........................................................................ 36153 ........................................................................ 36154 ........................................................................ 36155 ........................................................................ 36156 ........................................................................ 36157 ........................................................................ 36158 ........................................................................ 36159 ........................................................................ 36160 ........................................................................ 36161 ........................................................................ 36162 ........................................................................ 36163 ........................................................................ 36164 ........................................................................ 36165 ........................................................................ 36166 ........................................................................ 36167 ........................................................................ 36168 ........................................................................ 36169 ........................................................................ 36170 ........................................................................ 36171 ........................................................................ 36172 ........................................................................ 36173 ........................................................................ 36174 ........................................................................ 36175 ........................................................................ 36176 ........................................................................ 36177 ........................................................................ 36178 ........................................................................ 36179 ........................................................................ 36180 ........................................................................ 36181 ........................................................................ 36182 ........................................................................ 36183 ........................................................................ 36184 ........................................................................ 36185 ........................................................................ 36186 ........................................................................ 36187 ........................................................................ 36188 ........................................................................ 36189 ........................................................................ 36190 ........................................................................ 36191 ........................................................................ 36192 ........................................................................ 36193 ........................................................................ 36194 ........................................................................ 36195 ........................................................................ 36196 ........................................................................ 36197 ........................................................................ 36198 ........................................................................ 36199 ........................................................................ 36200 ........................................................................ 36201 ........................................................................ 36202 ........................................................................ 36203 ........................................................................ 36204 ........................................................................ 36205 ........................................................................ 36206 ........................................................................ 36207 ........................................................................ 36208 ........................................................................ 36209 ........................................................................ 36210 ........................................................................ 36211 ........................................................................ 36212 ........................................................................ 36213 ........................................................................ 36214 ........................................................................ 36215 ........................................................................ 36216 ........................................................................ 36217 ........................................................................ 36218 ........................................................................ 36219 ........................................................................ 36220 ........................................................................ 36221 ........................................................................ 36222 ........................................................................ 36223 ........................................................................ 36224 ........................................................................ 36225 ........................................................................ 36226 ........................................................................ 36227 ........................................................................ 36228 ........................................................................ 36229 ........................................................................ 36230 ........................................................................ 36231 ........................................................................ 36232 ........................................................................ 36233 ........................................................................ 36234 ........................................................................ 36235 ........................................................................ 36236 ........................................................................ 36237 ........................................................................ 36238 ........................................................................ 36239 ........................................................................ 36240 ........................................................................ 36241 ........................................................................ 36242 ........................................................................ 36243 ........................................................................ 36244 ........................................................................ 36245 ........................................................................ 36246 ........................................................................ 36247 ........................................................................ 36248 ........................................................................ 36249 ........................................................................ 36250 ........................................................................ 36251 ........................................................................ 36252 ........................................................................ 36253 ........................................................................ 36254 ........................................................................ 36255 ........................................................................ 36256 ........................................................................ 36257 ........................................................................ 36258 ........................................................................ 36259 ........................................................................ 36260 ........................................................................ 36261 ........................................................................ 36262 ........................................................................ 36263 ........................................................................ 36264 ........................................................................ 36265 ........................................................................ 36266 ........................................................................ 36267 ........................................................................ 36268 ........................................................................ 36269 ........................................................................ 36270 ........................................................................ 36271 ........................................................................ 36272 ........................................................................ 36273 ........................................................................ 36274 ........................................................................ 36275 ........................................................................ 36276 ........................................................................ 36277 ........................................................................ 36278 ........................................................................ 36279 ........................................................................ 36280 ........................................................................ 36281 ........................................................................ 36282 ........................................................................ 36283 ........................................................................ 36284 ........................................................................ 36285 ........................................................................ 36286 ........................................................................ 36287 ........................................................................ 36288 ........................................................................ 36289 ........................................................................ 36290 ........................................................................ 36291 ........................................................................ 36292 ........................................................................ 36293 ........................................................................ 36294 ........................................................................ 36295 ........................................................................ 36296 ........................................................................ 36297 ........................................................................ 36298 ........................................................................ 36299 ........................................................................ 36300 ........................................................................ 36301 ........................................................................ 36302 ........................................................................ 36303 ........................................................................ 36304 ........................................................................ 36305 ........................................................................ 36306 ........................................................................ 36307 ........................................................................ 36308 ........................................................................ 36309 ........................................................................ 36310 ........................................................................ 36311 ........................................................................ 36312 ........................................................................ 36313 ........................................................................ 36314 ........................................................................ 36315 ........................................................................ 36316 ........................................................................ 36317 ........................................................................ 36318 ........................................................................ 36319 ........................................................................ 36320 ........................................................................ 36321 ........................................................................ 36322 ........................................................................ 36323 ........................................................................ 36324 ........................................................................ 36325 ........................................................................ 36326 ........................................................................ 36327 ........................................................................ 36328 ........................................................................ 36329 ........................................................................ 36330 ........................................................................ 36331 ........................................................................ 36332 ........................................................................ 36333 ........................................................................ 36334 ........................................................................ 36335 ........................................................................ 36336 ........................................................................ 36337 ........................................................................ 36338 ........................................................................ 36339 ........................................................................ 36340 ........................................................................ 36341 ........................................................................ 36342 ........................................................................ 36343 ........................................................................ 36344 ........................................................................ 36345 ........................................................................ 36346 ........................................................................ 36347 ........................................................................ 36348 ........................................................................ 36349 ........................................................................ 36350 ........................................................................ 36351 ........................................................................ 36352 ........................................................................ 36353 ........................................................................ 36354 ........................................................................ 36355 ........................................................................ 36356 ........................................................................ 36357 ........................................................................ 36358 ........................................................................ 36359 ........................................................................ 36360 ........................................................................ 36361 ........................................................................ 36362 ........................................................................ 36363 ........................................................................ 36364 ........................................................................ 36365 ........................................................................ 36366 ........................................................................ 36367 ........................................................................ 36368 ........................................................................ 36369 ........................................................................ 36370 ........................................................................ 36371 ........................................................................ 36372 ........................................................................ 36373 ........................................................................ 36374 ........................................................................ 36375 ........................................................................ 36376 ........................................................................ 36377 ........................................................................ 36378 ........................................................................ 36379 ........................................................................ 36380 ........................................................................ 36381 ........................................................................ 36382 ........................................................................ 36383 ........................................................................ 36384 ........................................................................ 36385 ........................................................................ 36386 ........................................................................ 36387 ........................................................................ 36388 ........................................................................ 36389 ........................................................................ 36390 ........................................................................ 36391 ........................................................................ 36392 ........................................................................ 36393 ........................................................................ 36394 ........................................................................ 36395 ........................................................................ 36396 ........................................................................ 36397 ........................................................................ 36398 ........................................................................ 36399 ........................................................................ 36400 ........................................................................ 36401 ........................................................................ 36402 ........................................................................ 36403 ........................................................................ 36404 ........................................................................ 36405 ........................................................................ 36406 ........................................................................ 36407 ........................................................................ 36408 ........................................................................ 36409 ........................................................................ 36410 ........................................................................ 36411 ........................................................................ 36412 ........................................................................ 36413 ........................................................................ 36414 ........................................................................ 36415 ........................................................................ 36416 ........................................................................ 36417 ........................................................................ 36418 ........................................................................ 36419 ........................................................................ 36420 ........................................................................ 36421 ........................................................................ 36422 ........................................................................ 36423 ........................................................................ 36424 ........................................................................ 36425 ........................................................................ 36426 ........................................................................ 36427 ........................................................................ 36428 ........................................................................ 36429 ........................................................................ 36430 ........................................................................ 36431 ........................................................................ 36432 ........................................................................ 36433 ........................................................................ 36434 ........................................................................ 36435 ........................................................................ 36436 ........................................................................ 36437 ........................................................................ 36438 ........................................................................ 36439 ........................................................................ 36440 ........................................................................ 36441 ........................................................................ 36442 ........................................................................ 36443 ........................................................................ 36444 ........................................................................ 36445 ........................................................................ 36446 ........................................................................ 36447 ........................................................................ 36448 ........................................................................ 36449 ........................................................................ 36450 ........................................................................ 36451 ........................................................................ 36452 ........................................................................ 36453 ........................................................................ 36454 ........................................................................ 36455 ........................................................................ 36456 ........................................................................ 36457 ........................................................................ 36458 ........................................................................ 36459 ........................................................................ 36460 ........................................................................ 36461 ........................................................................ 36462 ........................................................................ 36463 ........................................................................ 36464 ........................................................................ 36465 ........................................................................ 36466 ........................................................................ 36467 ........................................................................ 36468 ........................................................................ 36469 ........................................................................ 36470 ........................................................................ 36471 ........................................................................ 36472 ........................................................................ 36473 ........................................................................ 36474 ........................................................................ 36475 ........................................................................ 36476 ........................................................................ 36477 ........................................................................ 36478 ........................................................................ 36479 ........................................................................ 36480 ........................................................................ 36481 ........................................................................ 36482 ........................................................................ 36483 ........................................................................ 36484 ........................................................................ 36485 ........................................................................ 36486 ........................................................................ 36487 ........................................................................ 36488 ........................................................................ 36489 ........................................................................ 36490 ........................................................................ 36491 ........................................................................ 36492 ........................................................................ 36493 ........................................................................ 36494 ........................................................................ 36495 ........................................................................ 36496 ........................................................................ 36497 ........................................................................ 36498 ........................................................................ 36499 ........................................................................ 36500 ........................................................................ 36501 ........................................................................ 36502 ........................................................................ 36503 ........................................................................ 36504 ........................................................................ 36505 ........................................................................ 36506 ........................................................................ 36507 ........................................................................ 36508 ........................................................................ 36509 ........................................................................ 36510 ........................................................................ 36511 ........................................................................ 36512 ........................................................................ 36513 ........................................................................ 36514 ........................................................................ 36515 ........................................................................ 36516 ........................................................................ 36517 ........................................................................ 36518 ........................................................................ 36519 ........................................................................ 36520 ........................................................................ 36521 ........................................................................ 36522 ........................................................................ 36523 ........................................................................ 36524 ........................................................................ 36525 ........................................................................ 36526 ........................................................................ 36527 ........................................................................ 36528 ........................................................................ 36529 ........................................................................ 36530 ........................................................................ 36531 ........................................................................ 36532 ........................................................................ 36533 ........................................................................ 36534 ........................................................................ 36535 ........................................................................ 36536 ........................................................................ 36537 ........................................................................ 36538 ........................................................................ 36539 ........................................................................ 36540 ........................................................................ 36541 ........................................................................ 36542 ........................................................................ 36543 ........................................................................ 36544 ........................................................................ 36545 ........................................................................ 36546 ........................................................................ 36547 ........................................................................ 36548 ........................................................................ 36549 ........................................................................ 36550 ........................................................................ 36551 ........................................................................ 36552 ........................................................................ 36553 ........................................................................ 36554 ........................................................................ 36555 ........................................................................ 36556 ........................................................................ 36557 ........................................................................ 36558 ........................................................................ 36559 ........................................................................ 36560 ........................................................................ 36561 ........................................................................ 36562 ........................................................................ 36563 ........................................................................ 36564 ........................................................................ 36565 ........................................................................ 36566 ........................................................................ 36567 ........................................................................ 36568 ........................................................................ 36569 ........................................................................ 36570 ........................................................................ 36571 ........................................................................ 36572 ........................................................................ 36573 ........................................................................ 36574 ........................................................................ 36575 ........................................................................ 36576 ........................................................................ 36577 ........................................................................ 36578 ........................................................................ 36579 ........................................................................ 36580 ........................................................................ 36581 ........................................................................ 36582 ........................................................................ 36583 ........................................................................ 36584 ........................................................................ 36585 ........................................................................ 36586 ........................................................................ 36587 ........................................................................ 36588 ........................................................................ 36589 ........................................................................ 36590 ........................................................................ 36591 ........................................................................ 36592 ........................................................................ 36593 ........................................................................ 36594 ........................................................................ 36595 ........................................................................ 36596 ........................................................................ 36597 ........................................................................ 36598 ........................................................................ 36599 ........................................................................ 36600 ........................................................................ 36601 ........................................................................ 36602 ........................................................................ 36603 ........................................................................ 36604 ........................................................................ 36605 ........................................................................ 36606 ........................................................................ 36607 ........................................................................ 36608 ........................................................................ 36609 ........................................................................ 36610 ........................................................................ 36611 ........................................................................ 36612 ........................................................................ 36613 ........................................................................ 36614 ........................................................................ 36615 ........................................................................ 36616 ........................................................................ 36617 ........................................................................ 36618 ........................................................................ 36619 ........................................................................ 36620 ........................................................................ 36621 ........................................................................ 36622 ........................................................................ 36623 ........................................................................ 36624 ........................................................................ 36625 ........................................................................ 36626 ........................................................................ 36627 ........................................................................ 36628 ........................................................................ 36629 ........................................................................ 36630 ........................................................................ 36631 ........................................................................ 36632 ........................................................................ 36633 ........................................................................ 36634 ........................................................................ 36635 ........................................................................ 36636 ........................................................................ 36637 ........................................................................ 36638 ........................................................................ 36639 ........................................................................ 36640 ........................................................................ 36641 ........................................................................ 36642 ........................................................................ 36643 ........................................................................ 36644 ........................................................................ 36645 ........................................................................ 36646 ........................................................................ 36647 ........................................................................ 36648 ........................................................................ 36649 ........................................................................ 36650 ........................................................................ 36651 ........................................................................ 36652 ........................................................................ 36653 ........................................................................ 36654 ........................................................................ 36655 ........................................................................ 36656 ........................................................................ 36657 ........................................................................ 36658 ........................................................................ 36659 ........................................................................ 36660 ........................................................................ 36661 ........................................................................ 36662 ........................................................................ 36663 ........................................................................ 36664 ........................................................................ 36665 ........................................................................ 36666 ........................................................................ 36667 ........................................................................ 36668 ........................................................................ 36669 ........................................................................ 36670 ........................................................................ 36671 ........................................................................ 36672 ........................................................................ 36673 ........................................................................ 36674 ........................................................................ 36675 ........................................................................ 36676 ........................................................................ 36677 ........................................................................ 36678 ........................................................................ 36679 ........................................................................ 36680 ........................................................................ 36681 ........................................................................ 36682 ........................................................................ 36683 ........................................................................ 36684 ........................................................................ 36685 ........................................................................ 36686 ........................................................................ 36687 ........................................................................ 36688 ........................................................................ 36689 ........................................................................ 36690 ........................................................................ 36691 ........................................................................ 36692 ........................................................................ 36693 ........................................................................ 36694 ........................................................................ 36695 ........................................................................ 36696 ........................................................................ 36697 ........................................................................ 36698 ........................................................................ 36699 ........................................................................ 36700 ........................................................................ 36701 ........................................................................ 36702 ........................................................................ 36703 ........................................................................ 36704 ........................................................................ 36705 ........................................................................ 36706 ........................................................................ 36707 ........................................................................ 36708 ........................................................................ 36709 ........................................................................ 36710 ........................................................................ 36711 ........................................................................ 36712 ........................................................................ 36713 ........................................................................ 36714 ........................................................................ 36715 ........................................................................ 36716 ........................................................................ 36717 ........................................................................ 36718 ........................................................................ 36719 ........................................................................ 36720 ........................................................................ 36721 ........................................................................ 36722 ........................................................................ 36723 ........................................................................ 36724 ........................................................................ 36725 ........................................................................ 36726 ........................................................................ 36727 ........................................................................ 36728 ........................................................................ 36729 ........................................................................ 36730 ........................................................................ 36731 ........................................................................ 36732 ........................................................................ 36733 ........................................................................ 36734 ........................................................................ 36735 ........................................................................ 36736 ........................................................................ 36737 ........................................................................ 36738 ........................................................................ 36739 ........................................................................ 36740 ........................................................................ 36741 ........................................................................ 36742 ........................................................................ 36743 ........................................................................ 36744 ........................................................................ 36745 ........................................................................ 36746 ........................................................................ 36747 ........................................................................ 36748 ........................................................................ 36749 ........................................................................ 36750 ........................................................................ 36751 ........................................................................ 36752 ........................................................................ 36753 ........................................................................ 36754 ........................................................................ 36755 ........................................................................ 36756 ........................................................................ 36757 ........................................................................ 36758 ........................................................................ 36759 ........................................................................ 36760 ........................................................................ 36761 ........................................................................ 36762 ........................................................................ 36763 ........................................................................ 36764 ........................................................................ 36765 ........................................................................ 36766 ........................................................................ 36767 ........................................................................ 36768 ........................................................................ 36769 ........................................................................ 36770 ........................................................................ 36771 ........................................................................ 36772 ........................................................................ 36773 ........................................................................ 36774 ........................................................................ 36775 ........................................................................ 36776 ........................................................................ 36777 ........................................................................ 36778 ........................................................................ 36779 ........................................................................ 36780 ........................................................................ 36781 ........................................................................ 36782 ........................................................................ 36783 ........................................................................ 36784 ........................................................................ 36785 ........................................................................ 36786 ........................................................................ 36787 ........................................................................ 36788 ........................................................................ 36789 ........................................................................ 36790 ........................................................................ 36791 ........................................................................ 36792 ........................................................................ 36793 ........................................................................ 36794 ........................................................................ 36795 ........................................................................ 36796 ........................................................................ 36797 ........................................................................ 36798 ........................................................................ 36799 ........................................................................ 36800 ........................................................................ 36801 ........................................................................ 36802 ........................................................................ 36803 ........................................................................ 36804 ........................................................................ 36805 ........................................................................ 36806 ........................................................................ 36807 ........................................................................ 36808 ........................................................................ 36809 ........................................................................ 36810 ........................................................................ 36811 ........................................................................ 36812 ........................................................................ 36813 ........................................................................ 36814 ........................................................................ 36815 ........................................................................ 36816 ........................................................................ 36817 ........................................................................ 36818 ........................................................................ 36819 ........................................................................ 36820 ........................................................................ 36821 ........................................................................ 36822 ........................................................................ 36823 ........................................................................ 36824 ........................................................................ 36825 ........................................................................ 36826 ........................................................................ 36827 ........................................................................ 36828 ........................................................................ 36829 ........................................................................ 36830 ........................................................................ 36831 ........................................................................ 36832 ........................................................................ 36833 ........................................................................ 36834 ........................................................................ 36835 ........................................................................ 36836 ........................................................................ 36837 ........................................................................ 36838 ........................................................................ 36839 ........................................................................ 36840 ........................................................................ 36841 ........................................................................ 36842 ........................................................................ 36843 ........................................................................ 36844 ........................................................................ 36845 ........................................................................ 36846 ........................................................................ 36847 ........................................................................ 36848 ........................................................................ 36849 ........................................................................ 36850 ........................................................................ 36851 ........................................................................ 36852 ........................................................................ 36853 ........................................................................ 36854 ........................................................................ 36855 ........................................................................ 36856 ........................................................................ 36857 ........................................................................ 36858 ........................................................................ 36859 ........................................................................ 36860 ........................................................................ 36861 ........................................................................ 36862 ........................................................................ 36863 ........................................................................ 36864 ........................................................................ 36865 ........................................................................ 36866 ........................................................................ 36867 ........................................................................ 36868 ........................................................................ 36869 ........................................................................ 36870 ........................................................................ 36871 ........................................................................ 36872 ........................................................................ 36873 ........................................................................ 36874 ........................................................................ 36875 ........................................................................ 36876 ........................................................................ 36877 ........................................................................ 36878 ........................................................................ 36879 ........................................................................ 36880 ........................................................................ 36881 ........................................................................ 36882 ........................................................................ 36883 ........................................................................ 36884 ........................................................................ 36885 ........................................................................ 36886 ........................................................................ 36887 ........................................................................ 36888 ........................................................................ 36889 ........................................................................ 36890 ........................................................................ 36891 ........................................................................ 36892 ........................................................................ 36893 ........................................................................ 36894 ........................................................................ 36895 ........................................................................ 36896 ........................................................................ 36897 ........................................................................ 36898 ........................................................................ 36899 ........................................................................ 36900 ........................................................................ 36901 ........................................................................ 36902 ........................................................................ 36903 ........................................................................ 36904 ........................................................................ 36905 ........................................................................ 36906 ........................................................................ 36907 ........................................................................ 36908 ........................................................................ 36909 ........................................................................ 36910 ........................................................................ 36911 ........................................................................ 36912 ........................................................................ 36913 ........................................................................ 36914 ........................................................................ 36915 ........................................................................ 36916 ........................................................................ 36917 ........................................................................ 36918 ........................................................................ 36919 ........................................................................ 36920 ........................................................................ 36921 ........................................................................ 36922 ........................................................................ 36923 ........................................................................ 36924 ........................................................................ 36925 ........................................................................ 36926 ........................................................................ 36927 ........................................................................ 36928 ........................................................................ 36929 ........................................................................ 36930 ........................................................................ 36931 ........................................................................ 36932 ........................................................................ 36933 ........................................................................ 36934 ........................................................................ 36935 ........................................................................ 36936 ........................................................................ 36937 ........................................................................ 36938 ........................................................................ 36939 ........................................................................ 36940 ........................................................................ 36941 ........................................................................ 36942 ........................................................................ 36943 ........................................................................ 36944 ........................................................................ 36945 ........................................................................ 36946 ........................................................................ 36947 ........................................................................ 36948 ........................................................................ 36949 ........................................................................ 36950 ........................................................................ 36951 ........................................................................ 36952 ........................................................................ 36953 ........................................................................ 36954 ........................................................................ 36955 ........................................................................ 36956 ........................................................................ 36957 ........................................................................ 36958 ........................................................................ 36959 ........................................................................ 36960 ........................................................................ 36961 ........................................................................ 36962 ........................................................................ 36963 ........................................................................ 36964 ........................................................................ 36965 ........................................................................ 36966 ........................................................................ 36967 ........................................................................ 36968 ........................................................................ 36969 ........................................................................ 36970 ........................................................................ 36971 ........................................................................ 36972 ........................................................................ 36973 ........................................................................ 36974 ........................................................................ 36975 ........................................................................ 36976 ........................................................................ 36977 ........................................................................ 36978 ........................................................................ 36979 ........................................................................ 36980 ........................................................................ 36981 ........................................................................ 36982 ........................................................................ 36983 ........................................................................ 36984 ........................................................................ 36985 ........................................................................ 36986 ........................................................................ 36987 ........................................................................ 36988 ........................................................................ 36989 ........................................................................ 36990 ........................................................................ 36991 ........................................................................ 36992 ........................................................................ 36993 ........................................................................ 36994 ........................................................................ 36995 ........................................................................ 36996 ........................................................................ 36997 ........................................................................ 36998 ........................................................................ 36999 ........................................................................ 37000 ........................................................................ 37001 ........................................................................ 37002 ........................................................................ 37003 ........................................................................ 37004 ........................................................................ 37005 ........................................................................ 37006 ........................................................................ 37007 ........................................................................ 37008 ........................................................................ 37009 ........................................................................ 37010 ........................................................................ 37011 ........................................................................ 37012 ........................................................................ 37013 ........................................................................ 37014 ........................................................................ 37015 ........................................................................ 37016 ........................................................................ 37017 ........................................................................ 37018 ........................................................................ 37019 ........................................................................ 37020 ........................................................................ 37021 ........................................................................ 37022 ........................................................................ 37023 ........................................................................ 37024 ........................................................................ 37025 ........................................................................ 37026 ........................................................................ 37027 ........................................................................ 37028 ........................................................................ 37029 ........................................................................ 37030 ........................................................................ 37031 ........................................................................ 37032 ........................................................................ 37033 ........................................................................ 37034 ........................................................................ 37035 ........................................................................ 37036 ........................................................................ 37037 ........................................................................ 37038 ........................................................................ 37039 ........................................................................ 37040 ........................................................................ 37041 ........................................................................ 37042 ........................................................................ 37043 ........................................................................ 37044 ........................................................................ 37045 ........................................................................ 37046 ........................................................................ 37047 ........................................................................ 37048 ........................................................................ 37049 ........................................................................ 37050 ........................................................................ 37051 ........................................................................ 37052 ........................................................................ 37053 ........................................................................ 37054 ........................................................................ 37055 ........................................................................ 37056 ........................................................................ 37057 ........................................................................ 37058 ........................................................................ 37059 ........................................................................ 37060 ........................................................................ 37061 ........................................................................ 37062 ........................................................................ 37063 ........................................................................ 37064 ........................................................................ 37065 ........................................................................ 37066 ........................................................................ 37067 ........................................................................ 37068 ........................................................................ 37069 ........................................................................ 37070 ........................................................................ 37071 ........................................................................ 37072 ........................................................................ 37073 ........................................................................ 37074 ........................................................................ 37075 ........................................................................ 37076 ........................................................................ 37077 ........................................................................ 37078 ........................................................................ 37079 ........................................................................ 37080 ........................................................................ 37081 ........................................................................ 37082 ........................................................................ 37083 ........................................................................ 37084 ........................................................................ 37085 ........................................................................ 37086 ........................................................................ 37087 ........................................................................ 37088 ........................................................................ 37089 ........................................................................ 37090 ........................................................................ 37091 ........................................................................ 37092 ........................................................................ 37093 ........................................................................ 37094 ........................................................................ 37095 ........................................................................ 37096 ........................................................................ 37097 ........................................................................ 37098 ........................................................................ 37099 ........................................................................ 37100 ........................................................................ 37101 ........................................................................ 37102 ........................................................................ 37103 ........................................................................ 37104 ........................................................................ 37105 ........................................................................ 37106 ........................................................................ 37107 ........................................................................ 37108 ........................................................................ 37109 ........................................................................ 37110 ........................................................................ 37111 ........................................................................ 37112 ........................................................................ 37113 ........................................................................ 37114 ........................................................................ 37115 ........................................................................ 37116 ........................................................................ 37117 ........................................................................ 37118 ........................................................................ 37119 ........................................................................ 37120 ........................................................................ 37121 ........................................................................ 37122 ........................................................................ 37123 ........................................................................ 37124 ........................................................................ 37125 ........................................................................ 37126 ........................................................................ 37127 ........................................................................ 37128 ........................................................................ 37129 ........................................................................ 37130 ........................................................................ 37131 ........................................................................ 37132 ........................................................................ 37133 ........................................................................ 37134 ........................................................................ 37135 ........................................................................ 37136 ........................................................................ 37137 ........................................................................ 37138 ........................................................................ 37139 ........................................................................ 37140 ........................................................................ 37141 ........................................................................ 37142 ........................................................................ 37143 ........................................................................ 37144 ........................................................................ 37145 ........................................................................ 37146 ........................................................................ 37147 ........................................................................ 37148 ........................................................................ 37149 ........................................................................ 37150 ........................................................................ 37151 ........................................................................ 37152 ........................................................................ 37153 ........................................................................ 37154 ........................................................................ 37155 ........................................................................ 37156 ........................................................................ 37157 ........................................................................ 37158 ........................................................................ 37159 ........................................................................ 37160 ........................................................................ 37161 ........................................................................ 37162 ........................................................................ 37163 ........................................................................ 37164 ........................................................................ 37165 ........................................................................ 37166 ........................................................................ 37167 ........................................................................ 37168 ........................................................................ 37169 ........................................................................ 37170 ........................................................................ 37171 ........................................................................ 37172 ........................................................................ 37173 ........................................................................ 37174 ........................................................................ 37175 ........................................................................ 37176 ........................................................................ 37177 ........................................................................ 37178 ........................................................................ 37179 ........................................................................ 37180 ........................................................................ 37181 ........................................................................ 37182 ........................................................................ 37183 ........................................................................ 37184 ........................................................................ 37185 ........................................................................ 37186 ........................................................................ 37187 ........................................................................ 37188 ........................................................................ 37189 ........................................................................ 37190 ........................................................................ 37191 ........................................................................ 37192 ........................................................................ 37193 ........................................................................ 37194 ........................................................................ 37195 ........................................................................ 37196 ........................................................................ 37197 ........................................................................ 37198 ........................................................................ 37199 ........................................................................ 37200 ........................................................................ 37201 ........................................................................ 37202 ........................................................................ 37203 ........................................................................ 37204 ........................................................................ 37205 ........................................................................ 37206 ........................................................................ 37207 ........................................................................ 37208 ........................................................................ 37209 ........................................................................ 37210 ........................................................................ 37211 ........................................................................ 37212 ........................................................................ 37213 ........................................................................ 37214 ........................................................................ 37215 ........................................................................ 37216 ........................................................................ 37217 ........................................................................ 37218 ........................................................................ 37219 ........................................................................ 37220 ........................................................................ 37221 ........................................................................ 37222 ........................................................................ 37223 ........................................................................ 37224 ........................................................................ 37225 ........................................................................ 37226 ........................................................................ 37227 ........................................................................ 37228 ........................................................................ 37229 ........................................................................ 37230 ........................................................................ 37231 ........................................................................ 37232 ........................................................................ 37233 ........................................................................ 37234 ........................................................................ 37235 ........................................................................ 37236 ........................................................................ 37237 ........................................................................ 37238 ........................................................................ 37239 ........................................................................ 37240 ........................................................................ 37241 ........................................................................ 37242 ........................................................................ 37243 ........................................................................ 37244 ........................................................................ 37245 ........................................................................ 37246 ........................................................................ 37247 ........................................................................ 37248 ........................................................................ 37249 ........................................................................ 37250 ........................................................................ 37251 ........................................................................ 37252 ........................................................................ 37253 ........................................................................ 37254 ........................................................................ 37255 ........................................................................ 37256 ........................................................................ 37257 ........................................................................ 37258 ........................................................................ 37259 ........................................................................ 37260 ........................................................................ 37261 ........................................................................ 37262 ........................................................................ 37263 ........................................................................ 37264 ........................................................................ 37265 ........................................................................ 37266 ........................................................................ 37267 ........................................................................ 37268 ........................................................................ 37269 ........................................................................ 37270 ........................................................................ 37271 ........................................................................ 37272 ........................................................................ 37273 ........................................................................ 37274 ........................................................................ 37275 ........................................................................ 37276 ........................................................................ 37277 ........................................................................ 37278 ........................................................................ 37279 ........................................................................ 37280 ........................................................................ 37281 ........................................................................ 37282 ........................................................................ 37283 ........................................................................ 37284 ........................................................................ 37285 ........................................................................ 37286 ........................................................................ 37287 ........................................................................ 37288 ........................................................................ 37289 ........................................................................ 37290 ........................................................................ 37291 ........................................................................ 37292 ........................................................................ 37293 ........................................................................ 37294 ........................................................................ 37295 ........................................................................ 37296 ........................................................................ 37297 ........................................................................ 37298 ........................................................................ 37299 ........................................................................ 37300 ........................................................................ 37301 ........................................................................ 37302 ........................................................................ 37303 ........................................................................ 37304 ........................................................................ 37305 ........................................................................ 37306 ........................................................................ 37307 ........................................................................ 37308 ........................................................................ 37309 ........................................................................ 37310 ........................................................................ 37311 ........................................................................ 37312 ........................................................................ 37313 ........................................................................ 37314 ........................................................................ 37315 ........................................................................ 37316 ........................................................................ 37317 ........................................................................ 37318 ........................................................................ 37319 ........................................................................ 37320 ........................................................................ 37321 ........................................................................ 37322 ........................................................................ 37323 ........................................................................ 37324 ........................................................................ 37325 ........................................................................ 37326 ........................................................................ 37327 ........................................................................ 37328 ........................................................................ 37329 ........................................................................ 37330 ........................................................................ 37331 ........................................................................ 37332 ........................................................................ 37333 ........................................................................ 37334 ........................................................................ 37335 ........................................................................ 37336 ........................................................................ 37337 ........................................................................ 37338 ........................................................................ 37339 ........................................................................ 37340 ........................................................................ 37341 ........................................................................ 37342 ........................................................................ 37343 ........................................................................ 37344 ........................................................................ 37345 ........................................................................ 37346 ........................................................................ 37347 ........................................................................ 37348 ........................................................................ 37349 ........................................................................ 37350 ........................................................................ 37351 ........................................................................ 37352 ........................................................................ 37353 ........................................................................ 37354 ........................................................................ 37355 ........................................................................ 37356 ........................................................................ 37357 ........................................................................ 37358 ........................................................................ 37359 ........................................................................ 37360 ........................................................................ 37361 ........................................................................ 37362 ........................................................................ 37363 ........................................................................ 37364 ........................................................................ 37365 ........................................................................ 37366 ........................................................................ 37367 ........................................................................ 37368 ........................................................................ 37369 ........................................................................ 37370 ........................................................................ 37371 ........................................................................ 37372 ........................................................................ 37373 ........................................................................ 37374 ........................................................................ 37375 ........................................................................ 37376 ........................................................................ 37377 ........................................................................ 37378 ........................................................................ 37379 ........................................................................ 37380 ........................................................................ 37381 ........................................................................ 37382 ........................................................................ 37383 ........................................................................ 37384 ........................................................................ 37385 ........................................................................ 37386 ........................................................................ 37387 ........................................................................ 37388 ........................................................................ 37389 ........................................................................ 37390 ........................................................................ 37391 ........................................................................ 37392 ........................................................................ 37393 ........................................................................ 37394 ........................................................................ 37395 ........................................................................ 37396 ........................................................................ 37397 ........................................................................ 37398 ........................................................................ 37399 ........................................................................ 37400 ........................................................................ 37401 ........................................................................ 37402 ........................................................................ 37403 ........................................................................ 37404 ........................................................................ 37405 ........................................................................ 37406 ........................................................................ 37407 ........................................................................ 37408 ........................................................................ 37409 ........................................................................ 37410 ........................................................................ 37411 ........................................................................ 37412 ........................................................................ 37413 ........................................................................ 37414 ........................................................................ 37415 ........................................................................ 37416 ........................................................................ 37417 ........................................................................ 37418 ........................................................................ 37419 ........................................................................ 37420 ........................................................................ 37421 ........................................................................ 37422 ........................................................................ 37423 ........................................................................ 37424 ........................................................................ 37425 ........................................................................ 37426 ........................................................................ 37427 ........................................................................ 37428 ........................................................................ 37429 ........................................................................ 37430 ........................................................................ 37431 ........................................................................ 37432 ........................................................................ 37433 ........................................................................ 37434 ........................................................................ 37435 ........................................................................ 37436 ........................................................................ 37437 ........................................................................ 37438 ........................................................................ 37439 ........................................................................ 37440 ........................................................................ 37441 ........................................................................ 37442 ........................................................................ 37443 ........................................................................ 37444 ........................................................................ 37445 ........................................................................ 37446 ........................................................................ 37447 ........................................................................ 37448 ........................................................................ 37449 ........................................................................ 37450 ........................................................................ 37451 ........................................................................ 37452 ........................................................................ 37453 ........................................................................ 37454 ........................................................................ 37455 ........................................................................ 37456 ........................................................................ 37457 ........................................................................ 37458 ........................................................................ 37459 ........................................................................ 37460 ........................................................................ 37461 ........................................................................ 37462 ........................................................................ 37463 ........................................................................ 37464 ........................................................................ 37465 ........................................................................ 37466 ........................................................................ 37467 ........................................................................ 37468 ........................................................................ 37469 ........................................................................ 37470 ........................................................................ 37471 ........................................................................ 37472 ........................................................................ 37473 ........................................................................ 37474 ........................................................................ 37475 ........................................................................ 37476 ........................................................................ 37477 ........................................................................ 37478 ........................................................................ 37479 ........................................................................ 37480 ........................................................................ 37481 ........................................................................ 37482 ........................................................................ 37483 ........................................................................ 37484 ........................................................................ 37485 ........................................................................ 37486 ........................................................................ 37487 ........................................................................ 37488 ........................................................................ 37489 ........................................................................ 37490 ........................................................................ 37491 ........................................................................ 37492 ........................................................................ 37493 ........................................................................ 37494 ........................................................................ 37495 ........................................................................ 37496 ........................................................................ 37497 ........................................................................ 37498 ........................................................................ 37499 ........................................................................ 37500 ........................................................................ 37501 ........................................................................ 37502 ........................................................................ 37503 ........................................................................ 37504 ........................................................................ 37505 ........................................................................ 37506 ........................................................................ 37507 ........................................................................ 37508 ........................................................................ 37509 ........................................................................ 37510 ........................................................................ 37511 ........................................................................ 37512 ........................................................................ 37513 ........................................................................ 37514 ........................................................................ 37515 ........................................................................ 37516 ........................................................................ 37517 ........................................................................ 37518 ........................................................................ 37519 ........................................................................ 37520 ........................................................................ 37521 ........................................................................ 37522 ........................................................................ 37523 ........................................................................ 37524 ........................................................................ 37525 ........................................................................ 37526 ........................................................................ 37527 ........................................................................ 37528 ........................................................................ 37529 ........................................................................ 37530 ........................................................................ 37531 ........................................................................ 37532 ........................................................................ 37533 ........................................................................ 37534 ........................................................................ 37535 ........................................................................ 37536 ........................................................................ 37537 ........................................................................ 37538 ........................................................................ 37539 ........................................................................ 37540 ........................................................................ 37541 ........................................................................ 37542 ........................................................................ 37543 ........................................................................ 37544 ........................................................................ 37545 ........................................................................ 37546 ........................................................................ 37547 ........................................................................ 37548 ........................................................................ 37549 ........................................................................ 37550 ........................................................................ 37551 ........................................................................ 37552 ........................................................................ 37553 ........................................................................ 37554 ........................................................................ 37555 ........................................................................ 37556 ........................................................................ 37557 ........................................................................ 37558 ........................................................................ 37559 ........................................................................ 37560 ........................................................................ 37561 ........................................................................ 37562 ........................................................................ 37563 ........................................................................ 37564 ........................................................................ 37565 ........................................................................ 37566 ........................................................................ 37567 ........................................................................ 37568 ........................................................................ 37569 ........................................................................ 37570 ........................................................................ 37571 ........................................................................ 37572 ........................................................................ 37573 ........................................................................ 37574 ........................................................................ 37575 ........................................................................ 37576 ........................................................................ 37577 ........................................................................ 37578 ........................................................................ 37579 ........................................................................ 37580 ........................................................................ 37581 ........................................................................ 37582 ........................................................................ 37583 ........................................................................ 37584 ........................................................................ 37585 ........................................................................ 37586 ........................................................................ 37587 ........................................................................ 37588 ........................................................................ 37589 ........................................................................ 37590 ........................................................................ 37591 ........................................................................ 37592 ........................................................................ 37593 ........................................................................ 37594 ........................................................................ 37595 ........................................................................ 37596 ........................................................................ 37597 ........................................................................ 37598 ........................................................................ 37599 ........................................................................ 37600 ........................................................................ 37601 ........................................................................ 37602 ........................................................................ 37603 ........................................................................ 37604 ........................................................................ 37605 ........................................................................ 37606 ........................................................................ 37607 ........................................................................ 37608 ........................................................................ 37609 ........................................................................ 37610 ........................................................................ 37611 ........................................................................ 37612 ........................................................................ 37613 ........................................................................ 37614 ........................................................................ 37615 ........................................................................ 37616 ........................................................................ 37617 ........................................................................ 37618 ........................................................................ 37619 ........................................................................ 37620 ........................................................................ 37621 ........................................................................ 37622 ........................................................................ 37623 ........................................................................ 37624 ........................................................................ 37625 ........................................................................ 37626 ........................................................................ 37627 ........................................................................ 37628 ........................................................................ 37629 ........................................................................ 37630 ........................................................................ 37631 ........................................................................ 37632 ........................................................................ 37633 ........................................................................ 37634 ........................................................................ 37635 ........................................................................ 37636 ........................................................................ 37637 ........................................................................ 37638 ........................................................................ 37639 ........................................................................ 37640 ........................................................................ 37641 ........................................................................ 37642 ........................................................................ 37643 ........................................................................ 37644 ........................................................................ 37645 ........................................................................ 37646 ........................................................................ 37647 ........................................................................ 37648 ........................................................................ 37649 ........................................................................ 37650 ........................................................................ 37651 ........................................................................ 37652 ........................................................................ 37653 ........................................................................ 37654 ........................................................................ 37655 ........................................................................ 37656 ........................................................................ 37657 ........................................................................ 37658 ........................................................................ 37659 ........................................................................ 37660 ........................................................................ 37661 ........................................................................ 37662 ........................................................................ 37663 ........................................................................ 37664 ........................................................................ 37665 ........................................................................ 37666 ........................................................................ 37667 ........................................................................ 37668 ........................................................................ 37669 ........................................................................ 37670 ........................................................................ 37671 ........................................................................ 37672 ........................................................................ 37673 ........................................................................ 37674 ........................................................................ 37675 ........................................................................ 37676 ........................................................................ 37677 ........................................................................ 37678 ........................................................................ 37679 ........................................................................ 37680 ........................................................................ 37681 ........................................................................ 37682 ........................................................................ 37683 ........................................................................ 37684 ........................................................................ 37685 ........................................................................ 37686 ........................................................................ 37687 ........................................................................ 37688 ........................................................................ 37689 ........................................................................ 37690 ........................................................................ 37691 ........................................................................ 37692 ........................................................................ 37693 ........................................................................ 37694 ........................................................................ 37695 ........................................................................ 37696 ........................................................................ 37697 ........................................................................ 37698 ........................................................................ 37699 ........................................................................ 37700 ........................................................................ 37701 ........................................................................ 37702 ........................................................................ 37703 ........................................................................ 37704 ........................................................................ 37705 ........................................................................ 37706 ........................................................................ 37707 ........................................................................ 37708 ........................................................................ 37709 ........................................................................ 37710 ........................................................................ 37711 ........................................................................ 37712 ........................................................................ 37713 ........................................................................ 37714 ........................................................................ 37715 ........................................................................ 37716 ........................................................................ 37717 ........................................................................ 37718 ........................................................................ 37719 ........................................................................ 37720 ........................................................................ 37721 ........................................................................ 37722 ........................................................................ 37723 ........................................................................ 37724 ........................................................................ 37725 ........................................................................ 37726 ........................................................................ 37727 ........................................................................ 37728 ........................................................................ 37729 ........................................................................ 37730 ........................................................................ 37731 ........................................................................ 37732 ........................................................................ 37733 ........................................................................ 37734 ........................................................................ 37735 ........................................................................ 37736 ........................................................................ 37737 ........................................................................ 37738 ........................................................................ 37739 ........................................................................ 37740 ........................................................................ 37741 ........................................................................ 37742 ........................................................................ 37743 ........................................................................ 37744 ........................................................................ 37745 ........................................................................ 37746 ........................................................................ 37747 ........................................................................ 37748 ........................................................................ 37749 ........................................................................ 37750 ........................................................................ 37751 ........................................................................ 37752 ........................................................................ 37753 ........................................................................ 37754 ........................................................................ 37755 ........................................................................ 37756 ........................................................................ 37757 ........................................................................ 37758 ........................................................................ 37759 ........................................................................ 37760 ........................................................................ 37761 ........................................................................ 37762 ........................................................................ 37763 ........................................................................ 37764 ........................................................................ 37765 ........................................................................ 37766 ........................................................................ 37767 ........................................................................ 37768 ........................................................................ 37769 ........................................................................ 37770 ........................................................................ 37771 ........................................................................ 37772 ........................................................................ 37773 ........................................................................ 37774 ........................................................................ 37775 ........................................................................ 37776 ........................................................................ 37777 ........................................................................ 37778 ........................................................................ 37779 ........................................................................ 37780 ........................................................................ 37781 ........................................................................ 37782 ........................................................................ 37783 ........................................................................ 37784 ........................................................................ 37785 ........................................................................ 37786 ........................................................................ 37787 ........................................................................ 37788 ........................................................................ 37789 ........................................................................ 37790 ........................................................................ 37791 ........................................................................ 37792 ........................................................................ 37793 ........................................................................ 37794 ........................................................................ 37795 ........................................................................ 37796 ........................................................................ 37797 ........................................................................ 37798 ........................................................................ 37799 ........................................................................ 37800 ........................................................................ 37801 ........................................................................ 37802 ........................................................................ 37803 ........................................................................ 37804 ........................................................................ 37805 ........................................................................ 37806 ........................................................................ 37807 ........................................................................ 37808 ........................................................................ 37809 ........................................................................ 37810 ........................................................................ 37811 ........................................................................ 37812 ........................................................................ 37813 ........................................................................ 37814 ........................................................................ 37815 ........................................................................ 37816 ........................................................................ 37817 ........................................................................ 37818 ........................................................................ 37819 ........................................................................ 37820 ........................................................................ 37821 ........................................................................ 37822 ........................................................................ 37823 ........................................................................ 37824 ........................................................................ 37825 ........................................................................ 37826 ........................................................................ 37827 ........................................................................ 37828 ........................................................................ 37829 ........................................................................ 37830 ........................................................................ 37831 ........................................................................ 37832 ........................................................................ 37833 ........................................................................ 37834 ........................................................................ 37835 ........................................................................ 37836 ........................................................................ 37837 ........................................................................ 37838 ........................................................................ 37839 ........................................................................ 37840 ........................................................................ 37841 ........................................................................ 37842 ........................................................................ 37843 ........................................................................ 37844 ........................................................................ 37845 ........................................................................ 37846 ........................................................................ 37847 ........................................................................ 37848 ........................................................................ 37849 ........................................................................ 37850 ........................................................................ 37851 ........................................................................ 37852 ........................................................................ 37853 ........................................................................ 37854 ........................................................................ 37855 ........................................................................ 37856 ........................................................................ 37857 ........................................................................ 37858 ........................................................................ 37859 ........................................................................ 37860 ........................................................................ 37861 ........................................................................ 37862 ........................................................................ 37863 ........................................................................ 37864 ........................................................................ 37865 ........................................................................ 37866 ........................................................................ 37867 ........................................................................ 37868 ........................................................................ 37869 ........................................................................ 37870 ........................................................................ 37871 ........................................................................ 37872 ........................................................................ 37873 ........................................................................ 37874 ........................................................................ 37875 ........................................................................ 37876 ........................................................................ 37877 ........................................................................ 37878 ........................................................................ 37879 ........................................................................ 37880 ........................................................................ 37881 ........................................................................ 37882 ........................................................................ 37883 ........................................................................ 37884 ........................................................................ 37885 ........................................................................ 37886 ........................................................................ 37887 ........................................................................ 37888 ........................................................................ 37889 ........................................................................ 37890 ........................................................................ 37891 ........................................................................ 37892 ........................................................................ 37893 ........................................................................ 37894 ........................................................................ 37895 ........................................................................ 37896 ........................................................................ 37897 ........................................................................ 37898 ........................................................................ 37899 ........................................................................ 37900 ........................................................................ 37901 ........................................................................ 37902 ........................................................................ 37903 ........................................................................ 37904 ........................................................................ 37905 ........................................................................ 37906 ........................................................................ 37907 ........................................................................ 37908 ........................................................................ 37909 ........................................................................ 37910 ........................................................................ 37911 ........................................................................ 37912 ........................................................................ 37913 ........................................................................ 37914 ........................................................................ 37915 ........................................................................ 37916 ........................................................................ 37917 ........................................................................ 37918 ........................................................................ 37919 ........................................................................ 37920 ........................................................................ 37921 ........................................................................ 37922 ........................................................................ 37923 ........................................................................ 37924 ........................................................................ 37925 ........................................................................ 37926 ........................................................................ 37927 ........................................................................ 37928 ........................................................................ 37929 ........................................................................ 37930 ........................................................................ 37931 ........................................................................ 37932 ........................................................................ 37933 ........................................................................ 37934 ........................................................................ 37935 ........................................................................ 37936 ........................................................................ 37937 ........................................................................ 37938 ........................................................................ 37939 ........................................................................ 37940 ........................................................................ 37941 ........................................................................ 37942 ........................................................................ 37943 ........................................................................ 37944 ........................................................................ 37945 ........................................................................ 37946 ........................................................................ 37947 ........................................................................ 37948 ........................................................................ 37949 ........................................................................ 37950 ........................................................................ 37951 ........................................................................ 37952 ........................................................................ 37953 ........................................................................ 37954 ........................................................................ 37955 ........................................................................ 37956 ........................................................................ 37957 ........................................................................ 37958 ........................................................................ 37959 ........................................................................ 37960 ........................................................................ 37961 ........................................................................ 37962 ........................................................................ 37963 ........................................................................ 37964 ........................................................................ 37965 ........................................................................ 37966 ........................................................................ 37967 ........................................................................ 37968 ........................................................................ 37969 ........................................................................ 37970 ........................................................................ 37971 ........................................................................ 37972 ........................................................................ 37973 ........................................................................ 37974 ........................................................................ 37975 ........................................................................ 37976 ........................................................................ 37977 ........................................................................ 37978 ........................................................................ 37979 ........................................................................ 37980 ........................................................................ 37981 ........................................................................ 37982 ........................................................................ 37983 ........................................................................ 37984 ........................................................................ 37985 ........................................................................ 37986 ........................................................................ 37987 ........................................................................ 37988 ........................................................................ 37989 ........................................................................ 37990 ........................................................................ 37991 ........................................................................ 37992 ........................................................................ 37993 ........................................................................ 37994 ........................................................................ 37995 ........................................................................ 37996 ........................................................................ 37997 ........................................................................ 37998 ........................................................................ 37999 ........................................................................ 38000 ........................................................................ 38001 ........................................................................ 38002 ........................................................................ 38003 ........................................................................ 38004 ........................................................................ 38005 ........................................................................ 38006 ........................................................................ 38007 ........................................................................ 38008 ........................................................................ 38009 ........................................................................ 38010 ........................................................................ 38011 ........................................................................ 38012 ........................................................................ 38013 ........................................................................ 38014 ........................................................................ 38015 ........................................................................ 38016 ........................................................................ 38017 ........................................................................ 38018 ........................................................................ 38019 ........................................................................ 38020 ........................................................................ 38021 ........................................................................ 38022 ........................................................................ 38023 ........................................................................ 38024 ........................................................................ 38025 ........................................................................ 38026 ........................................................................ 38027 ........................................................................ 38028 ........................................................................ 38029 ........................................................................ 38030 ........................................................................ 38031 ........................................................................ 38032 ........................................................................ 38033 ........................................................................ 38034 ........................................................................ 38035 ........................................................................ 38036 ........................................................................ 38037 ........................................................................ 38038 ........................................................................ 38039 ........................................................................ 38040 ........................................................................ 38041 ........................................................................ 38042 ........................................................................ 38043 ........................................................................ 38044 ........................................................................ 38045 ........................................................................ 38046 ........................................................................ 38047 ........................................................................ 38048 ........................................................................ 38049 ........................................................................ 38050 ........................................................................ 38051 ........................................................................ 38052 ........................................................................ 38053 ........................................................................ 38054 ........................................................................ 38055 ........................................................................ 38056 ........................................................................ 38057 ........................................................................ 38058 ........................................................................ 38059 ........................................................................ 38060 ........................................................................ 38061 ........................................................................ 38062 ........................................................................ 38063 ........................................................................ 38064 ........................................................................ 38065 ........................................................................ 38066 ........................................................................ 38067 ........................................................................ 38068 ........................................................................ 38069 ........................................................................ 38070 ........................................................................ 38071 ........................................................................ 38072 ........................................................................ 38073 ........................................................................ 38074 ........................................................................ 38075 ........................................................................ 38076 ........................................................................ 38077 ........................................................................ 38078 ........................................................................ 38079 ........................................................................ 38080 ........................................................................ 38081 ........................................................................ 38082 ........................................................................ 38083 ........................................................................ 38084 ........................................................................ 38085 ........................................................................ 38086 ........................................................................ 38087 ........................................................................ 38088 ........................................................................ 38089 ........................................................................ 38090 ........................................................................ 38091 ........................................................................ 38092 ........................................................................ 38093 ........................................................................ 38094 ........................................................................ 38095 ........................................................................ 38096 ........................................................................ 38097 ........................................................................ 38098 ........................................................................ 38099 ........................................................................ 38100 ........................................................................ 38101 ........................................................................ 38102 ........................................................................ 38103 ........................................................................ 38104 ........................................................................ 38105 ........................................................................ 38106 ........................................................................ 38107 ........................................................................ 38108 ........................................................................ 38109 ........................................................................ 38110 ........................................................................ 38111 ........................................................................ 38112 ........................................................................ 38113 ........................................................................ 38114 ........................................................................ 38115 ........................................................................ 38116 ........................................................................ 38117 ........................................................................ 38118 ........................................................................ 38119 ........................................................................ 38120 ........................................................................ 38121 ........................................................................ 38122 ........................................................................ 38123 ........................................................................ 38124 ........................................................................ 38125 ........................................................................ 38126 ........................................................................ 38127 ........................................................................ 38128 ........................................................................ 38129 ........................................................................ 38130 ........................................................................ 38131 ........................................................................ 38132 ........................................................................ 38133 ........................................................................ 38134 ........................................................................ 38135 ........................................................................ 38136 ........................................................................ 38137 ........................................................................ 38138 ........................................................................ 38139 ........................................................................ 38140 ........................................................................ 38141 ........................................................................ 38142 ........................................................................ 38143 ........................................................................ 38144 ........................................................................ 38145 ........................................................................ 38146 ........................................................................ 38147 ........................................................................ 38148 ........................................................................ 38149 ........................................................................ 38150 ........................................................................ 38151 ........................................................................ 38152 ........................................................................ 38153 ........................................................................ 38154 ........................................................................ 38155 ........................................................................ 38156 ........................................................................ 38157 ........................................................................ 38158 ........................................................................ 38159 ........................................................................ 38160 ........................................................................ 38161 ........................................................................ 38162 ........................................................................ 38163 ........................................................................ 38164 ........................................................................ 38165 ........................................................................ 38166 ........................................................................ 38167 ........................................................................ 38168 ........................................................................ 38169 ........................................................................ 38170 ........................................................................ 38171 ........................................................................ 38172 ........................................................................ 38173 ........................................................................ 38174 ........................................................................ 38175 ........................................................................ 38176 ........................................................................ 38177 ........................................................................ 38178 ........................................................................ 38179 ........................................................................ 38180 ........................................................................ 38181 ........................................................................ 38182 ........................................................................ 38183 ........................................................................ 38184 ........................................................................ 38185 ........................................................................ 38186 ........................................................................ 38187 ........................................................................ 38188 ........................................................................ 38189 ........................................................................ 38190 ........................................................................ 38191 ........................................................................ 38192 ........................................................................ 38193 ........................................................................ 38194 ........................................................................ 38195 ........................................................................ 38196 ........................................................................ 38197 ........................................................................ 38198 ........................................................................ 38199 ........................................................................ 38200 ........................................................................ 38201 ........................................................................ 38202 ........................................................................ 38203 ........................................................................ 38204 ........................................................................ 38205 ........................................................................ 38206 ........................................................................ 38207 ........................................................................ 38208 ........................................................................ 38209 ........................................................................ 38210 ........................................................................ 38211 ........................................................................ 38212 ........................................................................ 38213 ........................................................................ 38214 ........................................................................ 38215 ........................................................................ 38216 ........................................................................ 38217 ........................................................................ 38218 ........................................................................ 38219 ........................................................................ 38220 ........................................................................ 38221 ........................................................................ 38222 ........................................................................ 38223 ........................................................................ 38224 ........................................................................ 38225 ........................................................................ 38226 ........................................................................ 38227 ........................................................................ 38228 ........................................................................ 38229 ........................................................................ 38230 ........................................................................ 38231 ........................................................................ 38232 ........................................................................ 38233 ........................................................................ 38234 ........................................................................ 38235 ........................................................................ 38236 ........................................................................ 38237 ........................................................................ 38238 ........................................................................ 38239 ........................................................................ 38240 ........................................................................ 38241 ........................................................................ 38242 ........................................................................ 38243 ........................................................................ 38244 ........................................................................ 38245 ........................................................................ 38246 ........................................................................ 38247 ........................................................................ 38248 ........................................................................ 38249 ........................................................................ 38250 ........................................................................ 38251 ........................................................................ 38252 ........................................................................ 38253 ........................................................................ 38254 ........................................................................ 38255 ........................................................................ 38256 ........................................................................ 38257 ........................................................................ 38258 ........................................................................ 38259 ........................................................................ 38260 ........................................................................ 38261 ........................................................................ 38262 ........................................................................ 38263 ........................................................................ 38264 ........................................................................ 38265 ........................................................................ 38266 ........................................................................ 38267 ........................................................................ 38268 ........................................................................ 38269 ........................................................................ 38270 ........................................................................ 38271 ........................................................................ 38272 ........................................................................ 38273 ........................................................................ 38274 ........................................................................ 38275 ........................................................................ 38276 ........................................................................ 38277 ........................................................................ 38278 ........................................................................ 38279 ........................................................................ 38280 ........................................................................ 38281 ........................................................................ 38282 ........................................................................ 38283 ........................................................................ 38284 ........................................................................ 38285 ........................................................................ 38286 ........................................................................ 38287 ........................................................................ 38288 ........................................................................ 38289 ........................................................................ 38290 ........................................................................ 38291 ........................................................................ 38292 ........................................................................ 38293 ........................................................................ 38294 ........................................................................ 38295 ........................................................................ 38296 ........................................................................ 38297 ........................................................................ 38298 ........................................................................ 38299 ........................................................................ 38300 ........................................................................ 38301 ........................................................................ 38302 ........................................................................ 38303 ........................................................................ 38304 ........................................................................ 38305 ........................................................................ 38306 ........................................................................ 38307 ........................................................................ 38308 ........................................................................ 38309 ........................................................................ 38310 ........................................................................ 38311 ........................................................................ 38312 ........................................................................ 38313 ........................................................................ 38314 ........................................................................ 38315 ........................................................................ 38316 ........................................................................ 38317 ........................................................................ 38318 ........................................................................ 38319 ........................................................................ 38320 ........................................................................ 38321 ........................................................................ 38322 ........................................................................ 38323 ........................................................................ 38324 ........................................................................ 38325 ........................................................................ 38326 ........................................................................ 38327 ........................................................................ 38328 ........................................................................ 38329 ........................................................................ 38330 ........................................................................ 38331 ........................................................................ 38332 ........................................................................ 38333 ........................................................................ 38334 ........................................................................ 38335 ........................................................................ 38336 ........................................................................ 38337 ........................................................................ 38338 ........................................................................ 38339 ........................................................................ 38340 ........................................................................ 38341 ........................................................................ 38342 ........................................................................ 38343 ........................................................................ 38344 ........................................................................ 38345 ........................................................................ 38346 ........................................................................ 38347 ........................................................................ 38348 ........................................................................ 38349 ........................................................................ 38350 ........................................................................ 38351 ........................................................................ 38352 ........................................................................ 38353 ........................................................................ 38354 ........................................................................ 38355 ........................................................................ 38356 ........................................................................ 38357 ........................................................................ 38358 ........................................................................ 38359 ........................................................................ 38360 ........................................................................ 38361 ........................................................................ 38362 ........................................................................ 38363 ........................................................................ 38364 ........................................................................ 38365 ........................................................................ 38366 ........................................................................ 38367 ........................................................................ 38368 ........................................................................ 38369 ........................................................................ 38370 ........................................................................ 38371 ........................................................................ 38372 ........................................................................ 38373 ........................................................................ 38374 ........................................................................ 38375 ........................................................................ 38376 ........................................................................ 38377 ........................................................................ 38378 ........................................................................ 38379 ........................................................................ 38380 ........................................................................ 38381 ........................................................................ 38382 ........................................................................ 38383 ........................................................................ 38384 ........................................................................ 38385 ........................................................................ 38386 ........................................................................ 38387 ........................................................................ 38388 ........................................................................ 38389 ........................................................................ 38390 ........................................................................ 38391 ........................................................................ 38392 ........................................................................ 38393 ........................................................................ 38394 ........................................................................ 38395 ........................................................................ 38396 ........................................................................ 38397 ........................................................................ 38398 ........................................................................ 38399 ........................................................................ 38400 ........................................................................ 38401 ........................................................................ 38402 ........................................................................ 38403 ........................................................................ 38404 ........................................................................ 38405 ........................................................................ 38406 ........................................................................ 38407 ........................................................................ 38408 ........................................................................ 38409 ........................................................................ 38410 ........................................................................ 38411 ........................................................................ 38412 ........................................................................ 38413 ........................................................................ 38414 ........................................................................ 38415 ........................................................................ 38416 ........................................................................ 38417 ........................................................................ 38418 ........................................................................ 38419 ........................................................................ 38420 ........................................................................ 38421 ........................................................................ 38422 ........................................................................ 38423 ........................................................................ 38424 ........................................................................ 38425 ........................................................................ 38426 ........................................................................ 38427 ........................................................................ 38428 ........................................................................ 38429 ........................................................................ 38430 ........................................................................ 38431 ........................................................................ 38432 ........................................................................ 38433 ........................................................................ 38434 ........................................................................ 38435 ........................................................................ 38436 ........................................................................ 38437 ........................................................................ 38438 ........................................................................ 38439 ........................................................................ 38440 ........................................................................ 38441 ........................................................................ 38442 ........................................................................ 38443 ........................................................................ 38444 ........................................................................ 38445 ........................................................................ 38446 ........................................................................ 38447 ........................................................................ 38448 ........................................................................ 38449 ........................................................................ 38450 ........................................................................ 38451 ........................................................................ 38452 ........................................................................ 38453 ........................................................................ 38454 ........................................................................ 38455 ........................................................................ 38456 ........................................................................ 38457 ........................................................................ 38458 ........................................................................ 38459 ........................................................................ 38460 ........................................................................ 38461 ........................................................................ 38462 ........................................................................ 38463 ........................................................................ 38464 ........................................................................ 38465 ........................................................................ 38466 ........................................................................ 38467 ........................................................................ 38468 ........................................................................ 38469 ........................................................................ 38470 ........................................................................ 38471 ........................................................................ 38472 ........................................................................ 38473 ........................................................................ 38474 ........................................................................ 38475 ........................................................................ 38476 ........................................................................ 38477 ........................................................................ 38478 ........................................................................ 38479 ........................................................................ 38480 ........................................................................ 38481 ........................................................................ 38482 ........................................................................ 38483 ........................................................................ 38484 ........................................................................ 38485 ........................................................................ 38486 ........................................................................ 38487 ........................................................................ 38488 ........................................................................ 38489 ........................................................................ 38490 ........................................................................ 38491 ........................................................................ 38492 ........................................................................ 38493 ........................................................................ 38494 ........................................................................ 38495 ........................................................................ 38496 ........................................................................ 38497 ........................................................................ 38498 ........................................................................ 38499 ........................................................................ 38500 ........................................................................ 38501 ........................................................................ 38502 ........................................................................ 38503 ........................................................................ 38504 ........................................................................ 38505 ........................................................................ 38506 ........................................................................ 38507 ........................................................................ 38508 ........................................................................ 38509 ........................................................................ 38510 ........................................................................ 38511 ........................................................................ 38512 ........................................................................ 38513 ........................................................................ 38514 ........................................................................ 38515 ........................................................................ 38516 ........................................................................ 38517 ........................................................................ 38518 ........................................................................ 38519 ........................................................................ 38520 ........................................................................ 38521 ........................................................................ 38522 ........................................................................ 38523 ........................................................................ 38524 ........................................................................ 38525 ........................................................................ 38526 ........................................................................ 38527 ........................................................................ 38528 ........................................................................ 38529 ........................................................................ 38530 ........................................................................ 38531 ........................................................................ 38532 ........................................................................ 38533 ........................................................................ 38534 ........................................................................ 38535 ........................................................................ 38536 ........................................................................ 38537 ........................................................................ 38538 ........................................................................ 38539 ........................................................................ 38540 ........................................................................ 38541 ........................................................................ 38542 ........................................................................ 38543 ........................................................................ 38544 ........................................................................ 38545 ........................................................................ 38546 ........................................................................ 38547 ........................................................................ 38548 ........................................................................ 38549 ........................................................................ 38550 ........................................................................ 38551 ........................................................................ 38552 ........................................................................ 38553 ........................................................................ 38554 ........................................................................ 38555 ........................................................................ 38556 ........................................................................ 38557 ........................................................................ 38558 ........................................................................ 38559 ........................................................................ 38560 ........................................................................ 38561 ........................................................................ 38562 ........................................................................ 38563 ........................................................................ 38564 ........................................................................ 38565 ........................................................................ 38566 ........................................................................ 38567 ........................................................................ 38568 ........................................................................ 38569 ........................................................................ 38570 ........................................................................ 38571 ........................................................................ 38572 ........................................................................ 38573 ........................................................................ 38574 ........................................................................ 38575 ........................................................................ 38576 ........................................................................ 38577 ........................................................................ 38578 ........................................................................ 38579 ........................................................................ 38580 ........................................................................ 38581 ........................................................................ 38582 ........................................................................ 38583 ........................................................................ 38584 ........................................................................ 38585 ........................................................................ 38586 ........................................................................ 38587 ........................................................................ 38588 ........................................................................ 38589 ........................................................................ 38590 ........................................................................ 38591 ........................................................................ 38592 ........................................................................ 38593 ........................................................................ 38594 ........................................................................ 38595 ........................................................................ 38596 ........................................................................ 38597 ........................................................................ 38598 ........................................................................ 38599 ........................................................................ 38600 ........................................................................ 38601 ........................................................................ 38602 ........................................................................ 38603 ........................................................................ 38604 ........................................................................ 38605 ........................................................................ 38606 ........................................................................ 38607 ........................................................................ 38608 ........................................................................ 38609 ........................................................................ 38610 ........................................................................ 38611 ........................................................................ 38612 ........................................................................ 38613 ........................................................................ 38614 ........................................................................ 38615 ........................................................................ 38616 ........................................................................ 38617 ........................................................................ 38618 ........................................................................ 38619 ........................................................................ 38620 ........................................................................ 38621 ........................................................................ 38622 ........................................................................ 38623 ........................................................................ 38624 ........................................................................ 38625 ........................................................................ 38626 ........................................................................ 38627 ........................................................................ 38628 ........................................................................ 38629 ........................................................................ 38630 ........................................................................ 38631 ........................................................................ 38632 ........................................................................ 38633 ........................................................................ 38634 ........................................................................ 38635 ........................................................................ 38636 ........................................................................ 38637 ........................................................................ 38638 ........................................................................ 38639 ........................................................................ 38640 ........................................................................ 38641 ........................................................................ 38642 ........................................................................ 38643 ........................................................................ 38644 ........................................................................ 38645 ........................................................................ 38646 ........................................................................ 38647 ........................................................................ 38648 ........................................................................ 38649 ........................................................................ 38650 ........................................................................ 38651 ........................................................................ 38652 ........................................................................ 38653 ........................................................................ 38654 ........................................................................ 38655 ........................................................................ 38656 ........................................................................ 38657 ........................................................................ 38658 ........................................................................ 38659 ........................................................................ 38660 ........................................................................ 38661 ........................................................................ 38662 ........................................................................ 38663 ........................................................................ 38664 ........................................................................ 38665 ........................................................................ 38666 ........................................................................ 38667 ........................................................................ 38668 ........................................................................ 38669 ........................................................................ 38670 ........................................................................ 38671 ........................................................................ 38672 ........................................................................ 38673 ........................................................................ 38674 ........................................................................ 38675 ........................................................................ 38676 ........................................................................ 38677 ........................................................................ 38678 ........................................................................ 38679 ........................................................................ 38680 ........................................................................ 38681 ........................................................................ 38682 ........................................................................ 38683 ........................................................................ 38684 ........................................................................ 38685 ........................................................................ 38686 ........................................................................ 38687 ........................................................................ 38688 ........................................................................ 38689 ........................................................................ 38690 ........................................................................ 38691 ........................................................................ 38692 ........................................................................ 38693 ........................................................................ 38694 ........................................................................ 38695 ........................................................................ 38696 ........................................................................ 38697 ........................................................................ 38698 ........................................................................ 38699 ........................................................................ 38700 ........................................................................ 38701 ........................................................................ 38702 ........................................................................ 38703 ........................................................................ 38704 ........................................................................ 38705 ........................................................................ 38706 ........................................................................ 38707 ........................................................................ 38708 ........................................................................ 38709 ........................................................................ 38710 ........................................................................ 38711 ........................................................................ 38712 ........................................................................ 38713 ........................................................................ 38714 ........................................................................ 38715 ........................................................................ 38716 ........................................................................ 38717 ........................................................................ 38718 ........................................................................ 38719 ........................................................................ 38720 ........................................................................ 38721 ........................................................................ 38722 ........................................................................ 38723 ........................................................................ 38724 ........................................................................ 38725 ........................................................................ 38726 ........................................................................ 38727 ........................................................................ 38728 ........................................................................ 38729 ........................................................................ 38730 ........................................................................ 38731 ........................................................................ 38732 ........................................................................ 38733 ........................................................................ 38734 ........................................................................ 38735 ........................................................................ 38736 ........................................................................ 38737 ........................................................................ 38738 ........................................................................ 38739 ........................................................................ 38740 ........................................................................ 38741 ........................................................................ 38742 ........................................................................ 38743 ........................................................................ 38744 ........................................................................ 38745 ........................................................................ 38746 ........................................................................ 38747 ........................................................................ 38748 ........................................................................ 38749 ........................................................................ 38750 ........................................................................ 38751 ........................................................................ 38752 ........................................................................ 38753 ........................................................................ 38754 ........................................................................ 38755 ........................................................................ 38756 ........................................................................ 38757 ........................................................................ 38758 ........................................................................ 38759 ........................................................................ 38760 ........................................................................ 38761 ........................................................................ 38762 ........................................................................ 38763 ........................................................................ 38764 ........................................................................ 38765 ........................................................................ 38766 ........................................................................ 38767 ........................................................................ 38768 ........................................................................ 38769 ........................................................................ 38770 ........................................................................ 38771 ........................................................................ 38772 ........................................................................ 38773 ........................................................................ 38774 ........................................................................ 38775 ........................................................................ 38776 ........................................................................ 38777 ........................................................................ 38778 ........................................................................ 38779 ........................................................................ 38780 ........................................................................ 38781 ........................................................................ 38782 ........................................................................ 38783 ........................................................................ 38784 ........................................................................ 38785 ........................................................................ 38786 ........................................................................ 38787 ........................................................................ 38788 ........................................................................ 38789 ........................................................................ 38790 ........................................................................ 38791 ........................................................................ 38792 ........................................................................ 38793 ........................................................................ 38794 ........................................................................ 38795 ........................................................................ 38796 ........................................................................ 38797 ........................................................................ 38798 ........................................................................ 38799 ........................................................................ 38800 ........................................................................ 38801 ........................................................................ 38802 ........................................................................ 38803 ........................................................................ 38804 ........................................................................ 38805 ........................................................................ 38806 ........................................................................ 38807 ........................................................................ 38808 ........................................................................ 38809 ........................................................................ 38810 ........................................................................ 38811 ........................................................................ 38812 ........................................................................ 38813 ........................................................................ 38814 ........................................................................ 38815 ........................................................................ 38816 ........................................................................ 38817 ........................................................................ 38818 ........................................................................ 38819 ........................................................................ 38820 ........................................................................ 38821 ........................................................................ 38822 ........................................................................ 38823 ........................................................................ 38824 ........................................................................ 38825 ........................................................................ 38826 ........................................................................ 38827 ........................................................................ 38828 ........................................................................ 38829 ........................................................................ 38830 ........................................................................ 38831 ........................................................................ 38832 ........................................................................ 38833 ........................................................................ 38834 ........................................................................ 38835 ........................................................................ 38836 ........................................................................ 38837 ........................................................................ 38838 ........................................................................ 38839 ........................................................................ 38840 ........................................................................ 38841 ........................................................................ 38842 ........................................................................ 38843 ........................................................................ 38844 ........................................................................ 38845 ........................................................................ 38846 ........................................................................ 38847 ........................................................................ 38848 ........................................................................ 38849 ........................................................................ 38850 ........................................................................ 38851 ........................................................................ 38852 ........................................................................ 38853 ........................................................................ 38854 ........................................................................ 38855 ........................................................................ 38856 ........................................................................ 38857 ........................................................................ 38858 ........................................................................ 38859 ........................................................................ 38860 ........................................................................ 38861 ........................................................................ 38862 ........................................................................ 38863 ........................................................................ 38864 ........................................................................ 38865 ........................................................................ 38866 ........................................................................ 38867 ........................................................................ 38868 ........................................................................ 38869 ........................................................................ 38870 ........................................................................ 38871 ........................................................................ 38872 ........................................................................ 38873 ........................................................................ 38874 ........................................................................ 38875 ........................................................................ 38876 ........................................................................ 38877 ........................................................................ 38878 ........................................................................ 38879 ........................................................................ 38880 ........................................................................ 38881 ........................................................................ 38882 ........................................................................ 38883 ........................................................................ 38884 ........................................................................ 38885 ........................................................................ 38886 ........................................................................ 38887 ........................................................................ 38888 ........................................................................ 38889 ........................................................................ 38890 ........................................................................ 38891 ........................................................................ 38892 ........................................................................ 38893 ........................................................................ 38894 ........................................................................ 38895 ........................................................................ 38896 ........................................................................ 38897 ........................................................................ 38898 ........................................................................ 38899 ........................................................................ 38900 ........................................................................ 38901 ........................................................................ 38902 ........................................................................ 38903 ........................................................................ 38904 ........................................................................ 38905 ........................................................................ 38906 ........................................................................ 38907 ........................................................................ 38908 ........................................................................ 38909 ........................................................................ 38910 ........................................................................ 38911 ........................................................................ 38912 ........................................................................ 38913 ........................................................................ 38914 ........................................................................ 38915 ........................................................................ 38916 ........................................................................ 38917 ........................................................................ 38918 ........................................................................ 38919 ........................................................................ 38920 ........................................................................ 38921 ........................................................................ 38922 ........................................................................ 38923 ........................................................................ 38924 ........................................................................ 38925 ........................................................................ 38926 ........................................................................ 38927 ........................................................................ 38928 ........................................................................ 38929 ........................................................................ 38930 ........................................................................ 38931 ........................................................................ 38932 ........................................................................ 38933 ........................................................................ 38934 ........................................................................ 38935 ........................................................................ 38936 ........................................................................ 38937 ........................................................................ 38938 ........................................................................ 38939 ........................................................................ 38940 ........................................................................ 38941 ........................................................................ 38942 ........................................................................ 38943 ........................................................................ 38944 ........................................................................ 38945 ........................................................................ 38946 ........................................................................ 38947 ........................................................................ 38948 ........................................................................ 38949 ........................................................................ 38950 ........................................................................ 38951 ........................................................................ 38952 ........................................................................ 38953 ........................................................................ 38954 ........................................................................ 38955 ........................................................................ 38956 ........................................................................ 38957 ........................................................................ 38958 ........................................................................ 38959 ........................................................................ 38960 ........................................................................ 38961 ........................................................................ 38962 ........................................................................ 38963 ........................................................................ 38964 ........................................................................ 38965 ........................................................................ 38966 ........................................................................ 38967 ........................................................................ 38968 ........................................................................ 38969 ........................................................................ 38970 ........................................................................ 38971 ........................................................................ 38972 ........................................................................ 38973 ........................................................................ 38974 ........................................................................ 38975 ........................................................................ 38976 ........................................................................ 38977 ........................................................................ 38978 ........................................................................ 38979 ........................................................................ 38980 ........................................................................ 38981 ........................................................................ 38982 ........................................................................ 38983 ........................................................................ 38984 ........................................................................ 38985 ........................................................................ 38986 ........................................................................ 38987 ........................................................................ 38988 ........................................................................ 38989 ........................................................................ 38990 ........................................................................ 38991 ........................................................................ 38992 ........................................................................ 38993 ........................................................................ 38994 ........................................................................ 38995 ........................................................................ 38996 ........................................................................ 38997 ........................................................................ 38998 ........................................................................ 38999 ........................................................................ 39000 ........................................................................ 39001 ........................................................................ 39002 ........................................................................ 39003 ........................................................................ 39004 ........................................................................ 39005 ........................................................................ 39006 ........................................................................ 39007 ........................................................................ 39008 ........................................................................ 39009 ........................................................................ 39010 ........................................................................ 39011 ........................................................................ 39012 ........................................................................ 39013 ........................................................................ 39014 ........................................................................ 39015 ........................................................................ 39016 ........................................................................ 39017 ........................................................................ 39018 ........................................................................ 39019 ........................................................................ 39020 ........................................................................ 39021 ........................................................................ 39022 ........................................................................ 39023 ........................................................................ 39024 ........................................................................ 39025 ........................................................................ 39026 ........................................................................ 39027 ........................................................................ 39028 ........................................................................ 39029 ........................................................................ 39030 ........................................................................ 39031 ........................................................................ 39032 ........................................................................ 39033 ........................................................................ 39034 ........................................................................ 39035 ........................................................................ 39036 ........................................................................ 39037 ........................................................................ 39038 ........................................................................ 39039 ........................................................................ 39040 ........................................................................ 39041 ........................................................................ 39042 ........................................................................ 39043 ........................................................................ 39044 ........................................................................ 39045 ........................................................................ 39046 ........................................................................ 39047 ........................................................................ 39048 ........................................................................ 39049 ........................................................................ 39050 ........................................................................ 39051 ........................................................................ 39052 ........................................................................ 39053 ........................................................................ 39054 ........................................................................ 39055 ........................................................................ 39056 ........................................................................ 39057 ........................................................................ 39058 ........................................................................ 39059 ........................................................................ 39060 ........................................................................ 39061 ........................................................................ 39062 ........................................................................ 39063 ........................................................................ 39064 ........................................................................ 39065 ........................................................................ 39066 ........................................................................ 39067 ........................................................................ 39068 ........................................................................ 39069 ........................................................................ 39070 ........................................................................ 39071 ........................................................................ 39072 ........................................................................ 39073 ........................................................................ 39074 ........................................................................ 39075 ........................................................................ 39076 ........................................................................ 39077 ........................................................................ 39078 ........................................................................ 39079 ........................................................................ 39080 ........................................................................ 39081 ........................................................................ 39082 ........................................................................ 39083 ........................................................................ 39084 ........................................................................ 39085 ........................................................................ 39086 ........................................................................ 39087 ........................................................................ 39088 ........................................................................ 39089 ........................................................................ 39090 ........................................................................ 39091 ........................................................................ 39092 ........................................................................ 39093 ........................................................................ 39094 ........................................................................ 39095 ........................................................................ 39096 ........................................................................ 39097 ........................................................................ 39098 ........................................................................ 39099 ........................................................................ 39100 ........................................................................ 39101 ........................................................................ 39102 ........................................................................ 39103 ........................................................................ 39104 ........................................................................ 39105 ........................................................................ 39106 ........................................................................ 39107 ........................................................................ 39108 ........................................................................ 39109 ........................................................................ 39110 ........................................................................ 39111 ........................................................................ 39112 ........................................................................ 39113 ........................................................................ 39114 ........................................................................ 39115 ........................................................................ 39116 ........................................................................ 39117 ........................................................................ 39118 ........................................................................ 39119 ........................................................................ 39120 ........................................................................ 39121 ........................................................................ 39122 ........................................................................ 39123 ........................................................................ 39124 ........................................................................ 39125 ........................................................................ 39126 ........................................................................ 39127 ........................................................................ 39128 ........................................................................ 39129 ........................................................................ 39130 ........................................................................ 39131 ........................................................................ 39132 ........................................................................ 39133 ........................................................................ 39134 ........................................................................ 39135 ........................................................................ 39136 ........................................................................ 39137 ........................................................................ 39138 ........................................................................ 39139 ........................................................................ 39140 ........................................................................ 39141 ........................................................................ 39142 ........................................................................ 39143 ........................................................................ 39144 ........................................................................ 39145 ........................................................................ 39146 ........................................................................ 39147 ........................................................................ 39148 ........................................................................ 39149 ........................................................................ 39150 ........................................................................ 39151 ........................................................................ 39152 ........................................................................ 39153 ........................................................................ 39154 ........................................................................ 39155 ........................................................................ 39156 ........................................................................ 39157 ........................................................................ 39158 ........................................................................ 39159 ........................................................................ 39160 ........................................................................ 39161 ........................................................................ 39162 ........................................................................ 39163 ........................................................................ 39164 ........................................................................ 39165 ........................................................................ 39166 ........................................................................ 39167 ........................................................................ 39168 ........................................................................ 39169 ........................................................................ 39170 ........................................................................ 39171 ........................................................................ 39172 ........................................................................ 39173 ........................................................................ 39174 ........................................................................ 39175 ........................................................................ 39176 ........................................................................ 39177 ........................................................................ 39178 ........................................................................ 39179 ........................................................................ 39180 ........................................................................ 39181 ........................................................................ 39182 ........................................................................ 39183 ........................................................................ 39184 ........................................................................ 39185 ........................................................................ 39186 ........................................................................ 39187 ........................................................................ 39188 ........................................................................ 39189 ........................................................................ 39190 ........................................................................ 39191 ........................................................................ 39192 ........................................................................ 39193 ........................................................................ 39194 ........................................................................ 39195 ........................................................................ 39196 ........................................................................ 39197 ........................................................................ 39198 ........................................................................ 39199 ........................................................................ 39200 ........................................................................ 39201 ........................................................................ 39202 ........................................................................ 39203 ........................................................................ 39204 ........................................................................ 39205 ........................................................................ 39206 ........................................................................ 39207 ........................................................................ 39208 ........................................................................ 39209 ........................................................................ 39210 ........................................................................ 39211 ........................................................................ 39212 ........................................................................ 39213 ........................................................................ 39214 ........................................................................ 39215 ........................................................................ 39216 ........................................................................ 39217 ........................................................................ 39218 ........................................................................ 39219 ........................................................................ 39220 ........................................................................ 39221 ........................................................................ 39222 ........................................................................ 39223 ........................................................................ 39224 ........................................................................ 39225 ........................................................................ 39226 ........................................................................ 39227 ........................................................................ 39228 ........................................................................ 39229 ........................................................................ 39230 ........................................................................ 39231 ........................................................................ 39232 ........................................................................ 39233 ........................................................................ 39234 ........................................................................ 39235 ........................................................................ 39236 ........................................................................ 39237 ........................................................................ 39238 ........................................................................ 39239 ........................................................................ 39240 ........................................................................ 39241 ........................................................................ 39242 ........................................................................ 39243 ........................................................................ 39244 ........................................................................ 39245 ........................................................................ 39246 ........................................................................ 39247 ........................................................................ 39248 ........................................................................ 39249 ........................................................................ 39250 ........................................................................ 39251 ........................................................................ 39252 ........................................................................ 39253 ........................................................................ 39254 ........................................................................ 39255 ........................................................................ 39256 ........................................................................ 39257 ........................................................................ 39258 ........................................................................ 39259 ........................................................................ 39260 ........................................................................ 39261 ........................................................................ 39262 ........................................................................ 39263 ........................................................................ 39264 ........................................................................ 39265 ........................................................................ 39266 ........................................................................ 39267 ........................................................................ 39268 ........................................................................ 39269 ........................................................................ 39270 ........................................................................ 39271 ........................................................................ 39272 ........................................................................ 39273 ........................................................................ 39274 ........................................................................ 39275 ........................................................................ 39276 ........................................................................ 39277 ........................................................................ 39278 ........................................................................ 39279 ........................................................................ 39280 ........................................................................ 39281 ........................................................................ 39282 ........................................................................ 39283 ........................................................................ 39284 ........................................................................ 39285 ........................................................................ 39286 ........................................................................ 39287 ........................................................................ 39288 ........................................................................ 39289 ........................................................................ 39290 ........................................................................ 39291 ........................................................................ 39292 ........................................................................ 39293 ........................................................................ 39294 ........................................................................ 39295 ........................................................................ 39296 ........................................................................ 39297 ........................................................................ 39298 ........................................................................ 39299 ........................................................................ 39300 ........................................................................ 39301 ........................................................................ 39302 ........................................................................ 39303 ........................................................................ 39304 ........................................................................ 39305 ........................................................................ 39306 ........................................................................ 39307 ........................................................................ 39308 ........................................................................ 39309 ........................................................................ 39310 ........................................................................ 39311 ........................................................................ 39312 ........................................................................ 39313 ........................................................................ 39314 ........................................................................ 39315 ........................................................................ 39316 ........................................................................ 39317 ........................................................................ 39318 ........................................................................ 39319 ........................................................................ 39320 ........................................................................ 39321 ........................................................................ 39322 ........................................................................ 39323 ........................................................................ 39324 ........................................................................ 39325 ........................................................................ 39326 ........................................................................ 39327 ........................................................................ 39328 ........................................................................ 39329 ........................................................................ 39330 ........................................................................ 39331 ........................................................................ 39332 ........................................................................ 39333 ........................................................................ 39334 ........................................................................ 39335 ........................................................................ 39336 ........................................................................ 39337 ........................................................................ 39338 ........................................................................ 39339 ........................................................................ 39340 ........................................................................ 39341 ........................................................................ 39342 ........................................................................ 39343 ........................................................................ 39344 ........................................................................ 39345 ........................................................................ 39346 ........................................................................ 39347 ........................................................................ 39348 ........................................................................ 39349 ........................................................................ 39350 ........................................................................ 39351 ........................................................................ 39352 ........................................................................ 39353 ........................................................................ 39354 ........................................................................ 39355 ........................................................................ 39356 ........................................................................ 39357 ........................................................................ 39358 ........................................................................ 39359 ........................................................................ 39360 ........................................................................ 39361 ........................................................................ 39362 ........................................................................ 39363 ........................................................................ 39364 ........................................................................ 39365 ........................................................................ 39366 ........................................................................ 39367 ........................................................................ 39368 ........................................................................ 39369 ........................................................................ 39370 ........................................................................ 39371 ........................................................................ 39372 ........................................................................ 39373 ........................................................................ 39374 ........................................................................ 39375 ........................................................................ 39376 ........................................................................ 39377 ........................................................................ 39378 ........................................................................ 39379 ........................................................................ 39380 ........................................................................ 39381 ........................................................................ 39382 ........................................................................ 39383 ........................................................................ 39384 ........................................................................ 39385 ........................................................................ 39386 ........................................................................ 39387 ........................................................................ 39388 ........................................................................ 39389 ........................................................................ 39390 ........................................................................ 39391 ........................................................................ 39392 ........................................................................ 39393 ........................................................................ 39394 ........................................................................ 39395 ........................................................................ 39396 ........................................................................ 39397 ........................................................................ 39398 ........................................................................ 39399 ........................................................................ 39400 ........................................................................ 39401 ........................................................................ 39402 ........................................................................ 39403 ........................................................................ 39404 ........................................................................ 39405 ........................................................................ 39406 ........................................................................ 39407 ........................................................................ 39408 ........................................................................ 39409 ........................................................................ 39410 ........................................................................ 39411 ........................................................................ 39412 ........................................................................ 39413 ........................................................................ 39414 ........................................................................ 39415 ........................................................................ 39416 ........................................................................ 39417 ........................................................................ 39418 ........................................................................ 39419 ........................................................................ 39420 ........................................................................ 39421 ........................................................................ 39422 ........................................................................ 39423 ........................................................................ 39424 ........................................................................ 39425 ........................................................................ 39426 ........................................................................ 39427 ........................................................................ 39428 ........................................................................ 39429 ........................................................................ 39430 ........................................................................ 39431 ........................................................................ 39432 ........................................................................ 39433 ........................................................................ 39434 ........................................................................ 39435 ........................................................................ 39436 ........................................................................ 39437 ........................................................................ 39438 ........................................................................ 39439 ........................................................................ 39440 ........................................................................ 39441 ........................................................................ 39442 ........................................................................ 39443 ........................................................................ 39444 ........................................................................ 39445 ........................................................................ 39446 ........................................................................ 39447 ........................................................................ 39448 ........................................................................ 39449 ........................................................................ 39450 ........................................................................ 39451 ........................................................................ 39452 ........................................................................ 39453 ........................................................................ 39454 ........................................................................ 39455 ........................................................................ 39456 ........................................................................ 39457 ........................................................................ 39458 ........................................................................ 39459 ........................................................................ 39460 ........................................................................ 39461 ........................................................................ 39462 ........................................................................ 39463 ........................................................................ 39464 ........................................................................ 39465 ........................................................................ 39466 ........................................................................ 39467 ........................................................................ 39468 ........................................................................ 39469 ........................................................................ 39470 ........................................................................ 39471 ........................................................................ 39472 ........................................................................ 39473 ........................................................................ 39474 ........................................................................ 39475 ........................................................................ 39476 ........................................................................ 39477 ........................................................................ 39478 ........................................................................ 39479 ........................................................................ 39480 ........................................................................ 39481 ........................................................................ 39482 ........................................................................ 39483 ........................................................................ 39484 ........................................................................ 39485 ........................................................................ 39486 ........................................................................ 39487 ........................................................................ 39488 ........................................................................ 39489 ........................................................................ 39490 ........................................................................ 39491 ........................................................................ 39492 ........................................................................ 39493 ........................................................................ 39494 ........................................................................ 39495 ........................................................................ 39496 ........................................................................ 39497 ........................................................................ 39498 ........................................................................ 39499 ........................................................................ 39500 ........................................................................ 39501 ........................................................................ 39502 ........................................................................ 39503 ........................................................................ 39504 ........................................................................ 39505 ........................................................................ 39506 ........................................................................ 39507 ........................................................................ 39508 ........................................................................ 39509 ........................................................................ 39510 ........................................................................ 39511 ........................................................................ 39512 ........................................................................ 39513 ........................................................................ 39514 ........................................................................ 39515 ........................................................................ 39516 ........................................................................ 39517 ........................................................................ 39518 ........................................................................ 39519 ........................................................................ 39520 ........................................................................ 39521 ........................................................................ 39522 ........................................................................ 39523 ........................................................................ 39524 ........................................................................ 39525 ........................................................................ 39526 ........................................................................ 39527 ........................................................................ 39528 ........................................................................ 39529 ........................................................................ 39530 ........................................................................ 39531 ........................................................................ 39532 ........................................................................ 39533 ........................................................................ 39534 ........................................................................ 39535 ........................................................................ 39536 ........................................................................ 39537 ........................................................................ 39538 ........................................................................ 39539 ........................................................................ 39540 ........................................................................ 39541 ........................................................................ 39542 ........................................................................ 39543 ........................................................................ 39544 ........................................................................ 39545 ........................................................................ 39546 ........................................................................ 39547 ........................................................................ 39548 ........................................................................ 39549 ........................................................................ 39550 ........................................................................ 39551 ........................................................................ 39552 ........................................................................ 39553 ........................................................................ 39554 ........................................................................ 39555 ........................................................................ 39556 ........................................................................ 39557 ........................................................................ 39558 ........................................................................ 39559 ........................................................................ 39560 ........................................................................ 39561 ........................................................................ 39562 ........................................................................ 39563 ........................................................................ 39564 ........................................................................ 39565 ........................................................................ 39566 ........................................................................ 39567 ........................................................................ 39568 ........................................................................ 39569 ........................................................................ 39570 ........................................................................ 39571 ........................................................................ 39572 ........................................................................ 39573 ........................................................................ 39574 ........................................................................ 39575 ........................................................................ 39576 ........................................................................ 39577 ........................................................................ 39578 ........................................................................ 39579 ........................................................................ 39580 ........................................................................ 39581 ........................................................................ 39582 ........................................................................ 39583 ........................................................................ 39584 ........................................................................ 39585 ........................................................................ 39586 ........................................................................ 39587 ........................................................................ 39588 ........................................................................ 39589 ........................................................................ 39590 ........................................................................ 39591 ........................................................................ 39592 ........................................................................ 39593 ........................................................................ 39594 ........................................................................ 39595 ........................................................................ 39596 ........................................................................ 39597 ........................................................................ 39598 ........................................................................ 39599 ........................................................................ 39600 ........................................................................ 39601 ........................................................................ 39602 ........................................................................ 39603 ........................................................................ 39604 ........................................................................ 39605 ........................................................................ 39606 ........................................................................ 39607 ........................................................................ 39608 ........................................................................ 39609 ........................................................................ 39610 ........................................................................ 39611 ........................................................................ 39612 ........................................................................ 39613 ........................................................................ 39614 ........................................................................ 39615 ........................................................................ 39616 ........................................................................ 39617 ........................................................................ 39618 ........................................................................ 39619 ........................................................................ 39620 ........................................................................ 39621 ........................................................................ 39622 ........................................................................ 39623 ........................................................................ 39624 ........................................................................ 39625 ........................................................................ 39626 ........................................................................ 39627 ........................................................................ 39628 ........................................................................ 39629 ........................................................................ 39630 ........................................................................ 39631 ........................................................................ 39632 ........................................................................ 39633 ........................................................................ 39634 ........................................................................ 39635 ........................................................................ 39636 ........................................................................ 39637 ........................................................................ 39638 ........................................................................ 39639 ........................................................................ 39640 ........................................................................ 39641 ........................................................................ 39642 ........................................................................ 39643 ........................................................................ 39644 ........................................................................ 39645 ........................................................................ 39646 ........................................................................ 39647 ........................................................................ 39648 ........................................................................ 39649 ........................................................................ 39650 ........................................................................ 39651 ........................................................................ 39652 ........................................................................ 39653 ........................................................................ 39654 ........................................................................ 39655 ........................................................................ 39656 ........................................................................ 39657 ........................................................................ 39658 ........................................................................ 39659 ........................................................................ 39660 ........................................................................ 39661 ........................................................................ 39662 ........................................................................ 39663 ........................................................................ 39664 ........................................................................ 39665 ........................................................................ 39666 ........................................................................ 39667 ........................................................................ 39668 ........................................................................ 39669 ........................................................................ 39670 ........................................................................ 39671 ........................................................................ 39672 ........................................................................ 39673 ........................................................................ 39674 ........................................................................ 39675 ........................................................................ 39676 ........................................................................ 39677 ........................................................................ 39678 ........................................................................ 39679 ........................................................................ 39680 ........................................................................ 39681 ........................................................................ 39682 ........................................................................ 39683 ........................................................................ 39684 ........................................................................ 39685 ........................................................................ 39686 ........................................................................ 39687 ........................................................................ 39688 ........................................................................ 39689 ........................................................................ 39690 ........................................................................ 39691 ........................................................................ 39692 ........................................................................ 39693 ........................................................................ 39694 ........................................................................ 39695 ........................................................................ 39696 ........................................................................ 39697 ........................................................................ 39698 ........................................................................ 39699 ........................................................................ 39700 ........................................................................ 39701 ........................................................................ 39702 ........................................................................ 39703 ........................................................................ 39704 ........................................................................ 39705 ........................................................................ 39706 ........................................................................ 39707 ........................................................................ 39708 ........................................................................ 39709 ........................................................................ 39710 ........................................................................ 39711 ........................................................................ 39712 ........................................................................ 39713 ........................................................................ 39714 ........................................................................ 39715 ........................................................................ 39716 ........................................................................ 39717 ........................................................................ 39718 ........................................................................ 39719 ........................................................................ 39720 ........................................................................ 39721 ........................................................................ 39722 ........................................................................ 39723 ........................................................................ 39724 ........................................................................ 39725 ........................................................................ 39726 ........................................................................ 39727 ........................................................................ 39728 ........................................................................ 39729 ........................................................................ 39730 ........................................................................ 39731 ........................................................................ 39732 ........................................................................ 39733 ........................................................................ 39734 ........................................................................ 39735 ........................................................................ 39736 ........................................................................ 39737 ........................................................................ 39738 ........................................................................ 39739 ........................................................................ 39740 ........................................................................ 39741 ........................................................................ 39742 ........................................................................ 39743 ........................................................................ 39744 ........................................................................ 39745 ........................................................................ 39746 ........................................................................ 39747 ........................................................................ 39748 ........................................................................ 39749 ........................................................................ 39750 ........................................................................ 39751 ........................................................................ 39752 ........................................................................ 39753 ........................................................................ 39754 ........................................................................ 39755 ........................................................................ 39756 ........................................................................ 39757 ........................................................................ 39758 ........................................................................ 39759 ........................................................................ 39760 ........................................................................ 39761 ........................................................................ 39762 ........................................................................ 39763 ........................................................................ 39764 ........................................................................ 39765 ........................................................................ 39766 ........................................................................ 39767 ........................................................................ 39768 ........................................................................ 39769 ........................................................................ 39770 ........................................................................ 39771 ........................................................................ 39772 ........................................................................ 39773 ........................................................................ 39774 ........................................................................ 39775 ........................................................................ 39776 ........................................................................ 39777 ........................................................................ 39778 ........................................................................ 39779 ........................................................................ 39780 ........................................................................ 39781 ........................................................................ 39782 ........................................................................ 39783 ........................................................................ 39784 ........................................................................ 39785 ........................................................................ 39786 ........................................................................ 39787 ........................................................................ 39788 ........................................................................ 39789 ........................................................................ 39790 ........................................................................ 39791 ........................................................................ 39792 ........................................................................ 39793 ........................................................................ 39794 ........................................................................ 39795 ........................................................................ 39796 ........................................................................ 39797 ........................................................................ 39798 ........................................................................ 39799 ........................................................................ 39800 ........................................................................ 39801 ........................................................................ 39802 ........................................................................ 39803 ........................................................................ 39804 ........................................................................ 39805 ........................................................................ 39806 ........................................................................ 39807 ........................................................................ 39808 ........................................................................ 39809 ........................................................................ 39810 ........................................................................ 39811 ........................................................................ 39812 ........................................................................ 39813 ........................................................................ 39814 ........................................................................ 39815 ........................................................................ 39816 ........................................................................ 39817 ........................................................................ 39818 ........................................................................ 39819 ........................................................................ 39820 ........................................................................ 39821 ........................................................................ 39822 ........................................................................ 39823 ........................................................................ 39824 ........................................................................ 39825 ........................................................................ 39826 ........................................................................ 39827 ........................................................................ 39828 ........................................................................ 39829 ........................................................................ 39830 ........................................................................ 39831 ........................................................................ 39832 ........................................................................ 39833 ........................................................................ 39834 ........................................................................ 39835 ........................................................................ 39836 ........................................................................ 39837 ........................................................................ 39838 ........................................................................ 39839 ........................................................................ 39840 ........................................................................ 39841 ........................................................................ 39842 ........................................................................ 39843 ........................................................................ 39844 ........................................................................ 39845 ........................................................................ 39846 ........................................................................ 39847 ........................................................................ 39848 ........................................................................ 39849 ........................................................................ 39850 ........................................................................ 39851 ........................................................................ 39852 ........................................................................ 39853 ........................................................................ 39854 ........................................................................ 39855 ........................................................................ 39856 ........................................................................ 39857 ........................................................................ 39858 ........................................................................ 39859 ........................................................................ 39860 ........................................................................ 39861 ........................................................................ 39862 ........................................................................ 39863 ........................................................................ 39864 ........................................................................ 39865 ........................................................................ 39866 ........................................................................ 39867 ........................................................................ 39868 ........................................................................ 39869 ........................................................................ 39870 ........................................................................ 39871 ........................................................................ 39872 ........................................................................ 39873 ........................................................................ 39874 ........................................................................ 39875 ........................................................................ 39876 ........................................................................ 39877 ........................................................................ 39878 ........................................................................ 39879 ........................................................................ 39880 ........................................................................ 39881 ........................................................................ 39882 ........................................................................ 39883 ........................................................................ 39884 ........................................................................ 39885 ........................................................................ 39886 ........................................................................ 39887 ........................................................................ 39888 ........................................................................ 39889 ........................................................................ 39890 ........................................................................ 39891 ........................................................................ 39892 ........................................................................ 39893 ........................................................................ 39894 ........................................................................ 39895 ........................................................................ 39896 ........................................................................ 39897 ........................................................................ 39898 ........................................................................ 39899 ........................................................................ 39900 ........................................................................ 39901 ........................................................................ 39902 ........................................................................ 39903 ........................................................................ 39904 ........................................................................ 39905 ........................................................................ 39906 ........................................................................ 39907 ........................................................................ 39908 ........................................................................ 39909 ........................................................................ 39910 ........................................................................ 39911 ........................................................................ 39912 ........................................................................ 39913 ........................................................................ 39914 ........................................................................ 39915 ........................................................................ 39916 ........................................................................ 39917 ........................................................................ 39918 ........................................................................ 39919 ........................................................................ 39920 ........................................................................ 39921 ........................................................................ 39922 ........................................................................ 39923 ........................................................................ 39924 ........................................................................ 39925 ........................................................................ 39926 ........................................................................ 39927 ........................................................................ 39928 ........................................................................ 39929 ........................................................................ 39930 ........................................................................ 39931 ........................................................................ 39932 ........................................................................ 39933 ........................................................................ 39934 ........................................................................ 39935 ........................................................................ 39936 ........................................................................ 39937 ........................................................................ 39938 ........................................................................ 39939 ........................................................................ 39940 ........................................................................ 39941 ........................................................................ 39942 ........................................................................ 39943 ........................................................................ 39944 ........................................................................ 39945 ........................................................................ 39946 ........................................................................ 39947 ........................................................................ 39948 ........................................................................ 39949 ........................................................................ 39950 ........................................................................ 39951 ........................................................................ 39952 ........................................................................ 39953 ........................................................................ 39954 ........................................................................ 39955 ........................................................................ 39956 ........................................................................ 39957 ........................................................................ 39958 ........................................................................ 39959 ........................................................................ 39960 ........................................................................ 39961 ........................................................................ 39962 ........................................................................ 39963 ........................................................................ 39964 ........................................................................ 39965 ........................................................................ 39966 ........................................................................ 39967 ........................................................................ 39968 ........................................................................ 39969 ........................................................................ 39970 ........................................................................ 39971 ........................................................................ 39972 ........................................................................ 39973 ........................................................................ 39974 ........................................................................ 39975 ........................................................................ 39976 ........................................................................ 39977 ........................................................................ 39978 ........................................................................ 39979 ........................................................................ 39980 ........................................................................ 39981 ........................................................................ 39982 ........................................................................ 39983 ........................................................................ 39984 ........................................................................ 39985 ........................................................................ 39986 ........................................................................ 39987 ........................................................................ 39988 ........................................................................ 39989 ........................................................................ 39990 ........................................................................ 39991 ........................................................................ 39992 ........................................................................ 39993 ........................................................................ 39994 ........................................................................ 39995 ........................................................................ 39996 ........................................................................ 39997 ........................................................................ 39998 ........................................................................ 39999 ........................................................................ 40000 ........................................................................ 40001 ........................................................................ 40002 ........................................................................ 40003 ........................................................................ 40004 ........................................................................ 40005 ........................................................................ 40006 ........................................................................ 40007 ........................................................................ 40008 ........................................................................ 40009 ........................................................................ 40010 ........................................................................ 40011 ........................................................................ 40012 ........................................................................ 40013 ........................................................................ 40014 ........................................................................ 40015 ........................................................................ 40016 ........................................................................ 40017 ........................................................................ 40018 ........................................................................ 40019 ........................................................................ 40020 ........................................................................ 40021 ........................................................................ 40022 ........................................................................ 40023 ........................................................................ 40024 ........................................................................ 40025 ........................................................................ 40026 ........................................................................ 40027 ........................................................................ 40028 ........................................................................ 40029 ........................................................................ 40030 ........................................................................ 40031 ........................................................................ 40032 ........................................................................ 40033 ........................................................................ 40034 ........................................................................ 40035 ........................................................................ 40036 ........................................................................ 40037 ........................................................................ 40038 ........................................................................ 40039 ........................................................................ 40040 ........................................................................ 40041 ........................................................................ 40042 ........................................................................ 40043 ........................................................................ 40044 ........................................................................ 40045 ........................................................................ 40046 ........................................................................ 40047 ........................................................................ 40048 ........................................................................ 40049 ........................................................................ 40050 ........................................................................ 40051 ........................................................................ 40052 ........................................................................ 40053 ........................................................................ 40054 ........................................................................ 40055 ........................................................................ 40056 ........................................................................ 40057 ........................................................................ 40058 ........................................................................ 40059 ........................................................................ 40060 ........................................................................ 40061 ........................................................................ 40062 ........................................................................ 40063 ........................................................................ 40064 ........................................................................ 40065 ........................................................................ 40066 ........................................................................ 40067 ........................................................................ 40068 ........................................................................ 40069 ........................................................................ 40070 ........................................................................ 40071 ........................................................................ 40072 ........................................................................ 40073 ........................................................................ 40074 ........................................................................ 40075 ........................................................................ 40076 ........................................................................ 40077 ........................................................................ 40078 ........................................................................ 40079 ........................................................................ 40080 ........................................................................ 40081 ........................................................................ 40082 ........................................................................ 40083 ........................................................................ 40084 ........................................................................ 40085 ........................................................................ 40086 ........................................................................ 40087 ........................................................................ 40088 ........................................................................ 40089 ........................................................................ 40090 ........................................................................ 40091 ........................................................................ 40092 ........................................................................ 40093 ........................................................................ 40094 ........................................................................ 40095 ........................................................................ 40096 ........................................................................ 40097 ........................................................................ 40098 ........................................................................ 40099 ........................................................................ 40100 ........................................................................ 40101 ........................................................................ 40102 ........................................................................ 40103 ........................................................................ 40104 ........................................................................ 40105 ........................................................................ 40106 ........................................................................ 40107 ........................................................................ 40108 ........................................................................ 40109 ........................................................................ 40110 ........................................................................ 40111 ........................................................................ 40112 ........................................................................ 40113 ........................................................................ 40114 ........................................................................ 40115 ........................................................................ 40116 ........................................................................ 40117 ........................................................................ 40118 ........................................................................ 40119 ........................................................................ 40120 ........................................................................ 40121 ........................................................................ 40122 ........................................................................ 40123 ........................................................................ 40124 ........................................................................ 40125 ........................................................................ 40126 ........................................................................ 40127 ........................................................................ 40128 ........................................................................ 40129 ........................................................................ 40130 ........................................................................ 40131 ........................................................................ 40132 ........................................................................ 40133 ........................................................................ 40134 ........................................................................ 40135 ........................................................................ 40136 ........................................................................ 40137 ........................................................................ 40138 ........................................................................ 40139 ........................................................................ 40140 ........................................................................ 40141 ........................................................................ 40142 ........................................................................ 40143 ........................................................................ 40144 ........................................................................ 40145 ........................................................................ 40146 ........................................................................ 40147 ........................................................................ 40148 ........................................................................ 40149 ........................................................................ 40150 ........................................................................ 40151 ........................................................................ 40152 ........................................................................ 40153 ........................................................................ 40154 ........................................................................ 40155 ........................................................................ 40156 ........................................................................ 40157 ........................................................................ 40158 ........................................................................ 40159 ........................................................................ 40160 ........................................................................ 40161 ........................................................................ 40162 ........................................................................ 40163 ........................................................................ 40164 ........................................................................ 40165 ........................................................................ 40166 ........................................................................ 40167 ........................................................................ 40168 ........................................................................ 40169 ........................................................................ 40170 ........................................................................ 40171 ........................................................................ 40172 ........................................................................ 40173 ........................................................................ 40174 ........................................................................ 40175 ........................................................................ 40176 ........................................................................ 40177 ........................................................................ 40178 ........................................................................ 40179 ........................................................................ 40180 ........................................................................ 40181 ........................................................................ 40182 ........................................................................ 40183 ........................................................................ 40184 ........................................................................ 40185 ........................................................................ 40186 ........................................................................ 40187 ........................................................................ 40188 ........................................................................ 40189 ........................................................................ 40190 ........................................................................ 40191 ........................................................................ 40192 ........................................................................ 40193 ........................................................................ 40194 ........................................................................ 40195 ........................................................................ 40196 ........................................................................ 40197 ........................................................................ 40198 ........................................................................ 40199 ........................................................................ 40200 ........................................................................ 40201 ........................................................................ 40202 ........................................................................ 40203 ........................................................................ 40204 ........................................................................ 40205 ........................................................................ 40206 ........................................................................ 40207 ........................................................................ 40208 ........................................................................ 40209 ........................................................................ 40210 ........................................................................ 40211 ........................................................................ 40212 ........................................................................ 40213 ........................................................................ 40214 ........................................................................ 40215 ........................................................................ 40216 ........................................................................ 40217 ........................................................................ 40218 ........................................................................ 40219 ........................................................................ 40220 ........................................................................ 40221 ........................................................................ 40222 ........................................................................ 40223 ........................................................................ 40224 ........................................................................ 40225 ........................................................................ 40226 ........................................................................ 40227 ........................................................................ 40228 ........................................................................ 40229 ........................................................................ 40230 ........................................................................ 40231 ........................................................................ 40232 ........................................................................ 40233 ........................................................................ 40234 ........................................................................ 40235 ........................................................................ 40236 ........................................................................ 40237 ........................................................................ 40238 ........................................................................ 40239 ........................................................................ 40240 ........................................................................ 40241 ........................................................................ 40242 ........................................................................ 40243 ........................................................................ 40244 ........................................................................ 40245 ........................................................................ 40246 ........................................................................ 40247 ........................................................................ 40248 ........................................................................ 40249 ........................................................................ 40250 ........................................................................ 40251 ........................................................................ 40252 ........................................................................ 40253 ........................................................................ 40254 ........................................................................ 40255 ........................................................................ 40256 ........................................................................ 40257 ........................................................................ 40258 ........................................................................ 40259 ........................................................................ 40260 ........................................................................ 40261 ........................................................................ 40262 ........................................................................ 40263 ........................................................................ 40264 ........................................................................ 40265 ........................................................................ 40266 ........................................................................ 40267 ........................................................................ 40268 ........................................................................ 40269 ........................................................................ 40270 ........................................................................ 40271 ........................................................................ 40272 ........................................................................ 40273 ........................................................................ 40274 ........................................................................ 40275 ........................................................................ 40276 ........................................................................ 40277 ........................................................................ 40278 ........................................................................ 40279 ........................................................................ 40280 ........................................................................ 40281 ........................................................................ 40282 ........................................................................ 40283 ........................................................................ 40284 ........................................................................ 40285 ........................................................................ 40286 ........................................................................ 40287 ........................................................................ 40288 ........................................................................ 40289 ........................................................................ 40290 ........................................................................ 40291 ........................................................................ 40292 ........................................................................ 40293 ........................................................................ 40294 ........................................................................ 40295 ........................................................................ 40296 ........................................................................ 40297 ........................................................................ 40298 ........................................................................ 40299 ........................................................................ 40300 ........................................................................ 40301 ........................................................................ 40302 ........................................................................ 40303 ........................................................................ 40304 ........................................................................ 40305 ........................................................................ 40306 ........................................................................ 40307 ........................................................................ 40308 ........................................................................ 40309 ........................................................................ 40310 ........................................................................ 40311 ........................................................................ 40312 ........................................................................ 40313 ........................................................................ 40314 ........................................................................ 40315 ........................................................................ 40316 ........................................................................ 40317 ........................................................................ 40318 ........................................................................ 40319 ........................................................................ 40320 ........................................................................ 40321 ........................................................................ 40322 ........................................................................ 40323 ........................................................................ 40324 ........................................................................ 40325 ........................................................................ 40326 ........................................................................ 40327 ........................................................................ 40328 ........................................................................ 40329 ........................................................................ 40330 ........................................................................ 40331 ........................................................................ 40332 ........................................................................ 40333 ........................................................................ 40334 ........................................................................ 40335 ........................................................................ 40336 ........................................................................ 40337 ........................................................................ 40338 ........................................................................ 40339 ........................................................................ 40340 ........................................................................ 40341 ........................................................................ 40342 ........................................................................ 40343 ........................................................................ 40344 ........................................................................ 40345 ........................................................................ 40346 ........................................................................ 40347 ........................................................................ 40348 ........................................................................ 40349 ........................................................................ 40350 ........................................................................ 40351 ........................................................................ 40352 ........................................................................ 40353 ........................................................................ 40354 ........................................................................ 40355 ........................................................................ 40356 ........................................................................ 40357 ........................................................................ 40358 ........................................................................ 40359 ........................................................................ 40360 ........................................................................ 40361 ........................................................................ 40362 ........................................................................ 40363 ........................................................................ 40364 ........................................................................ 40365 ........................................................................ 40366 ........................................................................ 40367 ........................................................................ 40368 ........................................................................ 40369 ........................................................................ 40370 ........................................................................ 40371 ........................................................................ 40372 ........................................................................ 40373 ........................................................................ 40374 ........................................................................ 40375 ........................................................................ 40376 ........................................................................ 40377 ........................................................................ 40378 ........................................................................ 40379 ........................................................................ 40380 ........................................................................ 40381 ........................................................................ 40382 ........................................................................ 40383 ........................................................................ 40384 ........................................................................ 40385 ........................................................................ 40386 ........................................................................ 40387 ........................................................................ 40388 ........................................................................ 40389 ........................................................................ 40390 ........................................................................ 40391 ........................................................................ 40392 ........................................................................ 40393 ........................................................................ 40394 ........................................................................ 40395 ........................................................................ 40396 ........................................................................ 40397 ........................................................................ 40398 ........................................................................ 40399 ........................................................................ 40400 ........................................................................ 40401 ........................................................................ 40402 ........................................................................ 40403 ........................................................................ 40404 ........................................................................ 40405 ........................................................................ 40406 ........................................................................ 40407 ........................................................................ 40408 ........................................................................ 40409 ........................................................................ 40410 ........................................................................ 40411 ........................................................................ 40412 ........................................................................ 40413 ........................................................................ 40414 ........................................................................ 40415 ........................................................................ 40416 ........................................................................ 40417 ........................................................................ 40418 ........................................................................ 40419 ........................................................................ 40420 ........................................................................ 40421 ........................................................................ 40422 ........................................................................ 40423 ........................................................................ 40424 ........................................................................ 40425 ........................................................................ 40426 ........................................................................ 40427 ........................................................................ 40428 ........................................................................ 40429 ........................................................................ 40430 ........................................................................ 40431 ........................................................................ 40432 ........................................................................ 40433 ........................................................................ 40434 ........................................................................ 40435 ........................................................................ 40436 ........................................................................ 40437 ........................................................................ 40438 ........................................................................ 40439 ........................................................................ 40440 ........................................................................ 40441 ........................................................................ 40442 ........................................................................ 40443 ........................................................................ 40444 ........................................................................ 40445 ........................................................................ 40446 ........................................................................ 40447 ........................................................................ 40448 ........................................................................ 40449 ........................................................................ 40450 ........................................................................ 40451 ........................................................................ 40452 ........................................................................ 40453 ........................................................................ 40454 ........................................................................ 40455 ........................................................................ 40456 ........................................................................ 40457 ........................................................................ 40458 ........................................................................ 40459 ........................................................................ 40460 ........................................................................ 40461 ........................................................................ 40462 ........................................................................ 40463 ........................................................................ 40464 ........................................................................ 40465 ........................................................................ 40466 ........................................................................ 40467 ........................................................................ 40468 ........................................................................ 40469 ........................................................................ 40470 ........................................................................ 40471 ........................................................................ 40472 ........................................................................ 40473 ........................................................................ 40474 ........................................................................ 40475 ........................................................................ 40476 ........................................................................ 40477 ........................................................................ 40478 ........................................................................ 40479 ........................................................................ 40480 ........................................................................ 40481 ........................................................................ 40482 ........................................................................ 40483 ........................................................................ 40484 ........................................................................ 40485 ........................................................................ 40486 ........................................................................ 40487 ........................................................................ 40488 ........................................................................ 40489 ........................................................................ 40490 ........................................................................ 40491 ........................................................................ 40492 ........................................................................ 40493 ........................................................................ 40494 ........................................................................ 40495 ........................................................................ 40496 ........................................................................ 40497 ........................................................................ 40498 ........................................................................ 40499 ........................................................................ 40500 ........................................................................ 40501 ........................................................................ 40502 ........................................................................ 40503 ........................................................................ 40504 ........................................................................ 40505 ........................................................................ 40506 ........................................................................ 40507 ........................................................................ 40508 ........................................................................ 40509 ........................................................................ 40510 ........................................................................ 40511 ........................................................................ 40512 ........................................................................ 40513 ........................................................................ 40514 ........................................................................ 40515 ........................................................................ 40516 ........................................................................ 40517 ........................................................................ 40518 ........................................................................ 40519 ........................................................................ 40520 ........................................................................ 40521 ........................................................................ 40522 ........................................................................ 40523 ........................................................................ 40524 ........................................................................ 40525 ........................................................................ 40526 ........................................................................ 40527 ........................................................................ 40528 ........................................................................ 40529 ........................................................................ 40530 ........................................................................ 40531 ........................................................................ 40532 ........................................................................ 40533 ........................................................................ 40534 ........................................................................ 40535 ........................................................................ 40536 ........................................................................ 40537 ........................................................................ 40538 ........................................................................ 40539 ........................................................................ 40540 ........................................................................ 40541 ........................................................................ 40542 ........................................................................ 40543 ........................................................................ 40544 ........................................................................ 40545 ........................................................................ 40546 ........................................................................ 40547 ........................................................................ 40548 ........................................................................ 40549 ........................................................................ 40550 ........................................................................ 40551 ........................................................................ 40552 ........................................................................ 40553 ........................................................................ 40554 ........................................................................ 40555 ........................................................................ 40556 ........................................................................ 40557 ........................................................................ 40558 ........................................................................ 40559 ........................................................................ 40560 ........................................................................ 40561 ........................................................................ 40562 ........................................................................ 40563 ........................................................................ 40564 ........................................................................ 40565 ........................................................................ 40566 ........................................................................ 40567 ........................................................................ 40568 ........................................................................ 40569 ........................................................................ 40570 ........................................................................ 40571 ........................................................................ 40572 ........................................................................ 40573 ........................................................................ 40574 ........................................................................ 40575 ........................................................................ 40576 ........................................................................ 40577 ........................................................................ 40578 ........................................................................ 40579 ........................................................................ 40580 ........................................................................ 40581 ........................................................................ 40582 ........................................................................ 40583 ........................................................................ 40584 ........................................................................ 40585 ........................................................................ 40586 ........................................................................ 40587 ........................................................................ 40588 ........................................................................ 40589 ........................................................................ 40590 ........................................................................ 40591 ........................................................................ 40592 ........................................................................ 40593 ........................................................................ 40594 ........................................................................ 40595 ........................................................................ 40596 ........................................................................ 40597 ........................................................................ 40598 ........................................................................ 40599 ........................................................................ 40600 ........................................................................ 40601 ........................................................................ 40602 ........................................................................ 40603 ........................................................................ 40604 ........................................................................ 40605 ........................................................................ 40606 ........................................................................ 40607 ........................................................................ 40608 ........................................................................ 40609 ........................................................................ 40610 ........................................................................ 40611 ........................................................................ 40612 ........................................................................ 40613 ........................................................................ 40614 ........................................................................ 40615 ........................................................................ 40616 ........................................................................ 40617 ........................................................................ 40618 ........................................................................ 40619 ........................................................................ 40620 ........................................................................ 40621 ........................................................................ 40622 ........................................................................ 40623 ........................................................................ 40624 ........................................................................ 40625 ........................................................................ 40626 ........................................................................ 40627 ........................................................................ 40628 ........................................................................ 40629 ........................................................................ 40630 ........................................................................ 40631 ........................................................................ 40632 ........................................................................ 40633 ........................................................................ 40634 ........................................................................ 40635 ........................................................................ 40636 ........................................................................ 40637 ........................................................................ 40638 ........................................................................ 40639 ........................................................................ 40640 ........................................................................ 40641 ........................................................................ 40642 ........................................................................ 40643 ........................................................................ 40644 ........................................................................ 40645 ........................................................................ 40646 ........................................................................ 40647 ........................................................................ 40648 ........................................................................ 40649 ........................................................................ 40650 ........................................................................ 40651 ........................................................................ 40652 ........................................................................ 40653 ........................................................................ 40654 ........................................................................ 40655 ........................................................................ 40656 ........................................................................ 40657 ........................................................................ 40658 ........................................................................ 40659 ........................................................................ 40660 ........................................................................ 40661 ........................................................................ 40662 ........................................................................ 40663 ........................................................................ 40664 ........................................................................ 40665 ........................................................................ 40666 ........................................................................ 40667 ........................................................................ 40668 ........................................................................ 40669 ........................................................................ 40670 ........................................................................ 40671 ........................................................................ 40672 ........................................................................ 40673 ........................................................................ 40674 ........................................................................ 40675 ........................................................................ 40676 ........................................................................ 40677 ........................................................................ 40678 ........................................................................ 40679 ........................................................................ 40680 ........................................................................ 40681 ........................................................................ 40682 ........................................................................ 40683 ........................................................................ 40684 ........................................................................ 40685 ........................................................................ 40686 ........................................................................ 40687 ........................................................................ 40688 ........................................................................ 40689 ........................................................................ 40690 ........................................................................ 40691 ........................................................................ 40692 ........................................................................ 40693 ........................................................................ 40694 ........................................................................ 40695 ........................................................................ 40696 ........................................................................ 40697 ........................................................................ 40698 ........................................................................ 40699 ........................................................................ 40700 ........................................................................ 40701 ........................................................................ 40702 ........................................................................ 40703 ........................................................................ 40704 ........................................................................ 40705 ........................................................................ 40706 ........................................................................ 40707 ........................................................................ 40708 ........................................................................ 40709 ........................................................................ 40710 ........................................................................ 40711 ........................................................................ 40712 ........................................................................ 40713 ........................................................................ 40714 ........................................................................ 40715 ........................................................................ 40716 ........................................................................ 40717 ........................................................................ 40718 ........................................................................ 40719 ........................................................................ 40720 ........................................................................ 40721 ........................................................................ 40722 ........................................................................ 40723 ........................................................................ 40724 ........................................................................ 40725 ........................................................................ 40726 ........................................................................ 40727 ........................................................................ 40728 ........................................................................ 40729 ........................................................................ 40730 ........................................................................ 40731 ........................................................................ 40732 ........................................................................ 40733 ........................................................................ 40734 ........................................................................ 40735 ........................................................................ 40736 ........................................................................ 40737 ........................................................................ 40738 ........................................................................ 40739 ........................................................................ 40740 ........................................................................ 40741 ........................................................................ 40742 ........................................................................ 40743 ........................................................................ 40744 ........................................................................ 40745 ........................................................................ 40746 ........................................................................ 40747 ........................................................................ 40748 ........................................................................ 40749 ........................................................................ 40750 ........................................................................ 40751 ........................................................................ 40752 ........................................................................ 40753 ........................................................................ 40754 ........................................................................ 40755 ........................................................................ 40756 ........................................................................ 40757 ........................................................................ 40758 ........................................................................ 40759 ........................................................................ 40760 ........................................................................ 40761 ........................................................................ 40762 ........................................................................ 40763 ........................................................................ 40764 ........................................................................ 40765 ........................................................................ 40766 ........................................................................ 40767 ........................................................................ 40768 ........................................................................ 40769 ........................................................................ 40770 ........................................................................ 40771 ........................................................................ 40772 ........................................................................ 40773 ........................................................................ 40774 ........................................................................ 40775 ........................................................................ 40776 ........................................................................ 40777 ........................................................................ 40778 ........................................................................ 40779 ........................................................................ 40780 ........................................................................ 40781 ........................................................................ 40782 ........................................................................ 40783 ........................................................................ 40784 ........................................................................ 40785 ........................................................................ 40786 ........................................................................ 40787 ........................................................................ 40788 ........................................................................ 40789 ........................................................................ 40790 ........................................................................ 40791 ........................................................................ 40792 ........................................................................ 40793 ........................................................................ 40794 ........................................................................ 40795 ........................................................................ 40796 ........................................................................ 40797 ........................................................................ 40798 ........................................................................ 40799 ........................................................................ 40800 ........................................................................ 40801 ........................................................................ 40802 ........................................................................ 40803 ........................................................................ 40804 ........................................................................ 40805 ........................................................................ 40806 ........................................................................ 40807 ........................................................................ 40808 ........................................................................ 40809 ........................................................................ 40810 ........................................................................ 40811 ........................................................................ 40812 ........................................................................ 40813 ........................................................................ 40814 ........................................................................ 40815 ........................................................................ 40816 ........................................................................ 40817 ........................................................................ 40818 ........................................................................ 40819 ........................................................................ 40820 ........................................................................ 40821 ........................................................................ 40822 ........................................................................ 40823 ........................................................................ 40824 ........................................................................ 40825 ........................................................................ 40826 ........................................................................ 40827 ........................................................................ 40828 ........................................................................ 40829 ........................................................................ 40830 ........................................................................ 40831 ........................................................................ 40832 ........................................................................ 40833 ........................................................................ 40834 ........................................................................ 40835 ........................................................................ 40836 ........................................................................ 40837 ........................................................................ 40838 ........................................................................ 40839 ........................................................................ 40840 ........................................................................ 40841 ........................................................................ 40842 ........................................................................ 40843 ........................................................................ 40844 ........................................................................ 40845 ........................................................................ 40846 ........................................................................ 40847 ........................................................................ 40848 ........................................................................ 40849 ........................................................................ 40850 ........................................................................ 40851 ........................................................................ 40852 ........................................................................ 40853 ........................................................................ 40854 ........................................................................ 40855 ........................................................................ 40856 ........................................................................ 40857 ........................................................................ 40858 ........................................................................ 40859 ........................................................................ 40860 ........................................................................ 40861 ........................................................................ 40862 ........................................................................ 40863 ........................................................................ 40864 ........................................................................ 40865 ........................................................................ 40866 ........................................................................ 40867 ........................................................................ 40868 ........................................................................ 40869 ........................................................................ 40870 ........................................................................ 40871 ........................................................................ 40872 ........................................................................ 40873 ........................................................................ 40874 ........................................................................ 40875 ........................................................................ 40876 ........................................................................ 40877 ........................................................................ 40878 ........................................................................ 40879 ........................................................................ 40880 ........................................................................ 40881 ........................................................................ 40882 ........................................................................ 40883 ........................................................................ 40884 ........................................................................ 40885 ........................................................................ 40886 ........................................................................ 40887 ........................................................................ 40888 ........................................................................ 40889 ........................................................................ 40890 ........................................................................ 40891 ........................................................................ 40892 ........................................................................ 40893 ........................................................................ 40894 ........................................................................ 40895 ........................................................................ 40896 ........................................................................ 40897 ........................................................................ 40898 ........................................................................ 40899 ........................................................................ 40900 ........................................................................ 40901 ........................................................................ 40902 ........................................................................ 40903 ........................................................................ 40904 ........................................................................ 40905 ........................................................................ 40906 ........................................................................ 40907 ........................................................................ 40908 ........................................................................ 40909 ........................................................................ 40910 ........................................................................ 40911 ........................................................................ 40912 ........................................................................ 40913 ........................................................................ 40914 ........................................................................ 40915 ........................................................................ 40916 ........................................................................ 40917 ........................................................................ 40918 ........................................................................ 40919 ........................................................................ 40920 ........................................................................ 40921 ........................................................................ 40922 ........................................................................ 40923 ........................................................................ 40924 ........................................................................ 40925 ........................................................................ 40926 ........................................................................ 40927 ........................................................................ 40928 ........................................................................ 40929 ........................................................................ 40930 ........................................................................ 40931 ........................................................................ 40932 ........................................................................ 40933 ........................................................................ 40934 ........................................................................ 40935 ........................................................................ 40936 ........................................................................ 40937 ........................................................................ 40938 ........................................................................ 40939 ........................................................................ 40940 ........................................................................ 40941 ........................................................................ 40942 ........................................................................ 40943 ........................................................................ 40944 ........................................................................ 40945 ........................................................................ 40946 ........................................................................ 40947 ........................................................................ 40948 ........................................................................ 40949 ........................................................................ 40950 ........................................................................ 40951 ........................................................................ 40952 ........................................................................ 40953 ........................................................................ 40954 ........................................................................ 40955 ........................................................................ 40956 ........................................................................ 40957 ........................................................................ 40958 ........................................................................ 40959 ........................................................................ 40960 ........................................................................ 40961 ........................................................................ 40962 ........................................................................ 40963 ........................................................................ 40964 ........................................................................ 40965 ........................................................................ 40966 ........................................................................ 40967 ........................................................................ 40968 ........................................................................ 40969 ........................................................................ 40970 ........................................................................ 40971 ........................................................................ 40972 ........................................................................ 40973 ........................................................................ 40974 ........................................................................ 40975 ........................................................................ 40976 ........................................................................ 40977 ........................................................................ 40978 ........................................................................ 40979 ........................................................................ 40980 ........................................................................ 40981 ........................................................................ 40982 ........................................................................ 40983 ........................................................................ 40984 ........................................................................ 40985 ........................................................................ 40986 ........................................................................ 40987 ........................................................................ 40988 ........................................................................ 40989 ........................................................................ 40990 ........................................................................ 40991 ........................................................................ 40992 ........................................................................ 40993 ........................................................................ 40994 ........................................................................ 40995 ........................................................................ 40996 ........................................................................ 40997 ........................................................................ 40998 ........................................................................ 40999 ........................................................................ 41000 ........................................................................ 41001 ........................................................................ 41002 ........................................................................ 41003 ........................................................................ 41004 ........................................................................ 41005 ........................................................................ 41006 ........................................................................ 41007 ........................................................................ 41008 ........................................................................ 41009 ........................................................................ 41010 ........................................................................ 41011 ........................................................................ 41012 ........................................................................ 41013 ........................................................................ 41014 ........................................................................ 41015 ........................................................................ 41016 ........................................................................ 41017 ........................................................................ 41018 ........................................................................ 41019 ........................................................................ 41020 ........................................................................ 41021 ........................................................................ 41022 ........................................................................ 41023 ........................................................................ 41024 ........................................................................ 41025 ........................................................................ 41026 ........................................................................ 41027 ........................................................................ 41028 ........................................................................ 41029 ........................................................................ 41030 ........................................................................ 41031 ........................................................................ 41032 ........................................................................ 41033 ........................................................................ 41034 ........................................................................ 41035 ........................................................................ 41036 ........................................................................ 41037 ........................................................................ 41038 ........................................................................ 41039 ........................................................................ 41040 ........................................................................ 41041 ........................................................................ 41042 ........................................................................ 41043 ........................................................................ 41044 ........................................................................ 41045 ........................................................................ 41046 ........................................................................ 41047 ........................................................................ 41048 ........................................................................ 41049 ........................................................................ 41050 ........................................................................ 41051 ........................................................................ 41052 ........................................................................ 41053 ........................................................................ 41054 ........................................................................ 41055 ........................................................................ 41056 ........................................................................ 41057 ........................................................................ 41058 ........................................................................ 41059 ........................................................................ 41060 ........................................................................ 41061 ........................................................................ 41062 ........................................................................ 41063 ........................................................................ 41064 ........................................................................ 41065 ........................................................................ 41066 ........................................................................ 41067 ........................................................................ 41068 ........................................................................ 41069 ........................................................................ 41070 ........................................................................ 41071 ........................................................................ 41072 ........................................................................ 41073 ........................................................................ 41074 ........................................................................ 41075 ........................................................................ 41076 ........................................................................ 41077 ........................................................................ 41078 ........................................................................ 41079 ........................................................................ 41080 ........................................................................ 41081 ........................................................................ 41082 ........................................................................ 41083 ........................................................................ 41084 ........................................................................ 41085 ........................................................................ 41086 ........................................................................ 41087 ........................................................................ 41088 ........................................................................ 41089 ........................................................................ 41090 ........................................................................ 41091 ........................................................................ 41092 ........................................................................ 41093 ........................................................................ 41094 ........................................................................ 41095 ........................................................................ 41096 ........................................................................ 41097 ........................................................................ 41098 ........................................................................ 41099 ........................................................................ 41100 ........................................................................ 41101 ........................................................................ 41102 ........................................................................ 41103 ........................................................................ 41104 ........................................................................ 41105 ........................................................................ 41106 ........................................................................ 41107 ........................................................................ 41108 ........................................................................ 41109 ........................................................................ 41110 ........................................................................ 41111 ........................................................................ 41112 ........................................................................ 41113 ........................................................................ 41114 ........................................................................ 41115 ........................................................................ 41116 ........................................................................ 41117 ........................................................................ 41118 ........................................................................ 41119 ........................................................................ 41120 ........................................................................ 41121 ........................................................................ 41122 ........................................................................ 41123 ........................................................................ 41124 ........................................................................ 41125 ........................................................................ 41126 ........................................................................ 41127 ........................................................................ 41128 ........................................................................ 41129 ........................................................................ 41130 ........................................................................ 41131 ........................................................................ 41132 ........................................................................ 41133 ........................................................................ 41134 ........................................................................ 41135 ........................................................................ 41136 ........................................................................ 41137 ........................................................................ 41138 ........................................................................ 41139 ........................................................................ 41140 ........................................................................ 41141 ........................................................................ 41142 ........................................................................ 41143 ........................................................................ 41144 ........................................................................ 41145 ........................................................................ 41146 ........................................................................ 41147 ........................................................................ 41148 ........................................................................ 41149 ........................................................................ 41150 ........................................................................ 41151 ........................................................................ 41152 ........................................................................ 41153 ........................................................................ 41154 ........................................................................ 41155 ........................................................................ 41156 ........................................................................ 41157 ........................................................................ 41158 ........................................................................ 41159 ........................................................................ 41160 ........................................................................ 41161 ........................................................................ 41162 ........................................................................ 41163 ........................................................................ 41164 ........................................................................ 41165 ........................................................................ 41166 ........................................................................ 41167 ........................................................................ 41168 ........................................................................ 41169 ........................................................................ 41170 ........................................................................ 41171 ........................................................................ 41172 ........................................................................ 41173 ........................................................................ 41174 ........................................................................ 41175 ........................................................................ 41176 ........................................................................ 41177 ........................................................................ 41178 ........................................................................ 41179 ........................................................................ 41180 ........................................................................ 41181 ........................................................................ 41182 ........................................................................ 41183 ........................................................................ 41184 ........................................................................ 41185 ........................................................................ 41186 ........................................................................ 41187 ........................................................................ 41188 ........................................................................ 41189 ........................................................................ 41190 ........................................................................ 41191 ........................................................................ 41192 ........................................................................ 41193 ........................................................................ 41194 ........................................................................ 41195 ........................................................................ 41196 ........................................................................ 41197 ........................................................................ 41198 ........................................................................ 41199 ........................................................................ 41200 ........................................................................ 41201 ........................................................................ 41202 ........................................................................ 41203 ........................................................................ 41204 ........................................................................ 41205 ........................................................................ 41206 ........................................................................ 41207 ........................................................................ 41208 ........................................................................ 41209 ........................................................................ 41210 ........................................................................ 41211 ........................................................................ 41212 ........................................................................ 41213 ........................................................................ 41214 ........................................................................ 41215 ........................................................................ 41216 ........................................................................ 41217 ........................................................................ 41218 ........................................................................ 41219 ........................................................................ 41220 ........................................................................ 41221 ........................................................................ 41222 ........................................................................ 41223 ........................................................................ 41224 ........................................................................ 41225 ........................................................................ 41226 ........................................................................ 41227 ........................................................................ 41228 ........................................................................ 41229 ........................................................................ 41230 ........................................................................ 41231 ........................................................................ 41232 ........................................................................ 41233 ........................................................................ 41234 ........................................................................ 41235 ........................................................................ 41236 ........................................................................ 41237 ........................................................................ 41238 ........................................................................ 41239 ........................................................................ 41240 ........................................................................ 41241 ........................................................................ 41242 ........................................................................ 41243 ........................................................................ 41244 ........................................................................ 41245 ........................................................................ 41246 ........................................................................ 41247 ........................................................................ 41248 ........................................................................ 41249 ........................................................................ 41250 ........................................................................ 41251 ........................................................................ 41252 ........................................................................ 41253 ........................................................................ 41254 ........................................................................ 41255 ........................................................................ 41256 ........................................................................ 41257 ........................................................................ 41258 ........................................................................ 41259 ........................................................................ 41260 ........................................................................ 41261 ........................................................................ 41262 ........................................................................ 41263 ........................................................................ 41264 ........................................................................ 41265 ........................................................................ 41266 ........................................................................ 41267 ........................................................................ 41268 ........................................................................ 41269 ........................................................................ 41270 ........................................................................ 41271 ........................................................................ 41272 ........................................................................ 41273 ........................................................................ 41274 ........................................................................ 41275 ........................................................................ 41276 ........................................................................ 41277 ........................................................................ 41278 ........................................................................ 41279 ........................................................................ 41280 ........................................................................ 41281 ........................................................................ 41282 ........................................................................ 41283 ........................................................................ 41284 ........................................................................ 41285 ........................................................................ 41286 ........................................................................ 41287 ........................................................................ 41288 ........................................................................ 41289 ........................................................................ 41290 ........................................................................ 41291 ........................................................................ 41292 ........................................................................ 41293 ........................................................................ 41294 ........................................................................ 41295 ........................................................................ 41296 ........................................................................ 41297 ........................................................................ 41298 ........................................................................ 41299 ........................................................................ 41300 ........................................................................ 41301 ........................................................................ 41302 ........................................................................ 41303 ........................................................................ 41304 ........................................................................ 41305 ........................................................................ 41306 ........................................................................ 41307 ........................................................................ 41308 ........................................................................ 41309 ........................................................................ 41310 ........................................................................ 41311 ........................................................................ 41312 ........................................................................ 41313 ........................................................................ 41314 ........................................................................ 41315 ........................................................................ 41316 ........................................................................ 41317 ........................................................................ 41318 ........................................................................ 41319 ........................................................................ 41320 ........................................................................ 41321 ........................................................................ 41322 ........................................................................ 41323 ........................................................................ 41324 ........................................................................ 41325 ........................................................................ 41326 ........................................................................ 41327 ........................................................................ 41328 ........................................................................ 41329 ........................................................................ 41330 ........................................................................ 41331 ........................................................................ 41332 ........................................................................ 41333 ........................................................................ 41334 ........................................................................ 41335 ........................................................................ 41336 ........................................................................ 41337 ........................................................................ 41338 ........................................................................ 41339 ........................................................................ 41340 ........................................................................ 41341 ........................................................................ 41342 ........................................................................ 41343 ........................................................................ 41344 ........................................................................ 41345 ........................................................................ 41346 ........................................................................ 41347 ........................................................................ 41348 ........................................................................ 41349 ........................................................................ 41350 ........................................................................ 41351 ........................................................................ 41352 ........................................................................ 41353 ........................................................................ 41354 ........................................................................ 41355 ........................................................................ 41356 ........................................................................ 41357 ........................................................................ 41358 ........................................................................ 41359 ........................................................................ 41360 ........................................................................ 41361 ........................................................................ 41362 ........................................................................ 41363 ........................................................................ 41364 ........................................................................ 41365 ........................................................................ 41366 ........................................................................ 41367 ........................................................................ 41368 ........................................................................ 41369 ........................................................................ 41370 ........................................................................ 41371 ........................................................................ 41372 ........................................................................ 41373 ........................................................................ 41374 ........................................................................ 41375 ........................................................................ 41376 ........................................................................ 41377 ........................................................................ 41378 ........................................................................ 41379 ........................................................................ 41380 ........................................................................ 41381 ........................................................................ 41382 ........................................................................ 41383 ........................................................................ 41384 ........................................................................ 41385 ........................................................................ 41386 ........................................................................ 41387 ........................................................................ 41388 ........................................................................ 41389 ........................................................................ 41390 ........................................................................ 41391 ........................................................................ 41392 ........................................................................ 41393 ........................................................................ 41394 ........................................................................ 41395 ........................................................................ 41396 ........................................................................ 41397 ........................................................................ 41398 ........................................................................ 41399 ........................................................................ 41400 ........................................................................ 41401 ........................................................................ 41402 ........................................................................ 41403 ........................................................................ 41404 ........................................................................ 41405 ........................................................................ 41406 ........................................................................ 41407 ........................................................................ 41408 ........................................................................ 41409 ........................................................................ 41410 ........................................................................ 41411 ........................................................................ 41412 ........................................................................ 41413 ........................................................................ 41414 ........................................................................ 41415 ........................................................................ 41416 ........................................................................ 41417 ........................................................................ 41418 ........................................................................ 41419 ........................................................................ 41420 ........................................................................ 41421 ........................................................................ 41422 ........................................................................ 41423 ........................................................................ 41424 ........................................................................ 41425 ........................................................................ 41426 ........................................................................ 41427 ........................................................................ 41428 ........................................................................ 41429 ........................................................................ 41430 ........................................................................ 41431 ........................................................................ 41432 ........................................................................ 41433 ........................................................................ 41434 ........................................................................ 41435 ........................................................................ 41436 ........................................................................ 41437 ........................................................................ 41438 ........................................................................ 41439 ........................................................................ 41440 ........................................................................ 41441 ........................................................................ 41442 ........................................................................ 41443 ........................................................................ 41444 ........................................................................ 41445 ........................................................................ 41446 ........................................................................ 41447 ........................................................................ 41448 ........................................................................ 41449 ........................................................................ 41450 ........................................................................ 41451 ........................................................................ 41452 ........................................................................ 41453 ........................................................................ 41454 ........................................................................ 41455 ........................................................................ 41456 ........................................................................ 41457 ........................................................................ 41458 ........................................................................ 41459 ........................................................................ 41460 ........................................................................ 41461 ........................................................................ 41462 ........................................................................ 41463 ........................................................................ 41464 ........................................................................ 41465 ........................................................................ 41466 ........................................................................ 41467 ........................................................................ 41468 ........................................................................ 41469 ........................................................................ 41470 ........................................................................ 41471 ........................................................................ 41472 ........................................................................ 41473 ........................................................................ 41474 ........................................................................ 41475 ........................................................................ 41476 ........................................................................ 41477 ........................................................................ 41478 ........................................................................ 41479 ........................................................................ 41480 ........................................................................ 41481 ........................................................................ 41482 ........................................................................ 41483 ........................................................................ 41484 ........................................................................ 41485 ........................................................................ 41486 ........................................................................ 41487 ........................................................................ 41488 ........................................................................ 41489 ........................................................................ 41490 ........................................................................ 41491 ........................................................................ 41492 ........................................................................ 41493 ........................................................................ 41494 ........................................................................ 41495 ........................................................................ 41496 ........................................................................ 41497 ........................................................................ 41498 ........................................................................ 41499 ........................................................................ 41500 ........................................................................ 41501 ........................................................................ 41502 ........................................................................ 41503 ........................................................................ 41504 ........................................................................ 41505 ........................................................................ 41506 ........................................................................ 41507 ........................................................................ 41508 ........................................................................ 41509 ........................................................................ 41510 ........................................................................ 41511 ........................................................................ 41512 ........................................................................ 41513 ........................................................................ 41514 ........................................................................ 41515 ........................................................................ 41516 ........................................................................ 41517 ........................................................................ 41518 ........................................................................ 41519 ........................................................................ 41520 ........................................................................ 41521 ........................................................................ 41522 ........................................................................ 41523 ........................................................................ 41524 ........................................................................ 41525 ........................................................................ 41526 ........................................................................ 41527 ........................................................................ 41528 ........................................................................ 41529 ........................................................................ 41530 ........................................................................ 41531 ........................................................................ 41532 ........................................................................ 41533 ........................................................................ 41534 ........................................................................ 41535 ........................................................................ 41536 ........................................................................ 41537 ........................................................................ 41538 ........................................................................ 41539 ........................................................................ 41540 ........................................................................ 41541 ........................................................................ 41542 ........................................................................ 41543 ........................................................................ 41544 ........................................................................ 41545 ........................................................................ 41546 ........................................................................ 41547 ........................................................................ 41548 ........................................................................ 41549 ........................................................................ 41550 ........................................................................ 41551 ........................................................................ 41552 ........................................................................ 41553 ........................................................................ 41554 ........................................................................ 41555 ........................................................................ 41556 ........................................................................ 41557 ........................................................................ 41558 ........................................................................ 41559 ........................................................................ 41560 ........................................................................ 41561 ........................................................................ 41562 ........................................................................ 41563 ........................................................................ 41564 ........................................................................ 41565 ........................................................................ 41566 ........................................................................ 41567 ........................................................................ 41568 ........................................................................ 41569 ........................................................................ 41570 ........................................................................ 41571 ........................................................................ 41572 ........................................................................ 41573 ........................................................................ 41574 ........................................................................ 41575 ........................................................................ 41576 ........................................................................ 41577 ........................................................................ 41578 ........................................................................ 41579 ........................................................................ 41580 ........................................................................ 41581 ........................................................................ 41582 ........................................................................ 41583 ........................................................................ 41584 ........................................................................ 41585 ........................................................................ 41586 ........................................................................ 41587 ........................................................................ 41588 ........................................................................ 41589 ........................................................................ 41590 ........................................................................ 41591 ........................................................................ 41592 ........................................................................ 41593 ........................................................................ 41594 ........................................................................ 41595 ........................................................................ 41596 ........................................................................ 41597 ........................................................................ 41598 ........................................................................ 41599 ........................................................................ 41600 ........................................................................ 41601 ........................................................................ 41602 ........................................................................ 41603 ........................................................................ 41604 ........................................................................ 41605 ........................................................................ 41606 ........................................................................ 41607 ........................................................................ 41608 ........................................................................ 41609 ........................................................................ 41610 ........................................................................ 41611 ........................................................................ 41612 ........................................................................ 41613 ........................................................................ 41614 ........................................................................ 41615 ........................................................................ 41616 ........................................................................ 41617 ........................................................................ 41618 ........................................................................ 41619 ........................................................................ 41620 ........................................................................ 41621 ........................................................................ 41622 ........................................................................ 41623 ........................................................................ 41624 ........................................................................ 41625 ........................................................................ 41626 ........................................................................ 41627 ........................................................................ 41628 ........................................................................ 41629 ........................................................................ 41630 ........................................................................ 41631 ........................................................................ 41632 ........................................................................ 41633 ........................................................................ 41634 ........................................................................ 41635 ........................................................................ 41636 ........................................................................ 41637 ........................................................................ 41638 ........................................................................ 41639 ........................................................................ 41640 ........................................................................ 41641 ........................................................................ 41642 ........................................................................ 41643 ........................................................................ 41644 ........................................................................ 41645 ........................................................................ 41646 ........................................................................ 41647 ........................................................................ 41648 ........................................................................ 41649 ........................................................................ 41650 ........................................................................ 41651 ........................................................................ 41652 ........................................................................ 41653 ........................................................................ 41654 ........................................................................ 41655 ........................................................................ 41656 ........................................................................ 41657 ........................................................................ 41658 ........................................................................ 41659 ........................................................................ 41660 ........................................................................ 41661 ........................................................................ 41662 ........................................................................ 41663 ........................................................................ 41664 ........................................................................ 41665 ........................................................................ 41666 ........................................................................ 41667 ........................................................................ 41668 ........................................................................ 41669 ........................................................................ 41670 ........................................................................ 41671 ........................................................................ 41672 ........................................................................ 41673 ........................................................................ 41674 ........................................................................ 41675 ........................................................................ 41676 ........................................................................ 41677 ........................................................................ 41678 ........................................................................ 41679 ........................................................................ 41680 ........................................................................ 41681 ........................................................................ 41682 ........................................................................ 41683 ........................................................................ 41684 ........................................................................ 41685 ........................................................................ 41686 ........................................................................ 41687 ........................................................................ 41688 ........................................................................ 41689 ........................................................................ 41690 ........................................................................ 41691 ........................................................................ 41692 ........................................................................ 41693 ........................................................................ 41694 ........................................................................ 41695 ........................................................................ 41696 ........................................................................ 41697 ........................................................................ 41698 ........................................................................ 41699 ........................................................................ 41700 ........................................................................ 41701 ........................................................................ 41702 ........................................................................ 41703 ........................................................................ 41704 ........................................................................ 41705 ........................................................................ 41706 ........................................................................ 41707 ........................................................................ 41708 ........................................................................ 41709 ........................................................................ 41710 ........................................................................ 41711 ........................................................................ 41712 ........................................................................ 41713 ........................................................................ 41714 ........................................................................ 41715 ........................................................................ 41716 ........................................................................ 41717 ........................................................................ 41718 ........................................................................ 41719 ........................................................................ 41720 ........................................................................ 41721 ........................................................................ 41722 ........................................................................ 41723 ........................................................................ 41724 ........................................................................ 41725 ........................................................................ 41726 ........................................................................ 41727 ........................................................................ 41728 ........................................................................ 41729 ........................................................................ 41730 ........................................................................ 41731 ........................................................................ 41732 ........................................................................ 41733 ........................................................................ 41734 ........................................................................ 41735 ........................................................................ 41736 ........................................................................ 41737 ........................................................................ 41738 ........................................................................ 41739 ........................................................................ 41740 ........................................................................ 41741 ........................................................................ 41742 ........................................................................ 41743 ........................................................................ 41744 ........................................................................ 41745 ........................................................................ 41746 ........................................................................ 41747 ........................................................................ 41748 ........................................................................ 41749 ........................................................................ 41750 ........................................................................ 41751 ........................................................................ 41752 ........................................................................ 41753 ........................................................................ 41754 ........................................................................ 41755 ........................................................................ 41756 ........................................................................ 41757 ........................................................................ 41758 ........................................................................ 41759 ........................................................................ 41760 ........................................................................ 41761 ........................................................................ 41762 ........................................................................ 41763 ........................................................................ 41764 ........................................................................ 41765 ........................................................................ 41766 ........................................................................ 41767 ........................................................................ 41768 ........................................................................ 41769 ........................................................................ 41770 ........................................................................ 41771 ........................................................................ 41772 ........................................................................ 41773 ........................................................................ 41774 ........................................................................ 41775 ........................................................................ 41776 ........................................................................ 41777 ........................................................................ 41778 ........................................................................ 41779 ........................................................................ 41780 ........................................................................ 41781 ........................................................................ 41782 ........................................................................ 41783 ........................................................................ 41784 ........................................................................ 41785 ........................................................................ 41786 ........................................................................ 41787 ........................................................................ 41788 ........................................................................ 41789 ........................................................................ 41790 ........................................................................ 41791 ........................................................................ 41792 ........................................................................ 41793 ........................................................................ 41794 ........................................................................ 41795 ........................................................................ 41796 ........................................................................ 41797 ........................................................................ 41798 ........................................................................ 41799 ........................................................................ 41800 ........................................................................ 41801 ........................................................................ 41802 ........................................................................ 41803 ........................................................................ 41804 ........................................................................ 41805 ........................................................................ 41806 ........................................................................ 41807 ........................................................................ 41808 ........................................................................ 41809 ........................................................................ 41810 ........................................................................ 41811 ........................................................................ 41812 ........................................................................ 41813 ........................................................................ 41814 ........................................................................ 41815 ........................................................................ 41816 ........................................................................ 41817 ........................................................................ 41818 ........................................................................ 41819 ........................................................................ 41820 ........................................................................ 41821 ........................................................................ 41822 ........................................................................ 41823 ........................................................................ 41824 ........................................................................ 41825 ........................................................................ 41826 ........................................................................ 41827 ........................................................................ 41828 ........................................................................ 41829 ........................................................................ 41830 ........................................................................ 41831 ........................................................................ 41832 ........................................................................ 41833 ........................................................................ 41834 ........................................................................ 41835 ........................................................................ 41836 ........................................................................ 41837 ........................................................................ 41838 ........................................................................ 41839 ........................................................................ 41840 ........................................................................ 41841 ........................................................................ 41842 ........................................................................ 41843 ........................................................................ 41844 ........................................................................ 41845 ........................................................................ 41846 ........................................................................ 41847 ........................................................................ 41848 ........................................................................ 41849 ........................................................................ 41850 ........................................................................ 41851 ........................................................................ 41852 ........................................................................ 41853 ........................................................................ 41854 ........................................................................ 41855 ........................................................................ 41856 ........................................................................ 41857 ........................................................................ 41858 ........................................................................ 41859 ........................................................................ 41860 ........................................................................ 41861 ........................................................................ 41862 ........................................................................ 41863 ........................................................................ 41864 ........................................................................ 41865 ........................................................................ 41866 ........................................................................ 41867 ........................................................................ 41868 ........................................................................ 41869 ........................................................................ 41870 ........................................................................ 41871 ........................................................................ 41872 ........................................................................ 41873 ........................................................................ 41874 ........................................................................ 41875 ........................................................................ 41876 ........................................................................ 41877 ........................................................................ 41878 ........................................................................ 41879 ........................................................................ 41880 ........................................................................ 41881 ........................................................................ 41882 ........................................................................ 41883 ........................................................................ 41884 ........................................................................ 41885 ........................................................................ 41886 ........................................................................ 41887 ........................................................................ 41888 ........................................................................ 41889 ........................................................................ 41890 ........................................................................ 41891 ........................................................................ 41892 ........................................................................ 41893 ........................................................................ 41894 ........................................................................ 41895 ........................................................................ 41896 ........................................................................ 41897 ........................................................................ 41898 ........................................................................ 41899 ........................................................................ 41900 ........................................................................ 41901 ........................................................................ 41902 ........................................................................ 41903 ........................................................................ 41904 ........................................................................ 41905 ........................................................................ 41906 ........................................................................ 41907 ........................................................................ 41908 ........................................................................ 41909 ........................................................................ 41910 ........................................................................ 41911 ........................................................................ 41912 ........................................................................ 41913 ........................................................................ 41914 ........................................................................ 41915 ........................................................................ 41916 ........................................................................ 41917 ........................................................................ 41918 ........................................................................ 41919 ........................................................................ 41920 ........................................................................ 41921 ........................................................................ 41922 ........................................................................ 41923 ........................................................................ 41924 ........................................................................ 41925 ........................................................................ 41926 ........................................................................ 41927 ........................................................................ 41928 ........................................................................ 41929 ........................................................................ 41930 ........................................................................ 41931 ........................................................................ 41932 ........................................................................ 41933 ........................................................................ 41934 ........................................................................ 41935 ........................................................................ 41936 ........................................................................ 41937 ........................................................................ 41938 ........................................................................ 41939 ........................................................................ 41940 ........................................................................ 41941 ........................................................................ 41942 ........................................................................ 41943 ........................................................................ 41944 ........................................................................ 41945 ........................................................................ 41946 ........................................................................ 41947 ........................................................................ 41948 ........................................................................ 41949 ........................................................................ 41950 ........................................................................ 41951 ........................................................................ 41952 ........................................................................ 41953 ........................................................................ 41954 ........................................................................ 41955 ........................................................................ 41956 ........................................................................ 41957 ........................................................................ 41958 ........................................................................ 41959 ........................................................................ 41960 ........................................................................ 41961 ........................................................................ 41962 ........................................................................ 41963 ........................................................................ 41964 ........................................................................ 41965 ........................................................................ 41966 ........................................................................ 41967 ........................................................................ 41968 ........................................................................ 41969 ........................................................................ 41970 ........................................................................ 41971 ........................................................................ 41972 ........................................................................ 41973 ........................................................................ 41974 ........................................................................ 41975 ........................................................................ 41976 ........................................................................ 41977 ........................................................................ 41978 ........................................................................ 41979 ........................................................................ 41980 ........................................................................ 41981 ........................................................................ 41982 ........................................................................ 41983 ........................................................................ 41984 ........................................................................ 41985 ........................................................................ 41986 ........................................................................ 41987 ........................................................................ 41988 ........................................................................ 41989 ........................................................................ 41990 ........................................................................ 41991 ........................................................................ 41992 ........................................................................ 41993 ........................................................................ 41994 ........................................................................ 41995 ........................................................................ 41996 ........................................................................ 41997 ........................................................................ 41998 ........................................................................ 41999 ........................................................................ 42000 ........................................................................ 42001 ........................................................................ 42002 ........................................................................ 42003 ........................................................................ 42004 ........................................................................ 42005 ........................................................................ 42006 ........................................................................ 42007 ........................................................................ 42008 ........................................................................ 42009 ........................................................................ 42010 ........................................................................ 42011 ........................................................................ 42012 ........................................................................ 42013 ........................................................................ 42014 ........................................................................ 42015 ........................................................................ 42016 ........................................................................ 42017 ........................................................................ 42018 ........................................................................ 42019 ........................................................................ 42020 ........................................................................ 42021 ........................................................................ 42022 ........................................................................ 42023 ........................................................................ 42024 ........................................................................ 42025 ........................................................................ 42026 ........................................................................ 42027 ........................................................................ 42028 ........................................................................ 42029 ........................................................................ 42030 ........................................................................ 42031 ........................................................................ 42032 ........................................................................ 42033 ........................................................................ 42034 ........................................................................ 42035 ........................................................................ 42036 ........................................................................ 42037 ........................................................................ 42038 ........................................................................ 42039 ........................................................................ 42040 ........................................................................ 42041 ........................................................................ 42042 ........................................................................ 42043 ........................................................................ 42044 ........................................................................ 42045 ........................................................................ 42046 ........................................................................ 42047 ........................................................................ 42048 ........................................................................ 42049 ........................................................................ 42050 ........................................................................ 42051 ........................................................................ 42052 ........................................................................ 42053 ........................................................................ 42054 ........................................................................ 42055 ........................................................................ 42056 ........................................................................ 42057 ........................................................................ 42058 ........................................................................ 42059 ........................................................................ 42060 ........................................................................ 42061 ........................................................................ 42062 ........................................................................ 42063 ........................................................................ 42064 ........................................................................ 42065 ........................................................................ 42066 ........................................................................ 42067 ........................................................................ 42068 ........................................................................ 42069 ........................................................................ 42070 ........................................................................ 42071 ........................................................................ 42072 ........................................................................ 42073 ........................................................................ 42074 ........................................................................ 42075 ........................................................................ 42076 ........................................................................ 42077 ........................................................................ 42078 ........................................................................ 42079 ........................................................................ 42080 ........................................................................ 42081 ........................................................................ 42082 ........................................................................ 42083 ........................................................................ 42084 ........................................................................ 42085 ........................................................................ 42086 ........................................................................ 42087 ........................................................................ 42088 ........................................................................ 42089 ........................................................................ 42090 ........................................................................ 42091 ........................................................................ 42092 ........................................................................ 42093 ........................................................................ 42094 ........................................................................ 42095 ........................................................................ 42096 ........................................................................ 42097 ........................................................................ 42098 ........................................................................ 42099 ........................................................................ 42100 ........................................................................ 42101 ........................................................................ 42102 ........................................................................ 42103 ........................................................................ 42104 ........................................................................ 42105 ........................................................................ 42106 ........................................................................ 42107 ........................................................................ 42108 ........................................................................ 42109 ........................................................................ 42110 ........................................................................ 42111 ........................................................................ 42112 ........................................................................ 42113 ........................................................................ 42114 ........................................................................ 42115 ........................................................................ 42116 ........................................................................ 42117 ........................................................................ 42118 ........................................................................ 42119 ........................................................................ 42120 ........................................................................ 42121 ........................................................................ 42122 ........................................................................ 42123 ........................................................................ 42124 ........................................................................ 42125 ........................................................................ 42126 ........................................................................ 42127 ........................................................................ 42128 ........................................................................ 42129 ........................................................................ 42130 ........................................................................ 42131 ........................................................................ 42132 ........................................................................ 42133 ........................................................................ 42134 ........................................................................ 42135 ........................................................................ 42136 ........................................................................ 42137 ........................................................................ 42138 ........................................................................ 42139 ........................................................................ 42140 ........................................................................ 42141 ........................................................................ 42142 ........................................................................ 42143 ........................................................................ 42144 ........................................................................ 42145 ........................................................................ 42146 ........................................................................ 42147 ........................................................................ 42148 ........................................................................ 42149 ........................................................................ 42150 ........................................................................ 42151 ........................................................................ 42152 ........................................................................ 42153 ........................................................................ 42154 ........................................................................ 42155 ........................................................................ 42156 ........................................................................ 42157 ........................................................................ 42158 ........................................................................ 42159 ........................................................................ 42160 ........................................................................ 42161 ........................................................................ 42162 ........................................................................ 42163 ........................................................................ 42164 ........................................................................ 42165 ........................................................................ 42166 ........................................................................ 42167 ........................................................................ 42168 ........................................................................ 42169 ........................................................................ 42170 ........................................................................ 42171 ........................................................................ 42172 ........................................................................ 42173 ........................................................................ 42174 ........................................................................ 42175 ........................................................................ 42176 ........................................................................ 42177 ........................................................................ 42178 ........................................................................ 42179 ........................................................................ 42180 ........................................................................ 42181 ........................................................................ 42182 ........................................................................ 42183 ........................................................................ 42184 ........................................................................ 42185 ........................................................................ 42186 ........................................................................ 42187 ........................................................................ 42188 ........................................................................ 42189 ........................................................................ 42190 ........................................................................ 42191 ........................................................................ 42192 ........................................................................ 42193 ........................................................................ 42194 ........................................................................ 42195 ........................................................................ 42196 ........................................................................ 42197 ........................................................................ 42198 ........................................................................ 42199 ........................................................................ 42200 ........................................................................ 42201 ........................................................................ 42202 ........................................................................ 42203 ........................................................................ 42204 ........................................................................ 42205 ........................................................................ 42206 ........................................................................ 42207 ........................................................................ 42208 ........................................................................ 42209 ........................................................................ 42210 ........................................................................ 42211 ........................................................................ 42212 ........................................................................ 42213 ........................................................................ 42214 ........................................................................ 42215 ........................................................................ 42216 ........................................................................ 42217 ........................................................................ 42218 ........................................................................ 42219 ........................................................................ 42220 ........................................................................ 42221 ........................................................................ 42222 ........................................................................ 42223 ........................................................................ 42224 ........................................................................ 42225 ........................................................................ 42226 ........................................................................ 42227 ........................................................................ 42228 ........................................................................ 42229 ........................................................................ 42230 ........................................................................ 42231 ........................................................................ 42232 ........................................................................ 42233 ........................................................................ 42234 ........................................................................ 42235 ........................................................................ 42236 ........................................................................ 42237 ........................................................................ 42238 ........................................................................ 42239 ........................................................................ 42240 ........................................................................ 42241 ........................................................................ 42242 ........................................................................ 42243 ........................................................................ 42244 ........................................................................ 42245 ........................................................................ 42246 ........................................................................ 42247 ........................................................................ 42248 ........................................................................ 42249 ........................................................................ 42250 ........................................................................ 42251 ........................................................................ 42252 ........................................................................ 42253 ........................................................................ 42254 ........................................................................ 42255 ........................................................................ 42256 ........................................................................ 42257 ........................................................................ 42258 ........................................................................ 42259 ........................................................................ 42260 ........................................................................ 42261 ........................................................................ 42262 ........................................................................ 42263 ........................................................................ 42264 ........................................................................ 42265 ........................................................................ 42266 ........................................................................ 42267 ........................................................................ 42268 ........................................................................ 42269 ........................................................................ 42270 ........................................................................ 42271 ........................................................................ 42272 ........................................................................ 42273 ........................................................................ 42274 ........................................................................ 42275 ........................................................................ 42276 ........................................................................ 42277 ........................................................................ 42278 ........................................................................ 42279 ........................................................................ 42280 ........................................................................ 42281 ........................................................................ 42282 ........................................................................ 42283 ........................................................................ 42284 ........................................................................ 42285 ........................................................................ 42286 ........................................................................ 42287 ........................................................................ 42288 ........................................................................ 42289 ........................................................................ 42290 ........................................................................ 42291 ........................................................................ 42292 ........................................................................ 42293 ........................................................................ 42294 ........................................................................ 42295 ........................................................................ 42296 ........................................................................ 42297 ........................................................................ 42298 ........................................................................ 42299 ........................................................................ 42300 ........................................................................ 42301 ........................................................................ 42302 ........................................................................ 42303 ........................................................................ 42304 ........................................................................ 42305 ........................................................................ 42306 ........................................................................ 42307 ........................................................................ 42308 ........................................................................ 42309 ........................................................................ 42310 ........................................................................ 42311 ........................................................................ 42312 ........................................................................ 42313 ........................................................................ 42314 ........................................................................ 42315 ........................................................................ 42316 ........................................................................ 42317 ........................................................................ 42318 ........................................................................ 42319 ........................................................................ 42320 ........................................................................ 42321 ........................................................................ 42322 ........................................................................ 42323 ........................................................................ 42324 ........................................................................ 42325 ........................................................................ 42326 ........................................................................ 42327 ........................................................................ 42328 ........................................................................ 42329 ........................................................................ 42330 ........................................................................ 42331 ........................................................................ 42332 ........................................................................ 42333 ........................................................................ 42334 ........................................................................ 42335 ........................................................................ 42336 ........................................................................ 42337 ........................................................................ 42338 ........................................................................ 42339 ........................................................................ 42340 ........................................................................ 42341 ........................................................................ 42342 ........................................................................ 42343 ........................................................................ 42344 ........................................................................ 42345 ........................................................................ 42346 ........................................................................ 42347 ........................................................................ 42348 ........................................................................ 42349 ........................................................................ 42350 ........................................................................ 42351 ........................................................................ 42352 ........................................................................ 42353 ........................................................................ 42354 ........................................................................ 42355 ........................................................................ 42356 ........................................................................ 42357 ........................................................................ 42358 ........................................................................ 42359 ........................................................................ 42360 ........................................................................ 42361 ........................................................................ 42362 ........................................................................ 42363 ........................................................................ 42364 ........................................................................ 42365 ........................................................................ 42366 ........................................................................ 42367 ........................................................................ 42368 ........................................................................ 42369 ........................................................................ 42370 ........................................................................ 42371 ........................................................................ 42372 ........................................................................ 42373 ........................................................................ 42374 ........................................................................ 42375 ........................................................................ 42376 ........................................................................ 42377 ........................................................................ 42378 ........................................................................ 42379 ........................................................................ 42380 ........................................................................ 42381 ........................................................................ 42382 ........................................................................ 42383 ........................................................................ 42384 ........................................................................ 42385 ........................................................................ 42386 ........................................................................ 42387 ........................................................................ 42388 ........................................................................ 42389 ........................................................................ 42390 ........................................................................ 42391 ........................................................................ 42392 ........................................................................ 42393 ........................................................................ 42394 ........................................................................ 42395 ........................................................................ 42396 ........................................................................ 42397 ........................................................................ 42398 ........................................................................ 42399 ........................................................................ 42400 ........................................................................ 42401 ........................................................................ 42402 ........................................................................ 42403 ........................................................................ 42404 ........................................................................ 42405 ........................................................................ 42406 ........................................................................ 42407 ........................................................................ 42408 ........................................................................ 42409 ........................................................................ 42410 ........................................................................ 42411 ........................................................................ 42412 ........................................................................ 42413 ........................................................................ 42414 ........................................................................ 42415 ........................................................................ 42416 ........................................................................ 42417 ........................................................................ 42418 ........................................................................ 42419 ........................................................................ 42420 ........................................................................ 42421 ........................................................................ 42422 ........................................................................ 42423 ........................................................................ 42424 ........................................................................ 42425 ........................................................................ 42426 ........................................................................ 42427 ........................................................................ 42428 ........................................................................ 42429 ........................................................................ 42430 ........................................................................ 42431 ........................................................................ 42432 ........................................................................ 42433 ........................................................................ 42434 ........................................................................ 42435 ........................................................................ 42436 ........................................................................ 42437 ........................................................................ 42438 ........................................................................ 42439 ........................................................................ 42440 ........................................................................ 42441 ........................................................................ 42442 ........................................................................ 42443 ........................................................................ 42444 ........................................................................ 42445 ........................................................................ 42446 ........................................................................ 42447 ........................................................................ 42448 ........................................................................ 42449 ........................................................................ 42450 ........................................................................ 42451 ........................................................................ 42452 ........................................................................ 42453 ........................................................................ 42454 ........................................................................ 42455 ........................................................................ 42456 ........................................................................ 42457 ........................................................................ 42458 ........................................................................ 42459 ........................................................................ 42460 ........................................................................ 42461 ........................................................................ 42462 ........................................................................ 42463 ........................................................................ 42464 ........................................................................ 42465 ........................................................................ 42466 ........................................................................ 42467 ........................................................................ 42468 ........................................................................ 42469 ........................................................................ 42470 ........................................................................ 42471 ........................................................................ 42472 ........................................................................ 42473 ........................................................................ 42474 ........................................................................ 42475 ........................................................................ 42476 ........................................................................ 42477 ........................................................................ 42478 ........................................................................ 42479 ........................................................................ 42480 ........................................................................ 42481 ........................................................................ 42482 ........................................................................ 42483 ........................................................................ 42484 ........................................................................ 42485 ........................................................................ 42486 ........................................................................ 42487 ........................................................................ 42488 ........................................................................ 42489 ........................................................................ 42490 ........................................................................ 42491 ........................................................................ 42492 ........................................................................ 42493 ........................................................................ 42494 ........................................................................ 42495 ........................................................................ 42496 ........................................................................ 42497 ........................................................................ 42498 ........................................................................ 42499 ........................................................................ 42500 ........................................................................ 42501 ........................................................................ 42502 ........................................................................ 42503 ........................................................................ 42504 ........................................................................ 42505 ........................................................................ 42506 ........................................................................ 42507 ........................................................................ 42508 ........................................................................ 42509 ........................................................................ 42510 ........................................................................ 42511 ........................................................................ 42512 ........................................................................ 42513 ........................................................................ 42514 ........................................................................ 42515 ........................................................................ 42516 ........................................................................ 42517 ........................................................................ 42518 ........................................................................ 42519 ........................................................................ 42520 ........................................................................ 42521 ........................................................................ 42522 ........................................................................ 42523 ........................................................................ 42524 ........................................................................ 42525 ........................................................................ 42526 ........................................................................ 42527 ........................................................................ 42528 ........................................................................ 42529 ........................................................................ 42530 ........................................................................ 42531 ........................................................................ 42532 ........................................................................ 42533 ........................................................................ 42534 ........................................................................ 42535 ........................................................................ 42536 ........................................................................ 42537 ........................................................................ 42538 ........................................................................ 42539 ........................................................................ 42540 ........................................................................ 42541 ........................................................................ 42542 ........................................................................ 42543 ........................................................................ 42544 ........................................................................ 42545 ........................................................................ 42546 ........................................................................ 42547 ........................................................................ 42548 ........................................................................ 42549 ........................................................................ 42550 ........................................................................ 42551 ........................................................................ 42552 ........................................................................ 42553 ........................................................................ 42554 ........................................................................ 42555 ........................................................................ 42556 ........................................................................ 42557 ........................................................................ 42558 ........................................................................ 42559 ........................................................................ 42560 ........................................................................ 42561 ........................................................................ 42562 ........................................................................ 42563 ........................................................................ 42564 ........................................................................ 42565 ........................................................................ 42566 ........................................................................ 42567 ........................................................................ 42568 ........................................................................ 42569 ........................................................................ 42570 ........................................................................ 42571 ........................................................................ 42572 ........................................................................ 42573 ........................................................................ 42574 ........................................................................ 42575 ........................................................................ 42576 ........................................................................ 42577 ........................................................................ 42578 ........................................................................ 42579 ........................................................................ 42580 ........................................................................ 42581 ........................................................................ 42582 ........................................................................ 42583 ........................................................................ 42584 ........................................................................ 42585 ........................................................................ 42586 ........................................................................ 42587 ........................................................................ 42588 ........................................................................ 42589 ........................................................................ 42590 ........................................................................ 42591 ........................................................................ 42592 ........................................................................ 42593 ........................................................................ 42594 ........................................................................ 42595 ........................................................................ 42596 ........................................................................ 42597 ........................................................................ 42598 ........................................................................ 42599 ........................................................................ 42600 ........................................................................ 42601 ........................................................................ 42602 ........................................................................ 42603 ........................................................................ 42604 ........................................................................ 42605 ........................................................................ 42606 ........................................................................ 42607 ........................................................................ 42608 ........................................................................ 42609 ........................................................................ 42610 ........................................................................ 42611 ........................................................................ 42612 ........................................................................ 42613 ........................................................................ 42614 ........................................................................ 42615 ........................................................................ 42616 ........................................................................ 42617 ........................................................................ 42618 ........................................................................ 42619 ........................................................................ 42620 ........................................................................ 42621 ........................................................................ 42622 ........................................................................ 42623 ........................................................................ 42624 ........................................................................ 42625 ........................................................................ 42626 ........................................................................ 42627 ........................................................................ 42628 ........................................................................ 42629 ........................................................................ 42630 ........................................................................ 42631 ........................................................................ 42632 ........................................................................ 42633 ........................................................................ 42634 ........................................................................ 42635 ........................................................................ 42636 ........................................................................ 42637 ........................................................................ 42638 ........................................................................ 42639 ........................................................................ 42640 ........................................................................ 42641 ........................................................................ 42642 ........................................................................ 42643 ........................................................................ 42644 ........................................................................ 42645 ........................................................................ 42646 ........................................................................ 42647 ........................................................................ 42648 ........................................................................ 42649 ........................................................................ 42650 ........................................................................ 42651 ........................................................................ 42652 ........................................................................ 42653 ........................................................................ 42654 ........................................................................ 42655 ........................................................................ 42656 ........................................................................ 42657 ........................................................................ 42658 ........................................................................ 42659 ........................................................................ 42660 ........................................................................ 42661 ........................................................................ 42662 ........................................................................ 42663 ........................................................................ 42664 ........................................................................ 42665 ........................................................................ 42666 ........................................................................ 42667 ........................................................................ 42668 ........................................................................ 42669 ........................................................................ 42670 ........................................................................ 42671 ........................................................................ 42672 ........................................................................ 42673 ........................................................................ 42674 ........................................................................ 42675 ........................................................................ 42676 ........................................................................ 42677 ........................................................................ 42678 ........................................................................ 42679 ........................................................................ 42680 ........................................................................ 42681 ........................................................................ 42682 ........................................................................ 42683 ........................................................................ 42684 ........................................................................ 42685 ........................................................................ 42686 ........................................................................ 42687 ........................................................................ 42688 ........................................................................ 42689 ........................................................................ 42690 ........................................................................ 42691 ........................................................................ 42692 ........................................................................ 42693 ........................................................................ 42694 ........................................................................ 42695 ........................................................................ 42696 ........................................................................ 42697 ........................................................................ 42698 ........................................................................ 42699 ........................................................................ 42700 ........................................................................ 42701 ........................................................................ 42702 ........................................................................ 42703 ........................................................................ 42704 ........................................................................ 42705 ........................................................................ 42706 ........................................................................ 42707 ........................................................................ 42708 ........................................................................ 42709 ........................................................................ 42710 ........................................................................ 42711 ........................................................................ 42712 ........................................................................ 42713 ........................................................................ 42714 ........................................................................ 42715 ........................................................................ 42716 ........................................................................ 42717 ........................................................................ 42718 ........................................................................ 42719 ........................................................................ 42720 ........................................................................ 42721 ........................................................................ 42722 ........................................................................ 42723 ........................................................................ 42724 ........................................................................ 42725 ........................................................................ 42726 ........................................................................ 42727 ........................................................................ 42728 ........................................................................ 42729 ........................................................................ 42730 ........................................................................ 42731 ........................................................................ 42732 ........................................................................ 42733 ........................................................................ 42734 ........................................................................ 42735 ........................................................................ 42736 ........................................................................ 42737 ........................................................................ 42738 ........................................................................ 42739 ........................................................................ 42740 ........................................................................ 42741 ........................................................................ 42742 ........................................................................ 42743 ........................................................................ 42744 ........................................................................ 42745 ........................................................................ 42746 ........................................................................ 42747 ........................................................................ 42748 ........................................................................ 42749 ........................................................................ 42750 ........................................................................ 42751 ........................................................................ 42752 ........................................................................ 42753 ........................................................................ 42754 ........................................................................ 42755 ........................................................................ 42756 ........................................................................ 42757 ........................................................................ 42758 ........................................................................ 42759 ........................................................................ 42760 ........................................................................ 42761 ........................................................................ 42762 ........................................................................ 42763 ........................................................................ 42764 ........................................................................ 42765 ........................................................................ 42766 ........................................................................ 42767 ........................................................................ 42768 ........................................................................ 42769 ........................................................................ 42770 ........................................................................ 42771 ........................................................................ 42772 ........................................................................ 42773 ........................................................................ 42774 ........................................................................ 42775 ........................................................................ 42776 ........................................................................ 42777 ........................................................................ 42778 ........................................................................ 42779 ........................................................................ 42780 ........................................................................ 42781 ........................................................................ 42782 ........................................................................ 42783 ........................................................................ 42784 ........................................................................ 42785 ........................................................................ 42786 ........................................................................ 42787 ........................................................................ 42788 ........................................................................ 42789 ........................................................................ 42790 ........................................................................ 42791 ........................................................................ 42792 ........................................................................ 42793 ........................................................................ 42794 ........................................................................ 42795 ........................................................................ 42796 ........................................................................ 42797 ........................................................................ 42798 ........................................................................ 42799 ........................................................................ 42800 ........................................................................ 42801 ........................................................................ 42802 ........................................................................ 42803 ........................................................................ 42804 ........................................................................ 42805 ........................................................................ 42806 ........................................................................ 42807 ........................................................................ 42808 ........................................................................ 42809 ........................................................................ 42810 ........................................................................ 42811 ........................................................................ 42812 ........................................................................ 42813 ........................................................................ 42814 ........................................................................ 42815 ........................................................................ 42816 ........................................................................ 42817 ........................................................................ 42818 ........................................................................ 42819 ........................................................................ 42820 ........................................................................ 42821 ........................................................................ 42822 ........................................................................ 42823 ........................................................................ 42824 ........................................................................ 42825 ........................................................................ 42826 ........................................................................ 42827 ........................................................................ 42828 ........................................................................ 42829 ........................................................................ 42830 ........................................................................ 42831 ........................................................................ 42832 ........................................................................ 42833 ........................................................................ 42834 ........................................................................ 42835 ........................................................................ 42836 ........................................................................ 42837 ........................................................................ 42838 ........................................................................ 42839 ........................................................................ 42840 ........................................................................ 42841 ........................................................................ 42842 ........................................................................ 42843 ........................................................................ 42844 ........................................................................ 42845 ........................................................................ 42846 ........................................................................ 42847 ........................................................................ 42848 ........................................................................ 42849 ........................................................................ 42850 ........................................................................ 42851 ........................................................................ 42852 ........................................................................ 42853 ........................................................................ 42854 ........................................................................ 42855 ........................................................................ 42856 ........................................................................ 42857 ........................................................................ 42858 ........................................................................ 42859 ........................................................................ 42860 ........................................................................ 42861 ........................................................................ 42862 ........................................................................ 42863 ........................................................................ 42864 ........................................................................ 42865 ........................................................................ 42866 ........................................................................ 42867 ........................................................................ 42868 ........................................................................ 42869 ........................................................................ 42870 ........................................................................ 42871 ........................................................................ 42872 ........................................................................ 42873 ........................................................................ 42874 ........................................................................ 42875 ........................................................................ 42876 ........................................................................ 42877 ........................................................................ 42878 ........................................................................ 42879 ........................................................................ 42880 ........................................................................ 42881 ........................................................................ 42882 ........................................................................ 42883 ........................................................................ 42884 ........................................................................ 42885 ........................................................................ 42886 ........................................................................ 42887 ........................................................................ 42888 ........................................................................ 42889 ........................................................................ 42890 ........................................................................ 42891 ........................................................................ 42892 ........................................................................ 42893 ........................................................................ 42894 ........................................................................ 42895 ........................................................................ 42896 ........................................................................ 42897 ........................................................................ 42898 ........................................................................ 42899 ........................................................................ 42900 ........................................................................ 42901 ........................................................................ 42902 ........................................................................ 42903 ........................................................................ 42904 ........................................................................ 42905 ........................................................................ 42906 ........................................................................ 42907 ........................................................................ 42908 ........................................................................ 42909 ........................................................................ 42910 ........................................................................ 42911 ........................................................................ 42912 ........................................................................ 42913 ........................................................................ 42914 ........................................................................ 42915 ........................................................................ 42916 ........................................................................ 42917 ........................................................................ 42918 ........................................................................ 42919 ........................................................................ 42920 ........................................................................ 42921 ........................................................................ 42922 ........................................................................ 42923 ........................................................................ 42924 ........................................................................ 42925 ........................................................................ 42926 ........................................................................ 42927 ........................................................................ 42928 ........................................................................ 42929 ........................................................................ 42930 ........................................................................ 42931 ........................................................................ 42932 ........................................................................ 42933 ........................................................................ 42934 ........................................................................ 42935 ........................................................................ 42936 ........................................................................ 42937 ........................................................................ 42938 ........................................................................ 42939 ........................................................................ 42940 ........................................................................ 42941 ........................................................................ 42942 ........................................................................ 42943 ........................................................................ 42944 ........................................................................ 42945 ........................................................................ 42946 ........................................................................ 42947 ........................................................................ 42948 ........................................................................ 42949 ........................................................................ 42950 ........................................................................ 42951 ........................................................................ 42952 ........................................................................ 42953 ........................................................................ 42954 ........................................................................ 42955 ........................................................................ 42956 ........................................................................ 42957 ........................................................................ 42958 ........................................................................ 42959 ........................................................................ 42960 ........................................................................ 42961 ........................................................................ 42962 ........................................................................ 42963 ........................................................................ 42964 ........................................................................ 42965 ........................................................................ 42966 ........................................................................ 42967 ........................................................................ 42968 ........................................................................ 42969 ........................................................................ 42970 ........................................................................ 42971 ........................................................................ 42972 ........................................................................ 42973 ........................................................................ 42974 ........................................................................ 42975 ........................................................................ 42976 ........................................................................ 42977 ........................................................................ 42978 ........................................................................ 42979 ........................................................................ 42980 ........................................................................ 42981 ........................................................................ 42982 ........................................................................ 42983 ........................................................................ 42984 ........................................................................ 42985 ........................................................................ 42986 ........................................................................ 42987 ........................................................................ 42988 ........................................................................ 42989 ........................................................................ 42990 ........................................................................ 42991 ........................................................................ 42992 ........................................................................ 42993 ........................................................................ 42994 ........................................................................ 42995 ........................................................................ 42996 ........................................................................ 42997 ........................................................................ 42998 ........................................................................ 42999 ........................................................................ 43000 ........................................................................ 43001 ........................................................................ 43002 ........................................................................ 43003 ........................................................................ 43004 ........................................................................ 43005 ........................................................................ 43006 ........................................................................ 43007 ........................................................................ 43008 ........................................................................ 43009 ........................................................................ 43010 ........................................................................ 43011 ........................................................................ 43012 ........................................................................ 43013 ........................................................................ 43014 ........................................................................ 43015 ........................................................................ 43016 ........................................................................ 43017 ........................................................................ 43018 ........................................................................ 43019 ........................................................................ 43020 ........................................................................ 43021 ........................................................................ 43022 ........................................................................ 43023 ........................................................................ 43024 ........................................................................ 43025 ........................................................................ 43026 ........................................................................ 43027 ........................................................................ 43028 ........................................................................ 43029 ........................................................................ 43030 ........................................................................ 43031 ........................................................................ 43032 ........................................................................ 43033 ........................................................................ 43034 ........................................................................ 43035 ........................................................................ 43036 ........................................................................ 43037 ........................................................................ 43038 ........................................................................ 43039 ........................................................................ 43040 ........................................................................ 43041 ........................................................................ 43042 ........................................................................ 43043 ........................................................................ 43044 ........................................................................ 43045 ........................................................................ 43046 ........................................................................ 43047 ........................................................................ 43048 ........................................................................ 43049 ........................................................................ 43050 ........................................................................ 43051 ........................................................................ 43052 ........................................................................ 43053 ........................................................................ 43054 ........................................................................ 43055 ........................................................................ 43056 ........................................................................ 43057 ........................................................................ 43058 ........................................................................ 43059 ........................................................................ 43060 ........................................................................ 43061 ........................................................................ 43062 ........................................................................ 43063 ........................................................................ 43064 ........................................................................ 43065 ........................................................................ 43066 ........................................................................ 43067 ........................................................................ 43068 ........................................................................ 43069 ........................................................................ 43070 ........................................................................ 43071 ........................................................................ 43072 ........................................................................ 43073 ........................................................................ 43074 ........................................................................ 43075 ........................................................................ 43076 ........................................................................ 43077 ........................................................................ 43078 ........................................................................ 43079 ........................................................................ 43080 ........................................................................ 43081 ........................................................................ 43082 ........................................................................ 43083 ........................................................................ 43084 ........................................................................ 43085 ........................................................................ 43086 ........................................................................ 43087 ........................................................................ 43088 ........................................................................ 43089 ........................................................................ 43090 ........................................................................ 43091 ........................................................................ 43092 ........................................................................ 43093 ........................................................................ 43094 ........................................................................ 43095 ........................................................................ 43096 ........................................................................ 43097 ........................................................................ 43098 ........................................................................ 43099 ........................................................................ 43100 ........................................................................ 43101 ........................................................................ 43102 ........................................................................ 43103 ........................................................................ 43104 ........................................................................ 43105 ........................................................................ 43106 ........................................................................ 43107 ........................................................................ 43108 ........................................................................ 43109 ........................................................................ 43110 ........................................................................ 43111 ........................................................................ 43112 ........................................................................ 43113 ........................................................................ 43114 ........................................................................ 43115 ........................................................................ 43116 ........................................................................ 43117 ........................................................................ 43118 ........................................................................ 43119 ........................................................................ 43120 ........................................................................ 43121 ........................................................................ 43122 ........................................................................ 43123 ........................................................................ 43124 ........................................................................ 43125 ........................................................................ 43126 ........................................................................ 43127 ........................................................................ 43128 ........................................................................ 43129 ........................................................................ 43130 ........................................................................ 43131 ........................................................................ 43132 ........................................................................ 43133 ........................................................................ 43134 ........................................................................ 43135 ........................................................................ 43136 ........................................................................ 43137 ........................................................................ 43138 ........................................................................ 43139 ........................................................................ 43140 ........................................................................ 43141 ........................................................................ 43142 ........................................................................ 43143 ........................................................................ 43144 ........................................................................ 43145 ........................................................................ 43146 ........................................................................ 43147 ........................................................................ 43148 ........................................................................ 43149 ........................................................................ 43150 ........................................................................ 43151 ........................................................................ 43152 ........................................................................ 43153 ........................................................................ 43154 ........................................................................ 43155 ........................................................................ 43156 ........................................................................ 43157 ........................................................................ 43158 ........................................................................ 43159 ........................................................................ 43160 ........................................................................ 43161 ........................................................................ 43162 ........................................................................ 43163 ........................................................................ 43164 ........................................................................ 43165 ........................................................................ 43166 ........................................................................ 43167 ........................................................................ 43168 ........................................................................ 43169 ........................................................................ 43170 ........................................................................ 43171 ........................................................................ 43172 ........................................................................ 43173 ........................................................................ 43174 ........................................................................ 43175 ........................................................................ 43176 ........................................................................ 43177 ........................................................................ 43178 ........................................................................ 43179 ........................................................................ 43180 ........................................................................ 43181 ........................................................................ 43182 ........................................................................ 43183 ........................................................................ 43184 ........................................................................ 43185 ........................................................................ 43186 ........................................................................ 43187 ........................................................................ 43188 ........................................................................ 43189 ........................................................................ 43190 ........................................................................ 43191 ........................................................................ 43192 ........................................................................ 43193 ........................................................................ 43194 ........................................................................ 43195 ........................................................................ 43196 ........................................................................ 43197 ........................................................................ 43198 ........................................................................ 43199 ........................................................................ 43200 ........................................................................ 43201 ........................................................................ 43202 ........................................................................ 43203 ........................................................................ 43204 ........................................................................ 43205 ........................................................................ 43206 ........................................................................ 43207 ........................................................................ 43208 ........................................................................ 43209 ........................................................................ 43210 ........................................................................ 43211 ........................................................................ 43212 ........................................................................ 43213 ........................................................................ 43214 ........................................................................ 43215 ........................................................................ 43216 ........................................................................ 43217 ........................................................................ 43218 ........................................................................ 43219 ........................................................................ 43220 ........................................................................ 43221 ........................................................................ 43222 ........................................................................ 43223 ........................................................................ 43224 ........................................................................ 43225 ........................................................................ 43226 ........................................................................ 43227 ........................................................................ 43228 ........................................................................ 43229 ........................................................................ 43230 ........................................................................ 43231 ........................................................................ 43232 ........................................................................ 43233 ........................................................................ 43234 ........................................................................ 43235 ........................................................................ 43236 ........................................................................ 43237 ........................................................................ 43238 ........................................................................ 43239 ........................................................................ 43240 ........................................................................ 43241 ........................................................................ 43242 ........................................................................ 43243 ........................................................................ 43244 ........................................................................ 43245 ........................................................................ 43246 ........................................................................ 43247 ........................................................................ 43248 ........................................................................ 43249 ........................................................................ 43250 ........................................................................ 43251 ........................................................................ 43252 ........................................................................ 43253 ........................................................................ 43254 ........................................................................ 43255 ........................................................................ 43256 ........................................................................ 43257 ........................................................................ 43258 ........................................................................ 43259 ........................................................................ 43260 ........................................................................ 43261 ........................................................................ 43262 ........................................................................ 43263 ........................................................................ 43264 ........................................................................ 43265 ........................................................................ 43266 ........................................................................ 43267 ........................................................................ 43268 ........................................................................ 43269 ........................................................................ 43270 ........................................................................ 43271 ........................................................................ 43272 ........................................................................ 43273 ........................................................................ 43274 ........................................................................ 43275 ........................................................................ 43276 ........................................................................ 43277 ........................................................................ 43278 ........................................................................ 43279 ........................................................................ 43280 ........................................................................ 43281 ........................................................................ 43282 ........................................................................ 43283 ........................................................................ 43284 ........................................................................ 43285 ........................................................................ 43286 ........................................................................ 43287 ........................................................................ 43288 ........................................................................ 43289 ........................................................................ 43290 ........................................................................ 43291 ........................................................................ 43292 ........................................................................ 43293 ........................................................................ 43294 ........................................................................ 43295 ........................................................................ 43296 ........................................................................ 43297 ........................................................................ 43298 ........................................................................ 43299 ........................................................................ 43300 ........................................................................ 43301 ........................................................................ 43302 ........................................................................ 43303 ........................................................................ 43304 ........................................................................ 43305 ........................................................................ 43306 ........................................................................ 43307 ........................................................................ 43308 ........................................................................ 43309 ........................................................................ 43310 ........................................................................ 43311 ........................................................................ 43312 ........................................................................ 43313 ........................................................................ 43314 ........................................................................ 43315 ........................................................................ 43316 ........................................................................ 43317 ........................................................................ 43318 ........................................................................ 43319 ........................................................................ 43320 ........................................................................ 43321 ........................................................................ 43322 ........................................................................ 43323 ........................................................................ 43324 ........................................................................ 43325 ........................................................................ 43326 ........................................................................ 43327 ........................................................................ 43328 ........................................................................ 43329 ........................................................................ 43330 ........................................................................ 43331 ........................................................................ 43332 ........................................................................ 43333 ........................................................................ 43334 ........................................................................ 43335 ........................................................................ 43336 ........................................................................ 43337 ........................................................................ 43338 ........................................................................ 43339 ........................................................................ 43340 ........................................................................ 43341 ........................................................................ 43342 ........................................................................ 43343 ........................................................................ 43344 ........................................................................ 43345 ........................................................................ 43346 ........................................................................ 43347 ........................................................................ 43348 ........................................................................ 43349 ........................................................................ 43350 ........................................................................ 43351 ........................................................................ 43352 ........................................................................ 43353 ........................................................................ 43354 ........................................................................ 43355 ........................................................................ 43356 ........................................................................ 43357 ........................................................................ 43358 ........................................................................ 43359 ........................................................................ 43360 ........................................................................ 43361 ........................................................................ 43362 ........................................................................ 43363 ........................................................................ 43364 ........................................................................ 43365 ........................................................................ 43366 ........................................................................ 43367 ........................................................................ 43368 ........................................................................ 43369 ........................................................................ 43370 ........................................................................ 43371 ........................................................................ 43372 ........................................................................ 43373 ........................................................................ 43374 ........................................................................ 43375 ........................................................................ 43376 ........................................................................ 43377 ........................................................................ 43378 ........................................................................ 43379 ........................................................................ 43380 ........................................................................ 43381 ........................................................................ 43382 ........................................................................ 43383 ........................................................................ 43384 ........................................................................ 43385 ........................................................................ 43386 ........................................................................ 43387 ........................................................................ 43388 ........................................................................ 43389 ........................................................................ 43390 ........................................................................ 43391 ........................................................................ 43392 ........................................................................ 43393 ........................................................................ 43394 ........................................................................ 43395 ........................................................................ 43396 ........................................................................ 43397 ........................................................................ 43398 ........................................................................ 43399 ........................................................................ 43400 ........................................................................ 43401 ........................................................................ 43402 ........................................................................ 43403 ........................................................................ 43404 ........................................................................ 43405 ........................................................................ 43406 ........................................................................ 43407 ........................................................................ 43408 ........................................................................ 43409 ........................................................................ 43410 ........................................................................ 43411 ........................................................................ 43412 ........................................................................ 43413 ........................................................................ 43414 ........................................................................ 43415 ........................................................................ 43416 ........................................................................ 43417 ........................................................................ 43418 ........................................................................ 43419 ........................................................................ 43420 ........................................................................ 43421 ........................................................................ 43422 ........................................................................ 43423 ........................................................................ 43424 ........................................................................ 43425 ........................................................................ 43426 ........................................................................ 43427 ........................................................................ 43428 ........................................................................ 43429 ........................................................................ 43430 ........................................................................ 43431 ........................................................................ 43432 ........................................................................ 43433 ........................................................................ 43434 ........................................................................ 43435 ........................................................................ 43436 ........................................................................ 43437 ........................................................................ 43438 ........................................................................ 43439 ........................................................................ 43440 ........................................................................ 43441 ........................................................................ 43442 ........................................................................ 43443 ........................................................................ 43444 ........................................................................ 43445 ........................................................................ 43446 ........................................................................ 43447 ........................................................................ 43448 ........................................................................ 43449 ........................................................................ 43450 ........................................................................ 43451 ........................................................................ 43452 ........................................................................ 43453 ........................................................................ 43454 ........................................................................ 43455 ........................................................................ 43456 ........................................................................ 43457 ........................................................................ 43458 ........................................................................ 43459 ........................................................................ 43460 ........................................................................ 43461 ........................................................................ 43462 ........................................................................ 43463 ........................................................................ 43464 ........................................................................ 43465 ........................................................................ 43466 ........................................................................ 43467 ........................................................................ 43468 ........................................................................ 43469 ........................................................................ 43470 ........................................................................ 43471 ........................................................................ 43472 ........................................................................ 43473 ........................................................................ 43474 ........................................................................ 43475 ........................................................................ 43476 ........................................................................ 43477 ........................................................................ 43478 ........................................................................ 43479 ........................................................................ 43480 ........................................................................ 43481 ........................................................................ 43482 ........................................................................ 43483 ........................................................................ 43484 ........................................................................ 43485 ........................................................................ 43486 ........................................................................ 43487 ........................................................................ 43488 ........................................................................ 43489 ........................................................................ 43490 ........................................................................ 43491 ........................................................................ 43492 ........................................................................ 43493 ........................................................................ 43494 ........................................................................ 43495 ........................................................................ 43496 ........................................................................ 43497 ........................................................................ 43498 ........................................................................ 43499 ........................................................................ 43500 ........................................................................ 43501 ........................................................................ 43502 ........................................................................ 43503 ........................................................................ 43504 ........................................................................ 43505 ........................................................................ 43506 ........................................................................ 43507 ........................................................................ 43508 ........................................................................ 43509 ........................................................................ 43510 ........................................................................ 43511 ........................................................................ 43512 ........................................................................ 43513 ........................................................................ 43514 ........................................................................ 43515 ........................................................................ 43516 ........................................................................ 43517 ........................................................................ 43518 ........................................................................ 43519 ........................................................................ 43520 ........................................................................ 43521 ........................................................................ 43522 ........................................................................ 43523 ........................................................................ 43524 ........................................................................ 43525 ........................................................................ 43526 ........................................................................ 43527 ........................................................................ 43528 ........................................................................ 43529 ........................................................................ 43530 ........................................................................ 43531 ........................................................................ 43532 ........................................................................ 43533 ........................................................................ 43534 ........................................................................ 43535 ........................................................................ 43536 ........................................................................ 43537 ........................................................................ 43538 ........................................................................ 43539 ........................................................................ 43540 ........................................................................ 43541 ........................................................................ 43542 ........................................................................ 43543 ........................................................................ 43544 ........................................................................ 43545 ........................................................................ 43546 ........................................................................ 43547 ........................................................................ 43548 ........................................................................ 43549 ........................................................................ 43550 ........................................................................ 43551 ........................................................................ 43552 ........................................................................ 43553 ........................................................................ 43554 ........................................................................ 43555 ........................................................................ 43556 ........................................................................ 43557 ........................................................................ 43558 ........................................................................ 43559 ........................................................................ 43560 ........................................................................ 43561 ........................................................................ 43562 ........................................................................ 43563 ........................................................................ 43564 ........................................................................ 43565 ........................................................................ 43566 ........................................................................ 43567 ........................................................................ 43568 ........................................................................ 43569 ........................................................................ 43570 ........................................................................ 43571 ........................................................................ 43572 ........................................................................ 43573 ........................................................................ 43574 ........................................................................ 43575 ........................................................................ 43576 ........................................................................ 43577 ........................................................................ 43578 ........................................................................ 43579 ........................................................................ 43580 ........................................................................ 43581 ........................................................................ 43582 ........................................................................ 43583 ........................................................................ 43584 ........................................................................ 43585 ........................................................................ 43586 ........................................................................ 43587 ........................................................................ 43588 ........................................................................ 43589 ........................................................................ 43590 ........................................................................ 43591 ........................................................................ 43592 ........................................................................ 43593 ........................................................................ 43594 ........................................................................ 43595 ........................................................................ 43596 ........................................................................ 43597 ........................................................................ 43598 ........................................................................ 43599 ........................................................................ 43600 ........................................................................ 43601 ........................................................................ 43602 ........................................................................ 43603 ........................................................................ 43604 ........................................................................ 43605 ........................................................................ 43606 ........................................................................ 43607 ........................................................................ 43608 ........................................................................ 43609 ........................................................................ 43610 ........................................................................ 43611 ........................................................................ 43612 ........................................................................ 43613 ........................................................................ 43614 ........................................................................ 43615 ........................................................................ 43616 ........................................................................ 43617 ........................................................................ 43618 ........................................................................ 43619 ........................................................................ 43620 ........................................................................ 43621 ........................................................................ 43622 ........................................................................ 43623 ........................................................................ 43624 ........................................................................ 43625 ........................................................................ 43626 ........................................................................ 43627 ........................................................................ 43628 ........................................................................ 43629 ........................................................................ 43630 ........................................................................ 43631 ........................................................................ 43632 ........................................................................ 43633 ........................................................................ 43634 ........................................................................ 43635 ........................................................................ 43636 ........................................................................ 43637 ........................................................................ 43638 ........................................................................ 43639 ........................................................................ 43640 ........................................................................ 43641 ........................................................................ 43642 ........................................................................ 43643 ........................................................................ 43644 ........................................................................ 43645 ........................................................................ 43646 ........................................................................ 43647 ........................................................................ 43648 ........................................................................ 43649 ........................................................................ 43650 ........................................................................ 43651 ........................................................................ 43652 ........................................................................ 43653 ........................................................................ 43654 ........................................................................ 43655 ........................................................................ 43656 ........................................................................ 43657 ........................................................................ 43658 ........................................................................ 43659 ........................................................................ 43660 ........................................................................ 43661 ........................................................................ 43662 ........................................................................ 43663 ........................................................................ 43664 ........................................................................ 43665 ........................................................................ 43666 ........................................................................ 43667 ........................................................................ 43668 ........................................................................ 43669 ........................................................................ 43670 ........................................................................ 43671 ........................................................................ 43672 ........................................................................ 43673 ........................................................................ 43674 ........................................................................ 43675 ........................................................................ 43676 ........................................................................ 43677 ........................................................................ 43678 ........................................................................ 43679 ........................................................................ 43680 ........................................................................ 43681 ........................................................................ 43682 ........................................................................ 43683 ........................................................................ 43684 ........................................................................ 43685 ........................................................................ 43686 ........................................................................ 43687 ........................................................................ 43688 ........................................................................ 43689 ........................................................................ 43690 ........................................................................ 43691 ........................................................................ 43692 ........................................................................ 43693 ........................................................................ 43694 ........................................................................ 43695 ........................................................................ 43696 ........................................................................ 43697 ........................................................................ 43698 ........................................................................ 43699 ........................................................................ 43700 ........................................................................ 43701 ........................................................................ 43702 ........................................................................ 43703 ........................................................................ 43704 ........................................................................ 43705 ........................................................................ 43706 ........................................................................ 43707 ........................................................................ 43708 ........................................................................ 43709 ........................................................................ 43710 ........................................................................ 43711 ........................................................................ 43712 ........................................................................ 43713 ........................................................................ 43714 ........................................................................ 43715 ........................................................................ 43716 ........................................................................ 43717 ........................................................................ 43718 ........................................................................ 43719 ........................................................................ 43720 ........................................................................ 43721 ........................................................................ 43722 ........................................................................ 43723 ........................................................................ 43724 ........................................................................ 43725 ........................................................................ 43726 ........................................................................ 43727 ........................................................................ 43728 ........................................................................ 43729 ........................................................................ 43730 ........................................................................ 43731 ........................................................................ 43732 ........................................................................ 43733 ........................................................................ 43734 ........................................................................ 43735 ........................................................................ 43736 ........................................................................ 43737 ........................................................................ 43738 ........................................................................ 43739 ........................................................................ 43740 ........................................................................ 43741 ........................................................................ 43742 ........................................................................ 43743 ........................................................................ 43744 ........................................................................ 43745 ........................................................................ 43746 ........................................................................ 43747 ........................................................................ 43748 ........................................................................ 43749 ........................................................................ 43750 ........................................................................ 43751 ........................................................................ 43752 ........................................................................ 43753 ........................................................................ 43754 ........................................................................ 43755 ........................................................................ 43756 ........................................................................ 43757 ........................................................................ 43758 ........................................................................ 43759 ........................................................................ 43760 ........................................................................ 43761 ........................................................................ 43762 ........................................................................ 43763 ........................................................................ 43764 ........................................................................ 43765 ........................................................................ 43766 ........................................................................ 43767 ........................................................................ 43768 ........................................................................ 43769 ........................................................................ 43770 ........................................................................ 43771 ........................................................................ 43772 ........................................................................ 43773 ........................................................................ 43774 ........................................................................ 43775 ........................................................................ 43776 ........................................................................ 43777 ........................................................................ 43778 ........................................................................ 43779 ........................................................................ 43780 ........................................................................ 43781 ........................................................................ 43782 ........................................................................ 43783 ........................................................................ 43784 ........................................................................ 43785 ........................................................................ 43786 ........................................................................ 43787 ........................................................................ 43788 ........................................................................ 43789 ........................................................................ 43790 ........................................................................ 43791 ........................................................................ 43792 ........................................................................ 43793 ........................................................................ 43794 ........................................................................ 43795 ........................................................................ 43796 ........................................................................ 43797 ........................................................................ 43798 ........................................................................ 43799 ........................................................................ 43800 ........................................................................ 43801 ........................................................................ 43802 ........................................................................ 43803 ........................................................................ 43804 ........................................................................ 43805 ........................................................................ 43806 ........................................................................ 43807 ........................................................................ 43808 ........................................................................ 43809 ........................................................................ 43810 ........................................................................ 43811 ........................................................................ 43812 ........................................................................ 43813 ........................................................................ 43814 ........................................................................ 43815 ........................................................................ 43816 ........................................................................ 43817 ........................................................................ 43818 ........................................................................ 43819 ........................................................................ 43820 ........................................................................ 43821 ........................................................................ 43822 ........................................................................ 43823 ........................................................................ 43824 ........................................................................ 43825 ........................................................................ 43826 ........................................................................ 43827 ........................................................................ 43828 ........................................................................ 43829 ........................................................................ 43830 ........................................................................ 43831 ........................................................................ 43832 ........................................................................ 43833 ........................................................................ 43834 ........................................................................ 43835 ........................................................................ 43836 ........................................................................ 43837 ........................................................................ 43838 ........................................................................ 43839 ........................................................................ 43840 ........................................................................ 43841 ........................................................................ 43842 ........................................................................ 43843 ........................................................................ 43844 ........................................................................ 43845 ........................................................................ 43846 ........................................................................ 43847 ........................................................................ 43848 ........................................................................ 43849 ........................................................................ 43850 ........................................................................ 43851 ........................................................................ 43852 ........................................................................ 43853 ........................................................................ 43854 ........................................................................ 43855 ........................................................................ 43856 ........................................................................ 43857 ........................................................................ 43858 ........................................................................ 43859 ........................................................................ 43860 ........................................................................ 43861 ........................................................................ 43862 ........................................................................ 43863 ........................................................................ 43864 ........................................................................ 43865 ........................................................................ 43866 ........................................................................ 43867 ........................................................................ 43868 ........................................................................ 43869 ........................................................................ 43870 ........................................................................ 43871 ........................................................................ 43872 ........................................................................ 43873 ........................................................................ 43874 ........................................................................ 43875 ........................................................................ 43876 ........................................................................ 43877 ........................................................................ 43878 ........................................................................ 43879 ........................................................................ 43880 ........................................................................ 43881 ........................................................................ 43882 ........................................................................ 43883 ........................................................................ 43884 ........................................................................ 43885 ........................................................................ 43886 ........................................................................ 43887 ........................................................................ 43888 ........................................................................ 43889 ........................................................................ 43890 ........................................................................ 43891 ........................................................................ 43892 ........................................................................ 43893 ........................................................................ 43894 ........................................................................ 43895 ........................................................................ 43896 ........................................................................ 43897 ........................................................................ 43898 ........................................................................ 43899 ........................................................................ 43900 ........................................................................ 43901 ........................................................................ 43902 ........................................................................ 43903 ........................................................................ 43904 ........................................................................ 43905 ........................................................................ 43906 ........................................................................ 43907 ........................................................................ 43908 ........................................................................ 43909 ........................................................................ 43910 ........................................................................ 43911 ........................................................................ 43912 ........................................................................ 43913 ........................................................................ 43914 ........................................................................ 43915 ........................................................................ 43916 ........................................................................ 43917 ........................................................................ 43918 ........................................................................ 43919 ........................................................................ 43920 ........................................................................ 43921 ........................................................................ 43922 ........................................................................ 43923 ........................................................................ 43924 ........................................................................ 43925 ........................................................................ 43926 ........................................................................ 43927 ........................................................................ 43928 ........................................................................ 43929 ........................................................................ 43930 ........................................................................ 43931 ........................................................................ 43932 ........................................................................ 43933 ........................................................................ 43934 ........................................................................ 43935 ........................................................................ 43936 ........................................................................ 43937 ........................................................................ 43938 ........................................................................ 43939 ........................................................................ 43940 ........................................................................ 43941 ........................................................................ 43942 ........................................................................ 43943 ........................................................................ 43944 ........................................................................ 43945 ........................................................................ 43946 ........................................................................ 43947 ........................................................................ 43948 ........................................................................ 43949 ........................................................................ 43950 ........................................................................ 43951 ........................................................................ 43952 ........................................................................ 43953 ........................................................................ 43954 ........................................................................ 43955 ........................................................................ 43956 ........................................................................ 43957 ........................................................................ 43958 ........................................................................ 43959 ........................................................................ 43960 ........................................................................ 43961 ........................................................................ 43962 ........................................................................ 43963 ........................................................................ 43964 ........................................................................ 43965 ........................................................................ 43966 ........................................................................ 43967 ........................................................................ 43968 ........................................................................ 43969 ........................................................................ 43970 ........................................................................ 43971 ........................................................................ 43972 ........................................................................ 43973 ........................................................................ 43974 ........................................................................ 43975 ........................................................................ 43976 ........................................................................ 43977 ........................................................................ 43978 ........................................................................ 43979 ........................................................................ 43980 ........................................................................ 43981 ........................................................................ 43982 ........................................................................ 43983 ........................................................................ 43984 ........................................................................ 43985 ........................................................................ 43986 ........................................................................ 43987 ........................................................................ 43988 ........................................................................ 43989 ........................................................................ 43990 ........................................................................ 43991 ........................................................................ 43992 ........................................................................ 43993 ........................................................................ 43994 ........................................................................ 43995 ........................................................................ 43996 ........................................................................ 43997 ........................................................................ 43998 ........................................................................ 43999 ........................................................................ 44000 ........................................................................ 44001 ........................................................................ 44002 ........................................................................ 44003 ........................................................................ 44004 ........................................................................ 44005 ........................................................................ 44006 ........................................................................ 44007 ........................................................................ 44008 ........................................................................ 44009 ........................................................................ 44010 ........................................................................ 44011 ........................................................................ 44012 ........................................................................ 44013 ........................................................................ 44014 ........................................................................ 44015 ........................................................................ 44016 ........................................................................ 44017 ........................................................................ 44018 ........................................................................ 44019 ........................................................................ 44020 ........................................................................ 44021 ........................................................................ 44022 ........................................................................ 44023 ........................................................................ 44024 ........................................................................ 44025 ........................................................................ 44026 ........................................................................ 44027 ........................................................................ 44028 ........................................................................ 44029 ........................................................................ 44030 ........................................................................ 44031 ........................................................................ 44032 ........................................................................ 44033 ........................................................................ 44034 ........................................................................ 44035 ........................................................................ 44036 ........................................................................ 44037 ........................................................................ 44038 ........................................................................ 44039 ........................................................................ 44040 ........................................................................ 44041 ........................................................................ 44042 ........................................................................ 44043 ........................................................................ 44044 ........................................................................ 44045 ........................................................................ 44046 ........................................................................ 44047 ........................................................................ 44048 ........................................................................ 44049 ........................................................................ 44050 ........................................................................ 44051 ........................................................................ 44052 ........................................................................ 44053 ........................................................................ 44054 ........................................................................ 44055 ........................................................................ 44056 ........................................................................ 44057 ........................................................................ 44058 ........................................................................ 44059 ........................................................................ 44060 ........................................................................ 44061 ........................................................................ 44062 ........................................................................ 44063 ........................................................................ 44064 ........................................................................ 44065 ........................................................................ 44066 ........................................................................ 44067 ........................................................................ 44068 ........................................................................ 44069 ........................................................................ 44070 ........................................................................ 44071 ........................................................................ 44072 ........................................................................ 44073 ........................................................................ 44074 ........................................................................ 44075 ........................................................................ 44076 ........................................................................ 44077 ........................................................................ 44078 ........................................................................ 44079 ........................................................................ 44080 ........................................................................ 44081 ........................................................................ 44082 ........................................................................ 44083 ........................................................................ 44084 ........................................................................ 44085 ........................................................................ 44086 ........................................................................ 44087 ........................................................................ 44088 ........................................................................ 44089 ........................................................................ 44090 ........................................................................ 44091 ........................................................................ 44092 ........................................................................ 44093 ........................................................................ 44094 ........................................................................ 44095 ........................................................................ 44096 ........................................................................ 44097 ........................................................................ 44098 ........................................................................ 44099 ........................................................................ 44100 ........................................................................ 44101 ........................................................................ 44102 ........................................................................ 44103 ........................................................................ 44104 ........................................................................ 44105 ........................................................................ 44106 ........................................................................ 44107 ........................................................................ 44108 ........................................................................ 44109 ........................................................................ 44110 ........................................................................ 44111 ........................................................................ 44112 ........................................................................ 44113 ........................................................................ 44114 ........................................................................ 44115 ........................................................................ 44116 ........................................................................ 44117 ........................................................................ 44118 ........................................................................ 44119 ........................................................................ 44120 ........................................................................ 44121 ........................................................................ 44122 ........................................................................ 44123 ........................................................................ 44124 ........................................................................ 44125 ........................................................................ 44126 ........................................................................ 44127 ........................................................................ 44128 ........................................................................ 44129 ........................................................................ 44130 ........................................................................ 44131 ........................................................................ 44132 ........................................................................ 44133 ........................................................................ 44134 ........................................................................ 44135 ........................................................................ 44136 ........................................................................ 44137 ........................................................................ 44138 ........................................................................ 44139 ........................................................................ 44140 ........................................................................ 44141 ........................................................................ 44142 ........................................................................ 44143 ........................................................................ 44144 ........................................................................ 44145 ........................................................................ 44146 ........................................................................ 44147 ........................................................................ 44148 ........................................................................ 44149 ........................................................................ 44150 ........................................................................ 44151 ........................................................................ 44152 ........................................................................ 44153 ........................................................................ 44154 ........................................................................ 44155 ........................................................................ 44156 ........................................................................ 44157 ........................................................................ 44158 ........................................................................ 44159 ........................................................................ 44160 ........................................................................ 44161 ........................................................................ 44162 ........................................................................ 44163 ........................................................................ 44164 ........................................................................ 44165 ........................................................................ 44166 ........................................................................ 44167 ........................................................................ 44168 ........................................................................ 44169 ........................................................................ 44170 ........................................................................ 44171 ........................................................................ 44172 ........................................................................ 44173 ........................................................................ 44174 ........................................................................ 44175 ........................................................................ 44176 ........................................................................ 44177 ........................................................................ 44178 ........................................................................ 44179 ........................................................................ 44180 ........................................................................ 44181 ........................................................................ 44182 ........................................................................ 44183 ........................................................................ 44184 ........................................................................ 44185 ........................................................................ 44186 ........................................................................ 44187 ........................................................................ 44188 ........................................................................ 44189 ........................................................................ 44190 ........................................................................ 44191 ........................................................................ 44192 ........................................................................ 44193 ........................................................................ 44194 ........................................................................ 44195 ........................................................................ 44196 ........................................................................ 44197 ........................................................................ 44198 ........................................................................ 44199 ........................................................................ 44200 ........................................................................ 44201 ........................................................................ 44202 ........................................................................ 44203 ........................................................................ 44204 ........................................................................ 44205 ........................................................................ 44206 ........................................................................ 44207 ........................................................................ 44208 ........................................................................ 44209 ........................................................................ 44210 ........................................................................ 44211 ........................................................................ 44212 ........................................................................ 44213 ........................................................................ 44214 ........................................................................ 44215 ........................................................................ 44216 ........................................................................ 44217 ........................................................................ 44218 ........................................................................ 44219 ........................................................................ 44220 ........................................................................ 44221 ........................................................................ 44222 ........................................................................ 44223 ........................................................................ 44224 ........................................................................ 44225 ........................................................................ 44226 ........................................................................ 44227 ........................................................................ 44228 ........................................................................ 44229 ........................................................................ 44230 ........................................................................ 44231 ........................................................................ 44232 ........................................................................ 44233 ........................................................................ 44234 ........................................................................ 44235 ........................................................................ 44236 ........................................................................ 44237 ........................................................................ 44238 ........................................................................ 44239 ........................................................................ 44240 ........................................................................ 44241 ........................................................................ 44242 ........................................................................ 44243 ........................................................................ 44244 ........................................................................ 44245 ........................................................................ 44246 ........................................................................ 44247 ........................................................................ 44248 ........................................................................ 44249 ........................................................................ 44250 ........................................................................ 44251 ........................................................................ 44252 ........................................................................ 44253 ........................................................................ 44254 ........................................................................ 44255 ........................................................................ 44256 ........................................................................ 44257 ........................................................................ 44258 ........................................................................ 44259 ........................................................................ 44260 ........................................................................ 44261 ........................................................................ 44262 ........................................................................ 44263 ........................................................................ 44264 ........................................................................ 44265 ........................................................................ 44266 ........................................................................ 44267 ........................................................................ 44268 ........................................................................ 44269 ........................................................................ 44270 ........................................................................ 44271 ........................................................................ 44272 ........................................................................ 44273 ........................................................................ 44274 ........................................................................ 44275 ........................................................................ 44276 ........................................................................ 44277 ........................................................................ 44278 ........................................................................ 44279 ........................................................................ 44280 ........................................................................ 44281 ........................................................................ 44282 ........................................................................ 44283 ........................................................................ 44284 ........................................................................ 44285 ........................................................................ 44286 ........................................................................ 44287 ........................................................................ 44288 ........................................................................ 44289 ........................................................................ 44290 ........................................................................ 44291 ........................................................................ 44292 ........................................................................ 44293 ........................................................................ 44294 ........................................................................ 44295 ........................................................................ 44296 ........................................................................ 44297 ........................................................................ 44298 ........................................................................ 44299 ........................................................................ 44300 ........................................................................ 44301 ........................................................................ 44302 ........................................................................ 44303 ........................................................................ 44304 ........................................................................ 44305 ........................................................................ 44306 ........................................................................ 44307 ........................................................................ 44308 ........................................................................ 44309 ........................................................................ 44310 ........................................................................ 44311 ........................................................................ 44312 ........................................................................ 44313 ........................................................................ 44314 ........................................................................ 44315 ........................................................................ 44316 ........................................................................ 44317 ........................................................................ 44318 ........................................................................ 44319 ........................................................................ 44320 ........................................................................ 44321 ........................................................................ 44322 ........................................................................ 44323 ........................................................................ 44324 ........................................................................ 44325 ........................................................................ 44326 ........................................................................ 44327 ........................................................................ 44328 ........................................................................ 44329 ........................................................................ 44330 ........................................................................ 44331 ........................................................................ 44332 ........................................................................ 44333 ........................................................................ 44334 ........................................................................ 44335 ........................................................................ 44336 ........................................................................ 44337 ........................................................................ 44338 ........................................................................ 44339 ........................................................................ 44340 ........................................................................ 44341 ........................................................................ 44342 ........................................................................ 44343 ........................................................................ 44344 ........................................................................ 44345 ........................................................................ 44346 ........................................................................ 44347 ........................................................................ 44348 ........................................................................ 44349 ........................................................................ 44350 ........................................................................ 44351 ........................................................................ 44352 ........................................................................ 44353 ........................................................................ 44354 ........................................................................ 44355 ........................................................................ 44356 ........................................................................ 44357 ........................................................................ 44358 ........................................................................ 44359 ........................................................................ 44360 ........................................................................ 44361 ........................................................................ 44362 ........................................................................ 44363 ........................................................................ 44364 ........................................................................ 44365 ........................................................................ 44366 ........................................................................ 44367 ........................................................................ 44368 ........................................................................ 44369 ........................................................................ 44370 ........................................................................ 44371 ........................................................................ 44372 ........................................................................ 44373 ........................................................................ 44374 ........................................................................ 44375 ........................................................................ 44376 ........................................................................ 44377 ........................................................................ 44378 ........................................................................ 44379 ........................................................................ 44380 ........................................................................ 44381 ........................................................................ 44382 ........................................................................ 44383 ........................................................................ 44384 ........................................................................ 44385 ........................................................................ 44386 ........................................................................ 44387 ........................................................................ 44388 ........................................................................ 44389 ........................................................................ 44390 ........................................................................ 44391 ........................................................................ 44392 ........................................................................ 44393 ........................................................................ 44394 ........................................................................ 44395 ........................................................................ 44396 ........................................................................ 44397 ........................................................................ 44398 ........................................................................ 44399 ........................................................................ 44400 ........................................................................ 44401 ........................................................................ 44402 ........................................................................ 44403 ........................................................................ 44404 ........................................................................ 44405 ........................................................................ 44406 ........................................................................ 44407 ........................................................................ 44408 ........................................................................ 44409 ........................................................................ 44410 ........................................................................ 44411 ........................................................................ 44412 ........................................................................ 44413 ........................................................................ 44414 ........................................................................ 44415 ........................................................................ 44416 ........................................................................ 44417 ........................................................................ 44418 ........................................................................ 44419 ........................................................................ 44420 ........................................................................ 44421 ........................................................................ 44422 ........................................................................ 44423 ........................................................................ 44424 ........................................................................ 44425 ........................................................................ 44426 ........................................................................ 44427 ........................................................................ 44428 ........................................................................ 44429 ........................................................................ 44430 ........................................................................ 44431 ........................................................................ 44432 ........................................................................ 44433 ........................................................................ 44434 ........................................................................ 44435 ........................................................................ 44436 ........................................................................ 44437 ........................................................................ 44438 ........................................................................ 44439 ........................................................................ 44440 ........................................................................ 44441 ........................................................................ 44442 ........................................................................ 44443 ........................................................................ 44444 ........................................................................ 44445 ........................................................................ 44446 ........................................................................ 44447 ........................................................................ 44448 ........................................................................ 44449 ........................................................................ 44450 ........................................................................ 44451 ........................................................................ 44452 ........................................................................ 44453 ........................................................................ 44454 ........................................................................ 44455 ........................................................................ 44456 ........................................................................ 44457 ........................................................................ 44458 ........................................................................ 44459 ........................................................................ 44460 ........................................................................ 44461 ........................................................................ 44462 ........................................................................ 44463 ........................................................................ 44464 ........................................................................ 44465 ........................................................................ 44466 ........................................................................ 44467 ........................................................................ 44468 ........................................................................ 44469 ........................................................................ 44470 ........................................................................ 44471 ........................................................................ 44472 ........................................................................ 44473 ........................................................................ 44474 ........................................................................ 44475 ........................................................................ 44476 ........................................................................ 44477 ........................................................................ 44478 ........................................................................ 44479 ........................................................................ 44480 ........................................................................ 44481 ........................................................................ 44482 ........................................................................ 44483 ........................................................................ 44484 ........................................................................ 44485 ........................................................................ 44486 ........................................................................ 44487 ........................................................................ 44488 ........................................................................ 44489 ........................................................................ 44490 ........................................................................ 44491 ........................................................................ 44492 ........................................................................ 44493 ........................................................................ 44494 ........................................................................ 44495 ........................................................................ 44496 ........................................................................ 44497 ........................................................................ 44498 ........................................................................ 44499 ........................................................................ 44500 ........................................................................ 44501 ........................................................................ 44502 ........................................................................ 44503 ........................................................................ 44504 ........................................................................ 44505 ........................................................................ 44506 ........................................................................ 44507 ........................................................................ 44508 ........................................................................ 44509 ........................................................................ 44510 ........................................................................ 44511 ........................................................................ 44512 ........................................................................ 44513 ........................................................................ 44514 ........................................................................ 44515 ........................................................................ 44516 ........................................................................ 44517 ........................................................................ 44518 ........................................................................ 44519 ........................................................................ 44520 ........................................................................ 44521 ........................................................................ 44522 ........................................................................ 44523 ........................................................................ 44524 ........................................................................ 44525 ........................................................................ 44526 ........................................................................ 44527 ........................................................................ 44528 ........................................................................ 44529 ........................................................................ 44530 ........................................................................ 44531 ........................................................................ 44532 ........................................................................ 44533 ........................................................................ 44534 ........................................................................ 44535 ........................................................................ 44536 ........................................................................ 44537 ........................................................................ 44538 ........................................................................ 44539 ........................................................................ 44540 ........................................................................ 44541 ........................................................................ 44542 ........................................................................ 44543 ........................................................................ 44544 ........................................................................ 44545 ........................................................................ 44546 ........................................................................ 44547 ........................................................................ 44548 ........................................................................ 44549 ........................................................................ 44550 ........................................................................ 44551 ........................................................................ 44552 ........................................................................ 44553 ........................................................................ 44554 ........................................................................ 44555 ........................................................................ 44556 ........................................................................ 44557 ........................................................................ 44558 ........................................................................ 44559 ........................................................................ 44560 ........................................................................ 44561 ........................................................................ 44562 ........................................................................ 44563 ........................................................................ 44564 ........................................................................ 44565 ........................................................................ 44566 ........................................................................ 44567 ........................................................................ 44568 ........................................................................ 44569 ........................................................................ 44570 ........................................................................ 44571 ........................................................................ 44572 ........................................................................ 44573 ........................................................................ 44574 ........................................................................ 44575 ........................................................................ 44576 ........................................................................ 44577 ........................................................................ 44578 ........................................................................ 44579 ........................................................................ 44580 ........................................................................ 44581 ........................................................................ 44582 ........................................................................ 44583 ........................................................................ 44584 ........................................................................ 44585 ........................................................................ 44586 ........................................................................ 44587 ........................................................................ 44588 ........................................................................ 44589 ........................................................................ 44590 ........................................................................ 44591 ........................................................................ 44592 ........................................................................ 44593 ........................................................................ 44594 ........................................................................ 44595 ........................................................................ 44596 ........................................................................ 44597 ........................................................................ 44598 ........................................................................ 44599 ........................................................................ 44600 ........................................................................ 44601 ........................................................................ 44602 ........................................................................ 44603 ........................................................................ 44604 ........................................................................ 44605 ........................................................................ 44606 ........................................................................ 44607 ........................................................................ 44608 ........................................................................ 44609 ........................................................................ 44610 ........................................................................ 44611 ........................................................................ 44612 ........................................................................ 44613 ........................................................................ 44614 ........................................................................ 44615 ........................................................................ 44616 ........................................................................ 44617 ........................................................................ 44618 ........................................................................ 44619 ........................................................................ 44620 ........................................................................ 44621 ........................................................................ 44622 ........................................................................ 44623 ........................................................................ 44624 ........................................................................ 44625 ........................................................................ 44626 ........................................................................ 44627 ........................................................................ 44628 ........................................................................ 44629 ........................................................................ 44630 ........................................................................ 44631 ........................................................................ 44632 ........................................................................ 44633 ........................................................................ 44634 ........................................................................ 44635 ........................................................................ 44636 ........................................................................ 44637 ........................................................................ 44638 ........................................................................ 44639 ........................................................................ 44640 ........................................................................ 44641 ........................................................................ 44642 ........................................................................ 44643 ........................................................................ 44644 ........................................................................ 44645 ........................................................................ 44646 ........................................................................ 44647 ........................................................................ 44648 ........................................................................ 44649 ........................................................................ 44650 ........................................................................ 44651 ........................................................................ 44652 ........................................................................ 44653 ........................................................................ 44654 ........................................................................ 44655 ........................................................................ 44656 ........................................................................ 44657 ........................................................................ 44658 ........................................................................ 44659 ........................................................................ 44660 ........................................................................ 44661 ........................................................................ 44662 ........................................................................ 44663 ........................................................................ 44664 ........................................................................ 44665 ........................................................................ 44666 ........................................................................ 44667 ........................................................................ 44668 ........................................................................ 44669 ........................................................................ 44670 ........................................................................ 44671 ........................................................................ 44672 ........................................................................ 44673 ........................................................................ 44674 ........................................................................ 44675 ........................................................................ 44676 ........................................................................ 44677 ........................................................................ 44678 ........................................................................ 44679 ........................................................................ 44680 ........................................................................ 44681 ........................................................................ 44682 ........................................................................ 44683 ........................................................................ 44684 ........................................................................ 44685 ........................................................................ 44686 ........................................................................ 44687 ........................................................................ 44688 ........................................................................ 44689 ........................................................................ 44690 ........................................................................ 44691 ........................................................................ 44692 ........................................................................ 44693 ........................................................................ 44694 ........................................................................ 44695 ........................................................................ 44696 ........................................................................ 44697 ........................................................................ 44698 ........................................................................ 44699 ........................................................................ 44700 ........................................................................ 44701 ........................................................................ 44702 ........................................................................ 44703 ........................................................................ 44704 ........................................................................ 44705 ........................................................................ 44706 ........................................................................ 44707 ........................................................................ 44708 ........................................................................ 44709 ........................................................................ 44710 ........................................................................ 44711 ........................................................................ 44712 ........................................................................ 44713 ........................................................................ 44714 ........................................................................ 44715 ........................................................................ 44716 ........................................................................ 44717 ........................................................................ 44718 ........................................................................ 44719 ........................................................................ 44720 ........................................................................ 44721 ........................................................................ 44722 ........................................................................ 44723 ........................................................................ 44724 ........................................................................ 44725 ........................................................................ 44726 ........................................................................ 44727 ........................................................................ 44728 ........................................................................ 44729 ........................................................................ 44730 ........................................................................ 44731 ........................................................................ 44732 ........................................................................ 44733 ........................................................................ 44734 ........................................................................ 44735 ........................................................................ 44736 ........................................................................ 44737 ........................................................................ 44738 ........................................................................ 44739 ........................................................................ 44740 ........................................................................ 44741 ........................................................................ 44742 ........................................................................ 44743 ........................................................................ 44744 ........................................................................ 44745 ........................................................................ 44746 ........................................................................ 44747 ........................................................................ 44748 ........................................................................ 44749 ........................................................................ 44750 ........................................................................ 44751 ........................................................................ 44752 ........................................................................ 44753 ........................................................................ 44754 ........................................................................ 44755 ........................................................................ 44756 ........................................................................ 44757 ........................................................................ 44758 ........................................................................ 44759 ........................................................................ 44760 ........................................................................ 44761 ........................................................................ 44762 ........................................................................ 44763 ........................................................................ 44764 ........................................................................ 44765 ........................................................................ 44766 ........................................................................ 44767 ........................................................................ 44768 ........................................................................ 44769 ........................................................................ 44770 ........................................................................ 44771 ........................................................................ 44772 ........................................................................ 44773 ........................................................................ 44774 ........................................................................ 44775 ........................................................................ 44776 ........................................................................ 44777 ........................................................................ 44778 ........................................................................ 44779 ........................................................................ 44780 ........................................................................ 44781 ........................................................................ 44782 ........................................................................ 44783 ........................................................................ 44784 ........................................................................ 44785 ........................................................................ 44786 ........................................................................ 44787 ........................................................................ 44788 ........................................................................ 44789 ........................................................................ 44790 ........................................................................ 44791 ........................................................................ 44792 ........................................................................ 44793 ........................................................................ 44794 ........................................................................ 44795 ........................................................................ 44796 ........................................................................ 44797 ........................................................................ 44798 ........................................................................ 44799 ........................................................................ 44800 ........................................................................ 44801 ........................................................................ 44802 ........................................................................ 44803 ........................................................................ 44804 ........................................................................ 44805 ........................................................................ 44806 ........................................................................ 44807 ........................................................................ 44808 ........................................................................ 44809 ........................................................................ 44810 ........................................................................ 44811 ........................................................................ 44812 ........................................................................ 44813 ........................................................................ 44814 ........................................................................ 44815 ........................................................................ 44816 ........................................................................ 44817 ........................................................................ 44818 ........................................................................ 44819 ........................................................................ 44820 ........................................................................ 44821 ........................................................................ 44822 ........................................................................ 44823 ........................................................................ 44824 ........................................................................ 44825 ........................................................................ 44826 ........................................................................ 44827 ........................................................................ 44828 ........................................................................ 44829 ........................................................................ 44830 ........................................................................ 44831 ........................................................................ 44832 ........................................................................ 44833 ........................................................................ 44834 ........................................................................ 44835 ........................................................................ 44836 ........................................................................ 44837 ........................................................................ 44838 ........................................................................ 44839 ........................................................................ 44840 ........................................................................ 44841 ........................................................................ 44842 ........................................................................ 44843 ........................................................................ 44844 ........................................................................ 44845 ........................................................................ 44846 ........................................................................ 44847 ........................................................................ 44848 ........................................................................ 44849 ........................................................................ 44850 ........................................................................ 44851 ........................................................................ 44852 ........................................................................ 44853 ........................................................................ 44854 ........................................................................ 44855 ........................................................................ 44856 ........................................................................ 44857 ........................................................................ 44858 ........................................................................ 44859 ........................................................................ 44860 ........................................................................ 44861 ........................................................................ 44862 ........................................................................ 44863 ........................................................................ 44864 ........................................................................ 44865 ........................................................................ 44866 ........................................................................ 44867 ........................................................................ 44868 ........................................................................ 44869 ........................................................................ 44870 ........................................................................ 44871 ........................................................................ 44872 ........................................................................ 44873 ........................................................................ 44874 ........................................................................ 44875 ........................................................................ 44876 ........................................................................ 44877 ........................................................................ 44878 ........................................................................ 44879 ........................................................................ 44880 ........................................................................ 44881 ........................................................................ 44882 ........................................................................ 44883 ........................................................................ 44884 ........................................................................ 44885 ........................................................................ 44886 ........................................................................ 44887 ........................................................................ 44888 ........................................................................ 44889 ........................................................................ 44890 ........................................................................ 44891 ........................................................................ 44892 ........................................................................ 44893 ........................................................................ 44894 ........................................................................ 44895 ........................................................................ 44896 ........................................................................ 44897 ........................................................................ 44898 ........................................................................ 44899 ........................................................................ 44900 ........................................................................ 44901 ........................................................................ 44902 ........................................................................ 44903 ........................................................................ 44904 ........................................................................ 44905 ........................................................................ 44906 ........................................................................ 44907 ........................................................................ 44908 ........................................................................ 44909 ........................................................................ 44910 ........................................................................ 44911 ........................................................................ 44912 ........................................................................ 44913 ........................................................................ 44914 ........................................................................ 44915 ........................................................................ 44916 ........................................................................ 44917 ........................................................................ 44918 ........................................................................ 44919 ........................................................................ 44920 ........................................................................ 44921 ........................................................................ 44922 ........................................................................ 44923 ........................................................................ 44924 ........................................................................ 44925 ........................................................................ 44926 ........................................................................ 44927 ........................................................................ 44928 ........................................................................ 44929 ........................................................................ 44930 ........................................................................ 44931 ........................................................................ 44932 ........................................................................ 44933 ........................................................................ 44934 ........................................................................ 44935 ........................................................................ 44936 ........................................................................ 44937 ........................................................................ 44938 ........................................................................ 44939 ........................................................................ 44940 ........................................................................ 44941 ........................................................................ 44942 ........................................................................ 44943 ........................................................................ 44944 ........................................................................ 44945 ........................................................................ 44946 ........................................................................ 44947 ........................................................................ 44948 ........................................................................ 44949 ........................................................................ 44950 ........................................................................ 44951 ........................................................................ 44952 ........................................................................ 44953 ........................................................................ 44954 ........................................................................ 44955 ........................................................................ 44956 ........................................................................ 44957 ........................................................................ 44958 ........................................................................ 44959 ........................................................................ 44960 ........................................................................ 44961 ........................................................................ 44962 ........................................................................ 44963 ........................................................................ 44964 ........................................................................ 44965 ........................................................................ 44966 ........................................................................ 44967 ........................................................................ 44968 ........................................................................ 44969 ........................................................................ 44970 ........................................................................ 44971 ........................................................................ 44972 ........................................................................ 44973 ........................................................................ 44974 ........................................................................ 44975 ........................................................................ 44976 ........................................................................ 44977 ........................................................................ 44978 ........................................................................ 44979 ........................................................................ 44980 ........................................................................ 44981 ........................................................................ 44982 ........................................................................ 44983 ........................................................................ 44984 ........................................................................ 44985 ........................................................................ 44986 ........................................................................ 44987 ........................................................................ 44988 ........................................................................ 44989 ........................................................................ 44990 ........................................................................ 44991 ........................................................................ 44992 ........................................................................ 44993 ........................................................................ 44994 ........................................................................ 44995 ........................................................................ 44996 ........................................................................ 44997 ........................................................................ 44998 ........................................................................ 44999 ........................................................................ 45000 ........................................................................ 45001 ........................................................................ 45002 ........................................................................ 45003 ........................................................................ 45004 ........................................................................ 45005 ........................................................................ 45006 ........................................................................ 45007 ........................................................................ 45008 ........................................................................ 45009 ........................................................................ 45010 ........................................................................ 45011 ........................................................................ 45012 ........................................................................ 45013 ........................................................................ 45014 ........................................................................ 45015 ........................................................................ 45016 ........................................................................ 45017 ........................................................................ 45018 ........................................................................ 45019 ........................................................................ 45020 ........................................................................ 45021 ........................................................................ 45022 ........................................................................ 45023 ........................................................................ 45024 ........................................................................ 45025 ........................................................................ 45026 ........................................................................ 45027 ........................................................................ 45028 ........................................................................ 45029 ........................................................................ 45030 ........................................................................ 45031 ........................................................................ 45032 ........................................................................ 45033 ........................................................................ 45034 ........................................................................ 45035 ........................................................................ 45036 ........................................................................ 45037 ........................................................................ 45038 ........................................................................ 45039 ........................................................................ 45040 ........................................................................ 45041 ........................................................................ 45042 ........................................................................ 45043 ........................................................................ 45044 ........................................................................ 45045 ........................................................................ 45046 ........................................................................ 45047 ........................................................................ 45048 ........................................................................ 45049 ........................................................................ 45050 ........................................................................ 45051 ........................................................................ 45052 ........................................................................ 45053 ........................................................................ 45054 ........................................................................ 45055 ........................................................................ 45056 ........................................................................ 45057 ........................................................................ 45058 ........................................................................ 45059 ........................................................................ 45060 ........................................................................ 45061 ........................................................................ 45062 ........................................................................ 45063 ........................................................................ 45064 ........................................................................ 45065 ........................................................................ 45066 ........................................................................ 45067 ........................................................................ 45068 ........................................................................ 45069 ........................................................................ 45070 ........................................................................ 45071 ........................................................................ 45072 ........................................................................ 45073 ........................................................................ 45074 ........................................................................ 45075 ........................................................................ 45076 ........................................................................ 45077 ........................................................................ 45078 ........................................................................ 45079 ........................................................................ 45080 ........................................................................ 45081 ........................................................................ 45082 ........................................................................ 45083 ........................................................................ 45084 ........................................................................ 45085 ........................................................................ 45086 ........................................................................ 45087 ........................................................................ 45088 ........................................................................ 45089 ........................................................................ 45090 ........................................................................ 45091 ........................................................................ 45092 ........................................................................ 45093 ........................................................................ 45094 ........................................................................ 45095 ........................................................................ 45096 ........................................................................ 45097 ........................................................................ 45098 ........................................................................ 45099 ........................................................................ 45100 ........................................................................ 45101 ........................................................................ 45102 ........................................................................ 45103 ........................................................................ 45104 ........................................................................ 45105 ........................................................................ 45106 ........................................................................ 45107 ........................................................................ 45108 ........................................................................ 45109 ........................................................................ 45110 ........................................................................ 45111 ........................................................................ 45112 ........................................................................ 45113 ........................................................................ 45114 ........................................................................ 45115 ........................................................................ 45116 ........................................................................ 45117 ........................................................................ 45118 ........................................................................ 45119 ........................................................................ 45120 ........................................................................ 45121 ........................................................................ 45122 ........................................................................ 45123 ........................................................................ 45124 ........................................................................ 45125 ........................................................................ 45126 ........................................................................ 45127 ........................................................................ 45128 ........................................................................ 45129 ........................................................................ 45130 ........................................................................ 45131 ........................................................................ 45132 ........................................................................ 45133 ........................................................................ 45134 ........................................................................ 45135 ........................................................................ 45136 ........................................................................ 45137 ........................................................................ 45138 ........................................................................ 45139 ........................................................................ 45140 ........................................................................ 45141 ........................................................................ 45142 ........................................................................ 45143 ........................................................................ 45144 ........................................................................ 45145 ........................................................................ 45146 ........................................................................ 45147 ........................................................................ 45148 ........................................................................ 45149 ........................................................................ 45150 ........................................................................ 45151 ........................................................................ 45152 ........................................................................ 45153 ........................................................................ 45154 ........................................................................ 45155 ........................................................................ 45156 ........................................................................ 45157 ........................................................................ 45158 ........................................................................ 45159 ........................................................................ 45160 ........................................................................ 45161 ........................................................................ 45162 ........................................................................ 45163 ........................................................................ 45164 ........................................................................ 45165 ........................................................................ 45166 ........................................................................ 45167 ........................................................................ 45168 ........................................................................ 45169 ........................................................................ 45170 ........................................................................ 45171 ........................................................................ 45172 ........................................................................ 45173 ........................................................................ 45174 ........................................................................ 45175 ........................................................................ 45176 ........................................................................ 45177 ........................................................................ 45178 ........................................................................ 45179 ........................................................................ 45180 ........................................................................ 45181 ........................................................................ 45182 ........................................................................ 45183 ........................................................................ 45184 ........................................................................ 45185 ........................................................................ 45186 ........................................................................ 45187 ........................................................................ 45188 ........................................................................ 45189 ........................................................................ 45190 ........................................................................ 45191 ........................................................................ 45192 ........................................................................ 45193 ........................................................................ 45194 ........................................................................ 45195 ........................................................................ 45196 ........................................................................ 45197 ........................................................................ 45198 ........................................................................ 45199 ........................................................................ 45200 ........................................................................ 45201 ........................................................................ 45202 ........................................................................ 45203 ........................................................................ 45204 ........................................................................ 45205 ........................................................................ 45206 ........................................................................ 45207 ........................................................................ 45208 ........................................................................ 45209 ........................................................................ 45210 ........................................................................ 45211 ........................................................................ 45212 ........................................................................ 45213 ........................................................................ 45214 ........................................................................ 45215 ........................................................................ 45216 ........................................................................ 45217 ........................................................................ 45218 ........................................................................ 45219 ........................................................................ 45220 ........................................................................ 45221 ........................................................................ 45222 ........................................................................ 45223 ........................................................................ 45224 ........................................................................ 45225 ........................................................................ 45226 ........................................................................ 45227 ........................................................................ 45228 ........................................................................ 45229 ........................................................................ 45230 ........................................................................ 45231 ........................................................................ 45232 ........................................................................ 45233 ........................................................................ 45234 ........................................................................ 45235 ........................................................................ 45236 ........................................................................ 45237 ........................................................................ 45238 ........................................................................ 45239 ........................................................................ 45240 ........................................................................ 45241 ........................................................................ 45242 ........................................................................ 45243 ........................................................................ 45244 ........................................................................ 45245 ........................................................................ 45246 ........................................................................ 45247 ........................................................................ 45248 ........................................................................ 45249 ........................................................................ 45250 ........................................................................ 45251 ........................................................................ 45252 ........................................................................ 45253 ........................................................................ 45254 ........................................................................ 45255 ........................................................................ 45256 ........................................................................ 45257 ........................................................................ 45258 ........................................................................ 45259 ........................................................................ 45260 ........................................................................ 45261 ........................................................................ 45262 ........................................................................ 45263 ........................................................................ 45264 ........................................................................ 45265 ........................................................................ 45266 ........................................................................ 45267 ........................................................................ 45268 ........................................................................ 45269 ........................................................................ 45270 ........................................................................ 45271 ........................................................................ 45272 ........................................................................ 45273 ........................................................................ 45274 ........................................................................ 45275 ........................................................................ 45276 ........................................................................ 45277 ........................................................................ 45278 ........................................................................ 45279 ........................................................................ 45280 ........................................................................ 45281 ........................................................................ 45282 ........................................................................ 45283 ........................................................................ 45284 ........................................................................ 45285 ........................................................................ 45286 ........................................................................ 45287 ........................................................................ 45288 ........................................................................ 45289 ........................................................................ 45290 ........................................................................ 45291 ........................................................................ 45292 ........................................................................ 45293 ........................................................................ 45294 ........................................................................ 45295 ........................................................................ 45296 ........................................................................ 45297 ........................................................................ 45298 ........................................................................ 45299 ........................................................................ 45300 ........................................................................ 45301 ........................................................................ 45302 ........................................................................ 45303 ........................................................................ 45304 ........................................................................ 45305 ........................................................................ 45306 ........................................................................ 45307 ........................................................................ 45308 ........................................................................ 45309 ........................................................................ 45310 ........................................................................ 45311 ........................................................................ 45312 ........................................................................ 45313 ........................................................................ 45314 ........................................................................ 45315 ........................................................................ 45316 ........................................................................ 45317 ........................................................................ 45318 ........................................................................ 45319 ........................................................................ 45320 ........................................................................ 45321 ........................................................................ 45322 ........................................................................ 45323 ........................................................................ 45324 ........................................................................ 45325 ........................................................................ 45326 ........................................................................ 45327 ........................................................................ 45328 ........................................................................ 45329 ........................................................................ 45330 ........................................................................ 45331 ........................................................................ 45332 ........................................................................ 45333 ........................................................................ 45334 ........................................................................ 45335 ........................................................................ 45336 ........................................................................ 45337 ........................................................................ 45338 ........................................................................ 45339 ........................................................................ 45340 ........................................................................ 45341 ........................................................................ 45342 ........................................................................ 45343 ........................................................................ 45344 ........................................................................ 45345 ........................................................................ 45346 ........................................................................ 45347 ........................................................................ 45348 ........................................................................ 45349 ........................................................................ 45350 ........................................................................ 45351 ........................................................................ 45352 ........................................................................ 45353 ........................................................................ 45354 ........................................................................ 45355 ........................................................................ 45356 ........................................................................ 45357 ........................................................................ 45358 ........................................................................ 45359 ........................................................................ 45360 ........................................................................ 45361 ........................................................................ 45362 ........................................................................ 45363 ........................................................................ 45364 ........................................................................ 45365 ........................................................................ 45366 ........................................................................ 45367 ........................................................................ 45368 ........................................................................ 45369 ........................................................................ 45370 ........................................................................ 45371 ........................................................................ 45372 ........................................................................ 45373 ........................................................................ 45374 ........................................................................ 45375 ........................................................................ 45376 ........................................................................ 45377 ........................................................................ 45378 ........................................................................ 45379 ........................................................................ 45380 ........................................................................ 45381 ........................................................................ 45382 ........................................................................ 45383 ........................................................................ 45384 ........................................................................ 45385 ........................................................................ 45386 ........................................................................ 45387 ........................................................................ 45388 ........................................................................ 45389 ........................................................................ 45390 ........................................................................ 45391 ........................................................................ 45392 ........................................................................ 45393 ........................................................................ 45394 ........................................................................ 45395 ........................................................................ 45396 ........................................................................ 45397 ........................................................................ 45398 ........................................................................ 45399 ........................................................................ 45400 ........................................................................ 45401 ........................................................................ 45402 ........................................................................ 45403 ........................................................................ 45404 ........................................................................ 45405 ........................................................................ 45406 ........................................................................ 45407 ........................................................................ 45408 ........................................................................ 45409 ........................................................................ 45410 ........................................................................ 45411 ........................................................................ 45412 ........................................................................ 45413 ........................................................................ 45414 ........................................................................ 45415 ........................................................................ 45416 ........................................................................ 45417 ........................................................................ 45418 ........................................................................ 45419 ........................................................................ 45420 ........................................................................ 45421 ........................................................................ 45422 ........................................................................ 45423 ........................................................................ 45424 ........................................................................ 45425 ........................................................................ 45426 ........................................................................ 45427 ........................................................................ 45428 ........................................................................ 45429 ........................................................................ 45430 ........................................................................ 45431 ........................................................................ 45432 ........................................................................ 45433 ........................................................................ 45434 ........................................................................ 45435 ........................................................................ 45436 ........................................................................ 45437 ........................................................................ 45438 ........................................................................ 45439 ........................................................................ 45440 ........................................................................ 45441 ........................................................................ 45442 ........................................................................ 45443 ........................................................................ 45444 ........................................................................ 45445 ........................................................................ 45446 ........................................................................ 45447 ........................................................................ 45448 ........................................................................ 45449 ........................................................................ 45450 ........................................................................ 45451 ........................................................................ 45452 ........................................................................ 45453 ........................................................................ 45454 ........................................................................ 45455 ........................................................................ 45456 ........................................................................ 45457 ........................................................................ 45458 ........................................................................ 45459 ........................................................................ 45460 ........................................................................ 45461 ........................................................................ 45462 ........................................................................ 45463 ........................................................................ 45464 ........................................................................ 45465 ........................................................................ 45466 ........................................................................ 45467 ........................................................................ 45468 ........................................................................ 45469 ........................................................................ 45470 ........................................................................ 45471 ........................................................................ 45472 ........................................................................ 45473 ........................................................................ 45474 ........................................................................ 45475 ........................................................................ 45476 ........................................................................ 45477 ........................................................................ 45478 ........................................................................ 45479 ........................................................................ 45480 ........................................................................ 45481 ........................................................................ 45482 ........................................................................ 45483 ........................................................................ 45484 ........................................................................ 45485 ........................................................................ 45486 ........................................................................ 45487 ........................................................................ 45488 ........................................................................ 45489 ........................................................................ 45490 ........................................................................ 45491 ........................................................................ 45492 ........................................................................ 45493 ........................................................................ 45494 ........................................................................ 45495 ........................................................................ 45496 ........................................................................ 45497 ........................................................................ 45498 ........................................................................ 45499 ........................................................................ 45500 ........................................................................ 45501 ........................................................................ 45502 ........................................................................ 45503 ........................................................................ 45504 ........................................................................ 45505 ........................................................................ 45506 ........................................................................ 45507 ........................................................................ 45508 ........................................................................ 45509 ........................................................................ 45510 ........................................................................ 45511 ........................................................................ 45512 ........................................................................ 45513 ........................................................................ 45514 ........................................................................ 45515 ........................................................................ 45516 ........................................................................ 45517 ........................................................................ 45518 ........................................................................ 45519 ........................................................................ 45520 ........................................................................ 45521 ........................................................................ 45522 ........................................................................ 45523 ........................................................................ 45524 ........................................................................ 45525 ........................................................................ 45526 ........................................................................ 45527 ........................................................................ 45528 ........................................................................ 45529 ........................................................................ 45530 ........................................................................ 45531 ........................................................................ 45532 ........................................................................ 45533 ........................................................................ 45534 ........................................................................ 45535 ........................................................................ 45536 ........................................................................ 45537 ........................................................................ 45538 ........................................................................ 45539 ........................................................................ 45540 ........................................................................ 45541 ........................................................................ 45542 ........................................................................ 45543 ........................................................................ 45544 ........................................................................ 45545 ........................................................................ 45546 ........................................................................ 45547 ........................................................................ 45548 ........................................................................ 45549 ........................................................................ 45550 ........................................................................ 45551 ........................................................................ 45552 ........................................................................ 45553 ........................................................................ 45554 ........................................................................ 45555 ........................................................................ 45556 ........................................................................ 45557 ........................................................................ 45558 ........................................................................ 45559 ........................................................................ 45560 ........................................................................ 45561 ........................................................................ 45562 ........................................................................ 45563 ........................................................................ 45564 ........................................................................ 45565 ........................................................................ 45566 ........................................................................ 45567 ........................................................................ 45568 ........................................................................ 45569 ........................................................................ 45570 ........................................................................ 45571 ........................................................................ 45572 ........................................................................ 45573 ........................................................................ 45574 ........................................................................ 45575 ........................................................................ 45576 ........................................................................ 45577 ........................................................................ 45578 ........................................................................ 45579 ........................................................................ 45580 ........................................................................ 45581 ........................................................................ 45582 ........................................................................ 45583 ........................................................................ 45584 ........................................................................ 45585 ........................................................................ 45586 ........................................................................ 45587 ........................................................................ 45588 ........................................................................ 45589 ........................................................................ 45590 ........................................................................ 45591 ........................................................................ 45592 ........................................................................ 45593 ........................................................................ 45594 ........................................................................ 45595 ........................................................................ 45596 ........................................................................ 45597 ........................................................................ 45598 ........................................................................ 45599 ........................................................................ 45600 ........................................................................ 45601 ........................................................................ 45602 ........................................................................ 45603 ........................................................................ 45604 ........................................................................ 45605 ........................................................................ 45606 ........................................................................ 45607 ........................................................................ 45608 ........................................................................ 45609 ........................................................................ 45610 ........................................................................ 45611 ........................................................................ 45612 ........................................................................ 45613 ........................................................................ 45614 ........................................................................ 45615 ........................................................................ 45616 ........................................................................ 45617 ........................................................................ 45618 ........................................................................ 45619 ........................................................................ 45620 ........................................................................ 45621 ........................................................................ 45622 ........................................................................ 45623 ........................................................................ 45624 ........................................................................ 45625 ........................................................................ 45626 ........................................................................ 45627 ........................................................................ 45628 ........................................................................ 45629 ........................................................................ 45630 ........................................................................ 45631 ........................................................................ 45632 ........................................................................ 45633 ........................................................................ 45634 ........................................................................ 45635 ........................................................................ 45636 ........................................................................ 45637 ........................................................................ 45638 ........................................................................ 45639 ........................................................................ 45640 ........................................................................ 45641 ........................................................................ 45642 ........................................................................ 45643 ........................................................................ 45644 ........................................................................ 45645 ........................................................................ 45646 ........................................................................ 45647 ........................................................................ 45648 ........................................................................ 45649 ........................................................................ 45650 ........................................................................ 45651 ........................................................................ 45652 ........................................................................ 45653 ........................................................................ 45654 ........................................................................ 45655 ........................................................................ 45656 ........................................................................ 45657 ........................................................................ 45658 ........................................................................ 45659 ........................................................................ 45660 ........................................................................ 45661 ........................................................................ 45662 ........................................................................ 45663 ........................................................................ 45664 ........................................................................ 45665 ........................................................................ 45666 ........................................................................ 45667 ........................................................................ 45668 ........................................................................ 45669 ........................................................................ 45670 ........................................................................ 45671 ........................................................................ 45672 ........................................................................ 45673 ........................................................................ 45674 ........................................................................ 45675 ........................................................................ 45676 ........................................................................ 45677 ........................................................................ 45678 ........................................................................ 45679 ........................................................................ 45680 ........................................................................ 45681 ........................................................................ 45682 ........................................................................ 45683 ........................................................................ 45684 ........................................................................ 45685 ........................................................................ 45686 ........................................................................ 45687 ........................................................................ 45688 ........................................................................ 45689 ........................................................................ 45690 ........................................................................ 45691 ........................................................................ 45692 ........................................................................ 45693 ........................................................................ 45694 ........................................................................ 45695 ........................................................................ 45696 ........................................................................ 45697 ........................................................................ 45698 ........................................................................ 45699 ........................................................................ 45700 ........................................................................ 45701 ........................................................................ 45702 ........................................................................ 45703 ........................................................................ 45704 ........................................................................ 45705 ........................................................................ 45706 ........................................................................ 45707 ........................................................................ 45708 ........................................................................ 45709 ........................................................................ 45710 ........................................................................ 45711 ........................................................................ 45712 ........................................................................ 45713 ........................................................................ 45714 ........................................................................ 45715 ........................................................................ 45716 ........................................................................ 45717 ........................................................................ 45718 ........................................................................ 45719 ........................................................................ 45720 ........................................................................ 45721 ........................................................................ 45722 ........................................................................ 45723 ........................................................................ 45724 ........................................................................ 45725 ........................................................................ 45726 ........................................................................ 45727 ........................................................................ 45728 ........................................................................ 45729 ........................................................................ 45730 ........................................................................ 45731 ........................................................................ 45732 ........................................................................ 45733 ........................................................................ 45734 ........................................................................ 45735 ........................................................................ 45736 ........................................................................ 45737 ........................................................................ 45738 ........................................................................ 45739 ........................................................................ 45740 ........................................................................ 45741 ........................................................................ 45742 ........................................................................ 45743 ........................................................................ 45744 ........................................................................ 45745 ........................................................................ 45746 ........................................................................ 45747 ........................................................................ 45748 ........................................................................ 45749 ........................................................................ 45750 ........................................................................ 45751 ........................................................................ 45752 ........................................................................ 45753 ........................................................................ 45754 ........................................................................ 45755 ........................................................................ 45756 ........................................................................ 45757 ........................................................................ 45758 ........................................................................ 45759 ........................................................................ 45760 ........................................................................ 45761 ........................................................................ 45762 ........................................................................ 45763 ........................................................................ 45764 ........................................................................ 45765 ........................................................................ 45766 ........................................................................ 45767 ........................................................................ 45768 ........................................................................ 45769 ........................................................................ 45770 ........................................................................ 45771 ........................................................................ 45772 ........................................................................ 45773 ........................................................................ 45774 ........................................................................ 45775 ........................................................................ 45776 ........................................................................ 45777 ........................................................................ 45778 ........................................................................ 45779 ........................................................................ 45780 ........................................................................ 45781 ........................................................................ 45782 ........................................................................ 45783 ........................................................................ 45784 ........................................................................ 45785 ........................................................................ 45786 ........................................................................ 45787 ........................................................................ 45788 ........................................................................ 45789 ........................................................................ 45790 ........................................................................ 45791 ........................................................................ 45792 ........................................................................ 45793 ........................................................................ 45794 ........................................................................ 45795 ........................................................................ 45796 ........................................................................ 45797 ........................................................................ 45798 ........................................................................ 45799 ........................................................................ 45800 ........................................................................ 45801 ........................................................................ 45802 ........................................................................ 45803 ........................................................................ 45804 ........................................................................ 45805 ........................................................................ 45806 ........................................................................ 45807 ........................................................................ 45808 ........................................................................ 45809 ........................................................................ 45810 ........................................................................ 45811 ........................................................................ 45812 ........................................................................ 45813 ........................................................................ 45814 ........................................................................ 45815 ........................................................................ 45816 ........................................................................ 45817 ........................................................................ 45818 ........................................................................ 45819 ........................................................................ 45820 ........................................................................ 45821 ........................................................................ 45822 ........................................................................ 45823 ........................................................................ 45824 ........................................................................ 45825 ........................................................................ 45826 ........................................................................ 45827 ........................................................................ 45828 ........................................................................ 45829 ........................................................................ 45830 ........................................................................ 45831 ........................................................................ 45832 ........................................................................ 45833 ........................................................................ 45834 ........................................................................ 45835 ........................................................................ 45836 ........................................................................ 45837 ........................................................................ 45838 ........................................................................ 45839 ........................................................................ 45840 ........................................................................ 45841 ........................................................................ 45842 ........................................................................ 45843 ........................................................................ 45844 ........................................................................ 45845 ........................................................................ 45846 ........................................................................ 45847 ........................................................................ 45848 ........................................................................ 45849 ........................................................................ 45850 ........................................................................ 45851 ........................................................................ 45852 ........................................................................ 45853 ........................................................................ 45854 ........................................................................ 45855 ........................................................................ 45856 ........................................................................ 45857 ........................................................................ 45858 ........................................................................ 45859 ........................................................................ 45860 ........................................................................ 45861 ........................................................................ 45862 ........................................................................ 45863 ........................................................................ 45864 ........................................................................ 45865 ........................................................................ 45866 ........................................................................ 45867 ........................................................................ 45868 ........................................................................ 45869 ........................................................................ 45870 ........................................................................ 45871 ........................................................................ 45872 ........................................................................ 45873 ........................................................................ 45874 ........................................................................ 45875 ........................................................................ 45876 ........................................................................ 45877 ........................................................................ 45878 ........................................................................ 45879 ........................................................................ 45880 ........................................................................ 45881 ........................................................................ 45882 ........................................................................ 45883 ........................................................................ 45884 ........................................................................ 45885 ........................................................................ 45886 ........................................................................ 45887 ........................................................................ 45888 ........................................................................ 45889 ........................................................................ 45890 ........................................................................ 45891 ........................................................................ 45892 ........................................................................ 45893 ........................................................................ 45894 ........................................................................ 45895 ........................................................................ 45896 ........................................................................ 45897 ........................................................................ 45898 ........................................................................ 45899 ........................................................................ 45900 ........................................................................ 45901 ........................................................................ 45902 ........................................................................ 45903 ........................................................................ 45904 ........................................................................ 45905 ........................................................................ 45906 ........................................................................ 45907 ........................................................................ 45908 ........................................................................ 45909 ........................................................................ 45910 ........................................................................ 45911 ........................................................................ 45912 ........................................................................ 45913 ........................................................................ 45914 ........................................................................ 45915 ........................................................................ 45916 ........................................................................ 45917 ........................................................................ 45918 ........................................................................ 45919 ........................................................................ 45920 ........................................................................ 45921 ........................................................................ 45922 ........................................................................ 45923 ........................................................................ 45924 ........................................................................ 45925 ........................................................................ 45926 ........................................................................ 45927 ........................................................................ 45928 ........................................................................ 45929 ........................................................................ 45930 ........................................................................ 45931 ........................................................................ 45932 ........................................................................ 45933 ........................................................................ 45934 ........................................................................ 45935 ........................................................................ 45936 ........................................................................ 45937 ........................................................................ 45938 ........................................................................ 45939 ........................................................................ 45940 ........................................................................ 45941 ........................................................................ 45942 ........................................................................ 45943 ........................................................................ 45944 ........................................................................ 45945 ........................................................................ 45946 ........................................................................ 45947 ........................................................................ 45948 ........................................................................ 45949 ........................................................................ 45950 ........................................................................ 45951 ........................................................................ 45952 ........................................................................ 45953 ........................................................................ 45954 ........................................................................ 45955 ........................................................................ 45956 ........................................................................ 45957 ........................................................................ 45958 ........................................................................ 45959 ........................................................................ 45960 ........................................................................ 45961 ........................................................................ 45962 ........................................................................ 45963 ........................................................................ 45964 ........................................................................ 45965 ........................................................................ 45966 ........................................................................ 45967 ........................................................................ 45968 ........................................................................ 45969 ........................................................................ 45970 ........................................................................ 45971 ........................................................................ 45972 ........................................................................ 45973 ........................................................................ 45974 ........................................................................ 45975 ........................................................................ 45976 ........................................................................ 45977 ........................................................................ 45978 ........................................................................ 45979 ........................................................................ 45980 ........................................................................ 45981 ........................................................................ 45982 ........................................................................ 45983 ........................................................................ 45984 ........................................................................ 45985 ........................................................................ 45986 ........................................................................ 45987 ........................................................................ 45988 ........................................................................ 45989 ........................................................................ 45990 ........................................................................ 45991 ........................................................................ 45992 ........................................................................ 45993 ........................................................................ 45994 ........................................................................ 45995 ........................................................................ 45996 ........................................................................ 45997 ........................................................................ 45998 ........................................................................ 45999 ........................................................................ 46000 ........................................................................ 46001 ........................................................................ 46002 ........................................................................ 46003 ........................................................................ 46004 ........................................................................ 46005 ........................................................................ 46006 ........................................................................ 46007 ........................................................................ 46008 ........................................................................ 46009 ........................................................................ 46010 ........................................................................ 46011 ........................................................................ 46012 ........................................................................ 46013 ........................................................................ 46014 ........................................................................ 46015 ........................................................................ 46016 ........................................................................ 46017 ........................................................................ 46018 ........................................................................ 46019 ........................................................................ 46020 ........................................................................ 46021 ........................................................................ 46022 ........................................................................ 46023 ........................................................................ 46024 ........................................................................ 46025 ........................................................................ 46026 ........................................................................ 46027 ........................................................................ 46028 ........................................................................ 46029 ........................................................................ 46030 ........................................................................ 46031 ........................................................................ 46032 ........................................................................ 46033 ........................................................................ 46034 ........................................................................ 46035 ........................................................................ 46036 ........................................................................ 46037 ........................................................................ 46038 ........................................................................ 46039 ........................................................................ 46040 ........................................................................ 46041 ........................................................................ 46042 ........................................................................ 46043 ........................................................................ 46044 ........................................................................ 46045 ........................................................................ 46046 ........................................................................ 46047 ........................................................................ 46048 ........................................................................ 46049 ........................................................................ 46050 ........................................................................ 46051 ........................................................................ 46052 ........................................................................ 46053 ........................................................................ 46054 ........................................................................ 46055 ........................................................................ 46056 ........................................................................ 46057 ........................................................................ 46058 ........................................................................ 46059 ........................................................................ 46060 ........................................................................ 46061 ........................................................................ 46062 ........................................................................ 46063 ........................................................................ 46064 ........................................................................ 46065 ........................................................................ 46066 ........................................................................ 46067 ........................................................................ 46068 ........................................................................ 46069 ........................................................................ 46070 ........................................................................ 46071 ........................................................................ 46072 ........................................................................ 46073 ........................................................................ 46074 ........................................................................ 46075 ........................................................................ 46076 ........................................................................ 46077 ........................................................................ 46078 ........................................................................ 46079 ........................................................................ 46080 ........................................................................ 46081 ........................................................................ 46082 ........................................................................ 46083 ........................................................................ 46084 ........................................................................ 46085 ........................................................................ 46086 ........................................................................ 46087 ........................................................................ 46088 ........................................................................ 46089 ........................................................................ 46090 ........................................................................ 46091 ........................................................................ 46092 ........................................................................ 46093 ........................................................................ 46094 ........................................................................ 46095 ........................................................................ 46096 ........................................................................ 46097 ........................................................................ 46098 ........................................................................ 46099 ........................................................................ 46100 ........................................................................ 46101 ........................................................................ 46102 ........................................................................ 46103 ........................................................................ 46104 ........................................................................ 46105 ........................................................................ 46106 ........................................................................ 46107 ........................................................................ 46108 ........................................................................ 46109 ........................................................................ 46110 ........................................................................ 46111 ........................................................................ 46112 ........................................................................ 46113 ........................................................................ 46114 ........................................................................ 46115 ........................................................................ 46116 ........................................................................ 46117 ........................................................................ 46118 ........................................................................ 46119 ........................................................................ 46120 ........................................................................ 46121 ........................................................................ 46122 ........................................................................ 46123 ........................................................................ 46124 ........................................................................ 46125 ........................................................................ 46126 ........................................................................ 46127 ........................................................................ 46128 ........................................................................ 46129 ........................................................................ 46130 ........................................................................ 46131 ........................................................................ 46132 ........................................................................ 46133 ........................................................................ 46134 ........................................................................ 46135 ........................................................................ 46136 ........................................................................ 46137 ........................................................................ 46138 ........................................................................ 46139 ........................................................................ 46140 ........................................................................ 46141 ........................................................................ 46142 ........................................................................ 46143 ........................................................................ 46144 ........................................................................ 46145 ........................................................................ 46146 ........................................................................ 46147 ........................................................................ 46148 ........................................................................ 46149 ........................................................................ 46150 ........................................................................ 46151 ........................................................................ 46152 ........................................................................ 46153 ........................................................................ 46154 ........................................................................ 46155 ........................................................................ 46156 ........................................................................ 46157 ........................................................................ 46158 ........................................................................ 46159 ........................................................................ 46160 ........................................................................ 46161 ........................................................................ 46162 ........................................................................ 46163 ........................................................................ 46164 ........................................................................ 46165 ........................................................................ 46166 ........................................................................ 46167 ........................................................................ 46168 ........................................................................ 46169 ........................................................................ 46170 ........................................................................ 46171 ........................................................................ 46172 ........................................................................ 46173 ........................................................................ 46174 ........................................................................ 46175 ........................................................................ 46176 ........................................................................ 46177 ........................................................................ 46178 ........................................................................ 46179 ........................................................................ 46180 ........................................................................ 46181 ........................................................................ 46182 ........................................................................ 46183 ........................................................................ 46184 ........................................................................ 46185 ........................................................................ 46186 ........................................................................ 46187 ........................................................................ 46188 ........................................................................ 46189 ........................................................................ 46190 ........................................................................ 46191 ........................................................................ 46192 ........................................................................ 46193 ........................................................................ 46194 ........................................................................ 46195 ........................................................................ 46196 ........................................................................ 46197 ........................................................................ 46198 ........................................................................ 46199 ........................................................................ 46200 ........................................................................ 46201 ........................................................................ 46202 ........................................................................ 46203 ........................................................................ 46204 ........................................................................ 46205 ........................................................................ 46206 ........................................................................ 46207 ........................................................................ 46208 ........................................................................ 46209 ........................................................................ 46210 ........................................................................ 46211 ........................................................................ 46212 ........................................................................ 46213 ........................................................................ 46214 ........................................................................ 46215 ........................................................................ 46216 ........................................................................ 46217 ........................................................................ 46218 ........................................................................ 46219 ........................................................................ 46220 ........................................................................ 46221 ........................................................................ 46222 ........................................................................ 46223 ........................................................................ 46224 ........................................................................ 46225 ........................................................................ 46226 ........................................................................ 46227 ........................................................................ 46228 ........................................................................ 46229 ........................................................................ 46230 ........................................................................ 46231 ........................................................................ 46232 ........................................................................ 46233 ........................................................................ 46234 ........................................................................ 46235 ........................................................................ 46236 ........................................................................ 46237 ........................................................................ 46238 ........................................................................ 46239 ........................................................................ 46240 ........................................................................ 46241 ........................................................................ 46242 ........................................................................ 46243 ........................................................................ 46244 ........................................................................ 46245 ........................................................................ 46246 ........................................................................ 46247 ........................................................................ 46248 ........................................................................ 46249 ........................................................................ 46250 ........................................................................ 46251 ........................................................................ 46252 ........................................................................ 46253 ........................................................................ 46254 ........................................................................ 46255 ........................................................................ 46256 ........................................................................ 46257 ........................................................................ 46258 ........................................................................ 46259 ........................................................................ 46260 ........................................................................ 46261 ........................................................................ 46262 ........................................................................ 46263 ........................................................................ 46264 ........................................................................ 46265 ........................................................................ 46266 ........................................................................ 46267 ........................................................................ 46268 ........................................................................ 46269 ........................................................................ 46270 ........................................................................ 46271 ........................................................................ 46272 ........................................................................ 46273 ........................................................................ 46274 ........................................................................ 46275 ........................................................................ 46276 ........................................................................ 46277 ........................................................................ 46278 ........................................................................ 46279 ........................................................................ 46280 ........................................................................ 46281 ........................................................................ 46282 ........................................................................ 46283 ........................................................................ 46284 ........................................................................ 46285 ........................................................................ 46286 ........................................................................ 46287 ........................................................................ 46288 ........................................................................ 46289 ........................................................................ 46290 ........................................................................ 46291 ........................................................................ 46292 ........................................................................ 46293 ........................................................................ 46294 ........................................................................ 46295 ........................................................................ 46296 ........................................................................ 46297 ........................................................................ 46298 ........................................................................ 46299 ........................................................................ 46300 ........................................................................ 46301 ........................................................................ 46302 ........................................................................ 46303 ........................................................................ 46304 ........................................................................ 46305 ........................................................................ 46306 ........................................................................ 46307 ........................................................................ 46308 ........................................................................ 46309 ........................................................................ 46310 ........................................................................ 46311 ........................................................................ 46312 ........................................................................ 46313 ........................................................................ 46314 ........................................................................ 46315 ........................................................................ 46316 ........................................................................ 46317 ........................................................................ 46318 ........................................................................ 46319 ........................................................................ 46320 ........................................................................ 46321 ........................................................................ 46322 ........................................................................ 46323 ........................................................................ 46324 ........................................................................ 46325 ........................................................................ 46326 ........................................................................ 46327 ........................................................................ 46328 ........................................................................ 46329 ........................................................................ 46330 ........................................................................ 46331 ........................................................................ 46332 ........................................................................ 46333 ........................................................................ 46334 ........................................................................ 46335 ........................................................................ 46336 ........................................................................ 46337 ........................................................................ 46338 ........................................................................ 46339 ........................................................................ 46340 ........................................................................ 46341 ........................................................................ 46342 ........................................................................ 46343 ........................................................................ 46344 ........................................................................ 46345 ........................................................................ 46346 ........................................................................ 46347 ........................................................................ 46348 ........................................................................ 46349 ........................................................................ 46350 ........................................................................ 46351 ........................................................................ 46352 ........................................................................ 46353 ........................................................................ 46354 ........................................................................ 46355 ........................................................................ 46356 ........................................................................ 46357 ........................................................................ 46358 ........................................................................ 46359 ........................................................................ 46360 ........................................................................ 46361 ........................................................................ 46362 ........................................................................ 46363 ........................................................................ 46364 ........................................................................ 46365 ........................................................................ 46366 ........................................................................ 46367 ........................................................................ 46368 ........................................................................ 46369 ........................................................................ 46370 ........................................................................ 46371 ........................................................................ 46372 ........................................................................ 46373 ........................................................................ 46374 ........................................................................ 46375 ........................................................................ 46376 ........................................................................ 46377 ........................................................................ 46378 ........................................................................ 46379 ........................................................................ 46380 ........................................................................ 46381 ........................................................................ 46382 ........................................................................ 46383 ........................................................................ 46384 ........................................................................ 46385 ........................................................................ 46386 ........................................................................ 46387 ........................................................................ 46388 ........................................................................ 46389 ........................................................................ 46390 ........................................................................ 46391 ........................................................................ 46392 ........................................................................ 46393 ........................................................................ 46394 ........................................................................ 46395 ........................................................................ 46396 ........................................................................ 46397 ........................................................................ 46398 ........................................................................ 46399 ........................................................................ 46400 ........................................................................ 46401 ........................................................................ 46402 ........................................................................ 46403 ........................................................................ 46404 ........................................................................ 46405 ........................................................................ 46406 ........................................................................ 46407 ........................................................................ 46408 ........................................................................ 46409 ........................................................................ 46410 ........................................................................ 46411 ........................................................................ 46412 ........................................................................ 46413 ........................................................................ 46414 ........................................................................ 46415 ........................................................................ 46416 ........................................................................ 46417 ........................................................................ 46418 ........................................................................ 46419 ........................................................................ 46420 ........................................................................ 46421 ........................................................................ 46422 ........................................................................ 46423 ........................................................................ 46424 ........................................................................ 46425 ........................................................................ 46426 ........................................................................ 46427 ........................................................................ 46428 ........................................................................ 46429 ........................................................................ 46430 ........................................................................ 46431 ........................................................................ 46432 ........................................................................ 46433 ........................................................................ 46434 ........................................................................ 46435 ........................................................................ 46436 ........................................................................ 46437 ........................................................................ 46438 ........................................................................ 46439 ........................................................................ 46440 ........................................................................ 46441 ........................................................................ 46442 ........................................................................ 46443 ........................................................................ 46444 ........................................................................ 46445 ........................................................................ 46446 ........................................................................ 46447 ........................................................................ 46448 ........................................................................ 46449 ........................................................................ 46450 ........................................................................ 46451 ........................................................................ 46452 ........................................................................ 46453 ........................................................................ 46454 ........................................................................ 46455 ........................................................................ 46456 ........................................................................ 46457 ........................................................................ 46458 ........................................................................ 46459 ........................................................................ 46460 ........................................................................ 46461 ........................................................................ 46462 ........................................................................ 46463 ........................................................................ 46464 ........................................................................ 46465 ........................................................................ 46466 ........................................................................ 46467 ........................................................................ 46468 ........................................................................ 46469 ........................................................................ 46470 ........................................................................ 46471 ........................................................................ 46472 ........................................................................ 46473 ........................................................................ 46474 ........................................................................ 46475 ........................................................................ 46476 ........................................................................ 46477 ........................................................................ 46478 ........................................................................ 46479 ........................................................................ 46480 ........................................................................ 46481 ........................................................................ 46482 ........................................................................ 46483 ........................................................................ 46484 ........................................................................ 46485 ........................................................................ 46486 ........................................................................ 46487 ........................................................................ 46488 ........................................................................ 46489 ........................................................................ 46490 ........................................................................ 46491 ........................................................................ 46492 ........................................................................ 46493 ........................................................................ 46494 ........................................................................ 46495 ........................................................................ 46496 ........................................................................ 46497 ........................................................................ 46498 ........................................................................ 46499 ........................................................................ 46500 ........................................................................ 46501 ........................................................................ 46502 ........................................................................ 46503 ........................................................................ 46504 ........................................................................ 46505 ........................................................................ 46506 ........................................................................ 46507 ........................................................................ 46508 ........................................................................ 46509 ........................................................................ 46510 ........................................................................ 46511 ........................................................................ 46512 ........................................................................ 46513 ........................................................................ 46514 ........................................................................ 46515 ........................................................................ 46516 ........................................................................ 46517 ........................................................................ 46518 ........................................................................ 46519 ........................................................................ 46520 ........................................................................ 46521 ........................................................................ 46522 ........................................................................ 46523 ........................................................................ 46524 ........................................................................ 46525 ........................................................................ 46526 ........................................................................ 46527 ........................................................................ 46528 ........................................................................ 46529 ........................................................................ 46530 ........................................................................ 46531 ........................................................................ 46532 ........................................................................ 46533 ........................................................................ 46534 ........................................................................ 46535 ........................................................................ 46536 ........................................................................ 46537 ........................................................................ 46538 ........................................................................ 46539 ........................................................................ 46540 ........................................................................ 46541 ........................................................................ 46542 ........................................................................ 46543 ........................................................................ 46544 ........................................................................ 46545 ........................................................................ 46546 ........................................................................ 46547 ........................................................................ 46548 ........................................................................ 46549 ........................................................................ 46550 ........................................................................ 46551 ........................................................................ 46552 ........................................................................ 46553 ........................................................................ 46554 ........................................................................ 46555 ........................................................................ 46556 ........................................................................ 46557 ........................................................................ 46558 ........................................................................ 46559 ........................................................................ 46560 ........................................................................ 46561 ........................................................................ 46562 ........................................................................ 46563 ........................................................................ 46564 ........................................................................ 46565 ........................................................................ 46566 ........................................................................ 46567 ........................................................................ 46568 ........................................................................ 46569 ........................................................................ 46570 ........................................................................ 46571 ........................................................................ 46572 ........................................................................ 46573 ........................................................................ 46574 ........................................................................ 46575 ........................................................................ 46576 ........................................................................ 46577 ........................................................................ 46578 ........................................................................ 46579 ........................................................................ 46580 ........................................................................ 46581 ........................................................................ 46582 ........................................................................ 46583 ........................................................................ 46584 ........................................................................ 46585 ........................................................................ 46586 ........................................................................ 46587 ........................................................................ 46588 ........................................................................ 46589 ........................................................................ 46590 ........................................................................ 46591 ........................................................................ 46592 ........................................................................ 46593 ........................................................................ 46594 ........................................................................ 46595 ........................................................................ 46596 ........................................................................ 46597 ........................................................................ 46598 ........................................................................ 46599 ........................................................................ 46600 ........................................................................ 46601 ........................................................................ 46602 ........................................................................ 46603 ........................................................................ 46604 ........................................................................ 46605 ........................................................................ 46606 ........................................................................ 46607 ........................................................................ 46608 ........................................................................ 46609 ........................................................................ 46610 ........................................................................ 46611 ........................................................................ 46612 ........................................................................ 46613 ........................................................................ 46614 ........................................................................ 46615 ........................................................................ 46616 ........................................................................ 46617 ........................................................................ 46618 ........................................................................ 46619 ........................................................................ 46620 ........................................................................ 46621 ........................................................................ 46622 ........................................................................ 46623 ........................................................................ 46624 ........................................................................ 46625 ........................................................................ 46626 ........................................................................ 46627 ........................................................................ 46628 ........................................................................ 46629 ........................................................................ 46630 ........................................................................ 46631 ........................................................................ 46632 ........................................................................ 46633 ........................................................................ 46634 ........................................................................ 46635 ........................................................................ 46636 ........................................................................ 46637 ........................................................................ 46638 ........................................................................ 46639 ........................................................................ 46640 ........................................................................ 46641 ........................................................................ 46642 ........................................................................ 46643 ........................................................................ 46644 ........................................................................ 46645 ........................................................................ 46646 ........................................................................ 46647 ........................................................................ 46648 ........................................................................ 46649 ........................................................................ 46650 ........................................................................ 46651 ........................................................................ 46652 ........................................................................ 46653 ........................................................................ 46654 ........................................................................ 46655 ........................................................................ 46656 ........................................................................ 46657 ........................................................................ 46658 ........................................................................ 46659 ........................................................................ 46660 ........................................................................ 46661 ........................................................................ 46662 ........................................................................ 46663 ........................................................................ 46664 ........................................................................ 46665 ........................................................................ 46666 ........................................................................ 46667 ........................................................................ 46668 ........................................................................ 46669 ........................................................................ 46670 ........................................................................ 46671 ........................................................................ 46672 ........................................................................ 46673 ........................................................................ 46674 ........................................................................ 46675 ........................................................................ 46676 ........................................................................ 46677 ........................................................................ 46678 ........................................................................ 46679 ........................................................................ 46680 ........................................................................ 46681 ........................................................................ 46682 ........................................................................ 46683 ........................................................................ 46684 ........................................................................ 46685 ........................................................................ 46686 ........................................................................ 46687 ........................................................................ 46688 ........................................................................ 46689 ........................................................................ 46690 ........................................................................ 46691 ........................................................................ 46692 ........................................................................ 46693 ........................................................................ 46694 ........................................................................ 46695 ........................................................................ 46696 ........................................................................ 46697 ........................................................................ 46698 ........................................................................ 46699 ........................................................................ 46700 ........................................................................ 46701 ........................................................................ 46702 ........................................................................ 46703 ........................................................................ 46704 ........................................................................ 46705 ........................................................................ 46706 ........................................................................ 46707 ........................................................................ 46708 ........................................................................ 46709 ........................................................................ 46710 ........................................................................ 46711 ........................................................................ 46712 ........................................................................ 46713 ........................................................................ 46714 ........................................................................ 46715 ........................................................................ 46716 ........................................................................ 46717 ........................................................................ 46718 ........................................................................ 46719 ........................................................................ 46720 ........................................................................ 46721 ........................................................................ 46722 ........................................................................ 46723 ........................................................................ 46724 ........................................................................ 46725 ........................................................................ 46726 ........................................................................ 46727 ........................................................................ 46728 ........................................................................ 46729 ........................................................................ 46730 ........................................................................ 46731 ........................................................................ 46732 ........................................................................ 46733 ........................................................................ 46734 ........................................................................ 46735 ........................................................................ 46736 ........................................................................ 46737 ........................................................................ 46738 ........................................................................ 46739 ........................................................................ 46740 ........................................................................ 46741 ........................................................................ 46742 ........................................................................ 46743 ........................................................................ 46744 ........................................................................ 46745 ........................................................................ 46746 ........................................................................ 46747 ........................................................................ 46748 ........................................................................ 46749 ........................................................................ 46750 ........................................................................ 46751 ........................................................................ 46752 ........................................................................ 46753 ........................................................................ 46754 ........................................................................ 46755 ........................................................................ 46756 ........................................................................ 46757 ........................................................................ 46758 ........................................................................ 46759 ........................................................................ 46760 ........................................................................ 46761 ........................................................................ 46762 ........................................................................ 46763 ........................................................................ 46764 ........................................................................ 46765 ........................................................................ 46766 ........................................................................ 46767 ........................................................................ 46768 ........................................................................ 46769 ........................................................................ 46770 ........................................................................ 46771 ........................................................................ 46772 ........................................................................ 46773 ........................................................................ 46774 ........................................................................ 46775 ........................................................................ 46776 ........................................................................ 46777 ........................................................................ 46778 ........................................................................ 46779 ........................................................................ 46780 ........................................................................ 46781 ........................................................................ 46782 ........................................................................ 46783 ........................................................................ 46784 ........................................................................ 46785 ........................................................................ 46786 ........................................................................ 46787 ........................................................................ 46788 ........................................................................ 46789 ........................................................................ 46790 ........................................................................ 46791 ........................................................................ 46792 ........................................................................ 46793 ........................................................................ 46794 ........................................................................ 46795 ........................................................................ 46796 ........................................................................ 46797 ........................................................................ 46798 ........................................................................ 46799 ........................................................................ 46800 ........................................................................ 46801 ........................................................................ 46802 ........................................................................ 46803 ........................................................................ 46804 ........................................................................ 46805 ........................................................................ 46806 ........................................................................ 46807 ........................................................................ 46808 ........................................................................ 46809 ........................................................................ 46810 ........................................................................ 46811 ........................................................................ 46812 ........................................................................ 46813 ........................................................................ 46814 ........................................................................ 46815 ........................................................................ 46816 ........................................................................ 46817 ........................................................................ 46818 ........................................................................ 46819 ........................................................................ 46820 ........................................................................ 46821 ........................................................................ 46822 ........................................................................ 46823 ........................................................................ 46824 ........................................................................ 46825 ........................................................................ 46826 ........................................................................ 46827 ........................................................................ 46828 ........................................................................ 46829 ........................................................................ 46830 ........................................................................ 46831 ........................................................................ 46832 ........................................................................ 46833 ........................................................................ 46834 ........................................................................ 46835 ........................................................................ 46836 ........................................................................ 46837 ........................................................................ 46838 ........................................................................ 46839 ........................................................................ 46840 ........................................................................ 46841 ........................................................................ 46842 ........................................................................ 46843 ........................................................................ 46844 ........................................................................ 46845 ........................................................................ 46846 ........................................................................ 46847 ........................................................................ 46848 ........................................................................ 46849 ........................................................................ 46850 ........................................................................ 46851 ........................................................................ 46852 ........................................................................ 46853 ........................................................................ 46854 ........................................................................ 46855 ........................................................................ 46856 ........................................................................ 46857 ........................................................................ 46858 ........................................................................ 46859 ........................................................................ 46860 ........................................................................ 46861 ........................................................................ 46862 ........................................................................ 46863 ........................................................................ 46864 ........................................................................ 46865 ........................................................................ 46866 ........................................................................ 46867 ........................................................................ 46868 ........................................................................ 46869 ........................................................................ 46870 ........................................................................ 46871 ........................................................................ 46872 ........................................................................ 46873 ........................................................................ 46874 ........................................................................ 46875 ........................................................................ 46876 ........................................................................ 46877 ........................................................................ 46878 ........................................................................ 46879 ........................................................................ 46880 ........................................................................ 46881 ........................................................................ 46882 ........................................................................ 46883 ........................................................................ 46884 ........................................................................ 46885 ........................................................................ 46886 ........................................................................ 46887 ........................................................................ 46888 ........................................................................ 46889 ........................................................................ 46890 ........................................................................ 46891 ........................................................................ 46892 ........................................................................ 46893 ........................................................................ 46894 ........................................................................ 46895 ........................................................................ 46896 ........................................................................ 46897 ........................................................................ 46898 ........................................................................ 46899 ........................................................................ 46900 ........................................................................ 46901 ........................................................................ 46902 ........................................................................ 46903 ........................................................................ 46904 ........................................................................ 46905 ........................................................................ 46906 ........................................................................ 46907 ........................................................................ 46908 ........................................................................ 46909 ........................................................................ 46910 ........................................................................ 46911 ........................................................................ 46912 ........................................................................ 46913 ........................................................................ 46914 ........................................................................ 46915 ........................................................................ 46916 ........................................................................ 46917 ........................................................................ 46918 ........................................................................ 46919 ........................................................................ 46920 ........................................................................ 46921 ........................................................................ 46922 ........................................................................ 46923 ........................................................................ 46924 ........................................................................ 46925 ........................................................................ 46926 ........................................................................ 46927 ........................................................................ 46928 ........................................................................ 46929 ........................................................................ 46930 ........................................................................ 46931 ........................................................................ 46932 ........................................................................ 46933 ........................................................................ 46934 ........................................................................ 46935 ........................................................................ 46936 ........................................................................ 46937 ........................................................................ 46938 ........................................................................ 46939 ........................................................................ 46940 ........................................................................ 46941 ........................................................................ 46942 ........................................................................ 46943 ........................................................................ 46944 ........................................................................ 46945 ........................................................................ 46946 ........................................................................ 46947 ........................................................................ 46948 ........................................................................ 46949 ........................................................................ 46950 ........................................................................ 46951 ........................................................................ 46952 ........................................................................ 46953 ........................................................................ 46954 ........................................................................ 46955 ........................................................................ 46956 ........................................................................ 46957 ........................................................................ 46958 ........................................................................ 46959 ........................................................................ 46960 ........................................................................ 46961 ........................................................................ 46962 ........................................................................ 46963 ........................................................................ 46964 ........................................................................ 46965 ........................................................................ 46966 ........................................................................ 46967 ........................................................................ 46968 ........................................................................ 46969 ........................................................................ 46970 ........................................................................ 46971 ........................................................................ 46972 ........................................................................ 46973 ........................................................................ 46974 ........................................................................ 46975 ........................................................................ 46976 ........................................................................ 46977 ........................................................................ 46978 ........................................................................ 46979 ........................................................................ 46980 ........................................................................ 46981 ........................................................................ 46982 ........................................................................ 46983 ........................................................................ 46984 ........................................................................ 46985 ........................................................................ 46986 ........................................................................ 46987 ........................................................................ 46988 ........................................................................ 46989 ........................................................................ 46990 ........................................................................ 46991 ........................................................................ 46992 ........................................................................ 46993 ........................................................................ 46994 ........................................................................ 46995 ........................................................................ 46996 ........................................................................ 46997 ........................................................................ 46998 ........................................................................ 46999 ........................................................................ 47000 ........................................................................ 47001 ........................................................................ 47002 ........................................................................ 47003 ........................................................................ 47004 ........................................................................ 47005 ........................................................................ 47006 ........................................................................ 47007 ........................................................................ 47008 ........................................................................ 47009 ........................................................................ 47010 ........................................................................ 47011 ........................................................................ 47012 ........................................................................ 47013 ........................................................................ 47014 ........................................................................ 47015 ........................................................................ 47016 ........................................................................ 47017 ........................................................................ 47018 ........................................................................ 47019 ........................................................................ 47020 ........................................................................ 47021 ........................................................................ 47022 ........................................................................ 47023 ........................................................................ 47024 ........................................................................ 47025 ........................................................................ 47026 ........................................................................ 47027 ........................................................................ 47028 ........................................................................ 47029 ........................................................................ 47030 ........................................................................ 47031 ........................................................................ 47032 ........................................................................ 47033 ........................................................................ 47034 ........................................................................ 47035 ........................................................................ 47036 ........................................................................ 47037 ........................................................................ 47038 ........................................................................ 47039 ........................................................................ 47040 ........................................................................ 47041 ........................................................................ 47042 ........................................................................ 47043 ........................................................................ 47044 ........................................................................ 47045 ........................................................................ 47046 ........................................................................ 47047 ........................................................................ 47048 ........................................................................ 47049 ........................................................................ 47050 ........................................................................ 47051 ........................................................................ 47052 ........................................................................ 47053 ........................................................................ 47054 ........................................................................ 47055 ........................................................................ 47056 ........................................................................ 47057 ........................................................................ 47058 ........................................................................ 47059 ........................................................................ 47060 ........................................................................ 47061 ........................................................................ 47062 ........................................................................ 47063 ........................................................................ 47064 ........................................................................ 47065 ........................................................................ 47066 ........................................................................ 47067 ........................................................................ 47068 ........................................................................ 47069 ........................................................................ 47070 ........................................................................ 47071 ........................................................................ 47072 ........................................................................ 47073 ........................................................................ 47074 ........................................................................ 47075 ........................................................................ 47076 ........................................................................ 47077 ........................................................................ 47078 ........................................................................ 47079 ........................................................................ 47080 ........................................................................ 47081 ........................................................................ 47082 ........................................................................ 47083 ........................................................................ 47084 ........................................................................ 47085 ........................................................................ 47086 ........................................................................ 47087 ........................................................................ 47088 ........................................................................ 47089 ........................................................................ 47090 ........................................................................ 47091 ........................................................................ 47092 ........................................................................ 47093 ........................................................................ 47094 ........................................................................ 47095 ........................................................................ 47096 ........................................................................ 47097 ........................................................................ 47098 ........................................................................ 47099 ........................................................................ 47100 ........................................................................ 47101 ........................................................................ 47102 ........................................................................ 47103 ........................................................................ 47104 ........................................................................ 47105 ........................................................................ 47106 ........................................................................ 47107 ........................................................................ 47108 ........................................................................ 47109 ........................................................................ 47110 ........................................................................ 47111 ........................................................................ 47112 ........................................................................ 47113 ........................................................................ 47114 ........................................................................ 47115 ........................................................................ 47116 ........................................................................ 47117 ........................................................................ 47118 ........................................................................ 47119 ........................................................................ 47120 ........................................................................ 47121 ........................................................................ 47122 ........................................................................ 47123 ........................................................................ 47124 ........................................................................ 47125 ........................................................................ 47126 ........................................................................ 47127 ........................................................................ 47128 ........................................................................ 47129 ........................................................................ 47130 ........................................................................ 47131 ........................................................................ 47132 ........................................................................ 47133 ........................................................................ 47134 ........................................................................ 47135 ........................................................................ 47136 ........................................................................ 47137 ........................................................................ 47138 ........................................................................ 47139 ........................................................................ 47140 ........................................................................ 47141 ........................................................................ 47142 ........................................................................ 47143 ........................................................................ 47144 ........................................................................ 47145 ........................................................................ 47146 ........................................................................ 47147 ........................................................................ 47148 ........................................................................ 47149 ........................................................................ 47150 ........................................................................ 47151 ........................................................................ 47152 ........................................................................ 47153 ........................................................................ 47154 ........................................................................ 47155 ........................................................................ 47156 ........................................................................ 47157 ........................................................................ 47158 ........................................................................ 47159 ........................................................................ 47160 ........................................................................ 47161 ........................................................................ 47162 ........................................................................ 47163 ........................................................................ 47164 ........................................................................ 47165 ........................................................................ 47166 ........................................................................ 47167 ........................................................................ 47168 ........................................................................ 47169 ........................................................................ 47170 ........................................................................ 47171 ........................................................................ 47172 ........................................................................ 47173 ........................................................................ 47174 ........................................................................ 47175 ........................................................................ 47176 ........................................................................ 47177 ........................................................................ 47178 ........................................................................ 47179 ........................................................................ 47180 ........................................................................ 47181 ........................................................................ 47182 ........................................................................ 47183 ........................................................................ 47184 ........................................................................ 47185 ........................................................................ 47186 ........................................................................ 47187 ........................................................................ 47188 ........................................................................ 47189 ........................................................................ 47190 ........................................................................ 47191 ........................................................................ 47192 ........................................................................ 47193 ........................................................................ 47194 ........................................................................ 47195 ........................................................................ 47196 ........................................................................ 47197 ........................................................................ 47198 ........................................................................ 47199 ........................................................................ 47200 ........................................................................ 47201 ........................................................................ 47202 ........................................................................ 47203 ........................................................................ 47204 ........................................................................ 47205 ........................................................................ 47206 ........................................................................ 47207 ........................................................................ 47208 ........................................................................ 47209 ........................................................................ 47210 ........................................................................ 47211 ........................................................................ 47212 ........................................................................ 47213 ........................................................................ 47214 ........................................................................ 47215 ........................................................................ 47216 ........................................................................ 47217 ........................................................................ 47218 ........................................................................ 47219 ........................................................................ 47220 ........................................................................ 47221 ........................................................................ 47222 ........................................................................ 47223 ........................................................................ 47224 ........................................................................ 47225 ........................................................................ 47226 ........................................................................ 47227 ........................................................................ 47228 ........................................................................ 47229 ........................................................................ 47230 ........................................................................ 47231 ........................................................................ 47232 ........................................................................ 47233 ........................................................................ 47234 ........................................................................ 47235 ........................................................................ 47236 ........................................................................ 47237 ........................................................................ 47238 ........................................................................ 47239 ........................................................................ 47240 ........................................................................ 47241 ........................................................................ 47242 ........................................................................ 47243 ........................................................................ 47244 ........................................................................ 47245 ........................................................................ 47246 ........................................................................ 47247 ........................................................................ 47248 ........................................................................ 47249 ........................................................................ 47250 ........................................................................ 47251 ........................................................................ 47252 ........................................................................ 47253 ........................................................................ 47254 ........................................................................ 47255 ........................................................................ 47256 ........................................................................ 47257 ........................................................................ 47258 ........................................................................ 47259 ........................................................................ 47260 ........................................................................ 47261 ........................................................................ 47262 ........................................................................ 47263 ........................................................................ 47264 ........................................................................ 47265 ........................................................................ 47266 ........................................................................ 47267 ........................................................................ 47268 ........................................................................ 47269 ........................................................................ 47270 ........................................................................ 47271 ........................................................................ 47272 ........................................................................ 47273 ........................................................................ 47274 ........................................................................ 47275 ........................................................................ 47276 ........................................................................ 47277 ........................................................................ 47278 ........................................................................ 47279 ........................................................................ 47280 ........................................................................ 47281 ........................................................................ 47282 ........................................................................ 47283 ........................................................................ 47284 ........................................................................ 47285 ........................................................................ 47286 ........................................................................ 47287 ........................................................................ 47288 ........................................................................ 47289 ........................................................................ 47290 ........................................................................ 47291 ........................................................................ 47292 ........................................................................ 47293 ........................................................................ 47294 ........................................................................ 47295 ........................................................................ 47296 ........................................................................ 47297 ........................................................................ 47298 ........................................................................ 47299 ........................................................................ 47300 ........................................................................ 47301 ........................................................................ 47302 ........................................................................ 47303 ........................................................................ 47304 ........................................................................ 47305 ........................................................................ 47306 ........................................................................ 47307 ........................................................................ 47308 ........................................................................ 47309 ........................................................................ 47310 ........................................................................ 47311 ........................................................................ 47312 ........................................................................ 47313 ........................................................................ 47314 ........................................................................ 47315 ........................................................................ 47316 ........................................................................ 47317 ........................................................................ 47318 ........................................................................ 47319 ........................................................................ 47320 ........................................................................ 47321 ........................................................................ 47322 ........................................................................ 47323 ........................................................................ 47324 ........................................................................ 47325 ........................................................................ 47326 ........................................................................ 47327 ........................................................................ 47328 ........................................................................ 47329 ........................................................................ 47330 ........................................................................ 47331 ........................................................................ 47332 ........................................................................ 47333 ........................................................................ 47334 ........................................................................ 47335 ........................................................................ 47336 ........................................................................ 47337 ........................................................................ 47338 ........................................................................ 47339 ........................................................................ 47340 ........................................................................ 47341 ........................................................................ 47342 ........................................................................ 47343 ........................................................................ 47344 ........................................................................ 47345 ........................................................................ 47346 ........................................................................ 47347 ........................................................................ 47348 ........................................................................ 47349 ........................................................................ 47350 ........................................................................ 47351 ........................................................................ 47352 ........................................................................ 47353 ........................................................................ 47354 ........................................................................ 47355 ........................................................................ 47356 ........................................................................ 47357 ........................................................................ 47358 ........................................................................ 47359 ........................................................................ 47360 ........................................................................ 47361 ........................................................................ 47362 ........................................................................ 47363 ........................................................................ 47364 ........................................................................ 47365 ........................................................................ 47366 ........................................................................ 47367 ........................................................................ 47368 ........................................................................ 47369 ........................................................................ 47370 ........................................................................ 47371 ........................................................................ 47372 ........................................................................ 47373 ........................................................................ 47374 ........................................................................ 47375 ........................................................................ 47376 ........................................................................ 47377 ........................................................................ 47378 ........................................................................ 47379 ........................................................................ 47380 ........................................................................ 47381 ........................................................................ 47382 ........................................................................ 47383 ........................................................................ 47384 ........................................................................ 47385 ........................................................................ 47386 ........................................................................ 47387 ........................................................................ 47388 ........................................................................ 47389 ........................................................................ 47390 ........................................................................ 47391 ........................................................................ 47392 ........................................................................ 47393 ........................................................................ 47394 ........................................................................ 47395 ........................................................................ 47396 ........................................................................ 47397 ........................................................................ 47398 ........................................................................ 47399 ........................................................................ 47400 ........................................................................ 47401 ........................................................................ 47402 ........................................................................ 47403 ........................................................................ 47404 ........................................................................ 47405 ........................................................................ 47406 ........................................................................ 47407 ........................................................................ 47408 ........................................................................ 47409 ........................................................................ 47410 ........................................................................ 47411 ........................................................................ 47412 ........................................................................ 47413 ........................................................................ 47414 ........................................................................ 47415 ........................................................................ 47416 ........................................................................ 47417 ........................................................................ 47418 ........................................................................ 47419 ........................................................................ 47420 ........................................................................ 47421 ........................................................................ 47422 ........................................................................ 47423 ........................................................................ 47424 ........................................................................ 47425 ........................................................................ 47426 ........................................................................ 47427 ........................................................................ 47428 ........................................................................ 47429 ........................................................................ 47430 ........................................................................ 47431 ........................................................................ 47432 ........................................................................ 47433 ........................................................................ 47434 ........................................................................ 47435 ........................................................................ 47436 ........................................................................ 47437 ........................................................................ 47438 ........................................................................ 47439 ........................................................................ 47440 ........................................................................ 47441 ........................................................................ 47442 ........................................................................ 47443 ........................................................................ 47444 ........................................................................ 47445 ........................................................................ 47446 ........................................................................ 47447 ........................................................................ 47448 ........................................................................ 47449 ........................................................................ 47450 ........................................................................ 47451 ........................................................................ 47452 ........................................................................ 47453 ........................................................................ 47454 ........................................................................ 47455 ........................................................................ 47456 ........................................................................ 47457 ........................................................................ 47458 ........................................................................ 47459 ........................................................................ 47460 ........................................................................ 47461 ........................................................................ 47462 ........................................................................ 47463 ........................................................................ 47464 ........................................................................ 47465 ........................................................................ 47466 ........................................................................ 47467 ........................................................................ 47468 ........................................................................ 47469 ........................................................................ 47470 ........................................................................ 47471 ........................................................................ 47472 ........................................................................ 47473 ........................................................................ 47474 ........................................................................ 47475 ........................................................................ 47476 ........................................................................ 47477 ........................................................................ 47478 ........................................................................ 47479 ........................................................................ 47480 ........................................................................ 47481 ........................................................................ 47482 ........................................................................ 47483 ........................................................................ 47484 ........................................................................ 47485 ........................................................................ 47486 ........................................................................ 47487 ........................................................................ 47488 ........................................................................ 47489 ........................................................................ 47490 ........................................................................ 47491 ........................................................................ 47492 ........................................................................ 47493 ........................................................................ 47494 ........................................................................ 47495 ........................................................................ 47496 ........................................................................ 47497 ........................................................................ 47498 ........................................................................ 47499 ........................................................................ 47500 ........................................................................ 47501 ........................................................................ 47502 ........................................................................ 47503 ........................................................................ 47504 ........................................................................ 47505 ........................................................................ 47506 ........................................................................ 47507 ........................................................................ 47508 ........................................................................ 47509 ........................................................................ 47510 ........................................................................ 47511 ........................................................................ 47512 ........................................................................ 47513 ........................................................................ 47514 ........................................................................ 47515 ........................................................................ 47516 ........................................................................ 47517 ........................................................................ 47518 ........................................................................ 47519 ........................................................................ 47520 ........................................................................ 47521 ........................................................................ 47522 ........................................................................ 47523 ........................................................................ 47524 ........................................................................ 47525 ........................................................................ 47526 ........................................................................ 47527 ........................................................................ 47528 ........................................................................ 47529 ........................................................................ 47530 ........................................................................ 47531 ........................................................................ 47532 ........................................................................ 47533 ........................................................................ 47534 ........................................................................ 47535 ........................................................................ 47536 ........................................................................ 47537 ........................................................................ 47538 ........................................................................ 47539 ........................................................................ 47540 ........................................................................ 47541 ........................................................................ 47542 ........................................................................ 47543 ........................................................................ 47544 ........................................................................ 47545 ........................................................................ 47546 ........................................................................ 47547 ........................................................................ 47548 ........................................................................ 47549 ........................................................................ 47550 ........................................................................ 47551 ........................................................................ 47552 ........................................................................ 47553 ........................................................................ 47554 ........................................................................ 47555 ........................................................................ 47556 ........................................................................ 47557 ........................................................................ 47558 ........................................................................ 47559 ........................................................................ 47560 ........................................................................ 47561 ........................................................................ 47562 ........................................................................ 47563 ........................................................................ 47564 ........................................................................ 47565 ........................................................................ 47566 ........................................................................ 47567 ........................................................................ 47568 ........................................................................ 47569 ........................................................................ 47570 ........................................................................ 47571 ........................................................................ 47572 ........................................................................ 47573 ........................................................................ 47574 ........................................................................ 47575 ........................................................................ 47576 ........................................................................ 47577 ........................................................................ 47578 ........................................................................ 47579 ........................................................................ 47580 ........................................................................ 47581 ........................................................................ 47582 ........................................................................ 47583 ........................................................................ 47584 ........................................................................ 47585 ........................................................................ 47586 ........................................................................ 47587 ........................................................................ 47588 ........................................................................ 47589 ........................................................................ 47590 ........................................................................ 47591 ........................................................................ 47592 ........................................................................ 47593 ........................................................................ 47594 ........................................................................ 47595 ........................................................................ 47596 ........................................................................ 47597 ........................................................................ 47598 ........................................................................ 47599 ........................................................................ 47600 ........................................................................ 47601 ........................................................................ 47602 ........................................................................ 47603 ........................................................................ 47604 ........................................................................ 47605 ........................................................................ 47606 ........................................................................ 47607 ........................................................................ 47608 ........................................................................ 47609 ........................................................................ 47610 ........................................................................ 47611 ........................................................................ 47612 ........................................................................ 47613 ........................................................................ 47614 ........................................................................ 47615 ........................................................................ 47616 ........................................................................ 47617 ........................................................................ 47618 ........................................................................ 47619 ........................................................................ 47620 ........................................................................ 47621 ........................................................................ 47622 ........................................................................ 47623 ........................................................................ 47624 ........................................................................ 47625 ........................................................................ 47626 ........................................................................ 47627 ........................................................................ 47628 ........................................................................ 47629 ........................................................................ 47630 ........................................................................ 47631 ........................................................................ 47632 ........................................................................ 47633 ........................................................................ 47634 ........................................................................ 47635 ........................................................................ 47636 ........................................................................ 47637 ........................................................................ 47638 ........................................................................ 47639 ........................................................................ 47640 ........................................................................ 47641 ........................................................................ 47642 ........................................................................ 47643 ........................................................................ 47644 ........................................................................ 47645 ........................................................................ 47646 ........................................................................ 47647 ........................................................................ 47648 ........................................................................ 47649 ........................................................................ 47650 ........................................................................ 47651 ........................................................................ 47652 ........................................................................ 47653 ........................................................................ 47654 ........................................................................ 47655 ........................................................................ 47656 ........................................................................ 47657 ........................................................................ 47658 ........................................................................ 47659 ........................................................................ 47660 ........................................................................ 47661 ........................................................................ 47662 ........................................................................ 47663 ........................................................................ 47664 ........................................................................ 47665 ........................................................................ 47666 ........................................................................ 47667 ........................................................................ 47668 ........................................................................ 47669 ........................................................................ 47670 ........................................................................ 47671 ........................................................................ 47672 ........................................................................ 47673 ........................................................................ 47674 ........................................................................ 47675 ........................................................................ 47676 ........................................................................ 47677 ........................................................................ 47678 ........................................................................ 47679 ........................................................................ 47680 ........................................................................ 47681 ........................................................................ 47682 ........................................................................ 47683 ........................................................................ 47684 ........................................................................ 47685 ........................................................................ 47686 ........................................................................ 47687 ........................................................................ 47688 ........................................................................ 47689 ........................................................................ 47690 ........................................................................ 47691 ........................................................................ 47692 ........................................................................ 47693 ........................................................................ 47694 ........................................................................ 47695 ........................................................................ 47696 ........................................................................ 47697 ........................................................................ 47698 ........................................................................ 47699 ........................................................................ 47700 ........................................................................ 47701 ........................................................................ 47702 ........................................................................ 47703 ........................................................................ 47704 ........................................................................ 47705 ........................................................................ 47706 ........................................................................ 47707 ........................................................................ 47708 ........................................................................ 47709 ........................................................................ 47710 ........................................................................ 47711 ........................................................................ 47712 ........................................................................ 47713 ........................................................................ 47714 ........................................................................ 47715 ........................................................................ 47716 ........................................................................ 47717 ........................................................................ 47718 ........................................................................ 47719 ........................................................................ 47720 ........................................................................ 47721 ........................................................................ 47722 ........................................................................ 47723 ........................................................................ 47724 ........................................................................ 47725 ........................................................................ 47726 ........................................................................ 47727 ........................................................................ 47728 ........................................................................ 47729 ........................................................................ 47730 ........................................................................ 47731 ........................................................................ 47732 ........................................................................ 47733 ........................................................................ 47734 ........................................................................ 47735 ........................................................................ 47736 ........................................................................ 47737 ........................................................................ 47738 ........................................................................ 47739 ........................................................................ 47740 ........................................................................ 47741 ........................................................................ 47742 ........................................................................ 47743 ........................................................................ 47744 ........................................................................ 47745 ........................................................................ 47746 ........................................................................ 47747 ........................................................................ 47748 ........................................................................ 47749 ........................................................................ 47750 ........................................................................ 47751 ........................................................................ 47752 ........................................................................ 47753 ........................................................................ 47754 ........................................................................ 47755 ........................................................................ 47756 ........................................................................ 47757 ........................................................................ 47758 ........................................................................ 47759 ........................................................................ 47760 ........................................................................ 47761 ........................................................................ 47762 ........................................................................ 47763 ........................................................................ 47764 ........................................................................ 47765 ........................................................................ 47766 ........................................................................ 47767 ........................................................................ 47768 ........................................................................ 47769 ........................................................................ 47770 ........................................................................ 47771 ........................................................................ 47772 ........................................................................ 47773 ........................................................................ 47774 ........................................................................ 47775 ........................................................................ 47776 ........................................................................ 47777 ........................................................................ 47778 ........................................................................ 47779 ........................................................................ 47780 ........................................................................ 47781 ........................................................................ 47782 ........................................................................ 47783 ........................................................................ 47784 ........................................................................ 47785 ........................................................................ 47786 ........................................................................ 47787 ........................................................................ 47788 ........................................................................ 47789 ........................................................................ 47790 ........................................................................ 47791 ........................................................................ 47792 ........................................................................ 47793 ........................................................................ 47794 ........................................................................ 47795 ........................................................................ 47796 ........................................................................ 47797 ........................................................................ 47798 ........................................................................ 47799 ........................................................................ 47800 ........................................................................ 47801 ........................................................................ 47802 ........................................................................ 47803 ........................................................................ 47804 ........................................................................ 47805 ........................................................................ 47806 ........................................................................ 47807 ........................................................................ 47808 ........................................................................ 47809 ........................................................................ 47810 ........................................................................ 47811 ........................................................................ 47812 ........................................................................ 47813 ........................................................................ 47814 ........................................................................ 47815 ........................................................................ 47816 ........................................................................ 47817 ........................................................................ 47818 ........................................................................ 47819 ........................................................................ 47820 ........................................................................ 47821 ........................................................................ 47822 ........................................................................ 47823 ........................................................................ 47824 ........................................................................ 47825 ........................................................................ 47826 ........................................................................ 47827 ........................................................................ 47828 ........................................................................ 47829 ........................................................................ 47830 ........................................................................ 47831 ........................................................................ 47832 ........................................................................ 47833 ........................................................................ 47834 ........................................................................ 47835 ........................................................................ 47836 ........................................................................ 47837 ........................................................................ 47838 ........................................................................ 47839 ........................................................................ 47840 ........................................................................ 47841 ........................................................................ 47842 ........................................................................ 47843 ........................................................................ 47844 ........................................................................ 47845 ........................................................................ 47846 ........................................................................ 47847 ........................................................................ 47848 ........................................................................ 47849 ........................................................................ 47850 ........................................................................ 47851 ........................................................................ 47852 ........................................................................ 47853 ........................................................................ 47854 ........................................................................ 47855 ........................................................................ 47856 ........................................................................ 47857 ........................................................................ 47858 ........................................................................ 47859 ........................................................................ 47860 ........................................................................ 47861 ........................................................................ 47862 ........................................................................ 47863 ........................................................................ 47864 ........................................................................ 47865 ........................................................................ 47866 ........................................................................ 47867 ........................................................................ 47868 ........................................................................ 47869 ........................................................................ 47870 ........................................................................ 47871 ........................................................................ 47872 ........................................................................ 47873 ........................................................................ 47874 ........................................................................ 47875 ........................................................................ 47876 ........................................................................ 47877 ........................................................................ 47878 ........................................................................ 47879 ........................................................................ 47880 ........................................................................ 47881 ........................................................................ 47882 ........................................................................ 47883 ........................................................................ 47884 ........................................................................ 47885 ........................................................................ 47886 ........................................................................ 47887 ........................................................................ 47888 ........................................................................ 47889 ........................................................................ 47890 ........................................................................ 47891 ........................................................................ 47892 ........................................................................ 47893 ........................................................................ 47894 ........................................................................ 47895 ........................................................................ 47896 ........................................................................ 47897 ........................................................................ 47898 ........................................................................ 47899 ........................................................................ 47900 ........................................................................ 47901 ........................................................................ 47902 ........................................................................ 47903 ........................................................................ 47904 ........................................................................ 47905 ........................................................................ 47906 ........................................................................ 47907 ........................................................................ 47908 ........................................................................ 47909 ........................................................................ 47910 ........................................................................ 47911 ........................................................................ 47912 ........................................................................ 47913 ........................................................................ 47914 ........................................................................ 47915 ........................................................................ 47916 ........................................................................ 47917 ........................................................................ 47918 ........................................................................ 47919 ........................................................................ 47920 ........................................................................ 47921 ........................................................................ 47922 ........................................................................ 47923 ........................................................................ 47924 ........................................................................ 47925 ........................................................................ 47926 ........................................................................ 47927 ........................................................................ 47928 ........................................................................ 47929 ........................................................................ 47930 ........................................................................ 47931 ........................................................................ 47932 ........................................................................ 47933 ........................................................................ 47934 ........................................................................ 47935 ........................................................................ 47936 ........................................................................ 47937 ........................................................................ 47938 ........................................................................ 47939 ........................................................................ 47940 ........................................................................ 47941 ........................................................................ 47942 ........................................................................ 47943 ........................................................................ 47944 ........................................................................ 47945 ........................................................................ 47946 ........................................................................ 47947 ........................................................................ 47948 ........................................................................ 47949 ........................................................................ 47950 ........................................................................ 47951 ........................................................................ 47952 ........................................................................ 47953 ........................................................................ 47954 ........................................................................ 47955 ........................................................................ 47956 ........................................................................ 47957 ........................................................................ 47958 ........................................................................ 47959 ........................................................................ 47960 ........................................................................ 47961 ........................................................................ 47962 ........................................................................ 47963 ........................................................................ 47964 ........................................................................ 47965 ........................................................................ 47966 ........................................................................ 47967 ........................................................................ 47968 ........................................................................ 47969 ........................................................................ 47970 ........................................................................ 47971 ........................................................................ 47972 ........................................................................ 47973 ........................................................................ 47974 ........................................................................ 47975 ........................................................................ 47976 ........................................................................ 47977 ........................................................................ 47978 ........................................................................ 47979 ........................................................................ 47980 ........................................................................ 47981 ........................................................................ 47982 ........................................................................ 47983 ........................................................................ 47984 ........................................................................ 47985 ........................................................................ 47986 ........................................................................ 47987 ........................................................................ 47988 ........................................................................ 47989 ........................................................................ 47990 ........................................................................ 47991 ........................................................................ 47992 ........................................................................ 47993 ........................................................................ 47994 ........................................................................ 47995 ........................................................................ 47996 ........................................................................ 47997 ........................................................................ 47998 ........................................................................ 47999 ........................................................................ 48000 ........................................................................ 48001 ........................................................................ 48002 ........................................................................ 48003 ........................................................................ 48004 ........................................................................ 48005 ........................................................................ 48006 ........................................................................ 48007 ........................................................................ 48008 ........................................................................ 48009 ........................................................................ 48010 ........................................................................ 48011 ........................................................................ 48012 ........................................................................ 48013 ........................................................................ 48014 ........................................................................ 48015 ........................................................................ 48016 ........................................................................ 48017 ........................................................................ 48018 ........................................................................ 48019 ........................................................................ 48020 ........................................................................ 48021 ........................................................................ 48022 ........................................................................ 48023 ........................................................................ 48024 ........................................................................ 48025 ........................................................................ 48026 ........................................................................ 48027 ........................................................................ 48028 ........................................................................ 48029 ........................................................................ 48030 ........................................................................ 48031 ........................................................................ 48032 ........................................................................ 48033 ........................................................................ 48034 ........................................................................ 48035 ........................................................................ 48036 ........................................................................ 48037 ........................................................................ 48038 ........................................................................ 48039 ........................................................................ 48040 ........................................................................ 48041 ........................................................................ 48042 ........................................................................ 48043 ........................................................................ 48044 ........................................................................ 48045 ........................................................................ 48046 ........................................................................ 48047 ........................................................................ 48048 ........................................................................ 48049 ........................................................................ 48050 ........................................................................ 48051 ........................................................................ 48052 ........................................................................ 48053 ........................................................................ 48054 ........................................................................ 48055 ........................................................................ 48056 ........................................................................ 48057 ........................................................................ 48058 ........................................................................ 48059 ........................................................................ 48060 ........................................................................ 48061 ........................................................................ 48062 ........................................................................ 48063 ........................................................................ 48064 ........................................................................ 48065 ........................................................................ 48066 ........................................................................ 48067 ........................................................................ 48068 ........................................................................ 48069 ........................................................................ 48070 ........................................................................ 48071 ........................................................................ 48072 ........................................................................ 48073 ........................................................................ 48074 ........................................................................ 48075 ........................................................................ 48076 ........................................................................ 48077 ........................................................................ 48078 ........................................................................ 48079 ........................................................................ 48080 ........................................................................ 48081 ........................................................................ 48082 ........................................................................ 48083 ........................................................................ 48084 ........................................................................ 48085 ........................................................................ 48086 ........................................................................ 48087 ........................................................................ 48088 ........................................................................ 48089 ........................................................................ 48090 ........................................................................ 48091 ........................................................................ 48092 ........................................................................ 48093 ........................................................................ 48094 ........................................................................ 48095 ........................................................................ 48096 ........................................................................ 48097 ........................................................................ 48098 ........................................................................ 48099 ........................................................................ 48100 ........................................................................ 48101 ........................................................................ 48102 ........................................................................ 48103 ........................................................................ 48104 ........................................................................ 48105 ........................................................................ 48106 ........................................................................ 48107 ........................................................................ 48108 ........................................................................ 48109 ........................................................................ 48110 ........................................................................ 48111 ........................................................................ 48112 ........................................................................ 48113 ........................................................................ 48114 ........................................................................ 48115 ........................................................................ 48116 ........................................................................ 48117 ........................................................................ 48118 ........................................................................ 48119 ........................................................................ 48120 ........................................................................ 48121 ........................................................................ 48122 ........................................................................ 48123 ........................................................................ 48124 ........................................................................ 48125 ........................................................................ 48126 ........................................................................ 48127 ........................................................................ 48128 ........................................................................ 48129 ........................................................................ 48130 ........................................................................ 48131 ........................................................................ 48132 ........................................................................ 48133 ........................................................................ 48134 ........................................................................ 48135 ........................................................................ 48136 ........................................................................ 48137 ........................................................................ 48138 ........................................................................ 48139 ........................................................................ 48140 ........................................................................ 48141 ........................................................................ 48142 ........................................................................ 48143 ........................................................................ 48144 ........................................................................ 48145 ........................................................................ 48146 ........................................................................ 48147 ........................................................................ 48148 ........................................................................ 48149 ........................................................................ 48150 ........................................................................ 48151 ........................................................................ 48152 ........................................................................ 48153 ........................................................................ 48154 ........................................................................ 48155 ........................................................................ 48156 ........................................................................ 48157 ........................................................................ 48158 ........................................................................ 48159 ........................................................................ 48160 ........................................................................ 48161 ........................................................................ 48162 ........................................................................ 48163 ........................................................................ 48164 ........................................................................ 48165 ........................................................................ 48166 ........................................................................ 48167 ........................................................................ 48168 ........................................................................ 48169 ........................................................................ 48170 ........................................................................ 48171 ........................................................................ 48172 ........................................................................ 48173 ........................................................................ 48174 ........................................................................ 48175 ........................................................................ 48176 ........................................................................ 48177 ........................................................................ 48178 ........................................................................ 48179 ........................................................................ 48180 ........................................................................ 48181 ........................................................................ 48182 ........................................................................ 48183 ........................................................................ 48184 ........................................................................ 48185 ........................................................................ 48186 ........................................................................ 48187 ........................................................................ 48188 ........................................................................ 48189 ........................................................................ 48190 ........................................................................ 48191 ........................................................................ 48192 ........................................................................ 48193 ........................................................................ 48194 ........................................................................ 48195 ........................................................................ 48196 ........................................................................ 48197 ........................................................................ 48198 ........................................................................ 48199 ........................................................................ 48200 ........................................................................ 48201 ........................................................................ 48202 ........................................................................ 48203 ........................................................................ 48204 ........................................................................ 48205 ........................................................................ 48206 ........................................................................ 48207 ........................................................................ 48208 ........................................................................ 48209 ........................................................................ 48210 ........................................................................ 48211 ........................................................................ 48212 ........................................................................ 48213 ........................................................................ 48214 ........................................................................ 48215 ........................................................................ 48216 ........................................................................ 48217 ........................................................................ 48218 ........................................................................ 48219 ........................................................................ 48220 ........................................................................ 48221 ........................................................................ 48222 ........................................................................ 48223 ........................................................................ 48224 ........................................................................ 48225 ........................................................................ 48226 ........................................................................ 48227 ........................................................................ 48228 ........................................................................ 48229 ........................................................................ 48230 ........................................................................ 48231 ........................................................................ 48232 ........................................................................ 48233 ........................................................................ 48234 ........................................................................ 48235 ........................................................................ 48236 ........................................................................ 48237 ........................................................................ 48238 ........................................................................ 48239 ........................................................................ 48240 ........................................................................ 48241 ........................................................................ 48242 ........................................................................ 48243 ........................................................................ 48244 ........................................................................ 48245 ........................................................................ 48246 ........................................................................ 48247 ........................................................................ 48248 ........................................................................ 48249 ........................................................................ 48250 ........................................................................ 48251 ........................................................................ 48252 ........................................................................ 48253 ........................................................................ 48254 ........................................................................ 48255 ........................................................................ 48256 ........................................................................ 48257 ........................................................................ 48258 ........................................................................ 48259 ........................................................................ 48260 ........................................................................ 48261 ........................................................................ 48262 ........................................................................ 48263 ........................................................................ 48264 ........................................................................ 48265 ........................................................................ 48266 ........................................................................ 48267 ........................................................................ 48268 ........................................................................ 48269 ........................................................................ 48270 ........................................................................ 48271 ........................................................................ 48272 ........................................................................ 48273 ........................................................................ 48274 ........................................................................ 48275 ........................................................................ 48276 ........................................................................ 48277 ........................................................................ 48278 ........................................................................ 48279 ........................................................................ 48280 ........................................................................ 48281 ........................................................................ 48282 ........................................................................ 48283 ........................................................................ 48284 ........................................................................ 48285 ........................................................................ 48286 ........................................................................ 48287 ........................................................................ 48288 ........................................................................ 48289 ........................................................................ 48290 ........................................................................ 48291 ........................................................................ 48292 ........................................................................ 48293 ........................................................................ 48294 ........................................................................ 48295 ........................................................................ 48296 ........................................................................ 48297 ........................................................................ 48298 ........................................................................ 48299 ........................................................................ 48300 ........................................................................ 48301 ........................................................................ 48302 ........................................................................ 48303 ........................................................................ 48304 ........................................................................ 48305 ........................................................................ 48306 ........................................................................ 48307 ........................................................................ 48308 ........................................................................ 48309 ........................................................................ 48310 ........................................................................ 48311 ........................................................................ 48312 ........................................................................ 48313 ........................................................................ 48314 ........................................................................ 48315 ........................................................................ 48316 ........................................................................ 48317 ........................................................................ 48318 ........................................................................ 48319 ........................................................................ 48320 ........................................................................ 48321 ........................................................................ 48322 ........................................................................ 48323 ........................................................................ 48324 ........................................................................ 48325 ........................................................................ 48326 ........................................................................ 48327 ........................................................................ 48328 ........................................................................ 48329 ........................................................................ 48330 ........................................................................ 48331 ........................................................................ 48332 ........................................................................ 48333 ........................................................................ 48334 ........................................................................ 48335 ........................................................................ 48336 ........................................................................ 48337 ........................................................................ 48338 ........................................................................ 48339 ........................................................................ 48340 ........................................................................ 48341 ........................................................................ 48342 ........................................................................ 48343 ........................................................................ 48344 ........................................................................ 48345 ........................................................................ 48346 ........................................................................ 48347 ........................................................................ 48348 ........................................................................ 48349 ........................................................................ 48350 ........................................................................ 48351 ........................................................................ 48352 ........................................................................ 48353 ........................................................................ 48354 ........................................................................ 48355 ........................................................................ 48356 ........................................................................ 48357 ........................................................................ 48358 ........................................................................ 48359 ........................................................................ 48360 ........................................................................ 48361 ........................................................................ 48362 ........................................................................ 48363 ........................................................................ 48364 ........................................................................ 48365 ........................................................................ 48366 ........................................................................ 48367 ........................................................................ 48368 ........................................................................ 48369 ........................................................................ 48370 ........................................................................ 48371 ........................................................................ 48372 ........................................................................ 48373 ........................................................................ 48374 ........................................................................ 48375 ........................................................................ 48376 ........................................................................ 48377 ........................................................................ 48378 ........................................................................ 48379 ........................................................................ 48380 ........................................................................ 48381 ........................................................................ 48382 ........................................................................ 48383 ........................................................................ 48384 ........................................................................ 48385 ........................................................................ 48386 ........................................................................ 48387 ........................................................................ 48388 ........................................................................ 48389 ........................................................................ 48390 ........................................................................ 48391 ........................................................................ 48392 ........................................................................ 48393 ........................................................................ 48394 ........................................................................ 48395 ........................................................................ 48396 ........................................................................ 48397 ........................................................................ 48398 ........................................................................ 48399 ........................................................................ 48400 ........................................................................ 48401 ........................................................................ 48402 ........................................................................ 48403 ........................................................................ 48404 ........................................................................ 48405 ........................................................................ 48406 ........................................................................ 48407 ........................................................................ 48408 ........................................................................ 48409 ........................................................................ 48410 ........................................................................ 48411 ........................................................................ 48412 ........................................................................ 48413 ........................................................................ 48414 ........................................................................ 48415 ........................................................................ 48416 ........................................................................ 48417 ........................................................................ 48418 ........................................................................ 48419 ........................................................................ 48420 ........................................................................ 48421 ........................................................................ 48422 ........................................................................ 48423 ........................................................................ 48424 ........................................................................ 48425 ........................................................................ 48426 ........................................................................ 48427 ........................................................................ 48428 ........................................................................ 48429 ........................................................................ 48430 ........................................................................ 48431 ........................................................................ 48432 ........................................................................ 48433 ........................................................................ 48434 ........................................................................ 48435 ........................................................................ 48436 ........................................................................ 48437 ........................................................................ 48438 ........................................................................ 48439 ........................................................................ 48440 ........................................................................ 48441 ........................................................................ 48442 ........................................................................ 48443 ........................................................................ 48444 ........................................................................ 48445 ........................................................................ 48446 ........................................................................ 48447 ........................................................................ 48448 ........................................................................ 48449 ........................................................................ 48450 ........................................................................ 48451 ........................................................................ 48452 ........................................................................ 48453 ........................................................................ 48454 ........................................................................ 48455 ........................................................................ 48456 ........................................................................ 48457 ........................................................................ 48458 ........................................................................ 48459 ........................................................................ 48460 ........................................................................ 48461 ........................................................................ 48462 ........................................................................ 48463 ........................................................................ 48464 ........................................................................ 48465 ........................................................................ 48466 ........................................................................ 48467 ........................................................................ 48468 ........................................................................ 48469 ........................................................................ 48470 ........................................................................ 48471 ........................................................................ 48472 ........................................................................ 48473 ........................................................................ 48474 ........................................................................ 48475 ........................................................................ 48476 ........................................................................ 48477 ........................................................................ 48478 ........................................................................ 48479 ........................................................................ 48480 ........................................................................ 48481 ........................................................................ 48482 ........................................................................ 48483 ........................................................................ 48484 ........................................................................ 48485 ........................................................................ 48486 ........................................................................ 48487 ........................................................................ 48488 ........................................................................ 48489 ........................................................................ 48490 ........................................................................ 48491 ........................................................................ 48492 ........................................................................ 48493 ........................................................................ 48494 ........................................................................ 48495 ........................................................................ 48496 ........................................................................ 48497 ........................................................................ 48498 ........................................................................ 48499 ........................................................................ 48500 ........................................................................ 48501 ........................................................................ 48502 ........................................................................ 48503 ........................................................................ 48504 ........................................................................ 48505 ........................................................................ 48506 ........................................................................ 48507 ........................................................................ 48508 ........................................................................ 48509 ........................................................................ 48510 ........................................................................ 48511 ........................................................................ 48512 ........................................................................ 48513 ........................................................................ 48514 ........................................................................ 48515 ........................................................................ 48516 ........................................................................ 48517 ........................................................................ 48518 ........................................................................ 48519 ........................................................................ 48520 ........................................................................ 48521 ........................................................................ 48522 ........................................................................ 48523 ........................................................................ 48524 ........................................................................ 48525 ........................................................................ 48526 ........................................................................ 48527 ........................................................................ 48528 ........................................................................ 48529 ........................................................................ 48530 ........................................................................ 48531 ........................................................................ 48532 ........................................................................ 48533 ........................................................................ 48534 ........................................................................ 48535 ........................................................................ 48536 ........................................................................ 48537 ........................................................................ 48538 ........................................................................ 48539 ........................................................................ 48540 ........................................................................ 48541 ........................................................................ 48542 ........................................................................ 48543 ........................................................................ 48544 ........................................................................ 48545 ........................................................................ 48546 ........................................................................ 48547 ........................................................................ 48548 ........................................................................ 48549 ........................................................................ 48550 ........................................................................ 48551 ........................................................................ 48552 ........................................................................ 48553 ........................................................................ 48554 ........................................................................ 48555 ........................................................................ 48556 ........................................................................ 48557 ........................................................................ 48558 ........................................................................ 48559 ........................................................................ 48560 ........................................................................ 48561 ........................................................................ 48562 ........................................................................ 48563 ........................................................................ 48564 ........................................................................ 48565 ........................................................................ 48566 ........................................................................ 48567 ........................................................................ 48568 ........................................................................ 48569 ........................................................................ 48570 ........................................................................ 48571 ........................................................................ 48572 ........................................................................ 48573 ........................................................................ 48574 ........................................................................ 48575 ........................................................................ 48576 ........................................................................ 48577 ........................................................................ 48578 ........................................................................ 48579 ........................................................................ 48580 ........................................................................ 48581 ........................................................................ 48582 ........................................................................ 48583 ........................................................................ 48584 ........................................................................ 48585 ........................................................................ 48586 ........................................................................ 48587 ........................................................................ 48588 ........................................................................ 48589 ........................................................................ 48590 ........................................................................ 48591 ........................................................................ 48592 ........................................................................ 48593 ........................................................................ 48594 ........................................................................ 48595 ........................................................................ 48596 ........................................................................ 48597 ........................................................................ 48598 ........................................................................ 48599 ........................................................................ 48600 ........................................................................ 48601 ........................................................................ 48602 ........................................................................ 48603 ........................................................................ 48604 ........................................................................ 48605 ........................................................................ 48606 ........................................................................ 48607 ........................................................................ 48608 ........................................................................ 48609 ........................................................................ 48610 ........................................................................ 48611 ........................................................................ 48612 ........................................................................ 48613 ........................................................................ 48614 ........................................................................ 48615 ........................................................................ 48616 ........................................................................ 48617 ........................................................................ 48618 ........................................................................ 48619 ........................................................................ 48620 ........................................................................ 48621 ........................................................................ 48622 ........................................................................ 48623 ........................................................................ 48624 ........................................................................ 48625 ........................................................................ 48626 ........................................................................ 48627 ........................................................................ 48628 ........................................................................ 48629 ........................................................................ 48630 ........................................................................ 48631 ........................................................................ 48632 ........................................................................ 48633 ........................................................................ 48634 ........................................................................ 48635 ........................................................................ 48636 ........................................................................ 48637 ........................................................................ 48638 ........................................................................ 48639 ........................................................................ 48640 ........................................................................ 48641 ........................................................................ 48642 ........................................................................ 48643 ........................................................................ 48644 ........................................................................ 48645 ........................................................................ 48646 ........................................................................ 48647 ........................................................................ 48648 ........................................................................ 48649 ........................................................................ 48650 ........................................................................ 48651 ........................................................................ 48652 ........................................................................ 48653 ........................................................................ 48654 ........................................................................ 48655 ........................................................................ 48656 ........................................................................ 48657 ........................................................................ 48658 ........................................................................ 48659 ........................................................................ 48660 ........................................................................ 48661 ........................................................................ 48662 ........................................................................ 48663 ........................................................................ 48664 ........................................................................ 48665 ........................................................................ 48666 ........................................................................ 48667 ........................................................................ 48668 ........................................................................ 48669 ........................................................................ 48670 ........................................................................ 48671 ........................................................................ 48672 ........................................................................ 48673 ........................................................................ 48674 ........................................................................ 48675 ........................................................................ 48676 ........................................................................ 48677 ........................................................................ 48678 ........................................................................ 48679 ........................................................................ 48680 ........................................................................ 48681 ........................................................................ 48682 ........................................................................ 48683 ........................................................................ 48684 ........................................................................ 48685 ........................................................................ 48686 ........................................................................ 48687 ........................................................................ 48688 ........................................................................ 48689 ........................................................................ 48690 ........................................................................ 48691 ........................................................................ 48692 ........................................................................ 48693 ........................................................................ 48694 ........................................................................ 48695 ........................................................................ 48696 ........................................................................ 48697 ........................................................................ 48698 ........................................................................ 48699 ........................................................................ 48700 ........................................................................ 48701 ........................................................................ 48702 ........................................................................ 48703 ........................................................................ 48704 ........................................................................ 48705 ........................................................................ 48706 ........................................................................ 48707 ........................................................................ 48708 ........................................................................ 48709 ........................................................................ 48710 ........................................................................ 48711 ........................................................................ 48712 ........................................................................ 48713 ........................................................................ 48714 ........................................................................ 48715 ........................................................................ 48716 ........................................................................ 48717 ........................................................................ 48718 ........................................................................ 48719 ........................................................................ 48720 ........................................................................ 48721 ........................................................................ 48722 ........................................................................ 48723 ........................................................................ 48724 ........................................................................ 48725 ........................................................................ 48726 ........................................................................ 48727 ........................................................................ 48728 ........................................................................ 48729 ........................................................................ 48730 ........................................................................ 48731 ........................................................................ 48732 ........................................................................ 48733 ........................................................................ 48734 ........................................................................ 48735 ........................................................................ 48736 ........................................................................ 48737 ........................................................................ 48738 ........................................................................ 48739 ........................................................................ 48740 ........................................................................ 48741 ........................................................................ 48742 ........................................................................ 48743 ........................................................................ 48744 ........................................................................ 48745 ........................................................................ 48746 ........................................................................ 48747 ........................................................................ 48748 ........................................................................ 48749 ........................................................................ 48750 ........................................................................ 48751 ........................................................................ 48752 ........................................................................ 48753 ........................................................................ 48754 ........................................................................ 48755 ........................................................................ 48756 ........................................................................ 48757 ........................................................................ 48758 ........................................................................ 48759 ........................................................................ 48760 ........................................................................ 48761 ........................................................................ 48762 ........................................................................ 48763 ........................................................................ 48764 ........................................................................ 48765 ........................................................................ 48766 ........................................................................ 48767 ........................................................................ 48768 ........................................................................ 48769 ........................................................................ 48770 ........................................................................ 48771 ........................................................................ 48772 ........................................................................ 48773 ........................................................................ 48774 ........................................................................ 48775 ........................................................................ 48776 ........................................................................ 48777 ........................................................................ 48778 ........................................................................ 48779 ........................................................................ 48780 ........................................................................ 48781 ........................................................................ 48782 ........................................................................ 48783 ........................................................................ 48784 ........................................................................ 48785 ........................................................................ 48786 ........................................................................ 48787 ........................................................................ 48788 ........................................................................ 48789 ........................................................................ 48790 ........................................................................ 48791 ........................................................................ 48792 ........................................................................ 48793 ........................................................................ 48794 ........................................................................ 48795 ........................................................................ 48796 ........................................................................ 48797 ........................................................................ 48798 ........................................................................ 48799 ........................................................................ 48800 ........................................................................ 48801 ........................................................................ 48802 ........................................................................ 48803 ........................................................................ 48804 ........................................................................ 48805 ........................................................................ 48806 ........................................................................ 48807 ........................................................................ 48808 ........................................................................ 48809 ........................................................................ 48810 ........................................................................ 48811 ........................................................................ 48812 ........................................................................ 48813 ........................................................................ 48814 ........................................................................ 48815 ........................................................................ 48816 ........................................................................ 48817 ........................................................................ 48818 ........................................................................ 48819 ........................................................................ 48820 ........................................................................ 48821 ........................................................................ 48822 ........................................................................ 48823 ........................................................................ 48824 ........................................................................ 48825 ........................................................................ 48826 ........................................................................ 48827 ........................................................................ 48828 ........................................................................ 48829 ........................................................................ 48830 ........................................................................ 48831 ........................................................................ 48832 ........................................................................ 48833 ........................................................................ 48834 ........................................................................ 48835 ........................................................................ 48836 ........................................................................ 48837 ........................................................................ 48838 ........................................................................ 48839 ........................................................................ 48840 ........................................................................ 48841 ........................................................................ 48842 ........................................................................ 48843 ........................................................................ 48844 ........................................................................ 48845 ........................................................................ 48846 ........................................................................ 48847 ........................................................................ 48848 ........................................................................ 48849 ........................................................................ 48850 ........................................................................ 48851 ........................................................................ 48852 ........................................................................ 48853 ........................................................................ 48854 ........................................................................ 48855 ........................................................................ 48856 ........................................................................ 48857 ........................................................................ 48858 ........................................................................ 48859 ........................................................................ 48860 ........................................................................ 48861 ........................................................................ 48862 ........................................................................ 48863 ........................................................................ 48864 ........................................................................ 48865 ........................................................................ 48866 ........................................................................ 48867 ........................................................................ 48868 ........................................................................ 48869 ........................................................................ 48870 ........................................................................ 48871 ........................................................................ 48872 ........................................................................ 48873 ........................................................................ 48874 ........................................................................ 48875 ........................................................................ 48876 ........................................................................ 48877 ........................................................................ 48878 ........................................................................ 48879 ........................................................................ 48880 ........................................................................ 48881 ........................................................................ 48882 ........................................................................ 48883 ........................................................................ 48884 ........................................................................ 48885 ........................................................................ 48886 ........................................................................ 48887 ........................................................................ 48888 ........................................................................ 48889 ........................................................................ 48890 ........................................................................ 48891 ........................................................................ 48892 ........................................................................ 48893 ........................................................................ 48894 ........................................................................ 48895 ........................................................................ 48896 ........................................................................ 48897 ........................................................................ 48898 ........................................................................ 48899 ........................................................................ 48900 ........................................................................ 48901 ........................................................................ 48902 ........................................................................ 48903 ........................................................................ 48904 ........................................................................ 48905 ........................................................................ 48906 ........................................................................ 48907 ........................................................................ 48908 ........................................................................ 48909 ........................................................................ 48910 ........................................................................ 48911 ........................................................................ 48912 ........................................................................ 48913 ........................................................................ 48914 ........................................................................ 48915 ........................................................................ 48916 ........................................................................ 48917 ........................................................................ 48918 ........................................................................ 48919 ........................................................................ 48920 ........................................................................ 48921 ........................................................................ 48922 ........................................................................ 48923 ........................................................................ 48924 ........................................................................ 48925 ........................................................................ 48926 ........................................................................ 48927 ........................................................................ 48928 ........................................................................ 48929 ........................................................................ 48930 ........................................................................ 48931 ........................................................................ 48932 ........................................................................ 48933 ........................................................................ 48934 ........................................................................ 48935 ........................................................................ 48936 ........................................................................ 48937 ........................................................................ 48938 ........................................................................ 48939 ........................................................................ 48940 ........................................................................ 48941 ........................................................................ 48942 ........................................................................ 48943 ........................................................................ 48944 ........................................................................ 48945 ........................................................................ 48946 ........................................................................ 48947 ........................................................................ 48948 ........................................................................ 48949 ........................................................................ 48950 ........................................................................ 48951 ........................................................................ 48952 ........................................................................ 48953 ........................................................................ 48954 ........................................................................ 48955 ........................................................................ 48956 ........................................................................ 48957 ........................................................................ 48958 ........................................................................ 48959 ........................................................................ 48960 ........................................................................ 48961 ........................................................................ 48962 ........................................................................ 48963 ........................................................................ 48964 ........................................................................ 48965 ........................................................................ 48966 ........................................................................ 48967 ........................................................................ 48968 ........................................................................ 48969 ........................................................................ 48970 ........................................................................ 48971 ........................................................................ 48972 ........................................................................ 48973 ........................................................................ 48974 ........................................................................ 48975 ........................................................................ 48976 ........................................................................ 48977 ........................................................................ 48978 ........................................................................ 48979 ........................................................................ 48980 ........................................................................ 48981 ........................................................................ 48982 ........................................................................ 48983 ........................................................................ 48984 ........................................................................ 48985 ........................................................................ 48986 ........................................................................ 48987 ........................................................................ 48988 ........................................................................ 48989 ........................................................................ 48990 ........................................................................ 48991 ........................................................................ 48992 ........................................................................ 48993 ........................................................................ 48994 ........................................................................ 48995 ........................................................................ 48996 ........................................................................ 48997 ........................................................................ 48998 ........................................................................ 48999 ........................................................................ 49000 ........................................................................ 49001 ........................................................................ 49002 ........................................................................ 49003 ........................................................................ 49004 ........................................................................ 49005 ........................................................................ 49006 ........................................................................ 49007 ........................................................................ 49008 ........................................................................ 49009 ........................................................................ 49010 ........................................................................ 49011 ........................................................................ 49012 ........................................................................ 49013 ........................................................................ 49014 ........................................................................ 49015 ........................................................................ 49016 ........................................................................ 49017 ........................................................................ 49018 ........................................................................ 49019 ........................................................................ 49020 ........................................................................ 49021 ........................................................................ 49022 ........................................................................ 49023 ........................................................................ 49024 ........................................................................ 49025 ........................................................................ 49026 ........................................................................ 49027 ........................................................................ 49028 ........................................................................ 49029 ........................................................................ 49030 ........................................................................ 49031 ........................................................................ 49032 ........................................................................ 49033 ........................................................................ 49034 ........................................................................ 49035 ........................................................................ 49036 ........................................................................ 49037 ........................................................................ 49038 ........................................................................ 49039 ........................................................................ 49040 ........................................................................ 49041 ........................................................................ 49042 ........................................................................ 49043 ........................................................................ 49044 ........................................................................ 49045 ........................................................................ 49046 ........................................................................ 49047 ........................................................................ 49048 ........................................................................ 49049 ........................................................................ 49050 ........................................................................ 49051 ........................................................................ 49052 ........................................................................ 49053 ........................................................................ 49054 ........................................................................ 49055 ........................................................................ 49056 ........................................................................ 49057 ........................................................................ 49058 ........................................................................ 49059 ........................................................................ 49060 ........................................................................ 49061 ........................................................................ 49062 ........................................................................ 49063 ........................................................................ 49064 ........................................................................ 49065 ........................................................................ 49066 ........................................................................ 49067 ........................................................................ 49068 ........................................................................ 49069 ........................................................................ 49070 ........................................................................ 49071 ........................................................................ 49072 ........................................................................ 49073 ........................................................................ 49074 ........................................................................ 49075 ........................................................................ 49076 ........................................................................ 49077 ........................................................................ 49078 ........................................................................ 49079 ........................................................................ 49080 ........................................................................ 49081 ........................................................................ 49082 ........................................................................ 49083 ........................................................................ 49084 ........................................................................ 49085 ........................................................................ 49086 ........................................................................ 49087 ........................................................................ 49088 ........................................................................ 49089 ........................................................................ 49090 ........................................................................ 49091 ........................................................................ 49092 ........................................................................ 49093 ........................................................................ 49094 ........................................................................ 49095 ........................................................................ 49096 ........................................................................ 49097 ........................................................................ 49098 ........................................................................ 49099 ........................................................................ 49100 ........................................................................ 49101 ........................................................................ 49102 ........................................................................ 49103 ........................................................................ 49104 ........................................................................ 49105 ........................................................................ 49106 ........................................................................ 49107 ........................................................................ 49108 ........................................................................ 49109 ........................................................................ 49110 ........................................................................ 49111 ........................................................................ 49112 ........................................................................ 49113 ........................................................................ 49114 ........................................................................ 49115 ........................................................................ 49116 ........................................................................ 49117 ........................................................................ 49118 ........................................................................ 49119 ........................................................................ 49120 ........................................................................ 49121 ........................................................................ 49122 ........................................................................ 49123 ........................................................................ 49124 ........................................................................ 49125 ........................................................................ 49126 ........................................................................ 49127 ........................................................................ 49128 ........................................................................ 49129 ........................................................................ 49130 ........................................................................ 49131 ........................................................................ 49132 ........................................................................ 49133 ........................................................................ 49134 ........................................................................ 49135 ........................................................................ 49136 ........................................................................ 49137 ........................................................................ 49138 ........................................................................ 49139 ........................................................................ 49140 ........................................................................ 49141 ........................................................................ 49142 ........................................................................ 49143 ........................................................................ 49144 ........................................................................ 49145 ........................................................................ 49146 ........................................................................ 49147 ........................................................................ 49148 ........................................................................ 49149 ........................................................................ 49150 ........................................................................ 49151 ........................................................................ 49152 ........................................................................ 49153 ........................................................................ 49154 ........................................................................ 49155 ........................................................................ 49156 ........................................................................ 49157 ........................................................................ 49158 ........................................................................ 49159 ........................................................................ 49160 ........................................................................ 49161 ........................................................................ 49162 ........................................................................ 49163 ........................................................................ 49164 ........................................................................ 49165 ........................................................................ 49166 ........................................................................ 49167 ........................................................................ 49168 ........................................................................ 49169 ........................................................................ 49170 ........................................................................ 49171 ........................................................................ 49172 ........................................................................ 49173 ........................................................................ 49174 ........................................................................ 49175 ........................................................................ 49176 ........................................................................ 49177 ........................................................................ 49178 ........................................................................ 49179 ........................................................................ 49180 ........................................................................ 49181 ........................................................................ 49182 ........................................................................ 49183 ........................................................................ 49184 ........................................................................ 49185 ........................................................................ 49186 ........................................................................ 49187 ........................................................................ 49188 ........................................................................ 49189 ........................................................................ 49190 ........................................................................ 49191 ........................................................................ 49192 ........................................................................ 49193 ........................................................................ 49194 ........................................................................ 49195 ........................................................................ 49196 ........................................................................ 49197 ........................................................................ 49198 ........................................................................ 49199 ........................................................................ 49200 ........................................................................ 49201 ........................................................................ 49202 ........................................................................ 49203 ........................................................................ 49204 ........................................................................ 49205 ........................................................................ 49206 ........................................................................ 49207 ........................................................................ 49208 ........................................................................ 49209 ........................................................................ 49210 ........................................................................ 49211 ........................................................................ 49212 ........................................................................ 49213 ........................................................................ 49214 ........................................................................ 49215 ........................................................................ 49216 ........................................................................ 49217 ........................................................................ 49218 ........................................................................ 49219 ........................................................................ 49220 ........................................................................ 49221 ........................................................................ 49222 ........................................................................ 49223 ........................................................................ 49224 ........................................................................ 49225 ........................................................................ 49226 ........................................................................ 49227 ........................................................................ 49228 ........................................................................ 49229 ........................................................................ 49230 ........................................................................ 49231 ........................................................................ 49232 ........................................................................ 49233 ........................................................................ 49234 ........................................................................ 49235 ........................................................................ 49236 ........................................................................ 49237 ........................................................................ 49238 ........................................................................ 49239 ........................................................................ 49240 ........................................................................ 49241 ........................................................................ 49242 ........................................................................ 49243 ........................................................................ 49244 ........................................................................ 49245 ........................................................................ 49246 ........................................................................ 49247 ........................................................................ 49248 ........................................................................ 49249 ........................................................................ 49250 ........................................................................ 49251 ........................................................................ 49252 ........................................................................ 49253 ........................................................................ 49254 ........................................................................ 49255 ........................................................................ 49256 ........................................................................ 49257 ........................................................................ 49258 ........................................................................ 49259 ........................................................................ 49260 ........................................................................ 49261 ........................................................................ 49262 ........................................................................ 49263 ........................................................................ 49264 ........................................................................ 49265 ........................................................................ 49266 ........................................................................ 49267 ........................................................................ 49268 ........................................................................ 49269 ........................................................................ 49270 ........................................................................ 49271 ........................................................................ 49272 ........................................................................ 49273 ........................................................................ 49274 ........................................................................ 49275 ........................................................................ 49276 ........................................................................ 49277 ........................................................................ 49278 ........................................................................ 49279 ........................................................................ 49280 ........................................................................ 49281 ........................................................................ 49282 ........................................................................ 49283 ........................................................................ 49284 ........................................................................ 49285 ........................................................................ 49286 ........................................................................ 49287 ........................................................................ 49288 ........................................................................ 49289 ........................................................................ 49290 ........................................................................ 49291 ........................................................................ 49292 ........................................................................ 49293 ........................................................................ 49294 ........................................................................ 49295 ........................................................................ 49296 ........................................................................ 49297 ........................................................................ 49298 ........................................................................ 49299 ........................................................................ 49300 ........................................................................ 49301 ........................................................................ 49302 ........................................................................ 49303 ........................................................................ 49304 ........................................................................ 49305 ........................................................................ 49306 ........................................................................ 49307 ........................................................................ 49308 ........................................................................ 49309 ........................................................................ 49310 ........................................................................ 49311 ........................................................................ 49312 ........................................................................ 49313 ........................................................................ 49314 ........................................................................ 49315 ........................................................................ 49316 ........................................................................ 49317 ........................................................................ 49318 ........................................................................ 49319 ........................................................................ 49320 ........................................................................ 49321 ........................................................................ 49322 ........................................................................ 49323 ........................................................................ 49324 ........................................................................ 49325 ........................................................................ 49326 ........................................................................ 49327 ........................................................................ 49328 ........................................................................ 49329 ........................................................................ 49330 ........................................................................ 49331 ........................................................................ 49332 ........................................................................ 49333 ........................................................................ 49334 ........................................................................ 49335 ........................................................................ 49336 ........................................................................ 49337 ........................................................................ 49338 ........................................................................ 49339 ........................................................................ 49340 ........................................................................ 49341 ........................................................................ 49342 ........................................................................ 49343 ........................................................................ 49344 ........................................................................ 49345 ........................................................................ 49346 ........................................................................ 49347 ........................................................................ 49348 ........................................................................ 49349 ........................................................................ 49350 ........................................................................ 49351 ........................................................................ 49352 ........................................................................ 49353 ........................................................................ 49354 ........................................................................ 49355 ........................................................................ 49356 ........................................................................ 49357 ........................................................................ 49358 ........................................................................ 49359 ........................................................................ 49360 ........................................................................ 49361 ........................................................................ 49362 ........................................................................ 49363 ........................................................................ 49364 ........................................................................ 49365 ........................................................................ 49366 ........................................................................ 49367 ........................................................................ 49368 ........................................................................ 49369 ........................................................................ 49370 ........................................................................ 49371 ........................................................................ 49372 ........................................................................ 49373 ........................................................................ 49374 ........................................................................ 49375 ........................................................................ 49376 ........................................................................ 49377 ........................................................................ 49378 ........................................................................ 49379 ........................................................................ 49380 ........................................................................ 49381 ........................................................................ 49382 ........................................................................ 49383 ........................................................................ 49384 ........................................................................ 49385 ........................................................................ 49386 ........................................................................ 49387 ........................................................................ 49388 ........................................................................ 49389 ........................................................................ 49390 ........................................................................ 49391 ........................................................................ 49392 ........................................................................ 49393 ........................................................................ 49394 ........................................................................ 49395 ........................................................................ 49396 ........................................................................ 49397 ........................................................................ 49398 ........................................................................ 49399 ........................................................................ 49400 ........................................................................ 49401 ........................................................................ 49402 ........................................................................ 49403 ........................................................................ 49404 ........................................................................ 49405 ........................................................................ 49406 ........................................................................ 49407 ........................................................................ 49408 ........................................................................ 49409 ........................................................................ 49410 ........................................................................ 49411 ........................................................................ 49412 ........................................................................ 49413 ........................................................................ 49414 ........................................................................ 49415 ........................................................................ 49416 ........................................................................ 49417 ........................................................................ 49418 ........................................................................ 49419 ........................................................................ 49420 ........................................................................ 49421 ........................................................................ 49422 ........................................................................ 49423 ........................................................................ 49424 ........................................................................ 49425 ........................................................................ 49426 ........................................................................ 49427 ........................................................................ 49428 ........................................................................ 49429 ........................................................................ 49430 ........................................................................ 49431 ........................................................................ 49432 ........................................................................ 49433 ........................................................................ 49434 ........................................................................ 49435 ........................................................................ 49436 ........................................................................ 49437 ........................................................................ 49438 ........................................................................ 49439 ........................................................................ 49440 ........................................................................ 49441 ........................................................................ 49442 ........................................................................ 49443 ........................................................................ 49444 ........................................................................ 49445 ........................................................................ 49446 ........................................................................ 49447 ........................................................................ 49448 ........................................................................ 49449 ........................................................................ 49450 ........................................................................ 49451 ........................................................................ 49452 ........................................................................ 49453 ........................................................................ 49454 ........................................................................ 49455 ........................................................................ 49456 ........................................................................ 49457 ........................................................................ 49458 ........................................................................ 49459 ........................................................................ 49460 ........................................................................ 49461 ........................................................................ 49462 ........................................................................ 49463 ........................................................................ 49464 ........................................................................ 49465 ........................................................................ 49466 ........................................................................ 49467 ........................................................................ 49468 ........................................................................ 49469 ........................................................................ 49470 ........................................................................ 49471 ........................................................................ 49472 ........................................................................ 49473 ........................................................................ 49474 ........................................................................ 49475 ........................................................................ 49476 ........................................................................ 49477 ........................................................................ 49478 ........................................................................ 49479 ........................................................................ 49480 ........................................................................ 49481 ........................................................................ 49482 ........................................................................ 49483 ........................................................................ 49484 ........................................................................ 49485 ........................................................................ 49486 ........................................................................ 49487 ........................................................................ 49488 ........................................................................ 49489 ........................................................................ 49490 ........................................................................ 49491 ........................................................................ 49492 ........................................................................ 49493 ........................................................................ 49494 ........................................................................ 49495 ........................................................................ 49496 ........................................................................ 49497 ........................................................................ 49498 ........................................................................ 49499 ........................................................................ 49500 ........................................................................ 49501 ........................................................................ 49502 ........................................................................ 49503 ........................................................................ 49504 ........................................................................ 49505 ........................................................................ 49506 ........................................................................ 49507 ........................................................................ 49508 ........................................................................ 49509 ........................................................................ 49510 ........................................................................ 49511 ........................................................................ 49512 ........................................................................ 49513 ........................................................................ 49514 ........................................................................ 49515 ........................................................................ 49516 ........................................................................ 49517 ........................................................................ 49518 ........................................................................ 49519 ........................................................................ 49520 ........................................................................ 49521 ........................................................................ 49522 ........................................................................ 49523 ........................................................................ 49524 ........................................................................ 49525 ........................................................................ 49526 ........................................................................ 49527 ........................................................................ 49528 ........................................................................ 49529 ........................................................................ 49530 ........................................................................ 49531 ........................................................................ 49532 ........................................................................ 49533 ........................................................................ 49534 ........................................................................ 49535 ........................................................................ 49536 ........................................................................ 49537 ........................................................................ 49538 ........................................................................ 49539 ........................................................................ 49540 ........................................................................ 49541 ........................................................................ 49542 ........................................................................ 49543 ........................................................................ 49544 ........................................................................ 49545 ........................................................................ 49546 ........................................................................ 49547 ........................................................................ 49548 ........................................................................ 49549 ........................................................................ 49550 ........................................................................ 49551 ........................................................................ 49552 ........................................................................ 49553 ........................................................................ 49554 ........................................................................ 49555 ........................................................................ 49556 ........................................................................ 49557 ........................................................................ 49558 ........................................................................ 49559 ........................................................................ 49560 ........................................................................ 49561 ........................................................................ 49562 ........................................................................ 49563 ........................................................................ 49564 ........................................................................ 49565 ........................................................................ 49566 ........................................................................ 49567 ........................................................................ 49568 ........................................................................ 49569 ........................................................................ 49570 ........................................................................ 49571 ........................................................................ 49572 ........................................................................ 49573 ........................................................................ 49574 ........................................................................ 49575 ........................................................................ 49576 ........................................................................ 49577 ........................................................................ 49578 ........................................................................ 49579 ........................................................................ 49580 ........................................................................ 49581 ........................................................................ 49582 ........................................................................ 49583 ........................................................................ 49584 ........................................................................ 49585 ........................................................................ 49586 ........................................................................ 49587 ........................................................................ 49588 ........................................................................ 49589 ........................................................................ 49590 ........................................................................ 49591 ........................................................................ 49592 ........................................................................ 49593 ........................................................................ 49594 ........................................................................ 49595 ........................................................................ 49596 ........................................................................ 49597 ........................................................................ 49598 ........................................................................ 49599 ........................................................................ 49600 ........................................................................ 49601 ........................................................................ 49602 ........................................................................ 49603 ........................................................................ 49604 ........................................................................ 49605 ........................................................................ 49606 ........................................................................ 49607 ........................................................................ 49608 ........................................................................ 49609 ........................................................................ 49610 ........................................................................ 49611 ........................................................................ 49612 ........................................................................ 49613 ........................................................................ 49614 ........................................................................ 49615 ........................................................................ 49616 ........................................................................ 49617 ........................................................................ 49618 ........................................................................ 49619 ........................................................................ 49620 ........................................................................ 49621 ........................................................................ 49622 ........................................................................ 49623 ........................................................................ 49624 ........................................................................ 49625 ........................................................................ 49626 ........................................................................ 49627 ........................................................................ 49628 ........................................................................ 49629 ........................................................................ 49630 ........................................................................ 49631 ........................................................................ 49632 ........................................................................ 49633 ........................................................................ 49634 ........................................................................ 49635 ........................................................................ 49636 ........................................................................ 49637 ........................................................................ 49638 ........................................................................ 49639 ........................................................................ 49640 ........................................................................ 49641 ........................................................................ 49642 ........................................................................ 49643 ........................................................................ 49644 ........................................................................ 49645 ........................................................................ 49646 ........................................................................ 49647 ........................................................................ 49648 ........................................................................ 49649 ........................................................................ 49650 ........................................................................ 49651 ........................................................................ 49652 ........................................................................ 49653 ........................................................................ 49654 ........................................................................ 49655 ........................................................................ 49656 ........................................................................ 49657 ........................................................................ 49658 ........................................................................ 49659 ........................................................................ 49660 ........................................................................ 49661 ........................................................................ 49662 ........................................................................ 49663 ........................................................................ 49664 ........................................................................ 49665 ........................................................................ 49666 ........................................................................ 49667 ........................................................................ 49668 ........................................................................ 49669 ........................................................................ 49670 ........................................................................ 49671 ........................................................................ 49672 ........................................................................ 49673 ........................................................................ 49674 ........................................................................ 49675 ........................................................................ 49676 ........................................................................ 49677 ........................................................................ 49678 ........................................................................ 49679 ........................................................................ 49680 ........................................................................ 49681 ........................................................................ 49682 ........................................................................ 49683 ........................................................................ 49684 ........................................................................ 49685 ........................................................................ 49686 ........................................................................ 49687 ........................................................................ 49688 ........................................................................ 49689 ........................................................................ 49690 ........................................................................ 49691 ........................................................................ 49692 ........................................................................ 49693 ........................................................................ 49694 ........................................................................ 49695 ........................................................................ 49696 ........................................................................ 49697 ........................................................................ 49698 ........................................................................ 49699 ........................................................................ 49700 ........................................................................ 49701 ........................................................................ 49702 ........................................................................ 49703 ........................................................................ 49704 ........................................................................ 49705 ........................................................................ 49706 ........................................................................ 49707 ........................................................................ 49708 ........................................................................ 49709 ........................................................................ 49710 ........................................................................ 49711 ........................................................................ 49712 ........................................................................ 49713 ........................................................................ 49714 ........................................................................ 49715 ........................................................................ 49716 ........................................................................ 49717 ........................................................................ 49718 ........................................................................ 49719 ........................................................................ 49720 ........................................................................ 49721 ........................................................................ 49722 ........................................................................ 49723 ........................................................................ 49724 ........................................................................ 49725 ........................................................................ 49726 ........................................................................ 49727 ........................................................................ 49728 ........................................................................ 49729 ........................................................................ 49730 ........................................................................ 49731 ........................................................................ 49732 ........................................................................ 49733 ........................................................................ 49734 ........................................................................ 49735 ........................................................................ 49736 ........................................................................ 49737 ........................................................................ 49738 ........................................................................ 49739 ........................................................................ 49740 ........................................................................ 49741 ........................................................................ 49742 ........................................................................ 49743 ........................................................................ 49744 ........................................................................ 49745 ........................................................................ 49746 ........................................................................ 49747 ........................................................................ 49748 ........................................................................ 49749 ........................................................................ 49750 ........................................................................ 49751 ........................................................................ 49752 ........................................................................ 49753 ........................................................................ 49754 ........................................................................ 49755 ........................................................................ 49756 ........................................................................ 49757 ........................................................................ 49758 ........................................................................ 49759 ........................................................................ 49760 ........................................................................ 49761 ........................................................................ 49762 ........................................................................ 49763 ........................................................................ 49764 ........................................................................ 49765 ........................................................................ 49766 ........................................................................ 49767 ........................................................................ 49768 ........................................................................ 49769 ........................................................................ 49770 ........................................................................ 49771 ........................................................................ 49772 ........................................................................ 49773 ........................................................................ 49774 ........................................................................ 49775 ........................................................................ 49776 ........................................................................ 49777 ........................................................................ 49778 ........................................................................ 49779 ........................................................................ 49780 ........................................................................ 49781 ........................................................................ 49782 ........................................................................ 49783 ........................................................................ 49784 ........................................................................ 49785 ........................................................................ 49786 ........................................................................ 49787 ........................................................................ 49788 ........................................................................ 49789 ........................................................................ 49790 ........................................................................ 49791 ........................................................................ 49792 ........................................................................ 49793 ........................................................................ 49794 ........................................................................ 49795 ........................................................................ 49796 ........................................................................ 49797 ........................................................................ 49798 ........................................................................ 49799 ........................................................................ 49800 ........................................................................ 49801 ........................................................................ 49802 ........................................................................ 49803 ........................................................................ 49804 ........................................................................ 49805 ........................................................................ 49806 ........................................................................ 49807 ........................................................................ 49808 ........................................................................ 49809 ........................................................................ 49810 ........................................................................ 49811 ........................................................................ 49812 ........................................................................ 49813 ........................................................................ 49814 ........................................................................ 49815 ........................................................................ 49816 ........................................................................ 49817 ........................................................................ 49818 ........................................................................ 49819 ........................................................................ 49820 ........................................................................ 49821 ........................................................................ 49822 ........................................................................ 49823 ........................................................................ 49824 ........................................................................ 49825 ........................................................................ 49826 ........................................................................ 49827 ........................................................................ 49828 ........................................................................ 49829 ........................................................................ 49830 ........................................................................ 49831 ........................................................................ 49832 ........................................................................ 49833 ........................................................................ 49834 ........................................................................ 49835 ........................................................................ 49836 ........................................................................ 49837 ........................................................................ 49838 ........................................................................ 49839 ........................................................................ 49840 ........................................................................ 49841 ........................................................................ 49842 ........................................................................ 49843 ........................................................................ 49844 ........................................................................ 49845 ........................................................................ 49846 ........................................................................ 49847 ........................................................................ 49848 ........................................................................ 49849 ........................................................................ 49850 ........................................................................ 49851 ........................................................................ 49852 ........................................................................ 49853 ........................................................................ 49854 ........................................................................ 49855 ........................................................................ 49856 ........................................................................ 49857 ........................................................................ 49858 ........................................................................ 49859 ........................................................................ 49860 ........................................................................ 49861 ........................................................................ 49862 ........................................................................ 49863 ........................................................................ 49864 ........................................................................ 49865 ........................................................................ 49866 ........................................................................ 49867 ........................................................................ 49868 ........................................................................ 49869 ........................................................................ 49870 ........................................................................ 49871 ........................................................................ 49872 ........................................................................ 49873 ........................................................................ 49874 ........................................................................ 49875 ........................................................................ 49876 ........................................................................ 49877 ........................................................................ 49878 ........................................................................ 49879 ........................................................................ 49880 ........................................................................ 49881 ........................................................................ 49882 ........................................................................ 49883 ........................................................................ 49884 ........................................................................ 49885 ........................................................................ 49886 ........................................................................ 49887 ........................................................................ 49888 ........................................................................ 49889 ........................................................................ 49890 ........................................................................ 49891 ........................................................................ 49892 ........................................................................ 49893 ........................................................................ 49894 ........................................................................ 49895 ........................................................................ 49896 ........................................................................ 49897 ........................................................................ 49898 ........................................................................ 49899 ........................................................................ 49900 ........................................................................ 49901 ........................................................................ 49902 ........................................................................ 49903 ........................................................................ 49904 ........................................................................ 49905 ........................................................................ 49906 ........................................................................ 49907 ........................................................................ 49908 ........................................................................ 49909 ........................................................................ 49910 ........................................................................ 49911 ........................................................................ 49912 ........................................................................ 49913 ........................................................................ 49914 ........................................................................ 49915 ........................................................................ 49916 ........................................................................ 49917 ........................................................................ 49918 ........................................................................ 49919 ........................................................................ 49920 ........................................................................ 49921 ........................................................................ 49922 ........................................................................ 49923 ........................................................................ 49924 ........................................................................ 49925 ........................................................................ 49926 ........................................................................ 49927 ........................................................................ 49928 ........................................................................ 49929 ........................................................................ 49930 ........................................................................ 49931 ........................................................................ 49932 ........................................................................ 49933 ........................................................................ 49934 ........................................................................ 49935 ........................................................................ 49936 ........................................................................ 49937 ........................................................................ 49938 ........................................................................ 49939 ........................................................................ 49940 ........................................................................ 49941 ........................................................................ 49942 ........................................................................ 49943 ........................................................................ 49944 ........................................................................ 49945 ........................................................................ 49946 ........................................................................ 49947 ........................................................................ 49948 ........................................................................ 49949 ........................................................................ 49950 ........................................................................ 49951 ........................................................................ 49952 ........................................................................ 49953 ........................................................................ 49954 ........................................................................ 49955 ........................................................................ 49956 ........................................................................ 49957 ........................................................................ 49958 ........................................................................ 49959 ........................................................................ 49960 ........................................................................ 49961 ........................................................................ 49962 ........................................................................ 49963 ........................................................................ 49964 ........................................................................ 49965 ........................................................................ 49966 ........................................................................ 49967 ........................................................................ 49968 ........................................................................ 49969 ........................................................................ 49970 ........................................................................ 49971 ........................................................................ 49972 ........................................................................ 49973 ........................................................................ 49974 ........................................................................ 49975 ........................................................................ 49976 ........................................................................ 49977 ........................................................................ 49978 ........................................................................ 49979 ........................................................................ 49980 ........................................................................ 49981 ........................................................................ 49982 ........................................................................ 49983 ........................................................................ 49984 ........................................................................ 49985 ........................................................................ 49986 ........................................................................ 49987 ........................................................................ 49988 ........................................................................ 49989 ........................................................................ 49990 ........................................................................ 49991 ........................................................................ 49992 ........................................................................ 49993 ........................................................................ 49994 ........................................................................ 49995 ........................................................................ 49996 ........................................................................ 49997 ........................................................................ 49998 ........................................................................ 49999 ........................................................................ 50000 ........................................................................ 50001 ........................................................................ 50002 ........................................................................ 50003 ........................................................................ 50004 ........................................................................ 50005 ........................................................................ 50006 ........................................................................ 50007 ........................................................................ 50008 ........................................................................ 50009 ........................................................................ 50010 ........................................................................ 50011 ........................................................................ 50012 ........................................................................ 50013 ........................................................................ 50014 ........................................................................ 50015 ........................................................................ 50016 ........................................................................ 50017 ........................................................................ 50018 ........................................................................ 50019 ........................................................................ 50020 ........................................................................ 50021 ........................................................................ 50022 ........................................................................ 50023 ........................................................................ 50024 ........................................................................ 50025 ........................................................................ 50026 ........................................................................ 50027 ........................................................................ 50028 ........................................................................ 50029 ........................................................................ 50030 ........................................................................ 50031 ........................................................................ 50032 ........................................................................ 50033 ........................................................................ 50034 ........................................................................ 50035 ........................................................................ 50036 ........................................................................ 50037 ........................................................................ 50038 ........................................................................ 50039 ........................................................................ 50040 ........................................................................ 50041 ........................................................................ 50042 ........................................................................ 50043 ........................................................................ 50044 ........................................................................ 50045 ........................................................................ 50046 ........................................................................ 50047 ........................................................................ 50048 ........................................................................ 50049 ........................................................................ 50050 ........................................................................ 50051 ........................................................................ 50052 ........................................................................ 50053 ........................................................................ 50054 ........................................................................ 50055 ........................................................................ 50056 ........................................................................ 50057 ........................................................................ 50058 ........................................................................ 50059 ........................................................................ 50060 ........................................................................ 50061 ........................................................................ 50062 ........................................................................ 50063 ........................................................................ 50064 ........................................................................ 50065 ........................................................................ 50066 ........................................................................ 50067 ........................................................................ 50068 ........................................................................ 50069 ........................................................................ 50070 ........................................................................ 50071 ........................................................................ 50072 ........................................................................ 50073 ........................................................................ 50074 ........................................................................ 50075 ........................................................................ 50076 ........................................................................ 50077 ........................................................................ 50078 ........................................................................ 50079 ........................................................................ 50080 ........................................................................ 50081 ........................................................................ 50082 ........................................................................ 50083 ........................................................................ 50084 ........................................................................ 50085 ........................................................................ 50086 ........................................................................ 50087 ........................................................................ 50088 ........................................................................ 50089 ........................................................................ 50090 ........................................................................ 50091 ........................................................................ 50092 ........................................................................ 50093 ........................................................................ 50094 ........................................................................ 50095 ........................................................................ 50096 ........................................................................ 50097 ........................................................................ 50098 ........................................................................ 50099 ........................................................................ 50100 ........................................................................ 50101 ........................................................................ 50102 ........................................................................ 50103 ........................................................................ 50104 ........................................................................ 50105 ........................................................................ 50106 ........................................................................ 50107 ........................................................................ 50108 ........................................................................ 50109 ........................................................................ 50110 ........................................................................ 50111 ........................................................................ 50112 ........................................................................ 50113 ........................................................................ 50114 ........................................................................ 50115 ........................................................................ 50116 ........................................................................ 50117 ........................................................................ 50118 ........................................................................ 50119 ........................................................................ 50120 ........................................................................ 50121 ........................................................................ 50122 ........................................................................ 50123 ........................................................................ 50124 ........................................................................ 50125 ........................................................................ 50126 ........................................................................ 50127 ........................................................................ 50128 ........................................................................ 50129 ........................................................................ 50130 ........................................................................ 50131 ........................................................................ 50132 ........................................................................ 50133 ........................................................................ 50134 ........................................................................ 50135 ........................................................................ 50136 ........................................................................ 50137 ........................................................................ 50138 ........................................................................ 50139 ........................................................................ 50140 ........................................................................ 50141 ........................................................................ 50142 ........................................................................ 50143 ........................................................................ 50144 ........................................................................ 50145 ........................................................................ 50146 ........................................................................ 50147 ........................................................................ 50148 ........................................................................ 50149 ........................................................................ 50150 ........................................................................ 50151 ........................................................................ 50152 ........................................................................ 50153 ........................................................................ 50154 ........................................................................ 50155 ........................................................................ 50156 ........................................................................ 50157 ........................................................................ 50158 ........................................................................ 50159 ........................................................................ 50160 ........................................................................ 50161 ........................................................................ 50162 ........................................................................ 50163 ........................................................................ 50164 ........................................................................ 50165 ........................................................................ 50166 ........................................................................ 50167 ........................................................................ 50168 ........................................................................ 50169 ........................................................................ 50170 ........................................................................ 50171 ........................................................................ 50172 ........................................................................ 50173 ........................................................................ 50174 ........................................................................ 50175 ........................................................................ 50176 ........................................................................ 50177 ........................................................................ 50178 ........................................................................ 50179 ........................................................................ 50180 ........................................................................ 50181 ........................................................................ 50182 ........................................................................ 50183 ........................................................................ 50184 ........................................................................ 50185 ........................................................................ 50186 ........................................................................ 50187 ........................................................................ 50188 ........................................................................ 50189 ........................................................................ 50190 ........................................................................ 50191 ........................................................................ 50192 ........................................................................ 50193 ........................................................................ 50194 ........................................................................ 50195 ........................................................................ 50196 ........................................................................ 50197 ........................................................................ 50198 ........................................................................ 50199 ........................................................................ 50200 ........................................................................ 50201 ........................................................................ 50202 ........................................................................ 50203 ........................................................................ 50204 ........................................................................ 50205 ........................................................................ 50206 ........................................................................ 50207 ........................................................................ 50208 ........................................................................ 50209 ........................................................................ 50210 ........................................................................ 50211 ........................................................................ 50212 ........................................................................ 50213 ........................................................................ 50214 ........................................................................ 50215 ........................................................................ 50216 ........................................................................ 50217 ........................................................................ 50218 ........................................................................ 50219 ........................................................................ 50220 ........................................................................ 50221 ........................................................................ 50222 ........................................................................ 50223 ........................................................................ 50224 ........................................................................ 50225 ........................................................................ 50226 ........................................................................ 50227 ........................................................................ 50228 ........................................................................ 50229 ........................................................................ 50230 ........................................................................ 50231 ........................................................................ 50232 ........................................................................ 50233 ........................................................................ 50234 ........................................................................ 50235 ........................................................................ 50236 ........................................................................ 50237 ........................................................................ 50238 ........................................................................ 50239 ........................................................................ 50240 ........................................................................ 50241 ........................................................................ 50242 ........................................................................ 50243 ........................................................................ 50244 ........................................................................ 50245 ........................................................................ 50246 ........................................................................ 50247 ........................................................................ 50248 ........................................................................ 50249 ........................................................................ 50250 ........................................................................ 50251 ........................................................................ 50252 ........................................................................ 50253 ........................................................................ 50254 ........................................................................ 50255 ........................................................................ 50256 ........................................................................ 50257 ........................................................................ 50258 ........................................................................ 50259 ........................................................................ 50260 ........................................................................ 50261 ........................................................................ 50262 ........................................................................ 50263 ........................................................................ 50264 ........................................................................ 50265 ........................................................................ 50266 ........................................................................ 50267 ........................................................................ 50268 ........................................................................ 50269 ........................................................................ 50270 ........................................................................ 50271 ........................................................................ 50272 ........................................................................ 50273 ........................................................................ 50274 ........................................................................ 50275 ........................................................................ 50276 ........................................................................ 50277 ........................................................................ 50278 ........................................................................ 50279 ........................................................................ 50280 ........................................................................ 50281 ........................................................................ 50282 ........................................................................ 50283 ........................................................................ 50284 ........................................................................ 50285 ........................................................................ 50286 ........................................................................ 50287 ........................................................................ 50288 ........................................................................ 50289 ........................................................................ 50290 ........................................................................ 50291 ........................................................................ 50292 ........................................................................ 50293 ........................................................................ 50294 ........................................................................ 50295 ........................................................................ 50296 ........................................................................ 50297 ........................................................................ 50298 ........................................................................ 50299 ........................................................................ 50300 ........................................................................ 50301 ........................................................................ 50302 ........................................................................ 50303 ........................................................................ 50304 ........................................................................ 50305 ........................................................................ 50306 ........................................................................ 50307 ........................................................................ 50308 ........................................................................ 50309 ........................................................................ 50310 ........................................................................ 50311 ........................................................................ 50312 ........................................................................ 50313 ........................................................................ 50314 ........................................................................ 50315 ........................................................................ 50316 ........................................................................ 50317 ........................................................................ 50318 ........................................................................ 50319 ........................................................................ 50320 ........................................................................ 50321 ........................................................................ 50322 ........................................................................ 50323 ........................................................................ 50324 ........................................................................ 50325 ........................................................................ 50326 ........................................................................ 50327 ........................................................................ 50328 ........................................................................ 50329 ........................................................................ 50330 ........................................................................ 50331 ........................................................................ 50332 ........................................................................ 50333 ........................................................................ 50334 ........................................................................ 50335 ........................................................................ 50336 ........................................................................ 50337 ........................................................................ 50338 ........................................................................ 50339 ........................................................................ 50340 ........................................................................ 50341 ........................................................................ 50342 ........................................................................ 50343 ........................................................................ 50344 ........................................................................ 50345 ........................................................................ 50346 ........................................................................ 50347 ........................................................................ 50348 ........................................................................ 50349 ........................................................................ 50350 ........................................................................ 50351 ........................................................................ 50352 ........................................................................ 50353 ........................................................................ 50354 ........................................................................ 50355 ........................................................................ 50356 ........................................................................ 50357 ........................................................................ 50358 ........................................................................ 50359 ........................................................................ 50360 ........................................................................ 50361 ........................................................................ 50362 ........................................................................ 50363 ........................................................................ 50364 ........................................................................ 50365 ........................................................................ 50366 ........................................................................ 50367 ........................................................................ 50368 ........................................................................ 50369 ........................................................................ 50370 ........................................................................ 50371 ........................................................................ 50372 ........................................................................ 50373 ........................................................................ 50374 ........................................................................ 50375 ........................................................................ 50376 ........................................................................ 50377 ........................................................................ 50378 ........................................................................ 50379 ........................................................................ 50380 ........................................................................ 50381 ........................................................................ 50382 ........................................................................ 50383 ........................................................................ 50384 ........................................................................ 50385 ........................................................................ 50386 ........................................................................ 50387 ........................................................................ 50388 ........................................................................ 50389 ........................................................................ 50390 ........................................................................ 50391 ........................................................................ 50392 ........................................................................ 50393 ........................................................................ 50394 ........................................................................ 50395 ........................................................................ 50396 ........................................................................ 50397 ........................................................................ 50398 ........................................................................ 50399 ........................................................................ 50400 ........................................................................ 50401 ........................................................................ 50402 ........................................................................ 50403 ........................................................................ 50404 ........................................................................ 50405 ........................................................................ 50406 ........................................................................ 50407 ........................................................................ 50408 ........................................................................ 50409 ........................................................................ 50410 ........................................................................ 50411 ........................................................................ 50412 ........................................................................ 50413 ........................................................................ 50414 ........................................................................ 50415 ........................................................................ 50416 ........................................................................ 50417 ........................................................................ 50418 ........................................................................ 50419 ........................................................................ 50420 ........................................................................ 50421 ........................................................................ 50422 ........................................................................ 50423 ........................................................................ 50424 ........................................................................ 50425 ........................................................................ 50426 ........................................................................ 50427 ........................................................................ 50428 ........................................................................ 50429 ........................................................................ 50430 ........................................................................ 50431 ........................................................................ 50432 ........................................................................ 50433 ........................................................................ 50434 ........................................................................ 50435 ........................................................................ 50436 ........................................................................ 50437 ........................................................................ 50438 ........................................................................ 50439 ........................................................................ 50440 ........................................................................ 50441 ........................................................................ 50442 ........................................................................ 50443 ........................................................................ 50444 ........................................................................ 50445 ........................................................................ 50446 ........................................................................ 50447 ........................................................................ 50448 ........................................................................ 50449 ........................................................................ 50450 ........................................................................ 50451 ........................................................................ 50452 ........................................................................ 50453 ........................................................................ 50454 ........................................................................ 50455 ........................................................................ 50456 ........................................................................ 50457 ........................................................................ 50458 ........................................................................ 50459 ........................................................................ 50460 ........................................................................ 50461 ........................................................................ 50462 ........................................................................ 50463 ........................................................................ 50464 ........................................................................ 50465 ........................................................................ 50466 ........................................................................ 50467 ........................................................................ 50468 ........................................................................ 50469 ........................................................................ 50470 ........................................................................ 50471 ........................................................................ 50472 ........................................................................ 50473 ........................................................................ 50474 ........................................................................ 50475 ........................................................................ 50476 ........................................................................ 50477 ........................................................................ 50478 ........................................................................ 50479 ........................................................................ 50480 ........................................................................ 50481 ........................................................................ 50482 ........................................................................ 50483 ........................................................................ 50484 ........................................................................ 50485 ........................................................................ 50486 ........................................................................ 50487 ........................................................................ 50488 ........................................................................ 50489 ........................................................................ 50490 ........................................................................ 50491 ........................................................................ 50492 ........................................................................ 50493 ........................................................................ 50494 ........................................................................ 50495 ........................................................................ 50496 ........................................................................ 50497 ........................................................................ 50498 ........................................................................ 50499 ........................................................................ 50500 ........................................................................ 50501 ........................................................................ 50502 ........................................................................ 50503 ........................................................................ 50504 ........................................................................ 50505 ........................................................................ 50506 ........................................................................ 50507 ........................................................................ 50508 ........................................................................ 50509 ........................................................................ 50510 ........................................................................ 50511 ........................................................................ 50512 ........................................................................ 50513 ........................................................................ 50514 ........................................................................ 50515 ........................................................................ 50516 ........................................................................ 50517 ........................................................................ 50518 ........................................................................ 50519 ........................................................................ 50520 ........................................................................ 50521 ........................................................................ 50522 ........................................................................ 50523 ........................................................................ 50524 ........................................................................ 50525 ........................................................................ 50526 ........................................................................ 50527 ........................................................................ 50528 ........................................................................ 50529 ........................................................................ 50530 ........................................................................ 50531 ........................................................................ 50532 ........................................................................ 50533 ........................................................................ 50534 ........................................................................ 50535 ........................................................................ 50536 ........................................................................ 50537 ........................................................................ 50538 ........................................................................ 50539 ........................................................................ 50540 ........................................................................ 50541 ........................................................................ 50542 ........................................................................ 50543 ........................................................................ 50544 ........................................................................ 50545 ........................................................................ 50546 ........................................................................ 50547 ........................................................................ 50548 ........................................................................ 50549 ........................................................................ 50550 ........................................................................ 50551 ........................................................................ 50552 ........................................................................ 50553 ........................................................................ 50554 ........................................................................ 50555 ........................................................................ 50556 ........................................................................ 50557 ........................................................................ 50558 ........................................................................ 50559 ........................................................................ 50560 ........................................................................ 50561 ........................................................................ 50562 ........................................................................ 50563 ........................................................................ 50564 ........................................................................ 50565 ........................................................................ 50566 ........................................................................ 50567 ........................................................................ 50568 ........................................................................ 50569 ........................................................................ 50570 ........................................................................ 50571 ........................................................................ 50572 ........................................................................ 50573 ........................................................................ 50574 ........................................................................ 50575 ........................................................................ 50576 ........................................................................ 50577 ........................................................................ 50578 ........................................................................ 50579 ........................................................................ 50580 ........................................................................ 50581 ........................................................................ 50582 ........................................................................ 50583 ........................................................................ 50584 ........................................................................ 50585 ........................................................................ 50586 ........................................................................ 50587 ........................................................................ 50588 ........................................................................ 50589 ........................................................................ 50590 ........................................................................ 50591 ........................................................................ 50592 ........................................................................ 50593 ........................................................................ 50594 ........................................................................ 50595 ........................................................................ 50596 ........................................................................ 50597 ........................................................................ 50598 ........................................................................ 50599 ........................................................................ 50600 ........................................................................ 50601 ........................................................................ 50602 ........................................................................ 50603 ........................................................................ 50604 ........................................................................ 50605 ........................................................................ 50606 ........................................................................ 50607 ........................................................................ 50608 ........................................................................ 50609 ........................................................................ 50610 ........................................................................ 50611 ........................................................................ 50612 ........................................................................ 50613 ........................................................................ 50614 ........................................................................ 50615 ........................................................................ 50616 ........................................................................ 50617 ........................................................................ 50618 ........................................................................ 50619 ........................................................................ 50620 ........................................................................ 50621 ........................................................................ 50622 ........................................................................ 50623 ........................................................................ 50624 ........................................................................ 50625 ........................................................................ 50626 ........................................................................ 50627 ........................................................................ 50628 ........................................................................ 50629 ........................................................................ 50630 ........................................................................ 50631 ........................................................................ 50632 ........................................................................ 50633 ........................................................................ 50634 ........................................................................ 50635 ........................................................................ 50636 ........................................................................ 50637 ........................................................................ 50638 ........................................................................ 50639 ........................................................................ 50640 ........................................................................ 50641 ........................................................................ 50642 ........................................................................ 50643 ........................................................................ 50644 ........................................................................ 50645 ........................................................................ 50646 ........................................................................ 50647 ........................................................................ 50648 ........................................................................ 50649 ........................................................................ 50650 ........................................................................ 50651 ........................................................................ 50652 ........................................................................ 50653 ........................................................................ 50654 ........................................................................ 50655 ........................................................................ 50656 ........................................................................ 50657 ........................................................................ 50658 ........................................................................ 50659 ........................................................................ 50660 ........................................................................ 50661 ........................................................................ 50662 ........................................................................ 50663 ........................................................................ 50664 ........................................................................ 50665 ........................................................................ 50666 ........................................................................ 50667 ........................................................................ 50668 ........................................................................ 50669 ........................................................................ 50670 ........................................................................ 50671 ........................................................................ 50672 ........................................................................ 50673 ........................................................................ 50674 ........................................................................ 50675 ........................................................................ 50676 ........................................................................ 50677 ........................................................................ 50678 ........................................................................ 50679 ........................................................................ 50680 ........................................................................ 50681 ........................................................................ 50682 ........................................................................ 50683 ........................................................................ 50684 ........................................................................ 50685 ........................................................................ 50686 ........................................................................ 50687 ........................................................................ 50688 ........................................................................ 50689 ........................................................................ 50690 ........................................................................ 50691 ........................................................................ 50692 ........................................................................ 50693 ........................................................................ 50694 ........................................................................ 50695 ........................................................................ 50696 ........................................................................ 50697 ........................................................................ 50698 ........................................................................ 50699 ........................................................................ 50700 ........................................................................ 50701 ........................................................................ 50702 ........................................................................ 50703 ........................................................................ 50704 ........................................................................ 50705 ........................................................................ 50706 ........................................................................ 50707 ........................................................................ 50708 ........................................................................ 50709 ........................................................................ 50710 ........................................................................ 50711 ........................................................................ 50712 ........................................................................ 50713 ........................................................................ 50714 ........................................................................ 50715 ........................................................................ 50716 ........................................................................ 50717 ........................................................................ 50718 ........................................................................ 50719 ........................................................................ 50720 ........................................................................ 50721 ........................................................................ 50722 ........................................................................ 50723 ........................................................................ 50724 ........................................................................ 50725 ........................................................................ 50726 ........................................................................ 50727 ........................................................................ 50728 ........................................................................ 50729 ........................................................................ 50730 ........................................................................ 50731 ........................................................................ 50732 ........................................................................ 50733 ........................................................................ 50734 ........................................................................ 50735 ........................................................................ 50736 ........................................................................ 50737 ........................................................................ 50738 ........................................................................ 50739 ........................................................................ 50740 ........................................................................ 50741 ........................................................................ 50742 ........................................................................ 50743 ........................................................................ 50744 ........................................................................ 50745 ........................................................................ 50746 ........................................................................ 50747 ........................................................................ 50748 ........................................................................ 50749 ........................................................................ 50750 ........................................................................ 50751 ........................................................................ 50752 ........................................................................ 50753 ........................................................................ 50754 ........................................................................ 50755 ........................................................................ 50756 ........................................................................ 50757 ........................................................................ 50758 ........................................................................ 50759 ........................................................................ 50760 ........................................................................ 50761 ........................................................................ 50762 ........................................................................ 50763 ........................................................................ 50764 ........................................................................ 50765 ........................................................................ 50766 ........................................................................ 50767 ........................................................................ 50768 ........................................................................ 50769 ........................................................................ 50770 ........................................................................ 50771 ........................................................................ 50772 ........................................................................ 50773 ........................................................................ 50774 ........................................................................ 50775 ........................................................................ 50776 ........................................................................ 50777 ........................................................................ 50778 ........................................................................ 50779 ........................................................................ 50780 ........................................................................ 50781 ........................................................................ 50782 ........................................................................ 50783 ........................................................................ 50784 ........................................................................ 50785 ........................................................................ 50786 ........................................................................ 50787 ........................................................................ 50788 ........................................................................ 50789 ........................................................................ 50790 ........................................................................ 50791 ........................................................................ 50792 ........................................................................ 50793 ........................................................................ 50794 ........................................................................ 50795 ........................................................................ 50796 ........................................................................ 50797 ........................................................................ 50798 ........................................................................ 50799 ........................................................................ 50800 ........................................................................ 50801 ........................................................................ 50802 ........................................................................ 50803 ........................................................................ 50804 ........................................................................ 50805 ........................................................................ 50806 ........................................................................ 50807 ........................................................................ 50808 ........................................................................ 50809 ........................................................................ 50810 ........................................................................ 50811 ........................................................................ 50812 ........................................................................ 50813 ........................................................................ 50814 ........................................................................ 50815 ........................................................................ 50816 ........................................................................ 50817 ........................................................................ 50818 ........................................................................ 50819 ........................................................................ 50820 ........................................................................ 50821 ........................................................................ 50822 ........................................................................ 50823 ........................................................................ 50824 ........................................................................ 50825 ........................................................................ 50826 ........................................................................ 50827 ........................................................................ 50828 ........................................................................ 50829 ........................................................................ 50830 ........................................................................ 50831 ........................................................................ 50832 ........................................................................ 50833 ........................................................................ 50834 ........................................................................ 50835 ........................................................................ 50836 ........................................................................ 50837 ........................................................................ 50838 ........................................................................ 50839 ........................................................................ 50840 ........................................................................ 50841 ........................................................................ 50842 ........................................................................ 50843 ........................................................................ 50844 ........................................................................ 50845 ........................................................................ 50846 ........................................................................ 50847 ........................................................................ 50848 ........................................................................ 50849 ........................................................................ 50850 ........................................................................ 50851 ........................................................................ 50852 ........................................................................ 50853 ........................................................................ 50854 ........................................................................ 50855 ........................................................................ 50856 ........................................................................ 50857 ........................................................................ 50858 ........................................................................ 50859 ........................................................................ 50860 ........................................................................ 50861 ........................................................................ 50862 ........................................................................ 50863 ........................................................................ 50864 ........................................................................ 50865 ........................................................................ 50866 ........................................................................ 50867 ........................................................................ 50868 ........................................................................ 50869 ........................................................................ 50870 ........................................................................ 50871 ........................................................................ 50872 ........................................................................ 50873 ........................................................................ 50874 ........................................................................ 50875 ........................................................................ 50876 ........................................................................ 50877 ........................................................................ 50878 ........................................................................ 50879 ........................................................................ 50880 ........................................................................ 50881 ........................................................................ 50882 ........................................................................ 50883 ........................................................................ 50884 ........................................................................ 50885 ........................................................................ 50886 ........................................................................ 50887 ........................................................................ 50888 ........................................................................ 50889 ........................................................................ 50890 ........................................................................ 50891 ........................................................................ 50892 ........................................................................ 50893 ........................................................................ 50894 ........................................................................ 50895 ........................................................................ 50896 ........................................................................ 50897 ........................................................................ 50898 ........................................................................ 50899 ........................................................................ 50900 ........................................................................ 50901 ........................................................................ 50902 ........................................................................ 50903 ........................................................................ 50904 ........................................................................ 50905 ........................................................................ 50906 ........................................................................ 50907 ........................................................................ 50908 ........................................................................ 50909 ........................................................................ 50910 ........................................................................ 50911 ........................................................................ 50912 ........................................................................ 50913 ........................................................................ 50914 ........................................................................ 50915 ........................................................................ 50916 ........................................................................ 50917 ........................................................................ 50918 ........................................................................ 50919 ........................................................................ 50920 ........................................................................ 50921 ........................................................................ 50922 ........................................................................ 50923 ........................................................................ 50924 ........................................................................ 50925 ........................................................................ 50926 ........................................................................ 50927 ........................................................................ 50928 ........................................................................ 50929 ........................................................................ 50930 ........................................................................ 50931 ........................................................................ 50932 ........................................................................ 50933 ........................................................................ 50934 ........................................................................ 50935 ........................................................................ 50936 ........................................................................ 50937 ........................................................................ 50938 ........................................................................ 50939 ........................................................................ 50940 ........................................................................ 50941 ........................................................................ 50942 ........................................................................ 50943 ........................................................................ 50944 ........................................................................ 50945 ........................................................................ 50946 ........................................................................ 50947 ........................................................................ 50948 ........................................................................ 50949 ........................................................................ 50950 ........................................................................ 50951 ........................................................................ 50952 ........................................................................ 50953 ........................................................................ 50954 ........................................................................ 50955 ........................................................................ 50956 ........................................................................ 50957 ........................................................................ 50958 ........................................................................ 50959 ........................................................................ 50960 ........................................................................ 50961 ........................................................................ 50962 ........................................................................ 50963 ........................................................................ 50964 ........................................................................ 50965 ........................................................................ 50966 ........................................................................ 50967 ........................................................................ 50968 ........................................................................ 50969 ........................................................................ 50970 ........................................................................ 50971 ........................................................................ 50972 ........................................................................ 50973 ........................................................................ 50974 ........................................................................ 50975 ........................................................................ 50976 ........................................................................ 50977 ........................................................................ 50978 ........................................................................ 50979 ........................................................................ 50980 ........................................................................ 50981 ........................................................................ 50982 ........................................................................ 50983 ........................................................................ 50984 ........................................................................ 50985 ........................................................................ 50986 ........................................................................ 50987 ........................................................................ 50988 ........................................................................ 50989 ........................................................................ 50990 ........................................................................ 50991 ........................................................................ 50992 ........................................................................ 50993 ........................................................................ 50994 ........................................................................ 50995 ........................................................................ 50996 ........................................................................ 50997 ........................................................................ 50998 ........................................................................ 50999 ........................................................................ 51000 ........................................................................ 51001 ........................................................................ 51002 ........................................................................ 51003 ........................................................................ 51004 ........................................................................ 51005 ........................................................................ 51006 ........................................................................ 51007 ........................................................................ 51008 ........................................................................ 51009 ........................................................................ 51010 ........................................................................ 51011 ........................................................................ 51012 ........................................................................ 51013 ........................................................................ 51014 ........................................................................ 51015 ........................................................................ 51016 ........................................................................ 51017 ........................................................................ 51018 ........................................................................ 51019 ........................................................................ 51020 ........................................................................ 51021 ........................................................................ 51022 ........................................................................ 51023 ........................................................................ 51024 ........................................................................ 51025 ........................................................................ 51026 ........................................................................ 51027 ........................................................................ 51028 ........................................................................ 51029 ........................................................................ 51030 ........................................................................ 51031 ........................................................................ 51032 ........................................................................ 51033 ........................................................................ 51034 ........................................................................ 51035 ........................................................................ 51036 ........................................................................ 51037 ........................................................................ 51038 ........................................................................ 51039 ........................................................................ 51040 ........................................................................ 51041 ........................................................................ 51042 ........................................................................ 51043 ........................................................................ 51044 ........................................................................ 51045 ........................................................................ 51046 ........................................................................ 51047 ........................................................................ 51048 ........................................................................ 51049 ........................................................................ 51050 ........................................................................ 51051 ........................................................................ 51052 ........................................................................ 51053 ........................................................................ 51054 ........................................................................ 51055 ........................................................................ 51056 ........................................................................ 51057 ........................................................................ 51058 ........................................................................ 51059 ........................................................................ 51060 ........................................................................ 51061 ........................................................................ 51062 ........................................................................ 51063 ........................................................................ 51064 ........................................................................ 51065 ........................................................................ 51066 ........................................................................ 51067 ........................................................................ 51068 ........................................................................ 51069 ........................................................................ 51070 ........................................................................ 51071 ........................................................................ 51072 ........................................................................ 51073 ........................................................................ 51074 ........................................................................ 51075 ........................................................................ 51076 ........................................................................ 51077 ........................................................................ 51078 ........................................................................ 51079 ........................................................................ 51080 ........................................................................ 51081 ........................................................................ 51082 ........................................................................ 51083 ........................................................................ 51084 ........................................................................ 51085 ........................................................................ 51086 ........................................................................ 51087 ........................................................................ 51088 ........................................................................ 51089 ........................................................................ 51090 ........................................................................ 51091 ........................................................................ 51092 ........................................................................ 51093 ........................................................................ 51094 ........................................................................ 51095 ........................................................................ 51096 ........................................................................ 51097 ........................................................................ 51098 ........................................................................ 51099 ........................................................................ 51100 ........................................................................ 51101 ........................................................................ 51102 ........................................................................ 51103 ........................................................................ 51104 ........................................................................ 51105 ........................................................................ 51106 ........................................................................ 51107 ........................................................................ 51108 ........................................................................ 51109 ........................................................................ 51110 ........................................................................ 51111 ........................................................................ 51112 ........................................................................ 51113 ........................................................................ 51114 ........................................................................ 51115 ........................................................................ 51116 ........................................................................ 51117 ........................................................................ 51118 ........................................................................ 51119 ........................................................................ 51120 ........................................................................ 51121 ........................................................................ 51122 ........................................................................ 51123 ........................................................................ 51124 ........................................................................ 51125 ........................................................................ 51126 ........................................................................ 51127 ........................................................................ 51128 ........................................................................ 51129 ........................................................................ 51130 ........................................................................ 51131 ........................................................................ 51132 ........................................................................ 51133 ........................................................................ 51134 ........................................................................ 51135 ........................................................................ 51136 ........................................................................ 51137 ........................................................................ 51138 ........................................................................ 51139 ........................................................................ 51140 ........................................................................ 51141 ........................................................................ 51142 ........................................................................ 51143 ........................................................................ 51144 ........................................................................ 51145 ........................................................................ 51146 ........................................................................ 51147 ........................................................................ 51148 ........................................................................ 51149 ........................................................................ 51150 ........................................................................ 51151 ........................................................................ 51152 ........................................................................ 51153 ........................................................................ 51154 ........................................................................ 51155 ........................................................................ 51156 ........................................................................ 51157 ........................................................................ 51158 ........................................................................ 51159 ........................................................................ 51160 ........................................................................ 51161 ........................................................................ 51162 ........................................................................ 51163 ........................................................................ 51164 ........................................................................ 51165 ........................................................................ 51166 ........................................................................ 51167 ........................................................................ 51168 ........................................................................ 51169 ........................................................................ 51170 ........................................................................ 51171 ........................................................................ 51172 ........................................................................ 51173 ........................................................................ 51174 ........................................................................ 51175 ........................................................................ 51176 ........................................................................ 51177 ........................................................................ 51178 ........................................................................ 51179 ........................................................................ 51180 ........................................................................ 51181 ........................................................................ 51182 ........................................................................ 51183 ........................................................................ 51184 ........................................................................ 51185 ........................................................................ 51186 ........................................................................ 51187 ........................................................................ 51188 ........................................................................ 51189 ........................................................................ 51190 ........................................................................ 51191 ........................................................................ 51192 ........................................................................ 51193 ........................................................................ 51194 ........................................................................ 51195 ........................................................................ 51196 ........................................................................ 51197 ........................................................................ 51198 ........................................................................ 51199 ........................................................................ 51200 ........................................................................ 51201 ........................................................................ 51202 ........................................................................ 51203 ........................................................................ 51204 ........................................................................ 51205 ........................................................................ 51206 ........................................................................ 51207 ........................................................................ 51208 ........................................................................ 51209 ........................................................................ 51210 ........................................................................ 51211 ........................................................................ 51212 ........................................................................ 51213 ........................................................................ 51214 ........................................................................ 51215 ........................................................................ 51216 ........................................................................ 51217 ........................................................................ 51218 ........................................................................ 51219 ........................................................................ 51220 ........................................................................ 51221 ........................................................................ 51222 ........................................................................ 51223 ........................................................................ 51224 ........................................................................ 51225 ........................................................................ 51226 ........................................................................ 51227 ........................................................................ 51228 ........................................................................ 51229 ........................................................................ 51230 ........................................................................ 51231 ........................................................................ 51232 ........................................................................ 51233 ........................................................................ 51234 ........................................................................ 51235 ........................................................................ 51236 ........................................................................ 51237 ........................................................................ 51238 ........................................................................ 51239 ........................................................................ 51240 ........................................................................ 51241 ........................................................................ 51242 ........................................................................ 51243 ........................................................................ 51244 ........................................................................ 51245 ........................................................................ 51246 ........................................................................ 51247 ........................................................................ 51248 ........................................................................ 51249 ........................................................................ 51250 ........................................................................ 51251 ........................................................................ 51252 ........................................................................ 51253 ........................................................................ 51254 ........................................................................ 51255 ........................................................................ 51256 ........................................................................ 51257 ........................................................................ 51258 ........................................................................ 51259 ........................................................................ 51260 ........................................................................ 51261 ........................................................................ 51262 ........................................................................ 51263 ........................................................................ 51264 ........................................................................ 51265 ........................................................................ 51266 ........................................................................ 51267 ........................................................................ 51268 ........................................................................ 51269 ........................................................................ 51270 ........................................................................ 51271 ........................................................................ 51272 ........................................................................ 51273 ........................................................................ 51274 ........................................................................ 51275 ........................................................................ 51276 ........................................................................ 51277 ........................................................................ 51278 ........................................................................ 51279 ........................................................................ 51280 ........................................................................ 51281 ........................................................................ 51282 ........................................................................ 51283 ........................................................................ 51284 ........................................................................ 51285 ........................................................................ 51286 ........................................................................ 51287 ........................................................................ 51288 ........................................................................ 51289 ........................................................................ 51290 ........................................................................ 51291 ........................................................................ 51292 ........................................................................ 51293 ........................................................................ 51294 ........................................................................ 51295 ........................................................................ 51296 ........................................................................ 51297 ........................................................................ 51298 ........................................................................ 51299 ........................................................................ 51300 ........................................................................ 51301 ........................................................................ 51302 ........................................................................ 51303 ........................................................................ 51304 ........................................................................ 51305 ........................................................................ 51306 ........................................................................ 51307 ........................................................................ 51308 ........................................................................ 51309 ........................................................................ 51310 ........................................................................ 51311 ........................................................................ 51312 ........................................................................ 51313 ........................................................................ 51314 ........................................................................ 51315 ........................................................................ 51316 ........................................................................ 51317 ........................................................................ 51318 ........................................................................ 51319 ........................................................................ 51320 ........................................................................ 51321 ........................................................................ 51322 ........................................................................ 51323 ........................................................................ 51324 ........................................................................ 51325 ........................................................................ 51326 ........................................................................ 51327 ........................................................................ 51328 ........................................................................ 51329 ........................................................................ 51330 ........................................................................ 51331 ........................................................................ 51332 ........................................................................ 51333 ........................................................................ 51334 ........................................................................ 51335 ........................................................................ 51336 ........................................................................ 51337 ........................................................................ 51338 ........................................................................ 51339 ........................................................................ 51340 ........................................................................ 51341 ........................................................................ 51342 ........................................................................ 51343 ........................................................................ 51344 ........................................................................ 51345 ........................................................................ 51346 ........................................................................ 51347 ........................................................................ 51348 ........................................................................ 51349 ........................................................................ 51350 ........................................................................ 51351 ........................................................................ 51352 ........................................................................ 51353 ........................................................................ 51354 ........................................................................ 51355 ........................................................................ 51356 ........................................................................ 51357 ........................................................................ 51358 ........................................................................ 51359 ........................................................................ 51360 ........................................................................ 51361 ........................................................................ 51362 ........................................................................ 51363 ........................................................................ 51364 ........................................................................ 51365 ........................................................................ 51366 ........................................................................ 51367 ........................................................................ 51368 ........................................................................ 51369 ........................................................................ 51370 ........................................................................ 51371 ........................................................................ 51372 ........................................................................ 51373 ........................................................................ 51374 ........................................................................ 51375 ........................................................................ 51376 ........................................................................ 51377 ........................................................................ 51378 ........................................................................ 51379 ........................................................................ 51380 ........................................................................ 51381 ........................................................................ 51382 ........................................................................ 51383 ........................................................................ 51384 ........................................................................ 51385 ........................................................................ 51386 ........................................................................ 51387 ........................................................................ 51388 ........................................................................ 51389 ........................................................................ 51390 ........................................................................ 51391 ........................................................................ 51392 ........................................................................ 51393 ........................................................................ 51394 ........................................................................ 51395 ........................................................................ 51396 ........................................................................ 51397 ........................................................................ 51398 ........................................................................ 51399 ........................................................................ 51400 ........................................................................ 51401 ........................................................................ 51402 ........................................................................ 51403 ........................................................................ 51404 ........................................................................ 51405 ........................................................................ 51406 ........................................................................ 51407 ........................................................................ 51408 ........................................................................ 51409 ........................................................................ 51410 ........................................................................ 51411 ........................................................................ 51412 ........................................................................ 51413 ........................................................................ 51414 ........................................................................ 51415 ........................................................................ 51416 ........................................................................ 51417 ........................................................................ 51418 ........................................................................ 51419 ........................................................................ 51420 ........................................................................ 51421 ........................................................................ 51422 ........................................................................ 51423 ........................................................................ 51424 ........................................................................ 51425 ........................................................................ 51426 ........................................................................ 51427 ........................................................................ 51428 ........................................................................ 51429 ........................................................................ 51430 ........................................................................ 51431 ........................................................................ 51432 ........................................................................ 51433 ........................................................................ 51434 ........................................................................ 51435 ........................................................................ 51436 ........................................................................ 51437 ........................................................................ 51438 ........................................................................ 51439 ........................................................................ 51440 ........................................................................ 51441 ........................................................................ 51442 ........................................................................ 51443 ........................................................................ 51444 ........................................................................ 51445 ........................................................................ 51446 ........................................................................ 51447 ........................................................................ 51448 ........................................................................ 51449 ........................................................................ 51450 ........................................................................ 51451 ........................................................................ 51452 ........................................................................ 51453 ........................................................................ 51454 ........................................................................ 51455 ........................................................................ 51456 ........................................................................ 51457 ........................................................................ 51458 ........................................................................ 51459 ........................................................................ 51460 ........................................................................ 51461 ........................................................................ 51462 ........................................................................ 51463 ........................................................................ 51464 ........................................................................ 51465 ........................................................................ 51466 ........................................................................ 51467 ........................................................................ 51468 ........................................................................ 51469 ........................................................................ 51470 ........................................................................ 51471 ........................................................................ 51472 ........................................................................ 51473 ........................................................................ 51474 ........................................................................ 51475 ........................................................................ 51476 ........................................................................ 51477 ........................................................................ 51478 ........................................................................ 51479 ........................................................................ 51480 ........................................................................ 51481 ........................................................................ 51482 ........................................................................ 51483 ........................................................................ 51484 ........................................................................ 51485 ........................................................................ 51486 ........................................................................ 51487 ........................................................................ 51488 ........................................................................ 51489 ........................................................................ 51490 ........................................................................ 51491 ........................................................................ 51492 ........................................................................ 51493 ........................................................................ 51494 ........................................................................ 51495 ........................................................................ 51496 ........................................................................ 51497 ........................................................................ 51498 ........................................................................ 51499 ........................................................................ 51500 ........................................................................ 51501 ........................................................................ 51502 ........................................................................ 51503 ........................................................................ 51504 ........................................................................ 51505 ........................................................................ 51506 ........................................................................ 51507 ........................................................................ 51508 ........................................................................ 51509 ........................................................................ 51510 ........................................................................ 51511 ........................................................................ 51512 ........................................................................ 51513 ........................................................................ 51514 ........................................................................ 51515 ........................................................................ 51516 ........................................................................ 51517 ........................................................................ 51518 ........................................................................ 51519 ........................................................................ 51520 ........................................................................ 51521 ........................................................................ 51522 ........................................................................ 51523 ........................................................................ 51524 ........................................................................ 51525 ........................................................................ 51526 ........................................................................ 51527 ........................................................................ 51528 ........................................................................ 51529 ........................................................................ 51530 ........................................................................ 51531 ........................................................................ 51532 ........................................................................ 51533 ........................................................................ 51534 ........................................................................ 51535 ........................................................................ 51536 ........................................................................ 51537 ........................................................................ 51538 ........................................................................ 51539 ........................................................................ 51540 ........................................................................ 51541 ........................................................................ 51542 ........................................................................ 51543 ........................................................................ 51544 ........................................................................ 51545 ........................................................................ 51546 ........................................................................ 51547 ........................................................................ 51548 ........................................................................ 51549 ........................................................................ 51550 ........................................................................ 51551 ........................................................................ 51552 ........................................................................ 51553 ........................................................................ 51554 ........................................................................ 51555 ........................................................................ 51556 ........................................................................ 51557 ........................................................................ 51558 ........................................................................ 51559 ........................................................................ 51560 ........................................................................ 51561 ........................................................................ 51562 ........................................................................ 51563 ........................................................................ 51564 ........................................................................ 51565 ........................................................................ 51566 ........................................................................ 51567 ........................................................................ 51568 ........................................................................ 51569 ........................................................................ 51570 ........................................................................ 51571 ........................................................................ 51572 ........................................................................ 51573 ........................................................................ 51574 ........................................................................ 51575 ........................................................................ 51576 ........................................................................ 51577 ........................................................................ 51578 ........................................................................ 51579 ........................................................................ 51580 ........................................................................ 51581 ........................................................................ 51582 ........................................................................ 51583 ........................................................................ 51584 ........................................................................ 51585 ........................................................................ 51586 ........................................................................ 51587 ........................................................................ 51588 ........................................................................ 51589 ........................................................................ 51590 ........................................................................ 51591 ........................................................................ 51592 ........................................................................ 51593 ........................................................................ 51594 ........................................................................ 51595 ........................................................................ 51596 ........................................................................ 51597 ........................................................................ 51598 ........................................................................ 51599 ........................................................................ 51600 ........................................................................ 51601 ........................................................................ 51602 ........................................................................ 51603 ........................................................................ 51604 ........................................................................ 51605 ........................................................................ 51606 ........................................................................ 51607 ........................................................................ 51608 ........................................................................ 51609 ........................................................................ 51610 ........................................................................ 51611 ........................................................................ 51612 ........................................................................ 51613 ........................................................................ 51614 ........................................................................ 51615 ........................................................................ 51616 ........................................................................ 51617 ........................................................................ 51618 ........................................................................ 51619 ........................................................................ 51620 ........................................................................ 51621 ........................................................................ 51622 ........................................................................ 51623 ........................................................................ 51624 ........................................................................ 51625 ........................................................................ 51626 ........................................................................ 51627 ........................................................................ 51628 ........................................................................ 51629 ........................................................................ 51630 ........................................................................ 51631 ........................................................................ 51632 ........................................................................ 51633 ........................................................................ 51634 ........................................................................ 51635 ........................................................................ 51636 ........................................................................ 51637 ........................................................................ 51638 ........................................................................ 51639 ........................................................................ 51640 ........................................................................ 51641 ........................................................................ 51642 ........................................................................ 51643 ........................................................................ 51644 ........................................................................ 51645 ........................................................................ 51646 ........................................................................ 51647 ........................................................................ 51648 ........................................................................ 51649 ........................................................................ 51650 ........................................................................ 51651 ........................................................................ 51652 ........................................................................ 51653 ........................................................................ 51654 ........................................................................ 51655 ........................................................................ 51656 ........................................................................ 51657 ........................................................................ 51658 ........................................................................ 51659 ........................................................................ 51660 ........................................................................ 51661 ........................................................................ 51662 ........................................................................ 51663 ........................................................................ 51664 ........................................................................ 51665 ........................................................................ 51666 ........................................................................ 51667 ........................................................................ 51668 ........................................................................ 51669 ........................................................................ 51670 ........................................................................ 51671 ........................................................................ 51672 ........................................................................ 51673 ........................................................................ 51674 ........................................................................ 51675 ........................................................................ 51676 ........................................................................ 51677 ........................................................................ 51678 ........................................................................ 51679 ........................................................................ 51680 ........................................................................ 51681 ........................................................................ 51682 ........................................................................ 51683 ........................................................................ 51684 ........................................................................ 51685 ........................................................................ 51686 ........................................................................ 51687 ........................................................................ 51688 ........................................................................ 51689 ........................................................................ 51690 ........................................................................ 51691 ........................................................................ 51692 ........................................................................ 51693 ........................................................................ 51694 ........................................................................ 51695 ........................................................................ 51696 ........................................................................ 51697 ........................................................................ 51698 ........................................................................ 51699 ........................................................................ 51700 ........................................................................ 51701 ........................................................................ 51702 ........................................................................ 51703 ........................................................................ 51704 ........................................................................ 51705 ........................................................................ 51706 ........................................................................ 51707 ........................................................................ 51708 ........................................................................ 51709 ........................................................................ 51710 ........................................................................ 51711 ........................................................................ 51712 ........................................................................ 51713 ........................................................................ 51714 ........................................................................ 51715 ........................................................................ 51716 ........................................................................ 51717 ........................................................................ 51718 ........................................................................ 51719 ........................................................................ 51720 ........................................................................ 51721 ........................................................................ 51722 ........................................................................ 51723 ........................................................................ 51724 ........................................................................ 51725 ........................................................................ 51726 ........................................................................ 51727 ........................................................................ 51728 ........................................................................ 51729 ........................................................................ 51730 ........................................................................ 51731 ........................................................................ 51732 ........................................................................ 51733 ........................................................................ 51734 ........................................................................ 51735 ........................................................................ 51736 ........................................................................ 51737 ........................................................................ 51738 ........................................................................ 51739 ........................................................................ 51740 ........................................................................ 51741 ........................................................................ 51742 ........................................................................ 51743 ........................................................................ 51744 ........................................................................ 51745 ........................................................................ 51746 ........................................................................ 51747 ........................................................................ 51748 ........................................................................ 51749 ........................................................................ 51750 ........................................................................ 51751 ........................................................................ 51752 ........................................................................ 51753 ........................................................................ 51754 ........................................................................ 51755 ........................................................................ 51756 ........................................................................ 51757 ........................................................................ 51758 ........................................................................ 51759 ........................................................................ 51760 ........................................................................ 51761 ........................................................................ 51762 ........................................................................ 51763 ........................................................................ 51764 ........................................................................ 51765 ........................................................................ 51766 ........................................................................ 51767 ........................................................................ 51768 ........................................................................ 51769 ........................................................................ 51770 ........................................................................ 51771 ........................................................................ 51772 ........................................................................ 51773 ........................................................................ 51774 ........................................................................ 51775 ........................................................................ 51776 ........................................................................ 51777 ........................................................................ 51778 ........................................................................ 51779 ........................................................................ 51780 ........................................................................ 51781 ........................................................................ 51782 ........................................................................ 51783 ........................................................................ 51784 ........................................................................ 51785 ........................................................................ 51786 ........................................................................ 51787 ........................................................................ 51788 ........................................................................ 51789 ........................................................................ 51790 ........................................................................ 51791 ........................................................................ 51792 ........................................................................ 51793 ........................................................................ 51794 ........................................................................ 51795 ........................................................................ 51796 ........................................................................ 51797 ........................................................................ 51798 ........................................................................ 51799 ........................................................................ 51800 ........................................................................ 51801 ........................................................................ 51802 ........................................................................ 51803 ........................................................................ 51804 ........................................................................ 51805 ........................................................................ 51806 ........................................................................ 51807 ........................................................................ 51808 ........................................................................ 51809 ........................................................................ 51810 ........................................................................ 51811 ........................................................................ 51812 ........................................................................ 51813 ........................................................................ 51814 ........................................................................ 51815 ........................................................................ 51816 ........................................................................ 51817 ........................................................................ 51818 ........................................................................ 51819 ........................................................................ 51820 ........................................................................ 51821 ........................................................................ 51822 ........................................................................ 51823 ........................................................................ 51824 ........................................................................ 51825 ........................................................................ 51826 ........................................................................ 51827 ........................................................................ 51828 ........................................................................ 51829 ........................................................................ 51830 ........................................................................ 51831 ........................................................................ 51832 ........................................................................ 51833 ........................................................................ 51834 ........................................................................ 51835 ........................................................................ 51836 ........................................................................ 51837 ........................................................................ 51838 ........................................................................ 51839 ........................................................................ 51840 ........................................................................ 51841 ........................................................................ 51842 ........................................................................ 51843 ........................................................................ 51844 ........................................................................ 51845 ........................................................................ 51846 ........................................................................ 51847 ........................................................................ 51848 ........................................................................ 51849 ........................................................................ 51850 ........................................................................ 51851 ........................................................................ 51852 ........................................................................ 51853 ........................................................................ 51854 ........................................................................ 51855 ........................................................................ 51856 ........................................................................ 51857 ........................................................................ 51858 ........................................................................ 51859 ........................................................................ 51860 ........................................................................ 51861 ........................................................................ 51862 ........................................................................ 51863 ........................................................................ 51864 ........................................................................ 51865 ........................................................................ 51866 ........................................................................ 51867 ........................................................................ 51868 ........................................................................ 51869 ........................................................................ 51870 ........................................................................ 51871 ........................................................................ 51872 ........................................................................ 51873 ........................................................................ 51874 ........................................................................ 51875 ........................................................................ 51876 ........................................................................ 51877 ........................................................................ 51878 ........................................................................ 51879 ........................................................................ 51880 ........................................................................ 51881 ........................................................................ 51882 ........................................................................ 51883 ........................................................................ 51884 ........................................................................ 51885 ........................................................................ 51886 ........................................................................ 51887 ........................................................................ 51888 ........................................................................ 51889 ........................................................................ 51890 ........................................................................ 51891 ........................................................................ 51892 ........................................................................ 51893 ........................................................................ 51894 ........................................................................ 51895 ........................................................................ 51896 ........................................................................ 51897 ........................................................................ 51898 ........................................................................ 51899 ........................................................................ 51900 ........................................................................ 51901 ........................................................................ 51902 ........................................................................ 51903 ........................................................................ 51904 ........................................................................ 51905 ........................................................................ 51906 ........................................................................ 51907 ........................................................................ 51908 ........................................................................ 51909 ........................................................................ 51910 ........................................................................ 51911 ........................................................................ 51912 ........................................................................ 51913 ........................................................................ 51914 ........................................................................ 51915 ........................................................................ 51916 ........................................................................ 51917 ........................................................................ 51918 ........................................................................ 51919 ........................................................................ 51920 ........................................................................ 51921 ........................................................................ 51922 ........................................................................ 51923 ........................................................................ 51924 ........................................................................ 51925 ........................................................................ 51926 ........................................................................ 51927 ........................................................................ 51928 ........................................................................ 51929 ........................................................................ 51930 ........................................................................ 51931 ........................................................................ 51932 ........................................................................ 51933 ........................................................................ 51934 ........................................................................ 51935 ........................................................................ 51936 ........................................................................ 51937 ........................................................................ 51938 ........................................................................ 51939 ........................................................................ 51940 ........................................................................ 51941 ........................................................................ 51942 ........................................................................ 51943 ........................................................................ 51944 ........................................................................ 51945 ........................................................................ 51946 ........................................................................ 51947 ........................................................................ 51948 ........................................................................ 51949 ........................................................................ 51950 ........................................................................ 51951 ........................................................................ 51952 ........................................................................ 51953 ........................................................................ 51954 ........................................................................ 51955 ........................................................................ 51956 ........................................................................ 51957 ........................................................................ 51958 ........................................................................ 51959 ........................................................................ 51960 ........................................................................ 51961 ........................................................................ 51962 ........................................................................ 51963 ........................................................................ 51964 ........................................................................ 51965 ........................................................................ 51966 ........................................................................ 51967 ........................................................................ 51968 ........................................................................ 51969 ........................................................................ 51970 ........................................................................ 51971 ........................................................................ 51972 ........................................................................ 51973 ........................................................................ 51974 ........................................................................ 51975 ........................................................................ 51976 ........................................................................ 51977 ........................................................................ 51978 ........................................................................ 51979 ........................................................................ 51980 ........................................................................ 51981 ........................................................................ 51982 ........................................................................ 51983 ........................................................................ 51984 ........................................................................ 51985 ........................................................................ 51986 ........................................................................ 51987 ........................................................................ 51988 ........................................................................ 51989 ........................................................................ 51990 ........................................................................ 51991 ........................................................................ 51992 ........................................................................ 51993 ........................................................................ 51994 ........................................................................ 51995 ........................................................................ 51996 ........................................................................ 51997 ........................................................................ 51998 ........................................................................ 51999 ........................................................................ 52000 ........................................................................ 52001 ........................................................................ 52002 ........................................................................ 52003 ........................................................................ 52004 ........................................................................ 52005 ........................................................................ 52006 ........................................................................ 52007 ........................................................................ 52008 ........................................................................ 52009 ........................................................................ 52010 ........................................................................ 52011 ........................................................................ 52012 ........................................................................ 52013 ........................................................................ 52014 ........................................................................ 52015 ........................................................................ 52016 ........................................................................ 52017 ........................................................................ 52018 ........................................................................ 52019 ........................................................................ 52020 ........................................................................ 52021 ........................................................................ 52022 ........................................................................ 52023 ........................................................................ 52024 ........................................................................ 52025 ........................................................................ 52026 ........................................................................ 52027 ........................................................................ 52028 ........................................................................ 52029 ........................................................................ 52030 ........................................................................ 52031 ........................................................................ 52032 ........................................................................ 52033 ........................................................................ 52034 ........................................................................ 52035 ........................................................................ 52036 ........................................................................ 52037 ........................................................................ 52038 ........................................................................ 52039 ........................................................................ 52040 ........................................................................ 52041 ........................................................................ 52042 ........................................................................ 52043 ........................................................................ 52044 ........................................................................ 52045 ........................................................................ 52046 ........................................................................ 52047 ........................................................................ 52048 ........................................................................ 52049 ........................................................................ 52050 ........................................................................ 52051 ........................................................................ 52052 ........................................................................ 52053 ........................................................................ 52054 ........................................................................ 52055 ........................................................................ 52056 ........................................................................ 52057 ........................................................................ 52058 ........................................................................ 52059 ........................................................................ 52060 ........................................................................ 52061 ........................................................................ 52062 ........................................................................ 52063 ........................................................................ 52064 ........................................................................ 52065 ........................................................................ 52066 ........................................................................ 52067 ........................................................................ 52068 ........................................................................ 52069 ........................................................................ 52070 ........................................................................ 52071 ........................................................................ 52072 ........................................................................ 52073 ........................................................................ 52074 ........................................................................ 52075 ........................................................................ 52076 ........................................................................ 52077 ........................................................................ 52078 ........................................................................ 52079 ........................................................................ 52080 ........................................................................ 52081 ........................................................................ 52082 ........................................................................ 52083 ........................................................................ 52084 ........................................................................ 52085 ........................................................................ 52086 ........................................................................ 52087 ........................................................................ 52088 ........................................................................ 52089 ........................................................................ 52090 ........................................................................ 52091 ........................................................................ 52092 ........................................................................ 52093 ........................................................................ 52094 ........................................................................ 52095 ........................................................................ 52096 ........................................................................ 52097 ........................................................................ 52098 ........................................................................ 52099 ........................................................................ 52100 ........................................................................ 52101 ........................................................................ 52102 ........................................................................ 52103 ........................................................................ 52104 ........................................................................ 52105 ........................................................................ 52106 ........................................................................ 52107 ........................................................................ 52108 ........................................................................ 52109 ........................................................................ 52110 ........................................................................ 52111 ........................................................................ 52112 ........................................................................ 52113 ........................................................................ 52114 ........................................................................ 52115 ........................................................................ 52116 ........................................................................ 52117 ........................................................................ 52118 ........................................................................ 52119 ........................................................................ 52120 ........................................................................ 52121 ........................................................................ 52122 ........................................................................ 52123 ........................................................................ 52124 ........................................................................ 52125 ........................................................................ 52126 ........................................................................ 52127 ........................................................................ 52128 ........................................................................ 52129 ........................................................................ 52130 ........................................................................ 52131 ........................................................................ 52132 ........................................................................ 52133 ........................................................................ 52134 ........................................................................ 52135 ........................................................................ 52136 ........................................................................ 52137 ........................................................................ 52138 ........................................................................ 52139 ........................................................................ 52140 ........................................................................ 52141 ........................................................................ 52142 ........................................................................ 52143 ........................................................................ 52144 ........................................................................ 52145 ........................................................................ 52146 ........................................................................ 52147 ........................................................................ 52148 ........................................................................ 52149 ........................................................................ 52150 ........................................................................ 52151 ........................................................................ 52152 ........................................................................ 52153 ........................................................................ 52154 ........................................................................ 52155 ........................................................................ 52156 ........................................................................ 52157 ........................................................................ 52158 ........................................................................ 52159 ........................................................................ 52160 ........................................................................ 52161 ........................................................................ 52162 ........................................................................ 52163 ........................................................................ 52164 ........................................................................ 52165 ........................................................................ 52166 ........................................................................ 52167 ........................................................................ 52168 ........................................................................ 52169 ........................................................................ 52170 ........................................................................ 52171 ........................................................................ 52172 ........................................................................ 52173 ........................................................................ 52174 ........................................................................ 52175 ........................................................................ 52176 ........................................................................ 52177 ........................................................................ 52178 ........................................................................ 52179 ........................................................................ 52180 ........................................................................ 52181 ........................................................................ 52182 ........................................................................ 52183 ........................................................................ 52184 ........................................................................ 52185 ........................................................................ 52186 ........................................................................ 52187 ........................................................................ 52188 ........................................................................ 52189 ........................................................................ 52190 ........................................................................ 52191 ........................................................................ 52192 ........................................................................ 52193 ........................................................................ 52194 ........................................................................ 52195 ........................................................................ 52196 ........................................................................ 52197 ........................................................................ 52198 ........................................................................ 52199 ........................................................................ 52200 ........................................................................ 52201 ........................................................................ 52202 ........................................................................ 52203 ........................................................................ 52204 ........................................................................ 52205 ........................................................................ 52206 ........................................................................ 52207 ........................................................................ 52208 ........................................................................ 52209 ........................................................................ 52210 ........................................................................ 52211 ........................................................................ 52212 ........................................................................ 52213 ........................................................................ 52214 ........................................................................ 52215 ........................................................................ 52216 ........................................................................ 52217 ........................................................................ 52218 ........................................................................ 52219 ........................................................................ 52220 ........................................................................ 52221 ........................................................................ 52222 ........................................................................ 52223 ........................................................................ 52224 ........................................................................ 52225 ........................................................................ 52226 ........................................................................ 52227 ........................................................................ 52228 ........................................................................ 52229 ........................................................................ 52230 ........................................................................ 52231 ........................................................................ 52232 ........................................................................ 52233 ........................................................................ 52234 ........................................................................ 52235 ........................................................................ 52236 ........................................................................ 52237 ........................................................................ 52238 ........................................................................ 52239 ........................................................................ 52240 ........................................................................ 52241 ........................................................................ 52242 ........................................................................ 52243 ........................................................................ 52244 ........................................................................ 52245 ........................................................................ 52246 ........................................................................ 52247 ........................................................................ 52248 ........................................................................ 52249 ........................................................................ 52250 ........................................................................ 52251 ........................................................................ 52252 ........................................................................ 52253 ........................................................................ 52254 ........................................................................ 52255 ........................................................................ 52256 ........................................................................ 52257 ........................................................................ 52258 ........................................................................ 52259 ........................................................................ 52260 ........................................................................ 52261 ........................................................................ 52262 ........................................................................ 52263 ........................................................................ 52264 ........................................................................ 52265 ........................................................................ 52266 ........................................................................ 52267 ........................................................................ 52268 ........................................................................ 52269 ........................................................................ 52270 ........................................................................ 52271 ........................................................................ 52272 ........................................................................ 52273 ........................................................................ 52274 ........................................................................ 52275 ........................................................................ 52276 ........................................................................ 52277 ........................................................................ 52278 ........................................................................ 52279 ........................................................................ 52280 ........................................................................ 52281 ........................................................................ 52282 ........................................................................ 52283 ........................................................................ 52284 ........................................................................ 52285 ........................................................................ 52286 ........................................................................ 52287 ........................................................................ 52288 ........................................................................ 52289 ........................................................................ 52290 ........................................................................ 52291 ........................................................................ 52292 ........................................................................ 52293 ........................................................................ 52294 ........................................................................ 52295 ........................................................................ 52296 ........................................................................ 52297 ........................................................................ 52298 ........................................................................ 52299 ........................................................................ 52300 ........................................................................ 52301 ........................................................................ 52302 ........................................................................ 52303 ........................................................................ 52304 ........................................................................ 52305 ........................................................................ 52306 ........................................................................ 52307 ........................................................................ 52308 ........................................................................ 52309 ........................................................................ 52310 ........................................................................ 52311 ........................................................................ 52312 ........................................................................ 52313 ........................................................................ 52314 ........................................................................ 52315 ........................................................................ 52316 ........................................................................ 52317 ........................................................................ 52318 ........................................................................ 52319 ........................................................................ 52320 ........................................................................ 52321 ........................................................................ 52322 ........................................................................ 52323 ........................................................................ 52324 ........................................................................ 52325 ........................................................................ 52326 ........................................................................ 52327 ........................................................................ 52328 ........................................................................ 52329 ........................................................................ 52330 ........................................................................ 52331 ........................................................................ 52332 ........................................................................ 52333 ........................................................................ 52334 ........................................................................ 52335 ........................................................................ 52336 ........................................................................ 52337 ........................................................................ 52338 ........................................................................ 52339 ........................................................................ 52340 ........................................................................ 52341 ........................................................................ 52342 ........................................................................ 52343 ........................................................................ 52344 ........................................................................ 52345 ........................................................................ 52346 ........................................................................ 52347 ........................................................................ 52348 ........................................................................ 52349 ........................................................................ 52350 ........................................................................ 52351 ........................................................................ 52352 ........................................................................ 52353 ........................................................................ 52354 ........................................................................ 52355 ........................................................................ 52356 ........................................................................ 52357 ........................................................................ 52358 ........................................................................ 52359 ........................................................................ 52360 ........................................................................ 52361 ........................................................................ 52362 ........................................................................ 52363 ........................................................................ 52364 ........................................................................ 52365 ........................................................................ 52366 ........................................................................ 52367 ........................................................................ 52368 ........................................................................ 52369 ........................................................................ 52370 ........................................................................ 52371 ........................................................................ 52372 ........................................................................ 52373 ........................................................................ 52374 ........................................................................ 52375 ........................................................................ 52376 ........................................................................ 52377 ........................................................................ 52378 ........................................................................ 52379 ........................................................................ 52380 ........................................................................ 52381 ........................................................................ 52382 ........................................................................ 52383 ........................................................................ 52384 ........................................................................ 52385 ........................................................................ 52386 ........................................................................ 52387 ........................................................................ 52388 ........................................................................ 52389 ........................................................................ 52390 ........................................................................ 52391 ........................................................................ 52392 ........................................................................ 52393 ........................................................................ 52394 ........................................................................ 52395 ........................................................................ 52396 ........................................................................ 52397 ........................................................................ 52398 ........................................................................ 52399 ........................................................................ 52400 ........................................................................ 52401 ........................................................................ 52402 ........................................................................ 52403 ........................................................................ 52404 ........................................................................ 52405 ........................................................................ 52406 ........................................................................ 52407 ........................................................................ 52408 ........................................................................ 52409 ........................................................................ 52410 ........................................................................ 52411 ........................................................................ 52412 ........................................................................ 52413 ........................................................................ 52414 ........................................................................ 52415 ........................................................................ 52416 ........................................................................ 52417 ........................................................................ 52418 ........................................................................ 52419 ........................................................................ 52420 ........................................................................ 52421 ........................................................................ 52422 ........................................................................ 52423 ........................................................................ 52424 ........................................................................ 52425 ........................................................................ 52426 ........................................................................ 52427 ........................................................................ 52428 ........................................................................ 52429 ........................................................................ 52430 ........................................................................ 52431 ........................................................................ 52432 ........................................................................ 52433 ........................................................................ 52434 ........................................................................ 52435 ........................................................................ 52436 ........................................................................ 52437 ........................................................................ 52438 ........................................................................ 52439 ........................................................................ 52440 ........................................................................ 52441 ........................................................................ 52442 ........................................................................ 52443 ........................................................................ 52444 ........................................................................ 52445 ........................................................................ 52446 ........................................................................ 52447 ........................................................................ 52448 ........................................................................ 52449 ........................................................................ 52450 ........................................................................ 52451 ........................................................................ 52452 ........................................................................ 52453 ........................................................................ 52454 ........................................................................ 52455 ........................................................................ 52456 ........................................................................ 52457 ........................................................................ 52458 ........................................................................ 52459 ........................................................................ 52460 ........................................................................ 52461 ........................................................................ 52462 ........................................................................ 52463 ........................................................................ 52464 ........................................................................ 52465 ........................................................................ 52466 ........................................................................ 52467 ........................................................................ 52468 ........................................................................ 52469 ........................................................................ 52470 ........................................................................ 52471 ........................................................................ 52472 ........................................................................ 52473 ........................................................................ 52474 ........................................................................ 52475 ........................................................................ 52476 ........................................................................ 52477 ........................................................................ 52478 ........................................................................ 52479 ........................................................................ 52480 ........................................................................ 52481 ........................................................................ 52482 ........................................................................ 52483 ........................................................................ 52484 ........................................................................ 52485 ........................................................................ 52486 ........................................................................ 52487 ........................................................................ 52488 ........................................................................ 52489 ........................................................................ 52490 ........................................................................ 52491 ........................................................................ 52492 ........................................................................ 52493 ........................................................................ 52494 ........................................................................ 52495 ........................................................................ 52496 ........................................................................ 52497 ........................................................................ 52498 ........................................................................ 52499 ........................................................................ 52500 ........................................................................ 52501 ........................................................................ 52502 ........................................................................ 52503 ........................................................................ 52504 ........................................................................ 52505 ........................................................................ 52506 ........................................................................ 52507 ........................................................................ 52508 ........................................................................ 52509 ........................................................................ 52510 ........................................................................ 52511 ........................................................................ 52512 ........................................................................ 52513 ........................................................................ 52514 ........................................................................ 52515 ........................................................................ 52516 ........................................................................ 52517 ........................................................................ 52518 ........................................................................ 52519 ........................................................................ 52520 ........................................................................ 52521 ........................................................................ 52522 ........................................................................ 52523 ........................................................................ 52524 ........................................................................ 52525 ........................................................................ 52526 ........................................................................ 52527 ........................................................................ 52528 ........................................................................ 52529 ........................................................................ 52530 ........................................................................ 52531 ........................................................................ 52532 ........................................................................ 52533 ........................................................................ 52534 ........................................................................ 52535 ........................................................................ 52536 ........................................................................ 52537 ........................................................................ 52538 ........................................................................ 52539 ........................................................................ 52540 ........................................................................ 52541 ........................................................................ 52542 ........................................................................ 52543 ........................................................................ 52544 ........................................................................ 52545 ........................................................................ 52546 ........................................................................ 52547 ........................................................................ 52548 ........................................................................ 52549 ........................................................................ 52550 ........................................................................ 52551 ........................................................................ 52552 ........................................................................ 52553 ........................................................................ 52554 ........................................................................ 52555 ........................................................................ 52556 ........................................................................ 52557 ........................................................................ 52558 ........................................................................ 52559 ........................................................................ 52560 ........................................................................ 52561 ........................................................................ 52562 ........................................................................ 52563 ........................................................................ 52564 ........................................................................ 52565 ........................................................................ 52566 ........................................................................ 52567 ........................................................................ 52568 ........................................................................ 52569 ........................................................................ 52570 ........................................................................ 52571 ........................................................................ 52572 ........................................................................ 52573 ........................................................................ 52574 ........................................................................ 52575 ........................................................................ 52576 ........................................................................ 52577 ........................................................................ 52578 ........................................................................ 52579 ........................................................................ 52580 ........................................................................ 52581 ........................................................................ 52582 ........................................................................ 52583 ........................................................................ 52584 ........................................................................ 52585 ........................................................................ 52586 ........................................................................ 52587 ........................................................................ 52588 ........................................................................ 52589 ........................................................................ 52590 ........................................................................ 52591 ........................................................................ 52592 ........................................................................ 52593 ........................................................................ 52594 ........................................................................ 52595 ........................................................................ 52596 ........................................................................ 52597 ........................................................................ 52598 ........................................................................ 52599 ........................................................................ 52600 ........................................................................ 52601 ........................................................................ 52602 ........................................................................ 52603 ........................................................................ 52604 ........................................................................ 52605 ........................................................................ 52606 ........................................................................ 52607 ........................................................................ 52608 ........................................................................ 52609 ........................................................................ 52610 ........................................................................ 52611 ........................................................................ 52612 ........................................................................ 52613 ........................................................................ 52614 ........................................................................ 52615 ........................................................................ 52616 ........................................................................ 52617 ........................................................................ 52618 ........................................................................ 52619 ........................................................................ 52620 ........................................................................ 52621 ........................................................................ 52622 ........................................................................ 52623 ........................................................................ 52624 ........................................................................ 52625 ........................................................................ 52626 ........................................................................ 52627 ........................................................................ 52628 ........................................................................ 52629 ........................................................................ 52630 ........................................................................ 52631 ........................................................................ 52632 ........................................................................ 52633 ........................................................................ 52634 ........................................................................ 52635 ........................................................................ 52636 ........................................................................ 52637 ........................................................................ 52638 ........................................................................ 52639 ........................................................................ 52640 ........................................................................ 52641 ........................................................................ 52642 ........................................................................ 52643 ........................................................................ 52644 ........................................................................ 52645 ........................................................................ 52646 ........................................................................ 52647 ........................................................................ 52648 ........................................................................ 52649 ........................................................................ 52650 ........................................................................ 52651 ........................................................................ 52652 ........................................................................ 52653 ........................................................................ 52654 ........................................................................ 52655 ........................................................................ 52656 ........................................................................ 52657 ........................................................................ 52658 ........................................................................ 52659 ........................................................................ 52660 ........................................................................ 52661 ........................................................................ 52662 ........................................................................ 52663 ........................................................................ 52664 ........................................................................ 52665 ........................................................................ 52666 ........................................................................ 52667 ........................................................................ 52668 ........................................................................ 52669 ........................................................................ 52670 ........................................................................ 52671 ........................................................................ 52672 ........................................................................ 52673 ........................................................................ 52674 ........................................................................ 52675 ........................................................................ 52676 ........................................................................ 52677 ........................................................................ 52678 ........................................................................ 52679 ........................................................................ 52680 ........................................................................ 52681 ........................................................................ 52682 ........................................................................ 52683 ........................................................................ 52684 ........................................................................ 52685 ........................................................................ 52686 ........................................................................ 52687 ........................................................................ 52688 ........................................................................ 52689 ........................................................................ 52690 ........................................................................ 52691 ........................................................................ 52692 ........................................................................ 52693 ........................................................................ 52694 ........................................................................ 52695 ........................................................................ 52696 ........................................................................ 52697 ........................................................................ 52698 ........................................................................ 52699 ........................................................................ 52700 ........................................................................ 52701 ........................................................................ 52702 ........................................................................ 52703 ........................................................................ 52704 ........................................................................ 52705 ........................................................................ 52706 ........................................................................ 52707 ........................................................................ 52708 ........................................................................ 52709 ........................................................................ 52710 ........................................................................ 52711 ........................................................................ 52712 ........................................................................ 52713 ........................................................................ 52714 ........................................................................ 52715 ........................................................................ 52716 ........................................................................ 52717 ........................................................................ 52718 ........................................................................ 52719 ........................................................................ 52720 ........................................................................ 52721 ........................................................................ 52722 ........................................................................ 52723 ........................................................................ 52724 ........................................................................ 52725 ........................................................................ 52726 ........................................................................ 52727 ........................................................................ 52728 ........................................................................ 52729 ........................................................................ 52730 ........................................................................ 52731 ........................................................................ 52732 ........................................................................ 52733 ........................................................................ 52734 ........................................................................ 52735 ........................................................................ 52736 ........................................................................ 52737 ........................................................................ 52738 ........................................................................ 52739 ........................................................................ 52740 ........................................................................ 52741 ........................................................................ 52742 ........................................................................ 52743 ........................................................................ 52744 ........................................................................ 52745 ........................................................................ 52746 ........................................................................ 52747 ........................................................................ 52748 ........................................................................ 52749 ........................................................................ 52750 ........................................................................ 52751 ........................................................................ 52752 ........................................................................ 52753 ........................................................................ 52754 ........................................................................ 52755 ........................................................................ 52756 ........................................................................ 52757 ........................................................................ 52758 ........................................................................ 52759 ........................................................................ 52760 ........................................................................ 52761 ........................................................................ 52762 ........................................................................ 52763 ........................................................................ 52764 ........................................................................ 52765 ........................................................................ 52766 ........................................................................ 52767 ........................................................................ 52768 ........................................................................ 52769 ........................................................................ 52770 ........................................................................ 52771 ........................................................................ 52772 ........................................................................ 52773 ........................................................................ 52774 ........................................................................ 52775 ........................................................................ 52776 ........................................................................ 52777 ........................................................................ 52778 ........................................................................ 52779 ........................................................................ 52780 ........................................................................ 52781 ........................................................................ 52782 ........................................................................ 52783 ........................................................................ 52784 ........................................................................ 52785 ........................................................................ 52786 ........................................................................ 52787 ........................................................................ 52788 ........................................................................ 52789 ........................................................................ 52790 ........................................................................ 52791 ........................................................................ 52792 ........................................................................ 52793 ........................................................................ 52794 ........................................................................ 52795 ........................................................................ 52796 ........................................................................ 52797 ........................................................................ 52798 ........................................................................ 52799 ........................................................................ 52800 ........................................................................ 52801 ........................................................................ 52802 ........................................................................ 52803 ........................................................................ 52804 ........................................................................ 52805 ........................................................................ 52806 ........................................................................ 52807 ........................................................................ 52808 ........................................................................ 52809 ........................................................................ 52810 ........................................................................ 52811 ........................................................................ 52812 ........................................................................ 52813 ........................................................................ 52814 ........................................................................ 52815 ........................................................................ 52816 ........................................................................ 52817 ........................................................................ 52818 ........................................................................ 52819 ........................................................................ 52820 ........................................................................ 52821 ........................................................................ 52822 ........................................................................ 52823 ........................................................................ 52824 ........................................................................ 52825 ........................................................................ 52826 ........................................................................ 52827 ........................................................................ 52828 ........................................................................ 52829 ........................................................................ 52830 ........................................................................ 52831 ........................................................................ 52832 ........................................................................ 52833 ........................................................................ 52834 ........................................................................ 52835 ........................................................................ 52836 ........................................................................ 52837 ........................................................................ 52838 ........................................................................ 52839 ........................................................................ 52840 ........................................................................ 52841 ........................................................................ 52842 ........................................................................ 52843 ........................................................................ 52844 ........................................................................ 52845 ........................................................................ 52846 ........................................................................ 52847 ........................................................................ 52848 ........................................................................ 52849 ........................................................................ 52850 ........................................................................ 52851 ........................................................................ 52852 ........................................................................ 52853 ........................................................................ 52854 ........................................................................ 52855 ........................................................................ 52856 ........................................................................ 52857 ........................................................................ 52858 ........................................................................ 52859 ........................................................................ 52860 ........................................................................ 52861 ........................................................................ 52862 ........................................................................ 52863 ........................................................................ 52864 ........................................................................ 52865 ........................................................................ 52866 ........................................................................ 52867 ........................................................................ 52868 ........................................................................ 52869 ........................................................................ 52870 ........................................................................ 52871 ........................................................................ 52872 ........................................................................ 52873 ........................................................................ 52874 ........................................................................ 52875 ........................................................................ 52876 ........................................................................ 52877 ........................................................................ 52878 ........................................................................ 52879 ........................................................................ 52880 ........................................................................ 52881 ........................................................................ 52882 ........................................................................ 52883 ........................................................................ 52884 ........................................................................ 52885 ........................................................................ 52886 ........................................................................ 52887 ........................................................................ 52888 ........................................................................ 52889 ........................................................................ 52890 ........................................................................ 52891 ........................................................................ 52892 ........................................................................ 52893 ........................................................................ 52894 ........................................................................ 52895 ........................................................................ 52896 ........................................................................ 52897 ........................................................................ 52898 ........................................................................ 52899 ........................................................................ 52900 ........................................................................ 52901 ........................................................................ 52902 ........................................................................ 52903 ........................................................................ 52904 ........................................................................ 52905 ........................................................................ 52906 ........................................................................ 52907 ........................................................................ 52908 ........................................................................ 52909 ........................................................................ 52910 ........................................................................ 52911 ........................................................................ 52912 ........................................................................ 52913 ........................................................................ 52914 ........................................................................ 52915 ........................................................................ 52916 ........................................................................ 52917 ........................................................................ 52918 ........................................................................ 52919 ........................................................................ 52920 ........................................................................ 52921 ........................................................................ 52922 ........................................................................ 52923 ........................................................................ 52924 ........................................................................ 52925 ........................................................................ 52926 ........................................................................ 52927 ........................................................................ 52928 ........................................................................ 52929 ........................................................................ 52930 ........................................................................ 52931 ........................................................................ 52932 ........................................................................ 52933 ........................................................................ 52934 ........................................................................ 52935 ........................................................................ 52936 ........................................................................ 52937 ........................................................................ 52938 ........................................................................ 52939 ........................................................................ 52940 ........................................................................ 52941 ........................................................................ 52942 ........................................................................ 52943 ........................................................................ 52944 ........................................................................ 52945 ........................................................................ 52946 ........................................................................ 52947 ........................................................................ 52948 ........................................................................ 52949 ........................................................................ 52950 ........................................................................ 52951 ........................................................................ 52952 ........................................................................ 52953 ........................................................................ 52954 ........................................................................ 52955 ........................................................................ 52956 ........................................................................ 52957 ........................................................................ 52958 ........................................................................ 52959 ........................................................................ 52960 ........................................................................ 52961 ........................................................................ 52962 ........................................................................ 52963 ........................................................................ 52964 ........................................................................ 52965 ........................................................................ 52966 ........................................................................ 52967 ........................................................................ 52968 ........................................................................ 52969 ........................................................................ 52970 ........................................................................ 52971 ........................................................................ 52972 ........................................................................ 52973 ........................................................................ 52974 ........................................................................ 52975 ........................................................................ 52976 ........................................................................ 52977 ........................................................................ 52978 ........................................................................ 52979 ........................................................................ 52980 ........................................................................ 52981 ........................................................................ 52982 ........................................................................ 52983 ........................................................................ 52984 ........................................................................ 52985 ........................................................................ 52986 ........................................................................ 52987 ........................................................................ 52988 ........................................................................ 52989 ........................................................................ 52990 ........................................................................ 52991 ........................................................................ 52992 ........................................................................ 52993 ........................................................................ 52994 ........................................................................ 52995 ........................................................................ 52996 ........................................................................ 52997 ........................................................................ 52998 ........................................................................ 52999 ........................................................................ 53000 ........................................................................ 53001 ........................................................................ 53002 ........................................................................ 53003 ........................................................................ 53004 ........................................................................ 53005 ........................................................................ 53006 ........................................................................ 53007 ........................................................................ 53008 ........................................................................ 53009 ........................................................................ 53010 ........................................................................ 53011 ........................................................................ 53012 ........................................................................ 53013 ........................................................................ 53014 ........................................................................ 53015 ........................................................................ 53016 ........................................................................ 53017 ........................................................................ 53018 ........................................................................ 53019 ........................................................................ 53020 ........................................................................ 53021 ........................................................................ 53022 ........................................................................ 53023 ........................................................................ 53024 ........................................................................ 53025 ........................................................................ 53026 ........................................................................ 53027 ........................................................................ 53028 ........................................................................ 53029 ........................................................................ 53030 ........................................................................ 53031 ........................................................................ 53032 ........................................................................ 53033 ........................................................................ 53034 ........................................................................ 53035 ........................................................................ 53036 ........................................................................ 53037 ........................................................................ 53038 ........................................................................ 53039 ........................................................................ 53040 ........................................................................ 53041 ........................................................................ 53042 ........................................................................ 53043 ........................................................................ 53044 ........................................................................ 53045 ........................................................................ 53046 ........................................................................ 53047 ........................................................................ 53048 ........................................................................ 53049 ........................................................................ 53050 ........................................................................ 53051 ........................................................................ 53052 ........................................................................ 53053 ........................................................................ 53054 ........................................................................ 53055 ........................................................................ 53056 ........................................................................ 53057 ........................................................................ 53058 ........................................................................ 53059 ........................................................................ 53060 ........................................................................ 53061 ........................................................................ 53062 ........................................................................ 53063 ........................................................................ 53064 ........................................................................ 53065 ........................................................................ 53066 ........................................................................ 53067 ........................................................................ 53068 ........................................................................ 53069 ........................................................................ 53070 ........................................................................ 53071 ........................................................................ 53072 ........................................................................ 53073 ........................................................................ 53074 ........................................................................ 53075 ........................................................................ 53076 ........................................................................ 53077 ........................................................................ 53078 ........................................................................ 53079 ........................................................................ 53080 ........................................................................ 53081 ........................................................................ 53082 ........................................................................ 53083 ........................................................................ 53084 ........................................................................ 53085 ........................................................................ 53086 ........................................................................ 53087 ........................................................................ 53088 ........................................................................ 53089 ........................................................................ 53090 ........................................................................ 53091 ........................................................................ 53092 ........................................................................ 53093 ........................................................................ 53094 ........................................................................ 53095 ........................................................................ 53096 ........................................................................ 53097 ........................................................................ 53098 ........................................................................ 53099 ........................................................................ 53100 ........................................................................ 53101 ........................................................................ 53102 ........................................................................ 53103 ........................................................................ 53104 ........................................................................ 53105 ........................................................................ 53106 ........................................................................ 53107 ........................................................................ 53108 ........................................................................ 53109 ........................................................................ 53110 ........................................................................ 53111 ........................................................................ 53112 ........................................................................ 53113 ........................................................................ 53114 ........................................................................ 53115 ........................................................................ 53116 ........................................................................ 53117 ........................................................................ 53118 ........................................................................ 53119 ........................................................................ 53120 ........................................................................ 53121 ........................................................................ 53122 ........................................................................ 53123 ........................................................................ 53124 ........................................................................ 53125 ........................................................................ 53126 ........................................................................ 53127 ........................................................................ 53128 ........................................................................ 53129 ........................................................................ 53130 ........................................................................ 53131 ........................................................................ 53132 ........................................................................ 53133 ........................................................................ 53134 ........................................................................ 53135 ........................................................................ 53136 ........................................................................ 53137 ........................................................................ 53138 ........................................................................ 53139 ........................................................................ 53140 ........................................................................ 53141 ........................................................................ 53142 ........................................................................ 53143 ........................................................................ 53144 ........................................................................ 53145 ........................................................................ 53146 ........................................................................ 53147 ........................................................................ 53148 ........................................................................ 53149 ........................................................................ 53150 ........................................................................ 53151 ........................................................................ 53152 ........................................................................ 53153 ........................................................................ 53154 ........................................................................ 53155 ........................................................................ 53156 ........................................................................ 53157 ........................................................................ 53158 ........................................................................ 53159 ........................................................................ 53160 ........................................................................ 53161 ........................................................................ 53162 ........................................................................ 53163 ........................................................................ 53164 ........................................................................ 53165 ........................................................................ 53166 ........................................................................ 53167 ........................................................................ 53168 ........................................................................ 53169 ........................................................................ 53170 ........................................................................ 53171 ........................................................................ 53172 ........................................................................ 53173 ........................................................................ 53174 ........................................................................ 53175 ........................................................................ 53176 ........................................................................ 53177 ........................................................................ 53178 ........................................................................ 53179 ........................................................................ 53180 ........................................................................ 53181 ........................................................................ 53182 ........................................................................ 53183 ........................................................................ 53184 ........................................................................ 53185 ........................................................................ 53186 ........................................................................ 53187 ........................................................................ 53188 ........................................................................ 53189 ........................................................................ 53190 ........................................................................ 53191 ........................................................................ 53192 ........................................................................ 53193 ........................................................................ 53194 ........................................................................ 53195 ........................................................................ 53196 ........................................................................ 53197 ........................................................................ 53198 ........................................................................ 53199 ........................................................................ 53200 ........................................................................ 53201 ........................................................................ 53202 ........................................................................ 53203 ........................................................................ 53204 ........................................................................ 53205 ........................................................................ 53206 ........................................................................ 53207 ........................................................................ 53208 ........................................................................ 53209 ........................................................................ 53210 ........................................................................ 53211 ........................................................................ 53212 ........................................................................ 53213 ........................................................................ 53214 ........................................................................ 53215 ........................................................................ 53216 ........................................................................ 53217 ........................................................................ 53218 ........................................................................ 53219 ........................................................................ 53220 ........................................................................ 53221 ........................................................................ 53222 ........................................................................ 53223 ........................................................................ 53224 ........................................................................ 53225 ........................................................................ 53226 ........................................................................ 53227 ........................................................................ 53228 ........................................................................ 53229 ........................................................................ 53230 ........................................................................ 53231 ........................................................................ 53232 ........................................................................ 53233 ........................................................................ 53234 ........................................................................ 53235 ........................................................................ 53236 ........................................................................ 53237 ........................................................................ 53238 ........................................................................ 53239 ........................................................................ 53240 ........................................................................ 53241 ........................................................................ 53242 ........................................................................ 53243 ........................................................................ 53244 ........................................................................ 53245 ........................................................................ 53246 ........................................................................ 53247 ........................................................................ 53248 ........................................................................ 53249 ........................................................................ 53250 ........................................................................ 53251 ........................................................................ 53252 ........................................................................ 53253 ........................................................................ 53254 ........................................................................ 53255 ........................................................................ 53256 ........................................................................ 53257 ........................................................................ 53258 ........................................................................ 53259 ........................................................................ 53260 ........................................................................ 53261 ........................................................................ 53262 ........................................................................ 53263 ........................................................................ 53264 ........................................................................ 53265 ........................................................................ 53266 ........................................................................ 53267 ........................................................................ 53268 ........................................................................ 53269 ........................................................................ 53270 ........................................................................ 53271 ........................................................................ 53272 ........................................................................ 53273 ........................................................................ 53274 ........................................................................ 53275 ........................................................................ 53276 ........................................................................ 53277 ........................................................................ 53278 ........................................................................ 53279 ........................................................................ 53280 ........................................................................ 53281 ........................................................................ 53282 ........................................................................ 53283 ........................................................................ 53284 ........................................................................ 53285 ........................................................................ 53286 ........................................................................ 53287 ........................................................................ 53288 ........................................................................ 53289 ........................................................................ 53290 ........................................................................ 53291 ........................................................................ 53292 ........................................................................ 53293 ........................................................................ 53294 ........................................................................ 53295 ........................................................................ 53296 ........................................................................ 53297 ........................................................................ 53298 ........................................................................ 53299 ........................................................................ 53300 ........................................................................ 53301 ........................................................................ 53302 ........................................................................ 53303 ........................................................................ 53304 ........................................................................ 53305 ........................................................................ 53306 ........................................................................ 53307 ........................................................................ 53308 ........................................................................ 53309 ........................................................................ 53310 ........................................................................ 53311 ........................................................................ 53312 ........................................................................ 53313 ........................................................................ 53314 ........................................................................ 53315 ........................................................................ 53316 ........................................................................ 53317 ........................................................................ 53318 ........................................................................ 53319 ........................................................................ 53320 ........................................................................ 53321 ........................................................................ 53322 ........................................................................ 53323 ........................................................................ 53324 ........................................................................ 53325 ........................................................................ 53326 ........................................................................ 53327 ........................................................................ 53328 ........................................................................ 53329 ........................................................................ 53330 ........................................................................ 53331 ........................................................................ 53332 ........................................................................ 53333 ........................................................................ 53334 ........................................................................ 53335 ........................................................................ 53336 ........................................................................ 53337 ........................................................................ 53338 ........................................................................ 53339 ........................................................................ 53340 ........................................................................ 53341 ........................................................................ 53342 ........................................................................ 53343 ........................................................................ 53344 ........................................................................ 53345 ........................................................................ 53346 ........................................................................ 53347 ........................................................................ 53348 ........................................................................ 53349 ........................................................................ 53350 ........................................................................ 53351 ........................................................................ 53352 ........................................................................ 53353 ........................................................................ 53354 ........................................................................ 53355 ........................................................................ 53356 ........................................................................ 53357 ........................................................................ 53358 ........................................................................ 53359 ........................................................................ 53360 ........................................................................ 53361 ........................................................................ 53362 ........................................................................ 53363 ........................................................................ 53364 ........................................................................ 53365 ........................................................................ 53366 ........................................................................ 53367 ........................................................................ 53368 ........................................................................ 53369 ........................................................................ 53370 ........................................................................ 53371 ........................................................................ 53372 ........................................................................ 53373 ........................................................................ 53374 ........................................................................ 53375 ........................................................................ 53376 ........................................................................ 53377 ........................................................................ 53378 ........................................................................ 53379 ........................................................................ 53380 ........................................................................ 53381 ........................................................................ 53382 ........................................................................ 53383 ........................................................................ 53384 ........................................................................ 53385 ........................................................................ 53386 ........................................................................ 53387 ........................................................................ 53388 ........................................................................ 53389 ........................................................................ 53390 ........................................................................ 53391 ........................................................................ 53392 ........................................................................ 53393 ........................................................................ 53394 ........................................................................ 53395 ........................................................................ 53396 ........................................................................ 53397 ........................................................................ 53398 ........................................................................ 53399 ........................................................................ 53400 ........................................................................ 53401 ........................................................................ 53402 ........................................................................ 53403 ........................................................................ 53404 ........................................................................ 53405 ........................................................................ 53406 ........................................................................ 53407 ........................................................................ 53408 ........................................................................ 53409 ........................................................................ 53410 ........................................................................ 53411 ........................................................................ 53412 ........................................................................ 53413 ........................................................................ 53414 ........................................................................ 53415 ........................................................................ 53416 ........................................................................ 53417 ........................................................................ 53418 ........................................................................ 53419 ........................................................................ 53420 ........................................................................ 53421 ........................................................................ 53422 ........................................................................ 53423 ........................................................................ 53424 ........................................................................ 53425 ........................................................................ 53426 ........................................................................ 53427 ........................................................................ 53428 ........................................................................ 53429 ........................................................................ 53430 ........................................................................ 53431 ........................................................................ 53432 ........................................................................ 53433 ........................................................................ 53434 ........................................................................ 53435 ........................................................................ 53436 ........................................................................ 53437 ........................................................................ 53438 ........................................................................ 53439 ........................................................................ 53440 ........................................................................ 53441 ........................................................................ 53442 ........................................................................ 53443 ........................................................................ 53444 ........................................................................ 53445 ........................................................................ 53446 ........................................................................ 53447 ........................................................................ 53448 ........................................................................ 53449 ........................................................................ 53450 ........................................................................ 53451 ........................................................................ 53452 ........................................................................ 53453 ........................................................................ 53454 ........................................................................ 53455 ........................................................................ 53456 ........................................................................ 53457 ........................................................................ 53458 ........................................................................ 53459 ........................................................................ 53460 ........................................................................ 53461 ........................................................................ 53462 ........................................................................ 53463 ........................................................................ 53464 ........................................................................ 53465 ........................................................................ 53466 ........................................................................ 53467 ........................................................................ 53468 ........................................................................ 53469 ........................................................................ 53470 ........................................................................ 53471 ........................................................................ 53472 ........................................................................ 53473 ........................................................................ 53474 ........................................................................ 53475 ........................................................................ 53476 ........................................................................ 53477 ........................................................................ 53478 ........................................................................ 53479 ........................................................................ 53480 ........................................................................ 53481 ........................................................................ 53482 ........................................................................ 53483 ........................................................................ 53484 ........................................................................ 53485 ........................................................................ 53486 ........................................................................ 53487 ........................................................................ 53488 ........................................................................ 53489 ........................................................................ 53490 ........................................................................ 53491 ........................................................................ 53492 ........................................................................ 53493 ........................................................................ 53494 ........................................................................ 53495 ........................................................................ 53496 ........................................................................ 53497 ........................................................................ 53498 ........................................................................ 53499 ........................................................................ 53500 ........................................................................ 53501 ........................................................................ 53502 ........................................................................ 53503 ........................................................................ 53504 ........................................................................ 53505 ........................................................................ 53506 ........................................................................ 53507 ........................................................................ 53508 ........................................................................ 53509 ........................................................................ 53510 ........................................................................ 53511 ........................................................................ 53512 ........................................................................ 53513 ........................................................................ 53514 ........................................................................ 53515 ........................................................................ 53516 ........................................................................ 53517 ........................................................................ 53518 ........................................................................ 53519 ........................................................................ 53520 ........................................................................ 53521 ........................................................................ 53522 ........................................................................ 53523 ........................................................................ 53524 ........................................................................ 53525 ........................................................................ 53526 ........................................................................ 53527 ........................................................................ 53528 ........................................................................ 53529 ........................................................................ 53530 ........................................................................ 53531 ........................................................................ 53532 ........................................................................ 53533 ........................................................................ 53534 ........................................................................ 53535 ........................................................................ 53536 ........................................................................ 53537 ........................................................................ 53538 ........................................................................ 53539 ........................................................................ 53540 ........................................................................ 53541 ........................................................................ 53542 ........................................................................ 53543 ........................................................................ 53544 ........................................................................ 53545 ........................................................................ 53546 ........................................................................ 53547 ........................................................................ 53548 ........................................................................ 53549 ........................................................................ 53550 ........................................................................ 53551 ........................................................................ 53552 ........................................................................ 53553 ........................................................................ 53554 ........................................................................ 53555 ........................................................................ 53556 ........................................................................ 53557 ........................................................................ 53558 ........................................................................ 53559 ........................................................................ 53560 ........................................................................ 53561 ........................................................................ 53562 ........................................................................ 53563 ........................................................................ 53564 ........................................................................ 53565 ........................................................................ 53566 ........................................................................ 53567 ........................................................................ 53568 ........................................................................ 53569 ........................................................................ 53570 ........................................................................ 53571 ........................................................................ 53572 ........................................................................ 53573 ........................................................................ 53574 ........................................................................ 53575 ........................................................................ 53576 ........................................................................ 53577 ........................................................................ 53578 ........................................................................ 53579 ........................................................................ 53580 ........................................................................ 53581 ........................................................................ 53582 ........................................................................ 53583 ........................................................................ 53584 ........................................................................ 53585 ........................................................................ 53586 ........................................................................ 53587 ........................................................................ 53588 ........................................................................ 53589 ........................................................................ 53590 ........................................................................ 53591 ........................................................................ 53592 ........................................................................ 53593 ........................................................................ 53594 ........................................................................ 53595 ........................................................................ 53596 ........................................................................ 53597 ........................................................................ 53598 ........................................................................ 53599 ........................................................................ 53600 ........................................................................ 53601 ........................................................................ 53602 ........................................................................ 53603 ........................................................................ 53604 ........................................................................ 53605 ........................................................................ 53606 ........................................................................ 53607 ........................................................................ 53608 ........................................................................ 53609 ........................................................................ 53610 ........................................................................ 53611 ........................................................................ 53612 ........................................................................ 53613 ........................................................................ 53614 ........................................................................ 53615 ........................................................................ 53616 ........................................................................ 53617 ........................................................................ 53618 ........................................................................ 53619 ........................................................................ 53620 ........................................................................ 53621 ........................................................................ 53622 ........................................................................ 53623 ........................................................................ 53624 ........................................................................ 53625 ........................................................................ 53626 ........................................................................ 53627 ........................................................................ 53628 ........................................................................ 53629 ........................................................................ 53630 ........................................................................ 53631 ........................................................................ 53632 ........................................................................ 53633 ........................................................................ 53634 ........................................................................ 53635 ........................................................................ 53636 ........................................................................ 53637 ........................................................................ 53638 ........................................................................ 53639 ........................................................................ 53640 ........................................................................ 53641 ........................................................................ 53642 ........................................................................ 53643 ........................................................................ 53644 ........................................................................ 53645 ........................................................................ 53646 ........................................................................ 53647 ........................................................................ 53648 ........................................................................ 53649 ........................................................................ 53650 ........................................................................ 53651 ........................................................................ 53652 ........................................................................ 53653 ........................................................................ 53654 ........................................................................ 53655 ........................................................................ 53656 ........................................................................ 53657 ........................................................................ 53658 ........................................................................ 53659 ........................................................................ 53660 ........................................................................ 53661 ........................................................................ 53662 ........................................................................ 53663 ........................................................................ 53664 ........................................................................ 53665 ........................................................................ 53666 ........................................................................ 53667 ........................................................................ 53668 ........................................................................ 53669 ........................................................................ 53670 ........................................................................ 53671 ........................................................................ 53672 ........................................................................ 53673 ........................................................................ 53674 ........................................................................ 53675 ........................................................................ 53676 ........................................................................ 53677 ........................................................................ 53678 ........................................................................ 53679 ........................................................................ 53680 ........................................................................ 53681 ........................................................................ 53682 ........................................................................ 53683 ........................................................................ 53684 ........................................................................ 53685 ........................................................................ 53686 ........................................................................ 53687 ........................................................................ 53688 ........................................................................ 53689 ........................................................................ 53690 ........................................................................ 53691 ........................................................................ 53692 ........................................................................ 53693 ........................................................................ 53694 ........................................................................ 53695 ........................................................................ 53696 ........................................................................ 53697 ........................................................................ 53698 ........................................................................ 53699 ........................................................................ 53700 ........................................................................ 53701 ........................................................................ 53702 ........................................................................ 53703 ........................................................................ 53704 ........................................................................ 53705 ........................................................................ 53706 ........................................................................ 53707 ........................................................................ 53708 ........................................................................ 53709 ........................................................................ 53710 ........................................................................ 53711 ........................................................................ 53712 ........................................................................ 53713 ........................................................................ 53714 ........................................................................ 53715 ........................................................................ 53716 ........................................................................ 53717 ........................................................................ 53718 ........................................................................ 53719 ........................................................................ 53720 ........................................................................ 53721 ........................................................................ 53722 ........................................................................ 53723 ........................................................................ 53724 ........................................................................ 53725 ........................................................................ 53726 ........................................................................ 53727 ........................................................................ 53728 ........................................................................ 53729 ........................................................................ 53730 ........................................................................ 53731 ........................................................................ 53732 ........................................................................ 53733 ........................................................................ 53734 ........................................................................ 53735 ........................................................................ 53736 ........................................................................ 53737 ........................................................................ 53738 ........................................................................ 53739 ........................................................................ 53740 ........................................................................ 53741 ........................................................................ 53742 ........................................................................ 53743 ........................................................................ 53744 ........................................................................ 53745 ........................................................................ 53746 ........................................................................ 53747 ........................................................................ 53748 ........................................................................ 53749 ........................................................................ 53750 ........................................................................ 53751 ........................................................................ 53752 ........................................................................ 53753 ........................................................................ 53754 ........................................................................ 53755 ........................................................................ 53756 ........................................................................ 53757 ........................................................................ 53758 ........................................................................ 53759 ........................................................................ 53760 ........................................................................ 53761 ........................................................................ 53762 ........................................................................ 53763 ........................................................................ 53764 ........................................................................ 53765 ........................................................................ 53766 ........................................................................ 53767 ........................................................................ 53768 ........................................................................ 53769 ........................................................................ 53770 ........................................................................ 53771 ........................................................................ 53772 ........................................................................ 53773 ........................................................................ 53774 ........................................................................ 53775 ........................................................................ 53776 ........................................................................ 53777 ........................................................................ 53778 ........................................................................ 53779 ........................................................................ 53780 ........................................................................ 53781 ........................................................................ 53782 ........................................................................ 53783 ........................................................................ 53784 ........................................................................ 53785 ........................................................................ 53786 ........................................................................ 53787 ........................................................................ 53788 ........................................................................ 53789 ........................................................................ 53790 ........................................................................ 53791 ........................................................................ 53792 ........................................................................ 53793 ........................................................................ 53794 ........................................................................ 53795 ........................................................................ 53796 ........................................................................ 53797 ........................................................................ 53798 ........................................................................ 53799 ........................................................................ 53800 ........................................................................ 53801 ........................................................................ 53802 ........................................................................ 53803 ........................................................................ 53804 ........................................................................ 53805 ........................................................................ 53806 ........................................................................ 53807 ........................................................................ 53808 ........................................................................ 53809 ........................................................................ 53810 ........................................................................ 53811 ........................................................................ 53812 ........................................................................ 53813 ........................................................................ 53814 ........................................................................ 53815 ........................................................................ 53816 ........................................................................ 53817 ........................................................................ 53818 ........................................................................ 53819 ........................................................................ 53820 ........................................................................ 53821 ........................................................................ 53822 ........................................................................ 53823 ........................................................................ 53824 ........................................................................ 53825 ........................................................................ 53826 ........................................................................ 53827 ........................................................................ 53828 ........................................................................ 53829 ........................................................................ 53830 ........................................................................ 53831 ........................................................................ 53832 ........................................................................ 53833 ........................................................................ 53834 ........................................................................ 53835 ........................................................................ 53836 ........................................................................ 53837 ........................................................................ 53838 ........................................................................ 53839 ........................................................................ 53840 ........................................................................ 53841 ........................................................................ 53842 ........................................................................ 53843 ........................................................................ 53844 ........................................................................ 53845 ........................................................................ 53846 ........................................................................ 53847 ........................................................................ 53848 ........................................................................ 53849 ........................................................................ 53850 ........................................................................ 53851 ........................................................................ 53852 ........................................................................ 53853 ........................................................................ 53854 ........................................................................ 53855 ........................................................................ 53856 ........................................................................ 53857 ........................................................................ 53858 ........................................................................ 53859 ........................................................................ 53860 ........................................................................ 53861 ........................................................................ 53862 ........................................................................ 53863 ........................................................................ 53864 ........................................................................ 53865 ........................................................................ 53866 ........................................................................ 53867 ........................................................................ 53868 ........................................................................ 53869 ........................................................................ 53870 ........................................................................ 53871 ........................................................................ 53872 ........................................................................ 53873 ........................................................................ 53874 ........................................................................ 53875 ........................................................................ 53876 ........................................................................ 53877 ........................................................................ 53878 ........................................................................ 53879 ........................................................................ 53880 ........................................................................ 53881 ........................................................................ 53882 ........................................................................ 53883 ........................................................................ 53884 ........................................................................ 53885 ........................................................................ 53886 ........................................................................ 53887 ........................................................................ 53888 ........................................................................ 53889 ........................................................................ 53890 ........................................................................ 53891 ........................................................................ 53892 ........................................................................ 53893 ........................................................................ 53894 ........................................................................ 53895 ........................................................................ 53896 ........................................................................ 53897 ........................................................................ 53898 ........................................................................ 53899 ........................................................................ 53900 ........................................................................ 53901 ........................................................................ 53902 ........................................................................ 53903 ........................................................................ 53904 ........................................................................ 53905 ........................................................................ 53906 ........................................................................ 53907 ........................................................................ 53908 ........................................................................ 53909 ........................................................................ 53910 ........................................................................ 53911 ........................................................................ 53912 ........................................................................ 53913 ........................................................................ 53914 ........................................................................ 53915 ........................................................................ 53916 ........................................................................ 53917 ........................................................................ 53918 ........................................................................ 53919 ........................................................................ 53920 ........................................................................ 53921 ........................................................................ 53922 ........................................................................ 53923 ........................................................................ 53924 ........................................................................ 53925 ........................................................................ 53926 ........................................................................ 53927 ........................................................................ 53928 ........................................................................ 53929 ........................................................................ 53930 ........................................................................ 53931 ........................................................................ 53932 ........................................................................ 53933 ........................................................................ 53934 ........................................................................ 53935 ........................................................................ 53936 ........................................................................ 53937 ........................................................................ 53938 ........................................................................ 53939 ........................................................................ 53940 ........................................................................ 53941 ........................................................................ 53942 ........................................................................ 53943 ........................................................................ 53944 ........................................................................ 53945 ........................................................................ 53946 ........................................................................ 53947 ........................................................................ 53948 ........................................................................ 53949 ........................................................................ 53950 ........................................................................ 53951 ........................................................................ 53952 ........................................................................ 53953 ........................................................................ 53954 ........................................................................ 53955 ........................................................................ 53956 ........................................................................ 53957 ........................................................................ 53958 ........................................................................ 53959 ........................................................................ 53960 ........................................................................ 53961 ........................................................................ 53962 ........................................................................ 53963 ........................................................................ 53964 ........................................................................ 53965 ........................................................................ 53966 ........................................................................ 53967 ........................................................................ 53968 ........................................................................ 53969 ........................................................................ 53970 ........................................................................ 53971 ........................................................................ 53972 ........................................................................ 53973 ........................................................................ 53974 ........................................................................ 53975 ........................................................................ 53976 ........................................................................ 53977 ........................................................................ 53978 ........................................................................ 53979 ........................................................................ 53980 ........................................................................ 53981 ........................................................................ 53982 ........................................................................ 53983 ........................................................................ 53984 ........................................................................ 53985 ........................................................................ 53986 ........................................................................ 53987 ........................................................................ 53988 ........................................................................ 53989 ........................................................................ 53990 ........................................................................ 53991 ........................................................................ 53992 ........................................................................ 53993 ........................................................................ 53994 ........................................................................ 53995 ........................................................................ 53996 ........................................................................ 53997 ........................................................................ 53998 ........................................................................ 53999 ........................................................................ 54000 ........................................................................ 54001 ........................................................................ 54002 ........................................................................ 54003 ........................................................................ 54004 ........................................................................ 54005 ........................................................................ 54006 ........................................................................ 54007 ........................................................................ 54008 ........................................................................ 54009 ........................................................................ 54010 ........................................................................ 54011 ........................................................................ 54012 ........................................................................ 54013 ........................................................................ 54014 ........................................................................ 54015 ........................................................................ 54016 ........................................................................ 54017 ........................................................................ 54018 ........................................................................ 54019 ........................................................................ 54020 ........................................................................ 54021 ........................................................................ 54022 ........................................................................ 54023 ........................................................................ 54024 ........................................................................ 54025 ........................................................................ 54026 ........................................................................ 54027 ........................................................................ 54028 ........................................................................ 54029 ........................................................................ 54030 ........................................................................ 54031 ........................................................................ 54032 ........................................................................ 54033 ........................................................................ 54034 ........................................................................ 54035 ........................................................................ 54036 ........................................................................ 54037 ........................................................................ 54038 ........................................................................ 54039 ........................................................................ 54040 ........................................................................ 54041 ........................................................................ 54042 ........................................................................ 54043 ........................................................................ 54044 ........................................................................ 54045 ........................................................................ 54046 ........................................................................ 54047 ........................................................................ 54048 ........................................................................ 54049 ........................................................................ 54050 ........................................................................ 54051 ........................................................................ 54052 ........................................................................ 54053 ........................................................................ 54054 ........................................................................ 54055 ........................................................................ 54056 ........................................................................ 54057 ........................................................................ 54058 ........................................................................ 54059 ........................................................................ 54060 ........................................................................ 54061 ........................................................................ 54062 ........................................................................ 54063 ........................................................................ 54064 ........................................................................ 54065 ........................................................................ 54066 ........................................................................ 54067 ........................................................................ 54068 ........................................................................ 54069 ........................................................................ 54070 ........................................................................ 54071 ........................................................................ 54072 ........................................................................ 54073 ........................................................................ 54074 ........................................................................ 54075 ........................................................................ 54076 ........................................................................ 54077 ........................................................................ 54078 ........................................................................ 54079 ........................................................................ 54080 ........................................................................ 54081 ........................................................................ 54082 ........................................................................ 54083 ........................................................................ 54084 ........................................................................ 54085 ........................................................................ 54086 ........................................................................ 54087 ........................................................................ 54088 ........................................................................ 54089 ........................................................................ 54090 ........................................................................ 54091 ........................................................................ 54092 ........................................................................ 54093 ........................................................................ 54094 ........................................................................ 54095 ........................................................................ 54096 ........................................................................ 54097 ........................................................................ 54098 ........................................................................ 54099 ........................................................................ 54100 ........................................................................ 54101 ........................................................................ 54102 ........................................................................ 54103 ........................................................................ 54104 ........................................................................ 54105 ........................................................................ 54106 ........................................................................ 54107 ........................................................................ 54108 ........................................................................ 54109 ........................................................................ 54110 ........................................................................ 54111 ........................................................................ 54112 ........................................................................ 54113 ........................................................................ 54114 ........................................................................ 54115 ........................................................................ 54116 ........................................................................ 54117 ........................................................................ 54118 ........................................................................ 54119 ........................................................................ 54120 ........................................................................ 54121 ........................................................................ 54122 ........................................................................ 54123 ........................................................................ 54124 ........................................................................ 54125 ........................................................................ 54126 ........................................................................ 54127 ........................................................................ 54128 ........................................................................ 54129 ........................................................................ 54130 ........................................................................ 54131 ........................................................................ 54132 ........................................................................ 54133 ........................................................................ 54134 ........................................................................ 54135 ........................................................................ 54136 ........................................................................ 54137 ........................................................................ 54138 ........................................................................ 54139 ........................................................................ 54140 ........................................................................ 54141 ........................................................................ 54142 ........................................................................ 54143 ........................................................................ 54144 ........................................................................ 54145 ........................................................................ 54146 ........................................................................ 54147 ........................................................................ 54148 ........................................................................ 54149 ........................................................................ 54150 ........................................................................ 54151 ........................................................................ 54152 ........................................................................ 54153 ........................................................................ 54154 ........................................................................ 54155 ........................................................................ 54156 ........................................................................ 54157 ........................................................................ 54158 ........................................................................ 54159 ........................................................................ 54160 ........................................................................ 54161 ........................................................................ 54162 ........................................................................ 54163 ........................................................................ 54164 ........................................................................ 54165 ........................................................................ 54166 ........................................................................ 54167 ........................................................................ 54168 ........................................................................ 54169 ........................................................................ 54170 ........................................................................ 54171 ........................................................................ 54172 ........................................................................ 54173 ........................................................................ 54174 ........................................................................ 54175 ........................................................................ 54176 ........................................................................ 54177 ........................................................................ 54178 ........................................................................ 54179 ........................................................................ 54180 ........................................................................ 54181 ........................................................................ 54182 ........................................................................ 54183 ........................................................................ 54184 ........................................................................ 54185 ........................................................................ 54186 ........................................................................ 54187 ........................................................................ 54188 ........................................................................ 54189 ........................................................................ 54190 ........................................................................ 54191 ........................................................................ 54192 ........................................................................ 54193 ........................................................................ 54194 ........................................................................ 54195 ........................................................................ 54196 ........................................................................ 54197 ........................................................................ 54198 ........................................................................ 54199 ........................................................................ 54200 ........................................................................ 54201 ........................................................................ 54202 ........................................................................ 54203 ........................................................................ 54204 ........................................................................ 54205 ........................................................................ 54206 ........................................................................ 54207 ........................................................................ 54208 ........................................................................ 54209 ........................................................................ 54210 ........................................................................ 54211 ........................................................................ 54212 ........................................................................ 54213 ........................................................................ 54214 ........................................................................ 54215 ........................................................................ 54216 ........................................................................ 54217 ........................................................................ 54218 ........................................................................ 54219 ........................................................................ 54220 ........................................................................ 54221 ........................................................................ 54222 ........................................................................ 54223 ........................................................................ 54224 ........................................................................ 54225 ........................................................................ 54226 ........................................................................ 54227 ........................................................................ 54228 ........................................................................ 54229 ........................................................................ 54230 ........................................................................ 54231 ........................................................................ 54232 ........................................................................ 54233 ........................................................................ 54234 ........................................................................ 54235 ........................................................................ 54236 ........................................................................ 54237 ........................................................................ 54238 ........................................................................ 54239 ........................................................................ 54240 ........................................................................ 54241 ........................................................................ 54242 ........................................................................ 54243 ........................................................................ 54244 ........................................................................ 54245 ........................................................................ 54246 ........................................................................ 54247 ........................................................................ 54248 ........................................................................ 54249 ........................................................................ 54250 ........................................................................ 54251 ........................................................................ 54252 ........................................................................ 54253 ........................................................................ 54254 ........................................................................ 54255 ........................................................................ 54256 ........................................................................ 54257 ........................................................................ 54258 ........................................................................ 54259 ........................................................................ 54260 ........................................................................ 54261 ........................................................................ 54262 ........................................................................ 54263 ........................................................................ 54264 ........................................................................ 54265 ........................................................................ 54266 ........................................................................ 54267 ........................................................................ 54268 ........................................................................ 54269 ........................................................................ 54270 ........................................................................ 54271 ........................................................................ 54272 ........................................................................ 54273 ........................................................................ 54274 ........................................................................ 54275 ........................................................................ 54276 ........................................................................ 54277 ........................................................................ 54278 ........................................................................ 54279 ........................................................................ 54280 ........................................................................ 54281 ........................................................................ 54282 ........................................................................ 54283 ........................................................................ 54284 ........................................................................ 54285 ........................................................................ 54286 ........................................................................ 54287 ........................................................................ 54288 ........................................................................ 54289 ........................................................................ 54290 ........................................................................ 54291 ........................................................................ 54292 ........................................................................ 54293 ........................................................................ 54294 ........................................................................ 54295 ........................................................................ 54296 ........................................................................ 54297 ........................................................................ 54298 ........................................................................ 54299 ........................................................................ 54300 ........................................................................ 54301 ........................................................................ 54302 ........................................................................ 54303 ........................................................................ 54304 ........................................................................ 54305 ........................................................................ 54306 ........................................................................ 54307 ........................................................................ 54308 ........................................................................ 54309 ........................................................................ 54310 ........................................................................ 54311 ........................................................................ 54312 ........................................................................ 54313 ........................................................................ 54314 ........................................................................ 54315 ........................................................................ 54316 ........................................................................ 54317 ........................................................................ 54318 ........................................................................ 54319 ........................................................................ 54320 ........................................................................ 54321 ........................................................................ 54322 ........................................................................ 54323 ........................................................................ 54324 ........................................................................ 54325 ........................................................................ 54326 ........................................................................ 54327 ........................................................................ 54328 ........................................................................ 54329 ........................................................................ 54330 ........................................................................ 54331 ........................................................................ 54332 ........................................................................ 54333 ........................................................................ 54334 ........................................................................ 54335 ........................................................................ 54336 ........................................................................ 54337 ........................................................................ 54338 ........................................................................ 54339 ........................................................................ 54340 ........................................................................ 54341 ........................................................................ 54342 ........................................................................ 54343 ........................................................................ 54344 ........................................................................ 54345 ........................................................................ 54346 ........................................................................ 54347 ........................................................................ 54348 ........................................................................ 54349 ........................................................................ 54350 ........................................................................ 54351 ........................................................................ 54352 ........................................................................ 54353 ........................................................................ 54354 ........................................................................ 54355 ........................................................................ 54356 ........................................................................ 54357 ........................................................................ 54358 ........................................................................ 54359 ........................................................................ 54360 ........................................................................ 54361 ........................................................................ 54362 ........................................................................ 54363 ........................................................................ 54364 ........................................................................ 54365 ........................................................................ 54366 ........................................................................ 54367 ........................................................................ 54368 ........................................................................ 54369 ........................................................................ 54370 ........................................................................ 54371 ........................................................................ 54372 ........................................................................ 54373 ........................................................................ 54374 ........................................................................ 54375 ........................................................................ 54376 ........................................................................ 54377 ........................................................................ 54378 ........................................................................ 54379 ........................................................................ 54380 ........................................................................ 54381 ........................................................................ 54382 ........................................................................ 54383 ........................................................................ 54384 ........................................................................ 54385 ........................................................................ 54386 ........................................................................ 54387 ........................................................................ 54388 ........................................................................ 54389 ........................................................................ 54390 ........................................................................ 54391 ........................................................................ 54392 ........................................................................ 54393 ........................................................................ 54394 ........................................................................ 54395 ........................................................................ 54396 ........................................................................ 54397 ........................................................................ 54398 ........................................................................ 54399 ........................................................................ 54400 ........................................................................ 54401 ........................................................................ 54402 ........................................................................ 54403 ........................................................................ 54404 ........................................................................ 54405 ........................................................................ 54406 ........................................................................ 54407 ........................................................................ 54408 ........................................................................ 54409 ........................................................................ 54410 ........................................................................ 54411 ........................................................................ 54412 ........................................................................ 54413 ........................................................................ 54414 ........................................................................ 54415 ........................................................................ 54416 ........................................................................ 54417 ........................................................................ 54418 ........................................................................ 54419 ........................................................................ 54420 ........................................................................ 54421 ........................................................................ 54422 ........................................................................ 54423 ........................................................................ 54424 ........................................................................ 54425 ........................................................................ 54426 ........................................................................ 54427 ........................................................................ 54428 ........................................................................ 54429 ........................................................................ 54430 ........................................................................ 54431 ........................................................................ 54432 ........................................................................ 54433 ........................................................................ 54434 ........................................................................ 54435 ........................................................................ 54436 ........................................................................ 54437 ........................................................................ 54438 ........................................................................ 54439 ........................................................................ 54440 ........................................................................ 54441 ........................................................................ 54442 ........................................................................ 54443 ........................................................................ 54444 ........................................................................ 54445 ........................................................................ 54446 ........................................................................ 54447 ........................................................................ 54448 ........................................................................ 54449 ........................................................................ 54450 ........................................................................ 54451 ........................................................................ 54452 ........................................................................ 54453 ........................................................................ 54454 ........................................................................ 54455 ........................................................................ 54456 ........................................................................ 54457 ........................................................................ 54458 ........................................................................ 54459 ........................................................................ 54460 ........................................................................ 54461 ........................................................................ 54462 ........................................................................ 54463 ........................................................................ 54464 ........................................................................ 54465 ........................................................................ 54466 ........................................................................ 54467 ........................................................................ 54468 ........................................................................ 54469 ........................................................................ 54470 ........................................................................ 54471 ........................................................................ 54472 ........................................................................ 54473 ........................................................................ 54474 ........................................................................ 54475 ........................................................................ 54476 ........................................................................ 54477 ........................................................................ 54478 ........................................................................ 54479 ........................................................................ 54480 ........................................................................ 54481 ........................................................................ 54482 ........................................................................ 54483 ........................................................................ 54484 ........................................................................ 54485 ........................................................................ 54486 ........................................................................ 54487 ........................................................................ 54488 ........................................................................ 54489 ........................................................................ 54490 ........................................................................ 54491 ........................................................................ 54492 ........................................................................ 54493 ........................................................................ 54494 ........................................................................ 54495 ........................................................................ 54496 ........................................................................ 54497 ........................................................................ 54498 ........................................................................ 54499 ........................................................................ 54500 ........................................................................ 54501 ........................................................................ 54502 ........................................................................ 54503 ........................................................................ 54504 ........................................................................ 54505 ........................................................................ 54506 ........................................................................ 54507 ........................................................................ 54508 ........................................................................ 54509 ........................................................................ 54510 ........................................................................ 54511 ........................................................................ 54512 ........................................................................ 54513 ........................................................................ 54514 ........................................................................ 54515 ........................................................................ 54516 ........................................................................ 54517 ........................................................................ 54518 ........................................................................ 54519 ........................................................................ 54520 ........................................................................ 54521 ........................................................................ 54522 ........................................................................ 54523 ........................................................................ 54524 ........................................................................ 54525 ........................................................................ 54526 ........................................................................ 54527 ........................................................................ 54528 ........................................................................ 54529 ........................................................................ 54530 ........................................................................ 54531 ........................................................................ 54532 ........................................................................ 54533 ........................................................................ 54534 ........................................................................ 54535 ........................................................................ 54536 ........................................................................ 54537 ........................................................................ 54538 ........................................................................ 54539 ........................................................................ 54540 ........................................................................ 54541 ........................................................................ 54542 ........................................................................ 54543 ........................................................................ 54544 ........................................................................ 54545 ........................................................................ 54546 ........................................................................ 54547 ........................................................................ 54548 ........................................................................ 54549 ........................................................................ 54550 ........................................................................ 54551 ........................................................................ 54552 ........................................................................ 54553 ........................................................................ 54554 ........................................................................ 54555 ........................................................................ 54556 ........................................................................ 54557 ........................................................................ 54558 ........................................................................ 54559 ........................................................................ 54560 ........................................................................ 54561 ........................................................................ 54562 ........................................................................ 54563 ........................................................................ 54564 ........................................................................ 54565 ........................................................................ 54566 ........................................................................ 54567 ........................................................................ 54568 ........................................................................ 54569 ........................................................................ 54570 ........................................................................ 54571 ........................................................................ 54572 ........................................................................ 54573 ........................................................................ 54574 ........................................................................ 54575 ........................................................................ 54576 ........................................................................ 54577 ........................................................................ 54578 ........................................................................ 54579 ........................................................................ 54580 ........................................................................ 54581 ........................................................................ 54582 ........................................................................ 54583 ........................................................................ 54584 ........................................................................ 54585 ........................................................................ 54586 ........................................................................ 54587 ........................................................................ 54588 ........................................................................ 54589 ........................................................................ 54590 ........................................................................ 54591 ........................................................................ 54592 ........................................................................ 54593 ........................................................................ 54594 ........................................................................ 54595 ........................................................................ 54596 ........................................................................ 54597 ........................................................................ 54598 ........................................................................ 54599 ........................................................................ 54600 ........................................................................ 54601 ........................................................................ 54602 ........................................................................ 54603 ........................................................................ 54604 ........................................................................ 54605 ........................................................................ 54606 ........................................................................ 54607 ........................................................................ 54608 ........................................................................ 54609 ........................................................................ 54610 ........................................................................ 54611 ........................................................................ 54612 ........................................................................ 54613 ........................................................................ 54614 ........................................................................ 54615 ........................................................................ 54616 ........................................................................ 54617 ........................................................................ 54618 ........................................................................ 54619 ........................................................................ 54620 ........................................................................ 54621 ........................................................................ 54622 ........................................................................ 54623 ........................................................................ 54624 ........................................................................ 54625 ........................................................................ 54626 ........................................................................ 54627 ........................................................................ 54628 ........................................................................ 54629 ........................................................................ 54630 ........................................................................ 54631 ........................................................................ 54632 ........................................................................ 54633 ........................................................................ 54634 ........................................................................ 54635 ........................................................................ 54636 ........................................................................ 54637 ........................................................................ 54638 ........................................................................ 54639 ........................................................................ 54640 ........................................................................ 54641 ........................................................................ 54642 ........................................................................ 54643 ........................................................................ 54644 ........................................................................ 54645 ........................................................................ 54646 ........................................................................ 54647 ........................................................................ 54648 ........................................................................ 54649 ........................................................................ 54650 ........................................................................ 54651 ........................................................................ 54652 ........................................................................ 54653 ........................................................................ 54654 ........................................................................ 54655 ........................................................................ 54656 ........................................................................ 54657 ........................................................................ 54658 ........................................................................ 54659 ........................................................................ 54660 ........................................................................ 54661 ........................................................................ 54662 ........................................................................ 54663 ........................................................................ 54664 ........................................................................ 54665 ........................................................................ 54666 ........................................................................ 54667 ........................................................................ 54668 ........................................................................ 54669 ........................................................................ 54670 ........................................................................ 54671 ........................................................................ 54672 ........................................................................ 54673 ........................................................................ 54674 ........................................................................ 54675 ........................................................................ 54676 ........................................................................ 54677 ........................................................................ 54678 ........................................................................ 54679 ........................................................................ 54680 ........................................................................ 54681 ........................................................................ 54682 ........................................................................ 54683 ........................................................................ 54684 ........................................................................ 54685 ........................................................................ 54686 ........................................................................ 54687 ........................................................................ 54688 ........................................................................ 54689 ........................................................................ 54690 ........................................................................ 54691 ........................................................................ 54692 ........................................................................ 54693 ........................................................................ 54694 ........................................................................ 54695 ........................................................................ 54696 ........................................................................ 54697 ........................................................................ 54698 ........................................................................ 54699 ........................................................................ 54700 ........................................................................ 54701 ........................................................................ 54702 ........................................................................ 54703 ........................................................................ 54704 ........................................................................ 54705 ........................................................................ 54706 ........................................................................ 54707 ........................................................................ 54708 ........................................................................ 54709 ........................................................................ 54710 ........................................................................ 54711 ........................................................................ 54712 ........................................................................ 54713 ........................................................................ 54714 ........................................................................ 54715 ........................................................................ 54716 ........................................................................ 54717 ........................................................................ 54718 ........................................................................ 54719 ........................................................................ 54720 ........................................................................ 54721 ........................................................................ 54722 ........................................................................ 54723 ........................................................................ 54724 ........................................................................ 54725 ........................................................................ 54726 ........................................................................ 54727 ........................................................................ 54728 ........................................................................ 54729 ........................................................................ 54730 ........................................................................ 54731 ........................................................................ 54732 ........................................................................ 54733 ........................................................................ 54734 ........................................................................ 54735 ........................................................................ 54736 ........................................................................ 54737 ........................................................................ 54738 ........................................................................ 54739 ........................................................................ 54740 ........................................................................ 54741 ........................................................................ 54742 ........................................................................ 54743 ........................................................................ 54744 ........................................................................ 54745 ........................................................................ 54746 ........................................................................ 54747 ........................................................................ 54748 ........................................................................ 54749 ........................................................................ 54750 ........................................................................ 54751 ........................................................................ 54752 ........................................................................ 54753 ........................................................................ 54754 ........................................................................ 54755 ........................................................................ 54756 ........................................................................ 54757 ........................................................................ 54758 ........................................................................ 54759 ........................................................................ 54760 ........................................................................ 54761 ........................................................................ 54762 ........................................................................ 54763 ........................................................................ 54764 ........................................................................ 54765 ........................................................................ 54766 ........................................................................ 54767 ........................................................................ 54768 ........................................................................ 54769 ........................................................................ 54770 ........................................................................ 54771 ........................................................................ 54772 ........................................................................ 54773 ........................................................................ 54774 ........................................................................ 54775 ........................................................................ 54776 ........................................................................ 54777 ........................................................................ 54778 ........................................................................ 54779 ........................................................................ 54780 ........................................................................ 54781 ........................................................................ 54782 ........................................................................ 54783 ........................................................................ 54784 ........................................................................ 54785 ........................................................................ 54786 ........................................................................ 54787 ........................................................................ 54788 ........................................................................ 54789 ........................................................................ 54790 ........................................................................ 54791 ........................................................................ 54792 ........................................................................ 54793 ........................................................................ 54794 ........................................................................ 54795 ........................................................................ 54796 ........................................................................ 54797 ........................................................................ 54798 ........................................................................ 54799 ........................................................................ 54800 ........................................................................ 54801 ........................................................................ 54802 ........................................................................ 54803 ........................................................................ 54804 ........................................................................ 54805 ........................................................................ 54806 ........................................................................ 54807 ........................................................................ 54808 ........................................................................ 54809 ........................................................................ 54810 ........................................................................ 54811 ........................................................................ 54812 ........................................................................ 54813 ........................................................................ 54814 ........................................................................ 54815 ........................................................................ 54816 ........................................................................ 54817 ........................................................................ 54818 ........................................................................ 54819 ........................................................................ 54820 ........................................................................ 54821 ........................................................................ 54822 ........................................................................ 54823 ........................................................................ 54824 ........................................................................ 54825 ........................................................................ 54826 ........................................................................ 54827 ........................................................................ 54828 ........................................................................ 54829 ........................................................................ 54830 ........................................................................ 54831 ........................................................................ 54832 ........................................................................ 54833 ........................................................................ 54834 ........................................................................ 54835 ........................................................................ 54836 ........................................................................ 54837 ........................................................................ 54838 ........................................................................ 54839 ........................................................................ 54840 ........................................................................ 54841 ........................................................................ 54842 ........................................................................ 54843 ........................................................................ 54844 ........................................................................ 54845 ........................................................................ 54846 ........................................................................ 54847 ........................................................................ 54848 ........................................................................ 54849 ........................................................................ 54850 ........................................................................ 54851 ........................................................................ 54852 ........................................................................ 54853 ........................................................................ 54854 ........................................................................ 54855 ........................................................................ 54856 ........................................................................ 54857 ........................................................................ 54858 ........................................................................ 54859 ........................................................................ 54860 ........................................................................ 54861 ........................................................................ 54862 ........................................................................ 54863 ........................................................................ 54864 ........................................................................ 54865 ........................................................................ 54866 ........................................................................ 54867 ........................................................................ 54868 ........................................................................ 54869 ........................................................................ 54870 ........................................................................ 54871 ........................................................................ 54872 ........................................................................ 54873 ........................................................................ 54874 ........................................................................ 54875 ........................................................................ 54876 ........................................................................ 54877 ........................................................................ 54878 ........................................................................ 54879 ........................................................................ 54880 ........................................................................ 54881 ........................................................................ 54882 ........................................................................ 54883 ........................................................................ 54884 ........................................................................ 54885 ........................................................................ 54886 ........................................................................ 54887 ........................................................................ 54888 ........................................................................ 54889 ........................................................................ 54890 ........................................................................ 54891 ........................................................................ 54892 ........................................................................ 54893 ........................................................................ 54894 ........................................................................ 54895 ........................................................................ 54896 ........................................................................ 54897 ........................................................................ 54898 ........................................................................ 54899 ........................................................................ 54900 ........................................................................ 54901 ........................................................................ 54902 ........................................................................ 54903 ........................................................................ 54904 ........................................................................ 54905 ........................................................................ 54906 ........................................................................ 54907 ........................................................................ 54908 ........................................................................ 54909 ........................................................................ 54910 ........................................................................ 54911 ........................................................................ 54912 ........................................................................ 54913 ........................................................................ 54914 ........................................................................ 54915 ........................................................................ 54916 ........................................................................ 54917 ........................................................................ 54918 ........................................................................ 54919 ........................................................................ 54920 ........................................................................ 54921 ........................................................................ 54922 ........................................................................ 54923 ........................................................................ 54924 ........................................................................ 54925 ........................................................................ 54926 ........................................................................ 54927 ........................................................................ 54928 ........................................................................ 54929 ........................................................................ 54930 ........................................................................ 54931 ........................................................................ 54932 ........................................................................ 54933 ........................................................................ 54934 ........................................................................ 54935 ........................................................................ 54936 ........................................................................ 54937 ........................................................................ 54938 ........................................................................ 54939 ........................................................................ 54940 ........................................................................ 54941 ........................................................................ 54942 ........................................................................ 54943 ........................................................................ 54944 ........................................................................ 54945 ........................................................................ 54946 ........................................................................ 54947 ........................................................................ 54948 ........................................................................ 54949 ........................................................................ 54950 ........................................................................ 54951 ........................................................................ 54952 ........................................................................ 54953 ........................................................................ 54954 ........................................................................ 54955 ........................................................................ 54956 ........................................................................ 54957 ........................................................................ 54958 ........................................................................ 54959 ........................................................................ 54960 ........................................................................ 54961 ........................................................................ 54962 ........................................................................ 54963 ........................................................................ 54964 ........................................................................ 54965 ........................................................................ 54966 ........................................................................ 54967 ........................................................................ 54968 ........................................................................ 54969 ........................................................................ 54970 ........................................................................ 54971 ........................................................................ 54972 ........................................................................ 54973 ........................................................................ 54974 ........................................................................ 54975 ........................................................................ 54976 ........................................................................ 54977 ........................................................................ 54978 ........................................................................ 54979 ........................................................................ 54980 ........................................................................ 54981 ........................................................................ 54982 ........................................................................ 54983 ........................................................................ 54984 ........................................................................ 54985 ........................................................................ 54986 ........................................................................ 54987 ........................................................................ 54988 ........................................................................ 54989 ........................................................................ 54990 ........................................................................ 54991 ........................................................................ 54992 ........................................................................ 54993 ........................................................................ 54994 ........................................................................ 54995 ........................................................................ 54996 ........................................................................ 54997 ........................................................................ 54998 ........................................................................ 54999 ........................................................................ 55000 ........................................................................ 55001 ........................................................................ 55002 ........................................................................ 55003 ........................................................................ 55004 ........................................................................ 55005 ........................................................................ 55006 ........................................................................ 55007 ........................................................................ 55008 ........................................................................ 55009 ........................................................................ 55010 ........................................................................ 55011 ........................................................................ 55012 ........................................................................ 55013 ........................................................................ 55014 ........................................................................ 55015 ........................................................................ 55016 ........................................................................ 55017 ........................................................................ 55018 ........................................................................ 55019 ........................................................................ 55020 ........................................................................ 55021 ........................................................................ 55022 ........................................................................ 55023 ........................................................................ 55024 ........................................................................ 55025 ........................................................................ 55026 ........................................................................ 55027 ........................................................................ 55028 ........................................................................ 55029 ........................................................................ 55030 ........................................................................ 55031 ........................................................................ 55032 ........................................................................ 55033 ........................................................................ 55034 ........................................................................ 55035 ........................................................................ 55036 ........................................................................ 55037 ........................................................................ 55038 ........................................................................ 55039 ........................................................................ 55040 ........................................................................ 55041 ........................................................................ 55042 ........................................................................ 55043 ........................................................................ 55044 ........................................................................ 55045 ........................................................................ 55046 ........................................................................ 55047 ........................................................................ 55048 ........................................................................ 55049 ........................................................................ 55050 ........................................................................ 55051 ........................................................................ 55052 ........................................................................ 55053 ........................................................................ 55054 ........................................................................ 55055 ........................................................................ 55056 ........................................................................ 55057 ........................................................................ 55058 ........................................................................ 55059 ........................................................................ 55060 ........................................................................ 55061 ........................................................................ 55062 ........................................................................ 55063 ........................................................................ 55064 ........................................................................ 55065 ........................................................................ 55066 ........................................................................ 55067 ........................................................................ 55068 ........................................................................ 55069 ........................................................................ 55070 ........................................................................ 55071 ........................................................................ 55072 ........................................................................ 55073 ........................................................................ 55074 ........................................................................ 55075 ........................................................................ 55076 ........................................................................ 55077 ........................................................................ 55078 ........................................................................ 55079 ........................................................................ 55080 ........................................................................ 55081 ........................................................................ 55082 ........................................................................ 55083 ........................................................................ 55084 ........................................................................ 55085 ........................................................................ 55086 ........................................................................ 55087 ........................................................................ 55088 ........................................................................ 55089 ........................................................................ 55090 ........................................................................ 55091 ........................................................................ 55092 ........................................................................ 55093 ........................................................................ 55094 ........................................................................ 55095 ........................................................................ 55096 ........................................................................ 55097 ........................................................................ 55098 ........................................................................ 55099 ........................................................................ 55100 ........................................................................ 55101 ........................................................................ 55102 ........................................................................ 55103 ........................................................................ 55104 ........................................................................ 55105 ........................................................................ 55106 ........................................................................ 55107 ........................................................................ 55108 ........................................................................ 55109 ........................................................................ 55110 ........................................................................ 55111 ........................................................................ 55112 ........................................................................ 55113 ........................................................................ 55114 ........................................................................ 55115 ........................................................................ 55116 ........................................................................ 55117 ........................................................................ 55118 ........................................................................ 55119 ........................................................................ 55120 ........................................................................ 55121 ........................................................................ 55122 ........................................................................ 55123 ........................................................................ 55124 ........................................................................ 55125 ........................................................................ 55126 ........................................................................ 55127 ........................................................................ 55128 ........................................................................ 55129 ........................................................................ 55130 ........................................................................ 55131 ........................................................................ 55132 ........................................................................ 55133 ........................................................................ 55134 ........................................................................ 55135 ........................................................................ 55136 ........................................................................ 55137 ........................................................................ 55138 ........................................................................ 55139 ........................................................................ 55140 ........................................................................ 55141 ........................................................................ 55142 ........................................................................ 55143 ........................................................................ 55144 ........................................................................ 55145 ........................................................................ 55146 ........................................................................ 55147 ........................................................................ 55148 ........................................................................ 55149 ........................................................................ 55150 ........................................................................ 55151 ........................................................................ 55152 ........................................................................ 55153 ........................................................................ 55154 ........................................................................ 55155 ........................................................................ 55156 ........................................................................ 55157 ........................................................................ 55158 ........................................................................ 55159 ........................................................................ 55160 ........................................................................ 55161 ........................................................................ 55162 ........................................................................ 55163 ........................................................................ 55164 ........................................................................ 55165 ........................................................................ 55166 ........................................................................ 55167 ........................................................................ 55168 ........................................................................ 55169 ........................................................................ 55170 ........................................................................ 55171 ........................................................................ 55172 ........................................................................ 55173 ........................................................................ 55174 ........................................................................ 55175 ........................................................................ 55176 ........................................................................ 55177 ........................................................................ 55178 ........................................................................ 55179 ........................................................................ 55180 ........................................................................ 55181 ........................................................................ 55182 ........................................................................ 55183 ........................................................................ 55184 ........................................................................ 55185 ........................................................................ 55186 ........................................................................ 55187 ........................................................................ 55188 ........................................................................ 55189 ........................................................................ 55190 ........................................................................ 55191 ........................................................................ 55192 ........................................................................ 55193 ........................................................................ 55194 ........................................................................ 55195 ........................................................................ 55196 ........................................................................ 55197 ........................................................................ 55198 ........................................................................ 55199 ........................................................................ 55200 ........................................................................ 55201 ........................................................................ 55202 ........................................................................ 55203 ........................................................................ 55204 ........................................................................ 55205 ........................................................................ 55206 ........................................................................ 55207 ........................................................................ 55208 ........................................................................ 55209 ........................................................................ 55210 ........................................................................ 55211 ........................................................................ 55212 ........................................................................ 55213 ........................................................................ 55214 ........................................................................ 55215 ........................................................................ 55216 ........................................................................ 55217 ........................................................................ 55218 ........................................................................ 55219 ........................................................................ 55220 ........................................................................ 55221 ........................................................................ 55222 ........................................................................ 55223 ........................................................................ 55224 ........................................................................ 55225 ........................................................................ 55226 ........................................................................ 55227 ........................................................................ 55228 ........................................................................ 55229 ........................................................................ 55230 ........................................................................ 55231 ........................................................................ 55232 ........................................................................ 55233 ........................................................................ 55234 ........................................................................ 55235 ........................................................................ 55236 ........................................................................ 55237 ........................................................................ 55238 ........................................................................ 55239 ........................................................................ 55240 ........................................................................ 55241 ........................................................................ 55242 ........................................................................ 55243 ........................................................................ 55244 ........................................................................ 55245 ........................................................................ 55246 ........................................................................ 55247 ........................................................................ 55248 ........................................................................ 55249 ........................................................................ 55250 ........................................................................ 55251 ........................................................................ 55252 ........................................................................ 55253 ........................................................................ 55254 ........................................................................ 55255 ........................................................................ 55256 ........................................................................ 55257 ........................................................................ 55258 ........................................................................ 55259 ........................................................................ 55260 ........................................................................ 55261 ........................................................................ 55262 ........................................................................ 55263 ........................................................................ 55264 ........................................................................ 55265 ........................................................................ 55266 ........................................................................ 55267 ........................................................................ 55268 ........................................................................ 55269 ........................................................................ 55270 ........................................................................ 55271 ........................................................................ 55272 ........................................................................ 55273 ........................................................................ 55274 ........................................................................ 55275 ........................................................................ 55276 ........................................................................ 55277 ........................................................................ 55278 ........................................................................ 55279 ........................................................................ 55280 ........................................................................ 55281 ........................................................................ 55282 ........................................................................ 55283 ........................................................................ 55284 ........................................................................ 55285 ........................................................................ 55286 ........................................................................ 55287 ........................................................................ 55288 ........................................................................ 55289 ........................................................................ 55290 ........................................................................ 55291 ........................................................................ 55292 ........................................................................ 55293 ........................................................................ 55294 ........................................................................ 55295 ........................................................................ 55296 ........................................................................ 55297 ........................................................................ 55298 ........................................................................ 55299 ........................................................................ 55300 ........................................................................ 55301 ........................................................................ 55302 ........................................................................ 55303 ........................................................................ 55304 ........................................................................ 55305 ........................................................................ 55306 ........................................................................ 55307 ........................................................................ 55308 ........................................................................ 55309 ........................................................................ 55310 ........................................................................ 55311 ........................................................................ 55312 ........................................................................ 55313 ........................................................................ 55314 ........................................................................ 55315 ........................................................................ 55316 ........................................................................ 55317 ........................................................................ 55318 ........................................................................ 55319 ........................................................................ 55320 ........................................................................ 55321 ........................................................................ 55322 ........................................................................ 55323 ........................................................................ 55324 ........................................................................ 55325 ........................................................................ 55326 ........................................................................ 55327 ........................................................................ 55328 ........................................................................ 55329 ........................................................................ 55330 ........................................................................ 55331 ........................................................................ 55332 ........................................................................ 55333 ........................................................................ 55334 ........................................................................ 55335 ........................................................................ 55336 ........................................................................ 55337 ........................................................................ 55338 ........................................................................ 55339 ........................................................................ 55340 ........................................................................ 55341 ........................................................................ 55342 ........................................................................ 55343 ........................................................................ 55344 ........................................................................ 55345 ........................................................................ 55346 ........................................................................ 55347 ........................................................................ 55348 ........................................................................ 55349 ........................................................................ 55350 ........................................................................ 55351 ........................................................................ 55352 ........................................................................ 55353 ........................................................................ 55354 ........................................................................ 55355 ........................................................................ 55356 ........................................................................ 55357 ........................................................................ 55358 ........................................................................ 55359 ........................................................................ 55360 ........................................................................ 55361 ........................................................................ 55362 ........................................................................ 55363 ........................................................................ 55364 ........................................................................ 55365 ........................................................................ 55366 ........................................................................ 55367 ........................................................................ 55368 ........................................................................ 55369 ........................................................................ 55370 ........................................................................ 55371 ........................................................................ 55372 ........................................................................ 55373 ........................................................................ 55374 ........................................................................ 55375 ........................................................................ 55376 ........................................................................ 55377 ........................................................................ 55378 ........................................................................ 55379 ........................................................................ 55380 ........................................................................ 55381 ........................................................................ 55382 ........................................................................ 55383 ........................................................................ 55384 ........................................................................ 55385 ........................................................................ 55386 ........................................................................ 55387 ........................................................................ 55388 ........................................................................ 55389 ........................................................................ 55390 ........................................................................ 55391 ........................................................................ 55392 ........................................................................ 55393 ........................................................................ 55394 ........................................................................ 55395 ........................................................................ 55396 ........................................................................ 55397 ........................................................................ 55398 ........................................................................ 55399 ........................................................................ 55400 ........................................................................ 55401 ........................................................................ 55402 ........................................................................ 55403 ........................................................................ 55404 ........................................................................ 55405 ........................................................................ 55406 ........................................................................ 55407 ........................................................................ 55408 ........................................................................ 55409 ........................................................................ 55410 ........................................................................ 55411 ........................................................................ 55412 ........................................................................ 55413 ........................................................................ 55414 ........................................................................ 55415 ........................................................................ 55416 ........................................................................ 55417 ........................................................................ 55418 ........................................................................ 55419 ........................................................................ 55420 ........................................................................ 55421 ........................................................................ 55422 ........................................................................ 55423 ........................................................................ 55424 ........................................................................ 55425 ........................................................................ 55426 ........................................................................ 55427 ........................................................................ 55428 ........................................................................ 55429 ........................................................................ 55430 ........................................................................ 55431 ........................................................................ 55432 ........................................................................ 55433 ........................................................................ 55434 ........................................................................ 55435 ........................................................................ 55436 ........................................................................ 55437 ........................................................................ 55438 ........................................................................ 55439 ........................................................................ 55440 ........................................................................ 55441 ........................................................................ 55442 ........................................................................ 55443 ........................................................................ 55444 ........................................................................ 55445 ........................................................................ 55446 ........................................................................ 55447 ........................................................................ 55448 ........................................................................ 55449 ........................................................................ 55450 ........................................................................ 55451 ........................................................................ 55452 ........................................................................ 55453 ........................................................................ 55454 ........................................................................ 55455 ........................................................................ 55456 ........................................................................ 55457 ........................................................................ 55458 ........................................................................ 55459 ........................................................................ 55460 ........................................................................ 55461 ........................................................................ 55462 ........................................................................ 55463 ........................................................................ 55464 ........................................................................ 55465 ........................................................................ 55466 ........................................................................ 55467 ........................................................................ 55468 ........................................................................ 55469 ........................................................................ 55470 ........................................................................ 55471 ........................................................................ 55472 ........................................................................ 55473 ........................................................................ 55474 ........................................................................ 55475 ........................................................................ 55476 ........................................................................ 55477 ........................................................................ 55478 ........................................................................ 55479 ........................................................................ 55480 ........................................................................ 55481 ........................................................................ 55482 ........................................................................ 55483 ........................................................................ 55484 ........................................................................ 55485 ........................................................................ 55486 ........................................................................ 55487 ........................................................................ 55488 ........................................................................ 55489 ........................................................................ 55490 ........................................................................ 55491 ........................................................................ 55492 ........................................................................ 55493 ........................................................................ 55494 ........................................................................ 55495 ........................................................................ 55496 ........................................................................ 55497 ........................................................................ 55498 ........................................................................ 55499 ........................................................................ 55500 ........................................................................ 55501 ........................................................................ 55502 ........................................................................ 55503 ........................................................................ 55504 ........................................................................ 55505 ........................................................................ 55506 ........................................................................ 55507 ........................................................................ 55508 ........................................................................ 55509 ........................................................................ 55510 ........................................................................ 55511 ........................................................................ 55512 ........................................................................ 55513 ........................................................................ 55514 ........................................................................ 55515 ........................................................................ 55516 ........................................................................ 55517 ........................................................................ 55518 ........................................................................ 55519 ........................................................................ 55520 ........................................................................ 55521 ........................................................................ 55522 ........................................................................ 55523 ........................................................................ 55524 ........................................................................ 55525 ........................................................................ 55526 ........................................................................ 55527 ........................................................................ 55528 ........................................................................ 55529 ........................................................................ 55530 ........................................................................ 55531 ........................................................................ 55532 ........................................................................ 55533 ........................................................................ 55534 ........................................................................ 55535 ........................................................................ 55536 ........................................................................ 55537 ........................................................................ 55538 ........................................................................ 55539 ........................................................................ 55540 ........................................................................ 55541 ........................................................................ 55542 ........................................................................ 55543 ........................................................................ 55544 ........................................................................ 55545 ........................................................................ 55546 ........................................................................ 55547 ........................................................................ 55548 ........................................................................ 55549 ........................................................................ 55550 ........................................................................ 55551 ........................................................................ 55552 ........................................................................ 55553 ........................................................................ 55554 ........................................................................ 55555 ........................................................................ 55556 ........................................................................ 55557 ........................................................................ 55558 ........................................................................ 55559 ........................................................................ 55560 ........................................................................ 55561 ........................................................................ 55562 ........................................................................ 55563 ........................................................................ 55564 ........................................................................ 55565 ........................................................................ 55566 ........................................................................ 55567 ........................................................................ 55568 ........................................................................ 55569 ........................................................................ 55570 ........................................................................ 55571 ........................................................................ 55572 ........................................................................ 55573 ........................................................................ 55574 ........................................................................ 55575 ........................................................................ 55576 ........................................................................ 55577 ........................................................................ 55578 ........................................................................ 55579 ........................................................................ 55580 ........................................................................ 55581 ........................................................................ 55582 ........................................................................ 55583 ........................................................................ 55584 ........................................................................ 55585 ........................................................................ 55586 ........................................................................ 55587 ........................................................................ 55588 ........................................................................ 55589 ........................................................................ 55590 ........................................................................ 55591 ........................................................................ 55592 ........................................................................ 55593 ........................................................................ 55594 ........................................................................ 55595 ........................................................................ 55596 ........................................................................ 55597 ........................................................................ 55598 ........................................................................ 55599 ........................................................................ 55600 ........................................................................ 55601 ........................................................................ 55602 ........................................................................ 55603 ........................................................................ 55604 ........................................................................ 55605 ........................................................................ 55606 ........................................................................ 55607 ........................................................................ 55608 ........................................................................ 55609 ........................................................................ 55610 ........................................................................ 55611 ........................................................................ 55612 ........................................................................ 55613 ........................................................................ 55614 ........................................................................ 55615 ........................................................................ 55616 ........................................................................ 55617 ........................................................................ 55618 ........................................................................ 55619 ........................................................................ 55620 ........................................................................ 55621 ........................................................................ 55622 ........................................................................ 55623 ........................................................................ 55624 ........................................................................ 55625 ........................................................................ 55626 ........................................................................ 55627 ........................................................................ 55628 ........................................................................ 55629 ........................................................................ 55630 ........................................................................ 55631 ........................................................................ 55632 ........................................................................ 55633 ........................................................................ 55634 ........................................................................ 55635 ........................................................................ 55636 ........................................................................ 55637 ........................................................................ 55638 ........................................................................ 55639 ........................................................................ 55640 ........................................................................ 55641 ........................................................................ 55642 ........................................................................ 55643 ........................................................................ 55644 ........................................................................ 55645 ........................................................................ 55646 ........................................................................ 55647 ........................................................................ 55648 ........................................................................ 55649 ........................................................................ 55650 ........................................................................ 55651 ........................................................................ 55652 ........................................................................ 55653 ........................................................................ 55654 ........................................................................ 55655 ........................................................................ 55656 ........................................................................ 55657 ........................................................................ 55658 ........................................................................ 55659 ........................................................................ 55660 ........................................................................ 55661 ........................................................................ 55662 ........................................................................ 55663 ........................................................................ 55664 ........................................................................ 55665 ........................................................................ 55666 ........................................................................ 55667 ........................................................................ 55668 ........................................................................ 55669 ........................................................................ 55670 ........................................................................ 55671 ........................................................................ 55672 ........................................................................ 55673 ........................................................................ 55674 ........................................................................ 55675 ........................................................................ 55676 ........................................................................ 55677 ........................................................................ 55678 ........................................................................ 55679 ........................................................................ 55680 ........................................................................ 55681 ........................................................................ 55682 ........................................................................ 55683 ........................................................................ 55684 ........................................................................ 55685 ........................................................................ 55686 ........................................................................ 55687 ........................................................................ 55688 ........................................................................ 55689 ........................................................................ 55690 ........................................................................ 55691 ........................................................................ 55692 ........................................................................ 55693 ........................................................................ 55694 ........................................................................ 55695 ........................................................................ 55696 ........................................................................ 55697 ........................................................................ 55698 ........................................................................ 55699 ........................................................................ 55700 ........................................................................ 55701 ........................................................................ 55702 ........................................................................ 55703 ........................................................................ 55704 ........................................................................ 55705 ........................................................................ 55706 ........................................................................ 55707 ........................................................................ 55708 ........................................................................ 55709 ........................................................................ 55710 ........................................................................ 55711 ........................................................................ 55712 ........................................................................ 55713 ........................................................................ 55714 ........................................................................ 55715 ........................................................................ 55716 ........................................................................ 55717 ........................................................................ 55718 ........................................................................ 55719 ........................................................................ 55720 ........................................................................ 55721 ........................................................................ 55722 ........................................................................ 55723 ........................................................................ 55724 ........................................................................ 55725 ........................................................................ 55726 ........................................................................ 55727 ........................................................................ 55728 ........................................................................ 55729 ........................................................................ 55730 ........................................................................ 55731 ........................................................................ 55732 ........................................................................ 55733 ........................................................................ 55734 ........................................................................ 55735 ........................................................................ 55736 ........................................................................ 55737 ........................................................................ 55738 ........................................................................ 55739 ........................................................................ 55740 ........................................................................ 55741 ........................................................................ 55742 ........................................................................ 55743 ........................................................................ 55744 ........................................................................ 55745 ........................................................................ 55746 ........................................................................ 55747 ........................................................................ 55748 ........................................................................ 55749 ........................................................................ 55750 ........................................................................ 55751 ........................................................................ 55752 ........................................................................ 55753 ........................................................................ 55754 ........................................................................ 55755 ........................................................................ 55756 ........................................................................ 55757 ........................................................................ 55758 ........................................................................ 55759 ........................................................................ 55760 ........................................................................ 55761 ........................................................................ 55762 ........................................................................ 55763 ........................................................................ 55764 ........................................................................ 55765 ........................................................................ 55766 ........................................................................ 55767 ........................................................................ 55768 ........................................................................ 55769 ........................................................................ 55770 ........................................................................ 55771 ........................................................................ 55772 ........................................................................ 55773 ........................................................................ 55774 ........................................................................ 55775 ........................................................................ 55776 ........................................................................ 55777 ........................................................................ 55778 ........................................................................ 55779 ........................................................................ 55780 ........................................................................ 55781 ........................................................................ 55782 ........................................................................ 55783 ........................................................................ 55784 ........................................................................ 55785 ........................................................................ 55786 ........................................................................ 55787 ........................................................................ 55788 ........................................................................ 55789 ........................................................................ 55790 ........................................................................ 55791 ........................................................................ 55792 ........................................................................ 55793 ........................................................................ 55794 ........................................................................ 55795 ........................................................................ 55796 ........................................................................ 55797 ........................................................................ 55798 ........................................................................ 55799 ........................................................................ 55800 ........................................................................ 55801 ........................................................................ 55802 ........................................................................ 55803 ........................................................................ 55804 ........................................................................ 55805 ........................................................................ 55806 ........................................................................ 55807 ........................................................................ 55808 ........................................................................ 55809 ........................................................................ 55810 ........................................................................ 55811 ........................................................................ 55812 ........................................................................ 55813 ........................................................................ 55814 ........................................................................ 55815 ........................................................................ 55816 ........................................................................ 55817 ........................................................................ 55818 ........................................................................ 55819 ........................................................................ 55820 ........................................................................ 55821 ........................................................................ 55822 ........................................................................ 55823 ........................................................................ 55824 ........................................................................ 55825 ........................................................................ 55826 ........................................................................ 55827 ........................................................................ 55828 ........................................................................ 55829 ........................................................................ 55830 ........................................................................ 55831 ........................................................................ 55832 ........................................................................ 55833 ........................................................................ 55834 ........................................................................ 55835 ........................................................................ 55836 ........................................................................ 55837 ........................................................................ 55838 ........................................................................ 55839 ........................................................................ 55840 ........................................................................ 55841 ........................................................................ 55842 ........................................................................ 55843 ........................................................................ 55844 ........................................................................ 55845 ........................................................................ 55846 ........................................................................ 55847 ........................................................................ 55848 ........................................................................ 55849 ........................................................................ 55850 ........................................................................ 55851 ........................................................................ 55852 ........................................................................ 55853 ........................................................................ 55854 ........................................................................ 55855 ........................................................................ 55856 ........................................................................ 55857 ........................................................................ 55858 ........................................................................ 55859 ........................................................................ 55860 ........................................................................ 55861 ........................................................................ 55862 ........................................................................ 55863 ........................................................................ 55864 ........................................................................ 55865 ........................................................................ 55866 ........................................................................ 55867 ........................................................................ 55868 ........................................................................ 55869 ........................................................................ 55870 ........................................................................ 55871 ........................................................................ 55872 ........................................................................ 55873 ........................................................................ 55874 ........................................................................ 55875 ........................................................................ 55876 ........................................................................ 55877 ........................................................................ 55878 ........................................................................ 55879 ........................................................................ 55880 ........................................................................ 55881 ........................................................................ 55882 ........................................................................ 55883 ........................................................................ 55884 ........................................................................ 55885 ........................................................................ 55886 ........................................................................ 55887 ........................................................................ 55888 ........................................................................ 55889 ........................................................................ 55890 ........................................................................ 55891 ........................................................................ 55892 ........................................................................ 55893 ........................................................................ 55894 ........................................................................ 55895 ........................................................................ 55896 ........................................................................ 55897 ........................................................................ 55898 ........................................................................ 55899 ........................................................................ 55900 ........................................................................ 55901 ........................................................................ 55902 ........................................................................ 55903 ........................................................................ 55904 ........................................................................ 55905 ........................................................................ 55906 ........................................................................ 55907 ........................................................................ 55908 ........................................................................ 55909 ........................................................................ 55910 ........................................................................ 55911 ........................................................................ 55912 ........................................................................ 55913 ........................................................................ 55914 ........................................................................ 55915 ........................................................................ 55916 ........................................................................ 55917 ........................................................................ 55918 ........................................................................ 55919 ........................................................................ 55920 ........................................................................ 55921 ........................................................................ 55922 ........................................................................ 55923 ........................................................................ 55924 ........................................................................ 55925 ........................................................................ 55926 ........................................................................ 55927 ........................................................................ 55928 ........................................................................ 55929 ........................................................................ 55930 ........................................................................ 55931 ........................................................................ 55932 ........................................................................ 55933 ........................................................................ 55934 ........................................................................ 55935 ........................................................................ 55936 ........................................................................ 55937 ........................................................................ 55938 ........................................................................ 55939 ........................................................................ 55940 ........................................................................ 55941 ........................................................................ 55942 ........................................................................ 55943 ........................................................................ 55944 ........................................................................ 55945 ........................................................................ 55946 ........................................................................ 55947 ........................................................................ 55948 ........................................................................ 55949 ........................................................................ 55950 ........................................................................ 55951 ........................................................................ 55952 ........................................................................ 55953 ........................................................................ 55954 ........................................................................ 55955 ........................................................................ 55956 ........................................................................ 55957 ........................................................................ 55958 ........................................................................ 55959 ........................................................................ 55960 ........................................................................ 55961 ........................................................................ 55962 ........................................................................ 55963 ........................................................................ 55964 ........................................................................ 55965 ........................................................................ 55966 ........................................................................ 55967 ........................................................................ 55968 ........................................................................ 55969 ........................................................................ 55970 ........................................................................ 55971 ........................................................................ 55972 ........................................................................ 55973 ........................................................................ 55974 ........................................................................ 55975 ........................................................................ 55976 ........................................................................ 55977 ........................................................................ 55978 ........................................................................ 55979 ........................................................................ 55980 ........................................................................ 55981 ........................................................................ 55982 ........................................................................ 55983 ........................................................................ 55984 ........................................................................ 55985 ........................................................................ 55986 ........................................................................ 55987 ........................................................................ 55988 ........................................................................ 55989 ........................................................................ 55990 ........................................................................ 55991 ........................................................................ 55992 ........................................................................ 55993 ........................................................................ 55994 ........................................................................ 55995 ........................................................................ 55996 ........................................................................ 55997 ........................................................................ 55998 ........................................................................ 55999 ........................................................................ 56000 ........................................................................ 56001 ........................................................................ 56002 ........................................................................ 56003 ........................................................................ 56004 ........................................................................ 56005 ........................................................................ 56006 ........................................................................ 56007 ........................................................................ 56008 ........................................................................ 56009 ........................................................................ 56010 ........................................................................ 56011 ........................................................................ 56012 ........................................................................ 56013 ........................................................................ 56014 ........................................................................ 56015 ........................................................................ 56016 ........................................................................ 56017 ........................................................................ 56018 ........................................................................ 56019 ........................................................................ 56020 ........................................................................ 56021 ........................................................................ 56022 ........................................................................ 56023 ........................................................................ 56024 ........................................................................ 56025 ........................................................................ 56026 ........................................................................ 56027 ........................................................................ 56028 ........................................................................ 56029 ........................................................................ 56030 ........................................................................ 56031 ........................................................................ 56032 ........................................................................ 56033 ........................................................................ 56034 ........................................................................ 56035 ........................................................................ 56036 ........................................................................ 56037 ........................................................................ 56038 ........................................................................ 56039 ........................................................................ 56040 ........................................................................ 56041 ........................................................................ 56042 ........................................................................ 56043 ........................................................................ 56044 ........................................................................ 56045 ........................................................................ 56046 ........................................................................ 56047 ........................................................................ 56048 ........................................................................ 56049 ........................................................................ 56050 ........................................................................ 56051 ........................................................................ 56052 ........................................................................ 56053 ........................................................................ 56054 ........................................................................ 56055 ........................................................................ 56056 ........................................................................ 56057 ........................................................................ 56058 ........................................................................ 56059 ........................................................................ 56060 ........................................................................ 56061 ........................................................................ 56062 ........................................................................ 56063 ........................................................................ 56064 ........................................................................ 56065 ........................................................................ 56066 ........................................................................ 56067 ........................................................................ 56068 ........................................................................ 56069 ........................................................................ 56070 ........................................................................ 56071 ........................................................................ 56072 ........................................................................ 56073 ........................................................................ 56074 ........................................................................ 56075 ........................................................................ 56076 ........................................................................ 56077 ........................................................................ 56078 ........................................................................ 56079 ........................................................................ 56080 ........................................................................ 56081 ........................................................................ 56082 ........................................................................ 56083 ........................................................................ 56084 ........................................................................ 56085 ........................................................................ 56086 ........................................................................ 56087 ........................................................................ 56088 ........................................................................ 56089 ........................................................................ 56090 ........................................................................ 56091 ........................................................................ 56092 ........................................................................ 56093 ........................................................................ 56094 ........................................................................ 56095 ........................................................................ 56096 ........................................................................ 56097 ........................................................................ 56098 ........................................................................ 56099 ........................................................................ 56100 ........................................................................ 56101 ........................................................................ 56102 ........................................................................ 56103 ........................................................................ 56104 ........................................................................ 56105 ........................................................................ 56106 ........................................................................ 56107 ........................................................................ 56108 ........................................................................ 56109 ........................................................................ 56110 ........................................................................ 56111 ........................................................................ 56112 ........................................................................ 56113 ........................................................................ 56114 ........................................................................ 56115 ........................................................................ 56116 ........................................................................ 56117 ........................................................................ 56118 ........................................................................ 56119 ........................................................................ 56120 ........................................................................ 56121 ........................................................................ 56122 ........................................................................ 56123 ........................................................................ 56124 ........................................................................ 56125 ........................................................................ 56126 ........................................................................ 56127 ........................................................................ 56128 ........................................................................ 56129 ........................................................................ 56130 ........................................................................ 56131 ........................................................................ 56132 ........................................................................ 56133 ........................................................................ 56134 ........................................................................ 56135 ........................................................................ 56136 ........................................................................ 56137 ........................................................................ 56138 ........................................................................ 56139 ........................................................................ 56140 ........................................................................ 56141 ........................................................................ 56142 ........................................................................ 56143 ........................................................................ 56144 ........................................................................ 56145 ........................................................................ 56146 ........................................................................ 56147 ........................................................................ 56148 ........................................................................ 56149 ........................................................................ 56150 ........................................................................ 56151 ........................................................................ 56152 ........................................................................ 56153 ........................................................................ 56154 ........................................................................ 56155 ........................................................................ 56156 ........................................................................ 56157 ........................................................................ 56158 ........................................................................ 56159 ........................................................................ 56160 ........................................................................ 56161 ........................................................................ 56162 ........................................................................ 56163 ........................................................................ 56164 ........................................................................ 56165 ........................................................................ 56166 ........................................................................ 56167 ........................................................................ 56168 ........................................................................ 56169 ........................................................................ 56170 ........................................................................ 56171 ........................................................................ 56172 ........................................................................ 56173 ........................................................................ 56174 ........................................................................ 56175 ........................................................................ 56176 ........................................................................ 56177 ........................................................................ 56178 ........................................................................ 56179 ........................................................................ 56180 ........................................................................ 56181 ........................................................................ 56182 ........................................................................ 56183 ........................................................................ 56184 ........................................................................ 56185 ........................................................................ 56186 ........................................................................ 56187 ........................................................................ 56188 ........................................................................ 56189 ........................................................................ 56190 ........................................................................ 56191 ........................................................................ 56192 ........................................................................ 56193 ........................................................................ 56194 ........................................................................ 56195 ........................................................................ 56196 ........................................................................ 56197 ........................................................................ 56198 ........................................................................ 56199 ........................................................................ 56200 ........................................................................ 56201 ........................................................................ 56202 ........................................................................ 56203 ........................................................................ 56204 ........................................................................ 56205 ........................................................................ 56206 ........................................................................ 56207 ........................................................................ 56208 ........................................................................ 56209 ........................................................................ 56210 ........................................................................ 56211 ........................................................................ 56212 ........................................................................ 56213 ........................................................................ 56214 ........................................................................ 56215 ........................................................................ 56216 ........................................................................ 56217 ........................................................................ 56218 ........................................................................ 56219 ........................................................................ 56220 ........................................................................ 56221 ........................................................................ 56222 ........................................................................ 56223 ........................................................................ 56224 ........................................................................ 56225 ........................................................................ 56226 ........................................................................ 56227 ........................................................................ 56228 ........................................................................ 56229 ........................................................................ 56230 ........................................................................ 56231 ........................................................................ 56232 ........................................................................ 56233 ........................................................................ 56234 ........................................................................ 56235 ........................................................................ 56236 ........................................................................ 56237 ........................................................................ 56238 ........................................................................ 56239 ........................................................................ 56240 ........................................................................ 56241 ........................................................................ 56242 ........................................................................ 56243 ........................................................................ 56244 ........................................................................ 56245 ........................................................................ 56246 ........................................................................ 56247 ........................................................................ 56248 ........................................................................ 56249 ........................................................................ 56250 ........................................................................ 56251 ........................................................................ 56252 ........................................................................ 56253 ........................................................................ 56254 ........................................................................ 56255 ........................................................................ 56256 ........................................................................ 56257 ........................................................................ 56258 ........................................................................ 56259 ........................................................................ 56260 ........................................................................ 56261 ........................................................................ 56262 ........................................................................ 56263 ........................................................................ 56264 ........................................................................ 56265 ........................................................................ 56266 ........................................................................ 56267 ........................................................................ 56268 ........................................................................ 56269 ........................................................................ 56270 ........................................................................ 56271 ........................................................................ 56272 ........................................................................ 56273 ........................................................................ 56274 ........................................................................ 56275 ........................................................................ 56276 ........................................................................ 56277 ........................................................................ 56278 ........................................................................ 56279 ........................................................................ 56280 ........................................................................ 56281 ........................................................................ 56282 ........................................................................ 56283 ........................................................................ 56284 ........................................................................ 56285 ........................................................................ 56286 ........................................................................ 56287 ........................................................................ 56288 ........................................................................ 56289 ........................................................................ 56290 ........................................................................ 56291 ........................................................................ 56292 ........................................................................ 56293 ........................................................................ 56294 ........................................................................ 56295 ........................................................................ 56296 ........................................................................ 56297 ........................................................................ 56298 ........................................................................ 56299 ........................................................................ 56300 ........................................................................ 56301 ........................................................................ 56302 ........................................................................ 56303 ........................................................................ 56304 ........................................................................ 56305 ........................................................................ 56306 ........................................................................ 56307 ........................................................................ 56308 ........................................................................ 56309 ........................................................................ 56310 ........................................................................ 56311 ........................................................................ 56312 ........................................................................ 56313 ........................................................................ 56314 ........................................................................ 56315 ........................................................................ 56316 ........................................................................ 56317 ........................................................................ 56318 ........................................................................ 56319 ........................................................................ 56320 ........................................................................ 56321 ........................................................................ 56322 ........................................................................ 56323 ........................................................................ 56324 ........................................................................ 56325 ........................................................................ 56326 ........................................................................ 56327 ........................................................................ 56328 ........................................................................ 56329 ........................................................................ 56330 ........................................................................ 56331 ........................................................................ 56332 ........................................................................ 56333 ........................................................................ 56334 ........................................................................ 56335 ........................................................................ 56336 ........................................................................ 56337 ........................................................................ 56338 ........................................................................ 56339 ........................................................................ 56340 ........................................................................ 56341 ........................................................................ 56342 ........................................................................ 56343 ........................................................................ 56344 ........................................................................ 56345 ........................................................................ 56346 ........................................................................ 56347 ........................................................................ 56348 ........................................................................ 56349 ........................................................................ 56350 ........................................................................ 56351 ........................................................................ 56352 ........................................................................ 56353 ........................................................................ 56354 ........................................................................ 56355 ........................................................................ 56356 ........................................................................ 56357 ........................................................................ 56358 ........................................................................ 56359 ........................................................................ 56360 ........................................................................ 56361 ........................................................................ 56362 ........................................................................ 56363 ........................................................................ 56364 ........................................................................ 56365 ........................................................................ 56366 ........................................................................ 56367 ........................................................................ 56368 ........................................................................ 56369 ........................................................................ 56370 ........................................................................ 56371 ........................................................................ 56372 ........................................................................ 56373 ........................................................................ 56374 ........................................................................ 56375 ........................................................................ 56376 ........................................................................ 56377 ........................................................................ 56378 ........................................................................ 56379 ........................................................................ 56380 ........................................................................ 56381 ........................................................................ 56382 ........................................................................ 56383 ........................................................................ 56384 ........................................................................ 56385 ........................................................................ 56386 ........................................................................ 56387 ........................................................................ 56388 ........................................................................ 56389 ........................................................................ 56390 ........................................................................ 56391 ........................................................................ 56392 ........................................................................ 56393 ........................................................................ 56394 ........................................................................ 56395 ........................................................................ 56396 ........................................................................ 56397 ........................................................................ 56398 ........................................................................ 56399 ........................................................................ 56400 ........................................................................ 56401 ........................................................................ 56402 ........................................................................ 56403 ........................................................................ 56404 ........................................................................ 56405 ........................................................................ 56406 ........................................................................ 56407 ........................................................................ 56408 ........................................................................ 56409 ........................................................................ 56410 ........................................................................ 56411 ........................................................................ 56412 ........................................................................ 56413 ........................................................................ 56414 ........................................................................ 56415 ........................................................................ 56416 ........................................................................ 56417 ........................................................................ 56418 ........................................................................ 56419 ........................................................................ 56420 ........................................................................ 56421 ........................................................................ 56422 ........................................................................ 56423 ........................................................................ 56424 ........................................................................ 56425 ........................................................................ 56426 ........................................................................ 56427 ........................................................................ 56428 ........................................................................ 56429 ........................................................................ 56430 ........................................................................ 56431 ........................................................................ 56432 ........................................................................ 56433 ........................................................................ 56434 ........................................................................ 56435 ........................................................................ 56436 ........................................................................ 56437 ........................................................................ 56438 ........................................................................ 56439 ........................................................................ 56440 ........................................................................ 56441 ........................................................................ 56442 ........................................................................ 56443 ........................................................................ 56444 ........................................................................ 56445 ........................................................................ 56446 ........................................................................ 56447 ........................................................................ 56448 ........................................................................ 56449 ........................................................................ 56450 ........................................................................ 56451 ........................................................................ 56452 ........................................................................ 56453 ........................................................................ 56454 ........................................................................ 56455 ........................................................................ 56456 ........................................................................ 56457 ........................................................................ 56458 ........................................................................ 56459 ........................................................................ 56460 ........................................................................ 56461 ........................................................................ 56462 ........................................................................ 56463 ........................................................................ 56464 ........................................................................ 56465 ........................................................................ 56466 ........................................................................ 56467 ........................................................................ 56468 ........................................................................ 56469 ........................................................................ 56470 ........................................................................ 56471 ........................................................................ 56472 ........................................................................ 56473 ........................................................................ 56474 ........................................................................ 56475 ........................................................................ 56476 ........................................................................ 56477 ........................................................................ 56478 ........................................................................ 56479 ........................................................................ 56480 ........................................................................ 56481 ........................................................................ 56482 ........................................................................ 56483 ........................................................................ 56484 ........................................................................ 56485 ........................................................................ 56486 ........................................................................ 56487 ........................................................................ 56488 ........................................................................ 56489 ........................................................................ 56490 ........................................................................ 56491 ........................................................................ 56492 ........................................................................ 56493 ........................................................................ 56494 ........................................................................ 56495 ........................................................................ 56496 ........................................................................ 56497 ........................................................................ 56498 ........................................................................ 56499 ........................................................................ 56500 ........................................................................ 56501 ........................................................................ 56502 ........................................................................ 56503 ........................................................................ 56504 ........................................................................ 56505 ........................................................................ 56506 ........................................................................ 56507 ........................................................................ 56508 ........................................................................ 56509 ........................................................................ 56510 ........................................................................ 56511 ........................................................................ 56512 ........................................................................ 56513 ........................................................................ 56514 ........................................................................ 56515 ........................................................................ 56516 ........................................................................ 56517 ........................................................................ 56518 ........................................................................ 56519 ........................................................................ 56520 ........................................................................ 56521 ........................................................................ 56522 ........................................................................ 56523 ........................................................................ 56524 ........................................................................ 56525 ........................................................................ 56526 ........................................................................ 56527 ........................................................................ 56528 ........................................................................ 56529 ........................................................................ 56530 ........................................................................ 56531 ........................................................................ 56532 ........................................................................ 56533 ........................................................................ 56534 ........................................................................ 56535 ........................................................................ 56536 ........................................................................ 56537 ........................................................................ 56538 ........................................................................ 56539 ........................................................................ 56540 ........................................................................ 56541 ........................................................................ 56542 ........................................................................ 56543 ........................................................................ 56544 ........................................................................ 56545 ........................................................................ 56546 ........................................................................ 56547 ........................................................................ 56548 ........................................................................ 56549 ........................................................................ 56550 ........................................................................ 56551 ........................................................................ 56552 ........................................................................ 56553 ........................................................................ 56554 ........................................................................ 56555 ........................................................................ 56556 ........................................................................ 56557 ........................................................................ 56558 ........................................................................ 56559 ........................................................................ 56560 ........................................................................ 56561 ........................................................................ 56562 ........................................................................ 56563 ........................................................................ 56564 ........................................................................ 56565 ........................................................................ 56566 ........................................................................ 56567 ........................................................................ 56568 ........................................................................ 56569 ........................................................................ 56570 ........................................................................ 56571 ........................................................................ 56572 ........................................................................ 56573 ........................................................................ 56574 ........................................................................ 56575 ........................................................................ 56576 ........................................................................ 56577 ........................................................................ 56578 ........................................................................ 56579 ........................................................................ 56580 ........................................................................ 56581 ........................................................................ 56582 ........................................................................ 56583 ........................................................................ 56584 ........................................................................ 56585 ........................................................................ 56586 ........................................................................ 56587 ........................................................................ 56588 ........................................................................ 56589 ........................................................................ 56590 ........................................................................ 56591 ........................................................................ 56592 ........................................................................ 56593 ........................................................................ 56594 ........................................................................ 56595 ........................................................................ 56596 ........................................................................ 56597 ........................................................................ 56598 ........................................................................ 56599 ........................................................................ 56600 ........................................................................ 56601 ........................................................................ 56602 ........................................................................ 56603 ........................................................................ 56604 ........................................................................ 56605 ........................................................................ 56606 ........................................................................ 56607 ........................................................................ 56608 ........................................................................ 56609 ........................................................................ 56610 ........................................................................ 56611 ........................................................................ 56612 ........................................................................ 56613 ........................................................................ 56614 ........................................................................ 56615 ........................................................................ 56616 ........................................................................ 56617 ........................................................................ 56618 ........................................................................ 56619 ........................................................................ 56620 ........................................................................ 56621 ........................................................................ 56622 ........................................................................ 56623 ........................................................................ 56624 ........................................................................ 56625 ........................................................................ 56626 ........................................................................ 56627 ........................................................................ 56628 ........................................................................ 56629 ........................................................................ 56630 ........................................................................ 56631 ........................................................................ 56632 ........................................................................ 56633 ........................................................................ 56634 ........................................................................ 56635 ........................................................................ 56636 ........................................................................ 56637 ........................................................................ 56638 ........................................................................ 56639 ........................................................................ 56640 ........................................................................ 56641 ........................................................................ 56642 ........................................................................ 56643 ........................................................................ 56644 ........................................................................ 56645 ........................................................................ 56646 ........................................................................ 56647 ........................................................................ 56648 ........................................................................ 56649 ........................................................................ 56650 ........................................................................ 56651 ........................................................................ 56652 ........................................................................ 56653 ........................................................................ 56654 ........................................................................ 56655 ........................................................................ 56656 ........................................................................ 56657 ........................................................................ 56658 ........................................................................ 56659 ........................................................................ 56660 ........................................................................ 56661 ........................................................................ 56662 ........................................................................ 56663 ........................................................................ 56664 ........................................................................ 56665 ........................................................................ 56666 ........................................................................ 56667 ........................................................................ 56668 ........................................................................ 56669 ........................................................................ 56670 ........................................................................ 56671 ........................................................................ 56672 ........................................................................ 56673 ........................................................................ 56674 ........................................................................ 56675 ........................................................................ 56676 ........................................................................ 56677 ........................................................................ 56678 ........................................................................ 56679 ........................................................................ 56680 ........................................................................ 56681 ........................................................................ 56682 ........................................................................ 56683 ........................................................................ 56684 ........................................................................ 56685 ........................................................................ 56686 ........................................................................ 56687 ........................................................................ 56688 ........................................................................ 56689 ........................................................................ 56690 ........................................................................ 56691 ........................................................................ 56692 ........................................................................ 56693 ........................................................................ 56694 ........................................................................ 56695 ........................................................................ 56696 ........................................................................ 56697 ........................................................................ 56698 ........................................................................ 56699 ........................................................................ 56700 ........................................................................ 56701 ........................................................................ 56702 ........................................................................ 56703 ........................................................................ 56704 ........................................................................ 56705 ........................................................................ 56706 ........................................................................ 56707 ........................................................................ 56708 ........................................................................ 56709 ........................................................................ 56710 ........................................................................ 56711 ........................................................................ 56712 ........................................................................ 56713 ........................................................................ 56714 ........................................................................ 56715 ........................................................................ 56716 ........................................................................ 56717 ........................................................................ 56718 ........................................................................ 56719 ........................................................................ 56720 ........................................................................ 56721 ........................................................................ 56722 ........................................................................ 56723 ........................................................................ 56724 ........................................................................ 56725 ........................................................................ 56726 ........................................................................ 56727 ........................................................................ 56728 ........................................................................ 56729 ........................................................................ 56730 ........................................................................ 56731 ........................................................................ 56732 ........................................................................ 56733 ........................................................................ 56734 ........................................................................ 56735 ........................................................................ 56736 ........................................................................ 56737 ........................................................................ 56738 ........................................................................ 56739 ........................................................................ 56740 ........................................................................ 56741 ........................................................................ 56742 ........................................................................ 56743 ........................................................................ 56744 ........................................................................ 56745 ........................................................................ 56746 ........................................................................ 56747 ........................................................................ 56748 ........................................................................ 56749 ........................................................................ 56750 ........................................................................ 56751 ........................................................................ 56752 ........................................................................ 56753 ........................................................................ 56754 ........................................................................ 56755 ........................................................................ 56756 ........................................................................ 56757 ........................................................................ 56758 ........................................................................ 56759 ........................................................................ 56760 ........................................................................ 56761 ........................................................................ 56762 ........................................................................ 56763 ........................................................................ 56764 ........................................................................ 56765 ........................................................................ 56766 ........................................................................ 56767 ........................................................................ 56768 ........................................................................ 56769 ........................................................................ 56770 ........................................................................ 56771 ........................................................................ 56772 ........................................................................ 56773 ........................................................................ 56774 ........................................................................ 56775 ........................................................................ 56776 ........................................................................ 56777 ........................................................................ 56778 ........................................................................ 56779 ........................................................................ 56780 ........................................................................ 56781 ........................................................................ 56782 ........................................................................ 56783 ........................................................................ 56784 ........................................................................ 56785 ........................................................................ 56786 ........................................................................ 56787 ........................................................................ 56788 ........................................................................ 56789 ........................................................................ 56790 ........................................................................ 56791 ........................................................................ 56792 ........................................................................ 56793 ........................................................................ 56794 ........................................................................ 56795 ........................................................................ 56796 ........................................................................ 56797 ........................................................................ 56798 ........................................................................ 56799 ........................................................................ 56800 ........................................................................ 56801 ........................................................................ 56802 ........................................................................ 56803 ........................................................................ 56804 ........................................................................ 56805 ........................................................................ 56806 ........................................................................ 56807 ........................................................................ 56808 ........................................................................ 56809 ........................................................................ 56810 ........................................................................ 56811 ........................................................................ 56812 ........................................................................ 56813 ........................................................................ 56814 ........................................................................ 56815 ........................................................................ 56816 ........................................................................ 56817 ........................................................................ 56818 ........................................................................ 56819 ........................................................................ 56820 ........................................................................ 56821 ........................................................................ 56822 ........................................................................ 56823 ........................................................................ 56824 ........................................................................ 56825 ........................................................................ 56826 ........................................................................ 56827 ........................................................................ 56828 ........................................................................ 56829 ........................................................................ 56830 ........................................................................ 56831 ........................................................................ 56832 ........................................................................ 56833 ........................................................................ 56834 ........................................................................ 56835 ........................................................................ 56836 ........................................................................ 56837 ........................................................................ 56838 ........................................................................ 56839 ........................................................................ 56840 ........................................................................ 56841 ........................................................................ 56842 ........................................................................ 56843 ........................................................................ 56844 ........................................................................ 56845 ........................................................................ 56846 ........................................................................ 56847 ........................................................................ 56848 ........................................................................ 56849 ........................................................................ 56850 ........................................................................ 56851 ........................................................................ 56852 ........................................................................ 56853 ........................................................................ 56854 ........................................................................ 56855 ........................................................................ 56856 ........................................................................ 56857 ........................................................................ 56858 ........................................................................ 56859 ........................................................................ 56860 ........................................................................ 56861 ........................................................................ 56862 ........................................................................ 56863 ........................................................................ 56864 ........................................................................ 56865 ........................................................................ 56866 ........................................................................ 56867 ........................................................................ 56868 ........................................................................ 56869 ........................................................................ 56870 ........................................................................ 56871 ........................................................................ 56872 ........................................................................ 56873 ........................................................................ 56874 ........................................................................ 56875 ........................................................................ 56876 ........................................................................ 56877 ........................................................................ 56878 ........................................................................ 56879 ........................................................................ 56880 ........................................................................ 56881 ........................................................................ 56882 ........................................................................ 56883 ........................................................................ 56884 ........................................................................ 56885 ........................................................................ 56886 ........................................................................ 56887 ........................................................................ 56888 ........................................................................ 56889 ........................................................................ 56890 ........................................................................ 56891 ........................................................................ 56892 ........................................................................ 56893 ........................................................................ 56894 ........................................................................ 56895 ........................................................................ 56896 ........................................................................ 56897 ........................................................................ 56898 ........................................................................ 56899 ........................................................................ 56900 ........................................................................ 56901 ........................................................................ 56902 ........................................................................ 56903 ........................................................................ 56904 ........................................................................ 56905 ........................................................................ 56906 ........................................................................ 56907 ........................................................................ 56908 ........................................................................ 56909 ........................................................................ 56910 ........................................................................ 56911 ........................................................................ 56912 ........................................................................ 56913 ........................................................................ 56914 ........................................................................ 56915 ........................................................................ 56916 ........................................................................ 56917 ........................................................................ 56918 ........................................................................ 56919 ........................................................................ 56920 ........................................................................ 56921 ........................................................................ 56922 ........................................................................ 56923 ........................................................................ 56924 ........................................................................ 56925 ........................................................................ 56926 ........................................................................ 56927 ........................................................................ 56928 ........................................................................ 56929 ........................................................................ 56930 ........................................................................ 56931 ........................................................................ 56932 ........................................................................ 56933 ........................................................................ 56934 ........................................................................ 56935 ........................................................................ 56936 ........................................................................ 56937 ........................................................................ 56938 ........................................................................ 56939 ........................................................................ 56940 ........................................................................ 56941 ........................................................................ 56942 ........................................................................ 56943 ........................................................................ 56944 ........................................................................ 56945 ........................................................................ 56946 ........................................................................ 56947 ........................................................................ 56948 ........................................................................ 56949 ........................................................................ 56950 ........................................................................ 56951 ........................................................................ 56952 ........................................................................ 56953 ........................................................................ 56954 ........................................................................ 56955 ........................................................................ 56956 ........................................................................ 56957 ........................................................................ 56958 ........................................................................ 56959 ........................................................................ 56960 ........................................................................ 56961 ........................................................................ 56962 ........................................................................ 56963 ........................................................................ 56964 ........................................................................ 56965 ........................................................................ 56966 ........................................................................ 56967 ........................................................................ 56968 ........................................................................ 56969 ........................................................................ 56970 ........................................................................ 56971 ........................................................................ 56972 ........................................................................ 56973 ........................................................................ 56974 ........................................................................ 56975 ........................................................................ 56976 ........................................................................ 56977 ........................................................................ 56978 ........................................................................ 56979 ........................................................................ 56980 ........................................................................ 56981 ........................................................................ 56982 ........................................................................ 56983 ........................................................................ 56984 ........................................................................ 56985 ........................................................................ 56986 ........................................................................ 56987 ........................................................................ 56988 ........................................................................ 56989 ........................................................................ 56990 ........................................................................ 56991 ........................................................................ 56992 ........................................................................ 56993 ........................................................................ 56994 ........................................................................ 56995 ........................................................................ 56996 ........................................................................ 56997 ........................................................................ 56998 ........................................................................ 56999 ........................................................................ 57000 ........................................................................ 57001 ........................................................................ 57002 ........................................................................ 57003 ........................................................................ 57004 ........................................................................ 57005 ........................................................................ 57006 ........................................................................ 57007 ........................................................................ 57008 ........................................................................ 57009 ........................................................................ 57010 ........................................................................ 57011 ........................................................................ 57012 ........................................................................ 57013 ........................................................................ 57014 ........................................................................ 57015 ........................................................................ 57016 ........................................................................ 57017 ........................................................................ 57018 ........................................................................ 57019 ........................................................................ 57020 ........................................................................ 57021 ........................................................................ 57022 ........................................................................ 57023 ........................................................................ 57024 ........................................................................ 57025 ........................................................................ 57026 ........................................................................ 57027 ........................................................................ 57028 ........................................................................ 57029 ........................................................................ 57030 ........................................................................ 57031 ........................................................................ 57032 ........................................................................ 57033 ........................................................................ 57034 ........................................................................ 57035 ........................................................................ 57036 ........................................................................ 57037 ........................................................................ 57038 ........................................................................ 57039 ........................................................................ 57040 ........................................................................ 57041 ........................................................................ 57042 ........................................................................ 57043 ........................................................................ 57044 ........................................................................ 57045 ........................................................................ 57046 ........................................................................ 57047 ........................................................................ 57048 ........................................................................ 57049 ........................................................................ 57050 ........................................................................ 57051 ........................................................................ 57052 ........................................................................ 57053 ........................................................................ 57054 ........................................................................ 57055 ........................................................................ 57056 ........................................................................ 57057 ........................................................................ 57058 ........................................................................ 57059 ........................................................................ 57060 ........................................................................ 57061 ........................................................................ 57062 ........................................................................ 57063 ........................................................................ 57064 ........................................................................ 57065 ........................................................................ 57066 ........................................................................ 57067 ........................................................................ 57068 ........................................................................ 57069 ........................................................................ 57070 ........................................................................ 57071 ........................................................................ 57072 ........................................................................ 57073 ........................................................................ 57074 ........................................................................ 57075 ........................................................................ 57076 ........................................................................ 57077 ........................................................................ 57078 ........................................................................ 57079 ........................................................................ 57080 ........................................................................ 57081 ........................................................................ 57082 ........................................................................ 57083 ........................................................................ 57084 ........................................................................ 57085 ........................................................................ 57086 ........................................................................ 57087 ........................................................................ 57088 ........................................................................ 57089 ........................................................................ 57090 ........................................................................ 57091 ........................................................................ 57092 ........................................................................ 57093 ........................................................................ 57094 ........................................................................ 57095 ........................................................................ 57096 ........................................................................ 57097 ........................................................................ 57098 ........................................................................ 57099 ........................................................................ 57100 ........................................................................ 57101 ........................................................................ 57102 ........................................................................ 57103 ........................................................................ 57104 ........................................................................ 57105 ........................................................................ 57106 ........................................................................ 57107 ........................................................................ 57108 ........................................................................ 57109 ........................................................................ 57110 ........................................................................ 57111 ........................................................................ 57112 ........................................................................ 57113 ........................................................................ 57114 ........................................................................ 57115 ........................................................................ 57116 ........................................................................ 57117 ........................................................................ 57118 ........................................................................ 57119 ........................................................................ 57120 ........................................................................ 57121 ........................................................................ 57122 ........................................................................ 57123 ........................................................................ 57124 ........................................................................ 57125 ........................................................................ 57126 ........................................................................ 57127 ........................................................................ 57128 ........................................................................ 57129 ........................................................................ 57130 ........................................................................ 57131 ........................................................................ 57132 ........................................................................ 57133 ........................................................................ 57134 ........................................................................ 57135 ........................................................................ 57136 ........................................................................ 57137 ........................................................................ 57138 ........................................................................ 57139 ........................................................................ 57140 ........................................................................ 57141 ........................................................................ 57142 ........................................................................ 57143 ........................................................................ 57144 ........................................................................ 57145 ........................................................................ 57146 ........................................................................ 57147 ........................................................................ 57148 ........................................................................ 57149 ........................................................................ 57150 ........................................................................ 57151 ........................................................................ 57152 ........................................................................ 57153 ........................................................................ 57154 ........................................................................ 57155 ........................................................................ 57156 ........................................................................ 57157 ........................................................................ 57158 ........................................................................ 57159 ........................................................................ 57160 ........................................................................ 57161 ........................................................................ 57162 ........................................................................ 57163 ........................................................................ 57164 ........................................................................ 57165 ........................................................................ 57166 ........................................................................ 57167 ........................................................................ 57168 ........................................................................ 57169 ........................................................................ 57170 ........................................................................ 57171 ........................................................................ 57172 ........................................................................ 57173 ........................................................................ 57174 ........................................................................ 57175 ........................................................................ 57176 ........................................................................ 57177 ........................................................................ 57178 ........................................................................ 57179 ........................................................................ 57180 ........................................................................ 57181 ........................................................................ 57182 ........................................................................ 57183 ........................................................................ 57184 ........................................................................ 57185 ........................................................................ 57186 ........................................................................ 57187 ........................................................................ 57188 ........................................................................ 57189 ........................................................................ 57190 ........................................................................ 57191 ........................................................................ 57192 ........................................................................ 57193 ........................................................................ 57194 ........................................................................ 57195 ........................................................................ 57196 ........................................................................ 57197 ........................................................................ 57198 ........................................................................ 57199 ........................................................................ 57200 ........................................................................ 57201 ........................................................................ 57202 ........................................................................ 57203 ........................................................................ 57204 ........................................................................ 57205 ........................................................................ 57206 ........................................................................ 57207 ........................................................................ 57208 ........................................................................ 57209 ........................................................................ 57210 ........................................................................ 57211 ........................................................................ 57212 ........................................................................ 57213 ........................................................................ 57214 ........................................................................ 57215 ........................................................................ 57216 ........................................................................ 57217 ........................................................................ 57218 ........................................................................ 57219 ........................................................................ 57220 ........................................................................ 57221 ........................................................................ 57222 ........................................................................ 57223 ........................................................................ 57224 ........................................................................ 57225 ........................................................................ 57226 ........................................................................ 57227 ........................................................................ 57228 ........................................................................ 57229 ........................................................................ 57230 ........................................................................ 57231 ........................................................................ 57232 ........................................................................ 57233 ........................................................................ 57234 ........................................................................ 57235 ........................................................................ 57236 ........................................................................ 57237 ........................................................................ 57238 ........................................................................ 57239 ........................................................................ 57240 ........................................................................ 57241 ........................................................................ 57242 ........................................................................ 57243 ........................................................................ 57244 ........................................................................ 57245 ........................................................................ 57246 ........................................................................ 57247 ........................................................................ 57248 ........................................................................ 57249 ........................................................................ 57250 ........................................................................ 57251 ........................................................................ 57252 ........................................................................ 57253 ........................................................................ 57254 ........................................................................ 57255 ........................................................................ 57256 ........................................................................ 57257 ........................................................................ 57258 ........................................................................ 57259 ........................................................................ 57260 ........................................................................ 57261 ........................................................................ 57262 ........................................................................ 57263 ........................................................................ 57264 ........................................................................ 57265 ........................................................................ 57266 ........................................................................ 57267 ........................................................................ 57268 ........................................................................ 57269 ........................................................................ 57270 ........................................................................ 57271 ........................................................................ 57272 ........................................................................ 57273 ........................................................................ 57274 ........................................................................ 57275 ........................................................................ 57276 ........................................................................ 57277 ........................................................................ 57278 ........................................................................ 57279 ........................................................................ 57280 ........................................................................ 57281 ........................................................................ 57282 ........................................................................ 57283 ........................................................................ 57284 ........................................................................ 57285 ........................................................................ 57286 ........................................................................ 57287 ........................................................................ 57288 ........................................................................ 57289 ........................................................................ 57290 ........................................................................ 57291 ........................................................................ 57292 ........................................................................ 57293 ........................................................................ 57294 ........................................................................ 57295 ........................................................................ 57296 ........................................................................ 57297 ........................................................................ 57298 ........................................................................ 57299 ........................................................................ 57300 ........................................................................ 57301 ........................................................................ 57302 ........................................................................ 57303 ........................................................................ 57304 ........................................................................ 57305 ........................................................................ 57306 ........................................................................ 57307 ........................................................................ 57308 ........................................................................ 57309 ........................................................................ 57310 ........................................................................ 57311 ........................................................................ 57312 ........................................................................ 57313 ........................................................................ 57314 ........................................................................ 57315 ........................................................................ 57316 ........................................................................ 57317 ........................................................................ 57318 ........................................................................ 57319 ........................................................................ 57320 ........................................................................ 57321 ........................................................................ 57322 ........................................................................ 57323 ........................................................................ 57324 ........................................................................ 57325 ........................................................................ 57326 ........................................................................ 57327 ........................................................................ 57328 ........................................................................ 57329 ........................................................................ 57330 ........................................................................ 57331 ........................................................................ 57332 ........................................................................ 57333 ........................................................................ 57334 ........................................................................ 57335 ........................................................................ 57336 ........................................................................ 57337 ........................................................................ 57338 ........................................................................ 57339 ........................................................................ 57340 ........................................................................ 57341 ........................................................................ 57342 ........................................................................ 57343 ........................................................................ 57344 ........................................................................ 57345 ........................................................................ 57346 ........................................................................ 57347 ........................................................................ 57348 ........................................................................ 57349 ........................................................................ 57350 ........................................................................ 57351 ........................................................................ 57352 ........................................................................ 57353 ........................................................................ 57354 ........................................................................ 57355 ........................................................................ 57356 ........................................................................ 57357 ........................................................................ 57358 ........................................................................ 57359 ........................................................................ 57360 ........................................................................ 57361 ........................................................................ 57362 ........................................................................ 57363 ........................................................................ 57364 ........................................................................ 57365 ........................................................................ 57366 ........................................................................ 57367 ........................................................................ 57368 ........................................................................ 57369 ........................................................................ 57370 ........................................................................ 57371 ........................................................................ 57372 ........................................................................ 57373 ........................................................................ 57374 ........................................................................ 57375 ........................................................................ 57376 ........................................................................ 57377 ........................................................................ 57378 ........................................................................ 57379 ........................................................................ 57380 ........................................................................ 57381 ........................................................................ 57382 ........................................................................ 57383 ........................................................................ 57384 ........................................................................ 57385 ........................................................................ 57386 ........................................................................ 57387 ........................................................................ 57388 ........................................................................ 57389 ........................................................................ 57390 ........................................................................ 57391 ........................................................................ 57392 ........................................................................ 57393 ........................................................................ 57394 ........................................................................ 57395 ........................................................................ 57396 ........................................................................ 57397 ........................................................................ 57398 ........................................................................ 57399 ........................................................................ 57400 ........................................................................ 57401 ........................................................................ 57402 ........................................................................ 57403 ........................................................................ 57404 ........................................................................ 57405 ........................................................................ 57406 ........................................................................ 57407 ........................................................................ 57408 ........................................................................ 57409 ........................................................................ 57410 ........................................................................ 57411 ........................................................................ 57412 ........................................................................ 57413 ........................................................................ 57414 ........................................................................ 57415 ........................................................................ 57416 ........................................................................ 57417 ........................................................................ 57418 ........................................................................ 57419 ........................................................................ 57420 ........................................................................ 57421 ........................................................................ 57422 ........................................................................ 57423 ........................................................................ 57424 ........................................................................ 57425 ........................................................................ 57426 ........................................................................ 57427 ........................................................................ 57428 ........................................................................ 57429 ........................................................................ 57430 ........................................................................ 57431 ........................................................................ 57432 ........................................................................ 57433 ........................................................................ 57434 ........................................................................ 57435 ........................................................................ 57436 ........................................................................ 57437 ........................................................................ 57438 ........................................................................ 57439 ........................................................................ 57440 ........................................................................ 57441 ........................................................................ 57442 ........................................................................ 57443 ........................................................................ 57444 ........................................................................ 57445 ........................................................................ 57446 ........................................................................ 57447 ........................................................................ 57448 ........................................................................ 57449 ........................................................................ 57450 ........................................................................ 57451 ........................................................................ 57452 ........................................................................ 57453 ........................................................................ 57454 ........................................................................ 57455 ........................................................................ 57456 ........................................................................ 57457 ........................................................................ 57458 ........................................................................ 57459 ........................................................................ 57460 ........................................................................ 57461 ........................................................................ 57462 ........................................................................ 57463 ........................................................................ 57464 ........................................................................ 57465 ........................................................................ 57466 ........................................................................ 57467 ........................................................................ 57468 ........................................................................ 57469 ........................................................................ 57470 ........................................................................ 57471 ........................................................................ 57472 ........................................................................ 57473 ........................................................................ 57474 ........................................................................ 57475 ........................................................................ 57476 ........................................................................ 57477 ........................................................................ 57478 ........................................................................ 57479 ........................................................................ 57480 ........................................................................ 57481 ........................................................................ 57482 ........................................................................ 57483 ........................................................................ 57484 ........................................................................ 57485 ........................................................................ 57486 ........................................................................ 57487 ........................................................................ 57488 ........................................................................ 57489 ........................................................................ 57490 ........................................................................ 57491 ........................................................................ 57492 ........................................................................ 57493 ........................................................................ 57494 ........................................................................ 57495 ........................................................................ 57496 ........................................................................ 57497 ........................................................................ 57498 ........................................................................ 57499 ........................................................................ 57500 ........................................................................ 57501 ........................................................................ 57502 ........................................................................ 57503 ........................................................................ 57504 ........................................................................ 57505 ........................................................................ 57506 ........................................................................ 57507 ........................................................................ 57508 ........................................................................ 57509 ........................................................................ 57510 ........................................................................ 57511 ........................................................................ 57512 ........................................................................ 57513 ........................................................................ 57514 ........................................................................ 57515 ........................................................................ 57516 ........................................................................ 57517 ........................................................................ 57518 ........................................................................ 57519 ........................................................................ 57520 ........................................................................ 57521 ........................................................................ 57522 ........................................................................ 57523 ........................................................................ 57524 ........................................................................ 57525 ........................................................................ 57526 ........................................................................ 57527 ........................................................................ 57528 ........................................................................ 57529 ........................................................................ 57530 ........................................................................ 57531 ........................................................................ 57532 ........................................................................ 57533 ........................................................................ 57534 ........................................................................ 57535 ........................................................................ 57536 ........................................................................ 57537 ........................................................................ 57538 ........................................................................ 57539 ........................................................................ 57540 ........................................................................ 57541 ........................................................................ 57542 ........................................................................ 57543 ........................................................................ 57544 ........................................................................ 57545 ........................................................................ 57546 ........................................................................ 57547 ........................................................................ 57548 ........................................................................ 57549 ........................................................................ 57550 ........................................................................ 57551 ........................................................................ 57552 ........................................................................ 57553 ........................................................................ 57554 ........................................................................ 57555 ........................................................................ 57556 ........................................................................ 57557 ........................................................................ 57558 ........................................................................ 57559 ........................................................................ 57560 ........................................................................ 57561 ........................................................................ 57562 ........................................................................ 57563 ........................................................................ 57564 ........................................................................ 57565 ........................................................................ 57566 ........................................................................ 57567 ........................................................................ 57568 ........................................................................ 57569 ........................................................................ 57570 ........................................................................ 57571 ........................................................................ 57572 ........................................................................ 57573 ........................................................................ 57574 ........................................................................ 57575 ........................................................................ 57576 ........................................................................ 57577 ........................................................................ 57578 ........................................................................ 57579 ........................................................................ 57580 ........................................................................ 57581 ........................................................................ 57582 ........................................................................ 57583 ........................................................................ 57584 ........................................................................ 57585 ........................................................................ 57586 ........................................................................ 57587 ........................................................................ 57588 ........................................................................ 57589 ........................................................................ 57590 ........................................................................ 57591 ........................................................................ 57592 ........................................................................ 57593 ........................................................................ 57594 ........................................................................ 57595 ........................................................................ 57596 ........................................................................ 57597 ........................................................................ 57598 ........................................................................ 57599 ........................................................................ 57600 ........................................................................ 57601 ........................................................................ 57602 ........................................................................ 57603 ........................................................................ 57604 ........................................................................ 57605 ........................................................................ 57606 ........................................................................ 57607 ........................................................................ 57608 ........................................................................ 57609 ........................................................................ 57610 ........................................................................ 57611 ........................................................................ 57612 ........................................................................ 57613 ........................................................................ 57614 ........................................................................ 57615 ........................................................................ 57616 ........................................................................ 57617 ........................................................................ 57618 ........................................................................ 57619 ........................................................................ 57620 ........................................................................ 57621 ........................................................................ 57622 ........................................................................ 57623 ........................................................................ 57624 ........................................................................ 57625 ........................................................................ 57626 ........................................................................ 57627 ........................................................................ 57628 ........................................................................ 57629 ........................................................................ 57630 ........................................................................ 57631 ........................................................................ 57632 ........................................................................ 57633 ........................................................................ 57634 ........................................................................ 57635 ........................................................................ 57636 ........................................................................ 57637 ........................................................................ 57638 ........................................................................ 57639 ........................................................................ 57640 ........................................................................ 57641 ........................................................................ 57642 ........................................................................ 57643 ........................................................................ 57644 ........................................................................ 57645 ........................................................................ 57646 ........................................................................ 57647 ........................................................................ 57648 ........................................................................ 57649 ........................................................................ 57650 ........................................................................ 57651 ........................................................................ 57652 ........................................................................ 57653 ........................................................................ 57654 ........................................................................ 57655 ........................................................................ 57656 ........................................................................ 57657 ........................................................................ 57658 ........................................................................ 57659 ........................................................................ 57660 ........................................................................ 57661 ........................................................................ 57662 ........................................................................ 57663 ........................................................................ 57664 ........................................................................ 57665 ........................................................................ 57666 ........................................................................ 57667 ........................................................................ 57668 ........................................................................ 57669 ........................................................................ 57670 ........................................................................ 57671 ........................................................................ 57672 ........................................................................ 57673 ........................................................................ 57674 ........................................................................ 57675 ........................................................................ 57676 ........................................................................ 57677 ........................................................................ 57678 ........................................................................ 57679 ........................................................................ 57680 ........................................................................ 57681 ........................................................................ 57682 ........................................................................ 57683 ........................................................................ 57684 ........................................................................ 57685 ........................................................................ 57686 ........................................................................ 57687 ........................................................................ 57688 ........................................................................ 57689 ........................................................................ 57690 ........................................................................ 57691 ........................................................................ 57692 ........................................................................ 57693 ........................................................................ 57694 ........................................................................ 57695 ........................................................................ 57696 ........................................................................ 57697 ........................................................................ 57698 ........................................................................ 57699 ........................................................................ 57700 ........................................................................ 57701 ........................................................................ 57702 ........................................................................ 57703 ........................................................................ 57704 ........................................................................ 57705 ........................................................................ 57706 ........................................................................ 57707 ........................................................................ 57708 ........................................................................ 57709 ........................................................................ 57710 ........................................................................ 57711 ........................................................................ 57712 ........................................................................ 57713 ........................................................................ 57714 ........................................................................ 57715 ........................................................................ 57716 ........................................................................ 57717 ........................................................................ 57718 ........................................................................ 57719 ........................................................................ 57720 ........................................................................ 57721 ........................................................................ 57722 ........................................................................ 57723 ........................................................................ 57724 ........................................................................ 57725 ........................................................................ 57726 ........................................................................ 57727 ........................................................................ 57728 ........................................................................ 57729 ........................................................................ 57730 ........................................................................ 57731 ........................................................................ 57732 ........................................................................ 57733 ........................................................................ 57734 ........................................................................ 57735 ........................................................................ 57736 ........................................................................ 57737 ........................................................................ 57738 ........................................................................ 57739 ........................................................................ 57740 ........................................................................ 57741 ........................................................................ 57742 ........................................................................ 57743 ........................................................................ 57744 ........................................................................ 57745 ........................................................................ 57746 ........................................................................ 57747 ........................................................................ 57748 ........................................................................ 57749 ........................................................................ 57750 ........................................................................ 57751 ........................................................................ 57752 ........................................................................ 57753 ........................................................................ 57754 ........................................................................ 57755 ........................................................................ 57756 ........................................................................ 57757 ........................................................................ 57758 ........................................................................ 57759 ........................................................................ 57760 ........................................................................ 57761 ........................................................................ 57762 ........................................................................ 57763 ........................................................................ 57764 ........................................................................ 57765 ........................................................................ 57766 ........................................................................ 57767 ........................................................................ 57768 ........................................................................ 57769 ........................................................................ 57770 ........................................................................ 57771 ........................................................................ 57772 ........................................................................ 57773 ........................................................................ 57774 ........................................................................ 57775 ........................................................................ 57776 ........................................................................ 57777 ........................................................................ 57778 ........................................................................ 57779 ........................................................................ 57780 ........................................................................ 57781 ........................................................................ 57782 ........................................................................ 57783 ........................................................................ 57784 ........................................................................ 57785 ........................................................................ 57786 ........................................................................ 57787 ........................................................................ 57788 ........................................................................ 57789 ........................................................................ 57790 ........................................................................ 57791 ........................................................................ 57792 ........................................................................ 57793 ........................................................................ 57794 ........................................................................ 57795 ........................................................................ 57796 ........................................................................ 57797 ........................................................................ 57798 ........................................................................ 57799 ........................................................................ 57800 ........................................................................ 57801 ........................................................................ 57802 ........................................................................ 57803 ........................................................................ 57804 ........................................................................ 57805 ........................................................................ 57806 ........................................................................ 57807 ........................................................................ 57808 ........................................................................ 57809 ........................................................................ 57810 ........................................................................ 57811 ........................................................................ 57812 ........................................................................ 57813 ........................................................................ 57814 ........................................................................ 57815 ........................................................................ 57816 ........................................................................ 57817 ........................................................................ 57818 ........................................................................ 57819 ........................................................................ 57820 ........................................................................ 57821 ........................................................................ 57822 ........................................................................ 57823 ........................................................................ 57824 ........................................................................ 57825 ........................................................................ 57826 ........................................................................ 57827 ........................................................................ 57828 ........................................................................ 57829 ........................................................................ 57830 ........................................................................ 57831 ........................................................................ 57832 ........................................................................ 57833 ........................................................................ 57834 ........................................................................ 57835 ........................................................................ 57836 ........................................................................ 57837 ........................................................................ 57838 ........................................................................ 57839 ........................................................................ 57840 ........................................................................ 57841 ........................................................................ 57842 ........................................................................ 57843 ........................................................................ 57844 ........................................................................ 57845 ........................................................................ 57846 ........................................................................ 57847 ........................................................................ 57848 ........................................................................ 57849 ........................................................................ 57850 ........................................................................ 57851 ........................................................................ 57852 ........................................................................ 57853 ........................................................................ 57854 ........................................................................ 57855 ........................................................................ 57856 ........................................................................ 57857 ........................................................................ 57858 ........................................................................ 57859 ........................................................................ 57860 ........................................................................ 57861 ........................................................................ 57862 ........................................................................ 57863 ........................................................................ 57864 ........................................................................ 57865 ........................................................................ 57866 ........................................................................ 57867 ........................................................................ 57868 ........................................................................ 57869 ........................................................................ 57870 ........................................................................ 57871 ........................................................................ 57872 ........................................................................ 57873 ........................................................................ 57874 ........................................................................ 57875 ........................................................................ 57876 ........................................................................ 57877 ........................................................................ 57878 ........................................................................ 57879 ........................................................................ 57880 ........................................................................ 57881 ........................................................................ 57882 ........................................................................ 57883 ........................................................................ 57884 ........................................................................ 57885 ........................................................................ 57886 ........................................................................ 57887 ........................................................................ 57888 ........................................................................ 57889 ........................................................................ 57890 ........................................................................ 57891 ........................................................................ 57892 ........................................................................ 57893 ........................................................................ 57894 ........................................................................ 57895 ........................................................................ 57896 ........................................................................ 57897 ........................................................................ 57898 ........................................................................ 57899 ........................................................................ 57900 ........................................................................ 57901 ........................................................................ 57902 ........................................................................ 57903 ........................................................................ 57904 ........................................................................ 57905 ........................................................................ 57906 ........................................................................ 57907 ........................................................................ 57908 ........................................................................ 57909 ........................................................................ 57910 ........................................................................ 57911 ........................................................................ 57912 ........................................................................ 57913 ........................................................................ 57914 ........................................................................ 57915 ........................................................................ 57916 ........................................................................ 57917 ........................................................................ 57918 ........................................................................ 57919 ........................................................................ 57920 ........................................................................ 57921 ........................................................................ 57922 ........................................................................ 57923 ........................................................................ 57924 ........................................................................ 57925 ........................................................................ 57926 ........................................................................ 57927 ........................................................................ 57928 ........................................................................ 57929 ........................................................................ 57930 ........................................................................ 57931 ........................................................................ 57932 ........................................................................ 57933 ........................................................................ 57934 ........................................................................ 57935 ........................................................................ 57936 ........................................................................ 57937 ........................................................................ 57938 ........................................................................ 57939 ........................................................................ 57940 ........................................................................ 57941 ........................................................................ 57942 ........................................................................ 57943 ........................................................................ 57944 ........................................................................ 57945 ........................................................................ 57946 ........................................................................ 57947 ........................................................................ 57948 ........................................................................ 57949 ........................................................................ 57950 ........................................................................ 57951 ........................................................................ 57952 ........................................................................ 57953 ........................................................................ 57954 ........................................................................ 57955 ........................................................................ 57956 ........................................................................ 57957 ........................................................................ 57958 ........................................................................ 57959 ........................................................................ 57960 ........................................................................ 57961 ........................................................................ 57962 ........................................................................ 57963 ........................................................................ 57964 ........................................................................ 57965 ........................................................................ 57966 ........................................................................ 57967 ........................................................................ 57968 ........................................................................ 57969 ........................................................................ 57970 ........................................................................ 57971 ........................................................................ 57972 ........................................................................ 57973 ........................................................................ 57974 ........................................................................ 57975 ........................................................................ 57976 ........................................................................ 57977 ........................................................................ 57978 ........................................................................ 57979 ........................................................................ 57980 ........................................................................ 57981 ........................................................................ 57982 ........................................................................ 57983 ........................................................................ 57984 ........................................................................ 57985 ........................................................................ 57986 ........................................................................ 57987 ........................................................................ 57988 ........................................................................ 57989 ........................................................................ 57990 ........................................................................ 57991 ........................................................................ 57992 ........................................................................ 57993 ........................................................................ 57994 ........................................................................ 57995 ........................................................................ 57996 ........................................................................ 57997 ........................................................................ 57998 ........................................................................ 57999 ........................................................................ 58000 ........................................................................ 58001 ........................................................................ 58002 ........................................................................ 58003 ........................................................................ 58004 ........................................................................ 58005 ........................................................................ 58006 ........................................................................ 58007 ........................................................................ 58008 ........................................................................ 58009 ........................................................................ 58010 ........................................................................ 58011 ........................................................................ 58012 ........................................................................ 58013 ........................................................................ 58014 ........................................................................ 58015 ........................................................................ 58016 ........................................................................ 58017 ........................................................................ 58018 ........................................................................ 58019 ........................................................................ 58020 ........................................................................ 58021 ........................................................................ 58022 ........................................................................ 58023 ........................................................................ 58024 ........................................................................ 58025 ........................................................................ 58026 ........................................................................ 58027 ........................................................................ 58028 ........................................................................ 58029 ........................................................................ 58030 ........................................................................ 58031 ........................................................................ 58032 ........................................................................ 58033 ........................................................................ 58034 ........................................................................ 58035 ........................................................................ 58036 ........................................................................ 58037 ........................................................................ 58038 ........................................................................ 58039 ........................................................................ 58040 ........................................................................ 58041 ........................................................................ 58042 ........................................................................ 58043 ........................................................................ 58044 ........................................................................ 58045 ........................................................................ 58046 ........................................................................ 58047 ........................................................................ 58048 ........................................................................ 58049 ........................................................................ 58050 ........................................................................ 58051 ........................................................................ 58052 ........................................................................ 58053 ........................................................................ 58054 ........................................................................ 58055 ........................................................................ 58056 ........................................................................ 58057 ........................................................................ 58058 ........................................................................ 58059 ........................................................................ 58060 ........................................................................ 58061 ........................................................................ 58062 ........................................................................ 58063 ........................................................................ 58064 ........................................................................ 58065 ........................................................................ 58066 ........................................................................ 58067 ........................................................................ 58068 ........................................................................ 58069 ........................................................................ 58070 ........................................................................ 58071 ........................................................................ 58072 ........................................................................ 58073 ........................................................................ 58074 ........................................................................ 58075 ........................................................................ 58076 ........................................................................ 58077 ........................................................................ 58078 ........................................................................ 58079 ........................................................................ 58080 ........................................................................ 58081 ........................................................................ 58082 ........................................................................ 58083 ........................................................................ 58084 ........................................................................ 58085 ........................................................................ 58086 ........................................................................ 58087 ........................................................................ 58088 ........................................................................ 58089 ........................................................................ 58090 ........................................................................ 58091 ........................................................................ 58092 ........................................................................ 58093 ........................................................................ 58094 ........................................................................ 58095 ........................................................................ 58096 ........................................................................ 58097 ........................................................................ 58098 ........................................................................ 58099 ........................................................................ 58100 ........................................................................ 58101 ........................................................................ 58102 ........................................................................ 58103 ........................................................................ 58104 ........................................................................ 58105 ........................................................................ 58106 ........................................................................ 58107 ........................................................................ 58108 ........................................................................ 58109 ........................................................................ 58110 ........................................................................ 58111 ........................................................................ 58112 ........................................................................ 58113 ........................................................................ 58114 ........................................................................ 58115 ........................................................................ 58116 ........................................................................ 58117 ........................................................................ 58118 ........................................................................ 58119 ........................................................................ 58120 ........................................................................ 58121 ........................................................................ 58122 ........................................................................ 58123 ........................................................................ 58124 ........................................................................ 58125 ........................................................................ 58126 ........................................................................ 58127 ........................................................................ 58128 ........................................................................ 58129 ........................................................................ 58130 ........................................................................ 58131 ........................................................................ 58132 ........................................................................ 58133 ........................................................................ 58134 ........................................................................ 58135 ........................................................................ 58136 ........................................................................ 58137 ........................................................................ 58138 ........................................................................ 58139 ........................................................................ 58140 ........................................................................ 58141 ........................................................................ 58142 ........................................................................ 58143 ........................................................................ 58144 ........................................................................ 58145 ........................................................................ 58146 ........................................................................ 58147 ........................................................................ 58148 ........................................................................ 58149 ........................................................................ 58150 ........................................................................ 58151 ........................................................................ 58152 ........................................................................ 58153 ........................................................................ 58154 ........................................................................ 58155 ........................................................................ 58156 ........................................................................ 58157 ........................................................................ 58158 ........................................................................ 58159 ........................................................................ 58160 ........................................................................ 58161 ........................................................................ 58162 ........................................................................ 58163 ........................................................................ 58164 ........................................................................ 58165 ........................................................................ 58166 ........................................................................ 58167 ........................................................................ 58168 ........................................................................ 58169 ........................................................................ 58170 ........................................................................ 58171 ........................................................................ 58172 ........................................................................ 58173 ........................................................................ 58174 ........................................................................ 58175 ........................................................................ 58176 ........................................................................ 58177 ........................................................................ 58178 ........................................................................ 58179 ........................................................................ 58180 ........................................................................ 58181 ........................................................................ 58182 ........................................................................ 58183 ........................................................................ 58184 ........................................................................ 58185 ........................................................................ 58186 ........................................................................ 58187 ........................................................................ 58188 ........................................................................ 58189 ........................................................................ 58190 ........................................................................ 58191 ........................................................................ 58192 ........................................................................ 58193 ........................................................................ 58194 ........................................................................ 58195 ........................................................................ 58196 ........................................................................ 58197 ........................................................................ 58198 ........................................................................ 58199 ........................................................................ 58200 ........................................................................ 58201 ........................................................................ 58202 ........................................................................ 58203 ........................................................................ 58204 ........................................................................ 58205 ........................................................................ 58206 ........................................................................ 58207 ........................................................................ 58208 ........................................................................ 58209 ........................................................................ 58210 ........................................................................ 58211 ........................................................................ 58212 ........................................................................ 58213 ........................................................................ 58214 ........................................................................ 58215 ........................................................................ 58216 ........................................................................ 58217 ........................................................................ 58218 ........................................................................ 58219 ........................................................................ 58220 ........................................................................ 58221 ........................................................................ 58222 ........................................................................ 58223 ........................................................................ 58224 ........................................................................ 58225 ........................................................................ 58226 ........................................................................ 58227 ........................................................................ 58228 ........................................................................ 58229 ........................................................................ 58230 ........................................................................ 58231 ........................................................................ 58232 ........................................................................ 58233 ........................................................................ 58234 ........................................................................ 58235 ........................................................................ 58236 ........................................................................ 58237 ........................................................................ 58238 ........................................................................ 58239 ........................................................................ 58240 ........................................................................ 58241 ........................................................................ 58242 ........................................................................ 58243 ........................................................................ 58244 ........................................................................ 58245 ........................................................................ 58246 ........................................................................ 58247 ........................................................................ 58248 ........................................................................ 58249 ........................................................................ 58250 ........................................................................ 58251 ........................................................................ 58252 ........................................................................ 58253 ........................................................................ 58254 ........................................................................ 58255 ........................................................................ 58256 ........................................................................ 58257 ........................................................................ 58258 ........................................................................ 58259 ........................................................................ 58260 ........................................................................ 58261 ........................................................................ 58262 ........................................................................ 58263 ........................................................................ 58264 ........................................................................ 58265 ........................................................................ 58266 ........................................................................ 58267 ........................................................................ 58268 ........................................................................ 58269 ........................................................................ 58270 ........................................................................ 58271 ........................................................................ 58272 ........................................................................ 58273 ........................................................................ 58274 ........................................................................ 58275 ........................................................................ 58276 ........................................................................ 58277 ........................................................................ 58278 ........................................................................ 58279 ........................................................................ 58280 ........................................................................ 58281 ........................................................................ 58282 ........................................................................ 58283 ........................................................................ 58284 ........................................................................ 58285 ........................................................................ 58286 ........................................................................ 58287 ........................................................................ 58288 ........................................................................ 58289 ........................................................................ 58290 ........................................................................ 58291 ........................................................................ 58292 ........................................................................ 58293 ........................................................................ 58294 ........................................................................ 58295 ........................................................................ 58296 ........................................................................ 58297 ........................................................................ 58298 ........................................................................ 58299 ........................................................................ 58300 ........................................................................ 58301 ........................................................................ 58302 ........................................................................ 58303 ........................................................................ 58304 ........................................................................ 58305 ........................................................................ 58306 ........................................................................ 58307 ........................................................................ 58308 ........................................................................ 58309 ........................................................................ 58310 ........................................................................ 58311 ........................................................................ 58312 ........................................................................ 58313 ........................................................................ 58314 ........................................................................ 58315 ........................................................................ 58316 ........................................................................ 58317 ........................................................................ 58318 ........................................................................ 58319 ........................................................................ 58320 ........................................................................ 58321 ........................................................................ 58322 ........................................................................ 58323 ........................................................................ 58324 ........................................................................ 58325 ........................................................................ 58326 ........................................................................ 58327 ........................................................................ 58328 ........................................................................ 58329 ........................................................................ 58330 ........................................................................ 58331 ........................................................................ 58332 ........................................................................ 58333 ........................................................................ 58334 ........................................................................ 58335 ........................................................................ 58336 ........................................................................ 58337 ........................................................................ 58338 ........................................................................ 58339 ........................................................................ 58340 ........................................................................ 58341 ........................................................................ 58342 ........................................................................ 58343 ........................................................................ 58344 ........................................................................ 58345 ........................................................................ 58346 ........................................................................ 58347 ........................................................................ 58348 ........................................................................ 58349 ........................................................................ 58350 ........................................................................ 58351 ........................................................................ 58352 ........................................................................ 58353 ........................................................................ 58354 ........................................................................ 58355 ........................................................................ 58356 ........................................................................ 58357 ........................................................................ 58358 ........................................................................ 58359 ........................................................................ 58360 ........................................................................ 58361 ........................................................................ 58362 ........................................................................ 58363 ........................................................................ 58364 ........................................................................ 58365 ........................................................................ 58366 ........................................................................ 58367 ........................................................................ 58368 ........................................................................ 58369 ........................................................................ 58370 ........................................................................ 58371 ........................................................................ 58372 ........................................................................ 58373 ........................................................................ 58374 ........................................................................ 58375 ........................................................................ 58376 ........................................................................ 58377 ........................................................................ 58378 ........................................................................ 58379 ........................................................................ 58380 ........................................................................ 58381 ........................................................................ 58382 ........................................................................ 58383 ........................................................................ 58384 ........................................................................ 58385 ........................................................................ 58386 ........................................................................ 58387 ........................................................................ 58388 ........................................................................ 58389 ........................................................................ 58390 ........................................................................ 58391 ........................................................................ 58392 ........................................................................ 58393 ........................................................................ 58394 ........................................................................ 58395 ........................................................................ 58396 ........................................................................ 58397 ........................................................................ 58398 ........................................................................ 58399 ........................................................................ 58400 ........................................................................ 58401 ........................................................................ 58402 ........................................................................ 58403 ........................................................................ 58404 ........................................................................ 58405 ........................................................................ 58406 ........................................................................ 58407 ........................................................................ 58408 ........................................................................ 58409 ........................................................................ 58410 ........................................................................ 58411 ........................................................................ 58412 ........................................................................ 58413 ........................................................................ 58414 ........................................................................ 58415 ........................................................................ 58416 ........................................................................ 58417 ........................................................................ 58418 ........................................................................ 58419 ........................................................................ 58420 ........................................................................ 58421 ........................................................................ 58422 ........................................................................ 58423 ........................................................................ 58424 ........................................................................ 58425 ........................................................................ 58426 ........................................................................ 58427 ........................................................................ 58428 ........................................................................ 58429 ........................................................................ 58430 ........................................................................ 58431 ........................................................................ 58432 ........................................................................ 58433 ........................................................................ 58434 ........................................................................ 58435 ........................................................................ 58436 ........................................................................ 58437 ........................................................................ 58438 ........................................................................ 58439 ........................................................................ 58440 ........................................................................ 58441 ........................................................................ 58442 ........................................................................ 58443 ........................................................................ 58444 ........................................................................ 58445 ........................................................................ 58446 ........................................................................ 58447 ........................................................................ 58448 ........................................................................ 58449 ........................................................................ 58450 ........................................................................ 58451 ........................................................................ 58452 ........................................................................ 58453 ........................................................................ 58454 ........................................................................ 58455 ........................................................................ 58456 ........................................................................ 58457 ........................................................................ 58458 ........................................................................ 58459 ........................................................................ 58460 ........................................................................ 58461 ........................................................................ 58462 ........................................................................ 58463 ........................................................................ 58464 ........................................................................ 58465 ........................................................................ 58466 ........................................................................ 58467 ........................................................................ 58468 ........................................................................ 58469 ........................................................................ 58470 ........................................................................ 58471 ........................................................................ 58472 ........................................................................ 58473 ........................................................................ 58474 ........................................................................ 58475 ........................................................................ 58476 ........................................................................ 58477 ........................................................................ 58478 ........................................................................ 58479 ........................................................................ 58480 ........................................................................ 58481 ........................................................................ 58482 ........................................................................ 58483 ........................................................................ 58484 ........................................................................ 58485 ........................................................................ 58486 ........................................................................ 58487 ........................................................................ 58488 ........................................................................ 58489 ........................................................................ 58490 ........................................................................ 58491 ........................................................................ 58492 ........................................................................ 58493 ........................................................................ 58494 ........................................................................ 58495 ........................................................................ 58496 ........................................................................ 58497 ........................................................................ 58498 ........................................................................ 58499 ........................................................................ 58500 ........................................................................ 58501 ........................................................................ 58502 ........................................................................ 58503 ........................................................................ 58504 ........................................................................ 58505 ........................................................................ 58506 ........................................................................ 58507 ........................................................................ 58508 ........................................................................ 58509 ........................................................................ 58510 ........................................................................ 58511 ........................................................................ 58512 ........................................................................ 58513 ........................................................................ 58514 ........................................................................ 58515 ........................................................................ 58516 ........................................................................ 58517 ........................................................................ 58518 ........................................................................ 58519 ........................................................................ 58520 ........................................................................ 58521 ........................................................................ 58522 ........................................................................ 58523 ........................................................................ 58524 ........................................................................ 58525 ........................................................................ 58526 ........................................................................ 58527 ........................................................................ 58528 ........................................................................ 58529 ........................................................................ 58530 ........................................................................ 58531 ........................................................................ 58532 ........................................................................ 58533 ........................................................................ 58534 ........................................................................ 58535 ........................................................................ 58536 ........................................................................ 58537 ........................................................................ 58538 ........................................................................ 58539 ........................................................................ 58540 ........................................................................ 58541 ........................................................................ 58542 ........................................................................ 58543 ........................................................................ 58544 ........................................................................ 58545 ........................................................................ 58546 ........................................................................ 58547 ........................................................................ 58548 ........................................................................ 58549 ........................................................................ 58550 ........................................................................ 58551 ........................................................................ 58552 ........................................................................ 58553 ........................................................................ 58554 ........................................................................ 58555 ........................................................................ 58556 ........................................................................ 58557 ........................................................................ 58558 ........................................................................ 58559 ........................................................................ 58560 ........................................................................ 58561 ........................................................................ 58562 ........................................................................ 58563 ........................................................................ 58564 ........................................................................ 58565 ........................................................................ 58566 ........................................................................ 58567 ........................................................................ 58568 ........................................................................ 58569 ........................................................................ 58570 ........................................................................ 58571 ........................................................................ 58572 ........................................................................ 58573 ........................................................................ 58574 ........................................................................ 58575 ........................................................................ 58576 ........................................................................ 58577 ........................................................................ 58578 ........................................................................ 58579 ........................................................................ 58580 ........................................................................ 58581 ........................................................................ 58582 ........................................................................ 58583 ........................................................................ 58584 ........................................................................ 58585 ........................................................................ 58586 ........................................................................ 58587 ........................................................................ 58588 ........................................................................ 58589 ........................................................................ 58590 ........................................................................ 58591 ........................................................................ 58592 ........................................................................ 58593 ........................................................................ 58594 ........................................................................ 58595 ........................................................................ 58596 ........................................................................ 58597 ........................................................................ 58598 ........................................................................ 58599 ........................................................................ 58600 ........................................................................ 58601 ........................................................................ 58602 ........................................................................ 58603 ........................................................................ 58604 ........................................................................ 58605 ........................................................................ 58606 ........................................................................ 58607 ........................................................................ 58608 ........................................................................ 58609 ........................................................................ 58610 ........................................................................ 58611 ........................................................................ 58612 ........................................................................ 58613 ........................................................................ 58614 ........................................................................ 58615 ........................................................................ 58616 ........................................................................ 58617 ........................................................................ 58618 ........................................................................ 58619 ........................................................................ 58620 ........................................................................ 58621 ........................................................................ 58622 ........................................................................ 58623 ........................................................................ 58624 ........................................................................ 58625 ........................................................................ 58626 ........................................................................ 58627 ........................................................................ 58628 ........................................................................ 58629 ........................................................................ 58630 ........................................................................ 58631 ........................................................................ 58632 ........................................................................ 58633 ........................................................................ 58634 ........................................................................ 58635 ........................................................................ 58636 ........................................................................ 58637 ........................................................................ 58638 ........................................................................ 58639 ........................................................................ 58640 ........................................................................ 58641 ........................................................................ 58642 ........................................................................ 58643 ........................................................................ 58644 ........................................................................ 58645 ........................................................................ 58646 ........................................................................ 58647 ........................................................................ 58648 ........................................................................ 58649 ........................................................................ 58650 ........................................................................ 58651 ........................................................................ 58652 ........................................................................ 58653 ........................................................................ 58654 ........................................................................ 58655 ........................................................................ 58656 ........................................................................ 58657 ........................................................................ 58658 ........................................................................ 58659 ........................................................................ 58660 ........................................................................ 58661 ........................................................................ 58662 ........................................................................ 58663 ........................................................................ 58664 ........................................................................ 58665 ........................................................................ 58666 ........................................................................ 58667 ........................................................................ 58668 ........................................................................ 58669 ........................................................................ 58670 ........................................................................ 58671 ........................................................................ 58672 ........................................................................ 58673 ........................................................................ 58674 ........................................................................ 58675 ........................................................................ 58676 ........................................................................ 58677 ........................................................................ 58678 ........................................................................ 58679 ........................................................................ 58680 ........................................................................ 58681 ........................................................................ 58682 ........................................................................ 58683 ........................................................................ 58684 ........................................................................ 58685 ........................................................................ 58686 ........................................................................ 58687 ........................................................................ 58688 ........................................................................ 58689 ........................................................................ 58690 ........................................................................ 58691 ........................................................................ 58692 ........................................................................ 58693 ........................................................................ 58694 ........................................................................ 58695 ........................................................................ 58696 ........................................................................ 58697 ........................................................................ 58698 ........................................................................ 58699 ........................................................................ 58700 ........................................................................ 58701 ........................................................................ 58702 ........................................................................ 58703 ........................................................................ 58704 ........................................................................ 58705 ........................................................................ 58706 ........................................................................ 58707 ........................................................................ 58708 ........................................................................ 58709 ........................................................................ 58710 ........................................................................ 58711 ........................................................................ 58712 ........................................................................ 58713 ........................................................................ 58714 ........................................................................ 58715 ........................................................................ 58716 ........................................................................ 58717 ........................................................................ 58718 ........................................................................ 58719 ........................................................................ 58720 ........................................................................ 58721 ........................................................................ 58722 ........................................................................ 58723 ........................................................................ 58724 ........................................................................ 58725 ........................................................................ 58726 ........................................................................ 58727 ........................................................................ 58728 ........................................................................ 58729 ........................................................................ 58730 ........................................................................ 58731 ........................................................................ 58732 ........................................................................ 58733 ........................................................................ 58734 ........................................................................ 58735 ........................................................................ 58736 ........................................................................ 58737 ........................................................................ 58738 ........................................................................ 58739 ........................................................................ 58740 ........................................................................ 58741 ........................................................................ 58742 ........................................................................ 58743 ........................................................................ 58744 ........................................................................ 58745 ........................................................................ 58746 ........................................................................ 58747 ........................................................................ 58748 ........................................................................ 58749 ........................................................................ 58750 ........................................................................ 58751 ........................................................................ 58752 ........................................................................ 58753 ........................................................................ 58754 ........................................................................ 58755 ........................................................................ 58756 ........................................................................ 58757 ........................................................................ 58758 ........................................................................ 58759 ........................................................................ 58760 ........................................................................ 58761 ........................................................................ 58762 ........................................................................ 58763 ........................................................................ 58764 ........................................................................ 58765 ........................................................................ 58766 ........................................................................ 58767 ........................................................................ 58768 ........................................................................ 58769 ........................................................................ 58770 ........................................................................ 58771 ........................................................................ 58772 ........................................................................ 58773 ........................................................................ 58774 ........................................................................ 58775 ........................................................................ 58776 ........................................................................ 58777 ........................................................................ 58778 ........................................................................ 58779 ........................................................................ 58780 ........................................................................ 58781 ........................................................................ 58782 ........................................................................ 58783 ........................................................................ 58784 ........................................................................ 58785 ........................................................................ 58786 ........................................................................ 58787 ........................................................................ 58788 ........................................................................ 58789 ........................................................................ 58790 ........................................................................ 58791 ........................................................................ 58792 ........................................................................ 58793 ........................................................................ 58794 ........................................................................ 58795 ........................................................................ 58796 ........................................................................ 58797 ........................................................................ 58798 ........................................................................ 58799 ........................................................................ 58800 ........................................................................ 58801 ........................................................................ 58802 ........................................................................ 58803 ........................................................................ 58804 ........................................................................ 58805 ........................................................................ 58806 ........................................................................ 58807 ........................................................................ 58808 ........................................................................ 58809 ........................................................................ 58810 ........................................................................ 58811 ........................................................................ 58812 ........................................................................ 58813 ........................................................................ 58814 ........................................................................ 58815 ........................................................................ 58816 ........................................................................ 58817 ........................................................................ 58818 ........................................................................ 58819 ........................................................................ 58820 ........................................................................ 58821 ........................................................................ 58822 ........................................................................ 58823 ........................................................................ 58824 ........................................................................ 58825 ........................................................................ 58826 ........................................................................ 58827 ........................................................................ 58828 ........................................................................ 58829 ........................................................................ 58830 ........................................................................ 58831 ........................................................................ 58832 ........................................................................ 58833 ........................................................................ 58834 ........................................................................ 58835 ........................................................................ 58836 ........................................................................ 58837 ........................................................................ 58838 ........................................................................ 58839 ........................................................................ 58840 ........................................................................ 58841 ........................................................................ 58842 ........................................................................ 58843 ........................................................................ 58844 ........................................................................ 58845 ........................................................................ 58846 ........................................................................ 58847 ........................................................................ 58848 ........................................................................ 58849 ........................................................................ 58850 ........................................................................ 58851 ........................................................................ 58852 ........................................................................ 58853 ........................................................................ 58854 ........................................................................ 58855 ........................................................................ 58856 ........................................................................ 58857 ........................................................................ 58858 ........................................................................ 58859 ........................................................................ 58860 ........................................................................ 58861 ........................................................................ 58862 ........................................................................ 58863 ........................................................................ 58864 ........................................................................ 58865 ........................................................................ 58866 ........................................................................ 58867 ........................................................................ 58868 ........................................................................ 58869 ........................................................................ 58870 ........................................................................ 58871 ........................................................................ 58872 ........................................................................ 58873 ........................................................................ 58874 ........................................................................ 58875 ........................................................................ 58876 ........................................................................ 58877 ........................................................................ 58878 ........................................................................ 58879 ........................................................................ 58880 ........................................................................ 58881 ........................................................................ 58882 ........................................................................ 58883 ........................................................................ 58884 ........................................................................ 58885 ........................................................................ 58886 ........................................................................ 58887 ........................................................................ 58888 ........................................................................ 58889 ........................................................................ 58890 ........................................................................ 58891 ........................................................................ 58892 ........................................................................ 58893 ........................................................................ 58894 ........................................................................ 58895 ........................................................................ 58896 ........................................................................ 58897 ........................................................................ 58898 ........................................................................ 58899 ........................................................................ 58900 ........................................................................ 58901 ........................................................................ 58902 ........................................................................ 58903 ........................................................................ 58904 ........................................................................ 58905 ........................................................................ 58906 ........................................................................ 58907 ........................................................................ 58908 ........................................................................ 58909 ........................................................................ 58910 ........................................................................ 58911 ........................................................................ 58912 ........................................................................ 58913 ........................................................................ 58914 ........................................................................ 58915 ........................................................................ 58916 ........................................................................ 58917 ........................................................................ 58918 ........................................................................ 58919 ........................................................................ 58920 ........................................................................ 58921 ........................................................................ 58922 ........................................................................ 58923 ........................................................................ 58924 ........................................................................ 58925 ........................................................................ 58926 ........................................................................ 58927 ........................................................................ 58928 ........................................................................ 58929 ........................................................................ 58930 ........................................................................ 58931 ........................................................................ 58932 ........................................................................ 58933 ........................................................................ 58934 ........................................................................ 58935 ........................................................................ 58936 ........................................................................ 58937 ........................................................................ 58938 ........................................................................ 58939 ........................................................................ 58940 ........................................................................ 58941 ........................................................................ 58942 ........................................................................ 58943 ........................................................................ 58944 ........................................................................ 58945 ........................................................................ 58946 ........................................................................ 58947 ........................................................................ 58948 ........................................................................ 58949 ........................................................................ 58950 ........................................................................ 58951 ........................................................................ 58952 ........................................................................ 58953 ........................................................................ 58954 ........................................................................ 58955 ........................................................................ 58956 ........................................................................ 58957 ........................................................................ 58958 ........................................................................ 58959 ........................................................................ 58960 ........................................................................ 58961 ........................................................................ 58962 ........................................................................ 58963 ........................................................................ 58964 ........................................................................ 58965 ........................................................................ 58966 ........................................................................ 58967 ........................................................................ 58968 ........................................................................ 58969 ........................................................................ 58970 ........................................................................ 58971 ........................................................................ 58972 ........................................................................ 58973 ........................................................................ 58974 ........................................................................ 58975 ........................................................................ 58976 ........................................................................ 58977 ........................................................................ 58978 ........................................................................ 58979 ........................................................................ 58980 ........................................................................ 58981 ........................................................................ 58982 ........................................................................ 58983 ........................................................................ 58984 ........................................................................ 58985 ........................................................................ 58986 ........................................................................ 58987 ........................................................................ 58988 ........................................................................ 58989 ........................................................................ 58990 ........................................................................ 58991 ........................................................................ 58992 ........................................................................ 58993 ........................................................................ 58994 ........................................................................ 58995 ........................................................................ 58996 ........................................................................ 58997 ........................................................................ 58998 ........................................................................ 58999 ........................................................................ 59000 ........................................................................ 59001 ........................................................................ 59002 ........................................................................ 59003 ........................................................................ 59004 ........................................................................ 59005 ........................................................................ 59006 ........................................................................ 59007 ........................................................................ 59008 ........................................................................ 59009 ........................................................................ 59010 ........................................................................ 59011 ........................................................................ 59012 ........................................................................ 59013 ........................................................................ 59014 ........................................................................ 59015 ........................................................................ 59016 ........................................................................ 59017 ........................................................................ 59018 ........................................................................ 59019 ........................................................................ 59020 ........................................................................ 59021 ........................................................................ 59022 ........................................................................ 59023 ........................................................................ 59024 ........................................................................ 59025 ........................................................................ 59026 ........................................................................ 59027 ........................................................................ 59028 ........................................................................ 59029 ........................................................................ 59030 ........................................................................ 59031 ........................................................................ 59032 ........................................................................ 59033 ........................................................................ 59034 ........................................................................ 59035 ........................................................................ 59036 ........................................................................ 59037 ........................................................................ 59038 ........................................................................ 59039 ........................................................................ 59040 ........................................................................ 59041 ........................................................................ 59042 ........................................................................ 59043 ........................................................................ 59044 ........................................................................ 59045 ........................................................................ 59046 ........................................................................ 59047 ........................................................................ 59048 ........................................................................ 59049 ........................................................................ 59050 ........................................................................ 59051 ........................................................................ 59052 ........................................................................ 59053 ........................................................................ 59054 ........................................................................ 59055 ........................................................................ 59056 ........................................................................ 59057 ........................................................................ 59058 ........................................................................ 59059 ........................................................................ 59060 ........................................................................ 59061 ........................................................................ 59062 ........................................................................ 59063 ........................................................................ 59064 ........................................................................ 59065 ........................................................................ 59066 ........................................................................ 59067 ........................................................................ 59068 ........................................................................ 59069 ........................................................................ 59070 ........................................................................ 59071 ........................................................................ 59072 ........................................................................ 59073 ........................................................................ 59074 ........................................................................ 59075 ........................................................................ 59076 ........................................................................ 59077 ........................................................................ 59078 ........................................................................ 59079 ........................................................................ 59080 ........................................................................ 59081 ........................................................................ 59082 ........................................................................ 59083 ........................................................................ 59084 ........................................................................ 59085 ........................................................................ 59086 ........................................................................ 59087 ........................................................................ 59088 ........................................................................ 59089 ........................................................................ 59090 ........................................................................ 59091 ........................................................................ 59092 ........................................................................ 59093 ........................................................................ 59094 ........................................................................ 59095 ........................................................................ 59096 ........................................................................ 59097 ........................................................................ 59098 ........................................................................ 59099 ........................................................................ 59100 ........................................................................ 59101 ........................................................................ 59102 ........................................................................ 59103 ........................................................................ 59104 ........................................................................ 59105 ........................................................................ 59106 ........................................................................ 59107 ........................................................................ 59108 ........................................................................ 59109 ........................................................................ 59110 ........................................................................ 59111 ........................................................................ 59112 ........................................................................ 59113 ........................................................................ 59114 ........................................................................ 59115 ........................................................................ 59116 ........................................................................ 59117 ........................................................................ 59118 ........................................................................ 59119 ........................................................................ 59120 ........................................................................ 59121 ........................................................................ 59122 ........................................................................ 59123 ........................................................................ 59124 ........................................................................ 59125 ........................................................................ 59126 ........................................................................ 59127 ........................................................................ 59128 ........................................................................ 59129 ........................................................................ 59130 ........................................................................ 59131 ........................................................................ 59132 ........................................................................ 59133 ........................................................................ 59134 ........................................................................ 59135 ........................................................................ 59136 ........................................................................ 59137 ........................................................................ 59138 ........................................................................ 59139 ........................................................................ 59140 ........................................................................ 59141 ........................................................................ 59142 ........................................................................ 59143 ........................................................................ 59144 ........................................................................ 59145 ........................................................................ 59146 ........................................................................ 59147 ........................................................................ 59148 ........................................................................ 59149 ........................................................................ 59150 ........................................................................ 59151 ........................................................................ 59152 ........................................................................ 59153 ........................................................................ 59154 ........................................................................ 59155 ........................................................................ 59156 ........................................................................ 59157 ........................................................................ 59158 ........................................................................ 59159 ........................................................................ 59160 ........................................................................ 59161 ........................................................................ 59162 ........................................................................ 59163 ........................................................................ 59164 ........................................................................ 59165 ........................................................................ 59166 ........................................................................ 59167 ........................................................................ 59168 ........................................................................ 59169 ........................................................................ 59170 ........................................................................ 59171 ........................................................................ 59172 ........................................................................ 59173 ........................................................................ 59174 ........................................................................ 59175 ........................................................................ 59176 ........................................................................ 59177 ........................................................................ 59178 ........................................................................ 59179 ........................................................................ 59180 ........................................................................ 59181 ........................................................................ 59182 ........................................................................ 59183 ........................................................................ 59184 ........................................................................ 59185 ........................................................................ 59186 ........................................................................ 59187 ........................................................................ 59188 ........................................................................ 59189 ........................................................................ 59190 ........................................................................ 59191 ........................................................................ 59192 ........................................................................ 59193 ........................................................................ 59194 ........................................................................ 59195 ........................................................................ 59196 ........................................................................ 59197 ........................................................................ 59198 ........................................................................ 59199 ........................................................................ 59200 ........................................................................ 59201 ........................................................................ 59202 ........................................................................ 59203 ........................................................................ 59204 ........................................................................ 59205 ........................................................................ 59206 ........................................................................ 59207 ........................................................................ 59208 ........................................................................ 59209 ........................................................................ 59210 ........................................................................ 59211 ........................................................................ 59212 ........................................................................ 59213 ........................................................................ 59214 ........................................................................ 59215 ........................................................................ 59216 ........................................................................ 59217 ........................................................................ 59218 ........................................................................ 59219 ........................................................................ 59220 ........................................................................ 59221 ........................................................................ 59222 ........................................................................ 59223 ........................................................................ 59224 ........................................................................ 59225 ........................................................................ 59226 ........................................................................ 59227 ........................................................................ 59228 ........................................................................ 59229 ........................................................................ 59230 ........................................................................ 59231 ........................................................................ 59232 ........................................................................ 59233 ........................................................................ 59234 ........................................................................ 59235 ........................................................................ 59236 ........................................................................ 59237 ........................................................................ 59238 ........................................................................ 59239 ........................................................................ 59240 ........................................................................ 59241 ........................................................................ 59242 ........................................................................ 59243 ........................................................................ 59244 ........................................................................ 59245 ........................................................................ 59246 ........................................................................ 59247 ........................................................................ 59248 ........................................................................ 59249 ........................................................................ 59250 ........................................................................ 59251 ........................................................................ 59252 ........................................................................ 59253 ........................................................................ 59254 ........................................................................ 59255 ........................................................................ 59256 ........................................................................ 59257 ........................................................................ 59258 ........................................................................ 59259 ........................................................................ 59260 ........................................................................ 59261 ........................................................................ 59262 ........................................................................ 59263 ........................................................................ 59264 ........................................................................ 59265 ........................................................................ 59266 ........................................................................ 59267 ........................................................................ 59268 ........................................................................ 59269 ........................................................................ 59270 ........................................................................ 59271 ........................................................................ 59272 ........................................................................ 59273 ........................................................................ 59274 ........................................................................ 59275 ........................................................................ 59276 ........................................................................ 59277 ........................................................................ 59278 ........................................................................ 59279 ........................................................................ 59280 ........................................................................ 59281 ........................................................................ 59282 ........................................................................ 59283 ........................................................................ 59284 ........................................................................ 59285 ........................................................................ 59286 ........................................................................ 59287 ........................................................................ 59288 ........................................................................ 59289 ........................................................................ 59290 ........................................................................ 59291 ........................................................................ 59292 ........................................................................ 59293 ........................................................................ 59294 ........................................................................ 59295 ........................................................................ 59296 ........................................................................ 59297 ........................................................................ 59298 ........................................................................ 59299 ........................................................................ 59300 ........................................................................ 59301 ........................................................................ 59302 ........................................................................ 59303 ........................................................................ 59304 ........................................................................ 59305 ........................................................................ 59306 ........................................................................ 59307 ........................................................................ 59308 ........................................................................ 59309 ........................................................................ 59310 ........................................................................ 59311 ........................................................................ 59312 ........................................................................ 59313 ........................................................................ 59314 ........................................................................ 59315 ........................................................................ 59316 ........................................................................ 59317 ........................................................................ 59318 ........................................................................ 59319 ........................................................................ 59320 ........................................................................ 59321 ........................................................................ 59322 ........................................................................ 59323 ........................................................................ 59324 ........................................................................ 59325 ........................................................................ 59326 ........................................................................ 59327 ........................................................................ 59328 ........................................................................ 59329 ........................................................................ 59330 ........................................................................ 59331 ........................................................................ 59332 ........................................................................ 59333 ........................................................................ 59334 ........................................................................ 59335 ........................................................................ 59336 ........................................................................ 59337 ........................................................................ 59338 ........................................................................ 59339 ........................................................................ 59340 ........................................................................ 59341 ........................................................................ 59342 ........................................................................ 59343 ........................................................................ 59344 ........................................................................ 59345 ........................................................................ 59346 ........................................................................ 59347 ........................................................................ 59348 ........................................................................ 59349 ........................................................................ 59350 ........................................................................ 59351 ........................................................................ 59352 ........................................................................ 59353 ........................................................................ 59354 ........................................................................ 59355 ........................................................................ 59356 ........................................................................ 59357 ........................................................................ 59358 ........................................................................ 59359 ........................................................................ 59360 ........................................................................ 59361 ........................................................................ 59362 ........................................................................ 59363 ........................................................................ 59364 ........................................................................ 59365 ........................................................................ 59366 ........................................................................ 59367 ........................................................................ 59368 ........................................................................ 59369 ........................................................................ 59370 ........................................................................ 59371 ........................................................................ 59372 ........................................................................ 59373 ........................................................................ 59374 ........................................................................ 59375 ........................................................................ 59376 ........................................................................ 59377 ........................................................................ 59378 ........................................................................ 59379 ........................................................................ 59380 ........................................................................ 59381 ........................................................................ 59382 ........................................................................ 59383 ........................................................................ 59384 ........................................................................ 59385 ........................................................................ 59386 ........................................................................ 59387 ........................................................................ 59388 ........................................................................ 59389 ........................................................................ 59390 ........................................................................ 59391 ........................................................................ 59392 ........................................................................ 59393 ........................................................................ 59394 ........................................................................ 59395 ........................................................................ 59396 ........................................................................ 59397 ........................................................................ 59398 ........................................................................ 59399 ........................................................................ 59400 ........................................................................ 59401 ........................................................................ 59402 ........................................................................ 59403 ........................................................................ 59404 ........................................................................ 59405 ........................................................................ 59406 ........................................................................ 59407 ........................................................................ 59408 ........................................................................ 59409 ........................................................................ 59410 ........................................................................ 59411 ........................................................................ 59412 ........................................................................ 59413 ........................................................................ 59414 ........................................................................ 59415 ........................................................................ 59416 ........................................................................ 59417 ........................................................................ 59418 ........................................................................ 59419 ........................................................................ 59420 ........................................................................ 59421 ........................................................................ 59422 ........................................................................ 59423 ........................................................................ 59424 ........................................................................ 59425 ........................................................................ 59426 ........................................................................ 59427 ........................................................................ 59428 ........................................................................ 59429 ........................................................................ 59430 ........................................................................ 59431 ........................................................................ 59432 ........................................................................ 59433 ........................................................................ 59434 ........................................................................ 59435 ........................................................................ 59436 ........................................................................ 59437 ........................................................................ 59438 ........................................................................ 59439 ........................................................................ 59440 ........................................................................ 59441 ........................................................................ 59442 ........................................................................ 59443 ........................................................................ 59444 ........................................................................ 59445 ........................................................................ 59446 ........................................................................ 59447 ........................................................................ 59448 ........................................................................ 59449 ........................................................................ 59450 ........................................................................ 59451 ........................................................................ 59452 ........................................................................ 59453 ........................................................................ 59454 ........................................................................ 59455 ........................................................................ 59456 ........................................................................ 59457 ........................................................................ 59458 ........................................................................ 59459 ........................................................................ 59460 ........................................................................ 59461 ........................................................................ 59462 ........................................................................ 59463 ........................................................................ 59464 ........................................................................ 59465 ........................................................................ 59466 ........................................................................ 59467 ........................................................................ 59468 ........................................................................ 59469 ........................................................................ 59470 ........................................................................ 59471 ........................................................................ 59472 ........................................................................ 59473 ........................................................................ 59474 ........................................................................ 59475 ........................................................................ 59476 ........................................................................ 59477 ........................................................................ 59478 ........................................................................ 59479 ........................................................................ 59480 ........................................................................ 59481 ........................................................................ 59482 ........................................................................ 59483 ........................................................................ 59484 ........................................................................ 59485 ........................................................................ 59486 ........................................................................ 59487 ........................................................................ 59488 ........................................................................ 59489 ........................................................................ 59490 ........................................................................ 59491 ........................................................................ 59492 ........................................................................ 59493 ........................................................................ 59494 ........................................................................ 59495 ........................................................................ 59496 ........................................................................ 59497 ........................................................................ 59498 ........................................................................ 59499 ........................................................................ 59500 ........................................................................ 59501 ........................................................................ 59502 ........................................................................ 59503 ........................................................................ 59504 ........................................................................ 59505 ........................................................................ 59506 ........................................................................ 59507 ........................................................................ 59508 ........................................................................ 59509 ........................................................................ 59510 ........................................................................ 59511 ........................................................................ 59512 ........................................................................ 59513 ........................................................................ 59514 ........................................................................ 59515 ........................................................................ 59516 ........................................................................ 59517 ........................................................................ 59518 ........................................................................ 59519 ........................................................................ 59520 ........................................................................ 59521 ........................................................................ 59522 ........................................................................ 59523 ........................................................................ 59524 ........................................................................ 59525 ........................................................................ 59526 ........................................................................ 59527 ........................................................................ 59528 ........................................................................ 59529 ........................................................................ 59530 ........................................................................ 59531 ........................................................................ 59532 ........................................................................ 59533 ........................................................................ 59534 ........................................................................ 59535 ........................................................................ 59536 ........................................................................ 59537 ........................................................................ 59538 ........................................................................ 59539 ........................................................................ 59540 ........................................................................ 59541 ........................................................................ 59542 ........................................................................ 59543 ........................................................................ 59544 ........................................................................ 59545 ........................................................................ 59546 ........................................................................ 59547 ........................................................................ 59548 ........................................................................ 59549 ........................................................................ 59550 ........................................................................ 59551 ........................................................................ 59552 ........................................................................ 59553 ........................................................................ 59554 ........................................................................ 59555 ........................................................................ 59556 ........................................................................ 59557 ........................................................................ 59558 ........................................................................ 59559 ........................................................................ 59560 ........................................................................ 59561 ........................................................................ 59562 ........................................................................ 59563 ........................................................................ 59564 ........................................................................ 59565 ........................................................................ 59566 ........................................................................ 59567 ........................................................................ 59568 ........................................................................ 59569 ........................................................................ 59570 ........................................................................ 59571 ........................................................................ 59572 ........................................................................ 59573 ........................................................................ 59574 ........................................................................ 59575 ........................................................................ 59576 ........................................................................ 59577 ........................................................................ 59578 ........................................................................ 59579 ........................................................................ 59580 ........................................................................ 59581 ........................................................................ 59582 ........................................................................ 59583 ........................................................................ 59584 ........................................................................ 59585 ........................................................................ 59586 ........................................................................ 59587 ........................................................................ 59588 ........................................................................ 59589 ........................................................................ 59590 ........................................................................ 59591 ........................................................................ 59592 ........................................................................ 59593 ........................................................................ 59594 ........................................................................ 59595 ........................................................................ 59596 ........................................................................ 59597 ........................................................................ 59598 ........................................................................ 59599 ........................................................................ 59600 ........................................................................ 59601 ........................................................................ 59602 ........................................................................ 59603 ........................................................................ 59604 ........................................................................ 59605 ........................................................................ 59606 ........................................................................ 59607 ........................................................................ 59608 ........................................................................ 59609 ........................................................................ 59610 ........................................................................ 59611 ........................................................................ 59612 ........................................................................ 59613 ........................................................................ 59614 ........................................................................ 59615 ........................................................................ 59616 ........................................................................ 59617 ........................................................................ 59618 ........................................................................ 59619 ........................................................................ 59620 ........................................................................ 59621 ........................................................................ 59622 ........................................................................ 59623 ........................................................................ 59624 ........................................................................ 59625 ........................................................................ 59626 ........................................................................ 59627 ........................................................................ 59628 ........................................................................ 59629 ........................................................................ 59630 ........................................................................ 59631 ........................................................................ 59632 ........................................................................ 59633 ........................................................................ 59634 ........................................................................ 59635 ........................................................................ 59636 ........................................................................ 59637 ........................................................................ 59638 ........................................................................ 59639 ........................................................................ 59640 ........................................................................ 59641 ........................................................................ 59642 ........................................................................ 59643 ........................................................................ 59644 ........................................................................ 59645 ........................................................................ 59646 ........................................................................ 59647 ........................................................................ 59648 ........................................................................ 59649 ........................................................................ 59650 ........................................................................ 59651 ........................................................................ 59652 ........................................................................ 59653 ........................................................................ 59654 ........................................................................ 59655 ........................................................................ 59656 ........................................................................ 59657 ........................................................................ 59658 ........................................................................ 59659 ........................................................................ 59660 ........................................................................ 59661 ........................................................................ 59662 ........................................................................ 59663 ........................................................................ 59664 ........................................................................ 59665 ........................................................................ 59666 ........................................................................ 59667 ........................................................................ 59668 ........................................................................ 59669 ........................................................................ 59670 ........................................................................ 59671 ........................................................................ 59672 ........................................................................ 59673 ........................................................................ 59674 ........................................................................ 59675 ........................................................................ 59676 ........................................................................ 59677 ........................................................................ 59678 ........................................................................ 59679 ........................................................................ 59680 ........................................................................ 59681 ........................................................................ 59682 ........................................................................ 59683 ........................................................................ 59684 ........................................................................ 59685 ........................................................................ 59686 ........................................................................ 59687 ........................................................................ 59688 ........................................................................ 59689 ........................................................................ 59690 ........................................................................ 59691 ........................................................................ 59692 ........................................................................ 59693 ........................................................................ 59694 ........................................................................ 59695 ........................................................................ 59696 ........................................................................ 59697 ........................................................................ 59698 ........................................................................ 59699 ........................................................................ 59700 ........................................................................ 59701 ........................................................................ 59702 ........................................................................ 59703 ........................................................................ 59704 ........................................................................ 59705 ........................................................................ 59706 ........................................................................ 59707 ........................................................................ 59708 ........................................................................ 59709 ........................................................................ 59710 ........................................................................ 59711 ........................................................................ 59712 ........................................................................ 59713 ........................................................................ 59714 ........................................................................ 59715 ........................................................................ 59716 ........................................................................ 59717 ........................................................................ 59718 ........................................................................ 59719 ........................................................................ 59720 ........................................................................ 59721 ........................................................................ 59722 ........................................................................ 59723 ........................................................................ 59724 ........................................................................ 59725 ........................................................................ 59726 ........................................................................ 59727 ........................................................................ 59728 ........................................................................ 59729 ........................................................................ 59730 ........................................................................ 59731 ........................................................................ 59732 ........................................................................ 59733 ........................................................................ 59734 ........................................................................ 59735 ........................................................................ 59736 ........................................................................ 59737 ........................................................................ 59738 ........................................................................ 59739 ........................................................................ 59740 ........................................................................ 59741 ........................................................................ 59742 ........................................................................ 59743 ........................................................................ 59744 ........................................................................ 59745 ........................................................................ 59746 ........................................................................ 59747 ........................................................................ 59748 ........................................................................ 59749 ........................................................................ 59750 ........................................................................ 59751 ........................................................................ 59752 ........................................................................ 59753 ........................................................................ 59754 ........................................................................ 59755 ........................................................................ 59756 ........................................................................ 59757 ........................................................................ 59758 ........................................................................ 59759 ........................................................................ 59760 ........................................................................ 59761 ........................................................................ 59762 ........................................................................ 59763 ........................................................................ 59764 ........................................................................ 59765 ........................................................................ 59766 ........................................................................ 59767 ........................................................................ 59768 ........................................................................ 59769 ........................................................................ 59770 ........................................................................ 59771 ........................................................................ 59772 ........................................................................ 59773 ........................................................................ 59774 ........................................................................ 59775 ........................................................................ 59776 ........................................................................ 59777 ........................................................................ 59778 ........................................................................ 59779 ........................................................................ 59780 ........................................................................ 59781 ........................................................................ 59782 ........................................................................ 59783 ........................................................................ 59784 ........................................................................ 59785 ........................................................................ 59786 ........................................................................ 59787 ........................................................................ 59788 ........................................................................ 59789 ........................................................................ 59790 ........................................................................ 59791 ........................................................................ 59792 ........................................................................ 59793 ........................................................................ 59794 ........................................................................ 59795 ........................................................................ 59796 ........................................................................ 59797 ........................................................................ 59798 ........................................................................ 59799 ........................................................................ 59800 ........................................................................ 59801 ........................................................................ 59802 ........................................................................ 59803 ........................................................................ 59804 ........................................................................ 59805 ........................................................................ 59806 ........................................................................ 59807 ........................................................................ 59808 ........................................................................ 59809 ........................................................................ 59810 ........................................................................ 59811 ........................................................................ 59812 ........................................................................ 59813 ........................................................................ 59814 ........................................................................ 59815 ........................................................................ 59816 ........................................................................ 59817 ........................................................................ 59818 ........................................................................ 59819 ........................................................................ 59820 ........................................................................ 59821 ........................................................................ 59822 ........................................................................ 59823 ........................................................................ 59824 ........................................................................ 59825 ........................................................................ 59826 ........................................................................ 59827 ........................................................................ 59828 ........................................................................ 59829 ........................................................................ 59830 ........................................................................ 59831 ........................................................................ 59832 ........................................................................ 59833 ........................................................................ 59834 ........................................................................ 59835 ........................................................................ 59836 ........................................................................ 59837 ........................................................................ 59838 ........................................................................ 59839 ........................................................................ 59840 ........................................................................ 59841 ........................................................................ 59842 ........................................................................ 59843 ........................................................................ 59844 ........................................................................ 59845 ........................................................................ 59846 ........................................................................ 59847 ........................................................................ 59848 ........................................................................ 59849 ........................................................................ 59850 ........................................................................ 59851 ........................................................................ 59852 ........................................................................ 59853 ........................................................................ 59854 ........................................................................ 59855 ........................................................................ 59856 ........................................................................ 59857 ........................................................................ 59858 ........................................................................ 59859 ........................................................................ 59860 ........................................................................ 59861 ........................................................................ 59862 ........................................................................ 59863 ........................................................................ 59864 ........................................................................ 59865 ........................................................................ 59866 ........................................................................ 59867 ........................................................................ 59868 ........................................................................ 59869 ........................................................................ 59870 ........................................................................ 59871 ........................................................................ 59872 ........................................................................ 59873 ........................................................................ 59874 ........................................................................ 59875 ........................................................................ 59876 ........................................................................ 59877 ........................................................................ 59878 ........................................................................ 59879 ........................................................................ 59880 ........................................................................ 59881 ........................................................................ 59882 ........................................................................ 59883 ........................................................................ 59884 ........................................................................ 59885 ........................................................................ 59886 ........................................................................ 59887 ........................................................................ 59888 ........................................................................ 59889 ........................................................................ 59890 ........................................................................ 59891 ........................................................................ 59892 ........................................................................ 59893 ........................................................................ 59894 ........................................................................ 59895 ........................................................................ 59896 ........................................................................ 59897 ........................................................................ 59898 ........................................................................ 59899 ........................................................................ 59900 ........................................................................ 59901 ........................................................................ 59902 ........................................................................ 59903 ........................................................................ 59904 ........................................................................ 59905 ........................................................................ 59906 ........................................................................ 59907 ........................................................................ 59908 ........................................................................ 59909 ........................................................................ 59910 ........................................................................ 59911 ........................................................................ 59912 ........................................................................ 59913 ........................................................................ 59914 ........................................................................ 59915 ........................................................................ 59916 ........................................................................ 59917 ........................................................................ 59918 ........................................................................ 59919 ........................................................................ 59920 ........................................................................ 59921 ........................................................................ 59922 ........................................................................ 59923 ........................................................................ 59924 ........................................................................ 59925 ........................................................................ 59926 ........................................................................ 59927 ........................................................................ 59928 ........................................................................ 59929 ........................................................................ 59930 ........................................................................ 59931 ........................................................................ 59932 ........................................................................ 59933 ........................................................................ 59934 ........................................................................ 59935 ........................................................................ 59936 ........................................................................ 59937 ........................................................................ 59938 ........................................................................ 59939 ........................................................................ 59940 ........................................................................ 59941 ........................................................................ 59942 ........................................................................ 59943 ........................................................................ 59944 ........................................................................ 59945 ........................................................................ 59946 ........................................................................ 59947 ........................................................................ 59948 ........................................................................ 59949 ........................................................................ 59950 ........................................................................ 59951 ........................................................................ 59952 ........................................................................ 59953 ........................................................................ 59954 ........................................................................ 59955 ........................................................................ 59956 ........................................................................ 59957 ........................................................................ 59958 ........................................................................ 59959 ........................................................................ 59960 ........................................................................ 59961 ........................................................................ 59962 ........................................................................ 59963 ........................................................................ 59964 ........................................................................ 59965 ........................................................................ 59966 ........................................................................ 59967 ........................................................................ 59968 ........................................................................ 59969 ........................................................................ 59970 ........................................................................ 59971 ........................................................................ 59972 ........................................................................ 59973 ........................................................................ 59974 ........................................................................ 59975 ........................................................................ 59976 ........................................................................ 59977 ........................................................................ 59978 ........................................................................ 59979 ........................................................................ 59980 ........................................................................ 59981 ........................................................................ 59982 ........................................................................ 59983 ........................................................................ 59984 ........................................................................ 59985 ........................................................................ 59986 ........................................................................ 59987 ........................................................................ 59988 ........................................................................ 59989 ........................................................................ 59990 ........................................................................ 59991 ........................................................................ 59992 ........................................................................ 59993 ........................................................................ 59994 ........................................................................ 59995 ........................................................................ 59996 ........................................................................ 59997 ........................................................................ 59998 ........................................................................ 59999 ........................................................................ 60000 ........................................................................ 60001 ........................................................................ 60002 ........................................................................ 60003 ........................................................................ 60004 ........................................................................ 60005 ........................................................................ 60006 ........................................................................ 60007 ........................................................................ 60008 ........................................................................ 60009 ........................................................................ 60010 ........................................................................ 60011 ........................................................................ 60012 ........................................................................ 60013 ........................................................................ 60014 ........................................................................ 60015 ........................................................................ 60016 ........................................................................ 60017 ........................................................................ 60018 ........................................................................ 60019 ........................................................................ 60020 ........................................................................ 60021 ........................................................................ 60022 ........................................................................ 60023 ........................................................................ 60024 ........................................................................ 60025 ........................................................................ 60026 ........................................................................ 60027 ........................................................................ 60028 ........................................................................ 60029 ........................................................................ 60030 ........................................................................ 60031 ........................................................................ 60032 ........................................................................ 60033 ........................................................................ 60034 ........................................................................ 60035 ........................................................................ 60036 ........................................................................ 60037 ........................................................................ 60038 ........................................................................ 60039 ........................................................................ 60040 ........................................................................ 60041 ........................................................................ 60042 ........................................................................ 60043 ........................................................................ 60044 ........................................................................ 60045 ........................................................................ 60046 ........................................................................ 60047 ........................................................................ 60048 ........................................................................ 60049 ........................................................................ 60050 ........................................................................ 60051 ........................................................................ 60052 ........................................................................ 60053 ........................................................................ 60054 ........................................................................ 60055 ........................................................................ 60056 ........................................................................ 60057 ........................................................................ 60058 ........................................................................ 60059 ........................................................................ 60060 ........................................................................ 60061 ........................................................................ 60062 ........................................................................ 60063 ........................................................................ 60064 ........................................................................ 60065 ........................................................................ 60066 ........................................................................ 60067 ........................................................................ 60068 ........................................................................ 60069 ........................................................................ 60070 ........................................................................ 60071 ........................................................................ 60072 ........................................................................ 60073 ........................................................................ 60074 ........................................................................ 60075 ........................................................................ 60076 ........................................................................ 60077 ........................................................................ 60078 ........................................................................ 60079 ........................................................................ 60080 ........................................................................ 60081 ........................................................................ 60082 ........................................................................ 60083 ........................................................................ 60084 ........................................................................ 60085 ........................................................................ 60086 ........................................................................ 60087 ........................................................................ 60088 ........................................................................ 60089 ........................................................................ 60090 ........................................................................ 60091 ........................................................................ 60092 ........................................................................ 60093 ........................................................................ 60094 ........................................................................ 60095 ........................................................................ 60096 ........................................................................ 60097 ........................................................................ 60098 ........................................................................ 60099 ........................................................................ 60100 ........................................................................ 60101 ........................................................................ 60102 ........................................................................ 60103 ........................................................................ 60104 ........................................................................ 60105 ........................................................................ 60106 ........................................................................ 60107 ........................................................................ 60108 ........................................................................ 60109 ........................................................................ 60110 ........................................................................ 60111 ........................................................................ 60112 ........................................................................ 60113 ........................................................................ 60114 ........................................................................ 60115 ........................................................................ 60116 ........................................................................ 60117 ........................................................................ 60118 ........................................................................ 60119 ........................................................................ 60120 ........................................................................ 60121 ........................................................................ 60122 ........................................................................ 60123 ........................................................................ 60124 ........................................................................ 60125 ........................................................................ 60126 ........................................................................ 60127 ........................................................................ 60128 ........................................................................ 60129 ........................................................................ 60130 ........................................................................ 60131 ........................................................................ 60132 ........................................................................ 60133 ........................................................................ 60134 ........................................................................ 60135 ........................................................................ 60136 ........................................................................ 60137 ........................................................................ 60138 ........................................................................ 60139 ........................................................................ 60140 ........................................................................ 60141 ........................................................................ 60142 ........................................................................ 60143 ........................................................................ 60144 ........................................................................ 60145 ........................................................................ 60146 ........................................................................ 60147 ........................................................................ 60148 ........................................................................ 60149 ........................................................................ 60150 ........................................................................ 60151 ........................................................................ 60152 ........................................................................ 60153 ........................................................................ 60154 ........................................................................ 60155 ........................................................................ 60156 ........................................................................ 60157 ........................................................................ 60158 ........................................................................ 60159 ........................................................................ 60160 ........................................................................ 60161 ........................................................................ 60162 ........................................................................ 60163 ........................................................................ 60164 ........................................................................ 60165 ........................................................................ 60166 ........................................................................ 60167 ........................................................................ 60168 ........................................................................ 60169 ........................................................................ 60170 ........................................................................ 60171 ........................................................................ 60172 ........................................................................ 60173 ........................................................................ 60174 ........................................................................ 60175 ........................................................................ 60176 ........................................................................ 60177 ........................................................................ 60178 ........................................................................ 60179 ........................................................................ 60180 ........................................................................ 60181 ........................................................................ 60182 ........................................................................ 60183 ........................................................................ 60184 ........................................................................ 60185 ........................................................................ 60186 ........................................................................ 60187 ........................................................................ 60188 ........................................................................ 60189 ........................................................................ 60190 ........................................................................ 60191 ........................................................................ 60192 ........................................................................ 60193 ........................................................................ 60194 ........................................................................ 60195 ........................................................................ 60196 ........................................................................ 60197 ........................................................................ 60198 ........................................................................ 60199 ........................................................................ 60200 ........................................................................ 60201 ........................................................................ 60202 ........................................................................ 60203 ........................................................................ 60204 ........................................................................ 60205 ........................................................................ 60206 ........................................................................ 60207 ........................................................................ 60208 ........................................................................ 60209 ........................................................................ 60210 ........................................................................ 60211 ........................................................................ 60212 ........................................................................ 60213 ........................................................................ 60214 ........................................................................ 60215 ........................................................................ 60216 ........................................................................ 60217 ........................................................................ 60218 ........................................................................ 60219 ........................................................................ 60220 ........................................................................ 60221 ........................................................................ 60222 ........................................................................ 60223 ........................................................................ 60224 ........................................................................ 60225 ........................................................................ 60226 ........................................................................ 60227 ........................................................................ 60228 ........................................................................ 60229 ........................................................................ 60230 ........................................................................ 60231 ........................................................................ 60232 ........................................................................ 60233 ........................................................................ 60234 ........................................................................ 60235 ........................................................................ 60236 ........................................................................ 60237 ........................................................................ 60238 ........................................................................ 60239 ........................................................................ 60240 ........................................................................ 60241 ........................................................................ 60242 ........................................................................ 60243 ........................................................................ 60244 ........................................................................ 60245 ........................................................................ 60246 ........................................................................ 60247 ........................................................................ 60248 ........................................................................ 60249 ........................................................................ 60250 ........................................................................ 60251 ........................................................................ 60252 ........................................................................ 60253 ........................................................................ 60254 ........................................................................ 60255 ........................................................................ 60256 ........................................................................ 60257 ........................................................................ 60258 ........................................................................ 60259 ........................................................................ 60260 ........................................................................ 60261 ........................................................................ 60262 ........................................................................ 60263 ........................................................................ 60264 ........................................................................ 60265 ........................................................................ 60266 ........................................................................ 60267 ........................................................................ 60268 ........................................................................ 60269 ........................................................................ 60270 ........................................................................ 60271 ........................................................................ 60272 ........................................................................ 60273 ........................................................................ 60274 ........................................................................ 60275 ........................................................................ 60276 ........................................................................ 60277 ........................................................................ 60278 ........................................................................ 60279 ........................................................................ 60280 ........................................................................ 60281 ........................................................................ 60282 ........................................................................ 60283 ........................................................................ 60284 ........................................................................ 60285 ........................................................................ 60286 ........................................................................ 60287 ........................................................................ 60288 ........................................................................ 60289 ........................................................................ 60290 ........................................................................ 60291 ........................................................................ 60292 ........................................................................ 60293 ........................................................................ 60294 ........................................................................ 60295 ........................................................................ 60296 ........................................................................ 60297 ........................................................................ 60298 ........................................................................ 60299 ........................................................................ 60300 ........................................................................ 60301 ........................................................................ 60302 ........................................................................ 60303 ........................................................................ 60304 ........................................................................ 60305 ........................................................................ 60306 ........................................................................ 60307 ........................................................................ 60308 ........................................................................ 60309 ........................................................................ 60310 ........................................................................ 60311 ........................................................................ 60312 ........................................................................ 60313 ........................................................................ 60314 ........................................................................ 60315 ........................................................................ 60316 ........................................................................ 60317 ........................................................................ 60318 ........................................................................ 60319 ........................................................................ 60320 ........................................................................ 60321 ........................................................................ 60322 ........................................................................ 60323 ........................................................................ 60324 ........................................................................ 60325 ........................................................................ 60326 ........................................................................ 60327 ........................................................................ 60328 ........................................................................ 60329 ........................................................................ 60330 ........................................................................ 60331 ........................................................................ 60332 ........................................................................ 60333 ........................................................................ 60334 ........................................................................ 60335 ........................................................................ 60336 ........................................................................ 60337 ........................................................................ 60338 ........................................................................ 60339 ........................................................................ 60340 ........................................................................ 60341 ........................................................................ 60342 ........................................................................ 60343 ........................................................................ 60344 ........................................................................ 60345 ........................................................................ 60346 ........................................................................ 60347 ........................................................................ 60348 ........................................................................ 60349 ........................................................................ 60350 ........................................................................ 60351 ........................................................................ 60352 ........................................................................ 60353 ........................................................................ 60354 ........................................................................ 60355 ........................................................................ 60356 ........................................................................ 60357 ........................................................................ 60358 ........................................................................ 60359 ........................................................................ 60360 ........................................................................ 60361 ........................................................................ 60362 ........................................................................ 60363 ........................................................................ 60364 ........................................................................ 60365 ........................................................................ 60366 ........................................................................ 60367 ........................................................................ 60368 ........................................................................ 60369 ........................................................................ 60370 ........................................................................ 60371 ........................................................................ 60372 ........................................................................ 60373 ........................................................................ 60374 ........................................................................ 60375 ........................................................................ 60376 ........................................................................ 60377 ........................................................................ 60378 ........................................................................ 60379 ........................................................................ 60380 ........................................................................ 60381 ........................................................................ 60382 ........................................................................ 60383 ........................................................................ 60384 ........................................................................ 60385 ........................................................................ 60386 ........................................................................ 60387 ........................................................................ 60388 ........................................................................ 60389 ........................................................................ 60390 ........................................................................ 60391 ........................................................................ 60392 ........................................................................ 60393 ........................................................................ 60394 ........................................................................ 60395 ........................................................................ 60396 ........................................................................ 60397 ........................................................................ 60398 ........................................................................ 60399 ........................................................................ 60400 ........................................................................ 60401 ........................................................................ 60402 ........................................................................ 60403 ........................................................................ 60404 ........................................................................ 60405 ........................................................................ 60406 ........................................................................ 60407 ........................................................................ 60408 ........................................................................ 60409 ........................................................................ 60410 ........................................................................ 60411 ........................................................................ 60412 ........................................................................ 60413 ........................................................................ 60414 ........................................................................ 60415 ........................................................................ 60416 ........................................................................ 60417 ........................................................................ 60418 ........................................................................ 60419 ........................................................................ 60420 ........................................................................ 60421 ........................................................................ 60422 ........................................................................ 60423 ........................................................................ 60424 ........................................................................ 60425 ........................................................................ 60426 ........................................................................ 60427 ........................................................................ 60428 ........................................................................ 60429 ........................................................................ 60430 ........................................................................ 60431 ........................................................................ 60432 ........................................................................ 60433 ........................................................................ 60434 ........................................................................ 60435 ........................................................................ 60436 ........................................................................ 60437 ........................................................................ 60438 ........................................................................ 60439 ........................................................................ 60440 ........................................................................ 60441 ........................................................................ 60442 ........................................................................ 60443 ........................................................................ 60444 ........................................................................ 60445 ........................................................................ 60446 ........................................................................ 60447 ........................................................................ 60448 ........................................................................ 60449 ........................................................................ 60450 ........................................................................ 60451 ........................................................................ 60452 ........................................................................ 60453 ........................................................................ 60454 ........................................................................ 60455 ........................................................................ 60456 ........................................................................ 60457 ........................................................................ 60458 ........................................................................ 60459 ........................................................................ 60460 ........................................................................ 60461 ........................................................................ 60462 ........................................................................ 60463 ........................................................................ 60464 ........................................................................ 60465 ........................................................................ 60466 ........................................................................ 60467 ........................................................................ 60468 ........................................................................ 60469 ........................................................................ 60470 ........................................................................ 60471 ........................................................................ 60472 ........................................................................ 60473 ........................................................................ 60474 ........................................................................ 60475 ........................................................................ 60476 ........................................................................ 60477 ........................................................................ 60478 ........................................................................ 60479 ........................................................................ 60480 ........................................................................ 60481 ........................................................................ 60482 ........................................................................ 60483 ........................................................................ 60484 ........................................................................ 60485 ........................................................................ 60486 ........................................................................ 60487 ........................................................................ 60488 ........................................................................ 60489 ........................................................................ 60490 ........................................................................ 60491 ........................................................................ 60492 ........................................................................ 60493 ........................................................................ 60494 ........................................................................ 60495 ........................................................................ 60496 ........................................................................ 60497 ........................................................................ 60498 ........................................................................ 60499 ........................................................................ 60500 ........................................................................ 60501 ........................................................................ 60502 ........................................................................ 60503 ........................................................................ 60504 ........................................................................ 60505 ........................................................................ 60506 ........................................................................ 60507 ........................................................................ 60508 ........................................................................ 60509 ........................................................................ 60510 ........................................................................ 60511 ........................................................................ 60512 ........................................................................ 60513 ........................................................................ 60514 ........................................................................ 60515 ........................................................................ 60516 ........................................................................ 60517 ........................................................................ 60518 ........................................................................ 60519 ........................................................................ 60520 ........................................................................ 60521 ........................................................................ 60522 ........................................................................ 60523 ........................................................................ 60524 ........................................................................ 60525 ........................................................................ 60526 ........................................................................ 60527 ........................................................................ 60528 ........................................................................ 60529 ........................................................................ 60530 ........................................................................ 60531 ........................................................................ 60532 ........................................................................ 60533 ........................................................................ 60534 ........................................................................ 60535 ........................................................................ 60536 ........................................................................ 60537 ........................................................................ 60538 ........................................................................ 60539 ........................................................................ 60540 ........................................................................ 60541 ........................................................................ 60542 ........................................................................ 60543 ........................................................................ 60544 ........................................................................ 60545 ........................................................................ 60546 ........................................................................ 60547 ........................................................................ 60548 ........................................................................ 60549 ........................................................................ 60550 ........................................................................ 60551 ........................................................................ 60552 ........................................................................ 60553 ........................................................................ 60554 ........................................................................ 60555 ........................................................................ 60556 ........................................................................ 60557 ........................................................................ 60558 ........................................................................ 60559 ........................................................................ 60560 ........................................................................ 60561 ........................................................................ 60562 ........................................................................ 60563 ........................................................................ 60564 ........................................................................ 60565 ........................................................................ 60566 ........................................................................ 60567 ........................................................................ 60568 ........................................................................ 60569 ........................................................................ 60570 ........................................................................ 60571 ........................................................................ 60572 ........................................................................ 60573 ........................................................................ 60574 ........................................................................ 60575 ........................................................................ 60576 ........................................................................ 60577 ........................................................................ 60578 ........................................................................ 60579 ........................................................................ 60580 ........................................................................ 60581 ........................................................................ 60582 ........................................................................ 60583 ........................................................................ 60584 ........................................................................ 60585 ........................................................................ 60586 ........................................................................ 60587 ........................................................................ 60588 ........................................................................ 60589 ........................................................................ 60590 ........................................................................ 60591 ........................................................................ 60592 ........................................................................ 60593 ........................................................................ 60594 ........................................................................ 60595 ........................................................................ 60596 ........................................................................ 60597 ........................................................................ 60598 ........................................................................ 60599 ........................................................................ 60600 ........................................................................ 60601 ........................................................................ 60602 ........................................................................ 60603 ........................................................................ 60604 ........................................................................ 60605 ........................................................................ 60606 ........................................................................ 60607 ........................................................................ 60608 ........................................................................ 60609 ........................................................................ 60610 ........................................................................ 60611 ........................................................................ 60612 ........................................................................ 60613 ........................................................................ 60614 ........................................................................ 60615 ........................................................................ 60616 ........................................................................ 60617 ........................................................................ 60618 ........................................................................ 60619 ........................................................................ 60620 ........................................................................ 60621 ........................................................................ 60622 ........................................................................ 60623 ........................................................................ 60624 ........................................................................ 60625 ........................................................................ 60626 ........................................................................ 60627 ........................................................................ 60628 ........................................................................ 60629 ........................................................................ 60630 ........................................................................ 60631 ........................................................................ 60632 ........................................................................ 60633 ........................................................................ 60634 ........................................................................ 60635 ........................................................................ 60636 ........................................................................ 60637 ........................................................................ 60638 ........................................................................ 60639 ........................................................................ 60640 ........................................................................ 60641 ........................................................................ 60642 ........................................................................ 60643 ........................................................................ 60644 ........................................................................ 60645 ........................................................................ 60646 ........................................................................ 60647 ........................................................................ 60648 ........................................................................ 60649 ........................................................................ 60650 ........................................................................ 60651 ........................................................................ 60652 ........................................................................ 60653 ........................................................................ 60654 ........................................................................ 60655 ........................................................................ 60656 ........................................................................ 60657 ........................................................................ 60658 ........................................................................ 60659 ........................................................................ 60660 ........................................................................ 60661 ........................................................................ 60662 ........................................................................ 60663 ........................................................................ 60664 ........................................................................ 60665 ........................................................................ 60666 ........................................................................ 60667 ........................................................................ 60668 ........................................................................ 60669 ........................................................................ 60670 ........................................................................ 60671 ........................................................................ 60672 ........................................................................ 60673 ........................................................................ 60674 ........................................................................ 60675 ........................................................................ 60676 ........................................................................ 60677 ........................................................................ 60678 ........................................................................ 60679 ........................................................................ 60680 ........................................................................ 60681 ........................................................................ 60682 ........................................................................ 60683 ........................................................................ 60684 ........................................................................ 60685 ........................................................................ 60686 ........................................................................ 60687 ........................................................................ 60688 ........................................................................ 60689 ........................................................................ 60690 ........................................................................ 60691 ........................................................................ 60692 ........................................................................ 60693 ........................................................................ 60694 ........................................................................ 60695 ........................................................................ 60696 ........................................................................ 60697 ........................................................................ 60698 ........................................................................ 60699 ........................................................................ 60700 ........................................................................ 60701 ........................................................................ 60702 ........................................................................ 60703 ........................................................................ 60704 ........................................................................ 60705 ........................................................................ 60706 ........................................................................ 60707 ........................................................................ 60708 ........................................................................ 60709 ........................................................................ 60710 ........................................................................ 60711 ........................................................................ 60712 ........................................................................ 60713 ........................................................................ 60714 ........................................................................ 60715 ........................................................................ 60716 ........................................................................ 60717 ........................................................................ 60718 ........................................................................ 60719 ........................................................................ 60720 ........................................................................ 60721 ........................................................................ 60722 ........................................................................ 60723 ........................................................................ 60724 ........................................................................ 60725 ........................................................................ 60726 ........................................................................ 60727 ........................................................................ 60728 ........................................................................ 60729 ........................................................................ 60730 ........................................................................ 60731 ........................................................................ 60732 ........................................................................ 60733 ........................................................................ 60734 ........................................................................ 60735 ........................................................................ 60736 ........................................................................ 60737 ........................................................................ 60738 ........................................................................ 60739 ........................................................................ 60740 ........................................................................ 60741 ........................................................................ 60742 ........................................................................ 60743 ........................................................................ 60744 ........................................................................ 60745 ........................................................................ 60746 ........................................................................ 60747 ........................................................................ 60748 ........................................................................ 60749 ........................................................................ 60750 ........................................................................ 60751 ........................................................................ 60752 ........................................................................ 60753 ........................................................................ 60754 ........................................................................ 60755 ........................................................................ 60756 ........................................................................ 60757 ........................................................................ 60758 ........................................................................ 60759 ........................................................................ 60760 ........................................................................ 60761 ........................................................................ 60762 ........................................................................ 60763 ........................................................................ 60764 ........................................................................ 60765 ........................................................................ 60766 ........................................................................ 60767 ........................................................................ 60768 ........................................................................ 60769 ........................................................................ 60770 ........................................................................ 60771 ........................................................................ 60772 ........................................................................ 60773 ........................................................................ 60774 ........................................................................ 60775 ........................................................................ 60776 ........................................................................ 60777 ........................................................................ 60778 ........................................................................ 60779 ........................................................................ 60780 ........................................................................ 60781 ........................................................................ 60782 ........................................................................ 60783 ........................................................................ 60784 ........................................................................ 60785 ........................................................................ 60786 ........................................................................ 60787 ........................................................................ 60788 ........................................................................ 60789 ........................................................................ 60790 ........................................................................ 60791 ........................................................................ 60792 ........................................................................ 60793 ........................................................................ 60794 ........................................................................ 60795 ........................................................................ 60796 ........................................................................ 60797 ........................................................................ 60798 ........................................................................ 60799 ........................................................................ 60800 ........................................................................ 60801 ........................................................................ 60802 ........................................................................ 60803 ........................................................................ 60804 ........................................................................ 60805 ........................................................................ 60806 ........................................................................ 60807 ........................................................................ 60808 ........................................................................ 60809 ........................................................................ 60810 ........................................................................ 60811 ........................................................................ 60812 ........................................................................ 60813 ........................................................................ 60814 ........................................................................ 60815 ........................................................................ 60816 ........................................................................ 60817 ........................................................................ 60818 ........................................................................ 60819 ........................................................................ 60820 ........................................................................ 60821 ........................................................................ 60822 ........................................................................ 60823 ........................................................................ 60824 ........................................................................ 60825 ........................................................................ 60826 ........................................................................ 60827 ........................................................................ 60828 ........................................................................ 60829 ........................................................................ 60830 ........................................................................ 60831 ........................................................................ 60832 ........................................................................ 60833 ........................................................................ 60834 ........................................................................ 60835 ........................................................................ 60836 ........................................................................ 60837 ........................................................................ 60838 ........................................................................ 60839 ........................................................................ 60840 ........................................................................ 60841 ........................................................................ 60842 ........................................................................ 60843 ........................................................................ 60844 ........................................................................ 60845 ........................................................................ 60846 ........................................................................ 60847 ........................................................................ 60848 ........................................................................ 60849 ........................................................................ 60850 ........................................................................ 60851 ........................................................................ 60852 ........................................................................ 60853 ........................................................................ 60854 ........................................................................ 60855 ........................................................................ 60856 ........................................................................ 60857 ........................................................................ 60858 ........................................................................ 60859 ........................................................................ 60860 ........................................................................ 60861 ........................................................................ 60862 ........................................................................ 60863 ........................................................................ 60864 ........................................................................ 60865 ........................................................................ 60866 ........................................................................ 60867 ........................................................................ 60868 ........................................................................ 60869 ........................................................................ 60870 ........................................................................ 60871 ........................................................................ 60872 ........................................................................ 60873 ........................................................................ 60874 ........................................................................ 60875 ........................................................................ 60876 ........................................................................ 60877 ........................................................................ 60878 ........................................................................ 60879 ........................................................................ 60880 ........................................................................ 60881 ........................................................................ 60882 ........................................................................ 60883 ........................................................................ 60884 ........................................................................ 60885 ........................................................................ 60886 ........................................................................ 60887 ........................................................................ 60888 ........................................................................ 60889 ........................................................................ 60890 ........................................................................ 60891 ........................................................................ 60892 ........................................................................ 60893 ........................................................................ 60894 ........................................................................ 60895 ........................................................................ 60896 ........................................................................ 60897 ........................................................................ 60898 ........................................................................ 60899 ........................................................................ 60900 ........................................................................ 60901 ........................................................................ 60902 ........................................................................ 60903 ........................................................................ 60904 ........................................................................ 60905 ........................................................................ 60906 ........................................................................ 60907 ........................................................................ 60908 ........................................................................ 60909 ........................................................................ 60910 ........................................................................ 60911 ........................................................................ 60912 ........................................................................ 60913 ........................................................................ 60914 ........................................................................ 60915 ........................................................................ 60916 ........................................................................ 60917 ........................................................................ 60918 ........................................................................ 60919 ........................................................................ 60920 ........................................................................ 60921 ........................................................................ 60922 ........................................................................ 60923 ........................................................................ 60924 ........................................................................ 60925 ........................................................................ 60926 ........................................................................ 60927 ........................................................................ 60928 ........................................................................ 60929 ........................................................................ 60930 ........................................................................ 60931 ........................................................................ 60932 ........................................................................ 60933 ........................................................................ 60934 ........................................................................ 60935 ........................................................................ 60936 ........................................................................ 60937 ........................................................................ 60938 ........................................................................ 60939 ........................................................................ 60940 ........................................................................ 60941 ........................................................................ 60942 ........................................................................ 60943 ........................................................................ 60944 ........................................................................ 60945 ........................................................................ 60946 ........................................................................ 60947 ........................................................................ 60948 ........................................................................ 60949 ........................................................................ 60950 ........................................................................ 60951 ........................................................................ 60952 ........................................................................ 60953 ........................................................................ 60954 ........................................................................ 60955 ........................................................................ 60956 ........................................................................ 60957 ........................................................................ 60958 ........................................................................ 60959 ........................................................................ 60960 ........................................................................ 60961 ........................................................................ 60962 ........................................................................ 60963 ........................................................................ 60964 ........................................................................ 60965 ........................................................................ 60966 ........................................................................ 60967 ........................................................................ 60968 ........................................................................ 60969 ........................................................................ 60970 ........................................................................ 60971 ........................................................................ 60972 ........................................................................ 60973 ........................................................................ 60974 ........................................................................ 60975 ........................................................................ 60976 ........................................................................ 60977 ........................................................................ 60978 ........................................................................ 60979 ........................................................................ 60980 ........................................................................ 60981 ........................................................................ 60982 ........................................................................ 60983 ........................................................................ 60984 ........................................................................ 60985 ........................................................................ 60986 ........................................................................ 60987 ........................................................................ 60988 ........................................................................ 60989 ........................................................................ 60990 ........................................................................ 60991 ........................................................................ 60992 ........................................................................ 60993 ........................................................................ 60994 ........................................................................ 60995 ........................................................................ 60996 ........................................................................ 60997 ........................................................................ 60998 ........................................................................ 60999 ........................................................................ 61000 ........................................................................ 61001 ........................................................................ 61002 ........................................................................ 61003 ........................................................................ 61004 ........................................................................ 61005 ........................................................................ 61006 ........................................................................ 61007 ........................................................................ 61008 ........................................................................ 61009 ........................................................................ 61010 ........................................................................ 61011 ........................................................................ 61012 ........................................................................ 61013 ........................................................................ 61014 ........................................................................ 61015 ........................................................................ 61016 ........................................................................ 61017 ........................................................................ 61018 ........................................................................ 61019 ........................................................................ 61020 ........................................................................ 61021 ........................................................................ 61022 ........................................................................ 61023 ........................................................................ 61024 ........................................................................ 61025 ........................................................................ 61026 ........................................................................ 61027 ........................................................................ 61028 ........................................................................ 61029 ........................................................................ 61030 ........................................................................ 61031 ........................................................................ 61032 ........................................................................ 61033 ........................................................................ 61034 ........................................................................ 61035 ........................................................................ 61036 ........................................................................ 61037 ........................................................................ 61038 ........................................................................ 61039 ........................................................................ 61040 ........................................................................ 61041 ........................................................................ 61042 ........................................................................ 61043 ........................................................................ 61044 ........................................................................ 61045 ........................................................................ 61046 ........................................................................ 61047 ........................................................................ 61048 ........................................................................ 61049 ........................................................................ 61050 ........................................................................ 61051 ........................................................................ 61052 ........................................................................ 61053 ........................................................................ 61054 ........................................................................ 61055 ........................................................................ 61056 ........................................................................ 61057 ........................................................................ 61058 ........................................................................ 61059 ........................................................................ 61060 ........................................................................ 61061 ........................................................................ 61062 ........................................................................ 61063 ........................................................................ 61064 ........................................................................ 61065 ........................................................................ 61066 ........................................................................ 61067 ........................................................................ 61068 ........................................................................ 61069 ........................................................................ 61070 ........................................................................ 61071 ........................................................................ 61072 ........................................................................ 61073 ........................................................................ 61074 ........................................................................ 61075 ........................................................................ 61076 ........................................................................ 61077 ........................................................................ 61078 ........................................................................ 61079 ........................................................................ 61080 ........................................................................ 61081 ........................................................................ 61082 ........................................................................ 61083 ........................................................................ 61084 ........................................................................ 61085 ........................................................................ 61086 ........................................................................ 61087 ........................................................................ 61088 ........................................................................ 61089 ........................................................................ 61090 ........................................................................ 61091 ........................................................................ 61092 ........................................................................ 61093 ........................................................................ 61094 ........................................................................ 61095 ........................................................................ 61096 ........................................................................ 61097 ........................................................................ 61098 ........................................................................ 61099 ........................................................................ 61100 ........................................................................ 61101 ........................................................................ 61102 ........................................................................ 61103 ........................................................................ 61104 ........................................................................ 61105 ........................................................................ 61106 ........................................................................ 61107 ........................................................................ 61108 ........................................................................ 61109 ........................................................................ 61110 ........................................................................ 61111 ........................................................................ 61112 ........................................................................ 61113 ........................................................................ 61114 ........................................................................ 61115 ........................................................................ 61116 ........................................................................ 61117 ........................................................................ 61118 ........................................................................ 61119 ........................................................................ 61120 ........................................................................ 61121 ........................................................................ 61122 ........................................................................ 61123 ........................................................................ 61124 ........................................................................ 61125 ........................................................................ 61126 ........................................................................ 61127 ........................................................................ 61128 ........................................................................ 61129 ........................................................................ 61130 ........................................................................ 61131 ........................................................................ 61132 ........................................................................ 61133 ........................................................................ 61134 ........................................................................ 61135 ........................................................................ 61136 ........................................................................ 61137 ........................................................................ 61138 ........................................................................ 61139 ........................................................................ 61140 ........................................................................ 61141 ........................................................................ 61142 ........................................................................ 61143 ........................................................................ 61144 ........................................................................ 61145 ........................................................................ 61146 ........................................................................ 61147 ........................................................................ 61148 ........................................................................ 61149 ........................................................................ 61150 ........................................................................ 61151 ........................................................................ 61152 ........................................................................ 61153 ........................................................................ 61154 ........................................................................ 61155 ........................................................................ 61156 ........................................................................ 61157 ........................................................................ 61158 ........................................................................ 61159 ........................................................................ 61160 ........................................................................ 61161 ........................................................................ 61162 ........................................................................ 61163 ........................................................................ 61164 ........................................................................ 61165 ........................................................................ 61166 ........................................................................ 61167 ........................................................................ 61168 ........................................................................ 61169 ........................................................................ 61170 ........................................................................ 61171 ........................................................................ 61172 ........................................................................ 61173 ........................................................................ 61174 ........................................................................ 61175 ........................................................................ 61176 ........................................................................ 61177 ........................................................................ 61178 ........................................................................ 61179 ........................................................................ 61180 ........................................................................ 61181 ........................................................................ 61182 ........................................................................ 61183 ........................................................................ 61184 ........................................................................ 61185 ........................................................................ 61186 ........................................................................ 61187 ........................................................................ 61188 ........................................................................ 61189 ........................................................................ 61190 ........................................................................ 61191 ........................................................................ 61192 ........................................................................ 61193 ........................................................................ 61194 ........................................................................ 61195 ........................................................................ 61196 ........................................................................ 61197 ........................................................................ 61198 ........................................................................ 61199 ........................................................................ 61200 ........................................................................ 61201 ........................................................................ 61202 ........................................................................ 61203 ........................................................................ 61204 ........................................................................ 61205 ........................................................................ 61206 ........................................................................ 61207 ........................................................................ 61208 ........................................................................ 61209 ........................................................................ 61210 ........................................................................ 61211 ........................................................................ 61212 ........................................................................ 61213 ........................................................................ 61214 ........................................................................ 61215 ........................................................................ 61216 ........................................................................ 61217 ........................................................................ 61218 ........................................................................ 61219 ........................................................................ 61220 ........................................................................ 61221 ........................................................................ 61222 ........................................................................ 61223 ........................................................................ 61224 ........................................................................ 61225 ........................................................................ 61226 ........................................................................ 61227 ........................................................................ 61228 ........................................................................ 61229 ........................................................................ 61230 ........................................................................ 61231 ........................................................................ 61232 ........................................................................ 61233 ........................................................................ 61234 ........................................................................ 61235 ........................................................................ 61236 ........................................................................ 61237 ........................................................................ 61238 ........................................................................ 61239 ........................................................................ 61240 ........................................................................ 61241 ........................................................................ 61242 ........................................................................ 61243 ........................................................................ 61244 ........................................................................ 61245 ........................................................................ 61246 ........................................................................ 61247 ........................................................................ 61248 ........................................................................ 61249 ........................................................................ 61250 ........................................................................ 61251 ........................................................................ 61252 ........................................................................ 61253 ........................................................................ 61254 ........................................................................ 61255 ........................................................................ 61256 ........................................................................ 61257 ........................................................................ 61258 ........................................................................ 61259 ........................................................................ 61260 ........................................................................ 61261 ........................................................................ 61262 ........................................................................ 61263 ........................................................................ 61264 ........................................................................ 61265 ........................................................................ 61266 ........................................................................ 61267 ........................................................................ 61268 ........................................................................ 61269 ........................................................................ 61270 ........................................................................ 61271 ........................................................................ 61272 ........................................................................ 61273 ........................................................................ 61274 ........................................................................ 61275 ........................................................................ 61276 ........................................................................ 61277 ........................................................................ 61278 ........................................................................ 61279 ........................................................................ 61280 ........................................................................ 61281 ........................................................................ 61282 ........................................................................ 61283 ........................................................................ 61284 ........................................................................ 61285 ........................................................................ 61286 ........................................................................ 61287 ........................................................................ 61288 ........................................................................ 61289 ........................................................................ 61290 ........................................................................ 61291 ........................................................................ 61292 ........................................................................ 61293 ........................................................................ 61294 ........................................................................ 61295 ........................................................................ 61296 ........................................................................ 61297 ........................................................................ 61298 ........................................................................ 61299 ........................................................................ 61300 ........................................................................ 61301 ........................................................................ 61302 ........................................................................ 61303 ........................................................................ 61304 ........................................................................ 61305 ........................................................................ 61306 ........................................................................ 61307 ........................................................................ 61308 ........................................................................ 61309 ........................................................................ 61310 ........................................................................ 61311 ........................................................................ 61312 ........................................................................ 61313 ........................................................................ 61314 ........................................................................ 61315 ........................................................................ 61316 ........................................................................ 61317 ........................................................................ 61318 ........................................................................ 61319 ........................................................................ 61320 ........................................................................ 61321 ........................................................................ 61322 ........................................................................ 61323 ........................................................................ 61324 ........................................................................ 61325 ........................................................................ 61326 ........................................................................ 61327 ........................................................................ 61328 ........................................................................ 61329 ........................................................................ 61330 ........................................................................ 61331 ........................................................................ 61332 ........................................................................ 61333 ........................................................................ 61334 ........................................................................ 61335 ........................................................................ 61336 ........................................................................ 61337 ........................................................................ 61338 ........................................................................ 61339 ........................................................................ 61340 ........................................................................ 61341 ........................................................................ 61342 ........................................................................ 61343 ........................................................................ 61344 ........................................................................ 61345 ........................................................................ 61346 ........................................................................ 61347 ........................................................................ 61348 ........................................................................ 61349 ........................................................................ 61350 ........................................................................ 61351 ........................................................................ 61352 ........................................................................ 61353 ........................................................................ 61354 ........................................................................ 61355 ........................................................................ 61356 ........................................................................ 61357 ........................................................................ 61358 ........................................................................ 61359 ........................................................................ 61360 ........................................................................ 61361 ........................................................................ 61362 ........................................................................ 61363 ........................................................................ 61364 ........................................................................ 61365 ........................................................................ 61366 ........................................................................ 61367 ........................................................................ 61368 ........................................................................ 61369 ........................................................................ 61370 ........................................................................ 61371 ........................................................................ 61372 ........................................................................ 61373 ........................................................................ 61374 ........................................................................ 61375 ........................................................................ 61376 ........................................................................ 61377 ........................................................................ 61378 ........................................................................ 61379 ........................................................................ 61380 ........................................................................ 61381 ........................................................................ 61382 ........................................................................ 61383 ........................................................................ 61384 ........................................................................ 61385 ........................................................................ 61386 ........................................................................ 61387 ........................................................................ 61388 ........................................................................ 61389 ........................................................................ 61390 ........................................................................ 61391 ........................................................................ 61392 ........................................................................ 61393 ........................................................................ 61394 ........................................................................ 61395 ........................................................................ 61396 ........................................................................ 61397 ........................................................................ 61398 ........................................................................ 61399 ........................................................................ 61400 ........................................................................ 61401 ........................................................................ 61402 ........................................................................ 61403 ........................................................................ 61404 ........................................................................ 61405 ........................................................................ 61406 ........................................................................ 61407 ........................................................................ 61408 ........................................................................ 61409 ........................................................................ 61410 ........................................................................ 61411 ........................................................................ 61412 ........................................................................ 61413 ........................................................................ 61414 ........................................................................ 61415 ........................................................................ 61416 ........................................................................ 61417 ........................................................................ 61418 ........................................................................ 61419 ........................................................................ 61420 ........................................................................ 61421 ........................................................................ 61422 ........................................................................ 61423 ........................................................................ 61424 ........................................................................ 61425 ........................................................................ 61426 ........................................................................ 61427 ........................................................................ 61428 ........................................................................ 61429 ........................................................................ 61430 ........................................................................ 61431 ........................................................................ 61432 ........................................................................ 61433 ........................................................................ 61434 ........................................................................ 61435 ........................................................................ 61436 ........................................................................ 61437 ........................................................................ 61438 ........................................................................ 61439 ........................................................................ 61440 ........................................................................ 61441 ........................................................................ 61442 ........................................................................ 61443 ........................................................................ 61444 ........................................................................ 61445 ........................................................................ 61446 ........................................................................ 61447 ........................................................................ 61448 ........................................................................ 61449 ........................................................................ 61450 ........................................................................ 61451 ........................................................................ 61452 ........................................................................ 61453 ........................................................................ 61454 ........................................................................ 61455 ........................................................................ 61456 ........................................................................ 61457 ........................................................................ 61458 ........................................................................ 61459 ........................................................................ 61460 ........................................................................ 61461 ........................................................................ 61462 ........................................................................ 61463 ........................................................................ 61464 ........................................................................ 61465 ........................................................................ 61466 ........................................................................ 61467 ........................................................................ 61468 ........................................................................ 61469 ........................................................................ 61470 ........................................................................ 61471 ........................................................................ 61472 ........................................................................ 61473 ........................................................................ 61474 ........................................................................ 61475 ........................................................................ 61476 ........................................................................ 61477 ........................................................................ 61478 ........................................................................ 61479 ........................................................................ 61480 ........................................................................ 61481 ........................................................................ 61482 ........................................................................ 61483 ........................................................................ 61484 ........................................................................ 61485 ........................................................................ 61486 ........................................................................ 61487 ........................................................................ 61488 ........................................................................ 61489 ........................................................................ 61490 ........................................................................ 61491 ........................................................................ 61492 ........................................................................ 61493 ........................................................................ 61494 ........................................................................ 61495 ........................................................................ 61496 ........................................................................ 61497 ........................................................................ 61498 ........................................................................ 61499 ........................................................................ 61500 ........................................................................ 61501 ........................................................................ 61502 ........................................................................ 61503 ........................................................................ 61504 ........................................................................ 61505 ........................................................................ 61506 ........................................................................ 61507 ........................................................................ 61508 ........................................................................ 61509 ........................................................................ 61510 ........................................................................ 61511 ........................................................................ 61512 ........................................................................ 61513 ........................................................................ 61514 ........................................................................ 61515 ........................................................................ 61516 ........................................................................ 61517 ........................................................................ 61518 ........................................................................ 61519 ........................................................................ 61520 ........................................................................ 61521 ........................................................................ 61522 ........................................................................ 61523 ........................................................................ 61524 ........................................................................ 61525 ........................................................................ 61526 ........................................................................ 61527 ........................................................................ 61528 ........................................................................ 61529 ........................................................................ 61530 ........................................................................ 61531 ........................................................................ 61532 ........................................................................ 61533 ........................................................................ 61534 ........................................................................ 61535 ........................................................................ 61536 ........................................................................ 61537 ........................................................................ 61538 ........................................................................ 61539 ........................................................................ 61540 ........................................................................ 61541 ........................................................................ 61542 ........................................................................ 61543 ........................................................................ 61544 ........................................................................ 61545 ........................................................................ 61546 ........................................................................ 61547 ........................................................................ 61548 ........................................................................ 61549 ........................................................................ 61550 ........................................................................ 61551 ........................................................................ 61552 ........................................................................ 61553 ........................................................................ 61554 ........................................................................ 61555 ........................................................................ 61556 ........................................................................ 61557 ........................................................................ 61558 ........................................................................ 61559 ........................................................................ 61560 ........................................................................ 61561 ........................................................................ 61562 ........................................................................ 61563 ........................................................................ 61564 ........................................................................ 61565 ........................................................................ 61566 ........................................................................ 61567 ........................................................................ 61568 ........................................................................ 61569 ........................................................................ 61570 ........................................................................ 61571 ........................................................................ 61572 ........................................................................ 61573 ........................................................................ 61574 ........................................................................ 61575 ........................................................................ 61576 ........................................................................ 61577 ........................................................................ 61578 ........................................................................ 61579 ........................................................................ 61580 ........................................................................ 61581 ........................................................................ 61582 ........................................................................ 61583 ........................................................................ 61584 ........................................................................ 61585 ........................................................................ 61586 ........................................................................ 61587 ........................................................................ 61588 ........................................................................ 61589 ........................................................................ 61590 ........................................................................ 61591 ........................................................................ 61592 ........................................................................ 61593 ........................................................................ 61594 ........................................................................ 61595 ........................................................................ 61596 ........................................................................ 61597 ........................................................................ 61598 ........................................................................ 61599 ........................................................................ 61600 ........................................................................ 61601 ........................................................................ 61602 ........................................................................ 61603 ........................................................................ 61604 ........................................................................ 61605 ........................................................................ 61606 ........................................................................ 61607 ........................................................................ 61608 ........................................................................ 61609 ........................................................................ 61610 ........................................................................ 61611 ........................................................................ 61612 ........................................................................ 61613 ........................................................................ 61614 ........................................................................ 61615 ........................................................................ 61616 ........................................................................ 61617 ........................................................................ 61618 ........................................................................ 61619 ........................................................................ 61620 ........................................................................ 61621 ........................................................................ 61622 ........................................................................ 61623 ........................................................................ 61624 ........................................................................ 61625 ........................................................................ 61626 ........................................................................ 61627 ........................................................................ 61628 ........................................................................ 61629 ........................................................................ 61630 ........................................................................ 61631 ........................................................................ 61632 ........................................................................ 61633 ........................................................................ 61634 ........................................................................ 61635 ........................................................................ 61636 ........................................................................ 61637 ........................................................................ 61638 ........................................................................ 61639 ........................................................................ 61640 ........................................................................ 61641 ........................................................................ 61642 ........................................................................ 61643 ........................................................................ 61644 ........................................................................ 61645 ........................................................................ 61646 ........................................................................ 61647 ........................................................................ 61648 ........................................................................ 61649 ........................................................................ 61650 ........................................................................ 61651 ........................................................................ 61652 ........................................................................ 61653 ........................................................................ 61654 ........................................................................ 61655 ........................................................................ 61656 ........................................................................ 61657 ........................................................................ 61658 ........................................................................ 61659 ........................................................................ 61660 ........................................................................ 61661 ........................................................................ 61662 ........................................................................ 61663 ........................................................................ 61664 ........................................................................ 61665 ........................................................................ 61666 ........................................................................ 61667 ........................................................................ 61668 ........................................................................ 61669 ........................................................................ 61670 ........................................................................ 61671 ........................................................................ 61672 ........................................................................ 61673 ........................................................................ 61674 ........................................................................ 61675 ........................................................................ 61676 ........................................................................ 61677 ........................................................................ 61678 ........................................................................ 61679 ........................................................................ 61680 ........................................................................ 61681 ........................................................................ 61682 ........................................................................ 61683 ........................................................................ 61684 ........................................................................ 61685 ........................................................................ 61686 ........................................................................ 61687 ........................................................................ 61688 ........................................................................ 61689 ........................................................................ 61690 ........................................................................ 61691 ........................................................................ 61692 ........................................................................ 61693 ........................................................................ 61694 ........................................................................ 61695 ........................................................................ 61696 ........................................................................ 61697 ........................................................................ 61698 ........................................................................ 61699 ........................................................................ 61700 ........................................................................ 61701 ........................................................................ 61702 ........................................................................ 61703 ........................................................................ 61704 ........................................................................ 61705 ........................................................................ 61706 ........................................................................ 61707 ........................................................................ 61708 ........................................................................ 61709 ........................................................................ 61710 ........................................................................ 61711 ........................................................................ 61712 ........................................................................ 61713 ........................................................................ 61714 ........................................................................ 61715 ........................................................................ 61716 ........................................................................ 61717 ........................................................................ 61718 ........................................................................ 61719 ........................................................................ 61720 ........................................................................ 61721 ........................................................................ 61722 ........................................................................ 61723 ........................................................................ 61724 ........................................................................ 61725 ........................................................................ 61726 ........................................................................ 61727 ........................................................................ 61728 ........................................................................ 61729 ........................................................................ 61730 ........................................................................ 61731 ........................................................................ 61732 ........................................................................ 61733 ........................................................................ 61734 ........................................................................ 61735 ........................................................................ 61736 ........................................................................ 61737 ........................................................................ 61738 ........................................................................ 61739 ........................................................................ 61740 ........................................................................ 61741 ........................................................................ 61742 ........................................................................ 61743 ........................................................................ 61744 ........................................................................ 61745 ........................................................................ 61746 ........................................................................ 61747 ........................................................................ 61748 ........................................................................ 61749 ........................................................................ 61750 ........................................................................ 61751 ........................................................................ 61752 ........................................................................ 61753 ........................................................................ 61754 ........................................................................ 61755 ........................................................................ 61756 ........................................................................ 61757 ........................................................................ 61758 ........................................................................ 61759 ........................................................................ 61760 ........................................................................ 61761 ........................................................................ 61762 ........................................................................ 61763 ........................................................................ 61764 ........................................................................ 61765 ........................................................................ 61766 ........................................................................ 61767 ........................................................................ 61768 ........................................................................ 61769 ........................................................................ 61770 ........................................................................ 61771 ........................................................................ 61772 ........................................................................ 61773 ........................................................................ 61774 ........................................................................ 61775 ........................................................................ 61776 ........................................................................ 61777 ........................................................................ 61778 ........................................................................ 61779 ........................................................................ 61780 ........................................................................ 61781 ........................................................................ 61782 ........................................................................ 61783 ........................................................................ 61784 ........................................................................ 61785 ........................................................................ 61786 ........................................................................ 61787 ........................................................................ 61788 ........................................................................ 61789 ........................................................................ 61790 ........................................................................ 61791 ........................................................................ 61792 ........................................................................ 61793 ........................................................................ 61794 ........................................................................ 61795 ........................................................................ 61796 ........................................................................ 61797 ........................................................................ 61798 ........................................................................ 61799 ........................................................................ 61800 ........................................................................ 61801 ........................................................................ 61802 ........................................................................ 61803 ........................................................................ 61804 ........................................................................ 61805 ........................................................................ 61806 ........................................................................ 61807 ........................................................................ 61808 ........................................................................ 61809 ........................................................................ 61810 ........................................................................ 61811 ........................................................................ 61812 ........................................................................ 61813 ........................................................................ 61814 ........................................................................ 61815 ........................................................................ 61816 ........................................................................ 61817 ........................................................................ 61818 ........................................................................ 61819 ........................................................................ 61820 ........................................................................ 61821 ........................................................................ 61822 ........................................................................ 61823 ........................................................................ 61824 ........................................................................ 61825 ........................................................................ 61826 ........................................................................ 61827 ........................................................................ 61828 ........................................................................ 61829 ........................................................................ 61830 ........................................................................ 61831 ........................................................................ 61832 ........................................................................ 61833 ........................................................................ 61834 ........................................................................ 61835 ........................................................................ 61836 ........................................................................ 61837 ........................................................................ 61838 ........................................................................ 61839 ........................................................................ 61840 ........................................................................ 61841 ........................................................................ 61842 ........................................................................ 61843 ........................................................................ 61844 ........................................................................ 61845 ........................................................................ 61846 ........................................................................ 61847 ........................................................................ 61848 ........................................................................ 61849 ........................................................................ 61850 ........................................................................ 61851 ........................................................................ 61852 ........................................................................ 61853 ........................................................................ 61854 ........................................................................ 61855 ........................................................................ 61856 ........................................................................ 61857 ........................................................................ 61858 ........................................................................ 61859 ........................................................................ 61860 ........................................................................ 61861 ........................................................................ 61862 ........................................................................ 61863 ........................................................................ 61864 ........................................................................ 61865 ........................................................................ 61866 ........................................................................ 61867 ........................................................................ 61868 ........................................................................ 61869 ........................................................................ 61870 ........................................................................ 61871 ........................................................................ 61872 ........................................................................ 61873 ........................................................................ 61874 ........................................................................ 61875 ........................................................................ 61876 ........................................................................ 61877 ........................................................................ 61878 ........................................................................ 61879 ........................................................................ 61880 ........................................................................ 61881 ........................................................................ 61882 ........................................................................ 61883 ........................................................................ 61884 ........................................................................ 61885 ........................................................................ 61886 ........................................................................ 61887 ........................................................................ 61888 ........................................................................ 61889 ........................................................................ 61890 ........................................................................ 61891 ........................................................................ 61892 ........................................................................ 61893 ........................................................................ 61894 ........................................................................ 61895 ........................................................................ 61896 ........................................................................ 61897 ........................................................................ 61898 ........................................................................ 61899 ........................................................................ 61900 ........................................................................ 61901 ........................................................................ 61902 ........................................................................ 61903 ........................................................................ 61904 ........................................................................ 61905 ........................................................................ 61906 ........................................................................ 61907 ........................................................................ 61908 ........................................................................ 61909 ........................................................................ 61910 ........................................................................ 61911 ........................................................................ 61912 ........................................................................ 61913 ........................................................................ 61914 ........................................................................ 61915 ........................................................................ 61916 ........................................................................ 61917 ........................................................................ 61918 ........................................................................ 61919 ........................................................................ 61920 ........................................................................ 61921 ........................................................................ 61922 ........................................................................ 61923 ........................................................................ 61924 ........................................................................ 61925 ........................................................................ 61926 ........................................................................ 61927 ........................................................................ 61928 ........................................................................ 61929 ........................................................................ 61930 ........................................................................ 61931 ........................................................................ 61932 ........................................................................ 61933 ........................................................................ 61934 ........................................................................ 61935 ........................................................................ 61936 ........................................................................ 61937 ........................................................................ 61938 ........................................................................ 61939 ........................................................................ 61940 ........................................................................ 61941 ........................................................................ 61942 ........................................................................ 61943 ........................................................................ 61944 ........................................................................ 61945 ........................................................................ 61946 ........................................................................ 61947 ........................................................................ 61948 ........................................................................ 61949 ........................................................................ 61950 ........................................................................ 61951 ........................................................................ 61952 ........................................................................ 61953 ........................................................................ 61954 ........................................................................ 61955 ........................................................................ 61956 ........................................................................ 61957 ........................................................................ 61958 ........................................................................ 61959 ........................................................................ 61960 ........................................................................ 61961 ........................................................................ 61962 ........................................................................ 61963 ........................................................................ 61964 ........................................................................ 61965 ........................................................................ 61966 ........................................................................ 61967 ........................................................................ 61968 ........................................................................ 61969 ........................................................................ 61970 ........................................................................ 61971 ........................................................................ 61972 ........................................................................ 61973 ........................................................................ 61974 ........................................................................ 61975 ........................................................................ 61976 ........................................................................ 61977 ........................................................................ 61978 ........................................................................ 61979 ........................................................................ 61980 ........................................................................ 61981 ........................................................................ 61982 ........................................................................ 61983 ........................................................................ 61984 ........................................................................ 61985 ........................................................................ 61986 ........................................................................ 61987 ........................................................................ 61988 ........................................................................ 61989 ........................................................................ 61990 ........................................................................ 61991 ........................................................................ 61992 ........................................................................ 61993 ........................................................................ 61994 ........................................................................ 61995 ........................................................................ 61996 ........................................................................ 61997 ........................................................................ 61998 ........................................................................ 61999 ........................................................................ 62000 ........................................................................ 62001 ........................................................................ 62002 ........................................................................ 62003 ........................................................................ 62004 ........................................................................ 62005 ........................................................................ 62006 ........................................................................ 62007 ........................................................................ 62008 ........................................................................ 62009 ........................................................................ 62010 ........................................................................ 62011 ........................................................................ 62012 ........................................................................ 62013 ........................................................................ 62014 ........................................................................ 62015 ........................................................................ 62016 ........................................................................ 62017 ........................................................................ 62018 ........................................................................ 62019 ........................................................................ 62020 ........................................................................ 62021 ........................................................................ 62022 ........................................................................ 62023 ........................................................................ 62024 ........................................................................ 62025 ........................................................................ 62026 ........................................................................ 62027 ........................................................................ 62028 ........................................................................ 62029 ........................................................................ 62030 ........................................................................ 62031 ........................................................................ 62032 ........................................................................ 62033 ........................................................................ 62034 ........................................................................ 62035 ........................................................................ 62036 ........................................................................ 62037 ........................................................................ 62038 ........................................................................ 62039 ........................................................................ 62040 ........................................................................ 62041 ........................................................................ 62042 ........................................................................ 62043 ........................................................................ 62044 ........................................................................ 62045 ........................................................................ 62046 ........................................................................ 62047 ........................................................................ 62048 ........................................................................ 62049 ........................................................................ 62050 ........................................................................ 62051 ........................................................................ 62052 ........................................................................ 62053 ........................................................................ 62054 ........................................................................ 62055 ........................................................................ 62056 ........................................................................ 62057 ........................................................................ 62058 ........................................................................ 62059 ........................................................................ 62060 ........................................................................ 62061 ........................................................................ 62062 ........................................................................ 62063 ........................................................................ 62064 ........................................................................ 62065 ........................................................................ 62066 ........................................................................ 62067 ........................................................................ 62068 ........................................................................ 62069 ........................................................................ 62070 ........................................................................ 62071 ........................................................................ 62072 ........................................................................ 62073 ........................................................................ 62074 ........................................................................ 62075 ........................................................................ 62076 ........................................................................ 62077 ........................................................................ 62078 ........................................................................ 62079 ........................................................................ 62080 ........................................................................ 62081 ........................................................................ 62082 ........................................................................ 62083 ........................................................................ 62084 ........................................................................ 62085 ........................................................................ 62086 ........................................................................ 62087 ........................................................................ 62088 ........................................................................ 62089 ........................................................................ 62090 ........................................................................ 62091 ........................................................................ 62092 ........................................................................ 62093 ........................................................................ 62094 ........................................................................ 62095 ........................................................................ 62096 ........................................................................ 62097 ........................................................................ 62098 ........................................................................ 62099 ........................................................................ 62100 ........................................................................ 62101 ........................................................................ 62102 ........................................................................ 62103 ........................................................................ 62104 ........................................................................ 62105 ........................................................................ 62106 ........................................................................ 62107 ........................................................................ 62108 ........................................................................ 62109 ........................................................................ 62110 ........................................................................ 62111 ........................................................................ 62112 ........................................................................ 62113 ........................................................................ 62114 ........................................................................ 62115 ........................................................................ 62116 ........................................................................ 62117 ........................................................................ 62118 ........................................................................ 62119 ........................................................................ 62120 ........................................................................ 62121 ........................................................................ 62122 ........................................................................ 62123 ........................................................................ 62124 ........................................................................ 62125 ........................................................................ 62126 ........................................................................ 62127 ........................................................................ 62128 ........................................................................ 62129 ........................................................................ 62130 ........................................................................ 62131 ........................................................................ 62132 ........................................................................ 62133 ........................................................................ 62134 ........................................................................ 62135 ........................................................................ 62136 ........................................................................ 62137 ........................................................................ 62138 ........................................................................ 62139 ........................................................................ 62140 ........................................................................ 62141 ........................................................................ 62142 ........................................................................ 62143 ........................................................................ 62144 ........................................................................ 62145 ........................................................................ 62146 ........................................................................ 62147 ........................................................................ 62148 ........................................................................ 62149 ........................................................................ 62150 ........................................................................ 62151 ........................................................................ 62152 ........................................................................ 62153 ........................................................................ 62154 ........................................................................ 62155 ........................................................................ 62156 ........................................................................ 62157 ........................................................................ 62158 ........................................................................ 62159 ........................................................................ 62160 ........................................................................ 62161 ........................................................................ 62162 ........................................................................ 62163 ........................................................................ 62164 ........................................................................ 62165 ........................................................................ 62166 ........................................................................ 62167 ........................................................................ 62168 ........................................................................ 62169 ........................................................................ 62170 ........................................................................ 62171 ........................................................................ 62172 ........................................................................ 62173 ........................................................................ 62174 ........................................................................ 62175 ........................................................................ 62176 ........................................................................ 62177 ........................................................................ 62178 ........................................................................ 62179 ........................................................................ 62180 ........................................................................ 62181 ........................................................................ 62182 ........................................................................ 62183 ........................................................................ 62184 ........................................................................ 62185 ........................................................................ 62186 ........................................................................ 62187 ........................................................................ 62188 ........................................................................ 62189 ........................................................................ 62190 ........................................................................ 62191 ........................................................................ 62192 ........................................................................ 62193 ........................................................................ 62194 ........................................................................ 62195 ........................................................................ 62196 ........................................................................ 62197 ........................................................................ 62198 ........................................................................ 62199 ........................................................................ 62200 ........................................................................ 62201 ........................................................................ 62202 ........................................................................ 62203 ........................................................................ 62204 ........................................................................ 62205 ........................................................................ 62206 ........................................................................ 62207 ........................................................................ 62208 ........................................................................ 62209 ........................................................................ 62210 ........................................................................ 62211 ........................................................................ 62212 ........................................................................ 62213 ........................................................................ 62214 ........................................................................ 62215 ........................................................................ 62216 ........................................................................ 62217 ........................................................................ 62218 ........................................................................ 62219 ........................................................................ 62220 ........................................................................ 62221 ........................................................................ 62222 ........................................................................ 62223 ........................................................................ 62224 ........................................................................ 62225 ........................................................................ 62226 ........................................................................ 62227 ........................................................................ 62228 ........................................................................ 62229 ........................................................................ 62230 ........................................................................ 62231 ........................................................................ 62232 ........................................................................ 62233 ........................................................................ 62234 ........................................................................ 62235 ........................................................................ 62236 ........................................................................ 62237 ........................................................................ 62238 ........................................................................ 62239 ........................................................................ 62240 ........................................................................ 62241 ........................................................................ 62242 ........................................................................ 62243 ........................................................................ 62244 ........................................................................ 62245 ........................................................................ 62246 ........................................................................ 62247 ........................................................................ 62248 ........................................................................ 62249 ........................................................................ 62250 ........................................................................ 62251 ........................................................................ 62252 ........................................................................ 62253 ........................................................................ 62254 ........................................................................ 62255 ........................................................................ 62256 ........................................................................ 62257 ........................................................................ 62258 ........................................................................ 62259 ........................................................................ 62260 ........................................................................ 62261 ........................................................................ 62262 ........................................................................ 62263 ........................................................................ 62264 ........................................................................ 62265 ........................................................................ 62266 ........................................................................ 62267 ........................................................................ 62268 ........................................................................ 62269 ........................................................................ 62270 ........................................................................ 62271 ........................................................................ 62272 ........................................................................ 62273 ........................................................................ 62274 ........................................................................ 62275 ........................................................................ 62276 ........................................................................ 62277 ........................................................................ 62278 ........................................................................ 62279 ........................................................................ 62280 ........................................................................ 62281 ........................................................................ 62282 ........................................................................ 62283 ........................................................................ 62284 ........................................................................ 62285 ........................................................................ 62286 ........................................................................ 62287 ........................................................................ 62288 ........................................................................ 62289 ........................................................................ 62290 ........................................................................ 62291 ........................................................................ 62292 ........................................................................ 62293 ........................................................................ 62294 ........................................................................ 62295 ........................................................................ 62296 ........................................................................ 62297 ........................................................................ 62298 ........................................................................ 62299 ........................................................................ 62300 ........................................................................ 62301 ........................................................................ 62302 ........................................................................ 62303 ........................................................................ 62304 ........................................................................ 62305 ........................................................................ 62306 ........................................................................ 62307 ........................................................................ 62308 ........................................................................ 62309 ........................................................................ 62310 ........................................................................ 62311 ........................................................................ 62312 ........................................................................ 62313 ........................................................................ 62314 ........................................................................ 62315 ........................................................................ 62316 ........................................................................ 62317 ........................................................................ 62318 ........................................................................ 62319 ........................................................................ 62320 ........................................................................ 62321 ........................................................................ 62322 ........................................................................ 62323 ........................................................................ 62324 ........................................................................ 62325 ........................................................................ 62326 ........................................................................ 62327 ........................................................................ 62328 ........................................................................ 62329 ........................................................................ 62330 ........................................................................ 62331 ........................................................................ 62332 ........................................................................ 62333 ........................................................................ 62334 ........................................................................ 62335 ........................................................................ 62336 ........................................................................ 62337 ........................................................................ 62338 ........................................................................ 62339 ........................................................................ 62340 ........................................................................ 62341 ........................................................................ 62342 ........................................................................ 62343 ........................................................................ 62344 ........................................................................ 62345 ........................................................................ 62346 ........................................................................ 62347 ........................................................................ 62348 ........................................................................ 62349 ........................................................................ 62350 ........................................................................ 62351 ........................................................................ 62352 ........................................................................ 62353 ........................................................................ 62354 ........................................................................ 62355 ........................................................................ 62356 ........................................................................ 62357 ........................................................................ 62358 ........................................................................ 62359 ........................................................................ 62360 ........................................................................ 62361 ........................................................................ 62362 ........................................................................ 62363 ........................................................................ 62364 ........................................................................ 62365 ........................................................................ 62366 ........................................................................ 62367 ........................................................................ 62368 ........................................................................ 62369 ........................................................................ 62370 ........................................................................ 62371 ........................................................................ 62372 ........................................................................ 62373 ........................................................................ 62374 ........................................................................ 62375 ........................................................................ 62376 ........................................................................ 62377 ........................................................................ 62378 ........................................................................ 62379 ........................................................................ 62380 ........................................................................ 62381 ........................................................................ 62382 ........................................................................ 62383 ........................................................................ 62384 ........................................................................ 62385 ........................................................................ 62386 ........................................................................ 62387 ........................................................................ 62388 ........................................................................ 62389 ........................................................................ 62390 ........................................................................ 62391 ........................................................................ 62392 ........................................................................ 62393 ........................................................................ 62394 ........................................................................ 62395 ........................................................................ 62396 ........................................................................ 62397 ........................................................................ 62398 ........................................................................ 62399 ........................................................................ 62400 ........................................................................ 62401 ........................................................................ 62402 ........................................................................ 62403 ........................................................................ 62404 ........................................................................ 62405 ........................................................................ 62406 ........................................................................ 62407 ........................................................................ 62408 ........................................................................ 62409 ........................................................................ 62410 ........................................................................ 62411 ........................................................................ 62412 ........................................................................ 62413 ........................................................................ 62414 ........................................................................ 62415 ........................................................................ 62416 ........................................................................ 62417 ........................................................................ 62418 ........................................................................ 62419 ........................................................................ 62420 ........................................................................ 62421 ........................................................................ 62422 ........................................................................ 62423 ........................................................................ 62424 ........................................................................ 62425 ........................................................................ 62426 ........................................................................ 62427 ........................................................................ 62428 ........................................................................ 62429 ........................................................................ 62430 ........................................................................ 62431 ........................................................................ 62432 ........................................................................ 62433 ........................................................................ 62434 ........................................................................ 62435 ........................................................................ 62436 ........................................................................ 62437 ........................................................................ 62438 ........................................................................ 62439 ........................................................................ 62440 ........................................................................ 62441 ........................................................................ 62442 ........................................................................ 62443 ........................................................................ 62444 ........................................................................ 62445 ........................................................................ 62446 ........................................................................ 62447 ........................................................................ 62448 ........................................................................ 62449 ........................................................................ 62450 ........................................................................ 62451 ........................................................................ 62452 ........................................................................ 62453 ........................................................................ 62454 ........................................................................ 62455 ........................................................................ 62456 ........................................................................ 62457 ........................................................................ 62458 ........................................................................ 62459 ........................................................................ 62460 ........................................................................ 62461 ........................................................................ 62462 ........................................................................ 62463 ........................................................................ 62464 ........................................................................ 62465 ........................................................................ 62466 ........................................................................ 62467 ........................................................................ 62468 ........................................................................ 62469 ........................................................................ 62470 ........................................................................ 62471 ........................................................................ 62472 ........................................................................ 62473 ........................................................................ 62474 ........................................................................ 62475 ........................................................................ 62476 ........................................................................ 62477 ........................................................................ 62478 ........................................................................ 62479 ........................................................................ 62480 ........................................................................ 62481 ........................................................................ 62482 ........................................................................ 62483 ........................................................................ 62484 ........................................................................ 62485 ........................................................................ 62486 ........................................................................ 62487 ........................................................................ 62488 ........................................................................ 62489 ........................................................................ 62490 ........................................................................ 62491 ........................................................................ 62492 ........................................................................ 62493 ........................................................................ 62494 ........................................................................ 62495 ........................................................................ 62496 ........................................................................ 62497 ........................................................................ 62498 ........................................................................ 62499 ........................................................................ 62500 ........................................................................ 62501 ........................................................................ 62502 ........................................................................ 62503 ........................................................................ 62504 ........................................................................ 62505 ........................................................................ 62506 ........................................................................ 62507 ........................................................................ 62508 ........................................................................ 62509 ........................................................................ 62510 ........................................................................ 62511 ........................................................................ 62512 ........................................................................ 62513 ........................................................................ 62514 ........................................................................ 62515 ........................................................................ 62516 ........................................................................ 62517 ........................................................................ 62518 ........................................................................ 62519 ........................................................................ 62520 ........................................................................ 62521 ........................................................................ 62522 ........................................................................ 62523 ........................................................................ 62524 ........................................................................ 62525 ........................................................................ 62526 ........................................................................ 62527 ........................................................................ 62528 ........................................................................ 62529 ........................................................................ 62530 ........................................................................ 62531 ........................................................................ 62532 ........................................................................ 62533 ........................................................................ 62534 ........................................................................ 62535 ........................................................................ 62536 ........................................................................ 62537 ........................................................................ 62538 ........................................................................ 62539 ........................................................................ 62540 ........................................................................ 62541 ........................................................................ 62542 ........................................................................ 62543 ........................................................................ 62544 ........................................................................ 62545 ........................................................................ 62546 ........................................................................ 62547 ........................................................................ 62548 ........................................................................ 62549 ........................................................................ 62550 ........................................................................ 62551 ........................................................................ 62552 ........................................................................ 62553 ........................................................................ 62554 ........................................................................ 62555 ........................................................................ 62556 ........................................................................ 62557 ........................................................................ 62558 ........................................................................ 62559 ........................................................................ 62560 ........................................................................ 62561 ........................................................................ 62562 ........................................................................ 62563 ........................................................................ 62564 ........................................................................ 62565 ........................................................................ 62566 ........................................................................ 62567 ........................................................................ 62568 ........................................................................ 62569 ........................................................................ 62570 ........................................................................ 62571 ........................................................................ 62572 ........................................................................ 62573 ........................................................................ 62574 ........................................................................ 62575 ........................................................................ 62576 ........................................................................ 62577 ........................................................................ 62578 ........................................................................ 62579 ........................................................................ 62580 ........................................................................ 62581 ........................................................................ 62582 ........................................................................ 62583 ........................................................................ 62584 ........................................................................ 62585 ........................................................................ 62586 ........................................................................ 62587 ........................................................................ 62588 ........................................................................ 62589 ........................................................................ 62590 ........................................................................ 62591 ........................................................................ 62592 ........................................................................ 62593 ........................................................................ 62594 ........................................................................ 62595 ........................................................................ 62596 ........................................................................ 62597 ........................................................................ 62598 ........................................................................ 62599 ........................................................................ 62600 ........................................................................ 62601 ........................................................................ 62602 ........................................................................ 62603 ........................................................................ 62604 ........................................................................ 62605 ........................................................................ 62606 ........................................................................ 62607 ........................................................................ 62608 ........................................................................ 62609 ........................................................................ 62610 ........................................................................ 62611 ........................................................................ 62612 ........................................................................ 62613 ........................................................................ 62614 ........................................................................ 62615 ........................................................................ 62616 ........................................................................ 62617 ........................................................................ 62618 ........................................................................ 62619 ........................................................................ 62620 ........................................................................ 62621 ........................................................................ 62622 ........................................................................ 62623 ........................................................................ 62624 ........................................................................ 62625 ........................................................................ 62626 ........................................................................ 62627 ........................................................................ 62628 ........................................................................ 62629 ........................................................................ 62630 ........................................................................ 62631 ........................................................................ 62632 ........................................................................ 62633 ........................................................................ 62634 ........................................................................ 62635 ........................................................................ 62636 ........................................................................ 62637 ........................................................................ 62638 ........................................................................ 62639 ........................................................................ 62640 ........................................................................ 62641 ........................................................................ 62642 ........................................................................ 62643 ........................................................................ 62644 ........................................................................ 62645 ........................................................................ 62646 ........................................................................ 62647 ........................................................................ 62648 ........................................................................ 62649 ........................................................................ 62650 ........................................................................ 62651 ........................................................................ 62652 ........................................................................ 62653 ........................................................................ 62654 ........................................................................ 62655 ........................................................................ 62656 ........................................................................ 62657 ........................................................................ 62658 ........................................................................ 62659 ........................................................................ 62660 ........................................................................ 62661 ........................................................................ 62662 ........................................................................ 62663 ........................................................................ 62664 ........................................................................ 62665 ........................................................................ 62666 ........................................................................ 62667 ........................................................................ 62668 ........................................................................ 62669 ........................................................................ 62670 ........................................................................ 62671 ........................................................................ 62672 ........................................................................ 62673 ........................................................................ 62674 ........................................................................ 62675 ........................................................................ 62676 ........................................................................ 62677 ........................................................................ 62678 ........................................................................ 62679 ........................................................................ 62680 ........................................................................ 62681 ........................................................................ 62682 ........................................................................ 62683 ........................................................................ 62684 ........................................................................ 62685 ........................................................................ 62686 ........................................................................ 62687 ........................................................................ 62688 ........................................................................ 62689 ........................................................................ 62690 ........................................................................ 62691 ........................................................................ 62692 ........................................................................ 62693 ........................................................................ 62694 ........................................................................ 62695 ........................................................................ 62696 ........................................................................ 62697 ........................................................................ 62698 ........................................................................ 62699 ........................................................................ 62700 ........................................................................ 62701 ........................................................................ 62702 ........................................................................ 62703 ........................................................................ 62704 ........................................................................ 62705 ........................................................................ 62706 ........................................................................ 62707 ........................................................................ 62708 ........................................................................ 62709 ........................................................................ 62710 ........................................................................ 62711 ........................................................................ 62712 ........................................................................ 62713 ........................................................................ 62714 ........................................................................ 62715 ........................................................................ 62716 ........................................................................ 62717 ........................................................................ 62718 ........................................................................ 62719 ........................................................................ 62720 ........................................................................ 62721 ........................................................................ 62722 ........................................................................ 62723 ........................................................................ 62724 ........................................................................ 62725 ........................................................................ 62726 ........................................................................ 62727 ........................................................................ 62728 ........................................................................ 62729 ........................................................................ 62730 ........................................................................ 62731 ........................................................................ 62732 ........................................................................ 62733 ........................................................................ 62734 ........................................................................ 62735 ........................................................................ 62736 ........................................................................ 62737 ........................................................................ 62738 ........................................................................ 62739 ........................................................................ 62740 ........................................................................ 62741 ........................................................................ 62742 ........................................................................ 62743 ........................................................................ 62744 ........................................................................ 62745 ........................................................................ 62746 ........................................................................ 62747 ........................................................................ 62748 ........................................................................ 62749 ........................................................................ 62750 ........................................................................ 62751 ........................................................................ 62752 ........................................................................ 62753 ........................................................................ 62754 ........................................................................ 62755 ........................................................................ 62756 ........................................................................ 62757 ........................................................................ 62758 ........................................................................ 62759 ........................................................................ 62760 ........................................................................ 62761 ........................................................................ 62762 ........................................................................ 62763 ........................................................................ 62764 ........................................................................ 62765 ........................................................................ 62766 ........................................................................ 62767 ........................................................................ 62768 ........................................................................ 62769 ........................................................................ 62770 ........................................................................ 62771 ........................................................................ 62772 ........................................................................ 62773 ........................................................................ 62774 ........................................................................ 62775 ........................................................................ 62776 ........................................................................ 62777 ........................................................................ 62778 ........................................................................ 62779 ........................................................................ 62780 ........................................................................ 62781 ........................................................................ 62782 ........................................................................ 62783 ........................................................................ 62784 ........................................................................ 62785 ........................................................................ 62786 ........................................................................ 62787 ........................................................................ 62788 ........................................................................ 62789 ........................................................................ 62790 ........................................................................ 62791 ........................................................................ 62792 ........................................................................ 62793 ........................................................................ 62794 ........................................................................ 62795 ........................................................................ 62796 ........................................................................ 62797 ........................................................................ 62798 ........................................................................ 62799 ........................................................................ 62800 ........................................................................ 62801 ........................................................................ 62802 ........................................................................ 62803 ........................................................................ 62804 ........................................................................ 62805 ........................................................................ 62806 ........................................................................ 62807 ........................................................................ 62808 ........................................................................ 62809 ........................................................................ 62810 ........................................................................ 62811 ........................................................................ 62812 ........................................................................ 62813 ........................................................................ 62814 ........................................................................ 62815 ........................................................................ 62816 ........................................................................ 62817 ........................................................................ 62818 ........................................................................ 62819 ........................................................................ 62820 ........................................................................ 62821 ........................................................................ 62822 ........................................................................ 62823 ........................................................................ 62824 ........................................................................ 62825 ........................................................................ 62826 ........................................................................ 62827 ........................................................................ 62828 ........................................................................ 62829 ........................................................................ 62830 ........................................................................ 62831 ........................................................................ 62832 ........................................................................ 62833 ........................................................................ 62834 ........................................................................ 62835 ........................................................................ 62836 ........................................................................ 62837 ........................................................................ 62838 ........................................................................ 62839 ........................................................................ 62840 ........................................................................ 62841 ........................................................................ 62842 ........................................................................ 62843 ........................................................................ 62844 ........................................................................ 62845 ........................................................................ 62846 ........................................................................ 62847 ........................................................................ 62848 ........................................................................ 62849 ........................................................................ 62850 ........................................................................ 62851 ........................................................................ 62852 ........................................................................ 62853 ........................................................................ 62854 ........................................................................ 62855 ........................................................................ 62856 ........................................................................ 62857 ........................................................................ 62858 ........................................................................ 62859 ........................................................................ 62860 ........................................................................ 62861 ........................................................................ 62862 ........................................................................ 62863 ........................................................................ 62864 ........................................................................ 62865 ........................................................................ 62866 ........................................................................ 62867 ........................................................................ 62868 ........................................................................ 62869 ........................................................................ 62870 ........................................................................ 62871 ........................................................................ 62872 ........................................................................ 62873 ........................................................................ 62874 ........................................................................ 62875 ........................................................................ 62876 ........................................................................ 62877 ........................................................................ 62878 ........................................................................ 62879 ........................................................................ 62880 ........................................................................ 62881 ........................................................................ 62882 ........................................................................ 62883 ........................................................................ 62884 ........................................................................ 62885 ........................................................................ 62886 ........................................................................ 62887 ........................................................................ 62888 ........................................................................ 62889 ........................................................................ 62890 ........................................................................ 62891 ........................................................................ 62892 ........................................................................ 62893 ........................................................................ 62894 ........................................................................ 62895 ........................................................................ 62896 ........................................................................ 62897 ........................................................................ 62898 ........................................................................ 62899 ........................................................................ 62900 ........................................................................ 62901 ........................................................................ 62902 ........................................................................ 62903 ........................................................................ 62904 ........................................................................ 62905 ........................................................................ 62906 ........................................................................ 62907 ........................................................................ 62908 ........................................................................ 62909 ........................................................................ 62910 ........................................................................ 62911 ........................................................................ 62912 ........................................................................ 62913 ........................................................................ 62914 ........................................................................ 62915 ........................................................................ 62916 ........................................................................ 62917 ........................................................................ 62918 ........................................................................ 62919 ........................................................................ 62920 ........................................................................ 62921 ........................................................................ 62922 ........................................................................ 62923 ........................................................................ 62924 ........................................................................ 62925 ........................................................................ 62926 ........................................................................ 62927 ........................................................................ 62928 ........................................................................ 62929 ........................................................................ 62930 ........................................................................ 62931 ........................................................................ 62932 ........................................................................ 62933 ........................................................................ 62934 ........................................................................ 62935 ........................................................................ 62936 ........................................................................ 62937 ........................................................................ 62938 ........................................................................ 62939 ........................................................................ 62940 ........................................................................ 62941 ........................................................................ 62942 ........................................................................ 62943 ........................................................................ 62944 ........................................................................ 62945 ........................................................................ 62946 ........................................................................ 62947 ........................................................................ 62948 ........................................................................ 62949 ........................................................................ 62950 ........................................................................ 62951 ........................................................................ 62952 ........................................................................ 62953 ........................................................................ 62954 ........................................................................ 62955 ........................................................................ 62956 ........................................................................ 62957 ........................................................................ 62958 ........................................................................ 62959 ........................................................................ 62960 ........................................................................ 62961 ........................................................................ 62962 ........................................................................ 62963 ........................................................................ 62964 ........................................................................ 62965 ........................................................................ 62966 ........................................................................ 62967 ........................................................................ 62968 ........................................................................ 62969 ........................................................................ 62970 ........................................................................ 62971 ........................................................................ 62972 ........................................................................ 62973 ........................................................................ 62974 ........................................................................ 62975 ........................................................................ 62976 ........................................................................ 62977 ........................................................................ 62978 ........................................................................ 62979 ........................................................................ 62980 ........................................................................ 62981 ........................................................................ 62982 ........................................................................ 62983 ........................................................................ 62984 ........................................................................ 62985 ........................................................................ 62986 ........................................................................ 62987 ........................................................................ 62988 ........................................................................ 62989 ........................................................................ 62990 ........................................................................ 62991 ........................................................................ 62992 ........................................................................ 62993 ........................................................................ 62994 ........................................................................ 62995 ........................................................................ 62996 ........................................................................ 62997 ........................................................................ 62998 ........................................................................ 62999 ........................................................................ 63000 ........................................................................ 63001 ........................................................................ 63002 ........................................................................ 63003 ........................................................................ 63004 ........................................................................ 63005 ........................................................................ 63006 ........................................................................ 63007 ........................................................................ 63008 ........................................................................ 63009 ........................................................................ 63010 ........................................................................ 63011 ........................................................................ 63012 ........................................................................ 63013 ........................................................................ 63014 ........................................................................ 63015 ........................................................................ 63016 ........................................................................ 63017 ........................................................................ 63018 ........................................................................ 63019 ........................................................................ 63020 ........................................................................ 63021 ........................................................................ 63022 ........................................................................ 63023 ........................................................................ 63024 ........................................................................ 63025 ........................................................................ 63026 ........................................................................ 63027 ........................................................................ 63028 ........................................................................ 63029 ........................................................................ 63030 ........................................................................ 63031 ........................................................................ 63032 ........................................................................ 63033 ........................................................................ 63034 ........................................................................ 63035 ........................................................................ 63036 ........................................................................ 63037 ........................................................................ 63038 ........................................................................ 63039 ........................................................................ 63040 ........................................................................ 63041 ........................................................................ 63042 ........................................................................ 63043 ........................................................................ 63044 ........................................................................ 63045 ........................................................................ 63046 ........................................................................ 63047 ........................................................................ 63048 ........................................................................ 63049 ........................................................................ 63050 ........................................................................ 63051 ........................................................................ 63052 ........................................................................ 63053 ........................................................................ 63054 ........................................................................ 63055 ........................................................................ 63056 ........................................................................ 63057 ........................................................................ 63058 ........................................................................ 63059 ........................................................................ 63060 ........................................................................ 63061 ........................................................................ 63062 ........................................................................ 63063 ........................................................................ 63064 ........................................................................ 63065 ........................................................................ 63066 ........................................................................ 63067 ........................................................................ 63068 ........................................................................ 63069 ........................................................................ 63070 ........................................................................ 63071 ........................................................................ 63072 ........................................................................ 63073 ........................................................................ 63074 ........................................................................ 63075 ........................................................................ 63076 ........................................................................ 63077 ........................................................................ 63078 ........................................................................ 63079 ........................................................................ 63080 ........................................................................ 63081 ........................................................................ 63082 ........................................................................ 63083 ........................................................................ 63084 ........................................................................ 63085 ........................................................................ 63086 ........................................................................ 63087 ........................................................................ 63088 ........................................................................ 63089 ........................................................................ 63090 ........................................................................ 63091 ........................................................................ 63092 ........................................................................ 63093 ........................................................................ 63094 ........................................................................ 63095 ........................................................................ 63096 ........................................................................ 63097 ........................................................................ 63098 ........................................................................ 63099 ........................................................................ 63100 ........................................................................ 63101 ........................................................................ 63102 ........................................................................ 63103 ........................................................................ 63104 ........................................................................ 63105 ........................................................................ 63106 ........................................................................ 63107 ........................................................................ 63108 ........................................................................ 63109 ........................................................................ 63110 ........................................................................ 63111 ........................................................................ 63112 ........................................................................ 63113 ........................................................................ 63114 ........................................................................ 63115 ........................................................................ 63116 ........................................................................ 63117 ........................................................................ 63118 ........................................................................ 63119 ........................................................................ 63120 ........................................................................ 63121 ........................................................................ 63122 ........................................................................ 63123 ........................................................................ 63124 ........................................................................ 63125 ........................................................................ 63126 ........................................................................ 63127 ........................................................................ 63128 ........................................................................ 63129 ........................................................................ 63130 ........................................................................ 63131 ........................................................................ 63132 ........................................................................ 63133 ........................................................................ 63134 ........................................................................ 63135 ........................................................................ 63136 ........................................................................ 63137 ........................................................................ 63138 ........................................................................ 63139 ........................................................................ 63140 ........................................................................ 63141 ........................................................................ 63142 ........................................................................ 63143 ........................................................................ 63144 ........................................................................ 63145 ........................................................................ 63146 ........................................................................ 63147 ........................................................................ 63148 ........................................................................ 63149 ........................................................................ 63150 ........................................................................ 63151 ........................................................................ 63152 ........................................................................ 63153 ........................................................................ 63154 ........................................................................ 63155 ........................................................................ 63156 ........................................................................ 63157 ........................................................................ 63158 ........................................................................ 63159 ........................................................................ 63160 ........................................................................ 63161 ........................................................................ 63162 ........................................................................ 63163 ........................................................................ 63164 ........................................................................ 63165 ........................................................................ 63166 ........................................................................ 63167 ........................................................................ 63168 ........................................................................ 63169 ........................................................................ 63170 ........................................................................ 63171 ........................................................................ 63172 ........................................................................ 63173 ........................................................................ 63174 ........................................................................ 63175 ........................................................................ 63176 ........................................................................ 63177 ........................................................................ 63178 ........................................................................ 63179 ........................................................................ 63180 ........................................................................ 63181 ........................................................................ 63182 ........................................................................ 63183 ........................................................................ 63184 ........................................................................ 63185 ........................................................................ 63186 ........................................................................ 63187 ........................................................................ 63188 ........................................................................ 63189 ........................................................................ 63190 ........................................................................ 63191 ........................................................................ 63192 ........................................................................ 63193 ........................................................................ 63194 ........................................................................ 63195 ........................................................................ 63196 ........................................................................ 63197 ........................................................................ 63198 ........................................................................ 63199 ........................................................................ 63200 ........................................................................ 63201 ........................................................................ 63202 ........................................................................ 63203 ........................................................................ 63204 ........................................................................ 63205 ........................................................................ 63206 ........................................................................ 63207 ........................................................................ 63208 ........................................................................ 63209 ........................................................................ 63210 ........................................................................ 63211 ........................................................................ 63212 ........................................................................ 63213 ........................................................................ 63214 ........................................................................ 63215 ........................................................................ 63216 ........................................................................ 63217 ........................................................................ 63218 ........................................................................ 63219 ........................................................................ 63220 ........................................................................ 63221 ........................................................................ 63222 ........................................................................ 63223 ........................................................................ 63224 ........................................................................ 63225 ........................................................................ 63226 ........................................................................ 63227 ........................................................................ 63228 ........................................................................ 63229 ........................................................................ 63230 ........................................................................ 63231 ........................................................................ 63232 ........................................................................ 63233 ........................................................................ 63234 ........................................................................ 63235 ........................................................................ 63236 ........................................................................ 63237 ........................................................................ 63238 ........................................................................ 63239 ........................................................................ 63240 ........................................................................ 63241 ........................................................................ 63242 ........................................................................ 63243 ........................................................................ 63244 ........................................................................ 63245 ........................................................................ 63246 ........................................................................ 63247 ........................................................................ 63248 ........................................................................ 63249 ........................................................................ 63250 ........................................................................ 63251 ........................................................................ 63252 ........................................................................ 63253 ........................................................................ 63254 ........................................................................ 63255 ........................................................................ 63256 ........................................................................ 63257 ........................................................................ 63258 ........................................................................ 63259 ........................................................................ 63260 ........................................................................ 63261 ........................................................................ 63262 ........................................................................ 63263 ........................................................................ 63264 ........................................................................ 63265 ........................................................................ 63266 ........................................................................ 63267 ........................................................................ 63268 ........................................................................ 63269 ........................................................................ 63270 ........................................................................ 63271 ........................................................................ 63272 ........................................................................ 63273 ........................................................................ 63274 ........................................................................ 63275 ........................................................................ 63276 ........................................................................ 63277 ........................................................................ 63278 ........................................................................ 63279 ........................................................................ 63280 ........................................................................ 63281 ........................................................................ 63282 ........................................................................ 63283 ........................................................................ 63284 ........................................................................ 63285 ........................................................................ 63286 ........................................................................ 63287 ........................................................................ 63288 ........................................................................ 63289 ........................................................................ 63290 ........................................................................ 63291 ........................................................................ 63292 ........................................................................ 63293 ........................................................................ 63294 ........................................................................ 63295 ........................................................................ 63296 ........................................................................ 63297 ........................................................................ 63298 ........................................................................ 63299 ........................................................................ 63300 ........................................................................ 63301 ........................................................................ 63302 ........................................................................ 63303 ........................................................................ 63304 ........................................................................ 63305 ........................................................................ 63306 ........................................................................ 63307 ........................................................................ 63308 ........................................................................ 63309 ........................................................................ 63310 ........................................................................ 63311 ........................................................................ 63312 ........................................................................ 63313 ........................................................................ 63314 ........................................................................ 63315 ........................................................................ 63316 ........................................................................ 63317 ........................................................................ 63318 ........................................................................ 63319 ........................................................................ 63320 ........................................................................ 63321 ........................................................................ 63322 ........................................................................ 63323 ........................................................................ 63324 ........................................................................ 63325 ........................................................................ 63326 ........................................................................ 63327 ........................................................................ 63328 ........................................................................ 63329 ........................................................................ 63330 ........................................................................ 63331 ........................................................................ 63332 ........................................................................ 63333 ........................................................................ 63334 ........................................................................ 63335 ........................................................................ 63336 ........................................................................ 63337 ........................................................................ 63338 ........................................................................ 63339 ........................................................................ 63340 ........................................................................ 63341 ........................................................................ 63342 ........................................................................ 63343 ........................................................................ 63344 ........................................................................ 63345 ........................................................................ 63346 ........................................................................ 63347 ........................................................................ 63348 ........................................................................ 63349 ........................................................................ 63350 ........................................................................ 63351 ........................................................................ 63352 ........................................................................ 63353 ........................................................................ 63354 ........................................................................ 63355 ........................................................................ 63356 ........................................................................ 63357 ........................................................................ 63358 ........................................................................ 63359 ........................................................................ 63360 ........................................................................ 63361 ........................................................................ 63362 ........................................................................ 63363 ........................................................................ 63364 ........................................................................ 63365 ........................................................................ 63366 ........................................................................ 63367 ........................................................................ 63368 ........................................................................ 63369 ........................................................................ 63370 ........................................................................ 63371 ........................................................................ 63372 ........................................................................ 63373 ........................................................................ 63374 ........................................................................ 63375 ........................................................................ 63376 ........................................................................ 63377 ........................................................................ 63378 ........................................................................ 63379 ........................................................................ 63380 ........................................................................ 63381 ........................................................................ 63382 ........................................................................ 63383 ........................................................................ 63384 ........................................................................ 63385 ........................................................................ 63386 ........................................................................ 63387 ........................................................................ 63388 ........................................................................ 63389 ........................................................................ 63390 ........................................................................ 63391 ........................................................................ 63392 ........................................................................ 63393 ........................................................................ 63394 ........................................................................ 63395 ........................................................................ 63396 ........................................................................ 63397 ........................................................................ 63398 ........................................................................ 63399 ........................................................................ 63400 ........................................................................ 63401 ........................................................................ 63402 ........................................................................ 63403 ........................................................................ 63404 ........................................................................ 63405 ........................................................................ 63406 ........................................................................ 63407 ........................................................................ 63408 ........................................................................ 63409 ........................................................................ 63410 ........................................................................ 63411 ........................................................................ 63412 ........................................................................ 63413 ........................................................................ 63414 ........................................................................ 63415 ........................................................................ 63416 ........................................................................ 63417 ........................................................................ 63418 ........................................................................ 63419 ........................................................................ 63420 ........................................................................ 63421 ........................................................................ 63422 ........................................................................ 63423 ........................................................................ 63424 ........................................................................ 63425 ........................................................................ 63426 ........................................................................ 63427 ........................................................................ 63428 ........................................................................ 63429 ........................................................................ 63430 ........................................................................ 63431 ........................................................................ 63432 ........................................................................ 63433 ........................................................................ 63434 ........................................................................ 63435 ........................................................................ 63436 ........................................................................ 63437 ........................................................................ 63438 ........................................................................ 63439 ........................................................................ 63440 ........................................................................ 63441 ........................................................................ 63442 ........................................................................ 63443 ........................................................................ 63444 ........................................................................ 63445 ........................................................................ 63446 ........................................................................ 63447 ........................................................................ 63448 ........................................................................ 63449 ........................................................................ 63450 ........................................................................ 63451 ........................................................................ 63452 ........................................................................ 63453 ........................................................................ 63454 ........................................................................ 63455 ........................................................................ 63456 ........................................................................ 63457 ........................................................................ 63458 ........................................................................ 63459 ........................................................................ 63460 ........................................................................ 63461 ........................................................................ 63462 ........................................................................ 63463 ........................................................................ 63464 ........................................................................ 63465 ........................................................................ 63466 ........................................................................ 63467 ........................................................................ 63468 ........................................................................ 63469 ........................................................................ 63470 ........................................................................ 63471 ........................................................................ 63472 ........................................................................ 63473 ........................................................................ 63474 ........................................................................ 63475 ........................................................................ 63476 ........................................................................ 63477 ........................................................................ 63478 ........................................................................ 63479 ........................................................................ 63480 ........................................................................ 63481 ........................................................................ 63482 ........................................................................ 63483 ........................................................................ 63484 ........................................................................ 63485 ........................................................................ 63486 ........................................................................ 63487 ........................................................................ 63488 ........................................................................ 63489 ........................................................................ 63490 ........................................................................ 63491 ........................................................................ 63492 ........................................................................ 63493 ........................................................................ 63494 ........................................................................ 63495 ........................................................................ 63496 ........................................................................ 63497 ........................................................................ 63498 ........................................................................ 63499 ........................................................................ 63500 ........................................................................ 63501 ........................................................................ 63502 ........................................................................ 63503 ........................................................................ 63504 ........................................................................ 63505 ........................................................................ 63506 ........................................................................ 63507 ........................................................................ 63508 ........................................................................ 63509 ........................................................................ 63510 ........................................................................ 63511 ........................................................................ 63512 ........................................................................ 63513 ........................................................................ 63514 ........................................................................ 63515 ........................................................................ 63516 ........................................................................ 63517 ........................................................................ 63518 ........................................................................ 63519 ........................................................................ 63520 ........................................................................ 63521 ........................................................................ 63522 ........................................................................ 63523 ........................................................................ 63524 ........................................................................ 63525 ........................................................................ 63526 ........................................................................ 63527 ........................................................................ 63528 ........................................................................ 63529 ........................................................................ 63530 ........................................................................ 63531 ........................................................................ 63532 ........................................................................ 63533 ........................................................................ 63534 ........................................................................ 63535 ........................................................................ 63536 ........................................................................ 63537 ........................................................................ 63538 ........................................................................ 63539 ........................................................................ 63540 ........................................................................ 63541 ........................................................................ 63542 ........................................................................ 63543 ........................................................................ 63544 ........................................................................ 63545 ........................................................................ 63546 ........................................................................ 63547 ........................................................................ 63548 ........................................................................ 63549 ........................................................................ 63550 ........................................................................ 63551 ........................................................................ 63552 ........................................................................ 63553 ........................................................................ 63554 ........................................................................ 63555 ........................................................................ 63556 ........................................................................ 63557 ........................................................................ 63558 ........................................................................ 63559 ........................................................................ 63560 ........................................................................ 63561 ........................................................................ 63562 ........................................................................ 63563 ........................................................................ 63564 ........................................................................ 63565 ........................................................................ 63566 ........................................................................ 63567 ........................................................................ 63568 ........................................................................ 63569 ........................................................................ 63570 ........................................................................ 63571 ........................................................................ 63572 ........................................................................ 63573 ........................................................................ 63574 ........................................................................ 63575 ........................................................................ 63576 ........................................................................ 63577 ........................................................................ 63578 ........................................................................ 63579 ........................................................................ 63580 ........................................................................ 63581 ........................................................................ 63582 ........................................................................ 63583 ........................................................................ 63584 ........................................................................ 63585 ........................................................................ 63586 ........................................................................ 63587 ........................................................................ 63588 ........................................................................ 63589 ........................................................................ 63590 ........................................................................ 63591 ........................................................................ 63592 ........................................................................ 63593 ........................................................................ 63594 ........................................................................ 63595 ........................................................................ 63596 ........................................................................ 63597 ........................................................................ 63598 ........................................................................ 63599 ........................................................................ 63600 ........................................................................ 63601 ........................................................................ 63602 ........................................................................ 63603 ........................................................................ 63604 ........................................................................ 63605 ........................................................................ 63606 ........................................................................ 63607 ........................................................................ 63608 ........................................................................ 63609 ........................................................................ 63610 ........................................................................ 63611 ........................................................................ 63612 ........................................................................ 63613 ........................................................................ 63614 ........................................................................ 63615 ........................................................................ 63616 ........................................................................ 63617 ........................................................................ 63618 ........................................................................ 63619 ........................................................................ 63620 ........................................................................ 63621 ........................................................................ 63622 ........................................................................ 63623 ........................................................................ 63624 ........................................................................ 63625 ........................................................................ 63626 ........................................................................ 63627 ........................................................................ 63628 ........................................................................ 63629 ........................................................................ 63630 ........................................................................ 63631 ........................................................................ 63632 ........................................................................ 63633 ........................................................................ 63634 ........................................................................ 63635 ........................................................................ 63636 ........................................................................ 63637 ........................................................................ 63638 ........................................................................ 63639 ........................................................................ 63640 ........................................................................ 63641 ........................................................................ 63642 ........................................................................ 63643 ........................................................................ 63644 ........................................................................ 63645 ........................................................................ 63646 ........................................................................ 63647 ........................................................................ 63648 ........................................................................ 63649 ........................................................................ 63650 ........................................................................ 63651 ........................................................................ 63652 ........................................................................ 63653 ........................................................................ 63654 ........................................................................ 63655 ........................................................................ 63656 ........................................................................ 63657 ........................................................................ 63658 ........................................................................ 63659 ........................................................................ 63660 ........................................................................ 63661 ........................................................................ 63662 ........................................................................ 63663 ........................................................................ 63664 ........................................................................ 63665 ........................................................................ 63666 ........................................................................ 63667 ........................................................................ 63668 ........................................................................ 63669 ........................................................................ 63670 ........................................................................ 63671 ........................................................................ 63672 ........................................................................ 63673 ........................................................................ 63674 ........................................................................ 63675 ........................................................................ 63676 ........................................................................ 63677 ........................................................................ 63678 ........................................................................ 63679 ........................................................................ 63680 ........................................................................ 63681 ........................................................................ 63682 ........................................................................ 63683 ........................................................................ 63684 ........................................................................ 63685 ........................................................................ 63686 ........................................................................ 63687 ........................................................................ 63688 ........................................................................ 63689 ........................................................................ 63690 ........................................................................ 63691 ........................................................................ 63692 ........................................................................ 63693 ........................................................................ 63694 ........................................................................ 63695 ........................................................................ 63696 ........................................................................ 63697 ........................................................................ 63698 ........................................................................ 63699 ........................................................................ 63700 ........................................................................ 63701 ........................................................................ 63702 ........................................................................ 63703 ........................................................................ 63704 ........................................................................ 63705 ........................................................................ 63706 ........................................................................ 63707 ........................................................................ 63708 ........................................................................ 63709 ........................................................................ 63710 ........................................................................ 63711 ........................................................................ 63712 ........................................................................ 63713 ........................................................................ 63714 ........................................................................ 63715 ........................................................................ 63716 ........................................................................ 63717 ........................................................................ 63718 ........................................................................ 63719 ........................................................................ 63720 ........................................................................ 63721 ........................................................................ 63722 ........................................................................ 63723 ........................................................................ 63724 ........................................................................ 63725 ........................................................................ 63726 ........................................................................ 63727 ........................................................................ 63728 ........................................................................ 63729 ........................................................................ 63730 ........................................................................ 63731 ........................................................................ 63732 ........................................................................ 63733 ........................................................................ 63734 ........................................................................ 63735 ........................................................................ 63736 ........................................................................ 63737 ........................................................................ 63738 ........................................................................ 63739 ........................................................................ 63740 ........................................................................ 63741 ........................................................................ 63742 ........................................................................ 63743 ........................................................................ 63744 ........................................................................ 63745 ........................................................................ 63746 ........................................................................ 63747 ........................................................................ 63748 ........................................................................ 63749 ........................................................................ 63750 ........................................................................ 63751 ........................................................................ 63752 ........................................................................ 63753 ........................................................................ 63754 ........................................................................ 63755 ........................................................................ 63756 ........................................................................ 63757 ........................................................................ 63758 ........................................................................ 63759 ........................................................................ 63760 ........................................................................ 63761 ........................................................................ 63762 ........................................................................ 63763 ........................................................................ 63764 ........................................................................ 63765 ........................................................................ 63766 ........................................................................ 63767 ........................................................................ 63768 ........................................................................ 63769 ........................................................................ 63770 ........................................................................ 63771 ........................................................................ 63772 ........................................................................ 63773 ........................................................................ 63774 ........................................................................ 63775 ........................................................................ 63776 ........................................................................ 63777 ........................................................................ 63778 ........................................................................ 63779 ........................................................................ 63780 ........................................................................ 63781 ........................................................................ 63782 ........................................................................ 63783 ........................................................................ 63784 ........................................................................ 63785 ........................................................................ 63786 ........................................................................ 63787 ........................................................................ 63788 ........................................................................ 63789 ........................................................................ 63790 ........................................................................ 63791 ........................................................................ 63792 ........................................................................ 63793 ........................................................................ 63794 ........................................................................ 63795 ........................................................................ 63796 ........................................................................ 63797 ........................................................................ 63798 ........................................................................ 63799 ........................................................................ 63800 ........................................................................ 63801 ........................................................................ 63802 ........................................................................ 63803 ........................................................................ 63804 ........................................................................ 63805 ........................................................................ 63806 ........................................................................ 63807 ........................................................................ 63808 ........................................................................ 63809 ........................................................................ 63810 ........................................................................ 63811 ........................................................................ 63812 ........................................................................ 63813 ........................................................................ 63814 ........................................................................ 63815 ........................................................................ 63816 ........................................................................ 63817 ........................................................................ 63818 ........................................................................ 63819 ........................................................................ 63820 ........................................................................ 63821 ........................................................................ 63822 ........................................................................ 63823 ........................................................................ 63824 ........................................................................ 63825 ........................................................................ 63826 ........................................................................ 63827 ........................................................................ 63828 ........................................................................ 63829 ........................................................................ 63830 ........................................................................ 63831 ........................................................................ 63832 ........................................................................ 63833 ........................................................................ 63834 ........................................................................ 63835 ........................................................................ 63836 ........................................................................ 63837 ........................................................................ 63838 ........................................................................ 63839 ........................................................................ 63840 ........................................................................ 63841 ........................................................................ 63842 ........................................................................ 63843 ........................................................................ 63844 ........................................................................ 63845 ........................................................................ 63846 ........................................................................ 63847 ........................................................................ 63848 ........................................................................ 63849 ........................................................................ 63850 ........................................................................ 63851 ........................................................................ 63852 ........................................................................ 63853 ........................................................................ 63854 ........................................................................ 63855 ........................................................................ 63856 ........................................................................ 63857 ........................................................................ 63858 ........................................................................ 63859 ........................................................................ 63860 ........................................................................ 63861 ........................................................................ 63862 ........................................................................ 63863 ........................................................................ 63864 ........................................................................ 63865 ........................................................................ 63866 ........................................................................ 63867 ........................................................................ 63868 ........................................................................ 63869 ........................................................................ 63870 ........................................................................ 63871 ........................................................................ 63872 ........................................................................ 63873 ........................................................................ 63874 ........................................................................ 63875 ........................................................................ 63876 ........................................................................ 63877 ........................................................................ 63878 ........................................................................ 63879 ........................................................................ 63880 ........................................................................ 63881 ........................................................................ 63882 ........................................................................ 63883 ........................................................................ 63884 ........................................................................ 63885 ........................................................................ 63886 ........................................................................ 63887 ........................................................................ 63888 ........................................................................ 63889 ........................................................................ 63890 ........................................................................ 63891 ........................................................................ 63892 ........................................................................ 63893 ........................................................................ 63894 ........................................................................ 63895 ........................................................................ 63896 ........................................................................ 63897 ........................................................................ 63898 ........................................................................ 63899 ........................................................................ 63900 ........................................................................ 63901 ........................................................................ 63902 ........................................................................ 63903 ........................................................................ 63904 ........................................................................ 63905 ........................................................................ 63906 ........................................................................ 63907 ........................................................................ 63908 ........................................................................ 63909 ........................................................................ 63910 ........................................................................ 63911 ........................................................................ 63912 ........................................................................ 63913 ........................................................................ 63914 ........................................................................ 63915 ........................................................................ 63916 ........................................................................ 63917 ........................................................................ 63918 ........................................................................ 63919 ........................................................................ 63920 ........................................................................ 63921 ........................................................................ 63922 ........................................................................ 63923 ........................................................................ 63924 ........................................................................ 63925 ........................................................................ 63926 ........................................................................ 63927 ........................................................................ 63928 ........................................................................ 63929 ........................................................................ 63930 ........................................................................ 63931 ........................................................................ 63932 ........................................................................ 63933 ........................................................................ 63934 ........................................................................ 63935 ........................................................................ 63936 ........................................................................ 63937 ........................................................................ 63938 ........................................................................ 63939 ........................................................................ 63940 ........................................................................ 63941 ........................................................................ 63942 ........................................................................ 63943 ........................................................................ 63944 ........................................................................ 63945 ........................................................................ 63946 ........................................................................ 63947 ........................................................................ 63948 ........................................................................ 63949 ........................................................................ 63950 ........................................................................ 63951 ........................................................................ 63952 ........................................................................ 63953 ........................................................................ 63954 ........................................................................ 63955 ........................................................................ 63956 ........................................................................ 63957 ........................................................................ 63958 ........................................................................ 63959 ........................................................................ 63960 ........................................................................ 63961 ........................................................................ 63962 ........................................................................ 63963 ........................................................................ 63964 ........................................................................ 63965 ........................................................................ 63966 ........................................................................ 63967 ........................................................................ 63968 ........................................................................ 63969 ........................................................................ 63970 ........................................................................ 63971 ........................................................................ 63972 ........................................................................ 63973 ........................................................................ 63974 ........................................................................ 63975 ........................................................................ 63976 ........................................................................ 63977 ........................................................................ 63978 ........................................................................ 63979 ........................................................................ 63980 ........................................................................ 63981 ........................................................................ 63982 ........................................................................ 63983 ........................................................................ 63984 ........................................................................ 63985 ........................................................................ 63986 ........................................................................ 63987 ........................................................................ 63988 ........................................................................ 63989 ........................................................................ 63990 ........................................................................ 63991 ........................................................................ 63992 ........................................................................ 63993 ........................................................................ 63994 ........................................................................ 63995 ........................................................................ 63996 ........................................................................ 63997 ........................................................................ 63998 ........................................................................ 63999 ........................................................................ 64000 ........................................................................ 64001 ........................................................................ 64002 ........................................................................ 64003 ........................................................................ 64004 ........................................................................ 64005 ........................................................................ 64006 ........................................................................ 64007 ........................................................................ 64008 ........................................................................ 64009 ........................................................................ 64010 ........................................................................ 64011 ........................................................................ 64012 ........................................................................ 64013 ........................................................................ 64014 ........................................................................ 64015 ........................................................................ 64016 ........................................................................ 64017 ........................................................................ 64018 ........................................................................ 64019 ........................................................................ 64020 ........................................................................ 64021 ........................................................................ 64022 ........................................................................ 64023 ........................................................................ 64024 ........................................................................ 64025 ........................................................................ 64026 ........................................................................ 64027 ........................................................................ 64028 ........................................................................ 64029 ........................................................................ 64030 ........................................................................ 64031 ........................................................................ 64032 ........................................................................ 64033 ........................................................................ 64034 ........................................................................ 64035 ........................................................................ 64036 ........................................................................ 64037 ........................................................................ 64038 ........................................................................ 64039 ........................................................................ 64040 ........................................................................ 64041 ........................................................................ 64042 ........................................................................ 64043 ........................................................................ 64044 ........................................................................ 64045 ........................................................................ 64046 ........................................................................ 64047 ........................................................................ 64048 ........................................................................ 64049 ........................................................................ 64050 ........................................................................ 64051 ........................................................................ 64052 ........................................................................ 64053 ........................................................................ 64054 ........................................................................ 64055 ........................................................................ 64056 ........................................................................ 64057 ........................................................................ 64058 ........................................................................ 64059 ........................................................................ 64060 ........................................................................ 64061 ........................................................................ 64062 ........................................................................ 64063 ........................................................................ 64064 ........................................................................ 64065 ........................................................................ 64066 ........................................................................ 64067 ........................................................................ 64068 ........................................................................ 64069 ........................................................................ 64070 ........................................................................ 64071 ........................................................................ 64072 ........................................................................ 64073 ........................................................................ 64074 ........................................................................ 64075 ........................................................................ 64076 ........................................................................ 64077 ........................................................................ 64078 ........................................................................ 64079 ........................................................................ 64080 ........................................................................ 64081 ........................................................................ 64082 ........................................................................ 64083 ........................................................................ 64084 ........................................................................ 64085 ........................................................................ 64086 ........................................................................ 64087 ........................................................................ 64088 ........................................................................ 64089 ........................................................................ 64090 ........................................................................ 64091 ........................................................................ 64092 ........................................................................ 64093 ........................................................................ 64094 ........................................................................ 64095 ........................................................................ 64096 ........................................................................ 64097 ........................................................................ 64098 ........................................................................ 64099 ........................................................................ 64100 ........................................................................ 64101 ........................................................................ 64102 ........................................................................ 64103 ........................................................................ 64104 ........................................................................ 64105 ........................................................................ 64106 ........................................................................ 64107 ........................................................................ 64108 ........................................................................ 64109 ........................................................................ 64110 ........................................................................ 64111 ........................................................................ 64112 ........................................................................ 64113 ........................................................................ 64114 ........................................................................ 64115 ........................................................................ 64116 ........................................................................ 64117 ........................................................................ 64118 ........................................................................ 64119 ........................................................................ 64120 ........................................................................ 64121 ........................................................................ 64122 ........................................................................ 64123 ........................................................................ 64124 ........................................................................ 64125 ........................................................................ 64126 ........................................................................ 64127 ........................................................................ 64128 ........................................................................ 64129 ........................................................................ 64130 ........................................................................ 64131 ........................................................................ 64132 ........................................................................ 64133 ........................................................................ 64134 ........................................................................ 64135 ........................................................................ 64136 ........................................................................ 64137 ........................................................................ 64138 ........................................................................ 64139 ........................................................................ 64140 ........................................................................ 64141 ........................................................................ 64142 ........................................................................ 64143 ........................................................................ 64144 ........................................................................ 64145 ........................................................................ 64146 ........................................................................ 64147 ........................................................................ 64148 ........................................................................ 64149 ........................................................................ 64150 ........................................................................ 64151 ........................................................................ 64152 ........................................................................ 64153 ........................................................................ 64154 ........................................................................ 64155 ........................................................................ 64156 ........................................................................ 64157 ........................................................................ 64158 ........................................................................ 64159 ........................................................................ 64160 ........................................................................ 64161 ........................................................................ 64162 ........................................................................ 64163 ........................................................................ 64164 ........................................................................ 64165 ........................................................................ 64166 ........................................................................ 64167 ........................................................................ 64168 ........................................................................ 64169 ........................................................................ 64170 ........................................................................ 64171 ........................................................................ 64172 ........................................................................ 64173 ........................................................................ 64174 ........................................................................ 64175 ........................................................................ 64176 ........................................................................ 64177 ........................................................................ 64178 ........................................................................ 64179 ........................................................................ 64180 ........................................................................ 64181 ........................................................................ 64182 ........................................................................ 64183 ........................................................................ 64184 ........................................................................ 64185 ........................................................................ 64186 ........................................................................ 64187 ........................................................................ 64188 ........................................................................ 64189 ........................................................................ 64190 ........................................................................ 64191 ........................................................................ 64192 ........................................................................ 64193 ........................................................................ 64194 ........................................................................ 64195 ........................................................................ 64196 ........................................................................ 64197 ........................................................................ 64198 ........................................................................ 64199 ........................................................................ 64200 ........................................................................ 64201 ........................................................................ 64202 ........................................................................ 64203 ........................................................................ 64204 ........................................................................ 64205 ........................................................................ 64206 ........................................................................ 64207 ........................................................................ 64208 ........................................................................ 64209 ........................................................................ 64210 ........................................................................ 64211 ........................................................................ 64212 ........................................................................ 64213 ........................................................................ 64214 ........................................................................ 64215 ........................................................................ 64216 ........................................................................ 64217 ........................................................................ 64218 ........................................................................ 64219 ........................................................................ 64220 ........................................................................ 64221 ........................................................................ 64222 ........................................................................ 64223 ........................................................................ 64224 ........................................................................ 64225 ........................................................................ 64226 ........................................................................ 64227 ........................................................................ 64228 ........................................................................ 64229 ........................................................................ 64230 ........................................................................ 64231 ........................................................................ 64232 ........................................................................ 64233 ........................................................................ 64234 ........................................................................ 64235 ........................................................................ 64236 ........................................................................ 64237 ........................................................................ 64238 ........................................................................ 64239 ........................................................................ 64240 ........................................................................ 64241 ........................................................................ 64242 ........................................................................ 64243 ........................................................................ 64244 ........................................................................ 64245 ........................................................................ 64246 ........................................................................ 64247 ........................................................................ 64248 ........................................................................ 64249 ........................................................................ 64250 ........................................................................ 64251 ........................................................................ 64252 ........................................................................ 64253 ........................................................................ 64254 ........................................................................ 64255 ........................................................................ 64256 ........................................................................ 64257 ........................................................................ 64258 ........................................................................ 64259 ........................................................................ 64260 ........................................................................ 64261 ........................................................................ 64262 ........................................................................ 64263 ........................................................................ 64264 ........................................................................ 64265 ........................................................................ 64266 ........................................................................ 64267 ........................................................................ 64268 ........................................................................ 64269 ........................................................................ 64270 ........................................................................ 64271 ........................................................................ 64272 ........................................................................ 64273 ........................................................................ 64274 ........................................................................ 64275 ........................................................................ 64276 ........................................................................ 64277 ........................................................................ 64278 ........................................................................ 64279 ........................................................................ 64280 ........................................................................ 64281 ........................................................................ 64282 ........................................................................ 64283 ........................................................................ 64284 ........................................................................ 64285 ........................................................................ 64286 ........................................................................ 64287 ........................................................................ 64288 ........................................................................ 64289 ........................................................................ 64290 ........................................................................ 64291 ........................................................................ 64292 ........................................................................ 64293 ........................................................................ 64294 ........................................................................ 64295 ........................................................................ 64296 ........................................................................ 64297 ........................................................................ 64298 ........................................................................ 64299 ........................................................................ 64300 ........................................................................ 64301 ........................................................................ 64302 ........................................................................ 64303 ........................................................................ 64304 ........................................................................ 64305 ........................................................................ 64306 ........................................................................ 64307 ........................................................................ 64308 ........................................................................ 64309 ........................................................................ 64310 ........................................................................ 64311 ........................................................................ 64312 ........................................................................ 64313 ........................................................................ 64314 ........................................................................ 64315 ........................................................................ 64316 ........................................................................ 64317 ........................................................................ 64318 ........................................................................ 64319 ........................................................................ 64320 ........................................................................ 64321 ........................................................................ 64322 ........................................................................ 64323 ........................................................................ 64324 ........................................................................ 64325 ........................................................................ 64326 ........................................................................ 64327 ........................................................................ 64328 ........................................................................ 64329 ........................................................................ 64330 ........................................................................ 64331 ........................................................................ 64332 ........................................................................ 64333 ........................................................................ 64334 ........................................................................ 64335 ........................................................................ 64336 ........................................................................ 64337 ........................................................................ 64338 ........................................................................ 64339 ........................................................................ 64340 ........................................................................ 64341 ........................................................................ 64342 ........................................................................ 64343 ........................................................................ 64344 ........................................................................ 64345 ........................................................................ 64346 ........................................................................ 64347 ........................................................................ 64348 ........................................................................ 64349 ........................................................................ 64350 ........................................................................ 64351 ........................................................................ 64352 ........................................................................ 64353 ........................................................................ 64354 ........................................................................ 64355 ........................................................................ 64356 ........................................................................ 64357 ........................................................................ 64358 ........................................................................ 64359 ........................................................................ 64360 ........................................................................ 64361 ........................................................................ 64362 ........................................................................ 64363 ........................................................................ 64364 ........................................................................ 64365 ........................................................................ 64366 ........................................................................ 64367 ........................................................................ 64368 ........................................................................ 64369 ........................................................................ 64370 ........................................................................ 64371 ........................................................................ 64372 ........................................................................ 64373 ........................................................................ 64374 ........................................................................ 64375 ........................................................................ 64376 ........................................................................ 64377 ........................................................................ 64378 ........................................................................ 64379 ........................................................................ 64380 ........................................................................ 64381 ........................................................................ 64382 ........................................................................ 64383 ........................................................................ 64384 ........................................................................ 64385 ........................................................................ 64386 ........................................................................ 64387 ........................................................................ 64388 ........................................................................ 64389 ........................................................................ 64390 ........................................................................ 64391 ........................................................................ 64392 ........................................................................ 64393 ........................................................................ 64394 ........................................................................ 64395 ........................................................................ 64396 ........................................................................ 64397 ........................................................................ 64398 ........................................................................ 64399 ........................................................................ 64400 ........................................................................ 64401 ........................................................................ 64402 ........................................................................ 64403 ........................................................................ 64404 ........................................................................ 64405 ........................................................................ 64406 ........................................................................ 64407 ........................................................................ 64408 ........................................................................ 64409 ........................................................................ 64410 ........................................................................ 64411 ........................................................................ 64412 ........................................................................ 64413 ........................................................................ 64414 ........................................................................ 64415 ........................................................................ 64416 ........................................................................ 64417 ........................................................................ 64418 ........................................................................ 64419 ........................................................................ 64420 ........................................................................ 64421 ........................................................................ 64422 ........................................................................ 64423 ........................................................................ 64424 ........................................................................ 64425 ........................................................................ 64426 ........................................................................ 64427 ........................................................................ 64428 ........................................................................ 64429 ........................................................................ 64430 ........................................................................ 64431 ........................................................................ 64432 ........................................................................ 64433 ........................................................................ 64434 ........................................................................ 64435 ........................................................................ 64436 ........................................................................ 64437 ........................................................................ 64438 ........................................................................ 64439 ........................................................................ 64440 ........................................................................ 64441 ........................................................................ 64442 ........................................................................ 64443 ........................................................................ 64444 ........................................................................ 64445 ........................................................................ 64446 ........................................................................ 64447 ........................................................................ 64448 ........................................................................ 64449 ........................................................................ 64450 ........................................................................ 64451 ........................................................................ 64452 ........................................................................ 64453 ........................................................................ 64454 ........................................................................ 64455 ........................................................................ 64456 ........................................................................ 64457 ........................................................................ 64458 ........................................................................ 64459 ........................................................................ 64460 ........................................................................ 64461 ........................................................................ 64462 ........................................................................ 64463 ........................................................................ 64464 ........................................................................ 64465 ........................................................................ 64466 ........................................................................ 64467 ........................................................................ 64468 ........................................................................ 64469 ........................................................................ 64470 ........................................................................ 64471 ........................................................................ 64472 ........................................................................ 64473 ........................................................................ 64474 ........................................................................ 64475 ........................................................................ 64476 ........................................................................ 64477 ........................................................................ 64478 ........................................................................ 64479 ........................................................................ 64480 ........................................................................ 64481 ........................................................................ 64482 ........................................................................ 64483 ........................................................................ 64484 ........................................................................ 64485 ........................................................................ 64486 ........................................................................ 64487 ........................................................................ 64488 ........................................................................ 64489 ........................................................................ 64490 ........................................................................ 64491 ........................................................................ 64492 ........................................................................ 64493 ........................................................................ 64494 ........................................................................ 64495 ........................................................................ 64496 ........................................................................ 64497 ........................................................................ 64498 ........................................................................ 64499 ........................................................................ 64500 ........................................................................ 64501 ........................................................................ 64502 ........................................................................ 64503 ........................................................................ 64504 ........................................................................ 64505 ........................................................................ 64506 ........................................................................ 64507 ........................................................................ 64508 ........................................................................ 64509 ........................................................................ 64510 ........................................................................ 64511 ........................................................................ 64512 ........................................................................ 64513 ........................................................................ 64514 ........................................................................ 64515 ........................................................................ 64516 ........................................................................ 64517 ........................................................................ 64518 ........................................................................ 64519 ........................................................................ 64520 ........................................................................ 64521 ........................................................................ 64522 ........................................................................ 64523 ........................................................................ 64524 ........................................................................ 64525 ........................................................................ 64526 ........................................................................ 64527 ........................................................................ 64528 ........................................................................ 64529 ........................................................................ 64530 ........................................................................ 64531 ........................................................................ 64532 ........................................................................ 64533 ........................................................................ 64534 ........................................................................ 64535 ........................................................................ 64536 ........................................................................ 64537 ........................................................................ 64538 ........................................................................ 64539 ........................................................................ 64540 ........................................................................ 64541 ........................................................................ 64542 ........................................................................ 64543 ........................................................................ 64544 ........................................................................ 64545 ........................................................................ 64546 ........................................................................ 64547 ........................................................................ 64548 ........................................................................ 64549 ........................................................................ 64550 ........................................................................ 64551 ........................................................................ 64552 ........................................................................ 64553 ........................................................................ 64554 ........................................................................ 64555 ........................................................................ 64556 ........................................................................ 64557 ........................................................................ 64558 ........................................................................ 64559 ........................................................................ 64560 ........................................................................ 64561 ........................................................................ 64562 ........................................................................ 64563 ........................................................................ 64564 ........................................................................ 64565 ........................................................................ 64566 ........................................................................ 64567 ........................................................................ 64568 ........................................................................ 64569 ........................................................................ 64570 ........................................................................ 64571 ........................................................................ 64572 ........................................................................ 64573 ........................................................................ 64574 ........................................................................ 64575 ........................................................................ 64576 ........................................................................ 64577 ........................................................................ 64578 ........................................................................ 64579 ........................................................................ 64580 ........................................................................ 64581 ........................................................................ 64582 ........................................................................ 64583 ........................................................................ 64584 ........................................................................ 64585 ........................................................................ 64586 ........................................................................ 64587 ........................................................................ 64588 ........................................................................ 64589 ........................................................................ 64590 ........................................................................ 64591 ........................................................................ 64592 ........................................................................ 64593 ........................................................................ 64594 ........................................................................ 64595 ........................................................................ 64596 ........................................................................ 64597 ........................................................................ 64598 ........................................................................ 64599 ........................................................................ 64600 ........................................................................ 64601 ........................................................................ 64602 ........................................................................ 64603 ........................................................................ 64604 ........................................................................ 64605 ........................................................................ 64606 ........................................................................ 64607 ........................................................................ 64608 ........................................................................ 64609 ........................................................................ 64610 ........................................................................ 64611 ........................................................................ 64612 ........................................................................ 64613 ........................................................................ 64614 ........................................................................ 64615 ........................................................................ 64616 ........................................................................ 64617 ........................................................................ 64618 ........................................................................ 64619 ........................................................................ 64620 ........................................................................ 64621 ........................................................................ 64622 ........................................................................ 64623 ........................................................................ 64624 ........................................................................ 64625 ........................................................................ 64626 ........................................................................ 64627 ........................................................................ 64628 ........................................................................ 64629 ........................................................................ 64630 ........................................................................ 64631 ........................................................................ 64632 ........................................................................ 64633 ........................................................................ 64634 ........................................................................ 64635 ........................................................................ 64636 ........................................................................ 64637 ........................................................................ 64638 ........................................................................ 64639 ........................................................................ 64640 ........................................................................ 64641 ........................................................................ 64642 ........................................................................ 64643 ........................................................................ 64644 ........................................................................ 64645 ........................................................................ 64646 ........................................................................ 64647 ........................................................................ 64648 ........................................................................ 64649 ........................................................................ 64650 ........................................................................ 64651 ........................................................................ 64652 ........................................................................ 64653 ........................................................................ 64654 ........................................................................ 64655 ........................................................................ 64656 ........................................................................ 64657 ........................................................................ 64658 ........................................................................ 64659 ........................................................................ 64660 ........................................................................ 64661 ........................................................................ 64662 ........................................................................ 64663 ........................................................................ 64664 ........................................................................ 64665 ........................................................................ 64666 ........................................................................ 64667 ........................................................................ 64668 ........................................................................ 64669 ........................................................................ 64670 ........................................................................ 64671 ........................................................................ 64672 ........................................................................ 64673 ........................................................................ 64674 ........................................................................ 64675 ........................................................................ 64676 ........................................................................ 64677 ........................................................................ 64678 ........................................................................ 64679 ........................................................................ 64680 ........................................................................ 64681 ........................................................................ 64682 ........................................................................ 64683 ........................................................................ 64684 ........................................................................ 64685 ........................................................................ 64686 ........................................................................ 64687 ........................................................................ 64688 ........................................................................ 64689 ........................................................................ 64690 ........................................................................ 64691 ........................................................................ 64692 ........................................................................ 64693 ........................................................................ 64694 ........................................................................ 64695 ........................................................................ 64696 ........................................................................ 64697 ........................................................................ 64698 ........................................................................ 64699 ........................................................................ 64700 ........................................................................ 64701 ........................................................................ 64702 ........................................................................ 64703 ........................................................................ 64704 ........................................................................ 64705 ........................................................................ 64706 ........................................................................ 64707 ........................................................................ 64708 ........................................................................ 64709 ........................................................................ 64710 ........................................................................ 64711 ........................................................................ 64712 ........................................................................ 64713 ........................................................................ 64714 ........................................................................ 64715 ........................................................................ 64716 ........................................................................ 64717 ........................................................................ 64718 ........................................................................ 64719 ........................................................................ 64720 ........................................................................ 64721 ........................................................................ 64722 ........................................................................ 64723 ........................................................................ 64724 ........................................................................ 64725 ........................................................................ 64726 ........................................................................ 64727 ........................................................................ 64728 ........................................................................ 64729 ........................................................................ 64730 ........................................................................ 64731 ........................................................................ 64732 ........................................................................ 64733 ........................................................................ 64734 ........................................................................ 64735 ........................................................................ 64736 ........................................................................ 64737 ........................................................................ 64738 ........................................................................ 64739 ........................................................................ 64740 ........................................................................ 64741 ........................................................................ 64742 ........................................................................ 64743 ........................................................................ 64744 ........................................................................ 64745 ........................................................................ 64746 ........................................................................ 64747 ........................................................................ 64748 ........................................................................ 64749 ........................................................................ 64750 ........................................................................ 64751 ........................................................................ 64752 ........................................................................ 64753 ........................................................................ 64754 ........................................................................ 64755 ........................................................................ 64756 ........................................................................ 64757 ........................................................................ 64758 ........................................................................ 64759 ........................................................................ 64760 ........................................................................ 64761 ........................................................................ 64762 ........................................................................ 64763 ........................................................................ 64764 ........................................................................ 64765 ........................................................................ 64766 ........................................................................ 64767 ........................................................................ 64768 ........................................................................ 64769 ........................................................................ 64770 ........................................................................ 64771 ........................................................................ 64772 ........................................................................ 64773 ........................................................................ 64774 ........................................................................ 64775 ........................................................................ 64776 ........................................................................ 64777 ........................................................................ 64778 ........................................................................ 64779 ........................................................................ 64780 ........................................................................ 64781 ........................................................................ 64782 ........................................................................ 64783 ........................................................................ 64784 ........................................................................ 64785 ........................................................................ 64786 ........................................................................ 64787 ........................................................................ 64788 ........................................................................ 64789 ........................................................................ 64790 ........................................................................ 64791 ........................................................................ 64792 ........................................................................ 64793 ........................................................................ 64794 ........................................................................ 64795 ........................................................................ 64796 ........................................................................ 64797 ........................................................................ 64798 ........................................................................ 64799 ........................................................................ 64800 ........................................................................ 64801 ........................................................................ 64802 ........................................................................ 64803 ........................................................................ 64804 ........................................................................ 64805 ........................................................................ 64806 ........................................................................ 64807 ........................................................................ 64808 ........................................................................ 64809 ........................................................................ 64810 ........................................................................ 64811 ........................................................................ 64812 ........................................................................ 64813 ........................................................................ 64814 ........................................................................ 64815 ........................................................................ 64816 ........................................................................ 64817 ........................................................................ 64818 ........................................................................ 64819 ........................................................................ 64820 ........................................................................ 64821 ........................................................................ 64822 ........................................................................ 64823 ........................................................................ 64824 ........................................................................ 64825 ........................................................................ 64826 ........................................................................ 64827 ........................................................................ 64828 ........................................................................ 64829 ........................................................................ 64830 ........................................................................ 64831 ........................................................................ 64832 ........................................................................ 64833 ........................................................................ 64834 ........................................................................ 64835 ........................................................................ 64836 ........................................................................ 64837 ........................................................................ 64838 ........................................................................ 64839 ........................................................................ 64840 ........................................................................ 64841 ........................................................................ 64842 ........................................................................ 64843 ........................................................................ 64844 ........................................................................ 64845 ........................................................................ 64846 ........................................................................ 64847 ........................................................................ 64848 ........................................................................ 64849 ........................................................................ 64850 ........................................................................ 64851 ........................................................................ 64852 ........................................................................ 64853 ........................................................................ 64854 ........................................................................ 64855 ........................................................................ 64856 ........................................................................ 64857 ........................................................................ 64858 ........................................................................ 64859 ........................................................................ 64860 ........................................................................ 64861 ........................................................................ 64862 ........................................................................ 64863 ........................................................................ 64864 ........................................................................ 64865 ........................................................................ 64866 ........................................................................ 64867 ........................................................................ 64868 ........................................................................ 64869 ........................................................................ 64870 ........................................................................ 64871 ........................................................................ 64872 ........................................................................ 64873 ........................................................................ 64874 ........................................................................ 64875 ........................................................................ 64876 ........................................................................ 64877 ........................................................................ 64878 ........................................................................ 64879 ........................................................................ 64880 ........................................................................ 64881 ........................................................................ 64882 ........................................................................ 64883 ........................................................................ 64884 ........................................................................ 64885 ........................................................................ 64886 ........................................................................ 64887 ........................................................................ 64888 ........................................................................ 64889 ........................................................................ 64890 ........................................................................ 64891 ........................................................................ 64892 ........................................................................ 64893 ........................................................................ 64894 ........................................................................ 64895 ........................................................................ 64896 ........................................................................ 64897 ........................................................................ 64898 ........................................................................ 64899 ........................................................................ 64900 ........................................................................ 64901 ........................................................................ 64902 ........................................................................ 64903 ........................................................................ 64904 ........................................................................ 64905 ........................................................................ 64906 ........................................................................ 64907 ........................................................................ 64908 ........................................................................ 64909 ........................................................................ 64910 ........................................................................ 64911 ........................................................................ 64912 ........................................................................ 64913 ........................................................................ 64914 ........................................................................ 64915 ........................................................................ 64916 ........................................................................ 64917 ........................................................................ 64918 ........................................................................ 64919 ........................................................................ 64920 ........................................................................ 64921 ........................................................................ 64922 ........................................................................ 64923 ........................................................................ 64924 ........................................................................ 64925 ........................................................................ 64926 ........................................................................ 64927 ........................................................................ 64928 ........................................................................ 64929 ........................................................................ 64930 ........................................................................ 64931 ........................................................................ 64932 ........................................................................ 64933 ........................................................................ 64934 ........................................................................ 64935 ........................................................................ 64936 ........................................................................ 64937 ........................................................................ 64938 ........................................................................ 64939 ........................................................................ 64940 ........................................................................ 64941 ........................................................................ 64942 ........................................................................ 64943 ........................................................................ 64944 ........................................................................ 64945 ........................................................................ 64946 ........................................................................ 64947 ........................................................................ 64948 ........................................................................ 64949 ........................................................................ 64950 ........................................................................ 64951 ........................................................................ 64952 ........................................................................ 64953 ........................................................................ 64954 ........................................................................ 64955 ........................................................................ 64956 ........................................................................ 64957 ........................................................................ 64958 ........................................................................ 64959 ........................................................................ 64960 ........................................................................ 64961 ........................................................................ 64962 ........................................................................ 64963 ........................................................................ 64964 ........................................................................ 64965 ........................................................................ 64966 ........................................................................ 64967 ........................................................................ 64968 ........................................................................ 64969 ........................................................................ 64970 ........................................................................ 64971 ........................................................................ 64972 ........................................................................ 64973 ........................................................................ 64974 ........................................................................ 64975 ........................................................................ 64976 ........................................................................ 64977 ........................................................................ 64978 ........................................................................ 64979 ........................................................................ 64980 ........................................................................ 64981 ........................................................................ 64982 ........................................................................ 64983 ........................................................................ 64984 ........................................................................ 64985 ........................................................................ 64986 ........................................................................ 64987 ........................................................................ 64988 ........................................................................ 64989 ........................................................................ 64990 ........................................................................ 64991 ........................................................................ 64992 ........................................................................ 64993 ........................................................................ 64994 ........................................................................ 64995 ........................................................................ 64996 ........................................................................ 64997 ........................................................................ 64998 ........................................................................ 64999 ........................................................................ 65000 ........................................................................ 65001 ........................................................................ 65002 ........................................................................ 65003 ........................................................................ 65004 ........................................................................ 65005 ........................................................................ 65006 ........................................................................ 65007 ........................................................................ 65008 ........................................................................ 65009 ........................................................................ 65010 ........................................................................ 65011 ........................................................................ 65012 ........................................................................ 65013 ........................................................................ 65014 ........................................................................ 65015 ........................................................................ 65016 ........................................................................ 65017 ........................................................................ 65018 ........................................................................ 65019 ........................................................................ 65020 ........................................................................ 65021 ........................................................................ 65022 ........................................................................ 65023 ........................................................................ 65024 ........................................................................ 65025 ........................................................................ 65026 ........................................................................ 65027 ........................................................................ 65028 ........................................................................ 65029 ........................................................................ 65030 ........................................................................ 65031 ........................................................................ 65032 ........................................................................ 65033 ........................................................................ 65034 ........................................................................ 65035 ........................................................................ 65036 ........................................................................ 65037 ........................................................................ 65038 ........................................................................ 65039 ........................................................................ 65040 ........................................................................ 65041 ........................................................................ 65042 ........................................................................ 65043 ........................................................................ 65044 ........................................................................ 65045 ........................................................................ 65046 ........................................................................ 65047 ........................................................................ 65048 ........................................................................ 65049 ........................................................................ 65050 ........................................................................ 65051 ........................................................................ 65052 ........................................................................ 65053 ........................................................................ 65054 ........................................................................ 65055 ........................................................................ 65056 ........................................................................ 65057 ........................................................................ 65058 ........................................................................ 65059 ........................................................................ 65060 ........................................................................ 65061 ........................................................................ 65062 ........................................................................ 65063 ........................................................................ 65064 ........................................................................ 65065 ........................................................................ 65066 ........................................................................ 65067 ........................................................................ 65068 ........................................................................ 65069 ........................................................................ 65070 ........................................................................ 65071 ........................................................................ 65072 ........................................................................ 65073 ........................................................................ 65074 ........................................................................ 65075 ........................................................................ 65076 ........................................................................ 65077 ........................................................................ 65078 ........................................................................ 65079 ........................................................................ 65080 ........................................................................ 65081 ........................................................................ 65082 ........................................................................ 65083 ........................................................................ 65084 ........................................................................ 65085 ........................................................................ 65086 ........................................................................ 65087 ........................................................................ 65088 ........................................................................ 65089 ........................................................................ 65090 ........................................................................ 65091 ........................................................................ 65092 ........................................................................ 65093 ........................................................................ 65094 ........................................................................ 65095 ........................................................................ 65096 ........................................................................ 65097 ........................................................................ 65098 ........................................................................ 65099 ........................................................................ 65100 ........................................................................ 65101 ........................................................................ 65102 ........................................................................ 65103 ........................................................................ 65104 ........................................................................ 65105 ........................................................................ 65106 ........................................................................ 65107 ........................................................................ 65108 ........................................................................ 65109 ........................................................................ 65110 ........................................................................ 65111 ........................................................................ 65112 ........................................................................ 65113 ........................................................................ 65114 ........................................................................ 65115 ........................................................................ 65116 ........................................................................ 65117 ........................................................................ 65118 ........................................................................ 65119 ........................................................................ 65120 ........................................................................ 65121 ........................................................................ 65122 ........................................................................ 65123 ........................................................................ 65124 ........................................................................ 65125 ........................................................................ 65126 ........................................................................ 65127 ........................................................................ 65128 ........................................................................ 65129 ........................................................................ 65130 ........................................................................ 65131 ........................................................................ 65132 ........................................................................ 65133 ........................................................................ 65134 ........................................................................ 65135 ........................................................................ 65136 ........................................................................ 65137 ........................................................................ 65138 ........................................................................ 65139 ........................................................................ 65140 ........................................................................ 65141 ........................................................................ 65142 ........................................................................ 65143 ........................................................................ 65144 ........................................................................ 65145 ........................................................................ 65146 ........................................................................ 65147 ........................................................................ 65148 ........................................................................ 65149 ........................................................................ 65150 ........................................................................ 65151 ........................................................................ 65152 ........................................................................ 65153 ........................................................................ 65154 ........................................................................ 65155 ........................................................................ 65156 ........................................................................ 65157 ........................................................................ 65158 ........................................................................ 65159 ........................................................................ 65160 ........................................................................ 65161 ........................................................................ 65162 ........................................................................ 65163 ........................................................................ 65164 ........................................................................ 65165 ........................................................................ 65166 ........................................................................ 65167 ........................................................................ 65168 ........................................................................ 65169 ........................................................................ 65170 ........................................................................ 65171 ........................................................................ 65172 ........................................................................ 65173 ........................................................................ 65174 ........................................................................ 65175 ........................................................................ 65176 ........................................................................ 65177 ........................................................................ 65178 ........................................................................ 65179 ........................................................................ 65180 ........................................................................ 65181 ........................................................................ 65182 ........................................................................ 65183 ........................................................................ 65184 ........................................................................ 65185 ........................................................................ 65186 ........................................................................ 65187 ........................................................................ 65188 ........................................................................ 65189 ........................................................................ 65190 ........................................................................ 65191 ........................................................................ 65192 ........................................................................ 65193 ........................................................................ 65194 ........................................................................ 65195 ........................................................................ 65196 ........................................................................ 65197 ........................................................................ 65198 ........................................................................ 65199 ........................................................................ 65200 ........................................................................ 65201 ........................................................................ 65202 ........................................................................ 65203 ........................................................................ 65204 ........................................................................ 65205 ........................................................................ 65206 ........................................................................ 65207 ........................................................................ 65208 ........................................................................ 65209 ........................................................................ 65210 ........................................................................ 65211 ........................................................................ 65212 ........................................................................ 65213 ........................................................................ 65214 ........................................................................ 65215 ........................................................................ 65216 ........................................................................ 65217 ........................................................................ 65218 ........................................................................ 65219 ........................................................................ 65220 ........................................................................ 65221 ........................................................................ 65222 ........................................................................ 65223 ........................................................................ 65224 ........................................................................ 65225 ........................................................................ 65226 ........................................................................ 65227 ........................................................................ 65228 ........................................................................ 65229 ........................................................................ 65230 ........................................................................ 65231 ........................................................................ 65232 ........................................................................ 65233 ........................................................................ 65234 ........................................................................ 65235 ........................................................................ 65236 ........................................................................ 65237 ........................................................................ 65238 ........................................................................ 65239 ........................................................................ 65240 ........................................................................ 65241 ........................................................................ 65242 ........................................................................ 65243 ........................................................................ 65244 ........................................................................ 65245 ........................................................................ 65246 ........................................................................ 65247 ........................................................................ 65248 ........................................................................ 65249 ........................................................................ 65250 ........................................................................ 65251 ........................................................................ 65252 ........................................................................ 65253 ........................................................................ 65254 ........................................................................ 65255 ........................................................................ 65256 ........................................................................ 65257 ........................................................................ 65258 ........................................................................ 65259 ........................................................................ 65260 ........................................................................ 65261 ........................................................................ 65262 ........................................................................ 65263 ........................................................................ 65264 ........................................................................ 65265 ........................................................................ 65266 ........................................................................ 65267 ........................................................................ 65268 ........................................................................ 65269 ........................................................................ 65270 ........................................................................ 65271 ........................................................................ 65272 ........................................................................ 65273 ........................................................................ 65274 ........................................................................ 65275 ........................................................................ 65276 ........................................................................ 65277 ........................................................................ 65278 ........................................................................ 65279 ........................................................................ 65280 ........................................................................ 65281 ........................................................................ 65282 ........................................................................ 65283 ........................................................................ 65284 ........................................................................ 65285 ........................................................................ 65286 ........................................................................ 65287 ........................................................................ 65288 ........................................................................ 65289 ........................................................................ 65290 ........................................................................ 65291 ........................................................................ 65292 ........................................................................ 65293 ........................................................................ 65294 ........................................................................ 65295 ........................................................................ 65296 ........................................................................ 65297 ........................................................................ 65298 ........................................................................ 65299 ........................................................................ 65300 ........................................................................ 65301 ........................................................................ 65302 ........................................................................ 65303 ........................................................................ 65304 ........................................................................ 65305 ........................................................................ 65306 ........................................................................ 65307 ........................................................................ 65308 ........................................................................ 65309 ........................................................................ 65310 ........................................................................ 65311 ........................................................................ 65312 ........................................................................ 65313 ........................................................................ 65314 ........................................................................ 65315 ........................................................................ 65316 ........................................................................ 65317 ........................................................................ 65318 ........................................................................ 65319 ........................................................................ 65320 ........................................................................ 65321 ........................................................................ 65322 ........................................................................ 65323 ........................................................................ 65324 ........................................................................ 65325 ........................................................................ 65326 ........................................................................ 65327 ........................................................................ 65328 ........................................................................ 65329 ........................................................................ 65330 ........................................................................ 65331 ........................................................................ 65332 ........................................................................ 65333 ........................................................................ 65334 ........................................................................ 65335 ........................................................................ 65336 ........................................................................ 65337 ........................................................................ 65338 ........................................................................ 65339 ........................................................................ 65340 ........................................................................ 65341 ........................................................................ 65342 ........................................................................ 65343 ........................................................................ 65344 ........................................................................ 65345 ........................................................................ 65346 ........................................................................ 65347 ........................................................................ 65348 ........................................................................ 65349 ........................................................................ 65350 ........................................................................ 65351 ........................................................................ 65352 ........................................................................ 65353 ........................................................................ 65354 ........................................................................ 65355 ........................................................................ 65356 ........................................................................ 65357 ........................................................................ 65358 ........................................................................ 65359 ........................................................................ 65360 ........................................................................ 65361 ........................................................................ 65362 ........................................................................ 65363 ........................................................................ 65364 ........................................................................ 65365 ........................................................................ 65366 ........................................................................ 65367 ........................................................................ 65368 ........................................................................ 65369 ........................................................................ 65370 ........................................................................ 65371 ........................................................................ 65372 ........................................................................ 65373 ........................................................................ 65374 ........................................................................ 65375 ........................................................................ 65376 ........................................................................ 65377 ........................................................................ 65378 ........................................................................ 65379 ........................................................................ 65380 ........................................................................ 65381 ........................................................................ 65382 ........................................................................ 65383 ........................................................................ 65384 ........................................................................ 65385 ........................................................................ 65386 ........................................................................ 65387 ........................................................................ 65388 ........................................................................ 65389 ........................................................................ 65390 ........................................................................ 65391 ........................................................................ 65392 ........................................................................ 65393 ........................................................................ 65394 ........................................................................ 65395 ........................................................................ 65396 ........................................................................ 65397 ........................................................................ 65398 ........................................................................ 65399 ........................................................................ 65400 ........................................................................ 65401 ........................................................................ 65402 ........................................................................ 65403 ........................................................................ 65404 ........................................................................ 65405 ........................................................................ 65406 ........................................................................ 65407 ........................................................................ 65408 ........................................................................ 65409 ........................................................................ 65410 ........................................................................ 65411 ........................................................................ 65412 ........................................................................ 65413 ........................................................................ 65414 ........................................................................ 65415 ........................................................................ 65416 ........................................................................ 65417 ........................................................................ 65418 ........................................................................ 65419 ........................................................................ 65420 ........................................................................ 65421 ........................................................................ 65422 ........................................................................ 65423 ........................................................................ 65424 ........................................................................ 65425 ........................................................................ 65426 ........................................................................ 65427 ........................................................................ 65428 ........................................................................ 65429 ........................................................................ 65430 ........................................................................ 65431 ........................................................................ 65432 ........................................................................ 65433 ........................................................................ 65434 ........................................................................ 65435 ........................................................................ 65436 ........................................................................ 65437 ........................................................................ 65438 ........................................................................ 65439 ........................................................................ 65440 ........................................................................ 65441 ........................................................................ 65442 ........................................................................ 65443 ........................................................................ 65444 ........................................................................ 65445 ........................................................................ 65446 ........................................................................ 65447 ........................................................................ 65448 ........................................................................ 65449 ........................................................................ 65450 ........................................................................ 65451 ........................................................................ 65452 ........................................................................ 65453 ........................................................................ 65454 ........................................................................ 65455 ........................................................................ 65456 ........................................................................ 65457 ........................................................................ 65458 ........................................................................ 65459 ........................................................................ 65460 ........................................................................ 65461 ........................................................................ 65462 ........................................................................ 65463 ........................................................................ 65464 ........................................................................ 65465 ........................................................................ 65466 ........................................................................ 65467 ........................................................................ 65468 ........................................................................ 65469 ........................................................................ 65470 ........................................................................ 65471 ........................................................................ 65472 ........................................................................ 65473 ........................................................................ 65474 ........................................................................ 65475 ........................................................................ 65476 ........................................................................ 65477 ........................................................................ 65478 ........................................................................ 65479 ........................................................................ 65480 ........................................................................ 65481 ........................................................................ 65482 ........................................................................ 65483 ........................................................................ 65484 ........................................................................ 65485 ........................................................................ 65486 ........................................................................ 65487 ........................................................................ 65488 ........................................................................ 65489 ........................................................................ 65490 ........................................................................ 65491 ........................................................................ 65492 ........................................................................ 65493 ........................................................................ 65494 ........................................................................ 65495 ........................................................................ 65496 ........................................................................ 65497 ........................................................................ 65498 ........................................................................ 65499 ........................................................................ 65500 ........................................................................ 65501 ........................................................................ 65502 ........................................................................ 65503 ........................................................................ 65504 ........................................................................ 65505 ........................................................................ 65506 ........................................................................ 65507 ........................................................................ 65508 ........................................................................ 65509 ........................................................................ 65510 ........................................................................ 65511 ........................................................................ 65512 ........................................................................ 65513 ........................................................................ 65514 ........................................................................ 65515 ........................................................................ 65516 ........................................................................ 65517 ........................................................................ 65518 ........................................................................ 65519 ........................................................................ 65520 ........................................................................ 65521 ........................................................................ 65522 ........................................................................ 65523 ........................................................................ 65524 ........................................................................ 65525 ........................................................................ 65526 ........................................................................ 65527 ........................................................................ 65528 ........................................................................ 65529 ........................................................................ 65530 ........................................................................ 65531 ........................................................................ 65532 ........................................................................ 65533 ........................................................................ 65534 ........................................................................ 65535 ........................................................................ 65536 ........................................................................ 65537 ........................................................................ 65538 ........................................................................ 65539 ........................................................................ 65540 ........................................................................ 65541 ........................................................................ 65542 ........................................................................ 65543 ........................................................................ 65544 ........................................................................ 65545 ........................................................................ 65546 ........................................................................ 65547 ........................................................................ 65548 ........................................................................ 65549 ........................................................................ 65550 ........................................................................ 65551 ........................................................................ 65552 ........................................................................ 65553 ........................................................................ 65554 ........................................................................ 65555 ........................................................................ 65556 ........................................................................ 65557 ........................................................................ 65558 ........................................................................ 65559 ........................................................................ 65560 ........................................................................ 65561 ........................................................................ 65562 ........................................................................ 65563 ........................................................................ 65564 ........................................................................ 65565 ........................................................................ 65566 ........................................................................ 65567 ........................................................................ 65568 ........................................................................ 65569 ........................................................................ 65570 ........................................................................ 65571 ........................................................................ 65572 ........................................................................ 65573 ........................................................................ 65574 ........................................................................ 65575 ........................................................................ 65576 ........................................................................ 65577 ........................................................................ 65578 ........................................................................ 65579 ........................................................................ 65580 ........................................................................ 65581 ........................................................................ 65582 ........................................................................ 65583 ........................................................................ 65584 ........................................................................ 65585 ........................................................................ 65586 ........................................................................ 65587 ........................................................................ 65588 ........................................................................ 65589 ........................................................................ 65590 ........................................................................ 65591 ........................................................................ 65592 ........................................................................ 65593 ........................................................................ 65594 ........................................................................ 65595 ........................................................................ 65596 ........................................................................ 65597 ........................................................................ 65598 ........................................................................ 65599 ........................................................................ 65600 ........................................................................ 65601 ........................................................................ 65602 ........................................................................ 65603 ........................................................................ 65604 ........................................................................ 65605 ........................................................................ 65606 ........................................................................ 65607 ........................................................................ 65608 ........................................................................ 65609 ........................................................................ 65610 ........................................................................ 65611 ........................................................................ 65612 ........................................................................ 65613 ........................................................................ 65614 ........................................................................ 65615 ........................................................................ 65616 ........................................................................ 65617 ........................................................................ 65618 ........................................................................ 65619 ........................................................................ 65620 ........................................................................ 65621 ........................................................................ 65622 ........................................................................ 65623 ........................................................................ 65624 ........................................................................ 65625 ........................................................................ 65626 ........................................................................ 65627 ........................................................................ 65628 ........................................................................ 65629 ........................................................................ 65630 ........................................................................ 65631 ........................................................................ 65632 ........................................................................ 65633 ........................................................................ 65634 ........................................................................ 65635 ........................................................................ 65636 ........................................................................ 65637 ........................................................................ 65638 ........................................................................ 65639 ........................................................................ 65640 ........................................................................ 65641 ........................................................................ 65642 ........................................................................ 65643 ........................................................................ 65644 ........................................................................ 65645 ........................................................................ 65646 ........................................................................ 65647 ........................................................................ 65648 ........................................................................ 65649 ........................................................................ 65650 ........................................................................ 65651 ........................................................................ 65652 ........................................................................ 65653 ........................................................................ 65654 ........................................................................ 65655 ........................................................................ 65656 ........................................................................ 65657 ........................................................................ 65658 ........................................................................ 65659 ........................................................................ 65660 ........................................................................ 65661 ........................................................................ 65662 ........................................................................ 65663 ........................................................................ 65664 ........................................................................ 65665 ........................................................................ 65666 ........................................................................ 65667 ........................................................................ 65668 ........................................................................ 65669 ........................................................................ 65670 ........................................................................ 65671 ........................................................................ 65672 ........................................................................ 65673 ........................................................................ 65674 ........................................................................ 65675 ........................................................................ 65676 ........................................................................ 65677 ........................................................................ 65678 ........................................................................ 65679 ........................................................................ 65680 ........................................................................ 65681 ........................................................................ 65682 ........................................................................ 65683 ........................................................................ 65684 ........................................................................ 65685 ........................................................................ 65686 ........................................................................ 65687 ........................................................................ 65688 ........................................................................ 65689 ........................................................................ 65690 ........................................................................ 65691 ........................................................................ 65692 ........................................................................ 65693 ........................................................................ 65694 ........................................................................ 65695 ........................................................................ 65696 ........................................................................ 65697 ........................................................................ 65698 ........................................................................ 65699 ........................................................................ 65700 ........................................................................ 65701 ........................................................................ 65702 ........................................................................ 65703 ........................................................................ 65704 ........................................................................ 65705 ........................................................................ 65706 ........................................................................ 65707 ........................................................................ 65708 ........................................................................ 65709 ........................................................................ 65710 ........................................................................ 65711 ........................................................................ 65712 ........................................................................ 65713 ........................................................................ 65714 ........................................................................ 65715 ........................................................................ 65716 ........................................................................ 65717 ........................................................................ 65718 ........................................................................ 65719 ........................................................................ 65720 ........................................................................ 65721 ........................................................................ 65722 ........................................................................ 65723 ........................................................................ 65724 ........................................................................ 65725 ........................................................................ 65726 ........................................................................ 65727 ........................................................................ 65728 ........................................................................ 65729 ........................................................................ 65730 ........................................................................ 65731 ........................................................................ 65732 ........................................................................ 65733 ........................................................................ 65734 ........................................................................ 65735 ........................................................................ 65736 ........................................................................ 65737 ........................................................................ 65738 ........................................................................ 65739 ........................................................................ 65740 ........................................................................ 65741 ........................................................................ 65742 ........................................................................ 65743 ........................................................................ 65744 ........................................................................ 65745 ........................................................................ 65746 ........................................................................ 65747 ........................................................................ 65748 ........................................................................ 65749 ........................................................................ 65750 ........................................................................ 65751 ........................................................................ 65752 ........................................................................ 65753 ........................................................................ 65754 ........................................................................ 65755 ........................................................................ 65756 ........................................................................ 65757 ........................................................................ 65758 ........................................................................ 65759 ........................................................................ 65760 ........................................................................ 65761 ........................................................................ 65762 ........................................................................ 65763 ........................................................................ 65764 ........................................................................ 65765 ........................................................................ 65766 ........................................................................ 65767 ........................................................................ 65768 ........................................................................ 65769 ........................................................................ 65770 ........................................................................ 65771 ........................................................................ 65772 ........................................................................ 65773 ........................................................................ 65774 ........................................................................ 65775 ........................................................................ 65776 ........................................................................ 65777 ........................................................................ 65778 ........................................................................ 65779 ........................................................................ 65780 ........................................................................ 65781 ........................................................................ 65782 ........................................................................ 65783 ........................................................................ 65784 ........................................................................ 65785 ........................................................................ 65786 ........................................................................ 65787 ........................................................................ 65788 ........................................................................ 65789 ........................................................................ 65790 ........................................................................ 65791 ........................................................................ 65792 ........................................................................ 65793 ........................................................................ 65794 ........................................................................ 65795 ........................................................................ 65796 ........................................................................ 65797 ........................................................................ 65798 ........................................................................ 65799 ........................................................................ 65800 ........................................................................ 65801 ........................................................................ 65802 ........................................................................ 65803 ........................................................................ 65804 ........................................................................ 65805 ........................................................................ 65806 ........................................................................ 65807 ........................................................................ 65808 ........................................................................ 65809 ........................................................................ 65810 ........................................................................ 65811 ........................................................................ 65812 ........................................................................ 65813 ........................................................................ 65814 ........................................................................ 65815 ........................................................................ 65816 ........................................................................ 65817 ........................................................................ 65818 ........................................................................ 65819 ........................................................................ 65820 ........................................................................ 65821 ........................................................................ 65822 ........................................................................ 65823 ........................................................................ 65824 ........................................................................ 65825 ........................................................................ 65826 ........................................................................ 65827 ........................................................................ 65828 ........................................................................ 65829 ........................................................................ 65830 ........................................................................ 65831 ........................................................................ 65832 ........................................................................ 65833 ........................................................................ 65834 ........................................................................ 65835 ........................................................................ 65836 ........................................................................ 65837 ........................................................................ 65838 ........................................................................ 65839 ........................................................................ 65840 ........................................................................ 65841 ........................................................................ 65842 ........................................................................ 65843 ........................................................................ 65844 ........................................................................ 65845 ........................................................................ 65846 ........................................................................ 65847 ........................................................................ 65848 ........................................................................ 65849 ........................................................................ 65850 ........................................................................ 65851 ........................................................................ 65852 ........................................................................ 65853 ........................................................................ 65854 ........................................................................ 65855 ........................................................................ 65856 ........................................................................ 65857 ........................................................................ 65858 ........................................................................ 65859 ........................................................................ 65860 ........................................................................ 65861 ........................................................................ 65862 ........................................................................ 65863 ........................................................................ 65864 ........................................................................ 65865 ........................................................................ 65866 ........................................................................ 65867 ........................................................................ 65868 ........................................................................ 65869 ........................................................................ 65870 ........................................................................ 65871 ........................................................................ 65872 ........................................................................ 65873 ........................................................................ 65874 ........................................................................ 65875 ........................................................................ 65876 ........................................................................ 65877 ........................................................................ 65878 ........................................................................ 65879 ........................................................................ 65880 ........................................................................ 65881 ........................................................................ 65882 ........................................................................ 65883 ........................................................................ 65884 ........................................................................ 65885 ........................................................................ 65886 ........................................................................ 65887 ........................................................................ 65888 ........................................................................ 65889 ........................................................................ 65890 ........................................................................ 65891 ........................................................................ 65892 ........................................................................ 65893 ........................................................................ 65894 ........................................................................ 65895 ........................................................................ 65896 ........................................................................ 65897 ........................................................................ 65898 ........................................................................ 65899 ........................................................................ 65900 ........................................................................ 65901 ........................................................................ 65902 ........................................................................ 65903 ........................................................................ 65904 ........................................................................ 65905 ........................................................................ 65906 ........................................................................ 65907 ........................................................................ 65908 ........................................................................ 65909 ........................................................................ 65910 ........................................................................ 65911 ........................................................................ 65912 ........................................................................ 65913 ........................................................................ 65914 ........................................................................ 65915 ........................................................................ 65916 ........................................................................ 65917 ........................................................................ 65918 ........................................................................ 65919 ........................................................................ 65920 ........................................................................ 65921 ........................................................................ 65922 ........................................................................ 65923 ........................................................................ 65924 ........................................................................ 65925 ........................................................................ 65926 ........................................................................ 65927 ........................................................................ 65928 ........................................................................ 65929 ........................................................................ 65930 ........................................................................ 65931 ........................................................................ 65932 ........................................................................ 65933 ........................................................................ 65934 ........................................................................ 65935 ........................................................................ 65936 ........................................................................ 65937 ........................................................................ 65938 ........................................................................ 65939 ........................................................................ 65940 ........................................................................ 65941 ........................................................................ 65942 ........................................................................ 65943 ........................................................................ 65944 ........................................................................ 65945 ........................................................................ 65946 ........................................................................ 65947 ........................................................................ 65948 ........................................................................ 65949 ........................................................................ 65950 ........................................................................ 65951 ........................................................................ 65952 ........................................................................ 65953 ........................................................................ 65954 ........................................................................ 65955 ........................................................................ 65956 ........................................................................ 65957 ........................................................................ 65958 ........................................................................ 65959 ........................................................................ 65960 ........................................................................ 65961 ........................................................................ 65962 ........................................................................ 65963 ........................................................................ 65964 ........................................................................ 65965 ........................................................................ 65966 ........................................................................ 65967 ........................................................................ 65968 ........................................................................ 65969 ........................................................................ 65970 ........................................................................ 65971 ........................................................................ 65972 ........................................................................ 65973 ........................................................................ 65974 ........................................................................ 65975 ........................................................................ 65976 ........................................................................ 65977 ........................................................................ 65978 ........................................................................ 65979 ........................................................................ 65980 ........................................................................ 65981 ........................................................................ 65982 ........................................................................ 65983 ........................................................................ 65984 ........................................................................ 65985 ........................................................................ 65986 ........................................................................ 65987 ........................................................................ 65988 ........................................................................ 65989 ........................................................................ 65990 ........................................................................ 65991 ........................................................................ 65992 ........................................................................ 65993 ........................................................................ 65994 ........................................................................ 65995 ........................................................................ 65996 ........................................................................ 65997 ........................................................................ 65998 ........................................................................ 65999 ........................................................................ 66000 ........................................................................ 66001 ........................................................................ 66002 ........................................................................ 66003 ........................................................................ 66004 ........................................................................ 66005 ........................................................................ 66006 ........................................................................ 66007 ........................................................................ 66008 ........................................................................ 66009 ........................................................................ 66010 ........................................................................ 66011 ........................................................................ 66012 ........................................................................ 66013 ........................................................................ 66014 ........................................................................ 66015 ........................................................................ 66016 ........................................................................ 66017 ........................................................................ 66018 ........................................................................ 66019 ........................................................................ 66020 ........................................................................ 66021 ........................................................................ 66022 ........................................................................ 66023 ........................................................................ 66024 ........................................................................ 66025 ........................................................................ 66026 ........................................................................ 66027 ........................................................................ 66028 ........................................................................ 66029 ........................................................................ 66030 ........................................................................ 66031 ........................................................................ 66032 ........................................................................ 66033 ........................................................................ 66034 ........................................................................ 66035 ........................................................................ 66036 ........................................................................ 66037 ........................................................................ 66038 ........................................................................ 66039 ........................................................................ 66040 ........................................................................ 66041 ........................................................................ 66042 ........................................................................ 66043 ........................................................................ 66044 ........................................................................ 66045 ........................................................................ 66046 ........................................................................ 66047 ........................................................................ 66048 ........................................................................ 66049 ........................................................................ 66050 ........................................................................ 66051 ........................................................................ 66052 ........................................................................ 66053 ........................................................................ 66054 ........................................................................ 66055 ........................................................................ 66056 ........................................................................ 66057 ........................................................................ 66058 ........................................................................ 66059 ........................................................................ 66060 ........................................................................ 66061 ........................................................................ 66062 ........................................................................ 66063 ........................................................................ 66064 ........................................................................ 66065 ........................................................................ 66066 ........................................................................ 66067 ........................................................................ 66068 ........................................................................ 66069 ........................................................................ 66070 ........................................................................ 66071 ........................................................................ 66072 ........................................................................ 66073 ........................................................................ 66074 ........................................................................ 66075 ........................................................................ 66076 ........................................................................ 66077 ........................................................................ 66078 ........................................................................ 66079 ........................................................................ 66080 ........................................................................ 66081 ........................................................................ 66082 ........................................................................ 66083 ........................................................................ 66084 ........................................................................ 66085 ........................................................................ 66086 ........................................................................ 66087 ........................................................................ 66088 ........................................................................ 66089 ........................................................................ 66090 ........................................................................ 66091 ........................................................................ 66092 ........................................................................ 66093 ........................................................................ 66094 ........................................................................ 66095 ........................................................................ 66096 ........................................................................ 66097 ........................................................................ 66098 ........................................................................ 66099 ........................................................................ 66100 ........................................................................ 66101 ........................................................................ 66102 ........................................................................ 66103 ........................................................................ 66104 ........................................................................ 66105 ........................................................................ 66106 ........................................................................ 66107 ........................................................................ 66108 ........................................................................ 66109 ........................................................................ 66110 ........................................................................ 66111 ........................................................................ 66112 ........................................................................ 66113 ........................................................................ 66114 ........................................................................ 66115 ........................................................................ 66116 ........................................................................ 66117 ........................................................................ 66118 ........................................................................ 66119 ........................................................................ 66120 ........................................................................ 66121 ........................................................................ 66122 ........................................................................ 66123 ........................................................................ 66124 ........................................................................ 66125 ........................................................................ 66126 ........................................................................ 66127 ........................................................................ 66128 ........................................................................ 66129 ........................................................................ 66130 ........................................................................ 66131 ........................................................................ 66132 ........................................................................ 66133 ........................................................................ 66134 ........................................................................ 66135 ........................................................................ 66136 ........................................................................ 66137 ........................................................................ 66138 ........................................................................ 66139 ........................................................................ 66140 ........................................................................ 66141 ........................................................................ 66142 ........................................................................ 66143 ........................................................................ 66144 ........................................................................ 66145 ........................................................................ 66146 ........................................................................ 66147 ........................................................................ 66148 ........................................................................ 66149 ........................................................................ 66150 ........................................................................ 66151 ........................................................................ 66152 ........................................................................ 66153 ........................................................................ 66154 ........................................................................ 66155 ........................................................................ 66156 ........................................................................ 66157 ........................................................................ 66158 ........................................................................ 66159 ........................................................................ 66160 ........................................................................ 66161 ........................................................................ 66162 ........................................................................ 66163 ........................................................................ 66164 ........................................................................ 66165 ........................................................................ 66166 ........................................................................ 66167 ........................................................................ 66168 ........................................................................ 66169 ........................................................................ 66170 ........................................................................ 66171 ........................................................................ 66172 ........................................................................ 66173 ........................................................................ 66174 ........................................................................ 66175 ........................................................................ 66176 ........................................................................ 66177 ........................................................................ 66178 ........................................................................ 66179 ........................................................................ 66180 ........................................................................ 66181 ........................................................................ 66182 ........................................................................ 66183 ........................................................................ 66184 ........................................................................ 66185 ........................................................................ 66186 ........................................................................ 66187 ........................................................................ 66188 ........................................................................ 66189 ........................................................................ 66190 ........................................................................ 66191 ........................................................................ 66192 ........................................................................ 66193 ........................................................................ 66194 ........................................................................ 66195 ........................................................................ 66196 ........................................................................ 66197 ........................................................................ 66198 ........................................................................ 66199 ........................................................................ 66200 ........................................................................ 66201 ........................................................................ 66202 ........................................................................ 66203 ........................................................................ 66204 ........................................................................ 66205 ........................................................................ 66206 ........................................................................ 66207 ........................................................................ 66208 ........................................................................ 66209 ........................................................................ 66210 ........................................................................ 66211 ........................................................................ 66212 ........................................................................ 66213 ........................................................................ 66214 ........................................................................ 66215 ........................................................................ 66216 ........................................................................ 66217 ........................................................................ 66218 ........................................................................ 66219 ........................................................................ 66220 ........................................................................ 66221 ........................................................................ 66222 ........................................................................ 66223 ........................................................................ 66224 ........................................................................ 66225 ........................................................................ 66226 ........................................................................ 66227 ........................................................................ 66228 ........................................................................ 66229 ........................................................................ 66230 ........................................................................ 66231 ........................................................................ 66232 ........................................................................ 66233 ........................................................................ 66234 ........................................................................ 66235 ........................................................................ 66236 ........................................................................ 66237 ........................................................................ 66238 ........................................................................ 66239 ........................................................................ 66240 ........................................................................ 66241 ........................................................................ 66242 ........................................................................ 66243 ........................................................................ 66244 ........................................................................ 66245 ........................................................................ 66246 ........................................................................ 66247 ........................................................................ 66248 ........................................................................ 66249 ........................................................................ 66250 ........................................................................ 66251 ........................................................................ 66252 ........................................................................ 66253 ........................................................................ 66254 ........................................................................ 66255 ........................................................................ 66256 ........................................................................ 66257 ........................................................................ 66258 ........................................................................ 66259 ........................................................................ 66260 ........................................................................ 66261 ........................................................................ 66262 ........................................................................ 66263 ........................................................................ 66264 ........................................................................ 66265 ........................................................................ 66266 ........................................................................ 66267 ........................................................................ 66268 ........................................................................ 66269 ........................................................................ 66270 ........................................................................ 66271 ........................................................................ 66272 ........................................................................ 66273 ........................................................................ 66274 ........................................................................ 66275 ........................................................................ 66276 ........................................................................ 66277 ........................................................................ 66278 ........................................................................ 66279 ........................................................................ 66280 ........................................................................ 66281 ........................................................................ 66282 ........................................................................ 66283 ........................................................................ 66284 ........................................................................ 66285 ........................................................................ 66286 ........................................................................ 66287 ........................................................................ 66288 ........................................................................ 66289 ........................................................................ 66290 ........................................................................ 66291 ........................................................................ 66292 ........................................................................ 66293 ........................................................................ 66294 ........................................................................ 66295 ........................................................................ 66296 ........................................................................ 66297 ........................................................................ 66298 ........................................................................ 66299 ........................................................................ 66300 ........................................................................ 66301 ........................................................................ 66302 ........................................................................ 66303 ........................................................................ 66304 ........................................................................ 66305 ........................................................................ 66306 ........................................................................ 66307 ........................................................................ 66308 ........................................................................ 66309 ........................................................................ 66310 ........................................................................ 66311 ........................................................................ 66312 ........................................................................ 66313 ........................................................................ 66314 ........................................................................ 66315 ........................................................................ 66316 ........................................................................ 66317 ........................................................................ 66318 ........................................................................ 66319 ........................................................................ 66320 ........................................................................ 66321 ........................................................................ 66322 ........................................................................ 66323 ........................................................................ 66324 ........................................................................ 66325 ........................................................................ 66326 ........................................................................ 66327 ........................................................................ 66328 ........................................................................ 66329 ........................................................................ 66330 ........................................................................ 66331 ........................................................................ 66332 ........................................................................ 66333 ........................................................................ 66334 ........................................................................ 66335 ........................................................................ 66336 ........................................................................ 66337 ........................................................................ 66338 ........................................................................ 66339 ........................................................................ 66340 ........................................................................ 66341 ........................................................................ 66342 ........................................................................ 66343 ........................................................................ 66344 ........................................................................ 66345 ........................................................................ 66346 ........................................................................ 66347 ........................................................................ 66348 ........................................................................ 66349 ........................................................................ 66350 ........................................................................ 66351 ........................................................................ 66352 ........................................................................ 66353 ........................................................................ 66354 ........................................................................ 66355 ........................................................................ 66356 ........................................................................ 66357 ........................................................................ 66358 ........................................................................ 66359 ........................................................................ 66360 ........................................................................ 66361 ........................................................................ 66362 ........................................................................ 66363 ........................................................................ 66364 ........................................................................ 66365 ........................................................................ 66366 ........................................................................ 66367 ........................................................................ 66368 ........................................................................ 66369 ........................................................................ 66370 ........................................................................ 66371 ........................................................................ 66372 ........................................................................ 66373 ........................................................................ 66374 ........................................................................ 66375 ........................................................................ 66376 ........................................................................ 66377 ........................................................................ 66378 ........................................................................ 66379 ........................................................................ 66380 ........................................................................ 66381 ........................................................................ 66382 ........................................................................ 66383 ........................................................................ 66384 ........................................................................ 66385 ........................................................................ 66386 ........................................................................ 66387 ........................................................................ 66388 ........................................................................ 66389 ........................................................................ 66390 ........................................................................ 66391 ........................................................................ 66392 ........................................................................ 66393 ........................................................................ 66394 ........................................................................ 66395 ........................................................................ 66396 ........................................................................ 66397 ........................................................................ 66398 ........................................................................ 66399 ........................................................................ 66400 ........................................................................ 66401 ........................................................................ 66402 ........................................................................ 66403 ........................................................................ 66404 ........................................................................ 66405 ........................................................................ 66406 ........................................................................ 66407 ........................................................................ 66408 ........................................................................ 66409 ........................................................................ 66410 ........................................................................ 66411 ........................................................................ 66412 ........................................................................ 66413 ........................................................................ 66414 ........................................................................ 66415 ........................................................................ 66416 ........................................................................ 66417 ........................................................................ 66418 ........................................................................ 66419 ........................................................................ 66420 ........................................................................ 66421 ........................................................................ 66422 ........................................................................ 66423 ........................................................................ 66424 ........................................................................ 66425 ........................................................................ 66426 ........................................................................ 66427 ........................................................................ 66428 ........................................................................ 66429 ........................................................................ 66430 ........................................................................ 66431 ........................................................................ 66432 ........................................................................ 66433 ........................................................................ 66434 ........................................................................ 66435 ........................................................................ 66436 ........................................................................ 66437 ........................................................................ 66438 ........................................................................ 66439 ........................................................................ 66440 ........................................................................ 66441 ........................................................................ 66442 ........................................................................ 66443 ........................................................................ 66444 ........................................................................ 66445 ........................................................................ 66446 ........................................................................ 66447 ........................................................................ 66448 ........................................................................ 66449 ........................................................................ 66450 ........................................................................ 66451 ........................................................................ 66452 ........................................................................ 66453 ........................................................................ 66454 ........................................................................ 66455 ........................................................................ 66456 ........................................................................ 66457 ........................................................................ 66458 ........................................................................ 66459 ........................................................................ 66460 ........................................................................ 66461 ........................................................................ 66462 ........................................................................ 66463 ........................................................................ 66464 ........................................................................ 66465 ........................................................................ 66466 ........................................................................ 66467 ........................................................................ 66468 ........................................................................ 66469 ........................................................................ 66470 ........................................................................ 66471 ........................................................................ 66472 ........................................................................ 66473 ........................................................................ 66474 ........................................................................ 66475 ........................................................................ 66476 ........................................................................ 66477 ........................................................................ 66478 ........................................................................ 66479 ........................................................................ 66480 ........................................................................ 66481 ........................................................................ 66482 ........................................................................ 66483 ........................................................................ 66484 ........................................................................ 66485 ........................................................................ 66486 ........................................................................ 66487 ........................................................................ 66488 ........................................................................ 66489 ........................................................................ 66490 ........................................................................ 66491 ........................................................................ 66492 ........................................................................ 66493 ........................................................................ 66494 ........................................................................ 66495 ........................................................................ 66496 ........................................................................ 66497 ........................................................................ 66498 ........................................................................ 66499 ........................................................................ 66500 ........................................................................ 66501 ........................................................................ 66502 ........................................................................ 66503 ........................................................................ 66504 ........................................................................ 66505 ........................................................................ 66506 ........................................................................ 66507 ........................................................................ 66508 ........................................................................ 66509 ........................................................................ 66510 ........................................................................ 66511 ........................................................................ 66512 ........................................................................ 66513 ........................................................................ 66514 ........................................................................ 66515 ........................................................................ 66516 ........................................................................ 66517 ........................................................................ 66518 ........................................................................ 66519 ........................................................................ 66520 ........................................................................ 66521 ........................................................................ 66522 ........................................................................ 66523 ........................................................................ 66524 ........................................................................ 66525 ........................................................................ 66526 ........................................................................ 66527 ........................................................................ 66528 ........................................................................ 66529 ........................................................................ 66530 ........................................................................ 66531 ........................................................................ 66532 ........................................................................ 66533 ........................................................................ 66534 ........................................................................ 66535 ........................................................................ 66536 ........................................................................ 66537 ........................................................................ 66538 ........................................................................ 66539 ........................................................................ 66540 ........................................................................ 66541 ........................................................................ 66542 ........................................................................ 66543 ........................................................................ 66544 ........................................................................ 66545 ........................................................................ 66546 ........................................................................ 66547 ........................................................................ 66548 ........................................................................ 66549 ........................................................................ 66550 ........................................................................ 66551 ........................................................................ 66552 ........................................................................ 66553 ........................................................................ 66554 ........................................................................ 66555 ........................................................................ 66556 ........................................................................ 66557 ........................................................................ 66558 ........................................................................ 66559 ........................................................................ 66560 ........................................................................ 66561 ........................................................................ 66562 ........................................................................ 66563 ........................................................................ 66564 ........................................................................ 66565 ........................................................................ 66566 ........................................................................ 66567 ........................................................................ 66568 ........................................................................ 66569 ........................................................................ 66570 ........................................................................ 66571 ........................................................................ 66572 ........................................................................ 66573 ........................................................................ 66574 ........................................................................ 66575 ........................................................................ 66576 ........................................................................ 66577 ........................................................................ 66578 ........................................................................ 66579 ........................................................................ 66580 ........................................................................ 66581 ........................................................................ 66582 ........................................................................ 66583 ........................................................................ 66584 ........................................................................ 66585 ........................................................................ 66586 ........................................................................ 66587 ........................................................................ 66588 ........................................................................ 66589 ........................................................................ 66590 ........................................................................ 66591 ........................................................................ 66592 ........................................................................ 66593 ........................................................................ 66594 ........................................................................ 66595 ........................................................................ 66596 ........................................................................ 66597 ........................................................................ 66598 ........................................................................ 66599 ........................................................................ 66600 ........................................................................ 66601 ........................................................................ 66602 ........................................................................ 66603 ........................................................................ 66604 ........................................................................ 66605 ........................................................................ 66606 ........................................................................ 66607 ........................................................................ 66608 ........................................................................ 66609 ........................................................................ 66610 ........................................................................ 66611 ........................................................................ 66612 ........................................................................ 66613 ........................................................................ 66614 ........................................................................ 66615 ........................................................................ 66616 ........................................................................ 66617 ........................................................................ 66618 ........................................................................ 66619 ........................................................................ 66620 ........................................................................ 66621 ........................................................................ 66622 ........................................................................ 66623 ........................................................................ 66624 ........................................................................ 66625 ........................................................................ 66626 ........................................................................ 66627 ........................................................................ 66628 ........................................................................ 66629 ........................................................................ 66630 ........................................................................ 66631 ........................................................................ 66632 ........................................................................ 66633 ........................................................................ 66634 ........................................................................ 66635 ........................................................................ 66636 ........................................................................ 66637 ........................................................................ 66638 ........................................................................ 66639 ........................................................................ 66640 ........................................................................ 66641 ........................................................................ 66642 ........................................................................ 66643 ........................................................................ 66644 ........................................................................ 66645 ........................................................................ 66646 ........................................................................ 66647 ........................................................................ 66648 ........................................................................ 66649 ........................................................................ 66650 ........................................................................ 66651 ........................................................................ 66652 ........................................................................ 66653 ........................................................................ 66654 ........................................................................ 66655 ........................................................................ 66656 ........................................................................ 66657 ........................................................................ 66658 ........................................................................ 66659 ........................................................................ 66660 ........................................................................ 66661 ........................................................................ 66662 ........................................................................ 66663 ........................................................................ 66664 ........................................................................ 66665 ........................................................................ 66666 ........................................................................ 66667 ........................................................................ 66668 ........................................................................ 66669 ........................................................................ 66670 ........................................................................ 66671 ........................................................................ 66672 ........................................................................ 66673 ........................................................................ 66674 ........................................................................ 66675 ........................................................................ 66676 ........................................................................ 66677 ........................................................................ 66678 ........................................................................ 66679 ........................................................................ 66680 ........................................................................ 66681 ........................................................................ 66682 ........................................................................ 66683 ........................................................................ 66684 ........................................................................ 66685 ........................................................................ 66686 ........................................................................ 66687 ........................................................................ 66688 ........................................................................ 66689 ........................................................................ 66690 ........................................................................ 66691 ........................................................................ 66692 ........................................................................ 66693 ........................................................................ 66694 ........................................................................ 66695 ........................................................................ 66696 ........................................................................ 66697 ........................................................................ 66698 ........................................................................ 66699 ........................................................................ 66700 ........................................................................ 66701 ........................................................................ 66702 ........................................................................ 66703 ........................................................................ 66704 ........................................................................ 66705 ........................................................................ 66706 ........................................................................ 66707 ........................................................................ 66708 ........................................................................ 66709 ........................................................................ 66710 ........................................................................ 66711 ........................................................................ 66712 ........................................................................ 66713 ........................................................................ 66714 ........................................................................ 66715 ........................................................................ 66716 ........................................................................ 66717 ........................................................................ 66718 ........................................................................ 66719 ........................................................................ 66720 ........................................................................ 66721 ........................................................................ 66722 ........................................................................ 66723 ........................................................................ 66724 ........................................................................ 66725 ........................................................................ 66726 ........................................................................ 66727 ........................................................................ 66728 ........................................................................ 66729 ........................................................................ 66730 ........................................................................ 66731 ........................................................................ 66732 ........................................................................ 66733 ........................................................................ 66734 ........................................................................ 66735 ........................................................................ 66736 ........................................................................ 66737 ........................................................................ 66738 ........................................................................ 66739 ........................................................................ 66740 ........................................................................ 66741 ........................................................................ 66742 ........................................................................ 66743 ........................................................................ 66744 ........................................................................ 66745 ........................................................................ 66746 ........................................................................ 66747 ........................................................................ 66748 ........................................................................ 66749 ........................................................................ 66750 ........................................................................ 66751 ........................................................................ 66752 ........................................................................ 66753 ........................................................................ 66754 ........................................................................ 66755 ........................................................................ 66756 ........................................................................ 66757 ........................................................................ 66758 ........................................................................ 66759 ........................................................................ 66760 ........................................................................ 66761 ........................................................................ 66762 ........................................................................ 66763 ........................................................................ 66764 ........................................................................ 66765 ........................................................................ 66766 ........................................................................ 66767 ........................................................................ 66768 ........................................................................ 66769 ........................................................................ 66770 ........................................................................ 66771 ........................................................................ 66772 ........................................................................ 66773 ........................................................................ 66774 ........................................................................ 66775 ........................................................................ 66776 ........................................................................ 66777 ........................................................................ 66778 ........................................................................ 66779 ........................................................................ 66780 ........................................................................ 66781 ........................................................................ 66782 ........................................................................ 66783 ........................................................................ 66784 ........................................................................ 66785 ........................................................................ 66786 ........................................................................ 66787 ........................................................................ 66788 ........................................................................ 66789 ........................................................................ 66790 ........................................................................ 66791 ........................................................................ 66792 ........................................................................ 66793 ........................................................................ 66794 ........................................................................ 66795 ........................................................................ 66796 ........................................................................ 66797 ........................................................................ 66798 ........................................................................ 66799 ........................................................................ 66800 ........................................................................ 66801 ........................................................................ 66802 ........................................................................ 66803 ........................................................................ 66804 ........................................................................ 66805 ........................................................................ 66806 ........................................................................ 66807 ........................................................................ 66808 ........................................................................ 66809 ........................................................................ 66810 ........................................................................ 66811 ........................................................................ 66812 ........................................................................ 66813 ........................................................................ 66814 ........................................................................ 66815 ........................................................................ 66816 ........................................................................ 66817 ........................................................................ 66818 ........................................................................ 66819 ........................................................................ 66820 ........................................................................ 66821 ........................................................................ 66822 ........................................................................ 66823 ........................................................................ 66824 ........................................................................ 66825 ........................................................................ 66826 ........................................................................ 66827 ........................................................................ 66828 ........................................................................ 66829 ........................................................................ 66830 ........................................................................ 66831 ........................................................................ 66832 ........................................................................ 66833 ........................................................................ 66834 ........................................................................ 66835 ........................................................................ 66836 ........................................................................ 66837 ........................................................................ 66838 ........................................................................ 66839 ........................................................................ 66840 ........................................................................ 66841 ........................................................................ 66842 ........................................................................ 66843 ........................................................................ 66844 ........................................................................ 66845 ........................................................................ 66846 ........................................................................ 66847 ........................................................................ 66848 ........................................................................ 66849 ........................................................................ 66850 ........................................................................ 66851 ........................................................................ 66852 ........................................................................ 66853 ........................................................................ 66854 ........................................................................ 66855 ........................................................................ 66856 ........................................................................ 66857 ........................................................................ 66858 ........................................................................ 66859 ........................................................................ 66860 ........................................................................ 66861 ........................................................................ 66862 ........................................................................ 66863 ........................................................................ 66864 ........................................................................ 66865 ........................................................................ 66866 ........................................................................ 66867 ........................................................................ 66868 ........................................................................ 66869 ........................................................................ 66870 ........................................................................ 66871 ........................................................................ 66872 ........................................................................ 66873 ........................................................................ 66874 ........................................................................ 66875 ........................................................................ 66876 ........................................................................ 66877 ........................................................................ 66878 ........................................................................ 66879 ........................................................................ 66880 ........................................................................ 66881 ........................................................................ 66882 ........................................................................ 66883 ........................................................................ 66884 ........................................................................ 66885 ........................................................................ 66886 ........................................................................ 66887 ........................................................................ 66888 ........................................................................ 66889 ........................................................................ 66890 ........................................................................ 66891 ........................................................................ 66892 ........................................................................ 66893 ........................................................................ 66894 ........................................................................ 66895 ........................................................................ 66896 ........................................................................ 66897 ........................................................................ 66898 ........................................................................ 66899 ........................................................................ 66900 ........................................................................ 66901 ........................................................................ 66902 ........................................................................ 66903 ........................................................................ 66904 ........................................................................ 66905 ........................................................................ 66906 ........................................................................ 66907 ........................................................................ 66908 ........................................................................ 66909 ........................................................................ 66910 ........................................................................ 66911 ........................................................................ 66912 ........................................................................ 66913 ........................................................................ 66914 ........................................................................ 66915 ........................................................................ 66916 ........................................................................ 66917 ........................................................................ 66918 ........................................................................ 66919 ........................................................................ 66920 ........................................................................ 66921 ........................................................................ 66922 ........................................................................ 66923 ........................................................................ 66924 ........................................................................ 66925 ........................................................................ 66926 ........................................................................ 66927 ........................................................................ 66928 ........................................................................ 66929 ........................................................................ 66930 ........................................................................ 66931 ........................................................................ 66932 ........................................................................ 66933 ........................................................................ 66934 ........................................................................ 66935 ........................................................................ 66936 ........................................................................ 66937 ........................................................................ 66938 ........................................................................ 66939 ........................................................................ 66940 ........................................................................ 66941 ........................................................................ 66942 ........................................................................ 66943 ........................................................................ 66944 ........................................................................ 66945 ........................................................................ 66946 ........................................................................ 66947 ........................................................................ 66948 ........................................................................ 66949 ........................................................................ 66950 ........................................................................ 66951 ........................................................................ 66952 ........................................................................ 66953 ........................................................................ 66954 ........................................................................ 66955 ........................................................................ 66956 ........................................................................ 66957 ........................................................................ 66958 ........................................................................ 66959 ........................................................................ 66960 ........................................................................ 66961 ........................................................................ 66962 ........................................................................ 66963 ........................................................................ 66964 ........................................................................ 66965 ........................................................................ 66966 ........................................................................ 66967 ........................................................................ 66968 ........................................................................ 66969 ........................................................................ 66970 ........................................................................ 66971 ........................................................................ 66972 ........................................................................ 66973 ........................................................................ 66974 ........................................................................ 66975 ........................................................................ 66976 ........................................................................ 66977 ........................................................................ 66978 ........................................................................ 66979 ........................................................................ 66980 ........................................................................ 66981 ........................................................................ 66982 ........................................................................ 66983 ........................................................................ 66984 ........................................................................ 66985 ........................................................................ 66986 ........................................................................ 66987 ........................................................................ 66988 ........................................................................ 66989 ........................................................................ 66990 ........................................................................ 66991 ........................................................................ 66992 ........................................................................ 66993 ........................................................................ 66994 ........................................................................ 66995 ........................................................................ 66996 ........................................................................ 66997 ........................................................................ 66998 ........................................................................ 66999 ........................................................................ 67000 ........................................................................ 67001 ........................................................................ 67002 ........................................................................ 67003 ........................................................................ 67004 ........................................................................ 67005 ........................................................................ 67006 ........................................................................ 67007 ........................................................................ 67008 ........................................................................ 67009 ........................................................................ 67010 ........................................................................ 67011 ........................................................................ 67012 ........................................................................ 67013 ........................................................................ 67014 ........................................................................ 67015 ........................................................................ 67016 ........................................................................ 67017 ........................................................................ 67018 ........................................................................ 67019 ........................................................................ 67020 ........................................................................ 67021 ........................................................................ 67022 ........................................................................ 67023 ........................................................................ 67024 ........................................................................ 67025 ........................................................................ 67026 ........................................................................ 67027 ........................................................................ 67028 ........................................................................ 67029 ........................................................................ 67030 ........................................................................ 67031 ........................................................................ 67032 ........................................................................ 67033 ........................................................................ 67034 ........................................................................ 67035 ........................................................................ 67036 ........................................................................ 67037 ........................................................................ 67038 ........................................................................ 67039 ........................................................................ 67040 ........................................................................ 67041 ........................................................................ 67042 ........................................................................ 67043 ........................................................................ 67044 ........................................................................ 67045 ........................................................................ 67046 ........................................................................ 67047 ........................................................................ 67048 ........................................................................ 67049 ........................................................................ 67050 ........................................................................ 67051 ........................................................................ 67052 ........................................................................ 67053 ........................................................................ 67054 ........................................................................ 67055 ........................................................................ 67056 ........................................................................ 67057 ........................................................................ 67058 ........................................................................ 67059 ........................................................................ 67060 ........................................................................ 67061 ........................................................................ 67062 ........................................................................ 67063 ........................................................................ 67064 ........................................................................ 67065 ........................................................................ 67066 ........................................................................ 67067 ........................................................................ 67068 ........................................................................ 67069 ........................................................................ 67070 ........................................................................ 67071 ........................................................................ 67072 ........................................................................ 67073 ........................................................................ 67074 ........................................................................ 67075 ........................................................................ 67076 ........................................................................ 67077 ........................................................................ 67078 ........................................................................ 67079 ........................................................................ 67080 ........................................................................ 67081 ........................................................................ 67082 ........................................................................ 67083 ........................................................................ 67084 ........................................................................ 67085 ........................................................................ 67086 ........................................................................ 67087 ........................................................................ 67088 ........................................................................ 67089 ........................................................................ 67090 ........................................................................ 67091 ........................................................................ 67092 ........................................................................ 67093 ........................................................................ 67094 ........................................................................ 67095 ........................................................................ 67096 ........................................................................ 67097 ........................................................................ 67098 ........................................................................ 67099 ........................................................................ 67100 ........................................................................ 67101 ........................................................................ 67102 ........................................................................ 67103 ........................................................................ 67104 ........................................................................ 67105 ........................................................................ 67106 ........................................................................ 67107 ........................................................................ 67108 ........................................................................ 67109 ........................................................................ 67110 ........................................................................ 67111 ........................................................................ 67112 ........................................................................ 67113 ........................................................................ 67114 ........................................................................ 67115 ........................................................................ 67116 ........................................................................ 67117 ........................................................................ 67118 ........................................................................ 67119 ........................................................................ 67120 ........................................................................ 67121 ........................................................................ 67122 ........................................................................ 67123 ........................................................................ 67124 ........................................................................ 67125 ........................................................................ 67126 ........................................................................ 67127 ........................................................................ 67128 ........................................................................ 67129 ........................................................................ 67130 ........................................................................ 67131 ........................................................................ 67132 ........................................................................ 67133 ........................................................................ 67134 ........................................................................ 67135 ........................................................................ 67136 ........................................................................ 67137 ........................................................................ 67138 ........................................................................ 67139 ........................................................................ 67140 ........................................................................ 67141 ........................................................................ 67142 ........................................................................ 67143 ........................................................................ 67144 ........................................................................ 67145 ........................................................................ 67146 ........................................................................ 67147 ........................................................................ 67148 ........................................................................ 67149 ........................................................................ 67150 ........................................................................ 67151 ........................................................................ 67152 ........................................................................ 67153 ........................................................................ 67154 ........................................................................ 67155 ........................................................................ 67156 ........................................................................ 67157 ........................................................................ 67158 ........................................................................ 67159 ........................................................................ 67160 ........................................................................ 67161 ........................................................................ 67162 ........................................................................ 67163 ........................................................................ 67164 ........................................................................ 67165 ........................................................................ 67166 ........................................................................ 67167 ........................................................................ 67168 ........................................................................ 67169 ........................................................................ 67170 ........................................................................ 67171 ........................................................................ 67172 ........................................................................ 67173 ........................................................................ 67174 ........................................................................ 67175 ........................................................................ 67176 ........................................................................ 67177 ........................................................................ 67178 ........................................................................ 67179 ........................................................................ 67180 ........................................................................ 67181 ........................................................................ 67182 ........................................................................ 67183 ........................................................................ 67184 ........................................................................ 67185 ........................................................................ 67186 ........................................................................ 67187 ........................................................................ 67188 ........................................................................ 67189 ........................................................................ 67190 ........................................................................ 67191 ........................................................................ 67192 ........................................................................ 67193 ........................................................................ 67194 ........................................................................ 67195 ........................................................................ 67196 ........................................................................ 67197 ........................................................................ 67198 ........................................................................ 67199 ........................................................................ 67200 ........................................................................ 67201 ........................................................................ 67202 ........................................................................ 67203 ........................................................................ 67204 ........................................................................ 67205 ........................................................................ 67206 ........................................................................ 67207 ........................................................................ 67208 ........................................................................ 67209 ........................................................................ 67210 ........................................................................ 67211 ........................................................................ 67212 ........................................................................ 67213 ........................................................................ 67214 ........................................................................ 67215 ........................................................................ 67216 ........................................................................ 67217 ........................................................................ 67218 ........................................................................ 67219 ........................................................................ 67220 ........................................................................ 67221 ........................................................................ 67222 ........................................................................ 67223 ........................................................................ 67224 ........................................................................ 67225 ........................................................................ 67226 ........................................................................ 67227 ........................................................................ 67228 ........................................................................ 67229 ........................................................................ 67230 ........................................................................ 67231 ........................................................................ 67232 ........................................................................ 67233 ........................................................................ 67234 ........................................................................ 67235 ........................................................................ 67236 ........................................................................ 67237 ........................................................................ 67238 ........................................................................ 67239 ........................................................................ 67240 ........................................................................ 67241 ........................................................................ 67242 ........................................................................ 67243 ........................................................................ 67244 ........................................................................ 67245 ........................................................................ 67246 ........................................................................ 67247 ........................................................................ 67248 ........................................................................ 67249 ........................................................................ 67250 ........................................................................ 67251 ........................................................................ 67252 ........................................................................ 67253 ........................................................................ 67254 ........................................................................ 67255 ........................................................................ 67256 ........................................................................ 67257 ........................................................................ 67258 ........................................................................ 67259 ........................................................................ 67260 ........................................................................ 67261 ........................................................................ 67262 ........................................................................ 67263 ........................................................................ 67264 ........................................................................ 67265 ........................................................................ 67266 ........................................................................ 67267 ........................................................................ 67268 ........................................................................ 67269 ........................................................................ 67270 ........................................................................ 67271 ........................................................................ 67272 ........................................................................ 67273 ........................................................................ 67274 ........................................................................ 67275 ........................................................................ 67276 ........................................................................ 67277 ........................................................................ 67278 ........................................................................ 67279 ........................................................................ 67280 ........................................................................ 67281 ........................................................................ 67282 ........................................................................ 67283 ........................................................................ 67284 ........................................................................ 67285 ........................................................................ 67286 ........................................................................ 67287 ........................................................................ 67288 ........................................................................ 67289 ........................................................................ 67290 ........................................................................ 67291 ........................................................................ 67292 ........................................................................ 67293 ........................................................................ 67294 ........................................................................ 67295 ........................................................................ 67296 ........................................................................ 67297 ........................................................................ 67298 ........................................................................ 67299 ........................................................................ 67300 ........................................................................ 67301 ........................................................................ 67302 ........................................................................ 67303 ........................................................................ 67304 ........................................................................ 67305 ........................................................................ 67306 ........................................................................ 67307 ........................................................................ 67308 ........................................................................ 67309 ........................................................................ 67310 ........................................................................ 67311 ........................................................................ 67312 ........................................................................ 67313 ........................................................................ 67314 ........................................................................ 67315 ........................................................................ 67316 ........................................................................ 67317 ........................................................................ 67318 ........................................................................ 67319 ........................................................................ 67320 ........................................................................ 67321 ........................................................................ 67322 ........................................................................ 67323 ........................................................................ 67324 ........................................................................ 67325 ........................................................................ 67326 ........................................................................ 67327 ........................................................................ 67328 ........................................................................ 67329 ........................................................................ 67330 ........................................................................ 67331 ........................................................................ 67332 ........................................................................ 67333 ........................................................................ 67334 ........................................................................ 67335 ........................................................................ 67336 ........................................................................ 67337 ........................................................................ 67338 ........................................................................ 67339 ........................................................................ 67340 ........................................................................ 67341 ........................................................................ 67342 ........................................................................ 67343 ........................................................................ 67344 ........................................................................ 67345 ........................................................................ 67346 ........................................................................ 67347 ........................................................................ 67348 ........................................................................ 67349 ........................................................................ 67350 ........................................................................ 67351 ........................................................................ 67352 ........................................................................ 67353 ........................................................................ 67354 ........................................................................ 67355 ........................................................................ 67356 ........................................................................ 67357 ........................................................................ 67358 ........................................................................ 67359 ........................................................................ 67360 ........................................................................ 67361 ........................................................................ 67362 ........................................................................ 67363 ........................................................................ 67364 ........................................................................ 67365 ........................................................................ 67366 ........................................................................ 67367 ........................................................................ 67368 ........................................................................ 67369 ........................................................................ 67370 ........................................................................ 67371 ........................................................................ 67372 ........................................................................ 67373 ........................................................................ 67374 ........................................................................ 67375 ........................................................................ 67376 ........................................................................ 67377 ........................................................................ 67378 ........................................................................ 67379 ........................................................................ 67380 ........................................................................ 67381 ........................................................................ 67382 ........................................................................ 67383 ........................................................................ 67384 ........................................................................ 67385 ........................................................................ 67386 ........................................................................ 67387 ........................................................................ 67388 ........................................................................ 67389 ........................................................................ 67390 ........................................................................ 67391 ........................................................................ 67392 ........................................................................ 67393 ........................................................................ 67394 ........................................................................ 67395 ........................................................................ 67396 ........................................................................ 67397 ........................................................................ 67398 ........................................................................ 67399 ........................................................................ 67400 ........................................................................ 67401 ........................................................................ 67402 ........................................................................ 67403 ........................................................................ 67404 ........................................................................ 67405 ........................................................................ 67406 ........................................................................ 67407 ........................................................................ 67408 ........................................................................ 67409 ........................................................................ 67410 ........................................................................ 67411 ........................................................................ 67412 ........................................................................ 67413 ........................................................................ 67414 ........................................................................ 67415 ........................................................................ 67416 ........................................................................ 67417 ........................................................................ 67418 ........................................................................ 67419 ........................................................................ 67420 ........................................................................ 67421 ........................................................................ 67422 ........................................................................ 67423 ........................................................................ 67424 ........................................................................ 67425 ........................................................................ 67426 ........................................................................ 67427 ........................................................................ 67428 ........................................................................ 67429 ........................................................................ 67430 ........................................................................ 67431 ........................................................................ 67432 ........................................................................ 67433 ........................................................................ 67434 ........................................................................ 67435 ........................................................................ 67436 ........................................................................ 67437 ........................................................................ 67438 ........................................................................ 67439 ........................................................................ 67440 ........................................................................ 67441 ........................................................................ 67442 ........................................................................ 67443 ........................................................................ 67444 ........................................................................ 67445 ........................................................................ 67446 ........................................................................ 67447 ........................................................................ 67448 ........................................................................ 67449 ........................................................................ 67450 ........................................................................ 67451 ........................................................................ 67452 ........................................................................ 67453 ........................................................................ 67454 ........................................................................ 67455 ........................................................................ 67456 ........................................................................ 67457 ........................................................................ 67458 ........................................................................ 67459 ........................................................................ 67460 ........................................................................ 67461 ........................................................................ 67462 ........................................................................ 67463 ........................................................................ 67464 ........................................................................ 67465 ........................................................................ 67466 ........................................................................ 67467 ........................................................................ 67468 ........................................................................ 67469 ........................................................................ 67470 ........................................................................ 67471 ........................................................................ 67472 ........................................................................ 67473 ........................................................................ 67474 ........................................................................ 67475 ........................................................................ 67476 ........................................................................ 67477 ........................................................................ 67478 ........................................................................ 67479 ........................................................................ 67480 ........................................................................ 67481 ........................................................................ 67482 ........................................................................ 67483 ........................................................................ 67484 ........................................................................ 67485 ........................................................................ 67486 ........................................................................ 67487 ........................................................................ 67488 ........................................................................ 67489 ........................................................................ 67490 ........................................................................ 67491 ........................................................................ 67492 ........................................................................ 67493 ........................................................................ 67494 ........................................................................ 67495 ........................................................................ 67496 ........................................................................ 67497 ........................................................................ 67498 ........................................................................ 67499 ........................................................................ 67500 ........................................................................ 67501 ........................................................................ 67502 ........................................................................ 67503 ........................................................................ 67504 ........................................................................ 67505 ........................................................................ 67506 ........................................................................ 67507 ........................................................................ 67508 ........................................................................ 67509 ........................................................................ 67510 ........................................................................ 67511 ........................................................................ 67512 ........................................................................ 67513 ........................................................................ 67514 ........................................................................ 67515 ........................................................................ 67516 ........................................................................ 67517 ........................................................................ 67518 ........................................................................ 67519 ........................................................................ 67520 ........................................................................ 67521 ........................................................................ 67522 ........................................................................ 67523 ........................................................................ 67524 ........................................................................ 67525 ........................................................................ 67526 ........................................................................ 67527 ........................................................................ 67528 ........................................................................ 67529 ........................................................................ 67530 ........................................................................ 67531 ........................................................................ 67532 ........................................................................ 67533 ........................................................................ 67534 ........................................................................ 67535 ........................................................................ 67536 ........................................................................ 67537 ........................................................................ 67538 ........................................................................ 67539 ........................................................................ 67540 ........................................................................ 67541 ........................................................................ 67542 ........................................................................ 67543 ........................................................................ 67544 ........................................................................ 67545 ........................................................................ 67546 ........................................................................ 67547 ........................................................................ 67548 ........................................................................ 67549 ........................................................................ 67550 ........................................................................ 67551 ........................................................................ 67552 ........................................................................ 67553 ........................................................................ 67554 ........................................................................ 67555 ........................................................................ 67556 ........................................................................ 67557 ........................................................................ 67558 ........................................................................ 67559 ........................................................................ 67560 ........................................................................ 67561 ........................................................................ 67562 ........................................................................ 67563 ........................................................................ 67564 ........................................................................ 67565 ........................................................................ 67566 ........................................................................ 67567 ........................................................................ 67568 ........................................................................ 67569 ........................................................................ 67570 ........................................................................ 67571 ........................................................................ 67572 ........................................................................ 67573 ........................................................................ 67574 ........................................................................ 67575 ........................................................................ 67576 ........................................................................ 67577 ........................................................................ 67578 ........................................................................ 67579 ........................................................................ 67580 ........................................................................ 67581 ........................................................................ 67582 ........................................................................ 67583 ........................................................................ 67584 ........................................................................ 67585 ........................................................................ 67586 ........................................................................ 67587 ........................................................................ 67588 ........................................................................ 67589 ........................................................................ 67590 ........................................................................ 67591 ........................................................................ 67592 ........................................................................ 67593 ........................................................................ 67594 ........................................................................ 67595 ........................................................................ 67596 ........................................................................ 67597 ........................................................................ 67598 ........................................................................ 67599 ........................................................................ 67600 ........................................................................ 67601 ........................................................................ 67602 ........................................................................ 67603 ........................................................................ 67604 ........................................................................ 67605 ........................................................................ 67606 ........................................................................ 67607 ........................................................................ 67608 ........................................................................ 67609 ........................................................................ 67610 ........................................................................ 67611 ........................................................................ 67612 ........................................................................ 67613 ........................................................................ 67614 ........................................................................ 67615 ........................................................................ 67616 ........................................................................ 67617 ........................................................................ 67618 ........................................................................ 67619 ........................................................................ 67620 ........................................................................ 67621 ........................................................................ 67622 ........................................................................ 67623 ........................................................................ 67624 ........................................................................ 67625 ........................................................................ 67626 ........................................................................ 67627 ........................................................................ 67628 ........................................................................ 67629 ........................................................................ 67630 ........................................................................ 67631 ........................................................................ 67632 ........................................................................ 67633 ........................................................................ 67634 ........................................................................ 67635 ........................................................................ 67636 ........................................................................ 67637 ........................................................................ 67638 ........................................................................ 67639 ........................................................................ 67640 ........................................................................ 67641 ........................................................................ 67642 ........................................................................ 67643 ........................................................................ 67644 ........................................................................ 67645 ........................................................................ 67646 ........................................................................ 67647 ........................................................................ 67648 ........................................................................ 67649 ........................................................................ 67650 ........................................................................ 67651 ........................................................................ 67652 ........................................................................ 67653 ........................................................................ 67654 ........................................................................ 67655 ........................................................................ 67656 ........................................................................ 67657 ........................................................................ 67658 ........................................................................ 67659 ........................................................................ 67660 ........................................................................ 67661 ........................................................................ 67662 ........................................................................ 67663 ........................................................................ 67664 ........................................................................ 67665 ........................................................................ 67666 ........................................................................ 67667 ........................................................................ 67668 ........................................................................ 67669 ........................................................................ 67670 ........................................................................ 67671 ........................................................................ 67672 ........................................................................ 67673 ........................................................................ 67674 ........................................................................ 67675 ........................................................................ 67676 ........................................................................ 67677 ........................................................................ 67678 ........................................................................ 67679 ........................................................................ 67680 ........................................................................ 67681 ........................................................................ 67682 ........................................................................ 67683 ........................................................................ 67684 ........................................................................ 67685 ........................................................................ 67686 ........................................................................ 67687 ........................................................................ 67688 ........................................................................ 67689 ........................................................................ 67690 ........................................................................ 67691 ........................................................................ 67692 ........................................................................ 67693 ........................................................................ 67694 ........................................................................ 67695 ........................................................................ 67696 ........................................................................ 67697 ........................................................................ 67698 ........................................................................ 67699 ........................................................................ 67700 ........................................................................ 67701 ........................................................................ 67702 ........................................................................ 67703 ........................................................................ 67704 ........................................................................ 67705 ........................................................................ 67706 ........................................................................ 67707 ........................................................................ 67708 ........................................................................ 67709 ........................................................................ 67710 ........................................................................ 67711 ........................................................................ 67712 ........................................................................ 67713 ........................................................................ 67714 ........................................................................ 67715 ........................................................................ 67716 ........................................................................ 67717 ........................................................................ 67718 ........................................................................ 67719 ........................................................................ 67720 ........................................................................ 67721 ........................................................................ 67722 ........................................................................ 67723 ........................................................................ 67724 ........................................................................ 67725 ........................................................................ 67726 ........................................................................ 67727 ........................................................................ 67728 ........................................................................ 67729 ........................................................................ 67730 ........................................................................ 67731 ........................................................................ 67732 ........................................................................ 67733 ........................................................................ 67734 ........................................................................ 67735 ........................................................................ 67736 ........................................................................ 67737 ........................................................................ 67738 ........................................................................ 67739 ........................................................................ 67740 ........................................................................ 67741 ........................................................................ 67742 ........................................................................ 67743 ........................................................................ 67744 ........................................................................ 67745 ........................................................................ 67746 ........................................................................ 67747 ........................................................................ 67748 ........................................................................ 67749 ........................................................................ 67750 ........................................................................ 67751 ........................................................................ 67752 ........................................................................ 67753 ........................................................................ 67754 ........................................................................ 67755 ........................................................................ 67756 ........................................................................ 67757 ........................................................................ 67758 ........................................................................ 67759 ........................................................................ 67760 ........................................................................ 67761 ........................................................................ 67762 ........................................................................ 67763 ........................................................................ 67764 ........................................................................ 67765 ........................................................................ 67766 ........................................................................ 67767 ........................................................................ 67768 ........................................................................ 67769 ........................................................................ 67770 ........................................................................ 67771 ........................................................................ 67772 ........................................................................ 67773 ........................................................................ 67774 ........................................................................ 67775 ........................................................................ 67776 ........................................................................ 67777 ........................................................................ 67778 ........................................................................ 67779 ........................................................................ 67780 ........................................................................ 67781 ........................................................................ 67782 ........................................................................ 67783 ........................................................................ 67784 ........................................................................ 67785 ........................................................................ 67786 ........................................................................ 67787 ........................................................................ 67788 ........................................................................ 67789 ........................................................................ 67790 ........................................................................ 67791 ........................................................................ 67792 ........................................................................ 67793 ........................................................................ 67794 ........................................................................ 67795 ........................................................................ 67796 ........................................................................ 67797 ........................................................................ 67798 ........................................................................ 67799 ........................................................................ 67800 ........................................................................ 67801 ........................................................................ 67802 ........................................................................ 67803 ........................................................................ 67804 ........................................................................ 67805 ........................................................................ 67806 ........................................................................ 67807 ........................................................................ 67808 ........................................................................ 67809 ........................................................................ 67810 ........................................................................ 67811 ........................................................................ 67812 ........................................................................ 67813 ........................................................................ 67814 ........................................................................ 67815 ........................................................................ 67816 ........................................................................ 67817 ........................................................................ 67818 ........................................................................ 67819 ........................................................................ 67820 ........................................................................ 67821 ........................................................................ 67822 ........................................................................ 67823 ........................................................................ 67824 ........................................................................ 67825 ........................................................................ 67826 ........................................................................ 67827 ........................................................................ 67828 ........................................................................ 67829 ........................................................................ 67830 ........................................................................ 67831 ........................................................................ 67832 ........................................................................ 67833 ........................................................................ 67834 ........................................................................ 67835 ........................................................................ 67836 ........................................................................ 67837 ........................................................................ 67838 ........................................................................ 67839 ........................................................................ 67840 ........................................................................ 67841 ........................................................................ 67842 ........................................................................ 67843 ........................................................................ 67844 ........................................................................ 67845 ........................................................................ 67846 ........................................................................ 67847 ........................................................................ 67848 ........................................................................ 67849 ........................................................................ 67850 ........................................................................ 67851 ........................................................................ 67852 ........................................................................ 67853 ........................................................................ 67854 ........................................................................ 67855 ........................................................................ 67856 ........................................................................ 67857 ........................................................................ 67858 ........................................................................ 67859 ........................................................................ 67860 ........................................................................ 67861 ........................................................................ 67862 ........................................................................ 67863 ........................................................................ 67864 ........................................................................ 67865 ........................................................................ 67866 ........................................................................ 67867 ........................................................................ 67868 ........................................................................ 67869 ........................................................................ 67870 ........................................................................ 67871 ........................................................................ 67872 ........................................................................ 67873 ........................................................................ 67874 ........................................................................ 67875 ........................................................................ 67876 ........................................................................ 67877 ........................................................................ 67878 ........................................................................ 67879 ........................................................................ 67880 ........................................................................ 67881 ........................................................................ 67882 ........................................................................ 67883 ........................................................................ 67884 ........................................................................ 67885 ........................................................................ 67886 ........................................................................ 67887 ........................................................................ 67888 ........................................................................ 67889 ........................................................................ 67890 ........................................................................ 67891 ........................................................................ 67892 ........................................................................ 67893 ........................................................................ 67894 ........................................................................ 67895 ........................................................................ 67896 ........................................................................ 67897 ........................................................................ 67898 ........................................................................ 67899 ........................................................................ 67900 ........................................................................ 67901 ........................................................................ 67902 ........................................................................ 67903 ........................................................................ 67904 ........................................................................ 67905 ........................................................................ 67906 ........................................................................ 67907 ........................................................................ 67908 ........................................................................ 67909 ........................................................................ 67910 ........................................................................ 67911 ........................................................................ 67912 ........................................................................ 67913 ........................................................................ 67914 ........................................................................ 67915 ........................................................................ 67916 ........................................................................ 67917 ........................................................................ 67918 ........................................................................ 67919 ........................................................................ 67920 ........................................................................ 67921 ........................................................................ 67922 ........................................................................ 67923 ........................................................................ 67924 ........................................................................ 67925 ........................................................................ 67926 ........................................................................ 67927 ........................................................................ 67928 ........................................................................ 67929 ........................................................................ 67930 ........................................................................ 67931 ........................................................................ 67932 ........................................................................ 67933 ........................................................................ 67934 ........................................................................ 67935 ........................................................................ 67936 ........................................................................ 67937 ........................................................................ 67938 ........................................................................ 67939 ........................................................................ 67940 ........................................................................ 67941 ........................................................................ 67942 ........................................................................ 67943 ........................................................................ 67944 ........................................................................ 67945 ........................................................................ 67946 ........................................................................ 67947 ........................................................................ 67948 ........................................................................ 67949 ........................................................................ 67950 ........................................................................ 67951 ........................................................................ 67952 ........................................................................ 67953 ........................................................................ 67954 ........................................................................ 67955 ........................................................................ 67956 ........................................................................ 67957 ........................................................................ 67958 ........................................................................ 67959 ........................................................................ 67960 ........................................................................ 67961 ........................................................................ 67962 ........................................................................ 67963 ........................................................................ 67964 ........................................................................ 67965 ........................................................................ 67966 ........................................................................ 67967 ........................................................................ 67968 ........................................................................ 67969 ........................................................................ 67970 ........................................................................ 67971 ........................................................................ 67972 ........................................................................ 67973 ........................................................................ 67974 ........................................................................ 67975 ........................................................................ 67976 ........................................................................ 67977 ........................................................................ 67978 ........................................................................ 67979 ........................................................................ 67980 ........................................................................ 67981 ........................................................................ 67982 ........................................................................ 67983 ........................................................................ 67984 ........................................................................ 67985 ........................................................................ 67986 ........................................................................ 67987 ........................................................................ 67988 ........................................................................ 67989 ........................................................................ 67990 ........................................................................ 67991 ........................................................................ 67992 ........................................................................ 67993 ........................................................................ 67994 ........................................................................ 67995 ........................................................................ 67996 ........................................................................ 67997 ........................................................................ 67998 ........................................................................ 67999 ........................................................................ 68000 ........................................................................ 68001 ........................................................................ 68002 ........................................................................ 68003 ........................................................................ 68004 ........................................................................ 68005 ........................................................................ 68006 ........................................................................ 68007 ........................................................................ 68008 ........................................................................ 68009 ........................................................................ 68010 ........................................................................ 68011 ........................................................................ 68012 ........................................................................ 68013 ........................................................................ 68014 ........................................................................ 68015 ........................................................................ 68016 ........................................................................ 68017 ........................................................................ 68018 ........................................................................ 68019 ........................................................................ 68020 ........................................................................ 68021 ........................................................................ 68022 ........................................................................ 68023 ........................................................................ 68024 ........................................................................ 68025 ........................................................................ 68026 ........................................................................ 68027 ........................................................................ 68028 ........................................................................ 68029 ........................................................................ 68030 ........................................................................ 68031 ........................................................................ 68032 ........................................................................ 68033 ........................................................................ 68034 ........................................................................ 68035 ........................................................................ 68036 ........................................................................ 68037 ........................................................................ 68038 ........................................................................ 68039 ........................................................................ 68040 ........................................................................ 68041 ........................................................................ 68042 ........................................................................ 68043 ........................................................................ 68044 ........................................................................ 68045 ........................................................................ 68046 ........................................................................ 68047 ........................................................................ 68048 ........................................................................ 68049 ........................................................................ 68050 ........................................................................ 68051 ........................................................................ 68052 ........................................................................ 68053 ........................................................................ 68054 ........................................................................ 68055 ........................................................................ 68056 ........................................................................ 68057 ........................................................................ 68058 ........................................................................ 68059 ........................................................................ 68060 ........................................................................ 68061 ........................................................................ 68062 ........................................................................ 68063 ........................................................................ 68064 ........................................................................ 68065 ........................................................................ 68066 ........................................................................ 68067 ........................................................................ 68068 ........................................................................ 68069 ........................................................................ 68070 ........................................................................ 68071 ........................................................................ 68072 ........................................................................ 68073 ........................................................................ 68074 ........................................................................ 68075 ........................................................................ 68076 ........................................................................ 68077 ........................................................................ 68078 ........................................................................ 68079 ........................................................................ 68080 ........................................................................ 68081 ........................................................................ 68082 ........................................................................ 68083 ........................................................................ 68084 ........................................................................ 68085 ........................................................................ 68086 ........................................................................ 68087 ........................................................................ 68088 ........................................................................ 68089 ........................................................................ 68090 ........................................................................ 68091 ........................................................................ 68092 ........................................................................ 68093 ........................................................................ 68094 ........................................................................ 68095 ........................................................................ 68096 ........................................................................ 68097 ........................................................................ 68098 ........................................................................ 68099 ........................................................................ 68100 ........................................................................ 68101 ........................................................................ 68102 ........................................................................ 68103 ........................................................................ 68104 ........................................................................ 68105 ........................................................................ 68106 ........................................................................ 68107 ........................................................................ 68108 ........................................................................ 68109 ........................................................................ 68110 ........................................................................ 68111 ........................................................................ 68112 ........................................................................ 68113 ........................................................................ 68114 ........................................................................ 68115 ........................................................................ 68116 ........................................................................ 68117 ........................................................................ 68118 ........................................................................ 68119 ........................................................................ 68120 ........................................................................ 68121 ........................................................................ 68122 ........................................................................ 68123 ........................................................................ 68124 ........................................................................ 68125 ........................................................................ 68126 ........................................................................ 68127 ........................................................................ 68128 ........................................................................ 68129 ........................................................................ 68130 ........................................................................ 68131 ........................................................................ 68132 ........................................................................ 68133 ........................................................................ 68134 ........................................................................ 68135 ........................................................................ 68136 ........................................................................ 68137 ........................................................................ 68138 ........................................................................ 68139 ........................................................................ 68140 ........................................................................ 68141 ........................................................................ 68142 ........................................................................ 68143 ........................................................................ 68144 ........................................................................ 68145 ........................................................................ 68146 ........................................................................ 68147 ........................................................................ 68148 ........................................................................ 68149 ........................................................................ 68150 ........................................................................ 68151 ........................................................................ 68152 ........................................................................ 68153 ........................................................................ 68154 ........................................................................ 68155 ........................................................................ 68156 ........................................................................ 68157 ........................................................................ 68158 ........................................................................ 68159 ........................................................................ 68160 ........................................................................ 68161 ........................................................................ 68162 ........................................................................ 68163 ........................................................................ 68164 ........................................................................ 68165 ........................................................................ 68166 ........................................................................ 68167 ........................................................................ 68168 ........................................................................ 68169 ........................................................................ 68170 ........................................................................ 68171 ........................................................................ 68172 ........................................................................ 68173 ........................................................................ 68174 ........................................................................ 68175 ........................................................................ 68176 ........................................................................ 68177 ........................................................................ 68178 ........................................................................ 68179 ........................................................................ 68180 ........................................................................ 68181 ........................................................................ 68182 ........................................................................ 68183 ........................................................................ 68184 ........................................................................ 68185 ........................................................................ 68186 ........................................................................ 68187 ........................................................................ 68188 ........................................................................ 68189 ........................................................................ 68190 ........................................................................ 68191 ........................................................................ 68192 ........................................................................ 68193 ........................................................................ 68194 ........................................................................ 68195 ........................................................................ 68196 ........................................................................ 68197 ........................................................................ 68198 ........................................................................ 68199 ........................................................................ 68200 ........................................................................ 68201 ........................................................................ 68202 ........................................................................ 68203 ........................................................................ 68204 ........................................................................ 68205 ........................................................................ 68206 ........................................................................ 68207 ........................................................................ 68208 ........................................................................ 68209 ........................................................................ 68210 ........................................................................ 68211 ........................................................................ 68212 ........................................................................ 68213 ........................................................................ 68214 ........................................................................ 68215 ........................................................................ 68216 ........................................................................ 68217 ........................................................................ 68218 ........................................................................ 68219 ........................................................................ 68220 ........................................................................ 68221 ........................................................................ 68222 ........................................................................ 68223 ........................................................................ 68224 ........................................................................ 68225 ........................................................................ 68226 ........................................................................ 68227 ........................................................................ 68228 ........................................................................ 68229 ........................................................................ 68230 ........................................................................ 68231 ........................................................................ 68232 ........................................................................ 68233 ........................................................................ 68234 ........................................................................ 68235 ........................................................................ 68236 ........................................................................ 68237 ........................................................................ 68238 ........................................................................ 68239 ........................................................................ 68240 ........................................................................ 68241 ........................................................................ 68242 ........................................................................ 68243 ........................................................................ 68244 ........................................................................ 68245 ........................................................................ 68246 ........................................................................ 68247 ........................................................................ 68248 ........................................................................ 68249 ........................................................................ 68250 ........................................................................ 68251 ........................................................................ 68252 ........................................................................ 68253 ........................................................................ 68254 ........................................................................ 68255 ........................................................................ 68256 ........................................................................ 68257 ........................................................................ 68258 ........................................................................ 68259 ........................................................................ 68260 ........................................................................ 68261 ........................................................................ 68262 ........................................................................ 68263 ........................................................................ 68264 ........................................................................ 68265 ........................................................................ 68266 ........................................................................ 68267 ........................................................................ 68268 ........................................................................ 68269 ........................................................................ 68270 ........................................................................ 68271 ........................................................................ 68272 ........................................................................ 68273 ........................................................................ 68274 ........................................................................ 68275 ........................................................................ 68276 ........................................................................ 68277 ........................................................................ 68278 ........................................................................ 68279 ........................................................................ 68280 ........................................................................ 68281 ........................................................................ 68282 ........................................................................ 68283 ........................................................................ 68284 ........................................................................ 68285 ........................................................................ 68286 ........................................................................ 68287 ........................................................................ 68288 ........................................................................ 68289 ........................................................................ 68290 ........................................................................ 68291 ........................................................................ 68292 ........................................................................ 68293 ........................................................................ 68294 ........................................................................ 68295 ........................................................................ 68296 ........................................................................ 68297 ........................................................................ 68298 ........................................................................ 68299 ........................................................................ 68300 ........................................................................ 68301 ........................................................................ 68302 ........................................................................ 68303 ........................................................................ 68304 ........................................................................ 68305 ........................................................................ 68306 ........................................................................ 68307 ........................................................................ 68308 ........................................................................ 68309 ........................................................................ 68310 ........................................................................ 68311 ........................................................................ 68312 ........................................................................ 68313 ........................................................................ 68314 ........................................................................ 68315 ........................................................................ 68316 ........................................................................ 68317 ........................................................................ 68318 ........................................................................ 68319 ........................................................................ 68320 ........................................................................ 68321 ........................................................................ 68322 ........................................................................ 68323 ........................................................................ 68324 ........................................................................ 68325 ........................................................................ 68326 ........................................................................ 68327 ........................................................................ 68328 ........................................................................ 68329 ........................................................................ 68330 ........................................................................ 68331 ........................................................................ 68332 ........................................................................ 68333 ........................................................................ 68334 ........................................................................ 68335 ........................................................................ 68336 ........................................................................ 68337 ........................................................................ 68338 ........................................................................ 68339 ........................................................................ 68340 ........................................................................ 68341 ........................................................................ 68342 ........................................................................ 68343 ........................................................................ 68344 ........................................................................ 68345 ........................................................................ 68346 ........................................................................ 68347 ........................................................................ 68348 ........................................................................ 68349 ........................................................................ 68350 ........................................................................ 68351 ........................................................................ 68352 ........................................................................ 68353 ........................................................................ 68354 ........................................................................ 68355 ........................................................................ 68356 ........................................................................ 68357 ........................................................................ 68358 ........................................................................ 68359 ........................................................................ 68360 ........................................................................ 68361 ........................................................................ 68362 ........................................................................ 68363 ........................................................................ 68364 ........................................................................ 68365 ........................................................................ 68366 ........................................................................ 68367 ........................................................................ 68368 ........................................................................ 68369 ........................................................................ 68370 ........................................................................ 68371 ........................................................................ 68372 ........................................................................ 68373 ........................................................................ 68374 ........................................................................ 68375 ........................................................................ 68376 ........................................................................ 68377 ........................................................................ 68378 ........................................................................ 68379 ........................................................................ 68380 ........................................................................ 68381 ........................................................................ 68382 ........................................................................ 68383 ........................................................................ 68384 ........................................................................ 68385 ........................................................................ 68386 ........................................................................ 68387 ........................................................................ 68388 ........................................................................ 68389 ........................................................................ 68390 ........................................................................ 68391 ........................................................................ 68392 ........................................................................ 68393 ........................................................................ 68394 ........................................................................ 68395 ........................................................................ 68396 ........................................................................ 68397 ........................................................................ 68398 ........................................................................ 68399 ........................................................................ 68400 ........................................................................ 68401 ........................................................................ 68402 ........................................................................ 68403 ........................................................................ 68404 ........................................................................ 68405 ........................................................................ 68406 ........................................................................ 68407 ........................................................................ 68408 ........................................................................ 68409 ........................................................................ 68410 ........................................................................ 68411 ........................................................................ 68412 ........................................................................ 68413 ........................................................................ 68414 ........................................................................ 68415 ........................................................................ 68416 ........................................................................ 68417 ........................................................................ 68418 ........................................................................ 68419 ........................................................................ 68420 ........................................................................ 68421 ........................................................................ 68422 ........................................................................ 68423 ........................................................................ 68424 ........................................................................ 68425 ........................................................................ 68426 ........................................................................ 68427 ........................................................................ 68428 ........................................................................ 68429 ........................................................................ 68430 ........................................................................ 68431 ........................................................................ 68432 ........................................................................ 68433 ........................................................................ 68434 ........................................................................ 68435 ........................................................................ 68436 ........................................................................ 68437 ........................................................................ 68438 ........................................................................ 68439 ........................................................................ 68440 ........................................................................ 68441 ........................................................................ 68442 ........................................................................ 68443 ........................................................................ 68444 ........................................................................ 68445 ........................................................................ 68446 ........................................................................ 68447 ........................................................................ 68448 ........................................................................ 68449 ........................................................................ 68450 ........................................................................ 68451 ........................................................................ 68452 ........................................................................ 68453 ........................................................................ 68454 ........................................................................ 68455 ........................................................................ 68456 ........................................................................ 68457 ........................................................................ 68458 ........................................................................ 68459 ........................................................................ 68460 ........................................................................ 68461 ........................................................................ 68462 ........................................................................ 68463 ........................................................................ 68464 ........................................................................ 68465 ........................................................................ 68466 ........................................................................ 68467 ........................................................................ 68468 ........................................................................ 68469 ........................................................................ 68470 ........................................................................ 68471 ........................................................................ 68472 ........................................................................ 68473 ........................................................................ 68474 ........................................................................ 68475 ........................................................................ 68476 ........................................................................ 68477 ........................................................................ 68478 ........................................................................ 68479 ........................................................................ 68480 ........................................................................ 68481 ........................................................................ 68482 ........................................................................ 68483 ........................................................................ 68484 ........................................................................ 68485 ........................................................................ 68486 ........................................................................ 68487 ........................................................................ 68488 ........................................................................ 68489 ........................................................................ 68490 ........................................................................ 68491 ........................................................................ 68492 ........................................................................ 68493 ........................................................................ 68494 ........................................................................ 68495 ........................................................................ 68496 ........................................................................ 68497 ........................................................................ 68498 ........................................................................ 68499 ........................................................................ 68500 ........................................................................ 68501 ........................................................................ 68502 ........................................................................ 68503 ........................................................................ 68504 ........................................................................ 68505 ........................................................................ 68506 ........................................................................ 68507 ........................................................................ 68508 ........................................................................ 68509 ........................................................................ 68510 ........................................................................ 68511 ........................................................................ 68512 ........................................................................ 68513 ........................................................................ 68514 ........................................................................ 68515 ........................................................................ 68516 ........................................................................ 68517 ........................................................................ 68518 ........................................................................ 68519 ........................................................................ 68520 ........................................................................ 68521 ........................................................................ 68522 ........................................................................ 68523 ........................................................................ 68524 ........................................................................ 68525 ........................................................................ 68526 ........................................................................ 68527 ........................................................................ 68528 ........................................................................ 68529 ........................................................................ 68530 ........................................................................ 68531 ........................................................................ 68532 ........................................................................ 68533 ........................................................................ 68534 ........................................................................ 68535 ........................................................................ 68536 ........................................................................ 68537 ........................................................................ 68538 ........................................................................ 68539 ........................................................................ 68540 ........................................................................ 68541 ........................................................................ 68542 ........................................................................ 68543 ........................................................................ 68544 ........................................................................ 68545 ........................................................................ 68546 ........................................................................ 68547 ........................................................................ 68548 ........................................................................ 68549 ........................................................................ 68550 ........................................................................ 68551 ........................................................................ 68552 ........................................................................ 68553 ........................................................................ 68554 ........................................................................ 68555 ........................................................................ 68556 ........................................................................ 68557 ........................................................................ 68558 ........................................................................ 68559 ........................................................................ 68560 ........................................................................ 68561 ........................................................................ 68562 ........................................................................ 68563 ........................................................................ 68564 ........................................................................ 68565 ........................................................................ 68566 ........................................................................ 68567 ........................................................................ 68568 ........................................................................ 68569 ........................................................................ 68570 ........................................................................ 68571 ........................................................................ 68572 ........................................................................ 68573 ........................................................................ 68574 ........................................................................ 68575 ........................................................................ 68576 ........................................................................ 68577 ........................................................................ 68578 ........................................................................ 68579 ........................................................................ 68580 ........................................................................ 68581 ........................................................................ 68582 ........................................................................ 68583 ........................................................................ 68584 ........................................................................ 68585 ........................................................................ 68586 ........................................................................ 68587 ........................................................................ 68588 ........................................................................ 68589 ........................................................................ 68590 ........................................................................ 68591 ........................................................................ 68592 ........................................................................ 68593 ........................................................................ 68594 ........................................................................ 68595 ........................................................................ 68596 ........................................................................ 68597 ........................................................................ 68598 ........................................................................ 68599 ........................................................................ 68600 ........................................................................ 68601 ........................................................................ 68602 ........................................................................ 68603 ........................................................................ 68604 ........................................................................ 68605 ........................................................................ 68606 ........................................................................ 68607 ........................................................................ 68608 ........................................................................ 68609 ........................................................................ 68610 ........................................................................ 68611 ........................................................................ 68612 ........................................................................ 68613 ........................................................................ 68614 ........................................................................ 68615 ........................................................................ 68616 ........................................................................ 68617 ........................................................................ 68618 ........................................................................ 68619 ........................................................................ 68620 ........................................................................ 68621 ........................................................................ 68622 ........................................................................ 68623 ........................................................................ 68624 ........................................................................ 68625 ........................................................................ 68626 ........................................................................ 68627 ........................................................................ 68628 ........................................................................ 68629 ........................................................................ 68630 ........................................................................ 68631 ........................................................................ 68632 ........................................................................ 68633 ........................................................................ 68634 ........................................................................ 68635 ........................................................................ 68636 ........................................................................ 68637 ........................................................................ 68638 ........................................................................ 68639 ........................................................................ 68640 ........................................................................ 68641 ........................................................................ 68642 ........................................................................ 68643 ........................................................................ 68644 ........................................................................ 68645 ........................................................................ 68646 ........................................................................ 68647 ........................................................................ 68648 ........................................................................ 68649 ........................................................................ 68650 ........................................................................ 68651 ........................................................................ 68652 ........................................................................ 68653 ........................................................................ 68654 ........................................................................ 68655 ........................................................................ 68656 ........................................................................ 68657 ........................................................................ 68658 ........................................................................ 68659 ........................................................................ 68660 ........................................................................ 68661 ........................................................................ 68662 ........................................................................ 68663 ........................................................................ 68664 ........................................................................ 68665 ........................................................................ 68666 ........................................................................ 68667 ........................................................................ 68668 ........................................................................ 68669 ........................................................................ 68670 ........................................................................ 68671 ........................................................................ 68672 ........................................................................ 68673 ........................................................................ 68674 ........................................................................ 68675 ........................................................................ 68676 ........................................................................ 68677 ........................................................................ 68678 ........................................................................ 68679 ........................................................................ 68680 ........................................................................ 68681 ........................................................................ 68682 ........................................................................ 68683 ........................................................................ 68684 ........................................................................ 68685 ........................................................................ 68686 ........................................................................ 68687 ........................................................................ 68688 ........................................................................ 68689 ........................................................................ 68690 ........................................................................ 68691 ........................................................................ 68692 ........................................................................ 68693 ........................................................................ 68694 ........................................................................ 68695 ........................................................................ 68696 ........................................................................ 68697 ........................................................................ 68698 ........................................................................ 68699 ........................................................................ 68700 ........................................................................ 68701 ........................................................................ 68702 ........................................................................ 68703 ........................................................................ 68704 ........................................................................ 68705 ........................................................................ 68706 ........................................................................ 68707 ........................................................................ 68708 ........................................................................ 68709 ........................................................................ 68710 ........................................................................ 68711 ........................................................................ 68712 ........................................................................ 68713 ........................................................................ 68714 ........................................................................ 68715 ........................................................................ 68716 ........................................................................ 68717 ........................................................................ 68718 ........................................................................ 68719 ........................................................................ 68720 ........................................................................ 68721 ........................................................................ 68722 ........................................................................ 68723 ........................................................................ 68724 ........................................................................ 68725 ........................................................................ 68726 ........................................................................ 68727 ........................................................................ 68728 ........................................................................ 68729 ........................................................................ 68730 ........................................................................ 68731 ........................................................................ 68732 ........................................................................ 68733 ........................................................................ 68734 ........................................................................ 68735 ........................................................................ 68736 ........................................................................ 68737 ........................................................................ 68738 ........................................................................ 68739 ........................................................................ 68740 ........................................................................ 68741 ........................................................................ 68742 ........................................................................ 68743 ........................................................................ 68744 ........................................................................ 68745 ........................................................................ 68746 ........................................................................ 68747 ........................................................................ 68748 ........................................................................ 68749 ........................................................................ 68750 ........................................................................ 68751 ........................................................................ 68752 ........................................................................ 68753 ........................................................................ 68754 ........................................................................ 68755 ........................................................................ 68756 ........................................................................ 68757 ........................................................................ 68758 ........................................................................ 68759 ........................................................................ 68760 ........................................................................ 68761 ........................................................................ 68762 ........................................................................ 68763 ........................................................................ 68764 ........................................................................ 68765 ........................................................................ 68766 ........................................................................ 68767 ........................................................................ 68768 ........................................................................ 68769 ........................................................................ 68770 ........................................................................ 68771 ........................................................................ 68772 ........................................................................ 68773 ........................................................................ 68774 ........................................................................ 68775 ........................................................................ 68776 ........................................................................ 68777 ........................................................................ 68778 ........................................................................ 68779 ........................................................................ 68780 ........................................................................ 68781 ........................................................................ 68782 ........................................................................ 68783 ........................................................................ 68784 ........................................................................ 68785 ........................................................................ 68786 ........................................................................ 68787 ........................................................................ 68788 ........................................................................ 68789 ........................................................................ 68790 ........................................................................ 68791 ........................................................................ 68792 ........................................................................ 68793 ........................................................................ 68794 ........................................................................ 68795 ........................................................................ 68796 ........................................................................ 68797 ........................................................................ 68798 ........................................................................ 68799 ........................................................................ 68800 ........................................................................ 68801 ........................................................................ 68802 ........................................................................ 68803 ........................................................................ 68804 ........................................................................ 68805 ........................................................................ 68806 ........................................................................ 68807 ........................................................................ 68808 ........................................................................ 68809 ........................................................................ 68810 ........................................................................ 68811 ........................................................................ 68812 ........................................................................ 68813 ........................................................................ 68814 ........................................................................ 68815 ........................................................................ 68816 ........................................................................ 68817 ........................................................................ 68818 ........................................................................ 68819 ........................................................................ 68820 ........................................................................ 68821 ........................................................................ 68822 ........................................................................ 68823 ........................................................................ 68824 ........................................................................ 68825 ........................................................................ 68826 ........................................................................ 68827 ........................................................................ 68828 ........................................................................ 68829 ........................................................................ 68830 ........................................................................ 68831 ........................................................................ 68832 ........................................................................ 68833 ........................................................................ 68834 ........................................................................ 68835 ........................................................................ 68836 ........................................................................ 68837 ........................................................................ 68838 ........................................................................ 68839 ........................................................................ 68840 ........................................................................ 68841 ........................................................................ 68842 ........................................................................ 68843 ........................................................................ 68844 ........................................................................ 68845 ........................................................................ 68846 ........................................................................ 68847 ........................................................................ 68848 ........................................................................ 68849 ........................................................................ 68850 ........................................................................ 68851 ........................................................................ 68852 ........................................................................ 68853 ........................................................................ 68854 ........................................................................ 68855 ........................................................................ 68856 ........................................................................ 68857 ........................................................................ 68858 ........................................................................ 68859 ........................................................................ 68860 ........................................................................ 68861 ........................................................................ 68862 ........................................................................ 68863 ........................................................................ 68864 ........................................................................ 68865 ........................................................................ 68866 ........................................................................ 68867 ........................................................................ 68868 ........................................................................ 68869 ........................................................................ 68870 ........................................................................ 68871 ........................................................................ 68872 ........................................................................ 68873 ........................................................................ 68874 ........................................................................ 68875 ........................................................................ 68876 ........................................................................ 68877 ........................................................................ 68878 ........................................................................ 68879 ........................................................................ 68880 ........................................................................ 68881 ........................................................................ 68882 ........................................................................ 68883 ........................................................................ 68884 ........................................................................ 68885 ........................................................................ 68886 ........................................................................ 68887 ........................................................................ 68888 ........................................................................ 68889 ........................................................................ 68890 ........................................................................ 68891 ........................................................................ 68892 ........................................................................ 68893 ........................................................................ 68894 ........................................................................ 68895 ........................................................................ 68896 ........................................................................ 68897 ........................................................................ 68898 ........................................................................ 68899 ........................................................................ 68900 ........................................................................ 68901 ........................................................................ 68902 ........................................................................ 68903 ........................................................................ 68904 ........................................................................ 68905 ........................................................................ 68906 ........................................................................ 68907 ........................................................................ 68908 ........................................................................ 68909 ........................................................................ 68910 ........................................................................ 68911 ........................................................................ 68912 ........................................................................ 68913 ........................................................................ 68914 ........................................................................ 68915 ........................................................................ 68916 ........................................................................ 68917 ........................................................................ 68918 ........................................................................ 68919 ........................................................................ 68920 ........................................................................ 68921 ........................................................................ 68922 ........................................................................ 68923 ........................................................................ 68924 ........................................................................ 68925 ........................................................................ 68926 ........................................................................ 68927 ........................................................................ 68928 ........................................................................ 68929 ........................................................................ 68930 ........................................................................ 68931 ........................................................................ 68932 ........................................................................ 68933 ........................................................................ 68934 ........................................................................ 68935 ........................................................................ 68936 ........................................................................ 68937 ........................................................................ 68938 ........................................................................ 68939 ........................................................................ 68940 ........................................................................ 68941 ........................................................................ 68942 ........................................................................ 68943 ........................................................................ 68944 ........................................................................ 68945 ........................................................................ 68946 ........................................................................ 68947 ........................................................................ 68948 ........................................................................ 68949 ........................................................................ 68950 ........................................................................ 68951 ........................................................................ 68952 ........................................................................ 68953 ........................................................................ 68954 ........................................................................ 68955 ........................................................................ 68956 ........................................................................ 68957 ........................................................................ 68958 ........................................................................ 68959 ........................................................................ 68960 ........................................................................ 68961 ........................................................................ 68962 ........................................................................ 68963 ........................................................................ 68964 ........................................................................ 68965 ........................................................................ 68966 ........................................................................ 68967 ........................................................................ 68968 ........................................................................ 68969 ........................................................................ 68970 ........................................................................ 68971 ........................................................................ 68972 ........................................................................ 68973 ........................................................................ 68974 ........................................................................ 68975 ........................................................................ 68976 ........................................................................ 68977 ........................................................................ 68978 ........................................................................ 68979 ........................................................................ 68980 ........................................................................ 68981 ........................................................................ 68982 ........................................................................ 68983 ........................................................................ 68984 ........................................................................ 68985 ........................................................................ 68986 ........................................................................ 68987 ........................................................................ 68988 ........................................................................ 68989 ........................................................................ 68990 ........................................................................ 68991 ........................................................................ 68992 ........................................................................ 68993 ........................................................................ 68994 ........................................................................ 68995 ........................................................................ 68996 ........................................................................ 68997 ........................................................................ 68998 ........................................................................ 68999 ........................................................................ 69000 ........................................................................ 69001 ........................................................................ 69002 ........................................................................ 69003 ........................................................................ 69004 ........................................................................ 69005 ........................................................................ 69006 ........................................................................ 69007 ........................................................................ 69008 ........................................................................ 69009 ........................................................................ 69010 ........................................................................ 69011 ........................................................................ 69012 ........................................................................ 69013 ........................................................................ 69014 ........................................................................ 69015 ........................................................................ 69016 ........................................................................ 69017 ........................................................................ 69018 ........................................................................ 69019 ........................................................................ 69020 ........................................................................ 69021 ........................................................................ 69022 ........................................................................ 69023 ........................................................................ 69024 ........................................................................ 69025 ........................................................................ 69026 ........................................................................ 69027 ........................................................................ 69028 ........................................................................ 69029 ........................................................................ 69030 ........................................................................ 69031 ........................................................................ 69032 ........................................................................ 69033 ........................................................................ 69034 ........................................................................ 69035 ........................................................................ 69036 ........................................................................ 69037 ........................................................................ 69038 ........................................................................ 69039 ........................................................................ 69040 ........................................................................ 69041 ........................................................................ 69042 ........................................................................ 69043 ........................................................................ 69044 ........................................................................ 69045 ........................................................................ 69046 ........................................................................ 69047 ........................................................................ 69048 ........................................................................ 69049 ........................................................................ 69050 ........................................................................ 69051 ........................................................................ 69052 ........................................................................ 69053 ........................................................................ 69054 ........................................................................ 69055 ........................................................................ 69056 ........................................................................ 69057 ........................................................................ 69058 ........................................................................ 69059 ........................................................................ 69060 ........................................................................ 69061 ........................................................................ 69062 ........................................................................ 69063 ........................................................................ 69064 ........................................................................ 69065 ........................................................................ 69066 ........................................................................ 69067 ........................................................................ 69068 ........................................................................ 69069 ........................................................................ 69070 ........................................................................ 69071 ........................................................................ 69072 ........................................................................ 69073 ........................................................................ 69074 ........................................................................ 69075 ........................................................................ 69076 ........................................................................ 69077 ........................................................................ 69078 ........................................................................ 69079 ........................................................................ 69080 ........................................................................ 69081 ........................................................................ 69082 ........................................................................ 69083 ........................................................................ 69084 ........................................................................ 69085 ........................................................................ 69086 ........................................................................ 69087 ........................................................................ 69088 ........................................................................ 69089 ........................................................................ 69090 ........................................................................ 69091 ........................................................................ 69092 ........................................................................ 69093 ........................................................................ 69094 ........................................................................ 69095 ........................................................................ 69096 ........................................................................ 69097 ........................................................................ 69098 ........................................................................ 69099 ........................................................................ 69100 ........................................................................ 69101 ........................................................................ 69102 ........................................................................ 69103 ........................................................................ 69104 ........................................................................ 69105 ........................................................................ 69106 ........................................................................ 69107 ........................................................................ 69108 ........................................................................ 69109 ........................................................................ 69110 ........................................................................ 69111 ........................................................................ 69112 ........................................................................ 69113 ........................................................................ 69114 ........................................................................ 69115 ........................................................................ 69116 ........................................................................ 69117 ........................................................................ 69118 ........................................................................ 69119 ........................................................................ 69120 ........................................................................ 69121 ........................................................................ 69122 ........................................................................ 69123 ........................................................................ 69124 ........................................................................ 69125 ........................................................................ 69126 ........................................................................ 69127 ........................................................................ 69128 ........................................................................ 69129 ........................................................................ 69130 ........................................................................ 69131 ........................................................................ 69132 ........................................................................ 69133 ........................................................................ 69134 ........................................................................ 69135 ........................................................................ 69136 ........................................................................ 69137 ........................................................................ 69138 ........................................................................ 69139 ........................................................................ 69140 ........................................................................ 69141 ........................................................................ 69142 ........................................................................ 69143 ........................................................................ 69144 ........................................................................ 69145 ........................................................................ 69146 ........................................................................ 69147 ........................................................................ 69148 ........................................................................ 69149 ........................................................................ 69150 ........................................................................ 69151 ........................................................................ 69152 ........................................................................ 69153 ........................................................................ 69154 ........................................................................ 69155 ........................................................................ 69156 ........................................................................ 69157 ........................................................................ 69158 ........................................................................ 69159 ........................................................................ 69160 ........................................................................ 69161 ........................................................................ 69162 ........................................................................ 69163 ........................................................................ 69164 ........................................................................ 69165 ........................................................................ 69166 ........................................................................ 69167 ........................................................................ 69168 ........................................................................ 69169 ........................................................................ 69170 ........................................................................ 69171 ........................................................................ 69172 ........................................................................ 69173 ........................................................................ 69174 ........................................................................ 69175 ........................................................................ 69176 ........................................................................ 69177 ........................................................................ 69178 ........................................................................ 69179 ........................................................................ 69180 ........................................................................ 69181 ........................................................................ 69182 ........................................................................ 69183 ........................................................................ 69184 ........................................................................ 69185 ........................................................................ 69186 ........................................................................ 69187 ........................................................................ 69188 ........................................................................ 69189 ........................................................................ 69190 ........................................................................ 69191 ........................................................................ 69192 ........................................................................ 69193 ........................................................................ 69194 ........................................................................ 69195 ........................................................................ 69196 ........................................................................ 69197 ........................................................................ 69198 ........................................................................ 69199 ........................................................................ 69200 ........................................................................ 69201 ........................................................................ 69202 ........................................................................ 69203 ........................................................................ 69204 ........................................................................ 69205 ........................................................................ 69206 ........................................................................ 69207 ........................................................................ 69208 ........................................................................ 69209 ........................................................................ 69210 ........................................................................ 69211 ........................................................................ 69212 ........................................................................ 69213 ........................................................................ 69214 ........................................................................ 69215 ........................................................................ 69216 ........................................................................ 69217 ........................................................................ 69218 ........................................................................ 69219 ........................................................................ 69220 ........................................................................ 69221 ........................................................................ 69222 ........................................................................ 69223 ........................................................................ 69224 ........................................................................ 69225 ........................................................................ 69226 ........................................................................ 69227 ........................................................................ 69228 ........................................................................ 69229 ........................................................................ 69230 ........................................................................ 69231 ........................................................................ 69232 ........................................................................ 69233 ........................................................................ 69234 ........................................................................ 69235 ........................................................................ 69236 ........................................................................ 69237 ........................................................................ 69238 ........................................................................ 69239 ........................................................................ 69240 ........................................................................ 69241 ........................................................................ 69242 ........................................................................ 69243 ........................................................................ 69244 ........................................................................ 69245 ........................................................................ 69246 ........................................................................ 69247 ........................................................................ 69248 ........................................................................ 69249 ........................................................................ 69250 ........................................................................ 69251 ........................................................................ 69252 ........................................................................ 69253 ........................................................................ 69254 ........................................................................ 69255 ........................................................................ 69256 ........................................................................ 69257 ........................................................................ 69258 ........................................................................ 69259 ........................................................................ 69260 ........................................................................ 69261 ........................................................................ 69262 ........................................................................ 69263 ........................................................................ 69264 ........................................................................ 69265 ........................................................................ 69266 ........................................................................ 69267 ........................................................................ 69268 ........................................................................ 69269 ........................................................................ 69270 ........................................................................ 69271 ........................................................................ 69272 ........................................................................ 69273 ........................................................................ 69274 ........................................................................ 69275 ........................................................................ 69276 ........................................................................ 69277 ........................................................................ 69278 ........................................................................ 69279 ........................................................................ 69280 ........................................................................ 69281 ........................................................................ 69282 ........................................................................ 69283 ........................................................................ 69284 ........................................................................ 69285 ........................................................................ 69286 ........................................................................ 69287 ........................................................................ 69288 ........................................................................ 69289 ........................................................................ 69290 ........................................................................ 69291 ........................................................................ 69292 ........................................................................ 69293 ........................................................................ 69294 ........................................................................ 69295 ........................................................................ 69296 ........................................................................ 69297 ........................................................................ 69298 ........................................................................ 69299 ........................................................................ 69300 ........................................................................ 69301 ........................................................................ 69302 ........................................................................ 69303 ........................................................................ 69304 ........................................................................ 69305 ........................................................................ 69306 ........................................................................ 69307 ........................................................................ 69308 ........................................................................ 69309 ........................................................................ 69310 ........................................................................ 69311 ........................................................................ 69312 ........................................................................ 69313 ........................................................................ 69314 ........................................................................ 69315 ........................................................................ 69316 ........................................................................ 69317 ........................................................................ 69318 ........................................................................ 69319 ........................................................................ 69320 ........................................................................ 69321 ........................................................................ 69322 ........................................................................ 69323 ........................................................................ 69324 ........................................................................ 69325 ........................................................................ 69326 ........................................................................ 69327 ........................................................................ 69328 ........................................................................ 69329 ........................................................................ 69330 ........................................................................ 69331 ........................................................................ 69332 ........................................................................ 69333 ........................................................................ 69334 ........................................................................ 69335 ........................................................................ 69336 ........................................................................ 69337 ........................................................................ 69338 ........................................................................ 69339 ........................................................................ 69340 ........................................................................ 69341 ........................................................................ 69342 ........................................................................ 69343 ........................................................................ 69344 ........................................................................ 69345 ........................................................................ 69346 ........................................................................ 69347 ........................................................................ 69348 ........................................................................ 69349 ........................................................................ 69350 ........................................................................ 69351 ........................................................................ 69352 ........................................................................ 69353 ........................................................................ 69354 ........................................................................ 69355 ........................................................................ 69356 ........................................................................ 69357 ........................................................................ 69358 ........................................................................ 69359 ........................................................................ 69360 ........................................................................ 69361 ........................................................................ 69362 ........................................................................ 69363 ........................................................................ 69364 ........................................................................ 69365 ........................................................................ 69366 ........................................................................ 69367 ........................................................................ 69368 ........................................................................ 69369 ........................................................................ 69370 ........................................................................ 69371 ........................................................................ 69372 ........................................................................ 69373 ........................................................................ 69374 ........................................................................ 69375 ........................................................................ 69376 ........................................................................ 69377 ........................................................................ 69378 ........................................................................ 69379 ........................................................................ 69380 ........................................................................ 69381 ........................................................................ 69382 ........................................................................ 69383 ........................................................................ 69384 ........................................................................ 69385 ........................................................................ 69386 ........................................................................ 69387 ........................................................................ 69388 ........................................................................ 69389 ........................................................................ 69390 ........................................................................ 69391 ........................................................................ 69392 ........................................................................ 69393 ........................................................................ 69394 ........................................................................ 69395 ........................................................................ 69396 ........................................................................ 69397 ........................................................................ 69398 ........................................................................ 69399 ........................................................................ 69400 ........................................................................ 69401 ........................................................................ 69402 ........................................................................ 69403 ........................................................................ 69404 ........................................................................ 69405 ........................................................................ 69406 ........................................................................ 69407 ........................................................................ 69408 ........................................................................ 69409 ........................................................................ 69410 ........................................................................ 69411 ........................................................................ 69412 ........................................................................ 69413 ........................................................................ 69414 ........................................................................ 69415 ........................................................................ 69416 ........................................................................ 69417 ........................................................................ 69418 ........................................................................ 69419 ........................................................................ 69420 ........................................................................ 69421 ........................................................................ 69422 ........................................................................ 69423 ........................................................................ 69424 ........................................................................ 69425 ........................................................................ 69426 ........................................................................ 69427 ........................................................................ 69428 ........................................................................ 69429 ........................................................................ 69430 ........................................................................ 69431 ........................................................................ 69432 ........................................................................ 69433 ........................................................................ 69434 ........................................................................ 69435 ........................................................................ 69436 ........................................................................ 69437 ........................................................................ 69438 ........................................................................ 69439 ........................................................................ 69440 ........................................................................ 69441 ........................................................................ 69442 ........................................................................ 69443 ........................................................................ 69444 ........................................................................ 69445 ........................................................................ 69446 ........................................................................ 69447 ........................................................................ 69448 ........................................................................ 69449 ........................................................................ 69450 ........................................................................ 69451 ........................................................................ 69452 ........................................................................ 69453 ........................................................................ 69454 ........................................................................ 69455 ........................................................................ 69456 ........................................................................ 69457 ........................................................................ 69458 ........................................................................ 69459 ........................................................................ 69460 ........................................................................ 69461 ........................................................................ 69462 ........................................................................ 69463 ........................................................................ 69464 ........................................................................ 69465 ........................................................................ 69466 ........................................................................ 69467 ........................................................................ 69468 ........................................................................ 69469 ........................................................................ 69470 ........................................................................ 69471 ........................................................................ 69472 ........................................................................ 69473 ........................................................................ 69474 ........................................................................ 69475 ........................................................................ 69476 ........................................................................ 69477 ........................................................................ 69478 ........................................................................ 69479 ........................................................................ 69480 ........................................................................ 69481 ........................................................................ 69482 ........................................................................ 69483 ........................................................................ 69484 ........................................................................ 69485 ........................................................................ 69486 ........................................................................ 69487 ........................................................................ 69488 ........................................................................ 69489 ........................................................................ 69490 ........................................................................ 69491 ........................................................................ 69492 ........................................................................ 69493 ........................................................................ 69494 ........................................................................ 69495 ........................................................................ 69496 ........................................................................ 69497 ........................................................................ 69498 ........................................................................ 69499 ........................................................................ 69500 ........................................................................ 69501 ........................................................................ 69502 ........................................................................ 69503 ........................................................................ 69504 ........................................................................ 69505 ........................................................................ 69506 ........................................................................ 69507 ........................................................................ 69508 ........................................................................ 69509 ........................................................................ 69510 ........................................................................ 69511 ........................................................................ 69512 ........................................................................ 69513 ........................................................................ 69514 ........................................................................ 69515 ........................................................................ 69516 ........................................................................ 69517 ........................................................................ 69518 ........................................................................ 69519 ........................................................................ 69520 ........................................................................ 69521 ........................................................................ 69522 ........................................................................ 69523 ........................................................................ 69524 ........................................................................ 69525 ........................................................................ 69526 ........................................................................ 69527 ........................................................................ 69528 ........................................................................ 69529 ........................................................................ 69530 ........................................................................ 69531 ........................................................................ 69532 ........................................................................ 69533 ........................................................................ 69534 ........................................................................ 69535 ........................................................................ 69536 ........................................................................ 69537 ........................................................................ 69538 ........................................................................ 69539 ........................................................................ 69540 ........................................................................ 69541 ........................................................................ 69542 ........................................................................ 69543 ........................................................................ 69544 ........................................................................ 69545 ........................................................................ 69546 ........................................................................ 69547 ........................................................................ 69548 ........................................................................ 69549 ........................................................................ 69550 ........................................................................ 69551 ........................................................................ 69552 ........................................................................ 69553 ........................................................................ 69554 ........................................................................ 69555 ........................................................................ 69556 ........................................................................ 69557 ........................................................................ 69558 ........................................................................ 69559 ........................................................................ 69560 ........................................................................ 69561 ........................................................................ 69562 ........................................................................ 69563 ........................................................................ 69564 ........................................................................ 69565 ........................................................................ 69566 ........................................................................ 69567 ........................................................................ 69568 ........................................................................ 69569 ........................................................................ 69570 ........................................................................ 69571 ........................................................................ 69572 ........................................................................ 69573 ........................................................................ 69574 ........................................................................ 69575 ........................................................................ 69576 ........................................................................ 69577 ........................................................................ 69578 ........................................................................ 69579 ........................................................................ 69580 ........................................................................ 69581 ........................................................................ 69582 ........................................................................ 69583 ........................................................................ 69584 ........................................................................ 69585 ........................................................................ 69586 ........................................................................ 69587 ........................................................................ 69588 ........................................................................ 69589 ........................................................................ 69590 ........................................................................ 69591 ........................................................................ 69592 ........................................................................ 69593 ........................................................................ 69594 ........................................................................ 69595 ........................................................................ 69596 ........................................................................ 69597 ........................................................................ 69598 ........................................................................ 69599 ........................................................................ 69600 ........................................................................ 69601 ........................................................................ 69602 ........................................................................ 69603 ........................................................................ 69604 ........................................................................ 69605 ........................................................................ 69606 ........................................................................ 69607 ........................................................................ 69608 ........................................................................ 69609 ........................................................................ 69610 ........................................................................ 69611 ........................................................................ 69612 ........................................................................ 69613 ........................................................................ 69614 ........................................................................ 69615 ........................................................................ 69616 ........................................................................ 69617 ........................................................................ 69618 ........................................................................ 69619 ........................................................................ 69620 ........................................................................ 69621 ........................................................................ 69622 ........................................................................ 69623 ........................................................................ 69624 ........................................................................ 69625 ........................................................................ 69626 ........................................................................ 69627 ........................................................................ 69628 ........................................................................ 69629 ........................................................................ 69630 ........................................................................ 69631 ........................................................................ 69632 ........................................................................ 69633 ........................................................................ 69634 ........................................................................ 69635 ........................................................................ 69636 ........................................................................ 69637 ........................................................................ 69638 ........................................................................ 69639 ........................................................................ 69640 ........................................................................ 69641 ........................................................................ 69642 ........................................................................ 69643 ........................................................................ 69644 ........................................................................ 69645 ........................................................................ 69646 ........................................................................ 69647 ........................................................................ 69648 ........................................................................ 69649 ........................................................................ 69650 ........................................................................ 69651 ........................................................................ 69652 ........................................................................ 69653 ........................................................................ 69654 ........................................................................ 69655 ........................................................................ 69656 ........................................................................ 69657 ........................................................................ 69658 ........................................................................ 69659 ........................................................................ 69660 ........................................................................ 69661 ........................................................................ 69662 ........................................................................ 69663 ........................................................................ 69664 ........................................................................ 69665 ........................................................................ 69666 ........................................................................ 69667 ........................................................................ 69668 ........................................................................ 69669 ........................................................................ 69670 ........................................................................ 69671 ........................................................................ 69672 ........................................................................ 69673 ........................................................................ 69674 ........................................................................ 69675 ........................................................................ 69676 ........................................................................ 69677 ........................................................................ 69678 ........................................................................ 69679 ........................................................................ 69680 ........................................................................ 69681 ........................................................................ 69682 ........................................................................ 69683 ........................................................................ 69684 ........................................................................ 69685 ........................................................................ 69686 ........................................................................ 69687 ........................................................................ 69688 ........................................................................ 69689 ........................................................................ 69690 ........................................................................ 69691 ........................................................................ 69692 ........................................................................ 69693 ........................................................................ 69694 ........................................................................ 69695 ........................................................................ 69696 ........................................................................ 69697 ........................................................................ 69698 ........................................................................ 69699 ........................................................................ 69700 ........................................................................ 69701 ........................................................................ 69702 ........................................................................ 69703 ........................................................................ 69704 ........................................................................ 69705 ........................................................................ 69706 ........................................................................ 69707 ........................................................................ 69708 ........................................................................ 69709 ........................................................................ 69710 ........................................................................ 69711 ........................................................................ 69712 ........................................................................ 69713 ........................................................................ 69714 ........................................................................ 69715 ........................................................................ 69716 ........................................................................ 69717 ........................................................................ 69718 ........................................................................ 69719 ........................................................................ 69720 ........................................................................ 69721 ........................................................................ 69722 ........................................................................ 69723 ........................................................................ 69724 ........................................................................ 69725 ........................................................................ 69726 ........................................................................ 69727 ........................................................................ 69728 ........................................................................ 69729 ........................................................................ 69730 ........................................................................ 69731 ........................................................................ 69732 ........................................................................ 69733 ........................................................................ 69734 ........................................................................ 69735 ........................................................................ 69736 ........................................................................ 69737 ........................................................................ 69738 ........................................................................ 69739 ........................................................................ 69740 ........................................................................ 69741 ........................................................................ 69742 ........................................................................ 69743 ........................................................................ 69744 ........................................................................ 69745 ........................................................................ 69746 ........................................................................ 69747 ........................................................................ 69748 ........................................................................ 69749 ........................................................................ 69750 ........................................................................ 69751 ........................................................................ 69752 ........................................................................ 69753 ........................................................................ 69754 ........................................................................ 69755 ........................................................................ 69756 ........................................................................ 69757 ........................................................................ 69758 ........................................................................ 69759 ........................................................................ 69760 ........................................................................ 69761 ........................................................................ 69762 ........................................................................ 69763 ........................................................................ 69764 ........................................................................ 69765 ........................................................................ 69766 ........................................................................ 69767 ........................................................................ 69768 ........................................................................ 69769 ........................................................................ 69770 ........................................................................ 69771 ........................................................................ 69772 ........................................................................ 69773 ........................................................................ 69774 ........................................................................ 69775 ........................................................................ 69776 ........................................................................ 69777 ........................................................................ 69778 ........................................................................ 69779 ........................................................................ 69780 ........................................................................ 69781 ........................................................................ 69782 ........................................................................ 69783 ........................................................................ 69784 ........................................................................ 69785 ........................................................................ 69786 ........................................................................ 69787 ........................................................................ 69788 ........................................................................ 69789 ........................................................................ 69790 ........................................................................ 69791 ........................................................................ 69792 ........................................................................ 69793 ........................................................................ 69794 ........................................................................ 69795 ........................................................................ 69796 ........................................................................ 69797 ........................................................................ 69798 ........................................................................ 69799 ........................................................................ 69800 ........................................................................ 69801 ........................................................................ 69802 ........................................................................ 69803 ........................................................................ 69804 ........................................................................ 69805 ........................................................................ 69806 ........................................................................ 69807 ........................................................................ 69808 ........................................................................ 69809 ........................................................................ 69810 ........................................................................ 69811 ........................................................................ 69812 ........................................................................ 69813 ........................................................................ 69814 ........................................................................ 69815 ........................................................................ 69816 ........................................................................ 69817 ........................................................................ 69818 ........................................................................ 69819 ........................................................................ 69820 ........................................................................ 69821 ........................................................................ 69822 ........................................................................ 69823 ........................................................................ 69824 ........................................................................ 69825 ........................................................................ 69826 ........................................................................ 69827 ........................................................................ 69828 ........................................................................ 69829 ........................................................................ 69830 ........................................................................ 69831 ........................................................................ 69832 ........................................................................ 69833 ........................................................................ 69834 ........................................................................ 69835 ........................................................................ 69836 ........................................................................ 69837 ........................................................................ 69838 ........................................................................ 69839 ........................................................................ 69840 ........................................................................ 69841 ........................................................................ 69842 ........................................................................ 69843 ........................................................................ 69844 ........................................................................ 69845 ........................................................................ 69846 ........................................................................ 69847 ........................................................................ 69848 ........................................................................ 69849 ........................................................................ 69850 ........................................................................ 69851 ........................................................................ 69852 ........................................................................ 69853 ........................................................................ 69854 ........................................................................ 69855 ........................................................................ 69856 ........................................................................ 69857 ........................................................................ 69858 ........................................................................ 69859 ........................................................................ 69860 ........................................................................ 69861 ........................................................................ 69862 ........................................................................ 69863 ........................................................................ 69864 ........................................................................ 69865 ........................................................................ 69866 ........................................................................ 69867 ........................................................................ 69868 ........................................................................ 69869 ........................................................................ 69870 ........................................................................ 69871 ........................................................................ 69872 ........................................................................ 69873 ........................................................................ 69874 ........................................................................ 69875 ........................................................................ 69876 ........................................................................ 69877 ........................................................................ 69878 ........................................................................ 69879 ........................................................................ 69880 ........................................................................ 69881 ........................................................................ 69882 ........................................................................ 69883 ........................................................................ 69884 ........................................................................ 69885 ........................................................................ 69886 ........................................................................ 69887 ........................................................................ 69888 ........................................................................ 69889 ........................................................................ 69890 ........................................................................ 69891 ........................................................................ 69892 ........................................................................ 69893 ........................................................................ 69894 ........................................................................ 69895 ........................................................................ 69896 ........................................................................ 69897 ........................................................................ 69898 ........................................................................ 69899 ........................................................................ 69900 ........................................................................ 69901 ........................................................................ 69902 ........................................................................ 69903 ........................................................................ 69904 ........................................................................ 69905 ........................................................................ 69906 ........................................................................ 69907 ........................................................................ 69908 ........................................................................ 69909 ........................................................................ 69910 ........................................................................ 69911 ........................................................................ 69912 ........................................................................ 69913 ........................................................................ 69914 ........................................................................ 69915 ........................................................................ 69916 ........................................................................ 69917 ........................................................................ 69918 ........................................................................ 69919 ........................................................................ 69920 ........................................................................ 69921 ........................................................................ 69922 ........................................................................ 69923 ........................................................................ 69924 ........................................................................ 69925 ........................................................................ 69926 ........................................................................ 69927 ........................................................................ 69928 ........................................................................ 69929 ........................................................................ 69930 ........................................................................ 69931 ........................................................................ 69932 ........................................................................ 69933 ........................................................................ 69934 ........................................................................ 69935 ........................................................................ 69936 ........................................................................ 69937 ........................................................................ 69938 ........................................................................ 69939 ........................................................................ 69940 ........................................................................ 69941 ........................................................................ 69942 ........................................................................ 69943 ........................................................................ 69944 ........................................................................ 69945 ........................................................................ 69946 ........................................................................ 69947 ........................................................................ 69948 ........................................................................ 69949 ........................................................................ 69950 ........................................................................ 69951 ........................................................................ 69952 ........................................................................ 69953 ........................................................................ 69954 ........................................................................ 69955 ........................................................................ 69956 ........................................................................ 69957 ........................................................................ 69958 ........................................................................ 69959 ........................................................................ 69960 ........................................................................ 69961 ........................................................................ 69962 ........................................................................ 69963 ........................................................................ 69964 ........................................................................ 69965 ........................................................................ 69966 ........................................................................ 69967 ........................................................................ 69968 ........................................................................ 69969 ........................................................................ 69970 ........................................................................ 69971 ........................................................................ 69972 ........................................................................ 69973 ........................................................................ 69974 ........................................................................ 69975 ........................................................................ 69976 ........................................................................ 69977 ........................................................................ 69978 ........................................................................ 69979 ........................................................................ 69980 ........................................................................ 69981 ........................................................................ 69982 ........................................................................ 69983 ........................................................................ 69984 ........................................................................ 69985 ........................................................................ 69986 ........................................................................ 69987 ........................................................................ 69988 ........................................................................ 69989 ........................................................................ 69990 ........................................................................ 69991 ........................................................................ 69992 ........................................................................ 69993 ........................................................................ 69994 ........................................................................ 69995 ........................................................................ 69996 ........................................................................ 69997 ........................................................................ 69998 ........................................................................ 69999 ........................................................................ 70000 ........................................................................ 70001 ........................................................................ 70002 ........................................................................ 70003 ........................................................................ 70004 ........................................................................ 70005 ........................................................................ 70006 ........................................................................ 70007 ........................................................................ 70008 ........................................................................ 70009 ........................................................................ 70010 ........................................................................ 70011 ........................................................................ 70012 ........................................................................ 70013 ........................................................................ 70014 ........................................................................ 70015 ........................................................................ 70016 ........................................................................ 70017 ........................................................................ 70018 ........................................................................ 70019 ........................................................................ 70020 ........................................................................ 70021 ........................................................................ 70022 ........................................................................ 70023 ........................................................................ 70024 ........................................................................ 70025 ........................................................................ 70026 ........................................................................ 70027 ........................................................................ 70028 ........................................................................ 70029 ........................................................................ 70030 ........................................................................ 70031 ........................................................................ 70032 ........................................................................ 70033 ........................................................................ 70034 ........................................................................ 70035 ........................................................................ 70036 ........................................................................ 70037 ........................................................................ 70038 ........................................................................ 70039 ........................................................................ 70040 ........................................................................ 70041 ........................................................................ 70042 ........................................................................ 70043 ........................................................................ 70044 ........................................................................ 70045 ........................................................................ 70046 ........................................................................ 70047 ........................................................................ 70048 ........................................................................ 70049 ........................................................................ 70050 ........................................................................ 70051 ........................................................................ 70052 ........................................................................ 70053 ........................................................................ 70054 ........................................................................ 70055 ........................................................................ 70056 ........................................................................ 70057 ........................................................................ 70058 ........................................................................ 70059 ........................................................................ 70060 ........................................................................ 70061 ........................................................................ 70062 ........................................................................ 70063 ........................................................................ 70064 ........................................................................ 70065 ........................................................................ 70066 ........................................................................ 70067 ........................................................................ 70068 ........................................................................ 70069 ........................................................................ 70070 ........................................................................ 70071 ........................................................................ 70072 ........................................................................ 70073 ........................................................................ 70074 ........................................................................ 70075 ........................................................................ 70076 ........................................................................ 70077 ........................................................................ 70078 ........................................................................ 70079 ........................................................................ 70080 ........................................................................ 70081 ........................................................................ 70082 ........................................................................ 70083 ........................................................................ 70084 ........................................................................ 70085 ........................................................................ 70086 ........................................................................ 70087 ........................................................................ 70088 ........................................................................ 70089 ........................................................................ 70090 ........................................................................ 70091 ........................................................................ 70092 ........................................................................ 70093 ........................................................................ 70094 ........................................................................ 70095 ........................................................................ 70096 ........................................................................ 70097 ........................................................................ 70098 ........................................................................ 70099 ........................................................................ 70100 ........................................................................ 70101 ........................................................................ 70102 ........................................................................ 70103 ........................................................................ 70104 ........................................................................ 70105 ........................................................................ 70106 ........................................................................ 70107 ........................................................................ 70108 ........................................................................ 70109 ........................................................................ 70110 ........................................................................ 70111 ........................................................................ 70112 ........................................................................ 70113 ........................................................................ 70114 ........................................................................ 70115 ........................................................................ 70116 ........................................................................ 70117 ........................................................................ 70118 ........................................................................ 70119 ........................................................................ 70120 ........................................................................ 70121 ........................................................................ 70122 ........................................................................ 70123 ........................................................................ 70124 ........................................................................ 70125 ........................................................................ 70126 ........................................................................ 70127 ........................................................................ 70128 ........................................................................ 70129 ........................................................................ 70130 ........................................................................ 70131 ........................................................................ 70132 ........................................................................ 70133 ........................................................................ 70134 ........................................................................ 70135 ........................................................................ 70136 ........................................................................ 70137 ........................................................................ 70138 ........................................................................ 70139 ........................................................................ 70140 ........................................................................ 70141 ........................................................................ 70142 ........................................................................ 70143 ........................................................................ 70144 ........................................................................ 70145 ........................................................................ 70146 ........................................................................ 70147 ........................................................................ 70148 ........................................................................ 70149 ........................................................................ 70150 ........................................................................ 70151 ........................................................................ 70152 ........................................................................ 70153 ........................................................................ 70154 ........................................................................ 70155 ........................................................................ 70156 ........................................................................ 70157 ........................................................................ 70158 ........................................................................ 70159 ........................................................................ 70160 ........................................................................ 70161 ........................................................................ 70162 ........................................................................ 70163 ........................................................................ 70164 ........................................................................ 70165 ........................................................................ 70166 ........................................................................ 70167 ........................................................................ 70168 ........................................................................ 70169 ........................................................................ 70170 ........................................................................ 70171 ........................................................................ 70172 ........................................................................ 70173 ........................................................................ 70174 ........................................................................ 70175 ........................................................................ 70176 ........................................................................ 70177 ........................................................................ 70178 ........................................................................ 70179 ........................................................................ 70180 ........................................................................ 70181 ........................................................................ 70182 ........................................................................ 70183 ........................................................................ 70184 ........................................................................ 70185 ........................................................................ 70186 ........................................................................ 70187 ........................................................................ 70188 ........................................................................ 70189 ........................................................................ 70190 ........................................................................ 70191 ........................................................................ 70192 ........................................................................ 70193 ........................................................................ 70194 ........................................................................ 70195 ........................................................................ 70196 ........................................................................ 70197 ........................................................................ 70198 ........................................................................ 70199 ........................................................................ 70200 ........................................................................ 70201 ........................................................................ 70202 ........................................................................ 70203 ........................................................................ 70204 ........................................................................ 70205 ........................................................................ 70206 ........................................................................ 70207 ........................................................................ 70208 ........................................................................ 70209 ........................................................................ 70210 ........................................................................ 70211 ........................................................................ 70212 ........................................................................ 70213 ........................................................................ 70214 ........................................................................ 70215 ........................................................................ 70216 ........................................................................ 70217 ........................................................................ 70218 ........................................................................ 70219 ........................................................................ 70220 ........................................................................ 70221 ........................................................................ 70222 ........................................................................ 70223 ........................................................................ 70224 ........................................................................ 70225 ........................................................................ 70226 ........................................................................ 70227 ........................................................................ 70228 ........................................................................ 70229 ........................................................................ 70230 ........................................................................ 70231 ........................................................................ 70232 ........................................................................ 70233 ........................................................................ 70234 ........................................................................ 70235 ........................................................................ 70236 ........................................................................ 70237 ........................................................................ 70238 ........................................................................ 70239 ........................................................................ 70240 ........................................................................ 70241 ........................................................................ 70242 ........................................................................ 70243 ........................................................................ 70244 ........................................................................ 70245 ........................................................................ 70246 ........................................................................ 70247 ........................................................................ 70248 ........................................................................ 70249 ........................................................................ 70250 ........................................................................ 70251 ........................................................................ 70252 ........................................................................ 70253 ........................................................................ 70254 ........................................................................ 70255 ........................................................................ 70256 ........................................................................ 70257 ........................................................................ 70258 ........................................................................ 70259 ........................................................................ 70260 ........................................................................ 70261 ........................................................................ 70262 ........................................................................ 70263 ........................................................................ 70264 ........................................................................ 70265 ........................................................................ 70266 ........................................................................ 70267 ........................................................................ 70268 ........................................................................ 70269 ........................................................................ 70270 ........................................................................ 70271 ........................................................................ 70272 ........................................................................ 70273 ........................................................................ 70274 ........................................................................ 70275 ........................................................................ 70276 ........................................................................ 70277 ........................................................................ 70278 ........................................................................ 70279 ........................................................................ 70280 ........................................................................ 70281 ........................................................................ 70282 ........................................................................ 70283 ........................................................................ 70284 ........................................................................ 70285 ........................................................................ 70286 ........................................................................ 70287 ........................................................................ 70288 ........................................................................ 70289 ........................................................................ 70290 ........................................................................ 70291 ........................................................................ 70292 ........................................................................ 70293 ........................................................................ 70294 ........................................................................ 70295 ........................................................................ 70296 ........................................................................ 70297 ........................................................................ 70298 ........................................................................ 70299 ........................................................................ 70300 ........................................................................ 70301 ........................................................................ 70302 ........................................................................ 70303 ........................................................................ 70304 ........................................................................ 70305 ........................................................................ 70306 ........................................................................ 70307 ........................................................................ 70308 ........................................................................ 70309 ........................................................................ 70310 ........................................................................ 70311 ........................................................................ 70312 ........................................................................ 70313 ........................................................................ 70314 ........................................................................ 70315 ........................................................................ 70316 ........................................................................ 70317 ........................................................................ 70318 ........................................................................ 70319 ........................................................................ 70320 ........................................................................ 70321 ........................................................................ 70322 ........................................................................ 70323 ........................................................................ 70324 ........................................................................ 70325 ........................................................................ 70326 ........................................................................ 70327 ........................................................................ 70328 ........................................................................ 70329 ........................................................................ 70330 ........................................................................ 70331 ........................................................................ 70332 ........................................................................ 70333 ........................................................................ 70334 ........................................................................ 70335 ........................................................................ 70336 ........................................................................ 70337 ........................................................................ 70338 ........................................................................ 70339 ........................................................................ 70340 ........................................................................ 70341 ........................................................................ 70342 ........................................................................ 70343 ........................................................................ 70344 ........................................................................ 70345 ........................................................................ 70346 ........................................................................ 70347 ........................................................................ 70348 ........................................................................ 70349 ........................................................................ 70350 ........................................................................ 70351 ........................................................................ 70352 ........................................................................ 70353 ........................................................................ 70354 ........................................................................ 70355 ........................................................................ 70356 ........................................................................ 70357 ........................................................................ 70358 ........................................................................ 70359 ........................................................................ 70360 ........................................................................ 70361 ........................................................................ 70362 ........................................................................ 70363 ........................................................................ 70364 ........................................................................ 70365 ........................................................................ 70366 ........................................................................ 70367 ........................................................................ 70368 ........................................................................ 70369 ........................................................................ 70370 ........................................................................ 70371 ........................................................................ 70372 ........................................................................ 70373 ........................................................................ 70374 ........................................................................ 70375 ........................................................................ 70376 ........................................................................ 70377 ........................................................................ 70378 ........................................................................ 70379 ........................................................................ 70380 ........................................................................ 70381 ........................................................................ 70382 ........................................................................ 70383 ........................................................................ 70384 ........................................................................ 70385 ........................................................................ 70386 ........................................................................ 70387 ........................................................................ 70388 ........................................................................ 70389 ........................................................................ 70390 ........................................................................ 70391 ........................................................................ 70392 ........................................................................ 70393 ........................................................................ 70394 ........................................................................ 70395 ........................................................................ 70396 ........................................................................ 70397 ........................................................................ 70398 ........................................................................ 70399 ........................................................................ 70400 ........................................................................ 70401 ........................................................................ 70402 ........................................................................ 70403 ........................................................................ 70404 ........................................................................ 70405 ........................................................................ 70406 ........................................................................ 70407 ........................................................................ 70408 ........................................................................ 70409 ........................................................................ 70410 ........................................................................ 70411 ........................................................................ 70412 ........................................................................ 70413 ........................................................................ 70414 ........................................................................ 70415 ........................................................................ 70416 ........................................................................ 70417 ........................................................................ 70418 ........................................................................ 70419 ........................................................................ 70420 ........................................................................ 70421 ........................................................................ 70422 ........................................................................ 70423 ........................................................................ 70424 ........................................................................ 70425 ........................................................................ 70426 ........................................................................ 70427 ........................................................................ 70428 ........................................................................ 70429 ........................................................................ 70430 ........................................................................ 70431 ........................................................................ 70432 ........................................................................ 70433 ........................................................................ 70434 ........................................................................ 70435 ........................................................................ 70436 ........................................................................ 70437 ........................................................................ 70438 ........................................................................ 70439 ........................................................................ 70440 ........................................................................ 70441 ........................................................................ 70442 ........................................................................ 70443 ........................................................................ 70444 ........................................................................ 70445 ........................................................................ 70446 ........................................................................ 70447 ........................................................................ 70448 ........................................................................ 70449 ........................................................................ 70450 ........................................................................ 70451 ........................................................................ 70452 ........................................................................ 70453 ........................................................................ 70454 ........................................................................ 70455 ........................................................................ 70456 ........................................................................ 70457 ........................................................................ 70458 ........................................................................ 70459 ........................................................................ 70460 ........................................................................ 70461 ........................................................................ 70462 ........................................................................ 70463 ........................................................................ 70464 ........................................................................ 70465 ........................................................................ 70466 ........................................................................ 70467 ........................................................................ 70468 ........................................................................ 70469 ........................................................................ 70470 ........................................................................ 70471 ........................................................................ 70472 ........................................................................ 70473 ........................................................................ 70474 ........................................................................ 70475 ........................................................................ 70476 ........................................................................ 70477 ........................................................................ 70478 ........................................................................ 70479 ........................................................................ 70480 ........................................................................ 70481 ........................................................................ 70482 ........................................................................ 70483 ........................................................................ 70484 ........................................................................ 70485 ........................................................................ 70486 ........................................................................ 70487 ........................................................................ 70488 ........................................................................ 70489 ........................................................................ 70490 ........................................................................ 70491 ........................................................................ 70492 ........................................................................ 70493 ........................................................................ 70494 ........................................................................ 70495 ........................................................................ 70496 ........................................................................ 70497 ........................................................................ 70498 ........................................................................ 70499 ........................................................................ 70500 ........................................................................ 70501 ........................................................................ 70502 ........................................................................ 70503 ........................................................................ 70504 ........................................................................ 70505 ........................................................................ 70506 ........................................................................ 70507 ........................................................................ 70508 ........................................................................ 70509 ........................................................................ 70510 ........................................................................ 70511 ........................................................................ 70512 ........................................................................ 70513 ........................................................................ 70514 ........................................................................ 70515 ........................................................................ 70516 ........................................................................ 70517 ........................................................................ 70518 ........................................................................ 70519 ........................................................................ 70520 ........................................................................ 70521 ........................................................................ 70522 ........................................................................ 70523 ........................................................................ 70524 ........................................................................ 70525 ........................................................................ 70526 ........................................................................ 70527 ........................................................................ 70528 ........................................................................ 70529 ........................................................................ 70530 ........................................................................ 70531 ........................................................................ 70532 ........................................................................ 70533 ........................................................................ 70534 ........................................................................ 70535 ........................................................................ 70536 ........................................................................ 70537 ........................................................................ 70538 ........................................................................ 70539 ........................................................................ 70540 ........................................................................ 70541 ........................................................................ 70542 ........................................................................ 70543 ........................................................................ 70544 ........................................................................ 70545 ........................................................................ 70546 ........................................................................ 70547 ........................................................................ 70548 ........................................................................ 70549 ........................................................................ 70550 ........................................................................ 70551 ........................................................................ 70552 ........................................................................ 70553 ........................................................................ 70554 ........................................................................ 70555 ........................................................................ 70556 ........................................................................ 70557 ........................................................................ 70558 ........................................................................ 70559 ........................................................................ 70560 ........................................................................ 70561 ........................................................................ 70562 ........................................................................ 70563 ........................................................................ 70564 ........................................................................ 70565 ........................................................................ 70566 ........................................................................ 70567 ........................................................................ 70568 ........................................................................ 70569 ........................................................................ 70570 ........................................................................ 70571 ........................................................................ 70572 ........................................................................ 70573 ........................................................................ 70574 ........................................................................ 70575 ........................................................................ 70576 ........................................................................ 70577 ........................................................................ 70578 ........................................................................ 70579 ........................................................................ 70580 ........................................................................ 70581 ........................................................................ 70582 ........................................................................ 70583 ........................................................................ 70584 ........................................................................ 70585 ........................................................................ 70586 ........................................................................ 70587 ........................................................................ 70588 ........................................................................ 70589 ........................................................................ 70590 ........................................................................ 70591 ........................................................................ 70592 ........................................................................ 70593 ........................................................................ 70594 ........................................................................ 70595 ........................................................................ 70596 ........................................................................ 70597 ........................................................................ 70598 ........................................................................ 70599 ........................................................................ 70600 ........................................................................ 70601 ........................................................................ 70602 ........................................................................ 70603 ........................................................................ 70604 ........................................................................ 70605 ........................................................................ 70606 ........................................................................ 70607 ........................................................................ 70608 ........................................................................ 70609 ........................................................................ 70610 ........................................................................ 70611 ........................................................................ 70612 ........................................................................ 70613 ........................................................................ 70614 ........................................................................ 70615 ........................................................................ 70616 ........................................................................ 70617 ........................................................................ 70618 ........................................................................ 70619 ........................................................................ 70620 ........................................................................ 70621 ........................................................................ 70622 ........................................................................ 70623 ........................................................................ 70624 ........................................................................ 70625 ........................................................................ 70626 ........................................................................ 70627 ........................................................................ 70628 ........................................................................ 70629 ........................................................................ 70630 ........................................................................ 70631 ........................................................................ 70632 ........................................................................ 70633 ........................................................................ 70634 ........................................................................ 70635 ........................................................................ 70636 ........................................................................ 70637 ........................................................................ 70638 ........................................................................ 70639 ........................................................................ 70640 ........................................................................ 70641 ........................................................................ 70642 ........................................................................ 70643 ........................................................................ 70644 ........................................................................ 70645 ........................................................................ 70646 ........................................................................ 70647 ........................................................................ 70648 ........................................................................ 70649 ........................................................................ 70650 ........................................................................ 70651 ........................................................................ 70652 ........................................................................ 70653 ........................................................................ 70654 ........................................................................ 70655 ........................................................................ 70656 ........................................................................ 70657 ........................................................................ 70658 ........................................................................ 70659 ........................................................................ 70660 ........................................................................ 70661 ........................................................................ 70662 ........................................................................ 70663 ........................................................................ 70664 ........................................................................ 70665 ........................................................................ 70666 ........................................................................ 70667 ........................................................................ 70668 ........................................................................ 70669 ........................................................................ 70670 ........................................................................ 70671 ........................................................................ 70672 ........................................................................ 70673 ........................................................................ 70674 ........................................................................ 70675 ........................................................................ 70676 ........................................................................ 70677 ........................................................................ 70678 ........................................................................ 70679 ........................................................................ 70680 ........................................................................ 70681 ........................................................................ 70682 ........................................................................ 70683 ........................................................................ 70684 ........................................................................ 70685 ........................................................................ 70686 ........................................................................ 70687 ........................................................................ 70688 ........................................................................ 70689 ........................................................................ 70690 ........................................................................ 70691 ........................................................................ 70692 ........................................................................ 70693 ........................................................................ 70694 ........................................................................ 70695 ........................................................................ 70696 ........................................................................ 70697 ........................................................................ 70698 ........................................................................ 70699 ........................................................................ 70700 ........................................................................ 70701 ........................................................................ 70702 ........................................................................ 70703 ........................................................................ 70704 ........................................................................ 70705 ........................................................................ 70706 ........................................................................ 70707 ........................................................................ 70708 ........................................................................ 70709 ........................................................................ 70710 ........................................................................ 70711 ........................................................................ 70712 ........................................................................ 70713 ........................................................................ 70714 ........................................................................ 70715 ........................................................................ 70716 ........................................................................ 70717 ........................................................................ 70718 ........................................................................ 70719 ........................................................................ 70720 ........................................................................ 70721 ........................................................................ 70722 ........................................................................ 70723 ........................................................................ 70724 ........................................................................ 70725 ........................................................................ 70726 ........................................................................ 70727 ........................................................................ 70728 ........................................................................ 70729 ........................................................................ 70730 ........................................................................ 70731 ........................................................................ 70732 ........................................................................ 70733 ........................................................................ 70734 ........................................................................ 70735 ........................................................................ 70736 ........................................................................ 70737 ........................................................................ 70738 ........................................................................ 70739 ........................................................................ 70740 ........................................................................ 70741 ........................................................................ 70742 ........................................................................ 70743 ........................................................................ 70744 ........................................................................ 70745 ........................................................................ 70746 ........................................................................ 70747 ........................................................................ 70748 ........................................................................ 70749 ........................................................................ 70750 ........................................................................ 70751 ........................................................................ 70752 ........................................................................ 70753 ........................................................................ 70754 ........................................................................ 70755 ........................................................................ 70756 ........................................................................ 70757 ........................................................................ 70758 ........................................................................ 70759 ........................................................................ 70760 ........................................................................ 70761 ........................................................................ 70762 ........................................................................ 70763 ........................................................................ 70764 ........................................................................ 70765 ........................................................................ 70766 ........................................................................ 70767 ........................................................................ 70768 ........................................................................ 70769 ........................................................................ 70770 ........................................................................ 70771 ........................................................................ 70772 ........................................................................ 70773 ........................................................................ 70774 ........................................................................ 70775 ........................................................................ 70776 ........................................................................ 70777 ........................................................................ 70778 ........................................................................ 70779 ........................................................................ 70780 ........................................................................ 70781 ........................................................................ 70782 ........................................................................ 70783 ........................................................................ 70784 ........................................................................ 70785 ........................................................................ 70786 ........................................................................ 70787 ........................................................................ 70788 ........................................................................ 70789 ........................................................................ 70790 ........................................................................ 70791 ........................................................................ 70792 ........................................................................ 70793 ........................................................................ 70794 ........................................................................ 70795 ........................................................................ 70796 ........................................................................ 70797 ........................................................................ 70798 ........................................................................ 70799 ........................................................................ 70800 ........................................................................ 70801 ........................................................................ 70802 ........................................................................ 70803 ........................................................................ 70804 ........................................................................ 70805 ........................................................................ 70806 ........................................................................ 70807 ........................................................................ 70808 ........................................................................ 70809 ........................................................................ 70810 ........................................................................ 70811 ........................................................................ 70812 ........................................................................ 70813 ........................................................................ 70814 ........................................................................ 70815 ........................................................................ 70816 ........................................................................ 70817 ........................................................................ 70818 ........................................................................ 70819 ........................................................................ 70820 ........................................................................ 70821 ........................................................................ 70822 ........................................................................ 70823 ........................................................................ 70824 ........................................................................ 70825 ........................................................................ 70826 ........................................................................ 70827 ........................................................................ 70828 ........................................................................ 70829 ........................................................................ 70830 ........................................................................ 70831 ........................................................................ 70832 ........................................................................ 70833 ........................................................................ 70834 ........................................................................ 70835 ........................................................................ 70836 ........................................................................ 70837 ........................................................................ 70838 ........................................................................ 70839 ........................................................................ 70840 ........................................................................ 70841 ........................................................................ 70842 ........................................................................ 70843 ........................................................................ 70844 ........................................................................ 70845 ........................................................................ 70846 ........................................................................ 70847 ........................................................................ 70848 ........................................................................ 70849 ........................................................................ 70850 ........................................................................ 70851 ........................................................................ 70852 ........................................................................ 70853 ........................................................................ 70854 ........................................................................ 70855 ........................................................................ 70856 ........................................................................ 70857 ........................................................................ 70858 ........................................................................ 70859 ........................................................................ 70860 ........................................................................ 70861 ........................................................................ 70862 ........................................................................ 70863 ........................................................................ 70864 ........................................................................ 70865 ........................................................................ 70866 ........................................................................ 70867 ........................................................................ 70868 ........................................................................ 70869 ........................................................................ 70870 ........................................................................ 70871 ........................................................................ 70872 ........................................................................ 70873 ........................................................................ 70874 ........................................................................ 70875 ........................................................................ 70876 ........................................................................ 70877 ........................................................................ 70878 ........................................................................ 70879 ........................................................................ 70880 ........................................................................ 70881 ........................................................................ 70882 ........................................................................ 70883 ........................................................................ 70884 ........................................................................ 70885 ........................................................................ 70886 ........................................................................ 70887 ........................................................................ 70888 ........................................................................ 70889 ........................................................................ 70890 ........................................................................ 70891 ........................................................................ 70892 ........................................................................ 70893 ........................................................................ 70894 ........................................................................ 70895 ........................................................................ 70896 ........................................................................ 70897 ........................................................................ 70898 ........................................................................ 70899 ........................................................................ 70900 ........................................................................ 70901 ........................................................................ 70902 ........................................................................ 70903 ........................................................................ 70904 ........................................................................ 70905 ........................................................................ 70906 ........................................................................ 70907 ........................................................................ 70908 ........................................................................ 70909 ........................................................................ 70910 ........................................................................ 70911 ........................................................................ 70912 ........................................................................ 70913 ........................................................................ 70914 ........................................................................ 70915 ........................................................................ 70916 ........................................................................ 70917 ........................................................................ 70918 ........................................................................ 70919 ........................................................................ 70920 ........................................................................ 70921 ........................................................................ 70922 ........................................................................ 70923 ........................................................................ 70924 ........................................................................ 70925 ........................................................................ 70926 ........................................................................ 70927 ........................................................................ 70928 ........................................................................ 70929 ........................................................................ 70930 ........................................................................ 70931 ........................................................................ 70932 ........................................................................ 70933 ........................................................................ 70934 ........................................................................ 70935 ........................................................................ 70936 ........................................................................ 70937 ........................................................................ 70938 ........................................................................ 70939 ........................................................................ 70940 ........................................................................ 70941 ........................................................................ 70942 ........................................................................ 70943 ........................................................................ 70944 ........................................................................ 70945 ........................................................................ 70946 ........................................................................ 70947 ........................................................................ 70948 ........................................................................ 70949 ........................................................................ 70950 ........................................................................ 70951 ........................................................................ 70952 ........................................................................ 70953 ........................................................................ 70954 ........................................................................ 70955 ........................................................................ 70956 ........................................................................ 70957 ........................................................................ 70958 ........................................................................ 70959 ........................................................................ 70960 ........................................................................ 70961 ........................................................................ 70962 ........................................................................ 70963 ........................................................................ 70964 ........................................................................ 70965 ........................................................................ 70966 ........................................................................ 70967 ........................................................................ 70968 ........................................................................ 70969 ........................................................................ 70970 ........................................................................ 70971 ........................................................................ 70972 ........................................................................ 70973 ........................................................................ 70974 ........................................................................ 70975 ........................................................................ 70976 ........................................................................ 70977 ........................................................................ 70978 ........................................................................ 70979 ........................................................................ 70980 ........................................................................ 70981 ........................................................................ 70982 ........................................................................ 70983 ........................................................................ 70984 ........................................................................ 70985 ........................................................................ 70986 ........................................................................ 70987 ........................................................................ 70988 ........................................................................ 70989 ........................................................................ 70990 ........................................................................ 70991 ........................................................................ 70992 ........................................................................ 70993 ........................................................................ 70994 ........................................................................ 70995 ........................................................................ 70996 ........................................................................ 70997 ........................................................................ 70998 ........................................................................ 70999 ........................................................................ 71000 ........................................................................ 71001 ........................................................................ 71002 ........................................................................ 71003 ........................................................................ 71004 ........................................................................ 71005 ........................................................................ 71006 ........................................................................ 71007 ........................................................................ 71008 ........................................................................ 71009 ........................................................................ 71010 ........................................................................ 71011 ........................................................................ 71012 ........................................................................ 71013 ........................................................................ 71014 ........................................................................ 71015 ........................................................................ 71016 ........................................................................ 71017 ........................................................................ 71018 ........................................................................ 71019 ........................................................................ 71020 ........................................................................ 71021 ........................................................................ 71022 ........................................................................ 71023 ........................................................................ 71024 ........................................................................ 71025 ........................................................................ 71026 ........................................................................ 71027 ........................................................................ 71028 ........................................................................ 71029 ........................................................................ 71030 ........................................................................ 71031 ........................................................................ 71032 ........................................................................ 71033 ........................................................................ 71034 ........................................................................ 71035 ........................................................................ 71036 ........................................................................ 71037 ........................................................................ 71038 ........................................................................ 71039 ........................................................................ 71040 ........................................................................ 71041 ........................................................................ 71042 ........................................................................ 71043 ........................................................................ 71044 ........................................................................ 71045 ........................................................................ 71046 ........................................................................ 71047 ........................................................................ 71048 ........................................................................ 71049 ........................................................................ 71050 ........................................................................ 71051 ........................................................................ 71052 ........................................................................ 71053 ........................................................................ 71054 ........................................................................ 71055 ........................................................................ 71056 ........................................................................ 71057 ........................................................................ 71058 ........................................................................ 71059 ........................................................................ 71060 ........................................................................ 71061 ........................................................................ 71062 ........................................................................ 71063 ........................................................................ 71064 ........................................................................ 71065 ........................................................................ 71066 ........................................................................ 71067 ........................................................................ 71068 ........................................................................ 71069 ........................................................................ 71070 ........................................................................ 71071 ........................................................................ 71072 ........................................................................ 71073 ........................................................................ 71074 ........................................................................ 71075 ........................................................................ 71076 ........................................................................ 71077 ........................................................................ 71078 ........................................................................ 71079 ........................................................................ 71080 ........................................................................ 71081 ........................................................................ 71082 ........................................................................ 71083 ........................................................................ 71084 ........................................................................ 71085 ........................................................................ 71086 ........................................................................ 71087 ........................................................................ 71088 ........................................................................ 71089 ........................................................................ 71090 ........................................................................ 71091 ........................................................................ 71092 ........................................................................ 71093 ........................................................................ 71094 ........................................................................ 71095 ........................................................................ 71096 ........................................................................ 71097 ........................................................................ 71098 ........................................................................ 71099 ........................................................................ 71100 ........................................................................ 71101 ........................................................................ 71102 ........................................................................ 71103 ........................................................................ 71104 ........................................................................ 71105 ........................................................................ 71106 ........................................................................ 71107 ........................................................................ 71108 ........................................................................ 71109 ........................................................................ 71110 ........................................................................ 71111 ........................................................................ 71112 ........................................................................ 71113 ........................................................................ 71114 ........................................................................ 71115 ........................................................................ 71116 ........................................................................ 71117 ........................................................................ 71118 ........................................................................ 71119 ........................................................................ 71120 ........................................................................ 71121 ........................................................................ 71122 ........................................................................ 71123 ........................................................................ 71124 ........................................................................ 71125 ........................................................................ 71126 ........................................................................ 71127 ........................................................................ 71128 ........................................................................ 71129 ........................................................................ 71130 ........................................................................ 71131 ........................................................................ 71132 ........................................................................ 71133 ........................................................................ 71134 ........................................................................ 71135 ........................................................................ 71136 ........................................................................ 71137 ........................................................................ 71138 ........................................................................ 71139 ........................................................................ 71140 ........................................................................ 71141 ........................................................................ 71142 ........................................................................ 71143 ........................................................................ 71144 ........................................................................ 71145 ........................................................................ 71146 ........................................................................ 71147 ........................................................................ 71148 ........................................................................ 71149 ........................................................................ 71150 ........................................................................ 71151 ........................................................................ 71152 ........................................................................ 71153 ........................................................................ 71154 ........................................................................ 71155 ........................................................................ 71156 ........................................................................ 71157 ........................................................................ 71158 ........................................................................ 71159 ........................................................................ 71160 ........................................................................ 71161 ........................................................................ 71162 ........................................................................ 71163 ........................................................................ 71164 ........................................................................ 71165 ........................................................................ 71166 ........................................................................ 71167 ........................................................................ 71168 ........................................................................ 71169 ........................................................................ 71170 ........................................................................ 71171 ........................................................................ 71172 ........................................................................ 71173 ........................................................................ 71174 ........................................................................ 71175 ........................................................................ 71176 ........................................................................ 71177 ........................................................................ 71178 ........................................................................ 71179 ........................................................................ 71180 ........................................................................ 71181 ........................................................................ 71182 ........................................................................ 71183 ........................................................................ 71184 ........................................................................ 71185 ........................................................................ 71186 ........................................................................ 71187 ........................................................................ 71188 ........................................................................ 71189 ........................................................................ 71190 ........................................................................ 71191 ........................................................................ 71192 ........................................................................ 71193 ........................................................................ 71194 ........................................................................ 71195 ........................................................................ 71196 ........................................................................ 71197 ........................................................................ 71198 ........................................................................ 71199 ........................................................................ 71200 ........................................................................ 71201 ........................................................................ 71202 ........................................................................ 71203 ........................................................................ 71204 ........................................................................ 71205 ........................................................................ 71206 ........................................................................ 71207 ........................................................................ 71208 ........................................................................ 71209 ........................................................................ 71210 ........................................................................ 71211 ........................................................................ 71212 ........................................................................ 71213 ........................................................................ 71214 ........................................................................ 71215 ........................................................................ 71216 ........................................................................ 71217 ........................................................................ 71218 ........................................................................ 71219 ........................................................................ 71220 ........................................................................ 71221 ........................................................................ 71222 ........................................................................ 71223 ........................................................................ 71224 ........................................................................ 71225 ........................................................................ 71226 ........................................................................ 71227 ........................................................................ 71228 ........................................................................ 71229 ........................................................................ 71230 ........................................................................ 71231 ........................................................................ 71232 ........................................................................ 71233 ........................................................................ 71234 ........................................................................ 71235 ........................................................................ 71236 ........................................................................ 71237 ........................................................................ 71238 ........................................................................ 71239 ........................................................................ 71240 ........................................................................ 71241 ........................................................................ 71242 ........................................................................ 71243 ........................................................................ 71244 ........................................................................ 71245 ........................................................................ 71246 ........................................................................ 71247 ........................................................................ 71248 ........................................................................ 71249 ........................................................................ 71250 ........................................................................ 71251 ........................................................................ 71252 ........................................................................ 71253 ........................................................................ 71254 ........................................................................ 71255 ........................................................................ 71256 ........................................................................ 71257 ........................................................................ 71258 ........................................................................ 71259 ........................................................................ 71260 ........................................................................ 71261 ........................................................................ 71262 ........................................................................ 71263 ........................................................................ 71264 ........................................................................ 71265 ........................................................................ 71266 ........................................................................ 71267 ........................................................................ 71268 ........................................................................ 71269 ........................................................................ 71270 ........................................................................ 71271 ........................................................................ 71272 ........................................................................ 71273 ........................................................................ 71274 ........................................................................ 71275 ........................................................................ 71276 ........................................................................ 71277 ........................................................................ 71278 ........................................................................ 71279 ........................................................................ 71280 ........................................................................ 71281 ........................................................................ 71282 ........................................................................ 71283 ........................................................................ 71284 ........................................................................ 71285 ........................................................................ 71286 ........................................................................ 71287 ........................................................................ 71288 ........................................................................ 71289 ........................................................................ 71290 ........................................................................ 71291 ........................................................................ 71292 ........................................................................ 71293 ........................................................................ 71294 ........................................................................ 71295 ........................................................................ 71296 ........................................................................ 71297 ........................................................................ 71298 ........................................................................ 71299 ........................................................................ 71300 ........................................................................ 71301 ........................................................................ 71302 ........................................................................ 71303 ........................................................................ 71304 ........................................................................ 71305 ........................................................................ 71306 ........................................................................ 71307 ........................................................................ 71308 ........................................................................ 71309 ........................................................................ 71310 ........................................................................ 71311 ........................................................................ 71312 ........................................................................ 71313 ........................................................................ 71314 ........................................................................ 71315 ........................................................................ 71316 ........................................................................ 71317 ........................................................................ 71318 ........................................................................ 71319 ........................................................................ 71320 ........................................................................ 71321 ........................................................................ 71322 ........................................................................ 71323 ........................................................................ 71324 ........................................................................ 71325 ........................................................................ 71326 ........................................................................ 71327 ........................................................................ 71328 ........................................................................ 71329 ........................................................................ 71330 ........................................................................ 71331 ........................................................................ 71332 ........................................................................ 71333 ........................................................................ 71334 ........................................................................ 71335 ........................................................................ 71336 ........................................................................ 71337 ........................................................................ 71338 ........................................................................ 71339 ........................................................................ 71340 ........................................................................ 71341 ........................................................................ 71342 ........................................................................ 71343 ........................................................................ 71344 ........................................................................ 71345 ........................................................................ 71346 ........................................................................ 71347 ........................................................................ 71348 ........................................................................ 71349 ........................................................................ 71350 ........................................................................ 71351 ........................................................................ 71352 ........................................................................ 71353 ........................................................................ 71354 ........................................................................ 71355 ........................................................................ 71356 ........................................................................ 71357 ........................................................................ 71358 ........................................................................ 71359 ........................................................................ 71360 ........................................................................ 71361 ........................................................................ 71362 ........................................................................ 71363 ........................................................................ 71364 ........................................................................ 71365 ........................................................................ 71366 ........................................................................ 71367 ........................................................................ 71368 ........................................................................ 71369 ........................................................................ 71370 ........................................................................ 71371 ........................................................................ 71372 ........................................................................ 71373 ........................................................................ 71374 ........................................................................ 71375 ........................................................................ 71376 ........................................................................ 71377 ........................................................................ 71378 ........................................................................ 71379 ........................................................................ 71380 ........................................................................ 71381 ........................................................................ 71382 ........................................................................ 71383 ........................................................................ 71384 ........................................................................ 71385 ........................................................................ 71386 ........................................................................ 71387 ........................................................................ 71388 ........................................................................ 71389 ........................................................................ 71390 ........................................................................ 71391 ........................................................................ 71392 ........................................................................ 71393 ........................................................................ 71394 ........................................................................ 71395 ........................................................................ 71396 ........................................................................ 71397 ........................................................................ 71398 ........................................................................ 71399 ........................................................................ 71400 ........................................................................ 71401 ........................................................................ 71402 ........................................................................ 71403 ........................................................................ 71404 ........................................................................ 71405 ........................................................................ 71406 ........................................................................ 71407 ........................................................................ 71408 ........................................................................ 71409 ........................................................................ 71410 ........................................................................ 71411 ........................................................................ 71412 ........................................................................ 71413 ........................................................................ 71414 ........................................................................ 71415 ........................................................................ 71416 ........................................................................ 71417 ........................................................................ 71418 ........................................................................ 71419 ........................................................................ 71420 ........................................................................ 71421 ........................................................................ 71422 ........................................................................ 71423 ........................................................................ 71424 ........................................................................ 71425 ........................................................................ 71426 ........................................................................ 71427 ........................................................................ 71428 ........................................................................ 71429 ........................................................................ 71430 ........................................................................ 71431 ........................................................................ 71432 ........................................................................ 71433 ........................................................................ 71434 ........................................................................ 71435 ........................................................................ 71436 ........................................................................ 71437 ........................................................................ 71438 ........................................................................ 71439 ........................................................................ 71440 ........................................................................ 71441 ........................................................................ 71442 ........................................................................ 71443 ........................................................................ 71444 ........................................................................ 71445 ........................................................................ 71446 ........................................................................ 71447 ........................................................................ 71448 ........................................................................ 71449 ........................................................................ 71450 ........................................................................ 71451 ........................................................................ 71452 ........................................................................ 71453 ........................................................................ 71454 ........................................................................ 71455 ........................................................................ 71456 ........................................................................ 71457 ........................................................................ 71458 ........................................................................ 71459 ........................................................................ 71460 ........................................................................ 71461 ........................................................................ 71462 ........................................................................ 71463 ........................................................................ 71464 ........................................................................ 71465 ........................................................................ 71466 ........................................................................ 71467 ........................................................................ 71468 ........................................................................ 71469 ........................................................................ 71470 ........................................................................ 71471 ........................................................................ 71472 ........................................................................ 71473 ........................................................................ 71474 ........................................................................ 71475 ........................................................................ 71476 ........................................................................ 71477 ........................................................................ 71478 ........................................................................ 71479 ........................................................................ 71480 ........................................................................ 71481 ........................................................................ 71482 ........................................................................ 71483 ........................................................................ 71484 ........................................................................ 71485 ........................................................................ 71486 ........................................................................ 71487 ........................................................................ 71488 ........................................................................ 71489 ........................................................................ 71490 ........................................................................ 71491 ........................................................................ 71492 ........................................................................ 71493 ........................................................................ 71494 ........................................................................ 71495 ........................................................................ 71496 ........................................................................ 71497 ........................................................................ 71498 ........................................................................ 71499 ........................................................................ 71500 ........................................................................ 71501 ........................................................................ 71502 ........................................................................ 71503 ........................................................................ 71504 ........................................................................ 71505 ........................................................................ 71506 ........................................................................ 71507 ........................................................................ 71508 ........................................................................ 71509 ........................................................................ 71510 ........................................................................ 71511 ........................................................................ 71512 ........................................................................ 71513 ........................................................................ 71514 ........................................................................ 71515 ........................................................................ 71516 ........................................................................ 71517 ........................................................................ 71518 ........................................................................ 71519 ........................................................................ 71520 ........................................................................ 71521 ........................................................................ 71522 ........................................................................ 71523 ........................................................................ 71524 ........................................................................ 71525 ........................................................................ 71526 ........................................................................ 71527 ........................................................................ 71528 ........................................................................ 71529 ........................................................................ 71530 ........................................................................ 71531 ........................................................................ 71532 ........................................................................ 71533 ........................................................................ 71534 ........................................................................ 71535 ........................................................................ 71536 ........................................................................ 71537 ........................................................................ 71538 ........................................................................ 71539 ........................................................................ 71540 ........................................................................ 71541 ........................................................................ 71542 ........................................................................ 71543 ........................................................................ 71544 ........................................................................ 71545 ........................................................................ 71546 ........................................................................ 71547 ........................................................................ 71548 ........................................................................ 71549 ........................................................................ 71550 ........................................................................ 71551 ........................................................................ 71552 ........................................................................ 71553 ........................................................................ 71554 ........................................................................ 71555 ........................................................................ 71556 ........................................................................ 71557 ........................................................................ 71558 ........................................................................ 71559 ........................................................................ 71560 ........................................................................ 71561 ........................................................................ 71562 ........................................................................ 71563 ........................................................................ 71564 ........................................................................ 71565 ........................................................................ 71566 ........................................................................ 71567 ........................................................................ 71568 ........................................................................ 71569 ........................................................................ 71570 ........................................................................ 71571 ........................................................................ 71572 ........................................................................ 71573 ........................................................................ 71574 ........................................................................ 71575 ........................................................................ 71576 ........................................................................ 71577 ........................................................................ 71578 ........................................................................ 71579 ........................................................................ 71580 ........................................................................ 71581 ........................................................................ 71582 ........................................................................ 71583 ........................................................................ 71584 ........................................................................ 71585 ........................................................................ 71586 ........................................................................ 71587 ........................................................................ 71588 ........................................................................ 71589 ........................................................................ 71590 ........................................................................ 71591 ........................................................................ 71592 ........................................................................ 71593 ........................................................................ 71594 ........................................................................ 71595 ........................................................................ 71596 ........................................................................ 71597 ........................................................................ 71598 ........................................................................ 71599 ........................................................................ 71600 ........................................................................ 71601 ........................................................................ 71602 ........................................................................ 71603 ........................................................................ 71604 ........................................................................ 71605 ........................................................................ 71606 ........................................................................ 71607 ........................................................................ 71608 ........................................................................ 71609 ........................................................................ 71610 ........................................................................ 71611 ........................................................................ 71612 ........................................................................ 71613 ........................................................................ 71614 ........................................................................ 71615 ........................................................................ 71616 ........................................................................ 71617 ........................................................................ 71618 ........................................................................ 71619 ........................................................................ 71620 ........................................................................ 71621 ........................................................................ 71622 ........................................................................ 71623 ........................................................................ 71624 ........................................................................ 71625 ........................................................................ 71626 ........................................................................ 71627 ........................................................................ 71628 ........................................................................ 71629 ........................................................................ 71630 ........................................................................ 71631 ........................................................................ 71632 ........................................................................ 71633 ........................................................................ 71634 ........................................................................ 71635 ........................................................................ 71636 ........................................................................ 71637 ........................................................................ 71638 ........................................................................ 71639 ........................................................................ 71640 ........................................................................ 71641 ........................................................................ 71642 ........................................................................ 71643 ........................................................................ 71644 ........................................................................ 71645 ........................................................................ 71646 ........................................................................ 71647 ........................................................................ 71648 ........................................................................ 71649 ........................................................................ 71650 ........................................................................ 71651 ........................................................................ 71652 ........................................................................ 71653 ........................................................................ 71654 ........................................................................ 71655 ........................................................................ 71656 ........................................................................ 71657 ........................................................................ 71658 ........................................................................ 71659 ........................................................................ 71660 ........................................................................ 71661 ........................................................................ 71662 ........................................................................ 71663 ........................................................................ 71664 ........................................................................ 71665 ........................................................................ 71666 ........................................................................ 71667 ........................................................................ 71668 ........................................................................ 71669 ........................................................................ 71670 ........................................................................ 71671 ........................................................................ 71672 ........................................................................ 71673 ........................................................................ 71674 ........................................................................ 71675 ........................................................................ 71676 ........................................................................ 71677 ........................................................................ 71678 ........................................................................ 71679 ........................................................................ 71680 ........................................................................ 71681 ........................................................................ 71682 ........................................................................ 71683 ........................................................................ 71684 ........................................................................ 71685 ........................................................................ 71686 ........................................................................ 71687 ........................................................................ 71688 ........................................................................ 71689 ........................................................................ 71690 ........................................................................ 71691 ........................................................................ 71692 ........................................................................ 71693 ........................................................................ 71694 ........................................................................ 71695 ........................................................................ 71696 ........................................................................ 71697 ........................................................................ 71698 ........................................................................ 71699 ........................................................................ 71700 ........................................................................ 71701 ........................................................................ 71702 ........................................................................ 71703 ........................................................................ 71704 ........................................................................ 71705 ........................................................................ 71706 ........................................................................ 71707 ........................................................................ 71708 ........................................................................ 71709 ........................................................................ 71710 ........................................................................ 71711 ........................................................................ 71712 ........................................................................ 71713 ........................................................................ 71714 ........................................................................ 71715 ........................................................................ 71716 ........................................................................ 71717 ........................................................................ 71718 ........................................................................ 71719 ........................................................................ 71720 ........................................................................ 71721 ........................................................................ 71722 ........................................................................ 71723 ........................................................................ 71724 ........................................................................ 71725 ........................................................................ 71726 ........................................................................ 71727 ........................................................................ 71728 ........................................................................ 71729 ........................................................................ 71730 ........................................................................ 71731 ........................................................................ 71732 ........................................................................ 71733 ........................................................................ 71734 ........................................................................ 71735 ........................................................................ 71736 ........................................................................ 71737 ........................................................................ 71738 ........................................................................ 71739 ........................................................................ 71740 ........................................................................ 71741 ........................................................................ 71742 ........................................................................ 71743 ........................................................................ 71744 ........................................................................ 71745 ........................................................................ 71746 ........................................................................ 71747 ........................................................................ 71748 ........................................................................ 71749 ........................................................................ 71750 ........................................................................ 71751 ........................................................................ 71752 ........................................................................ 71753 ........................................................................ 71754 ........................................................................ 71755 ........................................................................ 71756 ........................................................................ 71757 ........................................................................ 71758 ........................................................................ 71759 ........................................................................ 71760 ........................................................................ 71761 ........................................................................ 71762 ........................................................................ 71763 ........................................................................ 71764 ........................................................................ 71765 ........................................................................ 71766 ........................................................................ 71767 ........................................................................ 71768 ........................................................................ 71769 ........................................................................ 71770 ........................................................................ 71771 ........................................................................ 71772 ........................................................................ 71773 ........................................................................ 71774 ........................................................................ 71775 ........................................................................ 71776 ........................................................................ 71777 ........................................................................ 71778 ........................................................................ 71779 ........................................................................ 71780 ........................................................................ 71781 ........................................................................ 71782 ........................................................................ 71783 ........................................................................ 71784 ........................................................................ 71785 ........................................................................ 71786 ........................................................................ 71787 ........................................................................ 71788 ........................................................................ 71789 ........................................................................ 71790 ........................................................................ 71791 ........................................................................ 71792 ........................................................................ 71793 ........................................................................ 71794 ........................................................................ 71795 ........................................................................ 71796 ........................................................................ 71797 ........................................................................ 71798 ........................................................................ 71799 ........................................................................ 71800 ........................................................................ 71801 ........................................................................ 71802 ........................................................................ 71803 ........................................................................ 71804 ........................................................................ 71805 ........................................................................ 71806 ........................................................................ 71807 ........................................................................ 71808 ........................................................................ 71809 ........................................................................ 71810 ........................................................................ 71811 ........................................................................ 71812 ........................................................................ 71813 ........................................................................ 71814 ........................................................................ 71815 ........................................................................ 71816 ........................................................................ 71817 ........................................................................ 71818 ........................................................................ 71819 ........................................................................ 71820 ........................................................................ 71821 ........................................................................ 71822 ........................................................................ 71823 ........................................................................ 71824 ........................................................................ 71825 ........................................................................ 71826 ........................................................................ 71827 ........................................................................ 71828 ........................................................................ 71829 ........................................................................ 71830 ........................................................................ 71831 ........................................................................ 71832 ........................................................................ 71833 ........................................................................ 71834 ........................................................................ 71835 ........................................................................ 71836 ........................................................................ 71837 ........................................................................ 71838 ........................................................................ 71839 ........................................................................ 71840 ........................................................................ 71841 ........................................................................ 71842 ........................................................................ 71843 ........................................................................ 71844 ........................................................................ 71845 ........................................................................ 71846 ........................................................................ 71847 ........................................................................ 71848 ........................................................................ 71849 ........................................................................ 71850 ........................................................................ 71851 ........................................................................ 71852 ........................................................................ 71853 ........................................................................ 71854 ........................................................................ 71855 ........................................................................ 71856 ........................................................................ 71857 ........................................................................ 71858 ........................................................................ 71859 ........................................................................ 71860 ........................................................................ 71861 ........................................................................ 71862 ........................................................................ 71863 ........................................................................ 71864 ........................................................................ 71865 ........................................................................ 71866 ........................................................................ 71867 ........................................................................ 71868 ........................................................................ 71869 ........................................................................ 71870 ........................................................................ 71871 ........................................................................ 71872 ........................................................................ 71873 ........................................................................ 71874 ........................................................................ 71875 ........................................................................ 71876 ........................................................................ 71877 ........................................................................ 71878 ........................................................................ 71879 ........................................................................ 71880 ........................................................................ 71881 ........................................................................ 71882 ........................................................................ 71883 ........................................................................ 71884 ........................................................................ 71885 ........................................................................ 71886 ........................................................................ 71887 ........................................................................ 71888 ........................................................................ 71889 ........................................................................ 71890 ........................................................................ 71891 ........................................................................ 71892 ........................................................................ 71893 ........................................................................ 71894 ........................................................................ 71895 ........................................................................ 71896 ........................................................................ 71897 ........................................................................ 71898 ........................................................................ 71899 ........................................................................ 71900 ........................................................................ 71901 ........................................................................ 71902 ........................................................................ 71903 ........................................................................ 71904 ........................................................................ 71905 ........................................................................ 71906 ........................................................................ 71907 ........................................................................ 71908 ........................................................................ 71909 ........................................................................ 71910 ........................................................................ 71911 ........................................................................ 71912 ........................................................................ 71913 ........................................................................ 71914 ........................................................................ 71915 ........................................................................ 71916 ........................................................................ 71917 ........................................................................ 71918 ........................................................................ 71919 ........................................................................ 71920 ........................................................................ 71921 ........................................................................ 71922 ........................................................................ 71923 ........................................................................ 71924 ........................................................................ 71925 ........................................................................ 71926 ........................................................................ 71927 ........................................................................ 71928 ........................................................................ 71929 ........................................................................ 71930 ........................................................................ 71931 ........................................................................ 71932 ........................................................................ 71933 ........................................................................ 71934 ........................................................................ 71935 ........................................................................ 71936 ........................................................................ 71937 ........................................................................ 71938 ........................................................................ 71939 ........................................................................ 71940 ........................................................................ 71941 ........................................................................ 71942 ........................................................................ 71943 ........................................................................ 71944 ........................................................................ 71945 ........................................................................ 71946 ........................................................................ 71947 ........................................................................ 71948 ........................................................................ 71949 ........................................................................ 71950 ........................................................................ 71951 ........................................................................ 71952 ........................................................................ 71953 ........................................................................ 71954 ........................................................................ 71955 ........................................................................ 71956 ........................................................................ 71957 ........................................................................ 71958 ........................................................................ 71959 ........................................................................ 71960 ........................................................................ 71961 ........................................................................ 71962 ........................................................................ 71963 ........................................................................ 71964 ........................................................................ 71965 ........................................................................ 71966 ........................................................................ 71967 ........................................................................ 71968 ........................................................................ 71969 ........................................................................ 71970 ........................................................................ 71971 ........................................................................ 71972 ........................................................................ 71973 ........................................................................ 71974 ........................................................................ 71975 ........................................................................ 71976 ........................................................................ 71977 ........................................................................ 71978 ........................................................................ 71979 ........................................................................ 71980 ........................................................................ 71981 ........................................................................ 71982 ........................................................................ 71983 ........................................................................ 71984 ........................................................................ 71985 ........................................................................ 71986 ........................................................................ 71987 ........................................................................ 71988 ........................................................................ 71989 ........................................................................ 71990 ........................................................................ 71991 ........................................................................ 71992 ........................................................................ 71993 ........................................................................ 71994 ........................................................................ 71995 ........................................................................ 71996 ........................................................................ 71997 ........................................................................ 71998 ........................................................................ 71999 ........................................................................ 72000 ........................................................................ 72001 ........................................................................ 72002 ........................................................................ 72003 ........................................................................ 72004 ........................................................................ 72005 ........................................................................ 72006 ........................................................................ 72007 ........................................................................ 72008 ........................................................................ 72009 ........................................................................ 72010 ........................................................................ 72011 ........................................................................ 72012 ........................................................................ 72013 ........................................................................ 72014 ........................................................................ 72015 ........................................................................ 72016 ........................................................................ 72017 ........................................................................ 72018 ........................................................................ 72019 ........................................................................ 72020 ........................................................................ 72021 ........................................................................ 72022 ........................................................................ 72023 ........................................................................ 72024 ........................................................................ 72025 ........................................................................ 72026 ........................................................................ 72027 ........................................................................ 72028 ........................................................................ 72029 ........................................................................ 72030 ........................................................................ 72031 ........................................................................ 72032 ........................................................................ 72033 ........................................................................ 72034 ........................................................................ 72035 ........................................................................ 72036 ........................................................................ 72037 ........................................................................ 72038 ........................................................................ 72039 ........................................................................ 72040 ........................................................................ 72041 ........................................................................ 72042 ........................................................................ 72043 ........................................................................ 72044 ........................................................................ 72045 ........................................................................ 72046 ........................................................................ 72047 ........................................................................ 72048 ........................................................................ 72049 ........................................................................ 72050 ........................................................................ 72051 ........................................................................ 72052 ........................................................................ 72053 ........................................................................ 72054 ........................................................................ 72055 ........................................................................ 72056 ........................................................................ 72057 ........................................................................ 72058 ........................................................................ 72059 ........................................................................ 72060 ........................................................................ 72061 ........................................................................ 72062 ........................................................................ 72063 ........................................................................ 72064 ........................................................................ 72065 ........................................................................ 72066 ........................................................................ 72067 ........................................................................ 72068 ........................................................................ 72069 ........................................................................ 72070 ........................................................................ 72071 ........................................................................ 72072 ........................................................................ 72073 ........................................................................ 72074 ........................................................................ 72075 ........................................................................ 72076 ........................................................................ 72077 ........................................................................ 72078 ........................................................................ 72079 ........................................................................ 72080 ........................................................................ 72081 ........................................................................ 72082 ........................................................................ 72083 ........................................................................ 72084 ........................................................................ 72085 ........................................................................ 72086 ........................................................................ 72087 ........................................................................ 72088 ........................................................................ 72089 ........................................................................ 72090 ........................................................................ 72091 ........................................................................ 72092 ........................................................................ 72093 ........................................................................ 72094 ........................................................................ 72095 ........................................................................ 72096 ........................................................................ 72097 ........................................................................ 72098 ........................................................................ 72099 ........................................................................ 72100 ........................................................................ 72101 ........................................................................ 72102 ........................................................................ 72103 ........................................................................ 72104 ........................................................................ 72105 ........................................................................ 72106 ........................................................................ 72107 ........................................................................ 72108 ........................................................................ 72109 ........................................................................ 72110 ........................................................................ 72111 ........................................................................ 72112 ........................................................................ 72113 ........................................................................ 72114 ........................................................................ 72115 ........................................................................ 72116 ........................................................................ 72117 ........................................................................ 72118 ........................................................................ 72119 ........................................................................ 72120 ........................................................................ 72121 ........................................................................ 72122 ........................................................................ 72123 ........................................................................ 72124 ........................................................................ 72125 ........................................................................ 72126 ........................................................................ 72127 ........................................................................ 72128 ........................................................................ 72129 ........................................................................ 72130 ........................................................................ 72131 ........................................................................ 72132 ........................................................................ 72133 ........................................................................ 72134 ........................................................................ 72135 ........................................................................ 72136 ........................................................................ 72137 ........................................................................ 72138 ........................................................................ 72139 ........................................................................ 72140 ........................................................................ 72141 ........................................................................ 72142 ........................................................................ 72143 ........................................................................ 72144 ........................................................................ 72145 ........................................................................ 72146 ........................................................................ 72147 ........................................................................ 72148 ........................................................................ 72149 ........................................................................ 72150 ........................................................................ 72151 ........................................................................ 72152 ........................................................................ 72153 ........................................................................ 72154 ........................................................................ 72155 ........................................................................ 72156 ........................................................................ 72157 ........................................................................ 72158 ........................................................................ 72159 ........................................................................ 72160 ........................................................................ 72161 ........................................................................ 72162 ........................................................................ 72163 ........................................................................ 72164 ........................................................................ 72165 ........................................................................ 72166 ........................................................................ 72167 ........................................................................ 72168 ........................................................................ 72169 ........................................................................ 72170 ........................................................................ 72171 ........................................................................ 72172 ........................................................................ 72173 ........................................................................ 72174 ........................................................................ 72175 ........................................................................ 72176 ........................................................................ 72177 ........................................................................ 72178 ........................................................................ 72179 ........................................................................ 72180 ........................................................................ 72181 ........................................................................ 72182 ........................................................................ 72183 ........................................................................ 72184 ........................................................................ 72185 ........................................................................ 72186 ........................................................................ 72187 ........................................................................ 72188 ........................................................................ 72189 ........................................................................ 72190 ........................................................................ 72191 ........................................................................ 72192 ........................................................................ 72193 ........................................................................ 72194 ........................................................................ 72195 ........................................................................ 72196 ........................................................................ 72197 ........................................................................ 72198 ........................................................................ 72199 ........................................................................ 72200 ........................................................................ 72201 ........................................................................ 72202 ........................................................................ 72203 ........................................................................ 72204 ........................................................................ 72205 ........................................................................ 72206 ........................................................................ 72207 ........................................................................ 72208 ........................................................................ 72209 ........................................................................ 72210 ........................................................................ 72211 ........................................................................ 72212 ........................................................................ 72213 ........................................................................ 72214 ........................................................................ 72215 ........................................................................ 72216 ........................................................................ 72217 ........................................................................ 72218 ........................................................................ 72219 ........................................................................ 72220 ........................................................................ 72221 ........................................................................ 72222 ........................................................................ 72223 ........................................................................ 72224 ........................................................................ 72225 ........................................................................ 72226 ........................................................................ 72227 ........................................................................ 72228 ........................................................................ 72229 ........................................................................ 72230 ........................................................................ 72231 ........................................................................ 72232 ........................................................................ 72233 ........................................................................ 72234 ........................................................................ 72235 ........................................................................ 72236 ........................................................................ 72237 ........................................................................ 72238 ........................................................................ 72239 ........................................................................ 72240 ........................................................................ 72241 ........................................................................ 72242 ........................................................................ 72243 ........................................................................ 72244 ........................................................................ 72245 ........................................................................ 72246 ........................................................................ 72247 ........................................................................ 72248 ........................................................................ 72249 ........................................................................ 72250 ........................................................................ 72251 ........................................................................ 72252 ........................................................................ 72253 ........................................................................ 72254 ........................................................................ 72255 ........................................................................ 72256 ........................................................................ 72257 ........................................................................ 72258 ........................................................................ 72259 ........................................................................ 72260 ........................................................................ 72261 ........................................................................ 72262 ........................................................................ 72263 ........................................................................ 72264 ........................................................................ 72265 ........................................................................ 72266 ........................................................................ 72267 ........................................................................ 72268 ........................................................................ 72269 ........................................................................ 72270 ........................................................................ 72271 ........................................................................ 72272 ........................................................................ 72273 ........................................................................ 72274 ........................................................................ 72275 ........................................................................ 72276 ........................................................................ 72277 ........................................................................ 72278 ........................................................................ 72279 ........................................................................ 72280 ........................................................................ 72281 ........................................................................ 72282 ........................................................................ 72283 ........................................................................ 72284 ........................................................................ 72285 ........................................................................ 72286 ........................................................................ 72287 ........................................................................ 72288 ........................................................................ 72289 ........................................................................ 72290 ........................................................................ 72291 ........................................................................ 72292 ........................................................................ 72293 ........................................................................ 72294 ........................................................................ 72295 ........................................................................ 72296 ........................................................................ 72297 ........................................................................ 72298 ........................................................................ 72299 ........................................................................ 72300 ........................................................................ 72301 ........................................................................ 72302 ........................................................................ 72303 ........................................................................ 72304 ........................................................................ 72305 ........................................................................ 72306 ........................................................................ 72307 ........................................................................ 72308 ........................................................................ 72309 ........................................................................ 72310 ........................................................................ 72311 ........................................................................ 72312 ........................................................................ 72313 ........................................................................ 72314 ........................................................................ 72315 ........................................................................ 72316 ........................................................................ 72317 ........................................................................ 72318 ........................................................................ 72319 ........................................................................ 72320 ........................................................................ 72321 ........................................................................ 72322 ........................................................................ 72323 ........................................................................ 72324 ........................................................................ 72325 ........................................................................ 72326 ........................................................................ 72327 ........................................................................ 72328 ........................................................................ 72329 ........................................................................ 72330 ........................................................................ 72331 ........................................................................ 72332 ........................................................................ 72333 ........................................................................ 72334 ........................................................................ 72335 ........................................................................ 72336 ........................................................................ 72337 ........................................................................ 72338 ........................................................................ 72339 ........................................................................ 72340 ........................................................................ 72341 ........................................................................ 72342 ........................................................................ 72343 ........................................................................ 72344 ........................................................................ 72345 ........................................................................ 72346 ........................................................................ 72347 ........................................................................ 72348 ........................................................................ 72349 ........................................................................ 72350 ........................................................................ 72351 ........................................................................ 72352 ........................................................................ 72353 ........................................................................ 72354 ........................................................................ 72355 ........................................................................ 72356 ........................................................................ 72357 ........................................................................ 72358 ........................................................................ 72359 ........................................................................ 72360 ........................................................................ 72361 ........................................................................ 72362 ........................................................................ 72363 ........................................................................ 72364 ........................................................................ 72365 ........................................................................ 72366 ........................................................................ 72367 ........................................................................ 72368 ........................................................................ 72369 ........................................................................ 72370 ........................................................................ 72371 ........................................................................ 72372 ........................................................................ 72373 ........................................................................ 72374 ........................................................................ 72375 ........................................................................ 72376 ........................................................................ 72377 ........................................................................ 72378 ........................................................................ 72379 ........................................................................ 72380 ........................................................................ 72381 ........................................................................ 72382 ........................................................................ 72383 ........................................................................ 72384 ........................................................................ 72385 ........................................................................ 72386 ........................................................................ 72387 ........................................................................ 72388 ........................................................................ 72389 ........................................................................ 72390 ........................................................................ 72391 ........................................................................ 72392 ........................................................................ 72393 ........................................................................ 72394 ........................................................................ 72395 ........................................................................ 72396 ........................................................................ 72397 ........................................................................ 72398 ........................................................................ 72399 ........................................................................ 72400 ........................................................................ 72401 ........................................................................ 72402 ........................................................................ 72403 ........................................................................ 72404 ........................................................................ 72405 ........................................................................ 72406 ........................................................................ 72407 ........................................................................ 72408 ........................................................................ 72409 ........................................................................ 72410 ........................................................................ 72411 ........................................................................ 72412 ........................................................................ 72413 ........................................................................ 72414 ........................................................................ 72415 ........................................................................ 72416 ........................................................................ 72417 ........................................................................ 72418 ........................................................................ 72419 ........................................................................ 72420 ........................................................................ 72421 ........................................................................ 72422 ........................................................................ 72423 ........................................................................ 72424 ........................................................................ 72425 ........................................................................ 72426 ........................................................................ 72427 ........................................................................ 72428 ........................................................................ 72429 ........................................................................ 72430 ........................................................................ 72431 ........................................................................ 72432 ........................................................................ 72433 ........................................................................ 72434 ........................................................................ 72435 ........................................................................ 72436 ........................................................................ 72437 ........................................................................ 72438 ........................................................................ 72439 ........................................................................ 72440 ........................................................................ 72441 ........................................................................ 72442 ........................................................................ 72443 ........................................................................ 72444 ........................................................................ 72445 ........................................................................ 72446 ........................................................................ 72447 ........................................................................ 72448 ........................................................................ 72449 ........................................................................ 72450 ........................................................................ 72451 ........................................................................ 72452 ........................................................................ 72453 ........................................................................ 72454 ........................................................................ 72455 ........................................................................ 72456 ........................................................................ 72457 ........................................................................ 72458 ........................................................................ 72459 ........................................................................ 72460 ........................................................................ 72461 ........................................................................ 72462 ........................................................................ 72463 ........................................................................ 72464 ........................................................................ 72465 ........................................................................ 72466 ........................................................................ 72467 ........................................................................ 72468 ........................................................................ 72469 ........................................................................ 72470 ........................................................................ 72471 ........................................................................ 72472 ........................................................................ 72473 ........................................................................ 72474 ........................................................................ 72475 ........................................................................ 72476 ........................................................................ 72477 ........................................................................ 72478 ........................................................................ 72479 ........................................................................ 72480 ........................................................................ 72481 ........................................................................ 72482 ........................................................................ 72483 ........................................................................ 72484 ........................................................................ 72485 ........................................................................ 72486 ........................................................................ 72487 ........................................................................ 72488 ........................................................................ 72489 ........................................................................ 72490 ........................................................................ 72491 ........................................................................ 72492 ........................................................................ 72493 ........................................................................ 72494 ........................................................................ 72495 ........................................................................ 72496 ........................................................................ 72497 ........................................................................ 72498 ........................................................................ 72499 ........................................................................ 72500 ........................................................................ 72501 ........................................................................ 72502 ........................................................................ 72503 ........................................................................ 72504 ........................................................................ 72505 ........................................................................ 72506 ........................................................................ 72507 ........................................................................ 72508 ........................................................................ 72509 ........................................................................ 72510 ........................................................................ 72511 ........................................................................ 72512 ........................................................................ 72513 ........................................................................ 72514 ........................................................................ 72515 ........................................................................ 72516 ........................................................................ 72517 ........................................................................ 72518 ........................................................................ 72519 ........................................................................ 72520 ........................................................................ 72521 ........................................................................ 72522 ........................................................................ 72523 ........................................................................ 72524 ........................................................................ 72525 ........................................................................ 72526 ........................................................................ 72527 ........................................................................ 72528 ........................................................................ 72529 ........................................................................ 72530 ........................................................................ 72531 ........................................................................ 72532 ........................................................................ 72533 ........................................................................ 72534 ........................................................................ 72535 ........................................................................ 72536 ........................................................................ 72537 ........................................................................ 72538 ........................................................................ 72539 ........................................................................ 72540 ........................................................................ 72541 ........................................................................ 72542 ........................................................................ 72543 ........................................................................ 72544 ........................................................................ 72545 ........................................................................ 72546 ........................................................................ 72547 ........................................................................ 72548 ........................................................................ 72549 ........................................................................ 72550 ........................................................................ 72551 ........................................................................ 72552 ........................................................................ 72553 ........................................................................ 72554 ........................................................................ 72555 ........................................................................ 72556 ........................................................................ 72557 ........................................................................ 72558 ........................................................................ 72559 ........................................................................ 72560 ........................................................................ 72561 ........................................................................ 72562 ........................................................................ 72563 ........................................................................ 72564 ........................................................................ 72565 ........................................................................ 72566 ........................................................................ 72567 ........................................................................ 72568 ........................................................................ 72569 ........................................................................ 72570 ........................................................................ 72571 ........................................................................ 72572 ........................................................................ 72573 ........................................................................ 72574 ........................................................................ 72575 ........................................................................ 72576 ........................................................................ 72577 ........................................................................ 72578 ........................................................................ 72579 ........................................................................ 72580 ........................................................................ 72581 ........................................................................ 72582 ........................................................................ 72583 ........................................................................ 72584 ........................................................................ 72585 ........................................................................ 72586 ........................................................................ 72587 ........................................................................ 72588 ........................................................................ 72589 ........................................................................ 72590 ........................................................................ 72591 ........................................................................ 72592 ........................................................................ 72593 ........................................................................ 72594 ........................................................................ 72595 ........................................................................ 72596 ........................................................................ 72597 ........................................................................ 72598 ........................................................................ 72599 ........................................................................ 72600 ........................................................................ 72601 ........................................................................ 72602 ........................................................................ 72603 ........................................................................ 72604 ........................................................................ 72605 ........................................................................ 72606 ........................................................................ 72607 ........................................................................ 72608 ........................................................................ 72609 ........................................................................ 72610 ........................................................................ 72611 ........................................................................ 72612 ........................................................................ 72613 ........................................................................ 72614 ........................................................................ 72615 ........................................................................ 72616 ........................................................................ 72617 ........................................................................ 72618 ........................................................................ 72619 ........................................................................ 72620 ........................................................................ 72621 ........................................................................ 72622 ........................................................................ 72623 ........................................................................ 72624 ........................................................................ 72625 ........................................................................ 72626 ........................................................................ 72627 ........................................................................ 72628 ........................................................................ 72629 ........................................................................ 72630 ........................................................................ 72631 ........................................................................ 72632 ........................................................................ 72633 ........................................................................ 72634 ........................................................................ 72635 ........................................................................ 72636 ........................................................................ 72637 ........................................................................ 72638 ........................................................................ 72639 ........................................................................ 72640 ........................................................................ 72641 ........................................................................ 72642 ........................................................................ 72643 ........................................................................ 72644 ........................................................................ 72645 ........................................................................ 72646 ........................................................................ 72647 ........................................................................ 72648 ........................................................................ 72649 ........................................................................ 72650 ........................................................................ 72651 ........................................................................ 72652 ........................................................................ 72653 ........................................................................ 72654 ........................................................................ 72655 ........................................................................ 72656 ........................................................................ 72657 ........................................................................ 72658 ........................................................................ 72659 ........................................................................ 72660 ........................................................................ 72661 ........................................................................ 72662 ........................................................................ 72663 ........................................................................ 72664 ........................................................................ 72665 ........................................................................ 72666 ........................................................................ 72667 ........................................................................ 72668 ........................................................................ 72669 ........................................................................ 72670 ........................................................................ 72671 ........................................................................ 72672 ........................................................................ 72673 ........................................................................ 72674 ........................................................................ 72675 ........................................................................ 72676 ........................................................................ 72677 ........................................................................ 72678 ........................................................................ 72679 ........................................................................ 72680 ........................................................................ 72681 ........................................................................ 72682 ........................................................................ 72683 ........................................................................ 72684 ........................................................................ 72685 ........................................................................ 72686 ........................................................................ 72687 ........................................................................ 72688 ........................................................................ 72689 ........................................................................ 72690 ........................................................................ 72691 ........................................................................ 72692 ........................................................................ 72693 ........................................................................ 72694 ........................................................................ 72695 ........................................................................ 72696 ........................................................................ 72697 ........................................................................ 72698 ........................................................................ 72699 ........................................................................ 72700 ........................................................................ 72701 ........................................................................ 72702 ........................................................................ 72703 ........................................................................ 72704 ........................................................................ 72705 ........................................................................ 72706 ........................................................................ 72707 ........................................................................ 72708 ........................................................................ 72709 ........................................................................ 72710 ........................................................................ 72711 ........................................................................ 72712 ........................................................................ 72713 ........................................................................ 72714 ........................................................................ 72715 ........................................................................ 72716 ........................................................................ 72717 ........................................................................ 72718 ........................................................................ 72719 ........................................................................ 72720 ........................................................................ 72721 ........................................................................ 72722 ........................................................................ 72723 ........................................................................ 72724 ........................................................................ 72725 ........................................................................ 72726 ........................................................................ 72727 ........................................................................ 72728 ........................................................................ 72729 ........................................................................ 72730 ........................................................................ 72731 ........................................................................ 72732 ........................................................................ 72733 ........................................................................ 72734 ........................................................................ 72735 ........................................................................ 72736 ........................................................................ 72737 ........................................................................ 72738 ........................................................................ 72739 ........................................................................ 72740 ........................................................................ 72741 ........................................................................ 72742 ........................................................................ 72743 ........................................................................ 72744 ........................................................................ 72745 ........................................................................ 72746 ........................................................................ 72747 ........................................................................ 72748 ........................................................................ 72749 ........................................................................ 72750 ........................................................................ 72751 ........................................................................ 72752 ........................................................................ 72753 ........................................................................ 72754 ........................................................................ 72755 ........................................................................ 72756 ........................................................................ 72757 ........................................................................ 72758 ........................................................................ 72759 ........................................................................ 72760 ........................................................................ 72761 ........................................................................ 72762 ........................................................................ 72763 ........................................................................ 72764 ........................................................................ 72765 ........................................................................ 72766 ........................................................................ 72767 ........................................................................ 72768 ........................................................................ 72769 ........................................................................ 72770 ........................................................................ 72771 ........................................................................ 72772 ........................................................................ 72773 ........................................................................ 72774 ........................................................................ 72775 ........................................................................ 72776 ........................................................................ 72777 ........................................................................ 72778 ........................................................................ 72779 ........................................................................ 72780 ........................................................................ 72781 ........................................................................ 72782 ........................................................................ 72783 ........................................................................ 72784 ........................................................................ 72785 ........................................................................ 72786 ........................................................................ 72787 ........................................................................ 72788 ........................................................................ 72789 ........................................................................ 72790 ........................................................................ 72791 ........................................................................ 72792 ........................................................................ 72793 ........................................................................ 72794 ........................................................................ 72795 ........................................................................ 72796 ........................................................................ 72797 ........................................................................ 72798 ........................................................................ 72799 ........................................................................ 72800 ........................................................................ 72801 ........................................................................ 72802 ........................................................................ 72803 ........................................................................ 72804 ........................................................................ 72805 ........................................................................ 72806 ........................................................................ 72807 ........................................................................ 72808 ........................................................................ 72809 ........................................................................ 72810 ........................................................................ 72811 ........................................................................ 72812 ........................................................................ 72813 ........................................................................ 72814 ........................................................................ 72815 ........................................................................ 72816 ........................................................................ 72817 ........................................................................ 72818 ........................................................................ 72819 ........................................................................ 72820 ........................................................................ 72821 ........................................................................ 72822 ........................................................................ 72823 ........................................................................ 72824 ........................................................................ 72825 ........................................................................ 72826 ........................................................................ 72827 ........................................................................ 72828 ........................................................................ 72829 ........................................................................ 72830 ........................................................................ 72831 ........................................................................ 72832 ........................................................................ 72833 ........................................................................ 72834 ........................................................................ 72835 ........................................................................ 72836 ........................................................................ 72837 ........................................................................ 72838 ........................................................................ 72839 ........................................................................ 72840 ........................................................................ 72841 ........................................................................ 72842 ........................................................................ 72843 ........................................................................ 72844 ........................................................................ 72845 ........................................................................ 72846 ........................................................................ 72847 ........................................................................ 72848 ........................................................................ 72849 ........................................................................ 72850 ........................................................................ 72851 ........................................................................ 72852 ........................................................................ 72853 ........................................................................ 72854 ........................................................................ 72855 ........................................................................ 72856 ........................................................................ 72857 ........................................................................ 72858 ........................................................................ 72859 ........................................................................ 72860 ........................................................................ 72861 ........................................................................ 72862 ........................................................................ 72863 ........................................................................ 72864 ........................................................................ 72865 ........................................................................ 72866 ........................................................................ 72867 ........................................................................ 72868 ........................................................................ 72869 ........................................................................ 72870 ........................................................................ 72871 ........................................................................ 72872 ........................................................................ 72873 ........................................................................ 72874 ........................................................................ 72875 ........................................................................ 72876 ........................................................................ 72877 ........................................................................ 72878 ........................................................................ 72879 ........................................................................ 72880 ........................................................................ 72881 ........................................................................ 72882 ........................................................................ 72883 ........................................................................ 72884 ........................................................................ 72885 ........................................................................ 72886 ........................................................................ 72887 ........................................................................ 72888 ........................................................................ 72889 ........................................................................ 72890 ........................................................................ 72891 ........................................................................ 72892 ........................................................................ 72893 ........................................................................ 72894 ........................................................................ 72895 ........................................................................ 72896 ........................................................................ 72897 ........................................................................ 72898 ........................................................................ 72899 ........................................................................ 72900 ........................................................................ 72901 ........................................................................ 72902 ........................................................................ 72903 ........................................................................ 72904 ........................................................................ 72905 ........................................................................ 72906 ........................................................................ 72907 ........................................................................ 72908 ........................................................................ 72909 ........................................................................ 72910 ........................................................................ 72911 ........................................................................ 72912 ........................................................................ 72913 ........................................................................ 72914 ........................................................................ 72915 ........................................................................ 72916 ........................................................................ 72917 ........................................................................ 72918 ........................................................................ 72919 ........................................................................ 72920 ........................................................................ 72921 ........................................................................ 72922 ........................................................................ 72923 ........................................................................ 72924 ........................................................................ 72925 ........................................................................ 72926 ........................................................................ 72927 ........................................................................ 72928 ........................................................................ 72929 ........................................................................ 72930 ........................................................................ 72931 ........................................................................ 72932 ........................................................................ 72933 ........................................................................ 72934 ........................................................................ 72935 ........................................................................ 72936 ........................................................................ 72937 ........................................................................ 72938 ........................................................................ 72939 ........................................................................ 72940 ........................................................................ 72941 ........................................................................ 72942 ........................................................................ 72943 ........................................................................ 72944 ........................................................................ 72945 ........................................................................ 72946 ........................................................................ 72947 ........................................................................ 72948 ........................................................................ 72949 ........................................................................ 72950 ........................................................................ 72951 ........................................................................ 72952 ........................................................................ 72953 ........................................................................ 72954 ........................................................................ 72955 ........................................................................ 72956 ........................................................................ 72957 ........................................................................ 72958 ........................................................................ 72959 ........................................................................ 72960 ........................................................................ 72961 ........................................................................ 72962 ........................................................................ 72963 ........................................................................ 72964 ........................................................................ 72965 ........................................................................ 72966 ........................................................................ 72967 ........................................................................ 72968 ........................................................................ 72969 ........................................................................ 72970 ........................................................................ 72971 ........................................................................ 72972 ........................................................................ 72973 ........................................................................ 72974 ........................................................................ 72975 ........................................................................ 72976 ........................................................................ 72977 ........................................................................ 72978 ........................................................................ 72979 ........................................................................ 72980 ........................................................................ 72981 ........................................................................ 72982 ........................................................................ 72983 ........................................................................ 72984 ........................................................................ 72985 ........................................................................ 72986 ........................................................................ 72987 ........................................................................ 72988 ........................................................................ 72989 ........................................................................ 72990 ........................................................................ 72991 ........................................................................ 72992 ........................................................................ 72993 ........................................................................ 72994 ........................................................................ 72995 ........................................................................ 72996 ........................................................................ 72997 ........................................................................ 72998 ........................................................................ 72999 ........................................................................ 73000 ........................................................................ 73001 ........................................................................ 73002 ........................................................................ 73003 ........................................................................ 73004 ........................................................................ 73005 ........................................................................ 73006 ........................................................................ 73007 ........................................................................ 73008 ........................................................................ 73009 ........................................................................ 73010 ........................................................................ 73011 ........................................................................ 73012 ........................................................................ 73013 ........................................................................ 73014 ........................................................................ 73015 ........................................................................ 73016 ........................................................................ 73017 ........................................................................ 73018 ........................................................................ 73019 ........................................................................ 73020 ........................................................................ 73021 ........................................................................ 73022 ........................................................................ 73023 ........................................................................ 73024 ........................................................................ 73025 ........................................................................ 73026 ........................................................................ 73027 ........................................................................ 73028 ........................................................................ 73029 ........................................................................ 73030 ........................................................................ 73031 ........................................................................ 73032 ........................................................................ 73033 ........................................................................ 73034 ........................................................................ 73035 ........................................................................ 73036 ........................................................................ 73037 ........................................................................ 73038 ........................................................................ 73039 ........................................................................ 73040 ........................................................................ 73041 ........................................................................ 73042 ........................................................................ 73043 ........................................................................ 73044 ........................................................................ 73045 ........................................................................ 73046 ........................................................................ 73047 ........................................................................ 73048 ........................................................................ 73049 ........................................................................ 73050 ........................................................................ 73051 ........................................................................ 73052 ........................................................................ 73053 ........................................................................ 73054 ........................................................................ 73055 ........................................................................ 73056 ........................................................................ 73057 ........................................................................ 73058 ........................................................................ 73059 ........................................................................ 73060 ........................................................................ 73061 ........................................................................ 73062 ........................................................................ 73063 ........................................................................ 73064 ........................................................................ 73065 ........................................................................ 73066 ........................................................................ 73067 ........................................................................ 73068 ........................................................................ 73069 ........................................................................ 73070 ........................................................................ 73071 ........................................................................ 73072 ........................................................................ 73073 ........................................................................ 73074 ........................................................................ 73075 ........................................................................ 73076 ........................................................................ 73077 ........................................................................ 73078 ........................................................................ 73079 ........................................................................ 73080 ........................................................................ 73081 ........................................................................ 73082 ........................................................................ 73083 ........................................................................ 73084 ........................................................................ 73085 ........................................................................ 73086 ........................................................................ 73087 ........................................................................ 73088 ........................................................................ 73089 ........................................................................ 73090 ........................................................................ 73091 ........................................................................ 73092 ........................................................................ 73093 ........................................................................ 73094 ........................................................................ 73095 ........................................................................ 73096 ........................................................................ 73097 ........................................................................ 73098 ........................................................................ 73099 ........................................................................ 73100 ........................................................................ 73101 ........................................................................ 73102 ........................................................................ 73103 ........................................................................ 73104 ........................................................................ 73105 ........................................................................ 73106 ........................................................................ 73107 ........................................................................ 73108 ........................................................................ 73109 ........................................................................ 73110 ........................................................................ 73111 ........................................................................ 73112 ........................................................................ 73113 ........................................................................ 73114 ........................................................................ 73115 ........................................................................ 73116 ........................................................................ 73117 ........................................................................ 73118 ........................................................................ 73119 ........................................................................ 73120 ........................................................................ 73121 ........................................................................ 73122 ........................................................................ 73123 ........................................................................ 73124 ........................................................................ 73125 ........................................................................ 73126 ........................................................................ 73127 ........................................................................ 73128 ........................................................................ 73129 ........................................................................ 73130 ........................................................................ 73131 ........................................................................ 73132 ........................................................................ 73133 ........................................................................ 73134 ........................................................................ 73135 ........................................................................ 73136 ........................................................................ 73137 ........................................................................ 73138 ........................................................................ 73139 ........................................................................ 73140 ........................................................................ 73141 ........................................................................ 73142 ........................................................................ 73143 ........................................................................ 73144 ........................................................................ 73145 ........................................................................ 73146 ........................................................................ 73147 ........................................................................ 73148 ........................................................................ 73149 ........................................................................ 73150 ........................................................................ 73151 ........................................................................ 73152 ........................................................................ 73153 ........................................................................ 73154 ........................................................................ 73155 ........................................................................ 73156 ........................................................................ 73157 ........................................................................ 73158 ........................................................................ 73159 ........................................................................ 73160 ........................................................................ 73161 ........................................................................ 73162 ........................................................................ 73163 ........................................................................ 73164 ........................................................................ 73165 ........................................................................ 73166 ........................................................................ 73167 ........................................................................ 73168 ........................................................................ 73169 ........................................................................ 73170 ........................................................................ 73171 ........................................................................ 73172 ........................................................................ 73173 ........................................................................ 73174 ........................................................................ 73175 ........................................................................ 73176 ........................................................................ 73177 ........................................................................ 73178 ........................................................................ 73179 ........................................................................ 73180 ........................................................................ 73181 ........................................................................ 73182 ........................................................................ 73183 ........................................................................ 73184 ........................................................................ 73185 ........................................................................ 73186 ........................................................................ 73187 ........................................................................ 73188 ........................................................................ 73189 ........................................................................ 73190 ........................................................................ 73191 ........................................................................ 73192 ........................................................................ 73193 ........................................................................ 73194 ........................................................................ 73195 ........................................................................ 73196 ........................................................................ 73197 ........................................................................ 73198 ........................................................................ 73199 ........................................................................ 73200 ........................................................................ 73201 ........................................................................ 73202 ........................................................................ 73203 ........................................................................ 73204 ........................................................................ 73205 ........................................................................ 73206 ........................................................................ 73207 ........................................................................ 73208 ........................................................................ 73209 ........................................................................ 73210 ........................................................................ 73211 ........................................................................ 73212 ........................................................................ 73213 ........................................................................ 73214 ........................................................................ 73215 ........................................................................ 73216 ........................................................................ 73217 ........................................................................ 73218 ........................................................................ 73219 ........................................................................ 73220 ........................................................................ 73221 ........................................................................ 73222 ........................................................................ 73223 ........................................................................ 73224 ........................................................................ 73225 ........................................................................ 73226 ........................................................................ 73227 ........................................................................ 73228 ........................................................................ 73229 ........................................................................ 73230 ........................................................................ 73231 ........................................................................ 73232 ........................................................................ 73233 ........................................................................ 73234 ........................................................................ 73235 ........................................................................ 73236 ........................................................................ 73237 ........................................................................ 73238 ........................................................................ 73239 ........................................................................ 73240 ........................................................................ 73241 ........................................................................ 73242 ........................................................................ 73243 ........................................................................ 73244 ........................................................................ 73245 ........................................................................ 73246 ........................................................................ 73247 ........................................................................ 73248 ........................................................................ 73249 ........................................................................ 73250 ........................................................................ 73251 ........................................................................ 73252 ........................................................................ 73253 ........................................................................ 73254 ........................................................................ 73255 ........................................................................ 73256 ........................................................................ 73257 ........................................................................ 73258 ........................................................................ 73259 ........................................................................ 73260 ........................................................................ 73261 ........................................................................ 73262 ........................................................................ 73263 ........................................................................ 73264 ........................................................................ 73265 ........................................................................ 73266 ........................................................................ 73267 ........................................................................ 73268 ........................................................................ 73269 ........................................................................ 73270 ........................................................................ 73271 ........................................................................ 73272 ........................................................................ 73273 ........................................................................ 73274 ........................................................................ 73275 ........................................................................ 73276 ........................................................................ 73277 ........................................................................ 73278 ........................................................................ 73279 ........................................................................ 73280 ........................................................................ 73281 ........................................................................ 73282 ........................................................................ 73283 ........................................................................ 73284 ........................................................................ 73285 ........................................................................ 73286 ........................................................................ 73287 ........................................................................ 73288 ........................................................................ 73289 ........................................................................ 73290 ........................................................................ 73291 ........................................................................ 73292 ........................................................................ 73293 ........................................................................ 73294 ........................................................................ 73295 ........................................................................ 73296 ........................................................................ 73297 ........................................................................ 73298 ........................................................................ 73299 ........................................................................ 73300 ........................................................................ 73301 ........................................................................ 73302 ........................................................................ 73303 ........................................................................ 73304 ........................................................................ 73305 ........................................................................ 73306 ........................................................................ 73307 ........................................................................ 73308 ........................................................................ 73309 ........................................................................ 73310 ........................................................................ 73311 ........................................................................ 73312 ........................................................................ 73313 ........................................................................ 73314 ........................................................................ 73315 ........................................................................ 73316 ........................................................................ 73317 ........................................................................ 73318 ........................................................................ 73319 ........................................................................ 73320 ........................................................................ 73321 ........................................................................ 73322 ........................................................................ 73323 ........................................................................ 73324 ........................................................................ 73325 ........................................................................ 73326 ........................................................................ 73327 ........................................................................ 73328 ........................................................................ 73329 ........................................................................ 73330 ........................................................................ 73331 ........................................................................ 73332 ........................................................................ 73333 ........................................................................ 73334 ........................................................................ 73335 ........................................................................ 73336 ........................................................................ 73337 ........................................................................ 73338 ........................................................................ 73339 ........................................................................ 73340 ........................................................................ 73341 ........................................................................ 73342 ........................................................................ 73343 ........................................................................ 73344 ........................................................................ 73345 ........................................................................ 73346 ........................................................................ 73347 ........................................................................ 73348 ........................................................................ 73349 ........................................................................ 73350 ........................................................................ 73351 ........................................................................ 73352 ........................................................................ 73353 ........................................................................ 73354 ........................................................................ 73355 ........................................................................ 73356 ........................................................................ 73357 ........................................................................ 73358 ........................................................................ 73359 ........................................................................ 73360 ........................................................................ 73361 ........................................................................ 73362 ........................................................................ 73363 ........................................................................ 73364 ........................................................................ 73365 ........................................................................ 73366 ........................................................................ 73367 ........................................................................ 73368 ........................................................................ 73369 ........................................................................ 73370 ........................................................................ 73371 ........................................................................ 73372 ........................................................................ 73373 ........................................................................ 73374 ........................................................................ 73375 ........................................................................ 73376 ........................................................................ 73377 ........................................................................ 73378 ........................................................................ 73379 ........................................................................ 73380 ........................................................................ 73381 ........................................................................ 73382 ........................................................................ 73383 ........................................................................ 73384 ........................................................................ 73385 ........................................................................ 73386 ........................................................................ 73387 ........................................................................ 73388 ........................................................................ 73389 ........................................................................ 73390 ........................................................................ 73391 ........................................................................ 73392 ........................................................................ 73393 ........................................................................ 73394 ........................................................................ 73395 ........................................................................ 73396 ........................................................................ 73397 ........................................................................ 73398 ........................................................................ 73399 ........................................................................ 73400 ........................................................................ 73401 ........................................................................ 73402 ........................................................................ 73403 ........................................................................ 73404 ........................................................................ 73405 ........................................................................ 73406 ........................................................................ 73407 ........................................................................ 73408 ........................................................................ 73409 ........................................................................ 73410 ........................................................................ 73411 ........................................................................ 73412 ........................................................................ 73413 ........................................................................ 73414 ........................................................................ 73415 ........................................................................ 73416 ........................................................................ 73417 ........................................................................ 73418 ........................................................................ 73419 ........................................................................ 73420 ........................................................................ 73421 ........................................................................ 73422 ........................................................................ 73423 ........................................................................ 73424 ........................................................................ 73425 ........................................................................ 73426 ........................................................................ 73427 ........................................................................ 73428 ........................................................................ 73429 ........................................................................ 73430 ........................................................................ 73431 ........................................................................ 73432 ........................................................................ 73433 ........................................................................ 73434 ........................................................................ 73435 ........................................................................ 73436 ........................................................................ 73437 ........................................................................ 73438 ........................................................................ 73439 ........................................................................ 73440 ........................................................................ 73441 ........................................................................ 73442 ........................................................................ 73443 ........................................................................ 73444 ........................................................................ 73445 ........................................................................ 73446 ........................................................................ 73447 ........................................................................ 73448 ........................................................................ 73449 ........................................................................ 73450 ........................................................................ 73451 ........................................................................ 73452 ........................................................................ 73453 ........................................................................ 73454 ........................................................................ 73455 ........................................................................ 73456 ........................................................................ 73457 ........................................................................ 73458 ........................................................................ 73459 ........................................................................ 73460 ........................................................................ 73461 ........................................................................ 73462 ........................................................................ 73463 ........................................................................ 73464 ........................................................................ 73465 ........................................................................ 73466 ........................................................................ 73467 ........................................................................ 73468 ........................................................................ 73469 ........................................................................ 73470 ........................................................................ 73471 ........................................................................ 73472 ........................................................................ 73473 ........................................................................ 73474 ........................................................................ 73475 ........................................................................ 73476 ........................................................................ 73477 ........................................................................ 73478 ........................................................................ 73479 ........................................................................ 73480 ........................................................................ 73481 ........................................................................ 73482 ........................................................................ 73483 ........................................................................ 73484 ........................................................................ 73485 ........................................................................ 73486 ........................................................................ 73487 ........................................................................ 73488 ........................................................................ 73489 ........................................................................ 73490 ........................................................................ 73491 ........................................................................ 73492 ........................................................................ 73493 ........................................................................ 73494 ........................................................................ 73495 ........................................................................ 73496 ........................................................................ 73497 ........................................................................ 73498 ........................................................................ 73499 ........................................................................ 73500 ........................................................................ 73501 ........................................................................ 73502 ........................................................................ 73503 ........................................................................ 73504 ........................................................................ 73505 ........................................................................ 73506 ........................................................................ 73507 ........................................................................ 73508 ........................................................................ 73509 ........................................................................ 73510 ........................................................................ 73511 ........................................................................ 73512 ........................................................................ 73513 ........................................................................ 73514 ........................................................................ 73515 ........................................................................ 73516 ........................................................................ 73517 ........................................................................ 73518 ........................................................................ 73519 ........................................................................ 73520 ........................................................................ 73521 ........................................................................ 73522 ........................................................................ 73523 ........................................................................ 73524 ........................................................................ 73525 ........................................................................ 73526 ........................................................................ 73527 ........................................................................ 73528 ........................................................................ 73529 ........................................................................ 73530 ........................................................................ 73531 ........................................................................ 73532 ........................................................................ 73533 ........................................................................ 73534 ........................................................................ 73535 ........................................................................ 73536 ........................................................................ 73537 ........................................................................ 73538 ........................................................................ 73539 ........................................................................ 73540 ........................................................................ 73541 ........................................................................ 73542 ........................................................................ 73543 ........................................................................ 73544 ........................................................................ 73545 ........................................................................ 73546 ........................................................................ 73547 ........................................................................ 73548 ........................................................................ 73549 ........................................................................ 73550 ........................................................................ 73551 ........................................................................ 73552 ........................................................................ 73553 ........................................................................ 73554 ........................................................................ 73555 ........................................................................ 73556 ........................................................................ 73557 ........................................................................ 73558 ........................................................................ 73559 ........................................................................ 73560 ........................................................................ 73561 ........................................................................ 73562 ........................................................................ 73563 ........................................................................ 73564 ........................................................................ 73565 ........................................................................ 73566 ........................................................................ 73567 ........................................................................ 73568 ........................................................................ 73569 ........................................................................ 73570 ........................................................................ 73571 ........................................................................ 73572 ........................................................................ 73573 ........................................................................ 73574 ........................................................................ 73575 ........................................................................ 73576 ........................................................................ 73577 ........................................................................ 73578 ........................................................................ 73579 ........................................................................ 73580 ........................................................................ 73581 ........................................................................ 73582 ........................................................................ 73583 ........................................................................ 73584 ........................................................................ 73585 ........................................................................ 73586 ........................................................................ 73587 ........................................................................ 73588 ........................................................................ 73589 ........................................................................ 73590 ........................................................................ 73591 ........................................................................ 73592 ........................................................................ 73593 ........................................................................ 73594 ........................................................................ 73595 ........................................................................ 73596 ........................................................................ 73597 ........................................................................ 73598 ........................................................................ 73599 ........................................................................ 73600 ........................................................................ 73601 ........................................................................ 73602 ........................................................................ 73603 ........................................................................ 73604 ........................................................................ 73605 ........................................................................ 73606 ........................................................................ 73607 ........................................................................ 73608 ........................................................................ 73609 ........................................................................ 73610 ........................................................................ 73611 ........................................................................ 73612 ........................................................................ 73613 ........................................................................ 73614 ........................................................................ 73615 ........................................................................ 73616 ........................................................................ 73617 ........................................................................ 73618 ........................................................................ 73619 ........................................................................ 73620 ........................................................................ 73621 ........................................................................ 73622 ........................................................................ 73623 ........................................................................ 73624 ........................................................................ 73625 ........................................................................ 73626 ........................................................................ 73627 ........................................................................ 73628 ........................................................................ 73629 ........................................................................ 73630 ........................................................................ 73631 ........................................................................ 73632 ........................................................................ 73633 ........................................................................ 73634 ........................................................................ 73635 ........................................................................ 73636 ........................................................................ 73637 ........................................................................ 73638 ........................................................................ 73639 ........................................................................ 73640 ........................................................................ 73641 ........................................................................ 73642 ........................................................................ 73643 ........................................................................ 73644 ........................................................................ 73645 ........................................................................ 73646 ........................................................................ 73647 ........................................................................ 73648 ........................................................................ 73649 ........................................................................ 73650 ........................................................................ 73651 ........................................................................ 73652 ........................................................................ 73653 ........................................................................ 73654 ........................................................................ 73655 ........................................................................ 73656 ........................................................................ 73657 ........................................................................ 73658 ........................................................................ 73659 ........................................................................ 73660 ........................................................................ 73661 ........................................................................ 73662 ........................................................................ 73663 ........................................................................ 73664 ........................................................................ 73665 ........................................................................ 73666 ........................................................................ 73667 ........................................................................ 73668 ........................................................................ 73669 ........................................................................ 73670 ........................................................................ 73671 ........................................................................ 73672 ........................................................................ 73673 ........................................................................ 73674 ........................................................................ 73675 ........................................................................ 73676 ........................................................................ 73677 ........................................................................ 73678 ........................................................................ 73679 ........................................................................ 73680 ........................................................................ 73681 ........................................................................ 73682 ........................................................................ 73683 ........................................................................ 73684 ........................................................................ 73685 ........................................................................ 73686 ........................................................................ 73687 ........................................................................ 73688 ........................................................................ 73689 ........................................................................ 73690 ........................................................................ 73691 ........................................................................ 73692 ........................................................................ 73693 ........................................................................ 73694 ........................................................................ 73695 ........................................................................ 73696 ........................................................................ 73697 ........................................................................ 73698 ........................................................................ 73699 ........................................................................ 73700 ........................................................................ 73701 ........................................................................ 73702 ........................................................................ 73703 ........................................................................ 73704 ........................................................................ 73705 ........................................................................ 73706 ........................................................................ 73707 ........................................................................ 73708 ........................................................................ 73709 ........................................................................ 73710 ........................................................................ 73711 ........................................................................ 73712 ........................................................................ 73713 ........................................................................ 73714 ........................................................................ 73715 ........................................................................ 73716 ........................................................................ 73717 ........................................................................ 73718 ........................................................................ 73719 ........................................................................ 73720 ........................................................................ 73721 ........................................................................ 73722 ........................................................................ 73723 ........................................................................ 73724 ........................................................................ 73725 ........................................................................ 73726 ........................................................................ 73727 ........................................................................ 73728 ........................................................................ 73729 ........................................................................ 73730 ........................................................................ 73731 ........................................................................ 73732 ........................................................................ 73733 ........................................................................ 73734 ........................................................................ 73735 ........................................................................ 73736 ........................................................................ 73737 ........................................................................ 73738 ........................................................................ 73739 ........................................................................ 73740 ........................................................................ 73741 ........................................................................ 73742 ........................................................................ 73743 ........................................................................ 73744 ........................................................................ 73745 ........................................................................ 73746 ........................................................................ 73747 ........................................................................ 73748 ........................................................................ 73749 ........................................................................ 73750 ........................................................................ 73751 ........................................................................ 73752 ........................................................................ 73753 ........................................................................ 73754 ........................................................................ 73755 ........................................................................ 73756 ........................................................................ 73757 ........................................................................ 73758 ........................................................................ 73759 ........................................................................ 73760 ........................................................................ 73761 ........................................................................ 73762 ........................................................................ 73763 ........................................................................ 73764 ........................................................................ 73765 ........................................................................ 73766 ........................................................................ 73767 ........................................................................ 73768 ........................................................................ 73769 ........................................................................ 73770 ........................................................................ 73771 ........................................................................ 73772 ........................................................................ 73773 ........................................................................ 73774 ........................................................................ 73775 ........................................................................ 73776 ........................................................................ 73777 ........................................................................ 73778 ........................................................................ 73779 ........................................................................ 73780 ........................................................................ 73781 ........................................................................ 73782 ........................................................................ 73783 ........................................................................ 73784 ........................................................................ 73785 ........................................................................ 73786 ........................................................................ 73787 ........................................................................ 73788 ........................................................................ 73789 ........................................................................ 73790 ........................................................................ 73791 ........................................................................ 73792 ........................................................................ 73793 ........................................................................ 73794 ........................................................................ 73795 ........................................................................ 73796 ........................................................................ 73797 ........................................................................ 73798 ........................................................................ 73799 ........................................................................ 73800 ........................................................................ 73801 ........................................................................ 73802 ........................................................................ 73803 ........................................................................ 73804 ........................................................................ 73805 ........................................................................ 73806 ........................................................................ 73807 ........................................................................ 73808 ........................................................................ 73809 ........................................................................ 73810 ........................................................................ 73811 ........................................................................ 73812 ........................................................................ 73813 ........................................................................ 73814 ........................................................................ 73815 ........................................................................ 73816 ........................................................................ 73817 ........................................................................ 73818 ........................................................................ 73819 ........................................................................ 73820 ........................................................................ 73821 ........................................................................ 73822 ........................................................................ 73823 ........................................................................ 73824 ........................................................................ 73825 ........................................................................ 73826 ........................................................................ 73827 ........................................................................ 73828 ........................................................................ 73829 ........................................................................ 73830 ........................................................................ 73831 ........................................................................ 73832 ........................................................................ 73833 ........................................................................ 73834 ........................................................................ 73835 ........................................................................ 73836 ........................................................................ 73837 ........................................................................ 73838 ........................................................................ 73839 ........................................................................ 73840 ........................................................................ 73841 ........................................................................ 73842 ........................................................................ 73843 ........................................................................ 73844 ........................................................................ 73845 ........................................................................ 73846 ........................................................................ 73847 ........................................................................ 73848 ........................................................................ 73849 ........................................................................ 73850 ........................................................................ 73851 ........................................................................ 73852 ........................................................................ 73853 ........................................................................ 73854 ........................................................................ 73855 ........................................................................ 73856 ........................................................................ 73857 ........................................................................ 73858 ........................................................................ 73859 ........................................................................ 73860 ........................................................................ 73861 ........................................................................ 73862 ........................................................................ 73863 ........................................................................ 73864 ........................................................................ 73865 ........................................................................ 73866 ........................................................................ 73867 ........................................................................ 73868 ........................................................................ 73869 ........................................................................ 73870 ........................................................................ 73871 ........................................................................ 73872 ........................................................................ 73873 ........................................................................ 73874 ........................................................................ 73875 ........................................................................ 73876 ........................................................................ 73877 ........................................................................ 73878 ........................................................................ 73879 ........................................................................ 73880 ........................................................................ 73881 ........................................................................ 73882 ........................................................................ 73883 ........................................................................ 73884 ........................................................................ 73885 ........................................................................ 73886 ........................................................................ 73887 ........................................................................ 73888 ........................................................................ 73889 ........................................................................ 73890 ........................................................................ 73891 ........................................................................ 73892 ........................................................................ 73893 ........................................................................ 73894 ........................................................................ 73895 ........................................................................ 73896 ........................................................................ 73897 ........................................................................ 73898 ........................................................................ 73899 ........................................................................ 73900 ........................................................................ 73901 ........................................................................ 73902 ........................................................................ 73903 ........................................................................ 73904 ........................................................................ 73905 ........................................................................ 73906 ........................................................................ 73907 ........................................................................ 73908 ........................................................................ 73909 ........................................................................ 73910 ........................................................................ 73911 ........................................................................ 73912 ........................................................................ 73913 ........................................................................ 73914 ........................................................................ 73915 ........................................................................ 73916 ........................................................................ 73917 ........................................................................ 73918 ........................................................................ 73919 ........................................................................ 73920 ........................................................................ 73921 ........................................................................ 73922 ........................................................................ 73923 ........................................................................ 73924 ........................................................................ 73925 ........................................................................ 73926 ........................................................................ 73927 ........................................................................ 73928 ........................................................................ 73929 ........................................................................ 73930 ........................................................................ 73931 ........................................................................ 73932 ........................................................................ 73933 ........................................................................ 73934 ........................................................................ 73935 ........................................................................ 73936 ........................................................................ 73937 ........................................................................ 73938 ........................................................................ 73939 ........................................................................ 73940 ........................................................................ 73941 ........................................................................ 73942 ........................................................................ 73943 ........................................................................ 73944 ........................................................................ 73945 ........................................................................ 73946 ........................................................................ 73947 ........................................................................ 73948 ........................................................................ 73949 ........................................................................ 73950 ........................................................................ 73951 ........................................................................ 73952 ........................................................................ 73953 ........................................................................ 73954 ........................................................................ 73955 ........................................................................ 73956 ........................................................................ 73957 ........................................................................ 73958 ........................................................................ 73959 ........................................................................ 73960 ........................................................................ 73961 ........................................................................ 73962 ........................................................................ 73963 ........................................................................ 73964 ........................................................................ 73965 ........................................................................ 73966 ........................................................................ 73967 ........................................................................ 73968 ........................................................................ 73969 ........................................................................ 73970 ........................................................................ 73971 ........................................................................ 73972 ........................................................................ 73973 ........................................................................ 73974 ........................................................................ 73975 ........................................................................ 73976 ........................................................................ 73977 ........................................................................ 73978 ........................................................................ 73979 ........................................................................ 73980 ........................................................................ 73981 ........................................................................ 73982 ........................................................................ 73983 ........................................................................ 73984 ........................................................................ 73985 ........................................................................ 73986 ........................................................................ 73987 ........................................................................ 73988 ........................................................................ 73989 ........................................................................ 73990 ........................................................................ 73991 ........................................................................ 73992 ........................................................................ 73993 ........................................................................ 73994 ........................................................................ 73995 ........................................................................ 73996 ........................................................................ 73997 ........................................................................ 73998 ........................................................................ 73999 ........................................................................ 74000 ........................................................................ 74001 ........................................................................ 74002 ........................................................................ 74003 ........................................................................ 74004 ........................................................................ 74005 ........................................................................ 74006 ........................................................................ 74007 ........................................................................ 74008 ........................................................................ 74009 ........................................................................ 74010 ........................................................................ 74011 ........................................................................ 74012 ........................................................................ 74013 ........................................................................ 74014 ........................................................................ 74015 ........................................................................ 74016 ........................................................................ 74017 ........................................................................ 74018 ........................................................................ 74019 ........................................................................ 74020 ........................................................................ 74021 ........................................................................ 74022 ........................................................................ 74023 ........................................................................ 74024 ........................................................................ 74025 ........................................................................ 74026 ........................................................................ 74027 ........................................................................ 74028 ........................................................................ 74029 ........................................................................ 74030 ........................................................................ 74031 ........................................................................ 74032 ........................................................................ 74033 ........................................................................ 74034 ........................................................................ 74035 ........................................................................ 74036 ........................................................................ 74037 ........................................................................ 74038 ........................................................................ 74039 ........................................................................ 74040 ........................................................................ 74041 ........................................................................ 74042 ........................................................................ 74043 ........................................................................ 74044 ........................................................................ 74045 ........................................................................ 74046 ........................................................................ 74047 ........................................................................ 74048 ........................................................................ 74049 ........................................................................ 74050 ........................................................................ 74051 ........................................................................ 74052 ........................................................................ 74053 ........................................................................ 74054 ........................................................................ 74055 ........................................................................ 74056 ........................................................................ 74057 ........................................................................ 74058 ........................................................................ 74059 ........................................................................ 74060 ........................................................................ 74061 ........................................................................ 74062 ........................................................................ 74063 ........................................................................ 74064 ........................................................................ 74065 ........................................................................ 74066 ........................................................................ 74067 ........................................................................ 74068 ........................................................................ 74069 ........................................................................ 74070 ........................................................................ 74071 ........................................................................ 74072 ........................................................................ 74073 ........................................................................ 74074 ........................................................................ 74075 ........................................................................ 74076 ........................................................................ 74077 ........................................................................ 74078 ........................................................................ 74079 ........................................................................ 74080 ........................................................................ 74081 ........................................................................ 74082 ........................................................................ 74083 ........................................................................ 74084 ........................................................................ 74085 ........................................................................ 74086 ........................................................................ 74087 ........................................................................ 74088 ........................................................................ 74089 ........................................................................ 74090 ........................................................................ 74091 ........................................................................ 74092 ........................................................................ 74093 ........................................................................ 74094 ........................................................................ 74095 ........................................................................ 74096 ........................................................................ 74097 ........................................................................ 74098 ........................................................................ 74099 ........................................................................ 74100 ........................................................................ 74101 ........................................................................ 74102 ........................................................................ 74103 ........................................................................ 74104 ........................................................................ 74105 ........................................................................ 74106 ........................................................................ 74107 ........................................................................ 74108 ........................................................................ 74109 ........................................................................ 74110 ........................................................................ 74111 ........................................................................ 74112 ........................................................................ 74113 ........................................................................ 74114 ........................................................................ 74115 ........................................................................ 74116 ........................................................................ 74117 ........................................................................ 74118 ........................................................................ 74119 ........................................................................ 74120 ........................................................................ 74121 ........................................................................ 74122 ........................................................................ 74123 ........................................................................ 74124 ........................................................................ 74125 ........................................................................ 74126 ........................................................................ 74127 ........................................................................ 74128 ........................................................................ 74129 ........................................................................ 74130 ........................................................................ 74131 ........................................................................ 74132 ........................................................................ 74133 ........................................................................ 74134 ........................................................................ 74135 ........................................................................ 74136 ........................................................................ 74137 ........................................................................ 74138 ........................................................................ 74139 ........................................................................ 74140 ........................................................................ 74141 ........................................................................ 74142 ........................................................................ 74143 ........................................................................ 74144 ........................................................................ 74145 ........................................................................ 74146 ........................................................................ 74147 ........................................................................ 74148 ........................................................................ 74149 ........................................................................ 74150 ........................................................................ 74151 ........................................................................ 74152 ........................................................................ 74153 ........................................................................ 74154 ........................................................................ 74155 ........................................................................ 74156 ........................................................................ 74157 ........................................................................ 74158 ........................................................................ 74159 ........................................................................ 74160 ........................................................................ 74161 ........................................................................ 74162 ........................................................................ 74163 ........................................................................ 74164 ........................................................................ 74165 ........................................................................ 74166 ........................................................................ 74167 ........................................................................ 74168 ........................................................................ 74169 ........................................................................ 74170 ........................................................................ 74171 ........................................................................ 74172 ........................................................................ 74173 ........................................................................ 74174 ........................................................................ 74175 ........................................................................ 74176 ........................................................................ 74177 ........................................................................ 74178 ........................................................................ 74179 ........................................................................ 74180 ........................................................................ 74181 ........................................................................ 74182 ........................................................................ 74183 ........................................................................ 74184 ........................................................................ 74185 ........................................................................ 74186 ........................................................................ 74187 ........................................................................ 74188 ........................................................................ 74189 ........................................................................ 74190 ........................................................................ 74191 ........................................................................ 74192 ........................................................................ 74193 ........................................................................ 74194 ........................................................................ 74195 ........................................................................ 74196 ........................................................................ 74197 ........................................................................ 74198 ........................................................................ 74199 ........................................................................ 74200 ........................................................................ 74201 ........................................................................ 74202 ........................................................................ 74203 ........................................................................ 74204 ........................................................................ 74205 ........................................................................ 74206 ........................................................................ 74207 ........................................................................ 74208 ........................................................................ 74209 ........................................................................ 74210 ........................................................................ 74211 ........................................................................ 74212 ........................................................................ 74213 ........................................................................ 74214 ........................................................................ 74215 ........................................................................ 74216 ........................................................................ 74217 ........................................................................ 74218 ........................................................................ 74219 ........................................................................ 74220 ........................................................................ 74221 ........................................................................ 74222 ........................................................................ 74223 ........................................................................ 74224 ........................................................................ 74225 ........................................................................ 74226 ........................................................................ 74227 ........................................................................ 74228 ........................................................................ 74229 ........................................................................ 74230 ........................................................................ 74231 ........................................................................ 74232 ........................................................................ 74233 ........................................................................ 74234 ........................................................................ 74235 ........................................................................ 74236 ........................................................................ 74237 ........................................................................ 74238 ........................................................................ 74239 ........................................................................ 74240 ........................................................................ 74241 ........................................................................ 74242 ........................................................................ 74243 ........................................................................ 74244 ........................................................................ 74245 ........................................................................ 74246 ........................................................................ 74247 ........................................................................ 74248 ........................................................................ 74249 ........................................................................ 74250 ........................................................................ 74251 ........................................................................ 74252 ........................................................................ 74253 ........................................................................ 74254 ........................................................................ 74255 ........................................................................ 74256 ........................................................................ 74257 ........................................................................ 74258 ........................................................................ 74259 ........................................................................ 74260 ........................................................................ 74261 ........................................................................ 74262 ........................................................................ 74263 ........................................................................ 74264 ........................................................................ 74265 ........................................................................ 74266 ........................................................................ 74267 ........................................................................ 74268 ........................................................................ 74269 ........................................................................ 74270 ........................................................................ 74271 ........................................................................ 74272 ........................................................................ 74273 ........................................................................ 74274 ........................................................................ 74275 ........................................................................ 74276 ........................................................................ 74277 ........................................................................ 74278 ........................................................................ 74279 ........................................................................ 74280 ........................................................................ 74281 ........................................................................ 74282 ........................................................................ 74283 ........................................................................ 74284 ........................................................................ 74285 ........................................................................ 74286 ........................................................................ 74287 ........................................................................ 74288 ........................................................................ 74289 ........................................................................ 74290 ........................................................................ 74291 ........................................................................ 74292 ........................................................................ 74293 ........................................................................ 74294 ........................................................................ 74295 ........................................................................ 74296 ........................................................................ 74297 ........................................................................ 74298 ........................................................................ 74299 ........................................................................ 74300 ........................................................................ 74301 ........................................................................ 74302 ........................................................................ 74303 ........................................................................ 74304 ........................................................................ 74305 ........................................................................ 74306 ........................................................................ 74307 ........................................................................ 74308 ........................................................................ 74309 ........................................................................ 74310 ........................................................................ 74311 ........................................................................ 74312 ........................................................................ 74313 ........................................................................ 74314 ........................................................................ 74315 ........................................................................ 74316 ........................................................................ 74317 ........................................................................ 74318 ........................................................................ 74319 ........................................................................ 74320 ........................................................................ 74321 ........................................................................ 74322 ........................................................................ 74323 ........................................................................ 74324 ........................................................................ 74325 ........................................................................ 74326 ........................................................................ 74327 ........................................................................ 74328 ........................................................................ 74329 ........................................................................ 74330 ........................................................................ 74331 ........................................................................ 74332 ........................................................................ 74333 ........................................................................ 74334 ........................................................................ 74335 ........................................................................ 74336 ........................................................................ 74337 ........................................................................ 74338 ........................................................................ 74339 ........................................................................ 74340 ........................................................................ 74341 ........................................................................ 74342 ........................................................................ 74343 ........................................................................ 74344 ........................................................................ 74345 ........................................................................ 74346 ........................................................................ 74347 ........................................................................ 74348 ........................................................................ 74349 ........................................................................ 74350 ........................................................................ 74351 ........................................................................ 74352 ........................................................................ 74353 ........................................................................ 74354 ........................................................................ 74355 ........................................................................ 74356 ........................................................................ 74357 ........................................................................ 74358 ........................................................................ 74359 ........................................................................ 74360 ........................................................................ 74361 ........................................................................ 74362 ........................................................................ 74363 ........................................................................ 74364 ........................................................................ 74365 ........................................................................ 74366 ........................................................................ 74367 ........................................................................ 74368 ........................................................................ 74369 ........................................................................ 74370 ........................................................................ 74371 ........................................................................ 74372 ........................................................................ 74373 ........................................................................ 74374 ........................................................................ 74375 ........................................................................ 74376 ........................................................................ 74377 ........................................................................ 74378 ........................................................................ 74379 ........................................................................ 74380 ........................................................................ 74381 ........................................................................ 74382 ........................................................................ 74383 ........................................................................ 74384 ........................................................................ 74385 ........................................................................ 74386 ........................................................................ 74387 ........................................................................ 74388 ........................................................................ 74389 ........................................................................ 74390 ........................................................................ 74391 ........................................................................ 74392 ........................................................................ 74393 ........................................................................ 74394 ........................................................................ 74395 ........................................................................ 74396 ........................................................................ 74397 ........................................................................ 74398 ........................................................................ 74399 ........................................................................ 74400 ........................................................................ 74401 ........................................................................ 74402 ........................................................................ 74403 ........................................................................ 74404 ........................................................................ 74405 ........................................................................ 74406 ........................................................................ 74407 ........................................................................ 74408 ........................................................................ 74409 ........................................................................ 74410 ........................................................................ 74411 ........................................................................ 74412 ........................................................................ 74413 ........................................................................ 74414 ........................................................................ 74415 ........................................................................ 74416 ........................................................................ 74417 ........................................................................ 74418 ........................................................................ 74419 ........................................................................ 74420 ........................................................................ 74421 ........................................................................ 74422 ........................................................................ 74423 ........................................................................ 74424 ........................................................................ 74425 ........................................................................ 74426 ........................................................................ 74427 ........................................................................ 74428 ........................................................................ 74429 ........................................................................ 74430 ........................................................................ 74431 ........................................................................ 74432 ........................................................................ 74433 ........................................................................ 74434 ........................................................................ 74435 ........................................................................ 74436 ........................................................................ 74437 ........................................................................ 74438 ........................................................................ 74439 ........................................................................ 74440 ........................................................................ 74441 ........................................................................ 74442 ........................................................................ 74443 ........................................................................ 74444 ........................................................................ 74445 ........................................................................ 74446 ........................................................................ 74447 ........................................................................ 74448 ........................................................................ 74449 ........................................................................ 74450 ........................................................................ 74451 ........................................................................ 74452 ........................................................................ 74453 ........................................................................ 74454 ........................................................................ 74455 ........................................................................ 74456 ........................................................................ 74457 ........................................................................ 74458 ........................................................................ 74459 ........................................................................ 74460 ........................................................................ 74461 ........................................................................ 74462 ........................................................................ 74463 ........................................................................ 74464 ........................................................................ 74465 ........................................................................ 74466 ........................................................................ 74467 ........................................................................ 74468 ........................................................................ 74469 ........................................................................ 74470 ........................................................................ 74471 ........................................................................ 74472 ........................................................................ 74473 ........................................................................ 74474 ........................................................................ 74475 ........................................................................ 74476 ........................................................................ 74477 ........................................................................ 74478 ........................................................................ 74479 ........................................................................ 74480 ........................................................................ 74481 ........................................................................ 74482 ........................................................................ 74483 ........................................................................ 74484 ........................................................................ 74485 ........................................................................ 74486 ........................................................................ 74487 ........................................................................ 74488 ........................................................................ 74489 ........................................................................ 74490 ........................................................................ 74491 ........................................................................ 74492 ........................................................................ 74493 ........................................................................ 74494 ........................................................................ 74495 ........................................................................ 74496 ........................................................................ 74497 ........................................................................ 74498 ........................................................................ 74499 ........................................................................ 74500 ........................................................................ 74501 ........................................................................ 74502 ........................................................................ 74503 ........................................................................ 74504 ........................................................................ 74505 ........................................................................ 74506 ........................................................................ 74507 ........................................................................ 74508 ........................................................................ 74509 ........................................................................ 74510 ........................................................................ 74511 ........................................................................ 74512 ........................................................................ 74513 ........................................................................ 74514 ........................................................................ 74515 ........................................................................ 74516 ........................................................................ 74517 ........................................................................ 74518 ........................................................................ 74519 ........................................................................ 74520 ........................................................................ 74521 ........................................................................ 74522 ........................................................................ 74523 ........................................................................ 74524 ........................................................................ 74525 ........................................................................ 74526 ........................................................................ 74527 ........................................................................ 74528 ........................................................................ 74529 ........................................................................ 74530 ........................................................................ 74531 ........................................................................ 74532 ........................................................................ 74533 ........................................................................ 74534 ........................................................................ 74535 ........................................................................ 74536 ........................................................................ 74537 ........................................................................ 74538 ........................................................................ 74539 ........................................................................ 74540 ........................................................................ 74541 ........................................................................ 74542 ........................................................................ 74543 ........................................................................ 74544 ........................................................................ 74545 ........................................................................ 74546 ........................................................................ 74547 ........................................................................ 74548 ........................................................................ 74549 ........................................................................ 74550 ........................................................................ 74551 ........................................................................ 74552 ........................................................................ 74553 ........................................................................ 74554 ........................................................................ 74555 ........................................................................ 74556 ........................................................................ 74557 ........................................................................ 74558 ........................................................................ 74559 ........................................................................ 74560 ........................................................................ 74561 ........................................................................ 74562 ........................................................................ 74563 ........................................................................ 74564 ........................................................................ 74565 ........................................................................ 74566 ........................................................................ 74567 ........................................................................ 74568 ........................................................................ 74569 ........................................................................ 74570 ........................................................................ 74571 ........................................................................ 74572 ........................................................................ 74573 ........................................................................ 74574 ........................................................................ 74575 ........................................................................ 74576 ........................................................................ 74577 ........................................................................ 74578 ........................................................................ 74579 ........................................................................ 74580 ........................................................................ 74581 ........................................................................ 74582 ........................................................................ 74583 ........................................................................ 74584 ........................................................................ 74585 ........................................................................ 74586 ........................................................................ 74587 ........................................................................ 74588 ........................................................................ 74589 ........................................................................ 74590 ........................................................................ 74591 ........................................................................ 74592 ........................................................................ 74593 ........................................................................ 74594 ........................................................................ 74595 ........................................................................ 74596 ........................................................................ 74597 ........................................................................ 74598 ........................................................................ 74599 ........................................................................ 74600 ........................................................................ 74601 ........................................................................ 74602 ........................................................................ 74603 ........................................................................ 74604 ........................................................................ 74605 ........................................................................ 74606 ........................................................................ 74607 ........................................................................ 74608 ........................................................................ 74609 ........................................................................ 74610 ........................................................................ 74611 ........................................................................ 74612 ........................................................................ 74613 ........................................................................ 74614 ........................................................................ 74615 ........................................................................ 74616 ........................................................................ 74617 ........................................................................ 74618 ........................................................................ 74619 ........................................................................ 74620 ........................................................................ 74621 ........................................................................ 74622 ........................................................................ 74623 ........................................................................ 74624 ........................................................................ 74625 ........................................................................ 74626 ........................................................................ 74627 ........................................................................ 74628 ........................................................................ 74629 ........................................................................ 74630 ........................................................................ 74631 ........................................................................ 74632 ........................................................................ 74633 ........................................................................ 74634 ........................................................................ 74635 ........................................................................ 74636 ........................................................................ 74637 ........................................................................ 74638 ........................................................................ 74639 ........................................................................ 74640 ........................................................................ 74641 ........................................................................ 74642 ........................................................................ 74643 ........................................................................ 74644 ........................................................................ 74645 ........................................................................ 74646 ........................................................................ 74647 ........................................................................ 74648 ........................................................................ 74649 ........................................................................ 74650 ........................................................................ 74651 ........................................................................ 74652 ........................................................................ 74653 ........................................................................ 74654 ........................................................................ 74655 ........................................................................ 74656 ........................................................................ 74657 ........................................................................ 74658 ........................................................................ 74659 ........................................................................ 74660 ........................................................................ 74661 ........................................................................ 74662 ........................................................................ 74663 ........................................................................ 74664 ........................................................................ 74665 ........................................................................ 74666 ........................................................................ 74667 ........................................................................ 74668 ........................................................................ 74669 ........................................................................ 74670 ........................................................................ 74671 ........................................................................ 74672 ........................................................................ 74673 ........................................................................ 74674 ........................................................................ 74675 ........................................................................ 74676 ........................................................................ 74677 ........................................................................ 74678 ........................................................................ 74679 ........................................................................ 74680 ........................................................................ 74681 ........................................................................ 74682 ........................................................................ 74683 ........................................................................ 74684 ........................................................................ 74685 ........................................................................ 74686 ........................................................................ 74687 ........................................................................ 74688 ........................................................................ 74689 ........................................................................ 74690 ........................................................................ 74691 ........................................................................ 74692 ........................................................................ 74693 ........................................................................ 74694 ........................................................................ 74695 ........................................................................ 74696 ........................................................................ 74697 ........................................................................ 74698 ........................................................................ 74699 ........................................................................ 74700 ........................................................................ 74701 ........................................................................ 74702 ........................................................................ 74703 ........................................................................ 74704 ........................................................................ 74705 ........................................................................ 74706 ........................................................................ 74707 ........................................................................ 74708 ........................................................................ 74709 ........................................................................ 74710 ........................................................................ 74711 ........................................................................ 74712 ........................................................................ 74713 ........................................................................ 74714 ........................................................................ 74715 ........................................................................ 74716 ........................................................................ 74717 ........................................................................ 74718 ........................................................................ 74719 ........................................................................ 74720 ........................................................................ 74721 ........................................................................ 74722 ........................................................................ 74723 ........................................................................ 74724 ........................................................................ 74725 ........................................................................ 74726 ........................................................................ 74727 ........................................................................ 74728 ........................................................................ 74729 ........................................................................ 74730 ........................................................................ 74731 ........................................................................ 74732 ........................................................................ 74733 ........................................................................ 74734 ........................................................................ 74735 ........................................................................ 74736 ........................................................................ 74737 ........................................................................ 74738 ........................................................................ 74739 ........................................................................ 74740 ........................................................................ 74741 ........................................................................ 74742 ........................................................................ 74743 ........................................................................ 74744 ........................................................................ 74745 ........................................................................ 74746 ........................................................................ 74747 ........................................................................ 74748 ........................................................................ 74749 ........................................................................ 74750 ........................................................................ 74751 ........................................................................ 74752 ........................................................................ 74753 ........................................................................ 74754 ........................................................................ 74755 ........................................................................ 74756 ........................................................................ 74757 ........................................................................ 74758 ........................................................................ 74759 ........................................................................ 74760 ........................................................................ 74761 ........................................................................ 74762 ........................................................................ 74763 ........................................................................ 74764 ........................................................................ 74765 ........................................................................ 74766 ........................................................................ 74767 ........................................................................ 74768 ........................................................................ 74769 ........................................................................ 74770 ........................................................................ 74771 ........................................................................ 74772 ........................................................................ 74773 ........................................................................ 74774 ........................................................................ 74775 ........................................................................ 74776 ........................................................................ 74777 ........................................................................ 74778 ........................................................................ 74779 ........................................................................ 74780 ........................................................................ 74781 ........................................................................ 74782 ........................................................................ 74783 ........................................................................ 74784 ........................................................................ 74785 ........................................................................ 74786 ........................................................................ 74787 ........................................................................ 74788 ........................................................................ 74789 ........................................................................ 74790 ........................................................................ 74791 ........................................................................ 74792 ........................................................................ 74793 ........................................................................ 74794 ........................................................................ 74795 ........................................................................ 74796 ........................................................................ 74797 ........................................................................ 74798 ........................................................................ 74799 ........................................................................ 74800 ........................................................................ 74801 ........................................................................ 74802 ........................................................................ 74803 ........................................................................ 74804 ........................................................................ 74805 ........................................................................ 74806 ........................................................................ 74807 ........................................................................ 74808 ........................................................................ 74809 ........................................................................ 74810 ........................................................................ 74811 ........................................................................ 74812 ........................................................................ 74813 ........................................................................ 74814 ........................................................................ 74815 ........................................................................ 74816 ........................................................................ 74817 ........................................................................ 74818 ........................................................................ 74819 ........................................................................ 74820 ........................................................................ 74821 ........................................................................ 74822 ........................................................................ 74823 ........................................................................ 74824 ........................................................................ 74825 ........................................................................ 74826 ........................................................................ 74827 ........................................................................ 74828 ........................................................................ 74829 ........................................................................ 74830 ........................................................................ 74831 ........................................................................ 74832 ........................................................................ 74833 ........................................................................ 74834 ........................................................................ 74835 ........................................................................ 74836 ........................................................................ 74837 ........................................................................ 74838 ........................................................................ 74839 ........................................................................ 74840 ........................................................................ 74841 ........................................................................ 74842 ........................................................................ 74843 ........................................................................ 74844 ........................................................................ 74845 ........................................................................ 74846 ........................................................................ 74847 ........................................................................ 74848 ........................................................................ 74849 ........................................................................ 74850 ........................................................................ 74851 ........................................................................ 74852 ........................................................................ 74853 ........................................................................ 74854 ........................................................................ 74855 ........................................................................ 74856 ........................................................................ 74857 ........................................................................ 74858 ........................................................................ 74859 ........................................................................ 74860 ........................................................................ 74861 ........................................................................ 74862 ........................................................................ 74863 ........................................................................ 74864 ........................................................................ 74865 ........................................................................ 74866 ........................................................................ 74867 ........................................................................ 74868 ........................................................................ 74869 ........................................................................ 74870 ........................................................................ 74871 ........................................................................ 74872 ........................................................................ 74873 ........................................................................ 74874 ........................................................................ 74875 ........................................................................ 74876 ........................................................................ 74877 ........................................................................ 74878 ........................................................................ 74879 ........................................................................ 74880 ........................................................................ 74881 ........................................................................ 74882 ........................................................................ 74883 ........................................................................ 74884 ........................................................................ 74885 ........................................................................ 74886 ........................................................................ 74887 ........................................................................ 74888 ........................................................................ 74889 ........................................................................ 74890 ........................................................................ 74891 ........................................................................ 74892 ........................................................................ 74893 ........................................................................ 74894 ........................................................................ 74895 ........................................................................ 74896 ........................................................................ 74897 ........................................................................ 74898 ........................................................................ 74899 ........................................................................ 74900 ........................................................................ 74901 ........................................................................ 74902 ........................................................................ 74903 ........................................................................ 74904 ........................................................................ 74905 ........................................................................ 74906 ........................................................................ 74907 ........................................................................ 74908 ........................................................................ 74909 ........................................................................ 74910 ........................................................................ 74911 ........................................................................ 74912 ........................................................................ 74913 ........................................................................ 74914 ........................................................................ 74915 ........................................................................ 74916 ........................................................................ 74917 ........................................................................ 74918 ........................................................................ 74919 ........................................................................ 74920 ........................................................................ 74921 ........................................................................ 74922 ........................................................................ 74923 ........................................................................ 74924 ........................................................................ 74925 ........................................................................ 74926 ........................................................................ 74927 ........................................................................ 74928 ........................................................................ 74929 ........................................................................ 74930 ........................................................................ 74931 ........................................................................ 74932 ........................................................................ 74933 ........................................................................ 74934 ........................................................................ 74935 ........................................................................ 74936 ........................................................................ 74937 ........................................................................ 74938 ........................................................................ 74939 ........................................................................ 74940 ........................................................................ 74941 ........................................................................ 74942 ........................................................................ 74943 ........................................................................ 74944 ........................................................................ 74945 ........................................................................ 74946 ........................................................................ 74947 ........................................................................ 74948 ........................................................................ 74949 ........................................................................ 74950 ........................................................................ 74951 ........................................................................ 74952 ........................................................................ 74953 ........................................................................ 74954 ........................................................................ 74955 ........................................................................ 74956 ........................................................................ 74957 ........................................................................ 74958 ........................................................................ 74959 ........................................................................ 74960 ........................................................................ 74961 ........................................................................ 74962 ........................................................................ 74963 ........................................................................ 74964 ........................................................................ 74965 ........................................................................ 74966 ........................................................................ 74967 ........................................................................ 74968 ........................................................................ 74969 ........................................................................ 74970 ........................................................................ 74971 ........................................................................ 74972 ........................................................................ 74973 ........................................................................ 74974 ........................................................................ 74975 ........................................................................ 74976 ........................................................................ 74977 ........................................................................ 74978 ........................................................................ 74979 ........................................................................ 74980 ........................................................................ 74981 ........................................................................ 74982 ........................................................................ 74983 ........................................................................ 74984 ........................................................................ 74985 ........................................................................ 74986 ........................................................................ 74987 ........................................................................ 74988 ........................................................................ 74989 ........................................................................ 74990 ........................................................................ 74991 ........................................................................ 74992 ........................................................................ 74993 ........................................................................ 74994 ........................................................................ 74995 ........................................................................ 74996 ........................................................................ 74997 ........................................................................ 74998 ........................................................................ 74999 ........................................................................ 75000 ........................................................................ 75001 ........................................................................ 75002 ........................................................................ 75003 ........................................................................ 75004 ........................................................................ 75005 ........................................................................ 75006 ........................................................................ 75007 ........................................................................ 75008 ........................................................................ 75009 ........................................................................ 75010 ........................................................................ 75011 ........................................................................ 75012 ........................................................................ 75013 ........................................................................ 75014 ........................................................................ 75015 ........................................................................ 75016 ........................................................................ 75017 ........................................................................ 75018 ........................................................................ 75019 ........................................................................ 75020 ........................................................................ 75021 ........................................................................ 75022 ........................................................................ 75023 ........................................................................ 75024 ........................................................................ 75025 ........................................................................ 75026 ........................................................................ 75027 ........................................................................ 75028 ........................................................................ 75029 ........................................................................ 75030 ........................................................................ 75031 ........................................................................ 75032 ........................................................................ 75033 ........................................................................ 75034 ........................................................................ 75035 ........................................................................ 75036 ........................................................................ 75037 ........................................................................ 75038 ........................................................................ 75039 ........................................................................ 75040 ........................................................................ 75041 ........................................................................ 75042 ........................................................................ 75043 ........................................................................ 75044 ........................................................................ 75045 ........................................................................ 75046 ........................................................................ 75047 ........................................................................ 75048 ........................................................................ 75049 ........................................................................ 75050 ........................................................................ 75051 ........................................................................ 75052 ........................................................................ 75053 ........................................................................ 75054 ........................................................................ 75055 ........................................................................ 75056 ........................................................................ 75057 ........................................................................ 75058 ........................................................................ 75059 ........................................................................ 75060 ........................................................................ 75061 ........................................................................ 75062 ........................................................................ 75063 ........................................................................ 75064 ........................................................................ 75065 ........................................................................ 75066 ........................................................................ 75067 ........................................................................ 75068 ........................................................................ 75069 ........................................................................ 75070 ........................................................................ 75071 ........................................................................ 75072 ........................................................................ 75073 ........................................................................ 75074 ........................................................................ 75075 ........................................................................ 75076 ........................................................................ 75077 ........................................................................ 75078 ........................................................................ 75079 ........................................................................ 75080 ........................................................................ 75081 ........................................................................ 75082 ........................................................................ 75083 ........................................................................ 75084 ........................................................................ 75085 ........................................................................ 75086 ........................................................................ 75087 ........................................................................ 75088 ........................................................................ 75089 ........................................................................ 75090 ........................................................................ 75091 ........................................................................ 75092 ........................................................................ 75093 ........................................................................ 75094 ........................................................................ 75095 ........................................................................ 75096 ........................................................................ 75097 ........................................................................ 75098 ........................................................................ 75099 ........................................................................ 75100 ........................................................................ 75101 ........................................................................ 75102 ........................................................................ 75103 ........................................................................ 75104 ........................................................................ 75105 ........................................................................ 75106 ........................................................................ 75107 ........................................................................ 75108 ........................................................................ 75109 ........................................................................ 75110 ........................................................................ 75111 ........................................................................ 75112 ........................................................................ 75113 ........................................................................ 75114 ........................................................................ 75115 ........................................................................ 75116 ........................................................................ 75117 ........................................................................ 75118 ........................................................................ 75119 ........................................................................ 75120 ........................................................................ 75121 ........................................................................ 75122 ........................................................................ 75123 ........................................................................ 75124 ........................................................................ 75125 ........................................................................ 75126 ........................................................................ 75127 ........................................................................ 75128 ........................................................................ 75129 ........................................................................ 75130 ........................................................................ 75131 ........................................................................ 75132 ........................................................................ 75133 ........................................................................ 75134 ........................................................................ 75135 ........................................................................ 75136 ........................................................................ 75137 ........................................................................ 75138 ........................................................................ 75139 ........................................................................ 75140 ........................................................................ 75141 ........................................................................ 75142 ........................................................................ 75143 ........................................................................ 75144 ........................................................................ 75145 ........................................................................ 75146 ........................................................................ 75147 ........................................................................ 75148 ........................................................................ 75149 ........................................................................ 75150 ........................................................................ 75151 ........................................................................ 75152 ........................................................................ 75153 ........................................................................ 75154 ........................................................................ 75155 ........................................................................ 75156 ........................................................................ 75157 ........................................................................ 75158 ........................................................................ 75159 ........................................................................ 75160 ........................................................................ 75161 ........................................................................ 75162 ........................................................................ 75163 ........................................................................ 75164 ........................................................................ 75165 ........................................................................ 75166 ........................................................................ 75167 ........................................................................ 75168 ........................................................................ 75169 ........................................................................ 75170 ........................................................................ 75171 ........................................................................ 75172 ........................................................................ 75173 ........................................................................ 75174 ........................................................................ 75175 ........................................................................ 75176 ........................................................................ 75177 ........................................................................ 75178 ........................................................................ 75179 ........................................................................ 75180 ........................................................................ 75181 ........................................................................ 75182 ........................................................................ 75183 ........................................................................ 75184 ........................................................................ 75185 ........................................................................ 75186 ........................................................................ 75187 ........................................................................ 75188 ........................................................................ 75189 ........................................................................ 75190 ........................................................................ 75191 ........................................................................ 75192 ........................................................................ 75193 ........................................................................ 75194 ........................................................................ 75195 ........................................................................ 75196 ........................................................................ 75197 ........................................................................ 75198 ........................................................................ 75199 ........................................................................ 75200 ........................................................................ 75201 ........................................................................ 75202 ........................................................................ 75203 ........................................................................ 75204 ........................................................................ 75205 ........................................................................ 75206 ........................................................................ 75207 ........................................................................ 75208 ........................................................................ 75209 ........................................................................ 75210 ........................................................................ 75211 ........................................................................ 75212 ........................................................................ 75213 ........................................................................ 75214 ........................................................................ 75215 ........................................................................ 75216 ........................................................................ 75217 ........................................................................ 75218 ........................................................................ 75219 ........................................................................ 75220 ........................................................................ 75221 ........................................................................ 75222 ........................................................................ 75223 ........................................................................ 75224 ........................................................................ 75225 ........................................................................ 75226 ........................................................................ 75227 ........................................................................ 75228 ........................................................................ 75229 ........................................................................ 75230 ........................................................................ 75231 ........................................................................ 75232 ........................................................................ 75233 ........................................................................ 75234 ........................................................................ 75235 ........................................................................ 75236 ........................................................................ 75237 ........................................................................ 75238 ........................................................................ 75239 ........................................................................ 75240 ........................................................................ 75241 ........................................................................ 75242 ........................................................................ 75243 ........................................................................ 75244 ........................................................................ 75245 ........................................................................ 75246 ........................................................................ 75247 ........................................................................ 75248 ........................................................................ 75249 ........................................................................ 75250 ........................................................................ 75251 ........................................................................ 75252 ........................................................................ 75253 ........................................................................ 75254 ........................................................................ 75255 ........................................................................ 75256 ........................................................................ 75257 ........................................................................ 75258 ........................................................................ 75259 ........................................................................ 75260 ........................................................................ 75261 ........................................................................ 75262 ........................................................................ 75263 ........................................................................ 75264 ........................................................................ 75265 ........................................................................ 75266 ........................................................................ 75267 ........................................................................ 75268 ........................................................................ 75269 ........................................................................ 75270 ........................................................................ 75271 ........................................................................ 75272 ........................................................................ 75273 ........................................................................ 75274 ........................................................................ 75275 ........................................................................ 75276 ........................................................................ 75277 ........................................................................ 75278 ........................................................................ 75279 ........................................................................ 75280 ........................................................................ 75281 ........................................................................ 75282 ........................................................................ 75283 ........................................................................ 75284 ........................................................................ 75285 ........................................................................ 75286 ........................................................................ 75287 ........................................................................ 75288 ........................................................................ 75289 ........................................................................ 75290 ........................................................................ 75291 ........................................................................ 75292 ........................................................................ 75293 ........................................................................ 75294 ........................................................................ 75295 ........................................................................ 75296 ........................................................................ 75297 ........................................................................ 75298 ........................................................................ 75299 ........................................................................ 75300 ........................................................................ 75301 ........................................................................ 75302 ........................................................................ 75303 ........................................................................ 75304 ........................................................................ 75305 ........................................................................ 75306 ........................................................................ 75307 ........................................................................ 75308 ........................................................................ 75309 ........................................................................ 75310 ........................................................................ 75311 ........................................................................ 75312 ........................................................................ 75313 ........................................................................ 75314 ........................................................................ 75315 ........................................................................ 75316 ........................................................................ 75317 ........................................................................ 75318 ........................................................................ 75319 ........................................................................ 75320 ........................................................................ 75321 ........................................................................ 75322 ........................................................................ 75323 ........................................................................ 75324 ........................................................................ 75325 ........................................................................ 75326 ........................................................................ 75327 ........................................................................ 75328 ........................................................................ 75329 ........................................................................ 75330 ........................................................................ 75331 ........................................................................ 75332 ........................................................................ 75333 ........................................................................ 75334 ........................................................................ 75335 ........................................................................ 75336 ........................................................................ 75337 ........................................................................ 75338 ........................................................................ 75339 ........................................................................ 75340 ........................................................................ 75341 ........................................................................ 75342 ........................................................................ 75343 ........................................................................ 75344 ........................................................................ 75345 ........................................................................ 75346 ........................................................................ 75347 ........................................................................ 75348 ........................................................................ 75349 ........................................................................ 75350 ........................................................................ 75351 ........................................................................ 75352 ........................................................................ 75353 ........................................................................ 75354 ........................................................................ 75355 ........................................................................ 75356 ........................................................................ 75357 ........................................................................ 75358 ........................................................................ 75359 ........................................................................ 75360 ........................................................................ 75361 ........................................................................ 75362 ........................................................................ 75363 ........................................................................ 75364 ........................................................................ 75365 ........................................................................ 75366 ........................................................................ 75367 ........................................................................ 75368 ........................................................................ 75369 ........................................................................ 75370 ........................................................................ 75371 ........................................................................ 75372 ........................................................................ 75373 ........................................................................ 75374 ........................................................................ 75375 ........................................................................ 75376 ........................................................................ 75377 ........................................................................ 75378 ........................................................................ 75379 ........................................................................ 75380 ........................................................................ 75381 ........................................................................ 75382 ........................................................................ 75383 ........................................................................ 75384 ........................................................................ 75385 ........................................................................ 75386 ........................................................................ 75387 ........................................................................ 75388 ........................................................................ 75389 ........................................................................ 75390 ........................................................................ 75391 ........................................................................ 75392 ........................................................................ 75393 ........................................................................ 75394 ........................................................................ 75395 ........................................................................ 75396 ........................................................................ 75397 ........................................................................ 75398 ........................................................................ 75399 ........................................................................ 75400 ........................................................................ 75401 ........................................................................ 75402 ........................................................................ 75403 ........................................................................ 75404 ........................................................................ 75405 ........................................................................ 75406 ........................................................................ 75407 ........................................................................ 75408 ........................................................................ 75409 ........................................................................ 75410 ........................................................................ 75411 ........................................................................ 75412 ........................................................................ 75413 ........................................................................ 75414 ........................................................................ 75415 ........................................................................ 75416 ........................................................................ 75417 ........................................................................ 75418 ........................................................................ 75419 ........................................................................ 75420 ........................................................................ 75421 ........................................................................ 75422 ........................................................................ 75423 ........................................................................ 75424 ........................................................................ 75425 ........................................................................ 75426 ........................................................................ 75427 ........................................................................ 75428 ........................................................................ 75429 ........................................................................ 75430 ........................................................................ 75431 ........................................................................ 75432 ........................................................................ 75433 ........................................................................ 75434 ........................................................................ 75435 ........................................................................ 75436 ........................................................................ 75437 ........................................................................ 75438 ........................................................................ 75439 ........................................................................ 75440 ........................................................................ 75441 ........................................................................ 75442 ........................................................................ 75443 ........................................................................ 75444 ........................................................................ 75445 ........................................................................ 75446 ........................................................................ 75447 ........................................................................ 75448 ........................................................................ 75449 ........................................................................ 75450 ........................................................................ 75451 ........................................................................ 75452 ........................................................................ 75453 ........................................................................ 75454 ........................................................................ 75455 ........................................................................ 75456 ........................................................................ 75457 ........................................................................ 75458 ........................................................................ 75459 ........................................................................ 75460 ........................................................................ 75461 ........................................................................ 75462 ........................................................................ 75463 ........................................................................ 75464 ........................................................................ 75465 ........................................................................ 75466 ........................................................................ 75467 ........................................................................ 75468 ........................................................................ 75469 ........................................................................ 75470 ........................................................................ 75471 ........................................................................ 75472 ........................................................................ 75473 ........................................................................ 75474 ........................................................................ 75475 ........................................................................ 75476 ........................................................................ 75477 ........................................................................ 75478 ........................................................................ 75479 ........................................................................ 75480 ........................................................................ 75481 ........................................................................ 75482 ........................................................................ 75483 ........................................................................ 75484 ........................................................................ 75485 ........................................................................ 75486 ........................................................................ 75487 ........................................................................ 75488 ........................................................................ 75489 ........................................................................ 75490 ........................................................................ 75491 ........................................................................ 75492 ........................................................................ 75493 ........................................................................ 75494 ........................................................................ 75495 ........................................................................ 75496 ........................................................................ 75497 ........................................................................ 75498 ........................................................................ 75499 ........................................................................ 75500 ........................................................................ 75501 ........................................................................ 75502 ........................................................................ 75503 ........................................................................ 75504 ........................................................................ 75505 ........................................................................ 75506 ........................................................................ 75507 ........................................................................ 75508 ........................................................................ 75509 ........................................................................ 75510 ........................................................................ 75511 ........................................................................ 75512 ........................................................................ 75513 ........................................................................ 75514 ........................................................................ 75515 ........................................................................ 75516 ........................................................................ 75517 ........................................................................ 75518 ........................................................................ 75519 ........................................................................ 75520 ........................................................................ 75521 ........................................................................ 75522 ........................................................................ 75523 ........................................................................ 75524 ........................................................................ 75525 ........................................................................ 75526 ........................................................................ 75527 ........................................................................ 75528 ........................................................................ 75529 ........................................................................ 75530 ........................................................................ 75531 ........................................................................ 75532 ........................................................................ 75533 ........................................................................ 75534 ........................................................................ 75535 ........................................................................ 75536 ........................................................................ 75537 ........................................................................ 75538 ........................................................................ 75539 ........................................................................ 75540 ........................................................................ 75541 ........................................................................ 75542 ........................................................................ 75543 ........................................................................ 75544 ........................................................................ 75545 ........................................................................ 75546 ........................................................................ 75547 ........................................................................ 75548 ........................................................................ 75549 ........................................................................ 75550 ........................................................................ 75551 ........................................................................ 75552 ........................................................................ 75553 ........................................................................ 75554 ........................................................................ 75555 ........................................................................ 75556 ........................................................................ 75557 ........................................................................ 75558 ........................................................................ 75559 ........................................................................ 75560 ........................................................................ 75561 ........................................................................ 75562 ........................................................................ 75563 ........................................................................ 75564 ........................................................................ 75565 ........................................................................ 75566 ........................................................................ 75567 ........................................................................ 75568 ........................................................................ 75569 ........................................................................ 75570 ........................................................................ 75571 ........................................................................ 75572 ........................................................................ 75573 ........................................................................ 75574 ........................................................................ 75575 ........................................................................ 75576 ........................................................................ 75577 ........................................................................ 75578 ........................................................................ 75579 ........................................................................ 75580 ........................................................................ 75581 ........................................................................ 75582 ........................................................................ 75583 ........................................................................ 75584 ........................................................................ 75585 ........................................................................ 75586 ........................................................................ 75587 ........................................................................ 75588 ........................................................................ 75589 ........................................................................ 75590 ........................................................................ 75591 ........................................................................ 75592 ........................................................................ 75593 ........................................................................ 75594 ........................................................................ 75595 ........................................................................ 75596 ........................................................................ 75597 ........................................................................ 75598 ........................................................................ 75599 ........................................................................ 75600 ........................................................................ 75601 ........................................................................ 75602 ........................................................................ 75603 ........................................................................ 75604 ........................................................................ 75605 ........................................................................ 75606 ........................................................................ 75607 ........................................................................ 75608 ........................................................................ 75609 ........................................................................ 75610 ........................................................................ 75611 ........................................................................ 75612 ........................................................................ 75613 ........................................................................ 75614 ........................................................................ 75615 ........................................................................ 75616 ........................................................................ 75617 ........................................................................ 75618 ........................................................................ 75619 ........................................................................ 75620 ........................................................................ 75621 ........................................................................ 75622 ........................................................................ 75623 ........................................................................ 75624 ........................................................................ 75625 ........................................................................ 75626 ........................................................................ 75627 ........................................................................ 75628 ........................................................................ 75629 ........................................................................ 75630 ........................................................................ 75631 ........................................................................ 75632 ........................................................................ 75633 ........................................................................ 75634 ........................................................................ 75635 ........................................................................ 75636 ........................................................................ 75637 ........................................................................ 75638 ........................................................................ 75639 ........................................................................ 75640 ........................................................................ 75641 ........................................................................ 75642 ........................................................................ 75643 ........................................................................ 75644 ........................................................................ 75645 ........................................................................ 75646 ........................................................................ 75647 ........................................................................ 75648 ........................................................................ 75649 ........................................................................ 75650 ........................................................................ 75651 ........................................................................ 75652 ........................................................................ 75653 ........................................................................ 75654 ........................................................................ 75655 ........................................................................ 75656 ........................................................................ 75657 ........................................................................ 75658 ........................................................................ 75659 ........................................................................ 75660 ........................................................................ 75661 ........................................................................ 75662 ........................................................................ 75663 ........................................................................ 75664 ........................................................................ 75665 ........................................................................ 75666 ........................................................................ 75667 ........................................................................ 75668 ........................................................................ 75669 ........................................................................ 75670 ........................................................................ 75671 ........................................................................ 75672 ........................................................................ 75673 ........................................................................ 75674 ........................................................................ 75675 ........................................................................ 75676 ........................................................................ 75677 ........................................................................ 75678 ........................................................................ 75679 ........................................................................ 75680 ........................................................................ 75681 ........................................................................ 75682 ........................................................................ 75683 ........................................................................ 75684 ........................................................................ 75685 ........................................................................ 75686 ........................................................................ 75687 ........................................................................ 75688 ........................................................................ 75689 ........................................................................ 75690 ........................................................................ 75691 ........................................................................ 75692 ........................................................................ 75693 ........................................................................ 75694 ........................................................................ 75695 ........................................................................ 75696 ........................................................................ 75697 ........................................................................ 75698 ........................................................................ 75699 ........................................................................ 75700 ........................................................................ 75701 ........................................................................ 75702 ........................................................................ 75703 ........................................................................ 75704 ........................................................................ 75705 ........................................................................ 75706 ........................................................................ 75707 ........................................................................ 75708 ........................................................................ 75709 ........................................................................ 75710 ........................................................................ 75711 ........................................................................ 75712 ........................................................................ 75713 ........................................................................ 75714 ........................................................................ 75715 ........................................................................ 75716 ........................................................................ 75717 ........................................................................ 75718 ........................................................................ 75719 ........................................................................ 75720 ........................................................................ 75721 ........................................................................ 75722 ........................................................................ 75723 ........................................................................ 75724 ........................................................................ 75725 ........................................................................ 75726 ........................................................................ 75727 ........................................................................ 75728 ........................................................................ 75729 ........................................................................ 75730 ........................................................................ 75731 ........................................................................ 75732 ........................................................................ 75733 ........................................................................ 75734 ........................................................................ 75735 ........................................................................ 75736 ........................................................................ 75737 ........................................................................ 75738 ........................................................................ 75739 ........................................................................ 75740 ........................................................................ 75741 ........................................................................ 75742 ........................................................................ 75743 ........................................................................ 75744 ........................................................................ 75745 ........................................................................ 75746 ........................................................................ 75747 ........................................................................ 75748 ........................................................................ 75749 ........................................................................ 75750 ........................................................................ 75751 ........................................................................ 75752 ........................................................................ 75753 ........................................................................ 75754 ........................................................................ 75755 ........................................................................ 75756 ........................................................................ 75757 ........................................................................ 75758 ........................................................................ 75759 ........................................................................ 75760 ........................................................................ 75761 ........................................................................ 75762 ........................................................................ 75763 ........................................................................ 75764 ........................................................................ 75765 ........................................................................ 75766 ........................................................................ 75767 ........................................................................ 75768 ........................................................................ 75769 ........................................................................ 75770 ........................................................................ 75771 ........................................................................ 75772 ........................................................................ 75773 ........................................................................ 75774 ........................................................................ 75775 ........................................................................ 75776 ........................................................................ 75777 ........................................................................ 75778 ........................................................................ 75779 ........................................................................ 75780 ........................................................................ 75781 ........................................................................ 75782 ........................................................................ 75783 ........................................................................ 75784 ........................................................................ 75785 ........................................................................ 75786 ........................................................................ 75787 ........................................................................ 75788 ........................................................................ 75789 ........................................................................ 75790 ........................................................................ 75791 ........................................................................ 75792 ........................................................................ 75793 ........................................................................ 75794 ........................................................................ 75795 ........................................................................ 75796 ........................................................................ 75797 ........................................................................ 75798 ........................................................................ 75799 ........................................................................ 75800 ........................................................................ 75801 ........................................................................ 75802 ........................................................................ 75803 ........................................................................ 75804 ........................................................................ 75805 ........................................................................ 75806 ........................................................................ 75807 ........................................................................ 75808 ........................................................................ 75809 ........................................................................ 75810 ........................................................................ 75811 ........................................................................ 75812 ........................................................................ 75813 ........................................................................ 75814 ........................................................................ 75815 ........................................................................ 75816 ........................................................................ 75817 ........................................................................ 75818 ........................................................................ 75819 ........................................................................ 75820 ........................................................................ 75821 ........................................................................ 75822 ........................................................................ 75823 ........................................................................ 75824 ........................................................................ 75825 ........................................................................ 75826 ........................................................................ 75827 ........................................................................ 75828 ........................................................................ 75829 ........................................................................ 75830 ........................................................................ 75831 ........................................................................ 75832 ........................................................................ 75833 ........................................................................ 75834 ........................................................................ 75835 ........................................................................ 75836 ........................................................................ 75837 ........................................................................ 75838 ........................................................................ 75839 ........................................................................ 75840 ........................................................................ 75841 ........................................................................ 75842 ........................................................................ 75843 ........................................................................ 75844 ........................................................................ 75845 ........................................................................ 75846 ........................................................................ 75847 ........................................................................ 75848 ........................................................................ 75849 ........................................................................ 75850 ........................................................................ 75851 ........................................................................ 75852 ........................................................................ 75853 ........................................................................ 75854 ........................................................................ 75855 ........................................................................ 75856 ........................................................................ 75857 ........................................................................ 75858 ........................................................................ 75859 ........................................................................ 75860 ........................................................................ 75861 ........................................................................ 75862 ........................................................................ 75863 ........................................................................ 75864 ........................................................................ 75865 ........................................................................ 75866 ........................................................................ 75867 ........................................................................ 75868 ........................................................................ 75869 ........................................................................ 75870 ........................................................................ 75871 ........................................................................ 75872 ........................................................................ 75873 ........................................................................ 75874 ........................................................................ 75875 ........................................................................ 75876 ........................................................................ 75877 ........................................................................ 75878 ........................................................................ 75879 ........................................................................ 75880 ........................................................................ 75881 ........................................................................ 75882 ........................................................................ 75883 ........................................................................ 75884 ........................................................................ 75885 ........................................................................ 75886 ........................................................................ 75887 ........................................................................ 75888 ........................................................................ 75889 ........................................................................ 75890 ........................................................................ 75891 ........................................................................ 75892 ........................................................................ 75893 ........................................................................ 75894 ........................................................................ 75895 ........................................................................ 75896 ........................................................................ 75897 ........................................................................ 75898 ........................................................................ 75899 ........................................................................ 75900 ........................................................................ 75901 ........................................................................ 75902 ........................................................................ 75903 ........................................................................ 75904 ........................................................................ 75905 ........................................................................ 75906 ........................................................................ 75907 ........................................................................ 75908 ........................................................................ 75909 ........................................................................ 75910 ........................................................................ 75911 ........................................................................ 75912 ........................................................................ 75913 ........................................................................ 75914 ........................................................................ 75915 ........................................................................ 75916 ........................................................................ 75917 ........................................................................ 75918 ........................................................................ 75919 ........................................................................ 75920 ........................................................................ 75921 ........................................................................ 75922 ........................................................................ 75923 ........................................................................ 75924 ........................................................................ 75925 ........................................................................ 75926 ........................................................................ 75927 ........................................................................ 75928 ........................................................................ 75929 ........................................................................ 75930 ........................................................................ 75931 ........................................................................ 75932 ........................................................................ 75933 ........................................................................ 75934 ........................................................................ 75935 ........................................................................ 75936 ........................................................................ 75937 ........................................................................ 75938 ........................................................................ 75939 ........................................................................ 75940 ........................................................................ 75941 ........................................................................ 75942 ........................................................................ 75943 ........................................................................ 75944 ........................................................................ 75945 ........................................................................ 75946 ........................................................................ 75947 ........................................................................ 75948 ........................................................................ 75949 ........................................................................ 75950 ........................................................................ 75951 ........................................................................ 75952 ........................................................................ 75953 ........................................................................ 75954 ........................................................................ 75955 ........................................................................ 75956 ........................................................................ 75957 ........................................................................ 75958 ........................................................................ 75959 ........................................................................ 75960 ........................................................................ 75961 ........................................................................ 75962 ........................................................................ 75963 ........................................................................ 75964 ........................................................................ 75965 ........................................................................ 75966 ........................................................................ 75967 ........................................................................ 75968 ........................................................................ 75969 ........................................................................ 75970 ........................................................................ 75971 ........................................................................ 75972 ........................................................................ 75973 ........................................................................ 75974 ........................................................................ 75975 ........................................................................ 75976 ........................................................................ 75977 ........................................................................ 75978 ........................................................................ 75979 ........................................................................ 75980 ........................................................................ 75981 ........................................................................ 75982 ........................................................................ 75983 ........................................................................ 75984 ........................................................................ 75985 ........................................................................ 75986 ........................................................................ 75987 ........................................................................ 75988 ........................................................................ 75989 ........................................................................ 75990 ........................................................................ 75991 ........................................................................ 75992 ........................................................................ 75993 ........................................................................ 75994 ........................................................................ 75995 ........................................................................ 75996 ........................................................................ 75997 ........................................................................ 75998 ........................................................................ 75999 ........................................................................ 76000 ........................................................................ 76001 ........................................................................ 76002 ........................................................................ 76003 ........................................................................ 76004 ........................................................................ 76005 ........................................................................ 76006 ........................................................................ 76007 ........................................................................ 76008 ........................................................................ 76009 ........................................................................ 76010 ........................................................................ 76011 ........................................................................ 76012 ........................................................................ 76013 ........................................................................ 76014 ........................................................................ 76015 ........................................................................ 76016 ........................................................................ 76017 ........................................................................ 76018 ........................................................................ 76019 ........................................................................ 76020 ........................................................................ 76021 ........................................................................ 76022 ........................................................................ 76023 ........................................................................ 76024 ........................................................................ 76025 ........................................................................ 76026 ........................................................................ 76027 ........................................................................ 76028 ........................................................................ 76029 ........................................................................ 76030 ........................................................................ 76031 ........................................................................ 76032 ........................................................................ 76033 ........................................................................ 76034 ........................................................................ 76035 ........................................................................ 76036 ........................................................................ 76037 ........................................................................ 76038 ........................................................................ 76039 ........................................................................ 76040 ........................................................................ 76041 ........................................................................ 76042 ........................................................................ 76043 ........................................................................ 76044 ........................................................................ 76045 ........................................................................ 76046 ........................................................................ 76047 ........................................................................ 76048 ........................................................................ 76049 ........................................................................ 76050 ........................................................................ 76051 ........................................................................ 76052 ........................................................................ 76053 ........................................................................ 76054 ........................................................................ 76055 ........................................................................ 76056 ........................................................................ 76057 ........................................................................ 76058 ........................................................................ 76059 ........................................................................ 76060 ........................................................................ 76061 ........................................................................ 76062 ........................................................................ 76063 ........................................................................ 76064 ........................................................................ 76065 ........................................................................ 76066 ........................................................................ 76067 ........................................................................ 76068 ........................................................................ 76069 ........................................................................ 76070 ........................................................................ 76071 ........................................................................ 76072 ........................................................................ 76073 ........................................................................ 76074 ........................................................................ 76075 ........................................................................ 76076 ........................................................................ 76077 ........................................................................ 76078 ........................................................................ 76079 ........................................................................ 76080 ........................................................................ 76081 ........................................................................ 76082 ........................................................................ 76083 ........................................................................ 76084 ........................................................................ 76085 ........................................................................ 76086 ........................................................................ 76087 ........................................................................ 76088 ........................................................................ 76089 ........................................................................ 76090 ........................................................................ 76091 ........................................................................ 76092 ........................................................................ 76093 ........................................................................ 76094 ........................................................................ 76095 ........................................................................ 76096 ........................................................................ 76097 ........................................................................ 76098 ........................................................................ 76099 ........................................................................ 76100 ........................................................................ 76101 ........................................................................ 76102 ........................................................................ 76103 ........................................................................ 76104 ........................................................................ 76105 ........................................................................ 76106 ........................................................................ 76107 ........................................................................ 76108 ........................................................................ 76109 ........................................................................ 76110 ........................................................................ 76111 ........................................................................ 76112 ........................................................................ 76113 ........................................................................ 76114 ........................................................................ 76115 ........................................................................ 76116 ........................................................................ 76117 ........................................................................ 76118 ........................................................................ 76119 ........................................................................ 76120 ........................................................................ 76121 ........................................................................ 76122 ........................................................................ 76123 ........................................................................ 76124 ........................................................................ 76125 ........................................................................ 76126 ........................................................................ 76127 ........................................................................ 76128 ........................................................................ 76129 ........................................................................ 76130 ........................................................................ 76131 ........................................................................ 76132 ........................................................................ 76133 ........................................................................ 76134 ........................................................................ 76135 ........................................................................ 76136 ........................................................................ 76137 ........................................................................ 76138 ........................................................................ 76139 ........................................................................ 76140 ........................................................................ 76141 ........................................................................ 76142 ........................................................................ 76143 ........................................................................ 76144 ........................................................................ 76145 ........................................................................ 76146 ........................................................................ 76147 ........................................................................ 76148 ........................................................................ 76149 ........................................................................ 76150 ........................................................................ 76151 ........................................................................ 76152 ........................................................................ 76153 ........................................................................ 76154 ........................................................................ 76155 ........................................................................ 76156 ........................................................................ 76157 ........................................................................ 76158 ........................................................................ 76159 ........................................................................ 76160 ........................................................................ 76161 ........................................................................ 76162 ........................................................................ 76163 ........................................................................ 76164 ........................................................................ 76165 ........................................................................ 76166 ........................................................................ 76167 ........................................................................ 76168 ........................................................................ 76169 ........................................................................ 76170 ........................................................................ 76171 ........................................................................ 76172 ........................................................................ 76173 ........................................................................ 76174 ........................................................................ 76175 ........................................................................ 76176 ........................................................................ 76177 ........................................................................ 76178 ........................................................................ 76179 ........................................................................ 76180 ........................................................................ 76181 ........................................................................ 76182 ........................................................................ 76183 ........................................................................ 76184 ........................................................................ 76185 ........................................................................ 76186 ........................................................................ 76187 ........................................................................ 76188 ........................................................................ 76189 ........................................................................ 76190 ........................................................................ 76191 ........................................................................ 76192 ........................................................................ 76193 ........................................................................ 76194 ........................................................................ 76195 ........................................................................ 76196 ........................................................................ 76197 ........................................................................ 76198 ........................................................................ 76199 ........................................................................ 76200 ........................................................................ 76201 ........................................................................ 76202 ........................................................................ 76203 ........................................................................ 76204 ........................................................................ 76205 ........................................................................ 76206 ........................................................................ 76207 ........................................................................ 76208 ........................................................................ 76209 ........................................................................ 76210 ........................................................................ 76211 ........................................................................ 76212 ........................................................................ 76213 ........................................................................ 76214 ........................................................................ 76215 ........................................................................ 76216 ........................................................................ 76217 ........................................................................ 76218 ........................................................................ 76219 ........................................................................ 76220 ........................................................................ 76221 ........................................................................ 76222 ........................................................................ 76223 ........................................................................ 76224 ........................................................................ 76225 ........................................................................ 76226 ........................................................................ 76227 ........................................................................ 76228 ........................................................................ 76229 ........................................................................ 76230 ........................................................................ 76231 ........................................................................ 76232 ........................................................................ 76233 ........................................................................ 76234 ........................................................................ 76235 ........................................................................ 76236 ........................................................................ 76237 ........................................................................ 76238 ........................................................................ 76239 ........................................................................ 76240 ........................................................................ 76241 ........................................................................ 76242 ........................................................................ 76243 ........................................................................ 76244 ........................................................................ 76245 ........................................................................ 76246 ........................................................................ 76247 ........................................................................ 76248 ........................................................................ 76249 ........................................................................ 76250 ........................................................................ 76251 ........................................................................ 76252 ........................................................................ 76253 ........................................................................ 76254 ........................................................................ 76255 ........................................................................ 76256 ........................................................................ 76257 ........................................................................ 76258 ........................................................................ 76259 ........................................................................ 76260 ........................................................................ 76261 ........................................................................ 76262 ........................................................................ 76263 ........................................................................ 76264 ........................................................................ 76265 ........................................................................ 76266 ........................................................................ 76267 ........................................................................ 76268 ........................................................................ 76269 ........................................................................ 76270 ........................................................................ 76271 ........................................................................ 76272 ........................................................................ 76273 ........................................................................ 76274 ........................................................................ 76275 ........................................................................ 76276 ........................................................................ 76277 ........................................................................ 76278 ........................................................................ 76279 ........................................................................ 76280 ........................................................................ 76281 ........................................................................ 76282 ........................................................................ 76283 ........................................................................ 76284 ........................................................................ 76285 ........................................................................ 76286 ........................................................................ 76287 ........................................................................ 76288 ........................................................................ 76289 ........................................................................ 76290 ........................................................................ 76291 ........................................................................ 76292 ........................................................................ 76293 ........................................................................ 76294 ........................................................................ 76295 ........................................................................ 76296 ........................................................................ 76297 ........................................................................ 76298 ........................................................................ 76299 ........................................................................ 76300 ........................................................................ 76301 ........................................................................ 76302 ........................................................................ 76303 ........................................................................ 76304 ........................................................................ 76305 ........................................................................ 76306 ........................................................................ 76307 ........................................................................ 76308 ........................................................................ 76309 ........................................................................ 76310 ........................................................................ 76311 ........................................................................ 76312 ........................................................................ 76313 ........................................................................ 76314 ........................................................................ 76315 ........................................................................ 76316 ........................................................................ 76317 ........................................................................ 76318 ........................................................................ 76319 ........................................................................ 76320 ........................................................................ 76321 ........................................................................ 76322 ........................................................................ 76323 ........................................................................ 76324 ........................................................................ 76325 ........................................................................ 76326 ........................................................................ 76327 ........................................................................ 76328 ........................................................................ 76329 ........................................................................ 76330 ........................................................................ 76331 ........................................................................ 76332 ........................................................................ 76333 ........................................................................ 76334 ........................................................................ 76335 ........................................................................ 76336 ........................................................................ 76337 ........................................................................ 76338 ........................................................................ 76339 ........................................................................ 76340 ........................................................................ 76341 ........................................................................ 76342 ........................................................................ 76343 ........................................................................ 76344 ........................................................................ 76345 ........................................................................ 76346 ........................................................................ 76347 ........................................................................ 76348 ........................................................................ 76349 ........................................................................ 76350 ........................................................................ 76351 ........................................................................ 76352 ........................................................................ 76353 ........................................................................ 76354 ........................................................................ 76355 ........................................................................ 76356 ........................................................................ 76357 ........................................................................ 76358 ........................................................................ 76359 ........................................................................ 76360 ........................................................................ 76361 ........................................................................ 76362 ........................................................................ 76363 ........................................................................ 76364 ........................................................................ 76365 ........................................................................ 76366 ........................................................................ 76367 ........................................................................ 76368 ........................................................................ 76369 ........................................................................ 76370 ........................................................................ 76371 ........................................................................ 76372 ........................................................................ 76373 ........................................................................ 76374 ........................................................................ 76375 ........................................................................ 76376 ........................................................................ 76377 ........................................................................ 76378 ........................................................................ 76379 ........................................................................ 76380 ........................................................................ 76381 ........................................................................ 76382 ........................................................................ 76383 ........................................................................ 76384 ........................................................................ 76385 ........................................................................ 76386 ........................................................................ 76387 ........................................................................ 76388 ........................................................................ 76389 ........................................................................ 76390 ........................................................................ 76391 ........................................................................ 76392 ........................................................................ 76393 ........................................................................ 76394 ........................................................................ 76395 ........................................................................ 76396 ........................................................................ 76397 ........................................................................ 76398 ........................................................................ 76399 ........................................................................ 76400 ........................................................................ 76401 ........................................................................ 76402 ........................................................................ 76403 ........................................................................ 76404 ........................................................................ 76405 ........................................................................ 76406 ........................................................................ 76407 ........................................................................ 76408 ........................................................................ 76409 ........................................................................ 76410 ........................................................................ 76411 ........................................................................ 76412 ........................................................................ 76413 ........................................................................ 76414 ........................................................................ 76415 ........................................................................ 76416 ........................................................................ 76417 ........................................................................ 76418 ........................................................................ 76419 ........................................................................ 76420 ........................................................................ 76421 ........................................................................ 76422 ........................................................................ 76423 ........................................................................ 76424 ........................................................................ 76425 ........................................................................ 76426 ........................................................................ 76427 ........................................................................ 76428 ........................................................................ 76429 ........................................................................ 76430 ........................................................................ 76431 ........................................................................ 76432 ........................................................................ 76433 ........................................................................ 76434 ........................................................................ 76435 ........................................................................ 76436 ........................................................................ 76437 ........................................................................ 76438 ........................................................................ 76439 ........................................................................ 76440 ........................................................................ 76441 ........................................................................ 76442 ........................................................................ 76443 ........................................................................ 76444 ........................................................................ 76445 ........................................................................ 76446 ........................................................................ 76447 ........................................................................ 76448 ........................................................................ 76449 ........................................................................ 76450 ........................................................................ 76451 ........................................................................ 76452 ........................................................................ 76453 ........................................................................ 76454 ........................................................................ 76455 ........................................................................ 76456 ........................................................................ 76457 ........................................................................ 76458 ........................................................................ 76459 ........................................................................ 76460 ........................................................................ 76461 ........................................................................ 76462 ........................................................................ 76463 ........................................................................ 76464 ........................................................................ 76465 ........................................................................ 76466 ........................................................................ 76467 ........................................................................ 76468 ........................................................................ 76469 ........................................................................ 76470 ........................................................................ 76471 ........................................................................ 76472 ........................................................................ 76473 ........................................................................ 76474 ........................................................................ 76475 ........................................................................ 76476 ........................................................................ 76477 ........................................................................ 76478 ........................................................................ 76479 ........................................................................ 76480 ........................................................................ 76481 ........................................................................ 76482 ........................................................................ 76483 ........................................................................ 76484 ........................................................................ 76485 ........................................................................ 76486 ........................................................................ 76487 ........................................................................ 76488 ........................................................................ 76489 ........................................................................ 76490 ........................................................................ 76491 ........................................................................ 76492 ........................................................................ 76493 ........................................................................ 76494 ........................................................................ 76495 ........................................................................ 76496 ........................................................................ 76497 ........................................................................ 76498 ........................................................................ 76499 ........................................................................ 76500 ........................................................................ 76501 ........................................................................ 76502 ........................................................................ 76503 ........................................................................ 76504 ........................................................................ 76505 ........................................................................ 76506 ........................................................................ 76507 ........................................................................ 76508 ........................................................................ 76509 ........................................................................ 76510 ........................................................................ 76511 ........................................................................ 76512 ........................................................................ 76513 ........................................................................ 76514 ........................................................................ 76515 ........................................................................ 76516 ........................................................................ 76517 ........................................................................ 76518 ........................................................................ 76519 ........................................................................ 76520 ........................................................................ 76521 ........................................................................ 76522 ........................................................................ 76523 ........................................................................ 76524 ........................................................................ 76525 ........................................................................ 76526 ........................................................................ 76527 ........................................................................ 76528 ........................................................................ 76529 ........................................................................ 76530 ........................................................................ 76531 ........................................................................ 76532 ........................................................................ 76533 ........................................................................ 76534 ........................................................................ 76535 ........................................................................ 76536 ........................................................................ 76537 ........................................................................ 76538 ........................................................................ 76539 ........................................................................ 76540 ........................................................................ 76541 ........................................................................ 76542 ........................................................................ 76543 ........................................................................ 76544 ........................................................................ 76545 ........................................................................ 76546 ........................................................................ 76547 ........................................................................ 76548 ........................................................................ 76549 ........................................................................ 76550 ........................................................................ 76551 ........................................................................ 76552 ........................................................................ 76553 ........................................................................ 76554 ........................................................................ 76555 ........................................................................ 76556 ........................................................................ 76557 ........................................................................ 76558 ........................................................................ 76559 ........................................................................ 76560 ........................................................................ 76561 ........................................................................ 76562 ........................................................................ 76563 ........................................................................ 76564 ........................................................................ 76565 ........................................................................ 76566 ........................................................................ 76567 ........................................................................ 76568 ........................................................................ 76569 ........................................................................ 76570 ........................................................................ 76571 ........................................................................ 76572 ........................................................................ 76573 ........................................................................ 76574 ........................................................................ 76575 ........................................................................ 76576 ........................................................................ 76577 ........................................................................ 76578 ........................................................................ 76579 ........................................................................ 76580 ........................................................................ 76581 ........................................................................ 76582 ........................................................................ 76583 ........................................................................ 76584 ........................................................................ 76585 ........................................................................ 76586 ........................................................................ 76587 ........................................................................ 76588 ........................................................................ 76589 ........................................................................ 76590 ........................................................................ 76591 ........................................................................ 76592 ........................................................................ 76593 ........................................................................ 76594 ........................................................................ 76595 ........................................................................ 76596 ........................................................................ 76597 ........................................................................ 76598 ........................................................................ 76599 ........................................................................ 76600 ........................................................................ 76601 ........................................................................ 76602 ........................................................................ 76603 ........................................................................ 76604 ........................................................................ 76605 ........................................................................ 76606 ........................................................................ 76607 ........................................................................ 76608 ........................................................................ 76609 ........................................................................ 76610 ........................................................................ 76611 ........................................................................ 76612 ........................................................................ 76613 ........................................................................ 76614 ........................................................................ 76615 ........................................................................ 76616 ........................................................................ 76617 ........................................................................ 76618 ........................................................................ 76619 ........................................................................ 76620 ........................................................................ 76621 ........................................................................ 76622 ........................................................................ 76623 ........................................................................ 76624 ........................................................................ 76625 ........................................................................ 76626 ........................................................................ 76627 ........................................................................ 76628 ........................................................................ 76629 ........................................................................ 76630 ........................................................................ 76631 ........................................................................ 76632 ........................................................................ 76633 ........................................................................ 76634 ........................................................................ 76635 ........................................................................ 76636 ........................................................................ 76637 ........................................................................ 76638 ........................................................................ 76639 ........................................................................ 76640 ........................................................................ 76641 ........................................................................ 76642 ........................................................................ 76643 ........................................................................ 76644 ........................................................................ 76645 ........................................................................ 76646 ........................................................................ 76647 ........................................................................ 76648 ........................................................................ 76649 ........................................................................ 76650 ........................................................................ 76651 ........................................................................ 76652 ........................................................................ 76653 ........................................................................ 76654 ........................................................................ 76655 ........................................................................ 76656 ........................................................................ 76657 ........................................................................ 76658 ........................................................................ 76659 ........................................................................ 76660 ........................................................................ 76661 ........................................................................ 76662 ........................................................................ 76663 ........................................................................ 76664 ........................................................................ 76665 ........................................................................ 76666 ........................................................................ 76667 ........................................................................ 76668 ........................................................................ 76669 ........................................................................ 76670 ........................................................................ 76671 ........................................................................ 76672 ........................................................................ 76673 ........................................................................ 76674 ........................................................................ 76675 ........................................................................ 76676 ........................................................................ 76677 ........................................................................ 76678 ........................................................................ 76679 ........................................................................ 76680 ........................................................................ 76681 ........................................................................ 76682 ........................................................................ 76683 ........................................................................ 76684 ........................................................................ 76685 ........................................................................ 76686 ........................................................................ 76687 ........................................................................ 76688 ........................................................................ 76689 ........................................................................ 76690 ........................................................................ 76691 ........................................................................ 76692 ........................................................................ 76693 ........................................................................ 76694 ........................................................................ 76695 ........................................................................ 76696 ........................................................................ 76697 ........................................................................ 76698 ........................................................................ 76699 ........................................................................ 76700 ........................................................................ 76701 ........................................................................ 76702 ........................................................................ 76703 ........................................................................ 76704 ........................................................................ 76705 ........................................................................ 76706 ........................................................................ 76707 ........................................................................ 76708 ........................................................................ 76709 ........................................................................ 76710 ........................................................................ 76711 ........................................................................ 76712 ........................................................................ 76713 ........................................................................ 76714 ........................................................................ 76715 ........................................................................ 76716 ........................................................................ 76717 ........................................................................ 76718 ........................................................................ 76719 ........................................................................ 76720 ........................................................................ 76721 ........................................................................ 76722 ........................................................................ 76723 ........................................................................ 76724 ........................................................................ 76725 ........................................................................ 76726 ........................................................................ 76727 ........................................................................ 76728 ........................................................................ 76729 ........................................................................ 76730 ........................................................................ 76731 ........................................................................ 76732 ........................................................................ 76733 ........................................................................ 76734 ........................................................................ 76735 ........................................................................ 76736 ........................................................................ 76737 ........................................................................ 76738 ........................................................................ 76739 ........................................................................ 76740 ........................................................................ 76741 ........................................................................ 76742 ........................................................................ 76743 ........................................................................ 76744 ........................................................................ 76745 ........................................................................ 76746 ........................................................................ 76747 ........................................................................ 76748 ........................................................................ 76749 ........................................................................ 76750 ........................................................................ 76751 ........................................................................ 76752 ........................................................................ 76753 ........................................................................ 76754 ........................................................................ 76755 ........................................................................ 76756 ........................................................................ 76757 ........................................................................ 76758 ........................................................................ 76759 ........................................................................ 76760 ........................................................................ 76761 ........................................................................ 76762 ........................................................................ 76763 ........................................................................ 76764 ........................................................................ 76765 ........................................................................ 76766 ........................................................................ 76767 ........................................................................ 76768 ........................................................................ 76769 ........................................................................ 76770 ........................................................................ 76771 ........................................................................ 76772 ........................................................................ 76773 ........................................................................ 76774 ........................................................................ 76775 ........................................................................ 76776 ........................................................................ 76777 ........................................................................ 76778 ........................................................................ 76779 ........................................................................ 76780 ........................................................................ 76781 ........................................................................ 76782 ........................................................................ 76783 ........................................................................ 76784 ........................................................................ 76785 ........................................................................ 76786 ........................................................................ 76787 ........................................................................ 76788 ........................................................................ 76789 ........................................................................ 76790 ........................................................................ 76791 ........................................................................ 76792 ........................................................................ 76793 ........................................................................ 76794 ........................................................................ 76795 ........................................................................ 76796 ........................................................................ 76797 ........................................................................ 76798 ........................................................................ 76799 ........................................................................ 76800 ........................................................................ 76801 ........................................................................ 76802 ........................................................................ 76803 ........................................................................ 76804 ........................................................................ 76805 ........................................................................ 76806 ........................................................................ 76807 ........................................................................ 76808 ........................................................................ 76809 ........................................................................ 76810 ........................................................................ 76811 ........................................................................ 76812 ........................................................................ 76813 ........................................................................ 76814 ........................................................................ 76815 ........................................................................ 76816 ........................................................................ 76817 ........................................................................ 76818 ........................................................................ 76819 ........................................................................ 76820 ........................................................................ 76821 ........................................................................ 76822 ........................................................................ 76823 ........................................................................ 76824 ........................................................................ 76825 ........................................................................ 76826 ........................................................................ 76827 ........................................................................ 76828 ........................................................................ 76829 ........................................................................ 76830 ........................................................................ 76831 ........................................................................ 76832 ........................................................................ 76833 ........................................................................ 76834 ........................................................................ 76835 ........................................................................ 76836 ........................................................................ 76837 ........................................................................ 76838 ........................................................................ 76839 ........................................................................ 76840 ........................................................................ 76841 ........................................................................ 76842 ........................................................................ 76843 ........................................................................ 76844 ........................................................................ 76845 ........................................................................ 76846 ........................................................................ 76847 ........................................................................ 76848 ........................................................................ 76849 ........................................................................ 76850 ........................................................................ 76851 ........................................................................ 76852 ........................................................................ 76853 ........................................................................ 76854 ........................................................................ 76855 ........................................................................ 76856 ........................................................................ 76857 ........................................................................ 76858 ........................................................................ 76859 ........................................................................ 76860 ........................................................................ 76861 ........................................................................ 76862 ........................................................................ 76863 ........................................................................ 76864 ........................................................................ 76865 ........................................................................ 76866 ........................................................................ 76867 ........................................................................ 76868 ........................................................................ 76869 ........................................................................ 76870 ........................................................................ 76871 ........................................................................ 76872 ........................................................................ 76873 ........................................................................ 76874 ........................................................................ 76875 ........................................................................ 76876 ........................................................................ 76877 ........................................................................ 76878 ........................................................................ 76879 ........................................................................ 76880 ........................................................................ 76881 ........................................................................ 76882 ........................................................................ 76883 ........................................................................ 76884 ........................................................................ 76885 ........................................................................ 76886 ........................................................................ 76887 ........................................................................ 76888 ........................................................................ 76889 ........................................................................ 76890 ........................................................................ 76891 ........................................................................ 76892 ........................................................................ 76893 ........................................................................ 76894 ........................................................................ 76895 ........................................................................ 76896 ........................................................................ 76897 ........................................................................ 76898 ........................................................................ 76899 ........................................................................ 76900 ........................................................................ 76901 ........................................................................ 76902 ........................................................................ 76903 ........................................................................ 76904 ........................................................................ 76905 ........................................................................ 76906 ........................................................................ 76907 ........................................................................ 76908 ........................................................................ 76909 ........................................................................ 76910 ........................................................................ 76911 ........................................................................ 76912 ........................................................................ 76913 ........................................................................ 76914 ........................................................................ 76915 ........................................................................ 76916 ........................................................................ 76917 ........................................................................ 76918 ........................................................................ 76919 ........................................................................ 76920 ........................................................................ 76921 ........................................................................ 76922 ........................................................................ 76923 ........................................................................ 76924 ........................................................................ 76925 ........................................................................ 76926 ........................................................................ 76927 ........................................................................ 76928 ........................................................................ 76929 ........................................................................ 76930 ........................................................................ 76931 ........................................................................ 76932 ........................................................................ 76933 ........................................................................ 76934 ........................................................................ 76935 ........................................................................ 76936 ........................................................................ 76937 ........................................................................ 76938 ........................................................................ 76939 ........................................................................ 76940 ........................................................................ 76941 ........................................................................ 76942 ........................................................................ 76943 ........................................................................ 76944 ........................................................................ 76945 ........................................................................ 76946 ........................................................................ 76947 ........................................................................ 76948 ........................................................................ 76949 ........................................................................ 76950 ........................................................................ 76951 ........................................................................ 76952 ........................................................................ 76953 ........................................................................ 76954 ........................................................................ 76955 ........................................................................ 76956 ........................................................................ 76957 ........................................................................ 76958 ........................................................................ 76959 ........................................................................ 76960 ........................................................................ 76961 ........................................................................ 76962 ........................................................................ 76963 ........................................................................ 76964 ........................................................................ 76965 ........................................................................ 76966 ........................................................................ 76967 ........................................................................ 76968 ........................................................................ 76969 ........................................................................ 76970 ........................................................................ 76971 ........................................................................ 76972 ........................................................................ 76973 ........................................................................ 76974 ........................................................................ 76975 ........................................................................ 76976 ........................................................................ 76977 ........................................................................ 76978 ........................................................................ 76979 ........................................................................ 76980 ........................................................................ 76981 ........................................................................ 76982 ........................................................................ 76983 ........................................................................ 76984 ........................................................................ 76985 ........................................................................ 76986 ........................................................................ 76987 ........................................................................ 76988 ........................................................................ 76989 ........................................................................ 76990 ........................................................................ 76991 ........................................................................ 76992 ........................................................................ 76993 ........................................................................ 76994 ........................................................................ 76995 ........................................................................ 76996 ........................................................................ 76997 ........................................................................ 76998 ........................................................................ 76999 ........................................................................ 77000 ........................................................................ 77001 ........................................................................ 77002 ........................................................................ 77003 ........................................................................ 77004 ........................................................................ 77005 ........................................................................ 77006 ........................................................................ 77007 ........................................................................ 77008 ........................................................................ 77009 ........................................................................ 77010 ........................................................................ 77011 ........................................................................ 77012 ........................................................................ 77013 ........................................................................ 77014 ........................................................................ 77015 ........................................................................ 77016 ........................................................................ 77017 ........................................................................ 77018 ........................................................................ 77019 ........................................................................ 77020 ........................................................................ 77021 ........................................................................ 77022 ........................................................................ 77023 ........................................................................ 77024 ........................................................................ 77025 ........................................................................ 77026 ........................................................................ 77027 ........................................................................ 77028 ........................................................................ 77029 ........................................................................ 77030 ........................................................................ 77031 ........................................................................ 77032 ........................................................................ 77033 ........................................................................ 77034 ........................................................................ 77035 ........................................................................ 77036 ........................................................................ 77037 ........................................................................ 77038 ........................................................................ 77039 ........................................................................ 77040 ........................................................................ 77041 ........................................................................ 77042 ........................................................................ 77043 ........................................................................ 77044 ........................................................................ 77045 ........................................................................ 77046 ........................................................................ 77047 ........................................................................ 77048 ........................................................................ 77049 ........................................................................ 77050 ........................................................................ 77051 ........................................................................ 77052 ........................................................................ 77053 ........................................................................ 77054 ........................................................................ 77055 ........................................................................ 77056 ........................................................................ 77057 ........................................................................ 77058 ........................................................................ 77059 ........................................................................ 77060 ........................................................................ 77061 ........................................................................ 77062 ........................................................................ 77063 ........................................................................ 77064 ........................................................................ 77065 ........................................................................ 77066 ........................................................................ 77067 ........................................................................ 77068 ........................................................................ 77069 ........................................................................ 77070 ........................................................................ 77071 ........................................................................ 77072 ........................................................................ 77073 ........................................................................ 77074 ........................................................................ 77075 ........................................................................ 77076 ........................................................................ 77077 ........................................................................ 77078 ........................................................................ 77079 ........................................................................ 77080 ........................................................................ 77081 ........................................................................ 77082 ........................................................................ 77083 ........................................................................ 77084 ........................................................................ 77085 ........................................................................ 77086 ........................................................................ 77087 ........................................................................ 77088 ........................................................................ 77089 ........................................................................ 77090 ........................................................................ 77091 ........................................................................ 77092 ........................................................................ 77093 ........................................................................ 77094 ........................................................................ 77095 ........................................................................ 77096 ........................................................................ 77097 ........................................................................ 77098 ........................................................................ 77099 ........................................................................ 77100 ........................................................................ 77101 ........................................................................ 77102 ........................................................................ 77103 ........................................................................ 77104 ........................................................................ 77105 ........................................................................ 77106 ........................................................................ 77107 ........................................................................ 77108 ........................................................................ 77109 ........................................................................ 77110 ........................................................................ 77111 ........................................................................ 77112 ........................................................................ 77113 ........................................................................ 77114 ........................................................................ 77115 ........................................................................ 77116 ........................................................................ 77117 ........................................................................ 77118 ........................................................................ 77119 ........................................................................ 77120 ........................................................................ 77121 ........................................................................ 77122 ........................................................................ 77123 ........................................................................ 77124 ........................................................................ 77125 ........................................................................ 77126 ........................................................................ 77127 ........................................................................ 77128 ........................................................................ 77129 ........................................................................ 77130 ........................................................................ 77131 ........................................................................ 77132 ........................................................................ 77133 ........................................................................ 77134 ........................................................................ 77135 ........................................................................ 77136 ........................................................................ 77137 ........................................................................ 77138 ........................................................................ 77139 ........................................................................ 77140 ........................................................................ 77141 ........................................................................ 77142 ........................................................................ 77143 ........................................................................ 77144 ........................................................................ 77145 ........................................................................ 77146 ........................................................................ 77147 ........................................................................ 77148 ........................................................................ 77149 ........................................................................ 77150 ........................................................................ 77151 ........................................................................ 77152 ........................................................................ 77153 ........................................................................ 77154 ........................................................................ 77155 ........................................................................ 77156 ........................................................................ 77157 ........................................................................ 77158 ........................................................................ 77159 ........................................................................ 77160 ........................................................................ 77161 ........................................................................ 77162 ........................................................................ 77163 ........................................................................ 77164 ........................................................................ 77165 ........................................................................ 77166 ........................................................................ 77167 ........................................................................ 77168 ........................................................................ 77169 ........................................................................ 77170 ........................................................................ 77171 ........................................................................ 77172 ........................................................................ 77173 ........................................................................ 77174 ........................................................................ 77175 ........................................................................ 77176 ........................................................................ 77177 ........................................................................ 77178 ........................................................................ 77179 ........................................................................ 77180 ........................................................................ 77181 ........................................................................ 77182 ........................................................................ 77183 ........................................................................ 77184 ........................................................................ 77185 ........................................................................ 77186 ........................................................................ 77187 ........................................................................ 77188 ........................................................................ 77189 ........................................................................ 77190 ........................................................................ 77191 ........................................................................ 77192 ........................................................................ 77193 ........................................................................ 77194 ........................................................................ 77195 ........................................................................ 77196 ........................................................................ 77197 ........................................................................ 77198 ........................................................................ 77199 ........................................................................ 77200 ........................................................................ 77201 ........................................................................ 77202 ........................................................................ 77203 ........................................................................ 77204 ........................................................................ 77205 ........................................................................ 77206 ........................................................................ 77207 ........................................................................ 77208 ........................................................................ 77209 ........................................................................ 77210 ........................................................................ 77211 ........................................................................ 77212 ........................................................................ 77213 ........................................................................ 77214 ........................................................................ 77215 ........................................................................ 77216 ........................................................................ 77217 ........................................................................ 77218 ........................................................................ 77219 ........................................................................ 77220 ........................................................................ 77221 ........................................................................ 77222 ........................................................................ 77223 ........................................................................ 77224 ........................................................................ 77225 ........................................................................ 77226 ........................................................................ 77227 ........................................................................ 77228 ........................................................................ 77229 ........................................................................ 77230 ........................................................................ 77231 ........................................................................ 77232 ........................................................................ 77233 ........................................................................ 77234 ........................................................................ 77235 ........................................................................ 77236 ........................................................................ 77237 ........................................................................ 77238 ........................................................................ 77239 ........................................................................ 77240 ........................................................................ 77241 ........................................................................ 77242 ........................................................................ 77243 ........................................................................ 77244 ........................................................................ 77245 ........................................................................ 77246 ........................................................................ 77247 ........................................................................ 77248 ........................................................................ 77249 ........................................................................ 77250 ........................................................................ 77251 ........................................................................ 77252 ........................................................................ 77253 ........................................................................ 77254 ........................................................................ 77255 ........................................................................ 77256 ........................................................................ 77257 ........................................................................ 77258 ........................................................................ 77259 ........................................................................ 77260 ........................................................................ 77261 ........................................................................ 77262 ........................................................................ 77263 ........................................................................ 77264 ........................................................................ 77265 ........................................................................ 77266 ........................................................................ 77267 ........................................................................ 77268 ........................................................................ 77269 ........................................................................ 77270 ........................................................................ 77271 ........................................................................ 77272 ........................................................................ 77273 ........................................................................ 77274 ........................................................................ 77275 ........................................................................ 77276 ........................................................................ 77277 ........................................................................ 77278 ........................................................................ 77279 ........................................................................ 77280 ........................................................................ 77281 ........................................................................ 77282 ........................................................................ 77283 ........................................................................ 77284 ........................................................................ 77285 ........................................................................ 77286 ........................................................................ 77287 ........................................................................ 77288 ........................................................................ 77289 ........................................................................ 77290 ........................................................................ 77291 ........................................................................ 77292 ........................................................................ 77293 ........................................................................ 77294 ........................................................................ 77295 ........................................................................ 77296 ........................................................................ 77297 ........................................................................ 77298 ........................................................................ 77299 ........................................................................ 77300 ........................................................................ 77301 ........................................................................ 77302 ........................................................................ 77303 ........................................................................ 77304 ........................................................................ 77305 ........................................................................ 77306 ........................................................................ 77307 ........................................................................ 77308 ........................................................................ 77309 ........................................................................ 77310 ........................................................................ 77311 ........................................................................ 77312 ........................................................................ 77313 ........................................................................ 77314 ........................................................................ 77315 ........................................................................ 77316 ........................................................................ 77317 ........................................................................ 77318 ........................................................................ 77319 ........................................................................ 77320 ........................................................................ 77321 ........................................................................ 77322 ........................................................................ 77323 ........................................................................ 77324 ........................................................................ 77325 ........................................................................ 77326 ........................................................................ 77327 ........................................................................ 77328 ........................................................................ 77329 ........................................................................ 77330 ........................................................................ 77331 ........................................................................ 77332 ........................................................................ 77333 ........................................................................ 77334 ........................................................................ 77335 ........................................................................ 77336 ........................................................................ 77337 ........................................................................ 77338 ........................................................................ 77339 ........................................................................ 77340 ........................................................................ 77341 ........................................................................ 77342 ........................................................................ 77343 ........................................................................ 77344 ........................................................................ 77345 ........................................................................ 77346 ........................................................................ 77347 ........................................................................ 77348 ........................................................................ 77349 ........................................................................ 77350 ........................................................................ 77351 ........................................................................ 77352 ........................................................................ 77353 ........................................................................ 77354 ........................................................................ 77355 ........................................................................ 77356 ........................................................................ 77357 ........................................................................ 77358 ........................................................................ 77359 ........................................................................ 77360 ........................................................................ 77361 ........................................................................ 77362 ........................................................................ 77363 ........................................................................ 77364 ........................................................................ 77365 ........................................................................ 77366 ........................................................................ 77367 ........................................................................ 77368 ........................................................................ 77369 ........................................................................ 77370 ........................................................................ 77371 ........................................................................ 77372 ........................................................................ 77373 ........................................................................ 77374 ........................................................................ 77375 ........................................................................ 77376 ........................................................................ 77377 ........................................................................ 77378 ........................................................................ 77379 ........................................................................ 77380 ........................................................................ 77381 ........................................................................ 77382 ........................................................................ 77383 ........................................................................ 77384 ........................................................................ 77385 ........................................................................ 77386 ........................................................................ 77387 ........................................................................ 77388 ........................................................................ 77389 ........................................................................ 77390 ........................................................................ 77391 ........................................................................ 77392 ........................................................................ 77393 ........................................................................ 77394 ........................................................................ 77395 ........................................................................ 77396 ........................................................................ 77397 ........................................................................ 77398 ........................................................................ 77399 ........................................................................ 77400 ........................................................................ 77401 ........................................................................ 77402 ........................................................................ 77403 ........................................................................ 77404 ........................................................................ 77405 ........................................................................ 77406 ........................................................................ 77407 ........................................................................ 77408 ........................................................................ 77409 ........................................................................ 77410 ........................................................................ 77411 ........................................................................ 77412 ........................................................................ 77413 ........................................................................ 77414 ........................................................................ 77415 ........................................................................ 77416 ........................................................................ 77417 ........................................................................ 77418 ........................................................................ 77419 ........................................................................ 77420 ........................................................................ 77421 ........................................................................ 77422 ........................................................................ 77423 ........................................................................ 77424 ........................................................................ 77425 ........................................................................ 77426 ........................................................................ 77427 ........................................................................ 77428 ........................................................................ 77429 ........................................................................ 77430 ........................................................................ 77431 ........................................................................ 77432 ........................................................................ 77433 ........................................................................ 77434 ........................................................................ 77435 ........................................................................ 77436 ........................................................................ 77437 ........................................................................ 77438 ........................................................................ 77439 ........................................................................ 77440 ........................................................................ 77441 ........................................................................ 77442 ........................................................................ 77443 ........................................................................ 77444 ........................................................................ 77445 ........................................................................ 77446 ........................................................................ 77447 ........................................................................ 77448 ........................................................................ 77449 ........................................................................ 77450 ........................................................................ 77451 ........................................................................ 77452 ........................................................................ 77453 ........................................................................ 77454 ........................................................................ 77455 ........................................................................ 77456 ........................................................................ 77457 ........................................................................ 77458 ........................................................................ 77459 ........................................................................ 77460 ........................................................................ 77461 ........................................................................ 77462 ........................................................................ 77463 ........................................................................ 77464 ........................................................................ 77465 ........................................................................ 77466 ........................................................................ 77467 ........................................................................ 77468 ........................................................................ 77469 ........................................................................ 77470 ........................................................................ 77471 ........................................................................ 77472 ........................................................................ 77473 ........................................................................ 77474 ........................................................................ 77475 ........................................................................ 77476 ........................................................................ 77477 ........................................................................ 77478 ........................................................................ 77479 ........................................................................ 77480 ........................................................................ 77481 ........................................................................ 77482 ........................................................................ 77483 ........................................................................ 77484 ........................................................................ 77485 ........................................................................ 77486 ........................................................................ 77487 ........................................................................ 77488 ........................................................................ 77489 ........................................................................ 77490 ........................................................................ 77491 ........................................................................ 77492 ........................................................................ 77493 ........................................................................ 77494 ........................................................................ 77495 ........................................................................ 77496 ........................................................................ 77497 ........................................................................ 77498 ........................................................................ 77499 ........................................................................ 77500 ........................................................................ 77501 ........................................................................ 77502 ........................................................................ 77503 ........................................................................ 77504 ........................................................................ 77505 ........................................................................ 77506 ........................................................................ 77507 ........................................................................ 77508 ........................................................................ 77509 ........................................................................ 77510 ........................................................................ 77511 ........................................................................ 77512 ........................................................................ 77513 ........................................................................ 77514 ........................................................................ 77515 ........................................................................ 77516 ........................................................................ 77517 ........................................................................ 77518 ........................................................................ 77519 ........................................................................ 77520 ........................................................................ 77521 ........................................................................ 77522 ........................................................................ 77523 ........................................................................ 77524 ........................................................................ 77525 ........................................................................ 77526 ........................................................................ 77527 ........................................................................ 77528 ........................................................................ 77529 ........................................................................ 77530 ........................................................................ 77531 ........................................................................ 77532 ........................................................................ 77533 ........................................................................ 77534 ........................................................................ 77535 ........................................................................ 77536 ........................................................................ 77537 ........................................................................ 77538 ........................................................................ 77539 ........................................................................ 77540 ........................................................................ 77541 ........................................................................ 77542 ........................................................................ 77543 ........................................................................ 77544 ........................................................................ 77545 ........................................................................ 77546 ........................................................................ 77547 ........................................................................ 77548 ........................................................................ 77549 ........................................................................ 77550 ........................................................................ 77551 ........................................................................ 77552 ........................................................................ 77553 ........................................................................ 77554 ........................................................................ 77555 ........................................................................ 77556 ........................................................................ 77557 ........................................................................ 77558 ........................................................................ 77559 ........................................................................ 77560 ........................................................................ 77561 ........................................................................ 77562 ........................................................................ 77563 ........................................................................ 77564 ........................................................................ 77565 ........................................................................ 77566 ........................................................................ 77567 ........................................................................ 77568 ........................................................................ 77569 ........................................................................ 77570 ........................................................................ 77571 ........................................................................ 77572 ........................................................................ 77573 ........................................................................ 77574 ........................................................................ 77575 ........................................................................ 77576 ........................................................................ 77577 ........................................................................ 77578 ........................................................................ 77579 ........................................................................ 77580 ........................................................................ 77581 ........................................................................ 77582 ........................................................................ 77583 ........................................................................ 77584 ........................................................................ 77585 ........................................................................ 77586 ........................................................................ 77587 ........................................................................ 77588 ........................................................................ 77589 ........................................................................ 77590 ........................................................................ 77591 ........................................................................ 77592 ........................................................................ 77593 ........................................................................ 77594 ........................................................................ 77595 ........................................................................ 77596 ........................................................................ 77597 ........................................................................ 77598 ........................................................................ 77599 ........................................................................ 77600 ........................................................................ 77601 ........................................................................ 77602 ........................................................................ 77603 ........................................................................ 77604 ........................................................................ 77605 ........................................................................ 77606 ........................................................................ 77607 ........................................................................ 77608 ........................................................................ 77609 ........................................................................ 77610 ........................................................................ 77611 ........................................................................ 77612 ........................................................................ 77613 ........................................................................ 77614 ........................................................................ 77615 ........................................................................ 77616 ........................................................................ 77617 ........................................................................ 77618 ........................................................................ 77619 ........................................................................ 77620 ........................................................................ 77621 ........................................................................ 77622 ........................................................................ 77623 ........................................................................ 77624 ........................................................................ 77625 ........................................................................ 77626 ........................................................................ 77627 ........................................................................ 77628 ........................................................................ 77629 ........................................................................ 77630 ........................................................................ 77631 ........................................................................ 77632 ........................................................................ 77633 ........................................................................ 77634 ........................................................................ 77635 ........................................................................ 77636 ........................................................................ 77637 ........................................................................ 77638 ........................................................................ 77639 ........................................................................ 77640 ........................................................................ 77641 ........................................................................ 77642 ........................................................................ 77643 ........................................................................ 77644 ........................................................................ 77645 ........................................................................ 77646 ........................................................................ 77647 ........................................................................ 77648 ........................................................................ 77649 ........................................................................ 77650 ........................................................................ 77651 ........................................................................ 77652 ........................................................................ 77653 ........................................................................ 77654 ........................................................................ 77655 ........................................................................ 77656 ........................................................................ 77657 ........................................................................ 77658 ........................................................................ 77659 ........................................................................ 77660 ........................................................................ 77661 ........................................................................ 77662 ........................................................................ 77663 ........................................................................ 77664 ........................................................................ 77665 ........................................................................ 77666 ........................................................................ 77667 ........................................................................ 77668 ........................................................................ 77669 ........................................................................ 77670 ........................................................................ 77671 ........................................................................ 77672 ........................................................................ 77673 ........................................................................ 77674 ........................................................................ 77675 ........................................................................ 77676 ........................................................................ 77677 ........................................................................ 77678 ........................................................................ 77679 ........................................................................ 77680 ........................................................................ 77681 ........................................................................ 77682 ........................................................................ 77683 ........................................................................ 77684 ........................................................................ 77685 ........................................................................ 77686 ........................................................................ 77687 ........................................................................ 77688 ........................................................................ 77689 ........................................................................ 77690 ........................................................................ 77691 ........................................................................ 77692 ........................................................................ 77693 ........................................................................ 77694 ........................................................................ 77695 ........................................................................ 77696 ........................................................................ 77697 ........................................................................ 77698 ........................................................................ 77699 ........................................................................ 77700 ........................................................................ 77701 ........................................................................ 77702 ........................................................................ 77703 ........................................................................ 77704 ........................................................................ 77705 ........................................................................ 77706 ........................................................................ 77707 ........................................................................ 77708 ........................................................................ 77709 ........................................................................ 77710 ........................................................................ 77711 ........................................................................ 77712 ........................................................................ 77713 ........................................................................ 77714 ........................................................................ 77715 ........................................................................ 77716 ........................................................................ 77717 ........................................................................ 77718 ........................................................................ 77719 ........................................................................ 77720 ........................................................................ 77721 ........................................................................ 77722 ........................................................................ 77723 ........................................................................ 77724 ........................................................................ 77725 ........................................................................ 77726 ........................................................................ 77727 ........................................................................ 77728 ........................................................................ 77729 ........................................................................ 77730 ........................................................................ 77731 ........................................................................ 77732 ........................................................................ 77733 ........................................................................ 77734 ........................................................................ 77735 ........................................................................ 77736 ........................................................................ 77737 ........................................................................ 77738 ........................................................................ 77739 ........................................................................ 77740 ........................................................................ 77741 ........................................................................ 77742 ........................................................................ 77743 ........................................................................ 77744 ........................................................................ 77745 ........................................................................ 77746 ........................................................................ 77747 ........................................................................ 77748 ........................................................................ 77749 ........................................................................ 77750 ........................................................................ 77751 ........................................................................ 77752 ........................................................................ 77753 ........................................................................ 77754 ........................................................................ 77755 ........................................................................ 77756 ........................................................................ 77757 ........................................................................ 77758 ........................................................................ 77759 ........................................................................ 77760 ........................................................................ 77761 ........................................................................ 77762 ........................................................................ 77763 ........................................................................ 77764 ........................................................................ 77765 ........................................................................ 77766 ........................................................................ 77767 ........................................................................ 77768 ........................................................................ 77769 ........................................................................ 77770 ........................................................................ 77771 ........................................................................ 77772 ........................................................................ 77773 ........................................................................ 77774 ........................................................................ 77775 ........................................................................ 77776 ........................................................................ 77777 ........................................................................ 77778 ........................................................................ 77779 ........................................................................ 77780 ........................................................................ 77781 ........................................................................ 77782 ........................................................................ 77783 ........................................................................ 77784 ........................................................................ 77785 ........................................................................ 77786 ........................................................................ 77787 ........................................................................ 77788 ........................................................................ 77789 ........................................................................ 77790 ........................................................................ 77791 ........................................................................ 77792 ........................................................................ 77793 ........................................................................ 77794 ........................................................................ 77795 ........................................................................ 77796 ........................................................................ 77797 ........................................................................ 77798 ........................................................................ 77799 ........................................................................ 77800 ........................................................................ 77801 ........................................................................ 77802 ........................................................................ 77803 ........................................................................ 77804 ........................................................................ 77805 ........................................................................ 77806 ........................................................................ 77807 ........................................................................ 77808 ........................................................................ 77809 ........................................................................ 77810 ........................................................................ 77811 ........................................................................ 77812 ........................................................................ 77813 ........................................................................ 77814 ........................................................................ 77815 ........................................................................ 77816 ........................................................................ 77817 ........................................................................ 77818 ........................................................................ 77819 ........................................................................ 77820 ........................................................................ 77821 ........................................................................ 77822 ........................................................................ 77823 ........................................................................ 77824 ........................................................................ 77825 ........................................................................ 77826 ........................................................................ 77827 ........................................................................ 77828 ........................................................................ 77829 ........................................................................ 77830 ........................................................................ 77831 ........................................................................ 77832 ........................................................................ 77833 ........................................................................ 77834 ........................................................................ 77835 ........................................................................ 77836 ........................................................................ 77837 ........................................................................ 77838 ........................................................................ 77839 ........................................................................ 77840 ........................................................................ 77841 ........................................................................ 77842 ........................................................................ 77843 ........................................................................ 77844 ........................................................................ 77845 ........................................................................ 77846 ........................................................................ 77847 ........................................................................ 77848 ........................................................................ 77849 ........................................................................ 77850 ........................................................................ 77851 ........................................................................ 77852 ........................................................................ 77853 ........................................................................ 77854 ........................................................................ 77855 ........................................................................ 77856 ........................................................................ 77857 ........................................................................ 77858 ........................................................................ 77859 ........................................................................ 77860 ........................................................................ 77861 ........................................................................ 77862 ........................................................................ 77863 ........................................................................ 77864 ........................................................................ 77865 ........................................................................ 77866 ........................................................................ 77867 ........................................................................ 77868 ........................................................................ 77869 ........................................................................ 77870 ........................................................................ 77871 ........................................................................ 77872 ........................................................................ 77873 ........................................................................ 77874 ........................................................................ 77875 ........................................................................ 77876 ........................................................................ 77877 ........................................................................ 77878 ........................................................................ 77879 ........................................................................ 77880 ........................................................................ 77881 ........................................................................ 77882 ........................................................................ 77883 ........................................................................ 77884 ........................................................................ 77885 ........................................................................ 77886 ........................................................................ 77887 ........................................................................ 77888 ........................................................................ 77889 ........................................................................ 77890 ........................................................................ 77891 ........................................................................ 77892 ........................................................................ 77893 ........................................................................ 77894 ........................................................................ 77895 ........................................................................ 77896 ........................................................................ 77897 ........................................................................ 77898 ........................................................................ 77899 ........................................................................ 77900 ........................................................................ 77901 ........................................................................ 77902 ........................................................................ 77903 ........................................................................ 77904 ........................................................................ 77905 ........................................................................ 77906 ........................................................................ 77907 ........................................................................ 77908 ........................................................................ 77909 ........................................................................ 77910 ........................................................................ 77911 ........................................................................ 77912 ........................................................................ 77913 ........................................................................ 77914 ........................................................................ 77915 ........................................................................ 77916 ........................................................................ 77917 ........................................................................ 77918 ........................................................................ 77919 ........................................................................ 77920 ........................................................................ 77921 ........................................................................ 77922 ........................................................................ 77923 ........................................................................ 77924 ........................................................................ 77925 ........................................................................ 77926 ........................................................................ 77927 ........................................................................ 77928 ........................................................................ 77929 ........................................................................ 77930 ........................................................................ 77931 ........................................................................ 77932 ........................................................................ 77933 ........................................................................ 77934 ........................................................................ 77935 ........................................................................ 77936 ........................................................................ 77937 ........................................................................ 77938 ........................................................................ 77939 ........................................................................ 77940 ........................................................................ 77941 ........................................................................ 77942 ........................................................................ 77943 ........................................................................ 77944 ........................................................................ 77945 ........................................................................ 77946 ........................................................................ 77947 ........................................................................ 77948 ........................................................................ 77949 ........................................................................ 77950 ........................................................................ 77951 ........................................................................ 77952 ........................................................................ 77953 ........................................................................ 77954 ........................................................................ 77955 ........................................................................ 77956 ........................................................................ 77957 ........................................................................ 77958 ........................................................................ 77959 ........................................................................ 77960 ........................................................................ 77961 ........................................................................ 77962 ........................................................................ 77963 ........................................................................ 77964 ........................................................................ 77965 ........................................................................ 77966 ........................................................................ 77967 ........................................................................ 77968 ........................................................................ 77969 ........................................................................ 77970 ........................................................................ 77971 ........................................................................ 77972 ........................................................................ 77973 ........................................................................ 77974 ........................................................................ 77975 ........................................................................ 77976 ........................................................................ 77977 ........................................................................ 77978 ........................................................................ 77979 ........................................................................ 77980 ........................................................................ 77981 ........................................................................ 77982 ........................................................................ 77983 ........................................................................ 77984 ........................................................................ 77985 ........................................................................ 77986 ........................................................................ 77987 ........................................................................ 77988 ........................................................................ 77989 ........................................................................ 77990 ........................................................................ 77991 ........................................................................ 77992 ........................................................................ 77993 ........................................................................ 77994 ........................................................................ 77995 ........................................................................ 77996 ........................................................................ 77997 ........................................................................ 77998 ........................................................................ 77999 ........................................................................ 78000 ........................................................................ 78001 ........................................................................ 78002 ........................................................................ 78003 ........................................................................ 78004 ........................................................................ 78005 ........................................................................ 78006 ........................................................................ 78007 ........................................................................ 78008 ........................................................................ 78009 ........................................................................ 78010 ........................................................................ 78011 ........................................................................ 78012 ........................................................................ 78013 ........................................................................ 78014 ........................................................................ 78015 ........................................................................ 78016 ........................................................................ 78017 ........................................................................ 78018 ........................................................................ 78019 ........................................................................ 78020 ........................................................................ 78021 ........................................................................ 78022 ........................................................................ 78023 ........................................................................ 78024 ........................................................................ 78025 ........................................................................ 78026 ........................................................................ 78027 ........................................................................ 78028 ........................................................................ 78029 ........................................................................ 78030 ........................................................................ 78031 ........................................................................ 78032 ........................................................................ 78033 ........................................................................ 78034 ........................................................................ 78035 ........................................................................ 78036 ........................................................................ 78037 ........................................................................ 78038 ........................................................................ 78039 ........................................................................ 78040 ........................................................................ 78041 ........................................................................ 78042 ........................................................................ 78043 ........................................................................ 78044 ........................................................................ 78045 ........................................................................ 78046 ........................................................................ 78047 ........................................................................ 78048 ........................................................................ 78049 ........................................................................ 78050 ........................................................................ 78051 ........................................................................ 78052 ........................................................................ 78053 ........................................................................ 78054 ........................................................................ 78055 ........................................................................ 78056 ........................................................................ 78057 ........................................................................ 78058 ........................................................................ 78059 ........................................................................ 78060 ........................................................................ 78061 ........................................................................ 78062 ........................................................................ 78063 ........................................................................ 78064 ........................................................................ 78065 ........................................................................ 78066 ........................................................................ 78067 ........................................................................ 78068 ........................................................................ 78069 ........................................................................ 78070 ........................................................................ 78071 ........................................................................ 78072 ........................................................................ 78073 ........................................................................ 78074 ........................................................................ 78075 ........................................................................ 78076 ........................................................................ 78077 ........................................................................ 78078 ........................................................................ 78079 ........................................................................ 78080 ........................................................................ 78081 ........................................................................ 78082 ........................................................................ 78083 ........................................................................ 78084 ........................................................................ 78085 ........................................................................ 78086 ........................................................................ 78087 ........................................................................ 78088 ........................................................................ 78089 ........................................................................ 78090 ........................................................................ 78091 ........................................................................ 78092 ........................................................................ 78093 ........................................................................ 78094 ........................................................................ 78095 ........................................................................ 78096 ........................................................................ 78097 ........................................................................ 78098 ........................................................................ 78099 ........................................................................ 78100 ........................................................................ 78101 ........................................................................ 78102 ........................................................................ 78103 ........................................................................ 78104 ........................................................................ 78105 ........................................................................ 78106 ........................................................................ 78107 ........................................................................ 78108 ........................................................................ 78109 ........................................................................ 78110 ........................................................................ 78111 ........................................................................ 78112 ........................................................................ 78113 ........................................................................ 78114 ........................................................................ 78115 ........................................................................ 78116 ........................................................................ 78117 ........................................................................ 78118 ........................................................................ 78119 ........................................................................ 78120 ........................................................................ 78121 ........................................................................ 78122 ........................................................................ 78123 ........................................................................ 78124 ........................................................................ 78125 ........................................................................ 78126 ........................................................................ 78127 ........................................................................ 78128 ........................................................................ 78129 ........................................................................ 78130 ........................................................................ 78131 ........................................................................ 78132 ........................................................................ 78133 ........................................................................ 78134 ........................................................................ 78135 ........................................................................ 78136 ........................................................................ 78137 ........................................................................ 78138 ........................................................................ 78139 ........................................................................ 78140 ........................................................................ 78141 ........................................................................ 78142 ........................................................................ 78143 ........................................................................ 78144 ........................................................................ 78145 ........................................................................ 78146 ........................................................................ 78147 ........................................................................ 78148 ........................................................................ 78149 ........................................................................ 78150 ........................................................................ 78151 ........................................................................ 78152 ........................................................................ 78153 ........................................................................ 78154 ........................................................................ 78155 ........................................................................ 78156 ........................................................................ 78157 ........................................................................ 78158 ........................................................................ 78159 ........................................................................ 78160 ........................................................................ 78161 ........................................................................ 78162 ........................................................................ 78163 ........................................................................ 78164 ........................................................................ 78165 ........................................................................ 78166 ........................................................................ 78167 ........................................................................ 78168 ........................................................................ 78169 ........................................................................ 78170 ........................................................................ 78171 ........................................................................ 78172 ........................................................................ 78173 ........................................................................ 78174 ........................................................................ 78175 ........................................................................ 78176 ........................................................................ 78177 ........................................................................ 78178 ........................................................................ 78179 ........................................................................ 78180 ........................................................................ 78181 ........................................................................ 78182 ........................................................................ 78183 ........................................................................ 78184 ........................................................................ 78185 ........................................................................ 78186 ........................................................................ 78187 ........................................................................ 78188 ........................................................................ 78189 ........................................................................ 78190 ........................................................................ 78191 ........................................................................ 78192 ........................................................................ 78193 ........................................................................ 78194 ........................................................................ 78195 ........................................................................ 78196 ........................................................................ 78197 ........................................................................ 78198 ........................................................................ 78199 ........................................................................ 78200 ........................................................................ 78201 ........................................................................ 78202 ........................................................................ 78203 ........................................................................ 78204 ........................................................................ 78205 ........................................................................ 78206 ........................................................................ 78207 ........................................................................ 78208 ........................................................................ 78209 ........................................................................ 78210 ........................................................................ 78211 ........................................................................ 78212 ........................................................................ 78213 ........................................................................ 78214 ........................................................................ 78215 ........................................................................ 78216 ........................................................................ 78217 ........................................................................ 78218 ........................................................................ 78219 ........................................................................ 78220 ........................................................................ 78221 ........................................................................ 78222 ........................................................................ 78223 ........................................................................ 78224 ........................................................................ 78225 ........................................................................ 78226 ........................................................................ 78227 ........................................................................ 78228 ........................................................................ 78229 ........................................................................ 78230 ........................................................................ 78231 ........................................................................ 78232 ........................................................................ 78233 ........................................................................ 78234 ........................................................................ 78235 ........................................................................ 78236 ........................................................................ 78237 ........................................................................ 78238 ........................................................................ 78239 ........................................................................ 78240 ........................................................................ 78241 ........................................................................ 78242 ........................................................................ 78243 ........................................................................ 78244 ........................................................................ 78245 ........................................................................ 78246 ........................................................................ 78247 ........................................................................ 78248 ........................................................................ 78249 ........................................................................ 78250 ........................................................................ 78251 ........................................................................ 78252 ........................................................................ 78253 ........................................................................ 78254 ........................................................................ 78255 ........................................................................ 78256 ........................................................................ 78257 ........................................................................ 78258 ........................................................................ 78259 ........................................................................ 78260 ........................................................................ 78261 ........................................................................ 78262 ........................................................................ 78263 ........................................................................ 78264 ........................................................................ 78265 ........................................................................ 78266 ........................................................................ 78267 ........................................................................ 78268 ........................................................................ 78269 ........................................................................ 78270 ........................................................................ 78271 ........................................................................ 78272 ........................................................................ 78273 ........................................................................ 78274 ........................................................................ 78275 ........................................................................ 78276 ........................................................................ 78277 ........................................................................ 78278 ........................................................................ 78279 ........................................................................ 78280 ........................................................................ 78281 ........................................................................ 78282 ........................................................................ 78283 ........................................................................ 78284 ........................................................................ 78285 ........................................................................ 78286 ........................................................................ 78287 ........................................................................ 78288 ........................................................................ 78289 ........................................................................ 78290 ........................................................................ 78291 ........................................................................ 78292 ........................................................................ 78293 ........................................................................ 78294 ........................................................................ 78295 ........................................................................ 78296 ........................................................................ 78297 ........................................................................ 78298 ........................................................................ 78299 ........................................................................ 78300 ........................................................................ 78301 ........................................................................ 78302 ........................................................................ 78303 ........................................................................ 78304 ........................................................................ 78305 ........................................................................ 78306 ........................................................................ 78307 ........................................................................ 78308 ........................................................................ 78309 ........................................................................ 78310 ........................................................................ 78311 ........................................................................ 78312 ........................................................................ 78313 ........................................................................ 78314 ........................................................................ 78315 ........................................................................ 78316 ........................................................................ 78317 ........................................................................ 78318 ........................................................................ 78319 ........................................................................ 78320 ........................................................................ 78321 ........................................................................ 78322 ........................................................................ 78323 ........................................................................ 78324 ........................................................................ 78325 ........................................................................ 78326 ........................................................................ 78327 ........................................................................ 78328 ........................................................................ 78329 ........................................................................ 78330 ........................................................................ 78331 ........................................................................ 78332 ........................................................................ 78333 ........................................................................ 78334 ........................................................................ 78335 ........................................................................ 78336 ........................................................................ 78337 ........................................................................ 78338 ........................................................................ 78339 ........................................................................ 78340 ........................................................................ 78341 ........................................................................ 78342 ........................................................................ 78343 ........................................................................ 78344 ........................................................................ 78345 ........................................................................ 78346 ........................................................................ 78347 ........................................................................ 78348 ........................................................................ 78349 ........................................................................ 78350 ........................................................................ 78351 ........................................................................ 78352 ........................................................................ 78353 ........................................................................ 78354 ........................................................................ 78355 ........................................................................ 78356 ........................................................................ 78357 ........................................................................ 78358 ........................................................................ 78359 ........................................................................ 78360 ........................................................................ 78361 ........................................................................ 78362 ........................................................................ 78363 ........................................................................ 78364 ........................................................................ 78365 ........................................................................ 78366 ........................................................................ 78367 ........................................................................ 78368 ........................................................................ 78369 ........................................................................ 78370 ........................................................................ 78371 ........................................................................ 78372 ........................................................................ 78373 ........................................................................ 78374 ........................................................................ 78375 ........................................................................ 78376 ........................................................................ 78377 ........................................................................ 78378 ........................................................................ 78379 ........................................................................ 78380 ........................................................................ 78381 ........................................................................ 78382 ........................................................................ 78383 ........................................................................ 78384 ........................................................................ 78385 ........................................................................ 78386 ........................................................................ 78387 ........................................................................ 78388 ........................................................................ 78389 ........................................................................ 78390 ........................................................................ 78391 ........................................................................ 78392 ........................................................................ 78393 ........................................................................ 78394 ........................................................................ 78395 ........................................................................ 78396 ........................................................................ 78397 ........................................................................ 78398 ........................................................................ 78399 ........................................................................ 78400 ........................................................................ 78401 ........................................................................ 78402 ........................................................................ 78403 ........................................................................ 78404 ........................................................................ 78405 ........................................................................ 78406 ........................................................................ 78407 ........................................................................ 78408 ........................................................................ 78409 ........................................................................ 78410 ........................................................................ 78411 ........................................................................ 78412 ........................................................................ 78413 ........................................................................ 78414 ........................................................................ 78415 ........................................................................ 78416 ........................................................................ 78417 ........................................................................ 78418 ........................................................................ 78419 ........................................................................ 78420 ........................................................................ 78421 ........................................................................ 78422 ........................................................................ 78423 ........................................................................ 78424 ........................................................................ 78425 ........................................................................ 78426 ........................................................................ 78427 ........................................................................ 78428 ........................................................................ 78429 ........................................................................ 78430 ........................................................................ 78431 ........................................................................ 78432 ........................................................................ 78433 ........................................................................ 78434 ........................................................................ 78435 ........................................................................ 78436 ........................................................................ 78437 ........................................................................ 78438 ........................................................................ 78439 ........................................................................ 78440 ........................................................................ 78441 ........................................................................ 78442 ........................................................................ 78443 ........................................................................ 78444 ........................................................................ 78445 ........................................................................ 78446 ........................................................................ 78447 ........................................................................ 78448 ........................................................................ 78449 ........................................................................ 78450 ........................................................................ 78451 ........................................................................ 78452 ........................................................................ 78453 ........................................................................ 78454 ........................................................................ 78455 ........................................................................ 78456 ........................................................................ 78457 ........................................................................ 78458 ........................................................................ 78459 ........................................................................ 78460 ........................................................................ 78461 ........................................................................ 78462 ........................................................................ 78463 ........................................................................ 78464 ........................................................................ 78465 ........................................................................ 78466 ........................................................................ 78467 ........................................................................ 78468 ........................................................................ 78469 ........................................................................ 78470 ........................................................................ 78471 ........................................................................ 78472 ........................................................................ 78473 ........................................................................ 78474 ........................................................................ 78475 ........................................................................ 78476 ........................................................................ 78477 ........................................................................ 78478 ........................................................................ 78479 ........................................................................ 78480 ........................................................................ 78481 ........................................................................ 78482 ........................................................................ 78483 ........................................................................ 78484 ........................................................................ 78485 ........................................................................ 78486 ........................................................................ 78487 ........................................................................ 78488 ........................................................................ 78489 ........................................................................ 78490 ........................................................................ 78491 ........................................................................ 78492 ........................................................................ 78493 ........................................................................ 78494 ........................................................................ 78495 ........................................................................ 78496 ........................................................................ 78497 ........................................................................ 78498 ........................................................................ 78499 ........................................................................ 78500 ........................................................................ 78501 ........................................................................ 78502 ........................................................................ 78503 ........................................................................ 78504 ........................................................................ 78505 ........................................................................ 78506 ........................................................................ 78507 ........................................................................ 78508 ........................................................................ 78509 ........................................................................ 78510 ........................................................................ 78511 ........................................................................ 78512 ........................................................................ 78513 ........................................................................ 78514 ........................................................................ 78515 ........................................................................ 78516 ........................................................................ 78517 ........................................................................ 78518 ........................................................................ 78519 ........................................................................ 78520 ........................................................................ 78521 ........................................................................ 78522 ........................................................................ 78523 ........................................................................ 78524 ........................................................................ 78525 ........................................................................ 78526 ........................................................................ 78527 ........................................................................ 78528 ........................................................................ 78529 ........................................................................ 78530 ........................................................................ 78531 ........................................................................ 78532 ........................................................................ 78533 ........................................................................ 78534 ........................................................................ 78535 ........................................................................ 78536 ........................................................................ 78537 ........................................................................ 78538 ........................................................................ 78539 ........................................................................ 78540 ........................................................................ 78541 ........................................................................ 78542 ........................................................................ 78543 ........................................................................ 78544 ........................................................................ 78545 ........................................................................ 78546 ........................................................................ 78547 ........................................................................ 78548 ........................................................................ 78549 ........................................................................ 78550 ........................................................................ 78551 ........................................................................ 78552 ........................................................................ 78553 ........................................................................ 78554 ........................................................................ 78555 ........................................................................ 78556 ........................................................................ 78557 ........................................................................ 78558 ........................................................................ 78559 ........................................................................ 78560 ........................................................................ 78561 ........................................................................ 78562 ........................................................................ 78563 ........................................................................ 78564 ........................................................................ 78565 ........................................................................ 78566 ........................................................................ 78567 ........................................................................ 78568 ........................................................................ 78569 ........................................................................ 78570 ........................................................................ 78571 ........................................................................ 78572 ........................................................................ 78573 ........................................................................ 78574 ........................................................................ 78575 ........................................................................ 78576 ........................................................................ 78577 ........................................................................ 78578 ........................................................................ 78579 ........................................................................ 78580 ........................................................................ 78581 ........................................................................ 78582 ........................................................................ 78583 ........................................................................ 78584 ........................................................................ 78585 ........................................................................ 78586 ........................................................................ 78587 ........................................................................ 78588 ........................................................................ 78589 ........................................................................ 78590 ........................................................................ 78591 ........................................................................ 78592 ........................................................................ 78593 ........................................................................ 78594 ........................................................................ 78595 ........................................................................ 78596 ........................................................................ 78597 ........................................................................ 78598 ........................................................................ 78599 ........................................................................ 78600 ........................................................................ 78601 ........................................................................ 78602 ........................................................................ 78603 ........................................................................ 78604 ........................................................................ 78605 ........................................................................ 78606 ........................................................................ 78607 ........................................................................ 78608 ........................................................................ 78609 ........................................................................ 78610 ........................................................................ 78611 ........................................................................ 78612 ........................................................................ 78613 ........................................................................ 78614 ........................................................................ 78615 ........................................................................ 78616 ........................................................................ 78617 ........................................................................ 78618 ........................................................................ 78619 ........................................................................ 78620 ........................................................................ 78621 ........................................................................ 78622 ........................................................................ 78623 ........................................................................ 78624 ........................................................................ 78625 ........................................................................ 78626 ........................................................................ 78627 ........................................................................ 78628 ........................................................................ 78629 ........................................................................ 78630 ........................................................................ 78631 ........................................................................ 78632 ........................................................................ 78633 ........................................................................ 78634 ........................................................................ 78635 ........................................................................ 78636 ........................................................................ 78637 ........................................................................ 78638 ........................................................................ 78639 ........................................................................ 78640 ........................................................................ 78641 ........................................................................ 78642 ........................................................................ 78643 ........................................................................ 78644 ........................................................................ 78645 ........................................................................ 78646 ........................................................................ 78647 ........................................................................ 78648 ........................................................................ 78649 ........................................................................ 78650 ........................................................................ 78651 ........................................................................ 78652 ........................................................................ 78653 ........................................................................ 78654 ........................................................................ 78655 ........................................................................ 78656 ........................................................................ 78657 ........................................................................ 78658 ........................................................................ 78659 ........................................................................ 78660 ........................................................................ 78661 ........................................................................ 78662 ........................................................................ 78663 ........................................................................ 78664 ........................................................................ 78665 ........................................................................ 78666 ........................................................................ 78667 ........................................................................ 78668 ........................................................................ 78669 ........................................................................ 78670 ........................................................................ 78671 ........................................................................ 78672 ........................................................................ 78673 ........................................................................ 78674 ........................................................................ 78675 ........................................................................ 78676 ........................................................................ 78677 ........................................................................ 78678 ........................................................................ 78679 ........................................................................ 78680 ........................................................................ 78681 ........................................................................ 78682 ........................................................................ 78683 ........................................................................ 78684 ........................................................................ 78685 ........................................................................ 78686 ........................................................................ 78687 ........................................................................ 78688 ........................................................................ 78689 ........................................................................ 78690 ........................................................................ 78691 ........................................................................ 78692 ........................................................................ 78693 ........................................................................ 78694 ........................................................................ 78695 ........................................................................ 78696 ........................................................................ 78697 ........................................................................ 78698 ........................................................................ 78699 ........................................................................ 78700 ........................................................................ 78701 ........................................................................ 78702 ........................................................................ 78703 ........................................................................ 78704 ........................................................................ 78705 ........................................................................ 78706 ........................................................................ 78707 ........................................................................ 78708 ........................................................................ 78709 ........................................................................ 78710 ........................................................................ 78711 ........................................................................ 78712 ........................................................................ 78713 ........................................................................ 78714 ........................................................................ 78715 ........................................................................ 78716 ........................................................................ 78717 ........................................................................ 78718 ........................................................................ 78719 ........................................................................ 78720 ........................................................................ 78721 ........................................................................ 78722 ........................................................................ 78723 ........................................................................ 78724 ........................................................................ 78725 ........................................................................ 78726 ........................................................................ 78727 ........................................................................ 78728 ........................................................................ 78729 ........................................................................ 78730 ........................................................................ 78731 ........................................................................ 78732 ........................................................................ 78733 ........................................................................ 78734 ........................................................................ 78735 ........................................................................ 78736 ........................................................................ 78737 ........................................................................ 78738 ........................................................................ 78739 ........................................................................ 78740 ........................................................................ 78741 ........................................................................ 78742 ........................................................................ 78743 ........................................................................ 78744 ........................................................................ 78745 ........................................................................ 78746 ........................................................................ 78747 ........................................................................ 78748 ........................................................................ 78749 ........................................................................ 78750 ........................................................................ 78751 ........................................................................ 78752 ........................................................................ 78753 ........................................................................ 78754 ........................................................................ 78755 ........................................................................ 78756 ........................................................................ 78757 ........................................................................ 78758 ........................................................................ 78759 ........................................................................ 78760 ........................................................................ 78761 ........................................................................ 78762 ........................................................................ 78763 ........................................................................ 78764 ........................................................................ 78765 ........................................................................ 78766 ........................................................................ 78767 ........................................................................ 78768 ........................................................................ 78769 ........................................................................ 78770 ........................................................................ 78771 ........................................................................ 78772 ........................................................................ 78773 ........................................................................ 78774 ........................................................................ 78775 ........................................................................ 78776 ........................................................................ 78777 ........................................................................ 78778 ........................................................................ 78779 ........................................................................ 78780 ........................................................................ 78781 ........................................................................ 78782 ........................................................................ 78783 ........................................................................ 78784 ........................................................................ 78785 ........................................................................ 78786 ........................................................................ 78787 ........................................................................ 78788 ........................................................................ 78789 ........................................................................ 78790 ........................................................................ 78791 ........................................................................ 78792 ........................................................................ 78793 ........................................................................ 78794 ........................................................................ 78795 ........................................................................ 78796 ........................................................................ 78797 ........................................................................ 78798 ........................................................................ 78799 ........................................................................ 78800 ........................................................................ 78801 ........................................................................ 78802 ........................................................................ 78803 ........................................................................ 78804 ........................................................................ 78805 ........................................................................ 78806 ........................................................................ 78807 ........................................................................ 78808 ........................................................................ 78809 ........................................................................ 78810 ........................................................................ 78811 ........................................................................ 78812 ........................................................................ 78813 ........................................................................ 78814 ........................................................................ 78815 ........................................................................ 78816 ........................................................................ 78817 ........................................................................ 78818 ........................................................................ 78819 ........................................................................ 78820 ........................................................................ 78821 ........................................................................ 78822 ........................................................................ 78823 ........................................................................ 78824 ........................................................................ 78825 ........................................................................ 78826 ........................................................................ 78827 ........................................................................ 78828 ........................................................................ 78829 ........................................................................ 78830 ........................................................................ 78831 ........................................................................ 78832 ........................................................................ 78833 ........................................................................ 78834 ........................................................................ 78835 ........................................................................ 78836 ........................................................................ 78837 ........................................................................ 78838 ........................................................................ 78839 ........................................................................ 78840 ........................................................................ 78841 ........................................................................ 78842 ........................................................................ 78843 ........................................................................ 78844 ........................................................................ 78845 ........................................................................ 78846 ........................................................................ 78847 ........................................................................ 78848 ........................................................................ 78849 ........................................................................ 78850 ........................................................................ 78851 ........................................................................ 78852 ........................................................................ 78853 ........................................................................ 78854 ........................................................................ 78855 ........................................................................ 78856 ........................................................................ 78857 ........................................................................ 78858 ........................................................................ 78859 ........................................................................ 78860 ........................................................................ 78861 ........................................................................ 78862 ........................................................................ 78863 ........................................................................ 78864 ........................................................................ 78865 ........................................................................ 78866 ........................................................................ 78867 ........................................................................ 78868 ........................................................................ 78869 ........................................................................ 78870 ........................................................................ 78871 ........................................................................ 78872 ........................................................................ 78873 ........................................................................ 78874 ........................................................................ 78875 ........................................................................ 78876 ........................................................................ 78877 ........................................................................ 78878 ........................................................................ 78879 ........................................................................ 78880 ........................................................................ 78881 ........................................................................ 78882 ........................................................................ 78883 ........................................................................ 78884 ........................................................................ 78885 ........................................................................ 78886 ........................................................................ 78887 ........................................................................ 78888 ........................................................................ 78889 ........................................................................ 78890 ........................................................................ 78891 ........................................................................ 78892 ........................................................................ 78893 ........................................................................ 78894 ........................................................................ 78895 ........................................................................ 78896 ........................................................................ 78897 ........................................................................ 78898 ........................................................................ 78899 ........................................................................ 78900 ........................................................................ 78901 ........................................................................ 78902 ........................................................................ 78903 ........................................................................ 78904 ........................................................................ 78905 ........................................................................ 78906 ........................................................................ 78907 ........................................................................ 78908 ........................................................................ 78909 ........................................................................ 78910 ........................................................................ 78911 ........................................................................ 78912 ........................................................................ 78913 ........................................................................ 78914 ........................................................................ 78915 ........................................................................ 78916 ........................................................................ 78917 ........................................................................ 78918 ........................................................................ 78919 ........................................................................ 78920 ........................................................................ 78921 ........................................................................ 78922 ........................................................................ 78923 ........................................................................ 78924 ........................................................................ 78925 ........................................................................ 78926 ........................................................................ 78927 ........................................................................ 78928 ........................................................................ 78929 ........................................................................ 78930 ........................................................................ 78931 ........................................................................ 78932 ........................................................................ 78933 ........................................................................ 78934 ........................................................................ 78935 ........................................................................ 78936 ........................................................................ 78937 ........................................................................ 78938 ........................................................................ 78939 ........................................................................ 78940 ........................................................................ 78941 ........................................................................ 78942 ........................................................................ 78943 ........................................................................ 78944 ........................................................................ 78945 ........................................................................ 78946 ........................................................................ 78947 ........................................................................ 78948 ........................................................................ 78949 ........................................................................ 78950 ........................................................................ 78951 ........................................................................ 78952 ........................................................................ 78953 ........................................................................ 78954 ........................................................................ 78955 ........................................................................ 78956 ........................................................................ 78957 ........................................................................ 78958 ........................................................................ 78959 ........................................................................ 78960 ........................................................................ 78961 ........................................................................ 78962 ........................................................................ 78963 ........................................................................ 78964 ........................................................................ 78965 ........................................................................ 78966 ........................................................................ 78967 ........................................................................ 78968 ........................................................................ 78969 ........................................................................ 78970 ........................................................................ 78971 ........................................................................ 78972 ........................................................................ 78973 ........................................................................ 78974 ........................................................................ 78975 ........................................................................ 78976 ........................................................................ 78977 ........................................................................ 78978 ........................................................................ 78979 ........................................................................ 78980 ........................................................................ 78981 ........................................................................ 78982 ........................................................................ 78983 ........................................................................ 78984 ........................................................................ 78985 ........................................................................ 78986 ........................................................................ 78987 ........................................................................ 78988 ........................................................................ 78989 ........................................................................ 78990 ........................................................................ 78991 ........................................................................ 78992 ........................................................................ 78993 ........................................................................ 78994 ........................................................................ 78995 ........................................................................ 78996 ........................................................................ 78997 ........................................................................ 78998 ........................................................................ 78999 ........................................................................ 79000 ........................................................................ 79001 ........................................................................ 79002 ........................................................................ 79003 ........................................................................ 79004 ........................................................................ 79005 ........................................................................ 79006 ........................................................................ 79007 ........................................................................ 79008 ........................................................................ 79009 ........................................................................ 79010 ........................................................................ 79011 ........................................................................ 79012 ........................................................................ 79013 ........................................................................ 79014 ........................................................................ 79015 ........................................................................ 79016 ........................................................................ 79017 ........................................................................ 79018 ........................................................................ 79019 ........................................................................ 79020 ........................................................................ 79021 ........................................................................ 79022 ........................................................................ 79023 ........................................................................ 79024 ........................................................................ 79025 ........................................................................ 79026 ........................................................................ 79027 ........................................................................ 79028 ........................................................................ 79029 ........................................................................ 79030 ........................................................................ 79031 ........................................................................ 79032 ........................................................................ 79033 ........................................................................ 79034 ........................................................................ 79035 ........................................................................ 79036 ........................................................................ 79037 ........................................................................ 79038 ........................................................................ 79039 ........................................................................ 79040 ........................................................................ 79041 ........................................................................ 79042 ........................................................................ 79043 ........................................................................ 79044 ........................................................................ 79045 ........................................................................ 79046 ........................................................................ 79047 ........................................................................ 79048 ........................................................................ 79049 ........................................................................ 79050 ........................................................................ 79051 ........................................................................ 79052 ........................................................................ 79053 ........................................................................ 79054 ........................................................................ 79055 ........................................................................ 79056 ........................................................................ 79057 ........................................................................ 79058 ........................................................................ 79059 ........................................................................ 79060 ........................................................................ 79061 ........................................................................ 79062 ........................................................................ 79063 ........................................................................ 79064 ........................................................................ 79065 ........................................................................ 79066 ........................................................................ 79067 ........................................................................ 79068 ........................................................................ 79069 ........................................................................ 79070 ........................................................................ 79071 ........................................................................ 79072 ........................................................................ 79073 ........................................................................ 79074 ........................................................................ 79075 ........................................................................ 79076 ........................................................................ 79077 ........................................................................ 79078 ........................................................................ 79079 ........................................................................ 79080 ........................................................................ 79081 ........................................................................ 79082 ........................................................................ 79083 ........................................................................ 79084 ........................................................................ 79085 ........................................................................ 79086 ........................................................................ 79087 ........................................................................ 79088 ........................................................................ 79089 ........................................................................ 79090 ........................................................................ 79091 ........................................................................ 79092 ........................................................................ 79093 ........................................................................ 79094 ........................................................................ 79095 ........................................................................ 79096 ........................................................................ 79097 ........................................................................ 79098 ........................................................................ 79099 ........................................................................ 79100 ........................................................................ 79101 ........................................................................ 79102 ........................................................................ 79103 ........................................................................ 79104 ........................................................................ 79105 ........................................................................ 79106 ........................................................................ 79107 ........................................................................ 79108 ........................................................................ 79109 ........................................................................ 79110 ........................................................................ 79111 ........................................................................ 79112 ........................................................................ 79113 ........................................................................ 79114 ........................................................................ 79115 ........................................................................ 79116 ........................................................................ 79117 ........................................................................ 79118 ........................................................................ 79119 ........................................................................ 79120 ........................................................................ 79121 ........................................................................ 79122 ........................................................................ 79123 ........................................................................ 79124 ........................................................................ 79125 ........................................................................ 79126 ........................................................................ 79127 ........................................................................ 79128 ........................................................................ 79129 ........................................................................ 79130 ........................................................................ 79131 ........................................................................ 79132 ........................................................................ 79133 ........................................................................ 79134 ........................................................................ 79135 ........................................................................ 79136 ........................................................................ 79137 ........................................................................ 79138 ........................................................................ 79139 ........................................................................ 79140 ........................................................................ 79141 ........................................................................ 79142 ........................................................................ 79143 ........................................................................ 79144 ........................................................................ 79145 ........................................................................ 79146 ........................................................................ 79147 ........................................................................ 79148 ........................................................................ 79149 ........................................................................ 79150 ........................................................................ 79151 ........................................................................ 79152 ........................................................................ 79153 ........................................................................ 79154 ........................................................................ 79155 ........................................................................ 79156 ........................................................................ 79157 ........................................................................ 79158 ........................................................................ 79159 ........................................................................ 79160 ........................................................................ 79161 ........................................................................ 79162 ........................................................................ 79163 ........................................................................ 79164 ........................................................................ 79165 ........................................................................ 79166 ........................................................................ 79167 ........................................................................ 79168 ........................................................................ 79169 ........................................................................ 79170 ........................................................................ 79171 ........................................................................ 79172 ........................................................................ 79173 ........................................................................ 79174 ........................................................................ 79175 ........................................................................ 79176 ........................................................................ 79177 ........................................................................ 79178 ........................................................................ 79179 ........................................................................ 79180 ........................................................................ 79181 ........................................................................ 79182 ........................................................................ 79183 ........................................................................ 79184 ........................................................................ 79185 ........................................................................ 79186 ........................................................................ 79187 ........................................................................ 79188 ........................................................................ 79189 ........................................................................ 79190 ........................................................................ 79191 ........................................................................ 79192 ........................................................................ 79193 ........................................................................ 79194 ........................................................................ 79195 ........................................................................ 79196 ........................................................................ 79197 ........................................................................ 79198 ........................................................................ 79199 ........................................................................ 79200 ........................................................................ 79201 ........................................................................ 79202 ........................................................................ 79203 ........................................................................ 79204 ........................................................................ 79205 ........................................................................ 79206 ........................................................................ 79207 ........................................................................ 79208 ........................................................................ 79209 ........................................................................ 79210 ........................................................................ 79211 ........................................................................ 79212 ........................................................................ 79213 ........................................................................ 79214 ........................................................................ 79215 ........................................................................ 79216 ........................................................................ 79217 ........................................................................ 79218 ........................................................................ 79219 ........................................................................ 79220 ........................................................................ 79221 ........................................................................ 79222 ........................................................................ 79223 ........................................................................ 79224 ........................................................................ 79225 ........................................................................ 79226 ........................................................................ 79227 ........................................................................ 79228 ........................................................................ 79229 ........................................................................ 79230 ........................................................................ 79231 ........................................................................ 79232 ........................................................................ 79233 ........................................................................ 79234 ........................................................................ 79235 ........................................................................ 79236 ........................................................................ 79237 ........................................................................ 79238 ........................................................................ 79239 ........................................................................ 79240 ........................................................................ 79241 ........................................................................ 79242 ........................................................................ 79243 ........................................................................ 79244 ........................................................................ 79245 ........................................................................ 79246 ........................................................................ 79247 ........................................................................ 79248 ........................................................................ 79249 ........................................................................ 79250 ........................................................................ 79251 ........................................................................ 79252 ........................................................................ 79253 ........................................................................ 79254 ........................................................................ 79255 ........................................................................ 79256 ........................................................................ 79257 ........................................................................ 79258 ........................................................................ 79259 ........................................................................ 79260 ........................................................................ 79261 ........................................................................ 79262 ........................................................................ 79263 ........................................................................ 79264 ........................................................................ 79265 ........................................................................ 79266 ........................................................................ 79267 ........................................................................ 79268 ........................................................................ 79269 ........................................................................ 79270 ........................................................................ 79271 ........................................................................ 79272 ........................................................................ 79273 ........................................................................ 79274 ........................................................................ 79275 ........................................................................ 79276 ........................................................................ 79277 ........................................................................ 79278 ........................................................................ 79279 ........................................................................ 79280 ........................................................................ 79281 ........................................................................ 79282 ........................................................................ 79283 ........................................................................ 79284 ........................................................................ 79285 ........................................................................ 79286 ........................................................................ 79287 ........................................................................ 79288 ........................................................................ 79289 ........................................................................ 79290 ........................................................................ 79291 ........................................................................ 79292 ........................................................................ 79293 ........................................................................ 79294 ........................................................................ 79295 ........................................................................ 79296 ........................................................................ 79297 ........................................................................ 79298 ........................................................................ 79299 ........................................................................ 79300 ........................................................................ 79301 ........................................................................ 79302 ........................................................................ 79303 ........................................................................ 79304 ........................................................................ 79305 ........................................................................ 79306 ........................................................................ 79307 ........................................................................ 79308 ........................................................................ 79309 ........................................................................ 79310 ........................................................................ 79311 ........................................................................ 79312 ........................................................................ 79313 ........................................................................ 79314 ........................................................................ 79315 ........................................................................ 79316 ........................................................................ 79317 ........................................................................ 79318 ........................................................................ 79319 ........................................................................ 79320 ........................................................................ 79321 ........................................................................ 79322 ........................................................................ 79323 ........................................................................ 79324 ........................................................................ 79325 ........................................................................ 79326 ........................................................................ 79327 ........................................................................ 79328 ........................................................................ 79329 ........................................................................ 79330 ........................................................................ 79331 ........................................................................ 79332 ........................................................................ 79333 ........................................................................ 79334 ........................................................................ 79335 ........................................................................ 79336 ........................................................................ 79337 ........................................................................ 79338 ........................................................................ 79339 ........................................................................ 79340 ........................................................................ 79341 ........................................................................ 79342 ........................................................................ 79343 ........................................................................ 79344 ........................................................................ 79345 ........................................................................ 79346 ........................................................................ 79347 ........................................................................ 79348 ........................................................................ 79349 ........................................................................ 79350 ........................................................................ 79351 ........................................................................ 79352 ........................................................................ 79353 ........................................................................ 79354 ........................................................................ 79355 ........................................................................ 79356 ........................................................................ 79357 ........................................................................ 79358 ........................................................................ 79359 ........................................................................ 79360 ........................................................................ 79361 ........................................................................ 79362 ........................................................................ 79363 ........................................................................ 79364 ........................................................................ 79365 ........................................................................ 79366 ........................................................................ 79367 ........................................................................ 79368 ........................................................................ 79369 ........................................................................ 79370 ........................................................................ 79371 ........................................................................ 79372 ........................................................................ 79373 ........................................................................ 79374 ........................................................................ 79375 ........................................................................ 79376 ........................................................................ 79377 ........................................................................ 79378 ........................................................................ 79379 ........................................................................ 79380 ........................................................................ 79381 ........................................................................ 79382 ........................................................................ 79383 ........................................................................ 79384 ........................................................................ 79385 ........................................................................ 79386 ........................................................................ 79387 ........................................................................ 79388 ........................................................................ 79389 ........................................................................ 79390 ........................................................................ 79391 ........................................................................ 79392 ........................................................................ 79393 ........................................................................ 79394 ........................................................................ 79395 ........................................................................ 79396 ........................................................................ 79397 ........................................................................ 79398 ........................................................................ 79399 ........................................................................ 79400 ........................................................................ 79401 ........................................................................ 79402 ........................................................................ 79403 ........................................................................ 79404 ........................................................................ 79405 ........................................................................ 79406 ........................................................................ 79407 ........................................................................ 79408 ........................................................................ 79409 ........................................................................ 79410 ........................................................................ 79411 ........................................................................ 79412 ........................................................................ 79413 ........................................................................ 79414 ........................................................................ 79415 ........................................................................ 79416 ........................................................................ 79417 ........................................................................ 79418 ........................................................................ 79419 ........................................................................ 79420 ........................................................................ 79421 ........................................................................ 79422 ........................................................................ 79423 ........................................................................ 79424 ........................................................................ 79425 ........................................................................ 79426 ........................................................................ 79427 ........................................................................ 79428 ........................................................................ 79429 ........................................................................ 79430 ........................................................................ 79431 ........................................................................ 79432 ........................................................................ 79433 ........................................................................ 79434 ........................................................................ 79435 ........................................................................ 79436 ........................................................................ 79437 ........................................................................ 79438 ........................................................................ 79439 ........................................................................ 79440 ........................................................................ 79441 ........................................................................ 79442 ........................................................................ 79443 ........................................................................ 79444 ........................................................................ 79445 ........................................................................ 79446 ........................................................................ 79447 ........................................................................ 79448 ........................................................................ 79449 ........................................................................ 79450 ........................................................................ 79451 ........................................................................ 79452 ........................................................................ 79453 ........................................................................ 79454 ........................................................................ 79455 ........................................................................ 79456 ........................................................................ 79457 ........................................................................ 79458 ........................................................................ 79459 ........................................................................ 79460 ........................................................................ 79461 ........................................................................ 79462 ........................................................................ 79463 ........................................................................ 79464 ........................................................................ 79465 ........................................................................ 79466 ........................................................................ 79467 ........................................................................ 79468 ........................................................................ 79469 ........................................................................ 79470 ........................................................................ 79471 ........................................................................ 79472 ........................................................................ 79473 ........................................................................ 79474 ........................................................................ 79475 ........................................................................ 79476 ........................................................................ 79477 ........................................................................ 79478 ........................................................................ 79479 ........................................................................ 79480 ........................................................................ 79481 ........................................................................ 79482 ........................................................................ 79483 ........................................................................ 79484 ........................................................................ 79485 ........................................................................ 79486 ........................................................................ 79487 ........................................................................ 79488 ........................................................................ 79489 ........................................................................ 79490 ........................................................................ 79491 ........................................................................ 79492 ........................................................................ 79493 ........................................................................ 79494 ........................................................................ 79495 ........................................................................ 79496 ........................................................................ 79497 ........................................................................ 79498 ........................................................................ 79499 ........................................................................ 79500 ........................................................................ 79501 ........................................................................ 79502 ........................................................................ 79503 ........................................................................ 79504 ........................................................................ 79505 ........................................................................ 79506 ........................................................................ 79507 ........................................................................ 79508 ........................................................................ 79509 ........................................................................ 79510 ........................................................................ 79511 ........................................................................ 79512 ........................................................................ 79513 ........................................................................ 79514 ........................................................................ 79515 ........................................................................ 79516 ........................................................................ 79517 ........................................................................ 79518 ........................................................................ 79519 ........................................................................ 79520 ........................................................................ 79521 ........................................................................ 79522 ........................................................................ 79523 ........................................................................ 79524 ........................................................................ 79525 ........................................................................ 79526 ........................................................................ 79527 ........................................................................ 79528 ........................................................................ 79529 ........................................................................ 79530 ........................................................................ 79531 ........................................................................ 79532 ........................................................................ 79533 ........................................................................ 79534 ........................................................................ 79535 ........................................................................ 79536 ........................................................................ 79537 ........................................................................ 79538 ........................................................................ 79539 ........................................................................ 79540 ........................................................................ 79541 ........................................................................ 79542 ........................................................................ 79543 ........................................................................ 79544 ........................................................................ 79545 ........................................................................ 79546 ........................................................................ 79547 ........................................................................ 79548 ........................................................................ 79549 ........................................................................ 79550 ........................................................................ 79551 ........................................................................ 79552 ........................................................................ 79553 ........................................................................ 79554 ........................................................................ 79555 ........................................................................ 79556 ........................................................................ 79557 ........................................................................ 79558 ........................................................................ 79559 ........................................................................ 79560 ........................................................................ 79561 ........................................................................ 79562 ........................................................................ 79563 ........................................................................ 79564 ........................................................................ 79565 ........................................................................ 79566 ........................................................................ 79567 ........................................................................ 79568 ........................................................................ 79569 ........................................................................ 79570 ........................................................................ 79571 ........................................................................ 79572 ........................................................................ 79573 ........................................................................ 79574 ........................................................................ 79575 ........................................................................ 79576 ........................................................................ 79577 ........................................................................ 79578 ........................................................................ 79579 ........................................................................ 79580 ........................................................................ 79581 ........................................................................ 79582 ........................................................................ 79583 ........................................................................ 79584 ........................................................................ 79585 ........................................................................ 79586 ........................................................................ 79587 ........................................................................ 79588 ........................................................................ 79589 ........................................................................ 79590 ........................................................................ 79591 ........................................................................ 79592 ........................................................................ 79593 ........................................................................ 79594 ........................................................................ 79595 ........................................................................ 79596 ........................................................................ 79597 ........................................................................ 79598 ........................................................................ 79599 ........................................................................ 79600 ........................................................................ 79601 ........................................................................ 79602 ........................................................................ 79603 ........................................................................ 79604 ........................................................................ 79605 ........................................................................ 79606 ........................................................................ 79607 ........................................................................ 79608 ........................................................................ 79609 ........................................................................ 79610 ........................................................................ 79611 ........................................................................ 79612 ........................................................................ 79613 ........................................................................ 79614 ........................................................................ 79615 ........................................................................ 79616 ........................................................................ 79617 ........................................................................ 79618 ........................................................................ 79619 ........................................................................ 79620 ........................................................................ 79621 ........................................................................ 79622 ........................................................................ 79623 ........................................................................ 79624 ........................................................................ 79625 ........................................................................ 79626 ........................................................................ 79627 ........................................................................ 79628 ........................................................................ 79629 ........................................................................ 79630 ........................................................................ 79631 ........................................................................ 79632 ........................................................................ 79633 ........................................................................ 79634 ........................................................................ 79635 ........................................................................ 79636 ........................................................................ 79637 ........................................................................ 79638 ........................................................................ 79639 ........................................................................ 79640 ........................................................................ 79641 ........................................................................ 79642 ........................................................................ 79643 ........................................................................ 79644 ........................................................................ 79645 ........................................................................ 79646 ........................................................................ 79647 ........................................................................ 79648 ........................................................................ 79649 ........................................................................ 79650 ........................................................................ 79651 ........................................................................ 79652 ........................................................................ 79653 ........................................................................ 79654 ........................................................................ 79655 ........................................................................ 79656 ........................................................................ 79657 ........................................................................ 79658 ........................................................................ 79659 ........................................................................ 79660 ........................................................................ 79661 ........................................................................ 79662 ........................................................................ 79663 ........................................................................ 79664 ........................................................................ 79665 ........................................................................ 79666 ........................................................................ 79667 ........................................................................ 79668 ........................................................................ 79669 ........................................................................ 79670 ........................................................................ 79671 ........................................................................ 79672 ........................................................................ 79673 ........................................................................ 79674 ........................................................................ 79675 ........................................................................ 79676 ........................................................................ 79677 ........................................................................ 79678 ........................................................................ 79679 ........................................................................ 79680 ........................................................................ 79681 ........................................................................ 79682 ........................................................................ 79683 ........................................................................ 79684 ........................................................................ 79685 ........................................................................ 79686 ........................................................................ 79687 ........................................................................ 79688 ........................................................................ 79689 ........................................................................ 79690 ........................................................................ 79691 ........................................................................ 79692 ........................................................................ 79693 ........................................................................ 79694 ........................................................................ 79695 ........................................................................ 79696 ........................................................................ 79697 ........................................................................ 79698 ........................................................................ 79699 ........................................................................ 79700 ........................................................................ 79701 ........................................................................ 79702 ........................................................................ 79703 ........................................................................ 79704 ........................................................................ 79705 ........................................................................ 79706 ........................................................................ 79707 ........................................................................ 79708 ........................................................................ 79709 ........................................................................ 79710 ........................................................................ 79711 ........................................................................ 79712 ........................................................................ 79713 ........................................................................ 79714 ........................................................................ 79715 ........................................................................ 79716 ........................................................................ 79717 ........................................................................ 79718 ........................................................................ 79719 ........................................................................ 79720 ........................................................................ 79721 ........................................................................ 79722 ........................................................................ 79723 ........................................................................ 79724 ........................................................................ 79725 ........................................................................ 79726 ........................................................................ 79727 ........................................................................ 79728 ........................................................................ 79729 ........................................................................ 79730 ........................................................................ 79731 ........................................................................ 79732 ........................................................................ 79733 ........................................................................ 79734 ........................................................................ 79735 ........................................................................ 79736 ........................................................................ 79737 ........................................................................ 79738 ........................................................................ 79739 ........................................................................ 79740 ........................................................................ 79741 ........................................................................ 79742 ........................................................................ 79743 ........................................................................ 79744 ........................................................................ 79745 ........................................................................ 79746 ........................................................................ 79747 ........................................................................ 79748 ........................................................................ 79749 ........................................................................ 79750 ........................................................................ 79751 ........................................................................ 79752 ........................................................................ 79753 ........................................................................ 79754 ........................................................................ 79755 ........................................................................ 79756 ........................................................................ 79757 ........................................................................ 79758 ........................................................................ 79759 ........................................................................ 79760 ........................................................................ 79761 ........................................................................ 79762 ........................................................................ 79763 ........................................................................ 79764 ........................................................................ 79765 ........................................................................ 79766 ........................................................................ 79767 ........................................................................ 79768 ........................................................................ 79769 ........................................................................ 79770 ........................................................................ 79771 ........................................................................ 79772 ........................................................................ 79773 ........................................................................ 79774 ........................................................................ 79775 ........................................................................ 79776 ........................................................................ 79777 ........................................................................ 79778 ........................................................................ 79779 ........................................................................ 79780 ........................................................................ 79781 ........................................................................ 79782 ........................................................................ 79783 ........................................................................ 79784 ........................................................................ 79785 ........................................................................ 79786 ........................................................................ 79787 ........................................................................ 79788 ........................................................................ 79789 ........................................................................ 79790 ........................................................................ 79791 ........................................................................ 79792 ........................................................................ 79793 ........................................................................ 79794 ........................................................................ 79795 ........................................................................ 79796 ........................................................................ 79797 ........................................................................ 79798 ........................................................................ 79799 ........................................................................ 79800 ........................................................................ 79801 ........................................................................ 79802 ........................................................................ 79803 ........................................................................ 79804 ........................................................................ 79805 ........................................................................ 79806 ........................................................................ 79807 ........................................................................ 79808 ........................................................................ 79809 ........................................................................ 79810 ........................................................................ 79811 ........................................................................ 79812 ........................................................................ 79813 ........................................................................ 79814 ........................................................................ 79815 ........................................................................ 79816 ........................................................................ 79817 ........................................................................ 79818 ........................................................................ 79819 ........................................................................ 79820 ........................................................................ 79821 ........................................................................ 79822 ........................................................................ 79823 ........................................................................ 79824 ........................................................................ 79825 ........................................................................ 79826 ........................................................................ 79827 ........................................................................ 79828 ........................................................................ 79829 ........................................................................ 79830 ........................................................................ 79831 ........................................................................ 79832 ........................................................................ 79833 ........................................................................ 79834 ........................................................................ 79835 ........................................................................ 79836 ........................................................................ 79837 ........................................................................ 79838 ........................................................................ 79839 ........................................................................ 79840 ........................................................................ 79841 ........................................................................ 79842 ........................................................................ 79843 ........................................................................ 79844 ........................................................................ 79845 ........................................................................ 79846 ........................................................................ 79847 ........................................................................ 79848 ........................................................................ 79849 ........................................................................ 79850 ........................................................................ 79851 ........................................................................ 79852 ........................................................................ 79853 ........................................................................ 79854 ........................................................................ 79855 ........................................................................ 79856 ........................................................................ 79857 ........................................................................ 79858 ........................................................................ 79859 ........................................................................ 79860 ........................................................................ 79861 ........................................................................ 79862 ........................................................................ 79863 ........................................................................ 79864 ........................................................................ 79865 ........................................................................ 79866 ........................................................................ 79867 ........................................................................ 79868 ........................................................................ 79869 ........................................................................ 79870 ........................................................................ 79871 ........................................................................ 79872 ........................................................................ 79873 ........................................................................ 79874 ........................................................................ 79875 ........................................................................ 79876 ........................................................................ 79877 ........................................................................ 79878 ........................................................................ 79879 ........................................................................ 79880 ........................................................................ 79881 ........................................................................ 79882 ........................................................................ 79883 ........................................................................ 79884 ........................................................................ 79885 ........................................................................ 79886 ........................................................................ 79887 ........................................................................ 79888 ........................................................................ 79889 ........................................................................ 79890 ........................................................................ 79891 ........................................................................ 79892 ........................................................................ 79893 ........................................................................ 79894 ........................................................................ 79895 ........................................................................ 79896 ........................................................................ 79897 ........................................................................ 79898 ........................................................................ 79899 ........................................................................ 79900 ........................................................................ 79901 ........................................................................ 79902 ........................................................................ 79903 ........................................................................ 79904 ........................................................................ 79905 ........................................................................ 79906 ........................................................................ 79907 ........................................................................ 79908 ........................................................................ 79909 ........................................................................ 79910 ........................................................................ 79911 ........................................................................ 79912 ........................................................................ 79913 ........................................................................ 79914 ........................................................................ 79915 ........................................................................ 79916 ........................................................................ 79917 ........................................................................ 79918 ........................................................................ 79919 ........................................................................ 79920 ........................................................................ 79921 ........................................................................ 79922 ........................................................................ 79923 ........................................................................ 79924 ........................................................................ 79925 ........................................................................ 79926 ........................................................................ 79927 ........................................................................ 79928 ........................................................................ 79929 ........................................................................ 79930 ........................................................................ 79931 ........................................................................ 79932 ........................................................................ 79933 ........................................................................ 79934 ........................................................................ 79935 ........................................................................ 79936 ........................................................................ 79937 ........................................................................ 79938 ........................................................................ 79939 ........................................................................ 79940 ........................................................................ 79941 ........................................................................ 79942 ........................................................................ 79943 ........................................................................ 79944 ........................................................................ 79945 ........................................................................ 79946 ........................................................................ 79947 ........................................................................ 79948 ........................................................................ 79949 ........................................................................ 79950 ........................................................................ 79951 ........................................................................ 79952 ........................................................................ 79953 ........................................................................ 79954 ........................................................................ 79955 ........................................................................ 79956 ........................................................................ 79957 ........................................................................ 79958 ........................................................................ 79959 ........................................................................ 79960 ........................................................................ 79961 ........................................................................ 79962 ........................................................................ 79963 ........................................................................ 79964 ........................................................................ 79965 ........................................................................ 79966 ........................................................................ 79967 ........................................................................ 79968 ........................................................................ 79969 ........................................................................ 79970 ........................................................................ 79971 ........................................................................ 79972 ........................................................................ 79973 ........................................................................ 79974 ........................................................................ 79975 ........................................................................ 79976 ........................................................................ 79977 ........................................................................ 79978 ........................................................................ 79979 ........................................................................ 79980 ........................................................................ 79981 ........................................................................ 79982 ........................................................................ 79983 ........................................................................ 79984 ........................................................................ 79985 ........................................................................ 79986 ........................................................................ 79987 ........................................................................ 79988 ........................................................................ 79989 ........................................................................ 79990 ........................................................................ 79991 ........................................................................ 79992 ........................................................................ 79993 ........................................................................ 79994 ........................................................................ 79995 ........................................................................ 79996 ........................................................................ 79997 ........................................................................ 79998 ........................................................................ 79999 ........................................................................ 80000 ........................................................................ 80001 ........................................................................ 80002 ........................................................................ 80003 ........................................................................ 80004 ........................................................................ 80005 ........................................................................ 80006 ........................................................................ 80007 ........................................................................ 80008 ........................................................................ 80009 ........................................................................ 80010 ........................................................................ 80011 ........................................................................ 80012 ........................................................................ 80013 ........................................................................ 80014 ........................................................................ 80015 ........................................................................ 80016 ........................................................................ 80017 ........................................................................ 80018 ........................................................................ 80019 ........................................................................ 80020 ........................................................................ 80021 ........................................................................ 80022 ........................................................................ 80023 ........................................................................ 80024 ........................................................................ 80025 ........................................................................ 80026 ........................................................................ 80027 ........................................................................ 80028 ........................................................................ 80029 ........................................................................ 80030 ........................................................................ 80031 ........................................................................ 80032 ........................................................................ 80033 ........................................................................ 80034 ........................................................................ 80035 ........................................................................ 80036 ........................................................................ 80037 ........................................................................ 80038 ........................................................................ 80039 ........................................................................ 80040 ........................................................................ 80041 ........................................................................ 80042 ........................................................................ 80043 ........................................................................ 80044 ........................................................................ 80045 ........................................................................ 80046 ........................................................................ 80047 ........................................................................ 80048 ........................................................................ 80049 ........................................................................ 80050 ........................................................................ 80051 ........................................................................ 80052 ........................................................................ 80053 ........................................................................ 80054 ........................................................................ 80055 ........................................................................ 80056 ........................................................................ 80057 ........................................................................ 80058 ........................................................................ 80059 ........................................................................ 80060 ........................................................................ 80061 ........................................................................ 80062 ........................................................................ 80063 ........................................................................ 80064 ........................................................................ 80065 ........................................................................ 80066 ........................................................................ 80067 ........................................................................ 80068 ........................................................................ 80069 ........................................................................ 80070 ........................................................................ 80071 ........................................................................ 80072 ........................................................................ 80073 ........................................................................ 80074 ........................................................................ 80075 ........................................................................ 80076 ........................................................................ 80077 ........................................................................ 80078 ........................................................................ 80079 ........................................................................ 80080 ........................................................................ 80081 ........................................................................ 80082 ........................................................................ 80083 ........................................................................ 80084 ........................................................................ 80085 ........................................................................ 80086 ........................................................................ 80087 ........................................................................ 80088 ........................................................................ 80089 ........................................................................ 80090 ........................................................................ 80091 ........................................................................ 80092 ........................................................................ 80093 ........................................................................ 80094 ........................................................................ 80095 ........................................................................ 80096 ........................................................................ 80097 ........................................................................ 80098 ........................................................................ 80099 ........................................................................ 80100 ........................................................................ 80101 ........................................................................ 80102 ........................................................................ 80103 ........................................................................ 80104 ........................................................................ 80105 ........................................................................ 80106 ........................................................................ 80107 ........................................................................ 80108 ........................................................................ 80109 ........................................................................ 80110 ........................................................................ 80111 ........................................................................ 80112 ........................................................................ 80113 ........................................................................ 80114 ........................................................................ 80115 ........................................................................ 80116 ........................................................................ 80117 ........................................................................ 80118 ........................................................................ 80119 ........................................................................ 80120 ........................................................................ 80121 ........................................................................ 80122 ........................................................................ 80123 ........................................................................ 80124 ........................................................................ 80125 ........................................................................ 80126 ........................................................................ 80127 ........................................................................ 80128 ........................................................................ 80129 ........................................................................ 80130 ........................................................................ 80131 ........................................................................ 80132 ........................................................................ 80133 ........................................................................ 80134 ........................................................................ 80135 ........................................................................ 80136 ........................................................................ 80137 ........................................................................ 80138 ........................................................................ 80139 ........................................................................ 80140 ........................................................................ 80141 ........................................................................ 80142 ........................................................................ 80143 ........................................................................ 80144 ........................................................................ 80145 ........................................................................ 80146 ........................................................................ 80147 ........................................................................ 80148 ........................................................................ 80149 ........................................................................ 80150 ........................................................................ 80151 ........................................................................ 80152 ........................................................................ 80153 ........................................................................ 80154 ........................................................................ 80155 ........................................................................ 80156 ........................................................................ 80157 ........................................................................ 80158 ........................................................................ 80159 ........................................................................ 80160 ........................................................................ 80161 ........................................................................ 80162 ........................................................................ 80163 ........................................................................ 80164 ........................................................................ 80165 ........................................................................ 80166 ........................................................................ 80167 ........................................................................ 80168 ........................................................................ 80169 ........................................................................ 80170 ........................................................................ 80171 ........................................................................ 80172 ........................................................................ 80173 ........................................................................ 80174 ........................................................................ 80175 ........................................................................ 80176 ........................................................................ 80177 ........................................................................ 80178 ........................................................................ 80179 ........................................................................ 80180 ........................................................................ 80181 ........................................................................ 80182 ........................................................................ 80183 ........................................................................ 80184 ........................................................................ 80185 ........................................................................ 80186 ........................................................................ 80187 ........................................................................ 80188 ........................................................................ 80189 ........................................................................ 80190 ........................................................................ 80191 ........................................................................ 80192 ........................................................................ 80193 ........................................................................ 80194 ........................................................................ 80195 ........................................................................ 80196 ........................................................................ 80197 ........................................................................ 80198 ........................................................................ 80199 ........................................................................ 80200 ........................................................................ 80201 ........................................................................ 80202 ........................................................................ 80203 ........................................................................ 80204 ........................................................................ 80205 ........................................................................ 80206 ........................................................................ 80207 ........................................................................ 80208 ........................................................................ 80209 ........................................................................ 80210 ........................................................................ 80211 ........................................................................ 80212 ........................................................................ 80213 ........................................................................ 80214 ........................................................................ 80215 ........................................................................ 80216 ........................................................................ 80217 ........................................................................ 80218 ........................................................................ 80219 ........................................................................ 80220 ........................................................................ 80221 ........................................................................ 80222 ........................................................................ 80223 ........................................................................ 80224 ........................................................................ 80225 ........................................................................ 80226 ........................................................................ 80227 ........................................................................ 80228 ........................................................................ 80229 ........................................................................ 80230 ........................................................................ 80231 ........................................................................ 80232 ........................................................................ 80233 ........................................................................ 80234 ........................................................................ 80235 ........................................................................ 80236 ........................................................................ 80237 ........................................................................ 80238 ........................................................................ 80239 ........................................................................ 80240 ........................................................................ 80241 ........................................................................ 80242 ........................................................................ 80243 ........................................................................ 80244 ........................................................................ 80245 ........................................................................ 80246 ........................................................................ 80247 ........................................................................ 80248 ........................................................................ 80249 ........................................................................ 80250 ........................................................................ 80251 ........................................................................ 80252 ........................................................................ 80253 ........................................................................ 80254 ........................................................................ 80255 ........................................................................ 80256 ........................................................................ 80257 ........................................................................ 80258 ........................................................................ 80259 ........................................................................ 80260 ........................................................................ 80261 ........................................................................ 80262 ........................................................................ 80263 ........................................................................ 80264 ........................................................................ 80265 ........................................................................ 80266 ........................................................................ 80267 ........................................................................ 80268 ........................................................................ 80269 ........................................................................ 80270 ........................................................................ 80271 ........................................................................ 80272 ........................................................................ 80273 ........................................................................ 80274 ........................................................................ 80275 ........................................................................ 80276 ........................................................................ 80277 ........................................................................ 80278 ........................................................................ 80279 ........................................................................ 80280 ........................................................................ 80281 ........................................................................ 80282 ........................................................................ 80283 ........................................................................ 80284 ........................................................................ 80285 ........................................................................ 80286 ........................................................................ 80287 ........................................................................ 80288 ........................................................................ 80289 ........................................................................ 80290 ........................................................................ 80291 ........................................................................ 80292 ........................................................................ 80293 ........................................................................ 80294 ........................................................................ 80295 ........................................................................ 80296 ........................................................................ 80297 ........................................................................ 80298 ........................................................................ 80299 ........................................................................ 80300 ........................................................................ 80301 ........................................................................ 80302 ........................................................................ 80303 ........................................................................ 80304 ........................................................................ 80305 ........................................................................ 80306 ........................................................................ 80307 ........................................................................ 80308 ........................................................................ 80309 ........................................................................ 80310 ........................................................................ 80311 ........................................................................ 80312 ........................................................................ 80313 ........................................................................ 80314 ........................................................................ 80315 ........................................................................ 80316 ........................................................................ 80317 ........................................................................ 80318 ........................................................................ 80319 ........................................................................ 80320 ........................................................................ 80321 ........................................................................ 80322 ........................................................................ 80323 ........................................................................ 80324 ........................................................................ 80325 ........................................................................ 80326 ........................................................................ 80327 ........................................................................ 80328 ........................................................................ 80329 ........................................................................ 80330 ........................................................................ 80331 ........................................................................ 80332 ........................................................................ 80333 ........................................................................ 80334 ........................................................................ 80335 ........................................................................ 80336 ........................................................................ 80337 ........................................................................ 80338 ........................................................................ 80339 ........................................................................ 80340 ........................................................................ 80341 ........................................................................ 80342 ........................................................................ 80343 ........................................................................ 80344 ........................................................................ 80345 ........................................................................ 80346 ........................................................................ 80347 ........................................................................ 80348 ........................................................................ 80349 ........................................................................ 80350 ........................................................................ 80351 ........................................................................ 80352 ........................................................................ 80353 ........................................................................ 80354 ........................................................................ 80355 ........................................................................ 80356 ........................................................................ 80357 ........................................................................ 80358 ........................................................................ 80359 ........................................................................ 80360 ........................................................................ 80361 ........................................................................ 80362 ........................................................................ 80363 ........................................................................ 80364 ........................................................................ 80365 ........................................................................ 80366 ........................................................................ 80367 ........................................................................ 80368 ........................................................................ 80369 ........................................................................ 80370 ........................................................................ 80371 ........................................................................ 80372 ........................................................................ 80373 ........................................................................ 80374 ........................................................................ 80375 ........................................................................ 80376 ........................................................................ 80377 ........................................................................ 80378 ........................................................................ 80379 ........................................................................ 80380 ........................................................................ 80381 ........................................................................ 80382 ........................................................................ 80383 ........................................................................ 80384 ........................................................................ 80385 ........................................................................ 80386 ........................................................................ 80387 ........................................................................ 80388 ........................................................................ 80389 ........................................................................ 80390 ........................................................................ 80391 ........................................................................ 80392 ........................................................................ 80393 ........................................................................ 80394 ........................................................................ 80395 ........................................................................ 80396 ........................................................................ 80397 ........................................................................ 80398 ........................................................................ 80399 ........................................................................ 80400 ........................................................................ 80401 ........................................................................ 80402 ........................................................................ 80403 ........................................................................ 80404 ........................................................................ 80405 ........................................................................ 80406 ........................................................................ 80407 ........................................................................ 80408 ........................................................................ 80409 ........................................................................ 80410 ........................................................................ 80411 ........................................................................ 80412 ........................................................................ 80413 ........................................................................ 80414 ........................................................................ 80415 ........................................................................ 80416 ........................................................................ 80417 ........................................................................ 80418 ........................................................................ 80419 ........................................................................ 80420 ........................................................................ 80421 ........................................................................ 80422 ........................................................................ 80423 ........................................................................ 80424 ........................................................................ 80425 ........................................................................ 80426 ........................................................................ 80427 ........................................................................ 80428 ........................................................................ 80429 ........................................................................ 80430 ........................................................................ 80431 ........................................................................ 80432 ........................................................................ 80433 ........................................................................ 80434 ........................................................................ 80435 ........................................................................ 80436 ........................................................................ 80437 ........................................................................ 80438 ........................................................................ 80439 ........................................................................ 80440 ........................................................................ 80441 ........................................................................ 80442 ........................................................................ 80443 ........................................................................ 80444 ........................................................................ 80445 ........................................................................ 80446 ........................................................................ 80447 ........................................................................ 80448 ........................................................................ 80449 ........................................................................ 80450 ........................................................................ 80451 ........................................................................ 80452 ........................................................................ 80453 ........................................................................ 80454 ........................................................................ 80455 ........................................................................ 80456 ........................................................................ 80457 ........................................................................ 80458 ........................................................................ 80459 ........................................................................ 80460 ........................................................................ 80461 ........................................................................ 80462 ........................................................................ 80463 ........................................................................ 80464 ........................................................................ 80465 ........................................................................ 80466 ........................................................................ 80467 ........................................................................ 80468 ........................................................................ 80469 ........................................................................ 80470 ........................................................................ 80471 ........................................................................ 80472 ........................................................................ 80473 ........................................................................ 80474 ........................................................................ 80475 ........................................................................ 80476 ........................................................................ 80477 ........................................................................ 80478 ........................................................................ 80479 ........................................................................ 80480 ........................................................................ 80481 ........................................................................ 80482 ........................................................................ 80483 ........................................................................ 80484 ........................................................................ 80485 ........................................................................ 80486 ........................................................................ 80487 ........................................................................ 80488 ........................................................................ 80489 ........................................................................ 80490 ........................................................................ 80491 ........................................................................ 80492 ........................................................................ 80493 ........................................................................ 80494 ........................................................................ 80495 ........................................................................ 80496 ........................................................................ 80497 ........................................................................ 80498 ........................................................................ 80499 ........................................................................ 80500 ........................................................................ 80501 ........................................................................ 80502 ........................................................................ 80503 ........................................................................ 80504 ........................................................................ 80505 ........................................................................ 80506 ........................................................................ 80507 ........................................................................ 80508 ........................................................................ 80509 ........................................................................ 80510 ........................................................................ 80511 ........................................................................ 80512 ........................................................................ 80513 ........................................................................ 80514 ........................................................................ 80515 ........................................................................ 80516 ........................................................................ 80517 ........................................................................ 80518 ........................................................................ 80519 ........................................................................ 80520 ........................................................................ 80521 ........................................................................ 80522 ........................................................................ 80523 ........................................................................ 80524 ........................................................................ 80525 ........................................................................ 80526 ........................................................................ 80527 ........................................................................ 80528 ........................................................................ 80529 ........................................................................ 80530 ........................................................................ 80531 ........................................................................ 80532 ........................................................................ 80533 ........................................................................ 80534 ........................................................................ 80535 ........................................................................ 80536 ........................................................................ 80537 ........................................................................ 80538 ........................................................................ 80539 ........................................................................ 80540 ........................................................................ 80541 ........................................................................ 80542 ........................................................................ 80543 ........................................................................ 80544 ........................................................................ 80545 ........................................................................ 80546 ........................................................................ 80547 ........................................................................ 80548 ........................................................................ 80549 ........................................................................ 80550 ........................................................................ 80551 ........................................................................ 80552 ........................................................................ 80553 ........................................................................ 80554 ........................................................................ 80555 ........................................................................ 80556 ........................................................................ 80557 ........................................................................ 80558 ........................................................................ 80559 ........................................................................ 80560 ........................................................................ 80561 ........................................................................ 80562 ........................................................................ 80563 ........................................................................ 80564 ........................................................................ 80565 ........................................................................ 80566 ........................................................................ 80567 ........................................................................ 80568 ........................................................................ 80569 ........................................................................ 80570 ........................................................................ 80571 ........................................................................ 80572 ........................................................................ 80573 ........................................................................ 80574 ........................................................................ 80575 ........................................................................ 80576 ........................................................................ 80577 ........................................................................ 80578 ........................................................................ 80579 ........................................................................ 80580 ........................................................................ 80581 ........................................................................ 80582 ........................................................................ 80583 ........................................................................ 80584 ........................................................................ 80585 ........................................................................ 80586 ........................................................................ 80587 ........................................................................ 80588 ........................................................................ 80589 ........................................................................ 80590 ........................................................................ 80591 ........................................................................ 80592 ........................................................................ 80593 ........................................................................ 80594 ........................................................................ 80595 ........................................................................ 80596 ........................................................................ 80597 ........................................................................ 80598 ........................................................................ 80599 ........................................................................ 80600 ........................................................................ 80601 ........................................................................ 80602 ........................................................................ 80603 ........................................................................ 80604 ........................................................................ 80605 ........................................................................ 80606 ........................................................................ 80607 ........................................................................ 80608 ........................................................................ 80609 ........................................................................ 80610 ........................................................................ 80611 ........................................................................ 80612 ........................................................................ 80613 ........................................................................ 80614 ........................................................................ 80615 ........................................................................ 80616 ........................................................................ 80617 ........................................................................ 80618 ........................................................................ 80619 ........................................................................ 80620 ........................................................................ 80621 ........................................................................ 80622 ........................................................................ 80623 ........................................................................ 80624 ........................................................................ 80625 ........................................................................ 80626 ........................................................................ 80627 ........................................................................ 80628 ........................................................................ 80629 ........................................................................ 80630 ........................................................................ 80631 ........................................................................ 80632 ........................................................................ 80633 ........................................................................ 80634 ........................................................................ 80635 ........................................................................ 80636 ........................................................................ 80637 ........................................................................ 80638 ........................................................................ 80639 ........................................................................ 80640 ........................................................................ 80641 ........................................................................ 80642 ........................................................................ 80643 ........................................................................ 80644 ........................................................................ 80645 ........................................................................ 80646 ........................................................................ 80647 ........................................................................ 80648 ........................................................................ 80649 ........................................................................ 80650 ........................................................................ 80651 ........................................................................ 80652 ........................................................................ 80653 ........................................................................ 80654 ........................................................................ 80655 ........................................................................ 80656 ........................................................................ 80657 ........................................................................ 80658 ........................................................................ 80659 ........................................................................ 80660 ........................................................................ 80661 ........................................................................ 80662 ........................................................................ 80663 ........................................................................ 80664 ........................................................................ 80665 ........................................................................ 80666 ........................................................................ 80667 ........................................................................ 80668 ........................................................................ 80669 ........................................................................ 80670 ........................................................................ 80671 ........................................................................ 80672 ........................................................................ 80673 ........................................................................ 80674 ........................................................................ 80675 ........................................................................ 80676 ........................................................................ 80677 ........................................................................ 80678 ........................................................................ 80679 ........................................................................ 80680 ........................................................................ 80681 ........................................................................ 80682 ........................................................................ 80683 ........................................................................ 80684 ........................................................................ 80685 ........................................................................ 80686 ........................................................................ 80687 ........................................................................ 80688 ........................................................................ 80689 ........................................................................ 80690 ........................................................................ 80691 ........................................................................ 80692 ........................................................................ 80693 ........................................................................ 80694 ........................................................................ 80695 ........................................................................ 80696 ........................................................................ 80697 ........................................................................ 80698 ........................................................................ 80699 ........................................................................ 80700 ........................................................................ 80701 ........................................................................ 80702 ........................................................................ 80703 ........................................................................ 80704 ........................................................................ 80705 ........................................................................ 80706 ........................................................................ 80707 ........................................................................ 80708 ........................................................................ 80709 ........................................................................ 80710 ........................................................................ 80711 ........................................................................ 80712 ........................................................................ 80713 ........................................................................ 80714 ........................................................................ 80715 ........................................................................ 80716 ........................................................................ 80717 ........................................................................ 80718 ........................................................................ 80719 ........................................................................ 80720 ........................................................................ 80721 ........................................................................ 80722 ........................................................................ 80723 ........................................................................ 80724 ........................................................................ 80725 ........................................................................ 80726 ........................................................................ 80727 ........................................................................ 80728 ........................................................................ 80729 ........................................................................ 80730 ........................................................................ 80731 ........................................................................ 80732 ........................................................................ 80733 ........................................................................ 80734 ........................................................................ 80735 ........................................................................ 80736 ........................................................................ 80737 ........................................................................ 80738 ........................................................................ 80739 ........................................................................ 80740 ........................................................................ 80741 ........................................................................ 80742 ........................................................................ 80743 ........................................................................ 80744 ........................................................................ 80745 ........................................................................ 80746 ........................................................................ 80747 ........................................................................ 80748 ........................................................................ 80749 ........................................................................ 80750 ........................................................................ 80751 ........................................................................ 80752 ........................................................................ 80753 ........................................................................ 80754 ........................................................................ 80755 ........................................................................ 80756 ........................................................................ 80757 ........................................................................ 80758 ........................................................................ 80759 ........................................................................ 80760 ........................................................................ 80761 ........................................................................ 80762 ........................................................................ 80763 ........................................................................ 80764 ........................................................................ 80765 ........................................................................ 80766 ........................................................................ 80767 ........................................................................ 80768 ........................................................................ 80769 ........................................................................ 80770 ........................................................................ 80771 ........................................................................ 80772 ........................................................................ 80773 ........................................................................ 80774 ........................................................................ 80775 ........................................................................ 80776 ........................................................................ 80777 ........................................................................ 80778 ........................................................................ 80779 ........................................................................ 80780 ........................................................................ 80781 ........................................................................ 80782 ........................................................................ 80783 ........................................................................ 80784 ........................................................................ 80785 ........................................................................ 80786 ........................................................................ 80787 ........................................................................ 80788 ........................................................................ 80789 ........................................................................ 80790 ........................................................................ 80791 ........................................................................ 80792 ........................................................................ 80793 ........................................................................ 80794 ........................................................................ 80795 ........................................................................ 80796 ........................................................................ 80797 ........................................................................ 80798 ........................................................................ 80799 ........................................................................ 80800 ........................................................................ 80801 ........................................................................ 80802 ........................................................................ 80803 ........................................................................ 80804 ........................................................................ 80805 ........................................................................ 80806 ........................................................................ 80807 ........................................................................ 80808 ........................................................................ 80809 ........................................................................ 80810 ........................................................................ 80811 ........................................................................ 80812 ........................................................................ 80813 ........................................................................ 80814 ........................................................................ 80815 ........................................................................ 80816 ........................................................................ 80817 ........................................................................ 80818 ........................................................................ 80819 ........................................................................ 80820 ........................................................................ 80821 ........................................................................ 80822 ........................................................................ 80823 ........................................................................ 80824 ........................................................................ 80825 ........................................................................ 80826 ........................................................................ 80827 ........................................................................ 80828 ........................................................................ 80829 ........................................................................ 80830 ........................................................................ 80831 ........................................................................ 80832 ........................................................................ 80833 ........................................................................ 80834 ........................................................................ 80835 ........................................................................ 80836 ........................................................................ 80837 ........................................................................ 80838 ........................................................................ 80839 ........................................................................ 80840 ........................................................................ 80841 ........................................................................ 80842 ........................................................................ 80843 ........................................................................ 80844 ........................................................................ 80845 ........................................................................ 80846 ........................................................................ 80847 ........................................................................ 80848 ........................................................................ 80849 ........................................................................ 80850 ........................................................................ 80851 ........................................................................ 80852 ........................................................................ 80853 ........................................................................ 80854 ........................................................................ 80855 ........................................................................ 80856 ........................................................................ 80857 ........................................................................ 80858 ........................................................................ 80859 ........................................................................ 80860 ........................................................................ 80861 ........................................................................ 80862 ........................................................................ 80863 ........................................................................ 80864 ........................................................................ 80865 ........................................................................ 80866 ........................................................................ 80867 ........................................................................ 80868 ........................................................................ 80869 ........................................................................ 80870 ........................................................................ 80871 ........................................................................ 80872 ........................................................................ 80873 ........................................................................ 80874 ........................................................................ 80875 ........................................................................ 80876 ........................................................................ 80877 ........................................................................ 80878 ........................................................................ 80879 ........................................................................ 80880 ........................................................................ 80881 ........................................................................ 80882 ........................................................................ 80883 ........................................................................ 80884 ........................................................................ 80885 ........................................................................ 80886 ........................................................................ 80887 ........................................................................ 80888 ........................................................................ 80889 ........................................................................ 80890 ........................................................................ 80891 ........................................................................ 80892 ........................................................................ 80893 ........................................................................ 80894 ........................................................................ 80895 ........................................................................ 80896 ........................................................................ 80897 ........................................................................ 80898 ........................................................................ 80899 ........................................................................ 80900 ........................................................................ 80901 ........................................................................ 80902 ........................................................................ 80903 ........................................................................ 80904 ........................................................................ 80905 ........................................................................ 80906 ........................................................................ 80907 ........................................................................ 80908 ........................................................................ 80909 ........................................................................ 80910 ........................................................................ 80911 ........................................................................ 80912 ........................................................................ 80913 ........................................................................ 80914 ........................................................................ 80915 ........................................................................ 80916 ........................................................................ 80917 ........................................................................ 80918 ........................................................................ 80919 ........................................................................ 80920 ........................................................................ 80921 ........................................................................ 80922 ........................................................................ 80923 ........................................................................ 80924 ........................................................................ 80925 ........................................................................ 80926 ........................................................................ 80927 ........................................................................ 80928 ........................................................................ 80929 ........................................................................ 80930 ........................................................................ 80931 ........................................................................ 80932 ........................................................................ 80933 ........................................................................ 80934 ........................................................................ 80935 ........................................................................ 80936 ........................................................................ 80937 ........................................................................ 80938 ........................................................................ 80939 ........................................................................ 80940 ........................................................................ 80941 ........................................................................ 80942 ........................................................................ 80943 ........................................................................ 80944 ........................................................................ 80945 ........................................................................ 80946 ........................................................................ 80947 ........................................................................ 80948 ........................................................................ 80949 ........................................................................ 80950 ........................................................................ 80951 ........................................................................ 80952 ........................................................................ 80953 ........................................................................ 80954 ........................................................................ 80955 ........................................................................ 80956 ........................................................................ 80957 ........................................................................ 80958 ........................................................................ 80959 ........................................................................ 80960 ........................................................................ 80961 ........................................................................ 80962 ........................................................................ 80963 ........................................................................ 80964 ........................................................................ 80965 ........................................................................ 80966 ........................................................................ 80967 ........................................................................ 80968 ........................................................................ 80969 ........................................................................ 80970 ........................................................................ 80971 ........................................................................ 80972 ........................................................................ 80973 ........................................................................ 80974 ........................................................................ 80975 ........................................................................ 80976 ........................................................................ 80977 ........................................................................ 80978 ........................................................................ 80979 ........................................................................ 80980 ........................................................................ 80981 ........................................................................ 80982 ........................................................................ 80983 ........................................................................ 80984 ........................................................................ 80985 ........................................................................ 80986 ........................................................................ 80987 ........................................................................ 80988 ........................................................................ 80989 ........................................................................ 80990 ........................................................................ 80991 ........................................................................ 80992 ........................................................................ 80993 ........................................................................ 80994 ........................................................................ 80995 ........................................................................ 80996 ........................................................................ 80997 ........................................................................ 80998 ........................................................................ 80999 ........................................................................ 81000 ........................................................................ 81001 ........................................................................ 81002 ........................................................................ 81003 ........................................................................ 81004 ........................................................................ 81005 ........................................................................ 81006 ........................................................................ 81007 ........................................................................ 81008 ........................................................................ 81009 ........................................................................ 81010 ........................................................................ 81011 ........................................................................ 81012 ........................................................................ 81013 ........................................................................ 81014 ........................................................................ 81015 ........................................................................ 81016 ........................................................................ 81017 ........................................................................ 81018 ........................................................................ 81019 ........................................................................ 81020 ........................................................................ 81021 ........................................................................ 81022 ........................................................................ 81023 ........................................................................ 81024 ........................................................................ 81025 ........................................................................ 81026 ........................................................................ 81027 ........................................................................ 81028 ........................................................................ 81029 ........................................................................ 81030 ........................................................................ 81031 ........................................................................ 81032 ........................................................................ 81033 ........................................................................ 81034 ........................................................................ 81035 ........................................................................ 81036 ........................................................................ 81037 ........................................................................ 81038 ........................................................................ 81039 ........................................................................ 81040 ........................................................................ 81041 ........................................................................ 81042 ........................................................................ 81043 ........................................................................ 81044 ........................................................................ 81045 ........................................................................ 81046 ........................................................................ 81047 ........................................................................ 81048 ........................................................................ 81049 ........................................................................ 81050 ........................................................................ 81051 ........................................................................ 81052 ........................................................................ 81053 ........................................................................ 81054 ........................................................................ 81055 ........................................................................ 81056 ........................................................................ 81057 ........................................................................ 81058 ........................................................................ 81059 ........................................................................ 81060 ........................................................................ 81061 ........................................................................ 81062 ........................................................................ 81063 ........................................................................ 81064 ........................................................................ 81065 ........................................................................ 81066 ........................................................................ 81067 ........................................................................ 81068 ........................................................................ 81069 ........................................................................ 81070 ........................................................................ 81071 ........................................................................ 81072 ........................................................................ 81073 ........................................................................ 81074 ........................................................................ 81075 ........................................................................ 81076 ........................................................................ 81077 ........................................................................ 81078 ........................................................................ 81079 ........................................................................ 81080 ........................................................................ 81081 ........................................................................ 81082 ........................................................................ 81083 ........................................................................ 81084 ........................................................................ 81085 ........................................................................ 81086 ........................................................................ 81087 ........................................................................ 81088 ........................................................................ 81089 ........................................................................ 81090 ........................................................................ 81091 ........................................................................ 81092 ........................................................................ 81093 ........................................................................ 81094 ........................................................................ 81095 ........................................................................ 81096 ........................................................................ 81097 ........................................................................ 81098 ........................................................................ 81099 ........................................................................ 81100 ........................................................................ 81101 ........................................................................ 81102 ........................................................................ 81103 ........................................................................ 81104 ........................................................................ 81105 ........................................................................ 81106 ........................................................................ 81107 ........................................................................ 81108 ........................................................................ 81109 ........................................................................ 81110 ........................................................................ 81111 ........................................................................ 81112 ........................................................................ 81113 ........................................................................ 81114 ........................................................................ 81115 ........................................................................ 81116 ........................................................................ 81117 ........................................................................ 81118 ........................................................................ 81119 ........................................................................ 81120 ........................................................................ 81121 ........................................................................ 81122 ........................................................................ 81123 ........................................................................ 81124 ........................................................................ 81125 ........................................................................ 81126 ........................................................................ 81127 ........................................................................ 81128 ........................................................................ 81129 ........................................................................ 81130 ........................................................................ 81131 ........................................................................ 81132 ........................................................................ 81133 ........................................................................ 81134 ........................................................................ 81135 ........................................................................ 81136 ........................................................................ 81137 ........................................................................ 81138 ........................................................................ 81139 ........................................................................ 81140 ........................................................................ 81141 ........................................................................ 81142 ........................................................................ 81143 ........................................................................ 81144 ........................................................................ 81145 ........................................................................ 81146 ........................................................................ 81147 ........................................................................ 81148 ........................................................................ 81149 ........................................................................ 81150 ........................................................................ 81151 ........................................................................ 81152 ........................................................................ 81153 ........................................................................ 81154 ........................................................................ 81155 ........................................................................ 81156 ........................................................................ 81157 ........................................................................ 81158 ........................................................................ 81159 ........................................................................ 81160 ........................................................................ 81161 ........................................................................ 81162 ........................................................................ 81163 ........................................................................ 81164 ........................................................................ 81165 ........................................................................ 81166 ........................................................................ 81167 ........................................................................ 81168 ........................................................................ 81169 ........................................................................ 81170 ........................................................................ 81171 ........................................................................ 81172 ........................................................................ 81173 ........................................................................ 81174 ........................................................................ 81175 ........................................................................ 81176 ........................................................................ 81177 ........................................................................ 81178 ........................................................................ 81179 ........................................................................ 81180 ........................................................................ 81181 ........................................................................ 81182 ........................................................................ 81183 ........................................................................ 81184 ........................................................................ 81185 ........................................................................ 81186 ........................................................................ 81187 ........................................................................ 81188 ........................................................................ 81189 ........................................................................ 81190 ........................................................................ 81191 ........................................................................ 81192 ........................................................................ 81193 ........................................................................ 81194 ........................................................................ 81195 ........................................................................ 81196 ........................................................................ 81197 ........................................................................ 81198 ........................................................................ 81199 ........................................................................ 81200 ........................................................................ 81201 ........................................................................ 81202 ........................................................................ 81203 ........................................................................ 81204 ........................................................................ 81205 ........................................................................ 81206 ........................................................................ 81207 ........................................................................ 81208 ........................................................................ 81209 ........................................................................ 81210 ........................................................................ 81211 ........................................................................ 81212 ........................................................................ 81213 ........................................................................ 81214 ........................................................................ 81215 ........................................................................ 81216 ........................................................................ 81217 ........................................................................ 81218 ........................................................................ 81219 ........................................................................ 81220 ........................................................................ 81221 ........................................................................ 81222 ........................................................................ 81223 ........................................................................ 81224 ........................................................................ 81225 ........................................................................ 81226 ........................................................................ 81227 ........................................................................ 81228 ........................................................................ 81229 ........................................................................ 81230 ........................................................................ 81231 ........................................................................ 81232 ........................................................................ 81233 ........................................................................ 81234 ........................................................................ 81235 ........................................................................ 81236 ........................................................................ 81237 ........................................................................ 81238 ........................................................................ 81239 ........................................................................ 81240 ........................................................................ 81241 ........................................................................ 81242 ........................................................................ 81243 ........................................................................ 81244 ........................................................................ 81245 ........................................................................ 81246 ........................................................................ 81247 ........................................................................ 81248 ........................................................................ 81249 ........................................................................ 81250 ........................................................................ 81251 ........................................................................ 81252 ........................................................................ 81253 ........................................................................ 81254 ........................................................................ 81255 ........................................................................ 81256 ........................................................................ 81257 ........................................................................ 81258 ........................................................................ 81259 ........................................................................ 81260 ........................................................................ 81261 ........................................................................ 81262 ........................................................................ 81263 ........................................................................ 81264 ........................................................................ 81265 ........................................................................ 81266 ........................................................................ 81267 ........................................................................ 81268 ........................................................................ 81269 ........................................................................ 81270 ........................................................................ 81271 ........................................................................ 81272 ........................................................................ 81273 ........................................................................ 81274 ........................................................................ 81275 ........................................................................ 81276 ........................................................................ 81277 ........................................................................ 81278 ........................................................................ 81279 ........................................................................ 81280 ........................................................................ 81281 ........................................................................ 81282 ........................................................................ 81283 ........................................................................ 81284 ........................................................................ 81285 ........................................................................ 81286 ........................................................................ 81287 ........................................................................ 81288 ........................................................................ 81289 ........................................................................ 81290 ........................................................................ 81291 ........................................................................ 81292 ........................................................................ 81293 ........................................................................ 81294 ........................................................................ 81295 ........................................................................ 81296 ........................................................................ 81297 ........................................................................ 81298 ........................................................................ 81299 ........................................................................ 81300 ........................................................................ 81301 ........................................................................ 81302 ........................................................................ 81303 ........................................................................ 81304 ........................................................................ 81305 ........................................................................ 81306 ........................................................................ 81307 ........................................................................ 81308 ........................................................................ 81309 ........................................................................ 81310 ........................................................................ 81311 ........................................................................ 81312 ........................................................................ 81313 ........................................................................ 81314 ........................................................................ 81315 ........................................................................ 81316 ........................................................................ 81317 ........................................................................ 81318 ........................................................................ 81319 ........................................................................ 81320 ........................................................................ 81321 ........................................................................ 81322 ........................................................................ 81323 ........................................................................ 81324 ........................................................................ 81325 ........................................................................ 81326 ........................................................................ 81327 ........................................................................ 81328 ........................................................................ 81329 ........................................................................ 81330 ........................................................................ 81331 ........................................................................ 81332 ........................................................................ 81333 ........................................................................ 81334 ........................................................................ 81335 ........................................................................ 81336 ........................................................................ 81337 ........................................................................ 81338 ........................................................................ 81339 ........................................................................ 81340 ........................................................................ 81341 ........................................................................ 81342 ........................................................................ 81343 ........................................................................ 81344 ........................................................................ 81345 ........................................................................ 81346 ........................................................................ 81347 ........................................................................ 81348 ........................................................................ 81349 ........................................................................ 81350 ........................................................................ 81351 ........................................................................ 81352 ........................................................................ 81353 ........................................................................ 81354 ........................................................................ 81355 ........................................................................ 81356 ........................................................................ 81357 ........................................................................ 81358 ........................................................................ 81359 ........................................................................ 81360 ........................................................................ 81361 ........................................................................ 81362 ........................................................................ 81363 ........................................................................ 81364 ........................................................................ 81365 ........................................................................ 81366 ........................................................................ 81367 ........................................................................ 81368 ........................................................................ 81369 ........................................................................ 81370 ........................................................................ 81371 ........................................................................ 81372 ........................................................................ 81373 ........................................................................ 81374 ........................................................................ 81375 ........................................................................ 81376 ........................................................................ 81377 ........................................................................ 81378 ........................................................................ 81379 ........................................................................ 81380 ........................................................................ 81381 ........................................................................ 81382 ........................................................................ 81383 ........................................................................ 81384 ........................................................................ 81385 ........................................................................ 81386 ........................................................................ 81387 ........................................................................ 81388 ........................................................................ 81389 ........................................................................ 81390 ........................................................................ 81391 ........................................................................ 81392 ........................................................................ 81393 ........................................................................ 81394 ........................................................................ 81395 ........................................................................ 81396 ........................................................................ 81397 ........................................................................ 81398 ........................................................................ 81399 ........................................................................ 81400 ........................................................................ 81401 ........................................................................ 81402 ........................................................................ 81403 ........................................................................ 81404 ........................................................................ 81405 ........................................................................ 81406 ........................................................................ 81407 ........................................................................ 81408 ........................................................................ 81409 ........................................................................ 81410 ........................................................................ 81411 ........................................................................ 81412 ........................................................................ 81413 ........................................................................ 81414 ........................................................................ 81415 ........................................................................ 81416 ........................................................................ 81417 ........................................................................ 81418 ........................................................................ 81419 ........................................................................ 81420 ........................................................................ 81421 ........................................................................ 81422 ........................................................................ 81423 ........................................................................ 81424 ........................................................................ 81425 ........................................................................ 81426 ........................................................................ 81427 ........................................................................ 81428 ........................................................................ 81429 ........................................................................ 81430 ........................................................................ 81431 ........................................................................ 81432 ........................................................................ 81433 ........................................................................ 81434 ........................................................................ 81435 ........................................................................ 81436 ........................................................................ 81437 ........................................................................ 81438 ........................................................................ 81439 ........................................................................ 81440 ........................................................................ 81441 ........................................................................ 81442 ........................................................................ 81443 ........................................................................ 81444 ........................................................................ 81445 ........................................................................ 81446 ........................................................................ 81447 ........................................................................ 81448 ........................................................................ 81449 ........................................................................ 81450 ........................................................................ 81451 ........................................................................ 81452 ........................................................................ 81453 ........................................................................ 81454 ........................................................................ 81455 ........................................................................ 81456 ........................................................................ 81457 ........................................................................ 81458 ........................................................................ 81459 ........................................................................ 81460 ........................................................................ 81461 ........................................................................ 81462 ........................................................................ 81463 ........................................................................ 81464 ........................................................................ 81465 ........................................................................ 81466 ........................................................................ 81467 ........................................................................ 81468 ........................................................................ 81469 ........................................................................ 81470 ........................................................................ 81471 ........................................................................ 81472 ........................................................................ 81473 ........................................................................ 81474 ........................................................................ 81475 ........................................................................ 81476 ........................................................................ 81477 ........................................................................ 81478 ........................................................................ 81479 ........................................................................ 81480 ........................................................................ 81481 ........................................................................ 81482 ........................................................................ 81483 ........................................................................ 81484 ........................................................................ 81485 ........................................................................ 81486 ........................................................................ 81487 ........................................................................ 81488 ........................................................................ 81489 ........................................................................ 81490 ........................................................................ 81491 ........................................................................ 81492 ........................................................................ 81493 ........................................................................ 81494 ........................................................................ 81495 ........................................................................ 81496 ........................................................................ 81497 ........................................................................ 81498 ........................................................................ 81499 ........................................................................ 81500 ........................................................................ 81501 ........................................................................ 81502 ........................................................................ 81503 ........................................................................ 81504 ........................................................................ 81505 ........................................................................ 81506 ........................................................................ 81507 ........................................................................ 81508 ........................................................................ 81509 ........................................................................ 81510 ........................................................................ 81511 ........................................................................ 81512 ........................................................................ 81513 ........................................................................ 81514 ........................................................................ 81515 ........................................................................ 81516 ........................................................................ 81517 ........................................................................ 81518 ........................................................................ 81519 ........................................................................ 81520 ........................................................................ 81521 ........................................................................ 81522 ........................................................................ 81523 ........................................................................ 81524 ........................................................................ 81525 ........................................................................ 81526 ........................................................................ 81527 ........................................................................ 81528 ........................................................................ 81529 ........................................................................ 81530 ........................................................................ 81531 ........................................................................ 81532 ........................................................................ 81533 ........................................................................ 81534 ........................................................................ 81535 ........................................................................ 81536 ........................................................................ 81537 ........................................................................ 81538 ........................................................................ 81539 ........................................................................ 81540 ........................................................................ 81541 ........................................................................ 81542 ........................................................................ 81543 ........................................................................ 81544 ........................................................................ 81545 ........................................................................ 81546 ........................................................................ 81547 ........................................................................ 81548 ........................................................................ 81549 ........................................................................ 81550 ........................................................................ 81551 ........................................................................ 81552 ........................................................................ 81553 ........................................................................ 81554 ........................................................................ 81555 ........................................................................ 81556 ........................................................................ 81557 ........................................................................ 81558 ........................................................................ 81559 ........................................................................ 81560 ........................................................................ 81561 ........................................................................ 81562 ........................................................................ 81563 ........................................................................ 81564 ........................................................................ 81565 ........................................................................ 81566 ........................................................................ 81567 ........................................................................ 81568 ........................................................................ 81569 ........................................................................ 81570 ........................................................................ 81571 ........................................................................ 81572 ........................................................................ 81573 ........................................................................ 81574 ........................................................................ 81575 ........................................................................ 81576 ........................................................................ 81577 ........................................................................ 81578 ........................................................................ 81579 ........................................................................ 81580 ........................................................................ 81581 ........................................................................ 81582 ........................................................................ 81583 ........................................................................ 81584 ........................................................................ 81585 ........................................................................ 81586 ........................................................................ 81587 ........................................................................ 81588 ........................................................................ 81589 ........................................................................ 81590 ........................................................................ 81591 ........................................................................ 81592 ........................................................................ 81593 ........................................................................ 81594 ........................................................................ 81595 ........................................................................ 81596 ........................................................................ 81597 ........................................................................ 81598 ........................................................................ 81599 ........................................................................ 81600 ........................................................................ 81601 ........................................................................ 81602 ........................................................................ 81603 ........................................................................ 81604 ........................................................................ 81605 ........................................................................ 81606 ........................................................................ 81607 ........................................................................ 81608 ........................................................................ 81609 ........................................................................ 81610 ........................................................................ 81611 ........................................................................ 81612 ........................................................................ 81613 ........................................................................ 81614 ........................................................................ 81615 ........................................................................ 81616 ........................................................................ 81617 ........................................................................ 81618 ........................................................................ 81619 ........................................................................ 81620 ........................................................................ 81621 ........................................................................ 81622 ........................................................................ 81623 ........................................................................ 81624 ........................................................................ 81625 ........................................................................ 81626 ........................................................................ 81627 ........................................................................ 81628 ........................................................................ 81629 ........................................................................ 81630 ........................................................................ 81631 ........................................................................ 81632 ........................................................................ 81633 ........................................................................ 81634 ........................................................................ 81635 ........................................................................ 81636 ........................................................................ 81637 ........................................................................ 81638 ........................................................................ 81639 ........................................................................ 81640 ........................................................................ 81641 ........................................................................ 81642 ........................................................................ 81643 ........................................................................ 81644 ........................................................................ 81645 ........................................................................ 81646 ........................................................................ 81647 ........................................................................ 81648 ........................................................................ 81649 ........................................................................ 81650 ........................................................................ 81651 ........................................................................ 81652 ........................................................................ 81653 ........................................................................ 81654 ........................................................................ 81655 ........................................................................ 81656 ........................................................................ 81657 ........................................................................ 81658 ........................................................................ 81659 ........................................................................ 81660 ........................................................................ 81661 ........................................................................ 81662 ........................................................................ 81663 ........................................................................ 81664 ........................................................................ 81665 ........................................................................ 81666 ........................................................................ 81667 ........................................................................ 81668 ........................................................................ 81669 ........................................................................ 81670 ........................................................................ 81671 ........................................................................ 81672 ........................................................................ 81673 ........................................................................ 81674 ........................................................................ 81675 ........................................................................ 81676 ........................................................................ 81677 ........................................................................ 81678 ........................................................................ 81679 ........................................................................ 81680 ........................................................................ 81681 ........................................................................ 81682 ........................................................................ 81683 ........................................................................ 81684 ........................................................................ 81685 ........................................................................ 81686 ........................................................................ 81687 ........................................................................ 81688 ........................................................................ 81689 ........................................................................ 81690 ........................................................................ 81691 ........................................................................ 81692 ........................................................................ 81693 ........................................................................ 81694 ........................................................................ 81695 ........................................................................ 81696 ........................................................................ 81697 ........................................................................ 81698 ........................................................................ 81699 ........................................................................ 81700 ........................................................................ 81701 ........................................................................ 81702 ........................................................................ 81703 ........................................................................ 81704 ........................................................................ 81705 ........................................................................ 81706 ........................................................................ 81707 ........................................................................ 81708 ........................................................................ 81709 ........................................................................ 81710 ........................................................................ 81711 ........................................................................ 81712 ........................................................................ 81713 ........................................................................ 81714 ........................................................................ 81715 ........................................................................ 81716 ........................................................................ 81717 ........................................................................ 81718 ........................................................................ 81719 ........................................................................ 81720 ........................................................................ 81721 ........................................................................ 81722 ........................................................................ 81723 ........................................................................ 81724 ........................................................................ 81725 ........................................................................ 81726 ........................................................................ 81727 ........................................................................ 81728 ........................................................................ 81729 ........................................................................ 81730 ........................................................................ 81731 ........................................................................ 81732 ........................................................................ 81733 ........................................................................ 81734 ........................................................................ 81735 ........................................................................ 81736 ........................................................................ 81737 ........................................................................ 81738 ........................................................................ 81739 ........................................................................ 81740 ........................................................................ 81741 ........................................................................ 81742 ........................................................................ 81743 ........................................................................ 81744 ........................................................................ 81745 ........................................................................ 81746 ........................................................................ 81747 ........................................................................ 81748 ........................................................................ 81749 ........................................................................ 81750 ........................................................................ 81751 ........................................................................ 81752 ........................................................................ 81753 ........................................................................ 81754 ........................................................................ 81755 ........................................................................ 81756 ........................................................................ 81757 ........................................................................ 81758 ........................................................................ 81759 ........................................................................ 81760 ........................................................................ 81761 ........................................................................ 81762 ........................................................................ 81763 ........................................................................ 81764 ........................................................................ 81765 ........................................................................ 81766 ........................................................................ 81767 ........................................................................ 81768 ........................................................................ 81769 ........................................................................ 81770 ........................................................................ 81771 ........................................................................ 81772 ........................................................................ 81773 ........................................................................ 81774 ........................................................................ 81775 ........................................................................ 81776 ........................................................................ 81777 ........................................................................ 81778 ........................................................................ 81779 ........................................................................ 81780 ........................................................................ 81781 ........................................................................ 81782 ........................................................................ 81783 ........................................................................ 81784 ........................................................................ 81785 ........................................................................ 81786 ........................................................................ 81787 ........................................................................ 81788 ........................................................................ 81789 ........................................................................ 81790 ........................................................................ 81791 ........................................................................ 81792 ........................................................................ 81793 ........................................................................ 81794 ........................................................................ 81795 ........................................................................ 81796 ........................................................................ 81797 ........................................................................ 81798 ........................................................................ 81799 ........................................................................ 81800 ........................................................................ 81801 ........................................................................ 81802 ........................................................................ 81803 ........................................................................ 81804 ........................................................................ 81805 ........................................................................ 81806 ........................................................................ 81807 ........................................................................ 81808 ........................................................................ 81809 ........................................................................ 81810 ........................................................................ 81811 ........................................................................ 81812 ........................................................................ 81813 ........................................................................ 81814 ........................................................................ 81815 ........................................................................ 81816 ........................................................................ 81817 ........................................................................ 81818 ........................................................................ 81819 ........................................................................ 81820 ........................................................................ 81821 ........................................................................ 81822 ........................................................................ 81823 ........................................................................ 81824 ........................................................................ 81825 ........................................................................ 81826 ........................................................................ 81827 ........................................................................ 81828 ........................................................................ 81829 ........................................................................ 81830 ........................................................................ 81831 ........................................................................ 81832 ........................................................................ 81833 ........................................................................ 81834 ........................................................................ 81835 ........................................................................ 81836 ........................................................................ 81837 ........................................................................ 81838 ........................................................................ 81839 ........................................................................ 81840 ........................................................................ 81841 ........................................................................ 81842 ........................................................................ 81843 ........................................................................ 81844 ........................................................................ 81845 ........................................................................ 81846 ........................................................................ 81847 ........................................................................ 81848 ........................................................................ 81849 ........................................................................ 81850 ........................................................................ 81851 ........................................................................ 81852 ........................................................................ 81853 ........................................................................ 81854 ........................................................................ 81855 ........................................................................ 81856 ........................................................................ 81857 ........................................................................ 81858 ........................................................................ 81859 ........................................................................ 81860 ........................................................................ 81861 ........................................................................ 81862 ........................................................................ 81863 ........................................................................ 81864 ........................................................................ 81865 ........................................................................ 81866 ........................................................................ 81867 ........................................................................ 81868 ........................................................................ 81869 ........................................................................ 81870 ........................................................................ 81871 ........................................................................ 81872 ........................................................................ 81873 ........................................................................ 81874 ........................................................................ 81875 ........................................................................ 81876 ........................................................................ 81877 ........................................................................ 81878 ........................................................................ 81879 ........................................................................ 81880 ........................................................................ 81881 ........................................................................ 81882 ........................................................................ 81883 ........................................................................ 81884 ........................................................................ 81885 ........................................................................ 81886 ........................................................................ 81887 ........................................................................ 81888 ........................................................................ 81889 ........................................................................ 81890 ........................................................................ 81891 ........................................................................ 81892 ........................................................................ 81893 ........................................................................ 81894 ........................................................................ 81895 ........................................................................ 81896 ........................................................................ 81897 ........................................................................ 81898 ........................................................................ 81899 ........................................................................ 81900 ........................................................................ 81901 ........................................................................ 81902 ........................................................................ 81903 ........................................................................ 81904 ........................................................................ 81905 ........................................................................ 81906 ........................................................................ 81907 ........................................................................ 81908 ........................................................................ 81909 ........................................................................ 81910 ........................................................................ 81911 ........................................................................ 81912 ........................................................................ 81913 ........................................................................ 81914 ........................................................................ 81915 ........................................................................ 81916 ........................................................................ 81917 ........................................................................ 81918 ........................................................................ 81919 ........................................................................ 81920 ........................................................................ 81921 ........................................................................ 81922 ........................................................................ 81923 ........................................................................ 81924 ........................................................................ 81925 ........................................................................ 81926 ........................................................................ 81927 ........................................................................ 81928 ........................................................................ 81929 ........................................................................ 81930 ........................................................................ 81931 ........................................................................ 81932 ........................................................................ 81933 ........................................................................ 81934 ........................................................................ 81935 ........................................................................ 81936 ........................................................................ 81937 ........................................................................ 81938 ........................................................................ 81939 ........................................................................ 81940 ........................................................................ 81941 ........................................................................ 81942 ........................................................................ 81943 ........................................................................ 81944 ........................................................................ 81945 ........................................................................ 81946 ........................................................................ 81947 ........................................................................ 81948 ........................................................................ 81949 ........................................................................ 81950 ........................................................................ 81951 ........................................................................ 81952 ........................................................................ 81953 ........................................................................ 81954 ........................................................................ 81955 ........................................................................ 81956 ........................................................................ 81957 ........................................................................ 81958 ........................................................................ 81959 ........................................................................ 81960 ........................................................................ 81961 ........................................................................ 81962 ........................................................................ 81963 ........................................................................ 81964 ........................................................................ 81965 ........................................................................ 81966 ........................................................................ 81967 ........................................................................ 81968 ........................................................................ 81969 ........................................................................ 81970 ........................................................................ 81971 ........................................................................ 81972 ........................................................................ 81973 ........................................................................ 81974 ........................................................................ 81975 ........................................................................ 81976 ........................................................................ 81977 ........................................................................ 81978 ........................................................................ 81979 ........................................................................ 81980 ........................................................................ 81981 ........................................................................ 81982 ........................................................................ 81983 ........................................................................ 81984 ........................................................................ 81985 ........................................................................ 81986 ........................................................................ 81987 ........................................................................ 81988 ........................................................................ 81989 ........................................................................ 81990 ........................................................................ 81991 ........................................................................ 81992 ........................................................................ 81993 ........................................................................ 81994 ........................................................................ 81995 ........................................................................ 81996 ........................................................................ 81997 ........................................................................ 81998 ........................................................................ 81999 ........................................................................ 82000 ........................................................................ 82001 ........................................................................ 82002 ........................................................................ 82003 ........................................................................ 82004 ........................................................................ 82005 ........................................................................ 82006 ........................................................................ 82007 ........................................................................ 82008 ........................................................................ 82009 ........................................................................ 82010 ........................................................................ 82011 ........................................................................ 82012 ........................................................................ 82013 ........................................................................ 82014 ........................................................................ 82015 ........................................................................ 82016 ........................................................................ 82017 ........................................................................ 82018 ........................................................................ 82019 ........................................................................ 82020 ........................................................................ 82021 ........................................................................ 82022 ........................................................................ 82023 ........................................................................ 82024 ........................................................................ 82025 ........................................................................ 82026 ........................................................................ 82027 ........................................................................ 82028 ........................................................................ 82029 ........................................................................ 82030 ........................................................................ 82031 ........................................................................ 82032 ........................................................................ 82033 ........................................................................ 82034 ........................................................................ 82035 ........................................................................ 82036 ........................................................................ 82037 ........................................................................ 82038 ........................................................................ 82039 ........................................................................ 82040 ........................................................................ 82041 ........................................................................ 82042 ........................................................................ 82043 ........................................................................ 82044 ........................................................................ 82045 ........................................................................ 82046 ........................................................................ 82047 ........................................................................ 82048 ........................................................................ 82049 ........................................................................ 82050 ........................................................................ 82051 ........................................................................ 82052 ........................................................................ 82053 ........................................................................ 82054 ........................................................................ 82055 ........................................................................ 82056 ........................................................................ 82057 ........................................................................ 82058 ........................................................................ 82059 ........................................................................ 82060 ........................................................................ 82061 ........................................................................ 82062 ........................................................................ 82063 ........................................................................ 82064 ........................................................................ 82065 ........................................................................ 82066 ........................................................................ 82067 ........................................................................ 82068 ........................................................................ 82069 ........................................................................ 82070 ........................................................................ 82071 ........................................................................ 82072 ........................................................................ 82073 ........................................................................ 82074 ........................................................................ 82075 ........................................................................ 82076 ........................................................................ 82077 ........................................................................ 82078 ........................................................................ 82079 ........................................................................ 82080 ........................................................................ 82081 ........................................................................ 82082 ........................................................................ 82083 ........................................................................ 82084 ........................................................................ 82085 ........................................................................ 82086 ........................................................................ 82087 ........................................................................ 82088 ........................................................................ 82089 ........................................................................ 82090 ........................................................................ 82091 ........................................................................ 82092 ........................................................................ 82093 ........................................................................ 82094 ........................................................................ 82095 ........................................................................ 82096 ........................................................................ 82097 ........................................................................ 82098 ........................................................................ 82099 ........................................................................ 82100 ........................................................................ 82101 ........................................................................ 82102 ........................................................................ 82103 ........................................................................ 82104 ........................................................................ 82105 ........................................................................ 82106 ........................................................................ 82107 ........................................................................ 82108 ........................................................................ 82109 ........................................................................ 82110 ........................................................................ 82111 ........................................................................ 82112 ........................................................................ 82113 ........................................................................ 82114 ........................................................................ 82115 ........................................................................ 82116 ........................................................................ 82117 ........................................................................ 82118 ........................................................................ 82119 ........................................................................ 82120 ........................................................................ 82121 ........................................................................ 82122 ........................................................................ 82123 ........................................................................ 82124 ........................................................................ 82125 ........................................................................ 82126 ........................................................................ 82127 ........................................................................ 82128 ........................................................................ 82129 ........................................................................ 82130 ........................................................................ 82131 ........................................................................ 82132 ........................................................................ 82133 ........................................................................ 82134 ........................................................................ 82135 ........................................................................ 82136 ........................................................................ 82137 ........................................................................ 82138 ........................................................................ 82139 ........................................................................ 82140 ........................................................................ 82141 ........................................................................ 82142 ........................................................................ 82143 ........................................................................ 82144 ........................................................................ 82145 ........................................................................ 82146 ........................................................................ 82147 ........................................................................ 82148 ........................................................................ 82149 ........................................................................ 82150 ........................................................................ 82151 ........................................................................ 82152 ........................................................................ 82153 ........................................................................ 82154 ........................................................................ 82155 ........................................................................ 82156 ........................................................................ 82157 ........................................................................ 82158 ........................................................................ 82159 ........................................................................ 82160 ........................................................................ 82161 ........................................................................ 82162 ........................................................................ 82163 ........................................................................ 82164 ........................................................................ 82165 ........................................................................ 82166 ........................................................................ 82167 ........................................................................ 82168 ........................................................................ 82169 ........................................................................ 82170 ........................................................................ 82171 ........................................................................ 82172 ........................................................................ 82173 ........................................................................ 82174 ........................................................................ 82175 ........................................................................ 82176 ........................................................................ 82177 ........................................................................ 82178 ........................................................................ 82179 ........................................................................ 82180 ........................................................................ 82181 ........................................................................ 82182 ........................................................................ 82183 ........................................................................ 82184 ........................................................................ 82185 ........................................................................ 82186 ........................................................................ 82187 ........................................................................ 82188 ........................................................................ 82189 ........................................................................ 82190 ........................................................................ 82191 ........................................................................ 82192 ........................................................................ 82193 ........................................................................ 82194 ........................................................................ 82195 ........................................................................ 82196 ........................................................................ 82197 ........................................................................ 82198 ........................................................................ 82199 ........................................................................ 82200 ........................................................................ 82201 ........................................................................ 82202 ........................................................................ 82203 ........................................................................ 82204 ........................................................................ 82205 ........................................................................ 82206 ........................................................................ 82207 ........................................................................ 82208 ........................................................................ 82209 ........................................................................ 82210 ........................................................................ 82211 ........................................................................ 82212 ........................................................................ 82213 ........................................................................ 82214 ........................................................................ 82215 ........................................................................ 82216 ........................................................................ 82217 ........................................................................ 82218 ........................................................................ 82219 ........................................................................ 82220 ........................................................................ 82221 ........................................................................ 82222 ........................................................................ 82223 ........................................................................ 82224 ........................................................................ 82225 ........................................................................ 82226 ........................................................................ 82227 ........................................................................ 82228 ........................................................................ 82229 ........................................................................ 82230 ........................................................................ 82231 ........................................................................ 82232 ........................................................................ 82233 ........................................................................ 82234 ........................................................................ 82235 ........................................................................ 82236 ........................................................................ 82237 ........................................................................ 82238 ........................................................................ 82239 ........................................................................ 82240 ........................................................................ 82241 ........................................................................ 82242 ........................................................................ 82243 ........................................................................ 82244 ........................................................................ 82245 ........................................................................ 82246 ........................................................................ 82247 ........................................................................ 82248 ........................................................................ 82249 ........................................................................ 82250 ........................................................................ 82251 ........................................................................ 82252 ........................................................................ 82253 ........................................................................ 82254 ........................................................................ 82255 ........................................................................ 82256 ........................................................................ 82257 ........................................................................ 82258 ........................................................................ 82259 ........................................................................ 82260 ........................................................................ 82261 ........................................................................ 82262 ........................................................................ 82263 ........................................................................ 82264 ........................................................................ 82265 ........................................................................ 82266 ........................................................................ 82267 ........................................................................ 82268 ........................................................................ 82269 ........................................................................ 82270 ........................................................................ 82271 ........................................................................ 82272 ........................................................................ 82273 ........................................................................ 82274 ........................................................................ 82275 ........................................................................ 82276 ........................................................................ 82277 ........................................................................ 82278 ........................................................................ 82279 ........................................................................ 82280 ........................................................................ 82281 ........................................................................ 82282 ........................................................................ 82283 ........................................................................ 82284 ........................................................................ 82285 ........................................................................ 82286 ........................................................................ 82287 ........................................................................ 82288 ........................................................................ 82289 ........................................................................ 82290 ........................................................................ 82291 ........................................................................ 82292 ........................................................................ 82293 ........................................................................ 82294 ........................................................................ 82295 ........................................................................ 82296 ........................................................................ 82297 ........................................................................ 82298 ........................................................................ 82299 ........................................................................ 82300 ........................................................................ 82301 ........................................................................ 82302 ........................................................................ 82303 ........................................................................ 82304 ........................................................................ 82305 ........................................................................ 82306 ........................................................................ 82307 ........................................................................ 82308 ........................................................................ 82309 ........................................................................ 82310 ........................................................................ 82311 ........................................................................ 82312 ........................................................................ 82313 ........................................................................ 82314 ........................................................................ 82315 ........................................................................ 82316 ........................................................................ 82317 ........................................................................ 82318 ........................................................................ 82319 ........................................................................ 82320 ........................................................................ 82321 ........................................................................ 82322 ........................................................................ 82323 ........................................................................ 82324 ........................................................................ 82325 ........................................................................ 82326 ........................................................................ 82327 ........................................................................ 82328 ........................................................................ 82329 ........................................................................ 82330 ........................................................................ 82331 ........................................................................ 82332 ........................................................................ 82333 ........................................................................ 82334 ........................................................................ 82335 ........................................................................ 82336 ........................................................................ 82337 ........................................................................ 82338 ........................................................................ 82339 ........................................................................ 82340 ........................................................................ 82341 ........................................................................ 82342 ........................................................................ 82343 ........................................................................ 82344 ........................................................................ 82345 ........................................................................ 82346 ........................................................................ 82347 ........................................................................ 82348 ........................................................................ 82349 ........................................................................ 82350 ........................................................................ 82351 ........................................................................ 82352 ........................................................................ 82353 ........................................................................ 82354 ........................................................................ 82355 ........................................................................ 82356 ........................................................................ 82357 ........................................................................ 82358 ........................................................................ 82359 ........................................................................ 82360 ........................................................................ 82361 ........................................................................ 82362 ........................................................................ 82363 ........................................................................ 82364 ........................................................................ 82365 ........................................................................ 82366 ........................................................................ 82367 ........................................................................ 82368 ........................................................................ 82369 ........................................................................ 82370 ........................................................................ 82371 ........................................................................ 82372 ........................................................................ 82373 ........................................................................ 82374 ........................................................................ 82375 ........................................................................ 82376 ........................................................................ 82377 ........................................................................ 82378 ........................................................................ 82379 ........................................................................ 82380 ........................................................................ 82381 ........................................................................ 82382 ........................................................................ 82383 ........................................................................ 82384 ........................................................................ 82385 ........................................................................ 82386 ........................................................................ 82387 ........................................................................ 82388 ........................................................................ 82389 ........................................................................ 82390 ........................................................................ 82391 ........................................................................ 82392 ........................................................................ 82393 ........................................................................ 82394 ........................................................................ 82395 ........................................................................ 82396 ........................................................................ 82397 ........................................................................ 82398 ........................................................................ 82399 ........................................................................ 82400 ........................................................................ 82401 ........................................................................ 82402 ........................................................................ 82403 ........................................................................ 82404 ........................................................................ 82405 ........................................................................ 82406 ........................................................................ 82407 ........................................................................ 82408 ........................................................................ 82409 ........................................................................ 82410 ........................................................................ 82411 ........................................................................ 82412 ........................................................................ 82413 ........................................................................ 82414 ........................................................................ 82415 ........................................................................ 82416 ........................................................................ 82417 ........................................................................ 82418 ........................................................................ 82419 ........................................................................ 82420 ........................................................................ 82421 ........................................................................ 82422 ........................................................................ 82423 ........................................................................ 82424 ........................................................................ 82425 ........................................................................ 82426 ........................................................................ 82427 ........................................................................ 82428 ........................................................................ 82429 ........................................................................ 82430 ........................................................................ 82431 ........................................................................ 82432 ........................................................................ 82433 ........................................................................ 82434 ........................................................................ 82435 ........................................................................ 82436 ........................................................................ 82437 ........................................................................ 82438 ........................................................................ 82439 ........................................................................ 82440 ........................................................................ 82441 ........................................................................ 82442 ........................................................................ 82443 ........................................................................ 82444 ........................................................................ 82445 ........................................................................ 82446 ........................................................................ 82447 ........................................................................ 82448 ........................................................................ 82449 ........................................................................ 82450 ........................................................................ 82451 ........................................................................ 82452 ........................................................................ 82453 ........................................................................ 82454 ........................................................................ 82455 ........................................................................ 82456 ........................................................................ 82457 ........................................................................ 82458 ........................................................................ 82459 ........................................................................ 82460 ........................................................................ 82461 ........................................................................ 82462 ........................................................................ 82463 ........................................................................ 82464 ........................................................................ 82465 ........................................................................ 82466 ........................................................................ 82467 ........................................................................ 82468 ........................................................................ 82469 ........................................................................ 82470 ........................................................................ 82471 ........................................................................ 82472 ........................................................................ 82473 ........................................................................ 82474 ........................................................................ 82475 ........................................................................ 82476 ........................................................................ 82477 ........................................................................ 82478 ........................................................................ 82479 ........................................................................ 82480 ........................................................................ 82481 ........................................................................ 82482 ........................................................................ 82483 ........................................................................ 82484 ........................................................................ 82485 ........................................................................ 82486 ........................................................................ 82487 ........................................................................ 82488 ........................................................................ 82489 ........................................................................ 82490 ........................................................................ 82491 ........................................................................ 82492 ........................................................................ 82493 ........................................................................ 82494 ........................................................................ 82495 ........................................................................ 82496 ........................................................................ 82497 ........................................................................ 82498 ........................................................................ 82499 ........................................................................ 82500 ........................................................................ 82501 ........................................................................ 82502 ........................................................................ 82503 ........................................................................ 82504 ........................................................................ 82505 ........................................................................ 82506 ........................................................................ 82507 ........................................................................ 82508 ........................................................................ 82509 ........................................................................ 82510 ........................................................................ 82511 ........................................................................ 82512 ........................................................................ 82513 ........................................................................ 82514 ........................................................................ 82515 ........................................................................ 82516 ........................................................................ 82517 ........................................................................ 82518 ........................................................................ 82519 ........................................................................ 82520 ........................................................................ 82521 ........................................................................ 82522 ........................................................................ 82523 ........................................................................ 82524 ........................................................................ 82525 ........................................................................ 82526 ........................................................................ 82527 ........................................................................ 82528 ........................................................................ 82529 ........................................................................ 82530 ........................................................................ 82531 ........................................................................ 82532 ........................................................................ 82533 ........................................................................ 82534 ........................................................................ 82535 ........................................................................ 82536 ........................................................................ 82537 ........................................................................ 82538 ........................................................................ 82539 ........................................................................ 82540 ........................................................................ 82541 ........................................................................ 82542 ........................................................................ 82543 ........................................................................ 82544 ........................................................................ 82545 ........................................................................ 82546 ........................................................................ 82547 ........................................................................ 82548 ........................................................................ 82549 ........................................................................ 82550 ........................................................................ 82551 ........................................................................ 82552 ........................................................................ 82553 ........................................................................ 82554 ........................................................................ 82555 ........................................................................ 82556 ........................................................................ 82557 ........................................................................ 82558 ........................................................................ 82559 ........................................................................ 82560 ........................................................................ 82561 ........................................................................ 82562 ........................................................................ 82563 ........................................................................ 82564 ........................................................................ 82565 ........................................................................ 82566 ........................................................................ 82567 ........................................................................ 82568 ........................................................................ 82569 ........................................................................ 82570 ........................................................................ 82571 ........................................................................ 82572 ........................................................................ 82573 ........................................................................ 82574 ........................................................................ 82575 ........................................................................ 82576 ........................................................................ 82577 ........................................................................ 82578 ........................................................................ 82579 ........................................................................ 82580 ........................................................................ 82581 ........................................................................ 82582 ........................................................................ 82583 ........................................................................ 82584 ........................................................................ 82585 ........................................................................ 82586 ........................................................................ 82587 ........................................................................ 82588 ........................................................................ 82589 ........................................................................ 82590 ........................................................................ 82591 ........................................................................ 82592 ........................................................................ 82593 ........................................................................ 82594 ........................................................................ 82595 ........................................................................ 82596 ........................................................................ 82597 ........................................................................ 82598 ........................................................................ 82599 ........................................................................ 82600 ........................................................................ 82601 ........................................................................ 82602 ........................................................................ 82603 ........................................................................ 82604 ........................................................................ 82605 ........................................................................ 82606 ........................................................................ 82607 ........................................................................ 82608 ........................................................................ 82609 ........................................................................ 82610 ........................................................................ 82611 ........................................................................ 82612 ........................................................................ 82613 ........................................................................ 82614 ........................................................................ 82615 ........................................................................ 82616 ........................................................................ 82617 ........................................................................ 82618 ........................................................................ 82619 ........................................................................ 82620 ........................................................................ 82621 ........................................................................ 82622 ........................................................................ 82623 ........................................................................ 82624 ........................................................................ 82625 ........................................................................ 82626 ........................................................................ 82627 ........................................................................ 82628 ........................................................................ 82629 ........................................................................ 82630 ........................................................................ 82631 ........................................................................ 82632 ........................................................................ 82633 ........................................................................ 82634 ........................................................................ 82635 ........................................................................ 82636 ........................................................................ 82637 ........................................................................ 82638 ........................................................................ 82639 ........................................................................ 82640 ........................................................................ 82641 ........................................................................ 82642 ........................................................................ 82643 ........................................................................ 82644 ........................................................................ 82645 ........................................................................ 82646 ........................................................................ 82647 ........................................................................ 82648 ........................................................................ 82649 ........................................................................ 82650 ........................................................................ 82651 ........................................................................ 82652 ........................................................................ 82653 ........................................................................ 82654 ........................................................................ 82655 ........................................................................ 82656 ........................................................................ 82657 ........................................................................ 82658 ........................................................................ 82659 ........................................................................ 82660 ........................................................................ 82661 ........................................................................ 82662 ........................................................................ 82663 ........................................................................ 82664 ........................................................................ 82665 ........................................................................ 82666 ........................................................................ 82667 ........................................................................ 82668 ........................................................................ 82669 ........................................................................ 82670 ........................................................................ 82671 ........................................................................ 82672 ........................................................................ 82673 ........................................................................ 82674 ........................................................................ 82675 ........................................................................ 82676 ........................................................................ 82677 ........................................................................ 82678 ........................................................................ 82679 ........................................................................ 82680 ........................................................................ 82681 ........................................................................ 82682 ........................................................................ 82683 ........................................................................ 82684 ........................................................................ 82685 ........................................................................ 82686 ........................................................................ 82687 ........................................................................ 82688 ........................................................................ 82689 ........................................................................ 82690 ........................................................................ 82691 ........................................................................ 82692 ........................................................................ 82693 ........................................................................ 82694 ........................................................................ 82695 ........................................................................ 82696 ........................................................................ 82697 ........................................................................ 82698 ........................................................................ 82699 ........................................................................ 82700 ........................................................................ 82701 ........................................................................ 82702 ........................................................................ 82703 ........................................................................ 82704 ........................................................................ 82705 ........................................................................ 82706 ........................................................................ 82707 ........................................................................ 82708 ........................................................................ 82709 ........................................................................ 82710 ........................................................................ 82711 ........................................................................ 82712 ........................................................................ 82713 ........................................................................ 82714 ........................................................................ 82715 ........................................................................ 82716 ........................................................................ 82717 ........................................................................ 82718 ........................................................................ 82719 ........................................................................ 82720 ........................................................................ 82721 ........................................................................ 82722 ........................................................................ 82723 ........................................................................ 82724 ........................................................................ 82725 ........................................................................ 82726 ........................................................................ 82727 ........................................................................ 82728 ........................................................................ 82729 ........................................................................ 82730 ........................................................................ 82731 ........................................................................ 82732 ........................................................................ 82733 ........................................................................ 82734 ........................................................................ 82735 ........................................................................ 82736 ........................................................................ 82737 ........................................................................ 82738 ........................................................................ 82739 ........................................................................ 82740 ........................................................................ 82741 ........................................................................ 82742 ........................................................................ 82743 ........................................................................ 82744 ........................................................................ 82745 ........................................................................ 82746 ........................................................................ 82747 ........................................................................ 82748 ........................................................................ 82749 ........................................................................ 82750 ........................................................................ 82751 ........................................................................ 82752 ........................................................................ 82753 ........................................................................ 82754 ........................................................................ 82755 ........................................................................ 82756 ........................................................................ 82757 ........................................................................ 82758 ........................................................................ 82759 ........................................................................ 82760 ........................................................................ 82761 ........................................................................ 82762 ........................................................................ 82763 ........................................................................ 82764 ........................................................................ 82765 ........................................................................ 82766 ........................................................................ 82767 ........................................................................ 82768 ........................................................................ 82769 ........................................................................ 82770 ........................................................................ 82771 ........................................................................ 82772 ........................................................................ 82773 ........................................................................ 82774 ........................................................................ 82775 ........................................................................ 82776 ........................................................................ 82777 ........................................................................ 82778 ........................................................................ 82779 ........................................................................ 82780 ........................................................................ 82781 ........................................................................ 82782 ........................................................................ 82783 ........................................................................ 82784 ........................................................................ 82785 ........................................................................ 82786 ........................................................................ 82787 ........................................................................ 82788 ........................................................................ 82789 ........................................................................ 82790 ........................................................................ 82791 ........................................................................ 82792 ........................................................................ 82793 ........................................................................ 82794 ........................................................................ 82795 ........................................................................ 82796 ........................................................................ 82797 ........................................................................ 82798 ........................................................................ 82799 ........................................................................ 82800 ........................................................................ 82801 ........................................................................ 82802 ........................................................................ 82803 ........................................................................ 82804 ........................................................................ 82805 ........................................................................ 82806 ........................................................................ 82807 ........................................................................ 82808 ........................................................................ 82809 ........................................................................ 82810 ........................................................................ 82811 ........................................................................ 82812 ........................................................................ 82813 ........................................................................ 82814 ........................................................................ 82815 ........................................................................ 82816 ........................................................................ 82817 ........................................................................ 82818 ........................................................................ 82819 ........................................................................ 82820 ........................................................................ 82821 ........................................................................ 82822 ........................................................................ 82823 ........................................................................ 82824 ........................................................................ 82825 ........................................................................ 82826 ........................................................................ 82827 ........................................................................ 82828 ........................................................................ 82829 ........................................................................ 82830 ........................................................................ 82831 ........................................................................ 82832 ........................................................................ 82833 ........................................................................ 82834 ........................................................................ 82835 ........................................................................ 82836 ........................................................................ 82837 ........................................................................ 82838 ........................................................................ 82839 ........................................................................ 82840 ........................................................................ 82841 ........................................................................ 82842 ........................................................................ 82843 ........................................................................ 82844 ........................................................................ 82845 ........................................................................ 82846 ........................................................................ 82847 ........................................................................ 82848 ........................................................................ 82849 ........................................................................ 82850 ........................................................................ 82851 ........................................................................ 82852 ........................................................................ 82853 ........................................................................ 82854 ........................................................................ 82855 ........................................................................ 82856 ........................................................................ 82857 ........................................................................ 82858 ........................................................................ 82859 ........................................................................ 82860 ........................................................................ 82861 ........................................................................ 82862 ........................................................................ 82863 ........................................................................ 82864 ........................................................................ 82865 ........................................................................ 82866 ........................................................................ 82867 ........................................................................ 82868 ........................................................................ 82869 ........................................................................ 82870 ........................................................................ 82871 ........................................................................ 82872 ........................................................................ 82873 ........................................................................ 82874 ........................................................................ 82875 ........................................................................ 82876 ........................................................................ 82877 ........................................................................ 82878 ........................................................................ 82879 ........................................................................ 82880 ........................................................................ 82881 ........................................................................ 82882 ........................................................................ 82883 ........................................................................ 82884 ........................................................................ 82885 ........................................................................ 82886 ........................................................................ 82887 ........................................................................ 82888 ........................................................................ 82889 ........................................................................ 82890 ........................................................................ 82891 ........................................................................ 82892 ........................................................................ 82893 ........................................................................ 82894 ........................................................................ 82895 ........................................................................ 82896 ........................................................................ 82897 ........................................................................ 82898 ........................................................................ 82899 ........................................................................ 82900 ........................................................................ 82901 ........................................................................ 82902 ........................................................................ 82903 ........................................................................ 82904 ........................................................................ 82905 ........................................................................ 82906 ........................................................................ 82907 ........................................................................ 82908 ........................................................................ 82909 ........................................................................ 82910 ........................................................................ 82911 ........................................................................ 82912 ........................................................................ 82913 ........................................................................ 82914 ........................................................................ 82915 ........................................................................ 82916 ........................................................................ 82917 ........................................................................ 82918 ........................................................................ 82919 ........................................................................ 82920 ........................................................................ 82921 ........................................................................ 82922 ........................................................................ 82923 ........................................................................ 82924 ........................................................................ 82925 ........................................................................ 82926 ........................................................................ 82927 ........................................................................ 82928 ........................................................................ 82929 ........................................................................ 82930 ........................................................................ 82931 ........................................................................ 82932 ........................................................................ 82933 ........................................................................ 82934 ........................................................................ 82935 ........................................................................ 82936 ........................................................................ 82937 ........................................................................ 82938 ........................................................................ 82939 ........................................................................ 82940 ........................................................................ 82941 ........................................................................ 82942 ........................................................................ 82943 ........................................................................ 82944 ........................................................................ 82945 ........................................................................ 82946 ........................................................................ 82947 ........................................................................ 82948 ........................................................................ 82949 ........................................................................ 82950 ........................................................................ 82951 ........................................................................ 82952 ........................................................................ 82953 ........................................................................ 82954 ........................................................................ 82955 ........................................................................ 82956 ........................................................................ 82957 ........................................................................ 82958 ........................................................................ 82959 ........................................................................ 82960 ........................................................................ 82961 ........................................................................ 82962 ........................................................................ 82963 ........................................................................ 82964 ........................................................................ 82965 ........................................................................ 82966 ........................................................................ 82967 ........................................................................ 82968 ........................................................................ 82969 ........................................................................ 82970 ........................................................................ 82971 ........................................................................ 82972 ........................................................................ 82973 ........................................................................ 82974 ........................................................................ 82975 ........................................................................ 82976 ........................................................................ 82977 ........................................................................ 82978 ........................................................................ 82979 ........................................................................ 82980 ........................................................................ 82981 ........................................................................ 82982 ........................................................................ 82983 ........................................................................ 82984 ........................................................................ 82985 ........................................................................ 82986 ........................................................................ 82987 ........................................................................ 82988 ........................................................................ 82989 ........................................................................ 82990 ........................................................................ 82991 ........................................................................ 82992 ........................................................................ 82993 ........................................................................ 82994 ........................................................................ 82995 ........................................................................ 82996 ........................................................................ 82997 ........................................................................ 82998 ........................................................................ 82999 ........................................................................ 83000 ........................................................................ 83001 ........................................................................ 83002 ........................................................................ 83003 ........................................................................ 83004 ........................................................................ 83005 ........................................................................ 83006 ........................................................................ 83007 ........................................................................ 83008 ........................................................................ 83009 ........................................................................ 83010 ........................................................................ 83011 ........................................................................ 83012 ........................................................................ 83013 ........................................................................ 83014 ........................................................................ 83015 ........................................................................ 83016 ........................................................................ 83017 ........................................................................ 83018 ........................................................................ 83019 ........................................................................ 83020 ........................................................................ 83021 ........................................................................ 83022 ........................................................................ 83023 ........................................................................ 83024 ........................................................................ 83025 ........................................................................ 83026 ........................................................................ 83027 ........................................................................ 83028 ........................................................................ 83029 ........................................................................ 83030 ........................................................................ 83031 ........................................................................ 83032 ........................................................................ 83033 ........................................................................ 83034 ........................................................................ 83035 ........................................................................ 83036 ........................................................................ 83037 ........................................................................ 83038 ........................................................................ 83039 ........................................................................ 83040 ........................................................................ 83041 ........................................................................ 83042 ........................................................................ 83043 ........................................................................ 83044 ........................................................................ 83045 ........................................................................ 83046 ........................................................................ 83047 ........................................................................ 83048 ........................................................................ 83049 ........................................................................ 83050 ........................................................................ 83051 ........................................................................ 83052 ........................................................................ 83053 ........................................................................ 83054 ........................................................................ 83055 ........................................................................ 83056 ........................................................................ 83057 ........................................................................ 83058 ........................................................................ 83059 ........................................................................ 83060 ........................................................................ 83061 ........................................................................ 83062 ........................................................................ 83063 ........................................................................ 83064 ........................................................................ 83065 ........................................................................ 83066 ........................................................................ 83067 ........................................................................ 83068 ........................................................................ 83069 ........................................................................ 83070 ........................................................................ 83071 ........................................................................ 83072 ........................................................................ 83073 ........................................................................ 83074 ........................................................................ 83075 ........................................................................ 83076 ........................................................................ 83077 ........................................................................ 83078 ........................................................................ 83079 ........................................................................ 83080 ........................................................................ 83081 ........................................................................ 83082 ........................................................................ 83083 ........................................................................ 83084 ........................................................................ 83085 ........................................................................ 83086 ........................................................................ 83087 ........................................................................ 83088 ........................................................................ 83089 ........................................................................ 83090 ........................................................................ 83091 ........................................................................ 83092 ........................................................................ 83093 ........................................................................ 83094 ........................................................................ 83095 ........................................................................ 83096 ........................................................................ 83097 ........................................................................ 83098 ........................................................................ 83099 ........................................................................ 83100 ........................................................................ 83101 ........................................................................ 83102 ........................................................................ 83103 ........................................................................ 83104 ........................................................................ 83105 ........................................................................ 83106 ........................................................................ 83107 ........................................................................ 83108 ........................................................................ 83109 ........................................................................ 83110 ........................................................................ 83111 ........................................................................ 83112 ........................................................................ 83113 ........................................................................ 83114 ........................................................................ 83115 ........................................................................ 83116 ........................................................................ 83117 ........................................................................ 83118 ........................................................................ 83119 ........................................................................ 83120 ........................................................................ 83121 ........................................................................ 83122 ........................................................................ 83123 ........................................................................ 83124 ........................................................................ 83125 ........................................................................ 83126 ........................................................................ 83127 ........................................................................ 83128 ........................................................................ 83129 ........................................................................ 83130 ........................................................................ 83131 ........................................................................ 83132 ........................................................................ 83133 ........................................................................ 83134 ........................................................................ 83135 ........................................................................ 83136 ........................................................................ 83137 ........................................................................ 83138 ........................................................................ 83139 ........................................................................ 83140 ........................................................................ 83141 ........................................................................ 83142 ........................................................................ 83143 ........................................................................ 83144 ........................................................................ 83145 ........................................................................ 83146 ........................................................................ 83147 ........................................................................ 83148 ........................................................................ 83149 ........................................................................ 83150 ........................................................................ 83151 ........................................................................ 83152 ........................................................................ 83153 ........................................................................ 83154 ........................................................................ 83155 ........................................................................ 83156 ........................................................................ 83157 ........................................................................ 83158 ........................................................................ 83159 ........................................................................ 83160 ........................................................................ 83161 ........................................................................ 83162 ........................................................................ 83163 ........................................................................ 83164 ........................................................................ 83165 ........................................................................ 83166 ........................................................................ 83167 ........................................................................ 83168 ........................................................................ 83169 ........................................................................ 83170 ........................................................................ 83171 ........................................................................ 83172 ........................................................................ 83173 ........................................................................ 83174 ........................................................................ 83175 ........................................................................ 83176 ........................................................................ 83177 ........................................................................ 83178 ........................................................................ 83179 ........................................................................ 83180 ........................................................................ 83181 ........................................................................ 83182 ........................................................................ 83183 ........................................................................ 83184 ........................................................................ 83185 ........................................................................ 83186 ........................................................................ 83187 ........................................................................ 83188 ........................................................................ 83189 ........................................................................ 83190 ........................................................................ 83191 ........................................................................ 83192 ........................................................................ 83193 ........................................................................ 83194 ........................................................................ 83195 ........................................................................ 83196 ........................................................................ 83197 ........................................................................ 83198 ........................................................................ 83199 ........................................................................ 83200 ........................................................................ 83201 ........................................................................ 83202 ........................................................................ 83203 ........................................................................ 83204 ........................................................................ 83205 ........................................................................ 83206 ........................................................................ 83207 ........................................................................ 83208 ........................................................................ 83209 ........................................................................ 83210 ........................................................................ 83211 ........................................................................ 83212 ........................................................................ 83213 ........................................................................ 83214 ........................................................................ 83215 ........................................................................ 83216 ........................................................................ 83217 ........................................................................ 83218 ........................................................................ 83219 ........................................................................ 83220 ........................................................................ 83221 ........................................................................ 83222 ........................................................................ 83223 ........................................................................ 83224 ........................................................................ 83225 ........................................................................ 83226 ........................................................................ 83227 ........................................................................ 83228 ........................................................................ 83229 ........................................................................ 83230 ........................................................................ 83231 ........................................................................ 83232 ........................................................................ 83233 ........................................................................ 83234 ........................................................................ 83235 ........................................................................ 83236 ........................................................................ 83237 ........................................................................ 83238 ........................................................................ 83239 ........................................................................ 83240 ........................................................................ 83241 ........................................................................ 83242 ........................................................................ 83243 ........................................................................ 83244 ........................................................................ 83245 ........................................................................ 83246 ........................................................................ 83247 ........................................................................ 83248 ........................................................................ 83249 ........................................................................ 83250 ........................................................................ 83251 ........................................................................ 83252 ........................................................................ 83253 ........................................................................ 83254 ........................................................................ 83255 ........................................................................ 83256 ........................................................................ 83257 ........................................................................ 83258 ........................................................................ 83259 ........................................................................ 83260 ........................................................................ 83261 ........................................................................ 83262 ........................................................................ 83263 ........................................................................ 83264 ........................................................................ 83265 ........................................................................ 83266 ........................................................................ 83267 ........................................................................ 83268 ........................................................................ 83269 ........................................................................ 83270 ........................................................................ 83271 ........................................................................ 83272 ........................................................................ 83273 ........................................................................ 83274 ........................................................................ 83275 ........................................................................ 83276 ........................................................................ 83277 ........................................................................ 83278 ........................................................................ 83279 ........................................................................ 83280 ........................................................................ 83281 ........................................................................ 83282 ........................................................................ 83283 ........................................................................ 83284 ........................................................................ 83285 ........................................................................ 83286 ........................................................................ 83287 ........................................................................ 83288 ........................................................................ 83289 ........................................................................ 83290 ........................................................................ 83291 ........................................................................ 83292 ........................................................................ 83293 ........................................................................ 83294 ........................................................................ 83295 ........................................................................ 83296 ........................................................................ 83297 ........................................................................ 83298 ........................................................................ 83299 ........................................................................ 83300 ........................................................................ 83301 ........................................................................ 83302 ........................................................................ 83303 ........................................................................ 83304 ........................................................................ 83305 ........................................................................ 83306 ........................................................................ 83307 ........................................................................ 83308 ........................................................................ 83309 ........................................................................ 83310 ........................................................................ 83311 ........................................................................ 83312 ........................................................................ 83313 ........................................................................ 83314 ........................................................................ 83315 ........................................................................ 83316 ........................................................................ 83317 ........................................................................ 83318 ........................................................................ 83319 ........................................................................ 83320 ........................................................................ 83321 ........................................................................ 83322 ........................................................................ 83323 ........................................................................ 83324 ........................................................................ 83325 ........................................................................ 83326 ........................................................................ 83327 ........................................................................ 83328 ........................................................................ 83329 ........................................................................ 83330 ........................................................................ 83331 ........................................................................ 83332 ........................................................................ 83333 ........................................................................ 83334 ........................................................................ 83335 ........................................................................ 83336 ........................................................................ 83337 ........................................................................ 83338 ........................................................................ 83339 ........................................................................ 83340 ........................................................................ 83341 ........................................................................ 83342 ........................................................................ 83343 ........................................................................ 83344 ........................................................................ 83345 ........................................................................ 83346 ........................................................................ 83347 ........................................................................ 83348 ........................................................................ 83349 ........................................................................ 83350 ........................................................................ 83351 ........................................................................ 83352 ........................................................................ 83353 ........................................................................ 83354 ........................................................................ 83355 ........................................................................ 83356 ........................................................................ 83357 ........................................................................ 83358 ........................................................................ 83359 ........................................................................ 83360 ........................................................................ 83361 ........................................................................ 83362 ........................................................................ 83363 ........................................................................ 83364 ........................................................................ 83365 ........................................................................ 83366 ........................................................................ 83367 ........................................................................ 83368 ........................................................................ 83369 ........................................................................ 83370 ........................................................................ 83371 ........................................................................ 83372 ........................................................................ 83373 ........................................................................ 83374 ........................................................................ 83375 ........................................................................ 83376 ........................................................................ 83377 ........................................................................ 83378 ........................................................................ 83379 ........................................................................ 83380 ........................................................................ 83381 ........................................................................ 83382 ........................................................................ 83383 ........................................................................ 83384 ........................................................................ 83385 ........................................................................ 83386 ........................................................................ 83387 ........................................................................ 83388 ........................................................................ 83389 ........................................................................ 83390 ........................................................................ 83391 ........................................................................ 83392 ........................................................................ 83393 ........................................................................ 83394 ........................................................................ 83395 ........................................................................ 83396 ........................................................................ 83397 ........................................................................ 83398 ........................................................................ 83399 ........................................................................ 83400 ........................................................................ 83401 ........................................................................ 83402 ........................................................................ 83403 ........................................................................ 83404 ........................................................................ 83405 ........................................................................ 83406 ........................................................................ 83407 ........................................................................ 83408 ........................................................................ 83409 ........................................................................ 83410 ........................................................................ 83411 ........................................................................ 83412 ........................................................................ 83413 ........................................................................ 83414 ........................................................................ 83415 ........................................................................ 83416 ........................................................................ 83417 ........................................................................ 83418 ........................................................................ 83419 ........................................................................ 83420 ........................................................................ 83421 ........................................................................ 83422 ........................................................................ 83423 ........................................................................ 83424 ........................................................................ 83425 ........................................................................ 83426 ........................................................................ 83427 ........................................................................ 83428 ........................................................................ 83429 ........................................................................ 83430 ........................................................................ 83431 ........................................................................ 83432 ........................................................................ 83433 ........................................................................ 83434 ........................................................................ 83435 ........................................................................ 83436 ........................................................................ 83437 ........................................................................ 83438 ........................................................................ 83439 ........................................................................ 83440 ........................................................................ 83441 ........................................................................ 83442 ........................................................................ 83443 ........................................................................ 83444 ........................................................................ 83445 ........................................................................ 83446 ........................................................................ 83447 ........................................................................ 83448 ........................................................................ 83449 ........................................................................ 83450 ........................................................................ 83451 ........................................................................ 83452 ........................................................................ 83453 ........................................................................ 83454 ........................................................................ 83455 ........................................................................ 83456 ........................................................................ 83457 ........................................................................ 83458 ........................................................................ 83459 ........................................................................ 83460 ........................................................................ 83461 ........................................................................ 83462 ........................................................................ 83463 ........................................................................ 83464 ........................................................................ 83465 ........................................................................ 83466 ........................................................................ 83467 ........................................................................ 83468 ........................................................................ 83469 ........................................................................ 83470 ........................................................................ 83471 ........................................................................ 83472 ........................................................................ 83473 ........................................................................ 83474 ........................................................................ 83475 ........................................................................ 83476 ........................................................................ 83477 ........................................................................ 83478 ........................................................................ 83479 ........................................................................ 83480 ........................................................................ 83481 ........................................................................ 83482 ........................................................................ 83483 ........................................................................ 83484 ........................................................................ 83485 ........................................................................ 83486 ........................................................................ 83487 ........................................................................ 83488 ........................................................................ 83489 ........................................................................ 83490 ........................................................................ 83491 ........................................................................ 83492 ........................................................................ 83493 ........................................................................ 83494 ........................................................................ 83495 ........................................................................ 83496 ........................................................................ 83497 ........................................................................ 83498 ........................................................................ 83499 ........................................................................ 83500 ........................................................................ 83501 ........................................................................ 83502 ........................................................................ 83503 ........................................................................ 83504 ........................................................................ 83505 ........................................................................ 83506 ........................................................................ 83507 ........................................................................ 83508 ........................................................................ 83509 ........................................................................ 83510 ........................................................................ 83511 ........................................................................ 83512 ........................................................................ 83513 ........................................................................ 83514 ........................................................................ 83515 ........................................................................ 83516 ........................................................................ 83517 ........................................................................ 83518 ........................................................................ 83519 ........................................................................ 83520 ........................................................................ 83521 ........................................................................ 83522 ........................................................................ 83523 ........................................................................ 83524 ........................................................................ 83525 ........................................................................ 83526 ........................................................................ 83527 ........................................................................ 83528 ........................................................................ 83529 ........................................................................ 83530 ........................................................................ 83531 ........................................................................ 83532 ........................................................................ 83533 ........................................................................ 83534 ........................................................................ 83535 ........................................................................ 83536 ........................................................................ 83537 ........................................................................ 83538 ........................................................................ 83539 ........................................................................ 83540 ........................................................................ 83541 ........................................................................ 83542 ........................................................................ 83543 ........................................................................ 83544 ........................................................................ 83545 ........................................................................ 83546 ........................................................................ 83547 ........................................................................ 83548 ........................................................................ 83549 ........................................................................ 83550 ........................................................................ 83551 ........................................................................ 83552 ........................................................................ 83553 ........................................................................ 83554 ........................................................................ 83555 ........................................................................ 83556 ........................................................................ 83557 ........................................................................ 83558 ........................................................................ 83559 ........................................................................ 83560 ........................................................................ 83561 ........................................................................ 83562 ........................................................................ 83563 ........................................................................ 83564 ........................................................................ 83565 ........................................................................ 83566 ........................................................................ 83567 ........................................................................ 83568 ........................................................................ 83569 ........................................................................ 83570 ........................................................................ 83571 ........................................................................ 83572 ........................................................................ 83573 ........................................................................ 83574 ........................................................................ 83575 ........................................................................ 83576 ........................................................................ 83577 ........................................................................ 83578 ........................................................................ 83579 ........................................................................ 83580 ........................................................................ 83581 ........................................................................ 83582 ........................................................................ 83583 ........................................................................ 83584 ........................................................................ 83585 ........................................................................ 83586 ........................................................................ 83587 ........................................................................ 83588 ........................................................................ 83589 ........................................................................ 83590 ........................................................................ 83591 ........................................................................ 83592 ........................................................................ 83593 ........................................................................ 83594 ........................................................................ 83595 ........................................................................ 83596 ........................................................................ 83597 ........................................................................ 83598 ........................................................................ 83599 ........................................................................ 83600 ........................................................................ 83601 ........................................................................ 83602 ........................................................................ 83603 ........................................................................ 83604 ........................................................................ 83605 ........................................................................ 83606 ........................................................................ 83607 ........................................................................ 83608 ........................................................................ 83609 ........................................................................ 83610 ........................................................................ 83611 ........................................................................ 83612 ........................................................................ 83613 ........................................................................ 83614 ........................................................................ 83615 ........................................................................ 83616 ........................................................................ 83617 ........................................................................ 83618 ........................................................................ 83619 ........................................................................ 83620 ........................................................................ 83621 ........................................................................ 83622 ........................................................................ 83623 ........................................................................ 83624 ........................................................................ 83625 ........................................................................ 83626 ........................................................................ 83627 ........................................................................ 83628 ........................................................................ 83629 ........................................................................ 83630 ........................................................................ 83631 ........................................................................ 83632 ........................................................................ 83633 ........................................................................ 83634 ........................................................................ 83635 ........................................................................ 83636 ........................................................................ 83637 ........................................................................ 83638 ........................................................................ 83639 ........................................................................ 83640 ........................................................................ 83641 ........................................................................ 83642 ........................................................................ 83643 ........................................................................ 83644 ........................................................................ 83645 ........................................................................ 83646 ........................................................................ 83647 ........................................................................ 83648 ........................................................................ 83649 ........................................................................ 83650 ........................................................................ 83651 ........................................................................ 83652 ........................................................................ 83653 ........................................................................ 83654 ........................................................................ 83655 ........................................................................ 83656 ........................................................................ 83657 ........................................................................ 83658 ........................................................................ 83659 ........................................................................ 83660 ........................................................................ 83661 ........................................................................ 83662 ........................................................................ 83663 ........................................................................ 83664 ........................................................................ 83665 ........................................................................ 83666 ........................................................................ 83667 ........................................................................ 83668 ........................................................................ 83669 ........................................................................ 83670 ........................................................................ 83671 ........................................................................ 83672 ........................................................................ 83673 ........................................................................ 83674 ........................................................................ 83675 ........................................................................ 83676 ........................................................................ 83677 ........................................................................ 83678 ........................................................................ 83679 ........................................................................ 83680 ........................................................................ 83681 ........................................................................ 83682 ........................................................................ 83683 ........................................................................ 83684 ........................................................................ 83685 ........................................................................ 83686 ........................................................................ 83687 ........................................................................ 83688 ........................................................................ 83689 ........................................................................ 83690 ........................................................................ 83691 ........................................................................ 83692 ........................................................................ 83693 ........................................................................ 83694 ........................................................................ 83695 ........................................................................ 83696 ........................................................................ 83697 ........................................................................ 83698 ........................................................................ 83699 ........................................................................ 83700 ........................................................................ 83701 ........................................................................ 83702 ........................................................................ 83703 ........................................................................ 83704 ........................................................................ 83705 ........................................................................ 83706 ........................................................................ 83707 ........................................................................ 83708 ........................................................................ 83709 ........................................................................ 83710 ........................................................................ 83711 ........................................................................ 83712 ........................................................................ 83713 ........................................................................ 83714 ........................................................................ 83715 ........................................................................ 83716 ........................................................................ 83717 ........................................................................ 83718 ........................................................................ 83719 ........................................................................ 83720 ........................................................................ 83721 ........................................................................ 83722 ........................................................................ 83723 ........................................................................ 83724 ........................................................................ 83725 ........................................................................ 83726 ........................................................................ 83727 ........................................................................ 83728 ........................................................................ 83729 ........................................................................ 83730 ........................................................................ 83731 ........................................................................ 83732 ........................................................................ 83733 ........................................................................ 83734 ........................................................................ 83735 ........................................................................ 83736 ........................................................................ 83737 ........................................................................ 83738 ........................................................................ 83739 ........................................................................ 83740 ........................................................................ 83741 ........................................................................ 83742 ........................................................................ 83743 ........................................................................ 83744 ........................................................................ 83745 ........................................................................ 83746 ........................................................................ 83747 ........................................................................ 83748 ........................................................................ 83749 ........................................................................ 83750 ........................................................................ 83751 ........................................................................ 83752 ........................................................................ 83753 ........................................................................ 83754 ........................................................................ 83755 ........................................................................ 83756 ........................................................................ 83757 ........................................................................ 83758 ........................................................................ 83759 ........................................................................ 83760 ........................................................................ 83761 ........................................................................ 83762 ........................................................................ 83763 ........................................................................ 83764 ........................................................................ 83765 ........................................................................ 83766 ........................................................................ 83767 ........................................................................ 83768 ........................................................................ 83769 ........................................................................ 83770 ........................................................................ 83771 ........................................................................ 83772 ........................................................................ 83773 ........................................................................ 83774 ........................................................................ 83775 ........................................................................ 83776 ........................................................................ 83777 ........................................................................ 83778 ........................................................................ 83779 ........................................................................ 83780 ........................................................................ 83781 ........................................................................ 83782 ........................................................................ 83783 ........................................................................ 83784 ........................................................................ 83785 ........................................................................ 83786 ........................................................................ 83787 ........................................................................ 83788 ........................................................................ 83789 ........................................................................ 83790 ........................................................................ 83791 ........................................................................ 83792 ........................................................................ 83793 ........................................................................ 83794 ........................................................................ 83795 ........................................................................ 83796 ........................................................................ 83797 ........................................................................ 83798 ........................................................................ 83799 ........................................................................ 83800 ........................................................................ 83801 ........................................................................ 83802 ........................................................................ 83803 ........................................................................ 83804 ........................................................................ 83805 ........................................................................ 83806 ........................................................................ 83807 ........................................................................ 83808 ........................................................................ 83809 ........................................................................ 83810 ........................................................................ 83811 ........................................................................ 83812 ........................................................................ 83813 ........................................................................ 83814 ........................................................................ 83815 ........................................................................ 83816 ........................................................................ 83817 ........................................................................ 83818 ........................................................................ 83819 ........................................................................ 83820 ........................................................................ 83821 ........................................................................ 83822 ........................................................................ 83823 ........................................................................ 83824 ........................................................................ 83825 ........................................................................ 83826 ........................................................................ 83827 ........................................................................ 83828 ........................................................................ 83829 ........................................................................ 83830 ........................................................................ 83831 ........................................................................ 83832 ........................................................................ 83833 ........................................................................ 83834 ........................................................................ 83835 ........................................................................ 83836 ........................................................................ 83837 ........................................................................ 83838 ........................................................................ 83839 ........................................................................ 83840 ........................................................................ 83841 ........................................................................ 83842 ........................................................................ 83843 ........................................................................ 83844 ........................................................................ 83845 ........................................................................ 83846 ........................................................................ 83847 ........................................................................ 83848 ........................................................................ 83849 ........................................................................ 83850 ........................................................................ 83851 ........................................................................ 83852 ........................................................................ 83853 ........................................................................ 83854 ........................................................................ 83855 ........................................................................ 83856 ........................................................................ 83857 ........................................................................ 83858 ........................................................................ 83859 ........................................................................ 83860 ........................................................................ 83861 ........................................................................ 83862 ........................................................................ 83863 ........................................................................ 83864 ........................................................................ 83865 ........................................................................ 83866 ........................................................................ 83867 ........................................................................ 83868 ........................................................................ 83869 ........................................................................ 83870 ........................................................................ 83871 ........................................................................ 83872 ........................................................................ 83873 ........................................................................ 83874 ........................................................................ 83875 ........................................................................ 83876 ........................................................................ 83877 ........................................................................ 83878 ........................................................................ 83879 ........................................................................ 83880 ........................................................................ 83881 ........................................................................ 83882 ........................................................................ 83883 ........................................................................ 83884 ........................................................................ 83885 ........................................................................ 83886 ........................................................................ 83887 ........................................................................ 83888 ........................................................................ 83889 ........................................................................ 83890 ........................................................................ 83891 ........................................................................ 83892 ........................................................................ 83893 ........................................................................ 83894 ........................................................................ 83895 ........................................................................ 83896 ........................................................................ 83897 ........................................................................ 83898 ........................................................................ 83899 ........................................................................ 83900 ........................................................................ 83901 ........................................................................ 83902 ........................................................................ 83903 ........................................................................ 83904 ........................................................................ 83905 ........................................................................ 83906 ........................................................................ 83907 ........................................................................ 83908 ........................................................................ 83909 ........................................................................ 83910 ........................................................................ 83911 ........................................................................ 83912 ........................................................................ 83913 ........................................................................ 83914 ........................................................................ 83915 ........................................................................ 83916 ........................................................................ 83917 ........................................................................ 83918 ........................................................................ 83919 ........................................................................ 83920 ........................................................................ 83921 ........................................................................ 83922 ........................................................................ 83923 ........................................................................ 83924 ........................................................................ 83925 ........................................................................ 83926 ........................................................................ 83927 ........................................................................ 83928 ........................................................................ 83929 ........................................................................ 83930 ........................................................................ 83931 ........................................................................ 83932 ........................................................................ 83933 ........................................................................ 83934 ........................................................................ 83935 ........................................................................ 83936 ........................................................................ 83937 ........................................................................ 83938 ........................................................................ 83939 ........................................................................ 83940 ........................................................................ 83941 ........................................................................ 83942 ........................................................................ 83943 ........................................................................ 83944 ........................................................................ 83945 ........................................................................ 83946 ........................................................................ 83947 ........................................................................ 83948 ........................................................................ 83949 ........................................................................ 83950 ........................................................................ 83951 ........................................................................ 83952 ........................................................................ 83953 ........................................................................ 83954 ........................................................................ 83955 ........................................................................ 83956 ........................................................................ 83957 ........................................................................ 83958 ........................................................................ 83959 ........................................................................ 83960 ........................................................................ 83961 ........................................................................ 83962 ........................................................................ 83963 ........................................................................ 83964 ........................................................................ 83965 ........................................................................ 83966 ........................................................................ 83967 ........................................................................ 83968 ........................................................................ 83969 ........................................................................ 83970 ........................................................................ 83971 ........................................................................ 83972 ........................................................................ 83973 ........................................................................ 83974 ........................................................................ 83975 ........................................................................ 83976 ........................................................................ 83977 ........................................................................ 83978 ........................................................................ 83979 ........................................................................ 83980 ........................................................................ 83981 ........................................................................ 83982 ........................................................................ 83983 ........................................................................ 83984 ........................................................................ 83985 ........................................................................ 83986 ........................................................................ 83987 ........................................................................ 83988 ........................................................................ 83989 ........................................................................ 83990 ........................................................................ 83991 ........................................................................ 83992 ........................................................................ 83993 ........................................................................ 83994 ........................................................................ 83995 ........................................................................ 83996 ........................................................................ 83997 ........................................................................ 83998 ........................................................................ 83999 ........................................................................ 84000 ........................................................................ 84001 ........................................................................ 84002 ........................................................................ 84003 ........................................................................ 84004 ........................................................................ 84005 ........................................................................ 84006 ........................................................................ 84007 ........................................................................ 84008 ........................................................................ 84009 ........................................................................ 84010 ........................................................................ 84011 ........................................................................ 84012 ........................................................................ 84013 ........................................................................ 84014 ........................................................................ 84015 ........................................................................ 84016 ........................................................................ 84017 ........................................................................ 84018 ........................................................................ 84019 ........................................................................ 84020 ........................................................................ 84021 ........................................................................ 84022 ........................................................................ 84023 ........................................................................ 84024 ........................................................................ 84025 ........................................................................ 84026 ........................................................................ 84027 ........................................................................ 84028 ........................................................................ 84029 ........................................................................ 84030 ........................................................................ 84031 ........................................................................ 84032 ........................................................................ 84033 ........................................................................ 84034 ........................................................................ 84035 ........................................................................ 84036 ........................................................................ 84037 ........................................................................ 84038 ........................................................................ 84039 ........................................................................ 84040 ........................................................................ 84041 ........................................................................ 84042 ........................................................................ 84043 ........................................................................ 84044 ........................................................................ 84045 ........................................................................ 84046 ........................................................................ 84047 ........................................................................ 84048 ........................................................................ 84049 ........................................................................ 84050 ........................................................................ 84051 ........................................................................ 84052 ........................................................................ 84053 ........................................................................ 84054 ........................................................................ 84055 ........................................................................ 84056 ........................................................................ 84057 ........................................................................ 84058 ........................................................................ 84059 ........................................................................ 84060 ........................................................................ 84061 ........................................................................ 84062 ........................................................................ 84063 ........................................................................ 84064 ........................................................................ 84065 ........................................................................ 84066 ........................................................................ 84067 ........................................................................ 84068 ........................................................................ 84069 ........................................................................ 84070 ........................................................................ 84071 ........................................................................ 84072 ........................................................................ 84073 ........................................................................ 84074 ........................................................................ 84075 ........................................................................ 84076 ........................................................................ 84077 ........................................................................ 84078 ........................................................................ 84079 ........................................................................ 84080 ........................................................................ 84081 ........................................................................ 84082 ........................................................................ 84083 ........................................................................ 84084 ........................................................................ 84085 ........................................................................ 84086 ........................................................................ 84087 ........................................................................ 84088 ........................................................................ 84089 ........................................................................ 84090 ........................................................................ 84091 ........................................................................ 84092 ........................................................................ 84093 ........................................................................ 84094 ........................................................................ 84095 ........................................................................ 84096 ........................................................................ 84097 ........................................................................ 84098 ........................................................................ 84099 ........................................................................ 84100 ........................................................................ 84101 ........................................................................ 84102 ........................................................................ 84103 ........................................................................ 84104 ........................................................................ 84105 ........................................................................ 84106 ........................................................................ 84107 ........................................................................ 84108 ........................................................................ 84109 ........................................................................ 84110 ........................................................................ 84111 ........................................................................ 84112 ........................................................................ 84113 ........................................................................ 84114 ........................................................................ 84115 ........................................................................ 84116 ........................................................................ 84117 ........................................................................ 84118 ........................................................................ 84119 ........................................................................ 84120 ........................................................................ 84121 ........................................................................ 84122 ........................................................................ 84123 ........................................................................ 84124 ........................................................................ 84125 ........................................................................ 84126 ........................................................................ 84127 ........................................................................ 84128 ........................................................................ 84129 ........................................................................ 84130 ........................................................................ 84131 ........................................................................ 84132 ........................................................................ 84133 ........................................................................ 84134 ........................................................................ 84135 ........................................................................ 84136 ........................................................................ 84137 ........................................................................ 84138 ........................................................................ 84139 ........................................................................ 84140 ........................................................................ 84141 ........................................................................ 84142 ........................................................................ 84143 ........................................................................ 84144 ........................................................................ 84145 ........................................................................ 84146 ........................................................................ 84147 ........................................................................ 84148 ........................................................................ 84149 ........................................................................ 84150 ........................................................................ 84151 ........................................................................ 84152 ........................................................................ 84153 ........................................................................ 84154 ........................................................................ 84155 ........................................................................ 84156 ........................................................................ 84157 ........................................................................ 84158 ........................................................................ 84159 ........................................................................ 84160 ........................................................................ 84161 ........................................................................ 84162 ........................................................................ 84163 ........................................................................ 84164 ........................................................................ 84165 ........................................................................ 84166 ........................................................................ 84167 ........................................................................ 84168 ........................................................................ 84169 ........................................................................ 84170 ........................................................................ 84171 ........................................................................ 84172 ........................................................................ 84173 ........................................................................ 84174 ........................................................................ 84175 ........................................................................ 84176 ........................................................................ 84177 ........................................................................ 84178 ........................................................................ 84179 ........................................................................ 84180 ........................................................................ 84181 ........................................................................ 84182 ........................................................................ 84183 ........................................................................ 84184 ........................................................................ 84185 ........................................................................ 84186 ........................................................................ 84187 ........................................................................ 84188 ........................................................................ 84189 ........................................................................ 84190 ........................................................................ 84191 ........................................................................ 84192 ........................................................................ 84193 ........................................................................ 84194 ........................................................................ 84195 ........................................................................ 84196 ........................................................................ 84197 ........................................................................ 84198 ........................................................................ 84199 ........................................................................ 84200 ........................................................................ 84201 ........................................................................ 84202 ........................................................................ 84203 ........................................................................ 84204 ........................................................................ 84205 ........................................................................ 84206 ........................................................................ 84207 ........................................................................ 84208 ........................................................................ 84209 ........................................................................ 84210 ........................................................................ 84211 ........................................................................ 84212 ........................................................................ 84213 ........................................................................ 84214 ........................................................................ 84215 ........................................................................ 84216 ........................................................................ 84217 ........................................................................ 84218 ........................................................................ 84219 ........................................................................ 84220 ........................................................................ 84221 ........................................................................ 84222 ........................................................................ 84223 ........................................................................ 84224 ........................................................................ 84225 ........................................................................ 84226 ........................................................................ 84227 ........................................................................ 84228 ........................................................................ 84229 ........................................................................ 84230 ........................................................................ 84231 ........................................................................ 84232 ........................................................................ 84233 ........................................................................ 84234 ........................................................................ 84235 ........................................................................ 84236 ........................................................................ 84237 ........................................................................ 84238 ........................................................................ 84239 ........................................................................ 84240 ........................................................................ 84241 ........................................................................ 84242 ........................................................................ 84243 ........................................................................ 84244 ........................................................................ 84245 ........................................................................ 84246 ........................................................................ 84247 ........................................................................ 84248 ........................................................................ 84249 ........................................................................ 84250 ........................................................................ 84251 ........................................................................ 84252 ........................................................................ 84253 ........................................................................ 84254 ........................................................................ 84255 ........................................................................ 84256 ........................................................................ 84257 ........................................................................ 84258 ........................................................................ 84259 ........................................................................ 84260 ........................................................................ 84261 ........................................................................ 84262 ........................................................................ 84263 ........................................................................ 84264 ........................................................................ 84265 ........................................................................ 84266 ........................................................................ 84267 ........................................................................ 84268 ........................................................................ 84269 ........................................................................ 84270 ........................................................................ 84271 ........................................................................ 84272 ........................................................................ 84273 ........................................................................ 84274 ........................................................................ 84275 ........................................................................ 84276 ........................................................................ 84277 ........................................................................ 84278 ........................................................................ 84279 ........................................................................ 84280 ........................................................................ 84281 ........................................................................ 84282 ........................................................................ 84283 ........................................................................ 84284 ........................................................................ 84285 ........................................................................ 84286 ........................................................................ 84287 ........................................................................ 84288 ........................................................................ 84289 ........................................................................ 84290 ........................................................................ 84291 ........................................................................ 84292 ........................................................................ 84293 ........................................................................ 84294 ........................................................................ 84295 ........................................................................ 84296 ........................................................................ 84297 ........................................................................ 84298 ........................................................................ 84299 ........................................................................ 84300 ........................................................................ 84301 ........................................................................ 84302 ........................................................................ 84303 ........................................................................ 84304 ........................................................................ 84305 ........................................................................ 84306 ........................................................................ 84307 ........................................................................ 84308 ........................................................................ 84309 ........................................................................ 84310 ........................................................................ 84311 ........................................................................ 84312 ........................................................................ 84313 ........................................................................ 84314 ........................................................................ 84315 ........................................................................ 84316 ........................................................................ 84317 ........................................................................ 84318 ........................................................................ 84319 ........................................................................ 84320 ........................................................................ 84321 ........................................................................ 84322 ........................................................................ 84323 ........................................................................ 84324 ........................................................................ 84325 ........................................................................ 84326 ........................................................................ 84327 ........................................................................ 84328 ........................................................................ 84329 ........................................................................ 84330 ........................................................................ 84331 ........................................................................ 84332 ........................................................................ 84333 ........................................................................ 84334 ........................................................................ 84335 ........................................................................ 84336 ........................................................................ 84337 ........................................................................ 84338 ........................................................................ 84339 ........................................................................ 84340 ........................................................................ 84341 ........................................................................ 84342 ........................................................................ 84343 ........................................................................ 84344 ........................................................................ 84345 ........................................................................ 84346 ........................................................................ 84347 ........................................................................ 84348 ........................................................................ 84349 ........................................................................ 84350 ........................................................................ 84351 ........................................................................ 84352 ........................................................................ 84353 ........................................................................ 84354 ........................................................................ 84355 ........................................................................ 84356 ........................................................................ 84357 ........................................................................ 84358 ........................................................................ 84359 ........................................................................ 84360 ........................................................................ 84361 ........................................................................ 84362 ........................................................................ 84363 ........................................................................ 84364 ........................................................................ 84365 ........................................................................ 84366 ........................................................................ 84367 ........................................................................ 84368 ........................................................................ 84369 ........................................................................ 84370 ........................................................................ 84371 ........................................................................ 84372 ........................................................................ 84373 ........................................................................ 84374 ........................................................................ 84375 ........................................................................ 84376 ........................................................................ 84377 ........................................................................ 84378 ........................................................................ 84379 ........................................................................ 84380 ........................................................................ 84381 ........................................................................ 84382 ........................................................................ 84383 ........................................................................ 84384 ........................................................................ 84385 ........................................................................ 84386 ........................................................................ 84387 ........................................................................ 84388 ........................................................................ 84389 ........................................................................ 84390 ........................................................................ 84391 ........................................................................ 84392 ........................................................................ 84393 ........................................................................ 84394 ........................................................................ 84395 ........................................................................ 84396 ........................................................................ 84397 ........................................................................ 84398 ........................................................................ 84399 ........................................................................ 84400 ........................................................................ 84401 ........................................................................ 84402 ........................................................................ 84403 ........................................................................ 84404 ........................................................................ 84405 ........................................................................ 84406 ........................................................................ 84407 ........................................................................ 84408 ........................................................................ 84409 ........................................................................ 84410 ........................................................................ 84411 ........................................................................ 84412 ........................................................................ 84413 ........................................................................ 84414 ........................................................................ 84415 ........................................................................ 84416 ........................................................................ 84417 ........................................................................ 84418 ........................................................................ 84419 ........................................................................ 84420 ........................................................................ 84421 ........................................................................ 84422 ........................................................................ 84423 ........................................................................ 84424 ........................................................................ 84425 ........................................................................ 84426 ........................................................................ 84427 ........................................................................ 84428 ........................................................................ 84429 ........................................................................ 84430 ........................................................................ 84431 ........................................................................ 84432 ........................................................................ 84433 ........................................................................ 84434 ........................................................................ 84435 ........................................................................ 84436 ........................................................................ 84437 ........................................................................ 84438 ........................................................................ 84439 ........................................................................ 84440 ........................................................................ 84441 ........................................................................ 84442 ........................................................................ 84443 ........................................................................ 84444 ........................................................................ 84445 ........................................................................ 84446 ........................................................................ 84447 ........................................................................ 84448 ........................................................................ 84449 ........................................................................ 84450 ........................................................................ 84451 ........................................................................ 84452 ........................................................................ 84453 ........................................................................ 84454 ........................................................................ 84455 ........................................................................ 84456 ........................................................................ 84457 ........................................................................ 84458 ........................................................................ 84459 ........................................................................ 84460 ........................................................................ 84461 ........................................................................ 84462 ........................................................................ 84463 ........................................................................ 84464 ........................................................................ 84465 ........................................................................ 84466 ........................................................................ 84467 ........................................................................ 84468 ........................................................................ 84469 ........................................................................ 84470 ........................................................................ 84471 ........................................................................ 84472 ........................................................................ 84473 ........................................................................ 84474 ........................................................................ 84475 ........................................................................ 84476 ........................................................................ 84477 ........................................................................ 84478 ........................................................................ 84479 ........................................................................ 84480 ........................................................................ 84481 ........................................................................ 84482 ........................................................................ 84483 ........................................................................ 84484 ........................................................................ 84485 ........................................................................ 84486 ........................................................................ 84487 ........................................................................ 84488 ........................................................................ 84489 ........................................................................ 84490 ........................................................................ 84491 ........................................................................ 84492 ........................................................................ 84493 ........................................................................ 84494 ........................................................................ 84495 ........................................................................ 84496 ........................................................................ 84497 ........................................................................ 84498 ........................................................................ 84499 ........................................................................ 84500 ........................................................................ 84501 ........................................................................ 84502 ........................................................................ 84503 ........................................................................ 84504 ........................................................................ 84505 ........................................................................ 84506 ........................................................................ 84507 ........................................................................ 84508 ........................................................................ 84509 ........................................................................ 84510 ........................................................................ 84511 ........................................................................ 84512 ........................................................................ 84513 ........................................................................ 84514 ........................................................................ 84515 ........................................................................ 84516 ........................................................................ 84517 ........................................................................ 84518 ........................................................................ 84519 ........................................................................ 84520 ........................................................................ 84521 ........................................................................ 84522 ........................................................................ 84523 ........................................................................ 84524 ........................................................................ 84525 ........................................................................ 84526 ........................................................................ 84527 ........................................................................ 84528 ........................................................................ 84529 ........................................................................ 84530 ........................................................................ 84531 ........................................................................ 84532 ........................................................................ 84533 ........................................................................ 84534 ........................................................................ 84535 ........................................................................ 84536 ........................................................................ 84537 ........................................................................ 84538 ........................................................................ 84539 ........................................................................ 84540 ........................................................................ 84541 ........................................................................ 84542 ........................................................................ 84543 ........................................................................ 84544 ........................................................................ 84545 ........................................................................ 84546 ........................................................................ 84547 ........................................................................ 84548 ........................................................................ 84549 ........................................................................ 84550 ........................................................................ 84551 ........................................................................ 84552 ........................................................................ 84553 ........................................................................ 84554 ........................................................................ 84555 ........................................................................ 84556 ........................................................................ 84557 ........................................................................ 84558 ........................................................................ 84559 ........................................................................ 84560 ........................................................................ 84561 ........................................................................ 84562 ........................................................................ 84563 ........................................................................ 84564 ........................................................................ 84565 ........................................................................ 84566 ........................................................................ 84567 ........................................................................ 84568 ........................................................................ 84569 ........................................................................ 84570 ........................................................................ 84571 ........................................................................ 84572 ........................................................................ 84573 ........................................................................ 84574 ........................................................................ 84575 ........................................................................ 84576 ........................................................................ 84577 ........................................................................ 84578 ........................................................................ 84579 ........................................................................ 84580 ........................................................................ 84581 ........................................................................ 84582 ........................................................................ 84583 ........................................................................ 84584 ........................................................................ 84585 ........................................................................ 84586 ........................................................................ 84587 ........................................................................ 84588 ........................................................................ 84589 ........................................................................ 84590 ........................................................................ 84591 ........................................................................ 84592 ........................................................................ 84593 ........................................................................ 84594 ........................................................................ 84595 ........................................................................ 84596 ........................................................................ 84597 ........................................................................ 84598 ........................................................................ 84599 ........................................................................ 84600 ........................................................................ 84601 ........................................................................ 84602 ........................................................................ 84603 ........................................................................ 84604 ........................................................................ 84605 ........................................................................ 84606 ........................................................................ 84607 ........................................................................ 84608 ........................................................................ 84609 ........................................................................ 84610 ........................................................................ 84611 ........................................................................ 84612 ........................................................................ 84613 ........................................................................ 84614 ........................................................................ 84615 ........................................................................ 84616 ........................................................................ 84617 ........................................................................ 84618 ........................................................................ 84619 ........................................................................ 84620 ........................................................................ 84621 ........................................................................ 84622 ........................................................................ 84623 ........................................................................ 84624 ........................................................................ 84625 ........................................................................ 84626 ........................................................................ 84627 ........................................................................ 84628 ........................................................................ 84629 ........................................................................ 84630 ........................................................................ 84631 ........................................................................ 84632 ........................................................................ 84633 ........................................................................ 84634 ........................................................................ 84635 ........................................................................ 84636 ........................................................................ 84637 ........................................................................ 84638 ........................................................................ 84639 ........................................................................ 84640 ........................................................................ 84641 ........................................................................ 84642 ........................................................................ 84643 ........................................................................ 84644 ........................................................................ 84645 ........................................................................ 84646 ........................................................................ 84647 ........................................................................ 84648 ........................................................................ 84649 ........................................................................ 84650 ........................................................................ 84651 ........................................................................ 84652 ........................................................................ 84653 ........................................................................ 84654 ........................................................................ 84655 ........................................................................ 84656 ........................................................................ 84657 ........................................................................ 84658 ........................................................................ 84659 ........................................................................ 84660 ........................................................................ 84661 ........................................................................ 84662 ........................................................................ 84663 ........................................................................ 84664 ........................................................................ 84665 ........................................................................ 84666 ........................................................................ 84667 ........................................................................ 84668 ........................................................................ 84669 ........................................................................ 84670 ........................................................................ 84671 ........................................................................ 84672 ........................................................................ 84673 ........................................................................ 84674 ........................................................................ 84675 ........................................................................ 84676 ........................................................................ 84677 ........................................................................ 84678 ........................................................................ 84679 ........................................................................ 84680 ........................................................................ 84681 ........................................................................ 84682 ........................................................................ 84683 ........................................................................ 84684 ........................................................................ 84685 ........................................................................ 84686 ........................................................................ 84687 ........................................................................ 84688 ........................................................................ 84689 ........................................................................ 84690 ........................................................................ 84691 ........................................................................ 84692 ........................................................................ 84693 ........................................................................ 84694 ........................................................................ 84695 ........................................................................ 84696 ........................................................................ 84697 ........................................................................ 84698 ........................................................................ 84699 ........................................................................ 84700 ........................................................................ 84701 ........................................................................ 84702 ........................................................................ 84703 ........................................................................ 84704 ........................................................................ 84705 ........................................................................ 84706 ........................................................................ 84707 ........................................................................ 84708 ........................................................................ 84709 ........................................................................ 84710 ........................................................................ 84711 ........................................................................ 84712 ........................................................................ 84713 ........................................................................ 84714 ........................................................................ 84715 ........................................................................ 84716 ........................................................................ 84717 ........................................................................ 84718 ........................................................................ 84719 ........................................................................ 84720 ........................................................................ 84721 ........................................................................ 84722 ........................................................................ 84723 ........................................................................ 84724 ........................................................................ 84725 ........................................................................ 84726 ........................................................................ 84727 ........................................................................ 84728 ........................................................................ 84729 ........................................................................ 84730 ........................................................................ 84731 ........................................................................ 84732 ........................................................................ 84733 ........................................................................ 84734 ........................................................................ 84735 ........................................................................ 84736 ........................................................................ 84737 ........................................................................ 84738 ........................................................................ 84739 ........................................................................ 84740 ........................................................................ 84741 ........................................................................ 84742 ........................................................................ 84743 ........................................................................ 84744 ........................................................................ 84745 ........................................................................ 84746 ........................................................................ 84747 ........................................................................ 84748 ........................................................................ 84749 ........................................................................ 84750 ........................................................................ 84751 ........................................................................ 84752 ........................................................................ 84753 ........................................................................ 84754 ........................................................................ 84755 ........................................................................ 84756 ........................................................................ 84757 ........................................................................ 84758 ........................................................................ 84759 ........................................................................ 84760 ........................................................................ 84761 ........................................................................ 84762 ........................................................................ 84763 ........................................................................ 84764 ........................................................................ 84765 ........................................................................ 84766 ........................................................................ 84767 ........................................................................ 84768 ........................................................................ 84769 ........................................................................ 84770 ........................................................................ 84771 ........................................................................ 84772 ........................................................................ 84773 ........................................................................ 84774 ........................................................................ 84775 ........................................................................ 84776 ........................................................................ 84777 ........................................................................ 84778 ........................................................................ 84779 ........................................................................ 84780 ........................................................................ 84781 ........................................................................ 84782 ........................................................................ 84783 ........................................................................ 84784 ........................................................................ 84785 ........................................................................ 84786 ........................................................................ 84787 ........................................................................ 84788 ........................................................................ 84789 ........................................................................ 84790 ........................................................................ 84791 ........................................................................ 84792 ........................................................................ 84793 ........................................................................ 84794 ........................................................................ 84795 ........................................................................ 84796 ........................................................................ 84797 ........................................................................ 84798 ........................................................................ 84799 ........................................................................ 84800 ........................................................................ 84801 ........................................................................ 84802 ........................................................................ 84803 ........................................................................ 84804 ........................................................................ 84805 ........................................................................ 84806 ........................................................................ 84807 ........................................................................ 84808 ........................................................................ 84809 ........................................................................ 84810 ........................................................................ 84811 ........................................................................ 84812 ........................................................................ 84813 ........................................................................ 84814 ........................................................................ 84815 ........................................................................ 84816 ........................................................................ 84817 ........................................................................ 84818 ........................................................................ 84819 ........................................................................ 84820 ........................................................................ 84821 ........................................................................ 84822 ........................................................................ 84823 ........................................................................ 84824 ........................................................................ 84825 ........................................................................ 84826 ........................................................................ 84827 ........................................................................ 84828 ........................................................................ 84829 ........................................................................ 84830 ........................................................................ 84831 ........................................................................ 84832 ........................................................................ 84833 ........................................................................ 84834 ........................................................................ 84835 ........................................................................ 84836 ........................................................................ 84837 ........................................................................ 84838 ........................................................................ 84839 ........................................................................ 84840 ........................................................................ 84841 ........................................................................ 84842 ........................................................................ 84843 ........................................................................ 84844 ........................................................................ 84845 ........................................................................ 84846 ........................................................................ 84847 ........................................................................ 84848 ........................................................................ 84849 ........................................................................ 84850 ........................................................................ 84851 ........................................................................ 84852 ........................................................................ 84853 ........................................................................ 84854 ........................................................................ 84855 ........................................................................ 84856 ........................................................................ 84857 ........................................................................ 84858 ........................................................................ 84859 ........................................................................ 84860 ........................................................................ 84861 ........................................................................ 84862 ........................................................................ 84863 ........................................................................ 84864 ........................................................................ 84865 ........................................................................ 84866 ........................................................................ 84867 ........................................................................ 84868 ........................................................................ 84869 ........................................................................ 84870 ........................................................................ 84871 ........................................................................ 84872 ........................................................................ 84873 ........................................................................ 84874 ........................................................................ 84875 ........................................................................ 84876 ........................................................................ 84877 ........................................................................ 84878 ........................................................................ 84879 ........................................................................ 84880 ........................................................................ 84881 ........................................................................ 84882 ........................................................................ 84883 ........................................................................ 84884 ........................................................................ 84885 ........................................................................ 84886 ........................................................................ 84887 ........................................................................ 84888 ........................................................................ 84889 ........................................................................ 84890 ........................................................................ 84891 ........................................................................ 84892 ........................................................................ 84893 ........................................................................ 84894 ........................................................................ 84895 ........................................................................ 84896 ........................................................................ 84897 ........................................................................ 84898 ........................................................................ 84899 ........................................................................ 84900 ........................................................................ 84901 ........................................................................ 84902 ........................................................................ 84903 ........................................................................ 84904 ........................................................................ 84905 ........................................................................ 84906 ........................................................................ 84907 ........................................................................ 84908 ........................................................................ 84909 ........................................................................ 84910 ........................................................................ 84911 ........................................................................ 84912 ........................................................................ 84913 ........................................................................ 84914 ........................................................................ 84915 ........................................................................ 84916 ........................................................................ 84917 ........................................................................ 84918 ........................................................................ 84919 ........................................................................ 84920 ........................................................................ 84921 ........................................................................ 84922 ........................................................................ 84923 ........................................................................ 84924 ........................................................................ 84925 ........................................................................ 84926 ........................................................................ 84927 ........................................................................ 84928 ........................................................................ 84929 ........................................................................ 84930 ........................................................................ 84931 ........................................................................ 84932 ........................................................................ 84933 ........................................................................ 84934 ........................................................................ 84935 ........................................................................ 84936 ........................................................................ 84937 ........................................................................ 84938 ........................................................................ 84939 ........................................................................ 84940 ........................................................................ 84941 ........................................................................ 84942 ........................................................................ 84943 ........................................................................ 84944 ........................................................................ 84945 ........................................................................ 84946 ........................................................................ 84947 ........................................................................ 84948 ........................................................................ 84949 ........................................................................ 84950 ........................................................................ 84951 ........................................................................ 84952 ........................................................................ 84953 ........................................................................ 84954 ........................................................................ 84955 ........................................................................ 84956 ........................................................................ 84957 ........................................................................ 84958 ........................................................................ 84959 ........................................................................ 84960 ........................................................................ 84961 ........................................................................ 84962 ........................................................................ 84963 ........................................................................ 84964 ........................................................................ 84965 ........................................................................ 84966 ........................................................................ 84967 ........................................................................ 84968 ........................................................................ 84969 ........................................................................ 84970 ........................................................................ 84971 ........................................................................ 84972 ........................................................................ 84973 ........................................................................ 84974 ........................................................................ 84975 ........................................................................ 84976 ........................................................................ 84977 ........................................................................ 84978 ........................................................................ 84979 ........................................................................ 84980 ........................................................................ 84981 ........................................................................ 84982 ........................................................................ 84983 ........................................................................ 84984 ........................................................................ 84985 ........................................................................ 84986 ........................................................................ 84987 ........................................................................ 84988 ........................................................................ 84989 ........................................................................ 84990 ........................................................................ 84991 ........................................................................ 84992 ........................................................................ 84993 ........................................................................ 84994 ........................................................................ 84995 ........................................................................ 84996 ........................................................................ 84997 ........................................................................ 84998 ........................................................................ 84999 ........................................................................ 85000 ........................................................................ 85001 ........................................................................ 85002 ........................................................................ 85003 ........................................................................ 85004 ........................................................................ 85005 ........................................................................ 85006 ........................................................................ 85007 ........................................................................ 85008 ........................................................................ 85009 ........................................................................ 85010 ........................................................................ 85011 ........................................................................ 85012 ........................................................................ 85013 ........................................................................ 85014 ........................................................................ 85015 ........................................................................ 85016 ........................................................................ 85017 ........................................................................ 85018 ........................................................................ 85019 ........................................................................ 85020 ........................................................................ 85021 ........................................................................ 85022 ........................................................................ 85023 ........................................................................ 85024 ........................................................................ 85025 ........................................................................ 85026 ........................................................................ 85027 ........................................................................ 85028 ........................................................................ 85029 ........................................................................ 85030 ........................................................................ 85031 ........................................................................ 85032 ........................................................................ 85033 ........................................................................ 85034 ........................................................................ 85035 ........................................................................ 85036 ........................................................................ 85037 ........................................................................ 85038 ........................................................................ 85039 ........................................................................ 85040 ........................................................................ 85041 ........................................................................ 85042 ........................................................................ 85043 ........................................................................ 85044 ........................................................................ 85045 ........................................................................ 85046 ........................................................................ 85047 ........................................................................ 85048 ........................................................................ 85049 ........................................................................ 85050 ........................................................................ 85051 ........................................................................ 85052 ........................................................................ 85053 ........................................................................ 85054 ........................................................................ 85055 ........................................................................ 85056 ........................................................................ 85057 ........................................................................ 85058 ........................................................................ 85059 ........................................................................ 85060 ........................................................................ 85061 ........................................................................ 85062 ........................................................................ 85063 ........................................................................ 85064 ........................................................................ 85065 ........................................................................ 85066 ........................................................................ 85067 ........................................................................ 85068 ........................................................................ 85069 ........................................................................ 85070 ........................................................................ 85071 ........................................................................ 85072 ........................................................................ 85073 ........................................................................ 85074 ........................................................................ 85075 ........................................................................ 85076 ........................................................................ 85077 ........................................................................ 85078 ........................................................................ 85079 ........................................................................ 85080 ........................................................................ 85081 ........................................................................ 85082 ........................................................................ 85083 ........................................................................ 85084 ........................................................................ 85085 ........................................................................ 85086 ........................................................................ 85087 ........................................................................ 85088 ........................................................................ 85089 ........................................................................ 85090 ........................................................................ 85091 ........................................................................ 85092 ........................................................................ 85093 ........................................................................ 85094 ........................................................................ 85095 ........................................................................ 85096 ........................................................................ 85097 ........................................................................ 85098 ........................................................................ 85099 ........................................................................ 85100 ........................................................................ 85101 ........................................................................ 85102 ........................................................................ 85103 ........................................................................ 85104 ........................................................................ 85105 ........................................................................ 85106 ........................................................................ 85107 ........................................................................ 85108 ........................................................................ 85109 ........................................................................ 85110 ........................................................................ 85111 ........................................................................ 85112 ........................................................................ 85113 ........................................................................ 85114 ........................................................................ 85115 ........................................................................ 85116 ........................................................................ 85117 ........................................................................ 85118 ........................................................................ 85119 ........................................................................ 85120 ........................................................................ 85121 ........................................................................ 85122 ........................................................................ 85123 ........................................................................ 85124 ........................................................................ 85125 ........................................................................ 85126 ........................................................................ 85127 ........................................................................ 85128 ........................................................................ 85129 ........................................................................ 85130 ........................................................................ 85131 ........................................................................ 85132 ........................................................................ 85133 ........................................................................ 85134 ........................................................................ 85135 ........................................................................ 85136 ........................................................................ 85137 ........................................................................ 85138 ........................................................................ 85139 ........................................................................ 85140 ........................................................................ 85141 ........................................................................ 85142 ........................................................................ 85143 ........................................................................ 85144 ........................................................................ 85145 ........................................................................ 85146 ........................................................................ 85147 ........................................................................ 85148 ........................................................................ 85149 ........................................................................ 85150 ........................................................................ 85151 ........................................................................ 85152 ........................................................................ 85153 ........................................................................ 85154 ........................................................................ 85155 ........................................................................ 85156 ........................................................................ 85157 ........................................................................ 85158 ........................................................................ 85159 ........................................................................ 85160 ........................................................................ 85161 ........................................................................ 85162 ........................................................................ 85163 ........................................................................ 85164 ........................................................................ 85165 ........................................................................ 85166 ........................................................................ 85167 ........................................................................ 85168 ........................................................................ 85169 ........................................................................ 85170 ........................................................................ 85171 ........................................................................ 85172 ........................................................................ 85173 ........................................................................ 85174 ........................................................................ 85175 ........................................................................ 85176 ........................................................................ 85177 ........................................................................ 85178 ........................................................................ 85179 ........................................................................ 85180 ........................................................................ 85181 ........................................................................ 85182 ........................................................................ 85183 ........................................................................ 85184 ........................................................................ 85185 ........................................................................ 85186 ........................................................................ 85187 ........................................................................ 85188 ........................................................................ 85189 ........................................................................ 85190 ........................................................................ 85191 ........................................................................ 85192 ........................................................................ 85193 ........................................................................ 85194 ........................................................................ 85195 ........................................................................ 85196 ........................................................................ 85197 ........................................................................ 85198 ........................................................................ 85199 ........................................................................ 85200 ........................................................................ 85201 ........................................................................ 85202 ........................................................................ 85203 ........................................................................ 85204 ........................................................................ 85205 ........................................................................ 85206 ........................................................................ 85207 ........................................................................ 85208 ........................................................................ 85209 ........................................................................ 85210 ........................................................................ 85211 ........................................................................ 85212 ........................................................................ 85213 ........................................................................ 85214 ........................................................................ 85215 ........................................................................ 85216 ........................................................................ 85217 ........................................................................ 85218 ........................................................................ 85219 ........................................................................ 85220 ........................................................................ 85221 ........................................................................ 85222 ........................................................................ 85223 ........................................................................ 85224 ........................................................................ 85225 ........................................................................ 85226 ........................................................................ 85227 ........................................................................ 85228 ........................................................................ 85229 ........................................................................ 85230 ........................................................................ 85231 ........................................................................ 85232 ........................................................................ 85233 ........................................................................ 85234 ........................................................................ 85235 ........................................................................ 85236 ........................................................................ 85237 ........................................................................ 85238 ........................................................................ 85239 ........................................................................ 85240 ........................................................................ 85241 ........................................................................ 85242 ........................................................................ 85243 ........................................................................ 85244 ........................................................................ 85245 ........................................................................ 85246 ........................................................................ 85247 ........................................................................ 85248 ........................................................................ 85249 ........................................................................ 85250 ........................................................................ 85251 ........................................................................ 85252 ........................................................................ 85253 ........................................................................ 85254 ........................................................................ 85255 ........................................................................ 85256 ........................................................................ 85257 ........................................................................ 85258 ........................................................................ 85259 ........................................................................ 85260 ........................................................................ 85261 ........................................................................ 85262 ........................................................................ 85263 ........................................................................ 85264 ........................................................................ 85265 ........................................................................ 85266 ........................................................................ 85267 ........................................................................ 85268 ........................................................................ 85269 ........................................................................ 85270 ........................................................................ 85271 ........................................................................ 85272 ........................................................................ 85273 ........................................................................ 85274 ........................................................................ 85275 ........................................................................ 85276 ........................................................................ 85277 ........................................................................ 85278 ........................................................................ 85279 ........................................................................ 85280 ........................................................................ 85281 ........................................................................ 85282 ........................................................................ 85283 ........................................................................ 85284 ........................................................................ 85285 ........................................................................ 85286 ........................................................................ 85287 ........................................................................ 85288 ........................................................................ 85289 ........................................................................ 85290 ........................................................................ 85291 ........................................................................ 85292 ........................................................................ 85293 ........................................................................ 85294 ........................................................................ 85295 ........................................................................ 85296 ........................................................................ 85297 ........................................................................ 85298 ........................................................................ 85299 ........................................................................ 85300 ........................................................................ 85301 ........................................................................ 85302 ........................................................................ 85303 ........................................................................ 85304 ........................................................................ 85305 ........................................................................ 85306 ........................................................................ 85307 ........................................................................ 85308 ........................................................................ 85309 ........................................................................ 85310 ........................................................................ 85311 ........................................................................ 85312 ........................................................................ 85313 ........................................................................ 85314 ........................................................................ 85315 ........................................................................ 85316 ........................................................................ 85317 ........................................................................ 85318 ........................................................................ 85319 ........................................................................ 85320 ........................................................................ 85321 ........................................................................ 85322 ........................................................................ 85323 ........................................................................ 85324 ........................................................................ 85325 ........................................................................ 85326 ........................................................................ 85327 ........................................................................ 85328 ........................................................................ 85329 ........................................................................ 85330 ........................................................................ 85331 ........................................................................ 85332 ........................................................................ 85333 ........................................................................ 85334 ........................................................................ 85335 ........................................................................ 85336 ........................................................................ 85337 ........................................................................ 85338 ........................................................................ 85339 ........................................................................ 85340 ........................................................................ 85341 ........................................................................ 85342 ........................................................................ 85343 ........................................................................ 85344 ........................................................................ 85345 ........................................................................ 85346 ........................................................................ 85347 ........................................................................ 85348 ........................................................................ 85349 ........................................................................ 85350 ........................................................................ 85351 ........................................................................ 85352 ........................................................................ 85353 ........................................................................ 85354 ........................................................................ 85355 ........................................................................ 85356 ........................................................................ 85357 ........................................................................ 85358 ........................................................................ 85359 ........................................................................ 85360 ........................................................................ 85361 ........................................................................ 85362 ........................................................................ 85363 ........................................................................ 85364 ........................................................................ 85365 ........................................................................ 85366 ........................................................................ 85367 ........................................................................ 85368 ........................................................................ 85369 ........................................................................ 85370 ........................................................................ 85371 ........................................................................ 85372 ........................................................................ 85373 ........................................................................ 85374 ........................................................................ 85375 ........................................................................ 85376 ........................................................................ 85377 ........................................................................ 85378 ........................................................................ 85379 ........................................................................ 85380 ........................................................................ 85381 ........................................................................ 85382 ........................................................................ 85383 ........................................................................ 85384 ........................................................................ 85385 ........................................................................ 85386 ........................................................................ 85387 ........................................................................ 85388 ........................................................................ 85389 ........................................................................ 85390 ........................................................................ 85391 ........................................................................ 85392 ........................................................................ 85393 ........................................................................ 85394 ........................................................................ 85395 ........................................................................ 85396 ........................................................................ 85397 ........................................................................ 85398 ........................................................................ 85399 ........................................................................ 85400 ........................................................................ 85401 ........................................................................ 85402 ........................................................................ 85403 ........................................................................ 85404 ........................................................................ 85405 ........................................................................ 85406 ........................................................................ 85407 ........................................................................ 85408 ........................................................................ 85409 ........................................................................ 85410 ........................................................................ 85411 ........................................................................ 85412 ........................................................................ 85413 ........................................................................ 85414 ........................................................................ 85415 ........................................................................ 85416 ........................................................................ 85417 ........................................................................ 85418 ........................................................................ 85419 ........................................................................ 85420 ........................................................................ 85421 ........................................................................ 85422 ........................................................................ 85423 ........................................................................ 85424 ........................................................................ 85425 ........................................................................ 85426 ........................................................................ 85427 ........................................................................ 85428 ........................................................................ 85429 ........................................................................ 85430 ........................................................................ 85431 ........................................................................ 85432 ........................................................................ 85433 ........................................................................ 85434 ........................................................................ 85435 ........................................................................ 85436 ........................................................................ 85437 ........................................................................ 85438 ........................................................................ 85439 ........................................................................ 85440 ........................................................................ 85441 ........................................................................ 85442 ........................................................................ 85443 ........................................................................ 85444 ........................................................................ 85445 ........................................................................ 85446 ........................................................................ 85447 ........................................................................ 85448 ........................................................................ 85449 ........................................................................ 85450 ........................................................................ 85451 ........................................................................ 85452 ........................................................................ 85453 ........................................................................ 85454 ........................................................................ 85455 ........................................................................ 85456 ........................................................................ 85457 ........................................................................ 85458 ........................................................................ 85459 ........................................................................ 85460 ........................................................................ 85461 ........................................................................ 85462 ........................................................................ 85463 ........................................................................ 85464 ........................................................................ 85465 ........................................................................ 85466 ........................................................................ 85467 ........................................................................ 85468 ........................................................................ 85469 ........................................................................ 85470 ........................................................................ 85471 ........................................................................ 85472 ........................................................................ 85473 ........................................................................ 85474 ........................................................................ 85475 ........................................................................ 85476 ........................................................................ 85477 ........................................................................ 85478 ........................................................................ 85479 ........................................................................ 85480 ........................................................................ 85481 ........................................................................ 85482 ........................................................................ 85483 ........................................................................ 85484 ........................................................................ 85485 ........................................................................ 85486 ........................................................................ 85487 ........................................................................ 85488 ........................................................................ 85489 ........................................................................ 85490 ........................................................................ 85491 ........................................................................ 85492 ........................................................................ 85493 ........................................................................ 85494 ........................................................................ 85495 ........................................................................ 85496 ........................................................................ 85497 ........................................................................ 85498 ........................................................................ 85499 ........................................................................ 85500 ........................................................................ 85501 ........................................................................ 85502 ........................................................................ 85503 ........................................................................ 85504 ........................................................................ 85505 ........................................................................ 85506 ........................................................................ 85507 ........................................................................ 85508 ........................................................................ 85509 ........................................................................ 85510 ........................................................................ 85511 ........................................................................ 85512 ........................................................................ 85513 ........................................................................ 85514 ........................................................................ 85515 ........................................................................ 85516 ........................................................................ 85517 ........................................................................ 85518 ........................................................................ 85519 ........................................................................ 85520 ........................................................................ 85521 ........................................................................ 85522 ........................................................................ 85523 ........................................................................ 85524 ........................................................................ 85525 ........................................................................ 85526 ........................................................................ 85527 ........................................................................ 85528 ........................................................................ 85529 ........................................................................ 85530 ........................................................................ 85531 ........................................................................ 85532 ........................................................................ 85533 ........................................................................ 85534 ........................................................................ 85535 ........................................................................ 85536 ........................................................................ 85537 ........................................................................ 85538 ........................................................................ 85539 ........................................................................ 85540 ........................................................................ 85541 ........................................................................ 85542 ........................................................................ 85543 ........................................................................ 85544 ........................................................................ 85545 ........................................................................ 85546 ........................................................................ 85547 ........................................................................ 85548 ........................................................................ 85549 ........................................................................ 85550 ........................................................................ 85551 ........................................................................ 85552 ........................................................................ 85553 ........................................................................ 85554 ........................................................................ 85555 ........................................................................ 85556 ........................................................................ 85557 ........................................................................ 85558 ........................................................................ 85559 ........................................................................ 85560 ........................................................................ 85561 ........................................................................ 85562 ........................................................................ 85563 ........................................................................ 85564 ........................................................................ 85565 ........................................................................ 85566 ........................................................................ 85567 ........................................................................ 85568 ........................................................................ 85569 ........................................................................ 85570 ........................................................................ 85571 ........................................................................ 85572 ........................................................................ 85573 ........................................................................ 85574 ........................................................................ 85575 ........................................................................ 85576 ........................................................................ 85577 ........................................................................ 85578 ........................................................................ 85579 ........................................................................ 85580 ........................................................................ 85581 ........................................................................ 85582 ........................................................................ 85583 ........................................................................ 85584 ........................................................................ 85585 ........................................................................ 85586 ........................................................................ 85587 ........................................................................ 85588 ........................................................................ 85589 ........................................................................ 85590 ........................................................................ 85591 ........................................................................ 85592 ........................................................................ 85593 ........................................................................ 85594 ........................................................................ 85595 ........................................................................ 85596 ........................................................................ 85597 ........................................................................ 85598 ........................................................................ 85599 ........................................................................ 85600 ........................................................................ 85601 ........................................................................ 85602 ........................................................................ 85603 ........................................................................ 85604 ........................................................................ 85605 ........................................................................ 85606 ........................................................................ 85607 ........................................................................ 85608 ........................................................................ 85609 ........................................................................ 85610 ........................................................................ 85611 ........................................................................ 85612 ........................................................................ 85613 ........................................................................ 85614 ........................................................................ 85615 ........................................................................ 85616 ........................................................................ 85617 ........................................................................ 85618 ........................................................................ 85619 ........................................................................ 85620 ........................................................................ 85621 ........................................................................ 85622 ........................................................................ 85623 ........................................................................ 85624 ........................................................................ 85625 ........................................................................ 85626 ........................................................................ 85627 ........................................................................ 85628 ........................................................................ 85629 ........................................................................ 85630 ........................................................................ 85631 ........................................................................ 85632 ........................................................................ 85633 ........................................................................ 85634 ........................................................................ 85635 ........................................................................ 85636 ........................................................................ 85637 ........................................................................ 85638 ........................................................................ 85639 ........................................................................ 85640 ........................................................................ 85641 ........................................................................ 85642 ........................................................................ 85643 ........................................................................ 85644 ........................................................................ 85645 ........................................................................ 85646 ........................................................................ 85647 ........................................................................ 85648 ........................................................................ 85649 ........................................................................ 85650 ........................................................................ 85651 ........................................................................ 85652 ........................................................................ 85653 ........................................................................ 85654 ........................................................................ 85655 ........................................................................ 85656 ........................................................................ 85657 ........................................................................ 85658 ........................................................................ 85659 ........................................................................ 85660 ........................................................................ 85661 ........................................................................ 85662 ........................................................................ 85663 ........................................................................ 85664 ........................................................................ 85665 ........................................................................ 85666 ........................................................................ 85667 ........................................................................ 85668 ........................................................................ 85669 ........................................................................ 85670 ........................................................................ 85671 ........................................................................ 85672 ........................................................................ 85673 ........................................................................ 85674 ........................................................................ 85675 ........................................................................ 85676 ........................................................................ 85677 ........................................................................ 85678 ........................................................................ 85679 ........................................................................ 85680 ........................................................................ 85681 ........................................................................ 85682 ........................................................................ 85683 ........................................................................ 85684 ........................................................................ 85685 ........................................................................ 85686 ........................................................................ 85687 ........................................................................ 85688 ........................................................................ 85689 ........................................................................ 85690 ........................................................................ 85691 ........................................................................ 85692 ........................................................................ 85693 ........................................................................ 85694 ........................................................................ 85695 ........................................................................ 85696 ........................................................................ 85697 ........................................................................ 85698 ........................................................................ 85699 ........................................................................ 85700 ........................................................................ 85701 ........................................................................ 85702 ........................................................................ 85703 ........................................................................ 85704 ........................................................................ 85705 ........................................................................ 85706 ........................................................................ 85707 ........................................................................ 85708 ........................................................................ 85709 ........................................................................ 85710 ........................................................................ 85711 ........................................................................ 85712 ........................................................................ 85713 ........................................................................ 85714 ........................................................................ 85715 ........................................................................ 85716 ........................................................................ 85717 ........................................................................ 85718 ........................................................................ 85719 ........................................................................ 85720 ........................................................................ 85721 ........................................................................ 85722 ........................................................................ 85723 ........................................................................ 85724 ........................................................................ 85725 ........................................................................ 85726 ........................................................................ 85727 ........................................................................ 85728 ........................................................................ 85729 ........................................................................ 85730 ........................................................................ 85731 ........................................................................ 85732 ........................................................................ 85733 ........................................................................ 85734 ........................................................................ 85735 ........................................................................ 85736 ........................................................................ 85737 ........................................................................ 85738 ........................................................................ 85739 ........................................................................ 85740 ........................................................................ 85741 ........................................................................ 85742 ........................................................................ 85743 ........................................................................ 85744 ........................................................................ 85745 ........................................................................ 85746 ........................................................................ 85747 ........................................................................ 85748 ........................................................................ 85749 ........................................................................ 85750 ........................................................................ 85751 ........................................................................ 85752 ........................................................................ 85753 ........................................................................ 85754 ........................................................................ 85755 ........................................................................ 85756 ........................................................................ 85757 ........................................................................ 85758 ........................................................................ 85759 ........................................................................ 85760 ........................................................................ 85761 ........................................................................ 85762 ........................................................................ 85763 ........................................................................ 85764 ........................................................................ 85765 ........................................................................ 85766 ........................................................................ 85767 ........................................................................ 85768 ........................................................................ 85769 ........................................................................ 85770 ........................................................................ 85771 ........................................................................ 85772 ........................................................................ 85773 ........................................................................ 85774 ........................................................................ 85775 ........................................................................ 85776 ........................................................................ 85777 ........................................................................ 85778 ........................................................................ 85779 ........................................................................ 85780 ........................................................................ 85781 ........................................................................ 85782 ........................................................................ 85783 ........................................................................ 85784 ........................................................................ 85785 ........................................................................ 85786 ........................................................................ 85787 ........................................................................ 85788 ........................................................................ 85789 ........................................................................ 85790 ........................................................................ 85791 ........................................................................ 85792 ........................................................................ 85793 ........................................................................ 85794 ........................................................................ 85795 ........................................................................ 85796 ........................................................................ 85797 ........................................................................ 85798 ........................................................................ 85799 ........................................................................ 85800 ........................................................................ 85801 ........................................................................ 85802 ........................................................................ 85803 ........................................................................ 85804 ........................................................................ 85805 ........................................................................ 85806 ........................................................................ 85807 ........................................................................ 85808 ........................................................................ 85809 ........................................................................ 85810 ........................................................................ 85811 ........................................................................ 85812 ........................................................................ 85813 ........................................................................ 85814 ........................................................................ 85815 ........................................................................ 85816 ........................................................................ 85817 ........................................................................ 85818 ........................................................................ 85819 ........................................................................ 85820 ........................................................................ 85821 ........................................................................ 85822 ........................................................................ 85823 ........................................................................ 85824 ........................................................................ 85825 ........................................................................ 85826 ........................................................................ 85827 ........................................................................ 85828 ........................................................................ 85829 ........................................................................ 85830 ........................................................................ 85831 ........................................................................ 85832 ........................................................................ 85833 ........................................................................ 85834 ........................................................................ 85835 ........................................................................ 85836 ........................................................................ 85837 ........................................................................ 85838 ........................................................................ 85839 ........................................................................ 85840 ........................................................................ 85841 ........................................................................ 85842 ........................................................................ 85843 ........................................................................ 85844 ........................................................................ 85845 ........................................................................ 85846 ........................................................................ 85847 ........................................................................ 85848 ........................................................................ 85849 ........................................................................ 85850 ........................................................................ 85851 ........................................................................ 85852 ........................................................................ 85853 ........................................................................ 85854 ........................................................................ 85855 ........................................................................ 85856 ........................................................................ 85857 ........................................................................ 85858 ........................................................................ 85859 ........................................................................ 85860 ........................................................................ 85861 ........................................................................ 85862 ........................................................................ 85863 ........................................................................ 85864 ........................................................................ 85865 ........................................................................ 85866 ........................................................................ 85867 ........................................................................ 85868 ........................................................................ 85869 ........................................................................ 85870 ........................................................................ 85871 ........................................................................ 85872 ........................................................................ 85873 ........................................................................ 85874 ........................................................................ 85875 ........................................................................ 85876 ........................................................................ 85877 ........................................................................ 85878 ........................................................................ 85879 ........................................................................ 85880 ........................................................................ 85881 ........................................................................ 85882 ........................................................................ 85883 ........................................................................ 85884 ........................................................................ 85885 ........................................................................ 85886 ........................................................................ 85887 ........................................................................ 85888 ........................................................................ 85889 ........................................................................ 85890 ........................................................................ 85891 ........................................................................ 85892 ........................................................................ 85893 ........................................................................ 85894 ........................................................................ 85895 ........................................................................ 85896 ........................................................................ 85897 ........................................................................ 85898 ........................................................................ 85899 ........................................................................ 85900 ........................................................................ 85901 ........................................................................ 85902 ........................................................................ 85903 ........................................................................ 85904 ........................................................................ 85905 ........................................................................ 85906 ........................................................................ 85907 ........................................................................ 85908 ........................................................................ 85909 ........................................................................ 85910 ........................................................................ 85911 ........................................................................ 85912 ........................................................................ 85913 ........................................................................ 85914 ........................................................................ 85915 ........................................................................ 85916 ........................................................................ 85917 ........................................................................ 85918 ........................................................................ 85919 ........................................................................ 85920 ........................................................................ 85921 ........................................................................ 85922 ........................................................................ 85923 ........................................................................ 85924 ........................................................................ 85925 ........................................................................ 85926 ........................................................................ 85927 ........................................................................ 85928 ........................................................................ 85929 ........................................................................ 85930 ........................................................................ 85931 ........................................................................ 85932 ........................................................................ 85933 ........................................................................ 85934 ........................................................................ 85935 ........................................................................ 85936 ........................................................................ 85937 ........................................................................ 85938 ........................................................................ 85939 ........................................................................ 85940 ........................................................................ 85941 ........................................................................ 85942 ........................................................................ 85943 ........................................................................ 85944 ........................................................................ 85945 ........................................................................ 85946 ........................................................................ 85947 ........................................................................ 85948 ........................................................................ 85949 ........................................................................ 85950 ........................................................................ 85951 ........................................................................ 85952 ........................................................................ 85953 ........................................................................ 85954 ........................................................................ 85955 ........................................................................ 85956 ........................................................................ 85957 ........................................................................ 85958 ........................................................................ 85959 ........................................................................ 85960 ........................................................................ 85961 ........................................................................ 85962 ........................................................................ 85963 ........................................................................ 85964 ........................................................................ 85965 ........................................................................ 85966 ........................................................................ 85967 ........................................................................ 85968 ........................................................................ 85969 ........................................................................ 85970 ........................................................................ 85971 ........................................................................ 85972 ........................................................................ 85973 ........................................................................ 85974 ........................................................................ 85975 ........................................................................ 85976 ........................................................................ 85977 ........................................................................ 85978 ........................................................................ 85979 ........................................................................ 85980 ........................................................................ 85981 ........................................................................ 85982 ........................................................................ 85983 ........................................................................ 85984 ........................................................................ 85985 ........................................................................ 85986 ........................................................................ 85987 ........................................................................ 85988 ........................................................................ 85989 ........................................................................ 85990 ........................................................................ 85991 ........................................................................ 85992 ........................................................................ 85993 ........................................................................ 85994 ........................................................................ 85995 ........................................................................ 85996 ........................................................................ 85997 ........................................................................ 85998 ........................................................................ 85999 ........................................................................ 86000 ........................................................................ 86001 ........................................................................ 86002 ........................................................................ 86003 ........................................................................ 86004 ........................................................................ 86005 ........................................................................ 86006 ........................................................................ 86007 ........................................................................ 86008 ........................................................................ 86009 ........................................................................ 86010 ........................................................................ 86011 ........................................................................ 86012 ........................................................................ 86013 ........................................................................ 86014 ........................................................................ 86015 ........................................................................ 86016 ........................................................................ 86017 ........................................................................ 86018 ........................................................................ 86019 ........................................................................ 86020 ........................................................................ 86021 ........................................................................ 86022 ........................................................................ 86023 ........................................................................ 86024 ........................................................................ 86025 ........................................................................ 86026 ........................................................................ 86027 ........................................................................ 86028 ........................................................................ 86029 ........................................................................ 86030 ........................................................................ 86031 ........................................................................ 86032 ........................................................................ 86033 ........................................................................ 86034 ........................................................................ 86035 ........................................................................ 86036 ........................................................................ 86037 ........................................................................ 86038 ........................................................................ 86039 ........................................................................ 86040 ........................................................................ 86041 ........................................................................ 86042 ........................................................................ 86043 ........................................................................ 86044 ........................................................................ 86045 ........................................................................ 86046 ........................................................................ 86047 ........................................................................ 86048 ........................................................................ 86049 ........................................................................ 86050 ........................................................................ 86051 ........................................................................ 86052 ........................................................................ 86053 ........................................................................ 86054 ........................................................................ 86055 ........................................................................ 86056 ........................................................................ 86057 ........................................................................ 86058 ........................................................................ 86059 ........................................................................ 86060 ........................................................................ 86061 ........................................................................ 86062 ........................................................................ 86063 ........................................................................ 86064 ........................................................................ 86065 ........................................................................ 86066 ........................................................................ 86067 ........................................................................ 86068 ........................................................................ 86069 ........................................................................ 86070 ........................................................................ 86071 ........................................................................ 86072 ........................................................................ 86073 ........................................................................ 86074 ........................................................................ 86075 ........................................................................ 86076 ........................................................................ 86077 ........................................................................ 86078 ........................................................................ 86079 ........................................................................ 86080 ........................................................................ 86081 ........................................................................ 86082 ........................................................................ 86083 ........................................................................ 86084 ........................................................................ 86085 ........................................................................ 86086 ........................................................................ 86087 ........................................................................ 86088 ........................................................................ 86089 ........................................................................ 86090 ........................................................................ 86091 ........................................................................ 86092 ........................................................................ 86093 ........................................................................ 86094 ........................................................................ 86095 ........................................................................ 86096 ........................................................................ 86097 ........................................................................ 86098 ........................................................................ 86099 ........................................................................ 86100 ........................................................................ 86101 ........................................................................ 86102 ........................................................................ 86103 ........................................................................ 86104 ........................................................................ 86105 ........................................................................ 86106 ........................................................................ 86107 ........................................................................ 86108 ........................................................................ 86109 ........................................................................ 86110 ........................................................................ 86111 ........................................................................ 86112 ........................................................................ 86113 ........................................................................ 86114 ........................................................................ 86115 ........................................................................ 86116 ........................................................................ 86117 ........................................................................ 86118 ........................................................................ 86119 ........................................................................ 86120 ........................................................................ 86121 ........................................................................ 86122 ........................................................................ 86123 ........................................................................ 86124 ........................................................................ 86125 ........................................................................ 86126 ........................................................................ 86127 ........................................................................ 86128 ........................................................................ 86129 ........................................................................ 86130 ........................................................................ 86131 ........................................................................ 86132 ........................................................................ 86133 ........................................................................ 86134 ........................................................................ 86135 ........................................................................ 86136 ........................................................................ 86137 ........................................................................ 86138 ........................................................................ 86139 ........................................................................ 86140 ........................................................................ 86141 ........................................................................ 86142 ........................................................................ 86143 ........................................................................ 86144 ........................................................................ 86145 ........................................................................ 86146 ........................................................................ 86147 ........................................................................ 86148 ........................................................................ 86149 ........................................................................ 86150 ........................................................................ 86151 ........................................................................ 86152 ........................................................................ 86153 ........................................................................ 86154 ........................................................................ 86155 ........................................................................ 86156 ........................................................................ 86157 ........................................................................ 86158 ........................................................................ 86159 ........................................................................ 86160 ........................................................................ 86161 ........................................................................ 86162 ........................................................................ 86163 ........................................................................ 86164 ........................................................................ 86165 ........................................................................ 86166 ........................................................................ 86167 ........................................................................ 86168 ........................................................................ 86169 ........................................................................ 86170 ........................................................................ 86171 ........................................................................ 86172 ........................................................................ 86173 ........................................................................ 86174 ........................................................................ 86175 ........................................................................ 86176 ........................................................................ 86177 ........................................................................ 86178 ........................................................................ 86179 ........................................................................ 86180 ........................................................................ 86181 ........................................................................ 86182 ........................................................................ 86183 ........................................................................ 86184 ........................................................................ 86185 ........................................................................ 86186 ........................................................................ 86187 ........................................................................ 86188 ........................................................................ 86189 ........................................................................ 86190 ........................................................................ 86191 ........................................................................ 86192 ........................................................................ 86193 ........................................................................ 86194 ........................................................................ 86195 ........................................................................ 86196 ........................................................................ 86197 ........................................................................ 86198 ........................................................................ 86199 ........................................................................ 86200 ........................................................................ 86201 ........................................................................ 86202 ........................................................................ 86203 ........................................................................ 86204 ........................................................................ 86205 ........................................................................ 86206 ........................................................................ 86207 ........................................................................ 86208 ........................................................................ 86209 ........................................................................ 86210 ........................................................................ 86211 ........................................................................ 86212 ........................................................................ 86213 ........................................................................ 86214 ........................................................................ 86215 ........................................................................ 86216 ........................................................................ 86217 ........................................................................ 86218 ........................................................................ 86219 ........................................................................ 86220 ........................................................................ 86221 ........................................................................ 86222 ........................................................................ 86223 ........................................................................ 86224 ........................................................................ 86225 ........................................................................ 86226 ........................................................................ 86227 ........................................................................ 86228 ........................................................................ 86229 ........................................................................ 86230 ........................................................................ 86231 ........................................................................ 86232 ........................................................................ 86233 ........................................................................ 86234 ........................................................................ 86235 ........................................................................ 86236 ........................................................................ 86237 ........................................................................ 86238 ........................................................................ 86239 ........................................................................ 86240 ........................................................................ 86241 ........................................................................ 86242 ........................................................................ 86243 ........................................................................ 86244 ........................................................................ 86245 ........................................................................ 86246 ........................................................................ 86247 ........................................................................ 86248 ........................................................................ 86249 ........................................................................ 86250 ........................................................................ 86251 ........................................................................ 86252 ........................................................................ 86253 ........................................................................ 86254 ........................................................................ 86255 ........................................................................ 86256 ........................................................................ 86257 ........................................................................ 86258 ........................................................................ 86259 ........................................................................ 86260 ........................................................................ 86261 ........................................................................ 86262 ........................................................................ 86263 ........................................................................ 86264 ........................................................................ 86265 ........................................................................ 86266 ........................................................................ 86267 ........................................................................ 86268 ........................................................................ 86269 ........................................................................ 86270 ........................................................................ 86271 ........................................................................ 86272 ........................................................................ 86273 ........................................................................ 86274 ........................................................................ 86275 ........................................................................ 86276 ........................................................................ 86277 ........................................................................ 86278 ........................................................................ 86279 ........................................................................ 86280 ........................................................................ 86281 ........................................................................ 86282 ........................................................................ 86283 ........................................................................ 86284 ........................................................................ 86285 ........................................................................ 86286 ........................................................................ 86287 ........................................................................ 86288 ........................................................................ 86289 ........................................................................ 86290 ........................................................................ 86291 ........................................................................ 86292 ........................................................................ 86293 ........................................................................ 86294 ........................................................................ 86295 ........................................................................ 86296 ........................................................................ 86297 ........................................................................ 86298 ........................................................................ 86299 ........................................................................ 86300 ........................................................................ 86301 ........................................................................ 86302 ........................................................................ 86303 ........................................................................ 86304 ........................................................................ 86305 ........................................................................ 86306 ........................................................................ 86307 ........................................................................ 86308 ........................................................................ 86309 ........................................................................ 86310 ........................................................................ 86311 ........................................................................ 86312 ........................................................................ 86313 ........................................................................ 86314 ........................................................................ 86315 ........................................................................ 86316 ........................................................................ 86317 ........................................................................ 86318 ........................................................................ 86319 ........................................................................ 86320 ........................................................................ 86321 ........................................................................ 86322 ........................................................................ 86323 ........................................................................ 86324 ........................................................................ 86325 ........................................................................ 86326 ........................................................................ 86327 ........................................................................ 86328 ........................................................................ 86329 ........................................................................ 86330 ........................................................................ 86331 ........................................................................ 86332 ........................................................................ 86333 ........................................................................ 86334 ........................................................................ 86335 ........................................................................ 86336 ........................................................................ 86337 ........................................................................ 86338 ........................................................................ 86339 ........................................................................ 86340 ........................................................................ 86341 ........................................................................ 86342 ........................................................................ 86343 ........................................................................ 86344 ........................................................................ 86345 ........................................................................ 86346 ........................................................................ 86347 ........................................................................ 86348 ........................................................................ 86349 ........................................................................ 86350 ........................................................................ 86351 ........................................................................ 86352 ........................................................................ 86353 ........................................................................ 86354 ........................................................................ 86355 ........................................................................ 86356 ........................................................................ 86357 ........................................................................ 86358 ........................................................................ 86359 ........................................................................ 86360 ........................................................................ 86361 ........................................................................ 86362 ........................................................................ 86363 ........................................................................ 86364 ........................................................................ 86365 ........................................................................ 86366 ........................................................................ 86367 ........................................................................ 86368 ........................................................................ 86369 ........................................................................ 86370 ........................................................................ 86371 ........................................................................ 86372 ........................................................................ 86373 ........................................................................ 86374 ........................................................................ 86375 ........................................................................ 86376 ........................................................................ 86377 ........................................................................ 86378 ........................................................................ 86379 ........................................................................ 86380 ........................................................................ 86381 ........................................................................ 86382 ........................................................................ 86383 ........................................................................ 86384 ........................................................................ 86385 ........................................................................ 86386 ........................................................................ 86387 ........................................................................ 86388 ........................................................................ 86389 ........................................................................ 86390 ........................................................................ 86391 ........................................................................ 86392 ........................................................................ 86393 ........................................................................ 86394 ........................................................................ 86395 ........................................................................ 86396 ........................................................................ 86397 ........................................................................ 86398 ........................................................................ 86399 ........................................................................ 86400 ........................................................................ 86401 ........................................................................ 86402 ........................................................................ 86403 ........................................................................ 86404 ........................................................................ 86405 ........................................................................ 86406 ........................................................................ 86407 ........................................................................ 86408 ........................................................................ 86409 ........................................................................ 86410 ........................................................................ 86411 ........................................................................ 86412 ........................................................................ 86413 ........................................................................ 86414 ........................................................................ 86415 ........................................................................ 86416 ........................................................................ 86417 ........................................................................ 86418 ........................................................................ 86419 ........................................................................ 86420 ........................................................................ 86421 ........................................................................ 86422 ........................................................................ 86423 ........................................................................ 86424 ........................................................................ 86425 ........................................................................ 86426 ........................................................................ 86427 ........................................................................ 86428 ........................................................................ 86429 ........................................................................ 86430 ........................................................................ 86431 ........................................................................ 86432 ........................................................................ 86433 ........................................................................ 86434 ........................................................................ 86435 ........................................................................ 86436 ........................................................................ 86437 ........................................................................ 86438 ........................................................................ 86439 ........................................................................ 86440 ........................................................................ 86441 ........................................................................ 86442 ........................................................................ 86443 ........................................................................ 86444 ........................................................................ 86445 ........................................................................ 86446 ........................................................................ 86447 ........................................................................ 86448 ........................................................................ 86449 ........................................................................ 86450 ........................................................................ 86451 ........................................................................ 86452 ........................................................................ 86453 ........................................................................ 86454 ........................................................................ 86455 ........................................................................ 86456 ........................................................................ 86457 ........................................................................ 86458 ........................................................................ 86459 ........................................................................ 86460 ........................................................................ 86461 ........................................................................ 86462 ........................................................................ 86463 ........................................................................ 86464 ........................................................................ 86465 ........................................................................ 86466 ........................................................................ 86467 ........................................................................ 86468 ........................................................................ 86469 ........................................................................ 86470 ........................................................................ 86471 ........................................................................ 86472 ........................................................................ 86473 ........................................................................ 86474 ........................................................................ 86475 ........................................................................ 86476 ........................................................................ 86477 ........................................................................ 86478 ........................................................................ 86479 ........................................................................ 86480 ........................................................................ 86481 ........................................................................ 86482 ........................................................................ 86483 ........................................................................ 86484 ........................................................................ 86485 ........................................................................ 86486 ........................................................................ 86487 ........................................................................ 86488 ........................................................................ 86489 ........................................................................ 86490 ........................................................................ 86491 ........................................................................ 86492 ........................................................................ 86493 ........................................................................ 86494 ........................................................................ 86495 ........................................................................ 86496 ........................................................................ 86497 ........................................................................ 86498 ........................................................................ 86499 ........................................................................ 86500 ........................................................................ 86501 ........................................................................ 86502 ........................................................................ 86503 ........................................................................ 86504 ........................................................................ 86505 ........................................................................ 86506 ........................................................................ 86507 ........................................................................ 86508 ........................................................................ 86509 ........................................................................ 86510 ........................................................................ 86511 ........................................................................ 86512 ........................................................................ 86513 ........................................................................ 86514 ........................................................................ 86515 ........................................................................ 86516 ........................................................................ 86517 ........................................................................ 86518 ........................................................................ 86519 ........................................................................ 86520 ........................................................................ 86521 ........................................................................ 86522 ........................................................................ 86523 ........................................................................ 86524 ........................................................................ 86525 ........................................................................ 86526 ........................................................................ 86527 ........................................................................ 86528 ........................................................................ 86529 ........................................................................ 86530 ........................................................................ 86531 ........................................................................ 86532 ........................................................................ 86533 ........................................................................ 86534 ........................................................................ 86535 ........................................................................ 86536 ........................................................................ 86537 ........................................................................ 86538 ........................................................................ 86539 ........................................................................ 86540 ........................................................................ 86541 ........................................................................ 86542 ........................................................................ 86543 ........................................................................ 86544 ........................................................................ 86545 ........................................................................ 86546 ........................................................................ 86547 ........................................................................ 86548 ........................................................................ 86549 ........................................................................ 86550 ........................................................................ 86551 ........................................................................ 86552 ........................................................................ 86553 ........................................................................ 86554 ........................................................................ 86555 ........................................................................ 86556 ........................................................................ 86557 ........................................................................ 86558 ........................................................................ 86559 ........................................................................ 86560 ........................................................................ 86561 ........................................................................ 86562 ........................................................................ 86563 ........................................................................ 86564 ........................................................................ 86565 ........................................................................ 86566 ........................................................................ 86567 ........................................................................ 86568 ........................................................................ 86569 ........................................................................ 86570 ........................................................................ 86571 ........................................................................ 86572 ........................................................................ 86573 ........................................................................ 86574 ........................................................................ 86575 ........................................................................ 86576 ........................................................................ 86577 ........................................................................ 86578 ........................................................................ 86579 ........................................................................ 86580 ........................................................................ 86581 ........................................................................ 86582 ........................................................................ 86583 ........................................................................ 86584 ........................................................................ 86585 ........................................................................ 86586 ........................................................................ 86587 ........................................................................ 86588 ........................................................................ 86589 ........................................................................ 86590 ........................................................................ 86591 ........................................................................ 86592 ........................................................................ 86593 ........................................................................ 86594 ........................................................................ 86595 ........................................................................ 86596 ........................................................................ 86597 ........................................................................ 86598 ........................................................................ 86599 ........................................................................ 86600 ........................................................................ 86601 ........................................................................ 86602 ........................................................................ 86603 ........................................................................ 86604 ........................................................................ 86605 ........................................................................ 86606 ........................................................................ 86607 ........................................................................ 86608 ........................................................................ 86609 ........................................................................ 86610 ........................................................................ 86611 ........................................................................ 86612 ........................................................................ 86613 ........................................................................ 86614 ........................................................................ 86615 ........................................................................ 86616 ........................................................................ 86617 ........................................................................ 86618 ........................................................................ 86619 ........................................................................ 86620 ........................................................................ 86621 ........................................................................ 86622 ........................................................................ 86623 ........................................................................ 86624 ........................................................................ 86625 ........................................................................ 86626 ........................................................................ 86627 ........................................................................ 86628 ........................................................................ 86629 ........................................................................ 86630 ........................................................................ 86631 ........................................................................ 86632 ........................................................................ 86633 ........................................................................ 86634 ........................................................................ 86635 ........................................................................ 86636 ........................................................................ 86637 ........................................................................ 86638 ........................................................................ 86639 ........................................................................ 86640 ........................................................................ 86641 ........................................................................ 86642 ........................................................................ 86643 ........................................................................ 86644 ........................................................................ 86645 ........................................................................ 86646 ........................................................................ 86647 ........................................................................ 86648 ........................................................................ 86649 ........................................................................ 86650 ........................................................................ 86651 ........................................................................ 86652 ........................................................................ 86653 ........................................................................ 86654 ........................................................................ 86655 ........................................................................ 86656 ........................................................................ 86657 ........................................................................ 86658 ........................................................................ 86659 ........................................................................ 86660 ........................................................................ 86661 ........................................................................ 86662 ........................................................................ 86663 ........................................................................ 86664 ........................................................................ 86665 ........................................................................ 86666 ........................................................................ 86667 ........................................................................ 86668 ........................................................................ 86669 ........................................................................ 86670 ........................................................................ 86671 ........................................................................ 86672 ........................................................................ 86673 ........................................................................ 86674 ........................................................................ 86675 ........................................................................ 86676 ........................................................................ 86677 ........................................................................ 86678 ........................................................................ 86679 ........................................................................ 86680 ........................................................................ 86681 ........................................................................ 86682 ........................................................................ 86683 ........................................................................ 86684 ........................................................................ 86685 ........................................................................ 86686 ........................................................................ 86687 ........................................................................ 86688 ........................................................................ 86689 ........................................................................ 86690 ........................................................................ 86691 ........................................................................ 86692 ........................................................................ 86693 ........................................................................ 86694 ........................................................................ 86695 ........................................................................ 86696 ........................................................................ 86697 ........................................................................ 86698 ........................................................................ 86699 ........................................................................ 86700 ........................................................................ 86701 ........................................................................ 86702 ........................................................................ 86703 ........................................................................ 86704 ........................................................................ 86705 ........................................................................ 86706 ........................................................................ 86707 ........................................................................ 86708 ........................................................................ 86709 ........................................................................ 86710 ........................................................................ 86711 ........................................................................ 86712 ........................................................................ 86713 ........................................................................ 86714 ........................................................................ 86715 ........................................................................ 86716 ........................................................................ 86717 ........................................................................ 86718 ........................................................................ 86719 ........................................................................ 86720 ........................................................................ 86721 ........................................................................ 86722 ........................................................................ 86723 ........................................................................ 86724 ........................................................................ 86725 ........................................................................ 86726 ........................................................................ 86727 ........................................................................ 86728 ........................................................................ 86729 ........................................................................ 86730 ........................................................................ 86731 ........................................................................ 86732 ........................................................................ 86733 ........................................................................ 86734 ........................................................................ 86735 ........................................................................ 86736 ........................................................................ 86737 ........................................................................ 86738 ........................................................................ 86739 ........................................................................ 86740 ........................................................................ 86741 ........................................................................ 86742 ........................................................................ 86743 ........................................................................ 86744 ........................................................................ 86745 ........................................................................ 86746 ........................................................................ 86747 ........................................................................ 86748 ........................................................................ 86749 ........................................................................ 86750 ........................................................................ 86751 ........................................................................ 86752 ........................................................................ 86753 ........................................................................ 86754 ........................................................................ 86755 ........................................................................ 86756 ........................................................................ 86757 ........................................................................ 86758 ........................................................................ 86759 ........................................................................ 86760 ........................................................................ 86761 ........................................................................ 86762 ........................................................................ 86763 ........................................................................ 86764 ........................................................................ 86765 ........................................................................ 86766 ........................................................................ 86767 ........................................................................ 86768 ........................................................................ 86769 ........................................................................ 86770 ........................................................................ 86771 ........................................................................ 86772 ........................................................................ 86773 ........................................................................ 86774 ........................................................................ 86775 ........................................................................ 86776 ........................................................................ 86777 ........................................................................ 86778 ........................................................................ 86779 ........................................................................ 86780 ........................................................................ 86781 ........................................................................ 86782 ........................................................................ 86783 ........................................................................ 86784 ........................................................................ 86785 ........................................................................ 86786 ........................................................................ 86787 ........................................................................ 86788 ........................................................................ 86789 ........................................................................ 86790 ........................................................................ 86791 ........................................................................ 86792 ........................................................................ 86793 ........................................................................ 86794 ........................................................................ 86795 ........................................................................ 86796 ........................................................................ 86797 ........................................................................ 86798 ........................................................................ 86799 ........................................................................ 86800 ........................................................................ 86801 ........................................................................ 86802 ........................................................................ 86803 ........................................................................ 86804 ........................................................................ 86805 ........................................................................ 86806 ........................................................................ 86807 ........................................................................ 86808 ........................................................................ 86809 ........................................................................ 86810 ........................................................................ 86811 ........................................................................ 86812 ........................................................................ 86813 ........................................................................ 86814 ........................................................................ 86815 ........................................................................ 86816 ........................................................................ 86817 ........................................................................ 86818 ........................................................................ 86819 ........................................................................ 86820 ........................................................................ 86821 ........................................................................ 86822 ........................................................................ 86823 ........................................................................ 86824 ........................................................................ 86825 ........................................................................ 86826 ........................................................................ 86827 ........................................................................ 86828 ........................................................................ 86829 ........................................................................ 86830 ........................................................................ 86831 ........................................................................ 86832 ........................................................................ 86833 ........................................................................ 86834 ........................................................................ 86835 ........................................................................ 86836 ........................................................................ 86837 ........................................................................ 86838 ........................................................................ 86839 ........................................................................ 86840 ........................................................................ 86841 ........................................................................ 86842 ........................................................................ 86843 ........................................................................ 86844 ........................................................................ 86845 ........................................................................ 86846 ........................................................................ 86847 ........................................................................ 86848 ........................................................................ 86849 ........................................................................ 86850 ........................................................................ 86851 ........................................................................ 86852 ........................................................................ 86853 ........................................................................ 86854 ........................................................................ 86855 ........................................................................ 86856 ........................................................................ 86857 ........................................................................ 86858 ........................................................................ 86859 ........................................................................ 86860 ........................................................................ 86861 ........................................................................ 86862 ........................................................................ 86863 ........................................................................ 86864 ........................................................................ 86865 ........................................................................ 86866 ........................................................................ 86867 ........................................................................ 86868 ........................................................................ 86869 ........................................................................ 86870 ........................................................................ 86871 ........................................................................ 86872 ........................................................................ 86873 ........................................................................ 86874 ........................................................................ 86875 ........................................................................ 86876 ........................................................................ 86877 ........................................................................ 86878 ........................................................................ 86879 ........................................................................ 86880 ........................................................................ 86881 ........................................................................ 86882 ........................................................................ 86883 ........................................................................ 86884 ........................................................................ 86885 ........................................................................ 86886 ........................................................................ 86887 ........................................................................ 86888 ........................................................................ 86889 ........................................................................ 86890 ........................................................................ 86891 ........................................................................ 86892 ........................................................................ 86893 ........................................................................ 86894 ........................................................................ 86895 ........................................................................ 86896 ........................................................................ 86897 ........................................................................ 86898 ........................................................................ 86899 ........................................................................ 86900 ........................................................................ 86901 ........................................................................ 86902 ........................................................................ 86903 ........................................................................ 86904 ........................................................................ 86905 ........................................................................ 86906 ........................................................................ 86907 ........................................................................ 86908 ........................................................................ 86909 ........................................................................ 86910 ........................................................................ 86911 ........................................................................ 86912 ........................................................................ 86913 ........................................................................ 86914 ........................................................................ 86915 ........................................................................ 86916 ........................................................................ 86917 ........................................................................ 86918 ........................................................................ 86919 ........................................................................ 86920 ........................................................................ 86921 ........................................................................ 86922 ........................................................................ 86923 ........................................................................ 86924 ........................................................................ 86925 ........................................................................ 86926 ........................................................................ 86927 ........................................................................ 86928 ........................................................................ 86929 ........................................................................ 86930 ........................................................................ 86931 ........................................................................ 86932 ........................................................................ 86933 ........................................................................ 86934 ........................................................................ 86935 ........................................................................ 86936 ........................................................................ 86937 ........................................................................ 86938 ........................................................................ 86939 ........................................................................ 86940 ........................................................................ 86941 ........................................................................ 86942 ........................................................................ 86943 ........................................................................ 86944 ........................................................................ 86945 ........................................................................ 86946 ........................................................................ 86947 ........................................................................ 86948 ........................................................................ 86949 ........................................................................ 86950 ........................................................................ 86951 ........................................................................ 86952 ........................................................................ 86953 ........................................................................ 86954 ........................................................................ 86955 ........................................................................ 86956 ........................................................................ 86957 ........................................................................ 86958 ........................................................................ 86959 ........................................................................ 86960 ........................................................................ 86961 ........................................................................ 86962 ........................................................................ 86963 ........................................................................ 86964 ........................................................................ 86965 ........................................................................ 86966 ........................................................................ 86967 ........................................................................ 86968 ........................................................................ 86969 ........................................................................ 86970 ........................................................................ 86971 ........................................................................ 86972 ........................................................................ 86973 ........................................................................ 86974 ........................................................................ 86975 ........................................................................ 86976 ........................................................................ 86977 ........................................................................ 86978 ........................................................................ 86979 ........................................................................ 86980 ........................................................................ 86981 ........................................................................ 86982 ........................................................................ 86983 ........................................................................ 86984 ........................................................................ 86985 ........................................................................ 86986 ........................................................................ 86987 ........................................................................ 86988 ........................................................................ 86989 ........................................................................ 86990 ........................................................................ 86991 ........................................................................ 86992 ........................................................................ 86993 ........................................................................ 86994 ........................................................................ 86995 ........................................................................ 86996 ........................................................................ 86997 ........................................................................ 86998 ........................................................................ 86999 ........................................................................ 87000 ........................................................................ 87001 ........................................................................ 87002 ........................................................................ 87003 ........................................................................ 87004 ........................................................................ 87005 ........................................................................ 87006 ........................................................................ 87007 ........................................................................ 87008 ........................................................................ 87009 ........................................................................ 87010 ........................................................................ 87011 ........................................................................ 87012 ........................................................................ 87013 ........................................................................ 87014 ........................................................................ 87015 ........................................................................ 87016 ........................................................................ 87017 ........................................................................ 87018 ........................................................................ 87019 ........................................................................ 87020 ........................................................................ 87021 ........................................................................ 87022 ........................................................................ 87023 ........................................................................ 87024 ........................................................................ 87025 ........................................................................ 87026 ........................................................................ 87027 ........................................................................ 87028 ........................................................................ 87029 ........................................................................ 87030 ........................................................................ 87031 ........................................................................ 87032 ........................................................................ 87033 ........................................................................ 87034 ........................................................................ 87035 ........................................................................ 87036 ........................................................................ 87037 ........................................................................ 87038 ........................................................................ 87039 ........................................................................ 87040 ........................................................................ 87041 ........................................................................ 87042 ........................................................................ 87043 ........................................................................ 87044 ........................................................................ 87045 ........................................................................ 87046 ........................................................................ 87047 ........................................................................ 87048 ........................................................................ 87049 ........................................................................ 87050 ........................................................................ 87051 ........................................................................ 87052 ........................................................................ 87053 ........................................................................ 87054 ........................................................................ 87055 ........................................................................ 87056 ........................................................................ 87057 ........................................................................ 87058 ........................................................................ 87059 ........................................................................ 87060 ........................................................................ 87061 ........................................................................ 87062 ........................................................................ 87063 ........................................................................ 87064 ........................................................................ 87065 ........................................................................ 87066 ........................................................................ 87067 ........................................................................ 87068 ........................................................................ 87069 ........................................................................ 87070 ........................................................................ 87071 ........................................................................ 87072 ........................................................................ 87073 ........................................................................ 87074 ........................................................................ 87075 ........................................................................ 87076 ........................................................................ 87077 ........................................................................ 87078 ........................................................................ 87079 ........................................................................ 87080 ........................................................................ 87081 ........................................................................ 87082 ........................................................................ 87083 ........................................................................ 87084 ........................................................................ 87085 ........................................................................ 87086 ........................................................................ 87087 ........................................................................ 87088 ........................................................................ 87089 ........................................................................ 87090 ........................................................................ 87091 ........................................................................ 87092 ........................................................................ 87093 ........................................................................ 87094 ........................................................................ 87095 ........................................................................ 87096 ........................................................................ 87097 ........................................................................ 87098 ........................................................................ 87099 ........................................................................ 87100 ........................................................................ 87101 ........................................................................ 87102 ........................................................................ 87103 ........................................................................ 87104 ........................................................................ 87105 ........................................................................ 87106 ........................................................................ 87107 ........................................................................ 87108 ........................................................................ 87109 ........................................................................ 87110 ........................................................................ 87111 ........................................................................ 87112 ........................................................................ 87113 ........................................................................ 87114 ........................................................................ 87115 ........................................................................ 87116 ........................................................................ 87117 ........................................................................ 87118 ........................................................................ 87119 ........................................................................ 87120 ........................................................................ 87121 ........................................................................ 87122 ........................................................................ 87123 ........................................................................ 87124 ........................................................................ 87125 ........................................................................ 87126 ........................................................................ 87127 ........................................................................ 87128 ........................................................................ 87129 ........................................................................ 87130 ........................................................................ 87131 ........................................................................ 87132 ........................................................................ 87133 ........................................................................ 87134 ........................................................................ 87135 ........................................................................ 87136 ........................................................................ 87137 ........................................................................ 87138 ........................................................................ 87139 ........................................................................ 87140 ........................................................................ 87141 ........................................................................ 87142 ........................................................................ 87143 ........................................................................ 87144 ........................................................................ 87145 ........................................................................ 87146 ........................................................................ 87147 ........................................................................ 87148 ........................................................................ 87149 ........................................................................ 87150 ........................................................................ 87151 ........................................................................ 87152 ........................................................................ 87153 ........................................................................ 87154 ........................................................................ 87155 ........................................................................ 87156 ........................................................................ 87157 ........................................................................ 87158 ........................................................................ 87159 ........................................................................ 87160 ........................................................................ 87161 ........................................................................ 87162 ........................................................................ 87163 ........................................................................ 87164 ........................................................................ 87165 ........................................................................ 87166 ........................................................................ 87167 ........................................................................ 87168 ........................................................................ 87169 ........................................................................ 87170 ........................................................................ 87171 ........................................................................ 87172 ........................................................................ 87173 ........................................................................ 87174 ........................................................................ 87175 ........................................................................ 87176 ........................................................................ 87177 ........................................................................ 87178 ........................................................................ 87179 ........................................................................ 87180 ........................................................................ 87181 ........................................................................ 87182 ........................................................................ 87183 ........................................................................ 87184 ........................................................................ 87185 ........................................................................ 87186 ........................................................................ 87187 ........................................................................ 87188 ........................................................................ 87189 ........................................................................ 87190 ........................................................................ 87191 ........................................................................ 87192 ........................................................................ 87193 ........................................................................ 87194 ........................................................................ 87195 ........................................................................ 87196 ........................................................................ 87197 ........................................................................ 87198 ........................................................................ 87199 ........................................................................ 87200 ........................................................................ 87201 ........................................................................ 87202 ........................................................................ 87203 ........................................................................ 87204 ........................................................................ 87205 ........................................................................ 87206 ........................................................................ 87207 ........................................................................ 87208 ........................................................................ 87209 ........................................................................ 87210 ........................................................................ 87211 ........................................................................ 87212 ........................................................................ 87213 ........................................................................ 87214 ........................................................................ 87215 ........................................................................ 87216 ........................................................................ 87217 ........................................................................ 87218 ........................................................................ 87219 ........................................................................ 87220 ........................................................................ 87221 ........................................................................ 87222 ........................................................................ 87223 ........................................................................ 87224 ........................................................................ 87225 ........................................................................ 87226 ........................................................................ 87227 ........................................................................ 87228 ........................................................................ 87229 ........................................................................ 87230 ........................................................................ 87231 ........................................................................ 87232 ........................................................................ 87233 ........................................................................ 87234 ........................................................................ 87235 ........................................................................ 87236 ........................................................................ 87237 ........................................................................ 87238 ........................................................................ 87239 ........................................................................ 87240 ........................................................................ 87241 ........................................................................ 87242 ........................................................................ 87243 ........................................................................ 87244 ........................................................................ 87245 ........................................................................ 87246 ........................................................................ 87247 ........................................................................ 87248 ........................................................................ 87249 ........................................................................ 87250 ........................................................................ 87251 ........................................................................ 87252 ........................................................................ 87253 ........................................................................ 87254 ........................................................................ 87255 ........................................................................ 87256 ........................................................................ 87257 ........................................................................ 87258 ........................................................................ 87259 ........................................................................ 87260 ........................................................................ 87261 ........................................................................ 87262 ........................................................................ 87263 ........................................................................ 87264 ........................................................................ 87265 ........................................................................ 87266 ........................................................................ 87267 ........................................................................ 87268 ........................................................................ 87269 ........................................................................ 87270 ........................................................................ 87271 ........................................................................ 87272 ........................................................................ 87273 ........................................................................ 87274 ........................................................................ 87275 ........................................................................ 87276 ........................................................................ 87277 ........................................................................ 87278 ........................................................................ 87279 ........................................................................ 87280 ........................................................................ 87281 ........................................................................ 87282 ........................................................................ 87283 ........................................................................ 87284 ........................................................................ 87285 ........................................................................ 87286 ........................................................................ 87287 ........................................................................ 87288 ........................................................................ 87289 ........................................................................ 87290 ........................................................................ 87291 ........................................................................ 87292 ........................................................................ 87293 ........................................................................ 87294 ........................................................................ 87295 ........................................................................ 87296 ........................................................................ 87297 ........................................................................ 87298 ........................................................................ 87299 ........................................................................ 87300 ........................................................................ 87301 ........................................................................ 87302 ........................................................................ 87303 ........................................................................ 87304 ........................................................................ 87305 ........................................................................ 87306 ........................................................................ 87307 ........................................................................ 87308 ........................................................................ 87309 ........................................................................ 87310 ........................................................................ 87311 ........................................................................ 87312 ........................................................................ 87313 ........................................................................ 87314 ........................................................................ 87315 ........................................................................ 87316 ........................................................................ 87317 ........................................................................ 87318 ........................................................................ 87319 ........................................................................ 87320 ........................................................................ 87321 ........................................................................ 87322 ........................................................................ 87323 ........................................................................ 87324 ........................................................................ 87325 ........................................................................ 87326 ........................................................................ 87327 ........................................................................ 87328 ........................................................................ 87329 ........................................................................ 87330 ........................................................................ 87331 ........................................................................ 87332 ........................................................................ 87333 ........................................................................ 87334 ........................................................................ 87335 ........................................................................ 87336 ........................................................................ 87337 ........................................................................ 87338 ........................................................................ 87339 ........................................................................ 87340 ........................................................................ 87341 ........................................................................ 87342 ........................................................................ 87343 ........................................................................ 87344 ........................................................................ 87345 ........................................................................ 87346 ........................................................................ 87347 ........................................................................ 87348 ........................................................................ 87349 ........................................................................ 87350 ........................................................................ 87351 ........................................................................ 87352 ........................................................................ 87353 ........................................................................ 87354 ........................................................................ 87355 ........................................................................ 87356 ........................................................................ 87357 ........................................................................ 87358 ........................................................................ 87359 ........................................................................ 87360 ........................................................................ 87361 ........................................................................ 87362 ........................................................................ 87363 ........................................................................ 87364 ........................................................................ 87365 ........................................................................ 87366 ........................................................................ 87367 ........................................................................ 87368 ........................................................................ 87369 ........................................................................ 87370 ........................................................................ 87371 ........................................................................ 87372 ........................................................................ 87373 ........................................................................ 87374 ........................................................................ 87375 ........................................................................ 87376 ........................................................................ 87377 ........................................................................ 87378 ........................................................................ 87379 ........................................................................ 87380 ........................................................................ 87381 ........................................................................ 87382 ........................................................................ 87383 ........................................................................ 87384 ........................................................................ 87385 ........................................................................ 87386 ........................................................................ 87387 ........................................................................ 87388 ........................................................................ 87389 ........................................................................ 87390 ........................................................................ 87391 ........................................................................ 87392 ........................................................................ 87393 ........................................................................ 87394 ........................................................................ 87395 ........................................................................ 87396 ........................................................................ 87397 ........................................................................ 87398 ........................................................................ 87399 ........................................................................ 87400 ........................................................................ 87401 ........................................................................ 87402 ........................................................................ 87403 ........................................................................ 87404 ........................................................................ 87405 ........................................................................ 87406 ........................................................................ 87407 ........................................................................ 87408 ........................................................................ 87409 ........................................................................ 87410 ........................................................................ 87411 ........................................................................ 87412 ........................................................................ 87413 ........................................................................ 87414 ........................................................................ 87415 ........................................................................ 87416 ........................................................................ 87417 ........................................................................ 87418 ........................................................................ 87419 ........................................................................ 87420 ........................................................................ 87421 ........................................................................ 87422 ........................................................................ 87423 ........................................................................ 87424 ........................................................................ 87425 ........................................................................ 87426 ........................................................................ 87427 ........................................................................ 87428 ........................................................................ 87429 ........................................................................ 87430 ........................................................................ 87431 ........................................................................ 87432 ........................................................................ 87433 ........................................................................ 87434 ........................................................................ 87435 ........................................................................ 87436 ........................................................................ 87437 ........................................................................ 87438 ........................................................................ 87439 ........................................................................ 87440 ........................................................................ 87441 ........................................................................ 87442 ........................................................................ 87443 ........................................................................ 87444 ........................................................................ 87445 ........................................................................ 87446 ........................................................................ 87447 ........................................................................ 87448 ........................................................................ 87449 ........................................................................ 87450 ........................................................................ 87451 ........................................................................ 87452 ........................................................................ 87453 ........................................................................ 87454 ........................................................................ 87455 ........................................................................ 87456 ........................................................................ 87457 ........................................................................ 87458 ........................................................................ 87459 ........................................................................ 87460 ........................................................................ 87461 ........................................................................ 87462 ........................................................................ 87463 ........................................................................ 87464 ........................................................................ 87465 ........................................................................ 87466 ........................................................................ 87467 ........................................................................ 87468 ........................................................................ 87469 ........................................................................ 87470 ........................................................................ 87471 ........................................................................ 87472 ........................................................................ 87473 ........................................................................ 87474 ........................................................................ 87475 ........................................................................ 87476 ........................................................................ 87477 ........................................................................ 87478 ........................................................................ 87479 ........................................................................ 87480 ........................................................................ 87481 ........................................................................ 87482 ........................................................................ 87483 ........................................................................ 87484 ........................................................................ 87485 ........................................................................ 87486 ........................................................................ 87487 ........................................................................ 87488 ........................................................................ 87489 ........................................................................ 87490 ........................................................................ 87491 ........................................................................ 87492 ........................................................................ 87493 ........................................................................ 87494 ........................................................................ 87495 ........................................................................ 87496 ........................................................................ 87497 ........................................................................ 87498 ........................................................................ 87499 ........................................................................ 87500 ........................................................................ 87501 ........................................................................ 87502 ........................................................................ 87503 ........................................................................ 87504 ........................................................................ 87505 ........................................................................ 87506 ........................................................................ 87507 ........................................................................ 87508 ........................................................................ 87509 ........................................................................ 87510 ........................................................................ 87511 ........................................................................ 87512 ........................................................................ 87513 ........................................................................ 87514 ........................................................................ 87515 ........................................................................ 87516 ........................................................................ 87517 ........................................................................ 87518 ........................................................................ 87519 ........................................................................ 87520 ........................................................................ 87521 ........................................................................ 87522 ........................................................................ 87523 ........................................................................ 87524 ........................................................................ 87525 ........................................................................ 87526 ........................................................................ 87527 ........................................................................ 87528 ........................................................................ 87529 ........................................................................ 87530 ........................................................................ 87531 ........................................................................ 87532 ........................................................................ 87533 ........................................................................ 87534 ........................................................................ 87535 ........................................................................ 87536 ........................................................................ 87537 ........................................................................ 87538 ........................................................................ 87539 ........................................................................ 87540 ........................................................................ 87541 ........................................................................ 87542 ........................................................................ 87543 ........................................................................ 87544 ........................................................................ 87545 ........................................................................ 87546 ........................................................................ 87547 ........................................................................ 87548 ........................................................................ 87549 ........................................................................ 87550 ........................................................................ 87551 ........................................................................ 87552 ........................................................................ 87553 ........................................................................ 87554 ........................................................................ 87555 ........................................................................ 87556 ........................................................................ 87557 ........................................................................ 87558 ........................................................................ 87559 ........................................................................ 87560 ........................................................................ 87561 ........................................................................ 87562 ........................................................................ 87563 ........................................................................ 87564 ........................................................................ 87565 ........................................................................ 87566 ........................................................................ 87567 ........................................................................ 87568 ........................................................................ 87569 ........................................................................ 87570 ........................................................................ 87571 ........................................................................ 87572 ........................................................................ 87573 ........................................................................ 87574 ........................................................................ 87575 ........................................................................ 87576 ........................................................................ 87577 ........................................................................ 87578 ........................................................................ 87579 ........................................................................ 87580 ........................................................................ 87581 ........................................................................ 87582 ........................................................................ 87583 ........................................................................ 87584 ........................................................................ 87585 ........................................................................ 87586 ........................................................................ 87587 ........................................................................ 87588 ........................................................................ 87589 ........................................................................ 87590 ........................................................................ 87591 ........................................................................ 87592 ........................................................................ 87593 ........................................................................ 87594 ........................................................................ 87595 ........................................................................ 87596 ........................................................................ 87597 ........................................................................ 87598 ........................................................................ 87599 ........................................................................ 87600 ........................................................................ 87601 ........................................................................ 87602 ........................................................................ 87603 ........................................................................ 87604 ........................................................................ 87605 ........................................................................ 87606 ........................................................................ 87607 ........................................................................ 87608 ........................................................................ 87609 ........................................................................ 87610 ........................................................................ 87611 ........................................................................ 87612 ........................................................................ 87613 ........................................................................ 87614 ........................................................................ 87615 ........................................................................ 87616 ........................................................................ 87617 ........................................................................ 87618 ........................................................................ 87619 ........................................................................ 87620 ........................................................................ 87621 ........................................................................ 87622 ........................................................................ 87623 ........................................................................ 87624 ........................................................................ 87625 ........................................................................ 87626 ........................................................................ 87627 ........................................................................ 87628 ........................................................................ 87629 ........................................................................ 87630 ........................................................................ 87631 ........................................................................ 87632 ........................................................................ 87633 ........................................................................ 87634 ........................................................................ 87635 ........................................................................ 87636 ........................................................................ 87637 ........................................................................ 87638 ........................................................................ 87639 ........................................................................ 87640 ........................................................................ 87641 ........................................................................ 87642 ........................................................................ 87643 ........................................................................ 87644 ........................................................................ 87645 ........................................................................ 87646 ........................................................................ 87647 ........................................................................ 87648 ........................................................................ 87649 ........................................................................ 87650 ........................................................................ 87651 ........................................................................ 87652 ........................................................................ 87653 ........................................................................ 87654 ........................................................................ 87655 ........................................................................ 87656 ........................................................................ 87657 ........................................................................ 87658 ........................................................................ 87659 ........................................................................ 87660 ........................................................................ 87661 ........................................................................ 87662 ........................................................................ 87663 ........................................................................ 87664 ........................................................................ 87665 ........................................................................ 87666 ........................................................................ 87667 ........................................................................ 87668 ........................................................................ 87669 ........................................................................ 87670 ........................................................................ 87671 ........................................................................ 87672 ........................................................................ 87673 ........................................................................ 87674 ........................................................................ 87675 ........................................................................ 87676 ........................................................................ 87677 ........................................................................ 87678 ........................................................................ 87679 ........................................................................ 87680 ........................................................................ 87681 ........................................................................ 87682 ........................................................................ 87683 ........................................................................ 87684 ........................................................................ 87685 ........................................................................ 87686 ........................................................................ 87687 ........................................................................ 87688 ........................................................................ 87689 ........................................................................ 87690 ........................................................................ 87691 ........................................................................ 87692 ........................................................................ 87693 ........................................................................ 87694 ........................................................................ 87695 ........................................................................ 87696 ........................................................................ 87697 ........................................................................ 87698 ........................................................................ 87699 ........................................................................ 87700 ........................................................................ 87701 ........................................................................ 87702 ........................................................................ 87703 ........................................................................ 87704 ........................................................................ 87705 ........................................................................ 87706 ........................................................................ 87707 ........................................................................ 87708 ........................................................................ 87709 ........................................................................ 87710 ........................................................................ 87711 ........................................................................ 87712 ........................................................................ 87713 ........................................................................ 87714 ........................................................................ 87715 ........................................................................ 87716 ........................................................................ 87717 ........................................................................ 87718 ........................................................................ 87719 ........................................................................ 87720 ........................................................................ 87721 ........................................................................ 87722 ........................................................................ 87723 ........................................................................ 87724 ........................................................................ 87725 ........................................................................ 87726 ........................................................................ 87727 ........................................................................ 87728 ........................................................................ 87729 ........................................................................ 87730 ........................................................................ 87731 ........................................................................ 87732 ........................................................................ 87733 ........................................................................ 87734 ........................................................................ 87735 ........................................................................ 87736 ........................................................................ 87737 ........................................................................ 87738 ........................................................................ 87739 ........................................................................ 87740 ........................................................................ 87741 ........................................................................ 87742 ........................................................................ 87743 ........................................................................ 87744 ........................................................................ 87745 ........................................................................ 87746 ........................................................................ 87747 ........................................................................ 87748 ........................................................................ 87749 ........................................................................ 87750 ........................................................................ 87751 ........................................................................ 87752 ........................................................................ 87753 ........................................................................ 87754 ........................................................................ 87755 ........................................................................ 87756 ........................................................................ 87757 ........................................................................ 87758 ........................................................................ 87759 ........................................................................ 87760 ........................................................................ 87761 ........................................................................ 87762 ........................................................................ 87763 ........................................................................ 87764 ........................................................................ 87765 ........................................................................ 87766 ........................................................................ 87767 ........................................................................ 87768 ........................................................................ 87769 ........................................................................ 87770 ........................................................................ 87771 ........................................................................ 87772 ........................................................................ 87773 ........................................................................ 87774 ........................................................................ 87775 ........................................................................ 87776 ........................................................................ 87777 ........................................................................ 87778 ........................................................................ 87779 ........................................................................ 87780 ........................................................................ 87781 ........................................................................ 87782 ........................................................................ 87783 ........................................................................ 87784 ........................................................................ 87785 ........................................................................ 87786 ........................................................................ 87787 ........................................................................ 87788 ........................................................................ 87789 ........................................................................ 87790 ........................................................................ 87791 ........................................................................ 87792 ........................................................................ 87793 ........................................................................ 87794 ........................................................................ 87795 ........................................................................ 87796 ........................................................................ 87797 ........................................................................ 87798 ........................................................................ 87799 ........................................................................ 87800 ........................................................................ 87801 ........................................................................ 87802 ........................................................................ 87803 ........................................................................ 87804 ........................................................................ 87805 ........................................................................ 87806 ........................................................................ 87807 ........................................................................ 87808 ........................................................................ 87809 ........................................................................ 87810 ........................................................................ 87811 ........................................................................ 87812 ........................................................................ 87813 ........................................................................ 87814 ........................................................................ 87815 ........................................................................ 87816 ........................................................................ 87817 ........................................................................ 87818 ........................................................................ 87819 ........................................................................ 87820 ........................................................................ 87821 ........................................................................ 87822 ........................................................................ 87823 ........................................................................ 87824 ........................................................................ 87825 ........................................................................ 87826 ........................................................................ 87827 ........................................................................ 87828 ........................................................................ 87829 ........................................................................ 87830 ........................................................................ 87831 ........................................................................ 87832 ........................................................................ 87833 ........................................................................ 87834 ........................................................................ 87835 ........................................................................ 87836 ........................................................................ 87837 ........................................................................ 87838 ........................................................................ 87839 ........................................................................ 87840 ........................................................................ 87841 ........................................................................ 87842 ........................................................................ 87843 ........................................................................ 87844 ........................................................................ 87845 ........................................................................ 87846 ........................................................................ 87847 ........................................................................ 87848 ........................................................................ 87849 ........................................................................ 87850 ........................................................................ 87851 ........................................................................ 87852 ........................................................................ 87853 ........................................................................ 87854 ........................................................................ 87855 ........................................................................ 87856 ........................................................................ 87857 ........................................................................ 87858 ........................................................................ 87859 ........................................................................ 87860 ........................................................................ 87861 ........................................................................ 87862 ........................................................................ 87863 ........................................................................ 87864 ........................................................................ 87865 ........................................................................ 87866 ........................................................................ 87867 ........................................................................ 87868 ........................................................................ 87869 ........................................................................ 87870 ........................................................................ 87871 ........................................................................ 87872 ........................................................................ 87873 ........................................................................ 87874 ........................................................................ 87875 ........................................................................ 87876 ........................................................................ 87877 ........................................................................ 87878 ........................................................................ 87879 ........................................................................ 87880 ........................................................................ 87881 ........................................................................ 87882 ........................................................................ 87883 ........................................................................ 87884 ........................................................................ 87885 ........................................................................ 87886 ........................................................................ 87887 ........................................................................ 87888 ........................................................................ 87889 ........................................................................ 87890 ........................................................................ 87891 ........................................................................ 87892 ........................................................................ 87893 ........................................................................ 87894 ........................................................................ 87895 ........................................................................ 87896 ........................................................................ 87897 ........................................................................ 87898 ........................................................................ 87899 ........................................................................ 87900 ........................................................................ 87901 ........................................................................ 87902 ........................................................................ 87903 ........................................................................ 87904 ........................................................................ 87905 ........................................................................ 87906 ........................................................................ 87907 ........................................................................ 87908 ........................................................................ 87909 ........................................................................ 87910 ........................................................................ 87911 ........................................................................ 87912 ........................................................................ 87913 ........................................................................ 87914 ........................................................................ 87915 ........................................................................ 87916 ........................................................................ 87917 ........................................................................ 87918 ........................................................................ 87919 ........................................................................ 87920 ........................................................................ 87921 ........................................................................ 87922 ........................................................................ 87923 ........................................................................ 87924 ........................................................................ 87925 ........................................................................ 87926 ........................................................................ 87927 ........................................................................ 87928 ........................................................................ 87929 ........................................................................ 87930 ........................................................................ 87931 ........................................................................ 87932 ........................................................................ 87933 ........................................................................ 87934 ........................................................................ 87935 ........................................................................ 87936 ........................................................................ 87937 ........................................................................ 87938 ........................................................................ 87939 ........................................................................ 87940 ........................................................................ 87941 ........................................................................ 87942 ........................................................................ 87943 ........................................................................ 87944 ........................................................................ 87945 ........................................................................ 87946 ........................................................................ 87947 ........................................................................ 87948 ........................................................................ 87949 ........................................................................ 87950 ........................................................................ 87951 ........................................................................ 87952 ........................................................................ 87953 ........................................................................ 87954 ........................................................................ 87955 ........................................................................ 87956 ........................................................................ 87957 ........................................................................ 87958 ........................................................................ 87959 ........................................................................ 87960 ........................................................................ 87961 ........................................................................ 87962 ........................................................................ 87963 ........................................................................ 87964 ........................................................................ 87965 ........................................................................ 87966 ........................................................................ 87967 ........................................................................ 87968 ........................................................................ 87969 ........................................................................ 87970 ........................................................................ 87971 ........................................................................ 87972 ........................................................................ 87973 ........................................................................ 87974 ........................................................................ 87975 ........................................................................ 87976 ........................................................................ 87977 ........................................................................ 87978 ........................................................................ 87979 ........................................................................ 87980 ........................................................................ 87981 ........................................................................ 87982 ........................................................................ 87983 ........................................................................ 87984 ........................................................................ 87985 ........................................................................ 87986 ........................................................................ 87987 ........................................................................ 87988 ........................................................................ 87989 ........................................................................ 87990 ........................................................................ 87991 ........................................................................ 87992 ........................................................................ 87993 ........................................................................ 87994 ........................................................................ 87995 ........................................................................ 87996 ........................................................................ 87997 ........................................................................ 87998 ........................................................................ 87999 ........................................................................ 88000 ........................................................................ 88001 ........................................................................ 88002 ........................................................................ 88003 ........................................................................ 88004 ........................................................................ 88005 ........................................................................ 88006 ........................................................................ 88007 ........................................................................ 88008 ........................................................................ 88009 ........................................................................ 88010 ........................................................................ 88011 ........................................................................ 88012 ........................................................................ 88013 ........................................................................ 88014 ........................................................................ 88015 ........................................................................ 88016 ........................................................................ 88017 ........................................................................ 88018 ........................................................................ 88019 ........................................................................ 88020 ........................................................................ 88021 ........................................................................ 88022 ........................................................................ 88023 ........................................................................ 88024 ........................................................................ 88025 ........................................................................ 88026 ........................................................................ 88027 ........................................................................ 88028 ........................................................................ 88029 ........................................................................ 88030 ........................................................................ 88031 ........................................................................ 88032 ........................................................................ 88033 ........................................................................ 88034 ........................................................................ 88035 ........................................................................ 88036 ........................................................................ 88037 ........................................................................ 88038 ........................................................................ 88039 ........................................................................ 88040 ........................................................................ 88041 ........................................................................ 88042 ........................................................................ 88043 ........................................................................ 88044 ........................................................................ 88045 ........................................................................ 88046 ........................................................................ 88047 ........................................................................ 88048 ........................................................................ 88049 ........................................................................ 88050 ........................................................................ 88051 ........................................................................ 88052 ........................................................................ 88053 ........................................................................ 88054 ........................................................................ 88055 ........................................................................ 88056 ........................................................................ 88057 ........................................................................ 88058 ........................................................................ 88059 ........................................................................ 88060 ........................................................................ 88061 ........................................................................ 88062 ........................................................................ 88063 ........................................................................ 88064 ........................................................................ 88065 ........................................................................ 88066 ........................................................................ 88067 ........................................................................ 88068 ........................................................................ 88069 ........................................................................ 88070 ........................................................................ 88071 ........................................................................ 88072 ........................................................................ 88073 ........................................................................ 88074 ........................................................................ 88075 ........................................................................ 88076 ........................................................................ 88077 ........................................................................ 88078 ........................................................................ 88079 ........................................................................ 88080 ........................................................................ 88081 ........................................................................ 88082 ........................................................................ 88083 ........................................................................ 88084 ........................................................................ 88085 ........................................................................ 88086 ........................................................................ 88087 ........................................................................ 88088 ........................................................................ 88089 ........................................................................ 88090 ........................................................................ 88091 ........................................................................ 88092 ........................................................................ 88093 ........................................................................ 88094 ........................................................................ 88095 ........................................................................ 88096 ........................................................................ 88097 ........................................................................ 88098 ........................................................................ 88099 ........................................................................ 88100 ........................................................................ 88101 ........................................................................ 88102 ........................................................................ 88103 ........................................................................ 88104 ........................................................................ 88105 ........................................................................ 88106 ........................................................................ 88107 ........................................................................ 88108 ........................................................................ 88109 ........................................................................ 88110 ........................................................................ 88111 ........................................................................ 88112 ........................................................................ 88113 ........................................................................ 88114 ........................................................................ 88115 ........................................................................ 88116 ........................................................................ 88117 ........................................................................ 88118 ........................................................................ 88119 ........................................................................ 88120 ........................................................................ 88121 ........................................................................ 88122 ........................................................................ 88123 ........................................................................ 88124 ........................................................................ 88125 ........................................................................ 88126 ........................................................................ 88127 ........................................................................ 88128 ........................................................................ 88129 ........................................................................ 88130 ........................................................................ 88131 ........................................................................ 88132 ........................................................................ 88133 ........................................................................ 88134 ........................................................................ 88135 ........................................................................ 88136 ........................................................................ 88137 ........................................................................ 88138 ........................................................................ 88139 ........................................................................ 88140 ........................................................................ 88141 ........................................................................ 88142 ........................................................................ 88143 ........................................................................ 88144 ........................................................................ 88145 ........................................................................ 88146 ........................................................................ 88147 ........................................................................ 88148 ........................................................................ 88149 ........................................................................ 88150 ........................................................................ 88151 ........................................................................ 88152 ........................................................................ 88153 ........................................................................ 88154 ........................................................................ 88155 ........................................................................ 88156 ........................................................................ 88157 ........................................................................ 88158 ........................................................................ 88159 ........................................................................ 88160 ........................................................................ 88161 ........................................................................ 88162 ........................................................................ 88163 ........................................................................ 88164 ........................................................................ 88165 ........................................................................ 88166 ........................................................................ 88167 ........................................................................ 88168 ........................................................................ 88169 ........................................................................ 88170 ........................................................................ 88171 ........................................................................ 88172 ........................................................................ 88173 ........................................................................ 88174 ........................................................................ 88175 ........................................................................ 88176 ........................................................................ 88177 ........................................................................ 88178 ........................................................................ 88179 ........................................................................ 88180 ........................................................................ 88181 ........................................................................ 88182 ........................................................................ 88183 ........................................................................ 88184 ........................................................................ 88185 ........................................................................ 88186 ........................................................................ 88187 ........................................................................ 88188 ........................................................................ 88189 ........................................................................ 88190 ........................................................................ 88191 ........................................................................ 88192 ........................................................................ 88193 ........................................................................ 88194 ........................................................................ 88195 ........................................................................ 88196 ........................................................................ 88197 ........................................................................ 88198 ........................................................................ 88199 ........................................................................ 88200 ........................................................................ 88201 ........................................................................ 88202 ........................................................................ 88203 ........................................................................ 88204 ........................................................................ 88205 ........................................................................ 88206 ........................................................................ 88207 ........................................................................ 88208 ........................................................................ 88209 ........................................................................ 88210 ........................................................................ 88211 ........................................................................ 88212 ........................................................................ 88213 ........................................................................ 88214 ........................................................................ 88215 ........................................................................ 88216 ........................................................................ 88217 ........................................................................ 88218 ........................................................................ 88219 ........................................................................ 88220 ........................................................................ 88221 ........................................................................ 88222 ........................................................................ 88223 ........................................................................ 88224 ........................................................................ 88225 ........................................................................ 88226 ........................................................................ 88227 ........................................................................ 88228 ........................................................................ 88229 ........................................................................ 88230 ........................................................................ 88231 ........................................................................ 88232 ........................................................................ 88233 ........................................................................ 88234 ........................................................................ 88235 ........................................................................ 88236 ........................................................................ 88237 ........................................................................ 88238 ........................................................................ 88239 ........................................................................ 88240 ........................................................................ 88241 ........................................................................ 88242 ........................................................................ 88243 ........................................................................ 88244 ........................................................................ 88245 ........................................................................ 88246 ........................................................................ 88247 ........................................................................ 88248 ........................................................................ 88249 ........................................................................ 88250 ........................................................................ 88251 ........................................................................ 88252 ........................................................................ 88253 ........................................................................ 88254 ........................................................................ 88255 ........................................................................ 88256 ........................................................................ 88257 ........................................................................ 88258 ........................................................................ 88259 ........................................................................ 88260 ........................................................................ 88261 ........................................................................ 88262 ........................................................................ 88263 ........................................................................ 88264 ........................................................................ 88265 ........................................................................ 88266 ........................................................................ 88267 ........................................................................ 88268 ........................................................................ 88269 ........................................................................ 88270 ........................................................................ 88271 ........................................................................ 88272 ........................................................................ 88273 ........................................................................ 88274 ........................................................................ 88275 ........................................................................ 88276 ........................................................................ 88277 ........................................................................ 88278 ........................................................................ 88279 ........................................................................ 88280 ........................................................................ 88281 ........................................................................ 88282 ........................................................................ 88283 ........................................................................ 88284 ........................................................................ 88285 ........................................................................ 88286 ........................................................................ 88287 ........................................................................ 88288 ........................................................................ 88289 ........................................................................ 88290 ........................................................................ 88291 ........................................................................ 88292 ........................................................................ 88293 ........................................................................ 88294 ........................................................................ 88295 ........................................................................ 88296 ........................................................................ 88297 ........................................................................ 88298 ........................................................................ 88299 ........................................................................ 88300 ........................................................................ 88301 ........................................................................ 88302 ........................................................................ 88303 ........................................................................ 88304 ........................................................................ 88305 ........................................................................ 88306 ........................................................................ 88307 ........................................................................ 88308 ........................................................................ 88309 ........................................................................ 88310 ........................................................................ 88311 ........................................................................ 88312 ........................................................................ 88313 ........................................................................ 88314 ........................................................................ 88315 ........................................................................ 88316 ........................................................................ 88317 ........................................................................ 88318 ........................................................................ 88319 ........................................................................ 88320 ........................................................................ 88321 ........................................................................ 88322 ........................................................................ 88323 ........................................................................ 88324 ........................................................................ 88325 ........................................................................ 88326 ........................................................................ 88327 ........................................................................ 88328 ........................................................................ 88329 ........................................................................ 88330 ........................................................................ 88331 ........................................................................ 88332 ........................................................................ 88333 ........................................................................ 88334 ........................................................................ 88335 ........................................................................ 88336 ........................................................................ 88337 ........................................................................ 88338 ........................................................................ 88339 ........................................................................ 88340 ........................................................................ 88341 ........................................................................ 88342 ........................................................................ 88343 ........................................................................ 88344 ........................................................................ 88345 ........................................................................ 88346 ........................................................................ 88347 ........................................................................ 88348 ........................................................................ 88349 ........................................................................ 88350 ........................................................................ 88351 ........................................................................ 88352 ........................................................................ 88353 ........................................................................ 88354 ........................................................................ 88355 ........................................................................ 88356 ........................................................................ 88357 ........................................................................ 88358 ........................................................................ 88359 ........................................................................ 88360 ........................................................................ 88361 ........................................................................ 88362 ........................................................................ 88363 ........................................................................ 88364 ........................................................................ 88365 ........................................................................ 88366 ........................................................................ 88367 ........................................................................ 88368 ........................................................................ 88369 ........................................................................ 88370 ........................................................................ 88371 ........................................................................ 88372 ........................................................................ 88373 ........................................................................ 88374 ........................................................................ 88375 ........................................................................ 88376 ........................................................................ 88377 ........................................................................ 88378 ........................................................................ 88379 ........................................................................ 88380 ........................................................................ 88381 ........................................................................ 88382 ........................................................................ 88383 ........................................................................ 88384 ........................................................................ 88385 ........................................................................ 88386 ........................................................................ 88387 ........................................................................ 88388 ........................................................................ 88389 ........................................................................ 88390 ........................................................................ 88391 ........................................................................ 88392 ........................................................................ 88393 ........................................................................ 88394 ........................................................................ 88395 ........................................................................ 88396 ........................................................................ 88397 ........................................................................ 88398 ........................................................................ 88399 ........................................................................ 88400 ........................................................................ 88401 ........................................................................ 88402 ........................................................................ 88403 ........................................................................ 88404 ........................................................................ 88405 ........................................................................ 88406 ........................................................................ 88407 ........................................................................ 88408 ........................................................................ 88409 ........................................................................ 88410 ........................................................................ 88411 ........................................................................ 88412 ........................................................................ 88413 ........................................................................ 88414 ........................................................................ 88415 ........................................................................ 88416 ........................................................................ 88417 ........................................................................ 88418 ........................................................................ 88419 ........................................................................ 88420 ........................................................................ 88421 ........................................................................ 88422 ........................................................................ 88423 ........................................................................ 88424 ........................................................................ 88425 ........................................................................ 88426 ........................................................................ 88427 ........................................................................ 88428 ........................................................................ 88429 ........................................................................ 88430 ........................................................................ 88431 ........................................................................ 88432 ........................................................................ 88433 ........................................................................ 88434 ........................................................................ 88435 ........................................................................ 88436 ........................................................................ 88437 ........................................................................ 88438 ........................................................................ 88439 ........................................................................ 88440 ........................................................................ 88441 ........................................................................ 88442 ........................................................................ 88443 ........................................................................ 88444 ........................................................................ 88445 ........................................................................ 88446 ........................................................................ 88447 ........................................................................ 88448 ........................................................................ 88449 ........................................................................ 88450 ........................................................................ 88451 ........................................................................ 88452 ........................................................................ 88453 ........................................................................ 88454 ........................................................................ 88455 ........................................................................ 88456 ........................................................................ 88457 ........................................................................ 88458 ........................................................................ 88459 ........................................................................ 88460 ........................................................................ 88461 ........................................................................ 88462 ........................................................................ 88463 ........................................................................ 88464 ........................................................................ 88465 ........................................................................ 88466 ........................................................................ 88467 ........................................................................ 88468 ........................................................................ 88469 ........................................................................ 88470 ........................................................................ 88471 ........................................................................ 88472 ........................................................................ 88473 ........................................................................ 88474 ........................................................................ 88475 ........................................................................ 88476 ........................................................................ 88477 ........................................................................ 88478 ........................................................................ 88479 ........................................................................ 88480 ........................................................................ 88481 ........................................................................ 88482 ........................................................................ 88483 ........................................................................ 88484 ........................................................................ 88485 ........................................................................ 88486 ........................................................................ 88487 ........................................................................ 88488 ........................................................................ 88489 ........................................................................ 88490 ........................................................................ 88491 ........................................................................ 88492 ........................................................................ 88493 ........................................................................ 88494 ........................................................................ 88495 ........................................................................ 88496 ........................................................................ 88497 ........................................................................ 88498 ........................................................................ 88499 ........................................................................ 88500 ........................................................................ 88501 ........................................................................ 88502 ........................................................................ 88503 ........................................................................ 88504 ........................................................................ 88505 ........................................................................ 88506 ........................................................................ 88507 ........................................................................ 88508 ........................................................................ 88509 ........................................................................ 88510 ........................................................................ 88511 ........................................................................ 88512 ........................................................................ 88513 ........................................................................ 88514 ........................................................................ 88515 ........................................................................ 88516 ........................................................................ 88517 ........................................................................ 88518 ........................................................................ 88519 ........................................................................ 88520 ........................................................................ 88521 ........................................................................ 88522 ........................................................................ 88523 ........................................................................ 88524 ........................................................................ 88525 ........................................................................ 88526 ........................................................................ 88527 ........................................................................ 88528 ........................................................................ 88529 ........................................................................ 88530 ........................................................................ 88531 ........................................................................ 88532 ........................................................................ 88533 ........................................................................ 88534 ........................................................................ 88535 ........................................................................ 88536 ........................................................................ 88537 ........................................................................ 88538 ........................................................................ 88539 ........................................................................ 88540 ........................................................................ 88541 ........................................................................ 88542 ........................................................................ 88543 ........................................................................ 88544 ........................................................................ 88545 ........................................................................ 88546 ........................................................................ 88547 ........................................................................ 88548 ........................................................................ 88549 ........................................................................ 88550 ........................................................................ 88551 ........................................................................ 88552 ........................................................................ 88553 ........................................................................ 88554 ........................................................................ 88555 ........................................................................ 88556 ........................................................................ 88557 ........................................................................ 88558 ........................................................................ 88559 ........................................................................ 88560 ........................................................................ 88561 ........................................................................ 88562 ........................................................................ 88563 ........................................................................ 88564 ........................................................................ 88565 ........................................................................ 88566 ........................................................................ 88567 ........................................................................ 88568 ........................................................................ 88569 ........................................................................ 88570 ........................................................................ 88571 ........................................................................ 88572 ........................................................................ 88573 ........................................................................ 88574 ........................................................................ 88575 ........................................................................ 88576 ........................................................................ 88577 ........................................................................ 88578 ........................................................................ 88579 ........................................................................ 88580 ........................................................................ 88581 ........................................................................ 88582 ........................................................................ 88583 ........................................................................ 88584 ........................................................................ 88585 ........................................................................ 88586 ........................................................................ 88587 ........................................................................ 88588 ........................................................................ 88589 ........................................................................ 88590 ........................................................................ 88591 ........................................................................ 88592 ........................................................................ 88593 ........................................................................ 88594 ........................................................................ 88595 ........................................................................ 88596 ........................................................................ 88597 ........................................................................ 88598 ........................................................................ 88599 ........................................................................ 88600 ........................................................................ 88601 ........................................................................ 88602 ........................................................................ 88603 ........................................................................ 88604 ........................................................................ 88605 ........................................................................ 88606 ........................................................................ 88607 ........................................................................ 88608 ........................................................................ 88609 ........................................................................ 88610 ........................................................................ 88611 ........................................................................ 88612 ........................................................................ 88613 ........................................................................ 88614 ........................................................................ 88615 ........................................................................ 88616 ........................................................................ 88617 ........................................................................ 88618 ........................................................................ 88619 ........................................................................ 88620 ........................................................................ 88621 ........................................................................ 88622 ........................................................................ 88623 ........................................................................ 88624 ........................................................................ 88625 ........................................................................ 88626 ........................................................................ 88627 ........................................................................ 88628 ........................................................................ 88629 ........................................................................ 88630 ........................................................................ 88631 ........................................................................ 88632 ........................................................................ 88633 ........................................................................ 88634 ........................................................................ 88635 ........................................................................ 88636 ........................................................................ 88637 ........................................................................ 88638 ........................................................................ 88639 ........................................................................ 88640 ........................................................................ 88641 ........................................................................ 88642 ........................................................................ 88643 ........................................................................ 88644 ........................................................................ 88645 ........................................................................ 88646 ........................................................................ 88647 ........................................................................ 88648 ........................................................................ 88649 ........................................................................ 88650 ........................................................................ 88651 ........................................................................ 88652 ........................................................................ 88653 ........................................................................ 88654 ........................................................................ 88655 ........................................................................ 88656 ........................................................................ 88657 ........................................................................ 88658 ........................................................................ 88659 ........................................................................ 88660 ........................................................................ 88661 ........................................................................ 88662 ........................................................................ 88663 ........................................................................ 88664 ........................................................................ 88665 ........................................................................ 88666 ........................................................................ 88667 ........................................................................ 88668 ........................................................................ 88669 ........................................................................ 88670 ........................................................................ 88671 ........................................................................ 88672 ........................................................................ 88673 ........................................................................ 88674 ........................................................................ 88675 ........................................................................ 88676 ........................................................................ 88677 ........................................................................ 88678 ........................................................................ 88679 ........................................................................ 88680 ........................................................................ 88681 ........................................................................ 88682 ........................................................................ 88683 ........................................................................ 88684 ........................................................................ 88685 ........................................................................ 88686 ........................................................................ 88687 ........................................................................ 88688 ........................................................................ 88689 ........................................................................ 88690 ........................................................................ 88691 ........................................................................ 88692 ........................................................................ 88693 ........................................................................ 88694 ........................................................................ 88695 ........................................................................ 88696 ........................................................................ 88697 ........................................................................ 88698 ........................................................................ 88699 ........................................................................ 88700 ........................................................................ 88701 ........................................................................ 88702 ........................................................................ 88703 ........................................................................ 88704 ........................................................................ 88705 ........................................................................ 88706 ........................................................................ 88707 ........................................................................ 88708 ........................................................................ 88709 ........................................................................ 88710 ........................................................................ 88711 ........................................................................ 88712 ........................................................................ 88713 ........................................................................ 88714 ........................................................................ 88715 ........................................................................ 88716 ........................................................................ 88717 ........................................................................ 88718 ........................................................................ 88719 ........................................................................ 88720 ........................................................................ 88721 ........................................................................ 88722 ........................................................................ 88723 ........................................................................ 88724 ........................................................................ 88725 ........................................................................ 88726 ........................................................................ 88727 ........................................................................ 88728 ........................................................................ 88729 ........................................................................ 88730 ........................................................................ 88731 ........................................................................ 88732 ........................................................................ 88733 ........................................................................ 88734 ........................................................................ 88735 ........................................................................ 88736 ........................................................................ 88737 ........................................................................ 88738 ........................................................................ 88739 ........................................................................ 88740 ........................................................................ 88741 ........................................................................ 88742 ........................................................................ 88743 ........................................................................ 88744 ........................................................................ 88745 ........................................................................ 88746 ........................................................................ 88747 ........................................................................ 88748 ........................................................................ 88749 ........................................................................ 88750 ........................................................................ 88751 ........................................................................ 88752 ........................................................................ 88753 ........................................................................ 88754 ........................................................................ 88755 ........................................................................ 88756 ........................................................................ 88757 ........................................................................ 88758 ........................................................................ 88759 ........................................................................ 88760 ........................................................................ 88761 ........................................................................ 88762 ........................................................................ 88763 ........................................................................ 88764 ........................................................................ 88765 ........................................................................ 88766 ........................................................................ 88767 ........................................................................ 88768 ........................................................................ 88769 ........................................................................ 88770 ........................................................................ 88771 ........................................................................ 88772 ........................................................................ 88773 ........................................................................ 88774 ........................................................................ 88775 ........................................................................ 88776 ........................................................................ 88777 ........................................................................ 88778 ........................................................................ 88779 ........................................................................ 88780 ........................................................................ 88781 ........................................................................ 88782 ........................................................................ 88783 ........................................................................ 88784 ........................................................................ 88785 ........................................................................ 88786 ........................................................................ 88787 ........................................................................ 88788 ........................................................................ 88789 ........................................................................ 88790 ........................................................................ 88791 ........................................................................ 88792 ........................................................................ 88793 ........................................................................ 88794 ........................................................................ 88795 ........................................................................ 88796 ........................................................................ 88797 ........................................................................ 88798 ........................................................................ 88799 ........................................................................ 88800 ........................................................................ 88801 ........................................................................ 88802 ........................................................................ 88803 ........................................................................ 88804 ........................................................................ 88805 ........................................................................ 88806 ........................................................................ 88807 ........................................................................ 88808 ........................................................................ 88809 ........................................................................ 88810 ........................................................................ 88811 ........................................................................ 88812 ........................................................................ 88813 ........................................................................ 88814 ........................................................................ 88815 ........................................................................ 88816 ........................................................................ 88817 ........................................................................ 88818 ........................................................................ 88819 ........................................................................ 88820 ........................................................................ 88821 ........................................................................ 88822 ........................................................................ 88823 ........................................................................ 88824 ........................................................................ 88825 ........................................................................ 88826 ........................................................................ 88827 ........................................................................ 88828 ........................................................................ 88829 ........................................................................ 88830 ........................................................................ 88831 ........................................................................ 88832 ........................................................................ 88833 ........................................................................ 88834 ........................................................................ 88835 ........................................................................ 88836 ........................................................................ 88837 ........................................................................ 88838 ........................................................................ 88839 ........................................................................ 88840 ........................................................................ 88841 ........................................................................ 88842 ........................................................................ 88843 ........................................................................ 88844 ........................................................................ 88845 ........................................................................ 88846 ........................................................................ 88847 ........................................................................ 88848 ........................................................................ 88849 ........................................................................ 88850 ........................................................................ 88851 ........................................................................ 88852 ........................................................................ 88853 ........................................................................ 88854 ........................................................................ 88855 ........................................................................ 88856 ........................................................................ 88857 ........................................................................ 88858 ........................................................................ 88859 ........................................................................ 88860 ........................................................................ 88861 ........................................................................ 88862 ........................................................................ 88863 ........................................................................ 88864 ........................................................................ 88865 ........................................................................ 88866 ........................................................................ 88867 ........................................................................ 88868 ........................................................................ 88869 ........................................................................ 88870 ........................................................................ 88871 ........................................................................ 88872 ........................................................................ 88873 ........................................................................ 88874 ........................................................................ 88875 ........................................................................ 88876 ........................................................................ 88877 ........................................................................ 88878 ........................................................................ 88879 ........................................................................ 88880 ........................................................................ 88881 ........................................................................ 88882 ........................................................................ 88883 ........................................................................ 88884 ........................................................................ 88885 ........................................................................ 88886 ........................................................................ 88887 ........................................................................ 88888 ........................................................................ 88889 ........................................................................ 88890 ........................................................................ 88891 ........................................................................ 88892 ........................................................................ 88893 ........................................................................ 88894 ........................................................................ 88895 ........................................................................ 88896 ........................................................................ 88897 ........................................................................ 88898 ........................................................................ 88899 ........................................................................ 88900 ........................................................................ 88901 ........................................................................ 88902 ........................................................................ 88903 ........................................................................ 88904 ........................................................................ 88905 ........................................................................ 88906 ........................................................................ 88907 ........................................................................ 88908 ........................................................................ 88909 ........................................................................ 88910 ........................................................................ 88911 ........................................................................ 88912 ........................................................................ 88913 ........................................................................ 88914 ........................................................................ 88915 ........................................................................ 88916 ........................................................................ 88917 ........................................................................ 88918 ........................................................................ 88919 ........................................................................ 88920 ........................................................................ 88921 ........................................................................ 88922 ........................................................................ 88923 ........................................................................ 88924 ........................................................................ 88925 ........................................................................ 88926 ........................................................................ 88927 ........................................................................ 88928 ........................................................................ 88929 ........................................................................ 88930 ........................................................................ 88931 ........................................................................ 88932 ........................................................................ 88933 ........................................................................ 88934 ........................................................................ 88935 ........................................................................ 88936 ........................................................................ 88937 ........................................................................ 88938 ........................................................................ 88939 ........................................................................ 88940 ........................................................................ 88941 ........................................................................ 88942 ........................................................................ 88943 ........................................................................ 88944 ........................................................................ 88945 ........................................................................ 88946 ........................................................................ 88947 ........................................................................ 88948 ........................................................................ 88949 ........................................................................ 88950 ........................................................................ 88951 ........................................................................ 88952 ........................................................................ 88953 ........................................................................ 88954 ........................................................................ 88955 ........................................................................ 88956 ........................................................................ 88957 ........................................................................ 88958 ........................................................................ 88959 ........................................................................ 88960 ........................................................................ 88961 ........................................................................ 88962 ........................................................................ 88963 ........................................................................ 88964 ........................................................................ 88965 ........................................................................ 88966 ........................................................................ 88967 ........................................................................ 88968 ........................................................................ 88969 ........................................................................ 88970 ........................................................................ 88971 ........................................................................ 88972 ........................................................................ 88973 ........................................................................ 88974 ........................................................................ 88975 ........................................................................ 88976 ........................................................................ 88977 ........................................................................ 88978 ........................................................................ 88979 ........................................................................ 88980 ........................................................................ 88981 ........................................................................ 88982 ........................................................................ 88983 ........................................................................ 88984 ........................................................................ 88985 ........................................................................ 88986 ........................................................................ 88987 ........................................................................ 88988 ........................................................................ 88989 ........................................................................ 88990 ........................................................................ 88991 ........................................................................ 88992 ........................................................................ 88993 ........................................................................ 88994 ........................................................................ 88995 ........................................................................ 88996 ........................................................................ 88997 ........................................................................ 88998 ........................................................................ 88999 ........................................................................ 89000 ........................................................................ 89001 ........................................................................ 89002 ........................................................................ 89003 ........................................................................ 89004 ........................................................................ 89005 ........................................................................ 89006 ........................................................................ 89007 ........................................................................ 89008 ........................................................................ 89009 ........................................................................ 89010 ........................................................................ 89011 ........................................................................ 89012 ........................................................................ 89013 ........................................................................ 89014 ........................................................................ 89015 ........................................................................ 89016 ........................................................................ 89017 ........................................................................ 89018 ........................................................................ 89019 ........................................................................ 89020 ........................................................................ 89021 ........................................................................ 89022 ........................................................................ 89023 ........................................................................ 89024 ........................................................................ 89025 ........................................................................ 89026 ........................................................................ 89027 ........................................................................ 89028 ........................................................................ 89029 ........................................................................ 89030 ........................................................................ 89031 ........................................................................ 89032 ........................................................................ 89033 ........................................................................ 89034 ........................................................................ 89035 ........................................................................ 89036 ........................................................................ 89037 ........................................................................ 89038 ........................................................................ 89039 ........................................................................ 89040 ........................................................................ 89041 ........................................................................ 89042 ........................................................................ 89043 ........................................................................ 89044 ........................................................................ 89045 ........................................................................ 89046 ........................................................................ 89047 ........................................................................ 89048 ........................................................................ 89049 ........................................................................ 89050 ........................................................................ 89051 ........................................................................ 89052 ........................................................................ 89053 ........................................................................ 89054 ........................................................................ 89055 ........................................................................ 89056 ........................................................................ 89057 ........................................................................ 89058 ........................................................................ 89059 ........................................................................ 89060 ........................................................................ 89061 ........................................................................ 89062 ........................................................................ 89063 ........................................................................ 89064 ........................................................................ 89065 ........................................................................ 89066 ........................................................................ 89067 ........................................................................ 89068 ........................................................................ 89069 ........................................................................ 89070 ........................................................................ 89071 ........................................................................ 89072 ........................................................................ 89073 ........................................................................ 89074 ........................................................................ 89075 ........................................................................ 89076 ........................................................................ 89077 ........................................................................ 89078 ........................................................................ 89079 ........................................................................ 89080 ........................................................................ 89081 ........................................................................ 89082 ........................................................................ 89083 ........................................................................ 89084 ........................................................................ 89085 ........................................................................ 89086 ........................................................................ 89087 ........................................................................ 89088 ........................................................................ 89089 ........................................................................ 89090 ........................................................................ 89091 ........................................................................ 89092 ........................................................................ 89093 ........................................................................ 89094 ........................................................................ 89095 ........................................................................ 89096 ........................................................................ 89097 ........................................................................ 89098 ........................................................................ 89099 ........................................................................ 89100 ........................................................................ 89101 ........................................................................ 89102 ........................................................................ 89103 ........................................................................ 89104 ........................................................................ 89105 ........................................................................ 89106 ........................................................................ 89107 ........................................................................ 89108 ........................................................................ 89109 ........................................................................ 89110 ........................................................................ 89111 ........................................................................ 89112 ........................................................................ 89113 ........................................................................ 89114 ........................................................................ 89115 ........................................................................ 89116 ........................................................................ 89117 ........................................................................ 89118 ........................................................................ 89119 ........................................................................ 89120 ........................................................................ 89121 ........................................................................ 89122 ........................................................................ 89123 ........................................................................ 89124 ........................................................................ 89125 ........................................................................ 89126 ........................................................................ 89127 ........................................................................ 89128 ........................................................................ 89129 ........................................................................ 89130 ........................................................................ 89131 ........................................................................ 89132 ........................................................................ 89133 ........................................................................ 89134 ........................................................................ 89135 ........................................................................ 89136 ........................................................................ 89137 ........................................................................ 89138 ........................................................................ 89139 ........................................................................ 89140 ........................................................................ 89141 ........................................................................ 89142 ........................................................................ 89143 ........................................................................ 89144 ........................................................................ 89145 ........................................................................ 89146 ........................................................................ 89147 ........................................................................ 89148 ........................................................................ 89149 ........................................................................ 89150 ........................................................................ 89151 ........................................................................ 89152 ........................................................................ 89153 ........................................................................ 89154 ........................................................................ 89155 ........................................................................ 89156 ........................................................................ 89157 ........................................................................ 89158 ........................................................................ 89159 ........................................................................ 89160 ........................................................................ 89161 ........................................................................ 89162 ........................................................................ 89163 ........................................................................ 89164 ........................................................................ 89165 ........................................................................ 89166 ........................................................................ 89167 ........................................................................ 89168 ........................................................................ 89169 ........................................................................ 89170 ........................................................................ 89171 ........................................................................ 89172 ........................................................................ 89173 ........................................................................ 89174 ........................................................................ 89175 ........................................................................ 89176 ........................................................................ 89177 ........................................................................ 89178 ........................................................................ 89179 ........................................................................ 89180 ........................................................................ 89181 ........................................................................ 89182 ........................................................................ 89183 ........................................................................ 89184 ........................................................................ 89185 ........................................................................ 89186 ........................................................................ 89187 ........................................................................ 89188 ........................................................................ 89189 ........................................................................ 89190 ........................................................................ 89191 ........................................................................ 89192 ........................................................................ 89193 ........................................................................ 89194 ........................................................................ 89195 ........................................................................ 89196 ........................................................................ 89197 ........................................................................ 89198 ........................................................................ 89199 ........................................................................ 89200 ........................................................................ 89201 ........................................................................ 89202 ........................................................................ 89203 ........................................................................ 89204 ........................................................................ 89205 ........................................................................ 89206 ........................................................................ 89207 ........................................................................ 89208 ........................................................................ 89209 ........................................................................ 89210 ........................................................................ 89211 ........................................................................ 89212 ........................................................................ 89213 ........................................................................ 89214 ........................................................................ 89215 ........................................................................ 89216 ........................................................................ 89217 ........................................................................ 89218 ........................................................................ 89219 ........................................................................ 89220 ........................................................................ 89221 ........................................................................ 89222 ........................................................................ 89223 ........................................................................ 89224 ........................................................................ 89225 ........................................................................ 89226 ........................................................................ 89227 ........................................................................ 89228 ........................................................................ 89229 ........................................................................ 89230 ........................................................................ 89231 ........................................................................ 89232 ........................................................................ 89233 ........................................................................ 89234 ........................................................................ 89235 ........................................................................ 89236 ........................................................................ 89237 ........................................................................ 89238 ........................................................................ 89239 ........................................................................ 89240 ........................................................................ 89241 ........................................................................ 89242 ........................................................................ 89243 ........................................................................ 89244 ........................................................................ 89245 ........................................................................ 89246 ........................................................................ 89247 ........................................................................ 89248 ........................................................................ 89249 ........................................................................ 89250 ........................................................................ 89251 ........................................................................ 89252 ........................................................................ 89253 ........................................................................ 89254 ........................................................................ 89255 ........................................................................ 89256 ........................................................................ 89257 ........................................................................ 89258 ........................................................................ 89259 ........................................................................ 89260 ........................................................................ 89261 ........................................................................ 89262 ........................................................................ 89263 ........................................................................ 89264 ........................................................................ 89265 ........................................................................ 89266 ........................................................................ 89267 ........................................................................ 89268 ........................................................................ 89269 ........................................................................ 89270 ........................................................................ 89271 ........................................................................ 89272 ........................................................................ 89273 ........................................................................ 89274 ........................................................................ 89275 ........................................................................ 89276 ........................................................................ 89277 ........................................................................ 89278 ........................................................................ 89279 ........................................................................ 89280 ........................................................................ 89281 ........................................................................ 89282 ........................................................................ 89283 ........................................................................ 89284 ........................................................................ 89285 ........................................................................ 89286 ........................................................................ 89287 ........................................................................ 89288 ........................................................................ 89289 ........................................................................ 89290 ........................................................................ 89291 ........................................................................ 89292 ........................................................................ 89293 ........................................................................ 89294 ........................................................................ 89295 ........................................................................ 89296 ........................................................................ 89297 ........................................................................ 89298 ........................................................................ 89299 ........................................................................ 89300 ........................................................................ 89301 ........................................................................ 89302 ........................................................................ 89303 ........................................................................ 89304 ........................................................................ 89305 ........................................................................ 89306 ........................................................................ 89307 ........................................................................ 89308 ........................................................................ 89309 ........................................................................ 89310 ........................................................................ 89311 ........................................................................ 89312 ........................................................................ 89313 ........................................................................ 89314 ........................................................................ 89315 ........................................................................ 89316 ........................................................................ 89317 ........................................................................ 89318 ........................................................................ 89319 ........................................................................ 89320 ........................................................................ 89321 ........................................................................ 89322 ........................................................................ 89323 ........................................................................ 89324 ........................................................................ 89325 ........................................................................ 89326 ........................................................................ 89327 ........................................................................ 89328 ........................................................................ 89329 ........................................................................ 89330 ........................................................................ 89331 ........................................................................ 89332 ........................................................................ 89333 ........................................................................ 89334 ........................................................................ 89335 ........................................................................ 89336 ........................................................................ 89337 ........................................................................ 89338 ........................................................................ 89339 ........................................................................ 89340 ........................................................................ 89341 ........................................................................ 89342 ........................................................................ 89343 ........................................................................ 89344 ........................................................................ 89345 ........................................................................ 89346 ........................................................................ 89347 ........................................................................ 89348 ........................................................................ 89349 ........................................................................ 89350 ........................................................................ 89351 ........................................................................ 89352 ........................................................................ 89353 ........................................................................ 89354 ........................................................................ 89355 ........................................................................ 89356 ........................................................................ 89357 ........................................................................ 89358 ........................................................................ 89359 ........................................................................ 89360 ........................................................................ 89361 ........................................................................ 89362 ........................................................................ 89363 ........................................................................ 89364 ........................................................................ 89365 ........................................................................ 89366 ........................................................................ 89367 ........................................................................ 89368 ........................................................................ 89369 ........................................................................ 89370 ........................................................................ 89371 ........................................................................ 89372 ........................................................................ 89373 ........................................................................ 89374 ........................................................................ 89375 ........................................................................ 89376 ........................................................................ 89377 ........................................................................ 89378 ........................................................................ 89379 ........................................................................ 89380 ........................................................................ 89381 ........................................................................ 89382 ........................................................................ 89383 ........................................................................ 89384 ........................................................................ 89385 ........................................................................ 89386 ........................................................................ 89387 ........................................................................ 89388 ........................................................................ 89389 ........................................................................ 89390 ........................................................................ 89391 ........................................................................ 89392 ........................................................................ 89393 ........................................................................ 89394 ........................................................................ 89395 ........................................................................ 89396 ........................................................................ 89397 ........................................................................ 89398 ........................................................................ 89399 ........................................................................ 89400 ........................................................................ 89401 ........................................................................ 89402 ........................................................................ 89403 ........................................................................ 89404 ........................................................................ 89405 ........................................................................ 89406 ........................................................................ 89407 ........................................................................ 89408 ........................................................................ 89409 ........................................................................ 89410 ........................................................................ 89411 ........................................................................ 89412 ........................................................................ 89413 ........................................................................ 89414 ........................................................................ 89415 ........................................................................ 89416 ........................................................................ 89417 ........................................................................ 89418 ........................................................................ 89419 ........................................................................ 89420 ........................................................................ 89421 ........................................................................ 89422 ........................................................................ 89423 ........................................................................ 89424 ........................................................................ 89425 ........................................................................ 89426 ........................................................................ 89427 ........................................................................ 89428 ........................................................................ 89429 ........................................................................ 89430 ........................................................................ 89431 ........................................................................ 89432 ........................................................................ 89433 ........................................................................ 89434 ........................................................................ 89435 ........................................................................ 89436 ........................................................................ 89437 ........................................................................ 89438 ........................................................................ 89439 ........................................................................ 89440 ........................................................................ 89441 ........................................................................ 89442 ........................................................................ 89443 ........................................................................ 89444 ........................................................................ 89445 ........................................................................ 89446 ........................................................................ 89447 ........................................................................ 89448 ........................................................................ 89449 ........................................................................ 89450 ........................................................................ 89451 ........................................................................ 89452 ........................................................................ 89453 ........................................................................ 89454 ........................................................................ 89455 ........................................................................ 89456 ........................................................................ 89457 ........................................................................ 89458 ........................................................................ 89459 ........................................................................ 89460 ........................................................................ 89461 ........................................................................ 89462 ........................................................................ 89463 ........................................................................ 89464 ........................................................................ 89465 ........................................................................ 89466 ........................................................................ 89467 ........................................................................ 89468 ........................................................................ 89469 ........................................................................ 89470 ........................................................................ 89471 ........................................................................ 89472 ........................................................................ 89473 ........................................................................ 89474 ........................................................................ 89475 ........................................................................ 89476 ........................................................................ 89477 ........................................................................ 89478 ........................................................................ 89479 ........................................................................ 89480 ........................................................................ 89481 ........................................................................ 89482 ........................................................................ 89483 ........................................................................ 89484 ........................................................................ 89485 ........................................................................ 89486 ........................................................................ 89487 ........................................................................ 89488 ........................................................................ 89489 ........................................................................ 89490 ........................................................................ 89491 ........................................................................ 89492 ........................................................................ 89493 ........................................................................ 89494 ........................................................................ 89495 ........................................................................ 89496 ........................................................................ 89497 ........................................................................ 89498 ........................................................................ 89499 ........................................................................ 89500 ........................................................................ 89501 ........................................................................ 89502 ........................................................................ 89503 ........................................................................ 89504 ........................................................................ 89505 ........................................................................ 89506 ........................................................................ 89507 ........................................................................ 89508 ........................................................................ 89509 ........................................................................ 89510 ........................................................................ 89511 ........................................................................ 89512 ........................................................................ 89513 ........................................................................ 89514 ........................................................................ 89515 ........................................................................ 89516 ........................................................................ 89517 ........................................................................ 89518 ........................................................................ 89519 ........................................................................ 89520 ........................................................................ 89521 ........................................................................ 89522 ........................................................................ 89523 ........................................................................ 89524 ........................................................................ 89525 ........................................................................ 89526 ........................................................................ 89527 ........................................................................ 89528 ........................................................................ 89529 ........................................................................ 89530 ........................................................................ 89531 ........................................................................ 89532 ........................................................................ 89533 ........................................................................ 89534 ........................................................................ 89535 ........................................................................ 89536 ........................................................................ 89537 ........................................................................ 89538 ........................................................................ 89539 ........................................................................ 89540 ........................................................................ 89541 ........................................................................ 89542 ........................................................................ 89543 ........................................................................ 89544 ........................................................................ 89545 ........................................................................ 89546 ........................................................................ 89547 ........................................................................ 89548 ........................................................................ 89549 ........................................................................ 89550 ........................................................................ 89551 ........................................................................ 89552 ........................................................................ 89553 ........................................................................ 89554 ........................................................................ 89555 ........................................................................ 89556 ........................................................................ 89557 ........................................................................ 89558 ........................................................................ 89559 ........................................................................ 89560 ........................................................................ 89561 ........................................................................ 89562 ........................................................................ 89563 ........................................................................ 89564 ........................................................................ 89565 ........................................................................ 89566 ........................................................................ 89567 ........................................................................ 89568 ........................................................................ 89569 ........................................................................ 89570 ........................................................................ 89571 ........................................................................ 89572 ........................................................................ 89573 ........................................................................ 89574 ........................................................................ 89575 ........................................................................ 89576 ........................................................................ 89577 ........................................................................ 89578 ........................................................................ 89579 ........................................................................ 89580 ........................................................................ 89581 ........................................................................ 89582 ........................................................................ 89583 ........................................................................ 89584 ........................................................................ 89585 ........................................................................ 89586 ........................................................................ 89587 ........................................................................ 89588 ........................................................................ 89589 ........................................................................ 89590 ........................................................................ 89591 ........................................................................ 89592 ........................................................................ 89593 ........................................................................ 89594 ........................................................................ 89595 ........................................................................ 89596 ........................................................................ 89597 ........................................................................ 89598 ........................................................................ 89599 ........................................................................ 89600 ........................................................................ 89601 ........................................................................ 89602 ........................................................................ 89603 ........................................................................ 89604 ........................................................................ 89605 ........................................................................ 89606 ........................................................................ 89607 ........................................................................ 89608 ........................................................................ 89609 ........................................................................ 89610 ........................................................................ 89611 ........................................................................ 89612 ........................................................................ 89613 ........................................................................ 89614 ........................................................................ 89615 ........................................................................ 89616 ........................................................................ 89617 ........................................................................ 89618 ........................................................................ 89619 ........................................................................ 89620 ........................................................................ 89621 ........................................................................ 89622 ........................................................................ 89623 ........................................................................ 89624 ........................................................................ 89625 ........................................................................ 89626 ........................................................................ 89627 ........................................................................ 89628 ........................................................................ 89629 ........................................................................ 89630 ........................................................................ 89631 ........................................................................ 89632 ........................................................................ 89633 ........................................................................ 89634 ........................................................................ 89635 ........................................................................ 89636 ........................................................................ 89637 ........................................................................ 89638 ........................................................................ 89639 ........................................................................ 89640 ........................................................................ 89641 ........................................................................ 89642 ........................................................................ 89643 ........................................................................ 89644 ........................................................................ 89645 ........................................................................ 89646 ........................................................................ 89647 ........................................................................ 89648 ........................................................................ 89649 ........................................................................ 89650 ........................................................................ 89651 ........................................................................ 89652 ........................................................................ 89653 ........................................................................ 89654 ........................................................................ 89655 ........................................................................ 89656 ........................................................................ 89657 ........................................................................ 89658 ........................................................................ 89659 ........................................................................ 89660 ........................................................................ 89661 ........................................................................ 89662 ........................................................................ 89663 ........................................................................ 89664 ........................................................................ 89665 ........................................................................ 89666 ........................................................................ 89667 ........................................................................ 89668 ........................................................................ 89669 ........................................................................ 89670 ........................................................................ 89671 ........................................................................ 89672 ........................................................................ 89673 ........................................................................ 89674 ........................................................................ 89675 ........................................................................ 89676 ........................................................................ 89677 ........................................................................ 89678 ........................................................................ 89679 ........................................................................ 89680 ........................................................................ 89681 ........................................................................ 89682 ........................................................................ 89683 ........................................................................ 89684 ........................................................................ 89685 ........................................................................ 89686 ........................................................................ 89687 ........................................................................ 89688 ........................................................................ 89689 ........................................................................ 89690 ........................................................................ 89691 ........................................................................ 89692 ........................................................................ 89693 ........................................................................ 89694 ........................................................................ 89695 ........................................................................ 89696 ........................................................................ 89697 ........................................................................ 89698 ........................................................................ 89699 ........................................................................ 89700 ........................................................................ 89701 ........................................................................ 89702 ........................................................................ 89703 ........................................................................ 89704 ........................................................................ 89705 ........................................................................ 89706 ........................................................................ 89707 ........................................................................ 89708 ........................................................................ 89709 ........................................................................ 89710 ........................................................................ 89711 ........................................................................ 89712 ........................................................................ 89713 ........................................................................ 89714 ........................................................................ 89715 ........................................................................ 89716 ........................................................................ 89717 ........................................................................ 89718 ........................................................................ 89719 ........................................................................ 89720 ........................................................................ 89721 ........................................................................ 89722 ........................................................................ 89723 ........................................................................ 89724 ........................................................................ 89725 ........................................................................ 89726 ........................................................................ 89727 ........................................................................ 89728 ........................................................................ 89729 ........................................................................ 89730 ........................................................................ 89731 ........................................................................ 89732 ........................................................................ 89733 ........................................................................ 89734 ........................................................................ 89735 ........................................................................ 89736 ........................................................................ 89737 ........................................................................ 89738 ........................................................................ 89739 ........................................................................ 89740 ........................................................................ 89741 ........................................................................ 89742 ........................................................................ 89743 ........................................................................ 89744 ........................................................................ 89745 ........................................................................ 89746 ........................................................................ 89747 ........................................................................ 89748 ........................................................................ 89749 ........................................................................ 89750 ........................................................................ 89751 ........................................................................ 89752 ........................................................................ 89753 ........................................................................ 89754 ........................................................................ 89755 ........................................................................ 89756 ........................................................................ 89757 ........................................................................ 89758 ........................................................................ 89759 ........................................................................ 89760 ........................................................................ 89761 ........................................................................ 89762 ........................................................................ 89763 ........................................................................ 89764 ........................................................................ 89765 ........................................................................ 89766 ........................................................................ 89767 ........................................................................ 89768 ........................................................................ 89769 ........................................................................ 89770 ........................................................................ 89771 ........................................................................ 89772 ........................................................................ 89773 ........................................................................ 89774 ........................................................................ 89775 ........................................................................ 89776 ........................................................................ 89777 ........................................................................ 89778 ........................................................................ 89779 ........................................................................ 89780 ........................................................................ 89781 ........................................................................ 89782 ........................................................................ 89783 ........................................................................ 89784 ........................................................................ 89785 ........................................................................ 89786 ........................................................................ 89787 ........................................................................ 89788 ........................................................................ 89789 ........................................................................ 89790 ........................................................................ 89791 ........................................................................ 89792 ........................................................................ 89793 ........................................................................ 89794 ........................................................................ 89795 ........................................................................ 89796 ........................................................................ 89797 ........................................................................ 89798 ........................................................................ 89799 ........................................................................ 89800 ........................................................................ 89801 ........................................................................ 89802 ........................................................................ 89803 ........................................................................ 89804 ........................................................................ 89805 ........................................................................ 89806 ........................................................................ 89807 ........................................................................ 89808 ........................................................................ 89809 ........................................................................ 89810 ........................................................................ 89811 ........................................................................ 89812 ........................................................................ 89813 ........................................................................ 89814 ........................................................................ 89815 ........................................................................ 89816 ........................................................................ 89817 ........................................................................ 89818 ........................................................................ 89819 ........................................................................ 89820 ........................................................................ 89821 ........................................................................ 89822 ........................................................................ 89823 ........................................................................ 89824 ........................................................................ 89825 ........................................................................ 89826 ........................................................................ 89827 ........................................................................ 89828 ........................................................................ 89829 ........................................................................ 89830 ........................................................................ 89831 ........................................................................ 89832 ........................................................................ 89833 ........................................................................ 89834 ........................................................................ 89835 ........................................................................ 89836 ........................................................................ 89837 ........................................................................ 89838 ........................................................................ 89839 ........................................................................ 89840 ........................................................................ 89841 ........................................................................ 89842 ........................................................................ 89843 ........................................................................ 89844 ........................................................................ 89845 ........................................................................ 89846 ........................................................................ 89847 ........................................................................ 89848 ........................................................................ 89849 ........................................................................ 89850 ........................................................................ 89851 ........................................................................ 89852 ........................................................................ 89853 ........................................................................ 89854 ........................................................................ 89855 ........................................................................ 89856 ........................................................................ 89857 ........................................................................ 89858 ........................................................................ 89859 ........................................................................ 89860 ........................................................................ 89861 ........................................................................ 89862 ........................................................................ 89863 ........................................................................ 89864 ........................................................................ 89865 ........................................................................ 89866 ........................................................................ 89867 ........................................................................ 89868 ........................................................................ 89869 ........................................................................ 89870 ........................................................................ 89871 ........................................................................ 89872 ........................................................................ 89873 ........................................................................ 89874 ........................................................................ 89875 ........................................................................ 89876 ........................................................................ 89877 ........................................................................ 89878 ........................................................................ 89879 ........................................................................ 89880 ........................................................................ 89881 ........................................................................ 89882 ........................................................................ 89883 ........................................................................ 89884 ........................................................................ 89885 ........................................................................ 89886 ........................................................................ 89887 ........................................................................ 89888 ........................................................................ 89889 ........................................................................ 89890 ........................................................................ 89891 ........................................................................ 89892 ........................................................................ 89893 ........................................................................ 89894 ........................................................................ 89895 ........................................................................ 89896 ........................................................................ 89897 ........................................................................ 89898 ........................................................................ 89899 ........................................................................ 89900 ........................................................................ 89901 ........................................................................ 89902 ........................................................................ 89903 ........................................................................ 89904 ........................................................................ 89905 ........................................................................ 89906 ........................................................................ 89907 ........................................................................ 89908 ........................................................................ 89909 ........................................................................ 89910 ........................................................................ 89911 ........................................................................ 89912 ........................................................................ 89913 ........................................................................ 89914 ........................................................................ 89915 ........................................................................ 89916 ........................................................................ 89917 ........................................................................ 89918 ........................................................................ 89919 ........................................................................ 89920 ........................................................................ 89921 ........................................................................ 89922 ........................................................................ 89923 ........................................................................ 89924 ........................................................................ 89925 ........................................................................ 89926 ........................................................................ 89927 ........................................................................ 89928 ........................................................................ 89929 ........................................................................ 89930 ........................................................................ 89931 ........................................................................ 89932 ........................................................................ 89933 ........................................................................ 89934 ........................................................................ 89935 ........................................................................ 89936 ........................................................................ 89937 ........................................................................ 89938 ........................................................................ 89939 ........................................................................ 89940 ........................................................................ 89941 ........................................................................ 89942 ........................................................................ 89943 ........................................................................ 89944 ........................................................................ 89945 ........................................................................ 89946 ........................................................................ 89947 ........................................................................ 89948 ........................................................................ 89949 ........................................................................ 89950 ........................................................................ 89951 ........................................................................ 89952 ........................................................................ 89953 ........................................................................ 89954 ........................................................................ 89955 ........................................................................ 89956 ........................................................................ 89957 ........................................................................ 89958 ........................................................................ 89959 ........................................................................ 89960 ........................................................................ 89961 ........................................................................ 89962 ........................................................................ 89963 ........................................................................ 89964 ........................................................................ 89965 ........................................................................ 89966 ........................................................................ 89967 ........................................................................ 89968 ........................................................................ 89969 ........................................................................ 89970 ........................................................................ 89971 ........................................................................ 89972 ........................................................................ 89973 ........................................................................ 89974 ........................................................................ 89975 ........................................................................ 89976 ........................................................................ 89977 ........................................................................ 89978 ........................................................................ 89979 ........................................................................ 89980 ........................................................................ 89981 ........................................................................ 89982 ........................................................................ 89983 ........................................................................ 89984 ........................................................................ 89985 ........................................................................ 89986 ........................................................................ 89987 ........................................................................ 89988 ........................................................................ 89989 ........................................................................ 89990 ........................................................................ 89991 ........................................................................ 89992 ........................................................................ 89993 ........................................................................ 89994 ........................................................................ 89995 ........................................................................ 89996 ........................................................................ 89997 ........................................................................ 89998 ........................................................................ 89999 ........................................................................ 90000 ........................................................................ 90001 ........................................................................ 90002 ........................................................................ 90003 ........................................................................ 90004 ........................................................................ 90005 ........................................................................ 90006 ........................................................................ 90007 ........................................................................ 90008 ........................................................................ 90009 ........................................................................ 90010 ........................................................................ 90011 ........................................................................ 90012 ........................................................................ 90013 ........................................................................ 90014 ........................................................................ 90015 ........................................................................ 90016 ........................................................................ 90017 ........................................................................ 90018 ........................................................................ 90019 ........................................................................ 90020 ........................................................................ 90021 ........................................................................ 90022 ........................................................................ 90023 ........................................................................ 90024 ........................................................................ 90025 ........................................................................ 90026 ........................................................................ 90027 ........................................................................ 90028 ........................................................................ 90029 ........................................................................ 90030 ........................................................................ 90031 ........................................................................ 90032 ........................................................................ 90033 ........................................................................ 90034 ........................................................................ 90035 ........................................................................ 90036 ........................................................................ 90037 ........................................................................ 90038 ........................................................................ 90039 ........................................................................ 90040 ........................................................................ 90041 ........................................................................ 90042 ........................................................................ 90043 ........................................................................ 90044 ........................................................................ 90045 ........................................................................ 90046 ........................................................................ 90047 ........................................................................ 90048 ........................................................................ 90049 ........................................................................ 90050 ........................................................................ 90051 ........................................................................ 90052 ........................................................................ 90053 ........................................................................ 90054 ........................................................................ 90055 ........................................................................ 90056 ........................................................................ 90057 ........................................................................ 90058 ........................................................................ 90059 ........................................................................ 90060 ........................................................................ 90061 ........................................................................ 90062 ........................................................................ 90063 ........................................................................ 90064 ........................................................................ 90065 ........................................................................ 90066 ........................................................................ 90067 ........................................................................ 90068 ........................................................................ 90069 ........................................................................ 90070 ........................................................................ 90071 ........................................................................ 90072 ........................................................................ 90073 ........................................................................ 90074 ........................................................................ 90075 ........................................................................ 90076 ........................................................................ 90077 ........................................................................ 90078 ........................................................................ 90079 ........................................................................ 90080 ........................................................................ 90081 ........................................................................ 90082 ........................................................................ 90083 ........................................................................ 90084 ........................................................................ 90085 ........................................................................ 90086 ........................................................................ 90087 ........................................................................ 90088 ........................................................................ 90089 ........................................................................ 90090 ........................................................................ 90091 ........................................................................ 90092 ........................................................................ 90093 ........................................................................ 90094 ........................................................................ 90095 ........................................................................ 90096 ........................................................................ 90097 ........................................................................ 90098 ........................................................................ 90099 ........................................................................ 90100 ........................................................................ 90101 ........................................................................ 90102 ........................................................................ 90103 ........................................................................ 90104 ........................................................................ 90105 ........................................................................ 90106 ........................................................................ 90107 ........................................................................ 90108 ........................................................................ 90109 ........................................................................ 90110 ........................................................................ 90111 ........................................................................ 90112 ........................................................................ 90113 ........................................................................ 90114 ........................................................................ 90115 ........................................................................ 90116 ........................................................................ 90117 ........................................................................ 90118 ........................................................................ 90119 ........................................................................ 90120 ........................................................................ 90121 ........................................................................ 90122 ........................................................................ 90123 ........................................................................ 90124 ........................................................................ 90125 ........................................................................ 90126 ........................................................................ 90127 ........................................................................ 90128 ........................................................................ 90129 ........................................................................ 90130 ........................................................................ 90131 ........................................................................ 90132 ........................................................................ 90133 ........................................................................ 90134 ........................................................................ 90135 ........................................................................ 90136 ........................................................................ 90137 ........................................................................ 90138 ........................................................................ 90139 ........................................................................ 90140 ........................................................................ 90141 ........................................................................ 90142 ........................................................................ 90143 ........................................................................ 90144 ........................................................................ 90145 ........................................................................ 90146 ........................................................................ 90147 ........................................................................ 90148 ........................................................................ 90149 ........................................................................ 90150 ........................................................................ 90151 ........................................................................ 90152 ........................................................................ 90153 ........................................................................ 90154 ........................................................................ 90155 ........................................................................ 90156 ........................................................................ 90157 ........................................................................ 90158 ........................................................................ 90159 ........................................................................ 90160 ........................................................................ 90161 ........................................................................ 90162 ........................................................................ 90163 ........................................................................ 90164 ........................................................................ 90165 ........................................................................ 90166 ........................................................................ 90167 ........................................................................ 90168 ........................................................................ 90169 ........................................................................ 90170 ........................................................................ 90171 ........................................................................ 90172 ........................................................................ 90173 ........................................................................ 90174 ........................................................................ 90175 ........................................................................ 90176 ........................................................................ 90177 ........................................................................ 90178 ........................................................................ 90179 ........................................................................ 90180 ........................................................................ 90181 ........................................................................ 90182 ........................................................................ 90183 ........................................................................ 90184 ........................................................................ 90185 ........................................................................ 90186 ........................................................................ 90187 ........................................................................ 90188 ........................................................................ 90189 ........................................................................ 90190 ........................................................................ 90191 ........................................................................ 90192 ........................................................................ 90193 ........................................................................ 90194 ........................................................................ 90195 ........................................................................ 90196 ........................................................................ 90197 ........................................................................ 90198 ........................................................................ 90199 ........................................................................ 90200 ........................................................................ 90201 ........................................................................ 90202 ........................................................................ 90203 ........................................................................ 90204 ........................................................................ 90205 ........................................................................ 90206 ........................................................................ 90207 ........................................................................ 90208 ........................................................................ 90209 ........................................................................ 90210 ........................................................................ 90211 ........................................................................ 90212 ........................................................................ 90213 ........................................................................ 90214 ........................................................................ 90215 ........................................................................ 90216 ........................................................................ 90217 ........................................................................ 90218 ........................................................................ 90219 ........................................................................ 90220 ........................................................................ 90221 ........................................................................ 90222 ........................................................................ 90223 ........................................................................ 90224 ........................................................................ 90225 ........................................................................ 90226 ........................................................................ 90227 ........................................................................ 90228 ........................................................................ 90229 ........................................................................ 90230 ........................................................................ 90231 ........................................................................ 90232 ........................................................................ 90233 ........................................................................ 90234 ........................................................................ 90235 ........................................................................ 90236 ........................................................................ 90237 ........................................................................ 90238 ........................................................................ 90239 ........................................................................ 90240 ........................................................................ 90241 ........................................................................ 90242 ........................................................................ 90243 ........................................................................ 90244 ........................................................................ 90245 ........................................................................ 90246 ........................................................................ 90247 ........................................................................ 90248 ........................................................................ 90249 ........................................................................ 90250 ........................................................................ 90251 ........................................................................ 90252 ........................................................................ 90253 ........................................................................ 90254 ........................................................................ 90255 ........................................................................ 90256 ........................................................................ 90257 ........................................................................ 90258 ........................................................................ 90259 ........................................................................ 90260 ........................................................................ 90261 ........................................................................ 90262 ........................................................................ 90263 ........................................................................ 90264 ........................................................................ 90265 ........................................................................ 90266 ........................................................................ 90267 ........................................................................ 90268 ........................................................................ 90269 ........................................................................ 90270 ........................................................................ 90271 ........................................................................ 90272 ........................................................................ 90273 ........................................................................ 90274 ........................................................................ 90275 ........................................................................ 90276 ........................................................................ 90277 ........................................................................ 90278 ........................................................................ 90279 ........................................................................ 90280 ........................................................................ 90281 ........................................................................ 90282 ........................................................................ 90283 ........................................................................ 90284 ........................................................................ 90285 ........................................................................ 90286 ........................................................................ 90287 ........................................................................ 90288 ........................................................................ 90289 ........................................................................ 90290 ........................................................................ 90291 ........................................................................ 90292 ........................................................................ 90293 ........................................................................ 90294 ........................................................................ 90295 ........................................................................ 90296 ........................................................................ 90297 ........................................................................ 90298 ........................................................................ 90299 ........................................................................ 90300 ........................................................................ 90301 ........................................................................ 90302 ........................................................................ 90303 ........................................................................ 90304 ........................................................................ 90305 ........................................................................ 90306 ........................................................................ 90307 ........................................................................ 90308 ........................................................................ 90309 ........................................................................ 90310 ........................................................................ 90311 ........................................................................ 90312 ........................................................................ 90313 ........................................................................ 90314 ........................................................................ 90315 ........................................................................ 90316 ........................................................................ 90317 ........................................................................ 90318 ........................................................................ 90319 ........................................................................ 90320 ........................................................................ 90321 ........................................................................ 90322 ........................................................................ 90323 ........................................................................ 90324 ........................................................................ 90325 ........................................................................ 90326 ........................................................................ 90327 ........................................................................ 90328 ........................................................................ 90329 ........................................................................ 90330 ........................................................................ 90331 ........................................................................ 90332 ........................................................................ 90333 ........................................................................ 90334 ........................................................................ 90335 ........................................................................ 90336 ........................................................................ 90337 ........................................................................ 90338 ........................................................................ 90339 ........................................................................ 90340 ........................................................................ 90341 ........................................................................ 90342 ........................................................................ 90343 ........................................................................ 90344 ........................................................................ 90345 ........................................................................ 90346 ........................................................................ 90347 ........................................................................ 90348 ........................................................................ 90349 ........................................................................ 90350 ........................................................................ 90351 ........................................................................ 90352 ........................................................................ 90353 ........................................................................ 90354 ........................................................................ 90355 ........................................................................ 90356 ........................................................................ 90357 ........................................................................ 90358 ........................................................................ 90359 ........................................................................ 90360 ........................................................................ 90361 ........................................................................ 90362 ........................................................................ 90363 ........................................................................ 90364 ........................................................................ 90365 ........................................................................ 90366 ........................................................................ 90367 ........................................................................ 90368 ........................................................................ 90369 ........................................................................ 90370 ........................................................................ 90371 ........................................................................ 90372 ........................................................................ 90373 ........................................................................ 90374 ........................................................................ 90375 ........................................................................ 90376 ........................................................................ 90377 ........................................................................ 90378 ........................................................................ 90379 ........................................................................ 90380 ........................................................................ 90381 ........................................................................ 90382 ........................................................................ 90383 ........................................................................ 90384 ........................................................................ 90385 ........................................................................ 90386 ........................................................................ 90387 ........................................................................ 90388 ........................................................................ 90389 ........................................................................ 90390 ........................................................................ 90391 ........................................................................ 90392 ........................................................................ 90393 ........................................................................ 90394 ........................................................................ 90395 ........................................................................ 90396 ........................................................................ 90397 ........................................................................ 90398 ........................................................................ 90399 ........................................................................ 90400 ........................................................................ 90401 ........................................................................ 90402 ........................................................................ 90403 ........................................................................ 90404 ........................................................................ 90405 ........................................................................ 90406 ........................................................................ 90407 ........................................................................ 90408 ........................................................................ 90409 ........................................................................ 90410 ........................................................................ 90411 ........................................................................ 90412 ........................................................................ 90413 ........................................................................ 90414 ........................................................................ 90415 ........................................................................ 90416 ........................................................................ 90417 ........................................................................ 90418 ........................................................................ 90419 ........................................................................ 90420 ........................................................................ 90421 ........................................................................ 90422 ........................................................................ 90423 ........................................................................ 90424 ........................................................................ 90425 ........................................................................ 90426 ........................................................................ 90427 ........................................................................ 90428 ........................................................................ 90429 ........................................................................ 90430 ........................................................................ 90431 ........................................................................ 90432 ........................................................................ 90433 ........................................................................ 90434 ........................................................................ 90435 ........................................................................ 90436 ........................................................................ 90437 ........................................................................ 90438 ........................................................................ 90439 ........................................................................ 90440 ........................................................................ 90441 ........................................................................ 90442 ........................................................................ 90443 ........................................................................ 90444 ........................................................................ 90445 ........................................................................ 90446 ........................................................................ 90447 ........................................................................ 90448 ........................................................................ 90449 ........................................................................ 90450 ........................................................................ 90451 ........................................................................ 90452 ........................................................................ 90453 ........................................................................ 90454 ........................................................................ 90455 ........................................................................ 90456 ........................................................................ 90457 ........................................................................ 90458 ........................................................................ 90459 ........................................................................ 90460 ........................................................................ 90461 ........................................................................ 90462 ........................................................................ 90463 ........................................................................ 90464 ........................................................................ 90465 ........................................................................ 90466 ........................................................................ 90467 ........................................................................ 90468 ........................................................................ 90469 ........................................................................ 90470 ........................................................................ 90471 ........................................................................ 90472 ........................................................................ 90473 ........................................................................ 90474 ........................................................................ 90475 ........................................................................ 90476 ........................................................................ 90477 ........................................................................ 90478 ........................................................................ 90479 ........................................................................ 90480 ........................................................................ 90481 ........................................................................ 90482 ........................................................................ 90483 ........................................................................ 90484 ........................................................................ 90485 ........................................................................ 90486 ........................................................................ 90487 ........................................................................ 90488 ........................................................................ 90489 ........................................................................ 90490 ........................................................................ 90491 ........................................................................ 90492 ........................................................................ 90493 ........................................................................ 90494 ........................................................................ 90495 ........................................................................ 90496 ........................................................................ 90497 ........................................................................ 90498 ........................................................................ 90499 ........................................................................ 90500 ........................................................................ 90501 ........................................................................ 90502 ........................................................................ 90503 ........................................................................ 90504 ........................................................................ 90505 ........................................................................ 90506 ........................................................................ 90507 ........................................................................ 90508 ........................................................................ 90509 ........................................................................ 90510 ........................................................................ 90511 ........................................................................ 90512 ........................................................................ 90513 ........................................................................ 90514 ........................................................................ 90515 ........................................................................ 90516 ........................................................................ 90517 ........................................................................ 90518 ........................................................................ 90519 ........................................................................ 90520 ........................................................................ 90521 ........................................................................ 90522 ........................................................................ 90523 ........................................................................ 90524 ........................................................................ 90525 ........................................................................ 90526 ........................................................................ 90527 ........................................................................ 90528 ........................................................................ 90529 ........................................................................ 90530 ........................................................................ 90531 ........................................................................ 90532 ........................................................................ 90533 ........................................................................ 90534 ........................................................................ 90535 ........................................................................ 90536 ........................................................................ 90537 ........................................................................ 90538 ........................................................................ 90539 ........................................................................ 90540 ........................................................................ 90541 ........................................................................ 90542 ........................................................................ 90543 ........................................................................ 90544 ........................................................................ 90545 ........................................................................ 90546 ........................................................................ 90547 ........................................................................ 90548 ........................................................................ 90549 ........................................................................ 90550 ........................................................................ 90551 ........................................................................ 90552 ........................................................................ 90553 ........................................................................ 90554 ........................................................................ 90555 ........................................................................ 90556 ........................................................................ 90557 ........................................................................ 90558 ........................................................................ 90559 ........................................................................ 90560 ........................................................................ 90561 ........................................................................ 90562 ........................................................................ 90563 ........................................................................ 90564 ........................................................................ 90565 ........................................................................ 90566 ........................................................................ 90567 ........................................................................ 90568 ........................................................................ 90569 ........................................................................ 90570 ........................................................................ 90571 ........................................................................ 90572 ........................................................................ 90573 ........................................................................ 90574 ........................................................................ 90575 ........................................................................ 90576 ........................................................................ 90577 ........................................................................ 90578 ........................................................................ 90579 ........................................................................ 90580 ........................................................................ 90581 ........................................................................ 90582 ........................................................................ 90583 ........................................................................ 90584 ........................................................................ 90585 ........................................................................ 90586 ........................................................................ 90587 ........................................................................ 90588 ........................................................................ 90589 ........................................................................ 90590 ........................................................................ 90591 ........................................................................ 90592 ........................................................................ 90593 ........................................................................ 90594 ........................................................................ 90595 ........................................................................ 90596 ........................................................................ 90597 ........................................................................ 90598 ........................................................................ 90599 ........................................................................ 90600 ........................................................................ 90601 ........................................................................ 90602 ........................................................................ 90603 ........................................................................ 90604 ........................................................................ 90605 ........................................................................ 90606 ........................................................................ 90607 ........................................................................ 90608 ........................................................................ 90609 ........................................................................ 90610 ........................................................................ 90611 ........................................................................ 90612 ........................................................................ 90613 ........................................................................ 90614 ........................................................................ 90615 ........................................................................ 90616 ........................................................................ 90617 ........................................................................ 90618 ........................................................................ 90619 ........................................................................ 90620 ........................................................................ 90621 ........................................................................ 90622 ........................................................................ 90623 ........................................................................ 90624 ........................................................................ 90625 ........................................................................ 90626 ........................................................................ 90627 ........................................................................ 90628 ........................................................................ 90629 ........................................................................ 90630 ........................................................................ 90631 ........................................................................ 90632 ........................................................................ 90633 ........................................................................ 90634 ........................................................................ 90635 ........................................................................ 90636 ........................................................................ 90637 ........................................................................ 90638 ........................................................................ 90639 ........................................................................ 90640 ........................................................................ 90641 ........................................................................ 90642 ........................................................................ 90643 ........................................................................ 90644 ........................................................................ 90645 ........................................................................ 90646 ........................................................................ 90647 ........................................................................ 90648 ........................................................................ 90649 ........................................................................ 90650 ........................................................................ 90651 ........................................................................ 90652 ........................................................................ 90653 ........................................................................ 90654 ........................................................................ 90655 ........................................................................ 90656 ........................................................................ 90657 ........................................................................ 90658 ........................................................................ 90659 ........................................................................ 90660 ........................................................................ 90661 ........................................................................ 90662 ........................................................................ 90663 ........................................................................ 90664 ........................................................................ 90665 ........................................................................ 90666 ........................................................................ 90667 ........................................................................ 90668 ........................................................................ 90669 ........................................................................ 90670 ........................................................................ 90671 ........................................................................ 90672 ........................................................................ 90673 ........................................................................ 90674 ........................................................................ 90675 ........................................................................ 90676 ........................................................................ 90677 ........................................................................ 90678 ........................................................................ 90679 ........................................................................ 90680 ........................................................................ 90681 ........................................................................ 90682 ........................................................................ 90683 ........................................................................ 90684 ........................................................................ 90685 ........................................................................ 90686 ........................................................................ 90687 ........................................................................ 90688 ........................................................................ 90689 ........................................................................ 90690 ........................................................................ 90691 ........................................................................ 90692 ........................................................................ 90693 ........................................................................ 90694 ........................................................................ 90695 ........................................................................ 90696 ........................................................................ 90697 ........................................................................ 90698 ........................................................................ 90699 ........................................................................ 90700 ........................................................................ 90701 ........................................................................ 90702 ........................................................................ 90703 ........................................................................ 90704 ........................................................................ 90705 ........................................................................ 90706 ........................................................................ 90707 ........................................................................ 90708 ........................................................................ 90709 ........................................................................ 90710 ........................................................................ 90711 ........................................................................ 90712 ........................................................................ 90713 ........................................................................ 90714 ........................................................................ 90715 ........................................................................ 90716 ........................................................................ 90717 ........................................................................ 90718 ........................................................................ 90719 ........................................................................ 90720 ........................................................................ 90721 ........................................................................ 90722 ........................................................................ 90723 ........................................................................ 90724 ........................................................................ 90725 ........................................................................ 90726 ........................................................................ 90727 ........................................................................ 90728 ........................................................................ 90729 ........................................................................ 90730 ........................................................................ 90731 ........................................................................ 90732 ........................................................................ 90733 ........................................................................ 90734 ........................................................................ 90735 ........................................................................ 90736 ........................................................................ 90737 ........................................................................ 90738 ........................................................................ 90739 ........................................................................ 90740 ........................................................................ 90741 ........................................................................ 90742 ........................................................................ 90743 ........................................................................ 90744 ........................................................................ 90745 ........................................................................ 90746 ........................................................................ 90747 ........................................................................ 90748 ........................................................................ 90749 ........................................................................ 90750 ........................................................................ 90751 ........................................................................ 90752 ........................................................................ 90753 ........................................................................ 90754 ........................................................................ 90755 ........................................................................ 90756 ........................................................................ 90757 ........................................................................ 90758 ........................................................................ 90759 ........................................................................ 90760 ........................................................................ 90761 ........................................................................ 90762 ........................................................................ 90763 ........................................................................ 90764 ........................................................................ 90765 ........................................................................ 90766 ........................................................................ 90767 ........................................................................ 90768 ........................................................................ 90769 ........................................................................ 90770 ........................................................................ 90771 ........................................................................ 90772 ........................................................................ 90773 ........................................................................ 90774 ........................................................................ 90775 ........................................................................ 90776 ........................................................................ 90777 ........................................................................ 90778 ........................................................................ 90779 ........................................................................ 90780 ........................................................................ 90781 ........................................................................ 90782 ........................................................................ 90783 ........................................................................ 90784 ........................................................................ 90785 ........................................................................ 90786 ........................................................................ 90787 ........................................................................ 90788 ........................................................................ 90789 ........................................................................ 90790 ........................................................................ 90791 ........................................................................ 90792 ........................................................................ 90793 ........................................................................ 90794 ........................................................................ 90795 ........................................................................ 90796 ........................................................................ 90797 ........................................................................ 90798 ........................................................................ 90799 ........................................................................ 90800 ........................................................................ 90801 ........................................................................ 90802 ........................................................................ 90803 ........................................................................ 90804 ........................................................................ 90805 ........................................................................ 90806 ........................................................................ 90807 ........................................................................ 90808 ........................................................................ 90809 ........................................................................ 90810 ........................................................................ 90811 ........................................................................ 90812 ........................................................................ 90813 ........................................................................ 90814 ........................................................................ 90815 ........................................................................ 90816 ........................................................................ 90817 ........................................................................ 90818 ........................................................................ 90819 ........................................................................ 90820 ........................................................................ 90821 ........................................................................ 90822 ........................................................................ 90823 ........................................................................ 90824 ........................................................................ 90825 ........................................................................ 90826 ........................................................................ 90827 ........................................................................ 90828 ........................................................................ 90829 ........................................................................ 90830 ........................................................................ 90831 ........................................................................ 90832 ........................................................................ 90833 ........................................................................ 90834 ........................................................................ 90835 ........................................................................ 90836 ........................................................................ 90837 ........................................................................ 90838 ........................................................................ 90839 ........................................................................ 90840 ........................................................................ 90841 ........................................................................ 90842 ........................................................................ 90843 ........................................................................ 90844 ........................................................................ 90845 ........................................................................ 90846 ........................................................................ 90847 ........................................................................ 90848 ........................................................................ 90849 ........................................................................ 90850 ........................................................................ 90851 ........................................................................ 90852 ........................................................................ 90853 ........................................................................ 90854 ........................................................................ 90855 ........................................................................ 90856 ........................................................................ 90857 ........................................................................ 90858 ........................................................................ 90859 ........................................................................ 90860 ........................................................................ 90861 ........................................................................ 90862 ........................................................................ 90863 ........................................................................ 90864 ........................................................................ 90865 ........................................................................ 90866 ........................................................................ 90867 ........................................................................ 90868 ........................................................................ 90869 ........................................................................ 90870 ........................................................................ 90871 ........................................................................ 90872 ........................................................................ 90873 ........................................................................ 90874 ........................................................................ 90875 ........................................................................ 90876 ........................................................................ 90877 ........................................................................ 90878 ........................................................................ 90879 ........................................................................ 90880 ........................................................................ 90881 ........................................................................ 90882 ........................................................................ 90883 ........................................................................ 90884 ........................................................................ 90885 ........................................................................ 90886 ........................................................................ 90887 ........................................................................ 90888 ........................................................................ 90889 ........................................................................ 90890 ........................................................................ 90891 ........................................................................ 90892 ........................................................................ 90893 ........................................................................ 90894 ........................................................................ 90895 ........................................................................ 90896 ........................................................................ 90897 ........................................................................ 90898 ........................................................................ 90899 ........................................................................ 90900 ........................................................................ 90901 ........................................................................ 90902 ........................................................................ 90903 ........................................................................ 90904 ........................................................................ 90905 ........................................................................ 90906 ........................................................................ 90907 ........................................................................ 90908 ........................................................................ 90909 ........................................................................ 90910 ........................................................................ 90911 ........................................................................ 90912 ........................................................................ 90913 ........................................................................ 90914 ........................................................................ 90915 ........................................................................ 90916 ........................................................................ 90917 ........................................................................ 90918 ........................................................................ 90919 ........................................................................ 90920 ........................................................................ 90921 ........................................................................ 90922 ........................................................................ 90923 ........................................................................ 90924 ........................................................................ 90925 ........................................................................ 90926 ........................................................................ 90927 ........................................................................ 90928 ........................................................................ 90929 ........................................................................ 90930 ........................................................................ 90931 ........................................................................ 90932 ........................................................................ 90933 ........................................................................ 90934 ........................................................................ 90935 ........................................................................ 90936 ........................................................................ 90937 ........................................................................ 90938 ........................................................................ 90939 ........................................................................ 90940 ........................................................................ 90941 ........................................................................ 90942 ........................................................................ 90943 ........................................................................ 90944 ........................................................................ 90945 ........................................................................ 90946 ........................................................................ 90947 ........................................................................ 90948 ........................................................................ 90949 ........................................................................ 90950 ........................................................................ 90951 ........................................................................ 90952 ........................................................................ 90953 ........................................................................ 90954 ........................................................................ 90955 ........................................................................ 90956 ........................................................................ 90957 ........................................................................ 90958 ........................................................................ 90959 ........................................................................ 90960 ........................................................................ 90961 ........................................................................ 90962 ........................................................................ 90963 ........................................................................ 90964 ........................................................................ 90965 ........................................................................ 90966 ........................................................................ 90967 ........................................................................ 90968 ........................................................................ 90969 ........................................................................ 90970 ........................................................................ 90971 ........................................................................ 90972 ........................................................................ 90973 ........................................................................ 90974 ........................................................................ 90975 ........................................................................ 90976 ........................................................................ 90977 ........................................................................ 90978 ........................................................................ 90979 ........................................................................ 90980 ........................................................................ 90981 ........................................................................ 90982 ........................................................................ 90983 ........................................................................ 90984 ........................................................................ 90985 ........................................................................ 90986 ........................................................................ 90987 ........................................................................ 90988 ........................................................................ 90989 ........................................................................ 90990 ........................................................................ 90991 ........................................................................ 90992 ........................................................................ 90993 ........................................................................ 90994 ........................................................................ 90995 ........................................................................ 90996 ........................................................................ 90997 ........................................................................ 90998 ........................................................................ 90999 ........................................................................ 91000 ........................................................................ 91001 ........................................................................ 91002 ........................................................................ 91003 ........................................................................ 91004 ........................................................................ 91005 ........................................................................ 91006 ........................................................................ 91007 ........................................................................ 91008 ........................................................................ 91009 ........................................................................ 91010 ........................................................................ 91011 ........................................................................ 91012 ........................................................................ 91013 ........................................................................ 91014 ........................................................................ 91015 ........................................................................ 91016 ........................................................................ 91017 ........................................................................ 91018 ........................................................................ 91019 ........................................................................ 91020 ........................................................................ 91021 ........................................................................ 91022 ........................................................................ 91023 ........................................................................ 91024 ........................................................................ 91025 ........................................................................ 91026 ........................................................................ 91027 ........................................................................ 91028 ........................................................................ 91029 ........................................................................ 91030 ........................................................................ 91031 ........................................................................ 91032 ........................................................................ 91033 ........................................................................ 91034 ........................................................................ 91035 ........................................................................ 91036 ........................................................................ 91037 ........................................................................ 91038 ........................................................................ 91039 ........................................................................ 91040 ........................................................................ 91041 ........................................................................ 91042 ........................................................................ 91043 ........................................................................ 91044 ........................................................................ 91045 ........................................................................ 91046 ........................................................................ 91047 ........................................................................ 91048 ........................................................................ 91049 ........................................................................ 91050 ........................................................................ 91051 ........................................................................ 91052 ........................................................................ 91053 ........................................................................ 91054 ........................................................................ 91055 ........................................................................ 91056 ........................................................................ 91057 ........................................................................ 91058 ........................................................................ 91059 ........................................................................ 91060 ........................................................................ 91061 ........................................................................ 91062 ........................................................................ 91063 ........................................................................ 91064 ........................................................................ 91065 ........................................................................ 91066 ........................................................................ 91067 ........................................................................ 91068 ........................................................................ 91069 ........................................................................ 91070 ........................................................................ 91071 ........................................................................ 91072 ........................................................................ 91073 ........................................................................ 91074 ........................................................................ 91075 ........................................................................ 91076 ........................................................................ 91077 ........................................................................ 91078 ........................................................................ 91079 ........................................................................ 91080 ........................................................................ 91081 ........................................................................ 91082 ........................................................................ 91083 ........................................................................ 91084 ........................................................................ 91085 ........................................................................ 91086 ........................................................................ 91087 ........................................................................ 91088 ........................................................................ 91089 ........................................................................ 91090 ........................................................................ 91091 ........................................................................ 91092 ........................................................................ 91093 ........................................................................ 91094 ........................................................................ 91095 ........................................................................ 91096 ........................................................................ 91097 ........................................................................ 91098 ........................................................................ 91099 ........................................................................ 91100 ........................................................................ 91101 ........................................................................ 91102 ........................................................................ 91103 ........................................................................ 91104 ........................................................................ 91105 ........................................................................ 91106 ........................................................................ 91107 ........................................................................ 91108 ........................................................................ 91109 ........................................................................ 91110 ........................................................................ 91111 ........................................................................ 91112 ........................................................................ 91113 ........................................................................ 91114 ........................................................................ 91115 ........................................................................ 91116 ........................................................................ 91117 ........................................................................ 91118 ........................................................................ 91119 ........................................................................ 91120 ........................................................................ 91121 ........................................................................ 91122 ........................................................................ 91123 ........................................................................ 91124 ........................................................................ 91125 ........................................................................ 91126 ........................................................................ 91127 ........................................................................ 91128 ........................................................................ 91129 ........................................................................ 91130 ........................................................................ 91131 ........................................................................ 91132 ........................................................................ 91133 ........................................................................ 91134 ........................................................................ 91135 ........................................................................ 91136 ........................................................................ 91137 ........................................................................ 91138 ........................................................................ 91139 ........................................................................ 91140 ........................................................................ 91141 ........................................................................ 91142 ........................................................................ 91143 ........................................................................ 91144 ........................................................................ 91145 ........................................................................ 91146 ........................................................................ 91147 ........................................................................ 91148 ........................................................................ 91149 ........................................................................ 91150 ........................................................................ 91151 ........................................................................ 91152 ........................................................................ 91153 ........................................................................ 91154 ........................................................................ 91155 ........................................................................ 91156 ........................................................................ 91157 ........................................................................ 91158 ........................................................................ 91159 ........................................................................ 91160 ........................................................................ 91161 ........................................................................ 91162 ........................................................................ 91163 ........................................................................ 91164 ........................................................................ 91165 ........................................................................ 91166 ........................................................................ 91167 ........................................................................ 91168 ........................................................................ 91169 ........................................................................ 91170 ........................................................................ 91171 ........................................................................ 91172 ........................................................................ 91173 ........................................................................ 91174 ........................................................................ 91175 ........................................................................ 91176 ........................................................................ 91177 ........................................................................ 91178 ........................................................................ 91179 ........................................................................ 91180 ........................................................................ 91181 ........................................................................ 91182 ........................................................................ 91183 ........................................................................ 91184 ........................................................................ 91185 ........................................................................ 91186 ........................................................................ 91187 ........................................................................ 91188 ........................................................................ 91189 ........................................................................ 91190 ........................................................................ 91191 ........................................................................ 91192 ........................................................................ 91193 ........................................................................ 91194 ........................................................................ 91195 ........................................................................ 91196 ........................................................................ 91197 ........................................................................ 91198 ........................................................................ 91199 ........................................................................ 91200 ........................................................................ 91201 ........................................................................ 91202 ........................................................................ 91203 ........................................................................ 91204 ........................................................................ 91205 ........................................................................ 91206 ........................................................................ 91207 ........................................................................ 91208 ........................................................................ 91209 ........................................................................ 91210 ........................................................................ 91211 ........................................................................ 91212 ........................................................................ 91213 ........................................................................ 91214 ........................................................................ 91215 ........................................................................ 91216 ........................................................................ 91217 ........................................................................ 91218 ........................................................................ 91219 ........................................................................ 91220 ........................................................................ 91221 ........................................................................ 91222 ........................................................................ 91223 ........................................................................ 91224 ........................................................................ 91225 ........................................................................ 91226 ........................................................................ 91227 ........................................................................ 91228 ........................................................................ 91229 ........................................................................ 91230 ........................................................................ 91231 ........................................................................ 91232 ........................................................................ 91233 ........................................................................ 91234 ........................................................................ 91235 ........................................................................ 91236 ........................................................................ 91237 ........................................................................ 91238 ........................................................................ 91239 ........................................................................ 91240 ........................................................................ 91241 ........................................................................ 91242 ........................................................................ 91243 ........................................................................ 91244 ........................................................................ 91245 ........................................................................ 91246 ........................................................................ 91247 ........................................................................ 91248 ........................................................................ 91249 ........................................................................ 91250 ........................................................................ 91251 ........................................................................ 91252 ........................................................................ 91253 ........................................................................ 91254 ........................................................................ 91255 ........................................................................ 91256 ........................................................................ 91257 ........................................................................ 91258 ........................................................................ 91259 ........................................................................ 91260 ........................................................................ 91261 ........................................................................ 91262 ........................................................................ 91263 ........................................................................ 91264 ........................................................................ 91265 ........................................................................ 91266 ........................................................................ 91267 ........................................................................ 91268 ........................................................................ 91269 ........................................................................ 91270 ........................................................................ 91271 ........................................................................ 91272 ........................................................................ 91273 ........................................................................ 91274 ........................................................................ 91275 ........................................................................ 91276 ........................................................................ 91277 ........................................................................ 91278 ........................................................................ 91279 ........................................................................ 91280 ........................................................................ 91281 ........................................................................ 91282 ........................................................................ 91283 ........................................................................ 91284 ........................................................................ 91285 ........................................................................ 91286 ........................................................................ 91287 ........................................................................ 91288 ........................................................................ 91289 ........................................................................ 91290 ........................................................................ 91291 ........................................................................ 91292 ........................................................................ 91293 ........................................................................ 91294 ........................................................................ 91295 ........................................................................ 91296 ........................................................................ 91297 ........................................................................ 91298 ........................................................................ 91299 ........................................................................ 91300 ........................................................................ 91301 ........................................................................ 91302 ........................................................................ 91303 ........................................................................ 91304 ........................................................................ 91305 ........................................................................ 91306 ........................................................................ 91307 ........................................................................ 91308 ........................................................................ 91309 ........................................................................ 91310 ........................................................................ 91311 ........................................................................ 91312 ........................................................................ 91313 ........................................................................ 91314 ........................................................................ 91315 ........................................................................ 91316 ........................................................................ 91317 ........................................................................ 91318 ........................................................................ 91319 ........................................................................ 91320 ........................................................................ 91321 ........................................................................ 91322 ........................................................................ 91323 ........................................................................ 91324 ........................................................................ 91325 ........................................................................ 91326 ........................................................................ 91327 ........................................................................ 91328 ........................................................................ 91329 ........................................................................ 91330 ........................................................................ 91331 ........................................................................ 91332 ........................................................................ 91333 ........................................................................ 91334 ........................................................................ 91335 ........................................................................ 91336 ........................................................................ 91337 ........................................................................ 91338 ........................................................................ 91339 ........................................................................ 91340 ........................................................................ 91341 ........................................................................ 91342 ........................................................................ 91343 ........................................................................ 91344 ........................................................................ 91345 ........................................................................ 91346 ........................................................................ 91347 ........................................................................ 91348 ........................................................................ 91349 ........................................................................ 91350 ........................................................................ 91351 ........................................................................ 91352 ........................................................................ 91353 ........................................................................ 91354 ........................................................................ 91355 ........................................................................ 91356 ........................................................................ 91357 ........................................................................ 91358 ........................................................................ 91359 ........................................................................ 91360 ........................................................................ 91361 ........................................................................ 91362 ........................................................................ 91363 ........................................................................ 91364 ........................................................................ 91365 ........................................................................ 91366 ........................................................................ 91367 ........................................................................ 91368 ........................................................................ 91369 ........................................................................ 91370 ........................................................................ 91371 ........................................................................ 91372 ........................................................................ 91373 ........................................................................ 91374 ........................................................................ 91375 ........................................................................ 91376 ........................................................................ 91377 ........................................................................ 91378 ........................................................................ 91379 ........................................................................ 91380 ........................................................................ 91381 ........................................................................ 91382 ........................................................................ 91383 ........................................................................ 91384 ........................................................................ 91385 ........................................................................ 91386 ........................................................................ 91387 ........................................................................ 91388 ........................................................................ 91389 ........................................................................ 91390 ........................................................................ 91391 ........................................................................ 91392 ........................................................................ 91393 ........................................................................ 91394 ........................................................................ 91395 ........................................................................ 91396 ........................................................................ 91397 ........................................................................ 91398 ........................................................................ 91399 ........................................................................ 91400 ........................................................................ 91401 ........................................................................ 91402 ........................................................................ 91403 ........................................................................ 91404 ........................................................................ 91405 ........................................................................ 91406 ........................................................................ 91407 ........................................................................ 91408 ........................................................................ 91409 ........................................................................ 91410 ........................................................................ 91411 ........................................................................ 91412 ........................................................................ 91413 ........................................................................ 91414 ........................................................................ 91415 ........................................................................ 91416 ........................................................................ 91417 ........................................................................ 91418 ........................................................................ 91419 ........................................................................ 91420 ........................................................................ 91421 ........................................................................ 91422 ........................................................................ 91423 ........................................................................ 91424 ........................................................................ 91425 ........................................................................ 91426 ........................................................................ 91427 ........................................................................ 91428 ........................................................................ 91429 ........................................................................ 91430 ........................................................................ 91431 ........................................................................ 91432 ........................................................................ 91433 ........................................................................ 91434 ........................................................................ 91435 ........................................................................ 91436 ........................................................................ 91437 ........................................................................ 91438 ........................................................................ 91439 ........................................................................ 91440 ........................................................................ 91441 ........................................................................ 91442 ........................................................................ 91443 ........................................................................ 91444 ........................................................................ 91445 ........................................................................ 91446 ........................................................................ 91447 ........................................................................ 91448 ........................................................................ 91449 ........................................................................ 91450 ........................................................................ 91451 ........................................................................ 91452 ........................................................................ 91453 ........................................................................ 91454 ........................................................................ 91455 ........................................................................ 91456 ........................................................................ 91457 ........................................................................ 91458 ........................................................................ 91459 ........................................................................ 91460 ........................................................................ 91461 ........................................................................ 91462 ........................................................................ 91463 ........................................................................ 91464 ........................................................................ 91465 ........................................................................ 91466 ........................................................................ 91467 ........................................................................ 91468 ........................................................................ 91469 ........................................................................ 91470 ........................................................................ 91471 ........................................................................ 91472 ........................................................................ 91473 ........................................................................ 91474 ........................................................................ 91475 ........................................................................ 91476 ........................................................................ 91477 ........................................................................ 91478 ........................................................................ 91479 ........................................................................ 91480 ........................................................................ 91481 ........................................................................ 91482 ........................................................................ 91483 ........................................................................ 91484 ........................................................................ 91485 ........................................................................ 91486 ........................................................................ 91487 ........................................................................ 91488 ........................................................................ 91489 ........................................................................ 91490 ........................................................................ 91491 ........................................................................ 91492 ........................................................................ 91493 ........................................................................ 91494 ........................................................................ 91495 ........................................................................ 91496 ........................................................................ 91497 ........................................................................ 91498 ........................................................................ 91499 ........................................................................ 91500 ........................................................................ 91501 ........................................................................ 91502 ........................................................................ 91503 ........................................................................ 91504 ........................................................................ 91505 ........................................................................ 91506 ........................................................................ 91507 ........................................................................ 91508 ........................................................................ 91509 ........................................................................ 91510 ........................................................................ 91511 ........................................................................ 91512 ........................................................................ 91513 ........................................................................ 91514 ........................................................................ 91515 ........................................................................ 91516 ........................................................................ 91517 ........................................................................ 91518 ........................................................................ 91519 ........................................................................ 91520 ........................................................................ 91521 ........................................................................ 91522 ........................................................................ 91523 ........................................................................ 91524 ........................................................................ 91525 ........................................................................ 91526 ........................................................................ 91527 ........................................................................ 91528 ........................................................................ 91529 ........................................................................ 91530 ........................................................................ 91531 ........................................................................ 91532 ........................................................................ 91533 ........................................................................ 91534 ........................................................................ 91535 ........................................................................ 91536 ........................................................................ 91537 ........................................................................ 91538 ........................................................................ 91539 ........................................................................ 91540 ........................................................................ 91541 ........................................................................ 91542 ........................................................................ 91543 ........................................................................ 91544 ........................................................................ 91545 ........................................................................ 91546 ........................................................................ 91547 ........................................................................ 91548 ........................................................................ 91549 ........................................................................ 91550 ........................................................................ 91551 ........................................................................ 91552 ........................................................................ 91553 ........................................................................ 91554 ........................................................................ 91555 ........................................................................ 91556 ........................................................................ 91557 ........................................................................ 91558 ........................................................................ 91559 ........................................................................ 91560 ........................................................................ 91561 ........................................................................ 91562 ........................................................................ 91563 ........................................................................ 91564 ........................................................................ 91565 ........................................................................ 91566 ........................................................................ 91567 ........................................................................ 91568 ........................................................................ 91569 ........................................................................ 91570 ........................................................................ 91571 ........................................................................ 91572 ........................................................................ 91573 ........................................................................ 91574 ........................................................................ 91575 ........................................................................ 91576 ........................................................................ 91577 ........................................................................ 91578 ........................................................................ 91579 ........................................................................ 91580 ........................................................................ 91581 ........................................................................ 91582 ........................................................................ 91583 ........................................................................ 91584 ........................................................................ 91585 ........................................................................ 91586 ........................................................................ 91587 ........................................................................ 91588 ........................................................................ 91589 ........................................................................ 91590 ........................................................................ 91591 ........................................................................ 91592 ........................................................................ 91593 ........................................................................ 91594 ........................................................................ 91595 ........................................................................ 91596 ........................................................................ 91597 ........................................................................ 91598 ........................................................................ 91599 ........................................................................ 91600 ........................................................................ 91601 ........................................................................ 91602 ........................................................................ 91603 ........................................................................ 91604 ........................................................................ 91605 ........................................................................ 91606 ........................................................................ 91607 ........................................................................ 91608 ........................................................................ 91609 ........................................................................ 91610 ........................................................................ 91611 ........................................................................ 91612 ........................................................................ 91613 ........................................................................ 91614 ........................................................................ 91615 ........................................................................ 91616 ........................................................................ 91617 ........................................................................ 91618 ........................................................................ 91619 ........................................................................ 91620 ........................................................................ 91621 ........................................................................ 91622 ........................................................................ 91623 ........................................................................ 91624 ........................................................................ 91625 ........................................................................ 91626 ........................................................................ 91627 ........................................................................ 91628 ........................................................................ 91629 ........................................................................ 91630 ........................................................................ 91631 ........................................................................ 91632 ........................................................................ 91633 ........................................................................ 91634 ........................................................................ 91635 ........................................................................ 91636 ........................................................................ 91637 ........................................................................ 91638 ........................................................................ 91639 ........................................................................ 91640 ........................................................................ 91641 ........................................................................ 91642 ........................................................................ 91643 ........................................................................ 91644 ........................................................................ 91645 ........................................................................ 91646 ........................................................................ 91647 ........................................................................ 91648 ........................................................................ 91649 ........................................................................ 91650 ........................................................................ 91651 ........................................................................ 91652 ........................................................................ 91653 ........................................................................ 91654 ........................................................................ 91655 ........................................................................ 91656 ........................................................................ 91657 ........................................................................ 91658 ........................................................................ 91659 ........................................................................ 91660 ........................................................................ 91661 ........................................................................ 91662 ........................................................................ 91663 ........................................................................ 91664 ........................................................................ 91665 ........................................................................ 91666 ........................................................................ 91667 ........................................................................ 91668 ........................................................................ 91669 ........................................................................ 91670 ........................................................................ 91671 ........................................................................ 91672 ........................................................................ 91673 ........................................................................ 91674 ........................................................................ 91675 ........................................................................ 91676 ........................................................................ 91677 ........................................................................ 91678 ........................................................................ 91679 ........................................................................ 91680 ........................................................................ 91681 ........................................................................ 91682 ........................................................................ 91683 ........................................................................ 91684 ........................................................................ 91685 ........................................................................ 91686 ........................................................................ 91687 ........................................................................ 91688 ........................................................................ 91689 ........................................................................ 91690 ........................................................................ 91691 ........................................................................ 91692 ........................................................................ 91693 ........................................................................ 91694 ........................................................................ 91695 ........................................................................ 91696 ........................................................................ 91697 ........................................................................ 91698 ........................................................................ 91699 ........................................................................ 91700 ........................................................................ 91701 ........................................................................ 91702 ........................................................................ 91703 ........................................................................ 91704 ........................................................................ 91705 ........................................................................ 91706 ........................................................................ 91707 ........................................................................ 91708 ........................................................................ 91709 ........................................................................ 91710 ........................................................................ 91711 ........................................................................ 91712 ........................................................................ 91713 ........................................................................ 91714 ........................................................................ 91715 ........................................................................ 91716 ........................................................................ 91717 ........................................................................ 91718 ........................................................................ 91719 ........................................................................ 91720 ........................................................................ 91721 ........................................................................ 91722 ........................................................................ 91723 ........................................................................ 91724 ........................................................................ 91725 ........................................................................ 91726 ........................................................................ 91727 ........................................................................ 91728 ........................................................................ 91729 ........................................................................ 91730 ........................................................................ 91731 ........................................................................ 91732 ........................................................................ 91733 ........................................................................ 91734 ........................................................................ 91735 ........................................................................ 91736 ........................................................................ 91737 ........................................................................ 91738 ........................................................................ 91739 ........................................................................ 91740 ........................................................................ 91741 ........................................................................ 91742 ........................................................................ 91743 ........................................................................ 91744 ........................................................................ 91745 ........................................................................ 91746 ........................................................................ 91747 ........................................................................ 91748 ........................................................................ 91749 ........................................................................ 91750 ........................................................................ 91751 ........................................................................ 91752 ........................................................................ 91753 ........................................................................ 91754 ........................................................................ 91755 ........................................................................ 91756 ........................................................................ 91757 ........................................................................ 91758 ........................................................................ 91759 ........................................................................ 91760 ........................................................................ 91761 ........................................................................ 91762 ........................................................................ 91763 ........................................................................ 91764 ........................................................................ 91765 ........................................................................ 91766 ........................................................................ 91767 ........................................................................ 91768 ........................................................................ 91769 ........................................................................ 91770 ........................................................................ 91771 ........................................................................ 91772 ........................................................................ 91773 ........................................................................ 91774 ........................................................................ 91775 ........................................................................ 91776 ........................................................................ 91777 ........................................................................ 91778 ........................................................................ 91779 ........................................................................ 91780 ........................................................................ 91781 ........................................................................ 91782 ........................................................................ 91783 ........................................................................ 91784 ........................................................................ 91785 ........................................................................ 91786 ........................................................................ 91787 ........................................................................ 91788 ........................................................................ 91789 ........................................................................ 91790 ........................................................................ 91791 ........................................................................ 91792 ........................................................................ 91793 ........................................................................ 91794 ........................................................................ 91795 ........................................................................ 91796 ........................................................................ 91797 ........................................................................ 91798 ........................................................................ 91799 ........................................................................ 91800 ........................................................................ 91801 ........................................................................ 91802 ........................................................................ 91803 ........................................................................ 91804 ........................................................................ 91805 ........................................................................ 91806 ........................................................................ 91807 ........................................................................ 91808 ........................................................................ 91809 ........................................................................ 91810 ........................................................................ 91811 ........................................................................ 91812 ........................................................................ 91813 ........................................................................ 91814 ........................................................................ 91815 ........................................................................ 91816 ........................................................................ 91817 ........................................................................ 91818 ........................................................................ 91819 ........................................................................ 91820 ........................................................................ 91821 ........................................................................ 91822 ........................................................................ 91823 ........................................................................ 91824 ........................................................................ 91825 ........................................................................ 91826 ........................................................................ 91827 ........................................................................ 91828 ........................................................................ 91829 ........................................................................ 91830 ........................................................................ 91831 ........................................................................ 91832 ........................................................................ 91833 ........................................................................ 91834 ........................................................................ 91835 ........................................................................ 91836 ........................................................................ 91837 ........................................................................ 91838 ........................................................................ 91839 ........................................................................ 91840 ........................................................................ 91841 ........................................................................ 91842 ........................................................................ 91843 ........................................................................ 91844 ........................................................................ 91845 ........................................................................ 91846 ........................................................................ 91847 ........................................................................ 91848 ........................................................................ 91849 ........................................................................ 91850 ........................................................................ 91851 ........................................................................ 91852 ........................................................................ 91853 ........................................................................ 91854 ........................................................................ 91855 ........................................................................ 91856 ........................................................................ 91857 ........................................................................ 91858 ........................................................................ 91859 ........................................................................ 91860 ........................................................................ 91861 ........................................................................ 91862 ........................................................................ 91863 ........................................................................ 91864 ........................................................................ 91865 ........................................................................ 91866 ........................................................................ 91867 ........................................................................ 91868 ........................................................................ 91869 ........................................................................ 91870 ........................................................................ 91871 ........................................................................ 91872 ........................................................................ 91873 ........................................................................ 91874 ........................................................................ 91875 ........................................................................ 91876 ........................................................................ 91877 ........................................................................ 91878 ........................................................................ 91879 ........................................................................ 91880 ........................................................................ 91881 ........................................................................ 91882 ........................................................................ 91883 ........................................................................ 91884 ........................................................................ 91885 ........................................................................ 91886 ........................................................................ 91887 ........................................................................ 91888 ........................................................................ 91889 ........................................................................ 91890 ........................................................................ 91891 ........................................................................ 91892 ........................................................................ 91893 ........................................................................ 91894 ........................................................................ 91895 ........................................................................ 91896 ........................................................................ 91897 ........................................................................ 91898 ........................................................................ 91899 ........................................................................ 91900 ........................................................................ 91901 ........................................................................ 91902 ........................................................................ 91903 ........................................................................ 91904 ........................................................................ 91905 ........................................................................ 91906 ........................................................................ 91907 ........................................................................ 91908 ........................................................................ 91909 ........................................................................ 91910 ........................................................................ 91911 ........................................................................ 91912 ........................................................................ 91913 ........................................................................ 91914 ........................................................................ 91915 ........................................................................ 91916 ........................................................................ 91917 ........................................................................ 91918 ........................................................................ 91919 ........................................................................ 91920 ........................................................................ 91921 ........................................................................ 91922 ........................................................................ 91923 ........................................................................ 91924 ........................................................................ 91925 ........................................................................ 91926 ........................................................................ 91927 ........................................................................ 91928 ........................................................................ 91929 ........................................................................ 91930 ........................................................................ 91931 ........................................................................ 91932 ........................................................................ 91933 ........................................................................ 91934 ........................................................................ 91935 ........................................................................ 91936 ........................................................................ 91937 ........................................................................ 91938 ........................................................................ 91939 ........................................................................ 91940 ........................................................................ 91941 ........................................................................ 91942 ........................................................................ 91943 ........................................................................ 91944 ........................................................................ 91945 ........................................................................ 91946 ........................................................................ 91947 ........................................................................ 91948 ........................................................................ 91949 ........................................................................ 91950 ........................................................................ 91951 ........................................................................ 91952 ........................................................................ 91953 ........................................................................ 91954 ........................................................................ 91955 ........................................................................ 91956 ........................................................................ 91957 ........................................................................ 91958 ........................................................................ 91959 ........................................................................ 91960 ........................................................................ 91961 ........................................................................ 91962 ........................................................................ 91963 ........................................................................ 91964 ........................................................................ 91965 ........................................................................ 91966 ........................................................................ 91967 ........................................................................ 91968 ........................................................................ 91969 ........................................................................ 91970 ........................................................................ 91971 ........................................................................ 91972 ........................................................................ 91973 ........................................................................ 91974 ........................................................................ 91975 ........................................................................ 91976 ........................................................................ 91977 ........................................................................ 91978 ........................................................................ 91979 ........................................................................ 91980 ........................................................................ 91981 ........................................................................ 91982 ........................................................................ 91983 ........................................................................ 91984 ........................................................................ 91985 ........................................................................ 91986 ........................................................................ 91987 ........................................................................ 91988 ........................................................................ 91989 ........................................................................ 91990 ........................................................................ 91991 ........................................................................ 91992 ........................................................................ 91993 ........................................................................ 91994 ........................................................................ 91995 ........................................................................ 91996 ........................................................................ 91997 ........................................................................ 91998 ........................................................................ 91999 ........................................................................ 92000 ........................................................................ 92001 ........................................................................ 92002 ........................................................................ 92003 ........................................................................ 92004 ........................................................................ 92005 ........................................................................ 92006 ........................................................................ 92007 ........................................................................ 92008 ........................................................................ 92009 ........................................................................ 92010 ........................................................................ 92011 ........................................................................ 92012 ........................................................................ 92013 ........................................................................ 92014 ........................................................................ 92015 ........................................................................ 92016 ........................................................................ 92017 ........................................................................ 92018 ........................................................................ 92019 ........................................................................ 92020 ........................................................................ 92021 ........................................................................ 92022 ........................................................................ 92023 ........................................................................ 92024 ........................................................................ 92025 ........................................................................ 92026 ........................................................................ 92027 ........................................................................ 92028 ........................................................................ 92029 ........................................................................ 92030 ........................................................................ 92031 ........................................................................ 92032 ........................................................................ 92033 ........................................................................ 92034 ........................................................................ 92035 ........................................................................ 92036 ........................................................................ 92037 ........................................................................ 92038 ........................................................................ 92039 ........................................................................ 92040 ........................................................................ 92041 ........................................................................ 92042 ........................................................................ 92043 ........................................................................ 92044 ........................................................................ 92045 ........................................................................ 92046 ........................................................................ 92047 ........................................................................ 92048 ........................................................................ 92049 ........................................................................ 92050 ........................................................................ 92051 ........................................................................ 92052 ........................................................................ 92053 ........................................................................ 92054 ........................................................................ 92055 ........................................................................ 92056 ........................................................................ 92057 ........................................................................ 92058 ........................................................................ 92059 ........................................................................ 92060 ........................................................................ 92061 ........................................................................ 92062 ........................................................................ 92063 ........................................................................ 92064 ........................................................................ 92065 ........................................................................ 92066 ........................................................................ 92067 ........................................................................ 92068 ........................................................................ 92069 ........................................................................ 92070 ........................................................................ 92071 ........................................................................ 92072 ........................................................................ 92073 ........................................................................ 92074 ........................................................................ 92075 ........................................................................ 92076 ........................................................................ 92077 ........................................................................ 92078 ........................................................................ 92079 ........................................................................ 92080 ........................................................................ 92081 ........................................................................ 92082 ........................................................................ 92083 ........................................................................ 92084 ........................................................................ 92085 ........................................................................ 92086 ........................................................................ 92087 ........................................................................ 92088 ........................................................................ 92089 ........................................................................ 92090 ........................................................................ 92091 ........................................................................ 92092 ........................................................................ 92093 ........................................................................ 92094 ........................................................................ 92095 ........................................................................ 92096 ........................................................................ 92097 ........................................................................ 92098 ........................................................................ 92099 ........................................................................ 92100 ........................................................................ 92101 ........................................................................ 92102 ........................................................................ 92103 ........................................................................ 92104 ........................................................................ 92105 ........................................................................ 92106 ........................................................................ 92107 ........................................................................ 92108 ........................................................................ 92109 ........................................................................ 92110 ........................................................................ 92111 ........................................................................ 92112 ........................................................................ 92113 ........................................................................ 92114 ........................................................................ 92115 ........................................................................ 92116 ........................................................................ 92117 ........................................................................ 92118 ........................................................................ 92119 ........................................................................ 92120 ........................................................................ 92121 ........................................................................ 92122 ........................................................................ 92123 ........................................................................ 92124 ........................................................................ 92125 ........................................................................ 92126 ........................................................................ 92127 ........................................................................ 92128 ........................................................................ 92129 ........................................................................ 92130 ........................................................................ 92131 ........................................................................ 92132 ........................................................................ 92133 ........................................................................ 92134 ........................................................................ 92135 ........................................................................ 92136 ........................................................................ 92137 ........................................................................ 92138 ........................................................................ 92139 ........................................................................ 92140 ........................................................................ 92141 ........................................................................ 92142 ........................................................................ 92143 ........................................................................ 92144 ........................................................................ 92145 ........................................................................ 92146 ........................................................................ 92147 ........................................................................ 92148 ........................................................................ 92149 ........................................................................ 92150 ........................................................................ 92151 ........................................................................ 92152 ........................................................................ 92153 ........................................................................ 92154 ........................................................................ 92155 ........................................................................ 92156 ........................................................................ 92157 ........................................................................ 92158 ........................................................................ 92159 ........................................................................ 92160 ........................................................................ 92161 ........................................................................ 92162 ........................................................................ 92163 ........................................................................ 92164 ........................................................................ 92165 ........................................................................ 92166 ........................................................................ 92167 ........................................................................ 92168 ........................................................................ 92169 ........................................................................ 92170 ........................................................................ 92171 ........................................................................ 92172 ........................................................................ 92173 ........................................................................ 92174 ........................................................................ 92175 ........................................................................ 92176 ........................................................................ 92177 ........................................................................ 92178 ........................................................................ 92179 ........................................................................ 92180 ........................................................................ 92181 ........................................................................ 92182 ........................................................................ 92183 ........................................................................ 92184 ........................................................................ 92185 ........................................................................ 92186 ........................................................................ 92187 ........................................................................ 92188 ........................................................................ 92189 ........................................................................ 92190 ........................................................................ 92191 ........................................................................ 92192 ........................................................................ 92193 ........................................................................ 92194 ........................................................................ 92195 ........................................................................ 92196 ........................................................................ 92197 ........................................................................ 92198 ........................................................................ 92199 ........................................................................ 92200 ........................................................................ 92201 ........................................................................ 92202 ........................................................................ 92203 ........................................................................ 92204 ........................................................................ 92205 ........................................................................ 92206 ........................................................................ 92207 ........................................................................ 92208 ........................................................................ 92209 ........................................................................ 92210 ........................................................................ 92211 ........................................................................ 92212 ........................................................................ 92213 ........................................................................ 92214 ........................................................................ 92215 ........................................................................ 92216 ........................................................................ 92217 ........................................................................ 92218 ........................................................................ 92219 ........................................................................ 92220 ........................................................................ 92221 ........................................................................ 92222 ........................................................................ 92223 ........................................................................ 92224 ........................................................................ 92225 ........................................................................ 92226 ........................................................................ 92227 ........................................................................ 92228 ........................................................................ 92229 ........................................................................ 92230 ........................................................................ 92231 ........................................................................ 92232 ........................................................................ 92233 ........................................................................ 92234 ........................................................................ 92235 ........................................................................ 92236 ........................................................................ 92237 ........................................................................ 92238 ........................................................................ 92239 ........................................................................ 92240 ........................................................................ 92241 ........................................................................ 92242 ........................................................................ 92243 ........................................................................ 92244 ........................................................................ 92245 ........................................................................ 92246 ........................................................................ 92247 ........................................................................ 92248 ........................................................................ 92249 ........................................................................ 92250 ........................................................................ 92251 ........................................................................ 92252 ........................................................................ 92253 ........................................................................ 92254 ........................................................................ 92255 ........................................................................ 92256 ........................................................................ 92257 ........................................................................ 92258 ........................................................................ 92259 ........................................................................ 92260 ........................................................................ 92261 ........................................................................ 92262 ........................................................................ 92263 ........................................................................ 92264 ........................................................................ 92265 ........................................................................ 92266 ........................................................................ 92267 ........................................................................ 92268 ........................................................................ 92269 ........................................................................ 92270 ........................................................................ 92271 ........................................................................ 92272 ........................................................................ 92273 ........................................................................ 92274 ........................................................................ 92275 ........................................................................ 92276 ........................................................................ 92277 ........................................................................ 92278 ........................................................................ 92279 ........................................................................ 92280 ........................................................................ 92281 ........................................................................ 92282 ........................................................................ 92283 ........................................................................ 92284 ........................................................................ 92285 ........................................................................ 92286 ........................................................................ 92287 ........................................................................ 92288 ........................................................................ 92289 ........................................................................ 92290 ........................................................................ 92291 ........................................................................ 92292 ........................................................................ 92293 ........................................................................ 92294 ........................................................................ 92295 ........................................................................ 92296 ........................................................................ 92297 ........................................................................ 92298 ........................................................................ 92299 ........................................................................ 92300 ........................................................................ 92301 ........................................................................ 92302 ........................................................................ 92303 ........................................................................ 92304 ........................................................................ 92305 ........................................................................ 92306 ........................................................................ 92307 ........................................................................ 92308 ........................................................................ 92309 ........................................................................ 92310 ........................................................................ 92311 ........................................................................ 92312 ........................................................................ 92313 ........................................................................ 92314 ........................................................................ 92315 ........................................................................ 92316 ........................................................................ 92317 ........................................................................ 92318 ........................................................................ 92319 ........................................................................ 92320 ........................................................................ 92321 ........................................................................ 92322 ........................................................................ 92323 ........................................................................ 92324 ........................................................................ 92325 ........................................................................ 92326 ........................................................................ 92327 ........................................................................ 92328 ........................................................................ 92329 ........................................................................ 92330 ........................................................................ 92331 ........................................................................ 92332 ........................................................................ 92333 ........................................................................ 92334 ........................................................................ 92335 ........................................................................ 92336 ........................................................................ 92337 ........................................................................ 92338 ........................................................................ 92339 ........................................................................ 92340 ........................................................................ 92341 ........................................................................ 92342 ........................................................................ 92343 ........................................................................ 92344 ........................................................................ 92345 ........................................................................ 92346 ........................................................................ 92347 ........................................................................ 92348 ........................................................................ 92349 ........................................................................ 92350 ........................................................................ 92351 ........................................................................ 92352 ........................................................................ 92353 ........................................................................ 92354 ........................................................................ 92355 ........................................................................ 92356 ........................................................................ 92357 ........................................................................ 92358 ........................................................................ 92359 ........................................................................ 92360 ........................................................................ 92361 ........................................................................ 92362 ........................................................................ 92363 ........................................................................ 92364 ........................................................................ 92365 ........................................................................ 92366 ........................................................................ 92367 ........................................................................ 92368 ........................................................................ 92369 ........................................................................ 92370 ........................................................................ 92371 ........................................................................ 92372 ........................................................................ 92373 ........................................................................ 92374 ........................................................................ 92375 ........................................................................ 92376 ........................................................................ 92377 ........................................................................ 92378 ........................................................................ 92379 ........................................................................ 92380 ........................................................................ 92381 ........................................................................ 92382 ........................................................................ 92383 ........................................................................ 92384 ........................................................................ 92385 ........................................................................ 92386 ........................................................................ 92387 ........................................................................ 92388 ........................................................................ 92389 ........................................................................ 92390 ........................................................................ 92391 ........................................................................ 92392 ........................................................................ 92393 ........................................................................ 92394 ........................................................................ 92395 ........................................................................ 92396 ........................................................................ 92397 ........................................................................ 92398 ........................................................................ 92399 ........................................................................ 92400 ........................................................................ 92401 ........................................................................ 92402 ........................................................................ 92403 ........................................................................ 92404 ........................................................................ 92405 ........................................................................ 92406 ........................................................................ 92407 ........................................................................ 92408 ........................................................................ 92409 ........................................................................ 92410 ........................................................................ 92411 ........................................................................ 92412 ........................................................................ 92413 ........................................................................ 92414 ........................................................................ 92415 ........................................................................ 92416 ........................................................................ 92417 ........................................................................ 92418 ........................................................................ 92419 ........................................................................ 92420 ........................................................................ 92421 ........................................................................ 92422 ........................................................................ 92423 ........................................................................ 92424 ........................................................................ 92425 ........................................................................ 92426 ........................................................................ 92427 ........................................................................ 92428 ........................................................................ 92429 ........................................................................ 92430 ........................................................................ 92431 ........................................................................ 92432 ........................................................................ 92433 ........................................................................ 92434 ........................................................................ 92435 ........................................................................ 92436 ........................................................................ 92437 ........................................................................ 92438 ........................................................................ 92439 ........................................................................ 92440 ........................................................................ 92441 ........................................................................ 92442 ........................................................................ 92443 ........................................................................ 92444 ........................................................................ 92445 ........................................................................ 92446 ........................................................................ 92447 ........................................................................ 92448 ........................................................................ 92449 ........................................................................ 92450 ........................................................................ 92451 ........................................................................ 92452 ........................................................................ 92453 ........................................................................ 92454 ........................................................................ 92455 ........................................................................ 92456 ........................................................................ 92457 ........................................................................ 92458 ........................................................................ 92459 ........................................................................ 92460 ........................................................................ 92461 ........................................................................ 92462 ........................................................................ 92463 ........................................................................ 92464 ........................................................................ 92465 ........................................................................ 92466 ........................................................................ 92467 ........................................................................ 92468 ........................................................................ 92469 ........................................................................ 92470 ........................................................................ 92471 ........................................................................ 92472 ........................................................................ 92473 ........................................................................ 92474 ........................................................................ 92475 ........................................................................ 92476 ........................................................................ 92477 ........................................................................ 92478 ........................................................................ 92479 ........................................................................ 92480 ........................................................................ 92481 ........................................................................ 92482 ........................................................................ 92483 ........................................................................ 92484 ........................................................................ 92485 ........................................................................ 92486 ........................................................................ 92487 ........................................................................ 92488 ........................................................................ 92489 ........................................................................ 92490 ........................................................................ 92491 ........................................................................ 92492 ........................................................................ 92493 ........................................................................ 92494 ........................................................................ 92495 ........................................................................ 92496 ........................................................................ 92497 ........................................................................ 92498 ........................................................................ 92499 ........................................................................ 92500 ........................................................................ 92501 ........................................................................ 92502 ........................................................................ 92503 ........................................................................ 92504 ........................................................................ 92505 ........................................................................ 92506 ........................................................................ 92507 ........................................................................ 92508 ........................................................................ 92509 ........................................................................ 92510 ........................................................................ 92511 ........................................................................ 92512 ........................................................................ 92513 ........................................................................ 92514 ........................................................................ 92515 ........................................................................ 92516 ........................................................................ 92517 ........................................................................ 92518 ........................................................................ 92519 ........................................................................ 92520 ........................................................................ 92521 ........................................................................ 92522 ........................................................................ 92523 ........................................................................ 92524 ........................................................................ 92525 ........................................................................ 92526 ........................................................................ 92527 ........................................................................ 92528 ........................................................................ 92529 ........................................................................ 92530 ........................................................................ 92531 ........................................................................ 92532 ........................................................................ 92533 ........................................................................ 92534 ........................................................................ 92535 ........................................................................ 92536 ........................................................................ 92537 ........................................................................ 92538 ........................................................................ 92539 ........................................................................ 92540 ........................................................................ 92541 ........................................................................ 92542 ........................................................................ 92543 ........................................................................ 92544 ........................................................................ 92545 ........................................................................ 92546 ........................................................................ 92547 ........................................................................ 92548 ........................................................................ 92549 ........................................................................ 92550 ........................................................................ 92551 ........................................................................ 92552 ........................................................................ 92553 ........................................................................ 92554 ........................................................................ 92555 ........................................................................ 92556 ........................................................................ 92557 ........................................................................ 92558 ........................................................................ 92559 ........................................................................ 92560 ........................................................................ 92561 ........................................................................ 92562 ........................................................................ 92563 ........................................................................ 92564 ........................................................................ 92565 ........................................................................ 92566 ........................................................................ 92567 ........................................................................ 92568 ........................................................................ 92569 ........................................................................ 92570 ........................................................................ 92571 ........................................................................ 92572 ........................................................................ 92573 ........................................................................ 92574 ........................................................................ 92575 ........................................................................ 92576 ........................................................................ 92577 ........................................................................ 92578 ........................................................................ 92579 ........................................................................ 92580 ........................................................................ 92581 ........................................................................ 92582 ........................................................................ 92583 ........................................................................ 92584 ........................................................................ 92585 ........................................................................ 92586 ........................................................................ 92587 ........................................................................ 92588 ........................................................................ 92589 ........................................................................ 92590 ........................................................................ 92591 ........................................................................ 92592 ........................................................................ 92593 ........................................................................ 92594 ........................................................................ 92595 ........................................................................ 92596 ........................................................................ 92597 ........................................................................ 92598 ........................................................................ 92599 ........................................................................ 92600 ........................................................................ 92601 ........................................................................ 92602 ........................................................................ 92603 ........................................................................ 92604 ........................................................................ 92605 ........................................................................ 92606 ........................................................................ 92607 ........................................................................ 92608 ........................................................................ 92609 ........................................................................ 92610 ........................................................................ 92611 ........................................................................ 92612 ........................................................................ 92613 ........................................................................ 92614 ........................................................................ 92615 ........................................................................ 92616 ........................................................................ 92617 ........................................................................ 92618 ........................................................................ 92619 ........................................................................ 92620 ........................................................................ 92621 ........................................................................ 92622 ........................................................................ 92623 ........................................................................ 92624 ........................................................................ 92625 ........................................................................ 92626 ........................................................................ 92627 ........................................................................ 92628 ........................................................................ 92629 ........................................................................ 92630 ........................................................................ 92631 ........................................................................ 92632 ........................................................................ 92633 ........................................................................ 92634 ........................................................................ 92635 ........................................................................ 92636 ........................................................................ 92637 ........................................................................ 92638 ........................................................................ 92639 ........................................................................ 92640 ........................................................................ 92641 ........................................................................ 92642 ........................................................................ 92643 ........................................................................ 92644 ........................................................................ 92645 ........................................................................ 92646 ........................................................................ 92647 ........................................................................ 92648 ........................................................................ 92649 ........................................................................ 92650 ........................................................................ 92651 ........................................................................ 92652 ........................................................................ 92653 ........................................................................ 92654 ........................................................................ 92655 ........................................................................ 92656 ........................................................................ 92657 ........................................................................ 92658 ........................................................................ 92659 ........................................................................ 92660 ........................................................................ 92661 ........................................................................ 92662 ........................................................................ 92663 ........................................................................ 92664 ........................................................................ 92665 ........................................................................ 92666 ........................................................................ 92667 ........................................................................ 92668 ........................................................................ 92669 ........................................................................ 92670 ........................................................................ 92671 ........................................................................ 92672 ........................................................................ 92673 ........................................................................ 92674 ........................................................................ 92675 ........................................................................ 92676 ........................................................................ 92677 ........................................................................ 92678 ........................................................................ 92679 ........................................................................ 92680 ........................................................................ 92681 ........................................................................ 92682 ........................................................................ 92683 ........................................................................ 92684 ........................................................................ 92685 ........................................................................ 92686 ........................................................................ 92687 ........................................................................ 92688 ........................................................................ 92689 ........................................................................ 92690 ........................................................................ 92691 ........................................................................ 92692 ........................................................................ 92693 ........................................................................ 92694 ........................................................................ 92695 ........................................................................ 92696 ........................................................................ 92697 ........................................................................ 92698 ........................................................................ 92699 ........................................................................ 92700 ........................................................................ 92701 ........................................................................ 92702 ........................................................................ 92703 ........................................................................ 92704 ........................................................................ 92705 ........................................................................ 92706 ........................................................................ 92707 ........................................................................ 92708 ........................................................................ 92709 ........................................................................ 92710 ........................................................................ 92711 ........................................................................ 92712 ........................................................................ 92713 ........................................................................ 92714 ........................................................................ 92715 ........................................................................ 92716 ........................................................................ 92717 ........................................................................ 92718 ........................................................................ 92719 ........................................................................ 92720 ........................................................................ 92721 ........................................................................ 92722 ........................................................................ 92723 ........................................................................ 92724 ........................................................................ 92725 ........................................................................ 92726 ........................................................................ 92727 ........................................................................ 92728 ........................................................................ 92729 ........................................................................ 92730 ........................................................................ 92731 ........................................................................ 92732 ........................................................................ 92733 ........................................................................ 92734 ........................................................................ 92735 ........................................................................ 92736 ........................................................................ 92737 ........................................................................ 92738 ........................................................................ 92739 ........................................................................ 92740 ........................................................................ 92741 ........................................................................ 92742 ........................................................................ 92743 ........................................................................ 92744 ........................................................................ 92745 ........................................................................ 92746 ........................................................................ 92747 ........................................................................ 92748 ........................................................................ 92749 ........................................................................ 92750 ........................................................................ 92751 ........................................................................ 92752 ........................................................................ 92753 ........................................................................ 92754 ........................................................................ 92755 ........................................................................ 92756 ........................................................................ 92757 ........................................................................ 92758 ........................................................................ 92759 ........................................................................ 92760 ........................................................................ 92761 ........................................................................ 92762 ........................................................................ 92763 ........................................................................ 92764 ........................................................................ 92765 ........................................................................ 92766 ........................................................................ 92767 ........................................................................ 92768 ........................................................................ 92769 ........................................................................ 92770 ........................................................................ 92771 ........................................................................ 92772 ........................................................................ 92773 ........................................................................ 92774 ........................................................................ 92775 ........................................................................ 92776 ........................................................................ 92777 ........................................................................ 92778 ........................................................................ 92779 ........................................................................ 92780 ........................................................................ 92781 ........................................................................ 92782 ........................................................................ 92783 ........................................................................ 92784 ........................................................................ 92785 ........................................................................ 92786 ........................................................................ 92787 ........................................................................ 92788 ........................................................................ 92789 ........................................................................ 92790 ........................................................................ 92791 ........................................................................ 92792 ........................................................................ 92793 ........................................................................ 92794 ........................................................................ 92795 ........................................................................ 92796 ........................................................................ 92797 ........................................................................ 92798 ........................................................................ 92799 ........................................................................ 92800 ........................................................................ 92801 ........................................................................ 92802 ........................................................................ 92803 ........................................................................ 92804 ........................................................................ 92805 ........................................................................ 92806 ........................................................................ 92807 ........................................................................ 92808 ........................................................................ 92809 ........................................................................ 92810 ........................................................................ 92811 ........................................................................ 92812 ........................................................................ 92813 ........................................................................ 92814 ........................................................................ 92815 ........................................................................ 92816 ........................................................................ 92817 ........................................................................ 92818 ........................................................................ 92819 ........................................................................ 92820 ........................................................................ 92821 ........................................................................ 92822 ........................................................................ 92823 ........................................................................ 92824 ........................................................................ 92825 ........................................................................ 92826 ........................................................................ 92827 ........................................................................ 92828 ........................................................................ 92829 ........................................................................ 92830 ........................................................................ 92831 ........................................................................ 92832 ........................................................................ 92833 ........................................................................ 92834 ........................................................................ 92835 ........................................................................ 92836 ........................................................................ 92837 ........................................................................ 92838 ........................................................................ 92839 ........................................................................ 92840 ........................................................................ 92841 ........................................................................ 92842 ........................................................................ 92843 ........................................................................ 92844 ........................................................................ 92845 ........................................................................ 92846 ........................................................................ 92847 ........................................................................ 92848 ........................................................................ 92849 ........................................................................ 92850 ........................................................................ 92851 ........................................................................ 92852 ........................................................................ 92853 ........................................................................ 92854 ........................................................................ 92855 ........................................................................ 92856 ........................................................................ 92857 ........................................................................ 92858 ........................................................................ 92859 ........................................................................ 92860 ........................................................................ 92861 ........................................................................ 92862 ........................................................................ 92863 ........................................................................ 92864 ........................................................................ 92865 ........................................................................ 92866 ........................................................................ 92867 ........................................................................ 92868 ........................................................................ 92869 ........................................................................ 92870 ........................................................................ 92871 ........................................................................ 92872 ........................................................................ 92873 ........................................................................ 92874 ........................................................................ 92875 ........................................................................ 92876 ........................................................................ 92877 ........................................................................ 92878 ........................................................................ 92879 ........................................................................ 92880 ........................................................................ 92881 ........................................................................ 92882 ........................................................................ 92883 ........................................................................ 92884 ........................................................................ 92885 ........................................................................ 92886 ........................................................................ 92887 ........................................................................ 92888 ........................................................................ 92889 ........................................................................ 92890 ........................................................................ 92891 ........................................................................ 92892 ........................................................................ 92893 ........................................................................ 92894 ........................................................................ 92895 ........................................................................ 92896 ........................................................................ 92897 ........................................................................ 92898 ........................................................................ 92899 ........................................................................ 92900 ........................................................................ 92901 ........................................................................ 92902 ........................................................................ 92903 ........................................................................ 92904 ........................................................................ 92905 ........................................................................ 92906 ........................................................................ 92907 ........................................................................ 92908 ........................................................................ 92909 ........................................................................ 92910 ........................................................................ 92911 ........................................................................ 92912 ........................................................................ 92913 ........................................................................ 92914 ........................................................................ 92915 ........................................................................ 92916 ........................................................................ 92917 ........................................................................ 92918 ........................................................................ 92919 ........................................................................ 92920 ........................................................................ 92921 ........................................................................ 92922 ........................................................................ 92923 ........................................................................ 92924 ........................................................................ 92925 ........................................................................ 92926 ........................................................................ 92927 ........................................................................ 92928 ........................................................................ 92929 ........................................................................ 92930 ........................................................................ 92931 ........................................................................ 92932 ........................................................................ 92933 ........................................................................ 92934 ........................................................................ 92935 ........................................................................ 92936 ........................................................................ 92937 ........................................................................ 92938 ........................................................................ 92939 ........................................................................ 92940 ........................................................................ 92941 ........................................................................ 92942 ........................................................................ 92943 ........................................................................ 92944 ........................................................................ 92945 ........................................................................ 92946 ........................................................................ 92947 ........................................................................ 92948 ........................................................................ 92949 ........................................................................ 92950 ........................................................................ 92951 ........................................................................ 92952 ........................................................................ 92953 ........................................................................ 92954 ........................................................................ 92955 ........................................................................ 92956 ........................................................................ 92957 ........................................................................ 92958 ........................................................................ 92959 ........................................................................ 92960 ........................................................................ 92961 ........................................................................ 92962 ........................................................................ 92963 ........................................................................ 92964 ........................................................................ 92965 ........................................................................ 92966 ........................................................................ 92967 ........................................................................ 92968 ........................................................................ 92969 ........................................................................ 92970 ........................................................................ 92971 ........................................................................ 92972 ........................................................................ 92973 ........................................................................ 92974 ........................................................................ 92975 ........................................................................ 92976 ........................................................................ 92977 ........................................................................ 92978 ........................................................................ 92979 ........................................................................ 92980 ........................................................................ 92981 ........................................................................ 92982 ........................................................................ 92983 ........................................................................ 92984 ........................................................................ 92985 ........................................................................ 92986 ........................................................................ 92987 ........................................................................ 92988 ........................................................................ 92989 ........................................................................ 92990 ........................................................................ 92991 ........................................................................ 92992 ........................................................................ 92993 ........................................................................ 92994 ........................................................................ 92995 ........................................................................ 92996 ........................................................................ 92997 ........................................................................ 92998 ........................................................................ 92999 ........................................................................ 93000 ........................................................................ 93001 ........................................................................ 93002 ........................................................................ 93003 ........................................................................ 93004 ........................................................................ 93005 ........................................................................ 93006 ........................................................................ 93007 ........................................................................ 93008 ........................................................................ 93009 ........................................................................ 93010 ........................................................................ 93011 ........................................................................ 93012 ........................................................................ 93013 ........................................................................ 93014 ........................................................................ 93015 ........................................................................ 93016 ........................................................................ 93017 ........................................................................ 93018 ........................................................................ 93019 ........................................................................ 93020 ........................................................................ 93021 ........................................................................ 93022 ........................................................................ 93023 ........................................................................ 93024 ........................................................................ 93025 ........................................................................ 93026 ........................................................................ 93027 ........................................................................ 93028 ........................................................................ 93029 ........................................................................ 93030 ........................................................................ 93031 ........................................................................ 93032 ........................................................................ 93033 ........................................................................ 93034 ........................................................................ 93035 ........................................................................ 93036 ........................................................................ 93037 ........................................................................ 93038 ........................................................................ 93039 ........................................................................ 93040 ........................................................................ 93041 ........................................................................ 93042 ........................................................................ 93043 ........................................................................ 93044 ........................................................................ 93045 ........................................................................ 93046 ........................................................................ 93047 ........................................................................ 93048 ........................................................................ 93049 ........................................................................ 93050 ........................................................................ 93051 ........................................................................ 93052 ........................................................................ 93053 ........................................................................ 93054 ........................................................................ 93055 ........................................................................ 93056 ........................................................................ 93057 ........................................................................ 93058 ........................................................................ 93059 ........................................................................ 93060 ........................................................................ 93061 ........................................................................ 93062 ........................................................................ 93063 ........................................................................ 93064 ........................................................................ 93065 ........................................................................ 93066 ........................................................................ 93067 ........................................................................ 93068 ........................................................................ 93069 ........................................................................ 93070 ........................................................................ 93071 ........................................................................ 93072 ........................................................................ 93073 ........................................................................ 93074 ........................................................................ 93075 ........................................................................ 93076 ........................................................................ 93077 ........................................................................ 93078 ........................................................................ 93079 ........................................................................ 93080 ........................................................................ 93081 ........................................................................ 93082 ........................................................................ 93083 ........................................................................ 93084 ........................................................................ 93085 ........................................................................ 93086 ........................................................................ 93087 ........................................................................ 93088 ........................................................................ 93089 ........................................................................ 93090 ........................................................................ 93091 ........................................................................ 93092 ........................................................................ 93093 ........................................................................ 93094 ........................................................................ 93095 ........................................................................ 93096 ........................................................................ 93097 ........................................................................ 93098 ........................................................................ 93099 ........................................................................ 93100 ........................................................................ 93101 ........................................................................ 93102 ........................................................................ 93103 ........................................................................ 93104 ........................................................................ 93105 ........................................................................ 93106 ........................................................................ 93107 ........................................................................ 93108 ........................................................................ 93109 ........................................................................ 93110 ........................................................................ 93111 ........................................................................ 93112 ........................................................................ 93113 ........................................................................ 93114 ........................................................................ 93115 ........................................................................ 93116 ........................................................................ 93117 ........................................................................ 93118 ........................................................................ 93119 ........................................................................ 93120 ........................................................................ 93121 ........................................................................ 93122 ........................................................................ 93123 ........................................................................ 93124 ........................................................................ 93125 ........................................................................ 93126 ........................................................................ 93127 ........................................................................ 93128 ........................................................................ 93129 ........................................................................ 93130 ........................................................................ 93131 ........................................................................ 93132 ........................................................................ 93133 ........................................................................ 93134 ........................................................................ 93135 ........................................................................ 93136 ........................................................................ 93137 ........................................................................ 93138 ........................................................................ 93139 ........................................................................ 93140 ........................................................................ 93141 ........................................................................ 93142 ........................................................................ 93143 ........................................................................ 93144 ........................................................................ 93145 ........................................................................ 93146 ........................................................................ 93147 ........................................................................ 93148 ........................................................................ 93149 ........................................................................ 93150 ........................................................................ 93151 ........................................................................ 93152 ........................................................................ 93153 ........................................................................ 93154 ........................................................................ 93155 ........................................................................ 93156 ........................................................................ 93157 ........................................................................ 93158 ........................................................................ 93159 ........................................................................ 93160 ........................................................................ 93161 ........................................................................ 93162 ........................................................................ 93163 ........................................................................ 93164 ........................................................................ 93165 ........................................................................ 93166 ........................................................................ 93167 ........................................................................ 93168 ........................................................................ 93169 ........................................................................ 93170 ........................................................................ 93171 ........................................................................ 93172 ........................................................................ 93173 ........................................................................ 93174 ........................................................................ 93175 ........................................................................ 93176 ........................................................................ 93177 ........................................................................ 93178 ........................................................................ 93179 ........................................................................ 93180 ........................................................................ 93181 ........................................................................ 93182 ........................................................................ 93183 ........................................................................ 93184 ........................................................................ 93185 ........................................................................ 93186 ........................................................................ 93187 ........................................................................ 93188 ........................................................................ 93189 ........................................................................ 93190 ........................................................................ 93191 ........................................................................ 93192 ........................................................................ 93193 ........................................................................ 93194 ........................................................................ 93195 ........................................................................ 93196 ........................................................................ 93197 ........................................................................ 93198 ........................................................................ 93199 ........................................................................ 93200 ........................................................................ 93201 ........................................................................ 93202 ........................................................................ 93203 ........................................................................ 93204 ........................................................................ 93205 ........................................................................ 93206 ........................................................................ 93207 ........................................................................ 93208 ........................................................................ 93209 ........................................................................ 93210 ........................................................................ 93211 ........................................................................ 93212 ........................................................................ 93213 ........................................................................ 93214 ........................................................................ 93215 ........................................................................ 93216 ........................................................................ 93217 ........................................................................ 93218 ........................................................................ 93219 ........................................................................ 93220 ........................................................................ 93221 ........................................................................ 93222 ........................................................................ 93223 ........................................................................ 93224 ........................................................................ 93225 ........................................................................ 93226 ........................................................................ 93227 ........................................................................ 93228 ........................................................................ 93229 ........................................................................ 93230 ........................................................................ 93231 ........................................................................ 93232 ........................................................................ 93233 ........................................................................ 93234 ........................................................................ 93235 ........................................................................ 93236 ........................................................................ 93237 ........................................................................ 93238 ........................................................................ 93239 ........................................................................ 93240 ........................................................................ 93241 ........................................................................ 93242 ........................................................................ 93243 ........................................................................ 93244 ........................................................................ 93245 ........................................................................ 93246 ........................................................................ 93247 ........................................................................ 93248 ........................................................................ 93249 ........................................................................ 93250 ........................................................................ 93251 ........................................................................ 93252 ........................................................................ 93253 ........................................................................ 93254 ........................................................................ 93255 ........................................................................ 93256 ........................................................................ 93257 ........................................................................ 93258 ........................................................................ 93259 ........................................................................ 93260 ........................................................................ 93261 ........................................................................ 93262 ........................................................................ 93263 ........................................................................ 93264 ........................................................................ 93265 ........................................................................ 93266 ........................................................................ 93267 ........................................................................ 93268 ........................................................................ 93269 ........................................................................ 93270 ........................................................................ 93271 ........................................................................ 93272 ........................................................................ 93273 ........................................................................ 93274 ........................................................................ 93275 ........................................................................ 93276 ........................................................................ 93277 ........................................................................ 93278 ........................................................................ 93279 ........................................................................ 93280 ........................................................................ 93281 ........................................................................ 93282 ........................................................................ 93283 ........................................................................ 93284 ........................................................................ 93285 ........................................................................ 93286 ........................................................................ 93287 ........................................................................ 93288 ........................................................................ 93289 ........................................................................ 93290 ........................................................................ 93291 ........................................................................ 93292 ........................................................................ 93293 ........................................................................ 93294 ........................................................................ 93295 ........................................................................ 93296 ........................................................................ 93297 ........................................................................ 93298 ........................................................................ 93299 ........................................................................ 93300 ........................................................................ 93301 ........................................................................ 93302 ........................................................................ 93303 ........................................................................ 93304 ........................................................................ 93305 ........................................................................ 93306 ........................................................................ 93307 ........................................................................ 93308 ........................................................................ 93309 ........................................................................ 93310 ........................................................................ 93311 ........................................................................ 93312 ........................................................................ 93313 ........................................................................ 93314 ........................................................................ 93315 ........................................................................ 93316 ........................................................................ 93317 ........................................................................ 93318 ........................................................................ 93319 ........................................................................ 93320 ........................................................................ 93321 ........................................................................ 93322 ........................................................................ 93323 ........................................................................ 93324 ........................................................................ 93325 ........................................................................ 93326 ........................................................................ 93327 ........................................................................ 93328 ........................................................................ 93329 ........................................................................ 93330 ........................................................................ 93331 ........................................................................ 93332 ........................................................................ 93333 ........................................................................ 93334 ........................................................................ 93335 ........................................................................ 93336 ........................................................................ 93337 ........................................................................ 93338 ........................................................................ 93339 ........................................................................ 93340 ........................................................................ 93341 ........................................................................ 93342 ........................................................................ 93343 ........................................................................ 93344 ........................................................................ 93345 ........................................................................ 93346 ........................................................................ 93347 ........................................................................ 93348 ........................................................................ 93349 ........................................................................ 93350 ........................................................................ 93351 ........................................................................ 93352 ........................................................................ 93353 ........................................................................ 93354 ........................................................................ 93355 ........................................................................ 93356 ........................................................................ 93357 ........................................................................ 93358 ........................................................................ 93359 ........................................................................ 93360 ........................................................................ 93361 ........................................................................ 93362 ........................................................................ 93363 ........................................................................ 93364 ........................................................................ 93365 ........................................................................ 93366 ........................................................................ 93367 ........................................................................ 93368 ........................................................................ 93369 ........................................................................ 93370 ........................................................................ 93371 ........................................................................ 93372 ........................................................................ 93373 ........................................................................ 93374 ........................................................................ 93375 ........................................................................ 93376 ........................................................................ 93377 ........................................................................ 93378 ........................................................................ 93379 ........................................................................ 93380 ........................................................................ 93381 ........................................................................ 93382 ........................................................................ 93383 ........................................................................ 93384 ........................................................................ 93385 ........................................................................ 93386 ........................................................................ 93387 ........................................................................ 93388 ........................................................................ 93389 ........................................................................ 93390 ........................................................................ 93391 ........................................................................ 93392 ........................................................................ 93393 ........................................................................ 93394 ........................................................................ 93395 ........................................................................ 93396 ........................................................................ 93397 ........................................................................ 93398 ........................................................................ 93399 ........................................................................ 93400 ........................................................................ 93401 ........................................................................ 93402 ........................................................................ 93403 ........................................................................ 93404 ........................................................................ 93405 ........................................................................ 93406 ........................................................................ 93407 ........................................................................ 93408 ........................................................................ 93409 ........................................................................ 93410 ........................................................................ 93411 ........................................................................ 93412 ........................................................................ 93413 ........................................................................ 93414 ........................................................................ 93415 ........................................................................ 93416 ........................................................................ 93417 ........................................................................ 93418 ........................................................................ 93419 ........................................................................ 93420 ........................................................................ 93421 ........................................................................ 93422 ........................................................................ 93423 ........................................................................ 93424 ........................................................................ 93425 ........................................................................ 93426 ........................................................................ 93427 ........................................................................ 93428 ........................................................................ 93429 ........................................................................ 93430 ........................................................................ 93431 ........................................................................ 93432 ........................................................................ 93433 ........................................................................ 93434 ........................................................................ 93435 ........................................................................ 93436 ........................................................................ 93437 ........................................................................ 93438 ........................................................................ 93439 ........................................................................ 93440 ........................................................................ 93441 ........................................................................ 93442 ........................................................................ 93443 ........................................................................ 93444 ........................................................................ 93445 ........................................................................ 93446 ........................................................................ 93447 ........................................................................ 93448 ........................................................................ 93449 ........................................................................ 93450 ........................................................................ 93451 ........................................................................ 93452 ........................................................................ 93453 ........................................................................ 93454 ........................................................................ 93455 ........................................................................ 93456 ........................................................................ 93457 ........................................................................ 93458 ........................................................................ 93459 ........................................................................ 93460 ........................................................................ 93461 ........................................................................ 93462 ........................................................................ 93463 ........................................................................ 93464 ........................................................................ 93465 ........................................................................ 93466 ........................................................................ 93467 ........................................................................ 93468 ........................................................................ 93469 ........................................................................ 93470 ........................................................................ 93471 ........................................................................ 93472 ........................................................................ 93473 ........................................................................ 93474 ........................................................................ 93475 ........................................................................ 93476 ........................................................................ 93477 ........................................................................ 93478 ........................................................................ 93479 ........................................................................ 93480 ........................................................................ 93481 ........................................................................ 93482 ........................................................................ 93483 ........................................................................ 93484 ........................................................................ 93485 ........................................................................ 93486 ........................................................................ 93487 ........................................................................ 93488 ........................................................................ 93489 ........................................................................ 93490 ........................................................................ 93491 ........................................................................ 93492 ........................................................................ 93493 ........................................................................ 93494 ........................................................................ 93495 ........................................................................ 93496 ........................................................................ 93497 ........................................................................ 93498 ........................................................................ 93499 ........................................................................ 93500 ........................................................................ 93501 ........................................................................ 93502 ........................................................................ 93503 ........................................................................ 93504 ........................................................................ 93505 ........................................................................ 93506 ........................................................................ 93507 ........................................................................ 93508 ........................................................................ 93509 ........................................................................ 93510 ........................................................................ 93511 ........................................................................ 93512 ........................................................................ 93513 ........................................................................ 93514 ........................................................................ 93515 ........................................................................ 93516 ........................................................................ 93517 ........................................................................ 93518 ........................................................................ 93519 ........................................................................ 93520 ........................................................................ 93521 ........................................................................ 93522 ........................................................................ 93523 ........................................................................ 93524 ........................................................................ 93525 ........................................................................ 93526 ........................................................................ 93527 ........................................................................ 93528 ........................................................................ 93529 ........................................................................ 93530 ........................................................................ 93531 ........................................................................ 93532 ........................................................................ 93533 ........................................................................ 93534 ........................................................................ 93535 ........................................................................ 93536 ........................................................................ 93537 ........................................................................ 93538 ........................................................................ 93539 ........................................................................ 93540 ........................................................................ 93541 ........................................................................ 93542 ........................................................................ 93543 ........................................................................ 93544 ........................................................................ 93545 ........................................................................ 93546 ........................................................................ 93547 ........................................................................ 93548 ........................................................................ 93549 ........................................................................ 93550 ........................................................................ 93551 ........................................................................ 93552 ........................................................................ 93553 ........................................................................ 93554 ........................................................................ 93555 ........................................................................ 93556 ........................................................................ 93557 ........................................................................ 93558 ........................................................................ 93559 ........................................................................ 93560 ........................................................................ 93561 ........................................................................ 93562 ........................................................................ 93563 ........................................................................ 93564 ........................................................................ 93565 ........................................................................ 93566 ........................................................................ 93567 ........................................................................ 93568 ........................................................................ 93569 ........................................................................ 93570 ........................................................................ 93571 ........................................................................ 93572 ........................................................................ 93573 ........................................................................ 93574 ........................................................................ 93575 ........................................................................ 93576 ........................................................................ 93577 ........................................................................ 93578 ........................................................................ 93579 ........................................................................ 93580 ........................................................................ 93581 ........................................................................ 93582 ........................................................................ 93583 ........................................................................ 93584 ........................................................................ 93585 ........................................................................ 93586 ........................................................................ 93587 ........................................................................ 93588 ........................................................................ 93589 ........................................................................ 93590 ........................................................................ 93591 ........................................................................ 93592 ........................................................................ 93593 ........................................................................ 93594 ........................................................................ 93595 ........................................................................ 93596 ........................................................................ 93597 ........................................................................ 93598 ........................................................................ 93599 ........................................................................ 93600 ........................................................................ 93601 ........................................................................ 93602 ........................................................................ 93603 ........................................................................ 93604 ........................................................................ 93605 ........................................................................ 93606 ........................................................................ 93607 ........................................................................ 93608 ........................................................................ 93609 ........................................................................ 93610 ........................................................................ 93611 ........................................................................ 93612 ........................................................................ 93613 ........................................................................ 93614 ........................................................................ 93615 ........................................................................ 93616 ........................................................................ 93617 ........................................................................ 93618 ........................................................................ 93619 ........................................................................ 93620 ........................................................................ 93621 ........................................................................ 93622 ........................................................................ 93623 ........................................................................ 93624 ........................................................................ 93625 ........................................................................ 93626 ........................................................................ 93627 ........................................................................ 93628 ........................................................................ 93629 ........................................................................ 93630 ........................................................................ 93631 ........................................................................ 93632 ........................................................................ 93633 ........................................................................ 93634 ........................................................................ 93635 ........................................................................ 93636 ........................................................................ 93637 ........................................................................ 93638 ........................................................................ 93639 ........................................................................ 93640 ........................................................................ 93641 ........................................................................ 93642 ........................................................................ 93643 ........................................................................ 93644 ........................................................................ 93645 ........................................................................ 93646 ........................................................................ 93647 ........................................................................ 93648 ........................................................................ 93649 ........................................................................ 93650 ........................................................................ 93651 ........................................................................ 93652 ........................................................................ 93653 ........................................................................ 93654 ........................................................................ 93655 ........................................................................ 93656 ........................................................................ 93657 ........................................................................ 93658 ........................................................................ 93659 ........................................................................ 93660 ........................................................................ 93661 ........................................................................ 93662 ........................................................................ 93663 ........................................................................ 93664 ........................................................................ 93665 ........................................................................ 93666 ........................................................................ 93667 ........................................................................ 93668 ........................................................................ 93669 ........................................................................ 93670 ........................................................................ 93671 ........................................................................ 93672 ........................................................................ 93673 ........................................................................ 93674 ........................................................................ 93675 ........................................................................ 93676 ........................................................................ 93677 ........................................................................ 93678 ........................................................................ 93679 ........................................................................ 93680 ........................................................................ 93681 ........................................................................ 93682 ........................................................................ 93683 ........................................................................ 93684 ........................................................................ 93685 ........................................................................ 93686 ........................................................................ 93687 ........................................................................ 93688 ........................................................................ 93689 ........................................................................ 93690 ........................................................................ 93691 ........................................................................ 93692 ........................................................................ 93693 ........................................................................ 93694 ........................................................................ 93695 ........................................................................ 93696 ........................................................................ 93697 ........................................................................ 93698 ........................................................................ 93699 ........................................................................ 93700 ........................................................................ 93701 ........................................................................ 93702 ........................................................................ 93703 ........................................................................ 93704 ........................................................................ 93705 ........................................................................ 93706 ........................................................................ 93707 ........................................................................ 93708 ........................................................................ 93709 ........................................................................ 93710 ........................................................................ 93711 ........................................................................ 93712 ........................................................................ 93713 ........................................................................ 93714 ........................................................................ 93715 ........................................................................ 93716 ........................................................................ 93717 ........................................................................ 93718 ........................................................................ 93719 ........................................................................ 93720 ........................................................................ 93721 ........................................................................ 93722 ........................................................................ 93723 ........................................................................ 93724 ........................................................................ 93725 ........................................................................ 93726 ........................................................................ 93727 ........................................................................ 93728 ........................................................................ 93729 ........................................................................ 93730 ........................................................................ 93731 ........................................................................ 93732 ........................................................................ 93733 ........................................................................ 93734 ........................................................................ 93735 ........................................................................ 93736 ........................................................................ 93737 ........................................................................ 93738 ........................................................................ 93739 ........................................................................ 93740 ........................................................................ 93741 ........................................................................ 93742 ........................................................................ 93743 ........................................................................ 93744 ........................................................................ 93745 ........................................................................ 93746 ........................................................................ 93747 ........................................................................ 93748 ........................................................................ 93749 ........................................................................ 93750 ........................................................................ 93751 ........................................................................ 93752 ........................................................................ 93753 ........................................................................ 93754 ........................................................................ 93755 ........................................................................ 93756 ........................................................................ 93757 ........................................................................ 93758 ........................................................................ 93759 ........................................................................ 93760 ........................................................................ 93761 ........................................................................ 93762 ........................................................................ 93763 ........................................................................ 93764 ........................................................................ 93765 ........................................................................ 93766 ........................................................................ 93767 ........................................................................ 93768 ........................................................................ 93769 ........................................................................ 93770 ........................................................................ 93771 ........................................................................ 93772 ........................................................................ 93773 ........................................................................ 93774 ........................................................................ 93775 ........................................................................ 93776 ........................................................................ 93777 ........................................................................ 93778 ........................................................................ 93779 ........................................................................ 93780 ........................................................................ 93781 ........................................................................ 93782 ........................................................................ 93783 ........................................................................ 93784 ........................................................................ 93785 ........................................................................ 93786 ........................................................................ 93787 ........................................................................ 93788 ........................................................................ 93789 ........................................................................ 93790 ........................................................................ 93791 ........................................................................ 93792 ........................................................................ 93793 ........................................................................ 93794 ........................................................................ 93795 ........................................................................ 93796 ........................................................................ 93797 ........................................................................ 93798 ........................................................................ 93799 ........................................................................ 93800 ........................................................................ 93801 ........................................................................ 93802 ........................................................................ 93803 ........................................................................ 93804 ........................................................................ 93805 ........................................................................ 93806 ........................................................................ 93807 ........................................................................ 93808 ........................................................................ 93809 ........................................................................ 93810 ........................................................................ 93811 ........................................................................ 93812 ........................................................................ 93813 ........................................................................ 93814 ........................................................................ 93815 ........................................................................ 93816 ........................................................................ 93817 ........................................................................ 93818 ........................................................................ 93819 ........................................................................ 93820 ........................................................................ 93821 ........................................................................ 93822 ........................................................................ 93823 ........................................................................ 93824 ........................................................................ 93825 ........................................................................ 93826 ........................................................................ 93827 ........................................................................ 93828 ........................................................................ 93829 ........................................................................ 93830 ........................................................................ 93831 ........................................................................ 93832 ........................................................................ 93833 ........................................................................ 93834 ........................................................................ 93835 ........................................................................ 93836 ........................................................................ 93837 ........................................................................ 93838 ........................................................................ 93839 ........................................................................ 93840 ........................................................................ 93841 ........................................................................ 93842 ........................................................................ 93843 ........................................................................ 93844 ........................................................................ 93845 ........................................................................ 93846 ........................................................................ 93847 ........................................................................ 93848 ........................................................................ 93849 ........................................................................ 93850 ........................................................................ 93851 ........................................................................ 93852 ........................................................................ 93853 ........................................................................ 93854 ........................................................................ 93855 ........................................................................ 93856 ........................................................................ 93857 ........................................................................ 93858 ........................................................................ 93859 ........................................................................ 93860 ........................................................................ 93861 ........................................................................ 93862 ........................................................................ 93863 ........................................................................ 93864 ........................................................................ 93865 ........................................................................ 93866 ........................................................................ 93867 ........................................................................ 93868 ........................................................................ 93869 ........................................................................ 93870 ........................................................................ 93871 ........................................................................ 93872 ........................................................................ 93873 ........................................................................ 93874 ........................................................................ 93875 ........................................................................ 93876 ........................................................................ 93877 ........................................................................ 93878 ........................................................................ 93879 ........................................................................ 93880 ........................................................................ 93881 ........................................................................ 93882 ........................................................................ 93883 ........................................................................ 93884 ........................................................................ 93885 ........................................................................ 93886 ........................................................................ 93887 ........................................................................ 93888 ........................................................................ 93889 ........................................................................ 93890 ........................................................................ 93891 ........................................................................ 93892 ........................................................................ 93893 ........................................................................ 93894 ........................................................................ 93895 ........................................................................ 93896 ........................................................................ 93897 ........................................................................ 93898 ........................................................................ 93899 ........................................................................ 93900 ........................................................................ 93901 ........................................................................ 93902 ........................................................................ 93903 ........................................................................ 93904 ........................................................................ 93905 ........................................................................ 93906 ........................................................................ 93907 ........................................................................ 93908 ........................................................................ 93909 ........................................................................ 93910 ........................................................................ 93911 ........................................................................ 93912 ........................................................................ 93913 ........................................................................ 93914 ........................................................................ 93915 ........................................................................ 93916 ........................................................................ 93917 ........................................................................ 93918 ........................................................................ 93919 ........................................................................ 93920 ........................................................................ 93921 ........................................................................ 93922 ........................................................................ 93923 ........................................................................ 93924 ........................................................................ 93925 ........................................................................ 93926 ........................................................................ 93927 ........................................................................ 93928 ........................................................................ 93929 ........................................................................ 93930 ........................................................................ 93931 ........................................................................ 93932 ........................................................................ 93933 ........................................................................ 93934 ........................................................................ 93935 ........................................................................ 93936 ........................................................................ 93937 ........................................................................ 93938 ........................................................................ 93939 ........................................................................ 93940 ........................................................................ 93941 ........................................................................ 93942 ........................................................................ 93943 ........................................................................ 93944 ........................................................................ 93945 ........................................................................ 93946 ........................................................................ 93947 ........................................................................ 93948 ........................................................................ 93949 ........................................................................ 93950 ........................................................................ 93951 ........................................................................ 93952 ........................................................................ 93953 ........................................................................ 93954 ........................................................................ 93955 ........................................................................ 93956 ........................................................................ 93957 ........................................................................ 93958 ........................................................................ 93959 ........................................................................ 93960 ........................................................................ 93961 ........................................................................ 93962 ........................................................................ 93963 ........................................................................ 93964 ........................................................................ 93965 ........................................................................ 93966 ........................................................................ 93967 ........................................................................ 93968 ........................................................................ 93969 ........................................................................ 93970 ........................................................................ 93971 ........................................................................ 93972 ........................................................................ 93973 ........................................................................ 93974 ........................................................................ 93975 ........................................................................ 93976 ........................................................................ 93977 ........................................................................ 93978 ........................................................................ 93979 ........................................................................ 93980 ........................................................................ 93981 ........................................................................ 93982 ........................................................................ 93983 ........................................................................ 93984 ........................................................................ 93985 ........................................................................ 93986 ........................................................................ 93987 ........................................................................ 93988 ........................................................................ 93989 ........................................................................ 93990 ........................................................................ 93991 ........................................................................ 93992 ........................................................................ 93993 ........................................................................ 93994 ........................................................................ 93995 ........................................................................ 93996 ........................................................................ 93997 ........................................................................ 93998 ........................................................................ 93999 ........................................................................ 94000 ........................................................................ 94001 ........................................................................ 94002 ........................................................................ 94003 ........................................................................ 94004 ........................................................................ 94005 ........................................................................ 94006 ........................................................................ 94007 ........................................................................ 94008 ........................................................................ 94009 ........................................................................ 94010 ........................................................................ 94011 ........................................................................ 94012 ........................................................................ 94013 ........................................................................ 94014 ........................................................................ 94015 ........................................................................ 94016 ........................................................................ 94017 ........................................................................ 94018 ........................................................................ 94019 ........................................................................ 94020 ........................................................................ 94021 ........................................................................ 94022 ........................................................................ 94023 ........................................................................ 94024 ........................................................................ 94025 ........................................................................ 94026 ........................................................................ 94027 ........................................................................ 94028 ........................................................................ 94029 ........................................................................ 94030 ........................................................................ 94031 ........................................................................ 94032 ........................................................................ 94033 ........................................................................ 94034 ........................................................................ 94035 ........................................................................ 94036 ........................................................................ 94037 ........................................................................ 94038 ........................................................................ 94039 ........................................................................ 94040 ........................................................................ 94041 ........................................................................ 94042 ........................................................................ 94043 ........................................................................ 94044 ........................................................................ 94045 ........................................................................ 94046 ........................................................................ 94047 ........................................................................ 94048 ........................................................................ 94049 ........................................................................ 94050 ........................................................................ 94051 ........................................................................ 94052 ........................................................................ 94053 ........................................................................ 94054 ........................................................................ 94055 ........................................................................ 94056 ........................................................................ 94057 ........................................................................ 94058 ........................................................................ 94059 ........................................................................ 94060 ........................................................................ 94061 ........................................................................ 94062 ........................................................................ 94063 ........................................................................ 94064 ........................................................................ 94065 ........................................................................ 94066 ........................................................................ 94067 ........................................................................ 94068 ........................................................................ 94069 ........................................................................ 94070 ........................................................................ 94071 ........................................................................ 94072 ........................................................................ 94073 ........................................................................ 94074 ........................................................................ 94075 ........................................................................ 94076 ........................................................................ 94077 ........................................................................ 94078 ........................................................................ 94079 ........................................................................ 94080 ........................................................................ 94081 ........................................................................ 94082 ........................................................................ 94083 ........................................................................ 94084 ........................................................................ 94085 ........................................................................ 94086 ........................................................................ 94087 ........................................................................ 94088 ........................................................................ 94089 ........................................................................ 94090 ........................................................................ 94091 ........................................................................ 94092 ........................................................................ 94093 ........................................................................ 94094 ........................................................................ 94095 ........................................................................ 94096 ........................................................................ 94097 ........................................................................ 94098 ........................................................................ 94099 ........................................................................ 94100 ........................................................................ 94101 ........................................................................ 94102 ........................................................................ 94103 ........................................................................ 94104 ........................................................................ 94105 ........................................................................ 94106 ........................................................................ 94107 ........................................................................ 94108 ........................................................................ 94109 ........................................................................ 94110 ........................................................................ 94111 ........................................................................ 94112 ........................................................................ 94113 ........................................................................ 94114 ........................................................................ 94115 ........................................................................ 94116 ........................................................................ 94117 ........................................................................ 94118 ........................................................................ 94119 ........................................................................ 94120 ........................................................................ 94121 ........................................................................ 94122 ........................................................................ 94123 ........................................................................ 94124 ........................................................................ 94125 ........................................................................ 94126 ........................................................................ 94127 ........................................................................ 94128 ........................................................................ 94129 ........................................................................ 94130 ........................................................................ 94131 ........................................................................ 94132 ........................................................................ 94133 ........................................................................ 94134 ........................................................................ 94135 ........................................................................ 94136 ........................................................................ 94137 ........................................................................ 94138 ........................................................................ 94139 ........................................................................ 94140 ........................................................................ 94141 ........................................................................ 94142 ........................................................................ 94143 ........................................................................ 94144 ........................................................................ 94145 ........................................................................ 94146 ........................................................................ 94147 ........................................................................ 94148 ........................................................................ 94149 ........................................................................ 94150 ........................................................................ 94151 ........................................................................ 94152 ........................................................................ 94153 ........................................................................ 94154 ........................................................................ 94155 ........................................................................ 94156 ........................................................................ 94157 ........................................................................ 94158 ........................................................................ 94159 ........................................................................ 94160 ........................................................................ 94161 ........................................................................ 94162 ........................................................................ 94163 ........................................................................ 94164 ........................................................................ 94165 ........................................................................ 94166 ........................................................................ 94167 ........................................................................ 94168 ........................................................................ 94169 ........................................................................ 94170 ........................................................................ 94171 ........................................................................ 94172 ........................................................................ 94173 ........................................................................ 94174 ........................................................................ 94175 ........................................................................ 94176 ........................................................................ 94177 ........................................................................ 94178 ........................................................................ 94179 ........................................................................ 94180 ........................................................................ 94181 ........................................................................ 94182 ........................................................................ 94183 ........................................................................ 94184 ........................................................................ 94185 ........................................................................ 94186 ........................................................................ 94187 ........................................................................ 94188 ........................................................................ 94189 ........................................................................ 94190 ........................................................................ 94191 ........................................................................ 94192 ........................................................................ 94193 ........................................................................ 94194 ........................................................................ 94195 ........................................................................ 94196 ........................................................................ 94197 ........................................................................ 94198 ........................................................................ 94199 ........................................................................ 94200 ........................................................................ 94201 ........................................................................ 94202 ........................................................................ 94203 ........................................................................ 94204 ........................................................................ 94205 ........................................................................ 94206 ........................................................................ 94207 ........................................................................ 94208 ........................................................................ 94209 ........................................................................ 94210 ........................................................................ 94211 ........................................................................ 94212 ........................................................................ 94213 ........................................................................ 94214 ........................................................................ 94215 ........................................................................ 94216 ........................................................................ 94217 ........................................................................ 94218 ........................................................................ 94219 ........................................................................ 94220 ........................................................................ 94221 ........................................................................ 94222 ........................................................................ 94223 ........................................................................ 94224 ........................................................................ 94225 ........................................................................ 94226 ........................................................................ 94227 ........................................................................ 94228 ........................................................................ 94229 ........................................................................ 94230 ........................................................................ 94231 ........................................................................ 94232 ........................................................................ 94233 ........................................................................ 94234 ........................................................................ 94235 ........................................................................ 94236 ........................................................................ 94237 ........................................................................ 94238 ........................................................................ 94239 ........................................................................ 94240 ........................................................................ 94241 ........................................................................ 94242 ........................................................................ 94243 ........................................................................ 94244 ........................................................................ 94245 ........................................................................ 94246 ........................................................................ 94247 ........................................................................ 94248 ........................................................................ 94249 ........................................................................ 94250 ........................................................................ 94251 ........................................................................ 94252 ........................................................................ 94253 ........................................................................ 94254 ........................................................................ 94255 ........................................................................ 94256 ........................................................................ 94257 ........................................................................ 94258 ........................................................................ 94259 ........................................................................ 94260 ........................................................................ 94261 ........................................................................ 94262 ........................................................................ 94263 ........................................................................ 94264 ........................................................................ 94265 ........................................................................ 94266 ........................................................................ 94267 ........................................................................ 94268 ........................................................................ 94269 ........................................................................ 94270 ........................................................................ 94271 ........................................................................ 94272 ........................................................................ 94273 ........................................................................ 94274 ........................................................................ 94275 ........................................................................ 94276 ........................................................................ 94277 ........................................................................ 94278 ........................................................................ 94279 ........................................................................ 94280 ........................................................................ 94281 ........................................................................ 94282 ........................................................................ 94283 ........................................................................ 94284 ........................................................................ 94285 ........................................................................ 94286 ........................................................................ 94287 ........................................................................ 94288 ........................................................................ 94289 ........................................................................ 94290 ........................................................................ 94291 ........................................................................ 94292 ........................................................................ 94293 ........................................................................ 94294 ........................................................................ 94295 ........................................................................ 94296 ........................................................................ 94297 ........................................................................ 94298 ........................................................................ 94299 ........................................................................ 94300 ........................................................................ 94301 ........................................................................ 94302 ........................................................................ 94303 ........................................................................ 94304 ........................................................................ 94305 ........................................................................ 94306 ........................................................................ 94307 ........................................................................ 94308 ........................................................................ 94309 ........................................................................ 94310 ........................................................................ 94311 ........................................................................ 94312 ........................................................................ 94313 ........................................................................ 94314 ........................................................................ 94315 ........................................................................ 94316 ........................................................................ 94317 ........................................................................ 94318 ........................................................................ 94319 ........................................................................ 94320 ........................................................................ 94321 ........................................................................ 94322 ........................................................................ 94323 ........................................................................ 94324 ........................................................................ 94325 ........................................................................ 94326 ........................................................................ 94327 ........................................................................ 94328 ........................................................................ 94329 ........................................................................ 94330 ........................................................................ 94331 ........................................................................ 94332 ........................................................................ 94333 ........................................................................ 94334 ........................................................................ 94335 ........................................................................ 94336 ........................................................................ 94337 ........................................................................ 94338 ........................................................................ 94339 ........................................................................ 94340 ........................................................................ 94341 ........................................................................ 94342 ........................................................................ 94343 ........................................................................ 94344 ........................................................................ 94345 ........................................................................ 94346 ........................................................................ 94347 ........................................................................ 94348 ........................................................................ 94349 ........................................................................ 94350 ........................................................................ 94351 ........................................................................ 94352 ........................................................................ 94353 ........................................................................ 94354 ........................................................................ 94355 ........................................................................ 94356 ........................................................................ 94357 ........................................................................ 94358 ........................................................................ 94359 ........................................................................ 94360 ........................................................................ 94361 ........................................................................ 94362 ........................................................................ 94363 ........................................................................ 94364 ........................................................................ 94365 ........................................................................ 94366 ........................................................................ 94367 ........................................................................ 94368 ........................................................................ 94369 ........................................................................ 94370 ........................................................................ 94371 ........................................................................ 94372 ........................................................................ 94373 ........................................................................ 94374 ........................................................................ 94375 ........................................................................ 94376 ........................................................................ 94377 ........................................................................ 94378 ........................................................................ 94379 ........................................................................ 94380 ........................................................................ 94381 ........................................................................ 94382 ........................................................................ 94383 ........................................................................ 94384 ........................................................................ 94385 ........................................................................ 94386 ........................................................................ 94387 ........................................................................ 94388 ........................................................................ 94389 ........................................................................ 94390 ........................................................................ 94391 ........................................................................ 94392 ........................................................................ 94393 ........................................................................ 94394 ........................................................................ 94395 ........................................................................ 94396 ........................................................................ 94397 ........................................................................ 94398 ........................................................................ 94399 ........................................................................ 94400 ........................................................................ 94401 ........................................................................ 94402 ........................................................................ 94403 ........................................................................ 94404 ........................................................................ 94405 ........................................................................ 94406 ........................................................................ 94407 ........................................................................ 94408 ........................................................................ 94409 ........................................................................ 94410 ........................................................................ 94411 ........................................................................ 94412 ........................................................................ 94413 ........................................................................ 94414 ........................................................................ 94415 ........................................................................ 94416 ........................................................................ 94417 ........................................................................ 94418 ........................................................................ 94419 ........................................................................ 94420 ........................................................................ 94421 ........................................................................ 94422 ........................................................................ 94423 ........................................................................ 94424 ........................................................................ 94425 ........................................................................ 94426 ........................................................................ 94427 ........................................................................ 94428 ........................................................................ 94429 ........................................................................ 94430 ........................................................................ 94431 ........................................................................ 94432 ........................................................................ 94433 ........................................................................ 94434 ........................................................................ 94435 ........................................................................ 94436 ........................................................................ 94437 ........................................................................ 94438 ........................................................................ 94439 ........................................................................ 94440 ........................................................................ 94441 ........................................................................ 94442 ........................................................................ 94443 ........................................................................ 94444 ........................................................................ 94445 ........................................................................ 94446 ........................................................................ 94447 ........................................................................ 94448 ........................................................................ 94449 ........................................................................ 94450 ........................................................................ 94451 ........................................................................ 94452 ........................................................................ 94453 ........................................................................ 94454 ........................................................................ 94455 ........................................................................ 94456 ........................................................................ 94457 ........................................................................ 94458 ........................................................................ 94459 ........................................................................ 94460 ........................................................................ 94461 ........................................................................ 94462 ........................................................................ 94463 ........................................................................ 94464 ........................................................................ 94465 ........................................................................ 94466 ........................................................................ 94467 ........................................................................ 94468 ........................................................................ 94469 ........................................................................ 94470 ........................................................................ 94471 ........................................................................ 94472 ........................................................................ 94473 ........................................................................ 94474 ........................................................................ 94475 ........................................................................ 94476 ........................................................................ 94477 ........................................................................ 94478 ........................................................................ 94479 ........................................................................ 94480 ........................................................................ 94481 ........................................................................ 94482 ........................................................................ 94483 ........................................................................ 94484 ........................................................................ 94485 ........................................................................ 94486 ........................................................................ 94487 ........................................................................ 94488 ........................................................................ 94489 ........................................................................ 94490 ........................................................................ 94491 ........................................................................ 94492 ........................................................................ 94493 ........................................................................ 94494 ........................................................................ 94495 ........................................................................ 94496 ........................................................................ 94497 ........................................................................ 94498 ........................................................................ 94499 ........................................................................ 94500 ........................................................................ 94501 ........................................................................ 94502 ........................................................................ 94503 ........................................................................ 94504 ........................................................................ 94505 ........................................................................ 94506 ........................................................................ 94507 ........................................................................ 94508 ........................................................................ 94509 ........................................................................ 94510 ........................................................................ 94511 ........................................................................ 94512 ........................................................................ 94513 ........................................................................ 94514 ........................................................................ 94515 ........................................................................ 94516 ........................................................................ 94517 ........................................................................ 94518 ........................................................................ 94519 ........................................................................ 94520 ........................................................................ 94521 ........................................................................ 94522 ........................................................................ 94523 ........................................................................ 94524 ........................................................................ 94525 ........................................................................ 94526 ........................................................................ 94527 ........................................................................ 94528 ........................................................................ 94529 ........................................................................ 94530 ........................................................................ 94531 ........................................................................ 94532 ........................................................................ 94533 ........................................................................ 94534 ........................................................................ 94535 ........................................................................ 94536 ........................................................................ 94537 ........................................................................ 94538 ........................................................................ 94539 ........................................................................ 94540 ........................................................................ 94541 ........................................................................ 94542 ........................................................................ 94543 ........................................................................ 94544 ........................................................................ 94545 ........................................................................ 94546 ........................................................................ 94547 ........................................................................ 94548 ........................................................................ 94549 ........................................................................ 94550 ........................................................................ 94551 ........................................................................ 94552 ........................................................................ 94553 ........................................................................ 94554 ........................................................................ 94555 ........................................................................ 94556 ........................................................................ 94557 ........................................................................ 94558 ........................................................................ 94559 ........................................................................ 94560 ........................................................................ 94561 ........................................................................ 94562 ........................................................................ 94563 ........................................................................ 94564 ........................................................................ 94565 ........................................................................ 94566 ........................................................................ 94567 ........................................................................ 94568 ........................................................................ 94569 ........................................................................ 94570 ........................................................................ 94571 ........................................................................ 94572 ........................................................................ 94573 ........................................................................ 94574 ........................................................................ 94575 ........................................................................ 94576 ........................................................................ 94577 ........................................................................ 94578 ........................................................................ 94579 ........................................................................ 94580 ........................................................................ 94581 ........................................................................ 94582 ........................................................................ 94583 ........................................................................ 94584 ........................................................................ 94585 ........................................................................ 94586 ........................................................................ 94587 ........................................................................ 94588 ........................................................................ 94589 ........................................................................ 94590 ........................................................................ 94591 ........................................................................ 94592 ........................................................................ 94593 ........................................................................ 94594 ........................................................................ 94595 ........................................................................ 94596 ........................................................................ 94597 ........................................................................ 94598 ........................................................................ 94599 ........................................................................ 94600 ........................................................................ 94601 ........................................................................ 94602 ........................................................................ 94603 ........................................................................ 94604 ........................................................................ 94605 ........................................................................ 94606 ........................................................................ 94607 ........................................................................ 94608 ........................................................................ 94609 ........................................................................ 94610 ........................................................................ 94611 ........................................................................ 94612 ........................................................................ 94613 ........................................................................ 94614 ........................................................................ 94615 ........................................................................ 94616 ........................................................................ 94617 ........................................................................ 94618 ........................................................................ 94619 ........................................................................ 94620 ........................................................................ 94621 ........................................................................ 94622 ........................................................................ 94623 ........................................................................ 94624 ........................................................................ 94625 ........................................................................ 94626 ........................................................................ 94627 ........................................................................ 94628 ........................................................................ 94629 ........................................................................ 94630 ........................................................................ 94631 ........................................................................ 94632 ........................................................................ 94633 ........................................................................ 94634 ........................................................................ 94635 ........................................................................ 94636 ........................................................................ 94637 ........................................................................ 94638 ........................................................................ 94639 ........................................................................ 94640 ........................................................................ 94641 ........................................................................ 94642 ........................................................................ 94643 ........................................................................ 94644 ........................................................................ 94645 ........................................................................ 94646 ........................................................................ 94647 ........................................................................ 94648 ........................................................................ 94649 ........................................................................ 94650 ........................................................................ 94651 ........................................................................ 94652 ........................................................................ 94653 ........................................................................ 94654 ........................................................................ 94655 ........................................................................ 94656 ........................................................................ 94657 ........................................................................ 94658 ........................................................................ 94659 ........................................................................ 94660 ........................................................................ 94661 ........................................................................ 94662 ........................................................................ 94663 ........................................................................ 94664 ........................................................................ 94665 ........................................................................ 94666 ........................................................................ 94667 ........................................................................ 94668 ........................................................................ 94669 ........................................................................ 94670 ........................................................................ 94671 ........................................................................ 94672 ........................................................................ 94673 ........................................................................ 94674 ........................................................................ 94675 ........................................................................ 94676 ........................................................................ 94677 ........................................................................ 94678 ........................................................................ 94679 ........................................................................ 94680 ........................................................................ 94681 ........................................................................ 94682 ........................................................................ 94683 ........................................................................ 94684 ........................................................................ 94685 ........................................................................ 94686 ........................................................................ 94687 ........................................................................ 94688 ........................................................................ 94689 ........................................................................ 94690 ........................................................................ 94691 ........................................................................ 94692 ........................................................................ 94693 ........................................................................ 94694 ........................................................................ 94695 ........................................................................ 94696 ........................................................................ 94697 ........................................................................ 94698 ........................................................................ 94699 ........................................................................ 94700 ........................................................................ 94701 ........................................................................ 94702 ........................................................................ 94703 ........................................................................ 94704 ........................................................................ 94705 ........................................................................ 94706 ........................................................................ 94707 ........................................................................ 94708 ........................................................................ 94709 ........................................................................ 94710 ........................................................................ 94711 ........................................................................ 94712 ........................................................................ 94713 ........................................................................ 94714 ........................................................................ 94715 ........................................................................ 94716 ........................................................................ 94717 ........................................................................ 94718 ........................................................................ 94719 ........................................................................ 94720 ........................................................................ 94721 ........................................................................ 94722 ........................................................................ 94723 ........................................................................ 94724 ........................................................................ 94725 ........................................................................ 94726 ........................................................................ 94727 ........................................................................ 94728 ........................................................................ 94729 ........................................................................ 94730 ........................................................................ 94731 ........................................................................ 94732 ........................................................................ 94733 ........................................................................ 94734 ........................................................................ 94735 ........................................................................ 94736 ........................................................................ 94737 ........................................................................ 94738 ........................................................................ 94739 ........................................................................ 94740 ........................................................................ 94741 ........................................................................ 94742 ........................................................................ 94743 ........................................................................ 94744 ........................................................................ 94745 ........................................................................ 94746 ........................................................................ 94747 ........................................................................ 94748 ........................................................................ 94749 ........................................................................ 94750 ........................................................................ 94751 ........................................................................ 94752 ........................................................................ 94753 ........................................................................ 94754 ........................................................................ 94755 ........................................................................ 94756 ........................................................................ 94757 ........................................................................ 94758 ........................................................................ 94759 ........................................................................ 94760 ........................................................................ 94761 ........................................................................ 94762 ........................................................................ 94763 ........................................................................ 94764 ........................................................................ 94765 ........................................................................ 94766 ........................................................................ 94767 ........................................................................ 94768 ........................................................................ 94769 ........................................................................ 94770 ........................................................................ 94771 ........................................................................ 94772 ........................................................................ 94773 ........................................................................ 94774 ........................................................................ 94775 ........................................................................ 94776 ........................................................................ 94777 ........................................................................ 94778 ........................................................................ 94779 ........................................................................ 94780 ........................................................................ 94781 ........................................................................ 94782 ........................................................................ 94783 ........................................................................ 94784 ........................................................................ 94785 ........................................................................ 94786 ........................................................................ 94787 ........................................................................ 94788 ........................................................................ 94789 ........................................................................ 94790 ........................................................................ 94791 ........................................................................ 94792 ........................................................................ 94793 ........................................................................ 94794 ........................................................................ 94795 ........................................................................ 94796 ........................................................................ 94797 ........................................................................ 94798 ........................................................................ 94799 ........................................................................ 94800 ........................................................................ 94801 ........................................................................ 94802 ........................................................................ 94803 ........................................................................ 94804 ........................................................................ 94805 ........................................................................ 94806 ........................................................................ 94807 ........................................................................ 94808 ........................................................................ 94809 ........................................................................ 94810 ........................................................................ 94811 ........................................................................ 94812 ........................................................................ 94813 ........................................................................ 94814 ........................................................................ 94815 ........................................................................ 94816 ........................................................................ 94817 ........................................................................ 94818 ........................................................................ 94819 ........................................................................ 94820 ........................................................................ 94821 ........................................................................ 94822 ........................................................................ 94823 ........................................................................ 94824 ........................................................................ 94825 ........................................................................ 94826 ........................................................................ 94827 ........................................................................ 94828 ........................................................................ 94829 ........................................................................ 94830 ........................................................................ 94831 ........................................................................ 94832 ........................................................................ 94833 ........................................................................ 94834 ........................................................................ 94835 ........................................................................ 94836 ........................................................................ 94837 ........................................................................ 94838 ........................................................................ 94839 ........................................................................ 94840 ........................................................................ 94841 ........................................................................ 94842 ........................................................................ 94843 ........................................................................ 94844 ........................................................................ 94845 ........................................................................ 94846 ........................................................................ 94847 ........................................................................ 94848 ........................................................................ 94849 ........................................................................ 94850 ........................................................................ 94851 ........................................................................ 94852 ........................................................................ 94853 ........................................................................ 94854 ........................................................................ 94855 ........................................................................ 94856 ........................................................................ 94857 ........................................................................ 94858 ........................................................................ 94859 ........................................................................ 94860 ........................................................................ 94861 ........................................................................ 94862 ........................................................................ 94863 ........................................................................ 94864 ........................................................................ 94865 ........................................................................ 94866 ........................................................................ 94867 ........................................................................ 94868 ........................................................................ 94869 ........................................................................ 94870 ........................................................................ 94871 ........................................................................ 94872 ........................................................................ 94873 ........................................................................ 94874 ........................................................................ 94875 ........................................................................ 94876 ........................................................................ 94877 ........................................................................ 94878 ........................................................................ 94879 ........................................................................ 94880 ........................................................................ 94881 ........................................................................ 94882 ........................................................................ 94883 ........................................................................ 94884 ........................................................................ 94885 ........................................................................ 94886 ........................................................................ 94887 ........................................................................ 94888 ........................................................................ 94889 ........................................................................ 94890 ........................................................................ 94891 ........................................................................ 94892 ........................................................................ 94893 ........................................................................ 94894 ........................................................................ 94895 ........................................................................ 94896 ........................................................................ 94897 ........................................................................ 94898 ........................................................................ 94899 ........................................................................ 94900 ........................................................................ 94901 ........................................................................ 94902 ........................................................................ 94903 ........................................................................ 94904 ........................................................................ 94905 ........................................................................ 94906 ........................................................................ 94907 ........................................................................ 94908 ........................................................................ 94909 ........................................................................ 94910 ........................................................................ 94911 ........................................................................ 94912 ........................................................................ 94913 ........................................................................ 94914 ........................................................................ 94915 ........................................................................ 94916 ........................................................................ 94917 ........................................................................ 94918 ........................................................................ 94919 ........................................................................ 94920 ........................................................................ 94921 ........................................................................ 94922 ........................................................................ 94923 ........................................................................ 94924 ........................................................................ 94925 ........................................................................ 94926 ........................................................................ 94927 ........................................................................ 94928 ........................................................................ 94929 ........................................................................ 94930 ........................................................................ 94931 ........................................................................ 94932 ........................................................................ 94933 ........................................................................ 94934 ........................................................................ 94935 ........................................................................ 94936 ........................................................................ 94937 ........................................................................ 94938 ........................................................................ 94939 ........................................................................ 94940 ........................................................................ 94941 ........................................................................ 94942 ........................................................................ 94943 ........................................................................ 94944 ........................................................................ 94945 ........................................................................ 94946 ........................................................................ 94947 ........................................................................ 94948 ........................................................................ 94949 ........................................................................ 94950 ........................................................................ 94951 ........................................................................ 94952 ........................................................................ 94953 ........................................................................ 94954 ........................................................................ 94955 ........................................................................ 94956 ........................................................................ 94957 ........................................................................ 94958 ........................................................................ 94959 ........................................................................ 94960 ........................................................................ 94961 ........................................................................ 94962 ........................................................................ 94963 ........................................................................ 94964 ........................................................................ 94965 ........................................................................ 94966 ........................................................................ 94967 ........................................................................ 94968 ........................................................................ 94969 ........................................................................ 94970 ........................................................................ 94971 ........................................................................ 94972 ........................................................................ 94973 ........................................................................ 94974 ........................................................................ 94975 ........................................................................ 94976 ........................................................................ 94977 ........................................................................ 94978 ........................................................................ 94979 ........................................................................ 94980 ........................................................................ 94981 ........................................................................ 94982 ........................................................................ 94983 ........................................................................ 94984 ........................................................................ 94985 ........................................................................ 94986 ........................................................................ 94987 ........................................................................ 94988 ........................................................................ 94989 ........................................................................ 94990 ........................................................................ 94991 ........................................................................ 94992 ........................................................................ 94993 ........................................................................ 94994 ........................................................................ 94995 ........................................................................ 94996 ........................................................................ 94997 ........................................................................ 94998 ........................................................................ 94999 ........................................................................ 95000 ........................................................................ 95001 ........................................................................ 95002 ........................................................................ 95003 ........................................................................ 95004 ........................................................................ 95005 ........................................................................ 95006 ........................................................................ 95007 ........................................................................ 95008 ........................................................................ 95009 ........................................................................ 95010 ........................................................................ 95011 ........................................................................ 95012 ........................................................................ 95013 ........................................................................ 95014 ........................................................................ 95015 ........................................................................ 95016 ........................................................................ 95017 ........................................................................ 95018 ........................................................................ 95019 ........................................................................ 95020 ........................................................................ 95021 ........................................................................ 95022 ........................................................................ 95023 ........................................................................ 95024 ........................................................................ 95025 ........................................................................ 95026 ........................................................................ 95027 ........................................................................ 95028 ........................................................................ 95029 ........................................................................ 95030 ........................................................................ 95031 ........................................................................ 95032 ........................................................................ 95033 ........................................................................ 95034 ........................................................................ 95035 ........................................................................ 95036 ........................................................................ 95037 ........................................................................ 95038 ........................................................................ 95039 ........................................................................ 95040 ........................................................................ 95041 ........................................................................ 95042 ........................................................................ 95043 ........................................................................ 95044 ........................................................................ 95045 ........................................................................ 95046 ........................................................................ 95047 ........................................................................ 95048 ........................................................................ 95049 ........................................................................ 95050 ........................................................................ 95051 ........................................................................ 95052 ........................................................................ 95053 ........................................................................ 95054 ........................................................................ 95055 ........................................................................ 95056 ........................................................................ 95057 ........................................................................ 95058 ........................................................................ 95059 ........................................................................ 95060 ........................................................................ 95061 ........................................................................ 95062 ........................................................................ 95063 ........................................................................ 95064 ........................................................................ 95065 ........................................................................ 95066 ........................................................................ 95067 ........................................................................ 95068 ........................................................................ 95069 ........................................................................ 95070 ........................................................................ 95071 ........................................................................ 95072 ........................................................................ 95073 ........................................................................ 95074 ........................................................................ 95075 ........................................................................ 95076 ........................................................................ 95077 ........................................................................ 95078 ........................................................................ 95079 ........................................................................ 95080 ........................................................................ 95081 ........................................................................ 95082 ........................................................................ 95083 ........................................................................ 95084 ........................................................................ 95085 ........................................................................ 95086 ........................................................................ 95087 ........................................................................ 95088 ........................................................................ 95089 ........................................................................ 95090 ........................................................................ 95091 ........................................................................ 95092 ........................................................................ 95093 ........................................................................ 95094 ........................................................................ 95095 ........................................................................ 95096 ........................................................................ 95097 ........................................................................ 95098 ........................................................................ 95099 ........................................................................ 95100 ........................................................................ 95101 ........................................................................ 95102 ........................................................................ 95103 ........................................................................ 95104 ........................................................................ 95105 ........................................................................ 95106 ........................................................................ 95107 ........................................................................ 95108 ........................................................................ 95109 ........................................................................ 95110 ........................................................................ 95111 ........................................................................ 95112 ........................................................................ 95113 ........................................................................ 95114 ........................................................................ 95115 ........................................................................ 95116 ........................................................................ 95117 ........................................................................ 95118 ........................................................................ 95119 ........................................................................ 95120 ........................................................................ 95121 ........................................................................ 95122 ........................................................................ 95123 ........................................................................ 95124 ........................................................................ 95125 ........................................................................ 95126 ........................................................................ 95127 ........................................................................ 95128 ........................................................................ 95129 ........................................................................ 95130 ........................................................................ 95131 ........................................................................ 95132 ........................................................................ 95133 ........................................................................ 95134 ........................................................................ 95135 ........................................................................ 95136 ........................................................................ 95137 ........................................................................ 95138 ........................................................................ 95139 ........................................................................ 95140 ........................................................................ 95141 ........................................................................ 95142 ........................................................................ 95143 ........................................................................ 95144 ........................................................................ 95145 ........................................................................ 95146 ........................................................................ 95147 ........................................................................ 95148 ........................................................................ 95149 ........................................................................ 95150 ........................................................................ 95151 ........................................................................ 95152 ........................................................................ 95153 ........................................................................ 95154 ........................................................................ 95155 ........................................................................ 95156 ........................................................................ 95157 ........................................................................ 95158 ........................................................................ 95159 ........................................................................ 95160 ........................................................................ 95161 ........................................................................ 95162 ........................................................................ 95163 ........................................................................ 95164 ........................................................................ 95165 ........................................................................ 95166 ........................................................................ 95167 ........................................................................ 95168 ........................................................................ 95169 ........................................................................ 95170 ........................................................................ 95171 ........................................................................ 95172 ........................................................................ 95173 ........................................................................ 95174 ........................................................................ 95175 ........................................................................ 95176 ........................................................................ 95177 ........................................................................ 95178 ........................................................................ 95179 ........................................................................ 95180 ........................................................................ 95181 ........................................................................ 95182 ........................................................................ 95183 ........................................................................ 95184 ........................................................................ 95185 ........................................................................ 95186 ........................................................................ 95187 ........................................................................ 95188 ........................................................................ 95189 ........................................................................ 95190 ........................................................................ 95191 ........................................................................ 95192 ........................................................................ 95193 ........................................................................ 95194 ........................................................................ 95195 ........................................................................ 95196 ........................................................................ 95197 ........................................................................ 95198 ........................................................................ 95199 ........................................................................ 95200 ........................................................................ 95201 ........................................................................ 95202 ........................................................................ 95203 ........................................................................ 95204 ........................................................................ 95205 ........................................................................ 95206 ........................................................................ 95207 ........................................................................ 95208 ........................................................................ 95209 ........................................................................ 95210 ........................................................................ 95211 ........................................................................ 95212 ........................................................................ 95213 ........................................................................ 95214 ........................................................................ 95215 ........................................................................ 95216 ........................................................................ 95217 ........................................................................ 95218 ........................................................................ 95219 ........................................................................ 95220 ........................................................................ 95221 ........................................................................ 95222 ........................................................................ 95223 ........................................................................ 95224 ........................................................................ 95225 ........................................................................ 95226 ........................................................................ 95227 ........................................................................ 95228 ........................................................................ 95229 ........................................................................ 95230 ........................................................................ 95231 ........................................................................ 95232 ........................................................................ 95233 ........................................................................ 95234 ........................................................................ 95235 ........................................................................ 95236 ........................................................................ 95237 ........................................................................ 95238 ........................................................................ 95239 ........................................................................ 95240 ........................................................................ 95241 ........................................................................ 95242 ........................................................................ 95243 ........................................................................ 95244 ........................................................................ 95245 ........................................................................ 95246 ........................................................................ 95247 ........................................................................ 95248 ........................................................................ 95249 ........................................................................ 95250 ........................................................................ 95251 ........................................................................ 95252 ........................................................................ 95253 ........................................................................ 95254 ........................................................................ 95255 ........................................................................ 95256 ........................................................................ 95257 ........................................................................ 95258 ........................................................................ 95259 ........................................................................ 95260 ........................................................................ 95261 ........................................................................ 95262 ........................................................................ 95263 ........................................................................ 95264 ........................................................................ 95265 ........................................................................ 95266 ........................................................................ 95267 ........................................................................ 95268 ........................................................................ 95269 ........................................................................ 95270 ........................................................................ 95271 ........................................................................ 95272 ........................................................................ 95273 ........................................................................ 95274 ........................................................................ 95275 ........................................................................ 95276 ........................................................................ 95277 ........................................................................ 95278 ........................................................................ 95279 ........................................................................ 95280 ........................................................................ 95281 ........................................................................ 95282 ........................................................................ 95283 ........................................................................ 95284 ........................................................................ 95285 ........................................................................ 95286 ........................................................................ 95287 ........................................................................ 95288 ........................................................................ 95289 ........................................................................ 95290 ........................................................................ 95291 ........................................................................ 95292 ........................................................................ 95293 ........................................................................ 95294 ........................................................................ 95295 ........................................................................ 95296 ........................................................................ 95297 ........................................................................ 95298 ........................................................................ 95299 ........................................................................ 95300 ........................................................................ 95301 ........................................................................ 95302 ........................................................................ 95303 ........................................................................ 95304 ........................................................................ 95305 ........................................................................ 95306 ........................................................................ 95307 ........................................................................ 95308 ........................................................................ 95309 ........................................................................ 95310 ........................................................................ 95311 ........................................................................ 95312 ........................................................................ 95313 ........................................................................ 95314 ........................................................................ 95315 ........................................................................ 95316 ........................................................................ 95317 ........................................................................ 95318 ........................................................................ 95319 ........................................................................ 95320 ........................................................................ 95321 ........................................................................ 95322 ........................................................................ 95323 ........................................................................ 95324 ........................................................................ 95325 ........................................................................ 95326 ........................................................................ 95327 ........................................................................ 95328 ........................................................................ 95329 ........................................................................ 95330 ........................................................................ 95331 ........................................................................ 95332 ........................................................................ 95333 ........................................................................ 95334 ........................................................................ 95335 ........................................................................ 95336 ........................................................................ 95337 ........................................................................ 95338 ........................................................................ 95339 ........................................................................ 95340 ........................................................................ 95341 ........................................................................ 95342 ........................................................................ 95343 ........................................................................ 95344 ........................................................................ 95345 ........................................................................ 95346 ........................................................................ 95347 ........................................................................ 95348 ........................................................................ 95349 ........................................................................ 95350 ........................................................................ 95351 ........................................................................ 95352 ........................................................................ 95353 ........................................................................ 95354 ........................................................................ 95355 ........................................................................ 95356 ........................................................................ 95357 ........................................................................ 95358 ........................................................................ 95359 ........................................................................ 95360 ........................................................................ 95361 ........................................................................ 95362 ........................................................................ 95363 ........................................................................ 95364 ........................................................................ 95365 ........................................................................ 95366 ........................................................................ 95367 ........................................................................ 95368 ........................................................................ 95369 ........................................................................ 95370 ........................................................................ 95371 ........................................................................ 95372 ........................................................................ 95373 ........................................................................ 95374 ........................................................................ 95375 ........................................................................ 95376 ........................................................................ 95377 ........................................................................ 95378 ........................................................................ 95379 ........................................................................ 95380 ........................................................................ 95381 ........................................................................ 95382 ........................................................................ 95383 ........................................................................ 95384 ........................................................................ 95385 ........................................................................ 95386 ........................................................................ 95387 ........................................................................ 95388 ........................................................................ 95389 ........................................................................ 95390 ........................................................................ 95391 ........................................................................ 95392 ........................................................................ 95393 ........................................................................ 95394 ........................................................................ 95395 ........................................................................ 95396 ........................................................................ 95397 ........................................................................ 95398 ........................................................................ 95399 ........................................................................ 95400 ........................................................................ 95401 ........................................................................ 95402 ........................................................................ 95403 ........................................................................ 95404 ........................................................................ 95405 ........................................................................ 95406 ........................................................................ 95407 ........................................................................ 95408 ........................................................................ 95409 ........................................................................ 95410 ........................................................................ 95411 ........................................................................ 95412 ........................................................................ 95413 ........................................................................ 95414 ........................................................................ 95415 ........................................................................ 95416 ........................................................................ 95417 ........................................................................ 95418 ........................................................................ 95419 ........................................................................ 95420 ........................................................................ 95421 ........................................................................ 95422 ........................................................................ 95423 ........................................................................ 95424 ........................................................................ 95425 ........................................................................ 95426 ........................................................................ 95427 ........................................................................ 95428 ........................................................................ 95429 ........................................................................ 95430 ........................................................................ 95431 ........................................................................ 95432 ........................................................................ 95433 ........................................................................ 95434 ........................................................................ 95435 ........................................................................ 95436 ........................................................................ 95437 ........................................................................ 95438 ........................................................................ 95439 ........................................................................ 95440 ........................................................................ 95441 ........................................................................ 95442 ........................................................................ 95443 ........................................................................ 95444 ........................................................................ 95445 ........................................................................ 95446 ........................................................................ 95447 ........................................................................ 95448 ........................................................................ 95449 ........................................................................ 95450 ........................................................................ 95451 ........................................................................ 95452 ........................................................................ 95453 ........................................................................ 95454 ........................................................................ 95455 ........................................................................ 95456 ........................................................................ 95457 ........................................................................ 95458 ........................................................................ 95459 ........................................................................ 95460 ........................................................................ 95461 ........................................................................ 95462 ........................................................................ 95463 ........................................................................ 95464 ........................................................................ 95465 ........................................................................ 95466 ........................................................................ 95467 ........................................................................ 95468 ........................................................................ 95469 ........................................................................ 95470 ........................................................................ 95471 ........................................................................ 95472 ........................................................................ 95473 ........................................................................ 95474 ........................................................................ 95475 ........................................................................ 95476 ........................................................................ 95477 ........................................................................ 95478 ........................................................................ 95479 ........................................................................ 95480 ........................................................................ 95481 ........................................................................ 95482 ........................................................................ 95483 ........................................................................ 95484 ........................................................................ 95485 ........................................................................ 95486 ........................................................................ 95487 ........................................................................ 95488 ........................................................................ 95489 ........................................................................ 95490 ........................................................................ 95491 ........................................................................ 95492 ........................................................................ 95493 ........................................................................ 95494 ........................................................................ 95495 ........................................................................ 95496 ........................................................................ 95497 ........................................................................ 95498 ........................................................................ 95499 ........................................................................ 95500 ........................................................................ 95501 ........................................................................ 95502 ........................................................................ 95503 ........................................................................ 95504 ........................................................................ 95505 ........................................................................ 95506 ........................................................................ 95507 ........................................................................ 95508 ........................................................................ 95509 ........................................................................ 95510 ........................................................................ 95511 ........................................................................ 95512 ........................................................................ 95513 ........................................................................ 95514 ........................................................................ 95515 ........................................................................ 95516 ........................................................................ 95517 ........................................................................ 95518 ........................................................................ 95519 ........................................................................ 95520 ........................................................................ 95521 ........................................................................ 95522 ........................................................................ 95523 ........................................................................ 95524 ........................................................................ 95525 ........................................................................ 95526 ........................................................................ 95527 ........................................................................ 95528 ........................................................................ 95529 ........................................................................ 95530 ........................................................................ 95531 ........................................................................ 95532 ........................................................................ 95533 ........................................................................ 95534 ........................................................................ 95535 ........................................................................ 95536 ........................................................................ 95537 ........................................................................ 95538 ........................................................................ 95539 ........................................................................ 95540 ........................................................................ 95541 ........................................................................ 95542 ........................................................................ 95543 ........................................................................ 95544 ........................................................................ 95545 ........................................................................ 95546 ........................................................................ 95547 ........................................................................ 95548 ........................................................................ 95549 ........................................................................ 95550 ........................................................................ 95551 ........................................................................ 95552 ........................................................................ 95553 ........................................................................ 95554 ........................................................................ 95555 ........................................................................ 95556 ........................................................................ 95557 ........................................................................ 95558 ........................................................................ 95559 ........................................................................ 95560 ........................................................................ 95561 ........................................................................ 95562 ........................................................................ 95563 ........................................................................ 95564 ........................................................................ 95565 ........................................................................ 95566 ........................................................................ 95567 ........................................................................ 95568 ........................................................................ 95569 ........................................................................ 95570 ........................................................................ 95571 ........................................................................ 95572 ........................................................................ 95573 ........................................................................ 95574 ........................................................................ 95575 ........................................................................ 95576 ........................................................................ 95577 ........................................................................ 95578 ........................................................................ 95579 ........................................................................ 95580 ........................................................................ 95581 ........................................................................ 95582 ........................................................................ 95583 ........................................................................ 95584 ........................................................................ 95585 ........................................................................ 95586 ........................................................................ 95587 ........................................................................ 95588 ........................................................................ 95589 ........................................................................ 95590 ........................................................................ 95591 ........................................................................ 95592 ........................................................................ 95593 ........................................................................ 95594 ........................................................................ 95595 ........................................................................ 95596 ........................................................................ 95597 ........................................................................ 95598 ........................................................................ 95599 ........................................................................ 95600 ........................................................................ 95601 ........................................................................ 95602 ........................................................................ 95603 ........................................................................ 95604 ........................................................................ 95605 ........................................................................ 95606 ........................................................................ 95607 ........................................................................ 95608 ........................................................................ 95609 ........................................................................ 95610 ........................................................................ 95611 ........................................................................ 95612 ........................................................................ 95613 ........................................................................ 95614 ........................................................................ 95615 ........................................................................ 95616 ........................................................................ 95617 ........................................................................ 95618 ........................................................................ 95619 ........................................................................ 95620 ........................................................................ 95621 ........................................................................ 95622 ........................................................................ 95623 ........................................................................ 95624 ........................................................................ 95625 ........................................................................ 95626 ........................................................................ 95627 ........................................................................ 95628 ........................................................................ 95629 ........................................................................ 95630 ........................................................................ 95631 ........................................................................ 95632 ........................................................................ 95633 ........................................................................ 95634 ........................................................................ 95635 ........................................................................ 95636 ........................................................................ 95637 ........................................................................ 95638 ........................................................................ 95639 ........................................................................ 95640 ........................................................................ 95641 ........................................................................ 95642 ........................................................................ 95643 ........................................................................ 95644 ........................................................................ 95645 ........................................................................ 95646 ........................................................................ 95647 ........................................................................ 95648 ........................................................................ 95649 ........................................................................ 95650 ........................................................................ 95651 ........................................................................ 95652 ........................................................................ 95653 ........................................................................ 95654 ........................................................................ 95655 ........................................................................ 95656 ........................................................................ 95657 ........................................................................ 95658 ........................................................................ 95659 ........................................................................ 95660 ........................................................................ 95661 ........................................................................ 95662 ........................................................................ 95663 ........................................................................ 95664 ........................................................................ 95665 ........................................................................ 95666 ........................................................................ 95667 ........................................................................ 95668 ........................................................................ 95669 ........................................................................ 95670 ........................................................................ 95671 ........................................................................ 95672 ........................................................................ 95673 ........................................................................ 95674 ........................................................................ 95675 ........................................................................ 95676 ........................................................................ 95677 ........................................................................ 95678 ........................................................................ 95679 ........................................................................ 95680 ........................................................................ 95681 ........................................................................ 95682 ........................................................................ 95683 ........................................................................ 95684 ........................................................................ 95685 ........................................................................ 95686 ........................................................................ 95687 ........................................................................ 95688 ........................................................................ 95689 ........................................................................ 95690 ........................................................................ 95691 ........................................................................ 95692 ........................................................................ 95693 ........................................................................ 95694 ........................................................................ 95695 ........................................................................ 95696 ........................................................................ 95697 ........................................................................ 95698 ........................................................................ 95699 ........................................................................ 95700 ........................................................................ 95701 ........................................................................ 95702 ........................................................................ 95703 ........................................................................ 95704 ........................................................................ 95705 ........................................................................ 95706 ........................................................................ 95707 ........................................................................ 95708 ........................................................................ 95709 ........................................................................ 95710 ........................................................................ 95711 ........................................................................ 95712 ........................................................................ 95713 ........................................................................ 95714 ........................................................................ 95715 ........................................................................ 95716 ........................................................................ 95717 ........................................................................ 95718 ........................................................................ 95719 ........................................................................ 95720 ........................................................................ 95721 ........................................................................ 95722 ........................................................................ 95723 ........................................................................ 95724 ........................................................................ 95725 ........................................................................ 95726 ........................................................................ 95727 ........................................................................ 95728 ........................................................................ 95729 ........................................................................ 95730 ........................................................................ 95731 ........................................................................ 95732 ........................................................................ 95733 ........................................................................ 95734 ........................................................................ 95735 ........................................................................ 95736 ........................................................................ 95737 ........................................................................ 95738 ........................................................................ 95739 ........................................................................ 95740 ........................................................................ 95741 ........................................................................ 95742 ........................................................................ 95743 ........................................................................ 95744 ........................................................................ 95745 ........................................................................ 95746 ........................................................................ 95747 ........................................................................ 95748 ........................................................................ 95749 ........................................................................ 95750 ........................................................................ 95751 ........................................................................ 95752 ........................................................................ 95753 ........................................................................ 95754 ........................................................................ 95755 ........................................................................ 95756 ........................................................................ 95757 ........................................................................ 95758 ........................................................................ 95759 ........................................................................ 95760 ........................................................................ 95761 ........................................................................ 95762 ........................................................................ 95763 ........................................................................ 95764 ........................................................................ 95765 ........................................................................ 95766 ........................................................................ 95767 ........................................................................ 95768 ........................................................................ 95769 ........................................................................ 95770 ........................................................................ 95771 ........................................................................ 95772 ........................................................................ 95773 ........................................................................ 95774 ........................................................................ 95775 ........................................................................ 95776 ........................................................................ 95777 ........................................................................ 95778 ........................................................................ 95779 ........................................................................ 95780 ........................................................................ 95781 ........................................................................ 95782 ........................................................................ 95783 ........................................................................ 95784 ........................................................................ 95785 ........................................................................ 95786 ........................................................................ 95787 ........................................................................ 95788 ........................................................................ 95789 ........................................................................ 95790 ........................................................................ 95791 ........................................................................ 95792 ........................................................................ 95793 ........................................................................ 95794 ........................................................................ 95795 ........................................................................ 95796 ........................................................................ 95797 ........................................................................ 95798 ........................................................................ 95799 ........................................................................ 95800 ........................................................................ 95801 ........................................................................ 95802 ........................................................................ 95803 ........................................................................ 95804 ........................................................................ 95805 ........................................................................ 95806 ........................................................................ 95807 ........................................................................ 95808 ........................................................................ 95809 ........................................................................ 95810 ........................................................................ 95811 ........................................................................ 95812 ........................................................................ 95813 ........................................................................ 95814 ........................................................................ 95815 ........................................................................ 95816 ........................................................................ 95817 ........................................................................ 95818 ........................................................................ 95819 ........................................................................ 95820 ........................................................................ 95821 ........................................................................ 95822 ........................................................................ 95823 ........................................................................ 95824 ........................................................................ 95825 ........................................................................ 95826 ........................................................................ 95827 ........................................................................ 95828 ........................................................................ 95829 ........................................................................ 95830 ........................................................................ 95831 ........................................................................ 95832 ........................................................................ 95833 ........................................................................ 95834 ........................................................................ 95835 ........................................................................ 95836 ........................................................................ 95837 ........................................................................ 95838 ........................................................................ 95839 ........................................................................ 95840 ........................................................................ 95841 ........................................................................ 95842 ........................................................................ 95843 ........................................................................ 95844 ........................................................................ 95845 ........................................................................ 95846 ........................................................................ 95847 ........................................................................ 95848 ........................................................................ 95849 ........................................................................ 95850 ........................................................................ 95851 ........................................................................ 95852 ........................................................................ 95853 ........................................................................ 95854 ........................................................................ 95855 ........................................................................ 95856 ........................................................................ 95857 ........................................................................ 95858 ........................................................................ 95859 ........................................................................ 95860 ........................................................................ 95861 ........................................................................ 95862 ........................................................................ 95863 ........................................................................ 95864 ........................................................................ 95865 ........................................................................ 95866 ........................................................................ 95867 ........................................................................ 95868 ........................................................................ 95869 ........................................................................ 95870 ........................................................................ 95871 ........................................................................ 95872 ........................................................................ 95873 ........................................................................ 95874 ........................................................................ 95875 ........................................................................ 95876 ........................................................................ 95877 ........................................................................ 95878 ........................................................................ 95879 ........................................................................ 95880 ........................................................................ 95881 ........................................................................ 95882 ........................................................................ 95883 ........................................................................ 95884 ........................................................................ 95885 ........................................................................ 95886 ........................................................................ 95887 ........................................................................ 95888 ........................................................................ 95889 ........................................................................ 95890 ........................................................................ 95891 ........................................................................ 95892 ........................................................................ 95893 ........................................................................ 95894 ........................................................................ 95895 ........................................................................ 95896 ........................................................................ 95897 ........................................................................ 95898 ........................................................................ 95899 ........................................................................ 95900 ........................................................................ 95901 ........................................................................ 95902 ........................................................................ 95903 ........................................................................ 95904 ........................................................................ 95905 ........................................................................ 95906 ........................................................................ 95907 ........................................................................ 95908 ........................................................................ 95909 ........................................................................ 95910 ........................................................................ 95911 ........................................................................ 95912 ........................................................................ 95913 ........................................................................ 95914 ........................................................................ 95915 ........................................................................ 95916 ........................................................................ 95917 ........................................................................ 95918 ........................................................................ 95919 ........................................................................ 95920 ........................................................................ 95921 ........................................................................ 95922 ........................................................................ 95923 ........................................................................ 95924 ........................................................................ 95925 ........................................................................ 95926 ........................................................................ 95927 ........................................................................ 95928 ........................................................................ 95929 ........................................................................ 95930 ........................................................................ 95931 ........................................................................ 95932 ........................................................................ 95933 ........................................................................ 95934 ........................................................................ 95935 ........................................................................ 95936 ........................................................................ 95937 ........................................................................ 95938 ........................................................................ 95939 ........................................................................ 95940 ........................................................................ 95941 ........................................................................ 95942 ........................................................................ 95943 ........................................................................ 95944 ........................................................................ 95945 ........................................................................ 95946 ........................................................................ 95947 ........................................................................ 95948 ........................................................................ 95949 ........................................................................ 95950 ........................................................................ 95951 ........................................................................ 95952 ........................................................................ 95953 ........................................................................ 95954 ........................................................................ 95955 ........................................................................ 95956 ........................................................................ 95957 ........................................................................ 95958 ........................................................................ 95959 ........................................................................ 95960 ........................................................................ 95961 ........................................................................ 95962 ........................................................................ 95963 ........................................................................ 95964 ........................................................................ 95965 ........................................................................ 95966 ........................................................................ 95967 ........................................................................ 95968 ........................................................................ 95969 ........................................................................ 95970 ........................................................................ 95971 ........................................................................ 95972 ........................................................................ 95973 ........................................................................ 95974 ........................................................................ 95975 ........................................................................ 95976 ........................................................................ 95977 ........................................................................ 95978 ........................................................................ 95979 ........................................................................ 95980 ........................................................................ 95981 ........................................................................ 95982 ........................................................................ 95983 ........................................................................ 95984 ........................................................................ 95985 ........................................................................ 95986 ........................................................................ 95987 ........................................................................ 95988 ........................................................................ 95989 ........................................................................ 95990 ........................................................................ 95991 ........................................................................ 95992 ........................................................................ 95993 ........................................................................ 95994 ........................................................................ 95995 ........................................................................ 95996 ........................................................................ 95997 ........................................................................ 95998 ........................................................................ 95999 ........................................................................ 96000 ........................................................................ 96001 ........................................................................ 96002 ........................................................................ 96003 ........................................................................ 96004 ........................................................................ 96005 ........................................................................ 96006 ........................................................................ 96007 ........................................................................ 96008 ........................................................................ 96009 ........................................................................ 96010 ........................................................................ 96011 ........................................................................ 96012 ........................................................................ 96013 ........................................................................ 96014 ........................................................................ 96015 ........................................................................ 96016 ........................................................................ 96017 ........................................................................ 96018 ........................................................................ 96019 ........................................................................ 96020 ........................................................................ 96021 ........................................................................ 96022 ........................................................................ 96023 ........................................................................ 96024 ........................................................................ 96025 ........................................................................ 96026 ........................................................................ 96027 ........................................................................ 96028 ........................................................................ 96029 ........................................................................ 96030 ........................................................................ 96031 ........................................................................ 96032 ........................................................................ 96033 ........................................................................ 96034 ........................................................................ 96035 ........................................................................ 96036 ........................................................................ 96037 ........................................................................ 96038 ........................................................................ 96039 ........................................................................ 96040 ........................................................................ 96041 ........................................................................ 96042 ........................................................................ 96043 ........................................................................ 96044 ........................................................................ 96045 ........................................................................ 96046 ........................................................................ 96047 ........................................................................ 96048 ........................................................................ 96049 ........................................................................ 96050 ........................................................................ 96051 ........................................................................ 96052 ........................................................................ 96053 ........................................................................ 96054 ........................................................................ 96055 ........................................................................ 96056 ........................................................................ 96057 ........................................................................ 96058 ........................................................................ 96059 ........................................................................ 96060 ........................................................................ 96061 ........................................................................ 96062 ........................................................................ 96063 ........................................................................ 96064 ........................................................................ 96065 ........................................................................ 96066 ........................................................................ 96067 ........................................................................ 96068 ........................................................................ 96069 ........................................................................ 96070 ........................................................................ 96071 ........................................................................ 96072 ........................................................................ 96073 ........................................................................ 96074 ........................................................................ 96075 ........................................................................ 96076 ........................................................................ 96077 ........................................................................ 96078 ........................................................................ 96079 ........................................................................ 96080 ........................................................................ 96081 ........................................................................ 96082 ........................................................................ 96083 ........................................................................ 96084 ........................................................................ 96085 ........................................................................ 96086 ........................................................................ 96087 ........................................................................ 96088 ........................................................................ 96089 ........................................................................ 96090 ........................................................................ 96091 ........................................................................ 96092 ........................................................................ 96093 ........................................................................ 96094 ........................................................................ 96095 ........................................................................ 96096 ........................................................................ 96097 ........................................................................ 96098 ........................................................................ 96099 ........................................................................ 96100 ........................................................................ 96101 ........................................................................ 96102 ........................................................................ 96103 ........................................................................ 96104 ........................................................................ 96105 ........................................................................ 96106 ........................................................................ 96107 ........................................................................ 96108 ........................................................................ 96109 ........................................................................ 96110 ........................................................................ 96111 ........................................................................ 96112 ........................................................................ 96113 ........................................................................ 96114 ........................................................................ 96115 ........................................................................ 96116 ........................................................................ 96117 ........................................................................ 96118 ........................................................................ 96119 ........................................................................ 96120 ........................................................................ 96121 ........................................................................ 96122 ........................................................................ 96123 ........................................................................ 96124 ........................................................................ 96125 ........................................................................ 96126 ........................................................................ 96127 ........................................................................ 96128 ........................................................................ 96129 ........................................................................ 96130 ........................................................................ 96131 ........................................................................ 96132 ........................................................................ 96133 ........................................................................ 96134 ........................................................................ 96135 ........................................................................ 96136 ........................................................................ 96137 ........................................................................ 96138 ........................................................................ 96139 ........................................................................ 96140 ........................................................................ 96141 ........................................................................ 96142 ........................................................................ 96143 ........................................................................ 96144 ........................................................................ 96145 ........................................................................ 96146 ........................................................................ 96147 ........................................................................ 96148 ........................................................................ 96149 ........................................................................ 96150 ........................................................................ 96151 ........................................................................ 96152 ........................................................................ 96153 ........................................................................ 96154 ........................................................................ 96155 ........................................................................ 96156 ........................................................................ 96157 ........................................................................ 96158 ........................................................................ 96159 ........................................................................ 96160 ........................................................................ 96161 ........................................................................ 96162 ........................................................................ 96163 ........................................................................ 96164 ........................................................................ 96165 ........................................................................ 96166 ........................................................................ 96167 ........................................................................ 96168 ........................................................................ 96169 ........................................................................ 96170 ........................................................................ 96171 ........................................................................ 96172 ........................................................................ 96173 ........................................................................ 96174 ........................................................................ 96175 ........................................................................ 96176 ........................................................................ 96177 ........................................................................ 96178 ........................................................................ 96179 ........................................................................ 96180 ........................................................................ 96181 ........................................................................ 96182 ........................................................................ 96183 ........................................................................ 96184 ........................................................................ 96185 ........................................................................ 96186 ........................................................................ 96187 ........................................................................ 96188 ........................................................................ 96189 ........................................................................ 96190 ........................................................................ 96191 ........................................................................ 96192 ........................................................................ 96193 ........................................................................ 96194 ........................................................................ 96195 ........................................................................ 96196 ........................................................................ 96197 ........................................................................ 96198 ........................................................................ 96199 ........................................................................ 96200 ........................................................................ 96201 ........................................................................ 96202 ........................................................................ 96203 ........................................................................ 96204 ........................................................................ 96205 ........................................................................ 96206 ........................................................................ 96207 ........................................................................ 96208 ........................................................................ 96209 ........................................................................ 96210 ........................................................................ 96211 ........................................................................ 96212 ........................................................................ 96213 ........................................................................ 96214 ........................................................................ 96215 ........................................................................ 96216 ........................................................................ 96217 ........................................................................ 96218 ........................................................................ 96219 ........................................................................ 96220 ........................................................................ 96221 ........................................................................ 96222 ........................................................................ 96223 ........................................................................ 96224 ........................................................................ 96225 ........................................................................ 96226 ........................................................................ 96227 ........................................................................ 96228 ........................................................................ 96229 ........................................................................ 96230 ........................................................................ 96231 ........................................................................ 96232 ........................................................................ 96233 ........................................................................ 96234 ........................................................................ 96235 ........................................................................ 96236 ........................................................................ 96237 ........................................................................ 96238 ........................................................................ 96239 ........................................................................ 96240 ........................................................................ 96241 ........................................................................ 96242 ........................................................................ 96243 ........................................................................ 96244 ........................................................................ 96245 ........................................................................ 96246 ........................................................................ 96247 ........................................................................ 96248 ........................................................................ 96249 ........................................................................ 96250 ........................................................................ 96251 ........................................................................ 96252 ........................................................................ 96253 ........................................................................ 96254 ........................................................................ 96255 ........................................................................ 96256 ........................................................................ 96257 ........................................................................ 96258 ........................................................................ 96259 ........................................................................ 96260 ........................................................................ 96261 ........................................................................ 96262 ........................................................................ 96263 ........................................................................ 96264 ........................................................................ 96265 ........................................................................ 96266 ........................................................................ 96267 ........................................................................ 96268 ........................................................................ 96269 ........................................................................ 96270 ........................................................................ 96271 ........................................................................ 96272 ........................................................................ 96273 ........................................................................ 96274 ........................................................................ 96275 ........................................................................ 96276 ........................................................................ 96277 ........................................................................ 96278 ........................................................................ 96279 ........................................................................ 96280 ........................................................................ 96281 ........................................................................ 96282 ........................................................................ 96283 ........................................................................ 96284 ........................................................................ 96285 ........................................................................ 96286 ........................................................................ 96287 ........................................................................ 96288 ........................................................................ 96289 ........................................................................ 96290 ........................................................................ 96291 ........................................................................ 96292 ........................................................................ 96293 ........................................................................ 96294 ........................................................................ 96295 ........................................................................ 96296 ........................................................................ 96297 ........................................................................ 96298 ........................................................................ 96299 ........................................................................ 96300 ........................................................................ 96301 ........................................................................ 96302 ........................................................................ 96303 ........................................................................ 96304 ........................................................................ 96305 ........................................................................ 96306 ........................................................................ 96307 ........................................................................ 96308 ........................................................................ 96309 ........................................................................ 96310 ........................................................................ 96311 ........................................................................ 96312 ........................................................................ 96313 ........................................................................ 96314 ........................................................................ 96315 ........................................................................ 96316 ........................................................................ 96317 ........................................................................ 96318 ........................................................................ 96319 ........................................................................ 96320 ........................................................................ 96321 ........................................................................ 96322 ........................................................................ 96323 ........................................................................ 96324 ........................................................................ 96325 ........................................................................ 96326 ........................................................................ 96327 ........................................................................ 96328 ........................................................................ 96329 ........................................................................ 96330 ........................................................................ 96331 ........................................................................ 96332 ........................................................................ 96333 ........................................................................ 96334 ........................................................................ 96335 ........................................................................ 96336 ........................................................................ 96337 ........................................................................ 96338 ........................................................................ 96339 ........................................................................ 96340 ........................................................................ 96341 ........................................................................ 96342 ........................................................................ 96343 ........................................................................ 96344 ........................................................................ 96345 ........................................................................ 96346 ........................................................................ 96347 ........................................................................ 96348 ........................................................................ 96349 ........................................................................ 96350 ........................................................................ 96351 ........................................................................ 96352 ........................................................................ 96353 ........................................................................ 96354 ........................................................................ 96355 ........................................................................ 96356 ........................................................................ 96357 ........................................................................ 96358 ........................................................................ 96359 ........................................................................ 96360 ........................................................................ 96361 ........................................................................ 96362 ........................................................................ 96363 ........................................................................ 96364 ........................................................................ 96365 ........................................................................ 96366 ........................................................................ 96367 ........................................................................ 96368 ........................................................................ 96369 ........................................................................ 96370 ........................................................................ 96371 ........................................................................ 96372 ........................................................................ 96373 ........................................................................ 96374 ........................................................................ 96375 ........................................................................ 96376 ........................................................................ 96377 ........................................................................ 96378 ........................................................................ 96379 ........................................................................ 96380 ........................................................................ 96381 ........................................................................ 96382 ........................................................................ 96383 ........................................................................ 96384 ........................................................................ 96385 ........................................................................ 96386 ........................................................................ 96387 ........................................................................ 96388 ........................................................................ 96389 ........................................................................ 96390 ........................................................................ 96391 ........................................................................ 96392 ........................................................................ 96393 ........................................................................ 96394 ........................................................................ 96395 ........................................................................ 96396 ........................................................................ 96397 ........................................................................ 96398 ........................................................................ 96399 ........................................................................ 96400 ........................................................................ 96401 ........................................................................ 96402 ........................................................................ 96403 ........................................................................ 96404 ........................................................................ 96405 ........................................................................ 96406 ........................................................................ 96407 ........................................................................ 96408 ........................................................................ 96409 ........................................................................ 96410 ........................................................................ 96411 ........................................................................ 96412 ........................................................................ 96413 ........................................................................ 96414 ........................................................................ 96415 ........................................................................ 96416 ........................................................................ 96417 ........................................................................ 96418 ........................................................................ 96419 ........................................................................ 96420 ........................................................................ 96421 ........................................................................ 96422 ........................................................................ 96423 ........................................................................ 96424 ........................................................................ 96425 ........................................................................ 96426 ........................................................................ 96427 ........................................................................ 96428 ........................................................................ 96429 ........................................................................ 96430 ........................................................................ 96431 ........................................................................ 96432 ........................................................................ 96433 ........................................................................ 96434 ........................................................................ 96435 ........................................................................ 96436 ........................................................................ 96437 ........................................................................ 96438 ........................................................................ 96439 ........................................................................ 96440 ........................................................................ 96441 ........................................................................ 96442 ........................................................................ 96443 ........................................................................ 96444 ........................................................................ 96445 ........................................................................ 96446 ........................................................................ 96447 ........................................................................ 96448 ........................................................................ 96449 ........................................................................ 96450 ........................................................................ 96451 ........................................................................ 96452 ........................................................................ 96453 ........................................................................ 96454 ........................................................................ 96455 ........................................................................ 96456 ........................................................................ 96457 ........................................................................ 96458 ........................................................................ 96459 ........................................................................ 96460 ........................................................................ 96461 ........................................................................ 96462 ........................................................................ 96463 ........................................................................ 96464 ........................................................................ 96465 ........................................................................ 96466 ........................................................................ 96467 ........................................................................ 96468 ........................................................................ 96469 ........................................................................ 96470 ........................................................................ 96471 ........................................................................ 96472 ........................................................................ 96473 ........................................................................ 96474 ........................................................................ 96475 ........................................................................ 96476 ........................................................................ 96477 ........................................................................ 96478 ........................................................................ 96479 ........................................................................ 96480 ........................................................................ 96481 ........................................................................ 96482 ........................................................................ 96483 ........................................................................ 96484 ........................................................................ 96485 ........................................................................ 96486 ........................................................................ 96487 ........................................................................ 96488 ........................................................................ 96489 ........................................................................ 96490 ........................................................................ 96491 ........................................................................ 96492 ........................................................................ 96493 ........................................................................ 96494 ........................................................................ 96495 ........................................................................ 96496 ........................................................................ 96497 ........................................................................ 96498 ........................................................................ 96499 ........................................................................ 96500 ........................................................................ 96501 ........................................................................ 96502 ........................................................................ 96503 ........................................................................ 96504 ........................................................................ 96505 ........................................................................ 96506 ........................................................................ 96507 ........................................................................ 96508 ........................................................................ 96509 ........................................................................ 96510 ........................................................................ 96511 ........................................................................ 96512 ........................................................................ 96513 ........................................................................ 96514 ........................................................................ 96515 ........................................................................ 96516 ........................................................................ 96517 ........................................................................ 96518 ........................................................................ 96519 ........................................................................ 96520 ........................................................................ 96521 ........................................................................ 96522 ........................................................................ 96523 ........................................................................ 96524 ........................................................................ 96525 ........................................................................ 96526 ........................................................................ 96527 ........................................................................ 96528 ........................................................................ 96529 ........................................................................ 96530 ........................................................................ 96531 ........................................................................ 96532 ........................................................................ 96533 ........................................................................ 96534 ........................................................................ 96535 ........................................................................ 96536 ........................................................................ 96537 ........................................................................ 96538 ........................................................................ 96539 ........................................................................ 96540 ........................................................................ 96541 ........................................................................ 96542 ........................................................................ 96543 ........................................................................ 96544 ........................................................................ 96545 ........................................................................ 96546 ........................................................................ 96547 ........................................................................ 96548 ........................................................................ 96549 ........................................................................ 96550 ........................................................................ 96551 ........................................................................ 96552 ........................................................................ 96553 ........................................................................ 96554 ........................................................................ 96555 ........................................................................ 96556 ........................................................................ 96557 ........................................................................ 96558 ........................................................................ 96559 ........................................................................ 96560 ........................................................................ 96561 ........................................................................ 96562 ........................................................................ 96563 ........................................................................ 96564 ........................................................................ 96565 ........................................................................ 96566 ........................................................................ 96567 ........................................................................ 96568 ........................................................................ 96569 ........................................................................ 96570 ........................................................................ 96571 ........................................................................ 96572 ........................................................................ 96573 ........................................................................ 96574 ........................................................................ 96575 ........................................................................ 96576 ........................................................................ 96577 ........................................................................ 96578 ........................................................................ 96579 ........................................................................ 96580 ........................................................................ 96581 ........................................................................ 96582 ........................................................................ 96583 ........................................................................ 96584 ........................................................................ 96585 ........................................................................ 96586 ........................................................................ 96587 ........................................................................ 96588 ........................................................................ 96589 ........................................................................ 96590 ........................................................................ 96591 ........................................................................ 96592 ........................................................................ 96593 ........................................................................ 96594 ........................................................................ 96595 ........................................................................ 96596 ........................................................................ 96597 ........................................................................ 96598 ........................................................................ 96599 ........................................................................ 96600 ........................................................................ 96601 ........................................................................ 96602 ........................................................................ 96603 ........................................................................ 96604 ........................................................................ 96605 ........................................................................ 96606 ........................................................................ 96607 ........................................................................ 96608 ........................................................................ 96609 ........................................................................ 96610 ........................................................................ 96611 ........................................................................ 96612 ........................................................................ 96613 ........................................................................ 96614 ........................................................................ 96615 ........................................................................ 96616 ........................................................................ 96617 ........................................................................ 96618 ........................................................................ 96619 ........................................................................ 96620 ........................................................................ 96621 ........................................................................ 96622 ........................................................................ 96623 ........................................................................ 96624 ........................................................................ 96625 ........................................................................ 96626 ........................................................................ 96627 ........................................................................ 96628 ........................................................................ 96629 ........................................................................ 96630 ........................................................................ 96631 ........................................................................ 96632 ........................................................................ 96633 ........................................................................ 96634 ........................................................................ 96635 ........................................................................ 96636 ........................................................................ 96637 ........................................................................ 96638 ........................................................................ 96639 ........................................................................ 96640 ........................................................................ 96641 ........................................................................ 96642 ........................................................................ 96643 ........................................................................ 96644 ........................................................................ 96645 ........................................................................ 96646 ........................................................................ 96647 ........................................................................ 96648 ........................................................................ 96649 ........................................................................ 96650 ........................................................................ 96651 ........................................................................ 96652 ........................................................................ 96653 ........................................................................ 96654 ........................................................................ 96655 ........................................................................ 96656 ........................................................................ 96657 ........................................................................ 96658 ........................................................................ 96659 ........................................................................ 96660 ........................................................................ 96661 ........................................................................ 96662 ........................................................................ 96663 ........................................................................ 96664 ........................................................................ 96665 ........................................................................ 96666 ........................................................................ 96667 ........................................................................ 96668 ........................................................................ 96669 ........................................................................ 96670 ........................................................................ 96671 ........................................................................ 96672 ........................................................................ 96673 ........................................................................ 96674 ........................................................................ 96675 ........................................................................ 96676 ........................................................................ 96677 ........................................................................ 96678 ........................................................................ 96679 ........................................................................ 96680 ........................................................................ 96681 ........................................................................ 96682 ........................................................................ 96683 ........................................................................ 96684 ........................................................................ 96685 ........................................................................ 96686 ........................................................................ 96687 ........................................................................ 96688 ........................................................................ 96689 ........................................................................ 96690 ........................................................................ 96691 ........................................................................ 96692 ........................................................................ 96693 ........................................................................ 96694 ........................................................................ 96695 ........................................................................ 96696 ........................................................................ 96697 ........................................................................ 96698 ........................................................................ 96699 ........................................................................ 96700 ........................................................................ 96701 ........................................................................ 96702 ........................................................................ 96703 ........................................................................ 96704 ........................................................................ 96705 ........................................................................ 96706 ........................................................................ 96707 ........................................................................ 96708 ........................................................................ 96709 ........................................................................ 96710 ........................................................................ 96711 ........................................................................ 96712 ........................................................................ 96713 ........................................................................ 96714 ........................................................................ 96715 ........................................................................ 96716 ........................................................................ 96717 ........................................................................ 96718 ........................................................................ 96719 ........................................................................ 96720 ........................................................................ 96721 ........................................................................ 96722 ........................................................................ 96723 ........................................................................ 96724 ........................................................................ 96725 ........................................................................ 96726 ........................................................................ 96727 ........................................................................ 96728 ........................................................................ 96729 ........................................................................ 96730 ........................................................................ 96731 ........................................................................ 96732 ........................................................................ 96733 ........................................................................ 96734 ........................................................................ 96735 ........................................................................ 96736 ........................................................................ 96737 ........................................................................ 96738 ........................................................................ 96739 ........................................................................ 96740 ........................................................................ 96741 ........................................................................ 96742 ........................................................................ 96743 ........................................................................ 96744 ........................................................................ 96745 ........................................................................ 96746 ........................................................................ 96747 ........................................................................ 96748 ........................................................................ 96749 ........................................................................ 96750 ........................................................................ 96751 ........................................................................ 96752 ........................................................................ 96753 ........................................................................ 96754 ........................................................................ 96755 ........................................................................ 96756 ........................................................................ 96757 ........................................................................ 96758 ........................................................................ 96759 ........................................................................ 96760 ........................................................................ 96761 ........................................................................ 96762 ........................................................................ 96763 ........................................................................ 96764 ........................................................................ 96765 ........................................................................ 96766 ........................................................................ 96767 ........................................................................ 96768 ........................................................................ 96769 ........................................................................ 96770 ........................................................................ 96771 ........................................................................ 96772 ........................................................................ 96773 ........................................................................ 96774 ........................................................................ 96775 ........................................................................ 96776 ........................................................................ 96777 ........................................................................ 96778 ........................................................................ 96779 ........................................................................ 96780 ........................................................................ 96781 ........................................................................ 96782 ........................................................................ 96783 ........................................................................ 96784 ........................................................................ 96785 ........................................................................ 96786 ........................................................................ 96787 ........................................................................ 96788 ........................................................................ 96789 ........................................................................ 96790 ........................................................................ 96791 ........................................................................ 96792 ........................................................................ 96793 ........................................................................ 96794 ........................................................................ 96795 ........................................................................ 96796 ........................................................................ 96797 ........................................................................ 96798 ........................................................................ 96799 ........................................................................ 96800 ........................................................................ 96801 ........................................................................ 96802 ........................................................................ 96803 ........................................................................ 96804 ........................................................................ 96805 ........................................................................ 96806 ........................................................................ 96807 ........................................................................ 96808 ........................................................................ 96809 ........................................................................ 96810 ........................................................................ 96811 ........................................................................ 96812 ........................................................................ 96813 ........................................................................ 96814 ........................................................................ 96815 ........................................................................ 96816 ........................................................................ 96817 ........................................................................ 96818 ........................................................................ 96819 ........................................................................ 96820 ........................................................................ 96821 ........................................................................ 96822 ........................................................................ 96823 ........................................................................ 96824 ........................................................................ 96825 ........................................................................ 96826 ........................................................................ 96827 ........................................................................ 96828 ........................................................................ 96829 ........................................................................ 96830 ........................................................................ 96831 ........................................................................ 96832 ........................................................................ 96833 ........................................................................ 96834 ........................................................................ 96835 ........................................................................ 96836 ........................................................................ 96837 ........................................................................ 96838 ........................................................................ 96839 ........................................................................ 96840 ........................................................................ 96841 ........................................................................ 96842 ........................................................................ 96843 ........................................................................ 96844 ........................................................................ 96845 ........................................................................ 96846 ........................................................................ 96847 ........................................................................ 96848 ........................................................................ 96849 ........................................................................ 96850 ........................................................................ 96851 ........................................................................ 96852 ........................................................................ 96853 ........................................................................ 96854 ........................................................................ 96855 ........................................................................ 96856 ........................................................................ 96857 ........................................................................ 96858 ........................................................................ 96859 ........................................................................ 96860 ........................................................................ 96861 ........................................................................ 96862 ........................................................................ 96863 ........................................................................ 96864 ........................................................................ 96865 ........................................................................ 96866 ........................................................................ 96867 ........................................................................ 96868 ........................................................................ 96869 ........................................................................ 96870 ........................................................................ 96871 ........................................................................ 96872 ........................................................................ 96873 ........................................................................ 96874 ........................................................................ 96875 ........................................................................ 96876 ........................................................................ 96877 ........................................................................ 96878 ........................................................................ 96879 ........................................................................ 96880 ........................................................................ 96881 ........................................................................ 96882 ........................................................................ 96883 ........................................................................ 96884 ........................................................................ 96885 ........................................................................ 96886 ........................................................................ 96887 ........................................................................ 96888 ........................................................................ 96889 ........................................................................ 96890 ........................................................................ 96891 ........................................................................ 96892 ........................................................................ 96893 ........................................................................ 96894 ........................................................................ 96895 ........................................................................ 96896 ........................................................................ 96897 ........................................................................ 96898 ........................................................................ 96899 ........................................................................ 96900 ........................................................................ 96901 ........................................................................ 96902 ........................................................................ 96903 ........................................................................ 96904 ........................................................................ 96905 ........................................................................ 96906 ........................................................................ 96907 ........................................................................ 96908 ........................................................................ 96909 ........................................................................ 96910 ........................................................................ 96911 ........................................................................ 96912 ........................................................................ 96913 ........................................................................ 96914 ........................................................................ 96915 ........................................................................ 96916 ........................................................................ 96917 ........................................................................ 96918 ........................................................................ 96919 ........................................................................ 96920 ........................................................................ 96921 ........................................................................ 96922 ........................................................................ 96923 ........................................................................ 96924 ........................................................................ 96925 ........................................................................ 96926 ........................................................................ 96927 ........................................................................ 96928 ........................................................................ 96929 ........................................................................ 96930 ........................................................................ 96931 ........................................................................ 96932 ........................................................................ 96933 ........................................................................ 96934 ........................................................................ 96935 ........................................................................ 96936 ........................................................................ 96937 ........................................................................ 96938 ........................................................................ 96939 ........................................................................ 96940 ........................................................................ 96941 ........................................................................ 96942 ........................................................................ 96943 ........................................................................ 96944 ........................................................................ 96945 ........................................................................ 96946 ........................................................................ 96947 ........................................................................ 96948 ........................................................................ 96949 ........................................................................ 96950 ........................................................................ 96951 ........................................................................ 96952 ........................................................................ 96953 ........................................................................ 96954 ........................................................................ 96955 ........................................................................ 96956 ........................................................................ 96957 ........................................................................ 96958 ........................................................................ 96959 ........................................................................ 96960 ........................................................................ 96961 ........................................................................ 96962 ........................................................................ 96963 ........................................................................ 96964 ........................................................................ 96965 ........................................................................ 96966 ........................................................................ 96967 ........................................................................ 96968 ........................................................................ 96969 ........................................................................ 96970 ........................................................................ 96971 ........................................................................ 96972 ........................................................................ 96973 ........................................................................ 96974 ........................................................................ 96975 ........................................................................ 96976 ........................................................................ 96977 ........................................................................ 96978 ........................................................................ 96979 ........................................................................ 96980 ........................................................................ 96981 ........................................................................ 96982 ........................................................................ 96983 ........................................................................ 96984 ........................................................................ 96985 ........................................................................ 96986 ........................................................................ 96987 ........................................................................ 96988 ........................................................................ 96989 ........................................................................ 96990 ........................................................................ 96991 ........................................................................ 96992 ........................................................................ 96993 ........................................................................ 96994 ........................................................................ 96995 ........................................................................ 96996 ........................................................................ 96997 ........................................................................ 96998 ........................................................................ 96999 ........................................................................ 97000 ........................................................................ 97001 ........................................................................ 97002 ........................................................................ 97003 ........................................................................ 97004 ........................................................................ 97005 ........................................................................ 97006 ........................................................................ 97007 ........................................................................ 97008 ........................................................................ 97009 ........................................................................ 97010 ........................................................................ 97011 ........................................................................ 97012 ........................................................................ 97013 ........................................................................ 97014 ........................................................................ 97015 ........................................................................ 97016 ........................................................................ 97017 ........................................................................ 97018 ........................................................................ 97019 ........................................................................ 97020 ........................................................................ 97021 ........................................................................ 97022 ........................................................................ 97023 ........................................................................ 97024 ........................................................................ 97025 ........................................................................ 97026 ........................................................................ 97027 ........................................................................ 97028 ........................................................................ 97029 ........................................................................ 97030 ........................................................................ 97031 ........................................................................ 97032 ........................................................................ 97033 ........................................................................ 97034 ........................................................................ 97035 ........................................................................ 97036 ........................................................................ 97037 ........................................................................ 97038 ........................................................................ 97039 ........................................................................ 97040 ........................................................................ 97041 ........................................................................ 97042 ........................................................................ 97043 ........................................................................ 97044 ........................................................................ 97045 ........................................................................ 97046 ........................................................................ 97047 ........................................................................ 97048 ........................................................................ 97049 ........................................................................ 97050 ........................................................................ 97051 ........................................................................ 97052 ........................................................................ 97053 ........................................................................ 97054 ........................................................................ 97055 ........................................................................ 97056 ........................................................................ 97057 ........................................................................ 97058 ........................................................................ 97059 ........................................................................ 97060 ........................................................................ 97061 ........................................................................ 97062 ........................................................................ 97063 ........................................................................ 97064 ........................................................................ 97065 ........................................................................ 97066 ........................................................................ 97067 ........................................................................ 97068 ........................................................................ 97069 ........................................................................ 97070 ........................................................................ 97071 ........................................................................ 97072 ........................................................................ 97073 ........................................................................ 97074 ........................................................................ 97075 ........................................................................ 97076 ........................................................................ 97077 ........................................................................ 97078 ........................................................................ 97079 ........................................................................ 97080 ........................................................................ 97081 ........................................................................ 97082 ........................................................................ 97083 ........................................................................ 97084 ........................................................................ 97085 ........................................................................ 97086 ........................................................................ 97087 ........................................................................ 97088 ........................................................................ 97089 ........................................................................ 97090 ........................................................................ 97091 ........................................................................ 97092 ........................................................................ 97093 ........................................................................ 97094 ........................................................................ 97095 ........................................................................ 97096 ........................................................................ 97097 ........................................................................ 97098 ........................................................................ 97099 ........................................................................ 97100 ........................................................................ 97101 ........................................................................ 97102 ........................................................................ 97103 ........................................................................ 97104 ........................................................................ 97105 ........................................................................ 97106 ........................................................................ 97107 ........................................................................ 97108 ........................................................................ 97109 ........................................................................ 97110 ........................................................................ 97111 ........................................................................ 97112 ........................................................................ 97113 ........................................................................ 97114 ........................................................................ 97115 ........................................................................ 97116 ........................................................................ 97117 ........................................................................ 97118 ........................................................................ 97119 ........................................................................ 97120 ........................................................................ 97121 ........................................................................ 97122 ........................................................................ 97123 ........................................................................ 97124 ........................................................................ 97125 ........................................................................ 97126 ........................................................................ 97127 ........................................................................ 97128 ........................................................................ 97129 ........................................................................ 97130 ........................................................................ 97131 ........................................................................ 97132 ........................................................................ 97133 ........................................................................ 97134 ........................................................................ 97135 ........................................................................ 97136 ........................................................................ 97137 ........................................................................ 97138 ........................................................................ 97139 ........................................................................ 97140 ........................................................................ 97141 ........................................................................ 97142 ........................................................................ 97143 ........................................................................ 97144 ........................................................................ 97145 ........................................................................ 97146 ........................................................................ 97147 ........................................................................ 97148 ........................................................................ 97149 ........................................................................ 97150 ........................................................................ 97151 ........................................................................ 97152 ........................................................................ 97153 ........................................................................ 97154 ........................................................................ 97155 ........................................................................ 97156 ........................................................................ 97157 ........................................................................ 97158 ........................................................................ 97159 ........................................................................ 97160 ........................................................................ 97161 ........................................................................ 97162 ........................................................................ 97163 ........................................................................ 97164 ........................................................................ 97165 ........................................................................ 97166 ........................................................................ 97167 ........................................................................ 97168 ........................................................................ 97169 ........................................................................ 97170 ........................................................................ 97171 ........................................................................ 97172 ........................................................................ 97173 ........................................................................ 97174 ........................................................................ 97175 ........................................................................ 97176 ........................................................................ 97177 ........................................................................ 97178 ........................................................................ 97179 ........................................................................ 97180 ........................................................................ 97181 ........................................................................ 97182 ........................................................................ 97183 ........................................................................ 97184 ........................................................................ 97185 ........................................................................ 97186 ........................................................................ 97187 ........................................................................ 97188 ........................................................................ 97189 ........................................................................ 97190 ........................................................................ 97191 ........................................................................ 97192 ........................................................................ 97193 ........................................................................ 97194 ........................................................................ 97195 ........................................................................ 97196 ........................................................................ 97197 ........................................................................ 97198 ........................................................................ 97199 ........................................................................ 97200 ........................................................................ 97201 ........................................................................ 97202 ........................................................................ 97203 ........................................................................ 97204 ........................................................................ 97205 ........................................................................ 97206 ........................................................................ 97207 ........................................................................ 97208 ........................................................................ 97209 ........................................................................ 97210 ........................................................................ 97211 ........................................................................ 97212 ........................................................................ 97213 ........................................................................ 97214 ........................................................................ 97215 ........................................................................ 97216 ........................................................................ 97217 ........................................................................ 97218 ........................................................................ 97219 ........................................................................ 97220 ........................................................................ 97221 ........................................................................ 97222 ........................................................................ 97223 ........................................................................ 97224 ........................................................................ 97225 ........................................................................ 97226 ........................................................................ 97227 ........................................................................ 97228 ........................................................................ 97229 ........................................................................ 97230 ........................................................................ 97231 ........................................................................ 97232 ........................................................................ 97233 ........................................................................ 97234 ........................................................................ 97235 ........................................................................ 97236 ........................................................................ 97237 ........................................................................ 97238 ........................................................................ 97239 ........................................................................ 97240 ........................................................................ 97241 ........................................................................ 97242 ........................................................................ 97243 ........................................................................ 97244 ........................................................................ 97245 ........................................................................ 97246 ........................................................................ 97247 ........................................................................ 97248 ........................................................................ 97249 ........................................................................ 97250 ........................................................................ 97251 ........................................................................ 97252 ........................................................................ 97253 ........................................................................ 97254 ........................................................................ 97255 ........................................................................ 97256 ........................................................................ 97257 ........................................................................ 97258 ........................................................................ 97259 ........................................................................ 97260 ........................................................................ 97261 ........................................................................ 97262 ........................................................................ 97263 ........................................................................ 97264 ........................................................................ 97265 ........................................................................ 97266 ........................................................................ 97267 ........................................................................ 97268 ........................................................................ 97269 ........................................................................ 97270 ........................................................................ 97271 ........................................................................ 97272 ........................................................................ 97273 ........................................................................ 97274 ........................................................................ 97275 ........................................................................ 97276 ........................................................................ 97277 ........................................................................ 97278 ........................................................................ 97279 ........................................................................ 97280 ........................................................................ 97281 ........................................................................ 97282 ........................................................................ 97283 ........................................................................ 97284 ........................................................................ 97285 ........................................................................ 97286 ........................................................................ 97287 ........................................................................ 97288 ........................................................................ 97289 ........................................................................ 97290 ........................................................................ 97291 ........................................................................ 97292 ........................................................................ 97293 ........................................................................ 97294 ........................................................................ 97295 ........................................................................ 97296 ........................................................................ 97297 ........................................................................ 97298 ........................................................................ 97299 ........................................................................ 97300 ........................................................................ 97301 ........................................................................ 97302 ........................................................................ 97303 ........................................................................ 97304 ........................................................................ 97305 ........................................................................ 97306 ........................................................................ 97307 ........................................................................ 97308 ........................................................................ 97309 ........................................................................ 97310 ........................................................................ 97311 ........................................................................ 97312 ........................................................................ 97313 ........................................................................ 97314 ........................................................................ 97315 ........................................................................ 97316 ........................................................................ 97317 ........................................................................ 97318 ........................................................................ 97319 ........................................................................ 97320 ........................................................................ 97321 ........................................................................ 97322 ........................................................................ 97323 ........................................................................ 97324 ........................................................................ 97325 ........................................................................ 97326 ........................................................................ 97327 ........................................................................ 97328 ........................................................................ 97329 ........................................................................ 97330 ........................................................................ 97331 ........................................................................ 97332 ........................................................................ 97333 ........................................................................ 97334 ........................................................................ 97335 ........................................................................ 97336 ........................................................................ 97337 ........................................................................ 97338 ........................................................................ 97339 ........................................................................ 97340 ........................................................................ 97341 ........................................................................ 97342 ........................................................................ 97343 ........................................................................ 97344 ........................................................................ 97345 ........................................................................ 97346 ........................................................................ 97347 ........................................................................ 97348 ........................................................................ 97349 ........................................................................ 97350 ........................................................................ 97351 ........................................................................ 97352 ........................................................................ 97353 ........................................................................ 97354 ........................................................................ 97355 ........................................................................ 97356 ........................................................................ 97357 ........................................................................ 97358 ........................................................................ 97359 ........................................................................ 97360 ........................................................................ 97361 ........................................................................ 97362 ........................................................................ 97363 ........................................................................ 97364 ........................................................................ 97365 ........................................................................ 97366 ........................................................................ 97367 ........................................................................ 97368 ........................................................................ 97369 ........................................................................ 97370 ........................................................................ 97371 ........................................................................ 97372 ........................................................................ 97373 ........................................................................ 97374 ........................................................................ 97375 ........................................................................ 97376 ........................................................................ 97377 ........................................................................ 97378 ........................................................................ 97379 ........................................................................ 97380 ........................................................................ 97381 ........................................................................ 97382 ........................................................................ 97383 ........................................................................ 97384 ........................................................................ 97385 ........................................................................ 97386 ........................................................................ 97387 ........................................................................ 97388 ........................................................................ 97389 ........................................................................ 97390 ........................................................................ 97391 ........................................................................ 97392 ........................................................................ 97393 ........................................................................ 97394 ........................................................................ 97395 ........................................................................ 97396 ........................................................................ 97397 ........................................................................ 97398 ........................................................................ 97399 ........................................................................ 97400 ........................................................................ 97401 ........................................................................ 97402 ........................................................................ 97403 ........................................................................ 97404 ........................................................................ 97405 ........................................................................ 97406 ........................................................................ 97407 ........................................................................ 97408 ........................................................................ 97409 ........................................................................ 97410 ........................................................................ 97411 ........................................................................ 97412 ........................................................................ 97413 ........................................................................ 97414 ........................................................................ 97415 ........................................................................ 97416 ........................................................................ 97417 ........................................................................ 97418 ........................................................................ 97419 ........................................................................ 97420 ........................................................................ 97421 ........................................................................ 97422 ........................................................................ 97423 ........................................................................ 97424 ........................................................................ 97425 ........................................................................ 97426 ........................................................................ 97427 ........................................................................ 97428 ........................................................................ 97429 ........................................................................ 97430 ........................................................................ 97431 ........................................................................ 97432 ........................................................................ 97433 ........................................................................ 97434 ........................................................................ 97435 ........................................................................ 97436 ........................................................................ 97437 ........................................................................ 97438 ........................................................................ 97439 ........................................................................ 97440 ........................................................................ 97441 ........................................................................ 97442 ........................................................................ 97443 ........................................................................ 97444 ........................................................................ 97445 ........................................................................ 97446 ........................................................................ 97447 ........................................................................ 97448 ........................................................................ 97449 ........................................................................ 97450 ........................................................................ 97451 ........................................................................ 97452 ........................................................................ 97453 ........................................................................ 97454 ........................................................................ 97455 ........................................................................ 97456 ........................................................................ 97457 ........................................................................ 97458 ........................................................................ 97459 ........................................................................ 97460 ........................................................................ 97461 ........................................................................ 97462 ........................................................................ 97463 ........................................................................ 97464 ........................................................................ 97465 ........................................................................ 97466 ........................................................................ 97467 ........................................................................ 97468 ........................................................................ 97469 ........................................................................ 97470 ........................................................................ 97471 ........................................................................ 97472 ........................................................................ 97473 ........................................................................ 97474 ........................................................................ 97475 ........................................................................ 97476 ........................................................................ 97477 ........................................................................ 97478 ........................................................................ 97479 ........................................................................ 97480 ........................................................................ 97481 ........................................................................ 97482 ........................................................................ 97483 ........................................................................ 97484 ........................................................................ 97485 ........................................................................ 97486 ........................................................................ 97487 ........................................................................ 97488 ........................................................................ 97489 ........................................................................ 97490 ........................................................................ 97491 ........................................................................ 97492 ........................................................................ 97493 ........................................................................ 97494 ........................................................................ 97495 ........................................................................ 97496 ........................................................................ 97497 ........................................................................ 97498 ........................................................................ 97499 ........................................................................ 97500 ........................................................................ 97501 ........................................................................ 97502 ........................................................................ 97503 ........................................................................ 97504 ........................................................................ 97505 ........................................................................ 97506 ........................................................................ 97507 ........................................................................ 97508 ........................................................................ 97509 ........................................................................ 97510 ........................................................................ 97511 ........................................................................ 97512 ........................................................................ 97513 ........................................................................ 97514 ........................................................................ 97515 ........................................................................ 97516 ........................................................................ 97517 ........................................................................ 97518 ........................................................................ 97519 ........................................................................ 97520 ........................................................................ 97521 ........................................................................ 97522 ........................................................................ 97523 ........................................................................ 97524 ........................................................................ 97525 ........................................................................ 97526 ........................................................................ 97527 ........................................................................ 97528 ........................................................................ 97529 ........................................................................ 97530 ........................................................................ 97531 ........................................................................ 97532 ........................................................................ 97533 ........................................................................ 97534 ........................................................................ 97535 ........................................................................ 97536 ........................................................................ 97537 ........................................................................ 97538 ........................................................................ 97539 ........................................................................ 97540 ........................................................................ 97541 ........................................................................ 97542 ........................................................................ 97543 ........................................................................ 97544 ........................................................................ 97545 ........................................................................ 97546 ........................................................................ 97547 ........................................................................ 97548 ........................................................................ 97549 ........................................................................ 97550 ........................................................................ 97551 ........................................................................ 97552 ........................................................................ 97553 ........................................................................ 97554 ........................................................................ 97555 ........................................................................ 97556 ........................................................................ 97557 ........................................................................ 97558 ........................................................................ 97559 ........................................................................ 97560 ........................................................................ 97561 ........................................................................ 97562 ........................................................................ 97563 ........................................................................ 97564 ........................................................................ 97565 ........................................................................ 97566 ........................................................................ 97567 ........................................................................ 97568 ........................................................................ 97569 ........................................................................ 97570 ........................................................................ 97571 ........................................................................ 97572 ........................................................................ 97573 ........................................................................ 97574 ........................................................................ 97575 ........................................................................ 97576 ........................................................................ 97577 ........................................................................ 97578 ........................................................................ 97579 ........................................................................ 97580 ........................................................................ 97581 ........................................................................ 97582 ........................................................................ 97583 ........................................................................ 97584 ........................................................................ 97585 ........................................................................ 97586 ........................................................................ 97587 ........................................................................ 97588 ........................................................................ 97589 ........................................................................ 97590 ........................................................................ 97591 ........................................................................ 97592 ........................................................................ 97593 ........................................................................ 97594 ........................................................................ 97595 ........................................................................ 97596 ........................................................................ 97597 ........................................................................ 97598 ........................................................................ 97599 ........................................................................ 97600 ........................................................................ 97601 ........................................................................ 97602 ........................................................................ 97603 ........................................................................ 97604 ........................................................................ 97605 ........................................................................ 97606 ........................................................................ 97607 ........................................................................ 97608 ........................................................................ 97609 ........................................................................ 97610 ........................................................................ 97611 ........................................................................ 97612 ........................................................................ 97613 ........................................................................ 97614 ........................................................................ 97615 ........................................................................ 97616 ........................................................................ 97617 ........................................................................ 97618 ........................................................................ 97619 ........................................................................ 97620 ........................................................................ 97621 ........................................................................ 97622 ........................................................................ 97623 ........................................................................ 97624 ........................................................................ 97625 ........................................................................ 97626 ........................................................................ 97627 ........................................................................ 97628 ........................................................................ 97629 ........................................................................ 97630 ........................................................................ 97631 ........................................................................ 97632 ........................................................................ 97633 ........................................................................ 97634 ........................................................................ 97635 ........................................................................ 97636 ........................................................................ 97637 ........................................................................ 97638 ........................................................................ 97639 ........................................................................ 97640 ........................................................................ 97641 ........................................................................ 97642 ........................................................................ 97643 ........................................................................ 97644 ........................................................................ 97645 ........................................................................ 97646 ........................................................................ 97647 ........................................................................ 97648 ........................................................................ 97649 ........................................................................ 97650 ........................................................................ 97651 ........................................................................ 97652 ........................................................................ 97653 ........................................................................ 97654 ........................................................................ 97655 ........................................................................ 97656 ........................................................................ 97657 ........................................................................ 97658 ........................................................................ 97659 ........................................................................ 97660 ........................................................................ 97661 ........................................................................ 97662 ........................................................................ 97663 ........................................................................ 97664 ........................................................................ 97665 ........................................................................ 97666 ........................................................................ 97667 ........................................................................ 97668 ........................................................................ 97669 ........................................................................ 97670 ........................................................................ 97671 ........................................................................ 97672 ........................................................................ 97673 ........................................................................ 97674 ........................................................................ 97675 ........................................................................ 97676 ........................................................................ 97677 ........................................................................ 97678 ........................................................................ 97679 ........................................................................ 97680 ........................................................................ 97681 ........................................................................ 97682 ........................................................................ 97683 ........................................................................ 97684 ........................................................................ 97685 ........................................................................ 97686 ........................................................................ 97687 ........................................................................ 97688 ........................................................................ 97689 ........................................................................ 97690 ........................................................................ 97691 ........................................................................ 97692 ........................................................................ 97693 ........................................................................ 97694 ........................................................................ 97695 ........................................................................ 97696 ........................................................................ 97697 ........................................................................ 97698 ........................................................................ 97699 ........................................................................ 97700 ........................................................................ 97701 ........................................................................ 97702 ........................................................................ 97703 ........................................................................ 97704 ........................................................................ 97705 ........................................................................ 97706 ........................................................................ 97707 ........................................................................ 97708 ........................................................................ 97709 ........................................................................ 97710 ........................................................................ 97711 ........................................................................ 97712 ........................................................................ 97713 ........................................................................ 97714 ........................................................................ 97715 ........................................................................ 97716 ........................................................................ 97717 ........................................................................ 97718 ........................................................................ 97719 ........................................................................ 97720 ........................................................................ 97721 ........................................................................ 97722 ........................................................................ 97723 ........................................................................ 97724 ........................................................................ 97725 ........................................................................ 97726 ........................................................................ 97727 ........................................................................ 97728 ........................................................................ 97729 ........................................................................ 97730 ........................................................................ 97731 ........................................................................ 97732 ........................................................................ 97733 ........................................................................ 97734 ........................................................................ 97735 ........................................................................ 97736 ........................................................................ 97737 ........................................................................ 97738 ........................................................................ 97739 ........................................................................ 97740 ........................................................................ 97741 ........................................................................ 97742 ........................................................................ 97743 ........................................................................ 97744 ........................................................................ 97745 ........................................................................ 97746 ........................................................................ 97747 ........................................................................ 97748 ........................................................................ 97749 ........................................................................ 97750 ........................................................................ 97751 ........................................................................ 97752 ........................................................................ 97753 ........................................................................ 97754 ........................................................................ 97755 ........................................................................ 97756 ........................................................................ 97757 ........................................................................ 97758 ........................................................................ 97759 ........................................................................ 97760 ........................................................................ 97761 ........................................................................ 97762 ........................................................................ 97763 ........................................................................ 97764 ........................................................................ 97765 ........................................................................ 97766 ........................................................................ 97767 ........................................................................ 97768 ........................................................................ 97769 ........................................................................ 97770 ........................................................................ 97771 ........................................................................ 97772 ........................................................................ 97773 ........................................................................ 97774 ........................................................................ 97775 ........................................................................ 97776 ........................................................................ 97777 ........................................................................ 97778 ........................................................................ 97779 ........................................................................ 97780 ........................................................................ 97781 ........................................................................ 97782 ........................................................................ 97783 ........................................................................ 97784 ........................................................................ 97785 ........................................................................ 97786 ........................................................................ 97787 ........................................................................ 97788 ........................................................................ 97789 ........................................................................ 97790 ........................................................................ 97791 ........................................................................ 97792 ........................................................................ 97793 ........................................................................ 97794 ........................................................................ 97795 ........................................................................ 97796 ........................................................................ 97797 ........................................................................ 97798 ........................................................................ 97799 ........................................................................ 97800 ........................................................................ 97801 ........................................................................ 97802 ........................................................................ 97803 ........................................................................ 97804 ........................................................................ 97805 ........................................................................ 97806 ........................................................................ 97807 ........................................................................ 97808 ........................................................................ 97809 ........................................................................ 97810 ........................................................................ 97811 ........................................................................ 97812 ........................................................................ 97813 ........................................................................ 97814 ........................................................................ 97815 ........................................................................ 97816 ........................................................................ 97817 ........................................................................ 97818 ........................................................................ 97819 ........................................................................ 97820 ........................................................................ 97821 ........................................................................ 97822 ........................................................................ 97823 ........................................................................ 97824 ........................................................................ 97825 ........................................................................ 97826 ........................................................................ 97827 ........................................................................ 97828 ........................................................................ 97829 ........................................................................ 97830 ........................................................................ 97831 ........................................................................ 97832 ........................................................................ 97833 ........................................................................ 97834 ........................................................................ 97835 ........................................................................ 97836 ........................................................................ 97837 ........................................................................ 97838 ........................................................................ 97839 ........................................................................ 97840 ........................................................................ 97841 ........................................................................ 97842 ........................................................................ 97843 ........................................................................ 97844 ........................................................................ 97845 ........................................................................ 97846 ........................................................................ 97847 ........................................................................ 97848 ........................................................................ 97849 ........................................................................ 97850 ........................................................................ 97851 ........................................................................ 97852 ........................................................................ 97853 ........................................................................ 97854 ........................................................................ 97855 ........................................................................ 97856 ........................................................................ 97857 ........................................................................ 97858 ........................................................................ 97859 ........................................................................ 97860 ........................................................................ 97861 ........................................................................ 97862 ........................................................................ 97863 ........................................................................ 97864 ........................................................................ 97865 ........................................................................ 97866 ........................................................................ 97867 ........................................................................ 97868 ........................................................................ 97869 ........................................................................ 97870 ........................................................................ 97871 ........................................................................ 97872 ........................................................................ 97873 ........................................................................ 97874 ........................................................................ 97875 ........................................................................ 97876 ........................................................................ 97877 ........................................................................ 97878 ........................................................................ 97879 ........................................................................ 97880 ........................................................................ 97881 ........................................................................ 97882 ........................................................................ 97883 ........................................................................ 97884 ........................................................................ 97885 ........................................................................ 97886 ........................................................................ 97887 ........................................................................ 97888 ........................................................................ 97889 ........................................................................ 97890 ........................................................................ 97891 ........................................................................ 97892 ........................................................................ 97893 ........................................................................ 97894 ........................................................................ 97895 ........................................................................ 97896 ........................................................................ 97897 ........................................................................ 97898 ........................................................................ 97899 ........................................................................ 97900 ........................................................................ 97901 ........................................................................ 97902 ........................................................................ 97903 ........................................................................ 97904 ........................................................................ 97905 ........................................................................ 97906 ........................................................................ 97907 ........................................................................ 97908 ........................................................................ 97909 ........................................................................ 97910 ........................................................................ 97911 ........................................................................ 97912 ........................................................................ 97913 ........................................................................ 97914 ........................................................................ 97915 ........................................................................ 97916 ........................................................................ 97917 ........................................................................ 97918 ........................................................................ 97919 ........................................................................ 97920 ........................................................................ 97921 ........................................................................ 97922 ........................................................................ 97923 ........................................................................ 97924 ........................................................................ 97925 ........................................................................ 97926 ........................................................................ 97927 ........................................................................ 97928 ........................................................................ 97929 ........................................................................ 97930 ........................................................................ 97931 ........................................................................ 97932 ........................................................................ 97933 ........................................................................ 97934 ........................................................................ 97935 ........................................................................ 97936 ........................................................................ 97937 ........................................................................ 97938 ........................................................................ 97939 ........................................................................ 97940 ........................................................................ 97941 ........................................................................ 97942 ........................................................................ 97943 ........................................................................ 97944 ........................................................................ 97945 ........................................................................ 97946 ........................................................................ 97947 ........................................................................ 97948 ........................................................................ 97949 ........................................................................ 97950 ........................................................................ 97951 ........................................................................ 97952 ........................................................................ 97953 ........................................................................ 97954 ........................................................................ 97955 ........................................................................ 97956 ........................................................................ 97957 ........................................................................ 97958 ........................................................................ 97959 ........................................................................ 97960 ........................................................................ 97961 ........................................................................ 97962 ........................................................................ 97963 ........................................................................ 97964 ........................................................................ 97965 ........................................................................ 97966 ........................................................................ 97967 ........................................................................ 97968 ........................................................................ 97969 ........................................................................ 97970 ........................................................................ 97971 ........................................................................ 97972 ........................................................................ 97973 ........................................................................ 97974 ........................................................................ 97975 ........................................................................ 97976 ........................................................................ 97977 ........................................................................ 97978 ........................................................................ 97979 ........................................................................ 97980 ........................................................................ 97981 ........................................................................ 97982 ........................................................................ 97983 ........................................................................ 97984 ........................................................................ 97985 ........................................................................ 97986 ........................................................................ 97987 ........................................................................ 97988 ........................................................................ 97989 ........................................................................ 97990 ........................................................................ 97991 ........................................................................ 97992 ........................................................................ 97993 ........................................................................ 97994 ........................................................................ 97995 ........................................................................ 97996 ........................................................................ 97997 ........................................................................ 97998 ........................................................................ 97999 ........................................................................ 98000 ........................................................................ 98001 ........................................................................ 98002 ........................................................................ 98003 ........................................................................ 98004 ........................................................................ 98005 ........................................................................ 98006 ........................................................................ 98007 ........................................................................ 98008 ........................................................................ 98009 ........................................................................ 98010 ........................................................................ 98011 ........................................................................ 98012 ........................................................................ 98013 ........................................................................ 98014 ........................................................................ 98015 ........................................................................ 98016 ........................................................................ 98017 ........................................................................ 98018 ........................................................................ 98019 ........................................................................ 98020 ........................................................................ 98021 ........................................................................ 98022 ........................................................................ 98023 ........................................................................ 98024 ........................................................................ 98025 ........................................................................ 98026 ........................................................................ 98027 ........................................................................ 98028 ........................................................................ 98029 ........................................................................ 98030 ........................................................................ 98031 ........................................................................ 98032 ........................................................................ 98033 ........................................................................ 98034 ........................................................................ 98035 ........................................................................ 98036 ........................................................................ 98037 ........................................................................ 98038 ........................................................................ 98039 ........................................................................ 98040 ........................................................................ 98041 ........................................................................ 98042 ........................................................................ 98043 ........................................................................ 98044 ........................................................................ 98045 ........................................................................ 98046 ........................................................................ 98047 ........................................................................ 98048 ........................................................................ 98049 ........................................................................ 98050 ........................................................................ 98051 ........................................................................ 98052 ........................................................................ 98053 ........................................................................ 98054 ........................................................................ 98055 ........................................................................ 98056 ........................................................................ 98057 ........................................................................ 98058 ........................................................................ 98059 ........................................................................ 98060 ........................................................................ 98061 ........................................................................ 98062 ........................................................................ 98063 ........................................................................ 98064 ........................................................................ 98065 ........................................................................ 98066 ........................................................................ 98067 ........................................................................ 98068 ........................................................................ 98069 ........................................................................ 98070 ........................................................................ 98071 ........................................................................ 98072 ........................................................................ 98073 ........................................................................ 98074 ........................................................................ 98075 ........................................................................ 98076 ........................................................................ 98077 ........................................................................ 98078 ........................................................................ 98079 ........................................................................ 98080 ........................................................................ 98081 ........................................................................ 98082 ........................................................................ 98083 ........................................................................ 98084 ........................................................................ 98085 ........................................................................ 98086 ........................................................................ 98087 ........................................................................ 98088 ........................................................................ 98089 ........................................................................ 98090 ........................................................................ 98091 ........................................................................ 98092 ........................................................................ 98093 ........................................................................ 98094 ........................................................................ 98095 ........................................................................ 98096 ........................................................................ 98097 ........................................................................ 98098 ........................................................................ 98099 ........................................................................ 98100 ........................................................................ 98101 ........................................................................ 98102 ........................................................................ 98103 ........................................................................ 98104 ........................................................................ 98105 ........................................................................ 98106 ........................................................................ 98107 ........................................................................ 98108 ........................................................................ 98109 ........................................................................ 98110 ........................................................................ 98111 ........................................................................ 98112 ........................................................................ 98113 ........................................................................ 98114 ........................................................................ 98115 ........................................................................ 98116 ........................................................................ 98117 ........................................................................ 98118 ........................................................................ 98119 ........................................................................ 98120 ........................................................................ 98121 ........................................................................ 98122 ........................................................................ 98123 ........................................................................ 98124 ........................................................................ 98125 ........................................................................ 98126 ........................................................................ 98127 ........................................................................ 98128 ........................................................................ 98129 ........................................................................ 98130 ........................................................................ 98131 ........................................................................ 98132 ........................................................................ 98133 ........................................................................ 98134 ........................................................................ 98135 ........................................................................ 98136 ........................................................................ 98137 ........................................................................ 98138 ........................................................................ 98139 ........................................................................ 98140 ........................................................................ 98141 ........................................................................ 98142 ........................................................................ 98143 ........................................................................ 98144 ........................................................................ 98145 ........................................................................ 98146 ........................................................................ 98147 ........................................................................ 98148 ........................................................................ 98149 ........................................................................ 98150 ........................................................................ 98151 ........................................................................ 98152 ........................................................................ 98153 ........................................................................ 98154 ........................................................................ 98155 ........................................................................ 98156 ........................................................................ 98157 ........................................................................ 98158 ........................................................................ 98159 ........................................................................ 98160 ........................................................................ 98161 ........................................................................ 98162 ........................................................................ 98163 ........................................................................ 98164 ........................................................................ 98165 ........................................................................ 98166 ........................................................................ 98167 ........................................................................ 98168 ........................................................................ 98169 ........................................................................ 98170 ........................................................................ 98171 ........................................................................ 98172 ........................................................................ 98173 ........................................................................ 98174 ........................................................................ 98175 ........................................................................ 98176 ........................................................................ 98177 ........................................................................ 98178 ........................................................................ 98179 ........................................................................ 98180 ........................................................................ 98181 ........................................................................ 98182 ........................................................................ 98183 ........................................................................ 98184 ........................................................................ 98185 ........................................................................ 98186 ........................................................................ 98187 ........................................................................ 98188 ........................................................................ 98189 ........................................................................ 98190 ........................................................................ 98191 ........................................................................ 98192 ........................................................................ 98193 ........................................................................ 98194 ........................................................................ 98195 ........................................................................ 98196 ........................................................................ 98197 ........................................................................ 98198 ........................................................................ 98199 ........................................................................ 98200 ........................................................................ 98201 ........................................................................ 98202 ........................................................................ 98203 ........................................................................ 98204 ........................................................................ 98205 ........................................................................ 98206 ........................................................................ 98207 ........................................................................ 98208 ........................................................................ 98209 ........................................................................ 98210 ........................................................................ 98211 ........................................................................ 98212 ........................................................................ 98213 ........................................................................ 98214 ........................................................................ 98215 ........................................................................ 98216 ........................................................................ 98217 ........................................................................ 98218 ........................................................................ 98219 ........................................................................ 98220 ........................................................................ 98221 ........................................................................ 98222 ........................................................................ 98223 ........................................................................ 98224 ........................................................................ 98225 ........................................................................ 98226 ........................................................................ 98227 ........................................................................ 98228 ........................................................................ 98229 ........................................................................ 98230 ........................................................................ 98231 ........................................................................ 98232 ........................................................................ 98233 ........................................................................ 98234 ........................................................................ 98235 ........................................................................ 98236 ........................................................................ 98237 ........................................................................ 98238 ........................................................................ 98239 ........................................................................ 98240 ........................................................................ 98241 ........................................................................ 98242 ........................................................................ 98243 ........................................................................ 98244 ........................................................................ 98245 ........................................................................ 98246 ........................................................................ 98247 ........................................................................ 98248 ........................................................................ 98249 ........................................................................ 98250 ........................................................................ 98251 ........................................................................ 98252 ........................................................................ 98253 ........................................................................ 98254 ........................................................................ 98255 ........................................................................ 98256 ........................................................................ 98257 ........................................................................ 98258 ........................................................................ 98259 ........................................................................ 98260 ........................................................................ 98261 ........................................................................ 98262 ........................................................................ 98263 ........................................................................ 98264 ........................................................................ 98265 ........................................................................ 98266 ........................................................................ 98267 ........................................................................ 98268 ........................................................................ 98269 ........................................................................ 98270 ........................................................................ 98271 ........................................................................ 98272 ........................................................................ 98273 ........................................................................ 98274 ........................................................................ 98275 ........................................................................ 98276 ........................................................................ 98277 ........................................................................ 98278 ........................................................................ 98279 ........................................................................ 98280 ........................................................................ 98281 ........................................................................ 98282 ........................................................................ 98283 ........................................................................ 98284 ........................................................................ 98285 ........................................................................ 98286 ........................................................................ 98287 ........................................................................ 98288 ........................................................................ 98289 ........................................................................ 98290 ........................................................................ 98291 ........................................................................ 98292 ........................................................................ 98293 ........................................................................ 98294 ........................................................................ 98295 ........................................................................ 98296 ........................................................................ 98297 ........................................................................ 98298 ........................................................................ 98299 ........................................................................ 98300 ........................................................................ 98301 ........................................................................ 98302 ........................................................................ 98303 ........................................................................ 98304 ........................................................................ 98305 ........................................................................ 98306 ........................................................................ 98307 ........................................................................ 98308 ........................................................................ 98309 ........................................................................ 98310 ........................................................................ 98311 ........................................................................ 98312 ........................................................................ 98313 ........................................................................ 98314 ........................................................................ 98315 ........................................................................ 98316 ........................................................................ 98317 ........................................................................ 98318 ........................................................................ 98319 ........................................................................ 98320 ........................................................................ 98321 ........................................................................ 98322 ........................................................................ 98323 ........................................................................ 98324 ........................................................................ 98325 ........................................................................ 98326 ........................................................................ 98327 ........................................................................ 98328 ........................................................................ 98329 ........................................................................ 98330 ........................................................................ 98331 ........................................................................ 98332 ........................................................................ 98333 ........................................................................ 98334 ........................................................................ 98335 ........................................................................ 98336 ........................................................................ 98337 ........................................................................ 98338 ........................................................................ 98339 ........................................................................ 98340 ........................................................................ 98341 ........................................................................ 98342 ........................................................................ 98343 ........................................................................ 98344 ........................................................................ 98345 ........................................................................ 98346 ........................................................................ 98347 ........................................................................ 98348 ........................................................................ 98349 ........................................................................ 98350 ........................................................................ 98351 ........................................................................ 98352 ........................................................................ 98353 ........................................................................ 98354 ........................................................................ 98355 ........................................................................ 98356 ........................................................................ 98357 ........................................................................ 98358 ........................................................................ 98359 ........................................................................ 98360 ........................................................................ 98361 ........................................................................ 98362 ........................................................................ 98363 ........................................................................ 98364 ........................................................................ 98365 ........................................................................ 98366 ........................................................................ 98367 ........................................................................ 98368 ........................................................................ 98369 ........................................................................ 98370 ........................................................................ 98371 ........................................................................ 98372 ........................................................................ 98373 ........................................................................ 98374 ........................................................................ 98375 ........................................................................ 98376 ........................................................................ 98377 ........................................................................ 98378 ........................................................................ 98379 ........................................................................ 98380 ........................................................................ 98381 ........................................................................ 98382 ........................................................................ 98383 ........................................................................ 98384 ........................................................................ 98385 ........................................................................ 98386 ........................................................................ 98387 ........................................................................ 98388 ........................................................................ 98389 ........................................................................ 98390 ........................................................................ 98391 ........................................................................ 98392 ........................................................................ 98393 ........................................................................ 98394 ........................................................................ 98395 ........................................................................ 98396 ........................................................................ 98397 ........................................................................ 98398 ........................................................................ 98399 ........................................................................ 98400 ........................................................................ 98401 ........................................................................ 98402 ........................................................................ 98403 ........................................................................ 98404 ........................................................................ 98405 ........................................................................ 98406 ........................................................................ 98407 ........................................................................ 98408 ........................................................................ 98409 ........................................................................ 98410 ........................................................................ 98411 ........................................................................ 98412 ........................................................................ 98413 ........................................................................ 98414 ........................................................................ 98415 ........................................................................ 98416 ........................................................................ 98417 ........................................................................ 98418 ........................................................................ 98419 ........................................................................ 98420 ........................................................................ 98421 ........................................................................ 98422 ........................................................................ 98423 ........................................................................ 98424 ........................................................................ 98425 ........................................................................ 98426 ........................................................................ 98427 ........................................................................ 98428 ........................................................................ 98429 ........................................................................ 98430 ........................................................................ 98431 ........................................................................ 98432 ........................................................................ 98433 ........................................................................ 98434 ........................................................................ 98435 ........................................................................ 98436 ........................................................................ 98437 ........................................................................ 98438 ........................................................................ 98439 ........................................................................ 98440 ........................................................................ 98441 ........................................................................ 98442 ........................................................................ 98443 ........................................................................ 98444 ........................................................................ 98445 ........................................................................ 98446 ........................................................................ 98447 ........................................................................ 98448 ........................................................................ 98449 ........................................................................ 98450 ........................................................................ 98451 ........................................................................ 98452 ........................................................................ 98453 ........................................................................ 98454 ........................................................................ 98455 ........................................................................ 98456 ........................................................................ 98457 ........................................................................ 98458 ........................................................................ 98459 ........................................................................ 98460 ........................................................................ 98461 ........................................................................ 98462 ........................................................................ 98463 ........................................................................ 98464 ........................................................................ 98465 ........................................................................ 98466 ........................................................................ 98467 ........................................................................ 98468 ........................................................................ 98469 ........................................................................ 98470 ........................................................................ 98471 ........................................................................ 98472 ........................................................................ 98473 ........................................................................ 98474 ........................................................................ 98475 ........................................................................ 98476 ........................................................................ 98477 ........................................................................ 98478 ........................................................................ 98479 ........................................................................ 98480 ........................................................................ 98481 ........................................................................ 98482 ........................................................................ 98483 ........................................................................ 98484 ........................................................................ 98485 ........................................................................ 98486 ........................................................................ 98487 ........................................................................ 98488 ........................................................................ 98489 ........................................................................ 98490 ........................................................................ 98491 ........................................................................ 98492 ........................................................................ 98493 ........................................................................ 98494 ........................................................................ 98495 ........................................................................ 98496 ........................................................................ 98497 ........................................................................ 98498 ........................................................................ 98499 ........................................................................ 98500 ........................................................................ 98501 ........................................................................ 98502 ........................................................................ 98503 ........................................................................ 98504 ........................................................................ 98505 ........................................................................ 98506 ........................................................................ 98507 ........................................................................ 98508 ........................................................................ 98509 ........................................................................ 98510 ........................................................................ 98511 ........................................................................ 98512 ........................................................................ 98513 ........................................................................ 98514 ........................................................................ 98515 ........................................................................ 98516 ........................................................................ 98517 ........................................................................ 98518 ........................................................................ 98519 ........................................................................ 98520 ........................................................................ 98521 ........................................................................ 98522 ........................................................................ 98523 ........................................................................ 98524 ........................................................................ 98525 ........................................................................ 98526 ........................................................................ 98527 ........................................................................ 98528 ........................................................................ 98529 ........................................................................ 98530 ........................................................................ 98531 ........................................................................ 98532 ........................................................................ 98533 ........................................................................ 98534 ........................................................................ 98535 ........................................................................ 98536 ........................................................................ 98537 ........................................................................ 98538 ........................................................................ 98539 ........................................................................ 98540 ........................................................................ 98541 ........................................................................ 98542 ........................................................................ 98543 ........................................................................ 98544 ........................................................................ 98545 ........................................................................ 98546 ........................................................................ 98547 ........................................................................ 98548 ........................................................................ 98549 ........................................................................ 98550 ........................................................................ 98551 ........................................................................ 98552 ........................................................................ 98553 ........................................................................ 98554 ........................................................................ 98555 ........................................................................ 98556 ........................................................................ 98557 ........................................................................ 98558 ........................................................................ 98559 ........................................................................ 98560 ........................................................................ 98561 ........................................................................ 98562 ........................................................................ 98563 ........................................................................ 98564 ........................................................................ 98565 ........................................................................ 98566 ........................................................................ 98567 ........................................................................ 98568 ........................................................................ 98569 ........................................................................ 98570 ........................................................................ 98571 ........................................................................ 98572 ........................................................................ 98573 ........................................................................ 98574 ........................................................................ 98575 ........................................................................ 98576 ........................................................................ 98577 ........................................................................ 98578 ........................................................................ 98579 ........................................................................ 98580 ........................................................................ 98581 ........................................................................ 98582 ........................................................................ 98583 ........................................................................ 98584 ........................................................................ 98585 ........................................................................ 98586 ........................................................................ 98587 ........................................................................ 98588 ........................................................................ 98589 ........................................................................ 98590 ........................................................................ 98591 ........................................................................ 98592 ........................................................................ 98593 ........................................................................ 98594 ........................................................................ 98595 ........................................................................ 98596 ........................................................................ 98597 ........................................................................ 98598 ........................................................................ 98599 ........................................................................ 98600 ........................................................................ 98601 ........................................................................ 98602 ........................................................................ 98603 ........................................................................ 98604 ........................................................................ 98605 ........................................................................ 98606 ........................................................................ 98607 ........................................................................ 98608 ........................................................................ 98609 ........................................................................ 98610 ........................................................................ 98611 ........................................................................ 98612 ........................................................................ 98613 ........................................................................ 98614 ........................................................................ 98615 ........................................................................ 98616 ........................................................................ 98617 ........................................................................ 98618 ........................................................................ 98619 ........................................................................ 98620 ........................................................................ 98621 ........................................................................ 98622 ........................................................................ 98623 ........................................................................ 98624 ........................................................................ 98625 ........................................................................ 98626 ........................................................................ 98627 ........................................................................ 98628 ........................................................................ 98629 ........................................................................ 98630 ........................................................................ 98631 ........................................................................ 98632 ........................................................................ 98633 ........................................................................ 98634 ........................................................................ 98635 ........................................................................ 98636 ........................................................................ 98637 ........................................................................ 98638 ........................................................................ 98639 ........................................................................ 98640 ........................................................................ 98641 ........................................................................ 98642 ........................................................................ 98643 ........................................................................ 98644 ........................................................................ 98645 ........................................................................ 98646 ........................................................................ 98647 ........................................................................ 98648 ........................................................................ 98649 ........................................................................ 98650 ........................................................................ 98651 ........................................................................ 98652 ........................................................................ 98653 ........................................................................ 98654 ........................................................................ 98655 ........................................................................ 98656 ........................................................................ 98657 ........................................................................ 98658 ........................................................................ 98659 ........................................................................ 98660 ........................................................................ 98661 ........................................................................ 98662 ........................................................................ 98663 ........................................................................ 98664 ........................................................................ 98665 ........................................................................ 98666 ........................................................................ 98667 ........................................................................ 98668 ........................................................................ 98669 ........................................................................ 98670 ........................................................................ 98671 ........................................................................ 98672 ........................................................................ 98673 ........................................................................ 98674 ........................................................................ 98675 ........................................................................ 98676 ........................................................................ 98677 ........................................................................ 98678 ........................................................................ 98679 ........................................................................ 98680 ........................................................................ 98681 ........................................................................ 98682 ........................................................................ 98683 ........................................................................ 98684 ........................................................................ 98685 ........................................................................ 98686 ........................................................................ 98687 ........................................................................ 98688 ........................................................................ 98689 ........................................................................ 98690 ........................................................................ 98691 ........................................................................ 98692 ........................................................................ 98693 ........................................................................ 98694 ........................................................................ 98695 ........................................................................ 98696 ........................................................................ 98697 ........................................................................ 98698 ........................................................................ 98699 ........................................................................ 98700 ........................................................................ 98701 ........................................................................ 98702 ........................................................................ 98703 ........................................................................ 98704 ........................................................................ 98705 ........................................................................ 98706 ........................................................................ 98707 ........................................................................ 98708 ........................................................................ 98709 ........................................................................ 98710 ........................................................................ 98711 ........................................................................ 98712 ........................................................................ 98713 ........................................................................ 98714 ........................................................................ 98715 ........................................................................ 98716 ........................................................................ 98717 ........................................................................ 98718 ........................................................................ 98719 ........................................................................ 98720 ........................................................................ 98721 ........................................................................ 98722 ........................................................................ 98723 ........................................................................ 98724 ........................................................................ 98725 ........................................................................ 98726 ........................................................................ 98727 ........................................................................ 98728 ........................................................................ 98729 ........................................................................ 98730 ........................................................................ 98731 ........................................................................ 98732 ........................................................................ 98733 ........................................................................ 98734 ........................................................................ 98735 ........................................................................ 98736 ........................................................................ 98737 ........................................................................ 98738 ........................................................................ 98739 ........................................................................ 98740 ........................................................................ 98741 ........................................................................ 98742 ........................................................................ 98743 ........................................................................ 98744 ........................................................................ 98745 ........................................................................ 98746 ........................................................................ 98747 ........................................................................ 98748 ........................................................................ 98749 ........................................................................ 98750 ........................................................................ 98751 ........................................................................ 98752 ........................................................................ 98753 ........................................................................ 98754 ........................................................................ 98755 ........................................................................ 98756 ........................................................................ 98757 ........................................................................ 98758 ........................................................................ 98759 ........................................................................ 98760 ........................................................................ 98761 ........................................................................ 98762 ........................................................................ 98763 ........................................................................ 98764 ........................................................................ 98765 ........................................................................ 98766 ........................................................................ 98767 ........................................................................ 98768 ........................................................................ 98769 ........................................................................ 98770 ........................................................................ 98771 ........................................................................ 98772 ........................................................................ 98773 ........................................................................ 98774 ........................................................................ 98775 ........................................................................ 98776 ........................................................................ 98777 ........................................................................ 98778 ........................................................................ 98779 ........................................................................ 98780 ........................................................................ 98781 ........................................................................ 98782 ........................................................................ 98783 ........................................................................ 98784 ........................................................................ 98785 ........................................................................ 98786 ........................................................................ 98787 ........................................................................ 98788 ........................................................................ 98789 ........................................................................ 98790 ........................................................................ 98791 ........................................................................ 98792 ........................................................................ 98793 ........................................................................ 98794 ........................................................................ 98795 ........................................................................ 98796 ........................................................................ 98797 ........................................................................ 98798 ........................................................................ 98799 ........................................................................ 98800 ........................................................................ 98801 ........................................................................ 98802 ........................................................................ 98803 ........................................................................ 98804 ........................................................................ 98805 ........................................................................ 98806 ........................................................................ 98807 ........................................................................ 98808 ........................................................................ 98809 ........................................................................ 98810 ........................................................................ 98811 ........................................................................ 98812 ........................................................................ 98813 ........................................................................ 98814 ........................................................................ 98815 ........................................................................ 98816 ........................................................................ 98817 ........................................................................ 98818 ........................................................................ 98819 ........................................................................ 98820 ........................................................................ 98821 ........................................................................ 98822 ........................................................................ 98823 ........................................................................ 98824 ........................................................................ 98825 ........................................................................ 98826 ........................................................................ 98827 ........................................................................ 98828 ........................................................................ 98829 ........................................................................ 98830 ........................................................................ 98831 ........................................................................ 98832 ........................................................................ 98833 ........................................................................ 98834 ........................................................................ 98835 ........................................................................ 98836 ........................................................................ 98837 ........................................................................ 98838 ........................................................................ 98839 ........................................................................ 98840 ........................................................................ 98841 ........................................................................ 98842 ........................................................................ 98843 ........................................................................ 98844 ........................................................................ 98845 ........................................................................ 98846 ........................................................................ 98847 ........................................................................ 98848 ........................................................................ 98849 ........................................................................ 98850 ........................................................................ 98851 ........................................................................ 98852 ........................................................................ 98853 ........................................................................ 98854 ........................................................................ 98855 ........................................................................ 98856 ........................................................................ 98857 ........................................................................ 98858 ........................................................................ 98859 ........................................................................ 98860 ........................................................................ 98861 ........................................................................ 98862 ........................................................................ 98863 ........................................................................ 98864 ........................................................................ 98865 ........................................................................ 98866 ........................................................................ 98867 ........................................................................ 98868 ........................................................................ 98869 ........................................................................ 98870 ........................................................................ 98871 ........................................................................ 98872 ........................................................................ 98873 ........................................................................ 98874 ........................................................................ 98875 ........................................................................ 98876 ........................................................................ 98877 ........................................................................ 98878 ........................................................................ 98879 ........................................................................ 98880 ........................................................................ 98881 ........................................................................ 98882 ........................................................................ 98883 ........................................................................ 98884 ........................................................................ 98885 ........................................................................ 98886 ........................................................................ 98887 ........................................................................ 98888 ........................................................................ 98889 ........................................................................ 98890 ........................................................................ 98891 ........................................................................ 98892 ........................................................................ 98893 ........................................................................ 98894 ........................................................................ 98895 ........................................................................ 98896 ........................................................................ 98897 ........................................................................ 98898 ........................................................................ 98899 ........................................................................ 98900 ........................................................................ 98901 ........................................................................ 98902 ........................................................................ 98903 ........................................................................ 98904 ........................................................................ 98905 ........................................................................ 98906 ........................................................................ 98907 ........................................................................ 98908 ........................................................................ 98909 ........................................................................ 98910 ........................................................................ 98911 ........................................................................ 98912 ........................................................................ 98913 ........................................................................ 98914 ........................................................................ 98915 ........................................................................ 98916 ........................................................................ 98917 ........................................................................ 98918 ........................................................................ 98919 ........................................................................ 98920 ........................................................................ 98921 ........................................................................ 98922 ........................................................................ 98923 ........................................................................ 98924 ........................................................................ 98925 ........................................................................ 98926 ........................................................................ 98927 ........................................................................ 98928 ........................................................................ 98929 ........................................................................ 98930 ........................................................................ 98931 ........................................................................ 98932 ........................................................................ 98933 ........................................................................ 98934 ........................................................................ 98935 ........................................................................ 98936 ........................................................................ 98937 ........................................................................ 98938 ........................................................................ 98939 ........................................................................ 98940 ........................................................................ 98941 ........................................................................ 98942 ........................................................................ 98943 ........................................................................ 98944 ........................................................................ 98945 ........................................................................ 98946 ........................................................................ 98947 ........................................................................ 98948 ........................................................................ 98949 ........................................................................ 98950 ........................................................................ 98951 ........................................................................ 98952 ........................................................................ 98953 ........................................................................ 98954 ........................................................................ 98955 ........................................................................ 98956 ........................................................................ 98957 ........................................................................ 98958 ........................................................................ 98959 ........................................................................ 98960 ........................................................................ 98961 ........................................................................ 98962 ........................................................................ 98963 ........................................................................ 98964 ........................................................................ 98965 ........................................................................ 98966 ........................................................................ 98967 ........................................................................ 98968 ........................................................................ 98969 ........................................................................ 98970 ........................................................................ 98971 ........................................................................ 98972 ........................................................................ 98973 ........................................................................ 98974 ........................................................................ 98975 ........................................................................ 98976 ........................................................................ 98977 ........................................................................ 98978 ........................................................................ 98979 ........................................................................ 98980 ........................................................................ 98981 ........................................................................ 98982 ........................................................................ 98983 ........................................................................ 98984 ........................................................................ 98985 ........................................................................ 98986 ........................................................................ 98987 ........................................................................ 98988 ........................................................................ 98989 ........................................................................ 98990 ........................................................................ 98991 ........................................................................ 98992 ........................................................................ 98993 ........................................................................ 98994 ........................................................................ 98995 ........................................................................ 98996 ........................................................................ 98997 ........................................................................ 98998 ........................................................................ 98999 ........................................................................ 99000 ........................................................................ 99001 ........................................................................ 99002 ........................................................................ 99003 ........................................................................ 99004 ........................................................................ 99005 ........................................................................ 99006 ........................................................................ 99007 ........................................................................ 99008 ........................................................................ 99009 ........................................................................ 99010 ........................................................................ 99011 ........................................................................ 99012 ........................................................................ 99013 ........................................................................ 99014 ........................................................................ 99015 ........................................................................ 99016 ........................................................................ 99017 ........................................................................ 99018 ........................................................................ 99019 ........................................................................ 99020 ........................................................................ 99021 ........................................................................ 99022 ........................................................................ 99023 ........................................................................ 99024 ........................................................................ 99025 ........................................................................ 99026 ........................................................................ 99027 ........................................................................ 99028 ........................................................................ 99029 ........................................................................ 99030 ........................................................................ 99031 ........................................................................ 99032 ........................................................................ 99033 ........................................................................ 99034 ........................................................................ 99035 ........................................................................ 99036 ........................................................................ 99037 ........................................................................ 99038 ........................................................................ 99039 ........................................................................ 99040 ........................................................................ 99041 ........................................................................ 99042 ........................................................................ 99043 ........................................................................ 99044 ........................................................................ 99045 ........................................................................ 99046 ........................................................................ 99047 ........................................................................ 99048 ........................................................................ 99049 ........................................................................ 99050 ........................................................................ 99051 ........................................................................ 99052 ........................................................................ 99053 ........................................................................ 99054 ........................................................................ 99055 ........................................................................ 99056 ........................................................................ 99057 ........................................................................ 99058 ........................................................................ 99059 ........................................................................ 99060 ........................................................................ 99061 ........................................................................ 99062 ........................................................................ 99063 ........................................................................ 99064 ........................................................................ 99065 ........................................................................ 99066 ........................................................................ 99067 ........................................................................ 99068 ........................................................................ 99069 ........................................................................ 99070 ........................................................................ 99071 ........................................................................ 99072 ........................................................................ 99073 ........................................................................ 99074 ........................................................................ 99075 ........................................................................ 99076 ........................................................................ 99077 ........................................................................ 99078 ........................................................................ 99079 ........................................................................ 99080 ........................................................................ 99081 ........................................................................ 99082 ........................................................................ 99083 ........................................................................ 99084 ........................................................................ 99085 ........................................................................ 99086 ........................................................................ 99087 ........................................................................ 99088 ........................................................................ 99089 ........................................................................ 99090 ........................................................................ 99091 ........................................................................ 99092 ........................................................................ 99093 ........................................................................ 99094 ........................................................................ 99095 ........................................................................ 99096 ........................................................................ 99097 ........................................................................ 99098 ........................................................................ 99099 ........................................................................ 99100 ........................................................................ 99101 ........................................................................ 99102 ........................................................................ 99103 ........................................................................ 99104 ........................................................................ 99105 ........................................................................ 99106 ........................................................................ 99107 ........................................................................ 99108 ........................................................................ 99109 ........................................................................ 99110 ........................................................................ 99111 ........................................................................ 99112 ........................................................................ 99113 ........................................................................ 99114 ........................................................................ 99115 ........................................................................ 99116 ........................................................................ 99117 ........................................................................ 99118 ........................................................................ 99119 ........................................................................ 99120 ........................................................................ 99121 ........................................................................ 99122 ........................................................................ 99123 ........................................................................ 99124 ........................................................................ 99125 ........................................................................ 99126 ........................................................................ 99127 ........................................................................ 99128 ........................................................................ 99129 ........................................................................ 99130 ........................................................................ 99131 ........................................................................ 99132 ........................................................................ 99133 ........................................................................ 99134 ........................................................................ 99135 ........................................................................ 99136 ........................................................................ 99137 ........................................................................ 99138 ........................................................................ 99139 ........................................................................ 99140 ........................................................................ 99141 ........................................................................ 99142 ........................................................................ 99143 ........................................................................ 99144 ........................................................................ 99145 ........................................................................ 99146 ........................................................................ 99147 ........................................................................ 99148 ........................................................................ 99149 ........................................................................ 99150 ........................................................................ 99151 ........................................................................ 99152 ........................................................................ 99153 ........................................................................ 99154 ........................................................................ 99155 ........................................................................ 99156 ........................................................................ 99157 ........................................................................ 99158 ........................................................................ 99159 ........................................................................ 99160 ........................................................................ 99161 ........................................................................ 99162 ........................................................................ 99163 ........................................................................ 99164 ........................................................................ 99165 ........................................................................ 99166 ........................................................................ 99167 ........................................................................ 99168 ........................................................................ 99169 ........................................................................ 99170 ........................................................................ 99171 ........................................................................ 99172 ........................................................................ 99173 ........................................................................ 99174 ........................................................................ 99175 ........................................................................ 99176 ........................................................................ 99177 ........................................................................ 99178 ........................................................................ 99179 ........................................................................ 99180 ........................................................................ 99181 ........................................................................ 99182 ........................................................................ 99183 ........................................................................ 99184 ........................................................................ 99185 ........................................................................ 99186 ........................................................................ 99187 ........................................................................ 99188 ........................................................................ 99189 ........................................................................ 99190 ........................................................................ 99191 ........................................................................ 99192 ........................................................................ 99193 ........................................................................ 99194 ........................................................................ 99195 ........................................................................ 99196 ........................................................................ 99197 ........................................................................ 99198 ........................................................................ 99199 ........................................................................ 99200 ........................................................................ 99201 ........................................................................ 99202 ........................................................................ 99203 ........................................................................ 99204 ........................................................................ 99205 ........................................................................ 99206 ........................................................................ 99207 ........................................................................ 99208 ........................................................................ 99209 ........................................................................ 99210 ........................................................................ 99211 ........................................................................ 99212 ........................................................................ 99213 ........................................................................ 99214 ........................................................................ 99215 ........................................................................ 99216 ........................................................................ 99217 ........................................................................ 99218 ........................................................................ 99219 ........................................................................ 99220 ........................................................................ 99221 ........................................................................ 99222 ........................................................................ 99223 ........................................................................ 99224 ........................................................................ 99225 ........................................................................ 99226 ........................................................................ 99227 ........................................................................ 99228 ........................................................................ 99229 ........................................................................ 99230 ........................................................................ 99231 ........................................................................ 99232 ........................................................................ 99233 ........................................................................ 99234 ........................................................................ 99235 ........................................................................ 99236 ........................................................................ 99237 ........................................................................ 99238 ........................................................................ 99239 ........................................................................ 99240 ........................................................................ 99241 ........................................................................ 99242 ........................................................................ 99243 ........................................................................ 99244 ........................................................................ 99245 ........................................................................ 99246 ........................................................................ 99247 ........................................................................ 99248 ........................................................................ 99249 ........................................................................ 99250 ........................................................................ 99251 ........................................................................ 99252 ........................................................................ 99253 ........................................................................ 99254 ........................................................................ 99255 ........................................................................ 99256 ........................................................................ 99257 ........................................................................ 99258 ........................................................................ 99259 ........................................................................ 99260 ........................................................................ 99261 ........................................................................ 99262 ........................................................................ 99263 ........................................................................ 99264 ........................................................................ 99265 ........................................................................ 99266 ........................................................................ 99267 ........................................................................ 99268 ........................................................................ 99269 ........................................................................ 99270 ........................................................................ 99271 ........................................................................ 99272 ........................................................................ 99273 ........................................................................ 99274 ........................................................................ 99275 ........................................................................ 99276 ........................................................................ 99277 ........................................................................ 99278 ........................................................................ 99279 ........................................................................ 99280 ........................................................................ 99281 ........................................................................ 99282 ........................................................................ 99283 ........................................................................ 99284 ........................................................................ 99285 ........................................................................ 99286 ........................................................................ 99287 ........................................................................ 99288 ........................................................................ 99289 ........................................................................ 99290 ........................................................................ 99291 ........................................................................ 99292 ........................................................................ 99293 ........................................................................ 99294 ........................................................................ 99295 ........................................................................ 99296 ........................................................................ 99297 ........................................................................ 99298 ........................................................................ 99299 ........................................................................ 99300 ........................................................................ 99301 ........................................................................ 99302 ........................................................................ 99303 ........................................................................ 99304 ........................................................................ 99305 ........................................................................ 99306 ........................................................................ 99307 ........................................................................ 99308 ........................................................................ 99309 ........................................................................ 99310 ........................................................................ 99311 ........................................................................ 99312 ........................................................................ 99313 ........................................................................ 99314 ........................................................................ 99315 ........................................................................ 99316 ........................................................................ 99317 ........................................................................ 99318 ........................................................................ 99319 ........................................................................ 99320 ........................................................................ 99321 ........................................................................ 99322 ........................................................................ 99323 ........................................................................ 99324 ........................................................................ 99325 ........................................................................ 99326 ........................................................................ 99327 ........................................................................ 99328 ........................................................................ 99329 ........................................................................ 99330 ........................................................................ 99331 ........................................................................ 99332 ........................................................................ 99333 ........................................................................ 99334 ........................................................................ 99335 ........................................................................ 99336 ........................................................................ 99337 ........................................................................ 99338 ........................................................................ 99339 ........................................................................ 99340 ........................................................................ 99341 ........................................................................ 99342 ........................................................................ 99343 ........................................................................ 99344 ........................................................................ 99345 ........................................................................ 99346 ........................................................................ 99347 ........................................................................ 99348 ........................................................................ 99349 ........................................................................ 99350 ........................................................................ 99351 ........................................................................ 99352 ........................................................................ 99353 ........................................................................ 99354 ........................................................................ 99355 ........................................................................ 99356 ........................................................................ 99357 ........................................................................ 99358 ........................................................................ 99359 ........................................................................ 99360 ........................................................................ 99361 ........................................................................ 99362 ........................................................................ 99363 ........................................................................ 99364 ........................................................................ 99365 ........................................................................ 99366 ........................................................................ 99367 ........................................................................ 99368 ........................................................................ 99369 ........................................................................ 99370 ........................................................................ 99371 ........................................................................ 99372 ........................................................................ 99373 ........................................................................ 99374 ........................................................................ 99375 ........................................................................ 99376 ........................................................................ 99377 ........................................................................ 99378 ........................................................................ 99379 ........................................................................ 99380 ........................................................................ 99381 ........................................................................ 99382 ........................................................................ 99383 ........................................................................ 99384 ........................................................................ 99385 ........................................................................ 99386 ........................................................................ 99387 ........................................................................ 99388 ........................................................................ 99389 ........................................................................ 99390 ........................................................................ 99391 ........................................................................ 99392 ........................................................................ 99393 ........................................................................ 99394 ........................................................................ 99395 ........................................................................ 99396 ........................................................................ 99397 ........................................................................ 99398 ........................................................................ 99399 ........................................................................ 99400 ........................................................................ 99401 ........................................................................ 99402 ........................................................................ 99403 ........................................................................ 99404 ........................................................................ 99405 ........................................................................ 99406 ........................................................................ 99407 ........................................................................ 99408 ........................................................................ 99409 ........................................................................ 99410 ........................................................................ 99411 ........................................................................ 99412 ........................................................................ 99413 ........................................................................ 99414 ........................................................................ 99415 ........................................................................ 99416 ........................................................................ 99417 ........................................................................ 99418 ........................................................................ 99419 ........................................................................ 99420 ........................................................................ 99421 ........................................................................ 99422 ........................................................................ 99423 ........................................................................ 99424 ........................................................................ 99425 ........................................................................ 99426 ........................................................................ 99427 ........................................................................ 99428 ........................................................................ 99429 ........................................................................ 99430 ........................................................................ 99431 ........................................................................ 99432 ........................................................................ 99433 ........................................................................ 99434 ........................................................................ 99435 ........................................................................ 99436 ........................................................................ 99437 ........................................................................ 99438 ........................................................................ 99439 ........................................................................ 99440 ........................................................................ 99441 ........................................................................ 99442 ........................................................................ 99443 ........................................................................ 99444 ........................................................................ 99445 ........................................................................ 99446 ........................................................................ 99447 ........................................................................ 99448 ........................................................................ 99449 ........................................................................ 99450 ........................................................................ 99451 ........................................................................ 99452 ........................................................................ 99453 ........................................................................ 99454 ........................................................................ 99455 ........................................................................ 99456 ........................................................................ 99457 ........................................................................ 99458 ........................................................................ 99459 ........................................................................ 99460 ........................................................................ 99461 ........................................................................ 99462 ........................................................................ 99463 ........................................................................ 99464 ........................................................................ 99465 ........................................................................ 99466 ........................................................................ 99467 ........................................................................ 99468 ........................................................................ 99469 ........................................................................ 99470 ........................................................................ 99471 ........................................................................ 99472 ........................................................................ 99473 ........................................................................ 99474 ........................................................................ 99475 ........................................................................ 99476 ........................................................................ 99477 ........................................................................ 99478 ........................................................................ 99479 ........................................................................ 99480 ........................................................................ 99481 ........................................................................ 99482 ........................................................................ 99483 ........................................................................ 99484 ........................................................................ 99485 ........................................................................ 99486 ........................................................................ 99487 ........................................................................ 99488 ........................................................................ 99489 ........................................................................ 99490 ........................................................................ 99491 ........................................................................ 99492 ........................................................................ 99493 ........................................................................ 99494 ........................................................................ 99495 ........................................................................ 99496 ........................................................................ 99497 ........................................................................ 99498 ........................................................................ 99499 ........................................................................ 99500 ........................................................................ 99501 ........................................................................ 99502 ........................................................................ 99503 ........................................................................ 99504 ........................................................................ 99505 ........................................................................ 99506 ........................................................................ 99507 ........................................................................ 99508 ........................................................................ 99509 ........................................................................ 99510 ........................................................................ 99511 ........................................................................ 99512 ........................................................................ 99513 ........................................................................ 99514 ........................................................................ 99515 ........................................................................ 99516 ........................................................................ 99517 ........................................................................ 99518 ........................................................................ 99519 ........................................................................ 99520 ........................................................................ 99521 ........................................................................ 99522 ........................................................................ 99523 ........................................................................ 99524 ........................................................................ 99525 ........................................................................ 99526 ........................................................................ 99527 ........................................................................ 99528 ........................................................................ 99529 ........................................................................ 99530 ........................................................................ 99531 ........................................................................ 99532 ........................................................................ 99533 ........................................................................ 99534 ........................................................................ 99535 ........................................................................ 99536 ........................................................................ 99537 ........................................................................ 99538 ........................................................................ 99539 ........................................................................ 99540 ........................................................................ 99541 ........................................................................ 99542 ........................................................................ 99543 ........................................................................ 99544 ........................................................................ 99545 ........................................................................ 99546 ........................................................................ 99547 ........................................................................ 99548 ........................................................................ 99549 ........................................................................ 99550 ........................................................................ 99551 ........................................................................ 99552 ........................................................................ 99553 ........................................................................ 99554 ........................................................................ 99555 ........................................................................ 99556 ........................................................................ 99557 ........................................................................ 99558 ........................................................................ 99559 ........................................................................ 99560 ........................................................................ 99561 ........................................................................ 99562 ........................................................................ 99563 ........................................................................ 99564 ........................................................................ 99565 ........................................................................ 99566 ........................................................................ 99567 ........................................................................ 99568 ........................................................................ 99569 ........................................................................ 99570 ........................................................................ 99571 ........................................................................ 99572 ........................................................................ 99573 ........................................................................ 99574 ........................................................................ 99575 ........................................................................ 99576 ........................................................................ 99577 ........................................................................ 99578 ........................................................................ 99579 ........................................................................ 99580 ........................................................................ 99581 ........................................................................ 99582 ........................................................................ 99583 ........................................................................ 99584 ........................................................................ 99585 ........................................................................ 99586 ........................................................................ 99587 ........................................................................ 99588 ........................................................................ 99589 ........................................................................ 99590 ........................................................................ 99591 ........................................................................ 99592 ........................................................................ 99593 ........................................................................ 99594 ........................................................................ 99595 ........................................................................ 99596 ........................................................................ 99597 ........................................................................ 99598 ........................................................................ 99599 ........................................................................ 99600 ........................................................................ 99601 ........................................................................ 99602 ........................................................................ 99603 ........................................................................ 99604 ........................................................................ 99605 ........................................................................ 99606 ........................................................................ 99607 ........................................................................ 99608 ........................................................................ 99609 ........................................................................ 99610 ........................................................................ 99611 ........................................................................ 99612 ........................................................................ 99613 ........................................................................ 99614 ........................................................................ 99615 ........................................................................ 99616 ........................................................................ 99617 ........................................................................ 99618 ........................................................................ 99619 ........................................................................ 99620 ........................................................................ 99621 ........................................................................ 99622 ........................................................................ 99623 ........................................................................ 99624 ........................................................................ 99625 ........................................................................ 99626 ........................................................................ 99627 ........................................................................ 99628 ........................................................................ 99629 ........................................................................ 99630 ........................................................................ 99631 ........................................................................ 99632 ........................................................................ 99633 ........................................................................ 99634 ........................................................................ 99635 ........................................................................ 99636 ........................................................................ 99637 ........................................................................ 99638 ........................................................................ 99639 ........................................................................ 99640 ........................................................................ 99641 ........................................................................ 99642 ........................................................................ 99643 ........................................................................ 99644 ........................................................................ 99645 ........................................................................ 99646 ........................................................................ 99647 ........................................................................ 99648 ........................................................................ 99649 ........................................................................ 99650 ........................................................................ 99651 ........................................................................ 99652 ........................................................................ 99653 ........................................................................ 99654 ........................................................................ 99655 ........................................................................ 99656 ........................................................................ 99657 ........................................................................ 99658 ........................................................................ 99659 ........................................................................ 99660 ........................................................................ 99661 ........................................................................ 99662 ........................................................................ 99663 ........................................................................ 99664 ........................................................................ 99665 ........................................................................ 99666 ........................................................................ 99667 ........................................................................ 99668 ........................................................................ 99669 ........................................................................ 99670 ........................................................................ 99671 ........................................................................ 99672 ........................................................................ 99673 ........................................................................ 99674 ........................................................................ 99675 ........................................................................ 99676 ........................................................................ 99677 ........................................................................ 99678 ........................................................................ 99679 ........................................................................ 99680 ........................................................................ 99681 ........................................................................ 99682 ........................................................................ 99683 ........................................................................ 99684 ........................................................................ 99685 ........................................................................ 99686 ........................................................................ 99687 ........................................................................ 99688 ........................................................................ 99689 ........................................................................ 99690 ........................................................................ 99691 ........................................................................ 99692 ........................................................................ 99693 ........................................................................ 99694 ........................................................................ 99695 ........................................................................ 99696 ........................................................................ 99697 ........................................................................ 99698 ........................................................................ 99699 ........................................................................ 99700 ........................................................................ 99701 ........................................................................ 99702 ........................................................................ 99703 ........................................................................ 99704 ........................................................................ 99705 ........................................................................ 99706 ........................................................................ 99707 ........................................................................ 99708 ........................................................................ 99709 ........................................................................ 99710 ........................................................................ 99711 ........................................................................ 99712 ........................................................................ 99713 ........................................................................ 99714 ........................................................................ 99715 ........................................................................ 99716 ........................................................................ 99717 ........................................................................ 99718 ........................................................................ 99719 ........................................................................ 99720 ........................................................................ 99721 ........................................................................ 99722 ........................................................................ 99723 ........................................................................ 99724 ........................................................................ 99725 ........................................................................ 99726 ........................................................................ 99727 ........................................................................ 99728 ........................................................................ 99729 ........................................................................ 99730 ........................................................................ 99731 ........................................................................ 99732 ........................................................................ 99733 ........................................................................ 99734 ........................................................................ 99735 ........................................................................ 99736 ........................................................................ 99737 ........................................................................ 99738 ........................................................................ 99739 ........................................................................ 99740 ........................................................................ 99741 ........................................................................ 99742 ........................................................................ 99743 ........................................................................ 99744 ........................................................................ 99745 ........................................................................ 99746 ........................................................................ 99747 ........................................................................ 99748 ........................................................................ 99749 ........................................................................ 99750 ........................................................................ 99751 ........................................................................ 99752 ........................................................................ 99753 ........................................................................ 99754 ........................................................................ 99755 ........................................................................ 99756 ........................................................................ 99757 ........................................................................ 99758 ........................................................................ 99759 ........................................................................ 99760 ........................................................................ 99761 ........................................................................ 99762 ........................................................................ 99763 ........................................................................ 99764 ........................................................................ 99765 ........................................................................ 99766 ........................................................................ 99767 ........................................................................ 99768 ........................................................................ 99769 ........................................................................ 99770 ........................................................................ 99771 ........................................................................ 99772 ........................................................................ 99773 ........................................................................ 99774 ........................................................................ 99775 ........................................................................ 99776 ........................................................................ 99777 ........................................................................ 99778 ........................................................................ 99779 ........................................................................ 99780 ........................................................................ 99781 ........................................................................ 99782 ........................................................................ 99783 ........................................................................ 99784 ........................................................................ 99785 ........................................................................ 99786 ........................................................................ 99787 ........................................................................ 99788 ........................................................................ 99789 ........................................................................ 99790 ........................................................................ 99791 ........................................................................ 99792 ........................................................................ 99793 ........................................................................ 99794 ........................................................................ 99795 ........................................................................ 99796 ........................................................................ 99797 ........................................................................ 99798 ........................................................................ 99799 ........................................................................ 99800 ........................................................................ 99801 ........................................................................ 99802 ........................................................................ 99803 ........................................................................ 99804 ........................................................................ 99805 ........................................................................ 99806 ........................................................................ 99807 ........................................................................ 99808 ........................................................................ 99809 ........................................................................ 99810 ........................................................................ 99811 ........................................................................ 99812 ........................................................................ 99813 ........................................................................ 99814 ........................................................................ 99815 ........................................................................ 99816 ........................................................................ 99817 ........................................................................ 99818 ........................................................................ 99819 ........................................................................ 99820 ........................................................................ 99821 ........................................................................ 99822 ........................................................................ 99823 ........................................................................ 99824 ........................................................................ 99825 ........................................................................ 99826 ........................................................................ 99827 ........................................................................ 99828 ........................................................................ 99829 ........................................................................ 99830 ........................................................................ 99831 ........................................................................ 99832 ........................................................................ 99833 ........................................................................ 99834 ........................................................................ 99835 ........................................................................ 99836 ........................................................................ 99837 ........................................................................ 99838 ........................................................................ 99839 ........................................................................ 99840 ........................................................................ 99841 ........................................................................ 99842 ........................................................................ 99843 ........................................................................ 99844 ........................................................................ 99845 ........................................................................ 99846 ........................................................................ 99847 ........................................................................ 99848 ........................................................................ 99849 ........................................................................ 99850 ........................................................................ 99851 ........................................................................ 99852 ........................................................................ 99853 ........................................................................ 99854 ........................................................................ 99855 ........................................................................ 99856 ........................................................................ 99857 ........................................................................ 99858 ........................................................................ 99859 ........................................................................ 99860 ........................................................................ 99861 ........................................................................ 99862 ........................................................................ 99863 ........................................................................ 99864 ........................................................................ 99865 ........................................................................ 99866 ........................................................................ 99867 ........................................................................ 99868 ........................................................................ 99869 ........................................................................ 99870 ........................................................................ 99871 ........................................................................ 99872 ........................................................................ 99873 ........................................................................ 99874 ........................................................................ 99875 ........................................................................ 99876 ........................................................................ 99877 ........................................................................ 99878 ........................................................................ 99879 ........................................................................ 99880 ........................................................................ 99881 ........................................................................ 99882 ........................................................................ 99883 ........................................................................ 99884 ........................................................................ 99885 ........................................................................ 99886 ........................................................................ 99887 ........................................................................ 99888 ........................................................................ 99889 ........................................................................ 99890 ........................................................................ 99891 ........................................................................ 99892 ........................................................................ 99893 ........................................................................ 99894 ........................................................................ 99895 ........................................................................ 99896 ........................................................................ 99897 ........................................................................ 99898 ........................................................................ 99899 ........................................................................ 99900 ........................................................................ 99901 ........................................................................ 99902 ........................................................................ 99903 ........................................................................ 99904 ........................................................................ 99905 ........................................................................ 99906 ........................................................................ 99907 ........................................................................ 99908 ........................................................................ 99909 ........................................................................ 99910 ........................................................................ 99911 ........................................................................ 99912 ........................................................................ 99913 ........................................................................ 99914 ........................................................................ 99915 ........................................................................ 99916 ........................................................................ 99917 ........................................................................ 99918 ........................................................................ 99919 ........................................................................ 99920 ........................................................................ 99921 ........................................................................ 99922 ........................................................................ 99923 ........................................................................ 99924 ........................................................................ 99925 ........................................................................ 99926 ........................................................................ 99927 ........................................................................ 99928 ........................................................................ 99929 ........................................................................ 99930 ........................................................................ 99931 ........................................................................ 99932 ........................................................................ 99933 ........................................................................ 99934 ........................................................................ 99935 ........................................................................ 99936 ........................................................................ 99937 ........................................................................ 99938 ........................................................................ 99939 ........................................................................ 99940 ........................................................................ 99941 ........................................................................ 99942 ........................................................................ 99943 ........................................................................ 99944 ........................................................................ 99945 ........................................................................ 99946 ........................................................................ 99947 ........................................................................ 99948 ........................................................................ 99949 ........................................................................ 99950 ........................................................................ 99951 ........................................................................ 99952 ........................................................................ 99953 ........................................................................ 99954 ........................................................................ 99955 ........................................................................ 99956 ........................................................................ 99957 ........................................................................ 99958 ........................................................................ 99959 ........................................................................ 99960 ........................................................................ 99961 ........................................................................ 99962 ........................................................................ 99963 ........................................................................ 99964 ........................................................................ 99965 ........................................................................ 99966 ........................................................................ 99967 ........................................................................ 99968 ........................................................................ 99969 ........................................................................ 99970 ........................................................................ 99971 ........................................................................ 99972 ........................................................................ 99973 ........................................................................ 99974 ........................................................................ 99975 ........................................................................ 99976 ........................................................................ 99977 ........................................................................ 99978 ........................................................................ 99979 ........................................................................ 99980 ........................................................................ 99981 ........................................................................ 99982 ........................................................................ 99983 ........................................................................ 99984 ........................................................................ 99985 ........................................................................ 99986 ........................................................................ 99987 ........................................................................ 99988 ........................................................................ 99989 ........................................................................ 99990 ........................................................................ 99991 ........................................................................ 99992 ........................................................................ 99993 ........................................................................ 99994 ........................................................................ 99995 ........................................................................ 99996 ........................................................................ 99997 ........................................................................ 99998 ........................................................................ 99999 ........................................................................ omake-0.9.8.5/test/shell/Test2/OMakeroot0000664000152300015230000000315610640002226016042 0ustar jyhjyh######################################################################## # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the # File is furnished to do so, subject to the following condition: # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE FILE OR # THE USE OR OTHER DEALINGS IN THE FILE. ######################################################################## # The standard OMakeroot file. # You will not normally need to modify this file. # By default, your changes should be placed in the # OMakefile in this directory. # # If you decide to modify this file, note that it uses exactly # the same syntax as the OMakefile. # # # Include the standard installed configuration files. # Any of these can be deleted if you are not using them, # but you probably want to keep the Common file. # open build/C open build/OCaml open build/LaTeX # # The command-line variables are defined *after* the # standard configuration has been loaded. # DefineCommandVars() # # Include the OMakefile in this directory. # .SUBDIRS: . omake-0.9.8.5/test/shell/Test1/0000775000152300015230000000000010660137220014216 5ustar jyhjyhomake-0.9.8.5/test/shell/Test1/run.osh0000664000152300015230000000057310655725725015563 0ustar jyhjyhopen ../../diff osh shell.om > stdout expected(line) = if $(eq $(line), 2) value $"Current directory: $(dir sub/sub)" else value $"Current directory: $(dir sub)" awk(stdout) default if $(not $(equal $0, $(expected $(FNR)))) eprintln($"Line $(FNR) mismatch:") eprintln($"Expected: $(expected $(FNR))") eprintln($"Actual: $0") exit 1 omake-0.9.8.5/test/shell/Test1/shell.om0000664000152300015230000000032310637764423015677 0ustar jyhjyhROOT = $(dir .) pwd() = println($"Current directory: $(in $(ROOT), $(dir .))") mkdir -p sub/sub x() = cd sub pwd() Shell. += foo(argv) = cd sub pwd() x() foo 10 x() omake-0.9.8.5/test/object/0000775000152300015230000000000010660137217013363 5ustar jyhjyhomake-0.9.8.5/test/object/Test090000664000152300015230000000041310655734556014411 0ustar jyhjyho. = val = 0 incr(x) = val = $(add $(val), $(x)) export printvln($o) o.incr(2) o.incr(3) printvln($o) if $(not $(eq $(o.val), 5)) eprintln($"Object hoisting test failed!") eprintln($"Expected: 5") eprintln($"Actual: $(o.val)") exit 2 omake-0.9.8.5/test/object/Test080000664000152300015230000000033210655734556014410 0ustar jyhjyhmap. = extends $(Map) $|key| = old map.foreach(key, val) map = $(map.add $(key), new) export map new = $(map.find key) if $(not $(equal $(new), new)) println($"Note: hoist overrides export") exit 1 omake-0.9.8.5/test/object/Test070000664000152300015230000000017710652160535014401 0ustar jyhjyhA. = extends $(Map) $|aaa| = bbb B = $(A) A.foreach(d, map) if $(and $(not $(B.mem $d)), true) eprintln(foo) omake-0.9.8.5/test/object/Test150000664000152300015230000000042110655734556014405 0ustar jyhjyhA[] = key Test(M) = A.foreach(key) M = $(M.add $(key), new) export M printvln($A) new = $(M.find key) if $(not $(equal $(new), new)) println($"Error: A.foreach exports into A") exit 1 X. = extends $(Map) $|key| = old Test($X) omake-0.9.8.5/test/object/Test060000664000152300015230000000025010652160535014370 0ustar jyhjyhtest(f) = M. = extends $(Map) $|abc| = xyz keys[] = M.foreach(key, val) keys[] += $(key) export keys printvln($f) test(bar) omake-0.9.8.5/test/object/Test140000664000152300015230000000041210655734556014404 0ustar jyhjyhA[] = key Test(map) = A.foreach(key) map = $(map.add $(key), new) export map new = $(map.find key) if $(not $(equal $(new), new)) println($"Error: A.foreach exports into A") exit 1 X. = extends $(Map) $|key| = old Test($X) omake-0.9.8.5/test/object/Test050000664000152300015230000000035610652160535014376 0ustar jyhjyhA[] = 1 2 3 A.foreach(a) A.foreach(aa) value $(aa)$(aa) eprintln($"a: $a") M. = extends $(Map) $|1| = 1 $|2| = 2 $|3| = 3 M.foreach(k, v) M.foreach(kk, vv) value $(vv)$(vv) eprintln($"k: $k; v: $v") omake-0.9.8.5/test/object/Test130000664000152300015230000000041610655734556014407 0ustar jyhjyho. = val = 0 incr(x) = val = $(add $(val), $(x)) export val printvln($o) o.incr(2) o.incr(3) printvln($o) if $(not $(eq $(o.val), 5)) eprintln($"Object hoisting test failed!") eprintln($"Expected: 5") eprintln($"Actual: $(o.val)") exit 2 omake-0.9.8.5/test/object/Test040000664000152300015230000000050110652160535014365 0ustar jyhjyhA. = extends $(Map) $|1| = 1 $|2| = 2 $|3| = 3 B = $(empty-map) A.foreach(k, v) B = $(B.add $k, $v) export if $(not $(equal $(A.keys), $(B.keys))) eprintln($"Bug: the Map.foreach function does not preserve exports!") eprintln($"Expected: $(A.keys)") eprintln($"Actual: $(B.keys)") exit 1 omake-0.9.8.5/test/object/Test030000664000152300015230000000036010652160535014367 0ustar jyhjyhA[] = $(set 1 2 3) B[] = A.foreach(v) B[] += $v export if $(not $(equal $(A), $(B))) eprintln($"Bug: the Array.foreach function does not preserve exports!") eprintln($"Expected: $A") eprintln($"Actual: $B") exit 1 omake-0.9.8.5/test/object/Test110000664000152300015230000000012710652160733014367 0ustar jyhjyhprivate.xyz = 1 X[] = 1 2 Y = X.foreach(foo) Y = $(foo) export Y println($(xyz)) omake-0.9.8.5/test/object/Test020000664000152300015230000000011410652160535014363 0ustar jyhjyhprintln($"stdin.close.arity() - should be 0") println($(stdin.close.arity)) omake-0.9.8.5/test/object/Test100000664000152300015230000000041210655707434014373 0ustar jyhjyho. = val = 0 incr(x) = val = $(add $(val), $(x)) export o.incr(2) o.incr(3) printvln($o) if $(o.object-mem x) eprintln($"Note: function arguments are spilling into objects") eprintln($"This should change in the keyword branch") exit 2 omake-0.9.8.5/test/object/Test01/0000775000152300015230000000000010660137217014443 5ustar jyhjyhomake-0.9.8.5/test/object/Test01/run.osh0000664000152300015230000000010610640040771015753 0ustar jyhjyhopen ../../diff osh object.om > stdout diff -u stdout stdout.expected omake-0.9.8.5/test/object/Test01/OMakefile0000664000152300015230000000045210637050511016216 0ustar jyhjyhX. = X = 1 Y = 2 F(Z) = return($(X) + $(Y) + $(Z)) G(Z) = W = $(F $(Z)) println(G[$(Z)] = $(W)) Y = $(X.F 3) println(The following line should be: Y = 1 + 2 + 3) println($"Y = $Y") println(The following line should be: G[3] = 1 + 2 + 3) X.G(3) omake-0.9.8.5/test/object/Test01/stdout.expected0000664000152300015230000000017210636326373017516 0ustar jyhjyhThe following line should be: Y = 1 + 2 + 3 Y = 1 + 2 + 3 The following line should be: G[3] = 1 + 2 + 3 G[3] = 1 + 2 + 3 omake-0.9.8.5/test/object/Test01/object.om0000664000152300015230000000042410636326373016254 0ustar jyhjyhX. = X = 1 Y = 2 F(Z) = return($(X) + $(Y) + $(Z)) G(Z) = W = $(F $(Z)) println(G[$(Z)] = $(W)) Y = $(X.F 3) println(The following line should be: Y = 1 + 2 + 3) println(Y = $(Y)) println(The following line should be: G[3] = 1 + 2 + 3) X.G(3) omake-0.9.8.5/test/object/Test01/OMakeroot0000664000152300015230000000075410114505052016262 0ustar jyhjyh ######################################################################## # The standard OMakeroot file. # You will not normally need to modify this file. # By default, your changes should be placed in the # OMakefile in this directory. # # If you decide to modify this file, note that it uses exactly # the same syntax as the OMakefile. # # # First, include the standard installed configuration file. # include $(STDROOT) # # Second, include the OMakefile in this directory. # .SUBDIRS: . omake-0.9.8.5/test/README0000664000152300015230000000262310636326373013006 0ustar jyhjyhOMake test suite ================ This directory contains number of automatic tests for OMake, spread out over a number of subdirectories. Each subdirectory constitutes a "test group" and contains a number of individual tests. To run the tests, run "omake check", either in the top omake directory or in the tests directory. The test logs will be written to a file called "result.log" in each log group. Mechanics ========= Each individual test has a name "TestN", where N is a number, and is written either as a simple osh script with that name, or as a subdirectory. If it is a script, it will be run and the exit status is used to indicate success or failure (0 for success). If the test is written as a directory, it should contain either a "run.osh" file or an "OMakeroot" file. If the "run.osh" file exists, it will be run in the same way as if he test had been written as a single script. If no script is found, "omake" will be run in the test directory, which will use the "OMakeroot". The exit status of omake is used to indicate success or failure. Writing test cases ================== If you have a test test that can be written as a self-contained osh script, you don't have to use a subdirectory for the test, and instead write it to a file called "TestN". But for other cases, where you have other files, or where you are checking for correct output, you should create a subdirectory for your test. omake-0.9.8.5/test/memo/0000775000152300015230000000000010660137217013052 5ustar jyhjyhomake-0.9.8.5/test/memo/Test5/0000775000152300015230000000000010660137217014056 5ustar jyhjyhomake-0.9.8.5/test/memo/Test5/run.osh0000664000152300015230000000010310646471724015377 0ustar jyhjyhopen ../../diff osh fib.om > stdout diff -u stdout stdout.expected omake-0.9.8.5/test/memo/Test5/fib.om0000664000152300015230000000052510646471724015165 0ustar jyhjyhfib(i) = i = $(int $i) .MEMO: :key: $i println($"Computing fib($i)...") result = if $(or $(eq $i, 0), $(eq $i, 1)) value $i else add($(fib $(sub $i, 1)), $(fib $(sub $i, 2))) value $(result) println($"fib(10) = $(fib 10)") println($"fib(12) = $(fib 12)") omake-0.9.8.5/test/memo/Test5/stdout.expected0000664000152300015230000000044210646471724017133 0ustar jyhjyhComputing fib(10)... Computing fib(9)... Computing fib(8)... Computing fib(7)... Computing fib(6)... Computing fib(5)... Computing fib(4)... Computing fib(3)... Computing fib(2)... Computing fib(1)... Computing fib(0)... fib(10) = 55 Computing fib(12)... Computing fib(11)... fib(12) = 144 omake-0.9.8.5/test/memo/Test4/0000775000152300015230000000000010660137217014055 5ustar jyhjyhomake-0.9.8.5/test/memo/Test4/run.osh0000664000152300015230000000010410642265264015373 0ustar jyhjyhopen ../../diff osh memo.om > stdout diff -u stdout stdout.expected omake-0.9.8.5/test/memo/Test4/memo.om0000664000152300015230000000105510642265614015353 0ustar jyhjyh.MEMO: println($"BUG: Variable assignments should not force .MEMO evaluation") X = 1 println($"---") Y = $(X) f(msg) = .MEMO: :key: $(msg) println($"BUG: $(msg) should not force .MEMO evaluation") X = 1 return $X f(Function return) Y = $(f Function return to a variable) println($"---") g(msg) = println($"BUG: $(msg) should not force lazy evaluation") XX = $`(g $"Variable assignments") println($"---") YY = $(XX) h(msg) = return $`(g $(msg)) h(Function return) YY = $(h Function return to a variable) omake-0.9.8.5/test/memo/Test4/stdout.expected0000664000152300015230000000001410642265264017121 0ustar jyhjyh--- --- --- omake-0.9.8.5/test/memo/Test3/0000775000152300015230000000000010660137217014054 5ustar jyhjyhomake-0.9.8.5/test/memo/Test3/run.osh0000664000152300015230000000013210642243707015371 0ustar jyhjyhopen ../../diff omake --configure > stdout omake >> stdout diff -u stdout stdout.expected omake-0.9.8.5/test/memo/Test3/stdout.expected0000664000152300015230000000043010642243707017120 0ustar jyhjyhg(1-1 1) Done - 1-1 1 g(1-2 2) Done - 1-2 2 Done - 1-1 1 Done - 1-2 2 g(2-1 1) Done - 2-1 1 g(2-2 2) Done - 2-2 2 Done - 2-1 1 Done - 2-2 2 g(1-1 1) Done - 1-1 1 g(1-2 2) Done - 1-2 2 Done - 1-1 1 Done - 1-2 2 g(2-1 1) Done - 2-1 1 g(2-2 2) Done - 2-2 2 Done - 2-1 1 Done - 2-2 2 omake-0.9.8.5/test/memo/Test3/OMakeroot0000664000152300015230000000052510642243707015703 0ustar jyhjyhg(x) = println($"g($x)") value $"Done - $x" declare val f(key) = .MEMO: :value: $(val) :key: $(key) y = $(g $(val) $(key)) value $y test(x) = section val = $(x)1 println($(f 1)) section val = $(x)2 println($(f 2)) test(1-) test(1-) test(2-) test(2-) .SUBDIRS: . value omake-0.9.8.5/test/memo/Test2/0000775000152300015230000000000010660137217014053 5ustar jyhjyhomake-0.9.8.5/test/memo/Test2/run.osh0000664000152300015230000000013210642243707015370 0ustar jyhjyhopen ../../diff omake --configure > stdout omake >> stdout diff -u stdout stdout.expected omake-0.9.8.5/test/memo/Test2/stdout.expected0000664000152300015230000000011010642243707017112 0ustar jyhjyhg(1) 2 2 g(2) 3 3 g(1) 2 2 g(2) 3 3 g(1) 2 2 g(2) 3 3 g(1) 2 2 g(2) 3 3 omake-0.9.8.5/test/memo/Test2/OMakeroot0000664000152300015230000000040310642243707015675 0ustar jyhjyhg(x) = println($"g($x)") add($x, 1) f(x) = .MEMO: :value: $x y = $(g $x) value $y println($(f 1)) println($(f 1)) println($(f 2)) println($(f 2)) println($(f 1)) println($(f 1)) println($(f 2)) println($(f 2)) .SUBDIRS: . value omake-0.9.8.5/test/memo/Test1/0000775000152300015230000000000010660137217014052 5ustar jyhjyhomake-0.9.8.5/test/memo/Test1/run.osh0000664000152300015230000000013210642243707015367 0ustar jyhjyhopen ../../diff omake --configure > stdout omake >> stdout diff -u stdout stdout.expected omake-0.9.8.5/test/memo/Test1/stdout.expected0000664000152300015230000000005010642243707017114 0ustar jyhjyhg(1) 2 2 g(2) 3 2 3 g(1) 2 2 g(2) 3 2 3 omake-0.9.8.5/test/memo/Test1/OMakeroot0000664000152300015230000000032110642243707015673 0ustar jyhjyhg(x) = println($"g($x)") add($x, 1) f(x) = .MEMO: :key: $x y = $(g $x) value $y println($(f 1)) println($(f 1)) println($(f 2)) println($(f 1)) println($(f 2)) .SUBDIRS: . value omake-0.9.8.5/test/OMakefile0000664000152300015230000000643010655725725013712 0ustar jyhjyh# # Collect all tests. # TESTS = $(find . -regex $'^Test[0-9]*$') TestMap = $(empty-map) foreach(tst, $(TESTS)) d = $(dir $(dirname $(tst))) TestMap = if $(TestMap.mem $d) value $(TestMap.add $d, $(array $(TestMap.find $d), $(tst))) else value $(TestMap.add $d, $(tst)) export TestMap private.TestDir = $(dir .) runtest(subtest) = setenv(OMAKEPATH, $(absname $(ROOT)/lib)) setenv(OMAKEFLAGS, $"--no--progress --no--print-status") PATH[] = $(absname $(ROOT)/src/main) $(PATH) setenv(PATH, $(concat $':', $(PATH))) if $(test -f $(subtest)) echo "running osh $(subtest)" >> $(resultfile) res = $(shell-code osh $(subtest) >>& $(resultfile)) export res elseif $(test -f $(subtest)/run.osh) cd $(subtest) echo "running osh run.osh" >>& $(resultfile) res = $(shell-code osh run.osh >>& $(resultfile)) export res elseif $(test -f $(subtest)/OMakeroot -o -f $(subtest)/Root.om) cd $(subtest) echo "running omake in $(absname .)" >> $(resultfile) rm -f .omakedb res = $(shell-code omake >>& $(resultfile)) export res else echo $"*** Don't know how to run tests in $(subtest)!" >> $(resultfile) eprintln($"*** Don't know how to run tests in $(in $(TestDir), $(subtest))!") res = 1 export res # Exit code 2 is a suggestion, not an error if $(equal $(res), 0) value success elseif $(equal $(res), 2) value note else value failure static. = HAS_DATE = $(CheckProg date) Shell. += test(argv) = result = $"Tested $(in .., $(dir .)): " failures = false notes = false subtests = $(file $(set $(TestMap.find $(dir .)))) if $(public.HAS_DATE) date > $(resultfile) else fprint($(resultfile), $"Starting tests in $(in $(ROOT), $(dir .)):") foreach(subtest, $(subtests)) echo >> $(resultfile) echo $"==== $(subtest)" >> $(resultfile) switch $(runtest $(subtest)) case success result = $(result). echo "--- success" >> $(resultfile) export case note result = $(result)N notes = true echo "--- note" >> $(resultfile) export default result = $(result)E failures = true echo "*** failure" >> $(resultfile) export export if $(failures) result += $"$(nl) *** SOME TESTS FAILED! See $(in $(ROOT), $(resultfile)) for detail" export elseif $(notes) result += $"$(nl) --- See notes $(in $(ROOT), $(resultfile)) for detail" export println($(result)) .SUBDIRS: $(TestMap.keys) resultfile = $(file result.log) check: /.PHONY/all :effects: $(resultfile) test $(resultfile) clean: rm -f $(resultfile) *.omc Test*/.omakedb* Test*/*.omc Test*/stdout Test*/output CLEAN[] = awk/*/Subst.out shell/Test1/sub vmount/Test1/build/foo* vmount/Test1/src/*omc test/simple/Test1/x test/simple/Test3/a test/targets/Test1/A test/targets/Test1/B clean: rm -rf *.omc $(CLEAN) omake-0.9.8.5/test/exn/0000775000152300015230000000000010660137217012707 5ustar jyhjyhomake-0.9.8.5/test/exn/Test50000664000152300015230000000040610640275450013636 0ustar jyhjyhX = try raise foo default X += def export when true X += wt when true X += wt2 export finally X += fin export X = $"$X" if $(not $(equal $X, $"def wt2 fin")) eprintln($"Expected: def wt2 fin, got: $X!") exit 1 else println($X) omake-0.9.8.5/test/exn/Test40000664000152300015230000000020210637530504013627 0ustar jyhjyhprintln(Test4: this should print: Hello world) try raise(Hello world) default exn println($(exn)) finally println(Done) omake-0.9.8.5/test/exn/Test3/0000775000152300015230000000000010660137217013711 5ustar jyhjyhomake-0.9.8.5/test/exn/Test3/run.osh0000664000152300015230000000044310640314310015216 0ustar jyhjyhfinished = $(shell-code osh exn.om >& output) cat output eprintln($"Exit code: $(finished)") if $(eq $(finished), 0) eprintln(The exit code can not be 0) exit 2 awk(output) case $'Uncaught Exception:' exit 0 eprintln($'No "Uncaught Exception:" string found in the output') exit 3 omake-0.9.8.5/test/exn/Test3/exn.om0000664000152300015230000000012110637022546015034 0ustar jyhjyhprintln(This should just abort execution with an exception) raise "String error" omake-0.9.8.5/test/exn/Test20000664000152300015230000000020610114505052013617 0ustar jyhjyhprintln(Test2: this should print: Hello world) try raise(Hello world) catch Sequence(v) println($(v)) finally println(Done) omake-0.9.8.5/test/calculator/0000775000152300015230000000000010660137217014246 5ustar jyhjyhomake-0.9.8.5/test/calculator/Test.input10000664000152300015230000000005610114505052016316 0ustar jyhjyh(3 + (* Hello (* world *) junk *) 4) * 7 + -1 omake-0.9.8.5/test/calculator/Test.input20000664000152300015230000000001310114505052016310 0ustar jyhjyh1 << 4 + 4 omake-0.9.8.5/test/calculator/Test0000664000152300015230000000404010637052434015107 0ustar jyhjyhlex-comment. = extends $(Lexer) declare lex declare rule level = 0 other: . lex() term: $'[*][)]' if $(not $(eq $(level), 0)) level = $(sub $(level), 1) lex() next: $'[(][*]' level = $(add $(level), 1) lex() eof: $"\'" eprintln(Unterminated comment) lexer1. = extends $(Lexer) declare lex declare rule other: . eprintln(Illegal character: $0) lex() white: $'[[:space:]]+' lex() comment: $'[(][*]' lex-comment.lex-channel($(channel)) lex() op: $'[-+*/()]' switch $0 case + Token.unit(plus) case - Token.unit(minus) case * Token.unit(mul) case / Token.unit(div) case $'(' Token.unit(lparen) case $')' Token.unit(rparen) number: $'[[:digit:]]+' Token.pair(exp, $(int $0)) eof: $"\'" Token.unit(eof) parser1. = extends $(Parser) declare rule # # Use the main lexer # lexer = $(lexer1) # # Precedences, in ascending order # left(plus minus) left(mul div) right(uminus) # # A program # start(prog) prog: exp eof value $1 # # Simple arithmetic expressions # exp: minus exp :prec: uminus neg($2) exp: exp plus exp add($1, $3) exp: exp minus exp sub($1, $3) exp: exp mul exp mul($1, $3) exp: exp div exp div($1, $3) exp: lparen exp rparen value $2 println(Test1: should print 48) println(Parsed $(parser1.parse-file prog, Test.input1)) lexer2. = extends $(lexer1) declare rule lsl: $"<<" Token.unit(lsl) lsr: $">>>" Token.unit(lsr) asr: $">>" Token.unit(asr) parser2. = extends $(parser1) declare rule left(plus, lsl lsr asr) lexer = $(lexer2) exp: exp lsl exp lsl($1, $3) exp: exp lsr exp lsr($1, $3) exp: exp asr exp asr($1, $3) println(Test2: should print 256) println(Parsed $(parser2.parse-file prog, Test.input2)) omake-0.9.8.5/test/simple/0000775000152300015230000000000010660137217013406 5ustar jyhjyhomake-0.9.8.5/test/simple/Test8/0000775000152300015230000000000010660137217014415 5ustar jyhjyhomake-0.9.8.5/test/simple/Test8/run.osh0000664000152300015230000000012010655707434015735 0ustar jyhjyhopen ../../diff osh simple.om > stdout diff -u stdout stdout.expected || exit 2 omake-0.9.8.5/test/simple/Test8/simple.om0000664000152300015230000000040410654451121016235 0ustar jyhjyhsection private.x = 1 f(arg) = println($"In f, x is $(private.x)") println($"Body is $(arg)") export f private.x = 2 section println($"In section, x is $(private.x)") f() println($"In body, x is $(private.x)") value 10 omake-0.9.8.5/test/simple/Test8/stdout.expected0000664000152300015230000000007310654451121017456 0ustar jyhjyhIn section, x is 2 In f, x is 1 In body, x is 2 Body is 10 omake-0.9.8.5/test/simple/Test70000664000152300015230000000050710646457672014357 0ustar jyhjyh# # Produce a long string of 16-character lines # S[] = i = 0 while $(lt $i, 500) S[] += $(sprintf %15d, $i) i = $(add $i, 1) S = $(concat $(nl), $S) # # sprintf might truncate it # X1 = $(sprintf %s%s, $S, $S) X2 = $S$S if $(not $(equal $(X1), $(X2))) eprintln(sprintf truncation) eprintln($(X1)) exit 1 omake-0.9.8.5/test/simple/Test60000664000152300015230000001405710645525571014354 0ustar jyhjyhS = " 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 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 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999" SS1 = $(sprintf %s%s, $S, $S) SS2 = $S$S if $(not $(equal $(SS1), $(SS2))) eprintln($"sprintf BUG!") eprintln($"Expected: $(SS2)") eprintln($"Actual : $(SS1)") exit 1 omake-0.9.8.5/test/simple/Test50000664000152300015230000000036110642477755014353 0ustar jyhjyhexpected = $"a:b:c:d:e" actual = $(concat $':', $(filter-out $(string $(EMPTY)), $(split $', ', $"a,b, c d e"))) if $(not $(equal $(actual), $(expected))) eprintln($"Expected: $(expected)") eprintln($"Actual: $(actual)") exit 1 omake-0.9.8.5/test/simple/Test4/0000775000152300015230000000000010660137217014411 5ustar jyhjyhomake-0.9.8.5/test/simple/Test4/run.osh0000664000152300015230000000010610640040771015721 0ustar jyhjyhopen ../../diff osh simple.om > stdout diff -u stdout stdout.expected omake-0.9.8.5/test/simple/Test4/simple.om0000664000152300015230000000013010637041674016236 0ustar jyhjyhf(x,y) = x += x y += y private.z = 5 println($x $y $z) x = 1 z = 1 f(2,3) omake-0.9.8.5/test/simple/Test4/stdout.expected0000664000152300015230000000001210637041674017454 0ustar jyhjyh2 x 3 y 5 omake-0.9.8.5/test/simple/Test3/0000775000152300015230000000000010660137217014410 5ustar jyhjyhomake-0.9.8.5/test/simple/Test3/OMakefile0000664000152300015230000000011210654713446016170 0ustar jyhjyhif $(not $(file-exists a)) mkdir -p a .SUBDIRS: a pwd export omake-0.9.8.5/test/simple/Test3/OMakeroot0000664000152300015230000000001410654713446016235 0ustar jyhjyh.SUBDIRS: . omake-0.9.8.5/test/simple/Test2/0000775000152300015230000000000010660137217014407 5ustar jyhjyhomake-0.9.8.5/test/simple/Test2/OMakefile0000664000152300015230000000014610654713446016176 0ustar jyhjyh.SUBDIRS: a .SUBDIRS: x X = 1 export .SUBDIRS: y Y = 1 export omake-0.9.8.5/test/simple/Test2/a/0000775000152300015230000000000010660137217014627 5ustar jyhjyhomake-0.9.8.5/test/simple/Test2/a/y/0000775000152300015230000000000010660137217015077 5ustar jyhjyhomake-0.9.8.5/test/simple/Test2/a/y/.dummy0000664000152300015230000000000210634254321016220 0ustar jyhjyh. omake-0.9.8.5/test/simple/Test2/a/x/0000775000152300015230000000000010660137217015076 5ustar jyhjyhomake-0.9.8.5/test/simple/Test2/a/x/.dummy0000664000152300015230000000000210634254321016217 0ustar jyhjyh. omake-0.9.8.5/test/simple/Test2/OMakeroot0000664000152300015230000000001410654713446016234 0ustar jyhjyh.SUBDIRS: . omake-0.9.8.5/test/simple/Test1/0000775000152300015230000000000010660137217014406 5ustar jyhjyhomake-0.9.8.5/test/simple/Test1/OMakefile0000664000152300015230000000011110636326373016164 0ustar jyhjyh.PHONY: y x : y echo $< > $@ if true echo 1 >> $@ .DEFAULT: x omake-0.9.8.5/test/simple/Test1/OMakeroot0000664000152300015230000000005010655725725016237 0ustar jyhjyh# # Include the OMakefile # .SUBDIRS: . omake-0.9.8.5/test/vmount/0000775000152300015230000000000010660137217013445 5ustar jyhjyhomake-0.9.8.5/test/vmount/Test1/0000775000152300015230000000000010660137217014445 5ustar jyhjyhomake-0.9.8.5/test/vmount/Test1/OMakefile0000664000152300015230000000014410654713446016232 0ustar jyhjyhinclude $(OMAKEPATH)/OMakeroot.install vmount(src, build) .SUBDIRS: build .DEFAULT: build/foo$(EXE) omake-0.9.8.5/test/vmount/Test1/src/0000775000152300015230000000000010660137217015234 5ustar jyhjyhomake-0.9.8.5/test/vmount/Test1/src/OMakefile0000664000152300015230000000002310654713446017015 0ustar jyhjyhCProgram(foo, foo) omake-0.9.8.5/test/vmount/Test1/src/foo.c0000664000152300015230000000015210654713446016170 0ustar jyhjyh#include int main(int argc, char **argv) { printf("hello world\n"); return 0; } omake-0.9.8.5/test/vmount/Test1/OMakeroot0000664000152300015230000000004010654713446016271 0ustar jyhjyhDefineCommandVars() .SUBDIRS: . omake-0.9.8.5/test/vmount/Test1/build/0000775000152300015230000000000010660137217015544 5ustar jyhjyhomake-0.9.8.5/test/vmount/Test1/build/.dummy0000664000152300015230000000004610634254323016677 0ustar jyhjyhthis is here to create the directory. omake-0.9.8.5/test/static/0000775000152300015230000000000010660137217013404 5ustar jyhjyhomake-0.9.8.5/test/static/Test3/0000775000152300015230000000000010660137217014406 5ustar jyhjyhomake-0.9.8.5/test/static/Test3/run.osh0000664000152300015230000000013210642243253015717 0ustar jyhjyhopen ../../diff omake --configure > stdout omake >> stdout diff -u stdout stdout.expected omake-0.9.8.5/test/static/Test3/stdout.expected0000664000152300015230000000043010642243253017446 0ustar jyhjyhg(1-1 1) Done - 1-1 1 g(1-2 2) Done - 1-2 2 Done - 1-1 1 Done - 1-2 2 g(2-1 1) Done - 2-1 1 g(2-2 2) Done - 2-2 2 Done - 2-1 1 Done - 2-2 2 g(1-1 1) Done - 1-1 1 g(1-2 2) Done - 1-2 2 Done - 1-1 1 Done - 1-2 2 g(2-1 1) Done - 2-1 1 g(2-2 2) Done - 2-2 2 Done - 2-1 1 Done - 2-2 2 omake-0.9.8.5/test/static/Test3/OMakeroot0000664000152300015230000000052710642243253016233 0ustar jyhjyhg(x) = println($"g($x)") value $"Done - $x" declare val f(key) = .STATIC: :value: $(val) :key: $(key) y = $(g $(val) $(key)) value $y test(x) = section val = $(x)1 println($(f 1)) section val = $(x)2 println($(f 2)) test(1-) test(1-) test(2-) test(2-) .SUBDIRS: . value omake-0.9.8.5/test/static/Test2/0000775000152300015230000000000010660137217014405 5ustar jyhjyhomake-0.9.8.5/test/static/Test2/run.osh0000664000152300015230000000013210642243253015716 0ustar jyhjyhopen ../../diff omake --configure > stdout omake >> stdout diff -u stdout stdout.expected omake-0.9.8.5/test/static/Test2/stdout.expected0000664000152300015230000000011010642243253017440 0ustar jyhjyhg(1) 2 2 g(2) 3 3 g(1) 2 2 g(2) 3 3 g(1) 2 2 g(2) 3 3 g(1) 2 2 g(2) 3 3 omake-0.9.8.5/test/static/Test2/OMakeroot0000664000152300015230000000040510642243253016225 0ustar jyhjyhg(x) = println($"g($x)") add($x, 1) f(x) = .STATIC: :value: $x y = $(g $x) value $y println($(f 1)) println($(f 1)) println($(f 2)) println($(f 2)) println($(f 1)) println($(f 1)) println($(f 2)) println($(f 2)) .SUBDIRS: . value omake-0.9.8.5/test/static/Test1/0000775000152300015230000000000010660137217014404 5ustar jyhjyhomake-0.9.8.5/test/static/Test1/run.osh0000664000152300015230000000013210642243253015715 0ustar jyhjyhopen ../../diff omake --configure > stdout omake >> stdout diff -u stdout stdout.expected omake-0.9.8.5/test/static/Test1/stdout.expected0000664000152300015230000000003610642243253017446 0ustar jyhjyhg(1) 2 2 g(2) 3 2 3 2 2 3 2 3 omake-0.9.8.5/test/static/Test1/OMakeroot0000664000152300015230000000032310642243253016223 0ustar jyhjyhg(x) = println($"g($x)") add($x, 1) f(x) = .STATIC: :key: $x y = $(g $x) value $y println($(f 1)) println($(f 1)) println($(f 2)) println($(f 1)) println($(f 2)) .SUBDIRS: . value omake-0.9.8.5/test/exec/0000775000152300015230000000000010660137217013041 5ustar jyhjyhomake-0.9.8.5/test/exec/Test1/0000775000152300015230000000000010660137217014041 5ustar jyhjyhomake-0.9.8.5/test/exec/Test1/OMakefile0000664000152300015230000000032710655725725015635 0ustar jyhjyhif $(not $(equal $(OSTYPE), Win32)) PATH[] = . $(PATH) #setenv(PATH, .:$(getenv PATH)) env | grep ^PATH .PHONY: foo foo : env | grep ^PATH xxx env xxx .DEFAULT: foo omake-0.9.8.5/test/exec/Test1/xxx0000775000152300015230000000003310634461005014606 0ustar jyhjyh#!/bin/sh env | grep ^PATH omake-0.9.8.5/test/exec/Test1/OMakeroot0000664000152300015230000000001410654713446015666 0ustar jyhjyh.SUBDIRS: . omake-0.9.8.5/test/awk/0000775000152300015230000000000010660137217012677 5ustar jyhjyhomake-0.9.8.5/test/awk/Awk.out0000664000152300015230000000000010114505052014126 0ustar jyhjyhomake-0.9.8.5/test/awk/Awk.in0000664000152300015230000000013310232005363013735 0ustar jyhjyh* Hello world * \begin{doc} * Hello world * Another line * \end{doc} * Hello worlabbbbcd omake-0.9.8.5/test/awk/Subst.in0000664000152300015230000000003710273475026014332 0ustar jyhjyhhello.world.hi again.once more omake-0.9.8.5/test/awk/Test4/0000775000152300015230000000000010660137217013702 5ustar jyhjyhomake-0.9.8.5/test/awk/Test4/run.osh0000664000152300015230000000007310640040771015215 0ustar jyhjyhopen ../../diff omake diff -u Subst.out Subst.out.expected omake-0.9.8.5/test/awk/Test4/OMakefile0000664000152300015230000000032210273531132015450 0ustar jyhjyhSubst.out: Subst.in section stdout = $(fopen $@, w) fsubst(Subst.in) case $"\<\([[:alnum:]]+\)\." g value $(capitalize $1). close($(stdout)) .DEFAULT: Subst.out omake-0.9.8.5/test/awk/Test4/Subst.out.expected0000664000152300015230000000003710636326373017341 0ustar jyhjyhHello.World.hi Again.once more omake-0.9.8.5/test/awk/Test4/Subst.in0000664000152300015230000000003710273531132015324 0ustar jyhjyhhello.world.hi again.once more omake-0.9.8.5/test/awk/Test4/OMakeroot0000664000152300015230000000304710301460103015512 0ustar jyhjyh######################################################################## # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the # File is furnished to do so, subject to the following condition: # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE FILE OR # THE USE OR OTHER DEALINGS IN THE FILE. ######################################################################## # The standard OMakeroot file. # You will not normally need to modify this file. # By default, your changes should be placed in the # OMakefile in this directory. # # If you decide to modify this file, note that it uses exactly # the same syntax as the OMakefile. # # # Include the standard installed configuration files. # You must include Common, but any of the others may be deleted if # you are not using them. # open build/C open build/OCaml open build/LaTeX # # Define the command line variables. # DefineCommandVars() # # Include the OMakefile in this directory. # .SUBDIRS: . omake-0.9.8.5/test/awk/Test3/0000775000152300015230000000000010660137217013701 5ustar jyhjyhomake-0.9.8.5/test/awk/Test3/run.osh0000664000152300015230000000010410640040771015207 0ustar jyhjyhopen ../../diff osh awk.osh > stdout diff -u stdout stdout.expected omake-0.9.8.5/test/awk/Test3/awk.osh0000664000152300015230000000011710634453602015175 0ustar jyhjyhfsubst(../Subst.in) case $"\<\([[:alnum:]]+\)\." g value $(capitalize $1). omake-0.9.8.5/test/awk/Test3/stdout.expected0000664000152300015230000000003710634453602016746 0ustar jyhjyhHello.World.hi Again.once more omake-0.9.8.5/test/awk/Test2/0000775000152300015230000000000010660137217013700 5ustar jyhjyhomake-0.9.8.5/test/awk/Test2/run.osh0000664000152300015230000000010410640040771015206 0ustar jyhjyhopen ../../diff osh awk.osh > stdout diff -u stdout stdout.expected omake-0.9.8.5/test/awk/Test2/awk.osh0000664000152300015230000000017210654713446015204 0ustar jyhjyh# prints all lines with leading xxx; but no comment leaders) fsubst(../Awk.in) case $'^[ \t]*[*#][ \t]?' value $"xxx " omake-0.9.8.5/test/awk/Test2/stdout.expected0000664000152300015230000000014710634453602016747 0ustar jyhjyhxxx Hello world xxx \begin{doc} xxx Hello world xxx Another line xxx \end{doc} xxx Hello worlabbbbcd omake-0.9.8.5/test/awk/Test1/0000775000152300015230000000000010660137217013677 5ustar jyhjyhomake-0.9.8.5/test/awk/Test1/run.osh0000664000152300015230000000010410640040771015205 0ustar jyhjyhopen ../../diff osh awk.osh > stdout diff -u stdout stdout.expected omake-0.9.8.5/test/awk/Test1/awk.osh0000664000152300015230000000035610634453602015200 0ustar jyhjyhprint = false println($"Test1: prints the lines: '', 'Hello world', '', 'Another line'") awk(../Awk.in) case $'end\{doc\}' print = false export default if $(print) println($0) case $'begin\{doc\}' print = true export omake-0.9.8.5/test/awk/Test1/stdout.expected0000664000152300015230000000013610634453602016744 0ustar jyhjyhTest1: prints the lines: '', 'Hello world', '', 'Another line' * Hello world * Another line omake-0.9.8.5/test/diff.om0000664000152300015230000000376710640314310013364 0ustar jyhjyhopen configure/Configure static. = DIFF_AVAILABLE = $(CheckProg diff) if $(not $(DIFF_AVAILABLE)) Shell. += diff(argv) = while $(and $(gt $(length $(argv)), 2), $(mem $(nth 0, $(argv)), -u -c)) argv = $(nth-tl 1, $(argv)) if $(not $(eq $(length $(argv)), 2)) eprintln($"Shell.diff: USAGE:") eprintln($" diff file1 file2") exit 2 src = $(nth 0, $(argv)) dst = $(nth 1, $(argv)) if $(not $(test -r $(src))) eprintln($"$(src) is not readable") exit 2 if $(not $(test -r $(dst))) eprintln($"$(dst) is not readable") exit 2 eof = false code = 0 ch_src = $(fopen $(src), r) ch_dst = $(fopen $(dst), r) l_dst = l_src = line = 0 eof_src = false eof_dst = false while $(not $(eof)) line = $(add $(line), 1) eof_src = false try l_src = $(ch_src.readln) export default eof_src = true export eof_dst = false try l_dst = $(ch_dst.readln) export default eof_dst = true export if $(not $(and $(equal $(eof_src), $(eof_dst)), $(equal $(l_src), $(l_dst)))) eprintln($"Mismatch on line $(line):") eprintln($"- $(src):") eprintln($" $(if $(eof_src), END OF FILE, $(l_src))") eprintln($"- $(dst):") eprintln($" $(if $(eof_dst), END OF FILE, $(l_dst))") exit 1 eof = $(or $(eof_src), $(eof_dst)) close($(ch_src)) close($(ch_dst)) return true export omake-0.9.8.5/test/return/0000775000152300015230000000000010660137217013434 5ustar jyhjyhomake-0.9.8.5/test/return/Test10000664000152300015230000000311010657124511014351 0ustar jyhjyh# # Test for placement of return expressions # errors = false ######################################################################## # return within foreach. # # This one will generate a warning, "statement not reached". # f() = foreach(x, 1 2 3) return $x i = $f if $(equal $i, 1) println($"f() = $i [SUCCESS]") else eprintln($"f() = $i [FAILURE]") errors = true export ######################################################################## # Another version, should not generate a warning. # f() = foreach(x, 1 2 3) if $(ge $x, 2) return $x i = $f if $(equal $i, 2) println($"f() = $i [SUCCESS]") else eprintln($"f() = $i [FAILURE]") errors = true export ######################################################################## # Follow by another return. # f() = foreach(x, 1 2 3) if $(ge $x, 2) return $x return 0 i = $f if $(equal $i, 2) println($"f() = $i [SUCCESS]") else eprintln($"f() = $i [FAILURE]") errors = true export ######################################################################## # Nathan's example # a: b section targs[] = 1 2 3 any-output-file(targs) = foreach(x, $(targs)) if $(ge $x, 2) return $x return 0 i = $(any-output-file $(targs)) if $(equal $i, 2) println($"f() = $i [SUCCESS]") else eprintln($"f() = $i [FAILURE]") errors = true export ######################################################################## # Exit code # if $(errors) exit 1